PD9waHAgIAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCXJlcXVpcmVfb25jZSgkX1NFUlZFUlsnRE9DVU1FTlRfUk9PVCddIC4gIi9lY2xpcHNlLm9yZy1jb21tb24vc3lzdGVtL2FwcC5jbGFzcy5waHAiKTsJcmVxdWlyZV9vbmNlKCRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10gLiAiL2VjbGlwc2Uub3JnLWNvbW1vbi9zeXN0ZW0vbmF2LmNsYXNzLnBocCIpOyAJcmVxdWlyZV9vbmNlKCRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10gLiAiL2VjbGlwc2Uub3JnLWNvbW1vbi9zeXN0ZW0vbWVudS5jbGFzcy5waHAiKTsgCSRBcHAgCT0gbmV3IEFwcCgpOwkkTmF2CT0gbmV3IE5hdigpOwkkTWVudSAJPSBuZXcgTWVudSgpOwkJaW5jbHVkZSgiX3Byb2plY3RDb21tb24ucGhwIik7ICAgICMgQWxsIG9uIHRoZSBzYW1lIGxpbmUgdG8gdW5jbHV0dGVyIHRoZSB1c2VyJ3MgZGVza3RvcCcKCgkKCSMKCSMgQmVnaW46IHBhZ2Utc3BlY2lmaWMgc2V0dGluZ3MuICBDaGFuZ2UgdGhlc2UuIAoJJHBhZ2VUaXRsZSAJCT0gIkVjbGlwc2VDb24gMjAwOCBBdHRyYWN0cyBFbGV2ZW4gSW5kdXN0cnktTGVhZGluZyBDb21wYW5pZXMgYXMgR29sZCBTcG9uc29ycyI7CgkkcGFnZUtleXdvcmRzCT0gIkVjbGlwc2Vjb24sIDIwMDgsIGdvbGQsIHNwb25zb3IiOwoJJHBhZ2VBdXRob3IJCT0gIklhbiBTa2VycmV0dCI7CgkKCSMgQWRkIHBhZ2Utc3BlY2lmaWMgTmF2IGJhcnMgaGVyZQoJIyBGb3JtYXQgaXMgTGluayB0ZXh0LCBsaW5rIFVSTCAoY2FuIGJlIGh0dHA6Ly93d3cuc29tZW90aGVyc2l0ZS5jb20vKSwgdGFyZ2V0IChfc2VsZiwgX2JsYW5rKQoJIyAkTmF2LT5hZGRDdXN0b21OYXYoIk15IExpbmsiLCAibXlwYWdlLnBocCIsICJfc2VsZiIpOwoJIyAkTmF2LT5hZGRDdXN0b21OYXYoIkdvb2dsZSIsICJodHRwOi8vd3d3Lmdvb2dsZS5jb20vIiwgIl9ibGFuayIpOwoKCSMgRW5kOiBwYWdlLXNwZWNpZmljIHNldHRpbmdzCgkjCgkKCSMgUGFzdGUgeW91ciBIVE1MIGNvbnRlbnQgYmV0d2VlbiB0aGUgRU9IVE1MIG1hcmtlcnMhCQoJJGh0bWwgPSA8PDxFT0hUTUwKCQk8c3R5bGU+CgkJLnBhZGRlZGxpc3QgbGkgewlwYWRkaW5nLWJvdHRvbTo3cHg7CX0KCTwvc3R5bGU+CjxkaXYgaWQ9Im1haW5jb250ZW50Ij4KCTxkaXYgaWQ9Im1pZGNvbHVtbiI+CgkJPGgyPlByZXNzIFJlbGVhc2U8L2gyPgoJCTxjZW50ZXI+CgkJPGgxPiRwYWdlVGl0bGU8L2gxPgoJCTxwPjxpPkFNRCBBbm5vdW5jZWQgYXMgSGFyZHdhcmUgc3BvbnNvcjsgQmxhY2tCZXJyeSBEZXZlbG9wZXIgRGF5IGFuZCBKYXp6IERldmVsb3BlciBEYXkgYWRkZWQgdG8gY29uZmVyZW5jZSBwcm9ncmFtPC9pPjwvcD48L2NlbnRlcj4KCQk8cD48c3Ryb25nPk9UVEFXQSAtIEphbnVhcnkgMjIsIDIwMDggLSA8L3N0cm9uZz5UaGUgRWNsaXBzZSBGb3VuZGF0aW9uIHRvZGF5IGFubm91bmNlZCB0aGUgc3VwcG9ydCBvZiBlbGV2ZW4gaW5kdXN0cnktbGVhZGluZyBjb21wYW5pZXMgYXMgR29sZCBTcG9uc29ycyBmb3IgRWNsaXBzZUNvbiAyMDA4LCB0aGUgYW5udWFsIGNvbmZlcmVuY2Ugb2YgdGhlIEVjbGlwc2UgY29tbXVuaXR5LgoJCTwvcD4KCQk8cD5UaGUgR29sZCBTcG9uc29ycyAtLSBBY3R1YXRlLCBBTUQsIEJFQSwgQ2xvdWRzbWl0aCwgSUJNLCBPcmFjbGUsIFJlcGxheSBTb2x1dGlvbnMsIFJlc2VhcmNoIEluIE1vdGlvbiAoUklNKSwgU2t5d2F5IFNvZnR3YXJlLCBTT1BFUkEgYW5kIFdpbmQgUml2ZXIgLS0gd2lsbCBqb2luIGFuIGltcHJlc3NpdmUgbGlzdCBvZiBrZXlub3RlIHNwZWFrZXJzIGFuZCBwcmVzZW50ZXJzIGZvciB0aGUgZmlmdGggYW5udWFsIGNvbmZlcmVuY2UgdG8gYmUgaGVsZCBNYXJjaCAxNy0yMCwgMjAwOCwgaW4gU2FudGEgQ2xhcmEsIENBLjwvcD4KCQkKCQk8cD4iV2UgYXJlIGRlbGlnaHRlZCB0byBoYXZlIHRoZXNlIGVsZXZlbiBjb21wYW5pZXMgZXhwcmVzcyB0aGVpciBzdXBwb3J0IG9mIEVjbGlwc2VDb24sIGFuIGV2ZW50IHRoYXQncyBlc3NlbnRpYWwgdG8gdGhlIEVjbGlwc2UgY29tbXVuaXR5J3MgY29sbGFib3JhdGl2ZSBlbnZpcm9ubWVudCyUIHNhaWQgTWlrZSBNaWxpbmtvdmljaCwgZXhlY3V0aXZlIGRpcmVjdG9yIG9mIHRoZSBFY2xpcHNlIEZvdW5kYXRpb24uIJNUaGUgc3VwcG9ydCBvZiB0aGVzZSBwcmVtaWVyIHNwb25zb3JzIGhlbHBzIG1ha2UgRWNsaXBzZUNvbiBhbiBleHRyYW9yZGluYXJ5IGV2ZW50IHllYXIgYWZ0ZXIgeWVhciIuIDwvcD4KCgkJPHA+SW4gYWRkaXRpb24gdG8gdGhlIEdvbGQgc3BvbnNvcnMsIHRocmVlIG90aGVyIHByZW1pZXIgc3BvbnNvcnMgaGF2ZSBiZWVuIGFubm91bmNlZDo8L2JyPgoJCQk8dWwgY2xhc3M9InBhZGRlZGxpc3QiPgoJCQkJPGxpPkFNRCBoYXMgYWdyZWVkIHRvIGJlIHRoZSBoYXJkd2FyZSBzcG9uc29yIG9mIHRoZSBjb25mZXJlbmNlLiAgIEFNRCB3aWxsIGNvbnRyaWJ1dGUgc2V2ZXJhbCBRdWFkLUNvcmUgQU1EIE9wdGVyb26ZIHByb2Nlc3NvcnMgdG8gcG93ZXIgdGhlIEVjbGlwc2UgRm91bmRhdGlvbiB3ZWIgaW5mcmFzdHJ1Y3R1cmUsIGluY2x1ZGluZyB0aGUgRWNsaXBzZUNvbiBkb3dubG9hZCBzZXJ2ZXIuICA8L2xpPgoJCQkJPGxpPlJlc2VhcmNoIEluIE1vdGlvbiBoYXMgYWdyZWVkIHRvIHNwb25zb3IgYSBCbGFja0JlcnJ5riBEZXZlbG9wZXIgRGF5IGR1cmluZyB0aGUgY29uZmVyZW5jZS4gICBDb25mZXJlbmNlIGF0dGVuZGVlcyB3aWxsIGJlIGFibGUgdG8gYXR0ZW5kIGluLWRlcHRoIHRlY2huaWNhbCBzZXNzaW9uIGFib3V0IHRoZSBCbGFja0JlcnJ5IGRldmVsb3BtZW50IHBsYXRmb3JtLjwvbGk+CgkJCQk8bGk+SUJNIGlzIHNwb25zb3JpbmcgYSBEZXZlbG9wZXIgRGF5IGR1cmluZyBFY2xpcHNlQ29uLiBBdHRlbmRlZXMgd2lsbCBiZSBhYmxlIHRvIGF0dGVuZCB0ZWNobmljYWwgc2Vzc2lvbnMgYWJvdXQgSUJNJ3MgRWNsaXBzZS1iYXNlZCBKYXp6IHRlYW0gcGxhdGZvcm0gYW5kIHByb2R1Y3RzIHN1Y2ggYXMgUmF0aW9uYWwgVGVhbSBDb25jZXJ0IEV4cHJlc3MuPC9saT4KCQkJPC91bD4KCQk8L3A+CgkJPHA+CgkJRWNsaXBzZUNvbiAyMDA4IHdpbGwgZmVhdHVyZSBvdmVyIDM1MCB0dXRvcmlhbHMgYW5kIHByZXNlbnRhdGlvbnMgY292ZXJpbmcgYWxsIGFzcGVjdHMgb2YgRWNsaXBzZSB0ZWNobm9sb2d5LiBGb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcHJvZ3JhbSwgcGxlYXNlIHZpc2l0IDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZWNvbi5vcmciPnd3dy5lY2xpcHNlY29uLm9yZy48L2E+PC9wPgoJCTxwPjxiPlJlZ2lzdHJhdGlvbiBJbmZvcm1hdGlvbjwvYj4KCQk8YnIvPjxici8+UmVnaXN0cmF0aW9uIGZvciBFY2xpcHNlQ29uIDIwMDggaXMgbm93IG9wZW4uIE1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGNvbmZlcmVuY2UsIGluY2x1ZGluZyByZWdpc3RyYXRpb24sIHRyYXZlbCBhbmQgaG90ZWwgZGV0YWlscywgY2FuIGJlIGZvdW5kIGF0IDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZWNvbi5vcmciPnd3dy5lY2xpcHNlY29uLm9yZy48L2E+CgkJCgkJPHA+PHN0cm9uZz5BYm91dCB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uPC9zdHJvbmc+PGJyIC8+CgkJRWNsaXBzZSBpcyBhbiBvcGVuIHNvdXJjZSBjb21tdW5pdHkgd2hvc2UgcHJvamVjdHMgYXJlIGZvY3VzZWQgb24gcHJvdmlkaW5nIGFuIGV4dGVuc2libGUgZGV2ZWxvcG1lbnQgcGxhdGZvcm0gYW5kIGFwcGxpY2F0aW9uIGZyYW1ld29ya3MgZm9yIGJ1aWxkaW5nIHNvZnR3YXJlLiBFY2xpcHNlIHByb3ZpZGVzIGV4dGVuc2libGUgdG9vbHMgYW5kIGZyYW1ld29ya3MgdGhhdCBzcGFuIHRoZSBzb2Z0d2FyZSBkZXZlbG9wbWVudCBsaWZlY3ljbGUsIGluY2x1ZGluZyBzdXBwb3J0IGZvciBtb2RlbGluZywgbGFuZ3VhZ2UgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnRzIGZvciBKYXZhLCBDL0MrKyBhbmQgb3RoZXJzLCB0ZXN0aW5nIGFuZCBwZXJmb3JtYW5jZSwgYnVzaW5lc3MgaW50ZWxsaWdlbmNlLCByaWNoIGNsaWVudCBhcHBsaWNhdGlvbnMgYW5kIGVtYmVkZGVkIGRldmVsb3BtZW50LiBBIGxhcmdlLCB2aWJyYW50IGVjb3N5c3RlbSBvZiBtYWpvciB0ZWNobm9sb2d5IHZlbmRvcnMsIGlubm92YXRpdmUgc3RhcnQtdXBzLCB1bml2ZXJzaXRpZXMgYW5kIHJlc2VhcmNoIGluc3RpdHV0aW9ucyBhbmQgaW5kaXZpZHVhbHMgZXh0ZW5kLCBjb21wbGVtZW50IGFuZCBzdXBwb3J0IHRoZSBFY2xpcHNlIFBsYXRmb3JtLjwvcD4KCQk8cD5UaGUgRWNsaXBzZSBGb3VuZGF0aW9uIGlzIGEgbm90LWZvci1wcm9maXQsIG1lbWJlciBzdXBwb3J0ZWQgY29ycG9yYXRpb24gdGhhdCBob3N0cyB0aGUgRWNsaXBzZSBwcm9qZWN0cy4gRnVsbCBkZXRhaWxzIG9mIEVjbGlwc2UgYW5kIHRoZSBFY2xpcHNlIEZvdW5kYXRpb24gYXJlIGF2YWlsYWJsZSBhdCA8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnIj53d3cuZWNsaXBzZS5vcmc8L2E+LjwvcD4KCQkKCQk8cD48Y2VudGVyPjxpPkFsbCBjb21wYW55L3Byb2R1Y3QgbmFtZXMgYW5kIHNlcnZpY2UgbWFya3MgbWF5IGJlIHRyYWRlbWFya3Mgb3IgcmVnaXN0ZXJlZCB0cmFkZW1hcmtzIG9mIHRoZWlyIHJlc3BlY3RpdmUgY29tcGFuaWVzLjwvaT48L2NlbnRlcj48L3A+CgkJCgkJPGJyIC8+PGJyIC8+PHN0cm9uZz5QcmVzcyBDb250YWN0PC9zdHJvbmc+PGJyPgkKCQlTdGV2ZSBFaXNlbnN0YWR0PGJyLz4KCQlQYWdlIE9uZSBQdWJsaWMgUmVsYXRpb25zPGJyLz4KCQk5MTktNzgxLTgwOTY8YnIvPgoJCXN0ZXZlQHBhZ2VvbmVwci5jb208YnIvPgoJCTxiciAvPgoJCQoJCTxjZW50ZXI+IyAjICM8L2NlbnRlcj4gCgkJPGJyIC8+CgkJPGJyPgoJCQk8YnI+Cgk8L2Rpdj4KCjwvZGl2PgoKCgkJCgpFT0hUTUw7CgoKCSRodG1sID0gbWJfY29udmVydF9lbmNvZGluZygkaHRtbCwgIkhUTUwtRU5USVRJRVMiLCAiYXV0byIpOwoJIyBHZW5lcmF0ZSB0aGUgd2ViIHBhZ2UKCSRBcHAtPmdlbmVyYXRlUGFnZSgkdGhlbWUsICRNZW51LCAkTmF2LCAkcGFnZUF1dGhvciwgJHBhZ2VLZXl3b3JkcywgJHBhZ2VUaXRsZSwgJGh0bWwpOwo/PgoK