PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMCBUcmFuc2l0aW9uYWwvL0VOIj4KPGh0bWw+Cgk8aGVhZD4KCQk8dGl0bGU+Qm9vc3Q6IGNoZWNrZWRfZGVsZXRlLmhwcCBkb2N1bWVudGF0aW9uPC90aXRsZT4KCQk8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KCTwvaGVhZD4KCTxib2R5IGJnY29sb3I9IndoaXRlIiBzdHlsZT0iTUFSR0lOLUxFRlQ6IDUlOyBNQVJHSU4tUklHSFQ6IDUlIj4KCQk8dGFibGUgYm9yZGVyPSIwIiB3aWR0aD0iMTAwJSI+CgkJCTx0cj4KCQkJCTx0ZCB3aWR0aD0iMjc3Ij48QSBocmVmPSIuLi8uLi9pbmRleC5odG0iPiA8aW1nIHNyYz0iLi4vLi4vYm9vc3QucG5nIiBhbHQ9ImJvb3N0LnBuZyAoNjg5NyBieXRlcykiIHdpZHRoPSIyNzciIGhlaWdodD0iODYiIGJvcmRlcj0iMCI+PC9BPgoJCQkJPC90ZD4KCQkJCTx0ZCBhbGlnbj0iY2VudGVyIj4KCQkJCQk8aDE+Y2hlY2tlZF9kZWxldGUuaHBwPC9oMT4KCQkJCTwvdGQ+CgkJCTwvdHI+CgkJCTx0cj4KCQkJCTx0ZCBjb2xzcGFuPSIyIiBoZWlnaHQ9IjY0Ij4mbmJzcDs8L3RkPgoJCQk8L3RyPgoJCTwvdGFibGU+CgkJPHA+CgkJCVRoZSBoZWFkZXIgPFNUUk9ORz4mbHQ7Ym9vc3QvY2hlY2tlZF9kZWxldGUuaHBwJmd0OzwvU1RST05HPiBkZWZpbmVzIHR3byAKCQkJZnVuY3Rpb24gdGVtcGxhdGVzLCA8U1RST05HPmNoZWNrZWRfZGVsZXRlPC9TVFJPTkc+IGFuZCA8U1RST05HPmNoZWNrZWRfYXJyYXlfZGVsZXRlPC9TVFJPTkc+LCAKCQkJYW5kIHR3byBjbGFzcyB0ZW1wbGF0ZXMsIDxTVFJPTkc+Y2hlY2tlZF9kZWxldGVyPC9TVFJPTkc+IGFuZCA8U1RST05HPmNoZWNrZWRfYXJyYXlfZGVsZXRlcjwvU1RST05HPi4KCQk8L3A+CgkJPFA+VGhlIEMrKyBTdGFuZGFyZCBhbGxvd3MsIGluIDUuMy41LzUsIHBvaW50ZXJzIHRvIGluY29tcGxldGUgY2xhc3MgdHlwZXMgdG8gYmUgCgkJCWRlbGV0ZWQgd2l0aCBhIDxFTT5kZWxldGUtZXhwcmVzc2lvbjwvRU0+LiBXaGVuIHRoZSBjbGFzcyBoYXMgYSBub24tdHJpdmlhbCAKCQkJZGVzdHJ1Y3Rvciwgb3IgYSBjbGFzcy1zcGVjaWZpYyBvcGVyYXRvciBkZWxldGUsIHRoZSBiZWhhdmlvciBpcyB1bmRlZmluZWQuIAoJCQlTb21lIGNvbXBpbGVycyBpc3N1ZSBhIHdhcm5pbmcgd2hlbiBhbiBpbmNvbXBsZXRlIHR5cGUgaXMgZGVsZXRlZCwgYnV0IAoJCQl1bmZvcnR1bmF0ZWx5LCBub3QgYWxsIGRvLCBhbmQgcHJvZ3JhbW1lcnMgc29tZXRpbWVzIGlnbm9yZSBvciBkaXNhYmxlIAoJCQl3YXJuaW5ncy48L1A+CgkJPFA+QSBwYXJ0aWN1bGFybHkgdHJvdWJsZXNvbWUgY2FzZSBpcyB3aGVuIGEgc21hcnQgcG9pbnRlcidzIGRlc3RydWN0b3IsIHN1Y2ggYXMgPFNUUk9ORz4KCQkJCWJvb3N0OjpzY29wZWRfcHRyJmx0O1QmZ3Q7Ojp+c2NvcGVkX3B0cjwvU1RST05HPiwgaXMgaW5zdGFudGlhdGVkIHdpdGggYW4gCgkJCWluY29tcGxldGUgdHlwZS4gVGhpcyBjYW4gb2Z0ZW4gbGVhZCB0byBzaWxlbnQsIGhhcmQgdG8gdHJhY2sgZmFpbHVyZXMuPC9QPgoJCTxQPlRoZSBzdXBwbGllZCBmdW5jdGlvbiBhbmQgY2xhc3MgdGVtcGxhdGVzIGNhbiBiZSB1c2VkIHRvIHByZXZlbnQgdGhlc2UgcHJvYmxlbXMsIAoJCQlhcyB0aGV5IHJlcXVpcmUgYSBjb21wbGV0ZSB0eXBlLCBhbmQgY2F1c2UgYSBjb21waWxhdGlvbiBlcnJvciBvdGhlcndpc2UuPC9QPgoJCTxoMz48YSBuYW1lPSJTeW5vcHNpcyI+U3lub3BzaXM8L2E+PC9oMz4KCQk8cHJlPgpuYW1lc3BhY2UgYm9vc3QKewoKdGVtcGxhdGUmbHQ7Y2xhc3MgVCZndDsgdm9pZCBjaGVja2VkX2RlbGV0ZShUICogcCk7CnRlbXBsYXRlJmx0O2NsYXNzIFQmZ3Q7IHZvaWQgY2hlY2tlZF9hcnJheV9kZWxldGUoVCAqIHApOwp0ZW1wbGF0ZSZsdDtjbGFzcyBUJmd0OyBzdHJ1Y3QgY2hlY2tlZF9kZWxldGVyOwp0ZW1wbGF0ZSZsdDtjbGFzcyBUJmd0OyBzdHJ1Y3QgY2hlY2tlZF9hcnJheV9kZWxldGVyOwoKfQo8L3ByZT4KCQk8aDM+Y2hlY2tlZF9kZWxldGU8L2gzPgoJCTxoND48YSBuYW1lPSJjaGVja2VkX2RlbGV0ZSI+dGVtcGxhdGUmbHQ7Y2xhc3MgVCZndDsgdm9pZCBjaGVja2VkX2RlbGV0ZShUICogcCk7PC9hPjwvaDQ+CgkJPGJsb2NrcXVvdGU+CgkJCTxwPgoJCQkJPGI+UmVxdWlyZXM6PC9iPiA8Yj5UPC9iPiBtdXN0IGJlIGEgY29tcGxldGUgdHlwZS4gVGhlIGV4cHJlc3Npb24gPHR0PmRlbGV0ZSBwPC90dD4KCQkJCW11c3QgYmUgd2VsbC1mb3JtZWQuCgkJCTwvcD4KCQkJPHA+CgkJCQk8Yj5FZmZlY3RzOjwvYj4gPHR0PmRlbGV0ZSBwOzwvdHQ+CgkJCTwvcD4KCQk8L2Jsb2NrcXVvdGU+CgkJPGgzPmNoZWNrZWRfYXJyYXlfZGVsZXRlPC9oMz4KCQk8aDQ+PGEgbmFtZT0iY2hlY2tlZF9hcnJheV9kZWxldGUiPnRlbXBsYXRlJmx0O2NsYXNzIFQmZ3Q7IHZvaWQgY2hlY2tlZF9hcnJheV9kZWxldGUoVCAKCQkJCSogcCk7PC9hPjwvaDQ+CgkJPGJsb2NrcXVvdGU+CgkJCTxwPgoJCQkJPGI+UmVxdWlyZXM6PC9iPiA8Yj5UPC9iPiBtdXN0IGJlIGEgY29tcGxldGUgdHlwZS4gVGhlIGV4cHJlc3Npb24gPHR0PmRlbGV0ZSBbXSBwPC90dD4KCQkJCW11c3QgYmUgd2VsbC1mb3JtZWQuCgkJCTwvcD4KCQkJPHA+CgkJCQk8Yj5FZmZlY3RzOjwvYj4gPHR0PmRlbGV0ZSBbXSBwOzwvdHQ+CgkJCTwvcD4KCQk8L2Jsb2NrcXVvdGU+CgkJPGgzPmNoZWNrZWRfZGVsZXRlcjwvaDM+CgkJPHByZT4KdGVtcGxhdGUmbHQ7Y2xhc3MgVCZndDsgc3RydWN0IGNoZWNrZWRfZGVsZXRlcgp7CiAgICB0eXBlZGVmIHZvaWQgcmVzdWx0X3R5cGU7CiAgICB0eXBlZGVmIFQgKiBhcmd1bWVudF90eXBlOwogICAgdm9pZCBvcGVyYXRvcigpKFQgKiBwKSBjb25zdDsKfTsKPC9wcmU+CgkJPGg0PnZvaWQgY2hlY2tlZF9kZWxldGVyJmx0O1QmZ3Q7OjpvcGVyYXRvcigpKFQgKiBwKSBjb25zdDs8L2g0PgoJCTxibG9ja3F1b3RlPgoJCQk8cD4KCQkJCTxiPlJlcXVpcmVzOjwvYj4gPGI+VDwvYj4gbXVzdCBiZSBhIGNvbXBsZXRlIHR5cGUuIFRoZSBleHByZXNzaW9uIDx0dD5kZWxldGUgcDwvdHQ+CgkJCQltdXN0IGJlIHdlbGwtZm9ybWVkLgoJCQk8L3A+CgkJCTxwPgoJCQkJPGI+RWZmZWN0czo8L2I+IDx0dD5kZWxldGUgcDs8L3R0PgoJCQk8L3A+CgkJPC9ibG9ja3F1b3RlPgoJCTxoMz5jaGVja2VkX2FycmF5X2RlbGV0ZXI8L2gzPgoJCTxwcmU+CnRlbXBsYXRlJmx0O2NsYXNzIFQmZ3Q7IHN0cnVjdCBjaGVja2VkX2FycmF5X2RlbGV0ZXIKewogICAgdHlwZWRlZiB2b2lkIHJlc3VsdF90eXBlOwogICAgdHlwZWRlZiBUICogYXJndW1lbnRfdHlwZTsKICAgIHZvaWQgb3BlcmF0b3IoKShUICogcCkgY29uc3Q7Cn07CjwvcHJlPgoJCTxoND52b2lkIGNoZWNrZWRfYXJyYXlfZGVsZXRlciZsdDtUJmd0Ozo6b3BlcmF0b3IoKShUICogcCkgY29uc3Q7PC9oND4KCQk8YmxvY2txdW90ZT4KCQkJPHA+CgkJCQk8Yj5SZXF1aXJlczo8L2I+IDxiPlQ8L2I+IG11c3QgYmUgYSBjb21wbGV0ZSB0eXBlLiBUaGUgZXhwcmVzc2lvbiA8dHQ+ZGVsZXRlIFtdIHA8L3R0PgoJCQkJbXVzdCBiZSB3ZWxsLWZvcm1lZC4KCQkJPC9wPgoJCQk8cD4KCQkJCTxiPkVmZmVjdHM6PC9iPiA8dHQ+ZGVsZXRlIFtdIHA7PC90dD4KCQkJPC9wPgoJCTwvYmxvY2txdW90ZT4KCQk8aDM+PGEgbmFtZT0iQWNrbm93bGVkZ2VtZW50cyI+QWNrbm93bGVkZ2VtZW50czwvYT48L2gzPgoJCTxwPgoJCQlUaGUgZnVuY3Rpb24gdGVtcGxhdGVzIDxTVFJPTkc+Y2hlY2tlZF9kZWxldGU8L1NUUk9ORz4gYW5kIDxTVFJPTkc+Y2hlY2tlZF9hcnJheV9kZWxldGU8L1NUUk9ORz4KCQkJd2VyZSBvcmlnaW5hbGx5IHBhcnQgb2YgPFNUUk9ORz4mbHQ7Ym9vc3QvdXRpbGl0eS5ocHAmZ3Q7PC9TVFJPTkc+LCBhbmQgdGhlIAoJCQlkb2N1bWVudGF0aW9uIGFja25vd2xlZGdlZCBCZW1hbiBEYXdlcywgRGF2ZSBBYnJhaGFtcywgVmxhZGltaXIgUHJ1cywgUmFpbmVyIAoJCQlEZXlrZSwgSm9obiBNYWRkb2NrLCBhbmQgb3RoZXJzIGFzIGNvbnRyaWJ1dG9ycy4KCQk8L3A+CgkJPHA+CgkJCTxicj4KCQkJPHNtYWxsPkNvcHlyaWdodCCpIDIwMDIgYnkgUGV0ZXIgRGltb3YuIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIAoJCQkJMS4wLiBTZWUgYWNjb21wYW55aW5nIGZpbGUgPEEgaHJlZj0iLi4vLi4vTElDRU5TRV8xXzAudHh0Ij5MSUNFTlNFXzFfMC50eHQ8L0E+IG9yIAoJCQkJY29weSBhdCA8QSBocmVmPSJodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQiPmh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dDwvQT4uPC9zbWFsbD48L3A+Cgk8L2JvZHk+CjwvaHRtbD4K