PD9waHAgIAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCXJlcXVpcmVfb25jZSgkX1NFUlZFUlsnRE9DVU1FTlRfUk9PVCddIC4gIi9lY2xpcHNlLm9yZy1jb21tb24vc3lzdGVtL2FwcC5jbGFzcy5waHAiKTsJcmVxdWlyZV9vbmNlKCRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10gLiAiL2VjbGlwc2Uub3JnLWNvbW1vbi9zeXN0ZW0vbmF2LmNsYXNzLnBocCIpOyAJcmVxdWlyZV9vbmNlKCRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10gLiAiL2VjbGlwc2Uub3JnLWNvbW1vbi9zeXN0ZW0vbWVudS5jbGFzcy5waHAiKTsgCSRBcHAgCT0gbmV3IEFwcCgpOwkkTmF2CT0gbmV3IE5hdigpOwkkTWVudSAJPSBuZXcgTWVudSgpOwkJaW5jbHVkZSgiX3Byb2plY3RDb21tb24ucGhwIik7ICAgICMgQWxsIG9uIHRoZSBzYW1lIGxpbmUgdG8gdW5jbHV0dGVyIHRoZSB1c2VyJ3MgZGVza3RvcCcKCgojCiMgQmVnaW46IHBhZ2Utc3BlY2lmaWMgc2V0dGluZ3MuICBDaGFuZ2UgdGhlc2UuCiRwYWdlVGl0bGUgCQk9ICJFY2xpcHNlIFN1bW1pdCBFdXJvcGUgQ2FsbCBmb3IgUGFwZXJzIE5vdyBPcGVuIjsKJHBhZ2VLZXl3b3Jkcwk9ICJlY2xpcHNlIHN1bW1pdCBldXJvcGUsIGNhbGwgZm9yIHBhcGVycywgMjAwOCI7CiRwYWdlQXV0aG9yCQk9ICJJYW4gU2tlcnJldHQiOwoKIyBBZGQgcGFnZS1zcGVjaWZpYyBOYXYgYmFycyBoZXJlCiMgRm9ybWF0IGlzIExpbmsgdGV4dCwgbGluayBVUkwgKGNhbiBiZSBodHRwOi8vd3d3LnNvbWVvdGhlcnNpdGUuY29tLyksIHRhcmdldCAoX3NlbGYsIF9ibGFuaykKIyAkTmF2LT5hZGRDdXN0b21OYXYoIk15IExpbmsiLCAibXlwYWdlLnBocCIsICJfc2VsZiIpOwojICROYXYtPmFkZEN1c3RvbU5hdigiR29vZ2xlIiwgImh0dHA6Ly93d3cuZ29vZ2xlLmNvbS8iLCAiX2JsYW5rIik7CgojIEVuZDogcGFnZS1zcGVjaWZpYyBzZXR0aW5ncwojCgojIFBhc3RlIHlvdXIgSFRNTCBjb250ZW50IGJldHdlZW4gdGhlIEVPSFRNTCBtYXJrZXJzIQokaHRtbCA9IDw8PEVPSFRNTAoJCTxzdHlsZT4KCQkucGFkZGVkbGlzdCBsaSB7CXBhZGRpbmctYm90dG9tOjdweDsJfQoJPC9zdHlsZT4KPGRpdiBpZD0ibWFpbmNvbnRlbnQiPgoJPGRpdiBpZD0ibWlkY29sdW1uIj4KCQk8aDI+UHJlc3MgUmVsZWFzZTwvaDI+CgoJCTxjZW50ZXI+CgkJPGgxPiRwYWdlVGl0bGU8L2gxPgoJCTwvY2VudGVyPgoJCQoJCTxwPjxzdHJvbmc+THVkd2lnc2J1cmcsIEdlcm1hbnkgliBNYXkgMjYsIDIwMDg8L3N0cm9uZz4gLSAKCQlUaGUgRWNsaXBzZSBGb3VuZGF0aW9uIGlzIHBsZWFzZWQgdG8gYW5ub3VuY2UgdGhlIDNyZCBhbm51YWwgRWNsaXBzZSBTdW1taXQgRXVyb3BlIG9uIE5vdmVtYmVyIDE5LTIwLCAyMDA4LCBpbiBMdWR3aWdzYnVyZywgR2VybWFueS4gVGhlIEVjbGlwc2UgU3VtbWl0IGlzIHRoZSBGb3VuZGF0aW9uknMgcHJlbWllciBldmVudCBkZXNpZ25lZCB0byBjcmVhdGUgb3Bwb3J0dW5pdGllcyBmb3IgdGhlIEV1cm9wZWFuIEVjbGlwc2UgY29tbXVuaXR5IHRvIGV4cGxvcmUsIHNoYXJlLCBhbmQgY29sbGFib3JhdGUgb24gdGhlIGxhdGVzdCBpZGVhcyBhbmQgaW5mb3JtYXRpb24gYWJvdXQgRWNsaXBzZSBhbmQgaXRzIG1lbWJlcnMuIDwvcD4KCQkKCQk8cD5UaGUgY29uZmVyZW5jZSB3aWxsIGJlIHByZWNlZWRlZCBieSBvbmUgZGF5IG9mIHN5bXBvc2lhIGZvbGxvd2VkIGJ5IHR3byBkYXlzIG9mIHRlY2huaWNhbCBhbmQgYnVzaW5lc3MgdHJhY2sgc2Vzc2lvbnMsIHNlbGVjdGVkIGtleW5vdGVzLCBkZW1vcyBhbmQgbmV0d29ya2luZyBnYXRoZXJpbmdzLiAgVGhlIGNvbmZlcmVuY2UgaXMgYSBzdGltdWxhdGluZyBhbmQgZHluYW1pYyBldmVudCBmb3IgRWNsaXBzZSBjb21taXR0ZXJzLCBjb250cmlidXRvcnMsIGFkb3B0ZXJzLCBhZGQtaW4gcHJvdmlkZXJzIGFuZCBzZXJ2aWNlIHByb3ZpZGVycyB0byBsZWFybiwgc2hhcmUgZXhwZXJ0aXNlIGFuZCBkaXNjb3ZlciBuZXcgb3Bwb3J0dW5pdGllcyBhbmQgc29sdXRpb25zIGluIHRoZSBFY2xpcHNlIGVjb3N5c3RlbS48L3A+IAoKCQk8cD5UaGUgY29uZmVyZW5jZSBjYWxsIGZvciBwYXBlcnMgaXMgbm93IG9wZW4gYW5kIHdpbGwgY2xvc2UgU2VwdGVtYmVyIDEsIDIwMDguICBJbmRpdmlkdWFscyBhcmUgZW5jb3VyYWdlZCB0byBzdWJtaXQgcHJvcG9zYWxzIHRoYXQgZm9jdXMgb24gMSBvZiA0IGNhdGVnb3JpZXM6IDEpIENvbnN1bWVyIFN0b3JpZXM7IDIpIFRlY2huaWNhbCBEZW1vczsgMykgR2FueW1lZGUgdXBkYXRlczsgb3IgNCkgTmV3ICYgTm90ZXdvcnRoeS4gIEd1aWRlbGluZXMgZm9yIHN1Ym1pc3Npb25zIGFyZSBhdmFpbGFibGUgYXQgPGEgaHJlZj0iaHR0cDovL2VjbGlwc2VzdW1taXQub3JnL3N1bW1pdGV1cm9wZTIwMDgvc3VibWlzc2lvbnMiPmh0dHA6Ly9lY2xpcHNlc3VtbWl0Lm9yZy9zdW1taXRldXJvcGUyMDA4L3N1Ym1pc3Npb25zPC9hPi48L3A+CiAKCQk8cD5FY2xpcHNlIFN1bW1pdCBFdXJvcGUgc3BvbnNvcnNoaXAgcGFja2FnZXMgYXJlIGFsc28gbm93IGF2YWlsYWJsZSBhdCA8YSBocmVmPSJodHRwOi8vZWNsaXBzZXN1bW1pdC5vcmcvc3VtbWl0ZXVyb3BlMjAwOC9zcG9uc29yc2hpcCI+aHR0cDovL2VjbGlwc2VzdW1taXQub3JnL3N1bW1pdGV1cm9wZTIwMDgvc3BvbnNvcnNoaXA8L2E+LiBBdHRlbmRlZSByZWdpc3RyYXRpb24gd2lsbCBiZSBvcGVuIGxhdGVyIGluIHRoZSBzdW1tZXIuPC9wPgoJCQkJCgkJPHA+PGI+QWJvdXQgdGhlIEVjbGlwc2UgRm91bmRhdGlvbjwvYj48YnI+CgkJRWNsaXBzZSBpcyBhbiBvcGVuIHNvdXJjZSBjb21tdW5pdHkgd2hvc2UgcHJvamVjdHMgYXJlIGZvY3VzZWQgb24gcHJvdmlkaW5nIGFuIGV4dGVuc2libGUgZGV2ZWxvcG1lbnQgcGxhdGZvcm0gYW5kIGFwcGxpY2F0aW9uCgkJZnJhbWV3b3JrcyBmb3IgYnVpbGRpbmcgc29mdHdhcmUuIEVjbGlwc2UgcHJvdmlkZXMgZXh0ZW5zaWJsZSB0b29scyBhbmQgZnJhbWV3b3JrcyB0aGF0IHNwYW4gdGhlIHNvZnR3YXJlIGRldmVsb3BtZW50CgkJbGlmZWN5Y2xlLCBpbmNsdWRpbmcgc3VwcG9ydCBmb3IgbW9kZWxpbmcsIGxhbmd1YWdlIGRldmVsb3BtZW50IGVudmlyb25tZW50cyBmb3IgSmF2YSwgQy9DKysgYW5kIG90aGVycywgdGVzdGluZyBhbmQKCQlwZXJmb3JtYW5jZSwgYnVzaW5lc3MgaW50ZWxsaWdlbmNlLCByaWNoIGNsaWVudCBhcHBsaWNhdGlvbnMgYW5kIGVtYmVkZGVkIGRldmVsb3BtZW50LiBBIGxhcmdlLCB2aWJyYW50IGVjb3N5c3RlbSBvZiBtYWpvcgoJCXRlY2hub2xvZ3kgdmVuZG9ycywgaW5ub3ZhdGl2ZSBzdGFydC11cHMsIHVuaXZlcnNpdGllcyBhbmQgcmVzZWFyY2ggaW5zdGl0dXRpb25zIGFuZCBpbmRpdmlkdWFscyBleHRlbmQsIGNvbXBsZW1lbnQgYW5kIHN1cHBvcnQKCQl0aGUgRWNsaXBzZSBQbGF0Zm9ybS48L3A+CgkJCgkJPHA+VGhlIEVjbGlwc2UgRm91bmRhdGlvbiBpcyBhIG5vdC1mb3ItcHJvZml0LCBtZW1iZXIgc3VwcG9ydGVkIGNvcnBvcmF0aW9uIHRoYXQgaG9zdHMgdGhlIEVjbGlwc2UgcHJvamVjdHMuIEZ1bGwgZGV0YWlscyBvZgoJCUVjbGlwc2UgYW5kIHRoZSBFY2xpcHNlIEZvdW5kYXRpb24gYXJlIGF2YWlsYWJsZSBhdCA8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnIiB0YXJnZXQ9ImJsYW5rIj53d3cuZWNsaXBzZS5vcmc8L2E+LjwvcD4KCgkJPHA+PGNlbnRlcj4jIyM8L2NlbnRlcj48cD4KCQkKCQk8cD5BbGwgY29tcGFueS9wcm9kdWN0IG5hbWVzIGFuZCBzZXJ2aWNlIG1hcmtzIG1heSBiZSB0cmFkZW1hcmtzIG9yIHJlZ2lzdGVyZWQgdHJhZGVtYXJrcyBvZiB0aGVpciByZXNwZWN0aXZlIGNvbXBhbmllcy48L3A+CgkJCQkKCQk8cD48Yj5QcmVzcyBDb250YWN0PC9iPjxici8+CgkJSWFuIFNrZXJyZXR0PGJyLz4KCQlEaXJlY3RvciBvZiBNYXJrZXRpbmc8YnIvPgoJCUVjbGlwc2UgRm91bmRhdGlvbjxici8+CgkJPGEgaHJlZj0ibWFpbHRvOmlhbi5za2VycmV0dEBlY2xpcHNlLm9yZyI+aWFuLnNrZXJyZXR0QGVjbGlwc2Uub3JnPC9hPjxicj4KCQkrMSAtNjEzLTIyNC05NDYxIChleHQuIDIyNyk8YnI+CgkJPGJyPgoKCTwvZGl2PgoKPC9kaXY+CncKCgkJCgpFT0hUTUw7CgoJJGh0bWwgPSBAbWJfY29udmVydF9lbmNvZGluZygkaHRtbCwgIkhUTUwtRU5USVRJRVMiLCAiYXV0byIpOwoJIyBHZW5lcmF0ZSB0aGUgd2ViIHBhZ2UKCSRBcHAtPmdlbmVyYXRlUGFnZSgkdGhlbWUsICRNZW51LCAkTmF2LCAkcGFnZUF1dGhvciwgJHBhZ2VLZXl3b3JkcywgJHBhZ2VUaXRsZSwgJGh0bWwpOwo/PgoK