PD9waHAgIAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCXJlcXVpcmVfb25jZSgkX1NFUlZFUlsnRE9DVU1FTlRfUk9PVCddIC4gIi9lY2xpcHNlLm9yZy1jb21tb24vc3lzdGVtL2FwcC5jbGFzcy5waHAiKTsJcmVxdWlyZV9vbmNlKCRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10gLiAiL2VjbGlwc2Uub3JnLWNvbW1vbi9zeXN0ZW0vbmF2LmNsYXNzLnBocCIpOyAJcmVxdWlyZV9vbmNlKCRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10gLiAiL2VjbGlwc2Uub3JnLWNvbW1vbi9zeXN0ZW0vbWVudS5jbGFzcy5waHAiKTsgCSRBcHAgCT0gbmV3IEFwcCgpOwkkTmF2CT0gbmV3IE5hdigpOwkkTWVudSAJPSBuZXcgTWVudSgpOwkJaW5jbHVkZSgiX3Byb2plY3RDb21tb24ucGhwIik7ICAgICMgQWxsIG9uIHRoZSBzYW1lIGxpbmUgdG8gdW5jbHV0dGVyIHRoZSB1c2VyJ3MgZGVza3RvcCcKCQoJIwoJIyBCZWdpbjogcGFnZS1zcGVjaWZpYyBzZXR0aW5ncy4gIENoYW5nZSB0aGVzZS4gCgkkcGFnZVRpdGxlIAkJPSAiTmV3IFRvcC1MZXZlbCBNb2RlbGluZyBQcm9qZWN0IjsKCSRwYWdlS2V5d29yZHMJPSAiRWNsaXBzZSBGb3VuZGF0aW9uLCBjb21tdW5pdHksIHJjcCwgcHJlc3MgcmVsZWFzZSwgZWNsaXBzZWNvbiI7CgkkcGFnZUF1dGhvcgkJPSAiSWFuIFNrZXJyZXR0IjsKCQoJIyBBZGQgcGFnZS1zcGVjaWZpYyBOYXYgYmFycyBoZXJlCgkjIEZvcm1hdCBpcyBMaW5rIHRleHQsIGxpbmsgVVJMIChjYW4gYmUgaHR0cDovL3d3dy5zb21lb3RoZXJzaXRlLmNvbS8pLCB0YXJnZXQgKF9zZWxmLCBfYmxhbmspCgkjICROYXYtPmFkZEN1c3RvbU5hdigiTXkgTGluayIsICJteXBhZ2UucGhwIiwgIl9zZWxmIik7CgkjICROYXYtPmFkZEN1c3RvbU5hdigiR29vZ2xlIiwgImh0dHA6Ly93d3cuZ29vZ2xlLmNvbS8iLCAiX2JsYW5rIik7CgoJIyBFbmQ6IHBhZ2Utc3BlY2lmaWMgc2V0dGluZ3MKCSMKCQoJIyBQYXN0ZSB5b3VyIEhUTUwgY29udGVudCBiZXR3ZWVuIHRoZSBFT0hUTUwgbWFya2VycyEJCgkkaHRtbCA9IDw8PEVPSFRNTAo8ZGl2IGlkPSJtYWluY29udGVudCI+Cgk8ZGl2IGlkPSJtaWRjb2x1bW4iPgoJCTxoMT4kcGFnZVRpdGxlPC9oMT4KCQk8aDI+UHJlc3MgUmVsZWFzZTwvaDI+CgkJPGgyIEFMSUdOPSJDRU5URVIiPjxzdHJvbmc+TmV3IFRvcC1MZXZlbCBFY2xpcHNlIFByb2plY3QgRW5jb3VyYWdlcyBBZG9wdGlvbiBvZiBPcGVuIFN0YW5kYXJkcyBmb3IgTW9kZWwtQmFzZWQgRGV2ZWxvcG1lbnQ8L3N0cm9uZz48L2gyPgoJCTx1bD4KCQk8bGk+Qm9ybGFuZCBhbmQgSUJNIFRlYW0gdG8gRHJpdmUgSW5kdXN0cnkgU3VwcG9ydCBmb3IgRWNsaXBzZSBNb2RlbGluZyBQcm9qZWN0PC9saT4KCQk8L3VsPgoJCTxwPjxzdHJvbmc+SkFWQU9ORSAoQk9PVEggMTEzOCksIFNBTiBGUkFOQ0lTQ08sIENhbGlmLiwgTWF5IDE1LCAyMDA2PC9zdHJvbmc+IJYgVGhlIEVjbGlwc2UgRm91bmRhdGlvbiB0b2RheSAKCQlhbm5vdW5jZWQgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHRvcC1sZXZlbCBwcm9qZWN0LCBjYWxsZWQgdGhlIEVjbGlwc2UgTW9kZWxpbmcgUHJvamVjdC4gVGhlIG5ldyBwcm9qZWN0IHdpbGwgCgkJZm9jdXMgb24gdGhlIGV2b2x1dGlvbiBhbmQgcHJvbW90aW9uIG9mIG1vZGVsLWJhc2VkIGRldmVsb3BtZW50IHRlY2hub2xvZ2llcyB3aXRoaW4gdGhlIEVjbGlwc2UgY29tbXVuaXR5LiAKCQlSaWNoYXJkIEdyb25iYWNrIG9mIEJvcmxhbmQgU29mdHdhcmUgYW5kIEVkIE1lcmtzIG9mIElCTSB3ZXJlIHNlbGVjdGVkIGFzIHByb2plY3QgY28tbGVhZGVycywgYW5kIGFyZSAKCQl0ZWFtaW5nIHRvIGNvbnRpbnVlIHRvIGFkdmFuY2UgRWNsaXBzZSBtb2RlbGluZyB0ZWNobm9sb2dpZXMgYW5kIHRvIGRyaXZlIGFkb3B0aW9uIG9mIG9wZW4gc3RhbmRhcmRzIHJlbGF0ZWQgCgkJdG8gc29mdHdhcmUgbW9kZWxpbmcuPC9wPgoJCTxwPkEgbnVtYmVyIG9mIGluZHVzdHJ5LWxlYWRpbmcgb3JnYW5pemF0aW9ucyBoYXZlIGNvbW1pdHRlZCB0byB0aGUgcHJvamVjdCBhbmQgYXJlIGFscmVhZHkgdXNpbmcgCgkJRWNsaXBzZS1iYXNlZCBtb2RlbGluZyBmcmFtZXdvcmtzIGluIHRoZWlyIHByb2R1Y3RzLCBpbmNsdWRpbmcgQm9ybGFuZCwgQ29tcHV3YXJlLCBJQk0sIElMT0csIE9tb25kbyBhbmQgCgkJT3JhY2xlLjwvcD4KCQk8cD5UaGUgZ29hbCBvZiB0aGUgdG9wLWxldmVsIEVjbGlwc2UgTW9kZWxpbmcgUHJvamVjdCBpcyB0byB1bml0ZSBzZXZlcmFsIGV4aXN0aW5nIHByb2plY3RzIHJlbGF0aW5nIHRvIAoJCW1vZGVsaW5nIHVuZGVyIG9uZSB1bWJyZWxsYSBmb3IgdGhlIHB1cnBvc2VzIG9mIGZvc3RlcmluZyBjb2xsYWJvcmF0aW9uLCB1bmlmeWluZyBkaXJlY3Rpb24gYW5kIGltcHJvdmluZyAKCQlpbnRlcm9wZXJhYmlsaXR5LiBDdXJyZW50IHByb2plY3RzIGluY2x1ZGUsIGJ1dCBhcmUgbm90IGxpbWl0ZWQgdG86CgkJPHVsPgoJCQk8bGk+RWNsaXBzZSBNb2RlbGluZyBGcmFtZXdvcmsgKEVNRikgliBBbHJlYWR5IHdpZGVseSBhZG9wdGVkLCBFTUYgaXMgYSBtb2RlbGluZyBmcmFtZXdvcmsgYW5kIGNvZGUgZ2VuZXJhdGlvbiBmYWNpbGl0eSBmb3IgYnVpbGRpbmcgdG9vbHMgYW5kIG90aGVyIGFwcGxpY2F0aW9ucyBiYXNlZCBvbiBhIHN0cnVjdHVyZWQgZGF0YSBtb2RlbC4KCQkJPGxpPkdyYXBoaWNhbCBNb2RlbGluZyBGcmFtZXdvcmsgKEdNRikgliBHTUYgcHJvdmlkZXMgdGhlIGZ1bmRhbWVudGFsIGluZnJhc3RydWN0dXJlIGFuZCBjb21wb25lbnRzIGZvciBkZXZlbG9waW5nIHZpc3VhbCBkZXNpZ24gYW5kIG1vZGVsaW5nIHN1cmZhY2VzIGluIEVjbGlwc2UuIAoJCQk8bGk+VW5pZmllZCBNb2RlbGluZyBMYW5ndWFnZSAyLjAgKFVNTDIpIJYgQmFzZWQgb24gdGhlIE9iamVjdCBNYW5hZ2VtZW50IEdyb3VwIChPTUcpIHNwZWNpZmljYXRpb24sIEVjbGlwc2UgVU1MMiBpcyBhbiBFTUYtYmFzZWQgaW1wbGVtZW50YXRpb24gb2YgdGhlIFVNTCAyLnggbWV0YW1vZGVsIGZvciB0aGUgRWNsaXBzZSBwbGF0Zm9ybS4KCQkJPGxpPkdlbmVyYXRpdmUgTW9kZWxpbmcgVG9vbHMgKEdNVCkgliBHTVQgYWltcyB0byBwcm9kdWNlIGEgc2V0IG9mIHJlc2VhcmNoIHRvb2xzIGluIHRoZSBhcmVhIG9mIG1vZGVsLWRyaXZlbiBzb2Z0d2FyZSBkZXZlbG9wbWVudC4KCQk8L3VsPgoJCTwvcD4KCQk8cD6TVGhlIEVjbGlwc2UgTW9kZWxpbmcgUHJvamVjdCB3aWxsIHByb21vdGUgd2lkZXIgYWRvcHRpb24gb2YgdGhlIEVjbGlwc2UtYmFzZWQgbW9kZWxpbmcgZnJhbWV3b3JrcyBieSAKCQlvcmdhbml6YXRpb25zIGZvY3VzZWQgb24gbW9kZWwtYmFzZWQgZGV2ZWxvcG1lbnQslCBzYWlkIE1pa2UgTWlsaW5rb3ZpY2gsIGV4ZWN1dGl2ZSBkaXJlY3RvciwgRWNsaXBzZSAKCQlGb3VuZGF0aW9uLiCTSXQgd2lsbCBhbHNvIGVuY291cmFnZSBjbG9zZXIgcmVsYXRpb25zaGlwcyB3aXRoIHN0YW5kYXJkcyBvcmdhbml6YXRpb25zLCBzdWNoIGFzIE9NRywgYnkgCgkJcHJvdmlkaW5nIG9wZW4gc291cmNlIGltcGxlbWVudGF0aW9ucyBvZiBpbXBvcnRhbnQgbW9kZWxpbmcgc3RhbmRhcmRzLpQgPC9wPgoJCTxwPpNCb3JsYW5kIGlzIHZlcnkgZXhjaXRlZCB0byBiZSBjby1sZWFkaW5nIHRoZSBFY2xpcHNlIE1vZGVsaW5nIFByb2plY3QgYW5kIGJyb2FkZW5pbmcgb3VyIGludm9sdmVtZW50IGluIAoJCXRoZSBjb21tdW5pdHkgZm9yIHRoZSB1bHRpbWF0ZSBiZW5lZml0IG9mIG91ciBjdXN0b21lcnMslCBzYWlkIFJpY2hhcmQgR3JvbmJhY2ssIEVjbGlwc2UgTW9kZWxpbmcgcHJvamVjdCAKCQljby1sZWFkZXIgYW5kIGNoaWVmIHNjaWVudGlzdCwgQm9ybGFuZCBTb2Z0d2FyZSBDb3Jwb3JhdGlvbi4gk091ciBwYXJ0aWNpcGF0aW9uIGluIHRoZSBwcm9qZWN0LCBhbmQgZnVydGhlciAKCQl1c2Ugb2YgRWNsaXBzZSBtb2RlbGluZyB0ZWNobm9sb2dpZXMgYXMgdGhlIGJhc2lzIGZvciBvdXIgY29tbWVyY2lhbCBwcm9kdWN0cywgd2lsbCBnaXZlIGN1c3RvbWVycyBhIGdyZWF0ZXIgCgkJZGVncmVlIG9mIGludGVyb3BlcmFiaWxpdHkgYW5kIHN0YW5kYXJkcyBjb21wbGlhbmNlLCBhcyB3ZWxsIGFzIGhlbHAgQm9ybGFuZCBmb2N1cyBvbiBwcm92aWRpbmcgdGhlIAoJCW5leHQtZ2VuZXJhdGlvbiBvZiBtb2RlbGluZyBwcm9kdWN0cy6UICA8L3A+CgkJPHA+k0lCTSBoYXMgYSBsb25nIGhlcml0YWdlIG9mIHN1cHBvcnQgZm9yIG1vZGVsaW5nIGFuZCBtb2RlbC1kcml2ZW4gZGV2ZWxvcG1lbnQgKE1ERCkuIFdlIHNlZSBtb2RlbC1kcml2ZW4gCgkJZGV2ZWxvcG1lbnQgdGVjaG5vbG9neSB1c2VkIGluIG1hbnkgYXJlYXMgYWNyb3NzIElCTSBwcm9kdWN0cyBhbmQgc2VydmljZXMsIGluY2x1ZGluZyBSYXRpb25hbCBTb2Z0d2FyZSAKCQlBcmNoaXRlY3QsIFN5c3RlbXMgRGV2ZWxvcGVyIGFuZCBTb2Z0d2FyZSBNb2RlbGVyLJQgc2FpZCBKb2huIEtlbGxlcm1hbiwgbWFuYWdlciwgRWNsaXBzZSBTdHJhdGVneSwgSUJNLiAKCQmTVGhlIEVjbGlwc2UgdG9wLWxldmVsIG1vZGVsaW5nIHByb2plY3Qgd2lsbCBwcm92aWRlIGEgdW5pZmllZCB2aXNpb24gYW5kIGZvY3VzIHRvIG1vZGVsaW5nIGFuZCBNREQgZWZmb3J0cyAKCQlhdCBFY2xpcHNlLCBzcHVyIGlubm92YXRpb24gYW5kIGhlbHAgZHJpdmUgYWRvcHRpb24gb2Ygb3BlbiBzdGFuZGFyZHMgYW5kIHRlY2hub2xvZ2llcyBpbiB0aGlzIGRvbWFpbi4gCgkJVGhyb3VnaCBJQk2ScyB1c2Ugb2YgdGhlc2UgdGVjaG5vbG9naWVzLCB3ZZJyZSBhYmxlIHRvIHByb3ZpZGUgdGlnaHRlciBpbnRlZ3JhdGlvbiBhY3Jvc3Mgb3VyIGNvbW1lcmNpYWwgCgkJb2ZmZXJpbmdzLCBtb3JlIHJvYnVzdCBzaGFyaW5nIG9mIGRldmVsb3BtZW50IHRpbWUgaW5mb3JtYXRpb24gYW5kIGEgYmV0dGVyIG92ZXJhbGwgdXNlciBleHBlcmllbmNlIGZvciAKCQlvdXIgY3VzdG9tZXJzLpQgIDwvcD4KCgkJPHN0cm9uZz5PcGVuIFN1cHBvcnQgZm9yIERyaXZpbmcgSW5kdXN0cnkgU3RhbmRhcmRzPC9zdHJvbmc+PGJyPgoJCTxwPlRoZSBzdWNjZXNzIG9mIEVjbGlwc2UgYW5kIGl0cyBwb3B1bGFyaXR5IHRocm91Z2hvdXQgdGhlIElUIGluZHVzdHJ5IGhhcyBoZWxwZWQgZHJpdmUgdGhlIGFkb3B0aW9uIG9mIAoJCW9wZW4gc3RhbmRhcmRzLiBGdXJ0aGVybW9yZSwgYXMgc3RhbmRhcmRzIGJvZGllcyBzdWNoIGFzIE9NRyBjb250aW51ZSB0byBmb2N1cyBvbiBtb2RlbGluZyBzcGVjaWZpY2F0aW9ucywgCgkJdGhlIEVjbGlwc2UgTW9kZWxpbmcgUHJvamVjdCB3aWxsIHN0cml2ZSB0byBmYWNpbGl0YXRlIGNvbW11bmljYXRpb24gYW5kIHN0cm9uZ2VyIHdvcmtpbmcgcmVsYXRpb25zaGlwcyAKCQl3aXRoIHN0YW5kYXJkcyBvcmdhbml6YXRpb25zLiBDdXJyZW50bHksIHRoZSBFY2xpcHNlIE1vZGVsaW5nIFByb2plY3Qgc3VwcG9ydHMgb3IgYW50aWNpcGF0ZXMgc3VwcG9ydGluZyBpbiAKCQl0aGUgZnV0dXJlIHN0YW5kYXJkcyB0aGF0IGluY2x1ZGUgdGhlIFVuaWZpZWQgTW9kZWxpbmcgTGFuZ3VhZ2UgKFVNTCkgTW9kZWwtRHJpdmVuIEFyY2hpdGVjdHVyZSAoTURBKSAKCQlyZWxhdGVkIHNwZWNpZmljYXRpb25zLCBzdWNoIGFzIFF1ZXJ5LCBWaWV3LCBUcmFuc2Zvcm1hdGlvbiAoUVZUKTsgT2JqZWN0IENvbnN0cmFpbnQgTGFuZ3VhZ2UgKE9DTCk7IE1PRiB0byAKCQlUZXh0IChNT0YyVGV4dCk7IGFuZCBYTUwgTWV0YWRhdGEgSW50ZXJjaGFuZ2UgKFhNSSkuPC9wPgoJCTxwPpNUaGUgT2JqZWN0IE1hbmFnZW1lbnQgR3JvdXAgaGFzIGJlZW4gaW52b2x2ZWQgd2l0aCBhbmQgc2VlbiB0aGUgYmVuZWZpdHMgb2YgdGhlIEVjbGlwc2UgUHJvamVjdCBmcm9tIAoJCXRoZSBiZWdpbm5pbmcuIFRoZXJlIGlzIGEgc3Ryb25nIHBvc2l0aXZlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZSBzdGFuZGFyZHMgd2UgcHJvZHVjZSBhbmQgdGhlIG9wZW4tc291cmNlIAoJCWNvbW11bml0eZJzIGRldmVsb3BtZW50IGVmZm9ydHMuIEluIGZhY3QsIGFjY2VwdGFuY2UgYW5kIHVzZSBvZiBNb2RlbC1Ecml2ZW4gQXJjaGl0ZWN0dXJlLCBvdXIgZmxhZ3NoaXAgCgkJc3RhbmRhcmQsIGhhcyBiZWVuIHNwdXJyZWQgb24gYnkgY29udHJpYnV0aW9ucyBvZiB0aGUgb3BlbiBzb3VyY2UgY29tbXVuaXR5LJQgc2FpZCBEci4gUmljaGFyZCBTb2xleSwgCgkJY2hhaXJtYW4gYW5kIENFTyBhdCBPTUcuIJNXZSBhcmUgZGVsaWdodGVkIHRvIHNlZSB0aGVzZSBpbXBvcnRhbnQgc3BlY2lmaWNhdGlvbnMgbW92aW5nIGZyb20gd3JpdHRlbiAKCQlzdGFuZGFyZHMgdG8gb3BlbiBzb3VyY2UgaW1wbGVtZW50YXRpb25zLCBwcm92aWRpbmcgcmVhbCBzb2x1dGlvbnMgdG8gcmVhbCwgY29tcGxleCBwcm9ibGVtcyB0aGF0IGV4aXN0IAoJCXRvZGF5LpQ8L3A+CgoJCTxzdHJvbmc+SW5kdXN0cnkgU3VwcG9ydHMgTmV3IE1vZGVsaW5nIEZyYW1ld29yayBUb3AtTGV2ZWwgUHJvamVjdDwvc3Ryb25nPgoJCTxwPpNDb21wdXdhcmUsIGEgc3RyYXRlZ2ljIG1lbWJlciBvZiB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uIGFuZCBsZWFkZXIgd2l0aGluIHRoZSBPTUcsIGlzIGV4Y2l0ZWQgdGhhdCAKCQltb2RlbGluZyBpcyBiZWluZyBnaXZlbiB0aGUgcHJvbWluZW5jZSBvZiBhIHRvcC1sZXZlbCBFY2xpcHNlIHByb2plY3QslCBzYWlkIFBhdWwgQ3phcm5paywgdmljZSBwcmVzaWRlbnQgCgkJb2YgQXJjaGl0ZWN0dXJlLCBDb21wdXdhcmUuIJNNb2RlbGluZyBoZWxwcyBDb21wdXdhcmUgY3VzdG9tZXJzIHJlZHVjZSB0aGUgdGltZSBhbmQgY29zdCB0byBkZWxpdmVyIAoJCWVudGVycHJpc2UgYXBwbGljYXRpb25zLCBhbmQgd2UgcGxhbiB0byBiZSBhIGNvbnRyaWJ1dG9yIHRvIGFuZCBhZG9wdGVyIG9mIG1vZGVsaW5nIHdpdGhpbiBFY2xpcHNlLpQ8L3A+CgkJPHA+k0lMT0cgaXMgY29tbWl0dGVkIHRvIHRoZSBuZXcgRWNsaXBzZSBNb2RlbGluZyBQcm9qZWN0LCBzaW5jZSB3ZSBiZWxpZXZlIGl0IHdpbGwgbWVhbiBhIG1vcmUgc2VhbWxlc3MgCgkJY29ubmVjdGlvbiBiZXR3ZWVuIG91ciBJTE9HIEpSdWxlcyA2IEJ1c2luZXNzIFJ1bGUgTWFuYWdlbWVudCBTeXN0ZW0gKEJSTVMpIGFuZCBvdGhlciBjb21wbGVtZW50YXJ5IAoJCXByb2R1Y3RzLCByZXN1bHRpbmcgaW4gaGlnaGVyIHByb2R1Y3Rpdml0eSBmb3Igb3VyIGN1c3RvbWVycyyUIHNhaWQgSm9lbCBDaGV1b3VhLCBCUk1TIEFyY2hpdGVjdC4gk0luIG91ciAKCQlsYXRlc3QgcmVsZWFzZSwgd2WScmUgdXNpbmcgRU1GIGluIGJvdGggb3VyIEVjbGlwc2UtYmFzZWQgYW5kIG91ciBXZWItYmFzZWQgdG9vbHMgYW5kIHJlcG9zaXRvcmllcyB0byAKCQlkZWZpbmUgaG93IHJ1bGUgbW9kZWwgYXJ0aWZhY3RzIGFyZSBtYW5hZ2VkLiBXZSBmaW5kIGl0IHRvIGJlIGFuIGlkZWFsIHdheSB0byBoYW5kbGUgdGhlIGV4dGVuc2liaWxpdHkgYW5kIAoJCXRoZSBwZXJzaXN0ZW5jZSByZXF1aXJlZCBmb3Igb3VyIGRhdGEulDwvcD4KIAoJCTxwPpNUaGUgRWNsaXBzZSBNb2RlbGluZyBQcm9qZWN0IG1lYW5zIHRoYXQgZGV2ZWxvcGVycyB3aWxsIG5vdyBoYXZlIG1vcmUgb3B0aW9ucyB3aGVuIGNob29zaW5nIGEgbW9kZWxpbmcgCgkJbWV0aG9kb2xvZ3kgdG8gc2ltcGxpZnkgYW5kIHN0cmVhbWxpbmUgdGhlaXIgZGV2ZWxvcG1lbnQgZWZmb3J0cyyUIHNhaWQgRGVubmlzIExldW5nLCB2aWNlIHByZXNpZGVudCwgCgkJT3JhY2xlIEZ1c2lvbiBNaWRkbGV3YXJlIERldmVsb3BtZW50IGF0IE9yYWNsZS4gk09yYWNsZSBpcyBhbHJlYWR5IHdvcmtpbmcgd2l0aCBpdHMgcGFydG5lcnMgYW5kIGN1c3RvbWVycyAKCQl0byBkZWxpdmVyIFRvcExpbmsgc3VwcG9ydCBmb3IgcGVyc2lzdGluZyBFTUYgbW9kZWxzIGludG8gYSByZWxhdGlvbmFsIGRhdGFiYXNlLiBUaGlzIHByb2plY3Qgd2lsbCBoZWxwIAoJCWVuc3VyZSBUb3BMaW5rIGludGVyb3BlcmFiaWxpdHkgd2l0aCBvdGhlciBtb2RlbGluZyB0ZWNobm9sb2dpZXMulDwvcD4KCgoJCTxwPk1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIEVjbGlwc2UgTW9kZWxpbmcgUHJvamVjdCBjYW4gYmUgZm91bmQgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9tb2RlbGluZyI+d3d3LmVjbGlwc2Uub3JnL21vZGVsaW5nPC9hPi48L3A+IAoKCQk8cD48c3Ryb25nPkFib3V0IHRoZSBFY2xpcHNlIEZvdW5kYXRpb248L3N0cm9uZz48YnIgLz4KCQlFY2xpcHNlIGlzIGFuIG9wZW4gc291cmNlIGNvbW11bml0eSB3aG9zZSBwcm9qZWN0cyBhcmUgZm9jdXNlZCBvbiBwcm92aWRpbmcgYW4gZXh0ZW5zaWJsZSBkZXZlbG9wbWVudCBwbGF0Zm9ybSBhbmQgYXBwbGljYXRpb24gZnJhbWV3b3JrcyBmb3IgYnVpbGRpbmcgc29mdHdhcmUuIEVjbGlwc2UgcHJvdmlkZXMgZXh0ZW5zaWJsZSB0b29scyBhbmQgZnJhbWV3b3JrcyB0aGF0IHNwYW4gdGhlIHNvZnR3YXJlIGRldmVsb3BtZW50IGxpZmVjeWNsZSwgaW5jbHVkaW5nIHN1cHBvcnQgZm9yIG1vZGVsaW5nLCBsYW5ndWFnZSBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMgZm9yIEphdmEsIEMvQysrIGFuZCBvdGhlcnMsIHRlc3RpbmcgYW5kIHBlcmZvcm1hbmNlLCBidXNpbmVzcyBpbnRlbGxpZ2VuY2UsIHJpY2ggY2xpZW50IGFwcGxpY2F0aW9ucyBhbmQgZW1iZWRkZWQgZGV2ZWxvcG1lbnQuIEEgbGFyZ2UsIHZpYnJhbnQgZWNvc3lzdGVtIG9mIG1ham9yIHRlY2hub2xvZ3kgdmVuZG9ycywgaW5ub3ZhdGl2ZSBzdGFydC11cHMsIHVuaXZlcnNpdGllcyBhbmQgcmVzZWFyY2ggaW5zdGl0dXRpb25zIGFuZCBpbmRpdmlkdWFscyBleHRlbmQsIGNvbXBsZW1lbnQgYW5kIHN1cHBvcnQgdGhlIEVjbGlwc2UgUGxhdGZvcm0uPC9wPgoJCTxwPlRoZSBFY2xpcHNlIEZvdW5kYXRpb24gaXMgYSBub3QtZm9yLXByb2ZpdCwgbWVtYmVyIHN1cHBvcnRlZCBjb3Jwb3JhdGlvbiB0aGF0IGhvc3RzIHRoZSBFY2xpcHNlIHByb2plY3RzLiBGdWxsIGRldGFpbHMgb2YgRWNsaXBzZSBhbmQgdGhlIEVjbGlwc2UgRm91bmRhdGlvbiBhcmUgYXZhaWxhYmxlIGF0IDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmciPnd3dy5lY2xpcHNlLm9yZzwvYT4uPC9wPgoJCTxiciAvPgoJCTxjZW50ZXI+IyAjICM8L2NlbnRlcj4gCgkJPGJyIC8+CgkJQWxsIGNvbXBhbnkvcHJvZHVjdCBuYW1lcyBhbmQgc2VydmljZSBtYXJrcyBtYXkgYmUgdHJhZGVtYXJrcyBvciByZWdpc3RlcmVkIHRyYWRlbWFya3Mgb2YgdGhlaXIgcmVzcGVjdGl2ZSBjb21wYW5pZXMuCgkJPGJyIC8+PGJyIC8+PHN0cm9uZz5QcmVzcyBDb250YWN0PC9zdHJvbmc+PGJyPgkKCQlDaGFudGFsIFlhbmcvTGF1cmEgQWNrZXJtYW48YnI+CgkJU2Nod2FydHogQ29tbXVuaWNhdGlvbnM8YnI+CgkJNzgxLTY4NC0wNzcwPGJyPgoJCWVjbGlwc2VAc2Nod2FydHotcHIuY29tIDxicj4KCQk8YnI+CgkJPGJyPgoKCQk8L3A+CgkJCQkJCQkKCTwvZGl2PgoKCQkKPC9kaXY+CgoKRU9IVE1MOwoKCgkjIEdlbmVyYXRlIHRoZSB3ZWIgcGFnZQoJJEFwcC0+Z2VuZXJhdGVQYWdlKCR0aGVtZSwgJE1lbnUsICROYXYsICRwYWdlQXV0aG9yLCAkcGFnZUtleXdvcmRzLCAkcGFnZVRpdGxlLCAkaHRtbCk7Cj8+Cgo=