PD9waHAgIAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCXJlcXVpcmVfb25jZSgkX1NFUlZFUlsnRE9DVU1FTlRfUk9PVCddIC4gIi9lY2xpcHNlLm9yZy1jb21tb24vc3lzdGVtL2FwcC5jbGFzcy5waHAiKTsJcmVxdWlyZV9vbmNlKCRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10gLiAiL2VjbGlwc2Uub3JnLWNvbW1vbi9zeXN0ZW0vbmF2LmNsYXNzLnBocCIpOyAJcmVxdWlyZV9vbmNlKCRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10gLiAiL2VjbGlwc2Uub3JnLWNvbW1vbi9zeXN0ZW0vbWVudS5jbGFzcy5waHAiKTsgCSRBcHAgCT0gbmV3IEFwcCgpOwkkTmF2CT0gbmV3IE5hdigpOwkkTWVudSAJPSBuZXcgTWVudSgpOwkJaW5jbHVkZSgkQXBwLT5nZXRQcm9qZWN0Q29tbW9uKCkpOyAgICAjIEFsbCBvbiB0aGUgc2FtZSBsaW5lIHRvIHVuY2x1dHRlciB0aGUgdXNlcidzIGRlc2t0b3AnDQoNCiRwYWdlVGl0bGUgCQk9ICIiOw0KJHBhZ2VLZXl3b3Jkcwk9ICIiOw0KJHBhZ2VBdXRob3IJCT0gIiI7DQoNCm9iX3N0YXJ0KCk7DQo/Pg0KICAgIDxkaXYgaWQ9Im1haW5jb250ZW50Ij4NCgk8ZGl2IGlkPSJtaWRjb2x1bW4iPg0KDQo8aDE+UHJvcG9zYWwgZm9yIHRoZSBHbGltbWVyIFByb2plY3Q8L2gxPg0KPC9wPg0KPD9waHANCmluY2x1ZGVfb25jZSgkX1NFUlZFUlsnRE9DVU1FTlRfUk9PVCddIC4gIi9wcm9qZWN0cy9mcmFnbWVudHMvcHJvcG9zYWwtcGFnZS1oZWFkZXIucGhwIik7DQpnZW5lcmF0ZV9oZWFkZXIoIkdsaW1tZXIiKTsNCj8+DQoNCjxoMj5JbnRyb2R1Y3Rpb248L2gyPg0KDQo8cD4NCglHbGltbWVyIGlzIGEgSlJ1YnkgRFNMIHRoYXQgZW5hYmxlcyBlYXN5IGFuZCBlZmZpY2llbnQgYXV0aG9yaW5nIG9mIHVzZXItaW50ZXJmYWNlcyB1c2luZyB0aGUgcm9idXN0IHBsYXRmb3JtLWluZGVwZW5kZW50IEVjbGlwc2UgU1dUIGxpYnJhcnkuIEdsaW1tZXIgY29tZXMgd2l0aCBidWlsdC1pbiBkYXRhLWJpbmRpbmcgc3VwcG9ydCB0byBncmVhdGx5IGZhY2lsaXRhdGUgc3luY2hyb25pemluZyBVSSB3aXRoIGRvbWFpbiBtb2RlbHMuDQo8L3A+DQoNCjxwPg0KCUdsaW1tZXIgaXMgcHJvcG9zZWQgYXMgYW4gb3BlbiBzb3VyY2UgcHJvamVjdCB1bmRlciB0aGUgPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy90ZWNobm9sb2d5Ij5FY2xpcHNlIFRlY2hub2xvZ3kgUHJvamVjdDwvYT4uIFRoaXMgcHJvcG9zYWwgaXMgaW4gdGhlIFByb2plY3QgUHJvcG9zYWwgUGhhc2UgKGFzIGRlZmluZWQgaW4gdGhlIDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvcHJvamVjdHMvZGV2X3Byb2Nlc3MvIj5FY2xpcHNlIERldmVsb3BtZW50IFByb2Nlc3MgZG9jdW1lbnQ8L2E+KSBhbmQgaXMgd3JpdHRlbiB0byBkZWNsYXJlIGl0cyBpbnRlbnQgYW5kIHNjb3BlLiBUaGlzIHByb3Bvc2FsIGlzIHdyaXR0ZW4gdG8gc29saWNpdCBhZGRpdGlvbmFsIHBhcnRpY2lwYXRpb24gYW5kIGlucHV0IGZyb20gdGhlIEVjbGlwc2UgY29tbXVuaXR5LiBZb3UgYXJlIGludml0ZWQgdG8gY29tbWVudCBvbiBhbmQvb3Igam9pbiB0aGUgcHJvamVjdC4gUGxlYXNlIHNlbmQgYWxsIGZlZWRiYWNrIHRvIHRoZSAKCTxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbmV3c3BvcnRhbC90aHJlYWQucGhwP2dyb3VwPWVjbGlwc2UudGVjaG5vbG9neS5nbGltbWVyIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnL25ld3Nwb3J0YWwvdGhyZWFkLnBocD9ncm91cD1lY2xpcHNlLnRlY2hub2xvZ3kuZ2xpbW1lcjwvYT4gbmV3c2dyb3VwLg0KPC9wPg0KDQo8aDI+QmFja2dyb3VuZCBhbmQgR29hbDwvaDI+DQoNCjxwPg0KCVJ1YnksIGEgZHluYW1pY2FsbHktdHlwZWQgb2JqZWN0LW9yaWVudGVkIGxhbmd1YWdlLCBwcm92aWRlcyBncmVhdCBwcm9kdWN0aXZpdHkgZ2FpbnMgZHVlIHRvIGl0cyBwb3dlcmZ1bCBleHByZXNzaXZlIHN5bnRheCBhbmQgZHluYW1pYyBuYXR1cmUgYXMgZGVtb25zdHJhdGVkIGJ5IHRoZSBSdWJ5IG9uIFJhaWxzIGZyYW1ld29yayBmb3Igd2ViIGRldmVsb3BtZW50LiBIb3dldmVyLCBpdCBjdXJyZW50bHkgbGFja3MgYSByb2J1c3QgcGxhdGZvcm0taW5kZXBlbmRlbnQgZnJhbWV3b3JrIGZvciBidWlsZGluZyBkZXNrdG9wIGFwcGxpY2F0aW9ucy4NCjwvcD4NCg0KPHA+DQoJR2l2ZW4gdGhhdCBKYXZhIGxpYnJhcmllcyBjYW4gbm93IGJlIHV0aWxpemVkIGluIFJ1YnkgY29kZSB0aHJvdWdoIEpSdWJ5LCBFY2xpcHNlIHRlY2hub2xvZ2llcywgc3VjaCBhcyBTV1QsIEpGYWNlLCBhbmQgUkNQIGNhbiBoZWxwIGZpbGwgdGhlIGdhcCBvZiBkZXNrdG9wIGFwcGxpY2F0aW9uIGRldmVsb3BtZW50Lg0KPC9wPg0KDQo8cD4NCglUaGUgZ29hbCBvZiB0aGUgR2xpbW1lciBwcm9qZWN0IGlzIHRvIGNyZWF0ZSBhIEpSdWJ5IGZyYW1ld29yayBvbiB0b3Agb2YgRWNsaXBzZSB0ZWNobm9sb2dpZXMgdG8gZW5hYmxlIGVhc3kgYW5kIGVmZmljaWVudCBhdXRob3Jpbmcgb2YgZGVza3RvcCBhcHBsaWNhdGlvbnMgYnkgdGFraW5nIGFkdmFudGFnZSBvZiB0aGUgUnVieSBsYW5ndWFnZS4NCjwvcD4NCg0KPGgyPlBhY2thZ2luZyBhbmQgRGVwbG95bWVudDwvaDI+DQoNCjxwPg0KCUFzIEdsaW1tZXIgc29saWRpZmllcyBpdHMgRFNMIHRvIHdyaXRlIFNXVCBhbmQgUkNQIGFwcGxpY2F0aW9ucywgdGhlIG5leHQgY2hhbGxlbmdlIGlzIHRvIGZpZ3VyZSBvdXQgaG93IHRvIGVsZWdhbnRseSBpbnRlZ3JhdGUgaXQgYXMgYW4gRWNsaXBzZSBwbHVnLWluLg0KPC9wPg0KPHA+DQoJQWRkaXRpb25hbGx5LCB3ZSB3aWxsIGNvbnNpZGVyIHBhY2thZ2luZyBHbGltbWVyIChvciBwYXJ0cyBvZiBpdCkgYXMgYSBSdWJ5R2VtIHRvIG1ha2UgaXQgZWFzeSB0byBjb25zdW1lIGJ5IHRoZSBSdWJ5IGNvbW11bml0eS4NCjwvcD4NCg0KPGgyPlByb2plY3QgU2NvcGU8L2gyPg0KDQo8cD4NCglUaGUgc2NvcGUgb2YgdGhlIHByb2plY3QgaXMgc2ltcGx5IHRvIG1ha2UgaXQgcG9zc2libGUgdG8gdXNlIGEgSlJ1YnkgZnJhbWV3b3JrIHRvIGF1dGhvciBFY2xpcHNlLWJhc2VkIGFwcGxpY2F0aW9ucy4NCjwvcD4NCg0KPHA+DQoJRnV0dXJlIHdvcmsgbWF5IGludm9sdmUgZW5oYW5jZW1lbnRzIHRvIG1lZXQgbmV3IHVzZS1jYXNlcyBvciB0YWtlIGFkdmFudGFnZSBvZiBvdGhlciBFY2xpcHNlIHRlY2hub2xvZ2llcyBsaWtlIHRoZSBFY2xpcHNlIE1vZGVsaW5nIEZyYW1ld29yayBhbmQgb3RoZXIgUnVieSB0ZWNobm9sb2dpZXMgbGlrZSBSYWlscy4NCjwvcD4NCg0KPHA+DQoJV2hpbGUgR2xpbW1lcpJzIG9yaWdpbmFsIGdvYWwgaXMgdG8gZW5hYmxlIGRlc2t0b3AgYXBwbGljYXRpb24gZGV2ZWxvcG1lbnQgd2l0aCBKUnVieSwgdGhhdCBkb2VzIG5vdCBwcmVjbHVkZSBpdCBmcm9tIGdyb3dpbmcgdG8gY292ZXIgb3RoZXIgYXJlYXMsIHN1Y2ggYXMgd2ViIGRldmVsb3BtZW50LiBGb3IgZXhhbXBsZSwgd2hlbiBTV1Qgc3RhcnRzIHN1cHBvcnRpbmcgQWpheCB3aWRnZXRzLCBHbGltbWVyIG1heSBiZSBlbmhhbmNlZCB0byBmdXJ0aGVyIHNpbXBsaWZ5IHdlYiBkZXZlbG9wbWVudCAoZS5nLiBwcm92aWRlIGEgR2xpbW1lciBSYWlscyBwbHVnLWluLikNCjwvcD4NCg0KPGgyPk9yZ2FuaXphdGlvbjwvaDI+DQoNCjxoMz5NZW50b3JzPC9oMz4NCg0KPHVsPg0KCTxsaT5DaHJpcyBBbmlzemN6eWs8L2xpPg0KCTxsaT5FZCBNZXJrczwvbGk+DQo8L3VsPg0KDQo8aDM+SW5pdGlhbCBDb21taXR0ZXJzPC9oMz4NCg0KPHVsPg0KCTxsaT5Bbm5hcyAiQW5keSIgTWFsZWggKDxhIGhyZWY9Imh0dHA6Ly93d3cub2J0aXZhLmNvbSI+T2J0aXZhPC9hPik8L2xpPg0KCTxsaT5OaWNrIE1hbG5pY2sgKDxhIGhyZWY9Imh0dHA6Ly93d3cub2J0aXZhLmNvbSI+T2J0aXZhPC9hPik8L2xpPg0KCTxsaT5EYXZlIEhvb3ZlciAoPGEgaHJlZj0iaHR0cDovL3d3dy5vYnRpdmEuY29tIj5PYnRpdmE8L2E+KTwvbGk+DQoJPGxpPktldmluIFAuIFRheWxvciAoPGEgaHJlZj0iaHR0cDovL3d3dy5vYnRpdmEuY29tIj5PYnRpdmE8L2E+KTwvbGk+DQo8L3VsPg0KDQo8aDM+SW50ZXJlc3RlZCBQYXJ0aWVzPC9oMz4NCg0KPHVsPg0KCTxsaT5QREUgLSBDaHJpcyBBbmlzemN6eWsgW3p4QHVzLmlibS5jb21dPC9saT4NCgk8bGk+RU1GIC0gRWQgTWVya3MgW21lcmtzQGNhLmlibS5jb21dPC9saT4NCjwvdWw+DQoNCg0KICAgICAgPC9kaXY+DQogIDwvZGl2Pg0KPD9waHANCgkkaHRtbCA9IG9iX2dldF9jb250ZW50cygpOw0KCW9iX2VuZF9jbGVhbigpOw0KDQoJIyBHZW5lcmF0ZSB0aGUgd2ViIHBhZ2UNCgkkQXBwLT5nZW5lcmF0ZVBhZ2UoJHRoZW1lLCAkTWVudSwgJE5hdiwgJHBhZ2VBdXRob3IsICRwYWdlS2V5d29yZHMsICRwYWdlVGl0bGUsICRodG1sKTsNCj8+DQoNCg0K