ZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC54bWwueHBhdGgyLnByb2Nlc3Nvci50ZXN0cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3htbC94cGF0aDIvcHJvY2Vzc29yL3Rlc3QvVGVzdEJ1Z3MuamF2YSBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC54bWwueHBhdGgyLnByb2Nlc3Nvci50ZXN0cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3htbC94cGF0aDIvcHJvY2Vzc29yL3Rlc3QvVGVzdEJ1Z3MuamF2YQppbmRleCA3M2NhYWZlLi5lMDg4N2M2IDEwMDY0NAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3QueG1sLnhwYXRoMi5wcm9jZXNzb3IudGVzdHMvc3JjL29yZy9lY2xpcHNlL3dzdC94bWwveHBhdGgyL3Byb2Nlc3Nvci90ZXN0L1Rlc3RCdWdzLmphdmEKKysrIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LnhtbC54cGF0aDIucHJvY2Vzc29yLnRlc3RzL3NyYy9vcmcvZWNsaXBzZS93c3QveG1sL3hwYXRoMi9wcm9jZXNzb3IvdGVzdC9UZXN0QnVncy5qYXZhCkBAIC01Nyw3ICs1Nyw3IEBACiAgKiAgTXVrdWwgR2FuZGhpICAgIC0gYnVnIDMzOTAyNSAtIGZpeGVzIHRvIGZuOmRpc3RpbmN0LXZhbHVlcyBmdW5jdGlvbi4gYWJpbGl0eSB0byBmaW5kIGRpc3RpbmN0IHZhbHVlcyBvbiBub2RlIGl0ZW1zLgogICogIE11a3VsIEdhbmRoaSAgICAtIGJ1ZyAzNDE4NjIgLSBpbXByb3ZlbWVudHMgdG8gY29tcHV0YXRpb24gb2YgdHlwZWQgdmFsdWUgb2YgeHM6Ym9vbGVhbiBub2Rlcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAqICBKZXNwZXIgU3RlZW4gTW9sbGVyICAtIGJ1ZyAzNDA5MzMgLSBNaWdyYXRlIHRlc3RzIHRvIG5ldyBYUGF0aDIgQVBJCi0gKiAgTHVrYXN6IFd5Y2lzayAgIC0gYnVnIDM2MTA2MCAtIEFnZ3JlZ2F0aW9ucyB3aXRoIG5pbD3VdHJ1ZdUgdGhyb3cgZXhjZXB0aW9ucy4KKyAqICBMdWthc3ogV3ljaXNrICAgLSBidWcgMzYxMDYwIC0gQWdncmVnYXRpb25zIHdpdGggbmlsPSd0cnVlJyB0aHJvdyBleGNlcHRpb25zLgogICogIEx1a2FzeiBXeWNpc2sgICAtIGJ1ZyAzNjEwNTkgLSBGblJvdW5kSGFsZlRvRXZlbiBpcyB3cm9uZyBpbiBjYXNlIG9mIDIgYXJndW1lbnRzCiAgKiAgSmVzcGVyIE1vbGxlciAgIC0gYnVnIDM4ODUwNCAtIFhQYXRoIHNjYW5uZXIgZG9lcyBub3QgZGV0ZWN0IG5vbi1BU0NJSSBuYW1lcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KQEAgLTIwNCw3ICsyMDQsNyBAQAogCiAJCXNldHVwRHluYW1pY0NvbnRleHQobnVsbCk7CiAKLQkJY29tcGlsZVhQYXRoKCJjb3VudCgvL1NjaGyfc3NlbCkiKTsKKwkJY29tcGlsZVhQYXRoKCJjb3VudCgvL1NjaGxcdTAwRkNzc2VsKSIpOwogCQlSZXN1bHRTZXF1ZW5jZSBycyA9IGV2YWx1YXRlKGRvbURvYyk7CiAKIAkJU3RyaW5nIGFjdHVhbCA9IHJzLmZpcnN0KCkuZ2V0U3RyaW5nVmFsdWUoKTsKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC54bWwueHBhdGgyLnByb2Nlc3Nvci50ZXN0cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3htbC94cGF0aDIvcHJvY2Vzc29yL3Rlc3QvVGVzdFhQYXRoMzAuamF2YSBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC54bWwueHBhdGgyLnByb2Nlc3Nvci50ZXN0cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3htbC94cGF0aDIvcHJvY2Vzc29yL3Rlc3QvVGVzdFhQYXRoMzAuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTU2MjVmYi4uMDAwMDAwMAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3QueG1sLnhwYXRoMi5wcm9jZXNzb3IudGVzdHMvc3JjL29yZy9lY2xpcHNlL3dzdC94bWwveHBhdGgyL3Byb2Nlc3Nvci90ZXN0L1Rlc3RYUGF0aDMwLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICpDb3B5cmlnaHQgKGMpIDIwMTMgSmVzcGVyIFN0ZWVuIE3DuGxsZXIgYW5kIG90aGVycy4KLSAqQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICphcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKkNvbnRyaWJ1dG9yczoKLSAqICAgIEplc3BlciBTdGVlbiBNw7hsbGVyIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LnhtbC54cGF0aDIucHJvY2Vzc29yLnRlc3Q7Ci0KLWltcG9ydCBqYXZhLm1hdGguQmlnSW50ZWdlcjsKLWltcG9ydCBqYXZhLm5ldC5VUkw7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS53c3QueG1sLnhwYXRoMi5hcGkuUmVzdWx0U2VxdWVuY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnhtbC54cGF0aDIuYXBpLlhQYXRoMkV4cHJlc3Npb247Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnhtbC54cGF0aDIucHJvY2Vzc29yLkVuZ2luZTsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QueG1sLnhwYXRoMi5wcm9jZXNzb3IuSkZsZXhDdXBQYXJzZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnhtbC54cGF0aDIucHJvY2Vzc29yLlhQYXRoUGFyc2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC54bWwueHBhdGgyLnByb2Nlc3Nvci5YUGF0aFBhcnNlckV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QueG1sLnhwYXRoMi5wcm9jZXNzb3IuYXN0LlhQYXRoOwotaW1wb3J0IG9yZy5lY2xpcHNlLndzdC54bWwueHBhdGgyLnByb2Nlc3Nvci5pbnRlcm5hbC5hc3QuTGV0RXhwcjsKLWltcG9ydCBvcmcuZWNsaXBzZS53c3QueG1sLnhwYXRoMi5wcm9jZXNzb3IudXRpbC5EeW5hbWljQ29udGV4dEJ1aWxkZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnhtbC54cGF0aDIucHJvY2Vzc29yLnV0aWwuU3RhdGljQ29udGV4dEJ1aWxkZXI7Ci0KLXB1YmxpYyBjbGFzcyBUZXN0WFBhdGgzMCBleHRlbmRzIEFic3RyYWN0UHN5Y2hvUGF0aFRlc3QgewotCi0JcHVibGljIHZvaWQgdGVzdFBhcnNlSW52YWxpZFhQYXRoRXhwcmVzc2lvbigpIHRocm93cyBFeGNlcHRpb24gewotCQl0cnkgewotCQkJWFBhdGhQYXJzZXIgeHBwID0gbmV3IEpGbGV4Q3VwUGFyc2VyKCk7Ci0JCQlTdHJpbmcgeHBhdGggPSAibGV0ICQgOj0gMTIzIHJldHVybiAkYSI7Ci0JCQl4cHAucGFyc2UoeHBhdGgpOwotCQkJZmFpbCgiWFBhdGggcGFyc2luZyBzdWNlZWRlZCB3aGVuIGl0IHNob3VsZCBoYXZlIGZhaWxlZC4iKTsKLQkJfSBjYXRjaCAoWFBhdGhQYXJzZXJFeGNlcHRpb24gZXgpIHsKLQotCQl9Ci0JfQotCi0JcHVibGljIHZvaWQgdGVzdFBhcnNlVmFsaWRYUGF0aEV4cHJlc3Npb24oKSB0aHJvd3MgRXhjZXB0aW9uIHsKLQkJU3RhdGljQ29udGV4dEJ1aWxkZXIgc3RhdGljQ29udGV4dEJ1aWxkZXIgPSBuZXcgU3RhdGljQ29udGV4dEJ1aWxkZXIoKTsKLQotCQlYUGF0aDJFeHByZXNzaW9uIGV4cHIgPSBuZXcgRW5naW5lKCkucGFyc2VFeHByZXNzaW9uKCJsZXQgJGEgOj0gMSwgJGIgOj0gJGErMiwgJGMgOj0gJGEgKyAkYiByZXR1cm4gJGMrNSIsIHN0YXRpY0NvbnRleHRCdWlsZGVyKTsKLQkJRHluYW1pY0NvbnRleHRCdWlsZGVyIGR5bmFtaWNDb250ZXh0QnVpbGRlciA9IG5ldyBEeW5hbWljQ29udGV4dEJ1aWxkZXIoc3RhdGljQ29udGV4dEJ1aWxkZXIpOwotCQlSZXN1bHRTZXF1ZW5jZSByZXN1bHQgPSBleHByLmV2YWx1YXRlKGR5bmFtaWNDb250ZXh0QnVpbGRlciwgbmV3IE9iamVjdFswXSk7Ci0JCWFzc2VydEVxdWFscygxLCAgcmVzdWx0LnNpemUoKSk7Ci0JCWFzc2VydEVxdWFscyhCaWdJbnRlZ2VyLnZhbHVlT2YoOSksICByZXN1bHQudmFsdWUoMCkpOwotCX0KLX0K