PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+DQoNCjxodG1sPg0KPGhlYWQ+DQo8dGl0bGU+QXhpczIgQ29uZmlndXJhdGlvbiBEb2N1bWVudHM8L3RpdGxlPg0KPC9oZWFkPg0KPGJvZHk+DQo8cD5JbiBBeGlzMiB0aGVyZSBhcmUgdGhyZWUga2luZHMgb2YgY29uZmlndXJhdGlvbiBmaWxlcyB0byBjb25maWd1cmUgdGhlIHN5c3RlbS4gDQpGaXJzdCBvbmUgY29uZmlndXJhdGlvbiBmaWxlIGlzIHRvIGNvbmZpZ3VyZSB3aG9sZSBzeXN0ZW0sIHNlY29uZCBvbmUgaXMgdG8gDQpjb25maWd1cmUgYSBzZXJ2aWNlIGFuZCB0aGUgdGhpcmQgb25lIGlzIHRvIGNvbmZpZ3VyZSBhIG1vZHVsZS4gDQo8dWw+DQo8bGk+PGEgaHJlZj0iI2dsb2JhbCI+R2xvYmFsIENvbmZpZ3VyYXRpb24gKGF4aXMyLnhtbCk8L2E+PC9saT4NCjxsaT48YSBocmVmPSIjc2VydmljZSI+U2VydmljZSBDb25maWd1cmF0aW9uIChzZXJ2aWNlcy54bWwpPC9hPjwvbGk+DQo8bGk+PGEgaHJlZj0iI21vZHVsZSI+TW9kdWxlIENvbmZpZ3VyYXRpb24gKG1vZHVsZS54bWwpPC9hPjwvbGk+DQo8L3VsPg0KPC9wPg0KPGJyPg0KDQo8Zm9udCBjb2xvcj0iYmx1ZSI+PGI+R2xvYmFsIENvbmZpZ3VyYXRpb24gPC9iPjwvZm9udD4NCjxsaT48YSBuYW1lPSJnbG9iYWwiPjwvYT5Xcml0aW5nIGF4aXMyLnhtbDwvbGk+DQo8cD4NCiAgQWxsIHRoZSBjb25maWd1cmF0aW9uIHRoYXQgcmVxdWlyZXMgc3RhcnRpbmcgYXhpczIgaXMgb2J0YWluZWQgZnJvbSBheGlzMi54bWwuIA0KCVRoZSB3YXkgb2Ygc3BlY2lmeWluZyB0aGVtIGlzIHZlcnkgc2ltcGxlIGFuZCBlYXN5LiBUaGUgZG9jdW1lbnQgaXMgYWxsIGFib3V0IA0KCXRoZSBwcm9wZXIgd2F5IG9mIHNwZWNpZnlpbmcgdGhlIGNvbmZpZ3VyYXRpb25zIGluIGF4aXMyLnhtbC4NCglUaGVyZSBhcmUgc2l4IHRvcCBsZXZlbCBlbGVtZW50cyB0aGF0IGNhbiBiZSBzZWVuIGluIHRoZSBjb25maWd1cmF0aW9uIA0KCWZpbGUgYW5kIHRob3NlIGNhbiBiZSBsaXN0ZWQgYXMgZm9sbG93czsNCjwvcD4NCjx1bD4NCjxsaT5QYXJhbWV0ZXI8L2xpPg0KPGxpPlRyYW5zcG9ydCBSZWNlaXZlcjwvbGk+DQo8bGk+VHJhbnNwb3J0IFNlbmRlcjwvbGk+DQo8bGk+UGhhc2UgT3JkZXI8L2xpPg0KPGxpPk1vZHVsZSBSZWZlcmVuY2VzPC9saT4NCjxsaT5MaXN0ZW5lcnMgKE9ic2VydmVycyk8L2xpPg0KPC91bD4NCg0KPHA+PGI+UGFyYW1ldGVyIDwvYj4NCjxicj4NCkluIGF4aXMyIGEgcGFyYW1ldGVyIGlzIG5vdGhpbmcgYnV0IG5hbWUgdmFsdWUgcGFpciwgZWFjaCBhbmQgZXZlcnkgdG9wIGxldmVsIA0KcGFyYW1ldGVyIGF2YWlsYWJsZSBpbiB0aGUgYXhpczIueG1sIChkaXJlY3Qgc3ViIGVsZW1lbnRzIG9mIHJvb3QgZWxlbWVudCkgd2lsbCANCmJlIHRyYW5zZm9ybWVkIGludG8gcHJvcGVydGllcyBpbiBBeGlzQ29uZmlndXJhdGlvbi4gVGhlcmVmb3JlIHRoZSB0b3AgbGV2ZWwgDQpwYXJhbWV0ZXJzIGluIGNvbmZpZ3VyYXRpb24gZG9jdW1lbnQgY2FuIGJlIGFjY2Vzc2VkIHZpYSBBeGlzQ29uZmlndXJhdGlvbiBpbiANCnRoZSBydW5uaW5nIHN5c3RlbS4gVGhlIGNvcnJlY3Qgd2F5IG9mIGRlZmluaW5nIGEgcGFyYW1ldGVyIGxvb2tzIGxpa2Ugd2hhdCBpcyBzaG93biBiZWxvdzsNCjxzb3VyY2U+PHByZT4gDQogICZsdDtwYXJhbWV0ZXIgbmFtZT0ibmFtZSBvZiB0aGUgcGFyYW1ldGVyIiAmZ3Q7cGFyYW1ldGVyIHZhbHVlICZsdDsvcGFyYW1ldGVyJmd0Ow0KPC9wcmU+PC9zb3VyY2U+DQo8L3A+DQo8cD4NCjxiPlRyYW5zcG9ydCBSZWNlaXZlcjwvYj48YnI+DQpEZXBlbmRpbmcgb24gdGhlIHVuZGVybGluZSB0cmFuc3BvcnQgdGhhdCBheGlzIGdvaW5nIHRvIGJlIHJ1biAsIA0KbmVlZCB0byBoYXZlIGRpZmZlcmVudCB0cmFuc3BvcnQgcmVjZWl2ZXJzIHNvIHRoZSB3YXkgb2YgYWRkaW5nIA0KdGhlbSB0byB0aGUgc3lzdGVtIGNhbiBiZSBkb25lIGFzIGZvbGxvd3M7DQo8c291cmNlPjxwcmU+IA0KJmx0O3RyYW5zcG9ydFJlY2VpdmVyIG5hbWU9Imh0dHAiIGNsYXNzPSJvcmcuYXBhY2hlLmF4aXMyLnRyYW5zcG9ydC5odHRwLlNpbXBsZUhUVFBTZXJ2ZXIiJmd0Ow0KICAgICAgICAmbHQ7cGFyYW1ldGVyIG5hbWU9InBvcnQiICZndDs2MDYwJmx0Oy9wYXJhbWV0ZXImZ3Q7DQogJmx0Oy90cmFuc3BvcnRSZWNlaXZlciZndDsgDQogPC9wcmU+PC9zb3VyY2U+DQoNClRoZSBhYm92ZSBlbGVtZW50cyBzaG93cyB0aGUgd2F5IG9mIGRlZmluaW5nIHRyYW5zcG9ydCByZWNlaXZlcnMgaW4gYXhpczIueG1sICwgDQpoZXJlIG5hbWUgYXR0cmlidXRlIG9mIHRoZSAndHJhbnNwb3J0UmVjZWl2ZXInIGVsZW1lbnQgaXMgdGhlIG5hbWUgb2YgdHJhbnNwb3J0DQppdCBjYW4gYmUgaHR0cCwgdGNwICwgc210cCAsIGNvbW1vbnNodHRwIHN0YyAsIGFuZCB3aGVuIHRoZSBzeXN0ZW0gc3RhcnRzIHVwIG9yIA0Kd2hlbiBzZXR0aW5nIHRyYW5zcG9ydCBhdCB0aGUgY2xpZW50IHNpZGUgb25lIGNhbiB1c2UgdGhlc2UgdHJhbnNwb3J0IG5hbWVzIHRvDQogbG9hZCB0aGUgYXBwcm9wcmlhdGUgdHJhbnNwb3J0LiBDbGFzcyBhdHRyaWJ1dGUgaXMgdG8gc3BlY2lmeSBhY3R1YWwgamF2YSANCiBjbGFzcyB3aGljaCBpbXBsZW1lbnRzIHJlcXVpcmVkIGludGVyZmFjZXMgZm9yIHRoZSB0cmFuc3BvcnQuIEFueSB0cmFuc3BvcnQgDQogY2FuIGhhdmUgemVybyBvciBtb3JlIHBhcmFtZXRlcnMsIGFuZCBpZiB0aGVyZSBhcmUgYW55LCB0aGVuIHRob3NlIHBhcmFtZXRlcnMgDQogY2FuIGJlIGFjY2Vzc2VkIHZpYSB0aGUgY29ycmVzcG9uZGluZyB0cmFuc3BvcnQgcmVjZWl2ZXIuIA0KPC9wPg0KDQo8cD4NCjxiPlRyYW5zcG9ydCBTZW5kZXJzPC9iPjxicj4NCkFzIHNhbWUgYXMgdHJhbnNwb3J0IHJlY2VpdmVycyBpdCBpcyBwb3NzaWJsZSB0byByZWdpc3RlciB0cmFuc3BvcnQgc2VuZGVycyBpbiB0aGUgDQpzeXN0ZW0sIGFuZCBsYXR0ZXIgYXQgdGhlIHJ1biB0aW1lIHRob3NlIHNlbmRlcnMgY2FuIGJlIHVzZWQgdG8gc2VuZCB0aGUgbWVzc2FnZXMuIA0KQXMgYW4gZXhhbXBsZSBjb25zaWRlciBBeGlzMiBydW5uaW5nIHVuZGVyIHRvbWNhdCwgdGhlbiBheGlzIGNhbiB1c2UgVENQIHRyYW5zcG9ydCANCnNlbmRlcnMgdG8gc2VuZCBtZXNzYWdlIHJhdGhlciB0aGFuIEhUVFAuIFRoZSB3YXkgb2Ygc3BlY2lmeWluZyB0cmFuc3BvcnQgc2VuZGVycyBpcyBhcyBmb2xsb3dzOg0KPHNvdXJjZT48cHJlPiANCiZsdDt0cmFuc3BvcnRTZW5kZXIgbmFtZT0iaHR0cCIgY2xhc3M9Im9yZy5hcGFjaGUuYXhpczIudHJhbnNwb3J0Lmh0dHAuQ29tbW9uc0hUVFBUcmFuc3BvcnRTZW5kZXIiJmd0Ow0KICAgICAgICAmbHQ7cGFyYW1ldGVyIG5hbWU9IlBST1RPQ09MIiBsb2NrZWQ9InhzZDpmYWxzZSImZ3Q7SFRUUC8xLjAmbHQ7L3BhcmFtZXRlciZndDsNCiAmbHQ7L3RyYW5zcG9ydFNlbmRlciZndDsgDQogPC9wcmU+PC9zb3VyY2U+DQpuYW1lOiBOYW1lIG9mIHRoZSB0cmFuc3BvcnQgKGl0IGlzIHBvc3NpYmxlIHRvIGhhdmUgaHR0cCBhbmQgaHR0cDEgYXMgdHJhbnNwb3J0IG5hbWUpDQpDbGFzczogSW1wbGVtZW50YXRpb24gY2xhc3Mgb2YgdGhlIGNvcnJlc3BvbmRpbmcgdHJhbnNwb3J0LiANCg0KQXMgc2FtZSBhcyB0cmFuc3BvcnQgcmVjZWl2ZXJzLCB0cmFuc3BvcnQgc2VuZGVycyBjYW4gaGF2ZSB6ZXJvIG9yIG1vcmUgcGFyYW1ldGVycywgDQphbmQgaWYgdGhlcmUgaXMgYW55IHRoZW4gaXQgY2FuIGJlIGFjY2Vzc2VkIHZpYSBjb3JyZXNwb25kaW5nIHRyYW5zcG9ydCBzZW5kZXIuIA0KPC9wPg0KPHA+DQo8Yj5QaGFzZSBPcmRlcjwvYj48YnI+IA0KVGhlIHNwZWNpZnlpbmcgb3JkZXIgb2YgcGhhc2VzIGluIGV4ZWN1dGlvbiBjaGFpbiBoYXMgdG8gYmUgZG9uZSB1c2luZyBwaGFzZSANCm9yZGVyIGVsZW1lbnQgYW5kIGl0IHdpbGwgYmUgbG9vayBsaWtlIGJlbG93Ow0KPHNvdXJjZT48cHJlPg0KJmx0O3BoYXNlT3JkZXIgdHlwZT0iaW5mbG93IiZndDsNCiAgICAgICAgICZsdDtwaGFzZSBuYW1lPSJUcmFuc3BvcnRJbiIvJmd0Ow0KICAgICAgICAghYWFhYWFhYWFhYWFhQ0KICAgICAgICAghYWFhYWFhYWFhYWFhYUuDQombHQ7L3BoYXNlT3JkZXImZ3Q7ICAgDQo8L3ByZT48L3NvdXJjZT4NCg0KVGhlIG1vc3QgaW50ZXJlc3RpbmcgdGhpbmcgaXMgdGhhdCB5b3UgY2FuIGFkZCBoYW5kbGVycyBoZXJlIGFzIHdlbGwgLCBpZiB5b3Ugd2FudCB0byBhZGQgYSBoYW5kbGVyIHdoaWNoIHNob3VsZCBnbyBpbiB0byB0aGF0IHBoYXNlIHlvdSBjYW4gZGlyZWN0bHkgZG8gdGhhdCBieSBhZGRpbmcgYSBoYW5kbGVyIGVsZW1lbnQgaW50byBpdCAuIEluIGFkZGl0aW9uIHRvIHRoYXQgdGhlcmUgaXMgbm8gYW55IGhhcmQgY29kaW5nIHN0dWZmcyBmb3IgaGFuZGxlciAgY2hhaW4gaW4gYW55d2hlcmUgaW4gQXhpczIgKGF0IGFueSBBeGlzKikgLCBzbyBhbGwgdGhlb3NlIGNvbmZpZ3VyYXRpb24gYXJlIGFsb3MgZG9uZSBoZXJlIGluIHBoYXNlIG9yZGVyIGVsZW1lbnQuIFRoZSBjb21wbGV0ZSBjb25maWd1cmF0aW9uIHdpbGwgbG9vayBsaWtlIGFzIGZvbGxvd3M7DQoNCjxzb3VyY2U+PHByZT4NCiZsdDtwaGFzZU9yZGVyIHR5cGU9ImluZmxvdyIiJmd0Ow0KICAgICAgICAmbHQ7IS0tICBTeXN0ZW0gcHJlIGRlZmluZWQgcGhhc2VzICAgICAgIC0tIiZndDsNCiAgICAgICAgJmx0O3BoYXNlIG5hbWU9IlRyYW5zcG9ydEluIi8iJmd0Ow0KICAgICAgICAmbHQ7cGhhc2UgbmFtZT0iUHJlRGlzcGF0Y2giLyImZ3Q7DQogICAgICAgICZsdDtwaGFzZSBuYW1lPSJEaXNwYXRjaCIiJmd0Ow0KICAgICAgICAgICAgJmx0O2hhbmRsZXIgbmFtZT0iQWRkcmVzc2luZ0Jhc2VkRGlzcGF0Y2hlciINCiAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJvcmcuYXBhY2hlLmF4aXMyLmVuZ2luZS5BZGRyZXNzaW5nQmFzZWREaXNwYXRjaGVyIiImZ3Q7DQogICAgICAgICAgICAgICAgJmx0O29yZGVyIHBoYXNlPSJEaXNwYXRjaCIvIiZndDsNCiAgICAgICAgICAgICZsdDsvaGFuZGxlciImZ3Q7DQogICAgICAgICAgICAgJmx0O2hhbmRsZXIgbmFtZT0iUmVxdWVzdFVSSUJhc2VkRGlzcGF0Y2hlciINCiAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJvcmcuYXBhY2hlLmF4aXMyLmVuZ2luZS5SZXF1ZXN0VVJJQmFzZWREaXNwYXRjaGVyIiImZ3Q7DQogICAgICAgICAgICAgICAgJmx0O29yZGVyIHBoYXNlPSJEaXNwYXRjaCIvIiZndDsNCiAgICAgICAgICAgICZsdDsvaGFuZGxlciImZ3Q7DQogICAgICAgICAgICAgJmx0O2hhbmRsZXIgbmFtZT0iU09BUEFjdGlvbkJhc2VkRGlzcGF0Y2hlciINCiAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJvcmcuYXBhY2hlLmF4aXMyLmVuZ2luZS5TT0FQQWN0aW9uQmFzZWREaXNwYXRjaGVyIiImZ3Q7DQogICAgICAgICAgICAgICAgJmx0O29yZGVyIHBoYXNlPSJEaXNwYXRjaCIvIiZndDsNCiAgICAgICAgICAgICZsdDsvaGFuZGxlciImZ3Q7DQogICAgICAgICAgICAgJmx0O2hhbmRsZXIgbmFtZT0iU09BUE1lc3NhZ2VCb2R5QmFzZWREaXNwYXRjaGVyIg0KICAgICAgICAgICAgICAgICAgICAgY2xhc3M9Im9yZy5hcGFjaGUuYXhpczIuZW5naW5lLlNPQVBNZXNzYWdlQm9keUJhc2VkRGlzcGF0Y2hlciIiJmd0Ow0KICAgICAgICAgICAgICAgICZsdDtvcmRlciBwaGFzZT0iRGlzcGF0Y2giLyImZ3Q7DQogICAgICAgICAgICAmbHQ7L2hhbmRsZXIiJmd0Ow0KICAgICAgICAmbHQ7L3BoYXNlIiZndDsNCiAgICAgICAgJmx0O3BoYXNlIG5hbWU9IlBvc3REaXNwYXRjaCIiJmd0Ow0KICAgICAgICAgICAgICZsdDtoYW5kbGVyIG5hbWU9IkRpc3BhdGNoUG9zdENvbmRpdGlvbnNFdmFsdWF0b3IiDQogICAgICAgICAgICAgICAgICAgICBjbGFzcz0ib3JnLmFwYWNoZS5heGlzMi5lbmdpbmUuRGlzcGF0Y2hpbmdDaGVja2VyIiImZ3Q7DQogICAgICAgICAgICAgICAgJmx0O29yZGVyIHBoYXNlPSJQb3N0RGlzcGF0Y2giLyImZ3Q7DQogICAgICAgICAgICAmbHQ7L2hhbmRsZXIiJmd0Ow0KICAgICAgICAgICAgJmx0O2hhbmRsZXIgbmFtZT0iSW5zdGFuY2VEaXNwYXRjaGVyIg0KICAgICAgICAgICAgICAgICAgICAgY2xhc3M9Im9yZy5hcGFjaGUuYXhpczIuZW5naW5lLkluc3RhbmNlRGlzcGF0Y2hlciIiJmd0Ow0KICAgICAgICAgICAgICAgICZsdDtvcmRlciBwaGFzZT0iUG9zdERpc3BhdGNoIi8iJmd0Ow0KICAgICAgICAgICAgJmx0Oy9oYW5kbGVyIiZndDsNCiAgICAgICAgICAgICZsdDtoYW5kbGVyIG5hbWU9IlNPQVBQcm9jZXNzaW5nTW9kZWxDaGVja2VyIg0KICAgICAgICAgICAgICAgICAgICAgY2xhc3M9Im9yZy5hcGFjaGUuYXhpczIuZW5naW5lLlNPQVBQcm9jZXNzaW5nTW9kZWxDaGVja2VyIiImZ3Q7DQogICAgICAgICAgICAgICAgJmx0O29yZGVyIHBoYXNlPSJQb3N0RGlzcGF0Y2giLyImZ3Q7DQogICAgICAgICAgICAmbHQ7L2hhbmRsZXIiJmd0Ow0KICAgICAgICAmbHQ7L3BoYXNlIiZndDsNCiAgICAgICAgJmx0OyEtLSAgU3lzdGVtIHByZSBkZWZpbmVkIHBoYXNlcyAgICAgICAtLSImZ3Q7DQogICAgICAgICZsdDshLS0gICBBZnRlciBQb3N0ZGlzcGF0Y2ggcGhhc2UgbW9kdWxlIGF1dGhvciBvciBvciBzZXJ2aWNlIGF1dGhvciBjYW4gYWRkIGFueSBwaGFzZSBoZSB3YW50ICAgICAgLS0iJmd0Ow0KICAgICAgICAmbHQ7cGhhc2UgbmFtZT0idXNlcnBoYXNlMSIvIiZndDsNCiAgICAmbHQ7L3BoYXNlT3JkZXIiJmd0Ow0KICAgICZsdDtwaGFzZU9yZGVyIHR5cGU9Im91dGZsb3ciIiZndDsNCiAgICAgICAgJmx0OyEtLSAgICAgIHVzZXIgY2FuIGFkZCBoaXMgb3duIHBoYXNlcyB0byB0aGlzIGFyZWEgIC0tIiZndDsNCiAgICAgICAgJmx0O3BoYXNlIG5hbWU9InVzZXJwaGFzZTEiLyImZ3Q7DQogICAgICAgICZsdDshLS1zeXN0ZW0gcHJlZGVmaW5lZCBwaGFzZS0tIiZndDsNCiAgICAgICAgJmx0OyEtLXRoZXNlIHBoYXNlIHdpbGwgcnVuIGlycmVzcGVjdGl2ZSBvZiB0aGUgc2VydmljZS0tIiZndDsNCiAgICAgICAgJmx0O3BoYXNlIG5hbWU9IlBvbGljeURldGVybWluYXRpb24iLyImZ3Q7DQogICAgICAgICZsdDtwaGFzZSBuYW1lPSJNZXNzYWdlT3V0Ii8iJmd0Ow0KICAgICZsdDsvcGhhc2VPcmRlciImZ3Q7DQogICAgJmx0O3BoYXNlT3JkZXIgdHlwZT0iSU5mYXVsdGZsb3ciIiZndDsNCiAgICAgICAgJmx0OyEtLSAgICAgIHVzZXIgY2FuIGFkZCBoaXMgb3duIHBoYXNlcyB0byB0aGlzIGFyZWEgIC0tIiZndDsNCiAgICAgICAgJmx0O3BoYXNlIG5hbWU9InVzZXJwaGFzZTEiLyImZ3Q7DQogICAgJmx0Oy9waGFzZU9yZGVyIiZndDsNCiAgICAmbHQ7cGhhc2VPcmRlciB0eXBlPSJPdXRmYXVsdGZsb3ciIiZndDsNCiAgICAgICAgJmx0OyEtLSAgICAgIHVzZXIgY2FuIGFkZCBoaXMgb3duIHBoYXNlcyB0byB0aGlzIGFyZWEgIC0tIiZndDsNCiAgICAgICAgJmx0O3BoYXNlIG5hbWU9InVzZXJwaGFzZTEiLyImZ3Q7DQogICAgICAgICZsdDtwaGFzZSBuYW1lPSJQb2xpY3lEZXRlcm1pbmF0aW9uIi8iJmd0Ow0KICAgICAgICAmbHQ7cGhhc2UgbmFtZT0iTWVzc2FnZU91dCIvIiZndDsNCiAgICAmbHQ7L3BoYXNlT3JkZXIiJmd0Ow0KPC9wcmU+PC9zb3VyY2U+DQoNCnR5cGU6IHRoZSBhdHRyaWJ1dGUgcmVwcmVzZW50IHR5cGUgb2YgdGhlIGZsb3cgYW5kIHdoaWNoIGNhbiBvbmx5IGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nDQo8L3A+DQo8dWw+DQo8bGk+aW5mbG93PC9saT4NCjxsaT5vdXRmbG93PC9saT4NCjxsaT5JTmZhdWx0ZmxvdzwvbGk+DQo8bGk+T3V0ZmF1bHRmbG93PC9saT4NCjwvdWw+DQoNCjxwPkluIGFkZGl0aW9uIHRvIHRoYXQgb25seSBjaGlsZCBlbGVtZW50IGFsbG93ZWQgaW5zaWRlIHBhaHNlT3JkZXIgaXMgcGhhc2UgDQplbGVtZW50LCB3aGljaCByZXByZXNlbnRzIGF2YWlsYWJsZSBwaGFzZXMgaW4gdGhlIGV4ZWN1dGlvbiBjaGFpbi4gIA0KVGhlIHdheSBvZiBzcGVjaWZ5aW5nIHBoYXNlIGluc2lkZSBwaGFzZU9yZGVyIGhhcyB0byBiZSBkb25lIGFzIGZvbGxvd3M7DQo8c291cmNlPjxwcmU+DQogJmx0O3BoYXNlIG5hbWU9IlRyYW5zcG9ydEluIi8mZ3Q7DQo8L3ByZT48L3NvdXJjZT4NCm5hbWU6IE5hbWUgb2YgdGhlIHBoYXNlLg0KPGJyPg0KVGhlcmUgYXJlIG51bWJlciBvZiB0aGluZ3MgdGhhdCBvbmUgaGFzIHRvIGtlZXAgaW4gbWluZCB3aGVuIGNoYW5naW5nIHBhaHNlT3JkZXIsIA0KPHVsPg0KPG9sPnRoZXJlIGFyZSBwaGFzZXMgY2FsbGVkIHN5c3RlbSBwcmUtZGVmaW5lZCBwaGFzZXMgaW4gYWxsIGZvdXIgZmxvd3M7PC9vbD4NCjxvbD5Zb3UgYXJlIG5vdCBhbGxvd2VkIGNoYW5nZSB0aG9zZSAgLCBhbmQgeW91IGNhbiBhZGQgbmV3IHBoYXNlIGFmdGVyIHN5c3RlbSBwcmUtZGVmaW5lZCBwaGFzZTwvb2wNCjxvbD5JZiB5b3UgY2xvc2VseSBsb29rIGF0IHRoZSBkZWZhdWx0IGF4aXMyLnhtbCBjYW4gY2xlYXJseSBpZGVudGlmeSB0aGF0LiAgPC9vbD4NCjwvdWw+DQo8L3A+DQo8cD4NCjxiPk1vZHVsZSBSZWZlcmVuY2VzPC9iPjxicj4NCklmIHlvdSB3YW50IHRvIGVuZ2FnZSBhIG1vZHVsZSBzeXN0ZW0gd2lkZSB5b3UgY2FuIGRvIGl0IGJ5IGFkZGluZyB0b3AgDQpsZXZlbCBtb2R1bGUgZWxlbWVudCBpbiBheGlzMi54bWwuICBJdCBzaG91bGQgYmUgbG9vayBsaWtlIGZvbGxvd2luZzoNCjxzb3VyY2U+PHByZT4NCiZsdDttb2R1bGUgcmVmPSJhZGRyZXNzaW5nIi8mZ3Q7ICANCjwvcHJlPjwvc291cmNlPg0KcmVmOiB0aGUgbW9kdWxlIG5hbWUgd2hpY2ggaXMgZ29pbmcgdG8gYmUgZW5nYWdlLCBzeXN0ZW0gd2lkZS4NCg0KTGlzdGVuZXJzIChPYnNlcnZlcnMpDQpJbiBBeGlzMiBBeGlzQ29uZmlndXJhdGlvbiBpcyBvYnNlcnZhYmxlIHNvIHRoYXQgb25lIGNhbiByZWdpc3RlciBvYnNlcnZlcnMgaW50byANCnRoYXQsIGFuZCB0aGV5IHdpbGwgYmUgYXV0b21hdGljYWxseSBpbmZvcm1lZCB3aGVuZXZlciBhIGNoYW5nZSBvY2N1cnMgaW4gDQpBeGlzQ29uZml1cmF0aW9uLiBJbiB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiB0aGUgb2JzZXJ2ZXJzIGFyZSBpbmZvcm1lZCBvZiB0aGUgZm9sbG93aW5nIGV2ZW50cw0KDQo8dWw+DQo8bGk+RGVwbG95aW5nIGEgU2VydmljZTwvbGk+DQo8bGk+UmVtb3ZpbmcgYSBzZXJ2aWNlPC9saT4NCjxsaT5DaGFuZ2luZyBhIHNlcnZpY2U8L2xpPiANCjwvdWw+DQpSZWdpc3RlcmluZyBPYnNlcnZlcnMgaXMgdmVyeSB1c2VmdWwgZm9yIGFkZGl0aW9uYWwgZmVhdHVyZXMgc3VjaCBhcyBSU1MgZmVlZCANCmdlbmVyYXRpb24gd2hpY2ggd2lsbCBwcm92aWRlIHNlcnZpY2UgaW5mb3JtYXRpb24gdG8gc3Vic2NyaWJlcnMuIFRoZSBjb3JyZWN0DQogd2F5IG9mIHJlZ2lzdGVyaW5nIG9ic2VydmVycyBzaG91bGQgYmUgbGlrZSBiZWxvdzsNCjxzb3VyY2U+PHByZT4NCiZsdDtsaXN0ZW5lciBjbGFzcz0ib3JnLmFwYWNoZS5heGlzMi5PYnNlcnZlcklNUEwiJmd0Ow0KICAgICZsdDtwYXJhbWV0ZXIgbmFtZT0iUlNTX1VSTCIgJmd0O2h0dHA6Ly8xMjcuMC4wLjEvcnNzJmx0Oy9wYXJhbWV0ZXImZ3Q7DQogICZsdDsvbGlzdGVuZXImZ3Q7DQo8L3ByZT48L3NvdXJjZT4NCmNsYXNzOiBSZXByZXNlbnQgYW4gSW1wbGVtZW50YXRpb24gY2xhc3Mgb2Ygb2JzZXJ2ZXIsIGFuZCBpdCBzaG91bGQgYmUgbm90ZQ0KIHRoYXQgdGhlIGltcGxlbWVudGF0aW9uIGNsYXNzIHNob3VsZCBpbXBsZW1lbnQgQXhpc09ic2VydmVyIGludGVyZmFjZSwNCiAgYW5kIHRoZSBjbGFzcyBoYXMgdG8gYmUgYXZhaWxhYmxlIGluIHRoZSBjbGFzc3BhdGguIA0KPC9wPg0KDQo8YnI+DQoNCjxmb250IGNvbG9yPSJibHVlIj48Yj5TZXJ2aWNlIENvbmZpZ3VyYXRpb248L2I+PC9mb250Pg0KPGxpPjxhIG5hbWU9InNlcnZpY2UiPjwvYT5Xcml0aW5nIHNlcnZpY2UueG1sPC9saT4NCjxwPg0KVGhlIGRlc2NyaXB0aW9uIG9mIHNlcnZpY2UgaXMgc3BlY2lmaWVkIHVzaW5nIHNlcnZpY2VzLnhtbCwgZWFjaCBzZXJ2aWNlIGFyY2hpdmUgDQpmaWxlIG5lZWQgdG8gaGF2ZSBzZXJ2aWNlcy54bWwgaW4gb3JkZXIgdG8gYmUgYSB2YWxpZCBzZXJ2aWNlLiBBbmQgd2hpY2ggaGFzIHRvIGJlIA0KYXZhaWxhYmxlIGluIE1FVEEtSU5GIGRpcmVjdG9yeSBvZiB0aGUgYXJjaGl2ZSBmaWxlLiANCjxicj4NCkEgdmVyeSBzaW1wbGUgc2VydmljZXMueG1sIGlzIHNob3duIGJlbG93Og0KPHNvdXJjZT48cHJlPg0KJmx0O3NlcnZpY2UgJmd0Ow0KICAgICZsdDtkZXNjcmlwdGlvbiZndDsgVGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBzZXJ2aWNlICAmbHQ7L2Rlc2NyaXB0aW9uJmd0Ow0KDQogICAgJmx0O3BhcmFtZXRlciBuYW1lPSJTZXJ2aWNlQ2xhc3MiICAgICBsb2NrZWQ9InhzZDpmYWxzZSImZ3Q7b3JnLmFwYWNoZS5heGlzMi5zYW1wbGUuZWNoby5FY2hvSW1wbCZsdDsvcGFyYW1ldGVyJmd0Ow0KICAgIA0KICAgICZsdDtvcGVyYXRpb24gbmFtZT0iZWNob1N0cmluZyImZ3Q7DQogICAgICAgICZsdDttb2R1bGUgcmVmPSIgYSBtb2R1bGUgbmFtZSAiLyZndDsNCiAgICAgICAgJmx0O21lc3NhZ2VSZWNlaXZlciBjbGFzcz0ib3JnLmFwYWNoZS5heGlzMi5yZWNlaXZlcnMuUmF3WE1MSU5PdXRNZXNzYWdlUmVjZWl2ZXIiLyZndDsNCiAgICAmbHQ7L29wZXJhdGlvbiZndDsNCiAgJmx0Oy9zZXJ2aWNlJmd0Ow0KPC9zb3VyY2U+PC9wcmU+DQoNCnNlcnZpY2UgbmFtZTogdGhlIHNlcnZpY2UgbmFtZSB3aWxsIGJlIHRoZSBuYW1lIG9mIHRoZSBhcmNoaXZlIGZpbGUuDQo8YnI+DQpkZXNjcmlwdGlvbjogVGhpcyBpcyBhbiBvcHRpb25hbCBlbGVtZW50IGlmIHlvdSB3YW50IHRvIGRpc3BsYXkgYW55IGRlc2NyaXB0aW9uIA0KYWJvdXQgdGhlIHNlcnZpY2UgdmlhIEF4aXMyIHdlYi1hZG1pbiBtb2R1bGUgdGhlbiB0aGUgZGVzY3JpcHRpb24gY2FuIGJlIHNwZWNpZmllZCBoZXJlLiANCjwvcD4NCjxwPg0KPGI+UGFyYW1ldGVyOjwvYj48YnI+DQpzZXJ2aWNlLnhtbCBjYW4gaGF2ZSBhbnkgbnVtYmVyIG9mIHRvcCBsZXZlbCBwYXJhbWV0ZXJzIGFuZCBhbGwgdGhlIHNwZWNpZmllZCANCnBhcmFtZXRlcnMgd2lsbCBiZSB0cmFuc2Zvcm1lZCBpbnRvIHNlcnZpY2UgcHJvcGVydGllcyBpbiBjb3JyZXNwb25kaW5nIFNlcnZpY2VEZXNjcnB0aW9uLiANClRoZXJlIGlzIGEgY29tcHVsc29yeSBwYXJhbWV0ZXIgaW4gYSBzZXJ2aWNlLnhtbCBjYWxsZWQgU2VydmljZUNsYXNzIHdoaWNoIHNwZWNpZnkgdGhlIA0KamF2YSBjbGFzcyB3aGljaCByZWFsbHkgZG9lcyB0aGUgam9iIGFuZCB0aGUgY2xhc3Mgd2lsbCBiZSBsb2FkZWQgYnkgTWVzc2FnZVJlY2VpdmVyLg0KPC9wPg0KPHA+DQo8Yj5IYW5kbGVyPC9iPjxicj4NCkhhbmRsZXIgZWxlbWVudCBjb25zaXN0cyBvZiBjb21wdWxzb3J5IGFuZCBvcHRpb25hbCBhdHRyaWJ1dGUgYW5kIHRoZSB3YXkgb2YgZGVmaW5pbmcgYSBoYW5kbGVyIHdpbGwgYmUgbG9vayBsaWtlIGZvbGxvd3M7DQo8c291cmNlPjxwcmU+DQombHQ7aGFuZGxlciBuYW1lPSJoYW5kbGVyMSIgY2xhc3M9ImhhbmRsZXJDbGFzcyAiJmd0Ow0KICAgICAgICAgICAgJmx0O29yZGVyIHBoYXNlPSJ1c2VycGhhc2UxIiAvJmd0Ow0KICZsdDsvaGFuZGxlciZndDsNCjwvc291cmNlPjwvcHJlPg0KDQo8Yj48aT5Db21wdWxzb3J5IGF0dHJpYnV0ZXM8L2k+PC9iPiA8YnI+DQpuYW1lOiBuYW1lIG9mIHRoZSBoYW5kbGVyPGJyPg0Kbmxhc3M6IGhhbmRsZXIgaW1wbGVtZW50YXRpb24gY2xhc3M8YnI+DQpwaGFzZTogbmFtZSBvZiB0aGUgcGhhc2UgdGhhdCB0aGUgaGFuZGxlciBzaG91bGQgc3RheSBpbiB0aGUgZXhlY3V0aW9uIGNoYWluDQo8YnI+PGJyPg0KPGk+PGI+T3B0aW9uYWwgYXR0cmlidXRlcyA6PC9iPjwvaT48YnI+DQpwaGFzZUxhc3Q6IHRvIGluZGljYXRlIHRoZSBoYW5kbGVyIGlzIGxhc3QgaGFuZGxlciBvZiB0aGUgcGhhc2U8YnI+DQpwaGFzZUZpcnN0OiB0byBpbmRpY2F0ZSB0aGUgaGFuZGxlciBpcyBmaXJzdCBoYW5kbGVyIG9mIHRoZSBwaGFzZS48YnI+DQpiZWZvcmUgOiB0aGUgaGFuZGxlciBzaG91bGQgYmUgaW52b2tlZCBiZWZvcmUgdGhlIGhhbmRsZXIgc3BlY2lmaWVkIGJ5IGJlZm9yZSBoYW5kbGVyPGJyPg0KYWZ0ZXI6ICB0aGUgaGFuZGxlciBzaG91bGQgYmUgaW52b2tlZCBhZnRlciB0aGUgaGFuZGxlciBzcGVjaWZpZWQgYnkgYWZ0ZXIgaGFuZGxlcjxicj4NCjwvcD4NCjxwPg0KPGI+T3BlcmF0aW9uczwvYj48YnI+DQpBbGwgdGhlIG9wZXJhdGlvbnMgeW91IGFyZSBnb2luZyB0byBleHBvc2VieSB0aGUgc2VydmljZSBoYXMgdG8gYmUgaW5kaWNhdGVkIGluIHRoZSBzZXJ2aWNlLnhtbCBhbmQgdGhlIGNvcnJlY3Qgd2F5IG9mIHNwZWNpZnlpbmcgdGhhdCBzaG91bGQgYmUgYXMgZm9sbG93czoNCiA8c291cmNlPjxwcmU+DQogICAgJmx0O29wZXJhdGlvbiBuYW1lPSJlY2hvU3RyaW5nIiZndDsNCiAgICAgICAgJmx0O21vZHVsZSByZWY9IiBhIG1vZHVsZSBuYW1lICIvJmd0Ow0KICAgICAgICAmbHQ7bWVzc2FnZVJlY2VpdmVyIGNsYXNzPSJvcmcuYXBhY2hlLmF4aXMyLnJlY2VpdmVycy5SYXdYTUxJTk91dE1lc3NhZ2VSZWNlaXZlciIvJmd0Ow0KICAgICZsdDsvb3BlcmF0aW9uJmd0Ow0KPC9zb3VyY2U+PC9wcmU+DQpPbmx5IGNvbXB1bHNvcnkgYXR0cmlidXRlIGhlcmUgaXMgbmFtZSwgd2hpY2ggcmVwcmVzZW50IHRoZSBvcGVyYXRpb24gbmFtZSB0aGF0IGlzIGdvaW5nIHRvIGJlIGV4cG9zZWQuIEFueSBvcGVyYXRpb24gY2FuIGNvbnRhaW5zIG1vZHVsZSByZWZlcmVuY2VzLCBhbnkgbnVtYmVyIG9mIHBhcmFtZXRlcnMuIFRoZSBtb3N0IGludGVyZXN0aW5nIGlzIHRoYXQgb25lIGNhbiByZWdpc3RlciBjdXN0b20gbWVzc2FnZSByZWNlaXZlciBwZXIgb3BlcmF0aW9uLCB0aGVuIHRoZSByZWdpc3RlcmVkIG1lc3NhZ2UgcmVjZWl2ZXIgd2lsbCBiZSB0aGUgbWVzc2FnZSByZWNlaXZlciBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgb3BlcmF0aW9uLiBJZiBvbmUgZG9lcyBub3Qgc3BlY2lmeSB0aGUgbWVzc2FnZSByZWNlaXZlciB0aGVuIHRoZSBkZWZhdWx0IG1lc3NhZ2UgcmVjZWl2ZXIgd2lsbCBkbyB0aGUgam9iLiANCjwvcD4NCjxicj4NCg0KPGZvbnQgY29sb3I9ImJsdWUiPjxiPk1vZHVsZSBDb25maWd1cmF0aW9uPC9iPjwvZm9udD4NCjxsaT48YSBuYW1lPSJtb2R1bGUiPjwvYT5Xcml0aW5nIG1vZHVsZS54bWw8L2xpPg0KPHA+DQpUaGUgZGVzY3JpcHRpb24gb2YgbW9kdWxlIGlzIHNwZWNpZmllZCB1c2luZyBtb2R1bGUueG1sLCBlYWNoIG1vZHVsZSBhcmNoaXZlIGZpbGUgbmVlZCB0byBoYXZlIG1vZHVsZS54bWwgaW4gb3JkZXIgdG8gYmUgYSB2YWxpZCBtb2R1bGUuIEFuZCB3aGljaCBoYXMgdG8gYmUgYXZhaWxhYmxlIGluIE1FVEEtSU5GIGRpcmVjdG9yeSBvZiB0aGUgYXJjaGl2ZSBmaWxlLiANCjxicj4NCkEgdmVyeSBzaW1wbGUgbW9kdWxlLnhtbCBpcyBzaG93biBiZWxvdzoNCjxzb3VyY2U+PHByZT4NCiZsdDttb2R1bGUgbmFtZT0ibW9kdWxlMSIgY2xhc3M9Im9yZy5hcGFjaGUubW9kdWxlLk1vZHVsZTFJbXBsIiZndDsNCiAgICAmbHQ7aW5mbG93Jmd0Ow0KICAgICAgICCFhYWFhYWFhS4NCiAgICAmbHQ7L2luZmxvdyZndDsNCiAgICAmbHQ7b3V0ZmxvdyZndDsNCiAgICAgICCFhYWFhYWFhYUNCiAgICAmbHQ7L291dGZsb3cmZ3Q7DQoNCiAgICAmbHQ7T3V0ZmF1bHRmbG93Jmd0Ow0KICAgICAgIIWFhYWFhYWFhS4uDQogICAgJmx0Oy9PdXRmYXVsdGZsb3cmZ3Q7DQoNCiAgICAmbHQ7SU5mYXVsdGZsb3cmZ3Q7DQogICAgICCFhYWFhYWFhYWFLg0KICAgICZsdDsvSU5mYXVsdGZsb3cmZ3Q7DQoNCiAgICAmbHQ7b3BlcmF0aW9uIG5hbWU9ImNyZWF0U2VxIiBtZXA9Ik1FUF9VUklfSU5fT1VUIiZndDsNCiAgICAgICAgJmx0O21lc3NhZ2VSZWNlaXZlciBjbGFzcz0ib3JnLmFwYWNoZS5heGlzMi5yZWNlaXZlcnMuUmF3WE1MSU5PdXRNZXNzYWdlUmVjZWl2ZXIiLyZndDsNCiAgICAgICAgJmx0O3BhcmFtZXRlciBuYW1lPSJwYXJhMSIgbG9ja2VkPSJ4c2Q6dHJ1ZSImZ3Q7MTAmbHQ7L3BhcmFtZXRlciZndDsNCiAgICAmbHQ7L29wZXJhdGlvbiZndDsNCiZsdDsvbW9kdWxlJmd0Ow0KPC9zb3VyY2U+PC9wcmU+DQoNCm5hbWU6IFRoaXMgaXMgYSBjb21wdWxzb3J5IGF0dHJpYnV0ZSBhbmQgd2hpY2ggaW5kaWNhdGVzIHRoZSBuYW1lIG9mIHRoZSBtb2R1bGUNCjxicj4NCmNsYXNzOiBUaGlzIGlzIGFuIG9wdGlvbmFsIGF0dHJpYnV0ZSB3aGljaCBpbmRpY2F0ZSBtb2R1bGUgaW1wbGVtZW50YXRpb24gY2xhc3MsIGEgbW9kdWxlIG1heSBvciBtYXkgbm90IGNvbnRhaW4gbW9kdWxlIGltcGxlbWVudGF0aW9uIGNsYXNzIHNpbmNlIHRoZSBtb2R1bGUgY2FuIGFsc28gYmUgYSBjb2xsZWN0aW9uIG9mIGhhbmRsZXJzLiBJZiBhIG1vZHVsZSBjb250YWlucyBhbiBpbXBsZW1lbnRhdGlvbiBjbGFzcyB3aGljaCBpbXBsZW1lbnRzIHRoZSBvcmcuYXBhY2hlLmF4aXMyLm1vZHVsZXMuTW9kdWxlIGludGVmYWNlIHdoZXJlIGF0IHRoZSBkZXBsb3ltZW50IHRpbWUgaXRzIGluaXQoKTsgbWV0aG9kIHdpbGwgYmUgY2FsbGVkLiANCjwvcD4NCg0KPHA+DQo8Yj5wYXJhbWV0ZXI6PC9iPg0KTW9kdWxlIGNhbiBjb250YWlucyBhbnkgbnVtYmVyIG9mIHBhcmFtZXRlcnMgYW5kIGFsbCB0aGUgbGlzdGVkIHBhcmFtZXRlcnMgaW4gdGhlIG1vZHVsZS54bWwgd2lsbCBiZSB0cmFuc2Zvcm1lZCBpbnRvIGNvcnJlc3BvbmRpbmcgTW9kdWxlRGVzY3JpcHRpb24gb2YgdGhlIG1vZHVsZS4gDQo8L3ANCjxwPg0KPGI+RmxvdyA6PC9iPjxicj4NCkl0IGlzIHBvc3NpYmxlIHRvIGFkZCBoYW5kbGVycyBpbnRvIGEgZmxvdyBkaXJlY3RseSBmb3JtIHNlcnZpY2UueG1sIHJhdGhlciB0aGFuIA0KZW5nYWdpbmcgYSBtb2R1bGVzIGFuZCB0aGUgd2F5IG9mIGRvaW5nIHRoYXQgaXMgdGhyb3VnaCBmbG93IGVsZW1lbnRzLiANCkl0IGlzIHBvc3NpYmxlIHRvIGFkZCBhbnkgbnVtYmVyIG9mIGhhbmRsZXJzIGludG8gYSBmbG93IGFuZCB0aG9zZSBoYW5kbGVycyANCndpbGwgYmUgYXZhaWxhYmxlIGluIGNvcnJlc3BvbmRpbmcgb3BlcmF0aW9ucyBmbG93cyBpbiB0aGUgc2VydmljZSANCihpbmZsb3cgY29uc2lzdCBvZiB0d28gcGFydHMsIG9uZSBwYXJ0IGlzIHVwIHRvIHBvc3QgZGlzcGF0Y2ggcGhhc2UgYW5kIG90aGVyIA0KcGFydCBpcyBjb25zaXN0aW5nIG9mIG9wZXJhdGlvbiBoYW5kbGVycykgIA0KPGJyPg0KVGhlcmUgYXJlIGZvdXIgdHlwZXMgb2YgdmFsaWQgZmxvd3MgdGhhdCBjYW4gYmUgYXZhaWxhYmxlIGluIHNlcnZpY2UueG1sLA0KIGFuZCB0aGUgYWRkaW5nIHRoZSBoYW5kbGVzIGludG8gdGhlbSBjYW4gYmUgZG9uZSBieSBmb2xsb3dpbmcgdGhlIGFib3ZlIHByb2NlZHVyZS4gDQo8YnI+DQpWYWxpZCBmbG93czoNCjx1bD4NCjxsaT5JbmZsb3c8L2xpPg0KPGxpPm91dGZsb3c8L2xpPg0KPGxpPklOZmF1bHRmbG93PC9saT4NCjxsaT5PdXRmYXVsdGZsb3c8L2xpPg0KPC91bD4NCjwvcD4NCg0KPHA+DQo8Yj5vcGVyYXRpb25zPC9iPg0KSWYgYSBtb2R1bGUgd2FudHMgdG8gYWRkIGFuIG9wZXJhdGlvbiB3aGVuIGl0IGlzIGVuZ2FnZWQgaW50byBhIHNlcnZpY2UgaXQgY2FuIGJlIGRvbmUgYnkgYWRkaW5nIG9wZXJhdGlvbiB0YWcgaW4gbW9kdWxlLnhtbCBhbmQgdGhlIHdheSBvZiBzcGVjaWZ5aW5nIHRoZSBvcGVyYXRpb24gaXMgc2FtZSBhcyBvcGVyYXRpb24gaW4gc2VydmljZS54bWwuICANCg0KPC9wPg0KPGJyPg0KDQoNCjwvYm9keT4NCjwvaHRtbD4NCg==