PD9waHAgIAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCXJlcXVpcmVfb25jZSgkX1NFUlZFUlsnRE9DVU1FTlRfUk9PVCddIC4gIi9lY2xpcHNlLm9yZy1jb21tb24vc3lzdGVtL2FwcC5jbGFzcy5waHAiKTsJcmVxdWlyZV9vbmNlKCRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10gLiAiL2VjbGlwc2Uub3JnLWNvbW1vbi9zeXN0ZW0vbmF2LmNsYXNzLnBocCIpOyAJcmVxdWlyZV9vbmNlKCRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10gLiAiL2VjbGlwc2Uub3JnLWNvbW1vbi9zeXN0ZW0vbWVudS5jbGFzcy5waHAiKTsgCSRBcHAgCT0gbmV3IEFwcCgpOwkkTmF2CT0gbmV3IE5hdigpOwkkTWVudSAJPSBuZXcgTWVudSgpOwkJaW5jbHVkZSgkQXBwLT5nZXRQcm9qZWN0Q29tbW9uKCkpOyAgICAjIEFsbCBvbiB0aGUgc2FtZSBsaW5lIHRvIHVuY2x1dHRlciB0aGUgdXNlcidzIGRlc2t0b3AnDQoNCiRwYWdlVGl0bGUgCQk9ICJQRFQgSW5jdWJhdG9yIFByb3Bvc2FsIjsNCiRwYWdlS2V5d29yZHMJPSAiZWNsaXBzZSBwZHQgaW5jdWJhdG9yIHByb3Bvc2FsIjsNCiRwYWdlQXV0aG9yCQk9ICJSb3kgR2Fub3IsIEVjbGlwc2UgUERUIENvbW11bml0eSI7DQoNCm9iX3N0YXJ0KCk7DQo/Pg0KICAgIDxkaXYgaWQ9Im1haW5jb250ZW50Ij4NCgk8ZGl2IGlkPSJtaWRjb2x1bW4iPg0KDQo8P3BocA0KaW5jbHVkZV9vbmNlKCRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10gLiAiL3Byb2plY3RzL2ZyYWdtZW50cy9wcm9wb3NhbC1wYWdlLWhlYWRlci5waHAiKTsNCmdlbmVyYXRlX2hlYWRlcigiUEhQIERldmVsb3BtZW50IFRvb2xzIEluY3ViYXRvciIpOw0KPz4KDQo8aDE+UERUIEluY3ViYXRvciBQcm9qZWN0PC9oMT4NCjxwPgpUaGUgUERUIEluY3ViYXRvciBpcyBhIHByb3Bvc2VkIG9wZW4gc291cmNlIHByb2plY3QgdW5kZXIgdGhlIFBIUCBEZXZlbG9wbWVudCBUb29scyAoUERUKSBQcm9qZWN0LiBUaGlzIApwcm9wb3NhbCBpcyBpbiB0aGUgUHJvamVjdCBQcm9wb3NhbCBQaGFzZSAoYXMgZGVmaW5lZCBpbiB0aGUgRWNsaXBzZSAKRGV2ZWxvcG1lbnQgUHJvY2VzcyBkb2N1bWVudCkgYW5kIGlzIHdyaXR0ZW4gdG8gZGVjbGFyZSBpdHMgaW50ZW50IGFuZCAKc2NvcGUuIFRoaXMgcHJvcG9zYWwgaXMgd3JpdHRlbiB0byBzb2xpY2l0IGFkZGl0aW9uYWwgcGFydGljaXBhdGlvbiBhbmQgCmlucHV0IGZyb20gdGhlIEVjbGlwc2UgY29tbXVuaXR5LiBZb3UgYXJlIGludml0ZWQgdG8gY29tbWVudCBvbiBhbmQvb3IgCmpvaW4gdGhlIHByb2plY3QuIFBsZWFzZSBzZW5kIGFsbCBmZWVkYmFjayB0byAKdGhlIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbmV3c3BvcnRhbC90aHJlYWQucGhwP2dyb3VwPWVjbGlwc2UudG9vbHMucGR0IG5ld3Nncm91cC4NCg0KPGgyPkJhY2tncm91bmQ8L2gyPg0KVGhlIGdvYWwgb2YgdGhlIFBEVCBJbmN1YmF0b3IgcHJvamVjdCBpcyB0byBleHBlcmltZW50IHdpdGggYWx0ZXJuYXRpdmUgaWRlYXMgYW5kIHRlY2hub2xvZ2llcyBmb3IgZW5oYW5jaW5nIGFuZCBjb21wbGVtZW50aW5nIFBEVC4gRm9yIGV4YW1wbGUsIHRoZSBhZGRpdGlvbiBvZiBTbWFydHkgc291cmNlIGVkaXRpbmcsIEFzcGVjdCBvcmllbnRlZCBwcm9ncmFtbWluZyBQRFQsIGFyZSBwb3NzaWJsZSBhcmVhcyBvZiBpbnZlc3RpZ2F0aW9uIGZvciB0aGUgUERUIEluY3ViYXRvci4gSW4gYWRkaXRpb24gdG8gdGhpcywgdGhlIEluY3ViYXRvciBpcyBhbHNvIGludGVuZGVkIHRvIHNlcnZlIGFzIGEgZm9ydW0gZm9yIGludGVyZXN0ZWQgdGhpcmQgcGFydGllcyBhbmQgYSBwbGFjZSBmb3IgdGhlIGRldmVsb3BtZW50IG9mIGFkZGl0aW9uYWwgY29tcG9uZW50cyBhbmQgdG9vbHMgZm9yIFBEVCBvdXRzaWRlIG9mIHRoZSByZXN0cmljdGlvbnMgb2YgdGhlIFBEVCBwcm9qZWN0IGl0c2VsZi4gVGhpcyBpbmNsdWRlcyB0aGUgZGV2ZWxvcG1lbnQgb2YgYWRkaXRpb25hbCBzb3VyY2UgZWRpdGluZyBpbXByb3ZlbWVudHMgYW5kIG90aGVyIGNvbXBvbmVudHMgaW1wcm92ZW1lbnRzLiBJbmN1YmF0b3IgY29tcG9uZW50cyBhcmUgaW50ZW5kZWQgdG8gc3RheSBpbiB0aGUgSW5jdWJhdG9yIHVudGlsIHRoZXkgYXJlIG1hdHVyZSBlbm91Z2ggdG8gYmUgaW50ZWdyYXRlZCBpbnRvIHRoZSBtYWluIGRldmVsb3BtZW50IHN0cmVhbS4gV2UgaW50ZW5kIHRvIHVzZSB0aGUgQXRoZW5hIGJ1aWxkIHN5c3RlbSBmb3IgdGhpcyBwcm9qZWN0Lg0KDQo8aDI+SW5pdGlhbCBXb3JrIEFyZWFzPC9oMj4NCg0KPGgzPkFQRFQgliBBc3BlY3QgUERUPC9oMz4NClRoZSBBc3BlY3QgUEhQIERldmVsb3BtZW50IFRvb2xzIChBUERUKSBbMV0gcHJvamVjdCBwcm92aWRlcyBFY2xpcHNlIHBsYXRmb3JtIGJhc2VkIHRvb2wgc3VwcG9ydCBmb3IgQU9TRCB3aXRoIFBIUC4gSXQgaGFzIGJlZW4gZGV2ZWxvcGVkIGJ5IFdpbGxpYW0gQ2FuZGlsbG9uIGR1cmluZyB0aGUgR29vZ2xlIFN1bW1lciBvZiBDb2RlIDIwMDggWzJdIGFuZCBtZW50b3JlZCBieSBNaWNoYWVsIFNwZWN0b3IuDQoNCjxoMz5TbWFydHlQRFQ8L2gzPg0KVGhlIFNtYXJ0eVBEVCBbM10gRWRpdG9yIGFkZHMgYSBTbWFydHkgc3VwcG9ydCBmb3IgUERULiBTbWFydHkgaXMgYSB0ZW1wbGF0ZSBlbmdpbmUgZm9yIFBIUCwgdGhpcyBwcm9qZWN0IGVuYWJsZXMgdXNlcnMgdG8gZGV2ZWxvcCBTbWFydHkgcHJvamVjdHMgdXRpbGl6aW5nIHRoZSBwb3dlciBvZiBQRFQgZGV2ZWxvcG1lbnQgdG9vbC4gSXQgaGFzIGJlZW4gZGV2ZWxvcGVkIGJ5IFdpbGxpYW0gQ2FuZGlsbG9uIGFuZCBSb3kgR2Fub3IuDQoNCjxoMz5BU1QgVmlldzwvaDM+DQpBIHZpZXcgdG8gdmlzdWFsaXplIHRoZSBBU1QgKGFic3RyYWN0IHN5bnRheCB0cmVlKSBvZiBhIFBIUCBmaWxlIG9wZW5lZCBpbiB0aGUgZWRpdG9yLiBOYXZpZ2F0ZSBmcm9tIHRleHQgc2VsZWN0aW9uIHRvIEFTVCBub2RlcyBhbmQgZnJvbSBub2RlcyB0byBzZWxlY3Rpb25zLCBhbHNvIHRvIHNob3cgYmluZGluZyBpbmZvcm1hdGlvbiBwcm92aWRlZC4NCg0KPGgyPk91dCBvZiBTY29wZTwvaDI+DQpXb3JrIGluIHRoZSBQRFQgSW5jdWJhdG9yIHdpbGwgYmUgY29uc3RyYWluZWQgdG8gb25seSB0aG9zZSBlZmZvcnRzIHRoYXQgd2UgZXhwZWN0IHRvIGdyYWR1YXRlIChpLmUuIHRoZSBjb2RlIHdpbGwgZXZlbnR1YWxseSBiZWNvbWUgcGFydCBvZiBQRFQpLiBJdCBpcyBub3QgYSBwbGF5Z3JvdW5kIGZvciBhcmJpdHJhcnkgZGV2ZWxvcG1lbnQgZWZmb3J0cy4gSW4gYWRkaXRpb24sIHdlIHNob3VsZCBlbnN1cmUgdGhhdCBpbnZlc3RtZW50IGluIHRoZSBpbmN1YmF0b3IgbmV2ZXIgbGVhdmVzIHRoZSBjb21tdW5pdHkgd2l0aCB0aGUgcGVyY2VwdGlvbiB0aGF0IGl0IGlzIGNvbWluZyBhdCB0aGUgY29zdCBvZiBpbXBvcnRhbnQgd29yayBvbiB0aGUgUERUIHByb2plY3QuDQoNCjxoMj5NZW50b3JzPC9oMj4KVEJEDQoNCjxoMj5Jbml0aWFsIENvbW1pdHRlcnM8L2gyPg0KPHVsPg0KICA8bGk+IFdpbGxpYW0gQ2FuZGlsbG9uIC0gRW5naW5lZXJpbmcgc3R1ZGVudCBhdCBUZWxlY29tIExpbGxlIDEsIGlzIHRoZSBjcmVhdG9yIHRoZSBBc3BlY3QgUEhQIERldmVsb3BtZW50IFRvb2xzIChBUERUKSBwcm9qZWN0IHRoYXQgcHJvdmlkZXMgRWNsaXBzZSBwbGF0Zm9ybSBiYXNlZCB0b29sIHN1cHBvcnQgZm9yIEFPU0Qgd2l0aCBQSFAuIDwvbGk+DQogIDxsaT4gWmhvbmd3ZWkgWmhhbyCWIGhhcyBhbiBleHBlcmllbmNlIHdpdGggSjJFRSBkZXZlbG9wbWVudCwgYXMgd2VsbCBhcyBFY2xpcHNlIHBsdWdpbiBkZXZlbG9wbWVudCB3aXRoIEVNRiAoZm9yIGN1c3RvbSBlbWYgZWRpdG9yKSwgR0VGIGFuZCBHTUYgKGN1c3RvbSB0aGUgY29kZSBnZW5lcmF0ZWQgYnkgR01GKSAsIEVuY2Fwc3VsYXRlIEpEVCBkZWJ1ZyB3aXRoIHRoZSBHTUYgcHJlc2VudGF0aW9uLiAgSGFzIGNvbnRyaWJ1dGVkIHRvIEVjbGlwc2UgUERUIGluIHR3byBtYWluIGFyZWFzIDAgZWRpdG9yIHNlbWFudGljIGhpZ2hsaWdodGluZyBhbmQgUEhBUiBzdXBwb3J0IDwvbGk+DQogIDxsaT4gUm95IEdhbm9yIC0gQ3VycmVudCBFY2xpcHNlIFBEVCBkZXZlbG9wZXI8L2xpPg0KICA8bGk+IE1pY2hhZWwgU3BlY3RvciAtIEN1cnJlbnQgRWNsaXBzZSBQRFQgZGV2ZWxvcGVyPC9saT48L2xpPg0KICA8bGk+IE5pY2sgQm9sZHQgLSBDdXJyZW50IEVjbGlwc2UgUERUIGRldmVsb3BlcjwvbGk+DQogIDxsaT4gUWlhbmdzaGVuZyBXYW5nIC0gQ3VycmVudCBFY2xpcHNlIFBEVCBkZXZlbG9wZXI8L2xpPgogIDxsaT4gU2hhbG9tIEdpYmx5IC0gQ3VycmVudCBFY2xpcHNlIFBEVCBkZXZlbG9wZXI8L2xpPg0KPC91bD4NCjxwPg0KVGhlIGluaXRpYWwgY29tbWl0dGVycyB3aWxsIGJlIGFsbCBjb21taXR0ZXJzIG9uIHRoZSBjdXJyZW50IGluY3ViYXRvciBjb21wb25lbnRzLiBDb21taXQgcmlnaHRzIHdpbGwgYmUgaGFuZGxlZCBvbiBhIGNvbXBvbmVudC1ieS1jb21wb25lbnQgYmFzaXMuDQo8L3A+DQpbMV0gaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2FwZHQvPGJyPg0KWzJdIGh0dHA6Ly93aWtpLmVjbGlwc2Uub3JnL0dvb2dsZV9TdW1tZXJfb2ZfQ29kZV8yMDA4PGJyPg0KWzNdIGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9zbWFydHlwZHQvPGJyPg0KDQo8L3A+DQoNCiAgICAgIDwvZGl2Pg0KICA8L2Rpdj4NCjw/cGhwDQoJJGh0bWwgPSBvYl9nZXRfY29udGVudHMoKTsNCglvYl9lbmRfY2xlYW4oKTsNCg0KCSMgR2VuZXJhdGUgdGhlIHdlYiBwYWdlDQoJJEFwcC0+Z2VuZXJhdGVQYWdlKCR0aGVtZSwgJE1lbnUsICROYXYsICRwYWdlQXV0aG9yLCAkcGFnZUtleXdvcmRzLCAkcGFnZVRpdGxlLCAkaHRtbCk7DQo/Pg0K