ZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC54bWwueHBhdGgyLnByb2Nlc3Nvci50ZXN0cy9idWdUZXN0RmlsZXMvYnVnTmlsbGVkTm9TY2hlbWEueG1sIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LnhtbC54cGF0aDIucHJvY2Vzc29yLnRlc3RzL2J1Z1Rlc3RGaWxlcy9idWdOaWxsZWROb1NjaGVtYS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTYxNzg4NQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC54bWwueHBhdGgyLnByb2Nlc3Nvci50ZXN0cy9idWdUZXN0RmlsZXMvYnVnTmlsbGVkTm9TY2hlbWEueG1sCkBAIC0wLDAgKzEsMTQgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cm9vdCB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIj4KKyAgPCEtLSBOaWxsYWJsZSwgYnV0IG5vdCBuaWxsZWQgLS0+CisgIDxlbGVtZW50MT4xPC9lbGVtZW50MT4KKyAgCisgIDwhLS0gTmlsbGFibGUgYW5kIG5pbGxlZCAtLT4KKyAgPGVsZW1lbnQyIHhzaTpuaWw9InRydWUiLz4KKyAgCisgIDwhLS0gTm90IG5pbGxhYmxlLCBhbmQgb2J2aW91c2x5IG5vdCBuaWxsZWQgKGl0IHdvdWxkIGdpdmUgYSB2YWxpZGF0aW9uIGVycm9yKS0tPgorICA8ZWxlbWVudDM+NDI8L2VsZW1lbnQzPgorICAKKyAgPCEtLSBOb3QgcHJvY2Vzc2VkIC8gdmFsaWRhdGVkLCBhbmQgc28gbmV2ZXIgbmlsbCAtLT4KKyAgPGVsZW1lbnQ0IHhzaTpuaWw9InRydWUiPjQyPC9lbGVtZW50ND4KKzwvcm9vdD4KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLndzdC54bWwueHBhdGgyLnByb2Nlc3Nvci50ZXN0cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3htbC94cGF0aDIvcHJvY2Vzc29yL3Rlc3QvVGVzdEJ1Z3MuamF2YSBiL3Rlc3RzL29yZy5lY2xpcHNlLndzdC54bWwueHBhdGgyLnByb2Nlc3Nvci50ZXN0cy9zcmMvb3JnL2VjbGlwc2Uvd3N0L3htbC94cGF0aDIvcHJvY2Vzc29yL3Rlc3QvVGVzdEJ1Z3MuamF2YQppbmRleCAxNjg1OGNkLi4wZTNkNDUzIDEwMDY0NAotLS0gYS90ZXN0cy9vcmcuZWNsaXBzZS53c3QueG1sLnhwYXRoMi5wcm9jZXNzb3IudGVzdHMvc3JjL29yZy9lY2xpcHNlL3dzdC94bWwveHBhdGgyL3Byb2Nlc3Nvci90ZXN0L1Rlc3RCdWdzLmphdmEKKysrIGIvdGVzdHMvb3JnLmVjbGlwc2Uud3N0LnhtbC54cGF0aDIucHJvY2Vzc29yLnRlc3RzL3NyYy9vcmcvZWNsaXBzZS93c3QveG1sL3hwYXRoMi9wcm9jZXNzb3IvdGVzdC9UZXN0QnVncy5qYXZhCkBAIC01OCw3ICs1OCw4IEBACiAgKiAgTXVrdWwgR2FuZGhpICAgIC0gYnVnIDM0MTg2MiAtIGltcHJvdmVtZW50cyB0byBjb21wdXRhdGlvbiBvZiB0eXBlZCB2YWx1ZSBvZiB4czpib29sZWFuIG5vZGVzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICogIEplc3BlciBTdGVlbiBNb2xsZXIgIC0gYnVnIDM0MDkzMyAtIE1pZ3JhdGUgdGVzdHMgdG8gbmV3IFhQYXRoMiBBUEkKICAqICBMdWthc3ogV3ljaXNrICAgLSBidWcgMzYxMDYwIC0gQWdncmVnYXRpb25zIHdpdGggbmlsPdV0cnVl1SB0aHJvdyBleGNlcHRpb25zLgotICogIEx1a2FzeiBXeWNpc2sgICAtIGJ1ZyAyNjEwNTkgLSBGblJvdW5kSGFsZlRvRXZlbiBpcyB3cm9uZyBpbiBjYXNlIG9mIDIgYXJndW1lbnRzCisgKiAgTHVrYXN6IFd5Y2lzayAgIC0gYnVnIDM2MTA1OSAtIEZuUm91bmRIYWxmVG9FdmVuIGlzIHdyb25nIGluIGNhc2Ugb2YgMiBhcmd1bWVudHMKKyAqICBMdWthc3ogV3ljaXNrICAgLSBidWcgMzYxNjU5IC0gRWxlbW50VHlwZSB0eXBlZCB2YWx1ZSBpbiBjYXNlIG9mIG5pbD3VdHJ1ZdUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIHBhY2thZ2Ugb3JnLmVjbGlwc2Uud3N0LnhtbC54cGF0aDIucHJvY2Vzc29yLnRlc3Q7CkBAIC05NSw2ICs5Niw3IEBACiBpbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnhtbC54cGF0aDIucHJvY2Vzc29yLlN0YXRpY0Vycm9yOwogaW1wb3J0IG9yZy5lY2xpcHNlLndzdC54bWwueHBhdGgyLnByb2Nlc3Nvci5YUGF0aFBhcnNlckV4Y2VwdGlvbjsKIGltcG9ydCBvcmcuZWNsaXBzZS53c3QueG1sLnhwYXRoMi5wcm9jZXNzb3IuZnVuY3Rpb24uRm5GdW5jdGlvbkxpYnJhcnk7CitpbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnhtbC54cGF0aDIucHJvY2Vzc29yLmludGVybmFsLnR5cGVzLk51bWVyaWNUeXBlOwogaW1wb3J0IG9yZy5lY2xpcHNlLndzdC54bWwueHBhdGgyLnByb2Nlc3Nvci5pbnRlcm5hbC50eXBlcy5YU0Jvb2xlYW47CiBpbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnhtbC54cGF0aDIucHJvY2Vzc29yLmludGVybmFsLnR5cGVzLlhTRGVjaW1hbDsKIGltcG9ydCBvcmcuZWNsaXBzZS53c3QueG1sLnhwYXRoMi5wcm9jZXNzb3IuaW50ZXJuYWwudHlwZXMuWFNEb3VibGU7CkBAIC0yNTg3LDcgKzI1ODksNzUgQEAKIAkJYWN0dWFsID0gKChYU0RlY2ltYWwpIHJzLmZpcnN0KCkpLmdldFN0cmluZ1ZhbHVlKCk7CiAJCWFzc2VydEVxdWFscygiMSIsIGFjdHVhbCk7CiAJfQotCQorCisJcHVibGljIHZvaWQgdGVzdE51bWJlckFnZ3JlZ2F0aW9uV2l0aE5pbGwyKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisKKwkJVVJMIGZpbGVVUkwgPSBidW5kbGUuZ2V0RW50cnkoIi9idWdUZXN0RmlsZXMvYnVnTmlsbGVkTm9TY2hlbWEueG1sIik7CisKKwkJbG9hZERPTURvY3VtZW50KGZpbGVVUkwpOworCQlYU01vZGVsIHNjaGVtYSA9IGdldEdyYW1tYXIoKTsKKworCQlzZXR1cER5bmFtaWNDb250ZXh0KHNjaGVtYSk7CisJCQorCQlTdHJpbmcgeHBhdGggPSBudWxsOworCQlSZXN1bHRTZXF1ZW5jZSBycyA9IG51bGw7CisJCVN0cmluZyBhY3R1YWwgPSBudWxsOworCQkKKwkJLy9hCisJCXhwYXRoID0gImZuOmNvdW50KCggL3Jvb3QvZWxlbWVudDEsIC9yb290L2VsZW1lbnQyLCAvcm9vdC9lbGVtZW50MyApKSI7CisJCWNvbXBpbGVYUGF0aCh4cGF0aCk7CisJCXJzID0gZXZhbHVhdGUoZG9tRG9jKTsKKwkJCisJCWFzc2VydFRydWUoIHJzLnNpemUoKT4wICk7CisJCWFjdHVhbCA9ICgoWFNEZWNpbWFsKSBycy5maXJzdCgpKS5nZXRTdHJpbmdWYWx1ZSgpOworCQlhc3NlcnRFcXVhbHMoIjMiLCBhY3R1YWwpOworCQkKKwkJLy9iCisJCXhwYXRoID0gImZuOnN1bSgoIC9yb290L2VsZW1lbnQxLCAvcm9vdC9lbGVtZW50MiwgL3Jvb3QvZWxlbWVudDMgKSkiOworCQljb21waWxlWFBhdGgoeHBhdGgpOworCQlycyA9IGV2YWx1YXRlKGRvbURvYyk7CisJCQorCQlhc3NlcnRUcnVlKCBycy5zaXplKCk+MCApOworCQlhY3R1YWwgPSAoKE51bWVyaWNUeXBlKSBycy5maXJzdCgpKS5nZXRTdHJpbmdWYWx1ZSgpOworCQlhc3NlcnRFcXVhbHMoIjQzIiwgYWN0dWFsKTsKKwkJCisJCS8vYjIKKwkJeHBhdGggPSAiZm46c3VtKCggL3Jvb3QvZWxlbWVudDEsIC9yb290L2VsZW1lbnQyLCAvcm9vdC9lbGVtZW50MyApLCAxMDApIjsKKwkJY29tcGlsZVhQYXRoKHhwYXRoKTsKKwkJcnMgPSBldmFsdWF0ZShkb21Eb2MpOworCQkKKwkJYXNzZXJ0VHJ1ZSggcnMuc2l6ZSgpPjAgKTsKKwkJYWN0dWFsID0gKChOdW1lcmljVHlwZSkgcnMuZmlyc3QoKSkuZ2V0U3RyaW5nVmFsdWUoKTsKKwkJYXNzZXJ0RXF1YWxzKCIxNDMiLCBhY3R1YWwpOworCQkKKwkJLy9jCisJCXhwYXRoID0gImZuOmF2ZygoIC9yb290L2VsZW1lbnQxLCAvcm9vdC9lbGVtZW50MiwgL3Jvb3QvZWxlbWVudDMsIDEgKSkiOworCQljb21waWxlWFBhdGgoeHBhdGgpOworCQlycyA9IGV2YWx1YXRlKGRvbURvYyk7CisJCQorCQlhc3NlcnRUcnVlKCBycy5zaXplKCk+MCApOworCQlhY3R1YWwgPSAoKE51bWVyaWNUeXBlKSBycy5maXJzdCgpKS5nZXRTdHJpbmdWYWx1ZSgpOworCQlhc3NlcnRFcXVhbHMoIjExIiwgYWN0dWFsKTsKKwkJCisJCS8vZAorCQl4cGF0aCA9ICJmbjptYXgoKCAvcm9vdC9lbGVtZW50MSwgL3Jvb3QvZWxlbWVudDIsIC9yb290L2VsZW1lbnQzICkpIjsKKwkJY29tcGlsZVhQYXRoKHhwYXRoKTsKKwkJcnMgPSBldmFsdWF0ZShkb21Eb2MpOworCQkKKwkJYXNzZXJ0VHJ1ZSggcnMuc2l6ZSgpPjAgKTsKKwkJYWN0dWFsID0gKChOdW1lcmljVHlwZSkgcnMuZmlyc3QoKSkuZ2V0U3RyaW5nVmFsdWUoKTsKKwkJYXNzZXJ0RXF1YWxzKCI0MiIsIGFjdHVhbCk7CisJCQorCQkvL2UKKwkJeHBhdGggPSAiZm46bWluKCggL3Jvb3QvZWxlbWVudDEsIC9yb290L2VsZW1lbnQyLCAvcm9vdC9lbGVtZW50MyApKSI7CisJCWNvbXBpbGVYUGF0aCh4cGF0aCk7CisJCXJzID0gZXZhbHVhdGUoZG9tRG9jKTsKKwkJCisJCWFzc2VydFRydWUoIHJzLnNpemUoKT4wICk7CisJCWFjdHVhbCA9ICgoTnVtZXJpY1R5cGUpIHJzLmZpcnN0KCkpLmdldFN0cmluZ1ZhbHVlKCk7CisJCWFzc2VydEVxdWFscygiMSIsIGFjdHVhbCk7CisJfQorCiAJcHVibGljIHZvaWQgdGVzdEJ1ZzMzOTAyNV9kaXN0aW5jdFZhbHVlc09uTm9kZVNlcXVlbmNlKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CiAJCS8vIGJ1ZyAzMzkwMjUKIAkJVVJMIGZpbGVVUkwgPSBidW5kbGUuZ2V0RW50cnkoIi9idWdUZXN0RmlsZXMvYnVnMzM5MDI1LnhtbCIpOwo=