PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgU3RyaWN0Ly9FTiINCiAgICAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+DQo8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+DQo8aGVhZD4NCjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiLz4NCjx0aXRsZT5BYm91dCBFY2xpcHNlTGluayAyLjQuMDwvdGl0bGU+DQo8L2hlYWQ+DQo8Ym9keSBsYW5nPSJFTi1VUyI+DQo8aDE+RWNsaXBzZUxpbmsgMi40LjA8L2gxPg0KPGgyPkVjbGlwc2UgSW5kaWdvIHNpbXVsdGFuZW91cyByZWxlYXNlPC9oMj4NCjxwPlRhcmdldCBEYXRlIC0gSnVuZSAyMDEyPC9wPg0KPGgyPkFib3V0PC9oMj4NCjxwPlRoZSA8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VjbGlwc2VsaW5rIj5FY2xpcHNlTGluazwvYT4gcHJvamVjdCdzIA0KICBnb2FsIGlzIHRvIHByb3ZpZGUgYSBjb21wbGV0ZSBwZXJzaXN0ZW5jZSBmcmFtZXdvcmsgdGhhdCBpcyBib3RoIGNvbXByZWhlbnNpdmUgDQogIGFuZCB1bml2ZXJzYWwuIEl0IHdpbGwgcnVuIGluIGFueSBKYXZhIGVudmlyb25tZW50IGFuZCByZWFkIGFuZCB3cml0ZSBvYmplY3RzIA0KICB0byB2aXJ0dWFsbHkgYW55IHR5cGUgb2YgZGF0YSBzb3VyY2UsIGluY2x1ZGluZyByZWxhdGlvbmFsIGRhdGFiYXNlcywgYW5kIFhNTC4gDQogIEVjbGlwc2VMaW5rIHdpbGwgZm9jdXMgb24gcHJvdmlkaW5nIGxlYWRpbmcgZWRnZSBzdXBwb3J0LCBpbmNsdWRpbmcgYWR2YW5jZWQgDQogIGZlYXR1cmUgZXh0ZW5zaW9ucywgZm9yIHRoZSBkb21pbmFudCBwZXJzaXN0ZW5jZSBzdGFuZGFyZHMgZm9yIGVhY2ggdGFyZ2V0IGRhdGEgDQogIHNvdXJjZTsgSmF2YSBQZXJzaXN0ZW5jZSBBUEkgKEpQQSkgZm9yIHJlbGF0aW9uYWwgZGF0YWJhc2VzLCBKYXZhIEFQSSBmb3IgWE1MIA0KICBCaW5kaW5nIChKQVhCKSBmb3IgWE1MLCBTZXJ2aWNlIERhdGEgT2JqZWN0cyAoU0RPKSwgYW5kIERhdGFiYXNlIFdlYiBzZXJ2aWNlcyANCiAgKERCV1MpLiA8L3A+DQoNCjxwPkZvciB0aXBzIG9uIGdldHRpbmcgc3RhcnRlZCB3aXRoIEVjbGlwc2VMaW5rLCBwbGVhc2Ugc2VlIHRoZSBmb2xsb3dpbmcgcmVzb3VyY2VzOiANCjwvcD4NCjx1bD4NCiAgPGxpPiA8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VjbGlwc2VsaW5rL3JlbGVhc2VzLzIuNC4wLnBocCI+RWNsaXBzZUxpbmsgMi40LjAgUmVsZWFzZSBOb3RlczwvYT48L2xpPg0KICA8bGk+IDxhIGhyZWY9Imh0dHA6Ly93aWtpLmVjbGlwc2Uub3JnL0VjbGlwc2VMaW5rL1VzZXJNYW51YWwiPkRvY3VtZW50YXRpb248L2E+PC9saT4NCiAgPGxpPiA8YSBocmVmPSJodHRwOi8vd2lraS5lY2xpcHNlLm9yZy9FY2xpcHNlTGluay9FeGFtcGxlcyI+RXhhbXBsZXMgYW5kIEhvdyBUbzwvYT48L2xpPg0KPC91bD4NCjxoMj5MaWNlbnNlIDwvaDI+DQo8cD5UaGUgRWNsaXBzZSBGb3VuZGF0aW9uIG1ha2VzIGF2YWlsYWJsZSBhbGwgY29udGVudCBpbiB0aGlzIHBsdWctaW4gKCZxdW90O0NvbnRlbnQmcXVvdDspLiANCiAgICBVbmxlc3Mgb3RoZXJ3aXNlIGluZGljYXRlZCBiZWxvdywgdGhlIENvbnRlbnQgaXMgcHJvdmlkZWQgdG8geW91IHVuZGVyIHRoZSB0ZXJtcyANCglhbmQgY29uZGl0aW9ucyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDEuMCAoJnF1b3Q7RVBMJnF1b3Q7KSBhbmQgDQoJRWNsaXBzZSBEaXN0cmlidXRpb24gTGljZW5zZSBWZXJzaW9uIDEuMCAok0VETJQpLiBBIGNvcHkgb2YgdGhlIEVQTCBpcyBhdmFpbGFibGUgYXQgDQoJPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwiPiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbDwvYT4gDQoJYW5kIGEgY29weSBvZiB0aGUgRURMIGlzIGF2YWlsYWJsZSBhdCA8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL29yZy9kb2N1bWVudHMvZWRsLXYxMC5waHAiPiANCglodHRwOi8vd3d3LmVjbGlwc2Uub3JnL29yZy9kb2N1bWVudHMvZWRsLXYxMC5waHA8L2E+LiAgRm9yIHB1cnBvc2VzIG9mIHRoZSBFUEwsICJQcm9ncmFtIiANCgl3aWxsIG1lYW4gdGhlIENvbnRlbnQuPC9wPg0KPHA+SWYgeW91IGRpZCBub3QgcmVjZWl2ZSB0aGlzIENvbnRlbnQgZGlyZWN0bHkgZnJvbSB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uLCB0aGUgDQogIENvbnRlbnQgaXMgYmVpbmcgcmVkaXN0cmlidXRlZCBieSBhbm90aGVyIHBhcnR5ICgmcXVvdDtSZWRpc3RyaWJ1dG9yJnF1b3Q7KSANCiAgYW5kIGRpZmZlcmVudCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBtYXkgYXBwbHkgdG8geW91ciB1c2Ugb2YgYW55IG9iamVjdCBjb2RlIA0KICBpbiB0aGUgQ29udGVudC4gQ2hlY2sgdGhlIFJlZGlzdHJpYnV0b3ImIzgyMTc7cyBsaWNlbnNlIHRoYXQgd2FzIHByb3ZpZGVkIHdpdGggDQogIHRoZSBDb250ZW50LiBJZiBubyBzdWNoIGxpY2Vuc2UgZXhpc3RzLCBjb250YWN0IHRoZSBSZWRpc3RyaWJ1dG9yLiBVbmxlc3Mgb3RoZXJ3aXNlIA0KICBpbmRpY2F0ZWQgYmVsb3csIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRVBMIGFuZCBFREwgc3RpbGwgYXBwbHkgdG8gYW55IHNvdXJjZSANCiAgY29kZSBpbiB0aGUgQ29udGVudCBhbmQgc3VjaCBzb3VyY2UgY29kZSBtYXkgYmUgb2J0YWluZWQgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZyI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZzwvYT4uPC9wPg0KPGgyPlRoaXJkIFBhcnR5IENvbnRlbnQ8L2gyPg0KPHA+VGhlIENvbnRlbnQgaW5jbHVkZXMgaXRlbXMgdGhhdCBoYXZlIGJlZW4gc291cmNlZCBmcm9tIHRoaXJkIHBhcnRpZXMgYXMgc2V0IA0KICBvdXQgYmVsb3cuIElmIHlvdSBkaWQgbm90IHJlY2VpdmUgdGhpcyBDb250ZW50IGRpcmVjdGx5IGZyb20gdGhlIEVjbGlwc2UgRm91bmRhdGlvbiwgDQogIHRoZSBmb2xsb3dpbmcgaXMgcHJvdmlkZWQgZm9yIGluZm9ybWF0aW9uYWwgcHVycG9zZXMgb25seSwgYW5kIHlvdSBzaG91bGQgbG9vayANCiAgdG8gdGhlIFJlZGlzdHJpYnV0b3ImIzgyMTc7cyBsaWNlbnNlIGZvciB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB1c2UuPC9wPg0KPHVsPg0KICA8bGk+Rm91bmRhdGlvbiBEZXBlbmRlbmNpZXMgDQogICAgPHVsPg0KICAgICAgPGxpPjxhIGhyZWY9IiNBU00iPkFTTTwvYT48L2xpPg0KICAgIDwvdWw+DQogIDwvbGk+DQogIDxsaT5FY2xpcHNlTGluayBKUEEgDQogICAgPHVsPg0KICAgICAgPGxpPjxhIGhyZWY9IiNBTlRMUiI+QU5UTFI8L2E+PC9saT4NCiAgICAgIDxsaT48YSBocmVmPSIjSlBBMSI+SmF2YSBQZXJzaXN0ZW5jZSBBUEkgKEpQQSkgMS4wIC0gRUpCIDMuMDwvYT48L2xpPg0KICAgICAgPGxpPjxhIGhyZWY9IiNKUEEyIj5KYXZhIFBlcnNpc3RlbmNlIEFQSSAoSlBBKSAyLjA8L2E+PC9saT4NCiAgICA8L3VsPg0KICA8L2xpPg0KICA8bGk+RWNsaXBzZUxpbmsgTU9YeSANCiAgICA8dWw+DQogICAgICA8bGk+PGEgaHJlZj0iI0pBWEIiPkphdmEgQXJjaGl0ZWN0dXJlIGZvciBYTUwgQmluZGluZyAoSkFYQik8L2E+PC9saT4NCiAgICAgIDxsaT48YSBocmVmPSIjTUFJTCI+SmF2YSBNYWlsPC9hPjwvbGk+DQogICAgICA8bGk+PGEgaHJlZj0iI0FDVElWQVRJT04iPkphdmEgQWN0aXZhdGlvbiBGcmFtZXdvcms8L2E+PC9saT4NCiAgICAgIDxsaT48YSBocmVmPSIjU3RBWCI+U3RyZWFtaW5nIEFQSSBmb3IgWE1MIChTdEFYKTwvYT48L2xpPg0KICAgIDwvdWw+DQogIDwvbGk+DQogIDxsaT5FY2xpcHNlTGluayBTRE8gDQogICAgPHVsPg0KICAgICAgPGxpPjxhIGhyZWY9IiNTRE8iPlNlcnZpY2UgRGF0YSBPYmplY3RzIChTRE8pPC9hPjwvbGk+DQogICAgPC91bD4NCiAgPC9saT4NCiAgPGxpPkVjbGlwc2VMaW5rIERCV1MgDQogICAgPHVsPg0KICAgICAgPGxpPjxhIGhyZWY9IiNTZXJ2bGV0Ij5KYXZhIFNlcnZsZXQgMi40IChvciBoaWdoZXIpPC9hPjwvbGk+DQogICAgPC91bD4NCiAgPC9saT4NCiAgPGxpPlV0aWxpdGllcyANCiAgICA8dWw+DQogICAgICA8bGk+PGEgaHJlZj0iI0pDQSI+SmF2YSBDb25uZWN0b3I8L2E+PC9saT4NCiAgICAgIDxsaT48YSBocmVmPSIjWEVSQ0VTIj5YZXJjZXM8L2E+PC9saT4NCiAgICAgIDxsaT48YSBocmVmPSIjV1NETDRKIj5XU0RMNEogMS42LjIgPC9hPjwvbGk+DQogICAgPC91bD4NCiAgPC9saT4NCjwvdWw+DQo8aHIgLz4NCjxoMz48YSBuYW1lPSJBU00iIGlkPSJBU00iPjwvYT5BU00gdjMuMy4xIDwvaDM+DQo8YmxvY2txdW90ZT4gDQogIDxwPlRoZSBFY2xpcHNlTGluayBQcm9qZWN0IGluY2x1ZGVzIEFTTSBmb3IgdGhlIHB1cnBvc2Ugb2YgDQogICAgYnl0ZSBjb2RlIHdlYXZpbmcuIFRoZSBBTVMgbGlicmFyeSBpcyByZS1wYWNrYWdlZCB3aXRoaW4gdGhlIHNvdXJjZSBvZiB0aGUgDQogICAgcHJvamVjdCAob3JnLnBlcnNpc3RlbmNlLmVjbGlwc2UuaW50ZXJuYWwubGlicmFyaWVzLmFzbS4qKSB0byBhdm9pZCB2ZXJzaW9uIA0KICAgIGNvbGxpc2lvbnMgd2l0aCBvdGhlciB1c2FnZSBvZiBBU00uIA0KICA8L3A+DQogIDxwPlRoZSBzb3VyY2UgY29kZSBpcyBhdmFpbGFibGUgd2l0aGluIHRoZSBwcm9qZWN0J3Mgc3VidmVyc2lvbiByZXBvc2l0b3J5LiANCiAgICBUaGUgYmluYXJpZXMgYXJlIGRpc3RyaWJ1dGVkIHdpdGhpbiB0aGUgZWNsaXBzZWxpbmsuamFyIGFuZCBpbiB0aGUgb3JnLmVjbGlwc2UucGVyc2lzdGVuY2UuYXNtXyouamFyIA0KICAgIGJ1bmRsZS4gPC9wPg0KICA8cD4gPGEgaHJlZj0iaHR0cDovL2FzbS5vYmplY3R3ZWIub3JnL2xpY2Vuc2UuaHRtbCI+aHR0cDovL2FzbS5vYmplY3R3ZWIub3JnL2xpY2Vuc2UuaHRtbDwvYT48L3A+DQogIDxwPkNvcHlyaWdodCAoYykgMjAwMC0yMDA1IElOUklBLCBGcmFuY2UgVGVsZWNvbSwgQWxsIHJpZ2h0cyByZXNlcnZlZC48L3A+DQogIDxwPlJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sIA0KICAgIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDo8L3A+DQogIDxvbD4NCiAgICA8bGk+IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgDQogICAgICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLjwvbGk+DQogICAgPGxpPiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIA0KICAgICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiANCiAgICAgIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLjwvbGk+DQogICAgPGxpPiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBjb3B5cmlnaHQgaG9sZGVycyBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMgDQogICAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCANCiAgICAgIHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi48L2xpPg0KICA8L29sPg0KICA8cD5USElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICZxdW90O0FTIA0KICAgIElTJnF1b3Q7QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgDQogICAgVE8sIFRIRUlNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiANCiAgICBQVVJQT1NFQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IgQ09OVFJJQlVUT1JTIA0KICAgIEJFTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUkNPTlNFUVVFTlRJQUwgDQogICAgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GU1VCU1RJVFVURSBHT09EUyBPUiANCiAgICBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiANCiAgICBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIA0KICAgIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSlBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgDQogICAgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLjwvcD4NCjwvYmxvY2txdW90ZT4NCjxoMz48YSBuYW1lPSJBTlRMUiIgaWQ9IkFOVExSIj48L2E+QU5UTFIgdjMuMDwvaDM+DQo8YmxvY2txdW90ZT4NCiAgPHA+VGhlIDxhIGhyZWY9Imh0dHA6Ly93d3cuYW50bHIub3JnLyI+QU5UTFIgbGlicmFyeTwvYT4gKDxhIGhyZWY9Imh0dHA6Ly93d3cuYW50bHIub3JnL2xpY2Vuc2UuaHRtbCI+bGljZW5zZTwvYT4pIA0KICAgIGlzIGluY2x1ZGVkIHdpdGhpbiBFY2xpcHNlTGluayBQcm9qZWN0IHRvIGVuYWJsZSBwYXJzaW5nIG9mIHRoZSBKYXZhIFBlcnNpc3RlbmNlIA0KICAgIFF1ZXJ5IGxhbmd1YWdlIChKUCBRTCkuIFRoZSBBTlRMUiBsaWJyYXJ5IGlzIHJlLXBhY2thZ2VkIHdpdGhpbiB0aGUgcHJvamVjdCANCiAgICBpbiB0aGUgb3JnLmVjbGlwc2UucGVyc2lzdGVuY2UuaW50ZXJuYWwubGlicmFyaWVzLmFudGxyLiogcGFja2FnZXMuIDwvcD4NCiAgPHA+VGhlIHNvdXJjZSBpcyBhdmFpbGFibGUgd2l0aCB0aGUgcHJvamVjdCdzIHN1YnZlcnNpb24gcmVwb3NpdG9yeS4gVGhlIGJpbmFyaWVzIA0KICAgIGFyZSBkaXN0cmlidXRlZCB3aXRoaW4gdGhlIGVjbGlwc2VsaW5rLmphciBhbmQgaW4gdGhlIG9yZy5lY2xpcHNlLnBlcnNpc3RlbmNlLmFudGxyXzIuMi4wLnYqLmphciANCiAgICBidW5kbGUuPC9wPg0KPC9ibG9ja3F1b3RlPg0KPGgzPjxhIG5hbWU9IkpBWEIiIGlkPSJKQVhCIj48L2E+SmF2YSBBcmNoaXRlY3R1cmUgZm9yIFhNTCBCaW5kaW5nIChKQVhCKSB2Mi4yPC9oMz4NCjxibG9ja3F1b3RlPiANCiAgPHA+VGhlIDxhIGhyZWY9Imh0dHBzOi8vamF4Yi5kZXYuamF2YS5uZXQvMi4yLyI+SkFYQiBsaWJyYXJpZXM8L2E+IGRpc3RyaWJ1dGVkIA0KICAgIHVuZGVyIDxhIGhyZWY9Imh0dHBzOi8vZ2xhc3NmaXNoLmRldi5qYXZhLm5ldC9wdWJsaWMvQ0RETHYxLjAuaHRtbCI+Q0RETCB2MS4wPC9hPiANCiAgICBhcmUgaW5jbHVkZWQgd2l0aGluIHRoZSBFY2xpcHNlTGluayBQcm9qZWN0IHRvIGVuYWJsZSB0aGUgTU9YWSBjb21wb25lbnQncyANCiAgICBpbXBsZW1lbnRhdGlvbiBvZiBKQVhCLjwvcD4NCiAgPHA+SkFYQiBMaWJyYXJpZXM6IDwvcD4NCiAgPHVsPg0KICAgIDxsaT5qYXZheC54bWwuYmluZF8yLjIuMC52MjAxMDA1MDgwNDAyLmphciAoamF4Yi1hcGkuamFyKTwvbGk+DQogICAgPGxpPmNvbS5zdW4ueG1sLmJpbmRfMi4yLjAudjIwMTAwNDE0MTk1MC5qYXIgKGpheGItaW1wbC5qYXIpPC9saT4NCiAgICA8bGk+Y29tLnN1bi50b29scy54amNfMi4yLjAuamFyIChqYXhiLnhqYy5qYXIpPC9saT4NCiAgPC91bD4NCjwvYmxvY2txdW90ZT4NCjxoMz48YSBuYW1lPSJKUEExIiBpZD0iSlBBMSI+PC9hPkphdmEgUGVyc2lzdGVuY2UgKEpQQSkgMS4wIC0gRUpCIDMuMDwvaDM+DQo8YmxvY2txdW90ZT4gDQogIDxwPlRoZSBKYXZhIFBlcnNpc3RlbmNlIEFQSSwgaW5jbHVkZWQgd2l0aCBFSkIgMy4wLCBpcyBhdmFpbGFibGUgZm9yIGRvd25sb2FkIA0KICAgIGZyb20gdGhlIDxhIGhyZWY9Imh0dHBzOi8vZ2xhc3NmaXNoLmRldi5qYXZhLm5ldC9zb3VyY2UvYnJvd3NlL2dsYXNzZmlzaC9lamItYXBpIj5lamItYXBpIA0KICAgIGRpcmVjdG9yeTwvYT4gaW4gdGhlIGdsYXNzZmlzaCBDVlMgcmVwb3NpdG9yeS5JdCBpcyBkaXN0cmlidXRlZCB1bmRlciA8YSBocmVmPSJodHRwczovL2dsYXNzZmlzaC5kZXYuamF2YS5uZXQvcHVibGljL0NEREx2MS4wLmh0bWwiPiANCiAgICBDRERMdjEuMCA8L2E+LiBUaGUgamFyIGlzIGJlaW5nIHNoaXBwZWQgYXMgYW4gT1NHaSBidW5kbGUgYW5kIGlzIHJlcXVpcmVkIA0KICAgIGZvciBjb21waWxhdGlvbiBvZiBzb21lIGNvbnRhaW5lciBiYXNlZCBmdWN0aW9uYWxpdHkuPC9wPg0KPC9ibG9ja3F1b3RlPg0KPHA+PC9wPg0KPGgzPjxhIG5hbWU9IkpQQTIiIGlkPSJKUEEyIj48L2E+SmF2YSBQZXJzaXN0ZW5jZSAoSlBBKSAyLjAgIDwvaDM+DQo8YmxvY2txdW90ZT4gDQogIDxwPkVjbGlwc2VMaW5rIGlzIHRoZSBKYXZhIFBlcnNpc3RlbmNlIChKUEEpIDIuMCBSZWZlcmVuY2UgSW1wbGVtZW50YXRpb24NCiAgICAoPGEgaHJlZj0iaHR0cDovL2pjcC5vcmcvZW4vanNyL2RldGFpbD9pZD0zMTciPkpTUiAzMTc8L2E+KS4gIFRoZSBKUEEgMi4wIA0KCXNwZWNpZmljYXRpb24gQVBJIGlzIGluY2x1ZGVkIGluIEVjbGlwc2VMaW5rIHVuZGVyIHRoZSA8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCI+RVBMPC9hPiBhbmQgPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9vcmcvZG9jdW1lbnRzL2VkbC12MTAucGhwIj5FREw8L2E+IGxpY2Vuc2VzLjwvcD4NCjwvYmxvY2txdW90ZT4NCjxoMz48YSBuYW1lPSJNQUlMIiBpZD0iTUFJTCI+PC9hPkphdmEgTWFpbCB2MS40LjA8L2gzPg0KPGJsb2NrcXVvdGU+DQogIDxwPlRoZSBKYXZhIE1haWwgbGlicmFyeSAobWFpbC5qYXIpIGNhbiBiZSBkb3dubG9hZGVkIGZyb20gPGEgaHJlZj0iaHR0cDovL2phdmEuc3VuLmNvbS9wcm9kdWN0cy9qYXZhbWFpbC9qYXZhbWFpbC0xXzQuaHRtbCI+amF2YS5zdW4uY29tPC9hPiANCiAgICB1bmRlciA8YSBocmVmPSJodHRwczovL2dsYXNzZmlzaC5kZXYuamF2YS5uZXQvcHVibGljL0NEREx2MS4wLmh0bWwiPkNEREwgDQogICAgdjEuMDwvYT4gYW5kIGlzIGluY2x1ZGVkIHdpdGhpbiB0aGUgRWNsaXBzZUxpbmsgUHJvamVjdCBkaXN0cmlidXRpb24gDQogICAgdG8gc3VwcG9ydCBXZWIgU2VydmljZXMgYXR0YWNobWVudCBoYW5kbGluZyBpbiB0aGUgTU9YeSBjb21wb25lbnQuIEl0IGlzIG9ubHkgDQogICAgcmVxdWlyZWQgd2hlbiB1c2luZyBKYXZhIFNFIDUgKEphdmEgTWFpbCBpcyBpbmNsdWRlZCBpbiBKYXZhIFNFIDYpLjwvcD4NCjwvYmxvY2txdW90ZT4NCjxoMz48YSBuYW1lPSJBQ1RJVkFUSU9OIiBpZD0iQUNUSVZBVElPTiI+PC9hPkphdmEgQWN0aXZhdGlvbiBGcmFtZXdvcmsgdjEuMTwvaDM+DQo8YmxvY2txdW90ZT4NCiAgPHA+VGhlIEphdmEgQWN0aXZhdGlvbiBGcmFtZXdvcmsgKGFjdGl2YXRpb24uamFyKSBpcyBkaXN0cmlidXRlZCB3aXRoIHRoZSA8YSBocmVmPSJodHRwczovL2pheGIuZGV2LmphdmEubmV0LzIuMi8iPkpBWEIgDQogICAgdjIuMjwvYT4gdW5kZXIgPGEgaHJlZj0iaHR0cHM6Ly9nbGFzc2Zpc2guZGV2LmphdmEubmV0L3B1YmxpYy9DRERMdjEuMC5odG1sIj5DRERMIA0KICAgIHYxLjA8L2E+IGFuZCBpcyBpbmNsdWRlZCB3aXRoaW4gdGhlIEVjbGlwc2VMaW5rIFByb2plY3QgZGlzdHJpYnV0aW9uIHRvIHN1cHBvcnQgDQogICAgV2ViIFNlcnZpY2VzIGF0dGFjaG1lbnQgaGFuZGxpbmcgaW4gdGhlIE1PWHkgY29tcG9uZW50LiBJdCBpcyBvbmx5IHJlcXVpcmVkIA0KICAgIHdoZW4gdXNpbmcgSmF2YSBTRSA1IChUaGUgSmF2YSBBY3RpdmF0aW9uIEZyYW1ld29yayBpcyBpbmNsdWRlZCBpbiBKYXZhIFNFIA0KICAgIDYpLjwvcD4NCjwvYmxvY2txdW90ZT4NCjxoMz48YSBuYW1lPSJTdEFYIiBpZD0iU3RBWCI+PC9hPlN0cmVhbWluZyBBUEkgZm9yIFhNTCAoU3RBWCkgdjEuMC4xPC9oMz4NCjxibG9ja3F1b3RlPg0KICA8cD5UaGUgU3RyZWFtaW5nIEFQSSBmb3IgWE1MIChTdEFYKSBsaWJyYXJ5IChqc3IxNzNfMS4wX2FwaS5qYXIpIGlzIGRpc3RyaWJ1dGVkIA0KICAgIHdpdGggdGhlIDxhIGhyZWY9Imh0dHBzOi8vamF4Yi5kZXYuamF2YS5uZXQvMi4yLyI+SkFYQiB2Mi4yPC9hPiB1bmRlciANCiAgICA8YSBocmVmPSJodHRwczovL2dsYXNzZmlzaC5kZXYuamF2YS5uZXQvcHVibGljL0NEREx2MS4wLmh0bWwiPkNEREwgdjEuMDwvYT4gDQogICAgYW5kIGlzIGluY2x1ZGVkIHdpdGhpbiB0aGUgRWNsaXBzZUxpbmsgUHJvamVjdCBkaXN0cmlidXRpb24gYXMgYW4gb3B0aW9uYWwgDQogICAgWE1MIHByb2Nlc3NpbmcgYXBwcm9hY2ggaW4gdGhlIE1PWHkgY29tcG9uZW50LiA8L3A+DQo8L2Jsb2NrcXVvdGU+DQo8aDM+PGEgbmFtZT0iU0RPIiBpZD0iU0RPIj48L2E+U2VydmljZSBEYXRhIE9iamVjdHMgKFNETykgdjIuMS4xPC9oMz4NCjxibG9ja3F1b3RlPg0KICA8cD5UaGUgPGEgaHJlZj0iaHR0cDovL2pjcC5vcmcvYWJvdXRKYXZhL2NvbW11bml0eXByb2Nlc3MvcHIvanNyMjM1L2luZGV4Lmh0bWwiPlNlcnZpY2UgDQogICAgRGF0YSBPYmplY3RzIChTRE8pIEFQSTwvYT4gaXMgZGlzdHJpYnV0ZWQgdW5kZXIgYSA8YSBocmVmPSJodHRwczovL2dsYXNzZmlzaC5kZXYuamF2YS5uZXQvcHVibGljL0NEREx2MS4wLmh0bWwiPiBDRERMdjEuMCA8L2E+IGFuZCAgPGEgaHJlZj0iaHR0cDovL2pjcC5vcmcvYWJvdXRKYXZhL2NvbW11bml0eXByb2Nlc3MvcHIvanNyMjM1L2luZGV4Lmh0bWwiPmN1c3RvbSANCiAgICBsaWNlbnNlPC9hPi4gSXQgcHJvdmlkZXMgdGhlIHN0YW5kYXJkIEFQSSBpbXBsZW1lbnRlZCBieSB0aGUgRWNsaXBzZUxpbmsgUHJvamVjdCdzIFNETyBjb21wb25lbnQuPC9wPg0KPC9ibG9ja3F1b3RlPg0KPGgzPjxhIG5hbWU9IkpDQSIgaWQ9IkpDQSI+PC9hPkphdmEgQ29ubmVjdG9yIHYxLjU8L2gzPg0KPGJsb2NrcXVvdGU+DQogIDxwPlRoZSBKQ0EgMS41IEFQSSBpcyBhdmFpbGFibGUgZm9yIGRvd25sb2FkIGZyb20gdGhlIDxhIGhyZWY9Imh0dHBzOi8vZ2xhc3NmaXNoLmRldi5qYXZhLm5ldC9zb3VyY2UvYnJvd3NlL2dsYXNzZmlzaC9jb25uZWN0b3ItYXBpIj5jb25uZWN0b3ItYXBpIA0KICAgIGRpcmVjdG9yeTwvYT4gaW4gdGhlIGdsYXNzZmlzaCBDVlMgcmVwb3NpdG9yeS4gSXQgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgPGEgaHJlZj0iaHR0cHM6Ly9nbGFzc2Zpc2guZGV2LmphdmEubmV0L3B1YmxpYy9DRERMdjEuMC5odG1sIj4gDQogICAgQ0RETHYxLjAgPC9hPi4gPC9wPg0KICA8cD5UaGlzIGphciBpcyBiZWluZyBzaGlwcGVkIGFuZCByZXF1aXJlZCBieSB0aGUgV29ya2JlbmNoIG9ubHkuIFdoZW4gdXNpbmcgDQogICAgRWNsaXBzZUxpbmsgaW4gYSBjb250YWluZXIgd2hlcmUgSkNBIGludGVncmF0aW9uIGlzIHJlcXVpcmVkIHRoYXQgY29udGFpbmVyIA0KICAgIHdpbGwgcHJvdmlkZSB0aGUgbmVjZXNzYXJ5IEFQSSBsaWJyYXJpZXMuPC9wPg0KPC9ibG9ja3F1b3RlPg0KPGgzPjxhIG5hbWU9IlhFUkNFUyIgaWQ9IlhFUkNFUyI+PC9hPlhlcmNlcyB2Mi45LjA8L2gzPg0KPGJsb2NrcXVvdGU+DQogIDxwPlhlcmNlcyAyLjkuMCBpcyBhdmFpbGFibGUgZnJvbSA8YSBocmVmPSJodHRwOi8veGVyY2VzLmFwYWNoZS5vcmcveGVyY2VzLWovIj4gDQogICAgdGhlIFhlcmNlcyBob21lIHBhZ2U8L2E+LiBJdCBpcyBkaXN0cmlidXRlZCB1bmRlciA8YSBocmVmPSJodHRwOi8vYW50LmFwYWNoZS5vcmcvbGljZW5zZS5odG1sIj4gDQogICAgQXBhY2hlIDIuMDwvYT4uPC9wPg0KICA8cD5UaGlzIGphciBpcyBzaGlwcGVkIGZvciB0aGUgV29ya2JlbmNoJ3MgdXNlIG9ubHkgaW4gdGhlIHJlYWRpbmcgYW5kIHdyaXRpbmcgDQogICAgb2YgWE1MIGNvbmZpZ3VyYXRpb24gZmlsZXMuPC9wPg0KPC9ibG9ja3F1b3RlPg0KPGgzPjxhIG5hbWU9IlNFUlZMRVQiIGlkPSJTRVJWTEVUIj48L2E+SmF2YSBTZXJ2bGV0IDIuNDwvaDM+DQo8YmxvY2txdW90ZT4NCiAgPHA+VGhlIDxhIGhyZWY9Imh0dHA6Ly9qY3Aub3JnL2Fib3V0SmF2YS9jb21tdW5pdHlwcm9jZXNzL2ZpbmFsL2pzcjE1NC9pbmRleC5odG1sIj5KYXZhIFNlcnZsZXQgMi40IHNwZWNpZmljYXRpb248L2E+DQogIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSAgPGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wLmh0bWwiPkFwYWNoZSAyLjAgbGljZW5zZTwvYT4uIFRoZSBzb3VyY2UgY29kZSBpcyBwYXJ0IG9mIHRoZSA8YSBocmVmPSJodHRwOi8vc3ZuLmFwYWNoZS5vcmcvcmVwb3MvYXNmL3RvbWNhdC90cnVuay9qYXZhL2phdmF4L3NlcnZsZXQvIj5BcGFjaGUgVG9tY2F0IHByb2plY3Q8L2E+IA0KICA8cD5UaGlzIGphciBpcyBvbmx5IHJlcXVpcmVkIGF0IGRlc2lnbiB0aW1lIGZvciB0aGUgREJXUyBCdWlsZGVyIHV0aWxpdHkuPC9wPg0KPC9ibG9ja3F1b3RlPg0KPGgzPjxhIG5hbWU9IldTREw0SiIgaWQ9IldTREw0SiI+PC9hPldTREw0aiB2MS42LjI8L2gzPg0KPGJsb2NrcXVvdGU+DQogIDxwPldTREw0SiAxLjYuMiBpcyBhdmFpbGFibGUgZm9yIGRvd25sb2FkIGZyb20gdGhlIDxhIGhyZWY9Imh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvd3NkbDRqIj53c2RsNGogDQogICAgcHJvamVjdDwvYT4uIEl0IGRpc3RyaWJ1dGVkIHVuZGVyIDxhIGhyZWY9Imh0dHA6Ly9zdm4uYXBhY2hlLm9yZy9yZXBvcy9hc2Yvd2Vic2VydmljZXMvd3NzNGovdHJ1bmsvbGVnYWwvTElDRU5TRS53c2RsNGoiPiANCiAgICBDUEx2MS4wIDwvYT4uIDwvcD4NCiAgPHA+VGhpcyBqYXIgaXMgb25seSByZXF1aXJlZCBhdCBkZXNpZ24gdGltZSBmb3IgdGhlIERCV1MgQnVpbGRlciB1dGlsaXR5LjwvcD4NCjwvYmxvY2txdW90ZT4NCjxwPjwvcD4NCjwvYm9keT4NCjwvaHRtbD4NCg==