ZGlmZiAtLWdpdCBhL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMuY2hlc3NleHRlbnNpb24vYWJvdXQuaHRtbCBiL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMuY2hlc3NleHRlbnNpb24vYWJvdXQuaHRtbAppbmRleCBkZDNjMDg5Li4xNjRmNzgxIDEwMDY0NAotLS0gYS9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLmNoZXNzZXh0ZW5zaW9uL2Fib3V0Lmh0bWwKKysrIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy5jaGVzc2V4dGVuc2lvbi9hYm91dC5odG1sCkBAIC0yLDI3ICsyLDM1IEBACiAgICAgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXN0cmljdC5kdGQiPgogPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgogPGhlYWQ+Ci08bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xIi8+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xIiAvPgogPHRpdGxlPkFib3V0PC90aXRsZT4KIDwvaGVhZD4KIDxib2R5IGxhbmc9IkVOLVVTIj4KLTxoMj5BYm91dCBUaGlzIENvbnRlbnQ8L2gyPgotIAotPHA+Tm92ZW1iZXIgMTQsIDIwMDg8L3A+CQotPGgzPkxpY2Vuc2U8L2gzPgorCTxoMj5BYm91dCBUaGlzIENvbnRlbnQ8L2gyPgogCi08cD5UaGUgRWNsaXBzZSBGb3VuZGF0aW9uIG1ha2VzIGF2YWlsYWJsZSBhbGwgY29udGVudCBpbiB0aGlzIHBsdWctaW4gKCZxdW90O0NvbnRlbnQmcXVvdDspLiAgVW5sZXNzIG90aGVyd2lzZSAKLWluZGljYXRlZCBiZWxvdywgdGhlIENvbnRlbnQgaXMgcHJvdmlkZWQgdG8geW91IHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUKLUVjbGlwc2UgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAxLjAgKCZxdW90O0VQTCZxdW90OykuICBBIGNvcHkgb2YgdGhlIEVQTCBpcyBhdmFpbGFibGUgCi1hdCA8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWw8L2E+LgotRm9yIHB1cnBvc2VzIG9mIHRoZSBFUEwsICZxdW90O1Byb2dyYW0mcXVvdDsgd2lsbCBtZWFuIHRoZSBDb250ZW50LjwvcD4KKwk8cD5Ob3ZlbWJlciAzMCwgMjAxNzwvcD4KKwk8aDM+TGljZW5zZTwvaDM+CiAKLTxwPklmIHlvdSBkaWQgbm90IHJlY2VpdmUgdGhpcyBDb250ZW50IGRpcmVjdGx5IGZyb20gdGhlIEVjbGlwc2UgRm91bmRhdGlvbiwgdGhlIENvbnRlbnQgaXMgCi1iZWluZyByZWRpc3RyaWJ1dGVkIGJ5IGFub3RoZXIgcGFydHkgKCZxdW90O1JlZGlzdHJpYnV0b3ImcXVvdDspIGFuZCBkaWZmZXJlbnQgdGVybXMgYW5kIGNvbmRpdGlvbnMgbWF5Ci1hcHBseSB0byB5b3VyIHVzZSBvZiBhbnkgb2JqZWN0IGNvZGUgaW4gdGhlIENvbnRlbnQuICBDaGVjayB0aGUgUmVkaXN0cmlidXRvcidzIGxpY2Vuc2UgdGhhdCB3YXMgCi1wcm92aWRlZCB3aXRoIHRoZSBDb250ZW50LiAgSWYgbm8gc3VjaCBsaWNlbnNlIGV4aXN0cywgY29udGFjdCB0aGUgUmVkaXN0cmlidXRvci4gIFVubGVzcyBvdGhlcndpc2UKLWluZGljYXRlZCBiZWxvdywgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFUEwgc3RpbGwgYXBwbHkgdG8gYW55IHNvdXJjZSBjb2RlIGluIHRoZSBDb250ZW50Ci1hbmQgc3VjaCBzb3VyY2UgY29kZSBtYXkgYmUgb2J0YWluZWQgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZyI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZzwvYT4uPC9wPgorCTxwPgorCQlUaGUgRWNsaXBzZSBGb3VuZGF0aW9uIG1ha2VzIGF2YWlsYWJsZSBhbGwgY29udGVudCBpbiB0aGlzIHBsdWctaW4KKwkJKCZxdW90O0NvbnRlbnQmcXVvdDspLiBVbmxlc3Mgb3RoZXJ3aXNlIGluZGljYXRlZCBiZWxvdywgdGhlIENvbnRlbnQKKwkJaXMgcHJvdmlkZWQgdG8geW91IHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRWNsaXBzZQorCQlQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDIuMCAoJnF1b3Q7RVBMJnF1b3Q7KS4gQSBjb3B5IG9mIHRoZSBFUEwgaXMKKwkJYXZhaWxhYmxlIGF0IDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMCI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wPC9hPi4KKwkJRm9yIHB1cnBvc2VzIG9mIHRoZSBFUEwsICZxdW90O1Byb2dyYW0mcXVvdDsgd2lsbCBtZWFuIHRoZSBDb250ZW50LgorCTwvcD4KKworCTxwPgorCQlJZiB5b3UgZGlkIG5vdCByZWNlaXZlIHRoaXMgQ29udGVudCBkaXJlY3RseSBmcm9tIHRoZSBFY2xpcHNlCisJCUZvdW5kYXRpb24sIHRoZSBDb250ZW50IGlzIGJlaW5nIHJlZGlzdHJpYnV0ZWQgYnkgYW5vdGhlciBwYXJ0eQorCQkoJnF1b3Q7UmVkaXN0cmlidXRvciZxdW90OykgYW5kIGRpZmZlcmVudCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBtYXkKKwkJYXBwbHkgdG8geW91ciB1c2Ugb2YgYW55IG9iamVjdCBjb2RlIGluIHRoZSBDb250ZW50LiBDaGVjayB0aGUKKwkJUmVkaXN0cmlidXRvcidzIGxpY2Vuc2UgdGhhdCB3YXMgcHJvdmlkZWQgd2l0aCB0aGUgQ29udGVudC4gSWYgbm8gc3VjaAorCQlsaWNlbnNlIGV4aXN0cywgY29udGFjdCB0aGUgUmVkaXN0cmlidXRvci4gVW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQKKwkJYmVsb3csIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRVBMIHN0aWxsIGFwcGx5IHRvIGFueSBzb3VyY2UKKwkJY29kZSBpbiB0aGUgQ29udGVudCBhbmQgc3VjaCBzb3VyY2UgY29kZSBtYXkgYmUgb2J0YWluZWQgYXQgPGEKKwkJCWhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnPC9hPi4KKwk8L3A+CiAKIDwvYm9keT4KIDwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLmNoZXNzZXh0ZW5zaW9uL2J1aWxkLnByb3BlcnRpZXMgYi9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLmNoZXNzZXh0ZW5zaW9uL2J1aWxkLnByb3BlcnRpZXMKaW5kZXggODRlMzg3Mi4uMzJhMTI5ZSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy5jaGVzc2V4dGVuc2lvbi9idWlsZC5wcm9wZXJ0aWVzCisrKyBiL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMuY2hlc3NleHRlbnNpb24vYnVpbGQucHJvcGVydGllcwpAQCAtMiw5ICsyLDkgQEAKICMKICMgQ29weXJpZ2h0IChjKSAyMDEzLCAyMDE1IEludGVjcyBTcEEgCiAjIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSMgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisjIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogIyB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotIyBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorIyBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogIwogIyBDb250cmlidXRvcnM6CiAjIE5pY2hvbGFzIFBhY2luaSBuaWNob2xhcy5wYWNpbmlAaW50ZWNzLml0IApkaWZmIC0tZ2l0IGEvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy5jaGVzc2V4dGVuc2lvbi9wbHVnaW4ueG1sIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy5jaGVzc2V4dGVuc2lvbi9wbHVnaW4ueG1sCmluZGV4IGUxODEyNTAuLjk2MzNhYjUgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMuY2hlc3NleHRlbnNpb24vcGx1Z2luLnhtbAorKysgYi9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLmNoZXNzZXh0ZW5zaW9uL3BsdWdpbi54bWwKQEAgLTQsOSArNCw5IEBACiAgICAKICAgICBDb3B5cmlnaHQgKGMpIDIwMTMsIDIwMTUgSW50ZWNzIFNwQSAKICAgICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gICAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisgICAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgICAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAgICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorICAgIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgICAKICAgICBDb250cmlidXRvcnM6CiAgICAgTmljaG9sYXMgUGFjaW5pIG5pY2hvbGFzLnBhY2luaUBpbnRlY3MuaXQgCmRpZmYgLS1naXQgYS9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLmNoZXNzZXh0ZW5zaW9uL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL2NoZXNzZXh0ZW5zaW9uL0FjdGl2YXRvci5qYXZhIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy5jaGVzc2V4dGVuc2lvbi9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy9jaGVzc2V4dGVuc2lvbi9BY3RpdmF0b3IuamF2YQppbmRleCA2YjRiYmEzLi5iM2NhMjM0IDEwMDY0NAotLS0gYS9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLmNoZXNzZXh0ZW5zaW9uL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL2NoZXNzZXh0ZW5zaW9uL0FjdGl2YXRvci5qYXZhCisrKyBiL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMuY2hlc3NleHRlbnNpb24vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvY2hlc3NleHRlbnNpb24vQWN0aXZhdG9yLmphdmEKQEAgLTIsOSArMiw5IEBACiAgKgogICogQ29weXJpZ2h0IChjKSAyMDEzLCAyMDE1IEludGVjcyBTcEEgCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICoKICAqIENvbnRyaWJ1dG9yczoKICAqIE5pY2hvbGFzIFBhY2luaSBuaWNob2xhcy5wYWNpbmlAaW50ZWNzLml0IApkaWZmIC0tZ2l0IGEvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy5jaGVzc2V4dGVuc2lvbi9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy9jaGVzc2V4dGVuc2lvbi9kaWFsb2dzL1NldENvbnRyYWN0UmVmaW5lbWVudERpYWxvZy5qYXZhIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy5jaGVzc2V4dGVuc2lvbi9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy9jaGVzc2V4dGVuc2lvbi9kaWFsb2dzL1NldENvbnRyYWN0UmVmaW5lbWVudERpYWxvZy5qYXZhCmluZGV4IGY3YTIzMWYuLjI3YmQ0NGIgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMuY2hlc3NleHRlbnNpb24vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvY2hlc3NleHRlbnNpb24vZGlhbG9ncy9TZXRDb250cmFjdFJlZmluZW1lbnREaWFsb2cuamF2YQorKysgYi9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLmNoZXNzZXh0ZW5zaW9uL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL2NoZXNzZXh0ZW5zaW9uL2RpYWxvZ3MvU2V0Q29udHJhY3RSZWZpbmVtZW50RGlhbG9nLmphdmEKQEAgLTIsOSArMiw5IEBACiAgKgogICogQ29weXJpZ2h0IChjKSAyMDEzLCAyMDE1IEludGVjcyBTcEEgCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICoKICAqIENvbnRyaWJ1dG9yczoKICAqIE5pY2hvbGFzIFBhY2luaSBuaWNob2xhcy5wYWNpbmlAaW50ZWNzLml0IApkaWZmIC0tZ2l0IGEvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy5jaGVzc2V4dGVuc2lvbi9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy9jaGVzc2V4dGVuc2lvbi9saXN0ZW5lcnMvUGFweXJ1c01vZGVsTGlzdGVuZXIuamF2YSBiL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMuY2hlc3NleHRlbnNpb24vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvY2hlc3NleHRlbnNpb24vbGlzdGVuZXJzL1BhcHlydXNNb2RlbExpc3RlbmVyLmphdmEKaW5kZXggMDAzMGVlNS4uM2MyZGQxMiAxMDA2NDQKLS0tIGEvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy5jaGVzc2V4dGVuc2lvbi9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy9jaGVzc2V4dGVuc2lvbi9saXN0ZW5lcnMvUGFweXJ1c01vZGVsTGlzdGVuZXIuamF2YQorKysgYi9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLmNoZXNzZXh0ZW5zaW9uL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL2NoZXNzZXh0ZW5zaW9uL2xpc3RlbmVycy9QYXB5cnVzTW9kZWxMaXN0ZW5lci5qYXZhCkBAIC0yLDkgKzIsOSBAQAogICoKICAqIENvcHlyaWdodCAoYykgMjAxMywgMjAxNSBJbnRlY3MgU3BBIAogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICAqCiAgKiBDb250cmlidXRvcnM6CiAgKiBOaWNob2xhcyBQYWNpbmkgbmljaG9sYXMucGFjaW5pQGludGVjcy5pdCAKZGlmZiAtLWdpdCBhL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMuY2hlc3NleHRlbnNpb24vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvY2hlc3NleHRlbnNpb24vbGlzdGVuZXJzL1NlbGVjdGlvbkxpc3RlbmVyLmphdmEgYi9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLmNoZXNzZXh0ZW5zaW9uL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL2NoZXNzZXh0ZW5zaW9uL2xpc3RlbmVycy9TZWxlY3Rpb25MaXN0ZW5lci5qYXZhCmluZGV4IDdiZmRjOGEuLjVhYjkxNjYgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMuY2hlc3NleHRlbnNpb24vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvY2hlc3NleHRlbnNpb24vbGlzdGVuZXJzL1NlbGVjdGlvbkxpc3RlbmVyLmphdmEKKysrIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy5jaGVzc2V4dGVuc2lvbi9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy9jaGVzc2V4dGVuc2lvbi9saXN0ZW5lcnMvU2VsZWN0aW9uTGlzdGVuZXIuamF2YQpAQCAtMiw5ICsyLDkgQEAKICAqCiAgKiBDb3B5cmlnaHQgKGMpIDIwMTMsIDIwMTUgSW50ZWNzIFNwQSAKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgKgogICogQ29udHJpYnV0b3JzOgogICogTmljaG9sYXMgUGFjaW5pIG5pY2hvbGFzLnBhY2luaUBpbnRlY3MuaXQgCmRpZmYgLS1naXQgYS9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLmNoZXNzZXh0ZW5zaW9uL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL2NoZXNzZXh0ZW5zaW9uL21hbmFnZXJzL0FwcGx5Q0hFU1NDb250cmFjdFByb2ZpbGUuamF2YSBiL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMuY2hlc3NleHRlbnNpb24vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvY2hlc3NleHRlbnNpb24vbWFuYWdlcnMvQXBwbHlDSEVTU0NvbnRyYWN0UHJvZmlsZS5qYXZhCmluZGV4IDg5Mjc0YTguLjBiN2Y1ZjMgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMuY2hlc3NleHRlbnNpb24vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvY2hlc3NleHRlbnNpb24vbWFuYWdlcnMvQXBwbHlDSEVTU0NvbnRyYWN0UHJvZmlsZS5qYXZhCisrKyBiL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMuY2hlc3NleHRlbnNpb24vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvY2hlc3NleHRlbnNpb24vbWFuYWdlcnMvQXBwbHlDSEVTU0NvbnRyYWN0UHJvZmlsZS5qYXZhCkBAIC0yLDkgKzIsOSBAQAogICoKICAqIENvcHlyaWdodCAoYykgMjAxMywgMjAxNSBJbnRlY3MgU3BBIAogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICAqCiAgKiBDb250cmlidXRvcnM6CiAgKiBOaWNob2xhcyBQYWNpbmkgbmljaG9sYXMucGFjaW5pQGludGVjcy5pdCAKZGlmZiAtLWdpdCBhL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMuY2hlc3NleHRlbnNpb24vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvY2hlc3NleHRlbnNpb24vbWFuYWdlcnMvQ0hFU1NDb250cmFjdFByb2ZpbGVNYW5hZ2VyLmphdmEgYi9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLmNoZXNzZXh0ZW5zaW9uL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL2NoZXNzZXh0ZW5zaW9uL21hbmFnZXJzL0NIRVNTQ29udHJhY3RQcm9maWxlTWFuYWdlci5qYXZhCmluZGV4IGFiNjA1MTAuLjA4ZGUxY2IgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMuY2hlc3NleHRlbnNpb24vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvY2hlc3NleHRlbnNpb24vbWFuYWdlcnMvQ0hFU1NDb250cmFjdFByb2ZpbGVNYW5hZ2VyLmphdmEKKysrIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy5jaGVzc2V4dGVuc2lvbi9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy9jaGVzc2V4dGVuc2lvbi9tYW5hZ2Vycy9DSEVTU0NvbnRyYWN0UHJvZmlsZU1hbmFnZXIuamF2YQpAQCAtMiw5ICsyLDkgQEAKICAqCiAgKiBDb3B5cmlnaHQgKGMpIDIwMTMsIDIwMTUgSW50ZWNzIFNwQSAKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgKgogICogQ29udHJpYnV0b3JzOgogICogTmljaG9sYXMgUGFjaW5pIG5pY2hvbGFzLnBhY2luaUBpbnRlY3MuaXQgCmRpZmYgLS1naXQgYS9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLmNoZXNzZXh0ZW5zaW9uL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL2NoZXNzZXh0ZW5zaW9uL21hbmFnZXJzL1BhbGV0dGVNYW5hZ2VyLmphdmEgYi9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLmNoZXNzZXh0ZW5zaW9uL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL2NoZXNzZXh0ZW5zaW9uL21hbmFnZXJzL1BhbGV0dGVNYW5hZ2VyLmphdmEKaW5kZXggYTIxZWY1NS4uMTYzOWFmMCAxMDA2NDQKLS0tIGEvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy5jaGVzc2V4dGVuc2lvbi9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy9jaGVzc2V4dGVuc2lvbi9tYW5hZ2Vycy9QYWxldHRlTWFuYWdlci5qYXZhCisrKyBiL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMuY2hlc3NleHRlbnNpb24vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvY2hlc3NleHRlbnNpb24vbWFuYWdlcnMvUGFsZXR0ZU1hbmFnZXIuamF2YQpAQCAtMiw5ICsyLDkgQEAKICAqDQogICogQ29weXJpZ2h0IChjKSAyMDEzLCAyMDE1IEludGVjcyBTcEEgDQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqDQogICogQ29udHJpYnV0b3JzOg0KICAqIE5pY2hvbGFzIFBhY2luaSBuaWNob2xhcy5wYWNpbmlAaW50ZWNzLml0IA0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMuY2hlc3NleHRlbnNpb24vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvY2hlc3NleHRlbnNpb24vcG9wdXAvY29tbWFuZHMvU2V0Q29udHJhY3RSZWZpbmVtZW50LmphdmEgYi9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLmNoZXNzZXh0ZW5zaW9uL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL2NoZXNzZXh0ZW5zaW9uL3BvcHVwL2NvbW1hbmRzL1NldENvbnRyYWN0UmVmaW5lbWVudC5qYXZhCmluZGV4IGJkZTM2MjQuLjVhYzQ0NzkgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMuY2hlc3NleHRlbnNpb24vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvY2hlc3NleHRlbnNpb24vcG9wdXAvY29tbWFuZHMvU2V0Q29udHJhY3RSZWZpbmVtZW50LmphdmEKKysrIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy5jaGVzc2V4dGVuc2lvbi9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy9jaGVzc2V4dGVuc2lvbi9wb3B1cC9jb21tYW5kcy9TZXRDb250cmFjdFJlZmluZW1lbnQuamF2YQpAQCAtMiw5ICsyLDkgQEAKICAqCiAgKiBDb3B5cmlnaHQgKGMpIDIwMTMsIDIwMTUgSW50ZWNzIFNwQSAKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgKgogICogQ29udHJpYnV0b3JzOgogICogTmljaG9sYXMgUGFjaW5pIG5pY2hvbGFzLnBhY2luaUBpbnRlY3MuaXQgCmRpZmYgLS1naXQgYS9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLmNoZXNzZXh0ZW5zaW9uL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL2NoZXNzZXh0ZW5zaW9uL3Byb3BlcnR5dGFiL0Jsb2NrRWRpdFBhcnRTZWN0aW9uLmphdmEgYi9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLmNoZXNzZXh0ZW5zaW9uL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL2NoZXNzZXh0ZW5zaW9uL3Byb3BlcnR5dGFiL0Jsb2NrRWRpdFBhcnRTZWN0aW9uLmphdmEKaW5kZXggYTBhYTY4ZC4uNzI2NGU4NSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy5jaGVzc2V4dGVuc2lvbi9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy9jaGVzc2V4dGVuc2lvbi9wcm9wZXJ0eXRhYi9CbG9ja0VkaXRQYXJ0U2VjdGlvbi5qYXZhCisrKyBiL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMuY2hlc3NleHRlbnNpb24vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvY2hlc3NleHRlbnNpb24vcHJvcGVydHl0YWIvQmxvY2tFZGl0UGFydFNlY3Rpb24uamF2YQpAQCAtMiw5ICsyLDkgQEAKICAqDQogICogQ29weXJpZ2h0IChjKSAyMDEzLCAyMDE3IEludGVjcyBTcEEgDQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqDQogICogQ29udHJpYnV0b3JzOg0KICAqIE5pY2hvbGFzIFBhY2luaSBuaWNob2xhcy5wYWNpbmlAaW50ZWNzLml0IA0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMuY2hlc3NleHRlbnNpb24vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvY2hlc3NleHRlbnNpb24vcHJvcGVydHl0YWIvQmxvY2tQcm9wZXJ0eUNvbXBvc2l0ZUVkaXRQYXJ0U2VjdGlvbi5qYXZhIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy5jaGVzc2V4dGVuc2lvbi9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy9jaGVzc2V4dGVuc2lvbi9wcm9wZXJ0eXRhYi9CbG9ja1Byb3BlcnR5Q29tcG9zaXRlRWRpdFBhcnRTZWN0aW9uLmphdmEKaW5kZXggNDI1Yjg1ZC4uMzNiZTVkOSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy5jaGVzc2V4dGVuc2lvbi9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy9jaGVzc2V4dGVuc2lvbi9wcm9wZXJ0eXRhYi9CbG9ja1Byb3BlcnR5Q29tcG9zaXRlRWRpdFBhcnRTZWN0aW9uLmphdmEKKysrIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy5jaGVzc2V4dGVuc2lvbi9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy9jaGVzc2V4dGVuc2lvbi9wcm9wZXJ0eXRhYi9CbG9ja1Byb3BlcnR5Q29tcG9zaXRlRWRpdFBhcnRTZWN0aW9uLmphdmEKQEAgLTIsOSArMiw5IEBACiAgKgogICogQ29weXJpZ2h0IChjKSAyMDEzLCAyMDE1IEludGVjcyBTcEEgCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICoKICAqIENvbnRyaWJ1dG9yczoKICAqIE5pY2hvbGFzIFBhY2luaSBuaWNob2xhcy5wYWNpbmlAaW50ZWNzLml0IApkaWZmIC0tZ2l0IGEvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy5jb250cmFjdEVkaXRvci9hYm91dC5odG1sIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy5jb250cmFjdEVkaXRvci9hYm91dC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE2NGY3ODEKLS0tIC9kZXYvbnVsbAorKysgYi9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLmNvbnRyYWN0RWRpdG9yL2Fib3V0Lmh0bWwKQEAgLTAsMCArMSwzNiBAQAorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgU3RyaWN0Ly9FTiIKKyAgICAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+Cis8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiIC8+Cis8dGl0bGU+QWJvdXQ8L3RpdGxlPgorPC9oZWFkPgorPGJvZHkgbGFuZz0iRU4tVVMiPgorCTxoMj5BYm91dCBUaGlzIENvbnRlbnQ8L2gyPgorCisJPHA+Tm92ZW1iZXIgMzAsIDIwMTc8L3A+CisJPGgzPkxpY2Vuc2U8L2gzPgorCisJPHA+CisJCVRoZSBFY2xpcHNlIEZvdW5kYXRpb24gbWFrZXMgYXZhaWxhYmxlIGFsbCBjb250ZW50IGluIHRoaXMgcGx1Zy1pbgorCQkoJnF1b3Q7Q29udGVudCZxdW90OykuIFVubGVzcyBvdGhlcndpc2UgaW5kaWNhdGVkIGJlbG93LCB0aGUgQ29udGVudAorCQlpcyBwcm92aWRlZCB0byB5b3UgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFY2xpcHNlCisJCVB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMi4wICgmcXVvdDtFUEwmcXVvdDspLiBBIGNvcHkgb2YgdGhlIEVQTCBpcworCQlhdmFpbGFibGUgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjA8L2E+LgorCQlGb3IgcHVycG9zZXMgb2YgdGhlIEVQTCwgJnF1b3Q7UHJvZ3JhbSZxdW90OyB3aWxsIG1lYW4gdGhlIENvbnRlbnQuCisJPC9wPgorCisJPHA+CisJCUlmIHlvdSBkaWQgbm90IHJlY2VpdmUgdGhpcyBDb250ZW50IGRpcmVjdGx5IGZyb20gdGhlIEVjbGlwc2UKKwkJRm91bmRhdGlvbiwgdGhlIENvbnRlbnQgaXMgYmVpbmcgcmVkaXN0cmlidXRlZCBieSBhbm90aGVyIHBhcnR5CisJCSgmcXVvdDtSZWRpc3RyaWJ1dG9yJnF1b3Q7KSBhbmQgZGlmZmVyZW50IHRlcm1zIGFuZCBjb25kaXRpb25zIG1heQorCQlhcHBseSB0byB5b3VyIHVzZSBvZiBhbnkgb2JqZWN0IGNvZGUgaW4gdGhlIENvbnRlbnQuIENoZWNrIHRoZQorCQlSZWRpc3RyaWJ1dG9yJ3MgbGljZW5zZSB0aGF0IHdhcyBwcm92aWRlZCB3aXRoIHRoZSBDb250ZW50LiBJZiBubyBzdWNoCisJCWxpY2Vuc2UgZXhpc3RzLCBjb250YWN0IHRoZSBSZWRpc3RyaWJ1dG9yLiBVbmxlc3Mgb3RoZXJ3aXNlIGluZGljYXRlZAorCQliZWxvdywgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFUEwgc3RpbGwgYXBwbHkgdG8gYW55IHNvdXJjZQorCQljb2RlIGluIHRoZSBDb250ZW50IGFuZCBzdWNoIHNvdXJjZSBjb2RlIG1heSBiZSBvYnRhaW5lZCBhdCA8YQorCQkJaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy8iPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmc8L2E+LgorCTwvcD4KKworPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMuY29udHJhY3RFZGl0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvY29udHJhY3RFZGl0b3IvQ3VzdG9tQ29udHJhY3RFZGl0b3JGaWx0ZXIuamF2YSBiL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMuY29udHJhY3RFZGl0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvY29udHJhY3RFZGl0b3IvQ3VzdG9tQ29udHJhY3RFZGl0b3JGaWx0ZXIuamF2YQppbmRleCAyODI2MjVlLi42MTk5ZGMzIDEwMDY0NAotLS0gYS9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLmNvbnRyYWN0RWRpdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL2NvbnRyYWN0RWRpdG9yL0N1c3RvbUNvbnRyYWN0RWRpdG9yRmlsdGVyLmphdmEKKysrIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy5jb250cmFjdEVkaXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy9jb250cmFjdEVkaXRvci9DdXN0b21Db250cmFjdEVkaXRvckZpbHRlci5qYXZhCkBAIC0xLDkgKzEsOSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTcgRm9uZGF6aW9uZSBCcnVubyBLZXNzbGVyLg0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKiANCiAgKiBDb250cmlidXRvcnM6DQogICogICAgIEFsYmVydG8gRGViaWFzaSAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbg0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMuY29udHJhY3RFZGl0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvY29udHJhY3RFZGl0b3IvQ3VzdG9tQ29udHJhY3RFZGl0b3JUYWIuamF2YSBiL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMuY29udHJhY3RFZGl0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvY29udHJhY3RFZGl0b3IvQ3VzdG9tQ29udHJhY3RFZGl0b3JUYWIuamF2YQppbmRleCAzYjg1MDkwLi5mNzAxNTY0IDEwMDY0NAotLS0gYS9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLmNvbnRyYWN0RWRpdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL2NvbnRyYWN0RWRpdG9yL0N1c3RvbUNvbnRyYWN0RWRpdG9yVGFiLmphdmEKKysrIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy5jb250cmFjdEVkaXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy9jb250cmFjdEVkaXRvci9DdXN0b21Db250cmFjdEVkaXRvclRhYi5qYXZhCkBAIC0xLDkgKzEsOSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTcgRm9uZGF6aW9uZSBCcnVubyBLZXNzbGVyLg0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKiANCiAgKiBDb250cmlidXRvcnM6DQogICogICAgIEFsYmVydG8gRGViaWFzaSAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbg0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMuY29udHJhY3RFZGl0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvY29udHJhY3RFZGl0b3IvQ3VzdG9tQ29udHJhY3RFZGl0b3JWaWV3LmphdmEgYi9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLmNvbnRyYWN0RWRpdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL2NvbnRyYWN0RWRpdG9yL0N1c3RvbUNvbnRyYWN0RWRpdG9yVmlldy5qYXZhCmluZGV4IGRjNjkyZWQuLjUzMzNmNjEgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMuY29udHJhY3RFZGl0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvY29udHJhY3RFZGl0b3IvQ3VzdG9tQ29udHJhY3RFZGl0b3JWaWV3LmphdmEKKysrIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy5jb250cmFjdEVkaXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy9jb250cmFjdEVkaXRvci9DdXN0b21Db250cmFjdEVkaXRvclZpZXcuamF2YQpAQCAtMSw5ICsxLDkgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogQ29weXJpZ2h0IChDKSAyMDE3IEZvbmRhemlvbmUgQnJ1bm8gS2Vzc2xlci4NCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICogDQogICogQ29udHJpYnV0b3JzOg0KICAqICAgICBBbGJlcnRvIERlYmlhc2kgLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24NCmRpZmYgLS1naXQgYS9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLmNvbnRyYWN0UHJvcGVydHlNYW5hZ2VyL2Fib3V0Lmh0bWwgYi9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLmNvbnRyYWN0UHJvcGVydHlNYW5hZ2VyL2Fib3V0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTY0Zjc4MQotLS0gL2Rldi9udWxsCisrKyBiL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMuY29udHJhY3RQcm9wZXJ0eU1hbmFnZXIvYWJvdXQuaHRtbApAQCAtMCwwICsxLDM2IEBACis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIgorICAgICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS1zdHJpY3QuZHRkIj4KKzxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMSIgLz4KKzx0aXRsZT5BYm91dDwvdGl0bGU+Cis8L2hlYWQ+Cis8Ym9keSBsYW5nPSJFTi1VUyI+CisJPGgyPkFib3V0IFRoaXMgQ29udGVudDwvaDI+CisKKwk8cD5Ob3ZlbWJlciAzMCwgMjAxNzwvcD4KKwk8aDM+TGljZW5zZTwvaDM+CisKKwk8cD4KKwkJVGhlIEVjbGlwc2UgRm91bmRhdGlvbiBtYWtlcyBhdmFpbGFibGUgYWxsIGNvbnRlbnQgaW4gdGhpcyBwbHVnLWluCisJCSgmcXVvdDtDb250ZW50JnF1b3Q7KS4gVW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQgYmVsb3csIHRoZSBDb250ZW50CisJCWlzIHByb3ZpZGVkIHRvIHlvdSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVjbGlwc2UKKwkJUHVibGljIExpY2Vuc2UgVmVyc2lvbiAyLjAgKCZxdW90O0VQTCZxdW90OykuIEEgY29weSBvZiB0aGUgRVBMIGlzCisJCWF2YWlsYWJsZSBhdCA8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAiPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMDwvYT4uCisJCUZvciBwdXJwb3NlcyBvZiB0aGUgRVBMLCAmcXVvdDtQcm9ncmFtJnF1b3Q7IHdpbGwgbWVhbiB0aGUgQ29udGVudC4KKwk8L3A+CisKKwk8cD4KKwkJSWYgeW91IGRpZCBub3QgcmVjZWl2ZSB0aGlzIENvbnRlbnQgZGlyZWN0bHkgZnJvbSB0aGUgRWNsaXBzZQorCQlGb3VuZGF0aW9uLCB0aGUgQ29udGVudCBpcyBiZWluZyByZWRpc3RyaWJ1dGVkIGJ5IGFub3RoZXIgcGFydHkKKwkJKCZxdW90O1JlZGlzdHJpYnV0b3ImcXVvdDspIGFuZCBkaWZmZXJlbnQgdGVybXMgYW5kIGNvbmRpdGlvbnMgbWF5CisJCWFwcGx5IHRvIHlvdXIgdXNlIG9mIGFueSBvYmplY3QgY29kZSBpbiB0aGUgQ29udGVudC4gQ2hlY2sgdGhlCisJCVJlZGlzdHJpYnV0b3IncyBsaWNlbnNlIHRoYXQgd2FzIHByb3ZpZGVkIHdpdGggdGhlIENvbnRlbnQuIElmIG5vIHN1Y2gKKwkJbGljZW5zZSBleGlzdHMsIGNvbnRhY3QgdGhlIFJlZGlzdHJpYnV0b3IuIFVubGVzcyBvdGhlcndpc2UgaW5kaWNhdGVkCisJCWJlbG93LCB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVQTCBzdGlsbCBhcHBseSB0byBhbnkgc291cmNlCisJCWNvZGUgaW4gdGhlIENvbnRlbnQgYW5kIHN1Y2ggc291cmNlIGNvZGUgbWF5IGJlIG9idGFpbmVkIGF0IDxhCisJCQlocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnLyI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZzwvYT4uCisJPC9wPgorCis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy5jb250cmFjdFByb3BlcnR5TWFuYWdlci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy9jb250cmFjdFByb3BlcnR5TWFuYWdlci91aS9wcm9maWxlL2xpc3RlbmVyL01lc3NhZ2VEaWFsb2cuamF2YSBiL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMuY29udHJhY3RQcm9wZXJ0eU1hbmFnZXIvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvY29udHJhY3RQcm9wZXJ0eU1hbmFnZXIvdWkvcHJvZmlsZS9saXN0ZW5lci9NZXNzYWdlRGlhbG9nLmphdmEKaW5kZXggZjYzYjkzNi4uMThiNDQ2OSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy5jb250cmFjdFByb3BlcnR5TWFuYWdlci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy9jb250cmFjdFByb3BlcnR5TWFuYWdlci91aS9wcm9maWxlL2xpc3RlbmVyL01lc3NhZ2VEaWFsb2cuamF2YQorKysgYi9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLmNvbnRyYWN0UHJvcGVydHlNYW5hZ2VyL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL2NvbnRyYWN0UHJvcGVydHlNYW5hZ2VyL3VpL3Byb2ZpbGUvbGlzdGVuZXIvTWVzc2FnZURpYWxvZy5qYXZhCkBAIC0xLDkgKzEsOSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTcgRm9uZGF6aW9uZSBCcnVubyBLZXNzbGVyLg0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKiANCiAgKiBDb250cmlidXRvcnM6DQogICogICAgIEFsYmVydG8gRGViaWFzaSAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbg0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMuY29udHJhY3RQcm9wZXJ0eU1hbmFnZXIvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvY29udHJhY3RQcm9wZXJ0eU1hbmFnZXIvdWkvcHJvZmlsZS9saXN0ZW5lci9QYXB5cnVzTGlzdGVuZXIuamF2YSBiL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMuY29udHJhY3RQcm9wZXJ0eU1hbmFnZXIvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvY29udHJhY3RQcm9wZXJ0eU1hbmFnZXIvdWkvcHJvZmlsZS9saXN0ZW5lci9QYXB5cnVzTGlzdGVuZXIuamF2YQppbmRleCAwZTZlMGI5Li5mM2I1OThjIDEwMDY0NAotLS0gYS9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLmNvbnRyYWN0UHJvcGVydHlNYW5hZ2VyL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL2NvbnRyYWN0UHJvcGVydHlNYW5hZ2VyL3VpL3Byb2ZpbGUvbGlzdGVuZXIvUGFweXJ1c0xpc3RlbmVyLmphdmEKKysrIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy5jb250cmFjdFByb3BlcnR5TWFuYWdlci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy9jb250cmFjdFByb3BlcnR5TWFuYWdlci91aS9wcm9maWxlL2xpc3RlbmVyL1BhcHlydXNMaXN0ZW5lci5qYXZhCkBAIC0xLDkgKzEsOSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTcgRm9uZGF6aW9uZSBCcnVubyBLZXNzbGVyLg0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKiANCiAgKiBDb250cmlidXRvcnM6DQogICogICAgIEFsYmVydG8gRGViaWFzaSAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbg0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMuaGllcmFyY2hpY2FsQ29udHJhY3RWaWV3L2Fib3V0Lmh0bWwgYi9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLmhpZXJhcmNoaWNhbENvbnRyYWN0Vmlldy9hYm91dC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE2NGY3ODEKLS0tIC9kZXYvbnVsbAorKysgYi9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLmhpZXJhcmNoaWNhbENvbnRyYWN0Vmlldy9hYm91dC5odG1sCkBAIC0wLDAgKzEsMzYgQEAKKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFN0cmljdC8vRU4iCisgICAgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXN0cmljdC5kdGQiPgorPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xIiAvPgorPHRpdGxlPkFib3V0PC90aXRsZT4KKzwvaGVhZD4KKzxib2R5IGxhbmc9IkVOLVVTIj4KKwk8aDI+QWJvdXQgVGhpcyBDb250ZW50PC9oMj4KKworCTxwPk5vdmVtYmVyIDMwLCAyMDE3PC9wPgorCTxoMz5MaWNlbnNlPC9oMz4KKworCTxwPgorCQlUaGUgRWNsaXBzZSBGb3VuZGF0aW9uIG1ha2VzIGF2YWlsYWJsZSBhbGwgY29udGVudCBpbiB0aGlzIHBsdWctaW4KKwkJKCZxdW90O0NvbnRlbnQmcXVvdDspLiBVbmxlc3Mgb3RoZXJ3aXNlIGluZGljYXRlZCBiZWxvdywgdGhlIENvbnRlbnQKKwkJaXMgcHJvdmlkZWQgdG8geW91IHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRWNsaXBzZQorCQlQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDIuMCAoJnF1b3Q7RVBMJnF1b3Q7KS4gQSBjb3B5IG9mIHRoZSBFUEwgaXMKKwkJYXZhaWxhYmxlIGF0IDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMCI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wPC9hPi4KKwkJRm9yIHB1cnBvc2VzIG9mIHRoZSBFUEwsICZxdW90O1Byb2dyYW0mcXVvdDsgd2lsbCBtZWFuIHRoZSBDb250ZW50LgorCTwvcD4KKworCTxwPgorCQlJZiB5b3UgZGlkIG5vdCByZWNlaXZlIHRoaXMgQ29udGVudCBkaXJlY3RseSBmcm9tIHRoZSBFY2xpcHNlCisJCUZvdW5kYXRpb24sIHRoZSBDb250ZW50IGlzIGJlaW5nIHJlZGlzdHJpYnV0ZWQgYnkgYW5vdGhlciBwYXJ0eQorCQkoJnF1b3Q7UmVkaXN0cmlidXRvciZxdW90OykgYW5kIGRpZmZlcmVudCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBtYXkKKwkJYXBwbHkgdG8geW91ciB1c2Ugb2YgYW55IG9iamVjdCBjb2RlIGluIHRoZSBDb250ZW50LiBDaGVjayB0aGUKKwkJUmVkaXN0cmlidXRvcidzIGxpY2Vuc2UgdGhhdCB3YXMgcHJvdmlkZWQgd2l0aCB0aGUgQ29udGVudC4gSWYgbm8gc3VjaAorCQlsaWNlbnNlIGV4aXN0cywgY29udGFjdCB0aGUgUmVkaXN0cmlidXRvci4gVW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQKKwkJYmVsb3csIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRVBMIHN0aWxsIGFwcGx5IHRvIGFueSBzb3VyY2UKKwkJY29kZSBpbiB0aGUgQ29udGVudCBhbmQgc3VjaCBzb3VyY2UgY29kZSBtYXkgYmUgb2J0YWluZWQgYXQgPGEKKwkJCWhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnPC9hPi4KKwk8L3A+CisKKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLmhpZXJhcmNoaWNhbENvbnRyYWN0Vmlldy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy9oaWVyYXJjaGljYWxDb250cmFjdFZpZXcvbGlzdGVuZXIvUGFweXJ1c0xpc3RlbmVyLmphdmEgYi9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLmhpZXJhcmNoaWNhbENvbnRyYWN0Vmlldy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy9oaWVyYXJjaGljYWxDb250cmFjdFZpZXcvbGlzdGVuZXIvUGFweXJ1c0xpc3RlbmVyLmphdmEKaW5kZXggYzQzMDA1NC4uZWY4ZjIwNyAxMDA2NDQKLS0tIGEvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy5oaWVyYXJjaGljYWxDb250cmFjdFZpZXcvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvaGllcmFyY2hpY2FsQ29udHJhY3RWaWV3L2xpc3RlbmVyL1BhcHlydXNMaXN0ZW5lci5qYXZhCisrKyBiL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMuaGllcmFyY2hpY2FsQ29udHJhY3RWaWV3L3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL2hpZXJhcmNoaWNhbENvbnRyYWN0Vmlldy9saXN0ZW5lci9QYXB5cnVzTGlzdGVuZXIuamF2YQpAQCAtMSw5ICsxLDkgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogQ29weXJpZ2h0IChDKSAyMDE3IEZvbmRhemlvbmUgQnJ1bm8gS2Vzc2xlci4NCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICogDQogICogQ29udHJpYnV0b3JzOg0KICAqICAgICBBbGJlcnRvIERlYmlhc2kgLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24NCmRpZmYgLS1naXQgYS9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLmhpZXJhcmNoaWNhbENvbnRyYWN0Vmlldy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy9oaWVyYXJjaGljYWxDb250cmFjdFZpZXcvbGlzdGVuZXIvU2VsZWN0aW9uTGlzdGVuZXIuamF2YSBiL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMuaGllcmFyY2hpY2FsQ29udHJhY3RWaWV3L3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL2hpZXJhcmNoaWNhbENvbnRyYWN0Vmlldy9saXN0ZW5lci9TZWxlY3Rpb25MaXN0ZW5lci5qYXZhCmluZGV4IGMzYmZmYTguLjE2YzAzYTAgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMuaGllcmFyY2hpY2FsQ29udHJhY3RWaWV3L3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL2hpZXJhcmNoaWNhbENvbnRyYWN0Vmlldy9saXN0ZW5lci9TZWxlY3Rpb25MaXN0ZW5lci5qYXZhCisrKyBiL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMuaGllcmFyY2hpY2FsQ29udHJhY3RWaWV3L3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL2hpZXJhcmNoaWNhbENvbnRyYWN0Vmlldy9saXN0ZW5lci9TZWxlY3Rpb25MaXN0ZW5lci5qYXZhCkBAIC0xLDkgKzEsOSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTcgRm9uZGF6aW9uZSBCcnVubyBLZXNzbGVyLg0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKiANCiAgKiBDb250cmlidXRvcnM6DQogICogICAgIEFsYmVydG8gRGViaWFzaSAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbg0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMuaGllcmFyY2hpY2FsQ29udHJhY3RWaWV3L3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL2hpZXJhcmNoaWNhbENvbnRyYWN0Vmlldy90cmVlRWxlbWVudHMvQ0hFU1NDb21wb25lbnROb2RlLmphdmEgYi9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLmhpZXJhcmNoaWNhbENvbnRyYWN0Vmlldy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy9oaWVyYXJjaGljYWxDb250cmFjdFZpZXcvdHJlZUVsZW1lbnRzL0NIRVNTQ29tcG9uZW50Tm9kZS5qYXZhCmluZGV4IDRiMzcwODUuLmU4NWIxNDYgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMuaGllcmFyY2hpY2FsQ29udHJhY3RWaWV3L3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL2hpZXJhcmNoaWNhbENvbnRyYWN0Vmlldy90cmVlRWxlbWVudHMvQ0hFU1NDb21wb25lbnROb2RlLmphdmEKKysrIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy5oaWVyYXJjaGljYWxDb250cmFjdFZpZXcvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvaGllcmFyY2hpY2FsQ29udHJhY3RWaWV3L3RyZWVFbGVtZW50cy9DSEVTU0NvbXBvbmVudE5vZGUuamF2YQpAQCAtMSw5ICsxLDkgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogQ29weXJpZ2h0IChDKSAyMDE3IEZvbmRhemlvbmUgQnJ1bm8gS2Vzc2xlci4NCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICogDQogICogQ29udHJpYnV0b3JzOg0KICAqICAgICBBbGJlcnRvIERlYmlhc2kgLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24NCmRpZmYgLS1naXQgYS9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLmhpZXJhcmNoaWNhbENvbnRyYWN0Vmlldy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy9oaWVyYXJjaGljYWxDb250cmFjdFZpZXcvdHJlZUVsZW1lbnRzL0NIRVNTUm9vdE5vZGUuamF2YSBiL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMuaGllcmFyY2hpY2FsQ29udHJhY3RWaWV3L3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL2hpZXJhcmNoaWNhbENvbnRyYWN0Vmlldy90cmVlRWxlbWVudHMvQ0hFU1NSb290Tm9kZS5qYXZhCmluZGV4IDUxZDNhOTguLmExZjZlODkgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMuaGllcmFyY2hpY2FsQ29udHJhY3RWaWV3L3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL2hpZXJhcmNoaWNhbENvbnRyYWN0Vmlldy90cmVlRWxlbWVudHMvQ0hFU1NSb290Tm9kZS5qYXZhCisrKyBiL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMuaGllcmFyY2hpY2FsQ29udHJhY3RWaWV3L3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL2hpZXJhcmNoaWNhbENvbnRyYWN0Vmlldy90cmVlRWxlbWVudHMvQ0hFU1NSb290Tm9kZS5qYXZhCkBAIC0xLDkgKzEsOSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTcgRm9uZGF6aW9uZSBCcnVubyBLZXNzbGVyLg0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKiANCiAgKiBDb250cmlidXRvcnM6DQogICogICAgIEFsYmVydG8gRGViaWFzaSAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbg0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMuaGllcmFyY2hpY2FsQ29udHJhY3RWaWV3L3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL2hpZXJhcmNoaWNhbENvbnRyYWN0Vmlldy90cmVlRWxlbWVudHMvQ0hFU1NTeXN0ZW1Ob2RlLmphdmEgYi9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLmhpZXJhcmNoaWNhbENvbnRyYWN0Vmlldy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy9oaWVyYXJjaGljYWxDb250cmFjdFZpZXcvdHJlZUVsZW1lbnRzL0NIRVNTU3lzdGVtTm9kZS5qYXZhCmluZGV4IDViNDdjZTIuLmY1ZTBiYmIgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMuaGllcmFyY2hpY2FsQ29udHJhY3RWaWV3L3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL2hpZXJhcmNoaWNhbENvbnRyYWN0Vmlldy90cmVlRWxlbWVudHMvQ0hFU1NTeXN0ZW1Ob2RlLmphdmEKKysrIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy5oaWVyYXJjaGljYWxDb250cmFjdFZpZXcvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvaGllcmFyY2hpY2FsQ29udHJhY3RWaWV3L3RyZWVFbGVtZW50cy9DSEVTU1N5c3RlbU5vZGUuamF2YQpAQCAtMSw5ICsxLDkgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogQ29weXJpZ2h0IChDKSAyMDE3IEZvbmRhemlvbmUgQnJ1bm8gS2Vzc2xlci4NCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICogDQogICogQ29udHJpYnV0b3JzOg0KICAqICAgICBBbGJlcnRvIERlYmlhc2kgLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24NCmRpZmYgLS1naXQgYS9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLmhpZXJhcmNoaWNhbENvbnRyYWN0Vmlldy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy9oaWVyYXJjaGljYWxDb250cmFjdFZpZXcvdmlldy9DdXN0b21IaWVyYXJjaGljYWxWaWV3LmphdmEgYi9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLmhpZXJhcmNoaWNhbENvbnRyYWN0Vmlldy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy9oaWVyYXJjaGljYWxDb250cmFjdFZpZXcvdmlldy9DdXN0b21IaWVyYXJjaGljYWxWaWV3LmphdmEKaW5kZXggZTkyMjFmZi4uMmNjYmJiMCAxMDA2NDQKLS0tIGEvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy5oaWVyYXJjaGljYWxDb250cmFjdFZpZXcvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvaGllcmFyY2hpY2FsQ29udHJhY3RWaWV3L3ZpZXcvQ3VzdG9tSGllcmFyY2hpY2FsVmlldy5qYXZhCisrKyBiL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMuaGllcmFyY2hpY2FsQ29udHJhY3RWaWV3L3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL2hpZXJhcmNoaWNhbENvbnRyYWN0Vmlldy92aWV3L0N1c3RvbUhpZXJhcmNoaWNhbFZpZXcuamF2YQpAQCAtMSw5ICsxLDkgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogQ29weXJpZ2h0IChDKSAyMDE3IEZvbmRhemlvbmUgQnJ1bm8gS2Vzc2xlci4NCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICogDQogICogQ29udHJpYnV0b3JzOg0KICAqICAgICBBbGJlcnRvIERlYmlhc2kgLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24NCmRpZmYgLS1naXQgYS9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLmludGVncmF0aW9uL2Fib3V0Lmh0bWwgYi9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLmludGVncmF0aW9uL2Fib3V0Lmh0bWwKaW5kZXggZGQzYzA4OS4uMTY0Zjc4MSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy5pbnRlZ3JhdGlvbi9hYm91dC5odG1sCisrKyBiL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMuaW50ZWdyYXRpb24vYWJvdXQuaHRtbApAQCAtMiwyNyArMiwzNSBAQAogICAgICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS1zdHJpY3QuZHRkIj4KIDxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KIDxoZWFkPgotPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMSIvPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMSIgLz4KIDx0aXRsZT5BYm91dDwvdGl0bGU+CiA8L2hlYWQ+CiA8Ym9keSBsYW5nPSJFTi1VUyI+Ci08aDI+QWJvdXQgVGhpcyBDb250ZW50PC9oMj4KLSAKLTxwPk5vdmVtYmVyIDE0LCAyMDA4PC9wPgkKLTxoMz5MaWNlbnNlPC9oMz4KKwk8aDI+QWJvdXQgVGhpcyBDb250ZW50PC9oMj4KIAotPHA+VGhlIEVjbGlwc2UgRm91bmRhdGlvbiBtYWtlcyBhdmFpbGFibGUgYWxsIGNvbnRlbnQgaW4gdGhpcyBwbHVnLWluICgmcXVvdDtDb250ZW50JnF1b3Q7KS4gIFVubGVzcyBvdGhlcndpc2UgCi1pbmRpY2F0ZWQgYmVsb3csIHRoZSBDb250ZW50IGlzIHByb3ZpZGVkIHRvIHlvdSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlCi1FY2xpcHNlIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMS4wICgmcXVvdDtFUEwmcXVvdDspLiAgQSBjb3B5IG9mIHRoZSBFUEwgaXMgYXZhaWxhYmxlIAotYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwiPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sPC9hPi4KLUZvciBwdXJwb3NlcyBvZiB0aGUgRVBMLCAmcXVvdDtQcm9ncmFtJnF1b3Q7IHdpbGwgbWVhbiB0aGUgQ29udGVudC48L3A+CisJPHA+Tm92ZW1iZXIgMzAsIDIwMTc8L3A+CisJPGgzPkxpY2Vuc2U8L2gzPgogCi08cD5JZiB5b3UgZGlkIG5vdCByZWNlaXZlIHRoaXMgQ29udGVudCBkaXJlY3RseSBmcm9tIHRoZSBFY2xpcHNlIEZvdW5kYXRpb24sIHRoZSBDb250ZW50IGlzIAotYmVpbmcgcmVkaXN0cmlidXRlZCBieSBhbm90aGVyIHBhcnR5ICgmcXVvdDtSZWRpc3RyaWJ1dG9yJnF1b3Q7KSBhbmQgZGlmZmVyZW50IHRlcm1zIGFuZCBjb25kaXRpb25zIG1heQotYXBwbHkgdG8geW91ciB1c2Ugb2YgYW55IG9iamVjdCBjb2RlIGluIHRoZSBDb250ZW50LiAgQ2hlY2sgdGhlIFJlZGlzdHJpYnV0b3IncyBsaWNlbnNlIHRoYXQgd2FzIAotcHJvdmlkZWQgd2l0aCB0aGUgQ29udGVudC4gIElmIG5vIHN1Y2ggbGljZW5zZSBleGlzdHMsIGNvbnRhY3QgdGhlIFJlZGlzdHJpYnV0b3IuICBVbmxlc3Mgb3RoZXJ3aXNlCi1pbmRpY2F0ZWQgYmVsb3csIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRVBMIHN0aWxsIGFwcGx5IHRvIGFueSBzb3VyY2UgY29kZSBpbiB0aGUgQ29udGVudAotYW5kIHN1Y2ggc291cmNlIGNvZGUgbWF5IGJlIG9idGFpbmVkIGF0IDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmciPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmc8L2E+LjwvcD4KKwk8cD4KKwkJVGhlIEVjbGlwc2UgRm91bmRhdGlvbiBtYWtlcyBhdmFpbGFibGUgYWxsIGNvbnRlbnQgaW4gdGhpcyBwbHVnLWluCisJCSgmcXVvdDtDb250ZW50JnF1b3Q7KS4gVW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQgYmVsb3csIHRoZSBDb250ZW50CisJCWlzIHByb3ZpZGVkIHRvIHlvdSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVjbGlwc2UKKwkJUHVibGljIExpY2Vuc2UgVmVyc2lvbiAyLjAgKCZxdW90O0VQTCZxdW90OykuIEEgY29weSBvZiB0aGUgRVBMIGlzCisJCWF2YWlsYWJsZSBhdCA8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAiPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMDwvYT4uCisJCUZvciBwdXJwb3NlcyBvZiB0aGUgRVBMLCAmcXVvdDtQcm9ncmFtJnF1b3Q7IHdpbGwgbWVhbiB0aGUgQ29udGVudC4KKwk8L3A+CisKKwk8cD4KKwkJSWYgeW91IGRpZCBub3QgcmVjZWl2ZSB0aGlzIENvbnRlbnQgZGlyZWN0bHkgZnJvbSB0aGUgRWNsaXBzZQorCQlGb3VuZGF0aW9uLCB0aGUgQ29udGVudCBpcyBiZWluZyByZWRpc3RyaWJ1dGVkIGJ5IGFub3RoZXIgcGFydHkKKwkJKCZxdW90O1JlZGlzdHJpYnV0b3ImcXVvdDspIGFuZCBkaWZmZXJlbnQgdGVybXMgYW5kIGNvbmRpdGlvbnMgbWF5CisJCWFwcGx5IHRvIHlvdXIgdXNlIG9mIGFueSBvYmplY3QgY29kZSBpbiB0aGUgQ29udGVudC4gQ2hlY2sgdGhlCisJCVJlZGlzdHJpYnV0b3IncyBsaWNlbnNlIHRoYXQgd2FzIHByb3ZpZGVkIHdpdGggdGhlIENvbnRlbnQuIElmIG5vIHN1Y2gKKwkJbGljZW5zZSBleGlzdHMsIGNvbnRhY3QgdGhlIFJlZGlzdHJpYnV0b3IuIFVubGVzcyBvdGhlcndpc2UgaW5kaWNhdGVkCisJCWJlbG93LCB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVQTCBzdGlsbCBhcHBseSB0byBhbnkgc291cmNlCisJCWNvZGUgaW4gdGhlIENvbnRlbnQgYW5kIHN1Y2ggc291cmNlIGNvZGUgbWF5IGJlIG9idGFpbmVkIGF0IDxhCisJCQlocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnLyI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZzwvYT4uCisJPC9wPgogCiA8L2JvZHk+CiA8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy5pbnRlZ3JhdGlvbi9idWlsZC5wcm9wZXJ0aWVzIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy5pbnRlZ3JhdGlvbi9idWlsZC5wcm9wZXJ0aWVzCmluZGV4IGJlOTdiZWYuLjczOGU1MmIgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMuaW50ZWdyYXRpb24vYnVpbGQucHJvcGVydGllcworKysgYi9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLmludGVncmF0aW9uL2J1aWxkLnByb3BlcnRpZXMKQEAgLTIsOSArMiw5IEBACiAjCiAjIENvcHlyaWdodCAoYykgMjAxMywgMjAxNSBJbnRlY3MgU3BBIAogIyBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0jIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorIyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICMgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSMgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyMgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICMKICMgQ29udHJpYnV0b3JzOgogIyBOaWNob2xhcyBQYWNpbmkgbmljaG9sYXMucGFjaW5pQGludGVjcy5pdCAKZGlmZiAtLWdpdCBhL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMuaW50ZWdyYXRpb24vcGx1Z2luLnhtbCBiL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMuaW50ZWdyYXRpb24vcGx1Z2luLnhtbAppbmRleCA3MDE1NWMwLi5kMDM3M2UwIDEwMDY0NAotLS0gYS9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLmludGVncmF0aW9uL3BsdWdpbi54bWwKKysrIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy5pbnRlZ3JhdGlvbi9wbHVnaW4ueG1sCkBAIC00LDkgKzQsOSBAQAogICAgCiAgICAgQ29weXJpZ2h0IChjKSAyMDEzLCAyMDE1IEludGVjcyBTcEEgCiAgICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICAgIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorICAgIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICAgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gICAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAgICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICAgCiAgICAgQ29udHJpYnV0b3JzOgogICAgIE5pY2hvbGFzIFBhY2luaSBuaWNob2xhcy5wYWNpbmlAaW50ZWNzLml0IApkaWZmIC0tZ2l0IGEvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy5pbnRlZ3JhdGlvbi9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy9pbnRlZ3JhdGlvbi9BY3RpdmF0b3IuamF2YSBiL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMuaW50ZWdyYXRpb24vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvaW50ZWdyYXRpb24vQWN0aXZhdG9yLmphdmEKaW5kZXggNjFlNWQ2Yi4uOTExYzRiYSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy5pbnRlZ3JhdGlvbi9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy9pbnRlZ3JhdGlvbi9BY3RpdmF0b3IuamF2YQorKysgYi9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLmludGVncmF0aW9uL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL2ludGVncmF0aW9uL0FjdGl2YXRvci5qYXZhCkBAIC0yLDkgKzIsOSBAQAogICoKICAqIENvcHlyaWdodCAoYykgMjAxMywgMjAxNSBJbnRlY3MgU3BBIAogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICAqCiAgKiBDb250cmlidXRvcnM6CiAgKiBOaWNob2xhcyBQYWNpbmkgbmljaG9sYXMucGFjaW5pQGludGVjcy5pdCAKZGlmZiAtLWdpdCBhL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMuaW50ZWdyYXRpb24vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvaW50ZWdyYXRpb24vSW5wdXRTdHJlYW1lci5qYXZhIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy5pbnRlZ3JhdGlvbi9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy9pbnRlZ3JhdGlvbi9JbnB1dFN0cmVhbWVyLmphdmEKaW5kZXggOTcyYWNhNS4uODFhYTI0MCAxMDA2NDQKLS0tIGEvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy5pbnRlZ3JhdGlvbi9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy9pbnRlZ3JhdGlvbi9JbnB1dFN0cmVhbWVyLmphdmEKKysrIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy5pbnRlZ3JhdGlvbi9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy9pbnRlZ3JhdGlvbi9JbnB1dFN0cmVhbWVyLmphdmEKQEAgLTIsOSArMiw5IEBACiAgKgogICogQ29weXJpZ2h0IChjKSAyMDEzLCAyMDE1IEludGVjcyBTcEEgCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICoKICAqIENvbnRyaWJ1dG9yczoKICAqIE5pY2hvbGFzIFBhY2luaSBuaWNob2xhcy5wYWNpbmlAaW50ZWNzLml0IApkaWZmIC0tZ2l0IGEvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy5pbnRlZ3JhdGlvbi9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy9pbnRlZ3JhdGlvbi9Ub29sSW50ZWdyYXRpb24uamF2YSBiL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMuaW50ZWdyYXRpb24vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvaW50ZWdyYXRpb24vVG9vbEludGVncmF0aW9uLmphdmEKaW5kZXggNGQ1MzQwMS4uNWVhNGQ4NiAxMDA2NDQKLS0tIGEvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy5pbnRlZ3JhdGlvbi9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy9pbnRlZ3JhdGlvbi9Ub29sSW50ZWdyYXRpb24uamF2YQorKysgYi9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLmludGVncmF0aW9uL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL2ludGVncmF0aW9uL1Rvb2xJbnRlZ3JhdGlvbi5qYXZhCkBAIC0yLDkgKzIsOSBAQAogICoNCiAgKiBDb3B5cmlnaHQgKGMpIDIwMTMsIDIwMTUgSW50ZWNzIFNwQSANCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoNCiAgKiBDb250cmlidXRvcnM6DQogICogTmljaG9sYXMgUGFjaW5pIG5pY2hvbGFzLnBhY2luaUBpbnRlY3MuaXQgDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy5pbnRlZ3JhdGlvbi9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy9pbnRlZ3JhdGlvbi9wcmVmZXJlbmNlcy9PY3JhQW5hbHlzaXNQcmVmZXJlbmNlUGFnZS5qYXZhIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy5pbnRlZ3JhdGlvbi9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy9pbnRlZ3JhdGlvbi9wcmVmZXJlbmNlcy9PY3JhQW5hbHlzaXNQcmVmZXJlbmNlUGFnZS5qYXZhCmluZGV4IDVlZWQyNDQuLjJiNTAzN2IgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMuaW50ZWdyYXRpb24vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvaW50ZWdyYXRpb24vcHJlZmVyZW5jZXMvT2NyYUFuYWx5c2lzUHJlZmVyZW5jZVBhZ2UuamF2YQorKysgYi9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLmludGVncmF0aW9uL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL2ludGVncmF0aW9uL3ByZWZlcmVuY2VzL09jcmFBbmFseXNpc1ByZWZlcmVuY2VQYWdlLmphdmEKQEAgLTIsOSArMiw5IEBACiAgKgogICogQ29weXJpZ2h0IChjKSAyMDEzLCAyMDE1IEludGVjcyBTcEEgCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICoKICAqIENvbnRyaWJ1dG9yczoKICAqIE5pY2hvbGFzIFBhY2luaSBuaWNob2xhcy5wYWNpbmlAaW50ZWNzLml0IApkaWZmIC0tZ2l0IGEvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy5pbnRlZ3JhdGlvbi9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy9pbnRlZ3JhdGlvbi9wcmVmZXJlbmNlcy9Yc2FwQW5hbHlzaXNQcmVmZXJlbmNlUGFnZS5qYXZhIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy5pbnRlZ3JhdGlvbi9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy9pbnRlZ3JhdGlvbi9wcmVmZXJlbmNlcy9Yc2FwQW5hbHlzaXNQcmVmZXJlbmNlUGFnZS5qYXZhCmluZGV4IDg2ZjA5NmIuLjcyMDZjZWMgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMuaW50ZWdyYXRpb24vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvaW50ZWdyYXRpb24vcHJlZmVyZW5jZXMvWHNhcEFuYWx5c2lzUHJlZmVyZW5jZVBhZ2UuamF2YQorKysgYi9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLmludGVncmF0aW9uL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL2ludGVncmF0aW9uL3ByZWZlcmVuY2VzL1hzYXBBbmFseXNpc1ByZWZlcmVuY2VQYWdlLmphdmEKQEAgLTEsMzEgKzEsMzggQEAKLXBhY2thZ2Ugb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy5pbnRlZ3JhdGlvbi5wcmVmZXJlbmNlczsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnByZWZlcmVuY2UuRGlyZWN0b3J5RmllbGRFZGl0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2UucHJlZmVyZW5jZS5GaWVsZEVkaXRvclByZWZlcmVuY2VQYWdlOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLklXb3JrYmVuY2g7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudWkuSVdvcmtiZW5jaFByZWZlcmVuY2VQYWdlOwotaW1wb3J0IG9yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMuaW50ZWdyYXRpb24uQWN0aXZhdG9yOwotCi1wdWJsaWMgY2xhc3MgWHNhcEFuYWx5c2lzUHJlZmVyZW5jZVBhZ2UgZXh0ZW5kcyBGaWVsZEVkaXRvclByZWZlcmVuY2VQYWdlIAotaW1wbGVtZW50cyBJV29ya2JlbmNoUHJlZmVyZW5jZVBhZ2V7Ci0JCi0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgWFNBUF9QQVRIID0gIlhTQVBfUEFUSCI7Ci0KLQlwdWJsaWMgWHNhcEFuYWx5c2lzUHJlZmVyZW5jZVBhZ2UoKSB7Ci0JCXN1cGVyKEdSSUQpOwotCX0KLQotCUBPdmVycmlkZQotCXByb3RlY3RlZCB2b2lkIGNyZWF0ZUZpZWxkRWRpdG9ycygpIHsKLQkJRGlyZWN0b3J5RmllbGRFZGl0b3IgeHNhcFBhdGhEaXJFZGl0b3IgPSBuZXcgRGlyZWN0b3J5RmllbGRFZGl0b3IoWFNBUF9QQVRILCAieFNBUCBzY3JpcHRzIGRpcmVjdG9yeToiLAotCQlnZXRGaWVsZEVkaXRvclBhcmVudCgpKTsJCi0JCWFkZEZpZWxkKHhzYXBQYXRoRGlyRWRpdG9yKTsKLQl9Ci0JCi0JQE92ZXJyaWRlCi0JcHVibGljIHZvaWQgaW5pdChJV29ya2JlbmNoIHdvcmtiZW5jaCkgewotCQlzZXRQcmVmZXJlbmNlU3RvcmUoQWN0aXZhdG9yLmdldERlZmF1bHQoKS5nZXRQcmVmZXJlbmNlU3RvcmUoKSk7Ci0JCXNldERlc2NyaXB0aW9uKCJQcmVmZXJlbmNlcyBwYWdlIGZvciB4U0FQIEFuYWx5c2lzIFRvb2wiKTsKLQl9Ci0KLX0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICogQ29weXJpZ2h0IChDKSAyMDIwIEZvbmRhemlvbmUgQnJ1bm8gS2Vzc2xlci4NCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQorICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorcGFja2FnZSBvcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLmludGVncmF0aW9uLnByZWZlcmVuY2VzOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS5wcmVmZXJlbmNlLkRpcmVjdG9yeUZpZWxkRWRpdG9yOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS5wcmVmZXJlbmNlLkZpZWxkRWRpdG9yUHJlZmVyZW5jZVBhZ2U7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnVpLklXb3JrYmVuY2g7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnVpLklXb3JrYmVuY2hQcmVmZXJlbmNlUGFnZTsNCitpbXBvcnQgb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy5pbnRlZ3JhdGlvbi5BY3RpdmF0b3I7DQorDQorcHVibGljIGNsYXNzIFhzYXBBbmFseXNpc1ByZWZlcmVuY2VQYWdlIGV4dGVuZHMgRmllbGRFZGl0b3JQcmVmZXJlbmNlUGFnZSANCitpbXBsZW1lbnRzIElXb3JrYmVuY2hQcmVmZXJlbmNlUGFnZXsNCisJDQorCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFhTQVBfUEFUSCA9ICJYU0FQX1BBVEgiOw0KKw0KKwlwdWJsaWMgWHNhcEFuYWx5c2lzUHJlZmVyZW5jZVBhZ2UoKSB7DQorCQlzdXBlcihHUklEKTsNCisJfQ0KKw0KKwlAT3ZlcnJpZGUNCisJcHJvdGVjdGVkIHZvaWQgY3JlYXRlRmllbGRFZGl0b3JzKCkgew0KKwkJRGlyZWN0b3J5RmllbGRFZGl0b3IgeHNhcFBhdGhEaXJFZGl0b3IgPSBuZXcgRGlyZWN0b3J5RmllbGRFZGl0b3IoWFNBUF9QQVRILCAieFNBUCBzY3JpcHRzIGRpcmVjdG9yeToiLA0KKwkJZ2V0RmllbGRFZGl0b3JQYXJlbnQoKSk7CQ0KKwkJYWRkRmllbGQoeHNhcFBhdGhEaXJFZGl0b3IpOw0KKwl9DQorCQ0KKwlAT3ZlcnJpZGUNCisJcHVibGljIHZvaWQgaW5pdChJV29ya2JlbmNoIHdvcmtiZW5jaCkgew0KKwkJc2V0UHJlZmVyZW5jZVN0b3JlKEFjdGl2YXRvci5nZXREZWZhdWx0KCkuZ2V0UHJlZmVyZW5jZVN0b3JlKCkpOw0KKwkJc2V0RGVzY3JpcHRpb24oIlByZWZlcmVuY2VzIHBhZ2UgZm9yIHhTQVAgQW5hbHlzaXMgVG9vbCIpOw0KKwl9DQorDQorfQ0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMucHJvZmlsZS9hYm91dC5odG1sIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy5wcm9maWxlL2Fib3V0Lmh0bWwKaW5kZXggZGQzYzA4OS4uMTY0Zjc4MSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy5wcm9maWxlL2Fib3V0Lmh0bWwKKysrIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy5wcm9maWxlL2Fib3V0Lmh0bWwKQEAgLTIsMjcgKzIsMzUgQEAKICAgICAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+CiA8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+CiA8aGVhZD4KLTxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiLz4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiIC8+CiA8dGl0bGU+QWJvdXQ8L3RpdGxlPgogPC9oZWFkPgogPGJvZHkgbGFuZz0iRU4tVVMiPgotPGgyPkFib3V0IFRoaXMgQ29udGVudDwvaDI+Ci0gCi08cD5Ob3ZlbWJlciAxNCwgMjAwODwvcD4JCi08aDM+TGljZW5zZTwvaDM+CisJPGgyPkFib3V0IFRoaXMgQ29udGVudDwvaDI+CiAKLTxwPlRoZSBFY2xpcHNlIEZvdW5kYXRpb24gbWFrZXMgYXZhaWxhYmxlIGFsbCBjb250ZW50IGluIHRoaXMgcGx1Zy1pbiAoJnF1b3Q7Q29udGVudCZxdW90OykuICBVbmxlc3Mgb3RoZXJ3aXNlIAotaW5kaWNhdGVkIGJlbG93LCB0aGUgQ29udGVudCBpcyBwcm92aWRlZCB0byB5b3UgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZQotRWNsaXBzZSBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDEuMCAoJnF1b3Q7RVBMJnF1b3Q7KS4gIEEgY29weSBvZiB0aGUgRVBMIGlzIGF2YWlsYWJsZSAKLWF0IDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbDwvYT4uCi1Gb3IgcHVycG9zZXMgb2YgdGhlIEVQTCwgJnF1b3Q7UHJvZ3JhbSZxdW90OyB3aWxsIG1lYW4gdGhlIENvbnRlbnQuPC9wPgorCTxwPk5vdmVtYmVyIDMwLCAyMDE3PC9wPgorCTxoMz5MaWNlbnNlPC9oMz4KIAotPHA+SWYgeW91IGRpZCBub3QgcmVjZWl2ZSB0aGlzIENvbnRlbnQgZGlyZWN0bHkgZnJvbSB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uLCB0aGUgQ29udGVudCBpcyAKLWJlaW5nIHJlZGlzdHJpYnV0ZWQgYnkgYW5vdGhlciBwYXJ0eSAoJnF1b3Q7UmVkaXN0cmlidXRvciZxdW90OykgYW5kIGRpZmZlcmVudCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBtYXkKLWFwcGx5IHRvIHlvdXIgdXNlIG9mIGFueSBvYmplY3QgY29kZSBpbiB0aGUgQ29udGVudC4gIENoZWNrIHRoZSBSZWRpc3RyaWJ1dG9yJ3MgbGljZW5zZSB0aGF0IHdhcyAKLXByb3ZpZGVkIHdpdGggdGhlIENvbnRlbnQuICBJZiBubyBzdWNoIGxpY2Vuc2UgZXhpc3RzLCBjb250YWN0IHRoZSBSZWRpc3RyaWJ1dG9yLiAgVW5sZXNzIG90aGVyd2lzZQotaW5kaWNhdGVkIGJlbG93LCB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVQTCBzdGlsbCBhcHBseSB0byBhbnkgc291cmNlIGNvZGUgaW4gdGhlIENvbnRlbnQKLWFuZCBzdWNoIHNvdXJjZSBjb2RlIG1heSBiZSBvYnRhaW5lZCBhdCA8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnPC9hPi48L3A+CisJPHA+CisJCVRoZSBFY2xpcHNlIEZvdW5kYXRpb24gbWFrZXMgYXZhaWxhYmxlIGFsbCBjb250ZW50IGluIHRoaXMgcGx1Zy1pbgorCQkoJnF1b3Q7Q29udGVudCZxdW90OykuIFVubGVzcyBvdGhlcndpc2UgaW5kaWNhdGVkIGJlbG93LCB0aGUgQ29udGVudAorCQlpcyBwcm92aWRlZCB0byB5b3UgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFY2xpcHNlCisJCVB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMi4wICgmcXVvdDtFUEwmcXVvdDspLiBBIGNvcHkgb2YgdGhlIEVQTCBpcworCQlhdmFpbGFibGUgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjA8L2E+LgorCQlGb3IgcHVycG9zZXMgb2YgdGhlIEVQTCwgJnF1b3Q7UHJvZ3JhbSZxdW90OyB3aWxsIG1lYW4gdGhlIENvbnRlbnQuCisJPC9wPgorCisJPHA+CisJCUlmIHlvdSBkaWQgbm90IHJlY2VpdmUgdGhpcyBDb250ZW50IGRpcmVjdGx5IGZyb20gdGhlIEVjbGlwc2UKKwkJRm91bmRhdGlvbiwgdGhlIENvbnRlbnQgaXMgYmVpbmcgcmVkaXN0cmlidXRlZCBieSBhbm90aGVyIHBhcnR5CisJCSgmcXVvdDtSZWRpc3RyaWJ1dG9yJnF1b3Q7KSBhbmQgZGlmZmVyZW50IHRlcm1zIGFuZCBjb25kaXRpb25zIG1heQorCQlhcHBseSB0byB5b3VyIHVzZSBvZiBhbnkgb2JqZWN0IGNvZGUgaW4gdGhlIENvbnRlbnQuIENoZWNrIHRoZQorCQlSZWRpc3RyaWJ1dG9yJ3MgbGljZW5zZSB0aGF0IHdhcyBwcm92aWRlZCB3aXRoIHRoZSBDb250ZW50LiBJZiBubyBzdWNoCisJCWxpY2Vuc2UgZXhpc3RzLCBjb250YWN0IHRoZSBSZWRpc3RyaWJ1dG9yLiBVbmxlc3Mgb3RoZXJ3aXNlIGluZGljYXRlZAorCQliZWxvdywgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFUEwgc3RpbGwgYXBwbHkgdG8gYW55IHNvdXJjZQorCQljb2RlIGluIHRoZSBDb250ZW50IGFuZCBzdWNoIHNvdXJjZSBjb2RlIG1heSBiZSBvYnRhaW5lZCBhdCA8YQorCQkJaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy8iPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmc8L2E+LgorCTwvcD4KIAogPC9ib2R5PgogPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMucHJvZmlsZS9idWlsZC5wcm9wZXJ0aWVzIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy5wcm9maWxlL2J1aWxkLnByb3BlcnRpZXMKaW5kZXggYjNkZTMwZC4uYTZmYTJlYSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy5wcm9maWxlL2J1aWxkLnByb3BlcnRpZXMKKysrIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy5wcm9maWxlL2J1aWxkLnByb3BlcnRpZXMKQEAgLTIsOSArMiw5IEBACiAjCiAjIENvcHlyaWdodCAoYykgMjAxMywgMjAxNSBJbnRlY3MgU3BBIAogIyBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0jIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorIyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICMgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSMgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyMgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICMKICMgQ29udHJpYnV0b3JzOgogIyBOaWNob2xhcyBQYWNpbmkgbmljaG9sYXMucGFjaW5pQGludGVjcy5pdCAKZGlmZiAtLWdpdCBhL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMucHJvZmlsZS9wYWxldHRlcy9Gb3JldmVyQkRELlBhbGV0dGUueG1sIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy5wcm9maWxlL3BhbGV0dGVzL0ZvcmV2ZXJCREQuUGFsZXR0ZS54bWwKaW5kZXggMGIxOGUzNy4uZDE3MTI4NiAxMDA2NDQKLS0tIGEvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy5wcm9maWxlL3BhbGV0dGVzL0ZvcmV2ZXJCREQuUGFsZXR0ZS54bWwKKysrIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy5wcm9maWxlL3BhbGV0dGVzL0ZvcmV2ZXJCREQuUGFsZXR0ZS54bWwKQEAgLTMsOSArMyw5IEBACiAgICAKICAgICBDb3B5cmlnaHQgKGMpIDIwMTMsIDIwMTUgSW50ZWNzIFNwQSAKICAgICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gICAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisgICAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgICAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAgICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorICAgIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgICAKICAgICBDb250cmlidXRvcnM6CiAgICAgTmljaG9sYXMgUGFjaW5pIG5pY2hvbGFzLnBhY2luaUBpbnRlY3MuaXQgCmRpZmYgLS1naXQgYS9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnByb2ZpbGUvcGFsZXR0ZXMvRm9yZXZlckNELlBhbGV0dGUueG1sIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy5wcm9maWxlL3BhbGV0dGVzL0ZvcmV2ZXJDRC5QYWxldHRlLnhtbAppbmRleCBlNGQxNDU2Li42MTViOGNkIDEwMDY0NAotLS0gYS9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnByb2ZpbGUvcGFsZXR0ZXMvRm9yZXZlckNELlBhbGV0dGUueG1sCisrKyBiL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMucHJvZmlsZS9wYWxldHRlcy9Gb3JldmVyQ0QuUGFsZXR0ZS54bWwKQEAgLTMsOSArMyw5IEBACiAgICAKICAgICBDb3B5cmlnaHQgKGMpIDIwMTMsIDIwMTUgSW50ZWNzIFNwQSAKICAgICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gICAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisgICAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgICAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAgICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorICAgIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgICAKICAgICBDb250cmlidXRvcnM6CiAgICAgTmljaG9sYXMgUGFjaW5pIG5pY2hvbGFzLnBhY2luaUBpbnRlY3MuaXQgCmRpZmYgLS1naXQgYS9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnByb2ZpbGUvcGFsZXR0ZXMvRm9yZXZlckNTRC5QYWxldHRlLnhtbCBiL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMucHJvZmlsZS9wYWxldHRlcy9Gb3JldmVyQ1NELlBhbGV0dGUueG1sCmluZGV4IGY5YTZhYmEuLjJiNTRhMzEgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMucHJvZmlsZS9wYWxldHRlcy9Gb3JldmVyQ1NELlBhbGV0dGUueG1sCisrKyBiL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMucHJvZmlsZS9wYWxldHRlcy9Gb3JldmVyQ1NELlBhbGV0dGUueG1sCkBAIC0zLDkgKzMsOSBAQAogICAgCiAgICAgQ29weXJpZ2h0IChjKSAyMDEzLCAyMDE1IEludGVjcyBTcEEgCiAgICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICAgIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorICAgIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICAgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gICAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAgICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICAgCiAgICAgQ29udHJpYnV0b3JzOgogICAgIE5pY2hvbGFzIFBhY2luaSBuaWNob2xhcy5wYWNpbmlAaW50ZWNzLml0IApkaWZmIC0tZ2l0IGEvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy5wcm9maWxlL3BhbGV0dGVzL0ZvcmV2ZXJEZXBsb3ltZW50Q0QuUGFsZXR0ZS54bWwgYi9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnByb2ZpbGUvcGFsZXR0ZXMvRm9yZXZlckRlcGxveW1lbnRDRC5QYWxldHRlLnhtbAppbmRleCA0OThlNDAzLi45OGY2ZmVhIDEwMDY0NAotLS0gYS9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnByb2ZpbGUvcGFsZXR0ZXMvRm9yZXZlckRlcGxveW1lbnRDRC5QYWxldHRlLnhtbAorKysgYi9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnByb2ZpbGUvcGFsZXR0ZXMvRm9yZXZlckRlcGxveW1lbnRDRC5QYWxldHRlLnhtbApAQCAtMyw5ICszLDkgQEAKICAgIAogICAgIENvcHlyaWdodCAoYykgMjAxMywgMjAxNSBJbnRlY3MgU3BBIAogICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAgICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAgICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICAgICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICAgIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgICAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICAgIAogICAgIENvbnRyaWJ1dG9yczoKICAgICBOaWNob2xhcyBQYWNpbmkgbmljaG9sYXMucGFjaW5pQGludGVjcy5pdCAKZGlmZiAtLWdpdCBhL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMucHJvZmlsZS9wYWxldHRlcy9Gb3JldmVySUJELlBhbGV0dGUueG1sIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy5wcm9maWxlL3BhbGV0dGVzL0ZvcmV2ZXJJQkQuUGFsZXR0ZS54bWwKaW5kZXggOGEyN2RlNy4uZDA4MGQ5MSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy5wcm9maWxlL3BhbGV0dGVzL0ZvcmV2ZXJJQkQuUGFsZXR0ZS54bWwKKysrIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy5wcm9maWxlL3BhbGV0dGVzL0ZvcmV2ZXJJQkQuUGFsZXR0ZS54bWwKQEAgLTMsOSArMyw5IEBACiAgICAKICAgICBDb3B5cmlnaHQgKGMpIDIwMTMsIDIwMTUgSW50ZWNzIFNwQSAKICAgICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gICAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisgICAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgICAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAgICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorICAgIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgICAKICAgICBDb250cmlidXRvcnM6CiAgICAgTmljaG9sYXMgUGFjaW5pIG5pY2hvbGFzLnBhY2luaUBpbnRlY3MuaXQgCmRpZmYgLS1naXQgYS9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnByb2ZpbGUvcGFsZXR0ZXMvRm9yZXZlclJlcS5QYWxldHRlLnhtbCBiL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMucHJvZmlsZS9wYWxldHRlcy9Gb3JldmVyUmVxLlBhbGV0dGUueG1sCmluZGV4IDQ3OTViMzkuLjg3Y2Y1YjkgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMucHJvZmlsZS9wYWxldHRlcy9Gb3JldmVyUmVxLlBhbGV0dGUueG1sCisrKyBiL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMucHJvZmlsZS9wYWxldHRlcy9Gb3JldmVyUmVxLlBhbGV0dGUueG1sCkBAIC0zLDkgKzMsOSBAQAogICAgCiAgICAgQ29weXJpZ2h0IChjKSAyMDEzLCAyMDE1IEludGVjcyBTcEEgCiAgICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICAgIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorICAgIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICAgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gICAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAgICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICAgCiAgICAgQ29udHJpYnV0b3JzOgogICAgIE5pY2hvbGFzIFBhY2luaSBuaWNob2xhcy5wYWNpbmlAaW50ZWNzLml0IApkaWZmIC0tZ2l0IGEvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy5wcm9maWxlL3BsdWdpbi5wcm9wZXJ0aWVzIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy5wcm9maWxlL3BsdWdpbi5wcm9wZXJ0aWVzCmluZGV4IDA3ZTlkYWUuLjEyZmViMjQgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMucHJvZmlsZS9wbHVnaW4ucHJvcGVydGllcworKysgYi9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnByb2ZpbGUvcGx1Z2luLnByb3BlcnRpZXMKQEAgLTIsOSArMiw5IEBACiAjCiAjIENvcHlyaWdodCAoYykgMjAxMywgMjAxNSBJbnRlY3MgU3BBIAogIyBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0jIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorIyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICMgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSMgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyMgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICMKICMgQ29udHJpYnV0b3JzOgogIyBOaWNob2xhcyBQYWNpbmkgbmljaG9sYXMucGFjaW5pQGludGVjcy5pdCAKZGlmZiAtLWdpdCBhL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMucHJvZmlsZS9wbHVnaW4ueG1sIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy5wcm9maWxlL3BsdWdpbi54bWwKaW5kZXggMjhmZjQ5YS4uZTJlYmE1ZiAxMDA2NDQKLS0tIGEvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy5wcm9maWxlL3BsdWdpbi54bWwKKysrIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy5wcm9maWxlL3BsdWdpbi54bWwKQEAgLTUsOSArNSw5IEBACiAgICAKICAgICBDb3B5cmlnaHQgKGMpIDIwMTMsIDIwMTUgSW50ZWNzIFNwQSAKICAgICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gICAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisgICAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgICAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAgICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorICAgIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgICAKICAgICBDb250cmlidXRvcnM6CiAgICAgTmljaG9sYXMgUGFjaW5pIG5pY2hvbGFzLnBhY2luaUBpbnRlY3MuaXQgCmRpZmYgLS1naXQgYS9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvcHJvZmlsZS9BY3RpdmF0b3IuamF2YSBiL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMucHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy9wcm9maWxlL0FjdGl2YXRvci5qYXZhCmluZGV4IGMyYjM4ZWIuLjMyZjQ0NzUgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMucHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy9wcm9maWxlL0FjdGl2YXRvci5qYXZhCisrKyBiL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMucHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy9wcm9maWxlL0FjdGl2YXRvci5qYXZhCkBAIC0yLDkgKzIsOSBAQAogICoKICAqIENvcHlyaWdodCAoYykgMjAxMywgMjAxNSBJbnRlY3MgU3BBIAogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICAqCiAgKiBDb250cmlidXRvcnM6CiAgKiBOaWNob2xhcyBQYWNpbmkgbmljaG9sYXMucGFjaW5pQGludGVjcy5pdCAKZGlmZiAtLWdpdCBhL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMucHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy9wcm9maWxlL2NoZXNzY29udHJhY3QvdXRpbC9Db25zdGFudHMuamF2YSBiL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMucHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy9wcm9maWxlL2NoZXNzY29udHJhY3QvdXRpbC9Db25zdGFudHMuamF2YQppbmRleCA0MDU0MjQzLi43NjhhMDVhIDEwMDY0NAotLS0gYS9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvcHJvZmlsZS9jaGVzc2NvbnRyYWN0L3V0aWwvQ29uc3RhbnRzLmphdmEKKysrIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy5wcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL3Byb2ZpbGUvY2hlc3Njb250cmFjdC91dGlsL0NvbnN0YW50cy5qYXZhCkBAIC0xLDkgKzEsMTYgQEAKLXBhY2thZ2Ugb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy5wcm9maWxlLmNoZXNzY29udHJhY3QudXRpbDsKLQotcHVibGljIGNsYXNzIENvbnN0YW50cyB7Ci0JcHVibGljIHN0YXRpYyBTdHJpbmcgQ29udHJhY3RSZWZpbmVtZW50QW5hbHlzaXMgPSAiQ0hFU1NDb250cmFjdDo6Q29udHJhY3RSZWZpbmVtZW50QW5hbHlzaXNDb250ZXh0IjsKLQlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBDT05UUkFDVCA9ICJDSEVTU0NvbnRyYWN0OjpDb250cmFjdCI7Ci0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09OVFJBQ1RfUFJPUCA9ICJDSEVTU0NvbnRyYWN0OjpDb250cmFjdFByb3BlcnR5IjsKLQlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBERUxFR0FUSU9OX0NPTlNUID0gIkNIRVNTQ29udHJhY3Q6OkRlbGVnYXRpb25Db25zdHJhaW50IjsKLQlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBGT1JNQUxfUFJPUCA9ICJDSEVTU0NvbnRyYWN0OjpGb3JtYWxQcm9wZXJ0eSI7Ci19CisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqIENvcHlyaWdodCAoQykgMjAyMCBGb25kYXppb25lIEJydW5vIEtlc3NsZXIuDQorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KKyAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KK3BhY2thZ2Ugb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy5wcm9maWxlLmNoZXNzY29udHJhY3QudXRpbDsNCisNCitwdWJsaWMgY2xhc3MgQ29uc3RhbnRzIHsNCisJcHVibGljIHN0YXRpYyBTdHJpbmcgQ29udHJhY3RSZWZpbmVtZW50QW5hbHlzaXMgPSAiQ0hFU1NDb250cmFjdDo6Q29udHJhY3RSZWZpbmVtZW50QW5hbHlzaXNDb250ZXh0IjsNCisJcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09OVFJBQ1QgPSAiQ0hFU1NDb250cmFjdDo6Q29udHJhY3QiOw0KKwlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBDT05UUkFDVF9QUk9QID0gIkNIRVNTQ29udHJhY3Q6OkNvbnRyYWN0UHJvcGVydHkiOw0KKwlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBERUxFR0FUSU9OX0NPTlNUID0gIkNIRVNTQ29udHJhY3Q6OkRlbGVnYXRpb25Db25zdHJhaW50IjsNCisJcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgRk9STUFMX1BST1AgPSAiQ0hFU1NDb250cmFjdDo6Rm9ybWFsUHJvcGVydHkiOw0KK30NCmRpZmYgLS1naXQgYS9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvcHJvZmlsZS9jaGVzc2NvbnRyYWN0L3V0aWwvQ29udHJhY3RFbnRpdHlVdGlsLmphdmEgYi9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvcHJvZmlsZS9jaGVzc2NvbnRyYWN0L3V0aWwvQ29udHJhY3RFbnRpdHlVdGlsLmphdmEKaW5kZXggNTk4ODVmMS4uZWQ1NGQ5YiAxMDA2NDQKLS0tIGEvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy5wcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL3Byb2ZpbGUvY2hlc3Njb250cmFjdC91dGlsL0NvbnRyYWN0RW50aXR5VXRpbC5qYXZhCisrKyBiL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMucHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy9wcm9maWxlL2NoZXNzY29udHJhY3QvdXRpbC9Db250cmFjdEVudGl0eVV0aWwuamF2YQpAQCAtMSw5ICsxLDkgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogQ29weXJpZ2h0IChDKSAyMDE3IEZvbmRhemlvbmUgQnJ1bm8gS2Vzc2xlci4NCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICogDQogICogQ29udHJpYnV0b3JzOg0KICAqICAgICBBbGJlcnRvIERlYmlhc2kgLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24NCmRpZmYgLS1naXQgYS9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvcHJvZmlsZS9jaGVzc2NvbnRyYWN0L3V0aWwvRW50aXR5VXRpbC5qYXZhIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy5wcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL3Byb2ZpbGUvY2hlc3Njb250cmFjdC91dGlsL0VudGl0eVV0aWwuamF2YQppbmRleCBlMTY1ZGIwLi5mNzllNjhhIDEwMDY0NAotLS0gYS9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvcHJvZmlsZS9jaGVzc2NvbnRyYWN0L3V0aWwvRW50aXR5VXRpbC5qYXZhCisrKyBiL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMucHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy9wcm9maWxlL2NoZXNzY29udHJhY3QvdXRpbC9FbnRpdHlVdGlsLmphdmEKQEAgLTEsOSArMSw5IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICogQ29weXJpZ2h0IChDKSAyMDE3IEZvbmRhemlvbmUgQnJ1bm8gS2Vzc2xlci4KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgKiAKICAqIENvbnRyaWJ1dG9yczoKICAqICAgICBBbGJlcnRvIERlYmlhc2kgLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KZGlmZiAtLWdpdCBhL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMucmVmaW5lbWVudFZpZXcvYWJvdXQuaHRtbCBiL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMucmVmaW5lbWVudFZpZXcvYWJvdXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNjRmNzgxCi0tLSAvZGV2L251bGwKKysrIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy5yZWZpbmVtZW50Vmlldy9hYm91dC5odG1sCkBAIC0wLDAgKzEsMzYgQEAKKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFN0cmljdC8vRU4iCisgICAgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXN0cmljdC5kdGQiPgorPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xIiAvPgorPHRpdGxlPkFib3V0PC90aXRsZT4KKzwvaGVhZD4KKzxib2R5IGxhbmc9IkVOLVVTIj4KKwk8aDI+QWJvdXQgVGhpcyBDb250ZW50PC9oMj4KKworCTxwPk5vdmVtYmVyIDMwLCAyMDE3PC9wPgorCTxoMz5MaWNlbnNlPC9oMz4KKworCTxwPgorCQlUaGUgRWNsaXBzZSBGb3VuZGF0aW9uIG1ha2VzIGF2YWlsYWJsZSBhbGwgY29udGVudCBpbiB0aGlzIHBsdWctaW4KKwkJKCZxdW90O0NvbnRlbnQmcXVvdDspLiBVbmxlc3Mgb3RoZXJ3aXNlIGluZGljYXRlZCBiZWxvdywgdGhlIENvbnRlbnQKKwkJaXMgcHJvdmlkZWQgdG8geW91IHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRWNsaXBzZQorCQlQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDIuMCAoJnF1b3Q7RVBMJnF1b3Q7KS4gQSBjb3B5IG9mIHRoZSBFUEwgaXMKKwkJYXZhaWxhYmxlIGF0IDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMCI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wPC9hPi4KKwkJRm9yIHB1cnBvc2VzIG9mIHRoZSBFUEwsICZxdW90O1Byb2dyYW0mcXVvdDsgd2lsbCBtZWFuIHRoZSBDb250ZW50LgorCTwvcD4KKworCTxwPgorCQlJZiB5b3UgZGlkIG5vdCByZWNlaXZlIHRoaXMgQ29udGVudCBkaXJlY3RseSBmcm9tIHRoZSBFY2xpcHNlCisJCUZvdW5kYXRpb24sIHRoZSBDb250ZW50IGlzIGJlaW5nIHJlZGlzdHJpYnV0ZWQgYnkgYW5vdGhlciBwYXJ0eQorCQkoJnF1b3Q7UmVkaXN0cmlidXRvciZxdW90OykgYW5kIGRpZmZlcmVudCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBtYXkKKwkJYXBwbHkgdG8geW91ciB1c2Ugb2YgYW55IG9iamVjdCBjb2RlIGluIHRoZSBDb250ZW50LiBDaGVjayB0aGUKKwkJUmVkaXN0cmlidXRvcidzIGxpY2Vuc2UgdGhhdCB3YXMgcHJvdmlkZWQgd2l0aCB0aGUgQ29udGVudC4gSWYgbm8gc3VjaAorCQlsaWNlbnNlIGV4aXN0cywgY29udGFjdCB0aGUgUmVkaXN0cmlidXRvci4gVW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQKKwkJYmVsb3csIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRVBMIHN0aWxsIGFwcGx5IHRvIGFueSBzb3VyY2UKKwkJY29kZSBpbiB0aGUgQ29udGVudCBhbmQgc3VjaCBzb3VyY2UgY29kZSBtYXkgYmUgb2J0YWluZWQgYXQgPGEKKwkJCWhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnPC9hPi4KKwk8L3A+CisKKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnJlZmluZW1lbnRWaWV3L3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL3JlZmluZW1lbnRWaWV3L2xpc3RlbmVyL1BhcHlydXNMaXN0ZW5lci5qYXZhIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy5yZWZpbmVtZW50Vmlldy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy9yZWZpbmVtZW50Vmlldy9saXN0ZW5lci9QYXB5cnVzTGlzdGVuZXIuamF2YQppbmRleCAyYTMwYmQ4Li4xNmY1YTBmIDEwMDY0NAotLS0gYS9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnJlZmluZW1lbnRWaWV3L3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL3JlZmluZW1lbnRWaWV3L2xpc3RlbmVyL1BhcHlydXNMaXN0ZW5lci5qYXZhCisrKyBiL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMucmVmaW5lbWVudFZpZXcvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvcmVmaW5lbWVudFZpZXcvbGlzdGVuZXIvUGFweXJ1c0xpc3RlbmVyLmphdmEKQEAgLTEsOSArMSw5IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIENvcHlyaWdodCAoQykgMjAxNyBGb25kYXppb25lIEJydW5vIEtlc3NsZXIuDQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqIA0KICAqIENvbnRyaWJ1dG9yczoNCiAgKiAgICAgQWxiZXJ0byBEZWJpYXNpIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy5yZWZpbmVtZW50Vmlldy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy9yZWZpbmVtZW50Vmlldy9saXN0ZW5lci9TZWxlY3Rpb25MaXN0ZW5lci5qYXZhIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy5yZWZpbmVtZW50Vmlldy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy9yZWZpbmVtZW50Vmlldy9saXN0ZW5lci9TZWxlY3Rpb25MaXN0ZW5lci5qYXZhCmluZGV4IDIzMGI3OTIuLmMzMTdhNTggMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMucmVmaW5lbWVudFZpZXcvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvcmVmaW5lbWVudFZpZXcvbGlzdGVuZXIvU2VsZWN0aW9uTGlzdGVuZXIuamF2YQorKysgYi9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnJlZmluZW1lbnRWaWV3L3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL3JlZmluZW1lbnRWaWV3L2xpc3RlbmVyL1NlbGVjdGlvbkxpc3RlbmVyLmphdmEKQEAgLTEsOSArMSw5IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIENvcHlyaWdodCAoQykgMjAxNyBGb25kYXppb25lIEJydW5vIEtlc3NsZXIuDQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqIA0KICAqIENvbnRyaWJ1dG9yczoNCiAgKiAgICAgQWxiZXJ0byBEZWJpYXNpIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy5yZWZpbmVtZW50Vmlldy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy9yZWZpbmVtZW50Vmlldy90cmVlRWxlbWVudHMvQ0hFU1NDb250cmFjdE5vZGUuamF2YSBiL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMucmVmaW5lbWVudFZpZXcvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvcmVmaW5lbWVudFZpZXcvdHJlZUVsZW1lbnRzL0NIRVNTQ29udHJhY3ROb2RlLmphdmEKaW5kZXggNjVjNzVmOC4uZjVlNDU1NCAxMDA2NDQKLS0tIGEvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy5yZWZpbmVtZW50Vmlldy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy9yZWZpbmVtZW50Vmlldy90cmVlRWxlbWVudHMvQ0hFU1NDb250cmFjdE5vZGUuamF2YQorKysgYi9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnJlZmluZW1lbnRWaWV3L3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL3JlZmluZW1lbnRWaWV3L3RyZWVFbGVtZW50cy9DSEVTU0NvbnRyYWN0Tm9kZS5qYXZhCkBAIC0xLDkgKzEsOSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTcgRm9uZGF6aW9uZSBCcnVubyBLZXNzbGVyLg0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKiANCiAgKiBDb250cmlidXRvcnM6DQogICogICAgIEFsYmVydG8gRGViaWFzaSAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbg0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMucmVmaW5lbWVudFZpZXcvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvcmVmaW5lbWVudFZpZXcvdHJlZUVsZW1lbnRzL0NIRVNTUm9vdE5vZGUuamF2YSBiL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMucmVmaW5lbWVudFZpZXcvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvcmVmaW5lbWVudFZpZXcvdHJlZUVsZW1lbnRzL0NIRVNTUm9vdE5vZGUuamF2YQppbmRleCAyMjc3NzE4Li5lOTYxZDY5IDEwMDY0NAotLS0gYS9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnJlZmluZW1lbnRWaWV3L3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL3JlZmluZW1lbnRWaWV3L3RyZWVFbGVtZW50cy9DSEVTU1Jvb3ROb2RlLmphdmEKKysrIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy5yZWZpbmVtZW50Vmlldy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy9yZWZpbmVtZW50Vmlldy90cmVlRWxlbWVudHMvQ0hFU1NSb290Tm9kZS5qYXZhCkBAIC0xLDkgKzEsOSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTcgRm9uZGF6aW9uZSBCcnVubyBLZXNzbGVyLg0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKiANCiAgKiBDb250cmlidXRvcnM6DQogICogICAgIEFsYmVydG8gRGViaWFzaSAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbg0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMucmVmaW5lbWVudFZpZXcvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvcmVmaW5lbWVudFZpZXcvdmlldy9DdXN0b21SZWZpbmVtZW50Vmlldy5qYXZhIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy5yZWZpbmVtZW50Vmlldy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy9yZWZpbmVtZW50Vmlldy92aWV3L0N1c3RvbVJlZmluZW1lbnRWaWV3LmphdmEKaW5kZXggNTY3ZTcyMS4uZGU2MDNkOCAxMDA2NDQKLS0tIGEvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy5yZWZpbmVtZW50Vmlldy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy9yZWZpbmVtZW50Vmlldy92aWV3L0N1c3RvbVJlZmluZW1lbnRWaWV3LmphdmEKKysrIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy5yZWZpbmVtZW50Vmlldy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy9yZWZpbmVtZW50Vmlldy92aWV3L0N1c3RvbVJlZmluZW1lbnRWaWV3LmphdmEKQEAgLTEsOSArMSw5IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIENvcHlyaWdodCAoQykgMjAxNyBGb25kYXppb25lIEJydW5vIEtlc3NsZXIuDQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqIA0KICAqIENvbnRyaWJ1dG9yczoNCiAgKiAgICAgQWxiZXJ0byBEZWJpYXNpIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy5zYWZldHlBbmFseXNpcy9hYm91dC5odG1sIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy5zYWZldHlBbmFseXNpcy9hYm91dC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE2NGY3ODEKLS0tIC9kZXYvbnVsbAorKysgYi9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnNhZmV0eUFuYWx5c2lzL2Fib3V0Lmh0bWwKQEAgLTAsMCArMSwzNiBAQAorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgU3RyaWN0Ly9FTiIKKyAgICAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+Cis8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiIC8+Cis8dGl0bGU+QWJvdXQ8L3RpdGxlPgorPC9oZWFkPgorPGJvZHkgbGFuZz0iRU4tVVMiPgorCTxoMj5BYm91dCBUaGlzIENvbnRlbnQ8L2gyPgorCisJPHA+Tm92ZW1iZXIgMzAsIDIwMTc8L3A+CisJPGgzPkxpY2Vuc2U8L2gzPgorCisJPHA+CisJCVRoZSBFY2xpcHNlIEZvdW5kYXRpb24gbWFrZXMgYXZhaWxhYmxlIGFsbCBjb250ZW50IGluIHRoaXMgcGx1Zy1pbgorCQkoJnF1b3Q7Q29udGVudCZxdW90OykuIFVubGVzcyBvdGhlcndpc2UgaW5kaWNhdGVkIGJlbG93LCB0aGUgQ29udGVudAorCQlpcyBwcm92aWRlZCB0byB5b3UgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFY2xpcHNlCisJCVB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMi4wICgmcXVvdDtFUEwmcXVvdDspLiBBIGNvcHkgb2YgdGhlIEVQTCBpcworCQlhdmFpbGFibGUgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjA8L2E+LgorCQlGb3IgcHVycG9zZXMgb2YgdGhlIEVQTCwgJnF1b3Q7UHJvZ3JhbSZxdW90OyB3aWxsIG1lYW4gdGhlIENvbnRlbnQuCisJPC9wPgorCisJPHA+CisJCUlmIHlvdSBkaWQgbm90IHJlY2VpdmUgdGhpcyBDb250ZW50IGRpcmVjdGx5IGZyb20gdGhlIEVjbGlwc2UKKwkJRm91bmRhdGlvbiwgdGhlIENvbnRlbnQgaXMgYmVpbmcgcmVkaXN0cmlidXRlZCBieSBhbm90aGVyIHBhcnR5CisJCSgmcXVvdDtSZWRpc3RyaWJ1dG9yJnF1b3Q7KSBhbmQgZGlmZmVyZW50IHRlcm1zIGFuZCBjb25kaXRpb25zIG1heQorCQlhcHBseSB0byB5b3VyIHVzZSBvZiBhbnkgb2JqZWN0IGNvZGUgaW4gdGhlIENvbnRlbnQuIENoZWNrIHRoZQorCQlSZWRpc3RyaWJ1dG9yJ3MgbGljZW5zZSB0aGF0IHdhcyBwcm92aWRlZCB3aXRoIHRoZSBDb250ZW50LiBJZiBubyBzdWNoCisJCWxpY2Vuc2UgZXhpc3RzLCBjb250YWN0IHRoZSBSZWRpc3RyaWJ1dG9yLiBVbmxlc3Mgb3RoZXJ3aXNlIGluZGljYXRlZAorCQliZWxvdywgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFUEwgc3RpbGwgYXBwbHkgdG8gYW55IHNvdXJjZQorCQljb2RlIGluIHRoZSBDb250ZW50IGFuZCBzdWNoIHNvdXJjZSBjb2RlIG1heSBiZSBvYnRhaW5lZCBhdCA8YQorCQkJaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy8iPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmc8L2E+LgorCTwvcD4KKworPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMuc2FmZXR5QW5hbHlzaXMvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9zYWZldHlBbmFseXNpcy9jb21tYW5kcy9Db21wdXRlQ29udHJhY3RGYXVsdFRyZWVDb21tYW5kLmphdmEgYi9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnNhZmV0eUFuYWx5c2lzL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3Mvc2FmZXR5QW5hbHlzaXMvY29tbWFuZHMvQ29tcHV0ZUNvbnRyYWN0RmF1bHRUcmVlQ29tbWFuZC5qYXZhCmluZGV4IGQ5ZGI2NmEuLmE1YTNiNmYgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMuc2FmZXR5QW5hbHlzaXMvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9zYWZldHlBbmFseXNpcy9jb21tYW5kcy9Db21wdXRlQ29udHJhY3RGYXVsdFRyZWVDb21tYW5kLmphdmEKKysrIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy5zYWZldHlBbmFseXNpcy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3NhZmV0eUFuYWx5c2lzL2NvbW1hbmRzL0NvbXB1dGVDb250cmFjdEZhdWx0VHJlZUNvbW1hbmQuamF2YQpAQCAtMSw5ICsxLDkgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogQ29weXJpZ2h0IChDKSAyMDE3IEZvbmRhemlvbmUgQnJ1bm8gS2Vzc2xlci4NCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICogDQogICogQ29udHJpYnV0b3JzOg0KICAqICAgICBBbGJlcnRvIERlYmlhc2kgLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24NCmRpZmYgLS1naXQgYS9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnNhZmV0eUFuYWx5c2lzL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3Mvc2FmZXR5QW5hbHlzaXMvY29tbWFuZHMvZGVidWcvQ29tcHV0ZUNvbnRyYWN0RmF1bHRUcmVlT25GaWxlQ29tbWFuZC5qYXZhIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy5zYWZldHlBbmFseXNpcy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3NhZmV0eUFuYWx5c2lzL2NvbW1hbmRzL2RlYnVnL0NvbXB1dGVDb250cmFjdEZhdWx0VHJlZU9uRmlsZUNvbW1hbmQuamF2YQppbmRleCAwMzYwYTQwLi5mYzNkMTRlIDEwMDY0NAotLS0gYS9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnNhZmV0eUFuYWx5c2lzL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3Mvc2FmZXR5QW5hbHlzaXMvY29tbWFuZHMvZGVidWcvQ29tcHV0ZUNvbnRyYWN0RmF1bHRUcmVlT25GaWxlQ29tbWFuZC5qYXZhCisrKyBiL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMuc2FmZXR5QW5hbHlzaXMvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9zYWZldHlBbmFseXNpcy9jb21tYW5kcy9kZWJ1Zy9Db21wdXRlQ29udHJhY3RGYXVsdFRyZWVPbkZpbGVDb21tYW5kLmphdmEKQEAgLTEsOSArMSw5IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIENvcHlyaWdodCAoQykgMjAxNyBGb25kYXppb25lIEJydW5vIEtlc3NsZXIuDQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqIA0KICAqIENvbnRyaWJ1dG9yczoNCiAgKiAgICAgQWxiZXJ0byBEZWJpYXNpIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy50cmFuc2Zvcm1hdGlvbnMvYWJvdXQuaHRtbCBiL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMudHJhbnNmb3JtYXRpb25zL2Fib3V0Lmh0bWwKaW5kZXggZGQzYzA4OS4uMTY0Zjc4MSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy50cmFuc2Zvcm1hdGlvbnMvYWJvdXQuaHRtbAorKysgYi9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnRyYW5zZm9ybWF0aW9ucy9hYm91dC5odG1sCkBAIC0yLDI3ICsyLDM1IEBACiAgICAgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXN0cmljdC5kdGQiPgogPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgogPGhlYWQ+Ci08bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xIi8+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xIiAvPgogPHRpdGxlPkFib3V0PC90aXRsZT4KIDwvaGVhZD4KIDxib2R5IGxhbmc9IkVOLVVTIj4KLTxoMj5BYm91dCBUaGlzIENvbnRlbnQ8L2gyPgotIAotPHA+Tm92ZW1iZXIgMTQsIDIwMDg8L3A+CQotPGgzPkxpY2Vuc2U8L2gzPgorCTxoMj5BYm91dCBUaGlzIENvbnRlbnQ8L2gyPgogCi08cD5UaGUgRWNsaXBzZSBGb3VuZGF0aW9uIG1ha2VzIGF2YWlsYWJsZSBhbGwgY29udGVudCBpbiB0aGlzIHBsdWctaW4gKCZxdW90O0NvbnRlbnQmcXVvdDspLiAgVW5sZXNzIG90aGVyd2lzZSAKLWluZGljYXRlZCBiZWxvdywgdGhlIENvbnRlbnQgaXMgcHJvdmlkZWQgdG8geW91IHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUKLUVjbGlwc2UgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAxLjAgKCZxdW90O0VQTCZxdW90OykuICBBIGNvcHkgb2YgdGhlIEVQTCBpcyBhdmFpbGFibGUgCi1hdCA8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWw8L2E+LgotRm9yIHB1cnBvc2VzIG9mIHRoZSBFUEwsICZxdW90O1Byb2dyYW0mcXVvdDsgd2lsbCBtZWFuIHRoZSBDb250ZW50LjwvcD4KKwk8cD5Ob3ZlbWJlciAzMCwgMjAxNzwvcD4KKwk8aDM+TGljZW5zZTwvaDM+CiAKLTxwPklmIHlvdSBkaWQgbm90IHJlY2VpdmUgdGhpcyBDb250ZW50IGRpcmVjdGx5IGZyb20gdGhlIEVjbGlwc2UgRm91bmRhdGlvbiwgdGhlIENvbnRlbnQgaXMgCi1iZWluZyByZWRpc3RyaWJ1dGVkIGJ5IGFub3RoZXIgcGFydHkgKCZxdW90O1JlZGlzdHJpYnV0b3ImcXVvdDspIGFuZCBkaWZmZXJlbnQgdGVybXMgYW5kIGNvbmRpdGlvbnMgbWF5Ci1hcHBseSB0byB5b3VyIHVzZSBvZiBhbnkgb2JqZWN0IGNvZGUgaW4gdGhlIENvbnRlbnQuICBDaGVjayB0aGUgUmVkaXN0cmlidXRvcidzIGxpY2Vuc2UgdGhhdCB3YXMgCi1wcm92aWRlZCB3aXRoIHRoZSBDb250ZW50LiAgSWYgbm8gc3VjaCBsaWNlbnNlIGV4aXN0cywgY29udGFjdCB0aGUgUmVkaXN0cmlidXRvci4gIFVubGVzcyBvdGhlcndpc2UKLWluZGljYXRlZCBiZWxvdywgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFUEwgc3RpbGwgYXBwbHkgdG8gYW55IHNvdXJjZSBjb2RlIGluIHRoZSBDb250ZW50Ci1hbmQgc3VjaCBzb3VyY2UgY29kZSBtYXkgYmUgb2J0YWluZWQgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZyI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZzwvYT4uPC9wPgorCTxwPgorCQlUaGUgRWNsaXBzZSBGb3VuZGF0aW9uIG1ha2VzIGF2YWlsYWJsZSBhbGwgY29udGVudCBpbiB0aGlzIHBsdWctaW4KKwkJKCZxdW90O0NvbnRlbnQmcXVvdDspLiBVbmxlc3Mgb3RoZXJ3aXNlIGluZGljYXRlZCBiZWxvdywgdGhlIENvbnRlbnQKKwkJaXMgcHJvdmlkZWQgdG8geW91IHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRWNsaXBzZQorCQlQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDIuMCAoJnF1b3Q7RVBMJnF1b3Q7KS4gQSBjb3B5IG9mIHRoZSBFUEwgaXMKKwkJYXZhaWxhYmxlIGF0IDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMCI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wPC9hPi4KKwkJRm9yIHB1cnBvc2VzIG9mIHRoZSBFUEwsICZxdW90O1Byb2dyYW0mcXVvdDsgd2lsbCBtZWFuIHRoZSBDb250ZW50LgorCTwvcD4KKworCTxwPgorCQlJZiB5b3UgZGlkIG5vdCByZWNlaXZlIHRoaXMgQ29udGVudCBkaXJlY3RseSBmcm9tIHRoZSBFY2xpcHNlCisJCUZvdW5kYXRpb24sIHRoZSBDb250ZW50IGlzIGJlaW5nIHJlZGlzdHJpYnV0ZWQgYnkgYW5vdGhlciBwYXJ0eQorCQkoJnF1b3Q7UmVkaXN0cmlidXRvciZxdW90OykgYW5kIGRpZmZlcmVudCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBtYXkKKwkJYXBwbHkgdG8geW91ciB1c2Ugb2YgYW55IG9iamVjdCBjb2RlIGluIHRoZSBDb250ZW50LiBDaGVjayB0aGUKKwkJUmVkaXN0cmlidXRvcidzIGxpY2Vuc2UgdGhhdCB3YXMgcHJvdmlkZWQgd2l0aCB0aGUgQ29udGVudC4gSWYgbm8gc3VjaAorCQlsaWNlbnNlIGV4aXN0cywgY29udGFjdCB0aGUgUmVkaXN0cmlidXRvci4gVW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQKKwkJYmVsb3csIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRVBMIHN0aWxsIGFwcGx5IHRvIGFueSBzb3VyY2UKKwkJY29kZSBpbiB0aGUgQ29udGVudCBhbmQgc3VjaCBzb3VyY2UgY29kZSBtYXkgYmUgb2J0YWluZWQgYXQgPGEKKwkJCWhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnPC9hPi4KKwk8L3A+CiAKIDwvYm9keT4KIDwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnRyYW5zZm9ybWF0aW9ucy9idWlsZC5wcm9wZXJ0aWVzIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy50cmFuc2Zvcm1hdGlvbnMvYnVpbGQucHJvcGVydGllcwppbmRleCA2Y2Q3NjNiLi5kOTg2NjQ1IDEwMDY0NAotLS0gYS9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnRyYW5zZm9ybWF0aW9ucy9idWlsZC5wcm9wZXJ0aWVzCisrKyBiL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMudHJhbnNmb3JtYXRpb25zL2J1aWxkLnByb3BlcnRpZXMKQEAgLTIsOSArMiw5IEBACiAjCiAjIENvcHlyaWdodCAoYykgMjAxMywgMjAxNSBJbnRlY3MgU3BBIAogIyBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0jIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorIyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICMgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSMgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyMgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICMKICMgQ29udHJpYnV0b3JzOgogIyBOaWNob2xhcyBQYWNpbmkgbmljaG9sYXMucGFjaW5pQGludGVjcy5pdCAKZGlmZiAtLWdpdCBhL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMudHJhbnNmb3JtYXRpb25zL3BsdWdpbi5wcm9wZXJ0aWVzIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy50cmFuc2Zvcm1hdGlvbnMvcGx1Z2luLnByb3BlcnRpZXMKaW5kZXggYmNlYTg1Yy4uMTc2YjA5NCAxMDA2NDQKLS0tIGEvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy50cmFuc2Zvcm1hdGlvbnMvcGx1Z2luLnByb3BlcnRpZXMKKysrIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy50cmFuc2Zvcm1hdGlvbnMvcGx1Z2luLnByb3BlcnRpZXMKQEAgLTIsOSArMiw5IEBACiAjCiAjIENvcHlyaWdodCAoYykgMjAxMywgMjAxNSBJbnRlY3MgU3BBIAogIyBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0jIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorIyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICMgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSMgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyMgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICMKICMgQ29udHJpYnV0b3JzOgogIyBOaWNob2xhcyBQYWNpbmkgbmljaG9sYXMucGFjaW5pQGludGVjcy5pdCAKZGlmZiAtLWdpdCBhL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMudHJhbnNmb3JtYXRpb25zL3BsdWdpbi54bWwgYi9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnRyYW5zZm9ybWF0aW9ucy9wbHVnaW4ueG1sCmluZGV4IDVhMTIzYTcuLmRhM2RkNTggMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMudHJhbnNmb3JtYXRpb25zL3BsdWdpbi54bWwKKysrIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy50cmFuc2Zvcm1hdGlvbnMvcGx1Z2luLnhtbApAQCAtNCw5ICs0LDkgQEAKICAgIA0KICAgICBDb3B5cmlnaHQgKGMpIDIwMTMsIDIwMTUgSW50ZWNzIFNwQSANCiAgICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KLSAgICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgICAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICAgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICAgIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICAgIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICAgDQogICAgIENvbnRyaWJ1dG9yczoNCiAgICAgTmljaG9sYXMgUGFjaW5pIG5pY2hvbGFzLnBhY2luaUBpbnRlY3MuaXQgDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy50cmFuc2Zvcm1hdGlvbnMvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvdHJhbnNmb3JtYXRpb25zL0FjdGl2YXRvci5qYXZhIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy50cmFuc2Zvcm1hdGlvbnMvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvdHJhbnNmb3JtYXRpb25zL0FjdGl2YXRvci5qYXZhCmluZGV4IDUwNTI0ZjAuLjkwNmEyYTQgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMudHJhbnNmb3JtYXRpb25zL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL3RyYW5zZm9ybWF0aW9ucy9BY3RpdmF0b3IuamF2YQorKysgYi9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnRyYW5zZm9ybWF0aW9ucy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy90cmFuc2Zvcm1hdGlvbnMvQWN0aXZhdG9yLmphdmEKQEAgLTIsOSArMiw5IEBACiAgKgogICogQ29weXJpZ2h0IChjKSAyMDEzLCAyMDE1IEludGVjcyBTcEEgCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICoKICAqIENvbnRyaWJ1dG9yczoKICAqIE5pY2hvbGFzIFBhY2luaSBuaWNob2xhcy5wYWNpbmlAaW50ZWNzLml0IApkaWZmIC0tZ2l0IGEvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy50cmFuc2Zvcm1hdGlvbnMvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvdHJhbnNmb3JtYXRpb25zL2NvbW1hbmRzL0Fic3RyYWN0WFNhcEhhbmRsZXIuamF2YSBiL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMudHJhbnNmb3JtYXRpb25zL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL3RyYW5zZm9ybWF0aW9ucy9jb21tYW5kcy9BYnN0cmFjdFhTYXBIYW5kbGVyLmphdmEKaW5kZXggOGI0Nzg4OC4uMmFkYjQ3MiAxMDA2NDQKLS0tIGEvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy50cmFuc2Zvcm1hdGlvbnMvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvdHJhbnNmb3JtYXRpb25zL2NvbW1hbmRzL0Fic3RyYWN0WFNhcEhhbmRsZXIuamF2YQorKysgYi9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnRyYW5zZm9ybWF0aW9ucy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy90cmFuc2Zvcm1hdGlvbnMvY29tbWFuZHMvQWJzdHJhY3RYU2FwSGFuZGxlci5qYXZhCkBAIC0xLDkgKzEsOSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqIENvcHlyaWdodCAoQykgMjAxOCBGb25kYXppb25lIEJydW5vIEtlc3NsZXIuCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICogCiAgKiBDb250cmlidXRvcnM6CiAgKiAgICAgTHVjYSBDcmlzdG9mb3JldHRpIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCmRpZmYgLS1naXQgYS9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnRyYW5zZm9ybWF0aW9ucy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy90cmFuc2Zvcm1hdGlvbnMvY29tbWFuZHMvQ0hFU1NDb250cmFjdFZhbGlkYXRlQW5kUmVmaW5lQ29tbWFuZC5qYXZhIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy50cmFuc2Zvcm1hdGlvbnMvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvdHJhbnNmb3JtYXRpb25zL2NvbW1hbmRzL0NIRVNTQ29udHJhY3RWYWxpZGF0ZUFuZFJlZmluZUNvbW1hbmQuamF2YQppbmRleCBmOTUzMmJkLi5hYWUxYzdhIDEwMDY0NAotLS0gYS9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnRyYW5zZm9ybWF0aW9ucy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy90cmFuc2Zvcm1hdGlvbnMvY29tbWFuZHMvQ0hFU1NDb250cmFjdFZhbGlkYXRlQW5kUmVmaW5lQ29tbWFuZC5qYXZhCisrKyBiL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMudHJhbnNmb3JtYXRpb25zL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL3RyYW5zZm9ybWF0aW9ucy9jb21tYW5kcy9DSEVTU0NvbnRyYWN0VmFsaWRhdGVBbmRSZWZpbmVDb21tYW5kLmphdmEKQEAgLTIsOSArMiw5IEBACiAgKg0KICAqIENvcHlyaWdodCAoYykgMjAxMywgMjAxNSBJbnRlY3MgU3BBIA0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKg0KICAqIENvbnRyaWJ1dG9yczoNCiAgKiBOaWNob2xhcyBQYWNpbmkgbmljaG9sYXMucGFjaW5pQGludGVjcy5pdCANCmRpZmYgLS1naXQgYS9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnRyYW5zZm9ybWF0aW9ucy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy90cmFuc2Zvcm1hdGlvbnMvY29tbWFuZHMvQ0hFU1NDb250cmFjdFZhbGlkYXRlUHJvcGVydHlDb21tYW5kLmphdmEgYi9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnRyYW5zZm9ybWF0aW9ucy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy90cmFuc2Zvcm1hdGlvbnMvY29tbWFuZHMvQ0hFU1NDb250cmFjdFZhbGlkYXRlUHJvcGVydHlDb21tYW5kLmphdmEKaW5kZXggMmZmMTJmZC4uZmZmMzJiZiAxMDA2NDQKLS0tIGEvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy50cmFuc2Zvcm1hdGlvbnMvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvdHJhbnNmb3JtYXRpb25zL2NvbW1hbmRzL0NIRVNTQ29udHJhY3RWYWxpZGF0ZVByb3BlcnR5Q29tbWFuZC5qYXZhCisrKyBiL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMudHJhbnNmb3JtYXRpb25zL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL3RyYW5zZm9ybWF0aW9ucy9jb21tYW5kcy9DSEVTU0NvbnRyYWN0VmFsaWRhdGVQcm9wZXJ0eUNvbW1hbmQuamF2YQpAQCAtMiw5ICsyLDkgQEAKICAqDQogICogQ29weXJpZ2h0IChjKSAyMDEzLCAyMDE1IEludGVjcyBTcEEgDQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqDQogICogQ29udHJpYnV0b3JzOg0KICAqIE5pY2hvbGFzIFBhY2luaSBuaWNob2xhcy5wYWNpbmlAaW50ZWNzLml0IA0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMudHJhbnNmb3JtYXRpb25zL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL3RyYW5zZm9ybWF0aW9ucy9jb21tYW5kcy9DSEVTU0NvbnRyYWN0VmFsaWRhdGVQcm9wZXJ0eUhhbmRsZXIuamF2YSBiL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMudHJhbnNmb3JtYXRpb25zL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL3RyYW5zZm9ybWF0aW9ucy9jb21tYW5kcy9DSEVTU0NvbnRyYWN0VmFsaWRhdGVQcm9wZXJ0eUhhbmRsZXIuamF2YQppbmRleCA5ZTNjZDQ5Li5iYTY2MDg0IDEwMDY0NAotLS0gYS9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnRyYW5zZm9ybWF0aW9ucy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy90cmFuc2Zvcm1hdGlvbnMvY29tbWFuZHMvQ0hFU1NDb250cmFjdFZhbGlkYXRlUHJvcGVydHlIYW5kbGVyLmphdmEKKysrIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy50cmFuc2Zvcm1hdGlvbnMvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvdHJhbnNmb3JtYXRpb25zL2NvbW1hbmRzL0NIRVNTQ29udHJhY3RWYWxpZGF0ZVByb3BlcnR5SGFuZGxlci5qYXZhCkBAIC0yLDkgKzIsOSBAQAogICoNCiAgKiBDb3B5cmlnaHQgKGMpIDIwMTMsIDIwMTUgSW50ZWNzIFNwQSANCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoNCiAgKiBDb250cmlidXRvcnM6DQogICogTmljaG9sYXMgUGFjaW5pIG5pY2hvbGFzLnBhY2luaUBpbnRlY3MuaXQgDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy50cmFuc2Zvcm1hdGlvbnMvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvdHJhbnNmb3JtYXRpb25zL2NvbW1hbmRzL0NIRVNTQ29udHJhY3RWYWxpZGF0aW9uQW5kUmVmaW5lbWVudEhhbmRsZXIuamF2YSBiL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMudHJhbnNmb3JtYXRpb25zL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL3RyYW5zZm9ybWF0aW9ucy9jb21tYW5kcy9DSEVTU0NvbnRyYWN0VmFsaWRhdGlvbkFuZFJlZmluZW1lbnRIYW5kbGVyLmphdmEKaW5kZXggNDc0ODk2Ny4uZjI0MmI2ZiAxMDA2NDQKLS0tIGEvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy50cmFuc2Zvcm1hdGlvbnMvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvdHJhbnNmb3JtYXRpb25zL2NvbW1hbmRzL0NIRVNTQ29udHJhY3RWYWxpZGF0aW9uQW5kUmVmaW5lbWVudEhhbmRsZXIuamF2YQorKysgYi9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnRyYW5zZm9ybWF0aW9ucy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy90cmFuc2Zvcm1hdGlvbnMvY29tbWFuZHMvQ0hFU1NDb250cmFjdFZhbGlkYXRpb25BbmRSZWZpbmVtZW50SGFuZGxlci5qYXZhCkBAIC0yLDkgKzIsOSBAQAogICoKICAqIENvcHlyaWdodCAoYykgMjAxMywgMjAxNSBJbnRlY3MgU3BBIAogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICAqCiAgKiBDb250cmlidXRvcnM6CiAgKiBOaWNob2xhcyBQYWNpbmkgbmljaG9sYXMucGFjaW5pQGludGVjcy5pdCAKZGlmZiAtLWdpdCBhL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMudHJhbnNmb3JtYXRpb25zL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL3RyYW5zZm9ybWF0aW9ucy9jb21tYW5kcy9DaGVja0ltcGxIYW5kbGVyLmphdmEgYi9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnRyYW5zZm9ybWF0aW9ucy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy90cmFuc2Zvcm1hdGlvbnMvY29tbWFuZHMvQ2hlY2tJbXBsSGFuZGxlci5qYXZhCmluZGV4IDA4MGUxMTkuLjU5ZmIxN2QgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMudHJhbnNmb3JtYXRpb25zL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL3RyYW5zZm9ybWF0aW9ucy9jb21tYW5kcy9DaGVja0ltcGxIYW5kbGVyLmphdmEKKysrIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy50cmFuc2Zvcm1hdGlvbnMvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvdHJhbnNmb3JtYXRpb25zL2NvbW1hbmRzL0NoZWNrSW1wbEhhbmRsZXIuamF2YQpAQCAtMiw5ICsyLDkgQEAKICAqCiAgKiBDb3B5cmlnaHQgKGMpIDIwMTMsIDIwMTUgSW50ZWNzIFNwQSAKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgKgogICogQ29udHJpYnV0b3JzOgogICogTmljaG9sYXMgUGFjaW5pIG5pY2hvbGFzLnBhY2luaUBpbnRlY3MuaXQgCmRpZmYgLS1naXQgYS9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnRyYW5zZm9ybWF0aW9ucy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy90cmFuc2Zvcm1hdGlvbnMvY29tbWFuZHMvQ2hlY2tSZWZIYW5kbGVyLmphdmEgYi9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnRyYW5zZm9ybWF0aW9ucy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy90cmFuc2Zvcm1hdGlvbnMvY29tbWFuZHMvQ2hlY2tSZWZIYW5kbGVyLmphdmEKaW5kZXggZjhhYjU0Ni4uODY0OGMxNiAxMDA2NDQKLS0tIGEvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy50cmFuc2Zvcm1hdGlvbnMvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvdHJhbnNmb3JtYXRpb25zL2NvbW1hbmRzL0NoZWNrUmVmSGFuZGxlci5qYXZhCisrKyBiL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMudHJhbnNmb3JtYXRpb25zL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL3RyYW5zZm9ybWF0aW9ucy9jb21tYW5kcy9DaGVja1JlZkhhbmRsZXIuamF2YQpAQCAtMiw5ICsyLDkgQEAKICAqCiAgKiBDb3B5cmlnaHQgKGMpIDIwMTMsIDIwMTUgSW50ZWNzIFNwQSAKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgKgogICogQ29udHJpYnV0b3JzOgogICogTmljaG9sYXMgUGFjaW5pIG5pY2hvbGFzLnBhY2luaUBpbnRlY3MuaXQgCmRpZmYgLS1naXQgYS9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnRyYW5zZm9ybWF0aW9ucy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy90cmFuc2Zvcm1hdGlvbnMvY29tbWFuZHMvQ2hlY2tWYWxpZFByb3BIYW5kbGVyLmphdmEgYi9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnRyYW5zZm9ybWF0aW9ucy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy90cmFuc2Zvcm1hdGlvbnMvY29tbWFuZHMvQ2hlY2tWYWxpZFByb3BIYW5kbGVyLmphdmEKaW5kZXggMjVlYTBlZC4uNzRkYjY1YyAxMDA2NDQKLS0tIGEvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy50cmFuc2Zvcm1hdGlvbnMvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvdHJhbnNmb3JtYXRpb25zL2NvbW1hbmRzL0NoZWNrVmFsaWRQcm9wSGFuZGxlci5qYXZhCisrKyBiL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMudHJhbnNmb3JtYXRpb25zL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL3RyYW5zZm9ybWF0aW9ucy9jb21tYW5kcy9DaGVja1ZhbGlkUHJvcEhhbmRsZXIuamF2YQpAQCAtMiw5ICsyLDkgQEAKICAqDQogICogQ29weXJpZ2h0IChjKSAyMDEzLCAyMDE1IEludGVjcyBTcEEgDQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqDQogICogQ29udHJpYnV0b3JzOg0KICAqIE5pY2hvbGFzIFBhY2luaSBuaWNob2xhcy5wYWNpbmlAaW50ZWNzLml0IA0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMudHJhbnNmb3JtYXRpb25zL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL3RyYW5zZm9ybWF0aW9ucy9jb21tYW5kcy9Db21tYW5kc0NvbW1vbi5qYXZhIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy50cmFuc2Zvcm1hdGlvbnMvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvdHJhbnNmb3JtYXRpb25zL2NvbW1hbmRzL0NvbW1hbmRzQ29tbW9uLmphdmEKaW5kZXggNmJiNjgwMi4uNDA1Y2Y4MyAxMDA2NDQKLS0tIGEvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy50cmFuc2Zvcm1hdGlvbnMvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvdHJhbnNmb3JtYXRpb25zL2NvbW1hbmRzL0NvbW1hbmRzQ29tbW9uLmphdmEKKysrIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy50cmFuc2Zvcm1hdGlvbnMvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvdHJhbnNmb3JtYXRpb25zL2NvbW1hbmRzL0NvbW1hbmRzQ29tbW9uLmphdmEKQEAgLTIsOSArMiw5IEBACiAgKg0KICAqIENvcHlyaWdodCAoYykgMjAxMywgMjAxNSBJbnRlY3MgU3BBIA0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKg0KICAqIENvbnRyaWJ1dG9yczoNCiAgKiBOaWNob2xhcyBQYWNpbmkgbmljaG9sYXMucGFjaW5pQGludGVjcy5pdCANCmRpZmYgLS1naXQgYS9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnRyYW5zZm9ybWF0aW9ucy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy90cmFuc2Zvcm1hdGlvbnMvY29tbWFuZHMvRXhwb3J0U212LmphdmEgYi9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnRyYW5zZm9ybWF0aW9ucy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy90cmFuc2Zvcm1hdGlvbnMvY29tbWFuZHMvRXhwb3J0U212LmphdmEKaW5kZXggZGU3NDQ1MS4uMDFjMGM3MCAxMDA2NDQKLS0tIGEvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy50cmFuc2Zvcm1hdGlvbnMvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvdHJhbnNmb3JtYXRpb25zL2NvbW1hbmRzL0V4cG9ydFNtdi5qYXZhCisrKyBiL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMudHJhbnNmb3JtYXRpb25zL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL3RyYW5zZm9ybWF0aW9ucy9jb21tYW5kcy9FeHBvcnRTbXYuamF2YQpAQCAtMSwxMzMgKzEsMTQwIEBACi1wYWNrYWdlIG9yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMudHJhbnNmb3JtYXRpb25zLmNvbW1hbmRzOwotCi1pbXBvcnQgamF2YS5pby5GaWxlOwotaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247Ci1pbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUuY29tbWFuZHMuQWJzdHJhY3RIYW5kbGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUuY29tbWFuZHMuRXhlY3V0aW9uRXZlbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5jb21tYW5kcy5FeGVjdXRpb25FeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQcm9ncmVzc01vbml0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuam9icy5Kb2I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5JU2VsZWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuSVRyZWVTZWxlY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5lbWYuZmFjZXQuY3VzdG9tLm1ldGFtb2RlbC52MF8yXzAuaW50ZXJuYWwudHJlZXByb3h5LkVPYmplY3RUcmVlRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QuU1dUOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkZpbGVEaWFsb2c7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuU2hlbGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudWkuSVNlbGVjdGlvblNlcnZpY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudWkuSVdvcmtiZW5jaFdpbmRvdzsKLWltcG9ydCBvcmcuZWNsaXBzZS51aS5oYW5kbGVycy5IYW5kbGVyVXRpbDsKLWltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5DbGFzczsKLWltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5QYWNrYWdlOwotaW1wb3J0IG9yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS5Db21wb25lbnRNb2RlbC5Db21wb25lbnRUeXBlOwotaW1wb3J0IG9yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMudHJhbnNmb3JtYXRpb25zLm1haW4uR2VuZXJhdGVFcnJvck1vZGVsOwotaW1wb3J0IG9yZy5wb2xhcnN5cy5jaGVzcy5jb3JlLm5vdGlmaWNhdGlvbnMuUmVzb3VyY2VOb3RpZmljYXRpb247Ci1pbXBvcnQgb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUucHJvZmlsZXMuQ0hFU1NQcm9maWxlTWFuYWdlcjsKLWltcG9ydCBvcmcucG9sYXJzeXMuY2hlc3MuY29yZS51dGlsLnVtbC5VTUxVdGlsczsKLWltcG9ydCBvcmcucG9sYXJzeXMuY2hlc3MuY29yZS52aWV3cy5WaWV3VXRpbHM7Ci0KLXB1YmxpYyBjbGFzcyBFeHBvcnRTbXYgZXh0ZW5kcyBBYnN0cmFjdEhhbmRsZXJ7Ci0KLQlwdWJsaWMgT2JqZWN0IGV4ZWN1dGUoRXhlY3V0aW9uRXZlbnQgZXZlbnQpIHRocm93cyBFeGVjdXRpb25FeGNlcHRpb24gewotCi0JCUlXb3JrYmVuY2hXaW5kb3cgd2luZG93ID0gSGFuZGxlclV0aWwuZ2V0QWN0aXZlV29ya2JlbmNoV2luZG93Q2hlY2tlZChldmVudCk7Ci0JCWZpbmFsIFNoZWxsIGFjdGl2ZVNoZWxsID0gd2luZG93LmdldFNoZWxsKCk7Ci0KLQkJZmluYWwgQ2xhc3Mgc2VsZWN0ZWQgPSBnZXRTZWxlY3Rpb24od2luZG93KTsKLQkJaWYoc2VsZWN0ZWQgIT0gbnVsbCl7Ci0KLQkJCUZpbGVEaWFsb2cgZGlhbG9nID0gbmV3IEZpbGVEaWFsb2coYWN0aXZlU2hlbGwsU1dULlNBVkUpOwotCQkJZGlhbG9nLnNldEZpbHRlck5hbWVzKG5ldyBTdHJpbmdbXSB7ICJTTVYiIH0pOwotCQkJZGlhbG9nLnNldEZpbHRlckV4dGVuc2lvbnMobmV3IFN0cmluZ1tdIHsgIiouc212IiB9KTsgCi0JICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLQkJCVN0cmluZyBkaXIgPSBkaWFsb2cub3BlbigpOwotCQkJaWYoZGlyICE9IG51bGwpewotCQkJCWZpbmFsIEZpbGUgdGFyZ2V0RGlyID0gKG5ldyBGaWxlKGRpYWxvZy5nZXRGaWx0ZXJQYXRoKCkpKTsKLQotCQkJCVN0cmluZyBzeXN0ZW1RTiA9IHNlbGVjdGVkLmdldFF1YWxpZmllZE5hbWUoKTsKLQkJCQlmaW5hbCBMaXN0PFN0cmluZz4gYXJncyA9IG5ldyBBcnJheUxpc3Q8U3RyaW5nPigpOwotCQkJCWFyZ3MuYWRkKHN5c3RlbVFOKTsKLQkJCQlTdHJpbmcgc3lzdGVtTmFtZSA9IHN5c3RlbVFOLnN1YnN0cmluZyhzeXN0ZW1RTi5sYXN0SW5kZXhPZigiOjoiKSsyKTsKLQkJCQlhcmdzLmFkZChzeXN0ZW1OYW1lKTsKLQkJCQlhcmdzLmFkZChkaWFsb2cuZ2V0RmlsZU5hbWUoKS5yZXBsYWNlRmlyc3QoIi5zbXYiLCAiIikpOwotCi0JCQkJSm9iIGpvYiA9IG5ldyBKb2IoIkV4cG9ydGluZyB0byBTTVYiKXsKLQotCQkJCQlAT3ZlcnJpZGUKLQkJCQkJcHJvdGVjdGVkIElTdGF0dXMgcnVuKElQcm9ncmVzc01vbml0b3IgbW9uaXRvcikgewotCi0JCQkJCQltb25pdG9yLmJlZ2luVGFzaygib3BlcmF0aW9uIGluIHByb2dyZXNzIC4uLiIsIDMpOwotCQkJCQkJdHJ5ewotCQkJCQkJCW1vbml0b3Iuc3ViVGFzaygidHJhbnNmb3JtaW5nLi4uIik7Ci0KLQkJCQkJCQlHZW5lcmF0ZUVycm9yTW9kZWwgZ2VuID0gbmV3IEdlbmVyYXRlRXJyb3JNb2RlbChzZWxlY3RlZCwgdGFyZ2V0RGlyLCBhcmdzKTsKLQkJCQkJCQlnZW4uZG9HZW5lcmF0ZShudWxsKTsKLQkJCQkJCQltb25pdG9yLndvcmtlZCgxKTsKLQotCQkJCQkJfWNhdGNoIChJT0V4Y2VwdGlvbiBlKSB7Ci0JCQkJCQkJZS5wcmludFN0YWNrVHJhY2UoKTsKLQkJCQkJCX0gCi0JCQkJCQltb25pdG9yLmRvbmUoKTsKLQkJCQkJCWlmIChtb25pdG9yLmlzQ2FuY2VsZWQoKSkKLQkJCQkJCQlyZXR1cm4gU3RhdHVzLkNBTkNFTF9TVEFUVVM7Ci0JCQkJCQlyZXR1cm4gU3RhdHVzLk9LX1NUQVRVUzsKLQkJCQkJfQotCQkJCX07Ci0KLQkJCQlqb2Iuc2V0VXNlcih0cnVlKTsKLQkJCQlqb2Iuc2V0UHJpb3JpdHkoSm9iLlNIT1JUKTsKLQkJCQlqb2Iuc2NoZWR1bGUoKTsKLQkJCX1lbHNlewotCQkJCXJldHVybiBudWxsOwotCQkJfQotCQl9Ci0JCVJlc291cmNlTm90aWZpY2F0aW9uLnNob3dPaygiRWxlbWVudCBleHBvcnRlZCBjb3JyZWN0bHkiKTsKLQkJcmV0dXJuIG51bGw7Ci0KLQl9Ci0KLQlwcml2YXRlIENsYXNzIGdldFNlbGVjdGlvbihJV29ya2JlbmNoV2luZG93IHdpbmRvdyApIHsKLQkJSVNlbGVjdGlvblNlcnZpY2Ugc2VsZWN0aW9uU2VydmljZSA9IHdpbmRvdy5nZXRTZWxlY3Rpb25TZXJ2aWNlKCk7Ci0JCUlTZWxlY3Rpb24gc2VsZWN0aW9uWCA9IHNlbGVjdGlvblNlcnZpY2UuZ2V0U2VsZWN0aW9uKCk7Ci0JCWlmICghKHNlbGVjdGlvblggaW5zdGFuY2VvZiBJVHJlZVNlbGVjdGlvbikpewotCQkJUmVzb3VyY2VOb3RpZmljYXRpb24uc2hvd09rKCJTZWxlY3Rpb24gbm90IHZhbGlkOiBzZWxlY3QgYSBzaW5nbGUgcmVzb3VyY2Ugb24gdGhlIE1vZGVsRXhwbG9yZXIiKTsKLQkJCXJldHVybiBudWxsOwotCQl9Ci0JCUlUcmVlU2VsZWN0aW9uIHRyZWVzZWwgPSAoSVRyZWVTZWxlY3Rpb24pc2VsZWN0aW9uWDsKLQkJaWYgKHRyZWVzZWwuZ2V0UGF0aHMoKS5sZW5ndGggPT0gMCB8fCAgdHJlZXNlbC5nZXRQYXRocygpLmxlbmd0aCA+IDEpewotCQkJUmVzb3VyY2VOb3RpZmljYXRpb24uc2hvd0Vycm9yKCJTZWxlY3Rpb24gbm90IHZhbGlkOiBzZWxlY3QgYSBzaW5nbGUgcmVzb3VyY2Ugb24gdGhlIE1vZGVsRXhwbG9yZXIiKTsKLQkJCXJldHVybiBudWxsOwotCQl9Ci0KLQkJT2JqZWN0IG9iaiA9IHRyZWVzZWwuZ2V0Rmlyc3RFbGVtZW50KCk7Ci0JCWlmICghKG9iaiBpbnN0YW5jZW9mIEVPYmplY3RUcmVlRWxlbWVudCkpewotCQkJUmVzb3VyY2VOb3RpZmljYXRpb24uc2hvd0Vycm9yKCJTZWxlY3Rpb24gbm90IHZhbGlkOiBzZWxlY3QgYSBzaW5nbGUgcmVzb3VyY2Ugb24gdGhlIE1vZGVsRXhwbG9yZXIiKTsKLQkJfQotCQlFT2JqZWN0IGVvYmogPSAoKEVPYmplY3RUcmVlRWxlbWVudCkgb2JqKS5nZXRFT2JqZWN0KCk7Ci0JCWZpbmFsIFBhY2thZ2UgdmlldyA9IFZpZXdVdGlscy5nZXRWaWV3KGVvYmopOwotCi0JCS8vCQlmaW5hbCBNb2RlbCB1bWxNb2RlbCA9IHZpZXcuZ2V0TW9kZWwoKTsKLQkJZmluYWwgQ2xhc3MgdW1sQ2xhc3MgPSAoQ2xhc3MpIGVvYmo7Ci0KLQkJaWYgKCFWaWV3VXRpbHMuaXNEZXNpZ25WaWV3KHZpZXcsIENIRVNTUHJvZmlsZU1hbmFnZXIuU1lTVEVNX1ZJRVcpICYmCi0JCQkJIVZpZXdVdGlscy5pc0Rlc2lnblZpZXcodmlldywgQ0hFU1NQcm9maWxlTWFuYWdlci5DT01QT05FTlRfVklFVykpIHsKLQkJCVJlc291cmNlTm90aWZpY2F0aW9uLnNob3dFcnJvcigiU2VsZWN0aW9uIG5vdCB2YWxpZDogcGxlYXNlIHNlbGVjdCBhIHJlc291cmNlIG9mIHRoZSBTeXN0ZW1WaWV3IG9yIG9mIHRoZSBDb21wb25lbnRWaWV3Iik7Ci0JCQlyZXR1cm4gbnVsbDsKLQkJfQotCi0JCWlmIChWaWV3VXRpbHMuaXNEZXNpZ25WaWV3KHZpZXcsIENIRVNTUHJvZmlsZU1hbmFnZXIuQ09NUE9ORU5UX1ZJRVcpKXsKLQkJCWlmIChVTUxVdGlscy5nZXRTdGVyZW90eXBlQXBwbGljYXRpb24odW1sQ2xhc3MsIENvbXBvbmVudFR5cGUuY2xhc3MpIT0gbnVsbCl7Ci0JCQkJUmVzb3VyY2VOb3RpZmljYXRpb24uc2hvd0Vycm9yKCJTZWxlY3Rpb24gbm90IHZhbGlkOiBDb21wb25lbnRUeXBlIik7Ci0JCQkJcmV0dXJuIG51bGw7Ci0JCQl9Ci0JCX0KLQotCQlyZXR1cm4gdW1sQ2xhc3M7Ci0JfQotCi19CisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqIENvcHlyaWdodCAoQykgMjAyMCBGb25kYXppb25lIEJydW5vIEtlc3NsZXIuDQorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KKyAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KK3BhY2thZ2Ugb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy50cmFuc2Zvcm1hdGlvbnMuY29tbWFuZHM7DQorDQoraW1wb3J0IGphdmEuaW8uRmlsZTsNCitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsNCitpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsNCitpbXBvcnQgamF2YS51dGlsLkxpc3Q7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUuY29tbWFuZHMuQWJzdHJhY3RIYW5kbGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLmNvbW1hbmRzLkV4ZWN1dGlvbkV2ZW50Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLmNvbW1hbmRzLkV4ZWN1dGlvbkV4Y2VwdGlvbjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQcm9ncmVzc01vbml0b3I7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuU3RhdHVzOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuam9icy5Kb2I7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLklTZWxlY3Rpb247DQoraW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuSVRyZWVTZWxlY3Rpb247DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuZW1mLmZhY2V0LmN1c3RvbS5tZXRhbW9kZWwudjBfMl8wLmludGVybmFsLnRyZWVwcm94eS5FT2JqZWN0VHJlZUVsZW1lbnQ7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5TV1Q7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkZpbGVEaWFsb2c7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLlNoZWxsOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51aS5JU2VsZWN0aW9uU2VydmljZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UudWkuSVdvcmtiZW5jaFdpbmRvdzsNCitpbXBvcnQgb3JnLmVjbGlwc2UudWkuaGFuZGxlcnMuSGFuZGxlclV0aWw7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLkNsYXNzOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5QYWNrYWdlOw0KK2ltcG9ydCBvcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUuQ29tcG9uZW50TW9kZWwuQ29tcG9uZW50VHlwZTsNCitpbXBvcnQgb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy50cmFuc2Zvcm1hdGlvbnMubWFpbi5HZW5lcmF0ZUVycm9yTW9kZWw7DQoraW1wb3J0IG9yZy5wb2xhcnN5cy5jaGVzcy5jb3JlLm5vdGlmaWNhdGlvbnMuUmVzb3VyY2VOb3RpZmljYXRpb247DQoraW1wb3J0IG9yZy5wb2xhcnN5cy5jaGVzcy5jb3JlLnByb2ZpbGVzLkNIRVNTUHJvZmlsZU1hbmFnZXI7DQoraW1wb3J0IG9yZy5wb2xhcnN5cy5jaGVzcy5jb3JlLnV0aWwudW1sLlVNTFV0aWxzOw0KK2ltcG9ydCBvcmcucG9sYXJzeXMuY2hlc3MuY29yZS52aWV3cy5WaWV3VXRpbHM7DQorDQorcHVibGljIGNsYXNzIEV4cG9ydFNtdiBleHRlbmRzIEFic3RyYWN0SGFuZGxlcnsNCisNCisJcHVibGljIE9iamVjdCBleGVjdXRlKEV4ZWN1dGlvbkV2ZW50IGV2ZW50KSB0aHJvd3MgRXhlY3V0aW9uRXhjZXB0aW9uIHsNCisNCisJCUlXb3JrYmVuY2hXaW5kb3cgd2luZG93ID0gSGFuZGxlclV0aWwuZ2V0QWN0aXZlV29ya2JlbmNoV2luZG93Q2hlY2tlZChldmVudCk7DQorCQlmaW5hbCBTaGVsbCBhY3RpdmVTaGVsbCA9IHdpbmRvdy5nZXRTaGVsbCgpOw0KKw0KKwkJZmluYWwgQ2xhc3Mgc2VsZWN0ZWQgPSBnZXRTZWxlY3Rpb24od2luZG93KTsNCisJCWlmKHNlbGVjdGVkICE9IG51bGwpew0KKw0KKwkJCUZpbGVEaWFsb2cgZGlhbG9nID0gbmV3IEZpbGVEaWFsb2coYWN0aXZlU2hlbGwsU1dULlNBVkUpOw0KKwkJCWRpYWxvZy5zZXRGaWx0ZXJOYW1lcyhuZXcgU3RyaW5nW10geyAiU01WIiB9KTsNCisJCQlkaWFsb2cuc2V0RmlsdGVyRXh0ZW5zaW9ucyhuZXcgU3RyaW5nW10geyAiKi5zbXYiIH0pOyANCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisJCQlTdHJpbmcgZGlyID0gZGlhbG9nLm9wZW4oKTsNCisJCQlpZihkaXIgIT0gbnVsbCl7DQorCQkJCWZpbmFsIEZpbGUgdGFyZ2V0RGlyID0gKG5ldyBGaWxlKGRpYWxvZy5nZXRGaWx0ZXJQYXRoKCkpKTsNCisNCisJCQkJU3RyaW5nIHN5c3RlbVFOID0gc2VsZWN0ZWQuZ2V0UXVhbGlmaWVkTmFtZSgpOw0KKwkJCQlmaW5hbCBMaXN0PFN0cmluZz4gYXJncyA9IG5ldyBBcnJheUxpc3Q8U3RyaW5nPigpOw0KKwkJCQlhcmdzLmFkZChzeXN0ZW1RTik7DQorCQkJCVN0cmluZyBzeXN0ZW1OYW1lID0gc3lzdGVtUU4uc3Vic3RyaW5nKHN5c3RlbVFOLmxhc3RJbmRleE9mKCI6OiIpKzIpOw0KKwkJCQlhcmdzLmFkZChzeXN0ZW1OYW1lKTsNCisJCQkJYXJncy5hZGQoZGlhbG9nLmdldEZpbGVOYW1lKCkucmVwbGFjZUZpcnN0KCIuc212IiwgIiIpKTsNCisNCisJCQkJSm9iIGpvYiA9IG5ldyBKb2IoIkV4cG9ydGluZyB0byBTTVYiKXsNCisNCisJCQkJCUBPdmVycmlkZQ0KKwkJCQkJcHJvdGVjdGVkIElTdGF0dXMgcnVuKElQcm9ncmVzc01vbml0b3IgbW9uaXRvcikgew0KKw0KKwkJCQkJCW1vbml0b3IuYmVnaW5UYXNrKCJvcGVyYXRpb24gaW4gcHJvZ3Jlc3MgLi4uIiwgMyk7DQorCQkJCQkJdHJ5ew0KKwkJCQkJCQltb25pdG9yLnN1YlRhc2soInRyYW5zZm9ybWluZy4uLiIpOw0KKw0KKwkJCQkJCQlHZW5lcmF0ZUVycm9yTW9kZWwgZ2VuID0gbmV3IEdlbmVyYXRlRXJyb3JNb2RlbChzZWxlY3RlZCwgdGFyZ2V0RGlyLCBhcmdzKTsNCisJCQkJCQkJZ2VuLmRvR2VuZXJhdGUobnVsbCk7DQorCQkJCQkJCW1vbml0b3Iud29ya2VkKDEpOw0KKw0KKwkJCQkJCX1jYXRjaCAoSU9FeGNlcHRpb24gZSkgew0KKwkJCQkJCQllLnByaW50U3RhY2tUcmFjZSgpOw0KKwkJCQkJCX0gDQorCQkJCQkJbW9uaXRvci5kb25lKCk7DQorCQkJCQkJaWYgKG1vbml0b3IuaXNDYW5jZWxlZCgpKQ0KKwkJCQkJCQlyZXR1cm4gU3RhdHVzLkNBTkNFTF9TVEFUVVM7DQorCQkJCQkJcmV0dXJuIFN0YXR1cy5PS19TVEFUVVM7DQorCQkJCQl9DQorCQkJCX07DQorDQorCQkJCWpvYi5zZXRVc2VyKHRydWUpOw0KKwkJCQlqb2Iuc2V0UHJpb3JpdHkoSm9iLlNIT1JUKTsNCisJCQkJam9iLnNjaGVkdWxlKCk7DQorCQkJfWVsc2V7DQorCQkJCXJldHVybiBudWxsOw0KKwkJCX0NCisJCX0NCisJCVJlc291cmNlTm90aWZpY2F0aW9uLnNob3dPaygiRWxlbWVudCBleHBvcnRlZCBjb3JyZWN0bHkiKTsNCisJCXJldHVybiBudWxsOw0KKw0KKwl9DQorDQorCXByaXZhdGUgQ2xhc3MgZ2V0U2VsZWN0aW9uKElXb3JrYmVuY2hXaW5kb3cgd2luZG93ICkgew0KKwkJSVNlbGVjdGlvblNlcnZpY2Ugc2VsZWN0aW9uU2VydmljZSA9IHdpbmRvdy5nZXRTZWxlY3Rpb25TZXJ2aWNlKCk7DQorCQlJU2VsZWN0aW9uIHNlbGVjdGlvblggPSBzZWxlY3Rpb25TZXJ2aWNlLmdldFNlbGVjdGlvbigpOw0KKwkJaWYgKCEoc2VsZWN0aW9uWCBpbnN0YW5jZW9mIElUcmVlU2VsZWN0aW9uKSl7DQorCQkJUmVzb3VyY2VOb3RpZmljYXRpb24uc2hvd09rKCJTZWxlY3Rpb24gbm90IHZhbGlkOiBzZWxlY3QgYSBzaW5nbGUgcmVzb3VyY2Ugb24gdGhlIE1vZGVsRXhwbG9yZXIiKTsNCisJCQlyZXR1cm4gbnVsbDsNCisJCX0NCisJCUlUcmVlU2VsZWN0aW9uIHRyZWVzZWwgPSAoSVRyZWVTZWxlY3Rpb24pc2VsZWN0aW9uWDsNCisJCWlmICh0cmVlc2VsLmdldFBhdGhzKCkubGVuZ3RoID09IDAgfHwgIHRyZWVzZWwuZ2V0UGF0aHMoKS5sZW5ndGggPiAxKXsNCisJCQlSZXNvdXJjZU5vdGlmaWNhdGlvbi5zaG93RXJyb3IoIlNlbGVjdGlvbiBub3QgdmFsaWQ6IHNlbGVjdCBhIHNpbmdsZSByZXNvdXJjZSBvbiB0aGUgTW9kZWxFeHBsb3JlciIpOw0KKwkJCXJldHVybiBudWxsOw0KKwkJfQ0KKw0KKwkJT2JqZWN0IG9iaiA9IHRyZWVzZWwuZ2V0Rmlyc3RFbGVtZW50KCk7DQorCQlpZiAoIShvYmogaW5zdGFuY2VvZiBFT2JqZWN0VHJlZUVsZW1lbnQpKXsNCisJCQlSZXNvdXJjZU5vdGlmaWNhdGlvbi5zaG93RXJyb3IoIlNlbGVjdGlvbiBub3QgdmFsaWQ6IHNlbGVjdCBhIHNpbmdsZSByZXNvdXJjZSBvbiB0aGUgTW9kZWxFeHBsb3JlciIpOw0KKwkJfQ0KKwkJRU9iamVjdCBlb2JqID0gKChFT2JqZWN0VHJlZUVsZW1lbnQpIG9iaikuZ2V0RU9iamVjdCgpOw0KKwkJZmluYWwgUGFja2FnZSB2aWV3ID0gVmlld1V0aWxzLmdldFZpZXcoZW9iaik7DQorDQorCQkvLwkJZmluYWwgTW9kZWwgdW1sTW9kZWwgPSB2aWV3LmdldE1vZGVsKCk7DQorCQlmaW5hbCBDbGFzcyB1bWxDbGFzcyA9IChDbGFzcykgZW9iajsNCisNCisJCWlmICghVmlld1V0aWxzLmlzRGVzaWduVmlldyh2aWV3LCBDSEVTU1Byb2ZpbGVNYW5hZ2VyLlNZU1RFTV9WSUVXKSAmJg0KKwkJCQkhVmlld1V0aWxzLmlzRGVzaWduVmlldyh2aWV3LCBDSEVTU1Byb2ZpbGVNYW5hZ2VyLkNPTVBPTkVOVF9WSUVXKSkgew0KKwkJCVJlc291cmNlTm90aWZpY2F0aW9uLnNob3dFcnJvcigiU2VsZWN0aW9uIG5vdCB2YWxpZDogcGxlYXNlIHNlbGVjdCBhIHJlc291cmNlIG9mIHRoZSBTeXN0ZW1WaWV3IG9yIG9mIHRoZSBDb21wb25lbnRWaWV3Iik7DQorCQkJcmV0dXJuIG51bGw7DQorCQl9DQorDQorCQlpZiAoVmlld1V0aWxzLmlzRGVzaWduVmlldyh2aWV3LCBDSEVTU1Byb2ZpbGVNYW5hZ2VyLkNPTVBPTkVOVF9WSUVXKSl7DQorCQkJaWYgKFVNTFV0aWxzLmdldFN0ZXJlb3R5cGVBcHBsaWNhdGlvbih1bWxDbGFzcywgQ29tcG9uZW50VHlwZS5jbGFzcykhPSBudWxsKXsNCisJCQkJUmVzb3VyY2VOb3RpZmljYXRpb24uc2hvd0Vycm9yKCJTZWxlY3Rpb24gbm90IHZhbGlkOiBDb21wb25lbnRUeXBlIik7DQorCQkJCXJldHVybiBudWxsOw0KKwkJCX0NCisJCX0NCisNCisJCXJldHVybiB1bWxDbGFzczsNCisJfQ0KKw0KK30NCmRpZmYgLS1naXQgYS9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnRyYW5zZm9ybWF0aW9ucy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy90cmFuc2Zvcm1hdGlvbnMvY29tbWFuZHMvRk1FQVhTYXBIYW5kbGVyLmphdmEgYi9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnRyYW5zZm9ybWF0aW9ucy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy90cmFuc2Zvcm1hdGlvbnMvY29tbWFuZHMvRk1FQVhTYXBIYW5kbGVyLmphdmEKaW5kZXggN2I5ODQyOC4uMWY3NDY5YSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy50cmFuc2Zvcm1hdGlvbnMvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvdHJhbnNmb3JtYXRpb25zL2NvbW1hbmRzL0ZNRUFYU2FwSGFuZGxlci5qYXZhCisrKyBiL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMudHJhbnNmb3JtYXRpb25zL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL3RyYW5zZm9ybWF0aW9ucy9jb21tYW5kcy9GTUVBWFNhcEhhbmRsZXIuamF2YQpAQCAtMSw5ICsxLDkgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTggRm9uZGF6aW9uZSBCcnVubyBLZXNzbGVyLgogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICAqIAogICogQ29udHJpYnV0b3JzOgogICogICAgIEx1Y2EgQ3Jpc3RvZm9yZXR0aSAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy50cmFuc2Zvcm1hdGlvbnMvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvdHJhbnNmb3JtYXRpb25zL2NvbW1hbmRzL0ZUQU51U01WM0hhbmRsZXIuamF2YSBiL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMudHJhbnNmb3JtYXRpb25zL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL3RyYW5zZm9ybWF0aW9ucy9jb21tYW5kcy9GVEFOdVNNVjNIYW5kbGVyLmphdmEKaW5kZXggY2JmZWFiMy4uOGU3ZTYyOCAxMDA2NDQKLS0tIGEvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy50cmFuc2Zvcm1hdGlvbnMvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvdHJhbnNmb3JtYXRpb25zL2NvbW1hbmRzL0ZUQU51U01WM0hhbmRsZXIuamF2YQorKysgYi9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnRyYW5zZm9ybWF0aW9ucy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy90cmFuc2Zvcm1hdGlvbnMvY29tbWFuZHMvRlRBTnVTTVYzSGFuZGxlci5qYXZhCkBAIC0yLDkgKzIsOSBAQAogICoKICAqIENvcHlyaWdodCAoYykgMjAxMywgMjAxNSBJbnRlY3MgU3BBIAogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICAqCiAgKiBDb250cmlidXRvcnM6CiAgKiBOaWNob2xhcyBQYWNpbmkgbmljaG9sYXMucGFjaW5pQGludGVjcy5pdCAKZGlmZiAtLWdpdCBhL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMudHJhbnNmb3JtYXRpb25zL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL3RyYW5zZm9ybWF0aW9ucy9jb21tYW5kcy9GVEFYU2FwSGFuZGxlci5qYXZhIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy50cmFuc2Zvcm1hdGlvbnMvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvdHJhbnNmb3JtYXRpb25zL2NvbW1hbmRzL0ZUQVhTYXBIYW5kbGVyLmphdmEKaW5kZXggOTExNTkwOS4uNjcwMzZhNSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy50cmFuc2Zvcm1hdGlvbnMvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvdHJhbnNmb3JtYXRpb25zL2NvbW1hbmRzL0ZUQVhTYXBIYW5kbGVyLmphdmEKKysrIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy50cmFuc2Zvcm1hdGlvbnMvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvdHJhbnNmb3JtYXRpb25zL2NvbW1hbmRzL0ZUQVhTYXBIYW5kbGVyLmphdmEKQEAgLTEsOSArMSw5IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICogQ29weXJpZ2h0IChDKSAyMDE4IEZvbmRhemlvbmUgQnJ1bm8gS2Vzc2xlci4KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgKiAKICAqIENvbnRyaWJ1dG9yczoKICAqICAgICBMdWNhIENyaXN0b2ZvcmV0dGkgLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KZGlmZiAtLWdpdCBhL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMudHJhbnNmb3JtYXRpb25zL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL3RyYW5zZm9ybWF0aW9ucy9kaWFsb2dzL1JlZmluZW1lbnRSZXN1bHREaWFsb2cuamF2YSBiL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMudHJhbnNmb3JtYXRpb25zL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL3RyYW5zZm9ybWF0aW9ucy9kaWFsb2dzL1JlZmluZW1lbnRSZXN1bHREaWFsb2cuamF2YQppbmRleCA4ZmI3Y2Q4Li5kZDI4NzY3IDEwMDY0NAotLS0gYS9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnRyYW5zZm9ybWF0aW9ucy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy90cmFuc2Zvcm1hdGlvbnMvZGlhbG9ncy9SZWZpbmVtZW50UmVzdWx0RGlhbG9nLmphdmEKKysrIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy50cmFuc2Zvcm1hdGlvbnMvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvdHJhbnNmb3JtYXRpb25zL2RpYWxvZ3MvUmVmaW5lbWVudFJlc3VsdERpYWxvZy5qYXZhCkBAIC0yLDkgKzIsOSBAQAogICoKICAqIENvcHlyaWdodCAoYykgMjAxMywgMjAxNSBJbnRlY3MgU3BBIAogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICAqCiAgKiBDb250cmlidXRvcnM6CiAgKiBOaWNob2xhcyBQYWNpbmkgbmljaG9sYXMucGFjaW5pQGludGVjcy5pdCAKZGlmZiAtLWdpdCBhL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMudHJhbnNmb3JtYXRpb25zL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL3RyYW5zZm9ybWF0aW9ucy9kaWFsb2dzL1NlbGVjdEFuYWx5c2lzQ3R4RGlhbG9nLmphdmEgYi9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnRyYW5zZm9ybWF0aW9ucy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy90cmFuc2Zvcm1hdGlvbnMvZGlhbG9ncy9TZWxlY3RBbmFseXNpc0N0eERpYWxvZy5qYXZhCmluZGV4IGNlMDM5ZjcuLjJmMDg3ODUgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMudHJhbnNmb3JtYXRpb25zL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL3RyYW5zZm9ybWF0aW9ucy9kaWFsb2dzL1NlbGVjdEFuYWx5c2lzQ3R4RGlhbG9nLmphdmEKKysrIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy50cmFuc2Zvcm1hdGlvbnMvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvdHJhbnNmb3JtYXRpb25zL2RpYWxvZ3MvU2VsZWN0QW5hbHlzaXNDdHhEaWFsb2cuamF2YQpAQCAtMiw5ICsyLDkgQEAKICAqCiAgKiBDb3B5cmlnaHQgKGMpIDIwMTMsIDIwMTUgSW50ZWNzIFNwQSAKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgKgogICogQ29udHJpYnV0b3JzOgogICogTmljaG9sYXMgUGFjaW5pIG5pY2hvbGFzLnBhY2luaUBpbnRlY3MuaXQgCmRpZmYgLS1naXQgYS9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnRyYW5zZm9ybWF0aW9ucy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy90cmFuc2Zvcm1hdGlvbnMvZGlhbG9ncy9TZWxlY3RGVEFGTUVBQW5hbHlzaXNDdHhEaWFsb2cuamF2YSBiL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMudHJhbnNmb3JtYXRpb25zL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL3RyYW5zZm9ybWF0aW9ucy9kaWFsb2dzL1NlbGVjdEZUQUZNRUFBbmFseXNpc0N0eERpYWxvZy5qYXZhCmluZGV4IDYxZWEzOTguLjI2Y2ViNWMgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMudHJhbnNmb3JtYXRpb25zL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL3RyYW5zZm9ybWF0aW9ucy9kaWFsb2dzL1NlbGVjdEZUQUZNRUFBbmFseXNpc0N0eERpYWxvZy5qYXZhCisrKyBiL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMudHJhbnNmb3JtYXRpb25zL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL3RyYW5zZm9ybWF0aW9ucy9kaWFsb2dzL1NlbGVjdEZUQUZNRUFBbmFseXNpc0N0eERpYWxvZy5qYXZhCkBAIC0yLDkgKzIsOSBAQAogICoKICAqIENvcHlyaWdodCAoYykgMjAxMywgMjAxNSBJbnRlY3MgU3BBIAogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICAqCiAgKiBDb250cmlidXRvcnM6CiAgKiBOaWNob2xhcyBQYWNpbmkgbmljaG9sYXMucGFjaW5pQGludGVjcy5pdCAKZGlmZiAtLWdpdCBhL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMudHJhbnNmb3JtYXRpb25zL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL3RyYW5zZm9ybWF0aW9ucy9kaWFsb2dzL1NlbGVjdEltcGxlbWVudGF0aW9uRGlhbG9nLmphdmEgYi9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnRyYW5zZm9ybWF0aW9ucy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy90cmFuc2Zvcm1hdGlvbnMvZGlhbG9ncy9TZWxlY3RJbXBsZW1lbnRhdGlvbkRpYWxvZy5qYXZhCmluZGV4IGU4ZjUzZjkuLmYyZWVhNzggMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMudHJhbnNmb3JtYXRpb25zL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL3RyYW5zZm9ybWF0aW9ucy9kaWFsb2dzL1NlbGVjdEltcGxlbWVudGF0aW9uRGlhbG9nLmphdmEKKysrIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy50cmFuc2Zvcm1hdGlvbnMvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvdHJhbnNmb3JtYXRpb25zL2RpYWxvZ3MvU2VsZWN0SW1wbGVtZW50YXRpb25EaWFsb2cuamF2YQpAQCAtMiw5ICsyLDkgQEAKICAqCiAgKiBDb3B5cmlnaHQgKGMpIDIwMTMsIDIwMTUgSW50ZWNzIFNwQSAKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgKgogICogQ29udHJpYnV0b3JzOgogICogTmljaG9sYXMgUGFjaW5pIG5pY2hvbGFzLnBhY2luaUBpbnRlY3MuaXQgCmRpZmYgLS1naXQgYS9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnRyYW5zZm9ybWF0aW9ucy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy90cmFuc2Zvcm1hdGlvbnMvZGlhbG9ncy9TZWxlY3RPY3JhQW5hbHlzaXNDdHhEaWFsb2cuamF2YSBiL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMudHJhbnNmb3JtYXRpb25zL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL3RyYW5zZm9ybWF0aW9ucy9kaWFsb2dzL1NlbGVjdE9jcmFBbmFseXNpc0N0eERpYWxvZy5qYXZhCmluZGV4IDhjZjJjODEuLjdmOWQ3MTAgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMudHJhbnNmb3JtYXRpb25zL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL3RyYW5zZm9ybWF0aW9ucy9kaWFsb2dzL1NlbGVjdE9jcmFBbmFseXNpc0N0eERpYWxvZy5qYXZhCisrKyBiL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMudHJhbnNmb3JtYXRpb25zL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL3RyYW5zZm9ybWF0aW9ucy9kaWFsb2dzL1NlbGVjdE9jcmFBbmFseXNpc0N0eERpYWxvZy5qYXZhCkBAIC0yLDkgKzIsOSBAQAogICoNCiAgKiBDb3B5cmlnaHQgKGMpIDIwMTMsIDIwMTUgSW50ZWNzIFNwQSANCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoNCiAgKiBDb250cmlidXRvcnM6DQogICogTmljaG9sYXMgUGFjaW5pIG5pY2hvbGFzLnBhY2luaUBpbnRlY3MuaXQgDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy50cmFuc2Zvcm1hdGlvbnMvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvdHJhbnNmb3JtYXRpb25zL2RpYWxvZ3MvU2VsZWN0U3lzdGVtRGlhbG9nLmphdmEgYi9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnRyYW5zZm9ybWF0aW9ucy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy90cmFuc2Zvcm1hdGlvbnMvZGlhbG9ncy9TZWxlY3RTeXN0ZW1EaWFsb2cuamF2YQppbmRleCA3NzU5MjFiLi5iYTM5Zjc5IDEwMDY0NAotLS0gYS9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnRyYW5zZm9ybWF0aW9ucy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy90cmFuc2Zvcm1hdGlvbnMvZGlhbG9ncy9TZWxlY3RTeXN0ZW1EaWFsb2cuamF2YQorKysgYi9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnRyYW5zZm9ybWF0aW9ucy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy90cmFuc2Zvcm1hdGlvbnMvZGlhbG9ncy9TZWxlY3RTeXN0ZW1EaWFsb2cuamF2YQpAQCAtMiw5ICsyLDkgQEAKICAqCiAgKiBDb3B5cmlnaHQgKGMpIDIwMTMsIDIwMTUgSW50ZWNzIFNwQSAKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgKgogICogQ29udHJpYnV0b3JzOgogICogTmljaG9sYXMgUGFjaW5pIG5pY2hvbGFzLnBhY2luaUBpbnRlY3MuaXQgCmRpZmYgLS1naXQgYS9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnRyYW5zZm9ybWF0aW9ucy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy90cmFuc2Zvcm1hdGlvbnMvbWFpbi9HZW5lcmF0ZS5qYXZhIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy50cmFuc2Zvcm1hdGlvbnMvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvdHJhbnNmb3JtYXRpb25zL21haW4vR2VuZXJhdGUuamF2YQppbmRleCA1MjlmYWQ4Li4zMWMyMzZjIDEwMDY0NAotLS0gYS9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnRyYW5zZm9ybWF0aW9ucy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy90cmFuc2Zvcm1hdGlvbnMvbWFpbi9HZW5lcmF0ZS5qYXZhCisrKyBiL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMudHJhbnNmb3JtYXRpb25zL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL3RyYW5zZm9ybWF0aW9ucy9tYWluL0dlbmVyYXRlLmphdmEKQEAgLTIsOSArMiw5IEBACiAgKgogICogQ29weXJpZ2h0IChjKSAyMDEzLCAyMDE1IEludGVjcyBTcEEgCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICoKICAqIENvbnRyaWJ1dG9yczoKICAqIE5pY2hvbGFzIFBhY2luaSBuaWNob2xhcy5wYWNpbmlAaW50ZWNzLml0IApkaWZmIC0tZ2l0IGEvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy50cmFuc2Zvcm1hdGlvbnMvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvdHJhbnNmb3JtYXRpb25zL21haW4vR2VuZXJhdGVFcnJvck1vZGVsLmphdmEgYi9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnRyYW5zZm9ybWF0aW9ucy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy90cmFuc2Zvcm1hdGlvbnMvbWFpbi9HZW5lcmF0ZUVycm9yTW9kZWwuamF2YQppbmRleCA3OWJjM2QzLi40ZGNkYjZiIDEwMDY0NAotLS0gYS9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnRyYW5zZm9ybWF0aW9ucy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy90cmFuc2Zvcm1hdGlvbnMvbWFpbi9HZW5lcmF0ZUVycm9yTW9kZWwuamF2YQorKysgYi9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnRyYW5zZm9ybWF0aW9ucy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy90cmFuc2Zvcm1hdGlvbnMvbWFpbi9HZW5lcmF0ZUVycm9yTW9kZWwuamF2YQpAQCAtMiw5ICsyLDkgQEAKICAqCiAgKiBDb3B5cmlnaHQgKGMpIDIwMTMsIDIwMTUgSW50ZWNzIFNwQSAKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgKgogICogQ29udHJpYnV0b3JzOgogICogTmljaG9sYXMgUGFjaW5pIG5pY2hvbGFzLnBhY2luaUBpbnRlY3MuaXQgCmRpZmYgLS1naXQgYS9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnRyYW5zZm9ybWF0aW9ucy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy90cmFuc2Zvcm1hdGlvbnMvbWFpbi9HZW5lcmF0ZUZhdWx0RXh0ZW5zaW9ucy5qYXZhIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy50cmFuc2Zvcm1hdGlvbnMvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvdHJhbnNmb3JtYXRpb25zL21haW4vR2VuZXJhdGVGYXVsdEV4dGVuc2lvbnMuamF2YQppbmRleCAyZDZjNzFiLi5jZDg5MDY5IDEwMDY0NAotLS0gYS9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnRyYW5zZm9ybWF0aW9ucy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy90cmFuc2Zvcm1hdGlvbnMvbWFpbi9HZW5lcmF0ZUZhdWx0RXh0ZW5zaW9ucy5qYXZhCisrKyBiL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMudHJhbnNmb3JtYXRpb25zL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL3RyYW5zZm9ybWF0aW9ucy9tYWluL0dlbmVyYXRlRmF1bHRFeHRlbnNpb25zLmphdmEKQEAgLTIsOSArMiw5IEBACiAgKgogICogQ29weXJpZ2h0IChjKSAyMDEzLCAyMDE1IEludGVjcyBTcEEgCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICoKICAqIENvbnRyaWJ1dG9yczoKICAqIE5pY2hvbGFzIFBhY2luaSBuaWNob2xhcy5wYWNpbmlAaW50ZWNzLml0IApkaWZmIC0tZ2l0IGEvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy50cmFuc2Zvcm1hdGlvbnMvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvdHJhbnNmb3JtYXRpb25zL21haW4vR2VuZXJhdGVJbXBsZW1lbnRhdGlvbi5qYXZhIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy50cmFuc2Zvcm1hdGlvbnMvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvdHJhbnNmb3JtYXRpb25zL21haW4vR2VuZXJhdGVJbXBsZW1lbnRhdGlvbi5qYXZhCmluZGV4IDIzNmNlNDEuLjlhNTA5YWUgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMudHJhbnNmb3JtYXRpb25zL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL3RyYW5zZm9ybWF0aW9ucy9tYWluL0dlbmVyYXRlSW1wbGVtZW50YXRpb24uamF2YQorKysgYi9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnRyYW5zZm9ybWF0aW9ucy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy90cmFuc2Zvcm1hdGlvbnMvbWFpbi9HZW5lcmF0ZUltcGxlbWVudGF0aW9uLmphdmEKQEAgLTIsOSArMiw5IEBACiAgKgogICogQ29weXJpZ2h0IChjKSAyMDEzLCAyMDE1IEludGVjcyBTcEEgCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICoKICAqIENvbnRyaWJ1dG9yczoKICAqIE5pY2hvbGFzIFBhY2luaSBuaWNob2xhcy5wYWNpbmlAaW50ZWNzLml0IApkaWZmIC0tZ2l0IGEvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy50cmFuc2Zvcm1hdGlvbnMvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvdHJhbnNmb3JtYXRpb25zL21haW4vZ2VuZXJhdGUubXRsIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy50cmFuc2Zvcm1hdGlvbnMvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvdHJhbnNmb3JtYXRpb25zL21haW4vZ2VuZXJhdGUubXRsCmluZGV4IDljOTQxMDQuLjRkNTJjMDMgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMudHJhbnNmb3JtYXRpb25zL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL3RyYW5zZm9ybWF0aW9ucy9tYWluL2dlbmVyYXRlLm10bAorKysgYi9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnRyYW5zZm9ybWF0aW9ucy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy90cmFuc2Zvcm1hdGlvbnMvbWFpbi9nZW5lcmF0ZS5tdGwKQEAgLTMsOSArMyw5IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBDb3B5cmlnaHQgKGMpIDIwMTMgSW50ZWNzIFNwQSANCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICogDQogICogQ29udHJpYnV0b3JzOg0KICAqIE5pY2hvbGFzIFBhY2luaSBuaWNob2xhcy5wYWNpbmlAaW50ZWNzLml0IA0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMudHJhbnNmb3JtYXRpb25zL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL3RyYW5zZm9ybWF0aW9ucy9tYWluL2dlbmVyYXRlRXJyb3JNb2RlbC5tdGwgYi9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnRyYW5zZm9ybWF0aW9ucy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy90cmFuc2Zvcm1hdGlvbnMvbWFpbi9nZW5lcmF0ZUVycm9yTW9kZWwubXRsCmluZGV4IDgwNzMyMTUuLjM3ZGRlZjAgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMudHJhbnNmb3JtYXRpb25zL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL3RyYW5zZm9ybWF0aW9ucy9tYWluL2dlbmVyYXRlRXJyb3JNb2RlbC5tdGwKKysrIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy50cmFuc2Zvcm1hdGlvbnMvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvdHJhbnNmb3JtYXRpb25zL21haW4vZ2VuZXJhdGVFcnJvck1vZGVsLm10bApAQCAtMyw5ICszLDkgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICogQ29weXJpZ2h0IChjKSAyMDEzIEludGVjcyBTcEEgCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICogCiAgKiBDb250cmlidXRvcnM6CiAgKiBOaWNob2xhcyBQYWNpbmkgbmljaG9sYXMucGFjaW5pQGludGVjcy5pdCAKZGlmZiAtLWdpdCBhL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMudHJhbnNmb3JtYXRpb25zL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL3RyYW5zZm9ybWF0aW9ucy9tYWluL2dlbmVyYXRlRmF1bHRFeHRlbnNpb25zLm10bCBiL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMudHJhbnNmb3JtYXRpb25zL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL3RyYW5zZm9ybWF0aW9ucy9tYWluL2dlbmVyYXRlRmF1bHRFeHRlbnNpb25zLm10bAppbmRleCAxNjFmMTU5Li5lNDQ5ZjY0IDEwMDY0NAotLS0gYS9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnRyYW5zZm9ybWF0aW9ucy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy90cmFuc2Zvcm1hdGlvbnMvbWFpbi9nZW5lcmF0ZUZhdWx0RXh0ZW5zaW9ucy5tdGwKKysrIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy50cmFuc2Zvcm1hdGlvbnMvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvdHJhbnNmb3JtYXRpb25zL21haW4vZ2VuZXJhdGVGYXVsdEV4dGVuc2lvbnMubXRsCkBAIC0zLDkgKzMsOSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKiBDb3B5cmlnaHQgKGMpIDIwMTMgSW50ZWNzIFNwQSAKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgKiAKICAqIENvbnRyaWJ1dG9yczoKICAqIE5pY2hvbGFzIFBhY2luaSBuaWNob2xhcy5wYWNpbmlAaW50ZWNzLml0IApkaWZmIC0tZ2l0IGEvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy50cmFuc2Zvcm1hdGlvbnMvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvdHJhbnNmb3JtYXRpb25zL21haW4vZ2VuZXJhdGVJbXBsZW1lbnRhdGlvbi5tdGwgYi9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnRyYW5zZm9ybWF0aW9ucy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy90cmFuc2Zvcm1hdGlvbnMvbWFpbi9nZW5lcmF0ZUltcGxlbWVudGF0aW9uLm10bAppbmRleCBlOTgyNzk4Li5mNGI0NDYxIDEwMDY0NAotLS0gYS9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnRyYW5zZm9ybWF0aW9ucy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy90cmFuc2Zvcm1hdGlvbnMvbWFpbi9nZW5lcmF0ZUltcGxlbWVudGF0aW9uLm10bAorKysgYi9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnRyYW5zZm9ybWF0aW9ucy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy90cmFuc2Zvcm1hdGlvbnMvbWFpbi9nZW5lcmF0ZUltcGxlbWVudGF0aW9uLm10bApAQCAtMyw5ICszLDkgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICogQ29weXJpZ2h0IChjKSAyMDEzIEludGVjcyBTcEEgCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICogCiAgKiBDb250cmlidXRvcnM6CiAgKiBOaWNob2xhcyBQYWNpbmkgbmljaG9sYXMucGFjaW5pQGludGVjcy5pdCAKZGlmZiAtLWdpdCBhL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMudHJhbnNmb3JtYXRpb25zL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL3RyYW5zZm9ybWF0aW9ucy9zZXJ2aWNlL1NlcnZpY2UuamF2YSBiL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMudHJhbnNmb3JtYXRpb25zL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL3RyYW5zZm9ybWF0aW9ucy9zZXJ2aWNlL1NlcnZpY2UuamF2YQppbmRleCA5NjBjZjk3Li43YzI2YTZlIDEwMDY0NAotLS0gYS9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnRyYW5zZm9ybWF0aW9ucy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy90cmFuc2Zvcm1hdGlvbnMvc2VydmljZS9TZXJ2aWNlLmphdmEKKysrIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy50cmFuc2Zvcm1hdGlvbnMvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvdHJhbnNmb3JtYXRpb25zL3NlcnZpY2UvU2VydmljZS5qYXZhCkBAIC0yLDkgKzIsOSBAQAogICoNCiAgKiBDb3B5cmlnaHQgKGMpIDIwMTMsIDIwMTUgSW50ZWNzIFNwQSANCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoNCiAgKiBDb250cmlidXRvcnM6DQogICogTmljaG9sYXMgUGFjaW5pIG5pY2hvbGFzLnBhY2luaUBpbnRlY3MuaXQgDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy52YWxpZGF0aW9uL2Fib3V0Lmh0bWwgYi9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnZhbGlkYXRpb24vYWJvdXQuaHRtbAppbmRleCBkZDNjMDg5Li4xNjRmNzgxIDEwMDY0NAotLS0gYS9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnZhbGlkYXRpb24vYWJvdXQuaHRtbAorKysgYi9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnZhbGlkYXRpb24vYWJvdXQuaHRtbApAQCAtMiwyNyArMiwzNSBAQAogICAgICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS1zdHJpY3QuZHRkIj4KIDxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KIDxoZWFkPgotPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMSIvPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMSIgLz4KIDx0aXRsZT5BYm91dDwvdGl0bGU+CiA8L2hlYWQ+CiA8Ym9keSBsYW5nPSJFTi1VUyI+Ci08aDI+QWJvdXQgVGhpcyBDb250ZW50PC9oMj4KLSAKLTxwPk5vdmVtYmVyIDE0LCAyMDA4PC9wPgkKLTxoMz5MaWNlbnNlPC9oMz4KKwk8aDI+QWJvdXQgVGhpcyBDb250ZW50PC9oMj4KIAotPHA+VGhlIEVjbGlwc2UgRm91bmRhdGlvbiBtYWtlcyBhdmFpbGFibGUgYWxsIGNvbnRlbnQgaW4gdGhpcyBwbHVnLWluICgmcXVvdDtDb250ZW50JnF1b3Q7KS4gIFVubGVzcyBvdGhlcndpc2UgCi1pbmRpY2F0ZWQgYmVsb3csIHRoZSBDb250ZW50IGlzIHByb3ZpZGVkIHRvIHlvdSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlCi1FY2xpcHNlIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMS4wICgmcXVvdDtFUEwmcXVvdDspLiAgQSBjb3B5IG9mIHRoZSBFUEwgaXMgYXZhaWxhYmxlIAotYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwiPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sPC9hPi4KLUZvciBwdXJwb3NlcyBvZiB0aGUgRVBMLCAmcXVvdDtQcm9ncmFtJnF1b3Q7IHdpbGwgbWVhbiB0aGUgQ29udGVudC48L3A+CisJPHA+Tm92ZW1iZXIgMzAsIDIwMTc8L3A+CisJPGgzPkxpY2Vuc2U8L2gzPgogCi08cD5JZiB5b3UgZGlkIG5vdCByZWNlaXZlIHRoaXMgQ29udGVudCBkaXJlY3RseSBmcm9tIHRoZSBFY2xpcHNlIEZvdW5kYXRpb24sIHRoZSBDb250ZW50IGlzIAotYmVpbmcgcmVkaXN0cmlidXRlZCBieSBhbm90aGVyIHBhcnR5ICgmcXVvdDtSZWRpc3RyaWJ1dG9yJnF1b3Q7KSBhbmQgZGlmZmVyZW50IHRlcm1zIGFuZCBjb25kaXRpb25zIG1heQotYXBwbHkgdG8geW91ciB1c2Ugb2YgYW55IG9iamVjdCBjb2RlIGluIHRoZSBDb250ZW50LiAgQ2hlY2sgdGhlIFJlZGlzdHJpYnV0b3IncyBsaWNlbnNlIHRoYXQgd2FzIAotcHJvdmlkZWQgd2l0aCB0aGUgQ29udGVudC4gIElmIG5vIHN1Y2ggbGljZW5zZSBleGlzdHMsIGNvbnRhY3QgdGhlIFJlZGlzdHJpYnV0b3IuICBVbmxlc3Mgb3RoZXJ3aXNlCi1pbmRpY2F0ZWQgYmVsb3csIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRVBMIHN0aWxsIGFwcGx5IHRvIGFueSBzb3VyY2UgY29kZSBpbiB0aGUgQ29udGVudAotYW5kIHN1Y2ggc291cmNlIGNvZGUgbWF5IGJlIG9idGFpbmVkIGF0IDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmciPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmc8L2E+LjwvcD4KKwk8cD4KKwkJVGhlIEVjbGlwc2UgRm91bmRhdGlvbiBtYWtlcyBhdmFpbGFibGUgYWxsIGNvbnRlbnQgaW4gdGhpcyBwbHVnLWluCisJCSgmcXVvdDtDb250ZW50JnF1b3Q7KS4gVW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQgYmVsb3csIHRoZSBDb250ZW50CisJCWlzIHByb3ZpZGVkIHRvIHlvdSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVjbGlwc2UKKwkJUHVibGljIExpY2Vuc2UgVmVyc2lvbiAyLjAgKCZxdW90O0VQTCZxdW90OykuIEEgY29weSBvZiB0aGUgRVBMIGlzCisJCWF2YWlsYWJsZSBhdCA8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAiPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMDwvYT4uCisJCUZvciBwdXJwb3NlcyBvZiB0aGUgRVBMLCAmcXVvdDtQcm9ncmFtJnF1b3Q7IHdpbGwgbWVhbiB0aGUgQ29udGVudC4KKwk8L3A+CisKKwk8cD4KKwkJSWYgeW91IGRpZCBub3QgcmVjZWl2ZSB0aGlzIENvbnRlbnQgZGlyZWN0bHkgZnJvbSB0aGUgRWNsaXBzZQorCQlGb3VuZGF0aW9uLCB0aGUgQ29udGVudCBpcyBiZWluZyByZWRpc3RyaWJ1dGVkIGJ5IGFub3RoZXIgcGFydHkKKwkJKCZxdW90O1JlZGlzdHJpYnV0b3ImcXVvdDspIGFuZCBkaWZmZXJlbnQgdGVybXMgYW5kIGNvbmRpdGlvbnMgbWF5CisJCWFwcGx5IHRvIHlvdXIgdXNlIG9mIGFueSBvYmplY3QgY29kZSBpbiB0aGUgQ29udGVudC4gQ2hlY2sgdGhlCisJCVJlZGlzdHJpYnV0b3IncyBsaWNlbnNlIHRoYXQgd2FzIHByb3ZpZGVkIHdpdGggdGhlIENvbnRlbnQuIElmIG5vIHN1Y2gKKwkJbGljZW5zZSBleGlzdHMsIGNvbnRhY3QgdGhlIFJlZGlzdHJpYnV0b3IuIFVubGVzcyBvdGhlcndpc2UgaW5kaWNhdGVkCisJCWJlbG93LCB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVQTCBzdGlsbCBhcHBseSB0byBhbnkgc291cmNlCisJCWNvZGUgaW4gdGhlIENvbnRlbnQgYW5kIHN1Y2ggc291cmNlIGNvZGUgbWF5IGJlIG9idGFpbmVkIGF0IDxhCisJCQlocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnLyI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZzwvYT4uCisJPC9wPgogCiA8L2JvZHk+CiA8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy52YWxpZGF0aW9uL2J1aWxkLnByb3BlcnRpZXMgYi9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnZhbGlkYXRpb24vYnVpbGQucHJvcGVydGllcwppbmRleCA4NGUzODcyLi4zMmExMjllIDEwMDY0NAotLS0gYS9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnZhbGlkYXRpb24vYnVpbGQucHJvcGVydGllcworKysgYi9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnZhbGlkYXRpb24vYnVpbGQucHJvcGVydGllcwpAQCAtMiw5ICsyLDkgQEAKICMKICMgQ29weXJpZ2h0IChjKSAyMDEzLCAyMDE1IEludGVjcyBTcEEgCiAjIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSMgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisjIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogIyB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotIyBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorIyBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogIwogIyBDb250cmlidXRvcnM6CiAjIE5pY2hvbGFzIFBhY2luaSBuaWNob2xhcy5wYWNpbmlAaW50ZWNzLml0IApkaWZmIC0tZ2l0IGEvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy52YWxpZGF0aW9uL3BsdWdpbi54bWwgYi9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnZhbGlkYXRpb24vcGx1Z2luLnhtbAppbmRleCBkZGUwMzUyLi40OTM2MTA5IDEwMDY0NAotLS0gYS9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnZhbGlkYXRpb24vcGx1Z2luLnhtbAorKysgYi9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnZhbGlkYXRpb24vcGx1Z2luLnhtbApAQCAtNCw5ICs0LDkgQEAKICAgIAogICAgIENvcHlyaWdodCAoYykgMjAxMywgMjAxNSBJbnRlY3MgU3BBIAogICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAgICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAgICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICAgICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICAgIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgICAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICAgIAogICAgIENvbnRyaWJ1dG9yczoKICAgICBOaWNob2xhcyBQYWNpbmkgbmljaG9sYXMucGFjaW5pQGludGVjcy5pdCAKZGlmZiAtLWdpdCBhL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMudmFsaWRhdGlvbi9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy92YWxpZGF0aW9uL0FjdGl2YXRvci5qYXZhIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy52YWxpZGF0aW9uL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL3ZhbGlkYXRpb24vQWN0aXZhdG9yLmphdmEKaW5kZXggMTE5MmZhNC4uOWNkMTE3OCAxMDA2NDQKLS0tIGEvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy52YWxpZGF0aW9uL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL3ZhbGlkYXRpb24vQWN0aXZhdG9yLmphdmEKKysrIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy52YWxpZGF0aW9uL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL3ZhbGlkYXRpb24vQWN0aXZhdG9yLmphdmEKQEAgLTIsOSArMiw5IEBACiAgKgogICogQ29weXJpZ2h0IChjKSAyMDEzLCAyMDE1IEludGVjcyBTcEEgCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICoKICAqIENvbnRyaWJ1dG9yczoKICAqIE5pY2hvbGFzIFBhY2luaSBuaWNob2xhcy5wYWNpbmlAaW50ZWNzLml0IApkaWZmIC0tZ2l0IGEvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy52YWxpZGF0aW9uL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL3ZhbGlkYXRpb24vQ0hFU1NDb250cmFjdFZhbGlkYXRpb25IYW5kbGVyLmphdmEgYi9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnZhbGlkYXRpb24vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvdmFsaWRhdGlvbi9DSEVTU0NvbnRyYWN0VmFsaWRhdGlvbkhhbmRsZXIuamF2YQppbmRleCAyMzk4YmEyLi45MTQxMWZlIDEwMDY0NAotLS0gYS9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnZhbGlkYXRpb24vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvdmFsaWRhdGlvbi9DSEVTU0NvbnRyYWN0VmFsaWRhdGlvbkhhbmRsZXIuamF2YQorKysgYi9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnZhbGlkYXRpb24vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvdmFsaWRhdGlvbi9DSEVTU0NvbnRyYWN0VmFsaWRhdGlvbkhhbmRsZXIuamF2YQpAQCAtMiw5ICsyLDkgQEAKICAqCiAgKiBDb3B5cmlnaHQgKGMpIDIwMTMsIDIwMTUgSW50ZWNzIFNwQSAKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgKgogICogQ29udHJpYnV0b3JzOgogICogTmljaG9sYXMgUGFjaW5pIG5pY2hvbGFzLnBhY2luaUBpbnRlY3MuaXQgCmRpZmYgLS1naXQgYS9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnZhbGlkYXRpb24vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvdmFsaWRhdGlvbi9WYWxpZGF0aW9uRGVsZWdhdGVDbGllbnRTZWxlY3Rvci5qYXZhIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy52YWxpZGF0aW9uL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL3ZhbGlkYXRpb24vVmFsaWRhdGlvbkRlbGVnYXRlQ2xpZW50U2VsZWN0b3IuamF2YQppbmRleCAxNTQxN2VmLi5hODhlNjdiIDEwMDY0NAotLS0gYS9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnZhbGlkYXRpb24vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvdmFsaWRhdGlvbi9WYWxpZGF0aW9uRGVsZWdhdGVDbGllbnRTZWxlY3Rvci5qYXZhCisrKyBiL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMudmFsaWRhdGlvbi9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy92YWxpZGF0aW9uL1ZhbGlkYXRpb25EZWxlZ2F0ZUNsaWVudFNlbGVjdG9yLmphdmEKQEAgLTIsOSArMiw5IEBACiAgKgogICogQ29weXJpZ2h0IChjKSAyMDEzLCAyMDE1IEludGVjcyBTcEEgCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICoKICAqIENvbnRyaWJ1dG9yczoKICAqIE5pY2hvbGFzIFBhY2luaSBuaWNob2xhcy5wYWNpbmlAaW50ZWNzLml0IApkaWZmIC0tZ2l0IGEvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy52YWxpZGF0aW9uL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL3ZhbGlkYXRpb24vY29tbWFuZC9DSEVTU0NvbnRyYWN0VmFsaWRhdGVDb21tYW5kLmphdmEgYi9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnZhbGlkYXRpb24vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvdmFsaWRhdGlvbi9jb21tYW5kL0NIRVNTQ29udHJhY3RWYWxpZGF0ZUNvbW1hbmQuamF2YQppbmRleCBjNGI5MGYwLi43ZTliOWE1IDEwMDY0NAotLS0gYS9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnZhbGlkYXRpb24vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvdmFsaWRhdGlvbi9jb21tYW5kL0NIRVNTQ29udHJhY3RWYWxpZGF0ZUNvbW1hbmQuamF2YQorKysgYi9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnZhbGlkYXRpb24vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvdmFsaWRhdGlvbi9jb21tYW5kL0NIRVNTQ29udHJhY3RWYWxpZGF0ZUNvbW1hbmQuamF2YQpAQCAtMiw5ICsyLDkgQEAKICAqCiAgKiBDb3B5cmlnaHQgKGMpIDIwMTMsIDIwMTUgSW50ZWNzIFNwQSAKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgKgogICogQ29udHJpYnV0b3JzOgogICogTmljaG9sYXMgUGFjaW5pIG5pY2hvbGFzLnBhY2luaUBpbnRlY3MuaXQgCmRpZmYgLS1naXQgYS9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnZhbGlkYXRpb24vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvdmFsaWRhdGlvbi9jb25zdHJhaW50cy9PQ1JBQ29uc3RyYWludHMuamF2YSBiL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMudmFsaWRhdGlvbi9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy92YWxpZGF0aW9uL2NvbnN0cmFpbnRzL09DUkFDb25zdHJhaW50cy5qYXZhCmluZGV4IGVjYjkxY2MuLjA0MDhlODUgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMudmFsaWRhdGlvbi9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy92YWxpZGF0aW9uL2NvbnN0cmFpbnRzL09DUkFDb25zdHJhaW50cy5qYXZhCisrKyBiL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMudmFsaWRhdGlvbi9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy92YWxpZGF0aW9uL2NvbnN0cmFpbnRzL09DUkFDb25zdHJhaW50cy5qYXZhCkBAIC0yLDkgKzIsOSBAQAogICoKICAqIENvcHlyaWdodCAoYykgMjAxMywgMjAxNSBJbnRlY3MgU3BBIAogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICAqCiAgKiBDb250cmlidXRvcnM6CiAgKiBOaWNob2xhcyBQYWNpbmkgbmljaG9sYXMucGFjaW5pQGludGVjcy5pdCAKZGlmZiAtLWdpdCBhL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMudmVyaWZpY2F0aW9uU2VydmljZS50ZXN0LnJ1bnRpbWUvYWJvdXQuaHRtbCBiL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMudmVyaWZpY2F0aW9uU2VydmljZS50ZXN0LnJ1bnRpbWUvYWJvdXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNjRmNzgxCi0tLSAvZGV2L251bGwKKysrIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy52ZXJpZmljYXRpb25TZXJ2aWNlLnRlc3QucnVudGltZS9hYm91dC5odG1sCkBAIC0wLDAgKzEsMzYgQEAKKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFN0cmljdC8vRU4iCisgICAgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXN0cmljdC5kdGQiPgorPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xIiAvPgorPHRpdGxlPkFib3V0PC90aXRsZT4KKzwvaGVhZD4KKzxib2R5IGxhbmc9IkVOLVVTIj4KKwk8aDI+QWJvdXQgVGhpcyBDb250ZW50PC9oMj4KKworCTxwPk5vdmVtYmVyIDMwLCAyMDE3PC9wPgorCTxoMz5MaWNlbnNlPC9oMz4KKworCTxwPgorCQlUaGUgRWNsaXBzZSBGb3VuZGF0aW9uIG1ha2VzIGF2YWlsYWJsZSBhbGwgY29udGVudCBpbiB0aGlzIHBsdWctaW4KKwkJKCZxdW90O0NvbnRlbnQmcXVvdDspLiBVbmxlc3Mgb3RoZXJ3aXNlIGluZGljYXRlZCBiZWxvdywgdGhlIENvbnRlbnQKKwkJaXMgcHJvdmlkZWQgdG8geW91IHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRWNsaXBzZQorCQlQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDIuMCAoJnF1b3Q7RVBMJnF1b3Q7KS4gQSBjb3B5IG9mIHRoZSBFUEwgaXMKKwkJYXZhaWxhYmxlIGF0IDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMCI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wPC9hPi4KKwkJRm9yIHB1cnBvc2VzIG9mIHRoZSBFUEwsICZxdW90O1Byb2dyYW0mcXVvdDsgd2lsbCBtZWFuIHRoZSBDb250ZW50LgorCTwvcD4KKworCTxwPgorCQlJZiB5b3UgZGlkIG5vdCByZWNlaXZlIHRoaXMgQ29udGVudCBkaXJlY3RseSBmcm9tIHRoZSBFY2xpcHNlCisJCUZvdW5kYXRpb24sIHRoZSBDb250ZW50IGlzIGJlaW5nIHJlZGlzdHJpYnV0ZWQgYnkgYW5vdGhlciBwYXJ0eQorCQkoJnF1b3Q7UmVkaXN0cmlidXRvciZxdW90OykgYW5kIGRpZmZlcmVudCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBtYXkKKwkJYXBwbHkgdG8geW91ciB1c2Ugb2YgYW55IG9iamVjdCBjb2RlIGluIHRoZSBDb250ZW50LiBDaGVjayB0aGUKKwkJUmVkaXN0cmlidXRvcidzIGxpY2Vuc2UgdGhhdCB3YXMgcHJvdmlkZWQgd2l0aCB0aGUgQ29udGVudC4gSWYgbm8gc3VjaAorCQlsaWNlbnNlIGV4aXN0cywgY29udGFjdCB0aGUgUmVkaXN0cmlidXRvci4gVW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQKKwkJYmVsb3csIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRVBMIHN0aWxsIGFwcGx5IHRvIGFueSBzb3VyY2UKKwkJY29kZSBpbiB0aGUgQ29udGVudCBhbmQgc3VjaCBzb3VyY2UgY29kZSBtYXkgYmUgb2J0YWluZWQgYXQgPGEKKwkJCWhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnPC9hPi4KKwk8L3A+CisKKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnZlcmlmaWNhdGlvblNlcnZpY2UudGVzdC5ydW50aW1lL2xvZzRqLnByb3BlcnRpZXMgYi9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnZlcmlmaWNhdGlvblNlcnZpY2UudGVzdC5ydW50aW1lL2xvZzRqLnByb3BlcnRpZXMKaW5kZXggOGYxOWViZC4uNWNhYmNkNSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy52ZXJpZmljYXRpb25TZXJ2aWNlLnRlc3QucnVudGltZS9sb2c0ai5wcm9wZXJ0aWVzCisrKyBiL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMudmVyaWZpY2F0aW9uU2VydmljZS50ZXN0LnJ1bnRpbWUvbG9nNGoucHJvcGVydGllcwpAQCAtMiw5ICsyLDkgQEAKICMgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAjICAqIENvcHlyaWdodCAoQykgMjAxNyBGb25kYXppb25lIEJydW5vIEtlc3NsZXIuDQogIyAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotIyAgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisjICAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KICMgICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0jICAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorIyAgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICMgICogDQogIyAgKiBDb250cmlidXRvcnM6DQogIyAgKiAgICAgQWxiZXJ0byBEZWJpYXNpIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy52ZXJpZmljYXRpb25TZXJ2aWNlLnRlc3QucnVudGltZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy92ZXJpZmljYXRpb25TZXJ2aWNlL3Rlc3QvcnVudGltZS9jb21tYW5kcy9Nb2RlbENoZWNraW5nVGVzdC5qYXZhIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy52ZXJpZmljYXRpb25TZXJ2aWNlLnRlc3QucnVudGltZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy92ZXJpZmljYXRpb25TZXJ2aWNlL3Rlc3QvcnVudGltZS9jb21tYW5kcy9Nb2RlbENoZWNraW5nVGVzdC5qYXZhCmluZGV4IDhjYjNmZDIuLjUxYjY0ODIgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMudmVyaWZpY2F0aW9uU2VydmljZS50ZXN0LnJ1bnRpbWUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvdmVyaWZpY2F0aW9uU2VydmljZS90ZXN0L3J1bnRpbWUvY29tbWFuZHMvTW9kZWxDaGVja2luZ1Rlc3QuamF2YQorKysgYi9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnZlcmlmaWNhdGlvblNlcnZpY2UudGVzdC5ydW50aW1lL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL3ZlcmlmaWNhdGlvblNlcnZpY2UvdGVzdC9ydW50aW1lL2NvbW1hbmRzL01vZGVsQ2hlY2tpbmdUZXN0LmphdmEKQEAgLTEsOSArMSw5IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIENvcHlyaWdodCAoQykgMjAxOCBGb25kYXppb25lIEJydW5vIEtlc3NsZXIuDQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqICANCiAgKiBDb250cmlidXRvcnM6DQogICogICBBbGJlcnRvIERlYmlhc2kgLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24NCmRpZmYgLS1naXQgYS9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnZlcmlmaWNhdGlvblNlcnZpY2UudGVzdC5ydW50aW1lL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL3ZlcmlmaWNhdGlvblNlcnZpY2UvdGVzdC9ydW50aW1lL3Rlc3RzL0FsbFRlc3RzLmphdmEgYi9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnZlcmlmaWNhdGlvblNlcnZpY2UudGVzdC5ydW50aW1lL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL3ZlcmlmaWNhdGlvblNlcnZpY2UvdGVzdC9ydW50aW1lL3Rlc3RzL0FsbFRlc3RzLmphdmEKaW5kZXggYTdiZTFkMC4uMTVhZGFjMyAxMDA2NDQKLS0tIGEvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy52ZXJpZmljYXRpb25TZXJ2aWNlLnRlc3QucnVudGltZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy92ZXJpZmljYXRpb25TZXJ2aWNlL3Rlc3QvcnVudGltZS90ZXN0cy9BbGxUZXN0cy5qYXZhCisrKyBiL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMudmVyaWZpY2F0aW9uU2VydmljZS50ZXN0LnJ1bnRpbWUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvdmVyaWZpY2F0aW9uU2VydmljZS90ZXN0L3J1bnRpbWUvdGVzdHMvQWxsVGVzdHMuamF2YQpAQCAtMSwxNCArMSwyMSBAQAotcGFja2FnZSBvcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnZlcmlmaWNhdGlvblNlcnZpY2UudGVzdC5ydW50aW1lLnRlc3RzOwotCi0KLWltcG9ydCBvcmcuanVuaXQucnVubmVyLlJ1bldpdGg7Ci1pbXBvcnQgb3JnLmp1bml0LnJ1bm5lcnMuU3VpdGU7Ci1pbXBvcnQgb3JnLmp1bml0LnJ1bm5lcnMuU3VpdGUuU3VpdGVDbGFzc2VzOwotCi1AUnVuV2l0aChTdWl0ZS5jbGFzcykKLUBTdWl0ZUNsYXNzZXMoewotCVRlc3RCYXNpY09wZXJhdGlvbnMuY2xhc3MsIFRlc3RCYXNpY09wZXJhdGlvbnNIZWFkbGVzcy5jbGFzcywgVGVzdFNhZmV0eUFuYWx5c2lzT3BlcmF0aW9ucy5jbGFzcywgVGVzdFZBbmRWT3BlcmF0aW9ucy5jbGFzcwotLFRlc3RWYW5kVk9wZXJhdGlvbnNPU0xDLmNsYXNzCQotfSkKLXB1YmxpYyBjbGFzcyBBbGxUZXN0cyB7Ci19CisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqIENvcHlyaWdodCAoQykgMjAyMCBGb25kYXppb25lIEJydW5vIEtlc3NsZXIuDQorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KKyAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KK3BhY2thZ2Ugb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy52ZXJpZmljYXRpb25TZXJ2aWNlLnRlc3QucnVudGltZS50ZXN0czsNCisNCisNCitpbXBvcnQgb3JnLmp1bml0LnJ1bm5lci5SdW5XaXRoOw0KK2ltcG9ydCBvcmcuanVuaXQucnVubmVycy5TdWl0ZTsNCitpbXBvcnQgb3JnLmp1bml0LnJ1bm5lcnMuU3VpdGUuU3VpdGVDbGFzc2VzOw0KKw0KK0BSdW5XaXRoKFN1aXRlLmNsYXNzKQ0KK0BTdWl0ZUNsYXNzZXMoew0KKwlUZXN0QmFzaWNPcGVyYXRpb25zLmNsYXNzLCBUZXN0QmFzaWNPcGVyYXRpb25zSGVhZGxlc3MuY2xhc3MsIFRlc3RTYWZldHlBbmFseXNpc09wZXJhdGlvbnMuY2xhc3MsIFRlc3RWQW5kVk9wZXJhdGlvbnMuY2xhc3MNCissVGVzdFZhbmRWT3BlcmF0aW9uc09TTEMuY2xhc3MJDQorfSkNCitwdWJsaWMgY2xhc3MgQWxsVGVzdHMgew0KK30NCmRpZmYgLS1naXQgYS9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnZlcmlmaWNhdGlvblNlcnZpY2UudGVzdC5ydW50aW1lL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL3ZlcmlmaWNhdGlvblNlcnZpY2UvdGVzdC9ydW50aW1lL3Rlc3RzL1Rlc3RBcHBseUNIRVNTU3RlcmVvdHlwZS5qYXZhIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy52ZXJpZmljYXRpb25TZXJ2aWNlLnRlc3QucnVudGltZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy92ZXJpZmljYXRpb25TZXJ2aWNlL3Rlc3QvcnVudGltZS90ZXN0cy9UZXN0QXBwbHlDSEVTU1N0ZXJlb3R5cGUuamF2YQppbmRleCA0YzUwNDUxLi5hN2NmMzJlIDEwMDY0NAotLS0gYS9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnZlcmlmaWNhdGlvblNlcnZpY2UudGVzdC5ydW50aW1lL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL3ZlcmlmaWNhdGlvblNlcnZpY2UvdGVzdC9ydW50aW1lL3Rlc3RzL1Rlc3RBcHBseUNIRVNTU3RlcmVvdHlwZS5qYXZhCisrKyBiL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMudmVyaWZpY2F0aW9uU2VydmljZS50ZXN0LnJ1bnRpbWUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvdmVyaWZpY2F0aW9uU2VydmljZS90ZXN0L3J1bnRpbWUvdGVzdHMvVGVzdEFwcGx5Q0hFU1NTdGVyZW90eXBlLmphdmEKQEAgLTEsOSArMSw5IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICogQ29weXJpZ2h0IChjKSAyMDE1IEludGVjcy4KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgKgogICogQ29udHJpYnV0b3JzOgogICogICAgIE5pY2hvbGFzIFBhY2luaQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy52ZXJpZmljYXRpb25TZXJ2aWNlLnRlc3QucnVudGltZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy92ZXJpZmljYXRpb25TZXJ2aWNlL3Rlc3QvcnVudGltZS90ZXN0cy9UZXN0QXBwbHlSZWN1cnNpdmVseS5qYXZhIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy52ZXJpZmljYXRpb25TZXJ2aWNlLnRlc3QucnVudGltZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy92ZXJpZmljYXRpb25TZXJ2aWNlL3Rlc3QvcnVudGltZS90ZXN0cy9UZXN0QXBwbHlSZWN1cnNpdmVseS5qYXZhCmluZGV4IDlkNTNmNzQuLmU5M2RhMjYgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMudmVyaWZpY2F0aW9uU2VydmljZS50ZXN0LnJ1bnRpbWUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvdmVyaWZpY2F0aW9uU2VydmljZS90ZXN0L3J1bnRpbWUvdGVzdHMvVGVzdEFwcGx5UmVjdXJzaXZlbHkuamF2YQorKysgYi9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnZlcmlmaWNhdGlvblNlcnZpY2UudGVzdC5ydW50aW1lL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL3ZlcmlmaWNhdGlvblNlcnZpY2UvdGVzdC9ydW50aW1lL3Rlc3RzL1Rlc3RBcHBseVJlY3Vyc2l2ZWx5LmphdmEKQEAgLTEsOSArMSw5IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICogQ29weXJpZ2h0IChjKSAyMDE1IEludGVjcy4KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgKgogICogQ29udHJpYnV0b3JzOgogICogICAgIE5pY2hvbGFzIFBhY2luaQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy52ZXJpZmljYXRpb25TZXJ2aWNlLnRlc3QucnVudGltZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy92ZXJpZmljYXRpb25TZXJ2aWNlL3Rlc3QvcnVudGltZS90ZXN0cy9UZXN0QmFzaWNPcGVyYXRpb25zLmphdmEgYi9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnZlcmlmaWNhdGlvblNlcnZpY2UudGVzdC5ydW50aW1lL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL3ZlcmlmaWNhdGlvblNlcnZpY2UvdGVzdC9ydW50aW1lL3Rlc3RzL1Rlc3RCYXNpY09wZXJhdGlvbnMuamF2YQppbmRleCAzMjIwOTZjLi45NWRjMDU0IDEwMDY0NAotLS0gYS9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnZlcmlmaWNhdGlvblNlcnZpY2UudGVzdC5ydW50aW1lL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL3ZlcmlmaWNhdGlvblNlcnZpY2UvdGVzdC9ydW50aW1lL3Rlc3RzL1Rlc3RCYXNpY09wZXJhdGlvbnMuamF2YQorKysgYi9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnZlcmlmaWNhdGlvblNlcnZpY2UudGVzdC5ydW50aW1lL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL3ZlcmlmaWNhdGlvblNlcnZpY2UvdGVzdC9ydW50aW1lL3Rlc3RzL1Rlc3RCYXNpY09wZXJhdGlvbnMuamF2YQpAQCAtMSwzICsxLDEwIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqIENvcHlyaWdodCAoQykgMjAyMCBGb25kYXppb25lIEJydW5vIEtlc3NsZXIuDQorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KKyAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KIHBhY2thZ2Ugb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy52ZXJpZmljYXRpb25TZXJ2aWNlLnRlc3QucnVudGltZS50ZXN0czsNCiANCiBpbXBvcnQgamF2YS5pby5GaWxlOw0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMudmVyaWZpY2F0aW9uU2VydmljZS50ZXN0LnJ1bnRpbWUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvdmVyaWZpY2F0aW9uU2VydmljZS90ZXN0L3J1bnRpbWUvdGVzdHMvVGVzdEJhc2ljT3BlcmF0aW9uc0hlYWRsZXNzLmphdmEgYi9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnZlcmlmaWNhdGlvblNlcnZpY2UudGVzdC5ydW50aW1lL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL3ZlcmlmaWNhdGlvblNlcnZpY2UvdGVzdC9ydW50aW1lL3Rlc3RzL1Rlc3RCYXNpY09wZXJhdGlvbnNIZWFkbGVzcy5qYXZhCmluZGV4IGFkMjE1NzQuLmMxZTM4MjggMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMudmVyaWZpY2F0aW9uU2VydmljZS50ZXN0LnJ1bnRpbWUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvdmVyaWZpY2F0aW9uU2VydmljZS90ZXN0L3J1bnRpbWUvdGVzdHMvVGVzdEJhc2ljT3BlcmF0aW9uc0hlYWRsZXNzLmphdmEKKysrIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy52ZXJpZmljYXRpb25TZXJ2aWNlLnRlc3QucnVudGltZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy92ZXJpZmljYXRpb25TZXJ2aWNlL3Rlc3QvcnVudGltZS90ZXN0cy9UZXN0QmFzaWNPcGVyYXRpb25zSGVhZGxlc3MuamF2YQpAQCAtMSwzICsxLDEwIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqIENvcHlyaWdodCAoQykgMjAyMCBGb25kYXppb25lIEJydW5vIEtlc3NsZXIuDQorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KKyAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KIHBhY2thZ2Ugb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy52ZXJpZmljYXRpb25TZXJ2aWNlLnRlc3QucnVudGltZS50ZXN0czsNCiANCiBpbXBvcnQgamF2YS5pby5GaWxlOw0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMudmVyaWZpY2F0aW9uU2VydmljZS50ZXN0LnJ1bnRpbWUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvdmVyaWZpY2F0aW9uU2VydmljZS90ZXN0L3J1bnRpbWUvdGVzdHMvVGVzdENoZWNrQ29udHJhY3RSZWZpbmVtZW50T2ZDSEVTU0NvbXBvbmVudC5qYXZhIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy52ZXJpZmljYXRpb25TZXJ2aWNlLnRlc3QucnVudGltZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy92ZXJpZmljYXRpb25TZXJ2aWNlL3Rlc3QvcnVudGltZS90ZXN0cy9UZXN0Q2hlY2tDb250cmFjdFJlZmluZW1lbnRPZkNIRVNTQ29tcG9uZW50LmphdmEKaW5kZXggODUzMGFiOC4uNjI2YTdlYyAxMDA2NDQKLS0tIGEvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy52ZXJpZmljYXRpb25TZXJ2aWNlLnRlc3QucnVudGltZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy92ZXJpZmljYXRpb25TZXJ2aWNlL3Rlc3QvcnVudGltZS90ZXN0cy9UZXN0Q2hlY2tDb250cmFjdFJlZmluZW1lbnRPZkNIRVNTQ29tcG9uZW50LmphdmEKKysrIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy52ZXJpZmljYXRpb25TZXJ2aWNlLnRlc3QucnVudGltZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy92ZXJpZmljYXRpb25TZXJ2aWNlL3Rlc3QvcnVudGltZS90ZXN0cy9UZXN0Q2hlY2tDb250cmFjdFJlZmluZW1lbnRPZkNIRVNTQ29tcG9uZW50LmphdmEKQEAgLTEsOSArMSw5IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIENvcHlyaWdodCAoQykgMjAxOCBGb25kYXppb25lIEJydW5vIEtlc3NsZXIuDQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqICANCiAgKiBDb250cmlidXRvcnM6DQogICogICBBbGJlcnRvIERlYmlhc2kgLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24NCmRpZmYgLS1naXQgYS9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnZlcmlmaWNhdGlvblNlcnZpY2UudGVzdC5ydW50aW1lL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL3ZlcmlmaWNhdGlvblNlcnZpY2UvdGVzdC9ydW50aW1lL3Rlc3RzL1Rlc3RDcmVhdGVWaWV3cy5qYXZhIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy52ZXJpZmljYXRpb25TZXJ2aWNlLnRlc3QucnVudGltZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy92ZXJpZmljYXRpb25TZXJ2aWNlL3Rlc3QvcnVudGltZS90ZXN0cy9UZXN0Q3JlYXRlVmlld3MuamF2YQppbmRleCAxOTc5ODA3Li5mYjM0MDIxIDEwMDY0NAotLS0gYS9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnZlcmlmaWNhdGlvblNlcnZpY2UudGVzdC5ydW50aW1lL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL3ZlcmlmaWNhdGlvblNlcnZpY2UvdGVzdC9ydW50aW1lL3Rlc3RzL1Rlc3RDcmVhdGVWaWV3cy5qYXZhCisrKyBiL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMudmVyaWZpY2F0aW9uU2VydmljZS50ZXN0LnJ1bnRpbWUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvdmVyaWZpY2F0aW9uU2VydmljZS90ZXN0L3J1bnRpbWUvdGVzdHMvVGVzdENyZWF0ZVZpZXdzLmphdmEKQEAgLTEsOSArMSw5IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICogQ29weXJpZ2h0IChjKSAyMDE1IEludGVjcy4KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgKgogICogQ29udHJpYnV0b3JzOgogICogICAgIE5pY2hvbGFzIFBhY2luaQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy52ZXJpZmljYXRpb25TZXJ2aWNlLnRlc3QucnVudGltZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy92ZXJpZmljYXRpb25TZXJ2aWNlL3Rlc3QvcnVudGltZS90ZXN0cy9UZXN0TW9kZWxDaGVja2luZy5qYXZhIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy52ZXJpZmljYXRpb25TZXJ2aWNlLnRlc3QucnVudGltZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy92ZXJpZmljYXRpb25TZXJ2aWNlL3Rlc3QvcnVudGltZS90ZXN0cy9UZXN0TW9kZWxDaGVja2luZy5qYXZhCmluZGV4IDEwM2VjMDkuLjg1MDZlNzMgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMudmVyaWZpY2F0aW9uU2VydmljZS50ZXN0LnJ1bnRpbWUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvdmVyaWZpY2F0aW9uU2VydmljZS90ZXN0L3J1bnRpbWUvdGVzdHMvVGVzdE1vZGVsQ2hlY2tpbmcuamF2YQorKysgYi9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnZlcmlmaWNhdGlvblNlcnZpY2UudGVzdC5ydW50aW1lL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL3ZlcmlmaWNhdGlvblNlcnZpY2UvdGVzdC9ydW50aW1lL3Rlc3RzL1Rlc3RNb2RlbENoZWNraW5nLmphdmEKQEAgLTEsOSArMSw5IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIENvcHlyaWdodCAoQykgMjAxOCBGb25kYXppb25lIEJydW5vIEtlc3NsZXIuDQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqICANCiAgKiBDb250cmlidXRvcnM6DQogICogICBBbGJlcnRvIERlYmlhc2kgLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24NCmRpZmYgLS1naXQgYS9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnZlcmlmaWNhdGlvblNlcnZpY2UudGVzdC5ydW50aW1lL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL3ZlcmlmaWNhdGlvblNlcnZpY2UvdGVzdC9ydW50aW1lL3Rlc3RzL1Rlc3RTYWZldHlBbmFseXNpc09wZXJhdGlvbnMuamF2YSBiL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMudmVyaWZpY2F0aW9uU2VydmljZS50ZXN0LnJ1bnRpbWUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvdmVyaWZpY2F0aW9uU2VydmljZS90ZXN0L3J1bnRpbWUvdGVzdHMvVGVzdFNhZmV0eUFuYWx5c2lzT3BlcmF0aW9ucy5qYXZhCmluZGV4IDQyZDdmN2QuLjAxNWM4YmMgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMudmVyaWZpY2F0aW9uU2VydmljZS50ZXN0LnJ1bnRpbWUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvdmVyaWZpY2F0aW9uU2VydmljZS90ZXN0L3J1bnRpbWUvdGVzdHMvVGVzdFNhZmV0eUFuYWx5c2lzT3BlcmF0aW9ucy5qYXZhCisrKyBiL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMudmVyaWZpY2F0aW9uU2VydmljZS50ZXN0LnJ1bnRpbWUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvdmVyaWZpY2F0aW9uU2VydmljZS90ZXN0L3J1bnRpbWUvdGVzdHMvVGVzdFNhZmV0eUFuYWx5c2lzT3BlcmF0aW9ucy5qYXZhCkBAIC0xLDMgKzEsMTAgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICogQ29weXJpZ2h0IChDKSAyMDIwIEZvbmRhemlvbmUgQnJ1bm8gS2Vzc2xlci4NCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQorICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQogcGFja2FnZSBvcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnZlcmlmaWNhdGlvblNlcnZpY2UudGVzdC5ydW50aW1lLnRlc3RzOw0KIA0KIGltcG9ydCBqYXZhLmlvLkZpbGU7DQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy52ZXJpZmljYXRpb25TZXJ2aWNlLnRlc3QucnVudGltZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy92ZXJpZmljYXRpb25TZXJ2aWNlL3Rlc3QvcnVudGltZS90ZXN0cy9UZXN0VkFuZFZPcGVyYXRpb25zLmphdmEgYi9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnZlcmlmaWNhdGlvblNlcnZpY2UudGVzdC5ydW50aW1lL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL3ZlcmlmaWNhdGlvblNlcnZpY2UvdGVzdC9ydW50aW1lL3Rlc3RzL1Rlc3RWQW5kVk9wZXJhdGlvbnMuamF2YQppbmRleCA2YzVlOTgxLi5hZDNiMmE4IDEwMDY0NAotLS0gYS9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnZlcmlmaWNhdGlvblNlcnZpY2UudGVzdC5ydW50aW1lL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL3ZlcmlmaWNhdGlvblNlcnZpY2UvdGVzdC9ydW50aW1lL3Rlc3RzL1Rlc3RWQW5kVk9wZXJhdGlvbnMuamF2YQorKysgYi9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnZlcmlmaWNhdGlvblNlcnZpY2UudGVzdC5ydW50aW1lL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL3ZlcmlmaWNhdGlvblNlcnZpY2UvdGVzdC9ydW50aW1lL3Rlc3RzL1Rlc3RWQW5kVk9wZXJhdGlvbnMuamF2YQpAQCAtMSwzICsxLDEwIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqIENvcHlyaWdodCAoQykgMjAyMCBGb25kYXppb25lIEJydW5vIEtlc3NsZXIuDQorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KKyAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KIHBhY2thZ2Ugb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy52ZXJpZmljYXRpb25TZXJ2aWNlLnRlc3QucnVudGltZS50ZXN0czsNCiANCiBpbXBvcnQgamF2YS5pby5GaWxlOw0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMudmVyaWZpY2F0aW9uU2VydmljZS50ZXN0LnJ1bnRpbWUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvdmVyaWZpY2F0aW9uU2VydmljZS90ZXN0L3J1bnRpbWUvdGVzdHMvVGVzdFZhbmRWT3BlcmF0aW9uc09TTEMuamF2YSBiL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMudmVyaWZpY2F0aW9uU2VydmljZS50ZXN0LnJ1bnRpbWUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvdmVyaWZpY2F0aW9uU2VydmljZS90ZXN0L3J1bnRpbWUvdGVzdHMvVGVzdFZhbmRWT3BlcmF0aW9uc09TTEMuamF2YQppbmRleCA5M2Q2NzNhLi4zZTNmMGQyIDEwMDY0NAotLS0gYS9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnZlcmlmaWNhdGlvblNlcnZpY2UudGVzdC5ydW50aW1lL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL3ZlcmlmaWNhdGlvblNlcnZpY2UvdGVzdC9ydW50aW1lL3Rlc3RzL1Rlc3RWYW5kVk9wZXJhdGlvbnNPU0xDLmphdmEKKysrIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy52ZXJpZmljYXRpb25TZXJ2aWNlLnRlc3QucnVudGltZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy92ZXJpZmljYXRpb25TZXJ2aWNlL3Rlc3QvcnVudGltZS90ZXN0cy9UZXN0VmFuZFZPcGVyYXRpb25zT1NMQy5qYXZhCkBAIC0xLDMgKzEsMTAgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICogQ29weXJpZ2h0IChDKSAyMDIwIEZvbmRhemlvbmUgQnJ1bm8gS2Vzc2xlci4NCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQorICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQogcGFja2FnZSBvcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnZlcmlmaWNhdGlvblNlcnZpY2UudGVzdC5ydW50aW1lLnRlc3RzOw0KIA0KIGltcG9ydCBvcmcuZWNsaXBzZS5seW8uY2xpZW50Lm9zbGMuT1NMQ0NvbnN0YW50czsNCmRpZmYgLS1naXQgYS9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnZlcmlmaWNhdGlvblNlcnZpY2UudGVzdC5ydW50aW1lL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL3ZlcmlmaWNhdGlvblNlcnZpY2UvdGVzdC9ydW50aW1lL3V0aWwvVGVzdFJlc3VsdHNVdGlsLmphdmEgYi9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnZlcmlmaWNhdGlvblNlcnZpY2UudGVzdC5ydW50aW1lL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29udHJhY3RzL3ZlcmlmaWNhdGlvblNlcnZpY2UvdGVzdC9ydW50aW1lL3V0aWwvVGVzdFJlc3VsdHNVdGlsLmphdmEKaW5kZXggMWQwYTUzMC4uZjViYTZkYiAxMDA2NDQKLS0tIGEvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy52ZXJpZmljYXRpb25TZXJ2aWNlLnRlc3QucnVudGltZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy92ZXJpZmljYXRpb25TZXJ2aWNlL3Rlc3QvcnVudGltZS91dGlsL1Rlc3RSZXN1bHRzVXRpbC5qYXZhCisrKyBiL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMudmVyaWZpY2F0aW9uU2VydmljZS50ZXN0LnJ1bnRpbWUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvdmVyaWZpY2F0aW9uU2VydmljZS90ZXN0L3J1bnRpbWUvdXRpbC9UZXN0UmVzdWx0c1V0aWwuamF2YQpAQCAtMSwzICsxLDEwIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqIENvcHlyaWdodCAoQykgMjAyMCBGb25kYXppb25lIEJydW5vIEtlc3NsZXIuDQorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KKyAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KIHBhY2thZ2Ugb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy52ZXJpZmljYXRpb25TZXJ2aWNlLnRlc3QucnVudGltZS51dGlsOw0KIA0KIGltcG9ydCBqYXZhLmlvLkJ1ZmZlcmVkUmVhZGVyOw0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMudmVyaWZpY2F0aW9uU2VydmljZS50ZXN0LnJ1bnRpbWUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb250cmFjdHMvdmVyaWZpY2F0aW9uU2VydmljZS90ZXN0L3J1bnRpbWUvdXRpbC9UZXN0VXRpbC5qYXZhIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy52ZXJpZmljYXRpb25TZXJ2aWNlLnRlc3QucnVudGltZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy92ZXJpZmljYXRpb25TZXJ2aWNlL3Rlc3QvcnVudGltZS91dGlsL1Rlc3RVdGlsLmphdmEKaW5kZXggOWQwOWVhMy4uM2EzMTM1ZSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy52ZXJpZmljYXRpb25TZXJ2aWNlLnRlc3QucnVudGltZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy92ZXJpZmljYXRpb25TZXJ2aWNlL3Rlc3QvcnVudGltZS91dGlsL1Rlc3RVdGlsLmphdmEKKysrIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy52ZXJpZmljYXRpb25TZXJ2aWNlLnRlc3QucnVudGltZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnRyYWN0cy92ZXJpZmljYXRpb25TZXJ2aWNlL3Rlc3QvcnVudGltZS91dGlsL1Rlc3RVdGlsLmphdmEKQEAgLTEsOSArMSw5IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIENvcHlyaWdodCAoQykgMjAxOCBGb25kYXppb25lIEJydW5vIEtlc3NsZXIuDQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqICANCiAgKiBDb250cmlidXRvcnM6DQogICogICBBbGJlcnRvIERlYmlhc2kgLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24NCmRpZmYgLS1naXQgYS9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnZlcmlmaWNhdGlvblNlcnZpY2UvYWJvdXQuaHRtbCBiL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMudmVyaWZpY2F0aW9uU2VydmljZS9hYm91dC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE2NGY3ODEKLS0tIC9kZXYvbnVsbAorKysgYi9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnZlcmlmaWNhdGlvblNlcnZpY2UvYWJvdXQuaHRtbApAQCAtMCwwICsxLDM2IEBACis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIgorICAgICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS1zdHJpY3QuZHRkIj4KKzxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMSIgLz4KKzx0aXRsZT5BYm91dDwvdGl0bGU+Cis8L2hlYWQ+Cis8Ym9keSBsYW5nPSJFTi1VUyI+CisJPGgyPkFib3V0IFRoaXMgQ29udGVudDwvaDI+CisKKwk8cD5Ob3ZlbWJlciAzMCwgMjAxNzwvcD4KKwk8aDM+TGljZW5zZTwvaDM+CisKKwk8cD4KKwkJVGhlIEVjbGlwc2UgRm91bmRhdGlvbiBtYWtlcyBhdmFpbGFibGUgYWxsIGNvbnRlbnQgaW4gdGhpcyBwbHVnLWluCisJCSgmcXVvdDtDb250ZW50JnF1b3Q7KS4gVW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQgYmVsb3csIHRoZSBDb250ZW50CisJCWlzIHByb3ZpZGVkIHRvIHlvdSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVjbGlwc2UKKwkJUHVibGljIExpY2Vuc2UgVmVyc2lvbiAyLjAgKCZxdW90O0VQTCZxdW90OykuIEEgY29weSBvZiB0aGUgRVBMIGlzCisJCWF2YWlsYWJsZSBhdCA8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAiPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMDwvYT4uCisJCUZvciBwdXJwb3NlcyBvZiB0aGUgRVBMLCAmcXVvdDtQcm9ncmFtJnF1b3Q7IHdpbGwgbWVhbiB0aGUgQ29udGVudC4KKwk8L3A+CisKKwk8cD4KKwkJSWYgeW91IGRpZCBub3QgcmVjZWl2ZSB0aGlzIENvbnRlbnQgZGlyZWN0bHkgZnJvbSB0aGUgRWNsaXBzZQorCQlGb3VuZGF0aW9uLCB0aGUgQ29udGVudCBpcyBiZWluZyByZWRpc3RyaWJ1dGVkIGJ5IGFub3RoZXIgcGFydHkKKwkJKCZxdW90O1JlZGlzdHJpYnV0b3ImcXVvdDspIGFuZCBkaWZmZXJlbnQgdGVybXMgYW5kIGNvbmRpdGlvbnMgbWF5CisJCWFwcGx5IHRvIHlvdXIgdXNlIG9mIGFueSBvYmplY3QgY29kZSBpbiB0aGUgQ29udGVudC4gQ2hlY2sgdGhlCisJCVJlZGlzdHJpYnV0b3IncyBsaWNlbnNlIHRoYXQgd2FzIHByb3ZpZGVkIHdpdGggdGhlIENvbnRlbnQuIElmIG5vIHN1Y2gKKwkJbGljZW5zZSBleGlzdHMsIGNvbnRhY3QgdGhlIFJlZGlzdHJpYnV0b3IuIFVubGVzcyBvdGhlcndpc2UgaW5kaWNhdGVkCisJCWJlbG93LCB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVQTCBzdGlsbCBhcHBseSB0byBhbnkgc291cmNlCisJCWNvZGUgaW4gdGhlIENvbnRlbnQgYW5kIHN1Y2ggc291cmNlIGNvZGUgbWF5IGJlIG9idGFpbmVkIGF0IDxhCisJCQlocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnLyI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZzwvYT4uCisJPC9wPgorCis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy52ZXJpZmljYXRpb25TZXJ2aWNlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdmVyaWZpY2F0aW9uU2VydmljZS91aS9jb21tYW5kcy9DaGVja1ZhbGlkYXRpb25Bc3NlcnRpb25Qcm9wZXJ0eUNvbW1hbmQuamF2YSBiL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMudmVyaWZpY2F0aW9uU2VydmljZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3ZlcmlmaWNhdGlvblNlcnZpY2UvdWkvY29tbWFuZHMvQ2hlY2tWYWxpZGF0aW9uQXNzZXJ0aW9uUHJvcGVydHlDb21tYW5kLmphdmEKaW5kZXggOGRkNjc5NC4uY2IwNWE4MCAxMDA2NDQKLS0tIGEvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy52ZXJpZmljYXRpb25TZXJ2aWNlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdmVyaWZpY2F0aW9uU2VydmljZS91aS9jb21tYW5kcy9DaGVja1ZhbGlkYXRpb25Bc3NlcnRpb25Qcm9wZXJ0eUNvbW1hbmQuamF2YQorKysgYi9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnZlcmlmaWNhdGlvblNlcnZpY2Uvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy92ZXJpZmljYXRpb25TZXJ2aWNlL3VpL2NvbW1hbmRzL0NoZWNrVmFsaWRhdGlvbkFzc2VydGlvblByb3BlcnR5Q29tbWFuZC5qYXZhCkBAIC0xLDkgKzEsOSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTcgRm9uZGF6aW9uZSBCcnVubyBLZXNzbGVyLg0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKiANCiAgKiBDb250cmlidXRvcnM6DQogICogICAgIEFsYmVydG8gRGViaWFzaSAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbg0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMudmVyaWZpY2F0aW9uU2VydmljZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3ZlcmlmaWNhdGlvblNlcnZpY2UvdWkvY29tbWFuZHMvQ2hlY2tWYWxpZGF0aW9uQ29udHJhY3RQcm9wZXJ0eUNvbW1hbmQuamF2YSBiL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMudmVyaWZpY2F0aW9uU2VydmljZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3ZlcmlmaWNhdGlvblNlcnZpY2UvdWkvY29tbWFuZHMvQ2hlY2tWYWxpZGF0aW9uQ29udHJhY3RQcm9wZXJ0eUNvbW1hbmQuamF2YQppbmRleCA1ODgzZGI2Li45ODhmYTYwIDEwMDY0NAotLS0gYS9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnZlcmlmaWNhdGlvblNlcnZpY2Uvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy92ZXJpZmljYXRpb25TZXJ2aWNlL3VpL2NvbW1hbmRzL0NoZWNrVmFsaWRhdGlvbkNvbnRyYWN0UHJvcGVydHlDb21tYW5kLmphdmEKKysrIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy52ZXJpZmljYXRpb25TZXJ2aWNlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdmVyaWZpY2F0aW9uU2VydmljZS91aS9jb21tYW5kcy9DaGVja1ZhbGlkYXRpb25Db250cmFjdFByb3BlcnR5Q29tbWFuZC5qYXZhCkBAIC0xLDkgKzEsOSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTcgRm9uZGF6aW9uZSBCcnVubyBLZXNzbGVyLg0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKiANCiAgKiBDb250cmlidXRvcnM6DQogICogICAgIEFsYmVydG8gRGViaWFzaSAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbg0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMudmVyaWZpY2F0aW9uU2VydmljZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3ZlcmlmaWNhdGlvblNlcnZpY2UvdWkvY29tbWFuZHMvQ29tcG9zaXRlQ29udHJhY3RJbXBsZW1lbnRhdGlvbkNvbW1hbmQuamF2YSBiL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMudmVyaWZpY2F0aW9uU2VydmljZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3ZlcmlmaWNhdGlvblNlcnZpY2UvdWkvY29tbWFuZHMvQ29tcG9zaXRlQ29udHJhY3RJbXBsZW1lbnRhdGlvbkNvbW1hbmQuamF2YQppbmRleCBjNDg5NWYyLi5mZGFiOTIzIDEwMDY0NAotLS0gYS9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnZlcmlmaWNhdGlvblNlcnZpY2Uvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy92ZXJpZmljYXRpb25TZXJ2aWNlL3VpL2NvbW1hbmRzL0NvbXBvc2l0ZUNvbnRyYWN0SW1wbGVtZW50YXRpb25Db21tYW5kLmphdmEKKysrIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy52ZXJpZmljYXRpb25TZXJ2aWNlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdmVyaWZpY2F0aW9uU2VydmljZS91aS9jb21tYW5kcy9Db21wb3NpdGVDb250cmFjdEltcGxlbWVudGF0aW9uQ29tbWFuZC5qYXZhCkBAIC0xLDkgKzEsOSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTggRm9uZGF6aW9uZSBCcnVubyBLZXNzbGVyLg0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKiAgDQogICogQ29udHJpYnV0b3JzOg0KICAqICAgQWxiZXJ0byBEZWJpYXNpIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy52ZXJpZmljYXRpb25TZXJ2aWNlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdmVyaWZpY2F0aW9uU2VydmljZS91aS9jb21tYW5kcy9Db250cmFjdEltcGxlbWVudGF0aW9uQ29tbWFuZC5qYXZhIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy52ZXJpZmljYXRpb25TZXJ2aWNlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdmVyaWZpY2F0aW9uU2VydmljZS91aS9jb21tYW5kcy9Db250cmFjdEltcGxlbWVudGF0aW9uQ29tbWFuZC5qYXZhCmluZGV4IDIyZDE2YjcuLjhhY2U5ZDEgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMudmVyaWZpY2F0aW9uU2VydmljZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3ZlcmlmaWNhdGlvblNlcnZpY2UvdWkvY29tbWFuZHMvQ29udHJhY3RJbXBsZW1lbnRhdGlvbkNvbW1hbmQuamF2YQorKysgYi9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnZlcmlmaWNhdGlvblNlcnZpY2Uvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy92ZXJpZmljYXRpb25TZXJ2aWNlL3VpL2NvbW1hbmRzL0NvbnRyYWN0SW1wbGVtZW50YXRpb25Db21tYW5kLmphdmEKQEAgLTEsOSArMSw5IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIENvcHlyaWdodCAoQykgMjAxNyBGb25kYXppb25lIEJydW5vIEtlc3NsZXIuDQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqIA0KICAqIENvbnRyaWJ1dG9yczoNCiAgKiAgICAgQWxiZXJ0byBEZWJpYXNpIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy52ZXJpZmljYXRpb25TZXJ2aWNlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdmVyaWZpY2F0aW9uU2VydmljZS91aS9jb21tYW5kcy9Db250cmFjdFJlZmluZW1lbnRDb21tYW5kLmphdmEgYi9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnZlcmlmaWNhdGlvblNlcnZpY2Uvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy92ZXJpZmljYXRpb25TZXJ2aWNlL3VpL2NvbW1hbmRzL0NvbnRyYWN0UmVmaW5lbWVudENvbW1hbmQuamF2YQppbmRleCBhYmVjNjkwLi5mMjEwMzdjIDEwMDY0NAotLS0gYS9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnZlcmlmaWNhdGlvblNlcnZpY2Uvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy92ZXJpZmljYXRpb25TZXJ2aWNlL3VpL2NvbW1hbmRzL0NvbnRyYWN0UmVmaW5lbWVudENvbW1hbmQuamF2YQorKysgYi9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnZlcmlmaWNhdGlvblNlcnZpY2Uvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy92ZXJpZmljYXRpb25TZXJ2aWNlL3VpL2NvbW1hbmRzL0NvbnRyYWN0UmVmaW5lbWVudENvbW1hbmQuamF2YQpAQCAtMSw5ICsxLDkgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogQ29weXJpZ2h0IChDKSAyMDE3IEZvbmRhemlvbmUgQnJ1bm8gS2Vzc2xlci4NCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICogDQogICogQ29udHJpYnV0b3JzOg0KICAqICAgICBBbGJlcnRvIERlYmlhc2kgLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24NCmRpZmYgLS1naXQgYS9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnZlcmlmaWNhdGlvblNlcnZpY2Uvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy92ZXJpZmljYXRpb25TZXJ2aWNlL3VpL2NvbW1hbmRzL0V4cG9ydE1vZGVsVG9GaWxlQ29tbWFuZC5qYXZhIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy52ZXJpZmljYXRpb25TZXJ2aWNlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdmVyaWZpY2F0aW9uU2VydmljZS91aS9jb21tYW5kcy9FeHBvcnRNb2RlbFRvRmlsZUNvbW1hbmQuamF2YQppbmRleCA4ZDlmNTRmLi43ZDQ5NWU2IDEwMDY0NAotLS0gYS9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnZlcmlmaWNhdGlvblNlcnZpY2Uvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy92ZXJpZmljYXRpb25TZXJ2aWNlL3VpL2NvbW1hbmRzL0V4cG9ydE1vZGVsVG9GaWxlQ29tbWFuZC5qYXZhCisrKyBiL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMudmVyaWZpY2F0aW9uU2VydmljZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3ZlcmlmaWNhdGlvblNlcnZpY2UvdWkvY29tbWFuZHMvRXhwb3J0TW9kZWxUb0ZpbGVDb21tYW5kLmphdmEKQEAgLTEsOSArMSw5IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIENvcHlyaWdodCAoQykgMjAxNyBGb25kYXppb25lIEJydW5vIEtlc3NsZXIuDQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqIA0KICAqIENvbnRyaWJ1dG9yczoNCiAgKiAgICAgQWxiZXJ0byBEZWJpYXNpIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy52ZXJpZmljYXRpb25TZXJ2aWNlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdmVyaWZpY2F0aW9uU2VydmljZS91aS9jb21tYW5kcy9Nb2RlbENoZWNraW5nQ29tbWFuZC5qYXZhIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy52ZXJpZmljYXRpb25TZXJ2aWNlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdmVyaWZpY2F0aW9uU2VydmljZS91aS9jb21tYW5kcy9Nb2RlbENoZWNraW5nQ29tbWFuZC5qYXZhCmluZGV4IDIzNmUwYjQuLjBkZDdkNWEgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMudmVyaWZpY2F0aW9uU2VydmljZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3ZlcmlmaWNhdGlvblNlcnZpY2UvdWkvY29tbWFuZHMvTW9kZWxDaGVja2luZ0NvbW1hbmQuamF2YQorKysgYi9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnZlcmlmaWNhdGlvblNlcnZpY2Uvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy92ZXJpZmljYXRpb25TZXJ2aWNlL3VpL2NvbW1hbmRzL01vZGVsQ2hlY2tpbmdDb21tYW5kLmphdmEKQEAgLTEsOSArMSw5IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIENvcHlyaWdodCAoQykgMjAxNyBGb25kYXppb25lIEJydW5vIEtlc3NsZXIuDQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqIA0KICAqIENvbnRyaWJ1dG9yczoNCiAgKiAgICAgQWxiZXJ0byBEZWJpYXNpIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy52ZXJpZmljYXRpb25TZXJ2aWNlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdmVyaWZpY2F0aW9uU2VydmljZS91aS9jb21tYW5kcy9kZWJ1Zy9DaGVja1ZhbGlkYXRpb25Qcm9wZXJ0eU9uRmlsZUNvbW1hbmQuamF2YSBiL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMudmVyaWZpY2F0aW9uU2VydmljZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3ZlcmlmaWNhdGlvblNlcnZpY2UvdWkvY29tbWFuZHMvZGVidWcvQ2hlY2tWYWxpZGF0aW9uUHJvcGVydHlPbkZpbGVDb21tYW5kLmphdmEKaW5kZXggNmQ3M2UyYi4uMThjZDRmZSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy52ZXJpZmljYXRpb25TZXJ2aWNlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdmVyaWZpY2F0aW9uU2VydmljZS91aS9jb21tYW5kcy9kZWJ1Zy9DaGVja1ZhbGlkYXRpb25Qcm9wZXJ0eU9uRmlsZUNvbW1hbmQuamF2YQorKysgYi9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnZlcmlmaWNhdGlvblNlcnZpY2Uvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy92ZXJpZmljYXRpb25TZXJ2aWNlL3VpL2NvbW1hbmRzL2RlYnVnL0NoZWNrVmFsaWRhdGlvblByb3BlcnR5T25GaWxlQ29tbWFuZC5qYXZhCkBAIC0xLDkgKzEsOSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTcgRm9uZGF6aW9uZSBCcnVubyBLZXNzbGVyLg0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKiANCiAgKiBDb250cmlidXRvcnM6DQogICogICAgIEFsYmVydG8gRGViaWFzaSAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbg0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMudmVyaWZpY2F0aW9uU2VydmljZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3ZlcmlmaWNhdGlvblNlcnZpY2UvdWkvY29tbWFuZHMvZGVidWcvQ29udHJhY3RJbXBsZW1lbnRhdGlvbk9uRmlsZUNvbW1hbmQuamF2YSBiL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMudmVyaWZpY2F0aW9uU2VydmljZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3ZlcmlmaWNhdGlvblNlcnZpY2UvdWkvY29tbWFuZHMvZGVidWcvQ29udHJhY3RJbXBsZW1lbnRhdGlvbk9uRmlsZUNvbW1hbmQuamF2YQppbmRleCA2Y2EyNTFlLi4wMDYzYzYxIDEwMDY0NAotLS0gYS9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnZlcmlmaWNhdGlvblNlcnZpY2Uvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy92ZXJpZmljYXRpb25TZXJ2aWNlL3VpL2NvbW1hbmRzL2RlYnVnL0NvbnRyYWN0SW1wbGVtZW50YXRpb25PbkZpbGVDb21tYW5kLmphdmEKKysrIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy52ZXJpZmljYXRpb25TZXJ2aWNlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdmVyaWZpY2F0aW9uU2VydmljZS91aS9jb21tYW5kcy9kZWJ1Zy9Db250cmFjdEltcGxlbWVudGF0aW9uT25GaWxlQ29tbWFuZC5qYXZhCkBAIC0xLDkgKzEsOSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTcgRm9uZGF6aW9uZSBCcnVubyBLZXNzbGVyLg0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKiANCiAgKiBDb250cmlidXRvcnM6DQogICogICAgIEFsYmVydG8gRGViaWFzaSAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbg0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMudmVyaWZpY2F0aW9uU2VydmljZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3ZlcmlmaWNhdGlvblNlcnZpY2UvdWkvY29tbWFuZHMvZGVidWcvQ29udHJhY3RSZWZpbmVtZW50T25GaWxlQ29tbWFuZC5qYXZhIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy52ZXJpZmljYXRpb25TZXJ2aWNlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdmVyaWZpY2F0aW9uU2VydmljZS91aS9jb21tYW5kcy9kZWJ1Zy9Db250cmFjdFJlZmluZW1lbnRPbkZpbGVDb21tYW5kLmphdmEKaW5kZXggNzA1YTllNi4uNDFkZTg4NiAxMDA2NDQKLS0tIGEvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy52ZXJpZmljYXRpb25TZXJ2aWNlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdmVyaWZpY2F0aW9uU2VydmljZS91aS9jb21tYW5kcy9kZWJ1Zy9Db250cmFjdFJlZmluZW1lbnRPbkZpbGVDb21tYW5kLmphdmEKKysrIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy52ZXJpZmljYXRpb25TZXJ2aWNlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdmVyaWZpY2F0aW9uU2VydmljZS91aS9jb21tYW5kcy9kZWJ1Zy9Db250cmFjdFJlZmluZW1lbnRPbkZpbGVDb21tYW5kLmphdmEKQEAgLTEsOSArMSw5IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIENvcHlyaWdodCAoQykgMjAxNyBGb25kYXppb25lIEJydW5vIEtlc3NsZXIuDQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqIA0KICAqIENvbnRyaWJ1dG9yczoNCiAgKiAgICAgQWxiZXJ0byBEZWJpYXNpIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy52ZXJpZmljYXRpb25TZXJ2aWNlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdmVyaWZpY2F0aW9uU2VydmljZS91aS9jb21tYW5kcy9kZWJ1Zy9Nb2RlbENoZWNraW5nT25GaWxlQ29tbWFuZC5qYXZhIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy52ZXJpZmljYXRpb25TZXJ2aWNlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdmVyaWZpY2F0aW9uU2VydmljZS91aS9jb21tYW5kcy9kZWJ1Zy9Nb2RlbENoZWNraW5nT25GaWxlQ29tbWFuZC5qYXZhCmluZGV4IDJmNTFhMjguLmNiNzJiNmIgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMudmVyaWZpY2F0aW9uU2VydmljZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3ZlcmlmaWNhdGlvblNlcnZpY2UvdWkvY29tbWFuZHMvZGVidWcvTW9kZWxDaGVja2luZ09uRmlsZUNvbW1hbmQuamF2YQorKysgYi9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnZlcmlmaWNhdGlvblNlcnZpY2Uvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy92ZXJpZmljYXRpb25TZXJ2aWNlL3VpL2NvbW1hbmRzL2RlYnVnL01vZGVsQ2hlY2tpbmdPbkZpbGVDb21tYW5kLmphdmEKQEAgLTEsOSArMSw5IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIENvcHlyaWdodCAoQykgMjAxNyBGb25kYXppb25lIEJydW5vIEtlc3NsZXIuDQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqIA0KICAqIENvbnRyaWJ1dG9yczoNCiAgKiAgICAgQWxiZXJ0byBEZWJpYXNpIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy52ZXJpZmljYXRpb25TZXJ2aWNlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdmVyaWZpY2F0aW9uU2VydmljZS91aS9jb21tYW5kcy9kZWJ1Zy9SdW50aW1lRXJyb3JzT25PU1NGaWxlQ29tbWFuZC5qYXZhIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy52ZXJpZmljYXRpb25TZXJ2aWNlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdmVyaWZpY2F0aW9uU2VydmljZS91aS9jb21tYW5kcy9kZWJ1Zy9SdW50aW1lRXJyb3JzT25PU1NGaWxlQ29tbWFuZC5qYXZhCmluZGV4IGJiZjVlYTUuLjk4NGI2MWUgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMudmVyaWZpY2F0aW9uU2VydmljZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3ZlcmlmaWNhdGlvblNlcnZpY2UvdWkvY29tbWFuZHMvZGVidWcvUnVudGltZUVycm9yc09uT1NTRmlsZUNvbW1hbmQuamF2YQorKysgYi9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnZlcmlmaWNhdGlvblNlcnZpY2Uvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy92ZXJpZmljYXRpb25TZXJ2aWNlL3VpL2NvbW1hbmRzL2RlYnVnL1J1bnRpbWVFcnJvcnNPbk9TU0ZpbGVDb21tYW5kLmphdmEKQEAgLTEsOSArMSw5IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIENvcHlyaWdodCAoQykgMjAxNyBGb25kYXppb25lIEJydW5vIEtlc3NsZXIuDQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqIA0KICAqIENvbnRyaWJ1dG9yczoNCiAgKiAgICAgQWxiZXJ0byBEZWJpYXNpIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy52ZXJpZmljYXRpb25TZXJ2aWNlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdmVyaWZpY2F0aW9uU2VydmljZS91aS9jb21tYW5kcy9kZWJ1Zy9SdW50aW1lRXJyb3JzT25TTVZGaWxlQ29tbWFuZC5qYXZhIGIvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy52ZXJpZmljYXRpb25TZXJ2aWNlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdmVyaWZpY2F0aW9uU2VydmljZS91aS9jb21tYW5kcy9kZWJ1Zy9SdW50aW1lRXJyb3JzT25TTVZGaWxlQ29tbWFuZC5qYXZhCmluZGV4IDRkNjdhNzcuLmU2M2IzOWQgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMudmVyaWZpY2F0aW9uU2VydmljZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3ZlcmlmaWNhdGlvblNlcnZpY2UvdWkvY29tbWFuZHMvZGVidWcvUnVudGltZUVycm9yc09uU01WRmlsZUNvbW1hbmQuamF2YQorKysgYi9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnZlcmlmaWNhdGlvblNlcnZpY2Uvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy92ZXJpZmljYXRpb25TZXJ2aWNlL3VpL2NvbW1hbmRzL2RlYnVnL1J1bnRpbWVFcnJvcnNPblNNVkZpbGVDb21tYW5kLmphdmEKQEAgLTEsOSArMSw5IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIENvcHlyaWdodCAoQykgMjAxNyBGb25kYXppb25lIEJydW5vIEtlc3NsZXIuDQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqIA0KICAqIENvbnRyaWJ1dG9yczoNCiAgKiAgICAgQWxiZXJ0byBEZWJpYXNpIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy52ZXJpZmljYXRpb25TZXJ2aWNlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdmVyaWZpY2F0aW9uU2VydmljZS91aS9zZXJ2aWNlcy9FeGVjQ29tbWFuZFNlcnZpY2UuamF2YSBiL3BsdWdpbnMvY29udHJhY3RzL29yZy5wb2xhcnN5cy5jaGVzcy5jb250cmFjdHMudmVyaWZpY2F0aW9uU2VydmljZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3ZlcmlmaWNhdGlvblNlcnZpY2UvdWkvc2VydmljZXMvRXhlY0NvbW1hbmRTZXJ2aWNlLmphdmEKaW5kZXggMTYwODhlMy4uZTViOTdjMCAxMDA2NDQKLS0tIGEvcGx1Z2lucy9jb250cmFjdHMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnRyYWN0cy52ZXJpZmljYXRpb25TZXJ2aWNlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdmVyaWZpY2F0aW9uU2VydmljZS91aS9zZXJ2aWNlcy9FeGVjQ29tbWFuZFNlcnZpY2UuamF2YQorKysgYi9wbHVnaW5zL2NvbnRyYWN0cy9vcmcucG9sYXJzeXMuY2hlc3MuY29udHJhY3RzLnZlcmlmaWNhdGlvblNlcnZpY2Uvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy92ZXJpZmljYXRpb25TZXJ2aWNlL3VpL3NlcnZpY2VzL0V4ZWNDb21tYW5kU2VydmljZS5qYXZhCkBAIC0xLDkgKzEsOSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTggRm9uZGF6aW9uZSBCcnVubyBLZXNzbGVyLg0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKiAgDQogICogQ29udHJpYnV0b3JzOg0KICAqICAgQWxiZXJ0byBEZWJpYXNpIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5GUFRDMkZMQUJlaGF2aW9yL2Fib3V0Lmh0bWwgYi9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLkZQVEMyRkxBQmVoYXZpb3IvYWJvdXQuaHRtbAppbmRleCAyMDkxMDMwLi4xNjRmNzgxIDEwMDY0NAotLS0gYS9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLkZQVEMyRkxBQmVoYXZpb3IvYWJvdXQuaHRtbAorKysgYi9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLkZQVEMyRkxBQmVoYXZpb3IvYWJvdXQuaHRtbApAQCAtMSwyOCArMSwzNiBAQAotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgU3RyaWN0Ly9FTiINCi0gICAgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXN0cmljdC5kdGQiPg0KLTxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4NCi08aGVhZD4NCi08bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xIi8+DQotPHRpdGxlPkFib3V0PC90aXRsZT4NCi08L2hlYWQ+DQotPGJvZHkgbGFuZz0iRU4tVVMiPg0KLTxoMj5BYm91dCBUaGlzIENvbnRlbnQ8L2gyPg0KLSANCi08cD5Ob3ZlbWJlciAxNCwgMjAwODwvcD4JDQotPGgzPkxpY2Vuc2U8L2gzPg0KLQ0KLTxwPlRoZSBFY2xpcHNlIEZvdW5kYXRpb24gbWFrZXMgYXZhaWxhYmxlIGFsbCBjb250ZW50IGluIHRoaXMgcGx1Zy1pbiAoJnF1b3Q7Q29udGVudCZxdW90OykuICBVbmxlc3Mgb3RoZXJ3aXNlIA0KLWluZGljYXRlZCBiZWxvdywgdGhlIENvbnRlbnQgaXMgcHJvdmlkZWQgdG8geW91IHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUNCi1FY2xpcHNlIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMS4wICgmcXVvdDtFUEwmcXVvdDspLiAgQSBjb3B5IG9mIHRoZSBFUEwgaXMgYXZhaWxhYmxlIA0KLWF0IDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbDwvYT4uDQotRm9yIHB1cnBvc2VzIG9mIHRoZSBFUEwsICZxdW90O1Byb2dyYW0mcXVvdDsgd2lsbCBtZWFuIHRoZSBDb250ZW50LjwvcD4NCi0NCi08cD5JZiB5b3UgZGlkIG5vdCByZWNlaXZlIHRoaXMgQ29udGVudCBkaXJlY3RseSBmcm9tIHRoZSBFY2xpcHNlIEZvdW5kYXRpb24sIHRoZSBDb250ZW50IGlzIA0KLWJlaW5nIHJlZGlzdHJpYnV0ZWQgYnkgYW5vdGhlciBwYXJ0eSAoJnF1b3Q7UmVkaXN0cmlidXRvciZxdW90OykgYW5kIGRpZmZlcmVudCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBtYXkNCi1hcHBseSB0byB5b3VyIHVzZSBvZiBhbnkgb2JqZWN0IGNvZGUgaW4gdGhlIENvbnRlbnQuICBDaGVjayB0aGUgUmVkaXN0cmlidXRvcidzIGxpY2Vuc2UgdGhhdCB3YXMgDQotcHJvdmlkZWQgd2l0aCB0aGUgQ29udGVudC4gIElmIG5vIHN1Y2ggbGljZW5zZSBleGlzdHMsIGNvbnRhY3QgdGhlIFJlZGlzdHJpYnV0b3IuICBVbmxlc3Mgb3RoZXJ3aXNlDQotaW5kaWNhdGVkIGJlbG93LCB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVQTCBzdGlsbCBhcHBseSB0byBhbnkgc291cmNlIGNvZGUgaW4gdGhlIENvbnRlbnQNCi1hbmQgc3VjaCBzb3VyY2UgY29kZSBtYXkgYmUgb2J0YWluZWQgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZyI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZzwvYT4uPC9wPg0KLQ0KLTwvYm9keT4NCis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIgorICAgICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS1zdHJpY3QuZHRkIj4KKzxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMSIgLz4KKzx0aXRsZT5BYm91dDwvdGl0bGU+Cis8L2hlYWQ+Cis8Ym9keSBsYW5nPSJFTi1VUyI+CisJPGgyPkFib3V0IFRoaXMgQ29udGVudDwvaDI+CisKKwk8cD5Ob3ZlbWJlciAzMCwgMjAxNzwvcD4KKwk8aDM+TGljZW5zZTwvaDM+CisKKwk8cD4KKwkJVGhlIEVjbGlwc2UgRm91bmRhdGlvbiBtYWtlcyBhdmFpbGFibGUgYWxsIGNvbnRlbnQgaW4gdGhpcyBwbHVnLWluCisJCSgmcXVvdDtDb250ZW50JnF1b3Q7KS4gVW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQgYmVsb3csIHRoZSBDb250ZW50CisJCWlzIHByb3ZpZGVkIHRvIHlvdSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVjbGlwc2UKKwkJUHVibGljIExpY2Vuc2UgVmVyc2lvbiAyLjAgKCZxdW90O0VQTCZxdW90OykuIEEgY29weSBvZiB0aGUgRVBMIGlzCisJCWF2YWlsYWJsZSBhdCA8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAiPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMDwvYT4uCisJCUZvciBwdXJwb3NlcyBvZiB0aGUgRVBMLCAmcXVvdDtQcm9ncmFtJnF1b3Q7IHdpbGwgbWVhbiB0aGUgQ29udGVudC4KKwk8L3A+CisKKwk8cD4KKwkJSWYgeW91IGRpZCBub3QgcmVjZWl2ZSB0aGlzIENvbnRlbnQgZGlyZWN0bHkgZnJvbSB0aGUgRWNsaXBzZQorCQlGb3VuZGF0aW9uLCB0aGUgQ29udGVudCBpcyBiZWluZyByZWRpc3RyaWJ1dGVkIGJ5IGFub3RoZXIgcGFydHkKKwkJKCZxdW90O1JlZGlzdHJpYnV0b3ImcXVvdDspIGFuZCBkaWZmZXJlbnQgdGVybXMgYW5kIGNvbmRpdGlvbnMgbWF5CisJCWFwcGx5IHRvIHlvdXIgdXNlIG9mIGFueSBvYmplY3QgY29kZSBpbiB0aGUgQ29udGVudC4gQ2hlY2sgdGhlCisJCVJlZGlzdHJpYnV0b3IncyBsaWNlbnNlIHRoYXQgd2FzIHByb3ZpZGVkIHdpdGggdGhlIENvbnRlbnQuIElmIG5vIHN1Y2gKKwkJbGljZW5zZSBleGlzdHMsIGNvbnRhY3QgdGhlIFJlZGlzdHJpYnV0b3IuIFVubGVzcyBvdGhlcndpc2UgaW5kaWNhdGVkCisJCWJlbG93LCB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVQTCBzdGlsbCBhcHBseSB0byBhbnkgc291cmNlCisJCWNvZGUgaW4gdGhlIENvbnRlbnQgYW5kIHN1Y2ggc291cmNlIGNvZGUgbWF5IGJlIG9idGFpbmVkIGF0IDxhCisJCQlocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnLyI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZzwvYT4uCisJPC9wPgorCis8L2JvZHk+CiA8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mYXVsdFRyZWVHZW5lcmF0b3IvYWJvdXQuaHRtbCBiL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmF1bHRUcmVlR2VuZXJhdG9yL2Fib3V0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTY0Zjc4MQotLS0gL2Rldi9udWxsCisrKyBiL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmF1bHRUcmVlR2VuZXJhdG9yL2Fib3V0Lmh0bWwKQEAgLTAsMCArMSwzNiBAQAorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgU3RyaWN0Ly9FTiIKKyAgICAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+Cis8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiIC8+Cis8dGl0bGU+QWJvdXQ8L3RpdGxlPgorPC9oZWFkPgorPGJvZHkgbGFuZz0iRU4tVVMiPgorCTxoMj5BYm91dCBUaGlzIENvbnRlbnQ8L2gyPgorCisJPHA+Tm92ZW1iZXIgMzAsIDIwMTc8L3A+CisJPGgzPkxpY2Vuc2U8L2gzPgorCisJPHA+CisJCVRoZSBFY2xpcHNlIEZvdW5kYXRpb24gbWFrZXMgYXZhaWxhYmxlIGFsbCBjb250ZW50IGluIHRoaXMgcGx1Zy1pbgorCQkoJnF1b3Q7Q29udGVudCZxdW90OykuIFVubGVzcyBvdGhlcndpc2UgaW5kaWNhdGVkIGJlbG93LCB0aGUgQ29udGVudAorCQlpcyBwcm92aWRlZCB0byB5b3UgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFY2xpcHNlCisJCVB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMi4wICgmcXVvdDtFUEwmcXVvdDspLiBBIGNvcHkgb2YgdGhlIEVQTCBpcworCQlhdmFpbGFibGUgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjA8L2E+LgorCQlGb3IgcHVycG9zZXMgb2YgdGhlIEVQTCwgJnF1b3Q7UHJvZ3JhbSZxdW90OyB3aWxsIG1lYW4gdGhlIENvbnRlbnQuCisJPC9wPgorCisJPHA+CisJCUlmIHlvdSBkaWQgbm90IHJlY2VpdmUgdGhpcyBDb250ZW50IGRpcmVjdGx5IGZyb20gdGhlIEVjbGlwc2UKKwkJRm91bmRhdGlvbiwgdGhlIENvbnRlbnQgaXMgYmVpbmcgcmVkaXN0cmlidXRlZCBieSBhbm90aGVyIHBhcnR5CisJCSgmcXVvdDtSZWRpc3RyaWJ1dG9yJnF1b3Q7KSBhbmQgZGlmZmVyZW50IHRlcm1zIGFuZCBjb25kaXRpb25zIG1heQorCQlhcHBseSB0byB5b3VyIHVzZSBvZiBhbnkgb2JqZWN0IGNvZGUgaW4gdGhlIENvbnRlbnQuIENoZWNrIHRoZQorCQlSZWRpc3RyaWJ1dG9yJ3MgbGljZW5zZSB0aGF0IHdhcyBwcm92aWRlZCB3aXRoIHRoZSBDb250ZW50LiBJZiBubyBzdWNoCisJCWxpY2Vuc2UgZXhpc3RzLCBjb250YWN0IHRoZSBSZWRpc3RyaWJ1dG9yLiBVbmxlc3Mgb3RoZXJ3aXNlIGluZGljYXRlZAorCQliZWxvdywgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFUEwgc3RpbGwgYXBwbHkgdG8gYW55IHNvdXJjZQorCQljb2RlIGluIHRoZSBDb250ZW50IGFuZCBzdWNoIHNvdXJjZSBjb2RlIG1heSBiZSBvYnRhaW5lZCBhdCA8YQorCQkJaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy8iPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmc8L2E+LgorCTwvcD4KKworPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmVhdHVyZS9hYm91dC5odG1sIGIvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mZWF0dXJlL2Fib3V0Lmh0bWwKaW5kZXggMjA5MTAzMC4uMTY0Zjc4MSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mZWF0dXJlL2Fib3V0Lmh0bWwKKysrIGIvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mZWF0dXJlL2Fib3V0Lmh0bWwKQEAgLTEsMjggKzEsMzYgQEAKLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFN0cmljdC8vRU4iDQotICAgICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS1zdHJpY3QuZHRkIj4NCi08aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+DQotPGhlYWQ+DQotPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMSIvPg0KLTx0aXRsZT5BYm91dDwvdGl0bGU+DQotPC9oZWFkPg0KLTxib2R5IGxhbmc9IkVOLVVTIj4NCi08aDI+QWJvdXQgVGhpcyBDb250ZW50PC9oMj4NCi0gDQotPHA+Tm92ZW1iZXIgMTQsIDIwMDg8L3A+CQ0KLTxoMz5MaWNlbnNlPC9oMz4NCi0NCi08cD5UaGUgRWNsaXBzZSBGb3VuZGF0aW9uIG1ha2VzIGF2YWlsYWJsZSBhbGwgY29udGVudCBpbiB0aGlzIHBsdWctaW4gKCZxdW90O0NvbnRlbnQmcXVvdDspLiAgVW5sZXNzIG90aGVyd2lzZSANCi1pbmRpY2F0ZWQgYmVsb3csIHRoZSBDb250ZW50IGlzIHByb3ZpZGVkIHRvIHlvdSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlDQotRWNsaXBzZSBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDEuMCAoJnF1b3Q7RVBMJnF1b3Q7KS4gIEEgY29weSBvZiB0aGUgRVBMIGlzIGF2YWlsYWJsZSANCi1hdCA8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWw8L2E+Lg0KLUZvciBwdXJwb3NlcyBvZiB0aGUgRVBMLCAmcXVvdDtQcm9ncmFtJnF1b3Q7IHdpbGwgbWVhbiB0aGUgQ29udGVudC48L3A+DQotDQotPHA+SWYgeW91IGRpZCBub3QgcmVjZWl2ZSB0aGlzIENvbnRlbnQgZGlyZWN0bHkgZnJvbSB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uLCB0aGUgQ29udGVudCBpcyANCi1iZWluZyByZWRpc3RyaWJ1dGVkIGJ5IGFub3RoZXIgcGFydHkgKCZxdW90O1JlZGlzdHJpYnV0b3ImcXVvdDspIGFuZCBkaWZmZXJlbnQgdGVybXMgYW5kIGNvbmRpdGlvbnMgbWF5DQotYXBwbHkgdG8geW91ciB1c2Ugb2YgYW55IG9iamVjdCBjb2RlIGluIHRoZSBDb250ZW50LiAgQ2hlY2sgdGhlIFJlZGlzdHJpYnV0b3IncyBsaWNlbnNlIHRoYXQgd2FzIA0KLXByb3ZpZGVkIHdpdGggdGhlIENvbnRlbnQuICBJZiBubyBzdWNoIGxpY2Vuc2UgZXhpc3RzLCBjb250YWN0IHRoZSBSZWRpc3RyaWJ1dG9yLiAgVW5sZXNzIG90aGVyd2lzZQ0KLWluZGljYXRlZCBiZWxvdywgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFUEwgc3RpbGwgYXBwbHkgdG8gYW55IHNvdXJjZSBjb2RlIGluIHRoZSBDb250ZW50DQotYW5kIHN1Y2ggc291cmNlIGNvZGUgbWF5IGJlIG9idGFpbmVkIGF0IDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmciPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmc8L2E+LjwvcD4NCi0NCi08L2JvZHk+DQorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgU3RyaWN0Ly9FTiIKKyAgICAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+Cis8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiIC8+Cis8dGl0bGU+QWJvdXQ8L3RpdGxlPgorPC9oZWFkPgorPGJvZHkgbGFuZz0iRU4tVVMiPgorCTxoMj5BYm91dCBUaGlzIENvbnRlbnQ8L2gyPgorCisJPHA+Tm92ZW1iZXIgMzAsIDIwMTc8L3A+CisJPGgzPkxpY2Vuc2U8L2gzPgorCisJPHA+CisJCVRoZSBFY2xpcHNlIEZvdW5kYXRpb24gbWFrZXMgYXZhaWxhYmxlIGFsbCBjb250ZW50IGluIHRoaXMgcGx1Zy1pbgorCQkoJnF1b3Q7Q29udGVudCZxdW90OykuIFVubGVzcyBvdGhlcndpc2UgaW5kaWNhdGVkIGJlbG93LCB0aGUgQ29udGVudAorCQlpcyBwcm92aWRlZCB0byB5b3UgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFY2xpcHNlCisJCVB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMi4wICgmcXVvdDtFUEwmcXVvdDspLiBBIGNvcHkgb2YgdGhlIEVQTCBpcworCQlhdmFpbGFibGUgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjA8L2E+LgorCQlGb3IgcHVycG9zZXMgb2YgdGhlIEVQTCwgJnF1b3Q7UHJvZ3JhbSZxdW90OyB3aWxsIG1lYW4gdGhlIENvbnRlbnQuCisJPC9wPgorCisJPHA+CisJCUlmIHlvdSBkaWQgbm90IHJlY2VpdmUgdGhpcyBDb250ZW50IGRpcmVjdGx5IGZyb20gdGhlIEVjbGlwc2UKKwkJRm91bmRhdGlvbiwgdGhlIENvbnRlbnQgaXMgYmVpbmcgcmVkaXN0cmlidXRlZCBieSBhbm90aGVyIHBhcnR5CisJCSgmcXVvdDtSZWRpc3RyaWJ1dG9yJnF1b3Q7KSBhbmQgZGlmZmVyZW50IHRlcm1zIGFuZCBjb25kaXRpb25zIG1heQorCQlhcHBseSB0byB5b3VyIHVzZSBvZiBhbnkgb2JqZWN0IGNvZGUgaW4gdGhlIENvbnRlbnQuIENoZWNrIHRoZQorCQlSZWRpc3RyaWJ1dG9yJ3MgbGljZW5zZSB0aGF0IHdhcyBwcm92aWRlZCB3aXRoIHRoZSBDb250ZW50LiBJZiBubyBzdWNoCisJCWxpY2Vuc2UgZXhpc3RzLCBjb250YWN0IHRoZSBSZWRpc3RyaWJ1dG9yLiBVbmxlc3Mgb3RoZXJ3aXNlIGluZGljYXRlZAorCQliZWxvdywgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFUEwgc3RpbGwgYXBwbHkgdG8gYW55IHNvdXJjZQorCQljb2RlIGluIHRoZSBDb250ZW50IGFuZCBzdWNoIHNvdXJjZSBjb2RlIG1heSBiZSBvYnRhaW5lZCBhdCA8YQorCQkJaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy8iPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmc8L2E+LgorCTwvcD4KKworPC9ib2R5PgogPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxhbW0vYWJvdXQuaHRtbCBiL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxhbW0vYWJvdXQuaHRtbAppbmRleCAyMDkxMDMwLi4xNjRmNzgxIDEwMDY0NAotLS0gYS9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYW1tL2Fib3V0Lmh0bWwKKysrIGIvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGFtbS9hYm91dC5odG1sCkBAIC0xLDI4ICsxLDM2IEBACi08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIg0KLSAgICAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+DQotPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPg0KLTxoZWFkPg0KLTxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiLz4NCi08dGl0bGU+QWJvdXQ8L3RpdGxlPg0KLTwvaGVhZD4NCi08Ym9keSBsYW5nPSJFTi1VUyI+DQotPGgyPkFib3V0IFRoaXMgQ29udGVudDwvaDI+DQotIA0KLTxwPk5vdmVtYmVyIDE0LCAyMDA4PC9wPgkNCi08aDM+TGljZW5zZTwvaDM+DQotDQotPHA+VGhlIEVjbGlwc2UgRm91bmRhdGlvbiBtYWtlcyBhdmFpbGFibGUgYWxsIGNvbnRlbnQgaW4gdGhpcyBwbHVnLWluICgmcXVvdDtDb250ZW50JnF1b3Q7KS4gIFVubGVzcyBvdGhlcndpc2UgDQotaW5kaWNhdGVkIGJlbG93LCB0aGUgQ29udGVudCBpcyBwcm92aWRlZCB0byB5b3UgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZQ0KLUVjbGlwc2UgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAxLjAgKCZxdW90O0VQTCZxdW90OykuICBBIGNvcHkgb2YgdGhlIEVQTCBpcyBhdmFpbGFibGUgDQotYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwiPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sPC9hPi4NCi1Gb3IgcHVycG9zZXMgb2YgdGhlIEVQTCwgJnF1b3Q7UHJvZ3JhbSZxdW90OyB3aWxsIG1lYW4gdGhlIENvbnRlbnQuPC9wPg0KLQ0KLTxwPklmIHlvdSBkaWQgbm90IHJlY2VpdmUgdGhpcyBDb250ZW50IGRpcmVjdGx5IGZyb20gdGhlIEVjbGlwc2UgRm91bmRhdGlvbiwgdGhlIENvbnRlbnQgaXMgDQotYmVpbmcgcmVkaXN0cmlidXRlZCBieSBhbm90aGVyIHBhcnR5ICgmcXVvdDtSZWRpc3RyaWJ1dG9yJnF1b3Q7KSBhbmQgZGlmZmVyZW50IHRlcm1zIGFuZCBjb25kaXRpb25zIG1heQ0KLWFwcGx5IHRvIHlvdXIgdXNlIG9mIGFueSBvYmplY3QgY29kZSBpbiB0aGUgQ29udGVudC4gIENoZWNrIHRoZSBSZWRpc3RyaWJ1dG9yJ3MgbGljZW5zZSB0aGF0IHdhcyANCi1wcm92aWRlZCB3aXRoIHRoZSBDb250ZW50LiAgSWYgbm8gc3VjaCBsaWNlbnNlIGV4aXN0cywgY29udGFjdCB0aGUgUmVkaXN0cmlidXRvci4gIFVubGVzcyBvdGhlcndpc2UNCi1pbmRpY2F0ZWQgYmVsb3csIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRVBMIHN0aWxsIGFwcGx5IHRvIGFueSBzb3VyY2UgY29kZSBpbiB0aGUgQ29udGVudA0KLWFuZCBzdWNoIHNvdXJjZSBjb2RlIG1heSBiZSBvYnRhaW5lZCBhdCA8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnPC9hPi48L3A+DQotDQotPC9ib2R5Pg0KKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFN0cmljdC8vRU4iCisgICAgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXN0cmljdC5kdGQiPgorPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xIiAvPgorPHRpdGxlPkFib3V0PC90aXRsZT4KKzwvaGVhZD4KKzxib2R5IGxhbmc9IkVOLVVTIj4KKwk8aDI+QWJvdXQgVGhpcyBDb250ZW50PC9oMj4KKworCTxwPk5vdmVtYmVyIDMwLCAyMDE3PC9wPgorCTxoMz5MaWNlbnNlPC9oMz4KKworCTxwPgorCQlUaGUgRWNsaXBzZSBGb3VuZGF0aW9uIG1ha2VzIGF2YWlsYWJsZSBhbGwgY29udGVudCBpbiB0aGlzIHBsdWctaW4KKwkJKCZxdW90O0NvbnRlbnQmcXVvdDspLiBVbmxlc3Mgb3RoZXJ3aXNlIGluZGljYXRlZCBiZWxvdywgdGhlIENvbnRlbnQKKwkJaXMgcHJvdmlkZWQgdG8geW91IHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRWNsaXBzZQorCQlQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDIuMCAoJnF1b3Q7RVBMJnF1b3Q7KS4gQSBjb3B5IG9mIHRoZSBFUEwgaXMKKwkJYXZhaWxhYmxlIGF0IDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMCI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wPC9hPi4KKwkJRm9yIHB1cnBvc2VzIG9mIHRoZSBFUEwsICZxdW90O1Byb2dyYW0mcXVvdDsgd2lsbCBtZWFuIHRoZSBDb250ZW50LgorCTwvcD4KKworCTxwPgorCQlJZiB5b3UgZGlkIG5vdCByZWNlaXZlIHRoaXMgQ29udGVudCBkaXJlY3RseSBmcm9tIHRoZSBFY2xpcHNlCisJCUZvdW5kYXRpb24sIHRoZSBDb250ZW50IGlzIGJlaW5nIHJlZGlzdHJpYnV0ZWQgYnkgYW5vdGhlciBwYXJ0eQorCQkoJnF1b3Q7UmVkaXN0cmlidXRvciZxdW90OykgYW5kIGRpZmZlcmVudCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBtYXkKKwkJYXBwbHkgdG8geW91ciB1c2Ugb2YgYW55IG9iamVjdCBjb2RlIGluIHRoZSBDb250ZW50LiBDaGVjayB0aGUKKwkJUmVkaXN0cmlidXRvcidzIGxpY2Vuc2UgdGhhdCB3YXMgcHJvdmlkZWQgd2l0aCB0aGUgQ29udGVudC4gSWYgbm8gc3VjaAorCQlsaWNlbnNlIGV4aXN0cywgY29udGFjdCB0aGUgUmVkaXN0cmlidXRvci4gVW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQKKwkJYmVsb3csIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRVBMIHN0aWxsIGFwcGx5IHRvIGFueSBzb3VyY2UKKwkJY29kZSBpbiB0aGUgQ29udGVudCBhbmQgc3VjaCBzb3VyY2UgY29kZSBtYXkgYmUgb2J0YWluZWQgYXQgPGEKKwkJCWhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnPC9hPi4KKwk8L3A+CisKKzwvYm9keT4KIDwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYW1tL2J1aWxkLnByb3BlcnRpZXMgYi9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYW1tL2J1aWxkLnByb3BlcnRpZXMKaW5kZXggZjY5YWMwMS4uN2U4MWIxMyAxMDA2NDQKLS0tIGEvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGFtbS9idWlsZC5wcm9wZXJ0aWVzCisrKyBiL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxhbW0vYnVpbGQucHJvcGVydGllcwpAQCAtOCw3ICs4LDcgQEAKICMgIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCiAjICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlDQogIyAgdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSMgIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorIyAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQogIw0KIA0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxhbW0vcGx1Z2luLnByb3BlcnRpZXMgYi9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYW1tL3BsdWdpbi5wcm9wZXJ0aWVzCmluZGV4IGMzMDIzMTIuLmQ4M2NhMGYgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxhbW0vcGx1Z2luLnByb3BlcnRpZXMKKysrIGIvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGFtbS9wbHVnaW4ucHJvcGVydGllcwpAQCAtOCw3ICs4LDcgQEAKICMgIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCiAjICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlDQogIyAgdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSMgIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorIyAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQogIw0KIA0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxhbW0vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxhbW0vQUNJRGF2b2lkYWJsZS5qYXZhIGIvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGFtbS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGFtbS9BQ0lEYXZvaWRhYmxlLmphdmEKaW5kZXggNTU3ODgxYi4uZDc2MmU4NCAxMDA2NDQKLS0tIGEvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGFtbS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGFtbS9BQ0lEYXZvaWRhYmxlLmphdmEKKysrIGIvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGFtbS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGFtbS9BQ0lEYXZvaWRhYmxlLmphdmEKQEAgLTgsNyArOCw3IEBACiAgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KICAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlDQogICogIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCiBwYWNrYWdlIG9yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxhbW07DQogDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGFtbS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGFtbS9BQ0lEbWl0aWdhdGlvbi5qYXZhIGIvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGFtbS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGFtbS9BQ0lEbWl0aWdhdGlvbi5qYXZhCmluZGV4IGYwMDM1MTYuLjFkMjJmZjUgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxhbW0vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxhbW0vQUNJRG1pdGlnYXRpb24uamF2YQorKysgYi9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYW1tL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYW1tL0FDSURtaXRpZ2F0aW9uLmphdmEKQEAgLTgsNyArOCw3IEBACiAgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KICAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlDQogICogIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCiBwYWNrYWdlIG9yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxhbW07DQogDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGFtbS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGFtbS9Db21wb25lbnQuamF2YSBiL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxhbW0vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxhbW0vQ29tcG9uZW50LmphdmEKaW5kZXggNTY0ZjYzYS4uMWRmYzU2OCAxMDA2NDQKLS0tIGEvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGFtbS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGFtbS9Db21wb25lbnQuamF2YQorKysgYi9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYW1tL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYW1tL0NvbXBvbmVudC5qYXZhCkBAIC04LDcgKzgsNyBAQAogICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCiAgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZQ0KICAqICB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQogcGFja2FnZSBvcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYW1tOw0KIA0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxhbW0vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxhbW0vQ29tcG9zaXRlQ29tcG9uZW50LmphdmEgYi9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYW1tL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYW1tL0NvbXBvc2l0ZUNvbXBvbmVudC5qYXZhCmluZGV4IDM0NGVhMTkuLmI2YjZkODIgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxhbW0vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxhbW0vQ29tcG9zaXRlQ29tcG9uZW50LmphdmEKKysrIGIvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGFtbS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGFtbS9Db21wb3NpdGVDb21wb25lbnQuamF2YQpAQCAtOCw3ICs4LDcgQEAKICAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQogICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UNCiAgKiAgdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KIHBhY2thZ2Ugb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGFtbTsNCiANCmRpZmYgLS1naXQgYS9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYW1tL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYW1tL0Nvbm5lY3Rpb24uamF2YSBiL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxhbW0vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxhbW0vQ29ubmVjdGlvbi5qYXZhCmluZGV4IGJiNTZlOGYuLjYyMjY4MWMgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxhbW0vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxhbW0vQ29ubmVjdGlvbi5qYXZhCisrKyBiL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxhbW0vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxhbW0vQ29ubmVjdGlvbi5qYXZhCkBAIC04LDcgKzgsNyBAQAogICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCiAgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZQ0KICAqICB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQogcGFja2FnZSBvcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYW1tOw0KIA0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxhbW0vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxhbW0vRXhwcmVzc2lvbi5qYXZhIGIvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGFtbS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGFtbS9FeHByZXNzaW9uLmphdmEKaW5kZXggMzYwZmNhZS4uYjVhZTBmMCAxMDA2NDQKLS0tIGEvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGFtbS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGFtbS9FeHByZXNzaW9uLmphdmEKKysrIGIvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGFtbS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGFtbS9FeHByZXNzaW9uLmphdmEKQEAgLTgsNyArOCw3IEBACiAgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KICAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlDQogICogIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCiBwYWNrYWdlIG9yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxhbW07DQogDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGFtbS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGFtbS9GYWlsdXJlLmphdmEgYi9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYW1tL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYW1tL0ZhaWx1cmUuamF2YQppbmRleCBjMmNkN2ZmLi5jNTgwYjcyIDEwMDY0NAotLS0gYS9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYW1tL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYW1tL0ZhaWx1cmUuamF2YQorKysgYi9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYW1tL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYW1tL0ZhaWx1cmUuamF2YQpAQCAtOCw3ICs4LDcgQEAKICAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQogICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UNCiAgKiAgdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KIHBhY2thZ2Ugb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGFtbTsNCiANCmRpZmYgLS1naXQgYS9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYW1tL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYW1tL0ZhaWx1cmVUeXBlcy9BX2F2b2lkYWJsZS5qYXZhIGIvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGFtbS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGFtbS9GYWlsdXJlVHlwZXMvQV9hdm9pZGFibGUuamF2YQppbmRleCBmNjliZTZjLi43NTk2M2YyIDEwMDY0NAotLS0gYS9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYW1tL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYW1tL0ZhaWx1cmVUeXBlcy9BX2F2b2lkYWJsZS5qYXZhCisrKyBiL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxhbW0vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxhbW0vRmFpbHVyZVR5cGVzL0FfYXZvaWRhYmxlLmphdmEKQEAgLTgsNyArOCw3IEBACiAgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KICAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlDQogICogIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCiBwYWNrYWdlIG9yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxhbW0uRmFpbHVyZVR5cGVzOw0KIA0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxhbW0vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxhbW0vRmFpbHVyZVR5cGVzL0FfbWl0aWdhdGlvbi5qYXZhIGIvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGFtbS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGFtbS9GYWlsdXJlVHlwZXMvQV9taXRpZ2F0aW9uLmphdmEKaW5kZXggOTE4ZmFiNi4uZjljYTc5ZSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGFtbS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGFtbS9GYWlsdXJlVHlwZXMvQV9taXRpZ2F0aW9uLmphdmEKKysrIGIvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGFtbS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGFtbS9GYWlsdXJlVHlwZXMvQV9taXRpZ2F0aW9uLmphdmEKQEAgLTgsNyArOCw3IEBACiAgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KICAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlDQogICogIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCiBwYWNrYWdlIG9yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxhbW0uRmFpbHVyZVR5cGVzOw0KIA0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxhbW0vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxhbW0vRmFpbHVyZVR5cGVzL0NfYXZvaWRhYmxlLmphdmEgYi9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYW1tL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYW1tL0ZhaWx1cmVUeXBlcy9DX2F2b2lkYWJsZS5qYXZhCmluZGV4IDEzMWU2ZTcuLmZkNGE4MTAgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxhbW0vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxhbW0vRmFpbHVyZVR5cGVzL0NfYXZvaWRhYmxlLmphdmEKKysrIGIvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGFtbS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGFtbS9GYWlsdXJlVHlwZXMvQ19hdm9pZGFibGUuamF2YQpAQCAtOCw3ICs4LDcgQEAKICAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQogICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UNCiAgKiAgdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KIHBhY2thZ2Ugb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGFtbS5GYWlsdXJlVHlwZXM7DQogDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGFtbS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGFtbS9GYWlsdXJlVHlwZXMvQ19taXRpZ2F0aW9uLmphdmEgYi9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYW1tL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYW1tL0ZhaWx1cmVUeXBlcy9DX21pdGlnYXRpb24uamF2YQppbmRleCA5MTIzZDkzLi5hZmQ2YWU3IDEwMDY0NAotLS0gYS9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYW1tL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYW1tL0ZhaWx1cmVUeXBlcy9DX21pdGlnYXRpb24uamF2YQorKysgYi9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYW1tL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYW1tL0ZhaWx1cmVUeXBlcy9DX21pdGlnYXRpb24uamF2YQpAQCAtOCw3ICs4LDcgQEAKICAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQogICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UNCiAgKiAgdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KIHBhY2thZ2Ugb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGFtbS5GYWlsdXJlVHlwZXM7DQogDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGFtbS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGFtbS9GYWlsdXJlVHlwZXMvRF9hdm9pZGFibGUuamF2YSBiL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxhbW0vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxhbW0vRmFpbHVyZVR5cGVzL0RfYXZvaWRhYmxlLmphdmEKaW5kZXggMzBjMjE4OS4uOTAwODJmOCAxMDA2NDQKLS0tIGEvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGFtbS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGFtbS9GYWlsdXJlVHlwZXMvRF9hdm9pZGFibGUuamF2YQorKysgYi9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYW1tL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYW1tL0ZhaWx1cmVUeXBlcy9EX2F2b2lkYWJsZS5qYXZhCkBAIC04LDcgKzgsNyBAQAogICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCiAgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZQ0KICAqICB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQogcGFja2FnZSBvcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYW1tLkZhaWx1cmVUeXBlczsNCiANCmRpZmYgLS1naXQgYS9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYW1tL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYW1tL0ZhaWx1cmVUeXBlcy9EX21pdGlnYXRpb24uamF2YSBiL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxhbW0vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxhbW0vRmFpbHVyZVR5cGVzL0RfbWl0aWdhdGlvbi5qYXZhCmluZGV4IDcwMTQ4MWQuLmZhODFiMDQgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxhbW0vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxhbW0vRmFpbHVyZVR5cGVzL0RfbWl0aWdhdGlvbi5qYXZhCisrKyBiL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxhbW0vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxhbW0vRmFpbHVyZVR5cGVzL0RfbWl0aWdhdGlvbi5qYXZhCkBAIC04LDcgKzgsNyBAQAogICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCiAgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZQ0KICAqICB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQogcGFja2FnZSBvcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYW1tLkZhaWx1cmVUeXBlczsNCiANCmRpZmYgLS1naXQgYS9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYW1tL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYW1tL0ZhaWx1cmVUeXBlcy9GYWlsdXJlVHlwZS5qYXZhIGIvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGFtbS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGFtbS9GYWlsdXJlVHlwZXMvRmFpbHVyZVR5cGUuamF2YQppbmRleCBiODcxMDcxLi41MmE2MTA3IDEwMDY0NAotLS0gYS9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYW1tL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYW1tL0ZhaWx1cmVUeXBlcy9GYWlsdXJlVHlwZS5qYXZhCisrKyBiL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxhbW0vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxhbW0vRmFpbHVyZVR5cGVzL0ZhaWx1cmVUeXBlLmphdmEKQEAgLTgsNyArOCw3IEBACiAgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KICAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlDQogICogIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCiBwYWNrYWdlIG9yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxhbW0uRmFpbHVyZVR5cGVzOw0KIA0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxhbW0vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxhbW0vRmFpbHVyZVR5cGVzL0ZhaWx1cmVUeXBlc0ZhY3RvcnkuamF2YSBiL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxhbW0vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxhbW0vRmFpbHVyZVR5cGVzL0ZhaWx1cmVUeXBlc0ZhY3RvcnkuamF2YQppbmRleCA0ZDFiYzU5Li4zZTkzNjA4IDEwMDY0NAotLS0gYS9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYW1tL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYW1tL0ZhaWx1cmVUeXBlcy9GYWlsdXJlVHlwZXNGYWN0b3J5LmphdmEKKysrIGIvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGFtbS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGFtbS9GYWlsdXJlVHlwZXMvRmFpbHVyZVR5cGVzRmFjdG9yeS5qYXZhCkBAIC04LDcgKzgsNyBAQAogICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCiAgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZQ0KICAqICB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQogcGFja2FnZSBvcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYW1tLkZhaWx1cmVUeXBlczsNCiANCmRpZmYgLS1naXQgYS9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYW1tL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYW1tL0ZhaWx1cmVUeXBlcy9GYWlsdXJlVHlwZXNQYWNrYWdlLmphdmEgYi9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYW1tL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYW1tL0ZhaWx1cmVUeXBlcy9GYWlsdXJlVHlwZXNQYWNrYWdlLmphdmEKaW5kZXggMjgzMjdkNC4uZTJmNjM5YiAxMDA2NDQKLS0tIGEvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGFtbS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGFtbS9GYWlsdXJlVHlwZXMvRmFpbHVyZVR5cGVzUGFja2FnZS5qYXZhCisrKyBiL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxhbW0vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxhbW0vRmFpbHVyZVR5cGVzL0ZhaWx1cmVUeXBlc1BhY2thZ2UuamF2YQpAQCAtOCw3ICs4LDcgQEAKICAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQogICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UNCiAgKiAgdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KIHBhY2thZ2Ugb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGFtbS5GYWlsdXJlVHlwZXM7DQogDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGFtbS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGFtbS9GYWlsdXJlVHlwZXMvSV9hdm9pZGFibGUuamF2YSBiL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxhbW0vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxhbW0vRmFpbHVyZVR5cGVzL0lfYXZvaWRhYmxlLmphdmEKaW5kZXggYjk0ZGViMC4uOWY4OGU0MiAxMDA2NDQKLS0tIGEvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGFtbS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGFtbS9GYWlsdXJlVHlwZXMvSV9hdm9pZGFibGUuamF2YQorKysgYi9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYW1tL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYW1tL0ZhaWx1cmVUeXBlcy9JX2F2b2lkYWJsZS5qYXZhCkBAIC04LDcgKzgsNyBAQAogICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCiAgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZQ0KICAqICB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQogcGFja2FnZSBvcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYW1tLkZhaWx1cmVUeXBlczsNCiANCmRpZmYgLS1naXQgYS9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYW1tL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYW1tL0ZhaWx1cmVUeXBlcy9JX21pdGlnYXRpb24uamF2YSBiL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxhbW0vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxhbW0vRmFpbHVyZVR5cGVzL0lfbWl0aWdhdGlvbi5qYXZhCmluZGV4IDI3NWNiYjMuLmI3ODI2ZDkgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxhbW0vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxhbW0vRmFpbHVyZVR5cGVzL0lfbWl0aWdhdGlvbi5qYXZhCisrKyBiL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxhbW0vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxhbW0vRmFpbHVyZVR5cGVzL0lfbWl0aWdhdGlvbi5qYXZhCkBAIC04LDcgKzgsNyBAQAogICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCiAgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZQ0KICAqICB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQogcGFja2FnZSBvcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYW1tLkZhaWx1cmVUeXBlczsNCiANCmRpZmYgLS1naXQgYS9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYW1tL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYW1tL0ZsYUJlaGF2aW91ci5qYXZhIGIvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGFtbS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGFtbS9GbGFCZWhhdmlvdXIuamF2YQppbmRleCBiNmFhNGRlLi5hYTQ0NTEyIDEwMDY0NAotLS0gYS9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYW1tL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYW1tL0ZsYUJlaGF2aW91ci5qYXZhCisrKyBiL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxhbW0vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxhbW0vRmxhQmVoYXZpb3VyLmphdmEKQEAgLTgsNyArOCw3IEBACiAgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KICAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlDQogICogIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCiBwYWNrYWdlIG9yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxhbW07DQogDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGFtbS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGFtbS9GbGFtbUZhY3RvcnkuamF2YSBiL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxhbW0vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxhbW0vRmxhbW1GYWN0b3J5LmphdmEKaW5kZXggZjI4NWJiZi4uNzc2OTMwNiAxMDA2NDQKLS0tIGEvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGFtbS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGFtbS9GbGFtbUZhY3RvcnkuamF2YQorKysgYi9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYW1tL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYW1tL0ZsYW1tRmFjdG9yeS5qYXZhCkBAIC04LDcgKzgsNyBAQAogICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCiAgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZQ0KICAqICB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQogcGFja2FnZSBvcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYW1tOw0KIA0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxhbW0vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxhbW0vRmxhbW1QYWNrYWdlLmphdmEgYi9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYW1tL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYW1tL0ZsYW1tUGFja2FnZS5qYXZhCmluZGV4IDA1MDE0ZTAuLjE4ZTBhMTggMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxhbW0vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxhbW0vRmxhbW1QYWNrYWdlLmphdmEKKysrIGIvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGFtbS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGFtbS9GbGFtbVBhY2thZ2UuamF2YQpAQCAtOCw3ICs4LDcgQEAKICAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQogICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UNCiAgKiAgdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KIHBhY2thZ2Ugb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGFtbTsNCiANCmRpZmYgLS1naXQgYS9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYW1tL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYW1tL05hbWVkRWxlbWVudC5qYXZhIGIvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGFtbS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGFtbS9OYW1lZEVsZW1lbnQuamF2YQppbmRleCBiNTgzYWY1Li45N2M4NWU3IDEwMDY0NAotLS0gYS9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYW1tL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYW1tL05hbWVkRWxlbWVudC5qYXZhCisrKyBiL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxhbW0vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxhbW0vTmFtZWRFbGVtZW50LmphdmEKQEAgLTgsNyArOCw3IEBACiAgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KICAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlDQogICogIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCiBwYWNrYWdlIG9yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxhbW07DQogDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGFtbS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGFtbS9Qb3J0LmphdmEgYi9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYW1tL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYW1tL1BvcnQuamF2YQppbmRleCA4MmU1YjJkLi4xMmYzY2QyIDEwMDY0NAotLS0gYS9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYW1tL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYW1tL1BvcnQuamF2YQorKysgYi9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYW1tL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYW1tL1BvcnQuamF2YQpAQCAtOCw3ICs4LDcgQEAKICAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQogICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UNCiAgKiAgdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KIHBhY2thZ2Ugb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGFtbTsNCiANCmRpZmYgLS1naXQgYS9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYW1tL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYW1tL1BvcnRGYWlsdXJlVHVwbGUuamF2YSBiL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxhbW0vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxhbW0vUG9ydEZhaWx1cmVUdXBsZS5qYXZhCmluZGV4IDQ1ZDU3ZmIuLmNjNGMxYWQgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxhbW0vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxhbW0vUG9ydEZhaWx1cmVUdXBsZS5qYXZhCisrKyBiL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxhbW0vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxhbW0vUG9ydEZhaWx1cmVUdXBsZS5qYXZhCkBAIC04LDcgKzgsNyBAQAogICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCiAgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZQ0KICAqICB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQogcGFja2FnZSBvcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYW1tOw0KIA0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxhbW0vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxhbW0vUnVsZS5qYXZhIGIvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGFtbS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGFtbS9SdWxlLmphdmEKaW5kZXggOWU4NGZlMC4uMzMyYzRhOCAxMDA2NDQKLS0tIGEvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGFtbS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGFtbS9SdWxlLmphdmEKKysrIGIvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGFtbS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGFtbS9SdWxlLmphdmEKQEAgLTgsNyArOCw3IEBACiAgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KICAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlDQogICogIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCiBwYWNrYWdlIG9yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxhbW07DQogDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGFtbS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGFtbS9TaW1wbGVDb21wb25lbnQuamF2YSBiL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxhbW0vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxhbW0vU2ltcGxlQ29tcG9uZW50LmphdmEKaW5kZXggZjJiNDA3Ni4uNTc4YjU3NiAxMDA2NDQKLS0tIGEvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGFtbS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGFtbS9TaW1wbGVDb21wb25lbnQuamF2YQorKysgYi9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYW1tL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYW1tL1NpbXBsZUNvbXBvbmVudC5qYXZhCkBAIC04LDcgKzgsNyBAQAogICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCiAgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZQ0KICAqICB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQogcGFja2FnZSBvcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYW1tOw0KIA0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxhbW0vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxhbW0vYW5hbHlzaXMvRmxhTG9nZ2VyLmphdmEgYi9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYW1tL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYW1tL2FuYWx5c2lzL0ZsYUxvZ2dlci5qYXZhCmluZGV4IDA1YTYwOGIuLjJkZWU2ZGMgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxhbW0vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxhbW0vYW5hbHlzaXMvRmxhTG9nZ2VyLmphdmEKKysrIGIvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGFtbS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGFtbS9hbmFseXNpcy9GbGFMb2dnZXIuamF2YQpAQCAtOCw3ICs4LDcgQEAKICAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQogICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UNCiAgKiAgdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KIHBhY2thZ2Ugb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGFtbS5hbmFseXNpczsNCiANCmRpZmYgLS1naXQgYS9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYW1tL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYW1tL2FuYWx5c2lzL0ZsYVN5c3RlbS5qYXZhIGIvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGFtbS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGFtbS9hbmFseXNpcy9GbGFTeXN0ZW0uamF2YQppbmRleCBjMmM1MzMxLi4yMGI0MjQyIDEwMDY0NAotLS0gYS9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYW1tL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYW1tL2FuYWx5c2lzL0ZsYVN5c3RlbS5qYXZhCisrKyBiL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxhbW0vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxhbW0vYW5hbHlzaXMvRmxhU3lzdGVtLmphdmEKQEAgLTgsNyArOCw3IEBACiAgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KICAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlDQogICogIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCiBwYWNrYWdlIG9yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxhbW0uYW5hbHlzaXM7DQogDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGFtbS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGFtbS9hbmFseXNpcy9TaW1wbGVGbGFMb2dnZXIuamF2YSBiL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxhbW0vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxhbW0vYW5hbHlzaXMvU2ltcGxlRmxhTG9nZ2VyLmphdmEKaW5kZXggNzhlMGE0ZC4uZTYwMWJkNiAxMDA2NDQKLS0tIGEvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGFtbS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGFtbS9hbmFseXNpcy9TaW1wbGVGbGFMb2dnZXIuamF2YQorKysgYi9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYW1tL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYW1tL2FuYWx5c2lzL1NpbXBsZUZsYUxvZ2dlci5qYXZhCkBAIC04LDcgKzgsNyBAQAogICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCiAgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZQ0KICAqICB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQogcGFja2FnZSBvcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYW1tLmFuYWx5c2lzOw0KIA0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxhbW0vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxhbW0vdXRpbC9GbGFtbUFkYXB0ZXJGYWN0b3J5LmphdmEgYi9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYW1tL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYW1tL3V0aWwvRmxhbW1BZGFwdGVyRmFjdG9yeS5qYXZhCmluZGV4IGM1NjNjNzMuLjc3ZGZhZTUgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxhbW0vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxhbW0vdXRpbC9GbGFtbUFkYXB0ZXJGYWN0b3J5LmphdmEKKysrIGIvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGFtbS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGFtbS91dGlsL0ZsYW1tQWRhcHRlckZhY3RvcnkuamF2YQpAQCAtOCw3ICs4LDcgQEAKICAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQogICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UNCiAgKiAgdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KIHBhY2thZ2Ugb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGFtbS51dGlsOw0KIA0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxhbW0vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxhbW0vdXRpbC9GbGFtbVJlYWRlci5qYXZhIGIvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGFtbS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGFtbS91dGlsL0ZsYW1tUmVhZGVyLmphdmEKaW5kZXggMDJmMTllNS4uYWZiZDliNCAxMDA2NDQKLS0tIGEvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGFtbS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGFtbS91dGlsL0ZsYW1tUmVhZGVyLmphdmEKKysrIGIvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGFtbS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGFtbS91dGlsL0ZsYW1tUmVhZGVyLmphdmEKQEAgLTgsNyArOCw3IEBACiAgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KICAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlDQogICogIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCiBwYWNrYWdlIG9yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxhbW0udXRpbDsNCiANCmRpZmYgLS1naXQgYS9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYW1tL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYW1tL3V0aWwvRmxhbW1SZXNvdXJjZUZhY3RvcnlJbXBsLmphdmEgYi9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYW1tL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYW1tL3V0aWwvRmxhbW1SZXNvdXJjZUZhY3RvcnlJbXBsLmphdmEKaW5kZXggZGIyY2Y3MS4uYjJjMjZjMiAxMDA2NDQKLS0tIGEvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGFtbS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGFtbS91dGlsL0ZsYW1tUmVzb3VyY2VGYWN0b3J5SW1wbC5qYXZhCisrKyBiL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxhbW0vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxhbW0vdXRpbC9GbGFtbVJlc291cmNlRmFjdG9yeUltcGwuamF2YQpAQCAtOCw3ICs4LDcgQEAKICAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQogICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UNCiAgKiAgdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KIHBhY2thZ2Ugb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGFtbS51dGlsOw0KIA0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxhbW0vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxhbW0vdXRpbC9GbGFtbVJlc291cmNlSW1wbC5qYXZhIGIvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGFtbS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGFtbS91dGlsL0ZsYW1tUmVzb3VyY2VJbXBsLmphdmEKaW5kZXggYThhYWE1Zi4uMDc0OWIyNSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGFtbS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGFtbS91dGlsL0ZsYW1tUmVzb3VyY2VJbXBsLmphdmEKKysrIGIvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGFtbS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGFtbS91dGlsL0ZsYW1tUmVzb3VyY2VJbXBsLmphdmEKQEAgLTgsNyArOCw3IEBACiAgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KICAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlDQogICogIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCiBwYWNrYWdlIG9yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxhbW0udXRpbDsNCiANCmRpZmYgLS1naXQgYS9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYW1tL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYW1tL3V0aWwvRmxhbW1Td2l0Y2guamF2YSBiL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxhbW0vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxhbW0vdXRpbC9GbGFtbVN3aXRjaC5qYXZhCmluZGV4IDdiZmY5MzQuLjkzN2U5NzQgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxhbW0vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxhbW0vdXRpbC9GbGFtbVN3aXRjaC5qYXZhCisrKyBiL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxhbW0vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxhbW0vdXRpbC9GbGFtbVN3aXRjaC5qYXZhCkBAIC04LDcgKzgsNyBAQAogICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCiAgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZQ0KICAqICB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQogcGFja2FnZSBvcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYW1tLnV0aWw7DQogDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGFtbS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGFtbS91dGlsL0ZsYW1tWE1MUHJvY2Vzc29yLmphdmEgYi9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYW1tL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYW1tL3V0aWwvRmxhbW1YTUxQcm9jZXNzb3IuamF2YQppbmRleCA5ZTAwODc3Li41ZjI2NmVkIDEwMDY0NAotLS0gYS9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYW1tL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYW1tL3V0aWwvRmxhbW1YTUxQcm9jZXNzb3IuamF2YQorKysgYi9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYW1tL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYW1tL3V0aWwvRmxhbW1YTUxQcm9jZXNzb3IuamF2YQpAQCAtOCw3ICs4LDcgQEAKICAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQogICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UNCiAgKiAgdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KIHBhY2thZ2Ugb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGFtbS51dGlsOw0KIA0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxheG1sL2Fib3V0Lmh0bWwgYi9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYXhtbC9hYm91dC5odG1sCmluZGV4IDIwOTEwMzAuLjE2NGY3ODEgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxheG1sL2Fib3V0Lmh0bWwKKysrIGIvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGF4bWwvYWJvdXQuaHRtbApAQCAtMSwyOCArMSwzNiBAQAotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgU3RyaWN0Ly9FTiINCi0gICAgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXN0cmljdC5kdGQiPg0KLTxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4NCi08aGVhZD4NCi08bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xIi8+DQotPHRpdGxlPkFib3V0PC90aXRsZT4NCi08L2hlYWQ+DQotPGJvZHkgbGFuZz0iRU4tVVMiPg0KLTxoMj5BYm91dCBUaGlzIENvbnRlbnQ8L2gyPg0KLSANCi08cD5Ob3ZlbWJlciAxNCwgMjAwODwvcD4JDQotPGgzPkxpY2Vuc2U8L2gzPg0KLQ0KLTxwPlRoZSBFY2xpcHNlIEZvdW5kYXRpb24gbWFrZXMgYXZhaWxhYmxlIGFsbCBjb250ZW50IGluIHRoaXMgcGx1Zy1pbiAoJnF1b3Q7Q29udGVudCZxdW90OykuICBVbmxlc3Mgb3RoZXJ3aXNlIA0KLWluZGljYXRlZCBiZWxvdywgdGhlIENvbnRlbnQgaXMgcHJvdmlkZWQgdG8geW91IHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUNCi1FY2xpcHNlIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMS4wICgmcXVvdDtFUEwmcXVvdDspLiAgQSBjb3B5IG9mIHRoZSBFUEwgaXMgYXZhaWxhYmxlIA0KLWF0IDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbDwvYT4uDQotRm9yIHB1cnBvc2VzIG9mIHRoZSBFUEwsICZxdW90O1Byb2dyYW0mcXVvdDsgd2lsbCBtZWFuIHRoZSBDb250ZW50LjwvcD4NCi0NCi08cD5JZiB5b3UgZGlkIG5vdCByZWNlaXZlIHRoaXMgQ29udGVudCBkaXJlY3RseSBmcm9tIHRoZSBFY2xpcHNlIEZvdW5kYXRpb24sIHRoZSBDb250ZW50IGlzIA0KLWJlaW5nIHJlZGlzdHJpYnV0ZWQgYnkgYW5vdGhlciBwYXJ0eSAoJnF1b3Q7UmVkaXN0cmlidXRvciZxdW90OykgYW5kIGRpZmZlcmVudCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBtYXkNCi1hcHBseSB0byB5b3VyIHVzZSBvZiBhbnkgb2JqZWN0IGNvZGUgaW4gdGhlIENvbnRlbnQuICBDaGVjayB0aGUgUmVkaXN0cmlidXRvcidzIGxpY2Vuc2UgdGhhdCB3YXMgDQotcHJvdmlkZWQgd2l0aCB0aGUgQ29udGVudC4gIElmIG5vIHN1Y2ggbGljZW5zZSBleGlzdHMsIGNvbnRhY3QgdGhlIFJlZGlzdHJpYnV0b3IuICBVbmxlc3Mgb3RoZXJ3aXNlDQotaW5kaWNhdGVkIGJlbG93LCB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVQTCBzdGlsbCBhcHBseSB0byBhbnkgc291cmNlIGNvZGUgaW4gdGhlIENvbnRlbnQNCi1hbmQgc3VjaCBzb3VyY2UgY29kZSBtYXkgYmUgb2J0YWluZWQgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZyI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZzwvYT4uPC9wPg0KLQ0KLTwvYm9keT4NCis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIgorICAgICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS1zdHJpY3QuZHRkIj4KKzxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMSIgLz4KKzx0aXRsZT5BYm91dDwvdGl0bGU+Cis8L2hlYWQ+Cis8Ym9keSBsYW5nPSJFTi1VUyI+CisJPGgyPkFib3V0IFRoaXMgQ29udGVudDwvaDI+CisKKwk8cD5Ob3ZlbWJlciAzMCwgMjAxNzwvcD4KKwk8aDM+TGljZW5zZTwvaDM+CisKKwk8cD4KKwkJVGhlIEVjbGlwc2UgRm91bmRhdGlvbiBtYWtlcyBhdmFpbGFibGUgYWxsIGNvbnRlbnQgaW4gdGhpcyBwbHVnLWluCisJCSgmcXVvdDtDb250ZW50JnF1b3Q7KS4gVW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQgYmVsb3csIHRoZSBDb250ZW50CisJCWlzIHByb3ZpZGVkIHRvIHlvdSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVjbGlwc2UKKwkJUHVibGljIExpY2Vuc2UgVmVyc2lvbiAyLjAgKCZxdW90O0VQTCZxdW90OykuIEEgY29weSBvZiB0aGUgRVBMIGlzCisJCWF2YWlsYWJsZSBhdCA8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAiPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMDwvYT4uCisJCUZvciBwdXJwb3NlcyBvZiB0aGUgRVBMLCAmcXVvdDtQcm9ncmFtJnF1b3Q7IHdpbGwgbWVhbiB0aGUgQ29udGVudC4KKwk8L3A+CisKKwk8cD4KKwkJSWYgeW91IGRpZCBub3QgcmVjZWl2ZSB0aGlzIENvbnRlbnQgZGlyZWN0bHkgZnJvbSB0aGUgRWNsaXBzZQorCQlGb3VuZGF0aW9uLCB0aGUgQ29udGVudCBpcyBiZWluZyByZWRpc3RyaWJ1dGVkIGJ5IGFub3RoZXIgcGFydHkKKwkJKCZxdW90O1JlZGlzdHJpYnV0b3ImcXVvdDspIGFuZCBkaWZmZXJlbnQgdGVybXMgYW5kIGNvbmRpdGlvbnMgbWF5CisJCWFwcGx5IHRvIHlvdXIgdXNlIG9mIGFueSBvYmplY3QgY29kZSBpbiB0aGUgQ29udGVudC4gQ2hlY2sgdGhlCisJCVJlZGlzdHJpYnV0b3IncyBsaWNlbnNlIHRoYXQgd2FzIHByb3ZpZGVkIHdpdGggdGhlIENvbnRlbnQuIElmIG5vIHN1Y2gKKwkJbGljZW5zZSBleGlzdHMsIGNvbnRhY3QgdGhlIFJlZGlzdHJpYnV0b3IuIFVubGVzcyBvdGhlcndpc2UgaW5kaWNhdGVkCisJCWJlbG93LCB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVQTCBzdGlsbCBhcHBseSB0byBhbnkgc291cmNlCisJCWNvZGUgaW4gdGhlIENvbnRlbnQgYW5kIHN1Y2ggc291cmNlIGNvZGUgbWF5IGJlIG9idGFpbmVkIGF0IDxhCisJCQlocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnLyI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZzwvYT4uCisJPC9wPgorCis8L2JvZHk+CiA8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGF4bWwvYnVpbGQucHJvcGVydGllcyBiL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxheG1sL2J1aWxkLnByb3BlcnRpZXMKaW5kZXggZjY5YWMwMS4uN2U4MWIxMyAxMDA2NDQKLS0tIGEvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGF4bWwvYnVpbGQucHJvcGVydGllcworKysgYi9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYXhtbC9idWlsZC5wcm9wZXJ0aWVzCkBAIC04LDcgKzgsNyBAQAogIyAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KICMgIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UNCiAjICB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotIyAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisjICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiAjDQogDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGF4bWwvcGx1Z2luLnByb3BlcnRpZXMgYi9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYXhtbC9wbHVnaW4ucHJvcGVydGllcwppbmRleCA1MDlmNjhjLi4wZGJmZWUzIDEwMDY0NAotLS0gYS9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYXhtbC9wbHVnaW4ucHJvcGVydGllcworKysgYi9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYXhtbC9wbHVnaW4ucHJvcGVydGllcwpAQCAtOCw3ICs4LDcgQEAKICMgIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCiAjICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlDQogIyAgdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSMgIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorIyAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQogIw0KIA0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxheG1sL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYXhtbC9Db21wb25lbnQuamF2YSBiL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxheG1sL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYXhtbC9Db21wb25lbnQuamF2YQppbmRleCA0ZTdiMjZiLi41NDJkOGIwIDEwMDY0NAotLS0gYS9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYXhtbC9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGF4bWwvQ29tcG9uZW50LmphdmEKKysrIGIvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGF4bWwvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxheG1sL0NvbXBvbmVudC5qYXZhCkBAIC04LDcgKzgsNyBAQAogICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCiAgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZQ0KICAqICB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQogLyoqDQogICovDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGF4bWwvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxheG1sL0NvbXBvbmVudHMuamF2YSBiL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxheG1sL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYXhtbC9Db21wb25lbnRzLmphdmEKaW5kZXggNWVlZDE5Ny4uMjRhYjQ1YSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGF4bWwvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxheG1sL0NvbXBvbmVudHMuamF2YQorKysgYi9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYXhtbC9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGF4bWwvQ29tcG9uZW50cy5qYXZhCkBAIC04LDcgKzgsNyBAQAogICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCiAgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZQ0KICAqICB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQogLyoqDQogICovDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGF4bWwvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxheG1sL0NvbXBvc2l0ZUNvbXBvbmVudC5qYXZhIGIvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGF4bWwvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxheG1sL0NvbXBvc2l0ZUNvbXBvbmVudC5qYXZhCmluZGV4IDIzMjRmOGEuLjA2ZjExZDUgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxheG1sL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYXhtbC9Db21wb3NpdGVDb21wb25lbnQuamF2YQorKysgYi9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYXhtbC9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGF4bWwvQ29tcG9zaXRlQ29tcG9uZW50LmphdmEKQEAgLTgsNyArOCw3IEBACiAgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KICAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlDQogICogIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCiAvKioNCiAgKi8NCmRpZmYgLS1naXQgYS9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYXhtbC9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGF4bWwvQ29ubmVjdGlvbi5qYXZhIGIvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGF4bWwvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxheG1sL0Nvbm5lY3Rpb24uamF2YQppbmRleCAwMzZmZDlmLi40MjQ0OTRiIDEwMDY0NAotLS0gYS9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYXhtbC9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGF4bWwvQ29ubmVjdGlvbi5qYXZhCisrKyBiL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxheG1sL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYXhtbC9Db25uZWN0aW9uLmphdmEKQEAgLTgsNyArOCw3IEBACiAgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KICAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlDQogICogIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCiAvKioNCiAgKi8NCmRpZmYgLS1naXQgYS9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYXhtbC9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGF4bWwvQ29ubmVjdGlvbnMuamF2YSBiL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxheG1sL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYXhtbC9Db25uZWN0aW9ucy5qYXZhCmluZGV4IGQ3YjZhMTkuLjEyZWFhZDcgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxheG1sL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYXhtbC9Db25uZWN0aW9ucy5qYXZhCisrKyBiL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxheG1sL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYXhtbC9Db25uZWN0aW9ucy5qYXZhCkBAIC04LDcgKzgsNyBAQAogICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCiAgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZQ0KICAqICB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQogLyoqDQogICovDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGF4bWwvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxheG1sL0RvY3VtZW50Um9vdC5qYXZhIGIvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGF4bWwvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxheG1sL0RvY3VtZW50Um9vdC5qYXZhCmluZGV4IDUxNzNmYTMuLjAzZTk0ZDcgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxheG1sL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYXhtbC9Eb2N1bWVudFJvb3QuamF2YQorKysgYi9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYXhtbC9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGF4bWwvRG9jdW1lbnRSb290LmphdmEKQEAgLTgsNyArOCw3IEBACiAgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KICAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlDQogICogIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCiAvKioNCiAgKi8NCmRpZmYgLS1naXQgYS9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYXhtbC9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGF4bWwvRmFpbHVyZS5qYXZhIGIvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGF4bWwvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxheG1sL0ZhaWx1cmUuamF2YQppbmRleCBmMGNlMDE3Li41NjY1MjNhIDEwMDY0NAotLS0gYS9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYXhtbC9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGF4bWwvRmFpbHVyZS5qYXZhCisrKyBiL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxheG1sL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYXhtbC9GYWlsdXJlLmphdmEKQEAgLTgsNyArOCw3IEBACiAgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KICAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlDQogICogIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCiAvKioNCiAgKi8NCmRpZmYgLS1naXQgYS9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYXhtbC9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGF4bWwvRmFpbHVyZVR5cGUuamF2YSBiL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxheG1sL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYXhtbC9GYWlsdXJlVHlwZS5qYXZhCmluZGV4IDM5ZGM0ZGEuLjM3NDRhYmMgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxheG1sL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYXhtbC9GYWlsdXJlVHlwZS5qYXZhCisrKyBiL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxheG1sL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYXhtbC9GYWlsdXJlVHlwZS5qYXZhCkBAIC04LDcgKzgsNyBAQAogICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCiAgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZQ0KICAqICB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQogLyoqDQogICovDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGF4bWwvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxheG1sL0ZsYXhtbEZhY3RvcnkuamF2YSBiL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxheG1sL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYXhtbC9GbGF4bWxGYWN0b3J5LmphdmEKaW5kZXggNjVkMjM4MC4uZjFjZjAzZCAxMDA2NDQKLS0tIGEvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGF4bWwvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxheG1sL0ZsYXhtbEZhY3RvcnkuamF2YQorKysgYi9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYXhtbC9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGF4bWwvRmxheG1sRmFjdG9yeS5qYXZhCkBAIC04LDcgKzgsNyBAQAogICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCiAgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZQ0KICAqICB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQogLyoqDQogICovDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGF4bWwvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxheG1sL0ZsYXhtbFBhY2thZ2UuamF2YSBiL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxheG1sL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYXhtbC9GbGF4bWxQYWNrYWdlLmphdmEKaW5kZXggOGVjYjM1Ny4uNDliYTZiYyAxMDA2NDQKLS0tIGEvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGF4bWwvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxheG1sL0ZsYXhtbFBhY2thZ2UuamF2YQorKysgYi9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYXhtbC9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGF4bWwvRmxheG1sUGFja2FnZS5qYXZhCkBAIC04LDcgKzgsNyBAQAogICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCiAgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZQ0KICAqICB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQogLyoqDQogICovDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGF4bWwvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxheG1sL0ZwdGNSdWxlcy5qYXZhIGIvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGF4bWwvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxheG1sL0ZwdGNSdWxlcy5qYXZhCmluZGV4IDk4YjVmMTkuLmQwNzU5ZjIgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxheG1sL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYXhtbC9GcHRjUnVsZXMuamF2YQorKysgYi9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYXhtbC9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGF4bWwvRnB0Y1J1bGVzLmphdmEKQEAgLTgsNyArOCw3IEBACiAgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KICAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlDQogICogIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCiAvKioNCiAgKi8NCmRpZmYgLS1naXQgYS9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYXhtbC9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGF4bWwvSW5wdXRQb3J0LmphdmEgYi9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYXhtbC9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGF4bWwvSW5wdXRQb3J0LmphdmEKaW5kZXggMDMwYjBlOC4uYzZjMDQ3MyAxMDA2NDQKLS0tIGEvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGF4bWwvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxheG1sL0lucHV0UG9ydC5qYXZhCisrKyBiL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxheG1sL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYXhtbC9JbnB1dFBvcnQuamF2YQpAQCAtOCw3ICs4LDcgQEAKICAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQogICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UNCiAgKiAgdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KIC8qKg0KICAqLw0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxheG1sL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYXhtbC9JbnB1dFBvcnRzLmphdmEgYi9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYXhtbC9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGF4bWwvSW5wdXRQb3J0cy5qYXZhCmluZGV4IDJkZDUzZWUuLjNlZWI2MTggMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxheG1sL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYXhtbC9JbnB1dFBvcnRzLmphdmEKKysrIGIvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGF4bWwvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxheG1sL0lucHV0UG9ydHMuamF2YQpAQCAtOCw3ICs4LDcgQEAKICAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQogICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UNCiAgKiAgdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KIC8qKg0KICAqLw0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxheG1sL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYXhtbC9OYW1lZEVsZW1lbnQuamF2YSBiL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxheG1sL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYXhtbC9OYW1lZEVsZW1lbnQuamF2YQppbmRleCA5NjEwNzRkLi5mNGFhMjJlIDEwMDY0NAotLS0gYS9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYXhtbC9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGF4bWwvTmFtZWRFbGVtZW50LmphdmEKKysrIGIvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGF4bWwvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxheG1sL05hbWVkRWxlbWVudC5qYXZhCkBAIC04LDcgKzgsNyBAQAogICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCiAgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZQ0KICAqICB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQogLyoqDQogICovDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGF4bWwvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxheG1sL091dHB1dFBvcnQuamF2YSBiL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxheG1sL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYXhtbC9PdXRwdXRQb3J0LmphdmEKaW5kZXggOTg3YmIxOS4uNjMwODU0NyAxMDA2NDQKLS0tIGEvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGF4bWwvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxheG1sL091dHB1dFBvcnQuamF2YQorKysgYi9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYXhtbC9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGF4bWwvT3V0cHV0UG9ydC5qYXZhCkBAIC04LDcgKzgsNyBAQAogICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCiAgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZQ0KICAqICB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQogLyoqDQogICovDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGF4bWwvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxheG1sL091dHB1dFBvcnRzLmphdmEgYi9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYXhtbC9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGF4bWwvT3V0cHV0UG9ydHMuamF2YQppbmRleCBmMTc5NTEwLi40NGM5YzU2IDEwMDY0NAotLS0gYS9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYXhtbC9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGF4bWwvT3V0cHV0UG9ydHMuamF2YQorKysgYi9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYXhtbC9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGF4bWwvT3V0cHV0UG9ydHMuamF2YQpAQCAtOCw3ICs4LDcgQEAKICAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQogICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UNCiAgKiAgdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KIC8qKg0KICAqLw0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxheG1sL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYXhtbC9SdWxlU3RyaW5nLmphdmEgYi9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYXhtbC9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGF4bWwvUnVsZVN0cmluZy5qYXZhCmluZGV4IDQxNTRhZGEuLjFjYzY5MTkgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxheG1sL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYXhtbC9SdWxlU3RyaW5nLmphdmEKKysrIGIvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGF4bWwvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxheG1sL1J1bGVTdHJpbmcuamF2YQpAQCAtOCw3ICs4LDcgQEAKICAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQogICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UNCiAgKiAgdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KIC8qKg0KICAqLw0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxheG1sL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYXhtbC9TaW1wbGVDb21wb25lbnQuamF2YSBiL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxheG1sL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYXhtbC9TaW1wbGVDb21wb25lbnQuamF2YQppbmRleCBhMjZkODkzLi5lNTU4Y2RhIDEwMDY0NAotLS0gYS9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYXhtbC9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGF4bWwvU2ltcGxlQ29tcG9uZW50LmphdmEKKysrIGIvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGF4bWwvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxheG1sL1NpbXBsZUNvbXBvbmVudC5qYXZhCkBAIC04LDcgKzgsNyBAQAogICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCiAgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZQ0KICAqICB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQogLyoqDQogICovDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGF4bWwvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxheG1sL1N5c3RlbS5qYXZhIGIvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGF4bWwvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxheG1sL1N5c3RlbS5qYXZhCmluZGV4IDc2ZjExYmMuLjE1YWVmYTIgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxheG1sL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYXhtbC9TeXN0ZW0uamF2YQorKysgYi9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYXhtbC9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGF4bWwvU3lzdGVtLmphdmEKQEAgLTgsNyArOCw3IEBACiAgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KICAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlDQogICogIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCiAvKioNCiAgKi8NCmRpZmYgLS1naXQgYS9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYXhtbC9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGF4bWwvaW1wbC9Db21wb25lbnRJbXBsLmphdmEgYi9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYXhtbC9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGF4bWwvaW1wbC9Db21wb25lbnRJbXBsLmphdmEKaW5kZXggMTcxNTMxNS4uZjk3NTI1MCAxMDA2NDQKLS0tIGEvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGF4bWwvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxheG1sL2ltcGwvQ29tcG9uZW50SW1wbC5qYXZhCisrKyBiL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxheG1sL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYXhtbC9pbXBsL0NvbXBvbmVudEltcGwuamF2YQpAQCAtOCw3ICs4LDcgQEAKICAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQogICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UNCiAgKiAgdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KIC8qKg0KICAqLw0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxheG1sL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYXhtbC9pbXBsL0NvbXBvbmVudHNJbXBsLmphdmEgYi9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYXhtbC9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGF4bWwvaW1wbC9Db21wb25lbnRzSW1wbC5qYXZhCmluZGV4IDVhYWI1NTMuLjMzM2JkNGQgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxheG1sL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYXhtbC9pbXBsL0NvbXBvbmVudHNJbXBsLmphdmEKKysrIGIvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGF4bWwvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxheG1sL2ltcGwvQ29tcG9uZW50c0ltcGwuamF2YQpAQCAtOCw3ICs4LDcgQEAKICAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQogICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UNCiAgKiAgdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KIC8qKg0KICAqLw0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxheG1sL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYXhtbC9pbXBsL0NvbXBvc2l0ZUNvbXBvbmVudEltcGwuamF2YSBiL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxheG1sL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYXhtbC9pbXBsL0NvbXBvc2l0ZUNvbXBvbmVudEltcGwuamF2YQppbmRleCBlNzVhZGE5Li40ZjhiNGQwIDEwMDY0NAotLS0gYS9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYXhtbC9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGF4bWwvaW1wbC9Db21wb3NpdGVDb21wb25lbnRJbXBsLmphdmEKKysrIGIvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGF4bWwvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxheG1sL2ltcGwvQ29tcG9zaXRlQ29tcG9uZW50SW1wbC5qYXZhCkBAIC04LDcgKzgsNyBAQAogICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCiAgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZQ0KICAqICB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQogLyoqDQogICovDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGF4bWwvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxheG1sL2ltcGwvQ29ubmVjdGlvbkltcGwuamF2YSBiL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxheG1sL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYXhtbC9pbXBsL0Nvbm5lY3Rpb25JbXBsLmphdmEKaW5kZXggNTIzNmY4OS4uMjJhNTIyYSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGF4bWwvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxheG1sL2ltcGwvQ29ubmVjdGlvbkltcGwuamF2YQorKysgYi9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYXhtbC9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGF4bWwvaW1wbC9Db25uZWN0aW9uSW1wbC5qYXZhCkBAIC04LDcgKzgsNyBAQAogICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCiAgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZQ0KICAqICB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQogLyoqDQogICovDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGF4bWwvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxheG1sL2ltcGwvQ29ubmVjdGlvbnNJbXBsLmphdmEgYi9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYXhtbC9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGF4bWwvaW1wbC9Db25uZWN0aW9uc0ltcGwuamF2YQppbmRleCBkYmJlNWUzLi4wYWEyN2RkIDEwMDY0NAotLS0gYS9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYXhtbC9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGF4bWwvaW1wbC9Db25uZWN0aW9uc0ltcGwuamF2YQorKysgYi9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYXhtbC9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGF4bWwvaW1wbC9Db25uZWN0aW9uc0ltcGwuamF2YQpAQCAtOCw3ICs4LDcgQEAKICAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQogICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UNCiAgKiAgdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KIC8qKg0KICAqLw0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxheG1sL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYXhtbC9pbXBsL0RvY3VtZW50Um9vdEltcGwuamF2YSBiL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxheG1sL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYXhtbC9pbXBsL0RvY3VtZW50Um9vdEltcGwuamF2YQppbmRleCBhYjE5YmMwLi4xMDk0NGJiIDEwMDY0NAotLS0gYS9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYXhtbC9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGF4bWwvaW1wbC9Eb2N1bWVudFJvb3RJbXBsLmphdmEKKysrIGIvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGF4bWwvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxheG1sL2ltcGwvRG9jdW1lbnRSb290SW1wbC5qYXZhCkBAIC04LDcgKzgsNyBAQAogICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCiAgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZQ0KICAqICB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQogLyoqDQogICovDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGF4bWwvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxheG1sL2ltcGwvRmFpbHVyZUltcGwuamF2YSBiL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxheG1sL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYXhtbC9pbXBsL0ZhaWx1cmVJbXBsLmphdmEKaW5kZXggOWE2YTY1OS4uZTdlMDVkYSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGF4bWwvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxheG1sL2ltcGwvRmFpbHVyZUltcGwuamF2YQorKysgYi9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYXhtbC9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGF4bWwvaW1wbC9GYWlsdXJlSW1wbC5qYXZhCkBAIC04LDcgKzgsNyBAQAogICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCiAgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZQ0KICAqICB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQogLyoqDQogICovDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGF4bWwvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxheG1sL2ltcGwvRmxheG1sRmFjdG9yeUltcGwuamF2YSBiL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxheG1sL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYXhtbC9pbXBsL0ZsYXhtbEZhY3RvcnlJbXBsLmphdmEKaW5kZXggNTI0ZGQ5Ni4uNmIzNDU3ZCAxMDA2NDQKLS0tIGEvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGF4bWwvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxheG1sL2ltcGwvRmxheG1sRmFjdG9yeUltcGwuamF2YQorKysgYi9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYXhtbC9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGF4bWwvaW1wbC9GbGF4bWxGYWN0b3J5SW1wbC5qYXZhCkBAIC04LDcgKzgsNyBAQAogICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCiAgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZQ0KICAqICB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQogLyoqDQogICovDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGF4bWwvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxheG1sL2ltcGwvRmxheG1sUGFja2FnZUltcGwuamF2YSBiL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxheG1sL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYXhtbC9pbXBsL0ZsYXhtbFBhY2thZ2VJbXBsLmphdmEKaW5kZXggMDIzZDNmMy4uMWM1ZTUwYiAxMDA2NDQKLS0tIGEvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGF4bWwvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxheG1sL2ltcGwvRmxheG1sUGFja2FnZUltcGwuamF2YQorKysgYi9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYXhtbC9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGF4bWwvaW1wbC9GbGF4bWxQYWNrYWdlSW1wbC5qYXZhCkBAIC04LDcgKzgsNyBAQAogICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCiAgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZQ0KICAqICB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQogLyoqDQogICovDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGF4bWwvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxheG1sL2ltcGwvRnB0Y1J1bGVzSW1wbC5qYXZhIGIvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGF4bWwvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxheG1sL2ltcGwvRnB0Y1J1bGVzSW1wbC5qYXZhCmluZGV4IGJlNjMxOWQuLjg3NWU1YWUgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxheG1sL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYXhtbC9pbXBsL0ZwdGNSdWxlc0ltcGwuamF2YQorKysgYi9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYXhtbC9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGF4bWwvaW1wbC9GcHRjUnVsZXNJbXBsLmphdmEKQEAgLTgsNyArOCw3IEBACiAgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KICAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlDQogICogIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCiAvKioNCiAgKi8NCmRpZmYgLS1naXQgYS9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYXhtbC9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGF4bWwvaW1wbC9JbnB1dFBvcnRJbXBsLmphdmEgYi9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYXhtbC9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGF4bWwvaW1wbC9JbnB1dFBvcnRJbXBsLmphdmEKaW5kZXggZDc0MTQxYy4uZDMxNjcyOSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGF4bWwvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxheG1sL2ltcGwvSW5wdXRQb3J0SW1wbC5qYXZhCisrKyBiL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxheG1sL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYXhtbC9pbXBsL0lucHV0UG9ydEltcGwuamF2YQpAQCAtOCw3ICs4LDcgQEAKICAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQogICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UNCiAgKiAgdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KIC8qKg0KICAqLw0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxheG1sL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYXhtbC9pbXBsL0lucHV0UG9ydHNJbXBsLmphdmEgYi9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYXhtbC9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGF4bWwvaW1wbC9JbnB1dFBvcnRzSW1wbC5qYXZhCmluZGV4IDk5ZGQ0MzIuLmU3ZjExNDMgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxheG1sL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYXhtbC9pbXBsL0lucHV0UG9ydHNJbXBsLmphdmEKKysrIGIvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGF4bWwvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxheG1sL2ltcGwvSW5wdXRQb3J0c0ltcGwuamF2YQpAQCAtOCw3ICs4LDcgQEAKICAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQogICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UNCiAgKiAgdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KIC8qKg0KICAqLw0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxheG1sL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYXhtbC9pbXBsL05hbWVkRWxlbWVudEltcGwuamF2YSBiL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxheG1sL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYXhtbC9pbXBsL05hbWVkRWxlbWVudEltcGwuamF2YQppbmRleCA0MThlOTM1Li5iYTRlMmE2IDEwMDY0NAotLS0gYS9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYXhtbC9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGF4bWwvaW1wbC9OYW1lZEVsZW1lbnRJbXBsLmphdmEKKysrIGIvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGF4bWwvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxheG1sL2ltcGwvTmFtZWRFbGVtZW50SW1wbC5qYXZhCkBAIC04LDcgKzgsNyBAQAogICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCiAgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZQ0KICAqICB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQogLyoqDQogICovDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGF4bWwvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxheG1sL2ltcGwvT3V0cHV0UG9ydEltcGwuamF2YSBiL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxheG1sL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYXhtbC9pbXBsL091dHB1dFBvcnRJbXBsLmphdmEKaW5kZXggNWEyZmJiOC4uYzNlNjUwZCAxMDA2NDQKLS0tIGEvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGF4bWwvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxheG1sL2ltcGwvT3V0cHV0UG9ydEltcGwuamF2YQorKysgYi9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYXhtbC9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGF4bWwvaW1wbC9PdXRwdXRQb3J0SW1wbC5qYXZhCkBAIC04LDcgKzgsNyBAQAogICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCiAgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZQ0KICAqICB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQogLyoqDQogICovDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGF4bWwvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxheG1sL2ltcGwvT3V0cHV0UG9ydHNJbXBsLmphdmEgYi9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYXhtbC9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGF4bWwvaW1wbC9PdXRwdXRQb3J0c0ltcGwuamF2YQppbmRleCBhMzg1YjhjLi40NWI5OWIzIDEwMDY0NAotLS0gYS9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYXhtbC9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGF4bWwvaW1wbC9PdXRwdXRQb3J0c0ltcGwuamF2YQorKysgYi9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYXhtbC9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGF4bWwvaW1wbC9PdXRwdXRQb3J0c0ltcGwuamF2YQpAQCAtOCw3ICs4LDcgQEAKICAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQogICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UNCiAgKiAgdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KIC8qKg0KICAqLw0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxheG1sL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYXhtbC9pbXBsL1J1bGVTdHJpbmdJbXBsLmphdmEgYi9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYXhtbC9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGF4bWwvaW1wbC9SdWxlU3RyaW5nSW1wbC5qYXZhCmluZGV4IGUwZmNkMjQuLjgwODIwOWYgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxheG1sL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYXhtbC9pbXBsL1J1bGVTdHJpbmdJbXBsLmphdmEKKysrIGIvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGF4bWwvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxheG1sL2ltcGwvUnVsZVN0cmluZ0ltcGwuamF2YQpAQCAtOCw3ICs4LDcgQEAKICAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQogICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UNCiAgKiAgdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KIC8qKg0KICAqLw0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxheG1sL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYXhtbC9pbXBsL1NpbXBsZUNvbXBvbmVudEltcGwuamF2YSBiL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxheG1sL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYXhtbC9pbXBsL1NpbXBsZUNvbXBvbmVudEltcGwuamF2YQppbmRleCBhOWVkYjFmLi4zNmUwZDFmIDEwMDY0NAotLS0gYS9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYXhtbC9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGF4bWwvaW1wbC9TaW1wbGVDb21wb25lbnRJbXBsLmphdmEKKysrIGIvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGF4bWwvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxheG1sL2ltcGwvU2ltcGxlQ29tcG9uZW50SW1wbC5qYXZhCkBAIC04LDcgKzgsNyBAQAogICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCiAgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZQ0KICAqICB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQogLyoqDQogICovDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGF4bWwvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxheG1sL2ltcGwvU3lzdGVtSW1wbC5qYXZhIGIvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGF4bWwvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxheG1sL2ltcGwvU3lzdGVtSW1wbC5qYXZhCmluZGV4IGE1NWM0ZjguLjIzMzdlZWQgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxheG1sL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYXhtbC9pbXBsL1N5c3RlbUltcGwuamF2YQorKysgYi9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYXhtbC9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGF4bWwvaW1wbC9TeXN0ZW1JbXBsLmphdmEKQEAgLTgsNyArOCw3IEBACiAgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KICAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlDQogICogIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCiAvKioNCiAgKi8NCmRpZmYgLS1naXQgYS9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYXhtbC9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGF4bWwvdXRpbC9GbGF4bWxBZGFwdGVyRmFjdG9yeS5qYXZhIGIvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGF4bWwvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxheG1sL3V0aWwvRmxheG1sQWRhcHRlckZhY3RvcnkuamF2YQppbmRleCA3NDhlN2E5Li5iNWUxNmQyIDEwMDY0NAotLS0gYS9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYXhtbC9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGF4bWwvdXRpbC9GbGF4bWxBZGFwdGVyRmFjdG9yeS5qYXZhCisrKyBiL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxheG1sL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYXhtbC91dGlsL0ZsYXhtbEFkYXB0ZXJGYWN0b3J5LmphdmEKQEAgLTgsNyArOCw3IEBACiAgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KICAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlDQogICogIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCiAvKioNCiAgKi8NCmRpZmYgLS1naXQgYS9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYXhtbC9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGF4bWwvdXRpbC9GbGF4bWxSZXNvdXJjZUZhY3RvcnlJbXBsLmphdmEgYi9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYXhtbC9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGF4bWwvdXRpbC9GbGF4bWxSZXNvdXJjZUZhY3RvcnlJbXBsLmphdmEKaW5kZXggMjI1MjZkYy4uYmNmYjE3MCAxMDA2NDQKLS0tIGEvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGF4bWwvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxheG1sL3V0aWwvRmxheG1sUmVzb3VyY2VGYWN0b3J5SW1wbC5qYXZhCisrKyBiL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxheG1sL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYXhtbC91dGlsL0ZsYXhtbFJlc291cmNlRmFjdG9yeUltcGwuamF2YQpAQCAtOCw3ICs4LDcgQEAKICAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQogICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UNCiAgKiAgdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KIC8qKg0KICAqLw0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxheG1sL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYXhtbC91dGlsL0ZsYXhtbFJlc291cmNlSW1wbC5qYXZhIGIvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGF4bWwvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxheG1sL3V0aWwvRmxheG1sUmVzb3VyY2VJbXBsLmphdmEKaW5kZXggN2JiOGE0MC4uZDlkZDY4OCAxMDA2NDQKLS0tIGEvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGF4bWwvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxheG1sL3V0aWwvRmxheG1sUmVzb3VyY2VJbXBsLmphdmEKKysrIGIvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGF4bWwvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxheG1sL3V0aWwvRmxheG1sUmVzb3VyY2VJbXBsLmphdmEKQEAgLTgsNyArOCw3IEBACiAgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KICAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlDQogICogIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCiAvKioNCiAgKi8NCmRpZmYgLS1naXQgYS9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYXhtbC9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGF4bWwvdXRpbC9GbGF4bWxTd2l0Y2guamF2YSBiL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxheG1sL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYXhtbC91dGlsL0ZsYXhtbFN3aXRjaC5qYXZhCmluZGV4IDA0MzNlOGMuLjVhMzk0YzMgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxheG1sL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYXhtbC91dGlsL0ZsYXhtbFN3aXRjaC5qYXZhCisrKyBiL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxheG1sL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYXhtbC91dGlsL0ZsYXhtbFN3aXRjaC5qYXZhCkBAIC04LDcgKzgsNyBAQAogICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCiAgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZQ0KICAqICB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQogLyoqDQogICovDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGF4bWwvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxheG1sL3V0aWwvRmxheG1sVmFsaWRhdG9yLmphdmEgYi9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYXhtbC9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGF4bWwvdXRpbC9GbGF4bWxWYWxpZGF0b3IuamF2YQppbmRleCBlNzRmZGJiLi43MDAzZGQ3IDEwMDY0NAotLS0gYS9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYXhtbC9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGF4bWwvdXRpbC9GbGF4bWxWYWxpZGF0b3IuamF2YQorKysgYi9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLmZsYXhtbC9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9mbGF4bWwvdXRpbC9GbGF4bWxWYWxpZGF0b3IuamF2YQpAQCAtOCw3ICs4LDcgQEAKICAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQogICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UNCiAgKiAgdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KIC8qKg0KICAqLw0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEuZmxheG1sL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ZsYXhtbC91dGlsL0ZsYXhtbFhNTFByb2Nlc3Nvci5qYXZhIGIvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGF4bWwvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxheG1sL3V0aWwvRmxheG1sWE1MUHJvY2Vzc29yLmphdmEKaW5kZXggMjg3NGIyNS4uYmVmZWE0NCAxMDA2NDQKLS0tIGEvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGF4bWwvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxheG1sL3V0aWwvRmxheG1sWE1MUHJvY2Vzc29yLmphdmEKKysrIGIvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5mbGF4bWwvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvZmxheG1sL3V0aWwvRmxheG1sWE1MUHJvY2Vzc29yLmphdmEKQEAgLTgsNyArOCw3IEBACiAgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KICAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlDQogICogIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCiAvKioNCiAgKi8NCmRpZmYgLS1naXQgYS9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLnRyYW5zZm9ybWF0aW9ucy9hYm91dC5odG1sIGIvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS50cmFuc2Zvcm1hdGlvbnMvYWJvdXQuaHRtbAppbmRleCAyMDkxMDMwLi4xNjRmNzgxIDEwMDY0NAotLS0gYS9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhLnRyYW5zZm9ybWF0aW9ucy9hYm91dC5odG1sCisrKyBiL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEudHJhbnNmb3JtYXRpb25zL2Fib3V0Lmh0bWwKQEAgLTEsMjggKzEsMzYgQEAKLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFN0cmljdC8vRU4iDQotICAgICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS1zdHJpY3QuZHRkIj4NCi08aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+DQotPGhlYWQ+DQotPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMSIvPg0KLTx0aXRsZT5BYm91dDwvdGl0bGU+DQotPC9oZWFkPg0KLTxib2R5IGxhbmc9IkVOLVVTIj4NCi08aDI+QWJvdXQgVGhpcyBDb250ZW50PC9oMj4NCi0gDQotPHA+Tm92ZW1iZXIgMTQsIDIwMDg8L3A+CQ0KLTxoMz5MaWNlbnNlPC9oMz4NCi0NCi08cD5UaGUgRWNsaXBzZSBGb3VuZGF0aW9uIG1ha2VzIGF2YWlsYWJsZSBhbGwgY29udGVudCBpbiB0aGlzIHBsdWctaW4gKCZxdW90O0NvbnRlbnQmcXVvdDspLiAgVW5sZXNzIG90aGVyd2lzZSANCi1pbmRpY2F0ZWQgYmVsb3csIHRoZSBDb250ZW50IGlzIHByb3ZpZGVkIHRvIHlvdSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlDQotRWNsaXBzZSBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDEuMCAoJnF1b3Q7RVBMJnF1b3Q7KS4gIEEgY29weSBvZiB0aGUgRVBMIGlzIGF2YWlsYWJsZSANCi1hdCA8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWw8L2E+Lg0KLUZvciBwdXJwb3NlcyBvZiB0aGUgRVBMLCAmcXVvdDtQcm9ncmFtJnF1b3Q7IHdpbGwgbWVhbiB0aGUgQ29udGVudC48L3A+DQotDQotPHA+SWYgeW91IGRpZCBub3QgcmVjZWl2ZSB0aGlzIENvbnRlbnQgZGlyZWN0bHkgZnJvbSB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uLCB0aGUgQ29udGVudCBpcyANCi1iZWluZyByZWRpc3RyaWJ1dGVkIGJ5IGFub3RoZXIgcGFydHkgKCZxdW90O1JlZGlzdHJpYnV0b3ImcXVvdDspIGFuZCBkaWZmZXJlbnQgdGVybXMgYW5kIGNvbmRpdGlvbnMgbWF5DQotYXBwbHkgdG8geW91ciB1c2Ugb2YgYW55IG9iamVjdCBjb2RlIGluIHRoZSBDb250ZW50LiAgQ2hlY2sgdGhlIFJlZGlzdHJpYnV0b3IncyBsaWNlbnNlIHRoYXQgd2FzIA0KLXByb3ZpZGVkIHdpdGggdGhlIENvbnRlbnQuICBJZiBubyBzdWNoIGxpY2Vuc2UgZXhpc3RzLCBjb250YWN0IHRoZSBSZWRpc3RyaWJ1dG9yLiAgVW5sZXNzIG90aGVyd2lzZQ0KLWluZGljYXRlZCBiZWxvdywgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFUEwgc3RpbGwgYXBwbHkgdG8gYW55IHNvdXJjZSBjb2RlIGluIHRoZSBDb250ZW50DQotYW5kIHN1Y2ggc291cmNlIGNvZGUgbWF5IGJlIG9idGFpbmVkIGF0IDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmciPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmc8L2E+LjwvcD4NCi0NCi08L2JvZHk+DQorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgU3RyaWN0Ly9FTiIKKyAgICAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+Cis8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiIC8+Cis8dGl0bGU+QWJvdXQ8L3RpdGxlPgorPC9oZWFkPgorPGJvZHkgbGFuZz0iRU4tVVMiPgorCTxoMj5BYm91dCBUaGlzIENvbnRlbnQ8L2gyPgorCisJPHA+Tm92ZW1iZXIgMzAsIDIwMTc8L3A+CisJPGgzPkxpY2Vuc2U8L2gzPgorCisJPHA+CisJCVRoZSBFY2xpcHNlIEZvdW5kYXRpb24gbWFrZXMgYXZhaWxhYmxlIGFsbCBjb250ZW50IGluIHRoaXMgcGx1Zy1pbgorCQkoJnF1b3Q7Q29udGVudCZxdW90OykuIFVubGVzcyBvdGhlcndpc2UgaW5kaWNhdGVkIGJlbG93LCB0aGUgQ29udGVudAorCQlpcyBwcm92aWRlZCB0byB5b3UgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFY2xpcHNlCisJCVB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMi4wICgmcXVvdDtFUEwmcXVvdDspLiBBIGNvcHkgb2YgdGhlIEVQTCBpcworCQlhdmFpbGFibGUgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjA8L2E+LgorCQlGb3IgcHVycG9zZXMgb2YgdGhlIEVQTCwgJnF1b3Q7UHJvZ3JhbSZxdW90OyB3aWxsIG1lYW4gdGhlIENvbnRlbnQuCisJPC9wPgorCisJPHA+CisJCUlmIHlvdSBkaWQgbm90IHJlY2VpdmUgdGhpcyBDb250ZW50IGRpcmVjdGx5IGZyb20gdGhlIEVjbGlwc2UKKwkJRm91bmRhdGlvbiwgdGhlIENvbnRlbnQgaXMgYmVpbmcgcmVkaXN0cmlidXRlZCBieSBhbm90aGVyIHBhcnR5CisJCSgmcXVvdDtSZWRpc3RyaWJ1dG9yJnF1b3Q7KSBhbmQgZGlmZmVyZW50IHRlcm1zIGFuZCBjb25kaXRpb25zIG1heQorCQlhcHBseSB0byB5b3VyIHVzZSBvZiBhbnkgb2JqZWN0IGNvZGUgaW4gdGhlIENvbnRlbnQuIENoZWNrIHRoZQorCQlSZWRpc3RyaWJ1dG9yJ3MgbGljZW5zZSB0aGF0IHdhcyBwcm92aWRlZCB3aXRoIHRoZSBDb250ZW50LiBJZiBubyBzdWNoCisJCWxpY2Vuc2UgZXhpc3RzLCBjb250YWN0IHRoZSBSZWRpc3RyaWJ1dG9yLiBVbmxlc3Mgb3RoZXJ3aXNlIGluZGljYXRlZAorCQliZWxvdywgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFUEwgc3RpbGwgYXBwbHkgdG8gYW55IHNvdXJjZQorCQljb2RlIGluIHRoZSBDb250ZW50IGFuZCBzdWNoIHNvdXJjZSBjb2RlIG1heSBiZSBvYnRhaW5lZCBhdCA8YQorCQkJaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy8iPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmc8L2E+LgorCTwvcD4KKworPC9ib2R5PgogPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEvYWJvdXQuaHRtbCBiL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEvYWJvdXQuaHRtbAppbmRleCAyMDkxMDMwLi4xNjRmNzgxIDEwMDY0NAotLS0gYS9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhL2Fib3V0Lmh0bWwKKysrIGIvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS9hYm91dC5odG1sCkBAIC0xLDI4ICsxLDM2IEBACi08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIg0KLSAgICAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+DQotPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPg0KLTxoZWFkPg0KLTxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiLz4NCi08dGl0bGU+QWJvdXQ8L3RpdGxlPg0KLTwvaGVhZD4NCi08Ym9keSBsYW5nPSJFTi1VUyI+DQotPGgyPkFib3V0IFRoaXMgQ29udGVudDwvaDI+DQotIA0KLTxwPk5vdmVtYmVyIDE0LCAyMDA4PC9wPgkNCi08aDM+TGljZW5zZTwvaDM+DQotDQotPHA+VGhlIEVjbGlwc2UgRm91bmRhdGlvbiBtYWtlcyBhdmFpbGFibGUgYWxsIGNvbnRlbnQgaW4gdGhpcyBwbHVnLWluICgmcXVvdDtDb250ZW50JnF1b3Q7KS4gIFVubGVzcyBvdGhlcndpc2UgDQotaW5kaWNhdGVkIGJlbG93LCB0aGUgQ29udGVudCBpcyBwcm92aWRlZCB0byB5b3UgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZQ0KLUVjbGlwc2UgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAxLjAgKCZxdW90O0VQTCZxdW90OykuICBBIGNvcHkgb2YgdGhlIEVQTCBpcyBhdmFpbGFibGUgDQotYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwiPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sPC9hPi4NCi1Gb3IgcHVycG9zZXMgb2YgdGhlIEVQTCwgJnF1b3Q7UHJvZ3JhbSZxdW90OyB3aWxsIG1lYW4gdGhlIENvbnRlbnQuPC9wPg0KLQ0KLTxwPklmIHlvdSBkaWQgbm90IHJlY2VpdmUgdGhpcyBDb250ZW50IGRpcmVjdGx5IGZyb20gdGhlIEVjbGlwc2UgRm91bmRhdGlvbiwgdGhlIENvbnRlbnQgaXMgDQotYmVpbmcgcmVkaXN0cmlidXRlZCBieSBhbm90aGVyIHBhcnR5ICgmcXVvdDtSZWRpc3RyaWJ1dG9yJnF1b3Q7KSBhbmQgZGlmZmVyZW50IHRlcm1zIGFuZCBjb25kaXRpb25zIG1heQ0KLWFwcGx5IHRvIHlvdXIgdXNlIG9mIGFueSBvYmplY3QgY29kZSBpbiB0aGUgQ29udGVudC4gIENoZWNrIHRoZSBSZWRpc3RyaWJ1dG9yJ3MgbGljZW5zZSB0aGF0IHdhcyANCi1wcm92aWRlZCB3aXRoIHRoZSBDb250ZW50LiAgSWYgbm8gc3VjaCBsaWNlbnNlIGV4aXN0cywgY29udGFjdCB0aGUgUmVkaXN0cmlidXRvci4gIFVubGVzcyBvdGhlcndpc2UNCi1pbmRpY2F0ZWQgYmVsb3csIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRVBMIHN0aWxsIGFwcGx5IHRvIGFueSBzb3VyY2UgY29kZSBpbiB0aGUgQ29udGVudA0KLWFuZCBzdWNoIHNvdXJjZSBjb2RlIG1heSBiZSBvYnRhaW5lZCBhdCA8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnPC9hPi48L3A+DQotDQotPC9ib2R5Pg0KKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFN0cmljdC8vRU4iCisgICAgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXN0cmljdC5kdGQiPgorPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xIiAvPgorPHRpdGxlPkFib3V0PC90aXRsZT4KKzwvaGVhZD4KKzxib2R5IGxhbmc9IkVOLVVTIj4KKwk8aDI+QWJvdXQgVGhpcyBDb250ZW50PC9oMj4KKworCTxwPk5vdmVtYmVyIDMwLCAyMDE3PC9wPgorCTxoMz5MaWNlbnNlPC9oMz4KKworCTxwPgorCQlUaGUgRWNsaXBzZSBGb3VuZGF0aW9uIG1ha2VzIGF2YWlsYWJsZSBhbGwgY29udGVudCBpbiB0aGlzIHBsdWctaW4KKwkJKCZxdW90O0NvbnRlbnQmcXVvdDspLiBVbmxlc3Mgb3RoZXJ3aXNlIGluZGljYXRlZCBiZWxvdywgdGhlIENvbnRlbnQKKwkJaXMgcHJvdmlkZWQgdG8geW91IHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRWNsaXBzZQorCQlQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDIuMCAoJnF1b3Q7RVBMJnF1b3Q7KS4gQSBjb3B5IG9mIHRoZSBFUEwgaXMKKwkJYXZhaWxhYmxlIGF0IDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMCI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wPC9hPi4KKwkJRm9yIHB1cnBvc2VzIG9mIHRoZSBFUEwsICZxdW90O1Byb2dyYW0mcXVvdDsgd2lsbCBtZWFuIHRoZSBDb250ZW50LgorCTwvcD4KKworCTxwPgorCQlJZiB5b3UgZGlkIG5vdCByZWNlaXZlIHRoaXMgQ29udGVudCBkaXJlY3RseSBmcm9tIHRoZSBFY2xpcHNlCisJCUZvdW5kYXRpb24sIHRoZSBDb250ZW50IGlzIGJlaW5nIHJlZGlzdHJpYnV0ZWQgYnkgYW5vdGhlciBwYXJ0eQorCQkoJnF1b3Q7UmVkaXN0cmlidXRvciZxdW90OykgYW5kIGRpZmZlcmVudCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBtYXkKKwkJYXBwbHkgdG8geW91ciB1c2Ugb2YgYW55IG9iamVjdCBjb2RlIGluIHRoZSBDb250ZW50LiBDaGVjayB0aGUKKwkJUmVkaXN0cmlidXRvcidzIGxpY2Vuc2UgdGhhdCB3YXMgcHJvdmlkZWQgd2l0aCB0aGUgQ29udGVudC4gSWYgbm8gc3VjaAorCQlsaWNlbnNlIGV4aXN0cywgY29udGFjdCB0aGUgUmVkaXN0cmlidXRvci4gVW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQKKwkJYmVsb3csIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRVBMIHN0aWxsIGFwcGx5IHRvIGFueSBzb3VyY2UKKwkJY29kZSBpbiB0aGUgQ29udGVudCBhbmQgc3VjaCBzb3VyY2UgY29kZSBtYXkgYmUgb2J0YWluZWQgYXQgPGEKKwkJCWhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnPC9hPi4KKwk8L3A+CisKKzwvYm9keT4KIDwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL0FjdGl2YXRvci5qYXZhIGIvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9BY3RpdmF0b3IuamF2YQppbmRleCA5NTE3ZWZlLi4wZDk5YTYyIDEwMDY0NAotLS0gYS9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL0FjdGl2YXRvci5qYXZhCisrKyBiL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvQWN0aXZhdG9yLmphdmEKQEAgLTgsNyArOCw3IEBACiAgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KICAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlDQogICogIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCiANCiBwYWNrYWdlIG9yZy5wb2xhcnN5cy5jaGVzcy5mbGE7DQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9jb21tb24vRmxhQW5hbHlzaXNFeGNlcHRpb24uamF2YSBiL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvY29tbW9uL0ZsYUFuYWx5c2lzRXhjZXB0aW9uLmphdmEKaW5kZXggN2RkMTMxZC4uOGZkOGRlZCAxMDA2NDQKLS0tIGEvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9jb21tb24vRmxhQW5hbHlzaXNFeGNlcHRpb24uamF2YQorKysgYi9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2NvbW1vbi9GbGFBbmFseXNpc0V4Y2VwdGlvbi5qYXZhCkBAIC04LDcgKzgsNyBAQAogICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCiAgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZQ0KICAqICB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQogcGFja2FnZSBvcmcucG9sYXJzeXMuY2hlc3MuZmxhLmNvbW1vbjsNCiANCmRpZmYgLS1naXQgYS9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2NvbW1vbi9GbGFMb2dnZXIuamF2YSBiL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvY29tbW9uL0ZsYUxvZ2dlci5qYXZhCmluZGV4IDBhYTg2NTAuLmI3ZDVhMzUgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvY29tbW9uL0ZsYUxvZ2dlci5qYXZhCisrKyBiL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvY29tbW9uL0ZsYUxvZ2dlci5qYXZhCkBAIC04LDcgKzgsNyBAQAogICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCiAgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZQ0KICAqICB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQogcGFja2FnZSBvcmcucG9sYXJzeXMuY2hlc3MuZmxhLmNvbW1vbjsNCiANCmRpZmYgLS1naXQgYS9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2NvbW1vbi9UcmFuc2Zvcm1hdGlvbkV4Y2VwdGlvbi5qYXZhIGIvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9jb21tb24vVHJhbnNmb3JtYXRpb25FeGNlcHRpb24uamF2YQppbmRleCAwYWE1OGViLi42MzlmZTkxIDEwMDY0NAotLS0gYS9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2NvbW1vbi9UcmFuc2Zvcm1hdGlvbkV4Y2VwdGlvbi5qYXZhCisrKyBiL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvY29tbW9uL1RyYW5zZm9ybWF0aW9uRXhjZXB0aW9uLmphdmEKQEAgLTgsNyArOCw3IEBACiAgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KICAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlDQogICogIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCiBwYWNrYWdlIG9yZy5wb2xhcnN5cy5jaGVzcy5mbGEuY29tbW9uOw0KIA0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvaW1wbC9GbGFBbmFseXNpc1J1bm5lci5qYXZhIGIvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9pbXBsL0ZsYUFuYWx5c2lzUnVubmVyLmphdmEKaW5kZXggMmQ5ODBiMi4uMThlNDA1YSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9pbXBsL0ZsYUFuYWx5c2lzUnVubmVyLmphdmEKKysrIGIvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9pbXBsL0ZsYUFuYWx5c2lzUnVubmVyLmphdmEKQEAgLTgsNyArOCw3IEBACiAgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KICAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlDQogICogIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCiBwYWNrYWdlIG9yZy5wb2xhcnN5cy5jaGVzcy5mbGEuaW1wbDsNCiANCmRpZmYgLS1naXQgYS9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2ltcGwvRmxhQW5hbHlzaXNSdW5uZXJYbWwuamF2YSBiL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvaW1wbC9GbGFBbmFseXNpc1J1bm5lclhtbC5qYXZhCmluZGV4IDVkNWFmZDAuLmZjYjU2NzAgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvaW1wbC9GbGFBbmFseXNpc1J1bm5lclhtbC5qYXZhCisrKyBiL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvaW1wbC9GbGFBbmFseXNpc1J1bm5lclhtbC5qYXZhCkBAIC04LDcgKzgsNyBAQAogICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCiAgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZQ0KICAqICB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQogcGFja2FnZSBvcmcucG9sYXJzeXMuY2hlc3MuZmxhLmltcGw7DQogDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9sYXVuY2gvQWN0aXZhdG9yLmphdmEgYi9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2xhdW5jaC9BY3RpdmF0b3IuamF2YQppbmRleCBlYzBmNWNkLi4zM2ZkMTM5IDEwMDY0NAotLS0gYS9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2xhdW5jaC9BY3RpdmF0b3IuamF2YQorKysgYi9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2xhdW5jaC9BY3RpdmF0b3IuamF2YQpAQCAtOCw3ICs4LDcgQEAKICAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQogICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UNCiAgKiAgdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KIHBhY2thZ2Ugb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5sYXVuY2g7DQogDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9sYXVuY2gvRmxhQW5hbHlzaXNDb21tYW5kLmphdmEgYi9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2xhdW5jaC9GbGFBbmFseXNpc0NvbW1hbmQuamF2YQppbmRleCAxMjQ4M2VhLi5jNmE2MzdhIDEwMDY0NAotLS0gYS9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2xhdW5jaC9GbGFBbmFseXNpc0NvbW1hbmQuamF2YQorKysgYi9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2xhdW5jaC9GbGFBbmFseXNpc0NvbW1hbmQuamF2YQpAQCAtOCw3ICs4LDcgQEAKICAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQogICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UNCiAgKiAgdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KIHBhY2thZ2Ugb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5sYXVuY2g7DQogDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9sYXVuY2gvRmxhQW5hbHlzaXNDb21tYW5kWG1sLmphdmEgYi9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2xhdW5jaC9GbGFBbmFseXNpc0NvbW1hbmRYbWwuamF2YQppbmRleCA5ZWZlOWViLi5iN2I5YWZmIDEwMDY0NAotLS0gYS9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2xhdW5jaC9GbGFBbmFseXNpc0NvbW1hbmRYbWwuamF2YQorKysgYi9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL2xhdW5jaC9GbGFBbmFseXNpc0NvbW1hbmRYbWwuamF2YQpAQCAtOCw3ICs4LDcgQEAKICAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQogICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UNCiAgKiAgdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KIHBhY2thZ2Ugb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5sYXVuY2g7DQogDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9wcmVmZXJlbmNlcy9Db25jZXJ0b0ZsYVByZWZlcmVuY2VQYWdlLmphdmEgYi9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL3ByZWZlcmVuY2VzL0NvbmNlcnRvRmxhUHJlZmVyZW5jZVBhZ2UuamF2YQppbmRleCA1NmUzMTU1Li42ZmQxZGVkIDEwMDY0NAotLS0gYS9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL3ByZWZlcmVuY2VzL0NvbmNlcnRvRmxhUHJlZmVyZW5jZVBhZ2UuamF2YQorKysgYi9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL3ByZWZlcmVuY2VzL0NvbmNlcnRvRmxhUHJlZmVyZW5jZVBhZ2UuamF2YQpAQCAtOCw3ICs4LDcgQEAKICAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQogICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UNCiAgKiAgdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KIHBhY2thZ2Ugb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5wcmVmZXJlbmNlczsNCiANCmRpZmYgLS1naXQgYS9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL3ByZWZlcmVuY2VzL0ZsYVBhcmFtZXRlcnMuamF2YSBiL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvcHJlZmVyZW5jZXMvRmxhUGFyYW1ldGVycy5qYXZhCmluZGV4IGNlMDlmZDIuLmY5MDY5NTMgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvcHJlZmVyZW5jZXMvRmxhUGFyYW1ldGVycy5qYXZhCisrKyBiL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvcHJlZmVyZW5jZXMvRmxhUGFyYW1ldGVycy5qYXZhCkBAIC04LDcgKzgsNyBAQAogICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCiAgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZQ0KICAqICB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQogcGFja2FnZSBvcmcucG9sYXJzeXMuY2hlc3MuZmxhLnByZWZlcmVuY2VzOw0KIA0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvcHJlZmVyZW5jZXMvUHJlZmVyZW5jZUluaXRpYWxpemVyLmphdmEgYi9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL3ByZWZlcmVuY2VzL1ByZWZlcmVuY2VJbml0aWFsaXplci5qYXZhCmluZGV4IGIzM2E4M2MuLjBhYmUzZGMgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvcHJlZmVyZW5jZXMvUHJlZmVyZW5jZUluaXRpYWxpemVyLmphdmEKKysrIGIvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2ZsYS9wcmVmZXJlbmNlcy9QcmVmZXJlbmNlSW5pdGlhbGl6ZXIuamF2YQpAQCAtOCw3ICs4LDcgQEAKICAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQogICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UNCiAgKiAgdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KIHBhY2thZ2Ugb3JnLnBvbGFyc3lzLmNoZXNzLmZsYS5wcmVmZXJlbmNlczsNCiANCmRpZmYgLS1naXQgYS9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MuZmxhL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZmxhL3RyYW5zZm9ybWF0aW9ucy9RVlRvVHJhbnNmb3JtYXRpb24uamF2YSBiL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvdHJhbnNmb3JtYXRpb25zL1FWVG9UcmFuc2Zvcm1hdGlvbi5qYXZhCmluZGV4IGE4ZGQxZGEuLmY0ZDJmNjIgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvdHJhbnNmb3JtYXRpb25zL1FWVG9UcmFuc2Zvcm1hdGlvbi5qYXZhCisrKyBiL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy5mbGEvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mbGEvdHJhbnNmb3JtYXRpb25zL1FWVG9UcmFuc2Zvcm1hdGlvbi5qYXZhCkBAIC04LDcgKzgsNyBAQAogICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCiAgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZQ0KICAqICB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQogLyoqDQogICogTG9naWMgZnJvbTogUVZUT01ML0V4YW1wbGVzL0ludm9rZUluSmF2YQ0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy54dGV4dC5mbGFkc2wudWkvYWJvdXQuaHRtbCBiL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy54dGV4dC5mbGFkc2wudWkvYWJvdXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNjRmNzgxCi0tLSAvZGV2L251bGwKKysrIGIvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLnh0ZXh0LmZsYWRzbC51aS9hYm91dC5odG1sCkBAIC0wLDAgKzEsMzYgQEAKKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFN0cmljdC8vRU4iCisgICAgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXN0cmljdC5kdGQiPgorPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xIiAvPgorPHRpdGxlPkFib3V0PC90aXRsZT4KKzwvaGVhZD4KKzxib2R5IGxhbmc9IkVOLVVTIj4KKwk8aDI+QWJvdXQgVGhpcyBDb250ZW50PC9oMj4KKworCTxwPk5vdmVtYmVyIDMwLCAyMDE3PC9wPgorCTxoMz5MaWNlbnNlPC9oMz4KKworCTxwPgorCQlUaGUgRWNsaXBzZSBGb3VuZGF0aW9uIG1ha2VzIGF2YWlsYWJsZSBhbGwgY29udGVudCBpbiB0aGlzIHBsdWctaW4KKwkJKCZxdW90O0NvbnRlbnQmcXVvdDspLiBVbmxlc3Mgb3RoZXJ3aXNlIGluZGljYXRlZCBiZWxvdywgdGhlIENvbnRlbnQKKwkJaXMgcHJvdmlkZWQgdG8geW91IHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRWNsaXBzZQorCQlQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDIuMCAoJnF1b3Q7RVBMJnF1b3Q7KS4gQSBjb3B5IG9mIHRoZSBFUEwgaXMKKwkJYXZhaWxhYmxlIGF0IDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMCI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wPC9hPi4KKwkJRm9yIHB1cnBvc2VzIG9mIHRoZSBFUEwsICZxdW90O1Byb2dyYW0mcXVvdDsgd2lsbCBtZWFuIHRoZSBDb250ZW50LgorCTwvcD4KKworCTxwPgorCQlJZiB5b3UgZGlkIG5vdCByZWNlaXZlIHRoaXMgQ29udGVudCBkaXJlY3RseSBmcm9tIHRoZSBFY2xpcHNlCisJCUZvdW5kYXRpb24sIHRoZSBDb250ZW50IGlzIGJlaW5nIHJlZGlzdHJpYnV0ZWQgYnkgYW5vdGhlciBwYXJ0eQorCQkoJnF1b3Q7UmVkaXN0cmlidXRvciZxdW90OykgYW5kIGRpZmZlcmVudCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBtYXkKKwkJYXBwbHkgdG8geW91ciB1c2Ugb2YgYW55IG9iamVjdCBjb2RlIGluIHRoZSBDb250ZW50LiBDaGVjayB0aGUKKwkJUmVkaXN0cmlidXRvcidzIGxpY2Vuc2UgdGhhdCB3YXMgcHJvdmlkZWQgd2l0aCB0aGUgQ29udGVudC4gSWYgbm8gc3VjaAorCQlsaWNlbnNlIGV4aXN0cywgY29udGFjdCB0aGUgUmVkaXN0cmlidXRvci4gVW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQKKwkJYmVsb3csIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRVBMIHN0aWxsIGFwcGx5IHRvIGFueSBzb3VyY2UKKwkJY29kZSBpbiB0aGUgQ29udGVudCBhbmQgc3VjaCBzb3VyY2UgY29kZSBtYXkgYmUgb2J0YWluZWQgYXQgPGEKKwkJCWhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnPC9hPi4KKwk8L3A+CisKKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MueHRleHQuZmxhZHNsLnVpL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MveHRleHQvdWkvbGFiZWxpbmcvRmxhRHNsRGVzY3JpcHRpb25MYWJlbFByb3ZpZGVyLnh0ZW5kIGIvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLnh0ZXh0LmZsYWRzbC51aS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3h0ZXh0L3VpL2xhYmVsaW5nL0ZsYURzbERlc2NyaXB0aW9uTGFiZWxQcm92aWRlci54dGVuZAppbmRleCBjZmJjYWM1Li42MTVhNTcyIDEwMDY0NAotLS0gYS9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MueHRleHQuZmxhZHNsLnVpL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MveHRleHQvdWkvbGFiZWxpbmcvRmxhRHNsRGVzY3JpcHRpb25MYWJlbFByb3ZpZGVyLnh0ZW5kCisrKyBiL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy54dGV4dC5mbGFkc2wudWkvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy94dGV4dC91aS9sYWJlbGluZy9GbGFEc2xEZXNjcmlwdGlvbkxhYmVsUHJvdmlkZXIueHRlbmQKQEAgLTEsMjQgKzEsMzkgQEAKLS8qCi0gKiBnZW5lcmF0ZWQgYnkgWHRleHQgMi4xMi4wCi0gKi8KLXBhY2thZ2Ugb3JnLnBvbGFyc3lzLmNoZXNzLnh0ZXh0LnVpLmxhYmVsaW5nCi0KLWltcG9ydCBvcmcuZWNsaXBzZS54dGV4dC51aS5sYWJlbC5EZWZhdWx0RGVzY3JpcHRpb25MYWJlbFByb3ZpZGVyCi0KLS8qKgotICogUHJvdmlkZXMgbGFiZWxzIGZvciBJRU9iamVjdERlc2NyaXB0aW9ucyBhbmQgSVJlc291cmNlRGVzY3JpcHRpb25zLgotICogCi0gKiBTZWUgaHR0cHM6Ly93d3cuZWNsaXBzZS5vcmcvWHRleHQvZG9jdW1lbnRhdGlvbi8zMDRfaWRlX2NvbmNlcHRzLmh0bWwjbGFiZWwtcHJvdmlkZXIKLSAqLwotY2xhc3MgRmxhRHNsRGVzY3JpcHRpb25MYWJlbFByb3ZpZGVyIGV4dGVuZHMgRGVmYXVsdERlc2NyaXB0aW9uTGFiZWxQcm92aWRlciB7Ci0KLQkvLyBMYWJlbHMgYW5kIGljb25zIGNhbiBiZSBjb21wdXRlZCBsaWtlIHRoaXM6Ci0JCi0vLwlvdmVycmlkZSB0ZXh0KElFT2JqZWN0RGVzY3JpcHRpb24gZWxlKSB7Ci0vLwkJZWxlLm5hbWUudG9TdHJpbmcKLS8vCX0KLS8vCSAKLS8vCW92ZXJyaWRlIGltYWdlKElFT2JqZWN0RGVzY3JpcHRpb24gZWxlKSB7Ci0vLwkJZWxlLkVDbGFzcy5uYW1lICsgJy5naWYnCi0vLwl9Ci19CisvKg0KKyAqIGdlbmVyYXRlZCBieSBYdGV4dA0KKyAqLw0KKyAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKyAtDQorIC0gQ29weXJpZ2h0IChjKSAyMDEzLCAyMDE1IEludGVjcyBTcEEgDQorIC0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAtIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KKyAtIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorIC0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCisgLQ0KKyAtIENvbnRyaWJ1dG9yczoNCisgLSANCisgLSBTdGVmYW5vIFB1cmkgc3RlZmFuby5wdXJpQGludGVjcy5pdA0KKyAtICANCisgLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24gYW5kL29yIGluaXRpYWwgZG9jdW1lbnRhdGlvbg0KKyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKyANCitwYWNrYWdlIG9yZy5wb2xhcnN5cy5jaGVzcy54dGV4dC51aS5sYWJlbGluZw0KKw0KKy8vaW1wb3J0IG9yZy5lY2xpcHNlLnh0ZXh0LnJlc291cmNlLklFT2JqZWN0RGVzY3JpcHRpb24NCisNCisvKioNCisgKiBQcm92aWRlcyBsYWJlbHMgZm9yIElFT2JqZWN0RGVzY3JpcHRpb25zIGFuZCBJUmVzb3VyY2VEZXNjcmlwdGlvbnMuDQorICogDQorICogU2VlIGh0dHBzOi8vd3d3LmVjbGlwc2Uub3JnL1h0ZXh0L2RvY3VtZW50YXRpb24vMzA0X2lkZV9jb25jZXB0cy5odG1sI2xhYmVsLXByb3ZpZGVyDQorICovDQorY2xhc3MgRmxhRHNsRGVzY3JpcHRpb25MYWJlbFByb3ZpZGVyIGV4dGVuZHMgb3JnLmVjbGlwc2UueHRleHQudWkubGFiZWwuRGVmYXVsdERlc2NyaXB0aW9uTGFiZWxQcm92aWRlciB7DQorDQorCS8vIExhYmVscyBhbmQgaWNvbnMgY2FuIGJlIGNvbXB1dGVkIGxpa2UgdGhpczoNCisJDQorLy8Jb3ZlcnJpZGUgdGV4dChJRU9iamVjdERlc2NyaXB0aW9uIGVsZSkgew0KKy8vCQllbGUubmFtZS50b1N0cmluZw0KKy8vCX0NCisvLwkgDQorLy8Jb3ZlcnJpZGUgaW1hZ2UoSUVPYmplY3REZXNjcmlwdGlvbiBlbGUpIHsNCisvLwkJZWxlLkVDbGFzcy5uYW1lICsgJy5naWYnDQorLy8JfQkgDQorfQ0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy54dGV4dC5mbGFkc2wudWkvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy94dGV4dC91aS9sYWJlbGluZy9GbGFEc2xMYWJlbFByb3ZpZGVyLnh0ZW5kIGIvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLnh0ZXh0LmZsYWRzbC51aS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3h0ZXh0L3VpL2xhYmVsaW5nL0ZsYURzbExhYmVsUHJvdmlkZXIueHRlbmQKaW5kZXggY2Q5NDIxYS4uZGMzOGU2NSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLnh0ZXh0LmZsYWRzbC51aS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3h0ZXh0L3VpL2xhYmVsaW5nL0ZsYURzbExhYmVsUHJvdmlkZXIueHRlbmQKKysrIGIvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLnh0ZXh0LmZsYWRzbC51aS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3h0ZXh0L3VpL2xhYmVsaW5nL0ZsYURzbExhYmVsUHJvdmlkZXIueHRlbmQKQEAgLTEsMzEgKzEsNDQgQEAKLS8qCi0gKiBnZW5lcmF0ZWQgYnkgWHRleHQgMi4xMi4wCi0gKi8KLXBhY2thZ2Ugb3JnLnBvbGFyc3lzLmNoZXNzLnh0ZXh0LnVpLmxhYmVsaW5nCi0KLWltcG9ydCBjb20uZ29vZ2xlLmluamVjdC5JbmplY3QKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC51aS5wcm92aWRlci5BZGFwdGVyRmFjdG9yeUxhYmVsUHJvdmlkZXIKLWltcG9ydCBvcmcuZWNsaXBzZS54dGV4dC51aS5sYWJlbC5EZWZhdWx0RU9iamVjdExhYmVsUHJvdmlkZXIKLQotLyoqCi0gKiBQcm92aWRlcyBsYWJlbHMgZm9yIEVPYmplY3RzLgotICogCi0gKiBTZWUgaHR0cHM6Ly93d3cuZWNsaXBzZS5vcmcvWHRleHQvZG9jdW1lbnRhdGlvbi8zMDRfaWRlX2NvbmNlcHRzLmh0bWwjbGFiZWwtcHJvdmlkZXIKLSAqLwotY2xhc3MgRmxhRHNsTGFiZWxQcm92aWRlciBleHRlbmRzIERlZmF1bHRFT2JqZWN0TGFiZWxQcm92aWRlciB7Ci0KLQlASW5qZWN0Ci0JbmV3KEFkYXB0ZXJGYWN0b3J5TGFiZWxQcm92aWRlciBkZWxlZ2F0ZSkgewotCQlzdXBlcihkZWxlZ2F0ZSk7Ci0JfQotCi0JLy8gTGFiZWxzIGFuZCBpY29ucyBjYW4gYmUgY29tcHV0ZWQgbGlrZSB0aGlzOgotCQotLy8JZGVmIHRleHQoR3JlZXRpbmcgZWxlKSB7Ci0vLwkJJ0EgZ3JlZXRpbmcgdG8gJyArIGVsZS5uYW1lCi0vLwl9Ci0vLwotLy8JZGVmIGltYWdlKEdyZWV0aW5nIGVsZSkgewotLy8JCSdHcmVldGluZy5naWYnCi0vLwl9Ci19CisvKg0KKyAqIGdlbmVyYXRlZCBieSBYdGV4dA0KKyAqLw0KKyAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKyAtDQorIC0gQ29weXJpZ2h0IChjKSAyMDEzLCAyMDE1IEludGVjcyBTcEEgDQorIC0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAtIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KKyAtIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorIC0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCisgLQ0KKyAtIENvbnRyaWJ1dG9yczoNCisgLSANCisgLSBTdGVmYW5vIFB1cmkgc3RlZmFuby5wdXJpQGludGVjcy5pdA0KKyAtICANCisgLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24gYW5kL29yIGluaXRpYWwgZG9jdW1lbnRhdGlvbg0KKyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKyANCitwYWNrYWdlIG9yZy5wb2xhcnN5cy5jaGVzcy54dGV4dC51aS5sYWJlbGluZw0KKw0KK2ltcG9ydCBjb20uZ29vZ2xlLmluamVjdC5JbmplY3QNCisNCisvKioNCisgKiBQcm92aWRlcyBsYWJlbHMgZm9yIEVPYmplY3RzLg0KKyAqIA0KKyAqIFNlZSBodHRwczovL3d3dy5lY2xpcHNlLm9yZy9YdGV4dC9kb2N1bWVudGF0aW9uLzMwNF9pZGVfY29uY2VwdHMuaHRtbCNsYWJlbC1wcm92aWRlcg0KKyAqLw0KK2NsYXNzIEZsYURzbExhYmVsUHJvdmlkZXIgZXh0ZW5kcyBvcmcuZWNsaXBzZS54dGV4dC51aS5sYWJlbC5EZWZhdWx0RU9iamVjdExhYmVsUHJvdmlkZXIgew0KKw0KKwlASW5qZWN0DQorCW5ldyhvcmcuZWNsaXBzZS5lbWYuZWRpdC51aS5wcm92aWRlci5BZGFwdGVyRmFjdG9yeUxhYmVsUHJvdmlkZXIgZGVsZWdhdGUpIHsNCisJCXN1cGVyKGRlbGVnYXRlKTsNCisJfQ0KKw0KKwkvLyBMYWJlbHMgYW5kIGljb25zIGNhbiBiZSBjb21wdXRlZCBsaWtlIHRoaXM6DQorCQ0KKy8vCWRlZiB0ZXh0KEdyZWV0aW5nIGVsZSkgew0KKy8vCQknQSBncmVldGluZyB0byAnICsgZWxlLm5hbWUNCisvLwl9DQorLy8NCisvLwlkZWYgaW1hZ2UoR3JlZXRpbmcgZWxlKSB7DQorLy8JCSdHcmVldGluZy5naWYnDQorLy8JfQ0KK30NCmRpZmYgLS1naXQgYS9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MueHRleHQuZmxhZHNsLnVpL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MveHRleHQvdWkvb3V0bGluZS9GbGFEc2xPdXRsaW5lVHJlZVByb3ZpZGVyLnh0ZW5kIGIvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLnh0ZXh0LmZsYWRzbC51aS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3h0ZXh0L3VpL291dGxpbmUvRmxhRHNsT3V0bGluZVRyZWVQcm92aWRlci54dGVuZAppbmRleCAwODFiY2ZhLi4yNjM4ZDMxIDEwMDY0NAotLS0gYS9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MueHRleHQuZmxhZHNsLnVpL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MveHRleHQvdWkvb3V0bGluZS9GbGFEc2xPdXRsaW5lVHJlZVByb3ZpZGVyLnh0ZW5kCisrKyBiL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy54dGV4dC5mbGFkc2wudWkvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy94dGV4dC91aS9vdXRsaW5lL0ZsYURzbE91dGxpbmVUcmVlUHJvdmlkZXIueHRlbmQKQEAgLTEsMTUgKzEsMjggQEAKLS8qCi0gKiBnZW5lcmF0ZWQgYnkgWHRleHQgMi4xMi4wCi0gKi8KLXBhY2thZ2Ugb3JnLnBvbGFyc3lzLmNoZXNzLnh0ZXh0LnVpLm91dGxpbmUKLQotaW1wb3J0IG9yZy5lY2xpcHNlLnh0ZXh0LnVpLmVkaXRvci5vdXRsaW5lLmltcGwuRGVmYXVsdE91dGxpbmVUcmVlUHJvdmlkZXIKLQotLyoqCi0gKiBDdXN0b21pemF0aW9uIG9mIHRoZSBkZWZhdWx0IG91dGxpbmUgc3RydWN0dXJlLgotICoKLSAqIFNlZSBodHRwczovL3d3dy5lY2xpcHNlLm9yZy9YdGV4dC9kb2N1bWVudGF0aW9uLzMxMF9lY2xpcHNlX3N1cHBvcnQuaHRtbCNvdXRsaW5lCi0gKi8KLWNsYXNzIEZsYURzbE91dGxpbmVUcmVlUHJvdmlkZXIgZXh0ZW5kcyBEZWZhdWx0T3V0bGluZVRyZWVQcm92aWRlciB7Ci0KLX0KKy8qDQorICogZ2VuZXJhdGVkIGJ5IFh0ZXh0DQorICovDQorIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorIC0NCisgLSBDb3B5cmlnaHQgKGMpIDIwMTMsIDIwMTUgSW50ZWNzIFNwQSANCisgLSBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorIC0gYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQorIC0gd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KKyAtDQorIC0gQ29udHJpYnV0b3JzOg0KKyAtIA0KKyAtIFN0ZWZhbm8gUHVyaSBzdGVmYW5vLnB1cmlAaW50ZWNzLml0DQorIC0gIA0KKyAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbiBhbmQvb3IgaW5pdGlhbCBkb2N1bWVudGF0aW9uDQorIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorIA0KK3BhY2thZ2Ugb3JnLnBvbGFyc3lzLmNoZXNzLnh0ZXh0LnVpLm91dGxpbmUNCisNCisvKioNCisgKiBDdXN0b21pemF0aW9uIG9mIHRoZSBkZWZhdWx0IG91dGxpbmUgc3RydWN0dXJlLg0KKyAqDQorICogU2VlIGh0dHBzOi8vd3d3LmVjbGlwc2Uub3JnL1h0ZXh0L2RvY3VtZW50YXRpb24vMzA0X2lkZV9jb25jZXB0cy5odG1sI291dGxpbmUNCisgKi8NCitjbGFzcyBGbGFEc2xPdXRsaW5lVHJlZVByb3ZpZGVyIGV4dGVuZHMgb3JnLmVjbGlwc2UueHRleHQudWkuZWRpdG9yLm91dGxpbmUuaW1wbC5EZWZhdWx0T3V0bGluZVRyZWVQcm92aWRlciB7DQorCQ0KK30NCmRpZmYgLS1naXQgYS9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MueHRleHQuZmxhZHNsLnVpL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MveHRleHQvdWkvcXVpY2tmaXgvRmxhRHNsUXVpY2tmaXhQcm92aWRlci54dGVuZCBiL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy54dGV4dC5mbGFkc2wudWkvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy94dGV4dC91aS9xdWlja2ZpeC9GbGFEc2xRdWlja2ZpeFByb3ZpZGVyLnh0ZW5kCmluZGV4IGRiMjM1YzkuLjNjOWI5YzcgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy54dGV4dC5mbGFkc2wudWkvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy94dGV4dC91aS9xdWlja2ZpeC9GbGFEc2xRdWlja2ZpeFByb3ZpZGVyLnh0ZW5kCisrKyBiL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy54dGV4dC5mbGFkc2wudWkvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy94dGV4dC91aS9xdWlja2ZpeC9GbGFEc2xRdWlja2ZpeFByb3ZpZGVyLnh0ZW5kCkBAIC0xLDI0ICsxLDQxIEBACi0vKgotICogZ2VuZXJhdGVkIGJ5IFh0ZXh0IDIuMTIuMAotICovCi1wYWNrYWdlIG9yZy5wb2xhcnN5cy5jaGVzcy54dGV4dC51aS5xdWlja2ZpeAotCi1pbXBvcnQgb3JnLmVjbGlwc2UueHRleHQudWkuZWRpdG9yLnF1aWNrZml4LkRlZmF1bHRRdWlja2ZpeFByb3ZpZGVyCi0KLS8qKgotICogQ3VzdG9tIHF1aWNrZml4ZXMuCi0gKgotICogU2VlIGh0dHBzOi8vd3d3LmVjbGlwc2Uub3JnL1h0ZXh0L2RvY3VtZW50YXRpb24vMzEwX2VjbGlwc2Vfc3VwcG9ydC5odG1sI3F1aWNrLWZpeGVzCi0gKi8KLWNsYXNzIEZsYURzbFF1aWNrZml4UHJvdmlkZXIgZXh0ZW5kcyBEZWZhdWx0UXVpY2tmaXhQcm92aWRlciB7Ci0KLS8vCUBGaXgoRmxhRHNsVmFsaWRhdG9yLklOVkFMSURfTkFNRSkKLS8vCWRlZiBjYXBpdGFsaXplTmFtZShJc3N1ZSBpc3N1ZSwgSXNzdWVSZXNvbHV0aW9uQWNjZXB0b3IgYWNjZXB0b3IpIHsKLS8vCQlhY2NlcHRvci5hY2NlcHQoaXNzdWUsICdDYXBpdGFsaXplIG5hbWUnLCAnQ2FwaXRhbGl6ZSB0aGUgbmFtZS4nLCAndXBjYXNlLnBuZycpIFsKLS8vCQkJY29udGV4dCB8Ci0vLwkJCXZhbCB4dGV4dERvY3VtZW50ID0gY29udGV4dC54dGV4dERvY3VtZW50Ci0vLwkJCXZhbCBmaXJzdExldHRlciA9IHh0ZXh0RG9jdW1lbnQuZ2V0KGlzc3VlLm9mZnNldCwgMSkKLS8vCQkJeHRleHREb2N1bWVudC5yZXBsYWNlKGlzc3VlLm9mZnNldCwgMSwgZmlyc3RMZXR0ZXIudG9VcHBlckNhc2UpCi0vLwkJXQotLy8JfQotfQorLyoNCisgKiBnZW5lcmF0ZWQgYnkgWHRleHQNCisgKi8NCisgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisgLQ0KKyAtIENvcHlyaWdodCAoYykgMjAxMywgMjAxNSBJbnRlY3MgU3BBIA0KKyAtIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCisgLSB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAtIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQorIC0NCisgLSBDb250cmlidXRvcnM6DQorIC0gDQorIC0gU3RlZmFubyBQdXJpIHN0ZWZhbm8ucHVyaUBpbnRlY3MuaXQNCisgLSAgDQorIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uIGFuZC9vciBpbml0aWFsIGRvY3VtZW50YXRpb24NCisgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisgDQorcGFja2FnZSBvcmcucG9sYXJzeXMuY2hlc3MueHRleHQudWkucXVpY2tmaXgNCisNCisvL2ltcG9ydCBvcmcuZWNsaXBzZS54dGV4dC51aS5lZGl0b3IucXVpY2tmaXguRml4DQorLy9pbXBvcnQgb3JnLmVjbGlwc2UueHRleHQudWkuZWRpdG9yLnF1aWNrZml4Lklzc3VlUmVzb2x1dGlvbkFjY2VwdG9yDQorLy9pbXBvcnQgb3JnLmVjbGlwc2UueHRleHQudmFsaWRhdGlvbi5Jc3N1ZQ0KKw0KKy8qKg0KKyAqIEN1c3RvbSBxdWlja2ZpeGVzLg0KKyAqDQorICogU2VlIGh0dHBzOi8vd3d3LmVjbGlwc2Uub3JnL1h0ZXh0L2RvY3VtZW50YXRpb24vMzA0X2lkZV9jb25jZXB0cy5odG1sI3F1aWNrLWZpeGVzDQorICovDQorY2xhc3MgRmxhRHNsUXVpY2tmaXhQcm92aWRlciBleHRlbmRzIG9yZy5lY2xpcHNlLnh0ZXh0LnVpLmVkaXRvci5xdWlja2ZpeC5EZWZhdWx0UXVpY2tmaXhQcm92aWRlciB7DQorDQorLy8JQEZpeChNeURzbFZhbGlkYXRvcjo6SU5WQUxJRF9OQU1FKQ0KKy8vCWRlZiBjYXBpdGFsaXplTmFtZShJc3N1ZSBpc3N1ZSwgSXNzdWVSZXNvbHV0aW9uQWNjZXB0b3IgYWNjZXB0b3IpIHsNCisvLwkJYWNjZXB0b3IuYWNjZXB0KGlzc3VlLCAnQ2FwaXRhbGl6ZSBuYW1lJywgJ0NhcGl0YWxpemUgdGhlIG5hbWUuJywgJ3VwY2FzZS5wbmcnKSBbDQorLy8JCQljb250ZXh0IHwNCisvLwkJCXZhbCB4dGV4dERvY3VtZW50ID0gY29udGV4dC54dGV4dERvY3VtZW50DQorLy8JCQl2YWwgZmlyc3RMZXR0ZXIgPSB4dGV4dERvY3VtZW50LmdldChpc3N1ZS5vZmZzZXQsIDEpDQorLy8JCQl4dGV4dERvY3VtZW50LnJlcGxhY2UoaXNzdWUub2Zmc2V0LCAxLCBmaXJzdExldHRlci50b1VwcGVyQ2FzZSkNCisvLwkJXQ0KKy8vCX0NCit9DQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLnh0ZXh0LmZsYWRzbC9hYm91dC5odG1sIGIvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLnh0ZXh0LmZsYWRzbC9hYm91dC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE2NGY3ODEKLS0tIC9kZXYvbnVsbAorKysgYi9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MueHRleHQuZmxhZHNsL2Fib3V0Lmh0bWwKQEAgLTAsMCArMSwzNiBAQAorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgU3RyaWN0Ly9FTiIKKyAgICAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+Cis8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiIC8+Cis8dGl0bGU+QWJvdXQ8L3RpdGxlPgorPC9oZWFkPgorPGJvZHkgbGFuZz0iRU4tVVMiPgorCTxoMj5BYm91dCBUaGlzIENvbnRlbnQ8L2gyPgorCisJPHA+Tm92ZW1iZXIgMzAsIDIwMTc8L3A+CisJPGgzPkxpY2Vuc2U8L2gzPgorCisJPHA+CisJCVRoZSBFY2xpcHNlIEZvdW5kYXRpb24gbWFrZXMgYXZhaWxhYmxlIGFsbCBjb250ZW50IGluIHRoaXMgcGx1Zy1pbgorCQkoJnF1b3Q7Q29udGVudCZxdW90OykuIFVubGVzcyBvdGhlcndpc2UgaW5kaWNhdGVkIGJlbG93LCB0aGUgQ29udGVudAorCQlpcyBwcm92aWRlZCB0byB5b3UgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFY2xpcHNlCisJCVB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMi4wICgmcXVvdDtFUEwmcXVvdDspLiBBIGNvcHkgb2YgdGhlIEVQTCBpcworCQlhdmFpbGFibGUgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjA8L2E+LgorCQlGb3IgcHVycG9zZXMgb2YgdGhlIEVQTCwgJnF1b3Q7UHJvZ3JhbSZxdW90OyB3aWxsIG1lYW4gdGhlIENvbnRlbnQuCisJPC9wPgorCisJPHA+CisJCUlmIHlvdSBkaWQgbm90IHJlY2VpdmUgdGhpcyBDb250ZW50IGRpcmVjdGx5IGZyb20gdGhlIEVjbGlwc2UKKwkJRm91bmRhdGlvbiwgdGhlIENvbnRlbnQgaXMgYmVpbmcgcmVkaXN0cmlidXRlZCBieSBhbm90aGVyIHBhcnR5CisJCSgmcXVvdDtSZWRpc3RyaWJ1dG9yJnF1b3Q7KSBhbmQgZGlmZmVyZW50IHRlcm1zIGFuZCBjb25kaXRpb25zIG1heQorCQlhcHBseSB0byB5b3VyIHVzZSBvZiBhbnkgb2JqZWN0IGNvZGUgaW4gdGhlIENvbnRlbnQuIENoZWNrIHRoZQorCQlSZWRpc3RyaWJ1dG9yJ3MgbGljZW5zZSB0aGF0IHdhcyBwcm92aWRlZCB3aXRoIHRoZSBDb250ZW50LiBJZiBubyBzdWNoCisJCWxpY2Vuc2UgZXhpc3RzLCBjb250YWN0IHRoZSBSZWRpc3RyaWJ1dG9yLiBVbmxlc3Mgb3RoZXJ3aXNlIGluZGljYXRlZAorCQliZWxvdywgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFUEwgc3RpbGwgYXBwbHkgdG8gYW55IHNvdXJjZQorCQljb2RlIGluIHRoZSBDb250ZW50IGFuZCBzdWNoIHNvdXJjZSBjb2RlIG1heSBiZSBvYnRhaW5lZCBhdCA8YQorCQkJaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy8iPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmc8L2E+LgorCTwvcD4KKworPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy54dGV4dC5mbGFkc2wvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy94dGV4dC9HZW5lcmF0ZUZsYURzbC5td2UyIGIvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLnh0ZXh0LmZsYWRzbC9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3h0ZXh0L0dlbmVyYXRlRmxhRHNsLm13ZTIKaW5kZXggOWI5NWZlMy4uZjQ1NTViNyAxMDA2NDQKLS0tIGEvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLnh0ZXh0LmZsYWRzbC9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3h0ZXh0L0dlbmVyYXRlRmxhRHNsLm13ZTIKKysrIGIvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLnh0ZXh0LmZsYWRzbC9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3h0ZXh0L0dlbmVyYXRlRmxhRHNsLm13ZTIKQEAgLTEsMTAxICsxLDIwMSBAQAotbW9kdWxlIG9yZy5wb2xhcnN5cy5jaGVzcy54dGV4dC5HZW5lcmF0ZUZsYURzbAotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLm13ZS51dGlscy4qCi1pbXBvcnQgb3JnLmVjbGlwc2UueHRleHQueHRleHQuZ2VuZXJhdG9yLioKLWltcG9ydCBvcmcuZWNsaXBzZS54dGV4dC54dGV4dC5nZW5lcmF0b3IubW9kZWwucHJvamVjdC4qCi0KLXZhciByb290UGF0aCA9ICIuLiIKLQotV29ya2Zsb3cgewotCQliZWFuID0gU3RhbmRhbG9uZVNldHVwIHsKLQkJICBzY2FuQ2xhc3NQYXRoID0gdHJ1ZQotCQkgIC8vbG9hZCBFTUYgRUNPUkUJCi0JCXVyaU1hcCA9IHsKLSAgICAgICAgICAgIGZyb20gPSAicGxhdGZvcm06L3BsdWdpbi9vcmcuZWNsaXBzZS5lbWYuZWNvcmUvbW9kZWwvRWNvcmUuZWNvcmUiCi0gICAgICAgICAgICB0byA9ICJwbGF0Zm9ybTovcmVzb3VyY2Uvb3JnLmVjbGlwc2UuZW1mLmVjb3JlL21vZGVsL0Vjb3JlLmVjb3JlIgotICAgICAgICB9Ci0JCQotCQl1cmlNYXAgPSB7IGZyb20gPSAicGxhdGZvcm06L3BsdWdpbi9vcmcuZWNsaXBzZS5lbWYuY29kZWdlbi5lY29yZS9tb2RlbC9HZW5Nb2RlbC5nZW5tb2RlbCIKLSAgICAgICAgICAgCQkgICB0byA9ICJwbGF0Zm9ybTovcmVzb3VyY2Uvb3JnLmVjbGlwc2UuZW1mLmNvZGVnZW4uZWNvcmUvbW9kZWwvR2VuTW9kZWwuZ2VubW9kZWwiCi0gICAgICAgCX0KLSAgICAgICAgdXJpTWFwID0gewotICAgICAgICAgIGZyb20gPSAicGxhdGZvcm06L3BsdWdpbi9vcmcuZWNsaXBzZS5lbWYuZWNvcmUvbW9kZWwvRWNvcmUuZ2VubW9kZWwiCi0gICAgICAgICAgIHRvID0gInBsYXRmb3JtOi9yZXNvdXJjZS9vcmcuZWNsaXBzZS5lbWYuZWNvcmUvbW9kZWwvRWNvcmUuZ2VubW9kZWwiCi0gICAgICAgIH0KLSAgICAgICAgcmVnaXN0ZXJHZW5lcmF0ZWRFUGFja2FnZSA9ICJvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRWNvcmVQYWNrYWdlIgotICAgICAgICByZWdpc3RlckdlbmVyYXRlZEVQYWNrYWdlID0gIm9yZy5lY2xpcHNlLmVtZi5jb2RlZ2VuLmVjb3JlLmdlbm1vZGVsLkdlbk1vZGVsUGFja2FnZSIKLSAgICAgICAgcmVnaXN0ZXJHZW5Nb2RlbEZpbGUgPSAicGxhdGZvcm06L3Jlc291cmNlL29yZy5lY2xpcHNlLmVtZi5lY29yZS9tb2RlbC9FY29yZS5nZW5tb2RlbCIJCi0JCXJlZ2lzdGVyR2VuTW9kZWxGaWxlID0gInBsYXRmb3JtOi9yZXNvdXJjZS9vcmcuZWNsaXBzZS5lbWYuY29kZWdlbi5lY29yZS9tb2RlbC9HZW5Nb2RlbC5nZW5tb2RlbCIKLQkJCi0JCS8vbG9hZCBVTUwKLQkJCi0JCXVyaU1hcCA9IHsKLSAgICAgICAgICAgIGZyb20gPSAicGxhdGZvcm06L3BsdWdpbi9vcmcuZWNsaXBzZS51bWwyLnR5cGVzL21vZGVsL1R5cGVzLmdlbm1vZGVsIgotICAgICAgICAgICAgdG8gPSAicGxhdGZvcm06L3Jlc291cmNlL29yZy5lY2xpcHNlLnVtbDIudHlwZXMvbW9kZWwvVHlwZXMuZ2VubW9kZWwiCi0gICAgICAgIH0KLSAgICAgICAgdXJpTWFwID0gewotICAgICAgICAgICAgZnJvbSA9ICJwbGF0Zm9ybTovcGx1Z2luL29yZy5lY2xpcHNlLnVtbDIudW1sL21vZGVsL1VNTC5nZW5tb2RlbCIKLSAgICAgICAgICAgIHRvID0gInBsYXRmb3JtOi9yZXNvdXJjZS9vcmcuZWNsaXBzZS51bWwyLnVtbC9tb2RlbC9VTUwuZ2VubW9kZWwiCi0gICAgICAgIH0KLQkJCi0gCQl1cmlNYXAgPSB7Ci0gICAgICAgICAgICBmcm9tID0gInBsYXRmb3JtOi9wbHVnaW4vb3JnLmVjbGlwc2UudW1sMi5jb2RlZ2VuLmVjb3JlL21vZGVsL0dlbk1vZGVsLmdlbm1vZGVsIgotICAgICAgICAgICAgdG8gPSAicGxhdGZvcm06L3Jlc291cmNlL29yZy5lY2xpcHNlLnVtbDIuY29kZWdlbi5lY29yZS9tb2RlbC9HZW5Nb2RlbC5nZW5tb2RlbCIgCi0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHVyaU1hcCA9IHsKLSAgICAgICAgICAgIGZyb20gPSAicGxhdGZvcm06L3BsdWdpbi9vcmcuZWNsaXBzZS51bWwyLmNvZGVnZW4uZWNvcmUvbW9kZWwvR2VuTW9kZWwuZWNvcmUiCi0gICAgICAgICAgICB0byA9ICJwbGF0Zm9ybTovcmVzb3VyY2Uvb3JnLmVjbGlwc2UudW1sMi5jb2RlZ2VuLmVjb3JlL21vZGVsL0dlbk1vZGVsLmVjb3JlIgotICAgICAgICB9Ci0gICAgICAgIHVyaU1hcCA9IHsKLSAgICAgICAgICAgIGZyb20gPSAicGxhdGZvcm06L3BsdWdpbi9vcmcuZWNsaXBzZS51bWwyLnVtbC9tb2RlbC9VTUwuZWNvcmUiCi0gICAgICAgICAgICB0byA9ICJwbGF0Zm9ybTovcmVzb3VyY2Uvb3JnLmVjbGlwc2UudW1sMi51bWwvbW9kZWwvVU1MLmVjb3JlIgotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICB1cmlNYXAgPSB7Ci0gICAgICAgICAgICBmcm9tID0gInBsYXRmb3JtOi9wbHVnaW4vb3JnLmVjbGlwc2UudW1sMi50eXBlcy9tb2RlbC9UeXBlcy5lY29yZSIKLSAgICAgICAgICAgIHRvID0gInBsYXRmb3JtOi9yZXNvdXJjZS9vcmcuZWNsaXBzZS51bWwyLnR5cGVzL21vZGVsL1R5cGVzLmVjb3JlIgotICAgICAgICB9Ci0gICAgICAgIHJlZ2lzdGVyR2VuZXJhdGVkRVBhY2thZ2UgPSAib3JnLmVjbGlwc2UudW1sMi50eXBlcy5UeXBlc1BhY2thZ2UiCi0gICAgICAgIHJlZ2lzdGVyR2VuZXJhdGVkRVBhY2thZ2UgPSAib3JnLmVjbGlwc2UudW1sMi51bWwuVU1MUGFja2FnZSIKLSAgICAgICAgcmVnaXN0ZXJHZW5lcmF0ZWRFUGFja2FnZSA9ICJvcmcuZWNsaXBzZS51bWwyLmNvZGVnZW4uZWNvcmUuZ2VubW9kZWwuR2VuTW9kZWxQYWNrYWdlIgotICAgICAgICAKLSAgICAgICAgcmVnaXN0ZXJHZW5Nb2RlbEZpbGUgPSAicGxhdGZvcm06L3Jlc291cmNlL29yZy5lY2xpcHNlLnVtbDIudHlwZXMvbW9kZWwvVHlwZXMuZ2VubW9kZWwiCi0JIAlyZWdpc3Rlckdlbk1vZGVsRmlsZSA9ICJwbGF0Zm9ybTovcmVzb3VyY2Uvb3JnLmVjbGlwc2UudW1sMi51bWwvbW9kZWwvVU1MLmdlbm1vZGVsIgotICAgICAgICByZWdpc3Rlckdlbk1vZGVsRmlsZSA9ICJwbGF0Zm9ybTovcmVzb3VyY2Uvb3JnLmVjbGlwc2UudW1sMi5jb2RlZ2VuLmVjb3JlL21vZGVsL0dlbk1vZGVsLmdlbm1vZGVsIgotCX0JCQkJCQkJCQkKLQkJCQkJCQkKLQljb21wb25lbnQgPSBYdGV4dEdlbmVyYXRvciB7Ci0JCWNvbmZpZ3VyYXRpb24gPSB7Ci0JCQlwcm9qZWN0ID0gU3RhbmRhcmRQcm9qZWN0Q29uZmlnIHsKLQkJCQliYXNlTmFtZSA9ICJvcmcucG9sYXJzeXMuY2hlc3MueHRleHQuZmxhZHNsIgotCQkJCXJvb3RQYXRoID0gcm9vdFBhdGgKLQkJCQllY2xpcHNlUGx1Z2luID0gewotCQkJCQllbmFibGVkID0gdHJ1ZQotCQkJCX0KLQkJCQljcmVhdGVFY2xpcHNlTWV0YURhdGEgPSB0cnVlCi0JCQl9Ci0JCQljb2RlID0gewotCQkJCWVuY29kaW5nID0gIlVURi04IgotCQkJCWxpbmVEZWxpbWl0ZXIgPSAiXG4iCi0JCQkJZmlsZUhlYWRlciA9ICIvKlxuICogZ2VuZXJhdGVkIGJ5IFh0ZXh0IFwke3ZlcnNpb259XG4gKi8iCi0JCQl9Ci0JCX0KLQkJbGFuZ3VhZ2UgPSBTdGFuZGFyZExhbmd1YWdlIHsKLQkJCW5hbWUgPSAib3JnLnBvbGFyc3lzLmNoZXNzLnh0ZXh0LkZsYURzbCIKLQkJCWZpbGVFeHRlbnNpb25zID0gImZsYWRzbCIKLQotCQkJc2VyaWFsaXplciA9IHsKLQkJCQlnZW5lcmF0ZVN0dWIgPSB0cnVlCi0JCQl9Ci0JCQkKLQkJCWZvcm1hdHRlciA9IHsKLQkJCQlnZW5lcmF0ZVN0dWI9dHJ1ZQotCQkJfQotCQkJCi0JCQl2YWxpZGF0b3IgPSB7Ci0JCQkJLy8gY29tcG9zZWRDaGVjayA9ICJvcmcuZWNsaXBzZS54dGV4dC52YWxpZGF0aW9uLk5hbWVzQXJlVW5pcXVlVmFsaWRhdG9yIgotCQkJfQotCQl9Ci0JfQotfQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisgLQ0KKyAtIENvcHlyaWdodCAoYykgMjAxMywgMjAxNSBJbnRlY3MgU3BBIA0KKyAtIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCisgLSB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAtIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQorIC0NCisgLSBDb250cmlidXRvcnM6DQorIC0gDQorIC0gU3RlZmFubyBQdXJpIHN0ZWZhbm8ucHVyaUBpbnRlY3MuaXQNCisgLSAgDQorIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uIGFuZC9vciBpbml0aWFsIGRvY3VtZW50YXRpb24NCisgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCittb2R1bGUgb3JnLnBvbGFyc3lzLmNoZXNzLnh0ZXh0LkdlbmVyYXRlRmxhRHNsDQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5td2UudXRpbHMuKg0KK2ltcG9ydCBvcmcuZWNsaXBzZS54dGV4dC5nZW5lcmF0b3IuKg0KK2ltcG9ydCBvcmcuZWNsaXBzZS54dGV4dC51aS5nZW5lcmF0b3IuKg0KKw0KK3ZhciBncmFtbWFyVVJJID0gImNsYXNzcGF0aDovb3JnL3BvbGFyc3lzL2NoZXNzL3h0ZXh0L0ZsYURzbC54dGV4dCINCit2YXIgZmlsZUV4dGVuc2lvbnMgPSAiZmxhZHNsIg0KK3ZhciBwcm9qZWN0TmFtZSA9ICJvcmcucG9sYXJzeXMuY2hlc3MueHRleHQuZmxhZHNsIg0KK3ZhciBydW50aW1lUHJvamVjdCA9ICIuLi8ke3Byb2plY3ROYW1lfSINCit2YXIgZ2VuZXJhdGVYdGVuZFN0dWIgPSB0cnVlDQordmFyIGVuY29kaW5nID0gIlVURi04Ig0KKw0KK1dvcmtmbG93IHsNCisgICAgYmVhbiA9IFN0YW5kYWxvbmVTZXR1cCB7DQorICAgIAlzY2FuQ2xhc3NQYXRoID0gdHJ1ZQ0KKyAgICAJcGxhdGZvcm1VcmkgPSAiJHtydW50aW1lUHJvamVjdH0vLi4iDQorICAgIAkNCisgICAgCS8vbG9hZCBFTUYgRUNPUkUJDQorCQl1cmlNYXAgPSB7DQorICAgICAgICAgICAgZnJvbSA9ICJwbGF0Zm9ybTovcGx1Z2luL29yZy5lY2xpcHNlLmVtZi5lY29yZS9tb2RlbC9FY29yZS5lY29yZSINCisgICAgICAgICAgICB0byA9ICJwbGF0Zm9ybTovcmVzb3VyY2Uvb3JnLmVjbGlwc2UuZW1mLmVjb3JlL21vZGVsL0Vjb3JlLmVjb3JlIg0KKyAgICAgICAgfQ0KKwkJDQorCQl1cmlNYXAgPSB7IGZyb20gPSAicGxhdGZvcm06L3BsdWdpbi9vcmcuZWNsaXBzZS5lbWYuY29kZWdlbi5lY29yZS9tb2RlbC9HZW5Nb2RlbC5nZW5tb2RlbCINCisgICAgICAgICAgIAkJICAgdG8gPSAicGxhdGZvcm06L3Jlc291cmNlL29yZy5lY2xpcHNlLmVtZi5jb2RlZ2VuLmVjb3JlL21vZGVsL0dlbk1vZGVsLmdlbm1vZGVsIg0KKyAgICAgICAJfQ0KKyAgICAgICAgdXJpTWFwID0gew0KKyAgICAgICAgICBmcm9tID0gInBsYXRmb3JtOi9wbHVnaW4vb3JnLmVjbGlwc2UuZW1mLmVjb3JlL21vZGVsL0Vjb3JlLmdlbm1vZGVsIg0KKyAgICAgICAgICAgdG8gPSAicGxhdGZvcm06L3Jlc291cmNlL29yZy5lY2xpcHNlLmVtZi5lY29yZS9tb2RlbC9FY29yZS5nZW5tb2RlbCINCisgICAgICAgIH0NCisgICAgICAgIHJlZ2lzdGVyR2VuZXJhdGVkRVBhY2thZ2UgPSAib3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVjb3JlUGFja2FnZSINCisgICAgICAgIHJlZ2lzdGVyR2VuZXJhdGVkRVBhY2thZ2UgPSAib3JnLmVjbGlwc2UuZW1mLmNvZGVnZW4uZWNvcmUuZ2VubW9kZWwuR2VuTW9kZWxQYWNrYWdlIg0KKyAgICAgICAgcmVnaXN0ZXJHZW5Nb2RlbEZpbGUgPSAicGxhdGZvcm06L3Jlc291cmNlL29yZy5lY2xpcHNlLmVtZi5lY29yZS9tb2RlbC9FY29yZS5nZW5tb2RlbCIJDQorCQlyZWdpc3Rlckdlbk1vZGVsRmlsZSA9ICJwbGF0Zm9ybTovcmVzb3VyY2Uvb3JnLmVjbGlwc2UuZW1mLmNvZGVnZW4uZWNvcmUvbW9kZWwvR2VuTW9kZWwuZ2VubW9kZWwiDQorCQkNCisJCS8vbG9hZCBVTUwNCisJCQ0KKwkJdXJpTWFwID0gew0KKyAgICAgICAgICAgIGZyb20gPSAicGxhdGZvcm06L3BsdWdpbi9vcmcuZWNsaXBzZS51bWwyLnR5cGVzL21vZGVsL1R5cGVzLmdlbm1vZGVsIg0KKyAgICAgICAgICAgIHRvID0gInBsYXRmb3JtOi9yZXNvdXJjZS9vcmcuZWNsaXBzZS51bWwyLnR5cGVzL21vZGVsL1R5cGVzLmdlbm1vZGVsIg0KKyAgICAgICAgfQ0KKyAgICAgICAgdXJpTWFwID0gew0KKyAgICAgICAgICAgIGZyb20gPSAicGxhdGZvcm06L3BsdWdpbi9vcmcuZWNsaXBzZS51bWwyLnVtbC9tb2RlbC9VTUwuZ2VubW9kZWwiDQorICAgICAgICAgICAgdG8gPSAicGxhdGZvcm06L3Jlc291cmNlL29yZy5lY2xpcHNlLnVtbDIudW1sL21vZGVsL1VNTC5nZW5tb2RlbCINCisgICAgICAgIH0NCisJCQ0KKyAJCXVyaU1hcCA9IHsNCisgICAgICAgICAgICBmcm9tID0gInBsYXRmb3JtOi9wbHVnaW4vb3JnLmVjbGlwc2UudW1sMi5jb2RlZ2VuLmVjb3JlL21vZGVsL0dlbk1vZGVsLmdlbm1vZGVsIg0KKyAgICAgICAgICAgIHRvID0gInBsYXRmb3JtOi9yZXNvdXJjZS9vcmcuZWNsaXBzZS51bWwyLmNvZGVnZW4uZWNvcmUvbW9kZWwvR2VuTW9kZWwuZ2VubW9kZWwiIA0KKyAgICAgICAgfQ0KKyAgICAgICAgDQorICAgICAgICB1cmlNYXAgPSB7DQorICAgICAgICAgICAgZnJvbSA9ICJwbGF0Zm9ybTovcGx1Z2luL29yZy5lY2xpcHNlLnVtbDIuY29kZWdlbi5lY29yZS9tb2RlbC9HZW5Nb2RlbC5lY29yZSINCisgICAgICAgICAgICB0byA9ICJwbGF0Zm9ybTovcmVzb3VyY2Uvb3JnLmVjbGlwc2UudW1sMi5jb2RlZ2VuLmVjb3JlL21vZGVsL0dlbk1vZGVsLmVjb3JlIg0KKyAgICAgICAgfQ0KKyAgICAgICAgdXJpTWFwID0gew0KKyAgICAgICAgICAgIGZyb20gPSAicGxhdGZvcm06L3BsdWdpbi9vcmcuZWNsaXBzZS51bWwyLnVtbC9tb2RlbC9VTUwuZWNvcmUiDQorICAgICAgICAgICAgdG8gPSAicGxhdGZvcm06L3Jlc291cmNlL29yZy5lY2xpcHNlLnVtbDIudW1sL21vZGVsL1VNTC5lY29yZSINCisgICAgICAgIH0NCisgICAgICAgIA0KKyAgICAgICAgdXJpTWFwID0gew0KKyAgICAgICAgICAgIGZyb20gPSAicGxhdGZvcm06L3BsdWdpbi9vcmcuZWNsaXBzZS51bWwyLnR5cGVzL21vZGVsL1R5cGVzLmVjb3JlIg0KKyAgICAgICAgICAgIHRvID0gInBsYXRmb3JtOi9yZXNvdXJjZS9vcmcuZWNsaXBzZS51bWwyLnR5cGVzL21vZGVsL1R5cGVzLmVjb3JlIg0KKyAgICAgICAgfQ0KKyAgICAgICAgcmVnaXN0ZXJHZW5lcmF0ZWRFUGFja2FnZSA9ICJvcmcuZWNsaXBzZS51bWwyLnR5cGVzLlR5cGVzUGFja2FnZSINCisgICAgICAgIHJlZ2lzdGVyR2VuZXJhdGVkRVBhY2thZ2UgPSAib3JnLmVjbGlwc2UudW1sMi51bWwuVU1MUGFja2FnZSINCisgICAgICAgIHJlZ2lzdGVyR2VuZXJhdGVkRVBhY2thZ2UgPSAib3JnLmVjbGlwc2UudW1sMi5jb2RlZ2VuLmVjb3JlLmdlbm1vZGVsLkdlbk1vZGVsUGFja2FnZSINCisgICAgICAgIA0KKyAgICAgICAgcmVnaXN0ZXJHZW5Nb2RlbEZpbGUgPSAicGxhdGZvcm06L3Jlc291cmNlL29yZy5lY2xpcHNlLnVtbDIudHlwZXMvbW9kZWwvVHlwZXMuZ2VubW9kZWwiDQorCSAJcmVnaXN0ZXJHZW5Nb2RlbEZpbGUgPSAicGxhdGZvcm06L3Jlc291cmNlL29yZy5lY2xpcHNlLnVtbDIudW1sL21vZGVsL1VNTC5nZW5tb2RlbCINCisgICAgICAgIHJlZ2lzdGVyR2VuTW9kZWxGaWxlID0gInBsYXRmb3JtOi9yZXNvdXJjZS9vcmcuZWNsaXBzZS51bWwyLmNvZGVnZW4uZWNvcmUvbW9kZWwvR2VuTW9kZWwuZ2VubW9kZWwiDQorICAgICAgICANCisJfQ0KKyAgICANCisgICAgY29tcG9uZW50ID0gRGlyZWN0b3J5Q2xlYW5lciB7DQorICAgIAlkaXJlY3RvcnkgPSAiJHtydW50aW1lUHJvamVjdH0vc3JjLWdlbiINCisgICAgfQ0KKyAgICANCisgICAgY29tcG9uZW50ID0gRGlyZWN0b3J5Q2xlYW5lciB7DQorICAgIAlkaXJlY3RvcnkgPSAiJHtydW50aW1lUHJvamVjdH0vbW9kZWwvZ2VuZXJhdGVkIg0KKyAgICB9DQorICAgIA0KKyAgICBjb21wb25lbnQgPSBEaXJlY3RvcnlDbGVhbmVyIHsNCisgICAgCWRpcmVjdG9yeSA9ICIke3J1bnRpbWVQcm9qZWN0fS51aS9zcmMtZ2VuIg0KKyAgICB9DQorICAgIA0KKyAgICBjb21wb25lbnQgPSBEaXJlY3RvcnlDbGVhbmVyIHsNCisgICAgCWRpcmVjdG9yeSA9ICIke3J1bnRpbWVQcm9qZWN0fS50ZXN0cy9zcmMtZ2VuIg0KKyAgICB9DQorICAgIA0KKyAgICBjb21wb25lbnQgPSBHZW5lcmF0b3Igew0KKyAgICAJcGF0aFJ0UHJvamVjdCA9IHJ1bnRpbWVQcm9qZWN0DQorICAgIAlwYXRoVWlQcm9qZWN0ID0gIiR7cnVudGltZVByb2plY3R9LnVpIg0KKyAgICAJcHJvamVjdE5hbWVSdCA9IHByb2plY3ROYW1lDQorICAgIAlwcm9qZWN0TmFtZVVpID0gIiR7cHJvamVjdE5hbWV9LnVpIg0KKyAgICAJZW5jb2RpbmcgPSBlbmNvZGluZw0KKyAgICAJbGFuZ3VhZ2UgPSBhdXRvLWluamVjdCB7DQorICAgIAkJDQorICAgIAkJdXJpID0gZ3JhbW1hclVSSQ0KKyAgICANCisgICAgCQkvLyBKYXZhIEFQSSB0byBhY2Nlc3MgZ3JhbW1hciBlbGVtZW50cyAocmVxdWlyZWQgYnkgc2V2ZXJhbCBvdGhlciBmcmFnbWVudHMpDQorICAgIAkJZnJhZ21lbnQgPSBncmFtbWFyQWNjZXNzLkdyYW1tYXJBY2Nlc3NGcmFnbWVudCBhdXRvLWluamVjdCB7fQ0KKyAgICANCisgICAgCQkvLyBnZW5lcmF0ZXMgSmF2YSBBUEkgZm9yIHRoZSBnZW5lcmF0ZWQgRVBhY2thZ2VzDQorICAgIAkJZnJhZ21lbnQgPSBlY29yZS5FTUZHZW5lcmF0b3JGcmFnbWVudCBhdXRvLWluamVjdCB7fQ0KKyAgICANCisgICAgCQkvLyB0aGUgb2xkIHNlcmlhbGl6YXRpb24gY29tcG9uZW50DQorICAgIAkJLy8gZnJhZ21lbnQgPSBwYXJzZVRyZWVDb25zdHJ1Y3Rvci5QYXJzZVRyZWVDb25zdHJ1Y3RvckZyYWdtZW50IGF1dG8taW5qZWN0IHt9ICAgIA0KKyAgICANCisgICAgCQkvLyBzZXJpYWxpemVyIDIuMA0KKyAgICAJCWZyYWdtZW50ID0gc2VyaWFsaXplci5TZXJpYWxpemVyRnJhZ21lbnQgYXV0by1pbmplY3Qgew0KKyAgICAJCQlnZW5lcmF0ZVN0dWIgPSBmYWxzZQ0KKyAgICAJCX0NCisgICAgDQorICAgIAkJLy8gYSBjdXN0b20gUmVzb3VyY2VGYWN0b3J5IGZvciB1c2Ugd2l0aCBFTUYNCisgICAgCQlmcmFnbWVudCA9IHJlc291cmNlRmFjdG9yeS5SZXNvdXJjZUZhY3RvcnlGcmFnbWVudCBhdXRvLWluamVjdCB7fQ0KKyAgICANCisgICAgCQkvLyBUaGUgYW50bHIgcGFyc2VyIGdlbmVyYXRvciBmcmFnbWVudC4NCisgICAgCQlmcmFnbWVudCA9IHBhcnNlci5hbnRsci5YdGV4dEFudGxyR2VuZXJhdG9yRnJhZ21lbnQgYXV0by1pbmplY3Qgew0KKyAgICAJCS8vICBvcHRpb25zID0gew0KKyAgICAJCS8vICAgICAgYmFja3RyYWNrID0gdHJ1ZQ0KKyAgICAJCS8vICB9DQorICAgIAkJfQ0KKyAgICANCisgICAgCQkvLyBYdGVuZC1iYXNlZCBBUEkgZm9yIHZhbGlkYXRpb24NCisgICAgCQlmcmFnbWVudCA9IHZhbGlkYXRpb24uVmFsaWRhdG9yRnJhZ21lbnQgYXV0by1pbmplY3Qgew0KKyAgICAJCSAgICBjb21wb3NlZENoZWNrID0gIm9yZy5lY2xpcHNlLnh0ZXh0LnZhbGlkYXRpb24uSW1wb3J0VXJpVmFsaWRhdG9yIg0KKyAgICAJCS8vICAgIGNvbXBvc2VkQ2hlY2sgPSAib3JnLmVjbGlwc2UueHRleHQudmFsaWRhdGlvbi5OYW1lc0FyZVVuaXF1ZVZhbGlkYXRvciINCisgICAgCQl9DQorICAgIA0KKyAgICAJCS8vIG9sZCBzY29waW5nIGFuZCBleHBvcnRpbmcgQVBJDQorICAgIAkJLy8gZnJhZ21lbnQgPSBzY29waW5nLkltcG9ydFVSSVNjb3BpbmdGcmFnbWVudCBhdXRvLWluamVjdCB7fQ0KKyAgICAJCS8vIGZyYWdtZW50ID0gZXhwb3J0aW5nLlNpbXBsZU5hbWVzRnJhZ21lbnQgYXV0by1pbmplY3Qge30NCisgICAgDQorICAgIAkJLy8gc2NvcGluZyBhbmQgZXhwb3J0aW5nIEFQSQ0KKyAgICAJCWZyYWdtZW50ID0gc2NvcGluZy5JbXBvcnROYW1lc3BhY2VzU2NvcGluZ0ZyYWdtZW50IGF1dG8taW5qZWN0IHt9DQorICAgIAkJZnJhZ21lbnQgPSBleHBvcnRpbmcuUXVhbGlmaWVkTmFtZXNGcmFnbWVudCBhdXRvLWluamVjdCB7fQ0KKyAgICAJCWZyYWdtZW50ID0gYnVpbGRlci5CdWlsZGVySW50ZWdyYXRpb25GcmFnbWVudCBhdXRvLWluamVjdCB7fQ0KKyAgICANCisgICAgCQkvLyBnZW5lcmF0b3IgQVBJDQorICAgIAkJZnJhZ21lbnQgPSBnZW5lcmF0b3IuR2VuZXJhdG9yRnJhZ21lbnQgYXV0by1pbmplY3Qge30NCisgICAgDQorICAgIAkJLy8gZm9ybWF0dGVyIEFQSQ0KKyAgICAJCWZyYWdtZW50ID0gZm9ybWF0dGluZy5Gb3JtYXR0ZXJGcmFnbWVudCBhdXRvLWluamVjdCB7fQ0KKyAgICANCisgICAgCQkvLyBsYWJlbGluZyBBUEkNCisgICAgCQlmcmFnbWVudCA9IGxhYmVsaW5nLkxhYmVsUHJvdmlkZXJGcmFnbWVudCBhdXRvLWluamVjdCB7fQ0KKyAgICANCisgICAgCQkvLyBvdXRsaW5lIEFQSQ0KKyAgICAJCWZyYWdtZW50ID0gb3V0bGluZS5PdXRsaW5lVHJlZVByb3ZpZGVyRnJhZ21lbnQgYXV0by1pbmplY3Qge30NCisgICAgCQlmcmFnbWVudCA9IG91dGxpbmUuUXVpY2tPdXRsaW5lRnJhZ21lbnQgYXV0by1pbmplY3Qge30NCisgICAgDQorICAgIAkJLy8gcXVpY2tmaXggQVBJDQorICAgIAkJZnJhZ21lbnQgPSBxdWlja2ZpeC5RdWlja2ZpeFByb3ZpZGVyRnJhZ21lbnQgYXV0by1pbmplY3Qge30NCisgICAgDQorICAgIAkJLy8gY29udGVudCBhc3Npc3QgQVBJDQorICAgIAkJZnJhZ21lbnQgPSBjb250ZW50QXNzaXN0LkNvbnRlbnRBc3Npc3RGcmFnbWVudCBhdXRvLWluamVjdCB7fQ0KKyAgICANCisgICAgCQkvLyBnZW5lcmF0ZXMgYSBtb3JlIGxpZ2h0d2VpZ2h0IEFudGxyIHBhcnNlciBhbmQgbGV4ZXIgdGFpbG9yZWQgZm9yIGNvbnRlbnQgYXNzaXN0DQorICAgIAkJZnJhZ21lbnQgPSBwYXJzZXIuYW50bHIuWHRleHRBbnRsclVpR2VuZXJhdG9yRnJhZ21lbnQgYXV0by1pbmplY3Qge30NCisgICAgDQorICAgIAkJLy8gZ2VuZXJhdGVzIGp1bml0IHRlc3Qgc3VwcG9ydCBjbGFzc2VzIGludG8gR2VuZXJhdG9yI3BhdGhUZXN0UHJvamVjdA0KKyAgICAJCWZyYWdtZW50ID0ganVuaXQuSnVuaXQ0RnJhZ21lbnQgYXV0by1pbmplY3Qge30NCisgICAgDQorICAgIAkJLy8gcmVuYW1lIHJlZmFjdG9yaW5nDQorICAgIAkJZnJhZ21lbnQgPSByZWZhY3RvcmluZy5SZWZhY3RvckVsZW1lbnROYW1lRnJhZ21lbnQgYXV0by1pbmplY3Qge30NCisgICAgDQorICAgIAkJLy8gcHJvdmlkZXMgdGhlIG5lY2Vzc2FyeSBiaW5kaW5ncyBmb3IgamF2YSB0eXBlcyBpbnRlZ3JhdGlvbg0KKyAgICAJCWZyYWdtZW50ID0gdHlwZXMuVHlwZXNHZW5lcmF0b3JGcmFnbWVudCBhdXRvLWluamVjdCB7fQ0KKyAgICANCisgICAgCQkvLyBnZW5lcmF0ZXMgdGhlIHJlcXVpcmVkIGJpbmRpbmdzIG9ubHkgaWYgdGhlIGdyYW1tYXIgaW5oZXJpdHMgZnJvbSBYYmFzZQ0KKyAgICAJCWZyYWdtZW50ID0geGJhc2UuWGJhc2VHZW5lcmF0b3JGcmFnbWVudCBhdXRvLWluamVjdCB7fQ0KKyAgICAJCQ0KKyAgICAJCS8vIGdlbmVyYXRlcyB0aGUgcmVxdWlyZWQgYmluZGluZ3Mgb25seSBpZiB0aGUgZ3JhbW1hciBpbmhlcml0cyBmcm9tIFh0eXBlDQorICAgIAkJZnJhZ21lbnQgPSB4YmFzZS5YdHlwZUdlbmVyYXRvckZyYWdtZW50IGF1dG8taW5qZWN0IHt9DQorICAgIA0KKyAgICAJCS8vIHByb3ZpZGVzIGEgcHJlZmVyZW5jZSBwYWdlIGZvciB0ZW1wbGF0ZSBwcm9wb3NhbHMNCisgICAgCQlmcmFnbWVudCA9IHRlbXBsYXRlcy5Db2RldGVtcGxhdGVzR2VuZXJhdG9yRnJhZ21lbnQgYXV0by1pbmplY3Qge30NCisgICAgDQorICAgIAkJLy8gcHJvdmlkZXMgYSBjb21wYXJlIHZpZXcNCisgICAgCQlmcmFnbWVudCA9IGNvbXBhcmUuQ29tcGFyZUZyYWdtZW50IGF1dG8taW5qZWN0IHt9DQorICAgIAl9DQorICAgIH0NCit9DQorDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLnh0ZXh0LmZsYWRzbC9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3h0ZXh0L2Zvcm1hdHRpbmcvRmxhRHNsRm9ybWF0dGVyLnh0ZW5kIGIvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLnh0ZXh0LmZsYWRzbC9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3h0ZXh0L2Zvcm1hdHRpbmcvRmxhRHNsRm9ybWF0dGVyLnh0ZW5kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJjNmJiNzIKLS0tIC9kZXYvbnVsbAorKysgYi9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MueHRleHQuZmxhZHNsL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MveHRleHQvZm9ybWF0dGluZy9GbGFEc2xGb3JtYXR0ZXIueHRlbmQKQEAgLTAsMCArMSw0NSBAQAorLyoNCisgKiBnZW5lcmF0ZWQgYnkgWHRleHQNCisgKi8NCisgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisgLQ0KKyAtIENvcHlyaWdodCAoYykgMjAxMywgMjAxNSBJbnRlY3MgU3BBIA0KKyAtIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCisgLSB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAtIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQorIC0NCisgLSBDb250cmlidXRvcnM6DQorIC0gDQorIC0gU3RlZmFubyBQdXJpIHN0ZWZhbm8ucHVyaUBpbnRlY3MuaXQNCisgLSAgDQorIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uIGFuZC9vciBpbml0aWFsIGRvY3VtZW50YXRpb24NCisgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisgDQorcGFja2FnZSBvcmcucG9sYXJzeXMuY2hlc3MueHRleHQuZm9ybWF0dGluZw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS54dGV4dC5mb3JtYXR0aW5nLmltcGwuQWJzdHJhY3REZWNsYXJhdGl2ZUZvcm1hdHRlcg0KK2ltcG9ydCBvcmcuZWNsaXBzZS54dGV4dC5mb3JtYXR0aW5nLmltcGwuRm9ybWF0dGluZ0NvbmZpZw0KKy8vIGltcG9ydCBjb20uZ29vZ2xlLmluamVjdC5JbmplY3Q7DQorLy8gaW1wb3J0IG9yZy5wb2xhcnN5cy5jaGVzcy54dGV4dC5zZXJ2aWNlcy5GbGFEc2xHcmFtbWFyQWNjZXNzDQorDQorLyoqDQorICogVGhpcyBjbGFzcyBjb250YWlucyBjdXN0b20gZm9ybWF0dGluZyBkZWNsYXJhdGlvbnMuDQorICogDQorICogU2VlIGh0dHBzOi8vd3d3LmVjbGlwc2Uub3JnL1h0ZXh0L2RvY3VtZW50YXRpb24vMzAzX3J1bnRpbWVfY29uY2VwdHMuaHRtbCNmb3JtYXR0aW5nDQorICogb24gaG93IGFuZCB3aGVuIHRvIHVzZSBpdC4NCisgKiANCisgKiBBbHNvIHNlZSB7QGxpbmsgb3JnLmVjbGlwc2UueHRleHQueHRleHQuWHRleHRGb3JtYXR0aW5nVG9rZW5TZXJpYWxpemVyfSBhcyBhbiBleGFtcGxlDQorICovDQorY2xhc3MgRmxhRHNsRm9ybWF0dGVyIGV4dGVuZHMgQWJzdHJhY3REZWNsYXJhdGl2ZUZvcm1hdHRlciB7DQorDQorLy8JQEluamVjdCBleHRlbnNpb24gRmxhRHNsR3JhbW1hckFjY2Vzcw0KKwkNCisJb3ZlcnJpZGUgcHJvdGVjdGVkIHZvaWQgY29uZmlndXJlRm9ybWF0dGluZyhGb3JtYXR0aW5nQ29uZmlnIGMpIHsNCisvLyBJdCdzIHVzdWFsbHkgYSBnb29kIGlkZWEgdG8gYWN0aXZhdGUgdGhlIGZvbGxvd2luZyB0aHJlZSBzdGF0ZW1lbnRzLg0KKy8vIFRoZXkgd2lsbCBhZGQgYW5kIHByZXNlcnZlIG5ld2xpbmVzIGFyb3VuZCBjb21tZW50cw0KKy8vCQljLnNldExpbmV3cmFwKDAsIDEsIDIpLmJlZm9yZShTTF9DT01NRU5UUnVsZSkNCisvLwkJYy5zZXRMaW5ld3JhcCgwLCAxLCAyKS5iZWZvcmUoTUxfQ09NTUVOVFJ1bGUpDQorLy8JCWMuc2V0TGluZXdyYXAoMCwgMSwgMSkuYWZ0ZXIoTUxfQ09NTUVOVFJ1bGUpDQorCX0NCit9DQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLnh0ZXh0LmZsYWRzbC9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3h0ZXh0L2dlbmVyYXRvci9GbGFEc2xHZW5lcmF0b3IueHRlbmQgYi9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MueHRleHQuZmxhZHNsL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MveHRleHQvZ2VuZXJhdG9yL0ZsYURzbEdlbmVyYXRvci54dGVuZAppbmRleCAxOWM4OWU4Li4yYzg0NjNkIDEwMDY0NAotLS0gYS9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MueHRleHQuZmxhZHNsL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MveHRleHQvZ2VuZXJhdG9yL0ZsYURzbEdlbmVyYXRvci54dGVuZAorKysgYi9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MueHRleHQuZmxhZHNsL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MveHRleHQvZ2VuZXJhdG9yL0ZsYURzbEdlbmVyYXRvci54dGVuZApAQCAtMSwyNSArMSwzOSBAQAotLyoKLSAqIGdlbmVyYXRlZCBieSBYdGV4dCAyLjEyLjAKLSAqLwotcGFja2FnZSBvcmcucG9sYXJzeXMuY2hlc3MueHRleHQuZ2VuZXJhdG9yCi0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUucmVzb3VyY2UuUmVzb3VyY2UKLWltcG9ydCBvcmcuZWNsaXBzZS54dGV4dC5nZW5lcmF0b3IuQWJzdHJhY3RHZW5lcmF0b3IKLWltcG9ydCBvcmcuZWNsaXBzZS54dGV4dC5nZW5lcmF0b3IuSUZpbGVTeXN0ZW1BY2Nlc3MyCi1pbXBvcnQgb3JnLmVjbGlwc2UueHRleHQuZ2VuZXJhdG9yLklHZW5lcmF0b3JDb250ZXh0Ci0KLS8qKgotICogR2VuZXJhdGVzIGNvZGUgZnJvbSB5b3VyIG1vZGVsIGZpbGVzIG9uIHNhdmUuCi0gKiAKLSAqIFNlZSBodHRwczovL3d3dy5lY2xpcHNlLm9yZy9YdGV4dC9kb2N1bWVudGF0aW9uLzMwM19ydW50aW1lX2NvbmNlcHRzLmh0bWwjY29kZS1nZW5lcmF0aW9uCi0gKi8KLWNsYXNzIEZsYURzbEdlbmVyYXRvciBleHRlbmRzIEFic3RyYWN0R2VuZXJhdG9yIHsKLQotCW92ZXJyaWRlIHZvaWQgZG9HZW5lcmF0ZShSZXNvdXJjZSByZXNvdXJjZSwgSUZpbGVTeXN0ZW1BY2Nlc3MyIGZzYSwgSUdlbmVyYXRvckNvbnRleHQgY29udGV4dCkgewotLy8JCWZzYS5nZW5lcmF0ZUZpbGUoJ2dyZWV0aW5ncy50eHQnLCAnUGVvcGxlIHRvIGdyZWV0OiAnICsgCi0vLwkJCXJlc291cmNlLmFsbENvbnRlbnRzCi0vLwkJCQkuZmlsdGVyKEdyZWV0aW5nKQotLy8JCQkJLm1hcFtuYW1lXQotLy8JCQkJLmpvaW4oJywgJykpCi0JfQotfQorLyoNCisgKiBnZW5lcmF0ZWQgYnkgWHRleHQNCisgKi8NCisgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisgLQ0KKyAtIENvcHlyaWdodCAoYykgMjAxMywgMjAxNSBJbnRlY3MgU3BBIA0KKyAtIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCisgLSB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAtIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQorIC0NCisgLSBDb250cmlidXRvcnM6DQorIC0gDQorIC0gU3RlZmFubyBQdXJpIHN0ZWZhbm8ucHVyaUBpbnRlY3MuaXQNCisgLSAgDQorIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uIGFuZC9vciBpbml0aWFsIGRvY3VtZW50YXRpb24NCisgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisgDQorcGFja2FnZSBvcmcucG9sYXJzeXMuY2hlc3MueHRleHQuZ2VuZXJhdG9yDQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5yZXNvdXJjZS5SZXNvdXJjZQ0KK2ltcG9ydCBvcmcuZWNsaXBzZS54dGV4dC5nZW5lcmF0b3IuSUdlbmVyYXRvcg0KK2ltcG9ydCBvcmcuZWNsaXBzZS54dGV4dC5nZW5lcmF0b3IuSUZpbGVTeXN0ZW1BY2Nlc3MNCisNCisvKioNCisgKiBHZW5lcmF0ZXMgY29kZSBmcm9tIHlvdXIgbW9kZWwgZmlsZXMgb24gc2F2ZS4NCisgKiANCisgKiBTZWUgaHR0cHM6Ly93d3cuZWNsaXBzZS5vcmcvWHRleHQvZG9jdW1lbnRhdGlvbi8zMDNfcnVudGltZV9jb25jZXB0cy5odG1sI2NvZGUtZ2VuZXJhdGlvbg0KKyAqLw0KK2NsYXNzIEZsYURzbEdlbmVyYXRvciBpbXBsZW1lbnRzIElHZW5lcmF0b3Igew0KKwkNCisJb3ZlcnJpZGUgdm9pZCBkb0dlbmVyYXRlKFJlc291cmNlIHJlc291cmNlLCBJRmlsZVN5c3RlbUFjY2VzcyBmc2EpIHsNCisvLwkJZnNhLmdlbmVyYXRlRmlsZSgnZ3JlZXRpbmdzLnR4dCcsICdQZW9wbGUgdG8gZ3JlZXQ6ICcgKyANCisvLwkJCXJlc291cmNlLmFsbENvbnRlbnRzDQorLy8JCQkJLmZpbHRlcih0eXBlb2YoR3JlZXRpbmcpKQ0KKy8vCQkJCS5tYXBbbmFtZV0NCisvLwkJCQkuam9pbignLCAnKSkNCisJfQ0KK30NCmRpZmYgLS1naXQgYS9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MueHRleHQuZmxhZHNsL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MveHRleHQvc2NvcGluZy9GbGFEc2xTY29wZVByb3ZpZGVyLnh0ZW5kIGIvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLnh0ZXh0LmZsYWRzbC9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3h0ZXh0L3Njb3BpbmcvRmxhRHNsU2NvcGVQcm92aWRlci54dGVuZAppbmRleCA1MWUzNzRmLi5iYzA1MDdiIDEwMDY0NAotLS0gYS9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MueHRleHQuZmxhZHNsL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MveHRleHQvc2NvcGluZy9GbGFEc2xTY29wZVByb3ZpZGVyLnh0ZW5kCisrKyBiL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy54dGV4dC5mbGFkc2wvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy94dGV4dC9zY29waW5nL0ZsYURzbFNjb3BlUHJvdmlkZXIueHRlbmQKQEAgLTEsMTUgKzEsODAgQEAKLS8qCi0gKiBnZW5lcmF0ZWQgYnkgWHRleHQgMi4xMi4wCi0gKi8KLXBhY2thZ2Ugb3JnLnBvbGFyc3lzLmNoZXNzLnh0ZXh0LnNjb3BpbmcKLQotCi0vKioKLSAqIFRoaXMgY2xhc3MgY29udGFpbnMgY3VzdG9tIHNjb3BpbmcgZGVzY3JpcHRpb24uCi0gKiAKLSAqIFNlZSBodHRwczovL3d3dy5lY2xpcHNlLm9yZy9YdGV4dC9kb2N1bWVudGF0aW9uLzMwM19ydW50aW1lX2NvbmNlcHRzLmh0bWwjc2NvcGluZwotICogb24gaG93IGFuZCB3aGVuIHRvIHVzZSBpdC4KLSAqLwotY2xhc3MgRmxhRHNsU2NvcGVQcm92aWRlciBleHRlbmRzIEFic3RyYWN0RmxhRHNsU2NvcGVQcm92aWRlciB7Ci0KLX0KKy8qDQorICogZ2VuZXJhdGVkIGJ5IFh0ZXh0DQorICovDQorIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorIC0NCisgLSBDb3B5cmlnaHQgKGMpIDIwMTMsIDIwMTUgSW50ZWNzIFNwQSANCisgLSBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorIC0gYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQorIC0gd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KKyAtDQorIC0gQ29udHJpYnV0b3JzOg0KKyAtIA0KKyAtIFN0ZWZhbm8gUHVyaSBzdGVmYW5vLnB1cmlAaW50ZWNzLml0DQorIC0gIA0KKyAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbiBhbmQvb3IgaW5pdGlhbCBkb2N1bWVudGF0aW9uDQorIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorIA0KK3BhY2thZ2Ugb3JnLnBvbGFyc3lzLmNoZXNzLnh0ZXh0LnNjb3BpbmcNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVSZWZlcmVuY2UNCitpbXBvcnQgb3JnLmVjbGlwc2UueHRleHQuc2NvcGluZy5JU2NvcGUNCitpbXBvcnQgb3JnLmVjbGlwc2UueHRleHQuc2NvcGluZy5pbXBsLkFic3RyYWN0RGVjbGFyYXRpdmVTY29wZVByb3ZpZGVyDQoraW1wb3J0IG9yZy5wb2xhcnN5cy5jaGVzcy54dGV4dC5nbG9iYWwudXRpbHMuWHRleHRVdGlscw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5Qb3J0DQoraW1wb3J0IG9yZy5lY2xpcHNlLnh0ZXh0LnNjb3BpbmcuU2NvcGVzDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24udXRpbC5FTGlzdA0KK2ltcG9ydCBvcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUuRGVwZW5kYWJpbGl0eS5GYWlsdXJlUHJvcGFnYXRpb24uRkxBQmVoYXZpb3I7DQoraW1wb3J0IG9yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS5EZXBlbmRhYmlsaXR5LkZhaWx1cmVQcm9wYWdhdGlvbi5GUFRDOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5FbmNhcHN1bGF0ZWRDbGFzc2lmaWVyDQorDQorLyoqDQorICogVGhpcyBjbGFzcyBjb250YWlucyBjdXN0b20gc2NvcGluZyBkZXNjcmlwdGlvbi4NCisgKiANCisgKiBTZWUgaHR0cHM6Ly93d3cuZWNsaXBzZS5vcmcvWHRleHQvZG9jdW1lbnRhdGlvbi8zMDNfcnVudGltZV9jb25jZXB0cy5odG1sI3Njb3BpbmcNCisgKiBvbiBob3cgYW5kIHdoZW4gdG8gdXNlIGl0Lg0KKyAqDQorICovDQorY2xhc3MgRmxhRHNsU2NvcGVQcm92aWRlciBleHRlbmRzIEFic3RyYWN0RGVjbGFyYXRpdmVTY29wZVByb3ZpZGVyIHsNCisNCisJRW5jYXBzdWxhdGVkQ2xhc3NpZmllciBjb250ZXh0Q29tcG9uZW50IDsNCisJDQorCW5ldygpew0KKwkJdmFsIGNvbnRleHRFbGVtZW50ID0gWHRleHRVdGlscy5nZXRDb250ZXh0RWxlbWVudDsNCisgIAkJaWYoY29udGV4dEVsZW1lbnQgaW5zdGFuY2VvZiBGUFRDKXsNCisJCQljb250ZXh0Q29tcG9uZW50ID0gKGNvbnRleHRFbGVtZW50IGFzIEZQVEMpLmdldEJhc2VfQ29tcG9uZW50KCk7DQorCQl9ZWxzZSBpZihjb250ZXh0RWxlbWVudCBpbnN0YW5jZW9mIEZMQUJlaGF2aW9yKXsNCisJCQlpZiAoKGNvbnRleHRFbGVtZW50IGFzIEZMQUJlaGF2aW9yKS5nZXRCYXNlX0NsYXNzKCkgIT0gbnVsbCkgew0KKwkJCQljb250ZXh0Q29tcG9uZW50ID0gKGNvbnRleHRFbGVtZW50IGFzIEZMQUJlaGF2aW9yKS5nZXRCYXNlX0NsYXNzKCkgYXMgRW5jYXBzdWxhdGVkQ2xhc3NpZmllcjsNCisJCQl9DQorCQkJZWxzZSBpZiAoKGNvbnRleHRFbGVtZW50IGFzIEZMQUJlaGF2aW9yKS5nZXRCYXNlX0luc3RhbmNlU3BlY2lmaWNhdGlvbiAhPSBudWxsKSB7DQorCQkJCWNvbnRleHRDb21wb25lbnQgPSAoY29udGV4dEVsZW1lbnQgYXMgRkxBQmVoYXZpb3IpLmdldEJhc2VfSW5zdGFuY2VTcGVjaWZpY2F0aW9uLmNsYXNzaWZpZXJzLmdldCgwKSBhcyBFbmNhcHN1bGF0ZWRDbGFzc2lmaWVyOw0KKwkJCX0NCisJCX0gDQorCX0gDQorDQorLyogDQorCWRlZiBJU2NvcGUgc2NvcGVfSW5wdXRFeHByZXNzaW9uX3JlZihJbnB1dEV4cHJlc3Npb24gaW5FeHByLCBFUmVmZXJlbmNlIHJlZil7DQorCQkNCisJCXZhbCBwb3J0cyA9IGNvbnRleHRDb21wb25lbnQub3duZWRQb3J0cw0KKwkJDQorCQkvL3BvcnRzLmZvckVhY2hbcHJpbnRsbigoaXQgYXMgUG9ydCkucXVhbGlmaWVkTmFtZSldDQorCQkNCisvLwkJdmFsIHNjb3BlID0gZGVsZWdhdGVHZXRTY29wZShpbkV4cHIsIHJlZikNCisvLwkJDQorLy8JCXZhbCBmaWx0ZXIgPSBbSUVPYmplY3REZXNjcmlwdGlvbiBkZXNjciB8IHBvcnRzLmNvbnRhaW5zKGRlc2NyLkVPYmplY3RPclByb3h5IGFzIFBvcnQpXQ0KKy8vCQkNCisvLwkJbmV3IEZpbHRlcmluZ1Njb3BlKHNjb3BlLCBmaWx0ZXIpOw0KKwkJDQorCQlyZXR1cm4gU2NvcGVzLnNjb3BlRm9yKHBvcnRzKQ0KKwl9Ki8NCisJDQorCW92ZXJyaWRlIElTY29wZSBnZXRTY29wZShFT2JqZWN0IGNvbnRleHQsIEVSZWZlcmVuY2UgcmVmZXJlbmNlKXsNCisJICAgdmFsIEVMaXN0PFBvcnQ+IHBvcnRzID0gdGhpcy5jb250ZXh0Q29tcG9uZW50LmdldE93bmVkUG9ydHMoKTsNCisJICAgIHJldHVybiBTY29wZXMuc2NvcGVGb3IocG9ydHMpOw0KKyAgCX0NCisgIAkNCisgIA0KK30NCmRpZmYgLS1naXQgYS9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MueHRleHQuZmxhZHNsL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MveHRleHQvdmFsaWRhdGlvbi9GbGFEc2xWYWxpZGF0b3IueHRlbmQgYi9wbHVnaW5zL2ZsYS9vcmcucG9sYXJzeXMuY2hlc3MueHRleHQuZmxhZHNsL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MveHRleHQvdmFsaWRhdGlvbi9GbGFEc2xWYWxpZGF0b3IueHRlbmQKaW5kZXggOTYyYmM0Ny4uNWY0NzNmMCAxMDA2NDQKLS0tIGEvcGx1Z2lucy9mbGEvb3JnLnBvbGFyc3lzLmNoZXNzLnh0ZXh0LmZsYWRzbC9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3h0ZXh0L3ZhbGlkYXRpb24vRmxhRHNsVmFsaWRhdG9yLnh0ZW5kCisrKyBiL3BsdWdpbnMvZmxhL29yZy5wb2xhcnN5cy5jaGVzcy54dGV4dC5mbGFkc2wvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy94dGV4dC92YWxpZGF0aW9uL0ZsYURzbFZhbGlkYXRvci54dGVuZApAQCAtMSwyNSArMSw0MCBAQAotLyoKLSAqIGdlbmVyYXRlZCBieSBYdGV4dCAyLjEyLjAKLSAqLwotcGFja2FnZSBvcmcucG9sYXJzeXMuY2hlc3MueHRleHQudmFsaWRhdGlvbgotCi0KLS8qKgotICogVGhpcyBjbGFzcyBjb250YWlucyBjdXN0b20gdmFsaWRhdGlvbiBydWxlcy4gCi0gKgotICogU2VlIGh0dHBzOi8vd3d3LmVjbGlwc2Uub3JnL1h0ZXh0L2RvY3VtZW50YXRpb24vMzAzX3J1bnRpbWVfY29uY2VwdHMuaHRtbCN2YWxpZGF0aW9uCi0gKi8KLWNsYXNzIEZsYURzbFZhbGlkYXRvciBleHRlbmRzIEFic3RyYWN0RmxhRHNsVmFsaWRhdG9yIHsKLQkKLS8vCXB1YmxpYyBzdGF0aWMgdmFsIElOVkFMSURfTkFNRSA9ICdpbnZhbGlkTmFtZScKLS8vCi0vLwlAQ2hlY2sKLS8vCWRlZiBjaGVja0dyZWV0aW5nU3RhcnRzV2l0aENhcGl0YWwoR3JlZXRpbmcgZ3JlZXRpbmcpIHsKLS8vCQlpZiAoIUNoYXJhY3Rlci5pc1VwcGVyQ2FzZShncmVldGluZy5uYW1lLmNoYXJBdCgwKSkpIHsKLS8vCQkJd2FybmluZygnTmFtZSBzaG91bGQgc3RhcnQgd2l0aCBhIGNhcGl0YWwnLCAKLS8vCQkJCQlGbGFEc2xQYWNrYWdlLkxpdGVyYWxzLkdSRUVUSU5HX19OQU1FLAotLy8JCQkJCUlOVkFMSURfTkFNRSkKLS8vCQl9Ci0vLwl9Ci0JCi19CisvKg0KKyAqIGdlbmVyYXRlZCBieSBYdGV4dA0KKyAqLw0KKyAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKyAtDQorIC0gQ29weXJpZ2h0IChjKSAyMDEzLCAyMDE1IEludGVjcyBTcEEgDQorIC0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAtIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KKyAtIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorIC0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCisgLQ0KKyAtIENvbnRyaWJ1dG9yczoNCisgLSANCisgLSBTdGVmYW5vIFB1cmkgc3RlZmFuby5wdXJpQGludGVjcy5pdA0KKyAtICANCisgLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24gYW5kL29yIGluaXRpYWwgZG9jdW1lbnRhdGlvbg0KKyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKyANCitwYWNrYWdlIG9yZy5wb2xhcnN5cy5jaGVzcy54dGV4dC52YWxpZGF0aW9uDQorDQorLy9pbXBvcnQgb3JnLmVjbGlwc2UueHRleHQudmFsaWRhdGlvbi5DaGVjaw0KKw0KKy8qKg0KKyAqIFRoaXMgY2xhc3MgY29udGFpbnMgY3VzdG9tIHZhbGlkYXRpb24gcnVsZXMuIA0KKyAqDQorICogU2VlIGh0dHBzOi8vd3d3LmVjbGlwc2Uub3JnL1h0ZXh0L2RvY3VtZW50YXRpb24vMzAzX3J1bnRpbWVfY29uY2VwdHMuaHRtbCN2YWxpZGF0aW9uDQorICovDQorY2xhc3MgRmxhRHNsVmFsaWRhdG9yICB7DQorDQorLy8gIHB1YmxpYyBzdGF0aWMgdmFsIElOVkFMSURfTkFNRSA9ICdpbnZhbGlkTmFtZScNCisvLw0KKy8vCUBDaGVjaw0KKy8vCWRlZiBjaGVja0dyZWV0aW5nU3RhcnRzV2l0aENhcGl0YWwoR3JlZXRpbmcgZ3JlZXRpbmcpIHsNCisvLwkJaWYgKCFDaGFyYWN0ZXIuaXNVcHBlckNhc2UoZ3JlZXRpbmcubmFtZS5jaGFyQXQoMCkpKSB7DQorLy8JCQl3YXJuaW5nKCdOYW1lIHNob3VsZCBzdGFydCB3aXRoIGEgY2FwaXRhbCcsIA0KKy8vCQkJCQlNeURzbFBhY2thZ2UuTGl0ZXJhbHMuR1JFRVRJTkdfX05BTUUsDQorLy8JCQkJCUlOVkFMSURfTkFNRSkNCisvLwkJfQ0KKy8vCX0NCit9DQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9tb2JpdXMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vYml1cy5tb2RlbC5lZGl0L2Fib3V0Lmh0bWwgYi9wbHVnaW5zL21vYml1cy9vcmcucG9sYXJzeXMuY2hlc3MubW9iaXVzLm1vZGVsLmVkaXQvYWJvdXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ODIxMWNmCi0tLSAvZGV2L251bGwKKysrIGIvcGx1Z2lucy9tb2JpdXMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vYml1cy5tb2RlbC5lZGl0L2Fib3V0Lmh0bWwKQEAgLTAsMCArMSwyOCBAQAorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgU3RyaWN0Ly9FTiIKKyAgICAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+Cis8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiLz4KKzx0aXRsZT5BYm91dDwvdGl0bGU+Cis8L2hlYWQ+Cis8Ym9keSBsYW5nPSJFTi1VUyI+Cis8aDI+QWJvdXQgVGhpcyBDb250ZW50PC9oMj4KKyAKKzxwPk1heSAyOCwgMjAxOTwvcD4JCis8aDM+TGljZW5zZTwvaDM+CisKKzxwPlRoZSBFY2xpcHNlIEZvdW5kYXRpb24gbWFrZXMgYXZhaWxhYmxlIGFsbCBjb250ZW50IGluIHRoaXMgcGx1Zy1pbiAoJnF1b3Q7Q29udGVudCZxdW90OykuICBVbmxlc3Mgb3RoZXJ3aXNlIAoraW5kaWNhdGVkIGJlbG93LCB0aGUgQ29udGVudCBpcyBwcm92aWRlZCB0byB5b3UgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZQorRWNsaXBzZSBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDIuMCAoJnF1b3Q7RVBMJnF1b3Q7KS4gIEEgY29weSBvZiB0aGUgRVBMIGlzIGF2YWlsYWJsZSAKK2F0IDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbDwvYT4uCitGb3IgcHVycG9zZXMgb2YgdGhlIEVQTCwgJnF1b3Q7UHJvZ3JhbSZxdW90OyB3aWxsIG1lYW4gdGhlIENvbnRlbnQuPC9wPgorCis8cD5JZiB5b3UgZGlkIG5vdCByZWNlaXZlIHRoaXMgQ29udGVudCBkaXJlY3RseSBmcm9tIHRoZSBFY2xpcHNlIEZvdW5kYXRpb24sIHRoZSBDb250ZW50IGlzIAorYmVpbmcgcmVkaXN0cmlidXRlZCBieSBhbm90aGVyIHBhcnR5ICgmcXVvdDtSZWRpc3RyaWJ1dG9yJnF1b3Q7KSBhbmQgZGlmZmVyZW50IHRlcm1zIGFuZCBjb25kaXRpb25zIG1heQorYXBwbHkgdG8geW91ciB1c2Ugb2YgYW55IG9iamVjdCBjb2RlIGluIHRoZSBDb250ZW50LiAgQ2hlY2sgdGhlIFJlZGlzdHJpYnV0b3IncyBsaWNlbnNlIHRoYXQgd2FzIAorcHJvdmlkZWQgd2l0aCB0aGUgQ29udGVudC4gIElmIG5vIHN1Y2ggbGljZW5zZSBleGlzdHMsIGNvbnRhY3QgdGhlIFJlZGlzdHJpYnV0b3IuICBVbmxlc3Mgb3RoZXJ3aXNlCitpbmRpY2F0ZWQgYmVsb3csIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRVBMIHN0aWxsIGFwcGx5IHRvIGFueSBzb3VyY2UgY29kZSBpbiB0aGUgQ29udGVudAorYW5kIHN1Y2ggc291cmNlIGNvZGUgbWF5IGJlIG9idGFpbmVkIGF0IDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnPC9hPi48L3A+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL3BsdWdpbnMvbW9iaXVzL29yZy5wb2xhcnN5cy5jaGVzcy5tb2JpdXMubW9kZWwuZWRpdG9yL2Fib3V0Lmh0bWwgYi9wbHVnaW5zL21vYml1cy9vcmcucG9sYXJzeXMuY2hlc3MubW9iaXVzLm1vZGVsLmVkaXRvci9hYm91dC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4MjExY2YKLS0tIC9kZXYvbnVsbAorKysgYi9wbHVnaW5zL21vYml1cy9vcmcucG9sYXJzeXMuY2hlc3MubW9iaXVzLm1vZGVsLmVkaXRvci9hYm91dC5odG1sCkBAIC0wLDAgKzEsMjggQEAKKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFN0cmljdC8vRU4iCisgICAgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXN0cmljdC5kdGQiPgorPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xIi8+Cis8dGl0bGU+QWJvdXQ8L3RpdGxlPgorPC9oZWFkPgorPGJvZHkgbGFuZz0iRU4tVVMiPgorPGgyPkFib3V0IFRoaXMgQ29udGVudDwvaDI+CisgCis8cD5NYXkgMjgsIDIwMTk8L3A+CQorPGgzPkxpY2Vuc2U8L2gzPgorCis8cD5UaGUgRWNsaXBzZSBGb3VuZGF0aW9uIG1ha2VzIGF2YWlsYWJsZSBhbGwgY29udGVudCBpbiB0aGlzIHBsdWctaW4gKCZxdW90O0NvbnRlbnQmcXVvdDspLiAgVW5sZXNzIG90aGVyd2lzZSAKK2luZGljYXRlZCBiZWxvdywgdGhlIENvbnRlbnQgaXMgcHJvdmlkZWQgdG8geW91IHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUKK0VjbGlwc2UgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAyLjAgKCZxdW90O0VQTCZxdW90OykuICBBIGNvcHkgb2YgdGhlIEVQTCBpcyBhdmFpbGFibGUgCithdCA8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbCI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWw8L2E+LgorRm9yIHB1cnBvc2VzIG9mIHRoZSBFUEwsICZxdW90O1Byb2dyYW0mcXVvdDsgd2lsbCBtZWFuIHRoZSBDb250ZW50LjwvcD4KKworPHA+SWYgeW91IGRpZCBub3QgcmVjZWl2ZSB0aGlzIENvbnRlbnQgZGlyZWN0bHkgZnJvbSB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uLCB0aGUgQ29udGVudCBpcyAKK2JlaW5nIHJlZGlzdHJpYnV0ZWQgYnkgYW5vdGhlciBwYXJ0eSAoJnF1b3Q7UmVkaXN0cmlidXRvciZxdW90OykgYW5kIGRpZmZlcmVudCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBtYXkKK2FwcGx5IHRvIHlvdXIgdXNlIG9mIGFueSBvYmplY3QgY29kZSBpbiB0aGUgQ29udGVudC4gIENoZWNrIHRoZSBSZWRpc3RyaWJ1dG9yJ3MgbGljZW5zZSB0aGF0IHdhcyAKK3Byb3ZpZGVkIHdpdGggdGhlIENvbnRlbnQuICBJZiBubyBzdWNoIGxpY2Vuc2UgZXhpc3RzLCBjb250YWN0IHRoZSBSZWRpc3RyaWJ1dG9yLiAgVW5sZXNzIG90aGVyd2lzZQoraW5kaWNhdGVkIGJlbG93LCB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVQTCBzdGlsbCBhcHBseSB0byBhbnkgc291cmNlIGNvZGUgaW4gdGhlIENvbnRlbnQKK2FuZCBzdWNoIHNvdXJjZSBjb2RlIG1heSBiZSBvYnRhaW5lZCBhdCA8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnLyI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZzwvYT4uPC9wPgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9wbHVnaW5zL21vYml1cy9vcmcucG9sYXJzeXMuY2hlc3MubW9iaXVzLm1vZGVsL2Fib3V0Lmh0bWwgYi9wbHVnaW5zL21vYml1cy9vcmcucG9sYXJzeXMuY2hlc3MubW9iaXVzLm1vZGVsL2Fib3V0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTgyMTFjZgotLS0gL2Rldi9udWxsCisrKyBiL3BsdWdpbnMvbW9iaXVzL29yZy5wb2xhcnN5cy5jaGVzcy5tb2JpdXMubW9kZWwvYWJvdXQuaHRtbApAQCAtMCwwICsxLDI4IEBACis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIgorICAgICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS1zdHJpY3QuZHRkIj4KKzxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMSIvPgorPHRpdGxlPkFib3V0PC90aXRsZT4KKzwvaGVhZD4KKzxib2R5IGxhbmc9IkVOLVVTIj4KKzxoMj5BYm91dCBUaGlzIENvbnRlbnQ8L2gyPgorIAorPHA+TWF5IDI4LCAyMDE5PC9wPgkKKzxoMz5MaWNlbnNlPC9oMz4KKworPHA+VGhlIEVjbGlwc2UgRm91bmRhdGlvbiBtYWtlcyBhdmFpbGFibGUgYWxsIGNvbnRlbnQgaW4gdGhpcyBwbHVnLWluICgmcXVvdDtDb250ZW50JnF1b3Q7KS4gIFVubGVzcyBvdGhlcndpc2UgCitpbmRpY2F0ZWQgYmVsb3csIHRoZSBDb250ZW50IGlzIHByb3ZpZGVkIHRvIHlvdSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlCitFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMi4wICgmcXVvdDtFUEwmcXVvdDspLiAgQSBjb3B5IG9mIHRoZSBFUEwgaXMgYXZhaWxhYmxlIAorYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwiPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sPC9hPi4KK0ZvciBwdXJwb3NlcyBvZiB0aGUgRVBMLCAmcXVvdDtQcm9ncmFtJnF1b3Q7IHdpbGwgbWVhbiB0aGUgQ29udGVudC48L3A+CisKKzxwPklmIHlvdSBkaWQgbm90IHJlY2VpdmUgdGhpcyBDb250ZW50IGRpcmVjdGx5IGZyb20gdGhlIEVjbGlwc2UgRm91bmRhdGlvbiwgdGhlIENvbnRlbnQgaXMgCitiZWluZyByZWRpc3RyaWJ1dGVkIGJ5IGFub3RoZXIgcGFydHkgKCZxdW90O1JlZGlzdHJpYnV0b3ImcXVvdDspIGFuZCBkaWZmZXJlbnQgdGVybXMgYW5kIGNvbmRpdGlvbnMgbWF5CithcHBseSB0byB5b3VyIHVzZSBvZiBhbnkgb2JqZWN0IGNvZGUgaW4gdGhlIENvbnRlbnQuICBDaGVjayB0aGUgUmVkaXN0cmlidXRvcidzIGxpY2Vuc2UgdGhhdCB3YXMgCitwcm92aWRlZCB3aXRoIHRoZSBDb250ZW50LiAgSWYgbm8gc3VjaCBsaWNlbnNlIGV4aXN0cywgY29udGFjdCB0aGUgUmVkaXN0cmlidXRvci4gIFVubGVzcyBvdGhlcndpc2UKK2luZGljYXRlZCBiZWxvdywgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFUEwgc3RpbGwgYXBwbHkgdG8gYW55IHNvdXJjZSBjb2RlIGluIHRoZSBDb250ZW50CithbmQgc3VjaCBzb3VyY2UgY29kZSBtYXkgYmUgb2J0YWluZWQgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy8iPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmc8L2E+LjwvcD4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9tb2JpdXMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vYml1cy5wcmVmZXJlbmNlcy9hYm91dC5odG1sIGIvcGx1Z2lucy9tb2JpdXMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vYml1cy5wcmVmZXJlbmNlcy9hYm91dC5odG1sCmluZGV4IDU4MjExY2YuLjE2NGY3ODEgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvbW9iaXVzL29yZy5wb2xhcnN5cy5jaGVzcy5tb2JpdXMucHJlZmVyZW5jZXMvYWJvdXQuaHRtbAorKysgYi9wbHVnaW5zL21vYml1cy9vcmcucG9sYXJzeXMuY2hlc3MubW9iaXVzLnByZWZlcmVuY2VzL2Fib3V0Lmh0bWwKQEAgLTIsMjcgKzIsMzUgQEAKICAgICAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+CiA8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+CiA8aGVhZD4KLTxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiLz4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiIC8+CiA8dGl0bGU+QWJvdXQ8L3RpdGxlPgogPC9oZWFkPgogPGJvZHkgbGFuZz0iRU4tVVMiPgotPGgyPkFib3V0IFRoaXMgQ29udGVudDwvaDI+Ci0gCi08cD5NYXkgMjgsIDIwMTk8L3A+CQotPGgzPkxpY2Vuc2U8L2gzPgorCTxoMj5BYm91dCBUaGlzIENvbnRlbnQ8L2gyPgogCi08cD5UaGUgRWNsaXBzZSBGb3VuZGF0aW9uIG1ha2VzIGF2YWlsYWJsZSBhbGwgY29udGVudCBpbiB0aGlzIHBsdWctaW4gKCZxdW90O0NvbnRlbnQmcXVvdDspLiAgVW5sZXNzIG90aGVyd2lzZSAKLWluZGljYXRlZCBiZWxvdywgdGhlIENvbnRlbnQgaXMgcHJvdmlkZWQgdG8geW91IHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUKLUVjbGlwc2UgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAyLjAgKCZxdW90O0VQTCZxdW90OykuICBBIGNvcHkgb2YgdGhlIEVQTCBpcyBhdmFpbGFibGUgCi1hdCA8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbCI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWw8L2E+LgotRm9yIHB1cnBvc2VzIG9mIHRoZSBFUEwsICZxdW90O1Byb2dyYW0mcXVvdDsgd2lsbCBtZWFuIHRoZSBDb250ZW50LjwvcD4KKwk8cD5Ob3ZlbWJlciAzMCwgMjAxNzwvcD4KKwk8aDM+TGljZW5zZTwvaDM+CiAKLTxwPklmIHlvdSBkaWQgbm90IHJlY2VpdmUgdGhpcyBDb250ZW50IGRpcmVjdGx5IGZyb20gdGhlIEVjbGlwc2UgRm91bmRhdGlvbiwgdGhlIENvbnRlbnQgaXMgCi1iZWluZyByZWRpc3RyaWJ1dGVkIGJ5IGFub3RoZXIgcGFydHkgKCZxdW90O1JlZGlzdHJpYnV0b3ImcXVvdDspIGFuZCBkaWZmZXJlbnQgdGVybXMgYW5kIGNvbmRpdGlvbnMgbWF5Ci1hcHBseSB0byB5b3VyIHVzZSBvZiBhbnkgb2JqZWN0IGNvZGUgaW4gdGhlIENvbnRlbnQuICBDaGVjayB0aGUgUmVkaXN0cmlidXRvcidzIGxpY2Vuc2UgdGhhdCB3YXMgCi1wcm92aWRlZCB3aXRoIHRoZSBDb250ZW50LiAgSWYgbm8gc3VjaCBsaWNlbnNlIGV4aXN0cywgY29udGFjdCB0aGUgUmVkaXN0cmlidXRvci4gIFVubGVzcyBvdGhlcndpc2UKLWluZGljYXRlZCBiZWxvdywgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFUEwgc3RpbGwgYXBwbHkgdG8gYW55IHNvdXJjZSBjb2RlIGluIHRoZSBDb250ZW50Ci1hbmQgc3VjaCBzb3VyY2UgY29kZSBtYXkgYmUgb2J0YWluZWQgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy8iPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmc8L2E+LjwvcD4KKwk8cD4KKwkJVGhlIEVjbGlwc2UgRm91bmRhdGlvbiBtYWtlcyBhdmFpbGFibGUgYWxsIGNvbnRlbnQgaW4gdGhpcyBwbHVnLWluCisJCSgmcXVvdDtDb250ZW50JnF1b3Q7KS4gVW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQgYmVsb3csIHRoZSBDb250ZW50CisJCWlzIHByb3ZpZGVkIHRvIHlvdSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVjbGlwc2UKKwkJUHVibGljIExpY2Vuc2UgVmVyc2lvbiAyLjAgKCZxdW90O0VQTCZxdW90OykuIEEgY29weSBvZiB0aGUgRVBMIGlzCisJCWF2YWlsYWJsZSBhdCA8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAiPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMDwvYT4uCisJCUZvciBwdXJwb3NlcyBvZiB0aGUgRVBMLCAmcXVvdDtQcm9ncmFtJnF1b3Q7IHdpbGwgbWVhbiB0aGUgQ29udGVudC4KKwk8L3A+CisKKwk8cD4KKwkJSWYgeW91IGRpZCBub3QgcmVjZWl2ZSB0aGlzIENvbnRlbnQgZGlyZWN0bHkgZnJvbSB0aGUgRWNsaXBzZQorCQlGb3VuZGF0aW9uLCB0aGUgQ29udGVudCBpcyBiZWluZyByZWRpc3RyaWJ1dGVkIGJ5IGFub3RoZXIgcGFydHkKKwkJKCZxdW90O1JlZGlzdHJpYnV0b3ImcXVvdDspIGFuZCBkaWZmZXJlbnQgdGVybXMgYW5kIGNvbmRpdGlvbnMgbWF5CisJCWFwcGx5IHRvIHlvdXIgdXNlIG9mIGFueSBvYmplY3QgY29kZSBpbiB0aGUgQ29udGVudC4gQ2hlY2sgdGhlCisJCVJlZGlzdHJpYnV0b3IncyBsaWNlbnNlIHRoYXQgd2FzIHByb3ZpZGVkIHdpdGggdGhlIENvbnRlbnQuIElmIG5vIHN1Y2gKKwkJbGljZW5zZSBleGlzdHMsIGNvbnRhY3QgdGhlIFJlZGlzdHJpYnV0b3IuIFVubGVzcyBvdGhlcndpc2UgaW5kaWNhdGVkCisJCWJlbG93LCB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVQTCBzdGlsbCBhcHBseSB0byBhbnkgc291cmNlCisJCWNvZGUgaW4gdGhlIENvbnRlbnQgYW5kIHN1Y2ggc291cmNlIGNvZGUgbWF5IGJlIG9idGFpbmVkIGF0IDxhCisJCQlocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnLyI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZzwvYT4uCisJPC9wPgogCiA8L2JvZHk+Ci08L2h0bWw+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9tb2JpdXMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vYml1cy9hYm91dC5odG1sIGIvcGx1Z2lucy9tb2JpdXMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vYml1cy9hYm91dC5odG1sCmluZGV4IDU4MjExY2YuLjE2NGY3ODEgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvbW9iaXVzL29yZy5wb2xhcnN5cy5jaGVzcy5tb2JpdXMvYWJvdXQuaHRtbAorKysgYi9wbHVnaW5zL21vYml1cy9vcmcucG9sYXJzeXMuY2hlc3MubW9iaXVzL2Fib3V0Lmh0bWwKQEAgLTIsMjcgKzIsMzUgQEAKICAgICAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+CiA8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+CiA8aGVhZD4KLTxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiLz4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiIC8+CiA8dGl0bGU+QWJvdXQ8L3RpdGxlPgogPC9oZWFkPgogPGJvZHkgbGFuZz0iRU4tVVMiPgotPGgyPkFib3V0IFRoaXMgQ29udGVudDwvaDI+Ci0gCi08cD5NYXkgMjgsIDIwMTk8L3A+CQotPGgzPkxpY2Vuc2U8L2gzPgorCTxoMj5BYm91dCBUaGlzIENvbnRlbnQ8L2gyPgogCi08cD5UaGUgRWNsaXBzZSBGb3VuZGF0aW9uIG1ha2VzIGF2YWlsYWJsZSBhbGwgY29udGVudCBpbiB0aGlzIHBsdWctaW4gKCZxdW90O0NvbnRlbnQmcXVvdDspLiAgVW5sZXNzIG90aGVyd2lzZSAKLWluZGljYXRlZCBiZWxvdywgdGhlIENvbnRlbnQgaXMgcHJvdmlkZWQgdG8geW91IHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUKLUVjbGlwc2UgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAyLjAgKCZxdW90O0VQTCZxdW90OykuICBBIGNvcHkgb2YgdGhlIEVQTCBpcyBhdmFpbGFibGUgCi1hdCA8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbCI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWw8L2E+LgotRm9yIHB1cnBvc2VzIG9mIHRoZSBFUEwsICZxdW90O1Byb2dyYW0mcXVvdDsgd2lsbCBtZWFuIHRoZSBDb250ZW50LjwvcD4KKwk8cD5Ob3ZlbWJlciAzMCwgMjAxNzwvcD4KKwk8aDM+TGljZW5zZTwvaDM+CiAKLTxwPklmIHlvdSBkaWQgbm90IHJlY2VpdmUgdGhpcyBDb250ZW50IGRpcmVjdGx5IGZyb20gdGhlIEVjbGlwc2UgRm91bmRhdGlvbiwgdGhlIENvbnRlbnQgaXMgCi1iZWluZyByZWRpc3RyaWJ1dGVkIGJ5IGFub3RoZXIgcGFydHkgKCZxdW90O1JlZGlzdHJpYnV0b3ImcXVvdDspIGFuZCBkaWZmZXJlbnQgdGVybXMgYW5kIGNvbmRpdGlvbnMgbWF5Ci1hcHBseSB0byB5b3VyIHVzZSBvZiBhbnkgb2JqZWN0IGNvZGUgaW4gdGhlIENvbnRlbnQuICBDaGVjayB0aGUgUmVkaXN0cmlidXRvcidzIGxpY2Vuc2UgdGhhdCB3YXMgCi1wcm92aWRlZCB3aXRoIHRoZSBDb250ZW50LiAgSWYgbm8gc3VjaCBsaWNlbnNlIGV4aXN0cywgY29udGFjdCB0aGUgUmVkaXN0cmlidXRvci4gIFVubGVzcyBvdGhlcndpc2UKLWluZGljYXRlZCBiZWxvdywgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFUEwgc3RpbGwgYXBwbHkgdG8gYW55IHNvdXJjZSBjb2RlIGluIHRoZSBDb250ZW50Ci1hbmQgc3VjaCBzb3VyY2UgY29kZSBtYXkgYmUgb2J0YWluZWQgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy8iPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmc8L2E+LjwvcD4KKwk8cD4KKwkJVGhlIEVjbGlwc2UgRm91bmRhdGlvbiBtYWtlcyBhdmFpbGFibGUgYWxsIGNvbnRlbnQgaW4gdGhpcyBwbHVnLWluCisJCSgmcXVvdDtDb250ZW50JnF1b3Q7KS4gVW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQgYmVsb3csIHRoZSBDb250ZW50CisJCWlzIHByb3ZpZGVkIHRvIHlvdSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVjbGlwc2UKKwkJUHVibGljIExpY2Vuc2UgVmVyc2lvbiAyLjAgKCZxdW90O0VQTCZxdW90OykuIEEgY29weSBvZiB0aGUgRVBMIGlzCisJCWF2YWlsYWJsZSBhdCA8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAiPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMDwvYT4uCisJCUZvciBwdXJwb3NlcyBvZiB0aGUgRVBMLCAmcXVvdDtQcm9ncmFtJnF1b3Q7IHdpbGwgbWVhbiB0aGUgQ29udGVudC4KKwk8L3A+CisKKwk8cD4KKwkJSWYgeW91IGRpZCBub3QgcmVjZWl2ZSB0aGlzIENvbnRlbnQgZGlyZWN0bHkgZnJvbSB0aGUgRWNsaXBzZQorCQlGb3VuZGF0aW9uLCB0aGUgQ29udGVudCBpcyBiZWluZyByZWRpc3RyaWJ1dGVkIGJ5IGFub3RoZXIgcGFydHkKKwkJKCZxdW90O1JlZGlzdHJpYnV0b3ImcXVvdDspIGFuZCBkaWZmZXJlbnQgdGVybXMgYW5kIGNvbmRpdGlvbnMgbWF5CisJCWFwcGx5IHRvIHlvdXIgdXNlIG9mIGFueSBvYmplY3QgY29kZSBpbiB0aGUgQ29udGVudC4gQ2hlY2sgdGhlCisJCVJlZGlzdHJpYnV0b3IncyBsaWNlbnNlIHRoYXQgd2FzIHByb3ZpZGVkIHdpdGggdGhlIENvbnRlbnQuIElmIG5vIHN1Y2gKKwkJbGljZW5zZSBleGlzdHMsIGNvbnRhY3QgdGhlIFJlZGlzdHJpYnV0b3IuIFVubGVzcyBvdGhlcndpc2UgaW5kaWNhdGVkCisJCWJlbG93LCB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVQTCBzdGlsbCBhcHBseSB0byBhbnkgc291cmNlCisJCWNvZGUgaW4gdGhlIENvbnRlbnQgYW5kIHN1Y2ggc291cmNlIGNvZGUgbWF5IGJlIG9idGFpbmVkIGF0IDxhCisJCQlocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnLyI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZzwvYT4uCisJPC9wPgogCiA8L2JvZHk+Ci08L2h0bWw+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9tb2JpdXMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vYml1cy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL21vYml1cy9oYW5kbGVycy9DSEVTUzJTQU5SdW5uZXIuamF2YSBiL3BsdWdpbnMvbW9iaXVzL29yZy5wb2xhcnN5cy5jaGVzcy5tb2JpdXMvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tb2JpdXMvaGFuZGxlcnMvQ0hFU1MyU0FOUnVubmVyLmphdmEKaW5kZXggNzZhZjViNC4uZmNkNzQ0ZiAxMDA2NDQKLS0tIGEvcGx1Z2lucy9tb2JpdXMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vYml1cy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL21vYml1cy9oYW5kbGVycy9DSEVTUzJTQU5SdW5uZXIuamF2YQorKysgYi9wbHVnaW5zL21vYml1cy9vcmcucG9sYXJzeXMuY2hlc3MubW9iaXVzL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbW9iaXVzL2hhbmRsZXJzL0NIRVNTMlNBTlJ1bm5lci5qYXZhCkBAIC0xLDE1ICsxLDE2IEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqICAgICAgICAgICAgICAgICAgQ0hFU1MgTW9iaXVzIHBsdWdpbg0KLSAqDQotICogICAgICAgICAgICAgICBDb3B5cmlnaHQgKEMpIDIwMTkNCi0gKiAgICAgICAgICAgIAkJCUludGVjcw0KLSAqDQotICoNCi0gKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KLSAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlDQotICogIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKiBDb3B5cmlnaHQgKGMpIDIwMTkgSW50ZWNzIFNvbHV0aW9ucyBTcEENCisqDQorKiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlDQorKiBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIDIuMA0KKyogd2hpY2ggaXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAvDQorKg0KKyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEVQTC0yLjANCisqDQorKiBDb250cmlidXRvcnM6IA0KKyogICBJbnRlY3MgU29sdXRpb25zIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uDQorKiAgIA0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQogcGFja2FnZSBvcmcucG9sYXJzeXMuY2hlc3MubW9iaXVzLmhhbmRsZXJzOw0KIA0KIGltcG9ydCBzdGF0aWMgb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUudXRpbC5DSEVTU1Byb2plY3RTdXBwb3J0LnByaW50bG5Ub0NIRVNTQ29uc29sZTsNCmRpZmYgLS1naXQgYS9wbHVnaW5zL21vYml1cy9vcmcucG9sYXJzeXMuY2hlc3MubW9iaXVzL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbW9iaXVzL3RlbXBsYXRlcy9wcm9qZWN0RmlsZVRlbXBsYXRlX3Nhbm1vZGVsLm10bCBiL3BsdWdpbnMvbW9iaXVzL29yZy5wb2xhcnN5cy5jaGVzcy5tb2JpdXMvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tb2JpdXMvdGVtcGxhdGVzL3Byb2plY3RGaWxlVGVtcGxhdGVfc2FubW9kZWwubXRsCmluZGV4IDJhZDQwYTQuLjAwMWNkZTcgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvbW9iaXVzL29yZy5wb2xhcnN5cy5jaGVzcy5tb2JpdXMvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tb2JpdXMvdGVtcGxhdGVzL3Byb2plY3RGaWxlVGVtcGxhdGVfc2FubW9kZWwubXRsCisrKyBiL3BsdWdpbnMvbW9iaXVzL29yZy5wb2xhcnN5cy5jaGVzcy5tb2JpdXMvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tb2JpdXMvdGVtcGxhdGVzL3Byb2plY3RGaWxlVGVtcGxhdGVfc2FubW9kZWwubXRsCkBAIC0yOSw5ICsyOSw2IEBACiAJPGF0b21pYyBrZXk9Iltub2RlLm9jbEFzVHlwZShBdG9taWNOb2RlKS5tb2RlbC5yZXBsYWNlQWxsKCdcXC4nLCAnXycpL10iPgogICAgICAgPHZhbHVlIG5hbWU9Iltub2RlLm9jbEFzVHlwZShBdG9taWNOb2RlKS5tb2RlbC5yZXBsYWNlQWxsKCdcXC4nLCAnXycpL10iIHR5cGU9IlNBTiBNb2RlbCIvPgogICAgCTwvYXRvbWljPgotCTxhdG9taWMga2V5PSJbbm9kZS5vY2xBc1R5cGUoQXRvbWljTm9kZSkubmFtZS5yZXBsYWNlQWxsKCdcXC4nLCAnXycpL10iPgotICAgICAgPHZhbHVlIG5hbWU9Iltub2RlLm9jbEFzVHlwZShBdG9taWNOb2RlKS5uYW1lLnJlcGxhY2VBbGwoJ1xcLicsICdfJykvXSIgdHlwZT0iU0FOIE1vZGVsIi8+Ci0gICAJPC9hdG9taWM+CiAJW2Vsc2VdCiAJW2lmIChub2RlLm9jbElzS2luZE9mKENvbXBvc2VkTm9kZSkgYW5kIG5vZGUuZUNvbnRhaW5lcigpLm9jbElzS2luZE9mKFNBTk1vZGVsKSldCiAJPGNvbXBvc2VkIGtleT0iW25vZGUubmFtZS5yZXBsYWNlQWxsKCdcXC4nLCAnXycpL10iPgpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9tb2JpdXMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vYml1cy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL21vYml1cy90cmFuc2Zvcm1hdGlvbnMvUVZUb1RyYW5zZm9ybWF0aW9uLmphdmEgYi9wbHVnaW5zL21vYml1cy9vcmcucG9sYXJzeXMuY2hlc3MubW9iaXVzL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbW9iaXVzL3RyYW5zZm9ybWF0aW9ucy9RVlRvVHJhbnNmb3JtYXRpb24uamF2YQppbmRleCBmMzFkMzY0Li5kMGUyYzA3IDEwMDY0NAotLS0gYS9wbHVnaW5zL21vYml1cy9vcmcucG9sYXJzeXMuY2hlc3MubW9iaXVzL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbW9iaXVzL3RyYW5zZm9ybWF0aW9ucy9RVlRvVHJhbnNmb3JtYXRpb24uamF2YQorKysgYi9wbHVnaW5zL21vYml1cy9vcmcucG9sYXJzeXMuY2hlc3MubW9iaXVzL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbW9iaXVzL3RyYW5zZm9ybWF0aW9ucy9RVlRvVHJhbnNmb3JtYXRpb24uamF2YQpAQCAtMSwxNSArMSwxNiBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiAgICAgICAgICAgICAgICAgIENIRVNTIE1vYml1cyBwbHVnaW4NCi0gKg0KLSAqICAgICAgICAgICAgICAgQ29weXJpZ2h0IChDKSAyMDE5DQotICogICAgICAgICAgICAJCQlJbnRlY3MNCi0gKg0KLSAqDQotICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCi0gKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZQ0KLSAqICB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyogQ29weXJpZ2h0IChjKSAyMDE5IEludGVjcyBTb2x1dGlvbnMgU3BBDQorKg0KKyogVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZQ0KKyogYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAyLjANCisqIHdoaWNoIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wLw0KKyoNCisqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBFUEwtMi4wDQorKg0KKyogQ29udHJpYnV0b3JzOiANCisqICAgSW50ZWNzIFNvbHV0aW9ucyAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbg0KKyogICANCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KIA0KIHBhY2thZ2Ugb3JnLnBvbGFyc3lzLmNoZXNzLm1vYml1cy50cmFuc2Zvcm1hdGlvbnM7DQogDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9tb2JpdXMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vYml1cy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL21vYml1cy91dGlscy9RVlRCbGFja0JveC5qYXZhIGIvcGx1Z2lucy9tb2JpdXMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vYml1cy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL21vYml1cy91dGlscy9RVlRCbGFja0JveC5qYXZhCmluZGV4IDMwYzg2MGMuLjM0YWI5NmMgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvbW9iaXVzL29yZy5wb2xhcnN5cy5jaGVzcy5tb2JpdXMvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tb2JpdXMvdXRpbHMvUVZUQmxhY2tCb3guamF2YQorKysgYi9wbHVnaW5zL21vYml1cy9vcmcucG9sYXJzeXMuY2hlc3MubW9iaXVzL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbW9iaXVzL3V0aWxzL1FWVEJsYWNrQm94LmphdmEKQEAgLTEsMyArMSwxOCBAQAorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyogQ29weXJpZ2h0IChjKSAyMDE5IEludGVjcyBTb2x1dGlvbnMgU3BBDQorKg0KKyogVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZQ0KKyogYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAyLjANCisqIHdoaWNoIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wLw0KKyoNCisqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBFUEwtMi4wDQorKg0KKyogQ29udHJpYnV0b3JzOiANCisqICAgSW50ZWNzIFNvbHV0aW9ucyAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbg0KKyogICANCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KIHBhY2thZ2Ugb3JnLnBvbGFyc3lzLmNoZXNzLm1vYml1cy51dGlsczsNCiANCiBpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsNCmRpZmYgLS1naXQgYS9wbHVnaW5zL21vYml1cy9vcmcucG9sYXJzeXMuY2hlc3MubW9iaXVzL3Rhc2tzL1Jld2FyZFRlbXBsYXRlLnhtbCBiL3BsdWdpbnMvbW9iaXVzL29yZy5wb2xhcnN5cy5jaGVzcy5tb2JpdXMvdGFza3MvUmV3YXJkVGVtcGxhdGUueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZGY5ZDBhLi4wMDAwMDAwCi0tLSBhL3BsdWdpbnMvbW9iaXVzL29yZy5wb2xhcnN5cy5jaGVzcy5tb2JpdXMvdGFza3MvUmV3YXJkVGVtcGxhdGUueG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTU0ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08cHJvamVjdCBkZWZhdWx0PSJSZXdhcmRUZW1wbGF0ZSIgbmFtZT0ib3JnLnBvbGFyc3lzLmNoZXNzLm1vYml1cyI+Ci0gICAgPHByb3BlcnR5IG5hbWU9IkVDTElQU0VfSE9NRSIgdmFsdWU9Ii4uLy4uLy4uLy4uLy4uL1Byb2dyYW1taS9Qb2xhcnN5c0NIRVNTLU5lb24td2luMzIteDg2XzY0XzIwMTkwNTE1Ii8+Ci0gICAgPHByb3BlcnR5IG5hbWU9IkVDTElQU0VfV09SS1NQQUNFIiB2YWx1ZT0iLi4vLi4vLi4vLi4vLi4vUHJvZ3JhbW1pL1BvbGFyc3lzQ0hFU1MtTmVvbi13aW4zMi14ODZfNjRfMjAxOTA1MTUvd29ya3NwYWNlX3NhbjMiLz4KLQotICAgIDwhLS0gVGhlIGNsYXNzcGF0aCB3aXRoIG9ubHkgdGhlIGRlcGVuZGVuY2llcyB1c2VkIGJ5IHRoZSBwcm9qZWN0IC0tPgotICAgIDxwYXRoIGlkPSJvcmcucG9sYXJzeXMuY2hlc3MubW9iaXVzLmxpYnJhcnljbGFzc3BhdGgiPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9XT1JLU1BBQ0V9L29yZy5wb2xhcnN5cy5jaGVzcy5tb2JpdXMvYmluIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L2pyZS9saWIvcmVzb3VyY2VzLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9qcmUvbGliL3J0LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9qcmUvbGliL2pzc2UuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L2pyZS9saWIvamNlLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9qcmUvbGliL2NoYXJzZXRzLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9qcmUvbGliL2pmci5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vanJlL2xpYi9leHQvYWNjZXNzLWJyaWRnZS02NC5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vanJlL2xpYi9leHQvY2xkcmRhdGEuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L2pyZS9saWIvZXh0L2Ruc25zLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9qcmUvbGliL2V4dC9qYWNjZXNzLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9qcmUvbGliL2V4dC9qZnhydC5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vanJlL2xpYi9leHQvbG9jYWxlZGF0YS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vanJlL2xpYi9leHQvbmFzaG9ybi5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vanJlL2xpYi9leHQvc3VuZWMuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L2pyZS9saWIvZXh0L3N1bmpjZV9wcm92aWRlci5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vanJlL2xpYi9leHQvc3VubXNjYXBpLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9qcmUvbGliL2V4dC9zdW5wa2NzMTEuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L2pyZS9saWIvZXh0L3ppcGZzLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnVpXzMuMTA4LjEudjIwMTYwOTI5LTEwNDUuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2Uuc3d0XzMuMTA1LjMudjIwMTcwMjI4LTA1MTIuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2Uuc3d0LndpbjMyLndpbjMyLng4Nl82NF8zLjEwNS4zLnYyMDE3MDIyOC0wNTEyLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmpmYWNlXzMuMTIuMi52MjAxNzAxMTMtMjExMy5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5jb3JlLmNvbW1hbmRzXzMuOC4xLnYyMDE2MTIyMS0xNjUxLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnVpLndvcmtiZW5jaF8zLjEwOC4zLnYyMDE3MDIxNi0xNTM5LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmU0LnVpLndvcmtiZW5jaDNfMC4xMy4xMDAudjIwMTYwNTA2LTA3NTkuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXNfMy4xMS4xLnYyMDE2MTEwNy0yMDMyLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmFjY2VsZW8uZW5naW5lXzMuNi42LjIwMTYxMDA2MDgzMS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5hY2NlbGVvLmNvbW1vbl8zLjYuNi4yMDE2MTAwNjA4MzEuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuYWNjZWxlby5tb2RlbF8zLjYuNi4yMDE2MTAwNjA4MzEuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZW1mLmVjb3JlXzIuMTIuMC52MjAxNjA0MjAtMDI0Ny5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5lbWYuY29tbW9uXzIuMTIuMC52MjAxNjA0MjAtMDI0Ny5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5lbWYuZWNvcmUueG1pXzIuMTIuMC52MjAxNjA0MjAtMDI0Ny5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5hY2NlbGVvLnByb2ZpbGVyXzMuNi42LjIwMTYxMDA2MDgzMS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5vY2wuZWNvcmVfMy42LjAudjIwMTYwNTIzLTE5MTQuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2Uub2NsXzMuNi4wLnYyMDE2MDUyMy0xOTE0LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL2xwZy5ydW50aW1lLmphdmFfMi4wLjE3LnYyMDEwMDQyNzE2NDAuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2Uub2NsLmNvbW1vbl8xLjQuMC52MjAxNjA1MjEtMjAzMy5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5lbWYuY29kZWdlbi5lY29yZV8yLjEyLjAudjIwMTYwNTI2LTAzNTYuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZW1mLmNvZGVnZW5fMi4xMS4wLnYyMDE2MDUyNi0wMzU2LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnVtbDIudW1sXzUuMi4zLnYyMDE3MDIyNy0wOTM1LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnVtbDIuY29tbW9uXzIuMS4wLnYyMDE3MDIyNy0wOTM1LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnVtbDIudHlwZXNfMi4wLjAudjIwMTcwMjI3LTA5MzUuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZW1mLm1hcHBpbmcuZWNvcmUyeG1sXzIuOS4wLnYyMDE2MDUyNi0wMzU2LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5zZXJ2aWNlXzAuMTEuMC4yMDE4MTIwNzEwNDkuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmVfMC45LjAuMjAxODEyMDcxMDQ5LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnBhcHlydXMuZWRpdG9yXzEuMy4wLjIwMTcwMzA4MDg1MS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5wYXB5cnVzLmluZnJhLnVpXzEuMy4wLjIwMTcwMzA4MDg1MS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5wYXB5cnVzLmluZnJhLmNvcmVfMi4xLjEuMjAxNzAzMDgwODUxLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnBhcHlydXMuaW5mcmEudG9vbHNfMi4wLjEuMjAxNzAzMDgwODUxLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnBhcHlydXMuaW5mcmEuY29yZS5sb2dfMS4yLjAuMjAxNzAzMDgwODUxLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmNvcmUucnVudGltZV8zLjEyLjAudjIwMTYwNjA2LTEzNDIuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvamF2YXguaW5qZWN0XzEuMC4wLnYyMDA5MTAzMC5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5vc2dpXzMuMTEuMy52MjAxNzAyMDktMTg0My5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5meC5vc2dpXzIuNC4wLjIwMTYwNTEwMDUwNC5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5vc2dpLmNvbXBhdGliaWxpdHkuc3RhdGVfMS4wLjIwMC52MjAxNjA1MDQtMTQxOS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5lcXVpbm94LmNvbW1vbl8zLjguMC52MjAxNjA1MDktMTIzMC5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5jb3JlLmpvYnNfMy44LjAudjIwMTYwNTA5LTA0MTEuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZXF1aW5veC5yZWdpc3RyeV8zLjYuMTAwLnYyMDE2MDIyMy0yMjE4LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmVxdWlub3gucHJlZmVyZW5jZXNfMy42LjEudjIwMTYwODE1LTE0MDYuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuY29yZS5jb250ZW50dHlwZV8zLjUuMTAwLnYyMDE2MDQxOC0xNjIxLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmVxdWlub3guYXBwXzEuMy40MDAudjIwMTUwNzE1LTE1MjguamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvY29tLmdvb2dsZS5ndWF2YV8xNS4wLjAudjIwMTQwMzI4MTQzMC5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5jb3JlLmRhdGFiaW5kaW5nLm9ic2VydmFibGVfMS42LjAudjIwMTYwNTExLTE3NDcuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UucGFweXJ1cy5pbmZyYS5jb3JlLnNhc2h3aW5kb3dzLmRpXzEuMi4wLjIwMTcwMzA4MDg1MS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5lbWYudHJhbnNhY3Rpb25fMS45LjAuMjAxNjA2MDcxOTAwLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmVtZi5lZGl0XzIuMTIuMC52MjAxNjA1MjYtMDM1Ni5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5lbWYuZWNvcmUuY2hhbmdlXzIuMTEuMC52MjAxNjA0MjAtMDI0Ny5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5lbWYudmFsaWRhdGlvbl8xLjguMC4yMDE2MDYwNzE3MTMuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuY29yZS5leHByZXNzaW9uc18zLjUuMTAwLnYyMDE2MDQxOC0xNjIxLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnVpLmlkZV8zLjEyLjMudjIwMTcwMTE5LTA5MzUuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UucGFweXJ1cy5pbmZyYS5jb3JlLnNhc2hlZGl0b3IuZGlfMi4wLjAuMjAxNzAzMDgwODUxLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnBhcHlydXMuaW5mcmEuY29yZS5zYXNoZWRpdG9yXzIuMC4wLjIwMTcwMzA4MDg1MS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5wYXB5cnVzLmluZnJhLndpZGdldHNfMi4wLjEuMjAxNzAzMDgwODUxLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmNvcmUuZGF0YWJpbmRpbmdfMS42LjAudjIwMTYwNDEyLTA5MTAuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UudWkudmlld3MucHJvcGVydGllcy50YWJiZWRfMy43LjAudjIwMTYwMzEwLTA5MDMuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UudWkuZm9ybXNfMy43LjEudjIwMTYxMjIwLTE2MzUuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UudWkudmlld3NfMy44LjEwMi52MjAxNzAxMTEtMDgwMS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5wYXB5cnVzLmluZnJhLnNlcnZpY2VzLmxhYmVscHJvdmlkZXJfMS4yLjEuMjAxNzAzMDgwODUxLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmpmYWNlLnRleHRfMy4xMS4yLnYyMDE3MDIyMC0xOTExLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnRleHRfMy42LjAudjIwMTYwNTAzLTE4NDkuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UucGFweXJ1cy5tYXJ0ZS5zdGF0aWMucHJvZmlsZV8xLjIuMy4yMDE4MTAxNzAxMTEuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuYWNjZWxlby5wYXJzZXJfMy42LjYuMjAxNjEwMDYwODMxLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLm0ybS5xdnQub21sXzMuNi4wLnYyMDE2MDYwNi0xMTU2LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLm0ybS5xdnQub21sLmNvbW1vbl8zLjYuMC52MjAxNjA2MDYtMTE1Ni5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5tMm0ucXZ0Lm9tbC5lbWYudXRpbF8zLjYuMC52MjAxNjA2MDYtMTE1Ni5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5tMm0ucXZ0Lm9tbC5jc3QucGFyc2VyXzMuNi4wLnYyMDE2MDYwNi0xMTU2LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLm0ybS5xdnQub21sLmVjb3JlLmltcGVyYXRpdmVvY2xfMy40LjAudjIwMTYwNjA2LTExNTYuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UubTJtLnF2dC5vbWwucHJvamVjdF8zLjYuMC52MjAxNjA2MDYtMTE1Ni5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5tMm0ucXZ0Lm9tbC5ydW50aW1lXzMuNi4wLnYyMDE2MDYwNi0xMTU2LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmdtZi5ydW50aW1lLmRpYWdyYW0udWlfMS44LjAuMjAxNjA2MDcxOTU5LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmdlZl8zLjExLjAuMjAxNjA2MDYxMzA4LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmRyYXcyZF8zLjEwLjEwMC4yMDE2MDYwNjEzMDguamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZ21mLnJ1bnRpbWUuZW1mLmNvcmVfMS43LjAuMjAxNjA2MDcxOTU5LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmdtZi5ydW50aW1lLmNvbW1vbi5jb3JlXzEuNy4wLjIwMTYwNjA3MTk1OS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5lbWYud29ya3NwYWNlXzEuNS4xLjIwMTYwNjA3MTkwMC5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5nbWYucnVudGltZS5lbWYuY2xpcGJvYXJkLmNvcmVfMS43LjAuMjAxNjA2MDcxOTU5LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmdtZi5ydW50aW1lLmVtZi51aV8xLjcuMC4yMDE2MDYwNzE5NTkuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZ21mLnJ1bnRpbWUuY29tbW9uLnVpLmFjdGlvbl8xLjcuMC4yMDE2MDYwNzE5NTkuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZ21mLnJ1bnRpbWUuY29tbW9uLnVpLnNlcnZpY2VzLmFjdGlvbl8xLjcuMC4yMDE2MDYwNzE5NTkuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZ21mLnJ1bnRpbWUuY29tbW9uLnVpLnNlcnZpY2VzXzEuOS4wLjIwMTYwNjA3MTk1OS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5nbWYucnVudGltZS5jb21tb24udWlfMS44LjEuMjAxNjA2MDcxOTU5LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnVpLmNvbnNvbGVfMy42LjIwMS52MjAxNjExMDctMDMzNy5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS51aS53b3JrYmVuY2gudGV4dGVkaXRvcl8zLjEwLjEudjIwMTYwODE4LTE2MjYuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UudGVhbS5jb3JlXzMuOC4wLnYyMDE2MDQxOC0xNTM0LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmdtZi5ydW50aW1lLmVtZi50eXBlLmNvcmVfMS45LjAuMjAxNjA2MDcxOTU5LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmdtZi5ydW50aW1lLmVtZi5jb21tYW5kcy5jb3JlXzEuNy4wLjIwMTYwNjA3MTk1OS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5nbWYucnVudGltZS5nZWYudWlfMS43LjAuMjAxNjA2MDcxOTU5LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmdtZi5ydW50aW1lLmRyYXcyZC51aV8xLjkuMC4yMDE2MDYwNzE5NTkuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZ21mLnJ1bnRpbWUubm90YXRpb25fMS44LjAuMjAxNjA2MDcxNjMxLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmdtZi5ydW50aW1lLmRpYWdyYW0uY29yZV8xLjcuMC4yMDE2MDYwNzE5NTkuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZGVidWcuY29yZV8zLjEwLjEwMC52MjAxNjA0MTktMTcyMC5qYXIiLz4KLSAgICA8L3BhdGg+Ci0KLSAgICA8cGF0aCBpZD0ib3JnLnBvbGFyc3lzLmNoZXNzLm1vYml1cy5jbGFzc3BhdGgiPgotICAgICAgICA8cGF0aCByZWZpZD0ib3JnLnBvbGFyc3lzLmNoZXNzLm1vYml1cy5saWJyYXJ5Y2xhc3NwYXRoIi8+Ci0gICAgPC9wYXRoPgotCi0gICAgPCEtLSBUaGUgY2xhc3NwYXRoIHdpdGggb25seSB0aGUgamFycyBhdmFpbGFibGUgaW4gdGhlIHBsdWdpbiBmb2xkZXIgb2YgRWNsaXBzZSAtLT4KLSAgICA8cGF0aCBpZD0ib3JnLnBvbGFyc3lzLmNoZXNzLm1vYml1cy5saWJyYXJ5Y2xhc3NwYXRoLmFsbGphcnMiPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249Ii4uL29yZy5wb2xhcnN5cy5jaGVzcy5tb2JpdXMvYmluIi8+Ci0gICAgICAgIDxmaWxlc2V0IGRpcj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvIiBpbmNsdWRlcz0iKi5qYXIiLz4KLSAgICA8L3BhdGg+Ci0KLSAgICA8cGF0aCBpZD0ib3JnLnBvbGFyc3lzLmNoZXNzLm1vYml1cy5jbGFzc3BhdGguYWxsamFycyI+Ci0gICAgICAgIDxwYXRoIHJlZmlkPSJvcmcucG9sYXJzeXMuY2hlc3MubW9iaXVzLmxpYnJhcnljbGFzc3BhdGguYWxsamFycyIvPgotICAgIDwvcGF0aD4KLQotICAgIDwhLS0gVGhlIGRlZmF1bHQgdGFzayB3aXRoIHRoZSBqYXJzIHVzZWQgYnkgdGhpcyBwcm9qZWN0IC0tPgotICAgIDx0YXJnZXQgbmFtZT0iUmV3YXJkVGVtcGxhdGUiPgotICAgICAgICA8amF2YSBjbGFzc25hbWU9Im9yZy5wb2xhcnN5cy5jaGVzcy5tb2JpdXMudGVtcGxhdGVzLlJld2FyZFRlbXBsYXRlIiBjbGFzc3BhdGhyZWY9Im9yZy5wb2xhcnN5cy5jaGVzcy5tb2JpdXMuY2xhc3NwYXRoIj4KLSAgICAgICAgICAgIDxhcmcgdmFsdWU9IiR7bW9kZWx9Ii8+Ci0gICAgICAgICAgICA8YXJnIHZhbHVlPSIke3RhcmdldH0iLz4KLSAgICAgICAgPC9qYXZhPgotICAgIDwvdGFyZ2V0PgotCi0gICAgPCEtLQotICAgICAgICBJbiBjYXNlIG9mIHByb2JsZW0geW91IGNhbiBhbHNvIHRyeSB3aXRoIGFsbCB0aGUgamFyIGF2YWlsYWJsZSBpbiB5b3VyIEVjbGlwc2UKLSAgICAgICAgS2VlcCBpbiBtaW5kIHRoYXQgaGF2aW5nIHR3byB2ZXJzaW9ucyBvZiB0aGUgc2FtZSBqYXIgY2FuIGNyZWF0ZSBwcm9ibGVtcwotICAgIC0tPgotICAgIDx0YXJnZXQgbmFtZT0iUmV3YXJkVGVtcGxhdGUuYWxsamFycyI+Ci0gICAgICAgIDxqYXZhIGNsYXNzbmFtZT0ib3JnLnBvbGFyc3lzLmNoZXNzLm1vYml1cy50ZW1wbGF0ZXMuUmV3YXJkVGVtcGxhdGUiIGNsYXNzcGF0aHJlZj0ib3JnLnBvbGFyc3lzLmNoZXNzLm1vYml1cy5jbGFzc3BhdGgiPgotICAgICAgICAgICAgPGFyZyB2YWx1ZT0iJHttb2RlbH0iLz4KLSAgICAgICAgICAgIDxhcmcgdmFsdWU9IiR7dGFyZ2V0fSIvPgotICAgICAgICA8L2phdmE+Ci0gICAgPC90YXJnZXQ+Ci08L3Byb2plY3Q+CmRpZmYgLS1naXQgYS9wbHVnaW5zL21vYml1cy9vcmcucG9sYXJzeXMuY2hlc3MubW9iaXVzL3Rhc2tzL1Jld2FyZFRlbXBsYXRlVGFyZ2V0LnhtbCBiL3BsdWdpbnMvbW9iaXVzL29yZy5wb2xhcnN5cy5jaGVzcy5tb2JpdXMvdGFza3MvUmV3YXJkVGVtcGxhdGVUYXJnZXQueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYjg2MGM5Li4wMDAwMDAwCi0tLSBhL3BsdWdpbnMvbW9iaXVzL29yZy5wb2xhcnN5cy5jaGVzcy5tb2JpdXMvdGFza3MvUmV3YXJkVGVtcGxhdGVUYXJnZXQueG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLQotPCEtLSBQbGFjZSB0aGlzIGZpbGUgaW4gdGhlIHRhcmdldCBwcm9qZWN0IGFuZCBjYWxsIGl0IHdpdGggIkV4dGVybmFsIFRvb2xzID4gUnVuIEFzID4gQW50IEJ1aWxkIiAtLT4KLTwhLS0gWW91IGhhdmUgdG8gY2hhbmdlIHRoZSBNT0RFTCBhbmQgdGhlIFRBUkdFVCB2YWx1ZXMgLS0+Ci0KLTxwcm9qZWN0IGJhc2VkaXI9Ii4iIGRlZmF1bHQ9IlJld2FyZFRlbXBsYXRlU2FtcGxlIiBuYW1lPSJvcmcucG9sYXJzeXMuY2hlc3MubW9iaXVzU2FtcGxlIj4KLQk8aW1wb3J0IGZpbGU9Ii4uLy4uL29yZy5wb2xhcnN5cy5jaGVzcy5tb2JpdXMvdGFza3MvUmV3YXJkVGVtcGxhdGUueG1sIi8+Ci0KLSAgICA8IS0tIENoYW5nZSB0aGUgdmFsdWVzIG9mIE1PREVMIGFuZCBUQVJHRVQgdG8gcG9pbnQgdG8geW91ciBtb2RlbCBhbmQgb3V0cHV0IGZvbGRlciAtLT4KLQk8cHJvcGVydHkgbmFtZT0iTU9ERUwiIHZhbHVlPSIke2Jhc2VkaXJ9L21vZGVsL2ZpbGUueG1pIi8+Ci0JPHByb3BlcnR5IG5hbWU9IlRBUkdFVCIgdmFsdWU9IiR7YmFzZWRpcn0vc3JjLWdlbiIvPgotCi0JPHRhcmdldCBuYW1lPSJSZXdhcmRUZW1wbGF0ZVNhbXBsZSIgZGVzY3JpcHRpb249IkdlbmVyYXRlIGZpbGVzIGluICdUQVJHRVQnIj4KLQkJPGFudGNhbGwgdGFyZ2V0PSJSZXdhcmRUZW1wbGF0ZSIgPgotCQkJPHBhcmFtIG5hbWU9Im1vZGVsIiB2YWx1ZT0iJHtNT0RFTH0iLz4KLQkJCTxwYXJhbSBuYW1lPSJ0YXJnZXQiIHZhbHVlPSIke1RBUkdFVH0iLz4KLQkJPC9hbnRjYWxsPgotCTwvdGFyZ2V0PgotPC9wcm9qZWN0PgpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9tb2JpdXMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vYml1cy90YXNrcy9hdG9taWNDb21wb25lbnRSZXdhcmRUZW1wbGF0ZS54bWwgYi9wbHVnaW5zL21vYml1cy9vcmcucG9sYXJzeXMuY2hlc3MubW9iaXVzL3Rhc2tzL2F0b21pY0NvbXBvbmVudFJld2FyZFRlbXBsYXRlLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjk0NDFiMi4uMDAwMDAwMAotLS0gYS9wbHVnaW5zL21vYml1cy9vcmcucG9sYXJzeXMuY2hlc3MubW9iaXVzL3Rhc2tzL2F0b21pY0NvbXBvbmVudFJld2FyZFRlbXBsYXRlLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDE1NCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHByb2plY3QgZGVmYXVsdD0iYXRvbWljQ29tcG9uZW50UmV3YXJkVGVtcGxhdGUiIG5hbWU9Im9yZy5wb2xhcnN5cy5jaGVzcy5tb2JpdXMiPgotICAgIDxwcm9wZXJ0eSBuYW1lPSJFQ0xJUFNFX0hPTUUiIHZhbHVlPSIuLi8uLi8uLi8uLi8uLi9Qcm9ncmFtbWkvUG9sYXJzeXNDSEVTUy1OZW9uLXdpbjMyLXg4Nl82NF8yMDE5MDUxNSIvPgotICAgIDxwcm9wZXJ0eSBuYW1lPSJFQ0xJUFNFX1dPUktTUEFDRSIgdmFsdWU9Ii4uLy4uLy4uLy4uLy4uL1Byb2dyYW1taS9Qb2xhcnN5c0NIRVNTLU5lb24td2luMzIteDg2XzY0XzIwMTkwNTE1L3J1bnRpbWUtTmV3X2NvbmZpZ3VyYXRpb25fMiIvPgotCi0gICAgPCEtLSBUaGUgY2xhc3NwYXRoIHdpdGggb25seSB0aGUgZGVwZW5kZW5jaWVzIHVzZWQgYnkgdGhlIHByb2plY3QgLS0+Ci0gICAgPHBhdGggaWQ9Im9yZy5wb2xhcnN5cy5jaGVzcy5tb2JpdXMubGlicmFyeWNsYXNzcGF0aCI+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX1dPUktTUEFDRX0vb3JnLnBvbGFyc3lzLmNoZXNzLm1vYml1cy9iaW4iLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vanJlL2xpYi9yZXNvdXJjZXMuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L2pyZS9saWIvcnQuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L2pyZS9saWIvanNzZS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vanJlL2xpYi9qY2UuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L2pyZS9saWIvY2hhcnNldHMuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L2pyZS9saWIvamZyLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9qcmUvbGliL2V4dC9hY2Nlc3MtYnJpZGdlLTY0LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9qcmUvbGliL2V4dC9jbGRyZGF0YS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vanJlL2xpYi9leHQvZG5zbnMuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L2pyZS9saWIvZXh0L2phY2Nlc3MuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L2pyZS9saWIvZXh0L2pmeHJ0LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9qcmUvbGliL2V4dC9sb2NhbGVkYXRhLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9qcmUvbGliL2V4dC9uYXNob3JuLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9qcmUvbGliL2V4dC9zdW5lYy5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vanJlL2xpYi9leHQvc3VuamNlX3Byb3ZpZGVyLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9qcmUvbGliL2V4dC9zdW5tc2NhcGkuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L2pyZS9saWIvZXh0L3N1bnBrY3MxMS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vanJlL2xpYi9leHQvemlwZnMuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UudWlfMy4xMDguMS52MjAxNjA5MjktMTA0NS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5zd3RfMy4xMDUuMy52MjAxNzAyMjgtMDUxMi5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5zd3Qud2luMzIud2luMzIueDg2XzY0XzMuMTA1LjMudjIwMTcwMjI4LTA1MTIuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuamZhY2VfMy4xMi4yLnYyMDE3MDExMy0yMTEzLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmNvcmUuY29tbWFuZHNfMy44LjEudjIwMTYxMjIxLTE2NTEuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UudWkud29ya2JlbmNoXzMuMTA4LjMudjIwMTcwMjE2LTE1MzkuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZTQudWkud29ya2JlbmNoM18wLjEzLjEwMC52MjAxNjA1MDYtMDc1OS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlc18zLjExLjEudjIwMTYxMTA3LTIwMzIuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuYWNjZWxlby5lbmdpbmVfMy42LjYuMjAxNjEwMDYwODMxLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmFjY2VsZW8uY29tbW9uXzMuNi42LjIwMTYxMDA2MDgzMS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5hY2NlbGVvLm1vZGVsXzMuNi42LjIwMTYxMDA2MDgzMS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5lbWYuZWNvcmVfMi4xMi4wLnYyMDE2MDQyMC0wMjQ3LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmVtZi5jb21tb25fMi4xMi4wLnYyMDE2MDQyMC0wMjQ3LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmVtZi5lY29yZS54bWlfMi4xMi4wLnYyMDE2MDQyMC0wMjQ3LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmFjY2VsZW8ucHJvZmlsZXJfMy42LjYuMjAxNjEwMDYwODMxLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLm9jbC5lY29yZV8zLjYuMC52MjAxNjA1MjMtMTkxNC5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5vY2xfMy42LjAudjIwMTYwNTIzLTE5MTQuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvbHBnLnJ1bnRpbWUuamF2YV8yLjAuMTcudjIwMTAwNDI3MTY0MC5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5vY2wuY29tbW9uXzEuNC4wLnYyMDE2MDUyMS0yMDMzLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmVtZi5jb2RlZ2VuLmVjb3JlXzIuMTIuMC52MjAxNjA1MjYtMDM1Ni5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5lbWYuY29kZWdlbl8yLjExLjAudjIwMTYwNTI2LTAzNTYuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UudW1sMi51bWxfNS4yLjMudjIwMTcwMjI3LTA5MzUuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UudW1sMi5jb21tb25fMi4xLjAudjIwMTcwMjI3LTA5MzUuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UudW1sMi50eXBlc18yLjAuMC52MjAxNzAyMjctMDkzNS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5lbWYubWFwcGluZy5lY29yZTJ4bWxfMi45LjAudjIwMTYwNTI2LTAzNTYuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnNlcnZpY2VfMC4xMS4wLjIwMTgxMjA3MTA0OS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZV8wLjkuMC4yMDE4MTIwNzEwNDkuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UucGFweXJ1cy5lZGl0b3JfMS4zLjAuMjAxNzAzMDgwODUxLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnBhcHlydXMuaW5mcmEudWlfMS4zLjAuMjAxNzAzMDgwODUxLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnBhcHlydXMuaW5mcmEuY29yZV8yLjEuMS4yMDE3MDMwODA4NTEuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UucGFweXJ1cy5pbmZyYS50b29sc18yLjAuMS4yMDE3MDMwODA4NTEuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UucGFweXJ1cy5pbmZyYS5jb3JlLmxvZ18xLjIuMC4yMDE3MDMwODA4NTEuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lXzMuMTIuMC52MjAxNjA2MDYtMTM0Mi5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9qYXZheC5pbmplY3RfMS4wLjAudjIwMDkxMDMwLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLm9zZ2lfMy4xMS4zLnYyMDE3MDIwOS0xODQzLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmZ4Lm9zZ2lfMi40LjAuMjAxNjA1MTAwNTA0LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLm9zZ2kuY29tcGF0aWJpbGl0eS5zdGF0ZV8xLjAuMjAwLnYyMDE2MDUwNC0xNDE5LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmVxdWlub3guY29tbW9uXzMuOC4wLnYyMDE2MDUwOS0xMjMwLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmNvcmUuam9ic18zLjguMC52MjAxNjA1MDktMDQxMS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5lcXVpbm94LnJlZ2lzdHJ5XzMuNi4xMDAudjIwMTYwMjIzLTIyMTguamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZXF1aW5veC5wcmVmZXJlbmNlc18zLjYuMS52MjAxNjA4MTUtMTQwNi5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5jb3JlLmNvbnRlbnR0eXBlXzMuNS4xMDAudjIwMTYwNDE4LTE2MjEuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZXF1aW5veC5hcHBfMS4zLjQwMC52MjAxNTA3MTUtMTUyOC5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9jb20uZ29vZ2xlLmd1YXZhXzE1LjAuMC52MjAxNDAzMjgxNDMwLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmNvcmUuZGF0YWJpbmRpbmcub2JzZXJ2YWJsZV8xLjYuMC52MjAxNjA1MTEtMTc0Ny5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5wYXB5cnVzLmluZnJhLmNvcmUuc2FzaHdpbmRvd3MuZGlfMS4yLjAuMjAxNzAzMDgwODUxLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmVtZi50cmFuc2FjdGlvbl8xLjkuMC4yMDE2MDYwNzE5MDAuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZW1mLmVkaXRfMi4xMi4wLnYyMDE2MDUyNi0wMzU2LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmVtZi5lY29yZS5jaGFuZ2VfMi4xMS4wLnYyMDE2MDQyMC0wMjQ3LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmVtZi52YWxpZGF0aW9uXzEuOC4wLjIwMTYwNjA3MTcxMy5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5jb3JlLmV4cHJlc3Npb25zXzMuNS4xMDAudjIwMTYwNDE4LTE2MjEuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UudWkuaWRlXzMuMTIuMy52MjAxNzAxMTktMDkzNS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5wYXB5cnVzLmluZnJhLmNvcmUuc2FzaGVkaXRvci5kaV8yLjAuMC4yMDE3MDMwODA4NTEuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UucGFweXJ1cy5pbmZyYS5jb3JlLnNhc2hlZGl0b3JfMi4wLjAuMjAxNzAzMDgwODUxLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnBhcHlydXMuaW5mcmEud2lkZ2V0c18yLjAuMS4yMDE3MDMwODA4NTEuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuY29yZS5kYXRhYmluZGluZ18xLjYuMC52MjAxNjA0MTItMDkxMC5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS51aS52aWV3cy5wcm9wZXJ0aWVzLnRhYmJlZF8zLjcuMC52MjAxNjAzMTAtMDkwMy5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS51aS5mb3Jtc18zLjcuMS52MjAxNjEyMjAtMTYzNS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS51aS52aWV3c18zLjguMTAyLnYyMDE3MDExMS0wODAxLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnBhcHlydXMuaW5mcmEuc2VydmljZXMubGFiZWxwcm92aWRlcl8xLjIuMS4yMDE3MDMwODA4NTEuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuamZhY2UudGV4dF8zLjExLjIudjIwMTcwMjIwLTE5MTEuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UudGV4dF8zLjYuMC52MjAxNjA1MDMtMTg0OS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5wYXB5cnVzLm1hcnRlLnN0YXRpYy5wcm9maWxlXzEuMi4zLjIwMTgxMDE3MDExMS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5hY2NlbGVvLnBhcnNlcl8zLjYuNi4yMDE2MTAwNjA4MzEuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UubTJtLnF2dC5vbWxfMy42LjAudjIwMTYwNjA2LTExNTYuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UubTJtLnF2dC5vbWwuY29tbW9uXzMuNi4wLnYyMDE2MDYwNi0xMTU2LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLm0ybS5xdnQub21sLmVtZi51dGlsXzMuNi4wLnYyMDE2MDYwNi0xMTU2LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLm0ybS5xdnQub21sLmNzdC5wYXJzZXJfMy42LjAudjIwMTYwNjA2LTExNTYuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UubTJtLnF2dC5vbWwuZWNvcmUuaW1wZXJhdGl2ZW9jbF8zLjQuMC52MjAxNjA2MDYtMTE1Ni5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5tMm0ucXZ0Lm9tbC5wcm9qZWN0XzMuNi4wLnYyMDE2MDYwNi0xMTU2LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLm0ybS5xdnQub21sLnJ1bnRpbWVfMy42LjAudjIwMTYwNjA2LTExNTYuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZ21mLnJ1bnRpbWUuZGlhZ3JhbS51aV8xLjguMC4yMDE2MDYwNzE5NTkuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZ2VmXzMuMTEuMC4yMDE2MDYwNjEzMDguamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZHJhdzJkXzMuMTAuMTAwLjIwMTYwNjA2MTMwOC5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5nbWYucnVudGltZS5lbWYuY29yZV8xLjcuMC4yMDE2MDYwNzE5NTkuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZ21mLnJ1bnRpbWUuY29tbW9uLmNvcmVfMS43LjAuMjAxNjA2MDcxOTU5LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmVtZi53b3Jrc3BhY2VfMS41LjEuMjAxNjA2MDcxOTAwLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmdtZi5ydW50aW1lLmVtZi5jbGlwYm9hcmQuY29yZV8xLjcuMC4yMDE2MDYwNzE5NTkuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZ21mLnJ1bnRpbWUuZW1mLnVpXzEuNy4wLjIwMTYwNjA3MTk1OS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5nbWYucnVudGltZS5jb21tb24udWkuYWN0aW9uXzEuNy4wLjIwMTYwNjA3MTk1OS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5nbWYucnVudGltZS5jb21tb24udWkuc2VydmljZXMuYWN0aW9uXzEuNy4wLjIwMTYwNjA3MTk1OS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5nbWYucnVudGltZS5jb21tb24udWkuc2VydmljZXNfMS45LjAuMjAxNjA2MDcxOTU5LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmdtZi5ydW50aW1lLmNvbW1vbi51aV8xLjguMS4yMDE2MDYwNzE5NTkuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UudWkuY29uc29sZV8zLjYuMjAxLnYyMDE2MTEwNy0wMzM3LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnVpLndvcmtiZW5jaC50ZXh0ZWRpdG9yXzMuMTAuMS52MjAxNjA4MTgtMTYyNi5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS50ZWFtLmNvcmVfMy44LjAudjIwMTYwNDE4LTE1MzQuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZ21mLnJ1bnRpbWUuZW1mLnR5cGUuY29yZV8xLjkuMC4yMDE2MDYwNzE5NTkuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZ21mLnJ1bnRpbWUuZW1mLmNvbW1hbmRzLmNvcmVfMS43LjAuMjAxNjA2MDcxOTU5LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmdtZi5ydW50aW1lLmdlZi51aV8xLjcuMC4yMDE2MDYwNzE5NTkuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZ21mLnJ1bnRpbWUuZHJhdzJkLnVpXzEuOS4wLjIwMTYwNjA3MTk1OS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5nbWYucnVudGltZS5ub3RhdGlvbl8xLjguMC4yMDE2MDYwNzE2MzEuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZ21mLnJ1bnRpbWUuZGlhZ3JhbS5jb3JlXzEuNy4wLjIwMTYwNjA3MTk1OS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5kZWJ1Zy5jb3JlXzMuMTAuMTAwLnYyMDE2MDQxOS0xNzIwLmphciIvPgotICAgIDwvcGF0aD4KLQotICAgIDxwYXRoIGlkPSJvcmcucG9sYXJzeXMuY2hlc3MubW9iaXVzLmNsYXNzcGF0aCI+Ci0gICAgICAgIDxwYXRoIHJlZmlkPSJvcmcucG9sYXJzeXMuY2hlc3MubW9iaXVzLmxpYnJhcnljbGFzc3BhdGgiLz4KLSAgICA8L3BhdGg+Ci0KLSAgICA8IS0tIFRoZSBjbGFzc3BhdGggd2l0aCBvbmx5IHRoZSBqYXJzIGF2YWlsYWJsZSBpbiB0aGUgcGx1Z2luIGZvbGRlciBvZiBFY2xpcHNlIC0tPgotICAgIDxwYXRoIGlkPSJvcmcucG9sYXJzeXMuY2hlc3MubW9iaXVzLmxpYnJhcnljbGFzc3BhdGguYWxsamFycyI+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iLi4vb3JnLnBvbGFyc3lzLmNoZXNzLm1vYml1cy9iaW4iLz4KLSAgICAgICAgPGZpbGVzZXQgZGlyPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy8iIGluY2x1ZGVzPSIqLmphciIvPgotICAgIDwvcGF0aD4KLQotICAgIDxwYXRoIGlkPSJvcmcucG9sYXJzeXMuY2hlc3MubW9iaXVzLmNsYXNzcGF0aC5hbGxqYXJzIj4KLSAgICAgICAgPHBhdGggcmVmaWQ9Im9yZy5wb2xhcnN5cy5jaGVzcy5tb2JpdXMubGlicmFyeWNsYXNzcGF0aC5hbGxqYXJzIi8+Ci0gICAgPC9wYXRoPgotCi0gICAgPCEtLSBUaGUgZGVmYXVsdCB0YXNrIHdpdGggdGhlIGphcnMgdXNlZCBieSB0aGlzIHByb2plY3QgLS0+Ci0gICAgPHRhcmdldCBuYW1lPSJhdG9taWNDb21wb25lbnRSZXdhcmRUZW1wbGF0ZSI+Ci0gICAgICAgIDxqYXZhIGNsYXNzbmFtZT0ib3JnLnBvbGFyc3lzLmNoZXNzLm1vYml1cy50ZW1wbGF0ZXMuQXRvbWljQ29tcG9uZW50UmV3YXJkVGVtcGxhdGUiIGNsYXNzcGF0aHJlZj0ib3JnLnBvbGFyc3lzLmNoZXNzLm1vYml1cy5jbGFzc3BhdGgiPgotICAgICAgICAgICAgPGFyZyB2YWx1ZT0iJHttb2RlbH0iLz4KLSAgICAgICAgICAgIDxhcmcgdmFsdWU9IiR7dGFyZ2V0fSIvPgotICAgICAgICA8L2phdmE+Ci0gICAgPC90YXJnZXQ+Ci0KLSAgICA8IS0tCi0gICAgICAgIEluIGNhc2Ugb2YgcHJvYmxlbSB5b3UgY2FuIGFsc28gdHJ5IHdpdGggYWxsIHRoZSBqYXIgYXZhaWxhYmxlIGluIHlvdXIgRWNsaXBzZQotICAgICAgICBLZWVwIGluIG1pbmQgdGhhdCBoYXZpbmcgdHdvIHZlcnNpb25zIG9mIHRoZSBzYW1lIGphciBjYW4gY3JlYXRlIHByb2JsZW1zCi0gICAgLS0+Ci0gICAgPHRhcmdldCBuYW1lPSJhdG9taWNDb21wb25lbnRSZXdhcmRUZW1wbGF0ZS5hbGxqYXJzIj4KLSAgICAgICAgPGphdmEgY2xhc3NuYW1lPSJvcmcucG9sYXJzeXMuY2hlc3MubW9iaXVzLnRlbXBsYXRlcy5BdG9taWNDb21wb25lbnRSZXdhcmRUZW1wbGF0ZSIgY2xhc3NwYXRocmVmPSJvcmcucG9sYXJzeXMuY2hlc3MubW9iaXVzLmNsYXNzcGF0aCI+Ci0gICAgICAgICAgICA8YXJnIHZhbHVlPSIke21vZGVsfSIvPgotICAgICAgICAgICAgPGFyZyB2YWx1ZT0iJHt0YXJnZXR9Ii8+Ci0gICAgICAgIDwvamF2YT4KLSAgICA8L3RhcmdldD4KLTwvcHJvamVjdD4KZGlmZiAtLWdpdCBhL3BsdWdpbnMvbW9iaXVzL29yZy5wb2xhcnN5cy5jaGVzcy5tb2JpdXMvdGFza3MvYXRvbWljQ29tcG9uZW50VGVtcGxhdGUueG1sIGIvcGx1Z2lucy9tb2JpdXMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vYml1cy90YXNrcy9hdG9taWNDb21wb25lbnRUZW1wbGF0ZS54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYxOGM5YWIuLjAwMDAwMDAKLS0tIGEvcGx1Z2lucy9tb2JpdXMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vYml1cy90YXNrcy9hdG9taWNDb21wb25lbnRUZW1wbGF0ZS54bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNTQgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxwcm9qZWN0IGRlZmF1bHQ9ImF0b21pY0NvbXBvbmVudFRlbXBsYXRlIiBuYW1lPSJvcmcucG9sYXJzeXMuY2hlc3MubW9iaXVzIj4KLSAgICA8cHJvcGVydHkgbmFtZT0iRUNMSVBTRV9IT01FIiB2YWx1ZT0iLi4vLi4vLi4vLi4vLi4vLi4vUHJvZ3JhbW1pL1BvbGFyc3lzQ0hFU1MtTmVvbi13aW4zMi14ODZfNjRfMjAxOTA1MTUiLz4KLSAgICA8cHJvcGVydHkgbmFtZT0iRUNMSVBTRV9XT1JLU1BBQ0UiIHZhbHVlPSIuLi8uLi8uLi8uLi8uLi8uLi9Qcm9ncmFtbWkvUG9sYXJzeXNDSEVTUy1OZW9uLXdpbjMyLXg4Nl82NF8yMDE5MDUxNS9ydW50aW1lLU5ld19jb25maWd1cmF0aW9uXzMiLz4KLQotICAgIDwhLS0gVGhlIGNsYXNzcGF0aCB3aXRoIG9ubHkgdGhlIGRlcGVuZGVuY2llcyB1c2VkIGJ5IHRoZSBwcm9qZWN0IC0tPgotICAgIDxwYXRoIGlkPSJvcmcucG9sYXJzeXMuY2hlc3MubW9iaXVzLmxpYnJhcnljbGFzc3BhdGgiPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9XT1JLU1BBQ0V9L29yZy5wb2xhcnN5cy5jaGVzcy5tb2JpdXMvYmluIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L2pyZS9saWIvcmVzb3VyY2VzLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9qcmUvbGliL3J0LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9qcmUvbGliL2pzc2UuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L2pyZS9saWIvamNlLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9qcmUvbGliL2NoYXJzZXRzLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9qcmUvbGliL2pmci5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vanJlL2xpYi9leHQvYWNjZXNzLWJyaWRnZS02NC5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vanJlL2xpYi9leHQvY2xkcmRhdGEuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L2pyZS9saWIvZXh0L2Ruc25zLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9qcmUvbGliL2V4dC9qYWNjZXNzLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9qcmUvbGliL2V4dC9qZnhydC5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vanJlL2xpYi9leHQvbG9jYWxlZGF0YS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vanJlL2xpYi9leHQvbmFzaG9ybi5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vanJlL2xpYi9leHQvc3VuZWMuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L2pyZS9saWIvZXh0L3N1bmpjZV9wcm92aWRlci5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vanJlL2xpYi9leHQvc3VubXNjYXBpLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9qcmUvbGliL2V4dC9zdW5wa2NzMTEuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L2pyZS9saWIvZXh0L3ppcGZzLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnVpXzMuMTA4LjEudjIwMTYwOTI5LTEwNDUuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2Uuc3d0XzMuMTA1LjMudjIwMTcwMjI4LTA1MTIuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2Uuc3d0LndpbjMyLndpbjMyLng4Nl82NF8zLjEwNS4zLnYyMDE3MDIyOC0wNTEyLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmpmYWNlXzMuMTIuMi52MjAxNzAxMTMtMjExMy5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5jb3JlLmNvbW1hbmRzXzMuOC4xLnYyMDE2MTIyMS0xNjUxLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnVpLndvcmtiZW5jaF8zLjEwOC4zLnYyMDE3MDIxNi0xNTM5LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmU0LnVpLndvcmtiZW5jaDNfMC4xMy4xMDAudjIwMTYwNTA2LTA3NTkuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXNfMy4xMS4xLnYyMDE2MTEwNy0yMDMyLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmFjY2VsZW8uZW5naW5lXzMuNi42LjIwMTYxMDA2MDgzMS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5hY2NlbGVvLmNvbW1vbl8zLjYuNi4yMDE2MTAwNjA4MzEuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuYWNjZWxlby5tb2RlbF8zLjYuNi4yMDE2MTAwNjA4MzEuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZW1mLmVjb3JlXzIuMTIuMC52MjAxNjA0MjAtMDI0Ny5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5lbWYuY29tbW9uXzIuMTIuMC52MjAxNjA0MjAtMDI0Ny5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5lbWYuZWNvcmUueG1pXzIuMTIuMC52MjAxNjA0MjAtMDI0Ny5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5hY2NlbGVvLnByb2ZpbGVyXzMuNi42LjIwMTYxMDA2MDgzMS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5vY2wuZWNvcmVfMy42LjAudjIwMTYwNTIzLTE5MTQuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2Uub2NsXzMuNi4wLnYyMDE2MDUyMy0xOTE0LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL2xwZy5ydW50aW1lLmphdmFfMi4wLjE3LnYyMDEwMDQyNzE2NDAuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2Uub2NsLmNvbW1vbl8xLjQuMC52MjAxNjA1MjEtMjAzMy5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5lbWYuY29kZWdlbi5lY29yZV8yLjEyLjAudjIwMTYwNTI2LTAzNTYuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZW1mLmNvZGVnZW5fMi4xMS4wLnYyMDE2MDUyNi0wMzU2LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnVtbDIudW1sXzUuMi4zLnYyMDE3MDIyNy0wOTM1LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnVtbDIuY29tbW9uXzIuMS4wLnYyMDE3MDIyNy0wOTM1LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnVtbDIudHlwZXNfMi4wLjAudjIwMTcwMjI3LTA5MzUuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZW1mLm1hcHBpbmcuZWNvcmUyeG1sXzIuOS4wLnYyMDE2MDUyNi0wMzU2LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5zZXJ2aWNlXzAuMTEuMC4yMDE4MTIwNzEwNDkuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmVfMC45LjAuMjAxODEyMDcxMDQ5LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnBhcHlydXMuZWRpdG9yXzEuMy4wLjIwMTcwMzA4MDg1MS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5wYXB5cnVzLmluZnJhLnVpXzEuMy4wLjIwMTcwMzA4MDg1MS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5wYXB5cnVzLmluZnJhLmNvcmVfMi4xLjEuMjAxNzAzMDgwODUxLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnBhcHlydXMuaW5mcmEudG9vbHNfMi4wLjEuMjAxNzAzMDgwODUxLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnBhcHlydXMuaW5mcmEuY29yZS5sb2dfMS4yLjAuMjAxNzAzMDgwODUxLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmNvcmUucnVudGltZV8zLjEyLjAudjIwMTYwNjA2LTEzNDIuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvamF2YXguaW5qZWN0XzEuMC4wLnYyMDA5MTAzMC5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5vc2dpXzMuMTEuMy52MjAxNzAyMDktMTg0My5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5meC5vc2dpXzIuNC4wLjIwMTYwNTEwMDUwNC5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5vc2dpLmNvbXBhdGliaWxpdHkuc3RhdGVfMS4wLjIwMC52MjAxNjA1MDQtMTQxOS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5lcXVpbm94LmNvbW1vbl8zLjguMC52MjAxNjA1MDktMTIzMC5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5jb3JlLmpvYnNfMy44LjAudjIwMTYwNTA5LTA0MTEuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZXF1aW5veC5yZWdpc3RyeV8zLjYuMTAwLnYyMDE2MDIyMy0yMjE4LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmVxdWlub3gucHJlZmVyZW5jZXNfMy42LjEudjIwMTYwODE1LTE0MDYuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuY29yZS5jb250ZW50dHlwZV8zLjUuMTAwLnYyMDE2MDQxOC0xNjIxLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmVxdWlub3guYXBwXzEuMy40MDAudjIwMTUwNzE1LTE1MjguamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvY29tLmdvb2dsZS5ndWF2YV8xNS4wLjAudjIwMTQwMzI4MTQzMC5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5jb3JlLmRhdGFiaW5kaW5nLm9ic2VydmFibGVfMS42LjAudjIwMTYwNTExLTE3NDcuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UucGFweXJ1cy5pbmZyYS5jb3JlLnNhc2h3aW5kb3dzLmRpXzEuMi4wLjIwMTcwMzA4MDg1MS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5lbWYudHJhbnNhY3Rpb25fMS45LjAuMjAxNjA2MDcxOTAwLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmVtZi5lZGl0XzIuMTIuMC52MjAxNjA1MjYtMDM1Ni5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5lbWYuZWNvcmUuY2hhbmdlXzIuMTEuMC52MjAxNjA0MjAtMDI0Ny5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5lbWYudmFsaWRhdGlvbl8xLjguMC4yMDE2MDYwNzE3MTMuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuY29yZS5leHByZXNzaW9uc18zLjUuMTAwLnYyMDE2MDQxOC0xNjIxLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnVpLmlkZV8zLjEyLjMudjIwMTcwMTE5LTA5MzUuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UucGFweXJ1cy5pbmZyYS5jb3JlLnNhc2hlZGl0b3IuZGlfMi4wLjAuMjAxNzAzMDgwODUxLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnBhcHlydXMuaW5mcmEuY29yZS5zYXNoZWRpdG9yXzIuMC4wLjIwMTcwMzA4MDg1MS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5wYXB5cnVzLmluZnJhLndpZGdldHNfMi4wLjEuMjAxNzAzMDgwODUxLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmNvcmUuZGF0YWJpbmRpbmdfMS42LjAudjIwMTYwNDEyLTA5MTAuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UudWkudmlld3MucHJvcGVydGllcy50YWJiZWRfMy43LjAudjIwMTYwMzEwLTA5MDMuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UudWkuZm9ybXNfMy43LjEudjIwMTYxMjIwLTE2MzUuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UudWkudmlld3NfMy44LjEwMi52MjAxNzAxMTEtMDgwMS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5wYXB5cnVzLmluZnJhLnNlcnZpY2VzLmxhYmVscHJvdmlkZXJfMS4yLjEuMjAxNzAzMDgwODUxLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmpmYWNlLnRleHRfMy4xMS4yLnYyMDE3MDIyMC0xOTExLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnRleHRfMy42LjAudjIwMTYwNTAzLTE4NDkuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UucGFweXJ1cy5tYXJ0ZS5zdGF0aWMucHJvZmlsZV8xLjIuMy4yMDE4MTAxNzAxMTEuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuYWNjZWxlby5wYXJzZXJfMy42LjYuMjAxNjEwMDYwODMxLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLm0ybS5xdnQub21sXzMuNi4wLnYyMDE2MDYwNi0xMTU2LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLm0ybS5xdnQub21sLmNvbW1vbl8zLjYuMC52MjAxNjA2MDYtMTE1Ni5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5tMm0ucXZ0Lm9tbC5lbWYudXRpbF8zLjYuMC52MjAxNjA2MDYtMTE1Ni5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5tMm0ucXZ0Lm9tbC5jc3QucGFyc2VyXzMuNi4wLnYyMDE2MDYwNi0xMTU2LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLm0ybS5xdnQub21sLmVjb3JlLmltcGVyYXRpdmVvY2xfMy40LjAudjIwMTYwNjA2LTExNTYuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UubTJtLnF2dC5vbWwucHJvamVjdF8zLjYuMC52MjAxNjA2MDYtMTE1Ni5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5tMm0ucXZ0Lm9tbC5ydW50aW1lXzMuNi4wLnYyMDE2MDYwNi0xMTU2LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmdtZi5ydW50aW1lLmRpYWdyYW0udWlfMS44LjAuMjAxNjA2MDcxOTU5LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmdlZl8zLjExLjAuMjAxNjA2MDYxMzA4LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmRyYXcyZF8zLjEwLjEwMC4yMDE2MDYwNjEzMDguamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZ21mLnJ1bnRpbWUuZW1mLmNvcmVfMS43LjAuMjAxNjA2MDcxOTU5LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmdtZi5ydW50aW1lLmNvbW1vbi5jb3JlXzEuNy4wLjIwMTYwNjA3MTk1OS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5lbWYud29ya3NwYWNlXzEuNS4xLjIwMTYwNjA3MTkwMC5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5nbWYucnVudGltZS5lbWYuY2xpcGJvYXJkLmNvcmVfMS43LjAuMjAxNjA2MDcxOTU5LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmdtZi5ydW50aW1lLmVtZi51aV8xLjcuMC4yMDE2MDYwNzE5NTkuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZ21mLnJ1bnRpbWUuY29tbW9uLnVpLmFjdGlvbl8xLjcuMC4yMDE2MDYwNzE5NTkuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZ21mLnJ1bnRpbWUuY29tbW9uLnVpLnNlcnZpY2VzLmFjdGlvbl8xLjcuMC4yMDE2MDYwNzE5NTkuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZ21mLnJ1bnRpbWUuY29tbW9uLnVpLnNlcnZpY2VzXzEuOS4wLjIwMTYwNjA3MTk1OS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5nbWYucnVudGltZS5jb21tb24udWlfMS44LjEuMjAxNjA2MDcxOTU5LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnVpLmNvbnNvbGVfMy42LjIwMS52MjAxNjExMDctMDMzNy5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS51aS53b3JrYmVuY2gudGV4dGVkaXRvcl8zLjEwLjEudjIwMTYwODE4LTE2MjYuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UudGVhbS5jb3JlXzMuOC4wLnYyMDE2MDQxOC0xNTM0LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmdtZi5ydW50aW1lLmVtZi50eXBlLmNvcmVfMS45LjAuMjAxNjA2MDcxOTU5LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmdtZi5ydW50aW1lLmVtZi5jb21tYW5kcy5jb3JlXzEuNy4wLjIwMTYwNjA3MTk1OS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5nbWYucnVudGltZS5nZWYudWlfMS43LjAuMjAxNjA2MDcxOTU5LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmdtZi5ydW50aW1lLmRyYXcyZC51aV8xLjkuMC4yMDE2MDYwNzE5NTkuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZ21mLnJ1bnRpbWUubm90YXRpb25fMS44LjAuMjAxNjA2MDcxNjMxLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmdtZi5ydW50aW1lLmRpYWdyYW0uY29yZV8xLjcuMC4yMDE2MDYwNzE5NTkuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZGVidWcuY29yZV8zLjEwLjEwMC52MjAxNjA0MTktMTcyMC5qYXIiLz4KLSAgICA8L3BhdGg+Ci0KLSAgICA8cGF0aCBpZD0ib3JnLnBvbGFyc3lzLmNoZXNzLm1vYml1cy5jbGFzc3BhdGgiPgotICAgICAgICA8cGF0aCByZWZpZD0ib3JnLnBvbGFyc3lzLmNoZXNzLm1vYml1cy5saWJyYXJ5Y2xhc3NwYXRoIi8+Ci0gICAgPC9wYXRoPgotCi0gICAgPCEtLSBUaGUgY2xhc3NwYXRoIHdpdGggb25seSB0aGUgamFycyBhdmFpbGFibGUgaW4gdGhlIHBsdWdpbiBmb2xkZXIgb2YgRWNsaXBzZSAtLT4KLSAgICA8cGF0aCBpZD0ib3JnLnBvbGFyc3lzLmNoZXNzLm1vYml1cy5saWJyYXJ5Y2xhc3NwYXRoLmFsbGphcnMiPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249Ii4uL29yZy5wb2xhcnN5cy5jaGVzcy5tb2JpdXMvYmluIi8+Ci0gICAgICAgIDxmaWxlc2V0IGRpcj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvIiBpbmNsdWRlcz0iKi5qYXIiLz4KLSAgICA8L3BhdGg+Ci0KLSAgICA8cGF0aCBpZD0ib3JnLnBvbGFyc3lzLmNoZXNzLm1vYml1cy5jbGFzc3BhdGguYWxsamFycyI+Ci0gICAgICAgIDxwYXRoIHJlZmlkPSJvcmcucG9sYXJzeXMuY2hlc3MubW9iaXVzLmxpYnJhcnljbGFzc3BhdGguYWxsamFycyIvPgotICAgIDwvcGF0aD4KLQotICAgIDwhLS0gVGhlIGRlZmF1bHQgdGFzayB3aXRoIHRoZSBqYXJzIHVzZWQgYnkgdGhpcyBwcm9qZWN0IC0tPgotICAgIDx0YXJnZXQgbmFtZT0iYXRvbWljQ29tcG9uZW50VGVtcGxhdGUiPgotICAgICAgICA8amF2YSBjbGFzc25hbWU9Im9yZy5wb2xhcnN5cy5jaGVzcy5tb2JpdXMudGVtcGxhdGVzLkF0b21pY0NvbXBvbmVudFRlbXBsYXRlIiBjbGFzc3BhdGhyZWY9Im9yZy5wb2xhcnN5cy5jaGVzcy5tb2JpdXMuY2xhc3NwYXRoIj4KLSAgICAgICAgICAgIDxhcmcgdmFsdWU9IiR7bW9kZWx9Ii8+Ci0gICAgICAgICAgICA8YXJnIHZhbHVlPSIke3RhcmdldH0iLz4KLSAgICAgICAgPC9qYXZhPgotICAgIDwvdGFyZ2V0PgotCi0gICAgPCEtLQotICAgICAgICBJbiBjYXNlIG9mIHByb2JsZW0geW91IGNhbiBhbHNvIHRyeSB3aXRoIGFsbCB0aGUgamFyIGF2YWlsYWJsZSBpbiB5b3VyIEVjbGlwc2UKLSAgICAgICAgS2VlcCBpbiBtaW5kIHRoYXQgaGF2aW5nIHR3byB2ZXJzaW9ucyBvZiB0aGUgc2FtZSBqYXIgY2FuIGNyZWF0ZSBwcm9ibGVtcwotICAgIC0tPgotICAgIDx0YXJnZXQgbmFtZT0iYXRvbWljQ29tcG9uZW50VGVtcGxhdGUuYWxsamFycyI+Ci0gICAgICAgIDxqYXZhIGNsYXNzbmFtZT0ib3JnLnBvbGFyc3lzLmNoZXNzLm1vYml1cy50ZW1wbGF0ZXMuQXRvbWljQ29tcG9uZW50VGVtcGxhdGUiIGNsYXNzcGF0aHJlZj0ib3JnLnBvbGFyc3lzLmNoZXNzLm1vYml1cy5jbGFzc3BhdGgiPgotICAgICAgICAgICAgPGFyZyB2YWx1ZT0iJHttb2RlbH0iLz4KLSAgICAgICAgICAgIDxhcmcgdmFsdWU9IiR7dGFyZ2V0fSIvPgotICAgICAgICA8L2phdmE+Ci0gICAgPC90YXJnZXQ+Ci08L3Byb2plY3Q+CmRpZmYgLS1naXQgYS9wbHVnaW5zL21vYml1cy9vcmcucG9sYXJzeXMuY2hlc3MubW9iaXVzL3Rhc2tzL2F0b21pY0NvbXBvbmVudFRlbXBsYXRlVGFyZ2V0LnhtbCBiL3BsdWdpbnMvbW9iaXVzL29yZy5wb2xhcnN5cy5jaGVzcy5tb2JpdXMvdGFza3MvYXRvbWljQ29tcG9uZW50VGVtcGxhdGVUYXJnZXQueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYTE2MjJiLi4wMDAwMDAwCi0tLSBhL3BsdWdpbnMvbW9iaXVzL29yZy5wb2xhcnN5cy5jaGVzcy5tb2JpdXMvdGFza3MvYXRvbWljQ29tcG9uZW50VGVtcGxhdGVUYXJnZXQueG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLQotPCEtLSBQbGFjZSB0aGlzIGZpbGUgaW4gdGhlIHRhcmdldCBwcm9qZWN0IGFuZCBjYWxsIGl0IHdpdGggIkV4dGVybmFsIFRvb2xzID4gUnVuIEFzID4gQW50IEJ1aWxkIiAtLT4KLTwhLS0gWW91IGhhdmUgdG8gY2hhbmdlIHRoZSBNT0RFTCBhbmQgdGhlIFRBUkdFVCB2YWx1ZXMgLS0+Ci0KLTxwcm9qZWN0IGJhc2VkaXI9Ii4iIGRlZmF1bHQ9ImF0b21pY0NvbXBvbmVudFRlbXBsYXRlU2FtcGxlIiBuYW1lPSJvcmcucG9sYXJzeXMuY2hlc3MubW9iaXVzU2FtcGxlIj4KLQk8aW1wb3J0IGZpbGU9Ii4uLy4uL29yZy5wb2xhcnN5cy5jaGVzcy5tb2JpdXMvdGFza3MvYXRvbWljQ29tcG9uZW50VGVtcGxhdGUueG1sIi8+Ci0KLSAgICA8IS0tIENoYW5nZSB0aGUgdmFsdWVzIG9mIE1PREVMIGFuZCBUQVJHRVQgdG8gcG9pbnQgdG8geW91ciBtb2RlbCBhbmQgb3V0cHV0IGZvbGRlciAtLT4KLQk8cHJvcGVydHkgbmFtZT0iTU9ERUwiIHZhbHVlPSIke2Jhc2VkaXJ9L21vZGVsL2ZpbGUueG1pIi8+Ci0JPHByb3BlcnR5IG5hbWU9IlRBUkdFVCIgdmFsdWU9IiR7YmFzZWRpcn0vc3JjLWdlbiIvPgotCi0JPHRhcmdldCBuYW1lPSJhdG9taWNDb21wb25lbnRUZW1wbGF0ZVNhbXBsZSIgZGVzY3JpcHRpb249IkdlbmVyYXRlIGZpbGVzIGluICdUQVJHRVQnIj4KLQkJPGFudGNhbGwgdGFyZ2V0PSJhdG9taWNDb21wb25lbnRUZW1wbGF0ZSIgPgotCQkJPHBhcmFtIG5hbWU9Im1vZGVsIiB2YWx1ZT0iJHtNT0RFTH0iLz4KLQkJCTxwYXJhbSBuYW1lPSJ0YXJnZXQiIHZhbHVlPSIke1RBUkdFVH0iLz4KLQkJPC9hbnRjYWxsPgotCTwvdGFyZ2V0PgotPC9wcm9qZWN0PgpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9tb2JpdXMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vYml1cy90YXNrcy9hdG9taWNDb21wb25lbnRUZW1wbGF0ZV9mcm9tU0FObW9kZWwueG1sIGIvcGx1Z2lucy9tb2JpdXMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vYml1cy90YXNrcy9hdG9taWNDb21wb25lbnRUZW1wbGF0ZV9mcm9tU0FObW9kZWwueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZmVhMjY5Li4wMDAwMDAwCi0tLSBhL3BsdWdpbnMvbW9iaXVzL29yZy5wb2xhcnN5cy5jaGVzcy5tb2JpdXMvdGFza3MvYXRvbWljQ29tcG9uZW50VGVtcGxhdGVfZnJvbVNBTm1vZGVsLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDE1MyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHByb2plY3QgZGVmYXVsdD0iYXRvbWljQ29tcG9uZW50VGVtcGxhdGVfZnJvbVNBTm1vZGVsIiBuYW1lPSJvcmcucG9sYXJzeXMuY2hlc3MubW9iaXVzIj4KLSAgICA8cHJvcGVydHkgbmFtZT0iRUNMSVBTRV9IT01FIiB2YWx1ZT0iLi4vLi4vLi4vLi4vLi4vUHJvZ3JhbW1pL1BvbGFyc3lzQ0hFU1MtTmVvbi13aW4zMi14ODZfNjRfMjAxOTA1MTUiLz4KLSAgICA8cHJvcGVydHkgbmFtZT0iRUNMSVBTRV9XT1JLU1BBQ0UiIHZhbHVlPSIuLi8uLi8uLi8uLi8uLi9Qcm9ncmFtbWkvUG9sYXJzeXNDSEVTUy1OZW9uLXdpbjMyLXg4Nl82NF8yMDE5MDUxNS9ydW50aW1lLU5ld19jb25maWd1cmF0aW9uIi8+Ci0KLSAgICA8IS0tIFRoZSBjbGFzc3BhdGggd2l0aCBvbmx5IHRoZSBkZXBlbmRlbmNpZXMgdXNlZCBieSB0aGUgcHJvamVjdCAtLT4KLSAgICA8cGF0aCBpZD0ib3JnLnBvbGFyc3lzLmNoZXNzLm1vYml1cy5saWJyYXJ5Y2xhc3NwYXRoIj4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfV09SS1NQQUNFfS9vcmcucG9sYXJzeXMuY2hlc3MubW9iaXVzL2JpbiIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9qcmUvbGliL3Jlc291cmNlcy5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vanJlL2xpYi9ydC5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vanJlL2xpYi9qc3NlLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9qcmUvbGliL2pjZS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vanJlL2xpYi9jaGFyc2V0cy5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vanJlL2xpYi9qZnIuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L2pyZS9saWIvZXh0L2FjY2Vzcy1icmlkZ2UtNjQuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L2pyZS9saWIvZXh0L2NsZHJkYXRhLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9qcmUvbGliL2V4dC9kbnNucy5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vanJlL2xpYi9leHQvamFjY2Vzcy5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vanJlL2xpYi9leHQvamZ4cnQuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L2pyZS9saWIvZXh0L2xvY2FsZWRhdGEuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L2pyZS9saWIvZXh0L25hc2hvcm4uamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L2pyZS9saWIvZXh0L3N1bmVjLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9qcmUvbGliL2V4dC9zdW5qY2VfcHJvdmlkZXIuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L2pyZS9saWIvZXh0L3N1bm1zY2FwaS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vanJlL2xpYi9leHQvc3VucGtjczExLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9qcmUvbGliL2V4dC96aXBmcy5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS51aV8zLjEwOC4xLnYyMDE2MDkyOS0xMDQ1LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnN3dF8zLjEwNS4zLnYyMDE3MDIyOC0wNTEyLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnN3dC53aW4zMi53aW4zMi54ODZfNjRfMy4xMDUuMy52MjAxNzAyMjgtMDUxMi5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5qZmFjZV8zLjEyLjIudjIwMTcwMTEzLTIxMTMuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuY29yZS5jb21tYW5kc18zLjguMS52MjAxNjEyMjEtMTY1MS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS51aS53b3JrYmVuY2hfMy4xMDguMy52MjAxNzAyMTYtMTUzOS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5lNC51aS53b3JrYmVuY2gzXzAuMTMuMTAwLnYyMDE2MDUwNi0wNzU5LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzXzMuMTEuMS52MjAxNjExMDctMjAzMi5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5hY2NlbGVvLmVuZ2luZV8zLjYuNi4yMDE2MTAwNjA4MzEuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuYWNjZWxlby5jb21tb25fMy42LjYuMjAxNjEwMDYwODMxLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmFjY2VsZW8ubW9kZWxfMy42LjYuMjAxNjEwMDYwODMxLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmVtZi5lY29yZV8yLjEyLjAudjIwMTYwNDIwLTAyNDcuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZW1mLmNvbW1vbl8yLjEyLjAudjIwMTYwNDIwLTAyNDcuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZW1mLmVjb3JlLnhtaV8yLjEyLjAudjIwMTYwNDIwLTAyNDcuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuYWNjZWxlby5wcm9maWxlcl8zLjYuNi4yMDE2MTAwNjA4MzEuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2Uub2NsLmVjb3JlXzMuNi4wLnYyMDE2MDUyMy0xOTE0LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLm9jbF8zLjYuMC52MjAxNjA1MjMtMTkxNC5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9scGcucnVudGltZS5qYXZhXzIuMC4xNy52MjAxMDA0MjcxNjQwLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLm9jbC5jb21tb25fMS40LjAudjIwMTYwNTIxLTIwMzMuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZW1mLmNvZGVnZW4uZWNvcmVfMi4xMi4wLnYyMDE2MDUyNi0wMzU2LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmVtZi5jb2RlZ2VuXzIuMTEuMC52MjAxNjA1MjYtMDM1Ni5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vd29ya3NwYWNlX3Nhbi9vcmcuZWNsaXBzZS51bWwyLnVtbC9iaW4iLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS51bWwyLmNvbW1vbl8yLjEuMC52MjAxNzAyMjctMDkzNS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS51bWwyLnR5cGVzXzIuMC4wLnYyMDE3MDIyNy0wOTM1LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmVtZi5tYXBwaW5nLmVjb3JlMnhtbF8yLjkuMC52MjAxNjA1MjYtMDM1Ni5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3Muc2VydmljZV8wLjExLjAuMjAxODEyMDcxMDQ5LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlXzAuOS4wLjIwMTgxMjA3MTA0OS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5wYXB5cnVzLmVkaXRvcl8xLjMuMC4yMDE3MDMwODA4NTEuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UucGFweXJ1cy5pbmZyYS51aV8xLjMuMC4yMDE3MDMwODA4NTEuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UucGFweXJ1cy5pbmZyYS5jb3JlXzIuMS4xLjIwMTcwMzA4MDg1MS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5wYXB5cnVzLmluZnJhLnRvb2xzXzIuMC4xLjIwMTcwMzA4MDg1MS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5wYXB5cnVzLmluZnJhLmNvcmUubG9nXzEuMi4wLjIwMTcwMzA4MDg1MS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWVfMy4xMi4wLnYyMDE2MDYwNi0xMzQyLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL2phdmF4LmluamVjdF8xLjAuMC52MjAwOTEwMzAuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2Uub3NnaV8zLjExLjMudjIwMTcwMjA5LTE4NDMuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZngub3NnaV8yLjQuMC4yMDE2MDUxMDA1MDQuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2Uub3NnaS5jb21wYXRpYmlsaXR5LnN0YXRlXzEuMC4yMDAudjIwMTYwNTA0LTE0MTkuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZXF1aW5veC5jb21tb25fMy44LjAudjIwMTYwNTA5LTEyMzAuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuY29yZS5qb2JzXzMuOC4wLnYyMDE2MDUwOS0wNDExLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmVxdWlub3gucmVnaXN0cnlfMy42LjEwMC52MjAxNjAyMjMtMjIxOC5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5lcXVpbm94LnByZWZlcmVuY2VzXzMuNi4xLnYyMDE2MDgxNS0xNDA2LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmNvcmUuY29udGVudHR5cGVfMy41LjEwMC52MjAxNjA0MTgtMTYyMS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5lcXVpbm94LmFwcF8xLjMuNDAwLnYyMDE1MDcxNS0xNTI4LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL2NvbS5nb29nbGUuZ3VhdmFfMTUuMC4wLnYyMDE0MDMyODE0MzAuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuY29yZS5kYXRhYmluZGluZy5vYnNlcnZhYmxlXzEuNi4wLnYyMDE2MDUxMS0xNzQ3LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnBhcHlydXMuaW5mcmEuY29yZS5zYXNod2luZG93cy5kaV8xLjIuMC4yMDE3MDMwODA4NTEuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZW1mLnRyYW5zYWN0aW9uXzEuOS4wLjIwMTYwNjA3MTkwMC5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5lbWYuZWRpdF8yLjEyLjAudjIwMTYwNTI2LTAzNTYuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZW1mLmVjb3JlLmNoYW5nZV8yLjExLjAudjIwMTYwNDIwLTAyNDcuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZW1mLnZhbGlkYXRpb25fMS44LjAuMjAxNjA2MDcxNzEzLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmNvcmUuZXhwcmVzc2lvbnNfMy41LjEwMC52MjAxNjA0MTgtMTYyMS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS51aS5pZGVfMy4xMi4zLnYyMDE3MDExOS0wOTM1LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnBhcHlydXMuaW5mcmEuY29yZS5zYXNoZWRpdG9yLmRpXzIuMC4wLjIwMTcwMzA4MDg1MS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5wYXB5cnVzLmluZnJhLmNvcmUuc2FzaGVkaXRvcl8yLjAuMC4yMDE3MDMwODA4NTEuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UucGFweXJ1cy5pbmZyYS53aWRnZXRzXzIuMC4xLjIwMTcwMzA4MDg1MS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5jb3JlLmRhdGFiaW5kaW5nXzEuNi4wLnYyMDE2MDQxMi0wOTEwLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnVpLnZpZXdzLnByb3BlcnRpZXMudGFiYmVkXzMuNy4wLnYyMDE2MDMxMC0wOTAzLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnVpLmZvcm1zXzMuNy4xLnYyMDE2MTIyMC0xNjM1LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnVpLnZpZXdzXzMuOC4xMDIudjIwMTcwMTExLTA4MDEuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UucGFweXJ1cy5pbmZyYS5zZXJ2aWNlcy5sYWJlbHByb3ZpZGVyXzEuMi4xLjIwMTcwMzA4MDg1MS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5qZmFjZS50ZXh0XzMuMTEuMi52MjAxNzAyMjAtMTkxMS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS50ZXh0XzMuNi4wLnYyMDE2MDUwMy0xODQ5LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnBhcHlydXMubWFydGUuc3RhdGljLnByb2ZpbGVfMS4yLjMuMjAxODEwMTcwMTExLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmFjY2VsZW8ucGFyc2VyXzMuNi42LjIwMTYxMDA2MDgzMS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5tMm0ucXZ0Lm9tbF8zLjYuMC52MjAxNjA2MDYtMTE1Ni5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5tMm0ucXZ0Lm9tbC5jb21tb25fMy42LjAudjIwMTYwNjA2LTExNTYuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UubTJtLnF2dC5vbWwuZW1mLnV0aWxfMy42LjAudjIwMTYwNjA2LTExNTYuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UubTJtLnF2dC5vbWwuY3N0LnBhcnNlcl8zLjYuMC52MjAxNjA2MDYtMTE1Ni5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5tMm0ucXZ0Lm9tbC5lY29yZS5pbXBlcmF0aXZlb2NsXzMuNC4wLnYyMDE2MDYwNi0xMTU2LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLm0ybS5xdnQub21sLnByb2plY3RfMy42LjAudjIwMTYwNjA2LTExNTYuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UubTJtLnF2dC5vbWwucnVudGltZV8zLjYuMC52MjAxNjA2MDYtMTE1Ni5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5nbWYucnVudGltZS5kaWFncmFtLnVpXzEuOC4wLjIwMTYwNjA3MTk1OS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5nZWZfMy4xMS4wLjIwMTYwNjA2MTMwOC5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5kcmF3MmRfMy4xMC4xMDAuMjAxNjA2MDYxMzA4LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmdtZi5ydW50aW1lLmVtZi5jb3JlXzEuNy4wLjIwMTYwNjA3MTk1OS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5nbWYucnVudGltZS5jb21tb24uY29yZV8xLjcuMC4yMDE2MDYwNzE5NTkuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZW1mLndvcmtzcGFjZV8xLjUuMS4yMDE2MDYwNzE5MDAuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZ21mLnJ1bnRpbWUuZW1mLmNsaXBib2FyZC5jb3JlXzEuNy4wLjIwMTYwNjA3MTk1OS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5nbWYucnVudGltZS5lbWYudWlfMS43LjAuMjAxNjA2MDcxOTU5LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmdtZi5ydW50aW1lLmNvbW1vbi51aS5hY3Rpb25fMS43LjAuMjAxNjA2MDcxOTU5LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmdtZi5ydW50aW1lLmNvbW1vbi51aS5zZXJ2aWNlcy5hY3Rpb25fMS43LjAuMjAxNjA2MDcxOTU5LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmdtZi5ydW50aW1lLmNvbW1vbi51aS5zZXJ2aWNlc18xLjkuMC4yMDE2MDYwNzE5NTkuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZ21mLnJ1bnRpbWUuY29tbW9uLnVpXzEuOC4xLjIwMTYwNjA3MTk1OS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS51aS5jb25zb2xlXzMuNi4yMDEudjIwMTYxMTA3LTAzMzcuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UudWkud29ya2JlbmNoLnRleHRlZGl0b3JfMy4xMC4xLnYyMDE2MDgxOC0xNjI2LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnRlYW0uY29yZV8zLjguMC52MjAxNjA0MTgtMTUzNC5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5nbWYucnVudGltZS5lbWYudHlwZS5jb3JlXzEuOS4wLjIwMTYwNjA3MTk1OS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5nbWYucnVudGltZS5lbWYuY29tbWFuZHMuY29yZV8xLjcuMC4yMDE2MDYwNzE5NTkuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZ21mLnJ1bnRpbWUuZ2VmLnVpXzEuNy4wLjIwMTYwNjA3MTk1OS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5nbWYucnVudGltZS5kcmF3MmQudWlfMS45LjAuMjAxNjA2MDcxOTU5LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmdtZi5ydW50aW1lLm5vdGF0aW9uXzEuOC4wLjIwMTYwNjA3MTYzMS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5nbWYucnVudGltZS5kaWFncmFtLmNvcmVfMS43LjAuMjAxNjA2MDcxOTU5LmphciIvPgotICAgIDwvcGF0aD4KLQotICAgIDxwYXRoIGlkPSJvcmcucG9sYXJzeXMuY2hlc3MubW9iaXVzLmNsYXNzcGF0aCI+Ci0gICAgICAgIDxwYXRoIHJlZmlkPSJvcmcucG9sYXJzeXMuY2hlc3MubW9iaXVzLmxpYnJhcnljbGFzc3BhdGgiLz4KLSAgICA8L3BhdGg+Ci0KLSAgICA8IS0tIFRoZSBjbGFzc3BhdGggd2l0aCBvbmx5IHRoZSBqYXJzIGF2YWlsYWJsZSBpbiB0aGUgcGx1Z2luIGZvbGRlciBvZiBFY2xpcHNlIC0tPgotICAgIDxwYXRoIGlkPSJvcmcucG9sYXJzeXMuY2hlc3MubW9iaXVzLmxpYnJhcnljbGFzc3BhdGguYWxsamFycyI+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iLi4vb3JnLnBvbGFyc3lzLmNoZXNzLm1vYml1cy9iaW4iLz4KLSAgICAgICAgPGZpbGVzZXQgZGlyPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy8iIGluY2x1ZGVzPSIqLmphciIvPgotICAgIDwvcGF0aD4KLQotICAgIDxwYXRoIGlkPSJvcmcucG9sYXJzeXMuY2hlc3MubW9iaXVzLmNsYXNzcGF0aC5hbGxqYXJzIj4KLSAgICAgICAgPHBhdGggcmVmaWQ9Im9yZy5wb2xhcnN5cy5jaGVzcy5tb2JpdXMubGlicmFyeWNsYXNzcGF0aC5hbGxqYXJzIi8+Ci0gICAgPC9wYXRoPgotCi0gICAgPCEtLSBUaGUgZGVmYXVsdCB0YXNrIHdpdGggdGhlIGphcnMgdXNlZCBieSB0aGlzIHByb2plY3QgLS0+Ci0gICAgPHRhcmdldCBuYW1lPSJhdG9taWNDb21wb25lbnRUZW1wbGF0ZV9mcm9tU0FObW9kZWwiPgotICAgICAgICA8amF2YSBjbGFzc25hbWU9Im9yZy5wb2xhcnN5cy5jaGVzcy5tb2JpdXMudGVtcGxhdGVzLkF0b21pY0NvbXBvbmVudFRlbXBsYXRlX2Zyb21TQU5tb2RlbCIgY2xhc3NwYXRocmVmPSJvcmcucG9sYXJzeXMuY2hlc3MubW9iaXVzLmNsYXNzcGF0aCI+Ci0gICAgICAgICAgICA8YXJnIHZhbHVlPSIke21vZGVsfSIvPgotICAgICAgICAgICAgPGFyZyB2YWx1ZT0iJHt0YXJnZXR9Ii8+Ci0gICAgICAgIDwvamF2YT4KLSAgICA8L3RhcmdldD4KLQotICAgIDwhLS0KLSAgICAgICAgSW4gY2FzZSBvZiBwcm9ibGVtIHlvdSBjYW4gYWxzbyB0cnkgd2l0aCBhbGwgdGhlIGphciBhdmFpbGFibGUgaW4geW91ciBFY2xpcHNlCi0gICAgICAgIEtlZXAgaW4gbWluZCB0aGF0IGhhdmluZyB0d28gdmVyc2lvbnMgb2YgdGhlIHNhbWUgamFyIGNhbiBjcmVhdGUgcHJvYmxlbXMKLSAgICAtLT4KLSAgICA8dGFyZ2V0IG5hbWU9ImF0b21pY0NvbXBvbmVudFRlbXBsYXRlX2Zyb21TQU5tb2RlbC5hbGxqYXJzIj4KLSAgICAgICAgPGphdmEgY2xhc3NuYW1lPSJvcmcucG9sYXJzeXMuY2hlc3MubW9iaXVzLnRlbXBsYXRlcy5BdG9taWNDb21wb25lbnRUZW1wbGF0ZV9mcm9tU0FObW9kZWwiIGNsYXNzcGF0aHJlZj0ib3JnLnBvbGFyc3lzLmNoZXNzLm1vYml1cy5jbGFzc3BhdGgiPgotICAgICAgICAgICAgPGFyZyB2YWx1ZT0iJHttb2RlbH0iLz4KLSAgICAgICAgICAgIDxhcmcgdmFsdWU9IiR7dGFyZ2V0fSIvPgotICAgICAgICA8L2phdmE+Ci0gICAgPC90YXJnZXQ+Ci08L3Byb2plY3Q+CmRpZmYgLS1naXQgYS9wbHVnaW5zL21vYml1cy9vcmcucG9sYXJzeXMuY2hlc3MubW9iaXVzL3Rhc2tzL2F0b21pY0NvbXBvbmVudFRlbXBsYXRlX3Nhbm1vZGVsLnhtbCBiL3BsdWdpbnMvbW9iaXVzL29yZy5wb2xhcnN5cy5jaGVzcy5tb2JpdXMvdGFza3MvYXRvbWljQ29tcG9uZW50VGVtcGxhdGVfc2FubW9kZWwueG1sCmluZGV4IGM4OGJhMjIuLmY1NGU1ZTkgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvbW9iaXVzL29yZy5wb2xhcnN5cy5jaGVzcy5tb2JpdXMvdGFza3MvYXRvbWljQ29tcG9uZW50VGVtcGxhdGVfc2FubW9kZWwueG1sCisrKyBiL3BsdWdpbnMvbW9iaXVzL29yZy5wb2xhcnN5cy5jaGVzcy5tb2JpdXMvdGFza3MvYXRvbWljQ29tcG9uZW50VGVtcGxhdGVfc2FubW9kZWwueG1sCkBAIC0xLDcgKzEsNyBAQAogPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KIDxwcm9qZWN0IGRlZmF1bHQ9ImF0b21pY0NvbXBvbmVudFRlbXBsYXRlX3Nhbm1vZGVsIiBuYW1lPSJvcmcucG9sYXJzeXMuY2hlc3MubW9iaXVzIj4KLSAgICA8cHJvcGVydHkgbmFtZT0iRUNMSVBTRV9IT01FIiB2YWx1ZT0iLi4vLi4vLi4vLi4vLi4vLi4vUHJvZ3JhbW1pL1BvbGFyc3lzQ0hFU1MtTmVvbi13aW4zMi14ODZfNjRfMjAxOTA1MTUiLz4KLSAgICA8cHJvcGVydHkgbmFtZT0iRUNMSVBTRV9XT1JLU1BBQ0UiIHZhbHVlPSIuLi8uLi8uLi8uLi8uLi8uLi9Qcm9ncmFtbWkvUG9sYXJzeXNDSEVTUy1OZW9uLXdpbjMyLXg4Nl82NF8yMDE5MDUxNS9ydW50aW1lLU5ld19jb25maWd1cmF0aW9uXzMiLz4KKyAgICA8cHJvcGVydHkgbmFtZT0iRUNMSVBTRV9IT01FIiB2YWx1ZT0iLi4vLi4vLi4vLi4vLi4vLi4vRWNsaXBzZUNIRVNTLU5lb24td2luMzIteDg2XzY0XzEuMC4wUkMxIi8+CisgICAgPHByb3BlcnR5IG5hbWU9IkVDTElQU0VfV09SS1NQQUNFIiB2YWx1ZT0iLi4vLi4vLi4vLi4vLi4vLi4vcnVudGltZS1FY2xpcHNlQXBwbGljYXRpb24iLz4KIAogICAgIDwhLS0gVGhlIGNsYXNzcGF0aCB3aXRoIG9ubHkgdGhlIGRlcGVuZGVuY2llcyB1c2VkIGJ5IHRoZSBwcm9qZWN0IC0tPgogICAgIDxwYXRoIGlkPSJvcmcucG9sYXJzeXMuY2hlc3MubW9iaXVzLmxpYnJhcnljbGFzc3BhdGgiPgpAQCAtNDksOCArNDksNiBAQAogICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnVtbDIuY29tbW9uXzIuMS4wLnYyMDE3MDIyNy0wOTM1LmphciIvPgogICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnVtbDIudHlwZXNfMi4wLjAudjIwMTcwMjI3LTA5MzUuamFyIi8+CiAgICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZW1mLm1hcHBpbmcuZWNvcmUyeG1sXzIuOS4wLnYyMDE2MDUyNi0wMzU2LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5zZXJ2aWNlXzAuMTEuMC4yMDE4MTIwNzEwNDkuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmVfMC45LjAuMjAxODEyMDcxMDQ5LmphciIvPgogICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnBhcHlydXMuZWRpdG9yXzEuMy4wLjIwMTcwMzA4MDg1MS5qYXIiLz4KICAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5wYXB5cnVzLmluZnJhLnVpXzEuMy4wLjIwMTcwMzA4MDg1MS5qYXIiLz4KICAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5wYXB5cnVzLmluZnJhLmNvcmVfMi4xLjEuMjAxNzAzMDgwODUxLmphciIvPgpAQCAtODYsNyArODQsNyBAQAogICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnBhcHlydXMuaW5mcmEuc2VydmljZXMubGFiZWxwcm92aWRlcl8xLjIuMS4yMDE3MDMwODA4NTEuamFyIi8+CiAgICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuamZhY2UudGV4dF8zLjExLjIudjIwMTcwMjIwLTE5MTEuamFyIi8+CiAgICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UudGV4dF8zLjYuMC52MjAxNjA1MDMtMTg0OS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5wYXB5cnVzLm1hcnRlLnN0YXRpYy5wcm9maWxlXzEuMi4zLjIwMTgxMDE3MDExMS5qYXIiLz4KKyAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5wYXB5cnVzLm1hcnRlLnN0YXRpYy5wcm9maWxlXzEuMi4wLjIwMTcwMzA4MTE1My5qYXIiLz4KICAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5hY2NlbGVvLnBhcnNlcl8zLjYuNi4yMDE2MTAwNjA4MzEuamFyIi8+CiAgICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UubTJtLnF2dC5vbWxfMy42LjAudjIwMTYwNjA2LTExNTYuamFyIi8+CiAgICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UubTJtLnF2dC5vbWwuY29tbW9uXzMuNi4wLnYyMDE2MDYwNi0xMTU2LmphciIvPgpAQCAtMTE0LDcgKzExMiw2IEBACiAgICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZ21mLnJ1bnRpbWUuZW1mLmNvbW1hbmRzLmNvcmVfMS43LjAuMjAxNjA2MDcxOTU5LmphciIvPgogICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmdtZi5ydW50aW1lLmdlZi51aV8xLjcuMC4yMDE2MDYwNzE5NTkuamFyIi8+CiAgICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZ21mLnJ1bnRpbWUuZHJhdzJkLnVpXzEuOS4wLjIwMTYwNjA3MTk1OS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5nbWYucnVudGltZS5ub3RhdGlvbl8xLjguMC4yMDE2MDYwNzE2MzEuamFyIi8+CiAgICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZ21mLnJ1bnRpbWUuZGlhZ3JhbS5jb3JlXzEuNy4wLjIwMTYwNjA3MTk1OS5qYXIiLz4KICAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5kZWJ1Zy5jb3JlXzMuMTAuMTAwLnYyMDE2MDQxOS0xNzIwLmphciIvPgogICAgIDwvcGF0aD4KZGlmZiAtLWdpdCBhL3BsdWdpbnMvbW9iaXVzL29yZy5wb2xhcnN5cy5jaGVzcy5tb2JpdXMvdGFza3MvYXR0YWNrU2NlbmFyaW9UZW1wbGF0ZS54bWwgYi9wbHVnaW5zL21vYml1cy9vcmcucG9sYXJzeXMuY2hlc3MubW9iaXVzL3Rhc2tzL2F0dGFja1NjZW5hcmlvVGVtcGxhdGUueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZTk1NjA3Li4wMDAwMDAwCi0tLSBhL3BsdWdpbnMvbW9iaXVzL29yZy5wb2xhcnN5cy5jaGVzcy5tb2JpdXMvdGFza3MvYXR0YWNrU2NlbmFyaW9UZW1wbGF0ZS54bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNTQgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxwcm9qZWN0IGRlZmF1bHQ9IkF0dGFja1NjZW5hcmlvVGVtcGxhdGUiIG5hbWU9Im9yZy5wb2xhcnN5cy5jaGVzcy5tb2JpdXMiPgotICAgIDxwcm9wZXJ0eSBuYW1lPSJFQ0xJUFNFX0hPTUUiIHZhbHVlPSIuLi8uLi8uLi8uLi8uLi8uLi9Qcm9ncmFtbWkvUG9sYXJzeXNDSEVTUy1OZW9uLXdpbjMyLXg4Nl82NF8yMDE5MDUxNSIvPgotICAgIDxwcm9wZXJ0eSBuYW1lPSJFQ0xJUFNFX1dPUktTUEFDRSIgdmFsdWU9Ii4uLy4uLy4uLy4uLy4uLy4uL1Byb2dyYW1taS9Qb2xhcnN5c0NIRVNTLU5lb24td2luMzIteDg2XzY0XzIwMTkwNTE1L3J1bnRpbWUtTmV3X2NvbmZpZ3VyYXRpb25fMyIvPgotCi0gICAgPCEtLSBUaGUgY2xhc3NwYXRoIHdpdGggb25seSB0aGUgZGVwZW5kZW5jaWVzIHVzZWQgYnkgdGhlIHByb2plY3QgLS0+Ci0gICAgPHBhdGggaWQ9Im9yZy5wb2xhcnN5cy5jaGVzcy5tb2JpdXMubGlicmFyeWNsYXNzcGF0aCI+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX1dPUktTUEFDRX0vb3JnLnBvbGFyc3lzLmNoZXNzLm1vYml1cy9iaW4iLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vanJlL2xpYi9yZXNvdXJjZXMuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L2pyZS9saWIvcnQuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L2pyZS9saWIvanNzZS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vanJlL2xpYi9qY2UuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L2pyZS9saWIvY2hhcnNldHMuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L2pyZS9saWIvamZyLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9qcmUvbGliL2V4dC9hY2Nlc3MtYnJpZGdlLTY0LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9qcmUvbGliL2V4dC9jbGRyZGF0YS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vanJlL2xpYi9leHQvZG5zbnMuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L2pyZS9saWIvZXh0L2phY2Nlc3MuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L2pyZS9saWIvZXh0L2pmeHJ0LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9qcmUvbGliL2V4dC9sb2NhbGVkYXRhLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9qcmUvbGliL2V4dC9uYXNob3JuLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9qcmUvbGliL2V4dC9zdW5lYy5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vanJlL2xpYi9leHQvc3VuamNlX3Byb3ZpZGVyLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9qcmUvbGliL2V4dC9zdW5tc2NhcGkuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L2pyZS9saWIvZXh0L3N1bnBrY3MxMS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vanJlL2xpYi9leHQvemlwZnMuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UudWlfMy4xMDguMS52MjAxNjA5MjktMTA0NS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5zd3RfMy4xMDUuMy52MjAxNzAyMjgtMDUxMi5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5zd3Qud2luMzIud2luMzIueDg2XzY0XzMuMTA1LjMudjIwMTcwMjI4LTA1MTIuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuamZhY2VfMy4xMi4yLnYyMDE3MDExMy0yMTEzLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmNvcmUuY29tbWFuZHNfMy44LjEudjIwMTYxMjIxLTE2NTEuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UudWkud29ya2JlbmNoXzMuMTA4LjMudjIwMTcwMjE2LTE1MzkuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZTQudWkud29ya2JlbmNoM18wLjEzLjEwMC52MjAxNjA1MDYtMDc1OS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlc18zLjExLjEudjIwMTYxMTA3LTIwMzIuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuYWNjZWxlby5lbmdpbmVfMy42LjYuMjAxNjEwMDYwODMxLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmFjY2VsZW8uY29tbW9uXzMuNi42LjIwMTYxMDA2MDgzMS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5hY2NlbGVvLm1vZGVsXzMuNi42LjIwMTYxMDA2MDgzMS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5lbWYuZWNvcmVfMi4xMi4wLnYyMDE2MDQyMC0wMjQ3LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmVtZi5jb21tb25fMi4xMi4wLnYyMDE2MDQyMC0wMjQ3LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmVtZi5lY29yZS54bWlfMi4xMi4wLnYyMDE2MDQyMC0wMjQ3LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmFjY2VsZW8ucHJvZmlsZXJfMy42LjYuMjAxNjEwMDYwODMxLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLm9jbC5lY29yZV8zLjYuMC52MjAxNjA1MjMtMTkxNC5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5vY2xfMy42LjAudjIwMTYwNTIzLTE5MTQuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvbHBnLnJ1bnRpbWUuamF2YV8yLjAuMTcudjIwMTAwNDI3MTY0MC5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5vY2wuY29tbW9uXzEuNC4wLnYyMDE2MDUyMS0yMDMzLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmVtZi5jb2RlZ2VuLmVjb3JlXzIuMTIuMC52MjAxNjA1MjYtMDM1Ni5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5lbWYuY29kZWdlbl8yLjExLjAudjIwMTYwNTI2LTAzNTYuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UudW1sMi51bWxfNS4yLjMudjIwMTcwMjI3LTA5MzUuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UudW1sMi5jb21tb25fMi4xLjAudjIwMTcwMjI3LTA5MzUuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UudW1sMi50eXBlc18yLjAuMC52MjAxNzAyMjctMDkzNS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5lbWYubWFwcGluZy5lY29yZTJ4bWxfMi45LjAudjIwMTYwNTI2LTAzNTYuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnNlcnZpY2VfMC4xMS4wLjIwMTgxMjA3MTA0OS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZV8wLjkuMC4yMDE4MTIwNzEwNDkuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UucGFweXJ1cy5lZGl0b3JfMS4zLjAuMjAxNzAzMDgwODUxLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnBhcHlydXMuaW5mcmEudWlfMS4zLjAuMjAxNzAzMDgwODUxLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnBhcHlydXMuaW5mcmEuY29yZV8yLjEuMS4yMDE3MDMwODA4NTEuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UucGFweXJ1cy5pbmZyYS50b29sc18yLjAuMS4yMDE3MDMwODA4NTEuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UucGFweXJ1cy5pbmZyYS5jb3JlLmxvZ18xLjIuMC4yMDE3MDMwODA4NTEuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lXzMuMTIuMC52MjAxNjA2MDYtMTM0Mi5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9qYXZheC5pbmplY3RfMS4wLjAudjIwMDkxMDMwLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLm9zZ2lfMy4xMS4zLnYyMDE3MDIwOS0xODQzLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmZ4Lm9zZ2lfMi40LjAuMjAxNjA1MTAwNTA0LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLm9zZ2kuY29tcGF0aWJpbGl0eS5zdGF0ZV8xLjAuMjAwLnYyMDE2MDUwNC0xNDE5LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmVxdWlub3guY29tbW9uXzMuOC4wLnYyMDE2MDUwOS0xMjMwLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmNvcmUuam9ic18zLjguMC52MjAxNjA1MDktMDQxMS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5lcXVpbm94LnJlZ2lzdHJ5XzMuNi4xMDAudjIwMTYwMjIzLTIyMTguamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZXF1aW5veC5wcmVmZXJlbmNlc18zLjYuMS52MjAxNjA4MTUtMTQwNi5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5jb3JlLmNvbnRlbnR0eXBlXzMuNS4xMDAudjIwMTYwNDE4LTE2MjEuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZXF1aW5veC5hcHBfMS4zLjQwMC52MjAxNTA3MTUtMTUyOC5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9jb20uZ29vZ2xlLmd1YXZhXzE1LjAuMC52MjAxNDAzMjgxNDMwLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmNvcmUuZGF0YWJpbmRpbmcub2JzZXJ2YWJsZV8xLjYuMC52MjAxNjA1MTEtMTc0Ny5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5wYXB5cnVzLmluZnJhLmNvcmUuc2FzaHdpbmRvd3MuZGlfMS4yLjAuMjAxNzAzMDgwODUxLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmVtZi50cmFuc2FjdGlvbl8xLjkuMC4yMDE2MDYwNzE5MDAuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZW1mLmVkaXRfMi4xMi4wLnYyMDE2MDUyNi0wMzU2LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmVtZi5lY29yZS5jaGFuZ2VfMi4xMS4wLnYyMDE2MDQyMC0wMjQ3LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmVtZi52YWxpZGF0aW9uXzEuOC4wLjIwMTYwNjA3MTcxMy5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5jb3JlLmV4cHJlc3Npb25zXzMuNS4xMDAudjIwMTYwNDE4LTE2MjEuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UudWkuaWRlXzMuMTIuMy52MjAxNzAxMTktMDkzNS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5wYXB5cnVzLmluZnJhLmNvcmUuc2FzaGVkaXRvci5kaV8yLjAuMC4yMDE3MDMwODA4NTEuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UucGFweXJ1cy5pbmZyYS5jb3JlLnNhc2hlZGl0b3JfMi4wLjAuMjAxNzAzMDgwODUxLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnBhcHlydXMuaW5mcmEud2lkZ2V0c18yLjAuMS4yMDE3MDMwODA4NTEuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuY29yZS5kYXRhYmluZGluZ18xLjYuMC52MjAxNjA0MTItMDkxMC5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS51aS52aWV3cy5wcm9wZXJ0aWVzLnRhYmJlZF8zLjcuMC52MjAxNjAzMTAtMDkwMy5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS51aS5mb3Jtc18zLjcuMS52MjAxNjEyMjAtMTYzNS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS51aS52aWV3c18zLjguMTAyLnYyMDE3MDExMS0wODAxLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnBhcHlydXMuaW5mcmEuc2VydmljZXMubGFiZWxwcm92aWRlcl8xLjIuMS4yMDE3MDMwODA4NTEuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuamZhY2UudGV4dF8zLjExLjIudjIwMTcwMjIwLTE5MTEuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UudGV4dF8zLjYuMC52MjAxNjA1MDMtMTg0OS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5wYXB5cnVzLm1hcnRlLnN0YXRpYy5wcm9maWxlXzEuMi4zLjIwMTgxMDE3MDExMS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5hY2NlbGVvLnBhcnNlcl8zLjYuNi4yMDE2MTAwNjA4MzEuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UubTJtLnF2dC5vbWxfMy42LjAudjIwMTYwNjA2LTExNTYuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UubTJtLnF2dC5vbWwuY29tbW9uXzMuNi4wLnYyMDE2MDYwNi0xMTU2LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLm0ybS5xdnQub21sLmVtZi51dGlsXzMuNi4wLnYyMDE2MDYwNi0xMTU2LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLm0ybS5xdnQub21sLmNzdC5wYXJzZXJfMy42LjAudjIwMTYwNjA2LTExNTYuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UubTJtLnF2dC5vbWwuZWNvcmUuaW1wZXJhdGl2ZW9jbF8zLjQuMC52MjAxNjA2MDYtMTE1Ni5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5tMm0ucXZ0Lm9tbC5wcm9qZWN0XzMuNi4wLnYyMDE2MDYwNi0xMTU2LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLm0ybS5xdnQub21sLnJ1bnRpbWVfMy42LjAudjIwMTYwNjA2LTExNTYuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZ21mLnJ1bnRpbWUuZGlhZ3JhbS51aV8xLjguMC4yMDE2MDYwNzE5NTkuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZ2VmXzMuMTEuMC4yMDE2MDYwNjEzMDguamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZHJhdzJkXzMuMTAuMTAwLjIwMTYwNjA2MTMwOC5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5nbWYucnVudGltZS5lbWYuY29yZV8xLjcuMC4yMDE2MDYwNzE5NTkuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZ21mLnJ1bnRpbWUuY29tbW9uLmNvcmVfMS43LjAuMjAxNjA2MDcxOTU5LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmVtZi53b3Jrc3BhY2VfMS41LjEuMjAxNjA2MDcxOTAwLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmdtZi5ydW50aW1lLmVtZi5jbGlwYm9hcmQuY29yZV8xLjcuMC4yMDE2MDYwNzE5NTkuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZ21mLnJ1bnRpbWUuZW1mLnVpXzEuNy4wLjIwMTYwNjA3MTk1OS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5nbWYucnVudGltZS5jb21tb24udWkuYWN0aW9uXzEuNy4wLjIwMTYwNjA3MTk1OS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5nbWYucnVudGltZS5jb21tb24udWkuc2VydmljZXMuYWN0aW9uXzEuNy4wLjIwMTYwNjA3MTk1OS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5nbWYucnVudGltZS5jb21tb24udWkuc2VydmljZXNfMS45LjAuMjAxNjA2MDcxOTU5LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmdtZi5ydW50aW1lLmNvbW1vbi51aV8xLjguMS4yMDE2MDYwNzE5NTkuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UudWkuY29uc29sZV8zLjYuMjAxLnYyMDE2MTEwNy0wMzM3LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnVpLndvcmtiZW5jaC50ZXh0ZWRpdG9yXzMuMTAuMS52MjAxNjA4MTgtMTYyNi5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS50ZWFtLmNvcmVfMy44LjAudjIwMTYwNDE4LTE1MzQuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZ21mLnJ1bnRpbWUuZW1mLnR5cGUuY29yZV8xLjkuMC4yMDE2MDYwNzE5NTkuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZ21mLnJ1bnRpbWUuZW1mLmNvbW1hbmRzLmNvcmVfMS43LjAuMjAxNjA2MDcxOTU5LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmdtZi5ydW50aW1lLmdlZi51aV8xLjcuMC4yMDE2MDYwNzE5NTkuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZ21mLnJ1bnRpbWUuZHJhdzJkLnVpXzEuOS4wLjIwMTYwNjA3MTk1OS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5nbWYucnVudGltZS5ub3RhdGlvbl8xLjguMC4yMDE2MDYwNzE2MzEuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZ21mLnJ1bnRpbWUuZGlhZ3JhbS5jb3JlXzEuNy4wLjIwMTYwNjA3MTk1OS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5kZWJ1Zy5jb3JlXzMuMTAuMTAwLnYyMDE2MDQxOS0xNzIwLmphciIvPgotICAgIDwvcGF0aD4KLQotICAgIDxwYXRoIGlkPSJvcmcucG9sYXJzeXMuY2hlc3MubW9iaXVzLmNsYXNzcGF0aCI+Ci0gICAgICAgIDxwYXRoIHJlZmlkPSJvcmcucG9sYXJzeXMuY2hlc3MubW9iaXVzLmxpYnJhcnljbGFzc3BhdGgiLz4KLSAgICA8L3BhdGg+Ci0KLSAgICA8IS0tIFRoZSBjbGFzc3BhdGggd2l0aCBvbmx5IHRoZSBqYXJzIGF2YWlsYWJsZSBpbiB0aGUgcGx1Z2luIGZvbGRlciBvZiBFY2xpcHNlIC0tPgotICAgIDxwYXRoIGlkPSJvcmcucG9sYXJzeXMuY2hlc3MubW9iaXVzLmxpYnJhcnljbGFzc3BhdGguYWxsamFycyI+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iLi4vb3JnLnBvbGFyc3lzLmNoZXNzLm1vYml1cy9iaW4iLz4KLSAgICAgICAgPGZpbGVzZXQgZGlyPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy8iIGluY2x1ZGVzPSIqLmphciIvPgotICAgIDwvcGF0aD4KLQotICAgIDxwYXRoIGlkPSJvcmcucG9sYXJzeXMuY2hlc3MubW9iaXVzLmNsYXNzcGF0aC5hbGxqYXJzIj4KLSAgICAgICAgPHBhdGggcmVmaWQ9Im9yZy5wb2xhcnN5cy5jaGVzcy5tb2JpdXMubGlicmFyeWNsYXNzcGF0aC5hbGxqYXJzIi8+Ci0gICAgPC9wYXRoPgotCi0gICAgPCEtLSBUaGUgZGVmYXVsdCB0YXNrIHdpdGggdGhlIGphcnMgdXNlZCBieSB0aGlzIHByb2plY3QgLS0+Ci0gICAgPHRhcmdldCBuYW1lPSJBdHRhY2tTY2VuYXJpb1RlbXBsYXRlIj4KLSAgICAgICAgPGphdmEgY2xhc3NuYW1lPSJvcmcucG9sYXJzeXMuY2hlc3MubW9iaXVzLnRlbXBsYXRlcy5BdHRhY2tTY2VuYXJpb1RlbXBsYXRlIiBjbGFzc3BhdGhyZWY9Im9yZy5wb2xhcnN5cy5jaGVzcy5tb2JpdXMuY2xhc3NwYXRoIj4KLSAgICAgICAgICAgIDxhcmcgdmFsdWU9IiR7bW9kZWx9Ii8+Ci0gICAgICAgICAgICA8YXJnIHZhbHVlPSIke3RhcmdldH0iLz4KLSAgICAgICAgPC9qYXZhPgotICAgIDwvdGFyZ2V0PgotCi0gICAgPCEtLQotICAgICAgICBJbiBjYXNlIG9mIHByb2JsZW0geW91IGNhbiBhbHNvIHRyeSB3aXRoIGFsbCB0aGUgamFyIGF2YWlsYWJsZSBpbiB5b3VyIEVjbGlwc2UKLSAgICAgICAgS2VlcCBpbiBtaW5kIHRoYXQgaGF2aW5nIHR3byB2ZXJzaW9ucyBvZiB0aGUgc2FtZSBqYXIgY2FuIGNyZWF0ZSBwcm9ibGVtcwotICAgIC0tPgotICAgIDx0YXJnZXQgbmFtZT0iQXR0YWNrU2NlbmFyaW9UZW1wbGF0ZS5hbGxqYXJzIj4KLSAgICAgICAgPGphdmEgY2xhc3NuYW1lPSJvcmcucG9sYXJzeXMuY2hlc3MubW9iaXVzLnRlbXBsYXRlcy5BdHRhY2tTY2VuYXJpb1RlbXBsYXRlIiBjbGFzc3BhdGhyZWY9Im9yZy5wb2xhcnN5cy5jaGVzcy5tb2JpdXMuY2xhc3NwYXRoIj4KLSAgICAgICAgICAgIDxhcmcgdmFsdWU9IiR7bW9kZWx9Ii8+Ci0gICAgICAgICAgICA8YXJnIHZhbHVlPSIke3RhcmdldH0iLz4KLSAgICAgICAgPC9qYXZhPgotICAgIDwvdGFyZ2V0PgotPC9wcm9qZWN0PgpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9tb2JpdXMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vYml1cy90YXNrcy9hdHRhY2tTY2VuYXJpb1RlbXBsYXRlVGFyZ2V0LnhtbCBiL3BsdWdpbnMvbW9iaXVzL29yZy5wb2xhcnN5cy5jaGVzcy5tb2JpdXMvdGFza3MvYXR0YWNrU2NlbmFyaW9UZW1wbGF0ZVRhcmdldC54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMwM2I3NDMuLjAwMDAwMDAKLS0tIGEvcGx1Z2lucy9tb2JpdXMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vYml1cy90YXNrcy9hdHRhY2tTY2VuYXJpb1RlbXBsYXRlVGFyZ2V0LnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci0KLTwhLS0gUGxhY2UgdGhpcyBmaWxlIGluIHRoZSB0YXJnZXQgcHJvamVjdCBhbmQgY2FsbCBpdCB3aXRoICJFeHRlcm5hbCBUb29scyA+IFJ1biBBcyA+IEFudCBCdWlsZCIgLS0+Ci08IS0tIFlvdSBoYXZlIHRvIGNoYW5nZSB0aGUgTU9ERUwgYW5kIHRoZSBUQVJHRVQgdmFsdWVzIC0tPgotCi08cHJvamVjdCBiYXNlZGlyPSIuIiBkZWZhdWx0PSJBdHRhY2tTY2VuYXJpb1RlbXBsYXRlU2FtcGxlIiBuYW1lPSJvcmcucG9sYXJzeXMuY2hlc3MubW9iaXVzU2FtcGxlIj4KLQk8aW1wb3J0IGZpbGU9Ii4uLy4uL29yZy5wb2xhcnN5cy5jaGVzcy5tb2JpdXMvdGFza3MvQXR0YWNrU2NlbmFyaW9UZW1wbGF0ZS54bWwiLz4KLQotICAgIDwhLS0gQ2hhbmdlIHRoZSB2YWx1ZXMgb2YgTU9ERUwgYW5kIFRBUkdFVCB0byBwb2ludCB0byB5b3VyIG1vZGVsIGFuZCBvdXRwdXQgZm9sZGVyIC0tPgotCTxwcm9wZXJ0eSBuYW1lPSJNT0RFTCIgdmFsdWU9IiR7YmFzZWRpcn0vbW9kZWwvZmlsZS54bWkiLz4KLQk8cHJvcGVydHkgbmFtZT0iVEFSR0VUIiB2YWx1ZT0iJHtiYXNlZGlyfS9zcmMtZ2VuIi8+Ci0KLQk8dGFyZ2V0IG5hbWU9IkF0dGFja1NjZW5hcmlvVGVtcGxhdGVTYW1wbGUiIGRlc2NyaXB0aW9uPSJHZW5lcmF0ZSBmaWxlcyBpbiAnVEFSR0VUJyI+Ci0JCTxhbnRjYWxsIHRhcmdldD0iQXR0YWNrU2NlbmFyaW9UZW1wbGF0ZSIgPgotCQkJPHBhcmFtIG5hbWU9Im1vZGVsIiB2YWx1ZT0iJHtNT0RFTH0iLz4KLQkJCTxwYXJhbSBuYW1lPSJ0YXJnZXQiIHZhbHVlPSIke1RBUkdFVH0iLz4KLQkJPC9hbnRjYWxsPgotCTwvdGFyZ2V0PgotPC9wcm9qZWN0PgpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9tb2JpdXMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vYml1cy90YXNrcy9hdHRhY2tTaW1wbGVUZW1wbGF0ZS54bWwgYi9wbHVnaW5zL21vYml1cy9vcmcucG9sYXJzeXMuY2hlc3MubW9iaXVzL3Rhc2tzL2F0dGFja1NpbXBsZVRlbXBsYXRlLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDUzMTBiZS4uMDAwMDAwMAotLS0gYS9wbHVnaW5zL21vYml1cy9vcmcucG9sYXJzeXMuY2hlc3MubW9iaXVzL3Rhc2tzL2F0dGFja1NpbXBsZVRlbXBsYXRlLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDEwNSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHByb2plY3QgZGVmYXVsdD0iYXR0YWNrU2ltcGxlVGVtcGxhdGUiIG5hbWU9Im9yZy5wb2xhcnN5cy5jaGVzcy5tb2JpdXMiPgotICAgIDxwcm9wZXJ0eSBuYW1lPSJFQ0xJUFNFX0hPTUUiIHZhbHVlPSIuLi8uLi8uLi8uLi8uLi9BUVVBUy9DaXR5L0VjbGlwc2UiLz4KLSAgICA8cHJvcGVydHkgbmFtZT0iRUNMSVBTRV9XT1JLU1BBQ0UiIHZhbHVlPSIuLi8uLi8uLi8uLi8uLi9BUVVBUy9DaXR5L1dvcmtzcGFjZS1hcXVhcyIvPgotCi0gICAgPCEtLSBUaGUgY2xhc3NwYXRoIHdpdGggb25seSB0aGUgZGVwZW5kZW5jaWVzIHVzZWQgYnkgdGhlIHByb2plY3QgLS0+Ci0gICAgPHBhdGggaWQ9Im9yZy5wb2xhcnN5cy5jaGVzcy5tb2JpdXMubGlicmFyeWNsYXNzcGF0aCI+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX1dPUktTUEFDRX0vb3JnLnBvbGFyc3lzLmNoZXNzLm1vYml1cy9iaW4iLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS51aV8zLjEwOC4xLnYyMDE2MDkyOS0xMDQ1LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnN3dF8zLjEwNS4zLnYyMDE3MDIyOC0wNTEyLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnN3dC53aW4zMi53aW4zMi54ODZfNjRfMy4xMDUuMy52MjAxNzAyMjgtMDUxMi5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5qZmFjZV8zLjEyLjIudjIwMTcwMTEzLTIxMTMuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuY29yZS5jb21tYW5kc18zLjguMS52MjAxNjEyMjEtMTY1MS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS51aS53b3JrYmVuY2hfMy4xMDguMy52MjAxNzAyMTYtMTUzOS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5lNC51aS53b3JrYmVuY2gzXzAuMTMuMTAwLnYyMDE2MDUwNi0wNzU5LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzXzMuMTEuMS52MjAxNjExMDctMjAzMi5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5hY2NlbGVvLmVuZ2luZV8zLjYuNi4yMDE2MTAwNjA4MzEuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuYWNjZWxlby5jb21tb25fMy42LjYuMjAxNjEwMDYwODMxLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmFjY2VsZW8ubW9kZWxfMy42LjYuMjAxNjEwMDYwODMxLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmVtZi5lY29yZV8yLjEyLjAudjIwMTYwNDIwLTAyNDcuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZW1mLmNvbW1vbl8yLjEyLjAudjIwMTYwNDIwLTAyNDcuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZW1mLmVjb3JlLnhtaV8yLjEyLjAudjIwMTYwNDIwLTAyNDcuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuYWNjZWxlby5wcm9maWxlcl8zLjYuNi4yMDE2MTAwNjA4MzEuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2Uub2NsLmVjb3JlXzMuNi4wLnYyMDE2MDUyMy0xOTE0LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLm9jbF8zLjYuMC52MjAxNjA1MjMtMTkxNC5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9scGcucnVudGltZS5qYXZhXzIuMC4xNy52MjAxMDA0MjcxNjQwLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLm9jbC5jb21tb25fMS40LjAudjIwMTYwNTIxLTIwMzMuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZW1mLmNvZGVnZW4uZWNvcmVfMi4xMi4wLnYyMDE2MDUyNi0wMzU2LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmVtZi5jb2RlZ2VuXzIuMTEuMC52MjAxNjA1MjYtMDM1Ni5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS51bWwyLnVtbF81LjIuMy52MjAxNzAyMjctMDkzNS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS51bWwyLmNvbW1vbl8yLjEuMC52MjAxNzAyMjctMDkzNS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS51bWwyLnR5cGVzXzIuMC4wLnYyMDE3MDIyNy0wOTM1LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmVtZi5tYXBwaW5nLmVjb3JlMnhtbF8yLjkuMC52MjAxNjA1MjYtMDM1Ni5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5wYXB5cnVzLmVkaXRvcl8xLjMuMC4yMDE3MDMwODA4NTEuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UucGFweXJ1cy5pbmZyYS51aV8xLjMuMC4yMDE3MDMwODA4NTEuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UucGFweXJ1cy5pbmZyYS5jb3JlXzIuMS4xLjIwMTcwMzA4MDg1MS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5wYXB5cnVzLmluZnJhLnRvb2xzXzIuMC4xLjIwMTcwMzA4MDg1MS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5wYXB5cnVzLmluZnJhLmNvcmUubG9nXzEuMi4wLjIwMTcwMzA4MDg1MS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWVfMy4xMi4wLnYyMDE2MDYwNi0xMzQyLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL2phdmF4LmluamVjdF8xLjAuMC52MjAwOTEwMzAuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2Uub3NnaV8zLjExLjMudjIwMTcwMjA5LTE4NDMuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZngub3NnaV8yLjAuMC4yMDE1MDYxMTE0NTIuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2Uub3NnaS5jb21wYXRpYmlsaXR5LnN0YXRlXzEuMC4yMDAudjIwMTYwNTA0LTE0MTkuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZXF1aW5veC5jb21tb25fMy44LjAudjIwMTYwNTA5LTEyMzAuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuY29yZS5qb2JzXzMuOC4wLnYyMDE2MDUwOS0wNDExLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmVxdWlub3gucmVnaXN0cnlfMy42LjEwMC52MjAxNjAyMjMtMjIxOC5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5lcXVpbm94LnByZWZlcmVuY2VzXzMuNi4xLnYyMDE2MDgxNS0xNDA2LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmNvcmUuY29udGVudHR5cGVfMy41LjEwMC52MjAxNjA0MTgtMTYyMS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5lcXVpbm94LmFwcF8xLjMuNDAwLnYyMDE1MDcxNS0xNTI4LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL2NvbS5nb29nbGUuZ3VhdmFfMTUuMC4wLnYyMDE0MDMyODE0MzAuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuY29yZS5kYXRhYmluZGluZy5vYnNlcnZhYmxlXzEuNi4wLnYyMDE2MDUxMS0xNzQ3LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnBhcHlydXMuaW5mcmEuY29yZS5zYXNod2luZG93cy5kaV8xLjIuMC4yMDE3MDMwODA4NTEuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZW1mLnRyYW5zYWN0aW9uXzEuOS4wLjIwMTYwNjA3MTkwMC5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5lbWYuZWRpdF8yLjEyLjAudjIwMTYwNTI2LTAzNTYuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZW1mLmVjb3JlLmNoYW5nZV8yLjExLjAudjIwMTYwNDIwLTAyNDcuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZW1mLnZhbGlkYXRpb25fMS44LjAuMjAxNjA2MDcxNzEzLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmNvcmUuZXhwcmVzc2lvbnNfMy41LjEwMC52MjAxNjA0MTgtMTYyMS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS51aS5pZGVfMy4xMi4zLnYyMDE3MDExOS0wOTM1LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnBhcHlydXMuaW5mcmEuY29yZS5zYXNoZWRpdG9yLmRpXzIuMC4wLjIwMTcwMzA4MDg1MS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5wYXB5cnVzLmluZnJhLmNvcmUuc2FzaGVkaXRvcl8yLjAuMC4yMDE3MDMwODA4NTEuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UucGFweXJ1cy5pbmZyYS53aWRnZXRzXzIuMC4xLjIwMTcwMzA4MDg1MS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5jb3JlLmRhdGFiaW5kaW5nXzEuNi4wLnYyMDE2MDQxMi0wOTEwLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnVpLnZpZXdzLnByb3BlcnRpZXMudGFiYmVkXzMuNy4wLnYyMDE2MDMxMC0wOTAzLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnVpLmZvcm1zXzMuNy4xLnYyMDE2MTIyMC0xNjM1LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnVpLnZpZXdzXzMuOC4xMDIudjIwMTcwMTExLTA4MDEuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UucGFweXJ1cy5pbmZyYS5zZXJ2aWNlcy5sYWJlbHByb3ZpZGVyXzEuMi4xLjIwMTcwMzA4MDg1MS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5qZmFjZS50ZXh0XzMuMTEuMi52MjAxNzAyMjAtMTkxMS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS50ZXh0XzMuNi4wLnYyMDE2MDUwMy0xODQ5LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnBhcHlydXMubWFydGUuc3RhdGljLnByb2ZpbGVfMS4yLjMuMjAxOTAzMTUwMTUyLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmFjY2VsZW8ucGFyc2VyXzMuNi42LjIwMTYxMDA2MDgzMS5qYXIiLz4KLSAgICA8L3BhdGg+Ci0KLSAgICA8cGF0aCBpZD0ib3JnLnBvbGFyc3lzLmNoZXNzLm1vYml1cy5jbGFzc3BhdGgiPgotICAgICAgICA8cGF0aCByZWZpZD0ib3JnLnBvbGFyc3lzLmNoZXNzLm1vYml1cy5saWJyYXJ5Y2xhc3NwYXRoIi8+Ci0gICAgPC9wYXRoPgotCi0gICAgPCEtLSBUaGUgY2xhc3NwYXRoIHdpdGggb25seSB0aGUgamFycyBhdmFpbGFibGUgaW4gdGhlIHBsdWdpbiBmb2xkZXIgb2YgRWNsaXBzZSAtLT4KLSAgICA8cGF0aCBpZD0ib3JnLnBvbGFyc3lzLmNoZXNzLm1vYml1cy5saWJyYXJ5Y2xhc3NwYXRoLmFsbGphcnMiPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249Ii4uL29yZy5wb2xhcnN5cy5jaGVzcy5tb2JpdXMvYmluIi8+Ci0gICAgICAgIDxmaWxlc2V0IGRpcj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvIiBpbmNsdWRlcz0iKi5qYXIiLz4KLSAgICA8L3BhdGg+Ci0KLSAgICA8cGF0aCBpZD0ib3JnLnBvbGFyc3lzLmNoZXNzLm1vYml1cy5jbGFzc3BhdGguYWxsamFycyI+Ci0gICAgICAgIDxwYXRoIHJlZmlkPSJvcmcucG9sYXJzeXMuY2hlc3MubW9iaXVzLmxpYnJhcnljbGFzc3BhdGguYWxsamFycyIvPgotICAgIDwvcGF0aD4KLQotICAgIDwhLS0gVGhlIGRlZmF1bHQgdGFzayB3aXRoIHRoZSBqYXJzIHVzZWQgYnkgdGhpcyBwcm9qZWN0IC0tPgotICAgIDx0YXJnZXQgbmFtZT0iYXR0YWNrU2ltcGxlVGVtcGxhdGUiPgotICAgICAgICA8amF2YSBjbGFzc25hbWU9Im9yZy5wb2xhcnN5cy5jaGVzcy5tb2JpdXMudGVtcGxhdGVzLkF0dGFja1NpbXBsZVRlbXBsYXRlIiBjbGFzc3BhdGhyZWY9Im9yZy5wb2xhcnN5cy5jaGVzcy5tb2JpdXMuY2xhc3NwYXRoIj4KLSAgICAgICAgICAgIDxhcmcgdmFsdWU9IiR7bW9kZWx9Ii8+Ci0gICAgICAgICAgICA8YXJnIHZhbHVlPSIke3RhcmdldH0iLz4KLSAgICAgICAgPC9qYXZhPgotICAgIDwvdGFyZ2V0PgotCi0gICAgPCEtLQotICAgICAgICBJbiBjYXNlIG9mIHByb2JsZW0geW91IGNhbiBhbHNvIHRyeSB3aXRoIGFsbCB0aGUgamFyIGF2YWlsYWJsZSBpbiB5b3VyIEVjbGlwc2UKLSAgICAgICAgS2VlcCBpbiBtaW5kIHRoYXQgaGF2aW5nIHR3byB2ZXJzaW9ucyBvZiB0aGUgc2FtZSBqYXIgY2FuIGNyZWF0ZSBwcm9ibGVtcwotICAgIC0tPgotICAgIDx0YXJnZXQgbmFtZT0iYXR0YWNrU2ltcGxlVGVtcGxhdGUuYWxsamFycyI+Ci0gICAgICAgIDxqYXZhIGNsYXNzbmFtZT0ib3JnLnBvbGFyc3lzLmNoZXNzLm1vYml1cy50ZW1wbGF0ZXMuQXR0YWNrU2ltcGxlVGVtcGxhdGUiIGNsYXNzcGF0aHJlZj0ib3JnLnBvbGFyc3lzLmNoZXNzLm1vYml1cy5jbGFzc3BhdGgiPgotICAgICAgICAgICAgPGFyZyB2YWx1ZT0iJHttb2RlbH0iLz4KLSAgICAgICAgICAgIDxhcmcgdmFsdWU9IiR7dGFyZ2V0fSIvPgotICAgICAgICA8L2phdmE+Ci0gICAgPC90YXJnZXQ+Ci08L3Byb2plY3Q+CmRpZmYgLS1naXQgYS9wbHVnaW5zL21vYml1cy9vcmcucG9sYXJzeXMuY2hlc3MubW9iaXVzL3Rhc2tzL2F0dGFja1NpbXBsZVRlbXBsYXRlVGFyZ2V0LnhtbCBiL3BsdWdpbnMvbW9iaXVzL29yZy5wb2xhcnN5cy5jaGVzcy5tb2JpdXMvdGFza3MvYXR0YWNrU2ltcGxlVGVtcGxhdGVUYXJnZXQueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NWFiZjMzLi4wMDAwMDAwCi0tLSBhL3BsdWdpbnMvbW9iaXVzL29yZy5wb2xhcnN5cy5jaGVzcy5tb2JpdXMvdGFza3MvYXR0YWNrU2ltcGxlVGVtcGxhdGVUYXJnZXQueG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLQotPCEtLSBQbGFjZSB0aGlzIGZpbGUgaW4gdGhlIHRhcmdldCBwcm9qZWN0IGFuZCBjYWxsIGl0IHdpdGggIkV4dGVybmFsIFRvb2xzID4gUnVuIEFzID4gQW50IEJ1aWxkIiAtLT4KLTwhLS0gWW91IGhhdmUgdG8gY2hhbmdlIHRoZSBNT0RFTCBhbmQgdGhlIFRBUkdFVCB2YWx1ZXMgLS0+Ci0KLTxwcm9qZWN0IGJhc2VkaXI9Ii4iIGRlZmF1bHQ9ImF0dGFja1NpbXBsZVRlbXBsYXRlU2FtcGxlIiBuYW1lPSJvcmcucG9sYXJzeXMuY2hlc3MubW9iaXVzU2FtcGxlIj4KLQk8aW1wb3J0IGZpbGU9Ii4uLy4uL29yZy5wb2xhcnN5cy5jaGVzcy5tb2JpdXMvdGFza3MvYXR0YWNrU2ltcGxlVGVtcGxhdGUueG1sIi8+Ci0KLSAgICA8IS0tIENoYW5nZSB0aGUgdmFsdWVzIG9mIE1PREVMIGFuZCBUQVJHRVQgdG8gcG9pbnQgdG8geW91ciBtb2RlbCBhbmQgb3V0cHV0IGZvbGRlciAtLT4KLQk8cHJvcGVydHkgbmFtZT0iTU9ERUwiIHZhbHVlPSIke2Jhc2VkaXJ9L21vZGVsL2ZpbGUueG1pIi8+Ci0JPHByb3BlcnR5IG5hbWU9IlRBUkdFVCIgdmFsdWU9IiR7YmFzZWRpcn0vc3JjLWdlbiIvPgotCi0JPHRhcmdldCBuYW1lPSJhdHRhY2tTaW1wbGVUZW1wbGF0ZVNhbXBsZSIgZGVzY3JpcHRpb249IkdlbmVyYXRlIGZpbGVzIGluICdUQVJHRVQnIj4KLQkJPGFudGNhbGwgdGFyZ2V0PSJhdHRhY2tTaW1wbGVUZW1wbGF0ZSIgPgotCQkJPHBhcmFtIG5hbWU9Im1vZGVsIiB2YWx1ZT0iJHtNT0RFTH0iLz4KLQkJCTxwYXJhbSBuYW1lPSJ0YXJnZXQiIHZhbHVlPSIke1RBUkdFVH0iLz4KLQkJPC9hbnRjYWxsPgotCTwvdGFyZ2V0PgotPC9wcm9qZWN0PgpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9tb2JpdXMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vYml1cy90YXNrcy9hdHRhY2tUZW1wbGF0ZS54bWwgYi9wbHVnaW5zL21vYml1cy9vcmcucG9sYXJzeXMuY2hlc3MubW9iaXVzL3Rhc2tzL2F0dGFja1RlbXBsYXRlLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTE1ZjBiNC4uMDAwMDAwMAotLS0gYS9wbHVnaW5zL21vYml1cy9vcmcucG9sYXJzeXMuY2hlc3MubW9iaXVzL3Rhc2tzL2F0dGFja1RlbXBsYXRlLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDEwNSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHByb2plY3QgZGVmYXVsdD0iYXR0YWNrVGVtcGxhdGUiIG5hbWU9Im9yZy5wb2xhcnN5cy5jaGVzcy5tb2JpdXMiPgotICAgIDxwcm9wZXJ0eSBuYW1lPSJFQ0xJUFNFX0hPTUUiIHZhbHVlPSIuLi8uLi8uLi8uLi8uLi9BUVVBUy9DaXR5L0VjbGlwc2UiLz4KLSAgICA8cHJvcGVydHkgbmFtZT0iRUNMSVBTRV9XT1JLU1BBQ0UiIHZhbHVlPSIuLi8uLi8uLi8uLi8uLi9BUVVBUy9DaXR5L1dvcmtzcGFjZS1hcXVhcyIvPgotCi0gICAgPCEtLSBUaGUgY2xhc3NwYXRoIHdpdGggb25seSB0aGUgZGVwZW5kZW5jaWVzIHVzZWQgYnkgdGhlIHByb2plY3QgLS0+Ci0gICAgPHBhdGggaWQ9Im9yZy5wb2xhcnN5cy5jaGVzcy5tb2JpdXMubGlicmFyeWNsYXNzcGF0aCI+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX1dPUktTUEFDRX0vb3JnLnBvbGFyc3lzLmNoZXNzLm1vYml1cy9iaW4iLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS51aV8zLjEwOC4xLnYyMDE2MDkyOS0xMDQ1LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnN3dF8zLjEwNS4zLnYyMDE3MDIyOC0wNTEyLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnN3dC53aW4zMi53aW4zMi54ODZfNjRfMy4xMDUuMy52MjAxNzAyMjgtMDUxMi5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5qZmFjZV8zLjEyLjIudjIwMTcwMTEzLTIxMTMuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuY29yZS5jb21tYW5kc18zLjguMS52MjAxNjEyMjEtMTY1MS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS51aS53b3JrYmVuY2hfMy4xMDguMy52MjAxNzAyMTYtMTUzOS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5lNC51aS53b3JrYmVuY2gzXzAuMTMuMTAwLnYyMDE2MDUwNi0wNzU5LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzXzMuMTEuMS52MjAxNjExMDctMjAzMi5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5hY2NlbGVvLmVuZ2luZV8zLjYuNi4yMDE2MTAwNjA4MzEuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuYWNjZWxlby5jb21tb25fMy42LjYuMjAxNjEwMDYwODMxLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmFjY2VsZW8ubW9kZWxfMy42LjYuMjAxNjEwMDYwODMxLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmVtZi5lY29yZV8yLjEyLjAudjIwMTYwNDIwLTAyNDcuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZW1mLmNvbW1vbl8yLjEyLjAudjIwMTYwNDIwLTAyNDcuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZW1mLmVjb3JlLnhtaV8yLjEyLjAudjIwMTYwNDIwLTAyNDcuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuYWNjZWxlby5wcm9maWxlcl8zLjYuNi4yMDE2MTAwNjA4MzEuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2Uub2NsLmVjb3JlXzMuNi4wLnYyMDE2MDUyMy0xOTE0LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLm9jbF8zLjYuMC52MjAxNjA1MjMtMTkxNC5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9scGcucnVudGltZS5qYXZhXzIuMC4xNy52MjAxMDA0MjcxNjQwLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLm9jbC5jb21tb25fMS40LjAudjIwMTYwNTIxLTIwMzMuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZW1mLmNvZGVnZW4uZWNvcmVfMi4xMi4wLnYyMDE2MDUyNi0wMzU2LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmVtZi5jb2RlZ2VuXzIuMTEuMC52MjAxNjA1MjYtMDM1Ni5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS51bWwyLnVtbF81LjIuMy52MjAxNzAyMjctMDkzNS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS51bWwyLmNvbW1vbl8yLjEuMC52MjAxNzAyMjctMDkzNS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS51bWwyLnR5cGVzXzIuMC4wLnYyMDE3MDIyNy0wOTM1LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmVtZi5tYXBwaW5nLmVjb3JlMnhtbF8yLjkuMC52MjAxNjA1MjYtMDM1Ni5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5wYXB5cnVzLmVkaXRvcl8xLjMuMC4yMDE3MDMwODA4NTEuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UucGFweXJ1cy5pbmZyYS51aV8xLjMuMC4yMDE3MDMwODA4NTEuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UucGFweXJ1cy5pbmZyYS5jb3JlXzIuMS4xLjIwMTcwMzA4MDg1MS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5wYXB5cnVzLmluZnJhLnRvb2xzXzIuMC4xLjIwMTcwMzA4MDg1MS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5wYXB5cnVzLmluZnJhLmNvcmUubG9nXzEuMi4wLjIwMTcwMzA4MDg1MS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWVfMy4xMi4wLnYyMDE2MDYwNi0xMzQyLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL2phdmF4LmluamVjdF8xLjAuMC52MjAwOTEwMzAuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2Uub3NnaV8zLjExLjMudjIwMTcwMjA5LTE4NDMuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZngub3NnaV8yLjAuMC4yMDE1MDYxMTE0NTIuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2Uub3NnaS5jb21wYXRpYmlsaXR5LnN0YXRlXzEuMC4yMDAudjIwMTYwNTA0LTE0MTkuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZXF1aW5veC5jb21tb25fMy44LjAudjIwMTYwNTA5LTEyMzAuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuY29yZS5qb2JzXzMuOC4wLnYyMDE2MDUwOS0wNDExLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmVxdWlub3gucmVnaXN0cnlfMy42LjEwMC52MjAxNjAyMjMtMjIxOC5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5lcXVpbm94LnByZWZlcmVuY2VzXzMuNi4xLnYyMDE2MDgxNS0xNDA2LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmNvcmUuY29udGVudHR5cGVfMy41LjEwMC52MjAxNjA0MTgtMTYyMS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5lcXVpbm94LmFwcF8xLjMuNDAwLnYyMDE1MDcxNS0xNTI4LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL2NvbS5nb29nbGUuZ3VhdmFfMTUuMC4wLnYyMDE0MDMyODE0MzAuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuY29yZS5kYXRhYmluZGluZy5vYnNlcnZhYmxlXzEuNi4wLnYyMDE2MDUxMS0xNzQ3LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnBhcHlydXMuaW5mcmEuY29yZS5zYXNod2luZG93cy5kaV8xLjIuMC4yMDE3MDMwODA4NTEuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZW1mLnRyYW5zYWN0aW9uXzEuOS4wLjIwMTYwNjA3MTkwMC5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5lbWYuZWRpdF8yLjEyLjAudjIwMTYwNTI2LTAzNTYuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZW1mLmVjb3JlLmNoYW5nZV8yLjExLjAudjIwMTYwNDIwLTAyNDcuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZW1mLnZhbGlkYXRpb25fMS44LjAuMjAxNjA2MDcxNzEzLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmNvcmUuZXhwcmVzc2lvbnNfMy41LjEwMC52MjAxNjA0MTgtMTYyMS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS51aS5pZGVfMy4xMi4zLnYyMDE3MDExOS0wOTM1LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnBhcHlydXMuaW5mcmEuY29yZS5zYXNoZWRpdG9yLmRpXzIuMC4wLjIwMTcwMzA4MDg1MS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5wYXB5cnVzLmluZnJhLmNvcmUuc2FzaGVkaXRvcl8yLjAuMC4yMDE3MDMwODA4NTEuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UucGFweXJ1cy5pbmZyYS53aWRnZXRzXzIuMC4xLjIwMTcwMzA4MDg1MS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5jb3JlLmRhdGFiaW5kaW5nXzEuNi4wLnYyMDE2MDQxMi0wOTEwLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnVpLnZpZXdzLnByb3BlcnRpZXMudGFiYmVkXzMuNy4wLnYyMDE2MDMxMC0wOTAzLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnVpLmZvcm1zXzMuNy4xLnYyMDE2MTIyMC0xNjM1LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnVpLnZpZXdzXzMuOC4xMDIudjIwMTcwMTExLTA4MDEuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UucGFweXJ1cy5pbmZyYS5zZXJ2aWNlcy5sYWJlbHByb3ZpZGVyXzEuMi4xLjIwMTcwMzA4MDg1MS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5qZmFjZS50ZXh0XzMuMTEuMi52MjAxNzAyMjAtMTkxMS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS50ZXh0XzMuNi4wLnYyMDE2MDUwMy0xODQ5LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnBhcHlydXMubWFydGUuc3RhdGljLnByb2ZpbGVfMS4yLjMuMjAxOTAzMTUwMTUyLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmFjY2VsZW8ucGFyc2VyXzMuNi42LjIwMTYxMDA2MDgzMS5qYXIiLz4KLSAgICA8L3BhdGg+Ci0KLSAgICA8cGF0aCBpZD0ib3JnLnBvbGFyc3lzLmNoZXNzLm1vYml1cy5jbGFzc3BhdGgiPgotICAgICAgICA8cGF0aCByZWZpZD0ib3JnLnBvbGFyc3lzLmNoZXNzLm1vYml1cy5saWJyYXJ5Y2xhc3NwYXRoIi8+Ci0gICAgPC9wYXRoPgotCi0gICAgPCEtLSBUaGUgY2xhc3NwYXRoIHdpdGggb25seSB0aGUgamFycyBhdmFpbGFibGUgaW4gdGhlIHBsdWdpbiBmb2xkZXIgb2YgRWNsaXBzZSAtLT4KLSAgICA8cGF0aCBpZD0ib3JnLnBvbGFyc3lzLmNoZXNzLm1vYml1cy5saWJyYXJ5Y2xhc3NwYXRoLmFsbGphcnMiPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249Ii4uL29yZy5wb2xhcnN5cy5jaGVzcy5tb2JpdXMvYmluIi8+Ci0gICAgICAgIDxmaWxlc2V0IGRpcj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvIiBpbmNsdWRlcz0iKi5qYXIiLz4KLSAgICA8L3BhdGg+Ci0KLSAgICA8cGF0aCBpZD0ib3JnLnBvbGFyc3lzLmNoZXNzLm1vYml1cy5jbGFzc3BhdGguYWxsamFycyI+Ci0gICAgICAgIDxwYXRoIHJlZmlkPSJvcmcucG9sYXJzeXMuY2hlc3MubW9iaXVzLmxpYnJhcnljbGFzc3BhdGguYWxsamFycyIvPgotICAgIDwvcGF0aD4KLQotICAgIDwhLS0gVGhlIGRlZmF1bHQgdGFzayB3aXRoIHRoZSBqYXJzIHVzZWQgYnkgdGhpcyBwcm9qZWN0IC0tPgotICAgIDx0YXJnZXQgbmFtZT0iYXR0YWNrVGVtcGxhdGUiPgotICAgICAgICA8amF2YSBjbGFzc25hbWU9Im9yZy5wb2xhcnN5cy5jaGVzcy5tb2JpdXMudGVtcGxhdGVzLkF0dGFja1RlbXBsYXRlIiBjbGFzc3BhdGhyZWY9Im9yZy5wb2xhcnN5cy5jaGVzcy5tb2JpdXMuY2xhc3NwYXRoIj4KLSAgICAgICAgICAgIDxhcmcgdmFsdWU9IiR7bW9kZWx9Ii8+Ci0gICAgICAgICAgICA8YXJnIHZhbHVlPSIke3RhcmdldH0iLz4KLSAgICAgICAgPC9qYXZhPgotICAgIDwvdGFyZ2V0PgotCi0gICAgPCEtLQotICAgICAgICBJbiBjYXNlIG9mIHByb2JsZW0geW91IGNhbiBhbHNvIHRyeSB3aXRoIGFsbCB0aGUgamFyIGF2YWlsYWJsZSBpbiB5b3VyIEVjbGlwc2UKLSAgICAgICAgS2VlcCBpbiBtaW5kIHRoYXQgaGF2aW5nIHR3byB2ZXJzaW9ucyBvZiB0aGUgc2FtZSBqYXIgY2FuIGNyZWF0ZSBwcm9ibGVtcwotICAgIC0tPgotICAgIDx0YXJnZXQgbmFtZT0iYXR0YWNrVGVtcGxhdGUuYWxsamFycyI+Ci0gICAgICAgIDxqYXZhIGNsYXNzbmFtZT0ib3JnLnBvbGFyc3lzLmNoZXNzLm1vYml1cy50ZW1wbGF0ZXMuQXR0YWNrVGVtcGxhdGUiIGNsYXNzcGF0aHJlZj0ib3JnLnBvbGFyc3lzLmNoZXNzLm1vYml1cy5jbGFzc3BhdGgiPgotICAgICAgICAgICAgPGFyZyB2YWx1ZT0iJHttb2RlbH0iLz4KLSAgICAgICAgICAgIDxhcmcgdmFsdWU9IiR7dGFyZ2V0fSIvPgotICAgICAgICA8L2phdmE+Ci0gICAgPC90YXJnZXQ+Ci08L3Byb2plY3Q+CmRpZmYgLS1naXQgYS9wbHVnaW5zL21vYml1cy9vcmcucG9sYXJzeXMuY2hlc3MubW9iaXVzL3Rhc2tzL2F0dGFja1RlbXBsYXRlVGFyZ2V0LnhtbCBiL3BsdWdpbnMvbW9iaXVzL29yZy5wb2xhcnN5cy5jaGVzcy5tb2JpdXMvdGFza3MvYXR0YWNrVGVtcGxhdGVUYXJnZXQueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNTY3ZDU0Li4wMDAwMDAwCi0tLSBhL3BsdWdpbnMvbW9iaXVzL29yZy5wb2xhcnN5cy5jaGVzcy5tb2JpdXMvdGFza3MvYXR0YWNrVGVtcGxhdGVUYXJnZXQueG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLQotPCEtLSBQbGFjZSB0aGlzIGZpbGUgaW4gdGhlIHRhcmdldCBwcm9qZWN0IGFuZCBjYWxsIGl0IHdpdGggIkV4dGVybmFsIFRvb2xzID4gUnVuIEFzID4gQW50IEJ1aWxkIiAtLT4KLTwhLS0gWW91IGhhdmUgdG8gY2hhbmdlIHRoZSBNT0RFTCBhbmQgdGhlIFRBUkdFVCB2YWx1ZXMgLS0+Ci0KLTxwcm9qZWN0IGJhc2VkaXI9Ii4iIGRlZmF1bHQ9ImF0dGFja1RlbXBsYXRlU2FtcGxlIiBuYW1lPSJvcmcucG9sYXJzeXMuY2hlc3MubW9iaXVzU2FtcGxlIj4KLQk8aW1wb3J0IGZpbGU9Ii4uLy4uL29yZy5wb2xhcnN5cy5jaGVzcy5tb2JpdXMvdGFza3MvYXR0YWNrVGVtcGxhdGUueG1sIi8+Ci0KLSAgICA8IS0tIENoYW5nZSB0aGUgdmFsdWVzIG9mIE1PREVMIGFuZCBUQVJHRVQgdG8gcG9pbnQgdG8geW91ciBtb2RlbCBhbmQgb3V0cHV0IGZvbGRlciAtLT4KLQk8cHJvcGVydHkgbmFtZT0iTU9ERUwiIHZhbHVlPSIke2Jhc2VkaXJ9L21vZGVsL2ZpbGUueG1pIi8+Ci0JPHByb3BlcnR5IG5hbWU9IlRBUkdFVCIgdmFsdWU9IiR7YmFzZWRpcn0vc3JjLWdlbiIvPgotCi0JPHRhcmdldCBuYW1lPSJhdHRhY2tUZW1wbGF0ZVNhbXBsZSIgZGVzY3JpcHRpb249IkdlbmVyYXRlIGZpbGVzIGluICdUQVJHRVQnIj4KLQkJPGFudGNhbGwgdGFyZ2V0PSJhdHRhY2tUZW1wbGF0ZSIgPgotCQkJPHBhcmFtIG5hbWU9Im1vZGVsIiB2YWx1ZT0iJHtNT0RFTH0iLz4KLQkJCTxwYXJhbSBuYW1lPSJ0YXJnZXQiIHZhbHVlPSIke1RBUkdFVH0iLz4KLQkJPC9hbnRjYWxsPgotCTwvdGFyZ2V0PgotPC9wcm9qZWN0PgpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9tb2JpdXMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vYml1cy90YXNrcy9jb21wb3NlZENvbXBvbmVudFRlbXBsYXRlLnhtbCBiL3BsdWdpbnMvbW9iaXVzL29yZy5wb2xhcnN5cy5jaGVzcy5tb2JpdXMvdGFza3MvY29tcG9zZWRDb21wb25lbnRUZW1wbGF0ZS54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc0N2IyNTAuLjAwMDAwMDAKLS0tIGEvcGx1Z2lucy9tb2JpdXMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vYml1cy90YXNrcy9jb21wb3NlZENvbXBvbmVudFRlbXBsYXRlLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDE1NCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHByb2plY3QgZGVmYXVsdD0iY29tcG9zZWRDb21wb25lbnRUZW1wbGF0ZSIgbmFtZT0ib3JnLnBvbGFyc3lzLmNoZXNzLm1vYml1cyI+Ci0gICAgPHByb3BlcnR5IG5hbWU9IkVDTElQU0VfSE9NRSIgdmFsdWU9Ii4uLy4uLy4uLy4uLy4uLy4uL1Byb2dyYW1taS9Qb2xhcnN5c0NIRVNTLU5lb24td2luMzIteDg2XzY0XzIwMTkwNTE1Ii8+Ci0gICAgPHByb3BlcnR5IG5hbWU9IkVDTElQU0VfV09SS1NQQUNFIiB2YWx1ZT0iLi4vLi4vLi4vLi4vLi4vLi4vUHJvZ3JhbW1pL1BvbGFyc3lzQ0hFU1MtTmVvbi13aW4zMi14ODZfNjRfMjAxOTA1MTUvcnVudGltZS1OZXdfY29uZmlndXJhdGlvbl8zIi8+Ci0KLSAgICA8IS0tIFRoZSBjbGFzc3BhdGggd2l0aCBvbmx5IHRoZSBkZXBlbmRlbmNpZXMgdXNlZCBieSB0aGUgcHJvamVjdCAtLT4KLSAgICA8cGF0aCBpZD0ib3JnLnBvbGFyc3lzLmNoZXNzLm1vYml1cy5saWJyYXJ5Y2xhc3NwYXRoIj4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfV09SS1NQQUNFfS9vcmcucG9sYXJzeXMuY2hlc3MubW9iaXVzL2JpbiIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9qcmUvbGliL3Jlc291cmNlcy5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vanJlL2xpYi9ydC5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vanJlL2xpYi9qc3NlLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9qcmUvbGliL2pjZS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vanJlL2xpYi9jaGFyc2V0cy5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vanJlL2xpYi9qZnIuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L2pyZS9saWIvZXh0L2FjY2Vzcy1icmlkZ2UtNjQuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L2pyZS9saWIvZXh0L2NsZHJkYXRhLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9qcmUvbGliL2V4dC9kbnNucy5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vanJlL2xpYi9leHQvamFjY2Vzcy5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vanJlL2xpYi9leHQvamZ4cnQuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L2pyZS9saWIvZXh0L2xvY2FsZWRhdGEuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L2pyZS9saWIvZXh0L25hc2hvcm4uamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L2pyZS9saWIvZXh0L3N1bmVjLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9qcmUvbGliL2V4dC9zdW5qY2VfcHJvdmlkZXIuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L2pyZS9saWIvZXh0L3N1bm1zY2FwaS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vanJlL2xpYi9leHQvc3VucGtjczExLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9qcmUvbGliL2V4dC96aXBmcy5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS51aV8zLjEwOC4xLnYyMDE2MDkyOS0xMDQ1LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnN3dF8zLjEwNS4zLnYyMDE3MDIyOC0wNTEyLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnN3dC53aW4zMi53aW4zMi54ODZfNjRfMy4xMDUuMy52MjAxNzAyMjgtMDUxMi5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5qZmFjZV8zLjEyLjIudjIwMTcwMTEzLTIxMTMuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuY29yZS5jb21tYW5kc18zLjguMS52MjAxNjEyMjEtMTY1MS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS51aS53b3JrYmVuY2hfMy4xMDguMy52MjAxNzAyMTYtMTUzOS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5lNC51aS53b3JrYmVuY2gzXzAuMTMuMTAwLnYyMDE2MDUwNi0wNzU5LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzXzMuMTEuMS52MjAxNjExMDctMjAzMi5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5hY2NlbGVvLmVuZ2luZV8zLjYuNi4yMDE2MTAwNjA4MzEuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuYWNjZWxlby5jb21tb25fMy42LjYuMjAxNjEwMDYwODMxLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmFjY2VsZW8ubW9kZWxfMy42LjYuMjAxNjEwMDYwODMxLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmVtZi5lY29yZV8yLjEyLjAudjIwMTYwNDIwLTAyNDcuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZW1mLmNvbW1vbl8yLjEyLjAudjIwMTYwNDIwLTAyNDcuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZW1mLmVjb3JlLnhtaV8yLjEyLjAudjIwMTYwNDIwLTAyNDcuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuYWNjZWxlby5wcm9maWxlcl8zLjYuNi4yMDE2MTAwNjA4MzEuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2Uub2NsLmVjb3JlXzMuNi4wLnYyMDE2MDUyMy0xOTE0LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLm9jbF8zLjYuMC52MjAxNjA1MjMtMTkxNC5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9scGcucnVudGltZS5qYXZhXzIuMC4xNy52MjAxMDA0MjcxNjQwLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLm9jbC5jb21tb25fMS40LjAudjIwMTYwNTIxLTIwMzMuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZW1mLmNvZGVnZW4uZWNvcmVfMi4xMi4wLnYyMDE2MDUyNi0wMzU2LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmVtZi5jb2RlZ2VuXzIuMTEuMC52MjAxNjA1MjYtMDM1Ni5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS51bWwyLnVtbF81LjIuMy52MjAxNzAyMjctMDkzNS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS51bWwyLmNvbW1vbl8yLjEuMC52MjAxNzAyMjctMDkzNS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS51bWwyLnR5cGVzXzIuMC4wLnYyMDE3MDIyNy0wOTM1LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmVtZi5tYXBwaW5nLmVjb3JlMnhtbF8yLjkuMC52MjAxNjA1MjYtMDM1Ni5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3Muc2VydmljZV8wLjExLjAuMjAxODEyMDcxMDQ5LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlXzAuOS4wLjIwMTgxMjA3MTA0OS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5wYXB5cnVzLmVkaXRvcl8xLjMuMC4yMDE3MDMwODA4NTEuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UucGFweXJ1cy5pbmZyYS51aV8xLjMuMC4yMDE3MDMwODA4NTEuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UucGFweXJ1cy5pbmZyYS5jb3JlXzIuMS4xLjIwMTcwMzA4MDg1MS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5wYXB5cnVzLmluZnJhLnRvb2xzXzIuMC4xLjIwMTcwMzA4MDg1MS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5wYXB5cnVzLmluZnJhLmNvcmUubG9nXzEuMi4wLjIwMTcwMzA4MDg1MS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWVfMy4xMi4wLnYyMDE2MDYwNi0xMzQyLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL2phdmF4LmluamVjdF8xLjAuMC52MjAwOTEwMzAuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2Uub3NnaV8zLjExLjMudjIwMTcwMjA5LTE4NDMuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZngub3NnaV8yLjQuMC4yMDE2MDUxMDA1MDQuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2Uub3NnaS5jb21wYXRpYmlsaXR5LnN0YXRlXzEuMC4yMDAudjIwMTYwNTA0LTE0MTkuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZXF1aW5veC5jb21tb25fMy44LjAudjIwMTYwNTA5LTEyMzAuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuY29yZS5qb2JzXzMuOC4wLnYyMDE2MDUwOS0wNDExLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmVxdWlub3gucmVnaXN0cnlfMy42LjEwMC52MjAxNjAyMjMtMjIxOC5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5lcXVpbm94LnByZWZlcmVuY2VzXzMuNi4xLnYyMDE2MDgxNS0xNDA2LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmNvcmUuY29udGVudHR5cGVfMy41LjEwMC52MjAxNjA0MTgtMTYyMS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5lcXVpbm94LmFwcF8xLjMuNDAwLnYyMDE1MDcxNS0xNTI4LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL2NvbS5nb29nbGUuZ3VhdmFfMTUuMC4wLnYyMDE0MDMyODE0MzAuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuY29yZS5kYXRhYmluZGluZy5vYnNlcnZhYmxlXzEuNi4wLnYyMDE2MDUxMS0xNzQ3LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnBhcHlydXMuaW5mcmEuY29yZS5zYXNod2luZG93cy5kaV8xLjIuMC4yMDE3MDMwODA4NTEuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZW1mLnRyYW5zYWN0aW9uXzEuOS4wLjIwMTYwNjA3MTkwMC5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5lbWYuZWRpdF8yLjEyLjAudjIwMTYwNTI2LTAzNTYuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZW1mLmVjb3JlLmNoYW5nZV8yLjExLjAudjIwMTYwNDIwLTAyNDcuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZW1mLnZhbGlkYXRpb25fMS44LjAuMjAxNjA2MDcxNzEzLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmNvcmUuZXhwcmVzc2lvbnNfMy41LjEwMC52MjAxNjA0MTgtMTYyMS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS51aS5pZGVfMy4xMi4zLnYyMDE3MDExOS0wOTM1LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnBhcHlydXMuaW5mcmEuY29yZS5zYXNoZWRpdG9yLmRpXzIuMC4wLjIwMTcwMzA4MDg1MS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5wYXB5cnVzLmluZnJhLmNvcmUuc2FzaGVkaXRvcl8yLjAuMC4yMDE3MDMwODA4NTEuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UucGFweXJ1cy5pbmZyYS53aWRnZXRzXzIuMC4xLjIwMTcwMzA4MDg1MS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5jb3JlLmRhdGFiaW5kaW5nXzEuNi4wLnYyMDE2MDQxMi0wOTEwLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnVpLnZpZXdzLnByb3BlcnRpZXMudGFiYmVkXzMuNy4wLnYyMDE2MDMxMC0wOTAzLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnVpLmZvcm1zXzMuNy4xLnYyMDE2MTIyMC0xNjM1LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnVpLnZpZXdzXzMuOC4xMDIudjIwMTcwMTExLTA4MDEuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UucGFweXJ1cy5pbmZyYS5zZXJ2aWNlcy5sYWJlbHByb3ZpZGVyXzEuMi4xLjIwMTcwMzA4MDg1MS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5qZmFjZS50ZXh0XzMuMTEuMi52MjAxNzAyMjAtMTkxMS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS50ZXh0XzMuNi4wLnYyMDE2MDUwMy0xODQ5LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnBhcHlydXMubWFydGUuc3RhdGljLnByb2ZpbGVfMS4yLjMuMjAxODEwMTcwMTExLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmFjY2VsZW8ucGFyc2VyXzMuNi42LjIwMTYxMDA2MDgzMS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5tMm0ucXZ0Lm9tbF8zLjYuMC52MjAxNjA2MDYtMTE1Ni5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5tMm0ucXZ0Lm9tbC5jb21tb25fMy42LjAudjIwMTYwNjA2LTExNTYuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UubTJtLnF2dC5vbWwuZW1mLnV0aWxfMy42LjAudjIwMTYwNjA2LTExNTYuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UubTJtLnF2dC5vbWwuY3N0LnBhcnNlcl8zLjYuMC52MjAxNjA2MDYtMTE1Ni5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5tMm0ucXZ0Lm9tbC5lY29yZS5pbXBlcmF0aXZlb2NsXzMuNC4wLnYyMDE2MDYwNi0xMTU2LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLm0ybS5xdnQub21sLnByb2plY3RfMy42LjAudjIwMTYwNjA2LTExNTYuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UubTJtLnF2dC5vbWwucnVudGltZV8zLjYuMC52MjAxNjA2MDYtMTE1Ni5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5nbWYucnVudGltZS5kaWFncmFtLnVpXzEuOC4wLjIwMTYwNjA3MTk1OS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5nZWZfMy4xMS4wLjIwMTYwNjA2MTMwOC5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5kcmF3MmRfMy4xMC4xMDAuMjAxNjA2MDYxMzA4LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmdtZi5ydW50aW1lLmVtZi5jb3JlXzEuNy4wLjIwMTYwNjA3MTk1OS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5nbWYucnVudGltZS5jb21tb24uY29yZV8xLjcuMC4yMDE2MDYwNzE5NTkuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZW1mLndvcmtzcGFjZV8xLjUuMS4yMDE2MDYwNzE5MDAuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZ21mLnJ1bnRpbWUuZW1mLmNsaXBib2FyZC5jb3JlXzEuNy4wLjIwMTYwNjA3MTk1OS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5nbWYucnVudGltZS5lbWYudWlfMS43LjAuMjAxNjA2MDcxOTU5LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmdtZi5ydW50aW1lLmNvbW1vbi51aS5hY3Rpb25fMS43LjAuMjAxNjA2MDcxOTU5LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmdtZi5ydW50aW1lLmNvbW1vbi51aS5zZXJ2aWNlcy5hY3Rpb25fMS43LjAuMjAxNjA2MDcxOTU5LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmdtZi5ydW50aW1lLmNvbW1vbi51aS5zZXJ2aWNlc18xLjkuMC4yMDE2MDYwNzE5NTkuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZ21mLnJ1bnRpbWUuY29tbW9uLnVpXzEuOC4xLjIwMTYwNjA3MTk1OS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS51aS5jb25zb2xlXzMuNi4yMDEudjIwMTYxMTA3LTAzMzcuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UudWkud29ya2JlbmNoLnRleHRlZGl0b3JfMy4xMC4xLnYyMDE2MDgxOC0xNjI2LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnRlYW0uY29yZV8zLjguMC52MjAxNjA0MTgtMTUzNC5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5nbWYucnVudGltZS5lbWYudHlwZS5jb3JlXzEuOS4wLjIwMTYwNjA3MTk1OS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5nbWYucnVudGltZS5lbWYuY29tbWFuZHMuY29yZV8xLjcuMC4yMDE2MDYwNzE5NTkuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZ21mLnJ1bnRpbWUuZ2VmLnVpXzEuNy4wLjIwMTYwNjA3MTk1OS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5nbWYucnVudGltZS5kcmF3MmQudWlfMS45LjAuMjAxNjA2MDcxOTU5LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmdtZi5ydW50aW1lLm5vdGF0aW9uXzEuOC4wLjIwMTYwNjA3MTYzMS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5nbWYucnVudGltZS5kaWFncmFtLmNvcmVfMS43LjAuMjAxNjA2MDcxOTU5LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmRlYnVnLmNvcmVfMy4xMC4xMDAudjIwMTYwNDE5LTE3MjAuamFyIi8+Ci0gICAgPC9wYXRoPgotCi0gICAgPHBhdGggaWQ9Im9yZy5wb2xhcnN5cy5jaGVzcy5tb2JpdXMuY2xhc3NwYXRoIj4KLSAgICAgICAgPHBhdGggcmVmaWQ9Im9yZy5wb2xhcnN5cy5jaGVzcy5tb2JpdXMubGlicmFyeWNsYXNzcGF0aCIvPgotICAgIDwvcGF0aD4KLQotICAgIDwhLS0gVGhlIGNsYXNzcGF0aCB3aXRoIG9ubHkgdGhlIGphcnMgYXZhaWxhYmxlIGluIHRoZSBwbHVnaW4gZm9sZGVyIG9mIEVjbGlwc2UgLS0+Ci0gICAgPHBhdGggaWQ9Im9yZy5wb2xhcnN5cy5jaGVzcy5tb2JpdXMubGlicmFyeWNsYXNzcGF0aC5hbGxqYXJzIj4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIuLi9vcmcucG9sYXJzeXMuY2hlc3MubW9iaXVzL2JpbiIvPgotICAgICAgICA8ZmlsZXNldCBkaXI9IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zLyIgaW5jbHVkZXM9IiouamFyIi8+Ci0gICAgPC9wYXRoPgotCi0gICAgPHBhdGggaWQ9Im9yZy5wb2xhcnN5cy5jaGVzcy5tb2JpdXMuY2xhc3NwYXRoLmFsbGphcnMiPgotICAgICAgICA8cGF0aCByZWZpZD0ib3JnLnBvbGFyc3lzLmNoZXNzLm1vYml1cy5saWJyYXJ5Y2xhc3NwYXRoLmFsbGphcnMiLz4KLSAgICA8L3BhdGg+Ci0KLSAgICA8IS0tIFRoZSBkZWZhdWx0IHRhc2sgd2l0aCB0aGUgamFycyB1c2VkIGJ5IHRoaXMgcHJvamVjdCAtLT4KLSAgICA8dGFyZ2V0IG5hbWU9ImNvbXBvc2VkQ29tcG9uZW50VGVtcGxhdGUiPgotICAgICAgICA8amF2YSBjbGFzc25hbWU9Im9yZy5wb2xhcnN5cy5jaGVzcy5tb2JpdXMudGVtcGxhdGVzLkNvbXBvc2VkQ29tcG9uZW50VGVtcGxhdGUiIGNsYXNzcGF0aHJlZj0ib3JnLnBvbGFyc3lzLmNoZXNzLm1vYml1cy5jbGFzc3BhdGgiPgotICAgICAgICAgICAgPGFyZyB2YWx1ZT0iJHttb2RlbH0iLz4KLSAgICAgICAgICAgIDxhcmcgdmFsdWU9IiR7dGFyZ2V0fSIvPgotICAgICAgICA8L2phdmE+Ci0gICAgPC90YXJnZXQ+Ci0KLSAgICA8IS0tCi0gICAgICAgIEluIGNhc2Ugb2YgcHJvYmxlbSB5b3UgY2FuIGFsc28gdHJ5IHdpdGggYWxsIHRoZSBqYXIgYXZhaWxhYmxlIGluIHlvdXIgRWNsaXBzZQotICAgICAgICBLZWVwIGluIG1pbmQgdGhhdCBoYXZpbmcgdHdvIHZlcnNpb25zIG9mIHRoZSBzYW1lIGphciBjYW4gY3JlYXRlIHByb2JsZW1zCi0gICAgLS0+Ci0gICAgPHRhcmdldCBuYW1lPSJjb21wb3NlZENvbXBvbmVudFRlbXBsYXRlLmFsbGphcnMiPgotICAgICAgICA8amF2YSBjbGFzc25hbWU9Im9yZy5wb2xhcnN5cy5jaGVzcy5tb2JpdXMudGVtcGxhdGVzLkNvbXBvc2VkQ29tcG9uZW50VGVtcGxhdGUiIGNsYXNzcGF0aHJlZj0ib3JnLnBvbGFyc3lzLmNoZXNzLm1vYml1cy5jbGFzc3BhdGgiPgotICAgICAgICAgICAgPGFyZyB2YWx1ZT0iJHttb2RlbH0iLz4KLSAgICAgICAgICAgIDxhcmcgdmFsdWU9IiR7dGFyZ2V0fSIvPgotICAgICAgICA8L2phdmE+Ci0gICAgPC90YXJnZXQ+Ci08L3Byb2plY3Q+CmRpZmYgLS1naXQgYS9wbHVnaW5zL21vYml1cy9vcmcucG9sYXJzeXMuY2hlc3MubW9iaXVzL3Rhc2tzL2NvbXBvc2VkQ29tcG9uZW50VGVtcGxhdGVUYXJnZXQueG1sIGIvcGx1Z2lucy9tb2JpdXMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vYml1cy90YXNrcy9jb21wb3NlZENvbXBvbmVudFRlbXBsYXRlVGFyZ2V0LnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTg2NWMxNC4uMDAwMDAwMAotLS0gYS9wbHVnaW5zL21vYml1cy9vcmcucG9sYXJzeXMuY2hlc3MubW9iaXVzL3Rhc2tzL2NvbXBvc2VkQ29tcG9uZW50VGVtcGxhdGVUYXJnZXQueG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLQotPCEtLSBQbGFjZSB0aGlzIGZpbGUgaW4gdGhlIHRhcmdldCBwcm9qZWN0IGFuZCBjYWxsIGl0IHdpdGggIkV4dGVybmFsIFRvb2xzID4gUnVuIEFzID4gQW50IEJ1aWxkIiAtLT4KLTwhLS0gWW91IGhhdmUgdG8gY2hhbmdlIHRoZSBNT0RFTCBhbmQgdGhlIFRBUkdFVCB2YWx1ZXMgLS0+Ci0KLTxwcm9qZWN0IGJhc2VkaXI9Ii4iIGRlZmF1bHQ9ImNvbXBvc2VkQ29tcG9uZW50VGVtcGxhdGVTYW1wbGUiIG5hbWU9Im9yZy5wb2xhcnN5cy5jaGVzcy5tb2JpdXNTYW1wbGUiPgotCTxpbXBvcnQgZmlsZT0iLi4vLi4vb3JnLnBvbGFyc3lzLmNoZXNzLm1vYml1cy90YXNrcy9jb21wb3NlZENvbXBvbmVudFRlbXBsYXRlLnhtbCIvPgotCi0gICAgPCEtLSBDaGFuZ2UgdGhlIHZhbHVlcyBvZiBNT0RFTCBhbmQgVEFSR0VUIHRvIHBvaW50IHRvIHlvdXIgbW9kZWwgYW5kIG91dHB1dCBmb2xkZXIgLS0+Ci0JPHByb3BlcnR5IG5hbWU9Ik1PREVMIiB2YWx1ZT0iJHtiYXNlZGlyfS9tb2RlbC9maWxlLnhtaSIvPgotCTxwcm9wZXJ0eSBuYW1lPSJUQVJHRVQiIHZhbHVlPSIke2Jhc2VkaXJ9L3NyYy1nZW4iLz4KLQotCTx0YXJnZXQgbmFtZT0iY29tcG9zZWRDb21wb25lbnRUZW1wbGF0ZVNhbXBsZSIgZGVzY3JpcHRpb249IkdlbmVyYXRlIGZpbGVzIGluICdUQVJHRVQnIj4KLQkJPGFudGNhbGwgdGFyZ2V0PSJjb21wb3NlZENvbXBvbmVudFRlbXBsYXRlIiA+Ci0JCQk8cGFyYW0gbmFtZT0ibW9kZWwiIHZhbHVlPSIke01PREVMfSIvPgotCQkJPHBhcmFtIG5hbWU9InRhcmdldCIgdmFsdWU9IiR7VEFSR0VUfSIvPgotCQk8L2FudGNhbGw+Ci0JPC90YXJnZXQ+Ci08L3Byb2plY3Q+CmRpZmYgLS1naXQgYS9wbHVnaW5zL21vYml1cy9vcmcucG9sYXJzeXMuY2hlc3MubW9iaXVzL3Rhc2tzL2NvbXBvc2VkQ29tcG9uZW50VGVtcGxhdGVfc2FubW9kZWwueG1sIGIvcGx1Z2lucy9tb2JpdXMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vYml1cy90YXNrcy9jb21wb3NlZENvbXBvbmVudFRlbXBsYXRlX3Nhbm1vZGVsLnhtbAppbmRleCA0ZmI3MTIyLi40NDIxOTQ0IDEwMDY0NAotLS0gYS9wbHVnaW5zL21vYml1cy9vcmcucG9sYXJzeXMuY2hlc3MubW9iaXVzL3Rhc2tzL2NvbXBvc2VkQ29tcG9uZW50VGVtcGxhdGVfc2FubW9kZWwueG1sCisrKyBiL3BsdWdpbnMvbW9iaXVzL29yZy5wb2xhcnN5cy5jaGVzcy5tb2JpdXMvdGFza3MvY29tcG9zZWRDb21wb25lbnRUZW1wbGF0ZV9zYW5tb2RlbC54bWwKQEAgLTEsNyArMSw3IEBACiA8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgogPHByb2plY3QgZGVmYXVsdD0iY29tcG9zZWRDb21wb25lbnRUZW1wbGF0ZV9zYW5tb2RlbCIgbmFtZT0ib3JnLnBvbGFyc3lzLmNoZXNzLm1vYml1cyI+Ci0gICAgPHByb3BlcnR5IG5hbWU9IkVDTElQU0VfSE9NRSIgdmFsdWU9Ii4uLy4uLy4uLy4uLy4uLy4uL1Byb2dyYW1taS9Qb2xhcnN5c0NIRVNTLU5lb24td2luMzIteDg2XzY0XzIwMTkwNTE1Ii8+Ci0gICAgPHByb3BlcnR5IG5hbWU9IkVDTElQU0VfV09SS1NQQUNFIiB2YWx1ZT0iLi4vLi4vLi4vLi4vLi4vLi4vUHJvZ3JhbW1pL1BvbGFyc3lzQ0hFU1MtTmVvbi13aW4zMi14ODZfNjRfMjAxOTA1MTUvcnVudGltZS1OZXdfY29uZmlndXJhdGlvbl8zIi8+CisgICAgPHByb3BlcnR5IG5hbWU9IkVDTElQU0VfSE9NRSIgdmFsdWU9Ii4uLy4uLy4uLy4uLy4uLy4uL0VjbGlwc2VDSEVTUy1OZW9uLXdpbjMyLXg4Nl82NF8xLjAuMFJDMSIvPgorICAgIDxwcm9wZXJ0eSBuYW1lPSJFQ0xJUFNFX1dPUktTUEFDRSIgdmFsdWU9Ii4uLy4uLy4uLy4uLy4uLy4uL3J1bnRpbWUtRWNsaXBzZUFwcGxpY2F0aW9uIi8+CiAKICAgICA8IS0tIFRoZSBjbGFzc3BhdGggd2l0aCBvbmx5IHRoZSBkZXBlbmRlbmNpZXMgdXNlZCBieSB0aGUgcHJvamVjdCAtLT4KICAgICA8cGF0aCBpZD0ib3JnLnBvbGFyc3lzLmNoZXNzLm1vYml1cy5saWJyYXJ5Y2xhc3NwYXRoIj4KQEAgLTQ5LDggKzQ5LDYgQEAKICAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS51bWwyLmNvbW1vbl8yLjEuMC52MjAxNzAyMjctMDkzNS5qYXIiLz4KICAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS51bWwyLnR5cGVzXzIuMC4wLnYyMDE3MDIyNy0wOTM1LmphciIvPgogICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmVtZi5tYXBwaW5nLmVjb3JlMnhtbF8yLjkuMC52MjAxNjA1MjYtMDM1Ni5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3Muc2VydmljZV8wLjExLjAuMjAxODEyMDcxMDQ5LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlXzAuOS4wLjIwMTgxMjA3MTA0OS5qYXIiLz4KICAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5wYXB5cnVzLmVkaXRvcl8xLjMuMC4yMDE3MDMwODA4NTEuamFyIi8+CiAgICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UucGFweXJ1cy5pbmZyYS51aV8xLjMuMC4yMDE3MDMwODA4NTEuamFyIi8+CiAgICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UucGFweXJ1cy5pbmZyYS5jb3JlXzIuMS4xLjIwMTcwMzA4MDg1MS5qYXIiLz4KQEAgLTg2LDcgKzg0LDcgQEAKICAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5wYXB5cnVzLmluZnJhLnNlcnZpY2VzLmxhYmVscHJvdmlkZXJfMS4yLjEuMjAxNzAzMDgwODUxLmphciIvPgogICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmpmYWNlLnRleHRfMy4xMS4yLnYyMDE3MDIyMC0xOTExLmphciIvPgogICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnRleHRfMy42LjAudjIwMTYwNTAzLTE4NDkuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UucGFweXJ1cy5tYXJ0ZS5zdGF0aWMucHJvZmlsZV8xLjIuMy4yMDE4MTAxNzAxMTEuamFyIi8+CisgICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UucGFweXJ1cy5tYXJ0ZS5zdGF0aWMucHJvZmlsZV8xLjIuMC4yMDE3MDMwODExNTMuamFyIi8+CiAgICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuYWNjZWxlby5wYXJzZXJfMy42LjYuMjAxNjEwMDYwODMxLmphciIvPgogICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLm0ybS5xdnQub21sXzMuNi4wLnYyMDE2MDYwNi0xMTU2LmphciIvPgogICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLm0ybS5xdnQub21sLmNvbW1vbl8zLjYuMC52MjAxNjA2MDYtMTE1Ni5qYXIiLz4KQEAgLTExNCw3ICsxMTIsNiBAQAogICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmdtZi5ydW50aW1lLmVtZi5jb21tYW5kcy5jb3JlXzEuNy4wLjIwMTYwNjA3MTk1OS5qYXIiLz4KICAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5nbWYucnVudGltZS5nZWYudWlfMS43LjAuMjAxNjA2MDcxOTU5LmphciIvPgogICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmdtZi5ydW50aW1lLmRyYXcyZC51aV8xLjkuMC4yMDE2MDYwNzE5NTkuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZ21mLnJ1bnRpbWUubm90YXRpb25fMS44LjAuMjAxNjA2MDcxNjMxLmphciIvPgogICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmdtZi5ydW50aW1lLmRpYWdyYW0uY29yZV8xLjcuMC4yMDE2MDYwNzE5NTkuamFyIi8+CiAgICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZGVidWcuY29yZV8zLjEwLjEwMC52MjAxNjA0MTktMTcyMC5qYXIiLz4KICAgICA8L3BhdGg+CmRpZmYgLS1naXQgYS9wbHVnaW5zL21vYml1cy9vcmcucG9sYXJzeXMuY2hlc3MubW9iaXVzL3Rhc2tzL3Byb2plY3RGaWxlVGVtcGxhdGUueG1sIGIvcGx1Z2lucy9tb2JpdXMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vYml1cy90YXNrcy9wcm9qZWN0RmlsZVRlbXBsYXRlLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjI1MjFmYS4uMDAwMDAwMAotLS0gYS9wbHVnaW5zL21vYml1cy9vcmcucG9sYXJzeXMuY2hlc3MubW9iaXVzL3Rhc2tzL3Byb2plY3RGaWxlVGVtcGxhdGUueG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTU0ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08cHJvamVjdCBkZWZhdWx0PSJwcm9qZWN0RmlsZVRlbXBsYXRlIiBuYW1lPSJvcmcucG9sYXJzeXMuY2hlc3MubW9iaXVzIj4KLSAgICA8cHJvcGVydHkgbmFtZT0iRUNMSVBTRV9IT01FIiB2YWx1ZT0iLi4vLi4vLi4vLi4vLi4vLi4vUHJvZ3JhbW1pL1BvbGFyc3lzQ0hFU1MtTmVvbi13aW4zMi14ODZfNjRfMjAxOTA1MTUiLz4KLSAgICA8cHJvcGVydHkgbmFtZT0iRUNMSVBTRV9XT1JLU1BBQ0UiIHZhbHVlPSIuLi8uLi8uLi8uLi8uLi8uLi9Qcm9ncmFtbWkvUG9sYXJzeXNDSEVTUy1OZW9uLXdpbjMyLXg4Nl82NF8yMDE5MDUxNS9ydW50aW1lLU5ld19jb25maWd1cmF0aW9uXzMiLz4KLQotICAgIDwhLS0gVGhlIGNsYXNzcGF0aCB3aXRoIG9ubHkgdGhlIGRlcGVuZGVuY2llcyB1c2VkIGJ5IHRoZSBwcm9qZWN0IC0tPgotICAgIDxwYXRoIGlkPSJvcmcucG9sYXJzeXMuY2hlc3MubW9iaXVzLmxpYnJhcnljbGFzc3BhdGgiPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9XT1JLU1BBQ0V9L29yZy5wb2xhcnN5cy5jaGVzcy5tb2JpdXMvYmluIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L2pyZS9saWIvcmVzb3VyY2VzLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9qcmUvbGliL3J0LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9qcmUvbGliL2pzc2UuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L2pyZS9saWIvamNlLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9qcmUvbGliL2NoYXJzZXRzLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9qcmUvbGliL2pmci5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vanJlL2xpYi9leHQvYWNjZXNzLWJyaWRnZS02NC5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vanJlL2xpYi9leHQvY2xkcmRhdGEuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L2pyZS9saWIvZXh0L2Ruc25zLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9qcmUvbGliL2V4dC9qYWNjZXNzLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9qcmUvbGliL2V4dC9qZnhydC5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vanJlL2xpYi9leHQvbG9jYWxlZGF0YS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vanJlL2xpYi9leHQvbmFzaG9ybi5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vanJlL2xpYi9leHQvc3VuZWMuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L2pyZS9saWIvZXh0L3N1bmpjZV9wcm92aWRlci5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vanJlL2xpYi9leHQvc3VubXNjYXBpLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9qcmUvbGliL2V4dC9zdW5wa2NzMTEuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L2pyZS9saWIvZXh0L3ppcGZzLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnVpXzMuMTA4LjEudjIwMTYwOTI5LTEwNDUuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2Uuc3d0XzMuMTA1LjMudjIwMTcwMjI4LTA1MTIuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2Uuc3d0LndpbjMyLndpbjMyLng4Nl82NF8zLjEwNS4zLnYyMDE3MDIyOC0wNTEyLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmpmYWNlXzMuMTIuMi52MjAxNzAxMTMtMjExMy5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5jb3JlLmNvbW1hbmRzXzMuOC4xLnYyMDE2MTIyMS0xNjUxLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnVpLndvcmtiZW5jaF8zLjEwOC4zLnYyMDE3MDIxNi0xNTM5LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmU0LnVpLndvcmtiZW5jaDNfMC4xMy4xMDAudjIwMTYwNTA2LTA3NTkuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXNfMy4xMS4xLnYyMDE2MTEwNy0yMDMyLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmFjY2VsZW8uZW5naW5lXzMuNi42LjIwMTYxMDA2MDgzMS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5hY2NlbGVvLmNvbW1vbl8zLjYuNi4yMDE2MTAwNjA4MzEuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuYWNjZWxlby5tb2RlbF8zLjYuNi4yMDE2MTAwNjA4MzEuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZW1mLmVjb3JlXzIuMTIuMC52MjAxNjA0MjAtMDI0Ny5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5lbWYuY29tbW9uXzIuMTIuMC52MjAxNjA0MjAtMDI0Ny5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5lbWYuZWNvcmUueG1pXzIuMTIuMC52MjAxNjA0MjAtMDI0Ny5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5hY2NlbGVvLnByb2ZpbGVyXzMuNi42LjIwMTYxMDA2MDgzMS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5vY2wuZWNvcmVfMy42LjAudjIwMTYwNTIzLTE5MTQuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2Uub2NsXzMuNi4wLnYyMDE2MDUyMy0xOTE0LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL2xwZy5ydW50aW1lLmphdmFfMi4wLjE3LnYyMDEwMDQyNzE2NDAuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2Uub2NsLmNvbW1vbl8xLjQuMC52MjAxNjA1MjEtMjAzMy5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5lbWYuY29kZWdlbi5lY29yZV8yLjEyLjAudjIwMTYwNTI2LTAzNTYuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZW1mLmNvZGVnZW5fMi4xMS4wLnYyMDE2MDUyNi0wMzU2LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnVtbDIudW1sXzUuMi4zLnYyMDE3MDIyNy0wOTM1LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnVtbDIuY29tbW9uXzIuMS4wLnYyMDE3MDIyNy0wOTM1LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnVtbDIudHlwZXNfMi4wLjAudjIwMTcwMjI3LTA5MzUuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZW1mLm1hcHBpbmcuZWNvcmUyeG1sXzIuOS4wLnYyMDE2MDUyNi0wMzU2LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5zZXJ2aWNlXzAuMTEuMC4yMDE4MTIwNzEwNDkuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmVfMC45LjAuMjAxODEyMDcxMDQ5LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnBhcHlydXMuZWRpdG9yXzEuMy4wLjIwMTcwMzA4MDg1MS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5wYXB5cnVzLmluZnJhLnVpXzEuMy4wLjIwMTcwMzA4MDg1MS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5wYXB5cnVzLmluZnJhLmNvcmVfMi4xLjEuMjAxNzAzMDgwODUxLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnBhcHlydXMuaW5mcmEudG9vbHNfMi4wLjEuMjAxNzAzMDgwODUxLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnBhcHlydXMuaW5mcmEuY29yZS5sb2dfMS4yLjAuMjAxNzAzMDgwODUxLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmNvcmUucnVudGltZV8zLjEyLjAudjIwMTYwNjA2LTEzNDIuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvamF2YXguaW5qZWN0XzEuMC4wLnYyMDA5MTAzMC5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5vc2dpXzMuMTEuMy52MjAxNzAyMDktMTg0My5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5meC5vc2dpXzIuNC4wLjIwMTYwNTEwMDUwNC5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5vc2dpLmNvbXBhdGliaWxpdHkuc3RhdGVfMS4wLjIwMC52MjAxNjA1MDQtMTQxOS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5lcXVpbm94LmNvbW1vbl8zLjguMC52MjAxNjA1MDktMTIzMC5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5jb3JlLmpvYnNfMy44LjAudjIwMTYwNTA5LTA0MTEuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZXF1aW5veC5yZWdpc3RyeV8zLjYuMTAwLnYyMDE2MDIyMy0yMjE4LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmVxdWlub3gucHJlZmVyZW5jZXNfMy42LjEudjIwMTYwODE1LTE0MDYuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuY29yZS5jb250ZW50dHlwZV8zLjUuMTAwLnYyMDE2MDQxOC0xNjIxLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmVxdWlub3guYXBwXzEuMy40MDAudjIwMTUwNzE1LTE1MjguamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvY29tLmdvb2dsZS5ndWF2YV8xNS4wLjAudjIwMTQwMzI4MTQzMC5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5jb3JlLmRhdGFiaW5kaW5nLm9ic2VydmFibGVfMS42LjAudjIwMTYwNTExLTE3NDcuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UucGFweXJ1cy5pbmZyYS5jb3JlLnNhc2h3aW5kb3dzLmRpXzEuMi4wLjIwMTcwMzA4MDg1MS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5lbWYudHJhbnNhY3Rpb25fMS45LjAuMjAxNjA2MDcxOTAwLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmVtZi5lZGl0XzIuMTIuMC52MjAxNjA1MjYtMDM1Ni5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5lbWYuZWNvcmUuY2hhbmdlXzIuMTEuMC52MjAxNjA0MjAtMDI0Ny5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5lbWYudmFsaWRhdGlvbl8xLjguMC4yMDE2MDYwNzE3MTMuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuY29yZS5leHByZXNzaW9uc18zLjUuMTAwLnYyMDE2MDQxOC0xNjIxLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnVpLmlkZV8zLjEyLjMudjIwMTcwMTE5LTA5MzUuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UucGFweXJ1cy5pbmZyYS5jb3JlLnNhc2hlZGl0b3IuZGlfMi4wLjAuMjAxNzAzMDgwODUxLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnBhcHlydXMuaW5mcmEuY29yZS5zYXNoZWRpdG9yXzIuMC4wLjIwMTcwMzA4MDg1MS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5wYXB5cnVzLmluZnJhLndpZGdldHNfMi4wLjEuMjAxNzAzMDgwODUxLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmNvcmUuZGF0YWJpbmRpbmdfMS42LjAudjIwMTYwNDEyLTA5MTAuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UudWkudmlld3MucHJvcGVydGllcy50YWJiZWRfMy43LjAudjIwMTYwMzEwLTA5MDMuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UudWkuZm9ybXNfMy43LjEudjIwMTYxMjIwLTE2MzUuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UudWkudmlld3NfMy44LjEwMi52MjAxNzAxMTEtMDgwMS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5wYXB5cnVzLmluZnJhLnNlcnZpY2VzLmxhYmVscHJvdmlkZXJfMS4yLjEuMjAxNzAzMDgwODUxLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmpmYWNlLnRleHRfMy4xMS4yLnYyMDE3MDIyMC0xOTExLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnRleHRfMy42LjAudjIwMTYwNTAzLTE4NDkuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UucGFweXJ1cy5tYXJ0ZS5zdGF0aWMucHJvZmlsZV8xLjIuMy4yMDE4MTAxNzAxMTEuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuYWNjZWxlby5wYXJzZXJfMy42LjYuMjAxNjEwMDYwODMxLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLm0ybS5xdnQub21sXzMuNi4wLnYyMDE2MDYwNi0xMTU2LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLm0ybS5xdnQub21sLmNvbW1vbl8zLjYuMC52MjAxNjA2MDYtMTE1Ni5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5tMm0ucXZ0Lm9tbC5lbWYudXRpbF8zLjYuMC52MjAxNjA2MDYtMTE1Ni5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5tMm0ucXZ0Lm9tbC5jc3QucGFyc2VyXzMuNi4wLnYyMDE2MDYwNi0xMTU2LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLm0ybS5xdnQub21sLmVjb3JlLmltcGVyYXRpdmVvY2xfMy40LjAudjIwMTYwNjA2LTExNTYuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UubTJtLnF2dC5vbWwucHJvamVjdF8zLjYuMC52MjAxNjA2MDYtMTE1Ni5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5tMm0ucXZ0Lm9tbC5ydW50aW1lXzMuNi4wLnYyMDE2MDYwNi0xMTU2LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmdtZi5ydW50aW1lLmRpYWdyYW0udWlfMS44LjAuMjAxNjA2MDcxOTU5LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmdlZl8zLjExLjAuMjAxNjA2MDYxMzA4LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmRyYXcyZF8zLjEwLjEwMC4yMDE2MDYwNjEzMDguamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZ21mLnJ1bnRpbWUuZW1mLmNvcmVfMS43LjAuMjAxNjA2MDcxOTU5LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmdtZi5ydW50aW1lLmNvbW1vbi5jb3JlXzEuNy4wLjIwMTYwNjA3MTk1OS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5lbWYud29ya3NwYWNlXzEuNS4xLjIwMTYwNjA3MTkwMC5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5nbWYucnVudGltZS5lbWYuY2xpcGJvYXJkLmNvcmVfMS43LjAuMjAxNjA2MDcxOTU5LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmdtZi5ydW50aW1lLmVtZi51aV8xLjcuMC4yMDE2MDYwNzE5NTkuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZ21mLnJ1bnRpbWUuY29tbW9uLnVpLmFjdGlvbl8xLjcuMC4yMDE2MDYwNzE5NTkuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZ21mLnJ1bnRpbWUuY29tbW9uLnVpLnNlcnZpY2VzLmFjdGlvbl8xLjcuMC4yMDE2MDYwNzE5NTkuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZ21mLnJ1bnRpbWUuY29tbW9uLnVpLnNlcnZpY2VzXzEuOS4wLjIwMTYwNjA3MTk1OS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5nbWYucnVudGltZS5jb21tb24udWlfMS44LjEuMjAxNjA2MDcxOTU5LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnVpLmNvbnNvbGVfMy42LjIwMS52MjAxNjExMDctMDMzNy5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS51aS53b3JrYmVuY2gudGV4dGVkaXRvcl8zLjEwLjEudjIwMTYwODE4LTE2MjYuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UudGVhbS5jb3JlXzMuOC4wLnYyMDE2MDQxOC0xNTM0LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmdtZi5ydW50aW1lLmVtZi50eXBlLmNvcmVfMS45LjAuMjAxNjA2MDcxOTU5LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmdtZi5ydW50aW1lLmVtZi5jb21tYW5kcy5jb3JlXzEuNy4wLjIwMTYwNjA3MTk1OS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5nbWYucnVudGltZS5nZWYudWlfMS43LjAuMjAxNjA2MDcxOTU5LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmdtZi5ydW50aW1lLmRyYXcyZC51aV8xLjkuMC4yMDE2MDYwNzE5NTkuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZ21mLnJ1bnRpbWUubm90YXRpb25fMS44LjAuMjAxNjA2MDcxNjMxLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmdtZi5ydW50aW1lLmRpYWdyYW0uY29yZV8xLjcuMC4yMDE2MDYwNzE5NTkuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZGVidWcuY29yZV8zLjEwLjEwMC52MjAxNjA0MTktMTcyMC5qYXIiLz4KLSAgICA8L3BhdGg+Ci0KLSAgICA8cGF0aCBpZD0ib3JnLnBvbGFyc3lzLmNoZXNzLm1vYml1cy5jbGFzc3BhdGgiPgotICAgICAgICA8cGF0aCByZWZpZD0ib3JnLnBvbGFyc3lzLmNoZXNzLm1vYml1cy5saWJyYXJ5Y2xhc3NwYXRoIi8+Ci0gICAgPC9wYXRoPgotCi0gICAgPCEtLSBUaGUgY2xhc3NwYXRoIHdpdGggb25seSB0aGUgamFycyBhdmFpbGFibGUgaW4gdGhlIHBsdWdpbiBmb2xkZXIgb2YgRWNsaXBzZSAtLT4KLSAgICA8cGF0aCBpZD0ib3JnLnBvbGFyc3lzLmNoZXNzLm1vYml1cy5saWJyYXJ5Y2xhc3NwYXRoLmFsbGphcnMiPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249Ii4uL29yZy5wb2xhcnN5cy5jaGVzcy5tb2JpdXMvYmluIi8+Ci0gICAgICAgIDxmaWxlc2V0IGRpcj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvIiBpbmNsdWRlcz0iKi5qYXIiLz4KLSAgICA8L3BhdGg+Ci0KLSAgICA8cGF0aCBpZD0ib3JnLnBvbGFyc3lzLmNoZXNzLm1vYml1cy5jbGFzc3BhdGguYWxsamFycyI+Ci0gICAgICAgIDxwYXRoIHJlZmlkPSJvcmcucG9sYXJzeXMuY2hlc3MubW9iaXVzLmxpYnJhcnljbGFzc3BhdGguYWxsamFycyIvPgotICAgIDwvcGF0aD4KLQotICAgIDwhLS0gVGhlIGRlZmF1bHQgdGFzayB3aXRoIHRoZSBqYXJzIHVzZWQgYnkgdGhpcyBwcm9qZWN0IC0tPgotICAgIDx0YXJnZXQgbmFtZT0icHJvamVjdEZpbGVUZW1wbGF0ZSI+Ci0gICAgICAgIDxqYXZhIGNsYXNzbmFtZT0ib3JnLnBvbGFyc3lzLmNoZXNzLm1vYml1cy50ZW1wbGF0ZXMuUHJvamVjdEZpbGVUZW1wbGF0ZSIgY2xhc3NwYXRocmVmPSJvcmcucG9sYXJzeXMuY2hlc3MubW9iaXVzLmNsYXNzcGF0aCI+Ci0gICAgICAgICAgICA8YXJnIHZhbHVlPSIke21vZGVsfSIvPgotICAgICAgICAgICAgPGFyZyB2YWx1ZT0iJHt0YXJnZXR9Ii8+Ci0gICAgICAgIDwvamF2YT4KLSAgICA8L3RhcmdldD4KLQotICAgIDwhLS0KLSAgICAgICAgSW4gY2FzZSBvZiBwcm9ibGVtIHlvdSBjYW4gYWxzbyB0cnkgd2l0aCBhbGwgdGhlIGphciBhdmFpbGFibGUgaW4geW91ciBFY2xpcHNlCi0gICAgICAgIEtlZXAgaW4gbWluZCB0aGF0IGhhdmluZyB0d28gdmVyc2lvbnMgb2YgdGhlIHNhbWUgamFyIGNhbiBjcmVhdGUgcHJvYmxlbXMKLSAgICAtLT4KLSAgICA8dGFyZ2V0IG5hbWU9InByb2plY3RGaWxlVGVtcGxhdGUuYWxsamFycyI+Ci0gICAgICAgIDxqYXZhIGNsYXNzbmFtZT0ib3JnLnBvbGFyc3lzLmNoZXNzLm1vYml1cy50ZW1wbGF0ZXMuUHJvamVjdEZpbGVUZW1wbGF0ZSIgY2xhc3NwYXRocmVmPSJvcmcucG9sYXJzeXMuY2hlc3MubW9iaXVzLmNsYXNzcGF0aCI+Ci0gICAgICAgICAgICA8YXJnIHZhbHVlPSIke21vZGVsfSIvPgotICAgICAgICAgICAgPGFyZyB2YWx1ZT0iJHt0YXJnZXR9Ii8+Ci0gICAgICAgIDwvamF2YT4KLSAgICA8L3RhcmdldD4KLTwvcHJvamVjdD4KZGlmZiAtLWdpdCBhL3BsdWdpbnMvbW9iaXVzL29yZy5wb2xhcnN5cy5jaGVzcy5tb2JpdXMvdGFza3MvcHJvamVjdEZpbGVUZW1wbGF0ZVRhcmdldC54bWwgYi9wbHVnaW5zL21vYml1cy9vcmcucG9sYXJzeXMuY2hlc3MubW9iaXVzL3Rhc2tzL3Byb2plY3RGaWxlVGVtcGxhdGVUYXJnZXQueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjODUyMDgwLi4wMDAwMDAwCi0tLSBhL3BsdWdpbnMvbW9iaXVzL29yZy5wb2xhcnN5cy5jaGVzcy5tb2JpdXMvdGFza3MvcHJvamVjdEZpbGVUZW1wbGF0ZVRhcmdldC54bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotCi08IS0tIFBsYWNlIHRoaXMgZmlsZSBpbiB0aGUgdGFyZ2V0IHByb2plY3QgYW5kIGNhbGwgaXQgd2l0aCAiRXh0ZXJuYWwgVG9vbHMgPiBSdW4gQXMgPiBBbnQgQnVpbGQiIC0tPgotPCEtLSBZb3UgaGF2ZSB0byBjaGFuZ2UgdGhlIE1PREVMIGFuZCB0aGUgVEFSR0VUIHZhbHVlcyAtLT4KLQotPHByb2plY3QgYmFzZWRpcj0iLiIgZGVmYXVsdD0icHJvamVjdEZpbGVUZW1wbGF0ZVNhbXBsZSIgbmFtZT0ib3JnLnBvbGFyc3lzLmNoZXNzLm1vYml1c1NhbXBsZSI+Ci0JPGltcG9ydCBmaWxlPSIuLi8uLi9vcmcucG9sYXJzeXMuY2hlc3MubW9iaXVzL3Rhc2tzL3Byb2plY3RGaWxlVGVtcGxhdGUueG1sIi8+Ci0KLSAgICA8IS0tIENoYW5nZSB0aGUgdmFsdWVzIG9mIE1PREVMIGFuZCBUQVJHRVQgdG8gcG9pbnQgdG8geW91ciBtb2RlbCBhbmQgb3V0cHV0IGZvbGRlciAtLT4KLQk8cHJvcGVydHkgbmFtZT0iTU9ERUwiIHZhbHVlPSIke2Jhc2VkaXJ9L21vZGVsL2ZpbGUueG1pIi8+Ci0JPHByb3BlcnR5IG5hbWU9IlRBUkdFVCIgdmFsdWU9IiR7YmFzZWRpcn0vc3JjLWdlbiIvPgotCi0JPHRhcmdldCBuYW1lPSJwcm9qZWN0RmlsZVRlbXBsYXRlU2FtcGxlIiBkZXNjcmlwdGlvbj0iR2VuZXJhdGUgZmlsZXMgaW4gJ1RBUkdFVCciPgotCQk8YW50Y2FsbCB0YXJnZXQ9InByb2plY3RGaWxlVGVtcGxhdGUiID4KLQkJCTxwYXJhbSBuYW1lPSJtb2RlbCIgdmFsdWU9IiR7TU9ERUx9Ii8+Ci0JCQk8cGFyYW0gbmFtZT0idGFyZ2V0IiB2YWx1ZT0iJHtUQVJHRVR9Ii8+Ci0JCTwvYW50Y2FsbD4KLQk8L3RhcmdldD4KLTwvcHJvamVjdD4KZGlmZiAtLWdpdCBhL3BsdWdpbnMvbW9iaXVzL29yZy5wb2xhcnN5cy5jaGVzcy5tb2JpdXMvdGFza3MvcHJvamVjdEZpbGVUZW1wbGF0ZV9zYW5tb2RlbC54bWwgYi9wbHVnaW5zL21vYml1cy9vcmcucG9sYXJzeXMuY2hlc3MubW9iaXVzL3Rhc2tzL3Byb2plY3RGaWxlVGVtcGxhdGVfc2FubW9kZWwueG1sCmluZGV4IDkwZTQ3MzIuLmVkOTNiMGIgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvbW9iaXVzL29yZy5wb2xhcnN5cy5jaGVzcy5tb2JpdXMvdGFza3MvcHJvamVjdEZpbGVUZW1wbGF0ZV9zYW5tb2RlbC54bWwKKysrIGIvcGx1Z2lucy9tb2JpdXMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vYml1cy90YXNrcy9wcm9qZWN0RmlsZVRlbXBsYXRlX3Nhbm1vZGVsLnhtbApAQCAtMSw3ICsxLDcgQEAKIDw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+CiA8cHJvamVjdCBkZWZhdWx0PSJwcm9qZWN0RmlsZVRlbXBsYXRlX3Nhbm1vZGVsIiBuYW1lPSJvcmcucG9sYXJzeXMuY2hlc3MubW9iaXVzIj4KLSAgICA8cHJvcGVydHkgbmFtZT0iRUNMSVBTRV9IT01FIiB2YWx1ZT0iLi4vLi4vLi4vLi4vLi4vLi4vUHJvZ3JhbW1pL1BvbGFyc3lzQ0hFU1MtTmVvbi13aW4zMi14ODZfNjRfMjAxOTA1MTUiLz4KLSAgICA8cHJvcGVydHkgbmFtZT0iRUNMSVBTRV9XT1JLU1BBQ0UiIHZhbHVlPSIuLi8uLi8uLi8uLi8uLi8uLi9Qcm9ncmFtbWkvUG9sYXJzeXNDSEVTUy1OZW9uLXdpbjMyLXg4Nl82NF8yMDE5MDUxNS9ydW50aW1lLU5ld19jb25maWd1cmF0aW9uXzMiLz4KKyAgICA8cHJvcGVydHkgbmFtZT0iRUNMSVBTRV9IT01FIiB2YWx1ZT0iLi4vLi4vLi4vLi4vLi4vLi4vRWNsaXBzZUNIRVNTLU5lb24td2luMzIteDg2XzY0XzEuMC4wUkMxIi8+CisgICAgPHByb3BlcnR5IG5hbWU9IkVDTElQU0VfV09SS1NQQUNFIiB2YWx1ZT0iLi4vLi4vLi4vLi4vLi4vLi4vcnVudGltZS1FY2xpcHNlQXBwbGljYXRpb24iLz4KIAogICAgIDwhLS0gVGhlIGNsYXNzcGF0aCB3aXRoIG9ubHkgdGhlIGRlcGVuZGVuY2llcyB1c2VkIGJ5IHRoZSBwcm9qZWN0IC0tPgogICAgIDxwYXRoIGlkPSJvcmcucG9sYXJzeXMuY2hlc3MubW9iaXVzLmxpYnJhcnljbGFzc3BhdGgiPgpAQCAtNDksOCArNDksNiBAQAogICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnVtbDIuY29tbW9uXzIuMS4wLnYyMDE3MDIyNy0wOTM1LmphciIvPgogICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnVtbDIudHlwZXNfMi4wLjAudjIwMTcwMjI3LTA5MzUuamFyIi8+CiAgICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZW1mLm1hcHBpbmcuZWNvcmUyeG1sXzIuOS4wLnYyMDE2MDUyNi0wMzU2LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5zZXJ2aWNlXzAuMTEuMC4yMDE4MTIwNzEwNDkuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmVfMC45LjAuMjAxODEyMDcxMDQ5LmphciIvPgogICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnBhcHlydXMuZWRpdG9yXzEuMy4wLjIwMTcwMzA4MDg1MS5qYXIiLz4KICAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5wYXB5cnVzLmluZnJhLnVpXzEuMy4wLjIwMTcwMzA4MDg1MS5qYXIiLz4KICAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5wYXB5cnVzLmluZnJhLmNvcmVfMi4xLjEuMjAxNzAzMDgwODUxLmphciIvPgpAQCAtODYsNyArODQsNyBAQAogICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnBhcHlydXMuaW5mcmEuc2VydmljZXMubGFiZWxwcm92aWRlcl8xLjIuMS4yMDE3MDMwODA4NTEuamFyIi8+CiAgICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuamZhY2UudGV4dF8zLjExLjIudjIwMTcwMjIwLTE5MTEuamFyIi8+CiAgICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UudGV4dF8zLjYuMC52MjAxNjA1MDMtMTg0OS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5wYXB5cnVzLm1hcnRlLnN0YXRpYy5wcm9maWxlXzEuMi4zLjIwMTgxMDE3MDExMS5qYXIiLz4KKyAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5wYXB5cnVzLm1hcnRlLnN0YXRpYy5wcm9maWxlXzEuMi4wLjIwMTcwMzA4MTE1My5qYXIiLz4KICAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5hY2NlbGVvLnBhcnNlcl8zLjYuNi4yMDE2MTAwNjA4MzEuamFyIi8+CiAgICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UubTJtLnF2dC5vbWxfMy42LjAudjIwMTYwNjA2LTExNTYuamFyIi8+CiAgICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UubTJtLnF2dC5vbWwuY29tbW9uXzMuNi4wLnYyMDE2MDYwNi0xMTU2LmphciIvPgpAQCAtMTE0LDcgKzExMiw2IEBACiAgICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZ21mLnJ1bnRpbWUuZW1mLmNvbW1hbmRzLmNvcmVfMS43LjAuMjAxNjA2MDcxOTU5LmphciIvPgogICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmdtZi5ydW50aW1lLmdlZi51aV8xLjcuMC4yMDE2MDYwNzE5NTkuamFyIi8+CiAgICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZ21mLnJ1bnRpbWUuZHJhdzJkLnVpXzEuOS4wLjIwMTYwNjA3MTk1OS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5nbWYucnVudGltZS5ub3RhdGlvbl8xLjguMC4yMDE2MDYwNzE2MzEuamFyIi8+CiAgICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZ21mLnJ1bnRpbWUuZGlhZ3JhbS5jb3JlXzEuNy4wLjIwMTYwNjA3MTk1OS5qYXIiLz4KICAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5kZWJ1Zy5jb3JlXzMuMTAuMTAwLnYyMDE2MDQxOS0xNzIwLmphciIvPgogICAgIDwvcGF0aD4KZGlmZiAtLWdpdCBhL3BsdWdpbnMvbW9iaXVzL29yZy5wb2xhcnN5cy5jaGVzcy5tb2JpdXMvdGFza3MvdnVsbmVyYWJsZUNvbXBvbmVudHNUZW1wbGF0ZS54bWwgYi9wbHVnaW5zL21vYml1cy9vcmcucG9sYXJzeXMuY2hlc3MubW9iaXVzL3Rhc2tzL3Z1bG5lcmFibGVDb21wb25lbnRzVGVtcGxhdGUueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3Y2I4MTgyLi4wMDAwMDAwCi0tLSBhL3BsdWdpbnMvbW9iaXVzL29yZy5wb2xhcnN5cy5jaGVzcy5tb2JpdXMvdGFza3MvdnVsbmVyYWJsZUNvbXBvbmVudHNUZW1wbGF0ZS54bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNTQgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxwcm9qZWN0IGRlZmF1bHQ9InZ1bG5lcmFibGVDb21wb25lbnRzVGVtcGxhdGUiIG5hbWU9Im9yZy5wb2xhcnN5cy5jaGVzcy5tb2JpdXMiPgotICAgIDxwcm9wZXJ0eSBuYW1lPSJFQ0xJUFNFX0hPTUUiIHZhbHVlPSIuLi8uLi8uLi8uLi8uLi8uLi9Qcm9ncmFtbWkvUG9sYXJzeXNDSEVTUy1OZW9uLXdpbjMyLXg4Nl82NF8yMDE5MDUxNSIvPgotICAgIDxwcm9wZXJ0eSBuYW1lPSJFQ0xJUFNFX1dPUktTUEFDRSIgdmFsdWU9Ii4uLy4uLy4uLy4uLy4uLy4uL1Byb2dyYW1taS9Qb2xhcnN5c0NIRVNTLU5lb24td2luMzIteDg2XzY0XzIwMTkwNTE1L3J1bnRpbWUtTmV3X2NvbmZpZ3VyYXRpb25fMyIvPgotCi0gICAgPCEtLSBUaGUgY2xhc3NwYXRoIHdpdGggb25seSB0aGUgZGVwZW5kZW5jaWVzIHVzZWQgYnkgdGhlIHByb2plY3QgLS0+Ci0gICAgPHBhdGggaWQ9Im9yZy5wb2xhcnN5cy5jaGVzcy5tb2JpdXMubGlicmFyeWNsYXNzcGF0aCI+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX1dPUktTUEFDRX0vb3JnLnBvbGFyc3lzLmNoZXNzLm1vYml1cy9iaW4iLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vanJlL2xpYi9yZXNvdXJjZXMuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L2pyZS9saWIvcnQuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L2pyZS9saWIvanNzZS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vanJlL2xpYi9qY2UuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L2pyZS9saWIvY2hhcnNldHMuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L2pyZS9saWIvamZyLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9qcmUvbGliL2V4dC9hY2Nlc3MtYnJpZGdlLTY0LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9qcmUvbGliL2V4dC9jbGRyZGF0YS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vanJlL2xpYi9leHQvZG5zbnMuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L2pyZS9saWIvZXh0L2phY2Nlc3MuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L2pyZS9saWIvZXh0L2pmeHJ0LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9qcmUvbGliL2V4dC9sb2NhbGVkYXRhLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9qcmUvbGliL2V4dC9uYXNob3JuLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9qcmUvbGliL2V4dC9zdW5lYy5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vanJlL2xpYi9leHQvc3VuamNlX3Byb3ZpZGVyLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9qcmUvbGliL2V4dC9zdW5tc2NhcGkuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L2pyZS9saWIvZXh0L3N1bnBrY3MxMS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vanJlL2xpYi9leHQvemlwZnMuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UudWlfMy4xMDguMS52MjAxNjA5MjktMTA0NS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5zd3RfMy4xMDUuMy52MjAxNzAyMjgtMDUxMi5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5zd3Qud2luMzIud2luMzIueDg2XzY0XzMuMTA1LjMudjIwMTcwMjI4LTA1MTIuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuamZhY2VfMy4xMi4yLnYyMDE3MDExMy0yMTEzLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmNvcmUuY29tbWFuZHNfMy44LjEudjIwMTYxMjIxLTE2NTEuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UudWkud29ya2JlbmNoXzMuMTA4LjMudjIwMTcwMjE2LTE1MzkuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZTQudWkud29ya2JlbmNoM18wLjEzLjEwMC52MjAxNjA1MDYtMDc1OS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlc18zLjExLjEudjIwMTYxMTA3LTIwMzIuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuYWNjZWxlby5lbmdpbmVfMy42LjYuMjAxNjEwMDYwODMxLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmFjY2VsZW8uY29tbW9uXzMuNi42LjIwMTYxMDA2MDgzMS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5hY2NlbGVvLm1vZGVsXzMuNi42LjIwMTYxMDA2MDgzMS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5lbWYuZWNvcmVfMi4xMi4wLnYyMDE2MDQyMC0wMjQ3LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmVtZi5jb21tb25fMi4xMi4wLnYyMDE2MDQyMC0wMjQ3LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmVtZi5lY29yZS54bWlfMi4xMi4wLnYyMDE2MDQyMC0wMjQ3LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmFjY2VsZW8ucHJvZmlsZXJfMy42LjYuMjAxNjEwMDYwODMxLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLm9jbC5lY29yZV8zLjYuMC52MjAxNjA1MjMtMTkxNC5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5vY2xfMy42LjAudjIwMTYwNTIzLTE5MTQuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvbHBnLnJ1bnRpbWUuamF2YV8yLjAuMTcudjIwMTAwNDI3MTY0MC5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5vY2wuY29tbW9uXzEuNC4wLnYyMDE2MDUyMS0yMDMzLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmVtZi5jb2RlZ2VuLmVjb3JlXzIuMTIuMC52MjAxNjA1MjYtMDM1Ni5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5lbWYuY29kZWdlbl8yLjExLjAudjIwMTYwNTI2LTAzNTYuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UudW1sMi51bWxfNS4yLjMudjIwMTcwMjI3LTA5MzUuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UudW1sMi5jb21tb25fMi4xLjAudjIwMTcwMjI3LTA5MzUuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UudW1sMi50eXBlc18yLjAuMC52MjAxNzAyMjctMDkzNS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5lbWYubWFwcGluZy5lY29yZTJ4bWxfMi45LjAudjIwMTYwNTI2LTAzNTYuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnNlcnZpY2VfMC4xMS4wLjIwMTgxMjA3MTA0OS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZV8wLjkuMC4yMDE4MTIwNzEwNDkuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UucGFweXJ1cy5lZGl0b3JfMS4zLjAuMjAxNzAzMDgwODUxLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnBhcHlydXMuaW5mcmEudWlfMS4zLjAuMjAxNzAzMDgwODUxLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnBhcHlydXMuaW5mcmEuY29yZV8yLjEuMS4yMDE3MDMwODA4NTEuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UucGFweXJ1cy5pbmZyYS50b29sc18yLjAuMS4yMDE3MDMwODA4NTEuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UucGFweXJ1cy5pbmZyYS5jb3JlLmxvZ18xLjIuMC4yMDE3MDMwODA4NTEuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lXzMuMTIuMC52MjAxNjA2MDYtMTM0Mi5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9qYXZheC5pbmplY3RfMS4wLjAudjIwMDkxMDMwLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLm9zZ2lfMy4xMS4zLnYyMDE3MDIwOS0xODQzLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmZ4Lm9zZ2lfMi40LjAuMjAxNjA1MTAwNTA0LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLm9zZ2kuY29tcGF0aWJpbGl0eS5zdGF0ZV8xLjAuMjAwLnYyMDE2MDUwNC0xNDE5LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmVxdWlub3guY29tbW9uXzMuOC4wLnYyMDE2MDUwOS0xMjMwLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmNvcmUuam9ic18zLjguMC52MjAxNjA1MDktMDQxMS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5lcXVpbm94LnJlZ2lzdHJ5XzMuNi4xMDAudjIwMTYwMjIzLTIyMTguamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZXF1aW5veC5wcmVmZXJlbmNlc18zLjYuMS52MjAxNjA4MTUtMTQwNi5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5jb3JlLmNvbnRlbnR0eXBlXzMuNS4xMDAudjIwMTYwNDE4LTE2MjEuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZXF1aW5veC5hcHBfMS4zLjQwMC52MjAxNTA3MTUtMTUyOC5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9jb20uZ29vZ2xlLmd1YXZhXzE1LjAuMC52MjAxNDAzMjgxNDMwLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmNvcmUuZGF0YWJpbmRpbmcub2JzZXJ2YWJsZV8xLjYuMC52MjAxNjA1MTEtMTc0Ny5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5wYXB5cnVzLmluZnJhLmNvcmUuc2FzaHdpbmRvd3MuZGlfMS4yLjAuMjAxNzAzMDgwODUxLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmVtZi50cmFuc2FjdGlvbl8xLjkuMC4yMDE2MDYwNzE5MDAuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZW1mLmVkaXRfMi4xMi4wLnYyMDE2MDUyNi0wMzU2LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmVtZi5lY29yZS5jaGFuZ2VfMi4xMS4wLnYyMDE2MDQyMC0wMjQ3LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmVtZi52YWxpZGF0aW9uXzEuOC4wLjIwMTYwNjA3MTcxMy5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5jb3JlLmV4cHJlc3Npb25zXzMuNS4xMDAudjIwMTYwNDE4LTE2MjEuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UudWkuaWRlXzMuMTIuMy52MjAxNzAxMTktMDkzNS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5wYXB5cnVzLmluZnJhLmNvcmUuc2FzaGVkaXRvci5kaV8yLjAuMC4yMDE3MDMwODA4NTEuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UucGFweXJ1cy5pbmZyYS5jb3JlLnNhc2hlZGl0b3JfMi4wLjAuMjAxNzAzMDgwODUxLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnBhcHlydXMuaW5mcmEud2lkZ2V0c18yLjAuMS4yMDE3MDMwODA4NTEuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuY29yZS5kYXRhYmluZGluZ18xLjYuMC52MjAxNjA0MTItMDkxMC5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS51aS52aWV3cy5wcm9wZXJ0aWVzLnRhYmJlZF8zLjcuMC52MjAxNjAzMTAtMDkwMy5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS51aS5mb3Jtc18zLjcuMS52MjAxNjEyMjAtMTYzNS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS51aS52aWV3c18zLjguMTAyLnYyMDE3MDExMS0wODAxLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnBhcHlydXMuaW5mcmEuc2VydmljZXMubGFiZWxwcm92aWRlcl8xLjIuMS4yMDE3MDMwODA4NTEuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuamZhY2UudGV4dF8zLjExLjIudjIwMTcwMjIwLTE5MTEuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UudGV4dF8zLjYuMC52MjAxNjA1MDMtMTg0OS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5wYXB5cnVzLm1hcnRlLnN0YXRpYy5wcm9maWxlXzEuMi4zLjIwMTgxMDE3MDExMS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5hY2NlbGVvLnBhcnNlcl8zLjYuNi4yMDE2MTAwNjA4MzEuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UubTJtLnF2dC5vbWxfMy42LjAudjIwMTYwNjA2LTExNTYuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UubTJtLnF2dC5vbWwuY29tbW9uXzMuNi4wLnYyMDE2MDYwNi0xMTU2LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLm0ybS5xdnQub21sLmVtZi51dGlsXzMuNi4wLnYyMDE2MDYwNi0xMTU2LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLm0ybS5xdnQub21sLmNzdC5wYXJzZXJfMy42LjAudjIwMTYwNjA2LTExNTYuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UubTJtLnF2dC5vbWwuZWNvcmUuaW1wZXJhdGl2ZW9jbF8zLjQuMC52MjAxNjA2MDYtMTE1Ni5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5tMm0ucXZ0Lm9tbC5wcm9qZWN0XzMuNi4wLnYyMDE2MDYwNi0xMTU2LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLm0ybS5xdnQub21sLnJ1bnRpbWVfMy42LjAudjIwMTYwNjA2LTExNTYuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZ21mLnJ1bnRpbWUuZGlhZ3JhbS51aV8xLjguMC4yMDE2MDYwNzE5NTkuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZ2VmXzMuMTEuMC4yMDE2MDYwNjEzMDguamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZHJhdzJkXzMuMTAuMTAwLjIwMTYwNjA2MTMwOC5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5nbWYucnVudGltZS5lbWYuY29yZV8xLjcuMC4yMDE2MDYwNzE5NTkuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZ21mLnJ1bnRpbWUuY29tbW9uLmNvcmVfMS43LjAuMjAxNjA2MDcxOTU5LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmVtZi53b3Jrc3BhY2VfMS41LjEuMjAxNjA2MDcxOTAwLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmdtZi5ydW50aW1lLmVtZi5jbGlwYm9hcmQuY29yZV8xLjcuMC4yMDE2MDYwNzE5NTkuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZ21mLnJ1bnRpbWUuZW1mLnVpXzEuNy4wLjIwMTYwNjA3MTk1OS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5nbWYucnVudGltZS5jb21tb24udWkuYWN0aW9uXzEuNy4wLjIwMTYwNjA3MTk1OS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5nbWYucnVudGltZS5jb21tb24udWkuc2VydmljZXMuYWN0aW9uXzEuNy4wLjIwMTYwNjA3MTk1OS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5nbWYucnVudGltZS5jb21tb24udWkuc2VydmljZXNfMS45LjAuMjAxNjA2MDcxOTU5LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmdtZi5ydW50aW1lLmNvbW1vbi51aV8xLjguMS4yMDE2MDYwNzE5NTkuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UudWkuY29uc29sZV8zLjYuMjAxLnYyMDE2MTEwNy0wMzM3LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnVpLndvcmtiZW5jaC50ZXh0ZWRpdG9yXzMuMTAuMS52MjAxNjA4MTgtMTYyNi5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS50ZWFtLmNvcmVfMy44LjAudjIwMTYwNDE4LTE1MzQuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZ21mLnJ1bnRpbWUuZW1mLnR5cGUuY29yZV8xLjkuMC4yMDE2MDYwNzE5NTkuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZ21mLnJ1bnRpbWUuZW1mLmNvbW1hbmRzLmNvcmVfMS43LjAuMjAxNjA2MDcxOTU5LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmdtZi5ydW50aW1lLmdlZi51aV8xLjcuMC4yMDE2MDYwNzE5NTkuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZ21mLnJ1bnRpbWUuZHJhdzJkLnVpXzEuOS4wLjIwMTYwNjA3MTk1OS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5nbWYucnVudGltZS5ub3RhdGlvbl8xLjguMC4yMDE2MDYwNzE2MzEuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZ21mLnJ1bnRpbWUuZGlhZ3JhbS5jb3JlXzEuNy4wLjIwMTYwNjA3MTk1OS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5kZWJ1Zy5jb3JlXzMuMTAuMTAwLnYyMDE2MDQxOS0xNzIwLmphciIvPgotICAgIDwvcGF0aD4KLQotICAgIDxwYXRoIGlkPSJvcmcucG9sYXJzeXMuY2hlc3MubW9iaXVzLmNsYXNzcGF0aCI+Ci0gICAgICAgIDxwYXRoIHJlZmlkPSJvcmcucG9sYXJzeXMuY2hlc3MubW9iaXVzLmxpYnJhcnljbGFzc3BhdGgiLz4KLSAgICA8L3BhdGg+Ci0KLSAgICA8IS0tIFRoZSBjbGFzc3BhdGggd2l0aCBvbmx5IHRoZSBqYXJzIGF2YWlsYWJsZSBpbiB0aGUgcGx1Z2luIGZvbGRlciBvZiBFY2xpcHNlIC0tPgotICAgIDxwYXRoIGlkPSJvcmcucG9sYXJzeXMuY2hlc3MubW9iaXVzLmxpYnJhcnljbGFzc3BhdGguYWxsamFycyI+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iLi4vb3JnLnBvbGFyc3lzLmNoZXNzLm1vYml1cy9iaW4iLz4KLSAgICAgICAgPGZpbGVzZXQgZGlyPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy8iIGluY2x1ZGVzPSIqLmphciIvPgotICAgIDwvcGF0aD4KLQotICAgIDxwYXRoIGlkPSJvcmcucG9sYXJzeXMuY2hlc3MubW9iaXVzLmNsYXNzcGF0aC5hbGxqYXJzIj4KLSAgICAgICAgPHBhdGggcmVmaWQ9Im9yZy5wb2xhcnN5cy5jaGVzcy5tb2JpdXMubGlicmFyeWNsYXNzcGF0aC5hbGxqYXJzIi8+Ci0gICAgPC9wYXRoPgotCi0gICAgPCEtLSBUaGUgZGVmYXVsdCB0YXNrIHdpdGggdGhlIGphcnMgdXNlZCBieSB0aGlzIHByb2plY3QgLS0+Ci0gICAgPHRhcmdldCBuYW1lPSJ2dWxuZXJhYmxlQ29tcG9uZW50c1RlbXBsYXRlIj4KLSAgICAgICAgPGphdmEgY2xhc3NuYW1lPSJvcmcucG9sYXJzeXMuY2hlc3MubW9iaXVzLnRlbXBsYXRlcy5WdWxuZXJhYmxlQ29tcG9uZW50c1RlbXBsYXRlIiBjbGFzc3BhdGhyZWY9Im9yZy5wb2xhcnN5cy5jaGVzcy5tb2JpdXMuY2xhc3NwYXRoIj4KLSAgICAgICAgICAgIDxhcmcgdmFsdWU9IiR7bW9kZWx9Ii8+Ci0gICAgICAgICAgICA8YXJnIHZhbHVlPSIke3RhcmdldH0iLz4KLSAgICAgICAgPC9qYXZhPgotICAgIDwvdGFyZ2V0PgotCi0gICAgPCEtLQotICAgICAgICBJbiBjYXNlIG9mIHByb2JsZW0geW91IGNhbiBhbHNvIHRyeSB3aXRoIGFsbCB0aGUgamFyIGF2YWlsYWJsZSBpbiB5b3VyIEVjbGlwc2UKLSAgICAgICAgS2VlcCBpbiBtaW5kIHRoYXQgaGF2aW5nIHR3byB2ZXJzaW9ucyBvZiB0aGUgc2FtZSBqYXIgY2FuIGNyZWF0ZSBwcm9ibGVtcwotICAgIC0tPgotICAgIDx0YXJnZXQgbmFtZT0idnVsbmVyYWJsZUNvbXBvbmVudHNUZW1wbGF0ZS5hbGxqYXJzIj4KLSAgICAgICAgPGphdmEgY2xhc3NuYW1lPSJvcmcucG9sYXJzeXMuY2hlc3MubW9iaXVzLnRlbXBsYXRlcy5WdWxuZXJhYmxlQ29tcG9uZW50c1RlbXBsYXRlIiBjbGFzc3BhdGhyZWY9Im9yZy5wb2xhcnN5cy5jaGVzcy5tb2JpdXMuY2xhc3NwYXRoIj4KLSAgICAgICAgICAgIDxhcmcgdmFsdWU9IiR7bW9kZWx9Ii8+Ci0gICAgICAgICAgICA8YXJnIHZhbHVlPSIke3RhcmdldH0iLz4KLSAgICAgICAgPC9qYXZhPgotICAgIDwvdGFyZ2V0PgotPC9wcm9qZWN0PgpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9tb2JpdXMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vYml1cy90YXNrcy92dWxuZXJhYmxlQ29tcG9uZW50c1RlbXBsYXRlVGFyZ2V0LnhtbCBiL3BsdWdpbnMvbW9iaXVzL29yZy5wb2xhcnN5cy5jaGVzcy5tb2JpdXMvdGFza3MvdnVsbmVyYWJsZUNvbXBvbmVudHNUZW1wbGF0ZVRhcmdldC54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVlYzg0NWEuLjAwMDAwMDAKLS0tIGEvcGx1Z2lucy9tb2JpdXMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vYml1cy90YXNrcy92dWxuZXJhYmxlQ29tcG9uZW50c1RlbXBsYXRlVGFyZ2V0LnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci0KLTwhLS0gUGxhY2UgdGhpcyBmaWxlIGluIHRoZSB0YXJnZXQgcHJvamVjdCBhbmQgY2FsbCBpdCB3aXRoICJFeHRlcm5hbCBUb29scyA+IFJ1biBBcyA+IEFudCBCdWlsZCIgLS0+Ci08IS0tIFlvdSBoYXZlIHRvIGNoYW5nZSB0aGUgTU9ERUwgYW5kIHRoZSBUQVJHRVQgdmFsdWVzIC0tPgotCi08cHJvamVjdCBiYXNlZGlyPSIuIiBkZWZhdWx0PSJ2dWxuZXJhYmxlQ29tcG9uZW50c1RlbXBsYXRlU2FtcGxlIiBuYW1lPSJvcmcucG9sYXJzeXMuY2hlc3MubW9iaXVzU2FtcGxlIj4KLQk8aW1wb3J0IGZpbGU9Ii4uLy4uL29yZy5wb2xhcnN5cy5jaGVzcy5tb2JpdXMvdGFza3MvdnVsbmVyYWJsZUNvbXBvbmVudHNUZW1wbGF0ZS54bWwiLz4KLQotICAgIDwhLS0gQ2hhbmdlIHRoZSB2YWx1ZXMgb2YgTU9ERUwgYW5kIFRBUkdFVCB0byBwb2ludCB0byB5b3VyIG1vZGVsIGFuZCBvdXRwdXQgZm9sZGVyIC0tPgotCTxwcm9wZXJ0eSBuYW1lPSJNT0RFTCIgdmFsdWU9IiR7YmFzZWRpcn0vbW9kZWwvZmlsZS54bWkiLz4KLQk8cHJvcGVydHkgbmFtZT0iVEFSR0VUIiB2YWx1ZT0iJHtiYXNlZGlyfS9zcmMtZ2VuIi8+Ci0KLQk8dGFyZ2V0IG5hbWU9InZ1bG5lcmFibGVDb21wb25lbnRzVGVtcGxhdGVTYW1wbGUiIGRlc2NyaXB0aW9uPSJHZW5lcmF0ZSBmaWxlcyBpbiAnVEFSR0VUJyI+Ci0JCTxhbnRjYWxsIHRhcmdldD0idnVsbmVyYWJsZUNvbXBvbmVudHNUZW1wbGF0ZSIgPgotCQkJPHBhcmFtIG5hbWU9Im1vZGVsIiB2YWx1ZT0iJHtNT0RFTH0iLz4KLQkJCTxwYXJhbSBuYW1lPSJ0YXJnZXQiIHZhbHVlPSIke1RBUkdFVH0iLz4KLQkJPC9hbnRjYWxsPgotCTwvdGFyZ2V0PgotPC9wcm9qZWN0PgpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuT1NTSW1wb3J0ZXIvYWJvdXQuaHRtbCBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLk9TU0ltcG9ydGVyL2Fib3V0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTY0Zjc4MQotLS0gL2Rldi9udWxsCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLk9TU0ltcG9ydGVyL2Fib3V0Lmh0bWwKQEAgLTAsMCArMSwzNiBAQAorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgU3RyaWN0Ly9FTiIKKyAgICAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+Cis8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiIC8+Cis8dGl0bGU+QWJvdXQ8L3RpdGxlPgorPC9oZWFkPgorPGJvZHkgbGFuZz0iRU4tVVMiPgorCTxoMj5BYm91dCBUaGlzIENvbnRlbnQ8L2gyPgorCisJPHA+Tm92ZW1iZXIgMzAsIDIwMTc8L3A+CisJPGgzPkxpY2Vuc2U8L2gzPgorCisJPHA+CisJCVRoZSBFY2xpcHNlIEZvdW5kYXRpb24gbWFrZXMgYXZhaWxhYmxlIGFsbCBjb250ZW50IGluIHRoaXMgcGx1Zy1pbgorCQkoJnF1b3Q7Q29udGVudCZxdW90OykuIFVubGVzcyBvdGhlcndpc2UgaW5kaWNhdGVkIGJlbG93LCB0aGUgQ29udGVudAorCQlpcyBwcm92aWRlZCB0byB5b3UgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFY2xpcHNlCisJCVB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMi4wICgmcXVvdDtFUEwmcXVvdDspLiBBIGNvcHkgb2YgdGhlIEVQTCBpcworCQlhdmFpbGFibGUgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjA8L2E+LgorCQlGb3IgcHVycG9zZXMgb2YgdGhlIEVQTCwgJnF1b3Q7UHJvZ3JhbSZxdW90OyB3aWxsIG1lYW4gdGhlIENvbnRlbnQuCisJPC9wPgorCisJPHA+CisJCUlmIHlvdSBkaWQgbm90IHJlY2VpdmUgdGhpcyBDb250ZW50IGRpcmVjdGx5IGZyb20gdGhlIEVjbGlwc2UKKwkJRm91bmRhdGlvbiwgdGhlIENvbnRlbnQgaXMgYmVpbmcgcmVkaXN0cmlidXRlZCBieSBhbm90aGVyIHBhcnR5CisJCSgmcXVvdDtSZWRpc3RyaWJ1dG9yJnF1b3Q7KSBhbmQgZGlmZmVyZW50IHRlcm1zIGFuZCBjb25kaXRpb25zIG1heQorCQlhcHBseSB0byB5b3VyIHVzZSBvZiBhbnkgb2JqZWN0IGNvZGUgaW4gdGhlIENvbnRlbnQuIENoZWNrIHRoZQorCQlSZWRpc3RyaWJ1dG9yJ3MgbGljZW5zZSB0aGF0IHdhcyBwcm92aWRlZCB3aXRoIHRoZSBDb250ZW50LiBJZiBubyBzdWNoCisJCWxpY2Vuc2UgZXhpc3RzLCBjb250YWN0IHRoZSBSZWRpc3RyaWJ1dG9yLiBVbmxlc3Mgb3RoZXJ3aXNlIGluZGljYXRlZAorCQliZWxvdywgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFUEwgc3RpbGwgYXBwbHkgdG8gYW55IHNvdXJjZQorCQljb2RlIGluIHRoZSBDb250ZW50IGFuZCBzdWNoIHNvdXJjZSBjb2RlIG1heSBiZSBvYnRhaW5lZCBhdCA8YQorCQkJaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy8iPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmc8L2E+LgorCTwvcD4KKworPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLk9TU0ltcG9ydGVyL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvT1NTSW1wb3J0ZXIvY29tbWFuZHMvSW1wb3J0T1NTRmlsZUNvbW1hbmQuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLk9TU0ltcG9ydGVyL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvT1NTSW1wb3J0ZXIvY29tbWFuZHMvSW1wb3J0T1NTRmlsZUNvbW1hbmQuamF2YQppbmRleCBjYzZmN2YxLi5lNjBkYWZmIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5PU1NJbXBvcnRlci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL09TU0ltcG9ydGVyL2NvbW1hbmRzL0ltcG9ydE9TU0ZpbGVDb21tYW5kLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuT1NTSW1wb3J0ZXIvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9PU1NJbXBvcnRlci9jb21tYW5kcy9JbXBvcnRPU1NGaWxlQ29tbWFuZC5qYXZhCkBAIC0xLDkgKzEsOSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqIENvcHlyaWdodCAoQykgMjAxOCBGb25kYXppb25lIEJydW5vIEtlc3NsZXIuCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICogIAogICogQ29udHJpYnV0b3JzOgogICogICAgIEx1Y2EgQ3Jpc3RvZm9yZXR0aSAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuT1NTSW1wb3J0ZXIvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9PU1NJbXBvcnRlci9jb3JlL2FjdGlvbnMvSW1wb3J0T1NTRmlsZUFjdGlvbi5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuT1NTSW1wb3J0ZXIvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9PU1NJbXBvcnRlci9jb3JlL2FjdGlvbnMvSW1wb3J0T1NTRmlsZUFjdGlvbi5qYXZhCmluZGV4IGVjZDE1YjcuLmE2ZmE2MjEgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLk9TU0ltcG9ydGVyL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvT1NTSW1wb3J0ZXIvY29yZS9hY3Rpb25zL0ltcG9ydE9TU0ZpbGVBY3Rpb24uamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5PU1NJbXBvcnRlci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL09TU0ltcG9ydGVyL2NvcmUvYWN0aW9ucy9JbXBvcnRPU1NGaWxlQWN0aW9uLmphdmEKQEAgLTEsOSArMSw5IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICogQ29weXJpZ2h0IChDKSAyMDE4IEZvbmRhemlvbmUgQnJ1bm8gS2Vzc2xlci4KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgKiAgCiAgKiBDb250cmlidXRvcnM6CiAgKiAgICAgTHVjYSBDcmlzdG9mb3JldHRpIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5PU1NJbXBvcnRlci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL09TU0ltcG9ydGVyL2NvcmUvZXhjZXB0aW9ucy9JbXBvcnRFeGNlcHRpb24uamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLk9TU0ltcG9ydGVyL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvT1NTSW1wb3J0ZXIvY29yZS9leGNlcHRpb25zL0ltcG9ydEV4Y2VwdGlvbi5qYXZhCmluZGV4IGM4MTUxMzUuLjcyZjcwMzAgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLk9TU0ltcG9ydGVyL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvT1NTSW1wb3J0ZXIvY29yZS9leGNlcHRpb25zL0ltcG9ydEV4Y2VwdGlvbi5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLk9TU0ltcG9ydGVyL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvT1NTSW1wb3J0ZXIvY29yZS9leGNlcHRpb25zL0ltcG9ydEV4Y2VwdGlvbi5qYXZhCkBAIC0xLDkgKzEsOSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqIENvcHlyaWdodCAoQykgMjAxOCBGb25kYXppb25lIEJydW5vIEtlc3NsZXIuCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICogIAogICogQ29udHJpYnV0b3JzOgogICogICAgIEx1Y2EgQ3Jpc3RvZm9yZXR0aSAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuT1NTSW1wb3J0ZXIvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9PU1NJbXBvcnRlci9jb3JlL3V0aWxzL0NoZXNzRWxlbWVudHNVdGlsLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5PU1NJbXBvcnRlci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL09TU0ltcG9ydGVyL2NvcmUvdXRpbHMvQ2hlc3NFbGVtZW50c1V0aWwuamF2YQppbmRleCA5YzQwZjIzLi43YmI2OGVkIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5PU1NJbXBvcnRlci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL09TU0ltcG9ydGVyL2NvcmUvdXRpbHMvQ2hlc3NFbGVtZW50c1V0aWwuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5PU1NJbXBvcnRlci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL09TU0ltcG9ydGVyL2NvcmUvdXRpbHMvQ2hlc3NFbGVtZW50c1V0aWwuamF2YQpAQCAtMSw5ICsxLDkgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogQ29weXJpZ2h0IChDKSAyMDE4IEZvbmRhemlvbmUgQnJ1bm8gS2Vzc2xlci4NCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICogIA0KICAqIENvbnRyaWJ1dG9yczoNCiAgKiAgIEFsYmVydG8gRGViaWFzaSAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbg0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLk9TU0ltcG9ydGVyL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvT1NTSW1wb3J0ZXIvY29yZS91dGlscy9Pc3NUeXBlVHJhbnNsYXRvci5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuT1NTSW1wb3J0ZXIvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9PU1NJbXBvcnRlci9jb3JlL3V0aWxzL09zc1R5cGVUcmFuc2xhdG9yLmphdmEKaW5kZXggYjgwYWFhMS4uZGU1MzQ4YiAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuT1NTSW1wb3J0ZXIvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9PU1NJbXBvcnRlci9jb3JlL3V0aWxzL09zc1R5cGVUcmFuc2xhdG9yLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuT1NTSW1wb3J0ZXIvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9PU1NJbXBvcnRlci9jb3JlL3V0aWxzL09zc1R5cGVUcmFuc2xhdG9yLmphdmEKQEAgLTEsOSArMSw5IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIENvcHlyaWdodCAoQykgMjAxOCBGb25kYXppb25lIEJydW5vIEtlc3NsZXIuDQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqICANCiAgKiBDb250cmlidXRvcnM6DQogICogICBBbGJlcnRvIERlYmlhc2kgLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5PU1NJbXBvcnRlci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL09TU0ltcG9ydGVyL2NvcmUvdXRpbHMvU3RlcmVvdHlwZVV0aWwuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLk9TU0ltcG9ydGVyL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvT1NTSW1wb3J0ZXIvY29yZS91dGlscy9TdGVyZW90eXBlVXRpbC5qYXZhCmluZGV4IDNjZjIyOWUuLmJlZDYxZGIgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLk9TU0ltcG9ydGVyL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvT1NTSW1wb3J0ZXIvY29yZS91dGlscy9TdGVyZW90eXBlVXRpbC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLk9TU0ltcG9ydGVyL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvT1NTSW1wb3J0ZXIvY29yZS91dGlscy9TdGVyZW90eXBlVXRpbC5qYXZhCkBAIC0xLDkgKzEsOSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTggRm9uZGF6aW9uZSBCcnVubyBLZXNzbGVyLg0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKiAgDQogICogQ29udHJpYnV0b3JzOg0KICAqICAgQWxiZXJ0byBEZWJpYXNpIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2RvL2Fib3V0Lmh0bWwgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jZG8vYWJvdXQuaHRtbAppbmRleCBkZDNjMDg5Li4xNjRmNzgxIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jZG8vYWJvdXQuaHRtbAorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jZG8vYWJvdXQuaHRtbApAQCAtMiwyNyArMiwzNSBAQAogICAgICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS1zdHJpY3QuZHRkIj4KIDxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KIDxoZWFkPgotPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMSIvPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMSIgLz4KIDx0aXRsZT5BYm91dDwvdGl0bGU+CiA8L2hlYWQ+CiA8Ym9keSBsYW5nPSJFTi1VUyI+Ci08aDI+QWJvdXQgVGhpcyBDb250ZW50PC9oMj4KLSAKLTxwPk5vdmVtYmVyIDE0LCAyMDA4PC9wPgkKLTxoMz5MaWNlbnNlPC9oMz4KKwk8aDI+QWJvdXQgVGhpcyBDb250ZW50PC9oMj4KIAotPHA+VGhlIEVjbGlwc2UgRm91bmRhdGlvbiBtYWtlcyBhdmFpbGFibGUgYWxsIGNvbnRlbnQgaW4gdGhpcyBwbHVnLWluICgmcXVvdDtDb250ZW50JnF1b3Q7KS4gIFVubGVzcyBvdGhlcndpc2UgCi1pbmRpY2F0ZWQgYmVsb3csIHRoZSBDb250ZW50IGlzIHByb3ZpZGVkIHRvIHlvdSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlCi1FY2xpcHNlIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMS4wICgmcXVvdDtFUEwmcXVvdDspLiAgQSBjb3B5IG9mIHRoZSBFUEwgaXMgYXZhaWxhYmxlIAotYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwiPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sPC9hPi4KLUZvciBwdXJwb3NlcyBvZiB0aGUgRVBMLCAmcXVvdDtQcm9ncmFtJnF1b3Q7IHdpbGwgbWVhbiB0aGUgQ29udGVudC48L3A+CisJPHA+Tm92ZW1iZXIgMzAsIDIwMTc8L3A+CisJPGgzPkxpY2Vuc2U8L2gzPgogCi08cD5JZiB5b3UgZGlkIG5vdCByZWNlaXZlIHRoaXMgQ29udGVudCBkaXJlY3RseSBmcm9tIHRoZSBFY2xpcHNlIEZvdW5kYXRpb24sIHRoZSBDb250ZW50IGlzIAotYmVpbmcgcmVkaXN0cmlidXRlZCBieSBhbm90aGVyIHBhcnR5ICgmcXVvdDtSZWRpc3RyaWJ1dG9yJnF1b3Q7KSBhbmQgZGlmZmVyZW50IHRlcm1zIGFuZCBjb25kaXRpb25zIG1heQotYXBwbHkgdG8geW91ciB1c2Ugb2YgYW55IG9iamVjdCBjb2RlIGluIHRoZSBDb250ZW50LiAgQ2hlY2sgdGhlIFJlZGlzdHJpYnV0b3IncyBsaWNlbnNlIHRoYXQgd2FzIAotcHJvdmlkZWQgd2l0aCB0aGUgQ29udGVudC4gIElmIG5vIHN1Y2ggbGljZW5zZSBleGlzdHMsIGNvbnRhY3QgdGhlIFJlZGlzdHJpYnV0b3IuICBVbmxlc3Mgb3RoZXJ3aXNlCi1pbmRpY2F0ZWQgYmVsb3csIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRVBMIHN0aWxsIGFwcGx5IHRvIGFueSBzb3VyY2UgY29kZSBpbiB0aGUgQ29udGVudAotYW5kIHN1Y2ggc291cmNlIGNvZGUgbWF5IGJlIG9idGFpbmVkIGF0IDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmciPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmc8L2E+LjwvcD4KKwk8cD4KKwkJVGhlIEVjbGlwc2UgRm91bmRhdGlvbiBtYWtlcyBhdmFpbGFibGUgYWxsIGNvbnRlbnQgaW4gdGhpcyBwbHVnLWluCisJCSgmcXVvdDtDb250ZW50JnF1b3Q7KS4gVW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQgYmVsb3csIHRoZSBDb250ZW50CisJCWlzIHByb3ZpZGVkIHRvIHlvdSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVjbGlwc2UKKwkJUHVibGljIExpY2Vuc2UgVmVyc2lvbiAyLjAgKCZxdW90O0VQTCZxdW90OykuIEEgY29weSBvZiB0aGUgRVBMIGlzCisJCWF2YWlsYWJsZSBhdCA8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAiPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMDwvYT4uCisJCUZvciBwdXJwb3NlcyBvZiB0aGUgRVBMLCAmcXVvdDtQcm9ncmFtJnF1b3Q7IHdpbGwgbWVhbiB0aGUgQ29udGVudC4KKwk8L3A+CisKKwk8cD4KKwkJSWYgeW91IGRpZCBub3QgcmVjZWl2ZSB0aGlzIENvbnRlbnQgZGlyZWN0bHkgZnJvbSB0aGUgRWNsaXBzZQorCQlGb3VuZGF0aW9uLCB0aGUgQ29udGVudCBpcyBiZWluZyByZWRpc3RyaWJ1dGVkIGJ5IGFub3RoZXIgcGFydHkKKwkJKCZxdW90O1JlZGlzdHJpYnV0b3ImcXVvdDspIGFuZCBkaWZmZXJlbnQgdGVybXMgYW5kIGNvbmRpdGlvbnMgbWF5CisJCWFwcGx5IHRvIHlvdXIgdXNlIG9mIGFueSBvYmplY3QgY29kZSBpbiB0aGUgQ29udGVudC4gQ2hlY2sgdGhlCisJCVJlZGlzdHJpYnV0b3IncyBsaWNlbnNlIHRoYXQgd2FzIHByb3ZpZGVkIHdpdGggdGhlIENvbnRlbnQuIElmIG5vIHN1Y2gKKwkJbGljZW5zZSBleGlzdHMsIGNvbnRhY3QgdGhlIFJlZGlzdHJpYnV0b3IuIFVubGVzcyBvdGhlcndpc2UgaW5kaWNhdGVkCisJCWJlbG93LCB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVQTCBzdGlsbCBhcHBseSB0byBhbnkgc291cmNlCisJCWNvZGUgaW4gdGhlIENvbnRlbnQgYW5kIHN1Y2ggc291cmNlIGNvZGUgbWF5IGJlIG9idGFpbmVkIGF0IDxhCisJCQlocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnLyI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZzwvYT4uCisJPC9wPgogCiA8L2JvZHk+CiA8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2RvL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2RvL0FjdGl2YXRvci5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2RvL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2RvL0FjdGl2YXRvci5qYXZhCmluZGV4IDg0M2VlOTQuLjYyM2I1YTUgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNkby9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2Nkby9BY3RpdmF0b3IuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jZG8vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jZG8vQWN0aXZhdG9yLmphdmEKQEAgLTEsNTQgKzEsNjEgQEAKLXBhY2thZ2Ugb3JnLnBvbGFyc3lzLmNoZXNzLmNkbzsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuaW5mcmEuY29yZS5sb2cuTG9nSGVscGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLnBsdWdpbi5BYnN0cmFjdFVJUGx1Z2luOwotaW1wb3J0IG9yZy5vc2dpLmZyYW1ld29yay5CdW5kbGVDb250ZXh0OwotCi0vKioKLSAqIFRoZSBhY3RpdmF0b3IgY2xhc3MgY29udHJvbHMgdGhlIHBsdWctaW4gbGlmZSBjeWNsZQotICovCi1wdWJsaWMgY2xhc3MgQWN0aXZhdG9yIGV4dGVuZHMgQWJzdHJhY3RVSVBsdWdpbiB7Ci0KLQkvLyBUaGUgcGx1Zy1pbiBJRAotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFBMVUdJTl9JRCA9ICJvcmcucG9sYXJzeXMuY2hlc3MuY2RvIjsgLy8kTk9OLU5MUy0xJAotCi0JLy8gVGhlIHNoYXJlZCBpbnN0YW5jZQotCXByaXZhdGUgc3RhdGljIEFjdGl2YXRvciBwbHVnaW47Ci0KLQkvKiogTG9nZ2luZyBoZWxwZXIgKi8KLQlwdWJsaWMgc3RhdGljIExvZ0hlbHBlciBsb2cgPSBuZXcgTG9nSGVscGVyKCk7Ci0KLQkvKioKLQkgKiBUaGUgY29uc3RydWN0b3IKLQkgKi8KLQlwdWJsaWMgQWN0aXZhdG9yKCkgewotCQlzdXBlcigpOwotCX0KLQotCUBPdmVycmlkZQotCXB1YmxpYyB2b2lkIHN0YXJ0KEJ1bmRsZUNvbnRleHQgY29udGV4dCkgdGhyb3dzIEV4Y2VwdGlvbiB7Ci0JCXN1cGVyLnN0YXJ0KGNvbnRleHQpOwotCQlwbHVnaW4gPSB0aGlzOwotCi0JCS8vIHJlZ2lzdGVyIHRoZSBsb2cgaGVscGVyCi0JCWxvZy5zZXRQbHVnaW4ocGx1Z2luKTsKLQotCX0KLQotCUBPdmVycmlkZQotCXB1YmxpYyB2b2lkIHN0b3AoQnVuZGxlQ29udGV4dCBjb250ZXh0KSB0aHJvd3MgRXhjZXB0aW9uIHsKLQkJbG9nID0gbnVsbDsKLQkJcGx1Z2luID0gbnVsbDsKLQkJc3VwZXIuc3RvcChjb250ZXh0KTsKLQl9Ci0KLQkvKioKLQkgKiBSZXR1cm5zIHRoZSBzaGFyZWQgaW5zdGFuY2UKLQkgKgotCSAqIEByZXR1cm4gdGhlIHNoYXJlZCBpbnN0YW5jZQotCSAqLwotCXB1YmxpYyBzdGF0aWMgQWN0aXZhdG9yIGdldERlZmF1bHQoKSB7Ci0JCXJldHVybiBwbHVnaW47Ci0JfQotCi19CisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqIENvcHlyaWdodCAoQykgMjAyMCANCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQorICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorcGFja2FnZSBvcmcucG9sYXJzeXMuY2hlc3MuY2RvOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLmluZnJhLmNvcmUubG9nLkxvZ0hlbHBlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UudWkucGx1Z2luLkFic3RyYWN0VUlQbHVnaW47DQoraW1wb3J0IG9yZy5vc2dpLmZyYW1ld29yay5CdW5kbGVDb250ZXh0Ow0KKw0KKy8qKg0KKyAqIFRoZSBhY3RpdmF0b3IgY2xhc3MgY29udHJvbHMgdGhlIHBsdWctaW4gbGlmZSBjeWNsZQ0KKyAqLw0KK3B1YmxpYyBjbGFzcyBBY3RpdmF0b3IgZXh0ZW5kcyBBYnN0cmFjdFVJUGx1Z2luIHsNCisNCisJLy8gVGhlIHBsdWctaW4gSUQNCisJcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUExVR0lOX0lEID0gIm9yZy5wb2xhcnN5cy5jaGVzcy5jZG8iOyAvLyROT04tTkxTLTEkDQorDQorCS8vIFRoZSBzaGFyZWQgaW5zdGFuY2UNCisJcHJpdmF0ZSBzdGF0aWMgQWN0aXZhdG9yIHBsdWdpbjsNCisNCisJLyoqIExvZ2dpbmcgaGVscGVyICovDQorCXB1YmxpYyBzdGF0aWMgTG9nSGVscGVyIGxvZyA9IG5ldyBMb2dIZWxwZXIoKTsNCisNCisJLyoqDQorCSAqIFRoZSBjb25zdHJ1Y3Rvcg0KKwkgKi8NCisJcHVibGljIEFjdGl2YXRvcigpIHsNCisJCXN1cGVyKCk7DQorCX0NCisNCisJQE92ZXJyaWRlDQorCXB1YmxpYyB2b2lkIHN0YXJ0KEJ1bmRsZUNvbnRleHQgY29udGV4dCkgdGhyb3dzIEV4Y2VwdGlvbiB7DQorCQlzdXBlci5zdGFydChjb250ZXh0KTsNCisJCXBsdWdpbiA9IHRoaXM7DQorDQorCQkvLyByZWdpc3RlciB0aGUgbG9nIGhlbHBlcg0KKwkJbG9nLnNldFBsdWdpbihwbHVnaW4pOw0KKw0KKwl9DQorDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgdm9pZCBzdG9wKEJ1bmRsZUNvbnRleHQgY29udGV4dCkgdGhyb3dzIEV4Y2VwdGlvbiB7DQorCQlsb2cgPSBudWxsOw0KKwkJcGx1Z2luID0gbnVsbDsNCisJCXN1cGVyLnN0b3AoY29udGV4dCk7DQorCX0NCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIHNoYXJlZCBpbnN0YW5jZQ0KKwkgKg0KKwkgKiBAcmV0dXJuIHRoZSBzaGFyZWQgaW5zdGFuY2UNCisJICovDQorCXB1YmxpYyBzdGF0aWMgQWN0aXZhdG9yIGdldERlZmF1bHQoKSB7DQorCQlyZXR1cm4gcGx1Z2luOw0KKwl9DQorDQorfQ0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNkby9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2Nkby9kaWFsb2dzL0NET0V4cG9ydERpYWxvZy5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2RvL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2RvL2RpYWxvZ3MvQ0RPRXhwb3J0RGlhbG9nLmphdmEKaW5kZXggMTVmYTVkZS4uNmNjMThkMyAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2RvL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2RvL2RpYWxvZ3MvQ0RPRXhwb3J0RGlhbG9nLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2RvL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2RvL2RpYWxvZ3MvQ0RPRXhwb3J0RGlhbG9nLmphdmEKQEAgLTEsMTc4ICsxLDE4NSBAQAotcGFja2FnZSBvcmcucG9sYXJzeXMuY2hlc3MuY2RvLmRpYWxvZ3M7Ci0KLWltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OwotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVByb2plY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuUmVzb3VyY2VzUGx1Z2luOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5Db3JlRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jZG8uZGF3bi5wcmVmZXJlbmNlcy5QcmVmZXJlbmNlQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jZG8uZGF3bi51dGlsLmNvbm5lY3Rpb24uQ0RPQ29ubmVjdGlvblV0aWw7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNkby5lcmVzb3VyY2UuQ0RPUmVzb3VyY2VGb2xkZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNkby5zZXNzaW9uLkNET1Nlc3Npb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNkby50cmFuc2FjdGlvbi5DRE9UcmFuc2FjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY2RvLnZpZXcuQ0RPVmlldzsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS5kaWFsb2dzLklNZXNzYWdlUHJvdmlkZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2UuZGlhbG9ncy5UaXRsZUFyZWFEaWFsb2c7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5BcnJheUNvbnRlbnRQcm92aWRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLkNvbWJvVmlld2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuSVN0cnVjdHVyZWRTZWxlY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5WaWV3ZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5WaWV3ZXJDb21wYXJhdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5TV1Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmxheW91dC5HcmlkRGF0YTsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QubGF5b3V0LkdyaWRMYXlvdXQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuQ29tcG9zaXRlOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkNvbnRyb2w7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuTGFiZWw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuU2hlbGw7Ci1pbXBvcnQgb3JnLnBvbGFyc3lzLmNoZXNzLmNkby5kaWFsb2dzLnV0aWxzLkRpYWxvZ1V0aWw7Ci1pbXBvcnQgb3JnLnBvbGFyc3lzLmNoZXNzLmNkby5wcm92aWRlcnMuQ0RPUmVzb3VyY2VMaXN0TGFiZWxQcm92aWRlcjsKLWltcG9ydCBvcmcucG9sYXJzeXMuY2hlc3MuY2RvLnByb3ZpZGVycy5DSEVTU1Byb2plY3RMaXN0TGFiZWxQcm92aWRlcjsKLQotcHVibGljIGNsYXNzIENET0V4cG9ydERpYWxvZyBleHRlbmRzIFRpdGxlQXJlYURpYWxvZyB7Ci0JCi0JcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIENIRVNTX05BVFVSRSA9ICJvcmcucG9sYXJzeXMuY2hlc3MuQ0hFU1NOYXR1cmUiOwotCXByaXZhdGUgQ29tYm9WaWV3ZXIgY2hlc3NNb2RlbHNDb21ibzsKLQlwcml2YXRlIENvbWJvVmlld2VyIGNkb0ZvbGRlcnNDb21ibzsKLQlwcml2YXRlIENET1ZpZXcgdmlldzsKLQlwcml2YXRlIENET1RyYW5zYWN0aW9uIHRyYW5zYWN0aW9uOwotCQotCXByaXZhdGUgSVByb2plY3Qgc2VsZWN0ZWRDSEVTU1Byb2plY3Q7Ci0JcHJpdmF0ZSBDRE9SZXNvdXJjZUZvbGRlciBzZWxlY3RlZENET0ZvbGRlcjsKLQotCi0JcHVibGljIENET0V4cG9ydERpYWxvZyhTaGVsbCBzaGVsbCkgdGhyb3dzIEV4Y2VwdGlvbnsKLQkJc3VwZXIoc2hlbGwpOwotCQlDRE9Db25uZWN0aW9uVXRpbC5pbnN0YW5jZS5pbml0KAotCQkJCS8vVE9ETyBUaGVzZSB0aHJlZSBsaW5lcyBzaG91bGQgYmUga2VwdCBpZiB0aGUgcHJlZmVyZW5jZSBwYWdlIGlzIGF2YWlsYWJsZQotCQkJCVByZWZlcmVuY2VDb25zdGFudHMuZ2V0UmVwb3NpdG9yeU5hbWUoKSwKLQkJCQlQcmVmZXJlbmNlQ29uc3RhbnRzLmdldFByb3RvY29sKCksCi0JCQkJUHJlZmVyZW5jZUNvbnN0YW50cy5nZXRTZXJ2ZXJOYW1lKCkKLS8vCQkJCSJyZXBvIiwKLS8vCQkJCSJ0Y3AiLAotLy8JCQkJImxvY2FsaG9zdCIKLQkJCQkpOwotCQlDRE9TZXNzaW9uIHNlc3Npb24gPSBDRE9Db25uZWN0aW9uVXRpbC5pbnN0YW5jZS5vcGVuU2Vzc2lvbigpOwotCQl0cmFuc2FjdGlvbiA9IENET0Nvbm5lY3Rpb25VdGlsLmluc3RhbmNlLm9wZW5UcmFuc2FjdGlvbihzZXNzaW9uKTsKLQkJdmlldyA9IENET0Nvbm5lY3Rpb25VdGlsLmluc3RhbmNlLm9wZW5WaWV3KHNlc3Npb24pOwotCX0KLQkKLQkKLQlAT3ZlcnJpZGUKLSAgICBwdWJsaWMgdm9pZCBjcmVhdGUoKSB7Ci0JCXNldEhlbHBBdmFpbGFibGUoZmFsc2UpOwotICAgICAgICBzdXBlci5jcmVhdGUoKTsKLSAgICAgICAgc2V0VGl0bGUoIkV4cG9ydCBDSEVTUyBwcm9qZWN0IHRvIENETyIpOwotICAgICAgICBzZXRNZXNzYWdlKCJTZWxlY3QgQ0hFU1MgcHJvamVjdCBhbmQgQ0RPIGZvbGRlciBhbmQgY2xpY2sgT0sgdG8gcGVyZm9ybSB0aGUgZXhwb3J0IiwgSU1lc3NhZ2VQcm92aWRlci5JTkZPUk1BVElPTik7Ci0gICAgfQotCQotCUBPdmVycmlkZQotCXByb3RlY3RlZCBDb250cm9sIGNyZWF0ZURpYWxvZ0FyZWEoQ29tcG9zaXRlIHBhcmVudCkgeyAKLQkJcGFyZW50LnNldExheW91dChuZXcgR3JpZExheW91dCgyLCBmYWxzZSkpOwotCQkKLQkJTGFiZWwgY2hlc3NNb2RlbHNMYWJlbCA9IG5ldyBMYWJlbChwYXJlbnQsIFNXVC5OT05FKTsKLQkJY2hlc3NNb2RlbHNMYWJlbC5zZXRUZXh0KCJTZWxlY3QgYSBDSEVTUyBwcm9qZWN0OiAiKTsKLQkJCi0JCWNoZXNzTW9kZWxzQ29tYm8gPSBuZXcgQ29tYm9WaWV3ZXIocGFyZW50LCBTV1QuTk9ORSk7Ci0JCWNoZXNzTW9kZWxzQ29tYm8uZ2V0Q29tYm8oKS5zZXRMYXlvdXREYXRhKG5ldyBHcmlkRGF0YShTV1QuRklMTCwgU1dULkNFTlRFUiwgdHJ1ZSwgZmFsc2UsIDEsIDEpKTsKLQkJCi0JCWNoZXNzTW9kZWxzQ29tYm8uc2V0Q29udGVudFByb3ZpZGVyKG5ldyBBcnJheUNvbnRlbnRQcm92aWRlcigpKTsKLQkJY2hlc3NNb2RlbHNDb21iby5zZXRMYWJlbFByb3ZpZGVyKG5ldyBDSEVTU1Byb2plY3RMaXN0TGFiZWxQcm92aWRlcigpKTsKLQkJCi0JCQotCQlMYWJlbCBjZG9Gb2xkZXJzTGFiZWwgPSBuZXcgTGFiZWwocGFyZW50LCBTV1QuTk9ORSk7Ci0JCWNkb0ZvbGRlcnNMYWJlbC5zZXRUZXh0KCJTZWxlY3QgdGhlIHRhcmdldCBDRE8gRm9sZGVyOiAiKTsKLQkJCi0JCWNkb0ZvbGRlcnNDb21ibyA9IG5ldyBDb21ib1ZpZXdlcihwYXJlbnQsIFNXVC5OT05FKTsKLQkJY2RvRm9sZGVyc0NvbWJvLmdldENvbWJvKCkuc2V0TGF5b3V0RGF0YShuZXcgR3JpZERhdGEoU1dULkZJTEwsIFNXVC5DRU5URVIsIHRydWUsIGZhbHNlLCAxLCAxKSk7Ci0JCQotCQljZG9Gb2xkZXJzQ29tYm8uc2V0Q29udGVudFByb3ZpZGVyKG5ldyBBcnJheUNvbnRlbnRQcm92aWRlcigpKTsKLQkJY2RvRm9sZGVyc0NvbWJvLnNldExhYmVsUHJvdmlkZXIobmV3IENET1Jlc291cmNlTGlzdExhYmVsUHJvdmlkZXIoKSk7Ci0JCQotCQlhZGRDSEVTU01vZGVsc0Zyb21Xb3Jrc3BhY2UoKTsKLQkJYWRkQ0RPRm9sZGVyc0Zyb21SZXBvc2l0b3J5KCk7Ci0JCQotCQlyZXR1cm4gc3VwZXIuY3JlYXRlRGlhbG9nQXJlYShwYXJlbnQpOwotCi0JfQotCQotCXByaXZhdGUgdm9pZCBhZGRDRE9Gb2xkZXJzRnJvbVJlcG9zaXRvcnkoKSB7Ci0JCQotCQlMaXN0PENET1Jlc291cmNlRm9sZGVyPiBmb2xkZXJMaXN0ID0gRGlhbG9nVXRpbC5nZXRBbGxGb2xkZXJzKHZpZXcpOwotCQkKLQkJY2RvRm9sZGVyc0NvbWJvLnNldElucHV0KGZvbGRlckxpc3QudG9BcnJheSgpKTsKLQkJY2RvRm9sZGVyc0NvbWJvLnNldENvbXBhcmF0b3IobmV3IFZpZXdlckNvbXBhcmF0b3IoKSB7Ci0JCQlwdWJsaWMgaW50IGNvbXBhcmUoCi0JCQkJCVZpZXdlciB2aWV3ZXIsIE9iamVjdCBjMSwgT2JqZWN0IGMyKSB7Ci0JCQkJcmV0dXJuICgoQ0RPUmVzb3VyY2VGb2xkZXIpIGMxKS5nZXRQYXRoKCkuY29tcGFyZVRvSWdub3JlQ2FzZSgoKENET1Jlc291cmNlRm9sZGVyKSBjMikuZ2V0UGF0aCgpKTsKLQkJCX0KLQkJfSk7Ci0JfQotCi0KLQlwcml2YXRlIHZvaWQgYWRkQ0hFU1NNb2RlbHNGcm9tV29ya3NwYWNlKCkgewotCQlMaXN0PElQcm9qZWN0PiBjaGVzc1Byb2plY3RzID0gbmV3IEFycmF5TGlzdDw+KCk7Ci0JCUlQcm9qZWN0W10gcHJvamVjdHMgPSBSZXNvdXJjZXNQbHVnaW4uZ2V0V29ya3NwYWNlKCkuZ2V0Um9vdCgpLmdldFByb2plY3RzKCk7Ci0JCWZvcihJUHJvamVjdCBwcm9qZWN0IDogcHJvamVjdHMpewotCQkJdHJ5IHsKLQkJCQlpZihwcm9qZWN0LmlzT3BlbigpICYmIHByb2plY3QuaGFzTmF0dXJlKENIRVNTX05BVFVSRSkpewotCQkJCQljaGVzc1Byb2plY3RzLmFkZChwcm9qZWN0KTsKLQkJCQl9Ci0JCQl9IGNhdGNoIChDb3JlRXhjZXB0aW9uIGUpIHsKLQkJCQllLnByaW50U3RhY2tUcmFjZSgpOwotCQkJfQotCQl9Ci0JCWNoZXNzTW9kZWxzQ29tYm8uc2V0SW5wdXQoY2hlc3NQcm9qZWN0cy50b0FycmF5KCkpOwotCQljaGVzc01vZGVsc0NvbWJvLnNldENvbXBhcmF0b3IobmV3IFZpZXdlckNvbXBhcmF0b3IoKSB7Ci0JCQlwdWJsaWMgaW50IGNvbXBhcmUoCi0JCQkJCVZpZXdlciB2aWV3ZXIsIE9iamVjdCBjMSwgT2JqZWN0IGMyKSB7Ci0JCQkJcmV0dXJuICgoSVByb2plY3QpIGMxKS5nZXROYW1lKCkuY29tcGFyZVRvSWdub3JlQ2FzZSgoKElQcm9qZWN0KSBjMikuZ2V0TmFtZSgpKTsKLQkJCX0KLQkJfSk7Ci0JfQotCi0JQE92ZXJyaWRlCi0JcHJvdGVjdGVkIGJvb2xlYW4gaXNSZXNpemFibGUoKSB7Ci0JCXJldHVybiB0cnVlOwotCX0KLQkKLQlAT3ZlcnJpZGUKLSAgICBwcm90ZWN0ZWQgdm9pZCBva1ByZXNzZWQoKSB7Ci0JCUlQcm9qZWN0IGNoZXNzUHJvamVjdCA9IChJUHJvamVjdCkoKElTdHJ1Y3R1cmVkU2VsZWN0aW9uKWNoZXNzTW9kZWxzQ29tYm8uZ2V0U2VsZWN0aW9uKCkpLmdldEZpcnN0RWxlbWVudCgpOwotCQlDRE9SZXNvdXJjZUZvbGRlciBjZG9Gb2xkZXIgPSAoQ0RPUmVzb3VyY2VGb2xkZXIpKChJU3RydWN0dXJlZFNlbGVjdGlvbiljZG9Gb2xkZXJzQ29tYm8uZ2V0U2VsZWN0aW9uKCkpLmdldEZpcnN0RWxlbWVudCgpOwotCQlpZihjaGVzc1Byb2plY3QgPT0gbnVsbCB8fCBjZG9Gb2xkZXIgPT0gbnVsbCl7Ci0JCQlzZXRNZXNzYWdlKCJQbGVhc2Ugc2VsZWN0IENIRVNTIG1vZGVsIGFuZCBDRE8gRm9sZGVyISIsIElNZXNzYWdlUHJvdmlkZXIuRVJST1IpOwotCQl9ZWxzZXsKLQkJCXNldFNlbGVjdGVkQ0hFU1NQcm9qZWN0KGNoZXNzUHJvamVjdCk7Ci0JCQlzZXRTZWxlY3RlZENET0ZvbGRlcihjZG9Gb2xkZXIpOwotCQkJc3VwZXIub2tQcmVzc2VkKCk7Ci0JCX0KLSAgICB9Ci0KLQotCXB1YmxpYyBJUHJvamVjdCBnZXRTZWxlY3RlZENIRVNTUHJvamVjdCgpIHsKLQkJcmV0dXJuIHNlbGVjdGVkQ0hFU1NQcm9qZWN0OwotCX0KLQotCi0JcHVibGljIHZvaWQgc2V0U2VsZWN0ZWRDSEVTU1Byb2plY3QoSVByb2plY3Qgc2VsZWN0ZWRDSEVTU1Byb2plY3QpIHsKLQkJdGhpcy5zZWxlY3RlZENIRVNTUHJvamVjdCA9IHNlbGVjdGVkQ0hFU1NQcm9qZWN0OwotCX0KLQotCi0JcHVibGljIENET1Jlc291cmNlRm9sZGVyIGdldFNlbGVjdGVkQ0RPRm9sZGVyKCkgewotCQlyZXR1cm4gc2VsZWN0ZWRDRE9Gb2xkZXI7Ci0JfQotCi0KLQlwdWJsaWMgdm9pZCBzZXRTZWxlY3RlZENET0ZvbGRlcihDRE9SZXNvdXJjZUZvbGRlciBzZWxlY3RlZENET0ZvbGRlcikgewotCQl0aGlzLnNlbGVjdGVkQ0RPRm9sZGVyID0gc2VsZWN0ZWRDRE9Gb2xkZXI7Ci0JfQotCi0KLQlwdWJsaWMgQ0RPVHJhbnNhY3Rpb24gZ2V0VHJhbnNhY3Rpb24oKSB7Ci0JCXJldHVybiB0cmFuc2FjdGlvbjsKLQl9Ci0KLX0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICogQ29weXJpZ2h0IChDKSAyMDIwIA0KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCisgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCitwYWNrYWdlIG9yZy5wb2xhcnN5cy5jaGVzcy5jZG8uZGlhbG9nczsNCisNCitpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsNCitpbXBvcnQgamF2YS51dGlsLkxpc3Q7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklQcm9qZWN0Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5SZXNvdXJjZXNQbHVnaW47DQoraW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5Db3JlRXhjZXB0aW9uOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY2RvLmRhd24ucHJlZmVyZW5jZXMuUHJlZmVyZW5jZUNvbnN0YW50czsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNkby5kYXduLnV0aWwuY29ubmVjdGlvbi5DRE9Db25uZWN0aW9uVXRpbDsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNkby5lcmVzb3VyY2UuQ0RPUmVzb3VyY2VGb2xkZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jZG8uc2Vzc2lvbi5DRE9TZXNzaW9uOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY2RvLnRyYW5zYWN0aW9uLkNET1RyYW5zYWN0aW9uOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY2RvLnZpZXcuQ0RPVmlldzsNCitpbXBvcnQgb3JnLmVjbGlwc2UuamZhY2UuZGlhbG9ncy5JTWVzc2FnZVByb3ZpZGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS5kaWFsb2dzLlRpdGxlQXJlYURpYWxvZzsNCitpbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5BcnJheUNvbnRlbnRQcm92aWRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5Db21ib1ZpZXdlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5JU3RydWN0dXJlZFNlbGVjdGlvbjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5WaWV3ZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuVmlld2VyQ29tcGFyYXRvcjsNCitpbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LlNXVDsNCitpbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmxheW91dC5HcmlkRGF0YTsNCitpbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmxheW91dC5HcmlkTGF5b3V0Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5Db21wb3NpdGU7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkNvbnRyb2w7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkxhYmVsOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5TaGVsbDsNCitpbXBvcnQgb3JnLnBvbGFyc3lzLmNoZXNzLmNkby5kaWFsb2dzLnV0aWxzLkRpYWxvZ1V0aWw7DQoraW1wb3J0IG9yZy5wb2xhcnN5cy5jaGVzcy5jZG8ucHJvdmlkZXJzLkNET1Jlc291cmNlTGlzdExhYmVsUHJvdmlkZXI7DQoraW1wb3J0IG9yZy5wb2xhcnN5cy5jaGVzcy5jZG8ucHJvdmlkZXJzLkNIRVNTUHJvamVjdExpc3RMYWJlbFByb3ZpZGVyOw0KKw0KK3B1YmxpYyBjbGFzcyBDRE9FeHBvcnREaWFsb2cgZXh0ZW5kcyBUaXRsZUFyZWFEaWFsb2cgew0KKwkNCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIENIRVNTX05BVFVSRSA9ICJvcmcucG9sYXJzeXMuY2hlc3MuQ0hFU1NOYXR1cmUiOw0KKwlwcml2YXRlIENvbWJvVmlld2VyIGNoZXNzTW9kZWxzQ29tYm87DQorCXByaXZhdGUgQ29tYm9WaWV3ZXIgY2RvRm9sZGVyc0NvbWJvOw0KKwlwcml2YXRlIENET1ZpZXcgdmlldzsNCisJcHJpdmF0ZSBDRE9UcmFuc2FjdGlvbiB0cmFuc2FjdGlvbjsNCisJDQorCXByaXZhdGUgSVByb2plY3Qgc2VsZWN0ZWRDSEVTU1Byb2plY3Q7DQorCXByaXZhdGUgQ0RPUmVzb3VyY2VGb2xkZXIgc2VsZWN0ZWRDRE9Gb2xkZXI7DQorDQorDQorCXB1YmxpYyBDRE9FeHBvcnREaWFsb2coU2hlbGwgc2hlbGwpIHRocm93cyBFeGNlcHRpb257DQorCQlzdXBlcihzaGVsbCk7DQorCQlDRE9Db25uZWN0aW9uVXRpbC5pbnN0YW5jZS5pbml0KA0KKwkJCQkvL1RPRE8gVGhlc2UgdGhyZWUgbGluZXMgc2hvdWxkIGJlIGtlcHQgaWYgdGhlIHByZWZlcmVuY2UgcGFnZSBpcyBhdmFpbGFibGUNCisJCQkJUHJlZmVyZW5jZUNvbnN0YW50cy5nZXRSZXBvc2l0b3J5TmFtZSgpLA0KKwkJCQlQcmVmZXJlbmNlQ29uc3RhbnRzLmdldFByb3RvY29sKCksDQorCQkJCVByZWZlcmVuY2VDb25zdGFudHMuZ2V0U2VydmVyTmFtZSgpDQorLy8JCQkJInJlcG8iLA0KKy8vCQkJCSJ0Y3AiLA0KKy8vCQkJCSJsb2NhbGhvc3QiDQorCQkJCSk7DQorCQlDRE9TZXNzaW9uIHNlc3Npb24gPSBDRE9Db25uZWN0aW9uVXRpbC5pbnN0YW5jZS5vcGVuU2Vzc2lvbigpOw0KKwkJdHJhbnNhY3Rpb24gPSBDRE9Db25uZWN0aW9uVXRpbC5pbnN0YW5jZS5vcGVuVHJhbnNhY3Rpb24oc2Vzc2lvbik7DQorCQl2aWV3ID0gQ0RPQ29ubmVjdGlvblV0aWwuaW5zdGFuY2Uub3BlblZpZXcoc2Vzc2lvbik7DQorCX0NCisJDQorCQ0KKwlAT3ZlcnJpZGUNCisgICAgcHVibGljIHZvaWQgY3JlYXRlKCkgew0KKwkJc2V0SGVscEF2YWlsYWJsZShmYWxzZSk7DQorICAgICAgICBzdXBlci5jcmVhdGUoKTsNCisgICAgICAgIHNldFRpdGxlKCJFeHBvcnQgQ0hFU1MgcHJvamVjdCB0byBDRE8iKTsNCisgICAgICAgIHNldE1lc3NhZ2UoIlNlbGVjdCBDSEVTUyBwcm9qZWN0IGFuZCBDRE8gZm9sZGVyIGFuZCBjbGljayBPSyB0byBwZXJmb3JtIHRoZSBleHBvcnQiLCBJTWVzc2FnZVByb3ZpZGVyLklORk9STUFUSU9OKTsNCisgICAgfQ0KKwkNCisJQE92ZXJyaWRlDQorCXByb3RlY3RlZCBDb250cm9sIGNyZWF0ZURpYWxvZ0FyZWEoQ29tcG9zaXRlIHBhcmVudCkgeyANCisJCXBhcmVudC5zZXRMYXlvdXQobmV3IEdyaWRMYXlvdXQoMiwgZmFsc2UpKTsNCisJCQ0KKwkJTGFiZWwgY2hlc3NNb2RlbHNMYWJlbCA9IG5ldyBMYWJlbChwYXJlbnQsIFNXVC5OT05FKTsNCisJCWNoZXNzTW9kZWxzTGFiZWwuc2V0VGV4dCgiU2VsZWN0IGEgQ0hFU1MgcHJvamVjdDogIik7DQorCQkNCisJCWNoZXNzTW9kZWxzQ29tYm8gPSBuZXcgQ29tYm9WaWV3ZXIocGFyZW50LCBTV1QuTk9ORSk7DQorCQljaGVzc01vZGVsc0NvbWJvLmdldENvbWJvKCkuc2V0TGF5b3V0RGF0YShuZXcgR3JpZERhdGEoU1dULkZJTEwsIFNXVC5DRU5URVIsIHRydWUsIGZhbHNlLCAxLCAxKSk7DQorCQkNCisJCWNoZXNzTW9kZWxzQ29tYm8uc2V0Q29udGVudFByb3ZpZGVyKG5ldyBBcnJheUNvbnRlbnRQcm92aWRlcigpKTsNCisJCWNoZXNzTW9kZWxzQ29tYm8uc2V0TGFiZWxQcm92aWRlcihuZXcgQ0hFU1NQcm9qZWN0TGlzdExhYmVsUHJvdmlkZXIoKSk7DQorCQkNCisJCQ0KKwkJTGFiZWwgY2RvRm9sZGVyc0xhYmVsID0gbmV3IExhYmVsKHBhcmVudCwgU1dULk5PTkUpOw0KKwkJY2RvRm9sZGVyc0xhYmVsLnNldFRleHQoIlNlbGVjdCB0aGUgdGFyZ2V0IENETyBGb2xkZXI6ICIpOw0KKwkJDQorCQljZG9Gb2xkZXJzQ29tYm8gPSBuZXcgQ29tYm9WaWV3ZXIocGFyZW50LCBTV1QuTk9ORSk7DQorCQljZG9Gb2xkZXJzQ29tYm8uZ2V0Q29tYm8oKS5zZXRMYXlvdXREYXRhKG5ldyBHcmlkRGF0YShTV1QuRklMTCwgU1dULkNFTlRFUiwgdHJ1ZSwgZmFsc2UsIDEsIDEpKTsNCisJCQ0KKwkJY2RvRm9sZGVyc0NvbWJvLnNldENvbnRlbnRQcm92aWRlcihuZXcgQXJyYXlDb250ZW50UHJvdmlkZXIoKSk7DQorCQljZG9Gb2xkZXJzQ29tYm8uc2V0TGFiZWxQcm92aWRlcihuZXcgQ0RPUmVzb3VyY2VMaXN0TGFiZWxQcm92aWRlcigpKTsNCisJCQ0KKwkJYWRkQ0hFU1NNb2RlbHNGcm9tV29ya3NwYWNlKCk7DQorCQlhZGRDRE9Gb2xkZXJzRnJvbVJlcG9zaXRvcnkoKTsNCisJCQ0KKwkJcmV0dXJuIHN1cGVyLmNyZWF0ZURpYWxvZ0FyZWEocGFyZW50KTsNCisNCisJfQ0KKwkNCisJcHJpdmF0ZSB2b2lkIGFkZENET0ZvbGRlcnNGcm9tUmVwb3NpdG9yeSgpIHsNCisJCQ0KKwkJTGlzdDxDRE9SZXNvdXJjZUZvbGRlcj4gZm9sZGVyTGlzdCA9IERpYWxvZ1V0aWwuZ2V0QWxsRm9sZGVycyh2aWV3KTsNCisJCQ0KKwkJY2RvRm9sZGVyc0NvbWJvLnNldElucHV0KGZvbGRlckxpc3QudG9BcnJheSgpKTsNCisJCWNkb0ZvbGRlcnNDb21iby5zZXRDb21wYXJhdG9yKG5ldyBWaWV3ZXJDb21wYXJhdG9yKCkgew0KKwkJCXB1YmxpYyBpbnQgY29tcGFyZSgNCisJCQkJCVZpZXdlciB2aWV3ZXIsIE9iamVjdCBjMSwgT2JqZWN0IGMyKSB7DQorCQkJCXJldHVybiAoKENET1Jlc291cmNlRm9sZGVyKSBjMSkuZ2V0UGF0aCgpLmNvbXBhcmVUb0lnbm9yZUNhc2UoKChDRE9SZXNvdXJjZUZvbGRlcikgYzIpLmdldFBhdGgoKSk7DQorCQkJfQ0KKwkJfSk7DQorCX0NCisNCisNCisJcHJpdmF0ZSB2b2lkIGFkZENIRVNTTW9kZWxzRnJvbVdvcmtzcGFjZSgpIHsNCisJCUxpc3Q8SVByb2plY3Q+IGNoZXNzUHJvamVjdHMgPSBuZXcgQXJyYXlMaXN0PD4oKTsNCisJCUlQcm9qZWN0W10gcHJvamVjdHMgPSBSZXNvdXJjZXNQbHVnaW4uZ2V0V29ya3NwYWNlKCkuZ2V0Um9vdCgpLmdldFByb2plY3RzKCk7DQorCQlmb3IoSVByb2plY3QgcHJvamVjdCA6IHByb2plY3RzKXsNCisJCQl0cnkgew0KKwkJCQlpZihwcm9qZWN0LmlzT3BlbigpICYmIHByb2plY3QuaGFzTmF0dXJlKENIRVNTX05BVFVSRSkpew0KKwkJCQkJY2hlc3NQcm9qZWN0cy5hZGQocHJvamVjdCk7DQorCQkJCX0NCisJCQl9IGNhdGNoIChDb3JlRXhjZXB0aW9uIGUpIHsNCisJCQkJZS5wcmludFN0YWNrVHJhY2UoKTsNCisJCQl9DQorCQl9DQorCQljaGVzc01vZGVsc0NvbWJvLnNldElucHV0KGNoZXNzUHJvamVjdHMudG9BcnJheSgpKTsNCisJCWNoZXNzTW9kZWxzQ29tYm8uc2V0Q29tcGFyYXRvcihuZXcgVmlld2VyQ29tcGFyYXRvcigpIHsNCisJCQlwdWJsaWMgaW50IGNvbXBhcmUoDQorCQkJCQlWaWV3ZXIgdmlld2VyLCBPYmplY3QgYzEsIE9iamVjdCBjMikgew0KKwkJCQlyZXR1cm4gKChJUHJvamVjdCkgYzEpLmdldE5hbWUoKS5jb21wYXJlVG9JZ25vcmVDYXNlKCgoSVByb2plY3QpIGMyKS5nZXROYW1lKCkpOw0KKwkJCX0NCisJCX0pOw0KKwl9DQorDQorCUBPdmVycmlkZQ0KKwlwcm90ZWN0ZWQgYm9vbGVhbiBpc1Jlc2l6YWJsZSgpIHsNCisJCXJldHVybiB0cnVlOw0KKwl9DQorCQ0KKwlAT3ZlcnJpZGUNCisgICAgcHJvdGVjdGVkIHZvaWQgb2tQcmVzc2VkKCkgew0KKwkJSVByb2plY3QgY2hlc3NQcm9qZWN0ID0gKElQcm9qZWN0KSgoSVN0cnVjdHVyZWRTZWxlY3Rpb24pY2hlc3NNb2RlbHNDb21iby5nZXRTZWxlY3Rpb24oKSkuZ2V0Rmlyc3RFbGVtZW50KCk7DQorCQlDRE9SZXNvdXJjZUZvbGRlciBjZG9Gb2xkZXIgPSAoQ0RPUmVzb3VyY2VGb2xkZXIpKChJU3RydWN0dXJlZFNlbGVjdGlvbiljZG9Gb2xkZXJzQ29tYm8uZ2V0U2VsZWN0aW9uKCkpLmdldEZpcnN0RWxlbWVudCgpOw0KKwkJaWYoY2hlc3NQcm9qZWN0ID09IG51bGwgfHwgY2RvRm9sZGVyID09IG51bGwpew0KKwkJCXNldE1lc3NhZ2UoIlBsZWFzZSBzZWxlY3QgQ0hFU1MgbW9kZWwgYW5kIENETyBGb2xkZXIhIiwgSU1lc3NhZ2VQcm92aWRlci5FUlJPUik7DQorCQl9ZWxzZXsNCisJCQlzZXRTZWxlY3RlZENIRVNTUHJvamVjdChjaGVzc1Byb2plY3QpOw0KKwkJCXNldFNlbGVjdGVkQ0RPRm9sZGVyKGNkb0ZvbGRlcik7DQorCQkJc3VwZXIub2tQcmVzc2VkKCk7DQorCQl9DQorICAgIH0NCisNCisNCisJcHVibGljIElQcm9qZWN0IGdldFNlbGVjdGVkQ0hFU1NQcm9qZWN0KCkgew0KKwkJcmV0dXJuIHNlbGVjdGVkQ0hFU1NQcm9qZWN0Ow0KKwl9DQorDQorDQorCXB1YmxpYyB2b2lkIHNldFNlbGVjdGVkQ0hFU1NQcm9qZWN0KElQcm9qZWN0IHNlbGVjdGVkQ0hFU1NQcm9qZWN0KSB7DQorCQl0aGlzLnNlbGVjdGVkQ0hFU1NQcm9qZWN0ID0gc2VsZWN0ZWRDSEVTU1Byb2plY3Q7DQorCX0NCisNCisNCisJcHVibGljIENET1Jlc291cmNlRm9sZGVyIGdldFNlbGVjdGVkQ0RPRm9sZGVyKCkgew0KKwkJcmV0dXJuIHNlbGVjdGVkQ0RPRm9sZGVyOw0KKwl9DQorDQorDQorCXB1YmxpYyB2b2lkIHNldFNlbGVjdGVkQ0RPRm9sZGVyKENET1Jlc291cmNlRm9sZGVyIHNlbGVjdGVkQ0RPRm9sZGVyKSB7DQorCQl0aGlzLnNlbGVjdGVkQ0RPRm9sZGVyID0gc2VsZWN0ZWRDRE9Gb2xkZXI7DQorCX0NCisNCisNCisJcHVibGljIENET1RyYW5zYWN0aW9uIGdldFRyYW5zYWN0aW9uKCkgew0KKwkJcmV0dXJuIHRyYW5zYWN0aW9uOw0KKwl9DQorDQorfQ0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNkby9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2Nkby9kaWFsb2dzL0NET0ltcG9ydERpYWxvZy5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2RvL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2RvL2RpYWxvZ3MvQ0RPSW1wb3J0RGlhbG9nLmphdmEKaW5kZXggYzY5OTNjZi4uMDY0NjdmOCAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2RvL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2RvL2RpYWxvZ3MvQ0RPSW1wb3J0RGlhbG9nLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2RvL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2RvL2RpYWxvZ3MvQ0RPSW1wb3J0RGlhbG9nLmphdmEKQEAgLTEsMTkyICsxLDE5OSBAQAotcGFja2FnZSBvcmcucG9sYXJzeXMuY2hlc3MuY2RvLmRpYWxvZ3M7Ci0KLWltcG9ydCBqYXZhLmlvLkJ5dGVBcnJheU91dHB1dFN0cmVhbTsKLWltcG9ydCBqYXZhLmlvLkZpbGU7Ci1pbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKLWltcG9ydCBqYXZhLmlvLklucHV0U3RyZWFtOwotaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY2RvLmNvbW1vbi5sb2IuQ0RPQmxvYjsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY2RvLmRhd24ucHJlZmVyZW5jZXMuUHJlZmVyZW5jZUNvbnN0YW50czsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY2RvLmRhd24udXRpbC5jb25uZWN0aW9uLkNET0Nvbm5lY3Rpb25VdGlsOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jZG8uZXJlc291cmNlLkNET0JpbmFyeVJlc291cmNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jZG8uZXJlc291cmNlLkNET1Jlc291cmNlRm9sZGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jZG8uZXJlc291cmNlLkNET1Jlc291cmNlTm9kZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY2RvLnNlc3Npb24uQ0RPU2Vzc2lvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY2RvLnRyYW5zYWN0aW9uLkNET1RyYW5zYWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jZG8udmlldy5DRE9WaWV3OwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24udXRpbC5FTGlzdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS5kaWFsb2dzLklNZXNzYWdlUHJvdmlkZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2UuZGlhbG9ncy5UaXRsZUFyZWFEaWFsb2c7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5BcnJheUNvbnRlbnRQcm92aWRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLkNvbWJvVmlld2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuSVNlbGVjdGlvbkNoYW5nZWRMaXN0ZW5lcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLklTdHJ1Y3R1cmVkU2VsZWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuU2VsZWN0aW9uQ2hhbmdlZEV2ZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuVmlld2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuVmlld2VyQ29tcGFyYXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QuU1dUOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5sYXlvdXQuR3JpZERhdGE7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmxheW91dC5HcmlkTGF5b3V0OwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkNvbXBvc2l0ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5Db250cm9sOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkxhYmVsOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLlNoZWxsOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLlRleHQ7Ci1pbXBvcnQgb3JnLnBvbGFyc3lzLmNoZXNzLmNkby5kaWFsb2dzLnV0aWxzLkRpYWxvZ1V0aWw7Ci1pbXBvcnQgb3JnLnBvbGFyc3lzLmNoZXNzLmNkby5wcm92aWRlcnMuQ0RPUmVzb3VyY2VMaXN0TGFiZWxQcm92aWRlcjsKLQotcHVibGljIGNsYXNzIENET0ltcG9ydERpYWxvZyBleHRlbmRzIFRpdGxlQXJlYURpYWxvZyB7Ci0JCi0JcHJpdmF0ZSBDRE9WaWV3IHZpZXc7Ci0JcHJpdmF0ZSBDRE9UcmFuc2FjdGlvbiB0cmFuc2FjdGlvbjsKLQlwcml2YXRlIENvbWJvVmlld2VyIGNkb0NIRVNTUHJvamVjdHNDb21ibzsKLQlwcml2YXRlIFRleHQgcHJvamVjdE5hbWVUZXh0OwotCQotCXByaXZhdGUgU3RyaW5nIG5ld1Byb2plY3ROYW1lOwotCXByaXZhdGUgQ0RPUmVzb3VyY2VGb2xkZXIgc2VsZWN0ZWRDSEVTU1Byb2plY3RDRE87Ci0KLQlwdWJsaWMgQ0RPSW1wb3J0RGlhbG9nKFNoZWxsIHNoZWxsKSB7Ci0JCXN1cGVyKHNoZWxsKTsKLQkJQ0RPQ29ubmVjdGlvblV0aWwuaW5zdGFuY2UuaW5pdCgKLQkJCQkvL1RPRE8gVGhlc2UgdGhyZWUgbGluZXMgc2hvdWxkIGJlIGtlcHQgaWYgdGhlIHByZWZlcmVuY2UgcGFnZSBpcyBhdmFpbGFibGUKLQkJCQlQcmVmZXJlbmNlQ29uc3RhbnRzLmdldFJlcG9zaXRvcnlOYW1lKCksCi0JCQkJUHJlZmVyZW5jZUNvbnN0YW50cy5nZXRQcm90b2NvbCgpLAotCQkJCVByZWZlcmVuY2VDb25zdGFudHMuZ2V0U2VydmVyTmFtZSgpCi0vLwkJCQkicmVwbyIsCi0vLwkJCQkidGNwIiwKLS8vCQkJCSJsb2NhbGhvc3QiCi0JCQkJKTsKLQkJQ0RPU2Vzc2lvbiBzZXNzaW9uID0gQ0RPQ29ubmVjdGlvblV0aWwuaW5zdGFuY2Uub3BlblNlc3Npb24oKTsKLQkJdHJhbnNhY3Rpb24gPSBDRE9Db25uZWN0aW9uVXRpbC5pbnN0YW5jZS5vcGVuVHJhbnNhY3Rpb24oc2Vzc2lvbik7Ci0JCXZpZXcgPSBDRE9Db25uZWN0aW9uVXRpbC5pbnN0YW5jZS5vcGVuVmlldyhzZXNzaW9uKTsKLQl9Ci0JCi0JQE92ZXJyaWRlCi0gICAgcHVibGljIHZvaWQgY3JlYXRlKCkgewotCQlzZXRIZWxwQXZhaWxhYmxlKGZhbHNlKTsKLSAgICAgICAgc3VwZXIuY3JlYXRlKCk7Ci0gICAgICAgIHNldFRpdGxlKCJJbXBvcnQgQ0hFU1MgcHJvamVjdCBmcm9tIENETyIpOwotICAgICAgICBzZXRNZXNzYWdlKCJTZWxlY3QgYSBDSEVTUyBwcm9qZWN0IGZyb20gdGhlIENETyByZXBvc2l0b3J5LiBFbnRlciB0aGUgcHJvamVjdCBuYW1lIGFuZCBjbGljayBPSyB0byBwZXJmb3JtIHRoZSBpbXBvcnQiLCBJTWVzc2FnZVByb3ZpZGVyLklORk9STUFUSU9OKTsKLSAgICB9Ci0JCi0JQE92ZXJyaWRlCi0JcHJvdGVjdGVkIENvbnRyb2wgY3JlYXRlRGlhbG9nQXJlYShDb21wb3NpdGUgcGFyZW50KSB7IAotCQlwYXJlbnQuc2V0TGF5b3V0KG5ldyBHcmlkTGF5b3V0KDIsIGZhbHNlKSk7Ci0JCQotCQlMYWJlbCBjaGVzc01vZGVsc0xhYmVsID0gbmV3IExhYmVsKHBhcmVudCwgU1dULk5PTkUpOwotCQljaGVzc01vZGVsc0xhYmVsLnNldFRleHQoIlNlbGVjdCBhIENIRVNTIHByb2plY3Q6ICIpOwotCQkKLQkJY2RvQ0hFU1NQcm9qZWN0c0NvbWJvID0gbmV3IENvbWJvVmlld2VyKHBhcmVudCwgU1dULk5PTkUpOwotCQljZG9DSEVTU1Byb2plY3RzQ29tYm8uZ2V0Q29tYm8oKS5zZXRMYXlvdXREYXRhKG5ldyBHcmlkRGF0YShTV1QuRklMTCwgU1dULkNFTlRFUiwgdHJ1ZSwgZmFsc2UsIDEsIDEpKTsKLQkJCi0JCWNkb0NIRVNTUHJvamVjdHNDb21iby5zZXRDb250ZW50UHJvdmlkZXIobmV3IEFycmF5Q29udGVudFByb3ZpZGVyKCkpOwotCQljZG9DSEVTU1Byb2plY3RzQ29tYm8uc2V0TGFiZWxQcm92aWRlcihuZXcgQ0RPUmVzb3VyY2VMaXN0TGFiZWxQcm92aWRlcigpKTsKLQkJSVNlbGVjdGlvbkNoYW5nZWRMaXN0ZW5lciBsaXN0ZW5lciA9IG5ldyBJU2VsZWN0aW9uQ2hhbmdlZExpc3RlbmVyKCl7Ci0KLQkJCUBPdmVycmlkZQotCQkJcHVibGljIHZvaWQgc2VsZWN0aW9uQ2hhbmdlZChTZWxlY3Rpb25DaGFuZ2VkRXZlbnQgZXZlbnQpIHsKLQkJCQlTdHJpbmcgdGV4dCA9IGNkb0NIRVNTUHJvamVjdHNDb21iby5nZXRDb21ibygpLmdldFRleHQoKTsKLQkJCQl0ZXh0ID0gdGV4dC5zdWJzdHJpbmcodGV4dC5sYXN0SW5kZXhPZihGaWxlLnNlcGFyYXRvcikrMSk7Ci0JCQkJcHJvamVjdE5hbWVUZXh0LnNldFRleHQodGV4dCk7Ci0JCQl9Ci0JCX07Ci0JCQotCQljZG9DSEVTU1Byb2plY3RzQ29tYm8uYWRkU2VsZWN0aW9uQ2hhbmdlZExpc3RlbmVyKGxpc3RlbmVyKTsKLQkJCi0JCUxhYmVsIGNkb0ZvbGRlcnNMYWJlbCA9IG5ldyBMYWJlbChwYXJlbnQsIFNXVC5OT05FKTsKLQkJY2RvRm9sZGVyc0xhYmVsLnNldFRleHQoIkVudGVyIHRoZSBQcm9qZWN0IE5hbWU6ICIpOwotCQlwcm9qZWN0TmFtZVRleHQgPSBuZXcgVGV4dChwYXJlbnQsIFNXVC5CT1JERVIpOwotCQlwcm9qZWN0TmFtZVRleHQuc2V0TGF5b3V0RGF0YShuZXcgR3JpZERhdGEoU1dULkZJTEwsIFNXVC5DRU5URVIsIHRydWUsIGZhbHNlLCAxLCAxKSk7Ci0JCXByb2plY3ROYW1lVGV4dC5zZXRUZXh0KCIiKTsKLQkJCi0JCWFkZENIRVNTUHJvamVjdHNGcm9tQ0RPUmVwb3NpdG9yeSgpOwotCQkKLQkJcmV0dXJuIHN1cGVyLmNyZWF0ZURpYWxvZ0FyZWEocGFyZW50KTsKLQl9Ci0JCi0JcHJpdmF0ZSB2b2lkIGFkZENIRVNTUHJvamVjdHNGcm9tQ0RPUmVwb3NpdG9yeSgpIHsKLQkJTGlzdDxDRE9SZXNvdXJjZUZvbGRlcj4gZm9sZGVyTGlzdCA9IERpYWxvZ1V0aWwuZ2V0QWxsRm9sZGVycyh2aWV3KTsKLQkJTGlzdDxDRE9SZXNvdXJjZUZvbGRlcj4gY2hlc3NQcm9qZWN0c0NETyA9IG5ldyBBcnJheUxpc3Q8PigpOwotCQkKLQkJZm9yKENET1Jlc291cmNlRm9sZGVyIGZvbGRlciA6IGZvbGRlckxpc3QpewotLy8JCQlTeXN0ZW0ub3V0LnByaW50bG4oZm9sZGVyLmdldE5hbWUoKSk7Ci0JCQlFTGlzdDxDRE9SZXNvdXJjZU5vZGU+IG5vZGVzID0gZm9sZGVyLmdldE5vZGVzKCk7Ci0JCQlmb3IoQ0RPUmVzb3VyY2VOb2RlIG5vZGUgOiBub2Rlcyl7Ci0vLwkJCQlTeXN0ZW0ub3V0LnByaW50bG4oIi0tPiAiICsgbm9kZS50b1N0cmluZygpKTsKLQkJCQlpZihub2RlIGluc3RhbmNlb2YgQ0RPQmluYXJ5UmVzb3VyY2UgJiYgbm9kZS5nZXROYW1lKCkuZXF1YWxzKCIucHJvamVjdCIpKXsKLQkJCQkJQ0RPQmluYXJ5UmVzb3VyY2UgcHJvamVjdFJlcyA9IChDRE9CaW5hcnlSZXNvdXJjZSkgbm9kZTsKLQkJCQkJQ0RPQmxvYiBjb250ZW50cyA9IHByb2plY3RSZXMuZ2V0Q29udGVudHMoKTsKLS8vCQkJCQlTeXN0ZW0ub3V0LnByaW50bG4oIi0tLS0+ICIgKyBjb250ZW50cy50b1N0cmluZygpKTsKLQkJCQkJaWYoY29udGVudHMgIT0gbnVsbCl7Ci0JCQkJCQl0cnkgewotCQkJCQkJCUlucHV0U3RyZWFtIGlzID0gY29udGVudHMuZ2V0Q29udGVudHMoKTsKLQkJCQkJCQlCeXRlQXJyYXlPdXRwdXRTdHJlYW0gcmVzdWx0ID0gbmV3IEJ5dGVBcnJheU91dHB1dFN0cmVhbSgpOwotCQkJCQkJCWJ5dGVbXSBidWZmZXIgPSBuZXcgYnl0ZVsoaW50KSBjb250ZW50cy5nZXRTaXplKCldOwotCQkJCQkJCWludCBsZW5ndGg7Ci0JCQkJCQkJd2hpbGUgKChsZW5ndGggPSBpcy5yZWFkKGJ1ZmZlcikpICE9IC0xKSB7Ci0JCQkJCQkJCXJlc3VsdC53cml0ZShidWZmZXIsIDAsIGxlbmd0aCk7Ci0JCQkJCQkJfQotCQkJCQkJCVN0cmluZyBjb250ZW50c0FzU3RyaW5nID0gIHJlc3VsdC50b1N0cmluZygiVVRGLTgiKTsKLQkJCQkJCQkvLwkJCQkJCVN5c3RlbS5vdXQucHJpbnRsbigiLS0tLS0tLS0tLS0tPiAiICsgY29udGVudHNBc1N0cmluZyk7Ci0JCQkJCQkJaWYgKGNvbnRlbnRzQXNTdHJpbmcuY29udGFpbnMoIm9yZy5wb2xhcnN5cy5jaGVzcy5DSEVTU05hdHVyZSIpKXsKLQkJCQkJCQkJY2hlc3NQcm9qZWN0c0NETy5hZGQoZm9sZGVyKTsKLQkJCQkJCQl9Ci0JCQkJCQl9IGNhdGNoIChJT0V4Y2VwdGlvbiBlKSB7Ci0JCQkJCQkJLy8gVE9ETyBBdXRvLWdlbmVyYXRlZCBjYXRjaCBibG9jawotCQkJCQkJCWUucHJpbnRTdGFja1RyYWNlKCk7Ci0JCQkJCQl9Ci0JCQkJCX0KLQkJCQl9Ci0JCQl9Ci0JCX0KLQkJCi0JCWNkb0NIRVNTUHJvamVjdHNDb21iby5zZXRJbnB1dChjaGVzc1Byb2plY3RzQ0RPLnRvQXJyYXkoKSk7Ci0JCWNkb0NIRVNTUHJvamVjdHNDb21iby5zZXRDb21wYXJhdG9yKG5ldyBWaWV3ZXJDb21wYXJhdG9yKCkgewotCQkJcHVibGljIGludCBjb21wYXJlKAotCQkJCQlWaWV3ZXIgdmlld2VyLCBPYmplY3QgYzEsIE9iamVjdCBjMikgewotCQkJCXJldHVybiAoKENET1Jlc291cmNlRm9sZGVyKSBjMSkuZ2V0UGF0aCgpLmNvbXBhcmVUb0lnbm9yZUNhc2UoKChDRE9SZXNvdXJjZUZvbGRlcikgYzIpLmdldFBhdGgoKSk7Ci0JCQl9Ci0JCX0pOwotCX0KLQotCUBPdmVycmlkZQotCXByb3RlY3RlZCBib29sZWFuIGlzUmVzaXphYmxlKCkgewotCQlyZXR1cm4gdHJ1ZTsKLQl9Ci0JCi0JQE92ZXJyaWRlCi0gICAgcHJvdGVjdGVkIHZvaWQgb2tQcmVzc2VkKCkgewotCQlDRE9SZXNvdXJjZUZvbGRlciBjZG9DSEVTU0ZvbGRlciA9IChDRE9SZXNvdXJjZUZvbGRlcikoKElTdHJ1Y3R1cmVkU2VsZWN0aW9uKWNkb0NIRVNTUHJvamVjdHNDb21iby5nZXRTZWxlY3Rpb24oKSkuZ2V0Rmlyc3RFbGVtZW50KCk7Ci0JCVN0cmluZyBwcm9qZWN0TmFtZSA9IHByb2plY3ROYW1lVGV4dC5nZXRUZXh0KCk7Ci0JCWlmKGNkb0NIRVNTRm9sZGVyID09IG51bGwgfHwgcHJvamVjdE5hbWUgPT0gbnVsbCB8fCBwcm9qZWN0TmFtZS5pc0VtcHR5KCkpewotCQkJc2V0TWVzc2FnZSgiUGxlYXNlIHNlbGVjdCBDSEVTUyBwcm9qZWN0IChmcm9tIENETykgYW5kIGVudGVyIHRoZSBuYW1lIG9mIHRoZSBuZXcgcHJvamVjdCEiLCBJTWVzc2FnZVByb3ZpZGVyLkVSUk9SKTsKLQkJfWVsc2V7Ci0JCQlzZXROZXdQcm9qZWN0TmFtZShwcm9qZWN0TmFtZSk7Ci0JCQlzZXRTZWxlY3RlZENIRVNTUHJvamVjdENETyhjZG9DSEVTU0ZvbGRlcik7Ci0JCQlzdXBlci5va1ByZXNzZWQoKTsKLQkJfQotCX0KLQkKLQlwdWJsaWMgQ0RPUmVzb3VyY2VGb2xkZXIgZ2V0U2VsZWN0ZWRDSEVTU1Byb2plY3RDRE8oKSB7Ci0JCXJldHVybiBzZWxlY3RlZENIRVNTUHJvamVjdENETzsKLQl9Ci0KLQlwdWJsaWMgdm9pZCBzZXRTZWxlY3RlZENIRVNTUHJvamVjdENETyhDRE9SZXNvdXJjZUZvbGRlciBzZWxlY3RlZENIRVNTUHJvamVjdENETykgewotCQl0aGlzLnNlbGVjdGVkQ0hFU1NQcm9qZWN0Q0RPID0gc2VsZWN0ZWRDSEVTU1Byb2plY3RDRE87Ci0JfQotCi0JcHVibGljIFN0cmluZyBnZXROZXdQcm9qZWN0TmFtZSgpIHsKLQkJcmV0dXJuIG5ld1Byb2plY3ROYW1lOwotCX0KLQotCXB1YmxpYyB2b2lkIHNldE5ld1Byb2plY3ROYW1lKFN0cmluZyBuZXdQcm9qZWN0TmFtZSkgewotCQl0aGlzLm5ld1Byb2plY3ROYW1lID0gbmV3UHJvamVjdE5hbWU7Ci0JfQotCi0JcHVibGljIENET1RyYW5zYWN0aW9uIGdldFRyYW5zYWN0aW9uKCkgewotCQlyZXR1cm4gdHJhbnNhY3Rpb247Ci0JfQotCi19CisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqIENvcHlyaWdodCAoQykgMjAyMCANCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQorICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorcGFja2FnZSBvcmcucG9sYXJzeXMuY2hlc3MuY2RvLmRpYWxvZ3M7DQorDQoraW1wb3J0IGphdmEuaW8uQnl0ZUFycmF5T3V0cHV0U3RyZWFtOw0KK2ltcG9ydCBqYXZhLmlvLkZpbGU7DQoraW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247DQoraW1wb3J0IGphdmEuaW8uSW5wdXRTdHJlYW07DQoraW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7DQoraW1wb3J0IGphdmEudXRpbC5MaXN0Ow0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY2RvLmNvbW1vbi5sb2IuQ0RPQmxvYjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNkby5kYXduLnByZWZlcmVuY2VzLlByZWZlcmVuY2VDb25zdGFudHM7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jZG8uZGF3bi51dGlsLmNvbm5lY3Rpb24uQ0RPQ29ubmVjdGlvblV0aWw7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jZG8uZXJlc291cmNlLkNET0JpbmFyeVJlc291cmNlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY2RvLmVyZXNvdXJjZS5DRE9SZXNvdXJjZUZvbGRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNkby5lcmVzb3VyY2UuQ0RPUmVzb3VyY2VOb2RlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY2RvLnNlc3Npb24uQ0RPU2Vzc2lvbjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNkby50cmFuc2FjdGlvbi5DRE9UcmFuc2FjdGlvbjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNkby52aWV3LkNET1ZpZXc7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24udXRpbC5FTGlzdDsNCitpbXBvcnQgb3JnLmVjbGlwc2UuamZhY2UuZGlhbG9ncy5JTWVzc2FnZVByb3ZpZGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS5kaWFsb2dzLlRpdGxlQXJlYURpYWxvZzsNCitpbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5BcnJheUNvbnRlbnRQcm92aWRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5Db21ib1ZpZXdlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5JU2VsZWN0aW9uQ2hhbmdlZExpc3RlbmVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLklTdHJ1Y3R1cmVkU2VsZWN0aW9uOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLlNlbGVjdGlvbkNoYW5nZWRFdmVudDsNCitpbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5WaWV3ZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuVmlld2VyQ29tcGFyYXRvcjsNCitpbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LlNXVDsNCitpbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmxheW91dC5HcmlkRGF0YTsNCitpbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmxheW91dC5HcmlkTGF5b3V0Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5Db21wb3NpdGU7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkNvbnRyb2w7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkxhYmVsOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5TaGVsbDsNCitpbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuVGV4dDsNCitpbXBvcnQgb3JnLnBvbGFyc3lzLmNoZXNzLmNkby5kaWFsb2dzLnV0aWxzLkRpYWxvZ1V0aWw7DQoraW1wb3J0IG9yZy5wb2xhcnN5cy5jaGVzcy5jZG8ucHJvdmlkZXJzLkNET1Jlc291cmNlTGlzdExhYmVsUHJvdmlkZXI7DQorDQorcHVibGljIGNsYXNzIENET0ltcG9ydERpYWxvZyBleHRlbmRzIFRpdGxlQXJlYURpYWxvZyB7DQorCQ0KKwlwcml2YXRlIENET1ZpZXcgdmlldzsNCisJcHJpdmF0ZSBDRE9UcmFuc2FjdGlvbiB0cmFuc2FjdGlvbjsNCisJcHJpdmF0ZSBDb21ib1ZpZXdlciBjZG9DSEVTU1Byb2plY3RzQ29tYm87DQorCXByaXZhdGUgVGV4dCBwcm9qZWN0TmFtZVRleHQ7DQorCQ0KKwlwcml2YXRlIFN0cmluZyBuZXdQcm9qZWN0TmFtZTsNCisJcHJpdmF0ZSBDRE9SZXNvdXJjZUZvbGRlciBzZWxlY3RlZENIRVNTUHJvamVjdENETzsNCisNCisJcHVibGljIENET0ltcG9ydERpYWxvZyhTaGVsbCBzaGVsbCkgew0KKwkJc3VwZXIoc2hlbGwpOw0KKwkJQ0RPQ29ubmVjdGlvblV0aWwuaW5zdGFuY2UuaW5pdCgNCisJCQkJLy9UT0RPIFRoZXNlIHRocmVlIGxpbmVzIHNob3VsZCBiZSBrZXB0IGlmIHRoZSBwcmVmZXJlbmNlIHBhZ2UgaXMgYXZhaWxhYmxlDQorCQkJCVByZWZlcmVuY2VDb25zdGFudHMuZ2V0UmVwb3NpdG9yeU5hbWUoKSwNCisJCQkJUHJlZmVyZW5jZUNvbnN0YW50cy5nZXRQcm90b2NvbCgpLA0KKwkJCQlQcmVmZXJlbmNlQ29uc3RhbnRzLmdldFNlcnZlck5hbWUoKQ0KKy8vCQkJCSJyZXBvIiwNCisvLwkJCQkidGNwIiwNCisvLwkJCQkibG9jYWxob3N0Ig0KKwkJCQkpOw0KKwkJQ0RPU2Vzc2lvbiBzZXNzaW9uID0gQ0RPQ29ubmVjdGlvblV0aWwuaW5zdGFuY2Uub3BlblNlc3Npb24oKTsNCisJCXRyYW5zYWN0aW9uID0gQ0RPQ29ubmVjdGlvblV0aWwuaW5zdGFuY2Uub3BlblRyYW5zYWN0aW9uKHNlc3Npb24pOw0KKwkJdmlldyA9IENET0Nvbm5lY3Rpb25VdGlsLmluc3RhbmNlLm9wZW5WaWV3KHNlc3Npb24pOw0KKwl9DQorCQ0KKwlAT3ZlcnJpZGUNCisgICAgcHVibGljIHZvaWQgY3JlYXRlKCkgew0KKwkJc2V0SGVscEF2YWlsYWJsZShmYWxzZSk7DQorICAgICAgICBzdXBlci5jcmVhdGUoKTsNCisgICAgICAgIHNldFRpdGxlKCJJbXBvcnQgQ0hFU1MgcHJvamVjdCBmcm9tIENETyIpOw0KKyAgICAgICAgc2V0TWVzc2FnZSgiU2VsZWN0IGEgQ0hFU1MgcHJvamVjdCBmcm9tIHRoZSBDRE8gcmVwb3NpdG9yeS4gRW50ZXIgdGhlIHByb2plY3QgbmFtZSBhbmQgY2xpY2sgT0sgdG8gcGVyZm9ybSB0aGUgaW1wb3J0IiwgSU1lc3NhZ2VQcm92aWRlci5JTkZPUk1BVElPTik7DQorICAgIH0NCisJDQorCUBPdmVycmlkZQ0KKwlwcm90ZWN0ZWQgQ29udHJvbCBjcmVhdGVEaWFsb2dBcmVhKENvbXBvc2l0ZSBwYXJlbnQpIHsgDQorCQlwYXJlbnQuc2V0TGF5b3V0KG5ldyBHcmlkTGF5b3V0KDIsIGZhbHNlKSk7DQorCQkNCisJCUxhYmVsIGNoZXNzTW9kZWxzTGFiZWwgPSBuZXcgTGFiZWwocGFyZW50LCBTV1QuTk9ORSk7DQorCQljaGVzc01vZGVsc0xhYmVsLnNldFRleHQoIlNlbGVjdCBhIENIRVNTIHByb2plY3Q6ICIpOw0KKwkJDQorCQljZG9DSEVTU1Byb2plY3RzQ29tYm8gPSBuZXcgQ29tYm9WaWV3ZXIocGFyZW50LCBTV1QuTk9ORSk7DQorCQljZG9DSEVTU1Byb2plY3RzQ29tYm8uZ2V0Q29tYm8oKS5zZXRMYXlvdXREYXRhKG5ldyBHcmlkRGF0YShTV1QuRklMTCwgU1dULkNFTlRFUiwgdHJ1ZSwgZmFsc2UsIDEsIDEpKTsNCisJCQ0KKwkJY2RvQ0hFU1NQcm9qZWN0c0NvbWJvLnNldENvbnRlbnRQcm92aWRlcihuZXcgQXJyYXlDb250ZW50UHJvdmlkZXIoKSk7DQorCQljZG9DSEVTU1Byb2plY3RzQ29tYm8uc2V0TGFiZWxQcm92aWRlcihuZXcgQ0RPUmVzb3VyY2VMaXN0TGFiZWxQcm92aWRlcigpKTsNCisJCUlTZWxlY3Rpb25DaGFuZ2VkTGlzdGVuZXIgbGlzdGVuZXIgPSBuZXcgSVNlbGVjdGlvbkNoYW5nZWRMaXN0ZW5lcigpew0KKw0KKwkJCUBPdmVycmlkZQ0KKwkJCXB1YmxpYyB2b2lkIHNlbGVjdGlvbkNoYW5nZWQoU2VsZWN0aW9uQ2hhbmdlZEV2ZW50IGV2ZW50KSB7DQorCQkJCVN0cmluZyB0ZXh0ID0gY2RvQ0hFU1NQcm9qZWN0c0NvbWJvLmdldENvbWJvKCkuZ2V0VGV4dCgpOw0KKwkJCQl0ZXh0ID0gdGV4dC5zdWJzdHJpbmcodGV4dC5sYXN0SW5kZXhPZihGaWxlLnNlcGFyYXRvcikrMSk7DQorCQkJCXByb2plY3ROYW1lVGV4dC5zZXRUZXh0KHRleHQpOw0KKwkJCX0NCisJCX07DQorCQkNCisJCWNkb0NIRVNTUHJvamVjdHNDb21iby5hZGRTZWxlY3Rpb25DaGFuZ2VkTGlzdGVuZXIobGlzdGVuZXIpOw0KKwkJDQorCQlMYWJlbCBjZG9Gb2xkZXJzTGFiZWwgPSBuZXcgTGFiZWwocGFyZW50LCBTV1QuTk9ORSk7DQorCQljZG9Gb2xkZXJzTGFiZWwuc2V0VGV4dCgiRW50ZXIgdGhlIFByb2plY3QgTmFtZTogIik7DQorCQlwcm9qZWN0TmFtZVRleHQgPSBuZXcgVGV4dChwYXJlbnQsIFNXVC5CT1JERVIpOw0KKwkJcHJvamVjdE5hbWVUZXh0LnNldExheW91dERhdGEobmV3IEdyaWREYXRhKFNXVC5GSUxMLCBTV1QuQ0VOVEVSLCB0cnVlLCBmYWxzZSwgMSwgMSkpOw0KKwkJcHJvamVjdE5hbWVUZXh0LnNldFRleHQoIiIpOw0KKwkJDQorCQlhZGRDSEVTU1Byb2plY3RzRnJvbUNET1JlcG9zaXRvcnkoKTsNCisJCQ0KKwkJcmV0dXJuIHN1cGVyLmNyZWF0ZURpYWxvZ0FyZWEocGFyZW50KTsNCisJfQ0KKwkNCisJcHJpdmF0ZSB2b2lkIGFkZENIRVNTUHJvamVjdHNGcm9tQ0RPUmVwb3NpdG9yeSgpIHsNCisJCUxpc3Q8Q0RPUmVzb3VyY2VGb2xkZXI+IGZvbGRlckxpc3QgPSBEaWFsb2dVdGlsLmdldEFsbEZvbGRlcnModmlldyk7DQorCQlMaXN0PENET1Jlc291cmNlRm9sZGVyPiBjaGVzc1Byb2plY3RzQ0RPID0gbmV3IEFycmF5TGlzdDw+KCk7DQorCQkNCisJCWZvcihDRE9SZXNvdXJjZUZvbGRlciBmb2xkZXIgOiBmb2xkZXJMaXN0KXsNCisvLwkJCVN5c3RlbS5vdXQucHJpbnRsbihmb2xkZXIuZ2V0TmFtZSgpKTsNCisJCQlFTGlzdDxDRE9SZXNvdXJjZU5vZGU+IG5vZGVzID0gZm9sZGVyLmdldE5vZGVzKCk7DQorCQkJZm9yKENET1Jlc291cmNlTm9kZSBub2RlIDogbm9kZXMpew0KKy8vCQkJCVN5c3RlbS5vdXQucHJpbnRsbigiLS0+ICIgKyBub2RlLnRvU3RyaW5nKCkpOw0KKwkJCQlpZihub2RlIGluc3RhbmNlb2YgQ0RPQmluYXJ5UmVzb3VyY2UgJiYgbm9kZS5nZXROYW1lKCkuZXF1YWxzKCIucHJvamVjdCIpKXsNCisJCQkJCUNET0JpbmFyeVJlc291cmNlIHByb2plY3RSZXMgPSAoQ0RPQmluYXJ5UmVzb3VyY2UpIG5vZGU7DQorCQkJCQlDRE9CbG9iIGNvbnRlbnRzID0gcHJvamVjdFJlcy5nZXRDb250ZW50cygpOw0KKy8vCQkJCQlTeXN0ZW0ub3V0LnByaW50bG4oIi0tLS0+ICIgKyBjb250ZW50cy50b1N0cmluZygpKTsNCisJCQkJCWlmKGNvbnRlbnRzICE9IG51bGwpew0KKwkJCQkJCXRyeSB7DQorCQkJCQkJCUlucHV0U3RyZWFtIGlzID0gY29udGVudHMuZ2V0Q29udGVudHMoKTsNCisJCQkJCQkJQnl0ZUFycmF5T3V0cHV0U3RyZWFtIHJlc3VsdCA9IG5ldyBCeXRlQXJyYXlPdXRwdXRTdHJlYW0oKTsNCisJCQkJCQkJYnl0ZVtdIGJ1ZmZlciA9IG5ldyBieXRlWyhpbnQpIGNvbnRlbnRzLmdldFNpemUoKV07DQorCQkJCQkJCWludCBsZW5ndGg7DQorCQkJCQkJCXdoaWxlICgobGVuZ3RoID0gaXMucmVhZChidWZmZXIpKSAhPSAtMSkgew0KKwkJCQkJCQkJcmVzdWx0LndyaXRlKGJ1ZmZlciwgMCwgbGVuZ3RoKTsNCisJCQkJCQkJfQ0KKwkJCQkJCQlTdHJpbmcgY29udGVudHNBc1N0cmluZyA9ICByZXN1bHQudG9TdHJpbmcoIlVURi04Iik7DQorCQkJCQkJCS8vCQkJCQkJU3lzdGVtLm91dC5wcmludGxuKCItLS0tLS0tLS0tLS0+ICIgKyBjb250ZW50c0FzU3RyaW5nKTsNCisJCQkJCQkJaWYgKGNvbnRlbnRzQXNTdHJpbmcuY29udGFpbnMoIm9yZy5wb2xhcnN5cy5jaGVzcy5DSEVTU05hdHVyZSIpKXsNCisJCQkJCQkJCWNoZXNzUHJvamVjdHNDRE8uYWRkKGZvbGRlcik7DQorCQkJCQkJCX0NCisJCQkJCQl9IGNhdGNoIChJT0V4Y2VwdGlvbiBlKSB7DQorCQkJCQkJCS8vIFRPRE8gQXV0by1nZW5lcmF0ZWQgY2F0Y2ggYmxvY2sNCisJCQkJCQkJZS5wcmludFN0YWNrVHJhY2UoKTsNCisJCQkJCQl9DQorCQkJCQl9DQorCQkJCX0NCisJCQl9DQorCQl9DQorCQkNCisJCWNkb0NIRVNTUHJvamVjdHNDb21iby5zZXRJbnB1dChjaGVzc1Byb2plY3RzQ0RPLnRvQXJyYXkoKSk7DQorCQljZG9DSEVTU1Byb2plY3RzQ29tYm8uc2V0Q29tcGFyYXRvcihuZXcgVmlld2VyQ29tcGFyYXRvcigpIHsNCisJCQlwdWJsaWMgaW50IGNvbXBhcmUoDQorCQkJCQlWaWV3ZXIgdmlld2VyLCBPYmplY3QgYzEsIE9iamVjdCBjMikgew0KKwkJCQlyZXR1cm4gKChDRE9SZXNvdXJjZUZvbGRlcikgYzEpLmdldFBhdGgoKS5jb21wYXJlVG9JZ25vcmVDYXNlKCgoQ0RPUmVzb3VyY2VGb2xkZXIpIGMyKS5nZXRQYXRoKCkpOw0KKwkJCX0NCisJCX0pOw0KKwl9DQorDQorCUBPdmVycmlkZQ0KKwlwcm90ZWN0ZWQgYm9vbGVhbiBpc1Jlc2l6YWJsZSgpIHsNCisJCXJldHVybiB0cnVlOw0KKwl9DQorCQ0KKwlAT3ZlcnJpZGUNCisgICAgcHJvdGVjdGVkIHZvaWQgb2tQcmVzc2VkKCkgew0KKwkJQ0RPUmVzb3VyY2VGb2xkZXIgY2RvQ0hFU1NGb2xkZXIgPSAoQ0RPUmVzb3VyY2VGb2xkZXIpKChJU3RydWN0dXJlZFNlbGVjdGlvbiljZG9DSEVTU1Byb2plY3RzQ29tYm8uZ2V0U2VsZWN0aW9uKCkpLmdldEZpcnN0RWxlbWVudCgpOw0KKwkJU3RyaW5nIHByb2plY3ROYW1lID0gcHJvamVjdE5hbWVUZXh0LmdldFRleHQoKTsNCisJCWlmKGNkb0NIRVNTRm9sZGVyID09IG51bGwgfHwgcHJvamVjdE5hbWUgPT0gbnVsbCB8fCBwcm9qZWN0TmFtZS5pc0VtcHR5KCkpew0KKwkJCXNldE1lc3NhZ2UoIlBsZWFzZSBzZWxlY3QgQ0hFU1MgcHJvamVjdCAoZnJvbSBDRE8pIGFuZCBlbnRlciB0aGUgbmFtZSBvZiB0aGUgbmV3IHByb2plY3QhIiwgSU1lc3NhZ2VQcm92aWRlci5FUlJPUik7DQorCQl9ZWxzZXsNCisJCQlzZXROZXdQcm9qZWN0TmFtZShwcm9qZWN0TmFtZSk7DQorCQkJc2V0U2VsZWN0ZWRDSEVTU1Byb2plY3RDRE8oY2RvQ0hFU1NGb2xkZXIpOw0KKwkJCXN1cGVyLm9rUHJlc3NlZCgpOw0KKwkJfQ0KKwl9DQorCQ0KKwlwdWJsaWMgQ0RPUmVzb3VyY2VGb2xkZXIgZ2V0U2VsZWN0ZWRDSEVTU1Byb2plY3RDRE8oKSB7DQorCQlyZXR1cm4gc2VsZWN0ZWRDSEVTU1Byb2plY3RDRE87DQorCX0NCisNCisJcHVibGljIHZvaWQgc2V0U2VsZWN0ZWRDSEVTU1Byb2plY3RDRE8oQ0RPUmVzb3VyY2VGb2xkZXIgc2VsZWN0ZWRDSEVTU1Byb2plY3RDRE8pIHsNCisJCXRoaXMuc2VsZWN0ZWRDSEVTU1Byb2plY3RDRE8gPSBzZWxlY3RlZENIRVNTUHJvamVjdENETzsNCisJfQ0KKw0KKwlwdWJsaWMgU3RyaW5nIGdldE5ld1Byb2plY3ROYW1lKCkgew0KKwkJcmV0dXJuIG5ld1Byb2plY3ROYW1lOw0KKwl9DQorDQorCXB1YmxpYyB2b2lkIHNldE5ld1Byb2plY3ROYW1lKFN0cmluZyBuZXdQcm9qZWN0TmFtZSkgew0KKwkJdGhpcy5uZXdQcm9qZWN0TmFtZSA9IG5ld1Byb2plY3ROYW1lOw0KKwl9DQorDQorCXB1YmxpYyBDRE9UcmFuc2FjdGlvbiBnZXRUcmFuc2FjdGlvbigpIHsNCisJCXJldHVybiB0cmFuc2FjdGlvbjsNCisJfQ0KKw0KK30NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jZG8vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jZG8vZGlhbG9ncy91dGlscy9EaWFsb2dVdGlsLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jZG8vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jZG8vZGlhbG9ncy91dGlscy9EaWFsb2dVdGlsLmphdmEKaW5kZXggODczMTIzZS4uOGExYWRmYSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2RvL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2RvL2RpYWxvZ3MvdXRpbHMvRGlhbG9nVXRpbC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNkby9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2Nkby9kaWFsb2dzL3V0aWxzL0RpYWxvZ1V0aWwuamF2YQpAQCAtMSw0MyArMSw1MCBAQAotcGFja2FnZSBvcmcucG9sYXJzeXMuY2hlc3MuY2RvLmRpYWxvZ3MudXRpbHM7Ci0KLWltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OwotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNkby5lcmVzb3VyY2UuQ0RPUmVzb3VyY2VGb2xkZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNkby5lcmVzb3VyY2UuQ0RPUmVzb3VyY2VOb2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jZG8udmlldy5DRE9WaWV3OwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24udXRpbC5FTGlzdDsKLQotcHVibGljIGNsYXNzIERpYWxvZ1V0aWwgewotCi0JcHVibGljIHN0YXRpYyBMaXN0PENET1Jlc291cmNlRm9sZGVyPiBnZXRBbGxGb2xkZXJzKENET1ZpZXcgdmlldykgewotCQkKLQkJTGlzdDxDRE9SZXNvdXJjZUZvbGRlcj4gZm9sZGVyTGlzdCA9IG5ldyBBcnJheUxpc3Q8PigpOwotCQkKLQkJQ0RPUmVzb3VyY2VOb2RlW10gY2RvRWxlbWVudHMgPSB2aWV3LmdldEVsZW1lbnRzKCk7IAotCQlmb3IoQ0RPUmVzb3VyY2VOb2RlIGNkb0VsZW0gOiBjZG9FbGVtZW50cyl7Ci0JCQlpZihjZG9FbGVtIGluc3RhbmNlb2YgQ0RPUmVzb3VyY2VGb2xkZXIpewotCQkJCUNET1Jlc291cmNlRm9sZGVyIGNkb0ZvbGRlciA9IChDRE9SZXNvdXJjZUZvbGRlciljZG9FbGVtOwotCQkJCWZvbGRlckxpc3QuYWRkKGNkb0ZvbGRlcik7Ci0JCQkJLy9jaGVjayBmb3Igc3ViZm9sZGVycwotCQkJCUVMaXN0PENET1Jlc291cmNlTm9kZT4gc3ViTm9kZXMgPSBjZG9Gb2xkZXIuZ2V0Tm9kZXMoKTsKLQkJCQlmb2xkZXJMaXN0ID0gZ2V0U3ViRm9sZGVycyhzdWJOb2Rlcyxmb2xkZXJMaXN0KTsKLQkJCX0KLQkJfQotCQkKLQkJcmV0dXJuIGZvbGRlckxpc3Q7Ci0JfQotCi0JcHJpdmF0ZSBzdGF0aWMgTGlzdDxDRE9SZXNvdXJjZUZvbGRlcj4gZ2V0U3ViRm9sZGVycyhFTGlzdDxDRE9SZXNvdXJjZU5vZGU+IG5vZGVzLCBMaXN0PENET1Jlc291cmNlRm9sZGVyPiBmb2xkZXJMaXN0KSB7Ci0JCWZvcihDRE9SZXNvdXJjZU5vZGUgY2RvRWxlbSA6IG5vZGVzKXsKLQkJCWlmKGNkb0VsZW0gaW5zdGFuY2VvZiBDRE9SZXNvdXJjZUZvbGRlcil7Ci0JCQkJQ0RPUmVzb3VyY2VGb2xkZXIgY2RvRm9sZGVyID0gKENET1Jlc291cmNlRm9sZGVyKWNkb0VsZW07Ci0JCQkJZm9sZGVyTGlzdC5hZGQoY2RvRm9sZGVyKTsKLQkJCQkvL2NoZWNrIGZvciBzdWJmb2xkZXJzCi0JCQkJRUxpc3Q8Q0RPUmVzb3VyY2VOb2RlPiBzdWJOb2RlcyA9IGNkb0ZvbGRlci5nZXROb2RlcygpOwotCQkJCWZvbGRlckxpc3QgPSBnZXRTdWJGb2xkZXJzKHN1Yk5vZGVzLGZvbGRlckxpc3QpOwotCQkJfQotCQl9Ci0JCXJldHVybiBmb2xkZXJMaXN0OwotCX0KLX0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICogQ29weXJpZ2h0IChDKSAyMDIwIA0KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCisgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCitwYWNrYWdlIG9yZy5wb2xhcnN5cy5jaGVzcy5jZG8uZGlhbG9ncy51dGlsczsNCisNCitpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsNCitpbXBvcnQgamF2YS51dGlsLkxpc3Q7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jZG8uZXJlc291cmNlLkNET1Jlc291cmNlRm9sZGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY2RvLmVyZXNvdXJjZS5DRE9SZXNvdXJjZU5vZGU7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jZG8udmlldy5DRE9WaWV3Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuRUxpc3Q7DQorDQorcHVibGljIGNsYXNzIERpYWxvZ1V0aWwgew0KKw0KKwlwdWJsaWMgc3RhdGljIExpc3Q8Q0RPUmVzb3VyY2VGb2xkZXI+IGdldEFsbEZvbGRlcnMoQ0RPVmlldyB2aWV3KSB7DQorCQkNCisJCUxpc3Q8Q0RPUmVzb3VyY2VGb2xkZXI+IGZvbGRlckxpc3QgPSBuZXcgQXJyYXlMaXN0PD4oKTsNCisJCQ0KKwkJQ0RPUmVzb3VyY2VOb2RlW10gY2RvRWxlbWVudHMgPSB2aWV3LmdldEVsZW1lbnRzKCk7IA0KKwkJZm9yKENET1Jlc291cmNlTm9kZSBjZG9FbGVtIDogY2RvRWxlbWVudHMpew0KKwkJCWlmKGNkb0VsZW0gaW5zdGFuY2VvZiBDRE9SZXNvdXJjZUZvbGRlcil7DQorCQkJCUNET1Jlc291cmNlRm9sZGVyIGNkb0ZvbGRlciA9IChDRE9SZXNvdXJjZUZvbGRlciljZG9FbGVtOw0KKwkJCQlmb2xkZXJMaXN0LmFkZChjZG9Gb2xkZXIpOw0KKwkJCQkvL2NoZWNrIGZvciBzdWJmb2xkZXJzDQorCQkJCUVMaXN0PENET1Jlc291cmNlTm9kZT4gc3ViTm9kZXMgPSBjZG9Gb2xkZXIuZ2V0Tm9kZXMoKTsNCisJCQkJZm9sZGVyTGlzdCA9IGdldFN1YkZvbGRlcnMoc3ViTm9kZXMsZm9sZGVyTGlzdCk7DQorCQkJfQ0KKwkJfQ0KKwkJDQorCQlyZXR1cm4gZm9sZGVyTGlzdDsNCisJfQ0KKw0KKwlwcml2YXRlIHN0YXRpYyBMaXN0PENET1Jlc291cmNlRm9sZGVyPiBnZXRTdWJGb2xkZXJzKEVMaXN0PENET1Jlc291cmNlTm9kZT4gbm9kZXMsIExpc3Q8Q0RPUmVzb3VyY2VGb2xkZXI+IGZvbGRlckxpc3QpIHsNCisJCWZvcihDRE9SZXNvdXJjZU5vZGUgY2RvRWxlbSA6IG5vZGVzKXsNCisJCQlpZihjZG9FbGVtIGluc3RhbmNlb2YgQ0RPUmVzb3VyY2VGb2xkZXIpew0KKwkJCQlDRE9SZXNvdXJjZUZvbGRlciBjZG9Gb2xkZXIgPSAoQ0RPUmVzb3VyY2VGb2xkZXIpY2RvRWxlbTsNCisJCQkJZm9sZGVyTGlzdC5hZGQoY2RvRm9sZGVyKTsNCisJCQkJLy9jaGVjayBmb3Igc3ViZm9sZGVycw0KKwkJCQlFTGlzdDxDRE9SZXNvdXJjZU5vZGU+IHN1Yk5vZGVzID0gY2RvRm9sZGVyLmdldE5vZGVzKCk7DQorCQkJCWZvbGRlckxpc3QgPSBnZXRTdWJGb2xkZXJzKHN1Yk5vZGVzLGZvbGRlckxpc3QpOw0KKwkJCX0NCisJCX0NCisJCXJldHVybiBmb2xkZXJMaXN0Ow0KKwl9DQorfQ0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNkby9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2Nkby9oYW5kbGVycy9DRE9FeHBvcnRIYW5kbGVyLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jZG8vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jZG8vaGFuZGxlcnMvQ0RPRXhwb3J0SGFuZGxlci5qYXZhCmluZGV4IDVlN2Y1NzIuLjMyNmU0NmUgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNkby9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2Nkby9oYW5kbGVycy9DRE9FeHBvcnRIYW5kbGVyLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2RvL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2RvL2hhbmRsZXJzL0NET0V4cG9ydEhhbmRsZXIuamF2YQpAQCAtMSw3NyArMSw4NCBAQAotcGFja2FnZSBvcmcucG9sYXJzeXMuY2hlc3MuY2RvLmhhbmRsZXJzOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5jb21tYW5kcy5BYnN0cmFjdEhhbmRsZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5jb21tYW5kcy5FeGVjdXRpb25FdmVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLmNvbW1hbmRzLkV4ZWN1dGlvbkV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUHJvamVjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuTnVsbFByb2dyZXNzTW9uaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuUGF0aDsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY2RvLmVyZXNvdXJjZS5DRE9SZXNvdXJjZUZvbGRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY2RvLnNwaS50cmFuc2Zlci5GaWxlU3lzdGVtVHJhbnNmZXJTeXN0ZW07Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNkby50cmFuc2FjdGlvbi5DRE9UcmFuc2FjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY2RvLnRyYW5zZmVyLkNET1RyYW5zZmVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jZG8udHJhbnNmZXIuQ0RPVHJhbnNmZXJFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jZG8udHJhbnNmZXIuQ0RPVHJhbnNmZXJNYXBwaW5nOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jZG8udHJhbnNmZXIuQ0RPVHJhbnNmZXJTeXN0ZW07Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNkby50cmFuc2Zlci5zcGkucmVwb3NpdG9yeS5SZXBvc2l0b3J5VHJhbnNmZXJTeXN0ZW07Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2UuZGlhbG9ncy5NZXNzYWdlRGlhbG9nOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLndpbmRvdy5XaW5kb3c7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuU2hlbGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudWkuSVdvcmtiZW5jaFdpbmRvdzsKLWltcG9ydCBvcmcuZWNsaXBzZS51aS5oYW5kbGVycy5IYW5kbGVyVXRpbDsKLWltcG9ydCBvcmcucG9sYXJzeXMuY2hlc3MuY2RvLmRpYWxvZ3MuQ0RPRXhwb3J0RGlhbG9nOwotCi1wdWJsaWMgY2xhc3MgQ0RPRXhwb3J0SGFuZGxlciBleHRlbmRzIEFic3RyYWN0SGFuZGxlciB7Ci0JCi0JcHJpdmF0ZSBTdHJpbmcgZXJyb3JNc2cgPSAiIjsKLQotCUBPdmVycmlkZQotCXB1YmxpYyBPYmplY3QgZXhlY3V0ZShFeGVjdXRpb25FdmVudCBldmVudCkgdGhyb3dzIEV4ZWN1dGlvbkV4Y2VwdGlvbiB7Ci0JCUlXb3JrYmVuY2hXaW5kb3cgd2luZG93ID0gSGFuZGxlclV0aWwuZ2V0QWN0aXZlV29ya2JlbmNoV2luZG93Q2hlY2tlZChldmVudCk7Ci0JCQotCQlpZih3aW5kb3cgIT0gbnVsbCl7Ci0JCQlTaGVsbCBzaGVsbCA9IHdpbmRvdy5nZXRTaGVsbCgpOwotCQkJCi0JCQkvL1Nob3cgYSBkaWFsb2cgd2l0aCBhIGxpc3Qgb2YgYWxsIHRoZSBDSEVTUyBwcm9qZWN0cyBpbiB0aGUgd29ya3NwYWNlIGFuZCAKLQkJCS8vYW5kIGEgbGlzdCBvZiB0aGUgQ0RPIGZvbGRlcnMgKGZyb20gdGhlIGNvbmZpZ3VyZWQgQ0RPIHJlcG8pLgotCQkJLy9nZXQgdGhlIHNlbGVjdGVkIHByb2plY3QgYW5kIENETyBmb2xkZXIgYW5kIHBlcmZvcm0gdGhlIGNvcHkgZnJvbSB3b3Jrc3BhY2UgdG8gQ0RPLgotCQkJQ0RPRXhwb3J0RGlhbG9nIGRpYWxvZyA9IG51bGw7Ci0JCQl0cnl7Ci0JCQkJZGlhbG9nID0gbmV3IENET0V4cG9ydERpYWxvZyhzaGVsbCk7Ci0JCQl9Y2F0Y2ggKEV4Y2VwdGlvbiBlKXsKLQkJCQlNZXNzYWdlRGlhbG9nLm9wZW5FcnJvcihzaGVsbCwgIkV4cG9ydCBDSEVTUyBQcm9qZWN0IHRvIENETyIsICJFcnJvcjogIiArIGUuZ2V0TWVzc2FnZSgpKTsKLQkJCX0KLQotCQkJaWYoZGlhbG9nICE9IG51bGwgJiYgZGlhbG9nLm9wZW4oKSA9PSBXaW5kb3cuT0spewotCQkJCUNET1Jlc291cmNlRm9sZGVyIGNkb0ZvbGRlciA9IGRpYWxvZy5nZXRTZWxlY3RlZENET0ZvbGRlcigpOwotCQkJCUlQcm9qZWN0IGNoZXNzUHJvamVjdCA9IGRpYWxvZy5nZXRTZWxlY3RlZENIRVNTUHJvamVjdCgpOwotCQkJCWlmKGNkb0ZvbGRlciAhPSBudWxsICYmIGNoZXNzUHJvamVjdCAhPSBudWxsKXsKLQkJCQkJQ0RPVHJhbnNhY3Rpb24gdHJhbnNhY3Rpb24gPSBkaWFsb2cuZ2V0VHJhbnNhY3Rpb24oKTsKLQkJCQkJdHJ5ewotCQkJCQkJU3RyaW5nIGZpbGVwYXRoID0gY2hlc3NQcm9qZWN0LmdldExvY2F0aW9uKCkudG9TdHJpbmcoKTsKLQkJCQkJCUNET1RyYW5zZmVyRWxlbWVudCBzb3VyY2UgPSBGaWxlU3lzdGVtVHJhbnNmZXJTeXN0ZW0uSU5TVEFOQ0UuZ2V0RWxlbWVudChuZXcgUGF0aChmaWxlcGF0aCkpOwotCi0JCQkJCQlDRE9UcmFuc2ZlclN5c3RlbSB0YXJnZXQgPSBuZXcgUmVwb3NpdG9yeVRyYW5zZmVyU3lzdGVtKHRyYW5zYWN0aW9uKTsKLQkJCQkJCUNET1RyYW5zZmVyIHRyYW5zZmVyID0gbmV3IENET1RyYW5zZmVyKHNvdXJjZS5nZXRTeXN0ZW0oKSwgdGFyZ2V0KTsKLQotCQkJCQkJQ0RPVHJhbnNmZXJNYXBwaW5nIG1hcHBpbmcgPSB0cmFuc2Zlci5tYXAoZmlsZXBhdGgsIG5ldyBOdWxsUHJvZ3Jlc3NNb25pdG9yKCkpOwotCQkJCQkJbWFwcGluZy5zZXRSZWxhdGl2ZVBhdGgoY2RvRm9sZGVyLmdldFBhdGgoKSArICIvIiArIGNoZXNzUHJvamVjdC5nZXROYW1lKCkpOwotCQkJCQkJdHJhbnNmZXIucGVyZm9ybSgpOwotCi0JCQkJCQl0cmFuc2FjdGlvbi5jb21taXQoKTsKLQkJCQkJCXRyYW5zYWN0aW9uLmNsb3NlKCk7Ci0JCQkJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7Ci0JCQkJCQllLnByaW50U3RhY2tUcmFjZSgpOwotCQkJCQkJZXJyb3JNc2cgPSBlLmdldE1lc3NhZ2UoKTsKLQkJCQkJfQotCQkJCX0KLQkJCX0KLQkJCWlmKGVycm9yTXNnICE9IG51bGwgJiYgIWVycm9yTXNnLmlzRW1wdHkoKSl7Ci0JCQkJTWVzc2FnZURpYWxvZy5vcGVuRXJyb3Ioc2hlbGwsICJFeHBvcnQgQ0hFU1MgUHJvamVjdCB0byBDRE8iLCAiRXJyb3I6ICIgKyBlcnJvck1zZyk7Ci0JCQkJZXJyb3JNc2cgPSAiIjsKLQkJCX0KLQkJfQotCQlyZXR1cm4gbnVsbDsKLQl9Ci0KLX0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICogQ29weXJpZ2h0IChDKSAyMDIwIA0KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCisgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCitwYWNrYWdlIG9yZy5wb2xhcnN5cy5jaGVzcy5jZG8uaGFuZGxlcnM7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUuY29tbWFuZHMuQWJzdHJhY3RIYW5kbGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLmNvbW1hbmRzLkV4ZWN1dGlvbkV2ZW50Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLmNvbW1hbmRzLkV4ZWN1dGlvbkV4Y2VwdGlvbjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVByb2plY3Q7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5OdWxsUHJvZ3Jlc3NNb25pdG9yOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuUGF0aDsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNkby5lcmVzb3VyY2UuQ0RPUmVzb3VyY2VGb2xkZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jZG8uc3BpLnRyYW5zZmVyLkZpbGVTeXN0ZW1UcmFuc2ZlclN5c3RlbTsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNkby50cmFuc2FjdGlvbi5DRE9UcmFuc2FjdGlvbjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNkby50cmFuc2Zlci5DRE9UcmFuc2ZlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNkby50cmFuc2Zlci5DRE9UcmFuc2ZlckVsZW1lbnQ7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jZG8udHJhbnNmZXIuQ0RPVHJhbnNmZXJNYXBwaW5nOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY2RvLnRyYW5zZmVyLkNET1RyYW5zZmVyU3lzdGVtOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY2RvLnRyYW5zZmVyLnNwaS5yZXBvc2l0b3J5LlJlcG9zaXRvcnlUcmFuc2ZlclN5c3RlbTsNCitpbXBvcnQgb3JnLmVjbGlwc2UuamZhY2UuZGlhbG9ncy5NZXNzYWdlRGlhbG9nOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS53aW5kb3cuV2luZG93Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5TaGVsbDsNCitpbXBvcnQgb3JnLmVjbGlwc2UudWkuSVdvcmtiZW5jaFdpbmRvdzsNCitpbXBvcnQgb3JnLmVjbGlwc2UudWkuaGFuZGxlcnMuSGFuZGxlclV0aWw7DQoraW1wb3J0IG9yZy5wb2xhcnN5cy5jaGVzcy5jZG8uZGlhbG9ncy5DRE9FeHBvcnREaWFsb2c7DQorDQorcHVibGljIGNsYXNzIENET0V4cG9ydEhhbmRsZXIgZXh0ZW5kcyBBYnN0cmFjdEhhbmRsZXIgew0KKwkNCisJcHJpdmF0ZSBTdHJpbmcgZXJyb3JNc2cgPSAiIjsNCisNCisJQE92ZXJyaWRlDQorCXB1YmxpYyBPYmplY3QgZXhlY3V0ZShFeGVjdXRpb25FdmVudCBldmVudCkgdGhyb3dzIEV4ZWN1dGlvbkV4Y2VwdGlvbiB7DQorCQlJV29ya2JlbmNoV2luZG93IHdpbmRvdyA9IEhhbmRsZXJVdGlsLmdldEFjdGl2ZVdvcmtiZW5jaFdpbmRvd0NoZWNrZWQoZXZlbnQpOw0KKwkJDQorCQlpZih3aW5kb3cgIT0gbnVsbCl7DQorCQkJU2hlbGwgc2hlbGwgPSB3aW5kb3cuZ2V0U2hlbGwoKTsNCisJCQkNCisJCQkvL1Nob3cgYSBkaWFsb2cgd2l0aCBhIGxpc3Qgb2YgYWxsIHRoZSBDSEVTUyBwcm9qZWN0cyBpbiB0aGUgd29ya3NwYWNlIGFuZCANCisJCQkvL2FuZCBhIGxpc3Qgb2YgdGhlIENETyBmb2xkZXJzIChmcm9tIHRoZSBjb25maWd1cmVkIENETyByZXBvKS4NCisJCQkvL2dldCB0aGUgc2VsZWN0ZWQgcHJvamVjdCBhbmQgQ0RPIGZvbGRlciBhbmQgcGVyZm9ybSB0aGUgY29weSBmcm9tIHdvcmtzcGFjZSB0byBDRE8uDQorCQkJQ0RPRXhwb3J0RGlhbG9nIGRpYWxvZyA9IG51bGw7DQorCQkJdHJ5ew0KKwkJCQlkaWFsb2cgPSBuZXcgQ0RPRXhwb3J0RGlhbG9nKHNoZWxsKTsNCisJCQl9Y2F0Y2ggKEV4Y2VwdGlvbiBlKXsNCisJCQkJTWVzc2FnZURpYWxvZy5vcGVuRXJyb3Ioc2hlbGwsICJFeHBvcnQgQ0hFU1MgUHJvamVjdCB0byBDRE8iLCAiRXJyb3I6ICIgKyBlLmdldE1lc3NhZ2UoKSk7DQorCQkJfQ0KKw0KKwkJCWlmKGRpYWxvZyAhPSBudWxsICYmIGRpYWxvZy5vcGVuKCkgPT0gV2luZG93Lk9LKXsNCisJCQkJQ0RPUmVzb3VyY2VGb2xkZXIgY2RvRm9sZGVyID0gZGlhbG9nLmdldFNlbGVjdGVkQ0RPRm9sZGVyKCk7DQorCQkJCUlQcm9qZWN0IGNoZXNzUHJvamVjdCA9IGRpYWxvZy5nZXRTZWxlY3RlZENIRVNTUHJvamVjdCgpOw0KKwkJCQlpZihjZG9Gb2xkZXIgIT0gbnVsbCAmJiBjaGVzc1Byb2plY3QgIT0gbnVsbCl7DQorCQkJCQlDRE9UcmFuc2FjdGlvbiB0cmFuc2FjdGlvbiA9IGRpYWxvZy5nZXRUcmFuc2FjdGlvbigpOw0KKwkJCQkJdHJ5ew0KKwkJCQkJCVN0cmluZyBmaWxlcGF0aCA9IGNoZXNzUHJvamVjdC5nZXRMb2NhdGlvbigpLnRvU3RyaW5nKCk7DQorCQkJCQkJQ0RPVHJhbnNmZXJFbGVtZW50IHNvdXJjZSA9IEZpbGVTeXN0ZW1UcmFuc2ZlclN5c3RlbS5JTlNUQU5DRS5nZXRFbGVtZW50KG5ldyBQYXRoKGZpbGVwYXRoKSk7DQorDQorCQkJCQkJQ0RPVHJhbnNmZXJTeXN0ZW0gdGFyZ2V0ID0gbmV3IFJlcG9zaXRvcnlUcmFuc2ZlclN5c3RlbSh0cmFuc2FjdGlvbik7DQorCQkJCQkJQ0RPVHJhbnNmZXIgdHJhbnNmZXIgPSBuZXcgQ0RPVHJhbnNmZXIoc291cmNlLmdldFN5c3RlbSgpLCB0YXJnZXQpOw0KKw0KKwkJCQkJCUNET1RyYW5zZmVyTWFwcGluZyBtYXBwaW5nID0gdHJhbnNmZXIubWFwKGZpbGVwYXRoLCBuZXcgTnVsbFByb2dyZXNzTW9uaXRvcigpKTsNCisJCQkJCQltYXBwaW5nLnNldFJlbGF0aXZlUGF0aChjZG9Gb2xkZXIuZ2V0UGF0aCgpICsgIi8iICsgY2hlc3NQcm9qZWN0LmdldE5hbWUoKSk7DQorCQkJCQkJdHJhbnNmZXIucGVyZm9ybSgpOw0KKw0KKwkJCQkJCXRyYW5zYWN0aW9uLmNvbW1pdCgpOw0KKwkJCQkJCXRyYW5zYWN0aW9uLmNsb3NlKCk7DQorCQkJCQl9IGNhdGNoIChFeGNlcHRpb24gZSkgew0KKwkJCQkJCWUucHJpbnRTdGFja1RyYWNlKCk7DQorCQkJCQkJZXJyb3JNc2cgPSBlLmdldE1lc3NhZ2UoKTsNCisJCQkJCX0NCisJCQkJfQ0KKwkJCX0NCisJCQlpZihlcnJvck1zZyAhPSBudWxsICYmICFlcnJvck1zZy5pc0VtcHR5KCkpew0KKwkJCQlNZXNzYWdlRGlhbG9nLm9wZW5FcnJvcihzaGVsbCwgIkV4cG9ydCBDSEVTUyBQcm9qZWN0IHRvIENETyIsICJFcnJvcjogIiArIGVycm9yTXNnKTsNCisJCQkJZXJyb3JNc2cgPSAiIjsNCisJCQl9DQorCQl9DQorCQlyZXR1cm4gbnVsbDsNCisJfQ0KKw0KK30NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jZG8vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jZG8vaGFuZGxlcnMvQ0RPSW1wb3J0SGFuZGxlci5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2RvL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2RvL2hhbmRsZXJzL0NET0ltcG9ydEhhbmRsZXIuamF2YQppbmRleCBjMmY2MDdlLi5lMjc1NWE3IDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jZG8vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jZG8vaGFuZGxlcnMvQ0RPSW1wb3J0SGFuZGxlci5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNkby9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2Nkby9oYW5kbGVycy9DRE9JbXBvcnRIYW5kbGVyLmphdmEKQEAgLTEsMTA2ICsxLDExMyBAQAotcGFja2FnZSBvcmcucG9sYXJzeXMuY2hlc3MuY2RvLmhhbmRsZXJzOwotCi1pbXBvcnQgamF2YS5pby5GaWxlOwotaW1wb3J0IGphdmEubmV0LlVSSTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUuY29tbWFuZHMuQWJzdHJhY3RIYW5kbGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUuY29tbWFuZHMuRXhlY3V0aW9uRXZlbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5jb21tYW5kcy5FeGVjdXRpb25FeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVByb2plY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuUmVzb3VyY2VzUGx1Z2luOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JUGF0aDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuTnVsbFByb2dyZXNzTW9uaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuUGF0aDsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY2RvLmVyZXNvdXJjZS5DRE9SZXNvdXJjZUZvbGRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY2RvLmVyZXNvdXJjZS5DRE9SZXNvdXJjZU5vZGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNkby5zcGkudHJhbnNmZXIuRmlsZVN5c3RlbVRyYW5zZmVyU3lzdGVtOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jZG8udHJhbnNhY3Rpb24uQ0RPVHJhbnNhY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNkby50cmFuc2Zlci5DRE9UcmFuc2ZlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY2RvLnRyYW5zZmVyLkNET1RyYW5zZmVyRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY2RvLnRyYW5zZmVyLkNET1RyYW5zZmVyTWFwcGluZzsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY2RvLnRyYW5zZmVyLkNET1RyYW5zZmVyU3lzdGVtOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jZG8udHJhbnNmZXIuc3BpLnJlcG9zaXRvcnkuUmVwb3NpdG9yeVRyYW5zZmVyU3lzdGVtOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLmRpYWxvZ3MuTWVzc2FnZURpYWxvZzsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS53aW5kb3cuV2luZG93OwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLlNoZWxsOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLklXb3JrYmVuY2hXaW5kb3c7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudWkuaGFuZGxlcnMuSGFuZGxlclV0aWw7Ci1pbXBvcnQgb3JnLnBvbGFyc3lzLmNoZXNzLmNkby5kaWFsb2dzLkNET0ltcG9ydERpYWxvZzsKLWltcG9ydCBvcmcucG9sYXJzeXMuY2hlc3MuY29yZS51dGlsLkNIRVNTUHJvamVjdFN1cHBvcnQ7Ci0KLXB1YmxpYyBjbGFzcyBDRE9JbXBvcnRIYW5kbGVyIGV4dGVuZHMgQWJzdHJhY3RIYW5kbGVyIHsKLQkKLQlwcml2YXRlIFN0cmluZyBlcnJvck1zZyA9ICIiOwotCQotCUBPdmVycmlkZQotCXB1YmxpYyBPYmplY3QgZXhlY3V0ZShFeGVjdXRpb25FdmVudCBldmVudCkgdGhyb3dzIEV4ZWN1dGlvbkV4Y2VwdGlvbiB7Ci0KLQkJSVdvcmtiZW5jaFdpbmRvdyB3aW5kb3cgPSBIYW5kbGVyVXRpbC5nZXRBY3RpdmVXb3JrYmVuY2hXaW5kb3dDaGVja2VkKGV2ZW50KTsKLQotCQlpZih3aW5kb3cgIT0gbnVsbCl7Ci0JCQlTaGVsbCBzaGVsbCA9IHdpbmRvdy5nZXRTaGVsbCgpOwotCQkJCi0JCQkvL1Nob3cgYSBkaWFsb2cgd2l0aCBhIGxpc3Qgb2YgYWxsIHRoZSBDSEVTUyBwcm9qZWN0cyBpbiB0aGUgY29uZmlndXJlZCBDRE8uIAotCQkJLy9nZXQgdGhlIHNlbGVjdGVkIENETyBwcm9qZWN0IGFuZCB0aGUgZW50ZXJlZCBuYW1lIGZvciB0aGUgcHJvamVjdCAoZGVmYXVsdCBzYW1lIG5hbWU/KQotCQkJLy9wZXJmb3JtIHRoZSBjb3B5IGZyb20gQ0RPIHRvIHdvcmtzcGFjZS4KLQkJCUNET0ltcG9ydERpYWxvZyBkaWFsb2cgPSBudWxsOwotCQkJdHJ5ewotCQkJCWRpYWxvZyA9IG5ldyBDRE9JbXBvcnREaWFsb2coc2hlbGwpOwotCQkJfWNhdGNoIChFeGNlcHRpb24gZSl7Ci0JCQkJTWVzc2FnZURpYWxvZy5vcGVuRXJyb3Ioc2hlbGwsICJJbXBvcnQgQ0hFU1MgUHJvamVjdCBmcm9tIENETyIsICJFcnJvcjogIiArIGUuZ2V0TWVzc2FnZSgpKTsKLQkJCX0KLQotCQkJaWYoZGlhbG9nICE9IG51bGwgJiYgZGlhbG9nLm9wZW4oKSA9PSBXaW5kb3cuT0spewotCQkJCUNET1Jlc291cmNlRm9sZGVyIGNoZXNzUHJvamVjdENETyA9IGRpYWxvZy5nZXRTZWxlY3RlZENIRVNTUHJvamVjdENETygpOwotCQkJCVN0cmluZyBwcm9qZWN0TmFtZSA9IGRpYWxvZy5nZXROZXdQcm9qZWN0TmFtZSgpOwotCQkJCWlmKGNoZXNzUHJvamVjdENETyAhPSBudWxsICYmIHByb2plY3ROYW1lICE9IG51bGwpewotCi0JCQkJCS8vY3JlYXRlIG5ldyBDSEVTUyBwcm9qZWN0IChpZiBub3QgYWxyZWFkeSB0aGVyZSkKLQkJCQkJdHJ5ewotCQkJCQkJSVByb2plY3QgY2hlc3NQcm9qZWN0ID0gUmVzb3VyY2VzUGx1Z2luLmdldFdvcmtzcGFjZSgpLmdldFJvb3QoKS5nZXRQcm9qZWN0KHByb2plY3ROYW1lKTsKLQkJCQkJCWlmKGNoZXNzUHJvamVjdCA9PSBudWxsIHx8ICFjaGVzc1Byb2plY3QuZXhpc3RzKCkpewotCQkJCQkJCUlQYXRoIHdvcmtzcGFjZUxvY2F0aW9uID0gUmVzb3VyY2VzUGx1Z2luLmdldFdvcmtzcGFjZSgpLmdldFJvb3QoKS5nZXRMb2NhdGlvbigpOwotCQkJCQkJCVVSSSBsb2NhdGlvbiA9IFVSSS5jcmVhdGUod29ya3NwYWNlTG9jYXRpb24gKyAiLyIgKyBwcm9qZWN0TmFtZSk7Ci0JCQkJCQkJY2hlc3NQcm9qZWN0PUNIRVNTUHJvamVjdFN1cHBvcnQuY3JlYXRlUHJvamVjdChwcm9qZWN0TmFtZSwgbnVsbCk7Ci0JCQkJCQl9ZWxzZSBpZighY2hlc3NQcm9qZWN0LmlzT3BlbigpKXsKLQkJCQkJCQljaGVzc1Byb2plY3Qub3BlbihuZXcgTnVsbFByb2dyZXNzTW9uaXRvcigpKTsKLQkJCQkJCX0KLQotCQkJCQkJQ0RPVHJhbnNhY3Rpb24gdHJhbnNhY3Rpb24gPSBkaWFsb2cuZ2V0VHJhbnNhY3Rpb24oKTsKLQkJCQkJCQotCQkJCQkJU3RyaW5nIGZpbGVwYXRoID0gY2hlc3NQcm9qZWN0LmdldExvY2F0aW9uKCkudG9TdHJpbmcoKTsKLS8vCQkJCQkJU3lzdGVtLm91dC5wcmludGxuKGZpbGVwYXRoLnRvU3RyaW5nKCkpOwotCQkJCQkJLy91Z2x5IHdvcmthcm91bmQgdG8gZ2V0IHJlbGF0aXZlIHBhdGggLS0gVE9ETzogd2lsbCBpdCBldmVyIHdvcmsgb24gd2luZG93cyBhcyB3ZWxsPwotCQkJCQkJZmlsZXBhdGggPSBmaWxlcGF0aC5zdWJzdHJpbmcoU3lzdGVtLmdldFByb3BlcnR5KCJ1c2VyLmhvbWUiKS5sZW5ndGgoKSsxKTsKLS8vCQkJCQkJU3lzdGVtLm91dC5wcmludGxuKGZpbGVwYXRoLnRvU3RyaW5nKCkpOwotCQkJCQkJCi0JCQkJCQlDRE9UcmFuc2ZlclN5c3RlbSBzb3VyY2UgPSBuZXcgUmVwb3NpdG9yeVRyYW5zZmVyU3lzdGVtKHRyYW5zYWN0aW9uKTsKLQkJCQkJCUNET1RyYW5zZmVyRWxlbWVudCB0YXJnZXQgPSBGaWxlU3lzdGVtVHJhbnNmZXJTeXN0ZW0uSU5TVEFOQ0UuZ2V0RWxlbWVudChjaGVzc1Byb2plY3QuZ2V0TG9jYXRpb24oKSk7Ci0KLQkJCQkJCUNET1RyYW5zZmVyIHRyYW5zZmVyID0gbmV3IENET1RyYW5zZmVyKHNvdXJjZSwgdGFyZ2V0LmdldFN5c3RlbSgpKTsKLQotCQkJCQkJZm9yKENET1Jlc291cmNlTm9kZSBub2RlIDogY2hlc3NQcm9qZWN0Q0RPLmdldE5vZGVzKCkpewotCQkJCQkJCWlmKCFub2RlLmdldE5hbWUoKS5lcXVhbHMoIi5wcm9qZWN0IikpewotCQkJCQkJCQlDRE9UcmFuc2Zlck1hcHBpbmcgbWFwcGluZyA9IHRyYW5zZmVyLm1hcChub2RlLmdldFBhdGgoKSwgbmV3IE51bGxQcm9ncmVzc01vbml0b3IoKSk7Ci0JCQkJCQkJCW1hcHBpbmcuc2V0UmVsYXRpdmVQYXRoKGZpbGVwYXRoICsgRmlsZS5zZXBhcmF0b3IgKyBub2RlLmdldE5hbWUoKSk7Ci0JCQkJCQkJCXRyYW5zZmVyLnBlcmZvcm0oKTsKLQkJCQkJCQl9Ci0JCQkJCQl9Ci0JCQkJCQl0cmFuc2FjdGlvbi5jb21taXQoKTsKLQkJCQkJCXRyYW5zYWN0aW9uLmNsb3NlKCk7Ci0JCQkJCQkKLQkJCQkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKLQkJCQkJCWUucHJpbnRTdGFja1RyYWNlKCk7Ci0JCQkJCQllcnJvck1zZyA9IGUuZ2V0TWVzc2FnZSgpOwotCQkJCQl9Ci0JCQkJfQotCQkJfQotCQkJaWYoZXJyb3JNc2cgIT0gbnVsbCAmJiAhZXJyb3JNc2cuaXNFbXB0eSgpKXsKLQkJCQlNZXNzYWdlRGlhbG9nLm9wZW5FcnJvcihzaGVsbCwgIkltcG9ydCBDSEVTUyBQcm9qZWN0IGZyb20gQ0RPIiwgIkVycm9yOiAiICsgZXJyb3JNc2cpOwotCQkJCWVycm9yTXNnID0gIiI7Ci0JCQl9Ci0JCX0KLQkJcmV0dXJuIG51bGw7Ci0KLQl9Ci19CisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqIENvcHlyaWdodCAoQykgMjAyMCANCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQorICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorcGFja2FnZSBvcmcucG9sYXJzeXMuY2hlc3MuY2RvLmhhbmRsZXJzOw0KKw0KK2ltcG9ydCBqYXZhLmlvLkZpbGU7DQoraW1wb3J0IGphdmEubmV0LlVSSTsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5jb21tYW5kcy5BYnN0cmFjdEhhbmRsZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUuY29tbWFuZHMuRXhlY3V0aW9uRXZlbnQ7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUuY29tbWFuZHMuRXhlY3V0aW9uRXhjZXB0aW9uOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUHJvamVjdDsNCitpbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuUmVzb3VyY2VzUGx1Z2luOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVBhdGg7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5OdWxsUHJvZ3Jlc3NNb25pdG9yOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuUGF0aDsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNkby5lcmVzb3VyY2UuQ0RPUmVzb3VyY2VGb2xkZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jZG8uZXJlc291cmNlLkNET1Jlc291cmNlTm9kZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNkby5zcGkudHJhbnNmZXIuRmlsZVN5c3RlbVRyYW5zZmVyU3lzdGVtOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY2RvLnRyYW5zYWN0aW9uLkNET1RyYW5zYWN0aW9uOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY2RvLnRyYW5zZmVyLkNET1RyYW5zZmVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY2RvLnRyYW5zZmVyLkNET1RyYW5zZmVyRWxlbWVudDsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNkby50cmFuc2Zlci5DRE9UcmFuc2Zlck1hcHBpbmc7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jZG8udHJhbnNmZXIuQ0RPVHJhbnNmZXJTeXN0ZW07DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jZG8udHJhbnNmZXIuc3BpLnJlcG9zaXRvcnkuUmVwb3NpdG9yeVRyYW5zZmVyU3lzdGVtOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS5kaWFsb2dzLk1lc3NhZ2VEaWFsb2c7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLndpbmRvdy5XaW5kb3c7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLlNoZWxsOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51aS5JV29ya2JlbmNoV2luZG93Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS51aS5oYW5kbGVycy5IYW5kbGVyVXRpbDsNCitpbXBvcnQgb3JnLnBvbGFyc3lzLmNoZXNzLmNkby5kaWFsb2dzLkNET0ltcG9ydERpYWxvZzsNCitpbXBvcnQgb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUudXRpbC5DSEVTU1Byb2plY3RTdXBwb3J0Ow0KKw0KK3B1YmxpYyBjbGFzcyBDRE9JbXBvcnRIYW5kbGVyIGV4dGVuZHMgQWJzdHJhY3RIYW5kbGVyIHsNCisJDQorCXByaXZhdGUgU3RyaW5nIGVycm9yTXNnID0gIiI7DQorCQ0KKwlAT3ZlcnJpZGUNCisJcHVibGljIE9iamVjdCBleGVjdXRlKEV4ZWN1dGlvbkV2ZW50IGV2ZW50KSB0aHJvd3MgRXhlY3V0aW9uRXhjZXB0aW9uIHsNCisNCisJCUlXb3JrYmVuY2hXaW5kb3cgd2luZG93ID0gSGFuZGxlclV0aWwuZ2V0QWN0aXZlV29ya2JlbmNoV2luZG93Q2hlY2tlZChldmVudCk7DQorDQorCQlpZih3aW5kb3cgIT0gbnVsbCl7DQorCQkJU2hlbGwgc2hlbGwgPSB3aW5kb3cuZ2V0U2hlbGwoKTsNCisJCQkNCisJCQkvL1Nob3cgYSBkaWFsb2cgd2l0aCBhIGxpc3Qgb2YgYWxsIHRoZSBDSEVTUyBwcm9qZWN0cyBpbiB0aGUgY29uZmlndXJlZCBDRE8uIA0KKwkJCS8vZ2V0IHRoZSBzZWxlY3RlZCBDRE8gcHJvamVjdCBhbmQgdGhlIGVudGVyZWQgbmFtZSBmb3IgdGhlIHByb2plY3QgKGRlZmF1bHQgc2FtZSBuYW1lPykNCisJCQkvL3BlcmZvcm0gdGhlIGNvcHkgZnJvbSBDRE8gdG8gd29ya3NwYWNlLg0KKwkJCUNET0ltcG9ydERpYWxvZyBkaWFsb2cgPSBudWxsOw0KKwkJCXRyeXsNCisJCQkJZGlhbG9nID0gbmV3IENET0ltcG9ydERpYWxvZyhzaGVsbCk7DQorCQkJfWNhdGNoIChFeGNlcHRpb24gZSl7DQorCQkJCU1lc3NhZ2VEaWFsb2cub3BlbkVycm9yKHNoZWxsLCAiSW1wb3J0IENIRVNTIFByb2plY3QgZnJvbSBDRE8iLCAiRXJyb3I6ICIgKyBlLmdldE1lc3NhZ2UoKSk7DQorCQkJfQ0KKw0KKwkJCWlmKGRpYWxvZyAhPSBudWxsICYmIGRpYWxvZy5vcGVuKCkgPT0gV2luZG93Lk9LKXsNCisJCQkJQ0RPUmVzb3VyY2VGb2xkZXIgY2hlc3NQcm9qZWN0Q0RPID0gZGlhbG9nLmdldFNlbGVjdGVkQ0hFU1NQcm9qZWN0Q0RPKCk7DQorCQkJCVN0cmluZyBwcm9qZWN0TmFtZSA9IGRpYWxvZy5nZXROZXdQcm9qZWN0TmFtZSgpOw0KKwkJCQlpZihjaGVzc1Byb2plY3RDRE8gIT0gbnVsbCAmJiBwcm9qZWN0TmFtZSAhPSBudWxsKXsNCisNCisJCQkJCS8vY3JlYXRlIG5ldyBDSEVTUyBwcm9qZWN0IChpZiBub3QgYWxyZWFkeSB0aGVyZSkNCisJCQkJCXRyeXsNCisJCQkJCQlJUHJvamVjdCBjaGVzc1Byb2plY3QgPSBSZXNvdXJjZXNQbHVnaW4uZ2V0V29ya3NwYWNlKCkuZ2V0Um9vdCgpLmdldFByb2plY3QocHJvamVjdE5hbWUpOw0KKwkJCQkJCWlmKGNoZXNzUHJvamVjdCA9PSBudWxsIHx8ICFjaGVzc1Byb2plY3QuZXhpc3RzKCkpew0KKwkJCQkJCQlJUGF0aCB3b3Jrc3BhY2VMb2NhdGlvbiA9IFJlc291cmNlc1BsdWdpbi5nZXRXb3Jrc3BhY2UoKS5nZXRSb290KCkuZ2V0TG9jYXRpb24oKTsNCisJCQkJCQkJVVJJIGxvY2F0aW9uID0gVVJJLmNyZWF0ZSh3b3Jrc3BhY2VMb2NhdGlvbiArICIvIiArIHByb2plY3ROYW1lKTsNCisJCQkJCQkJY2hlc3NQcm9qZWN0PUNIRVNTUHJvamVjdFN1cHBvcnQuY3JlYXRlUHJvamVjdChwcm9qZWN0TmFtZSwgbnVsbCk7DQorCQkJCQkJfWVsc2UgaWYoIWNoZXNzUHJvamVjdC5pc09wZW4oKSl7DQorCQkJCQkJCWNoZXNzUHJvamVjdC5vcGVuKG5ldyBOdWxsUHJvZ3Jlc3NNb25pdG9yKCkpOw0KKwkJCQkJCX0NCisNCisJCQkJCQlDRE9UcmFuc2FjdGlvbiB0cmFuc2FjdGlvbiA9IGRpYWxvZy5nZXRUcmFuc2FjdGlvbigpOw0KKwkJCQkJCQ0KKwkJCQkJCVN0cmluZyBmaWxlcGF0aCA9IGNoZXNzUHJvamVjdC5nZXRMb2NhdGlvbigpLnRvU3RyaW5nKCk7DQorLy8JCQkJCQlTeXN0ZW0ub3V0LnByaW50bG4oZmlsZXBhdGgudG9TdHJpbmcoKSk7DQorCQkJCQkJLy91Z2x5IHdvcmthcm91bmQgdG8gZ2V0IHJlbGF0aXZlIHBhdGggLS0gVE9ETzogd2lsbCBpdCBldmVyIHdvcmsgb24gd2luZG93cyBhcyB3ZWxsPw0KKwkJCQkJCWZpbGVwYXRoID0gZmlsZXBhdGguc3Vic3RyaW5nKFN5c3RlbS5nZXRQcm9wZXJ0eSgidXNlci5ob21lIikubGVuZ3RoKCkrMSk7DQorLy8JCQkJCQlTeXN0ZW0ub3V0LnByaW50bG4oZmlsZXBhdGgudG9TdHJpbmcoKSk7DQorCQkJCQkJDQorCQkJCQkJQ0RPVHJhbnNmZXJTeXN0ZW0gc291cmNlID0gbmV3IFJlcG9zaXRvcnlUcmFuc2ZlclN5c3RlbSh0cmFuc2FjdGlvbik7DQorCQkJCQkJQ0RPVHJhbnNmZXJFbGVtZW50IHRhcmdldCA9IEZpbGVTeXN0ZW1UcmFuc2ZlclN5c3RlbS5JTlNUQU5DRS5nZXRFbGVtZW50KGNoZXNzUHJvamVjdC5nZXRMb2NhdGlvbigpKTsNCisNCisJCQkJCQlDRE9UcmFuc2ZlciB0cmFuc2ZlciA9IG5ldyBDRE9UcmFuc2Zlcihzb3VyY2UsIHRhcmdldC5nZXRTeXN0ZW0oKSk7DQorDQorCQkJCQkJZm9yKENET1Jlc291cmNlTm9kZSBub2RlIDogY2hlc3NQcm9qZWN0Q0RPLmdldE5vZGVzKCkpew0KKwkJCQkJCQlpZighbm9kZS5nZXROYW1lKCkuZXF1YWxzKCIucHJvamVjdCIpKXsNCisJCQkJCQkJCUNET1RyYW5zZmVyTWFwcGluZyBtYXBwaW5nID0gdHJhbnNmZXIubWFwKG5vZGUuZ2V0UGF0aCgpLCBuZXcgTnVsbFByb2dyZXNzTW9uaXRvcigpKTsNCisJCQkJCQkJCW1hcHBpbmcuc2V0UmVsYXRpdmVQYXRoKGZpbGVwYXRoICsgRmlsZS5zZXBhcmF0b3IgKyBub2RlLmdldE5hbWUoKSk7DQorCQkJCQkJCQl0cmFuc2Zlci5wZXJmb3JtKCk7DQorCQkJCQkJCX0NCisJCQkJCQl9DQorCQkJCQkJdHJhbnNhY3Rpb24uY29tbWl0KCk7DQorCQkJCQkJdHJhbnNhY3Rpb24uY2xvc2UoKTsNCisJCQkJCQkNCisJCQkJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7DQorCQkJCQkJZS5wcmludFN0YWNrVHJhY2UoKTsNCisJCQkJCQllcnJvck1zZyA9IGUuZ2V0TWVzc2FnZSgpOw0KKwkJCQkJfQ0KKwkJCQl9DQorCQkJfQ0KKwkJCWlmKGVycm9yTXNnICE9IG51bGwgJiYgIWVycm9yTXNnLmlzRW1wdHkoKSl7DQorCQkJCU1lc3NhZ2VEaWFsb2cub3BlbkVycm9yKHNoZWxsLCAiSW1wb3J0IENIRVNTIFByb2plY3QgZnJvbSBDRE8iLCAiRXJyb3I6ICIgKyBlcnJvck1zZyk7DQorCQkJCWVycm9yTXNnID0gIiI7DQorCQkJfQ0KKwkJfQ0KKwkJcmV0dXJuIG51bGw7DQorDQorCX0NCit9DQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2RvL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2RvL3BhZ2VzL05ld0NIRVNTTW9kZWxQYWdlLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jZG8vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jZG8vcGFnZXMvTmV3Q0hFU1NNb2RlbFBhZ2UuamF2YQppbmRleCBkMjg1ZmJlLi44Y2FhZmU1IDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jZG8vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jZG8vcGFnZXMvTmV3Q0hFU1NNb2RlbFBhZ2UuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jZG8vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jZG8vcGFnZXMvTmV3Q0hFU1NNb2RlbFBhZ2UuamF2YQpAQCAtMSw0ODIgKzEsNDg5IEBACi1wYWNrYWdlIG9yZy5wb2xhcnN5cy5jaGVzcy5jZG8ucGFnZXM7Ci0KLWltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OwotaW1wb3J0IGphdmEudXRpbC5IYXNoU2V0OwotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotaW1wb3J0IGphdmEudXRpbC5TZXQ7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jZG8uQ0RPRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY2RvLmVyZXNvdXJjZS5DRE9SZXNvdXJjZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY2RvLmVyZXNvdXJjZS5DRE9SZXNvdXJjZUZvbGRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY2RvLmVyZXNvdXJjZS5DRE9SZXNvdXJjZUxlYWY7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNkby5lcmVzb3VyY2UuQ0RPUmVzb3VyY2VOb2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jZG8uZXhwbG9yZXIuQ0RPRXhwbG9yZXJVdGlsOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jZG8uZXhwbG9yZXIuY2hlY2tvdXRzLkNET0NoZWNrb3V0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jZG8uZXhwbG9yZXIudWkuY2hlY2tvdXRzLkNET0NoZWNrb3V0Q29udGVudFByb3ZpZGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jZG8udmlldy5DRE9WaWV3OwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5LkFkYXB0ZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLkVDb2xsZWN0aW9uczsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuRUxpc3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLlVSSTsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUucmVzb3VyY2UuUmVzb3VyY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLnV0aWwuRWNvcmVVdGlsOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLmxheW91dC5HcmlkRGF0YUZhY3Rvcnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5JU2VsZWN0aW9uQ2hhbmdlZExpc3RlbmVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuSVN0cnVjdHVyZWRTZWxlY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5TZWxlY3Rpb25DaGFuZ2VkRXZlbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5TdHJ1Y3R1cmVkU2VsZWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuVHJlZVZpZXdlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS53aXphcmQuV2l6YXJkUGFnZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5vc2dpLnV0aWwuTkxTOwotaW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0ud2l6YXJkcy5BY3RpdmF0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LlNXVDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QuZXZlbnRzLk1vZGlmeUV2ZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5ldmVudHMuTW9kaWZ5TGlzdGVuZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmxheW91dC5HcmlkRGF0YTsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QubGF5b3V0LkdyaWRMYXlvdXQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuQ29tcG9zaXRlOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkxhYmVsOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLlRleHQ7Ci0KLWltcG9ydCBjb20uZ29vZ2xlLmNvbW1vbi5iYXNlLlN0cmluZ3M7Ci1pbXBvcnQgY29tLmdvb2dsZS5jb21tb24uZXZlbnRidXMuRXZlbnRCdXM7Ci0KLS8qKgotICogVGhpcyBpcyB0aGUgTmV3Q0hFU1NNb2RlbFBhZ2UgdHlwZS4gRW5qb3kuCi0gKi8KLXB1YmxpYyBjbGFzcyBOZXdDSEVTU01vZGVsUGFnZSBleHRlbmRzIFdpemFyZFBhZ2UgewotCi0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUEFHRV9JRCA9ICJOZXdDRE9Nb2RlbCI7IC8vJE5PTi1OTFMtMSQKLQotCXByaXZhdGUgU3RyaW5nIHJlc291cmNlVHlwZSA9ICJtb2RlbCI7Ci0KLQlwcml2YXRlIFRleHQgZm9sZGVyVGV4dDsKLQotCXByaXZhdGUgVHJlZVZpZXdlciBmb2xkZXJWaWV3ZXI7Ci0KLQlwcml2YXRlIFRleHQgbmFtZVRleHQ7Ci0KLQlwcml2YXRlIGJvb2xlYW4gc3luY2hyb25pemluZ0ZvbGRlclNlbGVjdGlvbjsKLQotCXByaXZhdGUgT2JqZWN0IHNlbGVjdGVkRWxlbWVudDsKLQotCXByaXZhdGUgYm9vbGVhbiBzZWxlY3RlZEVsZW1lbnRSZXZlYWxlZDsKLQotCXByaXZhdGUgVVJJIG5ld01vZGVsUmVzb3VyY2VVUkk7Ci0KLQlwcml2YXRlIFN0cmluZyBmb2xkZXJSZWxhdGl2ZVBhdGg7Ci0KLQlwcml2YXRlIFN0cmluZyBwcm9qZWN0TmFtZTsKLQotCXB1YmxpYyBOZXdDSEVTU01vZGVsUGFnZShJU3RydWN0dXJlZFNlbGVjdGlvbiBzZWxlY3Rpb24sIEV2ZW50QnVzIGJ1cywgU3RyaW5nIG1vZGVsS2luZE5hbWUpIHsKLQkJc3VwZXIoUEFHRV9JRCk7Ci0KLQkJc2V0VGl0bGUoTkxTLmJpbmQoIk5ldyBDSEVTUyBNb2RlbCIsIG1vZGVsS2luZE5hbWUpKTsKLQkJc2V0RGVzY3JpcHRpb24oTkxTLmJpbmQoIkNyZWF0ZSBhIG5ldyBDSEVTUyBtb2RlbCIsIG1vZGVsS2luZE5hbWUpKTsKLQkJc2V0U2VsZWN0aW9uKHNlbGVjdGlvbik7Ci0KLQkJYnVzLnJlZ2lzdGVyKHRoaXMpOwotCX0KLQotCUBPdmVycmlkZQotCXB1YmxpYyB2b2lkIGNyZWF0ZUNvbnRyb2woQ29tcG9zaXRlIHBhcmVudENvbnRyb2wpIHsKLQkJQ29tcG9zaXRlIGNvbnRhaW5lciA9IG5ldyBDb21wb3NpdGUocGFyZW50Q29udHJvbCwgU1dULk5PTkUpOwotCQlHcmlkRGF0YUZhY3RvcnkuZmlsbERlZmF1bHRzKCkuZ3JhYih0cnVlLCB0cnVlKS5hcHBseVRvKGNvbnRhaW5lcik7Ci0JCWNvbnRhaW5lci5zZXRMYXlvdXQobmV3IEdyaWRMYXlvdXQoMiwgZmFsc2UpKTsKLQotCQlMYWJlbCBsYWJlbCA9IG5ldyBMYWJlbChjb250YWluZXIsIFNXVC5OT05FKTsKLQkJbGFiZWwuc2V0VGV4dCgiRW50ZXIgb3Igc2VsZWN0IHRoZSBwYXJlbnQgZm9sZGVyOiIpOwotCQlHcmlkRGF0YUZhY3Rvcnkuc3d0RGVmYXVsdHMoKS5zcGFuKDIsIDEpLmFwcGx5VG8obGFiZWwpOwotCi0JCWZvbGRlclRleHQgPSBuZXcgVGV4dChjb250YWluZXIsIFNXVC5CT1JERVIpOwotCQlHcmlkRGF0YUZhY3RvcnkuZmlsbERlZmF1bHRzKCkuZ3JhYih0cnVlLCBmYWxzZSkuc3BhbigyLCAxKS5hcHBseVRvKGZvbGRlclRleHQpOwotCQl1cGRhdGVGb2xkZXJUZXh0KCk7Ci0KLQkJZm9sZGVyVmlld2VyID0gQ0RPQ2hlY2tvdXRDb250ZW50UHJvdmlkZXIuY3JlYXRlVHJlZVZpZXdlcihjb250YWluZXIpOwotCQlmb2xkZXJWaWV3ZXIuZ2V0VHJlZSgpLnNldExheW91dERhdGEobmV3IEdyaWREYXRhKFNXVC5GSUxMLCBTV1QuRklMTCwgdHJ1ZSwgdHJ1ZSwgMiwgMSkpOwotCQlmb2xkZXJWaWV3ZXIuYWRkU2VsZWN0aW9uQ2hhbmdlZExpc3RlbmVyKG5ldyBJU2VsZWN0aW9uQ2hhbmdlZExpc3RlbmVyKCkgewotCQkJQE92ZXJyaWRlCi0JCQlwdWJsaWMgdm9pZCBzZWxlY3Rpb25DaGFuZ2VkKFNlbGVjdGlvbkNoYW5nZWRFdmVudCBldmVudCkgewotCQkJCWlmIChzZWxlY3RlZEVsZW1lbnRSZXZlYWxlZCkgewotCQkJCQlJU3RydWN0dXJlZFNlbGVjdGlvbiBzZWxlY3Rpb24gPSAoSVN0cnVjdHVyZWRTZWxlY3Rpb24pIGV2ZW50LmdldFNlbGVjdGlvbigpOwotCQkJCQlzZXRTZWxlY3Rpb24oc2VsZWN0aW9uKTsKLQkJCQl9Ci0KLQkJCQl2YWxpZGF0ZVBhZ2UoKTsKLQkJCX0KLQkJfSk7Ci0KLQkJbmV3IExhYmVsKGNvbnRhaW5lciwgU1dULk5PTkUpLnNldFRleHQoIlJlc291cmNlIG5hbWU6Iik7Ci0KLQkJbmFtZVRleHQgPSBuZXcgVGV4dChjb250YWluZXIsIFNXVC5CT1JERVIpOwotCQlHcmlkRGF0YUZhY3RvcnkuZmlsbERlZmF1bHRzKCkuZ3JhYih0cnVlLCBmYWxzZSkuYXBwbHlUbyhuYW1lVGV4dCk7Ci0JCW5hbWVUZXh0LnNldFRleHQoZ2V0VW5pcXVlTmFtZSgiZGkiKSk7IC8vJE5PTi1OTFMtMSQKLQotCQlzZXRDb250cm9sKGNvbnRhaW5lcik7Ci0KLQkJZm9sZGVyVGV4dC5hZGRNb2RpZnlMaXN0ZW5lcihuZXcgTW9kaWZ5TGlzdGVuZXIoKSB7Ci0KLQkJCUBPdmVycmlkZQotCQkJcHVibGljIHZvaWQgbW9kaWZ5VGV4dChNb2RpZnlFdmVudCBlKSB7Ci0JCQkJLy8gVE9ETzogc2V0IHBhcmVudCB0aGVuIHJldmVhbFBhcmVudCgpCi0JCQkJdmFsaWRhdGVQYWdlKCk7Ci0JCQl9Ci0JCX0pOwotCi0JCWZvbGRlclZpZXdlci5hZGRTZWxlY3Rpb25DaGFuZ2VkTGlzdGVuZXIobmV3IElTZWxlY3Rpb25DaGFuZ2VkTGlzdGVuZXIoKSB7Ci0KLQkJCUBPdmVycmlkZQotCQkJcHVibGljIHZvaWQgc2VsZWN0aW9uQ2hhbmdlZChTZWxlY3Rpb25DaGFuZ2VkRXZlbnQgZXZlbnQpIHsKLQkJCQlJU3RydWN0dXJlZFNlbGVjdGlvbiBzZWxlY3Rpb24gPSAoSVN0cnVjdHVyZWRTZWxlY3Rpb24pIGV2ZW50LmdldFNlbGVjdGlvbigpOwotCQkJCXNldFNlbGVjdGlvbihzZWxlY3Rpb24pOwotCQkJCXVwZGF0ZUZvbGRlclRleHQoKTsKLQkJCQl2YWxpZGF0ZVBhZ2UoKTsKLQkJCX0KLQkJfSk7Ci0KLQkJbmFtZVRleHQuYWRkTW9kaWZ5TGlzdGVuZXIobmV3IE1vZGlmeUxpc3RlbmVyKCkgewotCi0JCQlAT3ZlcnJpZGUKLQkJCXB1YmxpYyB2b2lkIG1vZGlmeVRleHQoTW9kaWZ5RXZlbnQgZSkgewotCQkJCXZhbGlkYXRlUGFnZSgpOwotCQkJfQotCQl9KTsKLQotCQlwYXJlbnRDb250cm9sLmdldFNoZWxsKCkuZ2V0RGlzcGxheSgpLmFzeW5jRXhlYyhuZXcgUnVubmFibGUoKSB7Ci0JCQlAT3ZlcnJpZGUKLQkJCXB1YmxpYyB2b2lkIHJ1bigpIHsKLQkJCQlyZXZlYWxTZWxlY3RlZEVsZW1lbnQoKTsKLQkJCQl2YWxpZGF0ZVBhZ2UoKTsKLQkJCX0KLQkJfSk7Ci0JfQotCi0JcHVibGljIFN0cmluZyBnZXROZXdSZXNvdXJjZU5hbWUoKSB7Ci0JCXJldHVybiAobmFtZVRleHQgPT0gbnVsbCkgPyBudWxsIDogbmFtZVRleHQuZ2V0VGV4dCgpLnRyaW0oKTsKLQl9Ci0KLQlwdWJsaWMgVVJJIGNyZWF0ZU5ld01vZGVsUmVzb3VyY2VVUkkoKSB7Ci0JCXJldHVybiBuZXdNb2RlbFJlc291cmNlVVJJOwotCX0KLQotCXB1YmxpYyBVUkkgY3JlYXRlU2VsZWN0ZWRFbGVtZW50VVJJKCkgewotCQlpZiAoc2VsZWN0ZWRFbGVtZW50IGluc3RhbmNlb2YgQ0RPQ2hlY2tvdXQpIHsKLQkJCUNET0NoZWNrb3V0IGNoZWNrb3V0ID0gKENET0NoZWNrb3V0KSBzZWxlY3RlZEVsZW1lbnQ7Ci0JCQlyZXR1cm4gY2hlY2tvdXQuZ2V0VVJJKCk7Ci0JCX0KLQotCQlpZiAoc2VsZWN0ZWRFbGVtZW50IGluc3RhbmNlb2YgQ0RPUmVzb3VyY2VOb2RlKSB7Ci0JCQlDRE9SZXNvdXJjZU5vZGUgcmVzb3VyY2VOb2RlID0gKENET1Jlc291cmNlTm9kZSkgc2VsZWN0ZWRFbGVtZW50OwotCQkJcmV0dXJuIHJlc291cmNlTm9kZS5nZXRVUkkoKTsKLQkJfQotCi0JCXJldHVybiBudWxsOwotCX0KLQotCS8qKgotCSAqIERpYWdyYW0gZXh0ZW5zaW9uIGNoYW5nZWQuCi0JICoKLQkgKiBAcGFyYW0gbmV3RXh0ZW5zaW9uCi0JICogICAgICAgICAgICB0aGUgbmV3IGV4dGVuc2lvbgotCSAqIEByZXR1cm4gcmVzdWx0IG9mIHZhbGlkYXRpb24gb2YgdGhlIG5ldyBleHRlbnNpb24KLQkgKi8KLQlwdWJsaWMgSVN0YXR1cyBkaWFncmFtRXh0ZW5zaW9uQ2hhbmdlZChTdHJpbmcgbmV3RXh0ZW5zaW9uKSB7Ci0JCVN0cmluZyBjdXJyZW50RXh0ZW5zaW9uID0gZ2V0RXh0ZW5zaW9uKCk7Ci0JCWlmICghbmV3RXh0ZW5zaW9uLmVxdWFscyhjdXJyZW50RXh0ZW5zaW9uKSkgewotCi0JCQlTdHJpbmcgb2xkRmlsZU5hbWUgPSBnZXROZXdSZXNvdXJjZU5hbWUoKTsKLQkJCVN0cmluZyBiYXNlID0gb2xkRmlsZU5hbWU7Ci0JCQlpZiAoY3VycmVudEV4dGVuc2lvbiAhPSBudWxsKSB7Ci0JCQkJLy8gdGFrZSBvbmUgb2ZmIGZvciB0aGUgJy4nCi0JCQkJYmFzZSA9IGJhc2Uuc3Vic3RyaW5nKDAsIGJhc2UubGVuZ3RoKCkgLSBjdXJyZW50RXh0ZW5zaW9uLmxlbmd0aCgpIC0gMSk7Ci0JCQl9Ci0JCQlTdHJpbmcgbmV3RmlsZU5hbWUgPSBnZXRVbmlxdWVOYW1lKG5ld0V4dGVuc2lvbik7Ci0KLQkJCXNldE5ld1Jlc291cmNlTmFtZShuZXdGaWxlTmFtZSk7Ci0KLQkJCVN0cmluZyBtZXNzYWdlMSA9IG9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0ud2l6YXJkcy5NZXNzYWdlcy5OZXdNb2RlbEZpbGVQYWdlX25ld19kaWFncmFtX2NhdGVnb3J5X25lZWRzX3NwZWNpZmljX2V4dGVuc2lvbjsKLQkJCVN0cmluZyBtZXNzYWdlMiA9IE5MUy5iaW5kKG9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0ud2l6YXJkcy5NZXNzYWdlcy5OZXdNb2RlbEZpbGVQYWdlX2RpYWdyYW1fZmlsZV93YXNfcmVuYW1lZCwgb2xkRmlsZU5hbWUsIG5ld0ZpbGVOYW1lKTsKLQkJCVN0cmluZyBtZXNzYWdlID0gbWVzc2FnZTEgKyBtZXNzYWdlMjsKLQkJCVN0YXR1cyByZXN1bHRTdGF0dXMgPSBuZXcgU3RhdHVzKElTdGF0dXMuSU5GTywgQWN0aXZhdG9yLlBMVUdJTl9JRCwgbWVzc2FnZSk7Ci0KLQkJCVN0cmluZyBlcnJvck1lc3NhZ2UgPSBnZXRFcnJvck1lc3NhZ2UoKTsKLQkJCWlmIChlcnJvck1lc3NhZ2UgIT0gbnVsbCkgewotCQkJCXJlc3VsdFN0YXR1cyA9IG5ldyBTdGF0dXMoSVN0YXR1cy5FUlJPUiwgQWN0aXZhdG9yLlBMVUdJTl9JRCwgZXJyb3JNZXNzYWdlKTsKLQkJCX0KLQkJCXJldHVybiByZXN1bHRTdGF0dXM7Ci0JCX0KLQkJcmV0dXJuIFN0YXR1cy5PS19TVEFUVVM7Ci0JfQotCi0JcHJvdGVjdGVkIHZvaWQgc2V0TmV3UmVzb3VyY2VOYW1lKFN0cmluZyBuZXdOYW1lKSB7Ci0JCW5hbWVUZXh0LnNldFRleHQobmV3TmFtZS50cmltKCkpOwotCX0KLQotCXByb3RlY3RlZCB2b2lkIHZhbGlkYXRlUGFnZSgpIHsKLQkJbmV3TW9kZWxSZXNvdXJjZVVSSSA9IG51bGw7Ci0JCXNldE1lc3NhZ2UobnVsbCwgTk9ORSk7Ci0JCXNldFBhZ2VDb21wbGV0ZSh0cnVlKTsKLQotCQlTdHJpbmcgZm9sZGVyID0gZm9sZGVyVGV4dC5nZXRUZXh0KCkudHJpbSgpOwotCQlpZiAoU3RyaW5ncy5pc051bGxPckVtcHR5KGZvbGRlcikpIHsKLQkJCXNldFBhZ2VDb21wbGV0ZShmYWxzZSk7Ci0JCQlyZXR1cm47Ci0JCX0KLQotCQlTdHJpbmdbXSBzZWdtZW50cyA9IGdldFNlZ21lbnRzKGZvbGRlcik7Ci0JCUNET0NoZWNrb3V0IGNoZWNrb3V0ID0gQ0RPRXhwbG9yZXJVdGlsLmdldENoZWNrb3V0TWFuYWdlcigpLmdldENoZWNrb3V0QnlMYWJlbChzZWdtZW50c1swXSk7Ci0JCWlmIChjaGVja291dCA9PSBudWxsKSB7Ci0JCQlzZXRNZXNzYWdlKE5MUy5iaW5kKCJUaGUgc2VsZWN0ZWQgY2hlY2tvdXQgZG9lcyBub3QgZXhpc3QuIiwgc2VnbWVudHNbMF0pLCBFUlJPUik7Ci0JCQlzZXRQYWdlQ29tcGxldGUoZmFsc2UpOwotCQkJcmV0dXJuOwotCQl9Ci0KLQkJQ0RPVmlldyB2aWV3ID0gY2hlY2tvdXQuZ2V0VmlldygpOwotCQlTdHJpbmcgcGF0aCA9ICIiOwotCQlTZWdtZW50VHlwZSBzZWdtZW50VHlwZSA9IFNlZ21lbnRUeXBlLkZPTERFUjsgLy8gVGhlIGNoZWNrb3V0IGlzIHRyZWF0ZWQgbGlrZSBhIGZvbGRlci4KLQotCQlmb3IgKGludCBpID0gMTsgaSA8IHNlZ21lbnRzLmxlbmd0aDsgaSsrKSB7Ci0JCQlTdHJpbmcgc2VnbWVudCA9IHNlZ21lbnRzW2ldOwotCQkJcGF0aCArPSAiLyI7Ci0JCQlwYXRoICs9IHNlZ21lbnQ7Ci0KLQkJCXNlZ21lbnRUeXBlID0gU2VnbWVudFR5cGUub2YodmlldywgcGF0aCk7Ci0JCQlpZiAoc2VnbWVudFR5cGUgPT0gU2VnbWVudFR5cGUuT1RIRVIpIHsKLQkJCQlzZXRNZXNzYWdlKCJUaGUgc3BlY2lmaWVkIGZvbGRlciBjYW5ub3QgYmUgY3JlYXRlZC4iLCBFUlJPUik7Ci0JCQkJc2V0UGFnZUNvbXBsZXRlKGZhbHNlKTsKLQkJCQlyZXR1cm47Ci0JCQl9Ci0JCX0KLQotCQlTdHJpbmcgbmFtZSA9IGdldE5ld1Jlc291cmNlTmFtZSgpOwotCQlpZiAoU3RyaW5ncy5pc051bGxPckVtcHR5KG5hbWUpKSB7Ci0JCQlzZXRNZXNzYWdlKCJUaGUgbmV3IG1vZGVsIHJlc291cmNlIG5hbWUgaXMgcmVxdWlyZWQuIiwgRVJST1IpOwotCQkJc2V0UGFnZUNvbXBsZXRlKGZhbHNlKTsKLQkJCXJldHVybjsKLQkJfQotCQkKLQkJaWYgKHNlZ21lbnRUeXBlICE9IFNlZ21lbnRUeXBlLk1JU1NJTkcpIHsKLQkJCVN0cmluZyBmdWxsUGF0aCA9IHBhdGggKyAiLyIgKyBuYW1lOwotCQkJaWYgKFNlZ21lbnRUeXBlLm9mKHZpZXcsIGZ1bGxQYXRoKSAhPSBTZWdtZW50VHlwZS5NSVNTSU5HKSB7Ci0JCQkJc2V0TWVzc2FnZShOTFMuYmluZCgiVGhlIHJlc291cmNlIGFscmVhZHkgZXhpc3RzLiIsIGZ1bGxQYXRoKSwgRVJST1IpOwotCQkJCXNldFBhZ2VDb21wbGV0ZShmYWxzZSk7Ci0JCQkJcmV0dXJuOwotCQkJfQotCQl9Ci0JCS8vVE9ETyB3b3JrIGluIHByb2dyZXNzISEKLQkJU3RyaW5nIGZvbGRlck5hbWUgPSBuYW1lLnN1YnN0cmluZygwLCBuYW1lLmxhc3RJbmRleE9mKCIuIikpOwotCQlwYXRoID0gcGF0aC5jb25jYXQoIi8iICsgZm9sZGVyTmFtZS5zdWJzdHJpbmcoMCwgMSkudG9VcHBlckNhc2UoKSArIGZvbGRlck5hbWUuc3Vic3RyaW5nKDEpKTsgCi0JCQotCQluZXdNb2RlbFJlc291cmNlVVJJID0gY2hlY2tvdXQuY3JlYXRlUmVzb3VyY2VVUkkocGF0aCkuYXBwZW5kU2VnbWVudChuYW1lKTsKLQkJZm9sZGVyUmVsYXRpdmVQYXRoID0gcGF0aDsKLQkJcHJvamVjdE5hbWUgPSBmb2xkZXJOYW1lOwotCi0JCWlmIChzZWdtZW50VHlwZSA9PSBTZWdtZW50VHlwZS5NSVNTSU5HKSB7Ci0JCQlzZXRNZXNzYWdlKCJUaGUgc3BlY2lmaWVkIGZvbGRlciBkb2VzIG5vdCBleGlzdCBhbmQgd2lsbCBiZSBjcmVhdGVkLiIsIFdBUk5JTkcpOwotCQl9Ci0JfQotCi0JcHJpdmF0ZSBTdHJpbmdbXSBnZXRTZWdtZW50cyhTdHJpbmcgZm9sZGVyKSB7Ci0JCXdoaWxlIChmb2xkZXIuc3RhcnRzV2l0aCgiLyIpKSB7Ci0JCQlmb2xkZXIgPSBmb2xkZXIuc3Vic3RyaW5nKDEpOwotCQl9Ci0KLQkJd2hpbGUgKGZvbGRlci5lbmRzV2l0aCgiLyIpKSB7Ci0JCQlmb2xkZXIgPSBmb2xkZXIuc3Vic3RyaW5nKDAsIGZvbGRlci5sZW5ndGgoKSAtIDEpOwotCQl9Ci0KLQkJcmV0dXJuIGZvbGRlci5zcGxpdCgiLyIpOwotCX0KLQotCXByaXZhdGUgU3RyaW5nIGdldEV4dGVuc2lvbigpIHsKLQkJU3RyaW5nIHJlc3VsdCA9IG51bGw7Ci0JCVN0cmluZyBuYW1lID0gZ2V0TmV3UmVzb3VyY2VOYW1lKCk7Ci0KLQkJaWYgKG5hbWUgIT0gbnVsbCkgewotCQkJLy8gdGhlIHByb3BlciBleHRlbnNpb24gaXMgd2hhdGV2ZXIgZm9sbG93cyB0aGUgKmxhc3QqICcuJywKLQkJCS8vIGJ1dCBmb3Igb3VyIHB1cnBvc2VzIHdlIG5lZWQgZS5nLiAicHJvZmlsZS51bWwiIHRvIGJlCi0JCQkvLyBhbiBleHRlbnNpb24KLQkJCWludCBkb3QgPSBuYW1lLmluZGV4T2YoJy4nKTsKLQkJCWlmIChkb3QgPj0gMCkgewotCQkJCXJlc3VsdCA9IG5hbWUuc3Vic3RyaW5nKGRvdCArIDEpOwotCQkJfQotCQl9Ci0KLQkJcmV0dXJuIHJlc3VsdDsKLQl9Ci0KLQlwcml2YXRlIHZvaWQgc2V0U2VsZWN0aW9uKElTdHJ1Y3R1cmVkU2VsZWN0aW9uIHNlbGVjdGlvbikgewotCQlzZWxlY3RlZEVsZW1lbnQgPSBudWxsOwotCi0JCWlmICghc2VsZWN0aW9uLmlzRW1wdHkoKSkgewotCQkJT2JqZWN0IGVsZW1lbnQgPSBzZWxlY3Rpb24uZ2V0Rmlyc3RFbGVtZW50KCk7Ci0JCQlpZiAoZWxlbWVudCBpbnN0YW5jZW9mIENET0VsZW1lbnQpIHsKLQkJCQllbGVtZW50ID0gKChDRE9FbGVtZW50KSBlbGVtZW50KS5nZXREZWxlZ2F0ZSgpOwotCQkJfQotCi0JCQlpZiAoZWxlbWVudCBpbnN0YW5jZW9mIENET0NoZWNrb3V0KSB7Ci0JCQkJc2VsZWN0ZWRFbGVtZW50ID0gZWxlbWVudDsKLQkJCX0gZWxzZSBpZiAoZWxlbWVudCBpbnN0YW5jZW9mIENET1Jlc291cmNlTGVhZikgewotCQkJCXNlbGVjdGVkRWxlbWVudCA9ICgoQ0RPUmVzb3VyY2VMZWFmKSBlbGVtZW50KS5nZXRGb2xkZXIoKTsKLQkJCX0gZWxzZSBpZiAoZWxlbWVudCBpbnN0YW5jZW9mIENET1Jlc291cmNlRm9sZGVyKSB7Ci0JCQkJc2VsZWN0ZWRFbGVtZW50ID0gKENET1Jlc291cmNlRm9sZGVyKSBlbGVtZW50OwotCQkJfSBlbHNlIGlmIChlbGVtZW50IGluc3RhbmNlb2YgRU9iamVjdCkgewotCQkJCVJlc291cmNlIHJlc291cmNlID0gKChFT2JqZWN0KSBlbGVtZW50KS5lUmVzb3VyY2UoKTsKLQkJCQlpZiAocmVzb3VyY2UgaW5zdGFuY2VvZiBDRE9SZXNvdXJjZSkgewotCQkJCQlzZWxlY3RlZEVsZW1lbnQgPSAoKENET1Jlc291cmNlKSByZXNvdXJjZSkuZ2V0Rm9sZGVyKCk7Ci0JCQkJfQotCQkJfQotCQl9Ci0JfQotCi0JcHJpdmF0ZSB2b2lkIHVwZGF0ZUZvbGRlclRleHQoKSB7Ci0JCWlmICghc3luY2hyb25pemluZ0ZvbGRlclNlbGVjdGlvbikgewotCQkJc3luY2hyb25pemluZ0ZvbGRlclNlbGVjdGlvbiA9IHRydWU7Ci0KLQkJCXRyeSB7Ci0JCQkJaWYgKHNlbGVjdGVkRWxlbWVudCA9PSBudWxsKSB7Ci0JCQkJCWZvbGRlclRleHQuc2V0VGV4dCgiIik7IC8vJE5PTi1OTFMtMSQKLQkJCQl9IGVsc2UgewotCQkJCQlTdHJpbmdCdWlsZGVyIGJ1aWxkZXIgPSBuZXcgU3RyaW5nQnVpbGRlcigpOwotCQkJCQlmb3IgKE9iamVjdCBub2RlIDogZ2V0U2VsZWN0ZWRTZWdtZW50cygpKSB7Ci0JCQkJCQlidWlsZGVyLmFwcGVuZCgnLycpOwotCQkJCQkJYnVpbGRlci5hcHBlbmQoQ0RPRXhwbG9yZXJVdGlsLmdldE5hbWUobm9kZSkpOwotCQkJCQl9Ci0KLQkJCQkJU3RyaW5nIHBhdGggPSBidWlsZGVyLnRvU3RyaW5nKCk7Ci0JCQkJCWZvbGRlclRleHQuc2V0VGV4dChwYXRoKTsKLQkJCQl9Ci0JCQl9IGZpbmFsbHkgewotCQkJCXN5bmNocm9uaXppbmdGb2xkZXJTZWxlY3Rpb24gPSBmYWxzZTsKLQkJCX0KLQkJfQotCX0KLQotCXByaXZhdGUgdm9pZCByZXZlYWxTZWxlY3RlZEVsZW1lbnQoKSB7Ci0JCWlmIChzZWxlY3RlZEVsZW1lbnQgIT0gbnVsbCkgewotCQkJTGlzdDxPYmplY3Q+IHNlZ21lbnRzID0gZ2V0U2VsZWN0ZWRTZWdtZW50cygpOwotCQkJZm9yIChpbnQgaSA9IDA7IGkgPCBzZWdtZW50cy5zaXplKCkgLSAxOyBpKyspIHsKLQkJCQlPYmplY3Qgc2VnbWVudCA9IHNlZ21lbnRzLmdldChpKTsKLQkJCQlmb2xkZXJWaWV3ZXIuc2V0RXhwYW5kZWRTdGF0ZShzZWdtZW50LCB0cnVlKTsKLQkJCX0KLQotCQkJc2VsZWN0ZWRFbGVtZW50UmV2ZWFsZWQgPSB0cnVlOwotCQkJZm9sZGVyVmlld2VyLnNldFNlbGVjdGlvbihuZXcgU3RydWN0dXJlZFNlbGVjdGlvbihzZWxlY3RlZEVsZW1lbnQpLCB0cnVlKTsKLQkJfQotCX0KLQotCXByaXZhdGUgTGlzdDxPYmplY3Q+IGdldFNlbGVjdGVkU2VnbWVudHMoKSB7Ci0JCUxpc3Q8T2JqZWN0PiBzZWdtZW50cyA9IG5ldyBBcnJheUxpc3Q8T2JqZWN0PigpOwotCQlmaWxsU2VnbWVudHMoc2VnbWVudHMsIHNlbGVjdGVkRWxlbWVudCk7Ci0JCXJldHVybiBzZWdtZW50czsKLQl9Ci0KLQlwcml2YXRlIHZvaWQgZmlsbFNlZ21lbnRzKExpc3Q8T2JqZWN0PiBzZWdtZW50cywgT2JqZWN0IGVsZW1lbnQpIHsKLQkJaWYgKGVsZW1lbnQgaW5zdGFuY2VvZiBDRE9DaGVja291dCkgewotCQkJc2VnbWVudHMuYWRkKGVsZW1lbnQpOwotCQkJcmV0dXJuOwotCQl9Ci0KLQkJaWYgKGVsZW1lbnQgaW5zdGFuY2VvZiBDRE9SZXNvdXJjZUZvbGRlcikgewotCQkJQ0RPUmVzb3VyY2VGb2xkZXIgZm9sZGVyID0gKENET1Jlc291cmNlRm9sZGVyKSBlbGVtZW50OwotCi0JCQlBZGFwdGVyIGFkYXB0ZXIgPSBFY29yZVV0aWwuZ2V0QWRhcHRlcihmb2xkZXIuZUFkYXB0ZXJzKCksIENET0NoZWNrb3V0LmNsYXNzKTsKLQkJCWlmIChhZGFwdGVyICE9IG51bGwpIHsKLQkJCQlmaWxsU2VnbWVudHMoc2VnbWVudHMsIGFkYXB0ZXIpOwotCQkJfSBlbHNlIHsKLQkJCQlPYmplY3QgcGFyZW50ID0gZm9sZGVyLmdldEZvbGRlcigpOwotCQkJCWlmIChwYXJlbnQgPT0gbnVsbCkgewotCQkJCQlwYXJlbnQgPSBFY29yZVV0aWwuZ2V0QWRhcHRlcihmb2xkZXIuY2RvVmlldygpLmdldFJvb3RSZXNvdXJjZSgpLmVBZGFwdGVycygpLCBDRE9DaGVja291dC5jbGFzcyk7Ci0JCQkJfQotCi0JCQkJZmlsbFNlZ21lbnRzKHNlZ21lbnRzLCBwYXJlbnQpOwotCQkJfQotCQl9Ci0KLQkJc2VnbWVudHMuYWRkKGVsZW1lbnQpOwotCX0KLQotCXByaXZhdGUgRUxpc3Q8RU9iamVjdD4gZ2V0Q2hpbGRyZW5PZlNlbGVjdGVkRWxlbWVudCgpIHsKLQkJaWYgKHNlbGVjdGVkRWxlbWVudCBpbnN0YW5jZW9mIENET0NoZWNrb3V0KSB7Ci0JCQlDRE9DaGVja291dCBjaGVja291dCA9IChDRE9DaGVja291dCkgc2VsZWN0ZWRFbGVtZW50OwotCQkJcmV0dXJuIGNoZWNrb3V0LmdldFJvb3RPYmplY3QoKS5lQ29udGVudHMoKTsKLQkJfQotCi0JCWlmIChzZWxlY3RlZEVsZW1lbnQgaW5zdGFuY2VvZiBDRE9SZXNvdXJjZUZvbGRlcikgewotCQkJQ0RPUmVzb3VyY2VGb2xkZXIgZm9sZGVyID0gKENET1Jlc291cmNlRm9sZGVyKSBzZWxlY3RlZEVsZW1lbnQ7Ci0JCQlyZXR1cm4gZm9sZGVyLmVDb250ZW50cygpOwotCQl9Ci0KLQkJcmV0dXJuIEVDb2xsZWN0aW9ucy5lbXB0eUVMaXN0KCk7Ci0JfQotCi0JcHJpdmF0ZSBTdHJpbmcgZ2V0VW5pcXVlTmFtZShTdHJpbmcgZXh0ZW5zaW9uKSB7Ci0JCVNldDxTdHJpbmc+IG5hbWVzID0gbmV3IEhhc2hTZXQ8U3RyaW5nPigpOwotCQlmb3IgKEVPYmplY3QgZU9iamVjdCA6IGdldENoaWxkcmVuT2ZTZWxlY3RlZEVsZW1lbnQoKSkgewotCQkJaWYgKGVPYmplY3QgaW5zdGFuY2VvZiBDRE9SZXNvdXJjZU5vZGUpIHsKLQkJCQlDRE9SZXNvdXJjZU5vZGUgbm9kZSA9IChDRE9SZXNvdXJjZU5vZGUpIGVPYmplY3Q7Ci0JCQkJU3RyaW5nIG5hbWUgPSBub2RlLmdldE5hbWUoKTsKLQkJCQlpZiAobmFtZS5zdGFydHNXaXRoKHJlc291cmNlVHlwZSkpIHsKLQkJCQkJbmFtZXMuYWRkKG5hbWUpOwotCQkJCX0KLQkJCX0KLQkJfQotCi0JCWZvciAoaW50IGkgPSAxOyBpIDwgSW50ZWdlci5NQVhfVkFMVUU7IGkrKykgewotCQkJU3RyaW5nIG5hbWUgPSByZXNvdXJjZVR5cGUgKyAoaSA+IDEgPyBpIDogIiIpICsgIi4iICsgZXh0ZW5zaW9uOwotCQkJaWYgKCFuYW1lcy5jb250YWlucyhuYW1lKSkgewotCQkJCXJldHVybiBuYW1lOwotCQkJfQotCQl9Ci0KLQkJdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigiVG9vIG1hbnkgY2hpbGRyZW4iKTsKLQl9Ci0KLQkvKioKLQkgKiBAYXV0aG9yIFN0ZXBwZXIKLQkgKi8KLQlwcml2YXRlIGVudW0gU2VnbWVudFR5cGUgewotCQlNSVNTSU5HLCBGT0xERVIsIE9USEVSOwotCi0JCXB1YmxpYyBzdGF0aWMgU2VnbWVudFR5cGUgb2YoQ0RPVmlldyB2aWV3LCBTdHJpbmcgcGF0aCkgewotCQkJQ0RPUmVzb3VyY2VOb2RlIHJlc291cmNlTm9kZTsKLQkJCXRyeSB7Ci0JCQkJcmVzb3VyY2VOb2RlID0gdmlldy5nZXRSZXNvdXJjZU5vZGUocGF0aCk7Ci0JCQkJaWYgKHJlc291cmNlTm9kZSAhPSBudWxsKSB7Ci0JCQkJCWlmIChyZXNvdXJjZU5vZGUgaW5zdGFuY2VvZiBDRE9SZXNvdXJjZUZvbGRlcikgewotCQkJCQkJcmV0dXJuIFNlZ21lbnRUeXBlLkZPTERFUjsKLQkJCQkJfQotCi0JCQkJCXJldHVybiBTZWdtZW50VHlwZS5PVEhFUjsKLQkJCQl9Ci0JCQl9IGNhdGNoIChFeGNlcHRpb24gZXgpIHsKLQkJCQkvLyRGQUxMLVRIUk9VR0gkCi0JCQl9Ci0KLQkJCXJldHVybiBTZWdtZW50VHlwZS5NSVNTSU5HOwotCQl9Ci0KLQkJcHJpdmF0ZSBzdGF0aWMgU2VnbWVudFR5cGUgb2YoQ0RPUmVzb3VyY2VOb2RlIHJlc291cmNlTm9kZSkgewotCQkJaWYgKHJlc291cmNlTm9kZSA9PSBudWxsKSB7Ci0JCQkJcmV0dXJuIFNlZ21lbnRUeXBlLk1JU1NJTkc7Ci0JCQl9Ci0KLQkJCWlmIChyZXNvdXJjZU5vZGUgaW5zdGFuY2VvZiBDRE9SZXNvdXJjZUZvbGRlcikgewotCQkJCXJldHVybiBTZWdtZW50VHlwZS5GT0xERVI7Ci0JCQl9Ci0KLQkJCXJldHVybiBTZWdtZW50VHlwZS5PVEhFUjsKLQkJfQotCX0KLQotCXB1YmxpYyBTdHJpbmcgZ2V0Rm9sZGVyUmVsYXRpdmVQYXRoKCkgewotCQlyZXR1cm4gZm9sZGVyUmVsYXRpdmVQYXRoOwotCX0KLQkKLQlwdWJsaWMgU3RyaW5nIGdldFByb2plY3ROYW1lKCkgewotCQlyZXR1cm4gcHJvamVjdE5hbWU7Ci0JfQotfQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgDQorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KKyAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KK3BhY2thZ2Ugb3JnLnBvbGFyc3lzLmNoZXNzLmNkby5wYWdlczsNCisNCitpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsNCitpbXBvcnQgamF2YS51dGlsLkhhc2hTZXQ7DQoraW1wb3J0IGphdmEudXRpbC5MaXN0Ow0KK2ltcG9ydCBqYXZhLnV0aWwuU2V0Ow0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsNCitpbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlN0YXR1czsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNkby5DRE9FbGVtZW50Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY2RvLmVyZXNvdXJjZS5DRE9SZXNvdXJjZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNkby5lcmVzb3VyY2UuQ0RPUmVzb3VyY2VGb2xkZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jZG8uZXJlc291cmNlLkNET1Jlc291cmNlTGVhZjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNkby5lcmVzb3VyY2UuQ0RPUmVzb3VyY2VOb2RlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY2RvLmV4cGxvcmVyLkNET0V4cGxvcmVyVXRpbDsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNkby5leHBsb3Jlci5jaGVja291dHMuQ0RPQ2hlY2tvdXQ7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jZG8uZXhwbG9yZXIudWkuY2hlY2tvdXRzLkNET0NoZWNrb3V0Q29udGVudFByb3ZpZGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY2RvLnZpZXcuQ0RPVmlldzsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuQWRhcHRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLkVDb2xsZWN0aW9uczsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLkVMaXN0Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuVVJJOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdDsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLnJlc291cmNlLlJlc291cmNlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUudXRpbC5FY29yZVV0aWw7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLmxheW91dC5HcmlkRGF0YUZhY3Rvcnk7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuSVNlbGVjdGlvbkNoYW5nZWRMaXN0ZW5lcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5JU3RydWN0dXJlZFNlbGVjdGlvbjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5TZWxlY3Rpb25DaGFuZ2VkRXZlbnQ7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuU3RydWN0dXJlZFNlbGVjdGlvbjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5UcmVlVmlld2VyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS53aXphcmQuV2l6YXJkUGFnZTsNCitpbXBvcnQgb3JnLmVjbGlwc2Uub3NnaS51dGlsLk5MUzsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS53aXphcmRzLkFjdGl2YXRvcjsNCitpbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LlNXVDsNCitpbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmV2ZW50cy5Nb2RpZnlFdmVudDsNCitpbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmV2ZW50cy5Nb2RpZnlMaXN0ZW5lcjsNCitpbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmxheW91dC5HcmlkRGF0YTsNCitpbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmxheW91dC5HcmlkTGF5b3V0Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5Db21wb3NpdGU7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkxhYmVsOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5UZXh0Ow0KKw0KK2ltcG9ydCBjb20uZ29vZ2xlLmNvbW1vbi5iYXNlLlN0cmluZ3M7DQoraW1wb3J0IGNvbS5nb29nbGUuY29tbW9uLmV2ZW50YnVzLkV2ZW50QnVzOw0KKw0KKy8qKg0KKyAqIFRoaXMgaXMgdGhlIE5ld0NIRVNTTW9kZWxQYWdlIHR5cGUuIEVuam95Lg0KKyAqLw0KK3B1YmxpYyBjbGFzcyBOZXdDSEVTU01vZGVsUGFnZSBleHRlbmRzIFdpemFyZFBhZ2Ugew0KKw0KKwlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBQQUdFX0lEID0gIk5ld0NET01vZGVsIjsgLy8kTk9OLU5MUy0xJA0KKw0KKwlwcml2YXRlIFN0cmluZyByZXNvdXJjZVR5cGUgPSAibW9kZWwiOw0KKw0KKwlwcml2YXRlIFRleHQgZm9sZGVyVGV4dDsNCisNCisJcHJpdmF0ZSBUcmVlVmlld2VyIGZvbGRlclZpZXdlcjsNCisNCisJcHJpdmF0ZSBUZXh0IG5hbWVUZXh0Ow0KKw0KKwlwcml2YXRlIGJvb2xlYW4gc3luY2hyb25pemluZ0ZvbGRlclNlbGVjdGlvbjsNCisNCisJcHJpdmF0ZSBPYmplY3Qgc2VsZWN0ZWRFbGVtZW50Ow0KKw0KKwlwcml2YXRlIGJvb2xlYW4gc2VsZWN0ZWRFbGVtZW50UmV2ZWFsZWQ7DQorDQorCXByaXZhdGUgVVJJIG5ld01vZGVsUmVzb3VyY2VVUkk7DQorDQorCXByaXZhdGUgU3RyaW5nIGZvbGRlclJlbGF0aXZlUGF0aDsNCisNCisJcHJpdmF0ZSBTdHJpbmcgcHJvamVjdE5hbWU7DQorDQorCXB1YmxpYyBOZXdDSEVTU01vZGVsUGFnZShJU3RydWN0dXJlZFNlbGVjdGlvbiBzZWxlY3Rpb24sIEV2ZW50QnVzIGJ1cywgU3RyaW5nIG1vZGVsS2luZE5hbWUpIHsNCisJCXN1cGVyKFBBR0VfSUQpOw0KKw0KKwkJc2V0VGl0bGUoTkxTLmJpbmQoIk5ldyBDSEVTUyBNb2RlbCIsIG1vZGVsS2luZE5hbWUpKTsNCisJCXNldERlc2NyaXB0aW9uKE5MUy5iaW5kKCJDcmVhdGUgYSBuZXcgQ0hFU1MgbW9kZWwiLCBtb2RlbEtpbmROYW1lKSk7DQorCQlzZXRTZWxlY3Rpb24oc2VsZWN0aW9uKTsNCisNCisJCWJ1cy5yZWdpc3Rlcih0aGlzKTsNCisJfQ0KKw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIHZvaWQgY3JlYXRlQ29udHJvbChDb21wb3NpdGUgcGFyZW50Q29udHJvbCkgew0KKwkJQ29tcG9zaXRlIGNvbnRhaW5lciA9IG5ldyBDb21wb3NpdGUocGFyZW50Q29udHJvbCwgU1dULk5PTkUpOw0KKwkJR3JpZERhdGFGYWN0b3J5LmZpbGxEZWZhdWx0cygpLmdyYWIodHJ1ZSwgdHJ1ZSkuYXBwbHlUbyhjb250YWluZXIpOw0KKwkJY29udGFpbmVyLnNldExheW91dChuZXcgR3JpZExheW91dCgyLCBmYWxzZSkpOw0KKw0KKwkJTGFiZWwgbGFiZWwgPSBuZXcgTGFiZWwoY29udGFpbmVyLCBTV1QuTk9ORSk7DQorCQlsYWJlbC5zZXRUZXh0KCJFbnRlciBvciBzZWxlY3QgdGhlIHBhcmVudCBmb2xkZXI6Iik7DQorCQlHcmlkRGF0YUZhY3Rvcnkuc3d0RGVmYXVsdHMoKS5zcGFuKDIsIDEpLmFwcGx5VG8obGFiZWwpOw0KKw0KKwkJZm9sZGVyVGV4dCA9IG5ldyBUZXh0KGNvbnRhaW5lciwgU1dULkJPUkRFUik7DQorCQlHcmlkRGF0YUZhY3RvcnkuZmlsbERlZmF1bHRzKCkuZ3JhYih0cnVlLCBmYWxzZSkuc3BhbigyLCAxKS5hcHBseVRvKGZvbGRlclRleHQpOw0KKwkJdXBkYXRlRm9sZGVyVGV4dCgpOw0KKw0KKwkJZm9sZGVyVmlld2VyID0gQ0RPQ2hlY2tvdXRDb250ZW50UHJvdmlkZXIuY3JlYXRlVHJlZVZpZXdlcihjb250YWluZXIpOw0KKwkJZm9sZGVyVmlld2VyLmdldFRyZWUoKS5zZXRMYXlvdXREYXRhKG5ldyBHcmlkRGF0YShTV1QuRklMTCwgU1dULkZJTEwsIHRydWUsIHRydWUsIDIsIDEpKTsNCisJCWZvbGRlclZpZXdlci5hZGRTZWxlY3Rpb25DaGFuZ2VkTGlzdGVuZXIobmV3IElTZWxlY3Rpb25DaGFuZ2VkTGlzdGVuZXIoKSB7DQorCQkJQE92ZXJyaWRlDQorCQkJcHVibGljIHZvaWQgc2VsZWN0aW9uQ2hhbmdlZChTZWxlY3Rpb25DaGFuZ2VkRXZlbnQgZXZlbnQpIHsNCisJCQkJaWYgKHNlbGVjdGVkRWxlbWVudFJldmVhbGVkKSB7DQorCQkJCQlJU3RydWN0dXJlZFNlbGVjdGlvbiBzZWxlY3Rpb24gPSAoSVN0cnVjdHVyZWRTZWxlY3Rpb24pIGV2ZW50LmdldFNlbGVjdGlvbigpOw0KKwkJCQkJc2V0U2VsZWN0aW9uKHNlbGVjdGlvbik7DQorCQkJCX0NCisNCisJCQkJdmFsaWRhdGVQYWdlKCk7DQorCQkJfQ0KKwkJfSk7DQorDQorCQluZXcgTGFiZWwoY29udGFpbmVyLCBTV1QuTk9ORSkuc2V0VGV4dCgiUmVzb3VyY2UgbmFtZToiKTsNCisNCisJCW5hbWVUZXh0ID0gbmV3IFRleHQoY29udGFpbmVyLCBTV1QuQk9SREVSKTsNCisJCUdyaWREYXRhRmFjdG9yeS5maWxsRGVmYXVsdHMoKS5ncmFiKHRydWUsIGZhbHNlKS5hcHBseVRvKG5hbWVUZXh0KTsNCisJCW5hbWVUZXh0LnNldFRleHQoZ2V0VW5pcXVlTmFtZSgiZGkiKSk7IC8vJE5PTi1OTFMtMSQNCisNCisJCXNldENvbnRyb2woY29udGFpbmVyKTsNCisNCisJCWZvbGRlclRleHQuYWRkTW9kaWZ5TGlzdGVuZXIobmV3IE1vZGlmeUxpc3RlbmVyKCkgew0KKw0KKwkJCUBPdmVycmlkZQ0KKwkJCXB1YmxpYyB2b2lkIG1vZGlmeVRleHQoTW9kaWZ5RXZlbnQgZSkgew0KKwkJCQkvLyBUT0RPOiBzZXQgcGFyZW50IHRoZW4gcmV2ZWFsUGFyZW50KCkNCisJCQkJdmFsaWRhdGVQYWdlKCk7DQorCQkJfQ0KKwkJfSk7DQorDQorCQlmb2xkZXJWaWV3ZXIuYWRkU2VsZWN0aW9uQ2hhbmdlZExpc3RlbmVyKG5ldyBJU2VsZWN0aW9uQ2hhbmdlZExpc3RlbmVyKCkgew0KKw0KKwkJCUBPdmVycmlkZQ0KKwkJCXB1YmxpYyB2b2lkIHNlbGVjdGlvbkNoYW5nZWQoU2VsZWN0aW9uQ2hhbmdlZEV2ZW50IGV2ZW50KSB7DQorCQkJCUlTdHJ1Y3R1cmVkU2VsZWN0aW9uIHNlbGVjdGlvbiA9IChJU3RydWN0dXJlZFNlbGVjdGlvbikgZXZlbnQuZ2V0U2VsZWN0aW9uKCk7DQorCQkJCXNldFNlbGVjdGlvbihzZWxlY3Rpb24pOw0KKwkJCQl1cGRhdGVGb2xkZXJUZXh0KCk7DQorCQkJCXZhbGlkYXRlUGFnZSgpOw0KKwkJCX0NCisJCX0pOw0KKw0KKwkJbmFtZVRleHQuYWRkTW9kaWZ5TGlzdGVuZXIobmV3IE1vZGlmeUxpc3RlbmVyKCkgew0KKw0KKwkJCUBPdmVycmlkZQ0KKwkJCXB1YmxpYyB2b2lkIG1vZGlmeVRleHQoTW9kaWZ5RXZlbnQgZSkgew0KKwkJCQl2YWxpZGF0ZVBhZ2UoKTsNCisJCQl9DQorCQl9KTsNCisNCisJCXBhcmVudENvbnRyb2wuZ2V0U2hlbGwoKS5nZXREaXNwbGF5KCkuYXN5bmNFeGVjKG5ldyBSdW5uYWJsZSgpIHsNCisJCQlAT3ZlcnJpZGUNCisJCQlwdWJsaWMgdm9pZCBydW4oKSB7DQorCQkJCXJldmVhbFNlbGVjdGVkRWxlbWVudCgpOw0KKwkJCQl2YWxpZGF0ZVBhZ2UoKTsNCisJCQl9DQorCQl9KTsNCisJfQ0KKw0KKwlwdWJsaWMgU3RyaW5nIGdldE5ld1Jlc291cmNlTmFtZSgpIHsNCisJCXJldHVybiAobmFtZVRleHQgPT0gbnVsbCkgPyBudWxsIDogbmFtZVRleHQuZ2V0VGV4dCgpLnRyaW0oKTsNCisJfQ0KKw0KKwlwdWJsaWMgVVJJIGNyZWF0ZU5ld01vZGVsUmVzb3VyY2VVUkkoKSB7DQorCQlyZXR1cm4gbmV3TW9kZWxSZXNvdXJjZVVSSTsNCisJfQ0KKw0KKwlwdWJsaWMgVVJJIGNyZWF0ZVNlbGVjdGVkRWxlbWVudFVSSSgpIHsNCisJCWlmIChzZWxlY3RlZEVsZW1lbnQgaW5zdGFuY2VvZiBDRE9DaGVja291dCkgew0KKwkJCUNET0NoZWNrb3V0IGNoZWNrb3V0ID0gKENET0NoZWNrb3V0KSBzZWxlY3RlZEVsZW1lbnQ7DQorCQkJcmV0dXJuIGNoZWNrb3V0LmdldFVSSSgpOw0KKwkJfQ0KKw0KKwkJaWYgKHNlbGVjdGVkRWxlbWVudCBpbnN0YW5jZW9mIENET1Jlc291cmNlTm9kZSkgew0KKwkJCUNET1Jlc291cmNlTm9kZSByZXNvdXJjZU5vZGUgPSAoQ0RPUmVzb3VyY2VOb2RlKSBzZWxlY3RlZEVsZW1lbnQ7DQorCQkJcmV0dXJuIHJlc291cmNlTm9kZS5nZXRVUkkoKTsNCisJCX0NCisNCisJCXJldHVybiBudWxsOw0KKwl9DQorDQorCS8qKg0KKwkgKiBEaWFncmFtIGV4dGVuc2lvbiBjaGFuZ2VkLg0KKwkgKg0KKwkgKiBAcGFyYW0gbmV3RXh0ZW5zaW9uDQorCSAqICAgICAgICAgICAgdGhlIG5ldyBleHRlbnNpb24NCisJICogQHJldHVybiByZXN1bHQgb2YgdmFsaWRhdGlvbiBvZiB0aGUgbmV3IGV4dGVuc2lvbg0KKwkgKi8NCisJcHVibGljIElTdGF0dXMgZGlhZ3JhbUV4dGVuc2lvbkNoYW5nZWQoU3RyaW5nIG5ld0V4dGVuc2lvbikgew0KKwkJU3RyaW5nIGN1cnJlbnRFeHRlbnNpb24gPSBnZXRFeHRlbnNpb24oKTsNCisJCWlmICghbmV3RXh0ZW5zaW9uLmVxdWFscyhjdXJyZW50RXh0ZW5zaW9uKSkgew0KKw0KKwkJCVN0cmluZyBvbGRGaWxlTmFtZSA9IGdldE5ld1Jlc291cmNlTmFtZSgpOw0KKwkJCVN0cmluZyBiYXNlID0gb2xkRmlsZU5hbWU7DQorCQkJaWYgKGN1cnJlbnRFeHRlbnNpb24gIT0gbnVsbCkgew0KKwkJCQkvLyB0YWtlIG9uZSBvZmYgZm9yIHRoZSAnLicNCisJCQkJYmFzZSA9IGJhc2Uuc3Vic3RyaW5nKDAsIGJhc2UubGVuZ3RoKCkgLSBjdXJyZW50RXh0ZW5zaW9uLmxlbmd0aCgpIC0gMSk7DQorCQkJfQ0KKwkJCVN0cmluZyBuZXdGaWxlTmFtZSA9IGdldFVuaXF1ZU5hbWUobmV3RXh0ZW5zaW9uKTsNCisNCisJCQlzZXROZXdSZXNvdXJjZU5hbWUobmV3RmlsZU5hbWUpOw0KKw0KKwkJCVN0cmluZyBtZXNzYWdlMSA9IG9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0ud2l6YXJkcy5NZXNzYWdlcy5OZXdNb2RlbEZpbGVQYWdlX25ld19kaWFncmFtX2NhdGVnb3J5X25lZWRzX3NwZWNpZmljX2V4dGVuc2lvbjsNCisJCQlTdHJpbmcgbWVzc2FnZTIgPSBOTFMuYmluZChvcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLndpemFyZHMuTWVzc2FnZXMuTmV3TW9kZWxGaWxlUGFnZV9kaWFncmFtX2ZpbGVfd2FzX3JlbmFtZWQsIG9sZEZpbGVOYW1lLCBuZXdGaWxlTmFtZSk7DQorCQkJU3RyaW5nIG1lc3NhZ2UgPSBtZXNzYWdlMSArIG1lc3NhZ2UyOw0KKwkJCVN0YXR1cyByZXN1bHRTdGF0dXMgPSBuZXcgU3RhdHVzKElTdGF0dXMuSU5GTywgQWN0aXZhdG9yLlBMVUdJTl9JRCwgbWVzc2FnZSk7DQorDQorCQkJU3RyaW5nIGVycm9yTWVzc2FnZSA9IGdldEVycm9yTWVzc2FnZSgpOw0KKwkJCWlmIChlcnJvck1lc3NhZ2UgIT0gbnVsbCkgew0KKwkJCQlyZXN1bHRTdGF0dXMgPSBuZXcgU3RhdHVzKElTdGF0dXMuRVJST1IsIEFjdGl2YXRvci5QTFVHSU5fSUQsIGVycm9yTWVzc2FnZSk7DQorCQkJfQ0KKwkJCXJldHVybiByZXN1bHRTdGF0dXM7DQorCQl9DQorCQlyZXR1cm4gU3RhdHVzLk9LX1NUQVRVUzsNCisJfQ0KKw0KKwlwcm90ZWN0ZWQgdm9pZCBzZXROZXdSZXNvdXJjZU5hbWUoU3RyaW5nIG5ld05hbWUpIHsNCisJCW5hbWVUZXh0LnNldFRleHQobmV3TmFtZS50cmltKCkpOw0KKwl9DQorDQorCXByb3RlY3RlZCB2b2lkIHZhbGlkYXRlUGFnZSgpIHsNCisJCW5ld01vZGVsUmVzb3VyY2VVUkkgPSBudWxsOw0KKwkJc2V0TWVzc2FnZShudWxsLCBOT05FKTsNCisJCXNldFBhZ2VDb21wbGV0ZSh0cnVlKTsNCisNCisJCVN0cmluZyBmb2xkZXIgPSBmb2xkZXJUZXh0LmdldFRleHQoKS50cmltKCk7DQorCQlpZiAoU3RyaW5ncy5pc051bGxPckVtcHR5KGZvbGRlcikpIHsNCisJCQlzZXRQYWdlQ29tcGxldGUoZmFsc2UpOw0KKwkJCXJldHVybjsNCisJCX0NCisNCisJCVN0cmluZ1tdIHNlZ21lbnRzID0gZ2V0U2VnbWVudHMoZm9sZGVyKTsNCisJCUNET0NoZWNrb3V0IGNoZWNrb3V0ID0gQ0RPRXhwbG9yZXJVdGlsLmdldENoZWNrb3V0TWFuYWdlcigpLmdldENoZWNrb3V0QnlMYWJlbChzZWdtZW50c1swXSk7DQorCQlpZiAoY2hlY2tvdXQgPT0gbnVsbCkgew0KKwkJCXNldE1lc3NhZ2UoTkxTLmJpbmQoIlRoZSBzZWxlY3RlZCBjaGVja291dCBkb2VzIG5vdCBleGlzdC4iLCBzZWdtZW50c1swXSksIEVSUk9SKTsNCisJCQlzZXRQYWdlQ29tcGxldGUoZmFsc2UpOw0KKwkJCXJldHVybjsNCisJCX0NCisNCisJCUNET1ZpZXcgdmlldyA9IGNoZWNrb3V0LmdldFZpZXcoKTsNCisJCVN0cmluZyBwYXRoID0gIiI7DQorCQlTZWdtZW50VHlwZSBzZWdtZW50VHlwZSA9IFNlZ21lbnRUeXBlLkZPTERFUjsgLy8gVGhlIGNoZWNrb3V0IGlzIHRyZWF0ZWQgbGlrZSBhIGZvbGRlci4NCisNCisJCWZvciAoaW50IGkgPSAxOyBpIDwgc2VnbWVudHMubGVuZ3RoOyBpKyspIHsNCisJCQlTdHJpbmcgc2VnbWVudCA9IHNlZ21lbnRzW2ldOw0KKwkJCXBhdGggKz0gIi8iOw0KKwkJCXBhdGggKz0gc2VnbWVudDsNCisNCisJCQlzZWdtZW50VHlwZSA9IFNlZ21lbnRUeXBlLm9mKHZpZXcsIHBhdGgpOw0KKwkJCWlmIChzZWdtZW50VHlwZSA9PSBTZWdtZW50VHlwZS5PVEhFUikgew0KKwkJCQlzZXRNZXNzYWdlKCJUaGUgc3BlY2lmaWVkIGZvbGRlciBjYW5ub3QgYmUgY3JlYXRlZC4iLCBFUlJPUik7DQorCQkJCXNldFBhZ2VDb21wbGV0ZShmYWxzZSk7DQorCQkJCXJldHVybjsNCisJCQl9DQorCQl9DQorDQorCQlTdHJpbmcgbmFtZSA9IGdldE5ld1Jlc291cmNlTmFtZSgpOw0KKwkJaWYgKFN0cmluZ3MuaXNOdWxsT3JFbXB0eShuYW1lKSkgew0KKwkJCXNldE1lc3NhZ2UoIlRoZSBuZXcgbW9kZWwgcmVzb3VyY2UgbmFtZSBpcyByZXF1aXJlZC4iLCBFUlJPUik7DQorCQkJc2V0UGFnZUNvbXBsZXRlKGZhbHNlKTsNCisJCQlyZXR1cm47DQorCQl9DQorCQkNCisJCWlmIChzZWdtZW50VHlwZSAhPSBTZWdtZW50VHlwZS5NSVNTSU5HKSB7DQorCQkJU3RyaW5nIGZ1bGxQYXRoID0gcGF0aCArICIvIiArIG5hbWU7DQorCQkJaWYgKFNlZ21lbnRUeXBlLm9mKHZpZXcsIGZ1bGxQYXRoKSAhPSBTZWdtZW50VHlwZS5NSVNTSU5HKSB7DQorCQkJCXNldE1lc3NhZ2UoTkxTLmJpbmQoIlRoZSByZXNvdXJjZSBhbHJlYWR5IGV4aXN0cy4iLCBmdWxsUGF0aCksIEVSUk9SKTsNCisJCQkJc2V0UGFnZUNvbXBsZXRlKGZhbHNlKTsNCisJCQkJcmV0dXJuOw0KKwkJCX0NCisJCX0NCisJCS8vVE9ETyB3b3JrIGluIHByb2dyZXNzISENCisJCVN0cmluZyBmb2xkZXJOYW1lID0gbmFtZS5zdWJzdHJpbmcoMCwgbmFtZS5sYXN0SW5kZXhPZigiLiIpKTsNCisJCXBhdGggPSBwYXRoLmNvbmNhdCgiLyIgKyBmb2xkZXJOYW1lLnN1YnN0cmluZygwLCAxKS50b1VwcGVyQ2FzZSgpICsgZm9sZGVyTmFtZS5zdWJzdHJpbmcoMSkpOyANCisJCQ0KKwkJbmV3TW9kZWxSZXNvdXJjZVVSSSA9IGNoZWNrb3V0LmNyZWF0ZVJlc291cmNlVVJJKHBhdGgpLmFwcGVuZFNlZ21lbnQobmFtZSk7DQorCQlmb2xkZXJSZWxhdGl2ZVBhdGggPSBwYXRoOw0KKwkJcHJvamVjdE5hbWUgPSBmb2xkZXJOYW1lOw0KKw0KKwkJaWYgKHNlZ21lbnRUeXBlID09IFNlZ21lbnRUeXBlLk1JU1NJTkcpIHsNCisJCQlzZXRNZXNzYWdlKCJUaGUgc3BlY2lmaWVkIGZvbGRlciBkb2VzIG5vdCBleGlzdCBhbmQgd2lsbCBiZSBjcmVhdGVkLiIsIFdBUk5JTkcpOw0KKwkJfQ0KKwl9DQorDQorCXByaXZhdGUgU3RyaW5nW10gZ2V0U2VnbWVudHMoU3RyaW5nIGZvbGRlcikgew0KKwkJd2hpbGUgKGZvbGRlci5zdGFydHNXaXRoKCIvIikpIHsNCisJCQlmb2xkZXIgPSBmb2xkZXIuc3Vic3RyaW5nKDEpOw0KKwkJfQ0KKw0KKwkJd2hpbGUgKGZvbGRlci5lbmRzV2l0aCgiLyIpKSB7DQorCQkJZm9sZGVyID0gZm9sZGVyLnN1YnN0cmluZygwLCBmb2xkZXIubGVuZ3RoKCkgLSAxKTsNCisJCX0NCisNCisJCXJldHVybiBmb2xkZXIuc3BsaXQoIi8iKTsNCisJfQ0KKw0KKwlwcml2YXRlIFN0cmluZyBnZXRFeHRlbnNpb24oKSB7DQorCQlTdHJpbmcgcmVzdWx0ID0gbnVsbDsNCisJCVN0cmluZyBuYW1lID0gZ2V0TmV3UmVzb3VyY2VOYW1lKCk7DQorDQorCQlpZiAobmFtZSAhPSBudWxsKSB7DQorCQkJLy8gdGhlIHByb3BlciBleHRlbnNpb24gaXMgd2hhdGV2ZXIgZm9sbG93cyB0aGUgKmxhc3QqICcuJywNCisJCQkvLyBidXQgZm9yIG91ciBwdXJwb3NlcyB3ZSBuZWVkIGUuZy4gInByb2ZpbGUudW1sIiB0byBiZQ0KKwkJCS8vIGFuIGV4dGVuc2lvbg0KKwkJCWludCBkb3QgPSBuYW1lLmluZGV4T2YoJy4nKTsNCisJCQlpZiAoZG90ID49IDApIHsNCisJCQkJcmVzdWx0ID0gbmFtZS5zdWJzdHJpbmcoZG90ICsgMSk7DQorCQkJfQ0KKwkJfQ0KKw0KKwkJcmV0dXJuIHJlc3VsdDsNCisJfQ0KKw0KKwlwcml2YXRlIHZvaWQgc2V0U2VsZWN0aW9uKElTdHJ1Y3R1cmVkU2VsZWN0aW9uIHNlbGVjdGlvbikgew0KKwkJc2VsZWN0ZWRFbGVtZW50ID0gbnVsbDsNCisNCisJCWlmICghc2VsZWN0aW9uLmlzRW1wdHkoKSkgew0KKwkJCU9iamVjdCBlbGVtZW50ID0gc2VsZWN0aW9uLmdldEZpcnN0RWxlbWVudCgpOw0KKwkJCWlmIChlbGVtZW50IGluc3RhbmNlb2YgQ0RPRWxlbWVudCkgew0KKwkJCQllbGVtZW50ID0gKChDRE9FbGVtZW50KSBlbGVtZW50KS5nZXREZWxlZ2F0ZSgpOw0KKwkJCX0NCisNCisJCQlpZiAoZWxlbWVudCBpbnN0YW5jZW9mIENET0NoZWNrb3V0KSB7DQorCQkJCXNlbGVjdGVkRWxlbWVudCA9IGVsZW1lbnQ7DQorCQkJfSBlbHNlIGlmIChlbGVtZW50IGluc3RhbmNlb2YgQ0RPUmVzb3VyY2VMZWFmKSB7DQorCQkJCXNlbGVjdGVkRWxlbWVudCA9ICgoQ0RPUmVzb3VyY2VMZWFmKSBlbGVtZW50KS5nZXRGb2xkZXIoKTsNCisJCQl9IGVsc2UgaWYgKGVsZW1lbnQgaW5zdGFuY2VvZiBDRE9SZXNvdXJjZUZvbGRlcikgew0KKwkJCQlzZWxlY3RlZEVsZW1lbnQgPSAoQ0RPUmVzb3VyY2VGb2xkZXIpIGVsZW1lbnQ7DQorCQkJfSBlbHNlIGlmIChlbGVtZW50IGluc3RhbmNlb2YgRU9iamVjdCkgew0KKwkJCQlSZXNvdXJjZSByZXNvdXJjZSA9ICgoRU9iamVjdCkgZWxlbWVudCkuZVJlc291cmNlKCk7DQorCQkJCWlmIChyZXNvdXJjZSBpbnN0YW5jZW9mIENET1Jlc291cmNlKSB7DQorCQkJCQlzZWxlY3RlZEVsZW1lbnQgPSAoKENET1Jlc291cmNlKSByZXNvdXJjZSkuZ2V0Rm9sZGVyKCk7DQorCQkJCX0NCisJCQl9DQorCQl9DQorCX0NCisNCisJcHJpdmF0ZSB2b2lkIHVwZGF0ZUZvbGRlclRleHQoKSB7DQorCQlpZiAoIXN5bmNocm9uaXppbmdGb2xkZXJTZWxlY3Rpb24pIHsNCisJCQlzeW5jaHJvbml6aW5nRm9sZGVyU2VsZWN0aW9uID0gdHJ1ZTsNCisNCisJCQl0cnkgew0KKwkJCQlpZiAoc2VsZWN0ZWRFbGVtZW50ID09IG51bGwpIHsNCisJCQkJCWZvbGRlclRleHQuc2V0VGV4dCgiIik7IC8vJE5PTi1OTFMtMSQNCisJCQkJfSBlbHNlIHsNCisJCQkJCVN0cmluZ0J1aWxkZXIgYnVpbGRlciA9IG5ldyBTdHJpbmdCdWlsZGVyKCk7DQorCQkJCQlmb3IgKE9iamVjdCBub2RlIDogZ2V0U2VsZWN0ZWRTZWdtZW50cygpKSB7DQorCQkJCQkJYnVpbGRlci5hcHBlbmQoJy8nKTsNCisJCQkJCQlidWlsZGVyLmFwcGVuZChDRE9FeHBsb3JlclV0aWwuZ2V0TmFtZShub2RlKSk7DQorCQkJCQl9DQorDQorCQkJCQlTdHJpbmcgcGF0aCA9IGJ1aWxkZXIudG9TdHJpbmcoKTsNCisJCQkJCWZvbGRlclRleHQuc2V0VGV4dChwYXRoKTsNCisJCQkJfQ0KKwkJCX0gZmluYWxseSB7DQorCQkJCXN5bmNocm9uaXppbmdGb2xkZXJTZWxlY3Rpb24gPSBmYWxzZTsNCisJCQl9DQorCQl9DQorCX0NCisNCisJcHJpdmF0ZSB2b2lkIHJldmVhbFNlbGVjdGVkRWxlbWVudCgpIHsNCisJCWlmIChzZWxlY3RlZEVsZW1lbnQgIT0gbnVsbCkgew0KKwkJCUxpc3Q8T2JqZWN0PiBzZWdtZW50cyA9IGdldFNlbGVjdGVkU2VnbWVudHMoKTsNCisJCQlmb3IgKGludCBpID0gMDsgaSA8IHNlZ21lbnRzLnNpemUoKSAtIDE7IGkrKykgew0KKwkJCQlPYmplY3Qgc2VnbWVudCA9IHNlZ21lbnRzLmdldChpKTsNCisJCQkJZm9sZGVyVmlld2VyLnNldEV4cGFuZGVkU3RhdGUoc2VnbWVudCwgdHJ1ZSk7DQorCQkJfQ0KKw0KKwkJCXNlbGVjdGVkRWxlbWVudFJldmVhbGVkID0gdHJ1ZTsNCisJCQlmb2xkZXJWaWV3ZXIuc2V0U2VsZWN0aW9uKG5ldyBTdHJ1Y3R1cmVkU2VsZWN0aW9uKHNlbGVjdGVkRWxlbWVudCksIHRydWUpOw0KKwkJfQ0KKwl9DQorDQorCXByaXZhdGUgTGlzdDxPYmplY3Q+IGdldFNlbGVjdGVkU2VnbWVudHMoKSB7DQorCQlMaXN0PE9iamVjdD4gc2VnbWVudHMgPSBuZXcgQXJyYXlMaXN0PE9iamVjdD4oKTsNCisJCWZpbGxTZWdtZW50cyhzZWdtZW50cywgc2VsZWN0ZWRFbGVtZW50KTsNCisJCXJldHVybiBzZWdtZW50czsNCisJfQ0KKw0KKwlwcml2YXRlIHZvaWQgZmlsbFNlZ21lbnRzKExpc3Q8T2JqZWN0PiBzZWdtZW50cywgT2JqZWN0IGVsZW1lbnQpIHsNCisJCWlmIChlbGVtZW50IGluc3RhbmNlb2YgQ0RPQ2hlY2tvdXQpIHsNCisJCQlzZWdtZW50cy5hZGQoZWxlbWVudCk7DQorCQkJcmV0dXJuOw0KKwkJfQ0KKw0KKwkJaWYgKGVsZW1lbnQgaW5zdGFuY2VvZiBDRE9SZXNvdXJjZUZvbGRlcikgew0KKwkJCUNET1Jlc291cmNlRm9sZGVyIGZvbGRlciA9IChDRE9SZXNvdXJjZUZvbGRlcikgZWxlbWVudDsNCisNCisJCQlBZGFwdGVyIGFkYXB0ZXIgPSBFY29yZVV0aWwuZ2V0QWRhcHRlcihmb2xkZXIuZUFkYXB0ZXJzKCksIENET0NoZWNrb3V0LmNsYXNzKTsNCisJCQlpZiAoYWRhcHRlciAhPSBudWxsKSB7DQorCQkJCWZpbGxTZWdtZW50cyhzZWdtZW50cywgYWRhcHRlcik7DQorCQkJfSBlbHNlIHsNCisJCQkJT2JqZWN0IHBhcmVudCA9IGZvbGRlci5nZXRGb2xkZXIoKTsNCisJCQkJaWYgKHBhcmVudCA9PSBudWxsKSB7DQorCQkJCQlwYXJlbnQgPSBFY29yZVV0aWwuZ2V0QWRhcHRlcihmb2xkZXIuY2RvVmlldygpLmdldFJvb3RSZXNvdXJjZSgpLmVBZGFwdGVycygpLCBDRE9DaGVja291dC5jbGFzcyk7DQorCQkJCX0NCisNCisJCQkJZmlsbFNlZ21lbnRzKHNlZ21lbnRzLCBwYXJlbnQpOw0KKwkJCX0NCisJCX0NCisNCisJCXNlZ21lbnRzLmFkZChlbGVtZW50KTsNCisJfQ0KKw0KKwlwcml2YXRlIEVMaXN0PEVPYmplY3Q+IGdldENoaWxkcmVuT2ZTZWxlY3RlZEVsZW1lbnQoKSB7DQorCQlpZiAoc2VsZWN0ZWRFbGVtZW50IGluc3RhbmNlb2YgQ0RPQ2hlY2tvdXQpIHsNCisJCQlDRE9DaGVja291dCBjaGVja291dCA9IChDRE9DaGVja291dCkgc2VsZWN0ZWRFbGVtZW50Ow0KKwkJCXJldHVybiBjaGVja291dC5nZXRSb290T2JqZWN0KCkuZUNvbnRlbnRzKCk7DQorCQl9DQorDQorCQlpZiAoc2VsZWN0ZWRFbGVtZW50IGluc3RhbmNlb2YgQ0RPUmVzb3VyY2VGb2xkZXIpIHsNCisJCQlDRE9SZXNvdXJjZUZvbGRlciBmb2xkZXIgPSAoQ0RPUmVzb3VyY2VGb2xkZXIpIHNlbGVjdGVkRWxlbWVudDsNCisJCQlyZXR1cm4gZm9sZGVyLmVDb250ZW50cygpOw0KKwkJfQ0KKw0KKwkJcmV0dXJuIEVDb2xsZWN0aW9ucy5lbXB0eUVMaXN0KCk7DQorCX0NCisNCisJcHJpdmF0ZSBTdHJpbmcgZ2V0VW5pcXVlTmFtZShTdHJpbmcgZXh0ZW5zaW9uKSB7DQorCQlTZXQ8U3RyaW5nPiBuYW1lcyA9IG5ldyBIYXNoU2V0PFN0cmluZz4oKTsNCisJCWZvciAoRU9iamVjdCBlT2JqZWN0IDogZ2V0Q2hpbGRyZW5PZlNlbGVjdGVkRWxlbWVudCgpKSB7DQorCQkJaWYgKGVPYmplY3QgaW5zdGFuY2VvZiBDRE9SZXNvdXJjZU5vZGUpIHsNCisJCQkJQ0RPUmVzb3VyY2VOb2RlIG5vZGUgPSAoQ0RPUmVzb3VyY2VOb2RlKSBlT2JqZWN0Ow0KKwkJCQlTdHJpbmcgbmFtZSA9IG5vZGUuZ2V0TmFtZSgpOw0KKwkJCQlpZiAobmFtZS5zdGFydHNXaXRoKHJlc291cmNlVHlwZSkpIHsNCisJCQkJCW5hbWVzLmFkZChuYW1lKTsNCisJCQkJfQ0KKwkJCX0NCisJCX0NCisNCisJCWZvciAoaW50IGkgPSAxOyBpIDwgSW50ZWdlci5NQVhfVkFMVUU7IGkrKykgew0KKwkJCVN0cmluZyBuYW1lID0gcmVzb3VyY2VUeXBlICsgKGkgPiAxID8gaSA6ICIiKSArICIuIiArIGV4dGVuc2lvbjsNCisJCQlpZiAoIW5hbWVzLmNvbnRhaW5zKG5hbWUpKSB7DQorCQkJCXJldHVybiBuYW1lOw0KKwkJCX0NCisJCX0NCisNCisJCXRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oIlRvbyBtYW55IGNoaWxkcmVuIik7DQorCX0NCisNCisJLyoqDQorCSAqIEBhdXRob3IgU3RlcHBlcg0KKwkgKi8NCisJcHJpdmF0ZSBlbnVtIFNlZ21lbnRUeXBlIHsNCisJCU1JU1NJTkcsIEZPTERFUiwgT1RIRVI7DQorDQorCQlwdWJsaWMgc3RhdGljIFNlZ21lbnRUeXBlIG9mKENET1ZpZXcgdmlldywgU3RyaW5nIHBhdGgpIHsNCisJCQlDRE9SZXNvdXJjZU5vZGUgcmVzb3VyY2VOb2RlOw0KKwkJCXRyeSB7DQorCQkJCXJlc291cmNlTm9kZSA9IHZpZXcuZ2V0UmVzb3VyY2VOb2RlKHBhdGgpOw0KKwkJCQlpZiAocmVzb3VyY2VOb2RlICE9IG51bGwpIHsNCisJCQkJCWlmIChyZXNvdXJjZU5vZGUgaW5zdGFuY2VvZiBDRE9SZXNvdXJjZUZvbGRlcikgew0KKwkJCQkJCXJldHVybiBTZWdtZW50VHlwZS5GT0xERVI7DQorCQkJCQl9DQorDQorCQkJCQlyZXR1cm4gU2VnbWVudFR5cGUuT1RIRVI7DQorCQkJCX0NCisJCQl9IGNhdGNoIChFeGNlcHRpb24gZXgpIHsNCisJCQkJLy8kRkFMTC1USFJPVUdIJA0KKwkJCX0NCisNCisJCQlyZXR1cm4gU2VnbWVudFR5cGUuTUlTU0lORzsNCisJCX0NCisNCisJCXByaXZhdGUgc3RhdGljIFNlZ21lbnRUeXBlIG9mKENET1Jlc291cmNlTm9kZSByZXNvdXJjZU5vZGUpIHsNCisJCQlpZiAocmVzb3VyY2VOb2RlID09IG51bGwpIHsNCisJCQkJcmV0dXJuIFNlZ21lbnRUeXBlLk1JU1NJTkc7DQorCQkJfQ0KKw0KKwkJCWlmIChyZXNvdXJjZU5vZGUgaW5zdGFuY2VvZiBDRE9SZXNvdXJjZUZvbGRlcikgew0KKwkJCQlyZXR1cm4gU2VnbWVudFR5cGUuRk9MREVSOw0KKwkJCX0NCisNCisJCQlyZXR1cm4gU2VnbWVudFR5cGUuT1RIRVI7DQorCQl9DQorCX0NCisNCisJcHVibGljIFN0cmluZyBnZXRGb2xkZXJSZWxhdGl2ZVBhdGgoKSB7DQorCQlyZXR1cm4gZm9sZGVyUmVsYXRpdmVQYXRoOw0KKwl9DQorCQ0KKwlwdWJsaWMgU3RyaW5nIGdldFByb2plY3ROYW1lKCkgew0KKwkJcmV0dXJuIHByb2plY3ROYW1lOw0KKwl9DQorfQ0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNkby9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2Nkby9wcm92aWRlcnMvQ0hFU1NDRE9OZXdNb2RlbFN0b3JhZ2VQcm92aWRlci5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2RvL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2RvL3Byb3ZpZGVycy9DSEVTU0NET05ld01vZGVsU3RvcmFnZVByb3ZpZGVyLmphdmEKaW5kZXggYWI1ZDcwZS4uOTgxYjc3MCAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2RvL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2RvL3Byb3ZpZGVycy9DSEVTU0NET05ld01vZGVsU3RvcmFnZVByb3ZpZGVyLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2RvL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2RvL3Byb3ZpZGVycy9DSEVTU0NET05ld01vZGVsU3RvcmFnZVByb3ZpZGVyLmphdmEKQEAgLTEsMjU0ICsxLDI2MSBAQAotcGFja2FnZSBvcmcucG9sYXJzeXMuY2hlc3MuY2RvLnByb3ZpZGVyczsKLQotaW1wb3J0IHN0YXRpYyBvcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLndpemFyZHMudXRpbHMuV2l6YXJkc0hlbHBlci5hZGFwdDsKLWltcG9ydCBzdGF0aWMgb3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS53aXphcmRzLnV0aWxzLldpemFyZHNIZWxwZXIuZ2V0U2VsZWN0ZWRSZXNvdXJjZVVSSTsKLQotaW1wb3J0IGphdmEudXRpbC5BcnJheXM7Ci1pbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb25zOwotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNkby5DRE9PYmplY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNkby5lcmVzb3VyY2UuQ0RPUmVzb3VyY2VOb2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jZG8uZXhwbG9yZXIuQ0RPRXhwbG9yZXJVdGlsOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jZG8uZXhwbG9yZXIuY2hlY2tvdXRzLkNET0NoZWNrb3V0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24udXRpbC5VUkk7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5JU3RydWN0dXJlZFNlbGVjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS53aXphcmQuSVdpemFyZFBhZ2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uub3NnaS51dGlsLk5MUzsKLWltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLmNkby5pbnRlcm5hbC5jb3JlLkNET1V0aWxzOwotaW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuY2RvLmludGVybmFsLnVpLmVkaXRvcnMuUGFweXJ1c0NET0VkaXRvcklucHV0OwotaW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0ud2l6YXJkcy5wYWdlcy5TZWxlY3REaWFncmFtQ2F0ZWdvcnlQYWdlOwotaW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0ud2l6YXJkcy5wcm92aWRlcnMuQWJzdHJhY3ROZXdNb2RlbFN0b3JhZ2VQcm92aWRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLndpemFyZHMud2l6YXJkcy5DcmVhdGVNb2RlbFdpemFyZDsKLWltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLndpemFyZHMud2l6YXJkcy5Jbml0TW9kZWxXaXphcmQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuQ29tcG9zaXRlOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLklFZGl0b3JJbnB1dDsKLWltcG9ydCBvcmcuZWNsaXBzZS51aS5JTmV3V2l6YXJkOwotaW1wb3J0IG9yZy5wb2xhcnN5cy5jaGVzcy5jZG8ucGFnZXMuTmV3Q0hFU1NNb2RlbFBhZ2U7Ci1pbXBvcnQgb3JnLnBvbGFyc3lzLmNoZXNzLmNkby53aXphcmRzLkNyZWF0ZUNET0NIRVNTTW9kZWxXaXphcmQ7Ci1pbXBvcnQgb3JnLnBvbGFyc3lzLmNoZXNzLndpemFyZHMud2l6YXJkcy5DcmVhdGVDSEVTU01vZGVsV2l6YXJkOwotCi1pbXBvcnQgY29tLmdvb2dsZS5jb21tb24uZXZlbnRidXMuRXZlbnRCdXM7Ci0KLQotcHVibGljIGNsYXNzIENIRVNTQ0RPTmV3TW9kZWxTdG9yYWdlUHJvdmlkZXIgZXh0ZW5kcyBBYnN0cmFjdE5ld01vZGVsU3RvcmFnZVByb3ZpZGVyIHsKLQotCXByaXZhdGUgZmluYWwgRXZlbnRCdXMgYnVzID0gbmV3IEV2ZW50QnVzKCJOZXdDRE9Nb2RlbFdpemFyZCIpOyAvLyROT04tTkxTLTEkCi0KLQlwcml2YXRlIENyZWF0ZUNET0NIRVNTTW9kZWxXaXphcmQgd2l6YXJkOwotCi0JcHJpdmF0ZSBTZWxlY3REaWFncmFtQ2F0ZWdvcnlQYWdlIG5ld0RpYWdyYW1DYXRlZ29yeVBhZ2U7Ci0KLQlwcml2YXRlIE5ld0NIRVNTTW9kZWxQYWdlIG5ld01vZGVsUGFnZTsKLQotCXByaXZhdGUgSVN0cnVjdHVyZWRTZWxlY3Rpb24gc2VsZWN0aW9uOwotCi0JcHVibGljIENIRVNTQ0RPTmV3TW9kZWxTdG9yYWdlUHJvdmlkZXIoKSB7Ci0JCXN1cGVyKCk7Ci0JfQotCi0JQE92ZXJyaWRlCi0JcHVibGljIGJvb2xlYW4gY2FuSGFuZGxlKElTdHJ1Y3R1cmVkU2VsZWN0aW9uIGluaXRpYWxTZWxlY3Rpb24pIHsKLQkJZm9yIChPYmplY3QgbmV4dCA6IGluaXRpYWxTZWxlY3Rpb24udG9MaXN0KCkpIHsKLQkJCWlmIChDRE9VdGlscy5pc0NET09iamVjdChhZGFwdChuZXh0LCBFT2JqZWN0LmNsYXNzKSkpIHsKLQkJCQlyZXR1cm4gdHJ1ZTsKLQkJCX0KLQotCQkJaWYgKGFkYXB0KG5leHQsIENET0NoZWNrb3V0LmNsYXNzKSAhPSBudWxsKSB7Ci0JCQkJcmV0dXJuIHRydWU7Ci0JCQl9Ci0JCX0KLQotCQlyZXR1cm4gZmFsc2U7Ci0JfQotCi0JcHVibGljIHZvaWQgaW5pdChDcmVhdGVDRE9DSEVTU01vZGVsV2l6YXJkIHdpemFyZCwgSVN0cnVjdHVyZWRTZWxlY3Rpb24gc2VsZWN0aW9uKSB7Ci0vLwkJc3VwZXIuaW5pdCh3aXphcmQsIHNlbGVjdGlvbik7Ci0KLQkJdGhpcy53aXphcmQgPSB3aXphcmQ7Ci0JCXRoaXMuc2VsZWN0aW9uID0gc2VsZWN0aW9uOwotCQluZXdNb2RlbFBhZ2UgPSBjcmVhdGVOZXdNb2RlbFBhZ2Uoc2VsZWN0aW9uKTsKLQkJY3JlYXRlU2VsZWN0UHJvdmlkZXJQYXJ0KCk7Ci0KLQkJQ0RPQ2hlY2tvdXQgY2hlY2tvdXQgPSBnZXRSZXBvc2l0b3J5KHNlbGVjdGlvbik7Ci0JCWlmIChjaGVja291dCAhPSBudWxsKSB7Ci0JCQlidXMucG9zdChjaGVja291dCk7Ci0JCX0KLQotLy8JCW5ld0RpYWdyYW1DYXRlZ29yeVBhZ2UgPSBjcmVhdGVOZXdEaWFncmFtQ2F0ZWdvcnlQYWdlKHNlbGVjdGlvbik7Ci0JfQotCi0JLyoqCi0JICogR2V0cyB0aGUgY29udGV4dHVhbCByZXBvc2l0b3J5LCBpZiBhbnksIGZyb20gYSBzZWxlY3Rpb24uCi0JICoKLQkgKiBAcGFyYW0gc2VsZWN0aW9uCi0JICogICAgICAgICAgICBhIHNlbGVjdGlvbgotCSAqCi0JICogQHJldHVybiB0aGUgcmVwb3NpdG9yeSB0aGF0IGlzIG9yIGNvbnRhaW5zIHRoZSB7QGNvZGUgc2VsZWN0aW9ufQotCSAqLwotCXN0YXRpYyBDRE9DaGVja291dCBnZXRSZXBvc2l0b3J5KElTdHJ1Y3R1cmVkU2VsZWN0aW9uIHNlbGVjdGlvbikgewotCQlDRE9DaGVja291dCByZXN1bHQgPSBudWxsOwotCi0JCWlmICghc2VsZWN0aW9uLmlzRW1wdHkoKSkgewotCQkJcmVzdWx0ID0gYWRhcHQoc2VsZWN0aW9uLmdldEZpcnN0RWxlbWVudCgpLCBDRE9DaGVja291dC5jbGFzcyk7Ci0JCQlpZiAocmVzdWx0ID09IG51bGwpIHsKLQkJCQlDRE9SZXNvdXJjZU5vZGUgbm9kZSA9IGFkYXB0KHNlbGVjdGlvbi5nZXRGaXJzdEVsZW1lbnQoKSwgQ0RPUmVzb3VyY2VOb2RlLmNsYXNzKTsKLQkJCQlpZiAobm9kZSA9PSBudWxsKSB7Ci0JCQkJCUVPYmplY3Qgb2JqZWN0ID0gYWRhcHQoc2VsZWN0aW9uLmdldEZpcnN0RWxlbWVudCgpLCBFT2JqZWN0LmNsYXNzKTsKLQkJCQkJaWYgKG9iamVjdCAhPSBudWxsKSB7Ci0JCQkJCQlDRE9PYmplY3QgY2RvID0gQ0RPVXRpbHMuZ2V0Q0RPT2JqZWN0KG9iamVjdCk7Ci0JCQkJCQlpZiAoY2RvICE9IG51bGwpIHsKLQkJCQkJCQlub2RlID0gY2RvLmNkb1Jlc291cmNlKCk7Ci0JCQkJCQl9Ci0JCQkJCX0KLQkJCQl9Ci0KLQkJCQlpZiAobm9kZSAhPSBudWxsKSB7Ci0JCQkJCXJlc3VsdCA9IENET0V4cGxvcmVyVXRpbC5nZXRDaGVja291dChub2RlLmdldFVSSSgpKTsKLQkJCQl9Ci0JCQl9Ci0JCX0KLQotCQlyZXR1cm4gcmVzdWx0OwotCX0KLQotCUBPdmVycmlkZQotCXB1YmxpYyBMaXN0PD8gZXh0ZW5kcyBJV2l6YXJkUGFnZT4gY3JlYXRlUGFnZXMoKSB7Ci0JCWlmIChuZXdNb2RlbFBhZ2UgPT0gbnVsbCAmJiBuZXdEaWFncmFtQ2F0ZWdvcnlQYWdlID09IG51bGwpIHsKLQkJCXJldHVybiBDb2xsZWN0aW9ucy5lbXB0eUxpc3QoKTsKLQkJfQotCi0JCXJldHVybiBBcnJheXMuYXNMaXN0KG5ld0RpYWdyYW1DYXRlZ29yeVBhZ2UsIG5ld01vZGVsUGFnZSk7Ci0JfQotCi0JQE92ZXJyaWRlCi0JcHVibGljIFNlbGVjdERpYWdyYW1DYXRlZ29yeVBhZ2UgZ2V0RGlhZ3JhbUNhdGVnb3J5UGFnZSgpIHsKLQkJcmV0dXJuIG5ld0RpYWdyYW1DYXRlZ29yeVBhZ2U7Ci0JfQotCi0JQE92ZXJyaWRlCi0JcHVibGljIElTdGF0dXMgdmFsaWRhdGVEaWFncmFtQ2F0ZWdvcmllcyhTdHJpbmcuLi4gbmV3Q2F0ZWdvcmllcykgewotCQlpZiAobmV3TW9kZWxQYWdlICE9IG51bGwgJiYgbmV3TW9kZWxQYWdlLmdldE5ld1Jlc291cmNlTmFtZSgpICE9IG51bGwpIHsKLQkJCVN0cmluZyBmaXJzdENhdGVnb3J5ID0gbmV3Q2F0ZWdvcmllcy5sZW5ndGggPiAwID8gbmV3Q2F0ZWdvcmllc1swXSA6IG51bGw7Ci0JCQlpZiAobmV3Q2F0ZWdvcmllcy5sZW5ndGggPiAwKSB7Ci0JCQkJLy8gMzE2OTQzIC0gW1dpemFyZF0gV3Jvbmcgc3VmZml4IGZvciBmaWxlIG5hbWUgd2hlbiBjcmVhdGluZyBhCi0JCQkJLy8gcHJvZmlsZSBtb2RlbAotCQkJCXJldHVybiBuZXdNb2RlbFBhZ2UuZGlhZ3JhbUV4dGVuc2lvbkNoYW5nZWQod2l6YXJkLmdldERpYWdyYW1GaWxlRXh0ZW5zaW9uKGZpcnN0Q2F0ZWdvcnkpKTsKLQkJCX0KLQkJfQotCi0JCXJldHVybiBzdXBlci52YWxpZGF0ZURpYWdyYW1DYXRlZ29yaWVzKG5ld0NhdGVnb3JpZXMpOwotCX0KLQotCS8qKgotCSAqIENyZWF0ZXMgdGhlIG5ldyBtb2RlbCBwYWdlLCBpZiByZXF1aXJlZC4KLQkgKgotCSAqIEBwYXJhbSBzZWxlY3Rpb24KLQkgKiAgICAgICAgICAgIHRoZSBzZWxlY3Rpb24KLQkgKgotCSAqIEByZXR1cm4gdGhlIG5ldyBtb2RlbCBwYWdlLCBvciB7QGNvZGUgbnVsbH0gaWYgbm9uZQotCSAqLwotCXByb3RlY3RlZCBOZXdDSEVTU01vZGVsUGFnZSBjcmVhdGVOZXdNb2RlbFBhZ2UoSVN0cnVjdHVyZWRTZWxlY3Rpb24gc2VsZWN0aW9uKSB7Ci0JCWlmICh3aXphcmQuaXNDcmVhdGVQcm9qZWN0V2l6YXJkKCkgfHwgd2l6YXJkLmlzQ3JlYXRlTXVsdGlwbGVNb2RlbHNXaXphcmQoKSkgewotCi0JCQlyZXR1cm4gbnVsbDsKLQkJfQotCi0JCWlmIChpc0NyZWF0ZUZyb21FeGlzdGluZ0RvbWFpbk1vZGVsKCkpIHsKLQkJCVVSSSB1cmkgPSBnZXRTZWxlY3RlZFJlc291cmNlVVJJKHNlbGVjdGlvbik7Ci0JCQlpZiAodXJpICE9IG51bGwpIHsKLQkJCQl1cmkgPSB1cmkudHJpbUZpbGVFeHRlbnNpb24oKS5hcHBlbmRGaWxlRXh0ZW5zaW9uKHdpemFyZC5nZXREaWFncmFtRmlsZUV4dGVuc2lvbihudWxsKSk7Ci0JCQkJcmV0dXJuIG5ldyBOZXdEaWFncmFtRm9yRXhpc3RpbmdNb2RlbFBhZ2Uoc2VsZWN0aW9uLCB3aXphcmQuZ2V0TW9kZWxLaW5kTmFtZSgpLCBidXMsIHVyaS5sYXN0U2VnbWVudCgpKTsKLQkJCX0KLQkJfQotCi0JCXJldHVybiBuZXcgTmV3Q0hFU1NNb2RlbFBhZ2Uoc2VsZWN0aW9uLCBidXMsIHdpemFyZC5nZXRNb2RlbEtpbmROYW1lKCkpOwotCX0KLQotCXByb3RlY3RlZCBib29sZWFuIGlzQ3JlYXRlRnJvbUV4aXN0aW5nRG9tYWluTW9kZWwoKSB7Ci0JCXJldHVybiBmYWxzZTsKLQl9Ci0KLQlAT3ZlcnJpZGUKLQlwdWJsaWMgVVJJIGNyZWF0ZU5ld01vZGVsVVJJKFN0cmluZyBjYXRlZ29yeUlkKSB7Ci0JCXJldHVybiBuZXdNb2RlbFBhZ2UuY3JlYXRlTmV3TW9kZWxSZXNvdXJjZVVSSSgpOwotCX0KLQotCUBPdmVycmlkZQotCXB1YmxpYyBJRWRpdG9ySW5wdXQgY3JlYXRlRWRpdG9ySW5wdXQoVVJJIHVyaSkgewotCQlyZXR1cm4gbmV3IFBhcHlydXNDRE9FZGl0b3JJbnB1dCh1cmksIHVyaS50cmltRmlsZUV4dGVuc2lvbigpLmxhc3RTZWdtZW50KCkpOwotCX0KLQotLy8JcHJpdmF0ZSBTZWxlY3REaWFncmFtQ2F0ZWdvcnlQYWdlIGNyZWF0ZU5ld0RpYWdyYW1DYXRlZ29yeVBhZ2UoSVN0cnVjdHVyZWRTZWxlY3Rpb24gc2VsZWN0aW9uKSB7Ci0vLwkJaWYgKHdpemFyZC5pc0NyZWF0ZVByb2plY3RXaXphcmQoKSB8fCB3aXphcmQuaXNDcmVhdGVNdWx0aXBsZU1vZGVsc1dpemFyZCgpIHx8ICF3aXphcmQuaXNQYXB5cnVzUm9vdFdpemFyZCgpKSB7Ci0vLwkJCXJldHVybiBudWxsOwotLy8JCX0KLS8vCi0vLwkJcmV0dXJuIG5ldyBTZWxlY3REaWFncmFtQ2F0ZWdvcnlQYWdlKCk7Ci0vLwl9Ci0KLQotCS8vCi0JLy8gTmVzdGVkIHR5cGVzCi0JLy8KLQotCS8qKgotCSAqIFRoaXMgaXMgdGhlIE5ld0RpYWdyYW1Gb3JFeGlzdGluZ01vZGVsUGFnZSB0eXBlLiBFbmpveS4KLQkgKi8KLQlwcm90ZWN0ZWQgc3RhdGljIGNsYXNzIE5ld0RpYWdyYW1Gb3JFeGlzdGluZ01vZGVsUGFnZSBleHRlbmRzIE5ld0NIRVNTTW9kZWxQYWdlIHsKLQotCQkvKiogVGhlIG15IGRpYWdyYW0gcmVzb3VyY2UgbmFtZS4gKi8KLQkJcHJpdmF0ZSBmaW5hbCBTdHJpbmcgbXlEaWFncmFtUmVzb3VyY2VOYW1lOwotCi0JCS8qKgotCQkgKiBJbnN0YW50aWF0ZXMgYSBuZXcgbmV3IGRpYWdyYW0gZm9yIGV4aXN0aW5nIG1vZGVsIHBhZ2UuCi0JCSAqCi0JCSAqIEBwYXJhbSBzZWxlY3Rpb24KLQkJICogICAgICAgICAgICB0aGUgc2VsZWN0aW9uCi0JCSAqIEBwYXJhbSBtb2RlbEtpbmROYW1lCi0JCSAqICAgICAgICAgICAgdGhlIHVzZXItcHJlc2VudGFibGUgKHRyYW5zbGF0YWJsZSkgbmFtZSBvZiB0aGUga2luZCBvZgotCQkgKiAgICAgICAgICAgIG1vZGVsIHRvIGNyZWF0ZQotCQkgKiBAcGFyYW0gYnVzCi0JCSAqICAgICAgICAgICAgYW4gZXZlbnQgYnVzIGZvciBwb3N0aW5nIGV2ZW50cwotCQkgKiBAcGFyYW0gZGVmYXVsdFJlc291cmNlTmFtZQotCQkgKiAgICAgICAgICAgIHRoZSBkZWZhdWx0IHJlc291cmNlIG5hbWUKLQkJICovCi0JCXB1YmxpYyBOZXdEaWFncmFtRm9yRXhpc3RpbmdNb2RlbFBhZ2UoSVN0cnVjdHVyZWRTZWxlY3Rpb24gc2VsZWN0aW9uLCBTdHJpbmcgbW9kZWxLaW5kTmFtZSwgRXZlbnRCdXMgYnVzLCBTdHJpbmcgZGVmYXVsdFJlc291cmNlTmFtZSkgewotCi0JCQlzdXBlcihzZWxlY3Rpb24sIGJ1cywgbW9kZWxLaW5kTmFtZSk7Ci0KLQkJCW15RGlhZ3JhbVJlc291cmNlTmFtZSA9IGRlZmF1bHRSZXNvdXJjZU5hbWU7Ci0JCQlzZXRUaXRsZSgiSW5pdCBhIG5ldyBQYXB5cnVzIG1vZGVsIik7Ci0JCQlzZXREZXNjcmlwdGlvbigiSW5pdCBhIG5ldyBQYXB5cnVzIG1vZGVsIGZyb20gdGhlIGV4aXN0aW5nIGRvbWFpbiBtb2RlbCIpOwotCQl9Ci0KLQkJQE92ZXJyaWRlCi0JCXB1YmxpYyB2b2lkIGNyZWF0ZUNvbnRyb2woQ29tcG9zaXRlIHBhcmVudCkgewotCQkJc3VwZXIuY3JlYXRlQ29udHJvbChwYXJlbnQpOwotCi0JCQlzZXROZXdSZXNvdXJjZU5hbWUobXlEaWFncmFtUmVzb3VyY2VOYW1lKTsKLQkJfQotCi0JCUBPdmVycmlkZQotCQlwcm90ZWN0ZWQgdm9pZCB2YWxpZGF0ZVBhZ2UoKSB7Ci0JCQlzdXBlci52YWxpZGF0ZVBhZ2UoKTsKLQotCQkJaWYgKGdldE1lc3NhZ2VUeXBlKCkgPCBFUlJPUikgewotCQkJCWlmICghbXlEaWFncmFtUmVzb3VyY2VOYW1lLmVxdWFscyhnZXROZXdSZXNvdXJjZU5hbWUoKSkpIHsKLQkJCQkJc2V0TWVzc2FnZShOTFMuYmluZChvcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLndpemFyZHMuTWVzc2FnZXMuSW5pdE1vZGVsV2l6YXJkX2RpYWdyYW1fbmFtZV9pc19kaWZmZXJlbnRfZnJvbV9kb21haW5fbW9kZWwsIG15RGlhZ3JhbVJlc291cmNlTmFtZSksIEVSUk9SKTsKLQkJCQkJc2V0UGFnZUNvbXBsZXRlKGZhbHNlKTsKLQkJCQl9Ci0JCQl9Ci0JCX07Ci0JfQotCQotCXB1YmxpYyBTdHJpbmcgZ2V0Rm9sZGVyUmVsYXRpdmVQYXRoKCl7Ci0JCXJldHVybiBuZXdNb2RlbFBhZ2UuZ2V0Rm9sZGVyUmVsYXRpdmVQYXRoKCk7CQkKLQl9Ci0JCi0JcHVibGljIFN0cmluZyBnZXRQcm9qZWN0TmFtZSgpewotCQlyZXR1cm4gbmV3TW9kZWxQYWdlLmdldFByb2plY3ROYW1lKCk7CQkKLQl9Ci19CisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqIENvcHlyaWdodCAoQykgMjAyMCANCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQorICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorcGFja2FnZSBvcmcucG9sYXJzeXMuY2hlc3MuY2RvLnByb3ZpZGVyczsNCisNCitpbXBvcnQgc3RhdGljIG9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0ud2l6YXJkcy51dGlscy5XaXphcmRzSGVscGVyLmFkYXB0Ow0KK2ltcG9ydCBzdGF0aWMgb3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS53aXphcmRzLnV0aWxzLldpemFyZHNIZWxwZXIuZ2V0U2VsZWN0ZWRSZXNvdXJjZVVSSTsNCisNCitpbXBvcnQgamF2YS51dGlsLkFycmF5czsNCitpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb25zOw0KK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jZG8uQ0RPT2JqZWN0Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY2RvLmVyZXNvdXJjZS5DRE9SZXNvdXJjZU5vZGU7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jZG8uZXhwbG9yZXIuQ0RPRXhwbG9yZXJVdGlsOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY2RvLmV4cGxvcmVyLmNoZWNrb3V0cy5DRE9DaGVja291dDsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLlVSSTsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3Q7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuSVN0cnVjdHVyZWRTZWxlY3Rpb247DQoraW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLndpemFyZC5JV2l6YXJkUGFnZTsNCitpbXBvcnQgb3JnLmVjbGlwc2Uub3NnaS51dGlsLk5MUzsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5jZG8uaW50ZXJuYWwuY29yZS5DRE9VdGlsczsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5jZG8uaW50ZXJuYWwudWkuZWRpdG9ycy5QYXB5cnVzQ0RPRWRpdG9ySW5wdXQ7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0ud2l6YXJkcy5wYWdlcy5TZWxlY3REaWFncmFtQ2F0ZWdvcnlQYWdlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLndpemFyZHMucHJvdmlkZXJzLkFic3RyYWN0TmV3TW9kZWxTdG9yYWdlUHJvdmlkZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0ud2l6YXJkcy53aXphcmRzLkNyZWF0ZU1vZGVsV2l6YXJkOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLndpemFyZHMud2l6YXJkcy5Jbml0TW9kZWxXaXphcmQ7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkNvbXBvc2l0ZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UudWkuSUVkaXRvcklucHV0Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS51aS5JTmV3V2l6YXJkOw0KK2ltcG9ydCBvcmcucG9sYXJzeXMuY2hlc3MuY2RvLnBhZ2VzLk5ld0NIRVNTTW9kZWxQYWdlOw0KK2ltcG9ydCBvcmcucG9sYXJzeXMuY2hlc3MuY2RvLndpemFyZHMuQ3JlYXRlQ0RPQ0hFU1NNb2RlbFdpemFyZDsNCitpbXBvcnQgb3JnLnBvbGFyc3lzLmNoZXNzLndpemFyZHMud2l6YXJkcy5DcmVhdGVDSEVTU01vZGVsV2l6YXJkOw0KKw0KK2ltcG9ydCBjb20uZ29vZ2xlLmNvbW1vbi5ldmVudGJ1cy5FdmVudEJ1czsNCisNCisNCitwdWJsaWMgY2xhc3MgQ0hFU1NDRE9OZXdNb2RlbFN0b3JhZ2VQcm92aWRlciBleHRlbmRzIEFic3RyYWN0TmV3TW9kZWxTdG9yYWdlUHJvdmlkZXIgew0KKw0KKwlwcml2YXRlIGZpbmFsIEV2ZW50QnVzIGJ1cyA9IG5ldyBFdmVudEJ1cygiTmV3Q0RPTW9kZWxXaXphcmQiKTsgLy8kTk9OLU5MUy0xJA0KKw0KKwlwcml2YXRlIENyZWF0ZUNET0NIRVNTTW9kZWxXaXphcmQgd2l6YXJkOw0KKw0KKwlwcml2YXRlIFNlbGVjdERpYWdyYW1DYXRlZ29yeVBhZ2UgbmV3RGlhZ3JhbUNhdGVnb3J5UGFnZTsNCisNCisJcHJpdmF0ZSBOZXdDSEVTU01vZGVsUGFnZSBuZXdNb2RlbFBhZ2U7DQorDQorCXByaXZhdGUgSVN0cnVjdHVyZWRTZWxlY3Rpb24gc2VsZWN0aW9uOw0KKw0KKwlwdWJsaWMgQ0hFU1NDRE9OZXdNb2RlbFN0b3JhZ2VQcm92aWRlcigpIHsNCisJCXN1cGVyKCk7DQorCX0NCisNCisJQE92ZXJyaWRlDQorCXB1YmxpYyBib29sZWFuIGNhbkhhbmRsZShJU3RydWN0dXJlZFNlbGVjdGlvbiBpbml0aWFsU2VsZWN0aW9uKSB7DQorCQlmb3IgKE9iamVjdCBuZXh0IDogaW5pdGlhbFNlbGVjdGlvbi50b0xpc3QoKSkgew0KKwkJCWlmIChDRE9VdGlscy5pc0NET09iamVjdChhZGFwdChuZXh0LCBFT2JqZWN0LmNsYXNzKSkpIHsNCisJCQkJcmV0dXJuIHRydWU7DQorCQkJfQ0KKw0KKwkJCWlmIChhZGFwdChuZXh0LCBDRE9DaGVja291dC5jbGFzcykgIT0gbnVsbCkgew0KKwkJCQlyZXR1cm4gdHJ1ZTsNCisJCQl9DQorCQl9DQorDQorCQlyZXR1cm4gZmFsc2U7DQorCX0NCisNCisJcHVibGljIHZvaWQgaW5pdChDcmVhdGVDRE9DSEVTU01vZGVsV2l6YXJkIHdpemFyZCwgSVN0cnVjdHVyZWRTZWxlY3Rpb24gc2VsZWN0aW9uKSB7DQorLy8JCXN1cGVyLmluaXQod2l6YXJkLCBzZWxlY3Rpb24pOw0KKw0KKwkJdGhpcy53aXphcmQgPSB3aXphcmQ7DQorCQl0aGlzLnNlbGVjdGlvbiA9IHNlbGVjdGlvbjsNCisJCW5ld01vZGVsUGFnZSA9IGNyZWF0ZU5ld01vZGVsUGFnZShzZWxlY3Rpb24pOw0KKwkJY3JlYXRlU2VsZWN0UHJvdmlkZXJQYXJ0KCk7DQorDQorCQlDRE9DaGVja291dCBjaGVja291dCA9IGdldFJlcG9zaXRvcnkoc2VsZWN0aW9uKTsNCisJCWlmIChjaGVja291dCAhPSBudWxsKSB7DQorCQkJYnVzLnBvc3QoY2hlY2tvdXQpOw0KKwkJfQ0KKw0KKy8vCQluZXdEaWFncmFtQ2F0ZWdvcnlQYWdlID0gY3JlYXRlTmV3RGlhZ3JhbUNhdGVnb3J5UGFnZShzZWxlY3Rpb24pOw0KKwl9DQorDQorCS8qKg0KKwkgKiBHZXRzIHRoZSBjb250ZXh0dWFsIHJlcG9zaXRvcnksIGlmIGFueSwgZnJvbSBhIHNlbGVjdGlvbi4NCisJICoNCisJICogQHBhcmFtIHNlbGVjdGlvbg0KKwkgKiAgICAgICAgICAgIGEgc2VsZWN0aW9uDQorCSAqDQorCSAqIEByZXR1cm4gdGhlIHJlcG9zaXRvcnkgdGhhdCBpcyBvciBjb250YWlucyB0aGUge0Bjb2RlIHNlbGVjdGlvbn0NCisJICovDQorCXN0YXRpYyBDRE9DaGVja291dCBnZXRSZXBvc2l0b3J5KElTdHJ1Y3R1cmVkU2VsZWN0aW9uIHNlbGVjdGlvbikgew0KKwkJQ0RPQ2hlY2tvdXQgcmVzdWx0ID0gbnVsbDsNCisNCisJCWlmICghc2VsZWN0aW9uLmlzRW1wdHkoKSkgew0KKwkJCXJlc3VsdCA9IGFkYXB0KHNlbGVjdGlvbi5nZXRGaXJzdEVsZW1lbnQoKSwgQ0RPQ2hlY2tvdXQuY2xhc3MpOw0KKwkJCWlmIChyZXN1bHQgPT0gbnVsbCkgew0KKwkJCQlDRE9SZXNvdXJjZU5vZGUgbm9kZSA9IGFkYXB0KHNlbGVjdGlvbi5nZXRGaXJzdEVsZW1lbnQoKSwgQ0RPUmVzb3VyY2VOb2RlLmNsYXNzKTsNCisJCQkJaWYgKG5vZGUgPT0gbnVsbCkgew0KKwkJCQkJRU9iamVjdCBvYmplY3QgPSBhZGFwdChzZWxlY3Rpb24uZ2V0Rmlyc3RFbGVtZW50KCksIEVPYmplY3QuY2xhc3MpOw0KKwkJCQkJaWYgKG9iamVjdCAhPSBudWxsKSB7DQorCQkJCQkJQ0RPT2JqZWN0IGNkbyA9IENET1V0aWxzLmdldENET09iamVjdChvYmplY3QpOw0KKwkJCQkJCWlmIChjZG8gIT0gbnVsbCkgew0KKwkJCQkJCQlub2RlID0gY2RvLmNkb1Jlc291cmNlKCk7DQorCQkJCQkJfQ0KKwkJCQkJfQ0KKwkJCQl9DQorDQorCQkJCWlmIChub2RlICE9IG51bGwpIHsNCisJCQkJCXJlc3VsdCA9IENET0V4cGxvcmVyVXRpbC5nZXRDaGVja291dChub2RlLmdldFVSSSgpKTsNCisJCQkJfQ0KKwkJCX0NCisJCX0NCisNCisJCXJldHVybiByZXN1bHQ7DQorCX0NCisNCisJQE92ZXJyaWRlDQorCXB1YmxpYyBMaXN0PD8gZXh0ZW5kcyBJV2l6YXJkUGFnZT4gY3JlYXRlUGFnZXMoKSB7DQorCQlpZiAobmV3TW9kZWxQYWdlID09IG51bGwgJiYgbmV3RGlhZ3JhbUNhdGVnb3J5UGFnZSA9PSBudWxsKSB7DQorCQkJcmV0dXJuIENvbGxlY3Rpb25zLmVtcHR5TGlzdCgpOw0KKwkJfQ0KKw0KKwkJcmV0dXJuIEFycmF5cy5hc0xpc3QobmV3RGlhZ3JhbUNhdGVnb3J5UGFnZSwgbmV3TW9kZWxQYWdlKTsNCisJfQ0KKw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIFNlbGVjdERpYWdyYW1DYXRlZ29yeVBhZ2UgZ2V0RGlhZ3JhbUNhdGVnb3J5UGFnZSgpIHsNCisJCXJldHVybiBuZXdEaWFncmFtQ2F0ZWdvcnlQYWdlOw0KKwl9DQorDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgSVN0YXR1cyB2YWxpZGF0ZURpYWdyYW1DYXRlZ29yaWVzKFN0cmluZy4uLiBuZXdDYXRlZ29yaWVzKSB7DQorCQlpZiAobmV3TW9kZWxQYWdlICE9IG51bGwgJiYgbmV3TW9kZWxQYWdlLmdldE5ld1Jlc291cmNlTmFtZSgpICE9IG51bGwpIHsNCisJCQlTdHJpbmcgZmlyc3RDYXRlZ29yeSA9IG5ld0NhdGVnb3JpZXMubGVuZ3RoID4gMCA/IG5ld0NhdGVnb3JpZXNbMF0gOiBudWxsOw0KKwkJCWlmIChuZXdDYXRlZ29yaWVzLmxlbmd0aCA+IDApIHsNCisJCQkJLy8gMzE2OTQzIC0gW1dpemFyZF0gV3Jvbmcgc3VmZml4IGZvciBmaWxlIG5hbWUgd2hlbiBjcmVhdGluZyBhDQorCQkJCS8vIHByb2ZpbGUgbW9kZWwNCisJCQkJcmV0dXJuIG5ld01vZGVsUGFnZS5kaWFncmFtRXh0ZW5zaW9uQ2hhbmdlZCh3aXphcmQuZ2V0RGlhZ3JhbUZpbGVFeHRlbnNpb24oZmlyc3RDYXRlZ29yeSkpOw0KKwkJCX0NCisJCX0NCisNCisJCXJldHVybiBzdXBlci52YWxpZGF0ZURpYWdyYW1DYXRlZ29yaWVzKG5ld0NhdGVnb3JpZXMpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBDcmVhdGVzIHRoZSBuZXcgbW9kZWwgcGFnZSwgaWYgcmVxdWlyZWQuDQorCSAqDQorCSAqIEBwYXJhbSBzZWxlY3Rpb24NCisJICogICAgICAgICAgICB0aGUgc2VsZWN0aW9uDQorCSAqDQorCSAqIEByZXR1cm4gdGhlIG5ldyBtb2RlbCBwYWdlLCBvciB7QGNvZGUgbnVsbH0gaWYgbm9uZQ0KKwkgKi8NCisJcHJvdGVjdGVkIE5ld0NIRVNTTW9kZWxQYWdlIGNyZWF0ZU5ld01vZGVsUGFnZShJU3RydWN0dXJlZFNlbGVjdGlvbiBzZWxlY3Rpb24pIHsNCisJCWlmICh3aXphcmQuaXNDcmVhdGVQcm9qZWN0V2l6YXJkKCkgfHwgd2l6YXJkLmlzQ3JlYXRlTXVsdGlwbGVNb2RlbHNXaXphcmQoKSkgew0KKw0KKwkJCXJldHVybiBudWxsOw0KKwkJfQ0KKw0KKwkJaWYgKGlzQ3JlYXRlRnJvbUV4aXN0aW5nRG9tYWluTW9kZWwoKSkgew0KKwkJCVVSSSB1cmkgPSBnZXRTZWxlY3RlZFJlc291cmNlVVJJKHNlbGVjdGlvbik7DQorCQkJaWYgKHVyaSAhPSBudWxsKSB7DQorCQkJCXVyaSA9IHVyaS50cmltRmlsZUV4dGVuc2lvbigpLmFwcGVuZEZpbGVFeHRlbnNpb24od2l6YXJkLmdldERpYWdyYW1GaWxlRXh0ZW5zaW9uKG51bGwpKTsNCisJCQkJcmV0dXJuIG5ldyBOZXdEaWFncmFtRm9yRXhpc3RpbmdNb2RlbFBhZ2Uoc2VsZWN0aW9uLCB3aXphcmQuZ2V0TW9kZWxLaW5kTmFtZSgpLCBidXMsIHVyaS5sYXN0U2VnbWVudCgpKTsNCisJCQl9DQorCQl9DQorDQorCQlyZXR1cm4gbmV3IE5ld0NIRVNTTW9kZWxQYWdlKHNlbGVjdGlvbiwgYnVzLCB3aXphcmQuZ2V0TW9kZWxLaW5kTmFtZSgpKTsNCisJfQ0KKw0KKwlwcm90ZWN0ZWQgYm9vbGVhbiBpc0NyZWF0ZUZyb21FeGlzdGluZ0RvbWFpbk1vZGVsKCkgew0KKwkJcmV0dXJuIGZhbHNlOw0KKwl9DQorDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgVVJJIGNyZWF0ZU5ld01vZGVsVVJJKFN0cmluZyBjYXRlZ29yeUlkKSB7DQorCQlyZXR1cm4gbmV3TW9kZWxQYWdlLmNyZWF0ZU5ld01vZGVsUmVzb3VyY2VVUkkoKTsNCisJfQ0KKw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIElFZGl0b3JJbnB1dCBjcmVhdGVFZGl0b3JJbnB1dChVUkkgdXJpKSB7DQorCQlyZXR1cm4gbmV3IFBhcHlydXNDRE9FZGl0b3JJbnB1dCh1cmksIHVyaS50cmltRmlsZUV4dGVuc2lvbigpLmxhc3RTZWdtZW50KCkpOw0KKwl9DQorDQorLy8JcHJpdmF0ZSBTZWxlY3REaWFncmFtQ2F0ZWdvcnlQYWdlIGNyZWF0ZU5ld0RpYWdyYW1DYXRlZ29yeVBhZ2UoSVN0cnVjdHVyZWRTZWxlY3Rpb24gc2VsZWN0aW9uKSB7DQorLy8JCWlmICh3aXphcmQuaXNDcmVhdGVQcm9qZWN0V2l6YXJkKCkgfHwgd2l6YXJkLmlzQ3JlYXRlTXVsdGlwbGVNb2RlbHNXaXphcmQoKSB8fCAhd2l6YXJkLmlzUGFweXJ1c1Jvb3RXaXphcmQoKSkgew0KKy8vCQkJcmV0dXJuIG51bGw7DQorLy8JCX0NCisvLw0KKy8vCQlyZXR1cm4gbmV3IFNlbGVjdERpYWdyYW1DYXRlZ29yeVBhZ2UoKTsNCisvLwl9DQorDQorDQorCS8vDQorCS8vIE5lc3RlZCB0eXBlcw0KKwkvLw0KKw0KKwkvKioNCisJICogVGhpcyBpcyB0aGUgTmV3RGlhZ3JhbUZvckV4aXN0aW5nTW9kZWxQYWdlIHR5cGUuIEVuam95Lg0KKwkgKi8NCisJcHJvdGVjdGVkIHN0YXRpYyBjbGFzcyBOZXdEaWFncmFtRm9yRXhpc3RpbmdNb2RlbFBhZ2UgZXh0ZW5kcyBOZXdDSEVTU01vZGVsUGFnZSB7DQorDQorCQkvKiogVGhlIG15IGRpYWdyYW0gcmVzb3VyY2UgbmFtZS4gKi8NCisJCXByaXZhdGUgZmluYWwgU3RyaW5nIG15RGlhZ3JhbVJlc291cmNlTmFtZTsNCisNCisJCS8qKg0KKwkJICogSW5zdGFudGlhdGVzIGEgbmV3IG5ldyBkaWFncmFtIGZvciBleGlzdGluZyBtb2RlbCBwYWdlLg0KKwkJICoNCisJCSAqIEBwYXJhbSBzZWxlY3Rpb24NCisJCSAqICAgICAgICAgICAgdGhlIHNlbGVjdGlvbg0KKwkJICogQHBhcmFtIG1vZGVsS2luZE5hbWUNCisJCSAqICAgICAgICAgICAgdGhlIHVzZXItcHJlc2VudGFibGUgKHRyYW5zbGF0YWJsZSkgbmFtZSBvZiB0aGUga2luZCBvZg0KKwkJICogICAgICAgICAgICBtb2RlbCB0byBjcmVhdGUNCisJCSAqIEBwYXJhbSBidXMNCisJCSAqICAgICAgICAgICAgYW4gZXZlbnQgYnVzIGZvciBwb3N0aW5nIGV2ZW50cw0KKwkJICogQHBhcmFtIGRlZmF1bHRSZXNvdXJjZU5hbWUNCisJCSAqICAgICAgICAgICAgdGhlIGRlZmF1bHQgcmVzb3VyY2UgbmFtZQ0KKwkJICovDQorCQlwdWJsaWMgTmV3RGlhZ3JhbUZvckV4aXN0aW5nTW9kZWxQYWdlKElTdHJ1Y3R1cmVkU2VsZWN0aW9uIHNlbGVjdGlvbiwgU3RyaW5nIG1vZGVsS2luZE5hbWUsIEV2ZW50QnVzIGJ1cywgU3RyaW5nIGRlZmF1bHRSZXNvdXJjZU5hbWUpIHsNCisNCisJCQlzdXBlcihzZWxlY3Rpb24sIGJ1cywgbW9kZWxLaW5kTmFtZSk7DQorDQorCQkJbXlEaWFncmFtUmVzb3VyY2VOYW1lID0gZGVmYXVsdFJlc291cmNlTmFtZTsNCisJCQlzZXRUaXRsZSgiSW5pdCBhIG5ldyBQYXB5cnVzIG1vZGVsIik7DQorCQkJc2V0RGVzY3JpcHRpb24oIkluaXQgYSBuZXcgUGFweXJ1cyBtb2RlbCBmcm9tIHRoZSBleGlzdGluZyBkb21haW4gbW9kZWwiKTsNCisJCX0NCisNCisJCUBPdmVycmlkZQ0KKwkJcHVibGljIHZvaWQgY3JlYXRlQ29udHJvbChDb21wb3NpdGUgcGFyZW50KSB7DQorCQkJc3VwZXIuY3JlYXRlQ29udHJvbChwYXJlbnQpOw0KKw0KKwkJCXNldE5ld1Jlc291cmNlTmFtZShteURpYWdyYW1SZXNvdXJjZU5hbWUpOw0KKwkJfQ0KKw0KKwkJQE92ZXJyaWRlDQorCQlwcm90ZWN0ZWQgdm9pZCB2YWxpZGF0ZVBhZ2UoKSB7DQorCQkJc3VwZXIudmFsaWRhdGVQYWdlKCk7DQorDQorCQkJaWYgKGdldE1lc3NhZ2VUeXBlKCkgPCBFUlJPUikgew0KKwkJCQlpZiAoIW15RGlhZ3JhbVJlc291cmNlTmFtZS5lcXVhbHMoZ2V0TmV3UmVzb3VyY2VOYW1lKCkpKSB7DQorCQkJCQlzZXRNZXNzYWdlKE5MUy5iaW5kKG9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0ud2l6YXJkcy5NZXNzYWdlcy5Jbml0TW9kZWxXaXphcmRfZGlhZ3JhbV9uYW1lX2lzX2RpZmZlcmVudF9mcm9tX2RvbWFpbl9tb2RlbCwgbXlEaWFncmFtUmVzb3VyY2VOYW1lKSwgRVJST1IpOw0KKwkJCQkJc2V0UGFnZUNvbXBsZXRlKGZhbHNlKTsNCisJCQkJfQ0KKwkJCX0NCisJCX07DQorCX0NCisJDQorCXB1YmxpYyBTdHJpbmcgZ2V0Rm9sZGVyUmVsYXRpdmVQYXRoKCl7DQorCQlyZXR1cm4gbmV3TW9kZWxQYWdlLmdldEZvbGRlclJlbGF0aXZlUGF0aCgpOwkJDQorCX0NCisJDQorCXB1YmxpYyBTdHJpbmcgZ2V0UHJvamVjdE5hbWUoKXsNCisJCXJldHVybiBuZXdNb2RlbFBhZ2UuZ2V0UHJvamVjdE5hbWUoKTsJCQ0KKwl9DQorfQ0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNkby9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2Nkby9wcm92aWRlcnMvQ0hFU1NQcm9qZWN0TGlzdExhYmVsUHJvdmlkZXIuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNkby9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2Nkby9wcm92aWRlcnMvQ0hFU1NQcm9qZWN0TGlzdExhYmVsUHJvdmlkZXIuamF2YQppbmRleCAxNDQyZjUwLi43OTQ2NzAzIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jZG8vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jZG8vcHJvdmlkZXJzL0NIRVNTUHJvamVjdExpc3RMYWJlbFByb3ZpZGVyLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2RvL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2RvL3Byb3ZpZGVycy9DSEVTU1Byb2plY3RMaXN0TGFiZWxQcm92aWRlci5qYXZhCkBAIC0xLDIxICsxLDI4IEBACi1wYWNrYWdlIG9yZy5wb2xhcnN5cy5jaGVzcy5jZG8ucHJvdmlkZXJzOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5MYWJlbFByb3ZpZGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5ncmFwaGljcy5JbWFnZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklQcm9qZWN0OwotCi1wdWJsaWMgY2xhc3MgQ0hFU1NQcm9qZWN0TGlzdExhYmVsUHJvdmlkZXIgZXh0ZW5kcyBMYWJlbFByb3ZpZGVyIHsKLQotCi0JcHVibGljIEltYWdlIGdldEltYWdlKE9iamVjdCBlbGVtZW50KSB7Ci0JCXJldHVybiBudWxsOwotCX0KLQotCi0JcHVibGljIFN0cmluZyBnZXRUZXh0KE9iamVjdCBlbGVtZW50KSB7Ci0JCUlQcm9qZWN0IHJlc291cmNlID0gKElQcm9qZWN0KSBlbGVtZW50OwotCQlyZXR1cm4gcmVzb3VyY2UuZ2V0TmFtZSgpOwotCX0KLQotfQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgDQorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KKyAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KK3BhY2thZ2Ugb3JnLnBvbGFyc3lzLmNoZXNzLmNkby5wcm92aWRlcnM7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuTGFiZWxQcm92aWRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmdyYXBoaWNzLkltYWdlOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUHJvamVjdDsNCisNCitwdWJsaWMgY2xhc3MgQ0hFU1NQcm9qZWN0TGlzdExhYmVsUHJvdmlkZXIgZXh0ZW5kcyBMYWJlbFByb3ZpZGVyIHsNCisNCisNCisJcHVibGljIEltYWdlIGdldEltYWdlKE9iamVjdCBlbGVtZW50KSB7DQorCQlyZXR1cm4gbnVsbDsNCisJfQ0KKw0KKw0KKwlwdWJsaWMgU3RyaW5nIGdldFRleHQoT2JqZWN0IGVsZW1lbnQpIHsNCisJCUlQcm9qZWN0IHJlc291cmNlID0gKElQcm9qZWN0KSBlbGVtZW50Ow0KKwkJcmV0dXJuIHJlc291cmNlLmdldE5hbWUoKTsNCisJfQ0KKw0KK30NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jZG8vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jZG8vd2l6YXJkcy9DcmVhdGVDRE9DSEVTU01vZGVsV2l6YXJkLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jZG8vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jZG8vd2l6YXJkcy9DcmVhdGVDRE9DSEVTU01vZGVsV2l6YXJkLmphdmEKaW5kZXggNmQ2NDJlYy4uYTI2MDQ0MCAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2RvL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2RvL3dpemFyZHMvQ3JlYXRlQ0RPQ0hFU1NNb2RlbFdpemFyZC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNkby9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2Nkby93aXphcmRzL0NyZWF0ZUNET0NIRVNTTW9kZWxXaXphcmQuamF2YQpAQCAtMTAsNyArMTAsNyBAQAogLS0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAgLS0KIC0tIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgIC0tCiAtLSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0ICAgICAtLQotLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAqLwpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2RvL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2RvL3dpemFyZHMvSW5pdENET01vZGVsV2l6YXJkLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jZG8vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jZG8vd2l6YXJkcy9Jbml0Q0RPTW9kZWxXaXphcmQuamF2YQppbmRleCBkZTIyOWRiLi41NzljNDg1IDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jZG8vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jZG8vd2l6YXJkcy9Jbml0Q0RPTW9kZWxXaXphcmQuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jZG8vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jZG8vd2l6YXJkcy9Jbml0Q0RPTW9kZWxXaXphcmQuamF2YQpAQCAtMTAsNyArMTAsNyBAQAogLS0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAgLS0KIC0tIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgIC0tCiAtLSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0ICAgICAtLQotLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAqLwpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvYWJvdXQuaHRtbCBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL2Fib3V0Lmh0bWwKaW5kZXggZGQzYzA4OS4uMTY0Zjc4MSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvYWJvdXQuaHRtbAorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9hYm91dC5odG1sCkBAIC0yLDI3ICsyLDM1IEBACiAgICAgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXN0cmljdC5kdGQiPgogPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgogPGhlYWQ+Ci08bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xIi8+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xIiAvPgogPHRpdGxlPkFib3V0PC90aXRsZT4KIDwvaGVhZD4KIDxib2R5IGxhbmc9IkVOLVVTIj4KLTxoMj5BYm91dCBUaGlzIENvbnRlbnQ8L2gyPgotIAotPHA+Tm92ZW1iZXIgMTQsIDIwMDg8L3A+CQotPGgzPkxpY2Vuc2U8L2gzPgorCTxoMj5BYm91dCBUaGlzIENvbnRlbnQ8L2gyPgogCi08cD5UaGUgRWNsaXBzZSBGb3VuZGF0aW9uIG1ha2VzIGF2YWlsYWJsZSBhbGwgY29udGVudCBpbiB0aGlzIHBsdWctaW4gKCZxdW90O0NvbnRlbnQmcXVvdDspLiAgVW5sZXNzIG90aGVyd2lzZSAKLWluZGljYXRlZCBiZWxvdywgdGhlIENvbnRlbnQgaXMgcHJvdmlkZWQgdG8geW91IHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUKLUVjbGlwc2UgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAxLjAgKCZxdW90O0VQTCZxdW90OykuICBBIGNvcHkgb2YgdGhlIEVQTCBpcyBhdmFpbGFibGUgCi1hdCA8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWw8L2E+LgotRm9yIHB1cnBvc2VzIG9mIHRoZSBFUEwsICZxdW90O1Byb2dyYW0mcXVvdDsgd2lsbCBtZWFuIHRoZSBDb250ZW50LjwvcD4KKwk8cD5Ob3ZlbWJlciAzMCwgMjAxNzwvcD4KKwk8aDM+TGljZW5zZTwvaDM+CiAKLTxwPklmIHlvdSBkaWQgbm90IHJlY2VpdmUgdGhpcyBDb250ZW50IGRpcmVjdGx5IGZyb20gdGhlIEVjbGlwc2UgRm91bmRhdGlvbiwgdGhlIENvbnRlbnQgaXMgCi1iZWluZyByZWRpc3RyaWJ1dGVkIGJ5IGFub3RoZXIgcGFydHkgKCZxdW90O1JlZGlzdHJpYnV0b3ImcXVvdDspIGFuZCBkaWZmZXJlbnQgdGVybXMgYW5kIGNvbmRpdGlvbnMgbWF5Ci1hcHBseSB0byB5b3VyIHVzZSBvZiBhbnkgb2JqZWN0IGNvZGUgaW4gdGhlIENvbnRlbnQuICBDaGVjayB0aGUgUmVkaXN0cmlidXRvcidzIGxpY2Vuc2UgdGhhdCB3YXMgCi1wcm92aWRlZCB3aXRoIHRoZSBDb250ZW50LiAgSWYgbm8gc3VjaCBsaWNlbnNlIGV4aXN0cywgY29udGFjdCB0aGUgUmVkaXN0cmlidXRvci4gIFVubGVzcyBvdGhlcndpc2UKLWluZGljYXRlZCBiZWxvdywgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFUEwgc3RpbGwgYXBwbHkgdG8gYW55IHNvdXJjZSBjb2RlIGluIHRoZSBDb250ZW50Ci1hbmQgc3VjaCBzb3VyY2UgY29kZSBtYXkgYmUgb2J0YWluZWQgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZyI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZzwvYT4uPC9wPgorCTxwPgorCQlUaGUgRWNsaXBzZSBGb3VuZGF0aW9uIG1ha2VzIGF2YWlsYWJsZSBhbGwgY29udGVudCBpbiB0aGlzIHBsdWctaW4KKwkJKCZxdW90O0NvbnRlbnQmcXVvdDspLiBVbmxlc3Mgb3RoZXJ3aXNlIGluZGljYXRlZCBiZWxvdywgdGhlIENvbnRlbnQKKwkJaXMgcHJvdmlkZWQgdG8geW91IHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRWNsaXBzZQorCQlQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDIuMCAoJnF1b3Q7RVBMJnF1b3Q7KS4gQSBjb3B5IG9mIHRoZSBFUEwgaXMKKwkJYXZhaWxhYmxlIGF0IDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMCI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wPC9hPi4KKwkJRm9yIHB1cnBvc2VzIG9mIHRoZSBFUEwsICZxdW90O1Byb2dyYW0mcXVvdDsgd2lsbCBtZWFuIHRoZSBDb250ZW50LgorCTwvcD4KKworCTxwPgorCQlJZiB5b3UgZGlkIG5vdCByZWNlaXZlIHRoaXMgQ29udGVudCBkaXJlY3RseSBmcm9tIHRoZSBFY2xpcHNlCisJCUZvdW5kYXRpb24sIHRoZSBDb250ZW50IGlzIGJlaW5nIHJlZGlzdHJpYnV0ZWQgYnkgYW5vdGhlciBwYXJ0eQorCQkoJnF1b3Q7UmVkaXN0cmlidXRvciZxdW90OykgYW5kIGRpZmZlcmVudCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBtYXkKKwkJYXBwbHkgdG8geW91ciB1c2Ugb2YgYW55IG9iamVjdCBjb2RlIGluIHRoZSBDb250ZW50LiBDaGVjayB0aGUKKwkJUmVkaXN0cmlidXRvcidzIGxpY2Vuc2UgdGhhdCB3YXMgcHJvdmlkZWQgd2l0aCB0aGUgQ29udGVudC4gSWYgbm8gc3VjaAorCQlsaWNlbnNlIGV4aXN0cywgY29udGFjdCB0aGUgUmVkaXN0cmlidXRvci4gVW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQKKwkJYmVsb3csIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRVBMIHN0aWxsIGFwcGx5IHRvIGFueSBzb3VyY2UKKwkJY29kZSBpbiB0aGUgQ29udGVudCBhbmQgc3VjaCBzb3VyY2UgY29kZSBtYXkgYmUgb2J0YWluZWQgYXQgPGEKKwkJCWhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnPC9hPi4KKwk8L3A+CiAKIDwvYm9keT4KIDwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9idWlsZC5wcm9wZXJ0aWVzIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvYnVpbGQucHJvcGVydGllcwppbmRleCBiNzI5MTJmLi5lZjBjMDE0IDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9idWlsZC5wcm9wZXJ0aWVzCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL2J1aWxkLnByb3BlcnRpZXMKQEAgLTQsOSArNCw5IEBACiAjICAqCiAjICAqICAgIAogIyAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0jICAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorIyAgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICMgICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSMgICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyMgICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICMgICoKICMgICoKICMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvcGx1Z2luLnByb3BlcnRpZXMgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9wbHVnaW4ucHJvcGVydGllcwppbmRleCA2ZTc3OGZlLi44OGQyZTViIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9wbHVnaW4ucHJvcGVydGllcworKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9wbHVnaW4ucHJvcGVydGllcwpAQCAtNCw5ICs0LDkgQEAKICMgICoKICMgICogICAgCiAjICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSMgICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisjICAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogIyAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotIyAgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorIyAgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogIyAgKgogIyAgKgogIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0NvbXBvbmVudE1vZGVsL0NvbXBvbmVudEltcGxlbWVudGF0aW9uLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0NvbXBvbmVudE1vZGVsL0NvbXBvbmVudEltcGxlbWVudGF0aW9uLmphdmEKaW5kZXggYTE2OTZjZC4uMzU5YjcwZCAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9Db21wb25lbnRNb2RlbC9Db21wb25lbnRJbXBsZW1lbnRhdGlvbi5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29tcG9uZW50TW9kZWwvQ29tcG9uZW50SW1wbGVtZW50YXRpb24uamF2YQpAQCAtMyw5ICszLDkgQEAKICAqDQogICogICAgDQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqDQogICoNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9Db21wb25lbnRNb2RlbC9Db21wb25lbnRNb2RlbEZhY3RvcnkuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29tcG9uZW50TW9kZWwvQ29tcG9uZW50TW9kZWxGYWN0b3J5LmphdmEKaW5kZXggNDlmY2MzNC4uNWY4ZjVhMyAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9Db21wb25lbnRNb2RlbC9Db21wb25lbnRNb2RlbEZhY3RvcnkuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0NvbXBvbmVudE1vZGVsL0NvbXBvbmVudE1vZGVsRmFjdG9yeS5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoKICAqICAgIAogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICAqCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9Db21wb25lbnRNb2RlbC9Db21wb25lbnRNb2RlbFBhY2thZ2UuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29tcG9uZW50TW9kZWwvQ29tcG9uZW50TW9kZWxQYWNrYWdlLmphdmEKaW5kZXggYmU0ODVjYi4uYWUzZjM3ZiAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9Db21wb25lbnRNb2RlbC9Db21wb25lbnRNb2RlbFBhY2thZ2UuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0NvbXBvbmVudE1vZGVsL0NvbXBvbmVudE1vZGVsUGFja2FnZS5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoKICAqICAgIAogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICAqCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9Db21wb25lbnRNb2RlbC9Db21wb25lbnRUeXBlLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0NvbXBvbmVudE1vZGVsL0NvbXBvbmVudFR5cGUuamF2YQppbmRleCBlOTg3OTMzLi4zOGNiNzc1IDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0NvbXBvbmVudE1vZGVsL0NvbXBvbmVudFR5cGUuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0NvbXBvbmVudE1vZGVsL0NvbXBvbmVudFR5cGUuamF2YQpAQCAtMyw5ICszLDkgQEAKICAqDQogICogICAgDQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqDQogICoNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9Db21wb25lbnRNb2RlbC9GdW5jdGlvbmFsUGFydGl0aW9uLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0NvbXBvbmVudE1vZGVsL0Z1bmN0aW9uYWxQYXJ0aXRpb24uamF2YQppbmRleCBiMjg5MmMxLi43N2YyMGM3IDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0NvbXBvbmVudE1vZGVsL0Z1bmN0aW9uYWxQYXJ0aXRpb24uamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0NvbXBvbmVudE1vZGVsL0Z1bmN0aW9uYWxQYXJ0aXRpb24uamF2YQpAQCAtMyw5ICszLDkgQEAKICAqDQogICogICAgDQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqDQogICoNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9Db21wb25lbnRNb2RlbC9pbXBsL0NvbXBvbmVudEltcGxlbWVudGF0aW9uSW1wbC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9Db21wb25lbnRNb2RlbC9pbXBsL0NvbXBvbmVudEltcGxlbWVudGF0aW9uSW1wbC5qYXZhCmluZGV4IDE0ZDE2YzIuLmJjY2JkNzMgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29tcG9uZW50TW9kZWwvaW1wbC9Db21wb25lbnRJbXBsZW1lbnRhdGlvbkltcGwuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0NvbXBvbmVudE1vZGVsL2ltcGwvQ29tcG9uZW50SW1wbGVtZW50YXRpb25JbXBsLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKg0KICAqICAgIA0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKg0KICAqDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29tcG9uZW50TW9kZWwvaW1wbC9Db21wb25lbnRNb2RlbEZhY3RvcnlJbXBsLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0NvbXBvbmVudE1vZGVsL2ltcGwvQ29tcG9uZW50TW9kZWxGYWN0b3J5SW1wbC5qYXZhCmluZGV4IDk2YTk2ZDYuLmVhYTk2MTUgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29tcG9uZW50TW9kZWwvaW1wbC9Db21wb25lbnRNb2RlbEZhY3RvcnlJbXBsLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9Db21wb25lbnRNb2RlbC9pbXBsL0NvbXBvbmVudE1vZGVsRmFjdG9yeUltcGwuamF2YQpAQCAtMyw5ICszLDkgQEAKICAqCiAgKiAgICAKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgKgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29tcG9uZW50TW9kZWwvaW1wbC9Db21wb25lbnRNb2RlbFBhY2thZ2VJbXBsLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0NvbXBvbmVudE1vZGVsL2ltcGwvQ29tcG9uZW50TW9kZWxQYWNrYWdlSW1wbC5qYXZhCmluZGV4IDcyMGY5YmEuLjBmMzQ4NmMgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29tcG9uZW50TW9kZWwvaW1wbC9Db21wb25lbnRNb2RlbFBhY2thZ2VJbXBsLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9Db21wb25lbnRNb2RlbC9pbXBsL0NvbXBvbmVudE1vZGVsUGFja2FnZUltcGwuamF2YQpAQCAtMyw5ICszLDkgQEAKICAqCiAgKiAgICAKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgKgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29tcG9uZW50TW9kZWwvaW1wbC9Db21wb25lbnRUeXBlSW1wbC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9Db21wb25lbnRNb2RlbC9pbXBsL0NvbXBvbmVudFR5cGVJbXBsLmphdmEKaW5kZXggMzAyZTFiNy4uZTU0ZGI0MyAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9Db21wb25lbnRNb2RlbC9pbXBsL0NvbXBvbmVudFR5cGVJbXBsLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9Db21wb25lbnRNb2RlbC9pbXBsL0NvbXBvbmVudFR5cGVJbXBsLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKg0KICAqICAgIA0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKg0KICAqDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29tcG9uZW50TW9kZWwvaW1wbC9GdW5jdGlvbmFsUGFydGl0aW9uSW1wbC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9Db21wb25lbnRNb2RlbC9pbXBsL0Z1bmN0aW9uYWxQYXJ0aXRpb25JbXBsLmphdmEKaW5kZXggNGUxM2YzNi4uZTVjM2FkMCAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9Db21wb25lbnRNb2RlbC9pbXBsL0Z1bmN0aW9uYWxQYXJ0aXRpb25JbXBsLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9Db21wb25lbnRNb2RlbC9pbXBsL0Z1bmN0aW9uYWxQYXJ0aXRpb25JbXBsLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKg0KICAqICAgIA0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKg0KICAqDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29tcG9uZW50TW9kZWwvdXRpbC9Db21wb25lbnRNb2RlbEFkYXB0ZXJGYWN0b3J5LmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0NvbXBvbmVudE1vZGVsL3V0aWwvQ29tcG9uZW50TW9kZWxBZGFwdGVyRmFjdG9yeS5qYXZhCmluZGV4IGQxZTcwZTcuLmE1MDgzYzMgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29tcG9uZW50TW9kZWwvdXRpbC9Db21wb25lbnRNb2RlbEFkYXB0ZXJGYWN0b3J5LmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9Db21wb25lbnRNb2RlbC91dGlsL0NvbXBvbmVudE1vZGVsQWRhcHRlckZhY3RvcnkuamF2YQpAQCAtMyw5ICszLDkgQEAKICAqCiAgKiAgICAKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgKgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29tcG9uZW50TW9kZWwvdXRpbC9Db21wb25lbnRNb2RlbFJlc291cmNlRmFjdG9yeUltcGwuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29tcG9uZW50TW9kZWwvdXRpbC9Db21wb25lbnRNb2RlbFJlc291cmNlRmFjdG9yeUltcGwuamF2YQppbmRleCA3OWIyM2M0Li5kZTUzMGIyIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0NvbXBvbmVudE1vZGVsL3V0aWwvQ29tcG9uZW50TW9kZWxSZXNvdXJjZUZhY3RvcnlJbXBsLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9Db21wb25lbnRNb2RlbC91dGlsL0NvbXBvbmVudE1vZGVsUmVzb3VyY2VGYWN0b3J5SW1wbC5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoKICAqICAgIAogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICAqCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9Db21wb25lbnRNb2RlbC91dGlsL0NvbXBvbmVudE1vZGVsUmVzb3VyY2VJbXBsLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0NvbXBvbmVudE1vZGVsL3V0aWwvQ29tcG9uZW50TW9kZWxSZXNvdXJjZUltcGwuamF2YQppbmRleCA4MDMyMDFmLi5iNmE2MGZiIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0NvbXBvbmVudE1vZGVsL3V0aWwvQ29tcG9uZW50TW9kZWxSZXNvdXJjZUltcGwuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0NvbXBvbmVudE1vZGVsL3V0aWwvQ29tcG9uZW50TW9kZWxSZXNvdXJjZUltcGwuamF2YQpAQCAtMyw5ICszLDkgQEAKICAqCiAgKiAgICAKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgKgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29tcG9uZW50TW9kZWwvdXRpbC9Db21wb25lbnRNb2RlbFN3aXRjaC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9Db21wb25lbnRNb2RlbC91dGlsL0NvbXBvbmVudE1vZGVsU3dpdGNoLmphdmEKaW5kZXggMjVjOTU2My4uOTU2OTJmYSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9Db21wb25lbnRNb2RlbC91dGlsL0NvbXBvbmVudE1vZGVsU3dpdGNoLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9Db21wb25lbnRNb2RlbC91dGlsL0NvbXBvbmVudE1vZGVsU3dpdGNoLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKg0KICAqICAgIA0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKg0KICAqDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29tcG9uZW50TW9kZWwvdXRpbC9Db21wb25lbnRNb2RlbFhNTFByb2Nlc3Nvci5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9Db21wb25lbnRNb2RlbC91dGlsL0NvbXBvbmVudE1vZGVsWE1MUHJvY2Vzc29yLmphdmEKaW5kZXggNDMzMzMzOC4uYTBhODVlNiAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9Db21wb25lbnRNb2RlbC91dGlsL0NvbXBvbmVudE1vZGVsWE1MUHJvY2Vzc29yLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9Db21wb25lbnRNb2RlbC91dGlsL0NvbXBvbmVudE1vZGVsWE1MUHJvY2Vzc29yLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKgogICogICAgCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICoKICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0NvcmUvQ0hFU1MuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29yZS9DSEVTUy5qYXZhCmluZGV4IDgxNWJkOGUuLmRlODNjYmIgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29yZS9DSEVTUy5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29yZS9DSEVTUy5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoNCiAgKiAgICANCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoNCiAgKg0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0NvcmUvQ0hFU1NWaWV3cy9BbmFseXNpc1ZpZXcuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29yZS9DSEVTU1ZpZXdzL0FuYWx5c2lzVmlldy5qYXZhCmluZGV4IGY2NWFiODguLmZlMGY3MmQgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29yZS9DSEVTU1ZpZXdzL0FuYWx5c2lzVmlldy5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29yZS9DSEVTU1ZpZXdzL0FuYWx5c2lzVmlldy5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoNCiAgKiAgICANCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoNCiAgKg0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0NvcmUvQ0hFU1NWaWV3cy9DSEVTU1ZpZXdzRmFjdG9yeS5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9Db3JlL0NIRVNTVmlld3MvQ0hFU1NWaWV3c0ZhY3RvcnkuamF2YQppbmRleCA4ZTI3ZTQ0Li42MWQ2ODBhIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0NvcmUvQ0hFU1NWaWV3cy9DSEVTU1ZpZXdzRmFjdG9yeS5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29yZS9DSEVTU1ZpZXdzL0NIRVNTVmlld3NGYWN0b3J5LmphdmEKQEAgLTMsOSArMyw5IEBACiAgKgogICogICAgCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICoKICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0NvcmUvQ0hFU1NWaWV3cy9DSEVTU1ZpZXdzUGFja2FnZS5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9Db3JlL0NIRVNTVmlld3MvQ0hFU1NWaWV3c1BhY2thZ2UuamF2YQppbmRleCAxOTE3MTMyLi43MWQ1ZjE1IDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0NvcmUvQ0hFU1NWaWV3cy9DSEVTU1ZpZXdzUGFja2FnZS5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29yZS9DSEVTU1ZpZXdzL0NIRVNTVmlld3NQYWNrYWdlLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKgogICogICAgCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICoKICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0NvcmUvQ0hFU1NWaWV3cy9Db21wb25lbnRWaWV3LmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0NvcmUvQ0hFU1NWaWV3cy9Db21wb25lbnRWaWV3LmphdmEKaW5kZXggZjhlODA0Mi4uYzgyNTk3OSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9Db3JlL0NIRVNTVmlld3MvQ29tcG9uZW50Vmlldy5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29yZS9DSEVTU1ZpZXdzL0NvbXBvbmVudFZpZXcuamF2YQpAQCAtMyw5ICszLDkgQEAKICAqDQogICogICAgDQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqDQogICoNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9Db3JlL0NIRVNTVmlld3MvRGVwZW5kYWJpbGl0eUFuYWx5c2lzVmlldy5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9Db3JlL0NIRVNTVmlld3MvRGVwZW5kYWJpbGl0eUFuYWx5c2lzVmlldy5qYXZhCmluZGV4IGY4NDRhY2UuLmFhODg1NWMgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29yZS9DSEVTU1ZpZXdzL0RlcGVuZGFiaWxpdHlBbmFseXNpc1ZpZXcuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0NvcmUvQ0hFU1NWaWV3cy9EZXBlbmRhYmlsaXR5QW5hbHlzaXNWaWV3LmphdmEKQEAgLTMsOSArMyw5IEBACiAgKg0KICAqICAgIA0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKg0KICAqDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29yZS9DSEVTU1ZpZXdzL0RlcGxveW1lbnRWaWV3LmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0NvcmUvQ0hFU1NWaWV3cy9EZXBsb3ltZW50Vmlldy5qYXZhCmluZGV4IGFiMDU1ZGUuLjc0Y2NmZGEgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29yZS9DSEVTU1ZpZXdzL0RlcGxveW1lbnRWaWV3LmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9Db3JlL0NIRVNTVmlld3MvRGVwbG95bWVudFZpZXcuamF2YQpAQCAtMyw5ICszLDkgQEAKICAqDQogICogICAgDQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqDQogICoNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9Db3JlL0NIRVNTVmlld3MvRXh0cmFGdW5jdGlvbmFsVmlldy5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9Db3JlL0NIRVNTVmlld3MvRXh0cmFGdW5jdGlvbmFsVmlldy5qYXZhCmluZGV4IDU0MGE0YmIuLjY0OTZkMjQgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29yZS9DSEVTU1ZpZXdzL0V4dHJhRnVuY3Rpb25hbFZpZXcuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0NvcmUvQ0hFU1NWaWV3cy9FeHRyYUZ1bmN0aW9uYWxWaWV3LmphdmEKQEAgLTMsOSArMyw5IEBACiAgKg0KICAqICAgIA0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKg0KICAqDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29yZS9DSEVTU1ZpZXdzL1BTTVZpZXcuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29yZS9DSEVTU1ZpZXdzL1BTTVZpZXcuamF2YQppbmRleCBiNGM2NTM2Li42MmQyMThmIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0NvcmUvQ0hFU1NWaWV3cy9QU01WaWV3LmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9Db3JlL0NIRVNTVmlld3MvUFNNVmlldy5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoNCiAgKiAgICANCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoNCiAgKg0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0NvcmUvQ0hFU1NWaWV3cy9SVEFuYWx5c2lzVmlldy5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9Db3JlL0NIRVNTVmlld3MvUlRBbmFseXNpc1ZpZXcuamF2YQppbmRleCA3YjQyYmEzLi5hMTUxZGJiIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0NvcmUvQ0hFU1NWaWV3cy9SVEFuYWx5c2lzVmlldy5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29yZS9DSEVTU1ZpZXdzL1JUQW5hbHlzaXNWaWV3LmphdmEKQEAgLTMsOSArMyw5IEBACiAgKg0KICAqICAgIA0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKg0KICAqDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29yZS9DSEVTU1ZpZXdzL1JlcXVpcmVtZW50Vmlldy5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9Db3JlL0NIRVNTVmlld3MvUmVxdWlyZW1lbnRWaWV3LmphdmEKaW5kZXggMTc0NjhkZC4uNjg4ZmUxYSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9Db3JlL0NIRVNTVmlld3MvUmVxdWlyZW1lbnRWaWV3LmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9Db3JlL0NIRVNTVmlld3MvUmVxdWlyZW1lbnRWaWV3LmphdmEKQEAgLTMsOSArMyw5IEBACiAgKg0KICAqICAgIA0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKg0KICAqDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29yZS9DSEVTU1ZpZXdzL1N5c3RlbVZpZXcuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29yZS9DSEVTU1ZpZXdzL1N5c3RlbVZpZXcuamF2YQppbmRleCA2NDk5MzYwLi5jZmU5MDE4IDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0NvcmUvQ0hFU1NWaWV3cy9TeXN0ZW1WaWV3LmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9Db3JlL0NIRVNTVmlld3MvU3lzdGVtVmlldy5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoNCiAgKiAgICANCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoNCiAgKg0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0NvcmUvQ0hFU1NWaWV3cy9UaW1pbmdEYXRhRmxvd1ZpZXcuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29yZS9DSEVTU1ZpZXdzL1RpbWluZ0RhdGFGbG93Vmlldy5qYXZhCmluZGV4IDRkYmQ3ZWUuLmZiMmUxODcgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29yZS9DSEVTU1ZpZXdzL1RpbWluZ0RhdGFGbG93Vmlldy5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29yZS9DSEVTU1ZpZXdzL1RpbWluZ0RhdGFGbG93Vmlldy5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoNCiAgKiAgICANCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoNCiAgKg0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0NvcmUvQ0hFU1NWaWV3cy9pbXBsL0FuYWx5c2lzVmlld0ltcGwuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29yZS9DSEVTU1ZpZXdzL2ltcGwvQW5hbHlzaXNWaWV3SW1wbC5qYXZhCmluZGV4IGEzNjBkMjUuLmJhMTUyYzcgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29yZS9DSEVTU1ZpZXdzL2ltcGwvQW5hbHlzaXNWaWV3SW1wbC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29yZS9DSEVTU1ZpZXdzL2ltcGwvQW5hbHlzaXNWaWV3SW1wbC5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoNCiAgKiAgICANCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoNCiAgKg0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0NvcmUvQ0hFU1NWaWV3cy9pbXBsL0NIRVNTVmlld3NGYWN0b3J5SW1wbC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9Db3JlL0NIRVNTVmlld3MvaW1wbC9DSEVTU1ZpZXdzRmFjdG9yeUltcGwuamF2YQppbmRleCBhMzk2MTExLi45ZjNjNDIzIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0NvcmUvQ0hFU1NWaWV3cy9pbXBsL0NIRVNTVmlld3NGYWN0b3J5SW1wbC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29yZS9DSEVTU1ZpZXdzL2ltcGwvQ0hFU1NWaWV3c0ZhY3RvcnlJbXBsLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKgogICogICAgCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICoKICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0NvcmUvQ0hFU1NWaWV3cy9pbXBsL0NIRVNTVmlld3NQYWNrYWdlSW1wbC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9Db3JlL0NIRVNTVmlld3MvaW1wbC9DSEVTU1ZpZXdzUGFja2FnZUltcGwuamF2YQppbmRleCBkMWFiYzVkLi5iMTliYmU4IDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0NvcmUvQ0hFU1NWaWV3cy9pbXBsL0NIRVNTVmlld3NQYWNrYWdlSW1wbC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29yZS9DSEVTU1ZpZXdzL2ltcGwvQ0hFU1NWaWV3c1BhY2thZ2VJbXBsLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKgogICogICAgCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICoKICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0NvcmUvQ0hFU1NWaWV3cy9pbXBsL0NvbXBvbmVudFZpZXdJbXBsLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0NvcmUvQ0hFU1NWaWV3cy9pbXBsL0NvbXBvbmVudFZpZXdJbXBsLmphdmEKaW5kZXggNjllOWNiMS4uNmEyODFhOCAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9Db3JlL0NIRVNTVmlld3MvaW1wbC9Db21wb25lbnRWaWV3SW1wbC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29yZS9DSEVTU1ZpZXdzL2ltcGwvQ29tcG9uZW50Vmlld0ltcGwuamF2YQpAQCAtMyw5ICszLDkgQEAKICAqDQogICogICAgDQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqDQogICoNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9Db3JlL0NIRVNTVmlld3MvaW1wbC9EZXBlbmRhYmlsaXR5QW5hbHlzaXNWaWV3SW1wbC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9Db3JlL0NIRVNTVmlld3MvaW1wbC9EZXBlbmRhYmlsaXR5QW5hbHlzaXNWaWV3SW1wbC5qYXZhCmluZGV4IGEyYTA0NDUuLjY3MTgwYTYgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29yZS9DSEVTU1ZpZXdzL2ltcGwvRGVwZW5kYWJpbGl0eUFuYWx5c2lzVmlld0ltcGwuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0NvcmUvQ0hFU1NWaWV3cy9pbXBsL0RlcGVuZGFiaWxpdHlBbmFseXNpc1ZpZXdJbXBsLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKg0KICAqICAgIA0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKg0KICAqDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29yZS9DSEVTU1ZpZXdzL2ltcGwvRGVwbG95bWVudFZpZXdJbXBsLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0NvcmUvQ0hFU1NWaWV3cy9pbXBsL0RlcGxveW1lbnRWaWV3SW1wbC5qYXZhCmluZGV4IDYxYmVmMTkuLjE3ODY0YjMgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29yZS9DSEVTU1ZpZXdzL2ltcGwvRGVwbG95bWVudFZpZXdJbXBsLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9Db3JlL0NIRVNTVmlld3MvaW1wbC9EZXBsb3ltZW50Vmlld0ltcGwuamF2YQpAQCAtMyw5ICszLDkgQEAKICAqDQogICogICAgDQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqDQogICoNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9Db3JlL0NIRVNTVmlld3MvaW1wbC9FeHRyYUZ1bmN0aW9uYWxWaWV3SW1wbC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9Db3JlL0NIRVNTVmlld3MvaW1wbC9FeHRyYUZ1bmN0aW9uYWxWaWV3SW1wbC5qYXZhCmluZGV4IDU1ODkzYzEuLjg4MDcwOTUgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29yZS9DSEVTU1ZpZXdzL2ltcGwvRXh0cmFGdW5jdGlvbmFsVmlld0ltcGwuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0NvcmUvQ0hFU1NWaWV3cy9pbXBsL0V4dHJhRnVuY3Rpb25hbFZpZXdJbXBsLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKg0KICAqICAgIA0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKg0KICAqDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29yZS9DSEVTU1ZpZXdzL2ltcGwvUFNNVmlld0ltcGwuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29yZS9DSEVTU1ZpZXdzL2ltcGwvUFNNVmlld0ltcGwuamF2YQppbmRleCA1YWEzOGE0Li44MGQzMDk5IDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0NvcmUvQ0hFU1NWaWV3cy9pbXBsL1BTTVZpZXdJbXBsLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9Db3JlL0NIRVNTVmlld3MvaW1wbC9QU01WaWV3SW1wbC5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoNCiAgKiAgICANCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoNCiAgKg0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0NvcmUvQ0hFU1NWaWV3cy9pbXBsL1JUQW5hbHlzaXNWaWV3SW1wbC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9Db3JlL0NIRVNTVmlld3MvaW1wbC9SVEFuYWx5c2lzVmlld0ltcGwuamF2YQppbmRleCBhZDFjNTk5Li5mY2E0OGIxIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0NvcmUvQ0hFU1NWaWV3cy9pbXBsL1JUQW5hbHlzaXNWaWV3SW1wbC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29yZS9DSEVTU1ZpZXdzL2ltcGwvUlRBbmFseXNpc1ZpZXdJbXBsLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKg0KICAqICAgIA0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKg0KICAqDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29yZS9DSEVTU1ZpZXdzL2ltcGwvUmVxdWlyZW1lbnRWaWV3SW1wbC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9Db3JlL0NIRVNTVmlld3MvaW1wbC9SZXF1aXJlbWVudFZpZXdJbXBsLmphdmEKaW5kZXggMjFjM2Q4Zi4uM2Y1MjY1ZiAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9Db3JlL0NIRVNTVmlld3MvaW1wbC9SZXF1aXJlbWVudFZpZXdJbXBsLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9Db3JlL0NIRVNTVmlld3MvaW1wbC9SZXF1aXJlbWVudFZpZXdJbXBsLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKg0KICAqICAgIA0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKg0KICAqDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29yZS9DSEVTU1ZpZXdzL2ltcGwvU3lzdGVtVmlld0ltcGwuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29yZS9DSEVTU1ZpZXdzL2ltcGwvU3lzdGVtVmlld0ltcGwuamF2YQppbmRleCA3MjI0OTc3Li5kNzQ0Yzk2IDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0NvcmUvQ0hFU1NWaWV3cy9pbXBsL1N5c3RlbVZpZXdJbXBsLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9Db3JlL0NIRVNTVmlld3MvaW1wbC9TeXN0ZW1WaWV3SW1wbC5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoNCiAgKiAgICANCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoNCiAgKg0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0NvcmUvQ0hFU1NWaWV3cy9pbXBsL1RpbWluZ0RhdGFGbG93Vmlld0ltcGwuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29yZS9DSEVTU1ZpZXdzL2ltcGwvVGltaW5nRGF0YUZsb3dWaWV3SW1wbC5qYXZhCmluZGV4IGY2ZDBjMTIuLmI4YWY2YTcgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29yZS9DSEVTU1ZpZXdzL2ltcGwvVGltaW5nRGF0YUZsb3dWaWV3SW1wbC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29yZS9DSEVTU1ZpZXdzL2ltcGwvVGltaW5nRGF0YUZsb3dWaWV3SW1wbC5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoNCiAgKiAgICANCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoNCiAgKg0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0NvcmUvQ0hFU1NWaWV3cy91dGlsL0NIRVNTVmlld3NBZGFwdGVyRmFjdG9yeS5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9Db3JlL0NIRVNTVmlld3MvdXRpbC9DSEVTU1ZpZXdzQWRhcHRlckZhY3RvcnkuamF2YQppbmRleCBlMzU4MDA4Li5hYTk3MWNkIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0NvcmUvQ0hFU1NWaWV3cy91dGlsL0NIRVNTVmlld3NBZGFwdGVyRmFjdG9yeS5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29yZS9DSEVTU1ZpZXdzL3V0aWwvQ0hFU1NWaWV3c0FkYXB0ZXJGYWN0b3J5LmphdmEKQEAgLTMsOSArMyw5IEBACiAgKgogICogICAgCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICoKICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0NvcmUvQ0hFU1NWaWV3cy91dGlsL0NIRVNTVmlld3NSZXNvdXJjZUZhY3RvcnlJbXBsLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0NvcmUvQ0hFU1NWaWV3cy91dGlsL0NIRVNTVmlld3NSZXNvdXJjZUZhY3RvcnlJbXBsLmphdmEKaW5kZXggOTczNTgyNy4uMTc4ODFjOSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9Db3JlL0NIRVNTVmlld3MvdXRpbC9DSEVTU1ZpZXdzUmVzb3VyY2VGYWN0b3J5SW1wbC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29yZS9DSEVTU1ZpZXdzL3V0aWwvQ0hFU1NWaWV3c1Jlc291cmNlRmFjdG9yeUltcGwuamF2YQpAQCAtMyw5ICszLDkgQEAKICAqCiAgKiAgICAKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgKgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29yZS9DSEVTU1ZpZXdzL3V0aWwvQ0hFU1NWaWV3c1Jlc291cmNlSW1wbC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9Db3JlL0NIRVNTVmlld3MvdXRpbC9DSEVTU1ZpZXdzUmVzb3VyY2VJbXBsLmphdmEKaW5kZXggY2YwNGU3Yy4uYjFlODZkYSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9Db3JlL0NIRVNTVmlld3MvdXRpbC9DSEVTU1ZpZXdzUmVzb3VyY2VJbXBsLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9Db3JlL0NIRVNTVmlld3MvdXRpbC9DSEVTU1ZpZXdzUmVzb3VyY2VJbXBsLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKgogICogICAgCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICoKICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0NvcmUvQ0hFU1NWaWV3cy91dGlsL0NIRVNTVmlld3NTd2l0Y2guamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29yZS9DSEVTU1ZpZXdzL3V0aWwvQ0hFU1NWaWV3c1N3aXRjaC5qYXZhCmluZGV4IGU3NTgzM2UuLjMxY2Q3N2YgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29yZS9DSEVTU1ZpZXdzL3V0aWwvQ0hFU1NWaWV3c1N3aXRjaC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29yZS9DSEVTU1ZpZXdzL3V0aWwvQ0hFU1NWaWV3c1N3aXRjaC5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoNCiAgKiAgICANCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoNCiAgKg0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0NvcmUvQ0hFU1NWaWV3cy91dGlsL0NIRVNTVmlld3NYTUxQcm9jZXNzb3IuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29yZS9DSEVTU1ZpZXdzL3V0aWwvQ0hFU1NWaWV3c1hNTFByb2Nlc3Nvci5qYXZhCmluZGV4IDg3MDQ0ZmIuLjIyZGYxNmQgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29yZS9DSEVTU1ZpZXdzL3V0aWwvQ0hFU1NWaWV3c1hNTFByb2Nlc3Nvci5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29yZS9DSEVTU1ZpZXdzL3V0aWwvQ0hFU1NWaWV3c1hNTFByb2Nlc3Nvci5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoKICAqICAgIAogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICAqCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9Db3JlL0NIR2FSZXNvdXJjZVBsYXRmb3JtLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0NvcmUvQ0hHYVJlc291cmNlUGxhdGZvcm0uamF2YQppbmRleCAxYjM3ODMzLi4xYzY0ZTYyIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0NvcmUvQ0hHYVJlc291cmNlUGxhdGZvcm0uamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0NvcmUvQ0hHYVJlc291cmNlUGxhdGZvcm0uamF2YQpAQCAtMyw5ICszLDkgQEAKICAqDQogICogICAgDQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqDQogICoNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9Db3JlL0NvcmVGYWN0b3J5LmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0NvcmUvQ29yZUZhY3RvcnkuamF2YQppbmRleCA0MjM0ZmI5Li5hOTVjMWM1IDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0NvcmUvQ29yZUZhY3RvcnkuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0NvcmUvQ29yZUZhY3RvcnkuamF2YQpAQCAtMyw5ICszLDkgQEAKICAqCiAgKiAgICAKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgKgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29yZS9Db3JlUGFja2FnZS5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9Db3JlL0NvcmVQYWNrYWdlLmphdmEKaW5kZXggNTAwYWEzNS4uMjcwNWIwZCAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9Db3JlL0NvcmVQYWNrYWdlLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9Db3JlL0NvcmVQYWNrYWdlLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKgogICogICAgCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICoKICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0NvcmUvRnVuY3Rpb25hbFBhcnRpdGlvbnMuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29yZS9GdW5jdGlvbmFsUGFydGl0aW9ucy5qYXZhCmluZGV4IGM1ZmJmODAuLmI0NmQ0MjEgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29yZS9GdW5jdGlvbmFsUGFydGl0aW9ucy5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29yZS9GdW5jdGlvbmFsUGFydGl0aW9ucy5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoKICAqICAgIAogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICAqCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9Db3JlL0lkZW50aWZJbnN0YW5jZS5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9Db3JlL0lkZW50aWZJbnN0YW5jZS5qYXZhCmluZGV4IDRjZDQ4M2QuLjllZTExNjYgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29yZS9JZGVudGlmSW5zdGFuY2UuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0NvcmUvSWRlbnRpZkluc3RhbmNlLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKgogICogICAgCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICoKICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0NvcmUvSWRlbnRpZlNsb3QuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29yZS9JZGVudGlmU2xvdC5qYXZhCmluZGV4IGJkYzUxMTEuLjc4MWY0ZmQgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29yZS9JZGVudGlmU2xvdC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29yZS9JZGVudGlmU2xvdC5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoKICAqICAgIAogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICAqCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9Db3JlL011bHRpSW5zdGFuY2UuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29yZS9NdWx0aUluc3RhbmNlLmphdmEKaW5kZXggYmRmNTg4Ny4uYjg3NmQzYiAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9Db3JlL011bHRpSW5zdGFuY2UuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0NvcmUvTXVsdGlJbnN0YW5jZS5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoKICAqICAgIAogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICAqCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9Db3JlL011bHRpU2xvdC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9Db3JlL011bHRpU2xvdC5qYXZhCmluZGV4IDYwYzQwYWEuLmVjYzc5YWMgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29yZS9NdWx0aVNsb3QuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0NvcmUvTXVsdGlTbG90LmphdmEKQEAgLTMsOSArMyw5IEBACiAgKgogICogICAgCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICoKICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0NvcmUvUFNNUGFja2FnZS5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9Db3JlL1BTTVBhY2thZ2UuamF2YQppbmRleCA0ODNhOWM2Li5mNGY2MDNiIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0NvcmUvUFNNUGFja2FnZS5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29yZS9QU01QYWNrYWdlLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKg0KICAqICAgIA0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKg0KICAqDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29yZS9pbXBsL0NIRVNTSW1wbC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9Db3JlL2ltcGwvQ0hFU1NJbXBsLmphdmEKaW5kZXggMTE2YWM1Mi4uMmNiZWViOSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9Db3JlL2ltcGwvQ0hFU1NJbXBsLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9Db3JlL2ltcGwvQ0hFU1NJbXBsLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKg0KICAqICAgIA0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKg0KICAqDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29yZS9pbXBsL0NIR2FSZXNvdXJjZVBsYXRmb3JtSW1wbC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9Db3JlL2ltcGwvQ0hHYVJlc291cmNlUGxhdGZvcm1JbXBsLmphdmEKaW5kZXggNzk4Y2U1ZS4uMThkOGY0NSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9Db3JlL2ltcGwvQ0hHYVJlc291cmNlUGxhdGZvcm1JbXBsLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9Db3JlL2ltcGwvQ0hHYVJlc291cmNlUGxhdGZvcm1JbXBsLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKg0KICAqICAgIA0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKg0KICAqDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29yZS9pbXBsL0NvcmVGYWN0b3J5SW1wbC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9Db3JlL2ltcGwvQ29yZUZhY3RvcnlJbXBsLmphdmEKaW5kZXggMTVhMmI4Ni4uZDY1MTVhZCAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9Db3JlL2ltcGwvQ29yZUZhY3RvcnlJbXBsLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9Db3JlL2ltcGwvQ29yZUZhY3RvcnlJbXBsLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKgogICogICAgCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICoKICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0NvcmUvaW1wbC9Db3JlUGFja2FnZUltcGwuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29yZS9pbXBsL0NvcmVQYWNrYWdlSW1wbC5qYXZhCmluZGV4IDQxYjMxNWEuLjhiYTE3MmIgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29yZS9pbXBsL0NvcmVQYWNrYWdlSW1wbC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29yZS9pbXBsL0NvcmVQYWNrYWdlSW1wbC5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoKICAqICAgIAogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICAqCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9Db3JlL2ltcGwvUFNNUGFja2FnZUltcGwuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29yZS9pbXBsL1BTTVBhY2thZ2VJbXBsLmphdmEKaW5kZXggYmI2OTEzNy4uN2RkYmExZCAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9Db3JlL2ltcGwvUFNNUGFja2FnZUltcGwuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0NvcmUvaW1wbC9QU01QYWNrYWdlSW1wbC5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoNCiAgKiAgICANCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoNCiAgKg0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0NvcmUvdXRpbC9Db3JlQWRhcHRlckZhY3RvcnkuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29yZS91dGlsL0NvcmVBZGFwdGVyRmFjdG9yeS5qYXZhCmluZGV4IDU4ZDlhYzUuLmU1NzJjZjggMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29yZS91dGlsL0NvcmVBZGFwdGVyRmFjdG9yeS5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29yZS91dGlsL0NvcmVBZGFwdGVyRmFjdG9yeS5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoKICAqICAgIAogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICAqCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9Db3JlL3V0aWwvQ29yZVJlc291cmNlRmFjdG9yeUltcGwuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29yZS91dGlsL0NvcmVSZXNvdXJjZUZhY3RvcnlJbXBsLmphdmEKaW5kZXggOTg5OTViNi4uZTI3MGExNyAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9Db3JlL3V0aWwvQ29yZVJlc291cmNlRmFjdG9yeUltcGwuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0NvcmUvdXRpbC9Db3JlUmVzb3VyY2VGYWN0b3J5SW1wbC5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoKICAqICAgIAogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICAqCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9Db3JlL3V0aWwvQ29yZVJlc291cmNlSW1wbC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9Db3JlL3V0aWwvQ29yZVJlc291cmNlSW1wbC5qYXZhCmluZGV4IDU2N2Q1NTguLmY2ZGVhM2EgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29yZS91dGlsL0NvcmVSZXNvdXJjZUltcGwuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0NvcmUvdXRpbC9Db3JlUmVzb3VyY2VJbXBsLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKgogICogICAgCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICoKICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0NvcmUvdXRpbC9Db3JlU3dpdGNoLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0NvcmUvdXRpbC9Db3JlU3dpdGNoLmphdmEKaW5kZXggOGY5NDkwMC4uZDZiNmFjMiAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9Db3JlL3V0aWwvQ29yZVN3aXRjaC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29yZS91dGlsL0NvcmVTd2l0Y2guamF2YQpAQCAtMyw5ICszLDkgQEAKICAqDQogICogICAgDQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqDQogICoNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9Db3JlL3V0aWwvQ29yZVhNTFByb2Nlc3Nvci5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9Db3JlL3V0aWwvQ29yZVhNTFByb2Nlc3Nvci5qYXZhCmluZGV4IGUyNWQzMWYuLmZlY2Y4MDYgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvQ29yZS91dGlsL0NvcmVYTUxQcm9jZXNzb3IuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0NvcmUvdXRpbC9Db3JlWE1MUHJvY2Vzc29yLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKgogICogICAgCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICoKICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvRGVwZW5kYWJsZUNvbXBvbmVudC9EZXBlbmRhYmxlQ29tcG9uZW50LmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvRGVwZW5kYWJsZUNvbXBvbmVudC9EZXBlbmRhYmxlQ29tcG9uZW50LmphdmEKaW5kZXggZWM0OTI3NC4uNWY3MzBkNCAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L0RlcGVuZGFibGVDb21wb25lbnQvRGVwZW5kYWJsZUNvbXBvbmVudC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9EZXBlbmRhYmxlQ29tcG9uZW50L0RlcGVuZGFibGVDb21wb25lbnQuamF2YQpAQCAtMyw5ICszLDkgQEAKICAqDQogICogICAgDQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqDQogICoNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L0RlcGVuZGFibGVDb21wb25lbnQvRGVwZW5kYWJsZUNvbXBvbmVudEZhY3RvcnkuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9EZXBlbmRhYmxlQ29tcG9uZW50L0RlcGVuZGFibGVDb21wb25lbnRGYWN0b3J5LmphdmEKaW5kZXggYmIxNDZlMy4uYWRmMTc2MyAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L0RlcGVuZGFibGVDb21wb25lbnQvRGVwZW5kYWJsZUNvbXBvbmVudEZhY3RvcnkuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvRGVwZW5kYWJsZUNvbXBvbmVudC9EZXBlbmRhYmxlQ29tcG9uZW50RmFjdG9yeS5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoNCiAgKiAgICANCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoNCiAgKg0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvRGVwZW5kYWJsZUNvbXBvbmVudC9EZXBlbmRhYmxlQ29tcG9uZW50UGFja2FnZS5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L0RlcGVuZGFibGVDb21wb25lbnQvRGVwZW5kYWJsZUNvbXBvbmVudFBhY2thZ2UuamF2YQppbmRleCBlNDkxN2RmLi5kNGYzMjJkIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvRGVwZW5kYWJsZUNvbXBvbmVudC9EZXBlbmRhYmxlQ29tcG9uZW50UGFja2FnZS5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9EZXBlbmRhYmxlQ29tcG9uZW50L0RlcGVuZGFibGVDb21wb25lbnRQYWNrYWdlLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKg0KICAqICAgIA0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKg0KICAqDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9EZXBlbmRhYmxlQ29tcG9uZW50L0ZhaWx1cmVNb2RlLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvRGVwZW5kYWJsZUNvbXBvbmVudC9GYWlsdXJlTW9kZS5qYXZhCmluZGV4IDJhNWIwNDguLjMwNWY3NDEgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9EZXBlbmRhYmxlQ29tcG9uZW50L0ZhaWx1cmVNb2RlLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L0RlcGVuZGFibGVDb21wb25lbnQvRmFpbHVyZU1vZGUuamF2YQpAQCAtMyw5ICszLDkgQEAKICAqICAqDQogICogICogICAgDQogICogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KLSAqICAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqICAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KICAqICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiAgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqICAqDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQogLyoqDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L0RlcGVuZGFibGVDb21wb25lbnQvUHJvcGFnYXRpb24uamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9EZXBlbmRhYmxlQ29tcG9uZW50L1Byb3BhZ2F0aW9uLmphdmEKaW5kZXggY2YxN2E0Zi4uZWI4N2MxMyAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L0RlcGVuZGFibGVDb21wb25lbnQvUHJvcGFnYXRpb24uamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvRGVwZW5kYWJsZUNvbXBvbmVudC9Qcm9wYWdhdGlvbi5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoNCiAgKiAgICANCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoNCiAgKg0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvRGVwZW5kYWJsZUNvbXBvbmVudC9pbXBsL0RlcGVuZGFibGVDb21wb25lbnRGYWN0b3J5SW1wbC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L0RlcGVuZGFibGVDb21wb25lbnQvaW1wbC9EZXBlbmRhYmxlQ29tcG9uZW50RmFjdG9yeUltcGwuamF2YQppbmRleCBjOTk3MjZlLi44YmY3MGM4IDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvRGVwZW5kYWJsZUNvbXBvbmVudC9pbXBsL0RlcGVuZGFibGVDb21wb25lbnRGYWN0b3J5SW1wbC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9EZXBlbmRhYmxlQ29tcG9uZW50L2ltcGwvRGVwZW5kYWJsZUNvbXBvbmVudEZhY3RvcnlJbXBsLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKg0KICAqICAgIA0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKg0KICAqDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9EZXBlbmRhYmxlQ29tcG9uZW50L2ltcGwvRGVwZW5kYWJsZUNvbXBvbmVudEltcGwuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9EZXBlbmRhYmxlQ29tcG9uZW50L2ltcGwvRGVwZW5kYWJsZUNvbXBvbmVudEltcGwuamF2YQppbmRleCBhYTlmMzBkLi4wYzhhYTI4IDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvRGVwZW5kYWJsZUNvbXBvbmVudC9pbXBsL0RlcGVuZGFibGVDb21wb25lbnRJbXBsLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L0RlcGVuZGFibGVDb21wb25lbnQvaW1wbC9EZXBlbmRhYmxlQ29tcG9uZW50SW1wbC5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoNCiAgKiAgICANCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoNCiAgKg0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvRGVwZW5kYWJsZUNvbXBvbmVudC9pbXBsL0RlcGVuZGFibGVDb21wb25lbnRQYWNrYWdlSW1wbC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L0RlcGVuZGFibGVDb21wb25lbnQvaW1wbC9EZXBlbmRhYmxlQ29tcG9uZW50UGFja2FnZUltcGwuamF2YQppbmRleCBjOGNhMmZmLi5kNzRiM2VkIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvRGVwZW5kYWJsZUNvbXBvbmVudC9pbXBsL0RlcGVuZGFibGVDb21wb25lbnRQYWNrYWdlSW1wbC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9EZXBlbmRhYmxlQ29tcG9uZW50L2ltcGwvRGVwZW5kYWJsZUNvbXBvbmVudFBhY2thZ2VJbXBsLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKg0KICAqICAgIA0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKg0KICAqDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9EZXBlbmRhYmxlQ29tcG9uZW50L2ltcGwvRmFpbHVyZU1vZGVJbXBsLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvRGVwZW5kYWJsZUNvbXBvbmVudC9pbXBsL0ZhaWx1cmVNb2RlSW1wbC5qYXZhCmluZGV4IGI4MWEzYWYuLjY0YTQ2N2IgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9EZXBlbmRhYmxlQ29tcG9uZW50L2ltcGwvRmFpbHVyZU1vZGVJbXBsLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L0RlcGVuZGFibGVDb21wb25lbnQvaW1wbC9GYWlsdXJlTW9kZUltcGwuamF2YQpAQCAtMyw5ICszLDkgQEAKICAqICAqDQogICogICogICAgDQogICogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KLSAqICAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqICAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KICAqICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiAgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqICAqDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQogLyoqDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L0RlcGVuZGFibGVDb21wb25lbnQvdXRpbC9EZXBlbmRhYmxlQ29tcG9uZW50QWRhcHRlckZhY3RvcnkuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9EZXBlbmRhYmxlQ29tcG9uZW50L3V0aWwvRGVwZW5kYWJsZUNvbXBvbmVudEFkYXB0ZXJGYWN0b3J5LmphdmEKaW5kZXggYWFlMmI3ZC4uNzBhOWQ5ZSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L0RlcGVuZGFibGVDb21wb25lbnQvdXRpbC9EZXBlbmRhYmxlQ29tcG9uZW50QWRhcHRlckZhY3RvcnkuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvRGVwZW5kYWJsZUNvbXBvbmVudC91dGlsL0RlcGVuZGFibGVDb21wb25lbnRBZGFwdGVyRmFjdG9yeS5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoNCiAgKiAgICANCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoNCiAgKg0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvRGVwZW5kYWJsZUNvbXBvbmVudC91dGlsL0RlcGVuZGFibGVDb21wb25lbnRSZXNvdXJjZUZhY3RvcnlJbXBsLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvRGVwZW5kYWJsZUNvbXBvbmVudC91dGlsL0RlcGVuZGFibGVDb21wb25lbnRSZXNvdXJjZUZhY3RvcnlJbXBsLmphdmEKaW5kZXggYjI1MTQzYy4uNTBkMWM4YiAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L0RlcGVuZGFibGVDb21wb25lbnQvdXRpbC9EZXBlbmRhYmxlQ29tcG9uZW50UmVzb3VyY2VGYWN0b3J5SW1wbC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9EZXBlbmRhYmxlQ29tcG9uZW50L3V0aWwvRGVwZW5kYWJsZUNvbXBvbmVudFJlc291cmNlRmFjdG9yeUltcGwuamF2YQpAQCAtMyw5ICszLDkgQEAKICAqCiAgKiAgICAKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgKgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9EZXBlbmRhYmxlQ29tcG9uZW50L3V0aWwvRGVwZW5kYWJsZUNvbXBvbmVudFJlc291cmNlSW1wbC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L0RlcGVuZGFibGVDb21wb25lbnQvdXRpbC9EZXBlbmRhYmxlQ29tcG9uZW50UmVzb3VyY2VJbXBsLmphdmEKaW5kZXggNjM5NTA4OC4uZjUzMGE0NCAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L0RlcGVuZGFibGVDb21wb25lbnQvdXRpbC9EZXBlbmRhYmxlQ29tcG9uZW50UmVzb3VyY2VJbXBsLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L0RlcGVuZGFibGVDb21wb25lbnQvdXRpbC9EZXBlbmRhYmxlQ29tcG9uZW50UmVzb3VyY2VJbXBsLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKgogICogICAgCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICoKICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvRGVwZW5kYWJsZUNvbXBvbmVudC91dGlsL0RlcGVuZGFibGVDb21wb25lbnRTd2l0Y2guamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9EZXBlbmRhYmxlQ29tcG9uZW50L3V0aWwvRGVwZW5kYWJsZUNvbXBvbmVudFN3aXRjaC5qYXZhCmluZGV4IGY2NzZhNGYuLmVkZGM5MTMgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9EZXBlbmRhYmxlQ29tcG9uZW50L3V0aWwvRGVwZW5kYWJsZUNvbXBvbmVudFN3aXRjaC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9EZXBlbmRhYmxlQ29tcG9uZW50L3V0aWwvRGVwZW5kYWJsZUNvbXBvbmVudFN3aXRjaC5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoNCiAgKiAgICANCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoNCiAgKg0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvRGVwZW5kYWJsZUNvbXBvbmVudC91dGlsL0RlcGVuZGFibGVDb21wb25lbnRYTUxQcm9jZXNzb3IuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9EZXBlbmRhYmxlQ29tcG9uZW50L3V0aWwvRGVwZW5kYWJsZUNvbXBvbmVudFhNTFByb2Nlc3Nvci5qYXZhCmluZGV4IGYyZGRjNTUuLmQyYzgzMGQgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9EZXBlbmRhYmxlQ29tcG9uZW50L3V0aWwvRGVwZW5kYWJsZUNvbXBvbmVudFhNTFByb2Nlc3Nvci5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9EZXBlbmRhYmxlQ29tcG9uZW50L3V0aWwvRGVwZW5kYWJsZUNvbXBvbmVudFhNTFByb2Nlc3Nvci5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoKICAqICAgIAogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICAqCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L0ZhaWx1cmVQcm9wYWdhdGlvbi9BQ0lEQXZvaWRhYmxlLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvRmFpbHVyZVByb3BhZ2F0aW9uL0FDSURBdm9pZGFibGUuamF2YQppbmRleCBlOWNiZWNhLi5iZmI3ODFmIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvRmFpbHVyZVByb3BhZ2F0aW9uL0FDSURBdm9pZGFibGUuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvRmFpbHVyZVByb3BhZ2F0aW9uL0FDSURBdm9pZGFibGUuamF2YQpAQCAtMyw5ICszLDkgQEAKICAqDQogICogICAgDQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqDQogICoNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L0ZhaWx1cmVQcm9wYWdhdGlvbi9BQ0lETWl0aWdhdGlvbi5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L0ZhaWx1cmVQcm9wYWdhdGlvbi9BQ0lETWl0aWdhdGlvbi5qYXZhCmluZGV4IGVlNWI2NjYuLjc1MjcxMWMgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9GYWlsdXJlUHJvcGFnYXRpb24vQUNJRE1pdGlnYXRpb24uamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvRmFpbHVyZVByb3BhZ2F0aW9uL0FDSURNaXRpZ2F0aW9uLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKg0KICAqICAgIA0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKg0KICAqDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9GYWlsdXJlUHJvcGFnYXRpb24vRkk0RkEuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9GYWlsdXJlUHJvcGFnYXRpb24vRkk0RkEuamF2YQppbmRleCBkYTk3MzlkLi40MWUyY2UzIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvRmFpbHVyZVByb3BhZ2F0aW9uL0ZJNEZBLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L0ZhaWx1cmVQcm9wYWdhdGlvbi9GSTRGQS5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoNCiAgKiAgICANCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoNCiAgKg0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvRmFpbHVyZVByb3BhZ2F0aW9uL0ZJNEZBQW5hbHlzaXMuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9GYWlsdXJlUHJvcGFnYXRpb24vRkk0RkFBbmFseXNpcy5qYXZhCmluZGV4IDg5OTJmYTcuLmEwMTIwMDAgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9GYWlsdXJlUHJvcGFnYXRpb24vRkk0RkFBbmFseXNpcy5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9GYWlsdXJlUHJvcGFnYXRpb24vRkk0RkFBbmFseXNpcy5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoKICAqICAgIAogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICAqCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L0ZhaWx1cmVQcm9wYWdhdGlvbi9GSTRGQVNwZWNpZmljYXRpb24uamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9GYWlsdXJlUHJvcGFnYXRpb24vRkk0RkFTcGVjaWZpY2F0aW9uLmphdmEKaW5kZXggZTJiMGM2MC4uNjgxYTJmOCAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L0ZhaWx1cmVQcm9wYWdhdGlvbi9GSTRGQVNwZWNpZmljYXRpb24uamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvRmFpbHVyZVByb3BhZ2F0aW9uL0ZJNEZBU3BlY2lmaWNhdGlvbi5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoKICAqICAgIAogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICAqCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L0ZhaWx1cmVQcm9wYWdhdGlvbi9GUFRDLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvRmFpbHVyZVByb3BhZ2F0aW9uL0ZQVEMuamF2YQppbmRleCA3MzEwZDNhLi42ZWQ5N2U3IDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvRmFpbHVyZVByb3BhZ2F0aW9uL0ZQVEMuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvRmFpbHVyZVByb3BhZ2F0aW9uL0ZQVEMuamF2YQpAQCAtMyw5ICszLDkgQEAKICAqDQogICogICAgDQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqDQogICoNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L0ZhaWx1cmVQcm9wYWdhdGlvbi9GUFRDUG9ydFNsb3QuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9GYWlsdXJlUHJvcGFnYXRpb24vRlBUQ1BvcnRTbG90LmphdmEKaW5kZXggM2E5ZjE5Mi4uMDBkZjRjYyAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L0ZhaWx1cmVQcm9wYWdhdGlvbi9GUFRDUG9ydFNsb3QuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvRmFpbHVyZVByb3BhZ2F0aW9uL0ZQVENQb3J0U2xvdC5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoNCiAgKiAgICANCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoNCiAgKg0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvRmFpbHVyZVByb3BhZ2F0aW9uL0ZQVENTcGVjaWZpY2F0aW9uLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvRmFpbHVyZVByb3BhZ2F0aW9uL0ZQVENTcGVjaWZpY2F0aW9uLmphdmEKaW5kZXggMjViY2IyNS4uYmE4MTRkNiAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L0ZhaWx1cmVQcm9wYWdhdGlvbi9GUFRDU3BlY2lmaWNhdGlvbi5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9GYWlsdXJlUHJvcGFnYXRpb24vRlBUQ1NwZWNpZmljYXRpb24uamF2YQpAQCAtMyw5ICszLDkgQEAKICAqDQogICogICAgDQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqDQogICoNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L0ZhaWx1cmVQcm9wYWdhdGlvbi9GYWlsdXJlUHJvcGFnYXRpb25BbmFseXNpcy5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L0ZhaWx1cmVQcm9wYWdhdGlvbi9GYWlsdXJlUHJvcGFnYXRpb25BbmFseXNpcy5qYXZhCmluZGV4IGJjZDgzZDUuLjQwMTcxYmYgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9GYWlsdXJlUHJvcGFnYXRpb24vRmFpbHVyZVByb3BhZ2F0aW9uQW5hbHlzaXMuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvRmFpbHVyZVByb3BhZ2F0aW9uL0ZhaWx1cmVQcm9wYWdhdGlvbkFuYWx5c2lzLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKgogICogICAgCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICoKICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvRmFpbHVyZVByb3BhZ2F0aW9uL0ZhaWx1cmVQcm9wYWdhdGlvbkRhdGFUeXBlcy9BX2F2b2lkYWJsZS5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L0ZhaWx1cmVQcm9wYWdhdGlvbi9GYWlsdXJlUHJvcGFnYXRpb25EYXRhVHlwZXMvQV9hdm9pZGFibGUuamF2YQppbmRleCA2OTE4NTM2Li5lOWZkNzQ2IDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvRmFpbHVyZVByb3BhZ2F0aW9uL0ZhaWx1cmVQcm9wYWdhdGlvbkRhdGFUeXBlcy9BX2F2b2lkYWJsZS5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9GYWlsdXJlUHJvcGFnYXRpb24vRmFpbHVyZVByb3BhZ2F0aW9uRGF0YVR5cGVzL0FfYXZvaWRhYmxlLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKg0KICAqICAgIA0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKg0KICAqDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9GYWlsdXJlUHJvcGFnYXRpb24vRmFpbHVyZVByb3BhZ2F0aW9uRGF0YVR5cGVzL0FfbWl0aWdhdGlvbi5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L0ZhaWx1cmVQcm9wYWdhdGlvbi9GYWlsdXJlUHJvcGFnYXRpb25EYXRhVHlwZXMvQV9taXRpZ2F0aW9uLmphdmEKaW5kZXggNmY5YTkwOS4uZGJlMWZjNyAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L0ZhaWx1cmVQcm9wYWdhdGlvbi9GYWlsdXJlUHJvcGFnYXRpb25EYXRhVHlwZXMvQV9taXRpZ2F0aW9uLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L0ZhaWx1cmVQcm9wYWdhdGlvbi9GYWlsdXJlUHJvcGFnYXRpb25EYXRhVHlwZXMvQV9taXRpZ2F0aW9uLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKg0KICAqICAgIA0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKg0KICAqDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9GYWlsdXJlUHJvcGFnYXRpb24vRmFpbHVyZVByb3BhZ2F0aW9uRGF0YVR5cGVzL0NfYXZvaWRhYmxlLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvRmFpbHVyZVByb3BhZ2F0aW9uL0ZhaWx1cmVQcm9wYWdhdGlvbkRhdGFUeXBlcy9DX2F2b2lkYWJsZS5qYXZhCmluZGV4IDQyZWJiZWEuLjg1ZGIxZGYgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9GYWlsdXJlUHJvcGFnYXRpb24vRmFpbHVyZVByb3BhZ2F0aW9uRGF0YVR5cGVzL0NfYXZvaWRhYmxlLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L0ZhaWx1cmVQcm9wYWdhdGlvbi9GYWlsdXJlUHJvcGFnYXRpb25EYXRhVHlwZXMvQ19hdm9pZGFibGUuamF2YQpAQCAtMyw5ICszLDkgQEAKICAqDQogICogICAgDQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqDQogICoNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L0ZhaWx1cmVQcm9wYWdhdGlvbi9GYWlsdXJlUHJvcGFnYXRpb25EYXRhVHlwZXMvQ19taXRpZ2F0aW9uLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvRmFpbHVyZVByb3BhZ2F0aW9uL0ZhaWx1cmVQcm9wYWdhdGlvbkRhdGFUeXBlcy9DX21pdGlnYXRpb24uamF2YQppbmRleCAzYWZiMGMyLi5hZTU0NzdhIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvRmFpbHVyZVByb3BhZ2F0aW9uL0ZhaWx1cmVQcm9wYWdhdGlvbkRhdGFUeXBlcy9DX21pdGlnYXRpb24uamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvRmFpbHVyZVByb3BhZ2F0aW9uL0ZhaWx1cmVQcm9wYWdhdGlvbkRhdGFUeXBlcy9DX21pdGlnYXRpb24uamF2YQpAQCAtMyw5ICszLDkgQEAKICAqDQogICogICAgDQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqDQogICoNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L0ZhaWx1cmVQcm9wYWdhdGlvbi9GYWlsdXJlUHJvcGFnYXRpb25EYXRhVHlwZXMvRF9hdm9pZGFibGUuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9GYWlsdXJlUHJvcGFnYXRpb24vRmFpbHVyZVByb3BhZ2F0aW9uRGF0YVR5cGVzL0RfYXZvaWRhYmxlLmphdmEKaW5kZXggNjhiYjIwMC4uNzUxNjAyOSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L0ZhaWx1cmVQcm9wYWdhdGlvbi9GYWlsdXJlUHJvcGFnYXRpb25EYXRhVHlwZXMvRF9hdm9pZGFibGUuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvRmFpbHVyZVByb3BhZ2F0aW9uL0ZhaWx1cmVQcm9wYWdhdGlvbkRhdGFUeXBlcy9EX2F2b2lkYWJsZS5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoNCiAgKiAgICANCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoNCiAgKg0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvRmFpbHVyZVByb3BhZ2F0aW9uL0ZhaWx1cmVQcm9wYWdhdGlvbkRhdGFUeXBlcy9EX21pdGlnYXRpb24uamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9GYWlsdXJlUHJvcGFnYXRpb24vRmFpbHVyZVByb3BhZ2F0aW9uRGF0YVR5cGVzL0RfbWl0aWdhdGlvbi5qYXZhCmluZGV4IGY4NDVhODguLjk1ZmM1MGMgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9GYWlsdXJlUHJvcGFnYXRpb24vRmFpbHVyZVByb3BhZ2F0aW9uRGF0YVR5cGVzL0RfbWl0aWdhdGlvbi5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9GYWlsdXJlUHJvcGFnYXRpb24vRmFpbHVyZVByb3BhZ2F0aW9uRGF0YVR5cGVzL0RfbWl0aWdhdGlvbi5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoNCiAgKiAgICANCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoNCiAgKg0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvRmFpbHVyZVByb3BhZ2F0aW9uL0ZhaWx1cmVQcm9wYWdhdGlvbkRhdGFUeXBlcy9GYWlsdXJlUHJvcGFnYXRpb25EYXRhVHlwZXNGYWN0b3J5LmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvRmFpbHVyZVByb3BhZ2F0aW9uL0ZhaWx1cmVQcm9wYWdhdGlvbkRhdGFUeXBlcy9GYWlsdXJlUHJvcGFnYXRpb25EYXRhVHlwZXNGYWN0b3J5LmphdmEKaW5kZXggOGZlZWNmYy4uNzU3ODExYyAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L0ZhaWx1cmVQcm9wYWdhdGlvbi9GYWlsdXJlUHJvcGFnYXRpb25EYXRhVHlwZXMvRmFpbHVyZVByb3BhZ2F0aW9uRGF0YVR5cGVzRmFjdG9yeS5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9GYWlsdXJlUHJvcGFnYXRpb24vRmFpbHVyZVByb3BhZ2F0aW9uRGF0YVR5cGVzL0ZhaWx1cmVQcm9wYWdhdGlvbkRhdGFUeXBlc0ZhY3RvcnkuamF2YQpAQCAtMyw5ICszLDkgQEAKICAqCiAgKiAgICAKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgKgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9GYWlsdXJlUHJvcGFnYXRpb24vRmFpbHVyZVByb3BhZ2F0aW9uRGF0YVR5cGVzL0ZhaWx1cmVQcm9wYWdhdGlvbkRhdGFUeXBlc1BhY2thZ2UuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9GYWlsdXJlUHJvcGFnYXRpb24vRmFpbHVyZVByb3BhZ2F0aW9uRGF0YVR5cGVzL0ZhaWx1cmVQcm9wYWdhdGlvbkRhdGFUeXBlc1BhY2thZ2UuamF2YQppbmRleCBlMDk2ZDE5Li45MjNkZDkxIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvRmFpbHVyZVByb3BhZ2F0aW9uL0ZhaWx1cmVQcm9wYWdhdGlvbkRhdGFUeXBlcy9GYWlsdXJlUHJvcGFnYXRpb25EYXRhVHlwZXNQYWNrYWdlLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L0ZhaWx1cmVQcm9wYWdhdGlvbi9GYWlsdXJlUHJvcGFnYXRpb25EYXRhVHlwZXMvRmFpbHVyZVByb3BhZ2F0aW9uRGF0YVR5cGVzUGFja2FnZS5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoKICAqICAgIAogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICAqCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L0ZhaWx1cmVQcm9wYWdhdGlvbi9GYWlsdXJlUHJvcGFnYXRpb25EYXRhVHlwZXMvRmFpbHVyZVR5cGUuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9GYWlsdXJlUHJvcGFnYXRpb24vRmFpbHVyZVByb3BhZ2F0aW9uRGF0YVR5cGVzL0ZhaWx1cmVUeXBlLmphdmEKaW5kZXggZGFiYTViOS4uNGU2NmIzMCAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L0ZhaWx1cmVQcm9wYWdhdGlvbi9GYWlsdXJlUHJvcGFnYXRpb25EYXRhVHlwZXMvRmFpbHVyZVR5cGUuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvRmFpbHVyZVByb3BhZ2F0aW9uL0ZhaWx1cmVQcm9wYWdhdGlvbkRhdGFUeXBlcy9GYWlsdXJlVHlwZS5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoNCiAgKiAgICANCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoNCiAgKg0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvRmFpbHVyZVByb3BhZ2F0aW9uL0ZhaWx1cmVQcm9wYWdhdGlvbkRhdGFUeXBlcy9JX2F2b2lkYWJsZS5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L0ZhaWx1cmVQcm9wYWdhdGlvbi9GYWlsdXJlUHJvcGFnYXRpb25EYXRhVHlwZXMvSV9hdm9pZGFibGUuamF2YQppbmRleCAwYWJkNzdmLi4wMjFhOGJhIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvRmFpbHVyZVByb3BhZ2F0aW9uL0ZhaWx1cmVQcm9wYWdhdGlvbkRhdGFUeXBlcy9JX2F2b2lkYWJsZS5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9GYWlsdXJlUHJvcGFnYXRpb24vRmFpbHVyZVByb3BhZ2F0aW9uRGF0YVR5cGVzL0lfYXZvaWRhYmxlLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKg0KICAqICAgIA0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKg0KICAqDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9GYWlsdXJlUHJvcGFnYXRpb24vRmFpbHVyZVByb3BhZ2F0aW9uRGF0YVR5cGVzL0lfbWl0aWdhdGlvbi5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L0ZhaWx1cmVQcm9wYWdhdGlvbi9GYWlsdXJlUHJvcGFnYXRpb25EYXRhVHlwZXMvSV9taXRpZ2F0aW9uLmphdmEKaW5kZXggMDZmZjliMi4uNTZiYzM0MSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L0ZhaWx1cmVQcm9wYWdhdGlvbi9GYWlsdXJlUHJvcGFnYXRpb25EYXRhVHlwZXMvSV9taXRpZ2F0aW9uLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L0ZhaWx1cmVQcm9wYWdhdGlvbi9GYWlsdXJlUHJvcGFnYXRpb25EYXRhVHlwZXMvSV9taXRpZ2F0aW9uLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKg0KICAqICAgIA0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKg0KICAqDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9GYWlsdXJlUHJvcGFnYXRpb24vRmFpbHVyZVByb3BhZ2F0aW9uRGF0YVR5cGVzL2ltcGwvRmFpbHVyZVByb3BhZ2F0aW9uRGF0YVR5cGVzRmFjdG9yeUltcGwuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9GYWlsdXJlUHJvcGFnYXRpb24vRmFpbHVyZVByb3BhZ2F0aW9uRGF0YVR5cGVzL2ltcGwvRmFpbHVyZVByb3BhZ2F0aW9uRGF0YVR5cGVzRmFjdG9yeUltcGwuamF2YQppbmRleCAwNWUxOGJkLi42ZjA3NWVhIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvRmFpbHVyZVByb3BhZ2F0aW9uL0ZhaWx1cmVQcm9wYWdhdGlvbkRhdGFUeXBlcy9pbXBsL0ZhaWx1cmVQcm9wYWdhdGlvbkRhdGFUeXBlc0ZhY3RvcnlJbXBsLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L0ZhaWx1cmVQcm9wYWdhdGlvbi9GYWlsdXJlUHJvcGFnYXRpb25EYXRhVHlwZXMvaW1wbC9GYWlsdXJlUHJvcGFnYXRpb25EYXRhVHlwZXNGYWN0b3J5SW1wbC5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoKICAqICAgIAogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICAqCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L0ZhaWx1cmVQcm9wYWdhdGlvbi9GYWlsdXJlUHJvcGFnYXRpb25EYXRhVHlwZXMvaW1wbC9GYWlsdXJlUHJvcGFnYXRpb25EYXRhVHlwZXNQYWNrYWdlSW1wbC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L0ZhaWx1cmVQcm9wYWdhdGlvbi9GYWlsdXJlUHJvcGFnYXRpb25EYXRhVHlwZXMvaW1wbC9GYWlsdXJlUHJvcGFnYXRpb25EYXRhVHlwZXNQYWNrYWdlSW1wbC5qYXZhCmluZGV4IDE2NjFkNjguLjhjYzQ0OGMgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9GYWlsdXJlUHJvcGFnYXRpb24vRmFpbHVyZVByb3BhZ2F0aW9uRGF0YVR5cGVzL2ltcGwvRmFpbHVyZVByb3BhZ2F0aW9uRGF0YVR5cGVzUGFja2FnZUltcGwuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvRmFpbHVyZVByb3BhZ2F0aW9uL0ZhaWx1cmVQcm9wYWdhdGlvbkRhdGFUeXBlcy9pbXBsL0ZhaWx1cmVQcm9wYWdhdGlvbkRhdGFUeXBlc1BhY2thZ2VJbXBsLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKgogICogICAgCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICoKICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvRmFpbHVyZVByb3BhZ2F0aW9uL0ZhaWx1cmVQcm9wYWdhdGlvbkZhY3RvcnkuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9GYWlsdXJlUHJvcGFnYXRpb24vRmFpbHVyZVByb3BhZ2F0aW9uRmFjdG9yeS5qYXZhCmluZGV4IDdmNDc5N2MuLmQwMmY3NWYgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9GYWlsdXJlUHJvcGFnYXRpb24vRmFpbHVyZVByb3BhZ2F0aW9uRmFjdG9yeS5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9GYWlsdXJlUHJvcGFnYXRpb24vRmFpbHVyZVByb3BhZ2F0aW9uRmFjdG9yeS5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoKICAqICAgIAogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICAqCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L0ZhaWx1cmVQcm9wYWdhdGlvbi9GYWlsdXJlUHJvcGFnYXRpb25QYWNrYWdlLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvRmFpbHVyZVByb3BhZ2F0aW9uL0ZhaWx1cmVQcm9wYWdhdGlvblBhY2thZ2UuamF2YQppbmRleCAxMWJjNmVjLi5hMzMzYzNjIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvRmFpbHVyZVByb3BhZ2F0aW9uL0ZhaWx1cmVQcm9wYWdhdGlvblBhY2thZ2UuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvRmFpbHVyZVByb3BhZ2F0aW9uL0ZhaWx1cmVQcm9wYWdhdGlvblBhY2thZ2UuamF2YQpAQCAtMyw5ICszLDkgQEAKICAqCiAgKiAgICAKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgKgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9GYWlsdXJlUHJvcGFnYXRpb24vaW1wbC9BQ0lEQXZvaWRhYmxlSW1wbC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L0ZhaWx1cmVQcm9wYWdhdGlvbi9pbXBsL0FDSURBdm9pZGFibGVJbXBsLmphdmEKaW5kZXggNTg3OTZiOS4uY2Y4ODEzZSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L0ZhaWx1cmVQcm9wYWdhdGlvbi9pbXBsL0FDSURBdm9pZGFibGVJbXBsLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L0ZhaWx1cmVQcm9wYWdhdGlvbi9pbXBsL0FDSURBdm9pZGFibGVJbXBsLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKg0KICAqICAgIA0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKg0KICAqDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9GYWlsdXJlUHJvcGFnYXRpb24vaW1wbC9BQ0lETWl0aWdhdGlvbkltcGwuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9GYWlsdXJlUHJvcGFnYXRpb24vaW1wbC9BQ0lETWl0aWdhdGlvbkltcGwuamF2YQppbmRleCA1MzA1MjYzLi5mY2JlN2M5IDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvRmFpbHVyZVByb3BhZ2F0aW9uL2ltcGwvQUNJRE1pdGlnYXRpb25JbXBsLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L0ZhaWx1cmVQcm9wYWdhdGlvbi9pbXBsL0FDSURNaXRpZ2F0aW9uSW1wbC5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoNCiAgKiAgICANCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoNCiAgKg0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvRmFpbHVyZVByb3BhZ2F0aW9uL2ltcGwvRkk0RkFBbmFseXNpc0ltcGwuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9GYWlsdXJlUHJvcGFnYXRpb24vaW1wbC9GSTRGQUFuYWx5c2lzSW1wbC5qYXZhCmluZGV4IDg1OTZiMGIuLjI4YTY2YWIgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9GYWlsdXJlUHJvcGFnYXRpb24vaW1wbC9GSTRGQUFuYWx5c2lzSW1wbC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9GYWlsdXJlUHJvcGFnYXRpb24vaW1wbC9GSTRGQUFuYWx5c2lzSW1wbC5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoNCiAgKiAgICANCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoNCiAgKg0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvRmFpbHVyZVByb3BhZ2F0aW9uL2ltcGwvRkk0RkFJbXBsLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvRmFpbHVyZVByb3BhZ2F0aW9uL2ltcGwvRkk0RkFJbXBsLmphdmEKaW5kZXggZjM5ODNmOS4uMDlhZDc2MyAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L0ZhaWx1cmVQcm9wYWdhdGlvbi9pbXBsL0ZJNEZBSW1wbC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9GYWlsdXJlUHJvcGFnYXRpb24vaW1wbC9GSTRGQUltcGwuamF2YQpAQCAtMyw5ICszLDkgQEAKICAqDQogICogICAgDQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqDQogICoNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L0ZhaWx1cmVQcm9wYWdhdGlvbi9pbXBsL0ZJNEZBU3BlY2lmaWNhdGlvbkltcGwuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9GYWlsdXJlUHJvcGFnYXRpb24vaW1wbC9GSTRGQVNwZWNpZmljYXRpb25JbXBsLmphdmEKaW5kZXggNDY0NWVjMS4uMzNiOGMyNyAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L0ZhaWx1cmVQcm9wYWdhdGlvbi9pbXBsL0ZJNEZBU3BlY2lmaWNhdGlvbkltcGwuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvRmFpbHVyZVByb3BhZ2F0aW9uL2ltcGwvRkk0RkFTcGVjaWZpY2F0aW9uSW1wbC5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoNCiAgKiAgICANCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoNCiAgKg0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvRmFpbHVyZVByb3BhZ2F0aW9uL2ltcGwvRlBUQ0ltcGwuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9GYWlsdXJlUHJvcGFnYXRpb24vaW1wbC9GUFRDSW1wbC5qYXZhCmluZGV4IDNmODU2MTYuLjdkMzhmNDYgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9GYWlsdXJlUHJvcGFnYXRpb24vaW1wbC9GUFRDSW1wbC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9GYWlsdXJlUHJvcGFnYXRpb24vaW1wbC9GUFRDSW1wbC5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoNCiAgKiAgICANCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoNCiAgKg0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvRmFpbHVyZVByb3BhZ2F0aW9uL2ltcGwvRlBUQ1BvcnRTbG90SW1wbC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L0ZhaWx1cmVQcm9wYWdhdGlvbi9pbXBsL0ZQVENQb3J0U2xvdEltcGwuamF2YQppbmRleCBlMDgzMzc1Li4wZjc4Yzc3IDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvRmFpbHVyZVByb3BhZ2F0aW9uL2ltcGwvRlBUQ1BvcnRTbG90SW1wbC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9GYWlsdXJlUHJvcGFnYXRpb24vaW1wbC9GUFRDUG9ydFNsb3RJbXBsLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKg0KICAqICAgIA0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKg0KICAqDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9GYWlsdXJlUHJvcGFnYXRpb24vaW1wbC9GUFRDU3BlY2lmaWNhdGlvbkltcGwuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9GYWlsdXJlUHJvcGFnYXRpb24vaW1wbC9GUFRDU3BlY2lmaWNhdGlvbkltcGwuamF2YQppbmRleCAxZTg3MmQ4Li5mZjU1OTYyIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvRmFpbHVyZVByb3BhZ2F0aW9uL2ltcGwvRlBUQ1NwZWNpZmljYXRpb25JbXBsLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L0ZhaWx1cmVQcm9wYWdhdGlvbi9pbXBsL0ZQVENTcGVjaWZpY2F0aW9uSW1wbC5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoNCiAgKiAgICANCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoNCiAgKg0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvRmFpbHVyZVByb3BhZ2F0aW9uL2ltcGwvRmFpbHVyZVByb3BhZ2F0aW9uQW5hbHlzaXNJbXBsLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvRmFpbHVyZVByb3BhZ2F0aW9uL2ltcGwvRmFpbHVyZVByb3BhZ2F0aW9uQW5hbHlzaXNJbXBsLmphdmEKaW5kZXggODQyZDJjZi4uOTM4MWJkNiAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L0ZhaWx1cmVQcm9wYWdhdGlvbi9pbXBsL0ZhaWx1cmVQcm9wYWdhdGlvbkFuYWx5c2lzSW1wbC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9GYWlsdXJlUHJvcGFnYXRpb24vaW1wbC9GYWlsdXJlUHJvcGFnYXRpb25BbmFseXNpc0ltcGwuamF2YQpAQCAtMyw5ICszLDkgQEAKICAqDQogICogICAgDQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqDQogICoNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L0ZhaWx1cmVQcm9wYWdhdGlvbi9pbXBsL0ZhaWx1cmVQcm9wYWdhdGlvbkZhY3RvcnlJbXBsLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvRmFpbHVyZVByb3BhZ2F0aW9uL2ltcGwvRmFpbHVyZVByb3BhZ2F0aW9uRmFjdG9yeUltcGwuamF2YQppbmRleCA5NzIwOTNkLi4yZWY3MTI4IDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvRmFpbHVyZVByb3BhZ2F0aW9uL2ltcGwvRmFpbHVyZVByb3BhZ2F0aW9uRmFjdG9yeUltcGwuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvRmFpbHVyZVByb3BhZ2F0aW9uL2ltcGwvRmFpbHVyZVByb3BhZ2F0aW9uRmFjdG9yeUltcGwuamF2YQpAQCAtMyw5ICszLDkgQEAKICAqCiAgKiAgICAKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgKgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9GYWlsdXJlUHJvcGFnYXRpb24vaW1wbC9GYWlsdXJlUHJvcGFnYXRpb25QYWNrYWdlSW1wbC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L0ZhaWx1cmVQcm9wYWdhdGlvbi9pbXBsL0ZhaWx1cmVQcm9wYWdhdGlvblBhY2thZ2VJbXBsLmphdmEKaW5kZXggMmJjZTc4Zi4uMTFlZTI1NyAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L0ZhaWx1cmVQcm9wYWdhdGlvbi9pbXBsL0ZhaWx1cmVQcm9wYWdhdGlvblBhY2thZ2VJbXBsLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L0ZhaWx1cmVQcm9wYWdhdGlvbi9pbXBsL0ZhaWx1cmVQcm9wYWdhdGlvblBhY2thZ2VJbXBsLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKgogICogICAgCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICoKICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvRmFpbHVyZVByb3BhZ2F0aW9uL3V0aWwvRmFpbHVyZVByb3BhZ2F0aW9uQWRhcHRlckZhY3RvcnkuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9GYWlsdXJlUHJvcGFnYXRpb24vdXRpbC9GYWlsdXJlUHJvcGFnYXRpb25BZGFwdGVyRmFjdG9yeS5qYXZhCmluZGV4IGJmZTc1OTAuLmRlOTRjNTUgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9GYWlsdXJlUHJvcGFnYXRpb24vdXRpbC9GYWlsdXJlUHJvcGFnYXRpb25BZGFwdGVyRmFjdG9yeS5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9GYWlsdXJlUHJvcGFnYXRpb24vdXRpbC9GYWlsdXJlUHJvcGFnYXRpb25BZGFwdGVyRmFjdG9yeS5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoKICAqICAgIAogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICAqCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L0ZhaWx1cmVQcm9wYWdhdGlvbi91dGlsL0ZhaWx1cmVQcm9wYWdhdGlvblJlc291cmNlRmFjdG9yeUltcGwuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9GYWlsdXJlUHJvcGFnYXRpb24vdXRpbC9GYWlsdXJlUHJvcGFnYXRpb25SZXNvdXJjZUZhY3RvcnlJbXBsLmphdmEKaW5kZXggMjFiYzZiMy4uZjc1ZjNiMyAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L0ZhaWx1cmVQcm9wYWdhdGlvbi91dGlsL0ZhaWx1cmVQcm9wYWdhdGlvblJlc291cmNlRmFjdG9yeUltcGwuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvRmFpbHVyZVByb3BhZ2F0aW9uL3V0aWwvRmFpbHVyZVByb3BhZ2F0aW9uUmVzb3VyY2VGYWN0b3J5SW1wbC5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoKICAqICAgIAogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICAqCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L0ZhaWx1cmVQcm9wYWdhdGlvbi91dGlsL0ZhaWx1cmVQcm9wYWdhdGlvblJlc291cmNlSW1wbC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L0ZhaWx1cmVQcm9wYWdhdGlvbi91dGlsL0ZhaWx1cmVQcm9wYWdhdGlvblJlc291cmNlSW1wbC5qYXZhCmluZGV4IDk3OTZhOWIuLmU3OTZlYmMgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9GYWlsdXJlUHJvcGFnYXRpb24vdXRpbC9GYWlsdXJlUHJvcGFnYXRpb25SZXNvdXJjZUltcGwuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvRmFpbHVyZVByb3BhZ2F0aW9uL3V0aWwvRmFpbHVyZVByb3BhZ2F0aW9uUmVzb3VyY2VJbXBsLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKgogICogICAgCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICoKICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvRmFpbHVyZVByb3BhZ2F0aW9uL3V0aWwvRmFpbHVyZVByb3BhZ2F0aW9uU3dpdGNoLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvRmFpbHVyZVByb3BhZ2F0aW9uL3V0aWwvRmFpbHVyZVByb3BhZ2F0aW9uU3dpdGNoLmphdmEKaW5kZXggZmNiNDU2ZC4uMzQ1Y2E1YSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L0ZhaWx1cmVQcm9wYWdhdGlvbi91dGlsL0ZhaWx1cmVQcm9wYWdhdGlvblN3aXRjaC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9GYWlsdXJlUHJvcGFnYXRpb24vdXRpbC9GYWlsdXJlUHJvcGFnYXRpb25Td2l0Y2guamF2YQpAQCAtMyw5ICszLDkgQEAKICAqDQogICogICAgDQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqDQogICoNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L0ZhaWx1cmVQcm9wYWdhdGlvbi91dGlsL0ZhaWx1cmVQcm9wYWdhdGlvblhNTFByb2Nlc3Nvci5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L0ZhaWx1cmVQcm9wYWdhdGlvbi91dGlsL0ZhaWx1cmVQcm9wYWdhdGlvblhNTFByb2Nlc3Nvci5qYXZhCmluZGV4IDJmMDllZWUuLjAxNDM0ODIgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9GYWlsdXJlUHJvcGFnYXRpb24vdXRpbC9GYWlsdXJlUHJvcGFnYXRpb25YTUxQcm9jZXNzb3IuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvRmFpbHVyZVByb3BhZ2F0aW9uL3V0aWwvRmFpbHVyZVByb3BhZ2F0aW9uWE1MUHJvY2Vzc29yLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKgogICogICAgCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICoKICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvTWl0aWdhdGlvbk1lYW5zL01pdGlnYXRpb25NZWFuc0ZhY3RvcnkuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9NaXRpZ2F0aW9uTWVhbnMvTWl0aWdhdGlvbk1lYW5zRmFjdG9yeS5qYXZhCmluZGV4IDczYzgwY2MuLmQ0Y2ViOGIgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9NaXRpZ2F0aW9uTWVhbnMvTWl0aWdhdGlvbk1lYW5zRmFjdG9yeS5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9NaXRpZ2F0aW9uTWVhbnMvTWl0aWdhdGlvbk1lYW5zRmFjdG9yeS5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoKICAqICAgIAogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICAqCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L01pdGlnYXRpb25NZWFucy9NaXRpZ2F0aW9uTWVhbnNQYWNrYWdlLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvTWl0aWdhdGlvbk1lYW5zL01pdGlnYXRpb25NZWFuc1BhY2thZ2UuamF2YQppbmRleCAxZDYzNGFmLi4yY2MzZDJmIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvTWl0aWdhdGlvbk1lYW5zL01pdGlnYXRpb25NZWFuc1BhY2thZ2UuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvTWl0aWdhdGlvbk1lYW5zL01pdGlnYXRpb25NZWFuc1BhY2thZ2UuamF2YQpAQCAtMyw5ICszLDkgQEAKICAqCiAgKiAgICAKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgKgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9NaXRpZ2F0aW9uTWVhbnMvVHJhbnNtaXNzaW9uV2l0aFByb3RvY29sLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvTWl0aWdhdGlvbk1lYW5zL1RyYW5zbWlzc2lvbldpdGhQcm90b2NvbC5qYXZhCmluZGV4IDUwZjg1YTguLjg1NjI0ZmQgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9NaXRpZ2F0aW9uTWVhbnMvVHJhbnNtaXNzaW9uV2l0aFByb3RvY29sLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L01pdGlnYXRpb25NZWFucy9UcmFuc21pc3Npb25XaXRoUHJvdG9jb2wuamF2YQpAQCAtMyw5ICszLDkgQEAKICAqDQogICogICAgDQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqDQogICoNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L01pdGlnYXRpb25NZWFucy9pbXBsL01pdGlnYXRpb25NZWFuc0ZhY3RvcnlJbXBsLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvTWl0aWdhdGlvbk1lYW5zL2ltcGwvTWl0aWdhdGlvbk1lYW5zRmFjdG9yeUltcGwuamF2YQppbmRleCAzMWFjNWFhLi5iNTMzYmJhIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvTWl0aWdhdGlvbk1lYW5zL2ltcGwvTWl0aWdhdGlvbk1lYW5zRmFjdG9yeUltcGwuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvTWl0aWdhdGlvbk1lYW5zL2ltcGwvTWl0aWdhdGlvbk1lYW5zRmFjdG9yeUltcGwuamF2YQpAQCAtMyw5ICszLDkgQEAKICAqCiAgKiAgICAKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgKgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9NaXRpZ2F0aW9uTWVhbnMvaW1wbC9NaXRpZ2F0aW9uTWVhbnNQYWNrYWdlSW1wbC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L01pdGlnYXRpb25NZWFucy9pbXBsL01pdGlnYXRpb25NZWFuc1BhY2thZ2VJbXBsLmphdmEKaW5kZXggNmVkOTc5YS4uMGQxOGIwYyAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L01pdGlnYXRpb25NZWFucy9pbXBsL01pdGlnYXRpb25NZWFuc1BhY2thZ2VJbXBsLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L01pdGlnYXRpb25NZWFucy9pbXBsL01pdGlnYXRpb25NZWFuc1BhY2thZ2VJbXBsLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKgogICogICAgCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICoKICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvTWl0aWdhdGlvbk1lYW5zL2ltcGwvVHJhbnNtaXNzaW9uV2l0aFByb3RvY29sSW1wbC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L01pdGlnYXRpb25NZWFucy9pbXBsL1RyYW5zbWlzc2lvbldpdGhQcm90b2NvbEltcGwuamF2YQppbmRleCA3MDM2ZmFjLi5hNGM2ZjA3IDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvTWl0aWdhdGlvbk1lYW5zL2ltcGwvVHJhbnNtaXNzaW9uV2l0aFByb3RvY29sSW1wbC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9NaXRpZ2F0aW9uTWVhbnMvaW1wbC9UcmFuc21pc3Npb25XaXRoUHJvdG9jb2xJbXBsLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKg0KICAqICAgIA0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKg0KICAqDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9NaXRpZ2F0aW9uTWVhbnMvdXRpbC9NaXRpZ2F0aW9uTWVhbnNBZGFwdGVyRmFjdG9yeS5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L01pdGlnYXRpb25NZWFucy91dGlsL01pdGlnYXRpb25NZWFuc0FkYXB0ZXJGYWN0b3J5LmphdmEKaW5kZXggZTIzMjdkNi4uNDBjMzc1ZiAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L01pdGlnYXRpb25NZWFucy91dGlsL01pdGlnYXRpb25NZWFuc0FkYXB0ZXJGYWN0b3J5LmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L01pdGlnYXRpb25NZWFucy91dGlsL01pdGlnYXRpb25NZWFuc0FkYXB0ZXJGYWN0b3J5LmphdmEKQEAgLTMsOSArMyw5IEBACiAgKgogICogICAgCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICoKICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvTWl0aWdhdGlvbk1lYW5zL3V0aWwvTWl0aWdhdGlvbk1lYW5zUmVzb3VyY2VGYWN0b3J5SW1wbC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L01pdGlnYXRpb25NZWFucy91dGlsL01pdGlnYXRpb25NZWFuc1Jlc291cmNlRmFjdG9yeUltcGwuamF2YQppbmRleCA2YzRlOWU5Li5kNWI2MTc2IDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvTWl0aWdhdGlvbk1lYW5zL3V0aWwvTWl0aWdhdGlvbk1lYW5zUmVzb3VyY2VGYWN0b3J5SW1wbC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9NaXRpZ2F0aW9uTWVhbnMvdXRpbC9NaXRpZ2F0aW9uTWVhbnNSZXNvdXJjZUZhY3RvcnlJbXBsLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKgogICogICAgCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICoKICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvTWl0aWdhdGlvbk1lYW5zL3V0aWwvTWl0aWdhdGlvbk1lYW5zUmVzb3VyY2VJbXBsLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvTWl0aWdhdGlvbk1lYW5zL3V0aWwvTWl0aWdhdGlvbk1lYW5zUmVzb3VyY2VJbXBsLmphdmEKaW5kZXggOGI3MjZhMS4uODFhOTJlMyAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L01pdGlnYXRpb25NZWFucy91dGlsL01pdGlnYXRpb25NZWFuc1Jlc291cmNlSW1wbC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9NaXRpZ2F0aW9uTWVhbnMvdXRpbC9NaXRpZ2F0aW9uTWVhbnNSZXNvdXJjZUltcGwuamF2YQpAQCAtMyw5ICszLDkgQEAKICAqCiAgKiAgICAKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgKgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9NaXRpZ2F0aW9uTWVhbnMvdXRpbC9NaXRpZ2F0aW9uTWVhbnNTd2l0Y2guamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9NaXRpZ2F0aW9uTWVhbnMvdXRpbC9NaXRpZ2F0aW9uTWVhbnNTd2l0Y2guamF2YQppbmRleCBlOTI3NzZhLi5iNzg2ZDJlIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvTWl0aWdhdGlvbk1lYW5zL3V0aWwvTWl0aWdhdGlvbk1lYW5zU3dpdGNoLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L01pdGlnYXRpb25NZWFucy91dGlsL01pdGlnYXRpb25NZWFuc1N3aXRjaC5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoNCiAgKiAgICANCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoNCiAgKg0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvTWl0aWdhdGlvbk1lYW5zL3V0aWwvTWl0aWdhdGlvbk1lYW5zWE1MUHJvY2Vzc29yLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvTWl0aWdhdGlvbk1lYW5zL3V0aWwvTWl0aWdhdGlvbk1lYW5zWE1MUHJvY2Vzc29yLmphdmEKaW5kZXggYTcyZGJkZi4uODQwMDBkMCAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L01pdGlnYXRpb25NZWFucy91dGlsL01pdGlnYXRpb25NZWFuc1hNTFByb2Nlc3Nvci5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9NaXRpZ2F0aW9uTWVhbnMvdXRpbC9NaXRpZ2F0aW9uTWVhbnNYTUxQcm9jZXNzb3IuamF2YQpAQCAtMyw5ICszLDkgQEAKICAqCiAgKiAgICAKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgKgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL0ZhdWx0VG9sZXJhbmNlL0FkanVkaWNhdG9yLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9GYXVsdFRvbGVyYW5jZS9BZGp1ZGljYXRvci5qYXZhCmluZGV4IDM1ZjZlNDcuLmFlOTBlOGYgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL0ZhdWx0VG9sZXJhbmNlL0FkanVkaWNhdG9yLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvRmF1bHRUb2xlcmFuY2UvQWRqdWRpY2F0b3IuamF2YQpAQCAtMyw5ICszLDkgQEAKICAqDQogICogICAgDQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqDQogICoNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvRmF1bHRUb2xlcmFuY2UvRmF1bHRUb2xlcmFuY2VGYWN0b3J5LmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9GYXVsdFRvbGVyYW5jZS9GYXVsdFRvbGVyYW5jZUZhY3RvcnkuamF2YQppbmRleCAxNTQ3MmZjLi5lYTFmYjIxIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9GYXVsdFRvbGVyYW5jZS9GYXVsdFRvbGVyYW5jZUZhY3RvcnkuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9GYXVsdFRvbGVyYW5jZS9GYXVsdFRvbGVyYW5jZUZhY3RvcnkuamF2YQpAQCAtMyw5ICszLDkgQEAKICAqCiAgKiAgICAKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgKgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL0ZhdWx0VG9sZXJhbmNlL0ZhdWx0VG9sZXJhbmNlUGFja2FnZS5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvRmF1bHRUb2xlcmFuY2UvRmF1bHRUb2xlcmFuY2VQYWNrYWdlLmphdmEKaW5kZXggYjkzZDAzNi4uYjBkYmY4YSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvRmF1bHRUb2xlcmFuY2UvRmF1bHRUb2xlcmFuY2VQYWNrYWdlLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvRmF1bHRUb2xlcmFuY2UvRmF1bHRUb2xlcmFuY2VQYWNrYWdlLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKgogICogICAgCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICoKICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9GYXVsdFRvbGVyYW5jZS9GYXVsdFRvbGVyYW50LmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9GYXVsdFRvbGVyYW5jZS9GYXVsdFRvbGVyYW50LmphdmEKaW5kZXggZjJjN2ZiMC4uNDU3NzE5MSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvRmF1bHRUb2xlcmFuY2UvRmF1bHRUb2xlcmFudC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL0ZhdWx0VG9sZXJhbmNlL0ZhdWx0VG9sZXJhbnQuamF2YQpAQCAtMyw5ICszLDkgQEAKICAqDQogICogICAgDQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqDQogICoNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvRmF1bHRUb2xlcmFuY2UvUmVkdW5kYW5jeU1hbmFnZXIuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL0ZhdWx0VG9sZXJhbmNlL1JlZHVuZGFuY3lNYW5hZ2VyLmphdmEKaW5kZXggYzczY2ZlNS4uMmJkYTBkNCAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvRmF1bHRUb2xlcmFuY2UvUmVkdW5kYW5jeU1hbmFnZXIuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9GYXVsdFRvbGVyYW5jZS9SZWR1bmRhbmN5TWFuYWdlci5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoNCiAgKiAgICANCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoNCiAgKg0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9GYXVsdFRvbGVyYW5jZS9WYXJpYW50LmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9GYXVsdFRvbGVyYW5jZS9WYXJpYW50LmphdmEKaW5kZXggMjZkYTM1ZC4uNTA5YzJjNyAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvRmF1bHRUb2xlcmFuY2UvVmFyaWFudC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL0ZhdWx0VG9sZXJhbmNlL1ZhcmlhbnQuamF2YQpAQCAtMyw5ICszLDkgQEAKICAqDQogICogICAgDQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqDQogICoNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvRmF1bHRUb2xlcmFuY2UvaW1wbC9BZGp1ZGljYXRvckltcGwuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL0ZhdWx0VG9sZXJhbmNlL2ltcGwvQWRqdWRpY2F0b3JJbXBsLmphdmEKaW5kZXggZDc3OGI2Ni4uZDliMTMwNSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvRmF1bHRUb2xlcmFuY2UvaW1wbC9BZGp1ZGljYXRvckltcGwuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9GYXVsdFRvbGVyYW5jZS9pbXBsL0FkanVkaWNhdG9ySW1wbC5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoNCiAgKiAgICANCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoNCiAgKg0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9GYXVsdFRvbGVyYW5jZS9pbXBsL0ZhdWx0VG9sZXJhbmNlRmFjdG9yeUltcGwuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL0ZhdWx0VG9sZXJhbmNlL2ltcGwvRmF1bHRUb2xlcmFuY2VGYWN0b3J5SW1wbC5qYXZhCmluZGV4IDRlNmYyMTQuLjM5ZjJkOWQgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL0ZhdWx0VG9sZXJhbmNlL2ltcGwvRmF1bHRUb2xlcmFuY2VGYWN0b3J5SW1wbC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL0ZhdWx0VG9sZXJhbmNlL2ltcGwvRmF1bHRUb2xlcmFuY2VGYWN0b3J5SW1wbC5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoKICAqICAgIAogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICAqCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvRmF1bHRUb2xlcmFuY2UvaW1wbC9GYXVsdFRvbGVyYW5jZVBhY2thZ2VJbXBsLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9GYXVsdFRvbGVyYW5jZS9pbXBsL0ZhdWx0VG9sZXJhbmNlUGFja2FnZUltcGwuamF2YQppbmRleCBjZTAyYWJiLi5lNTQ2MmZlIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9GYXVsdFRvbGVyYW5jZS9pbXBsL0ZhdWx0VG9sZXJhbmNlUGFja2FnZUltcGwuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9GYXVsdFRvbGVyYW5jZS9pbXBsL0ZhdWx0VG9sZXJhbmNlUGFja2FnZUltcGwuamF2YQpAQCAtMyw5ICszLDkgQEAKICAqCiAgKiAgICAKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgKgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL0ZhdWx0VG9sZXJhbmNlL2ltcGwvRmF1bHRUb2xlcmFudEltcGwuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL0ZhdWx0VG9sZXJhbmNlL2ltcGwvRmF1bHRUb2xlcmFudEltcGwuamF2YQppbmRleCA5MDlkYjFmLi5jMjYwNzQwIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9GYXVsdFRvbGVyYW5jZS9pbXBsL0ZhdWx0VG9sZXJhbnRJbXBsLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvRmF1bHRUb2xlcmFuY2UvaW1wbC9GYXVsdFRvbGVyYW50SW1wbC5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoNCiAgKiAgICANCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoNCiAgKg0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9GYXVsdFRvbGVyYW5jZS9pbXBsL1JlZHVuZGFuY3lNYW5hZ2VySW1wbC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvRmF1bHRUb2xlcmFuY2UvaW1wbC9SZWR1bmRhbmN5TWFuYWdlckltcGwuamF2YQppbmRleCBmMmMxNDNlLi5kNzY1ZjdmIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9GYXVsdFRvbGVyYW5jZS9pbXBsL1JlZHVuZGFuY3lNYW5hZ2VySW1wbC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL0ZhdWx0VG9sZXJhbmNlL2ltcGwvUmVkdW5kYW5jeU1hbmFnZXJJbXBsLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKg0KICAqICAgIA0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKg0KICAqDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL0ZhdWx0VG9sZXJhbmNlL2ltcGwvVmFyaWFudEltcGwuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL0ZhdWx0VG9sZXJhbmNlL2ltcGwvVmFyaWFudEltcGwuamF2YQppbmRleCBhYzc2ZGNmLi5kZmRlZTAxIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9GYXVsdFRvbGVyYW5jZS9pbXBsL1ZhcmlhbnRJbXBsLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvRmF1bHRUb2xlcmFuY2UvaW1wbC9WYXJpYW50SW1wbC5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoNCiAgKiAgICANCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoNCiAgKg0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9GYXVsdFRvbGVyYW5jZS91dGlsL0ZhdWx0VG9sZXJhbmNlQWRhcHRlckZhY3RvcnkuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL0ZhdWx0VG9sZXJhbmNlL3V0aWwvRmF1bHRUb2xlcmFuY2VBZGFwdGVyRmFjdG9yeS5qYXZhCmluZGV4IDMyY2VkZGUuLmEzOTllM2IgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL0ZhdWx0VG9sZXJhbmNlL3V0aWwvRmF1bHRUb2xlcmFuY2VBZGFwdGVyRmFjdG9yeS5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL0ZhdWx0VG9sZXJhbmNlL3V0aWwvRmF1bHRUb2xlcmFuY2VBZGFwdGVyRmFjdG9yeS5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoKICAqICAgIAogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICAqCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvRmF1bHRUb2xlcmFuY2UvdXRpbC9GYXVsdFRvbGVyYW5jZVJlc291cmNlRmFjdG9yeUltcGwuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL0ZhdWx0VG9sZXJhbmNlL3V0aWwvRmF1bHRUb2xlcmFuY2VSZXNvdXJjZUZhY3RvcnlJbXBsLmphdmEKaW5kZXggNjEzNzgxZC4uNjk5ZmFmZCAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvRmF1bHRUb2xlcmFuY2UvdXRpbC9GYXVsdFRvbGVyYW5jZVJlc291cmNlRmFjdG9yeUltcGwuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9GYXVsdFRvbGVyYW5jZS91dGlsL0ZhdWx0VG9sZXJhbmNlUmVzb3VyY2VGYWN0b3J5SW1wbC5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoKICAqICAgIAogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICAqCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvRmF1bHRUb2xlcmFuY2UvdXRpbC9GYXVsdFRvbGVyYW5jZVJlc291cmNlSW1wbC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvRmF1bHRUb2xlcmFuY2UvdXRpbC9GYXVsdFRvbGVyYW5jZVJlc291cmNlSW1wbC5qYXZhCmluZGV4IDk2MTVhNWIuLjJjNjIwZTkgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL0ZhdWx0VG9sZXJhbmNlL3V0aWwvRmF1bHRUb2xlcmFuY2VSZXNvdXJjZUltcGwuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9GYXVsdFRvbGVyYW5jZS91dGlsL0ZhdWx0VG9sZXJhbmNlUmVzb3VyY2VJbXBsLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKgogICogICAgCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICoKICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9GYXVsdFRvbGVyYW5jZS91dGlsL0ZhdWx0VG9sZXJhbmNlU3dpdGNoLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9GYXVsdFRvbGVyYW5jZS91dGlsL0ZhdWx0VG9sZXJhbmNlU3dpdGNoLmphdmEKaW5kZXggZDE4MTg1NS4uZGE2YzBjMyAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvRmF1bHRUb2xlcmFuY2UvdXRpbC9GYXVsdFRvbGVyYW5jZVN3aXRjaC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL0ZhdWx0VG9sZXJhbmNlL3V0aWwvRmF1bHRUb2xlcmFuY2VTd2l0Y2guamF2YQpAQCAtMyw5ICszLDkgQEAKICAqDQogICogICAgDQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqDQogICoNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvRmF1bHRUb2xlcmFuY2UvdXRpbC9GYXVsdFRvbGVyYW5jZVhNTFByb2Nlc3Nvci5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvRmF1bHRUb2xlcmFuY2UvdXRpbC9GYXVsdFRvbGVyYW5jZVhNTFByb2Nlc3Nvci5qYXZhCmluZGV4IDM1MDUzZTAuLmJhOTdkYjQgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL0ZhdWx0VG9sZXJhbmNlL3V0aWwvRmF1bHRUb2xlcmFuY2VYTUxQcm9jZXNzb3IuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9GYXVsdFRvbGVyYW5jZS91dGlsL0ZhdWx0VG9sZXJhbmNlWE1MUHJvY2Vzc29yLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKgogICogICAgCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICoKICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9NYWludGVuYW5jZU1vbml0b3JpbmcvRXJyb3JEZXRlY3Rpb24uamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL01haW50ZW5hbmNlTW9uaXRvcmluZy9FcnJvckRldGVjdGlvbi5qYXZhCmluZGV4IDE1ZWI2NDUuLmFlOTA0N2MgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL01haW50ZW5hbmNlTW9uaXRvcmluZy9FcnJvckRldGVjdGlvbi5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL01haW50ZW5hbmNlTW9uaXRvcmluZy9FcnJvckRldGVjdGlvbi5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoNCiAgKiAgICANCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoNCiAgKg0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9NYWludGVuYW5jZU1vbml0b3JpbmcvRmFpbHVyZURldGVjdGlvbi5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvTWFpbnRlbmFuY2VNb25pdG9yaW5nL0ZhaWx1cmVEZXRlY3Rpb24uamF2YQppbmRleCA5M2E1ZDc0Li5jMWNjZTlkIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9NYWludGVuYW5jZU1vbml0b3JpbmcvRmFpbHVyZURldGVjdGlvbi5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL01haW50ZW5hbmNlTW9uaXRvcmluZy9GYWlsdXJlRGV0ZWN0aW9uLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKg0KICAqICAgIA0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKg0KICAqDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL01haW50ZW5hbmNlTW9uaXRvcmluZy9NTUFjdGl2aXRpZXMuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL01haW50ZW5hbmNlTW9uaXRvcmluZy9NTUFjdGl2aXRpZXMuamF2YQppbmRleCA3OTkzMzNkLi4yM2QzMGNiIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9NYWludGVuYW5jZU1vbml0b3JpbmcvTU1BY3Rpdml0aWVzLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvTWFpbnRlbmFuY2VNb25pdG9yaW5nL01NQWN0aXZpdGllcy5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoNCiAgKiAgICANCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoNCiAgKg0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9NYWludGVuYW5jZU1vbml0b3JpbmcvTWFpbnRlbmFuY2VNb25pdG9yaW5nRmFjdG9yeS5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvTWFpbnRlbmFuY2VNb25pdG9yaW5nL01haW50ZW5hbmNlTW9uaXRvcmluZ0ZhY3RvcnkuamF2YQppbmRleCBmZGIyMTExLi43MTI0NWJkIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9NYWludGVuYW5jZU1vbml0b3JpbmcvTWFpbnRlbmFuY2VNb25pdG9yaW5nRmFjdG9yeS5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL01haW50ZW5hbmNlTW9uaXRvcmluZy9NYWludGVuYW5jZU1vbml0b3JpbmdGYWN0b3J5LmphdmEKQEAgLTMsOSArMyw5IEBACiAgKgogICogICAgCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICoKICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9NYWludGVuYW5jZU1vbml0b3JpbmcvTWFpbnRlbmFuY2VNb25pdG9yaW5nUGFja2FnZS5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvTWFpbnRlbmFuY2VNb25pdG9yaW5nL01haW50ZW5hbmNlTW9uaXRvcmluZ1BhY2thZ2UuamF2YQppbmRleCBlYzY3YzI5Li5hM2ViZjI3IDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9NYWludGVuYW5jZU1vbml0b3JpbmcvTWFpbnRlbmFuY2VNb25pdG9yaW5nUGFja2FnZS5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL01haW50ZW5hbmNlTW9uaXRvcmluZy9NYWludGVuYW5jZU1vbml0b3JpbmdQYWNrYWdlLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKgogICogICAgCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICoKICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9NYWludGVuYW5jZU1vbml0b3JpbmcvUmVwYWlyLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9NYWludGVuYW5jZU1vbml0b3JpbmcvUmVwYWlyLmphdmEKaW5kZXggOGJmMzAzYS4uMDk2MmU3MSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvTWFpbnRlbmFuY2VNb25pdG9yaW5nL1JlcGFpci5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL01haW50ZW5hbmNlTW9uaXRvcmluZy9SZXBhaXIuamF2YQpAQCAtMyw5ICszLDkgQEAKICAqDQogICogICAgDQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqDQogICoNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvTWFpbnRlbmFuY2VNb25pdG9yaW5nL1JlcGxhY2UuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL01haW50ZW5hbmNlTW9uaXRvcmluZy9SZXBsYWNlLmphdmEKaW5kZXggOTg2Nzk5Ny4uMGEwZjBlOCAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvTWFpbnRlbmFuY2VNb25pdG9yaW5nL1JlcGxhY2UuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9NYWludGVuYW5jZU1vbml0b3JpbmcvUmVwbGFjZS5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoNCiAgKiAgICANCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoNCiAgKg0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9NYWludGVuYW5jZU1vbml0b3JpbmcvaW1wbC9FcnJvckRldGVjdGlvbkltcGwuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL01haW50ZW5hbmNlTW9uaXRvcmluZy9pbXBsL0Vycm9yRGV0ZWN0aW9uSW1wbC5qYXZhCmluZGV4IDE5NWE0NDMuLjhjNWI2NzcgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL01haW50ZW5hbmNlTW9uaXRvcmluZy9pbXBsL0Vycm9yRGV0ZWN0aW9uSW1wbC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL01haW50ZW5hbmNlTW9uaXRvcmluZy9pbXBsL0Vycm9yRGV0ZWN0aW9uSW1wbC5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoNCiAgKiAgICANCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoNCiAgKg0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9NYWludGVuYW5jZU1vbml0b3JpbmcvaW1wbC9GYWlsdXJlRGV0ZWN0aW9uSW1wbC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvTWFpbnRlbmFuY2VNb25pdG9yaW5nL2ltcGwvRmFpbHVyZURldGVjdGlvbkltcGwuamF2YQppbmRleCBjNWRhZDBiLi43ZjU1Y2VlIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9NYWludGVuYW5jZU1vbml0b3JpbmcvaW1wbC9GYWlsdXJlRGV0ZWN0aW9uSW1wbC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL01haW50ZW5hbmNlTW9uaXRvcmluZy9pbXBsL0ZhaWx1cmVEZXRlY3Rpb25JbXBsLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKg0KICAqICAgIA0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKg0KICAqDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL01haW50ZW5hbmNlTW9uaXRvcmluZy9pbXBsL01NQWN0aXZpdGllc0ltcGwuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL01haW50ZW5hbmNlTW9uaXRvcmluZy9pbXBsL01NQWN0aXZpdGllc0ltcGwuamF2YQppbmRleCA0ZWJiNjdmLi43OTU4OTg5IDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9NYWludGVuYW5jZU1vbml0b3JpbmcvaW1wbC9NTUFjdGl2aXRpZXNJbXBsLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvTWFpbnRlbmFuY2VNb25pdG9yaW5nL2ltcGwvTU1BY3Rpdml0aWVzSW1wbC5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoNCiAgKiAgICANCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoNCiAgKg0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9NYWludGVuYW5jZU1vbml0b3JpbmcvaW1wbC9NYWludGVuYW5jZU1vbml0b3JpbmdGYWN0b3J5SW1wbC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvTWFpbnRlbmFuY2VNb25pdG9yaW5nL2ltcGwvTWFpbnRlbmFuY2VNb25pdG9yaW5nRmFjdG9yeUltcGwuamF2YQppbmRleCA2NDVlZDM4Li5jM2JmZGNkIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9NYWludGVuYW5jZU1vbml0b3JpbmcvaW1wbC9NYWludGVuYW5jZU1vbml0b3JpbmdGYWN0b3J5SW1wbC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL01haW50ZW5hbmNlTW9uaXRvcmluZy9pbXBsL01haW50ZW5hbmNlTW9uaXRvcmluZ0ZhY3RvcnlJbXBsLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKgogICogICAgCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICoKICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9NYWludGVuYW5jZU1vbml0b3JpbmcvaW1wbC9NYWludGVuYW5jZU1vbml0b3JpbmdQYWNrYWdlSW1wbC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvTWFpbnRlbmFuY2VNb25pdG9yaW5nL2ltcGwvTWFpbnRlbmFuY2VNb25pdG9yaW5nUGFja2FnZUltcGwuamF2YQppbmRleCA4YTAyNTVhLi4yMDUwOGJlIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9NYWludGVuYW5jZU1vbml0b3JpbmcvaW1wbC9NYWludGVuYW5jZU1vbml0b3JpbmdQYWNrYWdlSW1wbC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL01haW50ZW5hbmNlTW9uaXRvcmluZy9pbXBsL01haW50ZW5hbmNlTW9uaXRvcmluZ1BhY2thZ2VJbXBsLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKgogICogICAgCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICoKICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9NYWludGVuYW5jZU1vbml0b3JpbmcvaW1wbC9SZXBhaXJJbXBsLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9NYWludGVuYW5jZU1vbml0b3JpbmcvaW1wbC9SZXBhaXJJbXBsLmphdmEKaW5kZXggYTJjODdhNS4uOTc0YTQ2ZiAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvTWFpbnRlbmFuY2VNb25pdG9yaW5nL2ltcGwvUmVwYWlySW1wbC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL01haW50ZW5hbmNlTW9uaXRvcmluZy9pbXBsL1JlcGFpckltcGwuamF2YQpAQCAtMyw5ICszLDkgQEAKICAqDQogICogICAgDQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqDQogICoNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvTWFpbnRlbmFuY2VNb25pdG9yaW5nL2ltcGwvUmVwbGFjZUltcGwuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL01haW50ZW5hbmNlTW9uaXRvcmluZy9pbXBsL1JlcGxhY2VJbXBsLmphdmEKaW5kZXggZTA0NmZlZS4uMzBhMTJmZiAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvTWFpbnRlbmFuY2VNb25pdG9yaW5nL2ltcGwvUmVwbGFjZUltcGwuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9NYWludGVuYW5jZU1vbml0b3JpbmcvaW1wbC9SZXBsYWNlSW1wbC5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoNCiAgKiAgICANCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoNCiAgKg0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9NYWludGVuYW5jZU1vbml0b3JpbmcvdXRpbC9NYWludGVuYW5jZU1vbml0b3JpbmdBZGFwdGVyRmFjdG9yeS5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvTWFpbnRlbmFuY2VNb25pdG9yaW5nL3V0aWwvTWFpbnRlbmFuY2VNb25pdG9yaW5nQWRhcHRlckZhY3RvcnkuamF2YQppbmRleCAyNDc2YjRjLi42ZGYxN2I4IDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9NYWludGVuYW5jZU1vbml0b3JpbmcvdXRpbC9NYWludGVuYW5jZU1vbml0b3JpbmdBZGFwdGVyRmFjdG9yeS5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL01haW50ZW5hbmNlTW9uaXRvcmluZy91dGlsL01haW50ZW5hbmNlTW9uaXRvcmluZ0FkYXB0ZXJGYWN0b3J5LmphdmEKQEAgLTMsOSArMyw5IEBACiAgKgogICogICAgCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICoKICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9NYWludGVuYW5jZU1vbml0b3JpbmcvdXRpbC9NYWludGVuYW5jZU1vbml0b3JpbmdSZXNvdXJjZUZhY3RvcnlJbXBsLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9NYWludGVuYW5jZU1vbml0b3JpbmcvdXRpbC9NYWludGVuYW5jZU1vbml0b3JpbmdSZXNvdXJjZUZhY3RvcnlJbXBsLmphdmEKaW5kZXggNDkzM2M4OS4uNzFmZDYzZCAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvTWFpbnRlbmFuY2VNb25pdG9yaW5nL3V0aWwvTWFpbnRlbmFuY2VNb25pdG9yaW5nUmVzb3VyY2VGYWN0b3J5SW1wbC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL01haW50ZW5hbmNlTW9uaXRvcmluZy91dGlsL01haW50ZW5hbmNlTW9uaXRvcmluZ1Jlc291cmNlRmFjdG9yeUltcGwuamF2YQpAQCAtMyw5ICszLDkgQEAKICAqCiAgKiAgICAKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgKgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL01haW50ZW5hbmNlTW9uaXRvcmluZy91dGlsL01haW50ZW5hbmNlTW9uaXRvcmluZ1Jlc291cmNlSW1wbC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvTWFpbnRlbmFuY2VNb25pdG9yaW5nL3V0aWwvTWFpbnRlbmFuY2VNb25pdG9yaW5nUmVzb3VyY2VJbXBsLmphdmEKaW5kZXggYmFhMGJhZS4uN2ZjZjNiOCAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvTWFpbnRlbmFuY2VNb25pdG9yaW5nL3V0aWwvTWFpbnRlbmFuY2VNb25pdG9yaW5nUmVzb3VyY2VJbXBsLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvTWFpbnRlbmFuY2VNb25pdG9yaW5nL3V0aWwvTWFpbnRlbmFuY2VNb25pdG9yaW5nUmVzb3VyY2VJbXBsLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKgogICogICAgCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICoKICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9NYWludGVuYW5jZU1vbml0b3JpbmcvdXRpbC9NYWludGVuYW5jZU1vbml0b3JpbmdTd2l0Y2guamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL01haW50ZW5hbmNlTW9uaXRvcmluZy91dGlsL01haW50ZW5hbmNlTW9uaXRvcmluZ1N3aXRjaC5qYXZhCmluZGV4IGQ2MzgxZDMuLmE1MjdkZjMgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL01haW50ZW5hbmNlTW9uaXRvcmluZy91dGlsL01haW50ZW5hbmNlTW9uaXRvcmluZ1N3aXRjaC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL01haW50ZW5hbmNlTW9uaXRvcmluZy91dGlsL01haW50ZW5hbmNlTW9uaXRvcmluZ1N3aXRjaC5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoNCiAgKiAgICANCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoNCiAgKg0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9NYWludGVuYW5jZU1vbml0b3JpbmcvdXRpbC9NYWludGVuYW5jZU1vbml0b3JpbmdYTUxQcm9jZXNzb3IuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL01haW50ZW5hbmNlTW9uaXRvcmluZy91dGlsL01haW50ZW5hbmNlTW9uaXRvcmluZ1hNTFByb2Nlc3Nvci5qYXZhCmluZGV4IDZjMzE2ZWMuLjE4ZDkxMmMgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL01haW50ZW5hbmNlTW9uaXRvcmluZy91dGlsL01haW50ZW5hbmNlTW9uaXRvcmluZ1hNTFByb2Nlc3Nvci5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL01haW50ZW5hbmNlTW9uaXRvcmluZy91dGlsL01haW50ZW5hbmNlTW9uaXRvcmluZ1hNTFByb2Nlc3Nvci5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoKICAqICAgIAogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICAqCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvU3RhdGVCYXNlZEFuYWx5c2lzL1N0YXRlQmFzZWRBbmFseXNpcy5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvU3RhdGVCYXNlZEFuYWx5c2lzL1N0YXRlQmFzZWRBbmFseXNpcy5qYXZhCmluZGV4IGRjODgwM2IuLjljM2I2NTMgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL1N0YXRlQmFzZWRBbmFseXNpcy9TdGF0ZUJhc2VkQW5hbHlzaXMuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9TdGF0ZUJhc2VkQW5hbHlzaXMvU3RhdGVCYXNlZEFuYWx5c2lzLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKg0KICAqICAgIA0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKg0KICAqDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL1N0YXRlQmFzZWRBbmFseXNpcy9TdGF0ZUJhc2VkQW5hbHlzaXNGYWN0b3J5LmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9TdGF0ZUJhc2VkQW5hbHlzaXMvU3RhdGVCYXNlZEFuYWx5c2lzRmFjdG9yeS5qYXZhCmluZGV4IGU0NmM2ZDMuLjRmMGRlNWQgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL1N0YXRlQmFzZWRBbmFseXNpcy9TdGF0ZUJhc2VkQW5hbHlzaXNGYWN0b3J5LmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvU3RhdGVCYXNlZEFuYWx5c2lzL1N0YXRlQmFzZWRBbmFseXNpc0ZhY3RvcnkuamF2YQpAQCAtMyw5ICszLDkgQEAKICAqCiAgKiAgICAKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgKgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL1N0YXRlQmFzZWRBbmFseXNpcy9TdGF0ZUJhc2VkQW5hbHlzaXNQYWNrYWdlLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9TdGF0ZUJhc2VkQW5hbHlzaXMvU3RhdGVCYXNlZEFuYWx5c2lzUGFja2FnZS5qYXZhCmluZGV4IGVkZDFiYWMuLmI5NGEwN2IgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL1N0YXRlQmFzZWRBbmFseXNpcy9TdGF0ZUJhc2VkQW5hbHlzaXNQYWNrYWdlLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvU3RhdGVCYXNlZEFuYWx5c2lzL1N0YXRlQmFzZWRBbmFseXNpc1BhY2thZ2UuamF2YQpAQCAtMyw5ICszLDkgQEAKICAqCiAgKiAgICAKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgKgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL1N0YXRlQmFzZWRBbmFseXNpcy9pbXBsL1N0YXRlQmFzZWRBbmFseXNpc0ZhY3RvcnlJbXBsLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9TdGF0ZUJhc2VkQW5hbHlzaXMvaW1wbC9TdGF0ZUJhc2VkQW5hbHlzaXNGYWN0b3J5SW1wbC5qYXZhCmluZGV4IDNjZjYwNTUuLmYwZmQ5MDEgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL1N0YXRlQmFzZWRBbmFseXNpcy9pbXBsL1N0YXRlQmFzZWRBbmFseXNpc0ZhY3RvcnlJbXBsLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvU3RhdGVCYXNlZEFuYWx5c2lzL2ltcGwvU3RhdGVCYXNlZEFuYWx5c2lzRmFjdG9yeUltcGwuamF2YQpAQCAtMyw5ICszLDkgQEAKICAqCiAgKiAgICAKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgKgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL1N0YXRlQmFzZWRBbmFseXNpcy9pbXBsL1N0YXRlQmFzZWRBbmFseXNpc0ltcGwuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL1N0YXRlQmFzZWRBbmFseXNpcy9pbXBsL1N0YXRlQmFzZWRBbmFseXNpc0ltcGwuamF2YQppbmRleCA3YjMyYjc3Li42NWMyNjNhIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9TdGF0ZUJhc2VkQW5hbHlzaXMvaW1wbC9TdGF0ZUJhc2VkQW5hbHlzaXNJbXBsLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvU3RhdGVCYXNlZEFuYWx5c2lzL2ltcGwvU3RhdGVCYXNlZEFuYWx5c2lzSW1wbC5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoNCiAgKiAgICANCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoNCiAgKg0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9TdGF0ZUJhc2VkQW5hbHlzaXMvaW1wbC9TdGF0ZUJhc2VkQW5hbHlzaXNQYWNrYWdlSW1wbC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvU3RhdGVCYXNlZEFuYWx5c2lzL2ltcGwvU3RhdGVCYXNlZEFuYWx5c2lzUGFja2FnZUltcGwuamF2YQppbmRleCBmNTVjYTM4Li4zOTkzMWMzIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9TdGF0ZUJhc2VkQW5hbHlzaXMvaW1wbC9TdGF0ZUJhc2VkQW5hbHlzaXNQYWNrYWdlSW1wbC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL1N0YXRlQmFzZWRBbmFseXNpcy9pbXBsL1N0YXRlQmFzZWRBbmFseXNpc1BhY2thZ2VJbXBsLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKgogICogICAgCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICoKICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9TdGF0ZUJhc2VkQW5hbHlzaXMvdXRpbC9TdGF0ZUJhc2VkQW5hbHlzaXNBZGFwdGVyRmFjdG9yeS5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvU3RhdGVCYXNlZEFuYWx5c2lzL3V0aWwvU3RhdGVCYXNlZEFuYWx5c2lzQWRhcHRlckZhY3RvcnkuamF2YQppbmRleCA2ODhlMzhhLi43NThiNmQ2IDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9TdGF0ZUJhc2VkQW5hbHlzaXMvdXRpbC9TdGF0ZUJhc2VkQW5hbHlzaXNBZGFwdGVyRmFjdG9yeS5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL1N0YXRlQmFzZWRBbmFseXNpcy91dGlsL1N0YXRlQmFzZWRBbmFseXNpc0FkYXB0ZXJGYWN0b3J5LmphdmEKQEAgLTMsOSArMyw5IEBACiAgKgogICogICAgCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICoKICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9TdGF0ZUJhc2VkQW5hbHlzaXMvdXRpbC9TdGF0ZUJhc2VkQW5hbHlzaXNSZXNvdXJjZUZhY3RvcnlJbXBsLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9TdGF0ZUJhc2VkQW5hbHlzaXMvdXRpbC9TdGF0ZUJhc2VkQW5hbHlzaXNSZXNvdXJjZUZhY3RvcnlJbXBsLmphdmEKaW5kZXggNThiMjBmMi4uOWQ0YWI4MiAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvU3RhdGVCYXNlZEFuYWx5c2lzL3V0aWwvU3RhdGVCYXNlZEFuYWx5c2lzUmVzb3VyY2VGYWN0b3J5SW1wbC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL1N0YXRlQmFzZWRBbmFseXNpcy91dGlsL1N0YXRlQmFzZWRBbmFseXNpc1Jlc291cmNlRmFjdG9yeUltcGwuamF2YQpAQCAtMyw5ICszLDkgQEAKICAqCiAgKiAgICAKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgKgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL1N0YXRlQmFzZWRBbmFseXNpcy91dGlsL1N0YXRlQmFzZWRBbmFseXNpc1Jlc291cmNlSW1wbC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvU3RhdGVCYXNlZEFuYWx5c2lzL3V0aWwvU3RhdGVCYXNlZEFuYWx5c2lzUmVzb3VyY2VJbXBsLmphdmEKaW5kZXggZWJkOTc1OC4uOGY4MjdkZiAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvU3RhdGVCYXNlZEFuYWx5c2lzL3V0aWwvU3RhdGVCYXNlZEFuYWx5c2lzUmVzb3VyY2VJbXBsLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvU3RhdGVCYXNlZEFuYWx5c2lzL3V0aWwvU3RhdGVCYXNlZEFuYWx5c2lzUmVzb3VyY2VJbXBsLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKgogICogICAgCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICoKICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9TdGF0ZUJhc2VkQW5hbHlzaXMvdXRpbC9TdGF0ZUJhc2VkQW5hbHlzaXNTd2l0Y2guamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL1N0YXRlQmFzZWRBbmFseXNpcy91dGlsL1N0YXRlQmFzZWRBbmFseXNpc1N3aXRjaC5qYXZhCmluZGV4IDFjYWEzMzUuLjk3YmFjMzMgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL1N0YXRlQmFzZWRBbmFseXNpcy91dGlsL1N0YXRlQmFzZWRBbmFseXNpc1N3aXRjaC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL1N0YXRlQmFzZWRBbmFseXNpcy91dGlsL1N0YXRlQmFzZWRBbmFseXNpc1N3aXRjaC5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoNCiAgKiAgICANCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoNCiAgKg0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9TdGF0ZUJhc2VkQW5hbHlzaXMvdXRpbC9TdGF0ZUJhc2VkQW5hbHlzaXNYTUxQcm9jZXNzb3IuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL1N0YXRlQmFzZWRBbmFseXNpcy91dGlsL1N0YXRlQmFzZWRBbmFseXNpc1hNTFByb2Nlc3Nvci5qYXZhCmluZGV4IGRiNzJhNmQuLjc0ZTY3ZjQgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL1N0YXRlQmFzZWRBbmFseXNpcy91dGlsL1N0YXRlQmFzZWRBbmFseXNpc1hNTFByb2Nlc3Nvci5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL1N0YXRlQmFzZWRBbmFseXNpcy91dGlsL1N0YXRlQmFzZWRBbmFseXNpc1hNTFByb2Nlc3Nvci5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoKICAqICAgIAogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICAqCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvU3RhdGVCYXNlZENvbXBvbmVudHMvU3RhdGVCYXNlZENvbXBvbmVudHNGYWN0b3J5LmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9TdGF0ZUJhc2VkQ29tcG9uZW50cy9TdGF0ZUJhc2VkQ29tcG9uZW50c0ZhY3RvcnkuamF2YQppbmRleCAzNmM1OTUzLi4wNDUwZWNmIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9TdGF0ZUJhc2VkQ29tcG9uZW50cy9TdGF0ZUJhc2VkQ29tcG9uZW50c0ZhY3RvcnkuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9TdGF0ZUJhc2VkQ29tcG9uZW50cy9TdGF0ZUJhc2VkQ29tcG9uZW50c0ZhY3RvcnkuamF2YQpAQCAtMyw5ICszLDkgQEAKICAqCiAgKiAgICAKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgKgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL1N0YXRlQmFzZWRDb21wb25lbnRzL1N0YXRlQmFzZWRDb21wb25lbnRzUGFja2FnZS5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvU3RhdGVCYXNlZENvbXBvbmVudHMvU3RhdGVCYXNlZENvbXBvbmVudHNQYWNrYWdlLmphdmEKaW5kZXggYzA1NTUzMi4uODFiZmE5OCAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvU3RhdGVCYXNlZENvbXBvbmVudHMvU3RhdGVCYXNlZENvbXBvbmVudHNQYWNrYWdlLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvU3RhdGVCYXNlZENvbXBvbmVudHMvU3RhdGVCYXNlZENvbXBvbmVudHNQYWNrYWdlLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKgogICogICAgCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICoKICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9TdGF0ZUJhc2VkQ29tcG9uZW50cy9TdGF0ZWZ1bEhhcmR3YXJlLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9TdGF0ZUJhc2VkQ29tcG9uZW50cy9TdGF0ZWZ1bEhhcmR3YXJlLmphdmEKaW5kZXggYTEwNzUzNy4uZDRhOTcwYSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvU3RhdGVCYXNlZENvbXBvbmVudHMvU3RhdGVmdWxIYXJkd2FyZS5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL1N0YXRlQmFzZWRDb21wb25lbnRzL1N0YXRlZnVsSGFyZHdhcmUuamF2YQpAQCAtMyw5ICszLDkgQEAKICAqDQogICogICAgDQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqDQogICoNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvU3RhdGVCYXNlZENvbXBvbmVudHMvU3RhdGVmdWxTb2Z0d2FyZS5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvU3RhdGVCYXNlZENvbXBvbmVudHMvU3RhdGVmdWxTb2Z0d2FyZS5qYXZhCmluZGV4IDEyMTA2NmYuLjc4YjUzZjYgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL1N0YXRlQmFzZWRDb21wb25lbnRzL1N0YXRlZnVsU29mdHdhcmUuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9TdGF0ZUJhc2VkQ29tcG9uZW50cy9TdGF0ZWZ1bFNvZnR3YXJlLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKg0KICAqICAgIA0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKg0KICAqDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL1N0YXRlQmFzZWRDb21wb25lbnRzL1N0YXRlbGVzc0hhcmR3YXJlLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9TdGF0ZUJhc2VkQ29tcG9uZW50cy9TdGF0ZWxlc3NIYXJkd2FyZS5qYXZhCmluZGV4IDIxNThhMTEuLmVhNjMwYmQgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL1N0YXRlQmFzZWRDb21wb25lbnRzL1N0YXRlbGVzc0hhcmR3YXJlLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvU3RhdGVCYXNlZENvbXBvbmVudHMvU3RhdGVsZXNzSGFyZHdhcmUuamF2YQpAQCAtMyw5ICszLDkgQEAKICAqDQogICogICAgDQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqDQogICoNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvU3RhdGVCYXNlZENvbXBvbmVudHMvU3RhdGVsZXNzU29mdHdhcmUuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL1N0YXRlQmFzZWRDb21wb25lbnRzL1N0YXRlbGVzc1NvZnR3YXJlLmphdmEKaW5kZXggMGFlM2RjZS4uZTYwMWMyOSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvU3RhdGVCYXNlZENvbXBvbmVudHMvU3RhdGVsZXNzU29mdHdhcmUuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9TdGF0ZUJhc2VkQ29tcG9uZW50cy9TdGF0ZWxlc3NTb2Z0d2FyZS5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoNCiAgKiAgICANCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoNCiAgKg0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9TdGF0ZUJhc2VkQ29tcG9uZW50cy9TdG9jaGFzdGljRmFpbHVyZUJlaGF2aW91ci5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvU3RhdGVCYXNlZENvbXBvbmVudHMvU3RvY2hhc3RpY0ZhaWx1cmVCZWhhdmlvdXIuamF2YQppbmRleCA5Mzg3MTYwLi4yZWEzZjI2IDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9TdGF0ZUJhc2VkQ29tcG9uZW50cy9TdG9jaGFzdGljRmFpbHVyZUJlaGF2aW91ci5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL1N0YXRlQmFzZWRDb21wb25lbnRzL1N0b2NoYXN0aWNGYWlsdXJlQmVoYXZpb3VyLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKiAgKg0KICAqICAqICAgIA0KICAqICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCi0gKiAgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiAgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCiAgKiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqICAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKiAgKg0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KIC8qKg0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL1N0YXRlQmFzZWRDb21wb25lbnRzL2ltcGwvU3RhdGVCYXNlZENvbXBvbmVudHNGYWN0b3J5SW1wbC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvU3RhdGVCYXNlZENvbXBvbmVudHMvaW1wbC9TdGF0ZUJhc2VkQ29tcG9uZW50c0ZhY3RvcnlJbXBsLmphdmEKaW5kZXggMDc5YzM0Zi4uMmI0YzQ3ZiAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvU3RhdGVCYXNlZENvbXBvbmVudHMvaW1wbC9TdGF0ZUJhc2VkQ29tcG9uZW50c0ZhY3RvcnlJbXBsLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvU3RhdGVCYXNlZENvbXBvbmVudHMvaW1wbC9TdGF0ZUJhc2VkQ29tcG9uZW50c0ZhY3RvcnlJbXBsLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKgogICogICAgCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICoKICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9TdGF0ZUJhc2VkQ29tcG9uZW50cy9pbXBsL1N0YXRlQmFzZWRDb21wb25lbnRzUGFja2FnZUltcGwuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL1N0YXRlQmFzZWRDb21wb25lbnRzL2ltcGwvU3RhdGVCYXNlZENvbXBvbmVudHNQYWNrYWdlSW1wbC5qYXZhCmluZGV4IDJlZDQyYjUuLmJiNzMwZmYgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL1N0YXRlQmFzZWRDb21wb25lbnRzL2ltcGwvU3RhdGVCYXNlZENvbXBvbmVudHNQYWNrYWdlSW1wbC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL1N0YXRlQmFzZWRDb21wb25lbnRzL2ltcGwvU3RhdGVCYXNlZENvbXBvbmVudHNQYWNrYWdlSW1wbC5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoKICAqICAgIAogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICAqCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvU3RhdGVCYXNlZENvbXBvbmVudHMvaW1wbC9TdGF0ZWZ1bEhhcmR3YXJlSW1wbC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvU3RhdGVCYXNlZENvbXBvbmVudHMvaW1wbC9TdGF0ZWZ1bEhhcmR3YXJlSW1wbC5qYXZhCmluZGV4IDRhNTRhY2IuLjNiODdjMjggMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL1N0YXRlQmFzZWRDb21wb25lbnRzL2ltcGwvU3RhdGVmdWxIYXJkd2FyZUltcGwuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9TdGF0ZUJhc2VkQ29tcG9uZW50cy9pbXBsL1N0YXRlZnVsSGFyZHdhcmVJbXBsLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKg0KICAqICAgIA0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKg0KICAqDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL1N0YXRlQmFzZWRDb21wb25lbnRzL2ltcGwvU3RhdGVmdWxTb2Z0d2FyZUltcGwuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL1N0YXRlQmFzZWRDb21wb25lbnRzL2ltcGwvU3RhdGVmdWxTb2Z0d2FyZUltcGwuamF2YQppbmRleCAwNzVlYWJlLi5hYTllOWJiIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9TdGF0ZUJhc2VkQ29tcG9uZW50cy9pbXBsL1N0YXRlZnVsU29mdHdhcmVJbXBsLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvU3RhdGVCYXNlZENvbXBvbmVudHMvaW1wbC9TdGF0ZWZ1bFNvZnR3YXJlSW1wbC5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoNCiAgKiAgICANCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoNCiAgKg0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9TdGF0ZUJhc2VkQ29tcG9uZW50cy9pbXBsL1N0YXRlbGVzc0hhcmR3YXJlSW1wbC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvU3RhdGVCYXNlZENvbXBvbmVudHMvaW1wbC9TdGF0ZWxlc3NIYXJkd2FyZUltcGwuamF2YQppbmRleCBlOWI0Zjk2Li4wMTIyNWJkIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9TdGF0ZUJhc2VkQ29tcG9uZW50cy9pbXBsL1N0YXRlbGVzc0hhcmR3YXJlSW1wbC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL1N0YXRlQmFzZWRDb21wb25lbnRzL2ltcGwvU3RhdGVsZXNzSGFyZHdhcmVJbXBsLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKg0KICAqICAgIA0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKg0KICAqDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL1N0YXRlQmFzZWRDb21wb25lbnRzL2ltcGwvU3RhdGVsZXNzU29mdHdhcmVJbXBsLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9TdGF0ZUJhc2VkQ29tcG9uZW50cy9pbXBsL1N0YXRlbGVzc1NvZnR3YXJlSW1wbC5qYXZhCmluZGV4IDY1ZmI0OTQuLjdhNmMyMTEgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL1N0YXRlQmFzZWRDb21wb25lbnRzL2ltcGwvU3RhdGVsZXNzU29mdHdhcmVJbXBsLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvU3RhdGVCYXNlZENvbXBvbmVudHMvaW1wbC9TdGF0ZWxlc3NTb2Z0d2FyZUltcGwuamF2YQpAQCAtMyw5ICszLDkgQEAKICAqDQogICogICAgDQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqDQogICoNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvU3RhdGVCYXNlZENvbXBvbmVudHMvaW1wbC9TdG9jaGFzdGljRmFpbHVyZUJlaGF2aW91ckltcGwuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL1N0YXRlQmFzZWRDb21wb25lbnRzL2ltcGwvU3RvY2hhc3RpY0ZhaWx1cmVCZWhhdmlvdXJJbXBsLmphdmEKaW5kZXggMDhkY2JlMy4uNDY3NDk4NyAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvU3RhdGVCYXNlZENvbXBvbmVudHMvaW1wbC9TdG9jaGFzdGljRmFpbHVyZUJlaGF2aW91ckltcGwuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9TdGF0ZUJhc2VkQ29tcG9uZW50cy9pbXBsL1N0b2NoYXN0aWNGYWlsdXJlQmVoYXZpb3VySW1wbC5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICogICoNCiAgKiAgKiAgICANCiAgKiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiAgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqICAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICogICoNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCiAvKioNCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9TdGF0ZUJhc2VkQ29tcG9uZW50cy91dGlsL1N0YXRlQmFzZWRDb21wb25lbnRzQWRhcHRlckZhY3RvcnkuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL1N0YXRlQmFzZWRDb21wb25lbnRzL3V0aWwvU3RhdGVCYXNlZENvbXBvbmVudHNBZGFwdGVyRmFjdG9yeS5qYXZhCmluZGV4IDUxMDJjMjUuLjEyZmZkYmQgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL1N0YXRlQmFzZWRDb21wb25lbnRzL3V0aWwvU3RhdGVCYXNlZENvbXBvbmVudHNBZGFwdGVyRmFjdG9yeS5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL1N0YXRlQmFzZWRDb21wb25lbnRzL3V0aWwvU3RhdGVCYXNlZENvbXBvbmVudHNBZGFwdGVyRmFjdG9yeS5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoKICAqICAgIAogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICAqCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvU3RhdGVCYXNlZENvbXBvbmVudHMvdXRpbC9TdGF0ZUJhc2VkQ29tcG9uZW50c1Jlc291cmNlRmFjdG9yeUltcGwuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL1N0YXRlQmFzZWRDb21wb25lbnRzL3V0aWwvU3RhdGVCYXNlZENvbXBvbmVudHNSZXNvdXJjZUZhY3RvcnlJbXBsLmphdmEKaW5kZXggMzQ4MTZiYy4uZjZhNTYyMyAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvU3RhdGVCYXNlZENvbXBvbmVudHMvdXRpbC9TdGF0ZUJhc2VkQ29tcG9uZW50c1Jlc291cmNlRmFjdG9yeUltcGwuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9TdGF0ZUJhc2VkQ29tcG9uZW50cy91dGlsL1N0YXRlQmFzZWRDb21wb25lbnRzUmVzb3VyY2VGYWN0b3J5SW1wbC5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoKICAqICAgIAogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICAqCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvU3RhdGVCYXNlZENvbXBvbmVudHMvdXRpbC9TdGF0ZUJhc2VkQ29tcG9uZW50c1Jlc291cmNlSW1wbC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvU3RhdGVCYXNlZENvbXBvbmVudHMvdXRpbC9TdGF0ZUJhc2VkQ29tcG9uZW50c1Jlc291cmNlSW1wbC5qYXZhCmluZGV4IGNiN2RjMTUuLjQxMjg1YjMgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL1N0YXRlQmFzZWRDb21wb25lbnRzL3V0aWwvU3RhdGVCYXNlZENvbXBvbmVudHNSZXNvdXJjZUltcGwuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9TdGF0ZUJhc2VkQ29tcG9uZW50cy91dGlsL1N0YXRlQmFzZWRDb21wb25lbnRzUmVzb3VyY2VJbXBsLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKgogICogICAgCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICoKICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9TdGF0ZUJhc2VkQ29tcG9uZW50cy91dGlsL1N0YXRlQmFzZWRDb21wb25lbnRzU3dpdGNoLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9TdGF0ZUJhc2VkQ29tcG9uZW50cy91dGlsL1N0YXRlQmFzZWRDb21wb25lbnRzU3dpdGNoLmphdmEKaW5kZXggZjEyOTEyYS4uN2E4NTcxYSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvU3RhdGVCYXNlZENvbXBvbmVudHMvdXRpbC9TdGF0ZUJhc2VkQ29tcG9uZW50c1N3aXRjaC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL1N0YXRlQmFzZWRDb21wb25lbnRzL3V0aWwvU3RhdGVCYXNlZENvbXBvbmVudHNTd2l0Y2guamF2YQpAQCAtMyw5ICszLDkgQEAKICAqDQogICogICAgDQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqDQogICoNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvU3RhdGVCYXNlZENvbXBvbmVudHMvdXRpbC9TdGF0ZUJhc2VkQ29tcG9uZW50c1hNTFByb2Nlc3Nvci5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvU3RhdGVCYXNlZENvbXBvbmVudHMvdXRpbC9TdGF0ZUJhc2VkQ29tcG9uZW50c1hNTFByb2Nlc3Nvci5qYXZhCmluZGV4IDlmYTcwM2YuLmZlNDJmODUgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL1N0YXRlQmFzZWRDb21wb25lbnRzL3V0aWwvU3RhdGVCYXNlZENvbXBvbmVudHNYTUxQcm9jZXNzb3IuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9TdGF0ZUJhc2VkQ29tcG9uZW50cy91dGlsL1N0YXRlQmFzZWRDb21wb25lbnRzWE1MUHJvY2Vzc29yLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKgogICogICAgCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICoKICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9TdGF0ZUJhc2VkRGF0YVR5cGVzL0F2YWlsYWJpbGl0eS5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvU3RhdGVCYXNlZERhdGFUeXBlcy9BdmFpbGFiaWxpdHkuamF2YQppbmRleCA3YjdiNzExLi5iZDkzMjhkIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9TdGF0ZUJhc2VkRGF0YVR5cGVzL0F2YWlsYWJpbGl0eS5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL1N0YXRlQmFzZWREYXRhVHlwZXMvQXZhaWxhYmlsaXR5LmphdmEKQEAgLTMsOSArMyw5IEBACiAgKgogICogICAgCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICoKICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9TdGF0ZUJhc2VkRGF0YVR5cGVzL0NvbmZpZGVuY2VLaW5kLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9TdGF0ZUJhc2VkRGF0YVR5cGVzL0NvbmZpZGVuY2VLaW5kLmphdmEKaW5kZXggNDgxY2Q1Ni4uZDg2Njk2YyAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvU3RhdGVCYXNlZERhdGFUeXBlcy9Db25maWRlbmNlS2luZC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL1N0YXRlQmFzZWREYXRhVHlwZXMvQ29uZmlkZW5jZUtpbmQuamF2YQpAQCAtMyw5ICszLDkgQEAKICAqDQogICogICAgDQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqDQogICoNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvU3RhdGVCYXNlZERhdGFUeXBlcy9EZXBlbmRhYmlsaXR5TWVhc3VyZS5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvU3RhdGVCYXNlZERhdGFUeXBlcy9EZXBlbmRhYmlsaXR5TWVhc3VyZS5qYXZhCmluZGV4IDI3ZGQzYjcuLmMwYmNhZTcgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL1N0YXRlQmFzZWREYXRhVHlwZXMvRGVwZW5kYWJpbGl0eU1lYXN1cmUuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9TdGF0ZUJhc2VkRGF0YVR5cGVzL0RlcGVuZGFiaWxpdHlNZWFzdXJlLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKgogICogICAgCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICoKICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9TdGF0ZUJhc2VkRGF0YVR5cGVzL0V2YWx1YXRpb25BbmFseXRpY2FsLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9TdGF0ZUJhc2VkRGF0YVR5cGVzL0V2YWx1YXRpb25BbmFseXRpY2FsLmphdmEKaW5kZXggZWUzMjdmNy4uYjhhZWNjYyAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvU3RhdGVCYXNlZERhdGFUeXBlcy9FdmFsdWF0aW9uQW5hbHl0aWNhbC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL1N0YXRlQmFzZWREYXRhVHlwZXMvRXZhbHVhdGlvbkFuYWx5dGljYWwuamF2YQpAQCAtMyw5ICszLDkgQEAKICAqCiAgKiAgICAKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgKgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL1N0YXRlQmFzZWREYXRhVHlwZXMvRXZhbHVhdGlvbkJ5U2ltdWxhdGlvbi5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvU3RhdGVCYXNlZERhdGFUeXBlcy9FdmFsdWF0aW9uQnlTaW11bGF0aW9uLmphdmEKaW5kZXggNmM1MjM4MS4uMDUxMTg3ZiAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvU3RhdGVCYXNlZERhdGFUeXBlcy9FdmFsdWF0aW9uQnlTaW11bGF0aW9uLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvU3RhdGVCYXNlZERhdGFUeXBlcy9FdmFsdWF0aW9uQnlTaW11bGF0aW9uLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKgogICogICAgCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICoKICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9TdGF0ZUJhc2VkRGF0YVR5cGVzL0V2YWx1YXRpb25NZXRob2QuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL1N0YXRlQmFzZWREYXRhVHlwZXMvRXZhbHVhdGlvbk1ldGhvZC5qYXZhCmluZGV4IDdjNmNiZWUuLmM0YTRmMTUgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL1N0YXRlQmFzZWREYXRhVHlwZXMvRXZhbHVhdGlvbk1ldGhvZC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL1N0YXRlQmFzZWREYXRhVHlwZXMvRXZhbHVhdGlvbk1ldGhvZC5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoKICAqICAgIAogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICAqCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvU3RhdGVCYXNlZERhdGFUeXBlcy9FdmFsdWF0aW9uVHlwZS5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvU3RhdGVCYXNlZERhdGFUeXBlcy9FdmFsdWF0aW9uVHlwZS5qYXZhCmluZGV4IDZiMmY2YWIuLmQ1NGEzNjEgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL1N0YXRlQmFzZWREYXRhVHlwZXMvRXZhbHVhdGlvblR5cGUuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9TdGF0ZUJhc2VkRGF0YVR5cGVzL0V2YWx1YXRpb25UeXBlLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKgogICogICAgCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICoKICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9TdGF0ZUJhc2VkRGF0YVR5cGVzL01UVEYuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL1N0YXRlQmFzZWREYXRhVHlwZXMvTVRURi5qYXZhCmluZGV4IDdjMDcyYTMuLmYxZGJmNzUgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL1N0YXRlQmFzZWREYXRhVHlwZXMvTVRURi5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL1N0YXRlQmFzZWREYXRhVHlwZXMvTVRURi5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoKICAqICAgIAogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICAqCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvU3RhdGVCYXNlZERhdGFUeXBlcy9SZWR1bmRhbmN5S2luZC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvU3RhdGVCYXNlZERhdGFUeXBlcy9SZWR1bmRhbmN5S2luZC5qYXZhCmluZGV4IGE4YzAyMGUuLmQwYWZiYzQgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL1N0YXRlQmFzZWREYXRhVHlwZXMvUmVkdW5kYW5jeUtpbmQuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9TdGF0ZUJhc2VkRGF0YVR5cGVzL1JlZHVuZGFuY3lLaW5kLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKg0KICAqICAgIA0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKg0KICAqDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL1N0YXRlQmFzZWREYXRhVHlwZXMvUmVsaWFiaWxpdHkuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL1N0YXRlQmFzZWREYXRhVHlwZXMvUmVsaWFiaWxpdHkuamF2YQppbmRleCAxMjZkYWNkLi45MDUwMDI3IDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9TdGF0ZUJhc2VkRGF0YVR5cGVzL1JlbGlhYmlsaXR5LmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvU3RhdGVCYXNlZERhdGFUeXBlcy9SZWxpYWJpbGl0eS5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoKICAqICAgIAogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICAqCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvU3RhdGVCYXNlZERhdGFUeXBlcy9TdGF0ZUJhc2VkRGF0YVR5cGVzRmFjdG9yeS5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvU3RhdGVCYXNlZERhdGFUeXBlcy9TdGF0ZUJhc2VkRGF0YVR5cGVzRmFjdG9yeS5qYXZhCmluZGV4IDJiNGU3MzkuLmEyM2QyYzQgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL1N0YXRlQmFzZWREYXRhVHlwZXMvU3RhdGVCYXNlZERhdGFUeXBlc0ZhY3RvcnkuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9TdGF0ZUJhc2VkRGF0YVR5cGVzL1N0YXRlQmFzZWREYXRhVHlwZXNGYWN0b3J5LmphdmEKQEAgLTMsOSArMyw5IEBACiAgKgogICogICAgCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICoKICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9TdGF0ZUJhc2VkRGF0YVR5cGVzL1N0YXRlQmFzZWREYXRhVHlwZXNQYWNrYWdlLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9TdGF0ZUJhc2VkRGF0YVR5cGVzL1N0YXRlQmFzZWREYXRhVHlwZXNQYWNrYWdlLmphdmEKaW5kZXggOGI2MDFiNC4uMjNiNzhlOSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvU3RhdGVCYXNlZERhdGFUeXBlcy9TdGF0ZUJhc2VkRGF0YVR5cGVzUGFja2FnZS5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL1N0YXRlQmFzZWREYXRhVHlwZXMvU3RhdGVCYXNlZERhdGFUeXBlc1BhY2thZ2UuamF2YQpAQCAtMyw5ICszLDkgQEAKICAqCiAgKiAgICAKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgKgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL1N0YXRlQmFzZWREYXRhVHlwZXMvU3RlYWR5U3RhdGUuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL1N0YXRlQmFzZWREYXRhVHlwZXMvU3RlYWR5U3RhdGUuamF2YQppbmRleCBkMmY5MWRjLi40MTIzMjk0IDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9TdGF0ZUJhc2VkRGF0YVR5cGVzL1N0ZWFkeVN0YXRlLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvU3RhdGVCYXNlZERhdGFUeXBlcy9TdGVhZHlTdGF0ZS5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoKICAqICAgIAogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICAqCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvU3RhdGVCYXNlZERhdGFUeXBlcy9pbXBsL0F2YWlsYWJpbGl0eUltcGwuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL1N0YXRlQmFzZWREYXRhVHlwZXMvaW1wbC9BdmFpbGFiaWxpdHlJbXBsLmphdmEKaW5kZXggZWYzZWFjOS4uMjZhY2NiMSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvU3RhdGVCYXNlZERhdGFUeXBlcy9pbXBsL0F2YWlsYWJpbGl0eUltcGwuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9TdGF0ZUJhc2VkRGF0YVR5cGVzL2ltcGwvQXZhaWxhYmlsaXR5SW1wbC5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoNCiAgKiAgICANCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoNCiAgKg0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9TdGF0ZUJhc2VkRGF0YVR5cGVzL2ltcGwvRGVwZW5kYWJpbGl0eU1lYXN1cmVJbXBsLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9TdGF0ZUJhc2VkRGF0YVR5cGVzL2ltcGwvRGVwZW5kYWJpbGl0eU1lYXN1cmVJbXBsLmphdmEKaW5kZXggMTQ0NWYzNy4uOTBlNTMzZSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvU3RhdGVCYXNlZERhdGFUeXBlcy9pbXBsL0RlcGVuZGFiaWxpdHlNZWFzdXJlSW1wbC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL1N0YXRlQmFzZWREYXRhVHlwZXMvaW1wbC9EZXBlbmRhYmlsaXR5TWVhc3VyZUltcGwuamF2YQpAQCAtMyw5ICszLDkgQEAKICAqDQogICogICAgDQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqDQogICoNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvU3RhdGVCYXNlZERhdGFUeXBlcy9pbXBsL0V2YWx1YXRpb25BbmFseXRpY2FsSW1wbC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvU3RhdGVCYXNlZERhdGFUeXBlcy9pbXBsL0V2YWx1YXRpb25BbmFseXRpY2FsSW1wbC5qYXZhCmluZGV4IDYzYzIxZGUuLjVhYzk5NTUgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL1N0YXRlQmFzZWREYXRhVHlwZXMvaW1wbC9FdmFsdWF0aW9uQW5hbHl0aWNhbEltcGwuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9TdGF0ZUJhc2VkRGF0YVR5cGVzL2ltcGwvRXZhbHVhdGlvbkFuYWx5dGljYWxJbXBsLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKg0KICAqICAgIA0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKg0KICAqDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL1N0YXRlQmFzZWREYXRhVHlwZXMvaW1wbC9FdmFsdWF0aW9uQnlTaW11bGF0aW9uSW1wbC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvU3RhdGVCYXNlZERhdGFUeXBlcy9pbXBsL0V2YWx1YXRpb25CeVNpbXVsYXRpb25JbXBsLmphdmEKaW5kZXggMTk4N2ZlNi4uNGIwODQ4NyAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvU3RhdGVCYXNlZERhdGFUeXBlcy9pbXBsL0V2YWx1YXRpb25CeVNpbXVsYXRpb25JbXBsLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvU3RhdGVCYXNlZERhdGFUeXBlcy9pbXBsL0V2YWx1YXRpb25CeVNpbXVsYXRpb25JbXBsLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKg0KICAqICAgIA0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKg0KICAqDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL1N0YXRlQmFzZWREYXRhVHlwZXMvaW1wbC9FdmFsdWF0aW9uTWV0aG9kSW1wbC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvU3RhdGVCYXNlZERhdGFUeXBlcy9pbXBsL0V2YWx1YXRpb25NZXRob2RJbXBsLmphdmEKaW5kZXggYzE2MWFjNS4uMzY1Njc4MSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvU3RhdGVCYXNlZERhdGFUeXBlcy9pbXBsL0V2YWx1YXRpb25NZXRob2RJbXBsLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvU3RhdGVCYXNlZERhdGFUeXBlcy9pbXBsL0V2YWx1YXRpb25NZXRob2RJbXBsLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKg0KICAqICAgIA0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKg0KICAqDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL1N0YXRlQmFzZWREYXRhVHlwZXMvaW1wbC9FdmFsdWF0aW9uVHlwZUltcGwuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL1N0YXRlQmFzZWREYXRhVHlwZXMvaW1wbC9FdmFsdWF0aW9uVHlwZUltcGwuamF2YQppbmRleCA4ZDc5YWY1Li4xYTE5ZWE3IDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9TdGF0ZUJhc2VkRGF0YVR5cGVzL2ltcGwvRXZhbHVhdGlvblR5cGVJbXBsLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvU3RhdGVCYXNlZERhdGFUeXBlcy9pbXBsL0V2YWx1YXRpb25UeXBlSW1wbC5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoNCiAgKiAgICANCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoNCiAgKg0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9TdGF0ZUJhc2VkRGF0YVR5cGVzL2ltcGwvTVRURkltcGwuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL1N0YXRlQmFzZWREYXRhVHlwZXMvaW1wbC9NVFRGSW1wbC5qYXZhCmluZGV4IDNmZjQwNTQuLmEwYmY5ZGYgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL1N0YXRlQmFzZWREYXRhVHlwZXMvaW1wbC9NVFRGSW1wbC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL1N0YXRlQmFzZWREYXRhVHlwZXMvaW1wbC9NVFRGSW1wbC5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoNCiAgKiAgICANCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoNCiAgKg0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9TdGF0ZUJhc2VkRGF0YVR5cGVzL2ltcGwvUmVsaWFiaWxpdHlJbXBsLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9TdGF0ZUJhc2VkRGF0YVR5cGVzL2ltcGwvUmVsaWFiaWxpdHlJbXBsLmphdmEKaW5kZXggYjAxNDA5OC4uZGU5OWNjMCAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvU3RhdGVCYXNlZERhdGFUeXBlcy9pbXBsL1JlbGlhYmlsaXR5SW1wbC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL1N0YXRlQmFzZWREYXRhVHlwZXMvaW1wbC9SZWxpYWJpbGl0eUltcGwuamF2YQpAQCAtMyw5ICszLDkgQEAKICAqDQogICogICAgDQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqDQogICoNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvU3RhdGVCYXNlZERhdGFUeXBlcy9pbXBsL1N0YXRlQmFzZWREYXRhVHlwZXNGYWN0b3J5SW1wbC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvU3RhdGVCYXNlZERhdGFUeXBlcy9pbXBsL1N0YXRlQmFzZWREYXRhVHlwZXNGYWN0b3J5SW1wbC5qYXZhCmluZGV4IDVhNDEwODEuLjZjMzYxYmMgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL1N0YXRlQmFzZWREYXRhVHlwZXMvaW1wbC9TdGF0ZUJhc2VkRGF0YVR5cGVzRmFjdG9yeUltcGwuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9TdGF0ZUJhc2VkRGF0YVR5cGVzL2ltcGwvU3RhdGVCYXNlZERhdGFUeXBlc0ZhY3RvcnlJbXBsLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKgogICogICAgCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICoKICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9TdGF0ZUJhc2VkRGF0YVR5cGVzL2ltcGwvU3RhdGVCYXNlZERhdGFUeXBlc1BhY2thZ2VJbXBsLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9TdGF0ZUJhc2VkRGF0YVR5cGVzL2ltcGwvU3RhdGVCYXNlZERhdGFUeXBlc1BhY2thZ2VJbXBsLmphdmEKaW5kZXggMDViNGY5My4uYjhlOTRkNiAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvU3RhdGVCYXNlZERhdGFUeXBlcy9pbXBsL1N0YXRlQmFzZWREYXRhVHlwZXNQYWNrYWdlSW1wbC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL1N0YXRlQmFzZWREYXRhVHlwZXMvaW1wbC9TdGF0ZUJhc2VkRGF0YVR5cGVzUGFja2FnZUltcGwuamF2YQpAQCAtMyw5ICszLDkgQEAKICAqCiAgKiAgICAKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgKgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL1N0YXRlQmFzZWREYXRhVHlwZXMvaW1wbC9TdGVhZHlTdGF0ZUltcGwuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL1N0YXRlQmFzZWREYXRhVHlwZXMvaW1wbC9TdGVhZHlTdGF0ZUltcGwuamF2YQppbmRleCBhOTM4ZTFhLi40Y2RkZTZhIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9TdGF0ZUJhc2VkRGF0YVR5cGVzL2ltcGwvU3RlYWR5U3RhdGVJbXBsLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvU3RhdGVCYXNlZERhdGFUeXBlcy9pbXBsL1N0ZWFkeVN0YXRlSW1wbC5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoNCiAgKiAgICANCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoNCiAgKg0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9TdGF0ZUJhc2VkRGF0YVR5cGVzL3V0aWwvU3RhdGVCYXNlZERhdGFUeXBlc0FkYXB0ZXJGYWN0b3J5LmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9TdGF0ZUJhc2VkRGF0YVR5cGVzL3V0aWwvU3RhdGVCYXNlZERhdGFUeXBlc0FkYXB0ZXJGYWN0b3J5LmphdmEKaW5kZXggMDkwYTFmYy4uMzk4MjQzNSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvU3RhdGVCYXNlZERhdGFUeXBlcy91dGlsL1N0YXRlQmFzZWREYXRhVHlwZXNBZGFwdGVyRmFjdG9yeS5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL1N0YXRlQmFzZWREYXRhVHlwZXMvdXRpbC9TdGF0ZUJhc2VkRGF0YVR5cGVzQWRhcHRlckZhY3RvcnkuamF2YQpAQCAtMyw5ICszLDkgQEAKICAqCiAgKiAgICAKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgKgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL1N0YXRlQmFzZWREYXRhVHlwZXMvdXRpbC9TdGF0ZUJhc2VkRGF0YVR5cGVzU3dpdGNoLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvU3RhdGVCYXNlZC9TdGF0ZUJhc2VkRGF0YVR5cGVzL3V0aWwvU3RhdGVCYXNlZERhdGFUeXBlc1N3aXRjaC5qYXZhCmluZGV4IDZlZTBkZjAuLjU4NGFjZGYgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9TdGF0ZUJhc2VkL1N0YXRlQmFzZWREYXRhVHlwZXMvdXRpbC9TdGF0ZUJhc2VkRGF0YVR5cGVzU3dpdGNoLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1N0YXRlQmFzZWQvU3RhdGVCYXNlZERhdGFUeXBlcy91dGlsL1N0YXRlQmFzZWREYXRhVHlwZXNTd2l0Y2guamF2YQpAQCAtMyw5ICszLDkgQEAKICAqDQogICogICAgDQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqDQogICoNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1RocmVhdHNQcm9wYWdhdGlvbi9EZWdyYWRlZFN0YXRlLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvVGhyZWF0c1Byb3BhZ2F0aW9uL0RlZ3JhZGVkU3RhdGUuamF2YQppbmRleCBjZTRhODQ3Li4wNWNhNWY4IDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvVGhyZWF0c1Byb3BhZ2F0aW9uL0RlZ3JhZGVkU3RhdGUuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvVGhyZWF0c1Byb3BhZ2F0aW9uL0RlZ3JhZGVkU3RhdGUuamF2YQpAQCAtMyw5ICszLDkgQEAKICAqICAqCiAgKiAgKiAgICAKICAqICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqICAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorICogICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgKiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqICAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgKiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAvKioKZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9UaHJlYXRzUHJvcGFnYXRpb24vRGVwRXZlbnQuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9UaHJlYXRzUHJvcGFnYXRpb24vRGVwRXZlbnQuamF2YQppbmRleCA0MTMzNDAwLi5hNzM5MzE1IDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvVGhyZWF0c1Byb3BhZ2F0aW9uL0RlcEV2ZW50LmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1RocmVhdHNQcm9wYWdhdGlvbi9EZXBFdmVudC5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICogICoNCiAgKiAgKiAgICANCiAgKiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiAgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqICAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICogICoNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCiAvKioNCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvVGhyZWF0c1Byb3BhZ2F0aW9uL0Vycm9yTW9kZWwuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9UaHJlYXRzUHJvcGFnYXRpb24vRXJyb3JNb2RlbC5qYXZhCmluZGV4IDIwYTcwZGIuLjUyMzYwN2YgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9UaHJlYXRzUHJvcGFnYXRpb24vRXJyb3JNb2RlbC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9UaHJlYXRzUHJvcGFnYXRpb24vRXJyb3JNb2RlbC5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoNCiAgKiAgICANCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoNCiAgKg0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvVGhyZWF0c1Byb3BhZ2F0aW9uL0ZhaWx1cmUuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9UaHJlYXRzUHJvcGFnYXRpb24vRmFpbHVyZS5qYXZhCmluZGV4IGY2Yzk5ZGMuLmNkZjhkYjkgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9UaHJlYXRzUHJvcGFnYXRpb24vRmFpbHVyZS5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9UaHJlYXRzUHJvcGFnYXRpb24vRmFpbHVyZS5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICogICoNCiAgKiAgKiAgICANCiAgKiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiAgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqICAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICogICoNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCiAvKioNCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvVGhyZWF0c1Byb3BhZ2F0aW9uL0ludGVybmFsRmF1bHQuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9UaHJlYXRzUHJvcGFnYXRpb24vSW50ZXJuYWxGYXVsdC5qYXZhCmluZGV4IDM5NTZmNGUuLmVmNzFiZjMgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9UaHJlYXRzUHJvcGFnYXRpb24vSW50ZXJuYWxGYXVsdC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9UaHJlYXRzUHJvcGFnYXRpb24vSW50ZXJuYWxGYXVsdC5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoNCiAgKiAgICANCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoNCiAgKg0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvVGhyZWF0c1Byb3BhZ2F0aW9uL0ludGVybmFsUHJvcGFnYXRpb24uamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9UaHJlYXRzUHJvcGFnYXRpb24vSW50ZXJuYWxQcm9wYWdhdGlvbi5qYXZhCmluZGV4IDMxMGM2NDIuLmVlNmI5ZjIgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9UaHJlYXRzUHJvcGFnYXRpb24vSW50ZXJuYWxQcm9wYWdhdGlvbi5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9UaHJlYXRzUHJvcGFnYXRpb24vSW50ZXJuYWxQcm9wYWdhdGlvbi5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICogICoNCiAgKiAgKiAgICANCiAgKiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiAgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqICAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICogICoNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCiAvKioNCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvVGhyZWF0c1Byb3BhZ2F0aW9uL0ludmVydGVkLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvVGhyZWF0c1Byb3BhZ2F0aW9uL0ludmVydGVkLmphdmEKaW5kZXggZjQ0OTU0Ni4uYzdlNGFiYyAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1RocmVhdHNQcm9wYWdhdGlvbi9JbnZlcnRlZC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9UaHJlYXRzUHJvcGFnYXRpb24vSW52ZXJ0ZWQuamF2YQpAQCAtMyw5ICszLDkgQEAKICAqDQogICogICAgDQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqDQogICoNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1RocmVhdHNQcm9wYWdhdGlvbi9Ob3JtYWxJbnB1dC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1RocmVhdHNQcm9wYWdhdGlvbi9Ob3JtYWxJbnB1dC5qYXZhCmluZGV4IGU5YWVhYTguLmNhMjgxN2QgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9UaHJlYXRzUHJvcGFnYXRpb24vTm9ybWFsSW5wdXQuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvVGhyZWF0c1Byb3BhZ2F0aW9uL05vcm1hbElucHV0LmphdmEKQEAgLTMsOSArMyw5IEBACiAgKiAgKgogICogICogICAgCiAgKiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiAgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqICAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqICAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiAgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogLyoqCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvVGhyZWF0c1Byb3BhZ2F0aW9uL05vcm1hbE91dHB1dC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1RocmVhdHNQcm9wYWdhdGlvbi9Ob3JtYWxPdXRwdXQuamF2YQppbmRleCBjYWY2Njc4Li5iZmQ2MjQ3IDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvVGhyZWF0c1Byb3BhZ2F0aW9uL05vcm1hbE91dHB1dC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9UaHJlYXRzUHJvcGFnYXRpb24vTm9ybWFsT3V0cHV0LmphdmEKQEAgLTMsOSArMyw5IEBACiAgKiAgKgogICogICogICAgCiAgKiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiAgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqICAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqICAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiAgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogLyoqCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvVGhyZWF0c1Byb3BhZ2F0aW9uL1JhbXBEb3duLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvVGhyZWF0c1Byb3BhZ2F0aW9uL1JhbXBEb3duLmphdmEKaW5kZXggODI1Mzk1YS4uMDc4NGZjMiAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1RocmVhdHNQcm9wYWdhdGlvbi9SYW1wRG93bi5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9UaHJlYXRzUHJvcGFnYXRpb24vUmFtcERvd24uamF2YQpAQCAtMyw5ICszLDkgQEAKICAqDQogICogICAgDQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqDQogICoNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1RocmVhdHNQcm9wYWdhdGlvbi9SZWNvdmVyeUtpbmQuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9UaHJlYXRzUHJvcGFnYXRpb24vUmVjb3ZlcnlLaW5kLmphdmEKaW5kZXggMDM2NDNiNi4uZmU0MmRmNCAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1RocmVhdHNQcm9wYWdhdGlvbi9SZWNvdmVyeUtpbmQuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvVGhyZWF0c1Byb3BhZ2F0aW9uL1JlY292ZXJ5S2luZC5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICogICoNCiAgKiAgKiAgICANCiAgKiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiAgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqICAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICogICoNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCiAvKioNCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvVGhyZWF0c1Byb3BhZ2F0aW9uL1N0dWNrQXQuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9UaHJlYXRzUHJvcGFnYXRpb24vU3R1Y2tBdC5qYXZhCmluZGV4IDhhYzZhOWYuLjY0OGFjZGUgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9UaHJlYXRzUHJvcGFnYXRpb24vU3R1Y2tBdC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9UaHJlYXRzUHJvcGFnYXRpb24vU3R1Y2tBdC5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoNCiAgKiAgICANCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoNCiAgKg0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvVGhyZWF0c1Byb3BhZ2F0aW9uL1N0dWNrQXRGaXhlZC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1RocmVhdHNQcm9wYWdhdGlvbi9TdHVja0F0Rml4ZWQuamF2YQppbmRleCAxMWQ1NzkzLi42OGEwM2YwIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvVGhyZWF0c1Byb3BhZ2F0aW9uL1N0dWNrQXRGaXhlZC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9UaHJlYXRzUHJvcGFnYXRpb24vU3R1Y2tBdEZpeGVkLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKg0KICAqICAgIA0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKg0KICAqDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9UaHJlYXRzUHJvcGFnYXRpb24vVGhyZWF0U3RhdGUuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9UaHJlYXRzUHJvcGFnYXRpb24vVGhyZWF0U3RhdGUuamF2YQppbmRleCBmZWE1ZjdlLi5iYTAwZGE0IDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvVGhyZWF0c1Byb3BhZ2F0aW9uL1RocmVhdFN0YXRlLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1RocmVhdHNQcm9wYWdhdGlvbi9UaHJlYXRTdGF0ZS5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoNCiAgKiAgICANCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoNCiAgKg0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvVGhyZWF0c1Byb3BhZ2F0aW9uL1RocmVhdHNQcm9wYWdhdGlvbkZhY3RvcnkuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9UaHJlYXRzUHJvcGFnYXRpb24vVGhyZWF0c1Byb3BhZ2F0aW9uRmFjdG9yeS5qYXZhCmluZGV4IGI5NzZmY2IuLjIzYjU0MmIgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9UaHJlYXRzUHJvcGFnYXRpb24vVGhyZWF0c1Byb3BhZ2F0aW9uRmFjdG9yeS5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9UaHJlYXRzUHJvcGFnYXRpb24vVGhyZWF0c1Byb3BhZ2F0aW9uRmFjdG9yeS5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoNCiAgKiAgICANCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoNCiAgKg0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvVGhyZWF0c1Byb3BhZ2F0aW9uL1RocmVhdHNQcm9wYWdhdGlvblBhY2thZ2UuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9UaHJlYXRzUHJvcGFnYXRpb24vVGhyZWF0c1Byb3BhZ2F0aW9uUGFja2FnZS5qYXZhCmluZGV4IDAxMGJkNDYuLjkzOGU1MTIgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9UaHJlYXRzUHJvcGFnYXRpb24vVGhyZWF0c1Byb3BhZ2F0aW9uUGFja2FnZS5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9UaHJlYXRzUHJvcGFnYXRpb24vVGhyZWF0c1Byb3BhZ2F0aW9uUGFja2FnZS5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoNCiAgKiAgICANCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoNCiAgKg0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvVGhyZWF0c1Byb3BhZ2F0aW9uL2ltcGwvRGVncmFkZWRTdGF0ZUltcGwuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9UaHJlYXRzUHJvcGFnYXRpb24vaW1wbC9EZWdyYWRlZFN0YXRlSW1wbC5qYXZhCmluZGV4IDJmYzZiOTIuLjU5OWFjYmEgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9UaHJlYXRzUHJvcGFnYXRpb24vaW1wbC9EZWdyYWRlZFN0YXRlSW1wbC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9UaHJlYXRzUHJvcGFnYXRpb24vaW1wbC9EZWdyYWRlZFN0YXRlSW1wbC5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICogICoNCiAgKiAgKiAgICANCiAgKiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiAgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqICAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICogICoNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCiAvKioNCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvVGhyZWF0c1Byb3BhZ2F0aW9uL2ltcGwvRGVwRXZlbnRJbXBsLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvVGhyZWF0c1Byb3BhZ2F0aW9uL2ltcGwvRGVwRXZlbnRJbXBsLmphdmEKaW5kZXggZmQ1NWI0YS4uMzQ0NDAwNCAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1RocmVhdHNQcm9wYWdhdGlvbi9pbXBsL0RlcEV2ZW50SW1wbC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9UaHJlYXRzUHJvcGFnYXRpb24vaW1wbC9EZXBFdmVudEltcGwuamF2YQpAQCAtMyw5ICszLDkgQEAKICAqICAqDQogICogICogICAgDQogICogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KLSAqICAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqICAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KICAqICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiAgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqICAqDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQogLyoqDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1RocmVhdHNQcm9wYWdhdGlvbi9pbXBsL0Vycm9yTW9kZWxJbXBsLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvVGhyZWF0c1Byb3BhZ2F0aW9uL2ltcGwvRXJyb3JNb2RlbEltcGwuamF2YQppbmRleCAxNTZmYjBmLi41ZDU0ZTg0IDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvVGhyZWF0c1Byb3BhZ2F0aW9uL2ltcGwvRXJyb3JNb2RlbEltcGwuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvVGhyZWF0c1Byb3BhZ2F0aW9uL2ltcGwvRXJyb3JNb2RlbEltcGwuamF2YQpAQCAtMyw5ICszLDkgQEAKICAqDQogICogICAgDQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqDQogICoNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1RocmVhdHNQcm9wYWdhdGlvbi9pbXBsL0ZhaWx1cmVJbXBsLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvVGhyZWF0c1Byb3BhZ2F0aW9uL2ltcGwvRmFpbHVyZUltcGwuamF2YQppbmRleCA0Y2RhMjE3Li44ZmYyYjRjIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvVGhyZWF0c1Byb3BhZ2F0aW9uL2ltcGwvRmFpbHVyZUltcGwuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvVGhyZWF0c1Byb3BhZ2F0aW9uL2ltcGwvRmFpbHVyZUltcGwuamF2YQpAQCAtMyw5ICszLDkgQEAKICAqICAqDQogICogICogICAgDQogICogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KLSAqICAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqICAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KICAqICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiAgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqICAqDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQogLyoqDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1RocmVhdHNQcm9wYWdhdGlvbi9pbXBsL0ludGVybmFsRmF1bHRJbXBsLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvVGhyZWF0c1Byb3BhZ2F0aW9uL2ltcGwvSW50ZXJuYWxGYXVsdEltcGwuamF2YQppbmRleCA5YjQ4OTQ2Li4zNjA4MWVhIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvVGhyZWF0c1Byb3BhZ2F0aW9uL2ltcGwvSW50ZXJuYWxGYXVsdEltcGwuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvVGhyZWF0c1Byb3BhZ2F0aW9uL2ltcGwvSW50ZXJuYWxGYXVsdEltcGwuamF2YQpAQCAtMyw5ICszLDkgQEAKICAqDQogICogICAgDQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqDQogICoNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1RocmVhdHNQcm9wYWdhdGlvbi9pbXBsL0ludGVybmFsUHJvcGFnYXRpb25JbXBsLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvVGhyZWF0c1Byb3BhZ2F0aW9uL2ltcGwvSW50ZXJuYWxQcm9wYWdhdGlvbkltcGwuamF2YQppbmRleCBjOTJjNzI1Li45NzJiNTBkIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvVGhyZWF0c1Byb3BhZ2F0aW9uL2ltcGwvSW50ZXJuYWxQcm9wYWdhdGlvbkltcGwuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvVGhyZWF0c1Byb3BhZ2F0aW9uL2ltcGwvSW50ZXJuYWxQcm9wYWdhdGlvbkltcGwuamF2YQpAQCAtMyw5ICszLDkgQEAKICAqICAqDQogICogICogICAgDQogICogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KLSAqICAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqICAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KICAqICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiAgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqICAqDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQogLyoqDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1RocmVhdHNQcm9wYWdhdGlvbi9pbXBsL0ludmVydGVkSW1wbC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1RocmVhdHNQcm9wYWdhdGlvbi9pbXBsL0ludmVydGVkSW1wbC5qYXZhCmluZGV4IGNkNWQzODguLmFmZDJkYzMgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9UaHJlYXRzUHJvcGFnYXRpb24vaW1wbC9JbnZlcnRlZEltcGwuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvVGhyZWF0c1Byb3BhZ2F0aW9uL2ltcGwvSW52ZXJ0ZWRJbXBsLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKg0KICAqICAgIA0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKg0KICAqDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9UaHJlYXRzUHJvcGFnYXRpb24vaW1wbC9Ob3JtYWxJbnB1dEltcGwuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9UaHJlYXRzUHJvcGFnYXRpb24vaW1wbC9Ob3JtYWxJbnB1dEltcGwuamF2YQppbmRleCA0YjBhNDI4Li4yM2U4OWRlIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvVGhyZWF0c1Byb3BhZ2F0aW9uL2ltcGwvTm9ybWFsSW5wdXRJbXBsLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1RocmVhdHNQcm9wYWdhdGlvbi9pbXBsL05vcm1hbElucHV0SW1wbC5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICogICoNCiAgKiAgKiAgICANCiAgKiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiAgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqICAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICogICoNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCiAvKioNCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvVGhyZWF0c1Byb3BhZ2F0aW9uL2ltcGwvTm9ybWFsT3V0cHV0SW1wbC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1RocmVhdHNQcm9wYWdhdGlvbi9pbXBsL05vcm1hbE91dHB1dEltcGwuamF2YQppbmRleCAyN2E5OWVhLi4wNmNiZGUxIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvVGhyZWF0c1Byb3BhZ2F0aW9uL2ltcGwvTm9ybWFsT3V0cHV0SW1wbC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9UaHJlYXRzUHJvcGFnYXRpb24vaW1wbC9Ob3JtYWxPdXRwdXRJbXBsLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKiAgKg0KICAqICAqICAgIA0KICAqICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCi0gKiAgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiAgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCiAgKiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqICAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKiAgKg0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KIC8qKg0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9UaHJlYXRzUHJvcGFnYXRpb24vaW1wbC9SYW1wRG93bkltcGwuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9UaHJlYXRzUHJvcGFnYXRpb24vaW1wbC9SYW1wRG93bkltcGwuamF2YQppbmRleCBjMzFmMmY1Li4wMTVkZTBiIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvVGhyZWF0c1Byb3BhZ2F0aW9uL2ltcGwvUmFtcERvd25JbXBsLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1RocmVhdHNQcm9wYWdhdGlvbi9pbXBsL1JhbXBEb3duSW1wbC5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoNCiAgKiAgICANCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoNCiAgKg0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvVGhyZWF0c1Byb3BhZ2F0aW9uL2ltcGwvU3R1Y2tBdEZpeGVkSW1wbC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1RocmVhdHNQcm9wYWdhdGlvbi9pbXBsL1N0dWNrQXRGaXhlZEltcGwuamF2YQppbmRleCBjNWY3MDBjLi5lNzkzODVjIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvVGhyZWF0c1Byb3BhZ2F0aW9uL2ltcGwvU3R1Y2tBdEZpeGVkSW1wbC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9UaHJlYXRzUHJvcGFnYXRpb24vaW1wbC9TdHVja0F0Rml4ZWRJbXBsLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKg0KICAqICAgIA0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKg0KICAqDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9UaHJlYXRzUHJvcGFnYXRpb24vaW1wbC9TdHVja0F0SW1wbC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1RocmVhdHNQcm9wYWdhdGlvbi9pbXBsL1N0dWNrQXRJbXBsLmphdmEKaW5kZXggOWRmMjcwNi4uNGRjYTE3YiAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1RocmVhdHNQcm9wYWdhdGlvbi9pbXBsL1N0dWNrQXRJbXBsLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1RocmVhdHNQcm9wYWdhdGlvbi9pbXBsL1N0dWNrQXRJbXBsLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKg0KICAqICAgIA0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKg0KICAqDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9UaHJlYXRzUHJvcGFnYXRpb24vaW1wbC9UaHJlYXRTdGF0ZUltcGwuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9UaHJlYXRzUHJvcGFnYXRpb24vaW1wbC9UaHJlYXRTdGF0ZUltcGwuamF2YQppbmRleCA1ZjZlYjA2Li41YjBmOGU3IDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvVGhyZWF0c1Byb3BhZ2F0aW9uL2ltcGwvVGhyZWF0U3RhdGVJbXBsLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1RocmVhdHNQcm9wYWdhdGlvbi9pbXBsL1RocmVhdFN0YXRlSW1wbC5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoNCiAgKiAgICANCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoNCiAgKg0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvVGhyZWF0c1Byb3BhZ2F0aW9uL2ltcGwvVGhyZWF0c1Byb3BhZ2F0aW9uRmFjdG9yeUltcGwuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9UaHJlYXRzUHJvcGFnYXRpb24vaW1wbC9UaHJlYXRzUHJvcGFnYXRpb25GYWN0b3J5SW1wbC5qYXZhCmluZGV4IDVjYjc4YzEuLmJlYjdjZmQgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9UaHJlYXRzUHJvcGFnYXRpb24vaW1wbC9UaHJlYXRzUHJvcGFnYXRpb25GYWN0b3J5SW1wbC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9UaHJlYXRzUHJvcGFnYXRpb24vaW1wbC9UaHJlYXRzUHJvcGFnYXRpb25GYWN0b3J5SW1wbC5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoNCiAgKiAgICANCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoNCiAgKg0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvVGhyZWF0c1Byb3BhZ2F0aW9uL2ltcGwvVGhyZWF0c1Byb3BhZ2F0aW9uUGFja2FnZUltcGwuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9UaHJlYXRzUHJvcGFnYXRpb24vaW1wbC9UaHJlYXRzUHJvcGFnYXRpb25QYWNrYWdlSW1wbC5qYXZhCmluZGV4IGRmNGFlMDYuLjVlMDM4M2QgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9UaHJlYXRzUHJvcGFnYXRpb24vaW1wbC9UaHJlYXRzUHJvcGFnYXRpb25QYWNrYWdlSW1wbC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9UaHJlYXRzUHJvcGFnYXRpb24vaW1wbC9UaHJlYXRzUHJvcGFnYXRpb25QYWNrYWdlSW1wbC5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoNCiAgKiAgICANCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoNCiAgKg0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvVGhyZWF0c1Byb3BhZ2F0aW9uL3V0aWwvVGhyZWF0c1Byb3BhZ2F0aW9uQWRhcHRlckZhY3RvcnkuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9UaHJlYXRzUHJvcGFnYXRpb24vdXRpbC9UaHJlYXRzUHJvcGFnYXRpb25BZGFwdGVyRmFjdG9yeS5qYXZhCmluZGV4IDgzODhhZDEuLmM0MTc1ZWMgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9UaHJlYXRzUHJvcGFnYXRpb24vdXRpbC9UaHJlYXRzUHJvcGFnYXRpb25BZGFwdGVyRmFjdG9yeS5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9UaHJlYXRzUHJvcGFnYXRpb24vdXRpbC9UaHJlYXRzUHJvcGFnYXRpb25BZGFwdGVyRmFjdG9yeS5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoNCiAgKiAgICANCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoNCiAgKg0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvVGhyZWF0c1Byb3BhZ2F0aW9uL3V0aWwvVGhyZWF0c1Byb3BhZ2F0aW9uUmVzb3VyY2VGYWN0b3J5SW1wbC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1RocmVhdHNQcm9wYWdhdGlvbi91dGlsL1RocmVhdHNQcm9wYWdhdGlvblJlc291cmNlRmFjdG9yeUltcGwuamF2YQppbmRleCA2ZmRlNmFhLi5mNjA2Mjg3IDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvVGhyZWF0c1Byb3BhZ2F0aW9uL3V0aWwvVGhyZWF0c1Byb3BhZ2F0aW9uUmVzb3VyY2VGYWN0b3J5SW1wbC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9UaHJlYXRzUHJvcGFnYXRpb24vdXRpbC9UaHJlYXRzUHJvcGFnYXRpb25SZXNvdXJjZUZhY3RvcnlJbXBsLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKgogICogICAgCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICoKICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvVGhyZWF0c1Byb3BhZ2F0aW9uL3V0aWwvVGhyZWF0c1Byb3BhZ2F0aW9uUmVzb3VyY2VJbXBsLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvVGhyZWF0c1Byb3BhZ2F0aW9uL3V0aWwvVGhyZWF0c1Byb3BhZ2F0aW9uUmVzb3VyY2VJbXBsLmphdmEKaW5kZXggZjY3NzkyOS4uOTc2MjZmNCAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1RocmVhdHNQcm9wYWdhdGlvbi91dGlsL1RocmVhdHNQcm9wYWdhdGlvblJlc291cmNlSW1wbC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9UaHJlYXRzUHJvcGFnYXRpb24vdXRpbC9UaHJlYXRzUHJvcGFnYXRpb25SZXNvdXJjZUltcGwuamF2YQpAQCAtMyw5ICszLDkgQEAKICAqCiAgKiAgICAKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgKgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9UaHJlYXRzUHJvcGFnYXRpb24vdXRpbC9UaHJlYXRzUHJvcGFnYXRpb25Td2l0Y2guamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9UaHJlYXRzUHJvcGFnYXRpb24vdXRpbC9UaHJlYXRzUHJvcGFnYXRpb25Td2l0Y2guamF2YQppbmRleCAwNjg5OGRiLi5lMGQwMGM5IDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvVGhyZWF0c1Byb3BhZ2F0aW9uL3V0aWwvVGhyZWF0c1Byb3BhZ2F0aW9uU3dpdGNoLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1RocmVhdHNQcm9wYWdhdGlvbi91dGlsL1RocmVhdHNQcm9wYWdhdGlvblN3aXRjaC5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoNCiAgKiAgICANCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoNCiAgKg0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvVGhyZWF0c1Byb3BhZ2F0aW9uL3V0aWwvVGhyZWF0c1Byb3BhZ2F0aW9uWE1MUHJvY2Vzc29yLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL0RlcGVuZGFiaWxpdHkvVGhyZWF0c1Byb3BhZ2F0aW9uL3V0aWwvVGhyZWF0c1Byb3BhZ2F0aW9uWE1MUHJvY2Vzc29yLmphdmEKaW5kZXggYzBkNzM2My4uYzY1MzhjNiAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9EZXBlbmRhYmlsaXR5L1RocmVhdHNQcm9wYWdhdGlvbi91dGlsL1RocmVhdHNQcm9wYWdhdGlvblhNTFByb2Nlc3Nvci5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvRGVwZW5kYWJpbGl0eS9UaHJlYXRzUHJvcGFnYXRpb24vdXRpbC9UaHJlYXRzUHJvcGFnYXRpb25YTUxQcm9jZXNzb3IuamF2YQpAQCAtMyw5ICszLDkgQEAKICAqCiAgKiAgICAKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgKgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvUHJlZGljdGFiaWxpdHkvRGVwbG95bWVudENvbmZpZ3VyYXRpb24vSGFyZHdhcmVCYXNlbGluZS9DSF9Id0J1cy5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9QcmVkaWN0YWJpbGl0eS9EZXBsb3ltZW50Q29uZmlndXJhdGlvbi9IYXJkd2FyZUJhc2VsaW5lL0NIX0h3QnVzLmphdmEKaW5kZXggNTBkMDFlYy4uZDIwMzFlYyAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9QcmVkaWN0YWJpbGl0eS9EZXBsb3ltZW50Q29uZmlndXJhdGlvbi9IYXJkd2FyZUJhc2VsaW5lL0NIX0h3QnVzLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9QcmVkaWN0YWJpbGl0eS9EZXBsb3ltZW50Q29uZmlndXJhdGlvbi9IYXJkd2FyZUJhc2VsaW5lL0NIX0h3QnVzLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKg0KICAqICAgIA0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKg0KICAqDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvUHJlZGljdGFiaWxpdHkvRGVwbG95bWVudENvbmZpZ3VyYXRpb24vSGFyZHdhcmVCYXNlbGluZS9DSF9Id0NvbXB1dGluZ1Jlc291cmNlLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL1ByZWRpY3RhYmlsaXR5L0RlcGxveW1lbnRDb25maWd1cmF0aW9uL0hhcmR3YXJlQmFzZWxpbmUvQ0hfSHdDb21wdXRpbmdSZXNvdXJjZS5qYXZhCmluZGV4IGJiNzg5MTguLjAxZDg4ZjAgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvUHJlZGljdGFiaWxpdHkvRGVwbG95bWVudENvbmZpZ3VyYXRpb24vSGFyZHdhcmVCYXNlbGluZS9DSF9Id0NvbXB1dGluZ1Jlc291cmNlLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9QcmVkaWN0YWJpbGl0eS9EZXBsb3ltZW50Q29uZmlndXJhdGlvbi9IYXJkd2FyZUJhc2VsaW5lL0NIX0h3Q29tcHV0aW5nUmVzb3VyY2UuamF2YQpAQCAtMyw5ICszLDkgQEAKICAqDQogICogICAgDQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqDQogICoNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9QcmVkaWN0YWJpbGl0eS9EZXBsb3ltZW50Q29uZmlndXJhdGlvbi9IYXJkd2FyZUJhc2VsaW5lL0NIX0h3UHJvY2Vzc29yLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL1ByZWRpY3RhYmlsaXR5L0RlcGxveW1lbnRDb25maWd1cmF0aW9uL0hhcmR3YXJlQmFzZWxpbmUvQ0hfSHdQcm9jZXNzb3IuamF2YQppbmRleCBmNDM0NzBlLi44Y2FiNzFmIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL1ByZWRpY3RhYmlsaXR5L0RlcGxveW1lbnRDb25maWd1cmF0aW9uL0hhcmR3YXJlQmFzZWxpbmUvQ0hfSHdQcm9jZXNzb3IuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL1ByZWRpY3RhYmlsaXR5L0RlcGxveW1lbnRDb25maWd1cmF0aW9uL0hhcmR3YXJlQmFzZWxpbmUvQ0hfSHdQcm9jZXNzb3IuamF2YQpAQCAtMyw5ICszLDkgQEAKICAqDQogICogICAgDQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqDQogICoNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9QcmVkaWN0YWJpbGl0eS9EZXBsb3ltZW50Q29uZmlndXJhdGlvbi9IYXJkd2FyZUJhc2VsaW5lL0hhcmR3YXJlQmFzZWxpbmVGYWN0b3J5LmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL1ByZWRpY3RhYmlsaXR5L0RlcGxveW1lbnRDb25maWd1cmF0aW9uL0hhcmR3YXJlQmFzZWxpbmUvSGFyZHdhcmVCYXNlbGluZUZhY3RvcnkuamF2YQppbmRleCBiODMxZGU0Li5kZTZlNGJiIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL1ByZWRpY3RhYmlsaXR5L0RlcGxveW1lbnRDb25maWd1cmF0aW9uL0hhcmR3YXJlQmFzZWxpbmUvSGFyZHdhcmVCYXNlbGluZUZhY3RvcnkuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL1ByZWRpY3RhYmlsaXR5L0RlcGxveW1lbnRDb25maWd1cmF0aW9uL0hhcmR3YXJlQmFzZWxpbmUvSGFyZHdhcmVCYXNlbGluZUZhY3RvcnkuamF2YQpAQCAtMyw5ICszLDkgQEAKICAqCiAgKiAgICAKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgKgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvUHJlZGljdGFiaWxpdHkvRGVwbG95bWVudENvbmZpZ3VyYXRpb24vSGFyZHdhcmVCYXNlbGluZS9IYXJkd2FyZUJhc2VsaW5lUGFja2FnZS5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9QcmVkaWN0YWJpbGl0eS9EZXBsb3ltZW50Q29uZmlndXJhdGlvbi9IYXJkd2FyZUJhc2VsaW5lL0hhcmR3YXJlQmFzZWxpbmVQYWNrYWdlLmphdmEKaW5kZXggYjRjOGY3NS4uNGI2M2RkZiAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9QcmVkaWN0YWJpbGl0eS9EZXBsb3ltZW50Q29uZmlndXJhdGlvbi9IYXJkd2FyZUJhc2VsaW5lL0hhcmR3YXJlQmFzZWxpbmVQYWNrYWdlLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9QcmVkaWN0YWJpbGl0eS9EZXBsb3ltZW50Q29uZmlndXJhdGlvbi9IYXJkd2FyZUJhc2VsaW5lL0hhcmR3YXJlQmFzZWxpbmVQYWNrYWdlLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKgogICogICAgCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICoKICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL1ByZWRpY3RhYmlsaXR5L0RlcGxveW1lbnRDb25maWd1cmF0aW9uL0hhcmR3YXJlQmFzZWxpbmUvaW1wbC9DSF9Id0J1c0ltcGwuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvUHJlZGljdGFiaWxpdHkvRGVwbG95bWVudENvbmZpZ3VyYXRpb24vSGFyZHdhcmVCYXNlbGluZS9pbXBsL0NIX0h3QnVzSW1wbC5qYXZhCmluZGV4IGFhMDBhNGMuLjhlOTk3YTQgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvUHJlZGljdGFiaWxpdHkvRGVwbG95bWVudENvbmZpZ3VyYXRpb24vSGFyZHdhcmVCYXNlbGluZS9pbXBsL0NIX0h3QnVzSW1wbC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvUHJlZGljdGFiaWxpdHkvRGVwbG95bWVudENvbmZpZ3VyYXRpb24vSGFyZHdhcmVCYXNlbGluZS9pbXBsL0NIX0h3QnVzSW1wbC5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoNCiAgKiAgICANCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoNCiAgKg0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL1ByZWRpY3RhYmlsaXR5L0RlcGxveW1lbnRDb25maWd1cmF0aW9uL0hhcmR3YXJlQmFzZWxpbmUvaW1wbC9DSF9Id0NvbXB1dGluZ1Jlc291cmNlSW1wbC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9QcmVkaWN0YWJpbGl0eS9EZXBsb3ltZW50Q29uZmlndXJhdGlvbi9IYXJkd2FyZUJhc2VsaW5lL2ltcGwvQ0hfSHdDb21wdXRpbmdSZXNvdXJjZUltcGwuamF2YQppbmRleCAxNTY2NjNlLi5hNTcxZjEwIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL1ByZWRpY3RhYmlsaXR5L0RlcGxveW1lbnRDb25maWd1cmF0aW9uL0hhcmR3YXJlQmFzZWxpbmUvaW1wbC9DSF9Id0NvbXB1dGluZ1Jlc291cmNlSW1wbC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvUHJlZGljdGFiaWxpdHkvRGVwbG95bWVudENvbmZpZ3VyYXRpb24vSGFyZHdhcmVCYXNlbGluZS9pbXBsL0NIX0h3Q29tcHV0aW5nUmVzb3VyY2VJbXBsLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKg0KICAqICAgIA0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKg0KICAqDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvUHJlZGljdGFiaWxpdHkvRGVwbG95bWVudENvbmZpZ3VyYXRpb24vSGFyZHdhcmVCYXNlbGluZS9pbXBsL0NIX0h3UHJvY2Vzc29ySW1wbC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9QcmVkaWN0YWJpbGl0eS9EZXBsb3ltZW50Q29uZmlndXJhdGlvbi9IYXJkd2FyZUJhc2VsaW5lL2ltcGwvQ0hfSHdQcm9jZXNzb3JJbXBsLmphdmEKaW5kZXggMDcyMmY2My4uNjUyNDYwMiAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9QcmVkaWN0YWJpbGl0eS9EZXBsb3ltZW50Q29uZmlndXJhdGlvbi9IYXJkd2FyZUJhc2VsaW5lL2ltcGwvQ0hfSHdQcm9jZXNzb3JJbXBsLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9QcmVkaWN0YWJpbGl0eS9EZXBsb3ltZW50Q29uZmlndXJhdGlvbi9IYXJkd2FyZUJhc2VsaW5lL2ltcGwvQ0hfSHdQcm9jZXNzb3JJbXBsLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKg0KICAqICAgIA0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKg0KICAqDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvUHJlZGljdGFiaWxpdHkvRGVwbG95bWVudENvbmZpZ3VyYXRpb24vSGFyZHdhcmVCYXNlbGluZS9pbXBsL0hhcmR3YXJlQmFzZWxpbmVGYWN0b3J5SW1wbC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9QcmVkaWN0YWJpbGl0eS9EZXBsb3ltZW50Q29uZmlndXJhdGlvbi9IYXJkd2FyZUJhc2VsaW5lL2ltcGwvSGFyZHdhcmVCYXNlbGluZUZhY3RvcnlJbXBsLmphdmEKaW5kZXggN2Q4ZmM3Yi4uZmVlZGFjYiAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9QcmVkaWN0YWJpbGl0eS9EZXBsb3ltZW50Q29uZmlndXJhdGlvbi9IYXJkd2FyZUJhc2VsaW5lL2ltcGwvSGFyZHdhcmVCYXNlbGluZUZhY3RvcnlJbXBsLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9QcmVkaWN0YWJpbGl0eS9EZXBsb3ltZW50Q29uZmlndXJhdGlvbi9IYXJkd2FyZUJhc2VsaW5lL2ltcGwvSGFyZHdhcmVCYXNlbGluZUZhY3RvcnlJbXBsLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKgogICogICAgCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICoKICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL1ByZWRpY3RhYmlsaXR5L0RlcGxveW1lbnRDb25maWd1cmF0aW9uL0hhcmR3YXJlQmFzZWxpbmUvaW1wbC9IYXJkd2FyZUJhc2VsaW5lUGFja2FnZUltcGwuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvUHJlZGljdGFiaWxpdHkvRGVwbG95bWVudENvbmZpZ3VyYXRpb24vSGFyZHdhcmVCYXNlbGluZS9pbXBsL0hhcmR3YXJlQmFzZWxpbmVQYWNrYWdlSW1wbC5qYXZhCmluZGV4IDdlNzk1MTAuLjQyMDhiNzkgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvUHJlZGljdGFiaWxpdHkvRGVwbG95bWVudENvbmZpZ3VyYXRpb24vSGFyZHdhcmVCYXNlbGluZS9pbXBsL0hhcmR3YXJlQmFzZWxpbmVQYWNrYWdlSW1wbC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvUHJlZGljdGFiaWxpdHkvRGVwbG95bWVudENvbmZpZ3VyYXRpb24vSGFyZHdhcmVCYXNlbGluZS9pbXBsL0hhcmR3YXJlQmFzZWxpbmVQYWNrYWdlSW1wbC5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoKICAqICAgIAogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICAqCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9QcmVkaWN0YWJpbGl0eS9EZXBsb3ltZW50Q29uZmlndXJhdGlvbi9IYXJkd2FyZUJhc2VsaW5lL3V0aWwvSGFyZHdhcmVCYXNlbGluZUFkYXB0ZXJGYWN0b3J5LmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL1ByZWRpY3RhYmlsaXR5L0RlcGxveW1lbnRDb25maWd1cmF0aW9uL0hhcmR3YXJlQmFzZWxpbmUvdXRpbC9IYXJkd2FyZUJhc2VsaW5lQWRhcHRlckZhY3RvcnkuamF2YQppbmRleCBmNjgwZmI4Li44NTkzMDFhIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL1ByZWRpY3RhYmlsaXR5L0RlcGxveW1lbnRDb25maWd1cmF0aW9uL0hhcmR3YXJlQmFzZWxpbmUvdXRpbC9IYXJkd2FyZUJhc2VsaW5lQWRhcHRlckZhY3RvcnkuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL1ByZWRpY3RhYmlsaXR5L0RlcGxveW1lbnRDb25maWd1cmF0aW9uL0hhcmR3YXJlQmFzZWxpbmUvdXRpbC9IYXJkd2FyZUJhc2VsaW5lQWRhcHRlckZhY3RvcnkuamF2YQpAQCAtMyw5ICszLDkgQEAKICAqCiAgKiAgICAKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgKgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvUHJlZGljdGFiaWxpdHkvRGVwbG95bWVudENvbmZpZ3VyYXRpb24vSGFyZHdhcmVCYXNlbGluZS91dGlsL0hhcmR3YXJlQmFzZWxpbmVSZXNvdXJjZUZhY3RvcnlJbXBsLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL1ByZWRpY3RhYmlsaXR5L0RlcGxveW1lbnRDb25maWd1cmF0aW9uL0hhcmR3YXJlQmFzZWxpbmUvdXRpbC9IYXJkd2FyZUJhc2VsaW5lUmVzb3VyY2VGYWN0b3J5SW1wbC5qYXZhCmluZGV4IDM2Zjg5YzQuLjA4N2VhMzMgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvUHJlZGljdGFiaWxpdHkvRGVwbG95bWVudENvbmZpZ3VyYXRpb24vSGFyZHdhcmVCYXNlbGluZS91dGlsL0hhcmR3YXJlQmFzZWxpbmVSZXNvdXJjZUZhY3RvcnlJbXBsLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9QcmVkaWN0YWJpbGl0eS9EZXBsb3ltZW50Q29uZmlndXJhdGlvbi9IYXJkd2FyZUJhc2VsaW5lL3V0aWwvSGFyZHdhcmVCYXNlbGluZVJlc291cmNlRmFjdG9yeUltcGwuamF2YQpAQCAtMyw5ICszLDkgQEAKICAqCiAgKiAgICAKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgKgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvUHJlZGljdGFiaWxpdHkvRGVwbG95bWVudENvbmZpZ3VyYXRpb24vSGFyZHdhcmVCYXNlbGluZS91dGlsL0hhcmR3YXJlQmFzZWxpbmVSZXNvdXJjZUltcGwuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvUHJlZGljdGFiaWxpdHkvRGVwbG95bWVudENvbmZpZ3VyYXRpb24vSGFyZHdhcmVCYXNlbGluZS91dGlsL0hhcmR3YXJlQmFzZWxpbmVSZXNvdXJjZUltcGwuamF2YQppbmRleCA5NWYwMmQ5Li5lMmRhOWE1IDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL1ByZWRpY3RhYmlsaXR5L0RlcGxveW1lbnRDb25maWd1cmF0aW9uL0hhcmR3YXJlQmFzZWxpbmUvdXRpbC9IYXJkd2FyZUJhc2VsaW5lUmVzb3VyY2VJbXBsLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9QcmVkaWN0YWJpbGl0eS9EZXBsb3ltZW50Q29uZmlndXJhdGlvbi9IYXJkd2FyZUJhc2VsaW5lL3V0aWwvSGFyZHdhcmVCYXNlbGluZVJlc291cmNlSW1wbC5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoKICAqICAgIAogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICAqCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9QcmVkaWN0YWJpbGl0eS9EZXBsb3ltZW50Q29uZmlndXJhdGlvbi9IYXJkd2FyZUJhc2VsaW5lL3V0aWwvSGFyZHdhcmVCYXNlbGluZVN3aXRjaC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9QcmVkaWN0YWJpbGl0eS9EZXBsb3ltZW50Q29uZmlndXJhdGlvbi9IYXJkd2FyZUJhc2VsaW5lL3V0aWwvSGFyZHdhcmVCYXNlbGluZVN3aXRjaC5qYXZhCmluZGV4IGE5ODU4ODguLmU3ZWMyNmMgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvUHJlZGljdGFiaWxpdHkvRGVwbG95bWVudENvbmZpZ3VyYXRpb24vSGFyZHdhcmVCYXNlbGluZS91dGlsL0hhcmR3YXJlQmFzZWxpbmVTd2l0Y2guamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL1ByZWRpY3RhYmlsaXR5L0RlcGxveW1lbnRDb25maWd1cmF0aW9uL0hhcmR3YXJlQmFzZWxpbmUvdXRpbC9IYXJkd2FyZUJhc2VsaW5lU3dpdGNoLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKg0KICAqICAgIA0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKg0KICAqDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvUHJlZGljdGFiaWxpdHkvRGVwbG95bWVudENvbmZpZ3VyYXRpb24vSGFyZHdhcmVCYXNlbGluZS91dGlsL0hhcmR3YXJlQmFzZWxpbmVYTUxQcm9jZXNzb3IuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvUHJlZGljdGFiaWxpdHkvRGVwbG95bWVudENvbmZpZ3VyYXRpb24vSGFyZHdhcmVCYXNlbGluZS91dGlsL0hhcmR3YXJlQmFzZWxpbmVYTUxQcm9jZXNzb3IuamF2YQppbmRleCBlY2ViNTM2Li4yMDRiMjExIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL1ByZWRpY3RhYmlsaXR5L0RlcGxveW1lbnRDb25maWd1cmF0aW9uL0hhcmR3YXJlQmFzZWxpbmUvdXRpbC9IYXJkd2FyZUJhc2VsaW5lWE1MUHJvY2Vzc29yLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9QcmVkaWN0YWJpbGl0eS9EZXBsb3ltZW50Q29uZmlndXJhdGlvbi9IYXJkd2FyZUJhc2VsaW5lL3V0aWwvSGFyZHdhcmVCYXNlbGluZVhNTFByb2Nlc3Nvci5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoKICAqICAgIAogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICAqCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9QcmVkaWN0YWJpbGl0eS9SVENvbXBvbmVudE1vZGVsL0NIUnRQb3J0U2xvdC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9QcmVkaWN0YWJpbGl0eS9SVENvbXBvbmVudE1vZGVsL0NIUnRQb3J0U2xvdC5qYXZhCmluZGV4IGIyYzYzMjEuLjhjYjhkNjYgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvUHJlZGljdGFiaWxpdHkvUlRDb21wb25lbnRNb2RlbC9DSFJ0UG9ydFNsb3QuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL1ByZWRpY3RhYmlsaXR5L1JUQ29tcG9uZW50TW9kZWwvQ0hSdFBvcnRTbG90LmphdmEKQEAgLTMsOSArMyw5IEBACiAgKg0KICAqICAgIA0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKg0KICAqDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvUHJlZGljdGFiaWxpdHkvUlRDb21wb25lbnRNb2RlbC9DSFJ0U3BlY2lmaWNhdGlvbi5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9QcmVkaWN0YWJpbGl0eS9SVENvbXBvbmVudE1vZGVsL0NIUnRTcGVjaWZpY2F0aW9uLmphdmEKaW5kZXggZTExZTljYy4uZGY1MmFkZCAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9QcmVkaWN0YWJpbGl0eS9SVENvbXBvbmVudE1vZGVsL0NIUnRTcGVjaWZpY2F0aW9uLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9QcmVkaWN0YWJpbGl0eS9SVENvbXBvbmVudE1vZGVsL0NIUnRTcGVjaWZpY2F0aW9uLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKg0KICAqICAgIA0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKg0KICAqDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvUHJlZGljdGFiaWxpdHkvUlRDb21wb25lbnRNb2RlbC9SVENvbXBvbmVudE1vZGVsRmFjdG9yeS5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9QcmVkaWN0YWJpbGl0eS9SVENvbXBvbmVudE1vZGVsL1JUQ29tcG9uZW50TW9kZWxGYWN0b3J5LmphdmEKaW5kZXggOTFkNTEyMS4uYTc0ODY3NiAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9QcmVkaWN0YWJpbGl0eS9SVENvbXBvbmVudE1vZGVsL1JUQ29tcG9uZW50TW9kZWxGYWN0b3J5LmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9QcmVkaWN0YWJpbGl0eS9SVENvbXBvbmVudE1vZGVsL1JUQ29tcG9uZW50TW9kZWxGYWN0b3J5LmphdmEKQEAgLTMsOSArMyw5IEBACiAgKgogICogICAgCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICoKICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL1ByZWRpY3RhYmlsaXR5L1JUQ29tcG9uZW50TW9kZWwvUlRDb21wb25lbnRNb2RlbFBhY2thZ2UuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvUHJlZGljdGFiaWxpdHkvUlRDb21wb25lbnRNb2RlbC9SVENvbXBvbmVudE1vZGVsUGFja2FnZS5qYXZhCmluZGV4IDkyZGExZjAuLjI4ZTZhODggMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvUHJlZGljdGFiaWxpdHkvUlRDb21wb25lbnRNb2RlbC9SVENvbXBvbmVudE1vZGVsUGFja2FnZS5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvUHJlZGljdGFiaWxpdHkvUlRDb21wb25lbnRNb2RlbC9SVENvbXBvbmVudE1vZGVsUGFja2FnZS5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoKICAqICAgIAogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICAqCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9QcmVkaWN0YWJpbGl0eS9SVENvbXBvbmVudE1vZGVsL1JURGF0YVR5cGVzL0NIX0J1cnN0UGF0dGVybi5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9QcmVkaWN0YWJpbGl0eS9SVENvbXBvbmVudE1vZGVsL1JURGF0YVR5cGVzL0NIX0J1cnN0UGF0dGVybi5qYXZhCmluZGV4IGQyZjFhMjAuLjY4Y2VjN2IgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvUHJlZGljdGFiaWxpdHkvUlRDb21wb25lbnRNb2RlbC9SVERhdGFUeXBlcy9DSF9CdXJzdFBhdHRlcm4uamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL1ByZWRpY3RhYmlsaXR5L1JUQ29tcG9uZW50TW9kZWwvUlREYXRhVHlwZXMvQ0hfQnVyc3RQYXR0ZXJuLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKgogICogICAgCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICoKICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL1ByZWRpY3RhYmlsaXR5L1JUQ29tcG9uZW50TW9kZWwvUlREYXRhVHlwZXMvQ0hfUGVyaW9kaWNQYXR0ZXJuLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL1ByZWRpY3RhYmlsaXR5L1JUQ29tcG9uZW50TW9kZWwvUlREYXRhVHlwZXMvQ0hfUGVyaW9kaWNQYXR0ZXJuLmphdmEKaW5kZXggYTdkYzA4Mi4uMDYzODQ5NCAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9QcmVkaWN0YWJpbGl0eS9SVENvbXBvbmVudE1vZGVsL1JURGF0YVR5cGVzL0NIX1BlcmlvZGljUGF0dGVybi5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvUHJlZGljdGFiaWxpdHkvUlRDb21wb25lbnRNb2RlbC9SVERhdGFUeXBlcy9DSF9QZXJpb2RpY1BhdHRlcm4uamF2YQpAQCAtMyw5ICszLDkgQEAKICAqCiAgKiAgICAKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgKgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvUHJlZGljdGFiaWxpdHkvUlRDb21wb25lbnRNb2RlbC9SVERhdGFUeXBlcy9DSF9TcG9yYWRpY1BhdHRlcm4uamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvUHJlZGljdGFiaWxpdHkvUlRDb21wb25lbnRNb2RlbC9SVERhdGFUeXBlcy9DSF9TcG9yYWRpY1BhdHRlcm4uamF2YQppbmRleCBkOGNlMzA1Li5kOWNlZjIzIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL1ByZWRpY3RhYmlsaXR5L1JUQ29tcG9uZW50TW9kZWwvUlREYXRhVHlwZXMvQ0hfU3BvcmFkaWNQYXR0ZXJuLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9QcmVkaWN0YWJpbGl0eS9SVENvbXBvbmVudE1vZGVsL1JURGF0YVR5cGVzL0NIX1Nwb3JhZGljUGF0dGVybi5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoKICAqICAgIAogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICAqCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9QcmVkaWN0YWJpbGl0eS9SVENvbXBvbmVudE1vZGVsL1JURGF0YVR5cGVzL1JURGF0YVR5cGVzRmFjdG9yeS5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9QcmVkaWN0YWJpbGl0eS9SVENvbXBvbmVudE1vZGVsL1JURGF0YVR5cGVzL1JURGF0YVR5cGVzRmFjdG9yeS5qYXZhCmluZGV4IDY3ZWNkNDIuLmZhM2Y3ZGQgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvUHJlZGljdGFiaWxpdHkvUlRDb21wb25lbnRNb2RlbC9SVERhdGFUeXBlcy9SVERhdGFUeXBlc0ZhY3RvcnkuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL1ByZWRpY3RhYmlsaXR5L1JUQ29tcG9uZW50TW9kZWwvUlREYXRhVHlwZXMvUlREYXRhVHlwZXNGYWN0b3J5LmphdmEKQEAgLTMsOSArMyw5IEBACiAgKgogICogICAgCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICoKICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL1ByZWRpY3RhYmlsaXR5L1JUQ29tcG9uZW50TW9kZWwvUlREYXRhVHlwZXMvUlREYXRhVHlwZXNQYWNrYWdlLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL1ByZWRpY3RhYmlsaXR5L1JUQ29tcG9uZW50TW9kZWwvUlREYXRhVHlwZXMvUlREYXRhVHlwZXNQYWNrYWdlLmphdmEKaW5kZXggNTMxMzdkOS4uZDE3OGU5NyAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9QcmVkaWN0YWJpbGl0eS9SVENvbXBvbmVudE1vZGVsL1JURGF0YVR5cGVzL1JURGF0YVR5cGVzUGFja2FnZS5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvUHJlZGljdGFiaWxpdHkvUlRDb21wb25lbnRNb2RlbC9SVERhdGFUeXBlcy9SVERhdGFUeXBlc1BhY2thZ2UuamF2YQpAQCAtMyw5ICszLDkgQEAKICAqCiAgKiAgICAKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgKgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvUHJlZGljdGFiaWxpdHkvUlRDb21wb25lbnRNb2RlbC9SVERhdGFUeXBlcy9UQV9BcmJpdHJhcnlQYXR0ZXJuLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL1ByZWRpY3RhYmlsaXR5L1JUQ29tcG9uZW50TW9kZWwvUlREYXRhVHlwZXMvVEFfQXJiaXRyYXJ5UGF0dGVybi5qYXZhCmluZGV4IGJlODQ3NDAuLmQ1M2FjZWQgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvUHJlZGljdGFiaWxpdHkvUlRDb21wb25lbnRNb2RlbC9SVERhdGFUeXBlcy9UQV9BcmJpdHJhcnlQYXR0ZXJuLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9QcmVkaWN0YWJpbGl0eS9SVENvbXBvbmVudE1vZGVsL1JURGF0YVR5cGVzL1RBX0FyYml0cmFyeVBhdHRlcm4uamF2YQpAQCAtMyw5ICszLDkgQEAKICAqCiAgKiAgICAKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgKgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvUHJlZGljdGFiaWxpdHkvUlRDb21wb25lbnRNb2RlbC9SVERhdGFUeXBlcy9UQV9QYXR0ZXJuLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL1ByZWRpY3RhYmlsaXR5L1JUQ29tcG9uZW50TW9kZWwvUlREYXRhVHlwZXMvVEFfUGF0dGVybi5qYXZhCmluZGV4IDM1MTg4NmQuLjkwMGI2ZjkgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvUHJlZGljdGFiaWxpdHkvUlRDb21wb25lbnRNb2RlbC9SVERhdGFUeXBlcy9UQV9QYXR0ZXJuLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9QcmVkaWN0YWJpbGl0eS9SVENvbXBvbmVudE1vZGVsL1JURGF0YVR5cGVzL1RBX1BhdHRlcm4uamF2YQpAQCAtMyw5ICszLDkgQEAKICAqCiAgKiAgICAKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgKgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvUHJlZGljdGFiaWxpdHkvUlRDb21wb25lbnRNb2RlbC9SVERhdGFUeXBlcy9pbXBsL0NIX0J1cnN0UGF0dGVybkltcGwuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvUHJlZGljdGFiaWxpdHkvUlRDb21wb25lbnRNb2RlbC9SVERhdGFUeXBlcy9pbXBsL0NIX0J1cnN0UGF0dGVybkltcGwuamF2YQppbmRleCAzNThhNDBmLi4xNjRmZmQxIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL1ByZWRpY3RhYmlsaXR5L1JUQ29tcG9uZW50TW9kZWwvUlREYXRhVHlwZXMvaW1wbC9DSF9CdXJzdFBhdHRlcm5JbXBsLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9QcmVkaWN0YWJpbGl0eS9SVENvbXBvbmVudE1vZGVsL1JURGF0YVR5cGVzL2ltcGwvQ0hfQnVyc3RQYXR0ZXJuSW1wbC5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoKICAqICAgIAogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICAqCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9QcmVkaWN0YWJpbGl0eS9SVENvbXBvbmVudE1vZGVsL1JURGF0YVR5cGVzL2ltcGwvQ0hfUGVyaW9kaWNQYXR0ZXJuSW1wbC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9QcmVkaWN0YWJpbGl0eS9SVENvbXBvbmVudE1vZGVsL1JURGF0YVR5cGVzL2ltcGwvQ0hfUGVyaW9kaWNQYXR0ZXJuSW1wbC5qYXZhCmluZGV4IGVjY2Q0ZDEuLmZlMWQ0ZmMgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvUHJlZGljdGFiaWxpdHkvUlRDb21wb25lbnRNb2RlbC9SVERhdGFUeXBlcy9pbXBsL0NIX1BlcmlvZGljUGF0dGVybkltcGwuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL1ByZWRpY3RhYmlsaXR5L1JUQ29tcG9uZW50TW9kZWwvUlREYXRhVHlwZXMvaW1wbC9DSF9QZXJpb2RpY1BhdHRlcm5JbXBsLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKgogICogICAgCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICoKICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL1ByZWRpY3RhYmlsaXR5L1JUQ29tcG9uZW50TW9kZWwvUlREYXRhVHlwZXMvaW1wbC9DSF9TcG9yYWRpY1BhdHRlcm5JbXBsLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL1ByZWRpY3RhYmlsaXR5L1JUQ29tcG9uZW50TW9kZWwvUlREYXRhVHlwZXMvaW1wbC9DSF9TcG9yYWRpY1BhdHRlcm5JbXBsLmphdmEKaW5kZXggZGNhNWZkMS4uZWNkOTcyNyAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9QcmVkaWN0YWJpbGl0eS9SVENvbXBvbmVudE1vZGVsL1JURGF0YVR5cGVzL2ltcGwvQ0hfU3BvcmFkaWNQYXR0ZXJuSW1wbC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvUHJlZGljdGFiaWxpdHkvUlRDb21wb25lbnRNb2RlbC9SVERhdGFUeXBlcy9pbXBsL0NIX1Nwb3JhZGljUGF0dGVybkltcGwuamF2YQpAQCAtMyw5ICszLDkgQEAKICAqCiAgKiAgICAKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgKgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvUHJlZGljdGFiaWxpdHkvUlRDb21wb25lbnRNb2RlbC9SVERhdGFUeXBlcy9pbXBsL1JURGF0YVR5cGVzRmFjdG9yeUltcGwuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvUHJlZGljdGFiaWxpdHkvUlRDb21wb25lbnRNb2RlbC9SVERhdGFUeXBlcy9pbXBsL1JURGF0YVR5cGVzRmFjdG9yeUltcGwuamF2YQppbmRleCA0NDQwM2NjLi5hZTE5MDEyIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL1ByZWRpY3RhYmlsaXR5L1JUQ29tcG9uZW50TW9kZWwvUlREYXRhVHlwZXMvaW1wbC9SVERhdGFUeXBlc0ZhY3RvcnlJbXBsLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9QcmVkaWN0YWJpbGl0eS9SVENvbXBvbmVudE1vZGVsL1JURGF0YVR5cGVzL2ltcGwvUlREYXRhVHlwZXNGYWN0b3J5SW1wbC5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoKICAqICAgIAogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICAqCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9QcmVkaWN0YWJpbGl0eS9SVENvbXBvbmVudE1vZGVsL1JURGF0YVR5cGVzL2ltcGwvUlREYXRhVHlwZXNQYWNrYWdlSW1wbC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9QcmVkaWN0YWJpbGl0eS9SVENvbXBvbmVudE1vZGVsL1JURGF0YVR5cGVzL2ltcGwvUlREYXRhVHlwZXNQYWNrYWdlSW1wbC5qYXZhCmluZGV4IDc4NzMyMTAuLjZjYWIxYzMgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvUHJlZGljdGFiaWxpdHkvUlRDb21wb25lbnRNb2RlbC9SVERhdGFUeXBlcy9pbXBsL1JURGF0YVR5cGVzUGFja2FnZUltcGwuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL1ByZWRpY3RhYmlsaXR5L1JUQ29tcG9uZW50TW9kZWwvUlREYXRhVHlwZXMvaW1wbC9SVERhdGFUeXBlc1BhY2thZ2VJbXBsLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKgogICogICAgCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICoKICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL1ByZWRpY3RhYmlsaXR5L1JUQ29tcG9uZW50TW9kZWwvUlREYXRhVHlwZXMvaW1wbC9UQV9BcmJpdHJhcnlQYXR0ZXJuSW1wbC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9QcmVkaWN0YWJpbGl0eS9SVENvbXBvbmVudE1vZGVsL1JURGF0YVR5cGVzL2ltcGwvVEFfQXJiaXRyYXJ5UGF0dGVybkltcGwuamF2YQppbmRleCAzYWQxZmZjLi4wZGM3OTM2IDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL1ByZWRpY3RhYmlsaXR5L1JUQ29tcG9uZW50TW9kZWwvUlREYXRhVHlwZXMvaW1wbC9UQV9BcmJpdHJhcnlQYXR0ZXJuSW1wbC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvUHJlZGljdGFiaWxpdHkvUlRDb21wb25lbnRNb2RlbC9SVERhdGFUeXBlcy9pbXBsL1RBX0FyYml0cmFyeVBhdHRlcm5JbXBsLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKgogICogICAgCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICoKICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL1ByZWRpY3RhYmlsaXR5L1JUQ29tcG9uZW50TW9kZWwvUlREYXRhVHlwZXMvaW1wbC9UQV9QYXR0ZXJuSW1wbC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9QcmVkaWN0YWJpbGl0eS9SVENvbXBvbmVudE1vZGVsL1JURGF0YVR5cGVzL2ltcGwvVEFfUGF0dGVybkltcGwuamF2YQppbmRleCA3NDJlMmZiLi42ZjMxODY0IDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL1ByZWRpY3RhYmlsaXR5L1JUQ29tcG9uZW50TW9kZWwvUlREYXRhVHlwZXMvaW1wbC9UQV9QYXR0ZXJuSW1wbC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvUHJlZGljdGFiaWxpdHkvUlRDb21wb25lbnRNb2RlbC9SVERhdGFUeXBlcy9pbXBsL1RBX1BhdHRlcm5JbXBsLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKgogICogICAgCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICoKICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL1ByZWRpY3RhYmlsaXR5L1JUQ29tcG9uZW50TW9kZWwvUlREYXRhVHlwZXMvdXRpbC9SVERhdGFUeXBlc0FkYXB0ZXJGYWN0b3J5LmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL1ByZWRpY3RhYmlsaXR5L1JUQ29tcG9uZW50TW9kZWwvUlREYXRhVHlwZXMvdXRpbC9SVERhdGFUeXBlc0FkYXB0ZXJGYWN0b3J5LmphdmEKaW5kZXggYTYwZWQyYS4uNjJlOGY1YSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9QcmVkaWN0YWJpbGl0eS9SVENvbXBvbmVudE1vZGVsL1JURGF0YVR5cGVzL3V0aWwvUlREYXRhVHlwZXNBZGFwdGVyRmFjdG9yeS5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvUHJlZGljdGFiaWxpdHkvUlRDb21wb25lbnRNb2RlbC9SVERhdGFUeXBlcy91dGlsL1JURGF0YVR5cGVzQWRhcHRlckZhY3RvcnkuamF2YQpAQCAtMyw5ICszLDkgQEAKICAqCiAgKiAgICAKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgKgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvUHJlZGljdGFiaWxpdHkvUlRDb21wb25lbnRNb2RlbC9SVERhdGFUeXBlcy91dGlsL1JURGF0YVR5cGVzU3dpdGNoLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL1ByZWRpY3RhYmlsaXR5L1JUQ29tcG9uZW50TW9kZWwvUlREYXRhVHlwZXMvdXRpbC9SVERhdGFUeXBlc1N3aXRjaC5qYXZhCmluZGV4IDNkOWQxMjguLmMzMzJiZjUgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvUHJlZGljdGFiaWxpdHkvUlRDb21wb25lbnRNb2RlbC9SVERhdGFUeXBlcy91dGlsL1JURGF0YVR5cGVzU3dpdGNoLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9QcmVkaWN0YWJpbGl0eS9SVENvbXBvbmVudE1vZGVsL1JURGF0YVR5cGVzL3V0aWwvUlREYXRhVHlwZXNTd2l0Y2guamF2YQpAQCAtMyw5ICszLDkgQEAKICAqCiAgKiAgICAKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgKgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvUHJlZGljdGFiaWxpdHkvUlRDb21wb25lbnRNb2RlbC9pbXBsL0NIUnRQb3J0U2xvdEltcGwuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvUHJlZGljdGFiaWxpdHkvUlRDb21wb25lbnRNb2RlbC9pbXBsL0NIUnRQb3J0U2xvdEltcGwuamF2YQppbmRleCAwYzE3MTI0Li5mN2Q3ZmI2IDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL1ByZWRpY3RhYmlsaXR5L1JUQ29tcG9uZW50TW9kZWwvaW1wbC9DSFJ0UG9ydFNsb3RJbXBsLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9QcmVkaWN0YWJpbGl0eS9SVENvbXBvbmVudE1vZGVsL2ltcGwvQ0hSdFBvcnRTbG90SW1wbC5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoNCiAgKiAgICANCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoNCiAgKg0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL1ByZWRpY3RhYmlsaXR5L1JUQ29tcG9uZW50TW9kZWwvaW1wbC9DSFJ0U3BlY2lmaWNhdGlvbkltcGwuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvUHJlZGljdGFiaWxpdHkvUlRDb21wb25lbnRNb2RlbC9pbXBsL0NIUnRTcGVjaWZpY2F0aW9uSW1wbC5qYXZhCmluZGV4IGI5ZGQzYTYuLjI1MDhjMzIgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvUHJlZGljdGFiaWxpdHkvUlRDb21wb25lbnRNb2RlbC9pbXBsL0NIUnRTcGVjaWZpY2F0aW9uSW1wbC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvUHJlZGljdGFiaWxpdHkvUlRDb21wb25lbnRNb2RlbC9pbXBsL0NIUnRTcGVjaWZpY2F0aW9uSW1wbC5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoNCiAgKiAgICANCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoNCiAgKg0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL1ByZWRpY3RhYmlsaXR5L1JUQ29tcG9uZW50TW9kZWwvaW1wbC9SVENvbXBvbmVudE1vZGVsRmFjdG9yeUltcGwuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvUHJlZGljdGFiaWxpdHkvUlRDb21wb25lbnRNb2RlbC9pbXBsL1JUQ29tcG9uZW50TW9kZWxGYWN0b3J5SW1wbC5qYXZhCmluZGV4IDA0ZDA3MWUuLmZmM2M1ZGIgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvUHJlZGljdGFiaWxpdHkvUlRDb21wb25lbnRNb2RlbC9pbXBsL1JUQ29tcG9uZW50TW9kZWxGYWN0b3J5SW1wbC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvUHJlZGljdGFiaWxpdHkvUlRDb21wb25lbnRNb2RlbC9pbXBsL1JUQ29tcG9uZW50TW9kZWxGYWN0b3J5SW1wbC5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoKICAqICAgIAogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICAqCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9QcmVkaWN0YWJpbGl0eS9SVENvbXBvbmVudE1vZGVsL2ltcGwvUlRDb21wb25lbnRNb2RlbFBhY2thZ2VJbXBsLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL1ByZWRpY3RhYmlsaXR5L1JUQ29tcG9uZW50TW9kZWwvaW1wbC9SVENvbXBvbmVudE1vZGVsUGFja2FnZUltcGwuamF2YQppbmRleCAyODEzYWM2Li5mMWQ3YjcwIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL1ByZWRpY3RhYmlsaXR5L1JUQ29tcG9uZW50TW9kZWwvaW1wbC9SVENvbXBvbmVudE1vZGVsUGFja2FnZUltcGwuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL1ByZWRpY3RhYmlsaXR5L1JUQ29tcG9uZW50TW9kZWwvaW1wbC9SVENvbXBvbmVudE1vZGVsUGFja2FnZUltcGwuamF2YQpAQCAtMyw5ICszLDkgQEAKICAqCiAgKiAgICAKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgKgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvUHJlZGljdGFiaWxpdHkvUlRDb21wb25lbnRNb2RlbC91dGlsL1JUQ29tcG9uZW50TW9kZWxBZGFwdGVyRmFjdG9yeS5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9QcmVkaWN0YWJpbGl0eS9SVENvbXBvbmVudE1vZGVsL3V0aWwvUlRDb21wb25lbnRNb2RlbEFkYXB0ZXJGYWN0b3J5LmphdmEKaW5kZXggNjNlOWZjMy4uYWNkZTJhZCAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9QcmVkaWN0YWJpbGl0eS9SVENvbXBvbmVudE1vZGVsL3V0aWwvUlRDb21wb25lbnRNb2RlbEFkYXB0ZXJGYWN0b3J5LmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9QcmVkaWN0YWJpbGl0eS9SVENvbXBvbmVudE1vZGVsL3V0aWwvUlRDb21wb25lbnRNb2RlbEFkYXB0ZXJGYWN0b3J5LmphdmEKQEAgLTMsOSArMyw5IEBACiAgKgogICogICAgCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICoKICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL1ByZWRpY3RhYmlsaXR5L1JUQ29tcG9uZW50TW9kZWwvdXRpbC9SVENvbXBvbmVudE1vZGVsUmVzb3VyY2VGYWN0b3J5SW1wbC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9QcmVkaWN0YWJpbGl0eS9SVENvbXBvbmVudE1vZGVsL3V0aWwvUlRDb21wb25lbnRNb2RlbFJlc291cmNlRmFjdG9yeUltcGwuamF2YQppbmRleCBmZWY4ODM4Li5kNGE2YzE1IDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL1ByZWRpY3RhYmlsaXR5L1JUQ29tcG9uZW50TW9kZWwvdXRpbC9SVENvbXBvbmVudE1vZGVsUmVzb3VyY2VGYWN0b3J5SW1wbC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvUHJlZGljdGFiaWxpdHkvUlRDb21wb25lbnRNb2RlbC91dGlsL1JUQ29tcG9uZW50TW9kZWxSZXNvdXJjZUZhY3RvcnlJbXBsLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKgogICogICAgCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICoKICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL1ByZWRpY3RhYmlsaXR5L1JUQ29tcG9uZW50TW9kZWwvdXRpbC9SVENvbXBvbmVudE1vZGVsUmVzb3VyY2VJbXBsLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL1ByZWRpY3RhYmlsaXR5L1JUQ29tcG9uZW50TW9kZWwvdXRpbC9SVENvbXBvbmVudE1vZGVsUmVzb3VyY2VJbXBsLmphdmEKaW5kZXggZTMxNDgzZC4uM2Y5MGVhMSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9QcmVkaWN0YWJpbGl0eS9SVENvbXBvbmVudE1vZGVsL3V0aWwvUlRDb21wb25lbnRNb2RlbFJlc291cmNlSW1wbC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvUHJlZGljdGFiaWxpdHkvUlRDb21wb25lbnRNb2RlbC91dGlsL1JUQ29tcG9uZW50TW9kZWxSZXNvdXJjZUltcGwuamF2YQpAQCAtMyw5ICszLDkgQEAKICAqCiAgKiAgICAKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgKgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvUHJlZGljdGFiaWxpdHkvUlRDb21wb25lbnRNb2RlbC91dGlsL1JUQ29tcG9uZW50TW9kZWxTd2l0Y2guamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvUHJlZGljdGFiaWxpdHkvUlRDb21wb25lbnRNb2RlbC91dGlsL1JUQ29tcG9uZW50TW9kZWxTd2l0Y2guamF2YQppbmRleCAxNWJhZTMxLi4zNDgzZjQ0IDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL1ByZWRpY3RhYmlsaXR5L1JUQ29tcG9uZW50TW9kZWwvdXRpbC9SVENvbXBvbmVudE1vZGVsU3dpdGNoLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9QcmVkaWN0YWJpbGl0eS9SVENvbXBvbmVudE1vZGVsL3V0aWwvUlRDb21wb25lbnRNb2RlbFN3aXRjaC5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoNCiAgKiAgICANCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoNCiAgKg0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL1ByZWRpY3RhYmlsaXR5L1JUQ29tcG9uZW50TW9kZWwvdXRpbC9SVENvbXBvbmVudE1vZGVsWE1MUHJvY2Vzc29yLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL1ByZWRpY3RhYmlsaXR5L1JUQ29tcG9uZW50TW9kZWwvdXRpbC9SVENvbXBvbmVudE1vZGVsWE1MUHJvY2Vzc29yLmphdmEKaW5kZXggZDM5OWUwNS4uMDA2ZTUwNiAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9QcmVkaWN0YWJpbGl0eS9SVENvbXBvbmVudE1vZGVsL3V0aWwvUlRDb21wb25lbnRNb2RlbFhNTFByb2Nlc3Nvci5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvUHJlZGljdGFiaWxpdHkvUlRDb21wb25lbnRNb2RlbC91dGlsL1JUQ29tcG9uZW50TW9kZWxYTUxQcm9jZXNzb3IuamF2YQpAQCAtMyw5ICszLDkgQEAKICAqCiAgKiAgICAKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgKgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvU2FmZXR5L0NyaXRpY2FsaXR5SW50ZXJmYWNlU3BlY2lmaWNhdGlvbi5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9TYWZldHkvQ3JpdGljYWxpdHlJbnRlcmZhY2VTcGVjaWZpY2F0aW9uLmphdmEKaW5kZXggMTdmYWZhMi4uYWQwMzU5ZiAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9TYWZldHkvQ3JpdGljYWxpdHlJbnRlcmZhY2VTcGVjaWZpY2F0aW9uLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9TYWZldHkvQ3JpdGljYWxpdHlJbnRlcmZhY2VTcGVjaWZpY2F0aW9uLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKiAgKg0KICAqICAqICAgIA0KICAqICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCi0gKiAgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiAgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCiAgKiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqICAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKiAgKg0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KIC8qKg0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvU2FmZXR5L0NyaXRpY2FsaXR5TGV2ZWwuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvU2FmZXR5L0NyaXRpY2FsaXR5TGV2ZWwuamF2YQppbmRleCA5NzhjYTkyLi4yYjFlOThlIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL1NhZmV0eS9Dcml0aWNhbGl0eUxldmVsLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9TYWZldHkvQ3JpdGljYWxpdHlMZXZlbC5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICogICoNCiAgKiAgKiAgICANCiAgKiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiAgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqICAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICogICoNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCiAvKioNCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL1NhZmV0eS9Dcml0aWNhbGl0eVNwZWNpZmljYXRpb24uamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvU2FmZXR5L0NyaXRpY2FsaXR5U3BlY2lmaWNhdGlvbi5qYXZhCmluZGV4IDViNGY2MTYuLmRkZDYwZTkgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvU2FmZXR5L0NyaXRpY2FsaXR5U3BlY2lmaWNhdGlvbi5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvU2FmZXR5L0NyaXRpY2FsaXR5U3BlY2lmaWNhdGlvbi5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICogICoNCiAgKiAgKiAgICANCiAgKiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiAgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqICAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICogICoNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCiAvKioNCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL1NhZmV0eS9TYWZldHlGYWN0b3J5LmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL1NhZmV0eS9TYWZldHlGYWN0b3J5LmphdmEKaW5kZXggZmNkMjIzMi4uMjZkYmZkZSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9TYWZldHkvU2FmZXR5RmFjdG9yeS5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvU2FmZXR5L1NhZmV0eUZhY3RvcnkuamF2YQpAQCAtMyw5ICszLDkgQEAKICAqICAqDQogICogICogICAgDQogICogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KLSAqICAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqICAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KICAqICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiAgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqICAqDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQogLyoqDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9TYWZldHkvU2FmZXR5UGFja2FnZS5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9TYWZldHkvU2FmZXR5UGFja2FnZS5qYXZhCmluZGV4IGY1ODg4ZWYuLmNkMjU4MGIgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvU2FmZXR5L1NhZmV0eVBhY2thZ2UuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL1NhZmV0eS9TYWZldHlQYWNrYWdlLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKiAgKg0KICAqICAqICAgIA0KICAqICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCi0gKiAgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiAgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCiAgKiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqICAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKiAgKg0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KIC8qKg0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvU2FmZXR5L2ltcGwvQ3JpdGljYWxpdHlJbnRlcmZhY2VTcGVjaWZpY2F0aW9uSW1wbC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9TYWZldHkvaW1wbC9Dcml0aWNhbGl0eUludGVyZmFjZVNwZWNpZmljYXRpb25JbXBsLmphdmEKaW5kZXggYTZiNzZjZC4uM2JiYTZlZiAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9TYWZldHkvaW1wbC9Dcml0aWNhbGl0eUludGVyZmFjZVNwZWNpZmljYXRpb25JbXBsLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9TYWZldHkvaW1wbC9Dcml0aWNhbGl0eUludGVyZmFjZVNwZWNpZmljYXRpb25JbXBsLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKiAgKg0KICAqICAqICAgIA0KICAqICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCi0gKiAgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiAgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCiAgKiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqICAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKiAgKg0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KIC8qKg0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvU2FmZXR5L2ltcGwvQ3JpdGljYWxpdHlMZXZlbEltcGwuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvU2FmZXR5L2ltcGwvQ3JpdGljYWxpdHlMZXZlbEltcGwuamF2YQppbmRleCA0Mzg3ZmVmLi40ZmY3ZGI5IDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL1NhZmV0eS9pbXBsL0NyaXRpY2FsaXR5TGV2ZWxJbXBsLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9TYWZldHkvaW1wbC9Dcml0aWNhbGl0eUxldmVsSW1wbC5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICogICoNCiAgKiAgKiAgICANCiAgKiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiAgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqICAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICogICoNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCiAvKioNCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL1NhZmV0eS9pbXBsL0NyaXRpY2FsaXR5U3BlY2lmaWNhdGlvbkltcGwuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvU2FmZXR5L2ltcGwvQ3JpdGljYWxpdHlTcGVjaWZpY2F0aW9uSW1wbC5qYXZhCmluZGV4IDRiM2NmZjcuLjg3YTlmMmUgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvU2FmZXR5L2ltcGwvQ3JpdGljYWxpdHlTcGVjaWZpY2F0aW9uSW1wbC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvU2FmZXR5L2ltcGwvQ3JpdGljYWxpdHlTcGVjaWZpY2F0aW9uSW1wbC5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICogICoNCiAgKiAgKiAgICANCiAgKiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiAgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqICAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICogICoNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCiAvKioNCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL1NhZmV0eS9pbXBsL1NhZmV0eUZhY3RvcnlJbXBsLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL1NhZmV0eS9pbXBsL1NhZmV0eUZhY3RvcnlJbXBsLmphdmEKaW5kZXggOTBhYjBhZC4uNzlhZTgzYyAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9TYWZldHkvaW1wbC9TYWZldHlGYWN0b3J5SW1wbC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvU2FmZXR5L2ltcGwvU2FmZXR5RmFjdG9yeUltcGwuamF2YQpAQCAtMyw5ICszLDkgQEAKICAqICAqDQogICogICogICAgDQogICogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KLSAqICAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqICAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KICAqICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiAgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqICAqDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQogLyoqDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9TYWZldHkvaW1wbC9TYWZldHlQYWNrYWdlSW1wbC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9TYWZldHkvaW1wbC9TYWZldHlQYWNrYWdlSW1wbC5qYXZhCmluZGV4IGZhMjk0YTYuLjI4ZTVkMDkgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvU2FmZXR5L2ltcGwvU2FmZXR5UGFja2FnZUltcGwuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL1NhZmV0eS9pbXBsL1NhZmV0eVBhY2thZ2VJbXBsLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKiAgKg0KICAqICAqICAgIA0KICAqICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCi0gKiAgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiAgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCiAgKiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqICAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKiAgKg0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KIC8qKg0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvU2FmZXR5L3V0aWwvU2FmZXR5QWRhcHRlckZhY3RvcnkuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvU2FmZXR5L3V0aWwvU2FmZXR5QWRhcHRlckZhY3RvcnkuamF2YQppbmRleCBlYWY0ZjQwLi43ZTFlMDBjIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL1NhZmV0eS91dGlsL1NhZmV0eUFkYXB0ZXJGYWN0b3J5LmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9TYWZldHkvdXRpbC9TYWZldHlBZGFwdGVyRmFjdG9yeS5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICogICoNCiAgKiAgKiAgICANCiAgKiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiAgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqICAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICogICoNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCiAvKioNCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL1NhZmV0eS91dGlsL1NhZmV0eVN3aXRjaC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9TYWZldHkvdXRpbC9TYWZldHlTd2l0Y2guamF2YQppbmRleCAwNGIzYmQyLi5mYmM5N2FjIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL1NhZmV0eS91dGlsL1NhZmV0eVN3aXRjaC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvU2FmZXR5L3V0aWwvU2FmZXR5U3dpdGNoLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKiAgKg0KICAqICAqICAgIA0KICAqICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCi0gKiAgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiAgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCiAgKiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqICAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKiAgKg0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KIC8qKg0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvU3lzdGVtTW9kZWwvU1RTL0h1bWFuLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL1N5c3RlbU1vZGVsL1NUUy9IdW1hbi5qYXZhCmluZGV4IDVhYzJmMGYuLjA5ZjI1OTUgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvU3lzdGVtTW9kZWwvU1RTL0h1bWFuLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9TeXN0ZW1Nb2RlbC9TVFMvSHVtYW4uamF2YQpAQCAtMyw5ICszLDkgQEAKICAqDQogICogICAgDQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqDQogICoNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9TeXN0ZW1Nb2RlbC9TVFMvU1RTRmFjdG9yeS5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9TeXN0ZW1Nb2RlbC9TVFMvU1RTRmFjdG9yeS5qYXZhCmluZGV4IDIwYzM2MTIuLjlhMTlkOGYgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvU3lzdGVtTW9kZWwvU1RTL1NUU0ZhY3RvcnkuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL1N5c3RlbU1vZGVsL1NUUy9TVFNGYWN0b3J5LmphdmEKQEAgLTMsOSArMyw5IEBACiAgKgogICogICAgCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICoKICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL1N5c3RlbU1vZGVsL1NUUy9TVFNQYWNrYWdlLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL1N5c3RlbU1vZGVsL1NUUy9TVFNQYWNrYWdlLmphdmEKaW5kZXggYzk3MWQ2NC4uYjE1ZjgwZiAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9TeXN0ZW1Nb2RlbC9TVFMvU1RTUGFja2FnZS5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvU3lzdGVtTW9kZWwvU1RTL1NUU1BhY2thZ2UuamF2YQpAQCAtMyw5ICszLDkgQEAKICAqCiAgKiAgICAKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgKgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvU3lzdGVtTW9kZWwvU1RTL1RlY2hub2xvZ2ljYWwuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvU3lzdGVtTW9kZWwvU1RTL1RlY2hub2xvZ2ljYWwuamF2YQppbmRleCA5ODUzMWIzLi4yNWVkOTZiIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL1N5c3RlbU1vZGVsL1NUUy9UZWNobm9sb2dpY2FsLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9TeXN0ZW1Nb2RlbC9TVFMvVGVjaG5vbG9naWNhbC5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoNCiAgKiAgICANCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoNCiAgKg0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL1N5c3RlbU1vZGVsL1NUUy9UaW1lUHJlc3N1cmUuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvU3lzdGVtTW9kZWwvU1RTL1RpbWVQcmVzc3VyZS5qYXZhCmluZGV4IDAxZmI4NTQuLmIyMjVlOWMgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvU3lzdGVtTW9kZWwvU1RTL1RpbWVQcmVzc3VyZS5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvU3lzdGVtTW9kZWwvU1RTL1RpbWVQcmVzc3VyZS5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICogICoKICAqICAqICAgIAogICogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisgKiAgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICAqICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiAgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorICogICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICAqICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIC8qKgpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9TeXN0ZW1Nb2RlbC9TVFMvaW1wbC9IdW1hbkltcGwuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvU3lzdGVtTW9kZWwvU1RTL2ltcGwvSHVtYW5JbXBsLmphdmEKaW5kZXggMzQyNThlZi4uOGIyZTkzMCAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9TeXN0ZW1Nb2RlbC9TVFMvaW1wbC9IdW1hbkltcGwuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL1N5c3RlbU1vZGVsL1NUUy9pbXBsL0h1bWFuSW1wbC5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoNCiAgKiAgICANCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoNCiAgKg0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL1N5c3RlbU1vZGVsL1NUUy9pbXBsL1NUU0ZhY3RvcnlJbXBsLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL1N5c3RlbU1vZGVsL1NUUy9pbXBsL1NUU0ZhY3RvcnlJbXBsLmphdmEKaW5kZXggZDRhNjQyYS4uNjJhZjliMiAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9TeXN0ZW1Nb2RlbC9TVFMvaW1wbC9TVFNGYWN0b3J5SW1wbC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvU3lzdGVtTW9kZWwvU1RTL2ltcGwvU1RTRmFjdG9yeUltcGwuamF2YQpAQCAtMyw5ICszLDkgQEAKICAqCiAgKiAgICAKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgKgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvU3lzdGVtTW9kZWwvU1RTL2ltcGwvU1RTUGFja2FnZUltcGwuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvU3lzdGVtTW9kZWwvU1RTL2ltcGwvU1RTUGFja2FnZUltcGwuamF2YQppbmRleCAwNzIwYzg2Li44MTdmN2VjIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL1N5c3RlbU1vZGVsL1NUUy9pbXBsL1NUU1BhY2thZ2VJbXBsLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9TeXN0ZW1Nb2RlbC9TVFMvaW1wbC9TVFNQYWNrYWdlSW1wbC5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoKICAqICAgIAogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICAqCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9TeXN0ZW1Nb2RlbC9TVFMvaW1wbC9UZWNobm9sb2dpY2FsSW1wbC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9TeXN0ZW1Nb2RlbC9TVFMvaW1wbC9UZWNobm9sb2dpY2FsSW1wbC5qYXZhCmluZGV4IDIyZjhmODEuLjFkN2RhZDggMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvU3lzdGVtTW9kZWwvU1RTL2ltcGwvVGVjaG5vbG9naWNhbEltcGwuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL1N5c3RlbU1vZGVsL1NUUy9pbXBsL1RlY2hub2xvZ2ljYWxJbXBsLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKg0KICAqICAgIA0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKg0KICAqDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvU3lzdGVtTW9kZWwvU1RTL2ltcGwvVGltZVByZXNzdXJlSW1wbC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9TeXN0ZW1Nb2RlbC9TVFMvaW1wbC9UaW1lUHJlc3N1cmVJbXBsLmphdmEKaW5kZXggYzkwNjE4Zi4uZTI2YmUwYiAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9TeXN0ZW1Nb2RlbC9TVFMvaW1wbC9UaW1lUHJlc3N1cmVJbXBsLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9TeXN0ZW1Nb2RlbC9TVFMvaW1wbC9UaW1lUHJlc3N1cmVJbXBsLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKiAgKg0KICAqICAqICAgIA0KICAqICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCi0gKiAgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiAgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCiAgKiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqICAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKiAgKg0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KIC8qKg0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvU3lzdGVtTW9kZWwvU1RTL3V0aWwvU1RTQWRhcHRlckZhY3RvcnkuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvU3lzdGVtTW9kZWwvU1RTL3V0aWwvU1RTQWRhcHRlckZhY3RvcnkuamF2YQppbmRleCAyYTM1MzhiLi5kMDY5ZjljIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL1N5c3RlbU1vZGVsL1NUUy91dGlsL1NUU0FkYXB0ZXJGYWN0b3J5LmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9TeXN0ZW1Nb2RlbC9TVFMvdXRpbC9TVFNBZGFwdGVyRmFjdG9yeS5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoKICAqICAgIAogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICAqCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9TeXN0ZW1Nb2RlbC9TVFMvdXRpbC9TVFNTd2l0Y2guamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvU3lzdGVtTW9kZWwvU1RTL3V0aWwvU1RTU3dpdGNoLmphdmEKaW5kZXggNTlmOWMwOC4uMmVkNmU1NCAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9TeXN0ZW1Nb2RlbC9TVFMvdXRpbC9TVFNTd2l0Y2guamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL1N5c3RlbU1vZGVsL1NUUy91dGlsL1NUU1N3aXRjaC5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoNCiAgKiAgICANCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoNCiAgKg0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL2NoZXNzbWxwcm9maWxlRmFjdG9yeS5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9jaGVzc21scHJvZmlsZUZhY3RvcnkuamF2YQppbmRleCBhMGE2ZGFiLi42NWRiN2RiIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL2NoZXNzbWxwcm9maWxlRmFjdG9yeS5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvY2hlc3NtbHByb2ZpbGVGYWN0b3J5LmphdmEKQEAgLTMsOSArMyw5IEBACiAgKgogICogICAgCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICoKICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL2NoZXNzbWxwcm9maWxlUGFja2FnZS5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9jaGVzc21scHJvZmlsZVBhY2thZ2UuamF2YQppbmRleCA4ZGY2MDQ1Li5kYzIxMjk4IDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL2NoZXNzbWxwcm9maWxlUGFja2FnZS5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvY2hlc3NtbHByb2ZpbGVQYWNrYWdlLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKgogICogICAgCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICoKICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL2R1bW15LmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL2R1bW15LmphdmEKaW5kZXggYWE1Y2Q5ZC4uMWU4ODFjNCAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9kdW1teS5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvZHVtbXkuamF2YQpAQCAtMyw5ICszLDkgQEAKICAqCiAgKiAgICAKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgKgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvaW1wbC9jaGVzc21scHJvZmlsZUZhY3RvcnlJbXBsLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL2ltcGwvY2hlc3NtbHByb2ZpbGVGYWN0b3J5SW1wbC5qYXZhCmluZGV4IGRhYmM4NmQuLjlmMWRlMjAgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvaW1wbC9jaGVzc21scHJvZmlsZUZhY3RvcnlJbXBsLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9pbXBsL2NoZXNzbWxwcm9maWxlRmFjdG9yeUltcGwuamF2YQpAQCAtMyw5ICszLDkgQEAKICAqCiAgKiAgICAKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgKgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvaW1wbC9jaGVzc21scHJvZmlsZVBhY2thZ2VJbXBsLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL2ltcGwvY2hlc3NtbHByb2ZpbGVQYWNrYWdlSW1wbC5qYXZhCmluZGV4IDAzZDk0Y2UuLmUwMmNiZDcgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvaW1wbC9jaGVzc21scHJvZmlsZVBhY2thZ2VJbXBsLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9pbXBsL2NoZXNzbWxwcm9maWxlUGFja2FnZUltcGwuamF2YQpAQCAtMyw5ICszLDkgQEAKICAqCiAgKiAgICAKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgKgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvaW1wbC9kdW1teUltcGwuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvaW1wbC9kdW1teUltcGwuamF2YQppbmRleCAyN2JmZDljLi5mZThlOTNkIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL2ltcGwvZHVtbXlJbXBsLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS9pbXBsL2R1bW15SW1wbC5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoNCiAgKiAgICANCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoNCiAgKg0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL3V0aWwvQ29uc3RhbnRzLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL3V0aWwvQ29uc3RhbnRzLmphdmEKaW5kZXggOTFkZjZhNy4uMGU1YmVjOCAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS91dGlsL0NvbnN0YW50cy5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvdXRpbC9Db25zdGFudHMuamF2YQpAQCAtMyw5ICszLDkgQEAKICAqCiAgKiAgICAKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgKgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvdXRpbC9jaGVzc21scHJvZmlsZUFkYXB0ZXJGYWN0b3J5LmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NoZXNzbWxwcm9maWxlL3V0aWwvY2hlc3NtbHByb2ZpbGVBZGFwdGVyRmFjdG9yeS5qYXZhCmluZGV4IGVlOTNhMzQuLmRlM2EyMmUgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvdXRpbC9jaGVzc21scHJvZmlsZUFkYXB0ZXJGYWN0b3J5LmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS91dGlsL2NoZXNzbWxwcm9maWxlQWRhcHRlckZhY3RvcnkuamF2YQpAQCAtMyw5ICszLDkgQEAKICAqCiAgKiAgICAKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgKgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2hlc3NtbHByb2ZpbGUvdXRpbC9jaGVzc21scHJvZmlsZVN3aXRjaC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS91dGlsL2NoZXNzbWxwcm9maWxlU3dpdGNoLmphdmEKaW5kZXggM2E4MjQ1OS4uNjdhZjAwNSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS91dGlsL2NoZXNzbWxwcm9maWxlU3dpdGNoLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jaGVzc21scHJvZmlsZS91dGlsL2NoZXNzbWxwcm9maWxlU3dpdGNoLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKg0KICAqICAgIA0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKg0KICAqDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNsZWFuQ0V4cG9ydGVyL2Fib3V0Lmh0bWwgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jbGVhbkNFeHBvcnRlci9hYm91dC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE2NGY3ODEKLS0tIC9kZXYvbnVsbAorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jbGVhbkNFeHBvcnRlci9hYm91dC5odG1sCkBAIC0wLDAgKzEsMzYgQEAKKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFN0cmljdC8vRU4iCisgICAgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXN0cmljdC5kdGQiPgorPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xIiAvPgorPHRpdGxlPkFib3V0PC90aXRsZT4KKzwvaGVhZD4KKzxib2R5IGxhbmc9IkVOLVVTIj4KKwk8aDI+QWJvdXQgVGhpcyBDb250ZW50PC9oMj4KKworCTxwPk5vdmVtYmVyIDMwLCAyMDE3PC9wPgorCTxoMz5MaWNlbnNlPC9oMz4KKworCTxwPgorCQlUaGUgRWNsaXBzZSBGb3VuZGF0aW9uIG1ha2VzIGF2YWlsYWJsZSBhbGwgY29udGVudCBpbiB0aGlzIHBsdWctaW4KKwkJKCZxdW90O0NvbnRlbnQmcXVvdDspLiBVbmxlc3Mgb3RoZXJ3aXNlIGluZGljYXRlZCBiZWxvdywgdGhlIENvbnRlbnQKKwkJaXMgcHJvdmlkZWQgdG8geW91IHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRWNsaXBzZQorCQlQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDIuMCAoJnF1b3Q7RVBMJnF1b3Q7KS4gQSBjb3B5IG9mIHRoZSBFUEwgaXMKKwkJYXZhaWxhYmxlIGF0IDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMCI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wPC9hPi4KKwkJRm9yIHB1cnBvc2VzIG9mIHRoZSBFUEwsICZxdW90O1Byb2dyYW0mcXVvdDsgd2lsbCBtZWFuIHRoZSBDb250ZW50LgorCTwvcD4KKworCTxwPgorCQlJZiB5b3UgZGlkIG5vdCByZWNlaXZlIHRoaXMgQ29udGVudCBkaXJlY3RseSBmcm9tIHRoZSBFY2xpcHNlCisJCUZvdW5kYXRpb24sIHRoZSBDb250ZW50IGlzIGJlaW5nIHJlZGlzdHJpYnV0ZWQgYnkgYW5vdGhlciBwYXJ0eQorCQkoJnF1b3Q7UmVkaXN0cmlidXRvciZxdW90OykgYW5kIGRpZmZlcmVudCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBtYXkKKwkJYXBwbHkgdG8geW91ciB1c2Ugb2YgYW55IG9iamVjdCBjb2RlIGluIHRoZSBDb250ZW50LiBDaGVjayB0aGUKKwkJUmVkaXN0cmlidXRvcidzIGxpY2Vuc2UgdGhhdCB3YXMgcHJvdmlkZWQgd2l0aCB0aGUgQ29udGVudC4gSWYgbm8gc3VjaAorCQlsaWNlbnNlIGV4aXN0cywgY29udGFjdCB0aGUgUmVkaXN0cmlidXRvci4gVW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQKKwkJYmVsb3csIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRVBMIHN0aWxsIGFwcGx5IHRvIGFueSBzb3VyY2UKKwkJY29kZSBpbiB0aGUgQ29udGVudCBhbmQgc3VjaCBzb3VyY2UgY29kZSBtYXkgYmUgb2J0YWluZWQgYXQgPGEKKwkJCWhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnPC9hPi4KKwk8L3A+CisKKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jbGVhbkNFeHBvcnRlci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NsZWFuQ0V4cG9ydGVyL3VpL2NvbW1hbmRzL0V4cG9ydE5vbWluYWxTTXNUb0NsZWFuQ0ZpbGVzQ29tbWFuZC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2xlYW5DRXhwb3J0ZXIvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jbGVhbkNFeHBvcnRlci91aS9jb21tYW5kcy9FeHBvcnROb21pbmFsU01zVG9DbGVhbkNGaWxlc0NvbW1hbmQuamF2YQppbmRleCBmNGZiNjUxLi5jZmY4MjE2IDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jbGVhbkNFeHBvcnRlci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NsZWFuQ0V4cG9ydGVyL3VpL2NvbW1hbmRzL0V4cG9ydE5vbWluYWxTTXNUb0NsZWFuQ0ZpbGVzQ29tbWFuZC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNsZWFuQ0V4cG9ydGVyL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2xlYW5DRXhwb3J0ZXIvdWkvY29tbWFuZHMvRXhwb3J0Tm9taW5hbFNNc1RvQ2xlYW5DRmlsZXNDb21tYW5kLmphdmEKQEAgLTEsOSArMSw5IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIENvcHlyaWdodCAoQykgMjAxNyBGb25kYXppb25lIEJydW5vIEtlc3NsZXIuDQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqICANCiAgKiBDb250cmlidXRvcnM6DQogICogICBBbGJlcnRvIERlYmlhc2kgLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jbGVhbkNFeHBvcnRlci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NsZWFuQ0V4cG9ydGVyL3VpL2NvbW1hbmRzL0V4cG9ydFNlbGVjdGVkTm9taW5hbFNNc1RvQ2xlYW5DRmlsZXNDb21tYW5kLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jbGVhbkNFeHBvcnRlci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NsZWFuQ0V4cG9ydGVyL3VpL2NvbW1hbmRzL0V4cG9ydFNlbGVjdGVkTm9taW5hbFNNc1RvQ2xlYW5DRmlsZXNDb21tYW5kLmphdmEKaW5kZXggZWJhMzFhOC4uZmEzNTEwNCAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2xlYW5DRXhwb3J0ZXIvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jbGVhbkNFeHBvcnRlci91aS9jb21tYW5kcy9FeHBvcnRTZWxlY3RlZE5vbWluYWxTTXNUb0NsZWFuQ0ZpbGVzQ29tbWFuZC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNsZWFuQ0V4cG9ydGVyL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2xlYW5DRXhwb3J0ZXIvdWkvY29tbWFuZHMvRXhwb3J0U2VsZWN0ZWROb21pbmFsU01zVG9DbGVhbkNGaWxlc0NvbW1hbmQuamF2YQpAQCAtMSw5ICsxLDkgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogQ29weXJpZ2h0IChDKSAyMDE3IEZvbmRhemlvbmUgQnJ1bm8gS2Vzc2xlci4NCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICogIA0KICAqIENvbnRyaWJ1dG9yczoNCiAgKiAgIEFsYmVydG8gRGViaWFzaSAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbg0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNsZWFuQ0V4cG9ydGVyL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2xlYW5DRXhwb3J0ZXIvdWkvc2VydmljZXMvQ2xlYW5DRXhwb3J0U2VydmljZVVJLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jbGVhbkNFeHBvcnRlci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NsZWFuQ0V4cG9ydGVyL3VpL3NlcnZpY2VzL0NsZWFuQ0V4cG9ydFNlcnZpY2VVSS5qYXZhCmluZGV4IDcyNDJhZjYuLmVhZjI4OGMgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNsZWFuQ0V4cG9ydGVyL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY2xlYW5DRXhwb3J0ZXIvdWkvc2VydmljZXMvQ2xlYW5DRXhwb3J0U2VydmljZVVJLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY2xlYW5DRXhwb3J0ZXIvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jbGVhbkNFeHBvcnRlci91aS9zZXJ2aWNlcy9DbGVhbkNFeHBvcnRTZXJ2aWNlVUkuamF2YQpAQCAtMSw5ICsxLDkgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogQ29weXJpZ2h0IChDKSAyMDE3IEZvbmRhemlvbmUgQnJ1bm8gS2Vzc2xlci4NCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICogIA0KICAqIENvbnRyaWJ1dG9yczoNCiAgKiAgIEFsYmVydG8gRGViaWFzaSAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbg0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvZGVnZW4uYWRhL2Fib3V0Lmh0bWwgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb2RlZ2VuLmFkYS9hYm91dC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE2NGY3ODEKLS0tIC9kZXYvbnVsbAorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb2RlZ2VuLmFkYS9hYm91dC5odG1sCkBAIC0wLDAgKzEsMzYgQEAKKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFN0cmljdC8vRU4iCisgICAgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXN0cmljdC5kdGQiPgorPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xIiAvPgorPHRpdGxlPkFib3V0PC90aXRsZT4KKzwvaGVhZD4KKzxib2R5IGxhbmc9IkVOLVVTIj4KKwk8aDI+QWJvdXQgVGhpcyBDb250ZW50PC9oMj4KKworCTxwPk5vdmVtYmVyIDMwLCAyMDE3PC9wPgorCTxoMz5MaWNlbnNlPC9oMz4KKworCTxwPgorCQlUaGUgRWNsaXBzZSBGb3VuZGF0aW9uIG1ha2VzIGF2YWlsYWJsZSBhbGwgY29udGVudCBpbiB0aGlzIHBsdWctaW4KKwkJKCZxdW90O0NvbnRlbnQmcXVvdDspLiBVbmxlc3Mgb3RoZXJ3aXNlIGluZGljYXRlZCBiZWxvdywgdGhlIENvbnRlbnQKKwkJaXMgcHJvdmlkZWQgdG8geW91IHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRWNsaXBzZQorCQlQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDIuMCAoJnF1b3Q7RVBMJnF1b3Q7KS4gQSBjb3B5IG9mIHRoZSBFUEwgaXMKKwkJYXZhaWxhYmxlIGF0IDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMCI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wPC9hPi4KKwkJRm9yIHB1cnBvc2VzIG9mIHRoZSBFUEwsICZxdW90O1Byb2dyYW0mcXVvdDsgd2lsbCBtZWFuIHRoZSBDb250ZW50LgorCTwvcD4KKworCTxwPgorCQlJZiB5b3UgZGlkIG5vdCByZWNlaXZlIHRoaXMgQ29udGVudCBkaXJlY3RseSBmcm9tIHRoZSBFY2xpcHNlCisJCUZvdW5kYXRpb24sIHRoZSBDb250ZW50IGlzIGJlaW5nIHJlZGlzdHJpYnV0ZWQgYnkgYW5vdGhlciBwYXJ0eQorCQkoJnF1b3Q7UmVkaXN0cmlidXRvciZxdW90OykgYW5kIGRpZmZlcmVudCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBtYXkKKwkJYXBwbHkgdG8geW91ciB1c2Ugb2YgYW55IG9iamVjdCBjb2RlIGluIHRoZSBDb250ZW50LiBDaGVjayB0aGUKKwkJUmVkaXN0cmlidXRvcidzIGxpY2Vuc2UgdGhhdCB3YXMgcHJvdmlkZWQgd2l0aCB0aGUgQ29udGVudC4gSWYgbm8gc3VjaAorCQlsaWNlbnNlIGV4aXN0cywgY29udGFjdCB0aGUgUmVkaXN0cmlidXRvci4gVW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQKKwkJYmVsb3csIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRVBMIHN0aWxsIGFwcGx5IHRvIGFueSBzb3VyY2UKKwkJY29kZSBpbiB0aGUgQ29udGVudCBhbmQgc3VjaCBzb3VyY2UgY29kZSBtYXkgYmUgb2J0YWluZWQgYXQgPGEKKwkJCWhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnPC9hPi4KKwk8L3A+CisKKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb2RlZ2VuLmFkYS9idWlsZC5wcm9wZXJ0aWVzIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29kZWdlbi5hZGEvYnVpbGQucHJvcGVydGllcwppbmRleCA0YWRjNGY2Li41ODI2NmNjIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb2RlZ2VuLmFkYS9idWlsZC5wcm9wZXJ0aWVzCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvZGVnZW4uYWRhL2J1aWxkLnByb3BlcnRpZXMKQEAgLTMsOSArMyw5IEBACiAjICAqCiAjICAqICAgIAogIyAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0jICAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorIyAgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICMgICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSMgICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyMgICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICMgICoKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIHNvdXJjZS4uID0gc3JjLwpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29kZWdlbi5hZGEvc3JjLWxpYi9zcmMvY3BhL2NvbnRhaW5lcl9wcm90ZWN0aW9uLmFkYiBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvZGVnZW4uYWRhL3NyYy1saWIvc3JjL2NwYS9jb250YWluZXJfcHJvdGVjdGlvbi5hZGIKaW5kZXggYWNlZTBiYy4uMjM3OTJiNSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29kZWdlbi5hZGEvc3JjLWxpYi9zcmMvY3BhL2NvbnRhaW5lcl9wcm90ZWN0aW9uLmFkYgorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb2RlZ2VuLmFkYS9zcmMtbGliL3NyYy9jcGEvY29udGFpbmVyX3Byb3RlY3Rpb24uYWRiCkBAIC05LDcgKzksNyBAQAogLS0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAgLS0KIC0tIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgIC0tCiAtLSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0ICAgICAtLQotLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAKZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvZGVnZW4uYWRhL3NyYy1saWIvc3JjL2NwYS9jb250YWluZXJfcHJvdGVjdGlvbi5hZHMgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb2RlZ2VuLmFkYS9zcmMtbGliL3NyYy9jcGEvY29udGFpbmVyX3Byb3RlY3Rpb24uYWRzCmluZGV4IDI1ZDM1MmIuLjVmMmM1YjkgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvZGVnZW4uYWRhL3NyYy1saWIvc3JjL2NwYS9jb250YWluZXJfcHJvdGVjdGlvbi5hZHMKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29kZWdlbi5hZGEvc3JjLWxpYi9zcmMvY3BhL2NvbnRhaW5lcl9wcm90ZWN0aW9uLmFkcwpAQCAtOSw3ICs5LDcgQEAKIC0tIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgIC0tCiAtLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlICAtLQogLS0gdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCAgICAgLS0KLS0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogd2l0aCBTeXN0ZW07CmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb2RlZ2VuLmFkYS9zcmMtbGliL3NyYy9kYXRhU3RydWN0dXJlL2RhdGFfc3RydWN0dXJlLmFkYiBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvZGVnZW4uYWRhL3NyYy1saWIvc3JjL2RhdGFTdHJ1Y3R1cmUvZGF0YV9zdHJ1Y3R1cmUuYWRiCmluZGV4IDNhMmE0ODguLjQyNTc5MzkgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvZGVnZW4uYWRhL3NyYy1saWIvc3JjL2RhdGFTdHJ1Y3R1cmUvZGF0YV9zdHJ1Y3R1cmUuYWRiCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvZGVnZW4uYWRhL3NyYy1saWIvc3JjL2RhdGFTdHJ1Y3R1cmUvZGF0YV9zdHJ1Y3R1cmUuYWRiCkBAIC05LDcgKzksNyBAQAogLS0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAgLS0KIC0tIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgIC0tCiAtLSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0ICAgICAtLQotLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAtLXdpdGggQWRhLlRleHRfSU87IHVzZSBBZGEuVGV4dF9JTzsKZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvZGVnZW4uYWRhL3NyYy1saWIvc3JjL2RhdGFTdHJ1Y3R1cmUvZGF0YV9zdHJ1Y3R1cmUuYWRzIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29kZWdlbi5hZGEvc3JjLWxpYi9zcmMvZGF0YVN0cnVjdHVyZS9kYXRhX3N0cnVjdHVyZS5hZHMKaW5kZXggODEyYzBmMC4uYjA5NzkzNSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29kZWdlbi5hZGEvc3JjLWxpYi9zcmMvZGF0YVN0cnVjdHVyZS9kYXRhX3N0cnVjdHVyZS5hZHMKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29kZWdlbi5hZGEvc3JjLWxpYi9zcmMvZGF0YVN0cnVjdHVyZS9kYXRhX3N0cnVjdHVyZS5hZHMKQEAgLTksNyArOSw3IEBACiAtLSBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzICAtLQogLS0gYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAgLS0KIC0tIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgICAgIC0tCi0tLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIApkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29kZWdlbi5hZGEvc3JjLWxpYi9zcmMvZGF0YVN0cnVjdHVyZS9zeXN0ZW1fdGltZS5hZHMgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb2RlZ2VuLmFkYS9zcmMtbGliL3NyYy9kYXRhU3RydWN0dXJlL3N5c3RlbV90aW1lLmFkcwppbmRleCAzYjM0YzQyLi5iZWM4ZDlmIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb2RlZ2VuLmFkYS9zcmMtbGliL3NyYy9kYXRhU3RydWN0dXJlL3N5c3RlbV90aW1lLmFkcworKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb2RlZ2VuLmFkYS9zcmMtbGliL3NyYy9kYXRhU3RydWN0dXJlL3N5c3RlbV90aW1lLmFkcwpAQCAtOSw3ICs5LDcgQEAKIC0tIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgIC0tCiAtLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlICAtLQogLS0gdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCAgICAgLS0KLS0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogd2l0aCBBZGEuUmVhbF9UaW1lOwpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29kZWdlbi5hZGEvc3JjLWxpYi9zcmMvZGF0YVN0cnVjdHVyZS9zeXN0ZW1fdHlwZXMuYWRiIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29kZWdlbi5hZGEvc3JjLWxpYi9zcmMvZGF0YVN0cnVjdHVyZS9zeXN0ZW1fdHlwZXMuYWRiCmluZGV4IDNmNThlMWIuLjdhNWYzYzAgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvZGVnZW4uYWRhL3NyYy1saWIvc3JjL2RhdGFTdHJ1Y3R1cmUvc3lzdGVtX3R5cGVzLmFkYgorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb2RlZ2VuLmFkYS9zcmMtbGliL3NyYy9kYXRhU3RydWN0dXJlL3N5c3RlbV90eXBlcy5hZGIKQEAgLTksNyArOSw3IEBACiAtLSBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzICAtLQogLS0gYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAgLS0KIC0tIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgICAgIC0tCi0tLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIHBhY2thZ2UgYm9keSBTeXN0ZW1fVHlwZXMgaXMKZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvZGVnZW4uYWRhL3NyYy1saWIvc3JjL2RhdGFTdHJ1Y3R1cmUvc3lzdGVtX3R5cGVzLmFkcyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvZGVnZW4uYWRhL3NyYy1saWIvc3JjL2RhdGFTdHJ1Y3R1cmUvc3lzdGVtX3R5cGVzLmFkcwppbmRleCBiY2EwOWNjLi42OGMyNGY2IDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb2RlZ2VuLmFkYS9zcmMtbGliL3NyYy9kYXRhU3RydWN0dXJlL3N5c3RlbV90eXBlcy5hZHMKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29kZWdlbi5hZGEvc3JjLWxpYi9zcmMvZGF0YVN0cnVjdHVyZS9zeXN0ZW1fdHlwZXMuYWRzCkBAIC05LDcgKzksNyBAQAogLS0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAgLS0KIC0tIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgIC0tCiAtLSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0ICAgICAtLQotLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAKZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvZGVnZW4uYWRhL3NyYy1saWIvc3JjL2RhdGFTdHJ1Y3R1cmUvdGFza19hdHRyaWJ1dGVzLmFkcyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvZGVnZW4uYWRhL3NyYy1saWIvc3JjL2RhdGFTdHJ1Y3R1cmUvdGFza19hdHRyaWJ1dGVzLmFkcwppbmRleCBhYTA2YjljLi5hYzlmN2JjIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb2RlZ2VuLmFkYS9zcmMtbGliL3NyYy9kYXRhU3RydWN0dXJlL3Rhc2tfYXR0cmlidXRlcy5hZHMKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29kZWdlbi5hZGEvc3JjLWxpYi9zcmMvZGF0YVN0cnVjdHVyZS90YXNrX2F0dHJpYnV0ZXMuYWRzCkBAIC05LDcgKzksNyBAQAogLS0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAgLS0KIC0tIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgIC0tCiAtLSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0ICAgICAtLQotLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAKZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvZGVnZW4uYWRhL3NyYy1saWIvc3JjL3Rhc2svY3ljbGljX3Rhc2suYWRiIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29kZWdlbi5hZGEvc3JjLWxpYi9zcmMvdGFzay9jeWNsaWNfdGFzay5hZGIKaW5kZXggM2ZhMWFiYy4uYjE2N2IwMCAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29kZWdlbi5hZGEvc3JjLWxpYi9zcmMvdGFzay9jeWNsaWNfdGFzay5hZGIKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29kZWdlbi5hZGEvc3JjLWxpYi9zcmMvdGFzay9jeWNsaWNfdGFzay5hZGIKQEAgLTksNyArOSw3IEBACiAtLSBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzICAtLQogLS0gYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAgLS0KIC0tIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgICAgIC0tCi0tLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIHdpdGggU3lzdGVtX1RpbWU7CmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb2RlZ2VuLmFkYS9zcmMtbGliL3NyYy90YXNrL2N5Y2xpY190YXNrLmFkcyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvZGVnZW4uYWRhL3NyYy1saWIvc3JjL3Rhc2svY3ljbGljX3Rhc2suYWRzCmluZGV4IGExYjczNGMuLjcyMTg4OGUgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvZGVnZW4uYWRhL3NyYy1saWIvc3JjL3Rhc2svY3ljbGljX3Rhc2suYWRzCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvZGVnZW4uYWRhL3NyYy1saWIvc3JjL3Rhc2svY3ljbGljX3Rhc2suYWRzCkBAIC05LDcgKzksNyBAQAogLS0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAgLS0KIC0tIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgIC0tCiAtLSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0ICAgICAtLQotLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAKZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvZGVnZW4uYWRhL3NyYy1saWIvc3JjL3Rhc2svY3ljbGljX3Rhc2tfbW9uaXRvcmVkLmFkYiBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvZGVnZW4uYWRhL3NyYy1saWIvc3JjL3Rhc2svY3ljbGljX3Rhc2tfbW9uaXRvcmVkLmFkYgppbmRleCBkNmU1M2ExLi40NzY2MWRmIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb2RlZ2VuLmFkYS9zcmMtbGliL3NyYy90YXNrL2N5Y2xpY190YXNrX21vbml0b3JlZC5hZGIKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29kZWdlbi5hZGEvc3JjLWxpYi9zcmMvdGFzay9jeWNsaWNfdGFza19tb25pdG9yZWQuYWRiCkBAIC05LDcgKzksNyBAQAogLS0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAgLS0KIC0tIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgIC0tCiAtLSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0ICAgICAtLQotLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiB3aXRoIFN5c3RlbV9UaW1lOwpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29kZWdlbi5hZGEvc3JjLWxpYi9zcmMvdGFzay9jeWNsaWNfdGFza19tb25pdG9yZWQuYWRzIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29kZWdlbi5hZGEvc3JjLWxpYi9zcmMvdGFzay9jeWNsaWNfdGFza19tb25pdG9yZWQuYWRzCmluZGV4IDM2MjdkMWEuLjVjMGI4YWYgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvZGVnZW4uYWRhL3NyYy1saWIvc3JjL3Rhc2svY3ljbGljX3Rhc2tfbW9uaXRvcmVkLmFkcworKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb2RlZ2VuLmFkYS9zcmMtbGliL3NyYy90YXNrL2N5Y2xpY190YXNrX21vbml0b3JlZC5hZHMKQEAgLTksNyArOSw3IEBACiAtLSBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzICAtLQogLS0gYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAgLS0KIC0tIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgICAgIC0tCi0tLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIApkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29kZWdlbi5hZGEvc3JjLWxpYi9zcmMvdGFzay9jeWNsaWNfdGFza19tb25pdG9yZWRfcnR2ZXJpZmljYXRpb24uYWRiIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29kZWdlbi5hZGEvc3JjLWxpYi9zcmMvdGFzay9jeWNsaWNfdGFza19tb25pdG9yZWRfcnR2ZXJpZmljYXRpb24uYWRiCmluZGV4IGE4MzNiY2MuLmU4ZTNmY2QgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvZGVnZW4uYWRhL3NyYy1saWIvc3JjL3Rhc2svY3ljbGljX3Rhc2tfbW9uaXRvcmVkX3J0dmVyaWZpY2F0aW9uLmFkYgorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb2RlZ2VuLmFkYS9zcmMtbGliL3NyYy90YXNrL2N5Y2xpY190YXNrX21vbml0b3JlZF9ydHZlcmlmaWNhdGlvbi5hZGIKQEAgLTksNyArOSw3IEBACiAtLSBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzICAtLQogLS0gYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAgLS0KIC0tIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgICAgIC0tCi0tLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIHdpdGggU3lzdGVtX1RpbWU7CmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb2RlZ2VuLmFkYS9zcmMtbGliL3NyYy90YXNrL2N5Y2xpY190YXNrX21vbml0b3JlZF9ydHZlcmlmaWNhdGlvbi5hZHMgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb2RlZ2VuLmFkYS9zcmMtbGliL3NyYy90YXNrL2N5Y2xpY190YXNrX21vbml0b3JlZF9ydHZlcmlmaWNhdGlvbi5hZHMKaW5kZXggMzYzYTM1OC4uNTg4NWEzMCAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29kZWdlbi5hZGEvc3JjLWxpYi9zcmMvdGFzay9jeWNsaWNfdGFza19tb25pdG9yZWRfcnR2ZXJpZmljYXRpb24uYWRzCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvZGVnZW4uYWRhL3NyYy1saWIvc3JjL3Rhc2svY3ljbGljX3Rhc2tfbW9uaXRvcmVkX3J0dmVyaWZpY2F0aW9uLmFkcwpAQCAtOSw3ICs5LDcgQEAKIC0tIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgIC0tCiAtLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlICAtLQogLS0gdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCAgICAgLS0KLS0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb2RlZ2VuLmFkYS9zcmMtbGliL3NyYy90YXNrL2N5Y2xpY190YXNrX3J0dmVyaWZpY2F0aW9uLmFkYiBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvZGVnZW4uYWRhL3NyYy1saWIvc3JjL3Rhc2svY3ljbGljX3Rhc2tfcnR2ZXJpZmljYXRpb24uYWRiCmluZGV4IGU3NTg5MzkuLmI4ODc2OGUgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvZGVnZW4uYWRhL3NyYy1saWIvc3JjL3Rhc2svY3ljbGljX3Rhc2tfcnR2ZXJpZmljYXRpb24uYWRiCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvZGVnZW4uYWRhL3NyYy1saWIvc3JjL3Rhc2svY3ljbGljX3Rhc2tfcnR2ZXJpZmljYXRpb24uYWRiCkBAIC05LDcgKzksNyBAQAogLS0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAgLS0KIC0tIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgIC0tCiAtLSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0ICAgICAtLQotLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiB3aXRoIFN5c3RlbV9UaW1lOwpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29kZWdlbi5hZGEvc3JjLWxpYi9zcmMvdGFzay9jeWNsaWNfdGFza19ydHZlcmlmaWNhdGlvbi5hZHMgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb2RlZ2VuLmFkYS9zcmMtbGliL3NyYy90YXNrL2N5Y2xpY190YXNrX3J0dmVyaWZpY2F0aW9uLmFkcwppbmRleCA1NTkzNjBhLi40NGQ0NGM0IDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb2RlZ2VuLmFkYS9zcmMtbGliL3NyYy90YXNrL2N5Y2xpY190YXNrX3J0dmVyaWZpY2F0aW9uLmFkcworKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb2RlZ2VuLmFkYS9zcmMtbGliL3NyYy90YXNrL2N5Y2xpY190YXNrX3J0dmVyaWZpY2F0aW9uLmFkcwpAQCAtOSw3ICs5LDcgQEAKIC0tIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgIC0tCiAtLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlICAtLQogLS0gdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCAgICAgLS0KLS0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb2RlZ2VuLmFkYS9zcmMtbGliL3NyYy90YXNrL21pZGRsZXdhcmUvcmVtb3RlX21zZ19zZXJ2ZXJfdGFzay5hZGIgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb2RlZ2VuLmFkYS9zcmMtbGliL3NyYy90YXNrL21pZGRsZXdhcmUvcmVtb3RlX21zZ19zZXJ2ZXJfdGFzay5hZGIKaW5kZXggNWUyMDIxZC4uMDVmMTVlZSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29kZWdlbi5hZGEvc3JjLWxpYi9zcmMvdGFzay9taWRkbGV3YXJlL3JlbW90ZV9tc2dfc2VydmVyX3Rhc2suYWRiCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvZGVnZW4uYWRhL3NyYy1saWIvc3JjL3Rhc2svbWlkZGxld2FyZS9yZW1vdGVfbXNnX3NlcnZlcl90YXNrLmFkYgpAQCAtOSw3ICs5LDcgQEAKIC0tIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgIC0tCiAtLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlICAtLQogLS0gdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCAgICAgLS0KLS0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogd2l0aCBTeXN0ZW1fVGltZTsKZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvZGVnZW4uYWRhL3NyYy1saWIvc3JjL3Rhc2svbWlkZGxld2FyZS9yZW1vdGVfbXNnX3NlcnZlcl90YXNrLmFkcyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvZGVnZW4uYWRhL3NyYy1saWIvc3JjL3Rhc2svbWlkZGxld2FyZS9yZW1vdGVfbXNnX3NlcnZlcl90YXNrLmFkcwppbmRleCAxMTM0YWZlLi5hODM5YjQxIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb2RlZ2VuLmFkYS9zcmMtbGliL3NyYy90YXNrL21pZGRsZXdhcmUvcmVtb3RlX21zZ19zZXJ2ZXJfdGFzay5hZHMKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29kZWdlbi5hZGEvc3JjLWxpYi9zcmMvdGFzay9taWRkbGV3YXJlL3JlbW90ZV9tc2dfc2VydmVyX3Rhc2suYWRzCkBAIC05LDcgKzksNyBAQAogLS0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAgLS0KIC0tIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgIC0tCiAtLSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0ICAgICAtLQotLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiB3aXRoIFN5c3RlbTsKZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvZGVnZW4uYWRhL3NyYy1saWIvc3JjL3Rhc2svbXVsdGlfYWN0aXZpdHlfY3ljbGljX3Rhc2suYWRiIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29kZWdlbi5hZGEvc3JjLWxpYi9zcmMvdGFzay9tdWx0aV9hY3Rpdml0eV9jeWNsaWNfdGFzay5hZGIKaW5kZXggZjg4YTRmMS4uZjk3MzA0ZiAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29kZWdlbi5hZGEvc3JjLWxpYi9zcmMvdGFzay9tdWx0aV9hY3Rpdml0eV9jeWNsaWNfdGFzay5hZGIKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29kZWdlbi5hZGEvc3JjLWxpYi9zcmMvdGFzay9tdWx0aV9hY3Rpdml0eV9jeWNsaWNfdGFzay5hZGIKQEAgLTksNyArOSw3IEBACiAtLSBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzICAtLQogLS0gYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAgLS0KIC0tIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgICAgIC0tCi0tLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIHdpdGggU3lzdGVtX1RpbWU7CmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb2RlZ2VuLmFkYS9zcmMtbGliL3NyYy90YXNrL211bHRpX2FjdGl2aXR5X2N5Y2xpY190YXNrLmFkcyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvZGVnZW4uYWRhL3NyYy1saWIvc3JjL3Rhc2svbXVsdGlfYWN0aXZpdHlfY3ljbGljX3Rhc2suYWRzCmluZGV4IDczNjhiZGMuLjkxNDAxZDIgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvZGVnZW4uYWRhL3NyYy1saWIvc3JjL3Rhc2svbXVsdGlfYWN0aXZpdHlfY3ljbGljX3Rhc2suYWRzCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvZGVnZW4uYWRhL3NyYy1saWIvc3JjL3Rhc2svbXVsdGlfYWN0aXZpdHlfY3ljbGljX3Rhc2suYWRzCkBAIC05LDcgKzksNyBAQAogLS0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAgLS0KIC0tIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgIC0tCiAtLSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0ICAgICAtLQotLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiB3aXRoIFN5c3RlbTsKZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvZGVnZW4uYWRhL3NyYy1saWIvc3JjL3Rhc2svc3BvcmFkaWNfdGFzay5hZGIgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb2RlZ2VuLmFkYS9zcmMtbGliL3NyYy90YXNrL3Nwb3JhZGljX3Rhc2suYWRiCmluZGV4IGU5MTcxOTIuLmNhZmM1YzMgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvZGVnZW4uYWRhL3NyYy1saWIvc3JjL3Rhc2svc3BvcmFkaWNfdGFzay5hZGIKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29kZWdlbi5hZGEvc3JjLWxpYi9zcmMvdGFzay9zcG9yYWRpY190YXNrLmFkYgpAQCAtOSw3ICs5LDcgQEAKIC0tIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgIC0tCiAtLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlICAtLQogLS0gdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCAgICAgLS0KLS0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogd2l0aCBTeXN0ZW1fVGltZTsKZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvZGVnZW4uYWRhL3NyYy1saWIvc3JjL3Rhc2svc3BvcmFkaWNfdGFzay5hZHMgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb2RlZ2VuLmFkYS9zcmMtbGliL3NyYy90YXNrL3Nwb3JhZGljX3Rhc2suYWRzCmluZGV4IDE5ZTU5OTAuLmM1YzcwYmQgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvZGVnZW4uYWRhL3NyYy1saWIvc3JjL3Rhc2svc3BvcmFkaWNfdGFzay5hZHMKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29kZWdlbi5hZGEvc3JjLWxpYi9zcmMvdGFzay9zcG9yYWRpY190YXNrLmFkcwpAQCAtOSw3ICs5LDcgQEAKIC0tIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgIC0tCiAtLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlICAtLQogLS0gdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCAgICAgLS0KLS0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogd2l0aCBTeXN0ZW07CmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb2RlZ2VuLmFkYS9zcmMtbGliL3NyYy90YXNrL3Nwb3JhZGljX3Rhc2tfbW9uaXRvcmVkLmFkYiBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvZGVnZW4uYWRhL3NyYy1saWIvc3JjL3Rhc2svc3BvcmFkaWNfdGFza19tb25pdG9yZWQuYWRiCmluZGV4IDhiNTcyYmUuLmZkZTg0ZmYgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvZGVnZW4uYWRhL3NyYy1saWIvc3JjL3Rhc2svc3BvcmFkaWNfdGFza19tb25pdG9yZWQuYWRiCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvZGVnZW4uYWRhL3NyYy1saWIvc3JjL3Rhc2svc3BvcmFkaWNfdGFza19tb25pdG9yZWQuYWRiCkBAIC05LDcgKzksNyBAQAogLS0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAgLS0KIC0tIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgIC0tCiAtLSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0ICAgICAtLQotLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiB3aXRoIFN5c3RlbV9UaW1lOwpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29kZWdlbi5hZGEvc3JjLWxpYi9zcmMvdGFzay9zcG9yYWRpY190YXNrX21vbml0b3JlZC5hZHMgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb2RlZ2VuLmFkYS9zcmMtbGliL3NyYy90YXNrL3Nwb3JhZGljX3Rhc2tfbW9uaXRvcmVkLmFkcwppbmRleCAyMjY5MGU5Li4yYTEyZTM5IDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb2RlZ2VuLmFkYS9zcmMtbGliL3NyYy90YXNrL3Nwb3JhZGljX3Rhc2tfbW9uaXRvcmVkLmFkcworKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb2RlZ2VuLmFkYS9zcmMtbGliL3NyYy90YXNrL3Nwb3JhZGljX3Rhc2tfbW9uaXRvcmVkLmFkcwpAQCAtOSw3ICs5LDcgQEAKIC0tIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgIC0tCiAtLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlICAtLQogLS0gdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCAgICAgLS0KLS0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogd2l0aCBTeXN0ZW07CmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb2RlZ2VuLmFkYS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvZGVnZW4vYWRhL0FjdGl2YXRvci5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29kZWdlbi5hZGEvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb2RlZ2VuL2FkYS9BY3RpdmF0b3IuamF2YQppbmRleCBlOGM2Mzk4Li5iNGJiODBjIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb2RlZ2VuLmFkYS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvZGVnZW4vYWRhL0FjdGl2YXRvci5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvZGVnZW4uYWRhL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29kZWdlbi9hZGEvQWN0aXZhdG9yLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKgogICogICAgCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICoKICAqIENvbnRyaWJ1dG9yczoKICAqICBBbGVzc2FuZHJvIFpvdmkKZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvZGVnZW4uYWRhL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29kZWdlbi9hZGEvY29tcG9uZW50L0NvbXBvbmVudEltcGxlbWVudGF0aW9uLm10bCBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvZGVnZW4uYWRhL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29kZWdlbi9hZGEvY29tcG9uZW50L0NvbXBvbmVudEltcGxlbWVudGF0aW9uLm10bAppbmRleCBiZDllOWEwLi43ZmUzZDhlIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb2RlZ2VuLmFkYS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvZGVnZW4vYWRhL2NvbXBvbmVudC9Db21wb25lbnRJbXBsZW1lbnRhdGlvbi5tdGwKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29kZWdlbi5hZGEvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb2RlZ2VuL2FkYS9jb21wb25lbnQvQ29tcG9uZW50SW1wbGVtZW50YXRpb24ubXRsCkBAIC0xMiw3ICsxMiw3IEBACiAtLSBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzICAtLQogLS0gYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAgLS0KIC0tIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgICAgIC0tCi0tLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvXQogW21vZHVsZSBDb21wb25lbnRJbXBsZW1lbnRhdGlvbignaHR0cDovL3d3dy5lY2xpcHNlLm9yZy91bWwyLzMuMC4wL1VNTCcpL10KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvZGVnZW4uYWRhL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29kZWdlbi9hZGEvY29tcG9uZW50L0NvbXBvbmVudEltcGxlbWVudGF0aW9uQWRhLm10bCBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvZGVnZW4uYWRhL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29kZWdlbi9hZGEvY29tcG9uZW50L0NvbXBvbmVudEltcGxlbWVudGF0aW9uQWRhLm10bAppbmRleCAyZmY1YmNhLi43MGU1MjA3IDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb2RlZ2VuLmFkYS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvZGVnZW4vYWRhL2NvbXBvbmVudC9Db21wb25lbnRJbXBsZW1lbnRhdGlvbkFkYS5tdGwKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29kZWdlbi5hZGEvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb2RlZ2VuL2FkYS9jb21wb25lbnQvQ29tcG9uZW50SW1wbGVtZW50YXRpb25BZGEubXRsCkBAIC0xMiw3ICsxMiw3IEBACiAtLSBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzICAtLQogLS0gYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAgLS0KIC0tIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgICAgIC0tCi0tLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvXQogW21vZHVsZSBDb21wb25lbnRJbXBsZW1lbnRhdGlvbkFkYSgnaHR0cDovL3d3dy5lY2xpcHNlLm9yZy91bWwyLzMuMC4wL1VNTCcpL10KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvZGVnZW4uYWRhL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29kZWdlbi9hZGEvY29tcG9uZW50L0NvbXBvbmVudEltcGxlbWVudGF0aW9uQy5tdGwgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb2RlZ2VuLmFkYS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvZGVnZW4vYWRhL2NvbXBvbmVudC9Db21wb25lbnRJbXBsZW1lbnRhdGlvbkMubXRsCmluZGV4IDZkZTU0OGEuLmQyN2M1NGMgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvZGVnZW4uYWRhL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29kZWdlbi9hZGEvY29tcG9uZW50L0NvbXBvbmVudEltcGxlbWVudGF0aW9uQy5tdGwKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29kZWdlbi5hZGEvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb2RlZ2VuL2FkYS9jb21wb25lbnQvQ29tcG9uZW50SW1wbGVtZW50YXRpb25DLm10bApAQCAtMTIsNyArMTIsNyBAQAogLS0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAgLS0KIC0tIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgIC0tCiAtLSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0ICAgICAtLQotLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogL10KIFttb2R1bGUgQ29tcG9uZW50SW1wbGVtZW50YXRpb25DKCdodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvMy4wLjAvVU1MJykvXQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29kZWdlbi5hZGEvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb2RlZ2VuL2FkYS9jb21wb25lbnQvQ29tcG9uZW50VHlwZS5tdGwgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb2RlZ2VuLmFkYS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvZGVnZW4vYWRhL2NvbXBvbmVudC9Db21wb25lbnRUeXBlLm10bAppbmRleCA4YWE5Yzk2Li5iZWI1YmQ0IDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb2RlZ2VuLmFkYS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvZGVnZW4vYWRhL2NvbXBvbmVudC9Db21wb25lbnRUeXBlLm10bAorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb2RlZ2VuLmFkYS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvZGVnZW4vYWRhL2NvbXBvbmVudC9Db21wb25lbnRUeXBlLm10bApAQCAtMTIsNyArMTIsNyBAQAogLS0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAgLS0KIC0tIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgIC0tCiAtLSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0ICAgICAtLQotLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogL10KIFttb2R1bGUgQ29tcG9uZW50VHlwZSgnaHR0cDovL3d3dy5lY2xpcHNlLm9yZy91bWwyLzMuMC4wL1VNTCcsICdodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3BhcHlydXMvR0NNLzEnKV0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvZGVnZW4uYWRhL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29kZWdlbi9hZGEvY29udGFpbmVyL0NvbnRhaW5lci5tdGwgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb2RlZ2VuLmFkYS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvZGVnZW4vYWRhL2NvbnRhaW5lci9Db250YWluZXIubXRsCmluZGV4IDc5MWM2MzUuLjg0MmEyYjUgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvZGVnZW4uYWRhL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29kZWdlbi9hZGEvY29udGFpbmVyL0NvbnRhaW5lci5tdGwKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29kZWdlbi5hZGEvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb2RlZ2VuL2FkYS9jb250YWluZXIvQ29udGFpbmVyLm10bApAQCAtMTIsNyArMTIsNyBAQAogLS0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAgLS0KIC0tIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgIC0tCiAtLSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0ICAgICAtLQotLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogL10KIFttb2R1bGUgQ29udGFpbmVyKCdodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvMy4wLjAvVU1MJywKZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvZGVnZW4uYWRhL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29kZWdlbi9hZGEvZGF0YXR5cGUvRGF0YVR5cGUubXRsIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29kZWdlbi5hZGEvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb2RlZ2VuL2FkYS9kYXRhdHlwZS9EYXRhVHlwZS5tdGwKaW5kZXggOGZjMzI2MS4uZjQwYTM0ZiAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29kZWdlbi5hZGEvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb2RlZ2VuL2FkYS9kYXRhdHlwZS9EYXRhVHlwZS5tdGwKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29kZWdlbi5hZGEvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb2RlZ2VuL2FkYS9kYXRhdHlwZS9EYXRhVHlwZS5tdGwKQEAgLTEyLDcgKzEyLDcgQEAKIC0tIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgIC0tCiAtLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlICAtLQogLS0gdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCAgICAgLS0KLS0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC9dCiBbbW9kdWxlIERhdGFUeXBlKCdodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvMy4wLjAvVU1MJyldCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb2RlZ2VuLmFkYS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvZGVnZW4vYWRhL2RhdGF0eXBlL0RhdGFUeXBlQy5tdGwgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb2RlZ2VuLmFkYS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvZGVnZW4vYWRhL2RhdGF0eXBlL0RhdGFUeXBlQy5tdGwKaW5kZXggM2YzNTgxOC4uMjI3ZWYxMCAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29kZWdlbi5hZGEvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb2RlZ2VuL2FkYS9kYXRhdHlwZS9EYXRhVHlwZUMubXRsCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvZGVnZW4uYWRhL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29kZWdlbi9hZGEvZGF0YXR5cGUvRGF0YVR5cGVDLm10bApAQCAtMTIsNyArMTIsNyBAQAogLS0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAgLS0KIC0tIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgIC0tCiAtLSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0ICAgICAtLQotLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogL10KIFttb2R1bGUgRGF0YVR5cGVDKCdodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvMy4wLjAvVU1MJyldCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb2RlZ2VuLmFkYS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvZGVnZW4vYWRhL2RlcGxveW1lbnQvRGVwbG95bWVudC5tdGwgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb2RlZ2VuLmFkYS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvZGVnZW4vYWRhL2RlcGxveW1lbnQvRGVwbG95bWVudC5tdGwKaW5kZXggZDE1ZDYwNi4uZmU3MTNjMCAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29kZWdlbi5hZGEvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb2RlZ2VuL2FkYS9kZXBsb3ltZW50L0RlcGxveW1lbnQubXRsCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvZGVnZW4uYWRhL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29kZWdlbi9hZGEvZGVwbG95bWVudC9EZXBsb3ltZW50Lm10bApAQCAtMTIsNyArMTIsNyBAQAogLS0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAgLS0KIC0tIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgIC0tCiAtLSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0ICAgICAtLQotLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogL10KIFttb2R1bGUgRGVwbG95bWVudCgnaHR0cDovL3d3dy5lY2xpcHNlLm9yZy91bWwyLzMuMC4wL1VNTCcsICdodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3BhcHlydXMvR0NNLzEnKV0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvZGVnZW4uYWRhL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29kZWdlbi9hZGEvaGFuZGxlcnMvQWRhR2VuVUlIYW5kbGVyLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb2RlZ2VuLmFkYS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvZGVnZW4vYWRhL2hhbmRsZXJzL0FkYUdlblVJSGFuZGxlci5qYXZhCmluZGV4IDgwMzYzYjMuLmMxMmQ2MTkgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvZGVnZW4uYWRhL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29kZWdlbi9hZGEvaGFuZGxlcnMvQWRhR2VuVUlIYW5kbGVyLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29kZWdlbi5hZGEvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb2RlZ2VuL2FkYS9oYW5kbGVycy9BZGFHZW5VSUhhbmRsZXIuamF2YQpAQCAtMyw5ICszLDkgQEAKICAqCiAgKiAgICAKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgKgogICogQ29udHJpYnV0b3JzOgogICogIEFsZXNzYW5kcm8gWm92aQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29kZWdlbi5hZGEvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb2RlZ2VuL2FkYS9pZnMvSW50ZXJmYWNlLm10bCBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvZGVnZW4uYWRhL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29kZWdlbi9hZGEvaWZzL0ludGVyZmFjZS5tdGwKaW5kZXggMzNkZTkwZi4uMjY5NGM1MCAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29kZWdlbi5hZGEvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb2RlZ2VuL2FkYS9pZnMvSW50ZXJmYWNlLm10bAorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb2RlZ2VuLmFkYS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvZGVnZW4vYWRhL2lmcy9JbnRlcmZhY2UubXRsCkBAIC0xMiw3ICsxMiw3IEBACiAtLSBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzICAtLQogLS0gYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAgLS0KIC0tIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgICAgIC0tCi0tLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvXQogW21vZHVsZSBJbnRlcmZhY2UoJ2h0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi8zLjAuMC9VTUwnKV0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvZGVnZW4uYWRhL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29kZWdlbi9hZGEvbWFpbi9Db3B5cmlnaHQubXRsIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29kZWdlbi5hZGEvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb2RlZ2VuL2FkYS9tYWluL0NvcHlyaWdodC5tdGwKaW5kZXggZDQ2MzA3ZC4uZmFhZjU4NSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29kZWdlbi5hZGEvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb2RlZ2VuL2FkYS9tYWluL0NvcHlyaWdodC5tdGwKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29kZWdlbi5hZGEvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb2RlZ2VuL2FkYS9tYWluL0NvcHlyaWdodC5tdGwKQEAgLTEyLDcgKzEyLDcgQEAKIC0tIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgIC0tCiAtLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlICAtLQogLS0gdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCAgICAgLS0KLS0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC9dCiBbbW9kdWxlIENvcHlyaWdodCgnaHR0cDovL3d3dy5lY2xpcHNlLm9yZy91bWwyLzMuMC4wL1VNTCcpXQpAQCAtMzIsNyArMzIsNyBAQAogLS0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAgLS0KIC0tIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgIC0tCiAtLSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0ICAgICAtLQotLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogWy90ZW1wbGF0ZV0KIApAQCAtNTEsNyArNTEsNyBAQAogLS0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAgLS0KIC0tIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgIC0tCiAtLSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0ICAgICAtLQotLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogWy90ZW1wbGF0ZV0KIApAQCAtMTAzLDcgKzEwMyw3IEBACiAjIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgICAjCiAjIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgICAjCiAjIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgICAgICAjCi0jIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgICAjCiAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiBbL3RlbXBsYXRlXQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29kZWdlbi5hZGEvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb2RlZ2VuL2FkYS9tYWluL0dOQVRhZGMubXRsIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29kZWdlbi5hZGEvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb2RlZ2VuL2FkYS9tYWluL0dOQVRhZGMubXRsCmluZGV4IGU4YzVlNTMuLjc2NDFmODAgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvZGVnZW4uYWRhL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29kZWdlbi9hZGEvbWFpbi9HTkFUYWRjLm10bAorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb2RlZ2VuLmFkYS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvZGVnZW4vYWRhL21haW4vR05BVGFkYy5tdGwKQEAgLTEyLDcgKzEyLDcgQEAKIC0tIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgIC0tCiAtLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlICAtLQogLS0gdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCAgICAgLS0KLS0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC9dCiBbbW9kdWxlIEdOQVRhZGMoJ2h0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi8zLjAuMC9VTUwnKV0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvZGVnZW4uYWRhL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29kZWdlbi9hZGEvbWFpbi9HUFIubXRsIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29kZWdlbi5hZGEvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb2RlZ2VuL2FkYS9tYWluL0dQUi5tdGwKaW5kZXggNzkwM2Y2Zi4uNGJhYWExNiAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29kZWdlbi5hZGEvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb2RlZ2VuL2FkYS9tYWluL0dQUi5tdGwKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29kZWdlbi5hZGEvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb2RlZ2VuL2FkYS9tYWluL0dQUi5tdGwKQEAgLTEyLDcgKzEyLDcgQEAKIC0tIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgIC0tCiAtLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlICAtLQogLS0gdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCAgICAgLS0KLS0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC9dCiBbbW9kdWxlIEdQUignaHR0cDovL3d3dy5lY2xpcHNlLm9yZy91bWwyLzMuMC4wL1VNTCcpXQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29kZWdlbi5hZGEvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb2RlZ2VuL2FkYS9tYWluL0dlbmVyYXRlSW5mcmFzdHJ1Y3R1cmUuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvZGVnZW4uYWRhL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29kZWdlbi9hZGEvbWFpbi9HZW5lcmF0ZUluZnJhc3RydWN0dXJlLmphdmEKaW5kZXggOTlmNDFkZi4uMGQxNGUxZiAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29kZWdlbi5hZGEvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb2RlZ2VuL2FkYS9tYWluL0dlbmVyYXRlSW5mcmFzdHJ1Y3R1cmUuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb2RlZ2VuLmFkYS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvZGVnZW4vYWRhL21haW4vR2VuZXJhdGVJbmZyYXN0cnVjdHVyZS5qYXZhCkBAIC0xLDkgKzEsOSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqIENvcHlyaWdodCAoYykgMjAwOCwgMjAxNSBPYmVvLgogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICAqIAogICogQ29udHJpYnV0b3JzOgogICogICAgIE9iZW8gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KQEAgLTM0MSw5ICszNDEsNiBAQAogICAgIEBPdmVycmlkZQogICAgIHB1YmxpYyB2b2lkIHJlZ2lzdGVyUGFja2FnZXMoUmVzb3VyY2VTZXQgcmVzb3VyY2VTZXQpIHsKICAgICAgICAgc3VwZXIucmVnaXN0ZXJQYWNrYWdlcyhyZXNvdXJjZVNldCk7Ci0gICAgICAgIGlmICghaXNJbldvcmtzcGFjZShvcmcuZWNsaXBzZS51bWwyLnVtbC5VTUxQYWNrYWdlLmNsYXNzKSkgewotICAgICAgICAgICAgcmVzb3VyY2VTZXQuZ2V0UGFja2FnZVJlZ2lzdHJ5KCkucHV0KG9yZy5lY2xpcHNlLnVtbDIudW1sLlVNTFBhY2thZ2UuZUlOU1RBTkNFLmdldE5zVVJJKCksIG9yZy5lY2xpcHNlLnVtbDIudW1sLlVNTFBhY2thZ2UuZUlOU1RBTkNFKTsKLSAgICAgICAgfQogICAgICAgICAKICAgICAgICAgLyoKICAgICAgICAgICogSWYgeW91IHdhbnQgdG8gY2hhbmdlIHRoZSBjb250ZW50IG9mIHRoaXMgbWV0aG9kLCBkbyBOT1QgZm9yZ2V0IHRvIGNoYW5nZSB0aGUgIkBnZW5lcmF0ZWQiCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb2RlZ2VuLmFkYS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvZGVnZW4vYWRhL21haW4vTGljZW5zZS5tdGwgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb2RlZ2VuLmFkYS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvZGVnZW4vYWRhL21haW4vTGljZW5zZS5tdGwKaW5kZXggZTdmNDQ2Yy4uZDhmYjU5NSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29kZWdlbi5hZGEvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb2RlZ2VuL2FkYS9tYWluL0xpY2Vuc2UubXRsCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvZGVnZW4uYWRhL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29kZWdlbi9hZGEvbWFpbi9MaWNlbnNlLm10bApAQCAtMTIsNyArMTIsNyBAQAogLS0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAgLS0KIC0tIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgIC0tCiAtLSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0ICAgICAtLQotLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogL10KIFttb2R1bGUgTGljZW5zZSgnaHR0cDovL3d3dy5lY2xpcHNlLm9yZy91bWwyLzMuMC4wL1VNTCcpXQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29kZWdlbi5hZGEvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb2RlZ2VuL2FkYS9tYWluL01haW4ubXRsIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29kZWdlbi5hZGEvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb2RlZ2VuL2FkYS9tYWluL01haW4ubXRsCmluZGV4IGNjZDI1NWEuLmMyN2ZmZWQgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvZGVnZW4uYWRhL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29kZWdlbi9hZGEvbWFpbi9NYWluLm10bAorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb2RlZ2VuLmFkYS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvZGVnZW4vYWRhL21haW4vTWFpbi5tdGwKQEAgLTEyLDcgKzEyLDcgQEAKIC0tIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgIC0tCiAtLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlICAtLQogLS0gdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCAgICAgLS0KLS0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC9dCiBbbW9kdWxlIE1haW4oJ2h0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi8zLjAuMC9VTUwnKV0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvZGVnZW4uYWRhL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29kZWdlbi9hZGEvbWFpbi9nZW5lcmF0ZUluZnJhc3RydWN0dXJlLm10bCBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvZGVnZW4uYWRhL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29kZWdlbi9hZGEvbWFpbi9nZW5lcmF0ZUluZnJhc3RydWN0dXJlLm10bAppbmRleCA4ZmMyMWExLi5kMzYxMGYyIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb2RlZ2VuLmFkYS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvZGVnZW4vYWRhL21haW4vZ2VuZXJhdGVJbmZyYXN0cnVjdHVyZS5tdGwKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29kZWdlbi5hZGEvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb2RlZ2VuL2FkYS9tYWluL2dlbmVyYXRlSW5mcmFzdHJ1Y3R1cmUubXRsCkBAIC0xMiw3ICsxMiw3IEBACiAtLSBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzICAtLQogLS0gYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAgLS0KIC0tIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgICAgIC0tCi0tLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvXQogW21vZHVsZSBnZW5lcmF0ZUluZnJhc3RydWN0dXJlKCdodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvMy4wLjAvVU1MJyldCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb2RlZ2VuLmFkYS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvZGVnZW4vYWRhL21pZGRsZXdhcmUvQ1JDbGliLm10bCBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvZGVnZW4uYWRhL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29kZWdlbi9hZGEvbWlkZGxld2FyZS9DUkNsaWIubXRsCmluZGV4IDhiMWZkY2IuLmUzNzdiNmIgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvZGVnZW4uYWRhL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29kZWdlbi9hZGEvbWlkZGxld2FyZS9DUkNsaWIubXRsCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvZGVnZW4uYWRhL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29kZWdlbi9hZGEvbWlkZGxld2FyZS9DUkNsaWIubXRsCkBAIC0xMiw3ICsxMiw3IEBACiAtLSBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzICAtLQogLS0gYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAgLS0KIC0tIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgICAgIC0tCi0tLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvXQogW21vZHVsZSBDUkNsaWIoJ2h0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi8zLjAuMC9VTUwnKV0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvZGVnZW4uYWRhL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29kZWdlbi9hZGEvbWlkZGxld2FyZS9EaXN0cmlidXRpb25OYW1pbmdEYXRhLm10bCBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvZGVnZW4uYWRhL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29kZWdlbi9hZGEvbWlkZGxld2FyZS9EaXN0cmlidXRpb25OYW1pbmdEYXRhLm10bAppbmRleCAyODFkZjVhLi4wOGFkZWI4IDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb2RlZ2VuLmFkYS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvZGVnZW4vYWRhL21pZGRsZXdhcmUvRGlzdHJpYnV0aW9uTmFtaW5nRGF0YS5tdGwKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29kZWdlbi5hZGEvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb2RlZ2VuL2FkYS9taWRkbGV3YXJlL0Rpc3RyaWJ1dGlvbk5hbWluZ0RhdGEubXRsCkBAIC0xMiw3ICsxMiw3IEBACiAtLSBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzICAtLQogLS0gYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAgLS0KIC0tIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgICAgIC0tCi0tLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvXQogW21vZHVsZSBEaXN0cmlidXRpb25OYW1pbmdEYXRhKCdodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvMy4wLjAvVU1MJywgJ2h0dHA6Ly93d3cuZWNsaXBzZS5vcmcvcGFweXJ1cy9HQ00vMScpXQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29kZWdlbi5hZGEvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb2RlZ2VuL2FkYS9taWRkbGV3YXJlL01pZGRsZXdhcmVSZWFsVGltZUF0dHJpYnV0ZS5tdGwgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb2RlZ2VuLmFkYS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvZGVnZW4vYWRhL21pZGRsZXdhcmUvTWlkZGxld2FyZVJlYWxUaW1lQXR0cmlidXRlLm10bAppbmRleCA5ZWFlMmY4Li44ZjA0N2IzIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb2RlZ2VuLmFkYS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvZGVnZW4vYWRhL21pZGRsZXdhcmUvTWlkZGxld2FyZVJlYWxUaW1lQXR0cmlidXRlLm10bAorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb2RlZ2VuLmFkYS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvZGVnZW4vYWRhL21pZGRsZXdhcmUvTWlkZGxld2FyZVJlYWxUaW1lQXR0cmlidXRlLm10bApAQCAtMTIsNyArMTIsNyBAQAogLS0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAgLS0KIC0tIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgIC0tCiAtLSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0ICAgICAtLQotLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogL10KIFttb2R1bGUgTWlkZGxld2FyZVJlYWxUaW1lQXR0cmlidXRlKCdodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvMy4wLjAvVU1MJywgJ2h0dHA6Ly93d3cuZWNsaXBzZS5vcmcvcGFweXJ1cy9HQ00vMScpXQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29kZWdlbi5hZGEvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb2RlZ2VuL2FkYS9taWRkbGV3YXJlL1JlbW90ZU1zZ0NsaWVudC5tdGwgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb2RlZ2VuLmFkYS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvZGVnZW4vYWRhL21pZGRsZXdhcmUvUmVtb3RlTXNnQ2xpZW50Lm10bAppbmRleCAwZTA3Y2VlLi43ZjViY2YyIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb2RlZ2VuLmFkYS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvZGVnZW4vYWRhL21pZGRsZXdhcmUvUmVtb3RlTXNnQ2xpZW50Lm10bAorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb2RlZ2VuLmFkYS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvZGVnZW4vYWRhL21pZGRsZXdhcmUvUmVtb3RlTXNnQ2xpZW50Lm10bApAQCAtMTIsNyArMTIsNyBAQAogLS0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAgLS0KIC0tIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgIC0tCiAtLSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0ICAgICAtLQotLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogL10KIFttb2R1bGUgUmVtb3RlTXNnQ2xpZW50KCdodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvMy4wLjAvVU1MJywgJ2h0dHA6Ly93d3cuZWNsaXBzZS5vcmcvcGFweXJ1cy9HQ00vMScpXQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29kZWdlbi5hZGEvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb2RlZ2VuL2FkYS9taWRkbGV3YXJlL1JlbW90ZU1zZ1NlcnZlci5tdGwgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb2RlZ2VuLmFkYS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvZGVnZW4vYWRhL21pZGRsZXdhcmUvUmVtb3RlTXNnU2VydmVyLm10bAppbmRleCA4Mjk0Njk2Li5lMmY0NmQ1IDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb2RlZ2VuLmFkYS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvZGVnZW4vYWRhL21pZGRsZXdhcmUvUmVtb3RlTXNnU2VydmVyLm10bAorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb2RlZ2VuLmFkYS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvZGVnZW4vYWRhL21pZGRsZXdhcmUvUmVtb3RlTXNnU2VydmVyLm10bApAQCAtMTIsNyArMTIsNyBAQAogLS0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAgLS0KIC0tIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgIC0tCiAtLSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0ICAgICAtLQotLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogL10KIFttb2R1bGUgUmVtb3RlTXNnU2VydmVyKCdodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvMy4wLjAvVU1MJywgJ2h0dHA6Ly93d3cuZWNsaXBzZS5vcmcvcGFweXJ1cy9HQ00vMScpXQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29kZWdlbi5hZGEvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb2RlZ2VuL2FkYS9zZXJ2aWNlL1VNTDJTZXJ2aWNlLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb2RlZ2VuLmFkYS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvZGVnZW4vYWRhL3NlcnZpY2UvVU1MMlNlcnZpY2UuamF2YQppbmRleCA5YjE0NzQ3Li41ODZmNzFhIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb2RlZ2VuLmFkYS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvZGVnZW4vYWRhL3NlcnZpY2UvVU1MMlNlcnZpY2UuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb2RlZ2VuLmFkYS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvZGVnZW4vYWRhL3NlcnZpY2UvVU1MMlNlcnZpY2UuamF2YQpAQCAtMTEsNyArMTEsNyBAQAogLS0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAgLS0KIC0tIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgIC0tCiAtLSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0ICAgICAtLQotLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICovCiAKZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvZGVnZW4uYWRhL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29kZWdlbi9hZGEvdHJhbnNmb3JtYXRpb25zL0FjY2VsZW9Db2RlR2VuLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb2RlZ2VuLmFkYS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvZGVnZW4vYWRhL3RyYW5zZm9ybWF0aW9ucy9BY2NlbGVvQ29kZUdlbi5qYXZhCmluZGV4IDI2NGUwYTAuLmViZjVjNDYgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvZGVnZW4uYWRhL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29kZWdlbi9hZGEvdHJhbnNmb3JtYXRpb25zL0FjY2VsZW9Db2RlR2VuLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29kZWdlbi5hZGEvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb2RlZ2VuL2FkYS90cmFuc2Zvcm1hdGlvbnMvQWNjZWxlb0NvZGVHZW4uamF2YQpAQCAtMyw5ICszLDkgQEAKICAqCiAgKiAgICAKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgKgogICogQ29udHJpYnV0b3JzOgogICogIEFsZXNzYW5kcm8gWm92aQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29kZWdlbi5hZGEvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb2RlZ2VuL2FkYS90cmFuc2Zvcm1hdGlvbnMvVHJhbnNmb3JtYXRpb25zLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb2RlZ2VuLmFkYS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvZGVnZW4vYWRhL3RyYW5zZm9ybWF0aW9ucy9UcmFuc2Zvcm1hdGlvbnMuamF2YQppbmRleCBmNGJlY2ZmLi4yOTg1YjlhIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb2RlZ2VuLmFkYS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvZGVnZW4vYWRhL3RyYW5zZm9ybWF0aW9ucy9UcmFuc2Zvcm1hdGlvbnMuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb2RlZ2VuLmFkYS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvZGVnZW4vYWRhL3RyYW5zZm9ybWF0aW9ucy9UcmFuc2Zvcm1hdGlvbnMuamF2YQpAQCAtMyw5ICszLDkgQEAKICAqCiAgKiAgICAKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgKgogICogQ29udHJpYnV0b3JzOgogICogIEFsZXNzYW5kcm8gWm92aQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29kZWdlbi5hZGEvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb2RlZ2VuL2FkYS91dGlsL0FkYUdlblV0aWwuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvZGVnZW4uYWRhL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29kZWdlbi9hZGEvdXRpbC9BZGFHZW5VdGlsLmphdmEKaW5kZXggZDA4ZTdhOS4uMDc2ZTRkZSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29kZWdlbi5hZGEvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb2RlZ2VuL2FkYS91dGlsL0FkYUdlblV0aWwuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb2RlZ2VuLmFkYS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvZGVnZW4vYWRhL3V0aWwvQWRhR2VuVXRpbC5qYXZhCkBAIC0xLDIyICsxLDI5IEBACi1wYWNrYWdlIG9yZy5wb2xhcnN5cy5jaGVzcy5jb2RlZ2VuLmFkYS51dGlsOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSUZpbGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVByb2plY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudWkuSUVkaXRvclBhcnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudWkuSUZpbGVFZGl0b3JJbnB1dDsKLQotcHVibGljIGNsYXNzIEFkYUdlblV0aWwgewotCQotCS8qKgotCSAqIFV0aWxpdHkgbWV0aG9kIHRvIGdldCB0aGUgYWN0aXZlIEVjbGlwc2UgcHJvamVjdC4KLQkgKgotCSAqIEBwYXJhbSBlZGl0b3IgdGhlIGVkaXRvcgotCSAqIEByZXR1cm4gdGhlIGFjdGl2ZSBwcm9qZWN0Ci0JICovCi0JcHVibGljIHN0YXRpYyBJUHJvamVjdCBnZXRBY3RpdmVQcm9qZWN0KElFZGl0b3JQYXJ0IGVkaXRvcikgewotCQlJRmlsZUVkaXRvcklucHV0IGlucHV0ID0gKElGaWxlRWRpdG9ySW5wdXQpIGVkaXRvci5nZXRFZGl0b3JJbnB1dCgpOwotCQlJRmlsZSBmaWxlID0gaW5wdXQuZ2V0RmlsZSgpOwotCQlyZXR1cm4gZmlsZS5nZXRQcm9qZWN0KCk7Ci0JfQotCi19CisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqIENvcHlyaWdodCAoQykgMjAyMCANCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQorICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorcGFja2FnZSBvcmcucG9sYXJzeXMuY2hlc3MuY29kZWdlbi5hZGEudXRpbDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSUZpbGU7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklQcm9qZWN0Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS51aS5JRWRpdG9yUGFydDsNCitpbXBvcnQgb3JnLmVjbGlwc2UudWkuSUZpbGVFZGl0b3JJbnB1dDsNCisNCitwdWJsaWMgY2xhc3MgQWRhR2VuVXRpbCB7DQorCQ0KKwkvKioNCisJICogVXRpbGl0eSBtZXRob2QgdG8gZ2V0IHRoZSBhY3RpdmUgRWNsaXBzZSBwcm9qZWN0Lg0KKwkgKg0KKwkgKiBAcGFyYW0gZWRpdG9yIHRoZSBlZGl0b3INCisJICogQHJldHVybiB0aGUgYWN0aXZlIHByb2plY3QNCisJICovDQorCXB1YmxpYyBzdGF0aWMgSVByb2plY3QgZ2V0QWN0aXZlUHJvamVjdChJRWRpdG9yUGFydCBlZGl0b3IpIHsNCisJCUlGaWxlRWRpdG9ySW5wdXQgaW5wdXQgPSAoSUZpbGVFZGl0b3JJbnB1dCkgZWRpdG9yLmdldEVkaXRvcklucHV0KCk7DQorCQlJRmlsZSBmaWxlID0gaW5wdXQuZ2V0RmlsZSgpOw0KKwkJcmV0dXJuIGZpbGUuZ2V0UHJvamVjdCgpOw0KKwl9DQorDQorfQ0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvZGVnZW4uYWRhL3Rhc2tzL2dlbmVyYXRlSW5mcmFzdHJ1Y3R1cmUueG1sIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29kZWdlbi5hZGEvdGFza3MvZ2VuZXJhdGVJbmZyYXN0cnVjdHVyZS54bWwKaW5kZXggYjYwNThhYS4uNjQyN2EzNSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29kZWdlbi5hZGEvdGFza3MvZ2VuZXJhdGVJbmZyYXN0cnVjdHVyZS54bWwKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29kZWdlbi5hZGEvdGFza3MvZ2VuZXJhdGVJbmZyYXN0cnVjdHVyZS54bWwKQEAgLTEsNDkgKzEsMjUgQEAKIDw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+CiA8cHJvamVjdCBkZWZhdWx0PSJnZW5lcmF0ZUluZnJhc3RydWN0dXJlIiBuYW1lPSJvcmcucG9sYXJzeXMuY2hlc3MuY29kZWdlbi5hZGEiPgotPDw8PDw8PCBIRUFECi0gICAgPHByb3BlcnR5IG5hbWU9IkVDTElQU0VfSE9NRSIgdmFsdWU9Ii4uLy4uLy4uLy4uLy4uL1Byb2dyYW1taS9Qb2xhcnN5c0NIRVNTLU5lb24td2luMzIteDg2XzY0XzIwMTkwNTE1Ii8+Ci0gICAgPHByb3BlcnR5IG5hbWU9IkVDTElQU0VfV09SS1NQQUNFIiB2YWx1ZT0iLi4vLi4vLi4vLi4vLi4vUHJvZ3JhbW1pL1BvbGFyc3lzQ0hFU1MtTmVvbi13aW4zMi14ODZfNjRfMjAxOTA1MTUvd29ya3NwYWNlIi8+Ci09PT09PT09Ci0gICAgPHByb3BlcnR5IG5hbWU9IkVDTElQU0VfSE9NRSIgdmFsdWU9Ii4uLy4uLy4uLy4uLy4uL0VjbGlwc2UvZWNsaXBzZSIvPgotICAgIDxwcm9wZXJ0eSBuYW1lPSJFQ0xJUFNFX1dPUktTUEFDRSIgdmFsdWU9Ii4uLy4uLy4uLy4uLy4uL1dvcmtzcGFjZXMvRmlyc3RDb25maWcvd3MiLz4KLT4+Pj4+Pj4gcmVmcy9yZW1vdGVzL29yaWdpbi9tYXN0ZXIKKyAgICA8cHJvcGVydHkgbmFtZT0iRUNMSVBTRV9IT01FIiB2YWx1ZT0iLi4vLi4vLi4vLi4vLi4iLz4KKyAgICA8cHJvcGVydHkgbmFtZT0iRUNMSVBTRV9XT1JLU1BBQ0UiIHZhbHVlPSIuLi8uLi8uLi8uLi8uLi93b3Jrc3BhY2UiLz4KIAogICAgIDwhLS0gVGhlIGNsYXNzcGF0aCB3aXRoIG9ubHkgdGhlIGRlcGVuZGVuY2llcyB1c2VkIGJ5IHRoZSBwcm9qZWN0IC0tPgogICAgIDxwYXRoIGlkPSJvcmcucG9sYXJzeXMuY2hlc3MuY29kZWdlbi5hZGEubGlicmFyeWNsYXNzcGF0aCI+CiAgICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX1dPUktTUEFDRX0vb3JnLnBvbGFyc3lzLmNoZXNzLmNvZGVnZW4uYWRhL2JpbiIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9qcmUvbGliL3Jlc291cmNlcy5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vanJlL2xpYi9ydC5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vanJlL2xpYi9qc3NlLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9qcmUvbGliL2pjZS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vanJlL2xpYi9jaGFyc2V0cy5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vanJlL2xpYi9qZnIuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L2pyZS9saWIvZXh0L2FjY2Vzcy1icmlkZ2UtNjQuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L2pyZS9saWIvZXh0L2NsZHJkYXRhLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9qcmUvbGliL2V4dC9kbnNucy5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vanJlL2xpYi9leHQvamFjY2Vzcy5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vanJlL2xpYi9leHQvamZ4cnQuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L2pyZS9saWIvZXh0L2xvY2FsZWRhdGEuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L2pyZS9saWIvZXh0L25hc2hvcm4uamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L2pyZS9saWIvZXh0L3N1bmVjLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9qcmUvbGliL2V4dC9zdW5qY2VfcHJvdmlkZXIuamFyIi8+Ci0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L2pyZS9saWIvZXh0L3N1bm1zY2FwaS5qYXIiLz4KLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vanJlL2xpYi9leHQvc3VucGtjczExLmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9qcmUvbGliL2V4dC96aXBmcy5qYXIiLz4KICAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWVfMy4xMi4wLnYyMDE2MDYwNi0xMzQyLmphciIvPgogICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL2phdmF4LmluamVjdF8xLjAuMC52MjAwOTEwMzAuamFyIi8+CiAgICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2Uub3NnaV8zLjExLjMudjIwMTcwMjA5LTE4NDMuamFyIi8+Ci08PDw8PDw8IEhFQUQKLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5meC5vc2dpXzIuNC4wLjIwMTYwNTEwMDUwNC5qYXIiLz4KLT09PT09PT0KLT4+Pj4+Pj4gcmVmcy9yZW1vdGVzL29yaWdpbi9tYXN0ZXIKKyAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfV09SS1NQQUNFfS8vLm1ldGFkYXRhLy5wbHVnaW5zL29yZy5lY2xpcHNlLnBkZS5jb3JlLy5idW5kbGVfcG9vbC9wbHVnaW5zL29yZy5lY2xpcHNlLmVxdWlub3gudHJhbnNmb3Jtcy5ob29rXzEuMS4wLnYyMDEzMTAyMS0xOTMzLmphciIvPgorICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9XT1JLU1BBQ0V9Ly8ubWV0YWRhdGEvLnBsdWdpbnMvb3JnLmVjbGlwc2UucGRlLmNvcmUvLmJ1bmRsZV9wb29sL3BsdWdpbnMvb3JnLmVjbGlwc2UuZXF1aW5veC53ZWF2aW5nLmhvb2tfMS4xLjIwMC52MjAxNTA3MzAtMTY0OC5qYXIiLz4KKyAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfV09SS1NQQUNFfS8vLm1ldGFkYXRhLy5wbHVnaW5zL29yZy5lY2xpcHNlLnBkZS5jb3JlLy5idW5kbGVfcG9vbC9wbHVnaW5zL29yZy5lY2xpcHNlLmVxdWlub3gucmVnaW9uXzEuMy4yLnYyMDE3MDExOC0xOTMwLmphciIvPgogICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLm9zZ2kuY29tcGF0aWJpbGl0eS5zdGF0ZV8xLjAuMjAwLnYyMDE2MDUwNC0xNDE5LmphciIvPgorICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLndzdC5qc2R0Lm5hc2hvcm4uZXh0ZW5zaW9uXzEuMC4yLnYyMDE2MTAyODAxMjguamFyIi8+CiAgICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZXF1aW5veC5jb21tb25fMy44LjAudjIwMTYwNTA5LTEyMzAuamFyIi8+CiAgICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuY29yZS5qb2JzXzMuOC4wLnYyMDE2MDUwOS0wNDExLmphciIvPgogICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmVxdWlub3gucmVnaXN0cnlfMy42LjEwMC52MjAxNjAyMjMtMjIxOC5qYXIiLz4KICAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5lcXVpbm94LnByZWZlcmVuY2VzXzMuNi4xLnYyMDE2MDgxNS0xNDA2LmphciIvPgogICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmNvcmUuY29udGVudHR5cGVfMy41LjEwMC52MjAxNjA0MTgtMTYyMS5qYXIiLz4KICAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5lcXVpbm94LmFwcF8xLjMuNDAwLnYyMDE1MDcxNS0xNTI4LmphciIvPgotICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLnVtbDIudW1sXzUuMi4zLnYyMDE3MDIyNy0wOTM1LmphciIvPgogICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmVtZi5lY29yZV8yLjEyLjAudjIwMTYwNDIwLTAyNDcuamFyIi8+CiAgICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZW1mLmNvbW1vbl8yLjEyLjAudjIwMTYwNDIwLTAyNDcuamFyIi8+CiAgICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZW1mLmVjb3JlLnhtaV8yLjEyLjAudjIwMTYwNDIwLTAyNDcuamFyIi8+CkBAIC02MSwxNSArMzcsNyBAQAogICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7RUNMSVBTRV9IT01FfS9wbHVnaW5zL29yZy5lY2xpcHNlLmFjY2VsZW8uZW5naW5lXzMuNi42LjIwMTYxMDA2MDgzMS5qYXIiLz4KICAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5lbWYuY29kZWdlbi5lY29yZV8yLjEyLjAudjIwMTYwNTI2LTAzNTYuamFyIi8+CiAgICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuZW1mLmNvZGVnZW5fMi4xMS4wLnYyMDE2MDUyNi0wMzU2LmphciIvPgotPDw8PDw8PCBIRUFECi0gICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UucGFweXJ1cy5tYXJ0ZS5zdGF0aWMucHJvZmlsZV8xLjIuMy4yMDE4MTAxNzAxMTEuamFyIi8+Ci09PT09PT09Ci08PDw8PDw8IEhFQUQKLSAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5wYXB5cnVzLm1hcnRlLnN0YXRpYy5wcm9maWxlXzEuMi4zLjIwMTkwMzA1MDI1MS5qYXIiLz4KLT09PT09PT0KICAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5wYXB5cnVzLm1hcnRlLnN0YXRpYy5wcm9maWxlXzEuMi4wLjIwMTcwMzA4MTE1My5qYXIiLz4KLT4+Pj4+Pj4gYnJhbmNoICdtYXN0ZXInIG9mIGdpdEBnaXRsYWIuZmJrLmV1OkNQU19EZXNpZ24vQ0hFU1MuZ2l0Ci0+Pj4+Pj4+IHJlZnMvcmVtb3Rlcy9vcmlnaW4vbWFzdGVyCiAgICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UuY29yZS5jb21tYW5kc18zLjguMS52MjAxNjEyMjEtMTY1MS5qYXIiLz4KICAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke0VDTElQU0VfSE9NRX0vcGx1Z2lucy9vcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlc18zLjExLjEudjIwMTYxMTA3LTIwMzIuamFyIi8+CiAgICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtFQ0xJUFNFX0hPTUV9L3BsdWdpbnMvb3JnLmVjbGlwc2UucGFweXJ1cy5pbmZyYS5jb3JlXzIuMS4xLjIwMTcwMzA4MDg1MS5qYXIiLz4KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvZGVnZW4uYWRhL3RyYW5zZm9ybWF0aW9ucy9tb25pdG9yaW5nLnF2dG8gYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb2RlZ2VuLmFkYS90cmFuc2Zvcm1hdGlvbnMvbW9uaXRvcmluZy5xdnRvCmluZGV4IDU5NjRjN2EuLjZjMTA4ZDUgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvZGVnZW4uYWRhL3RyYW5zZm9ybWF0aW9ucy9tb25pdG9yaW5nLnF2dG8KKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29kZWdlbi5hZGEvdHJhbnNmb3JtYXRpb25zL21vbml0b3JpbmcucXZ0bwpAQCAtMTEsNyArMTEsNyBAQAogLS0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAgLS0KIC0tIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgIC0tCiAtLSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0ICAgICAtLQotLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogKi8KIApkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29tbWFuZHMvYWJvdXQuaHRtbCBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbW1hbmRzL2Fib3V0Lmh0bWwKaW5kZXggZGQzYzA4OS4uMTY0Zjc4MSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29tbWFuZHMvYWJvdXQuaHRtbAorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb21tYW5kcy9hYm91dC5odG1sCkBAIC0yLDI3ICsyLDM1IEBACiAgICAgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXN0cmljdC5kdGQiPgogPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgogPGhlYWQ+Ci08bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xIi8+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xIiAvPgogPHRpdGxlPkFib3V0PC90aXRsZT4KIDwvaGVhZD4KIDxib2R5IGxhbmc9IkVOLVVTIj4KLTxoMj5BYm91dCBUaGlzIENvbnRlbnQ8L2gyPgotIAotPHA+Tm92ZW1iZXIgMTQsIDIwMDg8L3A+CQotPGgzPkxpY2Vuc2U8L2gzPgorCTxoMj5BYm91dCBUaGlzIENvbnRlbnQ8L2gyPgogCi08cD5UaGUgRWNsaXBzZSBGb3VuZGF0aW9uIG1ha2VzIGF2YWlsYWJsZSBhbGwgY29udGVudCBpbiB0aGlzIHBsdWctaW4gKCZxdW90O0NvbnRlbnQmcXVvdDspLiAgVW5sZXNzIG90aGVyd2lzZSAKLWluZGljYXRlZCBiZWxvdywgdGhlIENvbnRlbnQgaXMgcHJvdmlkZWQgdG8geW91IHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUKLUVjbGlwc2UgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAxLjAgKCZxdW90O0VQTCZxdW90OykuICBBIGNvcHkgb2YgdGhlIEVQTCBpcyBhdmFpbGFibGUgCi1hdCA8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWw8L2E+LgotRm9yIHB1cnBvc2VzIG9mIHRoZSBFUEwsICZxdW90O1Byb2dyYW0mcXVvdDsgd2lsbCBtZWFuIHRoZSBDb250ZW50LjwvcD4KKwk8cD5Ob3ZlbWJlciAzMCwgMjAxNzwvcD4KKwk8aDM+TGljZW5zZTwvaDM+CiAKLTxwPklmIHlvdSBkaWQgbm90IHJlY2VpdmUgdGhpcyBDb250ZW50IGRpcmVjdGx5IGZyb20gdGhlIEVjbGlwc2UgRm91bmRhdGlvbiwgdGhlIENvbnRlbnQgaXMgCi1iZWluZyByZWRpc3RyaWJ1dGVkIGJ5IGFub3RoZXIgcGFydHkgKCZxdW90O1JlZGlzdHJpYnV0b3ImcXVvdDspIGFuZCBkaWZmZXJlbnQgdGVybXMgYW5kIGNvbmRpdGlvbnMgbWF5Ci1hcHBseSB0byB5b3VyIHVzZSBvZiBhbnkgb2JqZWN0IGNvZGUgaW4gdGhlIENvbnRlbnQuICBDaGVjayB0aGUgUmVkaXN0cmlidXRvcidzIGxpY2Vuc2UgdGhhdCB3YXMgCi1wcm92aWRlZCB3aXRoIHRoZSBDb250ZW50LiAgSWYgbm8gc3VjaCBsaWNlbnNlIGV4aXN0cywgY29udGFjdCB0aGUgUmVkaXN0cmlidXRvci4gIFVubGVzcyBvdGhlcndpc2UKLWluZGljYXRlZCBiZWxvdywgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFUEwgc3RpbGwgYXBwbHkgdG8gYW55IHNvdXJjZSBjb2RlIGluIHRoZSBDb250ZW50Ci1hbmQgc3VjaCBzb3VyY2UgY29kZSBtYXkgYmUgb2J0YWluZWQgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZyI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZzwvYT4uPC9wPgorCTxwPgorCQlUaGUgRWNsaXBzZSBGb3VuZGF0aW9uIG1ha2VzIGF2YWlsYWJsZSBhbGwgY29udGVudCBpbiB0aGlzIHBsdWctaW4KKwkJKCZxdW90O0NvbnRlbnQmcXVvdDspLiBVbmxlc3Mgb3RoZXJ3aXNlIGluZGljYXRlZCBiZWxvdywgdGhlIENvbnRlbnQKKwkJaXMgcHJvdmlkZWQgdG8geW91IHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRWNsaXBzZQorCQlQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDIuMCAoJnF1b3Q7RVBMJnF1b3Q7KS4gQSBjb3B5IG9mIHRoZSBFUEwgaXMKKwkJYXZhaWxhYmxlIGF0IDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMCI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wPC9hPi4KKwkJRm9yIHB1cnBvc2VzIG9mIHRoZSBFUEwsICZxdW90O1Byb2dyYW0mcXVvdDsgd2lsbCBtZWFuIHRoZSBDb250ZW50LgorCTwvcD4KKworCTxwPgorCQlJZiB5b3UgZGlkIG5vdCByZWNlaXZlIHRoaXMgQ29udGVudCBkaXJlY3RseSBmcm9tIHRoZSBFY2xpcHNlCisJCUZvdW5kYXRpb24sIHRoZSBDb250ZW50IGlzIGJlaW5nIHJlZGlzdHJpYnV0ZWQgYnkgYW5vdGhlciBwYXJ0eQorCQkoJnF1b3Q7UmVkaXN0cmlidXRvciZxdW90OykgYW5kIGRpZmZlcmVudCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBtYXkKKwkJYXBwbHkgdG8geW91ciB1c2Ugb2YgYW55IG9iamVjdCBjb2RlIGluIHRoZSBDb250ZW50LiBDaGVjayB0aGUKKwkJUmVkaXN0cmlidXRvcidzIGxpY2Vuc2UgdGhhdCB3YXMgcHJvdmlkZWQgd2l0aCB0aGUgQ29udGVudC4gSWYgbm8gc3VjaAorCQlsaWNlbnNlIGV4aXN0cywgY29udGFjdCB0aGUgUmVkaXN0cmlidXRvci4gVW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQKKwkJYmVsb3csIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRVBMIHN0aWxsIGFwcGx5IHRvIGFueSBzb3VyY2UKKwkJY29kZSBpbiB0aGUgQ29udGVudCBhbmQgc3VjaCBzb3VyY2UgY29kZSBtYXkgYmUgb2J0YWluZWQgYXQgPGEKKwkJCWhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnPC9hPi4KKwk8L3A+CiAKIDwvYm9keT4KIDwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb21tYW5kcy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbW1hbmRzL0FjdGl2YXRvci5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29tbWFuZHMvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb21tYW5kcy9BY3RpdmF0b3IuamF2YQppbmRleCAxODEwNjEwLi4wNWIwNTI3IDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb21tYW5kcy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbW1hbmRzL0FjdGl2YXRvci5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbW1hbmRzL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29tbWFuZHMvQWN0aXZhdG9yLmphdmEKQEAgLTEsOSArMSw5IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICogQ29weXJpZ2h0IChjKSAyMDExIC0yMDE0IEludGVjcy4KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgKgogICogQ29udHJpYnV0b3JzOgogICogICAgU3RlZmFubyBQdXJpLCBOaWNob2xhcyBQYWNpbmkgLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24gYW5kL29yIGluaXRpYWwgZG9jdW1lbnRhdGlvbgpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29tbWFuZHMvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb21tYW5kcy9Bc3NpZ25Db3B5LmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb21tYW5kcy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbW1hbmRzL0Fzc2lnbkNvcHkuamF2YQppbmRleCA4NDg0MmU5Li40MzhjYWZmIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb21tYW5kcy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbW1hbmRzL0Fzc2lnbkNvcHkuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb21tYW5kcy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbW1hbmRzL0Fzc2lnbkNvcHkuamF2YQpAQCAtMSw5ICsxLDkgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKiBDb3B5cmlnaHQgKGMpIDIwMTEgLTIwMTQgSW50ZWNzLgogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICAqCiAgKiBDb250cmlidXRvcnM6CiAgKiAgICBTdGVmYW5vIFB1cmksIE5pY2hvbGFzIFBhY2luaSAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbiBhbmQvb3IgaW5pdGlhbCBkb2N1bWVudGF0aW9uCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb21tYW5kcy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbW1hbmRzL0J1aWxkTW9kZWxJbnN0YW5jZUNvbW1hbmQuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbW1hbmRzL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29tbWFuZHMvQnVpbGRNb2RlbEluc3RhbmNlQ29tbWFuZC5qYXZhCmluZGV4IDcxODc0OGUuLmU3ZmVkOWYgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbW1hbmRzL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29tbWFuZHMvQnVpbGRNb2RlbEluc3RhbmNlQ29tbWFuZC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbW1hbmRzL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29tbWFuZHMvQnVpbGRNb2RlbEluc3RhbmNlQ29tbWFuZC5qYXZhCkBAIC0xLDkgKzEsOSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqIENvcHlyaWdodCAoYykgMjAxNSBJbnRlY3MuCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICoKICAqIENvbnRyaWJ1dG9yczoKICAqICAgIEludGVjcwpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29tbWFuZHMvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb21tYW5kcy9IaWRlUlRJbmZvcm1hdGlvbkNvbW1hbmQuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbW1hbmRzL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29tbWFuZHMvSGlkZVJUSW5mb3JtYXRpb25Db21tYW5kLmphdmEKaW5kZXggYzEwOTQ2NS4uOTQ1ZjhjZiAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29tbWFuZHMvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb21tYW5kcy9IaWRlUlRJbmZvcm1hdGlvbkNvbW1hbmQuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb21tYW5kcy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbW1hbmRzL0hpZGVSVEluZm9ybWF0aW9uQ29tbWFuZC5qYXZhCkBAIC0xLDkgKzEsOSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqIENvcHlyaWdodCAoYykgMjAxMSAtMjAxNCBJbnRlY3MuCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICoKICAqIENvbnRyaWJ1dG9yczoKICAqICAgIFN0ZWZhbm8gUHVyaSwgTmljaG9sYXMgUGFjaW5pIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uIGFuZC9vciBpbml0aWFsIGRvY3VtZW50YXRpb24KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbW1hbmRzL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29tbWFuZHMvU2hvd1JUSW5mb3JtYXRpb25Db21tYW5kLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb21tYW5kcy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbW1hbmRzL1Nob3dSVEluZm9ybWF0aW9uQ29tbWFuZC5qYXZhCmluZGV4IGQ0MjBjMGYuLmEwZTNiZTAgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbW1hbmRzL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29tbWFuZHMvU2hvd1JUSW5mb3JtYXRpb25Db21tYW5kLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29tbWFuZHMvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb21tYW5kcy9TaG93UlRJbmZvcm1hdGlvbkNvbW1hbmQuamF2YQpAQCAtMSw5ICsxLDkgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKiBDb3B5cmlnaHQgKGMpIDIwMTEgLTIwMTQgSW50ZWNzLgogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICAqCiAgKiBDb250cmlidXRvcnM6CiAgKiAgICBTdGVmYW5vIFB1cmksIE5pY2hvbGFzIFBhY2luaSAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbiBhbmQvb3IgaW5pdGlhbCBkb2N1bWVudGF0aW9uCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb25zdHJhaW50cy5jb25zdHJhaW50RWRpdG9yL2Fib3V0Lmh0bWwgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb25zdHJhaW50cy5jb25zdHJhaW50RWRpdG9yL2Fib3V0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTY0Zjc4MQotLS0gL2Rldi9udWxsCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnN0cmFpbnRzLmNvbnN0cmFpbnRFZGl0b3IvYWJvdXQuaHRtbApAQCAtMCwwICsxLDM2IEBACis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIgorICAgICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS1zdHJpY3QuZHRkIj4KKzxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMSIgLz4KKzx0aXRsZT5BYm91dDwvdGl0bGU+Cis8L2hlYWQ+Cis8Ym9keSBsYW5nPSJFTi1VUyI+CisJPGgyPkFib3V0IFRoaXMgQ29udGVudDwvaDI+CisKKwk8cD5Ob3ZlbWJlciAzMCwgMjAxNzwvcD4KKwk8aDM+TGljZW5zZTwvaDM+CisKKwk8cD4KKwkJVGhlIEVjbGlwc2UgRm91bmRhdGlvbiBtYWtlcyBhdmFpbGFibGUgYWxsIGNvbnRlbnQgaW4gdGhpcyBwbHVnLWluCisJCSgmcXVvdDtDb250ZW50JnF1b3Q7KS4gVW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQgYmVsb3csIHRoZSBDb250ZW50CisJCWlzIHByb3ZpZGVkIHRvIHlvdSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVjbGlwc2UKKwkJUHVibGljIExpY2Vuc2UgVmVyc2lvbiAyLjAgKCZxdW90O0VQTCZxdW90OykuIEEgY29weSBvZiB0aGUgRVBMIGlzCisJCWF2YWlsYWJsZSBhdCA8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAiPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMDwvYT4uCisJCUZvciBwdXJwb3NlcyBvZiB0aGUgRVBMLCAmcXVvdDtQcm9ncmFtJnF1b3Q7IHdpbGwgbWVhbiB0aGUgQ29udGVudC4KKwk8L3A+CisKKwk8cD4KKwkJSWYgeW91IGRpZCBub3QgcmVjZWl2ZSB0aGlzIENvbnRlbnQgZGlyZWN0bHkgZnJvbSB0aGUgRWNsaXBzZQorCQlGb3VuZGF0aW9uLCB0aGUgQ29udGVudCBpcyBiZWluZyByZWRpc3RyaWJ1dGVkIGJ5IGFub3RoZXIgcGFydHkKKwkJKCZxdW90O1JlZGlzdHJpYnV0b3ImcXVvdDspIGFuZCBkaWZmZXJlbnQgdGVybXMgYW5kIGNvbmRpdGlvbnMgbWF5CisJCWFwcGx5IHRvIHlvdXIgdXNlIG9mIGFueSBvYmplY3QgY29kZSBpbiB0aGUgQ29udGVudC4gQ2hlY2sgdGhlCisJCVJlZGlzdHJpYnV0b3IncyBsaWNlbnNlIHRoYXQgd2FzIHByb3ZpZGVkIHdpdGggdGhlIENvbnRlbnQuIElmIG5vIHN1Y2gKKwkJbGljZW5zZSBleGlzdHMsIGNvbnRhY3QgdGhlIFJlZGlzdHJpYnV0b3IuIFVubGVzcyBvdGhlcndpc2UgaW5kaWNhdGVkCisJCWJlbG93LCB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVQTCBzdGlsbCBhcHBseSB0byBhbnkgc291cmNlCisJCWNvZGUgaW4gdGhlIENvbnRlbnQgYW5kIHN1Y2ggc291cmNlIGNvZGUgbWF5IGJlIG9idGFpbmVkIGF0IDxhCisJCQlocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnLyI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZzwvYT4uCisJPC9wPgorCis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29uc3RyYWludHMuY29uc3RyYWludEVkaXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnN0cmFpbnRzL2NvbnN0cmFpbnRFZGl0b3IvQ29uc3RyYWludEVkaXRvckZpbHRlci5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29uc3RyYWludHMuY29uc3RyYWludEVkaXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnN0cmFpbnRzL2NvbnN0cmFpbnRFZGl0b3IvQ29uc3RyYWludEVkaXRvckZpbHRlci5qYXZhCmluZGV4IGQ2ZTllYTYuLjgxODM5N2UgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnN0cmFpbnRzLmNvbnN0cmFpbnRFZGl0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb25zdHJhaW50cy9jb25zdHJhaW50RWRpdG9yL0NvbnN0cmFpbnRFZGl0b3JGaWx0ZXIuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb25zdHJhaW50cy5jb25zdHJhaW50RWRpdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29uc3RyYWludHMvY29uc3RyYWludEVkaXRvci9Db25zdHJhaW50RWRpdG9yRmlsdGVyLmphdmEKQEAgLTEsOSArMSw5IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIENvcHlyaWdodCAoQykgMjAxNyBGb25kYXppb25lIEJydW5vIEtlc3NsZXIuDQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqIA0KICAqIENvbnRyaWJ1dG9yczoNCiAgKiAgICAgQWxiZXJ0byBEZWJpYXNpIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29uc3RyYWludHMuY29uc3RyYWludEVkaXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnN0cmFpbnRzL2NvbnN0cmFpbnRFZGl0b3IvQ3VzdG9tQ29uc3RyYWludEVkaXRvclRhYi5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29uc3RyYWludHMuY29uc3RyYWludEVkaXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvbnN0cmFpbnRzL2NvbnN0cmFpbnRFZGl0b3IvQ3VzdG9tQ29uc3RyYWludEVkaXRvclRhYi5qYXZhCmluZGV4IDZjN2E0MTcuLjJlNzQyZjggMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvbnN0cmFpbnRzLmNvbnN0cmFpbnRFZGl0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb25zdHJhaW50cy9jb25zdHJhaW50RWRpdG9yL0N1c3RvbUNvbnN0cmFpbnRFZGl0b3JUYWIuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb25zdHJhaW50cy5jb25zdHJhaW50RWRpdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29uc3RyYWludHMvY29uc3RyYWludEVkaXRvci9DdXN0b21Db25zdHJhaW50RWRpdG9yVGFiLmphdmEKQEAgLTEsOSArMSw5IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIENvcHlyaWdodCAoQykgMjAxNyBGb25kYXppb25lIEJydW5vIEtlc3NsZXIuDQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqIA0KICAqIENvbnRyaWJ1dG9yczoNCiAgKiAgICAgQWxiZXJ0byBEZWJpYXNpIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS9hYm91dC5odG1sIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS9hYm91dC5odG1sCmluZGV4IGRkM2MwODkuLjE2NGY3ODEgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUvYWJvdXQuaHRtbAorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlL2Fib3V0Lmh0bWwKQEAgLTIsMjcgKzIsMzUgQEAKICAgICAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+CiA8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+CiA8aGVhZD4KLTxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiLz4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiIC8+CiA8dGl0bGU+QWJvdXQ8L3RpdGxlPgogPC9oZWFkPgogPGJvZHkgbGFuZz0iRU4tVVMiPgotPGgyPkFib3V0IFRoaXMgQ29udGVudDwvaDI+Ci0gCi08cD5Ob3ZlbWJlciAxNCwgMjAwODwvcD4JCi08aDM+TGljZW5zZTwvaDM+CisJPGgyPkFib3V0IFRoaXMgQ29udGVudDwvaDI+CiAKLTxwPlRoZSBFY2xpcHNlIEZvdW5kYXRpb24gbWFrZXMgYXZhaWxhYmxlIGFsbCBjb250ZW50IGluIHRoaXMgcGx1Zy1pbiAoJnF1b3Q7Q29udGVudCZxdW90OykuICBVbmxlc3Mgb3RoZXJ3aXNlIAotaW5kaWNhdGVkIGJlbG93LCB0aGUgQ29udGVudCBpcyBwcm92aWRlZCB0byB5b3UgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZQotRWNsaXBzZSBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDEuMCAoJnF1b3Q7RVBMJnF1b3Q7KS4gIEEgY29weSBvZiB0aGUgRVBMIGlzIGF2YWlsYWJsZSAKLWF0IDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbDwvYT4uCi1Gb3IgcHVycG9zZXMgb2YgdGhlIEVQTCwgJnF1b3Q7UHJvZ3JhbSZxdW90OyB3aWxsIG1lYW4gdGhlIENvbnRlbnQuPC9wPgorCTxwPk5vdmVtYmVyIDMwLCAyMDE3PC9wPgorCTxoMz5MaWNlbnNlPC9oMz4KIAotPHA+SWYgeW91IGRpZCBub3QgcmVjZWl2ZSB0aGlzIENvbnRlbnQgZGlyZWN0bHkgZnJvbSB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uLCB0aGUgQ29udGVudCBpcyAKLWJlaW5nIHJlZGlzdHJpYnV0ZWQgYnkgYW5vdGhlciBwYXJ0eSAoJnF1b3Q7UmVkaXN0cmlidXRvciZxdW90OykgYW5kIGRpZmZlcmVudCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBtYXkKLWFwcGx5IHRvIHlvdXIgdXNlIG9mIGFueSBvYmplY3QgY29kZSBpbiB0aGUgQ29udGVudC4gIENoZWNrIHRoZSBSZWRpc3RyaWJ1dG9yJ3MgbGljZW5zZSB0aGF0IHdhcyAKLXByb3ZpZGVkIHdpdGggdGhlIENvbnRlbnQuICBJZiBubyBzdWNoIGxpY2Vuc2UgZXhpc3RzLCBjb250YWN0IHRoZSBSZWRpc3RyaWJ1dG9yLiAgVW5sZXNzIG90aGVyd2lzZQotaW5kaWNhdGVkIGJlbG93LCB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVQTCBzdGlsbCBhcHBseSB0byBhbnkgc291cmNlIGNvZGUgaW4gdGhlIENvbnRlbnQKLWFuZCBzdWNoIHNvdXJjZSBjb2RlIG1heSBiZSBvYnRhaW5lZCBhdCA8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnPC9hPi48L3A+CisJPHA+CisJCVRoZSBFY2xpcHNlIEZvdW5kYXRpb24gbWFrZXMgYXZhaWxhYmxlIGFsbCBjb250ZW50IGluIHRoaXMgcGx1Zy1pbgorCQkoJnF1b3Q7Q29udGVudCZxdW90OykuIFVubGVzcyBvdGhlcndpc2UgaW5kaWNhdGVkIGJlbG93LCB0aGUgQ29udGVudAorCQlpcyBwcm92aWRlZCB0byB5b3UgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFY2xpcHNlCisJCVB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMi4wICgmcXVvdDtFUEwmcXVvdDspLiBBIGNvcHkgb2YgdGhlIEVQTCBpcworCQlhdmFpbGFibGUgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjA8L2E+LgorCQlGb3IgcHVycG9zZXMgb2YgdGhlIEVQTCwgJnF1b3Q7UHJvZ3JhbSZxdW90OyB3aWxsIG1lYW4gdGhlIENvbnRlbnQuCisJPC9wPgorCisJPHA+CisJCUlmIHlvdSBkaWQgbm90IHJlY2VpdmUgdGhpcyBDb250ZW50IGRpcmVjdGx5IGZyb20gdGhlIEVjbGlwc2UKKwkJRm91bmRhdGlvbiwgdGhlIENvbnRlbnQgaXMgYmVpbmcgcmVkaXN0cmlidXRlZCBieSBhbm90aGVyIHBhcnR5CisJCSgmcXVvdDtSZWRpc3RyaWJ1dG9yJnF1b3Q7KSBhbmQgZGlmZmVyZW50IHRlcm1zIGFuZCBjb25kaXRpb25zIG1heQorCQlhcHBseSB0byB5b3VyIHVzZSBvZiBhbnkgb2JqZWN0IGNvZGUgaW4gdGhlIENvbnRlbnQuIENoZWNrIHRoZQorCQlSZWRpc3RyaWJ1dG9yJ3MgbGljZW5zZSB0aGF0IHdhcyBwcm92aWRlZCB3aXRoIHRoZSBDb250ZW50LiBJZiBubyBzdWNoCisJCWxpY2Vuc2UgZXhpc3RzLCBjb250YWN0IHRoZSBSZWRpc3RyaWJ1dG9yLiBVbmxlc3Mgb3RoZXJ3aXNlIGluZGljYXRlZAorCQliZWxvdywgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFUEwgc3RpbGwgYXBwbHkgdG8gYW55IHNvdXJjZQorCQljb2RlIGluIHRoZSBDb250ZW50IGFuZCBzdWNoIHNvdXJjZSBjb2RlIG1heSBiZSBvYnRhaW5lZCBhdCA8YQorCQkJaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy8iPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmc8L2E+LgorCTwvcD4KIAogPC9ib2R5PgogPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUvbGljZW5zZS9Db3B5cmlnaHQudHh0IGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS9saWNlbnNlL0NvcHlyaWdodC50eHQKaW5kZXggZWEzNGFmYy4uNjUwNGEwOSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS9saWNlbnNlL0NvcHlyaWdodC50eHQKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS9saWNlbnNlL0NvcHlyaWdodC50eHQKQEAgLTksNSArOSw1IEBACiAtLSBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzICAtLQogLS0gYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAgLS0KIC0tIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgICAgIC0tCi0tLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlL3NjaGVtYS9vcmcucG9sYXJzeXMuY2hlc3MuZGlhZ3JhbUxpc3RlbmVyLmV4c2QgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlL3NjaGVtYS9vcmcucG9sYXJzeXMuY2hlc3MuZGlhZ3JhbUxpc3RlbmVyLmV4c2QKaW5kZXggNGU5NGMzMi4uMzBiMmRmOCAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS9zY2hlbWEvb3JnLnBvbGFyc3lzLmNoZXNzLmRpYWdyYW1MaXN0ZW5lci5leHNkCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUvc2NoZW1hL29yZy5wb2xhcnN5cy5jaGVzcy5kaWFncmFtTGlzdGVuZXIuZXhzZApAQCAtMTI4LDcgKzEyOCw3IEBACiAtLSBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzICAtLQogLS0gYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAgLS0KIC0tIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgICAgIC0tCi0tLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICA8L2RvY3VtZW50YXRpb24+CiAgICA8L2Fubm90YXRpb24+CmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlL3NjaGVtYS9vcmcucG9sYXJzeXMuY2hlc3MucmVzb3VyY2VMaXN0ZW5lci5leHNkIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS9zY2hlbWEvb3JnLnBvbGFyc3lzLmNoZXNzLnJlc291cmNlTGlzdGVuZXIuZXhzZAppbmRleCAwMzY5Y2JhLi4wNmRmMTYzIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlL3NjaGVtYS9vcmcucG9sYXJzeXMuY2hlc3MucmVzb3VyY2VMaXN0ZW5lci5leHNkCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUvc2NoZW1hL29yZy5wb2xhcnN5cy5jaGVzcy5yZXNvdXJjZUxpc3RlbmVyLmV4c2QKQEAgLTEyOCw3ICsxMjgsNyBAQAogLS0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAgLS0KIC0tIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgIC0tCiAtLSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0ICAgICAtLQotLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgPC9kb2N1bWVudGF0aW9uPgogICAgPC9hbm5vdGF0aW9uPgpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS9zY2hlbWEvb3JnLnBvbGFyc3lzLmNoZXNzLnNlbGVjdGlvbkxpc3RlbmVyLmV4c2QgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlL3NjaGVtYS9vcmcucG9sYXJzeXMuY2hlc3Muc2VsZWN0aW9uTGlzdGVuZXIuZXhzZAppbmRleCBhNmUzOTE4Li5mZmI5NmViIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlL3NjaGVtYS9vcmcucG9sYXJzeXMuY2hlc3Muc2VsZWN0aW9uTGlzdGVuZXIuZXhzZAorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlL3NjaGVtYS9vcmcucG9sYXJzeXMuY2hlc3Muc2VsZWN0aW9uTGlzdGVuZXIuZXhzZApAQCAtMTI4LDcgKzEyOCw3IEBACiAtLSBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzICAtLQogLS0gYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAgLS0KIC0tIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgICAgIC0tCi0tLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICA8L2RvY3VtZW50YXRpb24+CiAgICA8L2Fubm90YXRpb24+CmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlL3NyYy9qYXZheC94bWwvYmluZC9FbXB0eUNsYXNzLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlL3NyYy9qYXZheC94bWwvYmluZC9FbXB0eUNsYXNzLmphdmEKaW5kZXggMTc3ZTVhNi4uOWQ1ZmExYiAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS9zcmMvamF2YXgveG1sL2JpbmQvRW1wdHlDbGFzcy5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUvc3JjL2phdmF4L3htbC9iaW5kL0VtcHR5Q2xhc3MuamF2YQpAQCAtMSwzICsxLDEwIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqIENvcHlyaWdodCAoQykgMjAyMCANCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQorICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQogcGFja2FnZSBqYXZheC54bWwuYmluZDsNCiANCiBwdWJsaWMgY2xhc3MgRW1wdHlDbGFzcyB7DQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvcmUvQWN0aXZhdG9yLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29yZS9BY3RpdmF0b3IuamF2YQppbmRleCBhY2Y5YzUzLi40MjVmMzc0IDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29yZS9BY3RpdmF0b3IuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29yZS9BY3RpdmF0b3IuamF2YQpAQCAtMTAsNyArMTAsNyBAQAogLS0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAgLS0KIC0tIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgIC0tCiAtLSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0ICAgICAtLQotLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogKi8KIApkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvcmUvY29uc3RyYWludC9Db25zdHJhaW50TGlzdC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvcmUvY29uc3RyYWludC9Db25zdHJhaW50TGlzdC5qYXZhCmluZGV4IGRmYTVhOTQuLjY5MWZmNjUgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb3JlL2NvbnN0cmFpbnQvQ29uc3RyYWludExpc3QuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29yZS9jb25zdHJhaW50L0NvbnN0cmFpbnRMaXN0LmphdmEKQEAgLTEwLDcgKzEwLDcgQEAKIC0tIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgIC0tCiAtLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlICAtLQogLS0gdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCAgICAgLS0KLS0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICovCiAKZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb3JlL2NvbnN0cmFpbnQvRHluYW1pY0NvbnN0cmFpbnQuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb3JlL2NvbnN0cmFpbnQvRHluYW1pY0NvbnN0cmFpbnQuamF2YQppbmRleCBjNTRjMzRiLi40YzYzOGRkIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29yZS9jb25zdHJhaW50L0R5bmFtaWNDb25zdHJhaW50LmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvcmUvY29uc3RyYWludC9EeW5hbWljQ29uc3RyYWludC5qYXZhCkBAIC0xMiw3ICsxMiw3IEBACiAtLSBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzICAtLQogLS0gYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAgLS0KIC0tIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgICAgIC0tCi0tLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqLwogCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29yZS9jb25zdHJhaW50L0ZpbHRlcmFibGVEeW5hbWljQ29uc3RyYWludC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvcmUvY29uc3RyYWludC9GaWx0ZXJhYmxlRHluYW1pY0NvbnN0cmFpbnQuamF2YQppbmRleCAzZjY0YWI3Li41MjUxMTdiIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29yZS9jb25zdHJhaW50L0ZpbHRlcmFibGVEeW5hbWljQ29uc3RyYWludC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb3JlL2NvbnN0cmFpbnQvRmlsdGVyYWJsZUR5bmFtaWNDb25zdHJhaW50LmphdmEKQEAgLTEwLDcgKzEwLDcgQEAKIC0tIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgIC0tCiAtLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlICAtLQogLS0gdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCAgICAgLS0KLS0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICovCiAKZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb3JlL2NvbnN0cmFpbnQvSUNvbnN0cmFpbnQuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb3JlL2NvbnN0cmFpbnQvSUNvbnN0cmFpbnQuamF2YQppbmRleCAyOTFjYjkwLi45ODAxMWQxIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29yZS9jb25zdHJhaW50L0lDb25zdHJhaW50LmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvcmUvY29uc3RyYWludC9JQ29uc3RyYWludC5qYXZhCkBAIC0xMCw3ICsxMCw3IEBACiAtLSBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzICAtLQogLS0gYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAgLS0KIC0tIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgICAgIC0tCi0tLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqLwogCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29yZS9jb25zdHJhaW50L1ByZWZlcmVuY2VQcm9wZXJ0aWVzLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29yZS9jb25zdHJhaW50L1ByZWZlcmVuY2VQcm9wZXJ0aWVzLmphdmEKaW5kZXggZGE4ODU5Mi4uMjNkZjM1NiAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvcmUvY29uc3RyYWludC9QcmVmZXJlbmNlUHJvcGVydGllcy5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb3JlL2NvbnN0cmFpbnQvUHJlZmVyZW5jZVByb3BlcnRpZXMuamF2YQpAQCAtMSwxMyArMSwyMCBAQAotcGFja2FnZSBvcmcucG9sYXJzeXMuY2hlc3MuY29yZS5jb25zdHJhaW50OwotCi0vKioKLSAqIFRoZSBDbGFzcyBQcmVmZXJlbmNlUHJvcGVydGllcy4KLSAqLwotcHVibGljIGNsYXNzIFByZWZlcmVuY2VQcm9wZXJ0aWVzIHsKLQkKLQkvKiogVGhlIGRpYWdyYW0gaW4gdmlldy4gKi8KLQlwdWJsaWMgc3RhdGljIFN0cmluZyBESUFHUkFNX0lOX1ZJRVc9IkRpYWdyYW1JblZpZXciOwotCQotCS8qKiBUaGUgcGFsZXR0ZXMgaW4gdmlldy4gKi8KLQlwdWJsaWMgc3RhdGljIFN0cmluZyBQQUxFVFRFU19JTl9WSUVXPSJQYWxldHRlSW5WaWV3IjsKLX0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICogQ29weXJpZ2h0IChDKSAyMDIwIA0KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCisgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCitwYWNrYWdlIG9yZy5wb2xhcnN5cy5jaGVzcy5jb3JlLmNvbnN0cmFpbnQ7DQorDQorLyoqDQorICogVGhlIENsYXNzIFByZWZlcmVuY2VQcm9wZXJ0aWVzLg0KKyAqLw0KK3B1YmxpYyBjbGFzcyBQcmVmZXJlbmNlUHJvcGVydGllcyB7DQorCQ0KKwkvKiogVGhlIGRpYWdyYW0gaW4gdmlldy4gKi8NCisJcHVibGljIHN0YXRpYyBTdHJpbmcgRElBR1JBTV9JTl9WSUVXPSJEaWFncmFtSW5WaWV3IjsNCisJDQorCS8qKiBUaGUgcGFsZXR0ZXMgaW4gdmlldy4gKi8NCisJcHVibGljIHN0YXRpYyBTdHJpbmcgUEFMRVRURVNfSU5fVklFVz0iUGFsZXR0ZUluVmlldyI7DQorfQ0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb3JlL2NvbnN0cmFpbnQvU2V0dGFibGVTdGF0dXMuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb3JlL2NvbnN0cmFpbnQvU2V0dGFibGVTdGF0dXMuamF2YQppbmRleCA3Mzk4NmM0Li4zNzk5OThlIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29yZS9jb25zdHJhaW50L1NldHRhYmxlU3RhdHVzLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvcmUvY29uc3RyYWludC9TZXR0YWJsZVN0YXR1cy5qYXZhCkBAIC0xMCw3ICsxMCw3IEBACiAtLSBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzICAtLQogLS0gYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAgLS0KIC0tIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgICAgIC0tCi0tLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqLwogCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29yZS9leHRlbnNpb25wb2ludC9JQWRkUHJvZmlsZS5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvcmUvZXh0ZW5zaW9ucG9pbnQvSUFkZFByb2ZpbGUuamF2YQppbmRleCA2YTA4MDY0Li44ZDQyNGNlIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29yZS9leHRlbnNpb25wb2ludC9JQWRkUHJvZmlsZS5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb3JlL2V4dGVuc2lvbnBvaW50L0lBZGRQcm9maWxlLmphdmEKQEAgLTEsMjYgKzEsMzMgQEAKLXBhY2thZ2Ugb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUuZXh0ZW5zaW9ucG9pbnQ7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUucmVzb3VyY2UuUmVzb3VyY2VTZXQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuTW9kZWw7Ci0KLS8qKgotICogVGhlIEludGVyZmFjZSBJQWRkUHJvZmlsZS4KLSAqLwotcHVibGljIGludGVyZmFjZSBJQWRkUHJvZmlsZSB7Ci0KLQkvKioKLQkgKiBBcHBsaWVzIGEgcHJvZmlsZSB0byB0aGUgZ2l2ZW4gbW9kZWwgYW5kIHJlc291cmNlc2V0LgotCSAqCi0JICogQHBhcmFtIG93bmVyIHRoZSBvd25lcgotCSAqIEBwYXJhbSByZXNvdXJjZVNldCB0aGUgcmVzb3VyY2Ugc2V0Ci0JICovCi0Jdm9pZCBhZGRQcm9maWxlKE1vZGVsIG93bmVyLCBSZXNvdXJjZVNldCByZXNvdXJjZVNldCk7Ci0KLQkvKioKLQkgKiBMb2FkcyBhIHByb2ZpbGUgZm9yIHRoZSBnaXZlbiBSZXNvdXJjZVNldC4KLQkgKgotCSAqIEBwYXJhbSByZXNvdXJjZVNldCB0aGUgcmVzb3VyY2Ugc2V0Ci0JICovCi0Jdm9pZCBsb2FkUHJvZmlsZShSZXNvdXJjZVNldCByZXNvdXJjZVNldCk7Ci0KLX0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICogQ29weXJpZ2h0IChDKSAyMDIwIA0KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCisgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCitwYWNrYWdlIG9yZy5wb2xhcnN5cy5jaGVzcy5jb3JlLmV4dGVuc2lvbnBvaW50Ow0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUucmVzb3VyY2UuUmVzb3VyY2VTZXQ7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLk1vZGVsOw0KKw0KKy8qKg0KKyAqIFRoZSBJbnRlcmZhY2UgSUFkZFByb2ZpbGUuDQorICovDQorcHVibGljIGludGVyZmFjZSBJQWRkUHJvZmlsZSB7DQorDQorCS8qKg0KKwkgKiBBcHBsaWVzIGEgcHJvZmlsZSB0byB0aGUgZ2l2ZW4gbW9kZWwgYW5kIHJlc291cmNlc2V0Lg0KKwkgKg0KKwkgKiBAcGFyYW0gb3duZXIgdGhlIG93bmVyDQorCSAqIEBwYXJhbSByZXNvdXJjZVNldCB0aGUgcmVzb3VyY2Ugc2V0DQorCSAqLw0KKwl2b2lkIGFkZFByb2ZpbGUoTW9kZWwgb3duZXIsIFJlc291cmNlU2V0IHJlc291cmNlU2V0KTsNCisNCisJLyoqDQorCSAqIExvYWRzIGEgcHJvZmlsZSBmb3IgdGhlIGdpdmVuIFJlc291cmNlU2V0Lg0KKwkgKg0KKwkgKiBAcGFyYW0gcmVzb3VyY2VTZXQgdGhlIHJlc291cmNlIHNldA0KKwkgKi8NCisJdm9pZCBsb2FkUHJvZmlsZShSZXNvdXJjZVNldCByZXNvdXJjZVNldCk7DQorDQorfQ0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb3JlL2ludGVybmFsL2V4dGVuc2lvbnBvaW50L0FkZFByb2ZpbGVIYW5kbGVyLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29yZS9pbnRlcm5hbC9leHRlbnNpb25wb2ludC9BZGRQcm9maWxlSGFuZGxlci5qYXZhCmluZGV4IDRlODY3NWIuLmNiYWZmNjkgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb3JlL2ludGVybmFsL2V4dGVuc2lvbnBvaW50L0FkZFByb2ZpbGVIYW5kbGVyLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvcmUvaW50ZXJuYWwvZXh0ZW5zaW9ucG9pbnQvQWRkUHJvZmlsZUhhbmRsZXIuamF2YQpAQCAtMSwxNDEgKzEsMTQ4IEBACi1wYWNrYWdlIG9yZy5wb2xhcnN5cy5jaGVzcy5jb3JlLmludGVybmFsLmV4dGVuc2lvbnBvaW50OwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLkNvcmVFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklDb25maWd1cmF0aW9uRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSUV4dGVuc2lvblJlZ2lzdHJ5OwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU2FmZVJ1bm5hYmxlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5TYWZlUnVubmVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5yZXNvdXJjZS5SZXNvdXJjZVNldDsKLS8vaW1wb3J0IG9yZy5lY2xpcHNlLmU0LmNvcmUuZGkuYW5ub3RhdGlvbnMuRXhlY3V0ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5Nb2RlbDsKLWltcG9ydCBvcmcucG9sYXJzeXMuY2hlc3MuY29yZS5BY3RpdmF0b3I7Ci1pbXBvcnQgb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUuZXh0ZW5zaW9ucG9pbnQuSUFkZFByb2ZpbGU7Ci0KLQotLyoqCi0gKiBUaGUgQ2xhc3MgQWRkUHJvZmlsZUhhbmRsZXIuCi0gKi8KLXB1YmxpYyBjbGFzcyBBZGRQcm9maWxlSGFuZGxlciB7Ci0KLQkgIC8qKiBUaGUgQ29uc3RhbnQgQUREUFJPRklMRV9JRC4gKi8KLSAgCXByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBBRERQUk9GSUxFX0lEID0gCi0JICAgICAgIm9yZy5wb2xhcnN5cy5jaGVzcy5hZGRwcm9maWxlIjsKLQkgIAotCSAgLyoqCi0gIAkgKiBFeGVjdXRlIGFkZCBwcm9maWxlLgotICAJICoKLSAgCSAqIEBwYXJhbSByZWdpc3RyeSB0aGUgcmVnaXN0cnkKLSAgCSAqIEBwYXJhbSBvd25lciB0aGUgb3duZXIKLSAgCSAqIEBwYXJhbSByZXNvdXJjZVNldCB0aGUgcmVzb3VyY2Ugc2V0Ci0gIAkgKi8KLSAgCXB1YmxpYyB2b2lkIGV4ZWN1dGVBZGRQcm9maWxlKElFeHRlbnNpb25SZWdpc3RyeSByZWdpc3RyeSwgTW9kZWwgb3duZXIsIFJlc291cmNlU2V0IHJlc291cmNlU2V0KSB7Ci0JCSAgZXZhbHVhdGVBZGRQcm9maWxlKHJlZ2lzdHJ5LCBvd25lciwgcmVzb3VyY2VTZXQpOwotCSAgfQotCSAgCi0JICAvKioKLSAgCSAqIEV2YWx1YXRlIGFkZCBwcm9maWxlLgotICAJICoKLSAgCSAqIEBwYXJhbSByZWdpc3RyeSB0aGUgcmVnaXN0cnkKLSAgCSAqIEBwYXJhbSBvd25lciB0aGUgb3duZXIKLSAgCSAqIEBwYXJhbSByZXNvdXJjZVNldCB0aGUgcmVzb3VyY2Ugc2V0Ci0gIAkgKi8KLSAgCXByaXZhdGUgdm9pZCBldmFsdWF0ZUFkZFByb2ZpbGUoSUV4dGVuc2lvblJlZ2lzdHJ5IHJlZ2lzdHJ5LCBNb2RlbCBvd25lciwgUmVzb3VyY2VTZXQgcmVzb3VyY2VTZXQpIHsKLQkgICAgSUNvbmZpZ3VyYXRpb25FbGVtZW50W10gY29uZmlnID0KLQkgICAgICAgIHJlZ2lzdHJ5LmdldENvbmZpZ3VyYXRpb25FbGVtZW50c0ZvcihBRERQUk9GSUxFX0lEKTsKLQkgICAgdHJ5IHsKLQkgICAgICBmb3IgKElDb25maWd1cmF0aW9uRWxlbWVudCBlIDogY29uZmlnKSB7Ci0JICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkV2YWx1YXRpbmcgZXh0ZW5zaW9uIik7Ci0JICAgICAgICBmaW5hbCBPYmplY3QgbyA9Ci0JICAgICAgICAgICAgZS5jcmVhdGVFeGVjdXRhYmxlRXh0ZW5zaW9uKCJjbGFzcyIpOwotCSAgICAgICAgaWYgKG8gaW5zdGFuY2VvZiBJQWRkUHJvZmlsZSkgewotCSAgICAgICAgCWFkZFByb2ZpbGUobywgb3duZXIsIHJlc291cmNlU2V0KTsKLQkgICAgICAgIH0KLQkgICAgICB9Ci0JICAgIH0gY2F0Y2ggKENvcmVFeGNlcHRpb24gZXgpIHsKLQkgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oZXguZ2V0TWVzc2FnZSgpKTsKLQkgICAgICBBY3RpdmF0b3IuZXJyb3IoImV2YWx1YXRlQWRkUHJvZmlsZSBlcnJvciIsIGV4KTsKLQkgICAgfQotCSAgfQotCi0JICAvKioKLSAgCSAqIEFkZHMgdGhlIHByb2ZpbGUuCi0gIAkgKgotICAJICogQHBhcmFtIG8gdGhlIG8KLSAgCSAqIEBwYXJhbSBvd25lciB0aGUgb3duZXIKLSAgCSAqIEBwYXJhbSByZXNvdXJjZVNldCB0aGUgcmVzb3VyY2Ugc2V0Ci0gIAkgKi8KLSAgCXByaXZhdGUgdm9pZCBhZGRQcm9maWxlKGZpbmFsIE9iamVjdCBvLCBmaW5hbCBNb2RlbCBvd25lciwgZmluYWwgUmVzb3VyY2VTZXQgcmVzb3VyY2VTZXQpIHsKLQkgICAgSVNhZmVSdW5uYWJsZSBydW5uYWJsZSA9IG5ldyBJU2FmZVJ1bm5hYmxlKCkgewotCSAgICAgIEBPdmVycmlkZQotCSAgICAgIHB1YmxpYyB2b2lkIGhhbmRsZUV4Y2VwdGlvbihUaHJvd2FibGUgZSkgewotCSAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJFeGNlcHRpb24gaW4gY2xpZW50Iik7Ci0JICAgICAgICBBY3RpdmF0b3IuZXJyb3IoIkV4Y2VwdGlvbiBpbiBjbGllbnQiLCBlKTsKLQkgICAgICB9Ci0KLQkgICAgICBAT3ZlcnJpZGUKLQkgICAgICBwdWJsaWMgdm9pZCBydW4oKSB0aHJvd3MgRXhjZXB0aW9uIHsKLQkgICAgCSgoSUFkZFByb2ZpbGUpIG8pLmFkZFByb2ZpbGUob3duZXIsIHJlc291cmNlU2V0KTsKLQkgICAgICAgCi0JICAgICAgfQotCSAgICB9OwotCSAgICBTYWZlUnVubmVyLnJ1bihydW5uYWJsZSk7Ci0JICB9Ci0JICAKLQkgIC8qKgotICAJICogRXhlY3V0ZSBsb2FkIHByb2ZpbGUuCi0gIAkgKgotICAJICogQHBhcmFtIHJlZ2lzdHJ5IHRoZSByZWdpc3RyeQotICAJICogQHBhcmFtIHJlc291cmNlU2V0IHRoZSByZXNvdXJjZSBzZXQKLSAgCSAqLwotICAJcHVibGljIHZvaWQgZXhlY3V0ZUxvYWRQcm9maWxlKElFeHRlbnNpb25SZWdpc3RyeSByZWdpc3RyeSwgUmVzb3VyY2VTZXQgcmVzb3VyY2VTZXQpIHsKLQkJICBldmFsdWF0ZUxvYWRQcm9maWxlKHJlZ2lzdHJ5LCByZXNvdXJjZVNldCk7Ci0JICB9Ci0JICAKLQkgIC8qKgotICAJICogRXZhbHVhdGUgbG9hZCBwcm9maWxlLgotICAJICoKLSAgCSAqIEBwYXJhbSByZWdpc3RyeSB0aGUgcmVnaXN0cnkKLSAgCSAqIEBwYXJhbSByZXNvdXJjZVNldCB0aGUgcmVzb3VyY2Ugc2V0Ci0gIAkgKi8KLSAgCXByaXZhdGUgdm9pZCBldmFsdWF0ZUxvYWRQcm9maWxlKElFeHRlbnNpb25SZWdpc3RyeSByZWdpc3RyeSwgUmVzb3VyY2VTZXQgcmVzb3VyY2VTZXQpIHsKLQkgICAgSUNvbmZpZ3VyYXRpb25FbGVtZW50W10gY29uZmlnID0KLQkgICAgICAgIHJlZ2lzdHJ5LmdldENvbmZpZ3VyYXRpb25FbGVtZW50c0ZvcihBRERQUk9GSUxFX0lEKTsKLQkgICAgdHJ5IHsKLQkgICAgICBmb3IgKElDb25maWd1cmF0aW9uRWxlbWVudCBlIDogY29uZmlnKSB7Ci0JICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkV2YWx1YXRpbmcgZXh0ZW5zaW9uIik7Ci0JICAgICAgICBmaW5hbCBPYmplY3QgbyA9Ci0JICAgICAgICAgICAgZS5jcmVhdGVFeGVjdXRhYmxlRXh0ZW5zaW9uKCJjbGFzcyIpOwotCSAgICAgICAgaWYgKG8gaW5zdGFuY2VvZiBJQWRkUHJvZmlsZSkgewotCSAgICAgICAgCWxvYWRQcm9maWxlKG8sIHJlc291cmNlU2V0KTsKLQkgICAgICAgIH0KLQkgICAgICB9Ci0JICAgIH0gY2F0Y2ggKENvcmVFeGNlcHRpb24gZXgpIHsKLQkgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oZXguZ2V0TWVzc2FnZSgpKTsKLQkgICAgICBBY3RpdmF0b3IuZXJyb3IoIkV2YWx1YXRlTG9hZFByb2ZpbGUgZXJyb3IiLCBleCk7Ci0JICAgIH0KLQkgIH0KLQkgIAotCSAgLyoqCi0gIAkgKiBMb2FkIHByb2ZpbGUuCi0gIAkgKgotICAJICogQHBhcmFtIG8gdGhlIG8KLSAgCSAqIEBwYXJhbSByZXNvdXJjZVNldCB0aGUgcmVzb3VyY2Ugc2V0Ci0gIAkgKi8KLSAgCXByaXZhdGUgdm9pZCBsb2FkUHJvZmlsZShmaW5hbCBPYmplY3QgbywgZmluYWwgUmVzb3VyY2VTZXQgcmVzb3VyY2VTZXQpIHsKLQkJICAgIElTYWZlUnVubmFibGUgcnVubmFibGUgPSBuZXcgSVNhZmVSdW5uYWJsZSgpIHsKLQkJICAgICAgQE92ZXJyaWRlCi0JCSAgICAgIHB1YmxpYyB2b2lkIGhhbmRsZUV4Y2VwdGlvbihUaHJvd2FibGUgZSkgewotCQkgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiRXhjZXB0aW9uIGluIGNsaWVudCIpOwotCQkgICAgICAgIEFjdGl2YXRvci5lcnJvcigiRXhjZXB0aW9uIGluIGNsaWVudCIsIGUpOwotCQkgICAgICB9Ci0KLQkJICAgICAgQE92ZXJyaWRlCi0JCSAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHRocm93cyBFeGNlcHRpb24geyAgICAJICAKLQkJICAgIAkgICgoSUFkZFByb2ZpbGUpIG8pLmxvYWRQcm9maWxlKHJlc291cmNlU2V0KTsKLQkJICAgICAgfQotCQkgICAgfTsKLQkJICAgIFNhZmVSdW5uZXIucnVuKHJ1bm5hYmxlKTsKLQkJICB9Ci0JICAKLQl9IAotCQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgDQorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KKyAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KK3BhY2thZ2Ugb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUuaW50ZXJuYWwuZXh0ZW5zaW9ucG9pbnQ7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5Db3JlRXhjZXB0aW9uOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSUNvbmZpZ3VyYXRpb25FbGVtZW50Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSUV4dGVuc2lvblJlZ2lzdHJ5Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVNhZmVSdW5uYWJsZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlNhZmVSdW5uZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5yZXNvdXJjZS5SZXNvdXJjZVNldDsNCisvL2ltcG9ydCBvcmcuZWNsaXBzZS5lNC5jb3JlLmRpLmFubm90YXRpb25zLkV4ZWN1dGU7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLk1vZGVsOw0KK2ltcG9ydCBvcmcucG9sYXJzeXMuY2hlc3MuY29yZS5BY3RpdmF0b3I7DQoraW1wb3J0IG9yZy5wb2xhcnN5cy5jaGVzcy5jb3JlLmV4dGVuc2lvbnBvaW50LklBZGRQcm9maWxlOw0KKw0KKw0KKy8qKg0KKyAqIFRoZSBDbGFzcyBBZGRQcm9maWxlSGFuZGxlci4NCisgKi8NCitwdWJsaWMgY2xhc3MgQWRkUHJvZmlsZUhhbmRsZXIgew0KKw0KKwkgIC8qKiBUaGUgQ29uc3RhbnQgQUREUFJPRklMRV9JRC4gKi8NCisgIAlwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgQUREUFJPRklMRV9JRCA9IA0KKwkgICAgICAib3JnLnBvbGFyc3lzLmNoZXNzLmFkZHByb2ZpbGUiOw0KKwkgIA0KKwkgIC8qKg0KKyAgCSAqIEV4ZWN1dGUgYWRkIHByb2ZpbGUuDQorICAJICoNCisgIAkgKiBAcGFyYW0gcmVnaXN0cnkgdGhlIHJlZ2lzdHJ5DQorICAJICogQHBhcmFtIG93bmVyIHRoZSBvd25lcg0KKyAgCSAqIEBwYXJhbSByZXNvdXJjZVNldCB0aGUgcmVzb3VyY2Ugc2V0DQorICAJICovDQorICAJcHVibGljIHZvaWQgZXhlY3V0ZUFkZFByb2ZpbGUoSUV4dGVuc2lvblJlZ2lzdHJ5IHJlZ2lzdHJ5LCBNb2RlbCBvd25lciwgUmVzb3VyY2VTZXQgcmVzb3VyY2VTZXQpIHsNCisJCSAgZXZhbHVhdGVBZGRQcm9maWxlKHJlZ2lzdHJ5LCBvd25lciwgcmVzb3VyY2VTZXQpOw0KKwkgIH0NCisJICANCisJICAvKioNCisgIAkgKiBFdmFsdWF0ZSBhZGQgcHJvZmlsZS4NCisgIAkgKg0KKyAgCSAqIEBwYXJhbSByZWdpc3RyeSB0aGUgcmVnaXN0cnkNCisgIAkgKiBAcGFyYW0gb3duZXIgdGhlIG93bmVyDQorICAJICogQHBhcmFtIHJlc291cmNlU2V0IHRoZSByZXNvdXJjZSBzZXQNCisgIAkgKi8NCisgIAlwcml2YXRlIHZvaWQgZXZhbHVhdGVBZGRQcm9maWxlKElFeHRlbnNpb25SZWdpc3RyeSByZWdpc3RyeSwgTW9kZWwgb3duZXIsIFJlc291cmNlU2V0IHJlc291cmNlU2V0KSB7DQorCSAgICBJQ29uZmlndXJhdGlvbkVsZW1lbnRbXSBjb25maWcgPQ0KKwkgICAgICAgIHJlZ2lzdHJ5LmdldENvbmZpZ3VyYXRpb25FbGVtZW50c0ZvcihBRERQUk9GSUxFX0lEKTsNCisJICAgIHRyeSB7DQorCSAgICAgIGZvciAoSUNvbmZpZ3VyYXRpb25FbGVtZW50IGUgOiBjb25maWcpIHsNCisJICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkV2YWx1YXRpbmcgZXh0ZW5zaW9uIik7DQorCSAgICAgICAgZmluYWwgT2JqZWN0IG8gPQ0KKwkgICAgICAgICAgICBlLmNyZWF0ZUV4ZWN1dGFibGVFeHRlbnNpb24oImNsYXNzIik7DQorCSAgICAgICAgaWYgKG8gaW5zdGFuY2VvZiBJQWRkUHJvZmlsZSkgew0KKwkgICAgICAgIAlhZGRQcm9maWxlKG8sIG93bmVyLCByZXNvdXJjZVNldCk7DQorCSAgICAgICAgfQ0KKwkgICAgICB9DQorCSAgICB9IGNhdGNoIChDb3JlRXhjZXB0aW9uIGV4KSB7DQorCSAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihleC5nZXRNZXNzYWdlKCkpOw0KKwkgICAgICBBY3RpdmF0b3IuZXJyb3IoImV2YWx1YXRlQWRkUHJvZmlsZSBlcnJvciIsIGV4KTsNCisJICAgIH0NCisJICB9DQorDQorCSAgLyoqDQorICAJICogQWRkcyB0aGUgcHJvZmlsZS4NCisgIAkgKg0KKyAgCSAqIEBwYXJhbSBvIHRoZSBvDQorICAJICogQHBhcmFtIG93bmVyIHRoZSBvd25lcg0KKyAgCSAqIEBwYXJhbSByZXNvdXJjZVNldCB0aGUgcmVzb3VyY2Ugc2V0DQorICAJICovDQorICAJcHJpdmF0ZSB2b2lkIGFkZFByb2ZpbGUoZmluYWwgT2JqZWN0IG8sIGZpbmFsIE1vZGVsIG93bmVyLCBmaW5hbCBSZXNvdXJjZVNldCByZXNvdXJjZVNldCkgew0KKwkgICAgSVNhZmVSdW5uYWJsZSBydW5uYWJsZSA9IG5ldyBJU2FmZVJ1bm5hYmxlKCkgew0KKwkgICAgICBAT3ZlcnJpZGUNCisJICAgICAgcHVibGljIHZvaWQgaGFuZGxlRXhjZXB0aW9uKFRocm93YWJsZSBlKSB7DQorCSAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJFeGNlcHRpb24gaW4gY2xpZW50Iik7DQorCSAgICAgICAgQWN0aXZhdG9yLmVycm9yKCJFeGNlcHRpb24gaW4gY2xpZW50IiwgZSk7DQorCSAgICAgIH0NCisNCisJICAgICAgQE92ZXJyaWRlDQorCSAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHRocm93cyBFeGNlcHRpb24gew0KKwkgICAgCSgoSUFkZFByb2ZpbGUpIG8pLmFkZFByb2ZpbGUob3duZXIsIHJlc291cmNlU2V0KTsNCisJICAgICAgIA0KKwkgICAgICB9DQorCSAgICB9Ow0KKwkgICAgU2FmZVJ1bm5lci5ydW4ocnVubmFibGUpOw0KKwkgIH0NCisJICANCisJICAvKioNCisgIAkgKiBFeGVjdXRlIGxvYWQgcHJvZmlsZS4NCisgIAkgKg0KKyAgCSAqIEBwYXJhbSByZWdpc3RyeSB0aGUgcmVnaXN0cnkNCisgIAkgKiBAcGFyYW0gcmVzb3VyY2VTZXQgdGhlIHJlc291cmNlIHNldA0KKyAgCSAqLw0KKyAgCXB1YmxpYyB2b2lkIGV4ZWN1dGVMb2FkUHJvZmlsZShJRXh0ZW5zaW9uUmVnaXN0cnkgcmVnaXN0cnksIFJlc291cmNlU2V0IHJlc291cmNlU2V0KSB7DQorCQkgIGV2YWx1YXRlTG9hZFByb2ZpbGUocmVnaXN0cnksIHJlc291cmNlU2V0KTsNCisJICB9DQorCSAgDQorCSAgLyoqDQorICAJICogRXZhbHVhdGUgbG9hZCBwcm9maWxlLg0KKyAgCSAqDQorICAJICogQHBhcmFtIHJlZ2lzdHJ5IHRoZSByZWdpc3RyeQ0KKyAgCSAqIEBwYXJhbSByZXNvdXJjZVNldCB0aGUgcmVzb3VyY2Ugc2V0DQorICAJICovDQorICAJcHJpdmF0ZSB2b2lkIGV2YWx1YXRlTG9hZFByb2ZpbGUoSUV4dGVuc2lvblJlZ2lzdHJ5IHJlZ2lzdHJ5LCBSZXNvdXJjZVNldCByZXNvdXJjZVNldCkgew0KKwkgICAgSUNvbmZpZ3VyYXRpb25FbGVtZW50W10gY29uZmlnID0NCisJICAgICAgICByZWdpc3RyeS5nZXRDb25maWd1cmF0aW9uRWxlbWVudHNGb3IoQUREUFJPRklMRV9JRCk7DQorCSAgICB0cnkgew0KKwkgICAgICBmb3IgKElDb25maWd1cmF0aW9uRWxlbWVudCBlIDogY29uZmlnKSB7DQorCSAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJFdmFsdWF0aW5nIGV4dGVuc2lvbiIpOw0KKwkgICAgICAgIGZpbmFsIE9iamVjdCBvID0NCisJICAgICAgICAgICAgZS5jcmVhdGVFeGVjdXRhYmxlRXh0ZW5zaW9uKCJjbGFzcyIpOw0KKwkgICAgICAgIGlmIChvIGluc3RhbmNlb2YgSUFkZFByb2ZpbGUpIHsNCisJICAgICAgICAJbG9hZFByb2ZpbGUobywgcmVzb3VyY2VTZXQpOw0KKwkgICAgICAgIH0NCisJICAgICAgfQ0KKwkgICAgfSBjYXRjaCAoQ29yZUV4Y2VwdGlvbiBleCkgew0KKwkgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oZXguZ2V0TWVzc2FnZSgpKTsNCisJICAgICAgQWN0aXZhdG9yLmVycm9yKCJFdmFsdWF0ZUxvYWRQcm9maWxlIGVycm9yIiwgZXgpOw0KKwkgICAgfQ0KKwkgIH0NCisJICANCisJICAvKioNCisgIAkgKiBMb2FkIHByb2ZpbGUuDQorICAJICoNCisgIAkgKiBAcGFyYW0gbyB0aGUgbw0KKyAgCSAqIEBwYXJhbSByZXNvdXJjZVNldCB0aGUgcmVzb3VyY2Ugc2V0DQorICAJICovDQorICAJcHJpdmF0ZSB2b2lkIGxvYWRQcm9maWxlKGZpbmFsIE9iamVjdCBvLCBmaW5hbCBSZXNvdXJjZVNldCByZXNvdXJjZVNldCkgew0KKwkJICAgIElTYWZlUnVubmFibGUgcnVubmFibGUgPSBuZXcgSVNhZmVSdW5uYWJsZSgpIHsNCisJCSAgICAgIEBPdmVycmlkZQ0KKwkJICAgICAgcHVibGljIHZvaWQgaGFuZGxlRXhjZXB0aW9uKFRocm93YWJsZSBlKSB7DQorCQkgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiRXhjZXB0aW9uIGluIGNsaWVudCIpOw0KKwkJICAgICAgICBBY3RpdmF0b3IuZXJyb3IoIkV4Y2VwdGlvbiBpbiBjbGllbnQiLCBlKTsNCisJCSAgICAgIH0NCisNCisJCSAgICAgIEBPdmVycmlkZQ0KKwkJICAgICAgcHVibGljIHZvaWQgcnVuKCkgdGhyb3dzIEV4Y2VwdGlvbiB7ICAgIAkgIA0KKwkJICAgIAkgICgoSUFkZFByb2ZpbGUpIG8pLmxvYWRQcm9maWxlKHJlc291cmNlU2V0KTsNCisJCSAgICAgIH0NCisJCSAgICB9Ow0KKwkJICAgIFNhZmVSdW5uZXIucnVuKHJ1bm5hYmxlKTsNCisJCSAgfQ0KKwkgIA0KKwl9IA0KKwkNCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29yZS9pbnRlcm5hbC9wcmVmZXJlbmNlcy9DSEVTU01haW5QYWdlLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29yZS9pbnRlcm5hbC9wcmVmZXJlbmNlcy9DSEVTU01haW5QYWdlLmphdmEKaW5kZXggZGVjYWQ2NC4uM2IzYzBlOCAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvcmUvaW50ZXJuYWwvcHJlZmVyZW5jZXMvQ0hFU1NNYWluUGFnZS5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb3JlL2ludGVybmFsL3ByZWZlcmVuY2VzL0NIRVNTTWFpblBhZ2UuamF2YQpAQCAtMTAsNyArMTAsNyBAQAogLS0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAgLS0KIC0tIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgIC0tCiAtLSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0ICAgICAtLQotLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogKi8KIApkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvcmUvaW50ZXJuYWwvcHJlZmVyZW5jZXMvQ29uc3RyYWludFByZWZlcmVuY2VJbml0aWFsaXplci5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvcmUvaW50ZXJuYWwvcHJlZmVyZW5jZXMvQ29uc3RyYWludFByZWZlcmVuY2VJbml0aWFsaXplci5qYXZhCmluZGV4IDM4MDA1MGQuLmM1YzYzZjAgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb3JlL2ludGVybmFsL3ByZWZlcmVuY2VzL0NvbnN0cmFpbnRQcmVmZXJlbmNlSW5pdGlhbGl6ZXIuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29yZS9pbnRlcm5hbC9wcmVmZXJlbmNlcy9Db25zdHJhaW50UHJlZmVyZW5jZUluaXRpYWxpemVyLmphdmEKQEAgLTEwLDcgKzEwLDcgQEAKIC0tIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgIC0tCiAtLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlICAtLQogLS0gdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCAgICAgLS0KLS0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICovCiAKZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb3JlL2ludGVybmFsL3ByZWZlcmVuY2VzL0NvbnN0cmFpbnRQcmVmZXJlbmNlUGFnZS5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvcmUvaW50ZXJuYWwvcHJlZmVyZW5jZXMvQ29uc3RyYWludFByZWZlcmVuY2VQYWdlLmphdmEKaW5kZXggMzRiMzcyOS4uM2JjYWQwYiAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvcmUvaW50ZXJuYWwvcHJlZmVyZW5jZXMvQ29uc3RyYWludFByZWZlcmVuY2VQYWdlLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvcmUvaW50ZXJuYWwvcHJlZmVyZW5jZXMvQ29uc3RyYWludFByZWZlcmVuY2VQYWdlLmphdmEKQEAgLTgsNyArOCw3IEBACiAtLSBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzICAtLQogLS0gYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAgLS0KIC0tIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgICAgIC0tCi0tLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqLwogCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29yZS9pbnRlcm5hbC9wcmVmZXJlbmNlcy9MYWJlbEZpZWxkLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29yZS9pbnRlcm5hbC9wcmVmZXJlbmNlcy9MYWJlbEZpZWxkLmphdmEKaW5kZXggMGE1NjUzYy4uNmZkZjNlNCAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvcmUvaW50ZXJuYWwvcHJlZmVyZW5jZXMvTGFiZWxGaWVsZC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb3JlL2ludGVybmFsL3ByZWZlcmVuY2VzL0xhYmVsRmllbGQuamF2YQpAQCAtOCw3ICs4LDcgQEAKIC0tIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgIC0tCiAtLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlICAtLQogLS0gdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCAgICAgLS0KLS0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqLwogCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29yZS9pbnRlcm5hbC91dGlsL0ludGVybmFsQ0hFU1NQcm9qZWN0U3VwcG9ydC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvcmUvaW50ZXJuYWwvdXRpbC9JbnRlcm5hbENIRVNTUHJvamVjdFN1cHBvcnQuamF2YQppbmRleCBkOGNlZDZiLi43N2MyZTA4IDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29yZS9pbnRlcm5hbC91dGlsL0ludGVybmFsQ0hFU1NQcm9qZWN0U3VwcG9ydC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb3JlL2ludGVybmFsL3V0aWwvSW50ZXJuYWxDSEVTU1Byb2plY3RTdXBwb3J0LmphdmEKQEAgLTEsMjExICsxLDIxOCBAQAotcGFja2FnZSBvcmcucG9sYXJzeXMuY2hlc3MuY29yZS5pbnRlcm5hbC51dGlsOwotCi1pbXBvcnQgamF2YS5pby5GaWxlT3V0cHV0U3RyZWFtOwotaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247Ci1pbXBvcnQgamF2YS5pby5JbnB1dFN0cmVhbTsKLWltcG9ydCBqYXZhLm5ldC5VUkk7Ci1pbXBvcnQgamF2YS5uZXQuVVJMOwotaW1wb3J0IGphdmEudXRpbC5FbnVtZXJhdGlvbjsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUuZmlsZXN5c3RlbS5FRlM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSUZpbGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSUZvbGRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUHJvamVjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUHJvamVjdERlc2NyaXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLlJlc291cmNlc1BsdWdpbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuQ29yZUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuRmlsZUxvY2F0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQYXRoOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5QYXRoOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5QbGF0Zm9ybTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuUGx1Z2luOwotaW1wb3J0IG9yZy5vc2dpLmZyYW1ld29yay5CdW5kbGU7Ci1pbXBvcnQgb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUubmF0dXJlcy5DSEVTU05hdHVyZTsKLWltcG9ydCBvcmcucG9sYXJzeXMuY2hlc3MuY29yZS51dGlsLkNIRVNTUHJvamVjdFN1cHBvcnQ7Ci0KLS8qKgotICogVGhlIENsYXNzIEludGVybmFsQ0hFU1NQcm9qZWN0U3VwcG9ydC4KLSAqLwotcHVibGljIGNsYXNzIEludGVybmFsQ0hFU1NQcm9qZWN0U3VwcG9ydCB7Ci0KLQkvKioKLQkgKiBBZGRzIHRoZSBuYXR1cmUuCi0JICoKLQkgKiBAcGFyYW0gcHJvamVjdCB0aGUgcHJvamVjdAotCSAqIEB0aHJvd3MgQ29yZUV4Y2VwdGlvbiB0aGUgY29yZSBleGNlcHRpb24KLQkgKi8KLQlwdWJsaWMgc3RhdGljIHZvaWQgYWRkTmF0dXJlKElQcm9qZWN0IHByb2plY3QpIHRocm93cyBDb3JlRXhjZXB0aW9uIHsKLQkJaWYgKCFwcm9qZWN0Lmhhc05hdHVyZShDSEVTU05hdHVyZS5OQVRVUkVfSUQpKSB7Ci0JCQlJUHJvamVjdERlc2NyaXB0aW9uIGRlc2NyaXB0aW9uID0gcHJvamVjdC5nZXREZXNjcmlwdGlvbigpOwotCQkJU3RyaW5nW10gcHJldk5hdHVyZXMgPSBkZXNjcmlwdGlvbi5nZXROYXR1cmVJZHMoKTsKLQkJCVN0cmluZ1tdIG5ld05hdHVyZXMgPSBuZXcgU3RyaW5nW3ByZXZOYXR1cmVzLmxlbmd0aCArIDFdOwotCQkJU3lzdGVtLmFycmF5Y29weShwcmV2TmF0dXJlcywgMCwgbmV3TmF0dXJlcywgMCwgcHJldk5hdHVyZXMubGVuZ3RoKTsKLQkJCW5ld05hdHVyZXNbcHJldk5hdHVyZXMubGVuZ3RoXSA9IENIRVNTTmF0dXJlLk5BVFVSRV9JRDsKLQkJCWRlc2NyaXB0aW9uLnNldE5hdHVyZUlkcyhuZXdOYXR1cmVzKTsKLQkgICAgICAgIHByb2plY3Quc2V0RGVzY3JpcHRpb24oZGVzY3JpcHRpb24sIG51bGwpOwotCQl9Ci0JfQotCi0JLyoqCi0JICogQ3JlYXRlcyB0aGUgYmFzZSBwcm9qZWN0LgotCSAqCi0JICogQHBhcmFtIHByb2plY3ROYW1lIHRoZSBwcm9qZWN0IG5hbWUKLQkgKiBAcGFyYW0gbG9jYXRpb24gdGhlIGxvY2F0aW9uCi0JICogQHJldHVybiB0aGUgaSBwcm9qZWN0Ci0JICovCi0JcHVibGljIHN0YXRpYyBJUHJvamVjdCBjcmVhdGVCYXNlUHJvamVjdChTdHJpbmcgcHJvamVjdE5hbWUsIFVSSSBsb2NhdGlvbikgewotCQlJUHJvamVjdCBuZXdQcm9qZWN0ID0gUmVzb3VyY2VzUGx1Z2luLmdldFdvcmtzcGFjZSgpLmdldFJvb3QoKQotCQkJCS5nZXRQcm9qZWN0KHByb2plY3ROYW1lKTsKLQkKLQkJaWYgKCFuZXdQcm9qZWN0LmV4aXN0cygpKSB7Ci0JCQlVUkkgcHJvamVjdExvY2F0aW9uID0gbG9jYXRpb247Ci0JCQlJUHJvamVjdERlc2NyaXB0aW9uIGRlc2MgPSBuZXdQcm9qZWN0LmdldFdvcmtzcGFjZSgpCi0JCQkJCS5uZXdQcm9qZWN0RGVzY3JpcHRpb24obmV3UHJvamVjdC5nZXROYW1lKCkpOwotCQkJaWYgKGxvY2F0aW9uICE9IG51bGwKLQkJCQkJJiYgUmVzb3VyY2VzUGx1Z2luLmdldFdvcmtzcGFjZSgpLmdldFJvb3QoKQotCQkJCQkJCS5nZXRMb2NhdGlvblVSSSgpLmVxdWFscyhsb2NhdGlvbikpIHsKLQkJCQlwcm9qZWN0TG9jYXRpb24gPSBudWxsOwotCQkJfQotCQkJZGVzYy5zZXRMb2NhdGlvblVSSShwcm9qZWN0TG9jYXRpb24pOwotCQkJdHJ5IHsKLQkJCQluZXdQcm9qZWN0LmNyZWF0ZShkZXNjLCBudWxsKTsKLQkJCQlpZiAoIW5ld1Byb2plY3QuaXNPcGVuKCkpIHsKLQkJCQkJbmV3UHJvamVjdC5vcGVuKG51bGwpOwotCQkJCX0KLQkJCX0gY2F0Y2ggKENvcmVFeGNlcHRpb24gZSkgewotCQkJCWUucHJpbnRTdGFja1RyYWNlKCk7Ci0JCQl9Ci0JCX0KLQkJcmV0dXJuIG5ld1Byb2plY3Q7Ci0JfQotCi0JLyoqCi0JICogQWRkcyB0aGUgdG8gcHJvamVjdCBzdHJ1Y3R1cmUuCi0JICoKLQkgKiBAcGFyYW0gbmV3UHJvamVjdCB0aGUgbmV3IHByb2plY3QKLQkgKiBAcGFyYW0gcGF0aHMgdGhlIHBhdGhzCi0JICogQHRocm93cyBDb3JlRXhjZXB0aW9uIHRoZSBjb3JlIGV4Y2VwdGlvbgotCSAqLwotCUBTdXBwcmVzc1dhcm5pbmdzKCJ1bnVzZWQiKQotCXByaXZhdGUgc3RhdGljIHZvaWQgYWRkVG9Qcm9qZWN0U3RydWN0dXJlKGZpbmFsIElQcm9qZWN0IG5ld1Byb2plY3QsCi0JCQlmaW5hbCBTdHJpbmdbXSBwYXRocykgdGhyb3dzIENvcmVFeGNlcHRpb24gewotCQlmb3IgKFN0cmluZyBwYXRoIDogcGF0aHMpIHsKLQkJCUlGb2xkZXIgZXRjRm9sZGVyID0gbmV3UHJvamVjdC5nZXRGb2xkZXIocGF0aCk7Ci0JCQlDSEVTU1Byb2plY3RTdXBwb3J0LmNyZWF0ZUZvbGRlcihldGNGb2xkZXIpOwotCQl9Ci0JfQotCi0JLyoqCi0JICogVGhpcyBpcyBhIGNvcHkgb2Ygb3JnLmVjbGlwc2UuY29yZS5pbnRlcm5hbC51dGlscy5GaWxlVXRpbC4KLQkgKiBDb252ZXJ0cyBhIFVSSSB0byBhbiBJUGF0aC4gIFJldHVybnMgbnVsbCBpZiB0aGUgVVJJIGNhbm5vdCBiZSByZXByZXNlbnRlZAotCSAqIGFzIGFuIElQYXRoLgotCSAqIDxwPgotCSAqIE5vdGUgdGhpcyBtZXRob2QgZGlmZmVycyBmcm9tIFVSSVV0aWwgaW4gaXRzIGhhbmRsaW5nIG9mIHJlbGF0aXZlIFVSSXMKLQkgKiBhcyBiZWluZyByZWxhdGl2ZSB0byBwYXRoIHZhcmlhYmxlcy4KLQkgKgotCSAqIEBwYXJhbSB1cmkgdGhlIHVyaQotCSAqIEByZXR1cm4gdGhlIGkgcGF0aAotCSAqLwotCXB1YmxpYyBzdGF0aWMgSVBhdGggdG9QYXRoKFVSSSB1cmkpIHsKLQkJaWYgKHVyaSA9PSBudWxsKQotCQkJcmV0dXJuIG51bGw7Ci0JCWZpbmFsIFN0cmluZyBzY2hlbWUgPSB1cmkuZ2V0U2NoZW1lKCk7Ci0JCS8vIG51bGwgc2NoZW1lIHJlcHJlc2VudHMgcGF0aCB2YXJpYWJsZQotCQlpZiAoc2NoZW1lID09IG51bGwgfHwgRUZTLlNDSEVNRV9GSUxFLmVxdWFscyhzY2hlbWUpKQotCQkJcmV0dXJuIG5ldyBQYXRoKHVyaS5nZXRTY2hlbWVTcGVjaWZpY1BhcnQoKSk7Ci0JCXJldHVybiBudWxsOwotCX0KLQotCS8qKgotCSAqIEdldHMgdGhlIHBsdWdpbiBpbnN0YWxsIGxvY2F0aW9uLgotCSAqCi0JICogQHBhcmFtIHBsdWdpbklkIHRoZSBwbHVnaW4gaWQKLQkgKiBAcmV0dXJuIHRoZSBwbHVnaW4gaW5zdGFsbCBsb2NhdGlvbgotCSAqIEB0aHJvd3MgRXhjZXB0aW9uIHRoZSBleGNlcHRpb24KLQkgKi8KLQlwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRQbHVnaW5JbnN0YWxsTG9jYXRpb24oU3RyaW5nIHBsdWdpbklkKSB0aHJvd3MgRXhjZXB0aW9uIHsKLQkJQnVuZGxlIGJ1bmRsZSA9IFBsYXRmb3JtLmdldEJ1bmRsZShwbHVnaW5JZCk7Ci0JCVVSTCBsb2NhdGlvblVybCA9IEZpbGVMb2NhdG9yLmZpbmQoYnVuZGxlLG5ldyBQYXRoKCIvIiksIG51bGwpOwotCQlVUkwgZmlsZVVybCA9IEZpbGVMb2NhdG9yLnRvRmlsZVVSTChsb2NhdGlvblVybCk7Ci0JCXJldHVybiBmaWxlVXJsLmdldEZpbGUoKTsKLQl9Ci0KLQkvKioKLQkgKiBHZXRzIHRoZSBuYW1lIHdpdGhvdXQgZXh0ZW5zaW9uLgotCSAqCi0JICogQHBhcmFtIGlucHV0RmlsZSB0aGUgaW5wdXQgZmlsZQotCSAqIEByZXR1cm4gdGhlIG5hbWUgd2l0aG91dCBleHRlbnNpb24KLQkgKi8KLQlwdWJsaWMgc3RhdGljIFN0cmluZyBnZXROYW1lV2l0aG91dEV4dGVuc2lvbihJRmlsZSBpbnB1dEZpbGUpIHsKLQkJU3RyaW5nIGlucHV0TmFtZSA9IGlucHV0RmlsZS5nZXROYW1lKCk7Ci0JCWludCBleHRlbnNpb25JbmRleCA9IGlucHV0TmFtZS5sYXN0SW5kZXhPZignLicpOwotCQlpZiAoZXh0ZW5zaW9uSW5kZXggIT0gLTEpCi0JCQlpbnB1dE5hbWUgPSBpbnB1dE5hbWUuc3Vic3RyaW5nKDAsIGV4dGVuc2lvbkluZGV4KTsKLQkJcmV0dXJuIGlucHV0TmFtZTsKLQl9Ci0KLQkvKioKLQkgKiBGaWxlIGNvcHkuCi0JICoKLQkgKiBAcGFyYW0gaW4gdGhlIGluCi0JICogQHBhcmFtIG91dCB0aGUgb3V0Ci0JICogQHRocm93cyBJT0V4Y2VwdGlvbiBTaWduYWxzIHRoYXQgYW4gSS9PIGV4Y2VwdGlvbiBoYXMgb2NjdXJyZWQuCi0JICovCi0JcHVibGljIHN0YXRpYyB2b2lkIGZpbGVDb3B5KElucHV0U3RyZWFtIGluLCBGaWxlT3V0cHV0U3RyZWFtIG91dCkKLQkJCXRocm93cyBJT0V4Y2VwdGlvbiB7Ci0JCWJ5dGVbXSBidWYgPSBuZXcgYnl0ZVs4MTkyXTsKLQkJd2hpbGUgKHRydWUpIHsKLQkJCWludCBsZW5ndGggPSBpbi5yZWFkKGJ1Zik7Ci0JCQlpZiAobGVuZ3RoIDwgMCkKLQkJCQlicmVhazsKLQkJCW91dC53cml0ZShidWYsIDAsIGxlbmd0aCk7Ci0JCX0KLQkKLQkJdHJ5IHsKLQkJCWluLmNsb3NlKCk7Ci0JCX0gY2F0Y2ggKElPRXhjZXB0aW9uIGlnbm9yZSkgewotCQl9Ci0JCXRyeSB7Ci0JCQlvdXQuY2xvc2UoKTsKLQkJfSBjYXRjaCAoSU9FeGNlcHRpb24gaWdub3JlKSB7Ci0JCX0KLQl9Ci0KLQkvKioKLQkgKiBHZXRzIHRoZSBidW5kbGUgY29udGVudHMuCi0JICoKLQkgKiBAcGFyYW0gYWN0aXZhdG9yIHRoZSBhY3RpdmF0b3IKLQkgKiBAcGFyYW0gcGF0aCB0aGUgcGF0aAotCSAqIEBwYXJhbSBjb2xsZWN0ZWRQYXRocyB0aGUgY29sbGVjdGVkIHBhdGhzCi0JICogQHJldHVybiB0aGUgYnVuZGxlIGNvbnRlbnRzCi0JICovCi0JcHVibGljIHN0YXRpYyB2b2lkIGdldEJ1bmRsZUNvbnRlbnRzKFBsdWdpbiBhY3RpdmF0b3IsIFN0cmluZyBwYXRoLAotCQkJTGlzdDxTdHJpbmc+IGNvbGxlY3RlZFBhdGhzKSB7Ci0JCUVudW1lcmF0aW9uPD8+IGVudW1zID0gYWN0aXZhdG9yLmdldEJ1bmRsZSgpLmdldEVudHJ5UGF0aHMocGF0aCk7Ci0JCi0JCXdoaWxlIChlbnVtcy5oYXNNb3JlRWxlbWVudHMoKSkgewotCQkJT2JqZWN0IG9iamVjdCA9IGVudW1zLm5leHRFbGVtZW50KCk7Ci0JCQlFbnVtZXJhdGlvbjw/PiB0bXBFbnVtID0gYWN0aXZhdG9yLmdldEJ1bmRsZSgpLmdldEVudHJ5UGF0aHMoCi0JCQkJCW9iamVjdC50b1N0cmluZygpKTsKLQkJCWlmICh0bXBFbnVtICE9IG51bGwpCi0JCQkJZ2V0QnVuZGxlQ29udGVudHMoYWN0aXZhdG9yLCBvYmplY3QudG9TdHJpbmcoKSwgY29sbGVjdGVkUGF0aHMpOwotCQkJZWxzZSB7Ci0JCQkJY29sbGVjdGVkUGF0aHMuYWRkKG9iamVjdC50b1N0cmluZygpKTsKLQkJCX0KLQkJfQotCX0KLQotCS8qKgotCSAqIEdldHMgdGhlIGkgZmlsZSBmcm9tIGFic29sdXRlIHBhdGguCi0JICoKLQkgKiBAcGFyYW0gcGF0aCB0aGUgcGF0aAotCSAqIEByZXR1cm4gdGhlIGkgZmlsZSBmcm9tIGFic29sdXRlIHBhdGgKLQkgKi8KLQlwdWJsaWMgc3RhdGljIElGaWxlIGdldElGaWxlRnJvbUFic29sdXRlUGF0aChTdHJpbmcgcGF0aCkgewotCQlJUGF0aCBsb2NhdGlvbiA9IFBhdGguZnJvbU9TU3RyaW5nKHBhdGgpOwotCQlyZXR1cm4gUmVzb3VyY2VzUGx1Z2luLmdldFdvcmtzcGFjZSgpLmdldFJvb3QoKQotCQkJCS5nZXRGaWxlRm9yTG9jYXRpb24obG9jYXRpb24pOwotCX0KLQotfQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgDQorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KKyAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KK3BhY2thZ2Ugb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUuaW50ZXJuYWwudXRpbDsNCisNCitpbXBvcnQgamF2YS5pby5GaWxlT3V0cHV0U3RyZWFtOw0KK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOw0KK2ltcG9ydCBqYXZhLmlvLklucHV0U3RyZWFtOw0KK2ltcG9ydCBqYXZhLm5ldC5VUkk7DQoraW1wb3J0IGphdmEubmV0LlVSTDsNCitpbXBvcnQgamF2YS51dGlsLkVudW1lcmF0aW9uOw0KK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5maWxlc3lzdGVtLkVGUzsNCitpbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSUZpbGU7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklGb2xkZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklQcm9qZWN0Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUHJvamVjdERlc2NyaXB0aW9uOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5SZXNvdXJjZXNQbHVnaW47DQoraW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5Db3JlRXhjZXB0aW9uOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuRmlsZUxvY2F0b3I7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JUGF0aDsNCitpbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlBhdGg7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5QbGF0Zm9ybTsNCitpbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlBsdWdpbjsNCitpbXBvcnQgb3JnLm9zZ2kuZnJhbWV3b3JrLkJ1bmRsZTsNCitpbXBvcnQgb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUubmF0dXJlcy5DSEVTU05hdHVyZTsNCitpbXBvcnQgb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUudXRpbC5DSEVTU1Byb2plY3RTdXBwb3J0Ow0KKw0KKy8qKg0KKyAqIFRoZSBDbGFzcyBJbnRlcm5hbENIRVNTUHJvamVjdFN1cHBvcnQuDQorICovDQorcHVibGljIGNsYXNzIEludGVybmFsQ0hFU1NQcm9qZWN0U3VwcG9ydCB7DQorDQorCS8qKg0KKwkgKiBBZGRzIHRoZSBuYXR1cmUuDQorCSAqDQorCSAqIEBwYXJhbSBwcm9qZWN0IHRoZSBwcm9qZWN0DQorCSAqIEB0aHJvd3MgQ29yZUV4Y2VwdGlvbiB0aGUgY29yZSBleGNlcHRpb24NCisJICovDQorCXB1YmxpYyBzdGF0aWMgdm9pZCBhZGROYXR1cmUoSVByb2plY3QgcHJvamVjdCkgdGhyb3dzIENvcmVFeGNlcHRpb24gew0KKwkJaWYgKCFwcm9qZWN0Lmhhc05hdHVyZShDSEVTU05hdHVyZS5OQVRVUkVfSUQpKSB7DQorCQkJSVByb2plY3REZXNjcmlwdGlvbiBkZXNjcmlwdGlvbiA9IHByb2plY3QuZ2V0RGVzY3JpcHRpb24oKTsNCisJCQlTdHJpbmdbXSBwcmV2TmF0dXJlcyA9IGRlc2NyaXB0aW9uLmdldE5hdHVyZUlkcygpOw0KKwkJCVN0cmluZ1tdIG5ld05hdHVyZXMgPSBuZXcgU3RyaW5nW3ByZXZOYXR1cmVzLmxlbmd0aCArIDFdOw0KKwkJCVN5c3RlbS5hcnJheWNvcHkocHJldk5hdHVyZXMsIDAsIG5ld05hdHVyZXMsIDAsIHByZXZOYXR1cmVzLmxlbmd0aCk7DQorCQkJbmV3TmF0dXJlc1twcmV2TmF0dXJlcy5sZW5ndGhdID0gQ0hFU1NOYXR1cmUuTkFUVVJFX0lEOw0KKwkJCWRlc2NyaXB0aW9uLnNldE5hdHVyZUlkcyhuZXdOYXR1cmVzKTsNCisJICAgICAgICBwcm9qZWN0LnNldERlc2NyaXB0aW9uKGRlc2NyaXB0aW9uLCBudWxsKTsNCisJCX0NCisJfQ0KKw0KKwkvKioNCisJICogQ3JlYXRlcyB0aGUgYmFzZSBwcm9qZWN0Lg0KKwkgKg0KKwkgKiBAcGFyYW0gcHJvamVjdE5hbWUgdGhlIHByb2plY3QgbmFtZQ0KKwkgKiBAcGFyYW0gbG9jYXRpb24gdGhlIGxvY2F0aW9uDQorCSAqIEByZXR1cm4gdGhlIGkgcHJvamVjdA0KKwkgKi8NCisJcHVibGljIHN0YXRpYyBJUHJvamVjdCBjcmVhdGVCYXNlUHJvamVjdChTdHJpbmcgcHJvamVjdE5hbWUsIFVSSSBsb2NhdGlvbikgew0KKwkJSVByb2plY3QgbmV3UHJvamVjdCA9IFJlc291cmNlc1BsdWdpbi5nZXRXb3Jrc3BhY2UoKS5nZXRSb290KCkNCisJCQkJLmdldFByb2plY3QocHJvamVjdE5hbWUpOw0KKwkNCisJCWlmICghbmV3UHJvamVjdC5leGlzdHMoKSkgew0KKwkJCVVSSSBwcm9qZWN0TG9jYXRpb24gPSBsb2NhdGlvbjsNCisJCQlJUHJvamVjdERlc2NyaXB0aW9uIGRlc2MgPSBuZXdQcm9qZWN0LmdldFdvcmtzcGFjZSgpDQorCQkJCQkubmV3UHJvamVjdERlc2NyaXB0aW9uKG5ld1Byb2plY3QuZ2V0TmFtZSgpKTsNCisJCQlpZiAobG9jYXRpb24gIT0gbnVsbA0KKwkJCQkJJiYgUmVzb3VyY2VzUGx1Z2luLmdldFdvcmtzcGFjZSgpLmdldFJvb3QoKQ0KKwkJCQkJCQkuZ2V0TG9jYXRpb25VUkkoKS5lcXVhbHMobG9jYXRpb24pKSB7DQorCQkJCXByb2plY3RMb2NhdGlvbiA9IG51bGw7DQorCQkJfQ0KKwkJCWRlc2Muc2V0TG9jYXRpb25VUkkocHJvamVjdExvY2F0aW9uKTsNCisJCQl0cnkgew0KKwkJCQluZXdQcm9qZWN0LmNyZWF0ZShkZXNjLCBudWxsKTsNCisJCQkJaWYgKCFuZXdQcm9qZWN0LmlzT3BlbigpKSB7DQorCQkJCQluZXdQcm9qZWN0Lm9wZW4obnVsbCk7DQorCQkJCX0NCisJCQl9IGNhdGNoIChDb3JlRXhjZXB0aW9uIGUpIHsNCisJCQkJZS5wcmludFN0YWNrVHJhY2UoKTsNCisJCQl9DQorCQl9DQorCQlyZXR1cm4gbmV3UHJvamVjdDsNCisJfQ0KKw0KKwkvKioNCisJICogQWRkcyB0aGUgdG8gcHJvamVjdCBzdHJ1Y3R1cmUuDQorCSAqDQorCSAqIEBwYXJhbSBuZXdQcm9qZWN0IHRoZSBuZXcgcHJvamVjdA0KKwkgKiBAcGFyYW0gcGF0aHMgdGhlIHBhdGhzDQorCSAqIEB0aHJvd3MgQ29yZUV4Y2VwdGlvbiB0aGUgY29yZSBleGNlcHRpb24NCisJICovDQorCUBTdXBwcmVzc1dhcm5pbmdzKCJ1bnVzZWQiKQ0KKwlwcml2YXRlIHN0YXRpYyB2b2lkIGFkZFRvUHJvamVjdFN0cnVjdHVyZShmaW5hbCBJUHJvamVjdCBuZXdQcm9qZWN0LA0KKwkJCWZpbmFsIFN0cmluZ1tdIHBhdGhzKSB0aHJvd3MgQ29yZUV4Y2VwdGlvbiB7DQorCQlmb3IgKFN0cmluZyBwYXRoIDogcGF0aHMpIHsNCisJCQlJRm9sZGVyIGV0Y0ZvbGRlciA9IG5ld1Byb2plY3QuZ2V0Rm9sZGVyKHBhdGgpOw0KKwkJCUNIRVNTUHJvamVjdFN1cHBvcnQuY3JlYXRlRm9sZGVyKGV0Y0ZvbGRlcik7DQorCQl9DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgaXMgYSBjb3B5IG9mIG9yZy5lY2xpcHNlLmNvcmUuaW50ZXJuYWwudXRpbHMuRmlsZVV0aWwuDQorCSAqIENvbnZlcnRzIGEgVVJJIHRvIGFuIElQYXRoLiAgUmV0dXJucyBudWxsIGlmIHRoZSBVUkkgY2Fubm90IGJlIHJlcHJlc2VudGVkDQorCSAqIGFzIGFuIElQYXRoLg0KKwkgKiA8cD4NCisJICogTm90ZSB0aGlzIG1ldGhvZCBkaWZmZXJzIGZyb20gVVJJVXRpbCBpbiBpdHMgaGFuZGxpbmcgb2YgcmVsYXRpdmUgVVJJcw0KKwkgKiBhcyBiZWluZyByZWxhdGl2ZSB0byBwYXRoIHZhcmlhYmxlcy4NCisJICoNCisJICogQHBhcmFtIHVyaSB0aGUgdXJpDQorCSAqIEByZXR1cm4gdGhlIGkgcGF0aA0KKwkgKi8NCisJcHVibGljIHN0YXRpYyBJUGF0aCB0b1BhdGgoVVJJIHVyaSkgew0KKwkJaWYgKHVyaSA9PSBudWxsKQ0KKwkJCXJldHVybiBudWxsOw0KKwkJZmluYWwgU3RyaW5nIHNjaGVtZSA9IHVyaS5nZXRTY2hlbWUoKTsNCisJCS8vIG51bGwgc2NoZW1lIHJlcHJlc2VudHMgcGF0aCB2YXJpYWJsZQ0KKwkJaWYgKHNjaGVtZSA9PSBudWxsIHx8IEVGUy5TQ0hFTUVfRklMRS5lcXVhbHMoc2NoZW1lKSkNCisJCQlyZXR1cm4gbmV3IFBhdGgodXJpLmdldFNjaGVtZVNwZWNpZmljUGFydCgpKTsNCisJCXJldHVybiBudWxsOw0KKwl9DQorDQorCS8qKg0KKwkgKiBHZXRzIHRoZSBwbHVnaW4gaW5zdGFsbCBsb2NhdGlvbi4NCisJICoNCisJICogQHBhcmFtIHBsdWdpbklkIHRoZSBwbHVnaW4gaWQNCisJICogQHJldHVybiB0aGUgcGx1Z2luIGluc3RhbGwgbG9jYXRpb24NCisJICogQHRocm93cyBFeGNlcHRpb24gdGhlIGV4Y2VwdGlvbg0KKwkgKi8NCisJcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0UGx1Z2luSW5zdGFsbExvY2F0aW9uKFN0cmluZyBwbHVnaW5JZCkgdGhyb3dzIEV4Y2VwdGlvbiB7DQorCQlCdW5kbGUgYnVuZGxlID0gUGxhdGZvcm0uZ2V0QnVuZGxlKHBsdWdpbklkKTsNCisJCVVSTCBsb2NhdGlvblVybCA9IEZpbGVMb2NhdG9yLmZpbmQoYnVuZGxlLG5ldyBQYXRoKCIvIiksIG51bGwpOw0KKwkJVVJMIGZpbGVVcmwgPSBGaWxlTG9jYXRvci50b0ZpbGVVUkwobG9jYXRpb25VcmwpOw0KKwkJcmV0dXJuIGZpbGVVcmwuZ2V0RmlsZSgpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBHZXRzIHRoZSBuYW1lIHdpdGhvdXQgZXh0ZW5zaW9uLg0KKwkgKg0KKwkgKiBAcGFyYW0gaW5wdXRGaWxlIHRoZSBpbnB1dCBmaWxlDQorCSAqIEByZXR1cm4gdGhlIG5hbWUgd2l0aG91dCBleHRlbnNpb24NCisJICovDQorCXB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldE5hbWVXaXRob3V0RXh0ZW5zaW9uKElGaWxlIGlucHV0RmlsZSkgew0KKwkJU3RyaW5nIGlucHV0TmFtZSA9IGlucHV0RmlsZS5nZXROYW1lKCk7DQorCQlpbnQgZXh0ZW5zaW9uSW5kZXggPSBpbnB1dE5hbWUubGFzdEluZGV4T2YoJy4nKTsNCisJCWlmIChleHRlbnNpb25JbmRleCAhPSAtMSkNCisJCQlpbnB1dE5hbWUgPSBpbnB1dE5hbWUuc3Vic3RyaW5nKDAsIGV4dGVuc2lvbkluZGV4KTsNCisJCXJldHVybiBpbnB1dE5hbWU7DQorCX0NCisNCisJLyoqDQorCSAqIEZpbGUgY29weS4NCisJICoNCisJICogQHBhcmFtIGluIHRoZSBpbg0KKwkgKiBAcGFyYW0gb3V0IHRoZSBvdXQNCisJICogQHRocm93cyBJT0V4Y2VwdGlvbiBTaWduYWxzIHRoYXQgYW4gSS9PIGV4Y2VwdGlvbiBoYXMgb2NjdXJyZWQuDQorCSAqLw0KKwlwdWJsaWMgc3RhdGljIHZvaWQgZmlsZUNvcHkoSW5wdXRTdHJlYW0gaW4sIEZpbGVPdXRwdXRTdHJlYW0gb3V0KQ0KKwkJCXRocm93cyBJT0V4Y2VwdGlvbiB7DQorCQlieXRlW10gYnVmID0gbmV3IGJ5dGVbODE5Ml07DQorCQl3aGlsZSAodHJ1ZSkgew0KKwkJCWludCBsZW5ndGggPSBpbi5yZWFkKGJ1Zik7DQorCQkJaWYgKGxlbmd0aCA8IDApDQorCQkJCWJyZWFrOw0KKwkJCW91dC53cml0ZShidWYsIDAsIGxlbmd0aCk7DQorCQl9DQorCQ0KKwkJdHJ5IHsNCisJCQlpbi5jbG9zZSgpOw0KKwkJfSBjYXRjaCAoSU9FeGNlcHRpb24gaWdub3JlKSB7DQorCQl9DQorCQl0cnkgew0KKwkJCW91dC5jbG9zZSgpOw0KKwkJfSBjYXRjaCAoSU9FeGNlcHRpb24gaWdub3JlKSB7DQorCQl9DQorCX0NCisNCisJLyoqDQorCSAqIEdldHMgdGhlIGJ1bmRsZSBjb250ZW50cy4NCisJICoNCisJICogQHBhcmFtIGFjdGl2YXRvciB0aGUgYWN0aXZhdG9yDQorCSAqIEBwYXJhbSBwYXRoIHRoZSBwYXRoDQorCSAqIEBwYXJhbSBjb2xsZWN0ZWRQYXRocyB0aGUgY29sbGVjdGVkIHBhdGhzDQorCSAqIEByZXR1cm4gdGhlIGJ1bmRsZSBjb250ZW50cw0KKwkgKi8NCisJcHVibGljIHN0YXRpYyB2b2lkIGdldEJ1bmRsZUNvbnRlbnRzKFBsdWdpbiBhY3RpdmF0b3IsIFN0cmluZyBwYXRoLA0KKwkJCUxpc3Q8U3RyaW5nPiBjb2xsZWN0ZWRQYXRocykgew0KKwkJRW51bWVyYXRpb248Pz4gZW51bXMgPSBhY3RpdmF0b3IuZ2V0QnVuZGxlKCkuZ2V0RW50cnlQYXRocyhwYXRoKTsNCisJDQorCQl3aGlsZSAoZW51bXMuaGFzTW9yZUVsZW1lbnRzKCkpIHsNCisJCQlPYmplY3Qgb2JqZWN0ID0gZW51bXMubmV4dEVsZW1lbnQoKTsNCisJCQlFbnVtZXJhdGlvbjw/PiB0bXBFbnVtID0gYWN0aXZhdG9yLmdldEJ1bmRsZSgpLmdldEVudHJ5UGF0aHMoDQorCQkJCQlvYmplY3QudG9TdHJpbmcoKSk7DQorCQkJaWYgKHRtcEVudW0gIT0gbnVsbCkNCisJCQkJZ2V0QnVuZGxlQ29udGVudHMoYWN0aXZhdG9yLCBvYmplY3QudG9TdHJpbmcoKSwgY29sbGVjdGVkUGF0aHMpOw0KKwkJCWVsc2Ugew0KKwkJCQljb2xsZWN0ZWRQYXRocy5hZGQob2JqZWN0LnRvU3RyaW5nKCkpOw0KKwkJCX0NCisJCX0NCisJfQ0KKw0KKwkvKioNCisJICogR2V0cyB0aGUgaSBmaWxlIGZyb20gYWJzb2x1dGUgcGF0aC4NCisJICoNCisJICogQHBhcmFtIHBhdGggdGhlIHBhdGgNCisJICogQHJldHVybiB0aGUgaSBmaWxlIGZyb20gYWJzb2x1dGUgcGF0aA0KKwkgKi8NCisJcHVibGljIHN0YXRpYyBJRmlsZSBnZXRJRmlsZUZyb21BYnNvbHV0ZVBhdGgoU3RyaW5nIHBhdGgpIHsNCisJCUlQYXRoIGxvY2F0aW9uID0gUGF0aC5mcm9tT1NTdHJpbmcocGF0aCk7DQorCQlyZXR1cm4gUmVzb3VyY2VzUGx1Z2luLmdldFdvcmtzcGFjZSgpLmdldFJvb3QoKQ0KKwkJCQkuZ2V0RmlsZUZvckxvY2F0aW9uKGxvY2F0aW9uKTsNCisJfQ0KKw0KK30NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29yZS9pbnRlcm5hbC91dGlsL0ludGVybmFsQ29uc29sZVV0aWwuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb3JlL2ludGVybmFsL3V0aWwvSW50ZXJuYWxDb25zb2xlVXRpbC5qYXZhCmluZGV4IDg1M2MyYmUuLmViMDdlMDEgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb3JlL2ludGVybmFsL3V0aWwvSW50ZXJuYWxDb25zb2xlVXRpbC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb3JlL2ludGVybmFsL3V0aWwvSW50ZXJuYWxDb25zb2xlVXRpbC5qYXZhCkBAIC0xLDc2ICsxLDgzIEBACi1wYWNrYWdlIG9yZy5wb2xhcnN5cy5jaGVzcy5jb3JlLmludGVybmFsLnV0aWw7Ci0KLWltcG9ydCBqYXZhLmlvLkZpbGVOb3RGb3VuZEV4Y2VwdGlvbjsKLWltcG9ydCBqYXZhLmlvLkZpbGVPdXRwdXRTdHJlYW07Ci1pbXBvcnQgamF2YS5pby5QcmludFN0cmVhbTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLmNvbnNvbGUuQ29uc29sZVBsdWdpbjsKLWltcG9ydCBvcmcuZWNsaXBzZS51aS5jb25zb2xlLklDb25zb2xlOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLmNvbnNvbGUuSUNvbnNvbGVNYW5hZ2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLmNvbnNvbGUuTWVzc2FnZUNvbnNvbGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudWkuY29uc29sZS5NZXNzYWdlQ29uc29sZVN0cmVhbTsKLWltcG9ydCBvcmcucG9sYXJzeXMuY2hlc3MuY29yZS51dGlsLkNIRVNTUHJvamVjdFN1cHBvcnQ7Ci0KLS8qKgotICogVGhlIENsYXNzIEludGVybmFsQ29uc29sZVV0aWwuCi0gKi8KLXB1YmxpYyBjbGFzcyBJbnRlcm5hbENvbnNvbGVVdGlsIHsKLQotCS8qKgotCSAqIEZpbmQgY29uc29sZS4KLQkgKgotCSAqIEBwYXJhbSBuYW1lIHRoZSBuYW1lCi0JICogQHJldHVybiB0aGUgbWVzc2FnZSBjb25zb2xlCi0JICovCi0JcHVibGljIHN0YXRpYyBNZXNzYWdlQ29uc29sZSBmaW5kQ29uc29sZShmaW5hbCBTdHJpbmcgbmFtZSkgewotCSAgICAgIENvbnNvbGVQbHVnaW4gcGx1Z2luID0gQ29uc29sZVBsdWdpbi5nZXREZWZhdWx0KCk7Ci0JICAgICAgSUNvbnNvbGVNYW5hZ2VyIGNvbk1hbiA9IHBsdWdpbi5nZXRDb25zb2xlTWFuYWdlcigpOwotCSAgICAgIElDb25zb2xlW10gZXhpc3RpbmcgPSBjb25NYW4uZ2V0Q29uc29sZXMoKTsKLQkgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGV4aXN0aW5nLmxlbmd0aDsgaSsrKQotCSAgICAgICAgIGlmIChuYW1lLmVxdWFscyhleGlzdGluZ1tpXS5nZXROYW1lKCkpKQotCSAgICAgICAgICAgIHJldHVybiAoTWVzc2FnZUNvbnNvbGUpIGV4aXN0aW5nW2ldOwotCSAgICAgIC8vbm8gY29uc29sZSBmb3VuZCwgc28gY3JlYXRlIGEgbmV3IG9uZQotCSAgICAgIE1lc3NhZ2VDb25zb2xlIG15Q29uc29sZSA9IG5ldyBNZXNzYWdlQ29uc29sZShuYW1lLCBudWxsKTsKLQkgICAgICBjb25NYW4uYWRkQ29uc29sZXMobmV3IElDb25zb2xlW117bXlDb25zb2xlfSk7Ci0JICAgICAgcmV0dXJuIG15Q29uc29sZTsKLQkgICB9Ci0KLQkvKioKLQkgKiBGaW5kIENIRVMgc2NvbnNvbGUuCi0JICoKLQkgKiBAcmV0dXJuIHRoZSBtZXNzYWdlIGNvbnNvbGUgc3RyZWFtCi0JICovCi0JcHVibGljIHN0YXRpYyBNZXNzYWdlQ29uc29sZVN0cmVhbSBmaW5kQ0hFU1Njb25zb2xlKCl7Ci0JCU1lc3NhZ2VDb25zb2xlIG15Q29uc29sZSA9IGZpbmRDb25zb2xlKENIRVNTUHJvamVjdFN1cHBvcnQuQ0hFU1NfQ09OU09MRV9OQU1FKTsKLQkJcmV0dXJuIG15Q29uc29sZS5uZXdNZXNzYWdlU3RyZWFtKCk7Ci0JfQotCi0JLyoqCi0JICogV3JpdGUgbG9nLgotCSAqCi0JICogQHBhcmFtIG1lc3NhZ2UgdGhlIG1lc3NhZ2UKLQkgKiBAdGhyb3dzIEZpbGVOb3RGb3VuZEV4Y2VwdGlvbiB0aGUgZmlsZSBub3QgZm91bmQgZXhjZXB0aW9uCi0JICovCi0JcHVibGljIHN0YXRpYyB2b2lkIHdyaXRlTG9nKFN0cmluZyBtZXNzYWdlKSB0aHJvd3MgRmlsZU5vdEZvdW5kRXhjZXB0aW9uIHsKLQkJRmlsZU91dHB1dFN0cmVhbSBvdXQgPSBuZXcgRmlsZU91dHB1dFN0cmVhbShJbnRlcm5hbENvbnNvbGVVdGlsLmdldEVjbGlwc2VJbnN0YWxsTG9jYXRpb24oKQotCQkJCSsgIkNIRVNTTE9HIik7Ci0JCVByaW50U3RyZWFtIHAgPSBuZXcgUHJpbnRTdHJlYW0ob3V0KTsKLQkJcC5wcmludGxuKG1lc3NhZ2UpOwotCQlwLmNsb3NlKCk7Ci0JfQotCi0JLyoqCi0JICogR2V0cyB0aGUgZWNsaXBzZSBpbnN0YWxsIGxvY2F0aW9uLgotCSAqCi0JICogQHJldHVybiB0aGUgZWNsaXBzZSBpbnN0YWxsIGxvY2F0aW9uCi0JICovCi0JcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0RWNsaXBzZUluc3RhbGxMb2NhdGlvbigpIHsKLQkJaWYgKFN5c3RlbS5nZXRQcm9wZXJ0eSgib3MubmFtZSIpLmVxdWFscygiTGludXgiKSkKLQkJCXJldHVybiBTeXN0ZW0uZ2V0UHJvcGVydGllcygpLmdldCgib3NnaS5pbnN0YWxsLmFyZWEiKS50b1N0cmluZygpCi0JCQkJCS5zdWJzdHJpbmcoNSk7Ci0JCWVsc2UKLQkJCXJldHVybiBTeXN0ZW0uZ2V0UHJvcGVydGllcygpLmdldCgib3NnaS5pbnN0YWxsLmFyZWEiKS50b1N0cmluZygpCi0JCQkJCS5zdWJzdHJpbmcoNik7Ci0JfQotCi19CisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqIENvcHlyaWdodCAoQykgMjAyMCANCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQorICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorcGFja2FnZSBvcmcucG9sYXJzeXMuY2hlc3MuY29yZS5pbnRlcm5hbC51dGlsOw0KKw0KK2ltcG9ydCBqYXZhLmlvLkZpbGVOb3RGb3VuZEV4Y2VwdGlvbjsNCitpbXBvcnQgamF2YS5pby5GaWxlT3V0cHV0U3RyZWFtOw0KK2ltcG9ydCBqYXZhLmlvLlByaW50U3RyZWFtOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51aS5jb25zb2xlLkNvbnNvbGVQbHVnaW47DQoraW1wb3J0IG9yZy5lY2xpcHNlLnVpLmNvbnNvbGUuSUNvbnNvbGU7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnVpLmNvbnNvbGUuSUNvbnNvbGVNYW5hZ2VyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51aS5jb25zb2xlLk1lc3NhZ2VDb25zb2xlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51aS5jb25zb2xlLk1lc3NhZ2VDb25zb2xlU3RyZWFtOw0KK2ltcG9ydCBvcmcucG9sYXJzeXMuY2hlc3MuY29yZS51dGlsLkNIRVNTUHJvamVjdFN1cHBvcnQ7DQorDQorLyoqDQorICogVGhlIENsYXNzIEludGVybmFsQ29uc29sZVV0aWwuDQorICovDQorcHVibGljIGNsYXNzIEludGVybmFsQ29uc29sZVV0aWwgew0KKw0KKwkvKioNCisJICogRmluZCBjb25zb2xlLg0KKwkgKg0KKwkgKiBAcGFyYW0gbmFtZSB0aGUgbmFtZQ0KKwkgKiBAcmV0dXJuIHRoZSBtZXNzYWdlIGNvbnNvbGUNCisJICovDQorCXB1YmxpYyBzdGF0aWMgTWVzc2FnZUNvbnNvbGUgZmluZENvbnNvbGUoZmluYWwgU3RyaW5nIG5hbWUpIHsNCisJICAgICAgQ29uc29sZVBsdWdpbiBwbHVnaW4gPSBDb25zb2xlUGx1Z2luLmdldERlZmF1bHQoKTsNCisJICAgICAgSUNvbnNvbGVNYW5hZ2VyIGNvbk1hbiA9IHBsdWdpbi5nZXRDb25zb2xlTWFuYWdlcigpOw0KKwkgICAgICBJQ29uc29sZVtdIGV4aXN0aW5nID0gY29uTWFuLmdldENvbnNvbGVzKCk7DQorCSAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZXhpc3RpbmcubGVuZ3RoOyBpKyspDQorCSAgICAgICAgIGlmIChuYW1lLmVxdWFscyhleGlzdGluZ1tpXS5nZXROYW1lKCkpKQ0KKwkgICAgICAgICAgICByZXR1cm4gKE1lc3NhZ2VDb25zb2xlKSBleGlzdGluZ1tpXTsNCisJICAgICAgLy9ubyBjb25zb2xlIGZvdW5kLCBzbyBjcmVhdGUgYSBuZXcgb25lDQorCSAgICAgIE1lc3NhZ2VDb25zb2xlIG15Q29uc29sZSA9IG5ldyBNZXNzYWdlQ29uc29sZShuYW1lLCBudWxsKTsNCisJICAgICAgY29uTWFuLmFkZENvbnNvbGVzKG5ldyBJQ29uc29sZVtde215Q29uc29sZX0pOw0KKwkgICAgICByZXR1cm4gbXlDb25zb2xlOw0KKwkgICB9DQorDQorCS8qKg0KKwkgKiBGaW5kIENIRVMgc2NvbnNvbGUuDQorCSAqDQorCSAqIEByZXR1cm4gdGhlIG1lc3NhZ2UgY29uc29sZSBzdHJlYW0NCisJICovDQorCXB1YmxpYyBzdGF0aWMgTWVzc2FnZUNvbnNvbGVTdHJlYW0gZmluZENIRVNTY29uc29sZSgpew0KKwkJTWVzc2FnZUNvbnNvbGUgbXlDb25zb2xlID0gZmluZENvbnNvbGUoQ0hFU1NQcm9qZWN0U3VwcG9ydC5DSEVTU19DT05TT0xFX05BTUUpOw0KKwkJcmV0dXJuIG15Q29uc29sZS5uZXdNZXNzYWdlU3RyZWFtKCk7DQorCX0NCisNCisJLyoqDQorCSAqIFdyaXRlIGxvZy4NCisJICoNCisJICogQHBhcmFtIG1lc3NhZ2UgdGhlIG1lc3NhZ2UNCisJICogQHRocm93cyBGaWxlTm90Rm91bmRFeGNlcHRpb24gdGhlIGZpbGUgbm90IGZvdW5kIGV4Y2VwdGlvbg0KKwkgKi8NCisJcHVibGljIHN0YXRpYyB2b2lkIHdyaXRlTG9nKFN0cmluZyBtZXNzYWdlKSB0aHJvd3MgRmlsZU5vdEZvdW5kRXhjZXB0aW9uIHsNCisJCUZpbGVPdXRwdXRTdHJlYW0gb3V0ID0gbmV3IEZpbGVPdXRwdXRTdHJlYW0oSW50ZXJuYWxDb25zb2xlVXRpbC5nZXRFY2xpcHNlSW5zdGFsbExvY2F0aW9uKCkNCisJCQkJKyAiQ0hFU1NMT0ciKTsNCisJCVByaW50U3RyZWFtIHAgPSBuZXcgUHJpbnRTdHJlYW0ob3V0KTsNCisJCXAucHJpbnRsbihtZXNzYWdlKTsNCisJCXAuY2xvc2UoKTsNCisJfQ0KKw0KKwkvKioNCisJICogR2V0cyB0aGUgZWNsaXBzZSBpbnN0YWxsIGxvY2F0aW9uLg0KKwkgKg0KKwkgKiBAcmV0dXJuIHRoZSBlY2xpcHNlIGluc3RhbGwgbG9jYXRpb24NCisJICovDQorCXB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldEVjbGlwc2VJbnN0YWxsTG9jYXRpb24oKSB7DQorCQlpZiAoU3lzdGVtLmdldFByb3BlcnR5KCJvcy5uYW1lIikuZXF1YWxzKCJMaW51eCIpKQ0KKwkJCXJldHVybiBTeXN0ZW0uZ2V0UHJvcGVydGllcygpLmdldCgib3NnaS5pbnN0YWxsLmFyZWEiKS50b1N0cmluZygpDQorCQkJCQkuc3Vic3RyaW5nKDUpOw0KKwkJZWxzZQ0KKwkJCXJldHVybiBTeXN0ZW0uZ2V0UHJvcGVydGllcygpLmdldCgib3NnaS5pbnN0YWxsLmFyZWEiKS50b1N0cmluZygpDQorCQkJCQkuc3Vic3RyaW5nKDYpOw0KKwl9DQorDQorfQ0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb3JlL2ludGVybmFsL3V0aWwvTWFpblJlZ2lzdHJ5LmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29yZS9pbnRlcm5hbC91dGlsL01haW5SZWdpc3RyeS5qYXZhCmluZGV4IDE0NTIxMGQuLjQ4NmI1OTIgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb3JlL2ludGVybmFsL3V0aWwvTWFpblJlZ2lzdHJ5LmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvcmUvaW50ZXJuYWwvdXRpbC9NYWluUmVnaXN0cnkuamF2YQpAQCAtMTAsNyArMTAsNyBAQAogLS0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAgLS0KIC0tIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgIC0tCiAtLSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0ICAgICAtLQotLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogKi8KIApkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvcmUvaW50ZXJuYWwvdmlld3MvSW50ZXJuYWxWaWV3VXRpbHMuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb3JlL2ludGVybmFsL3ZpZXdzL0ludGVybmFsVmlld1V0aWxzLmphdmEKaW5kZXggYzE2NDM5Ny4uNTYxNGI2NSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvcmUvaW50ZXJuYWwvdmlld3MvSW50ZXJuYWxWaWV3VXRpbHMuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29yZS9pbnRlcm5hbC92aWV3cy9JbnRlcm5hbFZpZXdVdGlscy5qYXZhCkBAIC0xMiw3ICsxMiw3IEBACiAtLSBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzICAtLQogLS0gYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAgLS0KIC0tIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgICAgIC0tCi0tLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqLwogCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29yZS9pbnRlcm5hbC92aWV3cy9SZWxvYWRYTUxQZXJtaXNzaW9ucy5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvcmUvaW50ZXJuYWwvdmlld3MvUmVsb2FkWE1MUGVybWlzc2lvbnMuamF2YQppbmRleCA1YWM4ZWYzLi41NjM2NjI4IDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29yZS9pbnRlcm5hbC92aWV3cy9SZWxvYWRYTUxQZXJtaXNzaW9ucy5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb3JlL2ludGVybmFsL3ZpZXdzL1JlbG9hZFhNTFBlcm1pc3Npb25zLmphdmEKQEAgLTEwLDcgKzEwLDcgQEAKIC0tIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgIC0tCiAtLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlICAtLQogLS0gdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCAgICAgLS0KLS0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICovCiAKZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb3JlL2ludGVybmFsL3ZpZXdzL1ZpZXdQZXJtaXNzaW9ucy5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvcmUvaW50ZXJuYWwvdmlld3MvVmlld1Blcm1pc3Npb25zLmphdmEKaW5kZXggMWYzMTQ4Yy4uMTI3MmUzNiAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvcmUvaW50ZXJuYWwvdmlld3MvVmlld1Blcm1pc3Npb25zLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvcmUvaW50ZXJuYWwvdmlld3MvVmlld1Blcm1pc3Npb25zLmphdmEKQEAgLTEyLDcgKzEyLDcgQEAKIC0tIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgIC0tCiAtLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlICAtLQogLS0gdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCAgICAgLS0KLS0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICovCiAKZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb3JlL2ludGVybmFsL3ZpZXdzL2NvbW1hbmRzL0NyZWF0ZVZpZXdzQ29tbWFuZC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvcmUvaW50ZXJuYWwvdmlld3MvY29tbWFuZHMvQ3JlYXRlVmlld3NDb21tYW5kLmphdmEKaW5kZXggYjVlNjQwZS4uODVlNjZhNiAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvcmUvaW50ZXJuYWwvdmlld3MvY29tbWFuZHMvQ3JlYXRlVmlld3NDb21tYW5kLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvcmUvaW50ZXJuYWwvdmlld3MvY29tbWFuZHMvQ3JlYXRlVmlld3NDb21tYW5kLmphdmEKQEAgLTExLDcgKzExLDcgQEAKIC0tIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgIC0tCiAtLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlICAtLQogLS0gdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCAgICAgLS0KLS0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICovCiAKZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb3JlL2ludGVybmFsL3ZpZXdzL3Blcm1pc3Npb25zL0VudHJ5SWQuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb3JlL2ludGVybmFsL3ZpZXdzL3Blcm1pc3Npb25zL0VudHJ5SWQuamF2YQppbmRleCBkMjRmNjRhLi45Yzk1M2QzIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29yZS9pbnRlcm5hbC92aWV3cy9wZXJtaXNzaW9ucy9FbnRyeUlkLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvcmUvaW50ZXJuYWwvdmlld3MvcGVybWlzc2lvbnMvRW50cnlJZC5qYXZhCkBAIC0xMCw3ICsxMCw3IEBACiAtLSBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzICAtLQogLS0gYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAgLS0KIC0tIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgICAgIC0tCi0tLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKi8KIApkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvcmUvaW50ZXJuYWwvdmlld3MvcGVybWlzc2lvbnMvUGVybWlzc2lvbkVudHJ5LmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29yZS9pbnRlcm5hbC92aWV3cy9wZXJtaXNzaW9ucy9QZXJtaXNzaW9uRW50cnkuamF2YQppbmRleCAyMWEyOWJjLi5iNzU1MDA4IDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29yZS9pbnRlcm5hbC92aWV3cy9wZXJtaXNzaW9ucy9QZXJtaXNzaW9uRW50cnkuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29yZS9pbnRlcm5hbC92aWV3cy9wZXJtaXNzaW9ucy9QZXJtaXNzaW9uRW50cnkuamF2YQpAQCAtMTIsNyArMTIsNyBAQAogLS0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAgLS0KIC0tIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgIC0tCiAtLSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0ICAgICAtLQotLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogKi8KIApkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvcmUvaW50ZXJuYWwvdmlld3MvcGVybWlzc2lvbnMvUGVybWlzc2lvbkxpc3QuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb3JlL2ludGVybmFsL3ZpZXdzL3Blcm1pc3Npb25zL1Blcm1pc3Npb25MaXN0LmphdmEKaW5kZXggOWU4NmRiMy4uNGFmNTE5MCAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvcmUvaW50ZXJuYWwvdmlld3MvcGVybWlzc2lvbnMvUGVybWlzc2lvbkxpc3QuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29yZS9pbnRlcm5hbC92aWV3cy9wZXJtaXNzaW9ucy9QZXJtaXNzaW9uTGlzdC5qYXZhCkBAIC0xMiw3ICsxMiw3IEBACiAtLSBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzICAtLQogLS0gYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAgLS0KIC0tIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgICAgIC0tCi0tLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqLwogCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29yZS9uYXR1cmVzL0NIRVNTTmF0dXJlLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29yZS9uYXR1cmVzL0NIRVNTTmF0dXJlLmphdmEKaW5kZXggM2NiMzRjMi4uNDZhZTIwNSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvcmUvbmF0dXJlcy9DSEVTU05hdHVyZS5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb3JlL25hdHVyZXMvQ0hFU1NOYXR1cmUuamF2YQpAQCAtMTAsNyArMTAsNyBAQAogLS0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAgLS0KIC0tIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgIC0tCiAtLSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0ICAgICAtLQotLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogKi8KIApkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvcmUvbm90aWZpY2F0aW9ucy9SZXNvdXJjZU5vdGlmaWNhdGlvbi5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvcmUvbm90aWZpY2F0aW9ucy9SZXNvdXJjZU5vdGlmaWNhdGlvbi5qYXZhCmluZGV4IDZiOTZiZTUuLjUwYTM0NzcgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb3JlL25vdGlmaWNhdGlvbnMvUmVzb3VyY2VOb3RpZmljYXRpb24uamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29yZS9ub3RpZmljYXRpb25zL1Jlc291cmNlTm90aWZpY2F0aW9uLmphdmEKQEAgLTEwLDcgKzEwLDcgQEAKIC0tIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgIC0tCiAtLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlICAtLQogLS0gdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCAgICAgLS0KLS0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICovCiAKZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb3JlL3ByZWZlcmVuY2VzL0ZpbHRlcmFibGVDb25zdHJhaW50LmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29yZS9wcmVmZXJlbmNlcy9GaWx0ZXJhYmxlQ29uc3RyYWludC5qYXZhCmluZGV4IDg4NWRiZDcuLjIzMjdmYTcgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb3JlL3ByZWZlcmVuY2VzL0ZpbHRlcmFibGVDb25zdHJhaW50LmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvcmUvcHJlZmVyZW5jZXMvRmlsdGVyYWJsZUNvbnN0cmFpbnQuamF2YQpAQCAtMTAsNyArMTAsNyBAQAogLS0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAgLS0KIC0tIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgIC0tCiAtLSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0ICAgICAtLQotLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogKi8KIApkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvcmUvcHJlZmVyZW5jZXMvSUZpbHRlcmFibGUuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb3JlL3ByZWZlcmVuY2VzL0lGaWx0ZXJhYmxlLmphdmEKaW5kZXggYzFiMGU1Mi4uMGE0NjlkNyAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvcmUvcHJlZmVyZW5jZXMvSUZpbHRlcmFibGUuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29yZS9wcmVmZXJlbmNlcy9JRmlsdGVyYWJsZS5qYXZhCkBAIC0xMCw3ICsxMCw3IEBACiAtLSBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzICAtLQogLS0gYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAgLS0KIC0tIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgICAgIC0tCi0tLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqLwogCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29yZS9wcm9maWxlcy9DSEVTU1Byb2ZpbGVNYW5hZ2VyLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29yZS9wcm9maWxlcy9DSEVTU1Byb2ZpbGVNYW5hZ2VyLmphdmEKaW5kZXggMWUyYzlmZS4uODk2MzM5NyAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvcmUvcHJvZmlsZXMvQ0hFU1NQcm9maWxlTWFuYWdlci5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb3JlL3Byb2ZpbGVzL0NIRVNTUHJvZmlsZU1hbmFnZXIuamF2YQpAQCAtMTAsNyArMTAsNyBAQAogLS0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAgLS0KIC0tIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgIC0tCiAtLSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0ICAgICAtLQotLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICovCiAKZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb3JlL3Byb2ZpbGVzL01BUlRFUHJvZmlsZU1hbmFnZXIuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb3JlL3Byb2ZpbGVzL01BUlRFUHJvZmlsZU1hbmFnZXIuamF2YQppbmRleCAzYzJkNGNhLi5kYmRmYjBmIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29yZS9wcm9maWxlcy9NQVJURVByb2ZpbGVNYW5hZ2VyLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvcmUvcHJvZmlsZXMvTUFSVEVQcm9maWxlTWFuYWdlci5qYXZhCkBAIC0xMCw3ICsxMCw3IEBACiAtLSBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzICAtLQogLS0gYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAgLS0KIC0tIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgICAgIC0tCi0tLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqLwogCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29yZS9wcm9maWxlcy9TeXNNTFByb2ZpbGVNYW5hZ2VyLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29yZS9wcm9maWxlcy9TeXNNTFByb2ZpbGVNYW5hZ2VyLmphdmEKaW5kZXggYjVkZDliMS4uOGY0Y2U4YSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvcmUvcHJvZmlsZXMvU3lzTUxQcm9maWxlTWFuYWdlci5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb3JlL3Byb2ZpbGVzL1N5c01MUHJvZmlsZU1hbmFnZXIuamF2YQpAQCAtMTIsNyArMTIsNyBAQAogLS0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAgLS0KIC0tIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgIC0tCiAtLSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0ICAgICAtLQotLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICovCiAKZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb3JlL3Jlc291cmNlbGlzdGVuZXIvUmVzb3VyY2VTZXRMaXN0ZW5lckV4dHJhLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29yZS9yZXNvdXJjZWxpc3RlbmVyL1Jlc291cmNlU2V0TGlzdGVuZXJFeHRyYS5qYXZhCmluZGV4IDgyNGNlOTMuLjBlYTM2NDkgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb3JlL3Jlc291cmNlbGlzdGVuZXIvUmVzb3VyY2VTZXRMaXN0ZW5lckV4dHJhLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvcmUvcmVzb3VyY2VsaXN0ZW5lci9SZXNvdXJjZVNldExpc3RlbmVyRXh0cmEuamF2YQpAQCAtMTAsNyArMTAsNyBAQAogLS0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAgLS0KIC0tIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgIC0tCiAtLSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0ICAgICAtLQotLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogKi8KIApkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvcmUvcmVzb3VyY2VsaXN0ZW5lci9SZXNvdXJjZVNldExpc3RlbmVyTWFuYWdlci5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvcmUvcmVzb3VyY2VsaXN0ZW5lci9SZXNvdXJjZVNldExpc3RlbmVyTWFuYWdlci5qYXZhCmluZGV4IDNjZDMzMTguLmU1OGYzOGMgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb3JlL3Jlc291cmNlbGlzdGVuZXIvUmVzb3VyY2VTZXRMaXN0ZW5lck1hbmFnZXIuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29yZS9yZXNvdXJjZWxpc3RlbmVyL1Jlc291cmNlU2V0TGlzdGVuZXJNYW5hZ2VyLmphdmEKQEAgLTEwLDcgKzEwLDcgQEAKIC0tIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgIC0tCiAtLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlICAtLQogLS0gdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCAgICAgLS0KLS0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICovCiAKZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb3JlL3Jlc291cmNlbGlzdGVuZXIvU2VsZWN0aW9uTGlzdGVuZXJFeHRyYS5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvcmUvcmVzb3VyY2VsaXN0ZW5lci9TZWxlY3Rpb25MaXN0ZW5lckV4dHJhLmphdmEKaW5kZXggN2FkYzQ1ZS4uNThjZTNjYyAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvcmUvcmVzb3VyY2VsaXN0ZW5lci9TZWxlY3Rpb25MaXN0ZW5lckV4dHJhLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvcmUvcmVzb3VyY2VsaXN0ZW5lci9TZWxlY3Rpb25MaXN0ZW5lckV4dHJhLmphdmEKQEAgLTEwLDcgKzEwLDcgQEAKIC0tIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgIC0tCiAtLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlICAtLQogLS0gdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCAgICAgLS0KLS0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqLwogCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29yZS9yZXNvdXJjZWxpc3RlbmVyL1NlbGVjdGlvbkxpc3RlbmVyTWFuYWdlci5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvcmUvcmVzb3VyY2VsaXN0ZW5lci9TZWxlY3Rpb25MaXN0ZW5lck1hbmFnZXIuamF2YQppbmRleCBmODc4OTNmLi43ZGMxNTQ4IDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29yZS9yZXNvdXJjZWxpc3RlbmVyL1NlbGVjdGlvbkxpc3RlbmVyTWFuYWdlci5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb3JlL3Jlc291cmNlbGlzdGVuZXIvU2VsZWN0aW9uTGlzdGVuZXJNYW5hZ2VyLmphdmEKQEAgLTEwLDcgKzEwLDcgQEAKIC0tIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgIC0tCiAtLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlICAtLQogLS0gdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCAgICAgLS0KLS0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICovCiAKZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb3JlL3RyYW5zZm9ybWF0aW9uRXhlY3V0b3IvSVRyYW5zZm9ybWF0aW9uRXhlY3V0b3IuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb3JlL3RyYW5zZm9ybWF0aW9uRXhlY3V0b3IvSVRyYW5zZm9ybWF0aW9uRXhlY3V0b3IuamF2YQppbmRleCA0YWI1Yzk2Li45OWNiM2FmIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29yZS90cmFuc2Zvcm1hdGlvbkV4ZWN1dG9yL0lUcmFuc2Zvcm1hdGlvbkV4ZWN1dG9yLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvcmUvdHJhbnNmb3JtYXRpb25FeGVjdXRvci9JVHJhbnNmb3JtYXRpb25FeGVjdXRvci5qYXZhCkBAIC0xLDI1ICsxLDMyIEBACi1wYWNrYWdlIG9yZy5wb2xhcnN5cy5jaGVzcy5jb3JlLnRyYW5zZm9ybWF0aW9uRXhlY3V0b3I7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JRmlsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JRm9sZGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JUHJvZ3Jlc3NNb25pdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLlBhY2thZ2U7Ci0KLS8qKgotICogVGhpcyBpbnRlcmZhY2UgZGVmaW5lcyB0aGUgdHJhbnNmb3JtYXRpb24gdG8gZXhlY3V0ZS4KLSAqCi0gKi8KLXB1YmxpYyBpbnRlcmZhY2UgSVRyYW5zZm9ybWF0aW9uRXhlY3V0b3IgewotCS8qKgotCSAqIEV4ZWN1dGVzIHRoZSB0cmFuc2Zvcm1hdGlvbi4KLQkgKiAKLQkgKiBAcGFyYW0gbW9kZWxGaWxlICB0aGUgaW5wdXQgbW9kZWwgZm9yIHRoZSB0cmFuc2Zvcm1hdGlvbgotCSAqIEBwYXJhbSB0cmFuc2Zvcm1hdGlvbkRpcmVjdG9yeSAgdGhlIGRpcmVjdG9yeSB3aGVyZSB0aGUgb3V0cHV0IG9mIHRoZSB0cmFuc2Zvcm1hdGlvbiB3aWxsIGJlIGNyZWF0ZWQKLQkgKiBAcGFyYW0gbW9uaXRvciAgdGhlIHByb2dyZXNzIG1vbml0b3IKLQkgKiBAcGFyYW0gcHNtUGFja2FnZSAgdGhlIFBTTSBwYWNrYWdlIHRvIHVzZSBhcyBpbnB1dCBmb3IgdGhlIHRyYW5zZm9ybWF0aW9uCi0JICogQHJldHVybiAgdGhlIHJlc3VsdGluZyBzdGF0dXMgb2YgdGhlIHRyYW5zZm9ybWF0aW9uCi0JICogQHRocm93cyBFeGNlcHRpb24gIHdoZW4gc29tZXRoaW5nIHdlbnQgd3JvbmcgZHVyaW5nIHRoZSB0cmFuc2Zvcm1hdGlvbgotCSAqLwotCXB1YmxpYyBTdHJpbmcgZXhlY3V0ZShJRmlsZSBtb2RlbEZpbGUsIElGb2xkZXIgdHJhbnNmb3JtYXRpb25EaXJlY3RvcnksCi0JCQlJUHJvZ3Jlc3NNb25pdG9yIG1vbml0b3IsIFBhY2thZ2UgcHNtUGFja2FnZSkgdGhyb3dzIEV4Y2VwdGlvbjsKLX0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICogQ29weXJpZ2h0IChDKSAyMDIwIA0KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCisgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCitwYWNrYWdlIG9yZy5wb2xhcnN5cy5jaGVzcy5jb3JlLnRyYW5zZm9ybWF0aW9uRXhlY3V0b3I7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklGaWxlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JRm9sZGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVByb2dyZXNzTW9uaXRvcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuUGFja2FnZTsNCisNCisvKioNCisgKiBUaGlzIGludGVyZmFjZSBkZWZpbmVzIHRoZSB0cmFuc2Zvcm1hdGlvbiB0byBleGVjdXRlLg0KKyAqDQorICovDQorcHVibGljIGludGVyZmFjZSBJVHJhbnNmb3JtYXRpb25FeGVjdXRvciB7DQorCS8qKg0KKwkgKiBFeGVjdXRlcyB0aGUgdHJhbnNmb3JtYXRpb24uDQorCSAqIA0KKwkgKiBAcGFyYW0gbW9kZWxGaWxlICB0aGUgaW5wdXQgbW9kZWwgZm9yIHRoZSB0cmFuc2Zvcm1hdGlvbg0KKwkgKiBAcGFyYW0gdHJhbnNmb3JtYXRpb25EaXJlY3RvcnkgIHRoZSBkaXJlY3Rvcnkgd2hlcmUgdGhlIG91dHB1dCBvZiB0aGUgdHJhbnNmb3JtYXRpb24gd2lsbCBiZSBjcmVhdGVkDQorCSAqIEBwYXJhbSBtb25pdG9yICB0aGUgcHJvZ3Jlc3MgbW9uaXRvcg0KKwkgKiBAcGFyYW0gcHNtUGFja2FnZSAgdGhlIFBTTSBwYWNrYWdlIHRvIHVzZSBhcyBpbnB1dCBmb3IgdGhlIHRyYW5zZm9ybWF0aW9uDQorCSAqIEByZXR1cm4gIHRoZSByZXN1bHRpbmcgc3RhdHVzIG9mIHRoZSB0cmFuc2Zvcm1hdGlvbg0KKwkgKiBAdGhyb3dzIEV4Y2VwdGlvbiAgd2hlbiBzb21ldGhpbmcgd2VudCB3cm9uZyBkdXJpbmcgdGhlIHRyYW5zZm9ybWF0aW9uDQorCSAqLw0KKwlwdWJsaWMgU3RyaW5nIGV4ZWN1dGUoSUZpbGUgbW9kZWxGaWxlLCBJRm9sZGVyIHRyYW5zZm9ybWF0aW9uRGlyZWN0b3J5LA0KKwkJCUlQcm9ncmVzc01vbml0b3IgbW9uaXRvciwgUGFja2FnZSBwc21QYWNrYWdlKSB0aHJvd3MgRXhjZXB0aW9uOw0KK30NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29yZS90cmFuc2Zvcm1hdGlvbkV4ZWN1dG9yL1RyYW5zZm9ybWF0aW9uRXhlY3V0b3JNYW5hZ2VyLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29yZS90cmFuc2Zvcm1hdGlvbkV4ZWN1dG9yL1RyYW5zZm9ybWF0aW9uRXhlY3V0b3JNYW5hZ2VyLmphdmEKaW5kZXggYmM2YjYzMy4uZTkxZGJjZCAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvcmUvdHJhbnNmb3JtYXRpb25FeGVjdXRvci9UcmFuc2Zvcm1hdGlvbkV4ZWN1dG9yTWFuYWdlci5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb3JlL3RyYW5zZm9ybWF0aW9uRXhlY3V0b3IvVHJhbnNmb3JtYXRpb25FeGVjdXRvck1hbmFnZXIuamF2YQpAQCAtMTAsNyArMTAsNyBAQAogLS0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAgLS0KIC0tIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgIC0tCiAtLSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0ICAgICAtLQotLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogKi8KIApkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvcmUvdXRpbC9BbmFseXNpc1Jlc3VsdERhdGEuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb3JlL3V0aWwvQW5hbHlzaXNSZXN1bHREYXRhLmphdmEKaW5kZXggM2M2NGIyMy4uNmJmOGQ1YSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvcmUvdXRpbC9BbmFseXNpc1Jlc3VsdERhdGEuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29yZS91dGlsL0FuYWx5c2lzUmVzdWx0RGF0YS5qYXZhCkBAIC0yLDkgKzIsOSBAQAogICoKICAqIENvcHlyaWdodCAoYykgMjAxNSBJbnRlY3MgU3BBIAogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICAqCiAgKiBDb250cmlidXRvcnM6CiAgKiBMYXVyYSBCYXJhY2NoaSAgbGF1cmEuYmFyYWNjaGlAaW50ZWNzLml0ICAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbiBhbmQvb3IgaW5pdGlhbCBkb2N1bWVudGF0aW9uCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29yZS91dGlsL0NIRVNTUHJvamVjdFN1cHBvcnQuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb3JlL3V0aWwvQ0hFU1NQcm9qZWN0U3VwcG9ydC5qYXZhCmluZGV4IGFlYWQxOGQuLmFhZmYzNDQgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb3JlL3V0aWwvQ0hFU1NQcm9qZWN0U3VwcG9ydC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb3JlL3V0aWwvQ0hFU1NQcm9qZWN0U3VwcG9ydC5qYXZhCkBAIC04LDcgKzgsNyBAQAogLS0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAgLS0KIC0tIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgIC0tCiAtLSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0ICAgICAtLQotLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICovCiAKZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb3JlL3V0aWwvRW5kVG9FbmRSZXN1bHREYXRhLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29yZS91dGlsL0VuZFRvRW5kUmVzdWx0RGF0YS5qYXZhCmluZGV4IDc2MmViNDAuLjQ1MjQwNDggMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb3JlL3V0aWwvRW5kVG9FbmRSZXN1bHREYXRhLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvcmUvdXRpbC9FbmRUb0VuZFJlc3VsdERhdGEuamF2YQpAQCAtMSwzMCArMSwzNyBAQAotLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gLSBDb3B5cmlnaHQgKGMpIDIwMTUgSW50ZWNzLgotIC0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotIC0gYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gLSB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotIC0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAtCi0gLSBDb250cmlidXRvcnM6Ci0gLSAgICBMLiBCYXJhY2NoaSwgbGF1cmEuYmFyYWNjaGlAaW50ZWNzLml0Ci0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLQotcGFja2FnZSBvcmcucG9sYXJzeXMuY2hlc3MuY29yZS51dGlsOwotCi0vKioKLSAqIFVzZWQgdG8gc2F2ZSBhbmQgZGlzcGxheSB0aGUgcmVzdWx0cyBkYXRhIGZyb20gRW5kIHRvIEVuZCBSZXNwb25zZSBUaW1lIEFuYWx5c2lzIC4KLSAqLwotCi1wdWJsaWMgY2xhc3MgRW5kVG9FbmRSZXN1bHREYXRhIHsKLQkKLQkvKiogVGhlIHNjZW5hcmlvIG5hbWUuICovCi0JcHVibGljIFN0cmluZyBzY2VuYXJpb05hbWUgPSIiOwotCQotCS8qKiBUaGUgZGVhZGxpbmUuICovCi0JcHVibGljIFN0cmluZyBkZWFkbGluZSA9IiI7Ci0JCi0JLyoqIFRoZSByZXNwIHRpbWUuICovCi0JcHVibGljIFN0cmluZyByZXNwVGltZSA9IiI7Ci19Ci0KLQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgDQorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KKyAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKyAtIENvcHlyaWdodCAoYykgMjAxNSBJbnRlY3MuDQorIC0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAtIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KKyAtIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorIC0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCisgLQ0KKyAtIENvbnRyaWJ1dG9yczoNCisgLSAgICBMLiBCYXJhY2NoaSwgbGF1cmEuYmFyYWNjaGlAaW50ZWNzLml0DQorIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorcGFja2FnZSBvcmcucG9sYXJzeXMuY2hlc3MuY29yZS51dGlsOw0KKw0KKy8qKg0KKyAqIFVzZWQgdG8gc2F2ZSBhbmQgZGlzcGxheSB0aGUgcmVzdWx0cyBkYXRhIGZyb20gRW5kIHRvIEVuZCBSZXNwb25zZSBUaW1lIEFuYWx5c2lzIC4NCisgKi8NCisNCitwdWJsaWMgY2xhc3MgRW5kVG9FbmRSZXN1bHREYXRhIHsNCisJDQorCS8qKiBUaGUgc2NlbmFyaW8gbmFtZS4gKi8NCisJcHVibGljIFN0cmluZyBzY2VuYXJpb05hbWUgPSIiOw0KKwkNCisJLyoqIFRoZSBkZWFkbGluZS4gKi8NCisJcHVibGljIFN0cmluZyBkZWFkbGluZSA9IiI7DQorCQ0KKwkvKiogVGhlIHJlc3AgdGltZS4gKi8NCisJcHVibGljIFN0cmluZyByZXNwVGltZSA9IiI7DQorfQ0KKw0KKw0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb3JlL3V0aWwvSFdBbmFseXNpc1Jlc3VsdERhdGEuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb3JlL3V0aWwvSFdBbmFseXNpc1Jlc3VsdERhdGEuamF2YQppbmRleCBlN2MyNjI5Li5jZDM1YzNhIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29yZS91dGlsL0hXQW5hbHlzaXNSZXN1bHREYXRhLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvcmUvdXRpbC9IV0FuYWx5c2lzUmVzdWx0RGF0YS5qYXZhCkBAIC0yLDkgKzIsOSBAQAogICoKICAqIENvcHlyaWdodCAoYykgMjAxNSBJbnRlY3MgU3BBIAogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICAqCiAgKiBDb250cmlidXRvcnM6CiAgKiBMYXVyYSBCYXJhY2NoaSAgbGF1cmEuYmFyYWNjaGlAaW50ZWNzLml0ICAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbiBhbmQvb3IgaW5pdGlhbCBkb2N1bWVudGF0aW9uCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29yZS91dGlsL05vdGlmaWNhdGlvbk1hbmFnZXIuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb3JlL3V0aWwvTm90aWZpY2F0aW9uTWFuYWdlci5qYXZhCmluZGV4IDczNzczY2IuLjAzM2MyZWIgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb3JlL3V0aWwvTm90aWZpY2F0aW9uTWFuYWdlci5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb3JlL3V0aWwvTm90aWZpY2F0aW9uTWFuYWdlci5qYXZhCkBAIC0xMCw3ICsxMCw3IEBACiAtLSBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzICAtLQogLS0gYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAgLS0KIC0tIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgICAgIC0tCi0tLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqLwogCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29yZS91dGlsL2NvbW1hbmRzL0FkZERpYWdyYW1FbGVtZW50LmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29yZS91dGlsL2NvbW1hbmRzL0FkZERpYWdyYW1FbGVtZW50LmphdmEKaW5kZXggZGNlNWY5MS4uZTcwNmI1YyAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvcmUvdXRpbC9jb21tYW5kcy9BZGREaWFncmFtRWxlbWVudC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb3JlL3V0aWwvY29tbWFuZHMvQWRkRGlhZ3JhbUVsZW1lbnQuamF2YQpAQCAtMTAsNyArMTAsNyBAQAogLS0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAgLS0KIC0tIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgIC0tCiAtLSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0ICAgICAtLQotLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogKi8KIApkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvcmUvdXRpbC9jb21tYW5kcy9Jbml0Q0hFU1NNb2RlbENvbW1hbmQuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb3JlL3V0aWwvY29tbWFuZHMvSW5pdENIRVNTTW9kZWxDb21tYW5kLmphdmEKaW5kZXggMmU0ZGUzYy4uOTBlODNiNCAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvcmUvdXRpbC9jb21tYW5kcy9Jbml0Q0hFU1NNb2RlbENvbW1hbmQuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29yZS91dGlsL2NvbW1hbmRzL0luaXRDSEVTU01vZGVsQ29tbWFuZC5qYXZhCkBAIC0xLDY5ICsxLDc2IEBACi1wYWNrYWdlIG9yZy5wb2xhcnN5cy5jaGVzcy5jb3JlLnV0aWwuY29tbWFuZHM7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSUV4dGVuc2lvblJlZ2lzdHJ5OwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5QbGF0Zm9ybTsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUucmVzb3VyY2UuUmVzb3VyY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLnRyYW5zYWN0aW9uLlJlY29yZGluZ0NvbW1hbmQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLnRyYW5zYWN0aW9uLlRyYW5zYWN0aW9uYWxFZGl0aW5nRG9tYWluOwotaW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuaW5mcmEuY29yZS5yZXNvdXJjZS5Nb2RlbFNldDsKLWltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC50b29scy5tb2RlbC5VbWxVdGlsczsKLWltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5Nb2RlbDsKLWltcG9ydCBvcmcucG9sYXJzeXMuY2hlc3MuY29yZS5pbnRlcm5hbC5leHRlbnNpb25wb2ludC5BZGRQcm9maWxlSGFuZGxlcjsKLWltcG9ydCBvcmcucG9sYXJzeXMuY2hlc3MuY29yZS5pbnRlcm5hbC52aWV3cy5jb21tYW5kcy5DcmVhdGVWaWV3c0NvbW1hbmQ7Ci0KLS8qKgotICogVGhpcyBjbGFzcyBleHRlbmRzIHRoZSB7QGxpbmsgUmVjb3JkaW5nQ29tbWFuZH0gY2xhc3MgdG8gaW1wbGVtZW50IHRoZSBjb21tYW5kIHRvIGluaXRpYWxpemUgYQotICogQ0hFU1MgbW9kZWwuCi0gKgotICovCi1wdWJsaWMgY2xhc3MgSW5pdENIRVNTTW9kZWxDb21tYW5kIGV4dGVuZHMgUmVjb3JkaW5nQ29tbWFuZCB7Ci0KLQkvKiogVGhlIG1vZGVsIHNldC4gKi8KLQlwcml2YXRlIE1vZGVsU2V0IG1vZGVsU2V0OwotCi0JLyoqCi0JICogSW5pdGlhbGl6ZXMgdGhlIGNvbW1hbmQuCi0JICogCi0JICogQHBhcmFtIGVkaXRpbmdEb21haW4gIHRoZSBlZGl0aW5nIGRvbWFpbiB3aGVyZSB0aGUgY29tbWFuZCB0YWtlcyBwbGFjZQotCSAqIEBwYXJhbSBtb2RlbFNldCAgdGhlIG1vZGVsIHNldCB3aGVyZSB0aGUgY29tbWFuZCB3b3JrcyBpbgotCSAqLwotCXB1YmxpYyBJbml0Q0hFU1NNb2RlbENvbW1hbmQoVHJhbnNhY3Rpb25hbEVkaXRpbmdEb21haW4gZWRpdGluZ0RvbWFpbiwgTW9kZWxTZXQgbW9kZWxTZXQpIHsKLQkJCXN1cGVyKGVkaXRpbmdEb21haW4pOwotCQkJdGhpcy5tb2RlbFNldCA9IG1vZGVsU2V0OwotCX0KLQkKLQkvKiAobm9uLUphdmFkb2MpCi0JICogQHNlZSBvcmcuZWNsaXBzZS5lbWYudHJhbnNhY3Rpb24uUmVjb3JkaW5nQ29tbWFuZCNkb0V4ZWN1dGUoKQotCSAqLwotCUBPdmVycmlkZQotCXByb3RlY3RlZCB2b2lkIGRvRXhlY3V0ZSgpIHsKLQkJCi0JCUVPYmplY3QgIG93bmVyID0gZ2V0Um9vdEVsZW1lbnQoVW1sVXRpbHMuZ2V0VW1sUmVzb3VyY2UobW9kZWxTZXQpKTsKLQkJQ3JlYXRlVmlld3NDb21tYW5kLnZpZXdzVG9Nb2RlbCgoTW9kZWwpb3duZXIsIG1vZGVsU2V0LyosIGNoZXNzLCBtYXJ0ZSwgc3lzbWwqLyk7CQotCQkKLQkJLy9sZXQgZXh0ZXJuYWwgcGx1Z2lucyB0byBhZGQgYWRkaXRpb25hbCBwcm9maWxlcwotCQlBZGRQcm9maWxlSGFuZGxlciBoID0gbmV3IEFkZFByb2ZpbGVIYW5kbGVyKCk7Ci0JCUlFeHRlbnNpb25SZWdpc3RyeSByZWcgPSAgUGxhdGZvcm0uZ2V0RXh0ZW5zaW9uUmVnaXN0cnkoKTsKLQkJaC5leGVjdXRlQWRkUHJvZmlsZShyZWcsIChNb2RlbClvd25lciwgbW9kZWxTZXQpOwotCQkKLQl9Ci0JCi0JLyoqCi0JICogR2V0cyB0aGUgcm9vdCBlbGVtZW50LgotCSAqCi0JICogQHBhcmFtIG1vZGVsUmVzb3VyY2UgdGhlIG1vZGVsIHJlc291cmNlCi0JICogQHJldHVybiB0aGUgcm9vdCBlbGVtZW50Ci0JICovCi0JcHJvdGVjdGVkIEVPYmplY3QgZ2V0Um9vdEVsZW1lbnQoUmVzb3VyY2UgbW9kZWxSZXNvdXJjZSkgewotCQlFT2JqZWN0IHJvb3RFbGVtZW50ID0gbnVsbDsKLQkJaWYobW9kZWxSZXNvdXJjZSAhPSBudWxsICYmIG1vZGVsUmVzb3VyY2UuZ2V0Q29udGVudHMoKSAhPSBudWxsICYmIG1vZGVsUmVzb3VyY2UuZ2V0Q29udGVudHMoKS5zaXplKCkgPiAwKSB7Ci0JCQlPYmplY3Qgcm9vdCA9IG1vZGVsUmVzb3VyY2UuZ2V0Q29udGVudHMoKS5nZXQoMCk7Ci0JCQlpZihyb290IGluc3RhbmNlb2YgRU9iamVjdCkgewotCQkJCXJvb3RFbGVtZW50ID0gKEVPYmplY3Qpcm9vdDsKLQkJCX0KLQkJfQotCQlyZXR1cm4gcm9vdEVsZW1lbnQ7Ci0JfQotCi19CisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqIENvcHlyaWdodCAoQykgMjAyMCANCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQorICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorcGFja2FnZSBvcmcucG9sYXJzeXMuY2hlc3MuY29yZS51dGlsLmNvbW1hbmRzOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSUV4dGVuc2lvblJlZ2lzdHJ5Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuUGxhdGZvcm07DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUucmVzb3VyY2UuUmVzb3VyY2U7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi50cmFuc2FjdGlvbi5SZWNvcmRpbmdDb21tYW5kOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYudHJhbnNhY3Rpb24uVHJhbnNhY3Rpb25hbEVkaXRpbmdEb21haW47DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuaW5mcmEuY29yZS5yZXNvdXJjZS5Nb2RlbFNldDsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy51bWwudG9vbHMubW9kZWwuVW1sVXRpbHM7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLk1vZGVsOw0KK2ltcG9ydCBvcmcucG9sYXJzeXMuY2hlc3MuY29yZS5pbnRlcm5hbC5leHRlbnNpb25wb2ludC5BZGRQcm9maWxlSGFuZGxlcjsNCitpbXBvcnQgb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUuaW50ZXJuYWwudmlld3MuY29tbWFuZHMuQ3JlYXRlVmlld3NDb21tYW5kOw0KKw0KKy8qKg0KKyAqIFRoaXMgY2xhc3MgZXh0ZW5kcyB0aGUge0BsaW5rIFJlY29yZGluZ0NvbW1hbmR9IGNsYXNzIHRvIGltcGxlbWVudCB0aGUgY29tbWFuZCB0byBpbml0aWFsaXplIGENCisgKiBDSEVTUyBtb2RlbC4NCisgKg0KKyAqLw0KK3B1YmxpYyBjbGFzcyBJbml0Q0hFU1NNb2RlbENvbW1hbmQgZXh0ZW5kcyBSZWNvcmRpbmdDb21tYW5kIHsNCisNCisJLyoqIFRoZSBtb2RlbCBzZXQuICovDQorCXByaXZhdGUgTW9kZWxTZXQgbW9kZWxTZXQ7DQorDQorCS8qKg0KKwkgKiBJbml0aWFsaXplcyB0aGUgY29tbWFuZC4NCisJICogDQorCSAqIEBwYXJhbSBlZGl0aW5nRG9tYWluICB0aGUgZWRpdGluZyBkb21haW4gd2hlcmUgdGhlIGNvbW1hbmQgdGFrZXMgcGxhY2UNCisJICogQHBhcmFtIG1vZGVsU2V0ICB0aGUgbW9kZWwgc2V0IHdoZXJlIHRoZSBjb21tYW5kIHdvcmtzIGluDQorCSAqLw0KKwlwdWJsaWMgSW5pdENIRVNTTW9kZWxDb21tYW5kKFRyYW5zYWN0aW9uYWxFZGl0aW5nRG9tYWluIGVkaXRpbmdEb21haW4sIE1vZGVsU2V0IG1vZGVsU2V0KSB7DQorCQkJc3VwZXIoZWRpdGluZ0RvbWFpbik7DQorCQkJdGhpcy5tb2RlbFNldCA9IG1vZGVsU2V0Ow0KKwl9DQorCQ0KKwkvKiAobm9uLUphdmFkb2MpDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UuZW1mLnRyYW5zYWN0aW9uLlJlY29yZGluZ0NvbW1hbmQjZG9FeGVjdXRlKCkNCisJICovDQorCUBPdmVycmlkZQ0KKwlwcm90ZWN0ZWQgdm9pZCBkb0V4ZWN1dGUoKSB7DQorCQkNCisJCUVPYmplY3QgIG93bmVyID0gZ2V0Um9vdEVsZW1lbnQoVW1sVXRpbHMuZ2V0VW1sUmVzb3VyY2UobW9kZWxTZXQpKTsNCisJCUNyZWF0ZVZpZXdzQ29tbWFuZC52aWV3c1RvTW9kZWwoKE1vZGVsKW93bmVyLCBtb2RlbFNldC8qLCBjaGVzcywgbWFydGUsIHN5c21sKi8pOwkNCisJCQ0KKwkJLy9sZXQgZXh0ZXJuYWwgcGx1Z2lucyB0byBhZGQgYWRkaXRpb25hbCBwcm9maWxlcw0KKwkJQWRkUHJvZmlsZUhhbmRsZXIgaCA9IG5ldyBBZGRQcm9maWxlSGFuZGxlcigpOw0KKwkJSUV4dGVuc2lvblJlZ2lzdHJ5IHJlZyA9ICBQbGF0Zm9ybS5nZXRFeHRlbnNpb25SZWdpc3RyeSgpOw0KKwkJaC5leGVjdXRlQWRkUHJvZmlsZShyZWcsIChNb2RlbClvd25lciwgbW9kZWxTZXQpOw0KKwkJDQorCX0NCisJDQorCS8qKg0KKwkgKiBHZXRzIHRoZSByb290IGVsZW1lbnQuDQorCSAqDQorCSAqIEBwYXJhbSBtb2RlbFJlc291cmNlIHRoZSBtb2RlbCByZXNvdXJjZQ0KKwkgKiBAcmV0dXJuIHRoZSByb290IGVsZW1lbnQNCisJICovDQorCXByb3RlY3RlZCBFT2JqZWN0IGdldFJvb3RFbGVtZW50KFJlc291cmNlIG1vZGVsUmVzb3VyY2UpIHsNCisJCUVPYmplY3Qgcm9vdEVsZW1lbnQgPSBudWxsOw0KKwkJaWYobW9kZWxSZXNvdXJjZSAhPSBudWxsICYmIG1vZGVsUmVzb3VyY2UuZ2V0Q29udGVudHMoKSAhPSBudWxsICYmIG1vZGVsUmVzb3VyY2UuZ2V0Q29udGVudHMoKS5zaXplKCkgPiAwKSB7DQorCQkJT2JqZWN0IHJvb3QgPSBtb2RlbFJlc291cmNlLmdldENvbnRlbnRzKCkuZ2V0KDApOw0KKwkJCWlmKHJvb3QgaW5zdGFuY2VvZiBFT2JqZWN0KSB7DQorCQkJCXJvb3RFbGVtZW50ID0gKEVPYmplY3Qpcm9vdDsNCisJCQl9DQorCQl9DQorCQlyZXR1cm4gcm9vdEVsZW1lbnQ7DQorCX0NCisNCit9DQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvcmUvdXRpbC91bWwvTW9kZWxFcnJvci5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvcmUvdXRpbC91bWwvTW9kZWxFcnJvci5qYXZhCmluZGV4IDU4YWMxNGEuLjFhODdjYTggMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb3JlL3V0aWwvdW1sL01vZGVsRXJyb3IuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29yZS91dGlsL3VtbC9Nb2RlbEVycm9yLmphdmEKQEAgLTEsMzAgKzEsMzcgQEAKLXBhY2thZ2Ugb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUudXRpbC51bWw7Ci0KLS8qKgotICogVGhlIENsYXNzIE1vZGVsRXJyb3IuCi0gKi8KLXB1YmxpYyBjbGFzcyBNb2RlbEVycm9yIGV4dGVuZHMgRXhjZXB0aW9uIHsKLQotCS8qKgotCSAqIEluc3RhbnRpYXRlcyBhIG5ldyBtb2RlbCBlcnJvci4KLQkgKgotCSAqIEBwYXJhbSBtZXNzYWdlIHRoZSBtZXNzYWdlCi0JICovCi0JcHVibGljIE1vZGVsRXJyb3IoU3RyaW5nIG1lc3NhZ2UpIHsKLQkJc3VwZXIobWVzc2FnZSk7Ci0JfQotCQotCS8qKgotCSAqIEluc3RhbnRpYXRlcyBhIG5ldyBtb2RlbCBlcnJvci4KLQkgKgotCSAqIEBwYXJhbSBtZXNzYWdlRm9ybWF0IHRoZSBtZXNzYWdlIGZvcm1hdAotCSAqIEBwYXJhbSBhcmdzIHRoZSBhcmdzCi0JICovCi0JcHVibGljIE1vZGVsRXJyb3IoU3RyaW5nIG1lc3NhZ2VGb3JtYXQsIE9iamVjdC4uLiBhcmdzKSB7Ci0JCXN1cGVyKFN0cmluZy5mb3JtYXQobWVzc2FnZUZvcm1hdCwgYXJncykpOwotCX0KLQotCS8qKiBUaGUgQ29uc3RhbnQgc2VyaWFsVmVyc2lvblVJRC4gKi8KLQlwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSAtMzQ3MDg2OTA0MzkxNzI4NDA2NEw7Ci0KLX0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICogQ29weXJpZ2h0IChDKSAyMDIwIA0KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCisgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCitwYWNrYWdlIG9yZy5wb2xhcnN5cy5jaGVzcy5jb3JlLnV0aWwudW1sOw0KKw0KKy8qKg0KKyAqIFRoZSBDbGFzcyBNb2RlbEVycm9yLg0KKyAqLw0KK3B1YmxpYyBjbGFzcyBNb2RlbEVycm9yIGV4dGVuZHMgRXhjZXB0aW9uIHsNCisNCisJLyoqDQorCSAqIEluc3RhbnRpYXRlcyBhIG5ldyBtb2RlbCBlcnJvci4NCisJICoNCisJICogQHBhcmFtIG1lc3NhZ2UgdGhlIG1lc3NhZ2UNCisJICovDQorCXB1YmxpYyBNb2RlbEVycm9yKFN0cmluZyBtZXNzYWdlKSB7DQorCQlzdXBlcihtZXNzYWdlKTsNCisJfQ0KKwkNCisJLyoqDQorCSAqIEluc3RhbnRpYXRlcyBhIG5ldyBtb2RlbCBlcnJvci4NCisJICoNCisJICogQHBhcmFtIG1lc3NhZ2VGb3JtYXQgdGhlIG1lc3NhZ2UgZm9ybWF0DQorCSAqIEBwYXJhbSBhcmdzIHRoZSBhcmdzDQorCSAqLw0KKwlwdWJsaWMgTW9kZWxFcnJvcihTdHJpbmcgbWVzc2FnZUZvcm1hdCwgT2JqZWN0Li4uIGFyZ3MpIHsNCisJCXN1cGVyKFN0cmluZy5mb3JtYXQobWVzc2FnZUZvcm1hdCwgYXJncykpOw0KKwl9DQorDQorCS8qKiBUaGUgQ29uc3RhbnQgc2VyaWFsVmVyc2lvblVJRC4gKi8NCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gLTM0NzA4NjkwNDM5MTcyODQwNjRMOw0KKw0KK30NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29yZS91dGlsL3VtbC9Qcm9maWxlVXRpbHMuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb3JlL3V0aWwvdW1sL1Byb2ZpbGVVdGlscy5qYXZhCmluZGV4IDlmZWY5ZmIuLmQ1NGNjMzEgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb3JlL3V0aWwvdW1sL1Byb2ZpbGVVdGlscy5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb3JlL3V0aWwvdW1sL1Byb2ZpbGVVdGlscy5qYXZhCkBAIC04LDcgKzgsNyBAQAogLS0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAgLS0KIC0tIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgIC0tCiAtLSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0ICAgICAtLQotLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICovCiAKZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb3JlL3V0aWwvdW1sL1Jlc291cmNlVXRpbHMuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb3JlL3V0aWwvdW1sL1Jlc291cmNlVXRpbHMuamF2YQppbmRleCBjNGVlNjg2Li4yNzk1ZGUxIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29yZS91dGlsL3VtbC9SZXNvdXJjZVV0aWxzLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvcmUvdXRpbC91bWwvUmVzb3VyY2VVdGlscy5qYXZhCkBAIC0xMCw3ICsxMCw3IEBACiAtLSBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzICAtLQogLS0gYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAgLS0KIC0tIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgICAgIC0tCi0tLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqLwogCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29yZS91dGlsL3VtbC9VTUxVdGlscy5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvcmUvdXRpbC91bWwvVU1MVXRpbHMuamF2YQppbmRleCAzZDRjNzhiLi5lMDFmNDAyIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29yZS91dGlsL3VtbC9VTUxVdGlscy5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb3JlL3V0aWwvdW1sL1VNTFV0aWxzLmphdmEKQEAgLTEwLDcgKzEwLDcgQEAKIC0tIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgIC0tCiAtLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlICAtLQogLS0gdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCAgICAgLS0KLS0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqLwogCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29yZS91dGlsL3VtbC9WYWx1ZU5GUC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvcmUvdXRpbC91bWwvVmFsdWVORlAuamF2YQppbmRleCBhN2UyODQ4Li40YTc3NGFmIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29yZS91dGlsL3VtbC9WYWx1ZU5GUC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb3JlL3V0aWwvdW1sL1ZhbHVlTkZQLmphdmEKQEAgLTEsMjQgKzEsMzEgQEAKLS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIC0gQ29weXJpZ2h0IChjKSAyMDE1IEludGVjcy4KLSAtIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAtIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotIC0gd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAtIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gLQotIC0gQ29udHJpYnV0b3JzOgotIC0gICAgTC4gQmFyYWNjaGksIGxhdXJhLmJhcmFjY2hpQGludGVjcy5pdAotIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0KLXBhY2thZ2Ugb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUudXRpbC51bWw7Ci0KLS8qKgotICogVGhlIENsYXNzIFZhbHVlTkZQLgotICovCi1wdWJsaWMgY2xhc3MgVmFsdWVORlAgewotCQotCS8qKiBUaGUgdW5pdC4gKi8KLQlwdWJsaWMgU3RyaW5nIHVuaXQgPSBuZXcgU3RyaW5nKCk7Ci0JCi0JLyoqIFRoZSB2YWx1ZS4gKi8KLQlwdWJsaWMgRG91YmxlIHZhbHVlID0gMC4wOwotfQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgDQorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KKyAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKyAtIENvcHlyaWdodCAoYykgMjAxNSBJbnRlY3MuDQorIC0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAtIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KKyAtIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorIC0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCisgLQ0KKyAtIENvbnRyaWJ1dG9yczoNCisgLSAgICBMLiBCYXJhY2NoaSwgbGF1cmEuYmFyYWNjaGlAaW50ZWNzLml0DQorIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorcGFja2FnZSBvcmcucG9sYXJzeXMuY2hlc3MuY29yZS51dGlsLnVtbDsNCisNCisvKioNCisgKiBUaGUgQ2xhc3MgVmFsdWVORlAuDQorICovDQorcHVibGljIGNsYXNzIFZhbHVlTkZQIHsNCisJDQorCS8qKiBUaGUgdW5pdC4gKi8NCisJcHVibGljIFN0cmluZyB1bml0ID0gbmV3IFN0cmluZygpOw0KKwkNCisJLyoqIFRoZSB2YWx1ZS4gKi8NCisJcHVibGljIERvdWJsZSB2YWx1ZSA9IDAuMDsNCit9DQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvcmUvdmlld3MvRGlhZ3JhbVN0YXR1cy5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvcmUvdmlld3MvRGlhZ3JhbVN0YXR1cy5qYXZhCmluZGV4IDhmYTk3YzkuLjg5YWNhMTAgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb3JlL3ZpZXdzL0RpYWdyYW1TdGF0dXMuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29yZS92aWV3cy9EaWFncmFtU3RhdHVzLmphdmEKQEAgLTEyLDcgKzEyLDcgQEAKIC0tIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgIC0tCiAtLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlICAtLQogLS0gdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCAgICAgLS0KLS0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqLwogCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29yZS92aWV3cy9WaWV3RGlhZ3JhbUFzc29jaWF0aW9ucy5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvcmUvdmlld3MvVmlld0RpYWdyYW1Bc3NvY2lhdGlvbnMuamF2YQppbmRleCBjZTY3MmM0Li4yOWRlMDMxIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvY29yZS92aWV3cy9WaWV3RGlhZ3JhbUFzc29jaWF0aW9ucy5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb3JlL3ZpZXdzL1ZpZXdEaWFncmFtQXNzb2NpYXRpb25zLmphdmEKQEAgLTEwLDcgKzEwLDcgQEAKIC0tIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgIC0tCiAtLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlICAtLQogLS0gdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCAgICAgLS0KLS0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICovCiAKZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9jb3JlL3ZpZXdzL1ZpZXdVdGlscy5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvcmUvdmlld3MvVmlld1V0aWxzLmphdmEKaW5kZXggNDYzMjRkOC4uOGFlNjQyYyAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvcmUvdmlld3MvVmlld1V0aWxzLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2NvcmUvdmlld3MvVmlld1V0aWxzLmphdmEKQEAgLTExLDcgKzExLDcgQEAKIC0tIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgIC0tCiAtLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlICAtLQogLS0gdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCAgICAgLS0KLS0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICovCiAKZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUvdGhlbWUvZnJhbWVfdGhlbWUuY3NzIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS90aGVtZS9mcmFtZV90aGVtZS5jc3MKaW5kZXggYWMzODEwNi4uOTUzZDFjZSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS90aGVtZS9mcmFtZV90aGVtZS5jc3MKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS90aGVtZS9mcmFtZV90aGVtZS5jc3MKQEAgLTIsOSArMiw5IEBACiAgKiBDb3B5cmlnaHQgKGMpIDIwMTIgQ0VBIExJU1QuCiAgKiAKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgKgogICogQ29udHJpYnV0b3JzOgogICogIENhbWlsbGUgTGV0YXZlcm5pZXIgKENFQSBMSVNUKSBjYW1pbGxlLmxldGF2ZXJuaWVyQGNlYS5mcgpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS90aGVtZS9wYXB5cnVzX3RoZW1lLmNzcyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUvdGhlbWUvcGFweXJ1c190aGVtZS5jc3MKaW5kZXggYTcwZTFjMi4uZWNmMzBiZiAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS90aGVtZS9wYXB5cnVzX3RoZW1lLmNzcworKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlL3RoZW1lL3BhcHlydXNfdGhlbWUuY3NzCkBAIC0yLDkgKzIsOSBAQAogICogQ29weXJpZ2h0IChjKSAyMDEyIENFQSBMSVNULg0KICAqIA0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKg0KICAqIENvbnRyaWJ1dG9yczoNCiAgKiAgQ2FtaWxsZSBMZXRhdmVybmllciAoQ0VBIExJU1QpIGNhbWlsbGUubGV0YXZlcm5pZXJAY2VhLmZyDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS90aGVtZS9zeXNtbC5jc3MgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlL3RoZW1lL3N5c21sLmNzcwppbmRleCA3MmEzMjM1Li41MDBjOWI0IDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlL3RoZW1lL3N5c21sLmNzcworKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlL3RoZW1lL3N5c21sLmNzcwpAQCAtMiw5ICsyLDkgQEAKICAqIENvcHlyaWdodCAoYykgMjAxNCBDRUEgTElTVC4NCiAgKiANCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICoNCiAgKiBDb250cmlidXRvcnM6DQogICogIENhbWlsbGUgTGV0YXZlcm5pZXIgKENFQSBMSVNUKSBjYW1pbGxlLmxldGF2ZXJuaWVyQGNlYS5mcg0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUvdGhlbWUvdW1sQmFzZS5jc3MgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlL3RoZW1lL3VtbEJhc2UuY3NzCmluZGV4IGE3NDNkOWQuLjMzZGMxNjkgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUvdGhlbWUvdW1sQmFzZS5jc3MKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS90aGVtZS91bWxCYXNlLmNzcwpAQCAtMiw5ICsyLDkgQEAKICAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4KICAqIAogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICAqCiAgKiBDb250cmlidXRvcnM6CiAgKiAgTWlja2HDq2wgQURBTSAoQUxMNFRFQykgbWlja2FlbC5hZGFtQGFsbDR0ZWMubmV0IC0gR2VuZXJpYyBzaGFwZSBkZWZhdWx0IHZhbHVlIGltcGxlbWVudGF0aW9uLiBEZWZhdWx0IHN5bWJvbCBpbXBsZW1lbnRhdGlvbi4KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUvdW51c2VkL0NyZWF0ZUNIRVNTTW9kZWxDb21tYW5kLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlL3VudXNlZC9DcmVhdGVDSEVTU01vZGVsQ29tbWFuZC5qYXZhCmluZGV4IDU4NDM1NjkuLmRjNmZiNTggMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUvdW51c2VkL0NyZWF0ZUNIRVNTTW9kZWxDb21tYW5kLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS91bnVzZWQvQ3JlYXRlQ0hFU1NNb2RlbENvbW1hbmQuamF2YQpAQCAtMTAsNyArMTAsNyBAQAogLS0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAgLS0KIC0tIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgIC0tCiAtLSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0ICAgICAtLQotLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogKi8KIApkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS91bnVzZWQvTmV3Q0hFU1NNb2RlbENvbW1hbmQuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUvdW51c2VkL05ld0NIRVNTTW9kZWxDb21tYW5kLmphdmEKaW5kZXggYzQ2ZDkwNC4uMDEwNWMzZSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS91bnVzZWQvTmV3Q0hFU1NNb2RlbENvbW1hbmQuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlL3VudXNlZC9OZXdDSEVTU01vZGVsQ29tbWFuZC5qYXZhCkBAIC0xMCw3ICsxMCw3IEBACiAtLSBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzICAtLQogLS0gYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAgLS0KIC0tIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgICAgIC0tCi0tLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqLwogCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlL3VudXNlZC9hbm5vdGF0aW9ucy9EeW5hbWljQ29uc3RyYWludC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS91bnVzZWQvYW5ub3RhdGlvbnMvRHluYW1pY0NvbnN0cmFpbnQuamF2YQppbmRleCA1MzQ3ZTQxLi5jOTUyODIyIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlL3VudXNlZC9hbm5vdGF0aW9ucy9EeW5hbWljQ29uc3RyYWludC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUvdW51c2VkL2Fubm90YXRpb25zL0R5bmFtaWNDb25zdHJhaW50LmphdmEKQEAgLTEwLDcgKzEwLDcgQEAKIC0tIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgIC0tCiAtLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlICAtLQogLS0gdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCAgICAgLS0KLS0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICovCiAKZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUvdW51c2VkL2Fubm90YXRpb25zL0R5bmFtaWNDb25zdHJhaW50TGliLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlL3VudXNlZC9hbm5vdGF0aW9ucy9EeW5hbWljQ29uc3RyYWludExpYi5qYXZhCmluZGV4IDY1OWYyOWQuLmIyNjU1YjQgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUvdW51c2VkL2Fubm90YXRpb25zL0R5bmFtaWNDb25zdHJhaW50TGliLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS91bnVzZWQvYW5ub3RhdGlvbnMvRHluYW1pY0NvbnN0cmFpbnRMaWIuamF2YQpAQCAtMTAsNyArMTAsNyBAQAogLS0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAgLS0KIC0tIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgIC0tCiAtLSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0ICAgICAtLQotLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogKi8KIApkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS91bnVzZWQvYW5ub3RhdGlvbnMvRHluYW1pY0NvbnN0cmFpbnRQcm9jZXNzb3IuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUvdW51c2VkL2Fubm90YXRpb25zL0R5bmFtaWNDb25zdHJhaW50UHJvY2Vzc29yLmphdmEKaW5kZXggMzJkYzJmOS4uYjM1NjE2ZCAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS91bnVzZWQvYW5ub3RhdGlvbnMvRHluYW1pY0NvbnN0cmFpbnRQcm9jZXNzb3IuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlL3VudXNlZC9hbm5vdGF0aW9ucy9EeW5hbWljQ29uc3RyYWludFByb2Nlc3Nvci5qYXZhCkBAIC0xMCw3ICsxMCw3IEBACiAtLSBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzICAtLQogLS0gYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAgLS0KIC0tIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgICAgIC0tCi0tLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqLwogCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlL3VudXNlZC9hbm5vdGF0aW9ucy9JRWwuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUvdW51c2VkL2Fubm90YXRpb25zL0lFbC5qYXZhCmluZGV4IDBhZWZlNTkuLjJhMjFjM2UgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUvdW51c2VkL2Fubm90YXRpb25zL0lFbC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUvdW51c2VkL2Fubm90YXRpb25zL0lFbC5qYXZhCkBAIC0xMCw3ICsxMCw3IEBACiAtLSBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzICAtLQogLS0gYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAgLS0KIC0tIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgICAgIC0tCi0tLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqLwogCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlL3VudXNlZC9hbm5vdGF0aW9ucy9MaWJFeGFtcGxlLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5jb3JlL3VudXNlZC9hbm5vdGF0aW9ucy9MaWJFeGFtcGxlLmphdmEKaW5kZXggMDAzZWRhNS4uMDNmMjk4MiAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuY29yZS91bnVzZWQvYW5ub3RhdGlvbnMvTGliRXhhbXBsZS5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUvdW51c2VkL2Fubm90YXRpb25zL0xpYkV4YW1wbGUuamF2YQpAQCAtMTAsNyArMTAsNyBAQAogLS0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAgLS0KIC0tIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgIC0tCiAtLSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0ICAgICAtLQotLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogKi8KIApkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuZGlhZ3JhbS51aS9hYm91dC5odG1sIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuZGlhZ3JhbS51aS9hYm91dC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE2NGY3ODEKLS0tIC9kZXYvbnVsbAorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5kaWFncmFtLnVpL2Fib3V0Lmh0bWwKQEAgLTAsMCArMSwzNiBAQAorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgU3RyaWN0Ly9FTiIKKyAgICAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+Cis8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiIC8+Cis8dGl0bGU+QWJvdXQ8L3RpdGxlPgorPC9oZWFkPgorPGJvZHkgbGFuZz0iRU4tVVMiPgorCTxoMj5BYm91dCBUaGlzIENvbnRlbnQ8L2gyPgorCisJPHA+Tm92ZW1iZXIgMzAsIDIwMTc8L3A+CisJPGgzPkxpY2Vuc2U8L2gzPgorCisJPHA+CisJCVRoZSBFY2xpcHNlIEZvdW5kYXRpb24gbWFrZXMgYXZhaWxhYmxlIGFsbCBjb250ZW50IGluIHRoaXMgcGx1Zy1pbgorCQkoJnF1b3Q7Q29udGVudCZxdW90OykuIFVubGVzcyBvdGhlcndpc2UgaW5kaWNhdGVkIGJlbG93LCB0aGUgQ29udGVudAorCQlpcyBwcm92aWRlZCB0byB5b3UgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFY2xpcHNlCisJCVB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMi4wICgmcXVvdDtFUEwmcXVvdDspLiBBIGNvcHkgb2YgdGhlIEVQTCBpcworCQlhdmFpbGFibGUgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjA8L2E+LgorCQlGb3IgcHVycG9zZXMgb2YgdGhlIEVQTCwgJnF1b3Q7UHJvZ3JhbSZxdW90OyB3aWxsIG1lYW4gdGhlIENvbnRlbnQuCisJPC9wPgorCisJPHA+CisJCUlmIHlvdSBkaWQgbm90IHJlY2VpdmUgdGhpcyBDb250ZW50IGRpcmVjdGx5IGZyb20gdGhlIEVjbGlwc2UKKwkJRm91bmRhdGlvbiwgdGhlIENvbnRlbnQgaXMgYmVpbmcgcmVkaXN0cmlidXRlZCBieSBhbm90aGVyIHBhcnR5CisJCSgmcXVvdDtSZWRpc3RyaWJ1dG9yJnF1b3Q7KSBhbmQgZGlmZmVyZW50IHRlcm1zIGFuZCBjb25kaXRpb25zIG1heQorCQlhcHBseSB0byB5b3VyIHVzZSBvZiBhbnkgb2JqZWN0IGNvZGUgaW4gdGhlIENvbnRlbnQuIENoZWNrIHRoZQorCQlSZWRpc3RyaWJ1dG9yJ3MgbGljZW5zZSB0aGF0IHdhcyBwcm92aWRlZCB3aXRoIHRoZSBDb250ZW50LiBJZiBubyBzdWNoCisJCWxpY2Vuc2UgZXhpc3RzLCBjb250YWN0IHRoZSBSZWRpc3RyaWJ1dG9yLiBVbmxlc3Mgb3RoZXJ3aXNlIGluZGljYXRlZAorCQliZWxvdywgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFUEwgc3RpbGwgYXBwbHkgdG8gYW55IHNvdXJjZQorCQljb2RlIGluIHRoZSBDb250ZW50IGFuZCBzdWNoIHNvdXJjZSBjb2RlIG1heSBiZSBvYnRhaW5lZCBhdCA8YQorCQkJaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy8iPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmc8L2E+LgorCTwvcD4KKworPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmRpYWdyYW0udWkvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9kaWFncmFtL3VpL2NvbW1hbmRzL0V4cG9ydENvbXBvbmVudFRvSW1hZ2VDb21tYW5kLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5kaWFncmFtLnVpL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZGlhZ3JhbS91aS9jb21tYW5kcy9FeHBvcnRDb21wb25lbnRUb0ltYWdlQ29tbWFuZC5qYXZhCmluZGV4IDA1ZjMwOGUuLjYwNTc3NDQgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmRpYWdyYW0udWkvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9kaWFncmFtL3VpL2NvbW1hbmRzL0V4cG9ydENvbXBvbmVudFRvSW1hZ2VDb21tYW5kLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuZGlhZ3JhbS51aS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2RpYWdyYW0vdWkvY29tbWFuZHMvRXhwb3J0Q29tcG9uZW50VG9JbWFnZUNvbW1hbmQuamF2YQpAQCAtMSw5ICsxLDkgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogQ29weXJpZ2h0IChDKSAyMDE3IEZvbmRhemlvbmUgQnJ1bm8gS2Vzc2xlci4NCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICogDQogICogQ29udHJpYnV0b3JzOg0KICAqICAgICBBbGJlcnRvIERlYmlhc2kgLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5kaWFncmFtLnVpL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZGlhZ3JhbS91aS9jb21tYW5kcy9FeHBvcnRNb2RlbFRvRG9jdW1lbnRDb21tYW5kLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5kaWFncmFtLnVpL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZGlhZ3JhbS91aS9jb21tYW5kcy9FeHBvcnRNb2RlbFRvRG9jdW1lbnRDb21tYW5kLmphdmEKaW5kZXggZjliMTg5ZS4uM2M5MGUwOSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuZGlhZ3JhbS51aS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2RpYWdyYW0vdWkvY29tbWFuZHMvRXhwb3J0TW9kZWxUb0RvY3VtZW50Q29tbWFuZC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmRpYWdyYW0udWkvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9kaWFncmFtL3VpL2NvbW1hbmRzL0V4cG9ydE1vZGVsVG9Eb2N1bWVudENvbW1hbmQuamF2YQpAQCAtMSw5ICsxLDkgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogQ29weXJpZ2h0IChDKSAyMDE3IEZvbmRhemlvbmUgQnJ1bm8gS2Vzc2xlci4NCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICogDQogICogQ29udHJpYnV0b3JzOg0KICAqICAgICBBbGJlcnRvIERlYmlhc2kgLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5kaWFncmFtLnVpL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZGlhZ3JhbS91aS9jb21tYW5kcy9HZW5lcmF0ZURvY3VtZW50Q29tbWFuZC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuZGlhZ3JhbS51aS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2RpYWdyYW0vdWkvY29tbWFuZHMvR2VuZXJhdGVEb2N1bWVudENvbW1hbmQuamF2YQppbmRleCA5OWRmZWE5Li4wZmIxYzVlIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5kaWFncmFtLnVpL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZGlhZ3JhbS91aS9jb21tYW5kcy9HZW5lcmF0ZURvY3VtZW50Q29tbWFuZC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmRpYWdyYW0udWkvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9kaWFncmFtL3VpL2NvbW1hbmRzL0dlbmVyYXRlRG9jdW1lbnRDb21tYW5kLmphdmEKQEAgLTEsOSArMSw5IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIENvcHlyaWdodCAoQykgMjAxNyBGb25kYXppb25lIEJydW5vIEtlc3NsZXIuDQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqIA0KICAqIENvbnRyaWJ1dG9yczoNCiAgKiAgICAgQWxiZXJ0byBEZWJpYXNpIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuZGlhZ3JhbS51aS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2RpYWdyYW0vdWkvZG9jR2VuZXJhdG9ycy9DSEVTU0Jsb2NrRGVmaW5pdGlvbkRpYWdyYW1Nb2RlbC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuZGlhZ3JhbS51aS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2RpYWdyYW0vdWkvZG9jR2VuZXJhdG9ycy9DSEVTU0Jsb2NrRGVmaW5pdGlvbkRpYWdyYW1Nb2RlbC5qYXZhCmluZGV4IDUwNGRmZmYuLmYyNmE2NGUgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmRpYWdyYW0udWkvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9kaWFncmFtL3VpL2RvY0dlbmVyYXRvcnMvQ0hFU1NCbG9ja0RlZmluaXRpb25EaWFncmFtTW9kZWwuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5kaWFncmFtLnVpL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZGlhZ3JhbS91aS9kb2NHZW5lcmF0b3JzL0NIRVNTQmxvY2tEZWZpbml0aW9uRGlhZ3JhbU1vZGVsLmphdmEKQEAgLTEsOSArMSw5IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIENvcHlyaWdodCAoQykgMjAxNyBGb25kYXppb25lIEJydW5vIEtlc3NsZXIuDQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqIA0KICAqIENvbnRyaWJ1dG9yczoNCiAgKiAgICAgQWxiZXJ0byBEZWJpYXNpIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuZGlhZ3JhbS51aS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2RpYWdyYW0vdWkvZG9jR2VuZXJhdG9ycy9DSEVTU0ludGVybmFsQmxvY2tEaWFncmFtTW9kZWwuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmRpYWdyYW0udWkvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9kaWFncmFtL3VpL2RvY0dlbmVyYXRvcnMvQ0hFU1NJbnRlcm5hbEJsb2NrRGlhZ3JhbU1vZGVsLmphdmEKaW5kZXggNDY1ZDVjZS4uNDdkNDlhYyAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuZGlhZ3JhbS51aS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2RpYWdyYW0vdWkvZG9jR2VuZXJhdG9ycy9DSEVTU0ludGVybmFsQmxvY2tEaWFncmFtTW9kZWwuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5kaWFncmFtLnVpL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZGlhZ3JhbS91aS9kb2NHZW5lcmF0b3JzL0NIRVNTSW50ZXJuYWxCbG9ja0RpYWdyYW1Nb2RlbC5qYXZhCkBAIC0xLDkgKzEsOSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTcgRm9uZGF6aW9uZSBCcnVubyBLZXNzbGVyLg0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKiANCiAgKiBDb250cmlidXRvcnM6DQogICogICAgIEFsYmVydG8gRGViaWFzaSAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbg0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmRpYWdyYW0udWkvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9kaWFncmFtL3VpL3NlcnZpY2VzL0NIRVNTRGlhZ3JhbXNHZW5lcmF0b3JTZXJ2aWNlLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5kaWFncmFtLnVpL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZGlhZ3JhbS91aS9zZXJ2aWNlcy9DSEVTU0RpYWdyYW1zR2VuZXJhdG9yU2VydmljZS5qYXZhCmluZGV4IGI5MDExODkuLjRhYTA1NTMgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmRpYWdyYW0udWkvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9kaWFncmFtL3VpL3NlcnZpY2VzL0NIRVNTRGlhZ3JhbXNHZW5lcmF0b3JTZXJ2aWNlLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuZGlhZ3JhbS51aS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2RpYWdyYW0vdWkvc2VydmljZXMvQ0hFU1NEaWFncmFtc0dlbmVyYXRvclNlcnZpY2UuamF2YQpAQCAtMSw5ICsxLDkgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogQ29weXJpZ2h0IChDKSAyMDE3IEZvbmRhemlvbmUgQnJ1bm8gS2Vzc2xlci4NCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICogDQogICogQ29udHJpYnV0b3JzOg0KICAqICAgICBBbGJlcnRvIERlYmlhc2kgLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5kaWFncmFtLnVpL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZGlhZ3JhbS91aS9zZXJ2aWNlcy9SZXN1bHRzR2VuZXJhdG9yU2VydmljZS5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuZGlhZ3JhbS51aS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2RpYWdyYW0vdWkvc2VydmljZXMvUmVzdWx0c0dlbmVyYXRvclNlcnZpY2UuamF2YQppbmRleCA2NWNmZDYxLi5hZTVkMTFlIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5kaWFncmFtLnVpL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZGlhZ3JhbS91aS9zZXJ2aWNlcy9SZXN1bHRzR2VuZXJhdG9yU2VydmljZS5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmRpYWdyYW0udWkvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9kaWFncmFtL3VpL3NlcnZpY2VzL1Jlc3VsdHNHZW5lcmF0b3JTZXJ2aWNlLmphdmEKQEAgLTEsOSArMSw5IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICogQ29weXJpZ2h0IChDKSAyMDE4IEZvbmRhemlvbmUgQnJ1bm8gS2Vzc2xlci4KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgKiAgCiAgKiBDb250cmlidXRvcnM6CiAgKiAgICAgTHVjYSBDcmlzdG9mb3JldHRpIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5kaWFncmFtLnVpL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZGlhZ3JhbS91aS91dGlscy9FeHBvcnREaWFsb2dVdGlscy5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuZGlhZ3JhbS51aS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2RpYWdyYW0vdWkvdXRpbHMvRXhwb3J0RGlhbG9nVXRpbHMuamF2YQppbmRleCAxODNlM2VkLi4zZWE0MjcxIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5kaWFncmFtLnVpL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZGlhZ3JhbS91aS91dGlscy9FeHBvcnREaWFsb2dVdGlscy5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmRpYWdyYW0udWkvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9kaWFncmFtL3VpL3V0aWxzL0V4cG9ydERpYWxvZ1V0aWxzLmphdmEKQEAgLTEsOSArMSw5IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIENvcHlyaWdodCAoQykgMjAxNyBGb25kYXppb25lIEJydW5vIEtlc3NsZXIuDQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqIA0KICAqIENvbnRyaWJ1dG9yczoNCiAgKiAgICAgQWxiZXJ0byBEZWJpYXNpIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuZGlhZ3JhbXNDcmVhdG9yL2Fib3V0Lmh0bWwgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5kaWFncmFtc0NyZWF0b3IvYWJvdXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNjRmNzgxCi0tLSAvZGV2L251bGwKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuZGlhZ3JhbXNDcmVhdG9yL2Fib3V0Lmh0bWwKQEAgLTAsMCArMSwzNiBAQAorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgU3RyaWN0Ly9FTiIKKyAgICAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+Cis8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiIC8+Cis8dGl0bGU+QWJvdXQ8L3RpdGxlPgorPC9oZWFkPgorPGJvZHkgbGFuZz0iRU4tVVMiPgorCTxoMj5BYm91dCBUaGlzIENvbnRlbnQ8L2gyPgorCisJPHA+Tm92ZW1iZXIgMzAsIDIwMTc8L3A+CisJPGgzPkxpY2Vuc2U8L2gzPgorCisJPHA+CisJCVRoZSBFY2xpcHNlIEZvdW5kYXRpb24gbWFrZXMgYXZhaWxhYmxlIGFsbCBjb250ZW50IGluIHRoaXMgcGx1Zy1pbgorCQkoJnF1b3Q7Q29udGVudCZxdW90OykuIFVubGVzcyBvdGhlcndpc2UgaW5kaWNhdGVkIGJlbG93LCB0aGUgQ29udGVudAorCQlpcyBwcm92aWRlZCB0byB5b3UgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFY2xpcHNlCisJCVB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMi4wICgmcXVvdDtFUEwmcXVvdDspLiBBIGNvcHkgb2YgdGhlIEVQTCBpcworCQlhdmFpbGFibGUgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjA8L2E+LgorCQlGb3IgcHVycG9zZXMgb2YgdGhlIEVQTCwgJnF1b3Q7UHJvZ3JhbSZxdW90OyB3aWxsIG1lYW4gdGhlIENvbnRlbnQuCisJPC9wPgorCisJPHA+CisJCUlmIHlvdSBkaWQgbm90IHJlY2VpdmUgdGhpcyBDb250ZW50IGRpcmVjdGx5IGZyb20gdGhlIEVjbGlwc2UKKwkJRm91bmRhdGlvbiwgdGhlIENvbnRlbnQgaXMgYmVpbmcgcmVkaXN0cmlidXRlZCBieSBhbm90aGVyIHBhcnR5CisJCSgmcXVvdDtSZWRpc3RyaWJ1dG9yJnF1b3Q7KSBhbmQgZGlmZmVyZW50IHRlcm1zIGFuZCBjb25kaXRpb25zIG1heQorCQlhcHBseSB0byB5b3VyIHVzZSBvZiBhbnkgb2JqZWN0IGNvZGUgaW4gdGhlIENvbnRlbnQuIENoZWNrIHRoZQorCQlSZWRpc3RyaWJ1dG9yJ3MgbGljZW5zZSB0aGF0IHdhcyBwcm92aWRlZCB3aXRoIHRoZSBDb250ZW50LiBJZiBubyBzdWNoCisJCWxpY2Vuc2UgZXhpc3RzLCBjb250YWN0IHRoZSBSZWRpc3RyaWJ1dG9yLiBVbmxlc3Mgb3RoZXJ3aXNlIGluZGljYXRlZAorCQliZWxvdywgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFUEwgc3RpbGwgYXBwbHkgdG8gYW55IHNvdXJjZQorCQljb2RlIGluIHRoZSBDb250ZW50IGFuZCBzdWNoIHNvdXJjZSBjb2RlIG1heSBiZSBvYnRhaW5lZCBhdCA8YQorCQkJaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy8iPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmc8L2E+LgorCTwvcD4KKworPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmRpYWdyYW1zQ3JlYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2RpYWdyYW1zQ3JlYXRvci9hY3Rpb25zL1Nob3dCRERFbGVtZW50c0FjdGlvbi5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuZGlhZ3JhbXNDcmVhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZGlhZ3JhbXNDcmVhdG9yL2FjdGlvbnMvU2hvd0JEREVsZW1lbnRzQWN0aW9uLmphdmEKaW5kZXggM2U4MDBjYi4uNjM5YTVmYiAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuZGlhZ3JhbXNDcmVhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZGlhZ3JhbXNDcmVhdG9yL2FjdGlvbnMvU2hvd0JEREVsZW1lbnRzQWN0aW9uLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuZGlhZ3JhbXNDcmVhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZGlhZ3JhbXNDcmVhdG9yL2FjdGlvbnMvU2hvd0JEREVsZW1lbnRzQWN0aW9uLmphdmEKQEAgLTEsOSArMSw5IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICogQ29weXJpZ2h0IChDKSAyMDE4IEZvbmRhemlvbmUgQnJ1bm8gS2Vzc2xlci4KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgKiAgCiAgKiBDb250cmlidXRvcnM6CiAgKiAgICAgTHVjYSBDcmlzdG9mb3JldHRpIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5kaWFncmFtc0NyZWF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9kaWFncmFtc0NyZWF0b3IvYWN0aW9ucy9TaG93SUJERWxlbWVudHNBY3Rpb24uamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmRpYWdyYW1zQ3JlYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2RpYWdyYW1zQ3JlYXRvci9hY3Rpb25zL1Nob3dJQkRFbGVtZW50c0FjdGlvbi5qYXZhCmluZGV4IGY1NmU5MzUuLjM0NDg1OWYgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmRpYWdyYW1zQ3JlYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2RpYWdyYW1zQ3JlYXRvci9hY3Rpb25zL1Nob3dJQkRFbGVtZW50c0FjdGlvbi5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmRpYWdyYW1zQ3JlYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2RpYWdyYW1zQ3JlYXRvci9hY3Rpb25zL1Nob3dJQkRFbGVtZW50c0FjdGlvbi5qYXZhCkBAIC0xLDkgKzEsOSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqIENvcHlyaWdodCAoQykgMjAxOCBGb25kYXppb25lIEJydW5vIEtlc3NsZXIuCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICogIAogICogQ29udHJpYnV0b3JzOgogICogICAgIEx1Y2EgQ3Jpc3RvZm9yZXR0aSAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuZGlhZ3JhbXNDcmVhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZGlhZ3JhbXNDcmVhdG9yL2FjdGlvbnMvU2hvd1NNREVsZW1lbnRzQWN0aW9uLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5kaWFncmFtc0NyZWF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9kaWFncmFtc0NyZWF0b3IvYWN0aW9ucy9TaG93U01ERWxlbWVudHNBY3Rpb24uamF2YQppbmRleCAxZDU1MmZlLi5hYmUzMjE3IDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5kaWFncmFtc0NyZWF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9kaWFncmFtc0NyZWF0b3IvYWN0aW9ucy9TaG93U01ERWxlbWVudHNBY3Rpb24uamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5kaWFncmFtc0NyZWF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9kaWFncmFtc0NyZWF0b3IvYWN0aW9ucy9TaG93U01ERWxlbWVudHNBY3Rpb24uamF2YQpAQCAtMSw5ICsxLDkgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTggRm9uZGF6aW9uZSBCcnVubyBLZXNzbGVyLgogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICAqICAKICAqIENvbnRyaWJ1dG9yczoKICAqICAgICBMdWNhIENyaXN0b2ZvcmV0dGkgLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmRpYWdyYW1zQ3JlYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2RpYWdyYW1zQ3JlYXRvci9jb21tYW5kcy9BZGp1c3RBc3NvY2lhdGlvbnNIYW5kbGVyLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5kaWFncmFtc0NyZWF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9kaWFncmFtc0NyZWF0b3IvY29tbWFuZHMvQWRqdXN0QXNzb2NpYXRpb25zSGFuZGxlci5qYXZhCmluZGV4IGE4OTQ3NjIuLjQ0MzA1YTcgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmRpYWdyYW1zQ3JlYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2RpYWdyYW1zQ3JlYXRvci9jb21tYW5kcy9BZGp1c3RBc3NvY2lhdGlvbnNIYW5kbGVyLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuZGlhZ3JhbXNDcmVhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZGlhZ3JhbXNDcmVhdG9yL2NvbW1hbmRzL0FkanVzdEFzc29jaWF0aW9uc0hhbmRsZXIuamF2YQpAQCAtMSw5ICsxLDkgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTggRm9uZGF6aW9uZSBCcnVubyBLZXNzbGVyLgogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICAqICAKICAqIENvbnRyaWJ1dG9yczoKICAqICAgICBMdWNhIENyaXN0b2ZvcmV0dGkgLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmRpYWdyYW1zQ3JlYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2RpYWdyYW1zQ3JlYXRvci9jb21tYW5kcy9BZGp1c3RDb25uZWN0b3JzSGFuZGxlci5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuZGlhZ3JhbXNDcmVhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZGlhZ3JhbXNDcmVhdG9yL2NvbW1hbmRzL0FkanVzdENvbm5lY3RvcnNIYW5kbGVyLmphdmEKaW5kZXggMjZlYzk1Zi4uZDBhYmVmMCAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuZGlhZ3JhbXNDcmVhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZGlhZ3JhbXNDcmVhdG9yL2NvbW1hbmRzL0FkanVzdENvbm5lY3RvcnNIYW5kbGVyLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuZGlhZ3JhbXNDcmVhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZGlhZ3JhbXNDcmVhdG9yL2NvbW1hbmRzL0FkanVzdENvbm5lY3RvcnNIYW5kbGVyLmphdmEKQEAgLTEsOSArMSw5IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICogQ29weXJpZ2h0IChDKSAyMDE4IEZvbmRhemlvbmUgQnJ1bm8gS2Vzc2xlci4KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgKiAgCiAgKiBDb250cmlidXRvcnM6CiAgKiAgICAgTHVjYSBDcmlzdG9mb3JldHRpIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5kaWFncmFtc0NyZWF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9kaWFncmFtc0NyZWF0b3IvY29tbWFuZHMvQXJyYW5nZUhhbmRsZXIuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmRpYWdyYW1zQ3JlYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2RpYWdyYW1zQ3JlYXRvci9jb21tYW5kcy9BcnJhbmdlSGFuZGxlci5qYXZhCmluZGV4IDBmZjBkOWMuLmE0YzcyZjQgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmRpYWdyYW1zQ3JlYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2RpYWdyYW1zQ3JlYXRvci9jb21tYW5kcy9BcnJhbmdlSGFuZGxlci5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmRpYWdyYW1zQ3JlYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2RpYWdyYW1zQ3JlYXRvci9jb21tYW5kcy9BcnJhbmdlSGFuZGxlci5qYXZhCkBAIC0xLDkgKzEsOSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqIENvcHlyaWdodCAoQykgMjAxOCBGb25kYXppb25lIEJydW5vIEtlc3NsZXIuCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICogIAogICogQ29udHJpYnV0b3JzOgogICogICAgIEx1Y2EgQ3Jpc3RvZm9yZXR0aSAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuZGlhZ3JhbXNDcmVhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZGlhZ3JhbXNDcmVhdG9yL2NvbW1hbmRzL0NyZWF0ZUJERENvbW1hbmQuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmRpYWdyYW1zQ3JlYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2RpYWdyYW1zQ3JlYXRvci9jb21tYW5kcy9DcmVhdGVCRERDb21tYW5kLmphdmEKaW5kZXggOTFlY2U3Zi4uMjA2MWY3YiAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuZGlhZ3JhbXNDcmVhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZGlhZ3JhbXNDcmVhdG9yL2NvbW1hbmRzL0NyZWF0ZUJERENvbW1hbmQuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5kaWFncmFtc0NyZWF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9kaWFncmFtc0NyZWF0b3IvY29tbWFuZHMvQ3JlYXRlQkREQ29tbWFuZC5qYXZhCkBAIC0xLDkgKzEsOSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqIENvcHlyaWdodCAoQykgMjAxOCBGb25kYXppb25lIEJydW5vIEtlc3NsZXIuCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICogIAogICogQ29udHJpYnV0b3JzOgogICogICAgIEx1Y2EgQ3Jpc3RvZm9yZXR0aSAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuZGlhZ3JhbXNDcmVhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZGlhZ3JhbXNDcmVhdG9yL2NvbW1hbmRzL0NyZWF0ZUJEREhhbmRsZXIuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmRpYWdyYW1zQ3JlYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2RpYWdyYW1zQ3JlYXRvci9jb21tYW5kcy9DcmVhdGVCRERIYW5kbGVyLmphdmEKaW5kZXggNzIzYmMyMi4uNzhkMDJjMSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuZGlhZ3JhbXNDcmVhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZGlhZ3JhbXNDcmVhdG9yL2NvbW1hbmRzL0NyZWF0ZUJEREhhbmRsZXIuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5kaWFncmFtc0NyZWF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9kaWFncmFtc0NyZWF0b3IvY29tbWFuZHMvQ3JlYXRlQkRESGFuZGxlci5qYXZhCkBAIC0xLDkgKzEsOSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqIENvcHlyaWdodCAoQykgMjAxOCBGb25kYXppb25lIEJydW5vIEtlc3NsZXIuCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICogIAogICogQ29udHJpYnV0b3JzOgogICogICAgIEx1Y2EgQ3Jpc3RvZm9yZXR0aSAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuZGlhZ3JhbXNDcmVhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZGlhZ3JhbXNDcmVhdG9yL2NvbW1hbmRzL0NyZWF0ZUlCRE11bHRpcGxlQ29tbWFuZC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuZGlhZ3JhbXNDcmVhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZGlhZ3JhbXNDcmVhdG9yL2NvbW1hbmRzL0NyZWF0ZUlCRE11bHRpcGxlQ29tbWFuZC5qYXZhCmluZGV4IGQ4M2MxYmQuLjNjNTg3NjUgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmRpYWdyYW1zQ3JlYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2RpYWdyYW1zQ3JlYXRvci9jb21tYW5kcy9DcmVhdGVJQkRNdWx0aXBsZUNvbW1hbmQuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5kaWFncmFtc0NyZWF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9kaWFncmFtc0NyZWF0b3IvY29tbWFuZHMvQ3JlYXRlSUJETXVsdGlwbGVDb21tYW5kLmphdmEKQEAgLTEsOSArMSw5IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICogQ29weXJpZ2h0IChDKSAyMDE4IEZvbmRhemlvbmUgQnJ1bm8gS2Vzc2xlci4KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgKiAgCiAgKiBDb250cmlidXRvcnM6CiAgKiAgICAgTHVjYSBDcmlzdG9mb3JldHRpIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5kaWFncmFtc0NyZWF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9kaWFncmFtc0NyZWF0b3IvY29tbWFuZHMvQ3JlYXRlSUJETXVsdGlwbGVIYW5kbGVyLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5kaWFncmFtc0NyZWF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9kaWFncmFtc0NyZWF0b3IvY29tbWFuZHMvQ3JlYXRlSUJETXVsdGlwbGVIYW5kbGVyLmphdmEKaW5kZXggNGJmODRiZi4uMmQxNmM2ZSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuZGlhZ3JhbXNDcmVhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZGlhZ3JhbXNDcmVhdG9yL2NvbW1hbmRzL0NyZWF0ZUlCRE11bHRpcGxlSGFuZGxlci5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmRpYWdyYW1zQ3JlYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2RpYWdyYW1zQ3JlYXRvci9jb21tYW5kcy9DcmVhdGVJQkRNdWx0aXBsZUhhbmRsZXIuamF2YQpAQCAtMSw5ICsxLDkgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTggRm9uZGF6aW9uZSBCcnVubyBLZXNzbGVyLgogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICAqICAKICAqIENvbnRyaWJ1dG9yczoKICAqICAgICBMdWNhIENyaXN0b2ZvcmV0dGkgLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmRpYWdyYW1zQ3JlYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2RpYWdyYW1zQ3JlYXRvci9jb21tYW5kcy9DcmVhdGVJQkRTaW5nbGVDb21tYW5kLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5kaWFncmFtc0NyZWF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9kaWFncmFtc0NyZWF0b3IvY29tbWFuZHMvQ3JlYXRlSUJEU2luZ2xlQ29tbWFuZC5qYXZhCmluZGV4IGFiYTgxNTAuLjU3MGQ5NzcgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmRpYWdyYW1zQ3JlYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2RpYWdyYW1zQ3JlYXRvci9jb21tYW5kcy9DcmVhdGVJQkRTaW5nbGVDb21tYW5kLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuZGlhZ3JhbXNDcmVhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZGlhZ3JhbXNDcmVhdG9yL2NvbW1hbmRzL0NyZWF0ZUlCRFNpbmdsZUNvbW1hbmQuamF2YQpAQCAtMSw5ICsxLDkgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTggRm9uZGF6aW9uZSBCcnVubyBLZXNzbGVyLgogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICAqICAKICAqIENvbnRyaWJ1dG9yczoKICAqICAgICBMdWNhIENyaXN0b2ZvcmV0dGkgLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmRpYWdyYW1zQ3JlYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2RpYWdyYW1zQ3JlYXRvci9jb21tYW5kcy9DcmVhdGVJQkRTaW5nbGVIYW5kbGVyLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5kaWFncmFtc0NyZWF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9kaWFncmFtc0NyZWF0b3IvY29tbWFuZHMvQ3JlYXRlSUJEU2luZ2xlSGFuZGxlci5qYXZhCmluZGV4IGRlOWFjZjguLmU3NGRjZTcgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmRpYWdyYW1zQ3JlYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2RpYWdyYW1zQ3JlYXRvci9jb21tYW5kcy9DcmVhdGVJQkRTaW5nbGVIYW5kbGVyLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuZGlhZ3JhbXNDcmVhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZGlhZ3JhbXNDcmVhdG9yL2NvbW1hbmRzL0NyZWF0ZUlCRFNpbmdsZUhhbmRsZXIuamF2YQpAQCAtMSw5ICsxLDkgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTggRm9uZGF6aW9uZSBCcnVubyBLZXNzbGVyLgogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICAqICAKICAqIENvbnRyaWJ1dG9yczoKICAqICAgICBMdWNhIENyaXN0b2ZvcmV0dGkgLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmRpYWdyYW1zQ3JlYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2RpYWdyYW1zQ3JlYXRvci9jb21tYW5kcy9DcmVhdGVTTURIYW5kbGVyLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5kaWFncmFtc0NyZWF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9kaWFncmFtc0NyZWF0b3IvY29tbWFuZHMvQ3JlYXRlU01ESGFuZGxlci5qYXZhCmluZGV4IGQ1MWVmZWQuLjhkYTI1NGMgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmRpYWdyYW1zQ3JlYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2RpYWdyYW1zQ3JlYXRvci9jb21tYW5kcy9DcmVhdGVTTURIYW5kbGVyLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuZGlhZ3JhbXNDcmVhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZGlhZ3JhbXNDcmVhdG9yL2NvbW1hbmRzL0NyZWF0ZVNNREhhbmRsZXIuamF2YQpAQCAtMSw5ICsxLDkgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTggRm9uZGF6aW9uZSBCcnVubyBLZXNzbGVyLgogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICAqICAKICAqIENvbnRyaWJ1dG9yczoKICAqICAgTHVjYSBDcmlzdG9mb3JldHRpIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5kaWFncmFtc0NyZWF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9kaWFncmFtc0NyZWF0b3IvY29tbWFuZHMvUmVmcmVzaEJEREhhbmRsZXIuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmRpYWdyYW1zQ3JlYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2RpYWdyYW1zQ3JlYXRvci9jb21tYW5kcy9SZWZyZXNoQkRESGFuZGxlci5qYXZhCmluZGV4IDQ5ZWM3ZTUuLjE5YzYzOTcgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmRpYWdyYW1zQ3JlYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2RpYWdyYW1zQ3JlYXRvci9jb21tYW5kcy9SZWZyZXNoQkRESGFuZGxlci5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmRpYWdyYW1zQ3JlYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2RpYWdyYW1zQ3JlYXRvci9jb21tYW5kcy9SZWZyZXNoQkRESGFuZGxlci5qYXZhCkBAIC0xLDkgKzEsOSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqIENvcHlyaWdodCAoQykgMjAxOCBGb25kYXppb25lIEJydW5vIEtlc3NsZXIuCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICogIAogICogQ29udHJpYnV0b3JzOgogICogICBBbGJlcnRvIERlYmlhc2kgLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmRpYWdyYW1zQ3JlYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2RpYWdyYW1zQ3JlYXRvci9jb21tYW5kcy9SZWZyZXNoSUJESGFuZGxlci5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuZGlhZ3JhbXNDcmVhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZGlhZ3JhbXNDcmVhdG9yL2NvbW1hbmRzL1JlZnJlc2hJQkRIYW5kbGVyLmphdmEKaW5kZXggNWQwYTFlMC4uZmE2NWY1NCAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuZGlhZ3JhbXNDcmVhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZGlhZ3JhbXNDcmVhdG9yL2NvbW1hbmRzL1JlZnJlc2hJQkRIYW5kbGVyLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuZGlhZ3JhbXNDcmVhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZGlhZ3JhbXNDcmVhdG9yL2NvbW1hbmRzL1JlZnJlc2hJQkRIYW5kbGVyLmphdmEKQEAgLTEsOSArMSw5IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICogQ29weXJpZ2h0IChDKSAyMDE4IEZvbmRhemlvbmUgQnJ1bm8gS2Vzc2xlci4KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgKiAgCiAgKiBDb250cmlidXRvcnM6CiAgKiAgIEFsYmVydG8gRGViaWFzaSAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuZGlhZ3JhbXNDcmVhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZGlhZ3JhbXNDcmVhdG9yL2NvbW1hbmRzL1JlZnJlc2hTTURIYW5kbGVyLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5kaWFncmFtc0NyZWF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9kaWFncmFtc0NyZWF0b3IvY29tbWFuZHMvUmVmcmVzaFNNREhhbmRsZXIuamF2YQppbmRleCA0MGE3NjliLi5hNjdhNDc1IDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5kaWFncmFtc0NyZWF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9kaWFncmFtc0NyZWF0b3IvY29tbWFuZHMvUmVmcmVzaFNNREhhbmRsZXIuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5kaWFncmFtc0NyZWF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9kaWFncmFtc0NyZWF0b3IvY29tbWFuZHMvUmVmcmVzaFNNREhhbmRsZXIuamF2YQpAQCAtMSw5ICsxLDkgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTggRm9uZGF6aW9uZSBCcnVubyBLZXNzbGVyLgogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICAqICAKICAqIENvbnRyaWJ1dG9yczoKICAqICAgTHVjYSBDcmlzdG9mb3JldHRpIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5kaWFncmFtc0NyZWF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9kaWFncmFtc0NyZWF0b3IvY29ubmVjdG9ycy9CREREaWFncmFtTGF5b3V0Q29ubmVjdG9yLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5kaWFncmFtc0NyZWF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9kaWFncmFtc0NyZWF0b3IvY29ubmVjdG9ycy9CREREaWFncmFtTGF5b3V0Q29ubmVjdG9yLmphdmEKaW5kZXggNWNkYzFjZi4uMWVjNGFmNSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuZGlhZ3JhbXNDcmVhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZGlhZ3JhbXNDcmVhdG9yL2Nvbm5lY3RvcnMvQkRERGlhZ3JhbUxheW91dENvbm5lY3Rvci5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmRpYWdyYW1zQ3JlYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2RpYWdyYW1zQ3JlYXRvci9jb25uZWN0b3JzL0JERERpYWdyYW1MYXlvdXRDb25uZWN0b3IuamF2YQpAQCAtMSw5ICsxLDkgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTggRm9uZGF6aW9uZSBCcnVubyBLZXNzbGVyLgogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICAqICAKICAqIENvbnRyaWJ1dG9yczoKICAqICAgICBMdWNhIENyaXN0b2ZvcmV0dGkgLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmRpYWdyYW1zQ3JlYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2RpYWdyYW1zQ3JlYXRvci9jb25uZWN0b3JzL0lCRERpYWdyYW1MYXlvdXRDb25uZWN0b3IuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmRpYWdyYW1zQ3JlYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2RpYWdyYW1zQ3JlYXRvci9jb25uZWN0b3JzL0lCRERpYWdyYW1MYXlvdXRDb25uZWN0b3IuamF2YQppbmRleCAxZmQzNDg2Li40NTJjNGQxIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5kaWFncmFtc0NyZWF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9kaWFncmFtc0NyZWF0b3IvY29ubmVjdG9ycy9JQkREaWFncmFtTGF5b3V0Q29ubmVjdG9yLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuZGlhZ3JhbXNDcmVhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZGlhZ3JhbXNDcmVhdG9yL2Nvbm5lY3RvcnMvSUJERGlhZ3JhbUxheW91dENvbm5lY3Rvci5qYXZhCkBAIC0xLDkgKzEsOSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqIENvcHlyaWdodCAoQykgMjAxOCBGb25kYXppb25lIEJydW5vIEtlc3NsZXIuCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICogIAogICogQ29udHJpYnV0b3JzOgogICogICAgIEx1Y2EgQ3Jpc3RvZm9yZXR0aSAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuZGlhZ3JhbXNDcmVhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZGlhZ3JhbXNDcmVhdG9yL2Nvbm5lY3RvcnMvU01ERGlhZ3JhbUxheW91dENvbm5lY3Rvci5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuZGlhZ3JhbXNDcmVhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZGlhZ3JhbXNDcmVhdG9yL2Nvbm5lY3RvcnMvU01ERGlhZ3JhbUxheW91dENvbm5lY3Rvci5qYXZhCmluZGV4IDAxYjM5NDguLjExNjA0ZDAgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmRpYWdyYW1zQ3JlYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2RpYWdyYW1zQ3JlYXRvci9jb25uZWN0b3JzL1NNRERpYWdyYW1MYXlvdXRDb25uZWN0b3IuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5kaWFncmFtc0NyZWF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9kaWFncmFtc0NyZWF0b3IvY29ubmVjdG9ycy9TTUREaWFncmFtTGF5b3V0Q29ubmVjdG9yLmphdmEKQEAgLTEsOSArMSw5IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICogQ29weXJpZ2h0IChDKSAyMDE4IEZvbmRhemlvbmUgQnJ1bm8gS2Vzc2xlci4KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgKiAgCiAgKiBDb250cmlidXRvcnM6CiAgKiAgICAgTHVjYSBDcmlzdG9mb3JldHRpIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5kaWFncmFtc0NyZWF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9kaWFncmFtc0NyZWF0b3IvZGlhbG9ncy9CRERDcmVhdG9yRGlhbG9nLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5kaWFncmFtc0NyZWF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9kaWFncmFtc0NyZWF0b3IvZGlhbG9ncy9CRERDcmVhdG9yRGlhbG9nLmphdmEKaW5kZXggOGYyODhkOS4uOWUyZGUyZiAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuZGlhZ3JhbXNDcmVhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZGlhZ3JhbXNDcmVhdG9yL2RpYWxvZ3MvQkREQ3JlYXRvckRpYWxvZy5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmRpYWdyYW1zQ3JlYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2RpYWdyYW1zQ3JlYXRvci9kaWFsb2dzL0JERENyZWF0b3JEaWFsb2cuamF2YQpAQCAtMSw5ICsxLDkgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogQ29weXJpZ2h0IChDKSAyMDE4IEZvbmRhemlvbmUgQnJ1bm8gS2Vzc2xlci4NCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICogIA0KICAqIENvbnRyaWJ1dG9yczoNCiAgKiAgICAgTHVjYSBDcmlzdG9mb3JldHRpIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuZGlhZ3JhbXNDcmVhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZGlhZ3JhbXNDcmVhdG9yL2RpYWxvZ3MvSUJEQ3JlYXRvckRpYWxvZy5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuZGlhZ3JhbXNDcmVhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZGlhZ3JhbXNDcmVhdG9yL2RpYWxvZ3MvSUJEQ3JlYXRvckRpYWxvZy5qYXZhCmluZGV4IGVjOGNiMDYuLjUwNzAwZTMgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmRpYWdyYW1zQ3JlYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2RpYWdyYW1zQ3JlYXRvci9kaWFsb2dzL0lCRENyZWF0b3JEaWFsb2cuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5kaWFncmFtc0NyZWF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9kaWFncmFtc0NyZWF0b3IvZGlhbG9ncy9JQkRDcmVhdG9yRGlhbG9nLmphdmEKQEAgLTEsOSArMSw5IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIENvcHlyaWdodCAoQykgMjAxOCBGb25kYXppb25lIEJydW5vIEtlc3NsZXIuDQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqICANCiAgKiBDb250cmlidXRvcnM6DQogICogICAgIEx1Y2EgQ3Jpc3RvZm9yZXR0aSAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbg0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmRpYWdyYW1zQ3JlYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2RpYWdyYW1zQ3JlYXRvci9sYXlvdXRzL0JERExheW91dFNldHVwLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5kaWFncmFtc0NyZWF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9kaWFncmFtc0NyZWF0b3IvbGF5b3V0cy9CRERMYXlvdXRTZXR1cC5qYXZhCmluZGV4IGM0ZGQwY2YuLjA5YjBlYTggMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmRpYWdyYW1zQ3JlYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2RpYWdyYW1zQ3JlYXRvci9sYXlvdXRzL0JERExheW91dFNldHVwLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuZGlhZ3JhbXNDcmVhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZGlhZ3JhbXNDcmVhdG9yL2xheW91dHMvQkRETGF5b3V0U2V0dXAuamF2YQpAQCAtMSw5ICsxLDkgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTggRm9uZGF6aW9uZSBCcnVubyBLZXNzbGVyLgogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICAqICAKICAqIENvbnRyaWJ1dG9yczoKICAqICAgICBMdWNhIENyaXN0b2ZvcmV0dGkgLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmRpYWdyYW1zQ3JlYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2RpYWdyYW1zQ3JlYXRvci9sYXlvdXRzL0lCRExheW91dFNldHVwLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5kaWFncmFtc0NyZWF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9kaWFncmFtc0NyZWF0b3IvbGF5b3V0cy9JQkRMYXlvdXRTZXR1cC5qYXZhCmluZGV4IDdhZWM2NTUuLmI1ZDliNjUgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmRpYWdyYW1zQ3JlYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2RpYWdyYW1zQ3JlYXRvci9sYXlvdXRzL0lCRExheW91dFNldHVwLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuZGlhZ3JhbXNDcmVhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZGlhZ3JhbXNDcmVhdG9yL2xheW91dHMvSUJETGF5b3V0U2V0dXAuamF2YQpAQCAtMSw5ICsxLDkgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTggRm9uZGF6aW9uZSBCcnVubyBLZXNzbGVyLgogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICAqICAKICAqIENvbnRyaWJ1dG9yczoKICAqICAgICBMdWNhIENyaXN0b2ZvcmV0dGkgLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmRpYWdyYW1zQ3JlYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2RpYWdyYW1zQ3JlYXRvci9sYXlvdXRzL1NNRExheW91dFNldHVwLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5kaWFncmFtc0NyZWF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9kaWFncmFtc0NyZWF0b3IvbGF5b3V0cy9TTURMYXlvdXRTZXR1cC5qYXZhCmluZGV4IDUyZDk3YjcuLjg1NWUzY2UgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmRpYWdyYW1zQ3JlYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2RpYWdyYW1zQ3JlYXRvci9sYXlvdXRzL1NNRExheW91dFNldHVwLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuZGlhZ3JhbXNDcmVhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZGlhZ3JhbXNDcmVhdG9yL2xheW91dHMvU01ETGF5b3V0U2V0dXAuamF2YQpAQCAtMSw5ICsxLDkgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTggRm9uZGF6aW9uZSBCcnVubyBLZXNzbGVyLgogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICAqICAKICAqIENvbnRyaWJ1dG9yczoKICAqICAgICBMdWNhIENyaXN0b2ZvcmV0dGkgLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmRpYWdyYW1zQ3JlYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2RpYWdyYW1zQ3JlYXRvci91dGlscy9EaWFncmFtVXRpbHMuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmRpYWdyYW1zQ3JlYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2RpYWdyYW1zQ3JlYXRvci91dGlscy9EaWFncmFtVXRpbHMuamF2YQppbmRleCAxZTdkYzYzLi4wM2UyOWQzIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5kaWFncmFtc0NyZWF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9kaWFncmFtc0NyZWF0b3IvdXRpbHMvRGlhZ3JhbVV0aWxzLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuZGlhZ3JhbXNDcmVhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZGlhZ3JhbXNDcmVhdG9yL3V0aWxzL0RpYWdyYW1VdGlscy5qYXZhCkBAIC0xLDMgKzEsMTAgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICogQ29weXJpZ2h0IChDKSAyMDIwIA0KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCisgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCiBwYWNrYWdlIG9yZy5wb2xhcnN5cy5jaGVzcy5kaWFncmFtc0NyZWF0b3IudXRpbHM7DQogDQogaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7DQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuZGlzY292ZXJ5L2Fib3V0Lmh0bWwgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5kaXNjb3ZlcnkvYWJvdXQuaHRtbAppbmRleCBkZDNjMDg5Li4xNjRmNzgxIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5kaXNjb3ZlcnkvYWJvdXQuaHRtbAorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5kaXNjb3ZlcnkvYWJvdXQuaHRtbApAQCAtMiwyNyArMiwzNSBAQAogICAgICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS1zdHJpY3QuZHRkIj4KIDxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KIDxoZWFkPgotPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMSIvPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMSIgLz4KIDx0aXRsZT5BYm91dDwvdGl0bGU+CiA8L2hlYWQ+CiA8Ym9keSBsYW5nPSJFTi1VUyI+Ci08aDI+QWJvdXQgVGhpcyBDb250ZW50PC9oMj4KLSAKLTxwPk5vdmVtYmVyIDE0LCAyMDA4PC9wPgkKLTxoMz5MaWNlbnNlPC9oMz4KKwk8aDI+QWJvdXQgVGhpcyBDb250ZW50PC9oMj4KIAotPHA+VGhlIEVjbGlwc2UgRm91bmRhdGlvbiBtYWtlcyBhdmFpbGFibGUgYWxsIGNvbnRlbnQgaW4gdGhpcyBwbHVnLWluICgmcXVvdDtDb250ZW50JnF1b3Q7KS4gIFVubGVzcyBvdGhlcndpc2UgCi1pbmRpY2F0ZWQgYmVsb3csIHRoZSBDb250ZW50IGlzIHByb3ZpZGVkIHRvIHlvdSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlCi1FY2xpcHNlIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMS4wICgmcXVvdDtFUEwmcXVvdDspLiAgQSBjb3B5IG9mIHRoZSBFUEwgaXMgYXZhaWxhYmxlIAotYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwiPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sPC9hPi4KLUZvciBwdXJwb3NlcyBvZiB0aGUgRVBMLCAmcXVvdDtQcm9ncmFtJnF1b3Q7IHdpbGwgbWVhbiB0aGUgQ29udGVudC48L3A+CisJPHA+Tm92ZW1iZXIgMzAsIDIwMTc8L3A+CisJPGgzPkxpY2Vuc2U8L2gzPgogCi08cD5JZiB5b3UgZGlkIG5vdCByZWNlaXZlIHRoaXMgQ29udGVudCBkaXJlY3RseSBmcm9tIHRoZSBFY2xpcHNlIEZvdW5kYXRpb24sIHRoZSBDb250ZW50IGlzIAotYmVpbmcgcmVkaXN0cmlidXRlZCBieSBhbm90aGVyIHBhcnR5ICgmcXVvdDtSZWRpc3RyaWJ1dG9yJnF1b3Q7KSBhbmQgZGlmZmVyZW50IHRlcm1zIGFuZCBjb25kaXRpb25zIG1heQotYXBwbHkgdG8geW91ciB1c2Ugb2YgYW55IG9iamVjdCBjb2RlIGluIHRoZSBDb250ZW50LiAgQ2hlY2sgdGhlIFJlZGlzdHJpYnV0b3IncyBsaWNlbnNlIHRoYXQgd2FzIAotcHJvdmlkZWQgd2l0aCB0aGUgQ29udGVudC4gIElmIG5vIHN1Y2ggbGljZW5zZSBleGlzdHMsIGNvbnRhY3QgdGhlIFJlZGlzdHJpYnV0b3IuICBVbmxlc3Mgb3RoZXJ3aXNlCi1pbmRpY2F0ZWQgYmVsb3csIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRVBMIHN0aWxsIGFwcGx5IHRvIGFueSBzb3VyY2UgY29kZSBpbiB0aGUgQ29udGVudAotYW5kIHN1Y2ggc291cmNlIGNvZGUgbWF5IGJlIG9idGFpbmVkIGF0IDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmciPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmc8L2E+LjwvcD4KKwk8cD4KKwkJVGhlIEVjbGlwc2UgRm91bmRhdGlvbiBtYWtlcyBhdmFpbGFibGUgYWxsIGNvbnRlbnQgaW4gdGhpcyBwbHVnLWluCisJCSgmcXVvdDtDb250ZW50JnF1b3Q7KS4gVW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQgYmVsb3csIHRoZSBDb250ZW50CisJCWlzIHByb3ZpZGVkIHRvIHlvdSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVjbGlwc2UKKwkJUHVibGljIExpY2Vuc2UgVmVyc2lvbiAyLjAgKCZxdW90O0VQTCZxdW90OykuIEEgY29weSBvZiB0aGUgRVBMIGlzCisJCWF2YWlsYWJsZSBhdCA8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAiPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMDwvYT4uCisJCUZvciBwdXJwb3NlcyBvZiB0aGUgRVBMLCAmcXVvdDtQcm9ncmFtJnF1b3Q7IHdpbGwgbWVhbiB0aGUgQ29udGVudC4KKwk8L3A+CisKKwk8cD4KKwkJSWYgeW91IGRpZCBub3QgcmVjZWl2ZSB0aGlzIENvbnRlbnQgZGlyZWN0bHkgZnJvbSB0aGUgRWNsaXBzZQorCQlGb3VuZGF0aW9uLCB0aGUgQ29udGVudCBpcyBiZWluZyByZWRpc3RyaWJ1dGVkIGJ5IGFub3RoZXIgcGFydHkKKwkJKCZxdW90O1JlZGlzdHJpYnV0b3ImcXVvdDspIGFuZCBkaWZmZXJlbnQgdGVybXMgYW5kIGNvbmRpdGlvbnMgbWF5CisJCWFwcGx5IHRvIHlvdXIgdXNlIG9mIGFueSBvYmplY3QgY29kZSBpbiB0aGUgQ29udGVudC4gQ2hlY2sgdGhlCisJCVJlZGlzdHJpYnV0b3IncyBsaWNlbnNlIHRoYXQgd2FzIHByb3ZpZGVkIHdpdGggdGhlIENvbnRlbnQuIElmIG5vIHN1Y2gKKwkJbGljZW5zZSBleGlzdHMsIGNvbnRhY3QgdGhlIFJlZGlzdHJpYnV0b3IuIFVubGVzcyBvdGhlcndpc2UgaW5kaWNhdGVkCisJCWJlbG93LCB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVQTCBzdGlsbCBhcHBseSB0byBhbnkgc291cmNlCisJCWNvZGUgaW4gdGhlIENvbnRlbnQgYW5kIHN1Y2ggc291cmNlIGNvZGUgbWF5IGJlIG9idGFpbmVkIGF0IDxhCisJCQlocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnLyI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZzwvYT4uCisJPC9wPgogCiA8L2JvZHk+CiA8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuZGlzY292ZXJ5L3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZGlzY292ZXJ5L0FjdGl2YXRvci5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuZGlzY292ZXJ5L3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZGlzY292ZXJ5L0FjdGl2YXRvci5qYXZhCmluZGV4IGJiN2M3YzguLjJjYzU0ZGMgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmRpc2NvdmVyeS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2Rpc2NvdmVyeS9BY3RpdmF0b3IuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5kaXNjb3Zlcnkvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9kaXNjb3ZlcnkvQWN0aXZhdG9yLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKgogICogICAgCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICogCiAgKiAKICAqIENvbnRyaWJ1dG9yczoKZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmRpc2NvdmVyeS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2Rpc2NvdmVyeS91aS9tZW51L2hhbmRsZXIvQ0hFU1NEaXNjb3ZlcnlBY3Rpb24uamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmRpc2NvdmVyeS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2Rpc2NvdmVyeS91aS9tZW51L2hhbmRsZXIvQ0hFU1NEaXNjb3ZlcnlBY3Rpb24uamF2YQppbmRleCBkODVlOTkyLi4wODUyYThhIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5kaXNjb3Zlcnkvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9kaXNjb3ZlcnkvdWkvbWVudS9oYW5kbGVyL0NIRVNTRGlzY292ZXJ5QWN0aW9uLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuZGlzY292ZXJ5L3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZGlzY292ZXJ5L3VpL21lbnUvaGFuZGxlci9DSEVTU0Rpc2NvdmVyeUFjdGlvbi5qYXZhCkBAIC0zLDkgKzMsOSBAQAogICoKICAqICAgIAogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICAqCiAgKiBDb250cmlidXRvcnM6CiAgKiAgQWxlc3NhbmRybyBab3ZpCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5kaXNjb3Zlcnkvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9kaXNjb3ZlcnkvdWkvbWVudS9oYW5kbGVyL0NIRVNTRGlzY292ZXJ5SGFuZGxlci5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuZGlzY292ZXJ5L3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZGlzY292ZXJ5L3VpL21lbnUvaGFuZGxlci9DSEVTU0Rpc2NvdmVyeUhhbmRsZXIuamF2YQppbmRleCBiMjYxOWVjLi5jODE3OTIyIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5kaXNjb3Zlcnkvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9kaXNjb3ZlcnkvdWkvbWVudS9oYW5kbGVyL0NIRVNTRGlzY292ZXJ5SGFuZGxlci5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmRpc2NvdmVyeS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2Rpc2NvdmVyeS91aS9tZW51L2hhbmRsZXIvQ0hFU1NEaXNjb3ZlcnlIYW5kbGVyLmphdmEKQEAgLTMsOSArMyw5IEBACiAgKgogICogICAgCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICoKICAqIENvbnRyaWJ1dG9yczoKICAqICBBbGVzc2FuZHJvIFpvdmkKZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmRpc2NvdmVyeS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL2Rpc2NvdmVyeS91aS93aXphcmRzL0Rpc2NvdmVyeUNvbXBvbmVudC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuZGlzY292ZXJ5L3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZGlzY292ZXJ5L3VpL3dpemFyZHMvRGlzY292ZXJ5Q29tcG9uZW50LmphdmEKaW5kZXggNzlmM2U2Ni4uNjJlODRlMiAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuZGlzY292ZXJ5L3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZGlzY292ZXJ5L3VpL3dpemFyZHMvRGlzY292ZXJ5Q29tcG9uZW50LmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuZGlzY292ZXJ5L3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZGlzY292ZXJ5L3VpL3dpemFyZHMvRGlzY292ZXJ5Q29tcG9uZW50LmphdmEKQEAgLTMsOSArMyw5IEBACiAgKgogICogICAgCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICoKICAqIENvbnRyaWJ1dG9yczoKICAqICBBbGVzc2FuZHJvIFpvdmkKZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmZ1bmN0aW9uQmVoYXZpb3JzLmZ1bmN0aW9uQmVoYXZpb3JFZGl0b3IvYWJvdXQuaHRtbCBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmZ1bmN0aW9uQmVoYXZpb3JzLmZ1bmN0aW9uQmVoYXZpb3JFZGl0b3IvYWJvdXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNjRmNzgxCi0tLSAvZGV2L251bGwKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuZnVuY3Rpb25CZWhhdmlvcnMuZnVuY3Rpb25CZWhhdmlvckVkaXRvci9hYm91dC5odG1sCkBAIC0wLDAgKzEsMzYgQEAKKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFN0cmljdC8vRU4iCisgICAgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXN0cmljdC5kdGQiPgorPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xIiAvPgorPHRpdGxlPkFib3V0PC90aXRsZT4KKzwvaGVhZD4KKzxib2R5IGxhbmc9IkVOLVVTIj4KKwk8aDI+QWJvdXQgVGhpcyBDb250ZW50PC9oMj4KKworCTxwPk5vdmVtYmVyIDMwLCAyMDE3PC9wPgorCTxoMz5MaWNlbnNlPC9oMz4KKworCTxwPgorCQlUaGUgRWNsaXBzZSBGb3VuZGF0aW9uIG1ha2VzIGF2YWlsYWJsZSBhbGwgY29udGVudCBpbiB0aGlzIHBsdWctaW4KKwkJKCZxdW90O0NvbnRlbnQmcXVvdDspLiBVbmxlc3Mgb3RoZXJ3aXNlIGluZGljYXRlZCBiZWxvdywgdGhlIENvbnRlbnQKKwkJaXMgcHJvdmlkZWQgdG8geW91IHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRWNsaXBzZQorCQlQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDIuMCAoJnF1b3Q7RVBMJnF1b3Q7KS4gQSBjb3B5IG9mIHRoZSBFUEwgaXMKKwkJYXZhaWxhYmxlIGF0IDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMCI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wPC9hPi4KKwkJRm9yIHB1cnBvc2VzIG9mIHRoZSBFUEwsICZxdW90O1Byb2dyYW0mcXVvdDsgd2lsbCBtZWFuIHRoZSBDb250ZW50LgorCTwvcD4KKworCTxwPgorCQlJZiB5b3UgZGlkIG5vdCByZWNlaXZlIHRoaXMgQ29udGVudCBkaXJlY3RseSBmcm9tIHRoZSBFY2xpcHNlCisJCUZvdW5kYXRpb24sIHRoZSBDb250ZW50IGlzIGJlaW5nIHJlZGlzdHJpYnV0ZWQgYnkgYW5vdGhlciBwYXJ0eQorCQkoJnF1b3Q7UmVkaXN0cmlidXRvciZxdW90OykgYW5kIGRpZmZlcmVudCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBtYXkKKwkJYXBwbHkgdG8geW91ciB1c2Ugb2YgYW55IG9iamVjdCBjb2RlIGluIHRoZSBDb250ZW50LiBDaGVjayB0aGUKKwkJUmVkaXN0cmlidXRvcidzIGxpY2Vuc2UgdGhhdCB3YXMgcHJvdmlkZWQgd2l0aCB0aGUgQ29udGVudC4gSWYgbm8gc3VjaAorCQlsaWNlbnNlIGV4aXN0cywgY29udGFjdCB0aGUgUmVkaXN0cmlidXRvci4gVW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQKKwkJYmVsb3csIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRVBMIHN0aWxsIGFwcGx5IHRvIGFueSBzb3VyY2UKKwkJY29kZSBpbiB0aGUgQ29udGVudCBhbmQgc3VjaCBzb3VyY2UgY29kZSBtYXkgYmUgb2J0YWluZWQgYXQgPGEKKwkJCWhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnPC9hPi4KKwk8L3A+CisKKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5mdW5jdGlvbkJlaGF2aW9ycy5mdW5jdGlvbkJlaGF2aW9yRWRpdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvZnVuY3Rpb25CZWhhdmlvcnMvZnVuY3Rpb25CZWhhdmlvckVkaXRvci9TdGFydHVwQ2xhc3MuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmZ1bmN0aW9uQmVoYXZpb3JzLmZ1bmN0aW9uQmVoYXZpb3JFZGl0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mdW5jdGlvbkJlaGF2aW9ycy9mdW5jdGlvbkJlaGF2aW9yRWRpdG9yL1N0YXJ0dXBDbGFzcy5qYXZhCmluZGV4IDFmZGMwZTMuLmE5MDYwYTcgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmZ1bmN0aW9uQmVoYXZpb3JzLmZ1bmN0aW9uQmVoYXZpb3JFZGl0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mdW5jdGlvbkJlaGF2aW9ycy9mdW5jdGlvbkJlaGF2aW9yRWRpdG9yL1N0YXJ0dXBDbGFzcy5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmZ1bmN0aW9uQmVoYXZpb3JzLmZ1bmN0aW9uQmVoYXZpb3JFZGl0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9mdW5jdGlvbkJlaGF2aW9ycy9mdW5jdGlvbkJlaGF2aW9yRWRpdG9yL1N0YXJ0dXBDbGFzcy5qYXZhCkBAIC0xLDkgKzEsOSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqIENvcHlyaWdodCAoQykgMjAxOCBGb25kYXppb25lIEJydW5vIEtlc3NsZXIuCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICogIAogICogQ29udHJpYnV0b3JzOgogICogICAgIEx1Y2EgQ3Jpc3RvZm9yZXR0aSAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuaW5zdGFuY2Uudmlldy9hYm91dC5odG1sIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MuaW5zdGFuY2Uudmlldy9hYm91dC5odG1sCmluZGV4IGRkM2MwODkuLjE2NGY3ODEgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLmluc3RhbmNlLnZpZXcvYWJvdXQuaHRtbAorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5pbnN0YW5jZS52aWV3L2Fib3V0Lmh0bWwKQEAgLTIsMjcgKzIsMzUgQEAKICAgICAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+CiA8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+CiA8aGVhZD4KLTxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiLz4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiIC8+CiA8dGl0bGU+QWJvdXQ8L3RpdGxlPgogPC9oZWFkPgogPGJvZHkgbGFuZz0iRU4tVVMiPgotPGgyPkFib3V0IFRoaXMgQ29udGVudDwvaDI+Ci0gCi08cD5Ob3ZlbWJlciAxNCwgMjAwODwvcD4JCi08aDM+TGljZW5zZTwvaDM+CisJPGgyPkFib3V0IFRoaXMgQ29udGVudDwvaDI+CiAKLTxwPlRoZSBFY2xpcHNlIEZvdW5kYXRpb24gbWFrZXMgYXZhaWxhYmxlIGFsbCBjb250ZW50IGluIHRoaXMgcGx1Zy1pbiAoJnF1b3Q7Q29udGVudCZxdW90OykuICBVbmxlc3Mgb3RoZXJ3aXNlIAotaW5kaWNhdGVkIGJlbG93LCB0aGUgQ29udGVudCBpcyBwcm92aWRlZCB0byB5b3UgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZQotRWNsaXBzZSBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDEuMCAoJnF1b3Q7RVBMJnF1b3Q7KS4gIEEgY29weSBvZiB0aGUgRVBMIGlzIGF2YWlsYWJsZSAKLWF0IDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbDwvYT4uCi1Gb3IgcHVycG9zZXMgb2YgdGhlIEVQTCwgJnF1b3Q7UHJvZ3JhbSZxdW90OyB3aWxsIG1lYW4gdGhlIENvbnRlbnQuPC9wPgorCTxwPk5vdmVtYmVyIDMwLCAyMDE3PC9wPgorCTxoMz5MaWNlbnNlPC9oMz4KIAotPHA+SWYgeW91IGRpZCBub3QgcmVjZWl2ZSB0aGlzIENvbnRlbnQgZGlyZWN0bHkgZnJvbSB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uLCB0aGUgQ29udGVudCBpcyAKLWJlaW5nIHJlZGlzdHJpYnV0ZWQgYnkgYW5vdGhlciBwYXJ0eSAoJnF1b3Q7UmVkaXN0cmlidXRvciZxdW90OykgYW5kIGRpZmZlcmVudCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBtYXkKLWFwcGx5IHRvIHlvdXIgdXNlIG9mIGFueSBvYmplY3QgY29kZSBpbiB0aGUgQ29udGVudC4gIENoZWNrIHRoZSBSZWRpc3RyaWJ1dG9yJ3MgbGljZW5zZSB0aGF0IHdhcyAKLXByb3ZpZGVkIHdpdGggdGhlIENvbnRlbnQuICBJZiBubyBzdWNoIGxpY2Vuc2UgZXhpc3RzLCBjb250YWN0IHRoZSBSZWRpc3RyaWJ1dG9yLiAgVW5sZXNzIG90aGVyd2lzZQotaW5kaWNhdGVkIGJlbG93LCB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVQTCBzdGlsbCBhcHBseSB0byBhbnkgc291cmNlIGNvZGUgaW4gdGhlIENvbnRlbnQKLWFuZCBzdWNoIHNvdXJjZSBjb2RlIG1heSBiZSBvYnRhaW5lZCBhdCA8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnPC9hPi48L3A+CisJPHA+CisJCVRoZSBFY2xpcHNlIEZvdW5kYXRpb24gbWFrZXMgYXZhaWxhYmxlIGFsbCBjb250ZW50IGluIHRoaXMgcGx1Zy1pbgorCQkoJnF1b3Q7Q29udGVudCZxdW90OykuIFVubGVzcyBvdGhlcndpc2UgaW5kaWNhdGVkIGJlbG93LCB0aGUgQ29udGVudAorCQlpcyBwcm92aWRlZCB0byB5b3UgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFY2xpcHNlCisJCVB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMi4wICgmcXVvdDtFUEwmcXVvdDspLiBBIGNvcHkgb2YgdGhlIEVQTCBpcworCQlhdmFpbGFibGUgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjA8L2E+LgorCQlGb3IgcHVycG9zZXMgb2YgdGhlIEVQTCwgJnF1b3Q7UHJvZ3JhbSZxdW90OyB3aWxsIG1lYW4gdGhlIENvbnRlbnQuCisJPC9wPgorCisJPHA+CisJCUlmIHlvdSBkaWQgbm90IHJlY2VpdmUgdGhpcyBDb250ZW50IGRpcmVjdGx5IGZyb20gdGhlIEVjbGlwc2UKKwkJRm91bmRhdGlvbiwgdGhlIENvbnRlbnQgaXMgYmVpbmcgcmVkaXN0cmlidXRlZCBieSBhbm90aGVyIHBhcnR5CisJCSgmcXVvdDtSZWRpc3RyaWJ1dG9yJnF1b3Q7KSBhbmQgZGlmZmVyZW50IHRlcm1zIGFuZCBjb25kaXRpb25zIG1heQorCQlhcHBseSB0byB5b3VyIHVzZSBvZiBhbnkgb2JqZWN0IGNvZGUgaW4gdGhlIENvbnRlbnQuIENoZWNrIHRoZQorCQlSZWRpc3RyaWJ1dG9yJ3MgbGljZW5zZSB0aGF0IHdhcyBwcm92aWRlZCB3aXRoIHRoZSBDb250ZW50LiBJZiBubyBzdWNoCisJCWxpY2Vuc2UgZXhpc3RzLCBjb250YWN0IHRoZSBSZWRpc3RyaWJ1dG9yLiBVbmxlc3Mgb3RoZXJ3aXNlIGluZGljYXRlZAorCQliZWxvdywgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFUEwgc3RpbGwgYXBwbHkgdG8gYW55IHNvdXJjZQorCQljb2RlIGluIHRoZSBDb250ZW50IGFuZCBzdWNoIHNvdXJjZSBjb2RlIG1heSBiZSBvYnRhaW5lZCBhdCA8YQorCQkJaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy8iPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmc8L2E+LgorCTwvcD4KIAogPC9ib2R5PgogPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm0ybS9hYm91dC5odG1sIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubTJtL2Fib3V0Lmh0bWwKaW5kZXggZGQzYzA4OS4uMTY0Zjc4MSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubTJtL2Fib3V0Lmh0bWwKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubTJtL2Fib3V0Lmh0bWwKQEAgLTIsMjcgKzIsMzUgQEAKICAgICAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+CiA8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+CiA8aGVhZD4KLTxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiLz4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiIC8+CiA8dGl0bGU+QWJvdXQ8L3RpdGxlPgogPC9oZWFkPgogPGJvZHkgbGFuZz0iRU4tVVMiPgotPGgyPkFib3V0IFRoaXMgQ29udGVudDwvaDI+Ci0gCi08cD5Ob3ZlbWJlciAxNCwgMjAwODwvcD4JCi08aDM+TGljZW5zZTwvaDM+CisJPGgyPkFib3V0IFRoaXMgQ29udGVudDwvaDI+CiAKLTxwPlRoZSBFY2xpcHNlIEZvdW5kYXRpb24gbWFrZXMgYXZhaWxhYmxlIGFsbCBjb250ZW50IGluIHRoaXMgcGx1Zy1pbiAoJnF1b3Q7Q29udGVudCZxdW90OykuICBVbmxlc3Mgb3RoZXJ3aXNlIAotaW5kaWNhdGVkIGJlbG93LCB0aGUgQ29udGVudCBpcyBwcm92aWRlZCB0byB5b3UgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZQotRWNsaXBzZSBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDEuMCAoJnF1b3Q7RVBMJnF1b3Q7KS4gIEEgY29weSBvZiB0aGUgRVBMIGlzIGF2YWlsYWJsZSAKLWF0IDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbDwvYT4uCi1Gb3IgcHVycG9zZXMgb2YgdGhlIEVQTCwgJnF1b3Q7UHJvZ3JhbSZxdW90OyB3aWxsIG1lYW4gdGhlIENvbnRlbnQuPC9wPgorCTxwPk5vdmVtYmVyIDMwLCAyMDE3PC9wPgorCTxoMz5MaWNlbnNlPC9oMz4KIAotPHA+SWYgeW91IGRpZCBub3QgcmVjZWl2ZSB0aGlzIENvbnRlbnQgZGlyZWN0bHkgZnJvbSB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uLCB0aGUgQ29udGVudCBpcyAKLWJlaW5nIHJlZGlzdHJpYnV0ZWQgYnkgYW5vdGhlciBwYXJ0eSAoJnF1b3Q7UmVkaXN0cmlidXRvciZxdW90OykgYW5kIGRpZmZlcmVudCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBtYXkKLWFwcGx5IHRvIHlvdXIgdXNlIG9mIGFueSBvYmplY3QgY29kZSBpbiB0aGUgQ29udGVudC4gIENoZWNrIHRoZSBSZWRpc3RyaWJ1dG9yJ3MgbGljZW5zZSB0aGF0IHdhcyAKLXByb3ZpZGVkIHdpdGggdGhlIENvbnRlbnQuICBJZiBubyBzdWNoIGxpY2Vuc2UgZXhpc3RzLCBjb250YWN0IHRoZSBSZWRpc3RyaWJ1dG9yLiAgVW5sZXNzIG90aGVyd2lzZQotaW5kaWNhdGVkIGJlbG93LCB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVQTCBzdGlsbCBhcHBseSB0byBhbnkgc291cmNlIGNvZGUgaW4gdGhlIENvbnRlbnQKLWFuZCBzdWNoIHNvdXJjZSBjb2RlIG1heSBiZSBvYnRhaW5lZCBhdCA8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnPC9hPi48L3A+CisJPHA+CisJCVRoZSBFY2xpcHNlIEZvdW5kYXRpb24gbWFrZXMgYXZhaWxhYmxlIGFsbCBjb250ZW50IGluIHRoaXMgcGx1Zy1pbgorCQkoJnF1b3Q7Q29udGVudCZxdW90OykuIFVubGVzcyBvdGhlcndpc2UgaW5kaWNhdGVkIGJlbG93LCB0aGUgQ29udGVudAorCQlpcyBwcm92aWRlZCB0byB5b3UgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFY2xpcHNlCisJCVB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMi4wICgmcXVvdDtFUEwmcXVvdDspLiBBIGNvcHkgb2YgdGhlIEVQTCBpcworCQlhdmFpbGFibGUgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjA8L2E+LgorCQlGb3IgcHVycG9zZXMgb2YgdGhlIEVQTCwgJnF1b3Q7UHJvZ3JhbSZxdW90OyB3aWxsIG1lYW4gdGhlIENvbnRlbnQuCisJPC9wPgorCisJPHA+CisJCUlmIHlvdSBkaWQgbm90IHJlY2VpdmUgdGhpcyBDb250ZW50IGRpcmVjdGx5IGZyb20gdGhlIEVjbGlwc2UKKwkJRm91bmRhdGlvbiwgdGhlIENvbnRlbnQgaXMgYmVpbmcgcmVkaXN0cmlidXRlZCBieSBhbm90aGVyIHBhcnR5CisJCSgmcXVvdDtSZWRpc3RyaWJ1dG9yJnF1b3Q7KSBhbmQgZGlmZmVyZW50IHRlcm1zIGFuZCBjb25kaXRpb25zIG1heQorCQlhcHBseSB0byB5b3VyIHVzZSBvZiBhbnkgb2JqZWN0IGNvZGUgaW4gdGhlIENvbnRlbnQuIENoZWNrIHRoZQorCQlSZWRpc3RyaWJ1dG9yJ3MgbGljZW5zZSB0aGF0IHdhcyBwcm92aWRlZCB3aXRoIHRoZSBDb250ZW50LiBJZiBubyBzdWNoCisJCWxpY2Vuc2UgZXhpc3RzLCBjb250YWN0IHRoZSBSZWRpc3RyaWJ1dG9yLiBVbmxlc3Mgb3RoZXJ3aXNlIGluZGljYXRlZAorCQliZWxvdywgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFUEwgc3RpbGwgYXBwbHkgdG8gYW55IHNvdXJjZQorCQljb2RlIGluIHRoZSBDb250ZW50IGFuZCBzdWNoIHNvdXJjZSBjb2RlIG1heSBiZSBvYnRhaW5lZCBhdCA8YQorCQkJaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy8iPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmc8L2E+LgorCTwvcD4KIAogPC9ib2R5PgogPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm0ybS9saWNlbnNlL0NvcHlyaWdodC1DZWlsaW5nQ2FsY3VsYXRvci50eHQgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tMm0vbGljZW5zZS9Db3B5cmlnaHQtQ2VpbGluZ0NhbGN1bGF0b3IudHh0CmluZGV4IDYyNmRkOWMuLjhlY2U3YzcgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm0ybS9saWNlbnNlL0NvcHlyaWdodC1DZWlsaW5nQ2FsY3VsYXRvci50eHQKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubTJtL2xpY2Vuc2UvQ29weXJpZ2h0LUNlaWxpbmdDYWxjdWxhdG9yLnR4dApAQCAtOSw2ICs5LDYgQEAKIC0tIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgIC0tCiAtLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlICAtLQogLS0gdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCAgICAgLS0KLS0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubTJtL2xpY2Vuc2UvQ29weXJpZ2h0LnR4dCBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm0ybS9saWNlbnNlL0NvcHlyaWdodC50eHQKaW5kZXggODQ5ZTgzNC4uZjY1MjcyYiAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubTJtL2xpY2Vuc2UvQ29weXJpZ2h0LnR4dAorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tMm0vbGljZW5zZS9Db3B5cmlnaHQudHh0CkBAIC05LDUgKzksNSBAQAogLS0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAgLS0KIC0tIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgIC0tCiAtLSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0ICAgICAtLQotLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubTJtL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbTJtL0FjdGl2YXRvci5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubTJtL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbTJtL0FjdGl2YXRvci5qYXZhCmluZGV4IGQ1MjBhNzIuLmFmMTlmMDUgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm0ybS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL20ybS9BY3RpdmF0b3IuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tMm0vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tMm0vQWN0aXZhdG9yLmphdmEKQEAgLTEwLDcgKzEwLDcgQEAKIC0tIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgIC0tCiAtLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlICAtLQogLS0gdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCAgICAgLS0KLS0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICovCiBwYWNrYWdlIG9yZy5wb2xhcnN5cy5jaGVzcy5tMm07CmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tMm0vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tMm0vYmFja3Byb3BhZ2F0aW9uL0JhY2twcm9wYWdhdGlvbkZ1bGxWRVJERS5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubTJtL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbTJtL2JhY2twcm9wYWdhdGlvbi9CYWNrcHJvcGFnYXRpb25GdWxsVkVSREUuamF2YQppbmRleCA4MWRjOTE5Li4wNGI2ZmRhIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tMm0vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tMm0vYmFja3Byb3BhZ2F0aW9uL0JhY2twcm9wYWdhdGlvbkZ1bGxWRVJERS5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm0ybS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL20ybS9iYWNrcHJvcGFnYXRpb24vQmFja3Byb3BhZ2F0aW9uRnVsbFZFUkRFLmphdmEKQEAgLTEwLDcgKzEwLDcgQEAKIC0tIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgIC0tCiAtLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlICAtLQogLS0gdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCAgICAgLS0KLS0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICovCiAKZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm0ybS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL20ybS9ibGFja2JveC9KYXZhNFFWVHV0aWxzLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tMm0vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tMm0vYmxhY2tib3gvSmF2YTRRVlR1dGlscy5qYXZhCmluZGV4IGNkODE2NmEuLjZjMTkyNGUgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm0ybS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL20ybS9ibGFja2JveC9KYXZhNFFWVHV0aWxzLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubTJtL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbTJtL2JsYWNrYm94L0phdmE0UVZUdXRpbHMuamF2YQpAQCAtMyw5ICszLDkgQEAKICAqICAqCiAgKiAgKiAgICAKICAqICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqICAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorICogICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgKiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqICAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgKiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiBwYWNrYWdlIG9yZy5wb2xhcnN5cy5jaGVzcy5tMm0uYmxhY2tib3g7CmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tMm0vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tMm0vYmxhY2tib3gvVlNMVXRpbHMuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm0ybS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL20ybS9ibGFja2JveC9WU0xVdGlscy5qYXZhCmluZGV4IGE5MTE4YWUuLmM3ODZlYTAgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm0ybS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL20ybS9ibGFja2JveC9WU0xVdGlscy5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm0ybS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL20ybS9ibGFja2JveC9WU0xVdGlscy5qYXZhCkBAIC0xMCw3ICsxMCw3IEBACiAtLSBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzICAtLQogLS0gYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAgLS0KIC0tIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgICAgIC0tCi0tLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKi8KIApkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubTJtL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbTJtL2hhbmRsZXJzL0NvbXBhcmVBbmFseXNpc1Jlc3VsdHNIYW5kbGVyLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tMm0vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tMm0vaGFuZGxlcnMvQ29tcGFyZUFuYWx5c2lzUmVzdWx0c0hhbmRsZXIuamF2YQppbmRleCA5OGU1ZmE0Li4xNTc4ZTUwIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tMm0vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tMm0vaGFuZGxlcnMvQ29tcGFyZUFuYWx5c2lzUmVzdWx0c0hhbmRsZXIuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tMm0vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tMm0vaGFuZGxlcnMvQ29tcGFyZUFuYWx5c2lzUmVzdWx0c0hhbmRsZXIuamF2YQpAQCAtMiw5ICsyLDkgQEAKICAqCiAgKiBDb3B5cmlnaHQgKGMpIDIwMTUgSW50ZWNzIFNwQSAKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgKgogICogQ29udHJpYnV0b3JzOgogICogTGF1cmEgQmFyYWNjaGkgIGxhdXJhLmJhcmFjY2hpQGludGVjcy5pdCAgLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24gYW5kL29yIGluaXRpYWwgZG9jdW1lbnRhdGlvbgpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubTJtL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbTJtL2hhbmRsZXJzL1B1cmdlUFNNSGFuZGxlci5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubTJtL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbTJtL2hhbmRsZXJzL1B1cmdlUFNNSGFuZGxlci5qYXZhCmluZGV4IGVmMDBjZTEuLmYyN2YwZDYgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm0ybS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL20ybS9oYW5kbGVycy9QdXJnZVBTTUhhbmRsZXIuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tMm0vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tMm0vaGFuZGxlcnMvUHVyZ2VQU01IYW5kbGVyLmphdmEKQEAgLTEwLDcgKzEwLDcgQEAKIC0tIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgIC0tCiAtLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlICAtLQogLS0gdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCAgICAgLS0KLS0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICovCiAKZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm0ybS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL20ybS9oYW5kbGVycy9RVlRvVUlIYW5kbGVyRW5kMkVuZC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubTJtL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbTJtL2hhbmRsZXJzL1FWVG9VSUhhbmRsZXJFbmQyRW5kLmphdmEKaW5kZXggMzlmOTE1YS4uY2MyY2FjMyAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubTJtL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbTJtL2hhbmRsZXJzL1FWVG9VSUhhbmRsZXJFbmQyRW5kLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubTJtL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbTJtL2hhbmRsZXJzL1FWVG9VSUhhbmRsZXJFbmQyRW5kLmphdmEKQEAgLTExLDcgKzExLDcgQEAKIC0tIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgIC0tCiAtLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlICAtLQogLS0gdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCAgICAgLS0KLS0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICovCiAKZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm0ybS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL20ybS9oYW5kbGVycy9RVlRvVUlIYW5kbGVyVkVSREUuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm0ybS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL20ybS9oYW5kbGVycy9RVlRvVUlIYW5kbGVyVkVSREUuamF2YQppbmRleCAxZjc4NTdmLi44ODUyMjMxIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tMm0vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tMm0vaGFuZGxlcnMvUVZUb1VJSGFuZGxlclZFUkRFLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubTJtL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbTJtL2hhbmRsZXJzL1FWVG9VSUhhbmRsZXJWRVJERS5qYXZhCkBAIC0xMSw3ICsxMSw3IEBACiAtLSBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzICAtLQogLS0gYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAgLS0KIC0tIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgICAgIC0tCi0tLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKi8KIApkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubTJtL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbTJtL3RyYW5zZm9ybWF0aW9ucy9QSU1QU01UcmFuc2Zvcm1hdGlvblZFUkRFLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tMm0vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tMm0vdHJhbnNmb3JtYXRpb25zL1BJTVBTTVRyYW5zZm9ybWF0aW9uVkVSREUuamF2YQppbmRleCBkZmNiY2QzLi45NGZjZjFlIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tMm0vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tMm0vdHJhbnNmb3JtYXRpb25zL1BJTVBTTVRyYW5zZm9ybWF0aW9uVkVSREUuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tMm0vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tMm0vdHJhbnNmb3JtYXRpb25zL1BJTVBTTVRyYW5zZm9ybWF0aW9uVkVSREUuamF2YQpAQCAtMTAsNyArMTAsNyBAQAogLS0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAgLS0KIC0tIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgIC0tCiAtLSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0ICAgICAtLQotLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogKi8KIApkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubTJtL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbTJtL3RyYW5zZm9ybWF0aW9ucy9RVlRvVHJhbnNmb3JtYXRpb24uamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm0ybS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL20ybS90cmFuc2Zvcm1hdGlvbnMvUVZUb1RyYW5zZm9ybWF0aW9uLmphdmEKaW5kZXggNDEzNmM5OS4uNmE2MTBlYyAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubTJtL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbTJtL3RyYW5zZm9ybWF0aW9ucy9RVlRvVHJhbnNmb3JtYXRpb24uamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tMm0vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tMm0vdHJhbnNmb3JtYXRpb25zL1FWVG9UcmFuc2Zvcm1hdGlvbi5qYXZhCkBAIC0xMCw3ICsxMCw3IEBACiAtLSBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzICAtLQ0KIC0tIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgIC0tDQogLS0gdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCAgICAgLS0NCi0tLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQ0KKy0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tDQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgKi8NCiANCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tMm0vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tMm0vdHJhbnNmb3JtYXRpb25zL1RyYW5zVXRpbC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubTJtL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbTJtL3RyYW5zZm9ybWF0aW9ucy9UcmFuc1V0aWwuamF2YQppbmRleCA1NzQxMDcwLi5mNGM1MDQ3IDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tMm0vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tMm0vdHJhbnNmb3JtYXRpb25zL1RyYW5zVXRpbC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm0ybS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL20ybS90cmFuc2Zvcm1hdGlvbnMvVHJhbnNVdGlsLmphdmEKQEAgLTEwLDcgKzEwLDcgQEAKIC0tIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgIC0tCiAtLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlICAtLQogLS0gdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCAgICAgLS0KLS0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICovCiAKZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm0ybS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL20ybS91aS9Db21wYXJlU2NoZWRSZXN1bHREaWFsb2cuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm0ybS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL20ybS91aS9Db21wYXJlU2NoZWRSZXN1bHREaWFsb2cuamF2YQppbmRleCA1ZmI3YWNhLi43YTc5YWE3IDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tMm0vc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tMm0vdWkvQ29tcGFyZVNjaGVkUmVzdWx0RGlhbG9nLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubTJtL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbTJtL3VpL0NvbXBhcmVTY2hlZFJlc3VsdERpYWxvZy5qYXZhCkBAIC0yLDkgKzIsOSBAQAogICoKICAqIENvcHlyaWdodCAoYykgMjAxNSBJbnRlY3MgU3BBIAogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICAqCiAgKiBDb250cmlidXRvcnM6CiAgKiBMYXVyYSBCYXJhY2NoaSAgbGF1cmEuYmFyYWNjaGlAaW50ZWNzLml0ICAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbiBhbmQvb3IgaW5pdGlhbCBkb2N1bWVudGF0aW9uCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tMm0vdHJhbnNmb3JtYXRpb25zL0J1aWxkTXVsdGlJbnN0YW5jZS5xdnRvIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubTJtL3RyYW5zZm9ybWF0aW9ucy9CdWlsZE11bHRpSW5zdGFuY2UucXZ0bwppbmRleCA1NWMxNWJiLi5lNjRiZWE5IDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tMm0vdHJhbnNmb3JtYXRpb25zL0J1aWxkTXVsdGlJbnN0YW5jZS5xdnRvCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm0ybS90cmFuc2Zvcm1hdGlvbnMvQnVpbGRNdWx0aUluc3RhbmNlLnF2dG8KQEAgLTEwLDcgKzEwLDcgQEAKIC0tIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgIC0tCiAtLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlICAtLQogLS0gdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCAgICAgLS0KLS0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICovCiAKZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm0ybS90cmFuc2Zvcm1hdGlvbnMvQ0hFU1NfQ2VpbGluZ0Fzc2lnbm1lbnQucXZ0byBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm0ybS90cmFuc2Zvcm1hdGlvbnMvQ0hFU1NfQ2VpbGluZ0Fzc2lnbm1lbnQucXZ0bwppbmRleCBkZjA0ODE1Li43MDgzMzI0IDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tMm0vdHJhbnNmb3JtYXRpb25zL0NIRVNTX0NlaWxpbmdBc3NpZ25tZW50LnF2dG8KKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubTJtL3RyYW5zZm9ybWF0aW9ucy9DSEVTU19DZWlsaW5nQXNzaWdubWVudC5xdnRvCkBAIC0xMSw3ICsxMSw3IEBACiAtLSBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzICAtLQogLS0gYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAgLS0KIC0tIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgICAgIC0tCi0tLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqLwogCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tMm0vdHJhbnNmb3JtYXRpb25zL0NIRVNTX1BJTTJQU01fSW5zdF9mdWxsX1ZFUkRFLnF2dG8gYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tMm0vdHJhbnNmb3JtYXRpb25zL0NIRVNTX1BJTTJQU01fSW5zdF9mdWxsX1ZFUkRFLnF2dG8KaW5kZXggZWM4OTFlZS4uMTQyYzQwNiAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubTJtL3RyYW5zZm9ybWF0aW9ucy9DSEVTU19QSU0yUFNNX0luc3RfZnVsbF9WRVJERS5xdnRvCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm0ybS90cmFuc2Zvcm1hdGlvbnMvQ0hFU1NfUElNMlBTTV9JbnN0X2Z1bGxfVkVSREUucXZ0bwpAQCAtMTAsNyArMTAsNyBAQAogLS0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAgLS0KIC0tIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgIC0tCiAtLSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0ICAgICAtLQotLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLQkJCQkJCQkJCQkJCQkJCQkJIC0tCiAtLSAyMDE1MDExNDogU1AgY2hhbmdlIGluIGdldExpZmVMaW5lSW5zdGFuY2UgdG8gYXZvaWQgdHJvdWJsZSAgICAgICAtLSAKIC0tIGluIGNhc2Ugb2YgYW4gSW5zdGFuY2VTcGVjaWZpY2F0aW9uIHdob3NlIG5hbWUgaXMgYSBzdWJzdHJpbmcgb2YgIC0tCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tMm0vdHJhbnNmb3JtYXRpb25zL0NIRVNTX1BJTTJQU01fSW5zdF9mdWxsX1ZFUkRFX1JVTi5xdnRvIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubTJtL3RyYW5zZm9ybWF0aW9ucy9DSEVTU19QSU0yUFNNX0luc3RfZnVsbF9WRVJERV9SVU4ucXZ0bwppbmRleCBjYWEyMTdjLi41ODcyZDliIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tMm0vdHJhbnNmb3JtYXRpb25zL0NIRVNTX1BJTTJQU01fSW5zdF9mdWxsX1ZFUkRFX1JVTi5xdnRvCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm0ybS90cmFuc2Zvcm1hdGlvbnMvQ0hFU1NfUElNMlBTTV9JbnN0X2Z1bGxfVkVSREVfUlVOLnF2dG8KQEAgLTEwLDcgKzEwLDcgQEAKIC0tIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgIC0tCiAtLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlICAtLQogLS0gdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCAgICAgLS0KLS0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0JCQkJCQkJCQkJCQkJCQkJCSAtLQogLS0gMjAxNTAxMTQ6IFNQIGNoYW5nZSBpbiBnZXRMaWZlTGluZUluc3RhbmNlIHRvIGF2b2lkIHRyb3VibGUgICAgICAgLS0gCiAtLSBpbiBjYXNlIG9mIGFuIEluc3RhbmNlU3BlY2lmaWNhdGlvbiB3aG9zZSBuYW1lIGlzIGEgc3Vic3RyaW5nIG9mICAtLQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubTJtL3RyYW5zZm9ybWF0aW9ucy9NQVJURVV0aWxzLnF2dG8gYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tMm0vdHJhbnNmb3JtYXRpb25zL01BUlRFVXRpbHMucXZ0bwppbmRleCBkZTk0ZWM5Li4zYzMzMjFhIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tMm0vdHJhbnNmb3JtYXRpb25zL01BUlRFVXRpbHMucXZ0bworKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tMm0vdHJhbnNmb3JtYXRpb25zL01BUlRFVXRpbHMucXZ0bwpAQCAtMTAsNyArMTAsNyBAQAogLS0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAgLS0KIC0tIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgIC0tCiAtLSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0ICAgICAtLQotLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogKi8KIApkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubTJtL3RyYW5zZm9ybWF0aW9ucy9Qcm9maWxlVXRpbHNfSW5zdF9mdWxsLnF2dG8gYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tMm0vdHJhbnNmb3JtYXRpb25zL1Byb2ZpbGVVdGlsc19JbnN0X2Z1bGwucXZ0bwppbmRleCBkMGYzZDJkLi5hMWYxNDkzIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tMm0vdHJhbnNmb3JtYXRpb25zL1Byb2ZpbGVVdGlsc19JbnN0X2Z1bGwucXZ0bworKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tMm0vdHJhbnNmb3JtYXRpb25zL1Byb2ZpbGVVdGlsc19JbnN0X2Z1bGwucXZ0bwpAQCAtMTAsNyArMTAsNyBAQAogLS0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAgLS0KIC0tIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgIC0tCiAtLSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0ICAgICAtLQotLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogKi8KIApkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubTJtL3RyYW5zZm9ybWF0aW9ucy9SZW1vdmVNdWx0aUluc3RhbmNlLnF2dG8gYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tMm0vdHJhbnNmb3JtYXRpb25zL1JlbW92ZU11bHRpSW5zdGFuY2UucXZ0bwppbmRleCBlMWJjZjJmLi40MWIxOTA1IDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tMm0vdHJhbnNmb3JtYXRpb25zL1JlbW92ZU11bHRpSW5zdGFuY2UucXZ0bworKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tMm0vdHJhbnNmb3JtYXRpb25zL1JlbW92ZU11bHRpSW5zdGFuY2UucXZ0bwpAQCAtMTAsNyArMTAsNyBAQAogLS0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAgLS0KIC0tIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgIC0tCiAtLSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0ICAgICAtLQotLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogKi8KIApkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubTJtL3RyYW5zZm9ybWF0aW9ucy9VTUxVdGlsc19JbnN0X2Z1bGwucXZ0byBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm0ybS90cmFuc2Zvcm1hdGlvbnMvVU1MVXRpbHNfSW5zdF9mdWxsLnF2dG8KaW5kZXggNzM3ODYxZS4uZmU0NDBkMCAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubTJtL3RyYW5zZm9ybWF0aW9ucy9VTUxVdGlsc19JbnN0X2Z1bGwucXZ0bworKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tMm0vdHJhbnNmb3JtYXRpb25zL1VNTFV0aWxzX0luc3RfZnVsbC5xdnRvCkBAIC0xMCw3ICsxMCw3IEBACiAtLSBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzICAtLQogLS0gYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAgLS0KIC0tIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgICAgIC0tCi0tLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqLwogCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tMm0vdHJhbnNmb3JtYXRpb25zL1VudXNlZC5xdnRvIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubTJtL3RyYW5zZm9ybWF0aW9ucy9VbnVzZWQucXZ0bwppbmRleCBlZTUyMWFkLi45NzQ0NTBhIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tMm0vdHJhbnNmb3JtYXRpb25zL1VudXNlZC5xdnRvCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm0ybS90cmFuc2Zvcm1hdGlvbnMvVW51c2VkLnF2dG8KQEAgLTEwLDcgKzEwLDcgQEAKIC0tIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgIC0tCiAtLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlICAtLQogLS0gdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCAgICAgLS0KLS0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICovCiAKZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm1haW5tZW51L2Fib3V0Lmh0bWwgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tYWlubWVudS9hYm91dC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE2NGY3ODEKLS0tIC9kZXYvbnVsbAorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tYWlubWVudS9hYm91dC5odG1sCkBAIC0wLDAgKzEsMzYgQEAKKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFN0cmljdC8vRU4iCisgICAgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXN0cmljdC5kdGQiPgorPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xIiAvPgorPHRpdGxlPkFib3V0PC90aXRsZT4KKzwvaGVhZD4KKzxib2R5IGxhbmc9IkVOLVVTIj4KKwk8aDI+QWJvdXQgVGhpcyBDb250ZW50PC9oMj4KKworCTxwPk5vdmVtYmVyIDMwLCAyMDE3PC9wPgorCTxoMz5MaWNlbnNlPC9oMz4KKworCTxwPgorCQlUaGUgRWNsaXBzZSBGb3VuZGF0aW9uIG1ha2VzIGF2YWlsYWJsZSBhbGwgY29udGVudCBpbiB0aGlzIHBsdWctaW4KKwkJKCZxdW90O0NvbnRlbnQmcXVvdDspLiBVbmxlc3Mgb3RoZXJ3aXNlIGluZGljYXRlZCBiZWxvdywgdGhlIENvbnRlbnQKKwkJaXMgcHJvdmlkZWQgdG8geW91IHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRWNsaXBzZQorCQlQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDIuMCAoJnF1b3Q7RVBMJnF1b3Q7KS4gQSBjb3B5IG9mIHRoZSBFUEwgaXMKKwkJYXZhaWxhYmxlIGF0IDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMCI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wPC9hPi4KKwkJRm9yIHB1cnBvc2VzIG9mIHRoZSBFUEwsICZxdW90O1Byb2dyYW0mcXVvdDsgd2lsbCBtZWFuIHRoZSBDb250ZW50LgorCTwvcD4KKworCTxwPgorCQlJZiB5b3UgZGlkIG5vdCByZWNlaXZlIHRoaXMgQ29udGVudCBkaXJlY3RseSBmcm9tIHRoZSBFY2xpcHNlCisJCUZvdW5kYXRpb24sIHRoZSBDb250ZW50IGlzIGJlaW5nIHJlZGlzdHJpYnV0ZWQgYnkgYW5vdGhlciBwYXJ0eQorCQkoJnF1b3Q7UmVkaXN0cmlidXRvciZxdW90OykgYW5kIGRpZmZlcmVudCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBtYXkKKwkJYXBwbHkgdG8geW91ciB1c2Ugb2YgYW55IG9iamVjdCBjb2RlIGluIHRoZSBDb250ZW50LiBDaGVjayB0aGUKKwkJUmVkaXN0cmlidXRvcidzIGxpY2Vuc2UgdGhhdCB3YXMgcHJvdmlkZWQgd2l0aCB0aGUgQ29udGVudC4gSWYgbm8gc3VjaAorCQlsaWNlbnNlIGV4aXN0cywgY29udGFjdCB0aGUgUmVkaXN0cmlidXRvci4gVW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQKKwkJYmVsb3csIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRVBMIHN0aWxsIGFwcGx5IHRvIGFueSBzb3VyY2UKKwkJY29kZSBpbiB0aGUgQ29udGVudCBhbmQgc3VjaCBzb3VyY2UgY29kZSBtYXkgYmUgb2J0YWluZWQgYXQgPGEKKwkJCWhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnPC9hPi4KKwk8L3A+CisKKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tb25pdG9yaW5nLmVkaXQvYWJvdXQuaHRtbCBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vbml0b3JpbmcuZWRpdC9hYm91dC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE2NGY3ODEKLS0tIC9kZXYvbnVsbAorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tb25pdG9yaW5nLmVkaXQvYWJvdXQuaHRtbApAQCAtMCwwICsxLDM2IEBACis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIgorICAgICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS1zdHJpY3QuZHRkIj4KKzxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMSIgLz4KKzx0aXRsZT5BYm91dDwvdGl0bGU+Cis8L2hlYWQ+Cis8Ym9keSBsYW5nPSJFTi1VUyI+CisJPGgyPkFib3V0IFRoaXMgQ29udGVudDwvaDI+CisKKwk8cD5Ob3ZlbWJlciAzMCwgMjAxNzwvcD4KKwk8aDM+TGljZW5zZTwvaDM+CisKKwk8cD4KKwkJVGhlIEVjbGlwc2UgRm91bmRhdGlvbiBtYWtlcyBhdmFpbGFibGUgYWxsIGNvbnRlbnQgaW4gdGhpcyBwbHVnLWluCisJCSgmcXVvdDtDb250ZW50JnF1b3Q7KS4gVW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQgYmVsb3csIHRoZSBDb250ZW50CisJCWlzIHByb3ZpZGVkIHRvIHlvdSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVjbGlwc2UKKwkJUHVibGljIExpY2Vuc2UgVmVyc2lvbiAyLjAgKCZxdW90O0VQTCZxdW90OykuIEEgY29weSBvZiB0aGUgRVBMIGlzCisJCWF2YWlsYWJsZSBhdCA8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAiPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMDwvYT4uCisJCUZvciBwdXJwb3NlcyBvZiB0aGUgRVBMLCAmcXVvdDtQcm9ncmFtJnF1b3Q7IHdpbGwgbWVhbiB0aGUgQ29udGVudC4KKwk8L3A+CisKKwk8cD4KKwkJSWYgeW91IGRpZCBub3QgcmVjZWl2ZSB0aGlzIENvbnRlbnQgZGlyZWN0bHkgZnJvbSB0aGUgRWNsaXBzZQorCQlGb3VuZGF0aW9uLCB0aGUgQ29udGVudCBpcyBiZWluZyByZWRpc3RyaWJ1dGVkIGJ5IGFub3RoZXIgcGFydHkKKwkJKCZxdW90O1JlZGlzdHJpYnV0b3ImcXVvdDspIGFuZCBkaWZmZXJlbnQgdGVybXMgYW5kIGNvbmRpdGlvbnMgbWF5CisJCWFwcGx5IHRvIHlvdXIgdXNlIG9mIGFueSBvYmplY3QgY29kZSBpbiB0aGUgQ29udGVudC4gQ2hlY2sgdGhlCisJCVJlZGlzdHJpYnV0b3IncyBsaWNlbnNlIHRoYXQgd2FzIHByb3ZpZGVkIHdpdGggdGhlIENvbnRlbnQuIElmIG5vIHN1Y2gKKwkJbGljZW5zZSBleGlzdHMsIGNvbnRhY3QgdGhlIFJlZGlzdHJpYnV0b3IuIFVubGVzcyBvdGhlcndpc2UgaW5kaWNhdGVkCisJCWJlbG93LCB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVQTCBzdGlsbCBhcHBseSB0byBhbnkgc291cmNlCisJCWNvZGUgaW4gdGhlIENvbnRlbnQgYW5kIHN1Y2ggc291cmNlIGNvZGUgbWF5IGJlIG9idGFpbmVkIGF0IDxhCisJCQlocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnLyI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZzwvYT4uCisJPC9wPgorCis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubW9uaXRvcmluZy5lZGl0b3IvYWJvdXQuaHRtbCBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vbml0b3JpbmcuZWRpdG9yL2Fib3V0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTY0Zjc4MQotLS0gL2Rldi9udWxsCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vbml0b3JpbmcuZWRpdG9yL2Fib3V0Lmh0bWwKQEAgLTAsMCArMSwzNiBAQAorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgU3RyaWN0Ly9FTiIKKyAgICAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+Cis8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiIC8+Cis8dGl0bGU+QWJvdXQ8L3RpdGxlPgorPC9oZWFkPgorPGJvZHkgbGFuZz0iRU4tVVMiPgorCTxoMj5BYm91dCBUaGlzIENvbnRlbnQ8L2gyPgorCisJPHA+Tm92ZW1iZXIgMzAsIDIwMTc8L3A+CisJPGgzPkxpY2Vuc2U8L2gzPgorCisJPHA+CisJCVRoZSBFY2xpcHNlIEZvdW5kYXRpb24gbWFrZXMgYXZhaWxhYmxlIGFsbCBjb250ZW50IGluIHRoaXMgcGx1Zy1pbgorCQkoJnF1b3Q7Q29udGVudCZxdW90OykuIFVubGVzcyBvdGhlcndpc2UgaW5kaWNhdGVkIGJlbG93LCB0aGUgQ29udGVudAorCQlpcyBwcm92aWRlZCB0byB5b3UgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFY2xpcHNlCisJCVB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMi4wICgmcXVvdDtFUEwmcXVvdDspLiBBIGNvcHkgb2YgdGhlIEVQTCBpcworCQlhdmFpbGFibGUgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjA8L2E+LgorCQlGb3IgcHVycG9zZXMgb2YgdGhlIEVQTCwgJnF1b3Q7UHJvZ3JhbSZxdW90OyB3aWxsIG1lYW4gdGhlIENvbnRlbnQuCisJPC9wPgorCisJPHA+CisJCUlmIHlvdSBkaWQgbm90IHJlY2VpdmUgdGhpcyBDb250ZW50IGRpcmVjdGx5IGZyb20gdGhlIEVjbGlwc2UKKwkJRm91bmRhdGlvbiwgdGhlIENvbnRlbnQgaXMgYmVpbmcgcmVkaXN0cmlidXRlZCBieSBhbm90aGVyIHBhcnR5CisJCSgmcXVvdDtSZWRpc3RyaWJ1dG9yJnF1b3Q7KSBhbmQgZGlmZmVyZW50IHRlcm1zIGFuZCBjb25kaXRpb25zIG1heQorCQlhcHBseSB0byB5b3VyIHVzZSBvZiBhbnkgb2JqZWN0IGNvZGUgaW4gdGhlIENvbnRlbnQuIENoZWNrIHRoZQorCQlSZWRpc3RyaWJ1dG9yJ3MgbGljZW5zZSB0aGF0IHdhcyBwcm92aWRlZCB3aXRoIHRoZSBDb250ZW50LiBJZiBubyBzdWNoCisJCWxpY2Vuc2UgZXhpc3RzLCBjb250YWN0IHRoZSBSZWRpc3RyaWJ1dG9yLiBVbmxlc3Mgb3RoZXJ3aXNlIGluZGljYXRlZAorCQliZWxvdywgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFUEwgc3RpbGwgYXBwbHkgdG8gYW55IHNvdXJjZQorCQljb2RlIGluIHRoZSBDb250ZW50IGFuZCBzdWNoIHNvdXJjZSBjb2RlIG1heSBiZSBvYnRhaW5lZCBhdCA8YQorCQkJaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy8iPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmc8L2E+LgorCTwvcD4KKworPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vbml0b3JpbmcudGVzdHMvYWJvdXQuaHRtbCBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vbml0b3JpbmcudGVzdHMvYWJvdXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNjRmNzgxCi0tLSAvZGV2L251bGwKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubW9uaXRvcmluZy50ZXN0cy9hYm91dC5odG1sCkBAIC0wLDAgKzEsMzYgQEAKKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFN0cmljdC8vRU4iCisgICAgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXN0cmljdC5kdGQiPgorPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xIiAvPgorPHRpdGxlPkFib3V0PC90aXRsZT4KKzwvaGVhZD4KKzxib2R5IGxhbmc9IkVOLVVTIj4KKwk8aDI+QWJvdXQgVGhpcyBDb250ZW50PC9oMj4KKworCTxwPk5vdmVtYmVyIDMwLCAyMDE3PC9wPgorCTxoMz5MaWNlbnNlPC9oMz4KKworCTxwPgorCQlUaGUgRWNsaXBzZSBGb3VuZGF0aW9uIG1ha2VzIGF2YWlsYWJsZSBhbGwgY29udGVudCBpbiB0aGlzIHBsdWctaW4KKwkJKCZxdW90O0NvbnRlbnQmcXVvdDspLiBVbmxlc3Mgb3RoZXJ3aXNlIGluZGljYXRlZCBiZWxvdywgdGhlIENvbnRlbnQKKwkJaXMgcHJvdmlkZWQgdG8geW91IHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRWNsaXBzZQorCQlQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDIuMCAoJnF1b3Q7RVBMJnF1b3Q7KS4gQSBjb3B5IG9mIHRoZSBFUEwgaXMKKwkJYXZhaWxhYmxlIGF0IDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMCI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wPC9hPi4KKwkJRm9yIHB1cnBvc2VzIG9mIHRoZSBFUEwsICZxdW90O1Byb2dyYW0mcXVvdDsgd2lsbCBtZWFuIHRoZSBDb250ZW50LgorCTwvcD4KKworCTxwPgorCQlJZiB5b3UgZGlkIG5vdCByZWNlaXZlIHRoaXMgQ29udGVudCBkaXJlY3RseSBmcm9tIHRoZSBFY2xpcHNlCisJCUZvdW5kYXRpb24sIHRoZSBDb250ZW50IGlzIGJlaW5nIHJlZGlzdHJpYnV0ZWQgYnkgYW5vdGhlciBwYXJ0eQorCQkoJnF1b3Q7UmVkaXN0cmlidXRvciZxdW90OykgYW5kIGRpZmZlcmVudCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBtYXkKKwkJYXBwbHkgdG8geW91ciB1c2Ugb2YgYW55IG9iamVjdCBjb2RlIGluIHRoZSBDb250ZW50LiBDaGVjayB0aGUKKwkJUmVkaXN0cmlidXRvcidzIGxpY2Vuc2UgdGhhdCB3YXMgcHJvdmlkZWQgd2l0aCB0aGUgQ29udGVudC4gSWYgbm8gc3VjaAorCQlsaWNlbnNlIGV4aXN0cywgY29udGFjdCB0aGUgUmVkaXN0cmlidXRvci4gVW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQKKwkJYmVsb3csIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRVBMIHN0aWxsIGFwcGx5IHRvIGFueSBzb3VyY2UKKwkJY29kZSBpbiB0aGUgQ29udGVudCBhbmQgc3VjaCBzb3VyY2UgY29kZSBtYXkgYmUgb2J0YWluZWQgYXQgPGEKKwkJCWhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnPC9hPi4KKwk8L3A+CisKKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tb25pdG9yaW5nL2Fib3V0Lmh0bWwgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tb25pdG9yaW5nL2Fib3V0Lmh0bWwKaW5kZXggZGQzYzA4OS4uMTY0Zjc4MSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubW9uaXRvcmluZy9hYm91dC5odG1sCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vbml0b3JpbmcvYWJvdXQuaHRtbApAQCAtMiwyNyArMiwzNSBAQAogICAgICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS1zdHJpY3QuZHRkIj4KIDxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KIDxoZWFkPgotPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMSIvPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMSIgLz4KIDx0aXRsZT5BYm91dDwvdGl0bGU+CiA8L2hlYWQ+CiA8Ym9keSBsYW5nPSJFTi1VUyI+Ci08aDI+QWJvdXQgVGhpcyBDb250ZW50PC9oMj4KLSAKLTxwPk5vdmVtYmVyIDE0LCAyMDA4PC9wPgkKLTxoMz5MaWNlbnNlPC9oMz4KKwk8aDI+QWJvdXQgVGhpcyBDb250ZW50PC9oMj4KIAotPHA+VGhlIEVjbGlwc2UgRm91bmRhdGlvbiBtYWtlcyBhdmFpbGFibGUgYWxsIGNvbnRlbnQgaW4gdGhpcyBwbHVnLWluICgmcXVvdDtDb250ZW50JnF1b3Q7KS4gIFVubGVzcyBvdGhlcndpc2UgCi1pbmRpY2F0ZWQgYmVsb3csIHRoZSBDb250ZW50IGlzIHByb3ZpZGVkIHRvIHlvdSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlCi1FY2xpcHNlIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMS4wICgmcXVvdDtFUEwmcXVvdDspLiAgQSBjb3B5IG9mIHRoZSBFUEwgaXMgYXZhaWxhYmxlIAotYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwiPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sPC9hPi4KLUZvciBwdXJwb3NlcyBvZiB0aGUgRVBMLCAmcXVvdDtQcm9ncmFtJnF1b3Q7IHdpbGwgbWVhbiB0aGUgQ29udGVudC48L3A+CisJPHA+Tm92ZW1iZXIgMzAsIDIwMTc8L3A+CisJPGgzPkxpY2Vuc2U8L2gzPgogCi08cD5JZiB5b3UgZGlkIG5vdCByZWNlaXZlIHRoaXMgQ29udGVudCBkaXJlY3RseSBmcm9tIHRoZSBFY2xpcHNlIEZvdW5kYXRpb24sIHRoZSBDb250ZW50IGlzIAotYmVpbmcgcmVkaXN0cmlidXRlZCBieSBhbm90aGVyIHBhcnR5ICgmcXVvdDtSZWRpc3RyaWJ1dG9yJnF1b3Q7KSBhbmQgZGlmZmVyZW50IHRlcm1zIGFuZCBjb25kaXRpb25zIG1heQotYXBwbHkgdG8geW91ciB1c2Ugb2YgYW55IG9iamVjdCBjb2RlIGluIHRoZSBDb250ZW50LiAgQ2hlY2sgdGhlIFJlZGlzdHJpYnV0b3IncyBsaWNlbnNlIHRoYXQgd2FzIAotcHJvdmlkZWQgd2l0aCB0aGUgQ29udGVudC4gIElmIG5vIHN1Y2ggbGljZW5zZSBleGlzdHMsIGNvbnRhY3QgdGhlIFJlZGlzdHJpYnV0b3IuICBVbmxlc3Mgb3RoZXJ3aXNlCi1pbmRpY2F0ZWQgYmVsb3csIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRVBMIHN0aWxsIGFwcGx5IHRvIGFueSBzb3VyY2UgY29kZSBpbiB0aGUgQ29udGVudAotYW5kIHN1Y2ggc291cmNlIGNvZGUgbWF5IGJlIG9idGFpbmVkIGF0IDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmciPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmc8L2E+LjwvcD4KKwk8cD4KKwkJVGhlIEVjbGlwc2UgRm91bmRhdGlvbiBtYWtlcyBhdmFpbGFibGUgYWxsIGNvbnRlbnQgaW4gdGhpcyBwbHVnLWluCisJCSgmcXVvdDtDb250ZW50JnF1b3Q7KS4gVW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQgYmVsb3csIHRoZSBDb250ZW50CisJCWlzIHByb3ZpZGVkIHRvIHlvdSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVjbGlwc2UKKwkJUHVibGljIExpY2Vuc2UgVmVyc2lvbiAyLjAgKCZxdW90O0VQTCZxdW90OykuIEEgY29weSBvZiB0aGUgRVBMIGlzCisJCWF2YWlsYWJsZSBhdCA8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAiPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMDwvYT4uCisJCUZvciBwdXJwb3NlcyBvZiB0aGUgRVBMLCAmcXVvdDtQcm9ncmFtJnF1b3Q7IHdpbGwgbWVhbiB0aGUgQ29udGVudC4KKwk8L3A+CisKKwk8cD4KKwkJSWYgeW91IGRpZCBub3QgcmVjZWl2ZSB0aGlzIENvbnRlbnQgZGlyZWN0bHkgZnJvbSB0aGUgRWNsaXBzZQorCQlGb3VuZGF0aW9uLCB0aGUgQ29udGVudCBpcyBiZWluZyByZWRpc3RyaWJ1dGVkIGJ5IGFub3RoZXIgcGFydHkKKwkJKCZxdW90O1JlZGlzdHJpYnV0b3ImcXVvdDspIGFuZCBkaWZmZXJlbnQgdGVybXMgYW5kIGNvbmRpdGlvbnMgbWF5CisJCWFwcGx5IHRvIHlvdXIgdXNlIG9mIGFueSBvYmplY3QgY29kZSBpbiB0aGUgQ29udGVudC4gQ2hlY2sgdGhlCisJCVJlZGlzdHJpYnV0b3IncyBsaWNlbnNlIHRoYXQgd2FzIHByb3ZpZGVkIHdpdGggdGhlIENvbnRlbnQuIElmIG5vIHN1Y2gKKwkJbGljZW5zZSBleGlzdHMsIGNvbnRhY3QgdGhlIFJlZGlzdHJpYnV0b3IuIFVubGVzcyBvdGhlcndpc2UgaW5kaWNhdGVkCisJCWJlbG93LCB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVQTCBzdGlsbCBhcHBseSB0byBhbnkgc291cmNlCisJCWNvZGUgaW4gdGhlIENvbnRlbnQgYW5kIHN1Y2ggc291cmNlIGNvZGUgbWF5IGJlIG9idGFpbmVkIGF0IDxhCisJCQlocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnLyI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZzwvYT4uCisJPC9wPgogCiA8L2JvZHk+CiA8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubW9uaXRvcmluZy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL21vbml0b3JpbmcvbW9uaXRvcmluZ3htbC9BY3RpdmF0b3IuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vbml0b3Jpbmcvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tb25pdG9yaW5nL21vbml0b3Jpbmd4bWwvQWN0aXZhdG9yLmphdmEKaW5kZXggZmYzY2ZlZi4uNjgwYjNiMiAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubW9uaXRvcmluZy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL21vbml0b3JpbmcvbW9uaXRvcmluZ3htbC9BY3RpdmF0b3IuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tb25pdG9yaW5nL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbW9uaXRvcmluZy9tb25pdG9yaW5neG1sL0FjdGl2YXRvci5qYXZhCkBAIC0xMCw3ICsxMCw3IEBACiAtLSBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzICAtLQogLS0gYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAgLS0KIC0tIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgICAgIC0tCi0tLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICovICAKIApkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubW9uaXRvcmluZy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL21vbml0b3JpbmcvbW9uaXRvcmluZ3htbC9BbmFseXNpc0NvbnRleHQuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vbml0b3Jpbmcvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tb25pdG9yaW5nL21vbml0b3Jpbmd4bWwvQW5hbHlzaXNDb250ZXh0LmphdmEKaW5kZXggMjlhYjcyYy4uOTdhMDk5YyAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubW9uaXRvcmluZy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL21vbml0b3JpbmcvbW9uaXRvcmluZ3htbC9BbmFseXNpc0NvbnRleHQuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tb25pdG9yaW5nL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbW9uaXRvcmluZy9tb25pdG9yaW5neG1sL0FuYWx5c2lzQ29udGV4dC5qYXZhCkBAIC0xMCw3ICsxMCw3IEBACiAtLSBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzICAtLQogLS0gYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAgLS0KIC0tIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgICAgIC0tCi0tLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICovICAKIHBhY2thZ2Ugb3JnLnBvbGFyc3lzLmNoZXNzLm1vbml0b3JpbmcubW9uaXRvcmluZ3htbDsKZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vbml0b3Jpbmcvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tb25pdG9yaW5nL21vbml0b3Jpbmd4bWwvQmxvY2tpbmdUaW1lLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tb25pdG9yaW5nL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbW9uaXRvcmluZy9tb25pdG9yaW5neG1sL0Jsb2NraW5nVGltZS5qYXZhCmluZGV4IDMzODEyODEuLmU2MjEyMjYgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vbml0b3Jpbmcvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tb25pdG9yaW5nL21vbml0b3Jpbmd4bWwvQmxvY2tpbmdUaW1lLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubW9uaXRvcmluZy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL21vbml0b3JpbmcvbW9uaXRvcmluZ3htbC9CbG9ja2luZ1RpbWUuamF2YQpAQCAtMTAsNyArMTAsNyBAQAogLS0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAgLS0KIC0tIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgIC0tCiAtLSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0ICAgICAtLQotLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAqLyAgCiBwYWNrYWdlIG9yZy5wb2xhcnN5cy5jaGVzcy5tb25pdG9yaW5nLm1vbml0b3Jpbmd4bWw7CmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tb25pdG9yaW5nL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbW9uaXRvcmluZy9tb25pdG9yaW5neG1sL0V4ZWN1dGlvblRpbWUuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vbml0b3Jpbmcvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tb25pdG9yaW5nL21vbml0b3Jpbmd4bWwvRXhlY3V0aW9uVGltZS5qYXZhCmluZGV4IDdjOTUyYWQuLmRhOTE1M2EgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vbml0b3Jpbmcvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tb25pdG9yaW5nL21vbml0b3Jpbmd4bWwvRXhlY3V0aW9uVGltZS5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vbml0b3Jpbmcvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tb25pdG9yaW5nL21vbml0b3Jpbmd4bWwvRXhlY3V0aW9uVGltZS5qYXZhCkBAIC0xMCw3ICsxMCw3IEBACiAtLSBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzICAtLQogLS0gYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAgLS0KIC0tIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgICAgIC0tCi0tLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICovICAKIHBhY2thZ2Ugb3JnLnBvbGFyc3lzLmNoZXNzLm1vbml0b3JpbmcubW9uaXRvcmluZ3htbDsKZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vbml0b3Jpbmcvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tb25pdG9yaW5nL21vbml0b3Jpbmd4bWwvTWVhc3VyZWRWYWx1ZS5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubW9uaXRvcmluZy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL21vbml0b3JpbmcvbW9uaXRvcmluZ3htbC9NZWFzdXJlZFZhbHVlLmphdmEKaW5kZXggYTk2OWUwNS4uYzlmOTk3MSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubW9uaXRvcmluZy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL21vbml0b3JpbmcvbW9uaXRvcmluZ3htbC9NZWFzdXJlZFZhbHVlLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubW9uaXRvcmluZy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL21vbml0b3JpbmcvbW9uaXRvcmluZ3htbC9NZWFzdXJlZFZhbHVlLmphdmEKQEAgLTksNyArOSw3IEBACiAtLSBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzICAtLQogLS0gYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAgLS0KIC0tIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgICAgIC0tCi0tLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICovIAogcGFja2FnZSBvcmcucG9sYXJzeXMuY2hlc3MubW9uaXRvcmluZy5tb25pdG9yaW5neG1sOwpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubW9uaXRvcmluZy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL21vbml0b3JpbmcvbW9uaXRvcmluZ3htbC9Nb25pdG9yZWRSZXNvdXJjZS5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubW9uaXRvcmluZy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL21vbml0b3JpbmcvbW9uaXRvcmluZ3htbC9Nb25pdG9yZWRSZXNvdXJjZS5qYXZhCmluZGV4IDViYTYyYWYuLjQ1OTk3MWMgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vbml0b3Jpbmcvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tb25pdG9yaW5nL21vbml0b3Jpbmd4bWwvTW9uaXRvcmVkUmVzb3VyY2UuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tb25pdG9yaW5nL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbW9uaXRvcmluZy9tb25pdG9yaW5neG1sL01vbml0b3JlZFJlc291cmNlLmphdmEKQEAgLTEwLDcgKzEwLDcgQEAKIC0tIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgIC0tCiAtLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlICAtLQogLS0gdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCAgICAgLS0KLS0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgKi8gCiBwYWNrYWdlIG9yZy5wb2xhcnN5cy5jaGVzcy5tb25pdG9yaW5nLm1vbml0b3Jpbmd4bWw7CmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tb25pdG9yaW5nL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbW9uaXRvcmluZy9tb25pdG9yaW5neG1sL01vbml0b3JpbmcuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vbml0b3Jpbmcvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tb25pdG9yaW5nL21vbml0b3Jpbmd4bWwvTW9uaXRvcmluZy5qYXZhCmluZGV4IDdkMmZmZDIuLjRhYmU5MWMgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vbml0b3Jpbmcvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tb25pdG9yaW5nL21vbml0b3Jpbmd4bWwvTW9uaXRvcmluZy5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vbml0b3Jpbmcvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tb25pdG9yaW5nL21vbml0b3Jpbmd4bWwvTW9uaXRvcmluZy5qYXZhCkBAIC0xMCw3ICsxMCw3IEBACiAtLSBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzICAtLQogLS0gYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAgLS0KIC0tIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgICAgIC0tCi0tLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICovIAogcGFja2FnZSBvcmcucG9sYXJzeXMuY2hlc3MubW9uaXRvcmluZy5tb25pdG9yaW5neG1sOwpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubW9uaXRvcmluZy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL21vbml0b3JpbmcvbW9uaXRvcmluZ3htbC9Nb25pdG9yaW5neG1sRmFjdG9yeS5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubW9uaXRvcmluZy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL21vbml0b3JpbmcvbW9uaXRvcmluZ3htbC9Nb25pdG9yaW5neG1sRmFjdG9yeS5qYXZhCmluZGV4IGYwZmJjMWYuLjE3NjAxZDggMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vbml0b3Jpbmcvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tb25pdG9yaW5nL21vbml0b3Jpbmd4bWwvTW9uaXRvcmluZ3htbEZhY3RvcnkuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tb25pdG9yaW5nL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbW9uaXRvcmluZy9tb25pdG9yaW5neG1sL01vbml0b3Jpbmd4bWxGYWN0b3J5LmphdmEKQEAgLTEwLDcgKzEwLDcgQEAKIC0tIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgIC0tCiAtLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlICAtLQogLS0gdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCAgICAgLS0KLS0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgKi8gCiBwYWNrYWdlIG9yZy5wb2xhcnN5cy5jaGVzcy5tb25pdG9yaW5nLm1vbml0b3Jpbmd4bWw7CmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tb25pdG9yaW5nL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbW9uaXRvcmluZy9tb25pdG9yaW5neG1sL01vbml0b3Jpbmd4bWxQYWNrYWdlLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tb25pdG9yaW5nL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbW9uaXRvcmluZy9tb25pdG9yaW5neG1sL01vbml0b3Jpbmd4bWxQYWNrYWdlLmphdmEKaW5kZXggYmU5ZTVkZC4uZDUzODVjMiAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubW9uaXRvcmluZy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL21vbml0b3JpbmcvbW9uaXRvcmluZ3htbC9Nb25pdG9yaW5neG1sUGFja2FnZS5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vbml0b3Jpbmcvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tb25pdG9yaW5nL21vbml0b3Jpbmd4bWwvTW9uaXRvcmluZ3htbFBhY2thZ2UuamF2YQpAQCAtMTAsNyArMTAsNyBAQAogLS0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAgLS0KIC0tIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgIC0tCiAtLSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0ICAgICAtLQotLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAqLyAKIHBhY2thZ2Ugb3JnLnBvbGFyc3lzLmNoZXNzLm1vbml0b3JpbmcubW9uaXRvcmluZ3htbDsKZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vbml0b3Jpbmcvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tb25pdG9yaW5nL21vbml0b3Jpbmd4bWwvUGVyaW9kLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tb25pdG9yaW5nL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbW9uaXRvcmluZy9tb25pdG9yaW5neG1sL1BlcmlvZC5qYXZhCmluZGV4IDJjZDNjYmMuLjJkZmJkMWUgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vbml0b3Jpbmcvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tb25pdG9yaW5nL21vbml0b3Jpbmd4bWwvUGVyaW9kLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubW9uaXRvcmluZy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL21vbml0b3JpbmcvbW9uaXRvcmluZ3htbC9QZXJpb2QuamF2YQpAQCAtMTAsNyArMTAsNyBAQAogLS0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAgLS0KIC0tIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgIC0tCiAtLSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0ICAgICAtLQotLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAqLyAKIHBhY2thZ2Ugb3JnLnBvbGFyc3lzLmNoZXNzLm1vbml0b3JpbmcubW9uaXRvcmluZ3htbDsKZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vbml0b3Jpbmcvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tb25pdG9yaW5nL21vbml0b3Jpbmd4bWwvUmVzb3VyY2UuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vbml0b3Jpbmcvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tb25pdG9yaW5nL21vbml0b3Jpbmd4bWwvUmVzb3VyY2UuamF2YQppbmRleCA0ZDFkY2UwLi40MGI5ZGQxIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tb25pdG9yaW5nL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbW9uaXRvcmluZy9tb25pdG9yaW5neG1sL1Jlc291cmNlLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubW9uaXRvcmluZy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL21vbml0b3JpbmcvbW9uaXRvcmluZ3htbC9SZXNvdXJjZS5qYXZhCkBAIC0xMCw3ICsxMCw3IEBACiAtLSBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzICAtLQogLS0gYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAgLS0KIC0tIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgICAgIC0tCi0tLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICovIAogcGFja2FnZSBvcmcucG9sYXJzeXMuY2hlc3MubW9uaXRvcmluZy5tb25pdG9yaW5neG1sOwpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubW9uaXRvcmluZy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL21vbml0b3JpbmcvbW9uaXRvcmluZ3htbC9SZXNwb25zZVRpbWUuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vbml0b3Jpbmcvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tb25pdG9yaW5nL21vbml0b3Jpbmd4bWwvUmVzcG9uc2VUaW1lLmphdmEKaW5kZXggOWViY2YxNy4uMTIxZTBlOCAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubW9uaXRvcmluZy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL21vbml0b3JpbmcvbW9uaXRvcmluZ3htbC9SZXNwb25zZVRpbWUuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tb25pdG9yaW5nL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbW9uaXRvcmluZy9tb25pdG9yaW5neG1sL1Jlc3BvbnNlVGltZS5qYXZhCkBAIC0xMCw3ICsxMCw3IEBACiAtLSBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzICAtLQogLS0gYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAgLS0KIC0tIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgICAgIC0tCi0tLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICovIAogcGFja2FnZSBvcmcucG9sYXJzeXMuY2hlc3MubW9uaXRvcmluZy5tb25pdG9yaW5neG1sOwpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubW9uaXRvcmluZy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL21vbml0b3JpbmcvbW9uaXRvcmluZ3htbC9UaHJlYWQuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vbml0b3Jpbmcvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tb25pdG9yaW5nL21vbml0b3Jpbmd4bWwvVGhyZWFkLmphdmEKaW5kZXggYzdlZWE3OS4uYzg0ZWNiMyAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubW9uaXRvcmluZy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL21vbml0b3JpbmcvbW9uaXRvcmluZ3htbC9UaHJlYWQuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tb25pdG9yaW5nL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbW9uaXRvcmluZy9tb25pdG9yaW5neG1sL1RocmVhZC5qYXZhCkBAIC0xMCw3ICsxMCw3IEBACiAtLSBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzICAtLQogLS0gYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAgLS0KIC0tIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgICAgIC0tCi0tLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICovIAogcGFja2FnZSBvcmcucG9sYXJzeXMuY2hlc3MubW9uaXRvcmluZy5tb25pdG9yaW5neG1sOwpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubW9uaXRvcmluZy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL21vbml0b3JpbmcvbW9uaXRvcmluZ3htbC9pbXBsL0FuYWx5c2lzQ29udGV4dEltcGwuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vbml0b3Jpbmcvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tb25pdG9yaW5nL21vbml0b3Jpbmd4bWwvaW1wbC9BbmFseXNpc0NvbnRleHRJbXBsLmphdmEKaW5kZXggODRiYTNhMS4uNTU4YzNiYSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubW9uaXRvcmluZy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL21vbml0b3JpbmcvbW9uaXRvcmluZ3htbC9pbXBsL0FuYWx5c2lzQ29udGV4dEltcGwuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tb25pdG9yaW5nL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbW9uaXRvcmluZy9tb25pdG9yaW5neG1sL2ltcGwvQW5hbHlzaXNDb250ZXh0SW1wbC5qYXZhCkBAIC0xMCw3ICsxMCw3IEBACiAtLSBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzICAtLQogLS0gYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAgLS0KIC0tIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgICAgIC0tCi0tLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICovIAogcGFja2FnZSBvcmcucG9sYXJzeXMuY2hlc3MubW9uaXRvcmluZy5tb25pdG9yaW5neG1sLmltcGw7CmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tb25pdG9yaW5nL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbW9uaXRvcmluZy9tb25pdG9yaW5neG1sL2ltcGwvQmxvY2tpbmdUaW1lSW1wbC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubW9uaXRvcmluZy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL21vbml0b3JpbmcvbW9uaXRvcmluZ3htbC9pbXBsL0Jsb2NraW5nVGltZUltcGwuamF2YQppbmRleCA2N2Y0NjlmLi5jNTAzNTRiIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tb25pdG9yaW5nL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbW9uaXRvcmluZy9tb25pdG9yaW5neG1sL2ltcGwvQmxvY2tpbmdUaW1lSW1wbC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vbml0b3Jpbmcvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tb25pdG9yaW5nL21vbml0b3Jpbmd4bWwvaW1wbC9CbG9ja2luZ1RpbWVJbXBsLmphdmEKQEAgLTEwLDcgKzEwLDcgQEAKIC0tIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgIC0tCiAtLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlICAtLQogLS0gdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCAgICAgLS0KLS0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgKi8gCiBwYWNrYWdlIG9yZy5wb2xhcnN5cy5jaGVzcy5tb25pdG9yaW5nLm1vbml0b3Jpbmd4bWwuaW1wbDsKZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vbml0b3Jpbmcvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tb25pdG9yaW5nL21vbml0b3Jpbmd4bWwvaW1wbC9FeGVjdXRpb25UaW1lSW1wbC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubW9uaXRvcmluZy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL21vbml0b3JpbmcvbW9uaXRvcmluZ3htbC9pbXBsL0V4ZWN1dGlvblRpbWVJbXBsLmphdmEKaW5kZXggMmQwZmZiYi4uZmEzYWQ3NSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubW9uaXRvcmluZy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL21vbml0b3JpbmcvbW9uaXRvcmluZ3htbC9pbXBsL0V4ZWN1dGlvblRpbWVJbXBsLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubW9uaXRvcmluZy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL21vbml0b3JpbmcvbW9uaXRvcmluZ3htbC9pbXBsL0V4ZWN1dGlvblRpbWVJbXBsLmphdmEKQEAgLTEwLDcgKzEwLDcgQEAKIC0tIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgIC0tCiAtLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlICAtLQogLS0gdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCAgICAgLS0KLS0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgKi8gCiBwYWNrYWdlIG9yZy5wb2xhcnN5cy5jaGVzcy5tb25pdG9yaW5nLm1vbml0b3Jpbmd4bWwuaW1wbDsKZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vbml0b3Jpbmcvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tb25pdG9yaW5nL21vbml0b3Jpbmd4bWwvaW1wbC9NZWFzdXJlZFZhbHVlSW1wbC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubW9uaXRvcmluZy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL21vbml0b3JpbmcvbW9uaXRvcmluZ3htbC9pbXBsL01lYXN1cmVkVmFsdWVJbXBsLmphdmEKaW5kZXggNGU1ZjcyOS4uMGZjYzJkNCAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubW9uaXRvcmluZy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL21vbml0b3JpbmcvbW9uaXRvcmluZ3htbC9pbXBsL01lYXN1cmVkVmFsdWVJbXBsLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubW9uaXRvcmluZy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL21vbml0b3JpbmcvbW9uaXRvcmluZ3htbC9pbXBsL01lYXN1cmVkVmFsdWVJbXBsLmphdmEKQEAgLTksNyArOSw3IEBACiAtLSBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzICAtLQogLS0gYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAgLS0KIC0tIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgICAgIC0tCi0tLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICovIAogcGFja2FnZSBvcmcucG9sYXJzeXMuY2hlc3MubW9uaXRvcmluZy5tb25pdG9yaW5neG1sLmltcGw7CmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tb25pdG9yaW5nL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbW9uaXRvcmluZy9tb25pdG9yaW5neG1sL2ltcGwvTW9uaXRvcmVkUmVzb3VyY2VJbXBsLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tb25pdG9yaW5nL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbW9uaXRvcmluZy9tb25pdG9yaW5neG1sL2ltcGwvTW9uaXRvcmVkUmVzb3VyY2VJbXBsLmphdmEKaW5kZXggMzVkZDUzMC4uYjAxMjU5ZCAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubW9uaXRvcmluZy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL21vbml0b3JpbmcvbW9uaXRvcmluZ3htbC9pbXBsL01vbml0b3JlZFJlc291cmNlSW1wbC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vbml0b3Jpbmcvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tb25pdG9yaW5nL21vbml0b3Jpbmd4bWwvaW1wbC9Nb25pdG9yZWRSZXNvdXJjZUltcGwuamF2YQpAQCAtMTAsNyArMTAsNyBAQAogLS0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAgLS0KIC0tIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgIC0tCiAtLSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0ICAgICAtLQotLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAqLyAKIHBhY2thZ2Ugb3JnLnBvbGFyc3lzLmNoZXNzLm1vbml0b3JpbmcubW9uaXRvcmluZ3htbC5pbXBsOwpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubW9uaXRvcmluZy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL21vbml0b3JpbmcvbW9uaXRvcmluZ3htbC9pbXBsL01vbml0b3JpbmdJbXBsLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tb25pdG9yaW5nL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbW9uaXRvcmluZy9tb25pdG9yaW5neG1sL2ltcGwvTW9uaXRvcmluZ0ltcGwuamF2YQppbmRleCBhNzgxMzJhLi40ZjI5Y2E5IDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tb25pdG9yaW5nL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbW9uaXRvcmluZy9tb25pdG9yaW5neG1sL2ltcGwvTW9uaXRvcmluZ0ltcGwuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tb25pdG9yaW5nL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbW9uaXRvcmluZy9tb25pdG9yaW5neG1sL2ltcGwvTW9uaXRvcmluZ0ltcGwuamF2YQpAQCAtMTAsNyArMTAsNyBAQAogLS0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAgLS0KIC0tIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgIC0tCiAtLSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0ICAgICAtLQotLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAqLyAKIHBhY2thZ2Ugb3JnLnBvbGFyc3lzLmNoZXNzLm1vbml0b3JpbmcubW9uaXRvcmluZ3htbC5pbXBsOwpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubW9uaXRvcmluZy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL21vbml0b3JpbmcvbW9uaXRvcmluZ3htbC9pbXBsL01vbml0b3Jpbmd4bWxGYWN0b3J5SW1wbC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubW9uaXRvcmluZy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL21vbml0b3JpbmcvbW9uaXRvcmluZ3htbC9pbXBsL01vbml0b3Jpbmd4bWxGYWN0b3J5SW1wbC5qYXZhCmluZGV4IDdkMjRjYmYuLjg1YTIxYzEgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vbml0b3Jpbmcvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tb25pdG9yaW5nL21vbml0b3Jpbmd4bWwvaW1wbC9Nb25pdG9yaW5neG1sRmFjdG9yeUltcGwuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tb25pdG9yaW5nL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbW9uaXRvcmluZy9tb25pdG9yaW5neG1sL2ltcGwvTW9uaXRvcmluZ3htbEZhY3RvcnlJbXBsLmphdmEKQEAgLTEwLDcgKzEwLDcgQEAKIC0tIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgIC0tCiAtLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlICAtLQogLS0gdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCAgICAgLS0KLS0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgKi8gCiBwYWNrYWdlIG9yZy5wb2xhcnN5cy5jaGVzcy5tb25pdG9yaW5nLm1vbml0b3Jpbmd4bWwuaW1wbDsKZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vbml0b3Jpbmcvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tb25pdG9yaW5nL21vbml0b3Jpbmd4bWwvaW1wbC9QZXJpb2RJbXBsLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tb25pdG9yaW5nL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbW9uaXRvcmluZy9tb25pdG9yaW5neG1sL2ltcGwvUGVyaW9kSW1wbC5qYXZhCmluZGV4IDJjZmE3NWEuLjVkMWY5ZjUgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vbml0b3Jpbmcvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tb25pdG9yaW5nL21vbml0b3Jpbmd4bWwvaW1wbC9QZXJpb2RJbXBsLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubW9uaXRvcmluZy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL21vbml0b3JpbmcvbW9uaXRvcmluZ3htbC9pbXBsL1BlcmlvZEltcGwuamF2YQpAQCAtMTAsNyArMTAsNyBAQAogLS0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAgLS0KIC0tIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgIC0tCiAtLSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0ICAgICAtLQotLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAqLyAKIHBhY2thZ2Ugb3JnLnBvbGFyc3lzLmNoZXNzLm1vbml0b3JpbmcubW9uaXRvcmluZ3htbC5pbXBsOwpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubW9uaXRvcmluZy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL21vbml0b3JpbmcvbW9uaXRvcmluZ3htbC9pbXBsL1Jlc291cmNlSW1wbC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubW9uaXRvcmluZy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL21vbml0b3JpbmcvbW9uaXRvcmluZ3htbC9pbXBsL1Jlc291cmNlSW1wbC5qYXZhCmluZGV4IGUwY2ViNTQuLmZlMjZiZWIgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vbml0b3Jpbmcvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tb25pdG9yaW5nL21vbml0b3Jpbmd4bWwvaW1wbC9SZXNvdXJjZUltcGwuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tb25pdG9yaW5nL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbW9uaXRvcmluZy9tb25pdG9yaW5neG1sL2ltcGwvUmVzb3VyY2VJbXBsLmphdmEKQEAgLTEwLDcgKzEwLDcgQEAKIC0tIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgIC0tCiAtLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlICAtLQogLS0gdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCAgICAgLS0KLS0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgKi8gCiBwYWNrYWdlIG9yZy5wb2xhcnN5cy5jaGVzcy5tb25pdG9yaW5nLm1vbml0b3Jpbmd4bWwuaW1wbDsKZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vbml0b3Jpbmcvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tb25pdG9yaW5nL21vbml0b3Jpbmd4bWwvaW1wbC9SZXNwb25zZVRpbWVJbXBsLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tb25pdG9yaW5nL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbW9uaXRvcmluZy9tb25pdG9yaW5neG1sL2ltcGwvUmVzcG9uc2VUaW1lSW1wbC5qYXZhCmluZGV4IDNkMmYwZjEuLmE5YTJmMTYgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vbml0b3Jpbmcvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tb25pdG9yaW5nL21vbml0b3Jpbmd4bWwvaW1wbC9SZXNwb25zZVRpbWVJbXBsLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubW9uaXRvcmluZy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL21vbml0b3JpbmcvbW9uaXRvcmluZ3htbC9pbXBsL1Jlc3BvbnNlVGltZUltcGwuamF2YQpAQCAtMTAsNyArMTAsNyBAQAogLS0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAgLS0KIC0tIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgIC0tCiAtLSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0ICAgICAtLQotLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAqLyAKIHBhY2thZ2Ugb3JnLnBvbGFyc3lzLmNoZXNzLm1vbml0b3JpbmcubW9uaXRvcmluZ3htbC5pbXBsOwpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubW9uaXRvcmluZy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL21vbml0b3JpbmcvbW9uaXRvcmluZ3htbC9pbXBsL1RocmVhZEltcGwuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vbml0b3Jpbmcvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tb25pdG9yaW5nL21vbml0b3Jpbmd4bWwvaW1wbC9UaHJlYWRJbXBsLmphdmEKaW5kZXggMDhjNWUwNy4uMzFhNWFjNSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubW9uaXRvcmluZy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL21vbml0b3JpbmcvbW9uaXRvcmluZ3htbC9pbXBsL1RocmVhZEltcGwuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tb25pdG9yaW5nL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbW9uaXRvcmluZy9tb25pdG9yaW5neG1sL2ltcGwvVGhyZWFkSW1wbC5qYXZhCkBAIC0xMCw3ICsxMCw3IEBACiAtLSBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzICAtLQogLS0gYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAgLS0KIC0tIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgICAgIC0tCi0tLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICovIAogcGFja2FnZSBvcmcucG9sYXJzeXMuY2hlc3MubW9uaXRvcmluZy5tb25pdG9yaW5neG1sLmltcGw7CmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tb25pdG9yaW5nL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbW9uaXRvcmluZy9tb25pdG9yaW5neG1sL3BvcHVwL2FjdGlvbnMvSW1wb3J0TG9nSGFuZGxlci5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubW9uaXRvcmluZy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL21vbml0b3JpbmcvbW9uaXRvcmluZ3htbC9wb3B1cC9hY3Rpb25zL0ltcG9ydExvZ0hhbmRsZXIuamF2YQppbmRleCBmM2E2OGViLi5mY2UzYzk4IDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tb25pdG9yaW5nL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbW9uaXRvcmluZy9tb25pdG9yaW5neG1sL3BvcHVwL2FjdGlvbnMvSW1wb3J0TG9nSGFuZGxlci5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vbml0b3Jpbmcvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tb25pdG9yaW5nL21vbml0b3Jpbmd4bWwvcG9wdXAvYWN0aW9ucy9JbXBvcnRMb2dIYW5kbGVyLmphdmEKQEAgLTksNyArOSw3IEBACiAtLSBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzICAtLQ0KIC0tIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgIC0tDQogLS0gdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCAgICAgLS0NCi0tLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQ0KKy0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tDQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgICovIA0KIA0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vbml0b3Jpbmcvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tb25pdG9yaW5nL21vbml0b3Jpbmd4bWwvcG9wdXAvYWN0aW9ucy9MYXVuY2hCYWNrcHJvcGFnYXRpb24uamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vbml0b3Jpbmcvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tb25pdG9yaW5nL21vbml0b3Jpbmd4bWwvcG9wdXAvYWN0aW9ucy9MYXVuY2hCYWNrcHJvcGFnYXRpb24uamF2YQppbmRleCBkOGFhNWFhLi43YTc4ZDBlIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tb25pdG9yaW5nL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbW9uaXRvcmluZy9tb25pdG9yaW5neG1sL3BvcHVwL2FjdGlvbnMvTGF1bmNoQmFja3Byb3BhZ2F0aW9uLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubW9uaXRvcmluZy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL21vbml0b3JpbmcvbW9uaXRvcmluZ3htbC9wb3B1cC9hY3Rpb25zL0xhdW5jaEJhY2twcm9wYWdhdGlvbi5qYXZhCkBAIC0xMCw3ICsxMCw3IEBACiAtLSBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzICAtLQogLS0gYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAgLS0KIC0tIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgICAgIC0tCi0tLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICovIAogCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tb25pdG9yaW5nL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbW9uaXRvcmluZy9tb25pdG9yaW5neG1sL3BvcHVwL2FjdGlvbnMvTGF1bmNoVHJhY2VBbmFseXNpcy5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubW9uaXRvcmluZy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL21vbml0b3JpbmcvbW9uaXRvcmluZ3htbC9wb3B1cC9hY3Rpb25zL0xhdW5jaFRyYWNlQW5hbHlzaXMuamF2YQppbmRleCBiMWMyMjY5Li42MGEyMjczIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tb25pdG9yaW5nL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbW9uaXRvcmluZy9tb25pdG9yaW5neG1sL3BvcHVwL2FjdGlvbnMvTGF1bmNoVHJhY2VBbmFseXNpcy5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vbml0b3Jpbmcvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tb25pdG9yaW5nL21vbml0b3Jpbmd4bWwvcG9wdXAvYWN0aW9ucy9MYXVuY2hUcmFjZUFuYWx5c2lzLmphdmEKQEAgLTksNyArOSw3IEBACiAtLSBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzICAtLQogLS0gYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAgLS0KIC0tIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgICAgIC0tCi0tLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICovIAogCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tb25pdG9yaW5nL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbW9uaXRvcmluZy9tb25pdG9yaW5neG1sL3V0aWwvTW9uaXRvcmluZ3htbEFkYXB0ZXJGYWN0b3J5LmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tb25pdG9yaW5nL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbW9uaXRvcmluZy9tb25pdG9yaW5neG1sL3V0aWwvTW9uaXRvcmluZ3htbEFkYXB0ZXJGYWN0b3J5LmphdmEKaW5kZXggMGQ3MTViNC4uMjU0YmNhOSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubW9uaXRvcmluZy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL21vbml0b3JpbmcvbW9uaXRvcmluZ3htbC91dGlsL01vbml0b3Jpbmd4bWxBZGFwdGVyRmFjdG9yeS5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vbml0b3Jpbmcvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tb25pdG9yaW5nL21vbml0b3Jpbmd4bWwvdXRpbC9Nb25pdG9yaW5neG1sQWRhcHRlckZhY3RvcnkuamF2YQpAQCAtOSw3ICs5LDcgQEAKIC0tIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgIC0tCiAtLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlICAtLQogLS0gdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCAgICAgLS0KLS0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgKi8gCiBwYWNrYWdlIG9yZy5wb2xhcnN5cy5jaGVzcy5tb25pdG9yaW5nLm1vbml0b3Jpbmd4bWwudXRpbDsKZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vbml0b3Jpbmcvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tb25pdG9yaW5nL21vbml0b3Jpbmd4bWwvdXRpbC9Nb25pdG9yaW5neG1sUmVzb3VyY2VGYWN0b3J5SW1wbC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubW9uaXRvcmluZy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL21vbml0b3JpbmcvbW9uaXRvcmluZ3htbC91dGlsL01vbml0b3Jpbmd4bWxSZXNvdXJjZUZhY3RvcnlJbXBsLmphdmEKaW5kZXggYjgyNTZjYS4uZjE1MDk1MCAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubW9uaXRvcmluZy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL21vbml0b3JpbmcvbW9uaXRvcmluZ3htbC91dGlsL01vbml0b3Jpbmd4bWxSZXNvdXJjZUZhY3RvcnlJbXBsLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubW9uaXRvcmluZy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL21vbml0b3JpbmcvbW9uaXRvcmluZ3htbC91dGlsL01vbml0b3Jpbmd4bWxSZXNvdXJjZUZhY3RvcnlJbXBsLmphdmEKQEAgLTgsNyArOCw3IEBACiAgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwogICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UKICAqICB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAvKioKICAqLwpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubW9uaXRvcmluZy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL21vbml0b3JpbmcvbW9uaXRvcmluZ3htbC91dGlsL01vbml0b3Jpbmd4bWxSZXNvdXJjZUltcGwuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vbml0b3Jpbmcvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tb25pdG9yaW5nL21vbml0b3Jpbmd4bWwvdXRpbC9Nb25pdG9yaW5neG1sUmVzb3VyY2VJbXBsLmphdmEKaW5kZXggNTYwMmI0Ny4uNWM0ZWY1YyAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubW9uaXRvcmluZy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL21vbml0b3JpbmcvbW9uaXRvcmluZ3htbC91dGlsL01vbml0b3Jpbmd4bWxSZXNvdXJjZUltcGwuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tb25pdG9yaW5nL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbW9uaXRvcmluZy9tb25pdG9yaW5neG1sL3V0aWwvTW9uaXRvcmluZ3htbFJlc291cmNlSW1wbC5qYXZhCkBAIC04LDcgKzgsNyBAQAogICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKICAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlCiAgKiAgdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiBwYWNrYWdlIG9yZy5wb2xhcnN5cy5jaGVzcy5tb25pdG9yaW5nLm1vbml0b3Jpbmd4bWwudXRpbDsKZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vbml0b3Jpbmcvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tb25pdG9yaW5nL21vbml0b3Jpbmd4bWwvdXRpbC9Nb25pdG9yaW5neG1sU3dpdGNoLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tb25pdG9yaW5nL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbW9uaXRvcmluZy9tb25pdG9yaW5neG1sL3V0aWwvTW9uaXRvcmluZ3htbFN3aXRjaC5qYXZhCmluZGV4IGY4MjVjMGMuLmRlZWNjZmQgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vbml0b3Jpbmcvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tb25pdG9yaW5nL21vbml0b3Jpbmd4bWwvdXRpbC9Nb25pdG9yaW5neG1sU3dpdGNoLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubW9uaXRvcmluZy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL21vbml0b3JpbmcvbW9uaXRvcmluZ3htbC91dGlsL01vbml0b3Jpbmd4bWxTd2l0Y2guamF2YQpAQCAtOCw3ICs4LDcgQEAKICAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCiAgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZQogICogIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIHBhY2thZ2Ugb3JnLnBvbGFyc3lzLmNoZXNzLm1vbml0b3JpbmcubW9uaXRvcmluZ3htbC51dGlsOwogCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tb25pdG9yaW5nL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbW9uaXRvcmluZy9wcmVmZXJlbmNlcy9Nb25pdG9yaW5nUHJlZmVyZW5jZVBhZ2UuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vbml0b3Jpbmcvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tb25pdG9yaW5nL3ByZWZlcmVuY2VzL01vbml0b3JpbmdQcmVmZXJlbmNlUGFnZS5qYXZhCmluZGV4IGQ1NWNkMzkuLjAyMTYwYTEgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vbml0b3Jpbmcvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tb25pdG9yaW5nL3ByZWZlcmVuY2VzL01vbml0b3JpbmdQcmVmZXJlbmNlUGFnZS5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vbml0b3Jpbmcvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tb25pdG9yaW5nL3ByZWZlcmVuY2VzL01vbml0b3JpbmdQcmVmZXJlbmNlUGFnZS5qYXZhCkBAIC05LDcgKzksNyBAQAogLS0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAgLS0KIC0tIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgIC0tCiAtLSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0ICAgICAtLQotLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAqLyAKIApkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubW9uaXRvcmluZy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL21vbml0b3JpbmcvcHJlZmVyZW5jZXMvUHJlZmVyZW5jZUNvbnN0YW50cy5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubW9uaXRvcmluZy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL21vbml0b3JpbmcvcHJlZmVyZW5jZXMvUHJlZmVyZW5jZUNvbnN0YW50cy5qYXZhCmluZGV4IGQyMTBkMTMuLjdiOGNjMDEgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vbml0b3Jpbmcvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tb25pdG9yaW5nL3ByZWZlcmVuY2VzL1ByZWZlcmVuY2VDb25zdGFudHMuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tb25pdG9yaW5nL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbW9uaXRvcmluZy9wcmVmZXJlbmNlcy9QcmVmZXJlbmNlQ29uc3RhbnRzLmphdmEKQEAgLTksNyArOSw3IEBACiAtLSBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzICAtLQogLS0gYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAgLS0KIC0tIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgICAgIC0tCi0tLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICovIAogCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tb25pdG9yaW5nL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbW9uaXRvcmluZy9wcmVmZXJlbmNlcy9QcmVmZXJlbmNlSW5pdGlhbGl6ZXIuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vbml0b3Jpbmcvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tb25pdG9yaW5nL3ByZWZlcmVuY2VzL1ByZWZlcmVuY2VJbml0aWFsaXplci5qYXZhCmluZGV4IGY5YWVmODMuLjE3ODIwYTggMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vbml0b3Jpbmcvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tb25pdG9yaW5nL3ByZWZlcmVuY2VzL1ByZWZlcmVuY2VJbml0aWFsaXplci5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vbml0b3Jpbmcvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tb25pdG9yaW5nL3ByZWZlcmVuY2VzL1ByZWZlcmVuY2VJbml0aWFsaXplci5qYXZhCkBAIC05LDcgKzksNyBAQAogLS0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAgLS0KIC0tIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgIC0tCiAtLSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0ICAgICAtLQotLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAqLyAKIApkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubW9uaXRvcmluZy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL21vbml0b3JpbmcvdHJhY2VhbmFseXNlci9FdmVudC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubW9uaXRvcmluZy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL21vbml0b3JpbmcvdHJhY2VhbmFseXNlci9FdmVudC5qYXZhCmluZGV4IDUxYThmNTkuLjkzOGVmZGYgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vbml0b3Jpbmcvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tb25pdG9yaW5nL3RyYWNlYW5hbHlzZXIvRXZlbnQuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tb25pdG9yaW5nL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbW9uaXRvcmluZy90cmFjZWFuYWx5c2VyL0V2ZW50LmphdmEKQEAgLTgsNyArOCw3IEBACiAgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwogICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UKICAqICB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIHBhY2thZ2Ugb3JnLnBvbGFyc3lzLmNoZXNzLm1vbml0b3JpbmcudHJhY2VhbmFseXNlcjsKZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vbml0b3Jpbmcvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tb25pdG9yaW5nL3RyYWNlYW5hbHlzZXIvRXZlbnRUeXBlLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tb25pdG9yaW5nL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbW9uaXRvcmluZy90cmFjZWFuYWx5c2VyL0V2ZW50VHlwZS5qYXZhCmluZGV4IDVhYWY1NmMuLjk1MmUyZDEgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vbml0b3Jpbmcvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tb25pdG9yaW5nL3RyYWNlYW5hbHlzZXIvRXZlbnRUeXBlLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubW9uaXRvcmluZy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL21vbml0b3JpbmcvdHJhY2VhbmFseXNlci9FdmVudFR5cGUuamF2YQpAQCAtOCw3ICs4LDcgQEAKICAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCiAgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZQogICogIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogcGFja2FnZSBvcmcucG9sYXJzeXMuY2hlc3MubW9uaXRvcmluZy50cmFjZWFuYWx5c2VyOwpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubW9uaXRvcmluZy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL21vbml0b3JpbmcvdHJhY2VhbmFseXNlci9QYXJhbWV0ZXJzLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tb25pdG9yaW5nL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbW9uaXRvcmluZy90cmFjZWFuYWx5c2VyL1BhcmFtZXRlcnMuamF2YQppbmRleCAxZjI1YTkzLi5lNzA2YTI3IDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tb25pdG9yaW5nL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbW9uaXRvcmluZy90cmFjZWFuYWx5c2VyL1BhcmFtZXRlcnMuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tb25pdG9yaW5nL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbW9uaXRvcmluZy90cmFjZWFuYWx5c2VyL1BhcmFtZXRlcnMuamF2YQpAQCAtOCw3ICs4LDcgQEAKICAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCiAgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZQogICogIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogcGFja2FnZSBvcmcucG9sYXJzeXMuY2hlc3MubW9uaXRvcmluZy50cmFjZWFuYWx5c2VyOwpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubW9uaXRvcmluZy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL21vbml0b3JpbmcvdHJhY2VhbmFseXNlci9UaHJlYWRFdmVudHMuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vbml0b3Jpbmcvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tb25pdG9yaW5nL3RyYWNlYW5hbHlzZXIvVGhyZWFkRXZlbnRzLmphdmEKaW5kZXggYzk0NjE4Yy4uNWY3MjNiOSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubW9uaXRvcmluZy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL21vbml0b3JpbmcvdHJhY2VhbmFseXNlci9UaHJlYWRFdmVudHMuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tb25pdG9yaW5nL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbW9uaXRvcmluZy90cmFjZWFuYWx5c2VyL1RocmVhZEV2ZW50cy5qYXZhCkBAIC04LDcgKzgsNyBAQAogICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKICAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlCiAgKiAgdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiBwYWNrYWdlIG9yZy5wb2xhcnN5cy5jaGVzcy5tb25pdG9yaW5nLnRyYWNlYW5hbHlzZXI7CmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tb25pdG9yaW5nL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbW9uaXRvcmluZy90cmFjZWFuYWx5c2VyL1RyYWNlQW5hbHlzZXIuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vbml0b3Jpbmcvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tb25pdG9yaW5nL3RyYWNlYW5hbHlzZXIvVHJhY2VBbmFseXNlci5qYXZhCmluZGV4IGE2MTFmMWEuLmY1MmEwOWEgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vbml0b3Jpbmcvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tb25pdG9yaW5nL3RyYWNlYW5hbHlzZXIvVHJhY2VBbmFseXNlci5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vbml0b3Jpbmcvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tb25pdG9yaW5nL3RyYWNlYW5hbHlzZXIvVHJhY2VBbmFseXNlci5qYXZhCkBAIC04LDcgKzgsNyBAQAogICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKICAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlCiAgKiAgdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiBwYWNrYWdlIG9yZy5wb2xhcnN5cy5jaGVzcy5tb25pdG9yaW5nLnRyYWNlYW5hbHlzZXI7CmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tb25pdG9yaW5nL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbW9uaXRvcmluZy90cmFjZWFuYWx5c2VyL1RyYWNlUmVhZGVyLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tb25pdG9yaW5nL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbW9uaXRvcmluZy90cmFjZWFuYWx5c2VyL1RyYWNlUmVhZGVyLmphdmEKaW5kZXggNzBlODVhNS4uZTgxMzA0NyAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubW9uaXRvcmluZy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL21vbml0b3JpbmcvdHJhY2VhbmFseXNlci9UcmFjZVJlYWRlci5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vbml0b3Jpbmcvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tb25pdG9yaW5nL3RyYWNlYW5hbHlzZXIvVHJhY2VSZWFkZXIuamF2YQpAQCAtOCw3ICs4LDcgQEAKICAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCiAgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZQogICogIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogcGFja2FnZSBvcmcucG9sYXJzeXMuY2hlc3MubW9uaXRvcmluZy50cmFjZWFuYWx5c2VyOwpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubW9uaXRvcmluZy90cmFuc2Zvcm1zL0NvbW1vblV0aWxpdGllcy5xdnRvIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubW9uaXRvcmluZy90cmFuc2Zvcm1zL0NvbW1vblV0aWxpdGllcy5xdnRvCmluZGV4IGNlMWQ3NGQuLmQ0MmUyZTQgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vbml0b3JpbmcvdHJhbnNmb3Jtcy9Db21tb25VdGlsaXRpZXMucXZ0bworKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tb25pdG9yaW5nL3RyYW5zZm9ybXMvQ29tbW9uVXRpbGl0aWVzLnF2dG8KQEAgLTgsNyArOCw3IEBACiAgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwogICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UKICAqICB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIG1vZGVsdHlwZSBjaGVzcyB1c2VzICdodHRwOi8vQ0hFU1MnOwpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubW9uaXRvcmluZy90cmFuc2Zvcm1zL01vbml0b3JpbmdYTUwyQ2hlc3MucXZ0byBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm1vbml0b3JpbmcvdHJhbnNmb3Jtcy9Nb25pdG9yaW5nWE1MMkNoZXNzLnF2dG8KaW5kZXggZmUxM2ViYi4uZTU1YTFjMyAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubW9uaXRvcmluZy90cmFuc2Zvcm1zL01vbml0b3JpbmdYTUwyQ2hlc3MucXZ0bworKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tb25pdG9yaW5nL3RyYW5zZm9ybXMvTW9uaXRvcmluZ1hNTDJDaGVzcy5xdnRvCkBAIC03LDcgKzcsNyBAQAogICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKICAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlCiAgKiAgdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiBpbXBvcnQgQ29tbW9uVXRpbGl0aWVzOwpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlL2Fib3V0Lmh0bWwgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tdWx0aWNvcmUvYWJvdXQuaHRtbAppbmRleCBkZDNjMDg5Li4xNjRmNzgxIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tdWx0aWNvcmUvYWJvdXQuaHRtbAorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tdWx0aWNvcmUvYWJvdXQuaHRtbApAQCAtMiwyNyArMiwzNSBAQAogICAgICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS1zdHJpY3QuZHRkIj4KIDxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KIDxoZWFkPgotPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMSIvPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMSIgLz4KIDx0aXRsZT5BYm91dDwvdGl0bGU+CiA8L2hlYWQ+CiA8Ym9keSBsYW5nPSJFTi1VUyI+Ci08aDI+QWJvdXQgVGhpcyBDb250ZW50PC9oMj4KLSAKLTxwPk5vdmVtYmVyIDE0LCAyMDA4PC9wPgkKLTxoMz5MaWNlbnNlPC9oMz4KKwk8aDI+QWJvdXQgVGhpcyBDb250ZW50PC9oMj4KIAotPHA+VGhlIEVjbGlwc2UgRm91bmRhdGlvbiBtYWtlcyBhdmFpbGFibGUgYWxsIGNvbnRlbnQgaW4gdGhpcyBwbHVnLWluICgmcXVvdDtDb250ZW50JnF1b3Q7KS4gIFVubGVzcyBvdGhlcndpc2UgCi1pbmRpY2F0ZWQgYmVsb3csIHRoZSBDb250ZW50IGlzIHByb3ZpZGVkIHRvIHlvdSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlCi1FY2xpcHNlIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMS4wICgmcXVvdDtFUEwmcXVvdDspLiAgQSBjb3B5IG9mIHRoZSBFUEwgaXMgYXZhaWxhYmxlIAotYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwiPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sPC9hPi4KLUZvciBwdXJwb3NlcyBvZiB0aGUgRVBMLCAmcXVvdDtQcm9ncmFtJnF1b3Q7IHdpbGwgbWVhbiB0aGUgQ29udGVudC48L3A+CisJPHA+Tm92ZW1iZXIgMzAsIDIwMTc8L3A+CisJPGgzPkxpY2Vuc2U8L2gzPgogCi08cD5JZiB5b3UgZGlkIG5vdCByZWNlaXZlIHRoaXMgQ29udGVudCBkaXJlY3RseSBmcm9tIHRoZSBFY2xpcHNlIEZvdW5kYXRpb24sIHRoZSBDb250ZW50IGlzIAotYmVpbmcgcmVkaXN0cmlidXRlZCBieSBhbm90aGVyIHBhcnR5ICgmcXVvdDtSZWRpc3RyaWJ1dG9yJnF1b3Q7KSBhbmQgZGlmZmVyZW50IHRlcm1zIGFuZCBjb25kaXRpb25zIG1heQotYXBwbHkgdG8geW91ciB1c2Ugb2YgYW55IG9iamVjdCBjb2RlIGluIHRoZSBDb250ZW50LiAgQ2hlY2sgdGhlIFJlZGlzdHJpYnV0b3IncyBsaWNlbnNlIHRoYXQgd2FzIAotcHJvdmlkZWQgd2l0aCB0aGUgQ29udGVudC4gIElmIG5vIHN1Y2ggbGljZW5zZSBleGlzdHMsIGNvbnRhY3QgdGhlIFJlZGlzdHJpYnV0b3IuICBVbmxlc3Mgb3RoZXJ3aXNlCi1pbmRpY2F0ZWQgYmVsb3csIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRVBMIHN0aWxsIGFwcGx5IHRvIGFueSBzb3VyY2UgY29kZSBpbiB0aGUgQ29udGVudAotYW5kIHN1Y2ggc291cmNlIGNvZGUgbWF5IGJlIG9idGFpbmVkIGF0IDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmciPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmc8L2E+LjwvcD4KKwk8cD4KKwkJVGhlIEVjbGlwc2UgRm91bmRhdGlvbiBtYWtlcyBhdmFpbGFibGUgYWxsIGNvbnRlbnQgaW4gdGhpcyBwbHVnLWluCisJCSgmcXVvdDtDb250ZW50JnF1b3Q7KS4gVW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQgYmVsb3csIHRoZSBDb250ZW50CisJCWlzIHByb3ZpZGVkIHRvIHlvdSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVjbGlwc2UKKwkJUHVibGljIExpY2Vuc2UgVmVyc2lvbiAyLjAgKCZxdW90O0VQTCZxdW90OykuIEEgY29weSBvZiB0aGUgRVBMIGlzCisJCWF2YWlsYWJsZSBhdCA8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAiPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMDwvYT4uCisJCUZvciBwdXJwb3NlcyBvZiB0aGUgRVBMLCAmcXVvdDtQcm9ncmFtJnF1b3Q7IHdpbGwgbWVhbiB0aGUgQ29udGVudC4KKwk8L3A+CisKKwk8cD4KKwkJSWYgeW91IGRpZCBub3QgcmVjZWl2ZSB0aGlzIENvbnRlbnQgZGlyZWN0bHkgZnJvbSB0aGUgRWNsaXBzZQorCQlGb3VuZGF0aW9uLCB0aGUgQ29udGVudCBpcyBiZWluZyByZWRpc3RyaWJ1dGVkIGJ5IGFub3RoZXIgcGFydHkKKwkJKCZxdW90O1JlZGlzdHJpYnV0b3ImcXVvdDspIGFuZCBkaWZmZXJlbnQgdGVybXMgYW5kIGNvbmRpdGlvbnMgbWF5CisJCWFwcGx5IHRvIHlvdXIgdXNlIG9mIGFueSBvYmplY3QgY29kZSBpbiB0aGUgQ29udGVudC4gQ2hlY2sgdGhlCisJCVJlZGlzdHJpYnV0b3IncyBsaWNlbnNlIHRoYXQgd2FzIHByb3ZpZGVkIHdpdGggdGhlIENvbnRlbnQuIElmIG5vIHN1Y2gKKwkJbGljZW5zZSBleGlzdHMsIGNvbnRhY3QgdGhlIFJlZGlzdHJpYnV0b3IuIFVubGVzcyBvdGhlcndpc2UgaW5kaWNhdGVkCisJCWJlbG93LCB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVQTCBzdGlsbCBhcHBseSB0byBhbnkgc291cmNlCisJCWNvZGUgaW4gdGhlIENvbnRlbnQgYW5kIHN1Y2ggc291cmNlIGNvZGUgbWF5IGJlIG9idGFpbmVkIGF0IDxhCisJCQlocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnLyI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZzwvYT4uCisJPC9wPgogCiA8L2JvZHk+CiA8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbXVsdGljb3JlL0FjdGl2YXRvci5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbXVsdGljb3JlL0FjdGl2YXRvci5qYXZhCmluZGV4IDA2ZTU1ZDcuLjlhNmJhZDggMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm11bHRpY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL211bHRpY29yZS9BY3RpdmF0b3IuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tdWx0aWNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tdWx0aWNvcmUvQWN0aXZhdG9yLmphdmEKQEAgLTEsNjkgKzEsNzYgQEAKLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gIC0KLSAgLSBDb3B5cmlnaHQgKGMpIDIwMTUtMjAxNiBVbml2ZXJzaXR5IG9mIFBhZG92YSwgSVRBTFkgLSAgSW50ZWNzIFNwQSAKLSAgLSBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gIC0gYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gIC0gd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAgLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICAtCi0gIC0gQ29udHJpYnV0b3JzOgotICAtCi0gIC0gQWxlc3NhbmRybyBab3ZpIGF6b3ZpQG1hdGgudW5pcGQuaXQKLSAgLSBTdGVmYW5vIFB1cmkgc3RlZmFuby5wdXJpQGludGVjcy5pdAotICAtIExhdXJhIEJhcmFjY2hpIGxhdXJhLmJhcmFjY2hpQGludGVjcy5pdAotICAtIE5pY2hvbGFzIFBhY2luaSBuaWNob2xhcy5wYWNpbmlAaW50ZWNzLml0ICAKLSAgLQotICAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbiBhbmQvb3IgaW5pdGlhbCBkb2N1bWVudGF0aW9uCi0gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi1wYWNrYWdlIG9yZy5wb2xhcnN5cy5jaGVzcy5tdWx0aWNvcmU7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS51aS5wbHVnaW4uQWJzdHJhY3RVSVBsdWdpbjsKLWltcG9ydCBvcmcub3NnaS5mcmFtZXdvcmsuQnVuZGxlQ29udGV4dDsKLQotLyoqCi0gKiBUaGUgYWN0aXZhdG9yIGNsYXNzIGNvbnRyb2xzIHRoZSBwbHVnLWluIGxpZmUgY3ljbGUuCi0gKi8KLXB1YmxpYyBjbGFzcyBBY3RpdmF0b3IgZXh0ZW5kcyBBYnN0cmFjdFVJUGx1Z2luIHsKLQotCS8qKiBUaGUgQ29uc3RhbnQgUExVR0lOX0lELiAqLwotCS8vIFRoZSBwbHVnLWluIElECi0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUExVR0lOX0lEID0gIm9yZy5wb2xhcnN5cy5jaGVzcy5tdWx0aWNvcmUiOyAvLyROT04tTkxTLTEkCi0KLQkvKiogVGhlIHBsdWdpbi4gKi8KLQkvLyBUaGUgc2hhcmVkIGluc3RhbmNlCi0JcHJpdmF0ZSBzdGF0aWMgQWN0aXZhdG9yIHBsdWdpbjsKLQkKLQkvKioKLQkgKiBUaGUgY29uc3RydWN0b3IuCi0JICovCi0JcHVibGljIEFjdGl2YXRvcigpIHsKLQl9Ci0KLQkvKgotCSAqIChub24tSmF2YWRvYykKLQkgKiBAc2VlIG9yZy5lY2xpcHNlLnVpLnBsdWdpbi5BYnN0cmFjdFVJUGx1Z2luI3N0YXJ0KG9yZy5vc2dpLmZyYW1ld29yay5CdW5kbGVDb250ZXh0KQotCSAqLwotCXB1YmxpYyB2b2lkIHN0YXJ0KEJ1bmRsZUNvbnRleHQgY29udGV4dCkgdGhyb3dzIEV4Y2VwdGlvbiB7Ci0JCXN1cGVyLnN0YXJ0KGNvbnRleHQpOwotCQlwbHVnaW4gPSB0aGlzOwotCX0KLQotCS8qCi0JICogKG5vbi1KYXZhZG9jKQotCSAqIEBzZWUgb3JnLmVjbGlwc2UudWkucGx1Z2luLkFic3RyYWN0VUlQbHVnaW4jc3RvcChvcmcub3NnaS5mcmFtZXdvcmsuQnVuZGxlQ29udGV4dCkKLQkgKi8KLQlwdWJsaWMgdm9pZCBzdG9wKEJ1bmRsZUNvbnRleHQgY29udGV4dCkgdGhyb3dzIEV4Y2VwdGlvbiB7Ci0JCXBsdWdpbiA9IG51bGw7Ci0JCXN1cGVyLnN0b3AoY29udGV4dCk7Ci0JfQotCi0JLyoqCi0JICogUmV0dXJucyB0aGUgc2hhcmVkIGluc3RhbmNlLgotCSAqCi0JICogQHJldHVybiB0aGUgc2hhcmVkIGluc3RhbmNlCi0JICovCi0JcHVibGljIHN0YXRpYyBBY3RpdmF0b3IgZ2V0RGVmYXVsdCgpIHsKLQkJcmV0dXJuIHBsdWdpbjsKLQl9Ci0KLX0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICogQ29weXJpZ2h0IChDKSAyMDIwIA0KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCisgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKyAgLQ0KKyAgLSBDb3B5cmlnaHQgKGMpIDIwMTUtMjAxNiBVbml2ZXJzaXR5IG9mIFBhZG92YSwgSVRBTFkgLSAgSW50ZWNzIFNwQSANCisgIC0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAgLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCisgIC0gd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgIC0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCisgIC0NCisgIC0gQ29udHJpYnV0b3JzOg0KKyAgLQ0KKyAgLSBBbGVzc2FuZHJvIFpvdmkgYXpvdmlAbWF0aC51bmlwZC5pdA0KKyAgLSBTdGVmYW5vIFB1cmkgc3RlZmFuby5wdXJpQGludGVjcy5pdA0KKyAgLSBMYXVyYSBCYXJhY2NoaSBsYXVyYS5iYXJhY2NoaUBpbnRlY3MuaXQNCisgIC0gTmljaG9sYXMgUGFjaW5pIG5pY2hvbGFzLnBhY2luaUBpbnRlY3MuaXQgIA0KKyAgLQ0KKyAgLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24gYW5kL29yIGluaXRpYWwgZG9jdW1lbnRhdGlvbg0KKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCitwYWNrYWdlIG9yZy5wb2xhcnN5cy5jaGVzcy5tdWx0aWNvcmU7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnVpLnBsdWdpbi5BYnN0cmFjdFVJUGx1Z2luOw0KK2ltcG9ydCBvcmcub3NnaS5mcmFtZXdvcmsuQnVuZGxlQ29udGV4dDsNCisNCisvKioNCisgKiBUaGUgYWN0aXZhdG9yIGNsYXNzIGNvbnRyb2xzIHRoZSBwbHVnLWluIGxpZmUgY3ljbGUuDQorICovDQorcHVibGljIGNsYXNzIEFjdGl2YXRvciBleHRlbmRzIEFic3RyYWN0VUlQbHVnaW4gew0KKw0KKwkvKiogVGhlIENvbnN0YW50IFBMVUdJTl9JRC4gKi8NCisJLy8gVGhlIHBsdWctaW4gSUQNCisJcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUExVR0lOX0lEID0gIm9yZy5wb2xhcnN5cy5jaGVzcy5tdWx0aWNvcmUiOyAvLyROT04tTkxTLTEkDQorDQorCS8qKiBUaGUgcGx1Z2luLiAqLw0KKwkvLyBUaGUgc2hhcmVkIGluc3RhbmNlDQorCXByaXZhdGUgc3RhdGljIEFjdGl2YXRvciBwbHVnaW47DQorCQ0KKwkvKioNCisJICogVGhlIGNvbnN0cnVjdG9yLg0KKwkgKi8NCisJcHVibGljIEFjdGl2YXRvcigpIHsNCisJfQ0KKw0KKwkvKg0KKwkgKiAobm9uLUphdmFkb2MpDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UudWkucGx1Z2luLkFic3RyYWN0VUlQbHVnaW4jc3RhcnQob3JnLm9zZ2kuZnJhbWV3b3JrLkJ1bmRsZUNvbnRleHQpDQorCSAqLw0KKwlwdWJsaWMgdm9pZCBzdGFydChCdW5kbGVDb250ZXh0IGNvbnRleHQpIHRocm93cyBFeGNlcHRpb24gew0KKwkJc3VwZXIuc3RhcnQoY29udGV4dCk7DQorCQlwbHVnaW4gPSB0aGlzOw0KKwl9DQorDQorCS8qDQorCSAqIChub24tSmF2YWRvYykNCisJICogQHNlZSBvcmcuZWNsaXBzZS51aS5wbHVnaW4uQWJzdHJhY3RVSVBsdWdpbiNzdG9wKG9yZy5vc2dpLmZyYW1ld29yay5CdW5kbGVDb250ZXh0KQ0KKwkgKi8NCisJcHVibGljIHZvaWQgc3RvcChCdW5kbGVDb250ZXh0IGNvbnRleHQpIHRocm93cyBFeGNlcHRpb24gew0KKwkJcGx1Z2luID0gbnVsbDsNCisJCXN1cGVyLnN0b3AoY29udGV4dCk7DQorCX0NCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIHNoYXJlZCBpbnN0YW5jZS4NCisJICoNCisJICogQHJldHVybiB0aGUgc2hhcmVkIGluc3RhbmNlDQorCSAqLw0KKwlwdWJsaWMgc3RhdGljIEFjdGl2YXRvciBnZXREZWZhdWx0KCkgew0KKwkJcmV0dXJuIHBsdWdpbjsNCisJfQ0KKw0KK30NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tdWx0aWNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tdWx0aWNvcmUvUmVmZXJlbmNlU2VsZWN0b3JOb0RvdWJsZUNsaWNrLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tdWx0aWNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tdWx0aWNvcmUvUmVmZXJlbmNlU2VsZWN0b3JOb0RvdWJsZUNsaWNrLmphdmEKaW5kZXggNmU0OGVlNi4uOWUwNzVjMCAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbXVsdGljb3JlL1JlZmVyZW5jZVNlbGVjdG9yTm9Eb3VibGVDbGljay5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm11bHRpY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL211bHRpY29yZS9SZWZlcmVuY2VTZWxlY3Rvck5vRG91YmxlQ2xpY2suamF2YQpAQCAtMSwyMTUgKzEsMjIyIEBACi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAtCi0gIC0gQ29weXJpZ2h0IChjKSAyMDE1LTIwMTYgVW5pdmVyc2l0eSBvZiBQYWRvdmEsIElUQUxZIC0gIEludGVjcyBTcEEgCi0gIC0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICAtIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICAtIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gIC0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAgLQotICAtIENvbnRyaWJ1dG9yczoKLSAgLQotICAtIEFsZXNzYW5kcm8gWm92aSBhem92aUBtYXRoLnVuaXBkLml0Ci0gIC0gU3RlZmFubyBQdXJpIHN0ZWZhbm8ucHVyaUBpbnRlY3MuaXQKLSAgLSBMYXVyYSBCYXJhY2NoaSBsYXVyYS5iYXJhY2NoaUBpbnRlY3MuaXQKLSAgLSBOaWNob2xhcyBQYWNpbmkgbmljaG9sYXMucGFjaW5pQGludGVjcy5pdCAgCi0gIC0KLSAgLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24gYW5kL29yIGluaXRpYWwgZG9jdW1lbnRhdGlvbgotICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL3BhY2thZ2Ugb3JnLnBvbGFyc3lzLmNoZXNzLm11bHRpY29yZTsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24udXRpbC5FTGlzdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLklUcmVlQ29udGVudFByb3ZpZGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuVHJlZVZpZXdlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLlZpZXdlckZpbHRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLmluZnJhLndpZGdldHMuZWRpdG9ycy5JQ29tbWl0TGlzdGVuZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5pbmZyYS53aWRnZXRzLnByb3ZpZGVycy5FbmNhcHN1bGF0ZWRDb250ZW50UHJvdmlkZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5pbmZyYS53aWRnZXRzLnByb3ZpZGVycy5JR3JhcGhpY2FsQ29udGVudFByb3ZpZGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuaW5mcmEud2lkZ2V0cy5wcm92aWRlcnMuSVN0YXRpY0NvbnRlbnRQcm92aWRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLmluZnJhLndpZGdldHMuc2VsZWN0b3JzLlJlZmVyZW5jZVNlbGVjdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuaW5mcmEud2lkZ2V0cy5zdHJhdGVneS5Qcm92aWRlckJhc2VkQnJvd3NlU3RyYXRlZ3k7Ci1pbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5pbmZyYS53aWRnZXRzLnN0cmF0ZWd5LlN0cmF0ZWd5QmFzZWRDb250ZW50UHJvdmlkZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5pbmZyYS53aWRnZXRzLnN0cmF0ZWd5LlRyZWVCcm93c2VTdHJhdGVneTsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QuU1dUOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5sYXlvdXQuRmlsbExheW91dDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QubGF5b3V0LkdyaWREYXRhOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5sYXlvdXQuR3JpZExheW91dDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5Db21wb3NpdGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudWkuZGlhbG9ncy5QYXR0ZXJuRmlsdGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLkluc3RhbmNlU3BlY2lmaWNhdGlvbjsKLWltcG9ydCBvcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlLm1vZGVsLkNIVGFzazsKLQotCi0vKioKLSAqIEEgY29weSBvZiB0aGUgUmVmZXJlbmNlU2VsZWN0b3IgY2xhc3Mgd2hlcmUgdGhlIHRyZWVWaWV3ZXIgZG9lcyBub3QgaGF2ZQotICogCi0gKiBhbnkgSURvdWJsZUNsaWNrTGlzdGVuZXIgaW5zdGFuY2UuCi0gKgotICogQGF1dGhvciBBbGVzc2FuZHJvIFpvdmkKLSAqLwotcHVibGljIGNsYXNzIFJlZmVyZW5jZVNlbGVjdG9yTm9Eb3VibGVDbGljayBleHRlbmRzIFJlZmVyZW5jZVNlbGVjdG9yIHsKLQkKLQkvKiogVGhlIGluc3Qgc3BlYyBub3QgeWV0IGFzc2lnbmVkIHRvIHBhcnRpdGlvbi4gKi8KLQlwcml2YXRlIEVMaXN0PEluc3RhbmNlU3BlY2lmaWNhdGlvbj4gaW5zdFNwZWNOb3RZZXRBc3NpZ25lZFRvUGFydGl0aW9uOwotCQotCS8qKiBUaGUgdGFzayBub3QgeWV0IGFzc2lnbmVkIHRvIHBhcnRpdGlvbi4gKi8KLQlwcml2YXRlIEVMaXN0PENIVGFzaz4gdGFza05vdFlldEFzc2lnbmVkVG9QYXJ0aXRpb247Ci0JCi0JLyoqCi0JICogSW5zdGFudGlhdGVzIGEgbmV3IHJlZmVyZW5jZSBzZWxlY3RvciBubyBkb3VibGUgY2xpY2suCi0JICoKLQkgKiBAcGFyYW0gdW5pcXVlIHRoZSB1bmlxdWUKLQkgKi8KLQlwdWJsaWMgUmVmZXJlbmNlU2VsZWN0b3JOb0RvdWJsZUNsaWNrKGJvb2xlYW4gdW5pcXVlKSB7Ci0JCXN1cGVyKHVuaXF1ZSk7Ci0JfQotCQotCS8qKgotCSAqIEluc3RhbnRpYXRlcyBhIG5ldyByZWZlcmVuY2Ugc2VsZWN0b3Igbm8gZG91YmxlIGNsaWNrLgotCSAqCi0JICogQHBhcmFtIHVuaXF1ZSB0aGUgdW5pcXVlCi0JICogQHBhcmFtIGluc3RTcGVjTm90WWV0QXNzaWduZWRUb1BhcnRpdGlvbiB0aGUgaW5zdCBzcGVjIG5vdCB5ZXQgYXNzaWduZWQgdG8gcGFydGl0aW9uCi0JICogQHBhcmFtIHRhc2tOb3RZZXRBc3NpZ25lZFRvUGFydGl0aW9uIHRoZSB0YXNrIG5vdCB5ZXQgYXNzaWduZWQgdG8gcGFydGl0aW9uCi0JICovCi0JcHVibGljIFJlZmVyZW5jZVNlbGVjdG9yTm9Eb3VibGVDbGljayhib29sZWFuIHVuaXF1ZSwKLQkJCUVMaXN0PEluc3RhbmNlU3BlY2lmaWNhdGlvbj4gaW5zdFNwZWNOb3RZZXRBc3NpZ25lZFRvUGFydGl0aW9uLAotCQkJRUxpc3Q8Q0hUYXNrPiB0YXNrTm90WWV0QXNzaWduZWRUb1BhcnRpdGlvbikgewotCQlzdXBlcih1bmlxdWUpOwotCQl0aGlzLmluc3RTcGVjTm90WWV0QXNzaWduZWRUb1BhcnRpdGlvbiA9IGluc3RTcGVjTm90WWV0QXNzaWduZWRUb1BhcnRpdGlvbjsKLQkJdGhpcy50YXNrTm90WWV0QXNzaWduZWRUb1BhcnRpdGlvbiA9IHRhc2tOb3RZZXRBc3NpZ25lZFRvUGFydGl0aW9uOwotCX0KLQkKLQkvKioKLQkgKiBSZWZyZXNoZXMgdGhpcyBzZWxlY3RvcidzIHtAbGluayBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5MaXN0fQotCSAqLwotCUBPdmVycmlkZQotCXB1YmxpYyB2b2lkIHJlZnJlc2goKSB7Ci0JCSgoQ3VzdG9tU2VsZWN0aW9uRmlsdGVyZWRCcm93c2VTdHJhdGVneSkgY29udGVudFByb3ZpZGVyLmdldEJyb3dzZVN0cmF0ZWd5KCkpLnJlZnJlc2goKTsKLQkJdHJlZVZpZXdlci5yZWZyZXNoKCk7Ci0JfQotCQotCS8qIChub24tSmF2YWRvYykKLQkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuaW5mcmEud2lkZ2V0cy5zZWxlY3RvcnMuUmVmZXJlbmNlU2VsZWN0b3Ijc2V0Q29udGVudFByb3ZpZGVyKG9yZy5lY2xpcHNlLnBhcHlydXMuaW5mcmEud2lkZ2V0cy5wcm92aWRlcnMuSVN0YXRpY0NvbnRlbnRQcm92aWRlcikKLQkgKi8KLQlAT3ZlcnJpZGUKLQlwdWJsaWMgdm9pZCBzZXRDb250ZW50UHJvdmlkZXIoSVN0YXRpY0NvbnRlbnRQcm92aWRlciBzdGF0aWNDb250ZW50UHJvdmlkZXIpIHsKLQkJSVRyZWVDb250ZW50UHJvdmlkZXIgcHJvdmlkZXIgPSBuZXcgRW5jYXBzdWxhdGVkQ29udGVudFByb3ZpZGVyKHN0YXRpY0NvbnRlbnRQcm92aWRlcik7Ci0KLQkJVHJlZUJyb3dzZVN0cmF0ZWd5IGZpbHRlcmVkQnJvd3NlU3RyYXRlZ3kgPSBuZXcgQ3VzdG9tU2VsZWN0aW9uRmlsdGVyZWRCcm93c2VTdHJhdGVneShwcm92aWRlcik7Ci0KLQkJVHJlZUJyb3dzZVN0cmF0ZWd5IHJldmVhbEJyb3dzZVN0cmF0ZWd5ID0gbmV3IFByb3ZpZGVyQmFzZWRCcm93c2VTdHJhdGVneShwcm92aWRlcik7Ci0KLQkJdGhpcy5jb250ZW50UHJvdmlkZXIgPSBuZXcgU3RyYXRlZ3lCYXNlZENvbnRlbnRQcm92aWRlcihmaWx0ZXJlZEJyb3dzZVN0cmF0ZWd5LCByZXZlYWxCcm93c2VTdHJhdGVneSk7Ci0KLQkJaWYgKHRyZWVWaWV3ZXIgIT0gbnVsbCkgewotCQkJdHJlZVZpZXdlci5zZXRDb250ZW50UHJvdmlkZXIoY29udGVudFByb3ZpZGVyKTsKLQkJCXRyZWVWaWV3ZXIuc2V0SW5wdXQoIiIpOyAvLyROT04tTkxTLTEkCi0JCX0KLQotCQlpZiAoY29udGVudFByb3ZpZGVyIGluc3RhbmNlb2YgSUNvbW1pdExpc3RlbmVyKSB7Ci0JCQljb21taXRMaXN0ZW5lcnMuYWRkKGNvbnRlbnRQcm92aWRlcik7Ci0JCX0KLQl9Ci0JCi0JLyoqCi0JICogVGhlIENsYXNzIEN1c3RvbVNlbGVjdGlvbkZpbHRlcmVkQnJvd3NlU3RyYXRlZ3kuCi0JICovCi0JLyogTEIgMjAxNTA3MDgKLQkgKiBDdXN0b21TZWxlY3Rpb25GaWx0ZXJlZEJyb3dzZVN0cmF0ZWd5IHdhcyBpbnRyb2R1Y2VkIGZvciBtYW5hZ2luZyBjb3JyZWN0bHkgdGhlIAotCSAqIHZpc3VhbGl6YXRpb24gaW4gdGhlIHNlbGVjdG9yIG9mIG9ubHkgSW5zdCBTcGVjcyBvciBUYXNrcyB0aGF0IGFyZSBub3QgCi0JICogYWxyZWFkeSBhc3NpZ25lZCB0byBwYXJ0aXRpb25zIG9yIGNvcmVzIChldmVuIHRoZSBmaXJzdCB0aW1lIHRoZSBwYW5lbCBpcyBvcGVuZWQpCi0JICovCi0JcHJpdmF0ZSBjbGFzcyBDdXN0b21TZWxlY3Rpb25GaWx0ZXJlZEJyb3dzZVN0cmF0ZWd5IGV4dGVuZHMgUHJvdmlkZXJCYXNlZEJyb3dzZVN0cmF0ZWd5IHsKLQotCQkvKioKLQkJICogSW5zdGFudGlhdGVzIGEgbmV3IGN1c3RvbSBzZWxlY3Rpb24gZmlsdGVyZWQgYnJvd3NlIHN0cmF0ZWd5LgotCQkgKgotCQkgKiBAcGFyYW0gcHJvdmlkZXIgdGhlIHByb3ZpZGVyCi0JCSAqLwotCQlwdWJsaWMgQ3VzdG9tU2VsZWN0aW9uRmlsdGVyZWRCcm93c2VTdHJhdGVneShJVHJlZUNvbnRlbnRQcm92aWRlciBwcm92aWRlcikgewotCQkJc3VwZXIocHJvdmlkZXIpOwotCQl9Ci0KLQkJLyogKG5vbi1KYXZhZG9jKQotCQkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuaW5mcmEud2lkZ2V0cy5wcm92aWRlcnMuRW5jYXBzdWxhdGVkQ29udGVudFByb3ZpZGVyI2lzVmFsaWRWYWx1ZShqYXZhLmxhbmcuT2JqZWN0KQotCQkgKi8KLQkJQE92ZXJyaWRlCi0JCXB1YmxpYyBib29sZWFuIGlzVmFsaWRWYWx1ZShPYmplY3QgZWxlbWVudCkgewotCQkJaWYgKCF1bmlxdWUpIHsKLQkJCQlyZXR1cm4gc3VwZXIuaXNWYWxpZFZhbHVlKGVsZW1lbnQpOwotCQkJfQotCi0JCQlpZiAoIXN1cGVyLmlzVmFsaWRWYWx1ZShlbGVtZW50KSkgewotCQkJCXJldHVybiBmYWxzZTsKLQkJCX0KLQkJCQotCQkJaWYoaW5zdFNwZWNOb3RZZXRBc3NpZ25lZFRvUGFydGl0aW9uIT1udWxsICYmICFpbnN0U3BlY05vdFlldEFzc2lnbmVkVG9QYXJ0aXRpb24uY29udGFpbnMoZWxlbWVudCkpewkJCQkJCQkJCi0JCQkJaW5zdFNwZWNOb3RZZXRBc3NpZ25lZFRvUGFydGl0aW9uLmFkZCgoSW5zdGFuY2VTcGVjaWZpY2F0aW9uKSBlbGVtZW50KTsKLQkJCQlzZWxlY3RlZEVsZW1lbnRzLmFkZCgoSW5zdGFuY2VTcGVjaWZpY2F0aW9uKSBlbGVtZW50KTsKLQkJCQlyZXR1cm4gZmFsc2U7CQkJCQotCQkJfQotCQkJaWYodGFza05vdFlldEFzc2lnbmVkVG9QYXJ0aXRpb24hPW51bGwgJiYgIXRhc2tOb3RZZXRBc3NpZ25lZFRvUGFydGl0aW9uLmNvbnRhaW5zKGVsZW1lbnQpKXsJCQkJCQkJCQotCQkJCXRhc2tOb3RZZXRBc3NpZ25lZFRvUGFydGl0aW9uLmFkZCgoQ0hUYXNrKSBlbGVtZW50KTsKLQkJCQlzZWxlY3RlZEVsZW1lbnRzLmFkZCgoQ0hUYXNrKSBlbGVtZW50KTsKLQkJCQlyZXR1cm4gZmFsc2U7CQkJCQotCQkJfQotCQkJcmV0dXJuICFzZWxlY3RlZEVsZW1lbnRzLmNvbnRhaW5zKGdldEFkYXB0ZWRWYWx1ZShlbGVtZW50KSk7Ci0JCX0KLQotCQkvKioKLQkJICogUmVmcmVzaC4KLQkJICovCi0JCXB1YmxpYyB2b2lkIHJlZnJlc2goKSB7Ci0JCQlpZiAodW5pcXVlKSB7Ci0JCQkJY2xlYXJDYWNoZSgpOwotCQkJfQotCQl9Ci0JfQotCQotCQotCS8qIChub24tSmF2YWRvYykKLQkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuaW5mcmEud2lkZ2V0cy5zZWxlY3RvcnMuUmVmZXJlbmNlU2VsZWN0b3IjY3JlYXRlQ29udHJvbHMob3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuQ29tcG9zaXRlKQotCSAqLwotCUBPdmVycmlkZQotCXB1YmxpYyB2b2lkIGNyZWF0ZUNvbnRyb2xzKENvbXBvc2l0ZSBwYXJlbnQpIHsKLQkJQ29tcG9zaXRlIGNvbnRlbnQgPSBuZXcgQ29tcG9zaXRlKHBhcmVudCwgU1dULk5PTkUpOwotCQljb250ZW50LnNldExheW91dChuZXcgR3JpZExheW91dCgxLCB0cnVlKSk7Ci0KLQkJdHJlZVZpZXdlciA9IG5ldyBUcmVlVmlld2VyKGNvbnRlbnQsIFNXVC5CT1JERVIgfCBTV1QuTVVMVEkpOwotCQl0cmVlVmlld2VyLnNldEZpbHRlcnMobmV3IFZpZXdlckZpbHRlcltdeyBuZXcgUGF0dGVybkZpbHRlcigpIH0pOwotCi0JCUdyaWREYXRhIGRhdGEgPSBuZXcgR3JpZERhdGEoU1dULkZJTEwsIFNXVC5GSUxMLCB0cnVlLCB0cnVlKTsKLQkJZGF0YS5taW5pbXVtSGVpZ2h0ID0gMzAwOwotCQlkYXRhLm1pbmltdW1XaWR0aCA9IDMwMDsKLQkJdHJlZVZpZXdlci5nZXRUcmVlKCkuc2V0TGF5b3V0RGF0YShkYXRhKTsKLQotCQlpZihsYWJlbFByb3ZpZGVyICE9IG51bGwpIHsKLQkJCXRyZWVWaWV3ZXIuc2V0TGFiZWxQcm92aWRlcihsYWJlbFByb3ZpZGVyKTsKLQkJfQotCi0JCWlmKGNvbnRlbnRQcm92aWRlciAhPSBudWxsKSB7Ci0JCQl0cmVlVmlld2VyLnNldENvbnRlbnRQcm92aWRlcihjb250ZW50UHJvdmlkZXIpOwotCQkJdHJlZVZpZXdlci5zZXRJbnB1dCgiIik7IC8vJE5PTi1OTFMtMSQKLQkJfQotCi0JCWlmKGNvbnRlbnRQcm92aWRlciBpbnN0YW5jZW9mIElHcmFwaGljYWxDb250ZW50UHJvdmlkZXIpIHsKLQkJCUlHcmFwaGljYWxDb250ZW50UHJvdmlkZXIgZ3JhcGhpY2FsQ29udGVudFByb3ZpZGVyID0gY29udGVudFByb3ZpZGVyOwotCi0JCQlDb21wb3NpdGUgYmVmb3JlVHJlZUNvbXBvc2l0ZSA9IG5ldyBDb21wb3NpdGUoY29udGVudCwgU1dULk5PTkUpOwotCQkJYmVmb3JlVHJlZUNvbXBvc2l0ZS5zZXRMYXlvdXREYXRhKG5ldyBHcmlkRGF0YShTV1QuRklMTCwgU1dULkZJTEwsIHRydWUsIGZhbHNlKSk7Ci0JCQlGaWxsTGF5b3V0IGxheW91dCA9IG5ldyBGaWxsTGF5b3V0KCk7Ci0JCQlsYXlvdXQubWFyZ2luSGVpZ2h0ID0gMDsKLQkJCWxheW91dC5tYXJnaW5XaWR0aCA9IDA7Ci0JCQliZWZvcmVUcmVlQ29tcG9zaXRlLnNldExheW91dChsYXlvdXQpOwotCQkJZ3JhcGhpY2FsQ29udGVudFByb3ZpZGVyLmNyZWF0ZUJlZm9yZShiZWZvcmVUcmVlQ29tcG9zaXRlKTsKLQotCQkJYmVmb3JlVHJlZUNvbXBvc2l0ZS5tb3ZlQWJvdmUodHJlZVZpZXdlci5nZXRUcmVlKCkpOwotCi0JCQlDb21wb3NpdGUgYWZ0ZXJUcmVlQ29tcG9zaXRlID0gbmV3IENvbXBvc2l0ZShjb250ZW50LCBTV1QuTk9ORSk7Ci0JCQlsYXlvdXQgPSBuZXcgRmlsbExheW91dCgpOwotCQkJbGF5b3V0Lm1hcmdpbkhlaWdodCA9IDA7Ci0JCQlsYXlvdXQubWFyZ2luV2lkdGggPSAwOwotCQkJYWZ0ZXJUcmVlQ29tcG9zaXRlLnNldExheW91dChsYXlvdXQpOwotCQkJYWZ0ZXJUcmVlQ29tcG9zaXRlLnNldExheW91dERhdGEobmV3IEdyaWREYXRhKFNXVC5GSUxMLCBTV1QuRklMTCwgdHJ1ZSwgZmFsc2UpKTsKLQkJCWdyYXBoaWNhbENvbnRlbnRQcm92aWRlci5jcmVhdGVBZnRlcihhZnRlclRyZWVDb21wb3NpdGUpOwotCQl9Ci0JfQotfQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgDQorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KKyAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorICAtDQorICAtIENvcHlyaWdodCAoYykgMjAxNS0yMDE2IFVuaXZlcnNpdHkgb2YgUGFkb3ZhLCBJVEFMWSAtICBJbnRlY3MgU3BBIA0KKyAgLSBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICAtIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KKyAgLSB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAgLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KKyAgLQ0KKyAgLSBDb250cmlidXRvcnM6DQorICAtDQorICAtIEFsZXNzYW5kcm8gWm92aSBhem92aUBtYXRoLnVuaXBkLml0DQorICAtIFN0ZWZhbm8gUHVyaSBzdGVmYW5vLnB1cmlAaW50ZWNzLml0DQorICAtIExhdXJhIEJhcmFjY2hpIGxhdXJhLmJhcmFjY2hpQGludGVjcy5pdA0KKyAgLSBOaWNob2xhcyBQYWNpbmkgbmljaG9sYXMucGFjaW5pQGludGVjcy5pdCAgDQorICAtDQorICAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbiBhbmQvb3IgaW5pdGlhbCBkb2N1bWVudGF0aW9uDQorICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL3BhY2thZ2Ugb3JnLnBvbGFyc3lzLmNoZXNzLm11bHRpY29yZTsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLkVMaXN0Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLklUcmVlQ29udGVudFByb3ZpZGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLlRyZWVWaWV3ZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuVmlld2VyRmlsdGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLmluZnJhLndpZGdldHMuZWRpdG9ycy5JQ29tbWl0TGlzdGVuZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuaW5mcmEud2lkZ2V0cy5wcm92aWRlcnMuRW5jYXBzdWxhdGVkQ29udGVudFByb3ZpZGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLmluZnJhLndpZGdldHMucHJvdmlkZXJzLklHcmFwaGljYWxDb250ZW50UHJvdmlkZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuaW5mcmEud2lkZ2V0cy5wcm92aWRlcnMuSVN0YXRpY0NvbnRlbnRQcm92aWRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5pbmZyYS53aWRnZXRzLnNlbGVjdG9ycy5SZWZlcmVuY2VTZWxlY3RvcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5pbmZyYS53aWRnZXRzLnN0cmF0ZWd5LlByb3ZpZGVyQmFzZWRCcm93c2VTdHJhdGVneTsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5pbmZyYS53aWRnZXRzLnN0cmF0ZWd5LlN0cmF0ZWd5QmFzZWRDb250ZW50UHJvdmlkZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuaW5mcmEud2lkZ2V0cy5zdHJhdGVneS5UcmVlQnJvd3NlU3RyYXRlZ3k7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5TV1Q7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5sYXlvdXQuRmlsbExheW91dDsNCitpbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmxheW91dC5HcmlkRGF0YTsNCitpbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmxheW91dC5HcmlkTGF5b3V0Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5Db21wb3NpdGU7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnVpLmRpYWxvZ3MuUGF0dGVybkZpbHRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuSW5zdGFuY2VTcGVjaWZpY2F0aW9uOw0KK2ltcG9ydCBvcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlLm1vZGVsLkNIVGFzazsNCisNCisNCisvKioNCisgKiBBIGNvcHkgb2YgdGhlIFJlZmVyZW5jZVNlbGVjdG9yIGNsYXNzIHdoZXJlIHRoZSB0cmVlVmlld2VyIGRvZXMgbm90IGhhdmUNCisgKiANCisgKiBhbnkgSURvdWJsZUNsaWNrTGlzdGVuZXIgaW5zdGFuY2UuDQorICoNCisgKiBAYXV0aG9yIEFsZXNzYW5kcm8gWm92aQ0KKyAqLw0KK3B1YmxpYyBjbGFzcyBSZWZlcmVuY2VTZWxlY3Rvck5vRG91YmxlQ2xpY2sgZXh0ZW5kcyBSZWZlcmVuY2VTZWxlY3RvciB7DQorCQ0KKwkvKiogVGhlIGluc3Qgc3BlYyBub3QgeWV0IGFzc2lnbmVkIHRvIHBhcnRpdGlvbi4gKi8NCisJcHJpdmF0ZSBFTGlzdDxJbnN0YW5jZVNwZWNpZmljYXRpb24+IGluc3RTcGVjTm90WWV0QXNzaWduZWRUb1BhcnRpdGlvbjsNCisJDQorCS8qKiBUaGUgdGFzayBub3QgeWV0IGFzc2lnbmVkIHRvIHBhcnRpdGlvbi4gKi8NCisJcHJpdmF0ZSBFTGlzdDxDSFRhc2s+IHRhc2tOb3RZZXRBc3NpZ25lZFRvUGFydGl0aW9uOw0KKwkNCisJLyoqDQorCSAqIEluc3RhbnRpYXRlcyBhIG5ldyByZWZlcmVuY2Ugc2VsZWN0b3Igbm8gZG91YmxlIGNsaWNrLg0KKwkgKg0KKwkgKiBAcGFyYW0gdW5pcXVlIHRoZSB1bmlxdWUNCisJICovDQorCXB1YmxpYyBSZWZlcmVuY2VTZWxlY3Rvck5vRG91YmxlQ2xpY2soYm9vbGVhbiB1bmlxdWUpIHsNCisJCXN1cGVyKHVuaXF1ZSk7DQorCX0NCisJDQorCS8qKg0KKwkgKiBJbnN0YW50aWF0ZXMgYSBuZXcgcmVmZXJlbmNlIHNlbGVjdG9yIG5vIGRvdWJsZSBjbGljay4NCisJICoNCisJICogQHBhcmFtIHVuaXF1ZSB0aGUgdW5pcXVlDQorCSAqIEBwYXJhbSBpbnN0U3BlY05vdFlldEFzc2lnbmVkVG9QYXJ0aXRpb24gdGhlIGluc3Qgc3BlYyBub3QgeWV0IGFzc2lnbmVkIHRvIHBhcnRpdGlvbg0KKwkgKiBAcGFyYW0gdGFza05vdFlldEFzc2lnbmVkVG9QYXJ0aXRpb24gdGhlIHRhc2sgbm90IHlldCBhc3NpZ25lZCB0byBwYXJ0aXRpb24NCisJICovDQorCXB1YmxpYyBSZWZlcmVuY2VTZWxlY3Rvck5vRG91YmxlQ2xpY2soYm9vbGVhbiB1bmlxdWUsDQorCQkJRUxpc3Q8SW5zdGFuY2VTcGVjaWZpY2F0aW9uPiBpbnN0U3BlY05vdFlldEFzc2lnbmVkVG9QYXJ0aXRpb24sDQorCQkJRUxpc3Q8Q0hUYXNrPiB0YXNrTm90WWV0QXNzaWduZWRUb1BhcnRpdGlvbikgew0KKwkJc3VwZXIodW5pcXVlKTsNCisJCXRoaXMuaW5zdFNwZWNOb3RZZXRBc3NpZ25lZFRvUGFydGl0aW9uID0gaW5zdFNwZWNOb3RZZXRBc3NpZ25lZFRvUGFydGl0aW9uOw0KKwkJdGhpcy50YXNrTm90WWV0QXNzaWduZWRUb1BhcnRpdGlvbiA9IHRhc2tOb3RZZXRBc3NpZ25lZFRvUGFydGl0aW9uOw0KKwl9DQorCQ0KKwkvKioNCisJICogUmVmcmVzaGVzIHRoaXMgc2VsZWN0b3IncyB7QGxpbmsgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuTGlzdH0NCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgdm9pZCByZWZyZXNoKCkgew0KKwkJKChDdXN0b21TZWxlY3Rpb25GaWx0ZXJlZEJyb3dzZVN0cmF0ZWd5KSBjb250ZW50UHJvdmlkZXIuZ2V0QnJvd3NlU3RyYXRlZ3koKSkucmVmcmVzaCgpOw0KKwkJdHJlZVZpZXdlci5yZWZyZXNoKCk7DQorCX0NCisJDQorCS8qIChub24tSmF2YWRvYykNCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLmluZnJhLndpZGdldHMuc2VsZWN0b3JzLlJlZmVyZW5jZVNlbGVjdG9yI3NldENvbnRlbnRQcm92aWRlcihvcmcuZWNsaXBzZS5wYXB5cnVzLmluZnJhLndpZGdldHMucHJvdmlkZXJzLklTdGF0aWNDb250ZW50UHJvdmlkZXIpDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIHZvaWQgc2V0Q29udGVudFByb3ZpZGVyKElTdGF0aWNDb250ZW50UHJvdmlkZXIgc3RhdGljQ29udGVudFByb3ZpZGVyKSB7DQorCQlJVHJlZUNvbnRlbnRQcm92aWRlciBwcm92aWRlciA9IG5ldyBFbmNhcHN1bGF0ZWRDb250ZW50UHJvdmlkZXIoc3RhdGljQ29udGVudFByb3ZpZGVyKTsNCisNCisJCVRyZWVCcm93c2VTdHJhdGVneSBmaWx0ZXJlZEJyb3dzZVN0cmF0ZWd5ID0gbmV3IEN1c3RvbVNlbGVjdGlvbkZpbHRlcmVkQnJvd3NlU3RyYXRlZ3kocHJvdmlkZXIpOw0KKw0KKwkJVHJlZUJyb3dzZVN0cmF0ZWd5IHJldmVhbEJyb3dzZVN0cmF0ZWd5ID0gbmV3IFByb3ZpZGVyQmFzZWRCcm93c2VTdHJhdGVneShwcm92aWRlcik7DQorDQorCQl0aGlzLmNvbnRlbnRQcm92aWRlciA9IG5ldyBTdHJhdGVneUJhc2VkQ29udGVudFByb3ZpZGVyKGZpbHRlcmVkQnJvd3NlU3RyYXRlZ3ksIHJldmVhbEJyb3dzZVN0cmF0ZWd5KTsNCisNCisJCWlmICh0cmVlVmlld2VyICE9IG51bGwpIHsNCisJCQl0cmVlVmlld2VyLnNldENvbnRlbnRQcm92aWRlcihjb250ZW50UHJvdmlkZXIpOw0KKwkJCXRyZWVWaWV3ZXIuc2V0SW5wdXQoIiIpOyAvLyROT04tTkxTLTEkDQorCQl9DQorDQorCQlpZiAoY29udGVudFByb3ZpZGVyIGluc3RhbmNlb2YgSUNvbW1pdExpc3RlbmVyKSB7DQorCQkJY29tbWl0TGlzdGVuZXJzLmFkZChjb250ZW50UHJvdmlkZXIpOw0KKwkJfQ0KKwl9DQorCQ0KKwkvKioNCisJICogVGhlIENsYXNzIEN1c3RvbVNlbGVjdGlvbkZpbHRlcmVkQnJvd3NlU3RyYXRlZ3kuDQorCSAqLw0KKwkvKiBMQiAyMDE1MDcwOA0KKwkgKiBDdXN0b21TZWxlY3Rpb25GaWx0ZXJlZEJyb3dzZVN0cmF0ZWd5IHdhcyBpbnRyb2R1Y2VkIGZvciBtYW5hZ2luZyBjb3JyZWN0bHkgdGhlIA0KKwkgKiB2aXN1YWxpemF0aW9uIGluIHRoZSBzZWxlY3RvciBvZiBvbmx5IEluc3QgU3BlY3Mgb3IgVGFza3MgdGhhdCBhcmUgbm90IA0KKwkgKiBhbHJlYWR5IGFzc2lnbmVkIHRvIHBhcnRpdGlvbnMgb3IgY29yZXMgKGV2ZW4gdGhlIGZpcnN0IHRpbWUgdGhlIHBhbmVsIGlzIG9wZW5lZCkNCisJICovDQorCXByaXZhdGUgY2xhc3MgQ3VzdG9tU2VsZWN0aW9uRmlsdGVyZWRCcm93c2VTdHJhdGVneSBleHRlbmRzIFByb3ZpZGVyQmFzZWRCcm93c2VTdHJhdGVneSB7DQorDQorCQkvKioNCisJCSAqIEluc3RhbnRpYXRlcyBhIG5ldyBjdXN0b20gc2VsZWN0aW9uIGZpbHRlcmVkIGJyb3dzZSBzdHJhdGVneS4NCisJCSAqDQorCQkgKiBAcGFyYW0gcHJvdmlkZXIgdGhlIHByb3ZpZGVyDQorCQkgKi8NCisJCXB1YmxpYyBDdXN0b21TZWxlY3Rpb25GaWx0ZXJlZEJyb3dzZVN0cmF0ZWd5KElUcmVlQ29udGVudFByb3ZpZGVyIHByb3ZpZGVyKSB7DQorCQkJc3VwZXIocHJvdmlkZXIpOw0KKwkJfQ0KKw0KKwkJLyogKG5vbi1KYXZhZG9jKQ0KKwkJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLmluZnJhLndpZGdldHMucHJvdmlkZXJzLkVuY2Fwc3VsYXRlZENvbnRlbnRQcm92aWRlciNpc1ZhbGlkVmFsdWUoamF2YS5sYW5nLk9iamVjdCkNCisJCSAqLw0KKwkJQE92ZXJyaWRlDQorCQlwdWJsaWMgYm9vbGVhbiBpc1ZhbGlkVmFsdWUoT2JqZWN0IGVsZW1lbnQpIHsNCisJCQlpZiAoIXVuaXF1ZSkgew0KKwkJCQlyZXR1cm4gc3VwZXIuaXNWYWxpZFZhbHVlKGVsZW1lbnQpOw0KKwkJCX0NCisNCisJCQlpZiAoIXN1cGVyLmlzVmFsaWRWYWx1ZShlbGVtZW50KSkgew0KKwkJCQlyZXR1cm4gZmFsc2U7DQorCQkJfQ0KKwkJCQ0KKwkJCWlmKGluc3RTcGVjTm90WWV0QXNzaWduZWRUb1BhcnRpdGlvbiE9bnVsbCAmJiAhaW5zdFNwZWNOb3RZZXRBc3NpZ25lZFRvUGFydGl0aW9uLmNvbnRhaW5zKGVsZW1lbnQpKXsJCQkJCQkJCQ0KKwkJCQlpbnN0U3BlY05vdFlldEFzc2lnbmVkVG9QYXJ0aXRpb24uYWRkKChJbnN0YW5jZVNwZWNpZmljYXRpb24pIGVsZW1lbnQpOw0KKwkJCQlzZWxlY3RlZEVsZW1lbnRzLmFkZCgoSW5zdGFuY2VTcGVjaWZpY2F0aW9uKSBlbGVtZW50KTsNCisJCQkJcmV0dXJuIGZhbHNlOwkJCQkNCisJCQl9DQorCQkJaWYodGFza05vdFlldEFzc2lnbmVkVG9QYXJ0aXRpb24hPW51bGwgJiYgIXRhc2tOb3RZZXRBc3NpZ25lZFRvUGFydGl0aW9uLmNvbnRhaW5zKGVsZW1lbnQpKXsJCQkJCQkJCQ0KKwkJCQl0YXNrTm90WWV0QXNzaWduZWRUb1BhcnRpdGlvbi5hZGQoKENIVGFzaykgZWxlbWVudCk7DQorCQkJCXNlbGVjdGVkRWxlbWVudHMuYWRkKChDSFRhc2spIGVsZW1lbnQpOw0KKwkJCQlyZXR1cm4gZmFsc2U7CQkJCQ0KKwkJCX0NCisJCQlyZXR1cm4gIXNlbGVjdGVkRWxlbWVudHMuY29udGFpbnMoZ2V0QWRhcHRlZFZhbHVlKGVsZW1lbnQpKTsNCisJCX0NCisNCisJCS8qKg0KKwkJICogUmVmcmVzaC4NCisJCSAqLw0KKwkJcHVibGljIHZvaWQgcmVmcmVzaCgpIHsNCisJCQlpZiAodW5pcXVlKSB7DQorCQkJCWNsZWFyQ2FjaGUoKTsNCisJCQl9DQorCQl9DQorCX0NCisJDQorCQ0KKwkvKiAobm9uLUphdmFkb2MpDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5pbmZyYS53aWRnZXRzLnNlbGVjdG9ycy5SZWZlcmVuY2VTZWxlY3RvciNjcmVhdGVDb250cm9scyhvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5Db21wb3NpdGUpDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIHZvaWQgY3JlYXRlQ29udHJvbHMoQ29tcG9zaXRlIHBhcmVudCkgew0KKwkJQ29tcG9zaXRlIGNvbnRlbnQgPSBuZXcgQ29tcG9zaXRlKHBhcmVudCwgU1dULk5PTkUpOw0KKwkJY29udGVudC5zZXRMYXlvdXQobmV3IEdyaWRMYXlvdXQoMSwgdHJ1ZSkpOw0KKw0KKwkJdHJlZVZpZXdlciA9IG5ldyBUcmVlVmlld2VyKGNvbnRlbnQsIFNXVC5CT1JERVIgfCBTV1QuTVVMVEkpOw0KKwkJdHJlZVZpZXdlci5zZXRGaWx0ZXJzKG5ldyBWaWV3ZXJGaWx0ZXJbXXsgbmV3IFBhdHRlcm5GaWx0ZXIoKSB9KTsNCisNCisJCUdyaWREYXRhIGRhdGEgPSBuZXcgR3JpZERhdGEoU1dULkZJTEwsIFNXVC5GSUxMLCB0cnVlLCB0cnVlKTsNCisJCWRhdGEubWluaW11bUhlaWdodCA9IDMwMDsNCisJCWRhdGEubWluaW11bVdpZHRoID0gMzAwOw0KKwkJdHJlZVZpZXdlci5nZXRUcmVlKCkuc2V0TGF5b3V0RGF0YShkYXRhKTsNCisNCisJCWlmKGxhYmVsUHJvdmlkZXIgIT0gbnVsbCkgew0KKwkJCXRyZWVWaWV3ZXIuc2V0TGFiZWxQcm92aWRlcihsYWJlbFByb3ZpZGVyKTsNCisJCX0NCisNCisJCWlmKGNvbnRlbnRQcm92aWRlciAhPSBudWxsKSB7DQorCQkJdHJlZVZpZXdlci5zZXRDb250ZW50UHJvdmlkZXIoY29udGVudFByb3ZpZGVyKTsNCisJCQl0cmVlVmlld2VyLnNldElucHV0KCIiKTsgLy8kTk9OLU5MUy0xJA0KKwkJfQ0KKw0KKwkJaWYoY29udGVudFByb3ZpZGVyIGluc3RhbmNlb2YgSUdyYXBoaWNhbENvbnRlbnRQcm92aWRlcikgew0KKwkJCUlHcmFwaGljYWxDb250ZW50UHJvdmlkZXIgZ3JhcGhpY2FsQ29udGVudFByb3ZpZGVyID0gY29udGVudFByb3ZpZGVyOw0KKw0KKwkJCUNvbXBvc2l0ZSBiZWZvcmVUcmVlQ29tcG9zaXRlID0gbmV3IENvbXBvc2l0ZShjb250ZW50LCBTV1QuTk9ORSk7DQorCQkJYmVmb3JlVHJlZUNvbXBvc2l0ZS5zZXRMYXlvdXREYXRhKG5ldyBHcmlkRGF0YShTV1QuRklMTCwgU1dULkZJTEwsIHRydWUsIGZhbHNlKSk7DQorCQkJRmlsbExheW91dCBsYXlvdXQgPSBuZXcgRmlsbExheW91dCgpOw0KKwkJCWxheW91dC5tYXJnaW5IZWlnaHQgPSAwOw0KKwkJCWxheW91dC5tYXJnaW5XaWR0aCA9IDA7DQorCQkJYmVmb3JlVHJlZUNvbXBvc2l0ZS5zZXRMYXlvdXQobGF5b3V0KTsNCisJCQlncmFwaGljYWxDb250ZW50UHJvdmlkZXIuY3JlYXRlQmVmb3JlKGJlZm9yZVRyZWVDb21wb3NpdGUpOw0KKw0KKwkJCWJlZm9yZVRyZWVDb21wb3NpdGUubW92ZUFib3ZlKHRyZWVWaWV3ZXIuZ2V0VHJlZSgpKTsNCisNCisJCQlDb21wb3NpdGUgYWZ0ZXJUcmVlQ29tcG9zaXRlID0gbmV3IENvbXBvc2l0ZShjb250ZW50LCBTV1QuTk9ORSk7DQorCQkJbGF5b3V0ID0gbmV3IEZpbGxMYXlvdXQoKTsNCisJCQlsYXlvdXQubWFyZ2luSGVpZ2h0ID0gMDsNCisJCQlsYXlvdXQubWFyZ2luV2lkdGggPSAwOw0KKwkJCWFmdGVyVHJlZUNvbXBvc2l0ZS5zZXRMYXlvdXQobGF5b3V0KTsNCisJCQlhZnRlclRyZWVDb21wb3NpdGUuc2V0TGF5b3V0RGF0YShuZXcgR3JpZERhdGEoU1dULkZJTEwsIFNXVC5GSUxMLCB0cnVlLCBmYWxzZSkpOw0KKwkJCWdyYXBoaWNhbENvbnRlbnRQcm92aWRlci5jcmVhdGVBZnRlcihhZnRlclRyZWVDb21wb3NpdGUpOw0KKwkJfQ0KKwl9DQorfQ0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm11bHRpY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL211bHRpY29yZS9jb21tYW5kcy9Bc3NpZ25Db21wb25lbnRzMkNvcmVzQ29tbWFuZC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbXVsdGljb3JlL2NvbW1hbmRzL0Fzc2lnbkNvbXBvbmVudHMyQ29yZXNDb21tYW5kLmphdmEKaW5kZXggMTRjZTA2NS4uNGI1OTI0OCAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbXVsdGljb3JlL2NvbW1hbmRzL0Fzc2lnbkNvbXBvbmVudHMyQ29yZXNDb21tYW5kLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbXVsdGljb3JlL2NvbW1hbmRzL0Fzc2lnbkNvbXBvbmVudHMyQ29yZXNDb21tYW5kLmphdmEKQEAgLTEsMzUwICsxLDM1NyBAQAotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgLQotICAtIENvcHlyaWdodCAoYykgMjAxNS0yMDE2IFVuaXZlcnNpdHkgb2YgUGFkb3ZhLCBJVEFMWSAtICBJbnRlY3MgU3BBIAotICAtIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAgLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAgLSB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICAtIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gIC0KLSAgLSBDb250cmlidXRvcnM6Ci0gIC0KLSAgLSBBbGVzc2FuZHJvIFpvdmkgYXpvdmlAbWF0aC51bmlwZC5pdAotICAtIFN0ZWZhbm8gUHVyaSBzdGVmYW5vLnB1cmlAaW50ZWNzLml0Ci0gIC0gTGF1cmEgQmFyYWNjaGkgbGF1cmEuYmFyYWNjaGlAaW50ZWNzLml0Ci0gIC0gTmljaG9sYXMgUGFjaW5pIG5pY2hvbGFzLnBhY2luaUBpbnRlY3MuaXQgIAotICAtCi0gIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uIGFuZC9vciBpbml0aWFsIGRvY3VtZW50YXRpb24KLSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9wYWNrYWdlIG9yZy5wb2xhcnN5cy5jaGVzcy5tdWx0aWNvcmUuY29tbWFuZHM7Ci0KLWltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OwotaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOwotaW1wb3J0IGphdmEudXRpbC5MaW5rZWRIYXNoU2V0OwotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotaW1wb3J0IGphdmEudXRpbC5NYXA7Ci1pbXBvcnQgamF2YS51dGlsLlNldDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24udXRpbC5CYXNpY0VMaXN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24udXRpbC5FTGlzdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYudHJhbnNhY3Rpb24uUmVjb3JkaW5nQ29tbWFuZDsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYudHJhbnNhY3Rpb24uVHJhbnNhY3Rpb25hbEVkaXRpbmdEb21haW47Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLnRyYW5zYWN0aW9uLnV0aWwuVHJhbnNhY3Rpb25VdGlsOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuSUxhYmVsUHJvdmlkZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uud2luZG93LldpbmRvdzsKLWltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLk1BUlRFLk1BUlRFX0ZvdW5kYXRpb25zLkFsbG9jLkFzc2lnbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLmluZnJhLmNvcmUuc2VydmljZXMuU2VydmljZUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLmluZnJhLmNvcmUuc2VydmljZXMuU2VydmljZXNSZWdpc3RyeTsKLWltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLmluZnJhLmVtZi51dGlscy5TZXJ2aWNlVXRpbHNGb3JSZXNvdXJjZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLmluZnJhLnNlcnZpY2VzLmxhYmVscHJvdmlkZXIuc2VydmljZS5MYWJlbFByb3ZpZGVyU2VydmljZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLmluZnJhLndpZGdldHMucHJvdmlkZXJzLkZpbHRlcmVkQ29udGVudFByb3ZpZGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuaW5mcmEud2lkZ2V0cy5wcm92aWRlcnMuSVN0YXRpY0NvbnRlbnRQcm92aWRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLmluZnJhLndpZGdldHMucHJvdmlkZXJzLlN0YXRpY0NvbnRlbnRQcm92aWRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLmluZnJhLndpZGdldHMuc2VsZWN0b3JzLlJlZmVyZW5jZVNlbGVjdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkRpc3BsYXk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuU2hlbGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudWkuUGxhdGZvcm1VSTsKLWltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5DbGFzc2lmaWVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLkNvbXBvbmVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5FbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLkluc3RhbmNlU3BlY2lmaWNhdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5Nb2RlbDsKLWltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5QYWNrYWdlOwotaW1wb3J0IG9yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS5QcmVkaWN0YWJpbGl0eS5EZXBsb3ltZW50Q29uZmlndXJhdGlvbi5IYXJkd2FyZUJhc2VsaW5lLkNIX0h3UHJvY2Vzc29yOwotaW1wb3J0IG9yZy5wb2xhcnN5cy5jaGVzcy5jb3JlLnByb2ZpbGVzLkNIRVNTUHJvZmlsZU1hbmFnZXI7Ci1pbXBvcnQgb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUudXRpbC51bWwuTW9kZWxFcnJvcjsKLWltcG9ydCBvcmcucG9sYXJzeXMuY2hlc3MuY29yZS51dGlsLnVtbC5VTUxVdGlsczsKLWltcG9ydCBvcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlLlJlZmVyZW5jZVNlbGVjdG9yTm9Eb3VibGVDbGljazsKLWltcG9ydCBvcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlLmRpYWxvZ3MuQ29yZVNlbGVjdG9yRGlhbG9nOwotaW1wb3J0IG9yZy5wb2xhcnN5cy5jaGVzcy5tdWx0aWNvcmUuZGlhbG9ncy5TeXN0ZW1TZWxlY3Rpb25EaWFsb2c7Ci1pbXBvcnQgb3JnLnBvbGFyc3lzLmNoZXNzLm11bHRpY29yZS5tb2RlbC5BYnN0cmFjdENvbW1hbmQ7Ci1pbXBvcnQgb3JnLnBvbGFyc3lzLmNoZXNzLm11bHRpY29yZS5tb2RlbC5DSENvcmU7Ci1pbXBvcnQgb3JnLnBvbGFyc3lzLmNoZXNzLm11bHRpY29yZS51dGlscy5RdWVyeVV0aWxzOwotCi0vKioKLSAqIFRoZSBDbGFzcyBBc3NpZ25Db21wb25lbnRzMkNvcmVzQ29tbWFuZC4KLSAqLwotcHVibGljIGNsYXNzIEFzc2lnbkNvbXBvbmVudHMyQ29yZXNDb21tYW5kIGV4dGVuZHMKLUFic3RyYWN0Q29tbWFuZCB7Ci0KLQkvKiogVGhlIGNvcmVzLiAqLwotCXByaXZhdGUgRUxpc3Q8Q0hDb3JlPiBjb3JlczsKLQkKLQkvKiogVGhlIGNvbXBvbmVudHMuICovCi0JcHJpdmF0ZSBFTGlzdDxJbnN0YW5jZVNwZWNpZmljYXRpb24+IGNvbXBvbmVudHM7Ci0JCi0JLyoqIFRoZSByZXN1bHQuICovCi0JcHJpdmF0ZSBNYXA8Q0hDb3JlLCBMaW5rZWRIYXNoU2V0PE9iamVjdD4+IHJlc3VsdDsKLQkKLQkvKiogVGhlIHByb2Nlc3NvcnMuICovCi0JcHJpdmF0ZSBFTGlzdDxJbnN0YW5jZVNwZWNpZmljYXRpb24+IHByb2Nlc3NvcnM7Ci0JCi0JLyoqIFRoZSBodyBzeXN0ZW0uICovCi0JcHJpdmF0ZSBzdGF0aWMgQ29tcG9uZW50IGh3U3lzdGVtOwotCQotCS8qKiBUaGUgcHJvY2Vzc29ycyBtYXAuICovCi0JcHJpdmF0ZSBNYXA8UGFja2FnZSwgRUxpc3Q8SW5zdGFuY2VTcGVjaWZpY2F0aW9uPj4gcHJvY2Vzc29yc01hcCA9ICBuZXcgSGFzaE1hcDxQYWNrYWdlLCBFTGlzdDxJbnN0YW5jZVNwZWNpZmljYXRpb24+PigpOwotCQotCS8qKiBUaGUgY29yZXMgbWFwLiAqLwotCXByaXZhdGUgTWFwPEluc3RhbmNlU3BlY2lmaWNhdGlvbiwgRUxpc3Q8Q0hDb3JlPj4gY29yZXNNYXAgPSBuZXcgSGFzaE1hcDxJbnN0YW5jZVNwZWNpZmljYXRpb24sIEVMaXN0PENIQ29yZT4+KCk7Ci0JCi0JLyoqIFRoZSBodyBzeXN0ZW1zIGxpc3QuICovCi0JcHJpdmF0ZSBFTGlzdDxJbnN0YW5jZVNwZWNpZmljYXRpb24+IGh3U3lzdGVtc0xpc3QgPSBuZXcgQmFzaWNFTGlzdDxJbnN0YW5jZVNwZWNpZmljYXRpb24+KCk7Ci0KLQkvKiogVGhlIGFzc2lnbm1lbnRzLiAqLwotCXByaXZhdGUgRUxpc3Q8QXNzaWduPiBhc3NpZ25tZW50czsKLQotCi0JLyoqCi0JICogT3BlbiBzZWxlY3RvciB0byBjaG9vc2UgSFcgc3lzdGVtIHdoZXJlIGFzc2lnbiBjb21wb25lbnRzLgotCSAqCi0JICogQHBhcmFtIHVtbE1vZGVsIHRoZSB1bWwgbW9kZWwKLQkgKiBAcGFyYW0gaHdTeXN0ZW1zTGlzdCB0aGUgaHcgc3lzdGVtcyBsaXN0Ci0JICogQHJldHVybiB0aGUgaW5zdGFuY2Ugc3BlY2lmaWNhdGlvbgotCSAqLwotCXByaXZhdGUgc3RhdGljIEluc3RhbmNlU3BlY2lmaWNhdGlvbiBvcGVuU3lzdGVtU2VsZWN0b3IgKE1vZGVsIHVtbE1vZGVsLCAKLQkJCUVMaXN0PEluc3RhbmNlU3BlY2lmaWNhdGlvbj4gaHdTeXN0ZW1zTGlzdCkgewotCi0JCS8vIEZpcnN0IG9mIGFsbCBzaG93IHNlbGVjdG9yIHRvIHNlbGVjdCBId1N5c3RlbQotCQlMaXN0PEluc3RhbmNlU3BlY2lmaWNhdGlvbj4gc3lzdGVtU2VsZWN0aW9uID0gbmV3IEFycmF5TGlzdDxJbnN0YW5jZVNwZWNpZmljYXRpb24+KCk7Ci0JCWZvciAoSW5zdGFuY2VTcGVjaWZpY2F0aW9uIHN5c3QgOiBod1N5c3RlbXNMaXN0KSB7Ci0JCQlzeXN0ZW1TZWxlY3Rpb24uYWRkKHN5c3QpOwotCQl9Ci0KLQkJU2hlbGwgYWN0aXZlU2hlbGwgPSBEaXNwbGF5LmdldERlZmF1bHQoKS5nZXRBY3RpdmVTaGVsbCgpOwotCQlTeXN0ZW1TZWxlY3Rpb25EaWFsb2cgc3lzdGVtRGlhbG9nID0gbmV3IFN5c3RlbVNlbGVjdGlvbkRpYWxvZyhhY3RpdmVTaGVsbCwgc3lzdGVtU2VsZWN0aW9uLCAiU2VsZWN0IFN5c3RlbSB3aGVyZSB0byBhc3NpZ24gdGFza3MiKTsKLQkJaWYgKHN5c3RlbURpYWxvZy5vcGVuKCkgPT0gV2luZG93Lk9LKSB7Ci0JCQlTdHJpbmcgc2VsZWN0ZWRTeXN0ZW1RTiA9IHN5c3RlbURpYWxvZy5nZXRTeXN0ZW1OYW1lKCk7Ci0JCQlFTGlzdDxFbGVtZW50PiBhbGxFbGVtcyA9IHVtbE1vZGVsLmFsbE93bmVkRWxlbWVudHMoKTsKLQkJCWZvciAoRWxlbWVudCBlbGVtIDogYWxsRWxlbXMpIHsKLQkJCQlJbnN0YW5jZVNwZWNpZmljYXRpb24gdGhlU3lzdGVtOwotCQkJCWlmIChlbGVtIGluc3RhbmNlb2YgSW5zdGFuY2VTcGVjaWZpY2F0aW9uKSB7Ci0JCQkJCXRoZVN5c3RlbSA9IChJbnN0YW5jZVNwZWNpZmljYXRpb24pZWxlbTsKLQkJCQkJaWYgKHRoZVN5c3RlbS5nZXRRdWFsaWZpZWROYW1lKCkhPW51bGwgJiYgdGhlU3lzdGVtLmdldFF1YWxpZmllZE5hbWUoKS5lcXVhbHMoc2VsZWN0ZWRTeXN0ZW1RTikpIHsJCQkJCQkJCi0JCQkJCQlDbGFzc2lmaWVyIGNsYXNzaWYgPSB0aGVTeXN0ZW0uZ2V0Q2xhc3NpZmllcnMoKS5nZXQoMCk7Ci0JCQkJCQlod1N5c3RlbSA9IChDb21wb25lbnQpY2xhc3NpZjsKLQkJCQkJCXJldHVybiB0aGVTeXN0ZW07Ci0JCQkJCX0JCQkJCi0JCQkJfQotCQkJfQotCQl9Ci0JCXJldHVybiBudWxsOwotCX0KLQotCi0JLyoqCi0JICogT3BlbiB3aXphcmQgdG8gYXNzaWduIGNvbXBvbmVudHMgdG8gY29yZXMuCi0JICoKLQkgKiBAcGFyYW0gY29tcG9uZW50cyB0aGUgY29tcG9uZW50cwotCSAqIEBwYXJhbSBwYWNrIHRoZSBwYWNrCi0JICogQHBhcmFtIGNvcmVzIHRoZSBjb3JlcwotCSAqIEBwYXJhbSBhc3NpZ25tZW50cyB0aGUgYXNzaWdubWVudHMKLQkgKiBAcmV0dXJuIHRoZSBtYXAKLQkgKi8KLQlwcml2YXRlIHN0YXRpYyBNYXA8Q0hDb3JlLCBMaW5rZWRIYXNoU2V0PE9iamVjdD4+IG9wZW5XaXphcmQoCi0JCQlmaW5hbCBFTGlzdDxJbnN0YW5jZVNwZWNpZmljYXRpb24+IGNvbXBvbmVudHMsCi0JCQlQYWNrYWdlIHBhY2ssIAotCQkJRUxpc3Q8Q0hDb3JlPiBjb3JlcywKLQkJCUVMaXN0PEFzc2lnbj4gYXNzaWdubWVudHMpIHsKLQotCQotCQkKLQkJU2VydmljZXNSZWdpc3RyeSBzZXJ2aWNlc1JlZ2lzdHJ5ID1udWxsOwotCQl0cnkgewotCQkJc2VydmljZXNSZWdpc3RyeSA9IFNlcnZpY2VVdGlsc0ZvclJlc291cmNlLmdldEluc3RhbmNlKCkuZ2V0U2VydmljZVJlZ2lzdHJ5KHBhY2suZVJlc291cmNlKCkpOwotCQl9IGNhdGNoIChTZXJ2aWNlRXhjZXB0aW9uIGUxKSB7Ci0JCQkvLyBUT0RPIEF1dG8tZ2VuZXJhdGVkIGNhdGNoIGJsb2NrCi0JCQllMS5wcmludFN0YWNrVHJhY2UoKTsKLQkJfQotCi0JCS8vIExCIDIwMTUwNzEzIFNob3cgY29tcG9uZW50cyBpbiB0aGUgbGVmdCBzaWRlIAotCQkvLyBPbmx5IHNob3cgdGhlIGNvbXBvbmVudHMgdGhhdCBhcmUgbm90IGFzc2lnbmVkIHRvIGEgUHJvY2Vzc29yIAotCQlFTGlzdDxJbnN0YW5jZVNwZWNpZmljYXRpb24+IGluc3RTcGVjTm90WWV0QXNzaWduZWRUb0NvcmUgPSBuZXcgQmFzaWNFTGlzdDxJbnN0YW5jZVNwZWNpZmljYXRpb24+KCk7Ci0JCWZvciAoSW5zdGFuY2VTcGVjaWZpY2F0aW9uIGkgOiBjb21wb25lbnRzKSB7Ci0JCQlpZiAoIShRdWVyeVV0aWxzLmlzQXNzaWduZWQyQ29yZShpLCBwYWNrLCBhc3NpZ25tZW50cykpKSB7Ci0JCQkJaW5zdFNwZWNOb3RZZXRBc3NpZ25lZFRvQ29yZS5hZGQoaSk7CQkJCi0JCQl9Ci0JCX0JCi0JCWZpbmFsIFJlZmVyZW5jZVNlbGVjdG9yIHJlZmVyZW5jZVNlbGVjdG9yID0gbmV3IFJlZmVyZW5jZVNlbGVjdG9yTm9Eb3VibGVDbGljaygKLQkJCQl0cnVlLCBpbnN0U3BlY05vdFlldEFzc2lnbmVkVG9Db3JlLCBudWxsKTsKLQotCQlmaW5hbCBJU3RhdGljQ29udGVudFByb3ZpZGVyIHNlbWFudGljUHJvdmlkZXIgPSBuZXcgU3RhdGljQ29udGVudFByb3ZpZGVyKAotCQkJCWNvbXBvbmVudHMudG9BcnJheSgpKTsKLQotCQlmaW5hbCBGaWx0ZXJlZENvbnRlbnRQcm92aWRlciBmaWx0ZXJlZFByb3ZpZGVyID0gbmV3IEZpbHRlcmVkQ29udGVudFByb3ZpZGVyKAotCQkJCXNlbWFudGljUHJvdmlkZXIpOwkJCi0JCXJlZmVyZW5jZVNlbGVjdG9yLnNldENvbnRlbnRQcm92aWRlcihmaWx0ZXJlZFByb3ZpZGVyKTsKLQkJLy8vCi0KLQkJQ29yZVNlbGVjdG9yRGlhbG9nIGRpYWxvZyA9IG51bGw7Ci0KLQkJSUxhYmVsUHJvdmlkZXIgc2VydiA9IG51bGw7Ci0JCXRyeSB7Ci0JCQlzZXJ2ID0gc2VydmljZXNSZWdpc3RyeS5nZXRTZXJ2aWNlKExhYmVsUHJvdmlkZXJTZXJ2aWNlLmNsYXNzKQotCQkJCQkuZ2V0TGFiZWxQcm92aWRlcigpOwotCQl9IGNhdGNoIChmaW5hbCBTZXJ2aWNlRXhjZXB0aW9uIGUpIHsKLQkJCS8vIEFjdGl2YXRvci5sb2cuZXJyb3IoIkxhYmVsUHJvdmlkZXJTZXJ2aWNlTm90Rm91bmQiLCBlKTsKLQkJfQotCi0vLwkJb3JnLmVjbGlwc2UudW1sMi51bWwuUGFja2FnZSBwYWNrOwotCQlyZWZlcmVuY2VTZWxlY3Rvci5zZXRMYWJlbFByb3ZpZGVyKHNlcnYpOwotCQlkaWFsb2cgPSBuZXcgQ29yZVNlbGVjdG9yRGlhbG9nKERpc3BsYXkuZ2V0RGVmYXVsdCgpCi0JCQkJLmdldEFjdGl2ZVNoZWxsKCksIHJlZmVyZW5jZVNlbGVjdG9yLCBjb3JlcywgcGFjaywKLQkJCQlhc3NpZ25tZW50cywKLQkJCQlDb3JlU2VsZWN0b3JEaWFsb2cuQ09NUE9ORU5UU19UT19DT1JFUywKLQkJCQkiQXNzaWduIFNvZnR3YXJlIENvbXBvbmVudHMgdG8gQ29yZXMiKTsKLQotCQlkaWFsb2cuc2V0TGFiZWxQcm92aWRlcihzZXJ2KTsKLQkJLy9kaWFsb2cuc2V0TWVzc2FnZSgiTWVzc2FnZXMuQ3JlYXRlRGlhZ3JhbUltYWdlX0xpZmVsaW5lRGlhbG9nTWVzc2FnZSIpOwotCQkvL2RpYWxvZy5zZXRUaXRsZSgiTWVzc2FnZXMuQ3JlYXRlRGlhZ3JhbUltYWdlX0xpZmVsaW5lRGlhbG9nVGl0bGUiKTsKLQkJLy8gZGlhbG9nLnNldEluaXRpYWxFbGVtZW50U2VsZWN0aW9ucyhpbnN0czIpOwotCi0JCWlmIChkaWFsb2cub3BlbigpID09IG9yZy5lY2xpcHNlLmpmYWNlLndpbmRvdy5XaW5kb3cuT0spIHsKLQkJCU1hcDxDSENvcmUsIExpbmtlZEhhc2hTZXQ8T2JqZWN0Pj4gcmVzdWx0ID0gZGlhbG9nCi0JCQkJCS5nZXRSZXN1bHQoKTsKLQkJCWlmIChyZXN1bHQgIT0gbnVsbCkKLQkJCQlyZXR1cm4gcmVzdWx0OwotCQl9Ci0JCXJldHVybiBudWxsOwotCX0KLQotCS8qIChub24tSmF2YWRvYykKLQkgKiBAc2VlIG9yZy5wb2xhcnN5cy5jaGVzcy5tdWx0aWNvcmUubW9kZWwuQWJzdHJhY3RDb21tYW5kI2V4ZWN1dGUoKQotCSAqLwotCUBPdmVycmlkZQotCXB1YmxpYyB2b2lkIGV4ZWN1dGUoKSB0aHJvd3MgTW9kZWxFcnJvciB7Ci0JCXF1ZXJ5Q29udGVudCh1bWxNb2RlbCk7Ci0JCXByaW50Q29udGVudCgpOwotCi0JCWludCBob3dNYW55ID0gaHdTeXN0ZW1zTGlzdC5zaXplKCk7Ci0KLQkJSW5zdGFuY2VTcGVjaWZpY2F0aW9uIHRoZVN5c3RlbSA9IG51bGw7Ci0JCWlmIChob3dNYW55ID4gMSkgewotCQkJdGhlU3lzdGVtID0gb3BlblN5c3RlbVNlbGVjdG9yKHVtbE1vZGVsLCBod1N5c3RlbXNMaXN0KTsKLQkJfQotCQllbHNlIHsKLQkJCXRoZVN5c3RlbSA9IGh3U3lzdGVtc0xpc3QuZ2V0KDApOwotCQl9Ci0JCWlmICh0aGVTeXN0ZW0hPW51bGwpIHsKLQkJCVBhY2thZ2UgcGFjayA9IFF1ZXJ5VXRpbHMuZ2V0T3duZXJDSEdhUmVzb3VyY2VQbGF0Zm9ybVBhY2thZ2UodW1sTW9kZWwsIHRoZVN5c3RlbSk7Ci0KLQkJCUVMaXN0PEluc3RhbmNlU3BlY2lmaWNhdGlvbj4gcHJvY2Vzc29yTGlzdCA9IHByb2Nlc3NvcnNNYXAuZ2V0KHBhY2spOwotCi0JCQlFTGlzdDxDSENvcmU+IGNvcmVzID0gIG5ldyBCYXNpY0VMaXN0PENIQ29yZT4oKTsKLQkJCWlmIChwcm9jZXNzb3JMaXN0IT1udWxsKSB7CQkJCQkJCi0JCQkJZm9yIChJbnN0YW5jZVNwZWNpZmljYXRpb24gcHJvYyA6IHByb2Nlc3Nvckxpc3QpIHsKLQkJCQkJRUxpc3Q8Q0hDb3JlPiBjb3JlTGlzdCA9IGNvcmVzTWFwLmdldChwcm9jKTsKLQkJCQkJZm9yIChDSENvcmUgY29yZSA6IGNvcmVMaXN0KSB7Ci0JCQkJCQljb3Jlcy5hZGQoY29yZSk7Ci0JCQkJCX0KLQkJCQl9Ci0JCQl9Ci0KLQkJCXJlc3VsdCA9IG9wZW5XaXphcmQoY29tcG9uZW50cywgcGFjaywgY29yZXMsIGFzc2lnbm1lbnRzKTsKLQkJCWlmIChyZXN1bHQgIT0gbnVsbCkgewotCQkJCXVwZGF0ZU1vZGVsKCk7Ci0JCQl9Ci0JCX0KLQl9Ci0KLQkvKioKLQkgKiBQcmludHMgdGhlIGNvbnRlbnQuCi0JICovCi0JcHJpdmF0ZSB2b2lkIHByaW50Q29udGVudCgpIHsKLQkJU3lzdGVtLm91dC5wcmludGxuKCJDb21wb25lbnRzOiIpOwotCQlmb3IgKEluc3RhbmNlU3BlY2lmaWNhdGlvbiBjb21wb25lbnQgOiBjb21wb25lbnRzKSB7Ci0JCQlTeXN0ZW0ub3V0LnByaW50bG4oY29tcG9uZW50LmdldFF1YWxpZmllZE5hbWUoKSk7Ci0JCX0KLQkJCi0JCVNldDxQYWNrYWdlPiBwYWNrcyA9IHByb2Nlc3NvcnNNYXAua2V5U2V0KCk7Ci0JCWZvciAoUGFja2FnZSBwYWNrOiBwYWNrcykgewotCQkJU3lzdGVtLm91dC5wcmludGxuKCJQYWNrYWdlOiAiK3BhY2suZ2V0TmFtZSgpKTsKLQkJCUVMaXN0PEluc3RhbmNlU3BlY2lmaWNhdGlvbj4gcHJvY0xpc3QgPSBwcm9jZXNzb3JzTWFwLmdldChwYWNrKTsKLQkJCWZvciAoSW5zdGFuY2VTcGVjaWZpY2F0aW9uIHRoZVByb2MgOiBwcm9jTGlzdCkgewotCQkJCVN5c3RlbS5vdXQucHJpbnRsbigiUHJvY2Vzc29yOiAiK3RoZVByb2MuZ2V0TmFtZSgpKTsJCQkJIAotCQkJCUVMaXN0PENIQ29yZT4gY29yZUxpc3QgPSBjb3Jlc01hcC5nZXQodGhlUHJvYyk7Ci0JCQkJZm9yIChDSENvcmUgdGhlQ29yZSA6IGNvcmVMaXN0KSB7Ci0JCQkJCVN5c3RlbS5vdXQucHJpbnRsbigiQ29yZTogIit0aGVDb3JlLmdldE5hbWUoKSk7Ci0JCQkJfQotCQkJfQotCQl9Ci0JfQotCi0JLyoqCi0JICogVXBkYXRlIG1vZGVsLgotCSAqLwotCXByaXZhdGUgdm9pZCB1cGRhdGVNb2RlbCgpIHsKLQkJVHJhbnNhY3Rpb25hbEVkaXRpbmdEb21haW4gZWRpdGluZ0RvbWFpbiA9IFRyYW5zYWN0aW9uVXRpbAotCQkJCS5nZXRFZGl0aW5nRG9tYWluKHVtbE1vZGVsKTsKLQkJZWRpdGluZ0RvbWFpbi5nZXRDb21tYW5kU3RhY2soKS5leGVjdXRlKG5ldyBDb20oZWRpdGluZ0RvbWFpbikpOwotCX0KLQotCS8qKgotCSAqIFF1ZXJ5IGNvbnRlbnQuCi0JICoKLQkgKiBAcGFyYW0gdW1sTW9kZWwgdGhlIHVtbCBtb2RlbAotCSAqIEB0aHJvd3MgTW9kZWxFcnJvciB0aGUgbW9kZWwgZXJyb3IKLQkgKi8KLQlwcml2YXRlIHZvaWQgcXVlcnlDb250ZW50KE1vZGVsIHVtbE1vZGVsKSB0aHJvd3MgTW9kZWxFcnJvciB7Ci0KLQkJaHdTeXN0ZW0gPSBVTUxVdGlscy5nZXRSZXNvdXJjZVBsYXRmb3JtQ29tcG9uZW50KHVtbE1vZGVsLCBDSEVTU1Byb2ZpbGVNYW5hZ2VyLkRFUExPWU1FTlRfVklFVyk7Ci0JCQotCQkvLyBMb29rIGZvciBQYWNrYWdlcyBzdGVyZW90eXBlZCBhcyBDSEdBUmVzb3VyY2VQbGF0Zm9ybSBpbiB0aGUgRGVwbG95bWVudCBWaWV3Ci0JCUVMaXN0PFBhY2thZ2U+IHBhY2thZ2VzID0gUXVlcnlVdGlscy5nZXRSZXNvdXJjZVBsYXRmb3JtUGFja2FnZXModW1sTW9kZWwsIENIRVNTUHJvZmlsZU1hbmFnZXIuREVQTE9ZTUVOVF9WSUVXKTsJCQotCi0JCWlmIChwYWNrYWdlcy5zaXplKCk9PTApIHsKLQkJCU1vZGVsRXJyb3IgbWUgPSBuZXcgTW9kZWxFcnJvcigiRXJyb3IgaW4gbW9kZWw6IG5vIFBhY2thZ2Ugc3RlcmVvdHlwZWQgYXMgQ0hHQVJlc291cmNlUGxhdGZvcm0gaW4gdGhlIERlcGxveW1lbnQgVmlldyEiKTsKLQkJCXRocm93IG1lOwotCQl9Ci0JCWh3U3lzdGVtc0xpc3QgPSBuZXcgQmFzaWNFTGlzdDxJbnN0YW5jZVNwZWNpZmljYXRpb24+KCk7Ci0gCQlmb3IoUGFja2FnZSBwYWNrIDogcGFja2FnZXMpIHsJCQotCQkJRUxpc3Q8SW5zdGFuY2VTcGVjaWZpY2F0aW9uPiBwcm9jZXNzb3JzID0gbmV3IEJhc2ljRUxpc3Q8SW5zdGFuY2VTcGVjaWZpY2F0aW9uPigpOwotCQkJZm9yIChDSF9Id1Byb2Nlc3NvciBjaF9wcm9jZXNzb3IgOiBRdWVyeVV0aWxzLmdldEFsbFByb2Nlc3Nvckluc3RhbmNlc0luUGFja2FnZShwYWNrKSkgewotCQkJCUluc3RhbmNlU3BlY2lmaWNhdGlvbiBpbnN0U3BlYyA9IGNoX3Byb2Nlc3Nvci5nZXRCYXNlX0luc3RhbmNlU3BlY2lmaWNhdGlvbigpOwotCQkJCXByb2Nlc3NvcnMuYWRkKGluc3RTcGVjKTsJCQkJCi0JCQkJRUxpc3Q8Q0hDb3JlPiB0aGVDb3JlcyA9IFF1ZXJ5VXRpbHMuZ2V0Q29yZXMoY2hfcHJvY2Vzc29yKTsKLQkJCQljb3Jlc01hcC5wdXQoaW5zdFNwZWMsIHRoZUNvcmVzKTsJCQkJCi0JCQl9Ci0JCQlJbnN0YW5jZVNwZWNpZmljYXRpb24gdGhlU3lzdGVtID0gVU1MVXRpbHMuZ2V0Um9vdEluc3RhbmNlSW5QYWNrYWdlKHBhY2spOwotCQkJaHdTeXN0ZW1zTGlzdC5hZGQodGhlU3lzdGVtKTsKLQkJCXByb2Nlc3NvcnNNYXAucHV0KHBhY2ssIHByb2Nlc3NvcnMpOwotCQl9Ci0gCQkKLSAJCWlmIChod1N5c3RlbXNMaXN0LmlzRW1wdHkoKSkgewotIAkJCU1vZGVsRXJyb3IgbWUgPSBuZXcgTW9kZWxFcnJvcigiRXJyb3IgaW4gbW9kZWw6IG5vIFN5c3RlbSBpbiB0aGUgRGVwbG95bWVudCBWaWV3ISIpOwotCQkJdGhyb3cgbWU7Ci0gCQl9Ci0JCQotCi0vLwkJcHJvY2Vzc29ycyA9IG5ldyBCYXNpY0VMaXN0PEluc3RhbmNlU3BlY2lmaWNhdGlvbj4oKTsKLS8vCQljb3JlcyA9IG5ldyBCYXNpY0VMaXN0PENIQ29yZT4oKTsKLS8vCQlmb3IgKENIX0h3UHJvY2Vzc29yIGNoX3Byb2Nlc3NvciA6IFF1ZXJ5VXRpbHMuZ2V0QWxsUHJvY2Vzc29ySW5zdGFuY2VzKHVtbE1vZGVsKSkgewotLy8JCQlwcm9jZXNzb3JzLmFkZChjaF9wcm9jZXNzb3IuZ2V0QmFzZV9JbnN0YW5jZVNwZWNpZmljYXRpb24oKSk7Ci0vLwkJCWNvcmVzLmFkZEFsbChRdWVyeVV0aWxzLmdldENvcmVzKGNoX3Byb2Nlc3NvcikpOwotLy8JCX0KLQkJY29tcG9uZW50cyA9IFVNTFV0aWxzLmdldEFsbENvbXBvbmVudEluc3RhbmNlcyh1bWxNb2RlbCwgdHJ1ZSk7Ci0JCWFzc2lnbm1lbnRzID0gVU1MVXRpbHMuZ2V0Q29tcG9uZW50MkNvcmVBc3NpZ25tZW50cyh1bWxNb2RlbCwgQ0hFU1NQcm9maWxlTWFuYWdlci5ERVBMT1lNRU5UX1ZJRVcpOwotCX0KLQotCS8qKgotCSAqIFRoZSBDbGFzcyBDb20uCi0JICovCi0JY2xhc3MgQ29tIGV4dGVuZHMgUmVjb3JkaW5nQ29tbWFuZCB7Ci0KLQkJLyoqCi0JCSAqIEluc3RhbnRpYXRlcyBhIG5ldyBjb20uCi0JCSAqCi0JCSAqIEBwYXJhbSBkb21haW4gdGhlIGRvbWFpbgotCQkgKi8KLQkJcHVibGljIENvbShUcmFuc2FjdGlvbmFsRWRpdGluZ0RvbWFpbiBkb21haW4pIHsKLQkJCXN1cGVyKGRvbWFpbik7Ci0JCX0KLQotCQkvKiAobm9uLUphdmFkb2MpCi0JCSAqIEBzZWUgb3JnLmVjbGlwc2UuZW1mLnRyYW5zYWN0aW9uLlJlY29yZGluZ0NvbW1hbmQjZG9FeGVjdXRlKCkKLQkJICovCi0JCUBPdmVycmlkZQotCQlwcm90ZWN0ZWQgdm9pZCBkb0V4ZWN1dGUoKSB7Ci0JCQlRdWVyeVV0aWxzLmRlbGV0ZUNvbXBvbmVudDJDb3JlQXNzb2NpYXRpb25zKGh3U3lzdGVtKTsKLQkJCVF1ZXJ5VXRpbHMuYnVpbGRJbnN0YW5jZTJDb3JlQXNzaWdubWVudHMoaHdTeXN0ZW0sIHJlc3VsdCk7Ci0JCX0KLQl9Ci19CisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqIENvcHlyaWdodCAoQykgMjAyMCANCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQorICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisgIC0NCisgIC0gQ29weXJpZ2h0IChjKSAyMDE1LTIwMTYgVW5pdmVyc2l0eSBvZiBQYWRvdmEsIElUQUxZIC0gIEludGVjcyBTcEEgDQorICAtIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgIC0gYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQorICAtIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICAtIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQorICAtDQorICAtIENvbnRyaWJ1dG9yczoNCisgIC0NCisgIC0gQWxlc3NhbmRybyBab3ZpIGF6b3ZpQG1hdGgudW5pcGQuaXQNCisgIC0gU3RlZmFubyBQdXJpIHN0ZWZhbm8ucHVyaUBpbnRlY3MuaXQNCisgIC0gTGF1cmEgQmFyYWNjaGkgbGF1cmEuYmFyYWNjaGlAaW50ZWNzLml0DQorICAtIE5pY2hvbGFzIFBhY2luaSBuaWNob2xhcy5wYWNpbmlAaW50ZWNzLml0ICANCisgIC0NCisgIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uIGFuZC9vciBpbml0aWFsIGRvY3VtZW50YXRpb24NCisgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovcGFja2FnZSBvcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlLmNvbW1hbmRzOw0KKw0KK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0Ow0KK2ltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsNCitpbXBvcnQgamF2YS51dGlsLkxpbmtlZEhhc2hTZXQ7DQoraW1wb3J0IGphdmEudXRpbC5MaXN0Ow0KK2ltcG9ydCBqYXZhLnV0aWwuTWFwOw0KK2ltcG9ydCBqYXZhLnV0aWwuU2V0Ow0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuQmFzaWNFTGlzdDsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLkVMaXN0Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYudHJhbnNhY3Rpb24uUmVjb3JkaW5nQ29tbWFuZDsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLnRyYW5zYWN0aW9uLlRyYW5zYWN0aW9uYWxFZGl0aW5nRG9tYWluOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYudHJhbnNhY3Rpb24udXRpbC5UcmFuc2FjdGlvblV0aWw7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuSUxhYmVsUHJvdmlkZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLndpbmRvdy5XaW5kb3c7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuTUFSVEUuTUFSVEVfRm91bmRhdGlvbnMuQWxsb2MuQXNzaWduOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLmluZnJhLmNvcmUuc2VydmljZXMuU2VydmljZUV4Y2VwdGlvbjsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5pbmZyYS5jb3JlLnNlcnZpY2VzLlNlcnZpY2VzUmVnaXN0cnk7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuaW5mcmEuZW1mLnV0aWxzLlNlcnZpY2VVdGlsc0ZvclJlc291cmNlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLmluZnJhLnNlcnZpY2VzLmxhYmVscHJvdmlkZXIuc2VydmljZS5MYWJlbFByb3ZpZGVyU2VydmljZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5pbmZyYS53aWRnZXRzLnByb3ZpZGVycy5GaWx0ZXJlZENvbnRlbnRQcm92aWRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5pbmZyYS53aWRnZXRzLnByb3ZpZGVycy5JU3RhdGljQ29udGVudFByb3ZpZGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLmluZnJhLndpZGdldHMucHJvdmlkZXJzLlN0YXRpY0NvbnRlbnRQcm92aWRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5pbmZyYS53aWRnZXRzLnNlbGVjdG9ycy5SZWZlcmVuY2VTZWxlY3RvcjsNCitpbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuRGlzcGxheTsNCitpbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuU2hlbGw7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnVpLlBsYXRmb3JtVUk7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLkNsYXNzaWZpZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLkNvbXBvbmVudDsNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuRWxlbWVudDsNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuSW5zdGFuY2VTcGVjaWZpY2F0aW9uOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5Nb2RlbDsNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuUGFja2FnZTsNCitpbXBvcnQgb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlLlByZWRpY3RhYmlsaXR5LkRlcGxveW1lbnRDb25maWd1cmF0aW9uLkhhcmR3YXJlQmFzZWxpbmUuQ0hfSHdQcm9jZXNzb3I7DQoraW1wb3J0IG9yZy5wb2xhcnN5cy5jaGVzcy5jb3JlLnByb2ZpbGVzLkNIRVNTUHJvZmlsZU1hbmFnZXI7DQoraW1wb3J0IG9yZy5wb2xhcnN5cy5jaGVzcy5jb3JlLnV0aWwudW1sLk1vZGVsRXJyb3I7DQoraW1wb3J0IG9yZy5wb2xhcnN5cy5jaGVzcy5jb3JlLnV0aWwudW1sLlVNTFV0aWxzOw0KK2ltcG9ydCBvcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlLlJlZmVyZW5jZVNlbGVjdG9yTm9Eb3VibGVDbGljazsNCitpbXBvcnQgb3JnLnBvbGFyc3lzLmNoZXNzLm11bHRpY29yZS5kaWFsb2dzLkNvcmVTZWxlY3RvckRpYWxvZzsNCitpbXBvcnQgb3JnLnBvbGFyc3lzLmNoZXNzLm11bHRpY29yZS5kaWFsb2dzLlN5c3RlbVNlbGVjdGlvbkRpYWxvZzsNCitpbXBvcnQgb3JnLnBvbGFyc3lzLmNoZXNzLm11bHRpY29yZS5tb2RlbC5BYnN0cmFjdENvbW1hbmQ7DQoraW1wb3J0IG9yZy5wb2xhcnN5cy5jaGVzcy5tdWx0aWNvcmUubW9kZWwuQ0hDb3JlOw0KK2ltcG9ydCBvcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlLnV0aWxzLlF1ZXJ5VXRpbHM7DQorDQorLyoqDQorICogVGhlIENsYXNzIEFzc2lnbkNvbXBvbmVudHMyQ29yZXNDb21tYW5kLg0KKyAqLw0KK3B1YmxpYyBjbGFzcyBBc3NpZ25Db21wb25lbnRzMkNvcmVzQ29tbWFuZCBleHRlbmRzDQorQWJzdHJhY3RDb21tYW5kIHsNCisNCisJLyoqIFRoZSBjb3Jlcy4gKi8NCisJcHJpdmF0ZSBFTGlzdDxDSENvcmU+IGNvcmVzOw0KKwkNCisJLyoqIFRoZSBjb21wb25lbnRzLiAqLw0KKwlwcml2YXRlIEVMaXN0PEluc3RhbmNlU3BlY2lmaWNhdGlvbj4gY29tcG9uZW50czsNCisJDQorCS8qKiBUaGUgcmVzdWx0LiAqLw0KKwlwcml2YXRlIE1hcDxDSENvcmUsIExpbmtlZEhhc2hTZXQ8T2JqZWN0Pj4gcmVzdWx0Ow0KKwkNCisJLyoqIFRoZSBwcm9jZXNzb3JzLiAqLw0KKwlwcml2YXRlIEVMaXN0PEluc3RhbmNlU3BlY2lmaWNhdGlvbj4gcHJvY2Vzc29yczsNCisJDQorCS8qKiBUaGUgaHcgc3lzdGVtLiAqLw0KKwlwcml2YXRlIHN0YXRpYyBDb21wb25lbnQgaHdTeXN0ZW07DQorCQ0KKwkvKiogVGhlIHByb2Nlc3NvcnMgbWFwLiAqLw0KKwlwcml2YXRlIE1hcDxQYWNrYWdlLCBFTGlzdDxJbnN0YW5jZVNwZWNpZmljYXRpb24+PiBwcm9jZXNzb3JzTWFwID0gIG5ldyBIYXNoTWFwPFBhY2thZ2UsIEVMaXN0PEluc3RhbmNlU3BlY2lmaWNhdGlvbj4+KCk7DQorCQ0KKwkvKiogVGhlIGNvcmVzIG1hcC4gKi8NCisJcHJpdmF0ZSBNYXA8SW5zdGFuY2VTcGVjaWZpY2F0aW9uLCBFTGlzdDxDSENvcmU+PiBjb3Jlc01hcCA9IG5ldyBIYXNoTWFwPEluc3RhbmNlU3BlY2lmaWNhdGlvbiwgRUxpc3Q8Q0hDb3JlPj4oKTsNCisJDQorCS8qKiBUaGUgaHcgc3lzdGVtcyBsaXN0LiAqLw0KKwlwcml2YXRlIEVMaXN0PEluc3RhbmNlU3BlY2lmaWNhdGlvbj4gaHdTeXN0ZW1zTGlzdCA9IG5ldyBCYXNpY0VMaXN0PEluc3RhbmNlU3BlY2lmaWNhdGlvbj4oKTsNCisNCisJLyoqIFRoZSBhc3NpZ25tZW50cy4gKi8NCisJcHJpdmF0ZSBFTGlzdDxBc3NpZ24+IGFzc2lnbm1lbnRzOw0KKw0KKw0KKwkvKioNCisJICogT3BlbiBzZWxlY3RvciB0byBjaG9vc2UgSFcgc3lzdGVtIHdoZXJlIGFzc2lnbiBjb21wb25lbnRzLg0KKwkgKg0KKwkgKiBAcGFyYW0gdW1sTW9kZWwgdGhlIHVtbCBtb2RlbA0KKwkgKiBAcGFyYW0gaHdTeXN0ZW1zTGlzdCB0aGUgaHcgc3lzdGVtcyBsaXN0DQorCSAqIEByZXR1cm4gdGhlIGluc3RhbmNlIHNwZWNpZmljYXRpb24NCisJICovDQorCXByaXZhdGUgc3RhdGljIEluc3RhbmNlU3BlY2lmaWNhdGlvbiBvcGVuU3lzdGVtU2VsZWN0b3IgKE1vZGVsIHVtbE1vZGVsLCANCisJCQlFTGlzdDxJbnN0YW5jZVNwZWNpZmljYXRpb24+IGh3U3lzdGVtc0xpc3QpIHsNCisNCisJCS8vIEZpcnN0IG9mIGFsbCBzaG93IHNlbGVjdG9yIHRvIHNlbGVjdCBId1N5c3RlbQ0KKwkJTGlzdDxJbnN0YW5jZVNwZWNpZmljYXRpb24+IHN5c3RlbVNlbGVjdGlvbiA9IG5ldyBBcnJheUxpc3Q8SW5zdGFuY2VTcGVjaWZpY2F0aW9uPigpOw0KKwkJZm9yIChJbnN0YW5jZVNwZWNpZmljYXRpb24gc3lzdCA6IGh3U3lzdGVtc0xpc3QpIHsNCisJCQlzeXN0ZW1TZWxlY3Rpb24uYWRkKHN5c3QpOw0KKwkJfQ0KKw0KKwkJU2hlbGwgYWN0aXZlU2hlbGwgPSBEaXNwbGF5LmdldERlZmF1bHQoKS5nZXRBY3RpdmVTaGVsbCgpOw0KKwkJU3lzdGVtU2VsZWN0aW9uRGlhbG9nIHN5c3RlbURpYWxvZyA9IG5ldyBTeXN0ZW1TZWxlY3Rpb25EaWFsb2coYWN0aXZlU2hlbGwsIHN5c3RlbVNlbGVjdGlvbiwgIlNlbGVjdCBTeXN0ZW0gd2hlcmUgdG8gYXNzaWduIHRhc2tzIik7DQorCQlpZiAoc3lzdGVtRGlhbG9nLm9wZW4oKSA9PSBXaW5kb3cuT0spIHsNCisJCQlTdHJpbmcgc2VsZWN0ZWRTeXN0ZW1RTiA9IHN5c3RlbURpYWxvZy5nZXRTeXN0ZW1OYW1lKCk7DQorCQkJRUxpc3Q8RWxlbWVudD4gYWxsRWxlbXMgPSB1bWxNb2RlbC5hbGxPd25lZEVsZW1lbnRzKCk7DQorCQkJZm9yIChFbGVtZW50IGVsZW0gOiBhbGxFbGVtcykgew0KKwkJCQlJbnN0YW5jZVNwZWNpZmljYXRpb24gdGhlU3lzdGVtOw0KKwkJCQlpZiAoZWxlbSBpbnN0YW5jZW9mIEluc3RhbmNlU3BlY2lmaWNhdGlvbikgew0KKwkJCQkJdGhlU3lzdGVtID0gKEluc3RhbmNlU3BlY2lmaWNhdGlvbillbGVtOw0KKwkJCQkJaWYgKHRoZVN5c3RlbS5nZXRRdWFsaWZpZWROYW1lKCkhPW51bGwgJiYgdGhlU3lzdGVtLmdldFF1YWxpZmllZE5hbWUoKS5lcXVhbHMoc2VsZWN0ZWRTeXN0ZW1RTikpIHsJCQkJCQkJDQorCQkJCQkJQ2xhc3NpZmllciBjbGFzc2lmID0gdGhlU3lzdGVtLmdldENsYXNzaWZpZXJzKCkuZ2V0KDApOw0KKwkJCQkJCWh3U3lzdGVtID0gKENvbXBvbmVudCljbGFzc2lmOw0KKwkJCQkJCXJldHVybiB0aGVTeXN0ZW07DQorCQkJCQl9CQkJCQ0KKwkJCQl9DQorCQkJfQ0KKwkJfQ0KKwkJcmV0dXJuIG51bGw7DQorCX0NCisNCisNCisJLyoqDQorCSAqIE9wZW4gd2l6YXJkIHRvIGFzc2lnbiBjb21wb25lbnRzIHRvIGNvcmVzLg0KKwkgKg0KKwkgKiBAcGFyYW0gY29tcG9uZW50cyB0aGUgY29tcG9uZW50cw0KKwkgKiBAcGFyYW0gcGFjayB0aGUgcGFjaw0KKwkgKiBAcGFyYW0gY29yZXMgdGhlIGNvcmVzDQorCSAqIEBwYXJhbSBhc3NpZ25tZW50cyB0aGUgYXNzaWdubWVudHMNCisJICogQHJldHVybiB0aGUgbWFwDQorCSAqLw0KKwlwcml2YXRlIHN0YXRpYyBNYXA8Q0hDb3JlLCBMaW5rZWRIYXNoU2V0PE9iamVjdD4+IG9wZW5XaXphcmQoDQorCQkJZmluYWwgRUxpc3Q8SW5zdGFuY2VTcGVjaWZpY2F0aW9uPiBjb21wb25lbnRzLA0KKwkJCVBhY2thZ2UgcGFjaywgDQorCQkJRUxpc3Q8Q0hDb3JlPiBjb3JlcywNCisJCQlFTGlzdDxBc3NpZ24+IGFzc2lnbm1lbnRzKSB7DQorDQorCQ0KKwkJDQorCQlTZXJ2aWNlc1JlZ2lzdHJ5IHNlcnZpY2VzUmVnaXN0cnkgPW51bGw7DQorCQl0cnkgew0KKwkJCXNlcnZpY2VzUmVnaXN0cnkgPSBTZXJ2aWNlVXRpbHNGb3JSZXNvdXJjZS5nZXRJbnN0YW5jZSgpLmdldFNlcnZpY2VSZWdpc3RyeShwYWNrLmVSZXNvdXJjZSgpKTsNCisJCX0gY2F0Y2ggKFNlcnZpY2VFeGNlcHRpb24gZTEpIHsNCisJCQkvLyBUT0RPIEF1dG8tZ2VuZXJhdGVkIGNhdGNoIGJsb2NrDQorCQkJZTEucHJpbnRTdGFja1RyYWNlKCk7DQorCQl9DQorDQorCQkvLyBMQiAyMDE1MDcxMyBTaG93IGNvbXBvbmVudHMgaW4gdGhlIGxlZnQgc2lkZSANCisJCS8vIE9ubHkgc2hvdyB0aGUgY29tcG9uZW50cyB0aGF0IGFyZSBub3QgYXNzaWduZWQgdG8gYSBQcm9jZXNzb3IgDQorCQlFTGlzdDxJbnN0YW5jZVNwZWNpZmljYXRpb24+IGluc3RTcGVjTm90WWV0QXNzaWduZWRUb0NvcmUgPSBuZXcgQmFzaWNFTGlzdDxJbnN0YW5jZVNwZWNpZmljYXRpb24+KCk7DQorCQlmb3IgKEluc3RhbmNlU3BlY2lmaWNhdGlvbiBpIDogY29tcG9uZW50cykgew0KKwkJCWlmICghKFF1ZXJ5VXRpbHMuaXNBc3NpZ25lZDJDb3JlKGksIHBhY2ssIGFzc2lnbm1lbnRzKSkpIHsNCisJCQkJaW5zdFNwZWNOb3RZZXRBc3NpZ25lZFRvQ29yZS5hZGQoaSk7CQkJDQorCQkJfQ0KKwkJfQkNCisJCWZpbmFsIFJlZmVyZW5jZVNlbGVjdG9yIHJlZmVyZW5jZVNlbGVjdG9yID0gbmV3IFJlZmVyZW5jZVNlbGVjdG9yTm9Eb3VibGVDbGljaygNCisJCQkJdHJ1ZSwgaW5zdFNwZWNOb3RZZXRBc3NpZ25lZFRvQ29yZSwgbnVsbCk7DQorDQorCQlmaW5hbCBJU3RhdGljQ29udGVudFByb3ZpZGVyIHNlbWFudGljUHJvdmlkZXIgPSBuZXcgU3RhdGljQ29udGVudFByb3ZpZGVyKA0KKwkJCQljb21wb25lbnRzLnRvQXJyYXkoKSk7DQorDQorCQlmaW5hbCBGaWx0ZXJlZENvbnRlbnRQcm92aWRlciBmaWx0ZXJlZFByb3ZpZGVyID0gbmV3IEZpbHRlcmVkQ29udGVudFByb3ZpZGVyKA0KKwkJCQlzZW1hbnRpY1Byb3ZpZGVyKTsJCQ0KKwkJcmVmZXJlbmNlU2VsZWN0b3Iuc2V0Q29udGVudFByb3ZpZGVyKGZpbHRlcmVkUHJvdmlkZXIpOw0KKwkJLy8vDQorDQorCQlDb3JlU2VsZWN0b3JEaWFsb2cgZGlhbG9nID0gbnVsbDsNCisNCisJCUlMYWJlbFByb3ZpZGVyIHNlcnYgPSBudWxsOw0KKwkJdHJ5IHsNCisJCQlzZXJ2ID0gc2VydmljZXNSZWdpc3RyeS5nZXRTZXJ2aWNlKExhYmVsUHJvdmlkZXJTZXJ2aWNlLmNsYXNzKQ0KKwkJCQkJLmdldExhYmVsUHJvdmlkZXIoKTsNCisJCX0gY2F0Y2ggKGZpbmFsIFNlcnZpY2VFeGNlcHRpb24gZSkgew0KKwkJCS8vIEFjdGl2YXRvci5sb2cuZXJyb3IoIkxhYmVsUHJvdmlkZXJTZXJ2aWNlTm90Rm91bmQiLCBlKTsNCisJCX0NCisNCisvLwkJb3JnLmVjbGlwc2UudW1sMi51bWwuUGFja2FnZSBwYWNrOw0KKwkJcmVmZXJlbmNlU2VsZWN0b3Iuc2V0TGFiZWxQcm92aWRlcihzZXJ2KTsNCisJCWRpYWxvZyA9IG5ldyBDb3JlU2VsZWN0b3JEaWFsb2coRGlzcGxheS5nZXREZWZhdWx0KCkNCisJCQkJLmdldEFjdGl2ZVNoZWxsKCksIHJlZmVyZW5jZVNlbGVjdG9yLCBjb3JlcywgcGFjaywNCisJCQkJYXNzaWdubWVudHMsDQorCQkJCUNvcmVTZWxlY3RvckRpYWxvZy5DT01QT05FTlRTX1RPX0NPUkVTLA0KKwkJCQkiQXNzaWduIFNvZnR3YXJlIENvbXBvbmVudHMgdG8gQ29yZXMiKTsNCisNCisJCWRpYWxvZy5zZXRMYWJlbFByb3ZpZGVyKHNlcnYpOw0KKwkJLy9kaWFsb2cuc2V0TWVzc2FnZSgiTWVzc2FnZXMuQ3JlYXRlRGlhZ3JhbUltYWdlX0xpZmVsaW5lRGlhbG9nTWVzc2FnZSIpOw0KKwkJLy9kaWFsb2cuc2V0VGl0bGUoIk1lc3NhZ2VzLkNyZWF0ZURpYWdyYW1JbWFnZV9MaWZlbGluZURpYWxvZ1RpdGxlIik7DQorCQkvLyBkaWFsb2cuc2V0SW5pdGlhbEVsZW1lbnRTZWxlY3Rpb25zKGluc3RzMik7DQorDQorCQlpZiAoZGlhbG9nLm9wZW4oKSA9PSBvcmcuZWNsaXBzZS5qZmFjZS53aW5kb3cuV2luZG93Lk9LKSB7DQorCQkJTWFwPENIQ29yZSwgTGlua2VkSGFzaFNldDxPYmplY3Q+PiByZXN1bHQgPSBkaWFsb2cNCisJCQkJCS5nZXRSZXN1bHQoKTsNCisJCQlpZiAocmVzdWx0ICE9IG51bGwpDQorCQkJCXJldHVybiByZXN1bHQ7DQorCQl9DQorCQlyZXR1cm4gbnVsbDsNCisJfQ0KKw0KKwkvKiAobm9uLUphdmFkb2MpDQorCSAqIEBzZWUgb3JnLnBvbGFyc3lzLmNoZXNzLm11bHRpY29yZS5tb2RlbC5BYnN0cmFjdENvbW1hbmQjZXhlY3V0ZSgpDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIHZvaWQgZXhlY3V0ZSgpIHRocm93cyBNb2RlbEVycm9yIHsNCisJCXF1ZXJ5Q29udGVudCh1bWxNb2RlbCk7DQorCQlwcmludENvbnRlbnQoKTsNCisNCisJCWludCBob3dNYW55ID0gaHdTeXN0ZW1zTGlzdC5zaXplKCk7DQorDQorCQlJbnN0YW5jZVNwZWNpZmljYXRpb24gdGhlU3lzdGVtID0gbnVsbDsNCisJCWlmIChob3dNYW55ID4gMSkgew0KKwkJCXRoZVN5c3RlbSA9IG9wZW5TeXN0ZW1TZWxlY3Rvcih1bWxNb2RlbCwgaHdTeXN0ZW1zTGlzdCk7DQorCQl9DQorCQllbHNlIHsNCisJCQl0aGVTeXN0ZW0gPSBod1N5c3RlbXNMaXN0LmdldCgwKTsNCisJCX0NCisJCWlmICh0aGVTeXN0ZW0hPW51bGwpIHsNCisJCQlQYWNrYWdlIHBhY2sgPSBRdWVyeVV0aWxzLmdldE93bmVyQ0hHYVJlc291cmNlUGxhdGZvcm1QYWNrYWdlKHVtbE1vZGVsLCB0aGVTeXN0ZW0pOw0KKw0KKwkJCUVMaXN0PEluc3RhbmNlU3BlY2lmaWNhdGlvbj4gcHJvY2Vzc29yTGlzdCA9IHByb2Nlc3NvcnNNYXAuZ2V0KHBhY2spOw0KKw0KKwkJCUVMaXN0PENIQ29yZT4gY29yZXMgPSAgbmV3IEJhc2ljRUxpc3Q8Q0hDb3JlPigpOw0KKwkJCWlmIChwcm9jZXNzb3JMaXN0IT1udWxsKSB7CQkJCQkJDQorCQkJCWZvciAoSW5zdGFuY2VTcGVjaWZpY2F0aW9uIHByb2MgOiBwcm9jZXNzb3JMaXN0KSB7DQorCQkJCQlFTGlzdDxDSENvcmU+IGNvcmVMaXN0ID0gY29yZXNNYXAuZ2V0KHByb2MpOw0KKwkJCQkJZm9yIChDSENvcmUgY29yZSA6IGNvcmVMaXN0KSB7DQorCQkJCQkJY29yZXMuYWRkKGNvcmUpOw0KKwkJCQkJfQ0KKwkJCQl9DQorCQkJfQ0KKw0KKwkJCXJlc3VsdCA9IG9wZW5XaXphcmQoY29tcG9uZW50cywgcGFjaywgY29yZXMsIGFzc2lnbm1lbnRzKTsNCisJCQlpZiAocmVzdWx0ICE9IG51bGwpIHsNCisJCQkJdXBkYXRlTW9kZWwoKTsNCisJCQl9DQorCQl9DQorCX0NCisNCisJLyoqDQorCSAqIFByaW50cyB0aGUgY29udGVudC4NCisJICovDQorCXByaXZhdGUgdm9pZCBwcmludENvbnRlbnQoKSB7DQorCQlTeXN0ZW0ub3V0LnByaW50bG4oIkNvbXBvbmVudHM6Iik7DQorCQlmb3IgKEluc3RhbmNlU3BlY2lmaWNhdGlvbiBjb21wb25lbnQgOiBjb21wb25lbnRzKSB7DQorCQkJU3lzdGVtLm91dC5wcmludGxuKGNvbXBvbmVudC5nZXRRdWFsaWZpZWROYW1lKCkpOw0KKwkJfQ0KKwkJDQorCQlTZXQ8UGFja2FnZT4gcGFja3MgPSBwcm9jZXNzb3JzTWFwLmtleVNldCgpOw0KKwkJZm9yIChQYWNrYWdlIHBhY2s6IHBhY2tzKSB7DQorCQkJU3lzdGVtLm91dC5wcmludGxuKCJQYWNrYWdlOiAiK3BhY2suZ2V0TmFtZSgpKTsNCisJCQlFTGlzdDxJbnN0YW5jZVNwZWNpZmljYXRpb24+IHByb2NMaXN0ID0gcHJvY2Vzc29yc01hcC5nZXQocGFjayk7DQorCQkJZm9yIChJbnN0YW5jZVNwZWNpZmljYXRpb24gdGhlUHJvYyA6IHByb2NMaXN0KSB7DQorCQkJCVN5c3RlbS5vdXQucHJpbnRsbigiUHJvY2Vzc29yOiAiK3RoZVByb2MuZ2V0TmFtZSgpKTsJCQkJIA0KKwkJCQlFTGlzdDxDSENvcmU+IGNvcmVMaXN0ID0gY29yZXNNYXAuZ2V0KHRoZVByb2MpOw0KKwkJCQlmb3IgKENIQ29yZSB0aGVDb3JlIDogY29yZUxpc3QpIHsNCisJCQkJCVN5c3RlbS5vdXQucHJpbnRsbigiQ29yZTogIit0aGVDb3JlLmdldE5hbWUoKSk7DQorCQkJCX0NCisJCQl9DQorCQl9DQorCX0NCisNCisJLyoqDQorCSAqIFVwZGF0ZSBtb2RlbC4NCisJICovDQorCXByaXZhdGUgdm9pZCB1cGRhdGVNb2RlbCgpIHsNCisJCVRyYW5zYWN0aW9uYWxFZGl0aW5nRG9tYWluIGVkaXRpbmdEb21haW4gPSBUcmFuc2FjdGlvblV0aWwNCisJCQkJLmdldEVkaXRpbmdEb21haW4odW1sTW9kZWwpOw0KKwkJZWRpdGluZ0RvbWFpbi5nZXRDb21tYW5kU3RhY2soKS5leGVjdXRlKG5ldyBDb20oZWRpdGluZ0RvbWFpbikpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBRdWVyeSBjb250ZW50Lg0KKwkgKg0KKwkgKiBAcGFyYW0gdW1sTW9kZWwgdGhlIHVtbCBtb2RlbA0KKwkgKiBAdGhyb3dzIE1vZGVsRXJyb3IgdGhlIG1vZGVsIGVycm9yDQorCSAqLw0KKwlwcml2YXRlIHZvaWQgcXVlcnlDb250ZW50KE1vZGVsIHVtbE1vZGVsKSB0aHJvd3MgTW9kZWxFcnJvciB7DQorDQorCQlod1N5c3RlbSA9IFVNTFV0aWxzLmdldFJlc291cmNlUGxhdGZvcm1Db21wb25lbnQodW1sTW9kZWwsIENIRVNTUHJvZmlsZU1hbmFnZXIuREVQTE9ZTUVOVF9WSUVXKTsNCisJCQ0KKwkJLy8gTG9vayBmb3IgUGFja2FnZXMgc3RlcmVvdHlwZWQgYXMgQ0hHQVJlc291cmNlUGxhdGZvcm0gaW4gdGhlIERlcGxveW1lbnQgVmlldw0KKwkJRUxpc3Q8UGFja2FnZT4gcGFja2FnZXMgPSBRdWVyeVV0aWxzLmdldFJlc291cmNlUGxhdGZvcm1QYWNrYWdlcyh1bWxNb2RlbCwgQ0hFU1NQcm9maWxlTWFuYWdlci5ERVBMT1lNRU5UX1ZJRVcpOwkJDQorDQorCQlpZiAocGFja2FnZXMuc2l6ZSgpPT0wKSB7DQorCQkJTW9kZWxFcnJvciBtZSA9IG5ldyBNb2RlbEVycm9yKCJFcnJvciBpbiBtb2RlbDogbm8gUGFja2FnZSBzdGVyZW90eXBlZCBhcyBDSEdBUmVzb3VyY2VQbGF0Zm9ybSBpbiB0aGUgRGVwbG95bWVudCBWaWV3ISIpOw0KKwkJCXRocm93IG1lOw0KKwkJfQ0KKwkJaHdTeXN0ZW1zTGlzdCA9IG5ldyBCYXNpY0VMaXN0PEluc3RhbmNlU3BlY2lmaWNhdGlvbj4oKTsNCisgCQlmb3IoUGFja2FnZSBwYWNrIDogcGFja2FnZXMpIHsJCQ0KKwkJCUVMaXN0PEluc3RhbmNlU3BlY2lmaWNhdGlvbj4gcHJvY2Vzc29ycyA9IG5ldyBCYXNpY0VMaXN0PEluc3RhbmNlU3BlY2lmaWNhdGlvbj4oKTsNCisJCQlmb3IgKENIX0h3UHJvY2Vzc29yIGNoX3Byb2Nlc3NvciA6IFF1ZXJ5VXRpbHMuZ2V0QWxsUHJvY2Vzc29ySW5zdGFuY2VzSW5QYWNrYWdlKHBhY2spKSB7DQorCQkJCUluc3RhbmNlU3BlY2lmaWNhdGlvbiBpbnN0U3BlYyA9IGNoX3Byb2Nlc3Nvci5nZXRCYXNlX0luc3RhbmNlU3BlY2lmaWNhdGlvbigpOw0KKwkJCQlwcm9jZXNzb3JzLmFkZChpbnN0U3BlYyk7CQkJCQ0KKwkJCQlFTGlzdDxDSENvcmU+IHRoZUNvcmVzID0gUXVlcnlVdGlscy5nZXRDb3JlcyhjaF9wcm9jZXNzb3IpOw0KKwkJCQljb3Jlc01hcC5wdXQoaW5zdFNwZWMsIHRoZUNvcmVzKTsJCQkJDQorCQkJfQ0KKwkJCUluc3RhbmNlU3BlY2lmaWNhdGlvbiB0aGVTeXN0ZW0gPSBVTUxVdGlscy5nZXRSb290SW5zdGFuY2VJblBhY2thZ2UocGFjayk7DQorCQkJaHdTeXN0ZW1zTGlzdC5hZGQodGhlU3lzdGVtKTsNCisJCQlwcm9jZXNzb3JzTWFwLnB1dChwYWNrLCBwcm9jZXNzb3JzKTsNCisJCX0NCisgCQkNCisgCQlpZiAoaHdTeXN0ZW1zTGlzdC5pc0VtcHR5KCkpIHsNCisgCQkJTW9kZWxFcnJvciBtZSA9IG5ldyBNb2RlbEVycm9yKCJFcnJvciBpbiBtb2RlbDogbm8gU3lzdGVtIGluIHRoZSBEZXBsb3ltZW50IFZpZXchIik7DQorCQkJdGhyb3cgbWU7DQorIAkJfQ0KKwkJDQorDQorLy8JCXByb2Nlc3NvcnMgPSBuZXcgQmFzaWNFTGlzdDxJbnN0YW5jZVNwZWNpZmljYXRpb24+KCk7DQorLy8JCWNvcmVzID0gbmV3IEJhc2ljRUxpc3Q8Q0hDb3JlPigpOw0KKy8vCQlmb3IgKENIX0h3UHJvY2Vzc29yIGNoX3Byb2Nlc3NvciA6IFF1ZXJ5VXRpbHMuZ2V0QWxsUHJvY2Vzc29ySW5zdGFuY2VzKHVtbE1vZGVsKSkgew0KKy8vCQkJcHJvY2Vzc29ycy5hZGQoY2hfcHJvY2Vzc29yLmdldEJhc2VfSW5zdGFuY2VTcGVjaWZpY2F0aW9uKCkpOw0KKy8vCQkJY29yZXMuYWRkQWxsKFF1ZXJ5VXRpbHMuZ2V0Q29yZXMoY2hfcHJvY2Vzc29yKSk7DQorLy8JCX0NCisJCWNvbXBvbmVudHMgPSBVTUxVdGlscy5nZXRBbGxDb21wb25lbnRJbnN0YW5jZXModW1sTW9kZWwsIHRydWUpOw0KKwkJYXNzaWdubWVudHMgPSBVTUxVdGlscy5nZXRDb21wb25lbnQyQ29yZUFzc2lnbm1lbnRzKHVtbE1vZGVsLCBDSEVTU1Byb2ZpbGVNYW5hZ2VyLkRFUExPWU1FTlRfVklFVyk7DQorCX0NCisNCisJLyoqDQorCSAqIFRoZSBDbGFzcyBDb20uDQorCSAqLw0KKwljbGFzcyBDb20gZXh0ZW5kcyBSZWNvcmRpbmdDb21tYW5kIHsNCisNCisJCS8qKg0KKwkJICogSW5zdGFudGlhdGVzIGEgbmV3IGNvbS4NCisJCSAqDQorCQkgKiBAcGFyYW0gZG9tYWluIHRoZSBkb21haW4NCisJCSAqLw0KKwkJcHVibGljIENvbShUcmFuc2FjdGlvbmFsRWRpdGluZ0RvbWFpbiBkb21haW4pIHsNCisJCQlzdXBlcihkb21haW4pOw0KKwkJfQ0KKw0KKwkJLyogKG5vbi1KYXZhZG9jKQ0KKwkJICogQHNlZSBvcmcuZWNsaXBzZS5lbWYudHJhbnNhY3Rpb24uUmVjb3JkaW5nQ29tbWFuZCNkb0V4ZWN1dGUoKQ0KKwkJICovDQorCQlAT3ZlcnJpZGUNCisJCXByb3RlY3RlZCB2b2lkIGRvRXhlY3V0ZSgpIHsNCisJCQlRdWVyeVV0aWxzLmRlbGV0ZUNvbXBvbmVudDJDb3JlQXNzb2NpYXRpb25zKGh3U3lzdGVtKTsNCisJCQlRdWVyeVV0aWxzLmJ1aWxkSW5zdGFuY2UyQ29yZUFzc2lnbm1lbnRzKGh3U3lzdGVtLCByZXN1bHQpOw0KKwkJfQ0KKwl9DQorfQ0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm11bHRpY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL211bHRpY29yZS9jb21tYW5kcy9Bc3NpZ25UYXNrczJDb3Jlc0NvbW1hbmQuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm11bHRpY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL211bHRpY29yZS9jb21tYW5kcy9Bc3NpZ25UYXNrczJDb3Jlc0NvbW1hbmQuamF2YQppbmRleCA4YjBmOGFlLi44MDVjZWYwIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tdWx0aWNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tdWx0aWNvcmUvY29tbWFuZHMvQXNzaWduVGFza3MyQ29yZXNDb21tYW5kLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbXVsdGljb3JlL2NvbW1hbmRzL0Fzc2lnblRhc2tzMkNvcmVzQ29tbWFuZC5qYXZhCkBAIC0xLDM4OCArMSwzOTUgQEAKLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gIC0KLSAgLSBDb3B5cmlnaHQgKGMpIDIwMTUtMjAxNiBVbml2ZXJzaXR5IG9mIFBhZG92YSwgSVRBTFkgLSAgSW50ZWNzIFNwQSAKLSAgLSBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gIC0gYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gIC0gd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAgLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICAtCi0gIC0gQ29udHJpYnV0b3JzOgotICAtCi0gIC0gQWxlc3NhbmRybyBab3ZpIGF6b3ZpQG1hdGgudW5pcGQuaXQKLSAgLSBTdGVmYW5vIFB1cmkgc3RlZmFuby5wdXJpQGludGVjcy5pdAotICAtIExhdXJhIEJhcmFjY2hpIGxhdXJhLmJhcmFjY2hpQGludGVjcy5pdAotICAtIE5pY2hvbGFzIFBhY2luaSBuaWNob2xhcy5wYWNpbmlAaW50ZWNzLml0ICAKLSAgLQotICAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbiBhbmQvb3IgaW5pdGlhbCBkb2N1bWVudGF0aW9uCi0gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovcGFja2FnZSBvcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlLmNvbW1hbmRzOwotCi1pbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsKLWltcG9ydCBqYXZhLnV0aWwuSGFzaFNldDsKLWltcG9ydCBqYXZhLnV0aWwuTGlua2VkSGFzaFNldDsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuTWFwOwotaW1wb3J0IGphdmEudXRpbC5TZXQ7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuQmFzaWNFTGlzdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuRUxpc3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLnRyYW5zYWN0aW9uLlJlY29yZGluZ0NvbW1hbmQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLnRyYW5zYWN0aW9uLlRyYW5zYWN0aW9uYWxFZGl0aW5nRG9tYWluOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi50cmFuc2FjdGlvbi51dGlsLlRyYW5zYWN0aW9uVXRpbDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLklMYWJlbFByb3ZpZGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLndpbmRvdy5XaW5kb3c7Ci1pbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5NQVJURS5NQVJURV9Gb3VuZGF0aW9ucy5BbGxvYy5Bc3NpZ247Ci1pbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5pbmZyYS5jb3JlLnNlcnZpY2VzLlNlcnZpY2VFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5pbmZyYS5jb3JlLnNlcnZpY2VzLlNlcnZpY2VzUmVnaXN0cnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5pbmZyYS5lbWYudXRpbHMuU2VydmljZVV0aWxzRm9yUmVzb3VyY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5pbmZyYS5zZXJ2aWNlcy5sYWJlbHByb3ZpZGVyLnNlcnZpY2UuTGFiZWxQcm92aWRlclNlcnZpY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5pbmZyYS53aWRnZXRzLnByb3ZpZGVycy5GaWx0ZXJlZENvbnRlbnRQcm92aWRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLmluZnJhLndpZGdldHMucHJvdmlkZXJzLklTdGF0aWNDb250ZW50UHJvdmlkZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5pbmZyYS53aWRnZXRzLnByb3ZpZGVycy5TdGF0aWNDb250ZW50UHJvdmlkZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5pbmZyYS53aWRnZXRzLnNlbGVjdG9ycy5SZWZlcmVuY2VTZWxlY3RvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5EaXNwbGF5OwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLlNoZWxsOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLkNsYXNzaWZpZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuQ29tcG9uZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLkVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuSW5zdGFuY2VTcGVjaWZpY2F0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLk1vZGVsOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLlBhY2thZ2U7Ci1pbXBvcnQgb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlLlByZWRpY3RhYmlsaXR5LkRlcGxveW1lbnRDb25maWd1cmF0aW9uLkhhcmR3YXJlQmFzZWxpbmUuQ0hfSHdQcm9jZXNzb3I7Ci1pbXBvcnQgb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUucHJvZmlsZXMuQ0hFU1NQcm9maWxlTWFuYWdlcjsKLWltcG9ydCBvcmcucG9sYXJzeXMuY2hlc3MuY29yZS51dGlsLnVtbC5Nb2RlbEVycm9yOwotaW1wb3J0IG9yZy5wb2xhcnN5cy5jaGVzcy5jb3JlLnV0aWwudW1sLlVNTFV0aWxzOwotaW1wb3J0IG9yZy5wb2xhcnN5cy5jaGVzcy5tdWx0aWNvcmUuUmVmZXJlbmNlU2VsZWN0b3JOb0RvdWJsZUNsaWNrOwotaW1wb3J0IG9yZy5wb2xhcnN5cy5jaGVzcy5tdWx0aWNvcmUuZGlhbG9ncy5Db3JlU2VsZWN0b3JEaWFsb2c7Ci1pbXBvcnQgb3JnLnBvbGFyc3lzLmNoZXNzLm11bHRpY29yZS5kaWFsb2dzLlN5c3RlbVNlbGVjdGlvbkRpYWxvZzsKLWltcG9ydCBvcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlLm1vZGVsLkFic3RyYWN0Q29tbWFuZDsKLWltcG9ydCBvcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlLm1vZGVsLkNIQ29yZTsKLWltcG9ydCBvcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlLm1vZGVsLkNIVGFzazsKLWltcG9ydCBvcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlLnV0aWxzLkdlbmVyYXRvclV0aWxzOwotaW1wb3J0IG9yZy5wb2xhcnN5cy5jaGVzcy5tdWx0aWNvcmUudXRpbHMuUXVlcnlVdGlsczsKLQotLyoqCi0gKiBUaGUgQ2xhc3MgQXNzaWduVGFza3MyQ29yZXNDb21tYW5kLgotICovCi1wdWJsaWMgY2xhc3MgQXNzaWduVGFza3MyQ29yZXNDb21tYW5kIGV4dGVuZHMKLUFic3RyYWN0Q29tbWFuZCB7Ci0KLQkvKiogVGhlIHRhc2tzLiAqLwotCXByaXZhdGUgRUxpc3Q8Q0hUYXNrPiB0YXNrczsJCi0JCi0JLyoqIFRoZSBwcm9jZXNzb3JzIG1hcC4gKi8KLQlwcml2YXRlIE1hcDxQYWNrYWdlLCBFTGlzdDxJbnN0YW5jZVNwZWNpZmljYXRpb24+PiBwcm9jZXNzb3JzTWFwID0gIG5ldyBIYXNoTWFwPFBhY2thZ2UsIEVMaXN0PEluc3RhbmNlU3BlY2lmaWNhdGlvbj4+KCk7Ci0JCi0JLyoqIFRoZSBjb3JlcyBtYXAuICovCi0JcHJpdmF0ZSBNYXA8SW5zdGFuY2VTcGVjaWZpY2F0aW9uLCBFTGlzdDxDSENvcmU+PiBjb3Jlc01hcCA9IG5ldyBIYXNoTWFwPEluc3RhbmNlU3BlY2lmaWNhdGlvbiwgRUxpc3Q8Q0hDb3JlPj4oKTsKLQkKLQkvKiogVGhlIHJlc3VsdC4gKi8KLQlwcml2YXRlIE1hcDxDSENvcmUsIExpbmtlZEhhc2hTZXQ8T2JqZWN0Pj4gcmVzdWx0OwotCQotCS8qKiBUaGUgaHcgc3lzdGVtLiAqLwotCXByaXZhdGUgc3RhdGljIENvbXBvbmVudCBod1N5c3RlbTsKLQkKLQkvKiogVGhlIG9wZXJhdGlvbiBsaXN0LiAqLwotCXByaXZhdGUgSGFzaE1hcDxDSFRhc2ssIEVMaXN0PENIVGFzaz4+IG9wZXJhdGlvbkxpc3Q7Ci0JCi0JLyoqIFRoZSBhc3NpZ25tZW50cy4gKi8KLQlwcml2YXRlIEVMaXN0PEFzc2lnbj4gYXNzaWdubWVudHM7Ci0JCi0JLyoqIFRoZSBodyBzeXN0ZW1zIGxpc3QuICovCi0JcHJpdmF0ZSBFTGlzdDxJbnN0YW5jZVNwZWNpZmljYXRpb24+IGh3U3lzdGVtc0xpc3QgPSBuZXcgQmFzaWNFTGlzdDxJbnN0YW5jZVNwZWNpZmljYXRpb24+KCk7Ci0KLQkKLQkvKioKLQkgKiBPcGVuIHNlbGVjdG9yIHRvIGNob29zZSBIVyBzeXN0ZW0gd2hlcmUgYXNzaWduIHRhc2tzLgotCSAqCi0JICogQHBhcmFtIHVtbE1vZGVsIHRoZSB1bWwgbW9kZWwKLQkgKiBAcGFyYW0gaHdTeXN0ZW1zTGlzdCB0aGUgaHcgc3lzdGVtcyBsaXN0Ci0JICogQHJldHVybiB0aGUgaW5zdGFuY2Ugc3BlY2lmaWNhdGlvbgotCSAqLwotCXByaXZhdGUgc3RhdGljIEluc3RhbmNlU3BlY2lmaWNhdGlvbiBvcGVuU3lzdGVtU2VsZWN0b3IgKE1vZGVsIHVtbE1vZGVsLCAKLQkJCUVMaXN0PEluc3RhbmNlU3BlY2lmaWNhdGlvbj4gaHdTeXN0ZW1zTGlzdCkgewotCi0JCS8vIEZpcnN0IG9mIGFsbCBzaG93IHNlbGVjdG9yIHRvIHNlbGVjdCBId1N5c3RlbQotCQlMaXN0PEluc3RhbmNlU3BlY2lmaWNhdGlvbj4gc3lzdGVtU2VsZWN0aW9uID0gbmV3IEFycmF5TGlzdDxJbnN0YW5jZVNwZWNpZmljYXRpb24+KCk7Ci0JCWZvciAoSW5zdGFuY2VTcGVjaWZpY2F0aW9uIHN5c3QgOiBod1N5c3RlbXNMaXN0KSB7Ci0JCQlzeXN0ZW1TZWxlY3Rpb24uYWRkKHN5c3QpOwotCQl9Ci0KLQkJU2hlbGwgYWN0aXZlU2hlbGwgPSBEaXNwbGF5LmdldERlZmF1bHQoKS5nZXRBY3RpdmVTaGVsbCgpOwotCQlTeXN0ZW1TZWxlY3Rpb25EaWFsb2cgc3lzdGVtRGlhbG9nID0gbmV3IFN5c3RlbVNlbGVjdGlvbkRpYWxvZyhhY3RpdmVTaGVsbCwgc3lzdGVtU2VsZWN0aW9uLCAiU2VsZWN0IFN5c3RlbSB3aGVyZSB0byBhc3NpZ24gdGFza3MiKTsKLQkJaWYgKHN5c3RlbURpYWxvZy5vcGVuKCkgPT0gV2luZG93Lk9LKSB7Ci0JCQlTdHJpbmcgc2VsZWN0ZWRTeXN0ZW1RTiA9IHN5c3RlbURpYWxvZy5nZXRTeXN0ZW1OYW1lKCk7Ci0JCQlFTGlzdDxFbGVtZW50PiBhbGxFbGVtcyA9IHVtbE1vZGVsLmFsbE93bmVkRWxlbWVudHMoKTsKLQkJCWZvciAoRWxlbWVudCBlbGVtIDogYWxsRWxlbXMpIHsKLQkJCQlJbnN0YW5jZVNwZWNpZmljYXRpb24gdGhlU3lzdGVtOwotCQkJCWlmIChlbGVtIGluc3RhbmNlb2YgSW5zdGFuY2VTcGVjaWZpY2F0aW9uKSB7Ci0JCQkJCXRoZVN5c3RlbSA9IChJbnN0YW5jZVNwZWNpZmljYXRpb24pZWxlbTsKLQkJCQkJaWYgKHRoZVN5c3RlbS5nZXRRdWFsaWZpZWROYW1lKCkhPW51bGwgJiYgdGhlU3lzdGVtLmdldFF1YWxpZmllZE5hbWUoKS5lcXVhbHMoc2VsZWN0ZWRTeXN0ZW1RTikpIHsJCQkJCQkJCi0JCQkJCQlDbGFzc2lmaWVyIGNsYXNzaWYgPSB0aGVTeXN0ZW0uZ2V0Q2xhc3NpZmllcnMoKS5nZXQoMCk7Ci0JCQkJCQlod1N5c3RlbSA9IChDb21wb25lbnQpY2xhc3NpZjsKLQkJCQkJCXJldHVybiB0aGVTeXN0ZW07Ci0JCQkJCX0JCQkJCi0JCQkJfQotCQkJfQotCQl9Ci0JCXJldHVybiBudWxsOwotCX0KLQotCi0JLyoqCi0JICogT3BlbiB0aGUgV2l6YXJkIHdpbmRvdyB0byBhc3NpZ24gdGFza3MgdG8gQ29yZXMgKGZvciB0aGUgc2VsZWN0ZWQgSFcgU3lzdGVtKS4KLQkgKgotCSAqIEBwYXJhbSB0YXNrcyB0aGUgdGFza3MKLQkgKiBAcGFyYW0gcGFjayB0aGUgcGFjawotCSAqIEBwYXJhbSBjb3JlcyB0aGUgY29yZXMKLQkgKiBAcGFyYW0gYXNzaWdubWVudHMgdGhlIGFzc2lnbm1lbnRzCi0JICogQHJldHVybiB0aGUgbWFwCi0JICovCi0JcHJpdmF0ZSBzdGF0aWMgTWFwPENIQ29yZSwgTGlua2VkSGFzaFNldDxPYmplY3Q+PiBvcGVuV2l6YXJkKAotCQkJZmluYWwgRUxpc3Q8Q0hUYXNrPiB0YXNrcywKLQkJCVBhY2thZ2UgcGFjaywKLQkJCUVMaXN0PENIQ29yZT4gY29yZXMsCi0JCQlFTGlzdDxBc3NpZ24+IGFzc2lnbm1lbnRzKSB7Ci0KLS8vCQlmaW5hbCBTZXJ2aWNlc1JlZ2lzdHJ5IHNlcnZpY2VzUmVnaXN0cnkgPSAoKElNdWx0aURpYWdyYW1FZGl0b3IpIChQbGF0Zm9ybVVJCi0vLwkJCQkuZ2V0V29ya2JlbmNoKCkuZ2V0QWN0aXZlV29ya2JlbmNoV2luZG93KCkuZ2V0QWN0aXZlUGFnZSgpCi0vLwkJCQkuZ2V0QWN0aXZlRWRpdG9yKCkpKS5nZXRTZXJ2aWNlc1JlZ2lzdHJ5KCk7Ci0JCQotCQlTZXJ2aWNlc1JlZ2lzdHJ5IHNlcnZpY2VzUmVnaXN0cnkgPSBudWxsOwotCQl0cnkgewotCQkJc2VydmljZXNSZWdpc3RyeSA9IFNlcnZpY2VVdGlsc0ZvclJlc291cmNlLmdldEluc3RhbmNlKCkuZ2V0U2VydmljZVJlZ2lzdHJ5KHBhY2suZVJlc291cmNlKCkpOwotCQl9IGNhdGNoIChTZXJ2aWNlRXhjZXB0aW9uIGUxKSB7Ci0JCQkvLyBUT0RPIEF1dG8tZ2VuZXJhdGVkIGNhdGNoIGJsb2NrCi0JCQllMS5wcmludFN0YWNrVHJhY2UoKTsKLQkJCXJldHVybiBudWxsOwotCQl9Ci0KLQkJLy8gTG9vayBmb3IgdGhlIHRhc2tzIHRoYXQgYXJlIG5vdCBhc3NpZ25lZCB0byBhIFByb2Nlc3NvciBpbiB0aGlzIHBhY2thZ2UgKGRlcGxveW1lbnQpCi0JCUVMaXN0PENIVGFzaz4gdGFza05vdFlldEFzc2lnbmVkVG9Db3JlID0gbmV3IEJhc2ljRUxpc3Q8Q0hUYXNrPigpOwotCQlmb3IgKENIVGFzayBpIDogdGFza3MpIHsKLQkJCWlmICghKFF1ZXJ5VXRpbHMuaXNUYXNrQXNzaWduZWQyQ29yZShpLCBwYWNrLCBhc3NpZ25tZW50cykpKSB7Ci0JCQkJdGFza05vdFlldEFzc2lnbmVkVG9Db3JlLmFkZChpKTsJCQkKLQkJCX0KLQkJfQkKLQkJCi0JCWZpbmFsIFJlZmVyZW5jZVNlbGVjdG9yIHJlZmVyZW5jZVNlbGVjdG9yID0gbmV3IFJlZmVyZW5jZVNlbGVjdG9yTm9Eb3VibGVDbGljaygKLQkJCQl0cnVlLCBudWxsLCB0YXNrTm90WWV0QXNzaWduZWRUb0NvcmUpOwotCi0JCWZpbmFsIElTdGF0aWNDb250ZW50UHJvdmlkZXIgc2VtYW50aWNQcm92aWRlciA9IG5ldyBTdGF0aWNDb250ZW50UHJvdmlkZXIoCi0JCQkJdGFza3MudG9BcnJheSgpKTsKLQotCQlmaW5hbCBGaWx0ZXJlZENvbnRlbnRQcm92aWRlciBmaWx0ZXJlZFByb3ZpZGVyID0gbmV3IEZpbHRlcmVkQ29udGVudFByb3ZpZGVyKAotCQkJCXNlbWFudGljUHJvdmlkZXIpOwkJCi0JCXJlZmVyZW5jZVNlbGVjdG9yLnNldENvbnRlbnRQcm92aWRlcihmaWx0ZXJlZFByb3ZpZGVyKTsJCQotCi0JCUNvcmVTZWxlY3RvckRpYWxvZyBkaWFsb2cgPSBudWxsOwotCi0JCUlMYWJlbFByb3ZpZGVyIHNlcnYgPSBudWxsOwotCQl0cnkgewotCQkJc2VydiA9IHNlcnZpY2VzUmVnaXN0cnkuZ2V0U2VydmljZShMYWJlbFByb3ZpZGVyU2VydmljZS5jbGFzcykKLQkJCQkJLmdldExhYmVsUHJvdmlkZXIoKTsKLQkJfSBjYXRjaCAoZmluYWwgU2VydmljZUV4Y2VwdGlvbiBlKSB7Ci0JCQkvLyBBY3RpdmF0b3IubG9nLmVycm9yKCJMYWJlbFByb3ZpZGVyU2VydmljZU5vdEZvdW5kIiwgZSk7Ci0JCX0KLQotCQlyZWZlcmVuY2VTZWxlY3Rvci5zZXRMYWJlbFByb3ZpZGVyKHNlcnYpOwotCQlkaWFsb2cgPSBuZXcgQ29yZVNlbGVjdG9yRGlhbG9nKERpc3BsYXkuZ2V0RGVmYXVsdCgpCi0JCQkJLmdldEFjdGl2ZVNoZWxsKCksIHJlZmVyZW5jZVNlbGVjdG9yLCBjb3JlcywgcGFjaywgYXNzaWdubWVudHMsCi0JCQkJQ29yZVNlbGVjdG9yRGlhbG9nLlRBU0tTX1RPX0NPUkVTLAotCQkJCSJBc3NpZ24gVGFza3MgdG8gQ29yZXMiKTsKLQotCQlkaWFsb2cuc2V0TGFiZWxQcm92aWRlcihzZXJ2KTsKLQkJLy9kaWFsb2cuc2V0TWVzc2FnZSgiTWVzc2FnZXMuQ3JlYXRlRGlhZ3JhbUltYWdlX0xpZmVsaW5lRGlhbG9nTWVzc2FnZSIpOwotCQkvL2RpYWxvZy5zZXRUaXRsZSgiTWVzc2FnZXMuQ3JlYXRlRGlhZ3JhbUltYWdlX0xpZmVsaW5lRGlhbG9nVGl0bGUiKTsKLQkJLy8gZGlhbG9nLnNldEluaXRpYWxFbGVtZW50U2VsZWN0aW9ucyhpbnN0czIpOwotCi0JCWlmIChkaWFsb2cub3BlbigpID09IG9yZy5lY2xpcHNlLmpmYWNlLndpbmRvdy5XaW5kb3cuT0spIHsKLQkJCU1hcDxDSENvcmUsIExpbmtlZEhhc2hTZXQ8T2JqZWN0Pj4gcmVzdWx0ID0gZGlhbG9nCi0JCQkJCS5nZXRSZXN1bHQoKTsKLQkJCWlmIChyZXN1bHQgIT0gbnVsbCkKLQkJCQlyZXR1cm4gcmVzdWx0OwotCQl9Ci0JCXJldHVybiBudWxsOwotCX0KLQotCi0JLyogKG5vbi1KYXZhZG9jKQotCSAqIEBzZWUgb3JnLnBvbGFyc3lzLmNoZXNzLm11bHRpY29yZS5tb2RlbC5BYnN0cmFjdENvbW1hbmQjZXhlY3V0ZSgpCi0JICovCi0JQE92ZXJyaWRlCi0JcHVibGljIHZvaWQgZXhlY3V0ZSgpIHRocm93cyBNb2RlbEVycm9yIHsKLQkJcXVlcnlDb250ZW50KHVtbE1vZGVsKTsKLQkJcHJpbnRDb250ZW50KCk7CQkKLQkJCi0JCWludCBob3dNYW55ID0gaHdTeXN0ZW1zTGlzdC5zaXplKCk7Ci0JCQotCQlJbnN0YW5jZVNwZWNpZmljYXRpb24gdGhlU3lzdGVtID0gbnVsbDsKLQkJaWYgKGhvd01hbnkgPiAxKSB7Ci0JCQl0aGVTeXN0ZW0gPSBvcGVuU3lzdGVtU2VsZWN0b3IodW1sTW9kZWwsIGh3U3lzdGVtc0xpc3QpOwotCQl9Ci0JCWVsc2UgewotCQkJdGhlU3lzdGVtID0gaHdTeXN0ZW1zTGlzdC5nZXQoMCk7Ci0JCX0KLQkJCi0JCWlmICh0aGVTeXN0ZW0hPW51bGwpIHsKLQkJCVBhY2thZ2UgcGFjayA9IFF1ZXJ5VXRpbHMuZ2V0T3duZXJDSEdhUmVzb3VyY2VQbGF0Zm9ybVBhY2thZ2UodW1sTW9kZWwsIHRoZVN5c3RlbSk7Ci0JCi0JCQlFTGlzdDxJbnN0YW5jZVNwZWNpZmljYXRpb24+IHByb2Nlc3Nvckxpc3QgPSBwcm9jZXNzb3JzTWFwLmdldChwYWNrKTsKLQkKLQkJCUVMaXN0PENIQ29yZT4gY29yZXMgPSAgbmV3IEJhc2ljRUxpc3Q8Q0hDb3JlPigpOwotCQkJaWYgKHByb2Nlc3Nvckxpc3QhPW51bGwpIHsJCQkJCQkKLQkJCQlmb3IgKEluc3RhbmNlU3BlY2lmaWNhdGlvbiBwcm9jIDogcHJvY2Vzc29yTGlzdCkgewotCQkJCQlFTGlzdDxDSENvcmU+IGNvcmVMaXN0ID0gY29yZXNNYXAuZ2V0KHByb2MpOwotCQkJCQlmb3IgKENIQ29yZSBjb3JlIDogY29yZUxpc3QpIHsKLQkJCQkJCWNvcmVzLmFkZChjb3JlKTsKLQkJCQkJfQotCQkJCX0KLQkJCX0KLQkKLQkJCXJlc3VsdCA9IG9wZW5XaXphcmQodGFza3MsIHBhY2ssIGNvcmVzLCBhc3NpZ25tZW50cyk7Ci0JCi0JCQlpZiAocmVzdWx0ICE9IG51bGwpIHsKLQkJCQl1cGRhdGVNb2RlbCgpOwotCQkJfQotCQl9Ci0JfQotCi0JCi0JLyoqCi0JICogUHJpbnRzIHRoZSBjb250ZW50LgotCSAqLwotCXByaXZhdGUgdm9pZCBwcmludENvbnRlbnQoKSB7Ci0JCVN5c3RlbS5vdXQucHJpbnRsbigiVGFza3M6Iik7Ci0JCWZvciAoQ0hUYXNrIGNvbXBvbmVudCA6IHRhc2tzKSB7Ci0JCQlTeXN0ZW0ub3V0LnByaW50bG4oY29tcG9uZW50KTsKLQkJfQkJCi0JCVNldDxQYWNrYWdlPiBwYWNrcyA9IHByb2Nlc3NvcnNNYXAua2V5U2V0KCk7Ci0JCWZvciAoUGFja2FnZSBwYWNrOiBwYWNrcykgewotCQkJU3lzdGVtLm91dC5wcmludGxuKCJQYWNrYWdlOiAiK3BhY2suZ2V0TmFtZSgpKTsKLQkJCUVMaXN0PEluc3RhbmNlU3BlY2lmaWNhdGlvbj4gcHJvY0xpc3QgPSBwcm9jZXNzb3JzTWFwLmdldChwYWNrKTsKLQkJCWZvciAoSW5zdGFuY2VTcGVjaWZpY2F0aW9uIHRoZVByb2MgOiBwcm9jTGlzdCkgewotCQkJCVN5c3RlbS5vdXQucHJpbnRsbigiUHJvY2Vzc29yOiAiK3RoZVByb2MuZ2V0TmFtZSgpKTsJCQkJIAotCQkJCUVMaXN0PENIQ29yZT4gY29yZUxpc3QgPSBjb3Jlc01hcC5nZXQodGhlUHJvYyk7Ci0JCQkJZm9yIChDSENvcmUgdGhlQ29yZSA6IGNvcmVMaXN0KSB7Ci0JCQkJCVN5c3RlbS5vdXQucHJpbnRsbigiQ29yZTogIit0aGVDb3JlLmdldE5hbWUoKSk7Ci0JCQkJfQotCQkJfQotCQl9Ci0JfQotCi0JCi0JLyoqCi0JICogVXBkYXRlIG1vZGVsLgotCSAqLwotCXByaXZhdGUgdm9pZCB1cGRhdGVNb2RlbCgpIHsKLQkJVHJhbnNhY3Rpb25hbEVkaXRpbmdEb21haW4gZWRpdGluZ0RvbWFpbiA9IFRyYW5zYWN0aW9uVXRpbAotCQkJCS5nZXRFZGl0aW5nRG9tYWluKHVtbE1vZGVsKTsKLQkJZWRpdGluZ0RvbWFpbi5nZXRDb21tYW5kU3RhY2soKS5leGVjdXRlKG5ldyBDb20oZWRpdGluZ0RvbWFpbikpOwotCX0KLQotCS8qKgotCSAqIEdldCBhbGwgdGhhdCBpcyBuZWVkZWQgZnJvbSB0aGUgbW9kZWwuCi0JICoKLQkgKiBAcGFyYW0gdW1sTW9kZWwgdGhlIHVtbCBtb2RlbAotCSAqIEB0aHJvd3MgTW9kZWxFcnJvciB0aGUgbW9kZWwgZXJyb3IKLQkgKi8KLQlwcml2YXRlIHZvaWQgcXVlcnlDb250ZW50KE1vZGVsIHVtbE1vZGVsKSB0aHJvd3MgTW9kZWxFcnJvciB7Ci0JCXRyeXsKLQkJCWh3U3lzdGVtID0gVU1MVXRpbHMuZ2V0UmVzb3VyY2VQbGF0Zm9ybUNvbXBvbmVudCh1bWxNb2RlbCwgQ0hFU1NQcm9maWxlTWFuYWdlci5ERVBMT1lNRU5UX1ZJRVcpOwotCQl9Y2F0Y2ggKE1vZGVsRXJyb3IgbWUpewotCQkJTW9kZWxFcnJvciBtZTIgPSBuZXcgTW9kZWxFcnJvcihtZS5nZXRNZXNzYWdlKCkrIiBCZSBzdXJlIHRoYXQgSFcgcm9vdCBDb21wb25lbnRzIGluIHRoZSBDb21wb25lbnRWaWV3IGFyZSBzdGVyZW90eXBlZCB3aXRoIENIR2FSZXNvdXJjZVBsYXRvcm0iKTsKLQkJCXRocm93IG1lMjsKLQkJfQotCi0JCS8vIExvb2sgZm9yIFBhY2thZ2VzIHN0ZXJlb3R5cGVkIGFzIENIR0FSZXNvdXJjZVBsYXRmb3JtIGluIHRoZSBEZXBsb3ltZW50IFZpZXcKLQkJRUxpc3Q8UGFja2FnZT4gcGFja2FnZXMgPSBRdWVyeVV0aWxzLmdldFJlc291cmNlUGxhdGZvcm1QYWNrYWdlcyh1bWxNb2RlbCwgQ0hFU1NQcm9maWxlTWFuYWdlci5ERVBMT1lNRU5UX1ZJRVcpOwkJCi0KLQkJaWYgKHBhY2thZ2VzLnNpemUoKT09MCkgewotCQkJTW9kZWxFcnJvciBtZSA9IG5ldyBNb2RlbEVycm9yKCJFcnJvciBpbiBtb2RlbDogbm8gUGFja2FnZSBzdGVyZW90eXBlZCBhcyBDSEdBUmVzb3VyY2VQbGF0Zm9ybSBpbiB0aGUgRGVwbG95bWVudCBWaWV3ISIpOwotCQkJdGhyb3cgbWU7Ci0JCX0KLQkJaHdTeXN0ZW1zTGlzdCA9IG5ldyBCYXNpY0VMaXN0PEluc3RhbmNlU3BlY2lmaWNhdGlvbj4oKTsKLQkJCi0gCQlmb3IoUGFja2FnZSBwYWNrIDogcGFja2FnZXMpIHsJCQotCQkJRUxpc3Q8SW5zdGFuY2VTcGVjaWZpY2F0aW9uPiBwcm9jZXNzb3JzID0gbmV3IEJhc2ljRUxpc3Q8SW5zdGFuY2VTcGVjaWZpY2F0aW9uPigpOwotCQkJZm9yIChDSF9Id1Byb2Nlc3NvciBjaF9wcm9jZXNzb3IgOiBRdWVyeVV0aWxzLmdldEFsbFByb2Nlc3Nvckluc3RhbmNlc0luUGFja2FnZShwYWNrKSkgewotCQkJCUluc3RhbmNlU3BlY2lmaWNhdGlvbiBpbnN0U3BlYyA9IGNoX3Byb2Nlc3Nvci5nZXRCYXNlX0luc3RhbmNlU3BlY2lmaWNhdGlvbigpOwotCQkJCXByb2Nlc3NvcnMuYWRkKGluc3RTcGVjKTsJCQkJCi0JCQkJRUxpc3Q8Q0hDb3JlPiB0aGVDb3JlcyA9IFF1ZXJ5VXRpbHMuZ2V0Q29yZXMoY2hfcHJvY2Vzc29yKTsKLQkJCQljb3Jlc01hcC5wdXQoaW5zdFNwZWMsIHRoZUNvcmVzKTsJCQkJCi0JCQl9Ci0JCQlJbnN0YW5jZVNwZWNpZmljYXRpb24gdGhlU3lzdGVtID0gVU1MVXRpbHMuZ2V0Um9vdEluc3RhbmNlSW5QYWNrYWdlKHBhY2spOwotCQkJaHdTeXN0ZW1zTGlzdC5hZGQodGhlU3lzdGVtKTsKLQkJCXByb2Nlc3NvcnNNYXAucHV0KHBhY2ssIHByb2Nlc3NvcnMpOwotCQl9Ci0gCQkKLSAJCWlmIChod1N5c3RlbXNMaXN0LmlzRW1wdHkoKSkgewotIAkJCU1vZGVsRXJyb3IgbWUgPSBuZXcgTW9kZWxFcnJvcigiRXJyb3IgaW4gbW9kZWw6IG5vIFN5c3RlbSBpbiB0aGUgRGVwbG95bWVudCBWaWV3ISIpOwotCQkJdGhyb3cgbWU7Ci0gCQl9Ci0KLQkJRUxpc3Q8SW5zdGFuY2VTcGVjaWZpY2F0aW9uPiBpbnN0YW5jZXMgPSBVTUxVdGlscy5nZXRBbGxDb21wb25lbnRJbnN0YW5jZXModW1sTW9kZWwsIHRydWUpOwotCQl0YXNrcyA9IFF1ZXJ5VXRpbHMuZ2V0Q0hUYXNrc0xpc3QoaW5zdGFuY2VzKTsKLQotCQlvcGVyYXRpb25MaXN0ID0gUXVlcnlVdGlscy5nZXRPcGVyYXRpb25DaGFpbih1bWxNb2RlbCwgdGFza3MpOwotCQlhc3NpZ25tZW50cyA9IFVNTFV0aWxzLmdldFRhc2syQ29yZUFzc2lnbm1lbnRzKHVtbE1vZGVsLCBDSEVTU1Byb2ZpbGVNYW5hZ2VyLkRFUExPWU1FTlRfVklFVyk7Ci0JfQotCi0JLyoqCi0JICogVGhlIENsYXNzIENvbS4KLQkgKi8KLQljbGFzcyBDb20gZXh0ZW5kcyBSZWNvcmRpbmdDb21tYW5kIHsKLQotCQkvKiogVGhlIGFzc2lnbmVkIG9wZXJhdGlvbnMuICovCi0JCXByaXZhdGUgSGFzaFNldDxDSFRhc2s+IGFzc2lnbmVkT3BlcmF0aW9uczsKLQotCQkvKioKLQkJICogSW5zdGFudGlhdGVzIGEgbmV3IGNvbS4KLQkJICoKLQkJICogQHBhcmFtIGRvbWFpbiB0aGUgZG9tYWluCi0JCSAqLwotCQlwdWJsaWMgQ29tKFRyYW5zYWN0aW9uYWxFZGl0aW5nRG9tYWluIGRvbWFpbikgewotCQkJc3VwZXIoZG9tYWluKTsKLQkJfQotCi0JCS8qIChub24tSmF2YWRvYykKLQkJICogQHNlZSBvcmcuZWNsaXBzZS5lbWYudHJhbnNhY3Rpb24uUmVjb3JkaW5nQ29tbWFuZCNkb0V4ZWN1dGUoKQotCQkgKi8KLQkJQE92ZXJyaWRlCi0JCXByb3RlY3RlZCB2b2lkIGRvRXhlY3V0ZSgpIHsKLQotCQkJTWFwPENIQ29yZSwgTGlua2VkSGFzaFNldDxPYmplY3Q+PiBjb3JlMmNodGFzayA9IG5ldyBIYXNoTWFwPENIQ29yZSwgTGlua2VkSGFzaFNldDxPYmplY3Q+PigpOwotCi0JCQlmb3IgKENIQ29yZSBjb3JlIDogcmVzdWx0LmtleVNldCgpKSB7Ci0JCQkJYXNzaWduZWRPcGVyYXRpb25zID0gbmV3IEhhc2hTZXQ8Q0hUYXNrPigpOwotCQkJCUxpbmtlZEhhc2hTZXQ8T2JqZWN0PiBsaXN0ID0gbmV3IExpbmtlZEhhc2hTZXQ8T2JqZWN0PigpOwotCQkJCWZvciAoT2JqZWN0IHRhc2sgOiByZXN1bHQuZ2V0KGNvcmUpKSB7Ci0JCQkJCUNIVGFzayBvd25pbmdUYXNrID0gKENIVGFzaykgdGFzazsKLQkJCQkJbGlzdC5hZGQob3duaW5nVGFzayk7Ci0JCQkJCWFkZFJlbGF0ZWRPcGVyYXRpb25zKG93bmluZ1Rhc2ssIGxpc3QpOwotCQkJCX0KLQkJCQljb3JlMmNodGFzay5wdXQoY29yZSwgbGlzdCk7Ci0JCQl9CQotCi0JCQlRdWVyeVV0aWxzLmRlbGV0ZVRhc2syQ29yZUFzc29jaWF0aW9ucyhod1N5c3RlbSk7Ci0JCQlHZW5lcmF0b3JVdGlscy5idWlsZFRhc2syQ29yZUFzc29jaWF0aW9ucyhod1N5c3RlbSwgY29yZTJjaHRhc2spOwotCQl9Ci0KLQkJLy90aGUgcmVsYXRlZCBvcGVyYXRpb25zIG9mIGEgdGFzayBhcmUgYXNzaWduZWQgdG8gdGhlIHNhbWUgY29yZSBvZiB0aGUgdGFzaywKLQkJLyoqCi0JCSAqIEFkZHMgdGhlIHJlbGF0ZWQgb3BlcmF0aW9ucy4KLQkJICoKLQkJICogQHBhcmFtIG93bmluZ1Rhc2sgdGhlIG93bmluZyB0YXNrCi0JCSAqIEBwYXJhbSBsaXN0IHRoZSBsaXN0Ci0JCSAqLwotCQkvL1RPRE8gZm9yIG5vdyBldmVyeSBvcGVyYXRpb24gc2hhcmVkIGJ5IG11bHRpcGxlIHRhc2tzIGlzIGFzc2lnbmVkIHRvIHRoZSBzYW1lIGNvcmUgb2YgdGhlIGZpcnN0IHRhc2sgdGhhdCB3YXMgcHJvY2Vzc2VkCi0JCXByaXZhdGUgdm9pZCBhZGRSZWxhdGVkT3BlcmF0aW9ucyhDSFRhc2sgb3duaW5nVGFzaywgTGlua2VkSGFzaFNldDxPYmplY3Q+IGxpc3QpIHsKLQkJCWZvciAoQ0hUYXNrIG9wZXJhdGlvbiA6IG9wZXJhdGlvbkxpc3QuZ2V0KG93bmluZ1Rhc2spKSB7Ci0JCQkJaWYoIWFzc2lnbmVkT3BlcmF0aW9ucy5jb250YWlucyhvcGVyYXRpb24pKSB7Ci0JCQkJCWxpc3QuYWRkKG9wZXJhdGlvbik7Ci0JCQkJCWFzc2lnbmVkT3BlcmF0aW9ucy5hZGQob3BlcmF0aW9uKTsKLQkJCQl9Ci0JCQl9Ci0JCX0KLQl9Ci19CisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqIENvcHlyaWdodCAoQykgMjAyMCANCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQorICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisgIC0NCisgIC0gQ29weXJpZ2h0IChjKSAyMDE1LTIwMTYgVW5pdmVyc2l0eSBvZiBQYWRvdmEsIElUQUxZIC0gIEludGVjcyBTcEEgDQorICAtIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgIC0gYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQorICAtIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICAtIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQorICAtDQorICAtIENvbnRyaWJ1dG9yczoNCisgIC0NCisgIC0gQWxlc3NhbmRybyBab3ZpIGF6b3ZpQG1hdGgudW5pcGQuaXQNCisgIC0gU3RlZmFubyBQdXJpIHN0ZWZhbm8ucHVyaUBpbnRlY3MuaXQNCisgIC0gTGF1cmEgQmFyYWNjaGkgbGF1cmEuYmFyYWNjaGlAaW50ZWNzLml0DQorICAtIE5pY2hvbGFzIFBhY2luaSBuaWNob2xhcy5wYWNpbmlAaW50ZWNzLml0ICANCisgIC0NCisgIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uIGFuZC9vciBpbml0aWFsIGRvY3VtZW50YXRpb24NCisgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovcGFja2FnZSBvcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlLmNvbW1hbmRzOw0KKw0KK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0Ow0KK2ltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsNCitpbXBvcnQgamF2YS51dGlsLkhhc2hTZXQ7DQoraW1wb3J0IGphdmEudXRpbC5MaW5rZWRIYXNoU2V0Ow0KK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsNCitpbXBvcnQgamF2YS51dGlsLk1hcDsNCitpbXBvcnQgamF2YS51dGlsLlNldDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLkJhc2ljRUxpc3Q7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24udXRpbC5FTGlzdDsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLnRyYW5zYWN0aW9uLlJlY29yZGluZ0NvbW1hbmQ7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi50cmFuc2FjdGlvbi5UcmFuc2FjdGlvbmFsRWRpdGluZ0RvbWFpbjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLnRyYW5zYWN0aW9uLnV0aWwuVHJhbnNhY3Rpb25VdGlsOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLklMYWJlbFByb3ZpZGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS53aW5kb3cuV2luZG93Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLk1BUlRFLk1BUlRFX0ZvdW5kYXRpb25zLkFsbG9jLkFzc2lnbjsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5pbmZyYS5jb3JlLnNlcnZpY2VzLlNlcnZpY2VFeGNlcHRpb247DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuaW5mcmEuY29yZS5zZXJ2aWNlcy5TZXJ2aWNlc1JlZ2lzdHJ5Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLmluZnJhLmVtZi51dGlscy5TZXJ2aWNlVXRpbHNGb3JSZXNvdXJjZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5pbmZyYS5zZXJ2aWNlcy5sYWJlbHByb3ZpZGVyLnNlcnZpY2UuTGFiZWxQcm92aWRlclNlcnZpY2U7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuaW5mcmEud2lkZ2V0cy5wcm92aWRlcnMuRmlsdGVyZWRDb250ZW50UHJvdmlkZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuaW5mcmEud2lkZ2V0cy5wcm92aWRlcnMuSVN0YXRpY0NvbnRlbnRQcm92aWRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5pbmZyYS53aWRnZXRzLnByb3ZpZGVycy5TdGF0aWNDb250ZW50UHJvdmlkZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuaW5mcmEud2lkZ2V0cy5zZWxlY3RvcnMuUmVmZXJlbmNlU2VsZWN0b3I7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkRpc3BsYXk7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLlNoZWxsOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5DbGFzc2lmaWVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5Db21wb25lbnQ7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLkVsZW1lbnQ7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLkluc3RhbmNlU3BlY2lmaWNhdGlvbjsNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuTW9kZWw7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLlBhY2thZ2U7DQoraW1wb3J0IG9yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS5QcmVkaWN0YWJpbGl0eS5EZXBsb3ltZW50Q29uZmlndXJhdGlvbi5IYXJkd2FyZUJhc2VsaW5lLkNIX0h3UHJvY2Vzc29yOw0KK2ltcG9ydCBvcmcucG9sYXJzeXMuY2hlc3MuY29yZS5wcm9maWxlcy5DSEVTU1Byb2ZpbGVNYW5hZ2VyOw0KK2ltcG9ydCBvcmcucG9sYXJzeXMuY2hlc3MuY29yZS51dGlsLnVtbC5Nb2RlbEVycm9yOw0KK2ltcG9ydCBvcmcucG9sYXJzeXMuY2hlc3MuY29yZS51dGlsLnVtbC5VTUxVdGlsczsNCitpbXBvcnQgb3JnLnBvbGFyc3lzLmNoZXNzLm11bHRpY29yZS5SZWZlcmVuY2VTZWxlY3Rvck5vRG91YmxlQ2xpY2s7DQoraW1wb3J0IG9yZy5wb2xhcnN5cy5jaGVzcy5tdWx0aWNvcmUuZGlhbG9ncy5Db3JlU2VsZWN0b3JEaWFsb2c7DQoraW1wb3J0IG9yZy5wb2xhcnN5cy5jaGVzcy5tdWx0aWNvcmUuZGlhbG9ncy5TeXN0ZW1TZWxlY3Rpb25EaWFsb2c7DQoraW1wb3J0IG9yZy5wb2xhcnN5cy5jaGVzcy5tdWx0aWNvcmUubW9kZWwuQWJzdHJhY3RDb21tYW5kOw0KK2ltcG9ydCBvcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlLm1vZGVsLkNIQ29yZTsNCitpbXBvcnQgb3JnLnBvbGFyc3lzLmNoZXNzLm11bHRpY29yZS5tb2RlbC5DSFRhc2s7DQoraW1wb3J0IG9yZy5wb2xhcnN5cy5jaGVzcy5tdWx0aWNvcmUudXRpbHMuR2VuZXJhdG9yVXRpbHM7DQoraW1wb3J0IG9yZy5wb2xhcnN5cy5jaGVzcy5tdWx0aWNvcmUudXRpbHMuUXVlcnlVdGlsczsNCisNCisvKioNCisgKiBUaGUgQ2xhc3MgQXNzaWduVGFza3MyQ29yZXNDb21tYW5kLg0KKyAqLw0KK3B1YmxpYyBjbGFzcyBBc3NpZ25UYXNrczJDb3Jlc0NvbW1hbmQgZXh0ZW5kcw0KK0Fic3RyYWN0Q29tbWFuZCB7DQorDQorCS8qKiBUaGUgdGFza3MuICovDQorCXByaXZhdGUgRUxpc3Q8Q0hUYXNrPiB0YXNrczsJDQorCQ0KKwkvKiogVGhlIHByb2Nlc3NvcnMgbWFwLiAqLw0KKwlwcml2YXRlIE1hcDxQYWNrYWdlLCBFTGlzdDxJbnN0YW5jZVNwZWNpZmljYXRpb24+PiBwcm9jZXNzb3JzTWFwID0gIG5ldyBIYXNoTWFwPFBhY2thZ2UsIEVMaXN0PEluc3RhbmNlU3BlY2lmaWNhdGlvbj4+KCk7DQorCQ0KKwkvKiogVGhlIGNvcmVzIG1hcC4gKi8NCisJcHJpdmF0ZSBNYXA8SW5zdGFuY2VTcGVjaWZpY2F0aW9uLCBFTGlzdDxDSENvcmU+PiBjb3Jlc01hcCA9IG5ldyBIYXNoTWFwPEluc3RhbmNlU3BlY2lmaWNhdGlvbiwgRUxpc3Q8Q0hDb3JlPj4oKTsNCisJDQorCS8qKiBUaGUgcmVzdWx0LiAqLw0KKwlwcml2YXRlIE1hcDxDSENvcmUsIExpbmtlZEhhc2hTZXQ8T2JqZWN0Pj4gcmVzdWx0Ow0KKwkNCisJLyoqIFRoZSBodyBzeXN0ZW0uICovDQorCXByaXZhdGUgc3RhdGljIENvbXBvbmVudCBod1N5c3RlbTsNCisJDQorCS8qKiBUaGUgb3BlcmF0aW9uIGxpc3QuICovDQorCXByaXZhdGUgSGFzaE1hcDxDSFRhc2ssIEVMaXN0PENIVGFzaz4+IG9wZXJhdGlvbkxpc3Q7DQorCQ0KKwkvKiogVGhlIGFzc2lnbm1lbnRzLiAqLw0KKwlwcml2YXRlIEVMaXN0PEFzc2lnbj4gYXNzaWdubWVudHM7DQorCQ0KKwkvKiogVGhlIGh3IHN5c3RlbXMgbGlzdC4gKi8NCisJcHJpdmF0ZSBFTGlzdDxJbnN0YW5jZVNwZWNpZmljYXRpb24+IGh3U3lzdGVtc0xpc3QgPSBuZXcgQmFzaWNFTGlzdDxJbnN0YW5jZVNwZWNpZmljYXRpb24+KCk7DQorDQorCQ0KKwkvKioNCisJICogT3BlbiBzZWxlY3RvciB0byBjaG9vc2UgSFcgc3lzdGVtIHdoZXJlIGFzc2lnbiB0YXNrcy4NCisJICoNCisJICogQHBhcmFtIHVtbE1vZGVsIHRoZSB1bWwgbW9kZWwNCisJICogQHBhcmFtIGh3U3lzdGVtc0xpc3QgdGhlIGh3IHN5c3RlbXMgbGlzdA0KKwkgKiBAcmV0dXJuIHRoZSBpbnN0YW5jZSBzcGVjaWZpY2F0aW9uDQorCSAqLw0KKwlwcml2YXRlIHN0YXRpYyBJbnN0YW5jZVNwZWNpZmljYXRpb24gb3BlblN5c3RlbVNlbGVjdG9yIChNb2RlbCB1bWxNb2RlbCwgDQorCQkJRUxpc3Q8SW5zdGFuY2VTcGVjaWZpY2F0aW9uPiBod1N5c3RlbXNMaXN0KSB7DQorDQorCQkvLyBGaXJzdCBvZiBhbGwgc2hvdyBzZWxlY3RvciB0byBzZWxlY3QgSHdTeXN0ZW0NCisJCUxpc3Q8SW5zdGFuY2VTcGVjaWZpY2F0aW9uPiBzeXN0ZW1TZWxlY3Rpb24gPSBuZXcgQXJyYXlMaXN0PEluc3RhbmNlU3BlY2lmaWNhdGlvbj4oKTsNCisJCWZvciAoSW5zdGFuY2VTcGVjaWZpY2F0aW9uIHN5c3QgOiBod1N5c3RlbXNMaXN0KSB7DQorCQkJc3lzdGVtU2VsZWN0aW9uLmFkZChzeXN0KTsNCisJCX0NCisNCisJCVNoZWxsIGFjdGl2ZVNoZWxsID0gRGlzcGxheS5nZXREZWZhdWx0KCkuZ2V0QWN0aXZlU2hlbGwoKTsNCisJCVN5c3RlbVNlbGVjdGlvbkRpYWxvZyBzeXN0ZW1EaWFsb2cgPSBuZXcgU3lzdGVtU2VsZWN0aW9uRGlhbG9nKGFjdGl2ZVNoZWxsLCBzeXN0ZW1TZWxlY3Rpb24sICJTZWxlY3QgU3lzdGVtIHdoZXJlIHRvIGFzc2lnbiB0YXNrcyIpOw0KKwkJaWYgKHN5c3RlbURpYWxvZy5vcGVuKCkgPT0gV2luZG93Lk9LKSB7DQorCQkJU3RyaW5nIHNlbGVjdGVkU3lzdGVtUU4gPSBzeXN0ZW1EaWFsb2cuZ2V0U3lzdGVtTmFtZSgpOw0KKwkJCUVMaXN0PEVsZW1lbnQ+IGFsbEVsZW1zID0gdW1sTW9kZWwuYWxsT3duZWRFbGVtZW50cygpOw0KKwkJCWZvciAoRWxlbWVudCBlbGVtIDogYWxsRWxlbXMpIHsNCisJCQkJSW5zdGFuY2VTcGVjaWZpY2F0aW9uIHRoZVN5c3RlbTsNCisJCQkJaWYgKGVsZW0gaW5zdGFuY2VvZiBJbnN0YW5jZVNwZWNpZmljYXRpb24pIHsNCisJCQkJCXRoZVN5c3RlbSA9IChJbnN0YW5jZVNwZWNpZmljYXRpb24pZWxlbTsNCisJCQkJCWlmICh0aGVTeXN0ZW0uZ2V0UXVhbGlmaWVkTmFtZSgpIT1udWxsICYmIHRoZVN5c3RlbS5nZXRRdWFsaWZpZWROYW1lKCkuZXF1YWxzKHNlbGVjdGVkU3lzdGVtUU4pKSB7CQkJCQkJCQ0KKwkJCQkJCUNsYXNzaWZpZXIgY2xhc3NpZiA9IHRoZVN5c3RlbS5nZXRDbGFzc2lmaWVycygpLmdldCgwKTsNCisJCQkJCQlod1N5c3RlbSA9IChDb21wb25lbnQpY2xhc3NpZjsNCisJCQkJCQlyZXR1cm4gdGhlU3lzdGVtOw0KKwkJCQkJfQkJCQkNCisJCQkJfQ0KKwkJCX0NCisJCX0NCisJCXJldHVybiBudWxsOw0KKwl9DQorDQorDQorCS8qKg0KKwkgKiBPcGVuIHRoZSBXaXphcmQgd2luZG93IHRvIGFzc2lnbiB0YXNrcyB0byBDb3JlcyAoZm9yIHRoZSBzZWxlY3RlZCBIVyBTeXN0ZW0pLg0KKwkgKg0KKwkgKiBAcGFyYW0gdGFza3MgdGhlIHRhc2tzDQorCSAqIEBwYXJhbSBwYWNrIHRoZSBwYWNrDQorCSAqIEBwYXJhbSBjb3JlcyB0aGUgY29yZXMNCisJICogQHBhcmFtIGFzc2lnbm1lbnRzIHRoZSBhc3NpZ25tZW50cw0KKwkgKiBAcmV0dXJuIHRoZSBtYXANCisJICovDQorCXByaXZhdGUgc3RhdGljIE1hcDxDSENvcmUsIExpbmtlZEhhc2hTZXQ8T2JqZWN0Pj4gb3BlbldpemFyZCgNCisJCQlmaW5hbCBFTGlzdDxDSFRhc2s+IHRhc2tzLA0KKwkJCVBhY2thZ2UgcGFjaywNCisJCQlFTGlzdDxDSENvcmU+IGNvcmVzLA0KKwkJCUVMaXN0PEFzc2lnbj4gYXNzaWdubWVudHMpIHsNCisNCisvLwkJZmluYWwgU2VydmljZXNSZWdpc3RyeSBzZXJ2aWNlc1JlZ2lzdHJ5ID0gKChJTXVsdGlEaWFncmFtRWRpdG9yKSAoUGxhdGZvcm1VSQ0KKy8vCQkJCS5nZXRXb3JrYmVuY2goKS5nZXRBY3RpdmVXb3JrYmVuY2hXaW5kb3coKS5nZXRBY3RpdmVQYWdlKCkNCisvLwkJCQkuZ2V0QWN0aXZlRWRpdG9yKCkpKS5nZXRTZXJ2aWNlc1JlZ2lzdHJ5KCk7DQorCQkNCisJCVNlcnZpY2VzUmVnaXN0cnkgc2VydmljZXNSZWdpc3RyeSA9IG51bGw7DQorCQl0cnkgew0KKwkJCXNlcnZpY2VzUmVnaXN0cnkgPSBTZXJ2aWNlVXRpbHNGb3JSZXNvdXJjZS5nZXRJbnN0YW5jZSgpLmdldFNlcnZpY2VSZWdpc3RyeShwYWNrLmVSZXNvdXJjZSgpKTsNCisJCX0gY2F0Y2ggKFNlcnZpY2VFeGNlcHRpb24gZTEpIHsNCisJCQkvLyBUT0RPIEF1dG8tZ2VuZXJhdGVkIGNhdGNoIGJsb2NrDQorCQkJZTEucHJpbnRTdGFja1RyYWNlKCk7DQorCQkJcmV0dXJuIG51bGw7DQorCQl9DQorDQorCQkvLyBMb29rIGZvciB0aGUgdGFza3MgdGhhdCBhcmUgbm90IGFzc2lnbmVkIHRvIGEgUHJvY2Vzc29yIGluIHRoaXMgcGFja2FnZSAoZGVwbG95bWVudCkNCisJCUVMaXN0PENIVGFzaz4gdGFza05vdFlldEFzc2lnbmVkVG9Db3JlID0gbmV3IEJhc2ljRUxpc3Q8Q0hUYXNrPigpOw0KKwkJZm9yIChDSFRhc2sgaSA6IHRhc2tzKSB7DQorCQkJaWYgKCEoUXVlcnlVdGlscy5pc1Rhc2tBc3NpZ25lZDJDb3JlKGksIHBhY2ssIGFzc2lnbm1lbnRzKSkpIHsNCisJCQkJdGFza05vdFlldEFzc2lnbmVkVG9Db3JlLmFkZChpKTsJCQkNCisJCQl9DQorCQl9CQ0KKwkJDQorCQlmaW5hbCBSZWZlcmVuY2VTZWxlY3RvciByZWZlcmVuY2VTZWxlY3RvciA9IG5ldyBSZWZlcmVuY2VTZWxlY3Rvck5vRG91YmxlQ2xpY2soDQorCQkJCXRydWUsIG51bGwsIHRhc2tOb3RZZXRBc3NpZ25lZFRvQ29yZSk7DQorDQorCQlmaW5hbCBJU3RhdGljQ29udGVudFByb3ZpZGVyIHNlbWFudGljUHJvdmlkZXIgPSBuZXcgU3RhdGljQ29udGVudFByb3ZpZGVyKA0KKwkJCQl0YXNrcy50b0FycmF5KCkpOw0KKw0KKwkJZmluYWwgRmlsdGVyZWRDb250ZW50UHJvdmlkZXIgZmlsdGVyZWRQcm92aWRlciA9IG5ldyBGaWx0ZXJlZENvbnRlbnRQcm92aWRlcigNCisJCQkJc2VtYW50aWNQcm92aWRlcik7CQkNCisJCXJlZmVyZW5jZVNlbGVjdG9yLnNldENvbnRlbnRQcm92aWRlcihmaWx0ZXJlZFByb3ZpZGVyKTsJCQ0KKw0KKwkJQ29yZVNlbGVjdG9yRGlhbG9nIGRpYWxvZyA9IG51bGw7DQorDQorCQlJTGFiZWxQcm92aWRlciBzZXJ2ID0gbnVsbDsNCisJCXRyeSB7DQorCQkJc2VydiA9IHNlcnZpY2VzUmVnaXN0cnkuZ2V0U2VydmljZShMYWJlbFByb3ZpZGVyU2VydmljZS5jbGFzcykNCisJCQkJCS5nZXRMYWJlbFByb3ZpZGVyKCk7DQorCQl9IGNhdGNoIChmaW5hbCBTZXJ2aWNlRXhjZXB0aW9uIGUpIHsNCisJCQkvLyBBY3RpdmF0b3IubG9nLmVycm9yKCJMYWJlbFByb3ZpZGVyU2VydmljZU5vdEZvdW5kIiwgZSk7DQorCQl9DQorDQorCQlyZWZlcmVuY2VTZWxlY3Rvci5zZXRMYWJlbFByb3ZpZGVyKHNlcnYpOw0KKwkJZGlhbG9nID0gbmV3IENvcmVTZWxlY3RvckRpYWxvZyhEaXNwbGF5LmdldERlZmF1bHQoKQ0KKwkJCQkuZ2V0QWN0aXZlU2hlbGwoKSwgcmVmZXJlbmNlU2VsZWN0b3IsIGNvcmVzLCBwYWNrLCBhc3NpZ25tZW50cywNCisJCQkJQ29yZVNlbGVjdG9yRGlhbG9nLlRBU0tTX1RPX0NPUkVTLA0KKwkJCQkiQXNzaWduIFRhc2tzIHRvIENvcmVzIik7DQorDQorCQlkaWFsb2cuc2V0TGFiZWxQcm92aWRlcihzZXJ2KTsNCisJCS8vZGlhbG9nLnNldE1lc3NhZ2UoIk1lc3NhZ2VzLkNyZWF0ZURpYWdyYW1JbWFnZV9MaWZlbGluZURpYWxvZ01lc3NhZ2UiKTsNCisJCS8vZGlhbG9nLnNldFRpdGxlKCJNZXNzYWdlcy5DcmVhdGVEaWFncmFtSW1hZ2VfTGlmZWxpbmVEaWFsb2dUaXRsZSIpOw0KKwkJLy8gZGlhbG9nLnNldEluaXRpYWxFbGVtZW50U2VsZWN0aW9ucyhpbnN0czIpOw0KKw0KKwkJaWYgKGRpYWxvZy5vcGVuKCkgPT0gb3JnLmVjbGlwc2UuamZhY2Uud2luZG93LldpbmRvdy5PSykgew0KKwkJCU1hcDxDSENvcmUsIExpbmtlZEhhc2hTZXQ8T2JqZWN0Pj4gcmVzdWx0ID0gZGlhbG9nDQorCQkJCQkuZ2V0UmVzdWx0KCk7DQorCQkJaWYgKHJlc3VsdCAhPSBudWxsKQ0KKwkJCQlyZXR1cm4gcmVzdWx0Ow0KKwkJfQ0KKwkJcmV0dXJuIG51bGw7DQorCX0NCisNCisNCisJLyogKG5vbi1KYXZhZG9jKQ0KKwkgKiBAc2VlIG9yZy5wb2xhcnN5cy5jaGVzcy5tdWx0aWNvcmUubW9kZWwuQWJzdHJhY3RDb21tYW5kI2V4ZWN1dGUoKQ0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyB2b2lkIGV4ZWN1dGUoKSB0aHJvd3MgTW9kZWxFcnJvciB7DQorCQlxdWVyeUNvbnRlbnQodW1sTW9kZWwpOw0KKwkJcHJpbnRDb250ZW50KCk7CQkNCisJCQ0KKwkJaW50IGhvd01hbnkgPSBod1N5c3RlbXNMaXN0LnNpemUoKTsNCisJCQ0KKwkJSW5zdGFuY2VTcGVjaWZpY2F0aW9uIHRoZVN5c3RlbSA9IG51bGw7DQorCQlpZiAoaG93TWFueSA+IDEpIHsNCisJCQl0aGVTeXN0ZW0gPSBvcGVuU3lzdGVtU2VsZWN0b3IodW1sTW9kZWwsIGh3U3lzdGVtc0xpc3QpOw0KKwkJfQ0KKwkJZWxzZSB7DQorCQkJdGhlU3lzdGVtID0gaHdTeXN0ZW1zTGlzdC5nZXQoMCk7DQorCQl9DQorCQkNCisJCWlmICh0aGVTeXN0ZW0hPW51bGwpIHsNCisJCQlQYWNrYWdlIHBhY2sgPSBRdWVyeVV0aWxzLmdldE93bmVyQ0hHYVJlc291cmNlUGxhdGZvcm1QYWNrYWdlKHVtbE1vZGVsLCB0aGVTeXN0ZW0pOw0KKwkNCisJCQlFTGlzdDxJbnN0YW5jZVNwZWNpZmljYXRpb24+IHByb2Nlc3Nvckxpc3QgPSBwcm9jZXNzb3JzTWFwLmdldChwYWNrKTsNCisJDQorCQkJRUxpc3Q8Q0hDb3JlPiBjb3JlcyA9ICBuZXcgQmFzaWNFTGlzdDxDSENvcmU+KCk7DQorCQkJaWYgKHByb2Nlc3Nvckxpc3QhPW51bGwpIHsJCQkJCQkNCisJCQkJZm9yIChJbnN0YW5jZVNwZWNpZmljYXRpb24gcHJvYyA6IHByb2Nlc3Nvckxpc3QpIHsNCisJCQkJCUVMaXN0PENIQ29yZT4gY29yZUxpc3QgPSBjb3Jlc01hcC5nZXQocHJvYyk7DQorCQkJCQlmb3IgKENIQ29yZSBjb3JlIDogY29yZUxpc3QpIHsNCisJCQkJCQljb3Jlcy5hZGQoY29yZSk7DQorCQkJCQl9DQorCQkJCX0NCisJCQl9DQorCQ0KKwkJCXJlc3VsdCA9IG9wZW5XaXphcmQodGFza3MsIHBhY2ssIGNvcmVzLCBhc3NpZ25tZW50cyk7DQorCQ0KKwkJCWlmIChyZXN1bHQgIT0gbnVsbCkgew0KKwkJCQl1cGRhdGVNb2RlbCgpOw0KKwkJCX0NCisJCX0NCisJfQ0KKw0KKwkNCisJLyoqDQorCSAqIFByaW50cyB0aGUgY29udGVudC4NCisJICovDQorCXByaXZhdGUgdm9pZCBwcmludENvbnRlbnQoKSB7DQorCQlTeXN0ZW0ub3V0LnByaW50bG4oIlRhc2tzOiIpOw0KKwkJZm9yIChDSFRhc2sgY29tcG9uZW50IDogdGFza3MpIHsNCisJCQlTeXN0ZW0ub3V0LnByaW50bG4oY29tcG9uZW50KTsNCisJCX0JCQ0KKwkJU2V0PFBhY2thZ2U+IHBhY2tzID0gcHJvY2Vzc29yc01hcC5rZXlTZXQoKTsNCisJCWZvciAoUGFja2FnZSBwYWNrOiBwYWNrcykgew0KKwkJCVN5c3RlbS5vdXQucHJpbnRsbigiUGFja2FnZTogIitwYWNrLmdldE5hbWUoKSk7DQorCQkJRUxpc3Q8SW5zdGFuY2VTcGVjaWZpY2F0aW9uPiBwcm9jTGlzdCA9IHByb2Nlc3NvcnNNYXAuZ2V0KHBhY2spOw0KKwkJCWZvciAoSW5zdGFuY2VTcGVjaWZpY2F0aW9uIHRoZVByb2MgOiBwcm9jTGlzdCkgew0KKwkJCQlTeXN0ZW0ub3V0LnByaW50bG4oIlByb2Nlc3NvcjogIit0aGVQcm9jLmdldE5hbWUoKSk7CQkJCSANCisJCQkJRUxpc3Q8Q0hDb3JlPiBjb3JlTGlzdCA9IGNvcmVzTWFwLmdldCh0aGVQcm9jKTsNCisJCQkJZm9yIChDSENvcmUgdGhlQ29yZSA6IGNvcmVMaXN0KSB7DQorCQkJCQlTeXN0ZW0ub3V0LnByaW50bG4oIkNvcmU6ICIrdGhlQ29yZS5nZXROYW1lKCkpOw0KKwkJCQl9DQorCQkJfQ0KKwkJfQ0KKwl9DQorDQorCQ0KKwkvKioNCisJICogVXBkYXRlIG1vZGVsLg0KKwkgKi8NCisJcHJpdmF0ZSB2b2lkIHVwZGF0ZU1vZGVsKCkgew0KKwkJVHJhbnNhY3Rpb25hbEVkaXRpbmdEb21haW4gZWRpdGluZ0RvbWFpbiA9IFRyYW5zYWN0aW9uVXRpbA0KKwkJCQkuZ2V0RWRpdGluZ0RvbWFpbih1bWxNb2RlbCk7DQorCQllZGl0aW5nRG9tYWluLmdldENvbW1hbmRTdGFjaygpLmV4ZWN1dGUobmV3IENvbShlZGl0aW5nRG9tYWluKSk7DQorCX0NCisNCisJLyoqDQorCSAqIEdldCBhbGwgdGhhdCBpcyBuZWVkZWQgZnJvbSB0aGUgbW9kZWwuDQorCSAqDQorCSAqIEBwYXJhbSB1bWxNb2RlbCB0aGUgdW1sIG1vZGVsDQorCSAqIEB0aHJvd3MgTW9kZWxFcnJvciB0aGUgbW9kZWwgZXJyb3INCisJICovDQorCXByaXZhdGUgdm9pZCBxdWVyeUNvbnRlbnQoTW9kZWwgdW1sTW9kZWwpIHRocm93cyBNb2RlbEVycm9yIHsNCisJCXRyeXsNCisJCQlod1N5c3RlbSA9IFVNTFV0aWxzLmdldFJlc291cmNlUGxhdGZvcm1Db21wb25lbnQodW1sTW9kZWwsIENIRVNTUHJvZmlsZU1hbmFnZXIuREVQTE9ZTUVOVF9WSUVXKTsNCisJCX1jYXRjaCAoTW9kZWxFcnJvciBtZSl7DQorCQkJTW9kZWxFcnJvciBtZTIgPSBuZXcgTW9kZWxFcnJvcihtZS5nZXRNZXNzYWdlKCkrIiBCZSBzdXJlIHRoYXQgSFcgcm9vdCBDb21wb25lbnRzIGluIHRoZSBDb21wb25lbnRWaWV3IGFyZSBzdGVyZW90eXBlZCB3aXRoIENIR2FSZXNvdXJjZVBsYXRvcm0iKTsNCisJCQl0aHJvdyBtZTI7DQorCQl9DQorDQorCQkvLyBMb29rIGZvciBQYWNrYWdlcyBzdGVyZW90eXBlZCBhcyBDSEdBUmVzb3VyY2VQbGF0Zm9ybSBpbiB0aGUgRGVwbG95bWVudCBWaWV3DQorCQlFTGlzdDxQYWNrYWdlPiBwYWNrYWdlcyA9IFF1ZXJ5VXRpbHMuZ2V0UmVzb3VyY2VQbGF0Zm9ybVBhY2thZ2VzKHVtbE1vZGVsLCBDSEVTU1Byb2ZpbGVNYW5hZ2VyLkRFUExPWU1FTlRfVklFVyk7CQkNCisNCisJCWlmIChwYWNrYWdlcy5zaXplKCk9PTApIHsNCisJCQlNb2RlbEVycm9yIG1lID0gbmV3IE1vZGVsRXJyb3IoIkVycm9yIGluIG1vZGVsOiBubyBQYWNrYWdlIHN0ZXJlb3R5cGVkIGFzIENIR0FSZXNvdXJjZVBsYXRmb3JtIGluIHRoZSBEZXBsb3ltZW50IFZpZXchIik7DQorCQkJdGhyb3cgbWU7DQorCQl9DQorCQlod1N5c3RlbXNMaXN0ID0gbmV3IEJhc2ljRUxpc3Q8SW5zdGFuY2VTcGVjaWZpY2F0aW9uPigpOw0KKwkJDQorIAkJZm9yKFBhY2thZ2UgcGFjayA6IHBhY2thZ2VzKSB7CQkNCisJCQlFTGlzdDxJbnN0YW5jZVNwZWNpZmljYXRpb24+IHByb2Nlc3NvcnMgPSBuZXcgQmFzaWNFTGlzdDxJbnN0YW5jZVNwZWNpZmljYXRpb24+KCk7DQorCQkJZm9yIChDSF9Id1Byb2Nlc3NvciBjaF9wcm9jZXNzb3IgOiBRdWVyeVV0aWxzLmdldEFsbFByb2Nlc3Nvckluc3RhbmNlc0luUGFja2FnZShwYWNrKSkgew0KKwkJCQlJbnN0YW5jZVNwZWNpZmljYXRpb24gaW5zdFNwZWMgPSBjaF9wcm9jZXNzb3IuZ2V0QmFzZV9JbnN0YW5jZVNwZWNpZmljYXRpb24oKTsNCisJCQkJcHJvY2Vzc29ycy5hZGQoaW5zdFNwZWMpOwkJCQkNCisJCQkJRUxpc3Q8Q0hDb3JlPiB0aGVDb3JlcyA9IFF1ZXJ5VXRpbHMuZ2V0Q29yZXMoY2hfcHJvY2Vzc29yKTsNCisJCQkJY29yZXNNYXAucHV0KGluc3RTcGVjLCB0aGVDb3Jlcyk7CQkJCQ0KKwkJCX0NCisJCQlJbnN0YW5jZVNwZWNpZmljYXRpb24gdGhlU3lzdGVtID0gVU1MVXRpbHMuZ2V0Um9vdEluc3RhbmNlSW5QYWNrYWdlKHBhY2spOw0KKwkJCWh3U3lzdGVtc0xpc3QuYWRkKHRoZVN5c3RlbSk7DQorCQkJcHJvY2Vzc29yc01hcC5wdXQocGFjaywgcHJvY2Vzc29ycyk7DQorCQl9DQorIAkJDQorIAkJaWYgKGh3U3lzdGVtc0xpc3QuaXNFbXB0eSgpKSB7DQorIAkJCU1vZGVsRXJyb3IgbWUgPSBuZXcgTW9kZWxFcnJvcigiRXJyb3IgaW4gbW9kZWw6IG5vIFN5c3RlbSBpbiB0aGUgRGVwbG95bWVudCBWaWV3ISIpOw0KKwkJCXRocm93IG1lOw0KKyAJCX0NCisNCisJCUVMaXN0PEluc3RhbmNlU3BlY2lmaWNhdGlvbj4gaW5zdGFuY2VzID0gVU1MVXRpbHMuZ2V0QWxsQ29tcG9uZW50SW5zdGFuY2VzKHVtbE1vZGVsLCB0cnVlKTsNCisJCXRhc2tzID0gUXVlcnlVdGlscy5nZXRDSFRhc2tzTGlzdChpbnN0YW5jZXMpOw0KKw0KKwkJb3BlcmF0aW9uTGlzdCA9IFF1ZXJ5VXRpbHMuZ2V0T3BlcmF0aW9uQ2hhaW4odW1sTW9kZWwsIHRhc2tzKTsNCisJCWFzc2lnbm1lbnRzID0gVU1MVXRpbHMuZ2V0VGFzazJDb3JlQXNzaWdubWVudHModW1sTW9kZWwsIENIRVNTUHJvZmlsZU1hbmFnZXIuREVQTE9ZTUVOVF9WSUVXKTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhlIENsYXNzIENvbS4NCisJICovDQorCWNsYXNzIENvbSBleHRlbmRzIFJlY29yZGluZ0NvbW1hbmQgew0KKw0KKwkJLyoqIFRoZSBhc3NpZ25lZCBvcGVyYXRpb25zLiAqLw0KKwkJcHJpdmF0ZSBIYXNoU2V0PENIVGFzaz4gYXNzaWduZWRPcGVyYXRpb25zOw0KKw0KKwkJLyoqDQorCQkgKiBJbnN0YW50aWF0ZXMgYSBuZXcgY29tLg0KKwkJICoNCisJCSAqIEBwYXJhbSBkb21haW4gdGhlIGRvbWFpbg0KKwkJICovDQorCQlwdWJsaWMgQ29tKFRyYW5zYWN0aW9uYWxFZGl0aW5nRG9tYWluIGRvbWFpbikgew0KKwkJCXN1cGVyKGRvbWFpbik7DQorCQl9DQorDQorCQkvKiAobm9uLUphdmFkb2MpDQorCQkgKiBAc2VlIG9yZy5lY2xpcHNlLmVtZi50cmFuc2FjdGlvbi5SZWNvcmRpbmdDb21tYW5kI2RvRXhlY3V0ZSgpDQorCQkgKi8NCisJCUBPdmVycmlkZQ0KKwkJcHJvdGVjdGVkIHZvaWQgZG9FeGVjdXRlKCkgew0KKw0KKwkJCU1hcDxDSENvcmUsIExpbmtlZEhhc2hTZXQ8T2JqZWN0Pj4gY29yZTJjaHRhc2sgPSBuZXcgSGFzaE1hcDxDSENvcmUsIExpbmtlZEhhc2hTZXQ8T2JqZWN0Pj4oKTsNCisNCisJCQlmb3IgKENIQ29yZSBjb3JlIDogcmVzdWx0LmtleVNldCgpKSB7DQorCQkJCWFzc2lnbmVkT3BlcmF0aW9ucyA9IG5ldyBIYXNoU2V0PENIVGFzaz4oKTsNCisJCQkJTGlua2VkSGFzaFNldDxPYmplY3Q+IGxpc3QgPSBuZXcgTGlua2VkSGFzaFNldDxPYmplY3Q+KCk7DQorCQkJCWZvciAoT2JqZWN0IHRhc2sgOiByZXN1bHQuZ2V0KGNvcmUpKSB7DQorCQkJCQlDSFRhc2sgb3duaW5nVGFzayA9IChDSFRhc2spIHRhc2s7DQorCQkJCQlsaXN0LmFkZChvd25pbmdUYXNrKTsNCisJCQkJCWFkZFJlbGF0ZWRPcGVyYXRpb25zKG93bmluZ1Rhc2ssIGxpc3QpOw0KKwkJCQl9DQorCQkJCWNvcmUyY2h0YXNrLnB1dChjb3JlLCBsaXN0KTsNCisJCQl9CQ0KKw0KKwkJCVF1ZXJ5VXRpbHMuZGVsZXRlVGFzazJDb3JlQXNzb2NpYXRpb25zKGh3U3lzdGVtKTsNCisJCQlHZW5lcmF0b3JVdGlscy5idWlsZFRhc2syQ29yZUFzc29jaWF0aW9ucyhod1N5c3RlbSwgY29yZTJjaHRhc2spOw0KKwkJfQ0KKw0KKwkJLy90aGUgcmVsYXRlZCBvcGVyYXRpb25zIG9mIGEgdGFzayBhcmUgYXNzaWduZWQgdG8gdGhlIHNhbWUgY29yZSBvZiB0aGUgdGFzaywNCisJCS8qKg0KKwkJICogQWRkcyB0aGUgcmVsYXRlZCBvcGVyYXRpb25zLg0KKwkJICoNCisJCSAqIEBwYXJhbSBvd25pbmdUYXNrIHRoZSBvd25pbmcgdGFzaw0KKwkJICogQHBhcmFtIGxpc3QgdGhlIGxpc3QNCisJCSAqLw0KKwkJLy9UT0RPIGZvciBub3cgZXZlcnkgb3BlcmF0aW9uIHNoYXJlZCBieSBtdWx0aXBsZSB0YXNrcyBpcyBhc3NpZ25lZCB0byB0aGUgc2FtZSBjb3JlIG9mIHRoZSBmaXJzdCB0YXNrIHRoYXQgd2FzIHByb2Nlc3NlZA0KKwkJcHJpdmF0ZSB2b2lkIGFkZFJlbGF0ZWRPcGVyYXRpb25zKENIVGFzayBvd25pbmdUYXNrLCBMaW5rZWRIYXNoU2V0PE9iamVjdD4gbGlzdCkgew0KKwkJCWZvciAoQ0hUYXNrIG9wZXJhdGlvbiA6IG9wZXJhdGlvbkxpc3QuZ2V0KG93bmluZ1Rhc2spKSB7DQorCQkJCWlmKCFhc3NpZ25lZE9wZXJhdGlvbnMuY29udGFpbnMob3BlcmF0aW9uKSkgew0KKwkJCQkJbGlzdC5hZGQob3BlcmF0aW9uKTsNCisJCQkJCWFzc2lnbmVkT3BlcmF0aW9ucy5hZGQob3BlcmF0aW9uKTsNCisJCQkJfQ0KKwkJCX0NCisJCX0NCisJfQ0KK30NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tdWx0aWNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tdWx0aWNvcmUvY29tbWFuZHMvR2VuZXJhdGVUYXNrMkNvcmVBc3NpZ25tZW50c0NvbW1hbmQuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm11bHRpY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL211bHRpY29yZS9jb21tYW5kcy9HZW5lcmF0ZVRhc2syQ29yZUFzc2lnbm1lbnRzQ29tbWFuZC5qYXZhCmluZGV4IGRlMzNlMmIuLjM0NjQ4OTMgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm11bHRpY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL211bHRpY29yZS9jb21tYW5kcy9HZW5lcmF0ZVRhc2syQ29yZUFzc2lnbm1lbnRzQ29tbWFuZC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm11bHRpY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL211bHRpY29yZS9jb21tYW5kcy9HZW5lcmF0ZVRhc2syQ29yZUFzc2lnbm1lbnRzQ29tbWFuZC5qYXZhCkBAIC0xLDU1NiArMSw1NjMgQEAKLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gIC0KLSAgLSBDb3B5cmlnaHQgKGMpIDIwMTUtMjAxNiBVbml2ZXJzaXR5IG9mIFBhZG92YSwgSVRBTFkgLSAgSW50ZWNzIFNwQSAKLSAgLSBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gIC0gYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gIC0gd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAgLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICAtCi0gIC0gQ29udHJpYnV0b3JzOgotICAtCi0gIC0gQWxlc3NhbmRybyBab3ZpIGF6b3ZpQG1hdGgudW5pcGQuaXQKLSAgLSBTdGVmYW5vIFB1cmkgc3RlZmFuby5wdXJpQGludGVjcy5pdAotICAtIExhdXJhIEJhcmFjY2hpIGxhdXJhLmJhcmFjY2hpQGludGVjcy5pdAotICAtIE5pY2hvbGFzIFBhY2luaSBuaWNob2xhcy5wYWNpbmlAaW50ZWNzLml0ICAKLSAgLQotICAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbiBhbmQvb3IgaW5pdGlhbCBkb2N1bWVudGF0aW9uCi0gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovcGFja2FnZSBvcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlLmNvbW1hbmRzOwotCi1pbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuQXJyYXlzOwotaW1wb3J0IGphdmEudXRpbC5Db21wYXJhdG9yOwotaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOwotaW1wb3J0IGphdmEudXRpbC5IYXNoU2V0OwotaW1wb3J0IGphdmEudXRpbC5IYXNodGFibGU7Ci1pbXBvcnQgamF2YS51dGlsLkxpbmtlZEhhc2hTZXQ7Ci1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLk1hcDsKLWltcG9ydCBqYXZhLnV0aWwuU2V0OwotaW1wb3J0IGphdmEudXRpbC5NYXAuRW50cnk7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuT3BlcmF0aW9uQ2FuY2VsZWRFeGNlcHRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLkJhc2ljRUxpc3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLkVMaXN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi50cmFuc2FjdGlvbi5SZWNvcmRpbmdDb21tYW5kOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi50cmFuc2FjdGlvbi5UcmFuc2FjdGlvbmFsRWRpdGluZ0RvbWFpbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYudHJhbnNhY3Rpb24udXRpbC5UcmFuc2FjdGlvblV0aWw7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uud2luZG93LldpbmRvdzsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5EaXNwbGF5OwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLlNoZWxsOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLkNsYXNzaWZpZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuQ29tcG9uZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLkVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuSW5zdGFuY2VTcGVjaWZpY2F0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLk1vZGVsOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLlBhY2thZ2U7Ci1pbXBvcnQgb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlLlByZWRpY3RhYmlsaXR5LkRlcGxveW1lbnRDb25maWd1cmF0aW9uLkhhcmR3YXJlQmFzZWxpbmUuQ0hfSHdQcm9jZXNzb3I7Ci1pbXBvcnQgb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlLlByZWRpY3RhYmlsaXR5LlJUQ29tcG9uZW50TW9kZWwuQ0hSdFNwZWNpZmljYXRpb247Ci1pbXBvcnQgb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUucHJvZmlsZXMuQ0hFU1NQcm9maWxlTWFuYWdlcjsKLWltcG9ydCBvcmcucG9sYXJzeXMuY2hlc3MuY29yZS51dGlsLnVtbC5Nb2RlbEVycm9yOwotaW1wb3J0IG9yZy5wb2xhcnN5cy5jaGVzcy5jb3JlLnV0aWwudW1sLlVNTFV0aWxzOwotaW1wb3J0IG9yZy5wb2xhcnN5cy5jaGVzcy5tdWx0aWNvcmUuZGlhbG9ncy5TeXN0ZW1TZWxlY3Rpb25EaWFsb2c7Ci1pbXBvcnQgb3JnLnBvbGFyc3lzLmNoZXNzLm11bHRpY29yZS5tb2RlbC5BYnN0cmFjdENvbW1hbmQ7Ci1pbXBvcnQgb3JnLnBvbGFyc3lzLmNoZXNzLm11bHRpY29yZS5tb2RlbC5DSENvcmU7Ci1pbXBvcnQgb3JnLnBvbGFyc3lzLmNoZXNzLm11bHRpY29yZS5tb2RlbC5DSFRhc2s7Ci1pbXBvcnQgb3JnLnBvbGFyc3lzLmNoZXNzLm11bHRpY29yZS5tb2RlbC5TdXBlcnRhc2tJbmZvOwotaW1wb3J0IG9yZy5wb2xhcnN5cy5jaGVzcy5tdWx0aWNvcmUucGFydGl0aW9uaW5nLkJpbjsKLWltcG9ydCBvcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlLnBhcnRpdGlvbmluZy5CaW5QYWNrZXJGYWN0b3J5OwotaW1wb3J0IG9yZy5wb2xhcnN5cy5jaGVzcy5tdWx0aWNvcmUucGFydGl0aW9uaW5nLlJVTlJlZHVjdGlvbjsKLWltcG9ydCBvcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlLnBhcnRpdGlvbmluZy5UYXNrOwotaW1wb3J0IG9yZy5wb2xhcnN5cy5jaGVzcy5tdWx0aWNvcmUudXRpbHMuR2VuZXJhdG9yVXRpbHM7Ci1pbXBvcnQgb3JnLnBvbGFyc3lzLmNoZXNzLm11bHRpY29yZS51dGlscy5RdWVyeVV0aWxzOwotaW1wb3J0IG9yZy5wb2xhcnN5cy5jaGVzcy5tdWx0aWNvcmUudXRpbHMuUXVlcnlVdGlscy5PY2NLaW5kSW5mbzsKLWltcG9ydCBvcmcucG9sYXJzeXMuY2hlc3MudmFsaWRhdG9yLmNvbnN0cmFpbnRzLlN0cmluZ1BhcnNlcjsKLQotLyoqCi0gKiBUaGUgQ2xhc3MgR2VuZXJhdGVUYXNrMkNvcmVBc3NpZ25tZW50c0NvbW1hbmQuCi0gKi8KLXB1YmxpYyBjbGFzcyBHZW5lcmF0ZVRhc2syQ29yZUFzc2lnbm1lbnRzQ29tbWFuZCBleHRlbmRzIEFic3RyYWN0Q29tbWFuZCB7Ci0JCi0JLyoqIFRoZSBvcGVyYXRpb24gbGlzdC4gKi8KLQlwcml2YXRlIEhhc2hNYXA8Q0hUYXNrLCBFTGlzdDxDSFRhc2s+PiBvcGVyYXRpb25MaXN0OwotCi0JLyoqIFRoZSBjb3JlIDIgY2h0YXNrLiAqLwotCXByaXZhdGUgTWFwPENIQ29yZSwgTGlua2VkSGFzaFNldDxPYmplY3Q+PiBjb3JlMmNodGFzazsKLQotCS8qKiBUaGUgcHJvY2Vzc29ycy4gKi8KLQlwcml2YXRlIEVMaXN0PEluc3RhbmNlU3BlY2lmaWNhdGlvbj4gcHJvY2Vzc29yczsKLQotCS8qKiBUaGUgY29yZXMuICovCi0JcHJpdmF0ZSBFTGlzdDxDSENvcmU+IGNvcmVzID0gbmV3IEJhc2ljRUxpc3Q8Q0hDb3JlPigpOwotCi0JLyoqIFRoZSBhc3NpZ25lZCBvcGVyYXRpb25zLiAqLwotCXByaXZhdGUgU2V0PENIVGFzaz4gYXNzaWduZWRPcGVyYXRpb25zID0gbmV3IEhhc2hTZXQ8Q0hUYXNrPigpOwotCi0JLyoqIFRoZSBwcm9jZXNzb3JzIG1hcC4gKi8KLQlwcml2YXRlIE1hcDxQYWNrYWdlLCBFTGlzdDxJbnN0YW5jZVNwZWNpZmljYXRpb24+PiBwcm9jZXNzb3JzTWFwID0gbmV3IEhhc2hNYXA8UGFja2FnZSwgRUxpc3Q8SW5zdGFuY2VTcGVjaWZpY2F0aW9uPj4oKTsKLQkKLQkvKiogVGhlIGNvcmVzIG1hcC4gKi8KLQlwcml2YXRlIE1hcDxJbnN0YW5jZVNwZWNpZmljYXRpb24sIEVMaXN0PENIQ29yZT4+IGNvcmVzTWFwID0gbmV3IEhhc2hNYXA8SW5zdGFuY2VTcGVjaWZpY2F0aW9uLCBFTGlzdDxDSENvcmU+PigpOwotCQotCS8qKiBUaGUgaHcgc3lzdGVtLiAqLwotCXByaXZhdGUgc3RhdGljIENvbXBvbmVudCBod1N5c3RlbTsKLQkKLQkvKiogVGhlIGh3IHN5c3RlbXMgbGlzdC4gKi8KLQlwcml2YXRlIEVMaXN0PEluc3RhbmNlU3BlY2lmaWNhdGlvbj4gaHdTeXN0ZW1zTGlzdCA9IG5ldyBCYXNpY0VMaXN0PEluc3RhbmNlU3BlY2lmaWNhdGlvbj4oKTsKLQotCS8qKiBUaGUgdXNlIFJVTi4gKi8KLQlwcml2YXRlIGJvb2xlYW4gdXNlUlVOOwotCi0JLyoqIFRoZSBzdXBlcnRhc2sgaW5mbyBsaXN0LiAqLwotCXByaXZhdGUgTGlzdDxTdXBlcnRhc2tJbmZvPiBzdXBlcnRhc2tJbmZvTGlzdDsKLQotCS8qKiBUaGUgY29yZSAyIHN1cGVydGFzay4gKi8KLQlwcml2YXRlIEhhc2hNYXA8U3VwZXJ0YXNrSW5mbywgTGlua2VkSGFzaFNldDxPYmplY3Q+PiBjb3JlMnN1cGVydGFzazsKLQotCS8qKgotCSAqIE9wZW4gc2VsZWN0b3IgdG8gY2hvb3NlIEhXIHN5c3RlbSB3aGVyZSBhc3NpZ24gdGFza3MuCi0JICoKLQkgKiBAcGFyYW0gdW1sTW9kZWwgdGhlIHVtbCBtb2RlbAotCSAqIEBwYXJhbSBod1N5c3RlbXNMaXN0IHRoZSBodyBzeXN0ZW1zIGxpc3QKLQkgKiBAcmV0dXJuIHRoZSBpbnN0YW5jZSBzcGVjaWZpY2F0aW9uCi0JICovCi0JcHJpdmF0ZSBzdGF0aWMgSW5zdGFuY2VTcGVjaWZpY2F0aW9uIG9wZW5TeXN0ZW1TZWxlY3RvcihNb2RlbCB1bWxNb2RlbCwgRUxpc3Q8SW5zdGFuY2VTcGVjaWZpY2F0aW9uPiBod1N5c3RlbXNMaXN0KSB7Ci0KLQkJLy8gRmlyc3Qgb2YgYWxsIHNob3cgc2VsZWN0b3IgdG8gc2VsZWN0IEh3U3lzdGVtCi0JCUxpc3Q8SW5zdGFuY2VTcGVjaWZpY2F0aW9uPiBzeXN0ZW1TZWxlY3Rpb24gPSBuZXcgQXJyYXlMaXN0PEluc3RhbmNlU3BlY2lmaWNhdGlvbj4oKTsKLQkJZm9yIChJbnN0YW5jZVNwZWNpZmljYXRpb24gc3lzdCA6IGh3U3lzdGVtc0xpc3QpIHsKLQkJCXN5c3RlbVNlbGVjdGlvbi5hZGQoc3lzdCk7Ci0JCX0KLQotCQlTaGVsbCBhY3RpdmVTaGVsbCA9IERpc3BsYXkuZ2V0RGVmYXVsdCgpLmdldEFjdGl2ZVNoZWxsKCk7Ci0JCVN5c3RlbVNlbGVjdGlvbkRpYWxvZyBzeXN0ZW1EaWFsb2cgPSBuZXcgU3lzdGVtU2VsZWN0aW9uRGlhbG9nKGFjdGl2ZVNoZWxsLCBzeXN0ZW1TZWxlY3Rpb24sICJTZWxlY3QgU3lzdGVtIHdoZXJlIHRvIGFzc2lnbiB0YXNrcyIpOwotCQlpZiAoc3lzdGVtRGlhbG9nLm9wZW4oKSA9PSBXaW5kb3cuT0spIHsKLQkJCVN0cmluZyBzZWxlY3RlZFN5c3RlbVFOID0gc3lzdGVtRGlhbG9nLmdldFN5c3RlbU5hbWUoKTsKLQkJCUVMaXN0PEVsZW1lbnQ+IGFsbEVsZW1zID0gdW1sTW9kZWwuYWxsT3duZWRFbGVtZW50cygpOwotCQkJZm9yIChFbGVtZW50IGVsZW0gOiBhbGxFbGVtcykgewotCQkJCUluc3RhbmNlU3BlY2lmaWNhdGlvbiB0aGVTeXN0ZW07Ci0JCQkJaWYgKGVsZW0gaW5zdGFuY2VvZiBJbnN0YW5jZVNwZWNpZmljYXRpb24pIHsKLQkJCQkJdGhlU3lzdGVtID0gKEluc3RhbmNlU3BlY2lmaWNhdGlvbikgZWxlbTsKLQkJCQkJaWYgKHRoZVN5c3RlbS5nZXRRdWFsaWZpZWROYW1lKCkgIT0gbnVsbCAmJiB0aGVTeXN0ZW0uZ2V0UXVhbGlmaWVkTmFtZSgpLmVxdWFscyhzZWxlY3RlZFN5c3RlbVFOKSkgewotCQkJCQkJQ2xhc3NpZmllciBjbGFzc2lmID0gdGhlU3lzdGVtLmdldENsYXNzaWZpZXJzKCkuZ2V0KDApOwotCQkJCQkJaHdTeXN0ZW0gPSAoQ29tcG9uZW50KSBjbGFzc2lmOwotCQkJCQkJcmV0dXJuIHRoZVN5c3RlbTsKLQkJCQkJfQotCQkJCX0KLQkJCX0KLQkJfQotCQlyZXR1cm4gbnVsbDsKLQl9Ci0KLQkvKiAobm9uLUphdmFkb2MpCi0JICogQHNlZSBvcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlLm1vZGVsLkFic3RyYWN0Q29tbWFuZCNleGVjdXRlKCkKLQkgKi8KLQlAT3ZlcnJpZGUKLQlwdWJsaWMgdm9pZCBleGVjdXRlKCkgdGhyb3dzIE1vZGVsRXJyb3IgewotCQlxdWVyeUNvbnRlbnQodW1sTW9kZWwpOwotCi0JCWludCBob3dNYW55ID0gaHdTeXN0ZW1zTGlzdC5zaXplKCk7Ci0KLQkJSW5zdGFuY2VTcGVjaWZpY2F0aW9uIHRoZVN5c3RlbSA9IG51bGw7Ci0JCWlmIChob3dNYW55ID4gMSkgewotCQkJdGhlU3lzdGVtID0gb3BlblN5c3RlbVNlbGVjdG9yKHVtbE1vZGVsLCBod1N5c3RlbXNMaXN0KTsKLQkJfSBlbHNlIHsKLQkJCXRoZVN5c3RlbSA9IGh3U3lzdGVtc0xpc3QuZ2V0KDApOwotCQl9Ci0KLQkJaWYgKHRoZVN5c3RlbSAhPSBudWxsKSB7Ci0JCQlQYWNrYWdlIHBhY2sgPSBRdWVyeVV0aWxzLmdldE93bmVyQ0hHYVJlc291cmNlUGxhdGZvcm1QYWNrYWdlKHVtbE1vZGVsLCB0aGVTeXN0ZW0pOwotCi0JCQlFTGlzdDxJbnN0YW5jZVNwZWNpZmljYXRpb24+IHByb2Nlc3Nvckxpc3QgPSBwcm9jZXNzb3JzTWFwLmdldChwYWNrKTsKLQotCQkJY29yZXMgPSBuZXcgQmFzaWNFTGlzdDxDSENvcmU+KCk7Ci0JCQlpZiAocHJvY2Vzc29yTGlzdCAhPSBudWxsKSB7Ci0JCQkJZm9yIChJbnN0YW5jZVNwZWNpZmljYXRpb24gcHJvYyA6IHByb2Nlc3Nvckxpc3QpIHsKLQkJCQkJRUxpc3Q8Q0hDb3JlPiBjb3JlTGlzdCA9IGNvcmVzTWFwLmdldChwcm9jKTsKLQkJCQkJZm9yIChDSENvcmUgY29yZSA6IGNvcmVMaXN0KSB7Ci0JCQkJCQljb3Jlcy5hZGQoY29yZSk7Ci0JCQkJCX0KLQkJCQl9Ci0JCQl9Ci0KLQkJCWV4ZWN1dGVUYXNrMkNvcmVDYWxjdWxhdG9yKGZhbHNlKTsKLQotCQkJLy8gcHJpbnRDb250ZW50KCk7Ci0JCQlpZiAoY29yZTJjaHRhc2sgIT0gbnVsbCkgewotCQkJCXVwZGF0ZU1vZGVsKCk7Ci0JCQl9Ci0JCX0KLQl9Ci0KLQkvKioKLQkgKiBFeGVjdXRlIHRhc2sgMiBjb3JlIGNhbGN1bGF0b3IuCi0JICoKLQkgKiBAcGFyYW0gZm9yY2VVc2VPZlJVTiB0aGUgZm9yY2UgdXNlIG9mIFJVTgotCSAqIEB0aHJvd3MgTW9kZWxFcnJvciB0aGUgbW9kZWwgZXJyb3IKLQkgKi8KLQlwcm90ZWN0ZWQgdm9pZCBleGVjdXRlVGFzazJDb3JlQ2FsY3VsYXRvcihib29sZWFuIGZvcmNlVXNlT2ZSVU4pIHRocm93cyBNb2RlbEVycm9yIHsKLQotCQlMaXN0PEJpbj4gYWxsQmlucyA9IG5ldyBBcnJheUxpc3Q8QmluPigpOwotCQlMaXN0PFRhc2s+IGFsbFRhc2tzID0gbmV3IEFycmF5TGlzdDxUYXNrPigpOwotCQlTeXN0ZW0ub3V0LmZvcm1hdCgiV2UgaGF2ZSAlZCBjb3Jlc1xuIiwgY29yZXMuc2l6ZSgpKTsKLQkJLy8gaW5pdCBiaW5zCi0JCWZvciAoaW50IGkgPSAwOyBpIDwgY29yZXMuc2l6ZSgpOyBpKyspCi0JCQlhbGxCaW5zLmFkZChuZXcgQmluKGkpKTsKLQotCQlmb3IgKENIVGFzayBjaFJ0U3BlY2lmaWNhdGlvbiA6IG9wZXJhdGlvbkxpc3Qua2V5U2V0KCkpIHsKLQotCQkJU3RyaW5nIG9jY0tpbmQgPSBjaFJ0U3BlY2lmaWNhdGlvbi5nZXRDSFJ0U3BlY2lmaWNhdGlvbigpLmdldE9jY0tpbmQoKTsKLQkJCU9jY0tpbmRJbmZvIGluZm8gPSBRdWVyeVV0aWxzLmdldE9jY0tpbmRJbmZvKG9jY0tpbmQpOwotCi0JCQlkb3VibGUgY18gPSBRdWVyeVV0aWxzLmdldFdDRVQoY2hSdFNwZWNpZmljYXRpb24uZ2V0Q0hSdFNwZWNpZmljYXRpb24oKSk7Ci0JCQkvKiBhZGQgdGhlIHdjZXQgZm9yIGVhY2ggb3BlcmF0aW9uIHJlbGF0aXZlIHRvIHRoaXMgY2hydHNwZWMgKi8KLQkJCWZvciAoQ0hUYXNrIHNwZWMgOiBvcGVyYXRpb25MaXN0LmdldChjaFJ0U3BlY2lmaWNhdGlvbikpIHsKLQkJCQlkb3VibGUgY18xID0gUXVlcnlVdGlscy5nZXRXQ0VUKHNwZWMuZ2V0Q0hSdFNwZWNpZmljYXRpb24oKSk7Ci0JCQkJY18gKz0gY18xOwotCQkJfQotCQkJU3RyaW5nUGFyc2VyIHNwID0gbmV3IFN0cmluZ1BhcnNlcigpOwotCQkJZG91YmxlIGRfID0gc3AuZ2V0VmFsdWVORlAoY2hSdFNwZWNpZmljYXRpb24uZ2V0Q0hSdFNwZWNpZmljYXRpb24oKS5nZXRSbERsKCkpOwotCQkJZG91YmxlIHRfID0gaW5mby52YWx1ZTsKLQotCQkJLy8gZF8gPSB4eHgucmVtb3ZlKDApOwotCQkJLy8gdF8gPSBkXzsKLQotCQkJU3RyaW5nIG5hbWUgPSBnZXRUYXNrSUQoY2hSdFNwZWNpZmljYXRpb24uZ2V0Q0hSdFNwZWNpZmljYXRpb24oKSk7Ci0KLQkJCWZsb2F0IGMgPSAoZmxvYXQpIGNfOy8vIGV4ZWMgdGltZQotCQkJZmxvYXQgZCA9IChmbG9hdCkgZF87Ly8gZGVhZGxpbmUKLQkJCWZsb2F0IHQgPSAoZmxvYXQpIHRfOy8vIHBlcmlvZAotCQkJZmxvYXQgbyA9IDA7Ly8gVE9ETyBpbnNlcnQgb2Zmc2V0IGluIHN0ZXJlb3R5cGUKLQotCQkJZG91YmxlIHVfID0gYyAvIHQ7Ci0JCQlmbG9hdCB1ID0gKGZsb2F0KSB1XzsKLQotCQkJU3lzdGVtLm91dC5wcmludGxuKCJUYXNrICIgKyBuYW1lICsgIiAtPiAiICsgYyArICIgIiArIGQgKyAiICIgKyB0ICsgIiAtPiAiICsgdSk7Ci0JCQlhbGxUYXNrcy5hZGQobmV3IFRhc2sobmFtZSwgbmV3IEZsb2F0KGMpLCBuZXcgRmxvYXQoZCksIG5ldyBGbG9hdCh0KSwgbmV3IEZsb2F0KG8pLCBudWxsKSk7Ci0KLQkJfQotCi0JCU1hcDxCaW4sIExpc3Q8VGFzaz4+IGZpcnN0UGFjayA9IEJpblBhY2tlckZhY3RvcnkuZ2V0QmluUGFja2VyKG9yZy5wb2xhcnN5cy5jaGVzcy5tdWx0aWNvcmUucGFydGl0aW9uaW5nLkhldXJpc3RpYy5XT1JTVF9GSVQpLnBhY2soYWxsQmlucywgYWxsVGFza3MpOwotCQlNYXA8QmluLCBMaXN0PFRhc2s+PiByZWR1Y3Rpb25UcmVlID0gbmV3IEhhc2h0YWJsZTxCaW4sIExpc3Q8VGFzaz4+KGZpcnN0UGFjayk7Ci0KLQkJdXNlUlVOID0gcmVkdWN0aW9uVHJlZS5zaXplKCkgPiBhbGxCaW5zLnNpemUoKTsKLQkJaWYgKGZvcmNlVXNlT2ZSVU4pCi0JCQl1c2VSVU4gPSB0cnVlOwotCi0JCWlmICh1c2VSVU4pIHsKLQkJCVN5c3RlbS5vdXQucHJpbnRsbigiU3RhcnRpbmcgUlVOIHBhY2tpbmciKTsKLQkJCWFsbFRhc2tzID0gbmV3IEFycmF5TGlzdDxUYXNrPigpOwotCQkJZm9yIChCaW4gYmluIDogcmVkdWN0aW9uVHJlZS5rZXlTZXQoKSkKLQkJCQlhbGxUYXNrcy5hZGQobmV3IFRhc2soYmluLmdldElkKCkudG9TdHJpbmcoKSwgYmluLmdldENhcGFjaXR5KCkpKTsKLQkJCXJlZHVjdGlvblRyZWUgPSBuZXcgUlVOUmVkdWN0aW9uKCkucGFjayhudWxsLCBhbGxUYXNrcyk7Ci0JCQlmb3IgKGphdmEudXRpbC5NYXAuRW50cnk8QmluLCBMaXN0PFRhc2s+PiByb3cgOiByZWR1Y3Rpb25UcmVlLmVudHJ5U2V0KCkpIHsKLQkJCQlTeXN0ZW0ub3V0LnByaW50KCJMRVZFTCAiICsgcm93LmdldEtleSgpLmdldExldmVsKCkgKyAiLSIgKyByb3cuZ2V0S2V5KCkuZ2V0SWQoKSArICIoVT0iICsgcm93LmdldEtleSgpLmdldENhcGFjaXR5KCkgKyAiKSAtPiB7Iik7Ci0JCQkJZm9yIChUYXNrIHQgOiByb3cuZ2V0VmFsdWUoKSkKLQkJCQkJU3lzdGVtLm91dC5wcmludCgiICIgKyB0LmdldElkKCkgKyAiLCIpOwotCQkJCVN5c3RlbS5vdXQucHJpbnRsbigifSIpOwotCQkJfQotCQkJYnVpbGRSVU5Bc3NvY2lhdGlvbnMoZmlyc3RQYWNrLCByZWR1Y3Rpb25UcmVlKTsKLQkJfSBlbHNlCi0JCQkvLyBCdWlsZCBtb2RlbCByZXN1bHRzCi0JCQlidWlsZEFzc29jaWF0aW9ucyhmaXJzdFBhY2spOwotCX0KLQotCS8qKgotCSAqIEJ1aWxkcyB0aGUgUlVOIGFzc29jaWF0aW9ucy4KLQkgKgotCSAqIEBwYXJhbSBmaXJzdFBhY2sgdGhlIGZpcnN0IHBhY2sKLQkgKiBAcGFyYW0gcmVkdWN0aW9uVHJlZSB0aGUgcmVkdWN0aW9uIHRyZWUKLQkgKiBAdGhyb3dzIE1vZGVsRXJyb3IgdGhlIG1vZGVsIGVycm9yCi0JICovCi0JcHJpdmF0ZSB2b2lkIGJ1aWxkUlVOQXNzb2NpYXRpb25zKE1hcDxCaW4sIExpc3Q8VGFzaz4+IGZpcnN0UGFjaywgTWFwPEJpbiwgTGlzdDxUYXNrPj4gcmVkdWN0aW9uVHJlZSkgdGhyb3dzIE1vZGVsRXJyb3IgewotCQkvLyBhZGQgY2h0YXNrcyB3aGljaCByZXByZXNlbnQgcmVhbCB0YXNrcyB0byB0aGUgY29yZSBtYXAgYW5kIGFkZCB0aGUKLQkJLy8gcmVsYXRlZCBvcGVyYXRpb24gY2hhaW4gdG8gdGhlIHNhbWUgY29yZQotCQkvLyBUT0RPIHNvbHZlIHRoZSBmb2xsb3dpbmcgcHJvYmxlbTogdGhlIHJlbGF0ZWQgb3BlcmF0aW9ucyBtYXkgYmUgc2hhcmVkCi0JCS8vIGJldHdlZW4gdGFza3Mgd2hpY2ggY2FuIGJlIGFzc2lnbmVkIHRvIGRpZmZlcmVudCBjb3JlcyEKLQotCQljb3JlMnN1cGVydGFzayA9IG5ldyBIYXNoTWFwPFN1cGVydGFza0luZm8sIExpbmtlZEhhc2hTZXQ8T2JqZWN0Pj4oKTsKLQotCQlPYmplY3RbXSBmaXJzdFBhY2tTb3J0ZWQgPSBmaXJzdFBhY2suZW50cnlTZXQoKS50b0FycmF5KCk7Ci0JCUFycmF5cy5zb3J0KGZpcnN0UGFja1NvcnRlZCwgbmV3IENvbXBhcmF0b3I8T2JqZWN0PigpIHsKLQotCQkJQE92ZXJyaWRlCi0JCQlwdWJsaWMgaW50IGNvbXBhcmUoT2JqZWN0IG8xLCBPYmplY3QgbzIpIHsKLQkJCQlpZiAoKChFbnRyeTxCaW4sIExpc3Q8VGFzaz4+KSBvMSkuZ2V0S2V5KCkuZ2V0SWQoKSA+ICgoRW50cnk8QmluLCBMaXN0PFRhc2s+PikgbzIpLmdldEtleSgpLmdldElkKCkpCi0JCQkJCXJldHVybiAxOwotCQkJCWVsc2UgaWYgKCgoRW50cnk8QmluLCBMaXN0PFRhc2s+PikgbzEpLmdldEtleSgpLmdldElkKCkgPCAoKEVudHJ5PEJpbiwgTGlzdDxUYXNrPj4pIG8yKS5nZXRLZXkoKS5nZXRJZCgpKQotCQkJCQlyZXR1cm4gLTE7Ci0JCQkJZWxzZQotCQkJCQlyZXR1cm4gMDsKLQkJCX0KLQkJfSk7Ci0KLQkJT2JqZWN0W10gYWxsQmlucyA9IHJlZHVjdGlvblRyZWUua2V5U2V0KCkudG9BcnJheSgpOwotCQlBcnJheXMuc29ydChhbGxCaW5zLCBuZXcgQ29tcGFyYXRvcjxPYmplY3Q+KCkgewotCi0JCQlAT3ZlcnJpZGUKLQkJCXB1YmxpYyBpbnQgY29tcGFyZShPYmplY3QgbzEsIE9iamVjdCBvMikgewotCQkJCWlmICgoKEJpbikgbzEpLmdldExldmVsKCkgPiAoKEJpbikgbzIpLmdldExldmVsKCkpCi0JCQkJCXJldHVybiAtMTsKLQkJCQllbHNlIGlmICgoKEJpbikgbzEpLmdldExldmVsKCkgPCAoKEJpbikgbzIpLmdldExldmVsKCkpCi0JCQkJCXJldHVybiAxOwotCQkJCWVsc2UKLQkJCQkJcmV0dXJuIDA7Ci0JCQl9Ci0JCX0pOwotCi0JCS8vIERFUFRILUZJUlNUIHByaW50Ci0JCS8vIHJvb3QgbGV2ZWwKLQotCQlDSF9Id1Byb2Nlc3NvciBwcm9jSW5zdGFuY2UgPSBRdWVyeVV0aWxzLmdldEFsbFByb2Nlc3Nvckluc3RhbmNlcyh1bWxNb2RlbCkuZ2V0KDApOwotCi0JCWludCBtYXhMZXZlbCA9ICgoQmluKSBhbGxCaW5zWzBdKS5nZXRMZXZlbCgpOwotCQlTeXN0ZW0ub3V0LnByaW50bG4oIi0tIFByaW1hcnkgU2NoZWR1bGVyc1xuIik7Ci0JCVN5c3RlbS5vdXQucHJpbnRsbigiU2NoZWR1bGVyICgiKTsKLQkJU3lzdGVtLm91dC5wcmludGxuKCIJVHlwZQk9PiBQcmltYXJ5X1NjaGVkdWxlciwiKTsKLQkJU3lzdGVtLm91dC5wcmludGxuKCIJTmFtZQk9PiBTY2hlZHVsZXJfMSwiKTsKLQkJU3lzdGVtLm91dC5wcmludGxuKCIJUG9saWN5CT0+ICggVHlwZSA9PiBSVU4gKSwiKTsKLQkJU3lzdGVtLm91dC5wcmludGxuKCIJSG9zdAk9PiBNdWx0aWNvcmVfMSApOyIpOy8vIFRPRE86IGRlcGVuZHMgb24gQ0hSVAotCQkvLyBzcGVjaWZpY2F0aW9uCi0JCVN5c3RlbS5vdXQucHJpbnRsbigiXG4tLSBQcmltYXJ5IFNjaGVkdWxpbmcgU2VydmVycyBhbmQgU2Vjb25kYXJ5IFNjaGVkdWxlcnNcbiIpOwotCQlpbnQgaW5kZXhTdXBlcnRhc2sgPSAwOwotCQkvLyBhbGwgbGV2ZWxzIG9mIHRoZSB0cmVlIGluIHRoZSBpbnRlcnZhbCAocm9vdCwwXQotCQlzdXBlcnRhc2tJbmZvTGlzdCA9IG5ldyBBcnJheUxpc3Q8U3VwZXJ0YXNrSW5mbz4oKTsKLQkJZm9yIChpbnQgaSA9IDE7IChpIDwgYWxsQmlucy5sZW5ndGgpICYmICgoKEJpbikgYWxsQmluc1tpXSkuZ2V0TGV2ZWwoKSA+PSAwKTsgaSsrKSB7Ci0JCQljcmVhdGVTdXBlcnRhc2tJbmZvKHByb2NJbnN0YW5jZSwgaW5kZXhTdXBlcnRhc2ssICgoQmluKSBhbGxCaW5zW2ldKS5nZXRDYXBhY2l0eSgpKTsKLQotCQkJYXNzaWduZWRPcGVyYXRpb25zID0gbmV3IEhhc2hTZXQ8Q0hUYXNrPigpOwotCQkJLy8gZmlyc3QgcGFjazogcHJpbnQgbGVhZiBub2RlcwotCQkJaWYgKCgoQmluKSBhbGxCaW5zW2ldKS5nZXRMZXZlbCgpID09IDApIHsKLQkJCQlMaXN0PFRhc2s+IHRhc2tzID0gcmVkdWN0aW9uVHJlZS5nZXQoKChCaW4pIGFsbEJpbnNbaV0pKTsKLQkJCQlMaW5rZWRIYXNoU2V0PE9iamVjdD4gbGlzdCA9IG5ldyBMaW5rZWRIYXNoU2V0PE9iamVjdD4oKTsKLQkJCQlmb3IgKFRhc2sgdGFzayA6IHRhc2tzKSB7Ci0JCQkJCUxpc3Q8VGFzaz4gbGVhdmVzID0gKChFbnRyeTxCaW4sIExpc3Q8VGFzaz4+KSBmaXJzdFBhY2tTb3J0ZWRbbmV3IEludGVnZXIodGFzay5nZXRJZCgpKV0pLmdldFZhbHVlKCk7Ci0JCQkJCWZvciAoVGFzayBsZWFmIDogbGVhdmVzKSB7Ci0JCQkJCQlTeXN0ZW0ub3V0LnByaW50bG4oIlNjaGVkdWxpbmdfU2VydmVyICgiKTsKLQkJCQkJCVN5c3RlbS5vdXQucHJpbnRsbigiCVR5cGUJCQkJPT4gUmVndWxhciwiKTsKLQkJCQkJCVN5c3RlbS5vdXQucHJpbnRsbigiCU5hbWUgCQkJCT0+ICIgKyBsZWFmLmdldElkKCkgKyAiLCIpOwotCQkJCQkJU3lzdGVtLm91dC5wcmludGxuKCIJU2VydmVyX1NjaGVkX1BhcmFtZXRlcnMJCT0+ICgiKTsKLQkJCQkJCVN5c3RlbS5vdXQucHJpbnRsbigiCQlUeXBlCQkJPT4gRURGX3BvbGljeSwiKTsKLQkJCQkJCVN5c3RlbS5vdXQucHJpbnRsbigiCQlEZWFkbGluZQkJPT4gIiArIGxlYWYuZ2V0VCgpICsgIiwiKTsKLQkJCQkJCVN5c3RlbS5vdXQucHJpbnRsbigiICAgICAgICAgICAgICAgIFByZWFzc2lnbmVkICAgICAgICAgICAgID0+IE5vKSwiKTsKLQkJCQkJCVN5c3RlbS5vdXQucHJpbnRsbigiCVNjaGVkdWxlcgkJCT0+IFNlY29uZGFyeVNjaGVkdWxlcl8iICsgaW5kZXhTdXBlcnRhc2sgKyAiKTsiKTsKLQkJCQkJCVN5c3RlbS5vdXQucHJpbnRsbigpOwotCi0JCQkJCQlDSFRhc2sgb3duaW5nVGFzayA9IGdldENIUlRGcm9tVGFzayhsZWFmKTsKLQkJCQkJCWxpc3QuYWRkKG93bmluZ1Rhc2spOwotCQkJCQkJYWRkUmVsYXRlZE9wZXJhdGlvbnMob3duaW5nVGFzaywgbGlzdCk7Ci0KLQkJCQkJfQotCi0JCQkJfQotCQkJCWNvcmUyc3VwZXJ0YXNrLnB1dChzdXBlcnRhc2tJbmZvTGlzdC5nZXQoaW5kZXhTdXBlcnRhc2spLCBsaXN0KTsKLQkJCX0KLQkJCWluZGV4U3VwZXJ0YXNrKys7Ci0JCX0KLQl9Ci0KLQkvKioKLQkgKiBDcmVhdGVzIHRoZSBzdXBlcnRhc2sgaW5mby4KLQkgKgotCSAqIEBwYXJhbSBjaF9Id1Byb2Nlc3NvciB0aGUgY2ggaHcgcHJvY2Vzc29yCi0JICogQHBhcmFtIGluZGV4U3VwZXJ0YXNrIHRoZSBpbmRleCBzdXBlcnRhc2sKLQkgKiBAcGFyYW0gY2FwYWNpdHkgdGhlIGNhcGFjaXR5Ci0JICovCi0JcHJpdmF0ZSB2b2lkIGNyZWF0ZVN1cGVydGFza0luZm8oQ0hfSHdQcm9jZXNzb3IgY2hfSHdQcm9jZXNzb3IsIGludCBpbmRleFN1cGVydGFzaywgRmxvYXQgY2FwYWNpdHkpIHsKLQkJU3VwZXJ0YXNrSW5mbyBzaSA9IG5ldyBTdXBlcnRhc2tJbmZvKGNoX0h3UHJvY2Vzc29yLmdldEJhc2VfSW5zdGFuY2VTcGVjaWZpY2F0aW9uKCksICJTdXBlclRhc2tfIiArIGluZGV4U3VwZXJ0YXNrLCBjYXBhY2l0eSk7Ci0JCXN1cGVydGFza0luZm9MaXN0LmFkZChzaSk7Ci0JCVN5c3RlbS5vdXQucHJpbnRsbigiLS0qKioqKioqKioqKioqKiogQlJBTkNIICoqKioqKioqKioqKioqKiIpOwotCQlTeXN0ZW0ub3V0LnByaW50bG4oIlNjaGVkdWxpbmdfU2VydmVyICgiKTsKLQkJU3lzdGVtLm91dC5wcmludGxuKCIJVHlwZQkJCQk9PiBSZWd1bGFyLCIpOwotCQlTeXN0ZW0ub3V0LnByaW50bG4oIglOYW1lCQkJCT0+IFN1cGVyVGFza18iICsgaW5kZXhTdXBlcnRhc2sgKyAiLCIpOwotCQlTeXN0ZW0ub3V0LnByaW50bG4oIglTZXJ2ZXJfU2NoZWRfcGFyYW1ldGVycwkJPT4gKCBUeXBlID0+IFJVTl9TdXBlcnRhc2ssIik7Ci0JCVN5c3RlbS5vdXQucHJpbnRsbigiCQkJCQkgICAgIFV0aWxpemF0aW9uID0+ICIgKyBjYXBhY2l0eSArICIgKSwiKTsgLy8gRklYTUU6Ci0JCS8vIHV0aWxpemF0aW9uCi0JCS8vIGlzCi0JCS8vIG5vdAotCQkvLyBleHByZXNzZWQKLQkJLy8gYXMgVQotCQkvLyBpbgotCQkvLyBHZW9mZnJleSdzCi0JCS8vIGV4YW1wbGUKLQkJU3lzdGVtLm91dC5wcmludGxuKCIJU2NoZWR1bGVyCQkJPT4gU2NoZWR1bGVyXzEgKTsiKTsKLQkJU3lzdGVtLm91dC5wcmludGxuKCk7Ci0JCVN5c3RlbS5vdXQucHJpbnRsbigiU2NoZWR1bGVyICgiKTsKLQkJU3lzdGVtLm91dC5wcmludGxuKCIJVHlwZQk9PiBTZWNvbmRhcnlfU2NoZWR1bGVyLCIpOwotCQlTeXN0ZW0ub3V0LnByaW50bG4oIglOYW1lCT0+IFNlY29uZGFyeVNjaGVkdWxlcl8iICsgaW5kZXhTdXBlcnRhc2sgKyAiLCIpOwotCQlTeXN0ZW0ub3V0LnByaW50bG4oIglQb2xpY3kJPT4gKCAJVHlwZQk9PiBFREYsIik7Ci0JCVN5c3RlbS5vdXQucHJpbnRsbigiCQkJV29yc3RfQ29udGV4dF9Td2l0Y2gJPT4gMjAgKSwiKTsvLyBGSVhNRTogYmFzZWQgb24KLQkJLy8gQ29tcGFnbmluIHBhcGVyCi0JCS8vIGF0IEVDUlRTMjAxNAotCQlTeXN0ZW0ub3V0LnByaW50bG4oIglTZXJ2ZXIJPT4gU3VwZXJUYXNrXyIgKyBpbmRleFN1cGVydGFzayArICIgKTsiKTsKLQkJU3lzdGVtLm91dC5wcmludGxuKCk7Ci0JfQotCi0JLyoqCi0JICogQnVpbGRzIHRoZSBhc3NvY2lhdGlvbnMuCi0JICoKLQkgKiBAcGFyYW0gZmlyc3RQYWNrIHRoZSBmaXJzdCBwYWNrCi0JICovCi0JcHVibGljIHZvaWQgYnVpbGRBc3NvY2lhdGlvbnMoTWFwPEJpbiwgTGlzdDxUYXNrPj4gZmlyc3RQYWNrKSB7Ci0JCS8vIGFkZCBjaHRhc2tzIHdoaWNoIHJlcHJlc2VudCByZWFsIHRhc2tzIHRvIHRoZSBjb3JlIG1hcCBhbmQgYWRkIHRoZQotCQkvLyByZWxhdGVkIG9wZXJhdGlvbiBjaGFpbiB0byB0aGUgc2FtZSBjb3JlCi0JCS8vIFRPRE8gc29sdmUgdGhlIGZvbGxvd2luZyBwcm9ibGVtOiB0aGUgcmVsYXRlZCBvcGVyYXRpb25zIG1heSBiZSBzaGFyZWQKLQkJLy8gYmV0d2VlbiB0YXNrcyB3aGljaCBjYW4gYmUgYXNzaWduZWQgdG8gZGlmZmVyZW50IGNvcmVzIQotCi0JCWNvcmUyY2h0YXNrID0gbmV3IEhhc2hNYXA8Q0hDb3JlLCBMaW5rZWRIYXNoU2V0PE9iamVjdD4+KCk7Ci0JCWludCBjb3JlSW5kZXggPSAwOwotCQlmb3IgKEJpbiBjb3JlIDogZmlyc3RQYWNrLmtleVNldCgpKSB7Ci0JCQlhc3NpZ25lZE9wZXJhdGlvbnMgPSBuZXcgSGFzaFNldDxDSFRhc2s+KCk7Ci0JCQlMaW5rZWRIYXNoU2V0PE9iamVjdD4gbGlzdCA9IG5ldyBMaW5rZWRIYXNoU2V0PE9iamVjdD4oKTsKLQkJCWZvciAoVGFzayB0YXNrIDogZmlyc3RQYWNrLmdldChjb3JlKSkgewotCQkJCUNIVGFzayBvd25pbmdUYXNrID0gZ2V0Q0hSVEZyb21UYXNrKHRhc2spOwotCQkJCWxpc3QuYWRkKG93bmluZ1Rhc2spOwotCQkJCWFkZFJlbGF0ZWRPcGVyYXRpb25zKG93bmluZ1Rhc2ssIGxpc3QpOwotCQkJfQotCQkJY29yZTJjaHRhc2sucHV0KGNvcmVzLmdldChjb3JlSW5kZXgrKyksIGxpc3QpOwotCQl9Ci0JfQotCi0JLy8gdGhlIHJlbGF0ZWQgb3BlcmF0aW9ucyBvZiBhIHRhc2sgYXJlIGFzc2lnbmVkIHRvIHRoZSBzYW1lIGNvcmUgb2YgdGhlIHRhc2ssCi0JLy8gVE9ETyBmb3Igbm93IGV2ZXJ5IG9wZXJhdGlvbiBzaGFyZWQgYnkgbXVsdGlwbGUgdGFza3MgaXMgYXNzaWduZWQgdG8gdGhlCi0JLyoqCi0JICogQWRkcyB0aGUgcmVsYXRlZCBvcGVyYXRpb25zLgotCSAqCi0JICogQHBhcmFtIG93bmluZ1Rhc2sgdGhlIG93bmluZyB0YXNrCi0JICogQHBhcmFtIGxpc3QgdGhlIGxpc3QKLQkgKi8KLQkvLyBzYW1lIGNvcmUgb2YgdGhlIGZpcnN0IHRhc2sgdGhhdCB3YXMgcHJvY2Vzc2VkCi0JcHJpdmF0ZSB2b2lkIGFkZFJlbGF0ZWRPcGVyYXRpb25zKENIVGFzayBvd25pbmdUYXNrLCBMaW5rZWRIYXNoU2V0PE9iamVjdD4gbGlzdCkgewotCQlmb3IgKENIVGFzayBvcGVyYXRpb24gOiBvcGVyYXRpb25MaXN0LmdldChvd25pbmdUYXNrKSkgewotCQkJaWYgKCFhc3NpZ25lZE9wZXJhdGlvbnMuY29udGFpbnMob3BlcmF0aW9uKSkgewotCQkJCWxpc3QuYWRkKG9wZXJhdGlvbik7Ci0JCQkJYXNzaWduZWRPcGVyYXRpb25zLmFkZChvcGVyYXRpb24pOwotCQkJfQotCQl9Ci0JfQotCi0JLyoqCi0JICogR2V0cyB0aGUgdGFzayBJRC4KLQkgKgotCSAqIEBwYXJhbSBjaFJ0U3BlY2lmaWNhdGlvbiB0aGUgY2ggcnQgc3BlY2lmaWNhdGlvbgotCSAqIEByZXR1cm4gdGhlIHRhc2sgSUQKLQkgKi8KLQlwcml2YXRlIFN0cmluZyBnZXRUYXNrSUQoQ0hSdFNwZWNpZmljYXRpb24gY2hSdFNwZWNpZmljYXRpb24pIHsKLQkJcmV0dXJuIGNoUnRTcGVjaWZpY2F0aW9uLmdldENvbnRleHQoKS5nZXROYW1lKCkgKyBVTUxVdGlscy5nZXRFbGVtZW50SUQoY2hSdFNwZWNpZmljYXRpb24uZ2V0Q29udGV4dCgpKTsKLQl9Ci0KLQkvKioKLQkgKiBHZXRzIHRoZSBDSFJUIGZyb20gdGFzay4KLQkgKgotCSAqIEBwYXJhbSB0YXNrIHRoZSB0YXNrCi0JICogQHJldHVybiB0aGUgQ0hSVCBmcm9tIHRhc2sKLQkgKi8KLQlwcml2YXRlIENIVGFzayBnZXRDSFJURnJvbVRhc2soVGFzayB0YXNrKSB7Ci0JCWZvciAoQ0hUYXNrIGNodGFzayA6IG9wZXJhdGlvbkxpc3Qua2V5U2V0KCkpIHsKLQkJCWlmIChnZXRUYXNrSUQoY2h0YXNrLmdldENIUnRTcGVjaWZpY2F0aW9uKCkpLmVxdWFscyh0YXNrLmdldElkKCkpKQotCQkJCXJldHVybiBjaHRhc2s7Ci0JCX0KLQkJcmV0dXJuIG51bGw7Ci0JfQotCi0JLyoqCi0JICogUHJpbnRzIHRoZSBjb250ZW50LgotCSAqLwotCXByaXZhdGUgdm9pZCBwcmludENvbnRlbnQoKSB7Ci0JCVN5c3RlbS5vdXQucHJpbnRsbigiVGFza3M6Iik7Ci0JCWZvciAoQ0hUYXNrIGNodGFzayA6IG9wZXJhdGlvbkxpc3Qua2V5U2V0KCkpIHsKLQkJCVN5c3RlbS5vdXQucHJpbnRsbihjaHRhc2spOwotCQl9Ci0JfQotCi0JLyoqCi0JICogVXBkYXRlIG1vZGVsLgotCSAqLwotCXByb3RlY3RlZCB2b2lkIHVwZGF0ZU1vZGVsKCkgewotCQlib29sZWFuIGIxID0gY29yZTJjaHRhc2sgIT0gbnVsbCAmJiAhY29yZTJjaHRhc2suaXNFbXB0eSgpOwotCQlib29sZWFuIGIyID0gY29yZTJzdXBlcnRhc2sgIT0gbnVsbCAmJiAhY29yZTJzdXBlcnRhc2suaXNFbXB0eSgpOwotCi0JCWlmIChiMSB8fCBiMikgewotCi0JCQlUcmFuc2FjdGlvbmFsRWRpdGluZ0RvbWFpbiBlZGl0aW5nRG9tYWluID0gVHJhbnNhY3Rpb25VdGlsLmdldEVkaXRpbmdEb21haW4odW1sTW9kZWwpOwotCQkJZWRpdGluZ0RvbWFpbi5nZXRDb21tYW5kU3RhY2soKS5leGVjdXRlKG5ldyBDb20oZWRpdGluZ0RvbWFpbikpOwotCQl9Ci0JfQotCi0JLyoqCi0JICogUXVlcnkgY29udGVudC4KLQkgKgotCSAqIEBwYXJhbSBvd25lciB0aGUgb3duZXIKLQkgKiBAdGhyb3dzIE1vZGVsRXJyb3IgdGhlIG1vZGVsIGVycm9yCi0JICovCi0JcHJvdGVjdGVkIHZvaWQgcXVlcnlDb250ZW50KE1vZGVsIG93bmVyKSB0aHJvd3MgTW9kZWxFcnJvciB7Ci0JCUVMaXN0PENIX0h3UHJvY2Vzc29yPiB4ID0gUXVlcnlVdGlscy5nZXRBbGxQcm9jZXNzb3JJbnN0YW5jZXModW1sTW9kZWwpOwotCQl4ID0gUXVlcnlVdGlscy5maWx0ZXJNdWx0aUNvcmVQcm9jZXNzb3JzKHgpOwotCQlpZiAoeC5zaXplKCkgPiAxKQotCQkJdGhyb3cgbmV3IE1vZGVsRXJyb3IoIkFzc2lnbm1lbnQgZ2VuZXJhdGlvbiB3b3JrcyBvbmx5IG9uIHNpbmdsZSBwcm9jZXNzb3Igc3lzdGVtcyIpOwotCi0JCS8vIExvb2sgZm9yIFBhY2thZ2VzIHN0ZXJlb3R5cGVkIGFzIENIR0FSZXNvdXJjZVBsYXRmb3JtIGluIHRoZSBEZXBsb3ltZW50Ci0JCS8vIFZpZXcKLQkJRUxpc3Q8UGFja2FnZT4gcGFja2FnZXMgPSBRdWVyeVV0aWxzLmdldFJlc291cmNlUGxhdGZvcm1QYWNrYWdlcyh1bWxNb2RlbCwgQ0hFU1NQcm9maWxlTWFuYWdlci5ERVBMT1lNRU5UX1ZJRVcpOwotCi0JCWlmIChwYWNrYWdlcy5zaXplKCkgPT0gMCkgewotCQkJTW9kZWxFcnJvciBtZSA9IG5ldyBNb2RlbEVycm9yKCJFcnJvciBpbiBtb2RlbDogbm8gUGFja2FnZSBzdGVyZW90eXBlZCBhcyBDSEdBUmVzb3VyY2VQbGF0Zm9ybSBpbiB0aGUgRGVwbG95bWVudCBWaWV3ISIpOwotCQkJdGhyb3cgbWU7Ci0JCX0KLQkJaHdTeXN0ZW1zTGlzdCA9IG5ldyBCYXNpY0VMaXN0PEluc3RhbmNlU3BlY2lmaWNhdGlvbj4oKTsKLQotCQlmb3IgKFBhY2thZ2UgcGFjayA6IHBhY2thZ2VzKSB7Ci0JCQlFTGlzdDxJbnN0YW5jZVNwZWNpZmljYXRpb24+IHByb2Nlc3NvcnMgPSBuZXcgQmFzaWNFTGlzdDxJbnN0YW5jZVNwZWNpZmljYXRpb24+KCk7Ci0JCQlmb3IgKENIX0h3UHJvY2Vzc29yIGNoX3Byb2Nlc3NvciA6IFF1ZXJ5VXRpbHMuZ2V0QWxsUHJvY2Vzc29ySW5zdGFuY2VzSW5QYWNrYWdlKHBhY2spKSB7Ci0JCQkJSW5zdGFuY2VTcGVjaWZpY2F0aW9uIGluc3RTcGVjID0gY2hfcHJvY2Vzc29yLmdldEJhc2VfSW5zdGFuY2VTcGVjaWZpY2F0aW9uKCk7Ci0JCQkJcHJvY2Vzc29ycy5hZGQoaW5zdFNwZWMpOwotCQkJCUVMaXN0PENIQ29yZT4gdGhlQ29yZXMgPSBRdWVyeVV0aWxzLmdldENvcmVzKGNoX3Byb2Nlc3Nvcik7Ci0JCQkJY29yZXNNYXAucHV0KGluc3RTcGVjLCB0aGVDb3Jlcyk7Ci0JCQkJY29yZXMuYWRkQWxsKHRoZUNvcmVzKTsKLQkJCX0KLQkJCUluc3RhbmNlU3BlY2lmaWNhdGlvbiB0aGVTeXN0ZW0gPSBVTUxVdGlscy5nZXRSb290SW5zdGFuY2VJblBhY2thZ2UocGFjayk7Ci0JCQlod1N5c3RlbXNMaXN0LmFkZCh0aGVTeXN0ZW0pOwotCQkJcHJvY2Vzc29yc01hcC5wdXQocGFjaywgcHJvY2Vzc29ycyk7Ci0JCX0KLQotCQlpZiAoaHdTeXN0ZW1zTGlzdC5pc0VtcHR5KCkpIHsKLQkJCU1vZGVsRXJyb3IgbWUgPSBuZXcgTW9kZWxFcnJvcigiRXJyb3IgaW4gbW9kZWw6IG5vIFN5c3RlbSBpbiB0aGUgRGVwbG95bWVudCBWaWV3ISIpOwotCQkJdGhyb3cgbWU7Ci0JCX0KLQotCQlFTGlzdDxJbnN0YW5jZVNwZWNpZmljYXRpb24+IGluc3RhbmNlcyA9IFVNTFV0aWxzLmdldEFsbENvbXBvbmVudEluc3RhbmNlcyh1bWxNb2RlbCwgdHJ1ZSk7Ci0JCUVMaXN0PENIVGFzaz4gY2h0YXNrcyA9IFF1ZXJ5VXRpbHMuZ2V0Q0hUYXNrc0xpc3QoaW5zdGFuY2VzKTsKLQotCQlvcGVyYXRpb25MaXN0ID0gUXVlcnlVdGlscy5nZXRPcGVyYXRpb25DaGFpbih1bWxNb2RlbCwgY2h0YXNrcyk7Ci0KLQl9Ci0KLQkvKioKLQkgKiBUaGUgQ2xhc3MgQ29tLgotCSAqLwotCWNsYXNzIENvbSBleHRlbmRzIFJlY29yZGluZ0NvbW1hbmQgewotCi0JCS8qKgotCQkgKiBJbnN0YW50aWF0ZXMgYSBuZXcgY29tLgotCQkgKgotCQkgKiBAcGFyYW0gZG9tYWluIHRoZSBkb21haW4KLQkJICovCi0JCXB1YmxpYyBDb20oVHJhbnNhY3Rpb25hbEVkaXRpbmdEb21haW4gZG9tYWluKSB7Ci0JCQlzdXBlcihkb21haW4pOwotCQl9Ci0KLQkJLyogKG5vbi1KYXZhZG9jKQotCQkgKiBAc2VlIG9yZy5lY2xpcHNlLmVtZi50cmFuc2FjdGlvbi5SZWNvcmRpbmdDb21tYW5kI2RvRXhlY3V0ZSgpCi0JCSAqLwotCQlAT3ZlcnJpZGUKLQkJcHJvdGVjdGVkIHZvaWQgZG9FeGVjdXRlKCkgewotCQkJdHJ5IHsKLQkJCQlRdWVyeVV0aWxzLmRlbGV0ZVRhc2syQ29yZUFzc29jaWF0aW9ucyhod1N5c3RlbSk7Ci0JCQkJaWYgKCF1c2VSVU4pCi0JCQkJCUdlbmVyYXRvclV0aWxzLmJ1aWxkVGFzazJDb3JlQXNzb2NpYXRpb25zKGh3U3lzdGVtLCBjb3JlMmNodGFzayk7Ci0JCQkJZWxzZQotCQkJCQlHZW5lcmF0b3JVdGlscy5idWlsZFRhc2syU3VwZXJUYXNrQXNzb2NpYXRpb25zKGh3U3lzdGVtLCBjb3JlMnN1cGVydGFzaywgc3VwZXJ0YXNrSW5mb0xpc3QpOwotCi0JCQl9IGNhdGNoIChFeGNlcHRpb24gZSkgewotCQkJCXRocm93IG5ldyBPcGVyYXRpb25DYW5jZWxlZEV4Y2VwdGlvbihlLmdldE1lc3NhZ2UoKSk7Ci0JCQl9Ci0JCX0KLQl9Ci0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqIENvcHlyaWdodCAoQykgMjAyMCANCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQorICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisgIC0NCisgIC0gQ29weXJpZ2h0IChjKSAyMDE1LTIwMTYgVW5pdmVyc2l0eSBvZiBQYWRvdmEsIElUQUxZIC0gIEludGVjcyBTcEEgDQorICAtIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgIC0gYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQorICAtIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICAtIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQorICAtDQorICAtIENvbnRyaWJ1dG9yczoNCisgIC0NCisgIC0gQWxlc3NhbmRybyBab3ZpIGF6b3ZpQG1hdGgudW5pcGQuaXQNCisgIC0gU3RlZmFubyBQdXJpIHN0ZWZhbm8ucHVyaUBpbnRlY3MuaXQNCisgIC0gTGF1cmEgQmFyYWNjaGkgbGF1cmEuYmFyYWNjaGlAaW50ZWNzLml0DQorICAtIE5pY2hvbGFzIFBhY2luaSBuaWNob2xhcy5wYWNpbmlAaW50ZWNzLml0ICANCisgIC0NCisgIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uIGFuZC9vciBpbml0aWFsIGRvY3VtZW50YXRpb24NCisgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovcGFja2FnZSBvcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlLmNvbW1hbmRzOw0KKw0KK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0Ow0KK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlzOw0KK2ltcG9ydCBqYXZhLnV0aWwuQ29tcGFyYXRvcjsNCitpbXBvcnQgamF2YS51dGlsLkhhc2hNYXA7DQoraW1wb3J0IGphdmEudXRpbC5IYXNoU2V0Ow0KK2ltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOw0KK2ltcG9ydCBqYXZhLnV0aWwuTGlua2VkSGFzaFNldDsNCitpbXBvcnQgamF2YS51dGlsLkxpc3Q7DQoraW1wb3J0IGphdmEudXRpbC5NYXA7DQoraW1wb3J0IGphdmEudXRpbC5TZXQ7DQoraW1wb3J0IGphdmEudXRpbC5NYXAuRW50cnk7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5PcGVyYXRpb25DYW5jZWxlZEV4Y2VwdGlvbjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLkJhc2ljRUxpc3Q7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24udXRpbC5FTGlzdDsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLnRyYW5zYWN0aW9uLlJlY29yZGluZ0NvbW1hbmQ7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi50cmFuc2FjdGlvbi5UcmFuc2FjdGlvbmFsRWRpdGluZ0RvbWFpbjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLnRyYW5zYWN0aW9uLnV0aWwuVHJhbnNhY3Rpb25VdGlsOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS53aW5kb3cuV2luZG93Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5EaXNwbGF5Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5TaGVsbDsNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuQ2xhc3NpZmllcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuQ29tcG9uZW50Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5FbGVtZW50Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5JbnN0YW5jZVNwZWNpZmljYXRpb247DQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLk1vZGVsOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5QYWNrYWdlOw0KK2ltcG9ydCBvcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUuUHJlZGljdGFiaWxpdHkuRGVwbG95bWVudENvbmZpZ3VyYXRpb24uSGFyZHdhcmVCYXNlbGluZS5DSF9Id1Byb2Nlc3NvcjsNCitpbXBvcnQgb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlLlByZWRpY3RhYmlsaXR5LlJUQ29tcG9uZW50TW9kZWwuQ0hSdFNwZWNpZmljYXRpb247DQoraW1wb3J0IG9yZy5wb2xhcnN5cy5jaGVzcy5jb3JlLnByb2ZpbGVzLkNIRVNTUHJvZmlsZU1hbmFnZXI7DQoraW1wb3J0IG9yZy5wb2xhcnN5cy5jaGVzcy5jb3JlLnV0aWwudW1sLk1vZGVsRXJyb3I7DQoraW1wb3J0IG9yZy5wb2xhcnN5cy5jaGVzcy5jb3JlLnV0aWwudW1sLlVNTFV0aWxzOw0KK2ltcG9ydCBvcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlLmRpYWxvZ3MuU3lzdGVtU2VsZWN0aW9uRGlhbG9nOw0KK2ltcG9ydCBvcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlLm1vZGVsLkFic3RyYWN0Q29tbWFuZDsNCitpbXBvcnQgb3JnLnBvbGFyc3lzLmNoZXNzLm11bHRpY29yZS5tb2RlbC5DSENvcmU7DQoraW1wb3J0IG9yZy5wb2xhcnN5cy5jaGVzcy5tdWx0aWNvcmUubW9kZWwuQ0hUYXNrOw0KK2ltcG9ydCBvcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlLm1vZGVsLlN1cGVydGFza0luZm87DQoraW1wb3J0IG9yZy5wb2xhcnN5cy5jaGVzcy5tdWx0aWNvcmUucGFydGl0aW9uaW5nLkJpbjsNCitpbXBvcnQgb3JnLnBvbGFyc3lzLmNoZXNzLm11bHRpY29yZS5wYXJ0aXRpb25pbmcuQmluUGFja2VyRmFjdG9yeTsNCitpbXBvcnQgb3JnLnBvbGFyc3lzLmNoZXNzLm11bHRpY29yZS5wYXJ0aXRpb25pbmcuUlVOUmVkdWN0aW9uOw0KK2ltcG9ydCBvcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlLnBhcnRpdGlvbmluZy5UYXNrOw0KK2ltcG9ydCBvcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlLnV0aWxzLkdlbmVyYXRvclV0aWxzOw0KK2ltcG9ydCBvcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlLnV0aWxzLlF1ZXJ5VXRpbHM7DQoraW1wb3J0IG9yZy5wb2xhcnN5cy5jaGVzcy5tdWx0aWNvcmUudXRpbHMuUXVlcnlVdGlscy5PY2NLaW5kSW5mbzsNCitpbXBvcnQgb3JnLnBvbGFyc3lzLmNoZXNzLnZhbGlkYXRvci5jb25zdHJhaW50cy5TdHJpbmdQYXJzZXI7DQorDQorLyoqDQorICogVGhlIENsYXNzIEdlbmVyYXRlVGFzazJDb3JlQXNzaWdubWVudHNDb21tYW5kLg0KKyAqLw0KK3B1YmxpYyBjbGFzcyBHZW5lcmF0ZVRhc2syQ29yZUFzc2lnbm1lbnRzQ29tbWFuZCBleHRlbmRzIEFic3RyYWN0Q29tbWFuZCB7DQorCQ0KKwkvKiogVGhlIG9wZXJhdGlvbiBsaXN0LiAqLw0KKwlwcml2YXRlIEhhc2hNYXA8Q0hUYXNrLCBFTGlzdDxDSFRhc2s+PiBvcGVyYXRpb25MaXN0Ow0KKw0KKwkvKiogVGhlIGNvcmUgMiBjaHRhc2suICovDQorCXByaXZhdGUgTWFwPENIQ29yZSwgTGlua2VkSGFzaFNldDxPYmplY3Q+PiBjb3JlMmNodGFzazsNCisNCisJLyoqIFRoZSBwcm9jZXNzb3JzLiAqLw0KKwlwcml2YXRlIEVMaXN0PEluc3RhbmNlU3BlY2lmaWNhdGlvbj4gcHJvY2Vzc29yczsNCisNCisJLyoqIFRoZSBjb3Jlcy4gKi8NCisJcHJpdmF0ZSBFTGlzdDxDSENvcmU+IGNvcmVzID0gbmV3IEJhc2ljRUxpc3Q8Q0hDb3JlPigpOw0KKw0KKwkvKiogVGhlIGFzc2lnbmVkIG9wZXJhdGlvbnMuICovDQorCXByaXZhdGUgU2V0PENIVGFzaz4gYXNzaWduZWRPcGVyYXRpb25zID0gbmV3IEhhc2hTZXQ8Q0hUYXNrPigpOw0KKw0KKwkvKiogVGhlIHByb2Nlc3NvcnMgbWFwLiAqLw0KKwlwcml2YXRlIE1hcDxQYWNrYWdlLCBFTGlzdDxJbnN0YW5jZVNwZWNpZmljYXRpb24+PiBwcm9jZXNzb3JzTWFwID0gbmV3IEhhc2hNYXA8UGFja2FnZSwgRUxpc3Q8SW5zdGFuY2VTcGVjaWZpY2F0aW9uPj4oKTsNCisJDQorCS8qKiBUaGUgY29yZXMgbWFwLiAqLw0KKwlwcml2YXRlIE1hcDxJbnN0YW5jZVNwZWNpZmljYXRpb24sIEVMaXN0PENIQ29yZT4+IGNvcmVzTWFwID0gbmV3IEhhc2hNYXA8SW5zdGFuY2VTcGVjaWZpY2F0aW9uLCBFTGlzdDxDSENvcmU+PigpOw0KKwkNCisJLyoqIFRoZSBodyBzeXN0ZW0uICovDQorCXByaXZhdGUgc3RhdGljIENvbXBvbmVudCBod1N5c3RlbTsNCisJDQorCS8qKiBUaGUgaHcgc3lzdGVtcyBsaXN0LiAqLw0KKwlwcml2YXRlIEVMaXN0PEluc3RhbmNlU3BlY2lmaWNhdGlvbj4gaHdTeXN0ZW1zTGlzdCA9IG5ldyBCYXNpY0VMaXN0PEluc3RhbmNlU3BlY2lmaWNhdGlvbj4oKTsNCisNCisJLyoqIFRoZSB1c2UgUlVOLiAqLw0KKwlwcml2YXRlIGJvb2xlYW4gdXNlUlVOOw0KKw0KKwkvKiogVGhlIHN1cGVydGFzayBpbmZvIGxpc3QuICovDQorCXByaXZhdGUgTGlzdDxTdXBlcnRhc2tJbmZvPiBzdXBlcnRhc2tJbmZvTGlzdDsNCisNCisJLyoqIFRoZSBjb3JlIDIgc3VwZXJ0YXNrLiAqLw0KKwlwcml2YXRlIEhhc2hNYXA8U3VwZXJ0YXNrSW5mbywgTGlua2VkSGFzaFNldDxPYmplY3Q+PiBjb3JlMnN1cGVydGFzazsNCisNCisJLyoqDQorCSAqIE9wZW4gc2VsZWN0b3IgdG8gY2hvb3NlIEhXIHN5c3RlbSB3aGVyZSBhc3NpZ24gdGFza3MuDQorCSAqDQorCSAqIEBwYXJhbSB1bWxNb2RlbCB0aGUgdW1sIG1vZGVsDQorCSAqIEBwYXJhbSBod1N5c3RlbXNMaXN0IHRoZSBodyBzeXN0ZW1zIGxpc3QNCisJICogQHJldHVybiB0aGUgaW5zdGFuY2Ugc3BlY2lmaWNhdGlvbg0KKwkgKi8NCisJcHJpdmF0ZSBzdGF0aWMgSW5zdGFuY2VTcGVjaWZpY2F0aW9uIG9wZW5TeXN0ZW1TZWxlY3RvcihNb2RlbCB1bWxNb2RlbCwgRUxpc3Q8SW5zdGFuY2VTcGVjaWZpY2F0aW9uPiBod1N5c3RlbXNMaXN0KSB7DQorDQorCQkvLyBGaXJzdCBvZiBhbGwgc2hvdyBzZWxlY3RvciB0byBzZWxlY3QgSHdTeXN0ZW0NCisJCUxpc3Q8SW5zdGFuY2VTcGVjaWZpY2F0aW9uPiBzeXN0ZW1TZWxlY3Rpb24gPSBuZXcgQXJyYXlMaXN0PEluc3RhbmNlU3BlY2lmaWNhdGlvbj4oKTsNCisJCWZvciAoSW5zdGFuY2VTcGVjaWZpY2F0aW9uIHN5c3QgOiBod1N5c3RlbXNMaXN0KSB7DQorCQkJc3lzdGVtU2VsZWN0aW9uLmFkZChzeXN0KTsNCisJCX0NCisNCisJCVNoZWxsIGFjdGl2ZVNoZWxsID0gRGlzcGxheS5nZXREZWZhdWx0KCkuZ2V0QWN0aXZlU2hlbGwoKTsNCisJCVN5c3RlbVNlbGVjdGlvbkRpYWxvZyBzeXN0ZW1EaWFsb2cgPSBuZXcgU3lzdGVtU2VsZWN0aW9uRGlhbG9nKGFjdGl2ZVNoZWxsLCBzeXN0ZW1TZWxlY3Rpb24sICJTZWxlY3QgU3lzdGVtIHdoZXJlIHRvIGFzc2lnbiB0YXNrcyIpOw0KKwkJaWYgKHN5c3RlbURpYWxvZy5vcGVuKCkgPT0gV2luZG93Lk9LKSB7DQorCQkJU3RyaW5nIHNlbGVjdGVkU3lzdGVtUU4gPSBzeXN0ZW1EaWFsb2cuZ2V0U3lzdGVtTmFtZSgpOw0KKwkJCUVMaXN0PEVsZW1lbnQ+IGFsbEVsZW1zID0gdW1sTW9kZWwuYWxsT3duZWRFbGVtZW50cygpOw0KKwkJCWZvciAoRWxlbWVudCBlbGVtIDogYWxsRWxlbXMpIHsNCisJCQkJSW5zdGFuY2VTcGVjaWZpY2F0aW9uIHRoZVN5c3RlbTsNCisJCQkJaWYgKGVsZW0gaW5zdGFuY2VvZiBJbnN0YW5jZVNwZWNpZmljYXRpb24pIHsNCisJCQkJCXRoZVN5c3RlbSA9IChJbnN0YW5jZVNwZWNpZmljYXRpb24pIGVsZW07DQorCQkJCQlpZiAodGhlU3lzdGVtLmdldFF1YWxpZmllZE5hbWUoKSAhPSBudWxsICYmIHRoZVN5c3RlbS5nZXRRdWFsaWZpZWROYW1lKCkuZXF1YWxzKHNlbGVjdGVkU3lzdGVtUU4pKSB7DQorCQkJCQkJQ2xhc3NpZmllciBjbGFzc2lmID0gdGhlU3lzdGVtLmdldENsYXNzaWZpZXJzKCkuZ2V0KDApOw0KKwkJCQkJCWh3U3lzdGVtID0gKENvbXBvbmVudCkgY2xhc3NpZjsNCisJCQkJCQlyZXR1cm4gdGhlU3lzdGVtOw0KKwkJCQkJfQ0KKwkJCQl9DQorCQkJfQ0KKwkJfQ0KKwkJcmV0dXJuIG51bGw7DQorCX0NCisNCisJLyogKG5vbi1KYXZhZG9jKQ0KKwkgKiBAc2VlIG9yZy5wb2xhcnN5cy5jaGVzcy5tdWx0aWNvcmUubW9kZWwuQWJzdHJhY3RDb21tYW5kI2V4ZWN1dGUoKQ0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyB2b2lkIGV4ZWN1dGUoKSB0aHJvd3MgTW9kZWxFcnJvciB7DQorCQlxdWVyeUNvbnRlbnQodW1sTW9kZWwpOw0KKw0KKwkJaW50IGhvd01hbnkgPSBod1N5c3RlbXNMaXN0LnNpemUoKTsNCisNCisJCUluc3RhbmNlU3BlY2lmaWNhdGlvbiB0aGVTeXN0ZW0gPSBudWxsOw0KKwkJaWYgKGhvd01hbnkgPiAxKSB7DQorCQkJdGhlU3lzdGVtID0gb3BlblN5c3RlbVNlbGVjdG9yKHVtbE1vZGVsLCBod1N5c3RlbXNMaXN0KTsNCisJCX0gZWxzZSB7DQorCQkJdGhlU3lzdGVtID0gaHdTeXN0ZW1zTGlzdC5nZXQoMCk7DQorCQl9DQorDQorCQlpZiAodGhlU3lzdGVtICE9IG51bGwpIHsNCisJCQlQYWNrYWdlIHBhY2sgPSBRdWVyeVV0aWxzLmdldE93bmVyQ0hHYVJlc291cmNlUGxhdGZvcm1QYWNrYWdlKHVtbE1vZGVsLCB0aGVTeXN0ZW0pOw0KKw0KKwkJCUVMaXN0PEluc3RhbmNlU3BlY2lmaWNhdGlvbj4gcHJvY2Vzc29yTGlzdCA9IHByb2Nlc3NvcnNNYXAuZ2V0KHBhY2spOw0KKw0KKwkJCWNvcmVzID0gbmV3IEJhc2ljRUxpc3Q8Q0hDb3JlPigpOw0KKwkJCWlmIChwcm9jZXNzb3JMaXN0ICE9IG51bGwpIHsNCisJCQkJZm9yIChJbnN0YW5jZVNwZWNpZmljYXRpb24gcHJvYyA6IHByb2Nlc3Nvckxpc3QpIHsNCisJCQkJCUVMaXN0PENIQ29yZT4gY29yZUxpc3QgPSBjb3Jlc01hcC5nZXQocHJvYyk7DQorCQkJCQlmb3IgKENIQ29yZSBjb3JlIDogY29yZUxpc3QpIHsNCisJCQkJCQljb3Jlcy5hZGQoY29yZSk7DQorCQkJCQl9DQorCQkJCX0NCisJCQl9DQorDQorCQkJZXhlY3V0ZVRhc2syQ29yZUNhbGN1bGF0b3IoZmFsc2UpOw0KKw0KKwkJCS8vIHByaW50Q29udGVudCgpOw0KKwkJCWlmIChjb3JlMmNodGFzayAhPSBudWxsKSB7DQorCQkJCXVwZGF0ZU1vZGVsKCk7DQorCQkJfQ0KKwkJfQ0KKwl9DQorDQorCS8qKg0KKwkgKiBFeGVjdXRlIHRhc2sgMiBjb3JlIGNhbGN1bGF0b3IuDQorCSAqDQorCSAqIEBwYXJhbSBmb3JjZVVzZU9mUlVOIHRoZSBmb3JjZSB1c2Ugb2YgUlVODQorCSAqIEB0aHJvd3MgTW9kZWxFcnJvciB0aGUgbW9kZWwgZXJyb3INCisJICovDQorCXByb3RlY3RlZCB2b2lkIGV4ZWN1dGVUYXNrMkNvcmVDYWxjdWxhdG9yKGJvb2xlYW4gZm9yY2VVc2VPZlJVTikgdGhyb3dzIE1vZGVsRXJyb3Igew0KKw0KKwkJTGlzdDxCaW4+IGFsbEJpbnMgPSBuZXcgQXJyYXlMaXN0PEJpbj4oKTsNCisJCUxpc3Q8VGFzaz4gYWxsVGFza3MgPSBuZXcgQXJyYXlMaXN0PFRhc2s+KCk7DQorCQlTeXN0ZW0ub3V0LmZvcm1hdCgiV2UgaGF2ZSAlZCBjb3Jlc1xuIiwgY29yZXMuc2l6ZSgpKTsNCisJCS8vIGluaXQgYmlucw0KKwkJZm9yIChpbnQgaSA9IDA7IGkgPCBjb3Jlcy5zaXplKCk7IGkrKykNCisJCQlhbGxCaW5zLmFkZChuZXcgQmluKGkpKTsNCisNCisJCWZvciAoQ0hUYXNrIGNoUnRTcGVjaWZpY2F0aW9uIDogb3BlcmF0aW9uTGlzdC5rZXlTZXQoKSkgew0KKw0KKwkJCVN0cmluZyBvY2NLaW5kID0gY2hSdFNwZWNpZmljYXRpb24uZ2V0Q0hSdFNwZWNpZmljYXRpb24oKS5nZXRPY2NLaW5kKCk7DQorCQkJT2NjS2luZEluZm8gaW5mbyA9IFF1ZXJ5VXRpbHMuZ2V0T2NjS2luZEluZm8ob2NjS2luZCk7DQorDQorCQkJZG91YmxlIGNfID0gUXVlcnlVdGlscy5nZXRXQ0VUKGNoUnRTcGVjaWZpY2F0aW9uLmdldENIUnRTcGVjaWZpY2F0aW9uKCkpOw0KKwkJCS8qIGFkZCB0aGUgd2NldCBmb3IgZWFjaCBvcGVyYXRpb24gcmVsYXRpdmUgdG8gdGhpcyBjaHJ0c3BlYyAqLw0KKwkJCWZvciAoQ0hUYXNrIHNwZWMgOiBvcGVyYXRpb25MaXN0LmdldChjaFJ0U3BlY2lmaWNhdGlvbikpIHsNCisJCQkJZG91YmxlIGNfMSA9IFF1ZXJ5VXRpbHMuZ2V0V0NFVChzcGVjLmdldENIUnRTcGVjaWZpY2F0aW9uKCkpOw0KKwkJCQljXyArPSBjXzE7DQorCQkJfQ0KKwkJCVN0cmluZ1BhcnNlciBzcCA9IG5ldyBTdHJpbmdQYXJzZXIoKTsNCisJCQlkb3VibGUgZF8gPSBzcC5nZXRWYWx1ZU5GUChjaFJ0U3BlY2lmaWNhdGlvbi5nZXRDSFJ0U3BlY2lmaWNhdGlvbigpLmdldFJsRGwoKSk7DQorCQkJZG91YmxlIHRfID0gaW5mby52YWx1ZTsNCisNCisJCQkvLyBkXyA9IHh4eC5yZW1vdmUoMCk7DQorCQkJLy8gdF8gPSBkXzsNCisNCisJCQlTdHJpbmcgbmFtZSA9IGdldFRhc2tJRChjaFJ0U3BlY2lmaWNhdGlvbi5nZXRDSFJ0U3BlY2lmaWNhdGlvbigpKTsNCisNCisJCQlmbG9hdCBjID0gKGZsb2F0KSBjXzsvLyBleGVjIHRpbWUNCisJCQlmbG9hdCBkID0gKGZsb2F0KSBkXzsvLyBkZWFkbGluZQ0KKwkJCWZsb2F0IHQgPSAoZmxvYXQpIHRfOy8vIHBlcmlvZA0KKwkJCWZsb2F0IG8gPSAwOy8vIFRPRE8gaW5zZXJ0IG9mZnNldCBpbiBzdGVyZW90eXBlDQorDQorCQkJZG91YmxlIHVfID0gYyAvIHQ7DQorCQkJZmxvYXQgdSA9IChmbG9hdCkgdV87DQorDQorCQkJU3lzdGVtLm91dC5wcmludGxuKCJUYXNrICIgKyBuYW1lICsgIiAtPiAiICsgYyArICIgIiArIGQgKyAiICIgKyB0ICsgIiAtPiAiICsgdSk7DQorCQkJYWxsVGFza3MuYWRkKG5ldyBUYXNrKG5hbWUsIG5ldyBGbG9hdChjKSwgbmV3IEZsb2F0KGQpLCBuZXcgRmxvYXQodCksIG5ldyBGbG9hdChvKSwgbnVsbCkpOw0KKw0KKwkJfQ0KKw0KKwkJTWFwPEJpbiwgTGlzdDxUYXNrPj4gZmlyc3RQYWNrID0gQmluUGFja2VyRmFjdG9yeS5nZXRCaW5QYWNrZXIob3JnLnBvbGFyc3lzLmNoZXNzLm11bHRpY29yZS5wYXJ0aXRpb25pbmcuSGV1cmlzdGljLldPUlNUX0ZJVCkucGFjayhhbGxCaW5zLCBhbGxUYXNrcyk7DQorCQlNYXA8QmluLCBMaXN0PFRhc2s+PiByZWR1Y3Rpb25UcmVlID0gbmV3IEhhc2h0YWJsZTxCaW4sIExpc3Q8VGFzaz4+KGZpcnN0UGFjayk7DQorDQorCQl1c2VSVU4gPSByZWR1Y3Rpb25UcmVlLnNpemUoKSA+IGFsbEJpbnMuc2l6ZSgpOw0KKwkJaWYgKGZvcmNlVXNlT2ZSVU4pDQorCQkJdXNlUlVOID0gdHJ1ZTsNCisNCisJCWlmICh1c2VSVU4pIHsNCisJCQlTeXN0ZW0ub3V0LnByaW50bG4oIlN0YXJ0aW5nIFJVTiBwYWNraW5nIik7DQorCQkJYWxsVGFza3MgPSBuZXcgQXJyYXlMaXN0PFRhc2s+KCk7DQorCQkJZm9yIChCaW4gYmluIDogcmVkdWN0aW9uVHJlZS5rZXlTZXQoKSkNCisJCQkJYWxsVGFza3MuYWRkKG5ldyBUYXNrKGJpbi5nZXRJZCgpLnRvU3RyaW5nKCksIGJpbi5nZXRDYXBhY2l0eSgpKSk7DQorCQkJcmVkdWN0aW9uVHJlZSA9IG5ldyBSVU5SZWR1Y3Rpb24oKS5wYWNrKG51bGwsIGFsbFRhc2tzKTsNCisJCQlmb3IgKGphdmEudXRpbC5NYXAuRW50cnk8QmluLCBMaXN0PFRhc2s+PiByb3cgOiByZWR1Y3Rpb25UcmVlLmVudHJ5U2V0KCkpIHsNCisJCQkJU3lzdGVtLm91dC5wcmludCgiTEVWRUwgIiArIHJvdy5nZXRLZXkoKS5nZXRMZXZlbCgpICsgIi0iICsgcm93LmdldEtleSgpLmdldElkKCkgKyAiKFU9IiArIHJvdy5nZXRLZXkoKS5nZXRDYXBhY2l0eSgpICsgIikgLT4geyIpOw0KKwkJCQlmb3IgKFRhc2sgdCA6IHJvdy5nZXRWYWx1ZSgpKQ0KKwkJCQkJU3lzdGVtLm91dC5wcmludCgiICIgKyB0LmdldElkKCkgKyAiLCIpOw0KKwkJCQlTeXN0ZW0ub3V0LnByaW50bG4oIn0iKTsNCisJCQl9DQorCQkJYnVpbGRSVU5Bc3NvY2lhdGlvbnMoZmlyc3RQYWNrLCByZWR1Y3Rpb25UcmVlKTsNCisJCX0gZWxzZQ0KKwkJCS8vIEJ1aWxkIG1vZGVsIHJlc3VsdHMNCisJCQlidWlsZEFzc29jaWF0aW9ucyhmaXJzdFBhY2spOw0KKwl9DQorDQorCS8qKg0KKwkgKiBCdWlsZHMgdGhlIFJVTiBhc3NvY2lhdGlvbnMuDQorCSAqDQorCSAqIEBwYXJhbSBmaXJzdFBhY2sgdGhlIGZpcnN0IHBhY2sNCisJICogQHBhcmFtIHJlZHVjdGlvblRyZWUgdGhlIHJlZHVjdGlvbiB0cmVlDQorCSAqIEB0aHJvd3MgTW9kZWxFcnJvciB0aGUgbW9kZWwgZXJyb3INCisJICovDQorCXByaXZhdGUgdm9pZCBidWlsZFJVTkFzc29jaWF0aW9ucyhNYXA8QmluLCBMaXN0PFRhc2s+PiBmaXJzdFBhY2ssIE1hcDxCaW4sIExpc3Q8VGFzaz4+IHJlZHVjdGlvblRyZWUpIHRocm93cyBNb2RlbEVycm9yIHsNCisJCS8vIGFkZCBjaHRhc2tzIHdoaWNoIHJlcHJlc2VudCByZWFsIHRhc2tzIHRvIHRoZSBjb3JlIG1hcCBhbmQgYWRkIHRoZQ0KKwkJLy8gcmVsYXRlZCBvcGVyYXRpb24gY2hhaW4gdG8gdGhlIHNhbWUgY29yZQ0KKwkJLy8gVE9ETyBzb2x2ZSB0aGUgZm9sbG93aW5nIHByb2JsZW06IHRoZSByZWxhdGVkIG9wZXJhdGlvbnMgbWF5IGJlIHNoYXJlZA0KKwkJLy8gYmV0d2VlbiB0YXNrcyB3aGljaCBjYW4gYmUgYXNzaWduZWQgdG8gZGlmZmVyZW50IGNvcmVzIQ0KKw0KKwkJY29yZTJzdXBlcnRhc2sgPSBuZXcgSGFzaE1hcDxTdXBlcnRhc2tJbmZvLCBMaW5rZWRIYXNoU2V0PE9iamVjdD4+KCk7DQorDQorCQlPYmplY3RbXSBmaXJzdFBhY2tTb3J0ZWQgPSBmaXJzdFBhY2suZW50cnlTZXQoKS50b0FycmF5KCk7DQorCQlBcnJheXMuc29ydChmaXJzdFBhY2tTb3J0ZWQsIG5ldyBDb21wYXJhdG9yPE9iamVjdD4oKSB7DQorDQorCQkJQE92ZXJyaWRlDQorCQkJcHVibGljIGludCBjb21wYXJlKE9iamVjdCBvMSwgT2JqZWN0IG8yKSB7DQorCQkJCWlmICgoKEVudHJ5PEJpbiwgTGlzdDxUYXNrPj4pIG8xKS5nZXRLZXkoKS5nZXRJZCgpID4gKChFbnRyeTxCaW4sIExpc3Q8VGFzaz4+KSBvMikuZ2V0S2V5KCkuZ2V0SWQoKSkNCisJCQkJCXJldHVybiAxOw0KKwkJCQllbHNlIGlmICgoKEVudHJ5PEJpbiwgTGlzdDxUYXNrPj4pIG8xKS5nZXRLZXkoKS5nZXRJZCgpIDwgKChFbnRyeTxCaW4sIExpc3Q8VGFzaz4+KSBvMikuZ2V0S2V5KCkuZ2V0SWQoKSkNCisJCQkJCXJldHVybiAtMTsNCisJCQkJZWxzZQ0KKwkJCQkJcmV0dXJuIDA7DQorCQkJfQ0KKwkJfSk7DQorDQorCQlPYmplY3RbXSBhbGxCaW5zID0gcmVkdWN0aW9uVHJlZS5rZXlTZXQoKS50b0FycmF5KCk7DQorCQlBcnJheXMuc29ydChhbGxCaW5zLCBuZXcgQ29tcGFyYXRvcjxPYmplY3Q+KCkgew0KKw0KKwkJCUBPdmVycmlkZQ0KKwkJCXB1YmxpYyBpbnQgY29tcGFyZShPYmplY3QgbzEsIE9iamVjdCBvMikgew0KKwkJCQlpZiAoKChCaW4pIG8xKS5nZXRMZXZlbCgpID4gKChCaW4pIG8yKS5nZXRMZXZlbCgpKQ0KKwkJCQkJcmV0dXJuIC0xOw0KKwkJCQllbHNlIGlmICgoKEJpbikgbzEpLmdldExldmVsKCkgPCAoKEJpbikgbzIpLmdldExldmVsKCkpDQorCQkJCQlyZXR1cm4gMTsNCisJCQkJZWxzZQ0KKwkJCQkJcmV0dXJuIDA7DQorCQkJfQ0KKwkJfSk7DQorDQorCQkvLyBERVBUSC1GSVJTVCBwcmludA0KKwkJLy8gcm9vdCBsZXZlbA0KKw0KKwkJQ0hfSHdQcm9jZXNzb3IgcHJvY0luc3RhbmNlID0gUXVlcnlVdGlscy5nZXRBbGxQcm9jZXNzb3JJbnN0YW5jZXModW1sTW9kZWwpLmdldCgwKTsNCisNCisJCWludCBtYXhMZXZlbCA9ICgoQmluKSBhbGxCaW5zWzBdKS5nZXRMZXZlbCgpOw0KKwkJU3lzdGVtLm91dC5wcmludGxuKCItLSBQcmltYXJ5IFNjaGVkdWxlcnNcbiIpOw0KKwkJU3lzdGVtLm91dC5wcmludGxuKCJTY2hlZHVsZXIgKCIpOw0KKwkJU3lzdGVtLm91dC5wcmludGxuKCIJVHlwZQk9PiBQcmltYXJ5X1NjaGVkdWxlciwiKTsNCisJCVN5c3RlbS5vdXQucHJpbnRsbigiCU5hbWUJPT4gU2NoZWR1bGVyXzEsIik7DQorCQlTeXN0ZW0ub3V0LnByaW50bG4oIglQb2xpY3kJPT4gKCBUeXBlID0+IFJVTiApLCIpOw0KKwkJU3lzdGVtLm91dC5wcmludGxuKCIJSG9zdAk9PiBNdWx0aWNvcmVfMSApOyIpOy8vIFRPRE86IGRlcGVuZHMgb24gQ0hSVA0KKwkJLy8gc3BlY2lmaWNhdGlvbg0KKwkJU3lzdGVtLm91dC5wcmludGxuKCJcbi0tIFByaW1hcnkgU2NoZWR1bGluZyBTZXJ2ZXJzIGFuZCBTZWNvbmRhcnkgU2NoZWR1bGVyc1xuIik7DQorCQlpbnQgaW5kZXhTdXBlcnRhc2sgPSAwOw0KKwkJLy8gYWxsIGxldmVscyBvZiB0aGUgdHJlZSBpbiB0aGUgaW50ZXJ2YWwgKHJvb3QsMF0NCisJCXN1cGVydGFza0luZm9MaXN0ID0gbmV3IEFycmF5TGlzdDxTdXBlcnRhc2tJbmZvPigpOw0KKwkJZm9yIChpbnQgaSA9IDE7IChpIDwgYWxsQmlucy5sZW5ndGgpICYmICgoKEJpbikgYWxsQmluc1tpXSkuZ2V0TGV2ZWwoKSA+PSAwKTsgaSsrKSB7DQorCQkJY3JlYXRlU3VwZXJ0YXNrSW5mbyhwcm9jSW5zdGFuY2UsIGluZGV4U3VwZXJ0YXNrLCAoKEJpbikgYWxsQmluc1tpXSkuZ2V0Q2FwYWNpdHkoKSk7DQorDQorCQkJYXNzaWduZWRPcGVyYXRpb25zID0gbmV3IEhhc2hTZXQ8Q0hUYXNrPigpOw0KKwkJCS8vIGZpcnN0IHBhY2s6IHByaW50IGxlYWYgbm9kZXMNCisJCQlpZiAoKChCaW4pIGFsbEJpbnNbaV0pLmdldExldmVsKCkgPT0gMCkgew0KKwkJCQlMaXN0PFRhc2s+IHRhc2tzID0gcmVkdWN0aW9uVHJlZS5nZXQoKChCaW4pIGFsbEJpbnNbaV0pKTsNCisJCQkJTGlua2VkSGFzaFNldDxPYmplY3Q+IGxpc3QgPSBuZXcgTGlua2VkSGFzaFNldDxPYmplY3Q+KCk7DQorCQkJCWZvciAoVGFzayB0YXNrIDogdGFza3MpIHsNCisJCQkJCUxpc3Q8VGFzaz4gbGVhdmVzID0gKChFbnRyeTxCaW4sIExpc3Q8VGFzaz4+KSBmaXJzdFBhY2tTb3J0ZWRbbmV3IEludGVnZXIodGFzay5nZXRJZCgpKV0pLmdldFZhbHVlKCk7DQorCQkJCQlmb3IgKFRhc2sgbGVhZiA6IGxlYXZlcykgew0KKwkJCQkJCVN5c3RlbS5vdXQucHJpbnRsbigiU2NoZWR1bGluZ19TZXJ2ZXIgKCIpOw0KKwkJCQkJCVN5c3RlbS5vdXQucHJpbnRsbigiCVR5cGUJCQkJPT4gUmVndWxhciwiKTsNCisJCQkJCQlTeXN0ZW0ub3V0LnByaW50bG4oIglOYW1lIAkJCQk9PiAiICsgbGVhZi5nZXRJZCgpICsgIiwiKTsNCisJCQkJCQlTeXN0ZW0ub3V0LnByaW50bG4oIglTZXJ2ZXJfU2NoZWRfUGFyYW1ldGVycwkJPT4gKCIpOw0KKwkJCQkJCVN5c3RlbS5vdXQucHJpbnRsbigiCQlUeXBlCQkJPT4gRURGX3BvbGljeSwiKTsNCisJCQkJCQlTeXN0ZW0ub3V0LnByaW50bG4oIgkJRGVhZGxpbmUJCT0+ICIgKyBsZWFmLmdldFQoKSArICIsIik7DQorCQkJCQkJU3lzdGVtLm91dC5wcmludGxuKCIgICAgICAgICAgICAgICAgUHJlYXNzaWduZWQgICAgICAgICAgICAgPT4gTm8pLCIpOw0KKwkJCQkJCVN5c3RlbS5vdXQucHJpbnRsbigiCVNjaGVkdWxlcgkJCT0+IFNlY29uZGFyeVNjaGVkdWxlcl8iICsgaW5kZXhTdXBlcnRhc2sgKyAiKTsiKTsNCisJCQkJCQlTeXN0ZW0ub3V0LnByaW50bG4oKTsNCisNCisJCQkJCQlDSFRhc2sgb3duaW5nVGFzayA9IGdldENIUlRGcm9tVGFzayhsZWFmKTsNCisJCQkJCQlsaXN0LmFkZChvd25pbmdUYXNrKTsNCisJCQkJCQlhZGRSZWxhdGVkT3BlcmF0aW9ucyhvd25pbmdUYXNrLCBsaXN0KTsNCisNCisJCQkJCX0NCisNCisJCQkJfQ0KKwkJCQljb3JlMnN1cGVydGFzay5wdXQoc3VwZXJ0YXNrSW5mb0xpc3QuZ2V0KGluZGV4U3VwZXJ0YXNrKSwgbGlzdCk7DQorCQkJfQ0KKwkJCWluZGV4U3VwZXJ0YXNrKys7DQorCQl9DQorCX0NCisNCisJLyoqDQorCSAqIENyZWF0ZXMgdGhlIHN1cGVydGFzayBpbmZvLg0KKwkgKg0KKwkgKiBAcGFyYW0gY2hfSHdQcm9jZXNzb3IgdGhlIGNoIGh3IHByb2Nlc3Nvcg0KKwkgKiBAcGFyYW0gaW5kZXhTdXBlcnRhc2sgdGhlIGluZGV4IHN1cGVydGFzaw0KKwkgKiBAcGFyYW0gY2FwYWNpdHkgdGhlIGNhcGFjaXR5DQorCSAqLw0KKwlwcml2YXRlIHZvaWQgY3JlYXRlU3VwZXJ0YXNrSW5mbyhDSF9Id1Byb2Nlc3NvciBjaF9Id1Byb2Nlc3NvciwgaW50IGluZGV4U3VwZXJ0YXNrLCBGbG9hdCBjYXBhY2l0eSkgew0KKwkJU3VwZXJ0YXNrSW5mbyBzaSA9IG5ldyBTdXBlcnRhc2tJbmZvKGNoX0h3UHJvY2Vzc29yLmdldEJhc2VfSW5zdGFuY2VTcGVjaWZpY2F0aW9uKCksICJTdXBlclRhc2tfIiArIGluZGV4U3VwZXJ0YXNrLCBjYXBhY2l0eSk7DQorCQlzdXBlcnRhc2tJbmZvTGlzdC5hZGQoc2kpOw0KKwkJU3lzdGVtLm91dC5wcmludGxuKCItLSoqKioqKioqKioqKioqKiBCUkFOQ0ggKioqKioqKioqKioqKioqIik7DQorCQlTeXN0ZW0ub3V0LnByaW50bG4oIlNjaGVkdWxpbmdfU2VydmVyICgiKTsNCisJCVN5c3RlbS5vdXQucHJpbnRsbigiCVR5cGUJCQkJPT4gUmVndWxhciwiKTsNCisJCVN5c3RlbS5vdXQucHJpbnRsbigiCU5hbWUJCQkJPT4gU3VwZXJUYXNrXyIgKyBpbmRleFN1cGVydGFzayArICIsIik7DQorCQlTeXN0ZW0ub3V0LnByaW50bG4oIglTZXJ2ZXJfU2NoZWRfcGFyYW1ldGVycwkJPT4gKCBUeXBlID0+IFJVTl9TdXBlcnRhc2ssIik7DQorCQlTeXN0ZW0ub3V0LnByaW50bG4oIgkJCQkJICAgICBVdGlsaXphdGlvbiA9PiAiICsgY2FwYWNpdHkgKyAiICksIik7IC8vIEZJWE1FOg0KKwkJLy8gdXRpbGl6YXRpb24NCisJCS8vIGlzDQorCQkvLyBub3QNCisJCS8vIGV4cHJlc3NlZA0KKwkJLy8gYXMgVQ0KKwkJLy8gaW4NCisJCS8vIEdlb2ZmcmV5J3MNCisJCS8vIGV4YW1wbGUNCisJCVN5c3RlbS5vdXQucHJpbnRsbigiCVNjaGVkdWxlcgkJCT0+IFNjaGVkdWxlcl8xICk7Iik7DQorCQlTeXN0ZW0ub3V0LnByaW50bG4oKTsNCisJCVN5c3RlbS5vdXQucHJpbnRsbigiU2NoZWR1bGVyICgiKTsNCisJCVN5c3RlbS5vdXQucHJpbnRsbigiCVR5cGUJPT4gU2Vjb25kYXJ5X1NjaGVkdWxlciwiKTsNCisJCVN5c3RlbS5vdXQucHJpbnRsbigiCU5hbWUJPT4gU2Vjb25kYXJ5U2NoZWR1bGVyXyIgKyBpbmRleFN1cGVydGFzayArICIsIik7DQorCQlTeXN0ZW0ub3V0LnByaW50bG4oIglQb2xpY3kJPT4gKCAJVHlwZQk9PiBFREYsIik7DQorCQlTeXN0ZW0ub3V0LnByaW50bG4oIgkJCVdvcnN0X0NvbnRleHRfU3dpdGNoCT0+IDIwICksIik7Ly8gRklYTUU6IGJhc2VkIG9uDQorCQkvLyBDb21wYWduaW4gcGFwZXINCisJCS8vIGF0IEVDUlRTMjAxNA0KKwkJU3lzdGVtLm91dC5wcmludGxuKCIJU2VydmVyCT0+IFN1cGVyVGFza18iICsgaW5kZXhTdXBlcnRhc2sgKyAiICk7Iik7DQorCQlTeXN0ZW0ub3V0LnByaW50bG4oKTsNCisJfQ0KKw0KKwkvKioNCisJICogQnVpbGRzIHRoZSBhc3NvY2lhdGlvbnMuDQorCSAqDQorCSAqIEBwYXJhbSBmaXJzdFBhY2sgdGhlIGZpcnN0IHBhY2sNCisJICovDQorCXB1YmxpYyB2b2lkIGJ1aWxkQXNzb2NpYXRpb25zKE1hcDxCaW4sIExpc3Q8VGFzaz4+IGZpcnN0UGFjaykgew0KKwkJLy8gYWRkIGNodGFza3Mgd2hpY2ggcmVwcmVzZW50IHJlYWwgdGFza3MgdG8gdGhlIGNvcmUgbWFwIGFuZCBhZGQgdGhlDQorCQkvLyByZWxhdGVkIG9wZXJhdGlvbiBjaGFpbiB0byB0aGUgc2FtZSBjb3JlDQorCQkvLyBUT0RPIHNvbHZlIHRoZSBmb2xsb3dpbmcgcHJvYmxlbTogdGhlIHJlbGF0ZWQgb3BlcmF0aW9ucyBtYXkgYmUgc2hhcmVkDQorCQkvLyBiZXR3ZWVuIHRhc2tzIHdoaWNoIGNhbiBiZSBhc3NpZ25lZCB0byBkaWZmZXJlbnQgY29yZXMhDQorDQorCQljb3JlMmNodGFzayA9IG5ldyBIYXNoTWFwPENIQ29yZSwgTGlua2VkSGFzaFNldDxPYmplY3Q+PigpOw0KKwkJaW50IGNvcmVJbmRleCA9IDA7DQorCQlmb3IgKEJpbiBjb3JlIDogZmlyc3RQYWNrLmtleVNldCgpKSB7DQorCQkJYXNzaWduZWRPcGVyYXRpb25zID0gbmV3IEhhc2hTZXQ8Q0hUYXNrPigpOw0KKwkJCUxpbmtlZEhhc2hTZXQ8T2JqZWN0PiBsaXN0ID0gbmV3IExpbmtlZEhhc2hTZXQ8T2JqZWN0PigpOw0KKwkJCWZvciAoVGFzayB0YXNrIDogZmlyc3RQYWNrLmdldChjb3JlKSkgew0KKwkJCQlDSFRhc2sgb3duaW5nVGFzayA9IGdldENIUlRGcm9tVGFzayh0YXNrKTsNCisJCQkJbGlzdC5hZGQob3duaW5nVGFzayk7DQorCQkJCWFkZFJlbGF0ZWRPcGVyYXRpb25zKG93bmluZ1Rhc2ssIGxpc3QpOw0KKwkJCX0NCisJCQljb3JlMmNodGFzay5wdXQoY29yZXMuZ2V0KGNvcmVJbmRleCsrKSwgbGlzdCk7DQorCQl9DQorCX0NCisNCisJLy8gdGhlIHJlbGF0ZWQgb3BlcmF0aW9ucyBvZiBhIHRhc2sgYXJlIGFzc2lnbmVkIHRvIHRoZSBzYW1lIGNvcmUgb2YgdGhlIHRhc2ssDQorCS8vIFRPRE8gZm9yIG5vdyBldmVyeSBvcGVyYXRpb24gc2hhcmVkIGJ5IG11bHRpcGxlIHRhc2tzIGlzIGFzc2lnbmVkIHRvIHRoZQ0KKwkvKioNCisJICogQWRkcyB0aGUgcmVsYXRlZCBvcGVyYXRpb25zLg0KKwkgKg0KKwkgKiBAcGFyYW0gb3duaW5nVGFzayB0aGUgb3duaW5nIHRhc2sNCisJICogQHBhcmFtIGxpc3QgdGhlIGxpc3QNCisJICovDQorCS8vIHNhbWUgY29yZSBvZiB0aGUgZmlyc3QgdGFzayB0aGF0IHdhcyBwcm9jZXNzZWQNCisJcHJpdmF0ZSB2b2lkIGFkZFJlbGF0ZWRPcGVyYXRpb25zKENIVGFzayBvd25pbmdUYXNrLCBMaW5rZWRIYXNoU2V0PE9iamVjdD4gbGlzdCkgew0KKwkJZm9yIChDSFRhc2sgb3BlcmF0aW9uIDogb3BlcmF0aW9uTGlzdC5nZXQob3duaW5nVGFzaykpIHsNCisJCQlpZiAoIWFzc2lnbmVkT3BlcmF0aW9ucy5jb250YWlucyhvcGVyYXRpb24pKSB7DQorCQkJCWxpc3QuYWRkKG9wZXJhdGlvbik7DQorCQkJCWFzc2lnbmVkT3BlcmF0aW9ucy5hZGQob3BlcmF0aW9uKTsNCisJCQl9DQorCQl9DQorCX0NCisNCisJLyoqDQorCSAqIEdldHMgdGhlIHRhc2sgSUQuDQorCSAqDQorCSAqIEBwYXJhbSBjaFJ0U3BlY2lmaWNhdGlvbiB0aGUgY2ggcnQgc3BlY2lmaWNhdGlvbg0KKwkgKiBAcmV0dXJuIHRoZSB0YXNrIElEDQorCSAqLw0KKwlwcml2YXRlIFN0cmluZyBnZXRUYXNrSUQoQ0hSdFNwZWNpZmljYXRpb24gY2hSdFNwZWNpZmljYXRpb24pIHsNCisJCXJldHVybiBjaFJ0U3BlY2lmaWNhdGlvbi5nZXRDb250ZXh0KCkuZ2V0TmFtZSgpICsgVU1MVXRpbHMuZ2V0RWxlbWVudElEKGNoUnRTcGVjaWZpY2F0aW9uLmdldENvbnRleHQoKSk7DQorCX0NCisNCisJLyoqDQorCSAqIEdldHMgdGhlIENIUlQgZnJvbSB0YXNrLg0KKwkgKg0KKwkgKiBAcGFyYW0gdGFzayB0aGUgdGFzaw0KKwkgKiBAcmV0dXJuIHRoZSBDSFJUIGZyb20gdGFzaw0KKwkgKi8NCisJcHJpdmF0ZSBDSFRhc2sgZ2V0Q0hSVEZyb21UYXNrKFRhc2sgdGFzaykgew0KKwkJZm9yIChDSFRhc2sgY2h0YXNrIDogb3BlcmF0aW9uTGlzdC5rZXlTZXQoKSkgew0KKwkJCWlmIChnZXRUYXNrSUQoY2h0YXNrLmdldENIUnRTcGVjaWZpY2F0aW9uKCkpLmVxdWFscyh0YXNrLmdldElkKCkpKQ0KKwkJCQlyZXR1cm4gY2h0YXNrOw0KKwkJfQ0KKwkJcmV0dXJuIG51bGw7DQorCX0NCisNCisJLyoqDQorCSAqIFByaW50cyB0aGUgY29udGVudC4NCisJICovDQorCXByaXZhdGUgdm9pZCBwcmludENvbnRlbnQoKSB7DQorCQlTeXN0ZW0ub3V0LnByaW50bG4oIlRhc2tzOiIpOw0KKwkJZm9yIChDSFRhc2sgY2h0YXNrIDogb3BlcmF0aW9uTGlzdC5rZXlTZXQoKSkgew0KKwkJCVN5c3RlbS5vdXQucHJpbnRsbihjaHRhc2spOw0KKwkJfQ0KKwl9DQorDQorCS8qKg0KKwkgKiBVcGRhdGUgbW9kZWwuDQorCSAqLw0KKwlwcm90ZWN0ZWQgdm9pZCB1cGRhdGVNb2RlbCgpIHsNCisJCWJvb2xlYW4gYjEgPSBjb3JlMmNodGFzayAhPSBudWxsICYmICFjb3JlMmNodGFzay5pc0VtcHR5KCk7DQorCQlib29sZWFuIGIyID0gY29yZTJzdXBlcnRhc2sgIT0gbnVsbCAmJiAhY29yZTJzdXBlcnRhc2suaXNFbXB0eSgpOw0KKw0KKwkJaWYgKGIxIHx8IGIyKSB7DQorDQorCQkJVHJhbnNhY3Rpb25hbEVkaXRpbmdEb21haW4gZWRpdGluZ0RvbWFpbiA9IFRyYW5zYWN0aW9uVXRpbC5nZXRFZGl0aW5nRG9tYWluKHVtbE1vZGVsKTsNCisJCQllZGl0aW5nRG9tYWluLmdldENvbW1hbmRTdGFjaygpLmV4ZWN1dGUobmV3IENvbShlZGl0aW5nRG9tYWluKSk7DQorCQl9DQorCX0NCisNCisJLyoqDQorCSAqIFF1ZXJ5IGNvbnRlbnQuDQorCSAqDQorCSAqIEBwYXJhbSBvd25lciB0aGUgb3duZXINCisJICogQHRocm93cyBNb2RlbEVycm9yIHRoZSBtb2RlbCBlcnJvcg0KKwkgKi8NCisJcHJvdGVjdGVkIHZvaWQgcXVlcnlDb250ZW50KE1vZGVsIG93bmVyKSB0aHJvd3MgTW9kZWxFcnJvciB7DQorCQlFTGlzdDxDSF9Id1Byb2Nlc3Nvcj4geCA9IFF1ZXJ5VXRpbHMuZ2V0QWxsUHJvY2Vzc29ySW5zdGFuY2VzKHVtbE1vZGVsKTsNCisJCXggPSBRdWVyeVV0aWxzLmZpbHRlck11bHRpQ29yZVByb2Nlc3NvcnMoeCk7DQorCQlpZiAoeC5zaXplKCkgPiAxKQ0KKwkJCXRocm93IG5ldyBNb2RlbEVycm9yKCJBc3NpZ25tZW50IGdlbmVyYXRpb24gd29ya3Mgb25seSBvbiBzaW5nbGUgcHJvY2Vzc29yIHN5c3RlbXMiKTsNCisNCisJCS8vIExvb2sgZm9yIFBhY2thZ2VzIHN0ZXJlb3R5cGVkIGFzIENIR0FSZXNvdXJjZVBsYXRmb3JtIGluIHRoZSBEZXBsb3ltZW50DQorCQkvLyBWaWV3DQorCQlFTGlzdDxQYWNrYWdlPiBwYWNrYWdlcyA9IFF1ZXJ5VXRpbHMuZ2V0UmVzb3VyY2VQbGF0Zm9ybVBhY2thZ2VzKHVtbE1vZGVsLCBDSEVTU1Byb2ZpbGVNYW5hZ2VyLkRFUExPWU1FTlRfVklFVyk7DQorDQorCQlpZiAocGFja2FnZXMuc2l6ZSgpID09IDApIHsNCisJCQlNb2RlbEVycm9yIG1lID0gbmV3IE1vZGVsRXJyb3IoIkVycm9yIGluIG1vZGVsOiBubyBQYWNrYWdlIHN0ZXJlb3R5cGVkIGFzIENIR0FSZXNvdXJjZVBsYXRmb3JtIGluIHRoZSBEZXBsb3ltZW50IFZpZXchIik7DQorCQkJdGhyb3cgbWU7DQorCQl9DQorCQlod1N5c3RlbXNMaXN0ID0gbmV3IEJhc2ljRUxpc3Q8SW5zdGFuY2VTcGVjaWZpY2F0aW9uPigpOw0KKw0KKwkJZm9yIChQYWNrYWdlIHBhY2sgOiBwYWNrYWdlcykgew0KKwkJCUVMaXN0PEluc3RhbmNlU3BlY2lmaWNhdGlvbj4gcHJvY2Vzc29ycyA9IG5ldyBCYXNpY0VMaXN0PEluc3RhbmNlU3BlY2lmaWNhdGlvbj4oKTsNCisJCQlmb3IgKENIX0h3UHJvY2Vzc29yIGNoX3Byb2Nlc3NvciA6IFF1ZXJ5VXRpbHMuZ2V0QWxsUHJvY2Vzc29ySW5zdGFuY2VzSW5QYWNrYWdlKHBhY2spKSB7DQorCQkJCUluc3RhbmNlU3BlY2lmaWNhdGlvbiBpbnN0U3BlYyA9IGNoX3Byb2Nlc3Nvci5nZXRCYXNlX0luc3RhbmNlU3BlY2lmaWNhdGlvbigpOw0KKwkJCQlwcm9jZXNzb3JzLmFkZChpbnN0U3BlYyk7DQorCQkJCUVMaXN0PENIQ29yZT4gdGhlQ29yZXMgPSBRdWVyeVV0aWxzLmdldENvcmVzKGNoX3Byb2Nlc3Nvcik7DQorCQkJCWNvcmVzTWFwLnB1dChpbnN0U3BlYywgdGhlQ29yZXMpOw0KKwkJCQljb3Jlcy5hZGRBbGwodGhlQ29yZXMpOw0KKwkJCX0NCisJCQlJbnN0YW5jZVNwZWNpZmljYXRpb24gdGhlU3lzdGVtID0gVU1MVXRpbHMuZ2V0Um9vdEluc3RhbmNlSW5QYWNrYWdlKHBhY2spOw0KKwkJCWh3U3lzdGVtc0xpc3QuYWRkKHRoZVN5c3RlbSk7DQorCQkJcHJvY2Vzc29yc01hcC5wdXQocGFjaywgcHJvY2Vzc29ycyk7DQorCQl9DQorDQorCQlpZiAoaHdTeXN0ZW1zTGlzdC5pc0VtcHR5KCkpIHsNCisJCQlNb2RlbEVycm9yIG1lID0gbmV3IE1vZGVsRXJyb3IoIkVycm9yIGluIG1vZGVsOiBubyBTeXN0ZW0gaW4gdGhlIERlcGxveW1lbnQgVmlldyEiKTsNCisJCQl0aHJvdyBtZTsNCisJCX0NCisNCisJCUVMaXN0PEluc3RhbmNlU3BlY2lmaWNhdGlvbj4gaW5zdGFuY2VzID0gVU1MVXRpbHMuZ2V0QWxsQ29tcG9uZW50SW5zdGFuY2VzKHVtbE1vZGVsLCB0cnVlKTsNCisJCUVMaXN0PENIVGFzaz4gY2h0YXNrcyA9IFF1ZXJ5VXRpbHMuZ2V0Q0hUYXNrc0xpc3QoaW5zdGFuY2VzKTsNCisNCisJCW9wZXJhdGlvbkxpc3QgPSBRdWVyeVV0aWxzLmdldE9wZXJhdGlvbkNoYWluKHVtbE1vZGVsLCBjaHRhc2tzKTsNCisNCisJfQ0KKw0KKwkvKioNCisJICogVGhlIENsYXNzIENvbS4NCisJICovDQorCWNsYXNzIENvbSBleHRlbmRzIFJlY29yZGluZ0NvbW1hbmQgew0KKw0KKwkJLyoqDQorCQkgKiBJbnN0YW50aWF0ZXMgYSBuZXcgY29tLg0KKwkJICoNCisJCSAqIEBwYXJhbSBkb21haW4gdGhlIGRvbWFpbg0KKwkJICovDQorCQlwdWJsaWMgQ29tKFRyYW5zYWN0aW9uYWxFZGl0aW5nRG9tYWluIGRvbWFpbikgew0KKwkJCXN1cGVyKGRvbWFpbik7DQorCQl9DQorDQorCQkvKiAobm9uLUphdmFkb2MpDQorCQkgKiBAc2VlIG9yZy5lY2xpcHNlLmVtZi50cmFuc2FjdGlvbi5SZWNvcmRpbmdDb21tYW5kI2RvRXhlY3V0ZSgpDQorCQkgKi8NCisJCUBPdmVycmlkZQ0KKwkJcHJvdGVjdGVkIHZvaWQgZG9FeGVjdXRlKCkgew0KKwkJCXRyeSB7DQorCQkJCVF1ZXJ5VXRpbHMuZGVsZXRlVGFzazJDb3JlQXNzb2NpYXRpb25zKGh3U3lzdGVtKTsNCisJCQkJaWYgKCF1c2VSVU4pDQorCQkJCQlHZW5lcmF0b3JVdGlscy5idWlsZFRhc2syQ29yZUFzc29jaWF0aW9ucyhod1N5c3RlbSwgY29yZTJjaHRhc2spOw0KKwkJCQllbHNlDQorCQkJCQlHZW5lcmF0b3JVdGlscy5idWlsZFRhc2syU3VwZXJUYXNrQXNzb2NpYXRpb25zKGh3U3lzdGVtLCBjb3JlMnN1cGVydGFzaywgc3VwZXJ0YXNrSW5mb0xpc3QpOw0KKw0KKwkJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7DQorCQkJCXRocm93IG5ldyBPcGVyYXRpb25DYW5jZWxlZEV4Y2VwdGlvbihlLmdldE1lc3NhZ2UoKSk7DQorCQkJfQ0KKwkJfQ0KKwl9DQorDQorfQ0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm11bHRpY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL211bHRpY29yZS9jb21tYW5kcy9HZW5lcmF0ZVRhc2syQ29yZUFzc2lnbm1lbnRzVXNpbmdSVU5Db21tYW5kLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tdWx0aWNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tdWx0aWNvcmUvY29tbWFuZHMvR2VuZXJhdGVUYXNrMkNvcmVBc3NpZ25tZW50c1VzaW5nUlVOQ29tbWFuZC5qYXZhCmluZGV4IGJkMmNjNWYuLjlkMjQ0YTUgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm11bHRpY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL211bHRpY29yZS9jb21tYW5kcy9HZW5lcmF0ZVRhc2syQ29yZUFzc2lnbm1lbnRzVXNpbmdSVU5Db21tYW5kLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbXVsdGljb3JlL2NvbW1hbmRzL0dlbmVyYXRlVGFzazJDb3JlQXNzaWdubWVudHNVc2luZ1JVTkNvbW1hbmQuamF2YQpAQCAtMSwzNiArMSw0MyBAQAotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgLQotICAtIENvcHlyaWdodCAoYykgMjAxNS0yMDE2IFVuaXZlcnNpdHkgb2YgUGFkb3ZhLCBJVEFMWSAtICBJbnRlY3MgU3BBIAotICAtIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAgLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAgLSB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICAtIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gIC0KLSAgLSBDb250cmlidXRvcnM6Ci0gIC0KLSAgLSBBbGVzc2FuZHJvIFpvdmkgYXpvdmlAbWF0aC51bmlwZC5pdAotICAtIFN0ZWZhbm8gUHVyaSBzdGVmYW5vLnB1cmlAaW50ZWNzLml0Ci0gIC0gTGF1cmEgQmFyYWNjaGkgbGF1cmEuYmFyYWNjaGlAaW50ZWNzLml0Ci0gIC0gTmljaG9sYXMgUGFjaW5pIG5pY2hvbGFzLnBhY2luaUBpbnRlY3MuaXQgIAotICAtCi0gIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uIGFuZC9vciBpbml0aWFsIGRvY3VtZW50YXRpb24KLSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9wYWNrYWdlIG9yZy5wb2xhcnN5cy5jaGVzcy5tdWx0aWNvcmUuY29tbWFuZHM7Ci0KLWltcG9ydCBvcmcucG9sYXJzeXMuY2hlc3MuY29yZS51dGlsLnVtbC5Nb2RlbEVycm9yOwotCi0KLS8qKgotICogVGhlIENsYXNzIEdlbmVyYXRlVGFzazJDb3JlQXNzaWdubWVudHNVc2luZ1JVTkNvbW1hbmQuCi0gKi8KLXB1YmxpYyBjbGFzcyBHZW5lcmF0ZVRhc2syQ29yZUFzc2lnbm1lbnRzVXNpbmdSVU5Db21tYW5kIGV4dGVuZHMgR2VuZXJhdGVUYXNrMkNvcmVBc3NpZ25tZW50c0NvbW1hbmQgewotCQotCS8qIChub24tSmF2YWRvYykKLQkgKiBAc2VlIG9yZy5wb2xhcnN5cy5jaGVzcy5tdWx0aWNvcmUuY29tbWFuZHMuR2VuZXJhdGVUYXNrMkNvcmVBc3NpZ25tZW50c0NvbW1hbmQjZXhlY3V0ZSgpCi0JICovCi0JQE92ZXJyaWRlCi0JcHVibGljIHZvaWQgZXhlY3V0ZSgpIHRocm93cyBNb2RlbEVycm9yIHsKLQkJcXVlcnlDb250ZW50KHVtbE1vZGVsKTsKLQkJZXhlY3V0ZVRhc2syQ29yZUNhbGN1bGF0b3IodHJ1ZSk7Ci0JCXVwZGF0ZU1vZGVsKCk7Ci0JfQotfQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgDQorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KKyAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorICAtDQorICAtIENvcHlyaWdodCAoYykgMjAxNS0yMDE2IFVuaXZlcnNpdHkgb2YgUGFkb3ZhLCBJVEFMWSAtICBJbnRlY3MgU3BBIA0KKyAgLSBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICAtIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KKyAgLSB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAgLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KKyAgLQ0KKyAgLSBDb250cmlidXRvcnM6DQorICAtDQorICAtIEFsZXNzYW5kcm8gWm92aSBhem92aUBtYXRoLnVuaXBkLml0DQorICAtIFN0ZWZhbm8gUHVyaSBzdGVmYW5vLnB1cmlAaW50ZWNzLml0DQorICAtIExhdXJhIEJhcmFjY2hpIGxhdXJhLmJhcmFjY2hpQGludGVjcy5pdA0KKyAgLSBOaWNob2xhcyBQYWNpbmkgbmljaG9sYXMucGFjaW5pQGludGVjcy5pdCAgDQorICAtDQorICAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbiBhbmQvb3IgaW5pdGlhbCBkb2N1bWVudGF0aW9uDQorICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL3BhY2thZ2Ugb3JnLnBvbGFyc3lzLmNoZXNzLm11bHRpY29yZS5jb21tYW5kczsNCisNCitpbXBvcnQgb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUudXRpbC51bWwuTW9kZWxFcnJvcjsNCisNCisNCisvKioNCisgKiBUaGUgQ2xhc3MgR2VuZXJhdGVUYXNrMkNvcmVBc3NpZ25tZW50c1VzaW5nUlVOQ29tbWFuZC4NCisgKi8NCitwdWJsaWMgY2xhc3MgR2VuZXJhdGVUYXNrMkNvcmVBc3NpZ25tZW50c1VzaW5nUlVOQ29tbWFuZCBleHRlbmRzIEdlbmVyYXRlVGFzazJDb3JlQXNzaWdubWVudHNDb21tYW5kIHsNCisJDQorCS8qIChub24tSmF2YWRvYykNCisJICogQHNlZSBvcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlLmNvbW1hbmRzLkdlbmVyYXRlVGFzazJDb3JlQXNzaWdubWVudHNDb21tYW5kI2V4ZWN1dGUoKQ0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyB2b2lkIGV4ZWN1dGUoKSB0aHJvd3MgTW9kZWxFcnJvciB7DQorCQlxdWVyeUNvbnRlbnQodW1sTW9kZWwpOw0KKwkJZXhlY3V0ZVRhc2syQ29yZUNhbGN1bGF0b3IodHJ1ZSk7DQorCQl1cGRhdGVNb2RlbCgpOw0KKwl9DQorfQ0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm11bHRpY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL211bHRpY29yZS9jb21tYW5kcy9wYWNrYWdlLmh0bWwgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tdWx0aWNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tdWx0aWNvcmUvY29tbWFuZHMvcGFja2FnZS5odG1sCmluZGV4IDdkN2Q1NDYuLmZmYTZiOTMgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm11bHRpY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL211bHRpY29yZS9jb21tYW5kcy9wYWNrYWdlLmh0bWwKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbXVsdGljb3JlL2NvbW1hbmRzL3BhY2thZ2UuaHRtbApAQCAtMSw3ICsxLDE0IEBACisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKyMgQ29weXJpZ2h0IChDKSAyMDIwIA0KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyMgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQorIyB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyMgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIDwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPg0KIDxodG1sPg0KIDxoZWFkPjwvaGVhZD4NCiA8Ym9keT4NCiAgIFByb3ZpZGVzLi4uDQogPC9ib2R5Pg0KLTwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCis8L2h0bWw+DQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbXVsdGljb3JlL2RpYWxvZ3MvQ29yZVNlbGVjdG9yRGlhbG9nLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tdWx0aWNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tdWx0aWNvcmUvZGlhbG9ncy9Db3JlU2VsZWN0b3JEaWFsb2cuamF2YQppbmRleCAyZjFmNGM3Li5iMzc0MjU1IDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tdWx0aWNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tdWx0aWNvcmUvZGlhbG9ncy9Db3JlU2VsZWN0b3JEaWFsb2cuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tdWx0aWNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tdWx0aWNvcmUvZGlhbG9ncy9Db3JlU2VsZWN0b3JEaWFsb2cuamF2YQpAQCAtMSw2MDIgKzEsNjA5IEBACi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAtCi0gIC0gQ29weXJpZ2h0IChjKSAyMDE1LTIwMTYgVW5pdmVyc2l0eSBvZiBQYWRvdmEsIElUQUxZIC0gIEludGVjcyBTcEEgCi0gIC0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICAtIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICAtIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gIC0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAgLQotICAtIENvbnRyaWJ1dG9yczoKLSAgLQotICAtIEFsZXNzYW5kcm8gWm92aSBhem92aUBtYXRoLnVuaXBkLml0Ci0gIC0gU3RlZmFubyBQdXJpIHN0ZWZhbm8ucHVyaUBpbnRlY3MuaXQKLSAgLSBMYXVyYSBCYXJhY2NoaSBsYXVyYS5iYXJhY2NoaUBpbnRlY3MuaXQKLSAgLSBOaWNob2xhcyBQYWNpbmkgbmljaG9sYXMucGFjaW5pQGludGVjcy5pdCAgCi0gIC0KLSAgLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24gYW5kL29yIGluaXRpYWwgZG9jdW1lbnRhdGlvbgotICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL3BhY2thZ2Ugb3JnLnBvbGFyc3lzLmNoZXNzLm11bHRpY29yZS5kaWFsb2dzOwotCi1pbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuQXJyYXlzOwotaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOwotaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOwotaW1wb3J0IGphdmEudXRpbC5MaW5rZWRIYXNoU2V0OwotaW1wb3J0IGphdmEudXRpbC5NYXA7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuRUxpc3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2UuZGlhbG9ncy5UcmF5RGlhbG9nOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuRG91YmxlQ2xpY2tFdmVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLklEb3VibGVDbGlja0xpc3RlbmVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuSUxhYmVsUHJvdmlkZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5JU2VsZWN0aW9uQ2hhbmdlZExpc3RlbmVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuSVN0cnVjdHVyZWRTZWxlY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5TZWxlY3Rpb25DaGFuZ2VkRXZlbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5UcmVlVmlld2VyOwotaW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuTUFSVEUuTUFSVEVfRm91bmRhdGlvbnMuQWxsb2MuQXNzaWduOwotaW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuaW5mcmEud2lkZ2V0cy5BY3RpdmF0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5pbmZyYS53aWRnZXRzLmVkaXRvcnMuSUVsZW1lbnRTZWxlY3Rpb25MaXN0ZW5lcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLmluZnJhLndpZGdldHMubWVzc2FnZXMuTWVzc2FnZXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5pbmZyYS53aWRnZXRzLnByb3ZpZGVycy5Db2xsZWN0aW9uQ29udGVudFByb3ZpZGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuaW5mcmEud2lkZ2V0cy5zZWxlY3RvcnMuUmVmZXJlbmNlU2VsZWN0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LlNXVDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QuY3VzdG9tLlNjcm9sbGVkQ29tcG9zaXRlOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5ldmVudHMuQ29udHJvbEFkYXB0ZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmV2ZW50cy5Db250cm9sRXZlbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmV2ZW50cy5TZWxlY3Rpb25FdmVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QuZXZlbnRzLlNlbGVjdGlvbkxpc3RlbmVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5sYXlvdXQuRmlsbExheW91dDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QubGF5b3V0LkdyaWREYXRhOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5sYXlvdXQuR3JpZExheW91dDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QubGF5b3V0LlJvd0RhdGE7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmxheW91dC5Sb3dMYXlvdXQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuQnV0dG9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkNvbXBvc2l0ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5Db250cm9sOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkRpc3BsYXk7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuTGFiZWw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuU2hlbGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuVHJlZTsKLWltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5JbnN0YW5jZVNwZWNpZmljYXRpb247Ci1pbXBvcnQgb3JnLnBvbGFyc3lzLmNoZXNzLm11bHRpY29yZS5tb2RlbC5DSENvcmU7Ci1pbXBvcnQgb3JnLnBvbGFyc3lzLmNoZXNzLm11bHRpY29yZS51dGlscy5RdWVyeVV0aWxzOwotCi0vKioKLSAqIFRoZSBDbGFzcyBDb3JlU2VsZWN0b3JEaWFsb2cuCi0gKi8KLXB1YmxpYyBjbGFzcyBDb3JlU2VsZWN0b3JEaWFsb2cgZXh0ZW5kcyBUcmF5RGlhbG9nIGltcGxlbWVudHMKLQkJU2VsZWN0aW9uTGlzdGVuZXIsIElTZWxlY3Rpb25DaGFuZ2VkTGlzdGVuZXIsIElEb3VibGVDbGlja0xpc3RlbmVyLCBJRWxlbWVudFNlbGVjdGlvbkxpc3RlbmVyIHsKLQotCS8qKiBUaGUgQ29uc3RhbnQgUEFSVElUSU9OU19UT19DT1JFUy4gKi8KLQlwdWJsaWMgc3RhdGljIGZpbmFsIGludCBQQVJUSVRJT05TX1RPX0NPUkVTID0gMDsKLQkKLQkvKiogVGhlIENvbnN0YW50IENPTVBPTkVOVFNfVE9fQ09SRVMuICovCi0JcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQ09NUE9ORU5UU19UT19DT1JFUyA9IDE7Ci0JCi0JLyoqIFRoZSBDb25zdGFudCBUQVNLU19UT19DT1JFUy4gKi8KLQlwdWJsaWMgc3RhdGljIGZpbmFsIGludCBUQVNLU19UT19DT1JFUyA9IDI7Ci0JCi0JLyoqIFRoZSBjb3Jlcy4gKi8KLQlwcml2YXRlIEVMaXN0PENIQ29yZT4gY29yZXM7Ci0JCi0JLyoqIFRoZSBtYXAuICovCi0JTWFwPENIQ29yZSwgIExpbmtlZEhhc2hTZXQ8T2JqZWN0Pj4gbWFwOwotCQotCS8qKiBUaGUgc2VsZWN0b3Igc2VjdGlvbi4gKi8KLQlwcml2YXRlIENvbXBvc2l0ZSBzZWxlY3RvclNlY3Rpb247Ci0JCi0JLyoqIFRoZSBidXR0b25zIHNlY3Rpb24uICovCi0JcHJpdmF0ZSBDb21wb3NpdGUgYnV0dG9uc1NlY3Rpb247Ci0JCi0JLyoqIFRoZSBhZGQuICovCi0JcHJpdmF0ZSBCdXR0b24gYWRkOwotCQotCS8qKiBUaGUgcmVtb3ZlLiAqLwotCXByaXZhdGUgQnV0dG9uIHJlbW92ZTsKLQkKLQkvKiogVGhlIGFkZCBhbGwuICovCi0JcHJpdmF0ZSBCdXR0b24gYWRkQWxsOwotCQotCS8qKiBUaGUgcmVtb3ZlIGFsbC4gKi8KLQlwcml2YXRlIEJ1dHRvbiByZW1vdmVBbGw7Ci0JCi0JLyoqIFRoZSBzZWxlY3RlZCBlbGVtZW50cy4gKi8KLQlwcml2YXRlIFRyZWUgc2VsZWN0ZWRFbGVtZW50czsKLQkKLQkvKiogVGhlIGxhYmVsIHByb3ZpZGVyLiAqLwotCS8vcHJpdmF0ZSBUcmVlVmlld2VyIHNlbGVjdGVkRWxlbWVudHNWaWV3ZXI7Ci0JcHJpdmF0ZSBJTGFiZWxQcm92aWRlciBsYWJlbFByb3ZpZGVyOwotCS8vQERlcHJlY2F0ZWQKLQkvL3Byb3RlY3RlZCBmaW5hbCBDb2xsZWN0aW9uPE9iamVjdD4gYWxsRWxlbWVudHM7Ci0JLyoqIFRoZSBzZWxlY3Rvci4gKi8KLQkvL3ByaXZhdGUgVHJlZVZpZXdlciB0cmVlVmlld2VyOwotCXByaXZhdGUgUmVmZXJlbmNlU2VsZWN0b3Igc2VsZWN0b3I7Ci0JCi0JLyoqIFRoZSBwYXJ0aXRpb24gc2VsZWN0ZWQuICovCi0JcHJpdmF0ZSBDSENvcmUgcGFydGl0aW9uU2VsZWN0ZWQ7Ci0JCi0JLyoqIFRoZSBzZWxlY3RlZCBlbGVtZW50cyB2aWV3ZXJzLiAqLwotCXByaXZhdGUgSGFzaE1hcDxDSENvcmUsIFRyZWVWaWV3ZXI+IHNlbGVjdGVkRWxlbWVudHNWaWV3ZXJzOwotCQotCS8qKiBUaGUgcmVzdWx0LiAqLwotCXByaXZhdGUgTWFwPENIQ29yZSwgTGlua2VkSGFzaFNldDxPYmplY3Q+PiByZXN1bHQ7Ci0KLQkvKioKLQkgKiBPcGVuIGNvcmUgc2VsZWN0b3IgZGlhbG9nIGZvciBBc3NpZ24gcGFydGl0aW9uIHRvIGNvcmVzIG9yIGFzc2lnbiBjb21wb25lbnRzIHRvIGNvcmVzIG9yIGFzc2lnbiB0YXNrcyB0byBjb3Jlcy4KLQkgKgotCSAqIEBwYXJhbSBwYXJlbnRTaGVsbCB0aGUgcGFyZW50IHNoZWxsCi0JICogQHBhcmFtIHJlZmVyZW5jZVNlbGVjdG9yIHRoZSByZWZlcmVuY2Ugc2VsZWN0b3IKLQkgKiBAcGFyYW0gY29yZXMgdGhlIGNvcmVzCi0JICogQHBhcmFtIHBhY2sgdGhlIHBhY2sKLQkgKiBAcGFyYW0gYXNzaWdubWVudHMgdGhlIGFzc2lnbm1lbnRzCi0JICogQHBhcmFtIG1vZGUgUEFSVElUSU9OU19UT19DT1JFUyB8IENPTVBPTkVOVFNfVE9fQ09SRVMgfCBUQVNLU19UT19DT1JFUwotCSAqIEBwYXJhbSB0aXRsZSB0aGUgdGl0bGUKLQkgKi8KLQlwdWJsaWMgQ29yZVNlbGVjdG9yRGlhbG9nKFNoZWxsIHBhcmVudFNoZWxsLAotCQkJUmVmZXJlbmNlU2VsZWN0b3IgcmVmZXJlbmNlU2VsZWN0b3IsCi0JCQlFTGlzdDxDSENvcmU+IGNvcmVzLCBvcmcuZWNsaXBzZS51bWwyLnVtbC5QYWNrYWdlIHBhY2ssIEVMaXN0PEFzc2lnbj4gYXNzaWdubWVudHMsIGludCBtb2RlLCBTdHJpbmcgdGl0bGUpIHsKLQkJLy8gc3VwZXIocGFyZW50U2hlbGwsIHNlbGVjdG9yLCB0aXRsZSwgdW5pcXVlLCBvcmRlcmVkLCB1cHBlckJvdW5kKTsKLQkJc3VwZXIocGFyZW50U2hlbGwpOwotCQl0aGlzLmNvcmVzID0gY29yZXM7Ci0JCXRoaXMuc2VsZWN0b3IgPSByZWZlcmVuY2VTZWxlY3RvcjsKLQkJbWFwID0gbmV3IEhhc2hNYXA8Q0hDb3JlLCAgTGlua2VkSGFzaFNldDxPYmplY3Q+PigpOwotCQlpZihtb2RlPT1QQVJUSVRJT05TX1RPX0NPUkVTKSB7Ci0JCQlmb3IgKENIQ29yZSBjb3JlIDogY29yZXMpIHsKLQkJCQkvLyBMQiAyMDE1MDcwOCBsb29rIGF0IGFzc2lnbm1lbnRzIHRoYXQgYWxyZWFkeSBleGlzdCBpbiB0aGUgbW9kZWwgYmVmb3JlIG9wZW5pbmcgdGhlIHNlbGVjdG9yCi0JCQkJTGlua2VkSGFzaFNldDxPYmplY3Q+IHRoZUNvcmVzUGFydGl0aW9ucyA9IFF1ZXJ5VXRpbHMuZ2V0UGFydGl0aW9uc0Fzc2lnbmVkMkNvcmUoY29yZSwgYXNzaWdubWVudHMpOwotCQkJCW1hcC5wdXQoY29yZSwgdGhlQ29yZXNQYXJ0aXRpb25zKTsKLQkJCQkvL21hcC5wdXQoY29yZSwgbmV3IExpbmtlZEhhc2hTZXQ8T2JqZWN0PigpKTsKLQkJCX0KLQkJfQotCQlpZihtb2RlPT1DT01QT05FTlRTX1RPX0NPUkVTKSB7Ci0JCQlmb3IgKENIQ29yZSBjb3JlIDogY29yZXMpIHsKLQkJCQkvLyBMQiAyMDE1MDcwOCBsb29rIGF0IGFzc2lnbm1lbnRzIHRoYXQgYWxyZWFkeSBleGlzdCBpbiB0aGUgbW9kZWwgYmVmb3JlIG9wZW5pbmcgdGhlIHNlbGVjdG9yCi0JCQkJTGlua2VkSGFzaFNldDxPYmplY3Q+IHRoZUNvcmVzQ29tcG9uZW50cyA9IFF1ZXJ5VXRpbHMuZ2V0Q29tcG9uZW50c0Fzc2lnbmVkMkNvcmUoY29yZSwgYXNzaWdubWVudHMpOwotCQkJCW1hcC5wdXQoY29yZSwgdGhlQ29yZXNDb21wb25lbnRzKTsKLQkJCX0KLQkJfQotCQlpZihtb2RlPT1UQVNLU19UT19DT1JFUykgewotCQkJZm9yIChDSENvcmUgY29yZSA6IGNvcmVzKSB7Ci0JCQkJLy8gTEIgMjAxNTA3MDggbG9vayBhdCBhc3NpZ25tZW50cyB0aGF0IGFscmVhZHkgZXhpc3QgaW4gdGhlIG1vZGVsIGJlZm9yZSBvcGVuaW5nIHRoZSBzZWxlY3RvcgotCQkJCUxpbmtlZEhhc2hTZXQ8T2JqZWN0PiB0aGVDb3Jlc1Rhc2tzID0gUXVlcnlVdGlscy5nZXRUYXNrc0Fzc2lnbmVkMkNvcmUoY29yZSwgcGFjaywgYXNzaWdubWVudHMpOwotCQkJCW1hcC5wdXQoY29yZSwgdGhlQ29yZXNUYXNrcyk7Ci0JCQl9Ci0JCX0KLQkJLy90aGlzLmFsbEVsZW1lbnRzID0gbmV3IExpbmtlZEhhc2hTZXQ8T2JqZWN0PigpOwotCQkKLQkJc2VsZWN0b3IuYWRkRWxlbWVudFNlbGVjdGlvbkxpc3RlbmVyKHRoaXMpOwotCQkKLQkJc2VsZWN0ZWRFbGVtZW50c1ZpZXdlcnMgPSBuZXcgSGFzaE1hcDxDSENvcmUsIFRyZWVWaWV3ZXI+KCk7Ci0JCXNldFRpdGxlKHRpdGxlKTsKLQl9Ci0KLQkvKioKLQkgKiBHZXRzIHRoZSBkaXNwbGF5LgotCSAqCi0JICogQHJldHVybiB0aGUgZGlzcGxheQotCSAqLwotCXB1YmxpYyBzdGF0aWMgRGlzcGxheSBnZXREaXNwbGF5KCkgewotCQlEaXNwbGF5IGRpc3BsYXkgPSBEaXNwbGF5LmdldEN1cnJlbnQoKTsKLQkJLy8gbWF5IGJlIG51bGwgaWYgb3V0c2lkZSB0aGUgVUkgdGhyZWFkCi0JCWlmIChkaXNwbGF5ID09IG51bGwpCi0JCQlkaXNwbGF5ID0gRGlzcGxheS5nZXREZWZhdWx0KCk7Ci0JCXJldHVybiBkaXNwbGF5OwotCX0KLQotCS8qIChub24tSmF2YWRvYykKLQkgKiBAc2VlIG9yZy5lY2xpcHNlLmpmYWNlLmRpYWxvZ3MuRGlhbG9nI2NyZWF0ZURpYWxvZ0FyZWEob3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuQ29tcG9zaXRlKQotCSAqLwotCUBPdmVycmlkZQotCXByb3RlY3RlZCBDb250cm9sIGNyZWF0ZURpYWxvZ0FyZWEoQ29tcG9zaXRlIHBhcmVudCkgewotCQlHcmlkTGF5b3V0IGxheW91dCA9IChHcmlkTGF5b3V0KSBwYXJlbnQuZ2V0TGF5b3V0KCk7Ci0JCWxheW91dC5udW1Db2x1bW5zID0gMjsKLQkJbGF5b3V0Lm1ha2VDb2x1bW5zRXF1YWxXaWR0aCA9IHRydWU7Ci0JCQotCQkKLQotCQlDb21wb3NpdGUgc2VsZWN0b3JQYW5lID0gbmV3IENvbXBvc2l0ZShwYXJlbnQsIFNXVC5OT05FKTsKLQkJc2VsZWN0b3JQYW5lLnNldExheW91dChuZXcgR3JpZExheW91dCgxLCBmYWxzZSkpOwotCQlzZWxlY3RvclBhbmUKLQkJCQkuc2V0TGF5b3V0RGF0YShuZXcgR3JpZERhdGEoU1dULkZJTEwsIFNXVC5GSUxMLCB0cnVlLCB0cnVlKSk7Ci0KLQkJZmluYWwgU2Nyb2xsZWRDb21wb3NpdGUgc2MyID0gbmV3IFNjcm9sbGVkQ29tcG9zaXRlKHBhcmVudCwKLQkJCQlTV1QuVl9TQ1JPTEwgfCBTV1QuQk9SREVSKTsKLQkJc2MyLnNldExheW91dERhdGEobmV3IEdyaWREYXRhKFNXVC5GSUxMLCBTV1QuRklMTCwgdHJ1ZSwgdHJ1ZSkpOwotCQlzYzIuc2V0RXhwYW5kSG9yaXpvbnRhbCh0cnVlKTsKLQkJc2MyLnNldEV4cGFuZFZlcnRpY2FsKHRydWUpOwotCi0JCWZpbmFsIENvbXBvc2l0ZSBzZWxlY3RlZFBhbmUgPSBuZXcgQ29tcG9zaXRlKHNjMiwgU1dULk5PTkUpOwotCQlzZWxlY3RlZFBhbmUuc2V0TGF5b3V0KG5ldyBHcmlkTGF5b3V0KDEsZmFsc2UpKTsKLQkJc2VsZWN0ZWRQYW5lCi0JCQkJLnNldExheW91dERhdGEobmV3IEdyaWREYXRhKFNXVC5SSUdIVCwgU1dULkZJTEwsIHRydWUsIHRydWUpKTsKLQkJZm9yIChDSENvcmUgb2JqZWN0IDogY29yZXMpIHsKLQkJCUNvbXBvc2l0ZSBzZWxlY3RlZFBhbmVfID0gbmV3IENvbXBvc2l0ZShzZWxlY3RlZFBhbmUsIFNXVC5OT05FKTsKLQkJCXNlbGVjdGVkUGFuZV8uc2V0TGF5b3V0KG5ldyBHcmlkTGF5b3V0KDIsIGZhbHNlKSk7Ci0JCQlzZWxlY3RlZFBhbmVfLnNldExheW91dERhdGEobmV3IEdyaWREYXRhKFNXVC5GSUxMLCBTV1QuRklMTCwgdHJ1ZSwgdHJ1ZSkpOwotCi0JCQljcmVhdGVMaXN0U2VjdGlvbihvYmplY3QsIHNlbGVjdGVkUGFuZV8pOwotCQl9Ci0JCQotCQlzYzIuc2V0Q29udGVudChzZWxlY3RlZFBhbmUpOwotCQlzYzIuc2V0TWluU2l6ZShzYzIuY29tcHV0ZVNpemUoU1dULkRFRkFVTFQsIFNXVC5ERUZBVUxUKSk7Ci0JCQotCi0JCXNjMi5hZGRDb250cm9sTGlzdGVuZXIobmV3IENvbnRyb2xBZGFwdGVyKCkgewotCQkJQE92ZXJyaWRlCi0JCQlwdWJsaWMgdm9pZCBjb250cm9sUmVzaXplZChDb250cm9sRXZlbnQgZSkgewotCQkJCXNjMi5zZXRNaW5TaXplKHNjMi5jb21wdXRlU2l6ZShTV1QuREVGQVVMVCwgU1dULkRFRkFVTFQpKTsKLQkJCX0KLQkJfSk7Ci0KLQkJY3JlYXRlU2VsZWN0b3JTZWN0aW9uKHNlbGVjdG9yUGFuZSk7Ci0JCQotCi0JCXJldHVybiBzdXBlci5jcmVhdGVEaWFsb2dBcmVhKHBhcmVudCk7Ci0JfQotCi0JLyoqCi0JICogQ3JlYXRlcyB0aGUgc2VsZWN0b3Igc2VjdGlvbi4KLQkgKgotCSAqIEBwYXJhbSBwYXJlbnQgdGhlIHBhcmVudAotCSAqLwotCXByaXZhdGUgdm9pZCBjcmVhdGVTZWxlY3RvclNlY3Rpb24oQ29tcG9zaXRlIHBhcmVudCkgewotCQlzZWxlY3RvclNlY3Rpb24gPSBuZXcgQ29tcG9zaXRlKHBhcmVudCwgU1dULk5PTkUpOwotCQlzZWxlY3RvclNlY3Rpb24uc2V0TGF5b3V0KG5ldyBGaWxsTGF5b3V0KCkpOwotCQlzZWxlY3RvclNlY3Rpb24uc2V0TGF5b3V0RGF0YShuZXcgR3JpZERhdGEoU1dULkZJTEwsIFNXVC5GSUxMLCB0cnVlLAotCQkJCXRydWUpKTsKLQkJCi0JCXNlbGVjdG9yLmNyZWF0ZUNvbnRyb2xzKHNlbGVjdG9yU2VjdGlvbik7Ci0JCS8vc2VsZWN0b3Iuc2V0U2VsZWN0ZWRFbGVtZW50cyhhbGxFbGVtZW50cy50b0FycmF5KCkpOwotCi0JCQotCX0KLQotCS8qKgotCSAqIENyZWF0ZXMgdGhlIGNvbnRyb2xzIHNlY3Rpb24uCi0JICoKLQkgKiBAcGFyYW0gcGFydGl0aW9uIHRoZSBwYXJ0aXRpb24KLQkgKiBAcGFyYW0gcGFyZW50IHRoZSBwYXJlbnQKLQkgKi8KLQlwcml2YXRlIHZvaWQgY3JlYXRlQ29udHJvbHNTZWN0aW9uKENIQ29yZSBwYXJ0aXRpb24sCi0JCQlDb21wb3NpdGUgcGFyZW50KSB7Ci0JCWJ1dHRvbnNTZWN0aW9uID0gbmV3IENvbXBvc2l0ZShwYXJlbnQsIFNXVC5OT05FKTsKLQkJYnV0dG9uc1NlY3Rpb24uc2V0TGF5b3V0KG5ldyBHcmlkTGF5b3V0KDEsIHRydWUpKTsKLQotCQlhZGQgPSBuZXcgQnV0dG9uKGJ1dHRvbnNTZWN0aW9uLCBTV1QuUFVTSCk7Ci0JCWFkZC5zZXRJbWFnZShBY3RpdmF0b3IuZ2V0RGVmYXVsdCgpLmdldEltYWdlKCIvaWNvbnMvYXJyb3dfcmlnaHQuZ2lmIikpOyAvLyROT04tTkxTLTEkCi0JCWFkZC5hZGRTZWxlY3Rpb25MaXN0ZW5lcih0aGlzKTsKLQkJYWRkLnNldFRvb2xUaXBUZXh0KE1lc3NhZ2VzLk11bHRpcGxlVmFsdWVTZWxlY3RvckRpYWxvZ19BZGRTZWxlY3RlZEVsZW1lbnRzKTsKLQkJYWRkLnNldERhdGEobmV3IFdpZGdldERhdGEoV2lkZ2V0RGF0YS5BREQsIHBhcnRpdGlvbikpOwotCi0JCXJlbW92ZSA9IG5ldyBCdXR0b24oYnV0dG9uc1NlY3Rpb24sIFNXVC5QVVNIKTsKLQkJcmVtb3ZlLnNldEltYWdlKEFjdGl2YXRvci5nZXREZWZhdWx0KCkKLQkJCQkuZ2V0SW1hZ2UoIi9pY29ucy9hcnJvd19sZWZ0LmdpZiIpKTsgLy8kTk9OLU5MUy0xJAotCQlyZW1vdmUuYWRkU2VsZWN0aW9uTGlzdGVuZXIodGhpcyk7Ci0JCXJlbW92ZS5zZXRUb29sVGlwVGV4dChNZXNzYWdlcy5NdWx0aXBsZVZhbHVlRWRpdG9yX1JlbW92ZVNlbGVjdGVkRWxlbWVudHMpOwotCQlyZW1vdmUuc2V0RGF0YShuZXcgV2lkZ2V0RGF0YShXaWRnZXREYXRhLlJFTU9WRSwgcGFydGl0aW9uKSk7Ci0KLQkJYWRkQWxsID0gbmV3IEJ1dHRvbihidXR0b25zU2VjdGlvbiwgU1dULlBVU0gpOwotCQlhZGRBbGwuc2V0SW1hZ2UoQWN0aXZhdG9yLmdldERlZmF1bHQoKS5nZXRJbWFnZSgKLQkJCQkiL2ljb25zL2Fycm93X2RvdWJsZS5naWYiKSk7IC8vJE5PTi1OTFMtMSQKLQkJYWRkQWxsLmFkZFNlbGVjdGlvbkxpc3RlbmVyKHRoaXMpOwotCQlhZGRBbGwuc2V0VG9vbFRpcFRleHQoTWVzc2FnZXMuTXVsdGlwbGVWYWx1ZVNlbGVjdG9yRGlhbG9nX0FkZEFsbEVsZW1lbnRzKTsKLQkJYWRkQWxsLnNldERhdGEobmV3IFdpZGdldERhdGEoV2lkZ2V0RGF0YS5BQUxMLCBwYXJ0aXRpb24pKTsKLQotCQlyZW1vdmVBbGwgPSBuZXcgQnV0dG9uKGJ1dHRvbnNTZWN0aW9uLCBTV1QuUFVTSCk7Ci0JCXJlbW92ZUFsbC5zZXRJbWFnZShBY3RpdmF0b3IuZ2V0RGVmYXVsdCgpLmdldEltYWdlKAotCQkJCSIvaWNvbnMvYXJyb3dfbGVmdF9kb3VibGUuZ2lmIikpOyAvLyROT04tTkxTLTEkCi0JCXJlbW92ZUFsbC5hZGRTZWxlY3Rpb25MaXN0ZW5lcih0aGlzKTsKLQkJcmVtb3ZlQWxsCi0JCQkJLnNldFRvb2xUaXBUZXh0KE1lc3NhZ2VzLk11bHRpcGxlVmFsdWVTZWxlY3RvckRpYWxvZ19SZW1vdmVBbGxFbGVtZW50cyk7Ci0JCXJlbW92ZUFsbC5zZXREYXRhKG5ldyBXaWRnZXREYXRhKFdpZGdldERhdGEuUkFMTCwgcGFydGl0aW9uKSk7Ci0JfQotCi0JLyoqCi0JICogR2V0cyB0aGUgaW5zdGFuY2Ugc3BlY2lmaWNhdGlvbiBuYW1lLgotCSAqCi0JICogQHBhcmFtIGluc3RhbmNlU3BlY2lmaWNhdGlvbiB0aGUgaW5zdGFuY2Ugc3BlY2lmaWNhdGlvbgotCSAqIEByZXR1cm4gdGhlIGluc3RhbmNlIHNwZWNpZmljYXRpb24gbmFtZQotCSAqLwotCXByaXZhdGUgU3RyaW5nIGdldEluc3RhbmNlU3BlY2lmaWNhdGlvbk5hbWUoCi0JCQlDSENvcmUgaW5zdGFuY2VTcGVjaWZpY2F0aW9uKSB7Ci0JCQotCQlyZXR1cm4gaW5zdGFuY2VTcGVjaWZpY2F0aW9uLnRvU3RyaW5nKCk7Ci0JfQotCi0JLyoqCi0JICogQ3JlYXRlcyB0aGUgbGlzdCBzZWN0aW9uLgotCSAqCi0JICogQHBhcmFtIGNvcmUgdGhlIGNvcmUKLQkgKiBAcGFyYW0gcGFyZW50IHRoZSBwYXJlbnQKLQkgKi8KLQlwcml2YXRlIHZvaWQgY3JlYXRlTGlzdFNlY3Rpb24oQ0hDb3JlIGNvcmUsCi0JCQlDb21wb3NpdGUgcGFyZW50KSB7Ci0JCQotCQlMYWJlbCBsYmwgPSBuZXcgTGFiZWwocGFyZW50LCBTV1QuTk9ORSk7Ci0JCWxibC5zZXRUZXh0KGdldEluc3RhbmNlU3BlY2lmaWNhdGlvbk5hbWUoY29yZSkpOwotCi0JCUdyaWREYXRhIGxMYmwgPSBuZXcgR3JpZERhdGEoU1dULkNFTlRFUiwgU1dULlRPUCwgdHJ1ZSwgdHJ1ZSwgMiwgMSk7Ci0JCS8vIGdkX2xibE5ld0xhYmVsLmhvcml6b250YWxJbmRlbnQgPSAxOwotCQlsYmwuc2V0TGF5b3V0RGF0YShsTGJsKTsKLQkJCi0JCWNyZWF0ZUNvbnRyb2xzU2VjdGlvbihjb3JlLCBwYXJlbnQpOwotCi0JCXNlbGVjdGVkRWxlbWVudHMgPSBuZXcgVHJlZShwYXJlbnQsIFNXVC5NVUxUSSB8IFNXVC5CT1JERVIKLQkJCQl8IFNXVC5WX1NDUk9MTCB8IFNXVC5IX1NDUk9MTCk7Ci0JCS8vIHNlbGVjdGVkRWxlbWVudHMuYWRkU2VsZWN0aW9uTGlzdGVuZXIodGhpcyk7Ci0JCUdyaWREYXRhIGRhdGEgPSBuZXcgR3JpZERhdGEoU1dULkZJTEwsIFNXVC5GSUxMLCB0cnVlLCB0cnVlKTsKLQkJc2VsZWN0ZWRFbGVtZW50cy5zZXRMYXlvdXREYXRhKGRhdGEpOwotCQkKLQkJCi0JCVRyZWVWaWV3ZXIgc2VsZWN0ZWRFbGVtZW50c1ZpZXdlciA9IG5ldyBUcmVlVmlld2VyKHNlbGVjdGVkRWxlbWVudHMpOwotCi0JCXNlbGVjdGVkRWxlbWVudHNWaWV3ZXIuYWRkU2VsZWN0aW9uQ2hhbmdlZExpc3RlbmVyKHRoaXMpOwotCQlzZWxlY3RlZEVsZW1lbnRzVmlld2VyLmFkZERvdWJsZUNsaWNrTGlzdGVuZXIodGhpcyk7Ci0KLQkJc2VsZWN0ZWRFbGVtZW50c1ZpZXdlcgotCQkJCS5zZXRDb250ZW50UHJvdmlkZXIoQ29sbGVjdGlvbkNvbnRlbnRQcm92aWRlci5pbnN0YW5jZSk7Ci0KLQkJaWYgKGxhYmVsUHJvdmlkZXIgIT0gbnVsbCkgewotCQkJc2VsZWN0ZWRFbGVtZW50c1ZpZXdlci5zZXRMYWJlbFByb3ZpZGVyKGxhYmVsUHJvdmlkZXIpOwotCQl9Ci0JCQotCQlzZWxlY3RlZEVsZW1lbnRzVmlld2VyLnNldElucHV0KG1hcC5nZXQoY29yZSkpOwotCQkKLQkJc2VsZWN0ZWRFbGVtZW50c1ZpZXdlcnMucHV0KGNvcmUsIHNlbGVjdGVkRWxlbWVudHNWaWV3ZXIpOwotCi0JCQotCQkvL3NlbGVjdG9yLnNldFNlbGVjdGVkRWxlbWVudHMoYWxsRWxlbWVudHMudG9BcnJheSgpKTsKLQotCX0KLQotCS8qKgotCSAqIFRoZSBDbGFzcyBXaWRnZXREYXRhLgotCSAqLwotCWNsYXNzIFdpZGdldERhdGEgewotCQkKLQkJLyoqIFRoZSB0eXBlLiAqLwotCQlpbnQgdHlwZTsKLQkJCi0JCS8qKiBUaGUgcGFydGl0aW9uLiAqLwotCQlDSENvcmUgcGFydGl0aW9uOwotCQkKLQkJLyoqIFRoZSBDb25zdGFudCBBQUxMLiAqLwotCQlmaW5hbCBzdGF0aWMgaW50IEFERCA9IDEsIFJFTU9WRSA9IDIsIFJBTEwgPSAzLCBBQUxMID0gNDsKLQotCQkvKioKLQkJICogSW5zdGFudGlhdGVzIGEgbmV3IHdpZGdldCBkYXRhLgotCQkgKgotCQkgKiBAcGFyYW0gdHlwZSB0aGUgdHlwZQotCQkgKiBAcGFyYW0gcGFydGl0aW9uIHRoZSBwYXJ0aXRpb24KLQkJICovCi0JCXB1YmxpYyBXaWRnZXREYXRhKGludCB0eXBlLCBDSENvcmUgcGFydGl0aW9uKSB7Ci0JCQl0aGlzLnBhcnRpdGlvbiA9IHBhcnRpdGlvbjsKLQkJCXRoaXMudHlwZSA9IHR5cGU7Ci0JCX0KLQl9Ci0KLQkvKiAobm9uLUphdmFkb2MpCi0JICogQHNlZSBvcmcuZWNsaXBzZS5zd3QuZXZlbnRzLlNlbGVjdGlvbkxpc3RlbmVyI3dpZGdldFNlbGVjdGVkKG9yZy5lY2xpcHNlLnN3dC5ldmVudHMuU2VsZWN0aW9uRXZlbnQpCi0JICovCi0JQE92ZXJyaWRlCi0JcHVibGljIHZvaWQgd2lkZ2V0U2VsZWN0ZWQoU2VsZWN0aW9uRXZlbnQgZSkgewotCQlPYmplY3QgZGF0YSA9IGUud2lkZ2V0LmdldERhdGEoKTsKLQkJaWYgKGRhdGEgIT0gbnVsbCAmJiBkYXRhIGluc3RhbmNlb2YgV2lkZ2V0RGF0YSkgewotCQkJV2lkZ2V0RGF0YSB3RGF0YSA9IChXaWRnZXREYXRhKSBkYXRhOwotCQkJaWYgKHdEYXRhLnR5cGUgPT0gV2lkZ2V0RGF0YS5BREQpIHsKLQkJCQlhZGRBY3Rpb24od0RhdGEucGFydGl0aW9uKTsKLQkJCX0gZWxzZSBpZiAod0RhdGEudHlwZSA9PSBXaWRnZXREYXRhLlJFTU9WRSkgewotCQkJCXJlbW92ZUFjdGlvbih3RGF0YS5wYXJ0aXRpb24pOwotCQkJfSBlbHNlIGlmICh3RGF0YS50eXBlID09IFdpZGdldERhdGEuQUFMTCkgewotCQkJCWFkZEFsbEFjdGlvbih3RGF0YS5wYXJ0aXRpb24pOwotCQkJfSBlbHNlIGlmICh3RGF0YS50eXBlID09IFdpZGdldERhdGEuUkFMTCkgewotCQkJCXJlbW92ZUFsbEFjdGlvbih3RGF0YS5wYXJ0aXRpb24pOwotCQkJfQotCQl9Ci0JfQotCi0JCi0KLQkvKioKLQkgKiBSZW1vdmVzIHRoZSBhbGwgYWN0aW9uLgotCSAqCi0JICogQHBhcmFtIHBhcnRpdGlvbiB0aGUgcGFydGl0aW9uCi0JICovCi0JcHJpdmF0ZSB2b2lkIHJlbW92ZUFsbEFjdGlvbihDSENvcmUgcGFydGl0aW9uKSB7Ci0JCVRyZWVWaWV3ZXIgc2VsZWN0ZWRFbGVtZW50c1ZpZXdlciA9IHNlbGVjdGVkRWxlbWVudHNWaWV3ZXJzLmdldChwYXJ0aXRpb24pOwotCQkKLQkJTGlua2VkSGFzaFNldDxPYmplY3Q+IGVsID0gbmV3IExpbmtlZEhhc2hTZXQ8T2JqZWN0PigpOwotCQlmb3IgKExpbmtlZEhhc2hTZXQ8T2JqZWN0PiB2YWx1ZXMgOiBtYXAudmFsdWVzKCkpIHsKLQkJCWVsLmFkZEFsbCh2YWx1ZXMpOwotCQl9Ci0KLQkJCi0JCQotCQlMaW5rZWRIYXNoU2V0PE9iamVjdD4gZWwxID0gbWFwLmdldChwYXJ0aXRpb24pOwkJCQotCQkKLQkJZm9yKE9iamVjdCBlbGVtZW50IDogZWwxLnRvQXJyYXkoKSkgewotCQkJZWwucmVtb3ZlKGVsZW1lbnQpOwotCQkJZWwxLnJlbW92ZShlbGVtZW50KTsKLQkJfQotCQkKLQkJc2VsZWN0b3Iuc2V0U2VsZWN0ZWRFbGVtZW50cyhlbC50b0FycmF5KCkpOwotCQlzZWxlY3RlZEVsZW1lbnRzVmlld2VyLnNldFNlbGVjdGlvbihudWxsKTsKLQkJc2VsZWN0ZWRFbGVtZW50c1ZpZXdlci5yZWZyZXNoKCk7Ci0JfQotCi0JLyoqCi0JICogQWRkcyB0aGUgYWxsIGFjdGlvbi4KLQkgKgotCSAqIEBwYXJhbSBwYXJ0aXRpb24gdGhlIHBhcnRpdGlvbgotCSAqLwotCXByaXZhdGUgdm9pZCBhZGRBbGxBY3Rpb24oQ0hDb3JlIHBhcnRpdGlvbikgewotCQlPYmplY3RbXSBlbGVtZW50cyA9IHNlbGVjdG9yLmdldEFsbEVsZW1lbnRzKCk7Ci0JCXBhcnRpdGlvblNlbGVjdGVkID0gcGFydGl0aW9uOwotCQlhZGRFbGVtZW50cyhlbGVtZW50cyk7Ci0JfQotCi0JLyoqCi0JICogUmVtb3ZlcyB0aGUgYWN0aW9uLgotCSAqCi0JICogQHBhcmFtIHBhcnRpdGlvbiB0aGUgcGFydGl0aW9uCi0JICovCi0JcHJpdmF0ZSB2b2lkIHJlbW92ZUFjdGlvbihDSENvcmUgcGFydGl0aW9uKSB7Ci0JCVRyZWVWaWV3ZXIgc2VsZWN0ZWRFbGVtZW50c1ZpZXdlciA9IHNlbGVjdGVkRWxlbWVudHNWaWV3ZXJzLmdldChwYXJ0aXRpb24pOwotCQkKLQkJTGlua2VkSGFzaFNldDxPYmplY3Q+IGVsID0gbmV3IExpbmtlZEhhc2hTZXQ8T2JqZWN0PigpOwotCQlmb3IgKExpbmtlZEhhc2hTZXQ8T2JqZWN0PiB2YWx1ZXMgOiBtYXAudmFsdWVzKCkpIHsKLQkJCWVsLmFkZEFsbCh2YWx1ZXMpOwotCQl9Ci0KLQkJSVN0cnVjdHVyZWRTZWxlY3Rpb24gc2VsZWN0aW9uID0gKElTdHJ1Y3R1cmVkU2VsZWN0aW9uKXNlbGVjdGVkRWxlbWVudHNWaWV3ZXIuZ2V0U2VsZWN0aW9uKCk7Ci0JCWlmKHNlbGVjdGlvbi5pc0VtcHR5KCkpIHsKLQkJCXJldHVybjsKLQkJfQotCQkKLQkJTGlua2VkSGFzaFNldDxPYmplY3Q+IGVsMSA9IG1hcC5nZXQocGFydGl0aW9uKTsJCQkKLQkJCi0JCWZvcihPYmplY3QgZWxlbWVudCA6IHNlbGVjdGlvbi50b0FycmF5KCkpIHsKLQkJCWVsLnJlbW92ZShlbGVtZW50KTsKLQkJCWVsMS5yZW1vdmUoZWxlbWVudCk7Ci0JCX0KLQkJCi0JCXNlbGVjdG9yLnNldFNlbGVjdGVkRWxlbWVudHMoZWwudG9BcnJheSgpKTsKLQkJc2VsZWN0ZWRFbGVtZW50c1ZpZXdlci5zZXRTZWxlY3Rpb24obnVsbCk7Ci0JCXNlbGVjdGVkRWxlbWVudHNWaWV3ZXIucmVmcmVzaCgpOwotCX0KLQotCS8qKgotCSAqIEFkZHMgdGhlIGFjdGlvbi4KLQkgKgotCSAqIEBwYXJhbSBwYXJ0aXRpb24gdGhlIHBhcnRpdGlvbgotCSAqLwotCXByaXZhdGUgdm9pZCBhZGRBY3Rpb24oQ0hDb3JlIHBhcnRpdGlvbikgewotCQlPYmplY3RbXSBlbGVtZW50cyA9IHNlbGVjdG9yLmdldFNlbGVjdGVkRWxlbWVudHMoKTsKLQkJcGFydGl0aW9uU2VsZWN0ZWQgPSBwYXJ0aXRpb247Ci0JCWFkZEVsZW1lbnRzKGVsZW1lbnRzKTsKLQl9Ci0JCi0JLyoqCi0JICogR2V0cyB0aGUgc2VsZWN0ZWQgZWxlbWVudHMuCi0JICoKLQkgKiBAcmV0dXJuIHRoZSBzZWxlY3RlZCBlbGVtZW50cwotCSAqLwotCXByaXZhdGUgSW5zdGFuY2VTcGVjaWZpY2F0aW9uW10gZ2V0U2VsZWN0ZWRFbGVtZW50cygpIHsKLQkJcmV0dXJuIG51bGw7Ci0JCS8qSVNlbGVjdGlvbiBzZWxlY3Rpb24gPSB0cmVlVmlld2VyLmdldFNlbGVjdGlvbigpOwotCi0JCWlmKHNlbGVjdGlvbiBpbnN0YW5jZW9mIElTdHJ1Y3R1cmVkU2VsZWN0aW9uKSB7Ci0JCQlPYmplY3RbXSBjb250YWluZXJFbGVtZW50c1RvTW92ZSA9IGdldEVsZW1lbnRzVG9Nb3ZlKCgoSVN0cnVjdHVyZWRTZWxlY3Rpb24pc2VsZWN0aW9uKS50b0FycmF5KCkpOwotCQkJT2JqZWN0W10gc2VtYW50aWNFbGVtZW50c1RvTW92ZSA9IGdldFNlbWFudGljRWxlbWVudHMoY29udGFpbmVyRWxlbWVudHNUb01vdmUpOwotCQkJYWRkU2VsZWN0ZWRFbGVtZW50cyhzZW1hbnRpY0VsZW1lbnRzVG9Nb3ZlKTsKLQkJCXJldHVybiBzZW1hbnRpY0VsZW1lbnRzVG9Nb3ZlOwotCQl9Ci0KLQkJcmV0dXJuIG5ldyBPYmplY3RbMF07Ki8KLQl9Ci0KLQotCS8qIChub24tSmF2YWRvYykKLQkgKiBAc2VlIG9yZy5lY2xpcHNlLnN3dC5ldmVudHMuU2VsZWN0aW9uTGlzdGVuZXIjd2lkZ2V0RGVmYXVsdFNlbGVjdGVkKG9yZy5lY2xpcHNlLnN3dC5ldmVudHMuU2VsZWN0aW9uRXZlbnQpCi0JICovCi0JQE92ZXJyaWRlCi0JcHVibGljIHZvaWQgd2lkZ2V0RGVmYXVsdFNlbGVjdGVkKFNlbGVjdGlvbkV2ZW50IGUpIHsKLQkJLy8gVE9ETyBBdXRvLWdlbmVyYXRlZCBtZXRob2Qgc3R1YgotCi0JfQotCi0JLyogKG5vbi1KYXZhZG9jKQotCSAqIEBzZWUgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5JRG91YmxlQ2xpY2tMaXN0ZW5lciNkb3VibGVDbGljayhvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLkRvdWJsZUNsaWNrRXZlbnQpCi0JICovCi0JQE92ZXJyaWRlCi0JcHVibGljIHZvaWQgZG91YmxlQ2xpY2soRG91YmxlQ2xpY2tFdmVudCBldmVudCkgewotCQkvLyBUT0RPIEF1dG8tZ2VuZXJhdGVkIG1ldGhvZCBzdHViCi0KLQl9Ci0KLQkvKiAobm9uLUphdmFkb2MpCi0JICogQHNlZSBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLklTZWxlY3Rpb25DaGFuZ2VkTGlzdGVuZXIjc2VsZWN0aW9uQ2hhbmdlZChvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLlNlbGVjdGlvbkNoYW5nZWRFdmVudCkKLQkgKi8KLQlAT3ZlcnJpZGUKLQlwdWJsaWMgdm9pZCBzZWxlY3Rpb25DaGFuZ2VkKFNlbGVjdGlvbkNoYW5nZWRFdmVudCBldmVudCkgewotCQkvLyBUT0RPIEF1dG8tZ2VuZXJhdGVkIG1ldGhvZCBzdHViCi0KLQl9Ci0KLQkvKioKLQkgKiBTZXRzIHRoZSBsYWJlbCBwcm92aWRlci4KLQkgKgotCSAqIEBwYXJhbSBzZXJ2IHRoZSBuZXcgbGFiZWwgcHJvdmlkZXIKLQkgKi8KLQlwdWJsaWMgdm9pZCBzZXRMYWJlbFByb3ZpZGVyKElMYWJlbFByb3ZpZGVyIHNlcnYpIHsKLQkJbGFiZWxQcm92aWRlciA9IHNlcnY7Ci0JfQotCi0JLyoqCi0JICogU2V0cyB0aGUgbWVzc2FnZS4KLQkgKgotCSAqIEBwYXJhbSBzdHJpbmcgdGhlIG5ldyBtZXNzYWdlCi0JICovCi0JcHVibGljIHZvaWQgc2V0TWVzc2FnZShTdHJpbmcgc3RyaW5nKSB7Ci0JCS8vIFRPRE8gQXV0by1nZW5lcmF0ZWQgbWV0aG9kIHN0dWIKLQl9Ci0KLQkvKioKLQkgKiBTZXRzIHRoZSB0aXRsZS4KLQkgKgotCSAqIEBwYXJhbSBzdHJpbmcgdGhlIG5ldyB0aXRsZQotCSAqLwotCXB1YmxpYyB2b2lkIHNldFRpdGxlKFN0cmluZyBzdHJpbmcpIHsKLQkJLy8gVE9ETyBBdXRvLWdlbmVyYXRlZCBtZXRob2Qgc3R1YgotCi0JfQotCi0JLyogKG5vbi1KYXZhZG9jKQotCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5pbmZyYS53aWRnZXRzLmVkaXRvcnMuSUVsZW1lbnRTZWxlY3Rpb25MaXN0ZW5lciNhZGRFbGVtZW50cyhqYXZhLmxhbmcuT2JqZWN0W10pCi0JICovCi0JQE92ZXJyaWRlCi0JcHVibGljIHZvaWQgYWRkRWxlbWVudHMoT2JqZWN0W10gZWxlbWVudHMpIHsKLQkJaWYoZWxlbWVudHMgIT0gbnVsbCAmJiBwYXJ0aXRpb25TZWxlY3RlZCAhPSBudWxsKSB7Ci0JCQkKLQkJCQotCQkJQ29sbGVjdGlvbjxJbnN0YW5jZVNwZWNpZmljYXRpb24+IHQgPSBuZXcgQXJyYXlMaXN0PEluc3RhbmNlU3BlY2lmaWNhdGlvbj4oKTsKLQkJCUxpbmtlZEhhc2hTZXQ8T2JqZWN0PiBsID0gbWFwLmdldChwYXJ0aXRpb25TZWxlY3RlZCk7Ci0JCQkKLQkJCWwuYWRkQWxsKEFycmF5cy5hc0xpc3QoZWxlbWVudHMpKTsKLQkJCQotCQkJVHJlZVZpZXdlciBzZWxlY3RlZEVsZW1lbnRzVmlld2VyID0gc2VsZWN0ZWRFbGVtZW50c1ZpZXdlcnMuZ2V0KHBhcnRpdGlvblNlbGVjdGVkKTsKLQkJCXNlbGVjdGVkRWxlbWVudHNWaWV3ZXIucmVmcmVzaCgpOwotCQkJCi0JCX0JCQotCX0KLQkKLQkKLQkvKiAobm9uLUphdmFkb2MpCi0JICogQHNlZSBvcmcuZWNsaXBzZS5qZmFjZS5kaWFsb2dzLkRpYWxvZyNva1ByZXNzZWQoKQotCSAqLwotCUBPdmVycmlkZQotCXByb3RlY3RlZCB2b2lkIG9rUHJlc3NlZCgpIHsKLQkJc2V0UmVzdWx0KG1hcCk7Ci0KLQkJc3VwZXIub2tQcmVzc2VkKCk7Ci0JfQotCi0JCi0JLyoqCi0JICogU2V0cyB0aGUgcmVzdWx0LgotCSAqCi0JICogQHBhcmFtIG1hcF8gdGhlIG1hcAotCSAqLwotCXByb3RlY3RlZCB2b2lkIHNldFJlc3VsdChNYXA8Q0hDb3JlLCBMaW5rZWRIYXNoU2V0PE9iamVjdD4+IG1hcF8pIHsKLQkJcmVzdWx0ID0gbWFwXzsKLQl9Ci0KLQkKLQkvKioKLQkgKiBHZXRzIHRoZSByZXN1bHQuCi0JICoKLQkgKiBAcmV0dXJuIHRoZSByZXN1bHQKLQkgKi8KLQlwdWJsaWMgTWFwPENIQ29yZSwgTGlua2VkSGFzaFNldDxPYmplY3Q+PiBnZXRSZXN1bHQoKSB7Ci0JCXJldHVybiByZXN1bHQ7Ci0JfQotfQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgDQorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KKyAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorICAtDQorICAtIENvcHlyaWdodCAoYykgMjAxNS0yMDE2IFVuaXZlcnNpdHkgb2YgUGFkb3ZhLCBJVEFMWSAtICBJbnRlY3MgU3BBIA0KKyAgLSBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICAtIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KKyAgLSB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAgLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KKyAgLQ0KKyAgLSBDb250cmlidXRvcnM6DQorICAtDQorICAtIEFsZXNzYW5kcm8gWm92aSBhem92aUBtYXRoLnVuaXBkLml0DQorICAtIFN0ZWZhbm8gUHVyaSBzdGVmYW5vLnB1cmlAaW50ZWNzLml0DQorICAtIExhdXJhIEJhcmFjY2hpIGxhdXJhLmJhcmFjY2hpQGludGVjcy5pdA0KKyAgLSBOaWNob2xhcyBQYWNpbmkgbmljaG9sYXMucGFjaW5pQGludGVjcy5pdCAgDQorICAtDQorICAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbiBhbmQvb3IgaW5pdGlhbCBkb2N1bWVudGF0aW9uDQorICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL3BhY2thZ2Ugb3JnLnBvbGFyc3lzLmNoZXNzLm11bHRpY29yZS5kaWFsb2dzOw0KKw0KK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0Ow0KK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlzOw0KK2ltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbjsNCitpbXBvcnQgamF2YS51dGlsLkhhc2hNYXA7DQoraW1wb3J0IGphdmEudXRpbC5MaW5rZWRIYXNoU2V0Ow0KK2ltcG9ydCBqYXZhLnV0aWwuTWFwOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuRUxpc3Q7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLmRpYWxvZ3MuVHJheURpYWxvZzsNCitpbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5Eb3VibGVDbGlja0V2ZW50Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLklEb3VibGVDbGlja0xpc3RlbmVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLklMYWJlbFByb3ZpZGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLklTZWxlY3Rpb25DaGFuZ2VkTGlzdGVuZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuSVN0cnVjdHVyZWRTZWxlY3Rpb247DQoraW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuU2VsZWN0aW9uQ2hhbmdlZEV2ZW50Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLlRyZWVWaWV3ZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuTUFSVEUuTUFSVEVfRm91bmRhdGlvbnMuQWxsb2MuQXNzaWduOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLmluZnJhLndpZGdldHMuQWN0aXZhdG9yOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLmluZnJhLndpZGdldHMuZWRpdG9ycy5JRWxlbWVudFNlbGVjdGlvbkxpc3RlbmVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLmluZnJhLndpZGdldHMubWVzc2FnZXMuTWVzc2FnZXM7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuaW5mcmEud2lkZ2V0cy5wcm92aWRlcnMuQ29sbGVjdGlvbkNvbnRlbnRQcm92aWRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5pbmZyYS53aWRnZXRzLnNlbGVjdG9ycy5SZWZlcmVuY2VTZWxlY3RvcjsNCitpbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LlNXVDsNCitpbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmN1c3RvbS5TY3JvbGxlZENvbXBvc2l0ZTsNCitpbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmV2ZW50cy5Db250cm9sQWRhcHRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmV2ZW50cy5Db250cm9sRXZlbnQ7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5ldmVudHMuU2VsZWN0aW9uRXZlbnQ7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5ldmVudHMuU2VsZWN0aW9uTGlzdGVuZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5sYXlvdXQuRmlsbExheW91dDsNCitpbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmxheW91dC5HcmlkRGF0YTsNCitpbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmxheW91dC5HcmlkTGF5b3V0Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5zd3QubGF5b3V0LlJvd0RhdGE7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5sYXlvdXQuUm93TGF5b3V0Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5CdXR0b247DQoraW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkNvbXBvc2l0ZTsNCitpbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuQ29udHJvbDsNCitpbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuRGlzcGxheTsNCitpbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuTGFiZWw7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLlNoZWxsOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5UcmVlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5JbnN0YW5jZVNwZWNpZmljYXRpb247DQoraW1wb3J0IG9yZy5wb2xhcnN5cy5jaGVzcy5tdWx0aWNvcmUubW9kZWwuQ0hDb3JlOw0KK2ltcG9ydCBvcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlLnV0aWxzLlF1ZXJ5VXRpbHM7DQorDQorLyoqDQorICogVGhlIENsYXNzIENvcmVTZWxlY3RvckRpYWxvZy4NCisgKi8NCitwdWJsaWMgY2xhc3MgQ29yZVNlbGVjdG9yRGlhbG9nIGV4dGVuZHMgVHJheURpYWxvZyBpbXBsZW1lbnRzDQorCQlTZWxlY3Rpb25MaXN0ZW5lciwgSVNlbGVjdGlvbkNoYW5nZWRMaXN0ZW5lciwgSURvdWJsZUNsaWNrTGlzdGVuZXIsIElFbGVtZW50U2VsZWN0aW9uTGlzdGVuZXIgew0KKw0KKwkvKiogVGhlIENvbnN0YW50IFBBUlRJVElPTlNfVE9fQ09SRVMuICovDQorCXB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFBBUlRJVElPTlNfVE9fQ09SRVMgPSAwOw0KKwkNCisJLyoqIFRoZSBDb25zdGFudCBDT01QT05FTlRTX1RPX0NPUkVTLiAqLw0KKwlwdWJsaWMgc3RhdGljIGZpbmFsIGludCBDT01QT05FTlRTX1RPX0NPUkVTID0gMTsNCisJDQorCS8qKiBUaGUgQ29uc3RhbnQgVEFTS1NfVE9fQ09SRVMuICovDQorCXB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFRBU0tTX1RPX0NPUkVTID0gMjsNCisJDQorCS8qKiBUaGUgY29yZXMuICovDQorCXByaXZhdGUgRUxpc3Q8Q0hDb3JlPiBjb3JlczsNCisJDQorCS8qKiBUaGUgbWFwLiAqLw0KKwlNYXA8Q0hDb3JlLCAgTGlua2VkSGFzaFNldDxPYmplY3Q+PiBtYXA7DQorCQ0KKwkvKiogVGhlIHNlbGVjdG9yIHNlY3Rpb24uICovDQorCXByaXZhdGUgQ29tcG9zaXRlIHNlbGVjdG9yU2VjdGlvbjsNCisJDQorCS8qKiBUaGUgYnV0dG9ucyBzZWN0aW9uLiAqLw0KKwlwcml2YXRlIENvbXBvc2l0ZSBidXR0b25zU2VjdGlvbjsNCisJDQorCS8qKiBUaGUgYWRkLiAqLw0KKwlwcml2YXRlIEJ1dHRvbiBhZGQ7DQorCQ0KKwkvKiogVGhlIHJlbW92ZS4gKi8NCisJcHJpdmF0ZSBCdXR0b24gcmVtb3ZlOw0KKwkNCisJLyoqIFRoZSBhZGQgYWxsLiAqLw0KKwlwcml2YXRlIEJ1dHRvbiBhZGRBbGw7DQorCQ0KKwkvKiogVGhlIHJlbW92ZSBhbGwuICovDQorCXByaXZhdGUgQnV0dG9uIHJlbW92ZUFsbDsNCisJDQorCS8qKiBUaGUgc2VsZWN0ZWQgZWxlbWVudHMuICovDQorCXByaXZhdGUgVHJlZSBzZWxlY3RlZEVsZW1lbnRzOw0KKwkNCisJLyoqIFRoZSBsYWJlbCBwcm92aWRlci4gKi8NCisJLy9wcml2YXRlIFRyZWVWaWV3ZXIgc2VsZWN0ZWRFbGVtZW50c1ZpZXdlcjsNCisJcHJpdmF0ZSBJTGFiZWxQcm92aWRlciBsYWJlbFByb3ZpZGVyOw0KKwkvL0BEZXByZWNhdGVkDQorCS8vcHJvdGVjdGVkIGZpbmFsIENvbGxlY3Rpb248T2JqZWN0PiBhbGxFbGVtZW50czsNCisJLyoqIFRoZSBzZWxlY3Rvci4gKi8NCisJLy9wcml2YXRlIFRyZWVWaWV3ZXIgdHJlZVZpZXdlcjsNCisJcHJpdmF0ZSBSZWZlcmVuY2VTZWxlY3RvciBzZWxlY3RvcjsNCisJDQorCS8qKiBUaGUgcGFydGl0aW9uIHNlbGVjdGVkLiAqLw0KKwlwcml2YXRlIENIQ29yZSBwYXJ0aXRpb25TZWxlY3RlZDsNCisJDQorCS8qKiBUaGUgc2VsZWN0ZWQgZWxlbWVudHMgdmlld2Vycy4gKi8NCisJcHJpdmF0ZSBIYXNoTWFwPENIQ29yZSwgVHJlZVZpZXdlcj4gc2VsZWN0ZWRFbGVtZW50c1ZpZXdlcnM7DQorCQ0KKwkvKiogVGhlIHJlc3VsdC4gKi8NCisJcHJpdmF0ZSBNYXA8Q0hDb3JlLCBMaW5rZWRIYXNoU2V0PE9iamVjdD4+IHJlc3VsdDsNCisNCisJLyoqDQorCSAqIE9wZW4gY29yZSBzZWxlY3RvciBkaWFsb2cgZm9yIEFzc2lnbiBwYXJ0aXRpb24gdG8gY29yZXMgb3IgYXNzaWduIGNvbXBvbmVudHMgdG8gY29yZXMgb3IgYXNzaWduIHRhc2tzIHRvIGNvcmVzLg0KKwkgKg0KKwkgKiBAcGFyYW0gcGFyZW50U2hlbGwgdGhlIHBhcmVudCBzaGVsbA0KKwkgKiBAcGFyYW0gcmVmZXJlbmNlU2VsZWN0b3IgdGhlIHJlZmVyZW5jZSBzZWxlY3Rvcg0KKwkgKiBAcGFyYW0gY29yZXMgdGhlIGNvcmVzDQorCSAqIEBwYXJhbSBwYWNrIHRoZSBwYWNrDQorCSAqIEBwYXJhbSBhc3NpZ25tZW50cyB0aGUgYXNzaWdubWVudHMNCisJICogQHBhcmFtIG1vZGUgUEFSVElUSU9OU19UT19DT1JFUyB8IENPTVBPTkVOVFNfVE9fQ09SRVMgfCBUQVNLU19UT19DT1JFUw0KKwkgKiBAcGFyYW0gdGl0bGUgdGhlIHRpdGxlDQorCSAqLw0KKwlwdWJsaWMgQ29yZVNlbGVjdG9yRGlhbG9nKFNoZWxsIHBhcmVudFNoZWxsLA0KKwkJCVJlZmVyZW5jZVNlbGVjdG9yIHJlZmVyZW5jZVNlbGVjdG9yLA0KKwkJCUVMaXN0PENIQ29yZT4gY29yZXMsIG9yZy5lY2xpcHNlLnVtbDIudW1sLlBhY2thZ2UgcGFjaywgRUxpc3Q8QXNzaWduPiBhc3NpZ25tZW50cywgaW50IG1vZGUsIFN0cmluZyB0aXRsZSkgew0KKwkJLy8gc3VwZXIocGFyZW50U2hlbGwsIHNlbGVjdG9yLCB0aXRsZSwgdW5pcXVlLCBvcmRlcmVkLCB1cHBlckJvdW5kKTsNCisJCXN1cGVyKHBhcmVudFNoZWxsKTsNCisJCXRoaXMuY29yZXMgPSBjb3JlczsNCisJCXRoaXMuc2VsZWN0b3IgPSByZWZlcmVuY2VTZWxlY3RvcjsNCisJCW1hcCA9IG5ldyBIYXNoTWFwPENIQ29yZSwgIExpbmtlZEhhc2hTZXQ8T2JqZWN0Pj4oKTsNCisJCWlmKG1vZGU9PVBBUlRJVElPTlNfVE9fQ09SRVMpIHsNCisJCQlmb3IgKENIQ29yZSBjb3JlIDogY29yZXMpIHsNCisJCQkJLy8gTEIgMjAxNTA3MDggbG9vayBhdCBhc3NpZ25tZW50cyB0aGF0IGFscmVhZHkgZXhpc3QgaW4gdGhlIG1vZGVsIGJlZm9yZSBvcGVuaW5nIHRoZSBzZWxlY3Rvcg0KKwkJCQlMaW5rZWRIYXNoU2V0PE9iamVjdD4gdGhlQ29yZXNQYXJ0aXRpb25zID0gUXVlcnlVdGlscy5nZXRQYXJ0aXRpb25zQXNzaWduZWQyQ29yZShjb3JlLCBhc3NpZ25tZW50cyk7DQorCQkJCW1hcC5wdXQoY29yZSwgdGhlQ29yZXNQYXJ0aXRpb25zKTsNCisJCQkJLy9tYXAucHV0KGNvcmUsIG5ldyBMaW5rZWRIYXNoU2V0PE9iamVjdD4oKSk7DQorCQkJfQ0KKwkJfQ0KKwkJaWYobW9kZT09Q09NUE9ORU5UU19UT19DT1JFUykgew0KKwkJCWZvciAoQ0hDb3JlIGNvcmUgOiBjb3Jlcykgew0KKwkJCQkvLyBMQiAyMDE1MDcwOCBsb29rIGF0IGFzc2lnbm1lbnRzIHRoYXQgYWxyZWFkeSBleGlzdCBpbiB0aGUgbW9kZWwgYmVmb3JlIG9wZW5pbmcgdGhlIHNlbGVjdG9yDQorCQkJCUxpbmtlZEhhc2hTZXQ8T2JqZWN0PiB0aGVDb3Jlc0NvbXBvbmVudHMgPSBRdWVyeVV0aWxzLmdldENvbXBvbmVudHNBc3NpZ25lZDJDb3JlKGNvcmUsIGFzc2lnbm1lbnRzKTsNCisJCQkJbWFwLnB1dChjb3JlLCB0aGVDb3Jlc0NvbXBvbmVudHMpOw0KKwkJCX0NCisJCX0NCisJCWlmKG1vZGU9PVRBU0tTX1RPX0NPUkVTKSB7DQorCQkJZm9yIChDSENvcmUgY29yZSA6IGNvcmVzKSB7DQorCQkJCS8vIExCIDIwMTUwNzA4IGxvb2sgYXQgYXNzaWdubWVudHMgdGhhdCBhbHJlYWR5IGV4aXN0IGluIHRoZSBtb2RlbCBiZWZvcmUgb3BlbmluZyB0aGUgc2VsZWN0b3INCisJCQkJTGlua2VkSGFzaFNldDxPYmplY3Q+IHRoZUNvcmVzVGFza3MgPSBRdWVyeVV0aWxzLmdldFRhc2tzQXNzaWduZWQyQ29yZShjb3JlLCBwYWNrLCBhc3NpZ25tZW50cyk7DQorCQkJCW1hcC5wdXQoY29yZSwgdGhlQ29yZXNUYXNrcyk7DQorCQkJfQ0KKwkJfQ0KKwkJLy90aGlzLmFsbEVsZW1lbnRzID0gbmV3IExpbmtlZEhhc2hTZXQ8T2JqZWN0PigpOw0KKwkJDQorCQlzZWxlY3Rvci5hZGRFbGVtZW50U2VsZWN0aW9uTGlzdGVuZXIodGhpcyk7DQorCQkNCisJCXNlbGVjdGVkRWxlbWVudHNWaWV3ZXJzID0gbmV3IEhhc2hNYXA8Q0hDb3JlLCBUcmVlVmlld2VyPigpOw0KKwkJc2V0VGl0bGUodGl0bGUpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBHZXRzIHRoZSBkaXNwbGF5Lg0KKwkgKg0KKwkgKiBAcmV0dXJuIHRoZSBkaXNwbGF5DQorCSAqLw0KKwlwdWJsaWMgc3RhdGljIERpc3BsYXkgZ2V0RGlzcGxheSgpIHsNCisJCURpc3BsYXkgZGlzcGxheSA9IERpc3BsYXkuZ2V0Q3VycmVudCgpOw0KKwkJLy8gbWF5IGJlIG51bGwgaWYgb3V0c2lkZSB0aGUgVUkgdGhyZWFkDQorCQlpZiAoZGlzcGxheSA9PSBudWxsKQ0KKwkJCWRpc3BsYXkgPSBEaXNwbGF5LmdldERlZmF1bHQoKTsNCisJCXJldHVybiBkaXNwbGF5Ow0KKwl9DQorDQorCS8qIChub24tSmF2YWRvYykNCisJICogQHNlZSBvcmcuZWNsaXBzZS5qZmFjZS5kaWFsb2dzLkRpYWxvZyNjcmVhdGVEaWFsb2dBcmVhKG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkNvbXBvc2l0ZSkNCisJICovDQorCUBPdmVycmlkZQ0KKwlwcm90ZWN0ZWQgQ29udHJvbCBjcmVhdGVEaWFsb2dBcmVhKENvbXBvc2l0ZSBwYXJlbnQpIHsNCisJCUdyaWRMYXlvdXQgbGF5b3V0ID0gKEdyaWRMYXlvdXQpIHBhcmVudC5nZXRMYXlvdXQoKTsNCisJCWxheW91dC5udW1Db2x1bW5zID0gMjsNCisJCWxheW91dC5tYWtlQ29sdW1uc0VxdWFsV2lkdGggPSB0cnVlOw0KKwkJDQorCQkNCisNCisJCUNvbXBvc2l0ZSBzZWxlY3RvclBhbmUgPSBuZXcgQ29tcG9zaXRlKHBhcmVudCwgU1dULk5PTkUpOw0KKwkJc2VsZWN0b3JQYW5lLnNldExheW91dChuZXcgR3JpZExheW91dCgxLCBmYWxzZSkpOw0KKwkJc2VsZWN0b3JQYW5lDQorCQkJCS5zZXRMYXlvdXREYXRhKG5ldyBHcmlkRGF0YShTV1QuRklMTCwgU1dULkZJTEwsIHRydWUsIHRydWUpKTsNCisNCisJCWZpbmFsIFNjcm9sbGVkQ29tcG9zaXRlIHNjMiA9IG5ldyBTY3JvbGxlZENvbXBvc2l0ZShwYXJlbnQsDQorCQkJCVNXVC5WX1NDUk9MTCB8IFNXVC5CT1JERVIpOw0KKwkJc2MyLnNldExheW91dERhdGEobmV3IEdyaWREYXRhKFNXVC5GSUxMLCBTV1QuRklMTCwgdHJ1ZSwgdHJ1ZSkpOw0KKwkJc2MyLnNldEV4cGFuZEhvcml6b250YWwodHJ1ZSk7DQorCQlzYzIuc2V0RXhwYW5kVmVydGljYWwodHJ1ZSk7DQorDQorCQlmaW5hbCBDb21wb3NpdGUgc2VsZWN0ZWRQYW5lID0gbmV3IENvbXBvc2l0ZShzYzIsIFNXVC5OT05FKTsNCisJCXNlbGVjdGVkUGFuZS5zZXRMYXlvdXQobmV3IEdyaWRMYXlvdXQoMSxmYWxzZSkpOw0KKwkJc2VsZWN0ZWRQYW5lDQorCQkJCS5zZXRMYXlvdXREYXRhKG5ldyBHcmlkRGF0YShTV1QuUklHSFQsIFNXVC5GSUxMLCB0cnVlLCB0cnVlKSk7DQorCQlmb3IgKENIQ29yZSBvYmplY3QgOiBjb3Jlcykgew0KKwkJCUNvbXBvc2l0ZSBzZWxlY3RlZFBhbmVfID0gbmV3IENvbXBvc2l0ZShzZWxlY3RlZFBhbmUsIFNXVC5OT05FKTsNCisJCQlzZWxlY3RlZFBhbmVfLnNldExheW91dChuZXcgR3JpZExheW91dCgyLCBmYWxzZSkpOw0KKwkJCXNlbGVjdGVkUGFuZV8uc2V0TGF5b3V0RGF0YShuZXcgR3JpZERhdGEoU1dULkZJTEwsIFNXVC5GSUxMLCB0cnVlLCB0cnVlKSk7DQorDQorCQkJY3JlYXRlTGlzdFNlY3Rpb24ob2JqZWN0LCBzZWxlY3RlZFBhbmVfKTsNCisJCX0NCisJCQ0KKwkJc2MyLnNldENvbnRlbnQoc2VsZWN0ZWRQYW5lKTsNCisJCXNjMi5zZXRNaW5TaXplKHNjMi5jb21wdXRlU2l6ZShTV1QuREVGQVVMVCwgU1dULkRFRkFVTFQpKTsNCisJCQ0KKw0KKwkJc2MyLmFkZENvbnRyb2xMaXN0ZW5lcihuZXcgQ29udHJvbEFkYXB0ZXIoKSB7DQorCQkJQE92ZXJyaWRlDQorCQkJcHVibGljIHZvaWQgY29udHJvbFJlc2l6ZWQoQ29udHJvbEV2ZW50IGUpIHsNCisJCQkJc2MyLnNldE1pblNpemUoc2MyLmNvbXB1dGVTaXplKFNXVC5ERUZBVUxULCBTV1QuREVGQVVMVCkpOw0KKwkJCX0NCisJCX0pOw0KKw0KKwkJY3JlYXRlU2VsZWN0b3JTZWN0aW9uKHNlbGVjdG9yUGFuZSk7DQorCQkNCisNCisJCXJldHVybiBzdXBlci5jcmVhdGVEaWFsb2dBcmVhKHBhcmVudCk7DQorCX0NCisNCisJLyoqDQorCSAqIENyZWF0ZXMgdGhlIHNlbGVjdG9yIHNlY3Rpb24uDQorCSAqDQorCSAqIEBwYXJhbSBwYXJlbnQgdGhlIHBhcmVudA0KKwkgKi8NCisJcHJpdmF0ZSB2b2lkIGNyZWF0ZVNlbGVjdG9yU2VjdGlvbihDb21wb3NpdGUgcGFyZW50KSB7DQorCQlzZWxlY3RvclNlY3Rpb24gPSBuZXcgQ29tcG9zaXRlKHBhcmVudCwgU1dULk5PTkUpOw0KKwkJc2VsZWN0b3JTZWN0aW9uLnNldExheW91dChuZXcgRmlsbExheW91dCgpKTsNCisJCXNlbGVjdG9yU2VjdGlvbi5zZXRMYXlvdXREYXRhKG5ldyBHcmlkRGF0YShTV1QuRklMTCwgU1dULkZJTEwsIHRydWUsDQorCQkJCXRydWUpKTsNCisJCQ0KKwkJc2VsZWN0b3IuY3JlYXRlQ29udHJvbHMoc2VsZWN0b3JTZWN0aW9uKTsNCisJCS8vc2VsZWN0b3Iuc2V0U2VsZWN0ZWRFbGVtZW50cyhhbGxFbGVtZW50cy50b0FycmF5KCkpOw0KKw0KKwkJDQorCX0NCisNCisJLyoqDQorCSAqIENyZWF0ZXMgdGhlIGNvbnRyb2xzIHNlY3Rpb24uDQorCSAqDQorCSAqIEBwYXJhbSBwYXJ0aXRpb24gdGhlIHBhcnRpdGlvbg0KKwkgKiBAcGFyYW0gcGFyZW50IHRoZSBwYXJlbnQNCisJICovDQorCXByaXZhdGUgdm9pZCBjcmVhdGVDb250cm9sc1NlY3Rpb24oQ0hDb3JlIHBhcnRpdGlvbiwNCisJCQlDb21wb3NpdGUgcGFyZW50KSB7DQorCQlidXR0b25zU2VjdGlvbiA9IG5ldyBDb21wb3NpdGUocGFyZW50LCBTV1QuTk9ORSk7DQorCQlidXR0b25zU2VjdGlvbi5zZXRMYXlvdXQobmV3IEdyaWRMYXlvdXQoMSwgdHJ1ZSkpOw0KKw0KKwkJYWRkID0gbmV3IEJ1dHRvbihidXR0b25zU2VjdGlvbiwgU1dULlBVU0gpOw0KKwkJYWRkLnNldEltYWdlKEFjdGl2YXRvci5nZXREZWZhdWx0KCkuZ2V0SW1hZ2UoIi9pY29ucy9hcnJvd19yaWdodC5naWYiKSk7IC8vJE5PTi1OTFMtMSQNCisJCWFkZC5hZGRTZWxlY3Rpb25MaXN0ZW5lcih0aGlzKTsNCisJCWFkZC5zZXRUb29sVGlwVGV4dChNZXNzYWdlcy5NdWx0aXBsZVZhbHVlU2VsZWN0b3JEaWFsb2dfQWRkU2VsZWN0ZWRFbGVtZW50cyk7DQorCQlhZGQuc2V0RGF0YShuZXcgV2lkZ2V0RGF0YShXaWRnZXREYXRhLkFERCwgcGFydGl0aW9uKSk7DQorDQorCQlyZW1vdmUgPSBuZXcgQnV0dG9uKGJ1dHRvbnNTZWN0aW9uLCBTV1QuUFVTSCk7DQorCQlyZW1vdmUuc2V0SW1hZ2UoQWN0aXZhdG9yLmdldERlZmF1bHQoKQ0KKwkJCQkuZ2V0SW1hZ2UoIi9pY29ucy9hcnJvd19sZWZ0LmdpZiIpKTsgLy8kTk9OLU5MUy0xJA0KKwkJcmVtb3ZlLmFkZFNlbGVjdGlvbkxpc3RlbmVyKHRoaXMpOw0KKwkJcmVtb3ZlLnNldFRvb2xUaXBUZXh0KE1lc3NhZ2VzLk11bHRpcGxlVmFsdWVFZGl0b3JfUmVtb3ZlU2VsZWN0ZWRFbGVtZW50cyk7DQorCQlyZW1vdmUuc2V0RGF0YShuZXcgV2lkZ2V0RGF0YShXaWRnZXREYXRhLlJFTU9WRSwgcGFydGl0aW9uKSk7DQorDQorCQlhZGRBbGwgPSBuZXcgQnV0dG9uKGJ1dHRvbnNTZWN0aW9uLCBTV1QuUFVTSCk7DQorCQlhZGRBbGwuc2V0SW1hZ2UoQWN0aXZhdG9yLmdldERlZmF1bHQoKS5nZXRJbWFnZSgNCisJCQkJIi9pY29ucy9hcnJvd19kb3VibGUuZ2lmIikpOyAvLyROT04tTkxTLTEkDQorCQlhZGRBbGwuYWRkU2VsZWN0aW9uTGlzdGVuZXIodGhpcyk7DQorCQlhZGRBbGwuc2V0VG9vbFRpcFRleHQoTWVzc2FnZXMuTXVsdGlwbGVWYWx1ZVNlbGVjdG9yRGlhbG9nX0FkZEFsbEVsZW1lbnRzKTsNCisJCWFkZEFsbC5zZXREYXRhKG5ldyBXaWRnZXREYXRhKFdpZGdldERhdGEuQUFMTCwgcGFydGl0aW9uKSk7DQorDQorCQlyZW1vdmVBbGwgPSBuZXcgQnV0dG9uKGJ1dHRvbnNTZWN0aW9uLCBTV1QuUFVTSCk7DQorCQlyZW1vdmVBbGwuc2V0SW1hZ2UoQWN0aXZhdG9yLmdldERlZmF1bHQoKS5nZXRJbWFnZSgNCisJCQkJIi9pY29ucy9hcnJvd19sZWZ0X2RvdWJsZS5naWYiKSk7IC8vJE5PTi1OTFMtMSQNCisJCXJlbW92ZUFsbC5hZGRTZWxlY3Rpb25MaXN0ZW5lcih0aGlzKTsNCisJCXJlbW92ZUFsbA0KKwkJCQkuc2V0VG9vbFRpcFRleHQoTWVzc2FnZXMuTXVsdGlwbGVWYWx1ZVNlbGVjdG9yRGlhbG9nX1JlbW92ZUFsbEVsZW1lbnRzKTsNCisJCXJlbW92ZUFsbC5zZXREYXRhKG5ldyBXaWRnZXREYXRhKFdpZGdldERhdGEuUkFMTCwgcGFydGl0aW9uKSk7DQorCX0NCisNCisJLyoqDQorCSAqIEdldHMgdGhlIGluc3RhbmNlIHNwZWNpZmljYXRpb24gbmFtZS4NCisJICoNCisJICogQHBhcmFtIGluc3RhbmNlU3BlY2lmaWNhdGlvbiB0aGUgaW5zdGFuY2Ugc3BlY2lmaWNhdGlvbg0KKwkgKiBAcmV0dXJuIHRoZSBpbnN0YW5jZSBzcGVjaWZpY2F0aW9uIG5hbWUNCisJICovDQorCXByaXZhdGUgU3RyaW5nIGdldEluc3RhbmNlU3BlY2lmaWNhdGlvbk5hbWUoDQorCQkJQ0hDb3JlIGluc3RhbmNlU3BlY2lmaWNhdGlvbikgew0KKwkJDQorCQlyZXR1cm4gaW5zdGFuY2VTcGVjaWZpY2F0aW9uLnRvU3RyaW5nKCk7DQorCX0NCisNCisJLyoqDQorCSAqIENyZWF0ZXMgdGhlIGxpc3Qgc2VjdGlvbi4NCisJICoNCisJICogQHBhcmFtIGNvcmUgdGhlIGNvcmUNCisJICogQHBhcmFtIHBhcmVudCB0aGUgcGFyZW50DQorCSAqLw0KKwlwcml2YXRlIHZvaWQgY3JlYXRlTGlzdFNlY3Rpb24oQ0hDb3JlIGNvcmUsDQorCQkJQ29tcG9zaXRlIHBhcmVudCkgew0KKwkJDQorCQlMYWJlbCBsYmwgPSBuZXcgTGFiZWwocGFyZW50LCBTV1QuTk9ORSk7DQorCQlsYmwuc2V0VGV4dChnZXRJbnN0YW5jZVNwZWNpZmljYXRpb25OYW1lKGNvcmUpKTsNCisNCisJCUdyaWREYXRhIGxMYmwgPSBuZXcgR3JpZERhdGEoU1dULkNFTlRFUiwgU1dULlRPUCwgdHJ1ZSwgdHJ1ZSwgMiwgMSk7DQorCQkvLyBnZF9sYmxOZXdMYWJlbC5ob3Jpem9udGFsSW5kZW50ID0gMTsNCisJCWxibC5zZXRMYXlvdXREYXRhKGxMYmwpOw0KKwkJDQorCQljcmVhdGVDb250cm9sc1NlY3Rpb24oY29yZSwgcGFyZW50KTsNCisNCisJCXNlbGVjdGVkRWxlbWVudHMgPSBuZXcgVHJlZShwYXJlbnQsIFNXVC5NVUxUSSB8IFNXVC5CT1JERVINCisJCQkJfCBTV1QuVl9TQ1JPTEwgfCBTV1QuSF9TQ1JPTEwpOw0KKwkJLy8gc2VsZWN0ZWRFbGVtZW50cy5hZGRTZWxlY3Rpb25MaXN0ZW5lcih0aGlzKTsNCisJCUdyaWREYXRhIGRhdGEgPSBuZXcgR3JpZERhdGEoU1dULkZJTEwsIFNXVC5GSUxMLCB0cnVlLCB0cnVlKTsNCisJCXNlbGVjdGVkRWxlbWVudHMuc2V0TGF5b3V0RGF0YShkYXRhKTsNCisJCQ0KKwkJDQorCQlUcmVlVmlld2VyIHNlbGVjdGVkRWxlbWVudHNWaWV3ZXIgPSBuZXcgVHJlZVZpZXdlcihzZWxlY3RlZEVsZW1lbnRzKTsNCisNCisJCXNlbGVjdGVkRWxlbWVudHNWaWV3ZXIuYWRkU2VsZWN0aW9uQ2hhbmdlZExpc3RlbmVyKHRoaXMpOw0KKwkJc2VsZWN0ZWRFbGVtZW50c1ZpZXdlci5hZGREb3VibGVDbGlja0xpc3RlbmVyKHRoaXMpOw0KKw0KKwkJc2VsZWN0ZWRFbGVtZW50c1ZpZXdlcg0KKwkJCQkuc2V0Q29udGVudFByb3ZpZGVyKENvbGxlY3Rpb25Db250ZW50UHJvdmlkZXIuaW5zdGFuY2UpOw0KKw0KKwkJaWYgKGxhYmVsUHJvdmlkZXIgIT0gbnVsbCkgew0KKwkJCXNlbGVjdGVkRWxlbWVudHNWaWV3ZXIuc2V0TGFiZWxQcm92aWRlcihsYWJlbFByb3ZpZGVyKTsNCisJCX0NCisJCQ0KKwkJc2VsZWN0ZWRFbGVtZW50c1ZpZXdlci5zZXRJbnB1dChtYXAuZ2V0KGNvcmUpKTsNCisJCQ0KKwkJc2VsZWN0ZWRFbGVtZW50c1ZpZXdlcnMucHV0KGNvcmUsIHNlbGVjdGVkRWxlbWVudHNWaWV3ZXIpOw0KKw0KKwkJDQorCQkvL3NlbGVjdG9yLnNldFNlbGVjdGVkRWxlbWVudHMoYWxsRWxlbWVudHMudG9BcnJheSgpKTsNCisNCisJfQ0KKw0KKwkvKioNCisJICogVGhlIENsYXNzIFdpZGdldERhdGEuDQorCSAqLw0KKwljbGFzcyBXaWRnZXREYXRhIHsNCisJCQ0KKwkJLyoqIFRoZSB0eXBlLiAqLw0KKwkJaW50IHR5cGU7DQorCQkNCisJCS8qKiBUaGUgcGFydGl0aW9uLiAqLw0KKwkJQ0hDb3JlIHBhcnRpdGlvbjsNCisJCQ0KKwkJLyoqIFRoZSBDb25zdGFudCBBQUxMLiAqLw0KKwkJZmluYWwgc3RhdGljIGludCBBREQgPSAxLCBSRU1PVkUgPSAyLCBSQUxMID0gMywgQUFMTCA9IDQ7DQorDQorCQkvKioNCisJCSAqIEluc3RhbnRpYXRlcyBhIG5ldyB3aWRnZXQgZGF0YS4NCisJCSAqDQorCQkgKiBAcGFyYW0gdHlwZSB0aGUgdHlwZQ0KKwkJICogQHBhcmFtIHBhcnRpdGlvbiB0aGUgcGFydGl0aW9uDQorCQkgKi8NCisJCXB1YmxpYyBXaWRnZXREYXRhKGludCB0eXBlLCBDSENvcmUgcGFydGl0aW9uKSB7DQorCQkJdGhpcy5wYXJ0aXRpb24gPSBwYXJ0aXRpb247DQorCQkJdGhpcy50eXBlID0gdHlwZTsNCisJCX0NCisJfQ0KKw0KKwkvKiAobm9uLUphdmFkb2MpDQorCSAqIEBzZWUgb3JnLmVjbGlwc2Uuc3d0LmV2ZW50cy5TZWxlY3Rpb25MaXN0ZW5lciN3aWRnZXRTZWxlY3RlZChvcmcuZWNsaXBzZS5zd3QuZXZlbnRzLlNlbGVjdGlvbkV2ZW50KQ0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyB2b2lkIHdpZGdldFNlbGVjdGVkKFNlbGVjdGlvbkV2ZW50IGUpIHsNCisJCU9iamVjdCBkYXRhID0gZS53aWRnZXQuZ2V0RGF0YSgpOw0KKwkJaWYgKGRhdGEgIT0gbnVsbCAmJiBkYXRhIGluc3RhbmNlb2YgV2lkZ2V0RGF0YSkgew0KKwkJCVdpZGdldERhdGEgd0RhdGEgPSAoV2lkZ2V0RGF0YSkgZGF0YTsNCisJCQlpZiAod0RhdGEudHlwZSA9PSBXaWRnZXREYXRhLkFERCkgew0KKwkJCQlhZGRBY3Rpb24od0RhdGEucGFydGl0aW9uKTsNCisJCQl9IGVsc2UgaWYgKHdEYXRhLnR5cGUgPT0gV2lkZ2V0RGF0YS5SRU1PVkUpIHsNCisJCQkJcmVtb3ZlQWN0aW9uKHdEYXRhLnBhcnRpdGlvbik7DQorCQkJfSBlbHNlIGlmICh3RGF0YS50eXBlID09IFdpZGdldERhdGEuQUFMTCkgew0KKwkJCQlhZGRBbGxBY3Rpb24od0RhdGEucGFydGl0aW9uKTsNCisJCQl9IGVsc2UgaWYgKHdEYXRhLnR5cGUgPT0gV2lkZ2V0RGF0YS5SQUxMKSB7DQorCQkJCXJlbW92ZUFsbEFjdGlvbih3RGF0YS5wYXJ0aXRpb24pOw0KKwkJCX0NCisJCX0NCisJfQ0KKw0KKwkNCisNCisJLyoqDQorCSAqIFJlbW92ZXMgdGhlIGFsbCBhY3Rpb24uDQorCSAqDQorCSAqIEBwYXJhbSBwYXJ0aXRpb24gdGhlIHBhcnRpdGlvbg0KKwkgKi8NCisJcHJpdmF0ZSB2b2lkIHJlbW92ZUFsbEFjdGlvbihDSENvcmUgcGFydGl0aW9uKSB7DQorCQlUcmVlVmlld2VyIHNlbGVjdGVkRWxlbWVudHNWaWV3ZXIgPSBzZWxlY3RlZEVsZW1lbnRzVmlld2Vycy5nZXQocGFydGl0aW9uKTsNCisJCQ0KKwkJTGlua2VkSGFzaFNldDxPYmplY3Q+IGVsID0gbmV3IExpbmtlZEhhc2hTZXQ8T2JqZWN0PigpOw0KKwkJZm9yIChMaW5rZWRIYXNoU2V0PE9iamVjdD4gdmFsdWVzIDogbWFwLnZhbHVlcygpKSB7DQorCQkJZWwuYWRkQWxsKHZhbHVlcyk7DQorCQl9DQorDQorCQkNCisJCQ0KKwkJTGlua2VkSGFzaFNldDxPYmplY3Q+IGVsMSA9IG1hcC5nZXQocGFydGl0aW9uKTsJCQkNCisJCQ0KKwkJZm9yKE9iamVjdCBlbGVtZW50IDogZWwxLnRvQXJyYXkoKSkgew0KKwkJCWVsLnJlbW92ZShlbGVtZW50KTsNCisJCQllbDEucmVtb3ZlKGVsZW1lbnQpOw0KKwkJfQ0KKwkJDQorCQlzZWxlY3Rvci5zZXRTZWxlY3RlZEVsZW1lbnRzKGVsLnRvQXJyYXkoKSk7DQorCQlzZWxlY3RlZEVsZW1lbnRzVmlld2VyLnNldFNlbGVjdGlvbihudWxsKTsNCisJCXNlbGVjdGVkRWxlbWVudHNWaWV3ZXIucmVmcmVzaCgpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBBZGRzIHRoZSBhbGwgYWN0aW9uLg0KKwkgKg0KKwkgKiBAcGFyYW0gcGFydGl0aW9uIHRoZSBwYXJ0aXRpb24NCisJICovDQorCXByaXZhdGUgdm9pZCBhZGRBbGxBY3Rpb24oQ0hDb3JlIHBhcnRpdGlvbikgew0KKwkJT2JqZWN0W10gZWxlbWVudHMgPSBzZWxlY3Rvci5nZXRBbGxFbGVtZW50cygpOw0KKwkJcGFydGl0aW9uU2VsZWN0ZWQgPSBwYXJ0aXRpb247DQorCQlhZGRFbGVtZW50cyhlbGVtZW50cyk7DQorCX0NCisNCisJLyoqDQorCSAqIFJlbW92ZXMgdGhlIGFjdGlvbi4NCisJICoNCisJICogQHBhcmFtIHBhcnRpdGlvbiB0aGUgcGFydGl0aW9uDQorCSAqLw0KKwlwcml2YXRlIHZvaWQgcmVtb3ZlQWN0aW9uKENIQ29yZSBwYXJ0aXRpb24pIHsNCisJCVRyZWVWaWV3ZXIgc2VsZWN0ZWRFbGVtZW50c1ZpZXdlciA9IHNlbGVjdGVkRWxlbWVudHNWaWV3ZXJzLmdldChwYXJ0aXRpb24pOw0KKwkJDQorCQlMaW5rZWRIYXNoU2V0PE9iamVjdD4gZWwgPSBuZXcgTGlua2VkSGFzaFNldDxPYmplY3Q+KCk7DQorCQlmb3IgKExpbmtlZEhhc2hTZXQ8T2JqZWN0PiB2YWx1ZXMgOiBtYXAudmFsdWVzKCkpIHsNCisJCQllbC5hZGRBbGwodmFsdWVzKTsNCisJCX0NCisNCisJCUlTdHJ1Y3R1cmVkU2VsZWN0aW9uIHNlbGVjdGlvbiA9IChJU3RydWN0dXJlZFNlbGVjdGlvbilzZWxlY3RlZEVsZW1lbnRzVmlld2VyLmdldFNlbGVjdGlvbigpOw0KKwkJaWYoc2VsZWN0aW9uLmlzRW1wdHkoKSkgew0KKwkJCXJldHVybjsNCisJCX0NCisJCQ0KKwkJTGlua2VkSGFzaFNldDxPYmplY3Q+IGVsMSA9IG1hcC5nZXQocGFydGl0aW9uKTsJCQkNCisJCQ0KKwkJZm9yKE9iamVjdCBlbGVtZW50IDogc2VsZWN0aW9uLnRvQXJyYXkoKSkgew0KKwkJCWVsLnJlbW92ZShlbGVtZW50KTsNCisJCQllbDEucmVtb3ZlKGVsZW1lbnQpOw0KKwkJfQ0KKwkJDQorCQlzZWxlY3Rvci5zZXRTZWxlY3RlZEVsZW1lbnRzKGVsLnRvQXJyYXkoKSk7DQorCQlzZWxlY3RlZEVsZW1lbnRzVmlld2VyLnNldFNlbGVjdGlvbihudWxsKTsNCisJCXNlbGVjdGVkRWxlbWVudHNWaWV3ZXIucmVmcmVzaCgpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBBZGRzIHRoZSBhY3Rpb24uDQorCSAqDQorCSAqIEBwYXJhbSBwYXJ0aXRpb24gdGhlIHBhcnRpdGlvbg0KKwkgKi8NCisJcHJpdmF0ZSB2b2lkIGFkZEFjdGlvbihDSENvcmUgcGFydGl0aW9uKSB7DQorCQlPYmplY3RbXSBlbGVtZW50cyA9IHNlbGVjdG9yLmdldFNlbGVjdGVkRWxlbWVudHMoKTsNCisJCXBhcnRpdGlvblNlbGVjdGVkID0gcGFydGl0aW9uOw0KKwkJYWRkRWxlbWVudHMoZWxlbWVudHMpOw0KKwl9DQorCQ0KKwkvKioNCisJICogR2V0cyB0aGUgc2VsZWN0ZWQgZWxlbWVudHMuDQorCSAqDQorCSAqIEByZXR1cm4gdGhlIHNlbGVjdGVkIGVsZW1lbnRzDQorCSAqLw0KKwlwcml2YXRlIEluc3RhbmNlU3BlY2lmaWNhdGlvbltdIGdldFNlbGVjdGVkRWxlbWVudHMoKSB7DQorCQlyZXR1cm4gbnVsbDsNCisJCS8qSVNlbGVjdGlvbiBzZWxlY3Rpb24gPSB0cmVlVmlld2VyLmdldFNlbGVjdGlvbigpOw0KKw0KKwkJaWYoc2VsZWN0aW9uIGluc3RhbmNlb2YgSVN0cnVjdHVyZWRTZWxlY3Rpb24pIHsNCisJCQlPYmplY3RbXSBjb250YWluZXJFbGVtZW50c1RvTW92ZSA9IGdldEVsZW1lbnRzVG9Nb3ZlKCgoSVN0cnVjdHVyZWRTZWxlY3Rpb24pc2VsZWN0aW9uKS50b0FycmF5KCkpOw0KKwkJCU9iamVjdFtdIHNlbWFudGljRWxlbWVudHNUb01vdmUgPSBnZXRTZW1hbnRpY0VsZW1lbnRzKGNvbnRhaW5lckVsZW1lbnRzVG9Nb3ZlKTsNCisJCQlhZGRTZWxlY3RlZEVsZW1lbnRzKHNlbWFudGljRWxlbWVudHNUb01vdmUpOw0KKwkJCXJldHVybiBzZW1hbnRpY0VsZW1lbnRzVG9Nb3ZlOw0KKwkJfQ0KKw0KKwkJcmV0dXJuIG5ldyBPYmplY3RbMF07Ki8NCisJfQ0KKw0KKw0KKwkvKiAobm9uLUphdmFkb2MpDQorCSAqIEBzZWUgb3JnLmVjbGlwc2Uuc3d0LmV2ZW50cy5TZWxlY3Rpb25MaXN0ZW5lciN3aWRnZXREZWZhdWx0U2VsZWN0ZWQob3JnLmVjbGlwc2Uuc3d0LmV2ZW50cy5TZWxlY3Rpb25FdmVudCkNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgdm9pZCB3aWRnZXREZWZhdWx0U2VsZWN0ZWQoU2VsZWN0aW9uRXZlbnQgZSkgew0KKwkJLy8gVE9ETyBBdXRvLWdlbmVyYXRlZCBtZXRob2Qgc3R1Yg0KKw0KKwl9DQorDQorCS8qIChub24tSmF2YWRvYykNCisJICogQHNlZSBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLklEb3VibGVDbGlja0xpc3RlbmVyI2RvdWJsZUNsaWNrKG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuRG91YmxlQ2xpY2tFdmVudCkNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgdm9pZCBkb3VibGVDbGljayhEb3VibGVDbGlja0V2ZW50IGV2ZW50KSB7DQorCQkvLyBUT0RPIEF1dG8tZ2VuZXJhdGVkIG1ldGhvZCBzdHViDQorDQorCX0NCisNCisJLyogKG5vbi1KYXZhZG9jKQ0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuSVNlbGVjdGlvbkNoYW5nZWRMaXN0ZW5lciNzZWxlY3Rpb25DaGFuZ2VkKG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuU2VsZWN0aW9uQ2hhbmdlZEV2ZW50KQ0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyB2b2lkIHNlbGVjdGlvbkNoYW5nZWQoU2VsZWN0aW9uQ2hhbmdlZEV2ZW50IGV2ZW50KSB7DQorCQkvLyBUT0RPIEF1dG8tZ2VuZXJhdGVkIG1ldGhvZCBzdHViDQorDQorCX0NCisNCisJLyoqDQorCSAqIFNldHMgdGhlIGxhYmVsIHByb3ZpZGVyLg0KKwkgKg0KKwkgKiBAcGFyYW0gc2VydiB0aGUgbmV3IGxhYmVsIHByb3ZpZGVyDQorCSAqLw0KKwlwdWJsaWMgdm9pZCBzZXRMYWJlbFByb3ZpZGVyKElMYWJlbFByb3ZpZGVyIHNlcnYpIHsNCisJCWxhYmVsUHJvdmlkZXIgPSBzZXJ2Ow0KKwl9DQorDQorCS8qKg0KKwkgKiBTZXRzIHRoZSBtZXNzYWdlLg0KKwkgKg0KKwkgKiBAcGFyYW0gc3RyaW5nIHRoZSBuZXcgbWVzc2FnZQ0KKwkgKi8NCisJcHVibGljIHZvaWQgc2V0TWVzc2FnZShTdHJpbmcgc3RyaW5nKSB7DQorCQkvLyBUT0RPIEF1dG8tZ2VuZXJhdGVkIG1ldGhvZCBzdHViDQorCX0NCisNCisJLyoqDQorCSAqIFNldHMgdGhlIHRpdGxlLg0KKwkgKg0KKwkgKiBAcGFyYW0gc3RyaW5nIHRoZSBuZXcgdGl0bGUNCisJICovDQorCXB1YmxpYyB2b2lkIHNldFRpdGxlKFN0cmluZyBzdHJpbmcpIHsNCisJCS8vIFRPRE8gQXV0by1nZW5lcmF0ZWQgbWV0aG9kIHN0dWINCisNCisJfQ0KKw0KKwkvKiAobm9uLUphdmFkb2MpDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5pbmZyYS53aWRnZXRzLmVkaXRvcnMuSUVsZW1lbnRTZWxlY3Rpb25MaXN0ZW5lciNhZGRFbGVtZW50cyhqYXZhLmxhbmcuT2JqZWN0W10pDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIHZvaWQgYWRkRWxlbWVudHMoT2JqZWN0W10gZWxlbWVudHMpIHsNCisJCWlmKGVsZW1lbnRzICE9IG51bGwgJiYgcGFydGl0aW9uU2VsZWN0ZWQgIT0gbnVsbCkgew0KKwkJCQ0KKwkJCQ0KKwkJCUNvbGxlY3Rpb248SW5zdGFuY2VTcGVjaWZpY2F0aW9uPiB0ID0gbmV3IEFycmF5TGlzdDxJbnN0YW5jZVNwZWNpZmljYXRpb24+KCk7DQorCQkJTGlua2VkSGFzaFNldDxPYmplY3Q+IGwgPSBtYXAuZ2V0KHBhcnRpdGlvblNlbGVjdGVkKTsNCisJCQkNCisJCQlsLmFkZEFsbChBcnJheXMuYXNMaXN0KGVsZW1lbnRzKSk7DQorCQkJDQorCQkJVHJlZVZpZXdlciBzZWxlY3RlZEVsZW1lbnRzVmlld2VyID0gc2VsZWN0ZWRFbGVtZW50c1ZpZXdlcnMuZ2V0KHBhcnRpdGlvblNlbGVjdGVkKTsNCisJCQlzZWxlY3RlZEVsZW1lbnRzVmlld2VyLnJlZnJlc2goKTsNCisJCQkNCisJCX0JCQ0KKwl9DQorCQ0KKwkNCisJLyogKG5vbi1KYXZhZG9jKQ0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLmpmYWNlLmRpYWxvZ3MuRGlhbG9nI29rUHJlc3NlZCgpDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHJvdGVjdGVkIHZvaWQgb2tQcmVzc2VkKCkgew0KKwkJc2V0UmVzdWx0KG1hcCk7DQorDQorCQlzdXBlci5va1ByZXNzZWQoKTsNCisJfQ0KKw0KKwkNCisJLyoqDQorCSAqIFNldHMgdGhlIHJlc3VsdC4NCisJICoNCisJICogQHBhcmFtIG1hcF8gdGhlIG1hcA0KKwkgKi8NCisJcHJvdGVjdGVkIHZvaWQgc2V0UmVzdWx0KE1hcDxDSENvcmUsIExpbmtlZEhhc2hTZXQ8T2JqZWN0Pj4gbWFwXykgew0KKwkJcmVzdWx0ID0gbWFwXzsNCisJfQ0KKw0KKwkNCisJLyoqDQorCSAqIEdldHMgdGhlIHJlc3VsdC4NCisJICoNCisJICogQHJldHVybiB0aGUgcmVzdWx0DQorCSAqLw0KKwlwdWJsaWMgTWFwPENIQ29yZSwgTGlua2VkSGFzaFNldDxPYmplY3Q+PiBnZXRSZXN1bHQoKSB7DQorCQlyZXR1cm4gcmVzdWx0Ow0KKwl9DQorfQ0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm11bHRpY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL211bHRpY29yZS9kaWFsb2dzL1N5c3RlbVNlbGVjdGlvbkRpYWxvZy5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbXVsdGljb3JlL2RpYWxvZ3MvU3lzdGVtU2VsZWN0aW9uRGlhbG9nLmphdmEKaW5kZXggOTMzMzE3OS4uNTc2MWFjNCAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbXVsdGljb3JlL2RpYWxvZ3MvU3lzdGVtU2VsZWN0aW9uRGlhbG9nLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbXVsdGljb3JlL2RpYWxvZ3MvU3lzdGVtU2VsZWN0aW9uRGlhbG9nLmphdmEKQEAgLTEsMTU0ICsxLDE2MSBAQAotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgLQotICAtIENvcHlyaWdodCAoYykgMjAxNS0yMDE2IFVuaXZlcnNpdHkgb2YgUGFkb3ZhLCBJVEFMWSAtICBJbnRlY3MgU3BBIAotICAtIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAgLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAgLSB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICAtIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gIC0KLSAgLSBDb250cmlidXRvcnM6Ci0gIC0KLSAgLSBBbGVzc2FuZHJvIFpvdmkgYXpvdmlAbWF0aC51bmlwZC5pdAotICAtIFN0ZWZhbm8gUHVyaSBzdGVmYW5vLnB1cmlAaW50ZWNzLml0Ci0gIC0gTGF1cmEgQmFyYWNjaGkgbGF1cmEuYmFyYWNjaGlAaW50ZWNzLml0Ci0gIC0gTmljaG9sYXMgUGFjaW5pIG5pY2hvbGFzLnBhY2luaUBpbnRlY3MuaXQgIAotICAtCi0gIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uIGFuZC9vciBpbml0aWFsIGRvY3VtZW50YXRpb24KLSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9wYWNrYWdlIG9yZy5wb2xhcnN5cy5jaGVzcy5tdWx0aWNvcmUuZGlhbG9nczsKLQotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2UuZGlhbG9ncy5EaWFsb2c7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LlNXVDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3QubGF5b3V0LkdyaWREYXRhOwotaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5sYXlvdXQuR3JpZExheW91dDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5Db21ibzsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5Db21wb3NpdGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuQ29udHJvbDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5MYWJlbDsKLWltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5TaGVsbDsKLWltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5JbnN0YW5jZVNwZWNpZmljYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuUGFja2FnZTsKLQotLyoqCi0gKiBUaGUgQ2xhc3MgU3lzdGVtU2VsZWN0aW9uRGlhbG9nLgotICovCi1wdWJsaWMgY2xhc3MgU3lzdGVtU2VsZWN0aW9uRGlhbG9nIGV4dGVuZHMgRGlhbG9nIHsKLQotCS8qKiBUaGUgY2hvb3NlIHN5c3RlbSBmaWVsZC4gKi8KLQlwcml2YXRlIENvbWJvIGNob29zZVN5c3RlbUZpZWxkOwotCQotCS8qKiBUaGUgc2VsZWN0ZWQgc3lzdGVtIG5hbWUuICovCi0JcHJpdmF0ZSBTdHJpbmcgc2VsZWN0ZWRTeXN0ZW1OYW1lOwotCQotCS8qKiBUaGUgc2VsZWN0ZWQgc3lzdGVtLiAqLwotCXByaXZhdGUgSW5zdGFuY2VTcGVjaWZpY2F0aW9uIHNlbGVjdGVkU3lzdGVtOwotCQotCS8qKiBUaGUgdGl0bGUuICovCi0JcHJpdmF0ZSBTdHJpbmcgdGl0bGU7Ci0JCi0JLyoqIFRoZSBzeXN0ZW1zIGxpc3QuICovCi0JcHJpdmF0ZSBMaXN0PEluc3RhbmNlU3BlY2lmaWNhdGlvbj4gc3lzdGVtc0xpc3Q7Ci0JCi0JLyoqCi0JICogSW5zdGFudGlhdGVzIGEgbmV3IHN5c3RlbSBzZWxlY3Rpb24gZGlhbG9nLgotCSAqCi0JICogQHBhcmFtIHBhcmVudFNoZWxsIHRoZSBwYXJlbnQgc2hlbGwKLQkgKiBAcGFyYW0gc3lzdGVtU2VsZWN0aW9uIHRoZSBzeXN0ZW0gc2VsZWN0aW9uCi0JICogQHBhcmFtIHRpdGxlIHRoZSB0aXRsZQotCSAqLwotCXB1YmxpYyBTeXN0ZW1TZWxlY3Rpb25EaWFsb2coU2hlbGwgcGFyZW50U2hlbGwsIExpc3Q8SW5zdGFuY2VTcGVjaWZpY2F0aW9uPiBzeXN0ZW1TZWxlY3Rpb24sIFN0cmluZyB0aXRsZSkgewotCQlzdXBlcihwYXJlbnRTaGVsbCk7Ci0JCXN5c3RlbXNMaXN0ID0gc3lzdGVtU2VsZWN0aW9uOwotCQl0aGlzLnRpdGxlID0gdGl0bGU7Ci0JfQotCi0JLyogKG5vbi1KYXZhZG9jKQotCSAqIEBzZWUgb3JnLmVjbGlwc2UuamZhY2UuZGlhbG9ncy5EaWFsb2cjY3JlYXRlRGlhbG9nQXJlYShvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5Db21wb3NpdGUpCi0JICovCi0JQE92ZXJyaWRlCi0JcHJvdGVjdGVkIENvbnRyb2wgY3JlYXRlRGlhbG9nQXJlYShDb21wb3NpdGUgcGFyZW50KSB7Ci0JCUdyaWRMYXlvdXQgbGF5b3V0ID0gbmV3IEdyaWRMYXlvdXQoMSwgZmFsc2UpOwotCi0JCWxheW91dC5ob3Jpem9udGFsU3BhY2luZyA9IDQ7Ci0JCWxheW91dC52ZXJ0aWNhbFNwYWNpbmcgPSA0OwotCQlsYXlvdXQubWFyZ2luQm90dG9tID0gNTsKLQkJbGF5b3V0Lm1hcmdpblRvcCA9IDU7Ci0JCi0JCXBhcmVudC5zZXRMYXlvdXQobGF5b3V0KTsKLQkJbmV3IExhYmVsKHBhcmVudCwgU1dULk5PTkUpLnNldFRleHQoIlN5c3RlbXMgZm91bmQgaW4gbW9kZWw6ICIpOwotCQkKLQkJR3JpZERhdGEgZ3JpZERhdGEgPSBuZXcgR3JpZERhdGEoR3JpZERhdGEuRklMTF9IT1JJWk9OVEFMKTsKLQkJY2hvb3NlU3lzdGVtRmllbGQgPSBuZXcgQ29tYm8ocGFyZW50LCBTV1QuRFJPUF9ET1dOIHwgU1dULlJFQURfT05MWSk7Ci0JCWZvcihJbnN0YW5jZVNwZWNpZmljYXRpb24gdGhlU3lzdGVtIDogc3lzdGVtc0xpc3QpewotCQkJY2hvb3NlU3lzdGVtRmllbGQuYWRkKHRoZVN5c3RlbS5nZXRRdWFsaWZpZWROYW1lKCkpOwotCQl9Ci0JCWNob29zZVN5c3RlbUZpZWxkLnNldExheW91dERhdGEoZ3JpZERhdGEpOwotCQkKLQkJbmV3IExhYmVsKHBhcmVudCwgU1dULk5PTkUpLnNldFRleHQoIiIpOwotCQkKLQkJcmV0dXJuIHBhcmVudDsJCi0JfQotCQotCS8qIChub24tSmF2YWRvYykKLQkgKiBAc2VlIG9yZy5lY2xpcHNlLmpmYWNlLndpbmRvdy5XaW5kb3cjY29uZmlndXJlU2hlbGwob3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuU2hlbGwpCi0JICovCi0JQE92ZXJyaWRlCi0JcHJvdGVjdGVkIHZvaWQgY29uZmlndXJlU2hlbGwoU2hlbGwgc2hlbGwpIHsKLQkJc3VwZXIuY29uZmlndXJlU2hlbGwoc2hlbGwpOwotCQlzaGVsbC5zZXRUZXh0KHRpdGxlKTsKLQl9Ci0KLQkvKiAobm9uLUphdmFkb2MpCi0JICogQHNlZSBvcmcuZWNsaXBzZS5qZmFjZS5kaWFsb2dzLkRpYWxvZyNpc1Jlc2l6YWJsZSgpCi0JICovCi0JQE92ZXJyaWRlCi0JcHJvdGVjdGVkIGJvb2xlYW4gaXNSZXNpemFibGUoKSB7Ci0JCXJldHVybiB0cnVlOwotCX0KLQkKLQkvKiAobm9uLUphdmFkb2MpCi0JICogQHNlZSBvcmcuZWNsaXBzZS5qZmFjZS5kaWFsb2dzLkRpYWxvZyNva1ByZXNzZWQoKQotCSAqLwotCUBPdmVycmlkZQotCXByb3RlY3RlZCB2b2lkIG9rUHJlc3NlZCgpIHsKLQkJc2V0U3lzdGVtTmFtZShjaG9vc2VTeXN0ZW1GaWVsZC5nZXRUZXh0KCkpOwkJCi0JCXN1cGVyLm9rUHJlc3NlZCgpOwotCX0KLQkKLQkvKioKLQkgKiBTZXRzIHRoZSBzeXN0ZW0gbmFtZS4KLQkgKgotCSAqIEBwYXJhbSBxbmFtZSB0aGUgbmV3IHN5c3RlbSBuYW1lCi0JICovCi0JcHVibGljIHZvaWQgc2V0U3lzdGVtTmFtZShTdHJpbmcgcW5hbWUpIHsKLQkJdGhpcy5zZWxlY3RlZFN5c3RlbU5hbWUgPSBxbmFtZTsKLQl9Ci0KLQkvKioKLQkgKiBHZXRzIHRoZSBzeXN0ZW0gbmFtZS4KLQkgKgotCSAqIEByZXR1cm4gdGhlIHN5c3RlbSBuYW1lCi0JICovCi0JcHVibGljIFN0cmluZyBnZXRTeXN0ZW1OYW1lKCkgewotCQlyZXR1cm4gc2VsZWN0ZWRTeXN0ZW1OYW1lOwotCX0KLQotCS8qKgotCSAqIEdldHMgdGhlIHNlbGVjdGVkIHN5c3RlbS4KLQkgKgotCSAqIEByZXR1cm4gdGhlIHNlbGVjdGVkIHN5c3RlbQotCSAqLwotCXB1YmxpYyBJbnN0YW5jZVNwZWNpZmljYXRpb24gZ2V0U2VsZWN0ZWRTeXN0ZW0oKSB7Ci0JCXJldHVybiBzZWxlY3RlZFN5c3RlbTsKLQl9Ci0KLQkvKioKLQkgKiBTZXRzIHRoZSBzZWxlY3RlZCBzeXN0ZW0uCi0JICoKLQkgKiBAcGFyYW0gc2VsZWN0ZWRTeXN0ZW0gdGhlIG5ldyBzZWxlY3RlZCBzeXN0ZW0KLQkgKi8KLQlwdWJsaWMgdm9pZCBzZXRTZWxlY3RlZFN5c3RlbShJbnN0YW5jZVNwZWNpZmljYXRpb24gc2VsZWN0ZWRTeXN0ZW0pIHsKLQkJdGhpcy5zZWxlY3RlZFN5c3RlbSA9IHNlbGVjdGVkU3lzdGVtOwotCX0KLX0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICogQ29weXJpZ2h0IChDKSAyMDIwIA0KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCisgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKyAgLQ0KKyAgLSBDb3B5cmlnaHQgKGMpIDIwMTUtMjAxNiBVbml2ZXJzaXR5IG9mIFBhZG92YSwgSVRBTFkgLSAgSW50ZWNzIFNwQSANCisgIC0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAgLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCisgIC0gd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgIC0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCisgIC0NCisgIC0gQ29udHJpYnV0b3JzOg0KKyAgLQ0KKyAgLSBBbGVzc2FuZHJvIFpvdmkgYXpvdmlAbWF0aC51bmlwZC5pdA0KKyAgLSBTdGVmYW5vIFB1cmkgc3RlZmFuby5wdXJpQGludGVjcy5pdA0KKyAgLSBMYXVyYSBCYXJhY2NoaSBsYXVyYS5iYXJhY2NoaUBpbnRlY3MuaXQNCisgIC0gTmljaG9sYXMgUGFjaW5pIG5pY2hvbGFzLnBhY2luaUBpbnRlY3MuaXQgIA0KKyAgLQ0KKyAgLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24gYW5kL29yIGluaXRpYWwgZG9jdW1lbnRhdGlvbg0KKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9wYWNrYWdlIG9yZy5wb2xhcnN5cy5jaGVzcy5tdWx0aWNvcmUuZGlhbG9nczsNCisNCitpbXBvcnQgamF2YS51dGlsLkxpc3Q7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLmRpYWxvZ3MuRGlhbG9nOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5zd3QuU1dUOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5zd3QubGF5b3V0LkdyaWREYXRhOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5zd3QubGF5b3V0LkdyaWRMYXlvdXQ7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkNvbWJvOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5Db21wb3NpdGU7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkNvbnRyb2w7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkxhYmVsOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5TaGVsbDsNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuSW5zdGFuY2VTcGVjaWZpY2F0aW9uOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5QYWNrYWdlOw0KKw0KKy8qKg0KKyAqIFRoZSBDbGFzcyBTeXN0ZW1TZWxlY3Rpb25EaWFsb2cuDQorICovDQorcHVibGljIGNsYXNzIFN5c3RlbVNlbGVjdGlvbkRpYWxvZyBleHRlbmRzIERpYWxvZyB7DQorDQorCS8qKiBUaGUgY2hvb3NlIHN5c3RlbSBmaWVsZC4gKi8NCisJcHJpdmF0ZSBDb21ibyBjaG9vc2VTeXN0ZW1GaWVsZDsNCisJDQorCS8qKiBUaGUgc2VsZWN0ZWQgc3lzdGVtIG5hbWUuICovDQorCXByaXZhdGUgU3RyaW5nIHNlbGVjdGVkU3lzdGVtTmFtZTsNCisJDQorCS8qKiBUaGUgc2VsZWN0ZWQgc3lzdGVtLiAqLw0KKwlwcml2YXRlIEluc3RhbmNlU3BlY2lmaWNhdGlvbiBzZWxlY3RlZFN5c3RlbTsNCisJDQorCS8qKiBUaGUgdGl0bGUuICovDQorCXByaXZhdGUgU3RyaW5nIHRpdGxlOw0KKwkNCisJLyoqIFRoZSBzeXN0ZW1zIGxpc3QuICovDQorCXByaXZhdGUgTGlzdDxJbnN0YW5jZVNwZWNpZmljYXRpb24+IHN5c3RlbXNMaXN0Ow0KKwkNCisJLyoqDQorCSAqIEluc3RhbnRpYXRlcyBhIG5ldyBzeXN0ZW0gc2VsZWN0aW9uIGRpYWxvZy4NCisJICoNCisJICogQHBhcmFtIHBhcmVudFNoZWxsIHRoZSBwYXJlbnQgc2hlbGwNCisJICogQHBhcmFtIHN5c3RlbVNlbGVjdGlvbiB0aGUgc3lzdGVtIHNlbGVjdGlvbg0KKwkgKiBAcGFyYW0gdGl0bGUgdGhlIHRpdGxlDQorCSAqLw0KKwlwdWJsaWMgU3lzdGVtU2VsZWN0aW9uRGlhbG9nKFNoZWxsIHBhcmVudFNoZWxsLCBMaXN0PEluc3RhbmNlU3BlY2lmaWNhdGlvbj4gc3lzdGVtU2VsZWN0aW9uLCBTdHJpbmcgdGl0bGUpIHsNCisJCXN1cGVyKHBhcmVudFNoZWxsKTsNCisJCXN5c3RlbXNMaXN0ID0gc3lzdGVtU2VsZWN0aW9uOw0KKwkJdGhpcy50aXRsZSA9IHRpdGxlOw0KKwl9DQorDQorCS8qIChub24tSmF2YWRvYykNCisJICogQHNlZSBvcmcuZWNsaXBzZS5qZmFjZS5kaWFsb2dzLkRpYWxvZyNjcmVhdGVEaWFsb2dBcmVhKG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkNvbXBvc2l0ZSkNCisJICovDQorCUBPdmVycmlkZQ0KKwlwcm90ZWN0ZWQgQ29udHJvbCBjcmVhdGVEaWFsb2dBcmVhKENvbXBvc2l0ZSBwYXJlbnQpIHsNCisJCUdyaWRMYXlvdXQgbGF5b3V0ID0gbmV3IEdyaWRMYXlvdXQoMSwgZmFsc2UpOw0KKw0KKwkJbGF5b3V0Lmhvcml6b250YWxTcGFjaW5nID0gNDsNCisJCWxheW91dC52ZXJ0aWNhbFNwYWNpbmcgPSA0Ow0KKwkJbGF5b3V0Lm1hcmdpbkJvdHRvbSA9IDU7DQorCQlsYXlvdXQubWFyZ2luVG9wID0gNTsNCisJDQorCQlwYXJlbnQuc2V0TGF5b3V0KGxheW91dCk7DQorCQluZXcgTGFiZWwocGFyZW50LCBTV1QuTk9ORSkuc2V0VGV4dCgiU3lzdGVtcyBmb3VuZCBpbiBtb2RlbDogIik7DQorCQkNCisJCUdyaWREYXRhIGdyaWREYXRhID0gbmV3IEdyaWREYXRhKEdyaWREYXRhLkZJTExfSE9SSVpPTlRBTCk7DQorCQljaG9vc2VTeXN0ZW1GaWVsZCA9IG5ldyBDb21ibyhwYXJlbnQsIFNXVC5EUk9QX0RPV04gfCBTV1QuUkVBRF9PTkxZKTsNCisJCWZvcihJbnN0YW5jZVNwZWNpZmljYXRpb24gdGhlU3lzdGVtIDogc3lzdGVtc0xpc3Qpew0KKwkJCWNob29zZVN5c3RlbUZpZWxkLmFkZCh0aGVTeXN0ZW0uZ2V0UXVhbGlmaWVkTmFtZSgpKTsNCisJCX0NCisJCWNob29zZVN5c3RlbUZpZWxkLnNldExheW91dERhdGEoZ3JpZERhdGEpOw0KKwkJDQorCQluZXcgTGFiZWwocGFyZW50LCBTV1QuTk9ORSkuc2V0VGV4dCgiIik7DQorCQkNCisJCXJldHVybiBwYXJlbnQ7CQ0KKwl9DQorCQ0KKwkvKiAobm9uLUphdmFkb2MpDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UuamZhY2Uud2luZG93LldpbmRvdyNjb25maWd1cmVTaGVsbChvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5TaGVsbCkNCisJICovDQorCUBPdmVycmlkZQ0KKwlwcm90ZWN0ZWQgdm9pZCBjb25maWd1cmVTaGVsbChTaGVsbCBzaGVsbCkgew0KKwkJc3VwZXIuY29uZmlndXJlU2hlbGwoc2hlbGwpOw0KKwkJc2hlbGwuc2V0VGV4dCh0aXRsZSk7DQorCX0NCisNCisJLyogKG5vbi1KYXZhZG9jKQ0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLmpmYWNlLmRpYWxvZ3MuRGlhbG9nI2lzUmVzaXphYmxlKCkNCisJICovDQorCUBPdmVycmlkZQ0KKwlwcm90ZWN0ZWQgYm9vbGVhbiBpc1Jlc2l6YWJsZSgpIHsNCisJCXJldHVybiB0cnVlOw0KKwl9DQorCQ0KKwkvKiAobm9uLUphdmFkb2MpDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UuamZhY2UuZGlhbG9ncy5EaWFsb2cjb2tQcmVzc2VkKCkNCisJICovDQorCUBPdmVycmlkZQ0KKwlwcm90ZWN0ZWQgdm9pZCBva1ByZXNzZWQoKSB7DQorCQlzZXRTeXN0ZW1OYW1lKGNob29zZVN5c3RlbUZpZWxkLmdldFRleHQoKSk7CQkNCisJCXN1cGVyLm9rUHJlc3NlZCgpOw0KKwl9DQorCQ0KKwkvKioNCisJICogU2V0cyB0aGUgc3lzdGVtIG5hbWUuDQorCSAqDQorCSAqIEBwYXJhbSBxbmFtZSB0aGUgbmV3IHN5c3RlbSBuYW1lDQorCSAqLw0KKwlwdWJsaWMgdm9pZCBzZXRTeXN0ZW1OYW1lKFN0cmluZyBxbmFtZSkgew0KKwkJdGhpcy5zZWxlY3RlZFN5c3RlbU5hbWUgPSBxbmFtZTsNCisJfQ0KKw0KKwkvKioNCisJICogR2V0cyB0aGUgc3lzdGVtIG5hbWUuDQorCSAqDQorCSAqIEByZXR1cm4gdGhlIHN5c3RlbSBuYW1lDQorCSAqLw0KKwlwdWJsaWMgU3RyaW5nIGdldFN5c3RlbU5hbWUoKSB7DQorCQlyZXR1cm4gc2VsZWN0ZWRTeXN0ZW1OYW1lOw0KKwl9DQorDQorCS8qKg0KKwkgKiBHZXRzIHRoZSBzZWxlY3RlZCBzeXN0ZW0uDQorCSAqDQorCSAqIEByZXR1cm4gdGhlIHNlbGVjdGVkIHN5c3RlbQ0KKwkgKi8NCisJcHVibGljIEluc3RhbmNlU3BlY2lmaWNhdGlvbiBnZXRTZWxlY3RlZFN5c3RlbSgpIHsNCisJCXJldHVybiBzZWxlY3RlZFN5c3RlbTsNCisJfQ0KKw0KKwkvKioNCisJICogU2V0cyB0aGUgc2VsZWN0ZWQgc3lzdGVtLg0KKwkgKg0KKwkgKiBAcGFyYW0gc2VsZWN0ZWRTeXN0ZW0gdGhlIG5ldyBzZWxlY3RlZCBzeXN0ZW0NCisJICovDQorCXB1YmxpYyB2b2lkIHNldFNlbGVjdGVkU3lzdGVtKEluc3RhbmNlU3BlY2lmaWNhdGlvbiBzZWxlY3RlZFN5c3RlbSkgew0KKwkJdGhpcy5zZWxlY3RlZFN5c3RlbSA9IHNlbGVjdGVkU3lzdGVtOw0KKwl9DQorfQ0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm11bHRpY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL211bHRpY29yZS9kaWFsb2dzL3BhY2thZ2UuaHRtbCBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm11bHRpY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL211bHRpY29yZS9kaWFsb2dzL3BhY2thZ2UuaHRtbAppbmRleCA3ZDdkNTQ2Li5mZmE2YjkzIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tdWx0aWNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tdWx0aWNvcmUvZGlhbG9ncy9wYWNrYWdlLmh0bWwKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbXVsdGljb3JlL2RpYWxvZ3MvcGFja2FnZS5odG1sCkBAIC0xLDcgKzEsMTQgQEAKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorIyBDb3B5cmlnaHQgKEMpIDIwMjAgDQorIyBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorIyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCisjIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorIyBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+DQogPGh0bWw+DQogPGhlYWQ+PC9oZWFkPg0KIDxib2R5Pg0KICAgUHJvdmlkZXMuLi4NCiA8L2JvZHk+DQotPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKzwvaHRtbD4NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tdWx0aWNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tdWx0aWNvcmUvbW9kZWwvQWJzdHJhY3RDb21tYW5kLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tdWx0aWNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tdWx0aWNvcmUvbW9kZWwvQWJzdHJhY3RDb21tYW5kLmphdmEKaW5kZXggNThkMmMyZS4uMjBhN2RhZSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbXVsdGljb3JlL21vZGVsL0Fic3RyYWN0Q29tbWFuZC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm11bHRpY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL211bHRpY29yZS9tb2RlbC9BYnN0cmFjdENvbW1hbmQuamF2YQpAQCAtMSw5MiArMSw5OSBAQAotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgLQotICAtIENvcHlyaWdodCAoYykgMjAxNS0yMDE2IFVuaXZlcnNpdHkgb2YgUGFkb3ZhLCBJVEFMWSAtICBJbnRlY3MgU3BBIAotICAtIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAgLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAgLSB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICAtIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gIC0KLSAgLSBDb250cmlidXRvcnM6Ci0gIC0KLSAgLSBBbGVzc2FuZHJvIFpvdmkgYXpvdmlAbWF0aC51bmlwZC5pdAotICAtIFN0ZWZhbm8gUHVyaSBzdGVmYW5vLnB1cmlAaW50ZWNzLml0Ci0gIC0gTGF1cmEgQmFyYWNjaGkgbGF1cmEuYmFyYWNjaGlAaW50ZWNzLml0Ci0gIC0gTmljaG9sYXMgUGFjaW5pIG5pY2hvbGFzLnBhY2luaUBpbnRlY3MuaXQgIAotICAtCi0gIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uIGFuZC9vciBpbml0aWFsIGRvY3VtZW50YXRpb24KLSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9wYWNrYWdlIG9yZy5wb2xhcnN5cy5jaGVzcy5tdWx0aWNvcmUubW9kZWw7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLmNvbW1hbmRzLkFic3RyYWN0SGFuZGxlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLmNvbW1hbmRzLkV4ZWN1dGlvbkV2ZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUuY29tbWFuZHMuRXhlY3V0aW9uRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5yZXNvdXJjZS5SZXNvdXJjZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLmVkaXRvci5QYXB5cnVzTXVsdGlEaWFncmFtRWRpdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuaW5mcmEuY29yZS5zZXJ2aWNlcy5TZXJ2aWNlRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLk1vZGVsOwotaW1wb3J0IG9yZy5wb2xhcnN5cy5jaGVzcy5jb3JlLm5vdGlmaWNhdGlvbnMuUmVzb3VyY2VOb3RpZmljYXRpb247Ci1pbXBvcnQgb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUudXRpbC51bWwuTW9kZWxFcnJvcjsKLWltcG9ydCBvcmcucG9sYXJzeXMuY2hlc3MuY29yZS51dGlsLnVtbC5SZXNvdXJjZVV0aWxzOwotaW1wb3J0IG9yZy5wb2xhcnN5cy5jaGVzcy5jb3JlLnZpZXdzLkRpYWdyYW1TdGF0dXM7Ci1pbXBvcnQgb3JnLnBvbGFyc3lzLmNoZXNzLnNlcnZpY2UuZ3VpLnV0aWxzLkNIRVNTRWRpdG9yVXRpbHM7Ci0KLS8qKgotICogVGhlIENsYXNzIEFic3RyYWN0Q29tbWFuZC4KLSAqLwotcHVibGljIGFic3RyYWN0IGNsYXNzIEFic3RyYWN0Q29tbWFuZCBleHRlbmRzIEFic3RyYWN0SGFuZGxlciB7Ci0JCi0JLyoqIFRoZSB1bWwgbW9kZWwuICovCi0JcHJvdGVjdGVkIE1vZGVsIHVtbE1vZGVsOwotCQotCS8qKiBUaGUgZXZlbnQuICovCi0JcHJvdGVjdGVkIEV4ZWN1dGlvbkV2ZW50IGV2ZW50OwotCQotCS8qKiBUaGUgZGlhZ3JhbSBzdGF0dXMuICovCi0JcHJvdGVjdGVkIERpYWdyYW1TdGF0dXMgZGlhZ3JhbVN0YXR1czsKLQkKLQkvKiogVGhlIGVkaXRvci4gKi8KLQlwcm90ZWN0ZWQgUGFweXJ1c011bHRpRGlhZ3JhbUVkaXRvciBlZGl0b3I7Ci0KLQkvKiAobm9uLUphdmFkb2MpCi0JICogQHNlZSBvcmcuZWNsaXBzZS5jb3JlLmNvbW1hbmRzLklIYW5kbGVyI2V4ZWN1dGUob3JnLmVjbGlwc2UuY29yZS5jb21tYW5kcy5FeGVjdXRpb25FdmVudCkKLQkgKi8KLQlAT3ZlcnJpZGUKLQlwdWJsaWMgT2JqZWN0IGV4ZWN1dGUoRXhlY3V0aW9uRXZlbnQgZXZlbnQpIHRocm93cyBFeGVjdXRpb25FeGNlcHRpb24gewotCQl0aGlzLmV2ZW50ID0gZXZlbnQ7Ci0KLQkJZWRpdG9yID0gQ0hFU1NFZGl0b3JVdGlscy5nZXRDSEVTU0VkaXRvcigpOwotCQlkaWFncmFtU3RhdHVzID0gQ0hFU1NFZGl0b3JVdGlscy5nZXREaWFncmFtU3RhdHVzKGVkaXRvcik7Ci0JCWlmIChlZGl0b3IgPT0gbnVsbCB8fCBkaWFncmFtU3RhdHVzID09IG51bGwpCi0JCQlyZXR1cm4gbnVsbDsKLQkJdHJ5IHsKLQkJCVJlc291cmNlIHJlcyA9IFJlc291cmNlVXRpbHMuZ2V0VU1MUmVzb3VyY2UoZWRpdG9yCi0JCQkJCS5nZXRTZXJ2aWNlc1JlZ2lzdHJ5KCkpOwotCQkJdW1sTW9kZWwgPSBSZXNvdXJjZVV0aWxzLmdldE1vZGVsKHJlcyk7Ci0JCQlpZiAodW1sTW9kZWwgIT0gbnVsbCkgewotCQkJCQotCQkJCXRyeSB7Ci0JCQkJCWV4ZWN1dGUoKTsKLQkJCQl9IGNhdGNoIChNb2RlbEVycm9yIGUpIHsKLQkJCQkJUmVzb3VyY2VOb3RpZmljYXRpb24uc2hvd0luZm8oIlByb2JsZW1zIHdpdGggdGhlIG1vZGVsLiAiICsgZS5nZXRDYXVzZSgpICsgIjogIiArIGUuZ2V0TWVzc2FnZSgpKTsKLQkJCQl9IGNhdGNoIChFeGNlcHRpb24gZSkgewotCQkJCQllLnByaW50U3RhY2tUcmFjZSgpOwotCQkJCQlSZXNvdXJjZU5vdGlmaWNhdGlvbi5zaG93RXJyb3IoIlVuZXhwZWN0ZWQgZXJyb3I6ICIgKyBlLnRvU3RyaW5nKCkpOwotCQkJCX0KLQkJCQkKLQkJCQkKLQkJCQkKLQkJCX0KLQkJfSBjYXRjaCAoU2VydmljZUV4Y2VwdGlvbiBlKSB7Ci0JCQllLnByaW50U3RhY2tUcmFjZSgpOwotCQl9Ci0JCXJldHVybiBudWxsOwotCX0KLQotCS8qKgotCSAqIEV4ZWN1dGUuCi0JICoKLQkgKiBAdGhyb3dzIE1vZGVsRXJyb3IgdGhlIG1vZGVsIGVycm9yCi0JICogQHRocm93cyBFeGNlcHRpb24gdGhlIGV4Y2VwdGlvbgotCSAqLwotCXB1YmxpYyBhYnN0cmFjdCB2b2lkIGV4ZWN1dGUoKSB0aHJvd3MgTW9kZWxFcnJvciwgRXhjZXB0aW9uOwotCi19CisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqIENvcHlyaWdodCAoQykgMjAyMCANCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQorICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisgIC0NCisgIC0gQ29weXJpZ2h0IChjKSAyMDE1LTIwMTYgVW5pdmVyc2l0eSBvZiBQYWRvdmEsIElUQUxZIC0gIEludGVjcyBTcEEgDQorICAtIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgIC0gYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQorICAtIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICAtIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQorICAtDQorICAtIENvbnRyaWJ1dG9yczoNCisgIC0NCisgIC0gQWxlc3NhbmRybyBab3ZpIGF6b3ZpQG1hdGgudW5pcGQuaXQNCisgIC0gU3RlZmFubyBQdXJpIHN0ZWZhbm8ucHVyaUBpbnRlY3MuaXQNCisgIC0gTGF1cmEgQmFyYWNjaGkgbGF1cmEuYmFyYWNjaGlAaW50ZWNzLml0DQorICAtIE5pY2hvbGFzIFBhY2luaSBuaWNob2xhcy5wYWNpbmlAaW50ZWNzLml0ICANCisgIC0NCisgIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uIGFuZC9vciBpbml0aWFsIGRvY3VtZW50YXRpb24NCisgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovcGFja2FnZSBvcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlLm1vZGVsOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLmNvbW1hbmRzLkFic3RyYWN0SGFuZGxlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5jb21tYW5kcy5FeGVjdXRpb25FdmVudDsNCitpbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5jb21tYW5kcy5FeGVjdXRpb25FeGNlcHRpb247DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5yZXNvdXJjZS5SZXNvdXJjZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5lZGl0b3IuUGFweXJ1c011bHRpRGlhZ3JhbUVkaXRvcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5pbmZyYS5jb3JlLnNlcnZpY2VzLlNlcnZpY2VFeGNlcHRpb247DQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLk1vZGVsOw0KK2ltcG9ydCBvcmcucG9sYXJzeXMuY2hlc3MuY29yZS5ub3RpZmljYXRpb25zLlJlc291cmNlTm90aWZpY2F0aW9uOw0KK2ltcG9ydCBvcmcucG9sYXJzeXMuY2hlc3MuY29yZS51dGlsLnVtbC5Nb2RlbEVycm9yOw0KK2ltcG9ydCBvcmcucG9sYXJzeXMuY2hlc3MuY29yZS51dGlsLnVtbC5SZXNvdXJjZVV0aWxzOw0KK2ltcG9ydCBvcmcucG9sYXJzeXMuY2hlc3MuY29yZS52aWV3cy5EaWFncmFtU3RhdHVzOw0KK2ltcG9ydCBvcmcucG9sYXJzeXMuY2hlc3Muc2VydmljZS5ndWkudXRpbHMuQ0hFU1NFZGl0b3JVdGlsczsNCisNCisvKioNCisgKiBUaGUgQ2xhc3MgQWJzdHJhY3RDb21tYW5kLg0KKyAqLw0KK3B1YmxpYyBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdENvbW1hbmQgZXh0ZW5kcyBBYnN0cmFjdEhhbmRsZXIgew0KKwkNCisJLyoqIFRoZSB1bWwgbW9kZWwuICovDQorCXByb3RlY3RlZCBNb2RlbCB1bWxNb2RlbDsNCisJDQorCS8qKiBUaGUgZXZlbnQuICovDQorCXByb3RlY3RlZCBFeGVjdXRpb25FdmVudCBldmVudDsNCisJDQorCS8qKiBUaGUgZGlhZ3JhbSBzdGF0dXMuICovDQorCXByb3RlY3RlZCBEaWFncmFtU3RhdHVzIGRpYWdyYW1TdGF0dXM7DQorCQ0KKwkvKiogVGhlIGVkaXRvci4gKi8NCisJcHJvdGVjdGVkIFBhcHlydXNNdWx0aURpYWdyYW1FZGl0b3IgZWRpdG9yOw0KKw0KKwkvKiAobm9uLUphdmFkb2MpDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UuY29yZS5jb21tYW5kcy5JSGFuZGxlciNleGVjdXRlKG9yZy5lY2xpcHNlLmNvcmUuY29tbWFuZHMuRXhlY3V0aW9uRXZlbnQpDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIE9iamVjdCBleGVjdXRlKEV4ZWN1dGlvbkV2ZW50IGV2ZW50KSB0aHJvd3MgRXhlY3V0aW9uRXhjZXB0aW9uIHsNCisJCXRoaXMuZXZlbnQgPSBldmVudDsNCisNCisJCWVkaXRvciA9IENIRVNTRWRpdG9yVXRpbHMuZ2V0Q0hFU1NFZGl0b3IoKTsNCisJCWRpYWdyYW1TdGF0dXMgPSBDSEVTU0VkaXRvclV0aWxzLmdldERpYWdyYW1TdGF0dXMoZWRpdG9yKTsNCisJCWlmIChlZGl0b3IgPT0gbnVsbCB8fCBkaWFncmFtU3RhdHVzID09IG51bGwpDQorCQkJcmV0dXJuIG51bGw7DQorCQl0cnkgew0KKwkJCVJlc291cmNlIHJlcyA9IFJlc291cmNlVXRpbHMuZ2V0VU1MUmVzb3VyY2UoZWRpdG9yDQorCQkJCQkuZ2V0U2VydmljZXNSZWdpc3RyeSgpKTsNCisJCQl1bWxNb2RlbCA9IFJlc291cmNlVXRpbHMuZ2V0TW9kZWwocmVzKTsNCisJCQlpZiAodW1sTW9kZWwgIT0gbnVsbCkgew0KKwkJCQkNCisJCQkJdHJ5IHsNCisJCQkJCWV4ZWN1dGUoKTsNCisJCQkJfSBjYXRjaCAoTW9kZWxFcnJvciBlKSB7DQorCQkJCQlSZXNvdXJjZU5vdGlmaWNhdGlvbi5zaG93SW5mbygiUHJvYmxlbXMgd2l0aCB0aGUgbW9kZWwuICIgKyBlLmdldENhdXNlKCkgKyAiOiAiICsgZS5nZXRNZXNzYWdlKCkpOw0KKwkJCQl9IGNhdGNoIChFeGNlcHRpb24gZSkgew0KKwkJCQkJZS5wcmludFN0YWNrVHJhY2UoKTsNCisJCQkJCVJlc291cmNlTm90aWZpY2F0aW9uLnNob3dFcnJvcigiVW5leHBlY3RlZCBlcnJvcjogIiArIGUudG9TdHJpbmcoKSk7DQorCQkJCX0NCisJCQkJDQorCQkJCQ0KKwkJCQkNCisJCQl9DQorCQl9IGNhdGNoIChTZXJ2aWNlRXhjZXB0aW9uIGUpIHsNCisJCQllLnByaW50U3RhY2tUcmFjZSgpOw0KKwkJfQ0KKwkJcmV0dXJuIG51bGw7DQorCX0NCisNCisJLyoqDQorCSAqIEV4ZWN1dGUuDQorCSAqDQorCSAqIEB0aHJvd3MgTW9kZWxFcnJvciB0aGUgbW9kZWwgZXJyb3INCisJICogQHRocm93cyBFeGNlcHRpb24gdGhlIGV4Y2VwdGlvbg0KKwkgKi8NCisJcHVibGljIGFic3RyYWN0IHZvaWQgZXhlY3V0ZSgpIHRocm93cyBNb2RlbEVycm9yLCBFeGNlcHRpb247DQorDQorfQ0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm11bHRpY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL211bHRpY29yZS9tb2RlbC9DSENvcmUuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm11bHRpY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL211bHRpY29yZS9tb2RlbC9DSENvcmUuamF2YQppbmRleCA0YTY5ZmZhLi5kNjFjNTA3IDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tdWx0aWNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tdWx0aWNvcmUvbW9kZWwvQ0hDb3JlLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbXVsdGljb3JlL21vZGVsL0NIQ29yZS5qYXZhCkBAIC0xLDEyNSArMSwxMzIgQEAKLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gIC0KLSAgLSBDb3B5cmlnaHQgKGMpIDIwMTUtMjAxNiBVbml2ZXJzaXR5IG9mIFBhZG92YSwgSVRBTFkgLSAgSW50ZWNzIFNwQSAKLSAgLSBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gIC0gYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gIC0gd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAgLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICAtCi0gIC0gQ29udHJpYnV0b3JzOgotICAtCi0gIC0gQWxlc3NhbmRybyBab3ZpIGF6b3ZpQG1hdGgudW5pcGQuaXQKLSAgLSBTdGVmYW5vIFB1cmkgc3RlZmFuby5wdXJpQGludGVjcy5pdAotICAtIExhdXJhIEJhcmFjY2hpIGxhdXJhLmJhcmFjY2hpQGludGVjcy5pdAotICAtIE5pY2hvbGFzIFBhY2luaSBuaWNob2xhcy5wYWNpbmlAaW50ZWNzLml0ICAKLSAgLQotICAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbiBhbmQvb3IgaW5pdGlhbCBkb2N1bWVudGF0aW9uCi0gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovcGFja2FnZSBvcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlLm1vZGVsOwotCi1pbXBvcnQgamF2YS51dGlsLkFycmF5czsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLkluc3RhbmNlU3BlY2lmaWNhdGlvbjsKLWltcG9ydCBvcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUuUHJlZGljdGFiaWxpdHkuRGVwbG95bWVudENvbmZpZ3VyYXRpb24uSGFyZHdhcmVCYXNlbGluZS5DSF9Id1Byb2Nlc3NvcjsKLQotCi0vKioKLSAqIFRoZSBDbGFzcyBDSENvcmUuCi0gKgotICogQGF1dGhvciBBbGVzc2FuZHJvIFpvdmkKLSAqIAotICogQ0hDb3JlIHJlcHJlc2VudHMgdGhlIHR1cGxlIDxwcm9jZXNzb3IsIGNvcmU+LgotICovCi1wdWJsaWMgZmluYWwgY2xhc3MgQ0hDb3JlIHsKLQotCS8qKiBUaGUgcHJvY2Vzc29yLiAqLwotCXByaXZhdGUgQ0hfSHdQcm9jZXNzb3IgcHJvY2Vzc29yOwotCQotCS8qKiBUaGUgbmFtZS4gKi8KLQlwcml2YXRlIFN0cmluZyBuYW1lOwotCi0JLyoqCi0JICogSW5zdGFudGlhdGVzIGEgbmV3IENIIGNvcmUuCi0JICoKLQkgKiBAcGFyYW0gcHJvY2Vzc29yIHRoZSBwcm9jZXNzb3IKLQkgKiBAcGFyYW0gY29yZU5hbWUgdGhlIGNvcmUgbmFtZQotCSAqLwotCXB1YmxpYyBDSENvcmUoQ0hfSHdQcm9jZXNzb3IgcHJvY2Vzc29yLCBTdHJpbmcgY29yZU5hbWUpIHsKLQkJCi0JCWlmIChwcm9jZXNzb3IuZ2V0QmFzZV9JbnN0YW5jZVNwZWNpZmljYXRpb24oKSA9PSBudWxsKQotCQkJdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oIkNvcmUgY2FuIGJlIGluc3RhbmNlZCBvbmx5IGJ5IGFuIEluc3RhbmNlU3BlY2lmaWNhdGlvbiEiKTsKLQkJCi0JCXRoaXMucHJvY2Vzc29yID0gcHJvY2Vzc29yOwotCQl0aGlzLm5hbWUgPSBjb3JlTmFtZTsKLQl9Ci0KLQkKLQkvKioKLQkgKiBHZXRzIHRoZSBwcm9jZXNzb3IuCi0JICoKLQkgKiBAcmV0dXJuIHRoZSBwcm9jZXNzb3IKLQkgKi8KLQlwdWJsaWMgQ0hfSHdQcm9jZXNzb3IgZ2V0UHJvY2Vzc29yKCkgewotCQlyZXR1cm4gcHJvY2Vzc29yOwotCX0KLQkKLQkvKioKLQkgKiBHZXRzIHRoZSBuYW1lLgotCSAqCi0JICogQHJldHVybiB0aGUgbmFtZQotCSAqLwotCXB1YmxpYyBTdHJpbmcgZ2V0TmFtZSgpIHsKLQkJcmV0dXJuIG5hbWU7Ci0JfQotCQotCS8qKgotCSAqIEdldHMgdGhlIHF1YWxpZmllZCBuYW1lLgotCSAqCi0JICogQHJldHVybiB0aGUgcXVhbGlmaWVkIG5hbWUKLQkgKi8KLQlwdWJsaWMgU3RyaW5nIGdldFF1YWxpZmllZE5hbWUoKSB7Ci0JCQotCQlTdHJpbmdCdWlsZGVyIHNiID0gbmV3IFN0cmluZ0J1aWxkZXIoKTsKLQkJcmV0dXJuIHNiLmFwcGVuZChwcm9jZXNzb3IuZ2V0QmFzZV9JbnN0YW5jZVNwZWNpZmljYXRpb24oKS5nZXROYW1lKCkpLmFwcGVuZCgnXycpLmFwcGVuZChuYW1lKS50b1N0cmluZygpOwotCX0KLQkKLQkvKiAobm9uLUphdmFkb2MpCi0JICogQHNlZSBqYXZhLmxhbmcuT2JqZWN0I2VxdWFscyhqYXZhLmxhbmcuT2JqZWN0KQotCSAqLwotCUBPdmVycmlkZQotCXB1YmxpYyBib29sZWFuIGVxdWFscyhPYmplY3Qgb2JqKSB7Ci0JCWlmKCEob2JqIGluc3RhbmNlb2YgQ0hDb3JlKSkgcmV0dXJuIGZhbHNlOwotCQlpZihvYmogPT0gdGhpcykgcmV0dXJuIHRydWU7Ci0JCQotCQlDSENvcmUgdGhhdCA9IChDSENvcmUpIG9iajsKLQkJcmV0dXJuIHByb2Nlc3Nvci5nZXRCYXNlX0luc3RhbmNlU3BlY2lmaWNhdGlvbigpLmdldE5hbWUoKS5lcXVhbHModGhhdC5wcm9jZXNzb3IuZ2V0QmFzZV9JbnN0YW5jZVNwZWNpZmljYXRpb24oKS5nZXROYW1lKCkpICYmIG5hbWUuZXF1YWxzKHRoYXQubmFtZSk7Ci0JfQotCQotCS8qIChub24tSmF2YWRvYykKLQkgKiBAc2VlIGphdmEubGFuZy5PYmplY3QjdG9TdHJpbmcoKQotCSAqLwotCUBPdmVycmlkZQotCXB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7Ci0JCXJldHVybiBnZXRRdWFsaWZpZWROYW1lKCk7Ci0JfQotCQotCS8qIChub24tSmF2YWRvYykKLQkgKiBAc2VlIGphdmEubGFuZy5PYmplY3QjaGFzaENvZGUoKQotCSAqLwotCUBPdmVycmlkZQotCXB1YmxpYyBpbnQgaGFzaENvZGUoKSB7Ci0JCSByZXR1cm4gQXJyYXlzLmhhc2hDb2RlKG5ldyBPYmplY3RbXSB7Ci0JCQkJIHByb2Nlc3Nvci5nZXRCYXNlX0luc3RhbmNlU3BlY2lmaWNhdGlvbigpLmdldE5hbWUoKS5oYXNoQ29kZSgpLAotCQkgICAgICAgICBuYW1lLmhhc2hDb2RlKCksCi0JCSAgICB9KTsKLQl9Ci0KLQotCS8qKgotCSAqIEdldHMgdGhlIHByb2Nlc3NvciBpbnN0YW5jZS4KLQkgKgotCSAqIEByZXR1cm4gdGhlIHByb2Nlc3NvciBpbnN0YW5jZQotCSAqLwotCXB1YmxpYyBJbnN0YW5jZVNwZWNpZmljYXRpb24gZ2V0UHJvY2Vzc29ySW5zdGFuY2UoKSB7Ci0JCXJldHVybiBwcm9jZXNzb3IuZ2V0QmFzZV9JbnN0YW5jZVNwZWNpZmljYXRpb24oKTsKLQl9Ci19CisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqIENvcHlyaWdodCAoQykgMjAyMCANCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQorICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisgIC0NCisgIC0gQ29weXJpZ2h0IChjKSAyMDE1LTIwMTYgVW5pdmVyc2l0eSBvZiBQYWRvdmEsIElUQUxZIC0gIEludGVjcyBTcEEgDQorICAtIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgIC0gYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQorICAtIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICAtIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQorICAtDQorICAtIENvbnRyaWJ1dG9yczoNCisgIC0NCisgIC0gQWxlc3NhbmRybyBab3ZpIGF6b3ZpQG1hdGgudW5pcGQuaXQNCisgIC0gU3RlZmFubyBQdXJpIHN0ZWZhbm8ucHVyaUBpbnRlY3MuaXQNCisgIC0gTGF1cmEgQmFyYWNjaGkgbGF1cmEuYmFyYWNjaGlAaW50ZWNzLml0DQorICAtIE5pY2hvbGFzIFBhY2luaSBuaWNob2xhcy5wYWNpbmlAaW50ZWNzLml0ICANCisgIC0NCisgIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uIGFuZC9vciBpbml0aWFsIGRvY3VtZW50YXRpb24NCisgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovcGFja2FnZSBvcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlLm1vZGVsOw0KKw0KK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlzOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5JbnN0YW5jZVNwZWNpZmljYXRpb247DQoraW1wb3J0IG9yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS5QcmVkaWN0YWJpbGl0eS5EZXBsb3ltZW50Q29uZmlndXJhdGlvbi5IYXJkd2FyZUJhc2VsaW5lLkNIX0h3UHJvY2Vzc29yOw0KKw0KKw0KKy8qKg0KKyAqIFRoZSBDbGFzcyBDSENvcmUuDQorICoNCisgKiBAYXV0aG9yIEFsZXNzYW5kcm8gWm92aQ0KKyAqIA0KKyAqIENIQ29yZSByZXByZXNlbnRzIHRoZSB0dXBsZSA8cHJvY2Vzc29yLCBjb3JlPi4NCisgKi8NCitwdWJsaWMgZmluYWwgY2xhc3MgQ0hDb3JlIHsNCisNCisJLyoqIFRoZSBwcm9jZXNzb3IuICovDQorCXByaXZhdGUgQ0hfSHdQcm9jZXNzb3IgcHJvY2Vzc29yOw0KKwkNCisJLyoqIFRoZSBuYW1lLiAqLw0KKwlwcml2YXRlIFN0cmluZyBuYW1lOw0KKw0KKwkvKioNCisJICogSW5zdGFudGlhdGVzIGEgbmV3IENIIGNvcmUuDQorCSAqDQorCSAqIEBwYXJhbSBwcm9jZXNzb3IgdGhlIHByb2Nlc3Nvcg0KKwkgKiBAcGFyYW0gY29yZU5hbWUgdGhlIGNvcmUgbmFtZQ0KKwkgKi8NCisJcHVibGljIENIQ29yZShDSF9Id1Byb2Nlc3NvciBwcm9jZXNzb3IsIFN0cmluZyBjb3JlTmFtZSkgew0KKwkJDQorCQlpZiAocHJvY2Vzc29yLmdldEJhc2VfSW5zdGFuY2VTcGVjaWZpY2F0aW9uKCkgPT0gbnVsbCkNCisJCQl0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbigiQ29yZSBjYW4gYmUgaW5zdGFuY2VkIG9ubHkgYnkgYW4gSW5zdGFuY2VTcGVjaWZpY2F0aW9uISIpOw0KKwkJDQorCQl0aGlzLnByb2Nlc3NvciA9IHByb2Nlc3NvcjsNCisJCXRoaXMubmFtZSA9IGNvcmVOYW1lOw0KKwl9DQorDQorCQ0KKwkvKioNCisJICogR2V0cyB0aGUgcHJvY2Vzc29yLg0KKwkgKg0KKwkgKiBAcmV0dXJuIHRoZSBwcm9jZXNzb3INCisJICovDQorCXB1YmxpYyBDSF9Id1Byb2Nlc3NvciBnZXRQcm9jZXNzb3IoKSB7DQorCQlyZXR1cm4gcHJvY2Vzc29yOw0KKwl9DQorCQ0KKwkvKioNCisJICogR2V0cyB0aGUgbmFtZS4NCisJICoNCisJICogQHJldHVybiB0aGUgbmFtZQ0KKwkgKi8NCisJcHVibGljIFN0cmluZyBnZXROYW1lKCkgew0KKwkJcmV0dXJuIG5hbWU7DQorCX0NCisJDQorCS8qKg0KKwkgKiBHZXRzIHRoZSBxdWFsaWZpZWQgbmFtZS4NCisJICoNCisJICogQHJldHVybiB0aGUgcXVhbGlmaWVkIG5hbWUNCisJICovDQorCXB1YmxpYyBTdHJpbmcgZ2V0UXVhbGlmaWVkTmFtZSgpIHsNCisJCQ0KKwkJU3RyaW5nQnVpbGRlciBzYiA9IG5ldyBTdHJpbmdCdWlsZGVyKCk7DQorCQlyZXR1cm4gc2IuYXBwZW5kKHByb2Nlc3Nvci5nZXRCYXNlX0luc3RhbmNlU3BlY2lmaWNhdGlvbigpLmdldE5hbWUoKSkuYXBwZW5kKCdfJykuYXBwZW5kKG5hbWUpLnRvU3RyaW5nKCk7DQorCX0NCisJDQorCS8qIChub24tSmF2YWRvYykNCisJICogQHNlZSBqYXZhLmxhbmcuT2JqZWN0I2VxdWFscyhqYXZhLmxhbmcuT2JqZWN0KQ0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBib29sZWFuIGVxdWFscyhPYmplY3Qgb2JqKSB7DQorCQlpZighKG9iaiBpbnN0YW5jZW9mIENIQ29yZSkpIHJldHVybiBmYWxzZTsNCisJCWlmKG9iaiA9PSB0aGlzKSByZXR1cm4gdHJ1ZTsNCisJCQ0KKwkJQ0hDb3JlIHRoYXQgPSAoQ0hDb3JlKSBvYmo7DQorCQlyZXR1cm4gcHJvY2Vzc29yLmdldEJhc2VfSW5zdGFuY2VTcGVjaWZpY2F0aW9uKCkuZ2V0TmFtZSgpLmVxdWFscyh0aGF0LnByb2Nlc3Nvci5nZXRCYXNlX0luc3RhbmNlU3BlY2lmaWNhdGlvbigpLmdldE5hbWUoKSkgJiYgbmFtZS5lcXVhbHModGhhdC5uYW1lKTsNCisJfQ0KKwkNCisJLyogKG5vbi1KYXZhZG9jKQ0KKwkgKiBAc2VlIGphdmEubGFuZy5PYmplY3QjdG9TdHJpbmcoKQ0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7DQorCQlyZXR1cm4gZ2V0UXVhbGlmaWVkTmFtZSgpOw0KKwl9DQorCQ0KKwkvKiAobm9uLUphdmFkb2MpDQorCSAqIEBzZWUgamF2YS5sYW5nLk9iamVjdCNoYXNoQ29kZSgpDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIGludCBoYXNoQ29kZSgpIHsNCisJCSByZXR1cm4gQXJyYXlzLmhhc2hDb2RlKG5ldyBPYmplY3RbXSB7DQorCQkJCSBwcm9jZXNzb3IuZ2V0QmFzZV9JbnN0YW5jZVNwZWNpZmljYXRpb24oKS5nZXROYW1lKCkuaGFzaENvZGUoKSwNCisJCSAgICAgICAgIG5hbWUuaGFzaENvZGUoKSwNCisJCSAgICB9KTsNCisJfQ0KKw0KKw0KKwkvKioNCisJICogR2V0cyB0aGUgcHJvY2Vzc29yIGluc3RhbmNlLg0KKwkgKg0KKwkgKiBAcmV0dXJuIHRoZSBwcm9jZXNzb3IgaW5zdGFuY2UNCisJICovDQorCXB1YmxpYyBJbnN0YW5jZVNwZWNpZmljYXRpb24gZ2V0UHJvY2Vzc29ySW5zdGFuY2UoKSB7DQorCQlyZXR1cm4gcHJvY2Vzc29yLmdldEJhc2VfSW5zdGFuY2VTcGVjaWZpY2F0aW9uKCk7DQorCX0NCit9DQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbXVsdGljb3JlL21vZGVsL0NIVGFzay5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbXVsdGljb3JlL21vZGVsL0NIVGFzay5qYXZhCmluZGV4IGJmZTJhODYuLmNjNWQwZjcgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm11bHRpY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL211bHRpY29yZS9tb2RlbC9DSFRhc2suamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tdWx0aWNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tdWx0aWNvcmUvbW9kZWwvQ0hUYXNrLmphdmEKQEAgLTEsMTQ5ICsxLDE1NiBAQAotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgLQotICAtIENvcHlyaWdodCAoYykgMjAxNS0yMDE2IFVuaXZlcnNpdHkgb2YgUGFkb3ZhLCBJVEFMWSAtICBJbnRlY3MgU3BBIAotICAtIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAgLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAgLSB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICAtIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gIC0KLSAgLSBDb250cmlidXRvcnM6Ci0gIC0KLSAgLSBBbGVzc2FuZHJvIFpvdmkgYXpvdmlAbWF0aC51bmlwZC5pdAotICAtIFN0ZWZhbm8gUHVyaSBzdGVmYW5vLnB1cmlAaW50ZWNzLml0Ci0gIC0gTGF1cmEgQmFyYWNjaGkgbGF1cmEuYmFyYWNjaGlAaW50ZWNzLml0Ci0gIC0gTmljaG9sYXMgUGFjaW5pIG5pY2hvbGFzLnBhY2luaUBpbnRlY3MuaXQgIAotICAtCi0gIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uIGFuZC9vciBpbml0aWFsIGRvY3VtZW50YXRpb24KLSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9wYWNrYWdlIG9yZy5wb2xhcnN5cy5jaGVzcy5tdWx0aWNvcmUubW9kZWw7Ci0KLWltcG9ydCBqYXZhLnV0aWwuQXJyYXlzOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuQmVoYXZpb3JhbEZlYXR1cmU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuUGFyYW1ldGVyOwotaW1wb3J0IG9yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS5QcmVkaWN0YWJpbGl0eS5SVENvbXBvbmVudE1vZGVsLkNIUnRQb3J0U2xvdDsKLWltcG9ydCBvcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUuUHJlZGljdGFiaWxpdHkuUlRDb21wb25lbnRNb2RlbC5DSFJ0U3BlY2lmaWNhdGlvbjsKLWltcG9ydCBvcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlLnV0aWxzLlF1ZXJ5VXRpbHM7Ci0KLQotLyoqCi0gKiBUaGUgQ2xhc3MgQ0hUYXNrLgotICoKLSAqIEBhdXRob3IgQWxlc3NhbmRybyBab3ZpCi0gKiAKLSAqIENIVGFzayByZXByZXNlbnRzIHRoZSBpbnN0YW5jZSBvZiBhIGNvbXBvbmVudCBvcGVyYXRpb24uCi0gKiBUaGUgb3BlcmF0aW9uIGNhbiBhbHNvIGJlIHNlZW4gYXMgYSB0YXNrLCBhIHNoYXJlZCByZXNvdXJjZSBvciBhIHNpbXBsZSBwcm9jZWR1cmUgY2FsbC4KLSAqLwotCi1wdWJsaWMgZmluYWwgY2xhc3MgQ0hUYXNrIHsKLQkKLQkvKiogVGhlIHNsb3QuICovCi0JcHJpdmF0ZSBDSFJ0UG9ydFNsb3Qgc2xvdDsKLQkKLQkvKiogVGhlIHNwZWMuICovCi0JcHJpdmF0ZSBDSFJ0U3BlY2lmaWNhdGlvbiBzcGVjOwotCi0JLyoqCi0JICogSW5zdGFudGlhdGVzIGEgbmV3IENIIHRhc2suCi0JICoKLQkgKiBAcGFyYW0gc2xvdCB0aGUgc2xvdAotCSAqIEBwYXJhbSBzcGVjIHRoZSBzcGVjCi0JICovCi0JcHVibGljIENIVGFzayhDSFJ0UG9ydFNsb3Qgc2xvdCwgQ0hSdFNwZWNpZmljYXRpb24gc3BlYykgewotCQl0aGlzLnNsb3QgPSBzbG90OwotCQl0aGlzLnNwZWMgPSBzcGVjOwotCX0KLQkKLQkvKioKLQkgKiBHZXRzIHRoZSBzbG90LgotCSAqCi0JICogQHJldHVybiB0aGUgc2xvdAotCSAqLwotCXB1YmxpYyBDSFJ0UG9ydFNsb3QgZ2V0U2xvdCgpIHsKLQkJcmV0dXJuIHNsb3Q7Ci0JfQotCQotCS8qKgotCSAqIEdldHMgdGhlIENIIHJ0IHNwZWNpZmljYXRpb24uCi0JICoKLQkgKiBAcmV0dXJuIHRoZSBDSCBydCBzcGVjaWZpY2F0aW9uCi0JICovCi0JcHVibGljIENIUnRTcGVjaWZpY2F0aW9uIGdldENIUnRTcGVjaWZpY2F0aW9uKCkgewotCQlyZXR1cm4gc3BlYzsKLQl9Ci0JCi0JLyogKG5vbi1KYXZhZG9jKQotCSAqIEBzZWUgamF2YS5sYW5nLk9iamVjdCN0b1N0cmluZygpCi0JICovCi0JQE92ZXJyaWRlCi0JcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKLQkJLy9UT0RPIGl0IHNob3VsZCB0YWtlIGludG8gY29uc2lkZXJhdGlvbiB0aGUgbXVsdGlwbGljaXR5IG9mIHRoZSBpbnN0YW5jZXMgaW4gSW5zdF9mdWxsIHBhY2thZ2UKLQkJcmV0dXJuIHNsb3QuZ2V0QmFzZV9TbG90KCkuZ2V0T3duaW5nSW5zdGFuY2UoKS5nZXROYW1lKCkgKyAiXyIgCi0JCQkJKyBzbG90LmdldEJhc2VfU2xvdCgpLmdldERlZmluaW5nRmVhdHVyZSgpLmdldE5hbWUoKSAKLQkJCQkrICJfIiArIHNwZWMuZ2V0Q29udGV4dCgpLmdldE5hbWUoKSArICIoIiArZ2V0VHlwZSgpKyIpIjsKLQl9Ci0JCi0JLyoqCi0JICogR2V0cyB0aGUgbmFtZS4KLQkgKgotCSAqIEByZXR1cm4gdGhlIG5hbWUKLQkgKi8KLQlwdWJsaWMgU3RyaW5nIGdldE5hbWUoKSB7Ci0JCS8vVE9ETyBpdCBzaG91bGQgdGFrZSBpbnRvIGNvbnNpZGVyYXRpb24gdGhlIG11bHRpcGxpY2l0eSBvZiB0aGUgaW5zdGFuY2VzIGluIEluc3RfZnVsbCBwYWNrYWdlCi0JCXJldHVybiBzbG90LmdldEJhc2VfU2xvdCgpLmdldE93bmluZ0luc3RhbmNlKCkuZ2V0TmFtZSgpICsgIl8iIAotCQkJCSsgc2xvdC5nZXRCYXNlX1Nsb3QoKS5nZXREZWZpbmluZ0ZlYXR1cmUoKS5nZXROYW1lKCkgCi0JCQkJKyAiXyIgKyBnZXRPcE5hbWUoc3BlYy5nZXRDb250ZXh0KCkpKyJfdGFzayI7Ci0JfQotCQotCS8qKgotCSAqIEdldHMgdGhlIG9wIG5hbWUuCi0JICoKLQkgKiBAcGFyYW0gb3AgdGhlIG9wCi0JICogQHJldHVybiB0aGUgb3AgbmFtZQotCSAqLwotCXByaXZhdGUgU3RyaW5nIGdldE9wTmFtZShCZWhhdmlvcmFsRmVhdHVyZSBvcCl7Ci0JCVN0cmluZ0J1aWxkZXIgc2IgPSBuZXcgU3RyaW5nQnVpbGRlcihvcC5nZXROYW1lKCkpOwotCQlmb3IgKFBhcmFtZXRlciBwYXIgOiBvcC5nZXRPd25lZFBhcmFtZXRlcnMoKSkgewotCQkJc2IuYXBwZW5kKCdfJykuYXBwZW5kKHBhci5nZXRUeXBlKCkuZ2V0TmFtZSgpKTsKLQkJfQotCQlyZXR1cm4gc2IudG9TdHJpbmcoKTsKLQl9Ci0JCi0JLyoqCi0JICogR2V0cyB0aGUgdHlwZS4KLQkgKgotCSAqIEByZXR1cm4gdGhlIHR5cGUKLQkgKi8KLQlwdWJsaWMgU3RyaW5nIGdldFR5cGUoKXsKLQkJU3RyaW5nIHR5cGUgPSAic2ltcGxlX29wZXJhdGlvbiI7Ci0JCWlmKFF1ZXJ5VXRpbHMuaXNPY2NLaW5kU3BvcmFkaWNPclBlcmlvZGljKHNwZWMuZ2V0T2NjS2luZCgpKSl7Ci0JCQl0eXBlID0gInRhc2siOwotCQl9IGVsc2UgaWYgKFF1ZXJ5VXRpbHMuaXNHdWFyZGVkKHNwZWMpKXsKLQkJCXR5cGUgPSAic2hhcmVkX3Jlc291cmNlIjsKLQkJfQotCQlyZXR1cm4gdHlwZTsKLQl9Ci0JCi0JLyogKG5vbi1KYXZhZG9jKQotCSAqIEBzZWUgamF2YS5sYW5nLk9iamVjdCNlcXVhbHMoamF2YS5sYW5nLk9iamVjdCkKLQkgKi8KLQlAT3ZlcnJpZGUKLQlwdWJsaWMgYm9vbGVhbiBlcXVhbHMoT2JqZWN0IG9iaikgewotCQlpZighKG9iaiBpbnN0YW5jZW9mIENIVGFzaykpIHJldHVybiBmYWxzZTsKLQkJaWYob2JqID09IHRoaXMpIHJldHVybiB0cnVlOwotCQkKLQkJQ0hUYXNrIHRoYXQgPSAoQ0hUYXNrKSBvYmo7Ci0JCXJldHVybiB0b1N0cmluZygpLmVxdWFscyh0aGF0LnRvU3RyaW5nKCkpOwotCX0KLQkKLQkvKiAobm9uLUphdmFkb2MpCi0JICogQHNlZSBqYXZhLmxhbmcuT2JqZWN0I2hhc2hDb2RlKCkKLQkgKi8KLQlAT3ZlcnJpZGUKLQlwdWJsaWMgaW50IGhhc2hDb2RlKCkgewotCQkgcmV0dXJuIEFycmF5cy5oYXNoQ29kZShuZXcgT2JqZWN0W10gewotCQkJCSBzbG90LmdldEJhc2VfU2xvdCgpLmdldE93bmluZ0luc3RhbmNlKCkuZ2V0TmFtZSgpLAotCQkJCSBzbG90LmdldEJhc2VfU2xvdCgpLmdldERlZmluaW5nRmVhdHVyZSgpLmdldE5hbWUoKSwKLQkJCQkgc3BlYy5nZXRDb250ZXh0KCkuZ2V0TmFtZSgpCi0JCSAgICB9KTsKLQl9Ci19CisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqIENvcHlyaWdodCAoQykgMjAyMCANCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQorICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisgIC0NCisgIC0gQ29weXJpZ2h0IChjKSAyMDE1LTIwMTYgVW5pdmVyc2l0eSBvZiBQYWRvdmEsIElUQUxZIC0gIEludGVjcyBTcEEgDQorICAtIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgIC0gYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQorICAtIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICAtIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQorICAtDQorICAtIENvbnRyaWJ1dG9yczoNCisgIC0NCisgIC0gQWxlc3NhbmRybyBab3ZpIGF6b3ZpQG1hdGgudW5pcGQuaXQNCisgIC0gU3RlZmFubyBQdXJpIHN0ZWZhbm8ucHVyaUBpbnRlY3MuaXQNCisgIC0gTGF1cmEgQmFyYWNjaGkgbGF1cmEuYmFyYWNjaGlAaW50ZWNzLml0DQorICAtIE5pY2hvbGFzIFBhY2luaSBuaWNob2xhcy5wYWNpbmlAaW50ZWNzLml0ICANCisgIC0NCisgIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uIGFuZC9vciBpbml0aWFsIGRvY3VtZW50YXRpb24NCisgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovcGFja2FnZSBvcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlLm1vZGVsOw0KKw0KK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlzOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5CZWhhdmlvcmFsRmVhdHVyZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuUGFyYW1ldGVyOw0KK2ltcG9ydCBvcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUuUHJlZGljdGFiaWxpdHkuUlRDb21wb25lbnRNb2RlbC5DSFJ0UG9ydFNsb3Q7DQoraW1wb3J0IG9yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS5QcmVkaWN0YWJpbGl0eS5SVENvbXBvbmVudE1vZGVsLkNIUnRTcGVjaWZpY2F0aW9uOw0KK2ltcG9ydCBvcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlLnV0aWxzLlF1ZXJ5VXRpbHM7DQorDQorDQorLyoqDQorICogVGhlIENsYXNzIENIVGFzay4NCisgKg0KKyAqIEBhdXRob3IgQWxlc3NhbmRybyBab3ZpDQorICogDQorICogQ0hUYXNrIHJlcHJlc2VudHMgdGhlIGluc3RhbmNlIG9mIGEgY29tcG9uZW50IG9wZXJhdGlvbi4NCisgKiBUaGUgb3BlcmF0aW9uIGNhbiBhbHNvIGJlIHNlZW4gYXMgYSB0YXNrLCBhIHNoYXJlZCByZXNvdXJjZSBvciBhIHNpbXBsZSBwcm9jZWR1cmUgY2FsbC4NCisgKi8NCisNCitwdWJsaWMgZmluYWwgY2xhc3MgQ0hUYXNrIHsNCisJDQorCS8qKiBUaGUgc2xvdC4gKi8NCisJcHJpdmF0ZSBDSFJ0UG9ydFNsb3Qgc2xvdDsNCisJDQorCS8qKiBUaGUgc3BlYy4gKi8NCisJcHJpdmF0ZSBDSFJ0U3BlY2lmaWNhdGlvbiBzcGVjOw0KKw0KKwkvKioNCisJICogSW5zdGFudGlhdGVzIGEgbmV3IENIIHRhc2suDQorCSAqDQorCSAqIEBwYXJhbSBzbG90IHRoZSBzbG90DQorCSAqIEBwYXJhbSBzcGVjIHRoZSBzcGVjDQorCSAqLw0KKwlwdWJsaWMgQ0hUYXNrKENIUnRQb3J0U2xvdCBzbG90LCBDSFJ0U3BlY2lmaWNhdGlvbiBzcGVjKSB7DQorCQl0aGlzLnNsb3QgPSBzbG90Ow0KKwkJdGhpcy5zcGVjID0gc3BlYzsNCisJfQ0KKwkNCisJLyoqDQorCSAqIEdldHMgdGhlIHNsb3QuDQorCSAqDQorCSAqIEByZXR1cm4gdGhlIHNsb3QNCisJICovDQorCXB1YmxpYyBDSFJ0UG9ydFNsb3QgZ2V0U2xvdCgpIHsNCisJCXJldHVybiBzbG90Ow0KKwl9DQorCQ0KKwkvKioNCisJICogR2V0cyB0aGUgQ0ggcnQgc3BlY2lmaWNhdGlvbi4NCisJICoNCisJICogQHJldHVybiB0aGUgQ0ggcnQgc3BlY2lmaWNhdGlvbg0KKwkgKi8NCisJcHVibGljIENIUnRTcGVjaWZpY2F0aW9uIGdldENIUnRTcGVjaWZpY2F0aW9uKCkgew0KKwkJcmV0dXJuIHNwZWM7DQorCX0NCisJDQorCS8qIChub24tSmF2YWRvYykNCisJICogQHNlZSBqYXZhLmxhbmcuT2JqZWN0I3RvU3RyaW5nKCkNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgew0KKwkJLy9UT0RPIGl0IHNob3VsZCB0YWtlIGludG8gY29uc2lkZXJhdGlvbiB0aGUgbXVsdGlwbGljaXR5IG9mIHRoZSBpbnN0YW5jZXMgaW4gSW5zdF9mdWxsIHBhY2thZ2UNCisJCXJldHVybiBzbG90LmdldEJhc2VfU2xvdCgpLmdldE93bmluZ0luc3RhbmNlKCkuZ2V0TmFtZSgpICsgIl8iIA0KKwkJCQkrIHNsb3QuZ2V0QmFzZV9TbG90KCkuZ2V0RGVmaW5pbmdGZWF0dXJlKCkuZ2V0TmFtZSgpIA0KKwkJCQkrICJfIiArIHNwZWMuZ2V0Q29udGV4dCgpLmdldE5hbWUoKSArICIoIiArZ2V0VHlwZSgpKyIpIjsNCisJfQ0KKwkNCisJLyoqDQorCSAqIEdldHMgdGhlIG5hbWUuDQorCSAqDQorCSAqIEByZXR1cm4gdGhlIG5hbWUNCisJICovDQorCXB1YmxpYyBTdHJpbmcgZ2V0TmFtZSgpIHsNCisJCS8vVE9ETyBpdCBzaG91bGQgdGFrZSBpbnRvIGNvbnNpZGVyYXRpb24gdGhlIG11bHRpcGxpY2l0eSBvZiB0aGUgaW5zdGFuY2VzIGluIEluc3RfZnVsbCBwYWNrYWdlDQorCQlyZXR1cm4gc2xvdC5nZXRCYXNlX1Nsb3QoKS5nZXRPd25pbmdJbnN0YW5jZSgpLmdldE5hbWUoKSArICJfIiANCisJCQkJKyBzbG90LmdldEJhc2VfU2xvdCgpLmdldERlZmluaW5nRmVhdHVyZSgpLmdldE5hbWUoKSANCisJCQkJKyAiXyIgKyBnZXRPcE5hbWUoc3BlYy5nZXRDb250ZXh0KCkpKyJfdGFzayI7DQorCX0NCisJDQorCS8qKg0KKwkgKiBHZXRzIHRoZSBvcCBuYW1lLg0KKwkgKg0KKwkgKiBAcGFyYW0gb3AgdGhlIG9wDQorCSAqIEByZXR1cm4gdGhlIG9wIG5hbWUNCisJICovDQorCXByaXZhdGUgU3RyaW5nIGdldE9wTmFtZShCZWhhdmlvcmFsRmVhdHVyZSBvcCl7DQorCQlTdHJpbmdCdWlsZGVyIHNiID0gbmV3IFN0cmluZ0J1aWxkZXIob3AuZ2V0TmFtZSgpKTsNCisJCWZvciAoUGFyYW1ldGVyIHBhciA6IG9wLmdldE93bmVkUGFyYW1ldGVycygpKSB7DQorCQkJc2IuYXBwZW5kKCdfJykuYXBwZW5kKHBhci5nZXRUeXBlKCkuZ2V0TmFtZSgpKTsNCisJCX0NCisJCXJldHVybiBzYi50b1N0cmluZygpOw0KKwl9DQorCQ0KKwkvKioNCisJICogR2V0cyB0aGUgdHlwZS4NCisJICoNCisJICogQHJldHVybiB0aGUgdHlwZQ0KKwkgKi8NCisJcHVibGljIFN0cmluZyBnZXRUeXBlKCl7DQorCQlTdHJpbmcgdHlwZSA9ICJzaW1wbGVfb3BlcmF0aW9uIjsNCisJCWlmKFF1ZXJ5VXRpbHMuaXNPY2NLaW5kU3BvcmFkaWNPclBlcmlvZGljKHNwZWMuZ2V0T2NjS2luZCgpKSl7DQorCQkJdHlwZSA9ICJ0YXNrIjsNCisJCX0gZWxzZSBpZiAoUXVlcnlVdGlscy5pc0d1YXJkZWQoc3BlYykpew0KKwkJCXR5cGUgPSAic2hhcmVkX3Jlc291cmNlIjsNCisJCX0NCisJCXJldHVybiB0eXBlOw0KKwl9DQorCQ0KKwkvKiAobm9uLUphdmFkb2MpDQorCSAqIEBzZWUgamF2YS5sYW5nLk9iamVjdCNlcXVhbHMoamF2YS5sYW5nLk9iamVjdCkNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgYm9vbGVhbiBlcXVhbHMoT2JqZWN0IG9iaikgew0KKwkJaWYoIShvYmogaW5zdGFuY2VvZiBDSFRhc2spKSByZXR1cm4gZmFsc2U7DQorCQlpZihvYmogPT0gdGhpcykgcmV0dXJuIHRydWU7DQorCQkNCisJCUNIVGFzayB0aGF0ID0gKENIVGFzaykgb2JqOw0KKwkJcmV0dXJuIHRvU3RyaW5nKCkuZXF1YWxzKHRoYXQudG9TdHJpbmcoKSk7DQorCX0NCisJDQorCS8qIChub24tSmF2YWRvYykNCisJICogQHNlZSBqYXZhLmxhbmcuT2JqZWN0I2hhc2hDb2RlKCkNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgaW50IGhhc2hDb2RlKCkgew0KKwkJIHJldHVybiBBcnJheXMuaGFzaENvZGUobmV3IE9iamVjdFtdIHsNCisJCQkJIHNsb3QuZ2V0QmFzZV9TbG90KCkuZ2V0T3duaW5nSW5zdGFuY2UoKS5nZXROYW1lKCksDQorCQkJCSBzbG90LmdldEJhc2VfU2xvdCgpLmdldERlZmluaW5nRmVhdHVyZSgpLmdldE5hbWUoKSwNCisJCQkJIHNwZWMuZ2V0Q29udGV4dCgpLmdldE5hbWUoKQ0KKwkJICAgIH0pOw0KKwl9DQorfQ0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm11bHRpY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL211bHRpY29yZS9tb2RlbC9TdXBlcnRhc2tJbmZvLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tdWx0aWNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tdWx0aWNvcmUvbW9kZWwvU3VwZXJ0YXNrSW5mby5qYXZhCmluZGV4IDQ3NDJhYTkuLjc2NzJmNDIgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm11bHRpY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL211bHRpY29yZS9tb2RlbC9TdXBlcnRhc2tJbmZvLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbXVsdGljb3JlL21vZGVsL1N1cGVydGFza0luZm8uamF2YQpAQCAtMSwxMDQgKzEsMTExIEBACi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAtCi0gIC0gQ29weXJpZ2h0IChjKSAyMDE1LTIwMTYgVW5pdmVyc2l0eSBvZiBQYWRvdmEsIElUQUxZIC0gIEludGVjcyBTcEEgCi0gIC0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICAtIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICAtIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gIC0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAgLQotICAtIENvbnRyaWJ1dG9yczoKLSAgLQotICAtIEFsZXNzYW5kcm8gWm92aSBhem92aUBtYXRoLnVuaXBkLml0Ci0gIC0gU3RlZmFubyBQdXJpIHN0ZWZhbm8ucHVyaUBpbnRlY3MuaXQKLSAgLSBMYXVyYSBCYXJhY2NoaSBsYXVyYS5iYXJhY2NoaUBpbnRlY3MuaXQKLSAgLSBOaWNob2xhcyBQYWNpbmkgbmljaG9sYXMucGFjaW5pQGludGVjcy5pdCAgCi0gIC0KLSAgLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24gYW5kL29yIGluaXRpYWwgZG9jdW1lbnRhdGlvbgotICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL3BhY2thZ2Ugb3JnLnBvbGFyc3lzLmNoZXNzLm11bHRpY29yZS5tb2RlbDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLkluc3RhbmNlU3BlY2lmaWNhdGlvbjsKLQotLyoqCi0gKiBUaGUgQ2xhc3MgU3VwZXJ0YXNrSW5mby4KLSAqLwotcHVibGljIGNsYXNzIFN1cGVydGFza0luZm8gewotCi0JLyoqIFRoZSBuYW1lLiAqLwotCXByaXZhdGUgU3RyaW5nIG5hbWU7Ci0JCi0JLyoqIFRoZSBjYXBhY2l0eS4gKi8KLQlwcml2YXRlIGludCBjYXBhY2l0eTsKLQkKLQkvKiogVGhlIHByb2Nlc3NvciBpbnN0YW5jZS4gKi8KLQlwcml2YXRlIEluc3RhbmNlU3BlY2lmaWNhdGlvbiBwcm9jZXNzb3JJbnN0YW5jZTsKLQotCS8qKgotCSAqIEluc3RhbnRpYXRlcyBhIG5ldyBzdXBlcnRhc2sgaW5mby4KLQkgKgotCSAqIEBwYXJhbSBwcm9jZXNzb3JJbnN0YW5jZSB0aGUgcHJvY2Vzc29yIGluc3RhbmNlCi0JICogQHBhcmFtIG5hbWUgdGhlIG5hbWUKLQkgKiBAcGFyYW0gY2FwYWNpdHkgdGhlIGNhcGFjaXR5Ci0JICovCi0JcHVibGljIFN1cGVydGFza0luZm8oSW5zdGFuY2VTcGVjaWZpY2F0aW9uIHByb2Nlc3Nvckluc3RhbmNlLCBTdHJpbmcgbmFtZSwgZmxvYXQgY2FwYWNpdHkpIHsKLQkJc3VwZXIoKTsKLQkJdGhpcy5zZXROYW1lKG5hbWUpOwotCQl0aGlzLnNldENhcGFjaXR5KGNhcGFjaXR5KTsKLQkJdGhpcy5zZXRQcm9jZXNzb3JJbnN0YW5jZShwcm9jZXNzb3JJbnN0YW5jZSk7Ci0JfQotCi0JLyoqCi0JICogR2V0cyB0aGUgY2FwYWNpdHkuCi0JICoKLQkgKiBAcmV0dXJuIHRoZSBjYXBhY2l0eQotCSAqLwotCXB1YmxpYyBmbG9hdCBnZXRDYXBhY2l0eSgpIHsKLQkJcmV0dXJuIGNhcGFjaXR5OwotCX0KLQotCS8qKgotCSAqIENvbnZlcnQgY2FwYWNpdHkgZnJvbSBhIGZsb2F0IHRvIGEgaW50IHZhbHVlIHJlcHJlc2VudGluZyB0aGUgcGVyY2VudGFnZSBvZgotCSAqIHV0aWxpemF0aW9uIG9mIHRoZSBwcm9jZXNzb3IuCi0JICoKLQkgKiBAcGFyYW0gY2FwYWNpdHkgdGhlIG5ldyBjYXBhY2l0eQotCSAqLwotCXB1YmxpYyB2b2lkIHNldENhcGFjaXR5KGZsb2F0IGNhcGFjaXR5KSB7Ci0JCXRoaXMuY2FwYWNpdHkgPSBNYXRoLnJvdW5kKGNhcGFjaXR5KjEwMCk7Ci0JfQotCi0JLyoqCi0JICogR2V0cyB0aGUgbmFtZS4KLQkgKgotCSAqIEByZXR1cm4gdGhlIG5hbWUKLQkgKi8KLQlwdWJsaWMgU3RyaW5nIGdldE5hbWUoKSB7Ci0JCXJldHVybiBuYW1lOwotCX0KLQotCS8qKgotCSAqIFNldHMgdGhlIG5hbWUuCi0JICoKLQkgKiBAcGFyYW0gbmFtZSB0aGUgbmV3IG5hbWUKLQkgKi8KLQlwdWJsaWMgdm9pZCBzZXROYW1lKFN0cmluZyBuYW1lKSB7Ci0JCXRoaXMubmFtZSA9IG5hbWU7Ci0JfQotCi0JLyoqCi0JICogR2V0cyB0aGUgcHJvY2Vzc29yIGluc3RhbmNlLgotCSAqCi0JICogQHJldHVybiB0aGUgcHJvY2Vzc29yIGluc3RhbmNlCi0JICovCi0JcHVibGljIEluc3RhbmNlU3BlY2lmaWNhdGlvbiBnZXRQcm9jZXNzb3JJbnN0YW5jZSgpIHsKLQkJcmV0dXJuIHByb2Nlc3Nvckluc3RhbmNlOwotCX0KLQotCS8qKgotCSAqIFNldHMgdGhlIHByb2Nlc3NvciBpbnN0YW5jZS4KLQkgKgotCSAqIEBwYXJhbSBwcm9jZXNzb3JJbnN0YW5jZSB0aGUgbmV3IHByb2Nlc3NvciBpbnN0YW5jZQotCSAqLwotCXB1YmxpYyB2b2lkIHNldFByb2Nlc3Nvckluc3RhbmNlKEluc3RhbmNlU3BlY2lmaWNhdGlvbiBwcm9jZXNzb3JJbnN0YW5jZSkgewotCQl0aGlzLnByb2Nlc3Nvckluc3RhbmNlID0gcHJvY2Vzc29ySW5zdGFuY2U7Ci0JfQotCi19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgDQorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KKyAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorICAtDQorICAtIENvcHlyaWdodCAoYykgMjAxNS0yMDE2IFVuaXZlcnNpdHkgb2YgUGFkb3ZhLCBJVEFMWSAtICBJbnRlY3MgU3BBIA0KKyAgLSBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICAtIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KKyAgLSB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAgLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KKyAgLQ0KKyAgLSBDb250cmlidXRvcnM6DQorICAtDQorICAtIEFsZXNzYW5kcm8gWm92aSBhem92aUBtYXRoLnVuaXBkLml0DQorICAtIFN0ZWZhbm8gUHVyaSBzdGVmYW5vLnB1cmlAaW50ZWNzLml0DQorICAtIExhdXJhIEJhcmFjY2hpIGxhdXJhLmJhcmFjY2hpQGludGVjcy5pdA0KKyAgLSBOaWNob2xhcyBQYWNpbmkgbmljaG9sYXMucGFjaW5pQGludGVjcy5pdCAgDQorICAtDQorICAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbiBhbmQvb3IgaW5pdGlhbCBkb2N1bWVudGF0aW9uDQorICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL3BhY2thZ2Ugb3JnLnBvbGFyc3lzLmNoZXNzLm11bHRpY29yZS5tb2RlbDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuSW5zdGFuY2VTcGVjaWZpY2F0aW9uOw0KKw0KKy8qKg0KKyAqIFRoZSBDbGFzcyBTdXBlcnRhc2tJbmZvLg0KKyAqLw0KK3B1YmxpYyBjbGFzcyBTdXBlcnRhc2tJbmZvIHsNCisNCisJLyoqIFRoZSBuYW1lLiAqLw0KKwlwcml2YXRlIFN0cmluZyBuYW1lOw0KKwkNCisJLyoqIFRoZSBjYXBhY2l0eS4gKi8NCisJcHJpdmF0ZSBpbnQgY2FwYWNpdHk7DQorCQ0KKwkvKiogVGhlIHByb2Nlc3NvciBpbnN0YW5jZS4gKi8NCisJcHJpdmF0ZSBJbnN0YW5jZVNwZWNpZmljYXRpb24gcHJvY2Vzc29ySW5zdGFuY2U7DQorDQorCS8qKg0KKwkgKiBJbnN0YW50aWF0ZXMgYSBuZXcgc3VwZXJ0YXNrIGluZm8uDQorCSAqDQorCSAqIEBwYXJhbSBwcm9jZXNzb3JJbnN0YW5jZSB0aGUgcHJvY2Vzc29yIGluc3RhbmNlDQorCSAqIEBwYXJhbSBuYW1lIHRoZSBuYW1lDQorCSAqIEBwYXJhbSBjYXBhY2l0eSB0aGUgY2FwYWNpdHkNCisJICovDQorCXB1YmxpYyBTdXBlcnRhc2tJbmZvKEluc3RhbmNlU3BlY2lmaWNhdGlvbiBwcm9jZXNzb3JJbnN0YW5jZSwgU3RyaW5nIG5hbWUsIGZsb2F0IGNhcGFjaXR5KSB7DQorCQlzdXBlcigpOw0KKwkJdGhpcy5zZXROYW1lKG5hbWUpOw0KKwkJdGhpcy5zZXRDYXBhY2l0eShjYXBhY2l0eSk7DQorCQl0aGlzLnNldFByb2Nlc3Nvckluc3RhbmNlKHByb2Nlc3Nvckluc3RhbmNlKTsNCisJfQ0KKw0KKwkvKioNCisJICogR2V0cyB0aGUgY2FwYWNpdHkuDQorCSAqDQorCSAqIEByZXR1cm4gdGhlIGNhcGFjaXR5DQorCSAqLw0KKwlwdWJsaWMgZmxvYXQgZ2V0Q2FwYWNpdHkoKSB7DQorCQlyZXR1cm4gY2FwYWNpdHk7DQorCX0NCisNCisJLyoqDQorCSAqIENvbnZlcnQgY2FwYWNpdHkgZnJvbSBhIGZsb2F0IHRvIGEgaW50IHZhbHVlIHJlcHJlc2VudGluZyB0aGUgcGVyY2VudGFnZSBvZg0KKwkgKiB1dGlsaXphdGlvbiBvZiB0aGUgcHJvY2Vzc29yLg0KKwkgKg0KKwkgKiBAcGFyYW0gY2FwYWNpdHkgdGhlIG5ldyBjYXBhY2l0eQ0KKwkgKi8NCisJcHVibGljIHZvaWQgc2V0Q2FwYWNpdHkoZmxvYXQgY2FwYWNpdHkpIHsNCisJCXRoaXMuY2FwYWNpdHkgPSBNYXRoLnJvdW5kKGNhcGFjaXR5KjEwMCk7DQorCX0NCisNCisJLyoqDQorCSAqIEdldHMgdGhlIG5hbWUuDQorCSAqDQorCSAqIEByZXR1cm4gdGhlIG5hbWUNCisJICovDQorCXB1YmxpYyBTdHJpbmcgZ2V0TmFtZSgpIHsNCisJCXJldHVybiBuYW1lOw0KKwl9DQorDQorCS8qKg0KKwkgKiBTZXRzIHRoZSBuYW1lLg0KKwkgKg0KKwkgKiBAcGFyYW0gbmFtZSB0aGUgbmV3IG5hbWUNCisJICovDQorCXB1YmxpYyB2b2lkIHNldE5hbWUoU3RyaW5nIG5hbWUpIHsNCisJCXRoaXMubmFtZSA9IG5hbWU7DQorCX0NCisNCisJLyoqDQorCSAqIEdldHMgdGhlIHByb2Nlc3NvciBpbnN0YW5jZS4NCisJICoNCisJICogQHJldHVybiB0aGUgcHJvY2Vzc29yIGluc3RhbmNlDQorCSAqLw0KKwlwdWJsaWMgSW5zdGFuY2VTcGVjaWZpY2F0aW9uIGdldFByb2Nlc3Nvckluc3RhbmNlKCkgew0KKwkJcmV0dXJuIHByb2Nlc3Nvckluc3RhbmNlOw0KKwl9DQorDQorCS8qKg0KKwkgKiBTZXRzIHRoZSBwcm9jZXNzb3IgaW5zdGFuY2UuDQorCSAqDQorCSAqIEBwYXJhbSBwcm9jZXNzb3JJbnN0YW5jZSB0aGUgbmV3IHByb2Nlc3NvciBpbnN0YW5jZQ0KKwkgKi8NCisJcHVibGljIHZvaWQgc2V0UHJvY2Vzc29ySW5zdGFuY2UoSW5zdGFuY2VTcGVjaWZpY2F0aW9uIHByb2Nlc3Nvckluc3RhbmNlKSB7DQorCQl0aGlzLnByb2Nlc3Nvckluc3RhbmNlID0gcHJvY2Vzc29ySW5zdGFuY2U7DQorCX0NCisNCit9DQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbXVsdGljb3JlL21vZGVsL3BhY2thZ2UuaHRtbCBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm11bHRpY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL211bHRpY29yZS9tb2RlbC9wYWNrYWdlLmh0bWwKaW5kZXggN2Q3ZDU0Ni4uZmZhNmI5MyAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbXVsdGljb3JlL21vZGVsL3BhY2thZ2UuaHRtbAorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tdWx0aWNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tdWx0aWNvcmUvbW9kZWwvcGFja2FnZS5odG1sCkBAIC0xLDcgKzEsMTQgQEAKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorIyBDb3B5cmlnaHQgKEMpIDIwMjAgDQorIyBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorIyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCisjIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorIyBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+DQogPGh0bWw+DQogPGhlYWQ+PC9oZWFkPg0KIDxib2R5Pg0KICAgUHJvdmlkZXMuLi4NCiA8L2JvZHk+DQotPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKzwvaHRtbD4NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tdWx0aWNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tdWx0aWNvcmUvcGFja2FnZS5odG1sIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbXVsdGljb3JlL3BhY2thZ2UuaHRtbAppbmRleCA3ZDdkNTQ2Li5mZmE2YjkzIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tdWx0aWNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tdWx0aWNvcmUvcGFja2FnZS5odG1sCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm11bHRpY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL211bHRpY29yZS9wYWNrYWdlLmh0bWwKQEAgLTEsNyArMSwxNCBAQAorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisjIENvcHlyaWdodCAoQykgMjAyMCANCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisjIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KKyMgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisjIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiA8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4NCiA8aHRtbD4NCiA8aGVhZD48L2hlYWQ+DQogPGJvZHk+DQogICBQcm92aWRlcy4uLg0KIDwvYm9keT4NCi08L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorPC9odG1sPg0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm11bHRpY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL211bHRpY29yZS9wYXJ0aXRpb25pbmcvQmluLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tdWx0aWNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tdWx0aWNvcmUvcGFydGl0aW9uaW5nL0Jpbi5qYXZhCmluZGV4IDliNWI0MGIuLmUyYTMwNWQgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm11bHRpY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL211bHRpY29yZS9wYXJ0aXRpb25pbmcvQmluLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbXVsdGljb3JlL3BhcnRpdGlvbmluZy9CaW4uamF2YQpAQCAtMSwxMDAgKzEsMTA3IEBACi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAtCi0gIC0gQ29weXJpZ2h0IChjKSAyMDE1LTIwMTYgVW5pdmVyc2l0eSBvZiBQYWRvdmEsIElUQUxZIC0gIEludGVjcyBTcEEgCi0gIC0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICAtIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICAtIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gIC0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAgLQotICAtIENvbnRyaWJ1dG9yczoKLSAgLQotICAtIEFsZXNzYW5kcm8gWm92aSBhem92aUBtYXRoLnVuaXBkLml0Ci0gIC0gU3RlZmFubyBQdXJpIHN0ZWZhbm8ucHVyaUBpbnRlY3MuaXQKLSAgLSBMYXVyYSBCYXJhY2NoaSBsYXVyYS5iYXJhY2NoaUBpbnRlY3MuaXQKLSAgLSBOaWNob2xhcyBQYWNpbmkgbmljaG9sYXMucGFjaW5pQGludGVjcy5pdCAgCi0gIC0KLSAgLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24gYW5kL29yIGluaXRpYWwgZG9jdW1lbnRhdGlvbgotICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL3BhY2thZ2Ugb3JnLnBvbGFyc3lzLmNoZXNzLm11bHRpY29yZS5wYXJ0aXRpb25pbmc7Ci0KLS8qKgotICogVGhlIENsYXNzIEJpbi4KLSAqLwotcHVibGljIGNsYXNzIEJpbiB7Ci0JCi0JLyoqIFRoZSBpZC4gKi8KLQlwcml2YXRlIEludGVnZXIgaWQ7Ci0JCi0JLyoqIFRoZSBzaXplLiAqLwotCXByaXZhdGUgRmxvYXQgc2l6ZSA9IDEuMGY7IC8vIG9ubHkgaG9tb2dlbmVvdXMgbXVsdGlwcm9jZXNzaW5nIGluIENPTkNFUlRPCi0JCi0JLyoqIFRoZSBjYXBhY2l0eS4gKi8KLQlwcml2YXRlIEZsb2F0IGNhcGFjaXR5ID0gMC4wZjsKLQkKLQkvKiogVGhlIGxldmVsLiAqLwotCXByaXZhdGUgSW50ZWdlciBsZXZlbCA9IG5ldyBJbnRlZ2VyKC0xKTsgLy8gbmVlZGVkIGZvciBSVU4gcGFja2luZywgZGVmYXVsdCBpcyBsZWFmIG5vZGUKLQkKLQkvKioKLQkgKiBHZXRzIHRoZSBsZXZlbC4KLQkgKgotCSAqIEByZXR1cm4gdGhlIGxldmVsCi0JICovCi0JcHVibGljIEludGVnZXIgZ2V0TGV2ZWwoKSB7Ci0JCXJldHVybiBsZXZlbDsKLQl9Ci0KLQkvKioKLQkgKiBTZXRzIHRoZSBsZXZlbC4KLQkgKgotCSAqIEBwYXJhbSBsZXZlbCB0aGUgbmV3IGxldmVsCi0JICovCi0JcHVibGljIHZvaWQgc2V0TGV2ZWwoSW50ZWdlciBsZXZlbCkgewotCQl0aGlzLmxldmVsID0gbGV2ZWw7Ci0JfQotCi0JLyoqCi0JICogR2V0cyB0aGUgaWQuCi0JICoKLQkgKiBAcmV0dXJuIHRoZSBpZAotCSAqLwotCXB1YmxpYyBJbnRlZ2VyIGdldElkKCkgewotCQlyZXR1cm4gaWQ7Ci0JfQotCi0JLyoqCi0JICogU2V0cyB0aGUgY2FwYWNpdHkuCi0JICoKLQkgKiBAcGFyYW0gY2FwYWNpdHkgdGhlIG5ldyBjYXBhY2l0eQotCSAqLwotCXB1YmxpYyB2b2lkIHNldENhcGFjaXR5KEZsb2F0IGNhcGFjaXR5KSB7Ci0JCXRoaXMuY2FwYWNpdHkgPSBjYXBhY2l0eTsKLQl9Ci0KLQkvKioKLQkgKiBHZXRzIHRoZSBzaXplLgotCSAqCi0JICogQHJldHVybiB0aGUgc2l6ZQotCSAqLwotCXB1YmxpYyBGbG9hdCBnZXRTaXplKCkgewotCQlyZXR1cm4gc2l6ZTsKLQl9Ci0KLQkvKioKLQkgKiBHZXRzIHRoZSBjYXBhY2l0eS4KLQkgKgotCSAqIEByZXR1cm4gdGhlIGNhcGFjaXR5Ci0JICovCi0JcHVibGljIEZsb2F0IGdldENhcGFjaXR5KCkgewotCQlyZXR1cm4gY2FwYWNpdHk7Ci0JfQotCi0JLyoqCi0JICogSW5zdGFudGlhdGVzIGEgbmV3IGJpbi4KLQkgKgotCSAqIEBwYXJhbSBpZCB0aGUgaWQKLQkgKi8KLQlwdWJsaWMgQmluKEludGVnZXIgaWQpIHsKLQkJc3VwZXIoKTsKLQkJdGhpcy5pZCA9IGlkOwotCX0KLQotfQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgDQorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KKyAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorICAtDQorICAtIENvcHlyaWdodCAoYykgMjAxNS0yMDE2IFVuaXZlcnNpdHkgb2YgUGFkb3ZhLCBJVEFMWSAtICBJbnRlY3MgU3BBIA0KKyAgLSBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICAtIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KKyAgLSB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAgLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KKyAgLQ0KKyAgLSBDb250cmlidXRvcnM6DQorICAtDQorICAtIEFsZXNzYW5kcm8gWm92aSBhem92aUBtYXRoLnVuaXBkLml0DQorICAtIFN0ZWZhbm8gUHVyaSBzdGVmYW5vLnB1cmlAaW50ZWNzLml0DQorICAtIExhdXJhIEJhcmFjY2hpIGxhdXJhLmJhcmFjY2hpQGludGVjcy5pdA0KKyAgLSBOaWNob2xhcyBQYWNpbmkgbmljaG9sYXMucGFjaW5pQGludGVjcy5pdCAgDQorICAtDQorICAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbiBhbmQvb3IgaW5pdGlhbCBkb2N1bWVudGF0aW9uDQorICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL3BhY2thZ2Ugb3JnLnBvbGFyc3lzLmNoZXNzLm11bHRpY29yZS5wYXJ0aXRpb25pbmc7DQorDQorLyoqDQorICogVGhlIENsYXNzIEJpbi4NCisgKi8NCitwdWJsaWMgY2xhc3MgQmluIHsNCisJDQorCS8qKiBUaGUgaWQuICovDQorCXByaXZhdGUgSW50ZWdlciBpZDsNCisJDQorCS8qKiBUaGUgc2l6ZS4gKi8NCisJcHJpdmF0ZSBGbG9hdCBzaXplID0gMS4wZjsgLy8gb25seSBob21vZ2VuZW91cyBtdWx0aXByb2Nlc3NpbmcgaW4gQ09OQ0VSVE8NCisJDQorCS8qKiBUaGUgY2FwYWNpdHkuICovDQorCXByaXZhdGUgRmxvYXQgY2FwYWNpdHkgPSAwLjBmOw0KKwkNCisJLyoqIFRoZSBsZXZlbC4gKi8NCisJcHJpdmF0ZSBJbnRlZ2VyIGxldmVsID0gbmV3IEludGVnZXIoLTEpOyAvLyBuZWVkZWQgZm9yIFJVTiBwYWNraW5nLCBkZWZhdWx0IGlzIGxlYWYgbm9kZQ0KKwkNCisJLyoqDQorCSAqIEdldHMgdGhlIGxldmVsLg0KKwkgKg0KKwkgKiBAcmV0dXJuIHRoZSBsZXZlbA0KKwkgKi8NCisJcHVibGljIEludGVnZXIgZ2V0TGV2ZWwoKSB7DQorCQlyZXR1cm4gbGV2ZWw7DQorCX0NCisNCisJLyoqDQorCSAqIFNldHMgdGhlIGxldmVsLg0KKwkgKg0KKwkgKiBAcGFyYW0gbGV2ZWwgdGhlIG5ldyBsZXZlbA0KKwkgKi8NCisJcHVibGljIHZvaWQgc2V0TGV2ZWwoSW50ZWdlciBsZXZlbCkgew0KKwkJdGhpcy5sZXZlbCA9IGxldmVsOw0KKwl9DQorDQorCS8qKg0KKwkgKiBHZXRzIHRoZSBpZC4NCisJICoNCisJICogQHJldHVybiB0aGUgaWQNCisJICovDQorCXB1YmxpYyBJbnRlZ2VyIGdldElkKCkgew0KKwkJcmV0dXJuIGlkOw0KKwl9DQorDQorCS8qKg0KKwkgKiBTZXRzIHRoZSBjYXBhY2l0eS4NCisJICoNCisJICogQHBhcmFtIGNhcGFjaXR5IHRoZSBuZXcgY2FwYWNpdHkNCisJICovDQorCXB1YmxpYyB2b2lkIHNldENhcGFjaXR5KEZsb2F0IGNhcGFjaXR5KSB7DQorCQl0aGlzLmNhcGFjaXR5ID0gY2FwYWNpdHk7DQorCX0NCisNCisJLyoqDQorCSAqIEdldHMgdGhlIHNpemUuDQorCSAqDQorCSAqIEByZXR1cm4gdGhlIHNpemUNCisJICovDQorCXB1YmxpYyBGbG9hdCBnZXRTaXplKCkgew0KKwkJcmV0dXJuIHNpemU7DQorCX0NCisNCisJLyoqDQorCSAqIEdldHMgdGhlIGNhcGFjaXR5Lg0KKwkgKg0KKwkgKiBAcmV0dXJuIHRoZSBjYXBhY2l0eQ0KKwkgKi8NCisJcHVibGljIEZsb2F0IGdldENhcGFjaXR5KCkgew0KKwkJcmV0dXJuIGNhcGFjaXR5Ow0KKwl9DQorDQorCS8qKg0KKwkgKiBJbnN0YW50aWF0ZXMgYSBuZXcgYmluLg0KKwkgKg0KKwkgKiBAcGFyYW0gaWQgdGhlIGlkDQorCSAqLw0KKwlwdWJsaWMgQmluKEludGVnZXIgaWQpIHsNCisJCXN1cGVyKCk7DQorCQl0aGlzLmlkID0gaWQ7DQorCX0NCisNCit9DQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbXVsdGljb3JlL3BhcnRpdGlvbmluZy9CaW5QYWNrZXIuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm11bHRpY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL211bHRpY29yZS9wYXJ0aXRpb25pbmcvQmluUGFja2VyLmphdmEKaW5kZXggYTk3NjQwNy4uOThhY2VhMCAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbXVsdGljb3JlL3BhcnRpdGlvbmluZy9CaW5QYWNrZXIuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tdWx0aWNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tdWx0aWNvcmUvcGFydGl0aW9uaW5nL0JpblBhY2tlci5qYXZhCkBAIC0xLDM1ICsxLDQyIEBACi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAtCi0gIC0gQ29weXJpZ2h0IChjKSAyMDE1LTIwMTYgVW5pdmVyc2l0eSBvZiBQYWRvdmEsIElUQUxZIC0gIEludGVjcyBTcEEgCi0gIC0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICAtIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICAtIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gIC0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAgLQotICAtIENvbnRyaWJ1dG9yczoKLSAgLQotICAtIEFsZXNzYW5kcm8gWm92aSBhem92aUBtYXRoLnVuaXBkLml0Ci0gIC0gU3RlZmFubyBQdXJpIHN0ZWZhbm8ucHVyaUBpbnRlY3MuaXQKLSAgLSBMYXVyYSBCYXJhY2NoaSBsYXVyYS5iYXJhY2NoaUBpbnRlY3MuaXQKLSAgLSBOaWNob2xhcyBQYWNpbmkgbmljaG9sYXMucGFjaW5pQGludGVjcy5pdCAgCi0gIC0KLSAgLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24gYW5kL29yIGluaXRpYWwgZG9jdW1lbnRhdGlvbgotICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL3BhY2thZ2Ugb3JnLnBvbGFyc3lzLmNoZXNzLm11bHRpY29yZS5wYXJ0aXRpb25pbmc7Ci0KLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuTWFwOwotCi0vKioKLSAqIFRoZSBJbnRlcmZhY2UgQmluUGFja2VyLgotICovCi1wdWJsaWMgaW50ZXJmYWNlIEJpblBhY2tlciB7Ci0KLQkvKioKLQkgKiBQYWNrLgotCSAqCi0JICogQHBhcmFtIGJpbnMgdGhlIGJpbnMKLQkgKiBAcGFyYW0gdGFza3MgdGhlIHRhc2tzCi0JICogQHJldHVybiB0aGUgbWFwCi0JICovCi0JcHVibGljIE1hcDxCaW4sIExpc3Q8VGFzaz4+IHBhY2soTGlzdDxCaW4+IGJpbnMsIExpc3Q8VGFzaz4gdGFza3MpOwotfQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgDQorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KKyAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorICAtDQorICAtIENvcHlyaWdodCAoYykgMjAxNS0yMDE2IFVuaXZlcnNpdHkgb2YgUGFkb3ZhLCBJVEFMWSAtICBJbnRlY3MgU3BBIA0KKyAgLSBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICAtIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KKyAgLSB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAgLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KKyAgLQ0KKyAgLSBDb250cmlidXRvcnM6DQorICAtDQorICAtIEFsZXNzYW5kcm8gWm92aSBhem92aUBtYXRoLnVuaXBkLml0DQorICAtIFN0ZWZhbm8gUHVyaSBzdGVmYW5vLnB1cmlAaW50ZWNzLml0DQorICAtIExhdXJhIEJhcmFjY2hpIGxhdXJhLmJhcmFjY2hpQGludGVjcy5pdA0KKyAgLSBOaWNob2xhcyBQYWNpbmkgbmljaG9sYXMucGFjaW5pQGludGVjcy5pdCAgDQorICAtDQorICAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbiBhbmQvb3IgaW5pdGlhbCBkb2N1bWVudGF0aW9uDQorICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL3BhY2thZ2Ugb3JnLnBvbGFyc3lzLmNoZXNzLm11bHRpY29yZS5wYXJ0aXRpb25pbmc7DQorDQoraW1wb3J0IGphdmEudXRpbC5MaXN0Ow0KK2ltcG9ydCBqYXZhLnV0aWwuTWFwOw0KKw0KKy8qKg0KKyAqIFRoZSBJbnRlcmZhY2UgQmluUGFja2VyLg0KKyAqLw0KK3B1YmxpYyBpbnRlcmZhY2UgQmluUGFja2VyIHsNCisNCisJLyoqDQorCSAqIFBhY2suDQorCSAqDQorCSAqIEBwYXJhbSBiaW5zIHRoZSBiaW5zDQorCSAqIEBwYXJhbSB0YXNrcyB0aGUgdGFza3MNCisJICogQHJldHVybiB0aGUgbWFwDQorCSAqLw0KKwlwdWJsaWMgTWFwPEJpbiwgTGlzdDxUYXNrPj4gcGFjayhMaXN0PEJpbj4gYmlucywgTGlzdDxUYXNrPiB0YXNrcyk7DQorfQ0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm11bHRpY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL211bHRpY29yZS9wYXJ0aXRpb25pbmcvQmluUGFja2VyRmFjdG9yeS5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbXVsdGljb3JlL3BhcnRpdGlvbmluZy9CaW5QYWNrZXJGYWN0b3J5LmphdmEKaW5kZXggNDZkMmVjMy4uMTIzNzI1YyAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbXVsdGljb3JlL3BhcnRpdGlvbmluZy9CaW5QYWNrZXJGYWN0b3J5LmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbXVsdGljb3JlL3BhcnRpdGlvbmluZy9CaW5QYWNrZXJGYWN0b3J5LmphdmEKQEAgLTEsMTc1ICsxLDE4MiBAQAotcGFja2FnZSBvcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlLnBhcnRpdGlvbmluZzsKLQotaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLkFycmF5czsKLWltcG9ydCBqYXZhLnV0aWwuQ29tcGFyYXRvcjsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuTWFwOwotaW1wb3J0IGphdmEudXRpbC5NYXAuRW50cnk7Ci0KLS8qKgotICogRmFjdG9yeSBmb3IgYmluIHBhY2tpbmcgYWxnb3JpdGhtcy4KLSAqIEBhdXRob3IgYW5kcmVhCi0gKgotICovCi1wdWJsaWMgY2xhc3MgQmluUGFja2VyRmFjdG9yeSB7Ci0JCi0vKioKLSAqIEdldHMgdGhlIGJpbiBwYWNrZXIuCi0gKgotICogQHBhcmFtIGhldXJpc3RpYyB0aGUgaGV1cmlzdGljCi0gKiBAcmV0dXJuIHRoZSBiaW4gcGFja2VyCi0gKi8KLXB1YmxpYyBzdGF0aWMgQmluUGFja2VyIGdldEJpblBhY2tlcihIZXVyaXN0aWMgaGV1cmlzdGljKXsKLQkJCi0JCUJpblBhY2tlciBwYWNrZXI7Ci0JCXN3aXRjaChoZXVyaXN0aWMpewotCQljYXNlIFdPUlNUX0ZJVDoKLQkJCXBhY2tlciA9IG5ldyBXb3JzdEZpdEJpblBhY2tlcigpOwotCQkJYnJlYWs7Ci0JCWRlZmF1bHQ6Ci0JCQlwYWNrZXIgPSBuZXcgV29yc3RGaXRCaW5QYWNrZXIoKTsKLQkJCWJyZWFrOwotCQl9Ci0JCXJldHVybiBwYWNrZXI7Ci0JfQotCQotCQotCS8qKgotCSAqIFRoZSBtYWluIG1ldGhvZC4KLQkgKgotCSAqIEBwYXJhbSBhcmdzIHRoZSBhcmd1bWVudHMKLQkgKi8KLQlwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKXsKLQkJCi0JCWludCBucl9iaW5zID0gMjsKLQkJTGlzdDxCaW4+IGFsbEJpbnMgPSBuZXcgQXJyYXlMaXN0PEJpbj4oKTsKLQkJTGlzdDxUYXNrPiBhbGxUYXNrcyA9IG5ldyBBcnJheUxpc3Q8VGFzaz4oKTsKLQkJCi0KLS8vCQlhbGxUYXNrcy5hZGQobmV3IFRhc2soIlRhc2sxIiwgMjAuMGYsIDEwMC4wZiwgMTAwLjBmLCAwLjBmLCBudWxsKSk7Ci0vLy8vCQlhbGxUYXNrcy5hZGQobmV3IFRhc2soIlRhc2syIiwgMTUuMGYsIDEwMC4wZiwgMTAwLjBmLCAwLjBmLCBudWxsKSk7Ci0vLy8vCQlhbGxUYXNrcy5hZGQobmV3IFRhc2soIlRhc2syMiIsIDE1LjBmLCAxMDAuMGYsIDEwMC4wZiwgMC4wZiwgbnVsbCkpOwotLy8JCWFsbFRhc2tzLmFkZChuZXcgVGFzaygiVGFzazExIiwgMjUuMGYsIDEwMC4wZiwgMTAwLjBmLCAwLjBmLCBudWxsKSk7Ci0vLwkJYWxsVGFza3MuYWRkKG5ldyBUYXNrKCJUYXNrMyIsIDg1LjBmLCAxMDAuMGYsIDEwMC4wZiwgMC4wZiwgbnVsbCkpOwotLy8JCWFsbFRhc2tzLmFkZChuZXcgVGFzaygiVGFzazQiLCA4MC4wZiwgMTAwLjBmLCAxMDAuMGYsIDAuMGYsIG51bGwpKTsKLQkJCi0JCS8vIDMgbGV2ZWxzIGluIHRoZSByZWR1Y3Rpb24gdHJlZQotCQlhbGxUYXNrcy5hZGQobmV3IFRhc2soIlRhc2sxIiwgNjAuMGYsIDEwMC4wZiwgMTAwLjBmLCAwLjBmLCBudWxsKSk7Ci0JCWFsbFRhc2tzLmFkZChuZXcgVGFzaygiVGFzazIiLCA2MC4wZiwgMTAwLjBmLCAxMDAuMGYsIDAuMGYsIG51bGwpKTsKLQkJYWxsVGFza3MuYWRkKG5ldyBUYXNrKCJUYXNrMyIsIDMwLjBmLCAxMDAuMGYsIDEwMC4wZiwgMC4wZiwgbnVsbCkpOwotCQlhbGxUYXNrcy5hZGQobmV3IFRhc2soIlRhc2s0IiwgMzAuMGYsIDEwMC4wZiwgMTAwLjBmLCAwLjBmLCBudWxsKSk7Ci0JCWFsbFRhc2tzLmFkZChuZXcgVGFzaygiVGFzazUiLCA2MC4wZiwgMTAwLjBmLCAxMDAuMGYsIDAuMGYsIG51bGwpKTsKLQkJYWxsVGFza3MuYWRkKG5ldyBUYXNrKCJUYXNrNiIsIDMwLjBmLCAxMDAuMGYsIDEwMC4wZiwgMC4wZiwgbnVsbCkpOwotCQlhbGxUYXNrcy5hZGQobmV3IFRhc2soIlRhc2s3IiwgMzAuMGYsIDEwMC4wZiwgMTAwLjBmLCAwLjBmLCBudWxsKSk7Ci0JCWFsbFRhc2tzLmFkZChuZXcgVGFzaygiVGFzazgiLCAzMC4wZiwgMTAwLjBmLCAxMDAuMGYsIDAuMGYsIG51bGwpKTsKLQkJYWxsVGFza3MuYWRkKG5ldyBUYXNrKCJUYXNrOSIsIDYwLjBmLCAxMDAuMGYsIDEwMC4wZiwgMC4wZiwgbnVsbCkpOwotCQkKLQkJTWFwPEJpbiwgTGlzdDxUYXNrPj4gZmlyc3RQYWNraW5nID0gQmluUGFja2VyRmFjdG9yeS5nZXRCaW5QYWNrZXIoSGV1cmlzdGljLldPUlNUX0ZJVCkucGFjayhhbGxCaW5zLCBhbGxUYXNrcyk7Ci0JCWZvcihqYXZhLnV0aWwuTWFwLkVudHJ5PEJpbiwgTGlzdDxUYXNrPj4gcm93IDogZmlyc3RQYWNraW5nLmVudHJ5U2V0KCkpewotCQkJU3lzdGVtLm91dC5wcmludCgiTEVWRUwgIityb3cuZ2V0S2V5KCkuZ2V0TGV2ZWwoKSsiLSIrcm93LmdldEtleSgpLmdldElkKCkrIihVPSIrcm93LmdldEtleSgpLmdldENhcGFjaXR5KCkrIikgLT4geyIpOwotCQkJZm9yKFRhc2sgdCA6IHJvdy5nZXRWYWx1ZSgpKSBTeXN0ZW0ub3V0LnByaW50KCIgIit0LmdldElkKCkrIiwiKTsKLQkJCVN5c3RlbS5vdXQucHJpbnRsbigifSIpOwotCQl9Ci0JCWlmKGZpcnN0UGFja2luZy5zaXplKCkgPiBhbGxCaW5zLnNpemUoKSl7Ci0JCQlTeXN0ZW0ub3V0LnByaW50bG4oIlN0YXJ0aW5nIFJVTiBwYWNraW5nIik7Ci0JCQlhbGxUYXNrcyA9IG5ldyBBcnJheUxpc3Q8VGFzaz4oKTsKLQkJCWZvcihCaW4gYmluIDogZmlyc3RQYWNraW5nLmtleVNldCgpKQotCQkJCWFsbFRhc2tzLmFkZChuZXcgVGFzayhiaW4uZ2V0SWQoKS50b1N0cmluZygpLCBiaW4uZ2V0Q2FwYWNpdHkoKSkpOwotCQkJTWFwPEJpbiwgTGlzdDxUYXNrPj4gcmVkdWN0aW9uVHJlZSA9IG5ldyBSVU5SZWR1Y3Rpb24oKS5wYWNrKG51bGwsIGFsbFRhc2tzKTsKLQkJCWZvcihqYXZhLnV0aWwuTWFwLkVudHJ5PEJpbiwgTGlzdDxUYXNrPj4gcm93IDogcmVkdWN0aW9uVHJlZS5lbnRyeVNldCgpKXsKLQkJCQlTeXN0ZW0ub3V0LnByaW50KCJMRVZFTCAiK3Jvdy5nZXRLZXkoKS5nZXRMZXZlbCgpKyItIityb3cuZ2V0S2V5KCkuZ2V0SWQoKSsiKFU9Iityb3cuZ2V0S2V5KCkuZ2V0Q2FwYWNpdHkoKSsiKSAtPiB7Iik7Ci0JCQkJZm9yKFRhc2sgdCA6IHJvdy5nZXRWYWx1ZSgpKSBTeXN0ZW0ub3V0LnByaW50KCIgIit0LmdldElkKCkrIiwiKTsKLQkJCQlTeXN0ZW0ub3V0LnByaW50bG4oIn0iKTsKLQkJCX0KLQkJCXByaW50TUFTVGlucHV0KGZpcnN0UGFja2luZywgcmVkdWN0aW9uVHJlZSk7Ci0JCX0KLQl9Ci0JCi0JLyoqCi0JICogUHJpbnRzIHRoZSBNQVMgdGlucHV0LgotCSAqCi0JICogQHBhcmFtIGZpcnN0UGFjayB0aGUgZmlyc3QgcGFjawotCSAqIEBwYXJhbSByZWR1Y3Rpb25UcmVlIHRoZSByZWR1Y3Rpb24gdHJlZQotCSAqLwotCXByaXZhdGUgc3RhdGljIHZvaWQgcHJpbnRNQVNUaW5wdXQoTWFwPEJpbiwgTGlzdDxUYXNrPj4gZmlyc3RQYWNrLCBNYXA8QmluLCBMaXN0PFRhc2s+PiByZWR1Y3Rpb25UcmVlKXsKLQkJT2JqZWN0W10gZmlyc3RQYWNrU29ydGVkID0gZmlyc3RQYWNrLmVudHJ5U2V0KCkudG9BcnJheSgpOwotCQlBcnJheXMuc29ydChmaXJzdFBhY2tTb3J0ZWQsIG5ldyBDb21wYXJhdG9yPE9iamVjdD4oKSB7Ci0KLQkJCUBPdmVycmlkZQotCQkJcHVibGljIGludCBjb21wYXJlKE9iamVjdCBvMSwgT2JqZWN0IG8yKSB7Ci0JCQkJaWYoKChFbnRyeTxCaW4sIExpc3Q8VGFzaz4+KW8xKS5nZXRLZXkoKS5nZXRJZCgpPigoRW50cnk8QmluLCBMaXN0PFRhc2s+PilvMikuZ2V0S2V5KCkuZ2V0SWQoKSkKLQkJCQkJcmV0dXJuIDE7Ci0JCQkJZWxzZSBpZiAoKChFbnRyeTxCaW4sIExpc3Q8VGFzaz4+KW8xKS5nZXRLZXkoKS5nZXRJZCgpPCgoRW50cnk8QmluLCBMaXN0PFRhc2s+PilvMikuZ2V0S2V5KCkuZ2V0SWQoKSkKLQkJCQkJcmV0dXJuIC0xOwotCQkJCWVsc2UKLQkJCQkJcmV0dXJuIDA7Ci0JCX19KTsKLQkJCi0vLwkJZm9yKGludCBpPTA7IGk8Zmlyc3RQYWNrU29ydGVkLmxlbmd0aDsgaSsrKQotLy8JCQlTeXN0ZW0ub3V0LnByaW50bG4oKChFbnRyeTxCaW4sIExpc3Q8VGFzaz4+KWZpcnN0UGFja1NvcnRlZFtpXSkuZ2V0S2V5KCkuZ2V0SWQoKSk7Ci0JCQotCQlPYmplY3RbXSBhbGxCaW5zID0gcmVkdWN0aW9uVHJlZS5rZXlTZXQoKS50b0FycmF5KCk7Ci0JCUFycmF5cy5zb3J0KGFsbEJpbnMsIG5ldyBDb21wYXJhdG9yPE9iamVjdD4oKSB7Ci0KLQkJCQlAT3ZlcnJpZGUKLQkJCQlwdWJsaWMgaW50IGNvbXBhcmUoT2JqZWN0IG8xLCBPYmplY3QgbzIpIHsKLQkJCQkJaWYoKChCaW4pbzEpLmdldExldmVsKCk+KChCaW4pbzIpLmdldExldmVsKCkpCi0JCQkJCQlyZXR1cm4gLTE7Ci0JCQkJCWVsc2UgaWYgKCgoQmluKW8xKS5nZXRMZXZlbCgpPCgoQmluKW8yKS5nZXRMZXZlbCgpKQotCQkJCQkJcmV0dXJuIDE7Ci0JCQkJCWVsc2UKLQkJCQkJCXJldHVybiAwOwotCQkJfX0pOwotCQkKLQkJLy8gREVQVEgtRklSU1QgcHJpbnQKLQkJLy8gcm9vdCBsZXZlbAotCQlpbnQgbWF4TGV2ZWwgPSAoKEJpbilhbGxCaW5zWzBdKS5nZXRMZXZlbCgpOwotCQlTeXN0ZW0ub3V0LnByaW50bG4oIi0tIFByaW1hcnkgU2NoZWR1bGVyc1xuIik7Ci0JCVN5c3RlbS5vdXQucHJpbnRsbigiU2NoZWR1bGVyICgiKTsKLQkJU3lzdGVtLm91dC5wcmludGxuKCIJVHlwZQk9PiBQcmltYXJ5X1NjaGVkdWxlciwiKTsKLQkJU3lzdGVtLm91dC5wcmludGxuKCIJTmFtZQk9PiBTY2hlZHVsZXJfMSwiKTsKLQkJU3lzdGVtLm91dC5wcmludGxuKCIJUG9saWN5CT0+ICggVHlwZSA9PiBSVU4gKSwiKTsKLQkJU3lzdGVtLm91dC5wcmludGxuKCIJSG9zdAk9PiBNdWx0aWNvcmVfMSApOyIpOy8vVE9ETzogZGVwZW5kcyBvbiBDSFJUIHNwZWNpZmljYXRpb24KLQkJU3lzdGVtLm91dC5wcmludGxuKCJcbi0tIFByaW1hcnkgU2NoZWR1bGluZyBTZXJ2ZXJzIGFuZCBTZWNvbmRhcnkgU2NoZWR1bGVyc1xuIik7Ci0JCWludCBpbmRleFN1cGVydGFzayA9MDsKLQkJLy8gYWxsIGxldmVscyBvZiB0aGUgdHJlZSBpbiB0aGUgaW50ZXJ2YWwgKHJvb3QsMF0KLQkJZm9yKGludCBpPTE7IChpPGFsbEJpbnMubGVuZ3RoKSYmKCgoQmluKWFsbEJpbnNbaV0pLmdldExldmVsKCk+PTApOyBpKyspewotCQkJU3lzdGVtLm91dC5wcmludGxuKCItLSoqKioqKioqKioqKioqKiBCUkFOQ0ggKioqKioqKioqKioqKioqIik7Ci0JCQlTeXN0ZW0ub3V0LnByaW50bG4oIlNjaGVkdWxpbmdfU2VydmVyICgiKTsKLQkJCVN5c3RlbS5vdXQucHJpbnRsbigiCVR5cGUJCQkJPT4gUmVndWxhciwiKTsKLQkJCVN5c3RlbS5vdXQucHJpbnRsbigiCU5hbWUJCQkJPT4gU3VwZXJUYXNrXyIraW5kZXhTdXBlcnRhc2srIiwiKTsKLQkJCVN5c3RlbS5vdXQucHJpbnRsbigiCVNlcnZlcl9TY2hlZF9wYXJhbWV0ZXJzCQk9PiAoIFR5cGUgPT4gUlVOX1N1cGVydGFzaywiKTsKLQkJCVN5c3RlbS5vdXQucHJpbnRsbigiCQkJCQkgICAgIFV0aWxpemF0aW9uID0+ICIrKChCaW4pYWxsQmluc1tpXSkuZ2V0Q2FwYWNpdHkoKSsiICksIik7IC8vRklYTUU6IHV0aWxpemF0aW9uIGlzIG5vdCBleHByZXNzZWQgYXMgVSBpbiBHZW9mZnJleSdzIGV4YW1wbGUKLQkJCVN5c3RlbS5vdXQucHJpbnRsbigiCVNjaGVkdWxlcgkJCT0+IFNjaGVkdWxlcl8xICk7Iik7Ci0JCQlTeXN0ZW0ub3V0LnByaW50bG4oKTsKLQkJCVN5c3RlbS5vdXQucHJpbnRsbigiU2NoZWR1bGVyICgiKTsKLQkJCVN5c3RlbS5vdXQucHJpbnRsbigiCVR5cGUJPT4gU2Vjb25kYXJ5X1NjaGVkdWxlciwiKTsKLQkJCVN5c3RlbS5vdXQucHJpbnRsbigiCU5hbWUJPT4gU2Vjb25kYXJ5U2NoZWR1bGVyXyIraW5kZXhTdXBlcnRhc2srIiwiKTsKLQkJCVN5c3RlbS5vdXQucHJpbnRsbigiCVBvbGljeQk9PiAoIAlUeXBlCT0+IEVERiwiKTsKLQkJCVN5c3RlbS5vdXQucHJpbnRsbigiCQkJV29yc3RfQ29udGV4dF9Td2l0Y2gJPT4gMjAgKSwiKTsvL0ZJWE1FOiBiYXNlZCBvbiBDb21wYWduaW4gcGFwZXIgYXQgRUNSVFMyMDE0Ci0JCQlTeXN0ZW0ub3V0LnByaW50bG4oIglTZXJ2ZXIJPT4gU3VwZXJUYXNrXyIraW5kZXhTdXBlcnRhc2srIiApOyIpOwotCQkJU3lzdGVtLm91dC5wcmludGxuKCk7Ci0JCQkvLyBmaXJzdCBwYWNrOiBwcmludCBsZWFmIG5vZGVzCi0JCQlpZigoKEJpbilhbGxCaW5zW2ldKS5nZXRMZXZlbCgpPT0wKXsKLQkJCQlMaXN0PFRhc2s+IHRhc2tzID0gcmVkdWN0aW9uVHJlZS5nZXQoKChCaW4pYWxsQmluc1tpXSkpOwotCQkJCWZvcihUYXNrIHRhc2sgOiB0YXNrcyl7Ci0JCQkJCUxpc3Q8VGFzaz4gbGVhdmVzID0gKChFbnRyeTxCaW4sIExpc3Q8VGFzaz4+KWZpcnN0UGFja1NvcnRlZFtuZXcgSW50ZWdlcih0YXNrLmdldElkKCkpXSkuZ2V0VmFsdWUoKTsKLQkJCQkJZm9yKFRhc2sgbGVhZiA6IGxlYXZlcyl7Ci0JCQkJCQlTeXN0ZW0ub3V0LnByaW50bG4oIlNjaGVkdWxpbmdfU2VydmVyICgiKTsKLQkJCQkJCVN5c3RlbS5vdXQucHJpbnRsbigiCVR5cGUJCQkJPT4gUmVndWxhciwiKTsKLQkJCQkJCVN5c3RlbS5vdXQucHJpbnRsbigiCU5hbWUgCQkJCT0+ICIrbGVhZi5nZXRJZCgpKyIsIik7Ci0JCQkJCQlTeXN0ZW0ub3V0LnByaW50bG4oIglTZXJ2ZXJfU2NoZWRfUGFyYW1ldGVycwkJPT4gKCIpOwotCQkJCQkJU3lzdGVtLm91dC5wcmludGxuKCIJCVR5cGUJCQk9PiBFREZfcG9saWN5LCIpOwotCQkJCQkJU3lzdGVtLm91dC5wcmludGxuKCIJCURlYWRsaW5lCQk9PiAiK2xlYWYuZ2V0VCgpKyIsIik7Ci0JCQkJCQlTeXN0ZW0ub3V0LnByaW50bG4oIiAgICAgICAgICAgICAgICBQcmVhc3NpZ25lZCAgICAgICAgICAgICA9PiBObyksIik7Ci0JCQkJCQlTeXN0ZW0ub3V0LnByaW50bG4oIglTY2hlZHVsZXIJCQk9PiBTZWNvbmRhcnlTY2hlZHVsZXJfIitpbmRleFN1cGVydGFzaysiKTsiKTsKLQkJCQkJCVN5c3RlbS5vdXQucHJpbnRsbigpOwotCQkJCQl9Ci0JCQkJfQotCQkJfQotCQkJaW5kZXhTdXBlcnRhc2srKzsKLQkJfQkJCi0JfQotCi19CisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqIENvcHlyaWdodCAoQykgMjAyMCANCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQorICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorcGFja2FnZSBvcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlLnBhcnRpdGlvbmluZzsNCisNCitpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsNCitpbXBvcnQgamF2YS51dGlsLkFycmF5czsNCitpbXBvcnQgamF2YS51dGlsLkNvbXBhcmF0b3I7DQoraW1wb3J0IGphdmEudXRpbC5MaXN0Ow0KK2ltcG9ydCBqYXZhLnV0aWwuTWFwOw0KK2ltcG9ydCBqYXZhLnV0aWwuTWFwLkVudHJ5Ow0KKw0KKy8qKg0KKyAqIEZhY3RvcnkgZm9yIGJpbiBwYWNraW5nIGFsZ29yaXRobXMuDQorICogQGF1dGhvciBhbmRyZWENCisgKg0KKyAqLw0KK3B1YmxpYyBjbGFzcyBCaW5QYWNrZXJGYWN0b3J5IHsNCisJDQorLyoqDQorICogR2V0cyB0aGUgYmluIHBhY2tlci4NCisgKg0KKyAqIEBwYXJhbSBoZXVyaXN0aWMgdGhlIGhldXJpc3RpYw0KKyAqIEByZXR1cm4gdGhlIGJpbiBwYWNrZXINCisgKi8NCitwdWJsaWMgc3RhdGljIEJpblBhY2tlciBnZXRCaW5QYWNrZXIoSGV1cmlzdGljIGhldXJpc3RpYyl7DQorCQkNCisJCUJpblBhY2tlciBwYWNrZXI7DQorCQlzd2l0Y2goaGV1cmlzdGljKXsNCisJCWNhc2UgV09SU1RfRklUOg0KKwkJCXBhY2tlciA9IG5ldyBXb3JzdEZpdEJpblBhY2tlcigpOw0KKwkJCWJyZWFrOw0KKwkJZGVmYXVsdDoNCisJCQlwYWNrZXIgPSBuZXcgV29yc3RGaXRCaW5QYWNrZXIoKTsNCisJCQlicmVhazsNCisJCX0NCisJCXJldHVybiBwYWNrZXI7DQorCX0NCisJDQorCQ0KKwkvKioNCisJICogVGhlIG1haW4gbWV0aG9kLg0KKwkgKg0KKwkgKiBAcGFyYW0gYXJncyB0aGUgYXJndW1lbnRzDQorCSAqLw0KKwlwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKXsNCisJCQ0KKwkJaW50IG5yX2JpbnMgPSAyOw0KKwkJTGlzdDxCaW4+IGFsbEJpbnMgPSBuZXcgQXJyYXlMaXN0PEJpbj4oKTsNCisJCUxpc3Q8VGFzaz4gYWxsVGFza3MgPSBuZXcgQXJyYXlMaXN0PFRhc2s+KCk7DQorCQkNCisNCisvLwkJYWxsVGFza3MuYWRkKG5ldyBUYXNrKCJUYXNrMSIsIDIwLjBmLCAxMDAuMGYsIDEwMC4wZiwgMC4wZiwgbnVsbCkpOw0KKy8vLy8JCWFsbFRhc2tzLmFkZChuZXcgVGFzaygiVGFzazIiLCAxNS4wZiwgMTAwLjBmLCAxMDAuMGYsIDAuMGYsIG51bGwpKTsNCisvLy8vCQlhbGxUYXNrcy5hZGQobmV3IFRhc2soIlRhc2syMiIsIDE1LjBmLCAxMDAuMGYsIDEwMC4wZiwgMC4wZiwgbnVsbCkpOw0KKy8vCQlhbGxUYXNrcy5hZGQobmV3IFRhc2soIlRhc2sxMSIsIDI1LjBmLCAxMDAuMGYsIDEwMC4wZiwgMC4wZiwgbnVsbCkpOw0KKy8vCQlhbGxUYXNrcy5hZGQobmV3IFRhc2soIlRhc2szIiwgODUuMGYsIDEwMC4wZiwgMTAwLjBmLCAwLjBmLCBudWxsKSk7DQorLy8JCWFsbFRhc2tzLmFkZChuZXcgVGFzaygiVGFzazQiLCA4MC4wZiwgMTAwLjBmLCAxMDAuMGYsIDAuMGYsIG51bGwpKTsNCisJCQ0KKwkJLy8gMyBsZXZlbHMgaW4gdGhlIHJlZHVjdGlvbiB0cmVlDQorCQlhbGxUYXNrcy5hZGQobmV3IFRhc2soIlRhc2sxIiwgNjAuMGYsIDEwMC4wZiwgMTAwLjBmLCAwLjBmLCBudWxsKSk7DQorCQlhbGxUYXNrcy5hZGQobmV3IFRhc2soIlRhc2syIiwgNjAuMGYsIDEwMC4wZiwgMTAwLjBmLCAwLjBmLCBudWxsKSk7DQorCQlhbGxUYXNrcy5hZGQobmV3IFRhc2soIlRhc2szIiwgMzAuMGYsIDEwMC4wZiwgMTAwLjBmLCAwLjBmLCBudWxsKSk7DQorCQlhbGxUYXNrcy5hZGQobmV3IFRhc2soIlRhc2s0IiwgMzAuMGYsIDEwMC4wZiwgMTAwLjBmLCAwLjBmLCBudWxsKSk7DQorCQlhbGxUYXNrcy5hZGQobmV3IFRhc2soIlRhc2s1IiwgNjAuMGYsIDEwMC4wZiwgMTAwLjBmLCAwLjBmLCBudWxsKSk7DQorCQlhbGxUYXNrcy5hZGQobmV3IFRhc2soIlRhc2s2IiwgMzAuMGYsIDEwMC4wZiwgMTAwLjBmLCAwLjBmLCBudWxsKSk7DQorCQlhbGxUYXNrcy5hZGQobmV3IFRhc2soIlRhc2s3IiwgMzAuMGYsIDEwMC4wZiwgMTAwLjBmLCAwLjBmLCBudWxsKSk7DQorCQlhbGxUYXNrcy5hZGQobmV3IFRhc2soIlRhc2s4IiwgMzAuMGYsIDEwMC4wZiwgMTAwLjBmLCAwLjBmLCBudWxsKSk7DQorCQlhbGxUYXNrcy5hZGQobmV3IFRhc2soIlRhc2s5IiwgNjAuMGYsIDEwMC4wZiwgMTAwLjBmLCAwLjBmLCBudWxsKSk7DQorCQkNCisJCU1hcDxCaW4sIExpc3Q8VGFzaz4+IGZpcnN0UGFja2luZyA9IEJpblBhY2tlckZhY3RvcnkuZ2V0QmluUGFja2VyKEhldXJpc3RpYy5XT1JTVF9GSVQpLnBhY2soYWxsQmlucywgYWxsVGFza3MpOw0KKwkJZm9yKGphdmEudXRpbC5NYXAuRW50cnk8QmluLCBMaXN0PFRhc2s+PiByb3cgOiBmaXJzdFBhY2tpbmcuZW50cnlTZXQoKSl7DQorCQkJU3lzdGVtLm91dC5wcmludCgiTEVWRUwgIityb3cuZ2V0S2V5KCkuZ2V0TGV2ZWwoKSsiLSIrcm93LmdldEtleSgpLmdldElkKCkrIihVPSIrcm93LmdldEtleSgpLmdldENhcGFjaXR5KCkrIikgLT4geyIpOw0KKwkJCWZvcihUYXNrIHQgOiByb3cuZ2V0VmFsdWUoKSkgU3lzdGVtLm91dC5wcmludCgiICIrdC5nZXRJZCgpKyIsIik7DQorCQkJU3lzdGVtLm91dC5wcmludGxuKCJ9Iik7DQorCQl9DQorCQlpZihmaXJzdFBhY2tpbmcuc2l6ZSgpID4gYWxsQmlucy5zaXplKCkpew0KKwkJCVN5c3RlbS5vdXQucHJpbnRsbigiU3RhcnRpbmcgUlVOIHBhY2tpbmciKTsNCisJCQlhbGxUYXNrcyA9IG5ldyBBcnJheUxpc3Q8VGFzaz4oKTsNCisJCQlmb3IoQmluIGJpbiA6IGZpcnN0UGFja2luZy5rZXlTZXQoKSkNCisJCQkJYWxsVGFza3MuYWRkKG5ldyBUYXNrKGJpbi5nZXRJZCgpLnRvU3RyaW5nKCksIGJpbi5nZXRDYXBhY2l0eSgpKSk7DQorCQkJTWFwPEJpbiwgTGlzdDxUYXNrPj4gcmVkdWN0aW9uVHJlZSA9IG5ldyBSVU5SZWR1Y3Rpb24oKS5wYWNrKG51bGwsIGFsbFRhc2tzKTsNCisJCQlmb3IoamF2YS51dGlsLk1hcC5FbnRyeTxCaW4sIExpc3Q8VGFzaz4+IHJvdyA6IHJlZHVjdGlvblRyZWUuZW50cnlTZXQoKSl7DQorCQkJCVN5c3RlbS5vdXQucHJpbnQoIkxFVkVMICIrcm93LmdldEtleSgpLmdldExldmVsKCkrIi0iK3Jvdy5nZXRLZXkoKS5nZXRJZCgpKyIoVT0iK3Jvdy5nZXRLZXkoKS5nZXRDYXBhY2l0eSgpKyIpIC0+IHsiKTsNCisJCQkJZm9yKFRhc2sgdCA6IHJvdy5nZXRWYWx1ZSgpKSBTeXN0ZW0ub3V0LnByaW50KCIgIit0LmdldElkKCkrIiwiKTsNCisJCQkJU3lzdGVtLm91dC5wcmludGxuKCJ9Iik7DQorCQkJfQ0KKwkJCXByaW50TUFTVGlucHV0KGZpcnN0UGFja2luZywgcmVkdWN0aW9uVHJlZSk7DQorCQl9DQorCX0NCisJDQorCS8qKg0KKwkgKiBQcmludHMgdGhlIE1BUyB0aW5wdXQuDQorCSAqDQorCSAqIEBwYXJhbSBmaXJzdFBhY2sgdGhlIGZpcnN0IHBhY2sNCisJICogQHBhcmFtIHJlZHVjdGlvblRyZWUgdGhlIHJlZHVjdGlvbiB0cmVlDQorCSAqLw0KKwlwcml2YXRlIHN0YXRpYyB2b2lkIHByaW50TUFTVGlucHV0KE1hcDxCaW4sIExpc3Q8VGFzaz4+IGZpcnN0UGFjaywgTWFwPEJpbiwgTGlzdDxUYXNrPj4gcmVkdWN0aW9uVHJlZSl7DQorCQlPYmplY3RbXSBmaXJzdFBhY2tTb3J0ZWQgPSBmaXJzdFBhY2suZW50cnlTZXQoKS50b0FycmF5KCk7DQorCQlBcnJheXMuc29ydChmaXJzdFBhY2tTb3J0ZWQsIG5ldyBDb21wYXJhdG9yPE9iamVjdD4oKSB7DQorDQorCQkJQE92ZXJyaWRlDQorCQkJcHVibGljIGludCBjb21wYXJlKE9iamVjdCBvMSwgT2JqZWN0IG8yKSB7DQorCQkJCWlmKCgoRW50cnk8QmluLCBMaXN0PFRhc2s+PilvMSkuZ2V0S2V5KCkuZ2V0SWQoKT4oKEVudHJ5PEJpbiwgTGlzdDxUYXNrPj4pbzIpLmdldEtleSgpLmdldElkKCkpDQorCQkJCQlyZXR1cm4gMTsNCisJCQkJZWxzZSBpZiAoKChFbnRyeTxCaW4sIExpc3Q8VGFzaz4+KW8xKS5nZXRLZXkoKS5nZXRJZCgpPCgoRW50cnk8QmluLCBMaXN0PFRhc2s+PilvMikuZ2V0S2V5KCkuZ2V0SWQoKSkNCisJCQkJCXJldHVybiAtMTsNCisJCQkJZWxzZQ0KKwkJCQkJcmV0dXJuIDA7DQorCQl9fSk7DQorCQkNCisvLwkJZm9yKGludCBpPTA7IGk8Zmlyc3RQYWNrU29ydGVkLmxlbmd0aDsgaSsrKQ0KKy8vCQkJU3lzdGVtLm91dC5wcmludGxuKCgoRW50cnk8QmluLCBMaXN0PFRhc2s+PilmaXJzdFBhY2tTb3J0ZWRbaV0pLmdldEtleSgpLmdldElkKCkpOw0KKwkJDQorCQlPYmplY3RbXSBhbGxCaW5zID0gcmVkdWN0aW9uVHJlZS5rZXlTZXQoKS50b0FycmF5KCk7DQorCQlBcnJheXMuc29ydChhbGxCaW5zLCBuZXcgQ29tcGFyYXRvcjxPYmplY3Q+KCkgew0KKw0KKwkJCQlAT3ZlcnJpZGUNCisJCQkJcHVibGljIGludCBjb21wYXJlKE9iamVjdCBvMSwgT2JqZWN0IG8yKSB7DQorCQkJCQlpZigoKEJpbilvMSkuZ2V0TGV2ZWwoKT4oKEJpbilvMikuZ2V0TGV2ZWwoKSkNCisJCQkJCQlyZXR1cm4gLTE7DQorCQkJCQllbHNlIGlmICgoKEJpbilvMSkuZ2V0TGV2ZWwoKTwoKEJpbilvMikuZ2V0TGV2ZWwoKSkNCisJCQkJCQlyZXR1cm4gMTsNCisJCQkJCWVsc2UNCisJCQkJCQlyZXR1cm4gMDsNCisJCQl9fSk7DQorCQkNCisJCS8vIERFUFRILUZJUlNUIHByaW50DQorCQkvLyByb290IGxldmVsDQorCQlpbnQgbWF4TGV2ZWwgPSAoKEJpbilhbGxCaW5zWzBdKS5nZXRMZXZlbCgpOw0KKwkJU3lzdGVtLm91dC5wcmludGxuKCItLSBQcmltYXJ5IFNjaGVkdWxlcnNcbiIpOw0KKwkJU3lzdGVtLm91dC5wcmludGxuKCJTY2hlZHVsZXIgKCIpOw0KKwkJU3lzdGVtLm91dC5wcmludGxuKCIJVHlwZQk9PiBQcmltYXJ5X1NjaGVkdWxlciwiKTsNCisJCVN5c3RlbS5vdXQucHJpbnRsbigiCU5hbWUJPT4gU2NoZWR1bGVyXzEsIik7DQorCQlTeXN0ZW0ub3V0LnByaW50bG4oIglQb2xpY3kJPT4gKCBUeXBlID0+IFJVTiApLCIpOw0KKwkJU3lzdGVtLm91dC5wcmludGxuKCIJSG9zdAk9PiBNdWx0aWNvcmVfMSApOyIpOy8vVE9ETzogZGVwZW5kcyBvbiBDSFJUIHNwZWNpZmljYXRpb24NCisJCVN5c3RlbS5vdXQucHJpbnRsbigiXG4tLSBQcmltYXJ5IFNjaGVkdWxpbmcgU2VydmVycyBhbmQgU2Vjb25kYXJ5IFNjaGVkdWxlcnNcbiIpOw0KKwkJaW50IGluZGV4U3VwZXJ0YXNrID0wOw0KKwkJLy8gYWxsIGxldmVscyBvZiB0aGUgdHJlZSBpbiB0aGUgaW50ZXJ2YWwgKHJvb3QsMF0NCisJCWZvcihpbnQgaT0xOyAoaTxhbGxCaW5zLmxlbmd0aCkmJigoKEJpbilhbGxCaW5zW2ldKS5nZXRMZXZlbCgpPj0wKTsgaSsrKXsNCisJCQlTeXN0ZW0ub3V0LnByaW50bG4oIi0tKioqKioqKioqKioqKioqIEJSQU5DSCAqKioqKioqKioqKioqKioiKTsNCisJCQlTeXN0ZW0ub3V0LnByaW50bG4oIlNjaGVkdWxpbmdfU2VydmVyICgiKTsNCisJCQlTeXN0ZW0ub3V0LnByaW50bG4oIglUeXBlCQkJCT0+IFJlZ3VsYXIsIik7DQorCQkJU3lzdGVtLm91dC5wcmludGxuKCIJTmFtZQkJCQk9PiBTdXBlclRhc2tfIitpbmRleFN1cGVydGFzaysiLCIpOw0KKwkJCVN5c3RlbS5vdXQucHJpbnRsbigiCVNlcnZlcl9TY2hlZF9wYXJhbWV0ZXJzCQk9PiAoIFR5cGUgPT4gUlVOX1N1cGVydGFzaywiKTsNCisJCQlTeXN0ZW0ub3V0LnByaW50bG4oIgkJCQkJICAgICBVdGlsaXphdGlvbiA9PiAiKygoQmluKWFsbEJpbnNbaV0pLmdldENhcGFjaXR5KCkrIiApLCIpOyAvL0ZJWE1FOiB1dGlsaXphdGlvbiBpcyBub3QgZXhwcmVzc2VkIGFzIFUgaW4gR2VvZmZyZXkncyBleGFtcGxlDQorCQkJU3lzdGVtLm91dC5wcmludGxuKCIJU2NoZWR1bGVyCQkJPT4gU2NoZWR1bGVyXzEgKTsiKTsNCisJCQlTeXN0ZW0ub3V0LnByaW50bG4oKTsNCisJCQlTeXN0ZW0ub3V0LnByaW50bG4oIlNjaGVkdWxlciAoIik7DQorCQkJU3lzdGVtLm91dC5wcmludGxuKCIJVHlwZQk9PiBTZWNvbmRhcnlfU2NoZWR1bGVyLCIpOw0KKwkJCVN5c3RlbS5vdXQucHJpbnRsbigiCU5hbWUJPT4gU2Vjb25kYXJ5U2NoZWR1bGVyXyIraW5kZXhTdXBlcnRhc2srIiwiKTsNCisJCQlTeXN0ZW0ub3V0LnByaW50bG4oIglQb2xpY3kJPT4gKCAJVHlwZQk9PiBFREYsIik7DQorCQkJU3lzdGVtLm91dC5wcmludGxuKCIJCQlXb3JzdF9Db250ZXh0X1N3aXRjaAk9PiAyMCApLCIpOy8vRklYTUU6IGJhc2VkIG9uIENvbXBhZ25pbiBwYXBlciBhdCBFQ1JUUzIwMTQNCisJCQlTeXN0ZW0ub3V0LnByaW50bG4oIglTZXJ2ZXIJPT4gU3VwZXJUYXNrXyIraW5kZXhTdXBlcnRhc2srIiApOyIpOw0KKwkJCVN5c3RlbS5vdXQucHJpbnRsbigpOw0KKwkJCS8vIGZpcnN0IHBhY2s6IHByaW50IGxlYWYgbm9kZXMNCisJCQlpZigoKEJpbilhbGxCaW5zW2ldKS5nZXRMZXZlbCgpPT0wKXsNCisJCQkJTGlzdDxUYXNrPiB0YXNrcyA9IHJlZHVjdGlvblRyZWUuZ2V0KCgoQmluKWFsbEJpbnNbaV0pKTsNCisJCQkJZm9yKFRhc2sgdGFzayA6IHRhc2tzKXsNCisJCQkJCUxpc3Q8VGFzaz4gbGVhdmVzID0gKChFbnRyeTxCaW4sIExpc3Q8VGFzaz4+KWZpcnN0UGFja1NvcnRlZFtuZXcgSW50ZWdlcih0YXNrLmdldElkKCkpXSkuZ2V0VmFsdWUoKTsNCisJCQkJCWZvcihUYXNrIGxlYWYgOiBsZWF2ZXMpew0KKwkJCQkJCVN5c3RlbS5vdXQucHJpbnRsbigiU2NoZWR1bGluZ19TZXJ2ZXIgKCIpOw0KKwkJCQkJCVN5c3RlbS5vdXQucHJpbnRsbigiCVR5cGUJCQkJPT4gUmVndWxhciwiKTsNCisJCQkJCQlTeXN0ZW0ub3V0LnByaW50bG4oIglOYW1lIAkJCQk9PiAiK2xlYWYuZ2V0SWQoKSsiLCIpOw0KKwkJCQkJCVN5c3RlbS5vdXQucHJpbnRsbigiCVNlcnZlcl9TY2hlZF9QYXJhbWV0ZXJzCQk9PiAoIik7DQorCQkJCQkJU3lzdGVtLm91dC5wcmludGxuKCIJCVR5cGUJCQk9PiBFREZfcG9saWN5LCIpOw0KKwkJCQkJCVN5c3RlbS5vdXQucHJpbnRsbigiCQlEZWFkbGluZQkJPT4gIitsZWFmLmdldFQoKSsiLCIpOw0KKwkJCQkJCVN5c3RlbS5vdXQucHJpbnRsbigiICAgICAgICAgICAgICAgIFByZWFzc2lnbmVkICAgICAgICAgICAgID0+IE5vKSwiKTsNCisJCQkJCQlTeXN0ZW0ub3V0LnByaW50bG4oIglTY2hlZHVsZXIJCQk9PiBTZWNvbmRhcnlTY2hlZHVsZXJfIitpbmRleFN1cGVydGFzaysiKTsiKTsNCisJCQkJCQlTeXN0ZW0ub3V0LnByaW50bG4oKTsNCisJCQkJCX0NCisJCQkJfQ0KKwkJCX0NCisJCQlpbmRleFN1cGVydGFzaysrOw0KKwkJfQkJDQorCX0NCisNCit9DQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbXVsdGljb3JlL3BhcnRpdGlvbmluZy9IZXVyaXN0aWMuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm11bHRpY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL211bHRpY29yZS9wYXJ0aXRpb25pbmcvSGV1cmlzdGljLmphdmEKaW5kZXggNzEzZGJmOS4uNDY1ODI0YiAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbXVsdGljb3JlL3BhcnRpdGlvbmluZy9IZXVyaXN0aWMuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tdWx0aWNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tdWx0aWNvcmUvcGFydGl0aW9uaW5nL0hldXJpc3RpYy5qYXZhCkBAIC0xLDI3ICsxLDM0IEBACi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAtCi0gIC0gQ29weXJpZ2h0IChjKSAyMDE1LTIwMTYgVW5pdmVyc2l0eSBvZiBQYWRvdmEsIElUQUxZIC0gIEludGVjcyBTcEEgCi0gIC0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICAtIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICAtIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gIC0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAgLQotICAtIENvbnRyaWJ1dG9yczoKLSAgLQotICAtIEFsZXNzYW5kcm8gWm92aSBhem92aUBtYXRoLnVuaXBkLml0Ci0gIC0gU3RlZmFubyBQdXJpIHN0ZWZhbm8ucHVyaUBpbnRlY3MuaXQKLSAgLSBMYXVyYSBCYXJhY2NoaSBsYXVyYS5iYXJhY2NoaUBpbnRlY3MuaXQKLSAgLSBOaWNob2xhcyBQYWNpbmkgbmljaG9sYXMucGFjaW5pQGludGVjcy5pdCAgCi0gIC0KLSAgLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24gYW5kL29yIGluaXRpYWwgZG9jdW1lbnRhdGlvbgotICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL3BhY2thZ2Ugb3JnLnBvbGFyc3lzLmNoZXNzLm11bHRpY29yZS5wYXJ0aXRpb25pbmc7Ci0KLS8qKgotICogVGhlIEVudW0gSGV1cmlzdGljLgotICovCi1wdWJsaWMgZW51bSBIZXVyaXN0aWMgewotCQotCS8qKiBUaGUgd29yc3QgZml0LiAqLwotCVdPUlNUX0ZJVAotCi19CisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqIENvcHlyaWdodCAoQykgMjAyMCANCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQorICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisgIC0NCisgIC0gQ29weXJpZ2h0IChjKSAyMDE1LTIwMTYgVW5pdmVyc2l0eSBvZiBQYWRvdmEsIElUQUxZIC0gIEludGVjcyBTcEEgDQorICAtIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgIC0gYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQorICAtIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICAtIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQorICAtDQorICAtIENvbnRyaWJ1dG9yczoNCisgIC0NCisgIC0gQWxlc3NhbmRybyBab3ZpIGF6b3ZpQG1hdGgudW5pcGQuaXQNCisgIC0gU3RlZmFubyBQdXJpIHN0ZWZhbm8ucHVyaUBpbnRlY3MuaXQNCisgIC0gTGF1cmEgQmFyYWNjaGkgbGF1cmEuYmFyYWNjaGlAaW50ZWNzLml0DQorICAtIE5pY2hvbGFzIFBhY2luaSBuaWNob2xhcy5wYWNpbmlAaW50ZWNzLml0ICANCisgIC0NCisgIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uIGFuZC9vciBpbml0aWFsIGRvY3VtZW50YXRpb24NCisgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovcGFja2FnZSBvcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlLnBhcnRpdGlvbmluZzsNCisNCisvKioNCisgKiBUaGUgRW51bSBIZXVyaXN0aWMuDQorICovDQorcHVibGljIGVudW0gSGV1cmlzdGljIHsNCisJDQorCS8qKiBUaGUgd29yc3QgZml0LiAqLw0KKwlXT1JTVF9GSVQNCisNCit9DQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbXVsdGljb3JlL3BhcnRpdGlvbmluZy9SVU5SZWR1Y3Rpb24uamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm11bHRpY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL211bHRpY29yZS9wYXJ0aXRpb25pbmcvUlVOUmVkdWN0aW9uLmphdmEKaW5kZXggYjBlOTVhYy4uMmE0MTZlMiAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbXVsdGljb3JlL3BhcnRpdGlvbmluZy9SVU5SZWR1Y3Rpb24uamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tdWx0aWNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tdWx0aWNvcmUvcGFydGl0aW9uaW5nL1JVTlJlZHVjdGlvbi5qYXZhCkBAIC0xLDgxICsxLDg4IEBACi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAtCi0gIC0gQ29weXJpZ2h0IChjKSAyMDE1LTIwMTYgVW5pdmVyc2l0eSBvZiBQYWRvdmEsIElUQUxZIC0gIEludGVjcyBTcEEgCi0gIC0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICAtIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICAtIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gIC0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAgLQotICAtIENvbnRyaWJ1dG9yczoKLSAgLQotICAtIEFsZXNzYW5kcm8gWm92aSBhem92aUBtYXRoLnVuaXBkLml0Ci0gIC0gU3RlZmFubyBQdXJpIHN0ZWZhbm8ucHVyaUBpbnRlY3MuaXQKLSAgLSBMYXVyYSBCYXJhY2NoaSBsYXVyYS5iYXJhY2NoaUBpbnRlY3MuaXQKLSAgLSBOaWNob2xhcyBQYWNpbmkgbmljaG9sYXMucGFjaW5pQGludGVjcy5pdCAgCi0gIC0KLSAgLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24gYW5kL29yIGluaXRpYWwgZG9jdW1lbnRhdGlvbgotICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL3BhY2thZ2Ugb3JnLnBvbGFyc3lzLmNoZXNzLm11bHRpY29yZS5wYXJ0aXRpb25pbmc7Ci0KLWltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OwotaW1wb3J0IGphdmEudXRpbC5BcnJheXM7Ci1pbXBvcnQgamF2YS51dGlsLkNvbXBhcmF0b3I7Ci1pbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuTWFwOwotaW1wb3J0IGphdmEudXRpbC5TZXQ7Ci0KLS8qKgotICogVGhlIENsYXNzIFJVTlJlZHVjdGlvbi4KLSAqLwotcHVibGljIGNsYXNzIFJVTlJlZHVjdGlvbiBpbXBsZW1lbnRzIEJpblBhY2tlciB7Ci0JCi0JLyoqIFRoZSBsZXZlbC4gKi8KLQkvL3ByaXZhdGUgZmluYWwgYm9vbGVhbiBERUNSRUFTSU5HX09SREVSSU5HID0gdHJ1ZTsKLQlpbnQgbGV2ZWwgPSAtMTsKLQotCS8qIChub24tSmF2YWRvYykKLQkgKiBAc2VlIG9yZy5wb2xhcnN5cy5jaGVzcy5tdWx0aWNvcmUucGFydGl0aW9uaW5nLkJpblBhY2tlciNwYWNrKGphdmEudXRpbC5MaXN0LCBqYXZhLnV0aWwuTGlzdCkKLQkgKi8KLQlAT3ZlcnJpZGUKLQlwdWJsaWMgTWFwPEJpbiwgTGlzdDxUYXNrPj4gcGFjayhMaXN0PEJpbj4gYmlucywgTGlzdDxUYXNrPiB0YXNrcykgewotCQkKLQkJbGV2ZWwrKzsKLQkJTWFwPEJpbiwgTGlzdDxUYXNrPj4gdG9SZXR1cm4gPSBuZXcgSGFzaHRhYmxlPEJpbiwgTGlzdDxUYXNrPj4gKCk7Ci0JCQotCQkKLQkJaWYodGFza3Muc2l6ZSgpPT0xKXsKLQkJCS8vdG9SZXR1cm4ucHV0KG5ldyBCaW4obmV3IEludGVnZXIodGFza3MuZ2V0KDApLmdldElkKCkpKSwgdGFza3MpOwotCQkJQmluIHRoZUJpbiA9IG5ldyBCaW4oMCk7Ci0JCQl0aGVCaW4uc2V0TGV2ZWwobGV2ZWwpOwotCQkJdG9SZXR1cm4ucHV0KHRoZUJpbiwgdGFza3MpOwotCQkJcmV0dXJuIHRvUmV0dXJuOwotCQl9Ci0JCQotCQlmb3IoVGFzayB0YXNrIDogdGFza3MpCi0JCQl0YXNrLnN3aXRjaFRvRHVhbCgpOwotCQkKLS8vCQlPYmplY3RbXSBhbGxUYXNrcyA9IHRhc2tzLnRvQXJyYXkoKTsKLS8vCQlmb3IoaW50IHRhc2tJbmRleCA9IDA7IHRhc2tJbmRleCA8IGFsbFRhc2tzLmxlbmd0aDsgdGFza0luZGV4KyspCi0vLwkJCSgoVGFzaylhbGxUYXNrc1t0YXNrSW5kZXhdKS5zd2l0Y2hUb0R1YWwoKTsKLQkJCi0JCU1hcDxCaW4sIExpc3Q8VGFzaz4+IHJlc3VsdCA9Ci0JCQkJQmluUGFja2VyRmFjdG9yeS5nZXRCaW5QYWNrZXIob3JnLnBvbGFyc3lzLmNoZXNzLm11bHRpY29yZS5wYXJ0aXRpb25pbmcuSGV1cmlzdGljLldPUlNUX0ZJVCkucGFjayhuZXcgQXJyYXlMaXN0PEJpbj4oKSwgdGFza3MpOwotCQlTZXQ8QmluPiBrZXlzID0gcmVzdWx0LmtleVNldCgpOwotCQlBcnJheUxpc3Q8VGFzaz4gc3VwZXJ0YXNrcyA9IG5ldyBBcnJheUxpc3Q8VGFzaz4oKTsKLQkJZm9yKEJpbiBiaW4gOiBrZXlzKXsKLQkJCWJpbi5zZXRMZXZlbChsZXZlbCk7Ci0JCQl0b1JldHVybi5wdXQoYmluLCByZXN1bHQuZ2V0KGJpbikpOwotCQkJc3VwZXJ0YXNrcy5hZGQobmV3IFRhc2soYmluLmdldElkKCkudG9TdHJpbmcoKSwgYmluLmdldENhcGFjaXR5KCkpKTsKLQkJfQotCQkKLQkJdG9SZXR1cm4ucHV0QWxsKHBhY2sobnVsbCwgc3VwZXJ0YXNrcykpOy8vIHJlY3Vyc2l2ZSBjYWxsIG9uIHRoZSBsZXZlbCBhYm92ZQotCQlyZXR1cm4gdG9SZXR1cm47Ci0JCQotCQkKLQkJCi0JCQotCQkKLQkJLy9yZXR1cm4gdG9SZXR1cm47Ci0JfQotCi19CisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqIENvcHlyaWdodCAoQykgMjAyMCANCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQorICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisgIC0NCisgIC0gQ29weXJpZ2h0IChjKSAyMDE1LTIwMTYgVW5pdmVyc2l0eSBvZiBQYWRvdmEsIElUQUxZIC0gIEludGVjcyBTcEEgDQorICAtIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgIC0gYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQorICAtIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICAtIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQorICAtDQorICAtIENvbnRyaWJ1dG9yczoNCisgIC0NCisgIC0gQWxlc3NhbmRybyBab3ZpIGF6b3ZpQG1hdGgudW5pcGQuaXQNCisgIC0gU3RlZmFubyBQdXJpIHN0ZWZhbm8ucHVyaUBpbnRlY3MuaXQNCisgIC0gTGF1cmEgQmFyYWNjaGkgbGF1cmEuYmFyYWNjaGlAaW50ZWNzLml0DQorICAtIE5pY2hvbGFzIFBhY2luaSBuaWNob2xhcy5wYWNpbmlAaW50ZWNzLml0ICANCisgIC0NCisgIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uIGFuZC9vciBpbml0aWFsIGRvY3VtZW50YXRpb24NCisgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovcGFja2FnZSBvcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlLnBhcnRpdGlvbmluZzsNCisNCitpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsNCitpbXBvcnQgamF2YS51dGlsLkFycmF5czsNCitpbXBvcnQgamF2YS51dGlsLkNvbXBhcmF0b3I7DQoraW1wb3J0IGphdmEudXRpbC5IYXNodGFibGU7DQoraW1wb3J0IGphdmEudXRpbC5MaXN0Ow0KK2ltcG9ydCBqYXZhLnV0aWwuTWFwOw0KK2ltcG9ydCBqYXZhLnV0aWwuU2V0Ow0KKw0KKy8qKg0KKyAqIFRoZSBDbGFzcyBSVU5SZWR1Y3Rpb24uDQorICovDQorcHVibGljIGNsYXNzIFJVTlJlZHVjdGlvbiBpbXBsZW1lbnRzIEJpblBhY2tlciB7DQorCQ0KKwkvKiogVGhlIGxldmVsLiAqLw0KKwkvL3ByaXZhdGUgZmluYWwgYm9vbGVhbiBERUNSRUFTSU5HX09SREVSSU5HID0gdHJ1ZTsNCisJaW50IGxldmVsID0gLTE7DQorDQorCS8qIChub24tSmF2YWRvYykNCisJICogQHNlZSBvcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlLnBhcnRpdGlvbmluZy5CaW5QYWNrZXIjcGFjayhqYXZhLnV0aWwuTGlzdCwgamF2YS51dGlsLkxpc3QpDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIE1hcDxCaW4sIExpc3Q8VGFzaz4+IHBhY2soTGlzdDxCaW4+IGJpbnMsIExpc3Q8VGFzaz4gdGFza3MpIHsNCisJCQ0KKwkJbGV2ZWwrKzsNCisJCU1hcDxCaW4sIExpc3Q8VGFzaz4+IHRvUmV0dXJuID0gbmV3IEhhc2h0YWJsZTxCaW4sIExpc3Q8VGFzaz4+ICgpOw0KKwkJDQorCQkNCisJCWlmKHRhc2tzLnNpemUoKT09MSl7DQorCQkJLy90b1JldHVybi5wdXQobmV3IEJpbihuZXcgSW50ZWdlcih0YXNrcy5nZXQoMCkuZ2V0SWQoKSkpLCB0YXNrcyk7DQorCQkJQmluIHRoZUJpbiA9IG5ldyBCaW4oMCk7DQorCQkJdGhlQmluLnNldExldmVsKGxldmVsKTsNCisJCQl0b1JldHVybi5wdXQodGhlQmluLCB0YXNrcyk7DQorCQkJcmV0dXJuIHRvUmV0dXJuOw0KKwkJfQ0KKwkJDQorCQlmb3IoVGFzayB0YXNrIDogdGFza3MpDQorCQkJdGFzay5zd2l0Y2hUb0R1YWwoKTsNCisJCQ0KKy8vCQlPYmplY3RbXSBhbGxUYXNrcyA9IHRhc2tzLnRvQXJyYXkoKTsNCisvLwkJZm9yKGludCB0YXNrSW5kZXggPSAwOyB0YXNrSW5kZXggPCBhbGxUYXNrcy5sZW5ndGg7IHRhc2tJbmRleCsrKQ0KKy8vCQkJKChUYXNrKWFsbFRhc2tzW3Rhc2tJbmRleF0pLnN3aXRjaFRvRHVhbCgpOw0KKwkJDQorCQlNYXA8QmluLCBMaXN0PFRhc2s+PiByZXN1bHQgPQ0KKwkJCQlCaW5QYWNrZXJGYWN0b3J5LmdldEJpblBhY2tlcihvcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlLnBhcnRpdGlvbmluZy5IZXVyaXN0aWMuV09SU1RfRklUKS5wYWNrKG5ldyBBcnJheUxpc3Q8QmluPigpLCB0YXNrcyk7DQorCQlTZXQ8QmluPiBrZXlzID0gcmVzdWx0LmtleVNldCgpOw0KKwkJQXJyYXlMaXN0PFRhc2s+IHN1cGVydGFza3MgPSBuZXcgQXJyYXlMaXN0PFRhc2s+KCk7DQorCQlmb3IoQmluIGJpbiA6IGtleXMpew0KKwkJCWJpbi5zZXRMZXZlbChsZXZlbCk7DQorCQkJdG9SZXR1cm4ucHV0KGJpbiwgcmVzdWx0LmdldChiaW4pKTsNCisJCQlzdXBlcnRhc2tzLmFkZChuZXcgVGFzayhiaW4uZ2V0SWQoKS50b1N0cmluZygpLCBiaW4uZ2V0Q2FwYWNpdHkoKSkpOw0KKwkJfQ0KKwkJDQorCQl0b1JldHVybi5wdXRBbGwocGFjayhudWxsLCBzdXBlcnRhc2tzKSk7Ly8gcmVjdXJzaXZlIGNhbGwgb24gdGhlIGxldmVsIGFib3ZlDQorCQlyZXR1cm4gdG9SZXR1cm47DQorCQkNCisJCQ0KKwkJDQorCQkNCisJCQ0KKwkJLy9yZXR1cm4gdG9SZXR1cm47DQorCX0NCisNCit9DQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbXVsdGljb3JlL3BhcnRpdGlvbmluZy9UYXNrLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tdWx0aWNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tdWx0aWNvcmUvcGFydGl0aW9uaW5nL1Rhc2suamF2YQppbmRleCAwYjdkNDhlLi45YmU3ODA2IDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tdWx0aWNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tdWx0aWNvcmUvcGFydGl0aW9uaW5nL1Rhc2suamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tdWx0aWNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tdWx0aWNvcmUvcGFydGl0aW9uaW5nL1Rhc2suamF2YQpAQCAtMSwxOTUgKzEsMjAyIEBACi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAtCi0gIC0gQ29weXJpZ2h0IChjKSAyMDE1LTIwMTYgVW5pdmVyc2l0eSBvZiBQYWRvdmEsIElUQUxZIC0gIEludGVjcyBTcEEgCi0gIC0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICAtIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICAtIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gIC0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAgLQotICAtIENvbnRyaWJ1dG9yczoKLSAgLQotICAtIEFsZXNzYW5kcm8gWm92aSBhem92aUBtYXRoLnVuaXBkLml0Ci0gIC0gU3RlZmFubyBQdXJpIHN0ZWZhbm8ucHVyaUBpbnRlY3MuaXQKLSAgLSBMYXVyYSBCYXJhY2NoaSBsYXVyYS5iYXJhY2NoaUBpbnRlY3MuaXQKLSAgLSBOaWNob2xhcyBQYWNpbmkgbmljaG9sYXMucGFjaW5pQGludGVjcy5pdCAgCi0gIC0KLSAgLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24gYW5kL29yIGluaXRpYWwgZG9jdW1lbnRhdGlvbgotICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL3BhY2thZ2Ugb3JnLnBvbGFyc3lzLmNoZXNzLm11bHRpY29yZS5wYXJ0aXRpb25pbmc7Ci0KLQotCi0vKioKLSAqIFRoZSBDbGFzcyBUYXNrLgotICovCi1wdWJsaWMgY2xhc3MgVGFzayBpbXBsZW1lbnRzIENvbXBhcmFibGU8VGFzaz4gewotCQotCS8qKgotCSAqIFRoZSBFbnVtIERlZmluaXRpb24uCi0JICovCi0JcHJpdmF0ZSBlbnVtIERlZmluaXRpb257Ci0JCQotCQkvKiogVGhlIGRlZmluZWQgYyBhbmQgdC4gKi8KLQkJREVGSU5FRF9DX0FORF9ULCAKLSAvKiogVGhlIGRlZmluZWQgdS4gKi8KLSBERUZJTkVEX1UKLQl9Ci0KLQkvKiogVGhlIGlkLiAqLwotCXByaXZhdGUgU3RyaW5nIGlkOwotCQotCS8qKiBUaGUgZGVmaW5pdGlvbi4gKi8KLQlwcml2YXRlIERlZmluaXRpb24gZGVmaW5pdGlvbjsKLQkKLQkvKiogVGhlIGMuICovCi0JcHJpdmF0ZSBGbG9hdCBjOwotCQotCS8qKiBUaGUgZC4gKi8KLQlwcml2YXRlIEZsb2F0IGQ7Ci0JCi0JLyoqIFRoZSB0LiAqLwotCXByaXZhdGUgRmxvYXQgdDsKLQkKLQkvKiogVGhlIHUuICovCi0JcHJpdmF0ZSBGbG9hdCB1OwotCQotCS8qKiBUaGUgb2Zmc2V0LiAqLwotCXByaXZhdGUgRmxvYXQgb2Zmc2V0OwotCQotCS8qKiBUaGUgb3duZXIuICovCi0JcHJpdmF0ZSBCaW4gb3duZXI7Ci0JCi0JLyoqCi0JICogSW5zdGFudGlhdGVzIGEgbmV3IHRhc2suCi0JICoKLQkgKiBAcGFyYW0gX25hbWUgdGhlIG5hbWUKLQkgKiBAcGFyYW0gX2MgdGhlIGMKLQkgKiBAcGFyYW0gX2QgdGhlIGQKLQkgKiBAcGFyYW0gX3QgdGhlIHQKLQkgKiBAcGFyYW0gX29mZnNldCB0aGUgb2Zmc2V0Ci0JICogQHBhcmFtIF9vd25lciB0aGUgb3duZXIKLQkgKi8KLQlwdWJsaWMgVGFzayhTdHJpbmcgX25hbWUsCi0JCQlGbG9hdCBfYywgRmxvYXQgX2QsIEZsb2F0IF90LCBGbG9hdCBfb2Zmc2V0LAotCQkJQmluIF9vd25lcikgewotCQkKLQotCQl0aGlzLmlkID0gX25hbWU7Ci0JCXRoaXMuYyA9IF9jOwotCQl0aGlzLmQgPSBfZDsKLQkJdGhpcy50ID0gX3Q7Ci0JCXRoaXMuZGVmaW5pdGlvbiA9IERlZmluaXRpb24uREVGSU5FRF9DX0FORF9UOwotCQl0aGlzLm9mZnNldCA9IF9vZmZzZXQ7Ci0JCXRoaXMub3duZXIgPSBfb3duZXI7Ci0JCQotCX0KLQkKLQkvKioKLQkgKiBJbnN0YW50aWF0ZXMgYSBuZXcgdGFzay4KLQkgKgotCSAqIEBwYXJhbSBfbmFtZSB0aGUgbmFtZQotCSAqIEBwYXJhbSBfdSB0aGUgdQotCSAqLwotCS8vIG5lZWRlZCBmb3IgUlVOJ3Mgc3VwZXJ0YXNrcwotCXB1YmxpYyBUYXNrKFN0cmluZyBfbmFtZSwgRmxvYXQgX3UpewotCQl0aGlzLmlkID0gX25hbWU7Ci0JCXRoaXMudSA9IF91OwotCQl0aGlzLmRlZmluaXRpb24gPSBEZWZpbml0aW9uLkRFRklORURfVTsKLQl9Ci0JCi0vLwlwdWJsaWMgVGFzaygpIHsKLS8vCQlzdXBlcigpOwotLy8JfQotCQotCS8qKgotICogU2V0cyB0aGUgb3duZXIuCi0gKgotICogQHBhcmFtIG93bmVyIHRoZSBuZXcgb3duZXIKLSAqLwotcHVibGljIHZvaWQgc2V0T3duZXIoQmluIG93bmVyKSB7Ci0JCXRoaXMub3duZXIgPSBvd25lcjsKLQl9Ci0KLQkvKioKLQkgKiBTZXRzIHRoZSB0LgotCSAqCi0JICogQHBhcmFtIHQgdGhlIG5ldyB0Ci0JICovCi0JcHVibGljIHZvaWQgc2V0VChGbG9hdCB0KSB7Ci0JCXRoaXMudCA9IHQ7Ci0JfQotCi0JLyoqCi0JICogR2V0cyB0aGUgb3duZXIuCi0JICoKLQkgKiBAcmV0dXJuIHRoZSBvd25lcgotCSAqLwotCXB1YmxpYyBCaW4gZ2V0T3duZXIoKSB7Ci0JCXJldHVybiBvd25lcjsKLQl9Ci0KLQkvKioKLQkgKiBHZXRzIHRoZSB0LgotCSAqCi0JICogQHJldHVybiB0aGUgdAotCSAqLwotCXB1YmxpYyBGbG9hdCBnZXRUKCkgewotCQlyZXR1cm4gdDsKLQl9Ci0KLQkvKiAobm9uLUphdmFkb2MpCi0JICogQHNlZSBqYXZhLmxhbmcuT2JqZWN0I3RvU3RyaW5nKCkKLQkgKi8KLQlAT3ZlcnJpZGUKLQlwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgewotCQlyZXR1cm4gbmV3IFN0cmluZygiKG5hbWUsIEMsIEQsIFQsIG9mZnNldCwgb3duZXIpXG4iICsKLQkJCQkiKCIrIGlkICsiLCAiKyBjICsiLCAiKyBkICsiLCAiKyB0ICsiLCAiKyBvZmZzZXQgKyIsICIrIG93bmVyICsiKSIpOwotCX0KLQkKLQkvKioKLQkgKiBHZXRzIHRoZSB1LgotCSAqCi0JICogQHJldHVybiB0aGUgdQotCSAqLwotCXB1YmxpYyBGbG9hdCBnZXRVKCl7Ci0JCWlmKGRlZmluaXRpb24gPT0gRGVmaW5pdGlvbi5ERUZJTkVEX1UpCi0JCQlyZXR1cm4gdTsKLQkJZWxzZQotCQkJcmV0dXJuIGMvdDsKLQl9Ci0JCQotCQotCS8qKgotCSAqIEdldHMgdGhlIGlkLgotCSAqCi0JICogQHJldHVybiB0aGUgaWQKLQkgKi8KLQlwdWJsaWMgU3RyaW5nIGdldElkKCkgewotCQlyZXR1cm4gaWQ7Ci0JfQotCQotCS8qKgotCSAqIFN3aXRjaCB0byBkdWFsLgotCSAqLwotCXB1YmxpYyB2b2lkIHN3aXRjaFRvRHVhbCgpewotCQlpZihkZWZpbml0aW9uID09IERlZmluaXRpb24uREVGSU5FRF9VKQotCQkJdGhpcy51ID0gMS11OwotCQllbHNlCi0JCQl0aGlzLmMgPSB0LWM7Ci0JfQotCi0JLyogKG5vbi1KYXZhZG9jKQotCSAqIEBzZWUgamF2YS5sYW5nLkNvbXBhcmFibGUjY29tcGFyZVRvKGphdmEubGFuZy5PYmplY3QpCi0JICovCi0JQE92ZXJyaWRlCi0JcHVibGljIGludCBjb21wYXJlVG8oVGFzayBvKSB7Ci0JCQotCQlyZXR1cm4gdGhpcy5nZXRVKCkuY29tcGFyZVRvKG8uZ2V0VSgpKTsKLQl9Ci0KLQotCQotCi0JCi0KLX0KLQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgDQorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KKyAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorICAtDQorICAtIENvcHlyaWdodCAoYykgMjAxNS0yMDE2IFVuaXZlcnNpdHkgb2YgUGFkb3ZhLCBJVEFMWSAtICBJbnRlY3MgU3BBIA0KKyAgLSBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICAtIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KKyAgLSB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAgLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KKyAgLQ0KKyAgLSBDb250cmlidXRvcnM6DQorICAtDQorICAtIEFsZXNzYW5kcm8gWm92aSBhem92aUBtYXRoLnVuaXBkLml0DQorICAtIFN0ZWZhbm8gUHVyaSBzdGVmYW5vLnB1cmlAaW50ZWNzLml0DQorICAtIExhdXJhIEJhcmFjY2hpIGxhdXJhLmJhcmFjY2hpQGludGVjcy5pdA0KKyAgLSBOaWNob2xhcyBQYWNpbmkgbmljaG9sYXMucGFjaW5pQGludGVjcy5pdCAgDQorICAtDQorICAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbiBhbmQvb3IgaW5pdGlhbCBkb2N1bWVudGF0aW9uDQorICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL3BhY2thZ2Ugb3JnLnBvbGFyc3lzLmNoZXNzLm11bHRpY29yZS5wYXJ0aXRpb25pbmc7DQorDQorDQorDQorLyoqDQorICogVGhlIENsYXNzIFRhc2suDQorICovDQorcHVibGljIGNsYXNzIFRhc2sgaW1wbGVtZW50cyBDb21wYXJhYmxlPFRhc2s+IHsNCisJDQorCS8qKg0KKwkgKiBUaGUgRW51bSBEZWZpbml0aW9uLg0KKwkgKi8NCisJcHJpdmF0ZSBlbnVtIERlZmluaXRpb257DQorCQkNCisJCS8qKiBUaGUgZGVmaW5lZCBjIGFuZCB0LiAqLw0KKwkJREVGSU5FRF9DX0FORF9ULCANCisgLyoqIFRoZSBkZWZpbmVkIHUuICovDQorIERFRklORURfVQ0KKwl9DQorDQorCS8qKiBUaGUgaWQuICovDQorCXByaXZhdGUgU3RyaW5nIGlkOw0KKwkNCisJLyoqIFRoZSBkZWZpbml0aW9uLiAqLw0KKwlwcml2YXRlIERlZmluaXRpb24gZGVmaW5pdGlvbjsNCisJDQorCS8qKiBUaGUgYy4gKi8NCisJcHJpdmF0ZSBGbG9hdCBjOw0KKwkNCisJLyoqIFRoZSBkLiAqLw0KKwlwcml2YXRlIEZsb2F0IGQ7DQorCQ0KKwkvKiogVGhlIHQuICovDQorCXByaXZhdGUgRmxvYXQgdDsNCisJDQorCS8qKiBUaGUgdS4gKi8NCisJcHJpdmF0ZSBGbG9hdCB1Ow0KKwkNCisJLyoqIFRoZSBvZmZzZXQuICovDQorCXByaXZhdGUgRmxvYXQgb2Zmc2V0Ow0KKwkNCisJLyoqIFRoZSBvd25lci4gKi8NCisJcHJpdmF0ZSBCaW4gb3duZXI7DQorCQ0KKwkvKioNCisJICogSW5zdGFudGlhdGVzIGEgbmV3IHRhc2suDQorCSAqDQorCSAqIEBwYXJhbSBfbmFtZSB0aGUgbmFtZQ0KKwkgKiBAcGFyYW0gX2MgdGhlIGMNCisJICogQHBhcmFtIF9kIHRoZSBkDQorCSAqIEBwYXJhbSBfdCB0aGUgdA0KKwkgKiBAcGFyYW0gX29mZnNldCB0aGUgb2Zmc2V0DQorCSAqIEBwYXJhbSBfb3duZXIgdGhlIG93bmVyDQorCSAqLw0KKwlwdWJsaWMgVGFzayhTdHJpbmcgX25hbWUsDQorCQkJRmxvYXQgX2MsIEZsb2F0IF9kLCBGbG9hdCBfdCwgRmxvYXQgX29mZnNldCwNCisJCQlCaW4gX293bmVyKSB7DQorCQkNCisNCisJCXRoaXMuaWQgPSBfbmFtZTsNCisJCXRoaXMuYyA9IF9jOw0KKwkJdGhpcy5kID0gX2Q7DQorCQl0aGlzLnQgPSBfdDsNCisJCXRoaXMuZGVmaW5pdGlvbiA9IERlZmluaXRpb24uREVGSU5FRF9DX0FORF9UOw0KKwkJdGhpcy5vZmZzZXQgPSBfb2Zmc2V0Ow0KKwkJdGhpcy5vd25lciA9IF9vd25lcjsNCisJCQ0KKwl9DQorCQ0KKwkvKioNCisJICogSW5zdGFudGlhdGVzIGEgbmV3IHRhc2suDQorCSAqDQorCSAqIEBwYXJhbSBfbmFtZSB0aGUgbmFtZQ0KKwkgKiBAcGFyYW0gX3UgdGhlIHUNCisJICovDQorCS8vIG5lZWRlZCBmb3IgUlVOJ3Mgc3VwZXJ0YXNrcw0KKwlwdWJsaWMgVGFzayhTdHJpbmcgX25hbWUsIEZsb2F0IF91KXsNCisJCXRoaXMuaWQgPSBfbmFtZTsNCisJCXRoaXMudSA9IF91Ow0KKwkJdGhpcy5kZWZpbml0aW9uID0gRGVmaW5pdGlvbi5ERUZJTkVEX1U7DQorCX0NCisJDQorLy8JcHVibGljIFRhc2soKSB7DQorLy8JCXN1cGVyKCk7DQorLy8JfQ0KKwkNCisJLyoqDQorICogU2V0cyB0aGUgb3duZXIuDQorICoNCisgKiBAcGFyYW0gb3duZXIgdGhlIG5ldyBvd25lcg0KKyAqLw0KK3B1YmxpYyB2b2lkIHNldE93bmVyKEJpbiBvd25lcikgew0KKwkJdGhpcy5vd25lciA9IG93bmVyOw0KKwl9DQorDQorCS8qKg0KKwkgKiBTZXRzIHRoZSB0Lg0KKwkgKg0KKwkgKiBAcGFyYW0gdCB0aGUgbmV3IHQNCisJICovDQorCXB1YmxpYyB2b2lkIHNldFQoRmxvYXQgdCkgew0KKwkJdGhpcy50ID0gdDsNCisJfQ0KKw0KKwkvKioNCisJICogR2V0cyB0aGUgb3duZXIuDQorCSAqDQorCSAqIEByZXR1cm4gdGhlIG93bmVyDQorCSAqLw0KKwlwdWJsaWMgQmluIGdldE93bmVyKCkgew0KKwkJcmV0dXJuIG93bmVyOw0KKwl9DQorDQorCS8qKg0KKwkgKiBHZXRzIHRoZSB0Lg0KKwkgKg0KKwkgKiBAcmV0dXJuIHRoZSB0DQorCSAqLw0KKwlwdWJsaWMgRmxvYXQgZ2V0VCgpIHsNCisJCXJldHVybiB0Ow0KKwl9DQorDQorCS8qIChub24tSmF2YWRvYykNCisJICogQHNlZSBqYXZhLmxhbmcuT2JqZWN0I3RvU3RyaW5nKCkNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgew0KKwkJcmV0dXJuIG5ldyBTdHJpbmcoIihuYW1lLCBDLCBELCBULCBvZmZzZXQsIG93bmVyKVxuIiArDQorCQkJCSIoIisgaWQgKyIsICIrIGMgKyIsICIrIGQgKyIsICIrIHQgKyIsICIrIG9mZnNldCArIiwgIisgb3duZXIgKyIpIik7DQorCX0NCisJDQorCS8qKg0KKwkgKiBHZXRzIHRoZSB1Lg0KKwkgKg0KKwkgKiBAcmV0dXJuIHRoZSB1DQorCSAqLw0KKwlwdWJsaWMgRmxvYXQgZ2V0VSgpew0KKwkJaWYoZGVmaW5pdGlvbiA9PSBEZWZpbml0aW9uLkRFRklORURfVSkNCisJCQlyZXR1cm4gdTsNCisJCWVsc2UNCisJCQlyZXR1cm4gYy90Ow0KKwl9DQorCQkNCisJDQorCS8qKg0KKwkgKiBHZXRzIHRoZSBpZC4NCisJICoNCisJICogQHJldHVybiB0aGUgaWQNCisJICovDQorCXB1YmxpYyBTdHJpbmcgZ2V0SWQoKSB7DQorCQlyZXR1cm4gaWQ7DQorCX0NCisJDQorCS8qKg0KKwkgKiBTd2l0Y2ggdG8gZHVhbC4NCisJICovDQorCXB1YmxpYyB2b2lkIHN3aXRjaFRvRHVhbCgpew0KKwkJaWYoZGVmaW5pdGlvbiA9PSBEZWZpbml0aW9uLkRFRklORURfVSkNCisJCQl0aGlzLnUgPSAxLXU7DQorCQllbHNlDQorCQkJdGhpcy5jID0gdC1jOw0KKwl9DQorDQorCS8qIChub24tSmF2YWRvYykNCisJICogQHNlZSBqYXZhLmxhbmcuQ29tcGFyYWJsZSNjb21wYXJlVG8oamF2YS5sYW5nLk9iamVjdCkNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgaW50IGNvbXBhcmVUbyhUYXNrIG8pIHsNCisJCQ0KKwkJcmV0dXJuIHRoaXMuZ2V0VSgpLmNvbXBhcmVUbyhvLmdldFUoKSk7DQorCX0NCisNCisNCisJDQorDQorCQ0KKw0KK30NCisNCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tdWx0aWNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tdWx0aWNvcmUvcGFydGl0aW9uaW5nL1dvcnN0Rml0QmluUGFja2VyLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tdWx0aWNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tdWx0aWNvcmUvcGFydGl0aW9uaW5nL1dvcnN0Rml0QmluUGFja2VyLmphdmEKaW5kZXggMTc3YTBkMy4uNzQzNWFiZiAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbXVsdGljb3JlL3BhcnRpdGlvbmluZy9Xb3JzdEZpdEJpblBhY2tlci5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm11bHRpY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL211bHRpY29yZS9wYXJ0aXRpb25pbmcvV29yc3RGaXRCaW5QYWNrZXIuamF2YQpAQCAtMSwyMTggKzEsMjI1IEBACi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAtCi0gIC0gQ29weXJpZ2h0IChjKSAyMDE1LTIwMTYgVW5pdmVyc2l0eSBvZiBQYWRvdmEsIElUQUxZIC0gIEludGVjcyBTcEEgCi0gIC0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICAtIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICAtIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gIC0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAgLQotICAtIENvbnRyaWJ1dG9yczoKLSAgLQotICAtIEFsZXNzYW5kcm8gWm92aSBhem92aUBtYXRoLnVuaXBkLml0Ci0gIC0gU3RlZmFubyBQdXJpIHN0ZWZhbm8ucHVyaUBpbnRlY3MuaXQKLSAgLSBMYXVyYSBCYXJhY2NoaSBsYXVyYS5iYXJhY2NoaUBpbnRlY3MuaXQKLSAgLSBOaWNob2xhcyBQYWNpbmkgbmljaG9sYXMucGFjaW5pQGludGVjcy5pdCAgCi0gIC0KLSAgLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24gYW5kL29yIGluaXRpYWwgZG9jdW1lbnRhdGlvbgotICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL3BhY2thZ2Ugb3JnLnBvbGFyc3lzLmNoZXNzLm11bHRpY29yZS5wYXJ0aXRpb25pbmc7Ci0KLWltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OwotaW1wb3J0IGphdmEudXRpbC5BcnJheXM7Ci1pbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb247Ci1pbXBvcnQgamF2YS51dGlsLkNvbXBhcmF0b3I7Ci1pbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuTWFwOwotCi0vKioKLSAqIFRoZSBDbGFzcyBXb3JzdEZpdEJpblBhY2tlci4KLSAqLwotcHVibGljIGNsYXNzIFdvcnN0Rml0QmluUGFja2VyIGltcGxlbWVudHMgQmluUGFja2VyIHsKLQkKLQkvKiogVGhlIGRlY3JlYXNpbmcgb3JkZXJpbmcuICovCi0JcHJpdmF0ZSBmaW5hbCBib29sZWFuIERFQ1JFQVNJTkdfT1JERVJJTkcgPSB0cnVlOyAKLQotLy8JQE92ZXJyaWRlCi0vLwlwdWJsaWMgTWFwPEJpbiwgTGlzdDxUYXNrPj4gcGFjayhMaXN0PEJpbj4gYmlucywgTGlzdDxUYXNrPiB0YXNrcykgewkJCi0vLwkJCi0vLwkJTWFwPEJpbiwgTGlzdDxUYXNrPj4gdG9SZXR1cm4gPSBuZXcgSGFzaHRhYmxlPEJpbiwgTGlzdDxUYXNrPj4gKCk7Ci0vLwkJLy8gaW5pdCBvdXRwdXQKLS8vCQlmb3IoQmluIGJpbiA6IGJpbnMpCi0vLwkJCXRvUmV0dXJuLnB1dChiaW4sIG5ldyBBcnJheUxpc3Q8VGFzaz4oKSk7Ci0vLwkJCi0vLwkJCi0vLwkJaWYodGFza3Muc2l6ZSgpIDw9IGJpbnMuc2l6ZSgpKXsgLy8gdHJpdmlhbCBwYWNraW5nCi0vLwkJCWludCBpID0wOwotLy8JCQlmb3IoVGFzayB0YXNrIDogdGFza3MpewotLy8JCQkJQmluIGJpbiA9IGJpbnMuZ2V0KGkpOwotLy8JCQkJQXJyYXlMaXN0PFRhc2s+IHRoZUxpc3QgPSBuZXcgQXJyYXlMaXN0PFRhc2s+KCk7Ci0vLwkJCQl0aGVMaXN0LmFkZCh0YXNrKTsKLS8vCQkJCWJpbi5zZXRDYXBhY2l0eShiaW4uZ2V0Q2FwYWNpdHkoKSt0YXNrLmNvbXB1dGVVKCkpOwotLy8JCQkJdG9SZXR1cm4ucHV0KGJpbiwgdGhlTGlzdCk7Ci0vLwkJCQlpKys7Ci0vLwkJCX0KLS8vCQl9IGVsc2Ugey8vIG5vbWluYWwgY2FzZQotLy8JCQkKLS8vCQkJLy8gc29ydCB0aGUgdGFza3MgYnkgaW5jcmVhc2luZy9kZWNyZWFzaW5nIHV0aWxpc2F0aW9uCi0vLwkJCU9iamVjdFtdIGFsbFRhc2tzID0gdGFza3MudG9BcnJheSgpOwotLy8JCQkvL0FycmF5cy5zb3J0KGFsbFRhc2tzKTsKLS8vCQkJQXJyYXlzLnNvcnQoYWxsVGFza3MsIG5ldyBDb21wYXJhdG9yPE9iamVjdD4oKSB7Ci0vLwotLy8JCQkJQE92ZXJyaWRlCi0vLwkJCQlwdWJsaWMgaW50IGNvbXBhcmUoT2JqZWN0IG8xLCBPYmplY3QgbzIpIHsKLS8vCQkJCQlpZihERUNSRUFTSU5HX09SREVSSU5HKQotLy8JCQkJCQlyZXR1cm4gLSgoKFRhc2spbzEpLmNvbXB1dGVVKCkpLmNvbXBhcmVUbygoKFRhc2spbzIpLmNvbXB1dGVVKCkpOwotLy8JCQkJCWVsc2UKLS8vCQkJCQkJcmV0dXJuICgoKFRhc2spbzEpLmNvbXB1dGVVKCkpLmNvbXBhcmVUbygoKFRhc2spbzIpLmNvbXB1dGVVKCkpOwotLy8JCQkJfQotLy8JCQl9KTsKLS8vCQkJCi0vLwkJCWludCBpbmRleEVtcHRpZXN0QmluID0gMDsKLS8vCQkJZmxvYXQgZW1wdGllc3RDYXBhY2l0eSA9IDAuMGY7Ci0vLwkJCU9iamVjdFtdIGFsbEJpbnMgPSBiaW5zLnRvQXJyYXkoKTsKLS8vCQkJCi0vLwkJCQotLy8JCQlmb3IoaW50IHRhc2tJbmRleCA9IDA7IHRhc2tJbmRleCA8IGFsbFRhc2tzLmxlbmd0aDsgdGFza0luZGV4KyspewotLy8JCQkJCi0vLwkJCQlUYXNrIHRhc2sgPSAoVGFzaylhbGxUYXNrc1t0YXNrSW5kZXhdOwotLy8JCQkJYm9vbGVhbiBmb3VuZCA9IGZhbHNlOwotLy8JCQkJCi0vLwkJCQlCaW4gYmluID0gKEJpbilhbGxCaW5zW2luZGV4RW1wdGllc3RCaW5dOwotLy8JCQkJLy8gdHJ5IHdpdGggZW1wdGllc3QgYmluCi0vLwkJCQlpZihiaW4uZ2V0Q2FwYWNpdHkoKSArIHRhc2suY29tcHV0ZVUoKSA8PSBiaW4uZ2V0U2l6ZSgpKQotLy8JCQkJCWZvdW5kID0gdHJ1ZTsKLS8vCQkJCWVsc2UgeyAvL3RyeSB3aXRoIG90aGVyIGJpbnMgCi0vLwkJCQkJZm9yKGludCBpbmRleEN1cnJlbnRCaW4gPSAwOyBpbmRleEN1cnJlbnRCaW4gPCBhbGxCaW5zLmxlbmd0aDsgaW5kZXhDdXJyZW50QmluKyspewotLy8JCQkJCQlpZiAoaW5kZXhDdXJyZW50QmluID09IGluZGV4RW1wdGllc3RCaW4pIC8vIGFscmVhZHkgdmlzaXRlZAotLy8JCQkJCQkJY29udGludWU7Ci0vLwkJCQkJCWJpbiA9KEJpbilhbGxCaW5zW2luZGV4Q3VycmVudEJpbl07Ci0vLwkJCQkJCWlmKGJpbi5nZXRDYXBhY2l0eSgpICsgdGFzay5jb21wdXRlVSgpIDw9IGJpbi5nZXRTaXplKCkpewotLy8JCQkJCQkJZm91bmQgPSB0cnVlOwotLy8JCQkJCQkJYnJlYWs7Ci0vLwkJCQkJCX0KLS8vCQkJCQl9Ci0vLwkJCQl9Ci0vLwkJCQkKLS8vCQkJCWlmKCFmb3VuZCkKLS8vCQkJCQlTeXN0ZW0ub3V0LnByaW50bG4oIlBBQ0tJTkcgRkFJTEVEIik7Ci0vLwkJCQllbHNlIHsKLS8vCQkJCQl0YXNrLnNldE93bmVyKGJpbik7Ci0vLwkJCQkJYmluLnNldENhcGFjaXR5KGJpbi5nZXRDYXBhY2l0eSgpK3Rhc2suY29tcHV0ZVUoKSk7Ci0vLwkJCQkJLy8gc3RvcmUgdG8gb3V0cHV0Ci0vLwkJCQkJTGlzdDxUYXNrPiB0aGVUYXNrcyA9IHRvUmV0dXJuLmdldChiaW4pOwotLy8JCQkJCXRoZVRhc2tzLmFkZCh0YXNrKTsKLS8vCQkJCQl0b1JldHVybi5wdXQoYmluLCB0aGVUYXNrcyk7Ci0vLwkJCQkJZm91bmQgPSB0cnVlOwotLy8JCQkJCS8vIHVwZGF0ZSBpbmZvIG9uIGVtcHRpZXN0IGJpbgotLy8JCQkJCWVtcHRpZXN0Q2FwYWNpdHkgPSBGbG9hdC5NQVhfVkFMVUU7Ci0vLwkJCQkJZm9yKGludCBiaW5JbmRleCA9IDA7IGJpbkluZGV4IDwgYWxsQmlucy5sZW5ndGg7IGJpbkluZGV4KyspewotLy8JCQkJCQlmbG9hdCBjdXJyZW50Q2FwYWNpdHkgPSAoKEJpbilhbGxCaW5zW2JpbkluZGV4XSkuZ2V0Q2FwYWNpdHkoKTsKLS8vCQkJCQkJaWYoY3VycmVudENhcGFjaXR5IDwgZW1wdGllc3RDYXBhY2l0eSl7Ci0vLwkJCQkJCQllbXB0aWVzdENhcGFjaXR5ID0gY3VycmVudENhcGFjaXR5OwotLy8JCQkJCQkJaW5kZXhFbXB0aWVzdEJpbiA9IGJpbkluZGV4OwotLy8JCQkJCQl9Ci0vLwkJCQkJfQotLy8JCQkJfQotLy8JCQl9Ci0vLwkJCQotLy8JCX0KLS8vCQlyZXR1cm4gdG9SZXR1cm47Ci0vLwl9Ci0KLQkvKiAobm9uLUphdmFkb2MpCi0gKiBAc2VlIG9yZy5wb2xhcnN5cy5jaGVzcy5tdWx0aWNvcmUucGFydGl0aW9uaW5nLkJpblBhY2tlciNwYWNrKGphdmEudXRpbC5MaXN0LCBqYXZhLnV0aWwuTGlzdCkKLSAqLwotQE92ZXJyaWRlCi0JcHVibGljIE1hcDxCaW4sIExpc3Q8VGFzaz4+IHBhY2soTGlzdDxCaW4+IGJpbnMsIExpc3Q8VGFzaz4gdGFza3MpIHsJCQotCQkKLQkJTWFwPEJpbiwgTGlzdDxUYXNrPj4gdG9SZXR1cm4gPSBuZXcgSGFzaHRhYmxlPEJpbiwgTGlzdDxUYXNrPj4gKCk7Ci0JCQotCQkvLyBpbml0IG91dHB1dAotLy8JCWZvcihCaW4gYmluIDogYmlucykKLS8vCQkJdG9SZXR1cm4ucHV0KGJpbiwgbmV3IEFycmF5TGlzdDxUYXNrPigpKTsKLQkJCi0JCQotCQlpZih0YXNrcy5zaXplKCkgPD0gYmlucy5zaXplKCkpeyAvLyB0cml2aWFsIHBhY2tpbmcKLQkJCWludCBpID0wOwotCQkJZm9yKFRhc2sgdGFzayA6IHRhc2tzKXsKLQkJCQlCaW4gYmluID0gYmlucy5nZXQoaSk7Ci0JCQkJQXJyYXlMaXN0PFRhc2s+IHRoZUxpc3QgPSBuZXcgQXJyYXlMaXN0PFRhc2s+KCk7Ci0JCQkJdGhlTGlzdC5hZGQodGFzayk7Ci0JCQkJYmluLnNldENhcGFjaXR5KGJpbi5nZXRDYXBhY2l0eSgpK3Rhc2suZ2V0VSgpKTsKLQkJCQl0b1JldHVybi5wdXQoYmluLCB0aGVMaXN0KTsKLQkJCQlpKys7Ci0JCQl9Ci0JCX0gZWxzZSB7Ly8gbm9taW5hbCBjYXNlCi0JCQkKLQkJCS8vIHNvcnQgdGhlIHRhc2tzIGJ5IGluY3JlYXNpbmcvZGVjcmVhc2luZyB1dGlsaXphdGlvbgotCQkJT2JqZWN0W10gYWxsVGFza3MgPSB0YXNrcy50b0FycmF5KCk7Ci0JCQkvL0FycmF5cy5zb3J0KGFsbFRhc2tzKTsKLQkJCUFycmF5cy5zb3J0KGFsbFRhc2tzLCBuZXcgQ29tcGFyYXRvcjxPYmplY3Q+KCkgewotCi0JCQkJQE92ZXJyaWRlCi0JCQkJcHVibGljIGludCBjb21wYXJlKE9iamVjdCBvMSwgT2JqZWN0IG8yKSB7Ci0JCQkJCWlmKERFQ1JFQVNJTkdfT1JERVJJTkcpCi0JCQkJCQlyZXR1cm4gLSgoKFRhc2spbzEpLmdldFUoKSkuY29tcGFyZVRvKCgoVGFzaylvMikuZ2V0VSgpKTsKLQkJCQkJZWxzZQotCQkJCQkJcmV0dXJuICgoKFRhc2spbzEpLmdldFUoKSkuY29tcGFyZVRvKCgoVGFzaylvMikuZ2V0VSgpKTsKLQkJCQl9Ci0JCQl9KTsKLQkJCQotCQkJaW50IGluZGV4RW1wdGllc3RCaW4gPSAwOwotCQkJZmxvYXQgZW1wdGllc3RDYXBhY2l0eSA9IDAuMGY7Ci0JCQlPYmplY3RbXSBhbGxCaW5zID0ge25ldyBCaW4oaW5kZXhFbXB0aWVzdEJpbil9OyAvLyBlbnN1cmUgdGhlcmUgaXMgYXQgbGVhc3QgMSBiaW4gZXZlbiBpbiBjYXNlIGFuIGVtcHR5IGxpc3QgaGFzIGJlZW4gcGFzc2VkICh0aGlzIGlzIHRoZSBjYXNlIGR1cmluZyBSVU4gcmVkdWN0aW9uKQotCQkJaW50IGluZGV4TGFzdEJpbiA9IDA7Ci0JCQlpZihiaW5zLnNpemUoKSA+IDApewotCQkJCWFsbEJpbnMgPSBiaW5zLnRvQXJyYXkoKTsKLQkJCQlpbmRleExhc3RCaW4gPSBiaW5zLnNpemUoKS0xOwotCQkJfQotCQkJCQotCQkJCi0JCQkKLQkJCWZvcihpbnQgdGFza0luZGV4ID0gMDsgdGFza0luZGV4IDwgYWxsVGFza3MubGVuZ3RoOyB0YXNrSW5kZXgrKyl7Ci0JCQkJCi0JCQkJVGFzayB0YXNrID0gKFRhc2spYWxsVGFza3NbdGFza0luZGV4XTsKLQkJCQlCaW4gYmluID0gKEJpbilhbGxCaW5zW2luZGV4RW1wdGllc3RCaW5dOwotCQkJCS8vIHRyeSB3aXRoIGVtcHRpZXN0IGJpbgotCQkJCWlmKGJpbi5nZXRDYXBhY2l0eSgpICsgdGFzay5nZXRVKCkgPD0gYmluLmdldFNpemUoKSl7Ci0JCQkJCXRhc2suc2V0T3duZXIoYmluKTsKLQkJCQkJYmluLnNldENhcGFjaXR5KGJpbi5nZXRDYXBhY2l0eSgpK3Rhc2suZ2V0VSgpKTsKLQkJCQkJLy8gc3RvcmUgdG8gb3V0cHV0Ci0JCQkJCUxpc3Q8VGFzaz4gdGhlVGFza3MgPSB0b1JldHVybi5nZXQoYmluKTsKLQkJCQkJaWYodGhlVGFza3MgPT0gbnVsbCkgLy8gbmVlZGVkIGJlY2F1c2Ugd2UgZG9uJ3QgaW5pdGlhbGl6ZSB0b1JldHVybiBhdCB0aGUgYmVnaW5uaW5nLCB0byBwcm92aWRlIGlucHV0L291dHB1dCBvZiB2YXJpYWJsZSBzaXplCi0JCQkJCQl0aGVUYXNrcyA9IG5ldyBBcnJheUxpc3Q8VGFzaz4oKTsKLQkJCQkJdGhlVGFza3MuYWRkKHRhc2spOwotCQkJCQl0b1JldHVybi5wdXQoYmluLCB0aGVUYXNrcyk7Ci0JCQkJfQotCQkJCWVsc2UgewotCQkJCQkvL1N5c3RlbS5vdXQucHJpbnRsbigiUEFSVElUSU9OSU5HIEZBSUxFRCwgT1BFTklORyBORVcgQklOIik7Ci0JCQkJCS8vIG9wZW4gbmV3IGJpbgotCQkJCQlCaW4gbmV3QmluID0gbmV3IEJpbihuZXcgSW50ZWdlcigrK2luZGV4TGFzdEJpbikpOwotCQkJCQl0YXNrLnNldE93bmVyKG5ld0Jpbik7Ci0JCQkJCW5ld0Jpbi5zZXRDYXBhY2l0eShuZXdCaW4uZ2V0Q2FwYWNpdHkoKSt0YXNrLmdldFUoKSk7Ci0JCQkJCUFycmF5TGlzdDxUYXNrPiB0aGVMaXN0ID0gbmV3IEFycmF5TGlzdDxUYXNrPigpOwotCQkJCQl0aGVMaXN0LmFkZCh0YXNrKTsKLQkJCQkJdG9SZXR1cm4ucHV0KG5ld0JpbiwgdGhlTGlzdCk7Ci0JCQkJCQotCQkJCQkvLyBhZGQgYmluIHRvIHRoZSBjb21tb24gYXJyYXkgCi0JCQkJCU9iamVjdFtdIHRtcEJpbkFycmF5ID0gQXJyYXlzLmNvcHlPZihhbGxCaW5zLCBhbGxCaW5zLmxlbmd0aCArIDEpOwotCQkJCQlhc3NlcnQodG1wQmluQXJyYXkubGVuZ3RoIC0xID09IGluZGV4TGFzdEJpbik7Ci0JCQkJCXRtcEJpbkFycmF5W2luZGV4TGFzdEJpbl0gPSBuZXdCaW47Ci0JCQkJCWFsbEJpbnMgPSB0bXBCaW5BcnJheTsKLQkJCQl9Ci0JCQkJCi0JCQkJLy8gdXBkYXRlIGluZm8gb24gZW1wdGllc3QgYmluCi0JCQkJZW1wdGllc3RDYXBhY2l0eSA9IEZsb2F0Lk1BWF9WQUxVRTsKLQkJCQlmb3IoaW50IGJpbkluZGV4ID0gMDsgYmluSW5kZXggPCBhbGxCaW5zLmxlbmd0aDsgYmluSW5kZXgrKyl7Ci0JCQkJCWZsb2F0IGN1cnJlbnRDYXBhY2l0eSA9ICgoQmluKWFsbEJpbnNbYmluSW5kZXhdKS5nZXRDYXBhY2l0eSgpOwotCQkJCQlpZihjdXJyZW50Q2FwYWNpdHkgPCBlbXB0aWVzdENhcGFjaXR5KXsKLQkJCQkJCWVtcHRpZXN0Q2FwYWNpdHkgPSBjdXJyZW50Q2FwYWNpdHk7Ci0JCQkJCQlpbmRleEVtcHRpZXN0QmluID0gYmluSW5kZXg7Ci0JCQkJCX0KLQkJCQl9Ci0JCQl9Ci0JCQkKLQkJfQotCQlyZXR1cm4gdG9SZXR1cm47Ci0JfQotfQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgDQorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KKyAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorICAtDQorICAtIENvcHlyaWdodCAoYykgMjAxNS0yMDE2IFVuaXZlcnNpdHkgb2YgUGFkb3ZhLCBJVEFMWSAtICBJbnRlY3MgU3BBIA0KKyAgLSBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICAtIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KKyAgLSB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAgLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KKyAgLQ0KKyAgLSBDb250cmlidXRvcnM6DQorICAtDQorICAtIEFsZXNzYW5kcm8gWm92aSBhem92aUBtYXRoLnVuaXBkLml0DQorICAtIFN0ZWZhbm8gUHVyaSBzdGVmYW5vLnB1cmlAaW50ZWNzLml0DQorICAtIExhdXJhIEJhcmFjY2hpIGxhdXJhLmJhcmFjY2hpQGludGVjcy5pdA0KKyAgLSBOaWNob2xhcyBQYWNpbmkgbmljaG9sYXMucGFjaW5pQGludGVjcy5pdCAgDQorICAtDQorICAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbiBhbmQvb3IgaW5pdGlhbCBkb2N1bWVudGF0aW9uDQorICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL3BhY2thZ2Ugb3JnLnBvbGFyc3lzLmNoZXNzLm11bHRpY29yZS5wYXJ0aXRpb25pbmc7DQorDQoraW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7DQoraW1wb3J0IGphdmEudXRpbC5BcnJheXM7DQoraW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOw0KK2ltcG9ydCBqYXZhLnV0aWwuQ29tcGFyYXRvcjsNCitpbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsNCitpbXBvcnQgamF2YS51dGlsLkxpc3Q7DQoraW1wb3J0IGphdmEudXRpbC5NYXA7DQorDQorLyoqDQorICogVGhlIENsYXNzIFdvcnN0Rml0QmluUGFja2VyLg0KKyAqLw0KK3B1YmxpYyBjbGFzcyBXb3JzdEZpdEJpblBhY2tlciBpbXBsZW1lbnRzIEJpblBhY2tlciB7DQorCQ0KKwkvKiogVGhlIGRlY3JlYXNpbmcgb3JkZXJpbmcuICovDQorCXByaXZhdGUgZmluYWwgYm9vbGVhbiBERUNSRUFTSU5HX09SREVSSU5HID0gdHJ1ZTsgDQorDQorLy8JQE92ZXJyaWRlDQorLy8JcHVibGljIE1hcDxCaW4sIExpc3Q8VGFzaz4+IHBhY2soTGlzdDxCaW4+IGJpbnMsIExpc3Q8VGFzaz4gdGFza3MpIHsJCQ0KKy8vCQkNCisvLwkJTWFwPEJpbiwgTGlzdDxUYXNrPj4gdG9SZXR1cm4gPSBuZXcgSGFzaHRhYmxlPEJpbiwgTGlzdDxUYXNrPj4gKCk7DQorLy8JCS8vIGluaXQgb3V0cHV0DQorLy8JCWZvcihCaW4gYmluIDogYmlucykNCisvLwkJCXRvUmV0dXJuLnB1dChiaW4sIG5ldyBBcnJheUxpc3Q8VGFzaz4oKSk7DQorLy8JCQ0KKy8vCQkNCisvLwkJaWYodGFza3Muc2l6ZSgpIDw9IGJpbnMuc2l6ZSgpKXsgLy8gdHJpdmlhbCBwYWNraW5nDQorLy8JCQlpbnQgaSA9MDsNCisvLwkJCWZvcihUYXNrIHRhc2sgOiB0YXNrcyl7DQorLy8JCQkJQmluIGJpbiA9IGJpbnMuZ2V0KGkpOw0KKy8vCQkJCUFycmF5TGlzdDxUYXNrPiB0aGVMaXN0ID0gbmV3IEFycmF5TGlzdDxUYXNrPigpOw0KKy8vCQkJCXRoZUxpc3QuYWRkKHRhc2spOw0KKy8vCQkJCWJpbi5zZXRDYXBhY2l0eShiaW4uZ2V0Q2FwYWNpdHkoKSt0YXNrLmNvbXB1dGVVKCkpOw0KKy8vCQkJCXRvUmV0dXJuLnB1dChiaW4sIHRoZUxpc3QpOw0KKy8vCQkJCWkrKzsNCisvLwkJCX0NCisvLwkJfSBlbHNlIHsvLyBub21pbmFsIGNhc2UNCisvLwkJCQ0KKy8vCQkJLy8gc29ydCB0aGUgdGFza3MgYnkgaW5jcmVhc2luZy9kZWNyZWFzaW5nIHV0aWxpc2F0aW9uDQorLy8JCQlPYmplY3RbXSBhbGxUYXNrcyA9IHRhc2tzLnRvQXJyYXkoKTsNCisvLwkJCS8vQXJyYXlzLnNvcnQoYWxsVGFza3MpOw0KKy8vCQkJQXJyYXlzLnNvcnQoYWxsVGFza3MsIG5ldyBDb21wYXJhdG9yPE9iamVjdD4oKSB7DQorLy8NCisvLwkJCQlAT3ZlcnJpZGUNCisvLwkJCQlwdWJsaWMgaW50IGNvbXBhcmUoT2JqZWN0IG8xLCBPYmplY3QgbzIpIHsNCisvLwkJCQkJaWYoREVDUkVBU0lOR19PUkRFUklORykNCisvLwkJCQkJCXJldHVybiAtKCgoVGFzaylvMSkuY29tcHV0ZVUoKSkuY29tcGFyZVRvKCgoVGFzaylvMikuY29tcHV0ZVUoKSk7DQorLy8JCQkJCWVsc2UNCisvLwkJCQkJCXJldHVybiAoKChUYXNrKW8xKS5jb21wdXRlVSgpKS5jb21wYXJlVG8oKChUYXNrKW8yKS5jb21wdXRlVSgpKTsNCisvLwkJCQl9DQorLy8JCQl9KTsNCisvLwkJCQ0KKy8vCQkJaW50IGluZGV4RW1wdGllc3RCaW4gPSAwOw0KKy8vCQkJZmxvYXQgZW1wdGllc3RDYXBhY2l0eSA9IDAuMGY7DQorLy8JCQlPYmplY3RbXSBhbGxCaW5zID0gYmlucy50b0FycmF5KCk7DQorLy8JCQkNCisvLwkJCQ0KKy8vCQkJZm9yKGludCB0YXNrSW5kZXggPSAwOyB0YXNrSW5kZXggPCBhbGxUYXNrcy5sZW5ndGg7IHRhc2tJbmRleCsrKXsNCisvLwkJCQkNCisvLwkJCQlUYXNrIHRhc2sgPSAoVGFzaylhbGxUYXNrc1t0YXNrSW5kZXhdOw0KKy8vCQkJCWJvb2xlYW4gZm91bmQgPSBmYWxzZTsNCisvLwkJCQkNCisvLwkJCQlCaW4gYmluID0gKEJpbilhbGxCaW5zW2luZGV4RW1wdGllc3RCaW5dOw0KKy8vCQkJCS8vIHRyeSB3aXRoIGVtcHRpZXN0IGJpbg0KKy8vCQkJCWlmKGJpbi5nZXRDYXBhY2l0eSgpICsgdGFzay5jb21wdXRlVSgpIDw9IGJpbi5nZXRTaXplKCkpDQorLy8JCQkJCWZvdW5kID0gdHJ1ZTsNCisvLwkJCQllbHNlIHsgLy90cnkgd2l0aCBvdGhlciBiaW5zIA0KKy8vCQkJCQlmb3IoaW50IGluZGV4Q3VycmVudEJpbiA9IDA7IGluZGV4Q3VycmVudEJpbiA8IGFsbEJpbnMubGVuZ3RoOyBpbmRleEN1cnJlbnRCaW4rKyl7DQorLy8JCQkJCQlpZiAoaW5kZXhDdXJyZW50QmluID09IGluZGV4RW1wdGllc3RCaW4pIC8vIGFscmVhZHkgdmlzaXRlZA0KKy8vCQkJCQkJCWNvbnRpbnVlOw0KKy8vCQkJCQkJYmluID0oQmluKWFsbEJpbnNbaW5kZXhDdXJyZW50QmluXTsNCisvLwkJCQkJCWlmKGJpbi5nZXRDYXBhY2l0eSgpICsgdGFzay5jb21wdXRlVSgpIDw9IGJpbi5nZXRTaXplKCkpew0KKy8vCQkJCQkJCWZvdW5kID0gdHJ1ZTsNCisvLwkJCQkJCQlicmVhazsNCisvLwkJCQkJCX0NCisvLwkJCQkJfQ0KKy8vCQkJCX0NCisvLwkJCQkNCisvLwkJCQlpZighZm91bmQpDQorLy8JCQkJCVN5c3RlbS5vdXQucHJpbnRsbigiUEFDS0lORyBGQUlMRUQiKTsNCisvLwkJCQllbHNlIHsNCisvLwkJCQkJdGFzay5zZXRPd25lcihiaW4pOw0KKy8vCQkJCQliaW4uc2V0Q2FwYWNpdHkoYmluLmdldENhcGFjaXR5KCkrdGFzay5jb21wdXRlVSgpKTsNCisvLwkJCQkJLy8gc3RvcmUgdG8gb3V0cHV0DQorLy8JCQkJCUxpc3Q8VGFzaz4gdGhlVGFza3MgPSB0b1JldHVybi5nZXQoYmluKTsNCisvLwkJCQkJdGhlVGFza3MuYWRkKHRhc2spOw0KKy8vCQkJCQl0b1JldHVybi5wdXQoYmluLCB0aGVUYXNrcyk7DQorLy8JCQkJCWZvdW5kID0gdHJ1ZTsNCisvLwkJCQkJLy8gdXBkYXRlIGluZm8gb24gZW1wdGllc3QgYmluDQorLy8JCQkJCWVtcHRpZXN0Q2FwYWNpdHkgPSBGbG9hdC5NQVhfVkFMVUU7DQorLy8JCQkJCWZvcihpbnQgYmluSW5kZXggPSAwOyBiaW5JbmRleCA8IGFsbEJpbnMubGVuZ3RoOyBiaW5JbmRleCsrKXsNCisvLwkJCQkJCWZsb2F0IGN1cnJlbnRDYXBhY2l0eSA9ICgoQmluKWFsbEJpbnNbYmluSW5kZXhdKS5nZXRDYXBhY2l0eSgpOw0KKy8vCQkJCQkJaWYoY3VycmVudENhcGFjaXR5IDwgZW1wdGllc3RDYXBhY2l0eSl7DQorLy8JCQkJCQkJZW1wdGllc3RDYXBhY2l0eSA9IGN1cnJlbnRDYXBhY2l0eTsNCisvLwkJCQkJCQlpbmRleEVtcHRpZXN0QmluID0gYmluSW5kZXg7DQorLy8JCQkJCQl9DQorLy8JCQkJCX0NCisvLwkJCQl9DQorLy8JCQl9DQorLy8JCQkNCisvLwkJfQ0KKy8vCQlyZXR1cm4gdG9SZXR1cm47DQorLy8JfQ0KKw0KKwkvKiAobm9uLUphdmFkb2MpDQorICogQHNlZSBvcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlLnBhcnRpdGlvbmluZy5CaW5QYWNrZXIjcGFjayhqYXZhLnV0aWwuTGlzdCwgamF2YS51dGlsLkxpc3QpDQorICovDQorQE92ZXJyaWRlDQorCXB1YmxpYyBNYXA8QmluLCBMaXN0PFRhc2s+PiBwYWNrKExpc3Q8QmluPiBiaW5zLCBMaXN0PFRhc2s+IHRhc2tzKSB7CQkNCisJCQ0KKwkJTWFwPEJpbiwgTGlzdDxUYXNrPj4gdG9SZXR1cm4gPSBuZXcgSGFzaHRhYmxlPEJpbiwgTGlzdDxUYXNrPj4gKCk7DQorCQkNCisJCS8vIGluaXQgb3V0cHV0DQorLy8JCWZvcihCaW4gYmluIDogYmlucykNCisvLwkJCXRvUmV0dXJuLnB1dChiaW4sIG5ldyBBcnJheUxpc3Q8VGFzaz4oKSk7DQorCQkNCisJCQ0KKwkJaWYodGFza3Muc2l6ZSgpIDw9IGJpbnMuc2l6ZSgpKXsgLy8gdHJpdmlhbCBwYWNraW5nDQorCQkJaW50IGkgPTA7DQorCQkJZm9yKFRhc2sgdGFzayA6IHRhc2tzKXsNCisJCQkJQmluIGJpbiA9IGJpbnMuZ2V0KGkpOw0KKwkJCQlBcnJheUxpc3Q8VGFzaz4gdGhlTGlzdCA9IG5ldyBBcnJheUxpc3Q8VGFzaz4oKTsNCisJCQkJdGhlTGlzdC5hZGQodGFzayk7DQorCQkJCWJpbi5zZXRDYXBhY2l0eShiaW4uZ2V0Q2FwYWNpdHkoKSt0YXNrLmdldFUoKSk7DQorCQkJCXRvUmV0dXJuLnB1dChiaW4sIHRoZUxpc3QpOw0KKwkJCQlpKys7DQorCQkJfQ0KKwkJfSBlbHNlIHsvLyBub21pbmFsIGNhc2UNCisJCQkNCisJCQkvLyBzb3J0IHRoZSB0YXNrcyBieSBpbmNyZWFzaW5nL2RlY3JlYXNpbmcgdXRpbGl6YXRpb24NCisJCQlPYmplY3RbXSBhbGxUYXNrcyA9IHRhc2tzLnRvQXJyYXkoKTsNCisJCQkvL0FycmF5cy5zb3J0KGFsbFRhc2tzKTsNCisJCQlBcnJheXMuc29ydChhbGxUYXNrcywgbmV3IENvbXBhcmF0b3I8T2JqZWN0PigpIHsNCisNCisJCQkJQE92ZXJyaWRlDQorCQkJCXB1YmxpYyBpbnQgY29tcGFyZShPYmplY3QgbzEsIE9iamVjdCBvMikgew0KKwkJCQkJaWYoREVDUkVBU0lOR19PUkRFUklORykNCisJCQkJCQlyZXR1cm4gLSgoKFRhc2spbzEpLmdldFUoKSkuY29tcGFyZVRvKCgoVGFzaylvMikuZ2V0VSgpKTsNCisJCQkJCWVsc2UNCisJCQkJCQlyZXR1cm4gKCgoVGFzaylvMSkuZ2V0VSgpKS5jb21wYXJlVG8oKChUYXNrKW8yKS5nZXRVKCkpOw0KKwkJCQl9DQorCQkJfSk7DQorCQkJDQorCQkJaW50IGluZGV4RW1wdGllc3RCaW4gPSAwOw0KKwkJCWZsb2F0IGVtcHRpZXN0Q2FwYWNpdHkgPSAwLjBmOw0KKwkJCU9iamVjdFtdIGFsbEJpbnMgPSB7bmV3IEJpbihpbmRleEVtcHRpZXN0QmluKX07IC8vIGVuc3VyZSB0aGVyZSBpcyBhdCBsZWFzdCAxIGJpbiBldmVuIGluIGNhc2UgYW4gZW1wdHkgbGlzdCBoYXMgYmVlbiBwYXNzZWQgKHRoaXMgaXMgdGhlIGNhc2UgZHVyaW5nIFJVTiByZWR1Y3Rpb24pDQorCQkJaW50IGluZGV4TGFzdEJpbiA9IDA7DQorCQkJaWYoYmlucy5zaXplKCkgPiAwKXsNCisJCQkJYWxsQmlucyA9IGJpbnMudG9BcnJheSgpOw0KKwkJCQlpbmRleExhc3RCaW4gPSBiaW5zLnNpemUoKS0xOw0KKwkJCX0NCisJCQkJDQorCQkJDQorCQkJDQorCQkJZm9yKGludCB0YXNrSW5kZXggPSAwOyB0YXNrSW5kZXggPCBhbGxUYXNrcy5sZW5ndGg7IHRhc2tJbmRleCsrKXsNCisJCQkJDQorCQkJCVRhc2sgdGFzayA9IChUYXNrKWFsbFRhc2tzW3Rhc2tJbmRleF07DQorCQkJCUJpbiBiaW4gPSAoQmluKWFsbEJpbnNbaW5kZXhFbXB0aWVzdEJpbl07DQorCQkJCS8vIHRyeSB3aXRoIGVtcHRpZXN0IGJpbg0KKwkJCQlpZihiaW4uZ2V0Q2FwYWNpdHkoKSArIHRhc2suZ2V0VSgpIDw9IGJpbi5nZXRTaXplKCkpew0KKwkJCQkJdGFzay5zZXRPd25lcihiaW4pOw0KKwkJCQkJYmluLnNldENhcGFjaXR5KGJpbi5nZXRDYXBhY2l0eSgpK3Rhc2suZ2V0VSgpKTsNCisJCQkJCS8vIHN0b3JlIHRvIG91dHB1dA0KKwkJCQkJTGlzdDxUYXNrPiB0aGVUYXNrcyA9IHRvUmV0dXJuLmdldChiaW4pOw0KKwkJCQkJaWYodGhlVGFza3MgPT0gbnVsbCkgLy8gbmVlZGVkIGJlY2F1c2Ugd2UgZG9uJ3QgaW5pdGlhbGl6ZSB0b1JldHVybiBhdCB0aGUgYmVnaW5uaW5nLCB0byBwcm92aWRlIGlucHV0L291dHB1dCBvZiB2YXJpYWJsZSBzaXplDQorCQkJCQkJdGhlVGFza3MgPSBuZXcgQXJyYXlMaXN0PFRhc2s+KCk7DQorCQkJCQl0aGVUYXNrcy5hZGQodGFzayk7DQorCQkJCQl0b1JldHVybi5wdXQoYmluLCB0aGVUYXNrcyk7DQorCQkJCX0NCisJCQkJZWxzZSB7DQorCQkJCQkvL1N5c3RlbS5vdXQucHJpbnRsbigiUEFSVElUSU9OSU5HIEZBSUxFRCwgT1BFTklORyBORVcgQklOIik7DQorCQkJCQkvLyBvcGVuIG5ldyBiaW4NCisJCQkJCUJpbiBuZXdCaW4gPSBuZXcgQmluKG5ldyBJbnRlZ2VyKCsraW5kZXhMYXN0QmluKSk7DQorCQkJCQl0YXNrLnNldE93bmVyKG5ld0Jpbik7DQorCQkJCQluZXdCaW4uc2V0Q2FwYWNpdHkobmV3QmluLmdldENhcGFjaXR5KCkrdGFzay5nZXRVKCkpOw0KKwkJCQkJQXJyYXlMaXN0PFRhc2s+IHRoZUxpc3QgPSBuZXcgQXJyYXlMaXN0PFRhc2s+KCk7DQorCQkJCQl0aGVMaXN0LmFkZCh0YXNrKTsNCisJCQkJCXRvUmV0dXJuLnB1dChuZXdCaW4sIHRoZUxpc3QpOw0KKwkJCQkJDQorCQkJCQkvLyBhZGQgYmluIHRvIHRoZSBjb21tb24gYXJyYXkgDQorCQkJCQlPYmplY3RbXSB0bXBCaW5BcnJheSA9IEFycmF5cy5jb3B5T2YoYWxsQmlucywgYWxsQmlucy5sZW5ndGggKyAxKTsNCisJCQkJCWFzc2VydCh0bXBCaW5BcnJheS5sZW5ndGggLTEgPT0gaW5kZXhMYXN0QmluKTsNCisJCQkJCXRtcEJpbkFycmF5W2luZGV4TGFzdEJpbl0gPSBuZXdCaW47DQorCQkJCQlhbGxCaW5zID0gdG1wQmluQXJyYXk7DQorCQkJCX0NCisJCQkJDQorCQkJCS8vIHVwZGF0ZSBpbmZvIG9uIGVtcHRpZXN0IGJpbg0KKwkJCQllbXB0aWVzdENhcGFjaXR5ID0gRmxvYXQuTUFYX1ZBTFVFOw0KKwkJCQlmb3IoaW50IGJpbkluZGV4ID0gMDsgYmluSW5kZXggPCBhbGxCaW5zLmxlbmd0aDsgYmluSW5kZXgrKyl7DQorCQkJCQlmbG9hdCBjdXJyZW50Q2FwYWNpdHkgPSAoKEJpbilhbGxCaW5zW2JpbkluZGV4XSkuZ2V0Q2FwYWNpdHkoKTsNCisJCQkJCWlmKGN1cnJlbnRDYXBhY2l0eSA8IGVtcHRpZXN0Q2FwYWNpdHkpew0KKwkJCQkJCWVtcHRpZXN0Q2FwYWNpdHkgPSBjdXJyZW50Q2FwYWNpdHk7DQorCQkJCQkJaW5kZXhFbXB0aWVzdEJpbiA9IGJpbkluZGV4Ow0KKwkJCQkJfQ0KKwkJCQl9DQorCQkJfQ0KKwkJCQ0KKwkJfQ0KKwkJcmV0dXJuIHRvUmV0dXJuOw0KKwl9DQorfQ0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm11bHRpY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL211bHRpY29yZS9wYXJ0aXRpb25pbmcvcGFja2FnZS5odG1sIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbXVsdGljb3JlL3BhcnRpdGlvbmluZy9wYWNrYWdlLmh0bWwKaW5kZXggN2Q3ZDU0Ni4uZmZhNmI5MyAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbXVsdGljb3JlL3BhcnRpdGlvbmluZy9wYWNrYWdlLmh0bWwKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbXVsdGljb3JlL3BhcnRpdGlvbmluZy9wYWNrYWdlLmh0bWwKQEAgLTEsNyArMSwxNCBAQAorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisjIENvcHlyaWdodCAoQykgMjAyMCANCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisjIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KKyMgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisjIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiA8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4NCiA8aHRtbD4NCiA8aGVhZD48L2hlYWQ+DQogPGJvZHk+DQogICBQcm92aWRlcy4uLg0KIDwvYm9keT4NCi08L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorPC9odG1sPg0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm11bHRpY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL211bHRpY29yZS91dGlscy9HZW5lcmF0b3JVdGlscy5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbXVsdGljb3JlL3V0aWxzL0dlbmVyYXRvclV0aWxzLmphdmEKaW5kZXggYzQyYWU0NC4uNTIxMDViZiAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbXVsdGljb3JlL3V0aWxzL0dlbmVyYXRvclV0aWxzLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbXVsdGljb3JlL3V0aWxzL0dlbmVyYXRvclV0aWxzLmphdmEKQEAgLTEsMjIwICsxLDIyNyBAQAotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgLQotICAtIENvcHlyaWdodCAoYykgMjAxNS0yMDE2IFVuaXZlcnNpdHkgb2YgUGFkb3ZhLCBJVEFMWSAtICBJbnRlY3MgU3BBIAotICAtIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAgLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAgLSB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICAtIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gIC0KLSAgLSBDb250cmlidXRvcnM6Ci0gIC0KLSAgLSBBbGVzc2FuZHJvIFpvdmkgYXpvdmlAbWF0aC51bmlwZC5pdAotICAtIFN0ZWZhbm8gUHVyaSBzdGVmYW5vLnB1cmlAaW50ZWNzLml0Ci0gIC0gTGF1cmEgQmFyYWNjaGkgbGF1cmEuYmFyYWNjaGlAaW50ZWNzLml0Ci0gIC0gTmljaG9sYXMgUGFjaW5pIG5pY2hvbGFzLnBhY2luaUBpbnRlY3MuaXQgIAotICAtCi0gIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uIGFuZC9vciBpbml0aWFsIGRvY3VtZW50YXRpb24KLSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9wYWNrYWdlIG9yZy5wb2xhcnN5cy5jaGVzcy5tdWx0aWNvcmUudXRpbHM7Ci0KLWltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsKLWltcG9ydCBqYXZhLnV0aWwuTGlua2VkSGFzaFNldDsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuTWFwOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5NQVJURS5NQVJURV9BbmFseXNpc01vZGVsLkdRQU0uR2FFeGVjSG9zdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuQmFzaWNFTGlzdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuRUxpc3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5NQVJURS5NQVJURV9Gb3VuZGF0aW9ucy5BbGxvYy5Bc3NpZ247Ci1pbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5NQVJURS5NQVJURV9Gb3VuZGF0aW9ucy5ORlBzLk5mcENvbnN0cmFpbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuQ2xhc3NpZmllcjsKLWltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5Db21tZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLkNvbXBvbmVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5Db25zdHJhaW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLkluc3RhbmNlU3BlY2lmaWNhdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5MaXRlcmFsU3RyaW5nOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLlVNTFBhY2thZ2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuVmFsdWVTcGVjaWZpY2F0aW9uOwotaW1wb3J0IG9yZy5wb2xhcnN5cy5jaGVzcy5jb3JlLnV0aWwudW1sLlVNTFV0aWxzOwotaW1wb3J0IG9yZy5wb2xhcnN5cy5jaGVzcy5tdWx0aWNvcmUubW9kZWwuQ0hDb3JlOwotaW1wb3J0IG9yZy5wb2xhcnN5cy5jaGVzcy5tdWx0aWNvcmUubW9kZWwuQ0hUYXNrOwotaW1wb3J0IG9yZy5wb2xhcnN5cy5jaGVzcy5tdWx0aWNvcmUubW9kZWwuU3VwZXJ0YXNrSW5mbzsKLQotLyoqCi0gKiBUaGUgQ2xhc3MgR2VuZXJhdG9yVXRpbHMuCi0gKi8KLXB1YmxpYyBjbGFzcyBHZW5lcmF0b3JVdGlscyB7Ci0KLQkvKiogVGhlIENvbnN0YW50IE1BUlRFX0FTU0lHTi4gKi8KLQlwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgTUFSVEVfQVNTSUdOID0gIk1BUlRFOjpNQVJURV9Gb3VuZGF0aW9uczo6QWxsb2M6OkFzc2lnbiI7Ci0JCi0JLyoqIFRoZSBDb25zdGFudCBNQVJURV9ORlBDT05TVFJBSU5ULiAqLwotCXByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBNQVJURV9ORlBDT05TVFJBSU5UID0gIk1BUlRFOjpNQVJURV9Gb3VuZGF0aW9uczo6TkZQczo6TmZwQ29uc3RyYWludCI7Ci0KLQkvKgotCSAqIHB1YmxpYyBzdGF0aWMgdm9pZCBidWlsZFRhc2syQ29yZUFzc29jaWF0aW9ucyhDb21wb25lbnQgaHdTeXN0ZW0sCi0JICogRUxpc3Q8SW5zdGFuY2VTcGVjaWZpY2F0aW9uPiBwcm9jZXNzb3JzLCBNYXA8Q0hDb3JlLCBTZXQ8Q0hUYXNrPj4KLQkgKiBjb3Jlc1RvQ0hUYXNrKSB7IGZvciAoQ0hDb3JlIGNvcmUgOiBjb3Jlc1RvQ0hUYXNrLmtleVNldCgpKSB7IGZvciAoQ0hUYXNrIG8KLQkgKiA6IGNvcmVzVG9DSFRhc2suZ2V0KGNvcmUpKSB7Ci0JICogCi0JICogQ29tbWVudCBjID0gaHdTeXN0ZW0uY3JlYXRlT3duZWRDb21tZW50KCk7IFVNTFV0aWxzLmFwcGx5U3RlcmVvdHlwZShjLAotCSAqIE1BUlRFX0FTU0lHTik7IEFzc2lnbiBhc3NpZ24gPSBVTUxVdGlscy5nZXRTdGVyZW90eXBlQXBwbGljYXRpb24oYywKLQkgKiBBc3NpZ24uY2xhc3MpOwotCSAqIAotCSAqIGFzc2lnbi5nZXRGcm9tKCkuYWRkKG8uZ2V0U2xvdCgpLmdldEJhc2VfU2xvdCgpKTsKLQkgKiBhc3NpZ24uZ2V0VG8oKS5hZGQoY29yZS5nZXRQcm9jZXNzb3JJbnN0YW5jZSgpKTsKLQkgKiAKLQkgKiBDb25zdHJhaW50IG4gPSBod1N5c3RlbS5jcmVhdGVPd25lZFJ1bGUoY29yZS5nZXROYW1lKCkpOwotCSAqIFVNTFV0aWxzLmFwcGx5U3RlcmVvdHlwZShuLCBNQVJURV9ORlBDT05TVFJBSU5UKTsgTmZwQ29uc3RyYWludCBydWxlID0KLQkgKiBVTUxVdGlscy5nZXRTdGVyZW90eXBlQXBwbGljYXRpb24obiwgTmZwQ29uc3RyYWludC5jbGFzcyk7Ci0JICogCi0JICogVmFsdWVTcGVjaWZpY2F0aW9uIHZhbHVlU3BlYyA9IG4uY3JlYXRlU3BlY2lmaWNhdGlvbigiY29yZSIsIG51bGwsCi0JICogVU1MUGFja2FnZS5MaXRlcmFscy5MSVRFUkFMX1NUUklORyk7IExpdGVyYWxTdHJpbmcgdmFsdWUgPSAoTGl0ZXJhbFN0cmluZykKLQkgKiB2YWx1ZVNwZWM7IHZhbHVlLnNldFZhbHVlKGNvcmUuZ2V0TmFtZSgpKTsKLQkgKiBhc3NpZ24uZ2V0SW1wbGllZENvbnN0cmFpbnQoKS5hZGQocnVsZSk7Ci0JICogCi0JICogfSB9IH0KLQkgKi8KLQotCS8qKgotCSAqIEJ1aWxkcyB0aGUgdGFzayAyIHN1cGVyIHRhc2sgYXNzb2NpYXRpb25zLgotCSAqCi0JICogQHBhcmFtIGh3U3lzdGVtIHRoZSBodyBzeXN0ZW0KLQkgKiBAcGFyYW0gY29yZTJzdXBlcnRhc2sgdGhlIGNvcmUgMiBzdXBlcnRhc2sKLQkgKiBAcGFyYW0gc3VwZXJ0YXNrSW5mb0xpc3QgdGhlIHN1cGVydGFzayBpbmZvIGxpc3QKLQkgKi8KLQlwdWJsaWMgc3RhdGljIHZvaWQgYnVpbGRUYXNrMlN1cGVyVGFza0Fzc29jaWF0aW9ucyhDb21wb25lbnQgaHdTeXN0ZW0sIEhhc2hNYXA8U3VwZXJ0YXNrSW5mbywgTGlua2VkSGFzaFNldDxPYmplY3Q+PiBjb3JlMnN1cGVydGFzaywgTGlzdDxTdXBlcnRhc2tJbmZvPiBzdXBlcnRhc2tJbmZvTGlzdCkgewotCi0JCXdyaXRlU3VwZXJ0YXNraW5mbyhzdXBlcnRhc2tJbmZvTGlzdCk7Ci0KLQkJZm9yIChTdXBlcnRhc2tJbmZvIHN1cGVydGFzayA6IGNvcmUyc3VwZXJ0YXNrLmtleVNldCgpKSB7Ci0JCQlmb3IgKE9iamVjdCBvIDogY29yZTJzdXBlcnRhc2suZ2V0KHN1cGVydGFzaykpIHsKLQkJCQlpZiAoIShvIGluc3RhbmNlb2YgQ0hUYXNrKSkKLQkJCQkJY29udGludWU7Ci0KLQkJCQlDSFRhc2sgdCA9IChDSFRhc2spIG87Ci0JCQkJQ29tbWVudCBjID0gaHdTeXN0ZW0uY3JlYXRlT3duZWRDb21tZW50KCk7Ci0JCQkJVU1MVXRpbHMuYXBwbHlTdGVyZW90eXBlKGMsIE1BUlRFX0FTU0lHTik7Ci0JCQkJQXNzaWduIGFzc2lnbiA9IFVNTFV0aWxzLmdldFN0ZXJlb3R5cGVBcHBsaWNhdGlvbihjLCBBc3NpZ24uY2xhc3MpOwotCQkJCWFzc2lnbi5nZXRGcm9tKCkuYWRkKHQuZ2V0U2xvdCgpLmdldEJhc2VfU2xvdCgpKTsKLQkJCQlhc3NpZ24uZ2V0VG8oKS5hZGQoc3VwZXJ0YXNrLmdldFByb2Nlc3Nvckluc3RhbmNlKCkpOwotCi0JCQkJewotCQkJCQlDb25zdHJhaW50IG4gPSBod1N5c3RlbS5jcmVhdGVPd25lZFJ1bGUoc3VwZXJ0YXNrLmdldE5hbWUoKSk7Ci0JCQkJCVVNTFV0aWxzLmFwcGx5U3RlcmVvdHlwZShuLCBNQVJURV9ORlBDT05TVFJBSU5UKTsKLQkJCQkJTmZwQ29uc3RyYWludCBydWxlID0gVU1MVXRpbHMuZ2V0U3RlcmVvdHlwZUFwcGxpY2F0aW9uKG4sIE5mcENvbnN0cmFpbnQuY2xhc3MpOwotCi0JCQkJCVZhbHVlU3BlY2lmaWNhdGlvbiB2YWx1ZVNwZWMgPSBuLmNyZWF0ZVNwZWNpZmljYXRpb24oInN1cGVydGFzayIsIG51bGwsIFVNTFBhY2thZ2UuTGl0ZXJhbHMuTElURVJBTF9TVFJJTkcpOwotCQkJCQlMaXRlcmFsU3RyaW5nIHZhbHVlID0gKExpdGVyYWxTdHJpbmcpIHZhbHVlU3BlYzsKLQkJCQkJdmFsdWUuc2V0VmFsdWUoc3VwZXJ0YXNrLmdldE5hbWUoKSk7Ci0JCQkJCWFzc2lnbi5nZXRJbXBsaWVkQ29uc3RyYWludCgpLmFkZChydWxlKTsKLQkJCQl9Ci0KLQkJCQl7Ci0JCQkJCVN0cmluZyBjb250ZXh0ID0gdC5nZXRDSFJ0U3BlY2lmaWNhdGlvbigpLmdldENvbnRleHQoKS5nZXROYW1lKCk7Ci0JCQkJCUNvbnN0cmFpbnQgbiA9IGh3U3lzdGVtLmNyZWF0ZU93bmVkUnVsZShjb250ZXh0KTsKLQkJCQkJVU1MVXRpbHMuYXBwbHlTdGVyZW90eXBlKG4sIE1BUlRFX05GUENPTlNUUkFJTlQpOwotCQkJCQlOZnBDb25zdHJhaW50IHJ1bGUgPSBVTUxVdGlscy5nZXRTdGVyZW90eXBlQXBwbGljYXRpb24obiwgTmZwQ29uc3RyYWludC5jbGFzcyk7Ci0KLQkJCQkJVmFsdWVTcGVjaWZpY2F0aW9uIHZhbHVlU3BlYyA9IG4uY3JlYXRlU3BlY2lmaWNhdGlvbigiY29udGV4dCIsIG51bGwsIFVNTFBhY2thZ2UuTGl0ZXJhbHMuTElURVJBTF9TVFJJTkcpOwotCQkJCQlMaXRlcmFsU3RyaW5nIHZhbHVlID0gKExpdGVyYWxTdHJpbmcpIHZhbHVlU3BlYzsKLQkJCQkJdmFsdWUuc2V0VmFsdWUoY29udGV4dCk7Ci0JCQkJCWFzc2lnbi5nZXRJbXBsaWVkQ29uc3RyYWludCgpLmFkZChydWxlKTsKLQkJCQl9Ci0KLQkJCX0KLQkJfQotCX0KLQotCS8qKgotCSAqIEVyYXNlIHByb2Nlc3NvciBpbmZvLgotCSAqCi0JICogQHBhcmFtIHByb2Nlc3Nvckluc3RhbmNlIHRoZSBwcm9jZXNzb3IgaW5zdGFuY2UKLQkgKi8KLQlwdWJsaWMgc3RhdGljIHZvaWQgZXJhc2VQcm9jZXNzb3JJbmZvKEluc3RhbmNlU3BlY2lmaWNhdGlvbiBwcm9jZXNzb3JJbnN0YW5jZSkgewotCQlmb3IgKENsYXNzaWZpZXIgY2xhc3NpZmllciA6IHByb2Nlc3Nvckluc3RhbmNlLmdldENsYXNzaWZpZXJzKCkpIHsKLQkJCUdhRXhlY0hvc3QgcHJvYyA9IFVNTFV0aWxzLmdldFN0ZXJlb3R5cGVBcHBsaWNhdGlvbihjbGFzc2lmaWVyLCBHYUV4ZWNIb3N0LmNsYXNzKTsKLQkJCWlmIChwcm9jICE9IG51bGwpIHsKLQkJCQlwcm9jLnNldE90aGVyU2NoZWRQb2xpY3koIiIpOwotCQkJfQotCQl9Ci0JfQotCi0JLyoqCi0JICogV3JpdGUgc3VwZXJ0YXNraW5mby4KLQkgKgotCSAqIEBwYXJhbSBzdXBlcnRhc2tJbmZvTGlzdCB0aGUgc3VwZXJ0YXNrIGluZm8gbGlzdAotCSAqIEByZXR1cm4gdGhlIGluc3RhbmNlIHNwZWNpZmljYXRpb24KLQkgKi8KLQlwdWJsaWMgc3RhdGljIEluc3RhbmNlU3BlY2lmaWNhdGlvbiB3cml0ZVN1cGVydGFza2luZm8oTGlzdDxTdXBlcnRhc2tJbmZvPiBzdXBlcnRhc2tJbmZvTGlzdCkgewotCQkvLyBzYXZlIHN1cGVydGFzayBpbmZvIGludG8gdGhlIHByb2Nlc3NvciBHYUV4ZWNIb3N0IHN0ZXJlb3R5cGUgaW4KLQkJLy8gb3RoZXJTY2hlZFBvbGljeQotCQlTdXBlcnRhc2tJbmZvIHMgPSAoU3VwZXJ0YXNrSW5mbykgc3VwZXJ0YXNrSW5mb0xpc3QuZ2V0KDApOwotCQlJbnN0YW5jZVNwZWNpZmljYXRpb24gcHJvY2Vzc29ySW5zdGFuY2UgPSBzLmdldFByb2Nlc3Nvckluc3RhbmNlKCk7Ci0JCWZvciAoQ2xhc3NpZmllciBjbGFzc2lmaWVyIDogcHJvY2Vzc29ySW5zdGFuY2UuZ2V0Q2xhc3NpZmllcnMoKSkgewotCQkJR2FFeGVjSG9zdCBwcm9jID0gVU1MVXRpbHMuZ2V0U3RlcmVvdHlwZUFwcGxpY2F0aW9uKGNsYXNzaWZpZXIsIEdhRXhlY0hvc3QuY2xhc3MpOwotCQkJaWYgKHByb2MgIT0gbnVsbCkgewotCi0JCQkJU3RyaW5nQnVpbGRlciBzYiA9IG5ldyBTdHJpbmdCdWlsZGVyKCk7Ci0JCQkJZm9yIChTdXBlcnRhc2tJbmZvIHN1cGVydGFza0luZm8gOiBzdXBlcnRhc2tJbmZvTGlzdCkgewotCQkJCQlzYi5hcHBlbmQoU3RyaW5nLmZvcm1hdCgiWyVzPSVzXSwiLCBzdXBlcnRhc2tJbmZvLmdldE5hbWUoKSwgc3VwZXJ0YXNrSW5mby5nZXRDYXBhY2l0eSgpKSk7Ci0JCQkJfQotCQkJCS8vIHJlbW92ZSBsYXN0IGNvbW1hCi0JCQkJc2Iuc2V0TGVuZ3RoKHNiLmxlbmd0aCgpIC0gMSk7Ci0KLQkJCQlTdHJpbmcgc2NoZWRQb2xpY3kgPSBTdHJpbmcuZm9ybWF0KCJSVU4oJXMpIiwgc2IudG9TdHJpbmcoKSk7Ci0JCQkJcHJvYy5zZXRPdGhlclNjaGVkUG9saWN5KHNjaGVkUG9saWN5KTsKLQkJCX0KLQkJfQotCQlyZXR1cm4gcHJvY2Vzc29ySW5zdGFuY2U7Ci0JfQotCi0JLyoqCi0JICogQnVpbGRzIHRoZSB0YXNrIDIgY29yZSBhc3NvY2lhdGlvbnMuCi0JICoKLQkgKiBAcGFyYW0gaHdTeXN0ZW0gdGhlIGh3IHN5c3RlbQotCSAqIEBwYXJhbSByZXN1bHQgdGhlIHJlc3VsdAotCSAqLwotCXB1YmxpYyBzdGF0aWMgdm9pZCBidWlsZFRhc2syQ29yZUFzc29jaWF0aW9ucyhDb21wb25lbnQgaHdTeXN0ZW0sIE1hcDxDSENvcmUsIExpbmtlZEhhc2hTZXQ8T2JqZWN0Pj4gcmVzdWx0KSB7Ci0KLQkJZm9yIChDSENvcmUgY29yZSA6IHJlc3VsdC5rZXlTZXQoKSkgewotCQkJZm9yIChPYmplY3QgbyA6IHJlc3VsdC5nZXQoY29yZSkpIHsKLQkJCQlpZiAoIShvIGluc3RhbmNlb2YgQ0hUYXNrKSkKLQkJCQkJY29udGludWU7Ci0KLQkJCQlDSFRhc2sgdCA9IChDSFRhc2spIG87Ci0JCQkJQ29tbWVudCBjID0gaHdTeXN0ZW0uY3JlYXRlT3duZWRDb21tZW50KCk7Ci0JCQkJVU1MVXRpbHMuYXBwbHlTdGVyZW90eXBlKGMsIE1BUlRFX0FTU0lHTik7Ci0JCQkJQXNzaWduIGFzc2lnbiA9IFVNTFV0aWxzLmdldFN0ZXJlb3R5cGVBcHBsaWNhdGlvbihjLCBBc3NpZ24uY2xhc3MpOwotCQkJCWFzc2lnbi5nZXRGcm9tKCkuYWRkKHQuZ2V0U2xvdCgpLmdldEJhc2VfU2xvdCgpKTsKLQkJCQlhc3NpZ24uZ2V0VG8oKS5hZGQoY29yZS5nZXRQcm9jZXNzb3JJbnN0YW5jZSgpKTsKLQotCQkJCWVyYXNlUHJvY2Vzc29ySW5mbyhjb3JlLmdldFByb2Nlc3Nvckluc3RhbmNlKCkpOwotCi0JCQkJewotCQkJCQlDb25zdHJhaW50IG4gPSBod1N5c3RlbS5jcmVhdGVPd25lZFJ1bGUoY29yZS5nZXROYW1lKCkpOwotCQkJCQlVTUxVdGlscy5hcHBseVN0ZXJlb3R5cGUobiwgTUFSVEVfTkZQQ09OU1RSQUlOVCk7Ci0JCQkJCU5mcENvbnN0cmFpbnQgcnVsZSA9IFVNTFV0aWxzLmdldFN0ZXJlb3R5cGVBcHBsaWNhdGlvbihuLCBOZnBDb25zdHJhaW50LmNsYXNzKTsKLQotCQkJCQlWYWx1ZVNwZWNpZmljYXRpb24gdmFsdWVTcGVjID0gbi5jcmVhdGVTcGVjaWZpY2F0aW9uKCJjb3JlIiwgbnVsbCwgVU1MUGFja2FnZS5MaXRlcmFscy5MSVRFUkFMX1NUUklORyk7Ci0JCQkJCUxpdGVyYWxTdHJpbmcgdmFsdWUgPSAoTGl0ZXJhbFN0cmluZykgdmFsdWVTcGVjOwotCQkJCQl2YWx1ZS5zZXRWYWx1ZShjb3JlLmdldE5hbWUoKSk7Ci0JCQkJCWFzc2lnbi5nZXRJbXBsaWVkQ29uc3RyYWludCgpLmFkZChydWxlKTsKLQkJCQl9Ci0KLQkJCQl7Ci0JCQkJCVN0cmluZyBjb250ZXh0ID0gdC5nZXRDSFJ0U3BlY2lmaWNhdGlvbigpLmdldENvbnRleHQoKS5nZXROYW1lKCk7Ci0JCQkJCUNvbnN0cmFpbnQgbiA9IGh3U3lzdGVtLmNyZWF0ZU93bmVkUnVsZShjb250ZXh0KTsKLQkJCQkJVU1MVXRpbHMuYXBwbHlTdGVyZW90eXBlKG4sIE1BUlRFX05GUENPTlNUUkFJTlQpOwotCQkJCQlOZnBDb25zdHJhaW50IHJ1bGUgPSBVTUxVdGlscy5nZXRTdGVyZW90eXBlQXBwbGljYXRpb24obiwgTmZwQ29uc3RyYWludC5jbGFzcyk7Ci0KLQkJCQkJVmFsdWVTcGVjaWZpY2F0aW9uIHZhbHVlU3BlYyA9IG4uY3JlYXRlU3BlY2lmaWNhdGlvbigiY29udGV4dCIsIG51bGwsIFVNTFBhY2thZ2UuTGl0ZXJhbHMuTElURVJBTF9TVFJJTkcpOwotCQkJCQlMaXRlcmFsU3RyaW5nIHZhbHVlID0gKExpdGVyYWxTdHJpbmcpIHZhbHVlU3BlYzsKLQkJCQkJdmFsdWUuc2V0VmFsdWUoY29udGV4dCk7Ci0JCQkJCWFzc2lnbi5nZXRJbXBsaWVkQ29uc3RyYWludCgpLmFkZChydWxlKTsKLQkJCQl9Ci0KLQkJCX0KLQkJfQotCX0KLQotfQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgDQorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KKyAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorICAtDQorICAtIENvcHlyaWdodCAoYykgMjAxNS0yMDE2IFVuaXZlcnNpdHkgb2YgUGFkb3ZhLCBJVEFMWSAtICBJbnRlY3MgU3BBIA0KKyAgLSBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICAtIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KKyAgLSB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAgLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KKyAgLQ0KKyAgLSBDb250cmlidXRvcnM6DQorICAtDQorICAtIEFsZXNzYW5kcm8gWm92aSBhem92aUBtYXRoLnVuaXBkLml0DQorICAtIFN0ZWZhbm8gUHVyaSBzdGVmYW5vLnB1cmlAaW50ZWNzLml0DQorICAtIExhdXJhIEJhcmFjY2hpIGxhdXJhLmJhcmFjY2hpQGludGVjcy5pdA0KKyAgLSBOaWNob2xhcyBQYWNpbmkgbmljaG9sYXMucGFjaW5pQGludGVjcy5pdCAgDQorICAtDQorICAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbiBhbmQvb3IgaW5pdGlhbCBkb2N1bWVudGF0aW9uDQorICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL3BhY2thZ2Ugb3JnLnBvbGFyc3lzLmNoZXNzLm11bHRpY29yZS51dGlsczsNCisNCitpbXBvcnQgamF2YS51dGlsLkhhc2hNYXA7DQoraW1wb3J0IGphdmEudXRpbC5MaW5rZWRIYXNoU2V0Ow0KK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsNCitpbXBvcnQgamF2YS51dGlsLk1hcDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5NQVJURS5NQVJURV9BbmFseXNpc01vZGVsLkdRQU0uR2FFeGVjSG9zdDsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLkJhc2ljRUxpc3Q7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24udXRpbC5FTGlzdDsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5NQVJURS5NQVJURV9Gb3VuZGF0aW9ucy5BbGxvYy5Bc3NpZ247DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuTUFSVEUuTUFSVEVfRm91bmRhdGlvbnMuTkZQcy5OZnBDb25zdHJhaW50Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5DbGFzc2lmaWVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5Db21tZW50Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5Db21wb25lbnQ7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLkNvbnN0cmFpbnQ7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLkluc3RhbmNlU3BlY2lmaWNhdGlvbjsNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuTGl0ZXJhbFN0cmluZzsNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuVU1MUGFja2FnZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuVmFsdWVTcGVjaWZpY2F0aW9uOw0KK2ltcG9ydCBvcmcucG9sYXJzeXMuY2hlc3MuY29yZS51dGlsLnVtbC5VTUxVdGlsczsNCitpbXBvcnQgb3JnLnBvbGFyc3lzLmNoZXNzLm11bHRpY29yZS5tb2RlbC5DSENvcmU7DQoraW1wb3J0IG9yZy5wb2xhcnN5cy5jaGVzcy5tdWx0aWNvcmUubW9kZWwuQ0hUYXNrOw0KK2ltcG9ydCBvcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlLm1vZGVsLlN1cGVydGFza0luZm87DQorDQorLyoqDQorICogVGhlIENsYXNzIEdlbmVyYXRvclV0aWxzLg0KKyAqLw0KK3B1YmxpYyBjbGFzcyBHZW5lcmF0b3JVdGlscyB7DQorDQorCS8qKiBUaGUgQ29uc3RhbnQgTUFSVEVfQVNTSUdOLiAqLw0KKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgTUFSVEVfQVNTSUdOID0gIk1BUlRFOjpNQVJURV9Gb3VuZGF0aW9uczo6QWxsb2M6OkFzc2lnbiI7DQorCQ0KKwkvKiogVGhlIENvbnN0YW50IE1BUlRFX05GUENPTlNUUkFJTlQuICovDQorCXByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBNQVJURV9ORlBDT05TVFJBSU5UID0gIk1BUlRFOjpNQVJURV9Gb3VuZGF0aW9uczo6TkZQczo6TmZwQ29uc3RyYWludCI7DQorDQorCS8qDQorCSAqIHB1YmxpYyBzdGF0aWMgdm9pZCBidWlsZFRhc2syQ29yZUFzc29jaWF0aW9ucyhDb21wb25lbnQgaHdTeXN0ZW0sDQorCSAqIEVMaXN0PEluc3RhbmNlU3BlY2lmaWNhdGlvbj4gcHJvY2Vzc29ycywgTWFwPENIQ29yZSwgU2V0PENIVGFzaz4+DQorCSAqIGNvcmVzVG9DSFRhc2spIHsgZm9yIChDSENvcmUgY29yZSA6IGNvcmVzVG9DSFRhc2sua2V5U2V0KCkpIHsgZm9yIChDSFRhc2sgbw0KKwkgKiA6IGNvcmVzVG9DSFRhc2suZ2V0KGNvcmUpKSB7DQorCSAqIA0KKwkgKiBDb21tZW50IGMgPSBod1N5c3RlbS5jcmVhdGVPd25lZENvbW1lbnQoKTsgVU1MVXRpbHMuYXBwbHlTdGVyZW90eXBlKGMsDQorCSAqIE1BUlRFX0FTU0lHTik7IEFzc2lnbiBhc3NpZ24gPSBVTUxVdGlscy5nZXRTdGVyZW90eXBlQXBwbGljYXRpb24oYywNCisJICogQXNzaWduLmNsYXNzKTsNCisJICogDQorCSAqIGFzc2lnbi5nZXRGcm9tKCkuYWRkKG8uZ2V0U2xvdCgpLmdldEJhc2VfU2xvdCgpKTsNCisJICogYXNzaWduLmdldFRvKCkuYWRkKGNvcmUuZ2V0UHJvY2Vzc29ySW5zdGFuY2UoKSk7DQorCSAqIA0KKwkgKiBDb25zdHJhaW50IG4gPSBod1N5c3RlbS5jcmVhdGVPd25lZFJ1bGUoY29yZS5nZXROYW1lKCkpOw0KKwkgKiBVTUxVdGlscy5hcHBseVN0ZXJlb3R5cGUobiwgTUFSVEVfTkZQQ09OU1RSQUlOVCk7IE5mcENvbnN0cmFpbnQgcnVsZSA9DQorCSAqIFVNTFV0aWxzLmdldFN0ZXJlb3R5cGVBcHBsaWNhdGlvbihuLCBOZnBDb25zdHJhaW50LmNsYXNzKTsNCisJICogDQorCSAqIFZhbHVlU3BlY2lmaWNhdGlvbiB2YWx1ZVNwZWMgPSBuLmNyZWF0ZVNwZWNpZmljYXRpb24oImNvcmUiLCBudWxsLA0KKwkgKiBVTUxQYWNrYWdlLkxpdGVyYWxzLkxJVEVSQUxfU1RSSU5HKTsgTGl0ZXJhbFN0cmluZyB2YWx1ZSA9IChMaXRlcmFsU3RyaW5nKQ0KKwkgKiB2YWx1ZVNwZWM7IHZhbHVlLnNldFZhbHVlKGNvcmUuZ2V0TmFtZSgpKTsNCisJICogYXNzaWduLmdldEltcGxpZWRDb25zdHJhaW50KCkuYWRkKHJ1bGUpOw0KKwkgKiANCisJICogfSB9IH0NCisJICovDQorDQorCS8qKg0KKwkgKiBCdWlsZHMgdGhlIHRhc2sgMiBzdXBlciB0YXNrIGFzc29jaWF0aW9ucy4NCisJICoNCisJICogQHBhcmFtIGh3U3lzdGVtIHRoZSBodyBzeXN0ZW0NCisJICogQHBhcmFtIGNvcmUyc3VwZXJ0YXNrIHRoZSBjb3JlIDIgc3VwZXJ0YXNrDQorCSAqIEBwYXJhbSBzdXBlcnRhc2tJbmZvTGlzdCB0aGUgc3VwZXJ0YXNrIGluZm8gbGlzdA0KKwkgKi8NCisJcHVibGljIHN0YXRpYyB2b2lkIGJ1aWxkVGFzazJTdXBlclRhc2tBc3NvY2lhdGlvbnMoQ29tcG9uZW50IGh3U3lzdGVtLCBIYXNoTWFwPFN1cGVydGFza0luZm8sIExpbmtlZEhhc2hTZXQ8T2JqZWN0Pj4gY29yZTJzdXBlcnRhc2ssIExpc3Q8U3VwZXJ0YXNrSW5mbz4gc3VwZXJ0YXNrSW5mb0xpc3QpIHsNCisNCisJCXdyaXRlU3VwZXJ0YXNraW5mbyhzdXBlcnRhc2tJbmZvTGlzdCk7DQorDQorCQlmb3IgKFN1cGVydGFza0luZm8gc3VwZXJ0YXNrIDogY29yZTJzdXBlcnRhc2sua2V5U2V0KCkpIHsNCisJCQlmb3IgKE9iamVjdCBvIDogY29yZTJzdXBlcnRhc2suZ2V0KHN1cGVydGFzaykpIHsNCisJCQkJaWYgKCEobyBpbnN0YW5jZW9mIENIVGFzaykpDQorCQkJCQljb250aW51ZTsNCisNCisJCQkJQ0hUYXNrIHQgPSAoQ0hUYXNrKSBvOw0KKwkJCQlDb21tZW50IGMgPSBod1N5c3RlbS5jcmVhdGVPd25lZENvbW1lbnQoKTsNCisJCQkJVU1MVXRpbHMuYXBwbHlTdGVyZW90eXBlKGMsIE1BUlRFX0FTU0lHTik7DQorCQkJCUFzc2lnbiBhc3NpZ24gPSBVTUxVdGlscy5nZXRTdGVyZW90eXBlQXBwbGljYXRpb24oYywgQXNzaWduLmNsYXNzKTsNCisJCQkJYXNzaWduLmdldEZyb20oKS5hZGQodC5nZXRTbG90KCkuZ2V0QmFzZV9TbG90KCkpOw0KKwkJCQlhc3NpZ24uZ2V0VG8oKS5hZGQoc3VwZXJ0YXNrLmdldFByb2Nlc3Nvckluc3RhbmNlKCkpOw0KKw0KKwkJCQl7DQorCQkJCQlDb25zdHJhaW50IG4gPSBod1N5c3RlbS5jcmVhdGVPd25lZFJ1bGUoc3VwZXJ0YXNrLmdldE5hbWUoKSk7DQorCQkJCQlVTUxVdGlscy5hcHBseVN0ZXJlb3R5cGUobiwgTUFSVEVfTkZQQ09OU1RSQUlOVCk7DQorCQkJCQlOZnBDb25zdHJhaW50IHJ1bGUgPSBVTUxVdGlscy5nZXRTdGVyZW90eXBlQXBwbGljYXRpb24obiwgTmZwQ29uc3RyYWludC5jbGFzcyk7DQorDQorCQkJCQlWYWx1ZVNwZWNpZmljYXRpb24gdmFsdWVTcGVjID0gbi5jcmVhdGVTcGVjaWZpY2F0aW9uKCJzdXBlcnRhc2siLCBudWxsLCBVTUxQYWNrYWdlLkxpdGVyYWxzLkxJVEVSQUxfU1RSSU5HKTsNCisJCQkJCUxpdGVyYWxTdHJpbmcgdmFsdWUgPSAoTGl0ZXJhbFN0cmluZykgdmFsdWVTcGVjOw0KKwkJCQkJdmFsdWUuc2V0VmFsdWUoc3VwZXJ0YXNrLmdldE5hbWUoKSk7DQorCQkJCQlhc3NpZ24uZ2V0SW1wbGllZENvbnN0cmFpbnQoKS5hZGQocnVsZSk7DQorCQkJCX0NCisNCisJCQkJew0KKwkJCQkJU3RyaW5nIGNvbnRleHQgPSB0LmdldENIUnRTcGVjaWZpY2F0aW9uKCkuZ2V0Q29udGV4dCgpLmdldE5hbWUoKTsNCisJCQkJCUNvbnN0cmFpbnQgbiA9IGh3U3lzdGVtLmNyZWF0ZU93bmVkUnVsZShjb250ZXh0KTsNCisJCQkJCVVNTFV0aWxzLmFwcGx5U3RlcmVvdHlwZShuLCBNQVJURV9ORlBDT05TVFJBSU5UKTsNCisJCQkJCU5mcENvbnN0cmFpbnQgcnVsZSA9IFVNTFV0aWxzLmdldFN0ZXJlb3R5cGVBcHBsaWNhdGlvbihuLCBOZnBDb25zdHJhaW50LmNsYXNzKTsNCisNCisJCQkJCVZhbHVlU3BlY2lmaWNhdGlvbiB2YWx1ZVNwZWMgPSBuLmNyZWF0ZVNwZWNpZmljYXRpb24oImNvbnRleHQiLCBudWxsLCBVTUxQYWNrYWdlLkxpdGVyYWxzLkxJVEVSQUxfU1RSSU5HKTsNCisJCQkJCUxpdGVyYWxTdHJpbmcgdmFsdWUgPSAoTGl0ZXJhbFN0cmluZykgdmFsdWVTcGVjOw0KKwkJCQkJdmFsdWUuc2V0VmFsdWUoY29udGV4dCk7DQorCQkJCQlhc3NpZ24uZ2V0SW1wbGllZENvbnN0cmFpbnQoKS5hZGQocnVsZSk7DQorCQkJCX0NCisNCisJCQl9DQorCQl9DQorCX0NCisNCisJLyoqDQorCSAqIEVyYXNlIHByb2Nlc3NvciBpbmZvLg0KKwkgKg0KKwkgKiBAcGFyYW0gcHJvY2Vzc29ySW5zdGFuY2UgdGhlIHByb2Nlc3NvciBpbnN0YW5jZQ0KKwkgKi8NCisJcHVibGljIHN0YXRpYyB2b2lkIGVyYXNlUHJvY2Vzc29ySW5mbyhJbnN0YW5jZVNwZWNpZmljYXRpb24gcHJvY2Vzc29ySW5zdGFuY2UpIHsNCisJCWZvciAoQ2xhc3NpZmllciBjbGFzc2lmaWVyIDogcHJvY2Vzc29ySW5zdGFuY2UuZ2V0Q2xhc3NpZmllcnMoKSkgew0KKwkJCUdhRXhlY0hvc3QgcHJvYyA9IFVNTFV0aWxzLmdldFN0ZXJlb3R5cGVBcHBsaWNhdGlvbihjbGFzc2lmaWVyLCBHYUV4ZWNIb3N0LmNsYXNzKTsNCisJCQlpZiAocHJvYyAhPSBudWxsKSB7DQorCQkJCXByb2Muc2V0T3RoZXJTY2hlZFBvbGljeSgiIik7DQorCQkJfQ0KKwkJfQ0KKwl9DQorDQorCS8qKg0KKwkgKiBXcml0ZSBzdXBlcnRhc2tpbmZvLg0KKwkgKg0KKwkgKiBAcGFyYW0gc3VwZXJ0YXNrSW5mb0xpc3QgdGhlIHN1cGVydGFzayBpbmZvIGxpc3QNCisJICogQHJldHVybiB0aGUgaW5zdGFuY2Ugc3BlY2lmaWNhdGlvbg0KKwkgKi8NCisJcHVibGljIHN0YXRpYyBJbnN0YW5jZVNwZWNpZmljYXRpb24gd3JpdGVTdXBlcnRhc2tpbmZvKExpc3Q8U3VwZXJ0YXNrSW5mbz4gc3VwZXJ0YXNrSW5mb0xpc3QpIHsNCisJCS8vIHNhdmUgc3VwZXJ0YXNrIGluZm8gaW50byB0aGUgcHJvY2Vzc29yIEdhRXhlY0hvc3Qgc3RlcmVvdHlwZSBpbg0KKwkJLy8gb3RoZXJTY2hlZFBvbGljeQ0KKwkJU3VwZXJ0YXNrSW5mbyBzID0gKFN1cGVydGFza0luZm8pIHN1cGVydGFza0luZm9MaXN0LmdldCgwKTsNCisJCUluc3RhbmNlU3BlY2lmaWNhdGlvbiBwcm9jZXNzb3JJbnN0YW5jZSA9IHMuZ2V0UHJvY2Vzc29ySW5zdGFuY2UoKTsNCisJCWZvciAoQ2xhc3NpZmllciBjbGFzc2lmaWVyIDogcHJvY2Vzc29ySW5zdGFuY2UuZ2V0Q2xhc3NpZmllcnMoKSkgew0KKwkJCUdhRXhlY0hvc3QgcHJvYyA9IFVNTFV0aWxzLmdldFN0ZXJlb3R5cGVBcHBsaWNhdGlvbihjbGFzc2lmaWVyLCBHYUV4ZWNIb3N0LmNsYXNzKTsNCisJCQlpZiAocHJvYyAhPSBudWxsKSB7DQorDQorCQkJCVN0cmluZ0J1aWxkZXIgc2IgPSBuZXcgU3RyaW5nQnVpbGRlcigpOw0KKwkJCQlmb3IgKFN1cGVydGFza0luZm8gc3VwZXJ0YXNrSW5mbyA6IHN1cGVydGFza0luZm9MaXN0KSB7DQorCQkJCQlzYi5hcHBlbmQoU3RyaW5nLmZvcm1hdCgiWyVzPSVzXSwiLCBzdXBlcnRhc2tJbmZvLmdldE5hbWUoKSwgc3VwZXJ0YXNrSW5mby5nZXRDYXBhY2l0eSgpKSk7DQorCQkJCX0NCisJCQkJLy8gcmVtb3ZlIGxhc3QgY29tbWENCisJCQkJc2Iuc2V0TGVuZ3RoKHNiLmxlbmd0aCgpIC0gMSk7DQorDQorCQkJCVN0cmluZyBzY2hlZFBvbGljeSA9IFN0cmluZy5mb3JtYXQoIlJVTiglcykiLCBzYi50b1N0cmluZygpKTsNCisJCQkJcHJvYy5zZXRPdGhlclNjaGVkUG9saWN5KHNjaGVkUG9saWN5KTsNCisJCQl9DQorCQl9DQorCQlyZXR1cm4gcHJvY2Vzc29ySW5zdGFuY2U7DQorCX0NCisNCisJLyoqDQorCSAqIEJ1aWxkcyB0aGUgdGFzayAyIGNvcmUgYXNzb2NpYXRpb25zLg0KKwkgKg0KKwkgKiBAcGFyYW0gaHdTeXN0ZW0gdGhlIGh3IHN5c3RlbQ0KKwkgKiBAcGFyYW0gcmVzdWx0IHRoZSByZXN1bHQNCisJICovDQorCXB1YmxpYyBzdGF0aWMgdm9pZCBidWlsZFRhc2syQ29yZUFzc29jaWF0aW9ucyhDb21wb25lbnQgaHdTeXN0ZW0sIE1hcDxDSENvcmUsIExpbmtlZEhhc2hTZXQ8T2JqZWN0Pj4gcmVzdWx0KSB7DQorDQorCQlmb3IgKENIQ29yZSBjb3JlIDogcmVzdWx0LmtleVNldCgpKSB7DQorCQkJZm9yIChPYmplY3QgbyA6IHJlc3VsdC5nZXQoY29yZSkpIHsNCisJCQkJaWYgKCEobyBpbnN0YW5jZW9mIENIVGFzaykpDQorCQkJCQljb250aW51ZTsNCisNCisJCQkJQ0hUYXNrIHQgPSAoQ0hUYXNrKSBvOw0KKwkJCQlDb21tZW50IGMgPSBod1N5c3RlbS5jcmVhdGVPd25lZENvbW1lbnQoKTsNCisJCQkJVU1MVXRpbHMuYXBwbHlTdGVyZW90eXBlKGMsIE1BUlRFX0FTU0lHTik7DQorCQkJCUFzc2lnbiBhc3NpZ24gPSBVTUxVdGlscy5nZXRTdGVyZW90eXBlQXBwbGljYXRpb24oYywgQXNzaWduLmNsYXNzKTsNCisJCQkJYXNzaWduLmdldEZyb20oKS5hZGQodC5nZXRTbG90KCkuZ2V0QmFzZV9TbG90KCkpOw0KKwkJCQlhc3NpZ24uZ2V0VG8oKS5hZGQoY29yZS5nZXRQcm9jZXNzb3JJbnN0YW5jZSgpKTsNCisNCisJCQkJZXJhc2VQcm9jZXNzb3JJbmZvKGNvcmUuZ2V0UHJvY2Vzc29ySW5zdGFuY2UoKSk7DQorDQorCQkJCXsNCisJCQkJCUNvbnN0cmFpbnQgbiA9IGh3U3lzdGVtLmNyZWF0ZU93bmVkUnVsZShjb3JlLmdldE5hbWUoKSk7DQorCQkJCQlVTUxVdGlscy5hcHBseVN0ZXJlb3R5cGUobiwgTUFSVEVfTkZQQ09OU1RSQUlOVCk7DQorCQkJCQlOZnBDb25zdHJhaW50IHJ1bGUgPSBVTUxVdGlscy5nZXRTdGVyZW90eXBlQXBwbGljYXRpb24obiwgTmZwQ29uc3RyYWludC5jbGFzcyk7DQorDQorCQkJCQlWYWx1ZVNwZWNpZmljYXRpb24gdmFsdWVTcGVjID0gbi5jcmVhdGVTcGVjaWZpY2F0aW9uKCJjb3JlIiwgbnVsbCwgVU1MUGFja2FnZS5MaXRlcmFscy5MSVRFUkFMX1NUUklORyk7DQorCQkJCQlMaXRlcmFsU3RyaW5nIHZhbHVlID0gKExpdGVyYWxTdHJpbmcpIHZhbHVlU3BlYzsNCisJCQkJCXZhbHVlLnNldFZhbHVlKGNvcmUuZ2V0TmFtZSgpKTsNCisJCQkJCWFzc2lnbi5nZXRJbXBsaWVkQ29uc3RyYWludCgpLmFkZChydWxlKTsNCisJCQkJfQ0KKw0KKwkJCQl7DQorCQkJCQlTdHJpbmcgY29udGV4dCA9IHQuZ2V0Q0hSdFNwZWNpZmljYXRpb24oKS5nZXRDb250ZXh0KCkuZ2V0TmFtZSgpOw0KKwkJCQkJQ29uc3RyYWludCBuID0gaHdTeXN0ZW0uY3JlYXRlT3duZWRSdWxlKGNvbnRleHQpOw0KKwkJCQkJVU1MVXRpbHMuYXBwbHlTdGVyZW90eXBlKG4sIE1BUlRFX05GUENPTlNUUkFJTlQpOw0KKwkJCQkJTmZwQ29uc3RyYWludCBydWxlID0gVU1MVXRpbHMuZ2V0U3RlcmVvdHlwZUFwcGxpY2F0aW9uKG4sIE5mcENvbnN0cmFpbnQuY2xhc3MpOw0KKw0KKwkJCQkJVmFsdWVTcGVjaWZpY2F0aW9uIHZhbHVlU3BlYyA9IG4uY3JlYXRlU3BlY2lmaWNhdGlvbigiY29udGV4dCIsIG51bGwsIFVNTFBhY2thZ2UuTGl0ZXJhbHMuTElURVJBTF9TVFJJTkcpOw0KKwkJCQkJTGl0ZXJhbFN0cmluZyB2YWx1ZSA9IChMaXRlcmFsU3RyaW5nKSB2YWx1ZVNwZWM7DQorCQkJCQl2YWx1ZS5zZXRWYWx1ZShjb250ZXh0KTsNCisJCQkJCWFzc2lnbi5nZXRJbXBsaWVkQ29uc3RyYWludCgpLmFkZChydWxlKTsNCisJCQkJfQ0KKw0KKwkJCX0NCisJCX0NCisJfQ0KKw0KK30NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tdWx0aWNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tdWx0aWNvcmUvdXRpbHMvSW5zdGFuY2VRdWVyeS5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbXVsdGljb3JlL3V0aWxzL0luc3RhbmNlUXVlcnkuamF2YQppbmRleCBjZWJiZGUwLi5kMTZlYTdjIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tdWx0aWNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tdWx0aWNvcmUvdXRpbHMvSW5zdGFuY2VRdWVyeS5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm11bHRpY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL211bHRpY29yZS91dGlscy9JbnN0YW5jZVF1ZXJ5LmphdmEKQEAgLTEsMzc4ICsxLDM4NSBAQAotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgLQotICAtIENvcHlyaWdodCAoYykgMjAxNS0yMDE2IFVuaXZlcnNpdHkgb2YgUGFkb3ZhLCBJVEFMWSAtICBJbnRlY3MgU3BBIAotICAtIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAgLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAgLSB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICAtIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gIC0KLSAgLSBDb250cmlidXRvcnM6Ci0gIC0KLSAgLSBBbGVzc2FuZHJvIFpvdmkgYXpvdmlAbWF0aC51bmlwZC5pdAotICAtIFN0ZWZhbm8gUHVyaSBzdGVmYW5vLnB1cmlAaW50ZWNzLml0Ci0gIC0gTGF1cmEgQmFyYWNjaGkgbGF1cmEuYmFyYWNjaGlAaW50ZWNzLml0Ci0gIC0gTmljaG9sYXMgUGFjaW5pIG5pY2hvbGFzLnBhY2luaUBpbnRlY3MuaXQgIAotICAtCi0gIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uIGFuZC9vciBpbml0aWFsIGRvY3VtZW50YXRpb24KLSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9wYWNrYWdlIG9yZy5wb2xhcnN5cy5jaGVzcy5tdWx0aWNvcmUudXRpbHM7Ci0KLWltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OwotaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOwotaW1wb3J0IGphdmEudXRpbC5TZXQ7Ci1pbXBvcnQgamF2YS51dGlsLnJlZ2V4Lk1hdGNoZXI7Ci1pbXBvcnQgamF2YS51dGlsLnJlZ2V4LlBhdHRlcm47Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuQmFzaWNFTGlzdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuRUxpc3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuQWN0aXZpdHk7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuQWN0aXZpdHlOb2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLkJlaGF2aW9yYWxGZWF0dXJlOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLkNhbGxPcGVyYXRpb25BY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuQ29tbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5Db25uZWN0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuQ29ubmVjdG9yRW5kOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLkNvbnN0cmFpbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5JbnN0YW5jZVNwZWNpZmljYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuSW5zdGFuY2VWYWx1ZTsKLWltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5Nb2RlbDsKLWltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5PcGVyYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuUGFja2FnZTsKLWltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5Qb3J0OwotaW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLlNsb3Q7Ci1pbXBvcnQgb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlLkNvcmUuSWRlbnRpZlNsb3Q7Ci1pbXBvcnQgb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlLlByZWRpY3RhYmlsaXR5LlJUQ29tcG9uZW50TW9kZWwuQ0hSdFBvcnRTbG90OwotaW1wb3J0IG9yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS5QcmVkaWN0YWJpbGl0eS5SVENvbXBvbmVudE1vZGVsLkNIUnRTcGVjaWZpY2F0aW9uOwotaW1wb3J0IG9yZy5wb2xhcnN5cy5jaGVzcy5jb3JlLnByb2ZpbGVzLkNIRVNTUHJvZmlsZU1hbmFnZXI7Ci1pbXBvcnQgb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUudXRpbC51bWwuTW9kZWxFcnJvcjsKLWltcG9ydCBvcmcucG9sYXJzeXMuY2hlc3MuY29yZS51dGlsLnVtbC5VTUxVdGlsczsKLQotLyoqCi0gKiBUaGUgQ2xhc3MgSW5zdGFuY2VRdWVyeS4KLSAqLwotcHVibGljIGNsYXNzIEluc3RhbmNlUXVlcnkgewotCi0JLyoqCi0JICogR2V0cyB0aGUgaW5zdGFuY2Ugc3BlYyBwYWNrYWdlLgotCSAqCi0JICogQHBhcmFtIHVtbE1vZGVsIHRoZSB1bWwgbW9kZWwKLQkgKiBAcmV0dXJuIHRoZSBpbnN0YW5jZSBzcGVjIHBhY2thZ2UKLQkgKi8KLQlwdWJsaWMgc3RhdGljIFBhY2thZ2UgZ2V0SW5zdGFuY2VTcGVjUGFja2FnZShNb2RlbCB1bWxNb2RlbCl7Ci0JCVBhY2thZ2UgY21wdiA9IENIRVNTUHJvZmlsZU1hbmFnZXIuZ2V0Vmlld0J5U3RlcmVvdHlwZSgKLQkJCQkoTW9kZWwpIHVtbE1vZGVsLCBDSEVTU1Byb2ZpbGVNYW5hZ2VyLkNPTVBPTkVOVF9WSUVXKTsKLQkJY21wdiA9IFF1ZXJ5VXRpbHMuZ2V0T25lUmVzb3VyY2VQbGF0Zm9ybVBhY2thZ2UoY21wdik7Ci0JCXJldHVybiBjbXB2OwotCX0KLQotCQotCQotCi0JCi0JCi0JLyoqCi0JICogQ2hlY2tzIGlmIGlzIGRlZmVycmVkLgotCSAqCi0JICogQHBhcmFtIHVzZWRDSCB0aGUgdXNlZCBDSAotCSAqIEByZXR1cm4gdHJ1ZSwgaWYgaXMgZGVmZXJyZWQKLQkgKi8KLQlzdGF0aWMgYm9vbGVhbiBpc0RlZmVycmVkKENIUnRTcGVjaWZpY2F0aW9uIHVzZWRDSCkgewotCQlTdHJpbmcgb2NjS2luZCA9IHVzZWRDSC5nZXRPY2NLaW5kKCk7Ci0JCXJldHVybiBvY2NLaW5kIT1udWxsOwotCX0KLQotCS8qKgotCSAqIEdldHMgdGhlIENIIGZyb20gc2xvdC4KLQkgKgotCSAqIEBwYXJhbSB1c2VkUGlTbG90IHRoZSB1c2VkIHBpIHNsb3QKLQkgKiBAcGFyYW0gb3BlcmF0aW9uIHRoZSBvcGVyYXRpb24KLQkgKiBAcmV0dXJuIHRoZSBDSCBmcm9tIHNsb3QKLQkgKi8KLQlzdGF0aWMgQ0hSdFNwZWNpZmljYXRpb24gZ2V0Q0hGcm9tU2xvdChTbG90IHVzZWRQaVNsb3QsCi0JCQlPcGVyYXRpb24gb3BlcmF0aW9uKSB7Ci0JCWlmKHVzZWRQaVNsb3QgPT0gbnVsbCl7Ci0JCQlyZXR1cm4gbnVsbDsKLQkJfQotCQlDSFJ0UG9ydFNsb3QgY2ggPSBVTUxVdGlscy5nZXRTdGVyZW90eXBlQXBwbGljYXRpb24odXNlZFBpU2xvdCwgQ0hSdFBvcnRTbG90LmNsYXNzKTsKLQkJaWYoY2g9PW51bGwpCi0JCQlyZXR1cm4gbnVsbDsKLQkJCi0JCWZvciAoQ0hSdFNwZWNpZmljYXRpb24gaSA6IGNoLmdldENIX1J0U3BlY2lmaWNhdGlvbigpKSB7Ci0JCQlpZiAoaS5nZXRDb250ZXh0KCkuZXF1YWxzKG9wZXJhdGlvbikpIHsKLQkJCQlyZXR1cm4gaTsKLQkJCX0KLQkJCWlmKFVNTFV0aWxzLmFyZU9wZXJhdGlvbnNFcXVhbCgoT3BlcmF0aW9uKSBpLmdldENvbnRleHQoKSwgb3BlcmF0aW9uLCBudWxsKSl7Ci0JCQkJcmV0dXJuIGk7Ci0JCQl9Ci0JCX0KLQkJYXNzZXJ0IGZhbHNlOwotCQlyZXR1cm4gbnVsbDsKLQl9Ci0JCi0JCi0JLyoqCi0JICogR2V0cyB0aGUgcmkgcGkgbGlua3MuCi0JICoKLQkgKiBAcGFyYW0gc2xvdCB0aGUgc2xvdAotCSAqIEByZXR1cm4gdGhlIHJpIHBpIGxpbmtzCi0JICovCi0JcHJpdmF0ZSBzdGF0aWMgRUxpc3Q8SW5zdGFuY2VTcGVjaWZpY2F0aW9uPiBnZXRSaVBpTGlua3MoU2xvdCBzbG90KXsKLQkJRUxpc3Q8SW5zdGFuY2VTcGVjaWZpY2F0aW9uPiByaVBpTGlua3MgPSBuZXcgQmFzaWNFTGlzdDxJbnN0YW5jZVNwZWNpZmljYXRpb24+KCk7Ci0JCUVMaXN0PEVsZW1lbnQ+IGFsbE93bmVkRWxlbWVudHMgPSBzbG90LmdldE93bmVyKCkuZ2V0T3duZXIoKS5hbGxPd25lZEVsZW1lbnRzKCk7Ci0JCWZvciAoRWxlbWVudCBlIDogYWxsT3duZWRFbGVtZW50cykgewotCQkJaWYgKGUgaW5zdGFuY2VvZiBJbnN0YW5jZVNwZWNpZmljYXRpb24pIHsKLQkJCQlJbnN0YW5jZVNwZWNpZmljYXRpb24gZiA9IChJbnN0YW5jZVNwZWNpZmljYXRpb24pIGU7Ci0JCQkJYm9vbGVhbiBiID0gZi5nZXRDbGFzc2lmaWVycygpLnNpemUoKSA9PSAwOwotCQkJCWlmKGIpewotCQkJCQlyaVBpTGlua3MuYWRkKGYpOwotCQkJCX0KLQkJCX0KLQkJfSAKLQkJcmV0dXJuIHJpUGlMaW5rczsKLQl9Ci0KLQkvKioKLQkgKiBHZXRzIHRoZSBvcHBvc2l0ZSBzbG90LgotCSAqCi0JICogQHBhcmFtIHNsb3QgdGhlIHNsb3QKLQkgKiBAcmV0dXJuIHRoZSBvcHBvc2l0ZSBzbG90Ci0JICogQHRocm93cyBNb2RlbEVycm9yIHRoZSBtb2RlbCBlcnJvcgotCSAqLwotCS8qaWRlbnRpY2FsIG9mIGdldENvcnJlc3BvbmRpbmdTTG90IG9mIFFWVE8gdHJhbnNmb3JtYXRpb24qLwotCXN0YXRpYyBTbG90IGdldE9wcG9zaXRlU2xvdChTbG90IHNsb3QpIHRocm93cyBNb2RlbEVycm9yIHsKLQkJRUxpc3Q8SW5zdGFuY2VTcGVjaWZpY2F0aW9uPiByaVBpTGlua3MgPSBnZXRSaVBpTGlua3Moc2xvdCk7Ci0JCQotCQlmb3IgKEluc3RhbmNlU3BlY2lmaWNhdGlvbiBsIDogcmlQaUxpbmtzKSB7Ci0JCQlFTGlzdDxJbnN0YW5jZVZhbHVlPiBlbmRzID0gZ2V0RW5kcyhsKTsKLQkJCQotCQkJaWYoZW5kcy5zaXplKCkhPTIpIHRocm93IG5ldyBNb2RlbEVycm9yKCJBIGNvbm5lY3RvciBtdXN0IGhhdmUgZXhhY3RseSAyIGVuZHMiKTsKLQkJCQotCQkJZm9yIChpbnQgaSA9IDA7IGkgPCAyOyBpKyspIHsKLQkJCQkvLzFzdCBzdGVwOiBpPTAgaj0xCi0JCQkJLy8ybmQgc3RlcDogaT0xIGo9MAotCQkJCWludCBqID0gKGkrMSklMjsKLQkJCQlJbnN0YW5jZVZhbHVlIGZpcnN0ID0gZW5kcy5nZXQoaSk7Ci0JCQkJYm9vbGVhbiBiID0gZmlyc3QuZ2V0SW5zdGFuY2UoKS5lcXVhbHMoc2xvdC5nZXRPd25pbmdJbnN0YW5jZSgpKTsKLQkJCQliID0gYiAmJiAoKFNsb3QpZmlyc3QuZ2V0T3duZXIoKSkuZ2V0RGVmaW5pbmdGZWF0dXJlKCkuZXF1YWxzKHNsb3QuZ2V0RGVmaW5pbmdGZWF0dXJlKCkpOwotCQkJCQotCQkJCWlmKGIpewotCQkJCQlJbnN0YW5jZVZhbHVlIGluc3RhbmNlVmFsdWUgPSBlbmRzLmdldChqKTsKLQkJCQkJSW5zdGFuY2VTcGVjaWZpY2F0aW9uIGluc3RhbmNlID0gaW5zdGFuY2VWYWx1ZS5nZXRJbnN0YW5jZSgpOwotCQkJCQkKLQkJCQkJRWxlbWVudCBvd25lciA9IGluc3RhbmNlVmFsdWUuZ2V0T3duZXIoKTsKLQkJCQkJaWYgKG93bmVyIGluc3RhbmNlb2YgU2xvdCkgewotCQkJCQkJU2xvdCBzT3duZXIgPSAoU2xvdCkgb3duZXI7Ci0JCQkJCQkKLQkJCQkJCWZvciAoU2xvdCBzIDogaW5zdGFuY2UuZ2V0U2xvdHMoKSkgewotCQkJCQkJCSAKLQkJCQkJCQlpZihzLmdldERlZmluaW5nRmVhdHVyZSgpLmVxdWFscyhzT3duZXIuZ2V0RGVmaW5pbmdGZWF0dXJlKCkpKQotCQkJCQkJCQlyZXR1cm4gczsKLQkJCQkJCQkKLQkJCQkJCX0KLQkJCQkJfQotCQkJCQkKLQkJCQl9Ci0JCQl9Ci0KLQkJCS8qY2hlY2tpbmdJViA9IGVuZHMuZ2V0KDEpOwotCQkJYiA9IGNoZWNraW5nSVYuZ2V0SW5zdGFuY2UoKS5lcXVhbHMoc2xvdC5nZXRPd25pbmdJbnN0YW5jZSgpKTsKLQkJCWIgPSBiICYmICgoU2xvdCljaGVja2luZ0lWLmdldE93bmVyKCkpLmdldERlZmluaW5nRmVhdHVyZSgpLmVxdWFscyhzbG90LmdldERlZmluaW5nRmVhdHVyZSgpKTsKLQkJCQotCQkJaWYoYil7Ci0JCQkJSW5zdGFuY2VTcGVjaWZpY2F0aW9uIGluc3RhbmNlID0gZW5kcy5nZXQoMCkuZ2V0SW5zdGFuY2UoKTsKLQkJCQlmb3IgKFNsb3QgcyA6IGluc3RhbmNlLmdldFNsb3RzKCkpIHsKLQkJCQkJaWYocy5nZXREZWZpbmluZ0ZlYXR1cmUoKS5lcXVhbHMoKChTbG90KXMuZ2V0T3duZXIoKSkuZ2V0RGVmaW5pbmdGZWF0dXJlKCkpKQotCQkJCQkJcmV0dXJuIHM7Ci0JCQkJfQotCQkJfSovCi0JCX0KLQkJCi0JCXJldHVybiBudWxsOwotCX0KLQotCi0JLyoqCi0JICogR2V0cyB0aGUgZW5kcy4KLQkgKgotCSAqIEBwYXJhbSBsIHRoZSBsCi0JICogQHJldHVybiB0aGUgZW5kcwotCSAqLwotCXByaXZhdGUgc3RhdGljIEVMaXN0PEluc3RhbmNlVmFsdWU+IGdldEVuZHMoSW5zdGFuY2VTcGVjaWZpY2F0aW9uIGwpIHsKLQkJRUxpc3Q8SW5zdGFuY2VWYWx1ZT4gZW5kcyA9IG5ldyBCYXNpY0VMaXN0PEluc3RhbmNlVmFsdWU+KCk7Ci0KLQkJZm9yIChFbGVtZW50IGVsZW1lbnQgOiBsLmFsbE93bmVkRWxlbWVudHMoKSkgewotCQkJaWYgKGVsZW1lbnQgaW5zdGFuY2VvZiBJbnN0YW5jZVZhbHVlKSB7Ci0JCQkJSW5zdGFuY2VWYWx1ZSBpdiA9IChJbnN0YW5jZVZhbHVlKSBlbGVtZW50OwotCQkJCSBlbmRzLmFkZChpdik7Ci0JCQkJIAotCQkJfQotCQl9Ci0JCXJldHVybiBlbmRzOwotCX0KLQotCS8qKgotCSAqIEdldHMgdGhlIHNsb3QgZnJvbSBwb3J0LgotCSAqCi0JICogQHBhcmFtIGNhbGxPcCB0aGUgY2FsbCBvcAotCSAqIEBwYXJhbSBvd25pbmdJbnN0YW5jZSB0aGUgb3duaW5nIGluc3RhbmNlCi0JICogQHJldHVybiB0aGUgc2xvdCBmcm9tIHBvcnQKLQkgKi8KLQlzdGF0aWMgRUxpc3Q8U2xvdD4gZ2V0U2xvdEZyb21Qb3J0KENhbGxPcGVyYXRpb25BY3Rpb24gY2FsbE9wLAotCQkJSW5zdGFuY2VTcGVjaWZpY2F0aW9uIG93bmluZ0luc3RhbmNlKSB7Ci0JCUJlaGF2aW9yYWxGZWF0dXJlIHNwZWNpZmljYXRpb24gPSBjYWxsT3AuZ2V0QWN0aXZpdHkoKS5nZXRTcGVjaWZpY2F0aW9uKCk7Ci0JCU9wZXJhdGlvbiBvcCA9IChPcGVyYXRpb24pc3BlY2lmaWNhdGlvbjsKLQkJQ29uc3RyYWludCBjID0gbnVsbDsKLQkJZm9yIChDb25zdHJhaW50IHJ1bGUgOiBvcC5nZXRDbGFzc18oKS5nZXRPd25lZFJ1bGVzKCkpIHsKLQkJCWZvciAoRWxlbWVudCBjRSA6cnVsZS5nZXRDb25zdHJhaW5lZEVsZW1lbnRzKCkpIHsKLQkJCQlpZiAoY0UgaW5zdGFuY2VvZiBDYWxsT3BlcmF0aW9uQWN0aW9uKSB7Ci0JCQkJCUNhbGxPcGVyYXRpb25BY3Rpb24gY0NFID0gKENhbGxPcGVyYXRpb25BY3Rpb24pIGNFOwotCQkJCQlpZihjQ0UuZXF1YWxzKGNhbGxPcCkpCi0JCQkJCQljID0gcnVsZTsKLQkJCQkJCWJyZWFrOwotCQkJCX0KLQkJCX0KLQkJfQotCQlFTGlzdDxTbG90PiByZXN1bHQgPSBuZXcgQmFzaWNFTGlzdDxTbG90PigpOwotCQlpZihjPT1udWxsKXsKLQkJCWZvciAoU2xvdCBzbG90IDogb3duaW5nSW5zdGFuY2UuZ2V0U2xvdHMoKSkgewotCQkJCWlmKHNsb3QuZ2V0RGVmaW5pbmdGZWF0dXJlKCkuZXF1YWxzKGNhbGxPcC5nZXRPblBvcnQoKSkpewotCQkJCQlyZXN1bHQuYWRkKHNsb3QpOwotCQkJCX0KLQkJCX0KLQkJfSBlbHNlIHsKLQkJCXJlc3VsdCA9IHBvcnRUb1Nsb3RzQnlSdWxlKG93bmluZ0luc3RhbmNlLCBjYWxsT3AuZ2V0T25Qb3J0KCksIGMpOwotCQl9Ci0JCXJldHVybiByZXN1bHQ7Ci0JfQotCQotCQotCi0JLyoqCi0JICogR2V0cyB0aGUgQ0ggcnQgcG9ydCBzbG90LgotCSAqCi0JICogQHBhcmFtIGluc3RQa2cgdGhlIGluc3QgcGtnCi0JICogQHBhcmFtIGRPcCB0aGUgZCBvcAotCSAqIEByZXR1cm4gdGhlIENIIHJ0IHBvcnQgc2xvdAotCSAqIEB0aHJvd3MgTW9kZWxFcnJvciB0aGUgbW9kZWwgZXJyb3IKLQkgKi8KLQlzdGF0aWMgQ0hSdFBvcnRTbG90IGdldENIUnRQb3J0U2xvdChQYWNrYWdlIGluc3RQa2csIENIUnRTcGVjaWZpY2F0aW9uIGRPcCkgdGhyb3dzIE1vZGVsRXJyb3IgewotCQlmb3IgKEVsZW1lbnQgZSA6IGluc3RQa2cuYWxsT3duZWRFbGVtZW50cygpKSB7Ci0JCQlpZighKGUgaW5zdGFuY2VvZiBTbG90KSkKLQkJCQljb250aW51ZTsKLQkJCUNIUnRQb3J0U2xvdCBwU2xvdCA9IFVNTFV0aWxzLmdldFN0ZXJlb3R5cGVBcHBsaWNhdGlvbihlLCBDSFJ0UG9ydFNsb3QuY2xhc3MpOwotCQkJaWYocFNsb3Q9PW51bGwpCi0JCQkJY29udGludWU7Ci0JCQlmb3IgKENIUnRTcGVjaWZpY2F0aW9uIGNoU1BlYyA6IHBTbG90LmdldENIX1J0U3BlY2lmaWNhdGlvbigpKSB7Ci0JCQkJaWYoY2hTUGVjLmVxdWFscyhkT3ApKXsKLQkJCQkJcmV0dXJuIHBTbG90OwotCQkJCX0KLQkJCX0KLQkJfQotCQl0aHJvdyBuZXcgTW9kZWxFcnJvcigiU2xvdCBmb3IgJXMgZG9lcyBub3QgZXhpc3QgaW4gdGhlIGluc3RhbmNlIHBhY2thZ2UiLCBkT3AuZ2V0Q29udGV4dCgpLmdldE5hbWUoKSk7Ci0JfQotCi0JLyoqCi0JICogR2V0cyB0aGUgQ0ggcnQgY29tbWVudHNmcm9tIHBvcnQuCi0JICoKLQkgKiBAcGFyYW0gcGlQb3J0IHRoZSBwaSBwb3J0Ci0JICogQHBhcmFtIG9wZXJhdGlvbiB0aGUgb3BlcmF0aW9uCi0JICogQHJldHVybiB0aGUgQ0ggcnQgY29tbWVudHNmcm9tIHBvcnQKLQkgKi8KLQlwcml2YXRlIHN0YXRpYyB2b2lkIGdldENIUnRDb21tZW50c2Zyb21Qb3J0KFBvcnQgcGlQb3J0LCBPcGVyYXRpb24gb3BlcmF0aW9uKSB7Ci0JCQotCQlFTGlzdDxDb21tZW50PiBvd25lZENvbW1lbnRzID0gcGlQb3J0LmdldE93bmVyKCkuZ2V0T3duZXIoKS5nZXRPd25lZENvbW1lbnRzKCk7Ci0JCWZvciAoQ29tbWVudCBjb21tZW50IDogb3duZWRDb21tZW50cykgewotCQkJQ0hSdFNwZWNpZmljYXRpb24gc3RlcmVvdHlwZUFwcGxpY2F0aW9uID0gVU1MVXRpbHMuZ2V0U3RlcmVvdHlwZUFwcGxpY2F0aW9uKGNvbW1lbnQsIENIUnRTcGVjaWZpY2F0aW9uLmNsYXNzKTsKLQkJCWlmKHN0ZXJlb3R5cGVBcHBsaWNhdGlvbiAhPW51bGwpewotCQkJCU9wZXJhdGlvbiBjb250ZXh0ID0gKE9wZXJhdGlvbikgc3RlcmVvdHlwZUFwcGxpY2F0aW9uLmdldENvbnRleHQoKTsKLQkJCQlVTUxVdGlscy5pc09wZXJhdGlvbkVxdWFscyhjb250ZXh0LCBvcGVyYXRpb24pOwotCQkJfQotCQl9Ci0JfQotCi0JLyoqCi0JICogR2V0cyB0aGUgb3Bwb3NpdGUgcG9ydC4KLQkgKgotCSAqIEBwYXJhbSByaVBvcnQgdGhlIHJpIHBvcnQKLQkgKiBAcmV0dXJuIHRoZSBvcHBvc2l0ZSBwb3J0Ci0JICovCi0JcHJpdmF0ZSBzdGF0aWMgUG9ydCBnZXRPcHBvc2l0ZVBvcnQoUG9ydCByaVBvcnQpIHsKLQkJRUxpc3Q8Q29ubmVjdG9yRW5kPiBlbmRzID0gcmlQb3J0LmdldEVuZHMoKTsKLQkJYXNzZXJ0KGVuZHMuc2l6ZSgpPT0xKTsKLQkJZm9yIChDb25uZWN0b3JFbmQgZW5kIDogZW5kcykgewotCQkJQ29ubmVjdG9yIGNvbm5lY3RvciA9IChDb25uZWN0b3IpZW5kLmdldE93bmVyKCk7Ci0JCQlDb25uZWN0b3JFbmQgb3Bwb3NpdGVFbmQgPSBnZXRPcHBvc2l0ZUVuZChjb25uZWN0b3IsIGVuZCk7Ci0JCQlQb3J0IG9wcG9zaXRlUG9ydCA9IChQb3J0KW9wcG9zaXRlRW5kLmdldFJvbGUoKTsKLQkJCXJldHVybiBvcHBvc2l0ZVBvcnQ7Ci0JCX0KLQkJcmV0dXJuIG51bGw7Ci0JfQotCi0JLyoqCi0JICogR2V0cyB0aGUgb3Bwb3NpdGUgZW5kLgotCSAqCi0JICogQHBhcmFtIGNvbm5lY3RvciB0aGUgY29ubmVjdG9yCi0JICogQHBhcmFtIGN1cnJlbnRFbmQgdGhlIGN1cnJlbnQgZW5kCi0JICogQHJldHVybiB0aGUgb3Bwb3NpdGUgZW5kCi0JICovCi0JcHJpdmF0ZSBzdGF0aWMgQ29ubmVjdG9yRW5kIGdldE9wcG9zaXRlRW5kKENvbm5lY3RvciBjb25uZWN0b3IsIENvbm5lY3RvckVuZCBjdXJyZW50RW5kKSB7Ci0JCUVMaXN0PENvbm5lY3RvckVuZD4gYXJyYXkgPSBjb25uZWN0b3IuZ2V0RW5kcygpOwotCQlhc3NlcnQoYXJyYXkuc2l6ZSgpPT0yKTsKLQkJCi0JCWZvciAoQ29ubmVjdG9yRW5kIGVuZCA6IGFycmF5KSB7Ci0JCQlpZighZW5kLmVxdWFscyhjdXJyZW50RW5kKSkKLQkJCQlyZXR1cm4gKENvbm5lY3RvckVuZCkgZW5kOwotCQl9Ci0JCQotCQlyZXR1cm4gbnVsbDsKLQl9Ci0KLQkvKioKLQkgKiBHZXRzIHRoZSBtZXRob2QuCi0JICoKLQkgKiBAcGFyYW0gZE9wIHRoZSBkIG9wCi0JICogQHJldHVybiB0aGUgbWV0aG9kCi0JICovCi0Jc3RhdGljIEFjdGl2aXR5IGdldE1ldGhvZChDSFJ0U3BlY2lmaWNhdGlvbiBkT3ApIHsKLQkJdHJ5IHsKLQkJCXJldHVybiAoQWN0aXZpdHkpIGRPcC5nZXRDb250ZXh0KCkuZ2V0TWV0aG9kcygpLmdldCgwKTsKLQkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKLQkJfQotCQlyZXR1cm4gbnVsbDsKLQl9Ci0JCi0JCi0KLQkKLQkvKioKLQkgKiBQb3J0IHRvIHNsb3RzIGJ5IHJ1bGUuCi0JICoKLQkgKiBAcGFyYW0gc2VsZiB0aGUgc2VsZgotCSAqIEBwYXJhbSBvblBvcnQgdGhlIG9uIHBvcnQKLQkgKiBAcGFyYW0gcnVsZSB0aGUgcnVsZQotCSAqIEByZXR1cm4gdGhlIGUgbGlzdAotCSAqLwotCXByaXZhdGUgc3RhdGljIEVMaXN0PFNsb3Q+IHBvcnRUb1Nsb3RzQnlSdWxlKEluc3RhbmNlU3BlY2lmaWNhdGlvbiBzZWxmLCBQb3J0IG9uUG9ydCwgQ29uc3RyYWludCBydWxlKSB7Ci0JCUVMaXN0PFNsb3Q+IGxpc3QgPSBuZXcgQmFzaWNFTGlzdDxTbG90PigpOwotCQkKLQkJU3RyaW5nIHZhbHVlc1tdID0gcnVsZS5nZXRTcGVjaWZpY2F0aW9uKCkuc3RyaW5nVmFsdWUoKS50cmltKCkuc3BsaXQoIiAiKTsKLQkJQXJyYXlMaXN0PGludFtdPiBib3VuZHNMaXN0ID0gbmV3IEFycmF5TGlzdDxpbnRbXT4oKTsKLQkJZm9yIChTdHJpbmcgdmFsdWUgOiB2YWx1ZXMpIHsKLQkJCWJvdW5kc0xpc3QuYWRkKFZTTFV0aWxzLmdldEJvdW5kcyh2YWx1ZSkpOwotCQl9Ci0JCQotCQlmb3IgKFNsb3Qgc2xvdCA6IHNlbGYuZ2V0U2xvdHMoKSkgewotCQkJSWRlbnRpZlNsb3QgaWQgPSBVTUxVdGlscy5nZXRTdGVyZW90eXBlQXBwbGljYXRpb24oc2xvdCwgSWRlbnRpZlNsb3QuY2xhc3MpOwotCQkJCi0JCQlpZiAoaWQgIT0gbnVsbCAmJiBzbG90LmdldERlZmluaW5nRmVhdHVyZSgpID09IG9uUG9ydCAmJiBWU0xVdGlscy5pc0luQm91bmRzKGlkLmdldElkKCksIGJvdW5kc0xpc3QpKSB7Ci0JCQkJbGlzdC5hZGQoc2xvdCk7Ci0JCQl9Ci0JCQllbHNlIGlmIChzbG90LmdldERlZmluaW5nRmVhdHVyZSgpID09IG9uUG9ydCkgewotCQkJCWxpc3QuYWRkKHNsb3QpOwotCQkJfQotCQl9Ci0JCQotCQlyZXR1cm4gbGlzdDsKLQl9Ci0KLX0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICogQ29weXJpZ2h0IChDKSAyMDIwIA0KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCisgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKyAgLQ0KKyAgLSBDb3B5cmlnaHQgKGMpIDIwMTUtMjAxNiBVbml2ZXJzaXR5IG9mIFBhZG92YSwgSVRBTFkgLSAgSW50ZWNzIFNwQSANCisgIC0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAgLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCisgIC0gd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgIC0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCisgIC0NCisgIC0gQ29udHJpYnV0b3JzOg0KKyAgLQ0KKyAgLSBBbGVzc2FuZHJvIFpvdmkgYXpvdmlAbWF0aC51bmlwZC5pdA0KKyAgLSBTdGVmYW5vIFB1cmkgc3RlZmFuby5wdXJpQGludGVjcy5pdA0KKyAgLSBMYXVyYSBCYXJhY2NoaSBsYXVyYS5iYXJhY2NoaUBpbnRlY3MuaXQNCisgIC0gTmljaG9sYXMgUGFjaW5pIG5pY2hvbGFzLnBhY2luaUBpbnRlY3MuaXQgIA0KKyAgLQ0KKyAgLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24gYW5kL29yIGluaXRpYWwgZG9jdW1lbnRhdGlvbg0KKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9wYWNrYWdlIG9yZy5wb2xhcnN5cy5jaGVzcy5tdWx0aWNvcmUudXRpbHM7DQorDQoraW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7DQoraW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOw0KK2ltcG9ydCBqYXZhLnV0aWwuU2V0Ow0KK2ltcG9ydCBqYXZhLnV0aWwucmVnZXguTWF0Y2hlcjsNCitpbXBvcnQgamF2YS51dGlsLnJlZ2V4LlBhdHRlcm47DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24udXRpbC5CYXNpY0VMaXN0Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuRUxpc3Q7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLkFjdGl2aXR5Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5BY3Rpdml0eU5vZGU7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLkJlaGF2aW9yYWxGZWF0dXJlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5DYWxsT3BlcmF0aW9uQWN0aW9uOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5Db21tZW50Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5Db25uZWN0b3I7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLkNvbm5lY3RvckVuZDsNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuQ29uc3RyYWludDsNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuRWxlbWVudDsNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuSW5zdGFuY2VTcGVjaWZpY2F0aW9uOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5JbnN0YW5jZVZhbHVlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5Nb2RlbDsNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuT3BlcmF0aW9uOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5QYWNrYWdlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5Qb3J0Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5TbG90Ow0KK2ltcG9ydCBvcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUuQ29yZS5JZGVudGlmU2xvdDsNCitpbXBvcnQgb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlLlByZWRpY3RhYmlsaXR5LlJUQ29tcG9uZW50TW9kZWwuQ0hSdFBvcnRTbG90Ow0KK2ltcG9ydCBvcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUuUHJlZGljdGFiaWxpdHkuUlRDb21wb25lbnRNb2RlbC5DSFJ0U3BlY2lmaWNhdGlvbjsNCitpbXBvcnQgb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUucHJvZmlsZXMuQ0hFU1NQcm9maWxlTWFuYWdlcjsNCitpbXBvcnQgb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUudXRpbC51bWwuTW9kZWxFcnJvcjsNCitpbXBvcnQgb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUudXRpbC51bWwuVU1MVXRpbHM7DQorDQorLyoqDQorICogVGhlIENsYXNzIEluc3RhbmNlUXVlcnkuDQorICovDQorcHVibGljIGNsYXNzIEluc3RhbmNlUXVlcnkgew0KKw0KKwkvKioNCisJICogR2V0cyB0aGUgaW5zdGFuY2Ugc3BlYyBwYWNrYWdlLg0KKwkgKg0KKwkgKiBAcGFyYW0gdW1sTW9kZWwgdGhlIHVtbCBtb2RlbA0KKwkgKiBAcmV0dXJuIHRoZSBpbnN0YW5jZSBzcGVjIHBhY2thZ2UNCisJICovDQorCXB1YmxpYyBzdGF0aWMgUGFja2FnZSBnZXRJbnN0YW5jZVNwZWNQYWNrYWdlKE1vZGVsIHVtbE1vZGVsKXsNCisJCVBhY2thZ2UgY21wdiA9IENIRVNTUHJvZmlsZU1hbmFnZXIuZ2V0Vmlld0J5U3RlcmVvdHlwZSgNCisJCQkJKE1vZGVsKSB1bWxNb2RlbCwgQ0hFU1NQcm9maWxlTWFuYWdlci5DT01QT05FTlRfVklFVyk7DQorCQljbXB2ID0gUXVlcnlVdGlscy5nZXRPbmVSZXNvdXJjZVBsYXRmb3JtUGFja2FnZShjbXB2KTsNCisJCXJldHVybiBjbXB2Ow0KKwl9DQorDQorCQ0KKwkNCisNCisJDQorCQ0KKwkvKioNCisJICogQ2hlY2tzIGlmIGlzIGRlZmVycmVkLg0KKwkgKg0KKwkgKiBAcGFyYW0gdXNlZENIIHRoZSB1c2VkIENIDQorCSAqIEByZXR1cm4gdHJ1ZSwgaWYgaXMgZGVmZXJyZWQNCisJICovDQorCXN0YXRpYyBib29sZWFuIGlzRGVmZXJyZWQoQ0hSdFNwZWNpZmljYXRpb24gdXNlZENIKSB7DQorCQlTdHJpbmcgb2NjS2luZCA9IHVzZWRDSC5nZXRPY2NLaW5kKCk7DQorCQlyZXR1cm4gb2NjS2luZCE9bnVsbDsNCisJfQ0KKw0KKwkvKioNCisJICogR2V0cyB0aGUgQ0ggZnJvbSBzbG90Lg0KKwkgKg0KKwkgKiBAcGFyYW0gdXNlZFBpU2xvdCB0aGUgdXNlZCBwaSBzbG90DQorCSAqIEBwYXJhbSBvcGVyYXRpb24gdGhlIG9wZXJhdGlvbg0KKwkgKiBAcmV0dXJuIHRoZSBDSCBmcm9tIHNsb3QNCisJICovDQorCXN0YXRpYyBDSFJ0U3BlY2lmaWNhdGlvbiBnZXRDSEZyb21TbG90KFNsb3QgdXNlZFBpU2xvdCwNCisJCQlPcGVyYXRpb24gb3BlcmF0aW9uKSB7DQorCQlpZih1c2VkUGlTbG90ID09IG51bGwpew0KKwkJCXJldHVybiBudWxsOw0KKwkJfQ0KKwkJQ0hSdFBvcnRTbG90IGNoID0gVU1MVXRpbHMuZ2V0U3RlcmVvdHlwZUFwcGxpY2F0aW9uKHVzZWRQaVNsb3QsIENIUnRQb3J0U2xvdC5jbGFzcyk7DQorCQlpZihjaD09bnVsbCkNCisJCQlyZXR1cm4gbnVsbDsNCisJCQ0KKwkJZm9yIChDSFJ0U3BlY2lmaWNhdGlvbiBpIDogY2guZ2V0Q0hfUnRTcGVjaWZpY2F0aW9uKCkpIHsNCisJCQlpZiAoaS5nZXRDb250ZXh0KCkuZXF1YWxzKG9wZXJhdGlvbikpIHsNCisJCQkJcmV0dXJuIGk7DQorCQkJfQ0KKwkJCWlmKFVNTFV0aWxzLmFyZU9wZXJhdGlvbnNFcXVhbCgoT3BlcmF0aW9uKSBpLmdldENvbnRleHQoKSwgb3BlcmF0aW9uLCBudWxsKSl7DQorCQkJCXJldHVybiBpOw0KKwkJCX0NCisJCX0NCisJCWFzc2VydCBmYWxzZTsNCisJCXJldHVybiBudWxsOw0KKwl9DQorCQ0KKwkNCisJLyoqDQorCSAqIEdldHMgdGhlIHJpIHBpIGxpbmtzLg0KKwkgKg0KKwkgKiBAcGFyYW0gc2xvdCB0aGUgc2xvdA0KKwkgKiBAcmV0dXJuIHRoZSByaSBwaSBsaW5rcw0KKwkgKi8NCisJcHJpdmF0ZSBzdGF0aWMgRUxpc3Q8SW5zdGFuY2VTcGVjaWZpY2F0aW9uPiBnZXRSaVBpTGlua3MoU2xvdCBzbG90KXsNCisJCUVMaXN0PEluc3RhbmNlU3BlY2lmaWNhdGlvbj4gcmlQaUxpbmtzID0gbmV3IEJhc2ljRUxpc3Q8SW5zdGFuY2VTcGVjaWZpY2F0aW9uPigpOw0KKwkJRUxpc3Q8RWxlbWVudD4gYWxsT3duZWRFbGVtZW50cyA9IHNsb3QuZ2V0T3duZXIoKS5nZXRPd25lcigpLmFsbE93bmVkRWxlbWVudHMoKTsNCisJCWZvciAoRWxlbWVudCBlIDogYWxsT3duZWRFbGVtZW50cykgew0KKwkJCWlmIChlIGluc3RhbmNlb2YgSW5zdGFuY2VTcGVjaWZpY2F0aW9uKSB7DQorCQkJCUluc3RhbmNlU3BlY2lmaWNhdGlvbiBmID0gKEluc3RhbmNlU3BlY2lmaWNhdGlvbikgZTsNCisJCQkJYm9vbGVhbiBiID0gZi5nZXRDbGFzc2lmaWVycygpLnNpemUoKSA9PSAwOw0KKwkJCQlpZihiKXsNCisJCQkJCXJpUGlMaW5rcy5hZGQoZik7DQorCQkJCX0NCisJCQl9DQorCQl9IA0KKwkJcmV0dXJuIHJpUGlMaW5rczsNCisJfQ0KKw0KKwkvKioNCisJICogR2V0cyB0aGUgb3Bwb3NpdGUgc2xvdC4NCisJICoNCisJICogQHBhcmFtIHNsb3QgdGhlIHNsb3QNCisJICogQHJldHVybiB0aGUgb3Bwb3NpdGUgc2xvdA0KKwkgKiBAdGhyb3dzIE1vZGVsRXJyb3IgdGhlIG1vZGVsIGVycm9yDQorCSAqLw0KKwkvKmlkZW50aWNhbCBvZiBnZXRDb3JyZXNwb25kaW5nU0xvdCBvZiBRVlRPIHRyYW5zZm9ybWF0aW9uKi8NCisJc3RhdGljIFNsb3QgZ2V0T3Bwb3NpdGVTbG90KFNsb3Qgc2xvdCkgdGhyb3dzIE1vZGVsRXJyb3Igew0KKwkJRUxpc3Q8SW5zdGFuY2VTcGVjaWZpY2F0aW9uPiByaVBpTGlua3MgPSBnZXRSaVBpTGlua3Moc2xvdCk7DQorCQkNCisJCWZvciAoSW5zdGFuY2VTcGVjaWZpY2F0aW9uIGwgOiByaVBpTGlua3MpIHsNCisJCQlFTGlzdDxJbnN0YW5jZVZhbHVlPiBlbmRzID0gZ2V0RW5kcyhsKTsNCisJCQkNCisJCQlpZihlbmRzLnNpemUoKSE9MikgdGhyb3cgbmV3IE1vZGVsRXJyb3IoIkEgY29ubmVjdG9yIG11c3QgaGF2ZSBleGFjdGx5IDIgZW5kcyIpOw0KKwkJCQ0KKwkJCWZvciAoaW50IGkgPSAwOyBpIDwgMjsgaSsrKSB7DQorCQkJCS8vMXN0IHN0ZXA6IGk9MCBqPTENCisJCQkJLy8ybmQgc3RlcDogaT0xIGo9MA0KKwkJCQlpbnQgaiA9IChpKzEpJTI7DQorCQkJCUluc3RhbmNlVmFsdWUgZmlyc3QgPSBlbmRzLmdldChpKTsNCisJCQkJYm9vbGVhbiBiID0gZmlyc3QuZ2V0SW5zdGFuY2UoKS5lcXVhbHMoc2xvdC5nZXRPd25pbmdJbnN0YW5jZSgpKTsNCisJCQkJYiA9IGIgJiYgKChTbG90KWZpcnN0LmdldE93bmVyKCkpLmdldERlZmluaW5nRmVhdHVyZSgpLmVxdWFscyhzbG90LmdldERlZmluaW5nRmVhdHVyZSgpKTsNCisJCQkJDQorCQkJCWlmKGIpew0KKwkJCQkJSW5zdGFuY2VWYWx1ZSBpbnN0YW5jZVZhbHVlID0gZW5kcy5nZXQoaik7DQorCQkJCQlJbnN0YW5jZVNwZWNpZmljYXRpb24gaW5zdGFuY2UgPSBpbnN0YW5jZVZhbHVlLmdldEluc3RhbmNlKCk7DQorCQkJCQkNCisJCQkJCUVsZW1lbnQgb3duZXIgPSBpbnN0YW5jZVZhbHVlLmdldE93bmVyKCk7DQorCQkJCQlpZiAob3duZXIgaW5zdGFuY2VvZiBTbG90KSB7DQorCQkJCQkJU2xvdCBzT3duZXIgPSAoU2xvdCkgb3duZXI7DQorCQkJCQkJDQorCQkJCQkJZm9yIChTbG90IHMgOiBpbnN0YW5jZS5nZXRTbG90cygpKSB7DQorCQkJCQkJCSANCisJCQkJCQkJaWYocy5nZXREZWZpbmluZ0ZlYXR1cmUoKS5lcXVhbHMoc093bmVyLmdldERlZmluaW5nRmVhdHVyZSgpKSkNCisJCQkJCQkJCXJldHVybiBzOw0KKwkJCQkJCQkNCisJCQkJCQl9DQorCQkJCQl9DQorCQkJCQkNCisJCQkJfQ0KKwkJCX0NCisNCisJCQkvKmNoZWNraW5nSVYgPSBlbmRzLmdldCgxKTsNCisJCQliID0gY2hlY2tpbmdJVi5nZXRJbnN0YW5jZSgpLmVxdWFscyhzbG90LmdldE93bmluZ0luc3RhbmNlKCkpOw0KKwkJCWIgPSBiICYmICgoU2xvdCljaGVja2luZ0lWLmdldE93bmVyKCkpLmdldERlZmluaW5nRmVhdHVyZSgpLmVxdWFscyhzbG90LmdldERlZmluaW5nRmVhdHVyZSgpKTsNCisJCQkNCisJCQlpZihiKXsNCisJCQkJSW5zdGFuY2VTcGVjaWZpY2F0aW9uIGluc3RhbmNlID0gZW5kcy5nZXQoMCkuZ2V0SW5zdGFuY2UoKTsNCisJCQkJZm9yIChTbG90IHMgOiBpbnN0YW5jZS5nZXRTbG90cygpKSB7DQorCQkJCQlpZihzLmdldERlZmluaW5nRmVhdHVyZSgpLmVxdWFscygoKFNsb3Qpcy5nZXRPd25lcigpKS5nZXREZWZpbmluZ0ZlYXR1cmUoKSkpDQorCQkJCQkJcmV0dXJuIHM7DQorCQkJCX0NCisJCQl9Ki8NCisJCX0NCisJCQ0KKwkJcmV0dXJuIG51bGw7DQorCX0NCisNCisNCisJLyoqDQorCSAqIEdldHMgdGhlIGVuZHMuDQorCSAqDQorCSAqIEBwYXJhbSBsIHRoZSBsDQorCSAqIEByZXR1cm4gdGhlIGVuZHMNCisJICovDQorCXByaXZhdGUgc3RhdGljIEVMaXN0PEluc3RhbmNlVmFsdWU+IGdldEVuZHMoSW5zdGFuY2VTcGVjaWZpY2F0aW9uIGwpIHsNCisJCUVMaXN0PEluc3RhbmNlVmFsdWU+IGVuZHMgPSBuZXcgQmFzaWNFTGlzdDxJbnN0YW5jZVZhbHVlPigpOw0KKw0KKwkJZm9yIChFbGVtZW50IGVsZW1lbnQgOiBsLmFsbE93bmVkRWxlbWVudHMoKSkgew0KKwkJCWlmIChlbGVtZW50IGluc3RhbmNlb2YgSW5zdGFuY2VWYWx1ZSkgew0KKwkJCQlJbnN0YW5jZVZhbHVlIGl2ID0gKEluc3RhbmNlVmFsdWUpIGVsZW1lbnQ7DQorCQkJCSBlbmRzLmFkZChpdik7DQorCQkJCSANCisJCQl9DQorCQl9DQorCQlyZXR1cm4gZW5kczsNCisJfQ0KKw0KKwkvKioNCisJICogR2V0cyB0aGUgc2xvdCBmcm9tIHBvcnQuDQorCSAqDQorCSAqIEBwYXJhbSBjYWxsT3AgdGhlIGNhbGwgb3ANCisJICogQHBhcmFtIG93bmluZ0luc3RhbmNlIHRoZSBvd25pbmcgaW5zdGFuY2UNCisJICogQHJldHVybiB0aGUgc2xvdCBmcm9tIHBvcnQNCisJICovDQorCXN0YXRpYyBFTGlzdDxTbG90PiBnZXRTbG90RnJvbVBvcnQoQ2FsbE9wZXJhdGlvbkFjdGlvbiBjYWxsT3AsDQorCQkJSW5zdGFuY2VTcGVjaWZpY2F0aW9uIG93bmluZ0luc3RhbmNlKSB7DQorCQlCZWhhdmlvcmFsRmVhdHVyZSBzcGVjaWZpY2F0aW9uID0gY2FsbE9wLmdldEFjdGl2aXR5KCkuZ2V0U3BlY2lmaWNhdGlvbigpOw0KKwkJT3BlcmF0aW9uIG9wID0gKE9wZXJhdGlvbilzcGVjaWZpY2F0aW9uOw0KKwkJQ29uc3RyYWludCBjID0gbnVsbDsNCisJCWZvciAoQ29uc3RyYWludCBydWxlIDogb3AuZ2V0Q2xhc3NfKCkuZ2V0T3duZWRSdWxlcygpKSB7DQorCQkJZm9yIChFbGVtZW50IGNFIDpydWxlLmdldENvbnN0cmFpbmVkRWxlbWVudHMoKSkgew0KKwkJCQlpZiAoY0UgaW5zdGFuY2VvZiBDYWxsT3BlcmF0aW9uQWN0aW9uKSB7DQorCQkJCQlDYWxsT3BlcmF0aW9uQWN0aW9uIGNDRSA9IChDYWxsT3BlcmF0aW9uQWN0aW9uKSBjRTsNCisJCQkJCWlmKGNDRS5lcXVhbHMoY2FsbE9wKSkNCisJCQkJCQljID0gcnVsZTsNCisJCQkJCQlicmVhazsNCisJCQkJfQ0KKwkJCX0NCisJCX0NCisJCUVMaXN0PFNsb3Q+IHJlc3VsdCA9IG5ldyBCYXNpY0VMaXN0PFNsb3Q+KCk7DQorCQlpZihjPT1udWxsKXsNCisJCQlmb3IgKFNsb3Qgc2xvdCA6IG93bmluZ0luc3RhbmNlLmdldFNsb3RzKCkpIHsNCisJCQkJaWYoc2xvdC5nZXREZWZpbmluZ0ZlYXR1cmUoKS5lcXVhbHMoY2FsbE9wLmdldE9uUG9ydCgpKSl7DQorCQkJCQlyZXN1bHQuYWRkKHNsb3QpOw0KKwkJCQl9DQorCQkJfQ0KKwkJfSBlbHNlIHsNCisJCQlyZXN1bHQgPSBwb3J0VG9TbG90c0J5UnVsZShvd25pbmdJbnN0YW5jZSwgY2FsbE9wLmdldE9uUG9ydCgpLCBjKTsNCisJCX0NCisJCXJldHVybiByZXN1bHQ7DQorCX0NCisJDQorCQ0KKw0KKwkvKioNCisJICogR2V0cyB0aGUgQ0ggcnQgcG9ydCBzbG90Lg0KKwkgKg0KKwkgKiBAcGFyYW0gaW5zdFBrZyB0aGUgaW5zdCBwa2cNCisJICogQHBhcmFtIGRPcCB0aGUgZCBvcA0KKwkgKiBAcmV0dXJuIHRoZSBDSCBydCBwb3J0IHNsb3QNCisJICogQHRocm93cyBNb2RlbEVycm9yIHRoZSBtb2RlbCBlcnJvcg0KKwkgKi8NCisJc3RhdGljIENIUnRQb3J0U2xvdCBnZXRDSFJ0UG9ydFNsb3QoUGFja2FnZSBpbnN0UGtnLCBDSFJ0U3BlY2lmaWNhdGlvbiBkT3ApIHRocm93cyBNb2RlbEVycm9yIHsNCisJCWZvciAoRWxlbWVudCBlIDogaW5zdFBrZy5hbGxPd25lZEVsZW1lbnRzKCkpIHsNCisJCQlpZighKGUgaW5zdGFuY2VvZiBTbG90KSkNCisJCQkJY29udGludWU7DQorCQkJQ0hSdFBvcnRTbG90IHBTbG90ID0gVU1MVXRpbHMuZ2V0U3RlcmVvdHlwZUFwcGxpY2F0aW9uKGUsIENIUnRQb3J0U2xvdC5jbGFzcyk7DQorCQkJaWYocFNsb3Q9PW51bGwpDQorCQkJCWNvbnRpbnVlOw0KKwkJCWZvciAoQ0hSdFNwZWNpZmljYXRpb24gY2hTUGVjIDogcFNsb3QuZ2V0Q0hfUnRTcGVjaWZpY2F0aW9uKCkpIHsNCisJCQkJaWYoY2hTUGVjLmVxdWFscyhkT3ApKXsNCisJCQkJCXJldHVybiBwU2xvdDsNCisJCQkJfQ0KKwkJCX0NCisJCX0NCisJCXRocm93IG5ldyBNb2RlbEVycm9yKCJTbG90IGZvciAlcyBkb2VzIG5vdCBleGlzdCBpbiB0aGUgaW5zdGFuY2UgcGFja2FnZSIsIGRPcC5nZXRDb250ZXh0KCkuZ2V0TmFtZSgpKTsNCisJfQ0KKw0KKwkvKioNCisJICogR2V0cyB0aGUgQ0ggcnQgY29tbWVudHNmcm9tIHBvcnQuDQorCSAqDQorCSAqIEBwYXJhbSBwaVBvcnQgdGhlIHBpIHBvcnQNCisJICogQHBhcmFtIG9wZXJhdGlvbiB0aGUgb3BlcmF0aW9uDQorCSAqIEByZXR1cm4gdGhlIENIIHJ0IGNvbW1lbnRzZnJvbSBwb3J0DQorCSAqLw0KKwlwcml2YXRlIHN0YXRpYyB2b2lkIGdldENIUnRDb21tZW50c2Zyb21Qb3J0KFBvcnQgcGlQb3J0LCBPcGVyYXRpb24gb3BlcmF0aW9uKSB7DQorCQkNCisJCUVMaXN0PENvbW1lbnQ+IG93bmVkQ29tbWVudHMgPSBwaVBvcnQuZ2V0T3duZXIoKS5nZXRPd25lcigpLmdldE93bmVkQ29tbWVudHMoKTsNCisJCWZvciAoQ29tbWVudCBjb21tZW50IDogb3duZWRDb21tZW50cykgew0KKwkJCUNIUnRTcGVjaWZpY2F0aW9uIHN0ZXJlb3R5cGVBcHBsaWNhdGlvbiA9IFVNTFV0aWxzLmdldFN0ZXJlb3R5cGVBcHBsaWNhdGlvbihjb21tZW50LCBDSFJ0U3BlY2lmaWNhdGlvbi5jbGFzcyk7DQorCQkJaWYoc3RlcmVvdHlwZUFwcGxpY2F0aW9uICE9bnVsbCl7DQorCQkJCU9wZXJhdGlvbiBjb250ZXh0ID0gKE9wZXJhdGlvbikgc3RlcmVvdHlwZUFwcGxpY2F0aW9uLmdldENvbnRleHQoKTsNCisJCQkJVU1MVXRpbHMuaXNPcGVyYXRpb25FcXVhbHMoY29udGV4dCwgb3BlcmF0aW9uKTsNCisJCQl9DQorCQl9DQorCX0NCisNCisJLyoqDQorCSAqIEdldHMgdGhlIG9wcG9zaXRlIHBvcnQuDQorCSAqDQorCSAqIEBwYXJhbSByaVBvcnQgdGhlIHJpIHBvcnQNCisJICogQHJldHVybiB0aGUgb3Bwb3NpdGUgcG9ydA0KKwkgKi8NCisJcHJpdmF0ZSBzdGF0aWMgUG9ydCBnZXRPcHBvc2l0ZVBvcnQoUG9ydCByaVBvcnQpIHsNCisJCUVMaXN0PENvbm5lY3RvckVuZD4gZW5kcyA9IHJpUG9ydC5nZXRFbmRzKCk7DQorCQlhc3NlcnQoZW5kcy5zaXplKCk9PTEpOw0KKwkJZm9yIChDb25uZWN0b3JFbmQgZW5kIDogZW5kcykgew0KKwkJCUNvbm5lY3RvciBjb25uZWN0b3IgPSAoQ29ubmVjdG9yKWVuZC5nZXRPd25lcigpOw0KKwkJCUNvbm5lY3RvckVuZCBvcHBvc2l0ZUVuZCA9IGdldE9wcG9zaXRlRW5kKGNvbm5lY3RvciwgZW5kKTsNCisJCQlQb3J0IG9wcG9zaXRlUG9ydCA9IChQb3J0KW9wcG9zaXRlRW5kLmdldFJvbGUoKTsNCisJCQlyZXR1cm4gb3Bwb3NpdGVQb3J0Ow0KKwkJfQ0KKwkJcmV0dXJuIG51bGw7DQorCX0NCisNCisJLyoqDQorCSAqIEdldHMgdGhlIG9wcG9zaXRlIGVuZC4NCisJICoNCisJICogQHBhcmFtIGNvbm5lY3RvciB0aGUgY29ubmVjdG9yDQorCSAqIEBwYXJhbSBjdXJyZW50RW5kIHRoZSBjdXJyZW50IGVuZA0KKwkgKiBAcmV0dXJuIHRoZSBvcHBvc2l0ZSBlbmQNCisJICovDQorCXByaXZhdGUgc3RhdGljIENvbm5lY3RvckVuZCBnZXRPcHBvc2l0ZUVuZChDb25uZWN0b3IgY29ubmVjdG9yLCBDb25uZWN0b3JFbmQgY3VycmVudEVuZCkgew0KKwkJRUxpc3Q8Q29ubmVjdG9yRW5kPiBhcnJheSA9IGNvbm5lY3Rvci5nZXRFbmRzKCk7DQorCQlhc3NlcnQoYXJyYXkuc2l6ZSgpPT0yKTsNCisJCQ0KKwkJZm9yIChDb25uZWN0b3JFbmQgZW5kIDogYXJyYXkpIHsNCisJCQlpZighZW5kLmVxdWFscyhjdXJyZW50RW5kKSkNCisJCQkJcmV0dXJuIChDb25uZWN0b3JFbmQpIGVuZDsNCisJCX0NCisJCQ0KKwkJcmV0dXJuIG51bGw7DQorCX0NCisNCisJLyoqDQorCSAqIEdldHMgdGhlIG1ldGhvZC4NCisJICoNCisJICogQHBhcmFtIGRPcCB0aGUgZCBvcA0KKwkgKiBAcmV0dXJuIHRoZSBtZXRob2QNCisJICovDQorCXN0YXRpYyBBY3Rpdml0eSBnZXRNZXRob2QoQ0hSdFNwZWNpZmljYXRpb24gZE9wKSB7DQorCQl0cnkgew0KKwkJCXJldHVybiAoQWN0aXZpdHkpIGRPcC5nZXRDb250ZXh0KCkuZ2V0TWV0aG9kcygpLmdldCgwKTsNCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7DQorCQl9DQorCQlyZXR1cm4gbnVsbDsNCisJfQ0KKwkNCisJDQorDQorCQ0KKwkvKioNCisJICogUG9ydCB0byBzbG90cyBieSBydWxlLg0KKwkgKg0KKwkgKiBAcGFyYW0gc2VsZiB0aGUgc2VsZg0KKwkgKiBAcGFyYW0gb25Qb3J0IHRoZSBvbiBwb3J0DQorCSAqIEBwYXJhbSBydWxlIHRoZSBydWxlDQorCSAqIEByZXR1cm4gdGhlIGUgbGlzdA0KKwkgKi8NCisJcHJpdmF0ZSBzdGF0aWMgRUxpc3Q8U2xvdD4gcG9ydFRvU2xvdHNCeVJ1bGUoSW5zdGFuY2VTcGVjaWZpY2F0aW9uIHNlbGYsIFBvcnQgb25Qb3J0LCBDb25zdHJhaW50IHJ1bGUpIHsNCisJCUVMaXN0PFNsb3Q+IGxpc3QgPSBuZXcgQmFzaWNFTGlzdDxTbG90PigpOw0KKwkJDQorCQlTdHJpbmcgdmFsdWVzW10gPSBydWxlLmdldFNwZWNpZmljYXRpb24oKS5zdHJpbmdWYWx1ZSgpLnRyaW0oKS5zcGxpdCgiICIpOw0KKwkJQXJyYXlMaXN0PGludFtdPiBib3VuZHNMaXN0ID0gbmV3IEFycmF5TGlzdDxpbnRbXT4oKTsNCisJCWZvciAoU3RyaW5nIHZhbHVlIDogdmFsdWVzKSB7DQorCQkJYm91bmRzTGlzdC5hZGQoVlNMVXRpbHMuZ2V0Qm91bmRzKHZhbHVlKSk7DQorCQl9DQorCQkNCisJCWZvciAoU2xvdCBzbG90IDogc2VsZi5nZXRTbG90cygpKSB7DQorCQkJSWRlbnRpZlNsb3QgaWQgPSBVTUxVdGlscy5nZXRTdGVyZW90eXBlQXBwbGljYXRpb24oc2xvdCwgSWRlbnRpZlNsb3QuY2xhc3MpOw0KKwkJCQ0KKwkJCWlmIChpZCAhPSBudWxsICYmIHNsb3QuZ2V0RGVmaW5pbmdGZWF0dXJlKCkgPT0gb25Qb3J0ICYmIFZTTFV0aWxzLmlzSW5Cb3VuZHMoaWQuZ2V0SWQoKSwgYm91bmRzTGlzdCkpIHsNCisJCQkJbGlzdC5hZGQoc2xvdCk7DQorCQkJfQ0KKwkJCWVsc2UgaWYgKHNsb3QuZ2V0RGVmaW5pbmdGZWF0dXJlKCkgPT0gb25Qb3J0KSB7DQorCQkJCWxpc3QuYWRkKHNsb3QpOw0KKwkJCX0NCisJCX0NCisJCQ0KKwkJcmV0dXJuIGxpc3Q7DQorCX0NCisNCit9DQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbXVsdGljb3JlL3V0aWxzL1F1ZXJ5VXRpbHMuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm11bHRpY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL211bHRpY29yZS91dGlscy9RdWVyeVV0aWxzLmphdmEKaW5kZXggMzJkNGQ1ZC4uZGZlNzRjZSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbXVsdGljb3JlL3V0aWxzL1F1ZXJ5VXRpbHMuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tdWx0aWNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tdWx0aWNvcmUvdXRpbHMvUXVlcnlVdGlscy5qYXZhCkBAIC0xLDIyMTYgKzEsMjIyMyBAQAotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgLQotICAtIENvcHlyaWdodCAoYykgMjAxNS0yMDE2IFVuaXZlcnNpdHkgb2YgUGFkb3ZhLCBJVEFMWSAtICBJbnRlY3MgU3BBIAotICAtIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAgLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAgLSB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICAtIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gIC0KLSAgLSBDb250cmlidXRvcnM6Ci0gIC0KLSAgLSBBbGVzc2FuZHJvIFpvdmkgYXpvdmlAbWF0aC51bmlwZC5pdAotICAtIFN0ZWZhbm8gUHVyaSBzdGVmYW5vLnB1cmlAaW50ZWNzLml0Ci0gIC0gTGF1cmEgQmFyYWNjaGkgbGF1cmEuYmFyYWNjaGlAaW50ZWNzLml0Ci0gIC0gTmljaG9sYXMgUGFjaW5pIG5pY2hvbGFzLnBhY2luaUBpbnRlY3MuaXQgIAotICAtCi0gIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uIGFuZC9vciBpbml0aWFsIGRvY3VtZW50YXRpb24KLSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9wYWNrYWdlIG9yZy5wb2xhcnN5cy5jaGVzcy5tdWx0aWNvcmUudXRpbHM7Ci0KLWltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OwotaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOwotaW1wb3J0IGphdmEudXRpbC5IYXNoU2V0OwotaW1wb3J0IGphdmEudXRpbC5MaW5rZWRIYXNoU2V0OwotaW1wb3J0IGphdmEudXRpbC5MaW5rZWRMaXN0OwotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotaW1wb3J0IGphdmEudXRpbC5NYXA7Ci1pbXBvcnQgamF2YS51dGlsLlNldDsKLQotaW1wb3J0IGphdmF4LmNyeXB0by5zcGVjLk9BRVBQYXJhbWV0ZXJTcGVjOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5jb21tYW5kLkNvbW1hbmRTdGFjazsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuQmFzaWNFTGlzdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuRUxpc3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLkVudW1lcmF0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLnRyYW5zYWN0aW9uLlRyYW5zYWN0aW9uYWxFZGl0aW5nRG9tYWluOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi50cmFuc2FjdGlvbi51dGlsLlRyYW5zYWN0aW9uVXRpbDsKLWltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLk1BUlRFLk1BUlRFX0Rlc2lnbk1vZGVsLkhMQU0uQ2FsbENvbmN1cnJlbmN5S2luZDsKLWltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLk1BUlRFLk1BUlRFX0Rlc2lnbk1vZGVsLkhSTS5Id0xvZ2ljYWwuSHdEZXZpY2UuSHdEZXZpY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5NQVJURS5NQVJURV9Gb3VuZGF0aW9ucy5BbGxvYy5Bc3NpZ247Ci1pbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5NQVJURS5NQVJURV9Gb3VuZGF0aW9ucy5ORlBzLk5mcENvbnN0cmFpbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy51bWwudG9vbHMubW9kZWwuVW1sTW9kZWw7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuQWN0aXZpdHk7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuQWN0aXZpdHlOb2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLkNhbGxPcGVyYXRpb25BY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuQ2xhc3NpZmllcjsKLWltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5Db21tZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLkNvbXBvbmVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5Db25zdHJhaW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLkVsZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuSW5zdGFuY2VTcGVjaWZpY2F0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLkxpdGVyYWxTdHJpbmc7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuTW9kZWw7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuTmFtZWRFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLlBhY2thZ2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuU2xvdDsKLWltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5TdGVyZW90eXBlOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLlVNTFBhY2thZ2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuVmFsdWVTcGVjaWZpY2F0aW9uOwotaW1wb3J0IG9yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS5Db21wb25lbnRNb2RlbC5Db21wb25lbnRJbXBsZW1lbnRhdGlvbjsKLWltcG9ydCBvcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUuQ29tcG9uZW50TW9kZWwuRnVuY3Rpb25hbFBhcnRpdGlvbjsKLWltcG9ydCBvcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUuQ29yZS5DSEVTUzsKLWltcG9ydCBvcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUuQ29yZS5DSEdhUmVzb3VyY2VQbGF0Zm9ybTsKLWltcG9ydCBvcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUuQ29yZS5GdW5jdGlvbmFsUGFydGl0aW9uczsKLWltcG9ydCBvcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUuUHJlZGljdGFiaWxpdHkuRGVwbG95bWVudENvbmZpZ3VyYXRpb24uSGFyZHdhcmVCYXNlbGluZS5DSF9Id1Byb2Nlc3NvcjsKLWltcG9ydCBvcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUuUHJlZGljdGFiaWxpdHkuUlRDb21wb25lbnRNb2RlbC5DSFJ0UG9ydFNsb3Q7Ci1pbXBvcnQgb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlLlByZWRpY3RhYmlsaXR5LlJUQ29tcG9uZW50TW9kZWwuQ0hSdFNwZWNpZmljYXRpb247Ci1pbXBvcnQgb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlLnV0aWwuQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5wb2xhcnN5cy5jaGVzcy5jb3JlLnByb2ZpbGVzLkNIRVNTUHJvZmlsZU1hbmFnZXI7Ci1pbXBvcnQgb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUudXRpbC51bWwuTW9kZWxFcnJvcjsKLWltcG9ydCBvcmcucG9sYXJzeXMuY2hlc3MuY29yZS51dGlsLnVtbC5VTUxVdGlsczsKLWltcG9ydCBvcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlLm1vZGVsLkNIQ29yZTsKLWltcG9ydCBvcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlLm1vZGVsLkNIVGFzazsKLWltcG9ydCBvcmcucG9sYXJzeXMuY2hlc3MudmFsaWRhdG9yLmNvbnN0cmFpbnRzLlN0cmluZ1BhcnNlcjsKLQotLyoqCi0gKiBUaGUgQ2xhc3MgUXVlcnlVdGlscy4KLSAqLwotcHVibGljIGNsYXNzIFF1ZXJ5VXRpbHMgewotCQotCS8qKgotCSAqIFRoZSBDbGFzcyBPY2NLaW5kSW5mby4KLQkgKi8KLQlwdWJsaWMgc3RhdGljIGNsYXNzIE9jY0tpbmRJbmZvIHsKLQotCQkvKiogVGhlIHZhbHVlLiAqLwotCQlwdWJsaWMgZG91YmxlIHZhbHVlOwotCQkKLQkJLyoqIFRoZSB0eXBlLiAqLwotCQlwdWJsaWMgU3RyaW5nIHR5cGU7Ci0JCQotCQkvKiogVGhlIHVuaXQuICovCi0JCXB1YmxpYyBTdHJpbmcgdW5pdDsKLQotCX0KLQotCS8qKiBUaGUgQ29uc3RhbnQgTUFSVEVfQVNTSUdOLiAqLwotCXByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBNQVJURV9BU1NJR04gPSAiTUFSVEU6Ok1BUlRFX0ZvdW5kYXRpb25zOjpBbGxvYzo6QXNzaWduIjsKLQkKLQkvKiogVGhlIENvbnN0YW50IE1BUlRFX05GUENPTlNUUkFJTlQuICovCi0JcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIE1BUlRFX05GUENPTlNUUkFJTlQgPSAiTUFSVEU6Ok1BUlRFX0ZvdW5kYXRpb25zOjpORlBzOjpOZnBDb25zdHJhaW50IjsKLQotCS8qKiBUaGUgQ29uc3RhbnQgQ09NUE9ORU5UX1RPX1BBUlRJVElPTi4gKi8KLQlwdWJsaWMgc3RhdGljIGZpbmFsIGludCBDT01QT05FTlRfVE9fUEFSVElUSU9OID0gMDsKLQkKLQkvKiogVGhlIENvbnN0YW50IFBBUlRJVElPTl9UT19DT1JFLiAqLwotCXB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFBBUlRJVElPTl9UT19DT1JFID0gMTsKLQkKLQkvKiogVGhlIENvbnN0YW50IENPTVBPTkVOVF9UT19DT1JFLiAqLwotCXB1YmxpYyBzdGF0aWMgZmluYWwgaW50IENPTVBPTkVOVF9UT19DT1JFID0gMjsKLQkKLQkvKiogVGhlIENvbnN0YW50IFRBU0tfVE9fQ09SRS4gKi8KLQlwdWJsaWMgc3RhdGljIGZpbmFsIGludCBUQVNLX1RPX0NPUkUgPSAzOwotCi0JLyoqCi0JICogR2V0cyB0aGUgY2hlc3MuCi0JICoKLQkgKiBAcGFyYW0gdW1sTW9kZWwgdGhlIHVtbCBtb2RlbAotCSAqIEByZXR1cm4gdGhlIGNoZXNzCi0JICovCi0JcHVibGljIHN0YXRpYyBDSEVTUyBnZXRDSEVTUyhNb2RlbCB1bWxNb2RlbCkgewotCQlyZXR1cm4gVU1MVXRpbHMuZ2V0U3RlcmVvdHlwZUFwcGxpY2F0aW9uKHVtbE1vZGVsLCBDSEVTUy5jbGFzcyk7Ci0JfQotCi0JLyoqCi0JICogR2V0cyB0aGUgY29tbWFuZCBzdGFjay4KLQkgKgotCSAqIEBwYXJhbSB1bWxNb2RlbCB0aGUgdW1sIG1vZGVsCi0JICogQHJldHVybiB0aGUgY29tbWFuZCBzdGFjawotCSAqLwotCXB1YmxpYyBzdGF0aWMgQ29tbWFuZFN0YWNrIGdldENvbW1hbmRTdGFjayhNb2RlbCB1bWxNb2RlbCkgewotCQlUcmFuc2FjdGlvbmFsRWRpdGluZ0RvbWFpbiBlZGl0aW5nRG9tYWluID0gVHJhbnNhY3Rpb25VdGlsLmdldEVkaXRpbmdEb21haW4odW1sTW9kZWwpOwotCQlyZXR1cm4gZWRpdGluZ0RvbWFpbi5nZXRDb21tYW5kU3RhY2soKTsKLQl9Ci0KLQkvKioKLQkgKiByZXR1cm5zIHRoZSBjb21wb25lbnQgd2hpY2ggb3ducyB0aGUgYXNzaWducyBmcm9tIGNvbXBvbmVudHMgdG8gcGFydGl0aW9ucy4KLQkgKgotCSAqIEBwYXJhbSB1bWxNb2RlbCB0aGUgdW1sIG1vZGVsCi0JICogQHJldHVybiB0aGUgcGFydGl0aW9ucyBjb21wb25lbnQKLQkgKiBAdGhyb3dzIE1vZGVsRXJyb3IgdGhlIG1vZGVsIGVycm9yCi0JICogQGRlcHJlY2F0ZWQgUGFydGl0aW9uc0NvbXBvbmVudCBzdGVyZW90eXBlIGlzIGRlcHJlY2F0ZWQKLQkgKi8KLQlwdWJsaWMgc3RhdGljIENvbXBvbmVudCBnZXRQYXJ0aXRpb25zQ29tcG9uZW50KE1vZGVsIHVtbE1vZGVsKSB0aHJvd3MgTW9kZWxFcnJvciB7Ci0JCS8vIGFzc3VtcHRpb246IGFzc2lnbnMgYXJlIHN0b3JlZCBpbiB0aGUgcm9vdCBTVyBzeXN0ZW0gaS5lLiB0aGUgb25lCi0JCS8vIHN0ZXJlb3R5cGVkIHdpdGggQ0hHYVJlc291cmNlUGxhdGZvcm0KLQotCQlDSEVTUyBjaGVzcyA9IGdldENIRVNTKHVtbE1vZGVsKTsKLQkJUGFja2FnZSBjb21wb25lbnRWaWV3UCA9IGNoZXNzLmdldENvbXBvbmVudFZpZXcoKS5nZXRCYXNlX1BhY2thZ2UoKTsKLQotCQlmb3IgKEVsZW1lbnQgZWwgOiBjb21wb25lbnRWaWV3UC5hbGxPd25lZEVsZW1lbnRzKCkpIHsKLQkJCWlmIChlbCBpbnN0YW5jZW9mIENvbXBvbmVudCkgewotCQkJCUNvbXBvbmVudCBjID0gKENvbXBvbmVudCkgZWw7Ci0JCQkJLy8gTEIgMjAxNTA3MDcgTmV4dCBsaW5lIHRvIGJlIHJldmlld2VkIGJhc2VkIG9uIGNvbnNpZGVyYXRpb25zIGFib3V0Ci0JCQkJLy8gcGFydGl0aW9ucycgY29tcG9uZW50Ci0JCQkJYm9vbGVhbiBiID0gYy5nZXROYW1lKCkuZXF1YWxzSWdub3JlQ2FzZSgiUGFydGl0aW9ucyIpOwotCQkJCWIgPSBiIHx8IFVNTFV0aWxzLmdldFN0ZXJlb3R5cGVBcHBsaWNhdGlvbihlbCwgRnVuY3Rpb25hbFBhcnRpdGlvbnMuY2xhc3MpICE9IG51bGw7Ci0JCQkJaWYgKGIpCi0JCQkJCXJldHVybiBjOwotCQkJfQotCQl9Ci0KLQkJdGhyb3cgbmV3IE1vZGVsRXJyb3IoIlBhcnRpdGlvbnMgY29tcG9uZW50IG5vdCBmb3VuZC4iKTsKLQl9Ci0KLQkKLQkvKioKLQkgKiBHaXZlbiBhIFBhcnRpdGlvbiByZXR1cm5zIHRoZSBsaXN0IG9mIENvbXBvbmVudHMgdGhhdCBhcmUgYXNzaWduZWQgdG8gaXQuCi0JICoKLQkgKiBAcGFyYW0gcGFydGl0aW9uIHRoZSBwYXJ0aXRpb24KLQkgKiBAcGFyYW0gYXNzaWdubWVudHMgdGhlIGFzc2lnbm1lbnRzCi0JICogQHJldHVybiB0aGUgY29tcG9uZW50cyBhc3NpZ25lZCAyIHBhcnRpdGlvbgotCSAqLwotCXB1YmxpYyBzdGF0aWMgTGlua2VkSGFzaFNldDxPYmplY3Q+IGdldENvbXBvbmVudHNBc3NpZ25lZDJQYXJ0aXRpb24oSW5zdGFuY2VTcGVjaWZpY2F0aW9uIHBhcnRpdGlvbiwgRUxpc3Q8QXNzaWduPiBhc3NpZ25tZW50cykgewotCQlMaW5rZWRIYXNoU2V0PE9iamVjdD4gcmVzdWx0ID0gbmV3IExpbmtlZEhhc2hTZXQ8T2JqZWN0PigpOwotCi0JCWZvciAoQXNzaWduIHRoZUFzc2lnbm1lbnQgOiBhc3NpZ25tZW50cykgewotCQkJaWYgKHRoZUFzc2lnbm1lbnQgIT0gbnVsbCkgewotCQkJCXRyeSB7Ci0JCQkJCWlmICh0aGVBc3NpZ25tZW50LmdldFRvKCkuY29udGFpbnMoKE9iamVjdCkgcGFydGl0aW9uKSAmJiAoZWxlbWVudElzQ29tcG9uZW50SW5zdGFuY2UodGhlQXNzaWdubWVudC5nZXRGcm9tKCkuZ2V0KDApKSkpIHsKLQkJCQkJCXJlc3VsdC5hZGQodGhlQXNzaWdubWVudC5nZXRGcm9tKCkuZ2V0KDApKTsKLQkJCQkJfQotCQkJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7Ci0JCQkJCS8vIGRvIG5vdGhpbmcKLQkJCQl9Ci0JCQl9Ci0JCX0KLQkJcmV0dXJuIHJlc3VsdDsKLQl9Ci0KLQkvKioKLQkgKiBEZWxldGVzIGFsbCB0aGUgYXNzb2NpYXRpb25zIG9mIHRoZSBnaXZlbiB0eXBlLgotCSAqCi0JICogQHBhcmFtIHBhcmVudCB0aGUgcGFyZW50Ci0JICogQHBhcmFtIGFzc29jaWF0aW9uVHlwZSAoUEFSVElUSU9OX1RPX0NPUkUgfCBDT01QT05FTlRfVE9fQ09SRSB8IFRBU0tfVE9fQ09SRSB8IENPTVBPTkVOVF9UT19QQVJUSVRJT04KLQkgKi8KLQlwdWJsaWMgc3RhdGljIHZvaWQgZGVsZXRlQXNzb2NpYXRpb25zKENvbXBvbmVudCBwYXJlbnQsIGludCBhc3NvY2lhdGlvblR5cGUpIHsKLQkJZm9yIChPYmplY3QgZWwgOiBwYXJlbnQuZ2V0T3duZWRDb21tZW50cygpLnRvQXJyYXkoKSkgewotCQkJaWYgKGVsIGluc3RhbmNlb2YgQ29tbWVudCkgewotCQkJCUNvbW1lbnQgYXNzaWduQ29tbWVudCA9IChDb21tZW50KSBlbDsKLQotCQkJCUFzc2lnbiBhc3NpZ24gPSBVTUxVdGlscy5nZXRTdGVyZW90eXBlQXBwbGljYXRpb24oYXNzaWduQ29tbWVudCwgQXNzaWduLmNsYXNzKTsKLQkJCQkvLyBPbmx5IGRlbGV0ZSBvbmUga2luZCBvZiBhc3NvY2lhdGlvbnMKLQkJCQl0cnkgewotCQkJCQlpZiAoKGFzc2lnbiAhPSBudWxsICYmIGFzc29jaWF0aW9uVHlwZSA9PSBQQVJUSVRJT05fVE9fQ09SRSAmJiAoZWxlbWVudElzUGFydGl0aW9uSW5zdGFuY2UoYXNzaWduLmdldEZyb20oKS5nZXQoMCkpKSkKLQkJCQkJCQl8fCAoYXNzaWduICE9IG51bGwgJiYgYXNzb2NpYXRpb25UeXBlID09IENPTVBPTkVOVF9UT19DT1JFICYmIChlbGVtZW50SXNDb21wb25lbnRJbnN0YW5jZShhc3NpZ24uZ2V0RnJvbSgpLmdldCgwKSkpICYmIChlbGVtZW50SXNQcm9jZXNzb3JJbnN0YW5jZShhc3NpZ24uZ2V0VG8oKS5nZXQoMCkpKSkKLQkJCQkJCQl8fCAoYXNzaWduICE9IG51bGwgJiYgYXNzb2NpYXRpb25UeXBlID09IFRBU0tfVE9fQ09SRSAmJiAoZWxlbWVudElzU2xvdEluc3RhbmNlKGFzc2lnbi5nZXRGcm9tKCkuZ2V0KDApKSkgJiYgKGVsZW1lbnRJc1Byb2Nlc3Nvckluc3RhbmNlKGFzc2lnbi5nZXRUbygpLmdldCgwKSkpKQotCQkJCQkJCXx8IChhc3NpZ24gIT0gbnVsbCAmJiBhc3NvY2lhdGlvblR5cGUgPT0gQ09NUE9ORU5UX1RPX1BBUlRJVElPTiAmJiAoZWxlbWVudElzQ29tcG9uZW50SW5zdGFuY2UoYXNzaWduLmdldEZyb20oKS5nZXQoMCkpKSAmJiAoZWxlbWVudElzUGFydGl0aW9uSW5zdGFuY2UoYXNzaWduLmdldFRvKCkuZ2V0KDApKSkpKSB7Ci0JCQkJCQlpZiAoYXNzaWduICE9IG51bGwgJiYgYXNzaWduLmdldEltcGxpZWRDb25zdHJhaW50KCkuc2l6ZSgpID4gMCkgewotCQkJCQkJCWZvciAoT2JqZWN0IGMgOiBhc3NpZ24uZ2V0SW1wbGllZENvbnN0cmFpbnQoKS50b0FycmF5KCkpIHsKLQkJCQkJCQkJaWYgKGMgaW5zdGFuY2VvZiBOZnBDb25zdHJhaW50KSB7Ci0JCQkJCQkJCQlOZnBDb25zdHJhaW50IG4gPSAoTmZwQ29uc3RyYWludCkgYzsKLQkJCQkJCQkJCW4uZ2V0QmFzZV9Db25zdHJhaW50KCkuZGVzdHJveSgpOwotCQkJCQkJCQl9Ci0JCQkJCQkJfQotCQkJCQkJfQotCQkJCQkJYXNzaWduQ29tbWVudC5kZXN0cm95KCk7Ci0JCQkJCX0KLQkJCQl9IGNhdGNoIChFeGNlcHRpb24gZSkgewotCQkJCQkvLyAyMDE2MDIyNSBBbHdheXMgZGVsZXRlIGFzc2lnbm1lbnRzIHdoZXJlIG9uZSBlbmQgaXMgbnVsbCEKLQkJCQkJYXNzaWduQ29tbWVudC5kZXN0cm95KCk7Ci0JCQkJfQotCQkJfQotCQl9Ci0KLQkJLy8gZm9yIChPYmplY3QgZWwgOiBwYXJlbnQuZ2V0T3duZWRSdWxlcygpLnRvQXJyYXkoKSkgewotCQkvLyBpZiAoZWwgaW5zdGFuY2VvZiBDb25zdHJhaW50KSB7Ci0JCS8vIENvbnN0cmFpbnQgYXNzaWduQ29tbWVudCA9IChDb25zdHJhaW50KSBlbDsKLQkJLy8gYXNzaWduQ29tbWVudC5kZXN0cm95KCk7Ci0JCS8vIH0KLQkJLy8gfQotCX0KLQotCS8qKgotCSAqIFJldHVybnMgdGhlIENIVGFzayBhc3NvY2lhdGVkIHRvIHRoZSBnaXZlbiBlbGVtZW50IChpZiB0aGlzIGlzIGEgQ0hSVFBvcnRTbG90KS4KLQkgKgotCSAqIEBwYXJhbSBlbGVtZW50IHRoZSBlbGVtZW50Ci0JICogQHJldHVybiB0YXNrIHRoYXQgY29ycmVzcG9uZHMgdG8gdGhlIGlucHV0IHNsb3QsIGlmIGFueQotCSAqLwotCXB1YmxpYyBzdGF0aWMgQ0hUYXNrIGdldFRhc2tGcm9tU2xvdChFbGVtZW50IGVsZW1lbnQpIHsKLQkJaWYgKCEoZWxlbWVudCBpbnN0YW5jZW9mIFNsb3QpKSB7Ci0JCQlyZXR1cm4gbnVsbDsKLQkJfQotCQlTbG90IHNsb3QgPSAoU2xvdCkgZWxlbWVudDsKLQkJQ0hSdFBvcnRTbG90IGNoU2xvdCA9IFVNTFV0aWxzLmdldFN0ZXJlb3R5cGVBcHBsaWNhdGlvbihzbG90LCBDSFJ0UG9ydFNsb3QuY2xhc3MpOwotCQlpZiAoY2hTbG90ID09IG51bGwpIHsKLQkJCXJldHVybiBudWxsOwotCQl9Ci0JCUVMaXN0PENIUnRTcGVjaWZpY2F0aW9uPiBjaFNwZWNzID0gY2hTbG90LmdldENIX1J0U3BlY2lmaWNhdGlvbigpOwotCQlmb3IgKENIUnRTcGVjaWZpY2F0aW9uIGNoUnRTcGVjaWZpY2F0aW9uIDogY2hTcGVjcykgewotCQkJU3RyaW5nIG9jY0tpbmQgPSBjaFJ0U3BlY2lmaWNhdGlvbi5nZXRPY2NLaW5kKCk7Ci0JCQlpZiAob2NjS2luZCAhPSBudWxsICYmIGlzT2NjS2luZFNwb3JhZGljT3JQZXJpb2RpYyhvY2NLaW5kKSkgewotCQkJCXJldHVybiBuZXcgQ0hUYXNrKGNoU2xvdCwgY2hSdFNwZWNpZmljYXRpb24pOwotCQkJfQotCQl9Ci0JCXJldHVybiBudWxsOwotCX0KLQotCS8qKgotCSAqIFJldHVybnMgYWxsIHRoZSBDSFRhc2tzIGFzc29jaWF0ZWQgdG8gdGhlIGdpdmVuIGVsZW1lbnQgKGlmIHRoaXMgaXMgYSBDSFJUUG9ydFNsb3QpLgotCSAqCi0JICogQHBhcmFtIGVsZW1lbnQgdGhlIGVsZW1lbnQKLQkgKiBAcmV0dXJuIHRhc2sgdGhhdCBjb3JyZXNwb25kcyB0byB0aGUgaW5wdXQgc2xvdCwgaWYgYW55Ci0JICovCi0JcHJpdmF0ZSBzdGF0aWMgRUxpc3Q8Q0hUYXNrPiBnZXRBbGxUYXNrc0Zyb21TbG90KEVsZW1lbnQgZWxlbWVudCkgewotCQlFTGlzdDxDSFRhc2s+IGNoVGFza0xpc3QgPSBuZXcgQmFzaWNFTGlzdDxDSFRhc2s+KCk7Ci0JCWlmICghKGVsZW1lbnQgaW5zdGFuY2VvZiBTbG90KSkgewotCQkJcmV0dXJuIGNoVGFza0xpc3Q7Ci0JCX0KLQkJU2xvdCBzbG90ID0gKFNsb3QpIGVsZW1lbnQ7Ci0JCUNIUnRQb3J0U2xvdCBjaFNsb3QgPSBVTUxVdGlscy5nZXRTdGVyZW90eXBlQXBwbGljYXRpb24oc2xvdCwgQ0hSdFBvcnRTbG90LmNsYXNzKTsKLQkJaWYgKGNoU2xvdCA9PSBudWxsKSB7Ci0JCQlyZXR1cm4gY2hUYXNrTGlzdDsKLQkJfQotCQlFTGlzdDxDSFJ0U3BlY2lmaWNhdGlvbj4gY2hTcGVjcyA9IGNoU2xvdC5nZXRDSF9SdFNwZWNpZmljYXRpb24oKTsKLQkJZm9yIChDSFJ0U3BlY2lmaWNhdGlvbiBjaFJ0U3BlY2lmaWNhdGlvbiA6IGNoU3BlY3MpIHsKLQkJCVN0cmluZyBvY2NLaW5kID0gY2hSdFNwZWNpZmljYXRpb24uZ2V0T2NjS2luZCgpOwotCQkJaWYgKG9jY0tpbmQgIT0gbnVsbCAmJiBpc09jY0tpbmRTcG9yYWRpY09yUGVyaW9kaWMob2NjS2luZCkpIHsKLQkJCQljaFRhc2tMaXN0LmFkZChuZXcgQ0hUYXNrKGNoU2xvdCwgY2hSdFNwZWNpZmljYXRpb24pKTsKLQkJCQkvLyByZXR1cm4gbmV3IENIVGFzayhjaFNsb3QsIGNoUnRTcGVjaWZpY2F0aW9uKTsKLQkJCX0KLQkJfQotCQlyZXR1cm4gY2hUYXNrTGlzdDsKLQl9Ci0KLQkvKioKLQkgKiBFbGVtZW50IGlzIHNsb3QgaW5zdGFuY2UuCi0JICoKLQkgKiBAcGFyYW0gZWxlbWVudCB0aGUgZWxlbWVudAotCSAqIEByZXR1cm4gdHJ1ZSwgaWYgc3VjY2Vzc2Z1bAotCSAqLwotCXB1YmxpYyBzdGF0aWMgYm9vbGVhbiBlbGVtZW50SXNTbG90SW5zdGFuY2UoRWxlbWVudCBlbGVtZW50KSB7Ci0JCXJldHVybiBlbGVtZW50IGluc3RhbmNlb2YgU2xvdDsKLQl9Ci0KLQkvKioKLQkgKiBHaXZlbiBhIGNvbXBvbmVudCwgY3JlYXRlIGFsbCB0aGUgQ29tcG9uZW50IHRvIFBhcnRpdGlvbiBBc3NpZ25tZW50cy4KLQkgKgotCSAqIEBwYXJhbSBwYXJlbnQgdGhlIHBhcmVudAotCSAqIEBwYXJhbSByZXN1bHQgdGhlIHJlc3VsdAotCSAqLwotCXB1YmxpYyBzdGF0aWMgdm9pZCBidWlsZENvbXBvbmVudDJQYXJ0aXRpb25Bc3NpZ25tZW50KENvbXBvbmVudCBwYXJlbnQsIE1hcDxJbnN0YW5jZVNwZWNpZmljYXRpb24sIExpbmtlZEhhc2hTZXQ8T2JqZWN0Pj4gcmVzdWx0KSB7Ci0JCVN5c3RlbS5vdXQucHJpbnRsbihwYXJlbnQuZ2V0UXVhbGlmaWVkTmFtZSgpKTsKLQotCQlmb3IgKEluc3RhbmNlU3BlY2lmaWNhdGlvbiBwYXJ0aXRpb25JbnN0IDogcmVzdWx0LmtleVNldCgpKSB7Ci0JCQlTeXN0ZW0ub3V0LnByaW50bG4ocGFydGl0aW9uSW5zdC5nZXROYW1lKCkpOwotCQkJZm9yIChPYmplY3QgbyA6IHJlc3VsdC5nZXQocGFydGl0aW9uSW5zdCkpIHsKLQkJCQlpZiAobyBpbnN0YW5jZW9mIEluc3RhbmNlU3BlY2lmaWNhdGlvbikgewotCQkJCQlJbnN0YW5jZVNwZWNpZmljYXRpb24gY29tcG9uZW50SW5zdCA9IChJbnN0YW5jZVNwZWNpZmljYXRpb24pIG87Ci0JCQkJCVN5c3RlbS5vdXQucHJpbnRsbihjb21wb25lbnRJbnN0LmdldE5hbWUoKSk7Ci0KLQkJCQkJQ29tbWVudCBjID0gcGFyZW50LmNyZWF0ZU93bmVkQ29tbWVudCgpOwotCQkJCQlVTUxVdGlscy5hcHBseVN0ZXJlb3R5cGUoYywgTUFSVEVfQVNTSUdOKTsKLQkJCQkJQXNzaWduIGFzc2lnbiA9IFVNTFV0aWxzLmdldFN0ZXJlb3R5cGVBcHBsaWNhdGlvbihjLCBBc3NpZ24uY2xhc3MpOwotCQkJCQlhc3NpZ24uZ2V0RnJvbSgpLmFkZChjb21wb25lbnRJbnN0KTsKLQkJCQkJYXNzaWduLmdldFRvKCkuYWRkKHBhcnRpdGlvbkluc3QpOwotCQkJCX0KLQkJCX0KLQkJfQotCX0KLQotCS8qKgotCSAqIEJ1aWxkcyB0aGUgY29yZSBuYW1lLgotCSAqCi0JICogQHBhcmFtIGNvcmVOdW1iZXIgdGhlIGNvcmUgbnVtYmVyCi0JICogQHJldHVybiB0aGUgc3RyaW5nCi0JICovCi0JcHVibGljIHN0YXRpYyBTdHJpbmcgYnVpbGRDb3JlTmFtZShpbnQgY29yZU51bWJlcikgewotCQkvKiBjb3JlTnVtYmVyIHN0YXJ0cyBmcm9tIDAgKi8KLQkJcmV0dXJuICJjb3JlIiArIGNvcmVOdW1iZXI7Ci0JfQotCi0JLyoqCi0JICogQ3JlYXRlIGFsbCB0aGUgUGFydGl0aW9uIHRvIENvcmUgQXNzaWdubWVudHMuCi0JICoKLQkgKiBAcGFyYW0gcGFyZW50IHRoZSBwYXJlbnQKLQkgKiBAcGFyYW0gcmVzdWx0IHRoZSByZXN1bHQKLQkgKi8KLQlwdWJsaWMgc3RhdGljIHZvaWQgYnVpbGRQYXJ0aXRpb24yQ29yZUFzc2lnbm1lbnRzKENvbXBvbmVudCBwYXJlbnQsIE1hcDxDSENvcmUsIExpbmtlZEhhc2hTZXQ8T2JqZWN0Pj4gcmVzdWx0KSB7Ci0JCWZvciAoQ0hDb3JlIGNvcmUgOiByZXN1bHQua2V5U2V0KCkpIHsKLQkJCWZvciAoT2JqZWN0IG8gOiByZXN1bHQuZ2V0KGNvcmUpKSB7Ci0JCQkJaWYgKG8gaW5zdGFuY2VvZiBJbnN0YW5jZVNwZWNpZmljYXRpb24pIHsKLQkJCQkJSW5zdGFuY2VTcGVjaWZpY2F0aW9uIHBhcnRpdGlvbkluc3QgPSAoSW5zdGFuY2VTcGVjaWZpY2F0aW9uKSBvOwotCQkJCQlDb21tZW50IGMgPSBwYXJlbnQuY3JlYXRlT3duZWRDb21tZW50KCk7Ci0JCQkJCVVNTFV0aWxzLmFwcGx5U3RlcmVvdHlwZShjLCBNQVJURV9BU1NJR04pOwotCQkJCQlBc3NpZ24gYXNzaWduID0gVU1MVXRpbHMuZ2V0U3RlcmVvdHlwZUFwcGxpY2F0aW9uKGMsIEFzc2lnbi5jbGFzcyk7Ci0JCQkJCWFzc2lnbi5nZXRGcm9tKCkuYWRkKHBhcnRpdGlvbkluc3QpOwotCQkJCQlhc3NpZ24uZ2V0VG8oKS5hZGQoY29yZS5nZXRQcm9jZXNzb3JJbnN0YW5jZSgpKTsKLQotCQkJCQlDb25zdHJhaW50IG4gPSBwYXJlbnQuY3JlYXRlT3duZWRSdWxlKGNvcmUuZ2V0TmFtZSgpKTsKLQkJCQkJVU1MVXRpbHMuYXBwbHlTdGVyZW90eXBlKG4sIE1BUlRFX05GUENPTlNUUkFJTlQpOwotCQkJCQlOZnBDb25zdHJhaW50IHJ1bGUgPSBVTUxVdGlscy5nZXRTdGVyZW90eXBlQXBwbGljYXRpb24obiwgTmZwQ29uc3RyYWludC5jbGFzcyk7Ci0KLQkJCQkJVmFsdWVTcGVjaWZpY2F0aW9uIHZhbHVlU3BlYyA9IG4uY3JlYXRlU3BlY2lmaWNhdGlvbigiY29yZSIsIG51bGwsIFVNTFBhY2thZ2UuTGl0ZXJhbHMuTElURVJBTF9TVFJJTkcpOwotCQkJCQlMaXRlcmFsU3RyaW5nIHZhbHVlID0gKExpdGVyYWxTdHJpbmcpIHZhbHVlU3BlYzsKLQkJCQkJdmFsdWUuc2V0VmFsdWUoY29yZS5nZXROYW1lKCkpOwotCQkJCQlhc3NpZ24uZ2V0SW1wbGllZENvbnN0cmFpbnQoKS5hZGQocnVsZSk7Ci0JCQkJfQotCQkJfQotCQl9Ci0JfQotCi0JLyoqCi0JICogUmV0dXJucyB0aGUgZmlyc3QgQ0hHYVJlc291cmNlUGxhdGZvcm0gdGhhdCBpcyBmb3VuZCBpbnNpZGUgdGhlIGdpdmVuIHBhY2thZ2UuCi0JICoKLQkgKiBAcGFyYW0gY21wdiB0aGUgY21wdgotCSAqIEByZXR1cm4gdGhlIG9uZSByZXNvdXJjZSBwbGF0Zm9ybSBwYWNrYWdlCi0JICovCi0JcHVibGljIHN0YXRpYyBQYWNrYWdlIGdldE9uZVJlc291cmNlUGxhdGZvcm1QYWNrYWdlKFBhY2thZ2UgY21wdikgewotCQkvKiBicmVhdGgtZmlyc3Qgc2VhcmNoICovCi0JCWZpbmFsIExpbmtlZExpc3Q8UGFja2FnZT4gYnJlYWR0aEZpcnN0TGlzdCA9IG5ldyBMaW5rZWRMaXN0PFBhY2thZ2U+KCk7Ci0JCWJyZWFkdGhGaXJzdExpc3QuYWRkRmlyc3QoY21wdik7Ci0JCXdoaWxlICghYnJlYWR0aEZpcnN0TGlzdC5pc0VtcHR5KCkpIHsKLQkJCWZpbmFsIFBhY2thZ2UgY2FuZGlkYXRlID0gYnJlYWR0aEZpcnN0TGlzdC5wb2xsKCk7Ci0KLQkJCUNIR2FSZXNvdXJjZVBsYXRmb3JtIGEgPSBVTUxVdGlscy5nZXRTdGVyZW90eXBlQXBwbGljYXRpb24oY2FuZGlkYXRlLCBDSEdhUmVzb3VyY2VQbGF0Zm9ybS5jbGFzcyk7Ci0KLQkJCWlmIChhICE9IG51bGwpCi0JCQkJcmV0dXJuIGNhbmRpZGF0ZTsKLQotCQkJZm9yIChmaW5hbCBQYWNrYWdlIHAgOiBjYW5kaWRhdGUuZ2V0TmVzdGVkUGFja2FnZXMoKSkgewotCQkJCWJyZWFkdGhGaXJzdExpc3QuYWRkTGFzdChwKTsKLQkJCX0KLQkJfQotCQlyZXR1cm4gbnVsbDsKLQl9Ci0KLQkvKioKLQkgKiBHZXRzIHRoZSByZXNvdXJjZSBwbGF0Zm9ybSBwYWNrYWdlLgotCSAqCi0JICogQHBhcmFtIGNtcHYgdGhlIGNtcHYKLQkgKiBAcmV0dXJuIHRoZSByZXNvdXJjZSBwbGF0Zm9ybSBwYWNrYWdlCi0JICogQGRlcHJlY2F0ZWQgVGhpcyBtZXRob2QgcmV0dXJucyBvbmx5IG9uZSBwbGF0Zm9ybSBwYWNrYWdlLiBJbiB0aGUgbmV3ZXIKLQkgKiAgICAgICAgICAgICB2ZXJzaW9uIG9mIENIRVNTIHRoZXJlIGNhbiBiZSBtdWx0aXBsZSBwbGF0Zm9ybSBwYWNrYWdlcy4KLQkgKiAgICAgICAgICAgICBSZXBsYWNlIHdpdGggZ2V0UmVzb3VyY2VQbGF0Zm9ybVBhY2thZ2VzCi0JICovCi0JQERlcHJlY2F0ZWQKLQlwdWJsaWMgc3RhdGljIFBhY2thZ2UgZ2V0UmVzb3VyY2VQbGF0Zm9ybVBhY2thZ2UoUGFja2FnZSBjbXB2KSB7Ci0JCS8qIGJyZWF0aC1maXJzdCBzZWFyY2ggKi8KLQkJZmluYWwgTGlua2VkTGlzdDxQYWNrYWdlPiBicmVhZHRoRmlyc3RMaXN0ID0gbmV3IExpbmtlZExpc3Q8UGFja2FnZT4oKTsKLQkJYnJlYWR0aEZpcnN0TGlzdC5hZGRGaXJzdChjbXB2KTsKLQkJd2hpbGUgKCFicmVhZHRoRmlyc3RMaXN0LmlzRW1wdHkoKSkgewotCQkJZmluYWwgUGFja2FnZSBjYW5kaWRhdGUgPSBicmVhZHRoRmlyc3RMaXN0LnBvbGwoKTsKLQotCQkJQ0hHYVJlc291cmNlUGxhdGZvcm0gYSA9IFVNTFV0aWxzLmdldFN0ZXJlb3R5cGVBcHBsaWNhdGlvbihjYW5kaWRhdGUsIENIR2FSZXNvdXJjZVBsYXRmb3JtLmNsYXNzKTsKLQotCQkJaWYgKGEgIT0gbnVsbCkKLQkJCQlyZXR1cm4gY2FuZGlkYXRlOwotCi0JCQlmb3IgKGZpbmFsIFBhY2thZ2UgcCA6IGNhbmRpZGF0ZS5nZXROZXN0ZWRQYWNrYWdlcygpKSB7Ci0JCQkJYnJlYWR0aEZpcnN0TGlzdC5hZGRMYXN0KHApOwotCQkJfQotCQl9Ci0JCXJldHVybiBudWxsOwotCX0KLQotCS8qKgotCSAqIFJldHVybnMgdGhlIGxpc3Qgb2YgQ0hHYVJlc291cmNlUGxhdGZvcm1zIGZvdW5kIGluc2lkZSB0aGUgdmlldyB3aXRoIHRoZSBnaXZlbiBuYW1lIGluIHRoZSBnaXZlbiBtb2RlbC4KLQkgKgotCSAqIEBwYXJhbSB1bWxNb2RlbCB0aGUgdW1sIG1vZGVsCi0JICogQHBhcmFtIHZpZXdOYW1lIHRoZSB2aWV3IG5hbWUKLQkgKiBAcmV0dXJuIHRoZSByZXNvdXJjZSBwbGF0Zm9ybSBwYWNrYWdlcwotCSAqIEB0aHJvd3MgTW9kZWxFcnJvciB0aGUgbW9kZWwgZXJyb3IKLQkgKi8KLQlwdWJsaWMgc3RhdGljIEVMaXN0PFBhY2thZ2U+IGdldFJlc291cmNlUGxhdGZvcm1QYWNrYWdlcyhNb2RlbCB1bWxNb2RlbCwgU3RyaW5nIHZpZXdOYW1lKSB0aHJvd3MgTW9kZWxFcnJvciB7Ci0KLQkJUGFja2FnZSBwYWNrID0gQ0hFU1NQcm9maWxlTWFuYWdlci5nZXRWaWV3QnlTdGVyZW90eXBlKChNb2RlbCkgdW1sTW9kZWwsIHZpZXdOYW1lKTsKLQotCQlpZiAocGFjayA9PSBudWxsKQotCQkJdGhyb3cgbmV3IE1vZGVsRXJyb3Iodmlld05hbWUgKyAiIG5vdCBmb3VuZC4iKTsKLQkJLy8gUGFja2FnZSBjbXB2Ci0JCS8qIGJyZWF0aC1maXJzdCBzZWFyY2ggKi8KLQotCQlFTGlzdDxQYWNrYWdlPiByZXN1bHQgPSBuZXcgQmFzaWNFTGlzdDxQYWNrYWdlPigpOwotCi0JCWZpbmFsIExpbmtlZExpc3Q8UGFja2FnZT4gYnJlYWR0aEZpcnN0TGlzdCA9IG5ldyBMaW5rZWRMaXN0PFBhY2thZ2U+KCk7Ci0JCWJyZWFkdGhGaXJzdExpc3QuYWRkRmlyc3QocGFjayk7Ci0JCXdoaWxlICghYnJlYWR0aEZpcnN0TGlzdC5pc0VtcHR5KCkpIHsKLQkJCWZpbmFsIFBhY2thZ2UgY2FuZGlkYXRlID0gYnJlYWR0aEZpcnN0TGlzdC5wb2xsKCk7Ci0KLQkJCUNIR2FSZXNvdXJjZVBsYXRmb3JtIGEgPSBVTUxVdGlscy5nZXRTdGVyZW90eXBlQXBwbGljYXRpb24oY2FuZGlkYXRlLCBDSEdhUmVzb3VyY2VQbGF0Zm9ybS5jbGFzcyk7Ci0KLQkJCWlmIChhICE9IG51bGwpCi0JCQkJcmVzdWx0LmFkZChjYW5kaWRhdGUpOwotCQkJLy8gcmV0dXJuIGNhbmRpZGF0ZTsKLQotCQkJZm9yIChmaW5hbCBQYWNrYWdlIHAgOiBjYW5kaWRhdGUuZ2V0TmVzdGVkUGFja2FnZXMoKSkgewotCQkJCWJyZWFkdGhGaXJzdExpc3QuYWRkTGFzdChwKTsKLQkJCX0KLQkJfQotCQlyZXR1cm4gcmVzdWx0OwotCQkvLyByZXR1cm4gbnVsbDsKLQl9Ci0KLQkvKioKLQkgKiBSZXR1cm5zIHRoZSBsaXN0IG9mIENIR2FSZXNvdXJjZVBsYXRmb3JtcyBmb3VuZCBpbnNpZGUgdGhlIGdpdmVuIFBhY2thZ2UuCi0JICoKLQkgKiBAcGFyYW0gY21wdiBpcyB0aGUgZ2l2ZW4gcGFja2FnZQotCSAqIEByZXR1cm4gdGhlIHJlc291cmNlIHBsYXRmb3JtIHBhY2thZ2VzCi0JICovCi0JcHVibGljIHN0YXRpYyBMaXN0PFBhY2thZ2U+IGdldFJlc291cmNlUGxhdGZvcm1QYWNrYWdlcyhQYWNrYWdlIGNtcHYpIHsKLQkJTGlzdDxQYWNrYWdlPiBjYW5kaWRhdGVzID0gbmV3IEFycmF5TGlzdDxQYWNrYWdlPigpOwotCQkvKiBicmVhdGgtZmlyc3Qgc2VhcmNoICovCi0JCWZpbmFsIExpbmtlZExpc3Q8UGFja2FnZT4gYnJlYWR0aEZpcnN0TGlzdCA9IG5ldyBMaW5rZWRMaXN0PFBhY2thZ2U+KCk7Ci0JCWJyZWFkdGhGaXJzdExpc3QuYWRkRmlyc3QoY21wdik7Ci0JCXdoaWxlICghYnJlYWR0aEZpcnN0TGlzdC5pc0VtcHR5KCkpIHsKLQkJCWZpbmFsIFBhY2thZ2UgY2FuZGlkYXRlID0gYnJlYWR0aEZpcnN0TGlzdC5wb2xsKCk7Ci0KLQkJCUNIR2FSZXNvdXJjZVBsYXRmb3JtIGEgPSBVTUxVdGlscy5nZXRTdGVyZW90eXBlQXBwbGljYXRpb24oY2FuZGlkYXRlLCBDSEdhUmVzb3VyY2VQbGF0Zm9ybS5jbGFzcyk7Ci0KLQkJCWlmIChhICE9IG51bGwpCi0JCQkJY2FuZGlkYXRlcy5hZGQoY2FuZGlkYXRlKTsKLQotCQkJZm9yIChmaW5hbCBQYWNrYWdlIHAgOiBjYW5kaWRhdGUuZ2V0TmVzdGVkUGFja2FnZXMoKSkgewotCQkJCWJyZWFkdGhGaXJzdExpc3QuYWRkTGFzdChwKTsKLQkJCX0KLQkJfQotCQlyZXR1cm4gY2FuZGlkYXRlczsKLQl9Ci0KLQkvKioKLQkgKiBSZXR1cm5zIGEgQ29tcG9uZW50IHRoYXQgaXMgc3RlcmVvdHlwZWQgYXMgQ0hHYVJlc291cmNlUGxhdGZvcm0gaW5zaWRlIHRoZSB2aWV3IHdpdGggdGhlIGdpdmVuIG5hbWUgCi0JICogaW4gdGhlIGdpdmVuIG1vZGVsLgotCSAqCi0JICogQHBhcmFtIHVtbE1vZGVsIHRoZSB1bWwgbW9kZWwKLQkgKiBAcGFyYW0gdmlld05hbWUgdGhlIHZpZXcgbmFtZQotCSAqIEByZXR1cm4gdGhlIHJlc291cmNlIHBsYXRmb3JtIGNvbXBvbmVudAotCSAqIEB0aHJvd3MgTW9kZWxFcnJvciB0aGUgbW9kZWwgZXJyb3IKLQkgKi8KLQlwdWJsaWMgc3RhdGljIENvbXBvbmVudCBnZXRSZXNvdXJjZVBsYXRmb3JtQ29tcG9uZW50KE1vZGVsIHVtbE1vZGVsLCBTdHJpbmcgdmlld05hbWUpIHRocm93cyBNb2RlbEVycm9yIHsKLQkJUGFja2FnZSBwYXJlbnQgPSBDSEVTU1Byb2ZpbGVNYW5hZ2VyLmdldFZpZXdCeVN0ZXJlb3R5cGUodW1sTW9kZWwsIHZpZXdOYW1lKTsKLQotCQlpZiAocGFyZW50ID09IG51bGwpCi0JCQl0aHJvdyBuZXcgTW9kZWxFcnJvcih2aWV3TmFtZSArICIgbm90IGZvdW5kLiIpOwotCi0JCS8qIGJyZWF0aC1maXJzdCBzZWFyY2ggKi8KLQkJZmluYWwgTGlua2VkTGlzdDxFbGVtZW50PiBicmVhZHRoRmlyc3RMaXN0ID0gbmV3IExpbmtlZExpc3Q8RWxlbWVudD4oKTsKLQotCQlicmVhZHRoRmlyc3RMaXN0LmFkZEFsbChwYXJlbnQuZ2V0T3duZWRFbGVtZW50cygpKTsKLQkJd2hpbGUgKCFicmVhZHRoRmlyc3RMaXN0LmlzRW1wdHkoKSkgewotCQkJZmluYWwgRWxlbWVudCB0ID0gYnJlYWR0aEZpcnN0TGlzdC5wb2xsKCk7Ci0KLQkJCWlmICh0IGluc3RhbmNlb2YgQ29tcG9uZW50KSB7Ci0JCQkJQ29tcG9uZW50IGNhbmRpZGF0ZSA9IChDb21wb25lbnQpIHQ7Ci0JCQkJQ0hHYVJlc291cmNlUGxhdGZvcm0gYSA9IFVNTFV0aWxzLmdldFN0ZXJlb3R5cGVBcHBsaWNhdGlvbihjYW5kaWRhdGUsIENIR2FSZXNvdXJjZVBsYXRmb3JtLmNsYXNzKTsKLQkJCQlpZiAoYSAhPSBudWxsKQotCQkJCQlyZXR1cm4gY2FuZGlkYXRlOwotCQkJfQotCQkJZm9yIChmaW5hbCBFbGVtZW50IGUgOiB0LmdldE93bmVkRWxlbWVudHMoKSkgewotCQkJCWJyZWFkdGhGaXJzdExpc3QuYWRkTGFzdChlKTsKLQkJCX0KLQkJfQotCi0JCXRocm93IG5ldyBNb2RlbEVycm9yKCJDSEdhUmVzb3VyY2VQbGF0Zm9ybSBub3QgZm91bmQgaW4gIiArIHZpZXdOYW1lICsgIiB2aWV3LiIpOwotCX0KLQotCS8qKgotCSAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gSW5zdGFuY2VTcGVjaWZpY2F0aW9uIGlzIGEgZnVuY3Rpb25hbCBQYXJ0aXRpb24sIGZhbHNlIG90aGVyd2lzZS4KLQkgKgotCSAqIEBwYXJhbSBlIHRoZSBlCi0JICogQHJldHVybiB0cnVlLCBpZiBpcyBwYXJ0aXRpb24gaW5zdGFuY2UKLQkgKi8KLQlwdWJsaWMgc3RhdGljIGJvb2xlYW4gaXNQYXJ0aXRpb25JbnN0YW5jZShJbnN0YW5jZVNwZWNpZmljYXRpb24gZSkgewotCQlmb3IgKENsYXNzaWZpZXIgYyA6IGUuZ2V0Q2xhc3NpZmllcnMoKSkgewotCi0JCQlpZiAoVU1MVXRpbHMuZ2V0U3RlcmVvdHlwZUFwcGxpY2F0aW9uKGMsIEZ1bmN0aW9uYWxQYXJ0aXRpb24uY2xhc3MpICE9IG51bGwpCi0JCQkJcmV0dXJuIHRydWU7Ci0KLQkJfQotCQlyZXR1cm4gZmFsc2U7Ci0JfQotCi0JLyoqCi0JICogUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZlbiBJbnN0YW5jZVNwZWNpZmljYXRpb24gaXMgYSBDb21wb25lbnRJbXBsZW1lbnRhdGlvbiwgZmFsc2Ugb3RoZXJ3aXNlLgotCSAqCi0JICogQHBhcmFtIGUgdGhlIGUKLQkgKiBAcmV0dXJuIHRydWUsIGlmIGlzIGNvbXBvbmVudCBpbnN0YW5jZQotCSAqLwotCXB1YmxpYyBzdGF0aWMgYm9vbGVhbiBpc0NvbXBvbmVudEluc3RhbmNlKEluc3RhbmNlU3BlY2lmaWNhdGlvbiBlKSB7Ci0JCWZvciAoQ2xhc3NpZmllciBjIDogZS5nZXRDbGFzc2lmaWVycygpKSB7Ci0JCQlpZiAoVU1MVXRpbHMuZ2V0U3RlcmVvdHlwZUFwcGxpY2F0aW9uKGMsIENvbXBvbmVudEltcGxlbWVudGF0aW9uLmNsYXNzKSAhPSBudWxsKQotCQkJCXJldHVybiB0cnVlOwotCQl9Ci0JCXJldHVybiBmYWxzZTsKLQl9Ci0KLQkvKioKLQkgKiBDaGVja3MgaWYgaXMgZ3VhcmRlZC4KLQkgKgotCSAqIEBwYXJhbSBzcGVjIHRoZSBzcGVjCi0JICogQHJldHVybiB0cnVlLCBpZiBpcyBndWFyZGVkCi0JICovCi0JcHVibGljIHN0YXRpYyBib29sZWFuIGlzR3VhcmRlZChDSFJ0U3BlY2lmaWNhdGlvbiBzcGVjKSB7Ci0JCXJldHVybiBzcGVjLmdldFByb3RlY3Rpb24oKS5nZXROYW1lKCkuZXF1YWxzKENhbGxDb25jdXJyZW5jeUtpbmQuR1VBUkRFRC5nZXROYW1lKCkpOwotCX0KLQotCS8qKgotCSAqIENoZWNrcyBpZiBpcyBvY2Mga2luZCBzcG9yYWRpYyBvciBwZXJpb2RpYy4KLQkgKgotCSAqIEBwYXJhbSBvY2NLaW5kIHRoZSBvY2Mga2luZAotCSAqIEByZXR1cm4gdHJ1ZSwgaWYgaXMgb2NjIGtpbmQgc3BvcmFkaWMgb3IgcGVyaW9kaWMKLQkgKi8KLQlwdWJsaWMgc3RhdGljIGJvb2xlYW4gaXNPY2NLaW5kU3BvcmFkaWNPclBlcmlvZGljKFN0cmluZyBvY2NLaW5kKSB7Ci0JCWlmIChvY2NLaW5kID09IG51bGwpCi0JCQlyZXR1cm4gZmFsc2U7Ci0JCXJldHVybiBpc09jY0tpbmRTcG9yYWRpYyhvY2NLaW5kKSB8fCBpc09jY0tpbmRQZXJpb2RpYyhvY2NLaW5kKTsKLQl9Ci0KLQkvKioKLQkgKiBDaGVja3MgaWYgaXMgb2NjIGtpbmQgc3BvcmFkaWMuCi0JICoKLQkgKiBAcGFyYW0gb2NjS2luZCB0aGUgb2NjIGtpbmQKLQkgKiBAcmV0dXJuIHRydWUsIGlmIGlzIG9jYyBraW5kIHNwb3JhZGljCi0JICovCi0JcHVibGljIHN0YXRpYyBib29sZWFuIGlzT2NjS2luZFNwb3JhZGljKFN0cmluZyBvY2NLaW5kKSB7Ci0JCVN0cmluZyB0ID0gb2NjS2luZC50b0xvd2VyQ2FzZSgpOwotCQlyZXR1cm4gdC5tYXRjaGVzKCIuKnNwb3JhZGljLioiKTsKLQl9Ci0KLQkvKioKLQkgKiBDaGVja3MgaWYgaXMgb2NjIGtpbmQgcGVyaW9kaWMuCi0JICoKLQkgKiBAcGFyYW0gb2NjS2luZCB0aGUgb2NjIGtpbmQKLQkgKiBAcmV0dXJuIHRydWUsIGlmIGlzIG9jYyBraW5kIHBlcmlvZGljCi0JICovCi0JcHVibGljIHN0YXRpYyBib29sZWFuIGlzT2NjS2luZFBlcmlvZGljKFN0cmluZyBvY2NLaW5kKSB7Ci0JCVN0cmluZyB0ID0gb2NjS2luZC50b0xvd2VyQ2FzZSgpOwotCQlyZXR1cm4gdC5tYXRjaGVzKCIuKnBlcmlvZGljLioiKTsKLQl9Ci0KLQkvKioKLQkgKiBSZXR1cm5zIHRoZSBPY2NLaW5kSW5mbyB0aGF0IGNvcnJlc3BvbW5kcyB0byB0aGUgaW5wdXQgc3RyaW5nLgotCSAqCi0JICogQHBhcmFtIG9jY0tpbmQgdGhlIFN0cmluZyB3aXRoIHRoZSBvY2N1cnJlbmN5IGtpbmQgaW5mb3JtYXRpb24KLQkgKiBAcmV0dXJuIE9jY0tpbmRJbmZvCi0JICovCi0JcHVibGljIHN0YXRpYyBPY2NLaW5kSW5mbyBnZXRPY2NLaW5kSW5mbyhTdHJpbmcgb2NjS2luZCkgewotCQlTdHJpbmdQYXJzZXIgc3AgPSBuZXcgU3RyaW5nUGFyc2VyKCk7Ci0JCU9jY0tpbmRJbmZvIGluZm8gPSBuZXcgT2NjS2luZEluZm8oKTsKLQkJaWYgKGlzT2NjS2luZFNwb3JhZGljKG9jY0tpbmQpKSB7Ci0JCQlpbmZvLnZhbHVlID0gc3AuZ2V0VmFsdWVQYXR0ZXJuKG9jY0tpbmQsICJtaW5JbnRlcmFycml2YWwiKTsKLQkJCWluZm8udHlwZSA9ICJzcG9yYWRpYyI7Ci0JCQlpbmZvLnVuaXQgPSBzcC5nZXRVbml0UGF0dGVybihvY2NLaW5kLCAibWluSW50ZXJhcnJpdmFsIik7Ci0JCX0gZWxzZSBpZiAob2NjS2luZC50b0xvd2VyQ2FzZSgpLm1hdGNoZXMoIi4qcGVyaW9kaWMuKiIpKSB7Ci0JCQlpbmZvLnZhbHVlID0gc3AuZ2V0VmFsdWVQYXR0ZXJuKG9jY0tpbmQsICJwZXJpb2QiKTsKLQkJCWluZm8udW5pdCA9IHNwLmdldFVuaXRQYXR0ZXJuKG9jY0tpbmQsICJwZXJpb2QiKTsKLQkJCWluZm8udHlwZSA9ICJwZXJpb2RpYyI7Ci0JCX0gZWxzZSB7Ci0JCQlyZXR1cm4gbnVsbDsKLQkJfQotCi0JCXJldHVybiBpbmZvOwotCX0KLQotCS8qKgotCSAqIFJldHVybnMgYSBtYXAgd2l0aCB0aGUgQ29tcG9uZW50IHRvIFBhcnRpdGlvbiBhc3NpZ25tZW50cy4KLQkgKgotCSAqIEBwYXJhbSB1bWxNb2RlbCB0aGUgdW1sIG1vZGVsCi0JICogQHBhcmFtIHBhcmVudCB0aGUgcGFyZW50Ci0JICogQHJldHVybiB0aGUgbWFwCi0JICogQHRocm93cyBNb2RlbEVycm9yIHRoZSBtb2RlbCBlcnJvcgotCSAqLwotCXB1YmxpYyBzdGF0aWMgTWFwPEluc3RhbmNlU3BlY2lmaWNhdGlvbiwgU2V0PENIUnRTcGVjaWZpY2F0aW9uPj4gYnVpbGRQYXJ0aXRpb25Db21wb25lbnRNYXAoTW9kZWwgdW1sTW9kZWwsIFBhY2thZ2UgcGFyZW50KSB0aHJvd3MgTW9kZWxFcnJvciB7Ci0JCU1hcDxJbnN0YW5jZVNwZWNpZmljYXRpb24sIFNldDxDSFJ0U3BlY2lmaWNhdGlvbj4+IG1hcCA9IG5ldyBIYXNoTWFwPEluc3RhbmNlU3BlY2lmaWNhdGlvbiwgU2V0PENIUnRTcGVjaWZpY2F0aW9uPj4oKTsKLQotCQlFTGlzdDxBc3NpZ24+IGFzc2lnbm1lbnRMaXN0ID0gVU1MVXRpbHMuZ2V0Q29tcG9uZW50MlBhcnRpdGlvbkFzc2lnbm1lbnRzKHVtbE1vZGVsLCBDSEVTU1Byb2ZpbGVNYW5hZ2VyLkNPTVBPTkVOVF9WSUVXKTsKLQkJaWYgKCFhc3NpZ25tZW50TGlzdC5pc0VtcHR5KCkpIHsKLQkJCWZvciAoQXNzaWduIGFzc2lnbiA6IGFzc2lnbm1lbnRMaXN0KSB7Ci0JCQkJaWYgKGFzc2lnbiA9PSBudWxsKQotCQkJCQljb250aW51ZTsKLQkJCQlmb3IgKEVsZW1lbnQgaSA6IGFzc2lnbi5nZXRGcm9tKCkpIHsKLQkJCQkJaWYgKGkgaW5zdGFuY2VvZiBJbnN0YW5jZVNwZWNpZmljYXRpb24pIHsKLQkJCQkJCUluc3RhbmNlU3BlY2lmaWNhdGlvbiBpaSA9IChJbnN0YW5jZVNwZWNpZmljYXRpb24pIGk7Ci0JCQkJCQlwcm9jZXNzQ29tcG9uZW50SW5zdGFuY2UobWFwLCBhc3NpZ24sIGlpKTsKLQkJCQkJfQotCQkJCX0KLQotCQkJfQotCQl9Ci0KLQkJcmV0dXJuIG1hcDsKLQl9Ci0KLQkvKioKLQkgKiBSZXR1cm5zIGEgbWFwIHdpdGggdGhlIFBhcnRpdGlvbiB0byBDb3JlIGFzc2lnbm1lbnRzLgotCSAqCi0JICogQHBhcmFtIHVtbE1vZGVsIHRoZSB1bWwgbW9kZWwKLQkgKiBAcmV0dXJuIHRoZSBtYXAKLQkgKiBAdGhyb3dzIE1vZGVsRXJyb3IgdGhlIG1vZGVsIGVycm9yCi0JICovCi0JcHVibGljIHN0YXRpYyBNYXA8U3RyaW5nLCBTZXQ8SW5zdGFuY2VTcGVjaWZpY2F0aW9uPj4gYnVpbGRQYXJ0aXRpb25Db3JlTWFwKE1vZGVsIHVtbE1vZGVsKSB0aHJvd3MgTW9kZWxFcnJvciB7Ci0JCU1hcDxTdHJpbmcsIFNldDxJbnN0YW5jZVNwZWNpZmljYXRpb24+PiBtYXAgPSBuZXcgSGFzaE1hcDxTdHJpbmcsIFNldDxJbnN0YW5jZVNwZWNpZmljYXRpb24+PigpOwotCi0JCUVMaXN0PEFzc2lnbj4gYXNzaWdubWVudExpc3QgPSBVTUxVdGlscy5nZXRQYXJ0aXRpb24yQ29yZUFzc2lnbm1lbnRzKHVtbE1vZGVsLCBDSEVTU1Byb2ZpbGVNYW5hZ2VyLkRFUExPWU1FTlRfVklFVyk7Ci0JCWlmICghYXNzaWdubWVudExpc3QuaXNFbXB0eSgpKSB7Ci0JCQlmb3IgKEFzc2lnbiBhc3NpZ24gOiBhc3NpZ25tZW50TGlzdCkgewotCi0JCQkJZm9yIChFbGVtZW50IGkgOiBhc3NpZ24uZ2V0RnJvbSgpKSB7Ci0JCQkJCWlmIChpIGluc3RhbmNlb2YgSW5zdGFuY2VTcGVjaWZpY2F0aW9uKSB7Ci0JCQkJCQlwcm9jZXNzUGFydGl0aW9uSW5zdGFuY2UobWFwLCBhc3NpZ24pOwotCQkJCQl9Ci0JCQkJfQotCi0JCQl9Ci0JCX0KLQkJcmV0dXJuIG1hcDsKLQl9Ci0KLQkvLyBwdWJsaWMgc3RhdGljIE1hcDxJbnN0YW5jZVNwZWNpZmljYXRpb24sIFNldDxDSFJ0U3BlY2lmaWNhdGlvbj4+Ci0JLy8gYnVpbGRQYXJ0aXRpb25Db21wb25lbnRNYXAoQ29tcG9uZW50IHBhcmVudCkgewotCS8vIE1hcDxJbnN0YW5jZVNwZWNpZmljYXRpb24sIFNldDxDSFJ0U3BlY2lmaWNhdGlvbj4+IG1hcCA9IG5ldwotCS8vIEhhc2hNYXA8SW5zdGFuY2VTcGVjaWZpY2F0aW9uLCBTZXQ8Q0hSdFNwZWNpZmljYXRpb24+PigpOwotCS8vIGZvciAoQ29tbWVudCBlbCA6IHBhcmVudC5nZXRPd25lZENvbW1lbnRzKCkpIHsKLQkvLwotCS8vIENvbW1lbnQgYXNzaWduQ29tbWVudCA9IChDb21tZW50KSBlbDsKLQkvLyBBc3NpZ24gYXNzaWduID0gVU1MVXRpbHMuZ2V0U3RlcmVvdHlwZUFwcGxpY2F0aW9uKGFzc2lnbkNvbW1lbnQsCi0JLy8gQXNzaWduLmNsYXNzKTsKLQkvLyBpZiAoYXNzaWduID09IG51bGwpCi0JLy8gY29udGludWU7Ci0JLy8gZm9yIChFbGVtZW50IGkgOiBhc3NpZ24uZ2V0RnJvbSgpKSB7Ci0JLy8gaWYgKGkgaW5zdGFuY2VvZiBJbnN0YW5jZVNwZWNpZmljYXRpb24pIHsKLQkvLyBJbnN0YW5jZVNwZWNpZmljYXRpb24gaWkgPSAoSW5zdGFuY2VTcGVjaWZpY2F0aW9uKSBpOwotCS8vIHByb2Nlc3NDb21wb25lbnRJbnN0YW5jZShtYXAsIGFzc2lnbiwgaWkpOwotCS8vIH0KLQkvLyB9Ci0JLy8KLQkvLyB9Ci0JLy8gcmV0dXJuIG1hcDsKLQkvLyB9Ci0KLQkvKioKLQkgKiBQcm9jZXNzIHBhcnRpdGlvbiBpbnN0YW5jZS4KLQkgKgotCSAqIEBwYXJhbSBtYXAgdGhlIG1hcAotCSAqIEBwYXJhbSBhc3NpZ24gdGhlIGFzc2lnbgotCSAqLwotCXByaXZhdGUgc3RhdGljIHZvaWQgcHJvY2Vzc1BhcnRpdGlvbkluc3RhbmNlKE1hcDxTdHJpbmcsIFNldDxJbnN0YW5jZVNwZWNpZmljYXRpb24+PiBtYXAsIEFzc2lnbiBhc3NpZ24pIHsKLQotCQl0cnkgewotCQkJaWYgKGFzc2lnbi5nZXRJbXBsaWVkQ29uc3RyYWludCgpLnNpemUoKSA+IDApIHsKLQkJCQlmb3IgKE9iamVjdCBjIDogYXNzaWduLmdldEltcGxpZWRDb25zdHJhaW50KCkudG9BcnJheSgpKSB7Ci0JCQkJCWlmIChjIGluc3RhbmNlb2YgTmZwQ29uc3RyYWludCkgewotCQkJCQkJVmFsdWVTcGVjaWZpY2F0aW9uIHggPSAoKE5mcENvbnN0cmFpbnQpIGMpLmdldEJhc2VfQ29uc3RyYWludCgpLmdldFNwZWNpZmljYXRpb24oKTsKLQkJCQkJCWlmICh4IGluc3RhbmNlb2YgTGl0ZXJhbFN0cmluZykgewotCQkJCQkJCUxpdGVyYWxTdHJpbmcgcyA9IChMaXRlcmFsU3RyaW5nKSB4OwotCQkJCQkJCVN0cmluZyBjb3JlTmFtZSA9ICgoTmFtZWRFbGVtZW50KSBhc3NpZ24uZ2V0VG8oKS5nZXQoMCkpLmdldE5hbWUoKSArIHMuZ2V0VmFsdWUoKTsKLQkJCQkJCQlJbnN0YW5jZVNwZWNpZmljYXRpb24gcGFydCA9IChJbnN0YW5jZVNwZWNpZmljYXRpb24pIGFzc2lnbi5nZXRGcm9tKCkuZ2V0KDApOwotCi0JCQkJCQkJU2V0PEluc3RhbmNlU3BlY2lmaWNhdGlvbj4gdmFsdWUgPSBtYXAuZ2V0KGNvcmVOYW1lKTsKLQkJCQkJCQlpZiAodmFsdWUgPT0gbnVsbCkKLQkJCQkJCQkJdmFsdWUgPSBuZXcgSGFzaFNldDxJbnN0YW5jZVNwZWNpZmljYXRpb24+KCk7Ci0JCQkJCQkJdmFsdWUuYWRkKHBhcnQpOwotCQkJCQkJCW1hcC5wdXQoY29yZU5hbWUsIHZhbHVlKTsKLQkJCQkJCX0KLQkJCQkJfQotCi0JCQkJfQotCQkJfQotCQl9IGNhdGNoIChFeGNlcHRpb24gZSkgewotCQkJLy8gVE9ETyBBdXRvLWdlbmVyYXRlZCBjYXRjaCBibG9jawotCQkJZS5wcmludFN0YWNrVHJhY2UoKTsKLQkJfQotCi0JfQotCi0JLyoqCi0JICogUHJvY2VzcyBjb21wb25lbnQgaW5zdGFuY2UuCi0JICoKLQkgKiBAcGFyYW0gbWFwIHRoZSBtYXAKLQkgKiBAcGFyYW0gYXNzaWduIHRoZSBhc3NpZ24KLQkgKiBAcGFyYW0gaW5zdGFuY2VTcGVjIHRoZSBpbnN0YW5jZSBzcGVjCi0JICovCi0JcHJpdmF0ZSBzdGF0aWMgdm9pZCBwcm9jZXNzQ29tcG9uZW50SW5zdGFuY2UoTWFwPEluc3RhbmNlU3BlY2lmaWNhdGlvbiwgU2V0PENIUnRTcGVjaWZpY2F0aW9uPj4gbWFwLCBBc3NpZ24gYXNzaWduLCBJbnN0YW5jZVNwZWNpZmljYXRpb24gaW5zdGFuY2VTcGVjKSB7Ci0KLQkJZm9yIChFbGVtZW50IGVsZW1lbnQgOiBpbnN0YW5jZVNwZWMuZ2V0T3duZWRFbGVtZW50cygpKSB7Ci0JCQlpZiAoZWxlbWVudCBpbnN0YW5jZW9mIFNsb3QpIHsKLQkJCQlTbG90IHNsb3QgPSAoU2xvdCkgZWxlbWVudDsKLQkJCQlDSFJ0UG9ydFNsb3QgY2hTbG90ID0gVU1MVXRpbHMuZ2V0U3RlcmVvdHlwZUFwcGxpY2F0aW9uKHNsb3QsIENIUnRQb3J0U2xvdC5jbGFzcyk7Ci0JCQkJaWYgKGNoU2xvdCAhPSBudWxsKSB7Ci0JCQkJCUVMaXN0PENIUnRTcGVjaWZpY2F0aW9uPiBjaFNwZWNzID0gY2hTbG90LmdldENIX1J0U3BlY2lmaWNhdGlvbigpOwotCi0JCQkJCWFkZFRvTWFwKG1hcCwgYXNzaWduLmdldFRvKCksIGNoU3BlY3MpOwotCQkJCX0KLQkJCX0KLQkJfQotCX0KLQotCS8qKgotCSAqIEFkZHMgdGhlIHRvIG1hcC4KLQkgKgotCSAqIEBwYXJhbSBtYXAgdGhlIG1hcAotCSAqIEBwYXJhbSB0byB0aGUgdG8KLQkgKiBAcGFyYW0gY2hTcGVjcyB0aGUgY2ggc3BlY3MKLQkgKi8KLQkvKiBhZGQgb25seSBwZXJpb2RpYyBvciBzcG9yYWRpYyBjb21wb25lbnRzICovCi0JcHJpdmF0ZSBzdGF0aWMgdm9pZCBhZGRUb01hcChNYXA8SW5zdGFuY2VTcGVjaWZpY2F0aW9uLCBTZXQ8Q0hSdFNwZWNpZmljYXRpb24+PiBtYXAsIEVMaXN0PEVsZW1lbnQ+IHRvLCBFTGlzdDxDSFJ0U3BlY2lmaWNhdGlvbj4gY2hTcGVjcykgewotCQlmb3IgKEVsZW1lbnQgcGFydGl0aW9uIDogdG8pIHsKLQkJCWlmIChwYXJ0aXRpb24gaW5zdGFuY2VvZiBJbnN0YW5jZVNwZWNpZmljYXRpb24pIHsKLQkJCQlJbnN0YW5jZVNwZWNpZmljYXRpb24gcCA9IChJbnN0YW5jZVNwZWNpZmljYXRpb24pIHBhcnRpdGlvbjsKLQkJCQlmb3IgKENIUnRTcGVjaWZpY2F0aW9uIGNoUnRTcGVjaWZpY2F0aW9uIDogY2hTcGVjcykgewotCQkJCQlTdHJpbmcgb2NjS2luZCA9IGNoUnRTcGVjaWZpY2F0aW9uLmdldE9jY0tpbmQoKTsKLQkJCQkJaWYgKG9jY0tpbmQgIT0gbnVsbCkgewotCQkJCQkJaWYgKGlzT2NjS2luZFNwb3JhZGljT3JQZXJpb2RpYyhvY2NLaW5kKSkgewotCQkJCQkJCWFkZFRvTWFwKG1hcCwgcCwgY2hSdFNwZWNpZmljYXRpb24pOwotCQkJCQkJfQotCQkJCQl9Ci0JCQkJfQotCQkJfQotCQl9Ci0JfQotCi0JCi0JLyoqCi0JICogQWRkcyB0aGUgdG8gbWFwLgotCSAqCi0JICogQHBhcmFtIG1hcCB0aGUgbWFwCi0JICogQHBhcmFtIHAgdGhlIHAKLQkgKiBAcGFyYW0gY2hSdFNwZWNpZmljYXRpb24gdGhlIGNoIHJ0IHNwZWNpZmljYXRpb24KLQkgKi8KLQlwcml2YXRlIHN0YXRpYyB2b2lkIGFkZFRvTWFwKE1hcDxJbnN0YW5jZVNwZWNpZmljYXRpb24sIFNldDxDSFJ0U3BlY2lmaWNhdGlvbj4+IG1hcCwgSW5zdGFuY2VTcGVjaWZpY2F0aW9uIHAsIENIUnRTcGVjaWZpY2F0aW9uIGNoUnRTcGVjaWZpY2F0aW9uKSB7Ci0JCVNldDxDSFJ0U3BlY2lmaWNhdGlvbj4gdmFsdWUgPSBtYXAuZ2V0KHApOwotCQlpZiAodmFsdWUgPT0gbnVsbCkKLQkJCXZhbHVlID0gbmV3IEhhc2hTZXQ8Q0hSdFNwZWNpZmljYXRpb24+KCk7Ci0JCXZhbHVlLmFkZChjaFJ0U3BlY2lmaWNhdGlvbik7Ci0JCW1hcC5wdXQocCwgdmFsdWUpOwotCi0JfQotCi0JCi0JLyoqCi0JICogUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZlbiBJbnN0YW5jZVNwZWNpZmljYXRpb24gaXMgc3Rlcm90eXBlZCBhcyBDSF9Id1Byb2Nlc3Nvci4KLQkgKgotCSAqIEBwYXJhbSBlIHRoZSBlCi0JICogQHJldHVybiB0cnVlLCBpZiBpcyBwcm9jZXNzb3IgaW5zdGFuY2UKLQkgKi8KLQlwdWJsaWMgc3RhdGljIGJvb2xlYW4gaXNQcm9jZXNzb3JJbnN0YW5jZShJbnN0YW5jZVNwZWNpZmljYXRpb24gZSkgewotCQlmb3IgKENsYXNzaWZpZXIgYyA6IGUuZ2V0Q2xhc3NpZmllcnMoKSkgewotCQkJaWYgKFVNTFV0aWxzLmdldFN0ZXJlb3R5cGVBcHBsaWNhdGlvbihjLCBDSF9Id1Byb2Nlc3Nvci5jbGFzcykgIT0gbnVsbCkKLQkJCQlyZXR1cm4gdHJ1ZTsKLQkJfQotCQlyZXR1cm4gZmFsc2U7Ci0JfQotCi0JLyoqCi0JICogY2hlY2sgaWYgYW4gaW5zdGFuY2Ugc3BlY2lmaWNhdGlvbiBpcyBhbiBpbnN0YW5jZSBvZiBhIE1BUlRFIERldmljZS4KLQkgKgotCSAqIEBwYXJhbSBpbnN0U3BlYyB0aGUgaW5zdCBzcGVjCi0JICogQHJldHVybiB0cnVlIGlmIHRoZSBpbnB1dCBpcyBhbiBpbnN0YW5jZSBvZiBhIE1BUlRFIERldmljZSwgZmFsc2UKLQkgKiAgICAgICAgIG90aGVyd2lzZS4KLQkgKi8KLQlwdWJsaWMgc3RhdGljIGJvb2xlYW4gaXNEZXZpY2VJbnN0YW5jZShJbnN0YW5jZVNwZWNpZmljYXRpb24gaW5zdFNwZWMpIHsKLQkJQ2xhc3NpZmllciBjbGFzc2lmaWVyID0gaW5zdFNwZWMuZ2V0Q2xhc3NpZmllcnMoKS5nZXQoMCk7Ci0JCUVMaXN0PFN0ZXJlb3R5cGU+IHN0ZXJlb3R5cGVMaXN0ID0gY2xhc3NpZmllci5nZXRBcHBsaWVkU3RlcmVvdHlwZXMoKTsKLQkJZm9yIChTdGVyZW90eXBlIHRoZVN0ZXJlbyA6IHN0ZXJlb3R5cGVMaXN0KSB7Ci0JCQlFT2JqZWN0IG9iamVjdCA9IGNsYXNzaWZpZXIuZ2V0U3RlcmVvdHlwZUFwcGxpY2F0aW9uKHRoZVN0ZXJlbyk7Ci0JCQlpZiAob2JqZWN0IGluc3RhbmNlb2YgSHdEZXZpY2UpIHsKLQkJCQlyZXR1cm4gdHJ1ZTsKLQkJCX0KLQkJfQotCi0JCXJldHVybiBmYWxzZTsKLQl9Ci0KLQkvKioKLQkgKiBHZXRzIHRoZSBvbmUgcHJvY2Vzc29yLgotCSAqCi0JICogQHBhcmFtIHVtbE1vZGVsIHRoZSB1bWwgbW9kZWwKLQkgKiBAcmV0dXJuIHRoZSBvbmUgcHJvY2Vzc29yCi0JICovCi0JcHVibGljIHN0YXRpYyBDSF9Id1Byb2Nlc3NvciBnZXRPbmVQcm9jZXNzb3IoTW9kZWwgdW1sTW9kZWwpIHsKLQkJUGFja2FnZSBkZXB2ID0gQ0hFU1NQcm9maWxlTWFuYWdlci5nZXRWaWV3QnlTdGVyZW90eXBlKChNb2RlbCkgdW1sTW9kZWwsIENIRVNTUHJvZmlsZU1hbmFnZXIuREVQTE9ZTUVOVF9WSUVXKTsKLQkJZGVwdiA9IFF1ZXJ5VXRpbHMuZ2V0T25lUmVzb3VyY2VQbGF0Zm9ybVBhY2thZ2UoZGVwdik7Ci0JCWlmIChkZXB2ICE9IG51bGwpIHsKLQkJCUVMaXN0PEVsZW1lbnQ+IGFsbCA9IGRlcHYuYWxsT3duZWRFbGVtZW50cygpOwotCQkJZm9yIChFbGVtZW50IGVsZW1lbnQgOiBhbGwpIHsKLQkJCQlpZiAoZWxlbWVudCBpbnN0YW5jZW9mIEluc3RhbmNlU3BlY2lmaWNhdGlvbikgewotCQkJCQlJbnN0YW5jZVNwZWNpZmljYXRpb24gZSA9IChJbnN0YW5jZVNwZWNpZmljYXRpb24pIGVsZW1lbnQ7Ci0JCQkJCWlmIChlLmdldFF1YWxpZmllZE5hbWUoKSAhPSBudWxsICYmIFF1ZXJ5VXRpbHMuaXNQcm9jZXNzb3JJbnN0YW5jZShlKSkgewotCQkJCQkJQ0hfSHdQcm9jZXNzb3IgdCA9IFVNTFV0aWxzLmdldFN0ZXJlb3R5cGVBcHBsaWNhdGlvbihlLCBDSF9Id1Byb2Nlc3Nvci5jbGFzcyk7Ci0JCQkJCQlyZXR1cm4gdDsKLQkJCQkJfQotCQkJCX0KLQkJCX0KLQkJfQotCQlyZXR1cm4gbnVsbDsKLQl9Ci0KLQkvKioKLQkgKiBHZXRzIHRoZSBhbGwgcHJvY2Vzc29yIGluc3RhbmNlcy4KLQkgKgotCSAqIEBwYXJhbSB1bWxNb2RlbCB0aGUgdW1sIG1vZGVsCi0JICogQHJldHVybiB0aGUgYWxsIHByb2Nlc3NvciBpbnN0YW5jZXMKLQkgKiBAdGhyb3dzIE1vZGVsRXJyb3IgdGhlIG1vZGVsIGVycm9yCi0JICovCi0JcHVibGljIHN0YXRpYyBFTGlzdDxDSF9Id1Byb2Nlc3Nvcj4gZ2V0QWxsUHJvY2Vzc29ySW5zdGFuY2VzKE1vZGVsIHVtbE1vZGVsKSB0aHJvd3MgTW9kZWxFcnJvciB7Ci0JCUVMaXN0PENIX0h3UHJvY2Vzc29yPiBwcm9jZXNzb3JzID0gbmV3IEJhc2ljRUxpc3Q8Q0hfSHdQcm9jZXNzb3I+KCk7Ci0JCVBhY2thZ2UgZGVwdiA9IENIRVNTUHJvZmlsZU1hbmFnZXIuZ2V0Vmlld0J5U3RlcmVvdHlwZSgoTW9kZWwpIHVtbE1vZGVsLCBDSEVTU1Byb2ZpbGVNYW5hZ2VyLkRFUExPWU1FTlRfVklFVyk7Ci0KLQkJaWYgKGRlcHYgPT0gbnVsbCkKLQkJCXRocm93IG5ldyBNb2RlbEVycm9yKCJEZXBsb3ltZW50IHZpZXcgbm90IGZvdW5kLiIpOwotCi0JCUxpc3Q8UGFja2FnZT4gcGxhdGZvcm1QYWNrYWdlcyA9IFF1ZXJ5VXRpbHMuZ2V0UmVzb3VyY2VQbGF0Zm9ybVBhY2thZ2VzKGRlcHYpOwotCi0JCWlmIChwbGF0Zm9ybVBhY2thZ2VzLmlzRW1wdHkoKSkKLQkJCXRocm93IG5ldyBNb2RlbEVycm9yKCJDSEdhUmVzb3VyY2VQbGF0Zm9ybSBub3QgZm91bmQgaW4gRGVwbG95bWVudCB2aWV3LiIpOwotCi0JCWZvciAoUGFja2FnZSBwcCA6IHBsYXRmb3JtUGFja2FnZXMpIHsKLQkJCUVMaXN0PEVsZW1lbnQ+IGFsbCA9IHBwLmFsbE93bmVkRWxlbWVudHMoKTsKLQkJCWZvciAoRWxlbWVudCBlbGVtZW50IDogYWxsKSB7Ci0JCQkJaWYgKGVsZW1lbnQgaW5zdGFuY2VvZiBJbnN0YW5jZVNwZWNpZmljYXRpb24pIHsKLQkJCQkJSW5zdGFuY2VTcGVjaWZpY2F0aW9uIGUgPSAoSW5zdGFuY2VTcGVjaWZpY2F0aW9uKSBlbGVtZW50OwotCQkJCQlpZiAoZS5nZXRRdWFsaWZpZWROYW1lKCkgIT0gbnVsbCAmJiBRdWVyeVV0aWxzLmlzUHJvY2Vzc29ySW5zdGFuY2UoZSkpIHsKLQkJCQkJCUNIX0h3UHJvY2Vzc29yIHQgPSBVTUxVdGlscy5nZXRTdGVyZW90eXBlQXBwbGljYXRpb24oZSwgQ0hfSHdQcm9jZXNzb3IuY2xhc3MpOwotCQkJCQkJcHJvY2Vzc29ycy5hZGQodCk7Ci0JCQkJCX0KLQkJCQl9Ci0JCQl9Ci0JCX0KLQotCQlpZiAocHJvY2Vzc29ycy5zaXplKCkgPT0gMCkKLQkJCXRocm93IG5ldyBNb2RlbEVycm9yKCJQcm9jZXNzb3JzIG5vdCBmb3VuZC4iKTsKLQotCQlyZXR1cm4gcHJvY2Vzc29yczsKLQl9Ci0KLQkvKioKLQkgKiBHZXRzIHRoZSBhbGwgcHJvY2Vzc29yIGluc3RhbmNlcyBpbiBwYWNrYWdlLgotCSAqCi0JICogQHBhcmFtIHRoZVBhY2thZ2UgdGhlIHRoZSBwYWNrYWdlCi0JICogQHJldHVybiB0aGUgYWxsIHByb2Nlc3NvciBpbnN0YW5jZXMgaW4gcGFja2FnZQotCSAqIEB0aHJvd3MgTW9kZWxFcnJvciB0aGUgbW9kZWwgZXJyb3IKLQkgKi8KLQlwdWJsaWMgc3RhdGljIEVMaXN0PENIX0h3UHJvY2Vzc29yPiBnZXRBbGxQcm9jZXNzb3JJbnN0YW5jZXNJblBhY2thZ2UoUGFja2FnZSB0aGVQYWNrYWdlKSB0aHJvd3MgTW9kZWxFcnJvciB7Ci0JCUVMaXN0PENIX0h3UHJvY2Vzc29yPiBwcm9jZXNzb3JzID0gbmV3IEJhc2ljRUxpc3Q8Q0hfSHdQcm9jZXNzb3I+KCk7Ci0KLQkJRUxpc3Q8RWxlbWVudD4gYWxsID0gdGhlUGFja2FnZS5hbGxPd25lZEVsZW1lbnRzKCk7Ci0JCWZvciAoRWxlbWVudCBlbGVtZW50IDogYWxsKSB7Ci0JCQlpZiAoZWxlbWVudCBpbnN0YW5jZW9mIEluc3RhbmNlU3BlY2lmaWNhdGlvbikgewotCQkJCUluc3RhbmNlU3BlY2lmaWNhdGlvbiBlID0gKEluc3RhbmNlU3BlY2lmaWNhdGlvbikgZWxlbWVudDsKLQkJCQlpZiAoZS5nZXRRdWFsaWZpZWROYW1lKCkgIT0gbnVsbCAmJiBRdWVyeVV0aWxzLmlzUHJvY2Vzc29ySW5zdGFuY2UoZSkpIHsKLQkJCQkJQ0hfSHdQcm9jZXNzb3IgdCA9IFVNTFV0aWxzLmdldFN0ZXJlb3R5cGVBcHBsaWNhdGlvbihlLCBDSF9Id1Byb2Nlc3Nvci5jbGFzcyk7Ci0JCQkJCXByb2Nlc3NvcnMuYWRkKHQpOwotCQkJCX0KLQkJCX0KLQkJfQotCQlpZiAocHJvY2Vzc29ycy5zaXplKCkgPT0gMCkKLQkJCXRocm93IG5ldyBNb2RlbEVycm9yKCJQcm9jZXNzb3JzIG5vdCBmb3VuZC4iKTsKLQotCQlyZXR1cm4gcHJvY2Vzc29yczsKLQl9Ci0KLQkKLQkvKioKLQkgKiBGaWx0ZXIgbXVsdGkgY29yZSBwcm9jZXNzb3JzLgotCSAqCi0JICogQHBhcmFtIHByb2Nlc3NvcnMgdGhlIHByb2Nlc3NvcnMKLQkgKiBAcmV0dXJuIHRoZSBlIGxpc3QKLQkgKi8KLQlwdWJsaWMgc3RhdGljIEVMaXN0PENIX0h3UHJvY2Vzc29yPiBmaWx0ZXJNdWx0aUNvcmVQcm9jZXNzb3JzKEVMaXN0PENIX0h3UHJvY2Vzc29yPiBwcm9jZXNzb3JzKSB7Ci0JCUVMaXN0PENIX0h3UHJvY2Vzc29yPiBjYW5kaWRhdGVzID0gbmV3IEJhc2ljRUxpc3Q8Q0hfSHdQcm9jZXNzb3I+KCk7Ci0JCWZvciAoQ0hfSHdQcm9jZXNzb3IgcHJvY2Vzc29yIDogcHJvY2Vzc29ycykgewotCQkJaWYgKGdldENvcmVzKHByb2Nlc3Nvcikuc2l6ZSgpID4gMSkKLQkJCQljYW5kaWRhdGVzLmFkZChwcm9jZXNzb3IpOwotCQl9Ci0JCXJldHVybiBjYW5kaWRhdGVzOwotCi0JfQotCi0JCi0JLyoqCi0JICogR2V0cyB0aGUgY29yZXMuCi0JICoKLQkgKiBAcGFyYW0gcHJvY2Vzc29yIHRoZSBwcm9jZXNzb3IKLQkgKiBAcmV0dXJuIHRoZSBjb3JlcwotCSAqLwotCXB1YmxpYyBzdGF0aWMgRUxpc3Q8Q0hDb3JlPiBnZXRDb3JlcyhDSF9Id1Byb2Nlc3NvciBwcm9jZXNzb3IpIHsKLQkJSW5zdGFuY2VTcGVjaWZpY2F0aW9uIHByb2Nlc3NvckJhc2VJbnN0ID0gcHJvY2Vzc29yLmdldEJhc2VfSW5zdGFuY2VTcGVjaWZpY2F0aW9uKCk7Ci0JCUNvbXBvbmVudCBwcm9jZXNzb3JDb21wb25lbnQgPSAoQ29tcG9uZW50KSBwcm9jZXNzb3JCYXNlSW5zdC5nZXRDbGFzc2lmaWVycygpLmdldCgwKTsKLQotCQlTdGVyZW90eXBlIGNoSHdQcm9jZXNzb3JTdGVyZW8gPSBwcm9jZXNzb3JDb21wb25lbnQuZ2V0QXBwbGllZFN0ZXJlb3R5cGUoQ29uc3RhbnRzLkNIX0hXUFJPQ0VTU09SKTsKLQkJQ0hfSHdQcm9jZXNzb3IgY2hId1Byb2MgPSAoQ0hfSHdQcm9jZXNzb3IpIHByb2Nlc3NvckNvbXBvbmVudC5nZXRTdGVyZW90eXBlQXBwbGljYXRpb24oY2hId1Byb2Nlc3NvclN0ZXJlbyk7Ci0KLQkJU3RyaW5nIGNvcmVOdW1iZXIgPSBudWxsOwotCQljb3JlTnVtYmVyID0gY2hId1Byb2MuZ2V0TmJDb3JlcygpOwotCQlpbnQgaWNvcmVOdW1iZXIgPSAxOwotCQl0cnkgewotCQkJaWNvcmVOdW1iZXIgPSBJbnRlZ2VyLnBhcnNlSW50KGNvcmVOdW1iZXIpOwotCQl9IGNhdGNoIChFeGNlcHRpb24gZSkgewotCQkJaWNvcmVOdW1iZXIgPSAxOwotCQl9Ci0JCUVMaXN0PENIQ29yZT4gY29yZXMgPSBuZXcgQmFzaWNFTGlzdDxDSENvcmU+KCk7Ci0JCWZvciAoaW50IGkgPSAwOyBpIDwgaWNvcmVOdW1iZXI7IGkrKykgewotCQkJY29yZXMuYWRkKG5ldyBDSENvcmUocHJvY2Vzc29yLCBRdWVyeVV0aWxzLmJ1aWxkQ29yZU5hbWUoaSkpKTsKLQkJfQotCQlyZXR1cm4gY29yZXM7Ci0JfQotCi0JCi0JLyoqCi0JICogR2V0cyB0aGUgYWxsIHBhcnRpdGlvbiBpbnN0YW5jZXMuCi0JICoKLQkgKiBAcGFyYW0gdW1sTW9kZWwgdGhlIHVtbCBtb2RlbAotCSAqIEByZXR1cm4gdGhlIGFsbCBwYXJ0aXRpb24gaW5zdGFuY2VzCi0JICogQHRocm93cyBNb2RlbEVycm9yIHRoZSBtb2RlbCBlcnJvcgotCSAqLwotCXB1YmxpYyBzdGF0aWMgRUxpc3Q8SW5zdGFuY2VTcGVjaWZpY2F0aW9uPiBnZXRBbGxQYXJ0aXRpb25JbnN0YW5jZXMoTW9kZWwgdW1sTW9kZWwpIHRocm93cyBNb2RlbEVycm9yIHsKLQotCQlQYWNrYWdlIGNtcHYgPSBDSEVTU1Byb2ZpbGVNYW5hZ2VyLmdldFZpZXdCeVN0ZXJlb3R5cGUodW1sTW9kZWwsIENIRVNTUHJvZmlsZU1hbmFnZXIuQ09NUE9ORU5UX1ZJRVcpOwotCi0JCWlmIChjbXB2ID09IG51bGwpCi0JCQl0aHJvdyBuZXcgTW9kZWxFcnJvcigiQ29tcG9uZW50IHZpZXcgbm90IGZvdW5kLiIpOwotCi0JCWNtcHYgPSBRdWVyeVV0aWxzLmdldE9uZVJlc291cmNlUGxhdGZvcm1QYWNrYWdlKGNtcHYpOwotCi0JCWlmIChjbXB2ID09IG51bGwpCi0JCQl0aHJvdyBuZXcgTW9kZWxFcnJvcigiQ0hHYVJlc291cmNlUGxhdGZvcm0gbm90IGZvdW5kIGluIENvbXBvbmVudCBWaWV3LiIpOwotCi0JCUVMaXN0PEVsZW1lbnQ+IGFsbCA9IGNtcHYuYWxsT3duZWRFbGVtZW50cygpOwotCQlFTGlzdDxJbnN0YW5jZVNwZWNpZmljYXRpb24+IHBhcnRpdGlvbnMgPSBuZXcgQmFzaWNFTGlzdDxJbnN0YW5jZVNwZWNpZmljYXRpb24+KCk7Ci0JCWZvciAoRWxlbWVudCBlbGVtZW50IDogYWxsKSB7Ci0JCQlpZiAoIShlbGVtZW50IGluc3RhbmNlb2YgSW5zdGFuY2VTcGVjaWZpY2F0aW9uKSkKLQkJCQljb250aW51ZTsKLQotCQkJSW5zdGFuY2VTcGVjaWZpY2F0aW9uIGlzID0gKEluc3RhbmNlU3BlY2lmaWNhdGlvbikgZWxlbWVudDsKLQotCQkJaWYgKCEoaXMuZ2V0UXVhbGlmaWVkTmFtZSgpICE9IG51bGwgJiYgUXVlcnlVdGlscy5pc1BhcnRpdGlvbkluc3RhbmNlKGlzKSkpCi0JCQkJY29udGludWU7Ci0JCQlwYXJ0aXRpb25zLmFkZChpcyk7Ci0JCX0KLQotCQlpZiAocGFydGl0aW9ucy5zaXplKCkgPT0gMCkKLQkJCXRocm93IG5ldyBNb2RlbEVycm9yKCJQYXJ0aXRpb24gSW5zdGFuY2VzIG5vdCBmb3VuZC4iKTsKLQotCQlyZXR1cm4gcGFydGl0aW9uczsKLQl9Ci0KLQkKLQkvKioKLQkgKiBHZXRzIHRoZSBhbGwgY29tcG9uZW50IGluc3RhbmNlcy4KLQkgKgotCSAqIEBwYXJhbSB1bWxNb2RlbCB0aGUgdW1sIG1vZGVsCi0JICogQHJldHVybiB0aGUgYWxsIGNvbXBvbmVudCBpbnN0YW5jZXMKLQkgKiBAdGhyb3dzIE1vZGVsRXJyb3IgdGhlIG1vZGVsIGVycm9yCi0JICovCi0JcHVibGljIHN0YXRpYyBFTGlzdDxJbnN0YW5jZVNwZWNpZmljYXRpb24+IGdldEFsbENvbXBvbmVudEluc3RhbmNlcyhNb2RlbCB1bWxNb2RlbCkgdGhyb3dzIE1vZGVsRXJyb3IgewotCi0JCVBhY2thZ2UgY21wdiA9IENIRVNTUHJvZmlsZU1hbmFnZXIuZ2V0Vmlld0J5U3RlcmVvdHlwZSh1bWxNb2RlbCwgQ0hFU1NQcm9maWxlTWFuYWdlci5DT01QT05FTlRfVklFVyk7Ci0KLQkJaWYgKGNtcHYgPT0gbnVsbCkKLQkJCXRocm93IG5ldyBNb2RlbEVycm9yKCJDb21wb25lbnQgdmlldyBub3QgZm91bmQuIik7Ci0KLQkJY21wdiA9IFF1ZXJ5VXRpbHMuZ2V0T25lUmVzb3VyY2VQbGF0Zm9ybVBhY2thZ2UoY21wdik7Ci0KLQkJaWYgKGNtcHYgPT0gbnVsbCkKLQkJCXRocm93IG5ldyBNb2RlbEVycm9yKCJDSEdhUmVzb3VyY2VQbGF0Zm9ybSBub3QgZm91bmQgaW4gQ29tcG9uZW50IFZpZXcuIik7Ci0KLQkJRUxpc3Q8RWxlbWVudD4gYWxsID0gY21wdi5hbGxPd25lZEVsZW1lbnRzKCk7Ci0JCUVMaXN0PEluc3RhbmNlU3BlY2lmaWNhdGlvbj4gY29tcG9uZW50cyA9IG5ldyBCYXNpY0VMaXN0PEluc3RhbmNlU3BlY2lmaWNhdGlvbj4oKTsKLQkJZm9yIChFbGVtZW50IGVsZW1lbnQgOiBhbGwpIHsKLQkJCWlmICghKGVsZW1lbnQgaW5zdGFuY2VvZiBJbnN0YW5jZVNwZWNpZmljYXRpb24pKQotCQkJCWNvbnRpbnVlOwotCi0JCQlJbnN0YW5jZVNwZWNpZmljYXRpb24gaXMgPSAoSW5zdGFuY2VTcGVjaWZpY2F0aW9uKSBlbGVtZW50OwotCi0JCQlpZiAoIShpcy5nZXRRdWFsaWZpZWROYW1lKCkgIT0gbnVsbCAmJiBRdWVyeVV0aWxzLmlzQ29tcG9uZW50SW5zdGFuY2UoaXMpKSkKLQkJCQljb250aW51ZTsKLQkJCWNvbXBvbmVudHMuYWRkKGlzKTsKLQotCQl9Ci0JCWlmIChjb21wb25lbnRzLnNpemUoKSA9PSAwKQotCQkJdGhyb3cgbmV3IE1vZGVsRXJyb3IoIkNvbXBvbmVudCBJbnN0YW5jZXMgbm90IGZvdW5kLiIpOwotCi0JCXJldHVybiBjb21wb25lbnRzOwotCX0KLQotCQotCS8qKgotCSAqIEdldHMgdGhlIGFsbCB0YXNrIGluc3RhbmNlcy4KLQkgKgotCSAqIEBwYXJhbSB1bWxNb2RlbCB0aGUgdW1sIG1vZGVsCi0JICogQHJldHVybiB0aGUgYWxsIHRhc2sgaW5zdGFuY2VzCi0JICogQHRocm93cyBNb2RlbEVycm9yIHRoZSBtb2RlbCBlcnJvcgotCSAqLwotCXB1YmxpYyBzdGF0aWMgRUxpc3Q8Q0hUYXNrPiBnZXRBbGxUYXNrSW5zdGFuY2VzKE1vZGVsIHVtbE1vZGVsKSB0aHJvd3MgTW9kZWxFcnJvciB7Ci0KLQkJRUxpc3Q8Q0hUYXNrPiB0YXNrcyA9IG5ldyBCYXNpY0VMaXN0PENIVGFzaz4oKTsKLQotCQlFTGlzdDxJbnN0YW5jZVNwZWNpZmljYXRpb24+IHggPSBnZXRBbGxDb21wb25lbnRJbnN0YW5jZXModW1sTW9kZWwpOwotCQlmb3IgKEluc3RhbmNlU3BlY2lmaWNhdGlvbiBpbnN0YW5jZVNwZWNpZmljYXRpb24gOiB4KSB7Ci0JCQlmb3IgKEVsZW1lbnQgZWxlbWVudDEgOiBpbnN0YW5jZVNwZWNpZmljYXRpb24uZ2V0T3duZWRFbGVtZW50cygpKSB7Ci0KLQkJCQlpZiAoIShlbGVtZW50MSBpbnN0YW5jZW9mIFNsb3QpKQotCQkJCQljb250aW51ZTsKLQotCQkJCVNsb3Qgc2xvdCA9IChTbG90KSBlbGVtZW50MTsKLQkJCQlDSFJ0UG9ydFNsb3QgY2hTbG90ID0gVU1MVXRpbHMuZ2V0U3RlcmVvdHlwZUFwcGxpY2F0aW9uKHNsb3QsIENIUnRQb3J0U2xvdC5jbGFzcyk7Ci0JCQkJaWYgKGNoU2xvdCA9PSBudWxsKQotCQkJCQljb250aW51ZTsKLQotCQkJCUVMaXN0PENIUnRTcGVjaWZpY2F0aW9uPiBjaFNwZWNzID0gY2hTbG90LmdldENIX1J0U3BlY2lmaWNhdGlvbigpOwotCi0JCQkJZm9yIChDSFJ0U3BlY2lmaWNhdGlvbiBjaFJ0U3BlY2lmaWNhdGlvbiA6IGNoU3BlY3MpIHsKLQkJCQkJdGFza3MuYWRkKG5ldyBDSFRhc2soY2hTbG90LCBjaFJ0U3BlY2lmaWNhdGlvbikpOwotCQkJCX0KLQkJCX0KLQkJfQotCQlpZiAodGFza3Muc2l6ZSgpID09IDApCi0JCQl0aHJvdyBuZXcgTW9kZWxFcnJvcigiVGFza3MgSW5zdGFuY2VzIG5vdCBmb3VuZC4iKTsKLQotCQlyZXR1cm4gdGFza3M7Ci0JfQotCi0JLyoqCi0JICogRGVsZXRlIHRhc2sgMiBjb3JlIGFzc29jaWF0aW9ucy4KLQkgKgotCSAqIEBwYXJhbSBod1N5c3RlbSB0aGUgaHcgc3lzdGVtCi0JICovCi0JcHVibGljIHN0YXRpYyB2b2lkIGRlbGV0ZVRhc2syQ29yZUFzc29jaWF0aW9ucyhDb21wb25lbnQgaHdTeXN0ZW0pIHsKLQkJZGVsZXRlQXNzb2NpYXRpb25zKGh3U3lzdGVtLCBUQVNLX1RPX0NPUkUpOwotCX0KLQotCS8qKgotCSAqIERlbGV0ZSBjb21wb25lbnQgMiBjb3JlIGFzc29jaWF0aW9ucy4KLQkgKgotCSAqIEBwYXJhbSBod1N5c3RlbSB0aGUgaHcgc3lzdGVtCi0JICovCi0JcHVibGljIHN0YXRpYyB2b2lkIGRlbGV0ZUNvbXBvbmVudDJDb3JlQXNzb2NpYXRpb25zKENvbXBvbmVudCBod1N5c3RlbSkgewotCQlkZWxldGVBc3NvY2lhdGlvbnMoaHdTeXN0ZW0sIENPTVBPTkVOVF9UT19DT1JFKTsKLQl9Ci0KLQkvKioKLQkgKiBEZWxldGUgcGFydGl0aW9uIDIgY29yZSBhc3NvY2lhdGlvbnMuCi0JICoKLQkgKiBAcGFyYW0gaHdTeXN0ZW0gdGhlIGh3IHN5c3RlbQotCSAqLwotCXB1YmxpYyBzdGF0aWMgdm9pZCBkZWxldGVQYXJ0aXRpb24yQ29yZUFzc29jaWF0aW9ucyhDb21wb25lbnQgaHdTeXN0ZW0pIHsKLQkJZGVsZXRlQXNzb2NpYXRpb25zKGh3U3lzdGVtLCBQQVJUSVRJT05fVE9fQ09SRSk7Ci0JfQotCi0JCi0JLyoqCi0JICogQnVpbGRzIHRoZSBpbnN0YW5jZSAyIGNvcmUgYXNzaWdubWVudHMuCi0JICoKLQkgKiBAcGFyYW0gaHdTeXN0ZW0gdGhlIGh3IHN5c3RlbQotCSAqIEBwYXJhbSByZXN1bHQgdGhlIHJlc3VsdAotCSAqLwotCXB1YmxpYyBzdGF0aWMgdm9pZCBidWlsZEluc3RhbmNlMkNvcmVBc3NpZ25tZW50cyhDb21wb25lbnQgaHdTeXN0ZW0sIE1hcDxDSENvcmUsIExpbmtlZEhhc2hTZXQ8T2JqZWN0Pj4gcmVzdWx0KSB7Ci0KLQkJZm9yIChDSENvcmUgY29yZSA6IHJlc3VsdC5rZXlTZXQoKSkgewotCQkJZm9yIChPYmplY3QgbyA6IHJlc3VsdC5nZXQoY29yZSkpIHsKLQkJCQlpZiAobyBpbnN0YW5jZW9mIEluc3RhbmNlU3BlY2lmaWNhdGlvbikgewotCQkJCQlJbnN0YW5jZVNwZWNpZmljYXRpb24gY29tcG9uZW50SW5zdCA9IChJbnN0YW5jZVNwZWNpZmljYXRpb24pIG87Ci0JCQkJCUNvbW1lbnQgYyA9IGh3U3lzdGVtLmNyZWF0ZU93bmVkQ29tbWVudCgpOwotCQkJCQlVTUxVdGlscy5hcHBseVN0ZXJlb3R5cGUoYywgTUFSVEVfQVNTSUdOKTsKLQkJCQkJQXNzaWduIGFzc2lnbiA9IFVNTFV0aWxzLmdldFN0ZXJlb3R5cGVBcHBsaWNhdGlvbihjLCBBc3NpZ24uY2xhc3MpOwotCQkJCQlhc3NpZ24uZ2V0RnJvbSgpLmFkZChjb21wb25lbnRJbnN0KTsKLQkJCQkJYXNzaWduLmdldFRvKCkuYWRkKGNvcmUuZ2V0UHJvY2Vzc29ySW5zdGFuY2UoKSk7Ci0KLQkJCQkJQ29uc3RyYWludCBuID0gaHdTeXN0ZW0uY3JlYXRlT3duZWRSdWxlKGNvcmUuZ2V0TmFtZSgpKTsKLQkJCQkJVU1MVXRpbHMuYXBwbHlTdGVyZW90eXBlKG4sIE1BUlRFX05GUENPTlNUUkFJTlQpOwotCQkJCQlOZnBDb25zdHJhaW50IHJ1bGUgPSBVTUxVdGlscy5nZXRTdGVyZW90eXBlQXBwbGljYXRpb24obiwgTmZwQ29uc3RyYWludC5jbGFzcyk7Ci0KLQkJCQkJVmFsdWVTcGVjaWZpY2F0aW9uIHZhbHVlU3BlYyA9IG4uY3JlYXRlU3BlY2lmaWNhdGlvbigiY29yZSIsIG51bGwsIFVNTFBhY2thZ2UuTGl0ZXJhbHMuTElURVJBTF9TVFJJTkcpOwotCQkJCQlMaXRlcmFsU3RyaW5nIHZhbHVlID0gKExpdGVyYWxTdHJpbmcpIHZhbHVlU3BlYzsKLQkJCQkJdmFsdWUuc2V0VmFsdWUoY29yZS5nZXROYW1lKCkpOwotCQkJCQlhc3NpZ24uZ2V0SW1wbGllZENvbnN0cmFpbnQoKS5hZGQocnVsZSk7Ci0JCQkJfQotCQkJfQotCQl9Ci0JfQotCi0JCi0JLyoqCi0JICogR2V0cyB0aGUgQ0hSVCBzcGVjIGZyb20gaW5zdGFuY2VzLgotCSAqCi0JICogQHBhcmFtIGluc3RhbmNlcyB0aGUgaW5zdGFuY2VzCi0JICogQHJldHVybiB0aGUgQ0hSVCBzcGVjIGZyb20gaW5zdGFuY2VzCi0JICovCi0JcHVibGljIHN0YXRpYyBTZXQ8Q0hSdFNwZWNpZmljYXRpb24+IGdldENIUlRTcGVjRnJvbUluc3RhbmNlcyhFTGlzdDxJbnN0YW5jZVNwZWNpZmljYXRpb24+IGluc3RhbmNlcykgewotCi0JCVNldDxDSFJ0U3BlY2lmaWNhdGlvbj4gcmVzdWx0ID0gbmV3IEhhc2hTZXQ8Q0hSdFNwZWNpZmljYXRpb24+KCk7Ci0KLQkJZm9yIChJbnN0YW5jZVNwZWNpZmljYXRpb24gaXMgOiBpbnN0YW5jZXMpIHsKLQkJCWZvciAoRWxlbWVudCBlbCA6IGlzLmdldE93bmVkRWxlbWVudHMoKSkgewotCQkJCWlmICghKGVsIGluc3RhbmNlb2YgU2xvdCkpCi0JCQkJCWNvbnRpbnVlOwotCi0JCQkJU2xvdCBzbG90ID0gKFNsb3QpIGVsOwotCQkJCUNIUnRQb3J0U2xvdCBjaFNsb3QgPSBVTUxVdGlscy5nZXRTdGVyZW90eXBlQXBwbGljYXRpb24oc2xvdCwgQ0hSdFBvcnRTbG90LmNsYXNzKTsKLQkJCQlpZiAoY2hTbG90ID09IG51bGwpCi0JCQkJCWNvbnRpbnVlOwotCi0JCQkJRUxpc3Q8Q0hSdFNwZWNpZmljYXRpb24+IGNoU3BlY3MgPSBjaFNsb3QuZ2V0Q0hfUnRTcGVjaWZpY2F0aW9uKCk7Ci0JCQkJZm9yIChDSFJ0U3BlY2lmaWNhdGlvbiBjaFJ0U3BlY2lmaWNhdGlvbiA6IGNoU3BlY3MpIHsKLQkJCQkJU3RyaW5nIG9jY0tpbmQgPSBjaFJ0U3BlY2lmaWNhdGlvbi5nZXRPY2NLaW5kKCk7Ci0JCQkJCWlmIChvY2NLaW5kICE9IG51bGwgJiYgaXNPY2NLaW5kU3BvcmFkaWNPclBlcmlvZGljKG9jY0tpbmQpKSB7Ci0JCQkJCQlyZXN1bHQuYWRkKGNoUnRTcGVjaWZpY2F0aW9uKTsKLQkJCQkJfQotCQkJCX0KLQkJCX0KLQkJfQotCi0JCXJldHVybiByZXN1bHQ7Ci0JfQotCi0JLyoqCi0JICogR2V0cyB0aGUgQ0ggdGFza3MuCi0JICoKLQkgKiBAcGFyYW0gaW5zdGFuY2VzIHRoZSBpbnN0YW5jZXMKLQkgKiBAcmV0dXJuIHRoZSBDSCB0YXNrcwotCSAqLwotCXB1YmxpYyBzdGF0aWMgTWFwPENIUnRTcGVjaWZpY2F0aW9uLCBTbG90PiBnZXRDSFRhc2tzKEVMaXN0PEluc3RhbmNlU3BlY2lmaWNhdGlvbj4gaW5zdGFuY2VzKSB7Ci0KLQkJTWFwPENIUnRTcGVjaWZpY2F0aW9uLCBTbG90PiByZXN1bHQgPSBuZXcgSGFzaE1hcDxDSFJ0U3BlY2lmaWNhdGlvbiwgU2xvdD4oKTsKLQotCQlmb3IgKEluc3RhbmNlU3BlY2lmaWNhdGlvbiBpcyA6IGluc3RhbmNlcykgewotCQkJZm9yIChFbGVtZW50IGVsIDogaXMuZ2V0T3duZWRFbGVtZW50cygpKSB7Ci0KLQkJCQlpZiAoIShlbCBpbnN0YW5jZW9mIFNsb3QpKQotCQkJCQljb250aW51ZTsKLQotCQkJCVNsb3Qgc2xvdCA9IChTbG90KSBlbDsKLQkJCQlDSFJ0UG9ydFNsb3QgY2hTbG90ID0gVU1MVXRpbHMuZ2V0U3RlcmVvdHlwZUFwcGxpY2F0aW9uKHNsb3QsIENIUnRQb3J0U2xvdC5jbGFzcyk7Ci0JCQkJaWYgKGNoU2xvdCA9PSBudWxsKQotCQkJCQljb250aW51ZTsKLQotCQkJCUVMaXN0PENIUnRTcGVjaWZpY2F0aW9uPiBjaFNwZWNzID0gY2hTbG90LmdldENIX1J0U3BlY2lmaWNhdGlvbigpOwotCQkJCWZvciAoQ0hSdFNwZWNpZmljYXRpb24gY2hSdFNwZWNpZmljYXRpb24gOiBjaFNwZWNzKSB7Ci0JCQkJCVN0cmluZyBvY2NLaW5kID0gY2hSdFNwZWNpZmljYXRpb24uZ2V0T2NjS2luZCgpOwotCQkJCQlpZiAob2NjS2luZCAhPSBudWxsKSB7Ci0JCQkJCQlpZiAoaXNPY2NLaW5kU3BvcmFkaWNPclBlcmlvZGljKG9jY0tpbmQpKSB7Ci0JCQkJCQkJcmVzdWx0LnB1dChjaFJ0U3BlY2lmaWNhdGlvbiwgc2xvdCk7Ci0JCQkJCQl9Ci0JCQkJCX0KLQkJCQl9Ci0JCQl9Ci0JCX0KLQotCQlyZXR1cm4gcmVzdWx0OwotCX0KLQotCQotCS8qKgotCSAqIEdldHMgdGhlIENIIHRhc2tzIGxpc3QuCi0JICoKLQkgKiBAcGFyYW0gaW5zdGFuY2VzIHRoZSBpbnN0YW5jZXMKLQkgKiBAcmV0dXJuIHRoZSBDSCB0YXNrcyBsaXN0Ci0JICovCi0JcHVibGljIHN0YXRpYyBFTGlzdDxDSFRhc2s+IGdldENIVGFza3NMaXN0KEVMaXN0PEluc3RhbmNlU3BlY2lmaWNhdGlvbj4gaW5zdGFuY2VzKSB7Ci0KLQkJRUxpc3Q8Q0hUYXNrPiByZXN1bHQgPSBuZXcgQmFzaWNFTGlzdDxDSFRhc2s+KCk7Ci0KLQkJZm9yIChJbnN0YW5jZVNwZWNpZmljYXRpb24gaXMgOiBpbnN0YW5jZXMpIHsKLQkJCWZvciAoRWxlbWVudCBlbCA6IGlzLmdldE93bmVkRWxlbWVudHMoKSkgewotCi0JCQkJaWYgKCEoZWwgaW5zdGFuY2VvZiBTbG90KSkKLQkJCQkJY29udGludWU7Ci0KLQkJCQlTbG90IHNsb3QgPSAoU2xvdCkgZWw7Ci0JCQkJQ0hSdFBvcnRTbG90IGNoU2xvdCA9IFVNTFV0aWxzLmdldFN0ZXJlb3R5cGVBcHBsaWNhdGlvbihzbG90LCBDSFJ0UG9ydFNsb3QuY2xhc3MpOwotCQkJCWlmIChjaFNsb3QgPT0gbnVsbCkKLQkJCQkJY29udGludWU7Ci0KLQkJCQlFTGlzdDxDSFJ0U3BlY2lmaWNhdGlvbj4gY2hTcGVjcyA9IGNoU2xvdC5nZXRDSF9SdFNwZWNpZmljYXRpb24oKTsKLQkJCQlmb3IgKENIUnRTcGVjaWZpY2F0aW9uIGNoUnRTcGVjaWZpY2F0aW9uIDogY2hTcGVjcykgewotCQkJCQlTdHJpbmcgb2NjS2luZCA9IGNoUnRTcGVjaWZpY2F0aW9uLmdldE9jY0tpbmQoKTsKLQkJCQkJaWYgKG9jY0tpbmQgIT0gbnVsbCAmJiBpc09jY0tpbmRTcG9yYWRpY09yUGVyaW9kaWMob2NjS2luZCkpIHsKLQkJCQkJCXJlc3VsdC5hZGQobmV3IENIVGFzayhjaFNsb3QsIGNoUnRTcGVjaWZpY2F0aW9uKSk7Ci0JCQkJCX0KLQkJCQl9Ci0JCQl9Ci0JCX0KLQotCQlyZXR1cm4gcmVzdWx0OwotCX0KLQotCS8qKgotCSAqIEJ1aWxkcyB0aGUgdGFzayAyIGNvcmUgYXNzaWdubWVudHMuCi0JICoKLQkgKiBAcGFyYW0gaHdTeXN0ZW0gdGhlIGh3IHN5c3RlbQotCSAqIEBwYXJhbSBwcm9jZXNzb3IgdGhlIHByb2Nlc3NvcgotCSAqIEBwYXJhbSBjb3Jlc1RvQ0hSdFNwZWMgdGhlIGNvcmVzIHRvIENIIHJ0IHNwZWMKLQkgKiBAcGFyYW0gbWFwQ0hSdFNwZWNUb0luc3RhbmNlcyB0aGUgbWFwIENIIHJ0IHNwZWMgdG8gaW5zdGFuY2VzCi0JICovCi0JcHVibGljIHN0YXRpYyB2b2lkIGJ1aWxkVGFzazJDb3JlQXNzaWdubWVudHMoQ29tcG9uZW50IGh3U3lzdGVtLCBJbnN0YW5jZVNwZWNpZmljYXRpb24gcHJvY2Vzc29yLCBNYXA8U3RyaW5nLCBMaW5rZWRIYXNoU2V0PENIUnRTcGVjaWZpY2F0aW9uPj4gY29yZXNUb0NIUnRTcGVjLAotCQkJTWFwPENIUnRTcGVjaWZpY2F0aW9uLCBJbnN0YW5jZVNwZWNpZmljYXRpb24+IG1hcENIUnRTcGVjVG9JbnN0YW5jZXMpIHsKLQkJLy8gVE9ETyBBdXRvLWdlbmVyYXRlZCBtZXRob2Qgc3R1YgotCi0JfQotCi0JLyoqCi0JICogR2V0cyB0aGUgb3BlcmF0aW9uIGNoYWluLgotCSAqCi0JICogQHBhcmFtIHVtbE1vZGVsIHRoZSB1bWwgbW9kZWwKLQkgKiBAcGFyYW0gY2h0YXNrcyB0aGUgY2h0YXNrcwotCSAqIEByZXR1cm4gdGhlIG9wZXJhdGlvbiBjaGFpbgotCSAqIEB0aHJvd3MgTW9kZWxFcnJvciB0aGUgbW9kZWwgZXJyb3IKLQkgKi8KLQkvKgotCSAqIGZvcmVhY2ggZGVmZXJyZWQgb3AgZ2V0IGl0cyBzbG90IGluIHRoZSBpbnN0YW5jZSBwYWNrYWdlIGdldCBpdHMgYWN0aXZpdHkKLQkgKiBkaWFncmFtIGlmIGFueSBjb2xsZWN0IHRoZSBjYWxsZWQgb3BlcmF0aW9ucyBnZXQgdGhlIGNvcnJlc3BvbmRpbmcKLQkgKiBjb21wb25lbnQgYW5kIHNvIGl0cyBzcGVjaWZpY2F0aW9uCi0JICogCi0JICogdGhpcyBpcyB1c2VmdWwgdG8gY2FsY3VsYXRlIHRoZSBXQ0VUIG9mIHRoZSB0YXNrIGdlbmVyYXRlZCBmcm9tIHRoZQotCSAqIGRlZmVycmVkIG9wCi0JICovCi0JcHVibGljIHN0YXRpYyBIYXNoTWFwPENIVGFzaywgRUxpc3Q8Q0hUYXNrPj4gZ2V0T3BlcmF0aW9uQ2hhaW4oTW9kZWwgdW1sTW9kZWwsIEVMaXN0PENIVGFzaz4gY2h0YXNrcykgdGhyb3dzIE1vZGVsRXJyb3IgewotCQlQYWNrYWdlIGluc3RQa2cgPSBJbnN0YW5jZVF1ZXJ5LmdldEluc3RhbmNlU3BlY1BhY2thZ2UodW1sTW9kZWwpOwotCQlpZiAoaW5zdFBrZyA9PSBudWxsKSB7Ci0JCQl0aHJvdyBuZXcgTW9kZWxFcnJvcigiSW5zdGFuY2UgcGFja2FnZSBub3QgaW4gdGhlIG1vZGVsOiB1c2UgdGhlIGNyZWF0ZSBpbnN0YW5jZSBjb21tYW5kIHRvIGNyZWF0ZSB0aGlzIHBhY2thZ2UiKTsKLQkJfQotCQlIYXNoTWFwPENIVGFzaywgRUxpc3Q8Q0hUYXNrPj4gbWFwID0gbmV3IEhhc2hNYXA8Q0hUYXNrLCBFTGlzdDxDSFRhc2s+PigpOwotCQlmb3IgKENIVGFzayBkT3AgOiBjaHRhc2tzKSB7Ci0JCQlTeXN0ZW0ub3V0LnByaW50bG4oZE9wLmdldENIUnRTcGVjaWZpY2F0aW9uKCkuZ2V0Q29udGV4dCgpLmdldE5hbWUoKSk7Ci0JCQlFTGlzdDxDSFRhc2s+IGxpc3QgPSBuZXcgQmFzaWNFTGlzdDxDSFRhc2s+KCk7Ci0JCQlDSFJ0UG9ydFNsb3QgY2hSdFBvcnRTbG90ID0gSW5zdGFuY2VRdWVyeS5nZXRDSFJ0UG9ydFNsb3QoaW5zdFBrZywgZE9wLmdldENIUnRTcGVjaWZpY2F0aW9uKCkpOwotCQkJc2xvdDJFbmRUb0VuZFdvcmtGbG93KGluc3RQa2csIGNoUnRQb3J0U2xvdCwgZE9wLmdldENIUnRTcGVjaWZpY2F0aW9uKCksIGxpc3QpOwotCQkJbWFwLnB1dChkT3AsIGxpc3QpOwotCQl9Ci0JCXJldHVybiBtYXA7Ci0JfQotCi0JLyoqCi0JICogR2V0cyB0aGUgb3BlcmF0aW9uIGNoYWluIDIuCi0JICoKLQkgKiBAcGFyYW0gdW1sTW9kZWwgdGhlIHVtbCBtb2RlbAotCSAqIEBwYXJhbSBjaHRhc2tzIHRoZSBjaHRhc2tzCi0JICogQHJldHVybiB0aGUgb3BlcmF0aW9uIGNoYWluIDIKLQkgKiBAdGhyb3dzIE1vZGVsRXJyb3IgdGhlIG1vZGVsIGVycm9yCi0JICovCi0JcHVibGljIHN0YXRpYyBIYXNoTWFwPENIUnRTcGVjaWZpY2F0aW9uLCBFTGlzdDxDSFRhc2s+PiBnZXRPcGVyYXRpb25DaGFpbjIoTW9kZWwgdW1sTW9kZWwsIFNldDxDSFJ0U3BlY2lmaWNhdGlvbj4gY2h0YXNrcykgdGhyb3dzIE1vZGVsRXJyb3IgewotCQlQYWNrYWdlIGluc3RQa2cgPSBJbnN0YW5jZVF1ZXJ5LmdldEluc3RhbmNlU3BlY1BhY2thZ2UodW1sTW9kZWwpOwotCQlpZiAoaW5zdFBrZyA9PSBudWxsKSB7Ci0JCQl0aHJvdyBuZXcgTW9kZWxFcnJvcigiSW5zdGFuY2UgcGFja2FnZSBub3QgaW4gdGhlIG1vZGVsOiB1c2UgdGhlIGNyZWF0ZSBpbnN0YW5jZSBjb21tYW5kIHRvIGNyZWF0ZSB0aGlzIHBhY2thZ2UiKTsKLQkJfQotCQlIYXNoTWFwPENIUnRTcGVjaWZpY2F0aW9uLCBFTGlzdDxDSFRhc2s+PiBtYXAgPSBuZXcgSGFzaE1hcDxDSFJ0U3BlY2lmaWNhdGlvbiwgRUxpc3Q8Q0hUYXNrPj4oKTsKLQkJZm9yIChDSFJ0U3BlY2lmaWNhdGlvbiBkT3AgOiBjaHRhc2tzKSB7Ci0JCQlTeXN0ZW0ub3V0LnByaW50bG4oZE9wLmdldENvbnRleHQoKS5nZXROYW1lKCkpOwotCQkJRUxpc3Q8Q0hUYXNrPiBsaXN0ID0gbmV3IEJhc2ljRUxpc3Q8Q0hUYXNrPigpOwotCQkJQ0hSdFBvcnRTbG90IGNoUnRQb3J0U2xvdCA9IEluc3RhbmNlUXVlcnkuZ2V0Q0hSdFBvcnRTbG90KGluc3RQa2csIGRPcCk7Ci0JCQlzbG90MkVuZFRvRW5kV29ya0Zsb3coaW5zdFBrZywgY2hSdFBvcnRTbG90LCBkT3AsIGxpc3QpOwotCQkJbWFwLnB1dChkT3AsIGxpc3QpOwotCQl9Ci0JCXJldHVybiBtYXA7Ci0JfQotCi0JCi0JLyoqCi0JICogU2xvdCAyIGVuZCB0byBlbmQgd29yayBmbG93LgotCSAqCi0JICogQHBhcmFtIGluc3RQa2cgdGhlIGluc3QgcGtnCi0JICogQHBhcmFtIGN1cnJlbnRDaFNsb3QgdGhlIGN1cnJlbnQgY2ggc2xvdAotCSAqIEBwYXJhbSBkT3AgdGhlIGQgb3AKLQkgKiBAcGFyYW0gbGlzdCB0aGUgbGlzdAotCSAqIEB0aHJvd3MgTW9kZWxFcnJvciB0aGUgbW9kZWwgZXJyb3IKLQkgKi8KLQlwcml2YXRlIHN0YXRpYyB2b2lkIHNsb3QyRW5kVG9FbmRXb3JrRmxvdyhQYWNrYWdlIGluc3RQa2csIENIUnRQb3J0U2xvdCBjdXJyZW50Q2hTbG90LCBDSFJ0U3BlY2lmaWNhdGlvbiBkT3AsIEVMaXN0PENIVGFzaz4gbGlzdCkgdGhyb3dzIE1vZGVsRXJyb3IgewotCi0JCUluc3RhbmNlU3BlY2lmaWNhdGlvbiBvd25pbmdJbnN0YW5jZSA9IGN1cnJlbnRDaFNsb3QuZ2V0QmFzZV9TbG90KCkuZ2V0T3duaW5nSW5zdGFuY2UoKTsKLQkJQWN0aXZpdHkgbWV0aG9kID0gSW5zdGFuY2VRdWVyeS5nZXRNZXRob2QoZE9wKTsKLQkJaWYgKG1ldGhvZCA9PSBudWxsKQotCQkJcmV0dXJuOy8vIFRPRE8gdGhyb3cgZXhjZXB0aW9uPwotCQlmb3IgKEFjdGl2aXR5Tm9kZSBub2RlIDogbWV0aG9kLmdldE5vZGVzKCkpIHsKLQkJCWlmIChub2RlIGluc3RhbmNlb2YgQ2FsbE9wZXJhdGlvbkFjdGlvbikgewotCQkJCUNhbGxPcGVyYXRpb25BY3Rpb24gY2FsbE9wID0gKENhbGxPcGVyYXRpb25BY3Rpb24pIG5vZGU7Ci0JCQkJRUxpc3Q8U2xvdD4gcmlTbG90ID0gSW5zdGFuY2VRdWVyeS5nZXRTbG90RnJvbVBvcnQoY2FsbE9wLCBvd25pbmdJbnN0YW5jZSk7Ci0JCQkJZm9yIChTbG90IHNsb3QgOiByaVNsb3QpIHsKLQkJCQkJU2xvdCB1c2VkUGlTbG90ID0gSW5zdGFuY2VRdWVyeS5nZXRPcHBvc2l0ZVNsb3Qoc2xvdCk7Ci0JCQkJCUNIUnRTcGVjaWZpY2F0aW9uIHVzZWRDSCA9IEluc3RhbmNlUXVlcnkuZ2V0Q0hGcm9tU2xvdCh1c2VkUGlTbG90LCBjYWxsT3AuZ2V0T3BlcmF0aW9uKCkpOwotCQkJCQlDSFJ0UG9ydFNsb3QgY2ggPSBVTUxVdGlscy5nZXRTdGVyZW90eXBlQXBwbGljYXRpb24odXNlZFBpU2xvdCwgQ0hSdFBvcnRTbG90LmNsYXNzKTsKLQkJCQkJaWYgKCFJbnN0YW5jZVF1ZXJ5LmlzRGVmZXJyZWQodXNlZENIKSkgewotCQkJCQkJbGlzdC5hZGQobmV3IENIVGFzayhjaCwgdXNlZENIKSk7Ci0JCQkJCQlzbG90MkVuZFRvRW5kV29ya0Zsb3coaW5zdFBrZywgY2gsIHVzZWRDSCwgbGlzdCk7Ci0JCQkJCX0KLQkJCQkJLy8KLQkJCQkJLy8gT3BlcmF0aW9uIG9wZXJhdGlvbiA9IGNhbGxPcC5nZXRPcGVyYXRpb24oKTsvLz0+dXNlIHRvIG1hdGNoIHRoZQotCQkJCQkvLyBjb250ZXh0IG9mIHRoZSBjaHJ0c3BlYwotCQkJCQkvLyBQb3J0IHJpUG9ydCA9IGNhbGxPcC5nZXRPblBvcnQoKTsvLz0+Z2V0IGxpbmsgYW5kIHRoZW4gcGkgdGhlbgotCQkJCQkvLyBjaHJ0c3BlYwotCQkJCQkvLyBQb3J0IHBpUG9ydCA9IGdldE9wcG9zaXRlUG9ydChyaVBvcnQpOwotCQkJCQkvLyBnZXRDSFJ0Q29tbWVudHNmcm9tUG9ydChwaVBvcnQsIG9wZXJhdGlvbik7Ci0JCQkJfQotCi0JCQl9Ci0JCX0KLQl9Ci0KLQkKLQkvKioKLQkgKiBXY2V0IHVuaXQuCi0JICoKLQkgKiBAcGFyYW0gd2NldFNwZWMgdGhlIHdjZXQgc3BlYwotCSAqIEBwYXJhbSB0aGVVbml0IHRoZSB0aGUgdW5pdAotCSAqIEByZXR1cm4gdGhlIGludAotCSAqLwotCXByaXZhdGUgc3RhdGljIGludCB3Y2V0VW5pdChTdHJpbmcgd2NldFNwZWMsIFN0cmluZyB0aGVVbml0KSB7Ci0JCWludCByZXQgPSAtMTsKLQkJaWYgKHdjZXRTcGVjID09IG51bGwpCi0JCQlyZXR1cm4gcmV0OwotCi0JCVN0cmluZ1BhcnNlciBzcCA9IG5ldyBTdHJpbmdQYXJzZXIoKTsKLQkJZG91YmxlIHZhbHVlID0gc3AuZ2V0VmFsdWVORlAod2NldFNwZWMpOwotCQlTdHJpbmcgdW5pdCA9IHNwLmdldFVuaXRORlAod2NldFNwZWMpOwotCi0JCWlmICh2YWx1ZSA9PSAtMSkKLQkJCXJldHVybiByZXQ7Ci0KLQkJaW50IGludFZhbHVlID0gdW5pdENvbnZlcnNpb24odmFsdWUsIHVuaXQsIHRoZVVuaXQpOwotCQlyZXR1cm4gaW50VmFsdWU7Ci0JfQotCi0JCi0JLyoqCi0JICogVW5pdCBjb252ZXJzaW9uIGZsb2F0LgotCSAqCi0JICogQHBhcmFtIHZhbHVlIHRoZSB2YWx1ZQotCSAqIEBwYXJhbSBmcm9tVW5pdCB0aGUgZnJvbSB1bml0Ci0JICogQHBhcmFtIHRvVW5pdCB0aGUgdG8gdW5pdAotCSAqIEByZXR1cm4gdGhlIGZsb2F0Ci0JICovCi0JcHVibGljIHN0YXRpYyBmbG9hdCB1bml0Q29udmVyc2lvbkZsb2F0KGRvdWJsZSB2YWx1ZSwgU3RyaW5nIGZyb21Vbml0LCBTdHJpbmcgdG9Vbml0KSB7Ci0JCWludCB0b0ZhY3RvciA9IDEwMDAwMDA7Ci0KLQkJaWYgKHRvVW5pdC5lcXVhbHNJZ25vcmVDYXNlKCJzIikpIHsKLQkJCXRvRmFjdG9yID0gMTAwMDAwMDAwMDsKLQkJfSBlbHNlIGlmICh0b1VuaXQuZXF1YWxzSWdub3JlQ2FzZSgibXMiKSkgewotCQkJdG9GYWN0b3IgPSAxMDAwMDAwOwotCQl9IGVsc2UgaWYgKHRvVW5pdC5lcXVhbHNJZ25vcmVDYXNlKCJ1cyIpKSB7Ci0JCQl0b0ZhY3RvciA9IDEwMDA7Ci0JCX0gZWxzZSBpZiAodG9Vbml0LmVxdWFsc0lnbm9yZUNhc2UoIm5zIikpIHsKLQkJCXRvRmFjdG9yID0gMTsKLQkJfQotCi0JCWludCBmcm9tRmFjdG9yID0gMTAwMDAwMDsKLQotCQlpZiAoZnJvbVVuaXQuZXF1YWxzSWdub3JlQ2FzZSgicyIpKSB7Ci0JCQlmcm9tRmFjdG9yID0gMTAwMDAwMDAwMDsKLQkJfSBlbHNlIGlmIChmcm9tVW5pdC5lcXVhbHNJZ25vcmVDYXNlKCJtcyIpKSB7Ci0JCQlmcm9tRmFjdG9yID0gMTAwMDAwMDsKLQkJfSBlbHNlIGlmIChmcm9tVW5pdC5lcXVhbHNJZ25vcmVDYXNlKCJ1cyIpKSB7Ci0JCQlmcm9tRmFjdG9yID0gMTAwMDsKLQkJfSBlbHNlIGlmIChmcm9tVW5pdC5lcXVhbHNJZ25vcmVDYXNlKCJucyIpKSB7Ci0JCQlmcm9tRmFjdG9yID0gMTsKLQkJfQotCi0JCWZsb2F0IHJhdGlvID0gKGZsb2F0KSBmcm9tRmFjdG9yIC8gdG9GYWN0b3I7Ci0JCWZsb2F0IGludFZhbHVlID0gKGZsb2F0KSAodmFsdWUgKiByYXRpbyk7Ci0JCXJldHVybiBpbnRWYWx1ZTsKLQl9Ci0KLQkKLQkvKioKLQkgKiBXY2V0IHVuaXQgZmxvYXQuCi0JICoKLQkgKiBAcGFyYW0gd2NldFNwZWMgdGhlIHdjZXQgc3BlYwotCSAqIEBwYXJhbSB0aGVVbml0IHRoZSB0aGUgdW5pdAotCSAqIEByZXR1cm4gdGhlIGZsb2F0Ci0JICovCi0JcHJpdmF0ZSBzdGF0aWMgZmxvYXQgd2NldFVuaXRGbG9hdChTdHJpbmcgd2NldFNwZWMsIFN0cmluZyB0aGVVbml0KSB7Ci0JCWludCByZXQgPSAtMTsKLQkJaWYgKHdjZXRTcGVjID09IG51bGwpCi0JCQlyZXR1cm4gcmV0OwotCi0JCVN0cmluZ1BhcnNlciBzcCA9IG5ldyBTdHJpbmdQYXJzZXIoKTsKLQkJZG91YmxlIHZhbHVlID0gc3AuZ2V0VmFsdWVORlAod2NldFNwZWMpOwotCQlTdHJpbmcgdW5pdCA9IHNwLmdldFVuaXRORlAod2NldFNwZWMpOwotCi0JCWlmICh2YWx1ZSA9PSAtMSkKLQkJCXJldHVybiByZXQ7Ci0KLQkJcmV0dXJuIHVuaXRDb252ZXJzaW9uRmxvYXQodmFsdWUsIHVuaXQsIHRoZVVuaXQpOwotCX0KLQotCQotCS8qKgotCSAqIFVuaXQgY29udmVyc2lvbi4KLQkgKgotCSAqIEBwYXJhbSB2YWx1ZSB0aGUgdmFsdWUKLQkgKiBAcGFyYW0gZnJvbVVuaXQgdGhlIGZyb20gdW5pdAotCSAqIEBwYXJhbSB0b1VuaXQgdGhlIHRvIHVuaXQKLQkgKiBAcmV0dXJuIHRoZSBpbnQKLQkgKi8KLQlwdWJsaWMgc3RhdGljIGludCB1bml0Q29udmVyc2lvbihkb3VibGUgdmFsdWUsIFN0cmluZyBmcm9tVW5pdCwgU3RyaW5nIHRvVW5pdCkgewotCQlpbnQgdG9GYWN0b3IgPSAxMDAwMDAwOwotCi0JCWlmICh0b1VuaXQuZXF1YWxzSWdub3JlQ2FzZSgicyIpKSB7Ci0JCQl0b0ZhY3RvciA9IDEwMDAwMDAwMDA7Ci0JCX0gZWxzZSBpZiAodG9Vbml0LmVxdWFsc0lnbm9yZUNhc2UoIm1zIikpIHsKLQkJCXRvRmFjdG9yID0gMTAwMDAwMDsKLQkJfSBlbHNlIGlmICh0b1VuaXQuZXF1YWxzSWdub3JlQ2FzZSgidXMiKSkgewotCQkJdG9GYWN0b3IgPSAxMDAwOwotCQl9IGVsc2UgaWYgKHRvVW5pdC5lcXVhbHNJZ25vcmVDYXNlKCJucyIpKSB7Ci0JCQl0b0ZhY3RvciA9IDE7Ci0JCX0KLQotCQlpbnQgZnJvbUZhY3RvciA9IDEwMDAwMDA7Ci0KLQkJaWYgKGZyb21Vbml0LmVxdWFsc0lnbm9yZUNhc2UoInMiKSkgewotCQkJZnJvbUZhY3RvciA9IDEwMDAwMDAwMDA7Ci0JCX0gZWxzZSBpZiAoZnJvbVVuaXQuZXF1YWxzSWdub3JlQ2FzZSgibXMiKSkgewotCQkJZnJvbUZhY3RvciA9IDEwMDAwMDA7Ci0JCX0gZWxzZSBpZiAoZnJvbVVuaXQuZXF1YWxzSWdub3JlQ2FzZSgidXMiKSkgewotCQkJZnJvbUZhY3RvciA9IDEwMDA7Ci0JCX0gZWxzZSBpZiAoZnJvbVVuaXQuZXF1YWxzSWdub3JlQ2FzZSgibnMiKSkgewotCQkJZnJvbUZhY3RvciA9IDE7Ci0JCX0KLQotCQlkb3VibGUgcmF0aW8gPSAoZG91YmxlKSBmcm9tRmFjdG9yIC8gdG9GYWN0b3I7Ci0JCWludCBpbnRWYWx1ZSA9IChpbnQpIE1hdGgucm91bmQodmFsdWUgKiByYXRpbyk7Ci0JCXJldHVybiBpbnRWYWx1ZTsKLQl9Ci0KLQkKLQkvKioKLQkgKiBHZXRzIHRoZSBXQ0UgdHVuaXQgZmxvYXQuCi0JICoKLQkgKiBAcGFyYW0gY2hSdFNwZWNpZmljYXRpb24gdGhlIGNoIHJ0IHNwZWNpZmljYXRpb24KLQkgKiBAcGFyYW0gdW5pdE9mTWVhc3VyZSB0aGUgdW5pdCBvZiBtZWFzdXJlCi0JICogQHJldHVybiB0aGUgV0NFIHR1bml0IGZsb2F0Ci0JICogQHRocm93cyBNb2RlbEVycm9yIHRoZSBtb2RlbCBlcnJvcgotCSAqLwotCXB1YmxpYyBzdGF0aWMgZmxvYXQgZ2V0V0NFVHVuaXRGbG9hdChDSFJ0U3BlY2lmaWNhdGlvbiBjaFJ0U3BlY2lmaWNhdGlvbiwgU3RyaW5nIHVuaXRPZk1lYXN1cmUpIHRocm93cyBNb2RlbEVycm9yIHsKLQotCQlTdHJpbmdQYXJzZXIgc3AgPSBuZXcgU3RyaW5nUGFyc2VyKCk7Ci0JCVN0cmluZyB3Y2V0ID0gY2hSdFNwZWNpZmljYXRpb24uZ2V0TG9jYWxXQ0VUKCk7Ci0JCWZsb2F0IGludFZhbHVlID0gd2NldFVuaXRGbG9hdCh3Y2V0LCB1bml0T2ZNZWFzdXJlKTsKLQotCQlpZiAoaW50VmFsdWUgIT0gLTEpCi0JCQlyZXR1cm4gaW50VmFsdWU7Ci0KLQkJd2NldCA9IGNoUnRTcGVjaWZpY2F0aW9uLmdldFdDRVQoKTsKLQotCQlpbnRWYWx1ZSA9IHdjZXRVbml0KHdjZXQsIHVuaXRPZk1lYXN1cmUpOwotCQlpZiAoaW50VmFsdWUgIT0gLTEpCi0JCQlyZXR1cm4gaW50VmFsdWU7Ci0KLQkJdGhyb3cgbmV3IE1vZGVsRXJyb3IoIldDRVQgZm9yICVzIGlzIG5vdCBzZXQgY29ycmVjdGx5IiwgY2hSdFNwZWNpZmljYXRpb24uZ2V0Q29udGV4dCgpLmdldE5hbWUoKSk7Ci0JfQotCi0JCi0JLyoqCi0JICogR2V0cyB0aGUgV0NFIHR1bml0LgotCSAqCi0JICogQHBhcmFtIGNoUnRTcGVjaWZpY2F0aW9uIHRoZSBjaCBydCBzcGVjaWZpY2F0aW9uCi0JICogQHBhcmFtIHVuaXRPZk1lYXN1cmUgdGhlIHVuaXQgb2YgbWVhc3VyZQotCSAqIEByZXR1cm4gdGhlIFdDRSB0dW5pdAotCSAqIEB0aHJvd3MgTW9kZWxFcnJvciB0aGUgbW9kZWwgZXJyb3IKLQkgKi8KLQlwdWJsaWMgc3RhdGljIGludCBnZXRXQ0VUdW5pdChDSFJ0U3BlY2lmaWNhdGlvbiBjaFJ0U3BlY2lmaWNhdGlvbiwgU3RyaW5nIHVuaXRPZk1lYXN1cmUpIHRocm93cyBNb2RlbEVycm9yIHsKLQotCQlTdHJpbmdQYXJzZXIgc3AgPSBuZXcgU3RyaW5nUGFyc2VyKCk7Ci0JCVN0cmluZyB3Y2V0ID0gY2hSdFNwZWNpZmljYXRpb24uZ2V0TG9jYWxXQ0VUKCk7Ci0JCWludCBpbnRWYWx1ZSA9IHdjZXRVbml0KHdjZXQsIHVuaXRPZk1lYXN1cmUpOwotCi0JCWlmIChpbnRWYWx1ZSAhPSAtMSkKLQkJCXJldHVybiBpbnRWYWx1ZTsKLQotCQl3Y2V0ID0gY2hSdFNwZWNpZmljYXRpb24uZ2V0V0NFVCgpOwotCi0JCWludFZhbHVlID0gd2NldFVuaXQod2NldCwgdW5pdE9mTWVhc3VyZSk7Ci0JCWlmIChpbnRWYWx1ZSAhPSAtMSkKLQkJCXJldHVybiBpbnRWYWx1ZTsKLQotCQl0aHJvdyBuZXcgTW9kZWxFcnJvcigiV0NFVCBmb3IgJXMgaXMgbm90IHNldCBjb3JyZWN0bHkiLCBjaFJ0U3BlY2lmaWNhdGlvbi5nZXRDb250ZXh0KCkuZ2V0TmFtZSgpKTsKLQl9Ci0KLQkvKioKLQkgKiBHZXRzIHRoZSB3Y2V0LgotCSAqCi0JICogQHBhcmFtIGNoUnRTcGVjaWZpY2F0aW9uIHRoZSBjaCBydCBzcGVjaWZpY2F0aW9uCi0JICogQHJldHVybiB0aGUgd2NldAotCSAqIEB0aHJvd3MgTW9kZWxFcnJvciB0aGUgbW9kZWwgZXJyb3IKLQkgKi8KLQkvLyBUT0RPIGEgc2ltaWxhciBtZXRob2QgaXMgaW1wbGVtZW50ZWQgaW4gdGhlIG0ybSBwbHVnaW4gKEphdmE0UVZUdXRpbHMuamF2YSkKLQlwdWJsaWMgc3RhdGljIGRvdWJsZSBnZXRXQ0VUKENIUnRTcGVjaWZpY2F0aW9uIGNoUnRTcGVjaWZpY2F0aW9uKSB0aHJvd3MgTW9kZWxFcnJvciB7Ci0JCVN0cmluZ1BhcnNlciBzcCA9IG5ldyBTdHJpbmdQYXJzZXIoKTsKLQkJZG91YmxlIHggPSAtMTsKLQkJU3RyaW5nIHdjZXQgPSBjaFJ0U3BlY2lmaWNhdGlvbi5nZXRMb2NhbFdDRVQoKTsKLQkJaWYgKHdjZXQgIT0gbnVsbCkgewotCQkJeCA9IHNwLmdldFZhbHVlTkZQKHdjZXQpOwotCQl9Ci0JCWlmICh4ICE9IC0xKQotCQkJcmV0dXJuIHg7Ci0KLQkJd2NldCA9IGNoUnRTcGVjaWZpY2F0aW9uLmdldFdDRVQoKTsKLQotCQlpZiAod2NldCAhPSBudWxsKSB7Ci0JCQl4ID0gc3AuZ2V0VmFsdWVORlAod2NldCk7Ci0JCX0KLQkJaWYgKHggIT0gLTEpCi0JCQlyZXR1cm4geDsKLQotCQl0aHJvdyBuZXcgTW9kZWxFcnJvcigiV0NFVCBmb3IgJXMgaXMgbm90IHNldCBjb3JyZWN0bHkiLCBjaFJ0U3BlY2lmaWNhdGlvbi5nZXRDb250ZXh0KCkuZ2V0TmFtZSgpKTsKLQl9Ci0KLQkvKioKLQkgKiBDaGVjayBpZiBJbnN0YW5jZSBTcGVjaWZpY2F0aW9uIGluIGlucHV0IGlzIGFzc2lnbmVkIHRvIGEgUGFydGl0aW9uLgotCSAqCi0JICogQHBhcmFtIGkgdGhlIGkKLQkgKiBAcGFyYW0gYXNzaWdubWVudHMgdGhlIGFzc2lnbm1lbnRzCi0JICogQHJldHVybiB0cnVlLCBpZiBpcyBhc3NpZ25lZCAyIHBhcnRpdGlvbgotCSAqLwotCXB1YmxpYyBzdGF0aWMgYm9vbGVhbiBpc0Fzc2lnbmVkMlBhcnRpdGlvbihJbnN0YW5jZVNwZWNpZmljYXRpb24gaSwgRUxpc3Q8QXNzaWduPiBhc3NpZ25tZW50cykgewotCQlmb3IgKEFzc2lnbiB0aGVBc3NpZ25tZW50IDogYXNzaWdubWVudHMpIHsKLQkJCWlmICh0aGVBc3NpZ25tZW50ICE9IG51bGwpIHsKLQkJCQl0cnkgewotCQkJCQlpZiAodGhlQXNzaWdubWVudC5nZXRGcm9tKCkuY29udGFpbnMoKE9iamVjdCkgaSkgJiYgKGVsZW1lbnRJc1BhcnRpdGlvbkluc3RhbmNlKHRoZUFzc2lnbm1lbnQuZ2V0VG8oKS5nZXQoMCkpKSkgewotCQkJCQkJcmV0dXJuIHRydWU7Ci0JCQkJCX0KLQkJCQl9IGNhdGNoIChFeGNlcHRpb24gZSkgewotCQkJCQljb250aW51ZTsKLQkJCQl9Ci0JCQl9Ci0JCX0KLQkJcmV0dXJuIGZhbHNlOwotCX0KLQotCS8qKgotCSAqIENoZWNrIGlmIHRoaXMgUGFydGl0aW9uIGlzIGFzc2lnbmVkIHRvIGEgQ1BVLgotCSAqCi0JICogQHBhcmFtIGkgdGhlIGkKLQkgKiBAcGFyYW0gYXNzaWdubWVudHMgdGhlIGFzc2lnbm1lbnRzCi0JICogQHJldHVybiB0cnVlLCBpZiBpcyBhc3NpZ25lZCAyIHByb2Nlc3NvcgotCSAqLwotCXB1YmxpYyBzdGF0aWMgYm9vbGVhbiBpc0Fzc2lnbmVkMlByb2Nlc3NvcihJbnN0YW5jZVNwZWNpZmljYXRpb24gaSwgRUxpc3Q8QXNzaWduPiBhc3NpZ25tZW50cykgewotCQlmb3IgKEFzc2lnbiB0aGVBc3NpZ25tZW50IDogYXNzaWdubWVudHMpIHsKLQkJCWlmICh0aGVBc3NpZ25tZW50ICE9IG51bGwpIHsKLQkJCQl0cnkgewotCQkJCQlpZiAodGhlQXNzaWdubWVudC5nZXRGcm9tKCkuY29udGFpbnMoKE9iamVjdCkgaSkgJiYgZWxlbWVudElzUHJvY2Vzc29ySW5zdGFuY2UodGhlQXNzaWdubWVudC5nZXRUbygpLmdldCgwKSkpIHsKLQkJCQkJCXJldHVybiB0cnVlOwotCQkJCQl9Ci0JCQkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKLQkJCQkJY29udGludWU7Ci0JCQkJfQotCQkJfQotCQl9Ci0JCXJldHVybiBmYWxzZTsKLQl9Ci0KLQkvKioKLQkgKiBDaGVjayBpZiB0aGlzIFBhcnRpdGlvbiBpcyBhc3NpZ25lZCB0byBhIENQVS4KLQkgKgotCSAqIEBwYXJhbSBpIHRoZSBpCi0JICogQHBhcmFtIHBhY2sgdGhlIHBhY2sKLQkgKiBAcGFyYW0gYXNzaWdubWVudHMgdGhlIGFzc2lnbm1lbnRzCi0JICogQHJldHVybiB0cnVlLCBpZiBpcyBhc3NpZ25lZCAyIGNvcmUKLQkgKi8KLQlwdWJsaWMgc3RhdGljIGJvb2xlYW4gaXNBc3NpZ25lZDJDb3JlKEluc3RhbmNlU3BlY2lmaWNhdGlvbiBpLCBQYWNrYWdlIHBhY2ssIEVMaXN0PEFzc2lnbj4gYXNzaWdubWVudHMpIHsKLQkJU3RyaW5nIHBhY2tRTiA9IHBhY2suZ2V0UXVhbGlmaWVkTmFtZSgpOwotCQlTdHJpbmcgYXNzaWduZWRUYXJnZXRRTiA9ICIiOwotCQlTdHJpbmcgYXNzaWduZWRUYXJnZXRFbGVtZW50TmFtZSA9ICIiOwotCi0JCWZvciAoQXNzaWduIHRoZUFzc2lnbm1lbnQgOiBhc3NpZ25tZW50cykgewotCQkJaWYgKHRoZUFzc2lnbm1lbnQgIT0gbnVsbCkgewotCQkJCXRyeSB7Ci0JCQkJCUVMaXN0PEVsZW1lbnQ+IGFzc2lnbm1lbnRTb3VyY2UgPSB0aGVBc3NpZ25tZW50LmdldEZyb20oKTsKLQkJCQkJRWxlbWVudCBhc3NpZ25tZW50VGFyZ2V0ID0gdGhlQXNzaWdubWVudC5nZXRUbygpLmdldCgwKTsKLQkJCQkJYXNzaWduZWRUYXJnZXRRTiA9ICgoTmFtZWRFbGVtZW50KSBhc3NpZ25tZW50VGFyZ2V0KS5nZXRRdWFsaWZpZWROYW1lKCk7Ci0JCQkJCWFzc2lnbmVkVGFyZ2V0RWxlbWVudE5hbWUgPSAoKE5hbWVkRWxlbWVudCkgYXNzaWdubWVudFRhcmdldCkuZ2V0TGFiZWwoKTsKLQkJCQkJaWYgKGFzc2lnbm1lbnRTb3VyY2UuY29udGFpbnMoKE9iamVjdCkgaSkgJiYgZWxlbWVudElzUHJvY2Vzc29ySW5zdGFuY2UoYXNzaWdubWVudFRhcmdldCkpIHsKLQkJCQkJCWlmICghdGhlQXNzaWdubWVudC5nZXRJbXBsaWVkQ29uc3RyYWludCgpLmlzRW1wdHkoKSAmJiB0aGVBc3NpZ25tZW50LmdldEltcGxpZWRDb25zdHJhaW50KCkuZ2V0KDApICE9IG51bGwpIHsKLQkJCQkJCQlpZiAoKHBhY2tRTiArICI6OiIgKyBhc3NpZ25lZFRhcmdldEVsZW1lbnROYW1lKS5lcXVhbHMoYXNzaWduZWRUYXJnZXRRTikpIHsKLQkJCQkJCQkJcmV0dXJuIHRydWU7Ci0JCQkJCQkJfQotCQkJCQkJfSBlbHNlIHsKLQkJCQkJCQkvLyBDaGVjayBpZiBpdCBpcyBhIHNpbmdsZS1jb3JlCi0JCQkJCQkJSW5zdGFuY2VTcGVjaWZpY2F0aW9uIGluc3RTcGVjUHJvYyA9IChJbnN0YW5jZVNwZWNpZmljYXRpb24pIGFzc2lnbm1lbnRUYXJnZXQ7Ci0JCQkJCQkJaWYgKHByb2Nlc3Nvckluc3RhbmNlSXNTaW5nbGVDb3JlKGluc3RTcGVjUHJvYykpIHsKLQkJCQkJCQkJaWYgKChwYWNrUU4gKyAiOjoiICsgYXNzaWduZWRUYXJnZXRFbGVtZW50TmFtZSkuZXF1YWxzKGFzc2lnbmVkVGFyZ2V0UU4pKSB7Ci0JCQkJCQkJCQlyZXR1cm4gdHJ1ZTsKLQkJCQkJCQkJfQotCQkJCQkJCX0KLQkJCQkJCX0KLQkJCQkJfQotCQkJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7Ci0JCQkJCWNvbnRpbnVlOwotCQkJCX0KLQkJCX0KLQkJfQotCQlyZXR1cm4gZmFsc2U7Ci0JfQotCi0JLyoqCi0JICogQ2hlY2sgaWYgdGhpcyBQYXJ0aXRpb24gaXMgYXNzaWduZWQgdG8gYSBDUFUuCi0JICoKLQkgKiBAcGFyYW0gaSB0aGUgaQotCSAqIEBwYXJhbSBhc3NpZ25tZW50cyB0aGUgYXNzaWdubWVudHMKLQkgKiBAcmV0dXJuIHRydWUsIGlmIGlzIGFzc2lnbmVkIDIgY29yZQotCSAqLwotCXB1YmxpYyBzdGF0aWMgYm9vbGVhbiBpc0Fzc2lnbmVkMkNvcmUoSW5zdGFuY2VTcGVjaWZpY2F0aW9uIGksIEVMaXN0PEFzc2lnbj4gYXNzaWdubWVudHMpIHsKLQkJZm9yIChBc3NpZ24gdGhlQXNzaWdubWVudCA6IGFzc2lnbm1lbnRzKSB7Ci0JCQlpZiAodGhlQXNzaWdubWVudCAhPSBudWxsKSB7Ci0JCQkJdHJ5IHsKLQkJCQkJaWYgKHRoZUFzc2lnbm1lbnQuZ2V0RnJvbSgpLmNvbnRhaW5zKChPYmplY3QpIGkpICYmIGVsZW1lbnRJc1Byb2Nlc3Nvckluc3RhbmNlKHRoZUFzc2lnbm1lbnQuZ2V0VG8oKS5nZXQoMCkpKSB7Ci0JCQkJCQlpZiAoIXRoZUFzc2lnbm1lbnQuZ2V0SW1wbGllZENvbnN0cmFpbnQoKS5pc0VtcHR5KCkgJiYgdGhlQXNzaWdubWVudC5nZXRJbXBsaWVkQ29uc3RyYWludCgpLmdldCgwKSAhPSBudWxsKSB7Ci0JCQkJCQkJcmV0dXJuIHRydWU7Ci0JCQkJCQl9IGVsc2UgewotCQkJCQkJCS8vIENoZWNrIGlmIGl0IGlzIGEgc2luZ2xlLWNvcmUKLQkJCQkJCQlFbGVtZW50IGVsZW0gPSB0aGVBc3NpZ25tZW50LmdldFRvKCkuZ2V0KDApOwotCQkJCQkJCUluc3RhbmNlU3BlY2lmaWNhdGlvbiBpbnN0U3BlY1Byb2MgPSAoSW5zdGFuY2VTcGVjaWZpY2F0aW9uKSBlbGVtOwotCQkJCQkJCWlmIChwcm9jZXNzb3JJbnN0YW5jZUlzU2luZ2xlQ29yZShpbnN0U3BlY1Byb2MpKSB7Ci0JCQkJCQkJCXJldHVybiB0cnVlOwotCQkJCQkJCX0KLQkJCQkJCX0KLQkJCQkJfQotCQkJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7Ci0JCQkJCWNvbnRpbnVlOwotCQkJCX0KLQkJCX0KLQkJfQotCQlyZXR1cm4gZmFsc2U7Ci0JfQotCi0JLy8gLyoqCi0JLy8gKiBDaGVjayBpZiB0aGlzIFBhcnRpdGlvbiBpcyBhc3NpZ25lZCB0byBhIENQVQotCS8vICogQHBhcmFtIGkKLQkvLyAqIEBwYXJhbSBhc3NpZ25tZW50cwotCS8vICogQHJldHVybgotCS8vICovCi0JLy8gcHVibGljIHN0YXRpYyBib29sZWFuIGlzQXNzaWduZWQyQ29yZShJbnN0YW5jZVNwZWNpZmljYXRpb24gaSwKLQkvLyBFTGlzdDxBc3NpZ24+IGFzc2lnbm1lbnRzKSB7Ci0JLy8gZm9yIChBc3NpZ24gdGhlQXNzaWdubWVudCA6IGFzc2lnbm1lbnRzKSB7Ci0JLy8gaWYgKHRoZUFzc2lnbm1lbnQgIT0gbnVsbCkgewotCS8vIGlmICh0aGVBc3NpZ25tZW50LmdldEZyb20oKS5jb250YWlucygoT2JqZWN0KWkpICYmCi0JLy8gZWxlbWVudElzUHJvY2Vzc29ySW5zdGFuY2UodGhlQXNzaWdubWVudC5nZXRUbygpLmdldCgwKSkgJiYKLQkvLyAhdGhlQXNzaWdubWVudC5nZXRJbXBsaWVkQ29uc3RyYWludCgpLmlzRW1wdHkoKSYmCi0JLy8gdGhlQXNzaWdubWVudC5nZXRJbXBsaWVkQ29uc3RyYWludCgpLmdldCgwKSE9bnVsbCApIHsKLQkvLyByZXR1cm4gdHJ1ZTsKLQkvLyB9Ci0JLy8gfQotCS8vIH0KLQkvLyByZXR1cm4gZmFsc2U7Ci0JLy8gfQotCi0JLyoqCi0JICogUmV0dXJucyBUUlVFIGlmIHRoZSBnaXZlbiBUYXNrIGlzIGFzc2lnbmVkIHRvIGEgQ29yZSBpbiB0aGUgRGVwbG95bWVudAotCSAqIGlkZW50aWZpZWQgYnkgdGhlIGdpdmVuIHBhY2thZ2UuCi0JICoKLQkgKiBAcGFyYW0gdGFzayB0aGUgdGFzawotCSAqIEBwYXJhbSBwYWNrIHRoZSBwYWNrCi0JICogQHBhcmFtIGFzc2lnbm1lbnRzIHRoZSBhc3NpZ25tZW50cwotCSAqIEByZXR1cm4gdHJ1ZSwgaWYgaXMgdGFzayBhc3NpZ25lZCAyIGNvcmUKLQkgKi8KLQlwdWJsaWMgc3RhdGljIGJvb2xlYW4gaXNUYXNrQXNzaWduZWQyQ29yZShDSFRhc2sgdGFzaywgUGFja2FnZSBwYWNrLCBFTGlzdDxBc3NpZ24+IGFzc2lnbm1lbnRzKSB7Ci0JCVN0cmluZyB0YXNrTmFtZSA9IHRhc2suZ2V0Q0hSdFNwZWNpZmljYXRpb24oKS5nZXRDb250ZXh0KCkuZ2V0TmFtZSgpOwotCQlTdHJpbmcgcGFja1FOID0gcGFjay5nZXRRdWFsaWZpZWROYW1lKCk7Ci0JCVN0cmluZyBhc3NpZ25lZFRhcmdldFFOID0gIiI7Ci0JCVN0cmluZyBhc3NpZ25lZFRhcmdldEVsZW1lbnROYW1lID0gIiI7Ci0KLQkJZm9yIChBc3NpZ24gdGhlQXNzaWdubWVudCA6IGFzc2lnbm1lbnRzKSB7Ci0JCQlpZiAodGhlQXNzaWdubWVudCAhPSBudWxsKSB7Ci0JCQkJdHJ5IHsKLQkJCQkJRWxlbWVudCBhc3NpZ25tZW50U291cmNlID0gdGhlQXNzaWdubWVudC5nZXRGcm9tKCkuZ2V0KDApOwotCQkJCQlFbGVtZW50IGFzc2lnbm1lbnRUYXJnZXQgPSB0aGVBc3NpZ25tZW50LmdldFRvKCkuZ2V0KDApOwotCQkJCQlhc3NpZ25lZFRhcmdldFFOID0gKChOYW1lZEVsZW1lbnQpIGFzc2lnbm1lbnRUYXJnZXQpLmdldFF1YWxpZmllZE5hbWUoKTsKLQkJCQkJYXNzaWduZWRUYXJnZXRFbGVtZW50TmFtZSA9ICgoTmFtZWRFbGVtZW50KSBhc3NpZ25tZW50VGFyZ2V0KS5nZXRMYWJlbCgpOwotCQkJCQlpZiAoKHBhY2tRTiArICI6OiIgKyBhc3NpZ25lZFRhcmdldEVsZW1lbnROYW1lKS5lcXVhbHMoYXNzaWduZWRUYXJnZXRRTikgJiYgUXVlcnlVdGlscy5lbGVtZW50SXNTbG90SW5zdGFuY2UoYXNzaWdubWVudFNvdXJjZSkgJiYgdGhlQXNzaWdubWVudC5nZXRJbXBsaWVkQ29uc3RyYWludCgpICE9IG51bGwKLQkJCQkJCQkmJiAhdGhlQXNzaWdubWVudC5nZXRJbXBsaWVkQ29uc3RyYWludCgpLmlzRW1wdHkoKSkgewotCQkJCQkJU3RyaW5nIHRoZVRhc2tWYWx1ZSA9IGdldFRhc2tOYW1lRnJvbUltcGxpZWROZnBDb25zdHJhaW50KHRoZUFzc2lnbm1lbnQpOwotCQkJCQkJaWYgKHRoZVRhc2tWYWx1ZSAhPSBudWxsICYmIHRoZVRhc2tWYWx1ZS5sZW5ndGgoKSA+IDApIHsKLQkJCQkJCQlpZiAodGhlVGFza1ZhbHVlLmVxdWFscyh0YXNrTmFtZSkpIHsKLQkJCQkJCQkJcmV0dXJuIHRydWU7Ci0JCQkJCQkJfQotCQkJCQkJfQotCQkJCQl9Ci0JCQkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKLQkJCQkJY29udGludWU7Ci0JCQkJfQotCQkJfQotCQl9Ci0JCXJldHVybiBmYWxzZTsKLQl9Ci0KLQkvKioKLQkgKiBSZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIHRhc2sgaXMgYXNzaWduZWQgdG8gYSBjb3JlLCBmYWxzZSBvdGhlcndpc2UuCi0JICoKLQkgKiBAcGFyYW0gdCB0aGUgdAotCSAqIEBwYXJhbSBhc3NpZ25tZW50cyB0aGUgYXNzaWdubWVudHMKLQkgKiBAcmV0dXJuIHRydWUgaWYgdGhlIGdpdmVuIHRhc2sgaXMgYXNzaWduZWQgdG8gYSBjb3JlCi0JICovCi0JcHVibGljIHN0YXRpYyBib29sZWFuIGlzVGFza0Fzc2lnbmVkMkNvcmUoQ0hUYXNrIHQsIEVMaXN0PEFzc2lnbj4gYXNzaWdubWVudHMpIHsKLQkJZm9yIChBc3NpZ24gdGhlQXNzaWdubWVudCA6IGFzc2lnbm1lbnRzKSB7Ci0JCQlpZiAodGhlQXNzaWdubWVudCAhPSBudWxsKSB7Ci0JCQkJRWxlbWVudCBhc3NpZ25tZW50U291cmNlID0gdGhlQXNzaWdubWVudC5nZXRGcm9tKCkuZ2V0KDApOwotCQkJCWlmIChRdWVyeVV0aWxzLmVsZW1lbnRJc1Nsb3RJbnN0YW5jZShhc3NpZ25tZW50U291cmNlKSkgewotCQkJCQlDSFRhc2sgdGhlVGFzayA9IGdldFRhc2tGcm9tU2xvdChhc3NpZ25tZW50U291cmNlKTsKLQkJCQkJaWYgKCh0aGVUYXNrICE9IG51bGwgJiYgdGhlVGFzay5lcXVhbHModCkpICYmIGVsZW1lbnRJc1Byb2Nlc3Nvckluc3RhbmNlKHRoZUFzc2lnbm1lbnQuZ2V0VG8oKS5nZXQoMCkpKSB7Ci0JCQkJCQlyZXR1cm4gdHJ1ZTsKLQkJCQkJfQotCQkJCX0KLQkJCX0KLQkJfQotCQlyZXR1cm4gZmFsc2U7Ci0JfQotCi0JLyoqCi0JICogR2l2ZW4gdGhlIENvcmUgKGFuZCByZWxhdGVkIHByb2Nlc3NvcikgZ2V0IHRoZSBsaXN0IG9mIHBhcnRpdGlvbnMgdGhhdCBhcmUKLQkgKiBhc3NpZ25lZCB0byBpdC4KLQkgKgotCSAqIEBwYXJhbSBjb3JlIHRoZSBjb3JlCi0JICogQHBhcmFtIGFzc2lnbm1lbnRzIHRoZSBhc3NpZ25tZW50cwotCSAqIEByZXR1cm4gdGhlIHBhcnRpdGlvbnMgYXNzaWduZWQgMiBjb3JlCi0JICovCi0JcHVibGljIHN0YXRpYyBMaW5rZWRIYXNoU2V0PE9iamVjdD4gZ2V0UGFydGl0aW9uc0Fzc2lnbmVkMkNvcmUoQ0hDb3JlIGNvcmUsIEVMaXN0PEFzc2lnbj4gYXNzaWdubWVudHMpIHsKLQkJTGlua2VkSGFzaFNldDxPYmplY3Q+IHJlc3VsdCA9IG5ldyBMaW5rZWRIYXNoU2V0PE9iamVjdD4oKTsKLQkJSW5zdGFuY2VTcGVjaWZpY2F0aW9uIHByb2Nlc3Nvckluc3RhbmNlID0gY29yZS5nZXRQcm9jZXNzb3JJbnN0YW5jZSgpOwotCQlTdHJpbmcgdGhlQ29yZU5hbWUgPSBjb3JlLmdldE5hbWUoKTsKLQkJU3RyaW5nIHRoZUNvcmVWYWx1ZSA9IG51bGw7Ci0JCWZvciAoQXNzaWduIHRoZUFzc2lnbm1lbnQgOiBhc3NpZ25tZW50cykgewotCQkJaWYgKHRoZUFzc2lnbm1lbnQgIT0gbnVsbCkgewotCQkJCXRyeSB7Ci0JCQkJCUVsZW1lbnQgYXNzaWdubWVudFNvdXJjZSA9IHRoZUFzc2lnbm1lbnQuZ2V0RnJvbSgpLmdldCgwKTsKLQkJCQkJLy8gT25seSBsb29rIGF0IGFzc2lnbm1lbnRzIHdoZXJlOgotCQkJCQkvLyBBU1NJR05NRU5UX1NPVVJDRSBpcyBhIFBhcnRpdGlvbgotCQkJCQkvLyBBU1NJR05NRU5UX1RBUkdFVCBpcyB0aGUgUHJvY2Vzc29yIHRoYXQgb3ducyB0aGUgY29yZQotCQkJCQlpZiAoIVF1ZXJ5VXRpbHMuZWxlbWVudElzUGFydGl0aW9uSW5zdGFuY2UoYXNzaWdubWVudFNvdXJjZSkgfHwgKCF0aGVBc3NpZ25tZW50LmdldFRvKCkuY29udGFpbnMoKE9iamVjdCkgcHJvY2Vzc29ySW5zdGFuY2UpKSkgewotCQkJCQkJY29udGludWU7Ci0JCQkJCX0KLQkJCQkJLy8gZm91bmQgYW4gYXNzaWdubWVudCBmb3IgdGhlIHByb2Nlc3NvciB0aGF0IG93bnMgdGhlIGNvcmU6Ci0JCQkJCS8vIGxldCdzIGxvb2sgaW50byBpdCBzbyBzZWUgaWYgaXQgaXMgcmVsYXRlZCB0byB0aGUgY29yZSB3ZSBhcmUKLQkJCQkJLy8gYW5hbHl6aW5nCi0JCQkJCWlmICh0aGVBc3NpZ25tZW50LmdldEltcGxpZWRDb25zdHJhaW50KCkgIT0gbnVsbCAmJiAhdGhlQXNzaWdubWVudC5nZXRJbXBsaWVkQ29uc3RyYWludCgpLmlzRW1wdHkoKSkgewotCQkJCQkJdGhlQ29yZVZhbHVlID0gZ2V0Q29yZU5hbWVGcm9tSW1wbGllZE5mcENvbnN0cmFpbnQodGhlQXNzaWdubWVudCk7Ci0JCQkJCQlpZiAodGhlQ29yZVZhbHVlLmVxdWFscyh0aGVDb3JlTmFtZSkpIHsKLQkJCQkJCQkvLyBpZiB0YXJnZXQgb2YgYXNzaWdubWVudCBpcyBhIHBhcnRpdGlvbgotCQkJCQkJCXJlc3VsdC5hZGQoYXNzaWdubWVudFNvdXJjZSk7Ci0JCQkJCQl9Ci0JCQkJCX0gZWxzZSB7Ci0JCQkJCQlpZiAocHJvY2Vzc29ySW5zdGFuY2VJc1NpbmdsZUNvcmUocHJvY2Vzc29ySW5zdGFuY2UpKSB7Ci0JCQkJCQkJLy8gSWYgbm8gY29yZSBpcyBzcGVjaWZpZWQgaW4gdGhlIEltcGxpZWQgQ29uc3RyYWludCBhbmQgdGhlCi0JCQkJCQkJLy8gUHJvY2Vzc29yIGhhcyBvbmx5IDEgQ29yZQotCQkJCQkJCXJlc3VsdC5hZGQoYXNzaWdubWVudFNvdXJjZSk7Ci0JCQkJCQl9Ci0JCQkJCX0KLQkJCQl9IGNhdGNoIChFeGNlcHRpb24gZSkgewotCQkJCQljb250aW51ZTsKLQkJCQl9Ci0KLQkJCX0KLQkJfQotCQlyZXR1cm4gcmVzdWx0OwotCX0KLQotCQotCS8qKgotCSAqIFJldHVybnMgdGhlIG5hbWUgb2YgdGhlIENvcmUgdG8gd2hpY2ggdGhlIGdpdmVuIGFzc2lnbm1lbnQgaXMgcmVsYXRlZC4KLQkgKgotCSAqIEBwYXJhbSB0aGVBc3NpZ25tZW50IHRoZSB0aGUgYXNzaWdubWVudAotCSAqIEByZXR1cm4gdGhlIG5hbWUgb2YgdGhlIENvcmUgdG8gd2hpY2ggdGhlQXNzaWdubWVudCBpcyByZWxhdGVkCi0JICovCi0JcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0Q29yZU5hbWVGcm9tSW1wbGllZE5mcENvbnN0cmFpbnQoQXNzaWduIHRoZUFzc2lnbm1lbnQpIHsKLQkJU3RyaW5nIGNvcmVOYW1lID0gbnVsbDsKLQkJdHJ5IHsKLQkJCU5mcENvbnN0cmFpbnQgdGhlSW1wbGllZE5mcENvbnN0cmFpbnQgPSB0aGVBc3NpZ25tZW50LmdldEltcGxpZWRDb25zdHJhaW50KCkuZ2V0KDApOwotCQkJQ29uc3RyYWludCBjbnN0ciA9IHRoZUltcGxpZWROZnBDb25zdHJhaW50LmdldEJhc2VfQ29uc3RyYWludCgpOwotCQkJVmFsdWVTcGVjaWZpY2F0aW9uIHZhbHVlU3BlYyA9IGNuc3RyLmdldFNwZWNpZmljYXRpb24oKTsKLQkJCUxpdGVyYWxTdHJpbmcgdmFsdWUgPSAoTGl0ZXJhbFN0cmluZykgdmFsdWVTcGVjOwotCQkJY29yZU5hbWUgPSB2YWx1ZS5nZXRWYWx1ZSgpOwotCQl9IGNhdGNoIChFeGNlcHRpb24gZSkgewotCQkJU3lzdGVtLm91dC5wcmludGxuKCJFcnJvciBpbiBnZXRDb3JlTmFtZUZyb21JbXBsaWVkTmZwQ29uc3RyYWludCIpOwotCQl9Ci0JCXJldHVybiBjb3JlTmFtZTsKLQl9Ci0KLQkKLQkvKioKLQkgKiBHZXRzIHRoZSB0YXNrIG5hbWUgZnJvbSBpbXBsaWVkIG5mcCBjb25zdHJhaW50LgotCSAqCi0JICogQHBhcmFtIHRoZUFzc2lnbm1lbnQgdGhlIHRoZSBhc3NpZ25tZW50Ci0JICogQHJldHVybiB0aGUgdGFzayBuYW1lIGZyb20gaW1wbGllZCBuZnAgY29uc3RyYWludAotCSAqLwotCXByaXZhdGUgc3RhdGljIFN0cmluZyBnZXRUYXNrTmFtZUZyb21JbXBsaWVkTmZwQ29uc3RyYWludChBc3NpZ24gdGhlQXNzaWdubWVudCkgewotCQlTdHJpbmcgdGFza05hbWUgPSBudWxsOwotCQl0cnkgewotCQkJLy8gdGhlIGZpcnN0IG9uZSBpcyB0aGUgY29yZSwgdGhlIHNlY29uZCBvbmUgaXMgdGhlIHRhc2sKLQkJCU5mcENvbnN0cmFpbnQgdGhlSW1wbGllZE5mcENvbnN0cmFpbnQgPSB0aGVBc3NpZ25tZW50LmdldEltcGxpZWRDb25zdHJhaW50KCkuZ2V0KDEpOwotCQkJQ29uc3RyYWludCBjbnN0ciA9IHRoZUltcGxpZWROZnBDb25zdHJhaW50LmdldEJhc2VfQ29uc3RyYWludCgpOwotCQkJVmFsdWVTcGVjaWZpY2F0aW9uIHZhbHVlU3BlYyA9IGNuc3RyLmdldFNwZWNpZmljYXRpb24oKTsKLQkJCUxpdGVyYWxTdHJpbmcgdmFsdWUgPSAoTGl0ZXJhbFN0cmluZykgdmFsdWVTcGVjOwotCQkJdGFza05hbWUgPSB2YWx1ZS5nZXRWYWx1ZSgpOwotCQl9IGNhdGNoIChFeGNlcHRpb24gZSkgewotCQkJU3lzdGVtLm91dC5wcmludGxuKCJFcnJvciBpbiBnZXRUYXNrTmFtZUZyb21JbXBsaWVkTmZwQ29uc3RyYWludCIpOwotCQl9Ci0JCXJldHVybiB0YXNrTmFtZTsKLQl9Ci0KLQkvKioKLQkgKiBSZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIGVsZW1lbnQgaXMgYSBwYXJ0aXRpb24gaW5zdGFuY2UsIGZhbHNlIG90aGVyd2lzZS4KLQkgKgotCSAqIEBwYXJhbSBlbGVtZW50IHRoZSBlbGVtZW50Ci0JICogQHJldHVybiB0cnVlIGlmIHRoZSBlbGVtZW50IGlzIGEgcGFydGl0aW9uIGluc3RhbmNlLCBmYWxzZSBvdGhlcndpc2UKLQkgKi8KLQlwdWJsaWMgc3RhdGljIGJvb2xlYW4gZWxlbWVudElzUGFydGl0aW9uSW5zdGFuY2UoRWxlbWVudCBlbGVtZW50KSB7Ci0JCWlmICghKGVsZW1lbnQgaW5zdGFuY2VvZiBJbnN0YW5jZVNwZWNpZmljYXRpb24pKSB7Ci0JCQlyZXR1cm4gZmFsc2U7Ci0JCX0KLQkJSW5zdGFuY2VTcGVjaWZpY2F0aW9uIGlzID0gKEluc3RhbmNlU3BlY2lmaWNhdGlvbikgZWxlbWVudDsKLQkJaWYgKGlzLmdldFF1YWxpZmllZE5hbWUoKSAhPSBudWxsICYmIFF1ZXJ5VXRpbHMuaXNQYXJ0aXRpb25JbnN0YW5jZShpcykpIHsKLQkJCXJldHVybiB0cnVlOwotCQl9Ci0JCXJldHVybiBmYWxzZTsKLQl9Ci0KLQkvKioKLQkgKiBSZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIGVsZW1lbnQgaXMgYSBjb21wb25lbnQgaW5zdGFuY2UsIGZhbHNlIG90aGVyd2lzZS4KLQkgKgotCSAqIEBwYXJhbSBlbGVtZW50IHRoZSBlbGVtZW50Ci0JICogQHJldHVybiB0cnVlIGlmIHRoZSBlbGVtZW50IGlzIGEgY29tcG9uZW50IGluc3RhbmNlLCBmYWxzZSBvdGhlcndpc2UKLQkgKi8KLQlwdWJsaWMgc3RhdGljIGJvb2xlYW4gZWxlbWVudElzQ29tcG9uZW50SW5zdGFuY2UoRWxlbWVudCBlbGVtZW50KSB7Ci0JCWlmICghKGVsZW1lbnQgaW5zdGFuY2VvZiBJbnN0YW5jZVNwZWNpZmljYXRpb24pKSB7Ci0JCQlyZXR1cm4gZmFsc2U7Ci0JCX0KLQkJSW5zdGFuY2VTcGVjaWZpY2F0aW9uIGlzID0gKEluc3RhbmNlU3BlY2lmaWNhdGlvbikgZWxlbWVudDsKLQkJaWYgKGlzLmdldFF1YWxpZmllZE5hbWUoKSAhPSBudWxsICYmIFF1ZXJ5VXRpbHMuaXNDb21wb25lbnRJbnN0YW5jZShpcykpIHsKLQkJCXJldHVybiB0cnVlOwotCQl9Ci0JCXJldHVybiBmYWxzZTsKLQl9Ci0KLQkvKioKLQkgKiBSZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIGVsZW1lbnQgaXMgYSBwcm9jZXNzb3IgaW5zdGFuY2UsIGZhbHNlIG90aGVyd2lzZS4KLQkgKgotCSAqIEBwYXJhbSBlbGVtZW50IHRoZSBlbGVtZW50Ci0JICogQHJldHVybiB0cnVlIGlmIHRoZSBlbGVtZW50IGlzIGEgcHJvY2Vzc29yIGluc3RhbmNlLCBmYWxzZSBvdGhlcndpc2UKLQkgKi8KLQlwdWJsaWMgc3RhdGljIGJvb2xlYW4gZWxlbWVudElzUHJvY2Vzc29ySW5zdGFuY2UoRWxlbWVudCBlbGVtZW50KSB7Ci0JCWlmICghKGVsZW1lbnQgaW5zdGFuY2VvZiBJbnN0YW5jZVNwZWNpZmljYXRpb24pKSB7Ci0JCQlyZXR1cm4gZmFsc2U7Ci0JCX0KLQkJSW5zdGFuY2VTcGVjaWZpY2F0aW9uIGlzID0gKEluc3RhbmNlU3BlY2lmaWNhdGlvbikgZWxlbWVudDsKLQkJaWYgKGlzLmdldFF1YWxpZmllZE5hbWUoKSAhPSBudWxsICYmIFF1ZXJ5VXRpbHMuaXNQcm9jZXNzb3JJbnN0YW5jZShpcykpIHsKLQkJCXJldHVybiB0cnVlOwotCQl9Ci0JCXJldHVybiBmYWxzZTsKLQl9Ci0KLQkvKioKLQkgKiBHaXZlbiB0aGUgQ29yZSAoYW5kIHJlbGF0ZWQgcHJvY2Vzc29yKSBnZXQgdGhlIGxpc3Qgb2YgY29tcG9uZW50cyB0aGF0IGFyZQotCSAqIGFzc2lnbmVkIHRvIGl0LgotCSAqCi0JICogQHBhcmFtIGNvcmUgdGhlIGNvcmUKLQkgKiBAcGFyYW0gYXNzaWdubWVudHMgdGhlIGFzc2lnbm1lbnRzCi0JICogQHJldHVybiB0aGUgY29tcG9uZW50cyBhc3NpZ25lZCAyIGNvcmUKLQkgKi8KLQlwdWJsaWMgc3RhdGljIExpbmtlZEhhc2hTZXQ8T2JqZWN0PiBnZXRDb21wb25lbnRzQXNzaWduZWQyQ29yZShDSENvcmUgY29yZSwgRUxpc3Q8QXNzaWduPiBhc3NpZ25tZW50cykgewotCQlMaW5rZWRIYXNoU2V0PE9iamVjdD4gcmVzdWx0ID0gbmV3IExpbmtlZEhhc2hTZXQ8T2JqZWN0PigpOwotCQlJbnN0YW5jZVNwZWNpZmljYXRpb24gcHJvY2Vzc29ySW5zdGFuY2UgPSBjb3JlLmdldFByb2Nlc3Nvckluc3RhbmNlKCk7Ci0JCVN0cmluZyB0aGVDb3JlTmFtZSA9IGNvcmUuZ2V0TmFtZSgpOwotCQlTdHJpbmcgdGhlQ29yZVZhbHVlID0gbnVsbDsKLQotCQlmb3IgKEFzc2lnbiB0aGVBc3NpZ25tZW50IDogYXNzaWdubWVudHMpIHsKLQkJCWlmICh0aGVBc3NpZ25tZW50ICE9IG51bGwpIHsKLQkJCQl0cnkgewotCQkJCQkvLyBPbmx5IGxvb2sgYXQgYXNzaWdubWVudHMgd2hlcmU6Ci0JCQkJCS8vIEFTU0lHTk1FTlRfU09VUkNFIGlzIGEgQ29tcG9uZW50Ci0JCQkJCS8vIEFTU0lHTk1FTlRfVEFSR0VUIGlzIHRoZSBQcm9jZXNzb3IgdGhhdCBvd25zIHRoZSBjb3JlCi0JCQkJCUVsZW1lbnQgYXNzaWdubWVudFNvdXJjZSA9IHRoZUFzc2lnbm1lbnQuZ2V0RnJvbSgpLmdldCgwKTsKLQkJCQkJaWYgKCFRdWVyeVV0aWxzLmVsZW1lbnRJc0NvbXBvbmVudEluc3RhbmNlKGFzc2lnbm1lbnRTb3VyY2UpIHx8ICF0aGVBc3NpZ25tZW50LmdldFRvKCkuY29udGFpbnMoKE9iamVjdCkgcHJvY2Vzc29ySW5zdGFuY2UpKSB7Ci0JCQkJCQljb250aW51ZTsKLQkJCQkJfQotCi0JCQkJCS8vIGZvdW5kIGFuIGFzc2lnbm1lbnQgZm9yIHRoZSBwcm9jZXNzb3IgdGhhdCBvd25zIHRoZSBjb3JlOgotCQkJCQkvLyBsZXQncyBsb29rIGludG8gaXQgc28gc2VlIGlmIGl0IGlzIHJlbGF0ZWQgdG8gdGhlIGNvcmUgd2UgYXJlCi0JCQkJCS8vIGFuYWx5emluZwotCQkJCQlpZiAodGhlQXNzaWdubWVudC5nZXRJbXBsaWVkQ29uc3RyYWludCgpICE9IG51bGwgJiYgIXRoZUFzc2lnbm1lbnQuZ2V0SW1wbGllZENvbnN0cmFpbnQoKS5pc0VtcHR5KCkpIHsKLQkJCQkJCXRoZUNvcmVWYWx1ZSA9IGdldENvcmVOYW1lRnJvbUltcGxpZWROZnBDb25zdHJhaW50KHRoZUFzc2lnbm1lbnQpOwotCQkJCQkJaWYgKHRoZUNvcmVWYWx1ZS5lcXVhbHModGhlQ29yZU5hbWUpKSB7Ci0JCQkJCQkJcmVzdWx0LmFkZChhc3NpZ25tZW50U291cmNlKTsKLQkJCQkJCX0KLQkJCQkJfSBlbHNlIHsKLQkJCQkJCWlmIChwcm9jZXNzb3JJbnN0YW5jZUlzU2luZ2xlQ29yZShwcm9jZXNzb3JJbnN0YW5jZSkpIHsKLQkJCQkJCQkvLyBJZiBubyBjb3JlIGlzIHNwZWNpZmllZCBpbiB0aGUgSW1wbGllZCBDb25zdHJhaW50IGFuZCB0aGUKLQkJCQkJCQkvLyBQcm9jZXNzb3IgaGFzIG9ubHkgMSBDb3JlCi0JCQkJCQkJcmVzdWx0LmFkZChhc3NpZ25tZW50U291cmNlKTsKLQkJCQkJCX0KLQkJCQkJfQotCQkJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7Ci0JCQkJCWNvbnRpbnVlOwotCQkJCX0KLQotCQkJfQotCQl9Ci0JCXJldHVybiByZXN1bHQ7Ci0JfQotCi0JLyoqCi0JICogR2l2ZW4gdGhlIENvcmUgKGFuZCByZWxhdGVkIHByb2Nlc3NvcikgZ2V0IHRoZSBsaXN0IG9mIHRhc2tzIHRoYXQgYXJlCi0JICogYXNzaWduZWQgdG8gaXQuCi0JICoKLQkgKiBAcGFyYW0gY29yZSB0aGUgY29yZQotCSAqIEBwYXJhbSBwYWNrIHRoZSBwYWNrCi0JICogQHBhcmFtIGFzc2lnbm1lbnRzIHRoZSBhc3NpZ25tZW50cwotCSAqIEByZXR1cm4gdGhlIHRhc2tzIGFzc2lnbmVkIDIgY29yZQotCSAqLwotCXB1YmxpYyBzdGF0aWMgTGlua2VkSGFzaFNldDxPYmplY3Q+IGdldFRhc2tzQXNzaWduZWQyQ29yZShDSENvcmUgY29yZSwgUGFja2FnZSBwYWNrLCBFTGlzdDxBc3NpZ24+IGFzc2lnbm1lbnRzKSB7Ci0JCVN0cmluZyBwYWNrUU4gPSBwYWNrLmdldFF1YWxpZmllZE5hbWUoKTsKLQkJTGlua2VkSGFzaFNldDxPYmplY3Q+IHJlc3VsdCA9IG5ldyBMaW5rZWRIYXNoU2V0PE9iamVjdD4oKTsKLQkJSW5zdGFuY2VTcGVjaWZpY2F0aW9uIHByb2Nlc3Nvckluc3RhbmNlID0gY29yZS5nZXRQcm9jZXNzb3JJbnN0YW5jZSgpOwotCQlTdHJpbmcgdGhlQ29yZU5hbWUgPSBjb3JlLmdldE5hbWUoKTsKLQkJU3RyaW5nIHRoZUNvcmVWYWx1ZSA9IG51bGw7Ci0JCVN0cmluZyB0aGVUYXNrVmFsdWUgPSBudWxsOwotCi0JCWZvciAoQXNzaWduIHRoZUFzc2lnbm1lbnQgOiBhc3NpZ25tZW50cykgewotCQkJaWYgKHRoZUFzc2lnbm1lbnQgIT0gbnVsbCkgewotCQkJCXRyeSB7Ci0JCQkJCWlmICh0aGVBc3NpZ25tZW50LmdldFRvKCkuY29udGFpbnMoKE9iamVjdCkgcHJvY2Vzc29ySW5zdGFuY2UpKSB7Ci0JCQkJCQkvLyBmb3VuZCBhbiBhc3NpZ25tZW50IGZvciB0aGUgcHJvY2Vzc29yIHRoYXQgb3ducyB0aGUgY29yZToKLQkJCQkJCS8vIGxldCdzIGxvb2sgaW50byBpdCBzbyBzZWUgaWYgaXQgaXMgcmVsYXRlZCB0byB0aGUgY29yZSB3ZSBhcmUKLQkJCQkJCS8vIGFuYWx5emluZwotCQkJCQkJRWxlbWVudCBhc3NpZ25tZW50U291cmNlID0gdGhlQXNzaWdubWVudC5nZXRGcm9tKCkuZ2V0KDApOwotCQkJCQkJRWxlbWVudCBhc3NpZ25tZW50VGFyZ2V0ID0gdGhlQXNzaWdubWVudC5nZXRUbygpLmdldCgwKTsKLQkJCQkJCVN0cmluZyBhc3NpZ25lZFRhcmdldFFOID0gKChOYW1lZEVsZW1lbnQpIGFzc2lnbm1lbnRUYXJnZXQpLmdldFF1YWxpZmllZE5hbWUoKTsKLQkJCQkJCVN0cmluZyBhc3NpZ25lZFRhcmdldEVsZW1lbnROYW1lID0gKChOYW1lZEVsZW1lbnQpIGFzc2lnbm1lbnRUYXJnZXQpLmdldExhYmVsKCk7Ci0JCQkJCQlFTGlzdDxDSFRhc2s+IGNoVGFza0xpc3QgPSBuZXcgQmFzaWNFTGlzdDxDSFRhc2s+KCk7Ci0KLQkJCQkJCWlmICgocGFja1FOICsgIjo6IiArIGFzc2lnbmVkVGFyZ2V0RWxlbWVudE5hbWUpLmVxdWFscyhhc3NpZ25lZFRhcmdldFFOKSAmJiB0aGVBc3NpZ25tZW50LmdldEltcGxpZWRDb25zdHJhaW50KCkgIT0gbnVsbCAmJiAhdGhlQXNzaWdubWVudC5nZXRJbXBsaWVkQ29uc3RyYWludCgpLmlzRW1wdHkoKSkgewotCQkJCQkJCXRoZUNvcmVWYWx1ZSA9IGdldENvcmVOYW1lRnJvbUltcGxpZWROZnBDb25zdHJhaW50KHRoZUFzc2lnbm1lbnQpOwotCQkJCQkJCXRoZVRhc2tWYWx1ZSA9IGdldFRhc2tOYW1lRnJvbUltcGxpZWROZnBDb25zdHJhaW50KHRoZUFzc2lnbm1lbnQpOwotCi0JCQkJCQkJaWYgKHRoZUNvcmVWYWx1ZS5lcXVhbHModGhlQ29yZU5hbWUpKSB7Ci0JCQkJCQkJCWlmIChRdWVyeVV0aWxzLmVsZW1lbnRJc1Nsb3RJbnN0YW5jZShhc3NpZ25tZW50U291cmNlKSkgewotCQkJCQkJCQkJY2hUYXNrTGlzdCA9IGdldEFsbFRhc2tzRnJvbVNsb3QoYXNzaWdubWVudFNvdXJjZSk7Ci0JCQkJCQkJCQlmb3IgKENIVGFzayB0aGVDaFRhc2sgOiBjaFRhc2tMaXN0KSB7Ci0JCQkJCQkJCQkJU3RyaW5nIHRoZVRhc2tOYW1lID0gdGhlQ2hUYXNrLmdldENIUnRTcGVjaWZpY2F0aW9uKCkuZ2V0Q29udGV4dCgpLmdldE5hbWUoKTsKLQkJCQkJCQkJCQlpZiAodGhlQ2hUYXNrICE9IG51bGwgJiYgdGhlVGFza05hbWUuZXF1YWxzKHRoZVRhc2tWYWx1ZSkpIHsKLQkJCQkJCQkJCQkJcmVzdWx0LmFkZCh0aGVDaFRhc2spOwotCQkJCQkJCQkJCX0KLQkJCQkJCQkJCX0KLQkJCQkJCQkJfQotCQkJCQkJCX0gZWxzZSB7Ci0JCQkJCQkJCS8vIElmIG5vIGNvcmUgaXMgc3BlY2lmaWVkIGluIHRoZSBJbXBsaWVkIENvbnN0cmFpbnQgYW5kIHRoZQotCQkJCQkJCQkvLyBQcm9jZXNzb3IgaGFzIG9ubHkgMSBDb3JlCi0JCQkJCQkJCWlmIChwcm9jZXNzb3JJbnN0YW5jZUlzU2luZ2xlQ29yZShwcm9jZXNzb3JJbnN0YW5jZSkgJiYgUXVlcnlVdGlscy5lbGVtZW50SXNTbG90SW5zdGFuY2UoYXNzaWdubWVudFNvdXJjZSkpIHsKLQkJCQkJCQkJCWNoVGFza0xpc3QgPSBnZXRBbGxUYXNrc0Zyb21TbG90KGFzc2lnbm1lbnRTb3VyY2UpOwotCQkJCQkJCQkJZm9yIChDSFRhc2sgdGhlQ2hUYXNrIDogY2hUYXNrTGlzdCkgewotCQkJCQkJCQkJCVN0cmluZyB0aGVUYXNrTmFtZSA9IHRoZUNoVGFzay5nZXRDSFJ0U3BlY2lmaWNhdGlvbigpLmdldENvbnRleHQoKS5nZXROYW1lKCk7Ci0JCQkJCQkJCQkJaWYgKHRoZUNoVGFzayAhPSBudWxsICYmIHRoZVRhc2tOYW1lLmVxdWFscyh0aGVUYXNrVmFsdWUpKSB7Ci0JCQkJCQkJCQkJCXJlc3VsdC5hZGQodGhlQ2hUYXNrKTsKLQkJCQkJCQkJCQl9Ci0JCQkJCQkJCQl9Ci0JCQkJCQkJCX0KLQkJCQkJCQl9Ci0JCQkJCQl9Ci0JCQkJCX0KLQkJCQl9IGNhdGNoIChFeGNlcHRpb24gZSkgewotCQkJCQljb250aW51ZTsKLQkJCQl9Ci0JCQl9Ci0JCX0KLQkJcmV0dXJuIHJlc3VsdDsKLQl9Ci0KLQkKLQkvKioKLQkgKiBSZXR1cm5zIHRoZSBsaXN0IG9mIENvbXBvbmVudCB0byBDb3JlIGFzc2lnbm1lbnRzIGluIHRoZSBnaXZlbiB2aWV3IGluIHRoZSBnaXZlbiBtb2RlbC4KLQkgKgotCSAqIEBwYXJhbSB1bWxNb2RlbCB0aGUgdW1sIG1vZGVsCi0JICogQHBhcmFtIHZpZXdOYW1lIHRoZSB2aWV3IG5hbWUKLQkgKiBAcmV0dXJuIHRoZSBjb21wb25lbnQgMiBjb3JlIGFzc2lnbm1lbnRzCi0JICogQHRocm93cyBNb2RlbEVycm9yIHRoZSBtb2RlbCBlcnJvcgotCSAqLwotCXB1YmxpYyBzdGF0aWMgRUxpc3Q8QXNzaWduPiBnZXRDb21wb25lbnQyQ29yZUFzc2lnbm1lbnRzKE1vZGVsIHVtbE1vZGVsLCBTdHJpbmcgdmlld05hbWUpIHRocm93cyBNb2RlbEVycm9yIHsKLQkJLy8gTEIgMjAxNTA3MDggd2Ugbm93IGxvb2sgZm9yIGFzc2lnbm1lbnRzIGluIHRoZSBDSEdBIHJlc291cmNlIHBsYXRmb3JtCi0JCS8vIGNvbXBvbmVudAotCQkvLyBQYWNrYWdlIGNtcHYgPSBDSEVTU1Byb2ZpbGVNYW5hZ2VyLmdldFZpZXdCeVN0ZXJlb3R5cGUodW1sTW9kZWwsCi0JCS8vIHZpZXdOYW1lKTsKLQkJLy8gY21wdiA9IFF1ZXJ5VXRpbHMuZ2V0UmVzb3VyY2VQbGF0Zm9ybVBhY2thZ2UoY21wdik7Ci0KLQkJQ29tcG9uZW50IHJwYyA9IFF1ZXJ5VXRpbHMuZ2V0UmVzb3VyY2VQbGF0Zm9ybUNvbXBvbmVudCh1bWxNb2RlbCwgdmlld05hbWUpOwotCQlFTGlzdDxFbGVtZW50PiBhbGwgPSBycGMuYWxsT3duZWRFbGVtZW50cygpOwotCQlFTGlzdDxBc3NpZ24+IGFzc2lnbm1lbnRzID0gbmV3IEJhc2ljRUxpc3Q8QXNzaWduPigpOwotCQlTdGVyZW90eXBlIHN0ZXJlbyA9IG51bGw7Ci0JCWZvciAoRWxlbWVudCBlbGVtZW50IDogYWxsKSB7Ci0JCQlpZiAoKGVsZW1lbnQuZ2V0QXBwbGllZFN0ZXJlb3R5cGUoTUFSVEVfQVNTSUdOKSAhPSBudWxsKSkgewotCQkJCXN0ZXJlbyA9IGVsZW1lbnQuZ2V0QXBwbGllZFN0ZXJlb3R5cGUoTUFSVEVfQVNTSUdOKTsKLQkJCQlFT2JqZWN0IGVvYmogPSBlbGVtZW50LmdldFN0ZXJlb3R5cGVBcHBsaWNhdGlvbihzdGVyZW8pOwotCQkJCUFzc2lnbiBhID0gKEFzc2lnbikgZW9iajsKLQkJCQlFbGVtZW50IGFzc2lnbm1lbnRTb3VyY2UgPSBhLmdldEZyb20oKS5nZXQoMCk7Ci0JCQkJRWxlbWVudCBhc3NpZ25tZW50VGFyZ2V0ID0gYS5nZXRUbygpLmdldCgwKTsKLQkJCQkvLyBTT1VSQ0UgbXVzdCBiZSBhIENvbXBvbmVudAotCQkJCS8vIFRBUkdFVCBtdXN0IGJlIGEgUHJvY2Vzc29yCi0JCQkJaWYgKGVsZW1lbnRJc1Byb2Nlc3Nvckluc3RhbmNlKGFzc2lnbm1lbnRUYXJnZXQpKSB7Ci0JCQkJCWlmIChlbGVtZW50SXNDb21wb25lbnRJbnN0YW5jZShhc3NpZ25tZW50U291cmNlKSkgewotCQkJCQkJSW5zdGFuY2VTcGVjaWZpY2F0aW9uIGNvbXBvbmVudEluc3QgPSAoSW5zdGFuY2VTcGVjaWZpY2F0aW9uKSBhc3NpZ25tZW50U291cmNlOwotCQkJCQkJaWYgKGlzQ29tcG9uZW50SW5zdGFuY2UoY29tcG9uZW50SW5zdCkpIHsKLQkJCQkJCQlhc3NpZ25tZW50cy5hZGQoYSk7Ci0JCQkJCQl9Ci0JCQkJCX0KLQkJCQl9Ci0JCQl9Ci0JCX0KLQkJcmV0dXJuIGFzc2lnbm1lbnRzOwotCX0KLQotCQotCS8qKgotCSAqIFJldHVybnMgdGhlIGxpc3Qgb2YgQ29tcG9uZW50IHRvIFBhcnRpdGlvbiBhc3NpZ25tZW50cyBpbiB0aGUgZ2l2ZW4gdmlldyBpbiB0aGUgZ2l2ZW4gbW9kZWwuCi0JICoKLQkgKiBAcGFyYW0gdW1sTW9kZWwgdGhlIHVtbCBtb2RlbAotCSAqIEBwYXJhbSB2aWV3TmFtZSB0aGUgdmlldyBuYW1lCi0JICogQHJldHVybiB0aGUgY29tcG9uZW50IDIgcGFydGl0aW9uIGFzc2lnbm1lbnRzCi0JICogQHRocm93cyBNb2RlbEVycm9yIHRoZSBtb2RlbCBlcnJvcgotCSAqLwotCXB1YmxpYyBzdGF0aWMgRUxpc3Q8QXNzaWduPiBnZXRDb21wb25lbnQyUGFydGl0aW9uQXNzaWdubWVudHMoTW9kZWwgdW1sTW9kZWwsIFN0cmluZyB2aWV3TmFtZSkgdGhyb3dzIE1vZGVsRXJyb3IgewotCQkvLyBMQiAyMDE1MDcwOCB3ZSBub3cgbG9vayBmb3IgYXNzaWdubWVudHMgaW4gdGhlIENIR0EgcmVzb3VyY2UgcGxhdGZvcm0KLQkJLy8gY29tcG9uZW50Ci0JCS8vIFBhY2thZ2UgY21wdiA9IENIRVNTUHJvZmlsZU1hbmFnZXIuZ2V0Vmlld0J5U3RlcmVvdHlwZSh1bWxNb2RlbCwKLQkJLy8gdmlld05hbWUpOwotCQkvLyBjbXB2ID0gUXVlcnlVdGlscy5nZXRSZXNvdXJjZVBsYXRmb3JtUGFja2FnZShjbXB2KTsKLQotCQlDb21wb25lbnQgcnBjID0gUXVlcnlVdGlscy5nZXRSZXNvdXJjZVBsYXRmb3JtQ29tcG9uZW50KHVtbE1vZGVsLCB2aWV3TmFtZSk7Ci0JCUVMaXN0PEVsZW1lbnQ+IGFsbCA9IHJwYy5hbGxPd25lZEVsZW1lbnRzKCk7Ci0JCUVMaXN0PEFzc2lnbj4gYXNzaWdubWVudHMgPSBuZXcgQmFzaWNFTGlzdDxBc3NpZ24+KCk7Ci0JCVN0ZXJlb3R5cGUgc3RlcmVvID0gbnVsbDsKLQkJZm9yIChFbGVtZW50IGVsZW1lbnQgOiBhbGwpIHsKLQkJCWlmICgoZWxlbWVudC5nZXRBcHBsaWVkU3RlcmVvdHlwZShNQVJURV9BU1NJR04pICE9IG51bGwpKSB7Ci0JCQkJc3RlcmVvID0gZWxlbWVudC5nZXRBcHBsaWVkU3RlcmVvdHlwZShNQVJURV9BU1NJR04pOwotCQkJCUVPYmplY3QgZW9iaiA9IGVsZW1lbnQuZ2V0U3RlcmVvdHlwZUFwcGxpY2F0aW9uKHN0ZXJlbyk7Ci0JCQkJQXNzaWduIGEgPSAoQXNzaWduKSBlb2JqOwotCQkJCUVsZW1lbnQgYXNzaWdubWVudFNvdXJjZSA9IGEuZ2V0RnJvbSgpLmdldCgwKTsKLQkJCQlFbGVtZW50IGFzc2lnbm1lbnRUYXJnZXQgPSBhLmdldFRvKCkuZ2V0KDApOwotCQkJCS8vIFNPVVJDRSBtdXN0IGJlIGEgQ29tcG9uZW50Ci0JCQkJLy8gVEFSR0VUIG11c3QgYmUgYSBQYXJ0aXRpb24KLQkJCQlpZiAoZWxlbWVudElzUGFydGl0aW9uSW5zdGFuY2UoYXNzaWdubWVudFRhcmdldCkpIHsKLQkJCQkJaWYgKGVsZW1lbnRJc0NvbXBvbmVudEluc3RhbmNlKGFzc2lnbm1lbnRTb3VyY2UpKSB7Ci0JCQkJCQlJbnN0YW5jZVNwZWNpZmljYXRpb24gY29tcG9uZW50SW5zdCA9IChJbnN0YW5jZVNwZWNpZmljYXRpb24pIGFzc2lnbm1lbnRTb3VyY2U7Ci0JCQkJCQlpZiAoaXNDb21wb25lbnRJbnN0YW5jZShjb21wb25lbnRJbnN0KSkgewotCQkJCQkJCWFzc2lnbm1lbnRzLmFkZChhKTsKLQkJCQkJCX0KLQkJCQkJfQotCQkJCX0KLQkJCX0KLQkJfQotCQlyZXR1cm4gYXNzaWdubWVudHM7Ci0JfQotCi0JCi0JLyoqCi0JICogUmV0dXJucyB0aGUgbGlzdCBvZiBQYXJ0aXRpb24gdG8gQ29yZSBhc3NpZ25tZW50cyBpbiB0aGUgZ2l2ZW4gdmlldyBpbiB0aGUgZ2l2ZW4gbW9kZWwuCi0JICoKLQkgKiBAcGFyYW0gdW1sTW9kZWwgdGhlIHVtbCBtb2RlbAotCSAqIEBwYXJhbSB2aWV3TmFtZSB0aGUgdmlldyBuYW1lCi0JICogQHJldHVybiB0aGUgcGFydGl0aW9uIDIgY29yZSBhc3NpZ25tZW50cwotCSAqIEB0aHJvd3MgTW9kZWxFcnJvciB0aGUgbW9kZWwgZXJyb3IKLQkgKi8KLQlwdWJsaWMgc3RhdGljIEVMaXN0PEFzc2lnbj4gZ2V0UGFydGl0aW9uMkNvcmVBc3NpZ25tZW50cyhNb2RlbCB1bWxNb2RlbCwgU3RyaW5nIHZpZXdOYW1lKSB0aHJvd3MgTW9kZWxFcnJvciB7Ci0JCS8vIExCIDIwMTUwNzA4IHdlIG5vdyBsb29rIGZvciBhc3NpZ25tZW50cyBpbiB0aGUgQ0hHQSByZXNvdXJjZSBwbGF0Zm9ybQotCQkvLyBjb21wb25lbnQKLQkJLy8gUGFja2FnZSBjbXB2ID0gQ0hFU1NQcm9maWxlTWFuYWdlci5nZXRWaWV3QnlTdGVyZW90eXBlKHVtbE1vZGVsLAotCQkvLyB2aWV3TmFtZSk7Ci0JCS8vIGNtcHYgPSBRdWVyeVV0aWxzLmdldFJlc291cmNlUGxhdGZvcm1QYWNrYWdlKGNtcHYpOwotCi0JCUNvbXBvbmVudCBycGMgPSBRdWVyeVV0aWxzLmdldFJlc291cmNlUGxhdGZvcm1Db21wb25lbnQodW1sTW9kZWwsIHZpZXdOYW1lKTsKLQkJRUxpc3Q8RWxlbWVudD4gYWxsID0gcnBjLmFsbE93bmVkRWxlbWVudHMoKTsKLQkJRUxpc3Q8QXNzaWduPiBhc3NpZ25tZW50cyA9IG5ldyBCYXNpY0VMaXN0PEFzc2lnbj4oKTsKLQkJU3RlcmVvdHlwZSBzdGVyZW8gPSBudWxsOwotCQlmb3IgKEVsZW1lbnQgZWxlbWVudCA6IGFsbCkgewotCQkJaWYgKChlbGVtZW50LmdldEFwcGxpZWRTdGVyZW90eXBlKE1BUlRFX0FTU0lHTikgIT0gbnVsbCkpIHsKLQkJCQlzdGVyZW8gPSBlbGVtZW50LmdldEFwcGxpZWRTdGVyZW90eXBlKE1BUlRFX0FTU0lHTik7Ci0JCQkJRU9iamVjdCBlb2JqID0gZWxlbWVudC5nZXRTdGVyZW90eXBlQXBwbGljYXRpb24oc3RlcmVvKTsKLQkJCQlBc3NpZ24gYSA9IChBc3NpZ24pIGVvYmo7Ci0JCQkJRWxlbWVudCBhc3NpZ25tZW50U291cmNlID0gYS5nZXRGcm9tKCkuZ2V0KDApOwotCQkJCUVsZW1lbnQgYXNzaWdubWVudFRhcmdldCA9IGEuZ2V0VG8oKS5nZXQoMCk7Ci0JCQkJLy8gU09VUkNFIG11c3QgYmUgYSBQYXJ0aXRpb24KLQkJCQkvLyBUQVJHRVQgbXVzdCBiZSBhIFByb2Nlc3NvcgotCQkJCWlmIChlbGVtZW50SXNQYXJ0aXRpb25JbnN0YW5jZShhc3NpZ25tZW50U291cmNlKSAmJiBlbGVtZW50SXNQcm9jZXNzb3JJbnN0YW5jZShhc3NpZ25tZW50VGFyZ2V0KSkgewotCQkJCQlhc3NpZ25tZW50cy5hZGQoYSk7Ci0JCQkJfQotCQkJfQotCQl9Ci0JCXJldHVybiBhc3NpZ25tZW50czsKLQl9Ci0KLQkvKioKLQkgKiBSZXR1cm5zIHRoZSBsaXN0IG9mIFRhc2sgdG8gQ29yZSBhc3NpZ25tZW50cyBpbiB0aGUgZ2l2ZW4gdmlldyBpbiB0aGUgZ2l2ZW4gbW9kZWwuCi0JICoKLQkgKiBAcGFyYW0gdW1sTW9kZWwgdGhlIHVtbCBtb2RlbAotCSAqIEBwYXJhbSB2aWV3TmFtZSB0aGUgdmlldyBuYW1lCi0JICogQHJldHVybiB0aGUgdGFzayAyIGNvcmUgYXNzaWdubWVudHMKLQkgKiBAdGhyb3dzIE1vZGVsRXJyb3IgdGhlIG1vZGVsIGVycm9yCi0JICovCi0JcHVibGljIHN0YXRpYyBFTGlzdDxBc3NpZ24+IGdldFRhc2syQ29yZUFzc2lnbm1lbnRzKE1vZGVsIHVtbE1vZGVsLCBTdHJpbmcgdmlld05hbWUpIHRocm93cyBNb2RlbEVycm9yIHsKLQkJLy8gTEIgMjAxNTA3MDggd2Ugbm93IGxvb2sgZm9yIGFzc2lnbm1lbnRzIGluIHRoZSBDSEdBIHJlc291cmNlIHBsYXRmb3JtCi0JCS8vIGNvbXBvbmVudAotCQkvLyBQYWNrYWdlIGNtcHYgPSBDSEVTU1Byb2ZpbGVNYW5hZ2VyLmdldFZpZXdCeVN0ZXJlb3R5cGUodW1sTW9kZWwsCi0JCS8vIHZpZXdOYW1lKTsKLQkJLy8gY21wdiA9IFF1ZXJ5VXRpbHMuZ2V0UmVzb3VyY2VQbGF0Zm9ybVBhY2thZ2UoY21wdik7Ci0KLQkJQ29tcG9uZW50IHJwYyA9IFF1ZXJ5VXRpbHMuZ2V0UmVzb3VyY2VQbGF0Zm9ybUNvbXBvbmVudCh1bWxNb2RlbCwgdmlld05hbWUpOwotCQlFTGlzdDxFbGVtZW50PiBhbGwgPSBycGMuYWxsT3duZWRFbGVtZW50cygpOwotCQlFTGlzdDxBc3NpZ24+IGFzc2lnbm1lbnRzID0gbmV3IEJhc2ljRUxpc3Q8QXNzaWduPigpOwotCQlTdGVyZW90eXBlIHN0ZXJlbyA9IG51bGw7Ci0JCWZvciAoRWxlbWVudCBlbGVtZW50IDogYWxsKSB7Ci0JCQlpZiAoKGVsZW1lbnQuZ2V0QXBwbGllZFN0ZXJlb3R5cGUoTUFSVEVfQVNTSUdOKSAhPSBudWxsKSkgewotCQkJCXN0ZXJlbyA9IGVsZW1lbnQuZ2V0QXBwbGllZFN0ZXJlb3R5cGUoTUFSVEVfQVNTSUdOKTsKLQkJCQlFT2JqZWN0IGVvYmogPSBlbGVtZW50LmdldFN0ZXJlb3R5cGVBcHBsaWNhdGlvbihzdGVyZW8pOwotCQkJCUFzc2lnbiBhID0gKEFzc2lnbikgZW9iajsKLQkJCQlFbGVtZW50IGFzc2lnbm1lbnRTb3VyY2UgPSBhLmdldEZyb20oKS5nZXQoMCk7Ci0JCQkJRWxlbWVudCBhc3NpZ25tZW50VGFyZ2V0ID0gYS5nZXRUbygpLmdldCgwKTsKLQkJCQkvLyBTT1VSQ0UgbXVzdCBiZSBhIFRhc2sKLQkJCQkvLyBUQVJHRVQgbXVzdCBiZSBhIFByb2Nlc3NvcgotCQkJCWlmIChlbGVtZW50SXNTbG90SW5zdGFuY2UoYXNzaWdubWVudFNvdXJjZSkgJiYgZWxlbWVudElzUHJvY2Vzc29ySW5zdGFuY2UoYXNzaWdubWVudFRhcmdldCkpIHsKLQkJCQkJYXNzaWdubWVudHMuYWRkKGEpOwotCQkJCX0KLQkJCX0KLQkJfQotCQlyZXR1cm4gYXNzaWdubWVudHM7Ci0JfQotCi0JLyoqCi0JICogUmV0dXJucyB0cnVlIGlzIHRoZSBpbnB1dCBJbnN0YW5jZSBQcm9jZXNzb3IgaGFzIG9ubHkgMSBDT1JFLgotCSAqCi0JICogQHBhcmFtIHByb2Nlc3Nvckluc3RhbmNlIHRoZSBwcm9jZXNzb3IgaW5zdGFuY2UKLQkgKiBAcmV0dXJuIHRydWUsIGlmIHN1Y2Nlc3NmdWwKLQkgKi8KLQlwdWJsaWMgc3RhdGljIGJvb2xlYW4gcHJvY2Vzc29ySW5zdGFuY2VJc1NpbmdsZUNvcmUoSW5zdGFuY2VTcGVjaWZpY2F0aW9uIHByb2Nlc3Nvckluc3RhbmNlKSB7Ci0JCUNsYXNzaWZpZXIgcHJvY2Vzc29yQ2xhc3MgPSBwcm9jZXNzb3JJbnN0YW5jZS5nZXRDbGFzc2lmaWVycygpLmdldCgwKTsKLQkJQ0hfSHdQcm9jZXNzb3IgcHJvY2Vzc29yVHlwZSA9IFVNTFV0aWxzLmdldFN0ZXJlb3R5cGVBcHBsaWNhdGlvbihwcm9jZXNzb3JDbGFzcywgQ0hfSHdQcm9jZXNzb3IuY2xhc3MpOwotCQlTdHJpbmcgY29yZU51bWJlciA9IG51bGw7Ci0JCWNvcmVOdW1iZXIgPSBwcm9jZXNzb3JUeXBlLmdldE5iQ29yZXMoKTsKLQkJaW50IGljb3JlTnVtYmVyID0gMTsKLQkJdHJ5IHsKLQkJCWljb3JlTnVtYmVyID0gSW50ZWdlci5wYXJzZUludChjb3JlTnVtYmVyKTsKLQkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKLQkJCWljb3JlTnVtYmVyID0gMTsKLQkJfQotCQlpZiAoaWNvcmVOdW1iZXIgPT0gMSkgewotCQkJcmV0dXJuIHRydWU7Ci0JCX0KLQkJcmV0dXJuIGZhbHNlOwotCX0KLQotCS8qKgotCSAqIFJldHVybnMgdGhlIFBhY2thZ2UgKGluIHRoZSBEZXBsb3ltZW50IFZpZXcpIHRoYXQgb3ducyB0aGUgaW5wdXQgc3lzdGVtLgotCSAqCi0JICogQHBhcmFtIHVtbE1vZGVsIHRoZSB1bWwgbW9kZWwKLQkgKiBAcGFyYW0gdGhlU3lzdGVtIHRoZSB0aGUgc3lzdGVtCi0JICogQHJldHVybiB0aGUgb3duZXIgQ0ggZ2EgcmVzb3VyY2UgcGxhdGZvcm0gcGFja2FnZQotCSAqIEB0aHJvd3MgTW9kZWxFcnJvciB0aGUgbW9kZWwgZXJyb3IKLQkgKi8KLQlwdWJsaWMgc3RhdGljIFBhY2thZ2UgZ2V0T3duZXJDSEdhUmVzb3VyY2VQbGF0Zm9ybVBhY2thZ2UoTW9kZWwgdW1sTW9kZWwsIEluc3RhbmNlU3BlY2lmaWNhdGlvbiB0aGVTeXN0ZW0pIHRocm93cyBNb2RlbEVycm9yIHsKLQkJRUxpc3Q8UGFja2FnZT4gcGFja0xpc3QgPSBRdWVyeVV0aWxzLmdldFJlc291cmNlUGxhdGZvcm1QYWNrYWdlcyh1bWxNb2RlbCwgQ29uc3RhbnRzLkRFUExPWU1FTlRfVklFV19OQU1FKTsKLQkJZm9yIChQYWNrYWdlIHBhY2sgOiBwYWNrTGlzdCkgewotCQkJRUxpc3Q8RWxlbWVudD4gcGFja0VsZW1zID0gcGFjay5hbGxPd25lZEVsZW1lbnRzKCk7Ci0JCQlmb3IgKEVsZW1lbnQgZWxlbSA6IHBhY2tFbGVtcykgewotCQkJCWlmIChlbGVtIGluc3RhbmNlb2YgSW5zdGFuY2VTcGVjaWZpY2F0aW9uKSB7Ci0JCQkJCWlmICgoKEluc3RhbmNlU3BlY2lmaWNhdGlvbikgZWxlbSkuZXF1YWxzKHRoZVN5c3RlbSkpIHsKLQkJCQkJCXJldHVybiBwYWNrOwotCQkJCQl9Ci0JCQkJfQotCQkJfQotCQl9Ci0JCXJldHVybiBudWxsOwotCX0KLQotfQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgDQorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KKyAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorICAtDQorICAtIENvcHlyaWdodCAoYykgMjAxNS0yMDE2IFVuaXZlcnNpdHkgb2YgUGFkb3ZhLCBJVEFMWSAtICBJbnRlY3MgU3BBIA0KKyAgLSBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICAtIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KKyAgLSB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAgLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KKyAgLQ0KKyAgLSBDb250cmlidXRvcnM6DQorICAtDQorICAtIEFsZXNzYW5kcm8gWm92aSBhem92aUBtYXRoLnVuaXBkLml0DQorICAtIFN0ZWZhbm8gUHVyaSBzdGVmYW5vLnB1cmlAaW50ZWNzLml0DQorICAtIExhdXJhIEJhcmFjY2hpIGxhdXJhLmJhcmFjY2hpQGludGVjcy5pdA0KKyAgLSBOaWNob2xhcyBQYWNpbmkgbmljaG9sYXMucGFjaW5pQGludGVjcy5pdCAgDQorICAtDQorICAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbiBhbmQvb3IgaW5pdGlhbCBkb2N1bWVudGF0aW9uDQorICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL3BhY2thZ2Ugb3JnLnBvbGFyc3lzLmNoZXNzLm11bHRpY29yZS51dGlsczsNCisNCitpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsNCitpbXBvcnQgamF2YS51dGlsLkhhc2hNYXA7DQoraW1wb3J0IGphdmEudXRpbC5IYXNoU2V0Ow0KK2ltcG9ydCBqYXZhLnV0aWwuTGlua2VkSGFzaFNldDsNCitpbXBvcnQgamF2YS51dGlsLkxpbmtlZExpc3Q7DQoraW1wb3J0IGphdmEudXRpbC5MaXN0Ow0KK2ltcG9ydCBqYXZhLnV0aWwuTWFwOw0KK2ltcG9ydCBqYXZhLnV0aWwuU2V0Ow0KKw0KK2ltcG9ydCBqYXZheC5jcnlwdG8uc3BlYy5PQUVQUGFyYW1ldGVyU3BlYzsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5jb21tYW5kLkNvbW1hbmRTdGFjazsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLkJhc2ljRUxpc3Q7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24udXRpbC5FTGlzdDsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLkVudW1lcmF0b3I7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYudHJhbnNhY3Rpb24uVHJhbnNhY3Rpb25hbEVkaXRpbmdEb21haW47DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi50cmFuc2FjdGlvbi51dGlsLlRyYW5zYWN0aW9uVXRpbDsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5NQVJURS5NQVJURV9EZXNpZ25Nb2RlbC5ITEFNLkNhbGxDb25jdXJyZW5jeUtpbmQ7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuTUFSVEUuTUFSVEVfRGVzaWduTW9kZWwuSFJNLkh3TG9naWNhbC5Id0RldmljZS5Id0RldmljZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5NQVJURS5NQVJURV9Gb3VuZGF0aW9ucy5BbGxvYy5Bc3NpZ247DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuTUFSVEUuTUFSVEVfRm91bmRhdGlvbnMuTkZQcy5OZnBDb25zdHJhaW50Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC50b29scy5tb2RlbC5VbWxNb2RlbDsNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuQWN0aXZpdHk7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLkFjdGl2aXR5Tm9kZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuQ2FsbE9wZXJhdGlvbkFjdGlvbjsNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuQ2xhc3NpZmllcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuQ29tbWVudDsNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuQ29tcG9uZW50Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5Db25zdHJhaW50Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5FbGVtZW50Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5JbnN0YW5jZVNwZWNpZmljYXRpb247DQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLkxpdGVyYWxTdHJpbmc7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLk1vZGVsOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5OYW1lZEVsZW1lbnQ7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLlBhY2thZ2U7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLlNsb3Q7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLlN0ZXJlb3R5cGU7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLlVNTFBhY2thZ2U7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLlZhbHVlU3BlY2lmaWNhdGlvbjsNCitpbXBvcnQgb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlLkNvbXBvbmVudE1vZGVsLkNvbXBvbmVudEltcGxlbWVudGF0aW9uOw0KK2ltcG9ydCBvcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUuQ29tcG9uZW50TW9kZWwuRnVuY3Rpb25hbFBhcnRpdGlvbjsNCitpbXBvcnQgb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlLkNvcmUuQ0hFU1M7DQoraW1wb3J0IG9yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS5Db3JlLkNIR2FSZXNvdXJjZVBsYXRmb3JtOw0KK2ltcG9ydCBvcmcucG9sYXJzeXMuY2hlc3MuY2hlc3NtbHByb2ZpbGUuQ29yZS5GdW5jdGlvbmFsUGFydGl0aW9uczsNCitpbXBvcnQgb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlLlByZWRpY3RhYmlsaXR5LkRlcGxveW1lbnRDb25maWd1cmF0aW9uLkhhcmR3YXJlQmFzZWxpbmUuQ0hfSHdQcm9jZXNzb3I7DQoraW1wb3J0IG9yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS5QcmVkaWN0YWJpbGl0eS5SVENvbXBvbmVudE1vZGVsLkNIUnRQb3J0U2xvdDsNCitpbXBvcnQgb3JnLnBvbGFyc3lzLmNoZXNzLmNoZXNzbWxwcm9maWxlLlByZWRpY3RhYmlsaXR5LlJUQ29tcG9uZW50TW9kZWwuQ0hSdFNwZWNpZmljYXRpb247DQoraW1wb3J0IG9yZy5wb2xhcnN5cy5jaGVzcy5jaGVzc21scHJvZmlsZS51dGlsLkNvbnN0YW50czsNCitpbXBvcnQgb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUucHJvZmlsZXMuQ0hFU1NQcm9maWxlTWFuYWdlcjsNCitpbXBvcnQgb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUudXRpbC51bWwuTW9kZWxFcnJvcjsNCitpbXBvcnQgb3JnLnBvbGFyc3lzLmNoZXNzLmNvcmUudXRpbC51bWwuVU1MVXRpbHM7DQoraW1wb3J0IG9yZy5wb2xhcnN5cy5jaGVzcy5tdWx0aWNvcmUubW9kZWwuQ0hDb3JlOw0KK2ltcG9ydCBvcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlLm1vZGVsLkNIVGFzazsNCitpbXBvcnQgb3JnLnBvbGFyc3lzLmNoZXNzLnZhbGlkYXRvci5jb25zdHJhaW50cy5TdHJpbmdQYXJzZXI7DQorDQorLyoqDQorICogVGhlIENsYXNzIFF1ZXJ5VXRpbHMuDQorICovDQorcHVibGljIGNsYXNzIFF1ZXJ5VXRpbHMgew0KKwkNCisJLyoqDQorCSAqIFRoZSBDbGFzcyBPY2NLaW5kSW5mby4NCisJICovDQorCXB1YmxpYyBzdGF0aWMgY2xhc3MgT2NjS2luZEluZm8gew0KKw0KKwkJLyoqIFRoZSB2YWx1ZS4gKi8NCisJCXB1YmxpYyBkb3VibGUgdmFsdWU7DQorCQkNCisJCS8qKiBUaGUgdHlwZS4gKi8NCisJCXB1YmxpYyBTdHJpbmcgdHlwZTsNCisJCQ0KKwkJLyoqIFRoZSB1bml0LiAqLw0KKwkJcHVibGljIFN0cmluZyB1bml0Ow0KKw0KKwl9DQorDQorCS8qKiBUaGUgQ29uc3RhbnQgTUFSVEVfQVNTSUdOLiAqLw0KKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgTUFSVEVfQVNTSUdOID0gIk1BUlRFOjpNQVJURV9Gb3VuZGF0aW9uczo6QWxsb2M6OkFzc2lnbiI7DQorCQ0KKwkvKiogVGhlIENvbnN0YW50IE1BUlRFX05GUENPTlNUUkFJTlQuICovDQorCXByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBNQVJURV9ORlBDT05TVFJBSU5UID0gIk1BUlRFOjpNQVJURV9Gb3VuZGF0aW9uczo6TkZQczo6TmZwQ29uc3RyYWludCI7DQorDQorCS8qKiBUaGUgQ29uc3RhbnQgQ09NUE9ORU5UX1RPX1BBUlRJVElPTi4gKi8NCisJcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQ09NUE9ORU5UX1RPX1BBUlRJVElPTiA9IDA7DQorCQ0KKwkvKiogVGhlIENvbnN0YW50IFBBUlRJVElPTl9UT19DT1JFLiAqLw0KKwlwdWJsaWMgc3RhdGljIGZpbmFsIGludCBQQVJUSVRJT05fVE9fQ09SRSA9IDE7DQorCQ0KKwkvKiogVGhlIENvbnN0YW50IENPTVBPTkVOVF9UT19DT1JFLiAqLw0KKwlwdWJsaWMgc3RhdGljIGZpbmFsIGludCBDT01QT05FTlRfVE9fQ09SRSA9IDI7DQorCQ0KKwkvKiogVGhlIENvbnN0YW50IFRBU0tfVE9fQ09SRS4gKi8NCisJcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgVEFTS19UT19DT1JFID0gMzsNCisNCisJLyoqDQorCSAqIEdldHMgdGhlIGNoZXNzLg0KKwkgKg0KKwkgKiBAcGFyYW0gdW1sTW9kZWwgdGhlIHVtbCBtb2RlbA0KKwkgKiBAcmV0dXJuIHRoZSBjaGVzcw0KKwkgKi8NCisJcHVibGljIHN0YXRpYyBDSEVTUyBnZXRDSEVTUyhNb2RlbCB1bWxNb2RlbCkgew0KKwkJcmV0dXJuIFVNTFV0aWxzLmdldFN0ZXJlb3R5cGVBcHBsaWNhdGlvbih1bWxNb2RlbCwgQ0hFU1MuY2xhc3MpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBHZXRzIHRoZSBjb21tYW5kIHN0YWNrLg0KKwkgKg0KKwkgKiBAcGFyYW0gdW1sTW9kZWwgdGhlIHVtbCBtb2RlbA0KKwkgKiBAcmV0dXJuIHRoZSBjb21tYW5kIHN0YWNrDQorCSAqLw0KKwlwdWJsaWMgc3RhdGljIENvbW1hbmRTdGFjayBnZXRDb21tYW5kU3RhY2soTW9kZWwgdW1sTW9kZWwpIHsNCisJCVRyYW5zYWN0aW9uYWxFZGl0aW5nRG9tYWluIGVkaXRpbmdEb21haW4gPSBUcmFuc2FjdGlvblV0aWwuZ2V0RWRpdGluZ0RvbWFpbih1bWxNb2RlbCk7DQorCQlyZXR1cm4gZWRpdGluZ0RvbWFpbi5nZXRDb21tYW5kU3RhY2soKTsNCisJfQ0KKw0KKwkvKioNCisJICogcmV0dXJucyB0aGUgY29tcG9uZW50IHdoaWNoIG93bnMgdGhlIGFzc2lnbnMgZnJvbSBjb21wb25lbnRzIHRvIHBhcnRpdGlvbnMuDQorCSAqDQorCSAqIEBwYXJhbSB1bWxNb2RlbCB0aGUgdW1sIG1vZGVsDQorCSAqIEByZXR1cm4gdGhlIHBhcnRpdGlvbnMgY29tcG9uZW50DQorCSAqIEB0aHJvd3MgTW9kZWxFcnJvciB0aGUgbW9kZWwgZXJyb3INCisJICogQGRlcHJlY2F0ZWQgUGFydGl0aW9uc0NvbXBvbmVudCBzdGVyZW90eXBlIGlzIGRlcHJlY2F0ZWQNCisJICovDQorCXB1YmxpYyBzdGF0aWMgQ29tcG9uZW50IGdldFBhcnRpdGlvbnNDb21wb25lbnQoTW9kZWwgdW1sTW9kZWwpIHRocm93cyBNb2RlbEVycm9yIHsNCisJCS8vIGFzc3VtcHRpb246IGFzc2lnbnMgYXJlIHN0b3JlZCBpbiB0aGUgcm9vdCBTVyBzeXN0ZW0gaS5lLiB0aGUgb25lDQorCQkvLyBzdGVyZW90eXBlZCB3aXRoIENIR2FSZXNvdXJjZVBsYXRmb3JtDQorDQorCQlDSEVTUyBjaGVzcyA9IGdldENIRVNTKHVtbE1vZGVsKTsNCisJCVBhY2thZ2UgY29tcG9uZW50Vmlld1AgPSBjaGVzcy5nZXRDb21wb25lbnRWaWV3KCkuZ2V0QmFzZV9QYWNrYWdlKCk7DQorDQorCQlmb3IgKEVsZW1lbnQgZWwgOiBjb21wb25lbnRWaWV3UC5hbGxPd25lZEVsZW1lbnRzKCkpIHsNCisJCQlpZiAoZWwgaW5zdGFuY2VvZiBDb21wb25lbnQpIHsNCisJCQkJQ29tcG9uZW50IGMgPSAoQ29tcG9uZW50KSBlbDsNCisJCQkJLy8gTEIgMjAxNTA3MDcgTmV4dCBsaW5lIHRvIGJlIHJldmlld2VkIGJhc2VkIG9uIGNvbnNpZGVyYXRpb25zIGFib3V0DQorCQkJCS8vIHBhcnRpdGlvbnMnIGNvbXBvbmVudA0KKwkJCQlib29sZWFuIGIgPSBjLmdldE5hbWUoKS5lcXVhbHNJZ25vcmVDYXNlKCJQYXJ0aXRpb25zIik7DQorCQkJCWIgPSBiIHx8IFVNTFV0aWxzLmdldFN0ZXJlb3R5cGVBcHBsaWNhdGlvbihlbCwgRnVuY3Rpb25hbFBhcnRpdGlvbnMuY2xhc3MpICE9IG51bGw7DQorCQkJCWlmIChiKQ0KKwkJCQkJcmV0dXJuIGM7DQorCQkJfQ0KKwkJfQ0KKw0KKwkJdGhyb3cgbmV3IE1vZGVsRXJyb3IoIlBhcnRpdGlvbnMgY29tcG9uZW50IG5vdCBmb3VuZC4iKTsNCisJfQ0KKw0KKwkNCisJLyoqDQorCSAqIEdpdmVuIGEgUGFydGl0aW9uIHJldHVybnMgdGhlIGxpc3Qgb2YgQ29tcG9uZW50cyB0aGF0IGFyZSBhc3NpZ25lZCB0byBpdC4NCisJICoNCisJICogQHBhcmFtIHBhcnRpdGlvbiB0aGUgcGFydGl0aW9uDQorCSAqIEBwYXJhbSBhc3NpZ25tZW50cyB0aGUgYXNzaWdubWVudHMNCisJICogQHJldHVybiB0aGUgY29tcG9uZW50cyBhc3NpZ25lZCAyIHBhcnRpdGlvbg0KKwkgKi8NCisJcHVibGljIHN0YXRpYyBMaW5rZWRIYXNoU2V0PE9iamVjdD4gZ2V0Q29tcG9uZW50c0Fzc2lnbmVkMlBhcnRpdGlvbihJbnN0YW5jZVNwZWNpZmljYXRpb24gcGFydGl0aW9uLCBFTGlzdDxBc3NpZ24+IGFzc2lnbm1lbnRzKSB7DQorCQlMaW5rZWRIYXNoU2V0PE9iamVjdD4gcmVzdWx0ID0gbmV3IExpbmtlZEhhc2hTZXQ8T2JqZWN0PigpOw0KKw0KKwkJZm9yIChBc3NpZ24gdGhlQXNzaWdubWVudCA6IGFzc2lnbm1lbnRzKSB7DQorCQkJaWYgKHRoZUFzc2lnbm1lbnQgIT0gbnVsbCkgew0KKwkJCQl0cnkgew0KKwkJCQkJaWYgKHRoZUFzc2lnbm1lbnQuZ2V0VG8oKS5jb250YWlucygoT2JqZWN0KSBwYXJ0aXRpb24pICYmIChlbGVtZW50SXNDb21wb25lbnRJbnN0YW5jZSh0aGVBc3NpZ25tZW50LmdldEZyb20oKS5nZXQoMCkpKSkgew0KKwkJCQkJCXJlc3VsdC5hZGQodGhlQXNzaWdubWVudC5nZXRGcm9tKCkuZ2V0KDApKTsNCisJCQkJCX0NCisJCQkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsNCisJCQkJCS8vIGRvIG5vdGhpbmcNCisJCQkJfQ0KKwkJCX0NCisJCX0NCisJCXJldHVybiByZXN1bHQ7DQorCX0NCisNCisJLyoqDQorCSAqIERlbGV0ZXMgYWxsIHRoZSBhc3NvY2lhdGlvbnMgb2YgdGhlIGdpdmVuIHR5cGUuDQorCSAqDQorCSAqIEBwYXJhbSBwYXJlbnQgdGhlIHBhcmVudA0KKwkgKiBAcGFyYW0gYXNzb2NpYXRpb25UeXBlIChQQVJUSVRJT05fVE9fQ09SRSB8IENPTVBPTkVOVF9UT19DT1JFIHwgVEFTS19UT19DT1JFIHwgQ09NUE9ORU5UX1RPX1BBUlRJVElPTg0KKwkgKi8NCisJcHVibGljIHN0YXRpYyB2b2lkIGRlbGV0ZUFzc29jaWF0aW9ucyhDb21wb25lbnQgcGFyZW50LCBpbnQgYXNzb2NpYXRpb25UeXBlKSB7DQorCQlmb3IgKE9iamVjdCBlbCA6IHBhcmVudC5nZXRPd25lZENvbW1lbnRzKCkudG9BcnJheSgpKSB7DQorCQkJaWYgKGVsIGluc3RhbmNlb2YgQ29tbWVudCkgew0KKwkJCQlDb21tZW50IGFzc2lnbkNvbW1lbnQgPSAoQ29tbWVudCkgZWw7DQorDQorCQkJCUFzc2lnbiBhc3NpZ24gPSBVTUxVdGlscy5nZXRTdGVyZW90eXBlQXBwbGljYXRpb24oYXNzaWduQ29tbWVudCwgQXNzaWduLmNsYXNzKTsNCisJCQkJLy8gT25seSBkZWxldGUgb25lIGtpbmQgb2YgYXNzb2NpYXRpb25zDQorCQkJCXRyeSB7DQorCQkJCQlpZiAoKGFzc2lnbiAhPSBudWxsICYmIGFzc29jaWF0aW9uVHlwZSA9PSBQQVJUSVRJT05fVE9fQ09SRSAmJiAoZWxlbWVudElzUGFydGl0aW9uSW5zdGFuY2UoYXNzaWduLmdldEZyb20oKS5nZXQoMCkpKSkNCisJCQkJCQkJfHwgKGFzc2lnbiAhPSBudWxsICYmIGFzc29jaWF0aW9uVHlwZSA9PSBDT01QT05FTlRfVE9fQ09SRSAmJiAoZWxlbWVudElzQ29tcG9uZW50SW5zdGFuY2UoYXNzaWduLmdldEZyb20oKS5nZXQoMCkpKSAmJiAoZWxlbWVudElzUHJvY2Vzc29ySW5zdGFuY2UoYXNzaWduLmdldFRvKCkuZ2V0KDApKSkpDQorCQkJCQkJCXx8IChhc3NpZ24gIT0gbnVsbCAmJiBhc3NvY2lhdGlvblR5cGUgPT0gVEFTS19UT19DT1JFICYmIChlbGVtZW50SXNTbG90SW5zdGFuY2UoYXNzaWduLmdldEZyb20oKS5nZXQoMCkpKSAmJiAoZWxlbWVudElzUHJvY2Vzc29ySW5zdGFuY2UoYXNzaWduLmdldFRvKCkuZ2V0KDApKSkpDQorCQkJCQkJCXx8IChhc3NpZ24gIT0gbnVsbCAmJiBhc3NvY2lhdGlvblR5cGUgPT0gQ09NUE9ORU5UX1RPX1BBUlRJVElPTiAmJiAoZWxlbWVudElzQ29tcG9uZW50SW5zdGFuY2UoYXNzaWduLmdldEZyb20oKS5nZXQoMCkpKSAmJiAoZWxlbWVudElzUGFydGl0aW9uSW5zdGFuY2UoYXNzaWduLmdldFRvKCkuZ2V0KDApKSkpKSB7DQorCQkJCQkJaWYgKGFzc2lnbiAhPSBudWxsICYmIGFzc2lnbi5nZXRJbXBsaWVkQ29uc3RyYWludCgpLnNpemUoKSA+IDApIHsNCisJCQkJCQkJZm9yIChPYmplY3QgYyA6IGFzc2lnbi5nZXRJbXBsaWVkQ29uc3RyYWludCgpLnRvQXJyYXkoKSkgew0KKwkJCQkJCQkJaWYgKGMgaW5zdGFuY2VvZiBOZnBDb25zdHJhaW50KSB7DQorCQkJCQkJCQkJTmZwQ29uc3RyYWludCBuID0gKE5mcENvbnN0cmFpbnQpIGM7DQorCQkJCQkJCQkJbi5nZXRCYXNlX0NvbnN0cmFpbnQoKS5kZXN0cm95KCk7DQorCQkJCQkJCQl9DQorCQkJCQkJCX0NCisJCQkJCQl9DQorCQkJCQkJYXNzaWduQ29tbWVudC5kZXN0cm95KCk7DQorCQkJCQl9DQorCQkJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7DQorCQkJCQkvLyAyMDE2MDIyNSBBbHdheXMgZGVsZXRlIGFzc2lnbm1lbnRzIHdoZXJlIG9uZSBlbmQgaXMgbnVsbCENCisJCQkJCWFzc2lnbkNvbW1lbnQuZGVzdHJveSgpOw0KKwkJCQl9DQorCQkJfQ0KKwkJfQ0KKw0KKwkJLy8gZm9yIChPYmplY3QgZWwgOiBwYXJlbnQuZ2V0T3duZWRSdWxlcygpLnRvQXJyYXkoKSkgew0KKwkJLy8gaWYgKGVsIGluc3RhbmNlb2YgQ29uc3RyYWludCkgew0KKwkJLy8gQ29uc3RyYWludCBhc3NpZ25Db21tZW50ID0gKENvbnN0cmFpbnQpIGVsOw0KKwkJLy8gYXNzaWduQ29tbWVudC5kZXN0cm95KCk7DQorCQkvLyB9DQorCQkvLyB9DQorCX0NCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIENIVGFzayBhc3NvY2lhdGVkIHRvIHRoZSBnaXZlbiBlbGVtZW50IChpZiB0aGlzIGlzIGEgQ0hSVFBvcnRTbG90KS4NCisJICoNCisJICogQHBhcmFtIGVsZW1lbnQgdGhlIGVsZW1lbnQNCisJICogQHJldHVybiB0YXNrIHRoYXQgY29ycmVzcG9uZHMgdG8gdGhlIGlucHV0IHNsb3QsIGlmIGFueQ0KKwkgKi8NCisJcHVibGljIHN0YXRpYyBDSFRhc2sgZ2V0VGFza0Zyb21TbG90KEVsZW1lbnQgZWxlbWVudCkgew0KKwkJaWYgKCEoZWxlbWVudCBpbnN0YW5jZW9mIFNsb3QpKSB7DQorCQkJcmV0dXJuIG51bGw7DQorCQl9DQorCQlTbG90IHNsb3QgPSAoU2xvdCkgZWxlbWVudDsNCisJCUNIUnRQb3J0U2xvdCBjaFNsb3QgPSBVTUxVdGlscy5nZXRTdGVyZW90eXBlQXBwbGljYXRpb24oc2xvdCwgQ0hSdFBvcnRTbG90LmNsYXNzKTsNCisJCWlmIChjaFNsb3QgPT0gbnVsbCkgew0KKwkJCXJldHVybiBudWxsOw0KKwkJfQ0KKwkJRUxpc3Q8Q0hSdFNwZWNpZmljYXRpb24+IGNoU3BlY3MgPSBjaFNsb3QuZ2V0Q0hfUnRTcGVjaWZpY2F0aW9uKCk7DQorCQlmb3IgKENIUnRTcGVjaWZpY2F0aW9uIGNoUnRTcGVjaWZpY2F0aW9uIDogY2hTcGVjcykgew0KKwkJCVN0cmluZyBvY2NLaW5kID0gY2hSdFNwZWNpZmljYXRpb24uZ2V0T2NjS2luZCgpOw0KKwkJCWlmIChvY2NLaW5kICE9IG51bGwgJiYgaXNPY2NLaW5kU3BvcmFkaWNPclBlcmlvZGljKG9jY0tpbmQpKSB7DQorCQkJCXJldHVybiBuZXcgQ0hUYXNrKGNoU2xvdCwgY2hSdFNwZWNpZmljYXRpb24pOw0KKwkJCX0NCisJCX0NCisJCXJldHVybiBudWxsOw0KKwl9DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIGFsbCB0aGUgQ0hUYXNrcyBhc3NvY2lhdGVkIHRvIHRoZSBnaXZlbiBlbGVtZW50IChpZiB0aGlzIGlzIGEgQ0hSVFBvcnRTbG90KS4NCisJICoNCisJICogQHBhcmFtIGVsZW1lbnQgdGhlIGVsZW1lbnQNCisJICogQHJldHVybiB0YXNrIHRoYXQgY29ycmVzcG9uZHMgdG8gdGhlIGlucHV0IHNsb3QsIGlmIGFueQ0KKwkgKi8NCisJcHJpdmF0ZSBzdGF0aWMgRUxpc3Q8Q0hUYXNrPiBnZXRBbGxUYXNrc0Zyb21TbG90KEVsZW1lbnQgZWxlbWVudCkgew0KKwkJRUxpc3Q8Q0hUYXNrPiBjaFRhc2tMaXN0ID0gbmV3IEJhc2ljRUxpc3Q8Q0hUYXNrPigpOw0KKwkJaWYgKCEoZWxlbWVudCBpbnN0YW5jZW9mIFNsb3QpKSB7DQorCQkJcmV0dXJuIGNoVGFza0xpc3Q7DQorCQl9DQorCQlTbG90IHNsb3QgPSAoU2xvdCkgZWxlbWVudDsNCisJCUNIUnRQb3J0U2xvdCBjaFNsb3QgPSBVTUxVdGlscy5nZXRTdGVyZW90eXBlQXBwbGljYXRpb24oc2xvdCwgQ0hSdFBvcnRTbG90LmNsYXNzKTsNCisJCWlmIChjaFNsb3QgPT0gbnVsbCkgew0KKwkJCXJldHVybiBjaFRhc2tMaXN0Ow0KKwkJfQ0KKwkJRUxpc3Q8Q0hSdFNwZWNpZmljYXRpb24+IGNoU3BlY3MgPSBjaFNsb3QuZ2V0Q0hfUnRTcGVjaWZpY2F0aW9uKCk7DQorCQlmb3IgKENIUnRTcGVjaWZpY2F0aW9uIGNoUnRTcGVjaWZpY2F0aW9uIDogY2hTcGVjcykgew0KKwkJCVN0cmluZyBvY2NLaW5kID0gY2hSdFNwZWNpZmljYXRpb24uZ2V0T2NjS2luZCgpOw0KKwkJCWlmIChvY2NLaW5kICE9IG51bGwgJiYgaXNPY2NLaW5kU3BvcmFkaWNPclBlcmlvZGljKG9jY0tpbmQpKSB7DQorCQkJCWNoVGFza0xpc3QuYWRkKG5ldyBDSFRhc2soY2hTbG90LCBjaFJ0U3BlY2lmaWNhdGlvbikpOw0KKwkJCQkvLyByZXR1cm4gbmV3IENIVGFzayhjaFNsb3QsIGNoUnRTcGVjaWZpY2F0aW9uKTsNCisJCQl9DQorCQl9DQorCQlyZXR1cm4gY2hUYXNrTGlzdDsNCisJfQ0KKw0KKwkvKioNCisJICogRWxlbWVudCBpcyBzbG90IGluc3RhbmNlLg0KKwkgKg0KKwkgKiBAcGFyYW0gZWxlbWVudCB0aGUgZWxlbWVudA0KKwkgKiBAcmV0dXJuIHRydWUsIGlmIHN1Y2Nlc3NmdWwNCisJICovDQorCXB1YmxpYyBzdGF0aWMgYm9vbGVhbiBlbGVtZW50SXNTbG90SW5zdGFuY2UoRWxlbWVudCBlbGVtZW50KSB7DQorCQlyZXR1cm4gZWxlbWVudCBpbnN0YW5jZW9mIFNsb3Q7DQorCX0NCisNCisJLyoqDQorCSAqIEdpdmVuIGEgY29tcG9uZW50LCBjcmVhdGUgYWxsIHRoZSBDb21wb25lbnQgdG8gUGFydGl0aW9uIEFzc2lnbm1lbnRzLg0KKwkgKg0KKwkgKiBAcGFyYW0gcGFyZW50IHRoZSBwYXJlbnQNCisJICogQHBhcmFtIHJlc3VsdCB0aGUgcmVzdWx0DQorCSAqLw0KKwlwdWJsaWMgc3RhdGljIHZvaWQgYnVpbGRDb21wb25lbnQyUGFydGl0aW9uQXNzaWdubWVudChDb21wb25lbnQgcGFyZW50LCBNYXA8SW5zdGFuY2VTcGVjaWZpY2F0aW9uLCBMaW5rZWRIYXNoU2V0PE9iamVjdD4+IHJlc3VsdCkgew0KKwkJU3lzdGVtLm91dC5wcmludGxuKHBhcmVudC5nZXRRdWFsaWZpZWROYW1lKCkpOw0KKw0KKwkJZm9yIChJbnN0YW5jZVNwZWNpZmljYXRpb24gcGFydGl0aW9uSW5zdCA6IHJlc3VsdC5rZXlTZXQoKSkgew0KKwkJCVN5c3RlbS5vdXQucHJpbnRsbihwYXJ0aXRpb25JbnN0LmdldE5hbWUoKSk7DQorCQkJZm9yIChPYmplY3QgbyA6IHJlc3VsdC5nZXQocGFydGl0aW9uSW5zdCkpIHsNCisJCQkJaWYgKG8gaW5zdGFuY2VvZiBJbnN0YW5jZVNwZWNpZmljYXRpb24pIHsNCisJCQkJCUluc3RhbmNlU3BlY2lmaWNhdGlvbiBjb21wb25lbnRJbnN0ID0gKEluc3RhbmNlU3BlY2lmaWNhdGlvbikgbzsNCisJCQkJCVN5c3RlbS5vdXQucHJpbnRsbihjb21wb25lbnRJbnN0LmdldE5hbWUoKSk7DQorDQorCQkJCQlDb21tZW50IGMgPSBwYXJlbnQuY3JlYXRlT3duZWRDb21tZW50KCk7DQorCQkJCQlVTUxVdGlscy5hcHBseVN0ZXJlb3R5cGUoYywgTUFSVEVfQVNTSUdOKTsNCisJCQkJCUFzc2lnbiBhc3NpZ24gPSBVTUxVdGlscy5nZXRTdGVyZW90eXBlQXBwbGljYXRpb24oYywgQXNzaWduLmNsYXNzKTsNCisJCQkJCWFzc2lnbi5nZXRGcm9tKCkuYWRkKGNvbXBvbmVudEluc3QpOw0KKwkJCQkJYXNzaWduLmdldFRvKCkuYWRkKHBhcnRpdGlvbkluc3QpOw0KKwkJCQl9DQorCQkJfQ0KKwkJfQ0KKwl9DQorDQorCS8qKg0KKwkgKiBCdWlsZHMgdGhlIGNvcmUgbmFtZS4NCisJICoNCisJICogQHBhcmFtIGNvcmVOdW1iZXIgdGhlIGNvcmUgbnVtYmVyDQorCSAqIEByZXR1cm4gdGhlIHN0cmluZw0KKwkgKi8NCisJcHVibGljIHN0YXRpYyBTdHJpbmcgYnVpbGRDb3JlTmFtZShpbnQgY29yZU51bWJlcikgew0KKwkJLyogY29yZU51bWJlciBzdGFydHMgZnJvbSAwICovDQorCQlyZXR1cm4gImNvcmUiICsgY29yZU51bWJlcjsNCisJfQ0KKw0KKwkvKioNCisJICogQ3JlYXRlIGFsbCB0aGUgUGFydGl0aW9uIHRvIENvcmUgQXNzaWdubWVudHMuDQorCSAqDQorCSAqIEBwYXJhbSBwYXJlbnQgdGhlIHBhcmVudA0KKwkgKiBAcGFyYW0gcmVzdWx0IHRoZSByZXN1bHQNCisJICovDQorCXB1YmxpYyBzdGF0aWMgdm9pZCBidWlsZFBhcnRpdGlvbjJDb3JlQXNzaWdubWVudHMoQ29tcG9uZW50IHBhcmVudCwgTWFwPENIQ29yZSwgTGlua2VkSGFzaFNldDxPYmplY3Q+PiByZXN1bHQpIHsNCisJCWZvciAoQ0hDb3JlIGNvcmUgOiByZXN1bHQua2V5U2V0KCkpIHsNCisJCQlmb3IgKE9iamVjdCBvIDogcmVzdWx0LmdldChjb3JlKSkgew0KKwkJCQlpZiAobyBpbnN0YW5jZW9mIEluc3RhbmNlU3BlY2lmaWNhdGlvbikgew0KKwkJCQkJSW5zdGFuY2VTcGVjaWZpY2F0aW9uIHBhcnRpdGlvbkluc3QgPSAoSW5zdGFuY2VTcGVjaWZpY2F0aW9uKSBvOw0KKwkJCQkJQ29tbWVudCBjID0gcGFyZW50LmNyZWF0ZU93bmVkQ29tbWVudCgpOw0KKwkJCQkJVU1MVXRpbHMuYXBwbHlTdGVyZW90eXBlKGMsIE1BUlRFX0FTU0lHTik7DQorCQkJCQlBc3NpZ24gYXNzaWduID0gVU1MVXRpbHMuZ2V0U3RlcmVvdHlwZUFwcGxpY2F0aW9uKGMsIEFzc2lnbi5jbGFzcyk7DQorCQkJCQlhc3NpZ24uZ2V0RnJvbSgpLmFkZChwYXJ0aXRpb25JbnN0KTsNCisJCQkJCWFzc2lnbi5nZXRUbygpLmFkZChjb3JlLmdldFByb2Nlc3Nvckluc3RhbmNlKCkpOw0KKw0KKwkJCQkJQ29uc3RyYWludCBuID0gcGFyZW50LmNyZWF0ZU93bmVkUnVsZShjb3JlLmdldE5hbWUoKSk7DQorCQkJCQlVTUxVdGlscy5hcHBseVN0ZXJlb3R5cGUobiwgTUFSVEVfTkZQQ09OU1RSQUlOVCk7DQorCQkJCQlOZnBDb25zdHJhaW50IHJ1bGUgPSBVTUxVdGlscy5nZXRTdGVyZW90eXBlQXBwbGljYXRpb24obiwgTmZwQ29uc3RyYWludC5jbGFzcyk7DQorDQorCQkJCQlWYWx1ZVNwZWNpZmljYXRpb24gdmFsdWVTcGVjID0gbi5jcmVhdGVTcGVjaWZpY2F0aW9uKCJjb3JlIiwgbnVsbCwgVU1MUGFja2FnZS5MaXRlcmFscy5MSVRFUkFMX1NUUklORyk7DQorCQkJCQlMaXRlcmFsU3RyaW5nIHZhbHVlID0gKExpdGVyYWxTdHJpbmcpIHZhbHVlU3BlYzsNCisJCQkJCXZhbHVlLnNldFZhbHVlKGNvcmUuZ2V0TmFtZSgpKTsNCisJCQkJCWFzc2lnbi5nZXRJbXBsaWVkQ29uc3RyYWludCgpLmFkZChydWxlKTsNCisJCQkJfQ0KKwkJCX0NCisJCX0NCisJfQ0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgZmlyc3QgQ0hHYVJlc291cmNlUGxhdGZvcm0gdGhhdCBpcyBmb3VuZCBpbnNpZGUgdGhlIGdpdmVuIHBhY2thZ2UuDQorCSAqDQorCSAqIEBwYXJhbSBjbXB2IHRoZSBjbXB2DQorCSAqIEByZXR1cm4gdGhlIG9uZSByZXNvdXJjZSBwbGF0Zm9ybSBwYWNrYWdlDQorCSAqLw0KKwlwdWJsaWMgc3RhdGljIFBhY2thZ2UgZ2V0T25lUmVzb3VyY2VQbGF0Zm9ybVBhY2thZ2UoUGFja2FnZSBjbXB2KSB7DQorCQkvKiBicmVhdGgtZmlyc3Qgc2VhcmNoICovDQorCQlmaW5hbCBMaW5rZWRMaXN0PFBhY2thZ2U+IGJyZWFkdGhGaXJzdExpc3QgPSBuZXcgTGlua2VkTGlzdDxQYWNrYWdlPigpOw0KKwkJYnJlYWR0aEZpcnN0TGlzdC5hZGRGaXJzdChjbXB2KTsNCisJCXdoaWxlICghYnJlYWR0aEZpcnN0TGlzdC5pc0VtcHR5KCkpIHsNCisJCQlmaW5hbCBQYWNrYWdlIGNhbmRpZGF0ZSA9IGJyZWFkdGhGaXJzdExpc3QucG9sbCgpOw0KKw0KKwkJCUNIR2FSZXNvdXJjZVBsYXRmb3JtIGEgPSBVTUxVdGlscy5nZXRTdGVyZW90eXBlQXBwbGljYXRpb24oY2FuZGlkYXRlLCBDSEdhUmVzb3VyY2VQbGF0Zm9ybS5jbGFzcyk7DQorDQorCQkJaWYgKGEgIT0gbnVsbCkNCisJCQkJcmV0dXJuIGNhbmRpZGF0ZTsNCisNCisJCQlmb3IgKGZpbmFsIFBhY2thZ2UgcCA6IGNhbmRpZGF0ZS5nZXROZXN0ZWRQYWNrYWdlcygpKSB7DQorCQkJCWJyZWFkdGhGaXJzdExpc3QuYWRkTGFzdChwKTsNCisJCQl9DQorCQl9DQorCQlyZXR1cm4gbnVsbDsNCisJfQ0KKw0KKwkvKioNCisJICogR2V0cyB0aGUgcmVzb3VyY2UgcGxhdGZvcm0gcGFja2FnZS4NCisJICoNCisJICogQHBhcmFtIGNtcHYgdGhlIGNtcHYNCisJICogQHJldHVybiB0aGUgcmVzb3VyY2UgcGxhdGZvcm0gcGFja2FnZQ0KKwkgKiBAZGVwcmVjYXRlZCBUaGlzIG1ldGhvZCByZXR1cm5zIG9ubHkgb25lIHBsYXRmb3JtIHBhY2thZ2UuIEluIHRoZSBuZXdlcg0KKwkgKiAgICAgICAgICAgICB2ZXJzaW9uIG9mIENIRVNTIHRoZXJlIGNhbiBiZSBtdWx0aXBsZSBwbGF0Zm9ybSBwYWNrYWdlcy4NCisJICogICAgICAgICAgICAgUmVwbGFjZSB3aXRoIGdldFJlc291cmNlUGxhdGZvcm1QYWNrYWdlcw0KKwkgKi8NCisJQERlcHJlY2F0ZWQNCisJcHVibGljIHN0YXRpYyBQYWNrYWdlIGdldFJlc291cmNlUGxhdGZvcm1QYWNrYWdlKFBhY2thZ2UgY21wdikgew0KKwkJLyogYnJlYXRoLWZpcnN0IHNlYXJjaCAqLw0KKwkJZmluYWwgTGlua2VkTGlzdDxQYWNrYWdlPiBicmVhZHRoRmlyc3RMaXN0ID0gbmV3IExpbmtlZExpc3Q8UGFja2FnZT4oKTsNCisJCWJyZWFkdGhGaXJzdExpc3QuYWRkRmlyc3QoY21wdik7DQorCQl3aGlsZSAoIWJyZWFkdGhGaXJzdExpc3QuaXNFbXB0eSgpKSB7DQorCQkJZmluYWwgUGFja2FnZSBjYW5kaWRhdGUgPSBicmVhZHRoRmlyc3RMaXN0LnBvbGwoKTsNCisNCisJCQlDSEdhUmVzb3VyY2VQbGF0Zm9ybSBhID0gVU1MVXRpbHMuZ2V0U3RlcmVvdHlwZUFwcGxpY2F0aW9uKGNhbmRpZGF0ZSwgQ0hHYVJlc291cmNlUGxhdGZvcm0uY2xhc3MpOw0KKw0KKwkJCWlmIChhICE9IG51bGwpDQorCQkJCXJldHVybiBjYW5kaWRhdGU7DQorDQorCQkJZm9yIChmaW5hbCBQYWNrYWdlIHAgOiBjYW5kaWRhdGUuZ2V0TmVzdGVkUGFja2FnZXMoKSkgew0KKwkJCQlicmVhZHRoRmlyc3RMaXN0LmFkZExhc3QocCk7DQorCQkJfQ0KKwkJfQ0KKwkJcmV0dXJuIG51bGw7DQorCX0NCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIGxpc3Qgb2YgQ0hHYVJlc291cmNlUGxhdGZvcm1zIGZvdW5kIGluc2lkZSB0aGUgdmlldyB3aXRoIHRoZSBnaXZlbiBuYW1lIGluIHRoZSBnaXZlbiBtb2RlbC4NCisJICoNCisJICogQHBhcmFtIHVtbE1vZGVsIHRoZSB1bWwgbW9kZWwNCisJICogQHBhcmFtIHZpZXdOYW1lIHRoZSB2aWV3IG5hbWUNCisJICogQHJldHVybiB0aGUgcmVzb3VyY2UgcGxhdGZvcm0gcGFja2FnZXMNCisJICogQHRocm93cyBNb2RlbEVycm9yIHRoZSBtb2RlbCBlcnJvcg0KKwkgKi8NCisJcHVibGljIHN0YXRpYyBFTGlzdDxQYWNrYWdlPiBnZXRSZXNvdXJjZVBsYXRmb3JtUGFja2FnZXMoTW9kZWwgdW1sTW9kZWwsIFN0cmluZyB2aWV3TmFtZSkgdGhyb3dzIE1vZGVsRXJyb3Igew0KKw0KKwkJUGFja2FnZSBwYWNrID0gQ0hFU1NQcm9maWxlTWFuYWdlci5nZXRWaWV3QnlTdGVyZW90eXBlKChNb2RlbCkgdW1sTW9kZWwsIHZpZXdOYW1lKTsNCisNCisJCWlmIChwYWNrID09IG51bGwpDQorCQkJdGhyb3cgbmV3IE1vZGVsRXJyb3Iodmlld05hbWUgKyAiIG5vdCBmb3VuZC4iKTsNCisJCS8vIFBhY2thZ2UgY21wdg0KKwkJLyogYnJlYXRoLWZpcnN0IHNlYXJjaCAqLw0KKw0KKwkJRUxpc3Q8UGFja2FnZT4gcmVzdWx0ID0gbmV3IEJhc2ljRUxpc3Q8UGFja2FnZT4oKTsNCisNCisJCWZpbmFsIExpbmtlZExpc3Q8UGFja2FnZT4gYnJlYWR0aEZpcnN0TGlzdCA9IG5ldyBMaW5rZWRMaXN0PFBhY2thZ2U+KCk7DQorCQlicmVhZHRoRmlyc3RMaXN0LmFkZEZpcnN0KHBhY2spOw0KKwkJd2hpbGUgKCFicmVhZHRoRmlyc3RMaXN0LmlzRW1wdHkoKSkgew0KKwkJCWZpbmFsIFBhY2thZ2UgY2FuZGlkYXRlID0gYnJlYWR0aEZpcnN0TGlzdC5wb2xsKCk7DQorDQorCQkJQ0hHYVJlc291cmNlUGxhdGZvcm0gYSA9IFVNTFV0aWxzLmdldFN0ZXJlb3R5cGVBcHBsaWNhdGlvbihjYW5kaWRhdGUsIENIR2FSZXNvdXJjZVBsYXRmb3JtLmNsYXNzKTsNCisNCisJCQlpZiAoYSAhPSBudWxsKQ0KKwkJCQlyZXN1bHQuYWRkKGNhbmRpZGF0ZSk7DQorCQkJLy8gcmV0dXJuIGNhbmRpZGF0ZTsNCisNCisJCQlmb3IgKGZpbmFsIFBhY2thZ2UgcCA6IGNhbmRpZGF0ZS5nZXROZXN0ZWRQYWNrYWdlcygpKSB7DQorCQkJCWJyZWFkdGhGaXJzdExpc3QuYWRkTGFzdChwKTsNCisJCQl9DQorCQl9DQorCQlyZXR1cm4gcmVzdWx0Ow0KKwkJLy8gcmV0dXJuIG51bGw7DQorCX0NCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIGxpc3Qgb2YgQ0hHYVJlc291cmNlUGxhdGZvcm1zIGZvdW5kIGluc2lkZSB0aGUgZ2l2ZW4gUGFja2FnZS4NCisJICoNCisJICogQHBhcmFtIGNtcHYgaXMgdGhlIGdpdmVuIHBhY2thZ2UNCisJICogQHJldHVybiB0aGUgcmVzb3VyY2UgcGxhdGZvcm0gcGFja2FnZXMNCisJICovDQorCXB1YmxpYyBzdGF0aWMgTGlzdDxQYWNrYWdlPiBnZXRSZXNvdXJjZVBsYXRmb3JtUGFja2FnZXMoUGFja2FnZSBjbXB2KSB7DQorCQlMaXN0PFBhY2thZ2U+IGNhbmRpZGF0ZXMgPSBuZXcgQXJyYXlMaXN0PFBhY2thZ2U+KCk7DQorCQkvKiBicmVhdGgtZmlyc3Qgc2VhcmNoICovDQorCQlmaW5hbCBMaW5rZWRMaXN0PFBhY2thZ2U+IGJyZWFkdGhGaXJzdExpc3QgPSBuZXcgTGlua2VkTGlzdDxQYWNrYWdlPigpOw0KKwkJYnJlYWR0aEZpcnN0TGlzdC5hZGRGaXJzdChjbXB2KTsNCisJCXdoaWxlICghYnJlYWR0aEZpcnN0TGlzdC5pc0VtcHR5KCkpIHsNCisJCQlmaW5hbCBQYWNrYWdlIGNhbmRpZGF0ZSA9IGJyZWFkdGhGaXJzdExpc3QucG9sbCgpOw0KKw0KKwkJCUNIR2FSZXNvdXJjZVBsYXRmb3JtIGEgPSBVTUxVdGlscy5nZXRTdGVyZW90eXBlQXBwbGljYXRpb24oY2FuZGlkYXRlLCBDSEdhUmVzb3VyY2VQbGF0Zm9ybS5jbGFzcyk7DQorDQorCQkJaWYgKGEgIT0gbnVsbCkNCisJCQkJY2FuZGlkYXRlcy5hZGQoY2FuZGlkYXRlKTsNCisNCisJCQlmb3IgKGZpbmFsIFBhY2thZ2UgcCA6IGNhbmRpZGF0ZS5nZXROZXN0ZWRQYWNrYWdlcygpKSB7DQorCQkJCWJyZWFkdGhGaXJzdExpc3QuYWRkTGFzdChwKTsNCisJCQl9DQorCQl9DQorCQlyZXR1cm4gY2FuZGlkYXRlczsNCisJfQ0KKw0KKwkvKioNCisJICogUmV0dXJucyBhIENvbXBvbmVudCB0aGF0IGlzIHN0ZXJlb3R5cGVkIGFzIENIR2FSZXNvdXJjZVBsYXRmb3JtIGluc2lkZSB0aGUgdmlldyB3aXRoIHRoZSBnaXZlbiBuYW1lIA0KKwkgKiBpbiB0aGUgZ2l2ZW4gbW9kZWwuDQorCSAqDQorCSAqIEBwYXJhbSB1bWxNb2RlbCB0aGUgdW1sIG1vZGVsDQorCSAqIEBwYXJhbSB2aWV3TmFtZSB0aGUgdmlldyBuYW1lDQorCSAqIEByZXR1cm4gdGhlIHJlc291cmNlIHBsYXRmb3JtIGNvbXBvbmVudA0KKwkgKiBAdGhyb3dzIE1vZGVsRXJyb3IgdGhlIG1vZGVsIGVycm9yDQorCSAqLw0KKwlwdWJsaWMgc3RhdGljIENvbXBvbmVudCBnZXRSZXNvdXJjZVBsYXRmb3JtQ29tcG9uZW50KE1vZGVsIHVtbE1vZGVsLCBTdHJpbmcgdmlld05hbWUpIHRocm93cyBNb2RlbEVycm9yIHsNCisJCVBhY2thZ2UgcGFyZW50ID0gQ0hFU1NQcm9maWxlTWFuYWdlci5nZXRWaWV3QnlTdGVyZW90eXBlKHVtbE1vZGVsLCB2aWV3TmFtZSk7DQorDQorCQlpZiAocGFyZW50ID09IG51bGwpDQorCQkJdGhyb3cgbmV3IE1vZGVsRXJyb3Iodmlld05hbWUgKyAiIG5vdCBmb3VuZC4iKTsNCisNCisJCS8qIGJyZWF0aC1maXJzdCBzZWFyY2ggKi8NCisJCWZpbmFsIExpbmtlZExpc3Q8RWxlbWVudD4gYnJlYWR0aEZpcnN0TGlzdCA9IG5ldyBMaW5rZWRMaXN0PEVsZW1lbnQ+KCk7DQorDQorCQlicmVhZHRoRmlyc3RMaXN0LmFkZEFsbChwYXJlbnQuZ2V0T3duZWRFbGVtZW50cygpKTsNCisJCXdoaWxlICghYnJlYWR0aEZpcnN0TGlzdC5pc0VtcHR5KCkpIHsNCisJCQlmaW5hbCBFbGVtZW50IHQgPSBicmVhZHRoRmlyc3RMaXN0LnBvbGwoKTsNCisNCisJCQlpZiAodCBpbnN0YW5jZW9mIENvbXBvbmVudCkgew0KKwkJCQlDb21wb25lbnQgY2FuZGlkYXRlID0gKENvbXBvbmVudCkgdDsNCisJCQkJQ0hHYVJlc291cmNlUGxhdGZvcm0gYSA9IFVNTFV0aWxzLmdldFN0ZXJlb3R5cGVBcHBsaWNhdGlvbihjYW5kaWRhdGUsIENIR2FSZXNvdXJjZVBsYXRmb3JtLmNsYXNzKTsNCisJCQkJaWYgKGEgIT0gbnVsbCkNCisJCQkJCXJldHVybiBjYW5kaWRhdGU7DQorCQkJfQ0KKwkJCWZvciAoZmluYWwgRWxlbWVudCBlIDogdC5nZXRPd25lZEVsZW1lbnRzKCkpIHsNCisJCQkJYnJlYWR0aEZpcnN0TGlzdC5hZGRMYXN0KGUpOw0KKwkJCX0NCisJCX0NCisNCisJCXRocm93IG5ldyBNb2RlbEVycm9yKCJDSEdhUmVzb3VyY2VQbGF0Zm9ybSBub3QgZm91bmQgaW4gIiArIHZpZXdOYW1lICsgIiB2aWV3LiIpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIEluc3RhbmNlU3BlY2lmaWNhdGlvbiBpcyBhIGZ1bmN0aW9uYWwgUGFydGl0aW9uLCBmYWxzZSBvdGhlcndpc2UuDQorCSAqDQorCSAqIEBwYXJhbSBlIHRoZSBlDQorCSAqIEByZXR1cm4gdHJ1ZSwgaWYgaXMgcGFydGl0aW9uIGluc3RhbmNlDQorCSAqLw0KKwlwdWJsaWMgc3RhdGljIGJvb2xlYW4gaXNQYXJ0aXRpb25JbnN0YW5jZShJbnN0YW5jZVNwZWNpZmljYXRpb24gZSkgew0KKwkJZm9yIChDbGFzc2lmaWVyIGMgOiBlLmdldENsYXNzaWZpZXJzKCkpIHsNCisNCisJCQlpZiAoVU1MVXRpbHMuZ2V0U3RlcmVvdHlwZUFwcGxpY2F0aW9uKGMsIEZ1bmN0aW9uYWxQYXJ0aXRpb24uY2xhc3MpICE9IG51bGwpDQorCQkJCXJldHVybiB0cnVlOw0KKw0KKwkJfQ0KKwkJcmV0dXJuIGZhbHNlOw0KKwl9DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIEluc3RhbmNlU3BlY2lmaWNhdGlvbiBpcyBhIENvbXBvbmVudEltcGxlbWVudGF0aW9uLCBmYWxzZSBvdGhlcndpc2UuDQorCSAqDQorCSAqIEBwYXJhbSBlIHRoZSBlDQorCSAqIEByZXR1cm4gdHJ1ZSwgaWYgaXMgY29tcG9uZW50IGluc3RhbmNlDQorCSAqLw0KKwlwdWJsaWMgc3RhdGljIGJvb2xlYW4gaXNDb21wb25lbnRJbnN0YW5jZShJbnN0YW5jZVNwZWNpZmljYXRpb24gZSkgew0KKwkJZm9yIChDbGFzc2lmaWVyIGMgOiBlLmdldENsYXNzaWZpZXJzKCkpIHsNCisJCQlpZiAoVU1MVXRpbHMuZ2V0U3RlcmVvdHlwZUFwcGxpY2F0aW9uKGMsIENvbXBvbmVudEltcGxlbWVudGF0aW9uLmNsYXNzKSAhPSBudWxsKQ0KKwkJCQlyZXR1cm4gdHJ1ZTsNCisJCX0NCisJCXJldHVybiBmYWxzZTsNCisJfQ0KKw0KKwkvKioNCisJICogQ2hlY2tzIGlmIGlzIGd1YXJkZWQuDQorCSAqDQorCSAqIEBwYXJhbSBzcGVjIHRoZSBzcGVjDQorCSAqIEByZXR1cm4gdHJ1ZSwgaWYgaXMgZ3VhcmRlZA0KKwkgKi8NCisJcHVibGljIHN0YXRpYyBib29sZWFuIGlzR3VhcmRlZChDSFJ0U3BlY2lmaWNhdGlvbiBzcGVjKSB7DQorCQlyZXR1cm4gc3BlYy5nZXRQcm90ZWN0aW9uKCkuZ2V0TmFtZSgpLmVxdWFscyhDYWxsQ29uY3VycmVuY3lLaW5kLkdVQVJERUQuZ2V0TmFtZSgpKTsNCisJfQ0KKw0KKwkvKioNCisJICogQ2hlY2tzIGlmIGlzIG9jYyBraW5kIHNwb3JhZGljIG9yIHBlcmlvZGljLg0KKwkgKg0KKwkgKiBAcGFyYW0gb2NjS2luZCB0aGUgb2NjIGtpbmQNCisJICogQHJldHVybiB0cnVlLCBpZiBpcyBvY2Mga2luZCBzcG9yYWRpYyBvciBwZXJpb2RpYw0KKwkgKi8NCisJcHVibGljIHN0YXRpYyBib29sZWFuIGlzT2NjS2luZFNwb3JhZGljT3JQZXJpb2RpYyhTdHJpbmcgb2NjS2luZCkgew0KKwkJaWYgKG9jY0tpbmQgPT0gbnVsbCkNCisJCQlyZXR1cm4gZmFsc2U7DQorCQlyZXR1cm4gaXNPY2NLaW5kU3BvcmFkaWMob2NjS2luZCkgfHwgaXNPY2NLaW5kUGVyaW9kaWMob2NjS2luZCk7DQorCX0NCisNCisJLyoqDQorCSAqIENoZWNrcyBpZiBpcyBvY2Mga2luZCBzcG9yYWRpYy4NCisJICoNCisJICogQHBhcmFtIG9jY0tpbmQgdGhlIG9jYyBraW5kDQorCSAqIEByZXR1cm4gdHJ1ZSwgaWYgaXMgb2NjIGtpbmQgc3BvcmFkaWMNCisJICovDQorCXB1YmxpYyBzdGF0aWMgYm9vbGVhbiBpc09jY0tpbmRTcG9yYWRpYyhTdHJpbmcgb2NjS2luZCkgew0KKwkJU3RyaW5nIHQgPSBvY2NLaW5kLnRvTG93ZXJDYXNlKCk7DQorCQlyZXR1cm4gdC5tYXRjaGVzKCIuKnNwb3JhZGljLioiKTsNCisJfQ0KKw0KKwkvKioNCisJICogQ2hlY2tzIGlmIGlzIG9jYyBraW5kIHBlcmlvZGljLg0KKwkgKg0KKwkgKiBAcGFyYW0gb2NjS2luZCB0aGUgb2NjIGtpbmQNCisJICogQHJldHVybiB0cnVlLCBpZiBpcyBvY2Mga2luZCBwZXJpb2RpYw0KKwkgKi8NCisJcHVibGljIHN0YXRpYyBib29sZWFuIGlzT2NjS2luZFBlcmlvZGljKFN0cmluZyBvY2NLaW5kKSB7DQorCQlTdHJpbmcgdCA9IG9jY0tpbmQudG9Mb3dlckNhc2UoKTsNCisJCXJldHVybiB0Lm1hdGNoZXMoIi4qcGVyaW9kaWMuKiIpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSBPY2NLaW5kSW5mbyB0aGF0IGNvcnJlc3BvbW5kcyB0byB0aGUgaW5wdXQgc3RyaW5nLg0KKwkgKg0KKwkgKiBAcGFyYW0gb2NjS2luZCB0aGUgU3RyaW5nIHdpdGggdGhlIG9jY3VycmVuY3kga2luZCBpbmZvcm1hdGlvbg0KKwkgKiBAcmV0dXJuIE9jY0tpbmRJbmZvDQorCSAqLw0KKwlwdWJsaWMgc3RhdGljIE9jY0tpbmRJbmZvIGdldE9jY0tpbmRJbmZvKFN0cmluZyBvY2NLaW5kKSB7DQorCQlTdHJpbmdQYXJzZXIgc3AgPSBuZXcgU3RyaW5nUGFyc2VyKCk7DQorCQlPY2NLaW5kSW5mbyBpbmZvID0gbmV3IE9jY0tpbmRJbmZvKCk7DQorCQlpZiAoaXNPY2NLaW5kU3BvcmFkaWMob2NjS2luZCkpIHsNCisJCQlpbmZvLnZhbHVlID0gc3AuZ2V0VmFsdWVQYXR0ZXJuKG9jY0tpbmQsICJtaW5JbnRlcmFycml2YWwiKTsNCisJCQlpbmZvLnR5cGUgPSAic3BvcmFkaWMiOw0KKwkJCWluZm8udW5pdCA9IHNwLmdldFVuaXRQYXR0ZXJuKG9jY0tpbmQsICJtaW5JbnRlcmFycml2YWwiKTsNCisJCX0gZWxzZSBpZiAob2NjS2luZC50b0xvd2VyQ2FzZSgpLm1hdGNoZXMoIi4qcGVyaW9kaWMuKiIpKSB7DQorCQkJaW5mby52YWx1ZSA9IHNwLmdldFZhbHVlUGF0dGVybihvY2NLaW5kLCAicGVyaW9kIik7DQorCQkJaW5mby51bml0ID0gc3AuZ2V0VW5pdFBhdHRlcm4ob2NjS2luZCwgInBlcmlvZCIpOw0KKwkJCWluZm8udHlwZSA9ICJwZXJpb2RpYyI7DQorCQl9IGVsc2Ugew0KKwkJCXJldHVybiBudWxsOw0KKwkJfQ0KKw0KKwkJcmV0dXJuIGluZm87DQorCX0NCisNCisJLyoqDQorCSAqIFJldHVybnMgYSBtYXAgd2l0aCB0aGUgQ29tcG9uZW50IHRvIFBhcnRpdGlvbiBhc3NpZ25tZW50cy4NCisJICoNCisJICogQHBhcmFtIHVtbE1vZGVsIHRoZSB1bWwgbW9kZWwNCisJICogQHBhcmFtIHBhcmVudCB0aGUgcGFyZW50DQorCSAqIEByZXR1cm4gdGhlIG1hcA0KKwkgKiBAdGhyb3dzIE1vZGVsRXJyb3IgdGhlIG1vZGVsIGVycm9yDQorCSAqLw0KKwlwdWJsaWMgc3RhdGljIE1hcDxJbnN0YW5jZVNwZWNpZmljYXRpb24sIFNldDxDSFJ0U3BlY2lmaWNhdGlvbj4+IGJ1aWxkUGFydGl0aW9uQ29tcG9uZW50TWFwKE1vZGVsIHVtbE1vZGVsLCBQYWNrYWdlIHBhcmVudCkgdGhyb3dzIE1vZGVsRXJyb3Igew0KKwkJTWFwPEluc3RhbmNlU3BlY2lmaWNhdGlvbiwgU2V0PENIUnRTcGVjaWZpY2F0aW9uPj4gbWFwID0gbmV3IEhhc2hNYXA8SW5zdGFuY2VTcGVjaWZpY2F0aW9uLCBTZXQ8Q0hSdFNwZWNpZmljYXRpb24+PigpOw0KKw0KKwkJRUxpc3Q8QXNzaWduPiBhc3NpZ25tZW50TGlzdCA9IFVNTFV0aWxzLmdldENvbXBvbmVudDJQYXJ0aXRpb25Bc3NpZ25tZW50cyh1bWxNb2RlbCwgQ0hFU1NQcm9maWxlTWFuYWdlci5DT01QT05FTlRfVklFVyk7DQorCQlpZiAoIWFzc2lnbm1lbnRMaXN0LmlzRW1wdHkoKSkgew0KKwkJCWZvciAoQXNzaWduIGFzc2lnbiA6IGFzc2lnbm1lbnRMaXN0KSB7DQorCQkJCWlmIChhc3NpZ24gPT0gbnVsbCkNCisJCQkJCWNvbnRpbnVlOw0KKwkJCQlmb3IgKEVsZW1lbnQgaSA6IGFzc2lnbi5nZXRGcm9tKCkpIHsNCisJCQkJCWlmIChpIGluc3RhbmNlb2YgSW5zdGFuY2VTcGVjaWZpY2F0aW9uKSB7DQorCQkJCQkJSW5zdGFuY2VTcGVjaWZpY2F0aW9uIGlpID0gKEluc3RhbmNlU3BlY2lmaWNhdGlvbikgaTsNCisJCQkJCQlwcm9jZXNzQ29tcG9uZW50SW5zdGFuY2UobWFwLCBhc3NpZ24sIGlpKTsNCisJCQkJCX0NCisJCQkJfQ0KKw0KKwkJCX0NCisJCX0NCisNCisJCXJldHVybiBtYXA7DQorCX0NCisNCisJLyoqDQorCSAqIFJldHVybnMgYSBtYXAgd2l0aCB0aGUgUGFydGl0aW9uIHRvIENvcmUgYXNzaWdubWVudHMuDQorCSAqDQorCSAqIEBwYXJhbSB1bWxNb2RlbCB0aGUgdW1sIG1vZGVsDQorCSAqIEByZXR1cm4gdGhlIG1hcA0KKwkgKiBAdGhyb3dzIE1vZGVsRXJyb3IgdGhlIG1vZGVsIGVycm9yDQorCSAqLw0KKwlwdWJsaWMgc3RhdGljIE1hcDxTdHJpbmcsIFNldDxJbnN0YW5jZVNwZWNpZmljYXRpb24+PiBidWlsZFBhcnRpdGlvbkNvcmVNYXAoTW9kZWwgdW1sTW9kZWwpIHRocm93cyBNb2RlbEVycm9yIHsNCisJCU1hcDxTdHJpbmcsIFNldDxJbnN0YW5jZVNwZWNpZmljYXRpb24+PiBtYXAgPSBuZXcgSGFzaE1hcDxTdHJpbmcsIFNldDxJbnN0YW5jZVNwZWNpZmljYXRpb24+PigpOw0KKw0KKwkJRUxpc3Q8QXNzaWduPiBhc3NpZ25tZW50TGlzdCA9IFVNTFV0aWxzLmdldFBhcnRpdGlvbjJDb3JlQXNzaWdubWVudHModW1sTW9kZWwsIENIRVNTUHJvZmlsZU1hbmFnZXIuREVQTE9ZTUVOVF9WSUVXKTsNCisJCWlmICghYXNzaWdubWVudExpc3QuaXNFbXB0eSgpKSB7DQorCQkJZm9yIChBc3NpZ24gYXNzaWduIDogYXNzaWdubWVudExpc3QpIHsNCisNCisJCQkJZm9yIChFbGVtZW50IGkgOiBhc3NpZ24uZ2V0RnJvbSgpKSB7DQorCQkJCQlpZiAoaSBpbnN0YW5jZW9mIEluc3RhbmNlU3BlY2lmaWNhdGlvbikgew0KKwkJCQkJCXByb2Nlc3NQYXJ0aXRpb25JbnN0YW5jZShtYXAsIGFzc2lnbik7DQorCQkJCQl9DQorCQkJCX0NCisNCisJCQl9DQorCQl9DQorCQlyZXR1cm4gbWFwOw0KKwl9DQorDQorCS8vIHB1YmxpYyBzdGF0aWMgTWFwPEluc3RhbmNlU3BlY2lmaWNhdGlvbiwgU2V0PENIUnRTcGVjaWZpY2F0aW9uPj4NCisJLy8gYnVpbGRQYXJ0aXRpb25Db21wb25lbnRNYXAoQ29tcG9uZW50IHBhcmVudCkgew0KKwkvLyBNYXA8SW5zdGFuY2VTcGVjaWZpY2F0aW9uLCBTZXQ8Q0hSdFNwZWNpZmljYXRpb24+PiBtYXAgPSBuZXcNCisJLy8gSGFzaE1hcDxJbnN0YW5jZVNwZWNpZmljYXRpb24sIFNldDxDSFJ0U3BlY2lmaWNhdGlvbj4+KCk7DQorCS8vIGZvciAoQ29tbWVudCBlbCA6IHBhcmVudC5nZXRPd25lZENvbW1lbnRzKCkpIHsNCisJLy8NCisJLy8gQ29tbWVudCBhc3NpZ25Db21tZW50ID0gKENvbW1lbnQpIGVsOw0KKwkvLyBBc3NpZ24gYXNzaWduID0gVU1MVXRpbHMuZ2V0U3RlcmVvdHlwZUFwcGxpY2F0aW9uKGFzc2lnbkNvbW1lbnQsDQorCS8vIEFzc2lnbi5jbGFzcyk7DQorCS8vIGlmIChhc3NpZ24gPT0gbnVsbCkNCisJLy8gY29udGludWU7DQorCS8vIGZvciAoRWxlbWVudCBpIDogYXNzaWduLmdldEZyb20oKSkgew0KKwkvLyBpZiAoaSBpbnN0YW5jZW9mIEluc3RhbmNlU3BlY2lmaWNhdGlvbikgew0KKwkvLyBJbnN0YW5jZVNwZWNpZmljYXRpb24gaWkgPSAoSW5zdGFuY2VTcGVjaWZpY2F0aW9uKSBpOw0KKwkvLyBwcm9jZXNzQ29tcG9uZW50SW5zdGFuY2UobWFwLCBhc3NpZ24sIGlpKTsNCisJLy8gfQ0KKwkvLyB9DQorCS8vDQorCS8vIH0NCisJLy8gcmV0dXJuIG1hcDsNCisJLy8gfQ0KKw0KKwkvKioNCisJICogUHJvY2VzcyBwYXJ0aXRpb24gaW5zdGFuY2UuDQorCSAqDQorCSAqIEBwYXJhbSBtYXAgdGhlIG1hcA0KKwkgKiBAcGFyYW0gYXNzaWduIHRoZSBhc3NpZ24NCisJICovDQorCXByaXZhdGUgc3RhdGljIHZvaWQgcHJvY2Vzc1BhcnRpdGlvbkluc3RhbmNlKE1hcDxTdHJpbmcsIFNldDxJbnN0YW5jZVNwZWNpZmljYXRpb24+PiBtYXAsIEFzc2lnbiBhc3NpZ24pIHsNCisNCisJCXRyeSB7DQorCQkJaWYgKGFzc2lnbi5nZXRJbXBsaWVkQ29uc3RyYWludCgpLnNpemUoKSA+IDApIHsNCisJCQkJZm9yIChPYmplY3QgYyA6IGFzc2lnbi5nZXRJbXBsaWVkQ29uc3RyYWludCgpLnRvQXJyYXkoKSkgew0KKwkJCQkJaWYgKGMgaW5zdGFuY2VvZiBOZnBDb25zdHJhaW50KSB7DQorCQkJCQkJVmFsdWVTcGVjaWZpY2F0aW9uIHggPSAoKE5mcENvbnN0cmFpbnQpIGMpLmdldEJhc2VfQ29uc3RyYWludCgpLmdldFNwZWNpZmljYXRpb24oKTsNCisJCQkJCQlpZiAoeCBpbnN0YW5jZW9mIExpdGVyYWxTdHJpbmcpIHsNCisJCQkJCQkJTGl0ZXJhbFN0cmluZyBzID0gKExpdGVyYWxTdHJpbmcpIHg7DQorCQkJCQkJCVN0cmluZyBjb3JlTmFtZSA9ICgoTmFtZWRFbGVtZW50KSBhc3NpZ24uZ2V0VG8oKS5nZXQoMCkpLmdldE5hbWUoKSArIHMuZ2V0VmFsdWUoKTsNCisJCQkJCQkJSW5zdGFuY2VTcGVjaWZpY2F0aW9uIHBhcnQgPSAoSW5zdGFuY2VTcGVjaWZpY2F0aW9uKSBhc3NpZ24uZ2V0RnJvbSgpLmdldCgwKTsNCisNCisJCQkJCQkJU2V0PEluc3RhbmNlU3BlY2lmaWNhdGlvbj4gdmFsdWUgPSBtYXAuZ2V0KGNvcmVOYW1lKTsNCisJCQkJCQkJaWYgKHZhbHVlID09IG51bGwpDQorCQkJCQkJCQl2YWx1ZSA9IG5ldyBIYXNoU2V0PEluc3RhbmNlU3BlY2lmaWNhdGlvbj4oKTsNCisJCQkJCQkJdmFsdWUuYWRkKHBhcnQpOw0KKwkJCQkJCQltYXAucHV0KGNvcmVOYW1lLCB2YWx1ZSk7DQorCQkJCQkJfQ0KKwkJCQkJfQ0KKw0KKwkJCQl9DQorCQkJfQ0KKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsNCisJCQkvLyBUT0RPIEF1dG8tZ2VuZXJhdGVkIGNhdGNoIGJsb2NrDQorCQkJZS5wcmludFN0YWNrVHJhY2UoKTsNCisJCX0NCisNCisJfQ0KKw0KKwkvKioNCisJICogUHJvY2VzcyBjb21wb25lbnQgaW5zdGFuY2UuDQorCSAqDQorCSAqIEBwYXJhbSBtYXAgdGhlIG1hcA0KKwkgKiBAcGFyYW0gYXNzaWduIHRoZSBhc3NpZ24NCisJICogQHBhcmFtIGluc3RhbmNlU3BlYyB0aGUgaW5zdGFuY2Ugc3BlYw0KKwkgKi8NCisJcHJpdmF0ZSBzdGF0aWMgdm9pZCBwcm9jZXNzQ29tcG9uZW50SW5zdGFuY2UoTWFwPEluc3RhbmNlU3BlY2lmaWNhdGlvbiwgU2V0PENIUnRTcGVjaWZpY2F0aW9uPj4gbWFwLCBBc3NpZ24gYXNzaWduLCBJbnN0YW5jZVNwZWNpZmljYXRpb24gaW5zdGFuY2VTcGVjKSB7DQorDQorCQlmb3IgKEVsZW1lbnQgZWxlbWVudCA6IGluc3RhbmNlU3BlYy5nZXRPd25lZEVsZW1lbnRzKCkpIHsNCisJCQlpZiAoZWxlbWVudCBpbnN0YW5jZW9mIFNsb3QpIHsNCisJCQkJU2xvdCBzbG90ID0gKFNsb3QpIGVsZW1lbnQ7DQorCQkJCUNIUnRQb3J0U2xvdCBjaFNsb3QgPSBVTUxVdGlscy5nZXRTdGVyZW90eXBlQXBwbGljYXRpb24oc2xvdCwgQ0hSdFBvcnRTbG90LmNsYXNzKTsNCisJCQkJaWYgKGNoU2xvdCAhPSBudWxsKSB7DQorCQkJCQlFTGlzdDxDSFJ0U3BlY2lmaWNhdGlvbj4gY2hTcGVjcyA9IGNoU2xvdC5nZXRDSF9SdFNwZWNpZmljYXRpb24oKTsNCisNCisJCQkJCWFkZFRvTWFwKG1hcCwgYXNzaWduLmdldFRvKCksIGNoU3BlY3MpOw0KKwkJCQl9DQorCQkJfQ0KKwkJfQ0KKwl9DQorDQorCS8qKg0KKwkgKiBBZGRzIHRoZSB0byBtYXAuDQorCSAqDQorCSAqIEBwYXJhbSBtYXAgdGhlIG1hcA0KKwkgKiBAcGFyYW0gdG8gdGhlIHRvDQorCSAqIEBwYXJhbSBjaFNwZWNzIHRoZSBjaCBzcGVjcw0KKwkgKi8NCisJLyogYWRkIG9ubHkgcGVyaW9kaWMgb3Igc3BvcmFkaWMgY29tcG9uZW50cyAqLw0KKwlwcml2YXRlIHN0YXRpYyB2b2lkIGFkZFRvTWFwKE1hcDxJbnN0YW5jZVNwZWNpZmljYXRpb24sIFNldDxDSFJ0U3BlY2lmaWNhdGlvbj4+IG1hcCwgRUxpc3Q8RWxlbWVudD4gdG8sIEVMaXN0PENIUnRTcGVjaWZpY2F0aW9uPiBjaFNwZWNzKSB7DQorCQlmb3IgKEVsZW1lbnQgcGFydGl0aW9uIDogdG8pIHsNCisJCQlpZiAocGFydGl0aW9uIGluc3RhbmNlb2YgSW5zdGFuY2VTcGVjaWZpY2F0aW9uKSB7DQorCQkJCUluc3RhbmNlU3BlY2lmaWNhdGlvbiBwID0gKEluc3RhbmNlU3BlY2lmaWNhdGlvbikgcGFydGl0aW9uOw0KKwkJCQlmb3IgKENIUnRTcGVjaWZpY2F0aW9uIGNoUnRTcGVjaWZpY2F0aW9uIDogY2hTcGVjcykgew0KKwkJCQkJU3RyaW5nIG9jY0tpbmQgPSBjaFJ0U3BlY2lmaWNhdGlvbi5nZXRPY2NLaW5kKCk7DQorCQkJCQlpZiAob2NjS2luZCAhPSBudWxsKSB7DQorCQkJCQkJaWYgKGlzT2NjS2luZFNwb3JhZGljT3JQZXJpb2RpYyhvY2NLaW5kKSkgew0KKwkJCQkJCQlhZGRUb01hcChtYXAsIHAsIGNoUnRTcGVjaWZpY2F0aW9uKTsNCisJCQkJCQl9DQorCQkJCQl9DQorCQkJCX0NCisJCQl9DQorCQl9DQorCX0NCisNCisJDQorCS8qKg0KKwkgKiBBZGRzIHRoZSB0byBtYXAuDQorCSAqDQorCSAqIEBwYXJhbSBtYXAgdGhlIG1hcA0KKwkgKiBAcGFyYW0gcCB0aGUgcA0KKwkgKiBAcGFyYW0gY2hSdFNwZWNpZmljYXRpb24gdGhlIGNoIHJ0IHNwZWNpZmljYXRpb24NCisJICovDQorCXByaXZhdGUgc3RhdGljIHZvaWQgYWRkVG9NYXAoTWFwPEluc3RhbmNlU3BlY2lmaWNhdGlvbiwgU2V0PENIUnRTcGVjaWZpY2F0aW9uPj4gbWFwLCBJbnN0YW5jZVNwZWNpZmljYXRpb24gcCwgQ0hSdFNwZWNpZmljYXRpb24gY2hSdFNwZWNpZmljYXRpb24pIHsNCisJCVNldDxDSFJ0U3BlY2lmaWNhdGlvbj4gdmFsdWUgPSBtYXAuZ2V0KHApOw0KKwkJaWYgKHZhbHVlID09IG51bGwpDQorCQkJdmFsdWUgPSBuZXcgSGFzaFNldDxDSFJ0U3BlY2lmaWNhdGlvbj4oKTsNCisJCXZhbHVlLmFkZChjaFJ0U3BlY2lmaWNhdGlvbik7DQorCQltYXAucHV0KHAsIHZhbHVlKTsNCisNCisJfQ0KKw0KKwkNCisJLyoqDQorCSAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gSW5zdGFuY2VTcGVjaWZpY2F0aW9uIGlzIHN0ZXJvdHlwZWQgYXMgQ0hfSHdQcm9jZXNzb3IuDQorCSAqDQorCSAqIEBwYXJhbSBlIHRoZSBlDQorCSAqIEByZXR1cm4gdHJ1ZSwgaWYgaXMgcHJvY2Vzc29yIGluc3RhbmNlDQorCSAqLw0KKwlwdWJsaWMgc3RhdGljIGJvb2xlYW4gaXNQcm9jZXNzb3JJbnN0YW5jZShJbnN0YW5jZVNwZWNpZmljYXRpb24gZSkgew0KKwkJZm9yIChDbGFzc2lmaWVyIGMgOiBlLmdldENsYXNzaWZpZXJzKCkpIHsNCisJCQlpZiAoVU1MVXRpbHMuZ2V0U3RlcmVvdHlwZUFwcGxpY2F0aW9uKGMsIENIX0h3UHJvY2Vzc29yLmNsYXNzKSAhPSBudWxsKQ0KKwkJCQlyZXR1cm4gdHJ1ZTsNCisJCX0NCisJCXJldHVybiBmYWxzZTsNCisJfQ0KKw0KKwkvKioNCisJICogY2hlY2sgaWYgYW4gaW5zdGFuY2Ugc3BlY2lmaWNhdGlvbiBpcyBhbiBpbnN0YW5jZSBvZiBhIE1BUlRFIERldmljZS4NCisJICoNCisJICogQHBhcmFtIGluc3RTcGVjIHRoZSBpbnN0IHNwZWMNCisJICogQHJldHVybiB0cnVlIGlmIHRoZSBpbnB1dCBpcyBhbiBpbnN0YW5jZSBvZiBhIE1BUlRFIERldmljZSwgZmFsc2UNCisJICogICAgICAgICBvdGhlcndpc2UuDQorCSAqLw0KKwlwdWJsaWMgc3RhdGljIGJvb2xlYW4gaXNEZXZpY2VJbnN0YW5jZShJbnN0YW5jZVNwZWNpZmljYXRpb24gaW5zdFNwZWMpIHsNCisJCUNsYXNzaWZpZXIgY2xhc3NpZmllciA9IGluc3RTcGVjLmdldENsYXNzaWZpZXJzKCkuZ2V0KDApOw0KKwkJRUxpc3Q8U3RlcmVvdHlwZT4gc3RlcmVvdHlwZUxpc3QgPSBjbGFzc2lmaWVyLmdldEFwcGxpZWRTdGVyZW90eXBlcygpOw0KKwkJZm9yIChTdGVyZW90eXBlIHRoZVN0ZXJlbyA6IHN0ZXJlb3R5cGVMaXN0KSB7DQorCQkJRU9iamVjdCBvYmplY3QgPSBjbGFzc2lmaWVyLmdldFN0ZXJlb3R5cGVBcHBsaWNhdGlvbih0aGVTdGVyZW8pOw0KKwkJCWlmIChvYmplY3QgaW5zdGFuY2VvZiBId0RldmljZSkgew0KKwkJCQlyZXR1cm4gdHJ1ZTsNCisJCQl9DQorCQl9DQorDQorCQlyZXR1cm4gZmFsc2U7DQorCX0NCisNCisJLyoqDQorCSAqIEdldHMgdGhlIG9uZSBwcm9jZXNzb3IuDQorCSAqDQorCSAqIEBwYXJhbSB1bWxNb2RlbCB0aGUgdW1sIG1vZGVsDQorCSAqIEByZXR1cm4gdGhlIG9uZSBwcm9jZXNzb3INCisJICovDQorCXB1YmxpYyBzdGF0aWMgQ0hfSHdQcm9jZXNzb3IgZ2V0T25lUHJvY2Vzc29yKE1vZGVsIHVtbE1vZGVsKSB7DQorCQlQYWNrYWdlIGRlcHYgPSBDSEVTU1Byb2ZpbGVNYW5hZ2VyLmdldFZpZXdCeVN0ZXJlb3R5cGUoKE1vZGVsKSB1bWxNb2RlbCwgQ0hFU1NQcm9maWxlTWFuYWdlci5ERVBMT1lNRU5UX1ZJRVcpOw0KKwkJZGVwdiA9IFF1ZXJ5VXRpbHMuZ2V0T25lUmVzb3VyY2VQbGF0Zm9ybVBhY2thZ2UoZGVwdik7DQorCQlpZiAoZGVwdiAhPSBudWxsKSB7DQorCQkJRUxpc3Q8RWxlbWVudD4gYWxsID0gZGVwdi5hbGxPd25lZEVsZW1lbnRzKCk7DQorCQkJZm9yIChFbGVtZW50IGVsZW1lbnQgOiBhbGwpIHsNCisJCQkJaWYgKGVsZW1lbnQgaW5zdGFuY2VvZiBJbnN0YW5jZVNwZWNpZmljYXRpb24pIHsNCisJCQkJCUluc3RhbmNlU3BlY2lmaWNhdGlvbiBlID0gKEluc3RhbmNlU3BlY2lmaWNhdGlvbikgZWxlbWVudDsNCisJCQkJCWlmIChlLmdldFF1YWxpZmllZE5hbWUoKSAhPSBudWxsICYmIFF1ZXJ5VXRpbHMuaXNQcm9jZXNzb3JJbnN0YW5jZShlKSkgew0KKwkJCQkJCUNIX0h3UHJvY2Vzc29yIHQgPSBVTUxVdGlscy5nZXRTdGVyZW90eXBlQXBwbGljYXRpb24oZSwgQ0hfSHdQcm9jZXNzb3IuY2xhc3MpOw0KKwkJCQkJCXJldHVybiB0Ow0KKwkJCQkJfQ0KKwkJCQl9DQorCQkJfQ0KKwkJfQ0KKwkJcmV0dXJuIG51bGw7DQorCX0NCisNCisJLyoqDQorCSAqIEdldHMgdGhlIGFsbCBwcm9jZXNzb3IgaW5zdGFuY2VzLg0KKwkgKg0KKwkgKiBAcGFyYW0gdW1sTW9kZWwgdGhlIHVtbCBtb2RlbA0KKwkgKiBAcmV0dXJuIHRoZSBhbGwgcHJvY2Vzc29yIGluc3RhbmNlcw0KKwkgKiBAdGhyb3dzIE1vZGVsRXJyb3IgdGhlIG1vZGVsIGVycm9yDQorCSAqLw0KKwlwdWJsaWMgc3RhdGljIEVMaXN0PENIX0h3UHJvY2Vzc29yPiBnZXRBbGxQcm9jZXNzb3JJbnN0YW5jZXMoTW9kZWwgdW1sTW9kZWwpIHRocm93cyBNb2RlbEVycm9yIHsNCisJCUVMaXN0PENIX0h3UHJvY2Vzc29yPiBwcm9jZXNzb3JzID0gbmV3IEJhc2ljRUxpc3Q8Q0hfSHdQcm9jZXNzb3I+KCk7DQorCQlQYWNrYWdlIGRlcHYgPSBDSEVTU1Byb2ZpbGVNYW5hZ2VyLmdldFZpZXdCeVN0ZXJlb3R5cGUoKE1vZGVsKSB1bWxNb2RlbCwgQ0hFU1NQcm9maWxlTWFuYWdlci5ERVBMT1lNRU5UX1ZJRVcpOw0KKw0KKwkJaWYgKGRlcHYgPT0gbnVsbCkNCisJCQl0aHJvdyBuZXcgTW9kZWxFcnJvcigiRGVwbG95bWVudCB2aWV3IG5vdCBmb3VuZC4iKTsNCisNCisJCUxpc3Q8UGFja2FnZT4gcGxhdGZvcm1QYWNrYWdlcyA9IFF1ZXJ5VXRpbHMuZ2V0UmVzb3VyY2VQbGF0Zm9ybVBhY2thZ2VzKGRlcHYpOw0KKw0KKwkJaWYgKHBsYXRmb3JtUGFja2FnZXMuaXNFbXB0eSgpKQ0KKwkJCXRocm93IG5ldyBNb2RlbEVycm9yKCJDSEdhUmVzb3VyY2VQbGF0Zm9ybSBub3QgZm91bmQgaW4gRGVwbG95bWVudCB2aWV3LiIpOw0KKw0KKwkJZm9yIChQYWNrYWdlIHBwIDogcGxhdGZvcm1QYWNrYWdlcykgew0KKwkJCUVMaXN0PEVsZW1lbnQ+IGFsbCA9IHBwLmFsbE93bmVkRWxlbWVudHMoKTsNCisJCQlmb3IgKEVsZW1lbnQgZWxlbWVudCA6IGFsbCkgew0KKwkJCQlpZiAoZWxlbWVudCBpbnN0YW5jZW9mIEluc3RhbmNlU3BlY2lmaWNhdGlvbikgew0KKwkJCQkJSW5zdGFuY2VTcGVjaWZpY2F0aW9uIGUgPSAoSW5zdGFuY2VTcGVjaWZpY2F0aW9uKSBlbGVtZW50Ow0KKwkJCQkJaWYgKGUuZ2V0UXVhbGlmaWVkTmFtZSgpICE9IG51bGwgJiYgUXVlcnlVdGlscy5pc1Byb2Nlc3Nvckluc3RhbmNlKGUpKSB7DQorCQkJCQkJQ0hfSHdQcm9jZXNzb3IgdCA9IFVNTFV0aWxzLmdldFN0ZXJlb3R5cGVBcHBsaWNhdGlvbihlLCBDSF9Id1Byb2Nlc3Nvci5jbGFzcyk7DQorCQkJCQkJcHJvY2Vzc29ycy5hZGQodCk7DQorCQkJCQl9DQorCQkJCX0NCisJCQl9DQorCQl9DQorDQorCQlpZiAocHJvY2Vzc29ycy5zaXplKCkgPT0gMCkNCisJCQl0aHJvdyBuZXcgTW9kZWxFcnJvcigiUHJvY2Vzc29ycyBub3QgZm91bmQuIik7DQorDQorCQlyZXR1cm4gcHJvY2Vzc29yczsNCisJfQ0KKw0KKwkvKioNCisJICogR2V0cyB0aGUgYWxsIHByb2Nlc3NvciBpbnN0YW5jZXMgaW4gcGFja2FnZS4NCisJICoNCisJICogQHBhcmFtIHRoZVBhY2thZ2UgdGhlIHRoZSBwYWNrYWdlDQorCSAqIEByZXR1cm4gdGhlIGFsbCBwcm9jZXNzb3IgaW5zdGFuY2VzIGluIHBhY2thZ2UNCisJICogQHRocm93cyBNb2RlbEVycm9yIHRoZSBtb2RlbCBlcnJvcg0KKwkgKi8NCisJcHVibGljIHN0YXRpYyBFTGlzdDxDSF9Id1Byb2Nlc3Nvcj4gZ2V0QWxsUHJvY2Vzc29ySW5zdGFuY2VzSW5QYWNrYWdlKFBhY2thZ2UgdGhlUGFja2FnZSkgdGhyb3dzIE1vZGVsRXJyb3Igew0KKwkJRUxpc3Q8Q0hfSHdQcm9jZXNzb3I+IHByb2Nlc3NvcnMgPSBuZXcgQmFzaWNFTGlzdDxDSF9Id1Byb2Nlc3Nvcj4oKTsNCisNCisJCUVMaXN0PEVsZW1lbnQ+IGFsbCA9IHRoZVBhY2thZ2UuYWxsT3duZWRFbGVtZW50cygpOw0KKwkJZm9yIChFbGVtZW50IGVsZW1lbnQgOiBhbGwpIHsNCisJCQlpZiAoZWxlbWVudCBpbnN0YW5jZW9mIEluc3RhbmNlU3BlY2lmaWNhdGlvbikgew0KKwkJCQlJbnN0YW5jZVNwZWNpZmljYXRpb24gZSA9IChJbnN0YW5jZVNwZWNpZmljYXRpb24pIGVsZW1lbnQ7DQorCQkJCWlmIChlLmdldFF1YWxpZmllZE5hbWUoKSAhPSBudWxsICYmIFF1ZXJ5VXRpbHMuaXNQcm9jZXNzb3JJbnN0YW5jZShlKSkgew0KKwkJCQkJQ0hfSHdQcm9jZXNzb3IgdCA9IFVNTFV0aWxzLmdldFN0ZXJlb3R5cGVBcHBsaWNhdGlvbihlLCBDSF9Id1Byb2Nlc3Nvci5jbGFzcyk7DQorCQkJCQlwcm9jZXNzb3JzLmFkZCh0KTsNCisJCQkJfQ0KKwkJCX0NCisJCX0NCisJCWlmIChwcm9jZXNzb3JzLnNpemUoKSA9PSAwKQ0KKwkJCXRocm93IG5ldyBNb2RlbEVycm9yKCJQcm9jZXNzb3JzIG5vdCBmb3VuZC4iKTsNCisNCisJCXJldHVybiBwcm9jZXNzb3JzOw0KKwl9DQorDQorCQ0KKwkvKioNCisJICogRmlsdGVyIG11bHRpIGNvcmUgcHJvY2Vzc29ycy4NCisJICoNCisJICogQHBhcmFtIHByb2Nlc3NvcnMgdGhlIHByb2Nlc3NvcnMNCisJICogQHJldHVybiB0aGUgZSBsaXN0DQorCSAqLw0KKwlwdWJsaWMgc3RhdGljIEVMaXN0PENIX0h3UHJvY2Vzc29yPiBmaWx0ZXJNdWx0aUNvcmVQcm9jZXNzb3JzKEVMaXN0PENIX0h3UHJvY2Vzc29yPiBwcm9jZXNzb3JzKSB7DQorCQlFTGlzdDxDSF9Id1Byb2Nlc3Nvcj4gY2FuZGlkYXRlcyA9IG5ldyBCYXNpY0VMaXN0PENIX0h3UHJvY2Vzc29yPigpOw0KKwkJZm9yIChDSF9Id1Byb2Nlc3NvciBwcm9jZXNzb3IgOiBwcm9jZXNzb3JzKSB7DQorCQkJaWYgKGdldENvcmVzKHByb2Nlc3Nvcikuc2l6ZSgpID4gMSkNCisJCQkJY2FuZGlkYXRlcy5hZGQocHJvY2Vzc29yKTsNCisJCX0NCisJCXJldHVybiBjYW5kaWRhdGVzOw0KKw0KKwl9DQorDQorCQ0KKwkvKioNCisJICogR2V0cyB0aGUgY29yZXMuDQorCSAqDQorCSAqIEBwYXJhbSBwcm9jZXNzb3IgdGhlIHByb2Nlc3Nvcg0KKwkgKiBAcmV0dXJuIHRoZSBjb3Jlcw0KKwkgKi8NCisJcHVibGljIHN0YXRpYyBFTGlzdDxDSENvcmU+IGdldENvcmVzKENIX0h3UHJvY2Vzc29yIHByb2Nlc3Nvcikgew0KKwkJSW5zdGFuY2VTcGVjaWZpY2F0aW9uIHByb2Nlc3NvckJhc2VJbnN0ID0gcHJvY2Vzc29yLmdldEJhc2VfSW5zdGFuY2VTcGVjaWZpY2F0aW9uKCk7DQorCQlDb21wb25lbnQgcHJvY2Vzc29yQ29tcG9uZW50ID0gKENvbXBvbmVudCkgcHJvY2Vzc29yQmFzZUluc3QuZ2V0Q2xhc3NpZmllcnMoKS5nZXQoMCk7DQorDQorCQlTdGVyZW90eXBlIGNoSHdQcm9jZXNzb3JTdGVyZW8gPSBwcm9jZXNzb3JDb21wb25lbnQuZ2V0QXBwbGllZFN0ZXJlb3R5cGUoQ29uc3RhbnRzLkNIX0hXUFJPQ0VTU09SKTsNCisJCUNIX0h3UHJvY2Vzc29yIGNoSHdQcm9jID0gKENIX0h3UHJvY2Vzc29yKSBwcm9jZXNzb3JDb21wb25lbnQuZ2V0U3RlcmVvdHlwZUFwcGxpY2F0aW9uKGNoSHdQcm9jZXNzb3JTdGVyZW8pOw0KKw0KKwkJU3RyaW5nIGNvcmVOdW1iZXIgPSBudWxsOw0KKwkJY29yZU51bWJlciA9IGNoSHdQcm9jLmdldE5iQ29yZXMoKTsNCisJCWludCBpY29yZU51bWJlciA9IDE7DQorCQl0cnkgew0KKwkJCWljb3JlTnVtYmVyID0gSW50ZWdlci5wYXJzZUludChjb3JlTnVtYmVyKTsNCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7DQorCQkJaWNvcmVOdW1iZXIgPSAxOw0KKwkJfQ0KKwkJRUxpc3Q8Q0hDb3JlPiBjb3JlcyA9IG5ldyBCYXNpY0VMaXN0PENIQ29yZT4oKTsNCisJCWZvciAoaW50IGkgPSAwOyBpIDwgaWNvcmVOdW1iZXI7IGkrKykgew0KKwkJCWNvcmVzLmFkZChuZXcgQ0hDb3JlKHByb2Nlc3NvciwgUXVlcnlVdGlscy5idWlsZENvcmVOYW1lKGkpKSk7DQorCQl9DQorCQlyZXR1cm4gY29yZXM7DQorCX0NCisNCisJDQorCS8qKg0KKwkgKiBHZXRzIHRoZSBhbGwgcGFydGl0aW9uIGluc3RhbmNlcy4NCisJICoNCisJICogQHBhcmFtIHVtbE1vZGVsIHRoZSB1bWwgbW9kZWwNCisJICogQHJldHVybiB0aGUgYWxsIHBhcnRpdGlvbiBpbnN0YW5jZXMNCisJICogQHRocm93cyBNb2RlbEVycm9yIHRoZSBtb2RlbCBlcnJvcg0KKwkgKi8NCisJcHVibGljIHN0YXRpYyBFTGlzdDxJbnN0YW5jZVNwZWNpZmljYXRpb24+IGdldEFsbFBhcnRpdGlvbkluc3RhbmNlcyhNb2RlbCB1bWxNb2RlbCkgdGhyb3dzIE1vZGVsRXJyb3Igew0KKw0KKwkJUGFja2FnZSBjbXB2ID0gQ0hFU1NQcm9maWxlTWFuYWdlci5nZXRWaWV3QnlTdGVyZW90eXBlKHVtbE1vZGVsLCBDSEVTU1Byb2ZpbGVNYW5hZ2VyLkNPTVBPTkVOVF9WSUVXKTsNCisNCisJCWlmIChjbXB2ID09IG51bGwpDQorCQkJdGhyb3cgbmV3IE1vZGVsRXJyb3IoIkNvbXBvbmVudCB2aWV3IG5vdCBmb3VuZC4iKTsNCisNCisJCWNtcHYgPSBRdWVyeVV0aWxzLmdldE9uZVJlc291cmNlUGxhdGZvcm1QYWNrYWdlKGNtcHYpOw0KKw0KKwkJaWYgKGNtcHYgPT0gbnVsbCkNCisJCQl0aHJvdyBuZXcgTW9kZWxFcnJvcigiQ0hHYVJlc291cmNlUGxhdGZvcm0gbm90IGZvdW5kIGluIENvbXBvbmVudCBWaWV3LiIpOw0KKw0KKwkJRUxpc3Q8RWxlbWVudD4gYWxsID0gY21wdi5hbGxPd25lZEVsZW1lbnRzKCk7DQorCQlFTGlzdDxJbnN0YW5jZVNwZWNpZmljYXRpb24+IHBhcnRpdGlvbnMgPSBuZXcgQmFzaWNFTGlzdDxJbnN0YW5jZVNwZWNpZmljYXRpb24+KCk7DQorCQlmb3IgKEVsZW1lbnQgZWxlbWVudCA6IGFsbCkgew0KKwkJCWlmICghKGVsZW1lbnQgaW5zdGFuY2VvZiBJbnN0YW5jZVNwZWNpZmljYXRpb24pKQ0KKwkJCQljb250aW51ZTsNCisNCisJCQlJbnN0YW5jZVNwZWNpZmljYXRpb24gaXMgPSAoSW5zdGFuY2VTcGVjaWZpY2F0aW9uKSBlbGVtZW50Ow0KKw0KKwkJCWlmICghKGlzLmdldFF1YWxpZmllZE5hbWUoKSAhPSBudWxsICYmIFF1ZXJ5VXRpbHMuaXNQYXJ0aXRpb25JbnN0YW5jZShpcykpKQ0KKwkJCQljb250aW51ZTsNCisJCQlwYXJ0aXRpb25zLmFkZChpcyk7DQorCQl9DQorDQorCQlpZiAocGFydGl0aW9ucy5zaXplKCkgPT0gMCkNCisJCQl0aHJvdyBuZXcgTW9kZWxFcnJvcigiUGFydGl0aW9uIEluc3RhbmNlcyBub3QgZm91bmQuIik7DQorDQorCQlyZXR1cm4gcGFydGl0aW9uczsNCisJfQ0KKw0KKwkNCisJLyoqDQorCSAqIEdldHMgdGhlIGFsbCBjb21wb25lbnQgaW5zdGFuY2VzLg0KKwkgKg0KKwkgKiBAcGFyYW0gdW1sTW9kZWwgdGhlIHVtbCBtb2RlbA0KKwkgKiBAcmV0dXJuIHRoZSBhbGwgY29tcG9uZW50IGluc3RhbmNlcw0KKwkgKiBAdGhyb3dzIE1vZGVsRXJyb3IgdGhlIG1vZGVsIGVycm9yDQorCSAqLw0KKwlwdWJsaWMgc3RhdGljIEVMaXN0PEluc3RhbmNlU3BlY2lmaWNhdGlvbj4gZ2V0QWxsQ29tcG9uZW50SW5zdGFuY2VzKE1vZGVsIHVtbE1vZGVsKSB0aHJvd3MgTW9kZWxFcnJvciB7DQorDQorCQlQYWNrYWdlIGNtcHYgPSBDSEVTU1Byb2ZpbGVNYW5hZ2VyLmdldFZpZXdCeVN0ZXJlb3R5cGUodW1sTW9kZWwsIENIRVNTUHJvZmlsZU1hbmFnZXIuQ09NUE9ORU5UX1ZJRVcpOw0KKw0KKwkJaWYgKGNtcHYgPT0gbnVsbCkNCisJCQl0aHJvdyBuZXcgTW9kZWxFcnJvcigiQ29tcG9uZW50IHZpZXcgbm90IGZvdW5kLiIpOw0KKw0KKwkJY21wdiA9IFF1ZXJ5VXRpbHMuZ2V0T25lUmVzb3VyY2VQbGF0Zm9ybVBhY2thZ2UoY21wdik7DQorDQorCQlpZiAoY21wdiA9PSBudWxsKQ0KKwkJCXRocm93IG5ldyBNb2RlbEVycm9yKCJDSEdhUmVzb3VyY2VQbGF0Zm9ybSBub3QgZm91bmQgaW4gQ29tcG9uZW50IFZpZXcuIik7DQorDQorCQlFTGlzdDxFbGVtZW50PiBhbGwgPSBjbXB2LmFsbE93bmVkRWxlbWVudHMoKTsNCisJCUVMaXN0PEluc3RhbmNlU3BlY2lmaWNhdGlvbj4gY29tcG9uZW50cyA9IG5ldyBCYXNpY0VMaXN0PEluc3RhbmNlU3BlY2lmaWNhdGlvbj4oKTsNCisJCWZvciAoRWxlbWVudCBlbGVtZW50IDogYWxsKSB7DQorCQkJaWYgKCEoZWxlbWVudCBpbnN0YW5jZW9mIEluc3RhbmNlU3BlY2lmaWNhdGlvbikpDQorCQkJCWNvbnRpbnVlOw0KKw0KKwkJCUluc3RhbmNlU3BlY2lmaWNhdGlvbiBpcyA9IChJbnN0YW5jZVNwZWNpZmljYXRpb24pIGVsZW1lbnQ7DQorDQorCQkJaWYgKCEoaXMuZ2V0UXVhbGlmaWVkTmFtZSgpICE9IG51bGwgJiYgUXVlcnlVdGlscy5pc0NvbXBvbmVudEluc3RhbmNlKGlzKSkpDQorCQkJCWNvbnRpbnVlOw0KKwkJCWNvbXBvbmVudHMuYWRkKGlzKTsNCisNCisJCX0NCisJCWlmIChjb21wb25lbnRzLnNpemUoKSA9PSAwKQ0KKwkJCXRocm93IG5ldyBNb2RlbEVycm9yKCJDb21wb25lbnQgSW5zdGFuY2VzIG5vdCBmb3VuZC4iKTsNCisNCisJCXJldHVybiBjb21wb25lbnRzOw0KKwl9DQorDQorCQ0KKwkvKioNCisJICogR2V0cyB0aGUgYWxsIHRhc2sgaW5zdGFuY2VzLg0KKwkgKg0KKwkgKiBAcGFyYW0gdW1sTW9kZWwgdGhlIHVtbCBtb2RlbA0KKwkgKiBAcmV0dXJuIHRoZSBhbGwgdGFzayBpbnN0YW5jZXMNCisJICogQHRocm93cyBNb2RlbEVycm9yIHRoZSBtb2RlbCBlcnJvcg0KKwkgKi8NCisJcHVibGljIHN0YXRpYyBFTGlzdDxDSFRhc2s+IGdldEFsbFRhc2tJbnN0YW5jZXMoTW9kZWwgdW1sTW9kZWwpIHRocm93cyBNb2RlbEVycm9yIHsNCisNCisJCUVMaXN0PENIVGFzaz4gdGFza3MgPSBuZXcgQmFzaWNFTGlzdDxDSFRhc2s+KCk7DQorDQorCQlFTGlzdDxJbnN0YW5jZVNwZWNpZmljYXRpb24+IHggPSBnZXRBbGxDb21wb25lbnRJbnN0YW5jZXModW1sTW9kZWwpOw0KKwkJZm9yIChJbnN0YW5jZVNwZWNpZmljYXRpb24gaW5zdGFuY2VTcGVjaWZpY2F0aW9uIDogeCkgew0KKwkJCWZvciAoRWxlbWVudCBlbGVtZW50MSA6IGluc3RhbmNlU3BlY2lmaWNhdGlvbi5nZXRPd25lZEVsZW1lbnRzKCkpIHsNCisNCisJCQkJaWYgKCEoZWxlbWVudDEgaW5zdGFuY2VvZiBTbG90KSkNCisJCQkJCWNvbnRpbnVlOw0KKw0KKwkJCQlTbG90IHNsb3QgPSAoU2xvdCkgZWxlbWVudDE7DQorCQkJCUNIUnRQb3J0U2xvdCBjaFNsb3QgPSBVTUxVdGlscy5nZXRTdGVyZW90eXBlQXBwbGljYXRpb24oc2xvdCwgQ0hSdFBvcnRTbG90LmNsYXNzKTsNCisJCQkJaWYgKGNoU2xvdCA9PSBudWxsKQ0KKwkJCQkJY29udGludWU7DQorDQorCQkJCUVMaXN0PENIUnRTcGVjaWZpY2F0aW9uPiBjaFNwZWNzID0gY2hTbG90LmdldENIX1J0U3BlY2lmaWNhdGlvbigpOw0KKw0KKwkJCQlmb3IgKENIUnRTcGVjaWZpY2F0aW9uIGNoUnRTcGVjaWZpY2F0aW9uIDogY2hTcGVjcykgew0KKwkJCQkJdGFza3MuYWRkKG5ldyBDSFRhc2soY2hTbG90LCBjaFJ0U3BlY2lmaWNhdGlvbikpOw0KKwkJCQl9DQorCQkJfQ0KKwkJfQ0KKwkJaWYgKHRhc2tzLnNpemUoKSA9PSAwKQ0KKwkJCXRocm93IG5ldyBNb2RlbEVycm9yKCJUYXNrcyBJbnN0YW5jZXMgbm90IGZvdW5kLiIpOw0KKw0KKwkJcmV0dXJuIHRhc2tzOw0KKwl9DQorDQorCS8qKg0KKwkgKiBEZWxldGUgdGFzayAyIGNvcmUgYXNzb2NpYXRpb25zLg0KKwkgKg0KKwkgKiBAcGFyYW0gaHdTeXN0ZW0gdGhlIGh3IHN5c3RlbQ0KKwkgKi8NCisJcHVibGljIHN0YXRpYyB2b2lkIGRlbGV0ZVRhc2syQ29yZUFzc29jaWF0aW9ucyhDb21wb25lbnQgaHdTeXN0ZW0pIHsNCisJCWRlbGV0ZUFzc29jaWF0aW9ucyhod1N5c3RlbSwgVEFTS19UT19DT1JFKTsNCisJfQ0KKw0KKwkvKioNCisJICogRGVsZXRlIGNvbXBvbmVudCAyIGNvcmUgYXNzb2NpYXRpb25zLg0KKwkgKg0KKwkgKiBAcGFyYW0gaHdTeXN0ZW0gdGhlIGh3IHN5c3RlbQ0KKwkgKi8NCisJcHVibGljIHN0YXRpYyB2b2lkIGRlbGV0ZUNvbXBvbmVudDJDb3JlQXNzb2NpYXRpb25zKENvbXBvbmVudCBod1N5c3RlbSkgew0KKwkJZGVsZXRlQXNzb2NpYXRpb25zKGh3U3lzdGVtLCBDT01QT05FTlRfVE9fQ09SRSk7DQorCX0NCisNCisJLyoqDQorCSAqIERlbGV0ZSBwYXJ0aXRpb24gMiBjb3JlIGFzc29jaWF0aW9ucy4NCisJICoNCisJICogQHBhcmFtIGh3U3lzdGVtIHRoZSBodyBzeXN0ZW0NCisJICovDQorCXB1YmxpYyBzdGF0aWMgdm9pZCBkZWxldGVQYXJ0aXRpb24yQ29yZUFzc29jaWF0aW9ucyhDb21wb25lbnQgaHdTeXN0ZW0pIHsNCisJCWRlbGV0ZUFzc29jaWF0aW9ucyhod1N5c3RlbSwgUEFSVElUSU9OX1RPX0NPUkUpOw0KKwl9DQorDQorCQ0KKwkvKioNCisJICogQnVpbGRzIHRoZSBpbnN0YW5jZSAyIGNvcmUgYXNzaWdubWVudHMuDQorCSAqDQorCSAqIEBwYXJhbSBod1N5c3RlbSB0aGUgaHcgc3lzdGVtDQorCSAqIEBwYXJhbSByZXN1bHQgdGhlIHJlc3VsdA0KKwkgKi8NCisJcHVibGljIHN0YXRpYyB2b2lkIGJ1aWxkSW5zdGFuY2UyQ29yZUFzc2lnbm1lbnRzKENvbXBvbmVudCBod1N5c3RlbSwgTWFwPENIQ29yZSwgTGlua2VkSGFzaFNldDxPYmplY3Q+PiByZXN1bHQpIHsNCisNCisJCWZvciAoQ0hDb3JlIGNvcmUgOiByZXN1bHQua2V5U2V0KCkpIHsNCisJCQlmb3IgKE9iamVjdCBvIDogcmVzdWx0LmdldChjb3JlKSkgew0KKwkJCQlpZiAobyBpbnN0YW5jZW9mIEluc3RhbmNlU3BlY2lmaWNhdGlvbikgew0KKwkJCQkJSW5zdGFuY2VTcGVjaWZpY2F0aW9uIGNvbXBvbmVudEluc3QgPSAoSW5zdGFuY2VTcGVjaWZpY2F0aW9uKSBvOw0KKwkJCQkJQ29tbWVudCBjID0gaHdTeXN0ZW0uY3JlYXRlT3duZWRDb21tZW50KCk7DQorCQkJCQlVTUxVdGlscy5hcHBseVN0ZXJlb3R5cGUoYywgTUFSVEVfQVNTSUdOKTsNCisJCQkJCUFzc2lnbiBhc3NpZ24gPSBVTUxVdGlscy5nZXRTdGVyZW90eXBlQXBwbGljYXRpb24oYywgQXNzaWduLmNsYXNzKTsNCisJCQkJCWFzc2lnbi5nZXRGcm9tKCkuYWRkKGNvbXBvbmVudEluc3QpOw0KKwkJCQkJYXNzaWduLmdldFRvKCkuYWRkKGNvcmUuZ2V0UHJvY2Vzc29ySW5zdGFuY2UoKSk7DQorDQorCQkJCQlDb25zdHJhaW50IG4gPSBod1N5c3RlbS5jcmVhdGVPd25lZFJ1bGUoY29yZS5nZXROYW1lKCkpOw0KKwkJCQkJVU1MVXRpbHMuYXBwbHlTdGVyZW90eXBlKG4sIE1BUlRFX05GUENPTlNUUkFJTlQpOw0KKwkJCQkJTmZwQ29uc3RyYWludCBydWxlID0gVU1MVXRpbHMuZ2V0U3RlcmVvdHlwZUFwcGxpY2F0aW9uKG4sIE5mcENvbnN0cmFpbnQuY2xhc3MpOw0KKw0KKwkJCQkJVmFsdWVTcGVjaWZpY2F0aW9uIHZhbHVlU3BlYyA9IG4uY3JlYXRlU3BlY2lmaWNhdGlvbigiY29yZSIsIG51bGwsIFVNTFBhY2thZ2UuTGl0ZXJhbHMuTElURVJBTF9TVFJJTkcpOw0KKwkJCQkJTGl0ZXJhbFN0cmluZyB2YWx1ZSA9IChMaXRlcmFsU3RyaW5nKSB2YWx1ZVNwZWM7DQorCQkJCQl2YWx1ZS5zZXRWYWx1ZShjb3JlLmdldE5hbWUoKSk7DQorCQkJCQlhc3NpZ24uZ2V0SW1wbGllZENvbnN0cmFpbnQoKS5hZGQocnVsZSk7DQorCQkJCX0NCisJCQl9DQorCQl9DQorCX0NCisNCisJDQorCS8qKg0KKwkgKiBHZXRzIHRoZSBDSFJUIHNwZWMgZnJvbSBpbnN0YW5jZXMuDQorCSAqDQorCSAqIEBwYXJhbSBpbnN0YW5jZXMgdGhlIGluc3RhbmNlcw0KKwkgKiBAcmV0dXJuIHRoZSBDSFJUIHNwZWMgZnJvbSBpbnN0YW5jZXMNCisJICovDQorCXB1YmxpYyBzdGF0aWMgU2V0PENIUnRTcGVjaWZpY2F0aW9uPiBnZXRDSFJUU3BlY0Zyb21JbnN0YW5jZXMoRUxpc3Q8SW5zdGFuY2VTcGVjaWZpY2F0aW9uPiBpbnN0YW5jZXMpIHsNCisNCisJCVNldDxDSFJ0U3BlY2lmaWNhdGlvbj4gcmVzdWx0ID0gbmV3IEhhc2hTZXQ8Q0hSdFNwZWNpZmljYXRpb24+KCk7DQorDQorCQlmb3IgKEluc3RhbmNlU3BlY2lmaWNhdGlvbiBpcyA6IGluc3RhbmNlcykgew0KKwkJCWZvciAoRWxlbWVudCBlbCA6IGlzLmdldE93bmVkRWxlbWVudHMoKSkgew0KKwkJCQlpZiAoIShlbCBpbnN0YW5jZW9mIFNsb3QpKQ0KKwkJCQkJY29udGludWU7DQorDQorCQkJCVNsb3Qgc2xvdCA9IChTbG90KSBlbDsNCisJCQkJQ0hSdFBvcnRTbG90IGNoU2xvdCA9IFVNTFV0aWxzLmdldFN0ZXJlb3R5cGVBcHBsaWNhdGlvbihzbG90LCBDSFJ0UG9ydFNsb3QuY2xhc3MpOw0KKwkJCQlpZiAoY2hTbG90ID09IG51bGwpDQorCQkJCQljb250aW51ZTsNCisNCisJCQkJRUxpc3Q8Q0hSdFNwZWNpZmljYXRpb24+IGNoU3BlY3MgPSBjaFNsb3QuZ2V0Q0hfUnRTcGVjaWZpY2F0aW9uKCk7DQorCQkJCWZvciAoQ0hSdFNwZWNpZmljYXRpb24gY2hSdFNwZWNpZmljYXRpb24gOiBjaFNwZWNzKSB7DQorCQkJCQlTdHJpbmcgb2NjS2luZCA9IGNoUnRTcGVjaWZpY2F0aW9uLmdldE9jY0tpbmQoKTsNCisJCQkJCWlmIChvY2NLaW5kICE9IG51bGwgJiYgaXNPY2NLaW5kU3BvcmFkaWNPclBlcmlvZGljKG9jY0tpbmQpKSB7DQorCQkJCQkJcmVzdWx0LmFkZChjaFJ0U3BlY2lmaWNhdGlvbik7DQorCQkJCQl9DQorCQkJCX0NCisJCQl9DQorCQl9DQorDQorCQlyZXR1cm4gcmVzdWx0Ow0KKwl9DQorDQorCS8qKg0KKwkgKiBHZXRzIHRoZSBDSCB0YXNrcy4NCisJICoNCisJICogQHBhcmFtIGluc3RhbmNlcyB0aGUgaW5zdGFuY2VzDQorCSAqIEByZXR1cm4gdGhlIENIIHRhc2tzDQorCSAqLw0KKwlwdWJsaWMgc3RhdGljIE1hcDxDSFJ0U3BlY2lmaWNhdGlvbiwgU2xvdD4gZ2V0Q0hUYXNrcyhFTGlzdDxJbnN0YW5jZVNwZWNpZmljYXRpb24+IGluc3RhbmNlcykgew0KKw0KKwkJTWFwPENIUnRTcGVjaWZpY2F0aW9uLCBTbG90PiByZXN1bHQgPSBuZXcgSGFzaE1hcDxDSFJ0U3BlY2lmaWNhdGlvbiwgU2xvdD4oKTsNCisNCisJCWZvciAoSW5zdGFuY2VTcGVjaWZpY2F0aW9uIGlzIDogaW5zdGFuY2VzKSB7DQorCQkJZm9yIChFbGVtZW50IGVsIDogaXMuZ2V0T3duZWRFbGVtZW50cygpKSB7DQorDQorCQkJCWlmICghKGVsIGluc3RhbmNlb2YgU2xvdCkpDQorCQkJCQljb250aW51ZTsNCisNCisJCQkJU2xvdCBzbG90ID0gKFNsb3QpIGVsOw0KKwkJCQlDSFJ0UG9ydFNsb3QgY2hTbG90ID0gVU1MVXRpbHMuZ2V0U3RlcmVvdHlwZUFwcGxpY2F0aW9uKHNsb3QsIENIUnRQb3J0U2xvdC5jbGFzcyk7DQorCQkJCWlmIChjaFNsb3QgPT0gbnVsbCkNCisJCQkJCWNvbnRpbnVlOw0KKw0KKwkJCQlFTGlzdDxDSFJ0U3BlY2lmaWNhdGlvbj4gY2hTcGVjcyA9IGNoU2xvdC5nZXRDSF9SdFNwZWNpZmljYXRpb24oKTsNCisJCQkJZm9yIChDSFJ0U3BlY2lmaWNhdGlvbiBjaFJ0U3BlY2lmaWNhdGlvbiA6IGNoU3BlY3MpIHsNCisJCQkJCVN0cmluZyBvY2NLaW5kID0gY2hSdFNwZWNpZmljYXRpb24uZ2V0T2NjS2luZCgpOw0KKwkJCQkJaWYgKG9jY0tpbmQgIT0gbnVsbCkgew0KKwkJCQkJCWlmIChpc09jY0tpbmRTcG9yYWRpY09yUGVyaW9kaWMob2NjS2luZCkpIHsNCisJCQkJCQkJcmVzdWx0LnB1dChjaFJ0U3BlY2lmaWNhdGlvbiwgc2xvdCk7DQorCQkJCQkJfQ0KKwkJCQkJfQ0KKwkJCQl9DQorCQkJfQ0KKwkJfQ0KKw0KKwkJcmV0dXJuIHJlc3VsdDsNCisJfQ0KKw0KKwkNCisJLyoqDQorCSAqIEdldHMgdGhlIENIIHRhc2tzIGxpc3QuDQorCSAqDQorCSAqIEBwYXJhbSBpbnN0YW5jZXMgdGhlIGluc3RhbmNlcw0KKwkgKiBAcmV0dXJuIHRoZSBDSCB0YXNrcyBsaXN0DQorCSAqLw0KKwlwdWJsaWMgc3RhdGljIEVMaXN0PENIVGFzaz4gZ2V0Q0hUYXNrc0xpc3QoRUxpc3Q8SW5zdGFuY2VTcGVjaWZpY2F0aW9uPiBpbnN0YW5jZXMpIHsNCisNCisJCUVMaXN0PENIVGFzaz4gcmVzdWx0ID0gbmV3IEJhc2ljRUxpc3Q8Q0hUYXNrPigpOw0KKw0KKwkJZm9yIChJbnN0YW5jZVNwZWNpZmljYXRpb24gaXMgOiBpbnN0YW5jZXMpIHsNCisJCQlmb3IgKEVsZW1lbnQgZWwgOiBpcy5nZXRPd25lZEVsZW1lbnRzKCkpIHsNCisNCisJCQkJaWYgKCEoZWwgaW5zdGFuY2VvZiBTbG90KSkNCisJCQkJCWNvbnRpbnVlOw0KKw0KKwkJCQlTbG90IHNsb3QgPSAoU2xvdCkgZWw7DQorCQkJCUNIUnRQb3J0U2xvdCBjaFNsb3QgPSBVTUxVdGlscy5nZXRTdGVyZW90eXBlQXBwbGljYXRpb24oc2xvdCwgQ0hSdFBvcnRTbG90LmNsYXNzKTsNCisJCQkJaWYgKGNoU2xvdCA9PSBudWxsKQ0KKwkJCQkJY29udGludWU7DQorDQorCQkJCUVMaXN0PENIUnRTcGVjaWZpY2F0aW9uPiBjaFNwZWNzID0gY2hTbG90LmdldENIX1J0U3BlY2lmaWNhdGlvbigpOw0KKwkJCQlmb3IgKENIUnRTcGVjaWZpY2F0aW9uIGNoUnRTcGVjaWZpY2F0aW9uIDogY2hTcGVjcykgew0KKwkJCQkJU3RyaW5nIG9jY0tpbmQgPSBjaFJ0U3BlY2lmaWNhdGlvbi5nZXRPY2NLaW5kKCk7DQorCQkJCQlpZiAob2NjS2luZCAhPSBudWxsICYmIGlzT2NjS2luZFNwb3JhZGljT3JQZXJpb2RpYyhvY2NLaW5kKSkgew0KKwkJCQkJCXJlc3VsdC5hZGQobmV3IENIVGFzayhjaFNsb3QsIGNoUnRTcGVjaWZpY2F0aW9uKSk7DQorCQkJCQl9DQorCQkJCX0NCisJCQl9DQorCQl9DQorDQorCQlyZXR1cm4gcmVzdWx0Ow0KKwl9DQorDQorCS8qKg0KKwkgKiBCdWlsZHMgdGhlIHRhc2sgMiBjb3JlIGFzc2lnbm1lbnRzLg0KKwkgKg0KKwkgKiBAcGFyYW0gaHdTeXN0ZW0gdGhlIGh3IHN5c3RlbQ0KKwkgKiBAcGFyYW0gcHJvY2Vzc29yIHRoZSBwcm9jZXNzb3INCisJICogQHBhcmFtIGNvcmVzVG9DSFJ0U3BlYyB0aGUgY29yZXMgdG8gQ0ggcnQgc3BlYw0KKwkgKiBAcGFyYW0gbWFwQ0hSdFNwZWNUb0luc3RhbmNlcyB0aGUgbWFwIENIIHJ0IHNwZWMgdG8gaW5zdGFuY2VzDQorCSAqLw0KKwlwdWJsaWMgc3RhdGljIHZvaWQgYnVpbGRUYXNrMkNvcmVBc3NpZ25tZW50cyhDb21wb25lbnQgaHdTeXN0ZW0sIEluc3RhbmNlU3BlY2lmaWNhdGlvbiBwcm9jZXNzb3IsIE1hcDxTdHJpbmcsIExpbmtlZEhhc2hTZXQ8Q0hSdFNwZWNpZmljYXRpb24+PiBjb3Jlc1RvQ0hSdFNwZWMsDQorCQkJTWFwPENIUnRTcGVjaWZpY2F0aW9uLCBJbnN0YW5jZVNwZWNpZmljYXRpb24+IG1hcENIUnRTcGVjVG9JbnN0YW5jZXMpIHsNCisJCS8vIFRPRE8gQXV0by1nZW5lcmF0ZWQgbWV0aG9kIHN0dWINCisNCisJfQ0KKw0KKwkvKioNCisJICogR2V0cyB0aGUgb3BlcmF0aW9uIGNoYWluLg0KKwkgKg0KKwkgKiBAcGFyYW0gdW1sTW9kZWwgdGhlIHVtbCBtb2RlbA0KKwkgKiBAcGFyYW0gY2h0YXNrcyB0aGUgY2h0YXNrcw0KKwkgKiBAcmV0dXJuIHRoZSBvcGVyYXRpb24gY2hhaW4NCisJICogQHRocm93cyBNb2RlbEVycm9yIHRoZSBtb2RlbCBlcnJvcg0KKwkgKi8NCisJLyoNCisJICogZm9yZWFjaCBkZWZlcnJlZCBvcCBnZXQgaXRzIHNsb3QgaW4gdGhlIGluc3RhbmNlIHBhY2thZ2UgZ2V0IGl0cyBhY3Rpdml0eQ0KKwkgKiBkaWFncmFtIGlmIGFueSBjb2xsZWN0IHRoZSBjYWxsZWQgb3BlcmF0aW9ucyBnZXQgdGhlIGNvcnJlc3BvbmRpbmcNCisJICogY29tcG9uZW50IGFuZCBzbyBpdHMgc3BlY2lmaWNhdGlvbg0KKwkgKiANCisJICogdGhpcyBpcyB1c2VmdWwgdG8gY2FsY3VsYXRlIHRoZSBXQ0VUIG9mIHRoZSB0YXNrIGdlbmVyYXRlZCBmcm9tIHRoZQ0KKwkgKiBkZWZlcnJlZCBvcA0KKwkgKi8NCisJcHVibGljIHN0YXRpYyBIYXNoTWFwPENIVGFzaywgRUxpc3Q8Q0hUYXNrPj4gZ2V0T3BlcmF0aW9uQ2hhaW4oTW9kZWwgdW1sTW9kZWwsIEVMaXN0PENIVGFzaz4gY2h0YXNrcykgdGhyb3dzIE1vZGVsRXJyb3Igew0KKwkJUGFja2FnZSBpbnN0UGtnID0gSW5zdGFuY2VRdWVyeS5nZXRJbnN0YW5jZVNwZWNQYWNrYWdlKHVtbE1vZGVsKTsNCisJCWlmIChpbnN0UGtnID09IG51bGwpIHsNCisJCQl0aHJvdyBuZXcgTW9kZWxFcnJvcigiSW5zdGFuY2UgcGFja2FnZSBub3QgaW4gdGhlIG1vZGVsOiB1c2UgdGhlIGNyZWF0ZSBpbnN0YW5jZSBjb21tYW5kIHRvIGNyZWF0ZSB0aGlzIHBhY2thZ2UiKTsNCisJCX0NCisJCUhhc2hNYXA8Q0hUYXNrLCBFTGlzdDxDSFRhc2s+PiBtYXAgPSBuZXcgSGFzaE1hcDxDSFRhc2ssIEVMaXN0PENIVGFzaz4+KCk7DQorCQlmb3IgKENIVGFzayBkT3AgOiBjaHRhc2tzKSB7DQorCQkJU3lzdGVtLm91dC5wcmludGxuKGRPcC5nZXRDSFJ0U3BlY2lmaWNhdGlvbigpLmdldENvbnRleHQoKS5nZXROYW1lKCkpOw0KKwkJCUVMaXN0PENIVGFzaz4gbGlzdCA9IG5ldyBCYXNpY0VMaXN0PENIVGFzaz4oKTsNCisJCQlDSFJ0UG9ydFNsb3QgY2hSdFBvcnRTbG90ID0gSW5zdGFuY2VRdWVyeS5nZXRDSFJ0UG9ydFNsb3QoaW5zdFBrZywgZE9wLmdldENIUnRTcGVjaWZpY2F0aW9uKCkpOw0KKwkJCXNsb3QyRW5kVG9FbmRXb3JrRmxvdyhpbnN0UGtnLCBjaFJ0UG9ydFNsb3QsIGRPcC5nZXRDSFJ0U3BlY2lmaWNhdGlvbigpLCBsaXN0KTsNCisJCQltYXAucHV0KGRPcCwgbGlzdCk7DQorCQl9DQorCQlyZXR1cm4gbWFwOw0KKwl9DQorDQorCS8qKg0KKwkgKiBHZXRzIHRoZSBvcGVyYXRpb24gY2hhaW4gMi4NCisJICoNCisJICogQHBhcmFtIHVtbE1vZGVsIHRoZSB1bWwgbW9kZWwNCisJICogQHBhcmFtIGNodGFza3MgdGhlIGNodGFza3MNCisJICogQHJldHVybiB0aGUgb3BlcmF0aW9uIGNoYWluIDINCisJICogQHRocm93cyBNb2RlbEVycm9yIHRoZSBtb2RlbCBlcnJvcg0KKwkgKi8NCisJcHVibGljIHN0YXRpYyBIYXNoTWFwPENIUnRTcGVjaWZpY2F0aW9uLCBFTGlzdDxDSFRhc2s+PiBnZXRPcGVyYXRpb25DaGFpbjIoTW9kZWwgdW1sTW9kZWwsIFNldDxDSFJ0U3BlY2lmaWNhdGlvbj4gY2h0YXNrcykgdGhyb3dzIE1vZGVsRXJyb3Igew0KKwkJUGFja2FnZSBpbnN0UGtnID0gSW5zdGFuY2VRdWVyeS5nZXRJbnN0YW5jZVNwZWNQYWNrYWdlKHVtbE1vZGVsKTsNCisJCWlmIChpbnN0UGtnID09IG51bGwpIHsNCisJCQl0aHJvdyBuZXcgTW9kZWxFcnJvcigiSW5zdGFuY2UgcGFja2FnZSBub3QgaW4gdGhlIG1vZGVsOiB1c2UgdGhlIGNyZWF0ZSBpbnN0YW5jZSBjb21tYW5kIHRvIGNyZWF0ZSB0aGlzIHBhY2thZ2UiKTsNCisJCX0NCisJCUhhc2hNYXA8Q0hSdFNwZWNpZmljYXRpb24sIEVMaXN0PENIVGFzaz4+IG1hcCA9IG5ldyBIYXNoTWFwPENIUnRTcGVjaWZpY2F0aW9uLCBFTGlzdDxDSFRhc2s+PigpOw0KKwkJZm9yIChDSFJ0U3BlY2lmaWNhdGlvbiBkT3AgOiBjaHRhc2tzKSB7DQorCQkJU3lzdGVtLm91dC5wcmludGxuKGRPcC5nZXRDb250ZXh0KCkuZ2V0TmFtZSgpKTsNCisJCQlFTGlzdDxDSFRhc2s+IGxpc3QgPSBuZXcgQmFzaWNFTGlzdDxDSFRhc2s+KCk7DQorCQkJQ0hSdFBvcnRTbG90IGNoUnRQb3J0U2xvdCA9IEluc3RhbmNlUXVlcnkuZ2V0Q0hSdFBvcnRTbG90KGluc3RQa2csIGRPcCk7DQorCQkJc2xvdDJFbmRUb0VuZFdvcmtGbG93KGluc3RQa2csIGNoUnRQb3J0U2xvdCwgZE9wLCBsaXN0KTsNCisJCQltYXAucHV0KGRPcCwgbGlzdCk7DQorCQl9DQorCQlyZXR1cm4gbWFwOw0KKwl9DQorDQorCQ0KKwkvKioNCisJICogU2xvdCAyIGVuZCB0byBlbmQgd29yayBmbG93Lg0KKwkgKg0KKwkgKiBAcGFyYW0gaW5zdFBrZyB0aGUgaW5zdCBwa2cNCisJICogQHBhcmFtIGN1cnJlbnRDaFNsb3QgdGhlIGN1cnJlbnQgY2ggc2xvdA0KKwkgKiBAcGFyYW0gZE9wIHRoZSBkIG9wDQorCSAqIEBwYXJhbSBsaXN0IHRoZSBsaXN0DQorCSAqIEB0aHJvd3MgTW9kZWxFcnJvciB0aGUgbW9kZWwgZXJyb3INCisJICovDQorCXByaXZhdGUgc3RhdGljIHZvaWQgc2xvdDJFbmRUb0VuZFdvcmtGbG93KFBhY2thZ2UgaW5zdFBrZywgQ0hSdFBvcnRTbG90IGN1cnJlbnRDaFNsb3QsIENIUnRTcGVjaWZpY2F0aW9uIGRPcCwgRUxpc3Q8Q0hUYXNrPiBsaXN0KSB0aHJvd3MgTW9kZWxFcnJvciB7DQorDQorCQlJbnN0YW5jZVNwZWNpZmljYXRpb24gb3duaW5nSW5zdGFuY2UgPSBjdXJyZW50Q2hTbG90LmdldEJhc2VfU2xvdCgpLmdldE93bmluZ0luc3RhbmNlKCk7DQorCQlBY3Rpdml0eSBtZXRob2QgPSBJbnN0YW5jZVF1ZXJ5LmdldE1ldGhvZChkT3ApOw0KKwkJaWYgKG1ldGhvZCA9PSBudWxsKQ0KKwkJCXJldHVybjsvLyBUT0RPIHRocm93IGV4Y2VwdGlvbj8NCisJCWZvciAoQWN0aXZpdHlOb2RlIG5vZGUgOiBtZXRob2QuZ2V0Tm9kZXMoKSkgew0KKwkJCWlmIChub2RlIGluc3RhbmNlb2YgQ2FsbE9wZXJhdGlvbkFjdGlvbikgew0KKwkJCQlDYWxsT3BlcmF0aW9uQWN0aW9uIGNhbGxPcCA9IChDYWxsT3BlcmF0aW9uQWN0aW9uKSBub2RlOw0KKwkJCQlFTGlzdDxTbG90PiByaVNsb3QgPSBJbnN0YW5jZVF1ZXJ5LmdldFNsb3RGcm9tUG9ydChjYWxsT3AsIG93bmluZ0luc3RhbmNlKTsNCisJCQkJZm9yIChTbG90IHNsb3QgOiByaVNsb3QpIHsNCisJCQkJCVNsb3QgdXNlZFBpU2xvdCA9IEluc3RhbmNlUXVlcnkuZ2V0T3Bwb3NpdGVTbG90KHNsb3QpOw0KKwkJCQkJQ0hSdFNwZWNpZmljYXRpb24gdXNlZENIID0gSW5zdGFuY2VRdWVyeS5nZXRDSEZyb21TbG90KHVzZWRQaVNsb3QsIGNhbGxPcC5nZXRPcGVyYXRpb24oKSk7DQorCQkJCQlDSFJ0UG9ydFNsb3QgY2ggPSBVTUxVdGlscy5nZXRTdGVyZW90eXBlQXBwbGljYXRpb24odXNlZFBpU2xvdCwgQ0hSdFBvcnRTbG90LmNsYXNzKTsNCisJCQkJCWlmICghSW5zdGFuY2VRdWVyeS5pc0RlZmVycmVkKHVzZWRDSCkpIHsNCisJCQkJCQlsaXN0LmFkZChuZXcgQ0hUYXNrKGNoLCB1c2VkQ0gpKTsNCisJCQkJCQlzbG90MkVuZFRvRW5kV29ya0Zsb3coaW5zdFBrZywgY2gsIHVzZWRDSCwgbGlzdCk7DQorCQkJCQl9DQorCQkJCQkvLw0KKwkJCQkJLy8gT3BlcmF0aW9uIG9wZXJhdGlvbiA9IGNhbGxPcC5nZXRPcGVyYXRpb24oKTsvLz0+dXNlIHRvIG1hdGNoIHRoZQ0KKwkJCQkJLy8gY29udGV4dCBvZiB0aGUgY2hydHNwZWMNCisJCQkJCS8vIFBvcnQgcmlQb3J0ID0gY2FsbE9wLmdldE9uUG9ydCgpOy8vPT5nZXQgbGluayBhbmQgdGhlbiBwaSB0aGVuDQorCQkJCQkvLyBjaHJ0c3BlYw0KKwkJCQkJLy8gUG9ydCBwaVBvcnQgPSBnZXRPcHBvc2l0ZVBvcnQocmlQb3J0KTsNCisJCQkJCS8vIGdldENIUnRDb21tZW50c2Zyb21Qb3J0KHBpUG9ydCwgb3BlcmF0aW9uKTsNCisJCQkJfQ0KKw0KKwkJCX0NCisJCX0NCisJfQ0KKw0KKwkNCisJLyoqDQorCSAqIFdjZXQgdW5pdC4NCisJICoNCisJICogQHBhcmFtIHdjZXRTcGVjIHRoZSB3Y2V0IHNwZWMNCisJICogQHBhcmFtIHRoZVVuaXQgdGhlIHRoZSB1bml0DQorCSAqIEByZXR1cm4gdGhlIGludA0KKwkgKi8NCisJcHJpdmF0ZSBzdGF0aWMgaW50IHdjZXRVbml0KFN0cmluZyB3Y2V0U3BlYywgU3RyaW5nIHRoZVVuaXQpIHsNCisJCWludCByZXQgPSAtMTsNCisJCWlmICh3Y2V0U3BlYyA9PSBudWxsKQ0KKwkJCXJldHVybiByZXQ7DQorDQorCQlTdHJpbmdQYXJzZXIgc3AgPSBuZXcgU3RyaW5nUGFyc2VyKCk7DQorCQlkb3VibGUgdmFsdWUgPSBzcC5nZXRWYWx1ZU5GUCh3Y2V0U3BlYyk7DQorCQlTdHJpbmcgdW5pdCA9IHNwLmdldFVuaXRORlAod2NldFNwZWMpOw0KKw0KKwkJaWYgKHZhbHVlID09IC0xKQ0KKwkJCXJldHVybiByZXQ7DQorDQorCQlpbnQgaW50VmFsdWUgPSB1bml0Q29udmVyc2lvbih2YWx1ZSwgdW5pdCwgdGhlVW5pdCk7DQorCQlyZXR1cm4gaW50VmFsdWU7DQorCX0NCisNCisJDQorCS8qKg0KKwkgKiBVbml0IGNvbnZlcnNpb24gZmxvYXQuDQorCSAqDQorCSAqIEBwYXJhbSB2YWx1ZSB0aGUgdmFsdWUNCisJICogQHBhcmFtIGZyb21Vbml0IHRoZSBmcm9tIHVuaXQNCisJICogQHBhcmFtIHRvVW5pdCB0aGUgdG8gdW5pdA0KKwkgKiBAcmV0dXJuIHRoZSBmbG9hdA0KKwkgKi8NCisJcHVibGljIHN0YXRpYyBmbG9hdCB1bml0Q29udmVyc2lvbkZsb2F0KGRvdWJsZSB2YWx1ZSwgU3RyaW5nIGZyb21Vbml0LCBTdHJpbmcgdG9Vbml0KSB7DQorCQlpbnQgdG9GYWN0b3IgPSAxMDAwMDAwOw0KKw0KKwkJaWYgKHRvVW5pdC5lcXVhbHNJZ25vcmVDYXNlKCJzIikpIHsNCisJCQl0b0ZhY3RvciA9IDEwMDAwMDAwMDA7DQorCQl9IGVsc2UgaWYgKHRvVW5pdC5lcXVhbHNJZ25vcmVDYXNlKCJtcyIpKSB7DQorCQkJdG9GYWN0b3IgPSAxMDAwMDAwOw0KKwkJfSBlbHNlIGlmICh0b1VuaXQuZXF1YWxzSWdub3JlQ2FzZSgidXMiKSkgew0KKwkJCXRvRmFjdG9yID0gMTAwMDsNCisJCX0gZWxzZSBpZiAodG9Vbml0LmVxdWFsc0lnbm9yZUNhc2UoIm5zIikpIHsNCisJCQl0b0ZhY3RvciA9IDE7DQorCQl9DQorDQorCQlpbnQgZnJvbUZhY3RvciA9IDEwMDAwMDA7DQorDQorCQlpZiAoZnJvbVVuaXQuZXF1YWxzSWdub3JlQ2FzZSgicyIpKSB7DQorCQkJZnJvbUZhY3RvciA9IDEwMDAwMDAwMDA7DQorCQl9IGVsc2UgaWYgKGZyb21Vbml0LmVxdWFsc0lnbm9yZUNhc2UoIm1zIikpIHsNCisJCQlmcm9tRmFjdG9yID0gMTAwMDAwMDsNCisJCX0gZWxzZSBpZiAoZnJvbVVuaXQuZXF1YWxzSWdub3JlQ2FzZSgidXMiKSkgew0KKwkJCWZyb21GYWN0b3IgPSAxMDAwOw0KKwkJfSBlbHNlIGlmIChmcm9tVW5pdC5lcXVhbHNJZ25vcmVDYXNlKCJucyIpKSB7DQorCQkJZnJvbUZhY3RvciA9IDE7DQorCQl9DQorDQorCQlmbG9hdCByYXRpbyA9IChmbG9hdCkgZnJvbUZhY3RvciAvIHRvRmFjdG9yOw0KKwkJZmxvYXQgaW50VmFsdWUgPSAoZmxvYXQpICh2YWx1ZSAqIHJhdGlvKTsNCisJCXJldHVybiBpbnRWYWx1ZTsNCisJfQ0KKw0KKwkNCisJLyoqDQorCSAqIFdjZXQgdW5pdCBmbG9hdC4NCisJICoNCisJICogQHBhcmFtIHdjZXRTcGVjIHRoZSB3Y2V0IHNwZWMNCisJICogQHBhcmFtIHRoZVVuaXQgdGhlIHRoZSB1bml0DQorCSAqIEByZXR1cm4gdGhlIGZsb2F0DQorCSAqLw0KKwlwcml2YXRlIHN0YXRpYyBmbG9hdCB3Y2V0VW5pdEZsb2F0KFN0cmluZyB3Y2V0U3BlYywgU3RyaW5nIHRoZVVuaXQpIHsNCisJCWludCByZXQgPSAtMTsNCisJCWlmICh3Y2V0U3BlYyA9PSBudWxsKQ0KKwkJCXJldHVybiByZXQ7DQorDQorCQlTdHJpbmdQYXJzZXIgc3AgPSBuZXcgU3RyaW5nUGFyc2VyKCk7DQorCQlkb3VibGUgdmFsdWUgPSBzcC5nZXRWYWx1ZU5GUCh3Y2V0U3BlYyk7DQorCQlTdHJpbmcgdW5pdCA9IHNwLmdldFVuaXRORlAod2NldFNwZWMpOw0KKw0KKwkJaWYgKHZhbHVlID09IC0xKQ0KKwkJCXJldHVybiByZXQ7DQorDQorCQlyZXR1cm4gdW5pdENvbnZlcnNpb25GbG9hdCh2YWx1ZSwgdW5pdCwgdGhlVW5pdCk7DQorCX0NCisNCisJDQorCS8qKg0KKwkgKiBVbml0IGNvbnZlcnNpb24uDQorCSAqDQorCSAqIEBwYXJhbSB2YWx1ZSB0aGUgdmFsdWUNCisJICogQHBhcmFtIGZyb21Vbml0IHRoZSBmcm9tIHVuaXQNCisJICogQHBhcmFtIHRvVW5pdCB0aGUgdG8gdW5pdA0KKwkgKiBAcmV0dXJuIHRoZSBpbnQNCisJICovDQorCXB1YmxpYyBzdGF0aWMgaW50IHVuaXRDb252ZXJzaW9uKGRvdWJsZSB2YWx1ZSwgU3RyaW5nIGZyb21Vbml0LCBTdHJpbmcgdG9Vbml0KSB7DQorCQlpbnQgdG9GYWN0b3IgPSAxMDAwMDAwOw0KKw0KKwkJaWYgKHRvVW5pdC5lcXVhbHNJZ25vcmVDYXNlKCJzIikpIHsNCisJCQl0b0ZhY3RvciA9IDEwMDAwMDAwMDA7DQorCQl9IGVsc2UgaWYgKHRvVW5pdC5lcXVhbHNJZ25vcmVDYXNlKCJtcyIpKSB7DQorCQkJdG9GYWN0b3IgPSAxMDAwMDAwOw0KKwkJfSBlbHNlIGlmICh0b1VuaXQuZXF1YWxzSWdub3JlQ2FzZSgidXMiKSkgew0KKwkJCXRvRmFjdG9yID0gMTAwMDsNCisJCX0gZWxzZSBpZiAodG9Vbml0LmVxdWFsc0lnbm9yZUNhc2UoIm5zIikpIHsNCisJCQl0b0ZhY3RvciA9IDE7DQorCQl9DQorDQorCQlpbnQgZnJvbUZhY3RvciA9IDEwMDAwMDA7DQorDQorCQlpZiAoZnJvbVVuaXQuZXF1YWxzSWdub3JlQ2FzZSgicyIpKSB7DQorCQkJZnJvbUZhY3RvciA9IDEwMDAwMDAwMDA7DQorCQl9IGVsc2UgaWYgKGZyb21Vbml0LmVxdWFsc0lnbm9yZUNhc2UoIm1zIikpIHsNCisJCQlmcm9tRmFjdG9yID0gMTAwMDAwMDsNCisJCX0gZWxzZSBpZiAoZnJvbVVuaXQuZXF1YWxzSWdub3JlQ2FzZSgidXMiKSkgew0KKwkJCWZyb21GYWN0b3IgPSAxMDAwOw0KKwkJfSBlbHNlIGlmIChmcm9tVW5pdC5lcXVhbHNJZ25vcmVDYXNlKCJucyIpKSB7DQorCQkJZnJvbUZhY3RvciA9IDE7DQorCQl9DQorDQorCQlkb3VibGUgcmF0aW8gPSAoZG91YmxlKSBmcm9tRmFjdG9yIC8gdG9GYWN0b3I7DQorCQlpbnQgaW50VmFsdWUgPSAoaW50KSBNYXRoLnJvdW5kKHZhbHVlICogcmF0aW8pOw0KKwkJcmV0dXJuIGludFZhbHVlOw0KKwl9DQorDQorCQ0KKwkvKioNCisJICogR2V0cyB0aGUgV0NFIHR1bml0IGZsb2F0Lg0KKwkgKg0KKwkgKiBAcGFyYW0gY2hSdFNwZWNpZmljYXRpb24gdGhlIGNoIHJ0IHNwZWNpZmljYXRpb24NCisJICogQHBhcmFtIHVuaXRPZk1lYXN1cmUgdGhlIHVuaXQgb2YgbWVhc3VyZQ0KKwkgKiBAcmV0dXJuIHRoZSBXQ0UgdHVuaXQgZmxvYXQNCisJICogQHRocm93cyBNb2RlbEVycm9yIHRoZSBtb2RlbCBlcnJvcg0KKwkgKi8NCisJcHVibGljIHN0YXRpYyBmbG9hdCBnZXRXQ0VUdW5pdEZsb2F0KENIUnRTcGVjaWZpY2F0aW9uIGNoUnRTcGVjaWZpY2F0aW9uLCBTdHJpbmcgdW5pdE9mTWVhc3VyZSkgdGhyb3dzIE1vZGVsRXJyb3Igew0KKw0KKwkJU3RyaW5nUGFyc2VyIHNwID0gbmV3IFN0cmluZ1BhcnNlcigpOw0KKwkJU3RyaW5nIHdjZXQgPSBjaFJ0U3BlY2lmaWNhdGlvbi5nZXRMb2NhbFdDRVQoKTsNCisJCWZsb2F0IGludFZhbHVlID0gd2NldFVuaXRGbG9hdCh3Y2V0LCB1bml0T2ZNZWFzdXJlKTsNCisNCisJCWlmIChpbnRWYWx1ZSAhPSAtMSkNCisJCQlyZXR1cm4gaW50VmFsdWU7DQorDQorCQl3Y2V0ID0gY2hSdFNwZWNpZmljYXRpb24uZ2V0V0NFVCgpOw0KKw0KKwkJaW50VmFsdWUgPSB3Y2V0VW5pdCh3Y2V0LCB1bml0T2ZNZWFzdXJlKTsNCisJCWlmIChpbnRWYWx1ZSAhPSAtMSkNCisJCQlyZXR1cm4gaW50VmFsdWU7DQorDQorCQl0aHJvdyBuZXcgTW9kZWxFcnJvcigiV0NFVCBmb3IgJXMgaXMgbm90IHNldCBjb3JyZWN0bHkiLCBjaFJ0U3BlY2lmaWNhdGlvbi5nZXRDb250ZXh0KCkuZ2V0TmFtZSgpKTsNCisJfQ0KKw0KKwkNCisJLyoqDQorCSAqIEdldHMgdGhlIFdDRSB0dW5pdC4NCisJICoNCisJICogQHBhcmFtIGNoUnRTcGVjaWZpY2F0aW9uIHRoZSBjaCBydCBzcGVjaWZpY2F0aW9uDQorCSAqIEBwYXJhbSB1bml0T2ZNZWFzdXJlIHRoZSB1bml0IG9mIG1lYXN1cmUNCisJICogQHJldHVybiB0aGUgV0NFIHR1bml0DQorCSAqIEB0aHJvd3MgTW9kZWxFcnJvciB0aGUgbW9kZWwgZXJyb3INCisJICovDQorCXB1YmxpYyBzdGF0aWMgaW50IGdldFdDRVR1bml0KENIUnRTcGVjaWZpY2F0aW9uIGNoUnRTcGVjaWZpY2F0aW9uLCBTdHJpbmcgdW5pdE9mTWVhc3VyZSkgdGhyb3dzIE1vZGVsRXJyb3Igew0KKw0KKwkJU3RyaW5nUGFyc2VyIHNwID0gbmV3IFN0cmluZ1BhcnNlcigpOw0KKwkJU3RyaW5nIHdjZXQgPSBjaFJ0U3BlY2lmaWNhdGlvbi5nZXRMb2NhbFdDRVQoKTsNCisJCWludCBpbnRWYWx1ZSA9IHdjZXRVbml0KHdjZXQsIHVuaXRPZk1lYXN1cmUpOw0KKw0KKwkJaWYgKGludFZhbHVlICE9IC0xKQ0KKwkJCXJldHVybiBpbnRWYWx1ZTsNCisNCisJCXdjZXQgPSBjaFJ0U3BlY2lmaWNhdGlvbi5nZXRXQ0VUKCk7DQorDQorCQlpbnRWYWx1ZSA9IHdjZXRVbml0KHdjZXQsIHVuaXRPZk1lYXN1cmUpOw0KKwkJaWYgKGludFZhbHVlICE9IC0xKQ0KKwkJCXJldHVybiBpbnRWYWx1ZTsNCisNCisJCXRocm93IG5ldyBNb2RlbEVycm9yKCJXQ0VUIGZvciAlcyBpcyBub3Qgc2V0IGNvcnJlY3RseSIsIGNoUnRTcGVjaWZpY2F0aW9uLmdldENvbnRleHQoKS5nZXROYW1lKCkpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBHZXRzIHRoZSB3Y2V0Lg0KKwkgKg0KKwkgKiBAcGFyYW0gY2hSdFNwZWNpZmljYXRpb24gdGhlIGNoIHJ0IHNwZWNpZmljYXRpb24NCisJICogQHJldHVybiB0aGUgd2NldA0KKwkgKiBAdGhyb3dzIE1vZGVsRXJyb3IgdGhlIG1vZGVsIGVycm9yDQorCSAqLw0KKwkvLyBUT0RPIGEgc2ltaWxhciBtZXRob2QgaXMgaW1wbGVtZW50ZWQgaW4gdGhlIG0ybSBwbHVnaW4gKEphdmE0UVZUdXRpbHMuamF2YSkNCisJcHVibGljIHN0YXRpYyBkb3VibGUgZ2V0V0NFVChDSFJ0U3BlY2lmaWNhdGlvbiBjaFJ0U3BlY2lmaWNhdGlvbikgdGhyb3dzIE1vZGVsRXJyb3Igew0KKwkJU3RyaW5nUGFyc2VyIHNwID0gbmV3IFN0cmluZ1BhcnNlcigpOw0KKwkJZG91YmxlIHggPSAtMTsNCisJCVN0cmluZyB3Y2V0ID0gY2hSdFNwZWNpZmljYXRpb24uZ2V0TG9jYWxXQ0VUKCk7DQorCQlpZiAod2NldCAhPSBudWxsKSB7DQorCQkJeCA9IHNwLmdldFZhbHVlTkZQKHdjZXQpOw0KKwkJfQ0KKwkJaWYgKHggIT0gLTEpDQorCQkJcmV0dXJuIHg7DQorDQorCQl3Y2V0ID0gY2hSdFNwZWNpZmljYXRpb24uZ2V0V0NFVCgpOw0KKw0KKwkJaWYgKHdjZXQgIT0gbnVsbCkgew0KKwkJCXggPSBzcC5nZXRWYWx1ZU5GUCh3Y2V0KTsNCisJCX0NCisJCWlmICh4ICE9IC0xKQ0KKwkJCXJldHVybiB4Ow0KKw0KKwkJdGhyb3cgbmV3IE1vZGVsRXJyb3IoIldDRVQgZm9yICVzIGlzIG5vdCBzZXQgY29ycmVjdGx5IiwgY2hSdFNwZWNpZmljYXRpb24uZ2V0Q29udGV4dCgpLmdldE5hbWUoKSk7DQorCX0NCisNCisJLyoqDQorCSAqIENoZWNrIGlmIEluc3RhbmNlIFNwZWNpZmljYXRpb24gaW4gaW5wdXQgaXMgYXNzaWduZWQgdG8gYSBQYXJ0aXRpb24uDQorCSAqDQorCSAqIEBwYXJhbSBpIHRoZSBpDQorCSAqIEBwYXJhbSBhc3NpZ25tZW50cyB0aGUgYXNzaWdubWVudHMNCisJICogQHJldHVybiB0cnVlLCBpZiBpcyBhc3NpZ25lZCAyIHBhcnRpdGlvbg0KKwkgKi8NCisJcHVibGljIHN0YXRpYyBib29sZWFuIGlzQXNzaWduZWQyUGFydGl0aW9uKEluc3RhbmNlU3BlY2lmaWNhdGlvbiBpLCBFTGlzdDxBc3NpZ24+IGFzc2lnbm1lbnRzKSB7DQorCQlmb3IgKEFzc2lnbiB0aGVBc3NpZ25tZW50IDogYXNzaWdubWVudHMpIHsNCisJCQlpZiAodGhlQXNzaWdubWVudCAhPSBudWxsKSB7DQorCQkJCXRyeSB7DQorCQkJCQlpZiAodGhlQXNzaWdubWVudC5nZXRGcm9tKCkuY29udGFpbnMoKE9iamVjdCkgaSkgJiYgKGVsZW1lbnRJc1BhcnRpdGlvbkluc3RhbmNlKHRoZUFzc2lnbm1lbnQuZ2V0VG8oKS5nZXQoMCkpKSkgew0KKwkJCQkJCXJldHVybiB0cnVlOw0KKwkJCQkJfQ0KKwkJCQl9IGNhdGNoIChFeGNlcHRpb24gZSkgew0KKwkJCQkJY29udGludWU7DQorCQkJCX0NCisJCQl9DQorCQl9DQorCQlyZXR1cm4gZmFsc2U7DQorCX0NCisNCisJLyoqDQorCSAqIENoZWNrIGlmIHRoaXMgUGFydGl0aW9uIGlzIGFzc2lnbmVkIHRvIGEgQ1BVLg0KKwkgKg0KKwkgKiBAcGFyYW0gaSB0aGUgaQ0KKwkgKiBAcGFyYW0gYXNzaWdubWVudHMgdGhlIGFzc2lnbm1lbnRzDQorCSAqIEByZXR1cm4gdHJ1ZSwgaWYgaXMgYXNzaWduZWQgMiBwcm9jZXNzb3INCisJICovDQorCXB1YmxpYyBzdGF0aWMgYm9vbGVhbiBpc0Fzc2lnbmVkMlByb2Nlc3NvcihJbnN0YW5jZVNwZWNpZmljYXRpb24gaSwgRUxpc3Q8QXNzaWduPiBhc3NpZ25tZW50cykgew0KKwkJZm9yIChBc3NpZ24gdGhlQXNzaWdubWVudCA6IGFzc2lnbm1lbnRzKSB7DQorCQkJaWYgKHRoZUFzc2lnbm1lbnQgIT0gbnVsbCkgew0KKwkJCQl0cnkgew0KKwkJCQkJaWYgKHRoZUFzc2lnbm1lbnQuZ2V0RnJvbSgpLmNvbnRhaW5zKChPYmplY3QpIGkpICYmIGVsZW1lbnRJc1Byb2Nlc3Nvckluc3RhbmNlKHRoZUFzc2lnbm1lbnQuZ2V0VG8oKS5nZXQoMCkpKSB7DQorCQkJCQkJcmV0dXJuIHRydWU7DQorCQkJCQl9DQorCQkJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7DQorCQkJCQljb250aW51ZTsNCisJCQkJfQ0KKwkJCX0NCisJCX0NCisJCXJldHVybiBmYWxzZTsNCisJfQ0KKw0KKwkvKioNCisJICogQ2hlY2sgaWYgdGhpcyBQYXJ0aXRpb24gaXMgYXNzaWduZWQgdG8gYSBDUFUuDQorCSAqDQorCSAqIEBwYXJhbSBpIHRoZSBpDQorCSAqIEBwYXJhbSBwYWNrIHRoZSBwYWNrDQorCSAqIEBwYXJhbSBhc3NpZ25tZW50cyB0aGUgYXNzaWdubWVudHMNCisJICogQHJldHVybiB0cnVlLCBpZiBpcyBhc3NpZ25lZCAyIGNvcmUNCisJICovDQorCXB1YmxpYyBzdGF0aWMgYm9vbGVhbiBpc0Fzc2lnbmVkMkNvcmUoSW5zdGFuY2VTcGVjaWZpY2F0aW9uIGksIFBhY2thZ2UgcGFjaywgRUxpc3Q8QXNzaWduPiBhc3NpZ25tZW50cykgew0KKwkJU3RyaW5nIHBhY2tRTiA9IHBhY2suZ2V0UXVhbGlmaWVkTmFtZSgpOw0KKwkJU3RyaW5nIGFzc2lnbmVkVGFyZ2V0UU4gPSAiIjsNCisJCVN0cmluZyBhc3NpZ25lZFRhcmdldEVsZW1lbnROYW1lID0gIiI7DQorDQorCQlmb3IgKEFzc2lnbiB0aGVBc3NpZ25tZW50IDogYXNzaWdubWVudHMpIHsNCisJCQlpZiAodGhlQXNzaWdubWVudCAhPSBudWxsKSB7DQorCQkJCXRyeSB7DQorCQkJCQlFTGlzdDxFbGVtZW50PiBhc3NpZ25tZW50U291cmNlID0gdGhlQXNzaWdubWVudC5nZXRGcm9tKCk7DQorCQkJCQlFbGVtZW50IGFzc2lnbm1lbnRUYXJnZXQgPSB0aGVBc3NpZ25tZW50LmdldFRvKCkuZ2V0KDApOw0KKwkJCQkJYXNzaWduZWRUYXJnZXRRTiA9ICgoTmFtZWRFbGVtZW50KSBhc3NpZ25tZW50VGFyZ2V0KS5nZXRRdWFsaWZpZWROYW1lKCk7DQorCQkJCQlhc3NpZ25lZFRhcmdldEVsZW1lbnROYW1lID0gKChOYW1lZEVsZW1lbnQpIGFzc2lnbm1lbnRUYXJnZXQpLmdldExhYmVsKCk7DQorCQkJCQlpZiAoYXNzaWdubWVudFNvdXJjZS5jb250YWlucygoT2JqZWN0KSBpKSAmJiBlbGVtZW50SXNQcm9jZXNzb3JJbnN0YW5jZShhc3NpZ25tZW50VGFyZ2V0KSkgew0KKwkJCQkJCWlmICghdGhlQXNzaWdubWVudC5nZXRJbXBsaWVkQ29uc3RyYWludCgpLmlzRW1wdHkoKSAmJiB0aGVBc3NpZ25tZW50LmdldEltcGxpZWRDb25zdHJhaW50KCkuZ2V0KDApICE9IG51bGwpIHsNCisJCQkJCQkJaWYgKChwYWNrUU4gKyAiOjoiICsgYXNzaWduZWRUYXJnZXRFbGVtZW50TmFtZSkuZXF1YWxzKGFzc2lnbmVkVGFyZ2V0UU4pKSB7DQorCQkJCQkJCQlyZXR1cm4gdHJ1ZTsNCisJCQkJCQkJfQ0KKwkJCQkJCX0gZWxzZSB7DQorCQkJCQkJCS8vIENoZWNrIGlmIGl0IGlzIGEgc2luZ2xlLWNvcmUNCisJCQkJCQkJSW5zdGFuY2VTcGVjaWZpY2F0aW9uIGluc3RTcGVjUHJvYyA9IChJbnN0YW5jZVNwZWNpZmljYXRpb24pIGFzc2lnbm1lbnRUYXJnZXQ7DQorCQkJCQkJCWlmIChwcm9jZXNzb3JJbnN0YW5jZUlzU2luZ2xlQ29yZShpbnN0U3BlY1Byb2MpKSB7DQorCQkJCQkJCQlpZiAoKHBhY2tRTiArICI6OiIgKyBhc3NpZ25lZFRhcmdldEVsZW1lbnROYW1lKS5lcXVhbHMoYXNzaWduZWRUYXJnZXRRTikpIHsNCisJCQkJCQkJCQlyZXR1cm4gdHJ1ZTsNCisJCQkJCQkJCX0NCisJCQkJCQkJfQ0KKwkJCQkJCX0NCisJCQkJCX0NCisJCQkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsNCisJCQkJCWNvbnRpbnVlOw0KKwkJCQl9DQorCQkJfQ0KKwkJfQ0KKwkJcmV0dXJuIGZhbHNlOw0KKwl9DQorDQorCS8qKg0KKwkgKiBDaGVjayBpZiB0aGlzIFBhcnRpdGlvbiBpcyBhc3NpZ25lZCB0byBhIENQVS4NCisJICoNCisJICogQHBhcmFtIGkgdGhlIGkNCisJICogQHBhcmFtIGFzc2lnbm1lbnRzIHRoZSBhc3NpZ25tZW50cw0KKwkgKiBAcmV0dXJuIHRydWUsIGlmIGlzIGFzc2lnbmVkIDIgY29yZQ0KKwkgKi8NCisJcHVibGljIHN0YXRpYyBib29sZWFuIGlzQXNzaWduZWQyQ29yZShJbnN0YW5jZVNwZWNpZmljYXRpb24gaSwgRUxpc3Q8QXNzaWduPiBhc3NpZ25tZW50cykgew0KKwkJZm9yIChBc3NpZ24gdGhlQXNzaWdubWVudCA6IGFzc2lnbm1lbnRzKSB7DQorCQkJaWYgKHRoZUFzc2lnbm1lbnQgIT0gbnVsbCkgew0KKwkJCQl0cnkgew0KKwkJCQkJaWYgKHRoZUFzc2lnbm1lbnQuZ2V0RnJvbSgpLmNvbnRhaW5zKChPYmplY3QpIGkpICYmIGVsZW1lbnRJc1Byb2Nlc3Nvckluc3RhbmNlKHRoZUFzc2lnbm1lbnQuZ2V0VG8oKS5nZXQoMCkpKSB7DQorCQkJCQkJaWYgKCF0aGVBc3NpZ25tZW50LmdldEltcGxpZWRDb25zdHJhaW50KCkuaXNFbXB0eSgpICYmIHRoZUFzc2lnbm1lbnQuZ2V0SW1wbGllZENvbnN0cmFpbnQoKS5nZXQoMCkgIT0gbnVsbCkgew0KKwkJCQkJCQlyZXR1cm4gdHJ1ZTsNCisJCQkJCQl9IGVsc2Ugew0KKwkJCQkJCQkvLyBDaGVjayBpZiBpdCBpcyBhIHNpbmdsZS1jb3JlDQorCQkJCQkJCUVsZW1lbnQgZWxlbSA9IHRoZUFzc2lnbm1lbnQuZ2V0VG8oKS5nZXQoMCk7DQorCQkJCQkJCUluc3RhbmNlU3BlY2lmaWNhdGlvbiBpbnN0U3BlY1Byb2MgPSAoSW5zdGFuY2VTcGVjaWZpY2F0aW9uKSBlbGVtOw0KKwkJCQkJCQlpZiAocHJvY2Vzc29ySW5zdGFuY2VJc1NpbmdsZUNvcmUoaW5zdFNwZWNQcm9jKSkgew0KKwkJCQkJCQkJcmV0dXJuIHRydWU7DQorCQkJCQkJCX0NCisJCQkJCQl9DQorCQkJCQl9DQorCQkJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7DQorCQkJCQljb250aW51ZTsNCisJCQkJfQ0KKwkJCX0NCisJCX0NCisJCXJldHVybiBmYWxzZTsNCisJfQ0KKw0KKwkvLyAvKioNCisJLy8gKiBDaGVjayBpZiB0aGlzIFBhcnRpdGlvbiBpcyBhc3NpZ25lZCB0byBhIENQVQ0KKwkvLyAqIEBwYXJhbSBpDQorCS8vICogQHBhcmFtIGFzc2lnbm1lbnRzDQorCS8vICogQHJldHVybg0KKwkvLyAqLw0KKwkvLyBwdWJsaWMgc3RhdGljIGJvb2xlYW4gaXNBc3NpZ25lZDJDb3JlKEluc3RhbmNlU3BlY2lmaWNhdGlvbiBpLA0KKwkvLyBFTGlzdDxBc3NpZ24+IGFzc2lnbm1lbnRzKSB7DQorCS8vIGZvciAoQXNzaWduIHRoZUFzc2lnbm1lbnQgOiBhc3NpZ25tZW50cykgew0KKwkvLyBpZiAodGhlQXNzaWdubWVudCAhPSBudWxsKSB7DQorCS8vIGlmICh0aGVBc3NpZ25tZW50LmdldEZyb20oKS5jb250YWlucygoT2JqZWN0KWkpICYmDQorCS8vIGVsZW1lbnRJc1Byb2Nlc3Nvckluc3RhbmNlKHRoZUFzc2lnbm1lbnQuZ2V0VG8oKS5nZXQoMCkpICYmDQorCS8vICF0aGVBc3NpZ25tZW50LmdldEltcGxpZWRDb25zdHJhaW50KCkuaXNFbXB0eSgpJiYNCisJLy8gdGhlQXNzaWdubWVudC5nZXRJbXBsaWVkQ29uc3RyYWludCgpLmdldCgwKSE9bnVsbCApIHsNCisJLy8gcmV0dXJuIHRydWU7DQorCS8vIH0NCisJLy8gfQ0KKwkvLyB9DQorCS8vIHJldHVybiBmYWxzZTsNCisJLy8gfQ0KKw0KKwkvKioNCisJICogUmV0dXJucyBUUlVFIGlmIHRoZSBnaXZlbiBUYXNrIGlzIGFzc2lnbmVkIHRvIGEgQ29yZSBpbiB0aGUgRGVwbG95bWVudA0KKwkgKiBpZGVudGlmaWVkIGJ5IHRoZSBnaXZlbiBwYWNrYWdlLg0KKwkgKg0KKwkgKiBAcGFyYW0gdGFzayB0aGUgdGFzaw0KKwkgKiBAcGFyYW0gcGFjayB0aGUgcGFjaw0KKwkgKiBAcGFyYW0gYXNzaWdubWVudHMgdGhlIGFzc2lnbm1lbnRzDQorCSAqIEByZXR1cm4gdHJ1ZSwgaWYgaXMgdGFzayBhc3NpZ25lZCAyIGNvcmUNCisJICovDQorCXB1YmxpYyBzdGF0aWMgYm9vbGVhbiBpc1Rhc2tBc3NpZ25lZDJDb3JlKENIVGFzayB0YXNrLCBQYWNrYWdlIHBhY2ssIEVMaXN0PEFzc2lnbj4gYXNzaWdubWVudHMpIHsNCisJCVN0cmluZyB0YXNrTmFtZSA9IHRhc2suZ2V0Q0hSdFNwZWNpZmljYXRpb24oKS5nZXRDb250ZXh0KCkuZ2V0TmFtZSgpOw0KKwkJU3RyaW5nIHBhY2tRTiA9IHBhY2suZ2V0UXVhbGlmaWVkTmFtZSgpOw0KKwkJU3RyaW5nIGFzc2lnbmVkVGFyZ2V0UU4gPSAiIjsNCisJCVN0cmluZyBhc3NpZ25lZFRhcmdldEVsZW1lbnROYW1lID0gIiI7DQorDQorCQlmb3IgKEFzc2lnbiB0aGVBc3NpZ25tZW50IDogYXNzaWdubWVudHMpIHsNCisJCQlpZiAodGhlQXNzaWdubWVudCAhPSBudWxsKSB7DQorCQkJCXRyeSB7DQorCQkJCQlFbGVtZW50IGFzc2lnbm1lbnRTb3VyY2UgPSB0aGVBc3NpZ25tZW50LmdldEZyb20oKS5nZXQoMCk7DQorCQkJCQlFbGVtZW50IGFzc2lnbm1lbnRUYXJnZXQgPSB0aGVBc3NpZ25tZW50LmdldFRvKCkuZ2V0KDApOw0KKwkJCQkJYXNzaWduZWRUYXJnZXRRTiA9ICgoTmFtZWRFbGVtZW50KSBhc3NpZ25tZW50VGFyZ2V0KS5nZXRRdWFsaWZpZWROYW1lKCk7DQorCQkJCQlhc3NpZ25lZFRhcmdldEVsZW1lbnROYW1lID0gKChOYW1lZEVsZW1lbnQpIGFzc2lnbm1lbnRUYXJnZXQpLmdldExhYmVsKCk7DQorCQkJCQlpZiAoKHBhY2tRTiArICI6OiIgKyBhc3NpZ25lZFRhcmdldEVsZW1lbnROYW1lKS5lcXVhbHMoYXNzaWduZWRUYXJnZXRRTikgJiYgUXVlcnlVdGlscy5lbGVtZW50SXNTbG90SW5zdGFuY2UoYXNzaWdubWVudFNvdXJjZSkgJiYgdGhlQXNzaWdubWVudC5nZXRJbXBsaWVkQ29uc3RyYWludCgpICE9IG51bGwNCisJCQkJCQkJJiYgIXRoZUFzc2lnbm1lbnQuZ2V0SW1wbGllZENvbnN0cmFpbnQoKS5pc0VtcHR5KCkpIHsNCisJCQkJCQlTdHJpbmcgdGhlVGFza1ZhbHVlID0gZ2V0VGFza05hbWVGcm9tSW1wbGllZE5mcENvbnN0cmFpbnQodGhlQXNzaWdubWVudCk7DQorCQkJCQkJaWYgKHRoZVRhc2tWYWx1ZSAhPSBudWxsICYmIHRoZVRhc2tWYWx1ZS5sZW5ndGgoKSA+IDApIHsNCisJCQkJCQkJaWYgKHRoZVRhc2tWYWx1ZS5lcXVhbHModGFza05hbWUpKSB7DQorCQkJCQkJCQlyZXR1cm4gdHJ1ZTsNCisJCQkJCQkJfQ0KKwkJCQkJCX0NCisJCQkJCX0NCisJCQkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsNCisJCQkJCWNvbnRpbnVlOw0KKwkJCQl9DQorCQkJfQ0KKwkJfQ0KKwkJcmV0dXJuIGZhbHNlOw0KKwl9DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIHRhc2sgaXMgYXNzaWduZWQgdG8gYSBjb3JlLCBmYWxzZSBvdGhlcndpc2UuDQorCSAqDQorCSAqIEBwYXJhbSB0IHRoZSB0DQorCSAqIEBwYXJhbSBhc3NpZ25tZW50cyB0aGUgYXNzaWdubWVudHMNCisJICogQHJldHVybiB0cnVlIGlmIHRoZSBnaXZlbiB0YXNrIGlzIGFzc2lnbmVkIHRvIGEgY29yZQ0KKwkgKi8NCisJcHVibGljIHN0YXRpYyBib29sZWFuIGlzVGFza0Fzc2lnbmVkMkNvcmUoQ0hUYXNrIHQsIEVMaXN0PEFzc2lnbj4gYXNzaWdubWVudHMpIHsNCisJCWZvciAoQXNzaWduIHRoZUFzc2lnbm1lbnQgOiBhc3NpZ25tZW50cykgew0KKwkJCWlmICh0aGVBc3NpZ25tZW50ICE9IG51bGwpIHsNCisJCQkJRWxlbWVudCBhc3NpZ25tZW50U291cmNlID0gdGhlQXNzaWdubWVudC5nZXRGcm9tKCkuZ2V0KDApOw0KKwkJCQlpZiAoUXVlcnlVdGlscy5lbGVtZW50SXNTbG90SW5zdGFuY2UoYXNzaWdubWVudFNvdXJjZSkpIHsNCisJCQkJCUNIVGFzayB0aGVUYXNrID0gZ2V0VGFza0Zyb21TbG90KGFzc2lnbm1lbnRTb3VyY2UpOw0KKwkJCQkJaWYgKCh0aGVUYXNrICE9IG51bGwgJiYgdGhlVGFzay5lcXVhbHModCkpICYmIGVsZW1lbnRJc1Byb2Nlc3Nvckluc3RhbmNlKHRoZUFzc2lnbm1lbnQuZ2V0VG8oKS5nZXQoMCkpKSB7DQorCQkJCQkJcmV0dXJuIHRydWU7DQorCQkJCQl9DQorCQkJCX0NCisJCQl9DQorCQl9DQorCQlyZXR1cm4gZmFsc2U7DQorCX0NCisNCisJLyoqDQorCSAqIEdpdmVuIHRoZSBDb3JlIChhbmQgcmVsYXRlZCBwcm9jZXNzb3IpIGdldCB0aGUgbGlzdCBvZiBwYXJ0aXRpb25zIHRoYXQgYXJlDQorCSAqIGFzc2lnbmVkIHRvIGl0Lg0KKwkgKg0KKwkgKiBAcGFyYW0gY29yZSB0aGUgY29yZQ0KKwkgKiBAcGFyYW0gYXNzaWdubWVudHMgdGhlIGFzc2lnbm1lbnRzDQorCSAqIEByZXR1cm4gdGhlIHBhcnRpdGlvbnMgYXNzaWduZWQgMiBjb3JlDQorCSAqLw0KKwlwdWJsaWMgc3RhdGljIExpbmtlZEhhc2hTZXQ8T2JqZWN0PiBnZXRQYXJ0aXRpb25zQXNzaWduZWQyQ29yZShDSENvcmUgY29yZSwgRUxpc3Q8QXNzaWduPiBhc3NpZ25tZW50cykgew0KKwkJTGlua2VkSGFzaFNldDxPYmplY3Q+IHJlc3VsdCA9IG5ldyBMaW5rZWRIYXNoU2V0PE9iamVjdD4oKTsNCisJCUluc3RhbmNlU3BlY2lmaWNhdGlvbiBwcm9jZXNzb3JJbnN0YW5jZSA9IGNvcmUuZ2V0UHJvY2Vzc29ySW5zdGFuY2UoKTsNCisJCVN0cmluZyB0aGVDb3JlTmFtZSA9IGNvcmUuZ2V0TmFtZSgpOw0KKwkJU3RyaW5nIHRoZUNvcmVWYWx1ZSA9IG51bGw7DQorCQlmb3IgKEFzc2lnbiB0aGVBc3NpZ25tZW50IDogYXNzaWdubWVudHMpIHsNCisJCQlpZiAodGhlQXNzaWdubWVudCAhPSBudWxsKSB7DQorCQkJCXRyeSB7DQorCQkJCQlFbGVtZW50IGFzc2lnbm1lbnRTb3VyY2UgPSB0aGVBc3NpZ25tZW50LmdldEZyb20oKS5nZXQoMCk7DQorCQkJCQkvLyBPbmx5IGxvb2sgYXQgYXNzaWdubWVudHMgd2hlcmU6DQorCQkJCQkvLyBBU1NJR05NRU5UX1NPVVJDRSBpcyBhIFBhcnRpdGlvbg0KKwkJCQkJLy8gQVNTSUdOTUVOVF9UQVJHRVQgaXMgdGhlIFByb2Nlc3NvciB0aGF0IG93bnMgdGhlIGNvcmUNCisJCQkJCWlmICghUXVlcnlVdGlscy5lbGVtZW50SXNQYXJ0aXRpb25JbnN0YW5jZShhc3NpZ25tZW50U291cmNlKSB8fCAoIXRoZUFzc2lnbm1lbnQuZ2V0VG8oKS5jb250YWlucygoT2JqZWN0KSBwcm9jZXNzb3JJbnN0YW5jZSkpKSB7DQorCQkJCQkJY29udGludWU7DQorCQkJCQl9DQorCQkJCQkvLyBmb3VuZCBhbiBhc3NpZ25tZW50IGZvciB0aGUgcHJvY2Vzc29yIHRoYXQgb3ducyB0aGUgY29yZToNCisJCQkJCS8vIGxldCdzIGxvb2sgaW50byBpdCBzbyBzZWUgaWYgaXQgaXMgcmVsYXRlZCB0byB0aGUgY29yZSB3ZSBhcmUNCisJCQkJCS8vIGFuYWx5emluZw0KKwkJCQkJaWYgKHRoZUFzc2lnbm1lbnQuZ2V0SW1wbGllZENvbnN0cmFpbnQoKSAhPSBudWxsICYmICF0aGVBc3NpZ25tZW50LmdldEltcGxpZWRDb25zdHJhaW50KCkuaXNFbXB0eSgpKSB7DQorCQkJCQkJdGhlQ29yZVZhbHVlID0gZ2V0Q29yZU5hbWVGcm9tSW1wbGllZE5mcENvbnN0cmFpbnQodGhlQXNzaWdubWVudCk7DQorCQkJCQkJaWYgKHRoZUNvcmVWYWx1ZS5lcXVhbHModGhlQ29yZU5hbWUpKSB7DQorCQkJCQkJCS8vIGlmIHRhcmdldCBvZiBhc3NpZ25tZW50IGlzIGEgcGFydGl0aW9uDQorCQkJCQkJCXJlc3VsdC5hZGQoYXNzaWdubWVudFNvdXJjZSk7DQorCQkJCQkJfQ0KKwkJCQkJfSBlbHNlIHsNCisJCQkJCQlpZiAocHJvY2Vzc29ySW5zdGFuY2VJc1NpbmdsZUNvcmUocHJvY2Vzc29ySW5zdGFuY2UpKSB7DQorCQkJCQkJCS8vIElmIG5vIGNvcmUgaXMgc3BlY2lmaWVkIGluIHRoZSBJbXBsaWVkIENvbnN0cmFpbnQgYW5kIHRoZQ0KKwkJCQkJCQkvLyBQcm9jZXNzb3IgaGFzIG9ubHkgMSBDb3JlDQorCQkJCQkJCXJlc3VsdC5hZGQoYXNzaWdubWVudFNvdXJjZSk7DQorCQkJCQkJfQ0KKwkJCQkJfQ0KKwkJCQl9IGNhdGNoIChFeGNlcHRpb24gZSkgew0KKwkJCQkJY29udGludWU7DQorCQkJCX0NCisNCisJCQl9DQorCQl9DQorCQlyZXR1cm4gcmVzdWx0Ow0KKwl9DQorDQorCQ0KKwkvKioNCisJICogUmV0dXJucyB0aGUgbmFtZSBvZiB0aGUgQ29yZSB0byB3aGljaCB0aGUgZ2l2ZW4gYXNzaWdubWVudCBpcyByZWxhdGVkLg0KKwkgKg0KKwkgKiBAcGFyYW0gdGhlQXNzaWdubWVudCB0aGUgdGhlIGFzc2lnbm1lbnQNCisJICogQHJldHVybiB0aGUgbmFtZSBvZiB0aGUgQ29yZSB0byB3aGljaCB0aGVBc3NpZ25tZW50IGlzIHJlbGF0ZWQNCisJICovDQorCXB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldENvcmVOYW1lRnJvbUltcGxpZWROZnBDb25zdHJhaW50KEFzc2lnbiB0aGVBc3NpZ25tZW50KSB7DQorCQlTdHJpbmcgY29yZU5hbWUgPSBudWxsOw0KKwkJdHJ5IHsNCisJCQlOZnBDb25zdHJhaW50IHRoZUltcGxpZWROZnBDb25zdHJhaW50ID0gdGhlQXNzaWdubWVudC5nZXRJbXBsaWVkQ29uc3RyYWludCgpLmdldCgwKTsNCisJCQlDb25zdHJhaW50IGNuc3RyID0gdGhlSW1wbGllZE5mcENvbnN0cmFpbnQuZ2V0QmFzZV9Db25zdHJhaW50KCk7DQorCQkJVmFsdWVTcGVjaWZpY2F0aW9uIHZhbHVlU3BlYyA9IGNuc3RyLmdldFNwZWNpZmljYXRpb24oKTsNCisJCQlMaXRlcmFsU3RyaW5nIHZhbHVlID0gKExpdGVyYWxTdHJpbmcpIHZhbHVlU3BlYzsNCisJCQljb3JlTmFtZSA9IHZhbHVlLmdldFZhbHVlKCk7DQorCQl9IGNhdGNoIChFeGNlcHRpb24gZSkgew0KKwkJCVN5c3RlbS5vdXQucHJpbnRsbigiRXJyb3IgaW4gZ2V0Q29yZU5hbWVGcm9tSW1wbGllZE5mcENvbnN0cmFpbnQiKTsNCisJCX0NCisJCXJldHVybiBjb3JlTmFtZTsNCisJfQ0KKw0KKwkNCisJLyoqDQorCSAqIEdldHMgdGhlIHRhc2sgbmFtZSBmcm9tIGltcGxpZWQgbmZwIGNvbnN0cmFpbnQuDQorCSAqDQorCSAqIEBwYXJhbSB0aGVBc3NpZ25tZW50IHRoZSB0aGUgYXNzaWdubWVudA0KKwkgKiBAcmV0dXJuIHRoZSB0YXNrIG5hbWUgZnJvbSBpbXBsaWVkIG5mcCBjb25zdHJhaW50DQorCSAqLw0KKwlwcml2YXRlIHN0YXRpYyBTdHJpbmcgZ2V0VGFza05hbWVGcm9tSW1wbGllZE5mcENvbnN0cmFpbnQoQXNzaWduIHRoZUFzc2lnbm1lbnQpIHsNCisJCVN0cmluZyB0YXNrTmFtZSA9IG51bGw7DQorCQl0cnkgew0KKwkJCS8vIHRoZSBmaXJzdCBvbmUgaXMgdGhlIGNvcmUsIHRoZSBzZWNvbmQgb25lIGlzIHRoZSB0YXNrDQorCQkJTmZwQ29uc3RyYWludCB0aGVJbXBsaWVkTmZwQ29uc3RyYWludCA9IHRoZUFzc2lnbm1lbnQuZ2V0SW1wbGllZENvbnN0cmFpbnQoKS5nZXQoMSk7DQorCQkJQ29uc3RyYWludCBjbnN0ciA9IHRoZUltcGxpZWROZnBDb25zdHJhaW50LmdldEJhc2VfQ29uc3RyYWludCgpOw0KKwkJCVZhbHVlU3BlY2lmaWNhdGlvbiB2YWx1ZVNwZWMgPSBjbnN0ci5nZXRTcGVjaWZpY2F0aW9uKCk7DQorCQkJTGl0ZXJhbFN0cmluZyB2YWx1ZSA9IChMaXRlcmFsU3RyaW5nKSB2YWx1ZVNwZWM7DQorCQkJdGFza05hbWUgPSB2YWx1ZS5nZXRWYWx1ZSgpOw0KKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsNCisJCQlTeXN0ZW0ub3V0LnByaW50bG4oIkVycm9yIGluIGdldFRhc2tOYW1lRnJvbUltcGxpZWROZnBDb25zdHJhaW50Iik7DQorCQl9DQorCQlyZXR1cm4gdGFza05hbWU7DQorCX0NCisNCisJLyoqDQorCSAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gZWxlbWVudCBpcyBhIHBhcnRpdGlvbiBpbnN0YW5jZSwgZmFsc2Ugb3RoZXJ3aXNlLg0KKwkgKg0KKwkgKiBAcGFyYW0gZWxlbWVudCB0aGUgZWxlbWVudA0KKwkgKiBAcmV0dXJuIHRydWUgaWYgdGhlIGVsZW1lbnQgaXMgYSBwYXJ0aXRpb24gaW5zdGFuY2UsIGZhbHNlIG90aGVyd2lzZQ0KKwkgKi8NCisJcHVibGljIHN0YXRpYyBib29sZWFuIGVsZW1lbnRJc1BhcnRpdGlvbkluc3RhbmNlKEVsZW1lbnQgZWxlbWVudCkgew0KKwkJaWYgKCEoZWxlbWVudCBpbnN0YW5jZW9mIEluc3RhbmNlU3BlY2lmaWNhdGlvbikpIHsNCisJCQlyZXR1cm4gZmFsc2U7DQorCQl9DQorCQlJbnN0YW5jZVNwZWNpZmljYXRpb24gaXMgPSAoSW5zdGFuY2VTcGVjaWZpY2F0aW9uKSBlbGVtZW50Ow0KKwkJaWYgKGlzLmdldFF1YWxpZmllZE5hbWUoKSAhPSBudWxsICYmIFF1ZXJ5VXRpbHMuaXNQYXJ0aXRpb25JbnN0YW5jZShpcykpIHsNCisJCQlyZXR1cm4gdHJ1ZTsNCisJCX0NCisJCXJldHVybiBmYWxzZTsNCisJfQ0KKw0KKwkvKioNCisJICogUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZlbiBlbGVtZW50IGlzIGEgY29tcG9uZW50IGluc3RhbmNlLCBmYWxzZSBvdGhlcndpc2UuDQorCSAqDQorCSAqIEBwYXJhbSBlbGVtZW50IHRoZSBlbGVtZW50DQorCSAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgZWxlbWVudCBpcyBhIGNvbXBvbmVudCBpbnN0YW5jZSwgZmFsc2Ugb3RoZXJ3aXNlDQorCSAqLw0KKwlwdWJsaWMgc3RhdGljIGJvb2xlYW4gZWxlbWVudElzQ29tcG9uZW50SW5zdGFuY2UoRWxlbWVudCBlbGVtZW50KSB7DQorCQlpZiAoIShlbGVtZW50IGluc3RhbmNlb2YgSW5zdGFuY2VTcGVjaWZpY2F0aW9uKSkgew0KKwkJCXJldHVybiBmYWxzZTsNCisJCX0NCisJCUluc3RhbmNlU3BlY2lmaWNhdGlvbiBpcyA9IChJbnN0YW5jZVNwZWNpZmljYXRpb24pIGVsZW1lbnQ7DQorCQlpZiAoaXMuZ2V0UXVhbGlmaWVkTmFtZSgpICE9IG51bGwgJiYgUXVlcnlVdGlscy5pc0NvbXBvbmVudEluc3RhbmNlKGlzKSkgew0KKwkJCXJldHVybiB0cnVlOw0KKwkJfQ0KKwkJcmV0dXJuIGZhbHNlOw0KKwl9DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIGVsZW1lbnQgaXMgYSBwcm9jZXNzb3IgaW5zdGFuY2UsIGZhbHNlIG90aGVyd2lzZS4NCisJICoNCisJICogQHBhcmFtIGVsZW1lbnQgdGhlIGVsZW1lbnQNCisJICogQHJldHVybiB0cnVlIGlmIHRoZSBlbGVtZW50IGlzIGEgcHJvY2Vzc29yIGluc3RhbmNlLCBmYWxzZSBvdGhlcndpc2UNCisJICovDQorCXB1YmxpYyBzdGF0aWMgYm9vbGVhbiBlbGVtZW50SXNQcm9jZXNzb3JJbnN0YW5jZShFbGVtZW50IGVsZW1lbnQpIHsNCisJCWlmICghKGVsZW1lbnQgaW5zdGFuY2VvZiBJbnN0YW5jZVNwZWNpZmljYXRpb24pKSB7DQorCQkJcmV0dXJuIGZhbHNlOw0KKwkJfQ0KKwkJSW5zdGFuY2VTcGVjaWZpY2F0aW9uIGlzID0gKEluc3RhbmNlU3BlY2lmaWNhdGlvbikgZWxlbWVudDsNCisJCWlmIChpcy5nZXRRdWFsaWZpZWROYW1lKCkgIT0gbnVsbCAmJiBRdWVyeVV0aWxzLmlzUHJvY2Vzc29ySW5zdGFuY2UoaXMpKSB7DQorCQkJcmV0dXJuIHRydWU7DQorCQl9DQorCQlyZXR1cm4gZmFsc2U7DQorCX0NCisNCisJLyoqDQorCSAqIEdpdmVuIHRoZSBDb3JlIChhbmQgcmVsYXRlZCBwcm9jZXNzb3IpIGdldCB0aGUgbGlzdCBvZiBjb21wb25lbnRzIHRoYXQgYXJlDQorCSAqIGFzc2lnbmVkIHRvIGl0Lg0KKwkgKg0KKwkgKiBAcGFyYW0gY29yZSB0aGUgY29yZQ0KKwkgKiBAcGFyYW0gYXNzaWdubWVudHMgdGhlIGFzc2lnbm1lbnRzDQorCSAqIEByZXR1cm4gdGhlIGNvbXBvbmVudHMgYXNzaWduZWQgMiBjb3JlDQorCSAqLw0KKwlwdWJsaWMgc3RhdGljIExpbmtlZEhhc2hTZXQ8T2JqZWN0PiBnZXRDb21wb25lbnRzQXNzaWduZWQyQ29yZShDSENvcmUgY29yZSwgRUxpc3Q8QXNzaWduPiBhc3NpZ25tZW50cykgew0KKwkJTGlua2VkSGFzaFNldDxPYmplY3Q+IHJlc3VsdCA9IG5ldyBMaW5rZWRIYXNoU2V0PE9iamVjdD4oKTsNCisJCUluc3RhbmNlU3BlY2lmaWNhdGlvbiBwcm9jZXNzb3JJbnN0YW5jZSA9IGNvcmUuZ2V0UHJvY2Vzc29ySW5zdGFuY2UoKTsNCisJCVN0cmluZyB0aGVDb3JlTmFtZSA9IGNvcmUuZ2V0TmFtZSgpOw0KKwkJU3RyaW5nIHRoZUNvcmVWYWx1ZSA9IG51bGw7DQorDQorCQlmb3IgKEFzc2lnbiB0aGVBc3NpZ25tZW50IDogYXNzaWdubWVudHMpIHsNCisJCQlpZiAodGhlQXNzaWdubWVudCAhPSBudWxsKSB7DQorCQkJCXRyeSB7DQorCQkJCQkvLyBPbmx5IGxvb2sgYXQgYXNzaWdubWVudHMgd2hlcmU6DQorCQkJCQkvLyBBU1NJR05NRU5UX1NPVVJDRSBpcyBhIENvbXBvbmVudA0KKwkJCQkJLy8gQVNTSUdOTUVOVF9UQVJHRVQgaXMgdGhlIFByb2Nlc3NvciB0aGF0IG93bnMgdGhlIGNvcmUNCisJCQkJCUVsZW1lbnQgYXNzaWdubWVudFNvdXJjZSA9IHRoZUFzc2lnbm1lbnQuZ2V0RnJvbSgpLmdldCgwKTsNCisJCQkJCWlmICghUXVlcnlVdGlscy5lbGVtZW50SXNDb21wb25lbnRJbnN0YW5jZShhc3NpZ25tZW50U291cmNlKSB8fCAhdGhlQXNzaWdubWVudC5nZXRUbygpLmNvbnRhaW5zKChPYmplY3QpIHByb2Nlc3Nvckluc3RhbmNlKSkgew0KKwkJCQkJCWNvbnRpbnVlOw0KKwkJCQkJfQ0KKw0KKwkJCQkJLy8gZm91bmQgYW4gYXNzaWdubWVudCBmb3IgdGhlIHByb2Nlc3NvciB0aGF0IG93bnMgdGhlIGNvcmU6DQorCQkJCQkvLyBsZXQncyBsb29rIGludG8gaXQgc28gc2VlIGlmIGl0IGlzIHJlbGF0ZWQgdG8gdGhlIGNvcmUgd2UgYXJlDQorCQkJCQkvLyBhbmFseXppbmcNCisJCQkJCWlmICh0aGVBc3NpZ25tZW50LmdldEltcGxpZWRDb25zdHJhaW50KCkgIT0gbnVsbCAmJiAhdGhlQXNzaWdubWVudC5nZXRJbXBsaWVkQ29uc3RyYWludCgpLmlzRW1wdHkoKSkgew0KKwkJCQkJCXRoZUNvcmVWYWx1ZSA9IGdldENvcmVOYW1lRnJvbUltcGxpZWROZnBDb25zdHJhaW50KHRoZUFzc2lnbm1lbnQpOw0KKwkJCQkJCWlmICh0aGVDb3JlVmFsdWUuZXF1YWxzKHRoZUNvcmVOYW1lKSkgew0KKwkJCQkJCQlyZXN1bHQuYWRkKGFzc2lnbm1lbnRTb3VyY2UpOw0KKwkJCQkJCX0NCisJCQkJCX0gZWxzZSB7DQorCQkJCQkJaWYgKHByb2Nlc3Nvckluc3RhbmNlSXNTaW5nbGVDb3JlKHByb2Nlc3Nvckluc3RhbmNlKSkgew0KKwkJCQkJCQkvLyBJZiBubyBjb3JlIGlzIHNwZWNpZmllZCBpbiB0aGUgSW1wbGllZCBDb25zdHJhaW50IGFuZCB0aGUNCisJCQkJCQkJLy8gUHJvY2Vzc29yIGhhcyBvbmx5IDEgQ29yZQ0KKwkJCQkJCQlyZXN1bHQuYWRkKGFzc2lnbm1lbnRTb3VyY2UpOw0KKwkJCQkJCX0NCisJCQkJCX0NCisJCQkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsNCisJCQkJCWNvbnRpbnVlOw0KKwkJCQl9DQorDQorCQkJfQ0KKwkJfQ0KKwkJcmV0dXJuIHJlc3VsdDsNCisJfQ0KKw0KKwkvKioNCisJICogR2l2ZW4gdGhlIENvcmUgKGFuZCByZWxhdGVkIHByb2Nlc3NvcikgZ2V0IHRoZSBsaXN0IG9mIHRhc2tzIHRoYXQgYXJlDQorCSAqIGFzc2lnbmVkIHRvIGl0Lg0KKwkgKg0KKwkgKiBAcGFyYW0gY29yZSB0aGUgY29yZQ0KKwkgKiBAcGFyYW0gcGFjayB0aGUgcGFjaw0KKwkgKiBAcGFyYW0gYXNzaWdubWVudHMgdGhlIGFzc2lnbm1lbnRzDQorCSAqIEByZXR1cm4gdGhlIHRhc2tzIGFzc2lnbmVkIDIgY29yZQ0KKwkgKi8NCisJcHVibGljIHN0YXRpYyBMaW5rZWRIYXNoU2V0PE9iamVjdD4gZ2V0VGFza3NBc3NpZ25lZDJDb3JlKENIQ29yZSBjb3JlLCBQYWNrYWdlIHBhY2ssIEVMaXN0PEFzc2lnbj4gYXNzaWdubWVudHMpIHsNCisJCVN0cmluZyBwYWNrUU4gPSBwYWNrLmdldFF1YWxpZmllZE5hbWUoKTsNCisJCUxpbmtlZEhhc2hTZXQ8T2JqZWN0PiByZXN1bHQgPSBuZXcgTGlua2VkSGFzaFNldDxPYmplY3Q+KCk7DQorCQlJbnN0YW5jZVNwZWNpZmljYXRpb24gcHJvY2Vzc29ySW5zdGFuY2UgPSBjb3JlLmdldFByb2Nlc3Nvckluc3RhbmNlKCk7DQorCQlTdHJpbmcgdGhlQ29yZU5hbWUgPSBjb3JlLmdldE5hbWUoKTsNCisJCVN0cmluZyB0aGVDb3JlVmFsdWUgPSBudWxsOw0KKwkJU3RyaW5nIHRoZVRhc2tWYWx1ZSA9IG51bGw7DQorDQorCQlmb3IgKEFzc2lnbiB0aGVBc3NpZ25tZW50IDogYXNzaWdubWVudHMpIHsNCisJCQlpZiAodGhlQXNzaWdubWVudCAhPSBudWxsKSB7DQorCQkJCXRyeSB7DQorCQkJCQlpZiAodGhlQXNzaWdubWVudC5nZXRUbygpLmNvbnRhaW5zKChPYmplY3QpIHByb2Nlc3Nvckluc3RhbmNlKSkgew0KKwkJCQkJCS8vIGZvdW5kIGFuIGFzc2lnbm1lbnQgZm9yIHRoZSBwcm9jZXNzb3IgdGhhdCBvd25zIHRoZSBjb3JlOg0KKwkJCQkJCS8vIGxldCdzIGxvb2sgaW50byBpdCBzbyBzZWUgaWYgaXQgaXMgcmVsYXRlZCB0byB0aGUgY29yZSB3ZSBhcmUNCisJCQkJCQkvLyBhbmFseXppbmcNCisJCQkJCQlFbGVtZW50IGFzc2lnbm1lbnRTb3VyY2UgPSB0aGVBc3NpZ25tZW50LmdldEZyb20oKS5nZXQoMCk7DQorCQkJCQkJRWxlbWVudCBhc3NpZ25tZW50VGFyZ2V0ID0gdGhlQXNzaWdubWVudC5nZXRUbygpLmdldCgwKTsNCisJCQkJCQlTdHJpbmcgYXNzaWduZWRUYXJnZXRRTiA9ICgoTmFtZWRFbGVtZW50KSBhc3NpZ25tZW50VGFyZ2V0KS5nZXRRdWFsaWZpZWROYW1lKCk7DQorCQkJCQkJU3RyaW5nIGFzc2lnbmVkVGFyZ2V0RWxlbWVudE5hbWUgPSAoKE5hbWVkRWxlbWVudCkgYXNzaWdubWVudFRhcmdldCkuZ2V0TGFiZWwoKTsNCisJCQkJCQlFTGlzdDxDSFRhc2s+IGNoVGFza0xpc3QgPSBuZXcgQmFzaWNFTGlzdDxDSFRhc2s+KCk7DQorDQorCQkJCQkJaWYgKChwYWNrUU4gKyAiOjoiICsgYXNzaWduZWRUYXJnZXRFbGVtZW50TmFtZSkuZXF1YWxzKGFzc2lnbmVkVGFyZ2V0UU4pICYmIHRoZUFzc2lnbm1lbnQuZ2V0SW1wbGllZENvbnN0cmFpbnQoKSAhPSBudWxsICYmICF0aGVBc3NpZ25tZW50LmdldEltcGxpZWRDb25zdHJhaW50KCkuaXNFbXB0eSgpKSB7DQorCQkJCQkJCXRoZUNvcmVWYWx1ZSA9IGdldENvcmVOYW1lRnJvbUltcGxpZWROZnBDb25zdHJhaW50KHRoZUFzc2lnbm1lbnQpOw0KKwkJCQkJCQl0aGVUYXNrVmFsdWUgPSBnZXRUYXNrTmFtZUZyb21JbXBsaWVkTmZwQ29uc3RyYWludCh0aGVBc3NpZ25tZW50KTsNCisNCisJCQkJCQkJaWYgKHRoZUNvcmVWYWx1ZS5lcXVhbHModGhlQ29yZU5hbWUpKSB7DQorCQkJCQkJCQlpZiAoUXVlcnlVdGlscy5lbGVtZW50SXNTbG90SW5zdGFuY2UoYXNzaWdubWVudFNvdXJjZSkpIHsNCisJCQkJCQkJCQljaFRhc2tMaXN0ID0gZ2V0QWxsVGFza3NGcm9tU2xvdChhc3NpZ25tZW50U291cmNlKTsNCisJCQkJCQkJCQlmb3IgKENIVGFzayB0aGVDaFRhc2sgOiBjaFRhc2tMaXN0KSB7DQorCQkJCQkJCQkJCVN0cmluZyB0aGVUYXNrTmFtZSA9IHRoZUNoVGFzay5nZXRDSFJ0U3BlY2lmaWNhdGlvbigpLmdldENvbnRleHQoKS5nZXROYW1lKCk7DQorCQkJCQkJCQkJCWlmICh0aGVDaFRhc2sgIT0gbnVsbCAmJiB0aGVUYXNrTmFtZS5lcXVhbHModGhlVGFza1ZhbHVlKSkgew0KKwkJCQkJCQkJCQkJcmVzdWx0LmFkZCh0aGVDaFRhc2spOw0KKwkJCQkJCQkJCQl9DQorCQkJCQkJCQkJfQ0KKwkJCQkJCQkJfQ0KKwkJCQkJCQl9IGVsc2Ugew0KKwkJCQkJCQkJLy8gSWYgbm8gY29yZSBpcyBzcGVjaWZpZWQgaW4gdGhlIEltcGxpZWQgQ29uc3RyYWludCBhbmQgdGhlDQorCQkJCQkJCQkvLyBQcm9jZXNzb3IgaGFzIG9ubHkgMSBDb3JlDQorCQkJCQkJCQlpZiAocHJvY2Vzc29ySW5zdGFuY2VJc1NpbmdsZUNvcmUocHJvY2Vzc29ySW5zdGFuY2UpICYmIFF1ZXJ5VXRpbHMuZWxlbWVudElzU2xvdEluc3RhbmNlKGFzc2lnbm1lbnRTb3VyY2UpKSB7DQorCQkJCQkJCQkJY2hUYXNrTGlzdCA9IGdldEFsbFRhc2tzRnJvbVNsb3QoYXNzaWdubWVudFNvdXJjZSk7DQorCQkJCQkJCQkJZm9yIChDSFRhc2sgdGhlQ2hUYXNrIDogY2hUYXNrTGlzdCkgew0KKwkJCQkJCQkJCQlTdHJpbmcgdGhlVGFza05hbWUgPSB0aGVDaFRhc2suZ2V0Q0hSdFNwZWNpZmljYXRpb24oKS5nZXRDb250ZXh0KCkuZ2V0TmFtZSgpOw0KKwkJCQkJCQkJCQlpZiAodGhlQ2hUYXNrICE9IG51bGwgJiYgdGhlVGFza05hbWUuZXF1YWxzKHRoZVRhc2tWYWx1ZSkpIHsNCisJCQkJCQkJCQkJCXJlc3VsdC5hZGQodGhlQ2hUYXNrKTsNCisJCQkJCQkJCQkJfQ0KKwkJCQkJCQkJCX0NCisJCQkJCQkJCX0NCisJCQkJCQkJfQ0KKwkJCQkJCX0NCisJCQkJCX0NCisJCQkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsNCisJCQkJCWNvbnRpbnVlOw0KKwkJCQl9DQorCQkJfQ0KKwkJfQ0KKwkJcmV0dXJuIHJlc3VsdDsNCisJfQ0KKw0KKwkNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIGxpc3Qgb2YgQ29tcG9uZW50IHRvIENvcmUgYXNzaWdubWVudHMgaW4gdGhlIGdpdmVuIHZpZXcgaW4gdGhlIGdpdmVuIG1vZGVsLg0KKwkgKg0KKwkgKiBAcGFyYW0gdW1sTW9kZWwgdGhlIHVtbCBtb2RlbA0KKwkgKiBAcGFyYW0gdmlld05hbWUgdGhlIHZpZXcgbmFtZQ0KKwkgKiBAcmV0dXJuIHRoZSBjb21wb25lbnQgMiBjb3JlIGFzc2lnbm1lbnRzDQorCSAqIEB0aHJvd3MgTW9kZWxFcnJvciB0aGUgbW9kZWwgZXJyb3INCisJICovDQorCXB1YmxpYyBzdGF0aWMgRUxpc3Q8QXNzaWduPiBnZXRDb21wb25lbnQyQ29yZUFzc2lnbm1lbnRzKE1vZGVsIHVtbE1vZGVsLCBTdHJpbmcgdmlld05hbWUpIHRocm93cyBNb2RlbEVycm9yIHsNCisJCS8vIExCIDIwMTUwNzA4IHdlIG5vdyBsb29rIGZvciBhc3NpZ25tZW50cyBpbiB0aGUgQ0hHQSByZXNvdXJjZSBwbGF0Zm9ybQ0KKwkJLy8gY29tcG9uZW50DQorCQkvLyBQYWNrYWdlIGNtcHYgPSBDSEVTU1Byb2ZpbGVNYW5hZ2VyLmdldFZpZXdCeVN0ZXJlb3R5cGUodW1sTW9kZWwsDQorCQkvLyB2aWV3TmFtZSk7DQorCQkvLyBjbXB2ID0gUXVlcnlVdGlscy5nZXRSZXNvdXJjZVBsYXRmb3JtUGFja2FnZShjbXB2KTsNCisNCisJCUNvbXBvbmVudCBycGMgPSBRdWVyeVV0aWxzLmdldFJlc291cmNlUGxhdGZvcm1Db21wb25lbnQodW1sTW9kZWwsIHZpZXdOYW1lKTsNCisJCUVMaXN0PEVsZW1lbnQ+IGFsbCA9IHJwYy5hbGxPd25lZEVsZW1lbnRzKCk7DQorCQlFTGlzdDxBc3NpZ24+IGFzc2lnbm1lbnRzID0gbmV3IEJhc2ljRUxpc3Q8QXNzaWduPigpOw0KKwkJU3RlcmVvdHlwZSBzdGVyZW8gPSBudWxsOw0KKwkJZm9yIChFbGVtZW50IGVsZW1lbnQgOiBhbGwpIHsNCisJCQlpZiAoKGVsZW1lbnQuZ2V0QXBwbGllZFN0ZXJlb3R5cGUoTUFSVEVfQVNTSUdOKSAhPSBudWxsKSkgew0KKwkJCQlzdGVyZW8gPSBlbGVtZW50LmdldEFwcGxpZWRTdGVyZW90eXBlKE1BUlRFX0FTU0lHTik7DQorCQkJCUVPYmplY3QgZW9iaiA9IGVsZW1lbnQuZ2V0U3RlcmVvdHlwZUFwcGxpY2F0aW9uKHN0ZXJlbyk7DQorCQkJCUFzc2lnbiBhID0gKEFzc2lnbikgZW9iajsNCisJCQkJRWxlbWVudCBhc3NpZ25tZW50U291cmNlID0gYS5nZXRGcm9tKCkuZ2V0KDApOw0KKwkJCQlFbGVtZW50IGFzc2lnbm1lbnRUYXJnZXQgPSBhLmdldFRvKCkuZ2V0KDApOw0KKwkJCQkvLyBTT1VSQ0UgbXVzdCBiZSBhIENvbXBvbmVudA0KKwkJCQkvLyBUQVJHRVQgbXVzdCBiZSBhIFByb2Nlc3Nvcg0KKwkJCQlpZiAoZWxlbWVudElzUHJvY2Vzc29ySW5zdGFuY2UoYXNzaWdubWVudFRhcmdldCkpIHsNCisJCQkJCWlmIChlbGVtZW50SXNDb21wb25lbnRJbnN0YW5jZShhc3NpZ25tZW50U291cmNlKSkgew0KKwkJCQkJCUluc3RhbmNlU3BlY2lmaWNhdGlvbiBjb21wb25lbnRJbnN0ID0gKEluc3RhbmNlU3BlY2lmaWNhdGlvbikgYXNzaWdubWVudFNvdXJjZTsNCisJCQkJCQlpZiAoaXNDb21wb25lbnRJbnN0YW5jZShjb21wb25lbnRJbnN0KSkgew0KKwkJCQkJCQlhc3NpZ25tZW50cy5hZGQoYSk7DQorCQkJCQkJfQ0KKwkJCQkJfQ0KKwkJCQl9DQorCQkJfQ0KKwkJfQ0KKwkJcmV0dXJuIGFzc2lnbm1lbnRzOw0KKwl9DQorDQorCQ0KKwkvKioNCisJICogUmV0dXJucyB0aGUgbGlzdCBvZiBDb21wb25lbnQgdG8gUGFydGl0aW9uIGFzc2lnbm1lbnRzIGluIHRoZSBnaXZlbiB2aWV3IGluIHRoZSBnaXZlbiBtb2RlbC4NCisJICoNCisJICogQHBhcmFtIHVtbE1vZGVsIHRoZSB1bWwgbW9kZWwNCisJICogQHBhcmFtIHZpZXdOYW1lIHRoZSB2aWV3IG5hbWUNCisJICogQHJldHVybiB0aGUgY29tcG9uZW50IDIgcGFydGl0aW9uIGFzc2lnbm1lbnRzDQorCSAqIEB0aHJvd3MgTW9kZWxFcnJvciB0aGUgbW9kZWwgZXJyb3INCisJICovDQorCXB1YmxpYyBzdGF0aWMgRUxpc3Q8QXNzaWduPiBnZXRDb21wb25lbnQyUGFydGl0aW9uQXNzaWdubWVudHMoTW9kZWwgdW1sTW9kZWwsIFN0cmluZyB2aWV3TmFtZSkgdGhyb3dzIE1vZGVsRXJyb3Igew0KKwkJLy8gTEIgMjAxNTA3MDggd2Ugbm93IGxvb2sgZm9yIGFzc2lnbm1lbnRzIGluIHRoZSBDSEdBIHJlc291cmNlIHBsYXRmb3JtDQorCQkvLyBjb21wb25lbnQNCisJCS8vIFBhY2thZ2UgY21wdiA9IENIRVNTUHJvZmlsZU1hbmFnZXIuZ2V0Vmlld0J5U3RlcmVvdHlwZSh1bWxNb2RlbCwNCisJCS8vIHZpZXdOYW1lKTsNCisJCS8vIGNtcHYgPSBRdWVyeVV0aWxzLmdldFJlc291cmNlUGxhdGZvcm1QYWNrYWdlKGNtcHYpOw0KKw0KKwkJQ29tcG9uZW50IHJwYyA9IFF1ZXJ5VXRpbHMuZ2V0UmVzb3VyY2VQbGF0Zm9ybUNvbXBvbmVudCh1bWxNb2RlbCwgdmlld05hbWUpOw0KKwkJRUxpc3Q8RWxlbWVudD4gYWxsID0gcnBjLmFsbE93bmVkRWxlbWVudHMoKTsNCisJCUVMaXN0PEFzc2lnbj4gYXNzaWdubWVudHMgPSBuZXcgQmFzaWNFTGlzdDxBc3NpZ24+KCk7DQorCQlTdGVyZW90eXBlIHN0ZXJlbyA9IG51bGw7DQorCQlmb3IgKEVsZW1lbnQgZWxlbWVudCA6IGFsbCkgew0KKwkJCWlmICgoZWxlbWVudC5nZXRBcHBsaWVkU3RlcmVvdHlwZShNQVJURV9BU1NJR04pICE9IG51bGwpKSB7DQorCQkJCXN0ZXJlbyA9IGVsZW1lbnQuZ2V0QXBwbGllZFN0ZXJlb3R5cGUoTUFSVEVfQVNTSUdOKTsNCisJCQkJRU9iamVjdCBlb2JqID0gZWxlbWVudC5nZXRTdGVyZW90eXBlQXBwbGljYXRpb24oc3RlcmVvKTsNCisJCQkJQXNzaWduIGEgPSAoQXNzaWduKSBlb2JqOw0KKwkJCQlFbGVtZW50IGFzc2lnbm1lbnRTb3VyY2UgPSBhLmdldEZyb20oKS5nZXQoMCk7DQorCQkJCUVsZW1lbnQgYXNzaWdubWVudFRhcmdldCA9IGEuZ2V0VG8oKS5nZXQoMCk7DQorCQkJCS8vIFNPVVJDRSBtdXN0IGJlIGEgQ29tcG9uZW50DQorCQkJCS8vIFRBUkdFVCBtdXN0IGJlIGEgUGFydGl0aW9uDQorCQkJCWlmIChlbGVtZW50SXNQYXJ0aXRpb25JbnN0YW5jZShhc3NpZ25tZW50VGFyZ2V0KSkgew0KKwkJCQkJaWYgKGVsZW1lbnRJc0NvbXBvbmVudEluc3RhbmNlKGFzc2lnbm1lbnRTb3VyY2UpKSB7DQorCQkJCQkJSW5zdGFuY2VTcGVjaWZpY2F0aW9uIGNvbXBvbmVudEluc3QgPSAoSW5zdGFuY2VTcGVjaWZpY2F0aW9uKSBhc3NpZ25tZW50U291cmNlOw0KKwkJCQkJCWlmIChpc0NvbXBvbmVudEluc3RhbmNlKGNvbXBvbmVudEluc3QpKSB7DQorCQkJCQkJCWFzc2lnbm1lbnRzLmFkZChhKTsNCisJCQkJCQl9DQorCQkJCQl9DQorCQkJCX0NCisJCQl9DQorCQl9DQorCQlyZXR1cm4gYXNzaWdubWVudHM7DQorCX0NCisNCisJDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSBsaXN0IG9mIFBhcnRpdGlvbiB0byBDb3JlIGFzc2lnbm1lbnRzIGluIHRoZSBnaXZlbiB2aWV3IGluIHRoZSBnaXZlbiBtb2RlbC4NCisJICoNCisJICogQHBhcmFtIHVtbE1vZGVsIHRoZSB1bWwgbW9kZWwNCisJICogQHBhcmFtIHZpZXdOYW1lIHRoZSB2aWV3IG5hbWUNCisJICogQHJldHVybiB0aGUgcGFydGl0aW9uIDIgY29yZSBhc3NpZ25tZW50cw0KKwkgKiBAdGhyb3dzIE1vZGVsRXJyb3IgdGhlIG1vZGVsIGVycm9yDQorCSAqLw0KKwlwdWJsaWMgc3RhdGljIEVMaXN0PEFzc2lnbj4gZ2V0UGFydGl0aW9uMkNvcmVBc3NpZ25tZW50cyhNb2RlbCB1bWxNb2RlbCwgU3RyaW5nIHZpZXdOYW1lKSB0aHJvd3MgTW9kZWxFcnJvciB7DQorCQkvLyBMQiAyMDE1MDcwOCB3ZSBub3cgbG9vayBmb3IgYXNzaWdubWVudHMgaW4gdGhlIENIR0EgcmVzb3VyY2UgcGxhdGZvcm0NCisJCS8vIGNvbXBvbmVudA0KKwkJLy8gUGFja2FnZSBjbXB2ID0gQ0hFU1NQcm9maWxlTWFuYWdlci5nZXRWaWV3QnlTdGVyZW90eXBlKHVtbE1vZGVsLA0KKwkJLy8gdmlld05hbWUpOw0KKwkJLy8gY21wdiA9IFF1ZXJ5VXRpbHMuZ2V0UmVzb3VyY2VQbGF0Zm9ybVBhY2thZ2UoY21wdik7DQorDQorCQlDb21wb25lbnQgcnBjID0gUXVlcnlVdGlscy5nZXRSZXNvdXJjZVBsYXRmb3JtQ29tcG9uZW50KHVtbE1vZGVsLCB2aWV3TmFtZSk7DQorCQlFTGlzdDxFbGVtZW50PiBhbGwgPSBycGMuYWxsT3duZWRFbGVtZW50cygpOw0KKwkJRUxpc3Q8QXNzaWduPiBhc3NpZ25tZW50cyA9IG5ldyBCYXNpY0VMaXN0PEFzc2lnbj4oKTsNCisJCVN0ZXJlb3R5cGUgc3RlcmVvID0gbnVsbDsNCisJCWZvciAoRWxlbWVudCBlbGVtZW50IDogYWxsKSB7DQorCQkJaWYgKChlbGVtZW50LmdldEFwcGxpZWRTdGVyZW90eXBlKE1BUlRFX0FTU0lHTikgIT0gbnVsbCkpIHsNCisJCQkJc3RlcmVvID0gZWxlbWVudC5nZXRBcHBsaWVkU3RlcmVvdHlwZShNQVJURV9BU1NJR04pOw0KKwkJCQlFT2JqZWN0IGVvYmogPSBlbGVtZW50LmdldFN0ZXJlb3R5cGVBcHBsaWNhdGlvbihzdGVyZW8pOw0KKwkJCQlBc3NpZ24gYSA9IChBc3NpZ24pIGVvYmo7DQorCQkJCUVsZW1lbnQgYXNzaWdubWVudFNvdXJjZSA9IGEuZ2V0RnJvbSgpLmdldCgwKTsNCisJCQkJRWxlbWVudCBhc3NpZ25tZW50VGFyZ2V0ID0gYS5nZXRUbygpLmdldCgwKTsNCisJCQkJLy8gU09VUkNFIG11c3QgYmUgYSBQYXJ0aXRpb24NCisJCQkJLy8gVEFSR0VUIG11c3QgYmUgYSBQcm9jZXNzb3INCisJCQkJaWYgKGVsZW1lbnRJc1BhcnRpdGlvbkluc3RhbmNlKGFzc2lnbm1lbnRTb3VyY2UpICYmIGVsZW1lbnRJc1Byb2Nlc3Nvckluc3RhbmNlKGFzc2lnbm1lbnRUYXJnZXQpKSB7DQorCQkJCQlhc3NpZ25tZW50cy5hZGQoYSk7DQorCQkJCX0NCisJCQl9DQorCQl9DQorCQlyZXR1cm4gYXNzaWdubWVudHM7DQorCX0NCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIGxpc3Qgb2YgVGFzayB0byBDb3JlIGFzc2lnbm1lbnRzIGluIHRoZSBnaXZlbiB2aWV3IGluIHRoZSBnaXZlbiBtb2RlbC4NCisJICoNCisJICogQHBhcmFtIHVtbE1vZGVsIHRoZSB1bWwgbW9kZWwNCisJICogQHBhcmFtIHZpZXdOYW1lIHRoZSB2aWV3IG5hbWUNCisJICogQHJldHVybiB0aGUgdGFzayAyIGNvcmUgYXNzaWdubWVudHMNCisJICogQHRocm93cyBNb2RlbEVycm9yIHRoZSBtb2RlbCBlcnJvcg0KKwkgKi8NCisJcHVibGljIHN0YXRpYyBFTGlzdDxBc3NpZ24+IGdldFRhc2syQ29yZUFzc2lnbm1lbnRzKE1vZGVsIHVtbE1vZGVsLCBTdHJpbmcgdmlld05hbWUpIHRocm93cyBNb2RlbEVycm9yIHsNCisJCS8vIExCIDIwMTUwNzA4IHdlIG5vdyBsb29rIGZvciBhc3NpZ25tZW50cyBpbiB0aGUgQ0hHQSByZXNvdXJjZSBwbGF0Zm9ybQ0KKwkJLy8gY29tcG9uZW50DQorCQkvLyBQYWNrYWdlIGNtcHYgPSBDSEVTU1Byb2ZpbGVNYW5hZ2VyLmdldFZpZXdCeVN0ZXJlb3R5cGUodW1sTW9kZWwsDQorCQkvLyB2aWV3TmFtZSk7DQorCQkvLyBjbXB2ID0gUXVlcnlVdGlscy5nZXRSZXNvdXJjZVBsYXRmb3JtUGFja2FnZShjbXB2KTsNCisNCisJCUNvbXBvbmVudCBycGMgPSBRdWVyeVV0aWxzLmdldFJlc291cmNlUGxhdGZvcm1Db21wb25lbnQodW1sTW9kZWwsIHZpZXdOYW1lKTsNCisJCUVMaXN0PEVsZW1lbnQ+IGFsbCA9IHJwYy5hbGxPd25lZEVsZW1lbnRzKCk7DQorCQlFTGlzdDxBc3NpZ24+IGFzc2lnbm1lbnRzID0gbmV3IEJhc2ljRUxpc3Q8QXNzaWduPigpOw0KKwkJU3RlcmVvdHlwZSBzdGVyZW8gPSBudWxsOw0KKwkJZm9yIChFbGVtZW50IGVsZW1lbnQgOiBhbGwpIHsNCisJCQlpZiAoKGVsZW1lbnQuZ2V0QXBwbGllZFN0ZXJlb3R5cGUoTUFSVEVfQVNTSUdOKSAhPSBudWxsKSkgew0KKwkJCQlzdGVyZW8gPSBlbGVtZW50LmdldEFwcGxpZWRTdGVyZW90eXBlKE1BUlRFX0FTU0lHTik7DQorCQkJCUVPYmplY3QgZW9iaiA9IGVsZW1lbnQuZ2V0U3RlcmVvdHlwZUFwcGxpY2F0aW9uKHN0ZXJlbyk7DQorCQkJCUFzc2lnbiBhID0gKEFzc2lnbikgZW9iajsNCisJCQkJRWxlbWVudCBhc3NpZ25tZW50U291cmNlID0gYS5nZXRGcm9tKCkuZ2V0KDApOw0KKwkJCQlFbGVtZW50IGFzc2lnbm1lbnRUYXJnZXQgPSBhLmdldFRvKCkuZ2V0KDApOw0KKwkJCQkvLyBTT1VSQ0UgbXVzdCBiZSBhIFRhc2sNCisJCQkJLy8gVEFSR0VUIG11c3QgYmUgYSBQcm9jZXNzb3INCisJCQkJaWYgKGVsZW1lbnRJc1Nsb3RJbnN0YW5jZShhc3NpZ25tZW50U291cmNlKSAmJiBlbGVtZW50SXNQcm9jZXNzb3JJbnN0YW5jZShhc3NpZ25tZW50VGFyZ2V0KSkgew0KKwkJCQkJYXNzaWdubWVudHMuYWRkKGEpOw0KKwkJCQl9DQorCQkJfQ0KKwkJfQ0KKwkJcmV0dXJuIGFzc2lnbm1lbnRzOw0KKwl9DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRydWUgaXMgdGhlIGlucHV0IEluc3RhbmNlIFByb2Nlc3NvciBoYXMgb25seSAxIENPUkUuDQorCSAqDQorCSAqIEBwYXJhbSBwcm9jZXNzb3JJbnN0YW5jZSB0aGUgcHJvY2Vzc29yIGluc3RhbmNlDQorCSAqIEByZXR1cm4gdHJ1ZSwgaWYgc3VjY2Vzc2Z1bA0KKwkgKi8NCisJcHVibGljIHN0YXRpYyBib29sZWFuIHByb2Nlc3Nvckluc3RhbmNlSXNTaW5nbGVDb3JlKEluc3RhbmNlU3BlY2lmaWNhdGlvbiBwcm9jZXNzb3JJbnN0YW5jZSkgew0KKwkJQ2xhc3NpZmllciBwcm9jZXNzb3JDbGFzcyA9IHByb2Nlc3Nvckluc3RhbmNlLmdldENsYXNzaWZpZXJzKCkuZ2V0KDApOw0KKwkJQ0hfSHdQcm9jZXNzb3IgcHJvY2Vzc29yVHlwZSA9IFVNTFV0aWxzLmdldFN0ZXJlb3R5cGVBcHBsaWNhdGlvbihwcm9jZXNzb3JDbGFzcywgQ0hfSHdQcm9jZXNzb3IuY2xhc3MpOw0KKwkJU3RyaW5nIGNvcmVOdW1iZXIgPSBudWxsOw0KKwkJY29yZU51bWJlciA9IHByb2Nlc3NvclR5cGUuZ2V0TmJDb3JlcygpOw0KKwkJaW50IGljb3JlTnVtYmVyID0gMTsNCisJCXRyeSB7DQorCQkJaWNvcmVOdW1iZXIgPSBJbnRlZ2VyLnBhcnNlSW50KGNvcmVOdW1iZXIpOw0KKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsNCisJCQlpY29yZU51bWJlciA9IDE7DQorCQl9DQorCQlpZiAoaWNvcmVOdW1iZXIgPT0gMSkgew0KKwkJCXJldHVybiB0cnVlOw0KKwkJfQ0KKwkJcmV0dXJuIGZhbHNlOw0KKwl9DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSBQYWNrYWdlIChpbiB0aGUgRGVwbG95bWVudCBWaWV3KSB0aGF0IG93bnMgdGhlIGlucHV0IHN5c3RlbS4NCisJICoNCisJICogQHBhcmFtIHVtbE1vZGVsIHRoZSB1bWwgbW9kZWwNCisJICogQHBhcmFtIHRoZVN5c3RlbSB0aGUgdGhlIHN5c3RlbQ0KKwkgKiBAcmV0dXJuIHRoZSBvd25lciBDSCBnYSByZXNvdXJjZSBwbGF0Zm9ybSBwYWNrYWdlDQorCSAqIEB0aHJvd3MgTW9kZWxFcnJvciB0aGUgbW9kZWwgZXJyb3INCisJICovDQorCXB1YmxpYyBzdGF0aWMgUGFja2FnZSBnZXRPd25lckNIR2FSZXNvdXJjZVBsYXRmb3JtUGFja2FnZShNb2RlbCB1bWxNb2RlbCwgSW5zdGFuY2VTcGVjaWZpY2F0aW9uIHRoZVN5c3RlbSkgdGhyb3dzIE1vZGVsRXJyb3Igew0KKwkJRUxpc3Q8UGFja2FnZT4gcGFja0xpc3QgPSBRdWVyeVV0aWxzLmdldFJlc291cmNlUGxhdGZvcm1QYWNrYWdlcyh1bWxNb2RlbCwgQ29uc3RhbnRzLkRFUExPWU1FTlRfVklFV19OQU1FKTsNCisJCWZvciAoUGFja2FnZSBwYWNrIDogcGFja0xpc3QpIHsNCisJCQlFTGlzdDxFbGVtZW50PiBwYWNrRWxlbXMgPSBwYWNrLmFsbE93bmVkRWxlbWVudHMoKTsNCisJCQlmb3IgKEVsZW1lbnQgZWxlbSA6IHBhY2tFbGVtcykgew0KKwkJCQlpZiAoZWxlbSBpbnN0YW5jZW9mIEluc3RhbmNlU3BlY2lmaWNhdGlvbikgew0KKwkJCQkJaWYgKCgoSW5zdGFuY2VTcGVjaWZpY2F0aW9uKSBlbGVtKS5lcXVhbHModGhlU3lzdGVtKSkgew0KKwkJCQkJCXJldHVybiBwYWNrOw0KKwkJCQkJfQ0KKwkJCQl9DQorCQkJfQ0KKwkJfQ0KKwkJcmV0dXJuIG51bGw7DQorCX0NCisNCit9DQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbXVsdGljb3JlL3V0aWxzL1ZTTFV0aWxzLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tdWx0aWNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tdWx0aWNvcmUvdXRpbHMvVlNMVXRpbHMuamF2YQppbmRleCAwMTMxOGE5Li4zMjAyYTViIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tdWx0aWNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tdWx0aWNvcmUvdXRpbHMvVlNMVXRpbHMuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tdWx0aWNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tdWx0aWNvcmUvdXRpbHMvVlNMVXRpbHMuamF2YQpAQCAtMSwxMDAgKzEsMTA3IEBACi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAtCi0gIC0gQ29weXJpZ2h0IChjKSAyMDE1LTIwMTYgVW5pdmVyc2l0eSBvZiBQYWRvdmEsIElUQUxZIC0gIEludGVjcyBTcEEgCi0gIC0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICAtIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICAtIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gIC0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAgLQotICAtIENvbnRyaWJ1dG9yczoKLSAgLQotICAtIEFsZXNzYW5kcm8gWm92aSBhem92aUBtYXRoLnVuaXBkLml0Ci0gIC0gU3RlZmFubyBQdXJpIHN0ZWZhbm8ucHVyaUBpbnRlY3MuaXQKLSAgLSBMYXVyYSBCYXJhY2NoaSBsYXVyYS5iYXJhY2NoaUBpbnRlY3MuaXQKLSAgLSBOaWNob2xhcyBQYWNpbmkgbmljaG9sYXMucGFjaW5pQGludGVjcy5pdCAgCi0gIC0KLSAgLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24gYW5kL29yIGluaXRpYWwgZG9jdW1lbnRhdGlvbgotICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL3BhY2thZ2Ugb3JnLnBvbGFyc3lzLmNoZXNzLm11bHRpY29yZS51dGlsczsKLQotaW1wb3J0IGphdmEudXRpbC5yZWdleC5NYXRjaGVyOwotaW1wb3J0IGphdmEudXRpbC5yZWdleC5QYXR0ZXJuOwotCi0vKioKLSAqIFRoZSBDbGFzcyBWU0xVdGlscy4KLSAqLwotcHVibGljIGNsYXNzIFZTTFV0aWxzIHsKLQotCi0JCi0JCi0JLyoqCi0JICogR2V0cyB0aGUgYm91bmRzLgotCSAqCi0JICogQHBhcmFtIHZhbHVlIHRoZSB2YWx1ZQotCSAqIEByZXR1cm4gdGhlIGJvdW5kcwotCSAqLwotCXB1YmxpYyBzdGF0aWMgaW50W10gZ2V0Qm91bmRzKFN0cmluZyB2YWx1ZSkgewotCQlTdHJpbmcgcmVnZXggPSAiXFxzKlxcW1xccyooXFxkKylcXHMqXFwuKlxccyooXFxkKylcXF1cXHMqIjsKLQkJUGF0dGVybiBwYXR0ZXJuID0gUGF0dGVybi5jb21waWxlKHJlZ2V4KTsKLQkJTWF0Y2hlciBtYXRjaGVyID0gcGF0dGVybi5tYXRjaGVyKHZhbHVlKTsKLQkJaW50W10gYiA9IG5ldyBpbnRbMl07Ci0KLQkJaWYgKG1hdGNoZXIuZmluZCgpICYmIG1hdGNoZXIuZ3JvdXBDb3VudCgpID09IDIpIHsKLQkJCVN0cmluZyBiZWdpbl8gPSBtYXRjaGVyLmdyb3VwKDEpOwotCQkJU3RyaW5nIGVuZF8gPSBtYXRjaGVyLmdyb3VwKDIpOwotCQkJYlswXSA9IEludGVnZXIucGFyc2VJbnQoYmVnaW5fKTsKLQkJCWJbMV0gPSBJbnRlZ2VyLnBhcnNlSW50KGVuZF8pOwotCQkJcmV0dXJuIGI7Ci0JCX0KLQkJCi0JCXJlZ2V4ID0gIlxccypcXFtcXHMqKFxcZCspXFxzKlxcXVxccyoiOwotCQlwYXR0ZXJuID0gUGF0dGVybi5jb21waWxlKHJlZ2V4KTsKLQkJbWF0Y2hlciA9IHBhdHRlcm4ubWF0Y2hlcih2YWx1ZSk7Ci0JCWlmIChtYXRjaGVyLmZpbmQoKSAmJiBtYXRjaGVyLmdyb3VwQ291bnQoKSA9PSAxKSB7Ci0JCQlTdHJpbmcgYmVnaW5fID0gbWF0Y2hlci5ncm91cCgxKTsKLQkJCWJbMF0gPSBJbnRlZ2VyLnBhcnNlSW50KGJlZ2luXyk7Ci0JCQliWzFdID0gYlswXTsKLQkJCXJldHVybiBiOwotCQl9Ci0JCQotCQlyZWdleCA9ICJcXHMqKFxcZCspXFxzKiI7Ci0JCXBhdHRlcm4gPSBQYXR0ZXJuLmNvbXBpbGUocmVnZXgpOwotCQltYXRjaGVyID0gcGF0dGVybi5tYXRjaGVyKHZhbHVlKTsKLQkJaWYgKG1hdGNoZXIuZmluZCgpICYmIG1hdGNoZXIuZ3JvdXBDb3VudCgpID09IDEpIHsKLQkJCVN0cmluZyBiZWdpbl8gPSBtYXRjaGVyLmdyb3VwKDEpOwotCQkJYlswXSA9IEludGVnZXIucGFyc2VJbnQoYmVnaW5fKTsKLQkJCWJbMV0gPSBiWzBdOwotCQkJcmV0dXJuIGI7Ci0JCX0KLQkJCi0JCXJldHVybiBudWxsOwotCX0KLQkKLQkvKioKLQkgKiBDaGVja3MgaWYgaXMgaW4gYm91bmRzLgotCSAqCi0JICogQHBhcmFtIGlkIHRoZSBpZAotCSAqIEBwYXJhbSBib3VuZHMgdGhlIGJvdW5kcwotCSAqIEByZXR1cm4gdGhlIGJvb2xlYW4KLQkgKi8KLQlwdWJsaWMgc3RhdGljIEJvb2xlYW4gaXNJbkJvdW5kcyhpbnQgaWQsIGphdmEudXRpbC5MaXN0PGludFtdPiBib3VuZHMpIHsKLQkJZm9yIChpbnRbXSBiIDogYm91bmRzKSB7Ci0JCQlpZiAoaXNJbkJvdW5kcyhpZCwgYikpCi0JCQkJcmV0dXJuIHRydWU7Ci0JCX0KLQkJcmV0dXJuIGZhbHNlOwotCX0KLQkKLQkvKioKLQkgKiBDaGVja3MgaWYgaXMgaW4gYm91bmRzLgotCSAqCi0JICogQHBhcmFtIGlkIHRoZSBpZAotCSAqIEBwYXJhbSBib3VuZHMgdGhlIGJvdW5kcwotCSAqIEByZXR1cm4gdGhlIGJvb2xlYW4KLQkgKi8KLQlwcml2YXRlIHN0YXRpYyBCb29sZWFuIGlzSW5Cb3VuZHMoaW50IGlkLCBpbnRbXSBib3VuZHMpIHsKLQkJcmV0dXJuIGlkID49IGJvdW5kc1swXSAmJiBpZCA8PSBib3VuZHNbMV07Ci0JfQotCQotCQotfQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgDQorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KKyAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorICAtDQorICAtIENvcHlyaWdodCAoYykgMjAxNS0yMDE2IFVuaXZlcnNpdHkgb2YgUGFkb3ZhLCBJVEFMWSAtICBJbnRlY3MgU3BBIA0KKyAgLSBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICAtIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KKyAgLSB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAgLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KKyAgLQ0KKyAgLSBDb250cmlidXRvcnM6DQorICAtDQorICAtIEFsZXNzYW5kcm8gWm92aSBhem92aUBtYXRoLnVuaXBkLml0DQorICAtIFN0ZWZhbm8gUHVyaSBzdGVmYW5vLnB1cmlAaW50ZWNzLml0DQorICAtIExhdXJhIEJhcmFjY2hpIGxhdXJhLmJhcmFjY2hpQGludGVjcy5pdA0KKyAgLSBOaWNob2xhcyBQYWNpbmkgbmljaG9sYXMucGFjaW5pQGludGVjcy5pdCAgDQorICAtDQorICAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbiBhbmQvb3IgaW5pdGlhbCBkb2N1bWVudGF0aW9uDQorICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL3BhY2thZ2Ugb3JnLnBvbGFyc3lzLmNoZXNzLm11bHRpY29yZS51dGlsczsNCisNCitpbXBvcnQgamF2YS51dGlsLnJlZ2V4Lk1hdGNoZXI7DQoraW1wb3J0IGphdmEudXRpbC5yZWdleC5QYXR0ZXJuOw0KKw0KKy8qKg0KKyAqIFRoZSBDbGFzcyBWU0xVdGlscy4NCisgKi8NCitwdWJsaWMgY2xhc3MgVlNMVXRpbHMgew0KKw0KKw0KKwkNCisJDQorCS8qKg0KKwkgKiBHZXRzIHRoZSBib3VuZHMuDQorCSAqDQorCSAqIEBwYXJhbSB2YWx1ZSB0aGUgdmFsdWUNCisJICogQHJldHVybiB0aGUgYm91bmRzDQorCSAqLw0KKwlwdWJsaWMgc3RhdGljIGludFtdIGdldEJvdW5kcyhTdHJpbmcgdmFsdWUpIHsNCisJCVN0cmluZyByZWdleCA9ICJcXHMqXFxbXFxzKihcXGQrKVxccypcXC4qXFxzKihcXGQrKVxcXVxccyoiOw0KKwkJUGF0dGVybiBwYXR0ZXJuID0gUGF0dGVybi5jb21waWxlKHJlZ2V4KTsNCisJCU1hdGNoZXIgbWF0Y2hlciA9IHBhdHRlcm4ubWF0Y2hlcih2YWx1ZSk7DQorCQlpbnRbXSBiID0gbmV3IGludFsyXTsNCisNCisJCWlmIChtYXRjaGVyLmZpbmQoKSAmJiBtYXRjaGVyLmdyb3VwQ291bnQoKSA9PSAyKSB7DQorCQkJU3RyaW5nIGJlZ2luXyA9IG1hdGNoZXIuZ3JvdXAoMSk7DQorCQkJU3RyaW5nIGVuZF8gPSBtYXRjaGVyLmdyb3VwKDIpOw0KKwkJCWJbMF0gPSBJbnRlZ2VyLnBhcnNlSW50KGJlZ2luXyk7DQorCQkJYlsxXSA9IEludGVnZXIucGFyc2VJbnQoZW5kXyk7DQorCQkJcmV0dXJuIGI7DQorCQl9DQorCQkNCisJCXJlZ2V4ID0gIlxccypcXFtcXHMqKFxcZCspXFxzKlxcXVxccyoiOw0KKwkJcGF0dGVybiA9IFBhdHRlcm4uY29tcGlsZShyZWdleCk7DQorCQltYXRjaGVyID0gcGF0dGVybi5tYXRjaGVyKHZhbHVlKTsNCisJCWlmIChtYXRjaGVyLmZpbmQoKSAmJiBtYXRjaGVyLmdyb3VwQ291bnQoKSA9PSAxKSB7DQorCQkJU3RyaW5nIGJlZ2luXyA9IG1hdGNoZXIuZ3JvdXAoMSk7DQorCQkJYlswXSA9IEludGVnZXIucGFyc2VJbnQoYmVnaW5fKTsNCisJCQliWzFdID0gYlswXTsNCisJCQlyZXR1cm4gYjsNCisJCX0NCisJCQ0KKwkJcmVnZXggPSAiXFxzKihcXGQrKVxccyoiOw0KKwkJcGF0dGVybiA9IFBhdHRlcm4uY29tcGlsZShyZWdleCk7DQorCQltYXRjaGVyID0gcGF0dGVybi5tYXRjaGVyKHZhbHVlKTsNCisJCWlmIChtYXRjaGVyLmZpbmQoKSAmJiBtYXRjaGVyLmdyb3VwQ291bnQoKSA9PSAxKSB7DQorCQkJU3RyaW5nIGJlZ2luXyA9IG1hdGNoZXIuZ3JvdXAoMSk7DQorCQkJYlswXSA9IEludGVnZXIucGFyc2VJbnQoYmVnaW5fKTsNCisJCQliWzFdID0gYlswXTsNCisJCQlyZXR1cm4gYjsNCisJCX0NCisJCQ0KKwkJcmV0dXJuIG51bGw7DQorCX0NCisJDQorCS8qKg0KKwkgKiBDaGVja3MgaWYgaXMgaW4gYm91bmRzLg0KKwkgKg0KKwkgKiBAcGFyYW0gaWQgdGhlIGlkDQorCSAqIEBwYXJhbSBib3VuZHMgdGhlIGJvdW5kcw0KKwkgKiBAcmV0dXJuIHRoZSBib29sZWFuDQorCSAqLw0KKwlwdWJsaWMgc3RhdGljIEJvb2xlYW4gaXNJbkJvdW5kcyhpbnQgaWQsIGphdmEudXRpbC5MaXN0PGludFtdPiBib3VuZHMpIHsNCisJCWZvciAoaW50W10gYiA6IGJvdW5kcykgew0KKwkJCWlmIChpc0luQm91bmRzKGlkLCBiKSkNCisJCQkJcmV0dXJuIHRydWU7DQorCQl9DQorCQlyZXR1cm4gZmFsc2U7DQorCX0NCisJDQorCS8qKg0KKwkgKiBDaGVja3MgaWYgaXMgaW4gYm91bmRzLg0KKwkgKg0KKwkgKiBAcGFyYW0gaWQgdGhlIGlkDQorCSAqIEBwYXJhbSBib3VuZHMgdGhlIGJvdW5kcw0KKwkgKiBAcmV0dXJuIHRoZSBib29sZWFuDQorCSAqLw0KKwlwcml2YXRlIHN0YXRpYyBCb29sZWFuIGlzSW5Cb3VuZHMoaW50IGlkLCBpbnRbXSBib3VuZHMpIHsNCisJCXJldHVybiBpZCA+PSBib3VuZHNbMF0gJiYgaWQgPD0gYm91bmRzWzFdOw0KKwl9DQorCQ0KKwkNCit9DQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbXVsdGljb3JlL3V0aWxzL3BhY2thZ2UuaHRtbCBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLm11bHRpY29yZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL211bHRpY29yZS91dGlscy9wYWNrYWdlLmh0bWwKaW5kZXggN2Q3ZDU0Ni4uZmZhNmI5MyAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MubXVsdGljb3JlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvbXVsdGljb3JlL3V0aWxzL3BhY2thZ2UuaHRtbAorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5tdWx0aWNvcmUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9tdWx0aWNvcmUvdXRpbHMvcGFja2FnZS5odG1sCkBAIC0xLDcgKzEsMTQgQEAKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorIyBDb3B5cmlnaHQgKEMpIDIwMjAgDQorIyBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorIyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCisjIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorIyBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+DQogPGh0bWw+DQogPGhlYWQ+PC9oZWFkPg0KIDxib2R5Pg0KICAgUHJvdmlkZXMuLi4NCiA8L2JvZHk+DQotPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKzwvaHRtbD4NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5wYXJhbUFyY2hDb25maWd1cmF0b3IvYWJvdXQuaHRtbCBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnBhcmFtQXJjaENvbmZpZ3VyYXRvci9hYm91dC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE2NGY3ODEKLS0tIC9kZXYvbnVsbAorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5wYXJhbUFyY2hDb25maWd1cmF0b3IvYWJvdXQuaHRtbApAQCAtMCwwICsxLDM2IEBACis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIgorICAgICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS1zdHJpY3QuZHRkIj4KKzxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMSIgLz4KKzx0aXRsZT5BYm91dDwvdGl0bGU+Cis8L2hlYWQ+Cis8Ym9keSBsYW5nPSJFTi1VUyI+CisJPGgyPkFib3V0IFRoaXMgQ29udGVudDwvaDI+CisKKwk8cD5Ob3ZlbWJlciAzMCwgMjAxNzwvcD4KKwk8aDM+TGljZW5zZTwvaDM+CisKKwk8cD4KKwkJVGhlIEVjbGlwc2UgRm91bmRhdGlvbiBtYWtlcyBhdmFpbGFibGUgYWxsIGNvbnRlbnQgaW4gdGhpcyBwbHVnLWluCisJCSgmcXVvdDtDb250ZW50JnF1b3Q7KS4gVW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQgYmVsb3csIHRoZSBDb250ZW50CisJCWlzIHByb3ZpZGVkIHRvIHlvdSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVjbGlwc2UKKwkJUHVibGljIExpY2Vuc2UgVmVyc2lvbiAyLjAgKCZxdW90O0VQTCZxdW90OykuIEEgY29weSBvZiB0aGUgRVBMIGlzCisJCWF2YWlsYWJsZSBhdCA8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAiPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMDwvYT4uCisJCUZvciBwdXJwb3NlcyBvZiB0aGUgRVBMLCAmcXVvdDtQcm9ncmFtJnF1b3Q7IHdpbGwgbWVhbiB0aGUgQ29udGVudC4KKwk8L3A+CisKKwk8cD4KKwkJSWYgeW91IGRpZCBub3QgcmVjZWl2ZSB0aGlzIENvbnRlbnQgZGlyZWN0bHkgZnJvbSB0aGUgRWNsaXBzZQorCQlGb3VuZGF0aW9uLCB0aGUgQ29udGVudCBpcyBiZWluZyByZWRpc3RyaWJ1dGVkIGJ5IGFub3RoZXIgcGFydHkKKwkJKCZxdW90O1JlZGlzdHJpYnV0b3ImcXVvdDspIGFuZCBkaWZmZXJlbnQgdGVybXMgYW5kIGNvbmRpdGlvbnMgbWF5CisJCWFwcGx5IHRvIHlvdXIgdXNlIG9mIGFueSBvYmplY3QgY29kZSBpbiB0aGUgQ29udGVudC4gQ2hlY2sgdGhlCisJCVJlZGlzdHJpYnV0b3IncyBsaWNlbnNlIHRoYXQgd2FzIHByb3ZpZGVkIHdpdGggdGhlIENvbnRlbnQuIElmIG5vIHN1Y2gKKwkJbGljZW5zZSBleGlzdHMsIGNvbnRhY3QgdGhlIFJlZGlzdHJpYnV0b3IuIFVubGVzcyBvdGhlcndpc2UgaW5kaWNhdGVkCisJCWJlbG93LCB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVQTCBzdGlsbCBhcHBseSB0byBhbnkgc291cmNlCisJCWNvZGUgaW4gdGhlIENvbnRlbnQgYW5kIHN1Y2ggc291cmNlIGNvZGUgbWF5IGJlIG9idGFpbmVkIGF0IDxhCisJCQlocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnLyI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZzwvYT4uCisJPC9wPgorCis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MucGFyYW1BcmNoQ29uZmlndXJhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvcGFyYW1BcmNoQ29uZmlndXJhdG9yL2NvbW1hbmRzL0luc3RhbnRpYXRlQXJjaGl0ZWN0dXJlVmlhV2l6YXJkLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5wYXJhbUFyY2hDb25maWd1cmF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9wYXJhbUFyY2hDb25maWd1cmF0b3IvY29tbWFuZHMvSW5zdGFudGlhdGVBcmNoaXRlY3R1cmVWaWFXaXphcmQuamF2YQppbmRleCAwMzdhOGNhLi5hMTdiY2YxIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5wYXJhbUFyY2hDb25maWd1cmF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9wYXJhbUFyY2hDb25maWd1cmF0b3IvY29tbWFuZHMvSW5zdGFudGlhdGVBcmNoaXRlY3R1cmVWaWFXaXphcmQuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5wYXJhbUFyY2hDb25maWd1cmF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9wYXJhbUFyY2hDb25maWd1cmF0b3IvY29tbWFuZHMvSW5zdGFudGlhdGVBcmNoaXRlY3R1cmVWaWFXaXphcmQuamF2YQpAQCAtMSw5ICsxLDkgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogQ29weXJpZ2h0IChDKSAyMDE4IEZvbmRhemlvbmUgQnJ1bm8gS2Vzc2xlci4NCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICogIA0KICAqIENvbnRyaWJ1dG9yczoNCiAgKiAgIEFsYmVydG8gRGViaWFzaSAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbg0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnBhcmFtQXJjaENvbmZpZ3VyYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3BhcmFtQXJjaENvbmZpZ3VyYXRvci9jb21tYW5kcy9JbnN0YW50aWF0ZVBhcmFtQXJjaEFzT3NzRmlsZUNvbW1hbmQuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnBhcmFtQXJjaENvbmZpZ3VyYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3BhcmFtQXJjaENvbmZpZ3VyYXRvci9jb21tYW5kcy9JbnN0YW50aWF0ZVBhcmFtQXJjaEFzT3NzRmlsZUNvbW1hbmQuamF2YQppbmRleCAyMjI2YWQ3Li5lZTQ4OGQxIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5wYXJhbUFyY2hDb25maWd1cmF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9wYXJhbUFyY2hDb25maWd1cmF0b3IvY29tbWFuZHMvSW5zdGFudGlhdGVQYXJhbUFyY2hBc09zc0ZpbGVDb21tYW5kLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MucGFyYW1BcmNoQ29uZmlndXJhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvcGFyYW1BcmNoQ29uZmlndXJhdG9yL2NvbW1hbmRzL0luc3RhbnRpYXRlUGFyYW1BcmNoQXNPc3NGaWxlQ29tbWFuZC5qYXZhCkBAIC0xLDkgKzEsOSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTggRm9uZGF6aW9uZSBCcnVubyBLZXNzbGVyLg0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKiAgDQogICogQ29udHJpYnV0b3JzOg0KICAqICAgQWxiZXJ0byBEZWJpYXNpIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MucGFyYW1BcmNoQ29uZmlndXJhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvcGFyYW1BcmNoQ29uZmlndXJhdG9yL3VpL2RpYWxvZy9Db25maWdQYXJhbWV0ZXIuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnBhcmFtQXJjaENvbmZpZ3VyYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3BhcmFtQXJjaENvbmZpZ3VyYXRvci91aS9kaWFsb2cvQ29uZmlnUGFyYW1ldGVyLmphdmEKaW5kZXggMzJlZWNhNy4uNDBlYzhjMiAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MucGFyYW1BcmNoQ29uZmlndXJhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvcGFyYW1BcmNoQ29uZmlndXJhdG9yL3VpL2RpYWxvZy9Db25maWdQYXJhbWV0ZXIuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5wYXJhbUFyY2hDb25maWd1cmF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9wYXJhbUFyY2hDb25maWd1cmF0b3IvdWkvZGlhbG9nL0NvbmZpZ1BhcmFtZXRlci5qYXZhCkBAIC0xLDkgKzEsOSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTggRm9uZGF6aW9uZSBCcnVubyBLZXNzbGVyLg0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKiAgDQogICogQ29udHJpYnV0b3JzOg0KICAqICAgQWxiZXJ0byBEZWJpYXNpIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MucGFyYW1BcmNoQ29uZmlndXJhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvcGFyYW1BcmNoQ29uZmlndXJhdG9yL3VpL3dpemFyZC9JbnN0YW50aWF0ZUFyY2hXaXphcmQuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnBhcmFtQXJjaENvbmZpZ3VyYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3BhcmFtQXJjaENvbmZpZ3VyYXRvci91aS93aXphcmQvSW5zdGFudGlhdGVBcmNoV2l6YXJkLmphdmEKaW5kZXggNGRkYjEwZS4uMTM2Zjk5ZiAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MucGFyYW1BcmNoQ29uZmlndXJhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvcGFyYW1BcmNoQ29uZmlndXJhdG9yL3VpL3dpemFyZC9JbnN0YW50aWF0ZUFyY2hXaXphcmQuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5wYXJhbUFyY2hDb25maWd1cmF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9wYXJhbUFyY2hDb25maWd1cmF0b3IvdWkvd2l6YXJkL0luc3RhbnRpYXRlQXJjaFdpemFyZC5qYXZhCkBAIC0xLDkgKzEsOSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTggRm9uZGF6aW9uZSBCcnVubyBLZXNzbGVyLg0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKiAgDQogICogQ29udHJpYnV0b3JzOg0KICAqICAgQWxiZXJ0byBEZWJpYXNpIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MucGFyYW1BcmNoQ29uZmlndXJhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvcGFyYW1BcmNoQ29uZmlndXJhdG9yL3VpL3dpemFyZC9QYWNrYWdlVmlld0ZpbHRlci5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MucGFyYW1BcmNoQ29uZmlndXJhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvcGFyYW1BcmNoQ29uZmlndXJhdG9yL3VpL3dpemFyZC9QYWNrYWdlVmlld0ZpbHRlci5qYXZhCmluZGV4IDUwZDE3YmEuLjY4NGFkZmEgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnBhcmFtQXJjaENvbmZpZ3VyYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3BhcmFtQXJjaENvbmZpZ3VyYXRvci91aS93aXphcmQvUGFja2FnZVZpZXdGaWx0ZXIuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5wYXJhbUFyY2hDb25maWd1cmF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9wYXJhbUFyY2hDb25maWd1cmF0b3IvdWkvd2l6YXJkL1BhY2thZ2VWaWV3RmlsdGVyLmphdmEKQEAgLTEsOSArMSw5IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIENvcHlyaWdodCAoQykgMjAxOCBGb25kYXppb25lIEJydW5vIEtlc3NsZXIuDQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqICANCiAgKiBDb250cmlidXRvcnM6DQogICogICBBbGJlcnRvIERlYmlhc2kgLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5wYXJhbUFyY2hDb25maWd1cmF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9wYXJhbUFyY2hDb25maWd1cmF0b3IvdWkvd2l6YXJkL1RyZWVTZWxlY3Rvci5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MucGFyYW1BcmNoQ29uZmlndXJhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvcGFyYW1BcmNoQ29uZmlndXJhdG9yL3VpL3dpemFyZC9UcmVlU2VsZWN0b3IuamF2YQppbmRleCA1NmFmN2RmLi44N2Y1YTlhIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5wYXJhbUFyY2hDb25maWd1cmF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9wYXJhbUFyY2hDb25maWd1cmF0b3IvdWkvd2l6YXJkL1RyZWVTZWxlY3Rvci5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnBhcmFtQXJjaENvbmZpZ3VyYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3BhcmFtQXJjaENvbmZpZ3VyYXRvci91aS93aXphcmQvVHJlZVNlbGVjdG9yLmphdmEKQEAgLTEsOSArMSw5IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIENvcHlyaWdodCAoQykgMjAxOCBGb25kYXppb25lIEJydW5vIEtlc3NsZXIuDQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqICANCiAgKiBDb250cmlidXRvcnM6DQogICogICBBbGJlcnRvIERlYmlhc2kgLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5wYXJhbUFyY2hDb25maWd1cmF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9wYXJhbUFyY2hDb25maWd1cmF0b3IvdWkvd2l6YXJkL3BhZ2UvQXNzaWduVmFsdWVzUGFnZS5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MucGFyYW1BcmNoQ29uZmlndXJhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvcGFyYW1BcmNoQ29uZmlndXJhdG9yL3VpL3dpemFyZC9wYWdlL0Fzc2lnblZhbHVlc1BhZ2UuamF2YQppbmRleCA2NDcyMzI1Li40OTk1ZDVjIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5wYXJhbUFyY2hDb25maWd1cmF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9wYXJhbUFyY2hDb25maWd1cmF0b3IvdWkvd2l6YXJkL3BhZ2UvQXNzaWduVmFsdWVzUGFnZS5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnBhcmFtQXJjaENvbmZpZ3VyYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3BhcmFtQXJjaENvbmZpZ3VyYXRvci91aS93aXphcmQvcGFnZS9Bc3NpZ25WYWx1ZXNQYWdlLmphdmEKQEAgLTEsOSArMSw5IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIENvcHlyaWdodCAoQykgMjAxOCBGb25kYXppb25lIEJydW5vIEtlc3NsZXIuDQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqICANCiAgKiBDb250cmlidXRvcnM6DQogICogICBBbGJlcnRvIERlYmlhc2kgLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5wYXJhbUFyY2hDb25maWd1cmF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9wYXJhbUFyY2hDb25maWd1cmF0b3IvdWkvd2l6YXJkL3BhZ2UvQmFzaWNXaXphcmRQYWdlLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5wYXJhbUFyY2hDb25maWd1cmF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9wYXJhbUFyY2hDb25maWd1cmF0b3IvdWkvd2l6YXJkL3BhZ2UvQmFzaWNXaXphcmRQYWdlLmphdmEKaW5kZXggN2RmZjAzZi4uNGRiM2ExMiAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MucGFyYW1BcmNoQ29uZmlndXJhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvcGFyYW1BcmNoQ29uZmlndXJhdG9yL3VpL3dpemFyZC9wYWdlL0Jhc2ljV2l6YXJkUGFnZS5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnBhcmFtQXJjaENvbmZpZ3VyYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3BhcmFtQXJjaENvbmZpZ3VyYXRvci91aS93aXphcmQvcGFnZS9CYXNpY1dpemFyZFBhZ2UuamF2YQpAQCAtMSw5ICsxLDkgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogQ29weXJpZ2h0IChDKSAyMDE4IEZvbmRhemlvbmUgQnJ1bm8gS2Vzc2xlci4NCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICogIA0KICAqIENvbnRyaWJ1dG9yczoNCiAgKiAgIEFsYmVydG8gRGViaWFzaSAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbg0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnBhcmFtQXJjaENvbmZpZ3VyYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3BhcmFtQXJjaENvbmZpZ3VyYXRvci91aS93aXphcmQvcGFnZS9MYXN0UGFnZS5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MucGFyYW1BcmNoQ29uZmlndXJhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvcGFyYW1BcmNoQ29uZmlndXJhdG9yL3VpL3dpemFyZC9wYWdlL0xhc3RQYWdlLmphdmEKaW5kZXggNTQ3Y2Y0Ni4uYzdhYjM3YiAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MucGFyYW1BcmNoQ29uZmlndXJhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvcGFyYW1BcmNoQ29uZmlndXJhdG9yL3VpL3dpemFyZC9wYWdlL0xhc3RQYWdlLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MucGFyYW1BcmNoQ29uZmlndXJhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvcGFyYW1BcmNoQ29uZmlndXJhdG9yL3VpL3dpemFyZC9wYWdlL0xhc3RQYWdlLmphdmEKQEAgLTEsOSArMSw5IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIENvcHlyaWdodCAoQykgMjAxOCBGb25kYXppb25lIEJydW5vIEtlc3NsZXIuDQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqICANCiAgKiBDb250cmlidXRvcnM6DQogICogICBBbGJlcnRvIERlYmlhc2kgLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5wYXR0ZXJucy5saWJyYXJ5L2Fib3V0Lmh0bWwgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5wYXR0ZXJucy5saWJyYXJ5L2Fib3V0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTY0Zjc4MQotLS0gL2Rldi9udWxsCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnBhdHRlcm5zLmxpYnJhcnkvYWJvdXQuaHRtbApAQCAtMCwwICsxLDM2IEBACis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIgorICAgICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS1zdHJpY3QuZHRkIj4KKzxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMSIgLz4KKzx0aXRsZT5BYm91dDwvdGl0bGU+Cis8L2hlYWQ+Cis8Ym9keSBsYW5nPSJFTi1VUyI+CisJPGgyPkFib3V0IFRoaXMgQ29udGVudDwvaDI+CisKKwk8cD5Ob3ZlbWJlciAzMCwgMjAxNzwvcD4KKwk8aDM+TGljZW5zZTwvaDM+CisKKwk8cD4KKwkJVGhlIEVjbGlwc2UgRm91bmRhdGlvbiBtYWtlcyBhdmFpbGFibGUgYWxsIGNvbnRlbnQgaW4gdGhpcyBwbHVnLWluCisJCSgmcXVvdDtDb250ZW50JnF1b3Q7KS4gVW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQgYmVsb3csIHRoZSBDb250ZW50CisJCWlzIHByb3ZpZGVkIHRvIHlvdSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVjbGlwc2UKKwkJUHVibGljIExpY2Vuc2UgVmVyc2lvbiAyLjAgKCZxdW90O0VQTCZxdW90OykuIEEgY29weSBvZiB0aGUgRVBMIGlzCisJCWF2YWlsYWJsZSBhdCA8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAiPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMDwvYT4uCisJCUZvciBwdXJwb3NlcyBvZiB0aGUgRVBMLCAmcXVvdDtQcm9ncmFtJnF1b3Q7IHdpbGwgbWVhbiB0aGUgQ29udGVudC4KKwk8L3A+CisKKwk8cD4KKwkJSWYgeW91IGRpZCBub3QgcmVjZWl2ZSB0aGlzIENvbnRlbnQgZGlyZWN0bHkgZnJvbSB0aGUgRWNsaXBzZQorCQlGb3VuZGF0aW9uLCB0aGUgQ29udGVudCBpcyBiZWluZyByZWRpc3RyaWJ1dGVkIGJ5IGFub3RoZXIgcGFydHkKKwkJKCZxdW90O1JlZGlzdHJpYnV0b3ImcXVvdDspIGFuZCBkaWZmZXJlbnQgdGVybXMgYW5kIGNvbmRpdGlvbnMgbWF5CisJCWFwcGx5IHRvIHlvdXIgdXNlIG9mIGFueSBvYmplY3QgY29kZSBpbiB0aGUgQ29udGVudC4gQ2hlY2sgdGhlCisJCVJlZGlzdHJpYnV0b3IncyBsaWNlbnNlIHRoYXQgd2FzIHByb3ZpZGVkIHdpdGggdGhlIENvbnRlbnQuIElmIG5vIHN1Y2gKKwkJbGljZW5zZSBleGlzdHMsIGNvbnRhY3QgdGhlIFJlZGlzdHJpYnV0b3IuIFVubGVzcyBvdGhlcndpc2UgaW5kaWNhdGVkCisJCWJlbG93LCB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVQTCBzdGlsbCBhcHBseSB0byBhbnkgc291cmNlCisJCWNvZGUgaW4gdGhlIENvbnRlbnQgYW5kIHN1Y2ggc291cmNlIGNvZGUgbWF5IGJlIG9idGFpbmVkIGF0IDxhCisJCQlocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnLyI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZzwvYT4uCisJPC9wPgorCis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MucGF0dGVybnMucHJvZmlsZS9hYm91dC5odG1sIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MucGF0dGVybnMucHJvZmlsZS9hYm91dC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE2NGY3ODEKLS0tIC9kZXYvbnVsbAorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5wYXR0ZXJucy5wcm9maWxlL2Fib3V0Lmh0bWwKQEAgLTAsMCArMSwzNiBAQAorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgU3RyaWN0Ly9FTiIKKyAgICAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+Cis8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiIC8+Cis8dGl0bGU+QWJvdXQ8L3RpdGxlPgorPC9oZWFkPgorPGJvZHkgbGFuZz0iRU4tVVMiPgorCTxoMj5BYm91dCBUaGlzIENvbnRlbnQ8L2gyPgorCisJPHA+Tm92ZW1iZXIgMzAsIDIwMTc8L3A+CisJPGgzPkxpY2Vuc2U8L2gzPgorCisJPHA+CisJCVRoZSBFY2xpcHNlIEZvdW5kYXRpb24gbWFrZXMgYXZhaWxhYmxlIGFsbCBjb250ZW50IGluIHRoaXMgcGx1Zy1pbgorCQkoJnF1b3Q7Q29udGVudCZxdW90OykuIFVubGVzcyBvdGhlcndpc2UgaW5kaWNhdGVkIGJlbG93LCB0aGUgQ29udGVudAorCQlpcyBwcm92aWRlZCB0byB5b3UgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFY2xpcHNlCisJCVB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMi4wICgmcXVvdDtFUEwmcXVvdDspLiBBIGNvcHkgb2YgdGhlIEVQTCBpcworCQlhdmFpbGFibGUgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjA8L2E+LgorCQlGb3IgcHVycG9zZXMgb2YgdGhlIEVQTCwgJnF1b3Q7UHJvZ3JhbSZxdW90OyB3aWxsIG1lYW4gdGhlIENvbnRlbnQuCisJPC9wPgorCisJPHA+CisJCUlmIHlvdSBkaWQgbm90IHJlY2VpdmUgdGhpcyBDb250ZW50IGRpcmVjdGx5IGZyb20gdGhlIEVjbGlwc2UKKwkJRm91bmRhdGlvbiwgdGhlIENvbnRlbnQgaXMgYmVpbmcgcmVkaXN0cmlidXRlZCBieSBhbm90aGVyIHBhcnR5CisJCSgmcXVvdDtSZWRpc3RyaWJ1dG9yJnF1b3Q7KSBhbmQgZGlmZmVyZW50IHRlcm1zIGFuZCBjb25kaXRpb25zIG1heQorCQlhcHBseSB0byB5b3VyIHVzZSBvZiBhbnkgb2JqZWN0IGNvZGUgaW4gdGhlIENvbnRlbnQuIENoZWNrIHRoZQorCQlSZWRpc3RyaWJ1dG9yJ3MgbGljZW5zZSB0aGF0IHdhcyBwcm92aWRlZCB3aXRoIHRoZSBDb250ZW50LiBJZiBubyBzdWNoCisJCWxpY2Vuc2UgZXhpc3RzLCBjb250YWN0IHRoZSBSZWRpc3RyaWJ1dG9yLiBVbmxlc3Mgb3RoZXJ3aXNlIGluZGljYXRlZAorCQliZWxvdywgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFUEwgc3RpbGwgYXBwbHkgdG8gYW55IHNvdXJjZQorCQljb2RlIGluIHRoZSBDb250ZW50IGFuZCBzdWNoIHNvdXJjZSBjb2RlIG1heSBiZSBvYnRhaW5lZCBhdCA8YQorCQkJaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy8iPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmc8L2E+LgorCTwvcD4KKworPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnBhdHRlcm5zL2Fib3V0Lmh0bWwgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5wYXR0ZXJucy9hYm91dC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE2NGY3ODEKLS0tIC9kZXYvbnVsbAorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5wYXR0ZXJucy9hYm91dC5odG1sCkBAIC0wLDAgKzEsMzYgQEAKKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFN0cmljdC8vRU4iCisgICAgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXN0cmljdC5kdGQiPgorPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xIiAvPgorPHRpdGxlPkFib3V0PC90aXRsZT4KKzwvaGVhZD4KKzxib2R5IGxhbmc9IkVOLVVTIj4KKwk8aDI+QWJvdXQgVGhpcyBDb250ZW50PC9oMj4KKworCTxwPk5vdmVtYmVyIDMwLCAyMDE3PC9wPgorCTxoMz5MaWNlbnNlPC9oMz4KKworCTxwPgorCQlUaGUgRWNsaXBzZSBGb3VuZGF0aW9uIG1ha2VzIGF2YWlsYWJsZSBhbGwgY29udGVudCBpbiB0aGlzIHBsdWctaW4KKwkJKCZxdW90O0NvbnRlbnQmcXVvdDspLiBVbmxlc3Mgb3RoZXJ3aXNlIGluZGljYXRlZCBiZWxvdywgdGhlIENvbnRlbnQKKwkJaXMgcHJvdmlkZWQgdG8geW91IHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRWNsaXBzZQorCQlQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDIuMCAoJnF1b3Q7RVBMJnF1b3Q7KS4gQSBjb3B5IG9mIHRoZSBFUEwgaXMKKwkJYXZhaWxhYmxlIGF0IDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMCI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wPC9hPi4KKwkJRm9yIHB1cnBvc2VzIG9mIHRoZSBFUEwsICZxdW90O1Byb2dyYW0mcXVvdDsgd2lsbCBtZWFuIHRoZSBDb250ZW50LgorCTwvcD4KKworCTxwPgorCQlJZiB5b3UgZGlkIG5vdCByZWNlaXZlIHRoaXMgQ29udGVudCBkaXJlY3RseSBmcm9tIHRoZSBFY2xpcHNlCisJCUZvdW5kYXRpb24sIHRoZSBDb250ZW50IGlzIGJlaW5nIHJlZGlzdHJpYnV0ZWQgYnkgYW5vdGhlciBwYXJ0eQorCQkoJnF1b3Q7UmVkaXN0cmlidXRvciZxdW90OykgYW5kIGRpZmZlcmVudCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBtYXkKKwkJYXBwbHkgdG8geW91ciB1c2Ugb2YgYW55IG9iamVjdCBjb2RlIGluIHRoZSBDb250ZW50LiBDaGVjayB0aGUKKwkJUmVkaXN0cmlidXRvcidzIGxpY2Vuc2UgdGhhdCB3YXMgcHJvdmlkZWQgd2l0aCB0aGUgQ29udGVudC4gSWYgbm8gc3VjaAorCQlsaWNlbnNlIGV4aXN0cywgY29udGFjdCB0aGUgUmVkaXN0cmlidXRvci4gVW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQKKwkJYmVsb3csIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRVBMIHN0aWxsIGFwcGx5IHRvIGFueSBzb3VyY2UKKwkJY29kZSBpbiB0aGUgQ29udGVudCBhbmQgc3VjaCBzb3VyY2UgY29kZSBtYXkgYmUgb2J0YWluZWQgYXQgPGEKKwkJCWhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnPC9hPi4KKwk8L3A+CisKKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5wcm9wZXJ0aWVzLnByb3BlcnR5RWRpdG9yL2Fib3V0Lmh0bWwgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5wcm9wZXJ0aWVzLnByb3BlcnR5RWRpdG9yL2Fib3V0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTY0Zjc4MQotLS0gL2Rldi9udWxsCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnByb3BlcnRpZXMucHJvcGVydHlFZGl0b3IvYWJvdXQuaHRtbApAQCAtMCwwICsxLDM2IEBACis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIgorICAgICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS1zdHJpY3QuZHRkIj4KKzxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMSIgLz4KKzx0aXRsZT5BYm91dDwvdGl0bGU+Cis8L2hlYWQ+Cis8Ym9keSBsYW5nPSJFTi1VUyI+CisJPGgyPkFib3V0IFRoaXMgQ29udGVudDwvaDI+CisKKwk8cD5Ob3ZlbWJlciAzMCwgMjAxNzwvcD4KKwk8aDM+TGljZW5zZTwvaDM+CisKKwk8cD4KKwkJVGhlIEVjbGlwc2UgRm91bmRhdGlvbiBtYWtlcyBhdmFpbGFibGUgYWxsIGNvbnRlbnQgaW4gdGhpcyBwbHVnLWluCisJCSgmcXVvdDtDb250ZW50JnF1b3Q7KS4gVW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQgYmVsb3csIHRoZSBDb250ZW50CisJCWlzIHByb3ZpZGVkIHRvIHlvdSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVjbGlwc2UKKwkJUHVibGljIExpY2Vuc2UgVmVyc2lvbiAyLjAgKCZxdW90O0VQTCZxdW90OykuIEEgY29weSBvZiB0aGUgRVBMIGlzCisJCWF2YWlsYWJsZSBhdCA8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAiPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMDwvYT4uCisJCUZvciBwdXJwb3NlcyBvZiB0aGUgRVBMLCAmcXVvdDtQcm9ncmFtJnF1b3Q7IHdpbGwgbWVhbiB0aGUgQ29udGVudC4KKwk8L3A+CisKKwk8cD4KKwkJSWYgeW91IGRpZCBub3QgcmVjZWl2ZSB0aGlzIENvbnRlbnQgZGlyZWN0bHkgZnJvbSB0aGUgRWNsaXBzZQorCQlGb3VuZGF0aW9uLCB0aGUgQ29udGVudCBpcyBiZWluZyByZWRpc3RyaWJ1dGVkIGJ5IGFub3RoZXIgcGFydHkKKwkJKCZxdW90O1JlZGlzdHJpYnV0b3ImcXVvdDspIGFuZCBkaWZmZXJlbnQgdGVybXMgYW5kIGNvbmRpdGlvbnMgbWF5CisJCWFwcGx5IHRvIHlvdXIgdXNlIG9mIGFueSBvYmplY3QgY29kZSBpbiB0aGUgQ29udGVudC4gQ2hlY2sgdGhlCisJCVJlZGlzdHJpYnV0b3IncyBsaWNlbnNlIHRoYXQgd2FzIHByb3ZpZGVkIHdpdGggdGhlIENvbnRlbnQuIElmIG5vIHN1Y2gKKwkJbGljZW5zZSBleGlzdHMsIGNvbnRhY3QgdGhlIFJlZGlzdHJpYnV0b3IuIFVubGVzcyBvdGhlcndpc2UgaW5kaWNhdGVkCisJCWJlbG93LCB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVQTCBzdGlsbCBhcHBseSB0byBhbnkgc291cmNlCisJCWNvZGUgaW4gdGhlIENvbnRlbnQgYW5kIHN1Y2ggc291cmNlIGNvZGUgbWF5IGJlIG9idGFpbmVkIGF0IDxhCisJCQlocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnLyI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZzwvYT4uCisJPC9wPgorCis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MucHJvcGVydGllcy5wcm9wZXJ0eUVkaXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3Byb3BlcnRpZXMvcHJvcGVydHlFZGl0b3IvQ3VzdG9tUHJvcGVydHlFZGl0b3JUYWIuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnByb3BlcnRpZXMucHJvcGVydHlFZGl0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9wcm9wZXJ0aWVzL3Byb3BlcnR5RWRpdG9yL0N1c3RvbVByb3BlcnR5RWRpdG9yVGFiLmphdmEKaW5kZXggOWE1ZWZhNC4uODQ4YTdmNyAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MucHJvcGVydGllcy5wcm9wZXJ0eUVkaXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3Byb3BlcnRpZXMvcHJvcGVydHlFZGl0b3IvQ3VzdG9tUHJvcGVydHlFZGl0b3JUYWIuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5wcm9wZXJ0aWVzLnByb3BlcnR5RWRpdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvcHJvcGVydGllcy9wcm9wZXJ0eUVkaXRvci9DdXN0b21Qcm9wZXJ0eUVkaXRvclRhYi5qYXZhCkBAIC0xLDkgKzEsOSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTcgRm9uZGF6aW9uZSBCcnVubyBLZXNzbGVyLg0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKiANCiAgKiBDb250cmlidXRvcnM6DQogICogICAgIEFsYmVydG8gRGViaWFzaSAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbg0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnByb3BlcnRpZXMucHJvcGVydHlFZGl0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9wcm9wZXJ0aWVzL3Byb3BlcnR5RWRpdG9yL1Byb3BlcnR5RWRpdG9yRmlsdGVyLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5wcm9wZXJ0aWVzLnByb3BlcnR5RWRpdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvcHJvcGVydGllcy9wcm9wZXJ0eUVkaXRvci9Qcm9wZXJ0eUVkaXRvckZpbHRlci5qYXZhCmluZGV4IGIxNjFjODIuLmU3Yzk2MzEgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnByb3BlcnRpZXMucHJvcGVydHlFZGl0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9wcm9wZXJ0aWVzL3Byb3BlcnR5RWRpdG9yL1Byb3BlcnR5RWRpdG9yRmlsdGVyLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MucHJvcGVydGllcy5wcm9wZXJ0eUVkaXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3Byb3BlcnRpZXMvcHJvcGVydHlFZGl0b3IvUHJvcGVydHlFZGl0b3JGaWx0ZXIuamF2YQpAQCAtMSw5ICsxLDkgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogQ29weXJpZ2h0IChDKSAyMDE3IEZvbmRhemlvbmUgQnJ1bm8gS2Vzc2xlci4NCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICogDQogICogQ29udHJpYnV0b3JzOg0KICAqICAgICBBbGJlcnRvIERlYmlhc2kgLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5zZXJ2aWNlL2Fib3V0Lmh0bWwgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5zZXJ2aWNlL2Fib3V0Lmh0bWwKaW5kZXggZGQzYzA4OS4uMTY0Zjc4MSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3Muc2VydmljZS9hYm91dC5odG1sCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnNlcnZpY2UvYWJvdXQuaHRtbApAQCAtMiwyNyArMiwzNSBAQAogICAgICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS1zdHJpY3QuZHRkIj4KIDxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KIDxoZWFkPgotPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMSIvPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMSIgLz4KIDx0aXRsZT5BYm91dDwvdGl0bGU+CiA8L2hlYWQ+CiA8Ym9keSBsYW5nPSJFTi1VUyI+Ci08aDI+QWJvdXQgVGhpcyBDb250ZW50PC9oMj4KLSAKLTxwPk5vdmVtYmVyIDE0LCAyMDA4PC9wPgkKLTxoMz5MaWNlbnNlPC9oMz4KKwk8aDI+QWJvdXQgVGhpcyBDb250ZW50PC9oMj4KIAotPHA+VGhlIEVjbGlwc2UgRm91bmRhdGlvbiBtYWtlcyBhdmFpbGFibGUgYWxsIGNvbnRlbnQgaW4gdGhpcyBwbHVnLWluICgmcXVvdDtDb250ZW50JnF1b3Q7KS4gIFVubGVzcyBvdGhlcndpc2UgCi1pbmRpY2F0ZWQgYmVsb3csIHRoZSBDb250ZW50IGlzIHByb3ZpZGVkIHRvIHlvdSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlCi1FY2xpcHNlIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMS4wICgmcXVvdDtFUEwmcXVvdDspLiAgQSBjb3B5IG9mIHRoZSBFUEwgaXMgYXZhaWxhYmxlIAotYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwiPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sPC9hPi4KLUZvciBwdXJwb3NlcyBvZiB0aGUgRVBMLCAmcXVvdDtQcm9ncmFtJnF1b3Q7IHdpbGwgbWVhbiB0aGUgQ29udGVudC48L3A+CisJPHA+Tm92ZW1iZXIgMzAsIDIwMTc8L3A+CisJPGgzPkxpY2Vuc2U8L2gzPgogCi08cD5JZiB5b3UgZGlkIG5vdCByZWNlaXZlIHRoaXMgQ29udGVudCBkaXJlY3RseSBmcm9tIHRoZSBFY2xpcHNlIEZvdW5kYXRpb24sIHRoZSBDb250ZW50IGlzIAotYmVpbmcgcmVkaXN0cmlidXRlZCBieSBhbm90aGVyIHBhcnR5ICgmcXVvdDtSZWRpc3RyaWJ1dG9yJnF1b3Q7KSBhbmQgZGlmZmVyZW50IHRlcm1zIGFuZCBjb25kaXRpb25zIG1heQotYXBwbHkgdG8geW91ciB1c2Ugb2YgYW55IG9iamVjdCBjb2RlIGluIHRoZSBDb250ZW50LiAgQ2hlY2sgdGhlIFJlZGlzdHJpYnV0b3IncyBsaWNlbnNlIHRoYXQgd2FzIAotcHJvdmlkZWQgd2l0aCB0aGUgQ29udGVudC4gIElmIG5vIHN1Y2ggbGljZW5zZSBleGlzdHMsIGNvbnRhY3QgdGhlIFJlZGlzdHJpYnV0b3IuICBVbmxlc3Mgb3RoZXJ3aXNlCi1pbmRpY2F0ZWQgYmVsb3csIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRVBMIHN0aWxsIGFwcGx5IHRvIGFueSBzb3VyY2UgY29kZSBpbiB0aGUgQ29udGVudAotYW5kIHN1Y2ggc291cmNlIGNvZGUgbWF5IGJlIG9idGFpbmVkIGF0IDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmciPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmc8L2E+LjwvcD4KKwk8cD4KKwkJVGhlIEVjbGlwc2UgRm91bmRhdGlvbiBtYWtlcyBhdmFpbGFibGUgYWxsIGNvbnRlbnQgaW4gdGhpcyBwbHVnLWluCisJCSgmcXVvdDtDb250ZW50JnF1b3Q7KS4gVW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQgYmVsb3csIHRoZSBDb250ZW50CisJCWlzIHByb3ZpZGVkIHRvIHlvdSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVjbGlwc2UKKwkJUHVibGljIExpY2Vuc2UgVmVyc2lvbiAyLjAgKCZxdW90O0VQTCZxdW90OykuIEEgY29weSBvZiB0aGUgRVBMIGlzCisJCWF2YWlsYWJsZSBhdCA8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAiPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMDwvYT4uCisJCUZvciBwdXJwb3NlcyBvZiB0aGUgRVBMLCAmcXVvdDtQcm9ncmFtJnF1b3Q7IHdpbGwgbWVhbiB0aGUgQ29udGVudC4KKwk8L3A+CisKKwk8cD4KKwkJSWYgeW91IGRpZCBub3QgcmVjZWl2ZSB0aGlzIENvbnRlbnQgZGlyZWN0bHkgZnJvbSB0aGUgRWNsaXBzZQorCQlGb3VuZGF0aW9uLCB0aGUgQ29udGVudCBpcyBiZWluZyByZWRpc3RyaWJ1dGVkIGJ5IGFub3RoZXIgcGFydHkKKwkJKCZxdW90O1JlZGlzdHJpYnV0b3ImcXVvdDspIGFuZCBkaWZmZXJlbnQgdGVybXMgYW5kIGNvbmRpdGlvbnMgbWF5CisJCWFwcGx5IHRvIHlvdXIgdXNlIG9mIGFueSBvYmplY3QgY29kZSBpbiB0aGUgQ29udGVudC4gQ2hlY2sgdGhlCisJCVJlZGlzdHJpYnV0b3IncyBsaWNlbnNlIHRoYXQgd2FzIHByb3ZpZGVkIHdpdGggdGhlIENvbnRlbnQuIElmIG5vIHN1Y2gKKwkJbGljZW5zZSBleGlzdHMsIGNvbnRhY3QgdGhlIFJlZGlzdHJpYnV0b3IuIFVubGVzcyBvdGhlcndpc2UgaW5kaWNhdGVkCisJCWJlbG93LCB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVQTCBzdGlsbCBhcHBseSB0byBhbnkgc291cmNlCisJCWNvZGUgaW4gdGhlIENvbnRlbnQgYW5kIHN1Y2ggc291cmNlIGNvZGUgbWF5IGJlIG9idGFpbmVkIGF0IDxhCisJCQlocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnLyI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZzwvYT4uCisJPC9wPgogCiA8L2JvZHk+CiA8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3Muc2VydmljZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3NlcnZpY2UvY29yZS9leGNlcHRpb25zL05vQ29tcG9uZW50RXhjZXB0aW9uLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5zZXJ2aWNlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3Mvc2VydmljZS9jb3JlL2V4Y2VwdGlvbnMvTm9Db21wb25lbnRFeGNlcHRpb24uamF2YQppbmRleCAyYWQwMmUwLi4wYjg2Y2MyIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5zZXJ2aWNlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3Mvc2VydmljZS9jb3JlL2V4Y2VwdGlvbnMvTm9Db21wb25lbnRFeGNlcHRpb24uamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5zZXJ2aWNlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3Mvc2VydmljZS9jb3JlL2V4Y2VwdGlvbnMvTm9Db21wb25lbnRFeGNlcHRpb24uamF2YQpAQCAtMSw5ICsxLDkgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogQ29weXJpZ2h0IChDKSAyMDE3IEZvbmRhemlvbmUgQnJ1bm8gS2Vzc2xlci4NCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICogDQogICogQ29udHJpYnV0b3JzOg0KICAqICAgICBBbGJlcnRvIERlYmlhc2kgLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5zZXJ2aWNlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3Mvc2VydmljZS9jb3JlL2V4Y2VwdGlvbnMvTm9EaWFncmFtU3RhdHVzRXhjZXB0aW9uLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5zZXJ2aWNlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3Mvc2VydmljZS9jb3JlL2V4Y2VwdGlvbnMvTm9EaWFncmFtU3RhdHVzRXhjZXB0aW9uLmphdmEKaW5kZXggOTc0NWFkNy4uNmZiMjk5NiAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3Muc2VydmljZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3NlcnZpY2UvY29yZS9leGNlcHRpb25zL05vRGlhZ3JhbVN0YXR1c0V4Y2VwdGlvbi5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnNlcnZpY2Uvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9zZXJ2aWNlL2NvcmUvZXhjZXB0aW9ucy9Ob0RpYWdyYW1TdGF0dXNFeGNlcHRpb24uamF2YQpAQCAtMSw5ICsxLDkgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogQ29weXJpZ2h0IChDKSAyMDE4IEZvbmRhemlvbmUgQnJ1bm8gS2Vzc2xlci4NCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICogIA0KICAqIENvbnRyaWJ1dG9yczoNCiAgKiAgIEFsYmVydG8gRGViaWFzaSAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbg0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnNlcnZpY2Uvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9zZXJ2aWNlL2NvcmUvbW9kZWwvQ2hlc3NTeXN0ZW1Nb2RlbC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3Muc2VydmljZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3NlcnZpY2UvY29yZS9tb2RlbC9DaGVzc1N5c3RlbU1vZGVsLmphdmEKaW5kZXggNjk1Y2VlOC4uY2I4ZjkzYiAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3Muc2VydmljZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3NlcnZpY2UvY29yZS9tb2RlbC9DaGVzc1N5c3RlbU1vZGVsLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3Muc2VydmljZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3NlcnZpY2UvY29yZS9tb2RlbC9DaGVzc1N5c3RlbU1vZGVsLmphdmEKQEAgLTEsOSArMSw5IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIENvcHlyaWdodCAoQykgMjAxNyBGb25kYXppb25lIEJydW5vIEtlc3NsZXIuDQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqIA0KICAqIENvbnRyaWJ1dG9yczoNCiAgKiAgICAgQWxiZXJ0byBEZWJpYXNpIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3Muc2VydmljZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3NlcnZpY2UvY29yZS9tb2RlbC9VTUxTdGF0ZU1hY2hpbmVNb2RlbC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3Muc2VydmljZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3NlcnZpY2UvY29yZS9tb2RlbC9VTUxTdGF0ZU1hY2hpbmVNb2RlbC5qYXZhCmluZGV4IGRlZjQyYzQuLmM0MTdhMWMgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnNlcnZpY2Uvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9zZXJ2aWNlL2NvcmUvbW9kZWwvVU1MU3RhdGVNYWNoaW5lTW9kZWwuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5zZXJ2aWNlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3Mvc2VydmljZS9jb3JlL21vZGVsL1VNTFN0YXRlTWFjaGluZU1vZGVsLmphdmEKQEAgLTEsOSArMSw5IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIENvcHlyaWdodCAoQykgMjAxNyBGb25kYXppb25lIEJydW5vIEtlc3NsZXIuDQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqICANCiAgKiBDb250cmlidXRvcnM6DQogICogICBBbGJlcnRvIERlYmlhc2kgLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5zZXJ2aWNlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3Mvc2VydmljZS9jb3JlL3V0aWxzL0FuYWx5c2lzUmVzdWx0VXRpbC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3Muc2VydmljZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3NlcnZpY2UvY29yZS91dGlscy9BbmFseXNpc1Jlc3VsdFV0aWwuamF2YQppbmRleCA4MTA4NTc5Li42MThjMTBmIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5zZXJ2aWNlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3Mvc2VydmljZS9jb3JlL3V0aWxzL0FuYWx5c2lzUmVzdWx0VXRpbC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnNlcnZpY2Uvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9zZXJ2aWNlL2NvcmUvdXRpbHMvQW5hbHlzaXNSZXN1bHRVdGlsLmphdmEKQEAgLTEsOSArMSw5IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICogQ29weXJpZ2h0IChDKSAyMDE4IEZvbmRhemlvbmUgQnJ1bm8gS2Vzc2xlci4KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgKiAKICAqIENvbnRyaWJ1dG9yczoKICAqICAgICBMdWNhIENyaXN0b2ZvcmV0dGkgLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnNlcnZpY2Uvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9zZXJ2aWNlL2NvcmUvdXRpbHMvRmlsZU5hbWVzVXRpbC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3Muc2VydmljZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3NlcnZpY2UvY29yZS91dGlscy9GaWxlTmFtZXNVdGlsLmphdmEKaW5kZXggOGI2ZTBmYy4uNmE4ODAyNCAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3Muc2VydmljZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3NlcnZpY2UvY29yZS91dGlscy9GaWxlTmFtZXNVdGlsLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3Muc2VydmljZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3NlcnZpY2UvY29yZS91dGlscy9GaWxlTmFtZXNVdGlsLmphdmEKQEAgLTEsOSArMSw5IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICogQ29weXJpZ2h0IChDKSAyMDE4IEZvbmRhemlvbmUgQnJ1bm8gS2Vzc2xlci4KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgKiAKICAqIENvbnRyaWJ1dG9yczoKICAqICAgICBMdWNhIENyaXN0b2ZvcmV0dGkgLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnNlcnZpY2Uvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9zZXJ2aWNlL2d1aS91dGlscy9DSEVTU0VkaXRvclV0aWxzLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5zZXJ2aWNlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3Mvc2VydmljZS9ndWkvdXRpbHMvQ0hFU1NFZGl0b3JVdGlscy5qYXZhCmluZGV4IDdjNzNiZGMuLjc1ZDc0MjcgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnNlcnZpY2Uvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9zZXJ2aWNlL2d1aS91dGlscy9DSEVTU0VkaXRvclV0aWxzLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3Muc2VydmljZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3NlcnZpY2UvZ3VpL3V0aWxzL0NIRVNTRWRpdG9yVXRpbHMuamF2YQpAQCAtMTAsNyArMTAsNyBAQAogLS0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAgLS0NCiAtLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlICAtLQ0KIC0tIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgICAgIC0tDQotLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0NCistLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQ0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICovDQogDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3Muc2VydmljZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3NlcnZpY2UvZ3VpL3V0aWxzL0RpYWxvZ1V0aWxzLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5zZXJ2aWNlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3Mvc2VydmljZS9ndWkvdXRpbHMvRGlhbG9nVXRpbHMuamF2YQppbmRleCA3Njk1YjE0Li5kNDA3YTY0IDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5zZXJ2aWNlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3Mvc2VydmljZS9ndWkvdXRpbHMvRGlhbG9nVXRpbHMuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5zZXJ2aWNlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3Mvc2VydmljZS9ndWkvdXRpbHMvRGlhbG9nVXRpbHMuamF2YQpAQCAtMSw5ICsxLDkgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogQ29weXJpZ2h0IChDKSAyMDE3IEZvbmRhemlvbmUgQnJ1bm8gS2Vzc2xlci4NCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCi0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQogICogDQogICogQ29udHJpYnV0b3JzOg0KICAqICAgICBBbGJlcnRvIERlYmlhc2kgLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5zZXJ2aWNlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3Mvc2VydmljZS9ndWkvdXRpbHMvUmVwb3J0UHJvYmxlbXNVdGlsLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5zZXJ2aWNlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3Mvc2VydmljZS9ndWkvdXRpbHMvUmVwb3J0UHJvYmxlbXNVdGlsLmphdmEKaW5kZXggOGYxZGIyMC4uOTliMTA1YyAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3Muc2VydmljZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3NlcnZpY2UvZ3VpL3V0aWxzL1JlcG9ydFByb2JsZW1zVXRpbC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnNlcnZpY2Uvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9zZXJ2aWNlL2d1aS91dGlscy9SZXBvcnRQcm9ibGVtc1V0aWwuamF2YQpAQCAtMSw5ICsxLDkgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKiBDb3B5cmlnaHQgKEMpIDIwMjAgRm9uZGF6aW9uZSBCcnVubyBLZXNzbGVyLgogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICAqIAogICogQ29udHJpYnV0b3JzOgogICogICAgIEx1Y2EgQ3Jpc3RvZm9yZXR0aSAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3Muc2VydmljZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3NlcnZpY2UvZ3VpL3V0aWxzL1NlbGVjdGlvblV0aWwuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnNlcnZpY2Uvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9zZXJ2aWNlL2d1aS91dGlscy9TZWxlY3Rpb25VdGlsLmphdmEKaW5kZXggYTg5NGVjMy4uMDkxNDViZSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3Muc2VydmljZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3NlcnZpY2UvZ3VpL3V0aWxzL1NlbGVjdGlvblV0aWwuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5zZXJ2aWNlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3Mvc2VydmljZS9ndWkvdXRpbHMvU2VsZWN0aW9uVXRpbC5qYXZhCkBAIC0xLDkgKzEsOSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTcgRm9uZGF6aW9uZSBCcnVubyBLZXNzbGVyLg0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKiANCiAgKiBDb250cmlidXRvcnM6DQogICogICAgIEFsYmVydG8gRGViaWFzaSAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbg0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnNlcnZpY2Uvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9zZXJ2aWNlL2ludGVybmFsL0FjdGl2YXRvci5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3Muc2VydmljZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3NlcnZpY2UvaW50ZXJuYWwvQWN0aXZhdG9yLmphdmEKaW5kZXggNTdmYTg0NS4uZWYzZjdmYSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3Muc2VydmljZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3NlcnZpY2UvaW50ZXJuYWwvQWN0aXZhdG9yLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3Muc2VydmljZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3NlcnZpY2UvaW50ZXJuYWwvQWN0aXZhdG9yLmphdmEKQEAgLTEwLDcgKzEwLDcgQEAKIC0tIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgIC0tCiAtLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlICAtLQogLS0gdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCAgICAgLS0KLS0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICovCiAKZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnNlcnZpY2Uvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9zZXJ2aWNlL2ludGVybmFsL01hdGNoaW5nU3RyYXRlZ3kuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnNlcnZpY2Uvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9zZXJ2aWNlL2ludGVybmFsL01hdGNoaW5nU3RyYXRlZ3kuamF2YQppbmRleCBiMDk3Yzk3Li5iZTlmNTkxIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5zZXJ2aWNlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3Mvc2VydmljZS9pbnRlcm5hbC9NYXRjaGluZ1N0cmF0ZWd5LmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3Muc2VydmljZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3NlcnZpY2UvaW50ZXJuYWwvTWF0Y2hpbmdTdHJhdGVneS5qYXZhCkBAIC0xMCw3ICsxMCw3IEBACiAtLSBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzICAtLQogLS0gYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAgLS0KIC0tIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgICAgIC0tCi0tLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqLwogCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5zZXJ2aWNlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3Mvc2VydmljZS9pbnRlcm5hbC9jb21tYW5kcy9DdXJyZW50Vmlld1N0YXR1c0NvbW1hbmQuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnNlcnZpY2Uvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9zZXJ2aWNlL2ludGVybmFsL2NvbW1hbmRzL0N1cnJlbnRWaWV3U3RhdHVzQ29tbWFuZC5qYXZhCmluZGV4IDI0ZDBkNWMuLjc2YTQzMDAgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnNlcnZpY2Uvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9zZXJ2aWNlL2ludGVybmFsL2NvbW1hbmRzL0N1cnJlbnRWaWV3U3RhdHVzQ29tbWFuZC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnNlcnZpY2Uvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9zZXJ2aWNlL2ludGVybmFsL2NvbW1hbmRzL0N1cnJlbnRWaWV3U3RhdHVzQ29tbWFuZC5qYXZhCkBAIC0xMCw3ICsxMCw3IEBACiAtLSBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzICAtLQogLS0gYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAgLS0KIC0tIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgICAgIC0tCi0tLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqLwogCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5zZXJ2aWNlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3Mvc2VydmljZS9pbnRlcm5hbC9jb21tYW5kcy9TdXBlcnN1c2VyVG9nZ2xlQ29tbWFuZC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3Muc2VydmljZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3NlcnZpY2UvaW50ZXJuYWwvY29tbWFuZHMvU3VwZXJzdXNlclRvZ2dsZUNvbW1hbmQuamF2YQppbmRleCA4ZmU2ZDI3Li5hYTllOWU3IDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5zZXJ2aWNlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3Mvc2VydmljZS9pbnRlcm5hbC9jb21tYW5kcy9TdXBlcnN1c2VyVG9nZ2xlQ29tbWFuZC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnNlcnZpY2Uvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9zZXJ2aWNlL2ludGVybmFsL2NvbW1hbmRzL1N1cGVyc3VzZXJUb2dnbGVDb21tYW5kLmphdmEKQEAgLTEwLDcgKzEwLDcgQEAKIC0tIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgIC0tCiAtLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlICAtLQogLS0gdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCAgICAgLS0KLS0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICovCiAKZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnNlcnZpY2Uvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9zZXJ2aWNlL2ludGVybmFsL2NvbW1hbmRzL3N3aXRjaGVycy9Td2l0Y2hTb3VyY2VQcm92aWRlci5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3Muc2VydmljZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3NlcnZpY2UvaW50ZXJuYWwvY29tbWFuZHMvc3dpdGNoZXJzL1N3aXRjaFNvdXJjZVByb3ZpZGVyLmphdmEKaW5kZXggZWQxYTZjMC4uMTkxNTUxOSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3Muc2VydmljZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3NlcnZpY2UvaW50ZXJuYWwvY29tbWFuZHMvc3dpdGNoZXJzL1N3aXRjaFNvdXJjZVByb3ZpZGVyLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3Muc2VydmljZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3NlcnZpY2UvaW50ZXJuYWwvY29tbWFuZHMvc3dpdGNoZXJzL1N3aXRjaFNvdXJjZVByb3ZpZGVyLmphdmEKQEAgLTEwLDcgKzEwLDcgQEAKIC0tIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgIC0tCiAtLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlICAtLQogLS0gdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCAgICAgLS0KLS0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICovCiAKZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnNlcnZpY2Uvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9zZXJ2aWNlL2ludGVybmFsL2NvbW1hbmRzL3N3aXRjaGVycy9Td2l0Y2hUb0RlcGVuZGFiaWxpdHlDb21tYW5kLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5zZXJ2aWNlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3Mvc2VydmljZS9pbnRlcm5hbC9jb21tYW5kcy9zd2l0Y2hlcnMvU3dpdGNoVG9EZXBlbmRhYmlsaXR5Q29tbWFuZC5qYXZhCmluZGV4IDY1MmZkZmYuLmJkYWY4MTcgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnNlcnZpY2Uvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9zZXJ2aWNlL2ludGVybmFsL2NvbW1hbmRzL3N3aXRjaGVycy9Td2l0Y2hUb0RlcGVuZGFiaWxpdHlDb21tYW5kLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3Muc2VydmljZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3NlcnZpY2UvaW50ZXJuYWwvY29tbWFuZHMvc3dpdGNoZXJzL1N3aXRjaFRvRGVwZW5kYWJpbGl0eUNvbW1hbmQuamF2YQpAQCAtMTAsNyArMTAsNyBAQAogLS0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAgLS0KIC0tIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgIC0tCiAtLSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0ICAgICAtLQotLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogKi8KIApkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3Muc2VydmljZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3NlcnZpY2UvaW50ZXJuYWwvY29tbWFuZHMvc3dpdGNoZXJzL1N3aXRjaFRvRXh0cmFGdW5jdGlvbmFsQ29tbWFuZC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3Muc2VydmljZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3NlcnZpY2UvaW50ZXJuYWwvY29tbWFuZHMvc3dpdGNoZXJzL1N3aXRjaFRvRXh0cmFGdW5jdGlvbmFsQ29tbWFuZC5qYXZhCmluZGV4IGFjMjY0NmIuLjk1OTc3OTggMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnNlcnZpY2Uvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9zZXJ2aWNlL2ludGVybmFsL2NvbW1hbmRzL3N3aXRjaGVycy9Td2l0Y2hUb0V4dHJhRnVuY3Rpb25hbENvbW1hbmQuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5zZXJ2aWNlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3Mvc2VydmljZS9pbnRlcm5hbC9jb21tYW5kcy9zd2l0Y2hlcnMvU3dpdGNoVG9FeHRyYUZ1bmN0aW9uYWxDb21tYW5kLmphdmEKQEAgLTEwLDcgKzEwLDcgQEAKIC0tIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgIC0tCiAtLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlICAtLQogLS0gdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCAgICAgLS0KLS0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICovCiAKZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnNlcnZpY2Uvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9zZXJ2aWNlL2ludGVybmFsL2NvbW1hbmRzL3N3aXRjaGVycy9Td2l0Y2hUb1JhaWx3YXlDb21tYW5kLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5zZXJ2aWNlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3Mvc2VydmljZS9pbnRlcm5hbC9jb21tYW5kcy9zd2l0Y2hlcnMvU3dpdGNoVG9SYWlsd2F5Q29tbWFuZC5qYXZhCmluZGV4IGM5MDZkZDcuLjAwNzI1YWYgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnNlcnZpY2Uvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9zZXJ2aWNlL2ludGVybmFsL2NvbW1hbmRzL3N3aXRjaGVycy9Td2l0Y2hUb1JhaWx3YXlDb21tYW5kLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3Muc2VydmljZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3NlcnZpY2UvaW50ZXJuYWwvY29tbWFuZHMvc3dpdGNoZXJzL1N3aXRjaFRvUmFpbHdheUNvbW1hbmQuamF2YQpAQCAtMTAsNyArMTAsNyBAQAogLS0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAgLS0KIC0tIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgIC0tCiAtLSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0ICAgICAtLQotLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogKi8KIApkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3Muc2VydmljZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3NlcnZpY2UvaW50ZXJuYWwvY29tbWFuZHMvc3dpdGNoZXJzL1N3aXRjaFRvVmlldy5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3Muc2VydmljZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3NlcnZpY2UvaW50ZXJuYWwvY29tbWFuZHMvc3dpdGNoZXJzL1N3aXRjaFRvVmlldy5qYXZhCmluZGV4IDQyNjY5NjYuLmM3MGU1OTQgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnNlcnZpY2Uvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9zZXJ2aWNlL2ludGVybmFsL2NvbW1hbmRzL3N3aXRjaGVycy9Td2l0Y2hUb1ZpZXcuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5zZXJ2aWNlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3Mvc2VydmljZS9pbnRlcm5hbC9jb21tYW5kcy9zd2l0Y2hlcnMvU3dpdGNoVG9WaWV3LmphdmEKQEAgLTEwLDcgKzEwLDcgQEAKIC0tIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgIC0tCiAtLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlICAtLQogLS0gdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCAgICAgLS0KLS0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICovCiAKZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnNlcnZpY2Uvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9zZXJ2aWNlL2ludGVybmFsL3BhbGV0dGUvUGFsZXR0ZU1hbmFnZXIuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnNlcnZpY2Uvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9zZXJ2aWNlL2ludGVybmFsL3BhbGV0dGUvUGFsZXR0ZU1hbmFnZXIuamF2YQppbmRleCBiZjM4Y2ZlLi5mY2MxZmYyIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5zZXJ2aWNlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3Mvc2VydmljZS9pbnRlcm5hbC9wYWxldHRlL1BhbGV0dGVNYW5hZ2VyLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3Muc2VydmljZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3NlcnZpY2UvaW50ZXJuYWwvcGFsZXR0ZS9QYWxldHRlTWFuYWdlci5qYXZhCkBAIC0xMCw3ICsxMCw3IEBACiAtLSBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzICAtLQ0KIC0tIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgIC0tDQogLS0gdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCAgICAgLS0NCi0tLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQ0KKy0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tDQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAqLw0KIA0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnNlcnZpY2Uvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9zZXJ2aWNlL2ludGVybmFsL3NlcnZpY2UvQ0hFU1NTZXJ2aWNlLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5zZXJ2aWNlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3Mvc2VydmljZS9pbnRlcm5hbC9zZXJ2aWNlL0NIRVNTU2VydmljZS5qYXZhCmluZGV4IDJlOGYwOWMuLmNmYjM4YjMgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnNlcnZpY2Uvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9zZXJ2aWNlL2ludGVybmFsL3NlcnZpY2UvQ0hFU1NTZXJ2aWNlLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3Muc2VydmljZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3NlcnZpY2UvaW50ZXJuYWwvc2VydmljZS9DSEVTU1NlcnZpY2UuamF2YQpAQCAtMTAsNyArMTAsNyBAQAogLS0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAgLS0KIC0tIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgIC0tCiAtLSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0ICAgICAtLQotLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogKi8KIApkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3Muc2VydmljZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3NlcnZpY2UvaW50ZXJuYWwvc2VydmljZS9DSEVTU1NlcnZpY2VGYWN0b3J5LmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5zZXJ2aWNlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3Mvc2VydmljZS9pbnRlcm5hbC9zZXJ2aWNlL0NIRVNTU2VydmljZUZhY3RvcnkuamF2YQppbmRleCA3NmUzNDQ1Li40YjQ4NTc1IDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5zZXJ2aWNlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3Mvc2VydmljZS9pbnRlcm5hbC9zZXJ2aWNlL0NIRVNTU2VydmljZUZhY3RvcnkuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5zZXJ2aWNlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3Mvc2VydmljZS9pbnRlcm5hbC9zZXJ2aWNlL0NIRVNTU2VydmljZUZhY3RvcnkuamF2YQpAQCAtMTAsNyArMTAsNyBAQAogLS0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAgLS0KIC0tIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgIC0tCiAtLSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0ICAgICAtLQotLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogKi8KIApkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3Muc2VydmljZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3NlcnZpY2UvaW50ZXJuYWwvc2VydmljZS9TZWxlY3Rpb25MaXN0ZW5lci5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3Muc2VydmljZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3NlcnZpY2UvaW50ZXJuYWwvc2VydmljZS9TZWxlY3Rpb25MaXN0ZW5lci5qYXZhCmluZGV4IGI0MmFmOTkuLmQxMzU1YmIgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnNlcnZpY2Uvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9zZXJ2aWNlL2ludGVybmFsL3NlcnZpY2UvU2VsZWN0aW9uTGlzdGVuZXIuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5zZXJ2aWNlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3Mvc2VydmljZS9pbnRlcm5hbC9zZXJ2aWNlL1NlbGVjdGlvbkxpc3RlbmVyLmphdmEKQEAgLTEwLDcgKzEwLDcgQEAKIC0tIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgIC0tCiAtLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlICAtLQogLS0gdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCAgICAgLS0KLS0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICovCiAKZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnNlcnZpY2Uvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9zZXJ2aWNlL2ludGVybmFsL3V0aWxzL0NIRVNTSW50ZXJuYWxFZGl0b3JVdGlscy5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3Muc2VydmljZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3NlcnZpY2UvaW50ZXJuYWwvdXRpbHMvQ0hFU1NJbnRlcm5hbEVkaXRvclV0aWxzLmphdmEKaW5kZXggN2ZlZWVkZC4uNzBlMjQzNyAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3Muc2VydmljZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3NlcnZpY2UvaW50ZXJuYWwvdXRpbHMvQ0hFU1NJbnRlcm5hbEVkaXRvclV0aWxzLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3Muc2VydmljZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3NlcnZpY2UvaW50ZXJuYWwvdXRpbHMvQ0hFU1NJbnRlcm5hbEVkaXRvclV0aWxzLmphdmEKQEAgLTEwLDcgKzEwLDcgQEAKIC0tIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgIC0tCiAtLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlICAtLQogLS0gdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCAgICAgLS0KLS0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqLwogCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5zZXJ2aWNlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3Mvc2VydmljZS9pbnRlcm5hbC92aXNpYmlsaXR5L0hpZGVQb3J0Q29tbWFuZC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3Muc2VydmljZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3NlcnZpY2UvaW50ZXJuYWwvdmlzaWJpbGl0eS9IaWRlUG9ydENvbW1hbmQuamF2YQppbmRleCBkYTc2YzlhLi40YjgyYTE5IDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5zZXJ2aWNlL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3Mvc2VydmljZS9pbnRlcm5hbC92aXNpYmlsaXR5L0hpZGVQb3J0Q29tbWFuZC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnNlcnZpY2Uvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9zZXJ2aWNlL2ludGVybmFsL3Zpc2liaWxpdHkvSGlkZVBvcnRDb21tYW5kLmphdmEKQEAgLTEwLDcgKzEwLDcgQEAKIC0tIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgIC0tCiAtLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlICAtLQogLS0gdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCAgICAgLS0KLS0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICovCiAKZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnNtdkV4cG9ydGVyL2Fib3V0Lmh0bWwgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5zbXZFeHBvcnRlci9hYm91dC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE2NGY3ODEKLS0tIC9kZXYvbnVsbAorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5zbXZFeHBvcnRlci9hYm91dC5odG1sCkBAIC0wLDAgKzEsMzYgQEAKKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFN0cmljdC8vRU4iCisgICAgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXN0cmljdC5kdGQiPgorPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xIiAvPgorPHRpdGxlPkFib3V0PC90aXRsZT4KKzwvaGVhZD4KKzxib2R5IGxhbmc9IkVOLVVTIj4KKwk8aDI+QWJvdXQgVGhpcyBDb250ZW50PC9oMj4KKworCTxwPk5vdmVtYmVyIDMwLCAyMDE3PC9wPgorCTxoMz5MaWNlbnNlPC9oMz4KKworCTxwPgorCQlUaGUgRWNsaXBzZSBGb3VuZGF0aW9uIG1ha2VzIGF2YWlsYWJsZSBhbGwgY29udGVudCBpbiB0aGlzIHBsdWctaW4KKwkJKCZxdW90O0NvbnRlbnQmcXVvdDspLiBVbmxlc3Mgb3RoZXJ3aXNlIGluZGljYXRlZCBiZWxvdywgdGhlIENvbnRlbnQKKwkJaXMgcHJvdmlkZWQgdG8geW91IHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRWNsaXBzZQorCQlQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDIuMCAoJnF1b3Q7RVBMJnF1b3Q7KS4gQSBjb3B5IG9mIHRoZSBFUEwgaXMKKwkJYXZhaWxhYmxlIGF0IDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMCI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wPC9hPi4KKwkJRm9yIHB1cnBvc2VzIG9mIHRoZSBFUEwsICZxdW90O1Byb2dyYW0mcXVvdDsgd2lsbCBtZWFuIHRoZSBDb250ZW50LgorCTwvcD4KKworCTxwPgorCQlJZiB5b3UgZGlkIG5vdCByZWNlaXZlIHRoaXMgQ29udGVudCBkaXJlY3RseSBmcm9tIHRoZSBFY2xpcHNlCisJCUZvdW5kYXRpb24sIHRoZSBDb250ZW50IGlzIGJlaW5nIHJlZGlzdHJpYnV0ZWQgYnkgYW5vdGhlciBwYXJ0eQorCQkoJnF1b3Q7UmVkaXN0cmlidXRvciZxdW90OykgYW5kIGRpZmZlcmVudCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBtYXkKKwkJYXBwbHkgdG8geW91ciB1c2Ugb2YgYW55IG9iamVjdCBjb2RlIGluIHRoZSBDb250ZW50LiBDaGVjayB0aGUKKwkJUmVkaXN0cmlidXRvcidzIGxpY2Vuc2UgdGhhdCB3YXMgcHJvdmlkZWQgd2l0aCB0aGUgQ29udGVudC4gSWYgbm8gc3VjaAorCQlsaWNlbnNlIGV4aXN0cywgY29udGFjdCB0aGUgUmVkaXN0cmlidXRvci4gVW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQKKwkJYmVsb3csIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRVBMIHN0aWxsIGFwcGx5IHRvIGFueSBzb3VyY2UKKwkJY29kZSBpbiB0aGUgQ29udGVudCBhbmQgc3VjaCBzb3VyY2UgY29kZSBtYXkgYmUgb2J0YWluZWQgYXQgPGEKKwkJCWhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnPC9hPi4KKwk8L3A+CisKKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5zbXZFeHBvcnRlci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3NtdkV4cG9ydGVyL3VpL2NvbW1hbmRzL0V4cG9ydE1vZGVsVG9Nb25vbGl0aGljU01WQ29tbWFuZC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3Muc212RXhwb3J0ZXIvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9zbXZFeHBvcnRlci91aS9jb21tYW5kcy9FeHBvcnRNb2RlbFRvTW9ub2xpdGhpY1NNVkNvbW1hbmQuamF2YQppbmRleCBlMWNiYzY2Li5jOTczYjM4IDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5zbXZFeHBvcnRlci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3NtdkV4cG9ydGVyL3VpL2NvbW1hbmRzL0V4cG9ydE1vZGVsVG9Nb25vbGl0aGljU01WQ29tbWFuZC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnNtdkV4cG9ydGVyL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3Mvc212RXhwb3J0ZXIvdWkvY29tbWFuZHMvRXhwb3J0TW9kZWxUb01vbm9saXRoaWNTTVZDb21tYW5kLmphdmEKQEAgLTEsOSArMSw5IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIENvcHlyaWdodCAoQykgMjAxOCBGb25kYXppb25lIEJydW5vIEtlc3NsZXIuDQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqIA0KICAqIENvbnRyaWJ1dG9yczoNCiAgKiAgICAgTHVjYSBDcmlzdG9mb3JldHRpIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3Muc212RXhwb3J0ZXIvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9zbXZFeHBvcnRlci91aS9jb21tYW5kcy9FeHBvcnROb21pbmFsU01zVG9TbXZGaWxlc0NvbW1hbmQuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnNtdkV4cG9ydGVyL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3Mvc212RXhwb3J0ZXIvdWkvY29tbWFuZHMvRXhwb3J0Tm9taW5hbFNNc1RvU212RmlsZXNDb21tYW5kLmphdmEKaW5kZXggMjZhMGU1YS4uM2FkNjM0OSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3Muc212RXhwb3J0ZXIvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9zbXZFeHBvcnRlci91aS9jb21tYW5kcy9FeHBvcnROb21pbmFsU01zVG9TbXZGaWxlc0NvbW1hbmQuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5zbXZFeHBvcnRlci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3NtdkV4cG9ydGVyL3VpL2NvbW1hbmRzL0V4cG9ydE5vbWluYWxTTXNUb1NtdkZpbGVzQ29tbWFuZC5qYXZhCkBAIC0xLDkgKzEsOSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTcgRm9uZGF6aW9uZSBCcnVubyBLZXNzbGVyLg0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCiAgKiAgDQogICogQ29udHJpYnV0b3JzOg0KICAqICAgQWxiZXJ0byBEZWJpYXNpIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3Muc212RXhwb3J0ZXIvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9zbXZFeHBvcnRlci91aS9jb21tYW5kcy9FeHBvcnRTZWxlY3RlZE5vbWluYWxTTXNUb1NtdkZpbGVzQ29tbWFuZC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3Muc212RXhwb3J0ZXIvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9zbXZFeHBvcnRlci91aS9jb21tYW5kcy9FeHBvcnRTZWxlY3RlZE5vbWluYWxTTXNUb1NtdkZpbGVzQ29tbWFuZC5qYXZhCmluZGV4IDE1OThmZWEuLjI2YzExOWUgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnNtdkV4cG9ydGVyL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3Mvc212RXhwb3J0ZXIvdWkvY29tbWFuZHMvRXhwb3J0U2VsZWN0ZWROb21pbmFsU01zVG9TbXZGaWxlc0NvbW1hbmQuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5zbXZFeHBvcnRlci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3NtdkV4cG9ydGVyL3VpL2NvbW1hbmRzL0V4cG9ydFNlbGVjdGVkTm9taW5hbFNNc1RvU212RmlsZXNDb21tYW5kLmphdmEKQEAgLTEsOSArMSw5IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIENvcHlyaWdodCAoQykgMjAxNyBGb25kYXppb25lIEJydW5vIEtlc3NsZXIuDQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbA0KICAqICANCiAgKiBDb250cmlidXRvcnM6DQogICogICBBbGJlcnRvIERlYmlhc2kgLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24NCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5zbXZFeHBvcnRlci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3NtdkV4cG9ydGVyL3VpL3NlcnZpY2VzL0NIRVNTU212RXhwb3J0ZXJTZXJ2aWNlLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5zbXZFeHBvcnRlci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3NtdkV4cG9ydGVyL3VpL3NlcnZpY2VzL0NIRVNTU212RXhwb3J0ZXJTZXJ2aWNlLmphdmEKaW5kZXggMjI5ODM2OS4uYTAyNmExMCAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3Muc212RXhwb3J0ZXIvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9zbXZFeHBvcnRlci91aS9zZXJ2aWNlcy9DSEVTU1NtdkV4cG9ydGVyU2VydmljZS5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnNtdkV4cG9ydGVyL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3Mvc212RXhwb3J0ZXIvdWkvc2VydmljZXMvQ0hFU1NTbXZFeHBvcnRlclNlcnZpY2UuamF2YQpAQCAtMSw5ICsxLDkgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTggRm9uZGF6aW9uZSBCcnVubyBLZXNzbGVyLgogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICAqIAogICogQ29udHJpYnV0b3JzOgogICogICAgIEx1Y2EgQ3Jpc3RvZm9yZXR0aSAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3Muc212RXhwb3J0ZXIvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9zbXZFeHBvcnRlci91aS91dGlscy9TTVZHZW5lcmF0aW9uRGlhbG9nVXRpbC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3Muc212RXhwb3J0ZXIvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9zbXZFeHBvcnRlci91aS91dGlscy9TTVZHZW5lcmF0aW9uRGlhbG9nVXRpbC5qYXZhCmluZGV4IDhkYjYyZDYuLjRmYTgyNTYgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnNtdkV4cG9ydGVyL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3Mvc212RXhwb3J0ZXIvdWkvdXRpbHMvU01WR2VuZXJhdGlvbkRpYWxvZ1V0aWwuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy5zbXZFeHBvcnRlci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3NtdkV4cG9ydGVyL3VpL3V0aWxzL1NNVkdlbmVyYXRpb25EaWFsb2dVdGlsLmphdmEKQEAgLTEsOSArMSw5IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICogQ29weXJpZ2h0IChDKSAyMDE4IEZvbmRhemlvbmUgQnJ1bm8gS2Vzc2xlci4KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgKiAKICAqIENvbnRyaWJ1dG9yczoKICAqICAgICBMdWNhIENyaXN0b2ZvcmV0dGkgLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnRhYmJlZHByb3BlcnRpZXMvYWJvdXQuaHRtbCBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnRhYmJlZHByb3BlcnRpZXMvYWJvdXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNjRmNzgxCi0tLSAvZGV2L251bGwKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MudGFiYmVkcHJvcGVydGllcy9hYm91dC5odG1sCkBAIC0wLDAgKzEsMzYgQEAKKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFN0cmljdC8vRU4iCisgICAgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXN0cmljdC5kdGQiPgorPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xIiAvPgorPHRpdGxlPkFib3V0PC90aXRsZT4KKzwvaGVhZD4KKzxib2R5IGxhbmc9IkVOLVVTIj4KKwk8aDI+QWJvdXQgVGhpcyBDb250ZW50PC9oMj4KKworCTxwPk5vdmVtYmVyIDMwLCAyMDE3PC9wPgorCTxoMz5MaWNlbnNlPC9oMz4KKworCTxwPgorCQlUaGUgRWNsaXBzZSBGb3VuZGF0aW9uIG1ha2VzIGF2YWlsYWJsZSBhbGwgY29udGVudCBpbiB0aGlzIHBsdWctaW4KKwkJKCZxdW90O0NvbnRlbnQmcXVvdDspLiBVbmxlc3Mgb3RoZXJ3aXNlIGluZGljYXRlZCBiZWxvdywgdGhlIENvbnRlbnQKKwkJaXMgcHJvdmlkZWQgdG8geW91IHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRWNsaXBzZQorCQlQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDIuMCAoJnF1b3Q7RVBMJnF1b3Q7KS4gQSBjb3B5IG9mIHRoZSBFUEwgaXMKKwkJYXZhaWxhYmxlIGF0IDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMCI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wPC9hPi4KKwkJRm9yIHB1cnBvc2VzIG9mIHRoZSBFUEwsICZxdW90O1Byb2dyYW0mcXVvdDsgd2lsbCBtZWFuIHRoZSBDb250ZW50LgorCTwvcD4KKworCTxwPgorCQlJZiB5b3UgZGlkIG5vdCByZWNlaXZlIHRoaXMgQ29udGVudCBkaXJlY3RseSBmcm9tIHRoZSBFY2xpcHNlCisJCUZvdW5kYXRpb24sIHRoZSBDb250ZW50IGlzIGJlaW5nIHJlZGlzdHJpYnV0ZWQgYnkgYW5vdGhlciBwYXJ0eQorCQkoJnF1b3Q7UmVkaXN0cmlidXRvciZxdW90OykgYW5kIGRpZmZlcmVudCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBtYXkKKwkJYXBwbHkgdG8geW91ciB1c2Ugb2YgYW55IG9iamVjdCBjb2RlIGluIHRoZSBDb250ZW50LiBDaGVjayB0aGUKKwkJUmVkaXN0cmlidXRvcidzIGxpY2Vuc2UgdGhhdCB3YXMgcHJvdmlkZWQgd2l0aCB0aGUgQ29udGVudC4gSWYgbm8gc3VjaAorCQlsaWNlbnNlIGV4aXN0cywgY29udGFjdCB0aGUgUmVkaXN0cmlidXRvci4gVW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQKKwkJYmVsb3csIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRVBMIHN0aWxsIGFwcGx5IHRvIGFueSBzb3VyY2UKKwkJY29kZSBpbiB0aGUgQ29udGVudCBhbmQgc3VjaCBzb3VyY2UgY29kZSBtYXkgYmUgb2J0YWluZWQgYXQgPGEKKwkJCWhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnPC9hPi4KKwk8L3A+CisKKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy50ZXN0LnJ1bnRpbWUvYWJvdXQuaHRtbCBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnRlc3QucnVudGltZS9hYm91dC5odG1sCmluZGV4IGRkM2MwODkuLjE2NGY3ODEgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnRlc3QucnVudGltZS9hYm91dC5odG1sCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnRlc3QucnVudGltZS9hYm91dC5odG1sCkBAIC0yLDI3ICsyLDM1IEBACiAgICAgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXN0cmljdC5kdGQiPgogPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgogPGhlYWQ+Ci08bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xIi8+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xIiAvPgogPHRpdGxlPkFib3V0PC90aXRsZT4KIDwvaGVhZD4KIDxib2R5IGxhbmc9IkVOLVVTIj4KLTxoMj5BYm91dCBUaGlzIENvbnRlbnQ8L2gyPgotIAotPHA+Tm92ZW1iZXIgMTQsIDIwMDg8L3A+CQotPGgzPkxpY2Vuc2U8L2gzPgorCTxoMj5BYm91dCBUaGlzIENvbnRlbnQ8L2gyPgogCi08cD5UaGUgRWNsaXBzZSBGb3VuZGF0aW9uIG1ha2VzIGF2YWlsYWJsZSBhbGwgY29udGVudCBpbiB0aGlzIHBsdWctaW4gKCZxdW90O0NvbnRlbnQmcXVvdDspLiAgVW5sZXNzIG90aGVyd2lzZSAKLWluZGljYXRlZCBiZWxvdywgdGhlIENvbnRlbnQgaXMgcHJvdmlkZWQgdG8geW91IHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUKLUVjbGlwc2UgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAxLjAgKCZxdW90O0VQTCZxdW90OykuICBBIGNvcHkgb2YgdGhlIEVQTCBpcyBhdmFpbGFibGUgCi1hdCA8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWw8L2E+LgotRm9yIHB1cnBvc2VzIG9mIHRoZSBFUEwsICZxdW90O1Byb2dyYW0mcXVvdDsgd2lsbCBtZWFuIHRoZSBDb250ZW50LjwvcD4KKwk8cD5Ob3ZlbWJlciAzMCwgMjAxNzwvcD4KKwk8aDM+TGljZW5zZTwvaDM+CiAKLTxwPklmIHlvdSBkaWQgbm90IHJlY2VpdmUgdGhpcyBDb250ZW50IGRpcmVjdGx5IGZyb20gdGhlIEVjbGlwc2UgRm91bmRhdGlvbiwgdGhlIENvbnRlbnQgaXMgCi1iZWluZyByZWRpc3RyaWJ1dGVkIGJ5IGFub3RoZXIgcGFydHkgKCZxdW90O1JlZGlzdHJpYnV0b3ImcXVvdDspIGFuZCBkaWZmZXJlbnQgdGVybXMgYW5kIGNvbmRpdGlvbnMgbWF5Ci1hcHBseSB0byB5b3VyIHVzZSBvZiBhbnkgb2JqZWN0IGNvZGUgaW4gdGhlIENvbnRlbnQuICBDaGVjayB0aGUgUmVkaXN0cmlidXRvcidzIGxpY2Vuc2UgdGhhdCB3YXMgCi1wcm92aWRlZCB3aXRoIHRoZSBDb250ZW50LiAgSWYgbm8gc3VjaCBsaWNlbnNlIGV4aXN0cywgY29udGFjdCB0aGUgUmVkaXN0cmlidXRvci4gIFVubGVzcyBvdGhlcndpc2UKLWluZGljYXRlZCBiZWxvdywgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFUEwgc3RpbGwgYXBwbHkgdG8gYW55IHNvdXJjZSBjb2RlIGluIHRoZSBDb250ZW50Ci1hbmQgc3VjaCBzb3VyY2UgY29kZSBtYXkgYmUgb2J0YWluZWQgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZyI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZzwvYT4uPC9wPgorCTxwPgorCQlUaGUgRWNsaXBzZSBGb3VuZGF0aW9uIG1ha2VzIGF2YWlsYWJsZSBhbGwgY29udGVudCBpbiB0aGlzIHBsdWctaW4KKwkJKCZxdW90O0NvbnRlbnQmcXVvdDspLiBVbmxlc3Mgb3RoZXJ3aXNlIGluZGljYXRlZCBiZWxvdywgdGhlIENvbnRlbnQKKwkJaXMgcHJvdmlkZWQgdG8geW91IHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRWNsaXBzZQorCQlQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDIuMCAoJnF1b3Q7RVBMJnF1b3Q7KS4gQSBjb3B5IG9mIHRoZSBFUEwgaXMKKwkJYXZhaWxhYmxlIGF0IDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMCI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wPC9hPi4KKwkJRm9yIHB1cnBvc2VzIG9mIHRoZSBFUEwsICZxdW90O1Byb2dyYW0mcXVvdDsgd2lsbCBtZWFuIHRoZSBDb250ZW50LgorCTwvcD4KKworCTxwPgorCQlJZiB5b3UgZGlkIG5vdCByZWNlaXZlIHRoaXMgQ29udGVudCBkaXJlY3RseSBmcm9tIHRoZSBFY2xpcHNlCisJCUZvdW5kYXRpb24sIHRoZSBDb250ZW50IGlzIGJlaW5nIHJlZGlzdHJpYnV0ZWQgYnkgYW5vdGhlciBwYXJ0eQorCQkoJnF1b3Q7UmVkaXN0cmlidXRvciZxdW90OykgYW5kIGRpZmZlcmVudCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBtYXkKKwkJYXBwbHkgdG8geW91ciB1c2Ugb2YgYW55IG9iamVjdCBjb2RlIGluIHRoZSBDb250ZW50LiBDaGVjayB0aGUKKwkJUmVkaXN0cmlidXRvcidzIGxpY2Vuc2UgdGhhdCB3YXMgcHJvdmlkZWQgd2l0aCB0aGUgQ29udGVudC4gSWYgbm8gc3VjaAorCQlsaWNlbnNlIGV4aXN0cywgY29udGFjdCB0aGUgUmVkaXN0cmlidXRvci4gVW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQKKwkJYmVsb3csIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRVBMIHN0aWxsIGFwcGx5IHRvIGFueSBzb3VyY2UKKwkJY29kZSBpbiB0aGUgQ29udGVudCBhbmQgc3VjaCBzb3VyY2UgY29kZSBtYXkgYmUgb2J0YWluZWQgYXQgPGEKKwkJCWhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnPC9hPi4KKwk8L3A+CiAKIDwvYm9keT4KIDwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy50ZXN0LnJ1bnRpbWUvYnVpbGQucHJvcGVydGllcyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnRlc3QucnVudGltZS9idWlsZC5wcm9wZXJ0aWVzCmluZGV4IGQ3ZDE2ZjYuLmJmOTgwODIgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnRlc3QucnVudGltZS9idWlsZC5wcm9wZXJ0aWVzCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnRlc3QucnVudGltZS9idWlsZC5wcm9wZXJ0aWVzCkBAIC0xLDkgKzEsOSBAQAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBDb3B5cmlnaHQgKGMpIDIwMTUgSW50ZWNzLgogIyBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0jIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorIyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICMgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSMgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyMgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICMKICMgQ29udHJpYnV0b3JzOgogIyAgICAgCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy50ZXN0LnJ1bnRpbWUvcGx1Z2luLnByb3BlcnRpZXMgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy50ZXN0LnJ1bnRpbWUvcGx1Z2luLnByb3BlcnRpZXMKaW5kZXggZjZmNDZhMC4uOGM1NmY5NSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MudGVzdC5ydW50aW1lL3BsdWdpbi5wcm9wZXJ0aWVzCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnRlc3QucnVudGltZS9wbHVnaW4ucHJvcGVydGllcwpAQCAtMSw5ICsxLDkgQEAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgQ29weXJpZ2h0IChjKSAyMDE1IEludGVjcy4KICMgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotIyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyMgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAjIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0jIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisjIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAjCiAjIENvbnRyaWJ1dG9yczoKICMgICAgIApkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MudGVzdC5ydW50aW1lL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdGVzdC9ydW50aW1lL0FjdGl2YXRvci5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MudGVzdC5ydW50aW1lL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdGVzdC9ydW50aW1lL0FjdGl2YXRvci5qYXZhCmluZGV4IDA1MWY2YjEuLjkxM2Q5NTEgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnRlc3QucnVudGltZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3Rlc3QvcnVudGltZS9BY3RpdmF0b3IuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy50ZXN0LnJ1bnRpbWUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy90ZXN0L3J1bnRpbWUvQWN0aXZhdG9yLmphdmEKQEAgLTEsOSArMSw5IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICogQ29weXJpZ2h0IChjKSAyMDE1IEludGVjcy4KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgKgogICogQ29udHJpYnV0b3JzOgogICogICAgIE5pY2hvbGFzIFBhY2luaQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MudGVzdC5ydW50aW1lL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdGVzdC9ydW50aW1lL2hhbmRsZXJzL1Rlc3RzSGFuZGxlci5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MudGVzdC5ydW50aW1lL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdGVzdC9ydW50aW1lL2hhbmRsZXJzL1Rlc3RzSGFuZGxlci5qYXZhCmluZGV4IDIyZTU2ZTguLjk1ZDdiN2EgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnRlc3QucnVudGltZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3Rlc3QvcnVudGltZS9oYW5kbGVycy9UZXN0c0hhbmRsZXIuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy50ZXN0LnJ1bnRpbWUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy90ZXN0L3J1bnRpbWUvaGFuZGxlcnMvVGVzdHNIYW5kbGVyLmphdmEKQEAgLTEsOSArMSw5IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICogQ29weXJpZ2h0IChjKSAyMDE1IEludGVjcy4KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgKgogICogQ29udHJpYnV0b3JzOgogICogICAgIE5pY2hvbGFzIFBhY2luaQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MudGVzdC5ydW50aW1lL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdGVzdC9ydW50aW1lL3Rlc3RzL0FsbFRlc3RzLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy50ZXN0LnJ1bnRpbWUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy90ZXN0L3J1bnRpbWUvdGVzdHMvQWxsVGVzdHMuamF2YQppbmRleCA0NmNjZmNlLi5iODFlNDJjIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy50ZXN0LnJ1bnRpbWUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy90ZXN0L3J1bnRpbWUvdGVzdHMvQWxsVGVzdHMuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy50ZXN0LnJ1bnRpbWUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy90ZXN0L3J1bnRpbWUvdGVzdHMvQWxsVGVzdHMuamF2YQpAQCAtMSw5ICsxLDkgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKiBDb3B5cmlnaHQgKGMpIDIwMTUgSW50ZWNzLgogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICAqCiAgKiBDb250cmlidXRvcnM6CiAgKiAgICAgTmljaG9sYXMgUGFjaW5pCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy50ZXN0LnJ1bnRpbWUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy90ZXN0L3J1bnRpbWUvdGVzdHMvVGVzdEFwcGx5Q0hFU1NTdGVyZW90eXBlLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy50ZXN0LnJ1bnRpbWUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy90ZXN0L3J1bnRpbWUvdGVzdHMvVGVzdEFwcGx5Q0hFU1NTdGVyZW90eXBlLmphdmEKaW5kZXggNWRjOGE3Ni4uMzNmYzFhNiAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MudGVzdC5ydW50aW1lL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdGVzdC9ydW50aW1lL3Rlc3RzL1Rlc3RBcHBseUNIRVNTU3RlcmVvdHlwZS5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnRlc3QucnVudGltZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3Rlc3QvcnVudGltZS90ZXN0cy9UZXN0QXBwbHlDSEVTU1N0ZXJlb3R5cGUuamF2YQpAQCAtMSw5ICsxLDkgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKiBDb3B5cmlnaHQgKGMpIDIwMTUgSW50ZWNzLgogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICAqCiAgKiBDb250cmlidXRvcnM6CiAgKiAgICAgTmljaG9sYXMgUGFjaW5pCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy50ZXN0LnJ1bnRpbWUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy90ZXN0L3J1bnRpbWUvdGVzdHMvVGVzdEFwcGx5UmVjdXJzaXZlbHkuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnRlc3QucnVudGltZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3Rlc3QvcnVudGltZS90ZXN0cy9UZXN0QXBwbHlSZWN1cnNpdmVseS5qYXZhCmluZGV4IGNkMWRhOTUuLmY5ODIzNmQgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnRlc3QucnVudGltZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3Rlc3QvcnVudGltZS90ZXN0cy9UZXN0QXBwbHlSZWN1cnNpdmVseS5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnRlc3QucnVudGltZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3Rlc3QvcnVudGltZS90ZXN0cy9UZXN0QXBwbHlSZWN1cnNpdmVseS5qYXZhCkBAIC0xLDkgKzEsOSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqIENvcHlyaWdodCAoYykgMjAxNSBJbnRlY3MuCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICoKICAqIENvbnRyaWJ1dG9yczoKICAqICAgICBOaWNob2xhcyBQYWNpbmkKZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnRlc3QucnVudGltZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3Rlc3QvcnVudGltZS90ZXN0cy9UZXN0Q3JlYXRlVmlld3MuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnRlc3QucnVudGltZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3Rlc3QvcnVudGltZS90ZXN0cy9UZXN0Q3JlYXRlVmlld3MuamF2YQppbmRleCA3NjhlMTA0Li5hMDgwYzMwIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy50ZXN0LnJ1bnRpbWUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy90ZXN0L3J1bnRpbWUvdGVzdHMvVGVzdENyZWF0ZVZpZXdzLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MudGVzdC5ydW50aW1lL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdGVzdC9ydW50aW1lL3Rlc3RzL1Rlc3RDcmVhdGVWaWV3cy5qYXZhCkBAIC0xLDkgKzEsOSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqIENvcHlyaWdodCAoYykgMjAxNSBJbnRlY3MuCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICoKICAqIENvbnRyaWJ1dG9yczoKICAqICAgICBOaWNob2xhcyBQYWNpbmkKZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnRlc3QucnVudGltZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3Rlc3QvcnVudGltZS91dGlsL1Rlc3RVdGlsLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy50ZXN0LnJ1bnRpbWUvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy90ZXN0L3J1bnRpbWUvdXRpbC9UZXN0VXRpbC5qYXZhCmluZGV4IDM5YWZhZmUuLjJhYjlmZDIgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnRlc3QucnVudGltZS9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3Rlc3QvcnVudGltZS91dGlsL1Rlc3RVdGlsLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MudGVzdC5ydW50aW1lL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdGVzdC9ydW50aW1lL3V0aWwvVGVzdFV0aWwuamF2YQpAQCAtMSw5ICsxLDkgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKiBDb3B5cmlnaHQgKGMpIDIwMTUgSW50ZWNzLgogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICAqCiAgKiBDb250cmlidXRvcnM6CiAgKiAgICAgTmljaG9sYXMgUGFjaW5pCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy50ZXN0LnJ1bnRpbWUvdGFyZ2V0L3dvcmsvcGx1Z2lucy9vcmcuZWNsaXBzZS5qZHQuZGVidWdfMy4xMC4xLnYyMDE2MDgxMS0wNDQxL2Fib3V0Lmh0bWwgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy50ZXN0LnJ1bnRpbWUvdGFyZ2V0L3dvcmsvcGx1Z2lucy9vcmcuZWNsaXBzZS5qZHQuZGVidWdfMy4xMC4xLnYyMDE2MDgxMS0wNDQxL2Fib3V0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDYwMjMzMAotLS0gL2Rldi9udWxsCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnRlc3QucnVudGltZS90YXJnZXQvd29yay9wbHVnaW5zL29yZy5lY2xpcHNlLmpkdC5kZWJ1Z18zLjEwLjEudjIwMTYwODExLTA0NDEvYWJvdXQuaHRtbApAQCAtMCwwICsxLDI4IEBACis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIgorICAgICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS1zdHJpY3QuZHRkIj4KKzxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMSIvPgorPHRpdGxlPkFib3V0PC90aXRsZT4KKzwvaGVhZD4KKzxib2R5IGxhbmc9IkVOLVVTIj4KKzxoMj5BYm91dCBUaGlzIENvbnRlbnQ8L2gyPgorIAorPHA+SnVuZSAyLCAyMDA2PC9wPgkKKzxoMz5MaWNlbnNlPC9oMz4KKworPHA+VGhlIEVjbGlwc2UgRm91bmRhdGlvbiBtYWtlcyBhdmFpbGFibGUgYWxsIGNvbnRlbnQgaW4gdGhpcyBwbHVnLWluICgmcXVvdDtDb250ZW50JnF1b3Q7KS4gIFVubGVzcyBvdGhlcndpc2UgCitpbmRpY2F0ZWQgYmVsb3csIHRoZSBDb250ZW50IGlzIHByb3ZpZGVkIHRvIHlvdSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlCitFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMS4wICgmcXVvdDtFUEwmcXVvdDspLiAgQSBjb3B5IG9mIHRoZSBFUEwgaXMgYXZhaWxhYmxlIAorYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwiPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sPC9hPi4KK0ZvciBwdXJwb3NlcyBvZiB0aGUgRVBMLCAmcXVvdDtQcm9ncmFtJnF1b3Q7IHdpbGwgbWVhbiB0aGUgQ29udGVudC48L3A+CisKKzxwPklmIHlvdSBkaWQgbm90IHJlY2VpdmUgdGhpcyBDb250ZW50IGRpcmVjdGx5IGZyb20gdGhlIEVjbGlwc2UgRm91bmRhdGlvbiwgdGhlIENvbnRlbnQgaXMgCitiZWluZyByZWRpc3RyaWJ1dGVkIGJ5IGFub3RoZXIgcGFydHkgKCZxdW90O1JlZGlzdHJpYnV0b3ImcXVvdDspIGFuZCBkaWZmZXJlbnQgdGVybXMgYW5kIGNvbmRpdGlvbnMgbWF5CithcHBseSB0byB5b3VyIHVzZSBvZiBhbnkgb2JqZWN0IGNvZGUgaW4gdGhlIENvbnRlbnQuICBDaGVjayB0aGUgUmVkaXN0cmlidXRvcidzIGxpY2Vuc2UgdGhhdCB3YXMgCitwcm92aWRlZCB3aXRoIHRoZSBDb250ZW50LiAgSWYgbm8gc3VjaCBsaWNlbnNlIGV4aXN0cywgY29udGFjdCB0aGUgUmVkaXN0cmlidXRvci4gIFVubGVzcyBvdGhlcndpc2UKK2luZGljYXRlZCBiZWxvdywgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFUEwgc3RpbGwgYXBwbHkgdG8gYW55IHNvdXJjZSBjb2RlIGluIHRoZSBDb250ZW50CithbmQgc3VjaCBzb3VyY2UgY29kZSBtYXkgYmUgb2J0YWluZWQgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZyI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZzwvYT4uPC9wPgorCis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MudGVzdC5ydW50aW1lL3RhcmdldC93b3JrL3BsdWdpbnMvb3JnLmVjbGlwc2UucGRlLmJ1aWxkXzMuOS4yMDAudjIwMTYwMjA0LTA2NDIvYWJvdXQuaHRtbCBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnRlc3QucnVudGltZS90YXJnZXQvd29yay9wbHVnaW5zL29yZy5lY2xpcHNlLnBkZS5idWlsZF8zLjkuMjAwLnYyMDE2MDIwNC0wNjQyL2Fib3V0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWFjM2RhNwotLS0gL2Rldi9udWxsCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnRlc3QucnVudGltZS90YXJnZXQvd29yay9wbHVnaW5zL29yZy5lY2xpcHNlLnBkZS5idWlsZF8zLjkuMjAwLnYyMDE2MDIwNC0wNjQyL2Fib3V0Lmh0bWwKQEAgLTAsMCArMSw2NiBAQAorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgU3RyaWN0Ly9FTiIKKyAgICAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+Cis8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiLz4KKzx0aXRsZT5BYm91dDwvdGl0bGU+Cis8L2hlYWQ+Cis8Ym9keSBsYW5nPSJFTi1VUyI+Cis8aDI+QWJvdXQgVGhpcyBDb250ZW50PC9oMj4KKyAKKzxwPkZlYnJ1YXJ5IDA4LCAyMDA3PC9wPgkKKzxoMz5MaWNlbnNlPC9oMz4KKworPHA+VGhlIEVjbGlwc2UgRm91bmRhdGlvbiBtYWtlcyBhdmFpbGFibGUgYWxsIGNvbnRlbnQgaW4gdGhpcyBwbHVnLWluICgmcXVvdDtDb250ZW50JnF1b3Q7KS4gIFVubGVzcyBvdGhlcndpc2UgCitpbmRpY2F0ZWQgYmVsb3csIHRoZSBDb250ZW50IGlzIHByb3ZpZGVkIHRvIHlvdSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlCitFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMS4wICgmcXVvdDtFUEwmcXVvdDspLiAgQSBjb3B5IG9mIHRoZSBFUEwgaXMgYXZhaWxhYmxlIAorYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwiPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sPC9hPi4KK0ZvciBwdXJwb3NlcyBvZiB0aGUgRVBMLCAmcXVvdDtQcm9ncmFtJnF1b3Q7IHdpbGwgbWVhbiB0aGUgQ29udGVudC48L3A+CisKKzxwPklmIHlvdSBkaWQgbm90IHJlY2VpdmUgdGhpcyBDb250ZW50IGRpcmVjdGx5IGZyb20gdGhlIEVjbGlwc2UgRm91bmRhdGlvbiwgdGhlIENvbnRlbnQgaXMgCitiZWluZyByZWRpc3RyaWJ1dGVkIGJ5IGFub3RoZXIgcGFydHkgKCZxdW90O1JlZGlzdHJpYnV0b3ImcXVvdDspIGFuZCBkaWZmZXJlbnQgdGVybXMgYW5kIGNvbmRpdGlvbnMgbWF5CithcHBseSB0byB5b3VyIHVzZSBvZiBhbnkgb2JqZWN0IGNvZGUgaW4gdGhlIENvbnRlbnQuICBDaGVjayB0aGUgUmVkaXN0cmlidXRvcidzIGxpY2Vuc2UgdGhhdCB3YXMgCitwcm92aWRlZCB3aXRoIHRoZSBDb250ZW50LiAgSWYgbm8gc3VjaCBsaWNlbnNlIGV4aXN0cywgY29udGFjdCB0aGUgUmVkaXN0cmlidXRvci4gIFVubGVzcyBvdGhlcndpc2UKK2luZGljYXRlZCBiZWxvdywgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFUEwgc3RpbGwgYXBwbHkgdG8gYW55IHNvdXJjZSBjb2RlIGluIHRoZSBDb250ZW50CithbmQgc3VjaCBzb3VyY2UgY29kZSBtYXkgYmUgb2J0YWluZWQgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZyI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZzwvYT4uPC9wPgorCis8aDM+VGhpcmQgUGFydHkgQ29udGVudDwvaDM+CisKKzxwPlRoZSBDb250ZW50IGluY2x1ZGVzIGl0ZW1zIHRoYXQgaGF2ZSBiZWVuIHNvdXJjZWQgZnJvbSB0aGlyZCBwYXJ0aWVzIGFzIHNldCBvdXQgYmVsb3cuIElmIHlvdSAKK2RpZCBub3QgcmVjZWl2ZSB0aGlzIENvbnRlbnQgZGlyZWN0bHkgZnJvbSB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uLCB0aGUgZm9sbG93aW5nIGlzIHByb3ZpZGVkIAorZm9yIGluZm9ybWF0aW9uYWwgcHVycG9zZXMgb25seSwgYW5kIHlvdSBzaG91bGQgbG9vayB0byB0aGUgUmVkaXN0cmlidXRvciZyc3F1bztzIGxpY2Vuc2UgZm9yIAordGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdXNlLjwvcD4KKworPGg0Pk9TR2kgTWF0ZXJpYWxzPC9oND4KKworPHA+VGhlIGZvbGxvd2luZyBmaWxlOjwvcD4KKworPHVsPgorCTxsaT5vcmcvb3NnaS9mcmFtZXdvcmsvVmVyc2lvbjwvbGk+Cis8L3VsPgorCis8cD5zaGFsbCBiZSBkZWZpbmVkIGFzIGEgc3Vic2V0IG9mIHRoZSAmcXVvdDtPU0dpIE1hdGVyaWFscy4mcXVvdDsgIFRoZSBPU0dpIE1hdGVyaWFscyBhcmU6PC9wPgorCis8YmxvY2txdW90ZT4KK0NvcHlyaWdodCAoYykgMjAwMCwgMjAwNgorPGJyIC8+PGJyIC8+CitPU0dpIEFsbGlhbmNlCitCaXNob3AgUmFuY2ggNjxici8+CisyNDAwIENhbWlubyBSYW1vbiwgU3VpdGUgMzc1PGJyLz4KK1NhbiBSYW1vbiwgQ0EgOTQ1ODMgVVNBCis8YnIgLz48YnIgLz4KK0FsbCBSaWdodHMgUmVzZXJ2ZWQuCis8L2Jsb2NrcXVvdGU+CisKKzxwPlRoZSBPU0dpIE1hdGVyaWFscyBhcmUgcHJvdmlkZWQgdG8geW91IHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wLiAgQSBjb3B5IG9mIHRoZSBsaWNlbnNlIGlzIGNvbnRhaW5lZAoraW4gdGhlIGZpbGUgPGEgaHJlZj0iYWJvdXRfZmlsZXMvTElDRU5TRS0yLjAudHh0IiB0YXJnZXQ9Il9ibGFuayI+TElDRU5TRS0yLjAudHh0PC9hPiBhbmQgaXMgYWxzbyBhdmFpbGFibGUgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wLmh0bWwiIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAuaHRtbDwvYT4uPC9wPgorCis8cD5JbXBsZW1lbnRhdGlvbiBvZiBjZXJ0YWluIGVsZW1lbnRzIG9mIHRoZSBPU0dpIE1hdGVyaWFscyBtYXkgYmUgc3ViamVjdCB0byB0aGlyZCBwYXJ0eSBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uLCBwYXRlbnQgcmlnaHRzIChzdWNoIGEgdGhpcmQgcGFydHkgbWF5CitvciBtYXkgbm90IGJlIGEgbWVtYmVyIG9mIHRoZSBPU0dpIEFsbGlhbmNlKS4gIFRoZSBPU0dpIEFsbGlhbmNlIGFuZCBpdHMgbWVtYmVycyBhcmUgbm90IHJlc3BvbnNpYmxlIGFuZCBzaGFsbCBub3QgYmUgaGVsZCByZXNwb25zaWJsZSBpbiBhbnkgbWFubmVyIGZvciBpZGVudGlmeWluZyBvciBmYWlsaW5nIHRvIGlkZW50aWZ5IGFueSBvciBhbGwgc3VjaCB0aGlyZCBwYXJ0eQoraW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cy48L3A+CisKKzxzbWFsbD5PU0dpJnRyYWRlOyBpcyBhIHRyYWRlbWFyaywgcmVnaXN0ZXJlZCB0cmFkZW1hcmssIG9yIHNlcnZpY2UgbWFyayBvZiBUaGUgT1NHaSBBbGxpYW5jZSBpbiB0aGUgVVMgYW5kIG90aGVyIGNvdW50cmllcy4gSmF2YSBpcyBhIHRyYWRlbWFyaywKK3JlZ2lzdGVyZWQgdHJhZGVtYXJrLCBvciBzZXJ2aWNlIG1hcmsgb2YgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiBpbiB0aGUgVVMgYW5kIG90aGVyIGNvdW50cmllcy4gQWxsIG90aGVyIHRyYWRlbWFya3MsIHJlZ2lzdGVyZWQgdHJhZGVtYXJrcywgb3IKK3NlcnZpY2UgbWFya3MgdXNlZCBpbiB0aGUgQ29udGVudCBhcmUgdGhlIHByb3BlcnR5IG9mIHRoZWlyIHJlc3BlY3RpdmUgb3duZXJzIGFuZCBhcmUgaGVyZWJ5IHJlY29nbml6ZWQuPC9zbWFsbD4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy50cmFkZW9mZkFuYWx5c2lzL2Fib3V0Lmh0bWwgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy50cmFkZW9mZkFuYWx5c2lzL2Fib3V0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTY0Zjc4MQotLS0gL2Rldi9udWxsCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnRyYWRlb2ZmQW5hbHlzaXMvYWJvdXQuaHRtbApAQCAtMCwwICsxLDM2IEBACis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIgorICAgICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS1zdHJpY3QuZHRkIj4KKzxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMSIgLz4KKzx0aXRsZT5BYm91dDwvdGl0bGU+Cis8L2hlYWQ+Cis8Ym9keSBsYW5nPSJFTi1VUyI+CisJPGgyPkFib3V0IFRoaXMgQ29udGVudDwvaDI+CisKKwk8cD5Ob3ZlbWJlciAzMCwgMjAxNzwvcD4KKwk8aDM+TGljZW5zZTwvaDM+CisKKwk8cD4KKwkJVGhlIEVjbGlwc2UgRm91bmRhdGlvbiBtYWtlcyBhdmFpbGFibGUgYWxsIGNvbnRlbnQgaW4gdGhpcyBwbHVnLWluCisJCSgmcXVvdDtDb250ZW50JnF1b3Q7KS4gVW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQgYmVsb3csIHRoZSBDb250ZW50CisJCWlzIHByb3ZpZGVkIHRvIHlvdSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVjbGlwc2UKKwkJUHVibGljIExpY2Vuc2UgVmVyc2lvbiAyLjAgKCZxdW90O0VQTCZxdW90OykuIEEgY29weSBvZiB0aGUgRVBMIGlzCisJCWF2YWlsYWJsZSBhdCA8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAiPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMDwvYT4uCisJCUZvciBwdXJwb3NlcyBvZiB0aGUgRVBMLCAmcXVvdDtQcm9ncmFtJnF1b3Q7IHdpbGwgbWVhbiB0aGUgQ29udGVudC4KKwk8L3A+CisKKwk8cD4KKwkJSWYgeW91IGRpZCBub3QgcmVjZWl2ZSB0aGlzIENvbnRlbnQgZGlyZWN0bHkgZnJvbSB0aGUgRWNsaXBzZQorCQlGb3VuZGF0aW9uLCB0aGUgQ29udGVudCBpcyBiZWluZyByZWRpc3RyaWJ1dGVkIGJ5IGFub3RoZXIgcGFydHkKKwkJKCZxdW90O1JlZGlzdHJpYnV0b3ImcXVvdDspIGFuZCBkaWZmZXJlbnQgdGVybXMgYW5kIGNvbmRpdGlvbnMgbWF5CisJCWFwcGx5IHRvIHlvdXIgdXNlIG9mIGFueSBvYmplY3QgY29kZSBpbiB0aGUgQ29udGVudC4gQ2hlY2sgdGhlCisJCVJlZGlzdHJpYnV0b3IncyBsaWNlbnNlIHRoYXQgd2FzIHByb3ZpZGVkIHdpdGggdGhlIENvbnRlbnQuIElmIG5vIHN1Y2gKKwkJbGljZW5zZSBleGlzdHMsIGNvbnRhY3QgdGhlIFJlZGlzdHJpYnV0b3IuIFVubGVzcyBvdGhlcndpc2UgaW5kaWNhdGVkCisJCWJlbG93LCB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVQTCBzdGlsbCBhcHBseSB0byBhbnkgc291cmNlCisJCWNvZGUgaW4gdGhlIENvbnRlbnQgYW5kIHN1Y2ggc291cmNlIGNvZGUgbWF5IGJlIG9idGFpbmVkIGF0IDxhCisJCQlocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnLyI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZzwvYT4uCisJPC9wPgorCis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MudHJhZGVvZmZBbmFseXNpcy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3RyYWRlb2ZmQW5hbHlzaXMvY29tbWFuZHMvVHJhZGVvZmZDb21tYW5kLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy50cmFkZW9mZkFuYWx5c2lzL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdHJhZGVvZmZBbmFseXNpcy9jb21tYW5kcy9UcmFkZW9mZkNvbW1hbmQuamF2YQppbmRleCAwYjkyYTIzLi4zZmY5NzcwIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy50cmFkZW9mZkFuYWx5c2lzL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdHJhZGVvZmZBbmFseXNpcy9jb21tYW5kcy9UcmFkZW9mZkNvbW1hbmQuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy50cmFkZW9mZkFuYWx5c2lzL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdHJhZGVvZmZBbmFseXNpcy9jb21tYW5kcy9UcmFkZW9mZkNvbW1hbmQuamF2YQpAQCAtMSw5ICsxLDkgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTggRm9uZGF6aW9uZSBCcnVubyBLZXNzbGVyLgogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICAqIAogICogQ29udHJpYnV0b3JzOgogICogICAgIEx1Y2EgQ3Jpc3RvZm9yZXR0aSAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MudHJhZGVvZmZBbmFseXNpcy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3RyYWRlb2ZmQW5hbHlzaXMvZGlhbG9ncy9Db25maWd1cmF0aW9uU2VsZWN0aW9uRGlhbG9nLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy50cmFkZW9mZkFuYWx5c2lzL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdHJhZGVvZmZBbmFseXNpcy9kaWFsb2dzL0NvbmZpZ3VyYXRpb25TZWxlY3Rpb25EaWFsb2cuamF2YQppbmRleCBjMWVjZjI0Li4zZTVlMDY1IDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy50cmFkZW9mZkFuYWx5c2lzL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdHJhZGVvZmZBbmFseXNpcy9kaWFsb2dzL0NvbmZpZ3VyYXRpb25TZWxlY3Rpb25EaWFsb2cuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy50cmFkZW9mZkFuYWx5c2lzL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdHJhZGVvZmZBbmFseXNpcy9kaWFsb2dzL0NvbmZpZ3VyYXRpb25TZWxlY3Rpb25EaWFsb2cuamF2YQpAQCAtMSw5ICsxLDkgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTggRm9uZGF6aW9uZSBCcnVubyBLZXNzbGVyLgogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICAqIAogICogQ29udHJpYnV0b3JzOgogICogICAgIEx1Y2EgQ3Jpc3RvZm9yZXR0aSAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MudHJhZGVvZmZBbmFseXNpcy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3RyYWRlb2ZmQW5hbHlzaXMvdmlld3MvVHJhZGVvZmZWaWV3LmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy50cmFkZW9mZkFuYWx5c2lzL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdHJhZGVvZmZBbmFseXNpcy92aWV3cy9UcmFkZW9mZlZpZXcuamF2YQppbmRleCBlZDhkNGE5Li45NTNlNDkwIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy50cmFkZW9mZkFuYWx5c2lzL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdHJhZGVvZmZBbmFseXNpcy92aWV3cy9UcmFkZW9mZlZpZXcuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy50cmFkZW9mZkFuYWx5c2lzL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdHJhZGVvZmZBbmFseXNpcy92aWV3cy9UcmFkZW9mZlZpZXcuamF2YQpAQCAtMSw5ICsxLDkgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTggRm9uZGF6aW9uZSBCcnVubyBLZXNzbGVyLgogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICAqIAogICogQ29udHJpYnV0b3JzOgogICogICAgIEx1Y2EgQ3Jpc3RvZm9yZXR0aSAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MudmFsaWRhdG9yL2Fib3V0Lmh0bWwgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy52YWxpZGF0b3IvYWJvdXQuaHRtbAppbmRleCBkZDNjMDg5Li4xNjRmNzgxIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy52YWxpZGF0b3IvYWJvdXQuaHRtbAorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy52YWxpZGF0b3IvYWJvdXQuaHRtbApAQCAtMiwyNyArMiwzNSBAQAogICAgICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS1zdHJpY3QuZHRkIj4KIDxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KIDxoZWFkPgotPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMSIvPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMSIgLz4KIDx0aXRsZT5BYm91dDwvdGl0bGU+CiA8L2hlYWQ+CiA8Ym9keSBsYW5nPSJFTi1VUyI+Ci08aDI+QWJvdXQgVGhpcyBDb250ZW50PC9oMj4KLSAKLTxwPk5vdmVtYmVyIDE0LCAyMDA4PC9wPgkKLTxoMz5MaWNlbnNlPC9oMz4KKwk8aDI+QWJvdXQgVGhpcyBDb250ZW50PC9oMj4KIAotPHA+VGhlIEVjbGlwc2UgRm91bmRhdGlvbiBtYWtlcyBhdmFpbGFibGUgYWxsIGNvbnRlbnQgaW4gdGhpcyBwbHVnLWluICgmcXVvdDtDb250ZW50JnF1b3Q7KS4gIFVubGVzcyBvdGhlcndpc2UgCi1pbmRpY2F0ZWQgYmVsb3csIHRoZSBDb250ZW50IGlzIHByb3ZpZGVkIHRvIHlvdSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlCi1FY2xpcHNlIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMS4wICgmcXVvdDtFUEwmcXVvdDspLiAgQSBjb3B5IG9mIHRoZSBFUEwgaXMgYXZhaWxhYmxlIAotYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwiPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sPC9hPi4KLUZvciBwdXJwb3NlcyBvZiB0aGUgRVBMLCAmcXVvdDtQcm9ncmFtJnF1b3Q7IHdpbGwgbWVhbiB0aGUgQ29udGVudC48L3A+CisJPHA+Tm92ZW1iZXIgMzAsIDIwMTc8L3A+CisJPGgzPkxpY2Vuc2U8L2gzPgogCi08cD5JZiB5b3UgZGlkIG5vdCByZWNlaXZlIHRoaXMgQ29udGVudCBkaXJlY3RseSBmcm9tIHRoZSBFY2xpcHNlIEZvdW5kYXRpb24sIHRoZSBDb250ZW50IGlzIAotYmVpbmcgcmVkaXN0cmlidXRlZCBieSBhbm90aGVyIHBhcnR5ICgmcXVvdDtSZWRpc3RyaWJ1dG9yJnF1b3Q7KSBhbmQgZGlmZmVyZW50IHRlcm1zIGFuZCBjb25kaXRpb25zIG1heQotYXBwbHkgdG8geW91ciB1c2Ugb2YgYW55IG9iamVjdCBjb2RlIGluIHRoZSBDb250ZW50LiAgQ2hlY2sgdGhlIFJlZGlzdHJpYnV0b3IncyBsaWNlbnNlIHRoYXQgd2FzIAotcHJvdmlkZWQgd2l0aCB0aGUgQ29udGVudC4gIElmIG5vIHN1Y2ggbGljZW5zZSBleGlzdHMsIGNvbnRhY3QgdGhlIFJlZGlzdHJpYnV0b3IuICBVbmxlc3Mgb3RoZXJ3aXNlCi1pbmRpY2F0ZWQgYmVsb3csIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRVBMIHN0aWxsIGFwcGx5IHRvIGFueSBzb3VyY2UgY29kZSBpbiB0aGUgQ29udGVudAotYW5kIHN1Y2ggc291cmNlIGNvZGUgbWF5IGJlIG9idGFpbmVkIGF0IDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmciPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmc8L2E+LjwvcD4KKwk8cD4KKwkJVGhlIEVjbGlwc2UgRm91bmRhdGlvbiBtYWtlcyBhdmFpbGFibGUgYWxsIGNvbnRlbnQgaW4gdGhpcyBwbHVnLWluCisJCSgmcXVvdDtDb250ZW50JnF1b3Q7KS4gVW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQgYmVsb3csIHRoZSBDb250ZW50CisJCWlzIHByb3ZpZGVkIHRvIHlvdSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVjbGlwc2UKKwkJUHVibGljIExpY2Vuc2UgVmVyc2lvbiAyLjAgKCZxdW90O0VQTCZxdW90OykuIEEgY29weSBvZiB0aGUgRVBMIGlzCisJCWF2YWlsYWJsZSBhdCA8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAiPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMDwvYT4uCisJCUZvciBwdXJwb3NlcyBvZiB0aGUgRVBMLCAmcXVvdDtQcm9ncmFtJnF1b3Q7IHdpbGwgbWVhbiB0aGUgQ29udGVudC4KKwk8L3A+CisKKwk8cD4KKwkJSWYgeW91IGRpZCBub3QgcmVjZWl2ZSB0aGlzIENvbnRlbnQgZGlyZWN0bHkgZnJvbSB0aGUgRWNsaXBzZQorCQlGb3VuZGF0aW9uLCB0aGUgQ29udGVudCBpcyBiZWluZyByZWRpc3RyaWJ1dGVkIGJ5IGFub3RoZXIgcGFydHkKKwkJKCZxdW90O1JlZGlzdHJpYnV0b3ImcXVvdDspIGFuZCBkaWZmZXJlbnQgdGVybXMgYW5kIGNvbmRpdGlvbnMgbWF5CisJCWFwcGx5IHRvIHlvdXIgdXNlIG9mIGFueSBvYmplY3QgY29kZSBpbiB0aGUgQ29udGVudC4gQ2hlY2sgdGhlCisJCVJlZGlzdHJpYnV0b3IncyBsaWNlbnNlIHRoYXQgd2FzIHByb3ZpZGVkIHdpdGggdGhlIENvbnRlbnQuIElmIG5vIHN1Y2gKKwkJbGljZW5zZSBleGlzdHMsIGNvbnRhY3QgdGhlIFJlZGlzdHJpYnV0b3IuIFVubGVzcyBvdGhlcndpc2UgaW5kaWNhdGVkCisJCWJlbG93LCB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVQTCBzdGlsbCBhcHBseSB0byBhbnkgc291cmNlCisJCWNvZGUgaW4gdGhlIENvbnRlbnQgYW5kIHN1Y2ggc291cmNlIGNvZGUgbWF5IGJlIG9idGFpbmVkIGF0IDxhCisJCQlocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnLyI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZzwvYT4uCisJPC9wPgogCiA8L2JvZHk+CiA8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MudmFsaWRhdG9yL2xpY2Vuc2UvQ29weXJpZ2h0LnR4dCBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnZhbGlkYXRvci9saWNlbnNlL0NvcHlyaWdodC50eHQKaW5kZXggNDg4MDRkOC4uMWYyNDRkYiAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MudmFsaWRhdG9yL2xpY2Vuc2UvQ29weXJpZ2h0LnR4dAorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy52YWxpZGF0b3IvbGljZW5zZS9Db3B5cmlnaHQudHh0CkBAIC05LDUgKzksNSBAQAogLS0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAgLS0KIC0tIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgIC0tCiAtLSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0ICAgICAtLQotLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MudmFsaWRhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdmFsaWRhdG9yL0FjdGl2YXRvci5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MudmFsaWRhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdmFsaWRhdG9yL0FjdGl2YXRvci5qYXZhCmluZGV4IDkyNTllNGEuLjFjZGUwOWEgMTAwNzU1Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnZhbGlkYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3ZhbGlkYXRvci9BY3RpdmF0b3IuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy52YWxpZGF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy92YWxpZGF0b3IvQWN0aXZhdG9yLmphdmEKQEAgLTEwLDcgKzEwLDcgQEAKIC0tIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgIC0tCiAtLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlICAtLQogLS0gdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCAgICAgLS0KLS0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICovCiBwYWNrYWdlIG9yZy5wb2xhcnN5cy5jaGVzcy52YWxpZGF0b3I7CmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy52YWxpZGF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy92YWxpZGF0b3IvYXV0b21hdGVkQWN0aW9ucy9JQXV0b21hdGVkQWN0aW9uLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy52YWxpZGF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy92YWxpZGF0b3IvYXV0b21hdGVkQWN0aW9ucy9JQXV0b21hdGVkQWN0aW9uLmphdmEKaW5kZXggMGFmNDEwZC4uMDM1Y2JkMiAxMDA3NTUKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MudmFsaWRhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdmFsaWRhdG9yL2F1dG9tYXRlZEFjdGlvbnMvSUF1dG9tYXRlZEFjdGlvbi5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnZhbGlkYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3ZhbGlkYXRvci9hdXRvbWF0ZWRBY3Rpb25zL0lBdXRvbWF0ZWRBY3Rpb24uamF2YQpAQCAtMTAsNyArMTAsNyBAQAogLS0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAgLS0KIC0tIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgIC0tCiAtLSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0ICAgICAtLQotLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogKi8KIApkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MudmFsaWRhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdmFsaWRhdG9yL2NvbW1hbmQvQ0hFU1NDb3JlVmFsaWRhdGlvbkhhbmRsZXIuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnZhbGlkYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3ZhbGlkYXRvci9jb21tYW5kL0NIRVNTQ29yZVZhbGlkYXRpb25IYW5kbGVyLmphdmEKaW5kZXggODk0MjgyYS4uN2YxMTUzOSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MudmFsaWRhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdmFsaWRhdG9yL2NvbW1hbmQvQ0hFU1NDb3JlVmFsaWRhdGlvbkhhbmRsZXIuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy52YWxpZGF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy92YWxpZGF0b3IvY29tbWFuZC9DSEVTU0NvcmVWYWxpZGF0aW9uSGFuZGxlci5qYXZhCkBAIC0xLDkgKzEsOSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqIENvcHlyaWdodCAoYykgMjAxNSBJbnRlY3MuCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogICoKICAqIENvbnRyaWJ1dG9yczoKICAqICAgIFN0ZWZhbm8gUHVyaSwgc3RlZmFuby5wdXJpQGludGVjcy5pdApkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MudmFsaWRhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdmFsaWRhdG9yL2NvbW1hbmQvQ2hlc3NHZW5lcmljVmFsaWRhdGVDb21tYW5kLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy52YWxpZGF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy92YWxpZGF0b3IvY29tbWFuZC9DaGVzc0dlbmVyaWNWYWxpZGF0ZUNvbW1hbmQuamF2YQppbmRleCA4NmNlNjFjLi5jNTdkZWI0IDEwMDc1NQotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy52YWxpZGF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy92YWxpZGF0b3IvY29tbWFuZC9DaGVzc0dlbmVyaWNWYWxpZGF0ZUNvbW1hbmQuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy52YWxpZGF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy92YWxpZGF0b3IvY29tbWFuZC9DaGVzc0dlbmVyaWNWYWxpZGF0ZUNvbW1hbmQuamF2YQpAQCAtMSw5ICsxLDkgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKiBDb3B5cmlnaHQgKGMpIDIwMTUgSW50ZWNzLgogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICAqCiAgKiBDb250cmlidXRvcnM6CiAgKiAgICBTdGVmYW5vIFB1cmksIHN0ZWZhbm8ucHVyaUBpbnRlY3MuaXQKZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnZhbGlkYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3ZhbGlkYXRvci9jb21tYW5kL3V0aWwvQ2hlc3NHZW5lcmljRGlhZ25vc3RpY2lhbi5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MudmFsaWRhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdmFsaWRhdG9yL2NvbW1hbmQvdXRpbC9DaGVzc0dlbmVyaWNEaWFnbm9zdGljaWFuLmphdmEKaW5kZXggNjJiZDkyZC4uZTkzN2RjMSAxMDA3NTUKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MudmFsaWRhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdmFsaWRhdG9yL2NvbW1hbmQvdXRpbC9DaGVzc0dlbmVyaWNEaWFnbm9zdGljaWFuLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MudmFsaWRhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdmFsaWRhdG9yL2NvbW1hbmQvdXRpbC9DaGVzc0dlbmVyaWNEaWFnbm9zdGljaWFuLmphdmEKQEAgLTEsNTEgKzEsNTggQEAKLXBhY2thZ2Ugb3JnLnBvbGFyc3lzLmNoZXNzLnZhbGlkYXRvci5jb21tYW5kLnV0aWw7Ci0KLWltcG9ydCBqYXZhLnV0aWwuTWFwOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLkRpYWdub3N0aWNDaGFpbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRUNsYXNzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS51dGlsLkRpYWdub3N0aWNpYW47Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLnV0aWwuRU9iamVjdFZhbGlkYXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYudmFsaWRhdGlvbi5zZXJ2aWNlLklDb25zdHJhaW50RmlsdGVyOwotCi0KLS8vIFRPRE86IEF1dG8tZ2VuZXJhdGVkIEphdmFkb2MKLS8qKgotICogVGhlIENsYXNzIENoZXNzR2VuZXJpY0RpYWdub3N0aWNpYW4uCi0gKiAKLSAqIEBzZWUgcGFja2FnZSBvcmcuZWNsaXBzZS5lbWYuZWNvcmUudXRpbC5EaWFnbm9zdGljaWFuCi0gKi8KLXB1YmxpYyBjbGFzcyBDaGVzc0dlbmVyaWNEaWFnbm9zdGljaWFuIGV4dGVuZHMgRGlhZ25vc3RpY2lhbiB7Ci0KLQkvKiogVGhlIGVDaGVzc1ZhbGlkYXRvckFkYXB0ZXIuICovCi0JcHJpdmF0ZSBDaGVzc1ZhbGlkYXRvckFkYXB0ZXIgZUNoZXNzVmFsaWRhdG9yQWRhcHRlcjsKLQkKLQkvKioKLQkgKiBJbnN0YW50aWF0ZXMgYSBuZXcgY2hlc3MgZ2VuZXJpYyBkaWFnbm9zdGljaWFuLgotCSAqCi0JICogQHBhcmFtIGZpbHRlciB0aGUgZmlsdGVyCi0JICovCi0JcHVibGljIENoZXNzR2VuZXJpY0RpYWdub3N0aWNpYW4oSUNvbnN0cmFpbnRGaWx0ZXIgZmlsdGVyKSB7Ci0JCXRoaXMuZUNoZXNzVmFsaWRhdG9yQWRhcHRlciA9IG5ldyBDaGVzc1ZhbGlkYXRvckFkYXB0ZXIoZmlsdGVyKTsKLQl9Ci0JCQotCS8qIChub24tSmF2YWRvYykKLQkgKiBAc2VlIG9yZy5lY2xpcHNlLmVtZi5lY29yZS51dGlsLkRpYWdub3N0aWNpYW4jdmFsaWRhdGUob3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVDbGFzcywgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3QsIG9yZy5lY2xpcHNlLmVtZi5jb21tb24udXRpbC5EaWFnbm9zdGljQ2hhaW4sIGphdmEudXRpbC5NYXApCi0JICovCi0JQE92ZXJyaWRlCi0JcHVibGljIGJvb2xlYW4gdmFsaWRhdGUoRUNsYXNzIGVDbGFzcywgRU9iamVjdCBlT2JqZWN0LCBEaWFnbm9zdGljQ2hhaW4gZGlhZ25vc3RpY3MsIE1hcDxPYmplY3QsIE9iamVjdD4gY29udGV4dCkKLSAgICB7Ci0JCS8vcHJvZ3Jlc3NNb25pdG9yLndvcmtlZCgxKTsKLQkJLy9TeXN0ZW0uZXJyLnByaW50bG4oIlRoaXMgaXMgdGhlIENoZXNzQ2hlY2tlckRpYWdub3N0aWNpYW4gb3ZlcnJpZGUgb2YgRGlhZ25vc3RpY2lhbi52YWxpZGF0ZShFQ2xhc3MsIEVPYmplY3QsZGlhZ25vc3RpY3MsY29udGV4dCkiKTsKLQkJCSAgICAKLQkgICAgYm9vbGVhbiBjaXJjdWxhciA9IGNvbnRleHQuZ2V0KEVPYmplY3RWYWxpZGF0b3IuUk9PVF9PQkpFQ1QpID09IGVPYmplY3Q7Ci0JICAgIEBTdXBwcmVzc1dhcm5pbmdzKCJudWxsIikKLQkgICAgYm9vbGVhbiByZXN1bHQgPSBlQ2hlc3NWYWxpZGF0b3JBZGFwdGVyLnZhbGlkYXRlKGVDbGFzcywgZU9iamVjdCwgZGlhZ25vc3RpY3MsIGNvbnRleHQpOwotCSAgICBpZiAoKHJlc3VsdCB8fCBkaWFnbm9zdGljcyAhPSBudWxsKSAmJiAhY2lyY3VsYXIpCi0JICAgIHsKLQkgICAgICByZXN1bHQgJj0gZG9WYWxpZGF0ZUNvbnRlbnRzKGVPYmplY3QsIGRpYWdub3N0aWNzLCBjb250ZXh0KTsKLQkgICAgfQotCSAgICByZXR1cm4gcmVzdWx0OwotCSAgfQotfQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgDQorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMA0KKyAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KK3BhY2thZ2Ugb3JnLnBvbGFyc3lzLmNoZXNzLnZhbGlkYXRvci5jb21tYW5kLnV0aWw7DQorDQoraW1wb3J0IGphdmEudXRpbC5NYXA7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24udXRpbC5EaWFnbm9zdGljQ2hhaW47DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FQ2xhc3M7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUudXRpbC5EaWFnbm9zdGljaWFuOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUudXRpbC5FT2JqZWN0VmFsaWRhdG9yOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYudmFsaWRhdGlvbi5zZXJ2aWNlLklDb25zdHJhaW50RmlsdGVyOw0KKw0KKw0KKy8vIFRPRE86IEF1dG8tZ2VuZXJhdGVkIEphdmFkb2MNCisvKioNCisgKiBUaGUgQ2xhc3MgQ2hlc3NHZW5lcmljRGlhZ25vc3RpY2lhbi4NCisgKiANCisgKiBAc2VlIHBhY2thZ2Ugb3JnLmVjbGlwc2UuZW1mLmVjb3JlLnV0aWwuRGlhZ25vc3RpY2lhbg0KKyAqLw0KK3B1YmxpYyBjbGFzcyBDaGVzc0dlbmVyaWNEaWFnbm9zdGljaWFuIGV4dGVuZHMgRGlhZ25vc3RpY2lhbiB7DQorDQorCS8qKiBUaGUgZUNoZXNzVmFsaWRhdG9yQWRhcHRlci4gKi8NCisJcHJpdmF0ZSBDaGVzc1ZhbGlkYXRvckFkYXB0ZXIgZUNoZXNzVmFsaWRhdG9yQWRhcHRlcjsNCisJDQorCS8qKg0KKwkgKiBJbnN0YW50aWF0ZXMgYSBuZXcgY2hlc3MgZ2VuZXJpYyBkaWFnbm9zdGljaWFuLg0KKwkgKg0KKwkgKiBAcGFyYW0gZmlsdGVyIHRoZSBmaWx0ZXINCisJICovDQorCXB1YmxpYyBDaGVzc0dlbmVyaWNEaWFnbm9zdGljaWFuKElDb25zdHJhaW50RmlsdGVyIGZpbHRlcikgew0KKwkJdGhpcy5lQ2hlc3NWYWxpZGF0b3JBZGFwdGVyID0gbmV3IENoZXNzVmFsaWRhdG9yQWRhcHRlcihmaWx0ZXIpOw0KKwl9DQorCQkNCisJLyogKG5vbi1KYXZhZG9jKQ0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLmVtZi5lY29yZS51dGlsLkRpYWdub3N0aWNpYW4jdmFsaWRhdGUob3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVDbGFzcywgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3QsIG9yZy5lY2xpcHNlLmVtZi5jb21tb24udXRpbC5EaWFnbm9zdGljQ2hhaW4sIGphdmEudXRpbC5NYXApDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIGJvb2xlYW4gdmFsaWRhdGUoRUNsYXNzIGVDbGFzcywgRU9iamVjdCBlT2JqZWN0LCBEaWFnbm9zdGljQ2hhaW4gZGlhZ25vc3RpY3MsIE1hcDxPYmplY3QsIE9iamVjdD4gY29udGV4dCkNCisgICAgew0KKwkJLy9wcm9ncmVzc01vbml0b3Iud29ya2VkKDEpOw0KKwkJLy9TeXN0ZW0uZXJyLnByaW50bG4oIlRoaXMgaXMgdGhlIENoZXNzQ2hlY2tlckRpYWdub3N0aWNpYW4gb3ZlcnJpZGUgb2YgRGlhZ25vc3RpY2lhbi52YWxpZGF0ZShFQ2xhc3MsIEVPYmplY3QsZGlhZ25vc3RpY3MsY29udGV4dCkiKTsNCisJCQkgICAgDQorCSAgICBib29sZWFuIGNpcmN1bGFyID0gY29udGV4dC5nZXQoRU9iamVjdFZhbGlkYXRvci5ST09UX09CSkVDVCkgPT0gZU9iamVjdDsNCisJICAgIEBTdXBwcmVzc1dhcm5pbmdzKCJudWxsIikNCisJICAgIGJvb2xlYW4gcmVzdWx0ID0gZUNoZXNzVmFsaWRhdG9yQWRhcHRlci52YWxpZGF0ZShlQ2xhc3MsIGVPYmplY3QsIGRpYWdub3N0aWNzLCBjb250ZXh0KTsNCisJICAgIGlmICgocmVzdWx0IHx8IGRpYWdub3N0aWNzICE9IG51bGwpICYmICFjaXJjdWxhcikNCisJICAgIHsNCisJICAgICAgcmVzdWx0ICY9IGRvVmFsaWRhdGVDb250ZW50cyhlT2JqZWN0LCBkaWFnbm9zdGljcywgY29udGV4dCk7DQorCSAgICB9DQorCSAgICByZXR1cm4gcmVzdWx0Ow0KKwkgIH0NCit9DQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MudmFsaWRhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdmFsaWRhdG9yL2NvbW1hbmQvdXRpbC9DaGVzc1ZhbGlkYXRvckFkYXB0ZXIuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnZhbGlkYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3ZhbGlkYXRvci9jb21tYW5kL3V0aWwvQ2hlc3NWYWxpZGF0b3JBZGFwdGVyLmphdmEKaW5kZXggMjFlYzIzNy4uOGI5MjcxMSAxMDA3NTUKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MudmFsaWRhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdmFsaWRhdG9yL2NvbW1hbmQvdXRpbC9DaGVzc1ZhbGlkYXRvckFkYXB0ZXIuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy52YWxpZGF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy92YWxpZGF0b3IvY29tbWFuZC91dGlsL0NoZXNzVmFsaWRhdG9yQWRhcHRlci5qYXZhCkBAIC0xLDE0MiArMSwxNDkgQEAKLXBhY2thZ2Ugb3JnLnBvbGFyc3lzLmNoZXNzLnZhbGlkYXRvci5jb21tYW5kLnV0aWw7Ci0KLWltcG9ydCBqYXZhLnV0aWwuTWFwOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLk51bGxQcm9ncmVzc01vbml0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuQmFzaWNEaWFnbm9zdGljOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24udXRpbC5EaWFnbm9zdGljQ2hhaW47Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVDbGFzczsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUudXRpbC5FT2JqZWN0VmFsaWRhdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi52YWxpZGF0aW9uLm1vZGVsLkV2YWx1YXRpb25Nb2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi52YWxpZGF0aW9uLm1vZGVsLklDb25zdHJhaW50U3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi52YWxpZGF0aW9uLnNlcnZpY2UuSUJhdGNoVmFsaWRhdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi52YWxpZGF0aW9uLnNlcnZpY2UuSUNvbnN0cmFpbnRGaWx0ZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLnZhbGlkYXRpb24uc2VydmljZS5Nb2RlbFZhbGlkYXRpb25TZXJ2aWNlOwotCi0vLyBUT0RPOiBBdXRvLWdlbmVyYXRlZCBKYXZhZG9jCi0vKioKLSAqIFRoZSBDbGFzcyBDaGVzc1ZhbGlkYXRvckFkYXB0ZXIuCi0gKi8KLXB1YmxpYyBjbGFzcyBDaGVzc1ZhbGlkYXRvckFkYXB0ZXIgZXh0ZW5kcyBFT2JqZWN0VmFsaWRhdG9yeyAKLQkKLQkvKiogVGhlIGJhdGNoIHZhbGlkYXRvci4gKi8KLQlwcml2YXRlIGZpbmFsIElCYXRjaFZhbGlkYXRvciBiYXRjaFZhbGlkYXRvcjsKLQotCS8qKgotCSAqIEluc3RhbnRpYXRlcyBhIG5ldyBjaGVzcyB2YWxpZGF0b3IgYWRhcHRlci4KLQkgKgotCSAqIEBwYXJhbSBjb25zdHJhaW50RmlsdGVyIHRoZSBjb25zdHJhaW50IGZpbHRlcgotCSAqLwotCXB1YmxpYyBDaGVzc1ZhbGlkYXRvckFkYXB0ZXIoSUNvbnN0cmFpbnRGaWx0ZXIgY29uc3RyYWludEZpbHRlcikgewotCQlzdXBlcigpOwotCi0JCXRoaXMuYmF0Y2hWYWxpZGF0b3IgPSAoSUJhdGNoVmFsaWRhdG9yKSBNb2RlbFZhbGlkYXRpb25TZXJ2aWNlLmdldEluc3RhbmNlKCkKLQkJCQkubmV3VmFsaWRhdG9yKEV2YWx1YXRpb25Nb2RlLkJBVENIKTsKLQkJdGhpcy5iYXRjaFZhbGlkYXRvci5zZXRJbmNsdWRlTGl2ZUNvbnN0cmFpbnRzKHRydWUpOwotCQl0aGlzLmJhdGNoVmFsaWRhdG9yLnNldFJlcG9ydFN1Y2Nlc3NlcyhmYWxzZSk7Ci0JCXRoaXMuYmF0Y2hWYWxpZGF0b3IuYWRkQ29uc3RyYWludEZpbHRlcihjb25zdHJhaW50RmlsdGVyKTsKLQl9Ci0KLQkvKiAobm9uLUphdmFkb2MpCi0JICogQHNlZSBvcmcuZWNsaXBzZS5lbWYuZWNvcmUudXRpbC5FT2JqZWN0VmFsaWRhdG9yI3ZhbGlkYXRlKG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0LCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuRGlhZ25vc3RpY0NoYWluLCBqYXZhLnV0aWwuTWFwKQotCSAqLwotCUBPdmVycmlkZQotCXB1YmxpYyBib29sZWFuIHZhbGlkYXRlKGZpbmFsIEVPYmplY3QgZU9iamVjdCwKLQkJCWZpbmFsIERpYWdub3N0aWNDaGFpbiBkaWFnbm9zdGljcywKLQkJCWZpbmFsIE1hcDxPYmplY3QsIE9iamVjdD4gY29udGV4dCkgewotCQlyZXR1cm4gdmFsaWRhdGUoZU9iamVjdC5lQ2xhc3MoKSwgZU9iamVjdCwgZGlhZ25vc3RpY3MsIGNvbnRleHQpOwotCX0KLQkKLQkvKiAobm9uLUphdmFkb2MpCi0JICogQHNlZSBvcmcuZWNsaXBzZS5lbWYuZWNvcmUudXRpbC5FT2JqZWN0VmFsaWRhdG9yI3ZhbGlkYXRlKG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FQ2xhc3MsIG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0LCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuRGlhZ25vc3RpY0NoYWluLCBqYXZhLnV0aWwuTWFwKQotCSAqLwotCUBPdmVycmlkZQotCXB1YmxpYyBib29sZWFuIHZhbGlkYXRlKGZpbmFsIEVDbGFzcyBlQ2xhc3MsIGZpbmFsIEVPYmplY3QgZU9iamVjdCwKLQkJCWZpbmFsIERpYWdub3N0aWNDaGFpbiBkaWFnbm9zdGljcywgZmluYWwgTWFwPE9iamVjdCwgT2JqZWN0PiBjb250ZXh0KSB7Ci0gICAgICAgIHN1cGVyLnZhbGlkYXRlKGVDbGFzcywgZU9iamVjdCwgZGlhZ25vc3RpY3MsIGNvbnRleHQpOwotICAgICAgICAKLSAgICAgICAgSVN0YXR1cyBzdGF0dXMgPSBTdGF0dXMuT0tfU1RBVFVTOwotICAgICAgICAKLSAgICAgICAgaWYgKGRpYWdub3N0aWNzICE9IG51bGwpIHsKLSAgICAgICAgICAgIGlmICghaGFzUHJvY2Vzc2VkKGVPYmplY3QsIGNvbnRleHQpKSB7Ci0gICAgICAgICAgICAgICAgc3RhdHVzID0gdGhpcy5iYXRjaFZhbGlkYXRvci52YWxpZGF0ZSgKLSAgICAgICAgICAgICAgICAgICAgZU9iamVjdCwKLSAgICAgICAgICAgICAgICAgICAgbmV3IE51bGxQcm9ncmVzc01vbml0b3IoKSk7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgcHJvY2Vzc2VkKGVPYmplY3QsIGNvbnRleHQsIHN0YXR1cyk7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgYXBwZW5kRGlhZ25vc3RpY3Moc3RhdHVzLCBkaWFnbm9zdGljcyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHJldHVybiBzdGF0dXMuaXNPSygpOwotICAgIH0KLQotCS8qKgotCSAqIFByb2Nlc3NlZC4KLQkgKgotCSAqIEBwYXJhbSBlT2JqZWN0IHRoZSBlIG9iamVjdAotCSAqIEBwYXJhbSBjb250ZXh0IHRoZSBjb250ZXh0Ci0JICogQHBhcmFtIHN0YXR1cyB0aGUgc3RhdHVzCi0JICovCi0JcHJpdmF0ZSB2b2lkIHByb2Nlc3NlZChmaW5hbCBFT2JqZWN0IGVPYmplY3QsCi0JCQlmaW5hbCBNYXA8T2JqZWN0LCBPYmplY3Q+IGNvbnRleHQsIGZpbmFsIElTdGF0dXMgc3RhdHVzKSB7Ci0gICAgICAgIGlmIChjb250ZXh0ICE9IG51bGwpIHsKLSAgICAgICAgICAgIGNvbnRleHQucHV0KGVPYmplY3QsIHN0YXR1cyk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCi0JLyoqCi0JICogQ2hlY2tzIGZvciBwcm9jZXNzZWQuCi0JICoKLQkgKiBAcGFyYW0gZU9iamVjdCB0aGUgZSBvYmplY3QKLQkgKiBAcGFyYW0gY29udGV4dCB0aGUgY29udGV4dAotCSAqIEByZXR1cm4gdHJ1ZSwgaWYgc3VjY2Vzc2Z1bAotCSAqLwotCXByaXZhdGUgYm9vbGVhbiBoYXNQcm9jZXNzZWQoZmluYWwgRU9iamVjdCBlT2JqZWN0LAotCQkJZmluYWwgTWFwPE9iamVjdCwgT2JqZWN0PiBjb250ZXh0KSB7Ci0gICAgICAgIGJvb2xlYW4gcmVzdWx0ID0gZmFsc2U7Ci0gICAgICAgIEVPYmplY3QgY3VycmVudEVPYmplY3QgPSBlT2JqZWN0OwotICAgICAgICBpZiAoY29udGV4dCAhPSBudWxsKSB7Ci0gICAgICAgICAgICB3aGlsZSAoY3VycmVudEVPYmplY3QgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LmNvbnRhaW5zS2V5KGN1cnJlbnRFT2JqZWN0KSkgewotICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICBjdXJyZW50RU9iamVjdCA9IG51bGw7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgY3VycmVudEVPYmplY3QgPSBjdXJyZW50RU9iamVjdC5lQ29udGFpbmVyKCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLSAgICAKLQkvKioKLQkgKiBBcHBlbmQgZGlhZ25vc3RpY3MuCi0JICoKLQkgKiBAcGFyYW0gc3RhdHVzIHRoZSBzdGF0dXMKLQkgKiBAcGFyYW0gZGlhZ25vc3RpY3MgdGhlIGRpYWdub3N0aWNzCi0JICovCi0JcHJpdmF0ZSB2b2lkIGFwcGVuZERpYWdub3N0aWNzKGZpbmFsIElTdGF0dXMgc3RhdHVzLAotCQkJZmluYWwgRGlhZ25vc3RpY0NoYWluIGRpYWdub3N0aWNzKSB7Ci0gICAgICAgIGlmIChzdGF0dXMuaXNNdWx0aVN0YXR1cygpKSB7Ci0gICAgICAgICAgICBJU3RhdHVzW10gY2hpbGRyZW4gPSBzdGF0dXMuZ2V0Q2hpbGRyZW4oKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykgewotICAgICAgICAgICAgICAgIGFwcGVuZERpYWdub3N0aWNzKGNoaWxkcmVuW2ldLCBkaWFnbm9zdGljcyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAoc3RhdHVzIGluc3RhbmNlb2YgSUNvbnN0cmFpbnRTdGF0dXMpIHsKLSAgICAgICAgICAgIGRpYWdub3N0aWNzLmFkZChuZXcgQmFzaWNEaWFnbm9zdGljKAotICAgICAgICAgICAgICAgIHN0YXR1cy5nZXRTZXZlcml0eSgpLAotICAgICAgICAgICAgICAgIHN0YXR1cy5nZXRQbHVnaW4oKSwKLSAgICAgICAgICAgICAgICBzdGF0dXMuZ2V0Q29kZSgpLAotICAgICAgICAgICAgICAgIHN0YXR1cy5nZXRNZXNzYWdlKCksCi0gICAgICAgICAgICAgICAgKChJQ29uc3RyYWludFN0YXR1cykgc3RhdHVzKS5nZXRSZXN1bHRMb2N1cygpLnRvQXJyYXkoKSkpOwotICAgICAgICB9Ci0gICAgfQotCi0KLX0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICogQ29weXJpZ2h0IChDKSAyMDIwIA0KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCisgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCitwYWNrYWdlIG9yZy5wb2xhcnN5cy5jaGVzcy52YWxpZGF0b3IuY29tbWFuZC51dGlsOw0KKw0KK2ltcG9ydCBqYXZhLnV0aWwuTWFwOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsNCitpbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLk51bGxQcm9ncmVzc01vbml0b3I7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5TdGF0dXM7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24udXRpbC5CYXNpY0RpYWdub3N0aWM7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24udXRpbC5EaWFnbm9zdGljQ2hhaW47DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FQ2xhc3M7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUudXRpbC5FT2JqZWN0VmFsaWRhdG9yOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYudmFsaWRhdGlvbi5tb2RlbC5FdmFsdWF0aW9uTW9kZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLnZhbGlkYXRpb24ubW9kZWwuSUNvbnN0cmFpbnRTdGF0dXM7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi52YWxpZGF0aW9uLnNlcnZpY2UuSUJhdGNoVmFsaWRhdG9yOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYudmFsaWRhdGlvbi5zZXJ2aWNlLklDb25zdHJhaW50RmlsdGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYudmFsaWRhdGlvbi5zZXJ2aWNlLk1vZGVsVmFsaWRhdGlvblNlcnZpY2U7DQorDQorLy8gVE9ETzogQXV0by1nZW5lcmF0ZWQgSmF2YWRvYw0KKy8qKg0KKyAqIFRoZSBDbGFzcyBDaGVzc1ZhbGlkYXRvckFkYXB0ZXIuDQorICovDQorcHVibGljIGNsYXNzIENoZXNzVmFsaWRhdG9yQWRhcHRlciBleHRlbmRzIEVPYmplY3RWYWxpZGF0b3J7IA0KKwkNCisJLyoqIFRoZSBiYXRjaCB2YWxpZGF0b3IuICovDQorCXByaXZhdGUgZmluYWwgSUJhdGNoVmFsaWRhdG9yIGJhdGNoVmFsaWRhdG9yOw0KKw0KKwkvKioNCisJICogSW5zdGFudGlhdGVzIGEgbmV3IGNoZXNzIHZhbGlkYXRvciBhZGFwdGVyLg0KKwkgKg0KKwkgKiBAcGFyYW0gY29uc3RyYWludEZpbHRlciB0aGUgY29uc3RyYWludCBmaWx0ZXINCisJICovDQorCXB1YmxpYyBDaGVzc1ZhbGlkYXRvckFkYXB0ZXIoSUNvbnN0cmFpbnRGaWx0ZXIgY29uc3RyYWludEZpbHRlcikgew0KKwkJc3VwZXIoKTsNCisNCisJCXRoaXMuYmF0Y2hWYWxpZGF0b3IgPSAoSUJhdGNoVmFsaWRhdG9yKSBNb2RlbFZhbGlkYXRpb25TZXJ2aWNlLmdldEluc3RhbmNlKCkNCisJCQkJLm5ld1ZhbGlkYXRvcihFdmFsdWF0aW9uTW9kZS5CQVRDSCk7DQorCQl0aGlzLmJhdGNoVmFsaWRhdG9yLnNldEluY2x1ZGVMaXZlQ29uc3RyYWludHModHJ1ZSk7DQorCQl0aGlzLmJhdGNoVmFsaWRhdG9yLnNldFJlcG9ydFN1Y2Nlc3NlcyhmYWxzZSk7DQorCQl0aGlzLmJhdGNoVmFsaWRhdG9yLmFkZENvbnN0cmFpbnRGaWx0ZXIoY29uc3RyYWludEZpbHRlcik7DQorCX0NCisNCisJLyogKG5vbi1KYXZhZG9jKQ0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLmVtZi5lY29yZS51dGlsLkVPYmplY3RWYWxpZGF0b3IjdmFsaWRhdGUob3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3QsIG9yZy5lY2xpcHNlLmVtZi5jb21tb24udXRpbC5EaWFnbm9zdGljQ2hhaW4sIGphdmEudXRpbC5NYXApDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIGJvb2xlYW4gdmFsaWRhdGUoZmluYWwgRU9iamVjdCBlT2JqZWN0LA0KKwkJCWZpbmFsIERpYWdub3N0aWNDaGFpbiBkaWFnbm9zdGljcywNCisJCQlmaW5hbCBNYXA8T2JqZWN0LCBPYmplY3Q+IGNvbnRleHQpIHsNCisJCXJldHVybiB2YWxpZGF0ZShlT2JqZWN0LmVDbGFzcygpLCBlT2JqZWN0LCBkaWFnbm9zdGljcywgY29udGV4dCk7DQorCX0NCisJDQorCS8qIChub24tSmF2YWRvYykNCisJICogQHNlZSBvcmcuZWNsaXBzZS5lbWYuZWNvcmUudXRpbC5FT2JqZWN0VmFsaWRhdG9yI3ZhbGlkYXRlKG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FQ2xhc3MsIG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0LCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuRGlhZ25vc3RpY0NoYWluLCBqYXZhLnV0aWwuTWFwKQ0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBib29sZWFuIHZhbGlkYXRlKGZpbmFsIEVDbGFzcyBlQ2xhc3MsIGZpbmFsIEVPYmplY3QgZU9iamVjdCwNCisJCQlmaW5hbCBEaWFnbm9zdGljQ2hhaW4gZGlhZ25vc3RpY3MsIGZpbmFsIE1hcDxPYmplY3QsIE9iamVjdD4gY29udGV4dCkgew0KKyAgICAgICAgc3VwZXIudmFsaWRhdGUoZUNsYXNzLCBlT2JqZWN0LCBkaWFnbm9zdGljcywgY29udGV4dCk7DQorICAgICAgICANCisgICAgICAgIElTdGF0dXMgc3RhdHVzID0gU3RhdHVzLk9LX1NUQVRVUzsNCisgICAgICAgIA0KKyAgICAgICAgaWYgKGRpYWdub3N0aWNzICE9IG51bGwpIHsNCisgICAgICAgICAgICBpZiAoIWhhc1Byb2Nlc3NlZChlT2JqZWN0LCBjb250ZXh0KSkgew0KKyAgICAgICAgICAgICAgICBzdGF0dXMgPSB0aGlzLmJhdGNoVmFsaWRhdG9yLnZhbGlkYXRlKA0KKyAgICAgICAgICAgICAgICAgICAgZU9iamVjdCwNCisgICAgICAgICAgICAgICAgICAgIG5ldyBOdWxsUHJvZ3Jlc3NNb25pdG9yKCkpOw0KKyAgICAgICAgICAgICAgICANCisgICAgICAgICAgICAgICAgcHJvY2Vzc2VkKGVPYmplY3QsIGNvbnRleHQsIHN0YXR1cyk7DQorICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICAgICAgICBhcHBlbmREaWFnbm9zdGljcyhzdGF0dXMsIGRpYWdub3N0aWNzKTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICANCisgICAgICAgIHJldHVybiBzdGF0dXMuaXNPSygpOw0KKyAgICB9DQorDQorCS8qKg0KKwkgKiBQcm9jZXNzZWQuDQorCSAqDQorCSAqIEBwYXJhbSBlT2JqZWN0IHRoZSBlIG9iamVjdA0KKwkgKiBAcGFyYW0gY29udGV4dCB0aGUgY29udGV4dA0KKwkgKiBAcGFyYW0gc3RhdHVzIHRoZSBzdGF0dXMNCisJICovDQorCXByaXZhdGUgdm9pZCBwcm9jZXNzZWQoZmluYWwgRU9iamVjdCBlT2JqZWN0LA0KKwkJCWZpbmFsIE1hcDxPYmplY3QsIE9iamVjdD4gY29udGV4dCwgZmluYWwgSVN0YXR1cyBzdGF0dXMpIHsNCisgICAgICAgIGlmIChjb250ZXh0ICE9IG51bGwpIHsNCisgICAgICAgICAgICBjb250ZXh0LnB1dChlT2JqZWN0LCBzdGF0dXMpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIA0KKwkvKioNCisJICogQ2hlY2tzIGZvciBwcm9jZXNzZWQuDQorCSAqDQorCSAqIEBwYXJhbSBlT2JqZWN0IHRoZSBlIG9iamVjdA0KKwkgKiBAcGFyYW0gY29udGV4dCB0aGUgY29udGV4dA0KKwkgKiBAcmV0dXJuIHRydWUsIGlmIHN1Y2Nlc3NmdWwNCisJICovDQorCXByaXZhdGUgYm9vbGVhbiBoYXNQcm9jZXNzZWQoZmluYWwgRU9iamVjdCBlT2JqZWN0LA0KKwkJCWZpbmFsIE1hcDxPYmplY3QsIE9iamVjdD4gY29udGV4dCkgew0KKyAgICAgICAgYm9vbGVhbiByZXN1bHQgPSBmYWxzZTsNCisgICAgICAgIEVPYmplY3QgY3VycmVudEVPYmplY3QgPSBlT2JqZWN0Ow0KKyAgICAgICAgaWYgKGNvbnRleHQgIT0gbnVsbCkgew0KKyAgICAgICAgICAgIHdoaWxlIChjdXJyZW50RU9iamVjdCAhPSBudWxsKSB7DQorICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LmNvbnRhaW5zS2V5KGN1cnJlbnRFT2JqZWN0KSkgew0KKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gdHJ1ZTsNCisgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRFT2JqZWN0ID0gbnVsbDsNCisgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRFT2JqZWN0ID0gY3VycmVudEVPYmplY3QuZUNvbnRhaW5lcigpOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgDQorICAgICAgICByZXR1cm4gcmVzdWx0Ow0KKyAgICB9DQorICAgIA0KKwkvKioNCisJICogQXBwZW5kIGRpYWdub3N0aWNzLg0KKwkgKg0KKwkgKiBAcGFyYW0gc3RhdHVzIHRoZSBzdGF0dXMNCisJICogQHBhcmFtIGRpYWdub3N0aWNzIHRoZSBkaWFnbm9zdGljcw0KKwkgKi8NCisJcHJpdmF0ZSB2b2lkIGFwcGVuZERpYWdub3N0aWNzKGZpbmFsIElTdGF0dXMgc3RhdHVzLA0KKwkJCWZpbmFsIERpYWdub3N0aWNDaGFpbiBkaWFnbm9zdGljcykgew0KKyAgICAgICAgaWYgKHN0YXR1cy5pc011bHRpU3RhdHVzKCkpIHsNCisgICAgICAgICAgICBJU3RhdHVzW10gY2hpbGRyZW4gPSBzdGF0dXMuZ2V0Q2hpbGRyZW4oKTsNCisgICAgICAgICAgICANCisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7DQorICAgICAgICAgICAgICAgIGFwcGVuZERpYWdub3N0aWNzKGNoaWxkcmVuW2ldLCBkaWFnbm9zdGljcyk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfSBlbHNlIGlmIChzdGF0dXMgaW5zdGFuY2VvZiBJQ29uc3RyYWludFN0YXR1cykgew0KKyAgICAgICAgICAgIGRpYWdub3N0aWNzLmFkZChuZXcgQmFzaWNEaWFnbm9zdGljKA0KKyAgICAgICAgICAgICAgICBzdGF0dXMuZ2V0U2V2ZXJpdHkoKSwNCisgICAgICAgICAgICAgICAgc3RhdHVzLmdldFBsdWdpbigpLA0KKyAgICAgICAgICAgICAgICBzdGF0dXMuZ2V0Q29kZSgpLA0KKyAgICAgICAgICAgICAgICBzdGF0dXMuZ2V0TWVzc2FnZSgpLA0KKyAgICAgICAgICAgICAgICAoKElDb25zdHJhaW50U3RhdHVzKSBzdGF0dXMpLmdldFJlc3VsdExvY3VzKCkudG9BcnJheSgpKSk7DQorICAgICAgICB9DQorICAgIH0NCisNCisNCit9DQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MudmFsaWRhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdmFsaWRhdG9yL2NvbnN0cmFpbnRzL0FWXzAzLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy52YWxpZGF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy92YWxpZGF0b3IvY29uc3RyYWludHMvQVZfMDMuamF2YQppbmRleCA4ZDEyZDllLi5iODkxYTJlIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy52YWxpZGF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy92YWxpZGF0b3IvY29uc3RyYWludHMvQVZfMDMuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy52YWxpZGF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy92YWxpZGF0b3IvY29uc3RyYWludHMvQVZfMDMuamF2YQpAQCAtMTEsNyArMTEsNyBAQAogLS0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAgLS0KIC0tIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgIC0tCiAtLSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0ICAgICAtLQotLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICovCiBwYWNrYWdlIG9yZy5wb2xhcnN5cy5jaGVzcy52YWxpZGF0b3IuY29uc3RyYWludHM7CkBAIC0zNiw3ICszNiw3IEBACiAvKioKICAqIFRoZSBDbGFzcyBBVl8wMy4KICAqIFRoaXMgY2xhc3MgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIGNvbnN0cmFpbnQgKGludm9rZWQgYnkgdGhlIEVNRiB2YWxpZGF0aW9uIGZyYW1ld29yayk6Ci0gKiB0aGUgU2FBbmFseXNpc0NvbnRleHQgY2xhc3NpZmllciBpbiB0aGUgQW5hbHlzaXMgVmlldyBtdXN0IGhhdmUgaXRzIJNQbGF0Zm9ybZQgcHJvcGVydHkgCisgKiB0aGUgU2FBbmFseXNpc0NvbnRleHQgY2xhc3NpZmllciBpbiB0aGUgQW5hbHlzaXMgVmlldyBtdXN0IGhhdmUgaXRzIO+/vVBsYXRmb3Jt77+9IHByb3BlcnR5IAogICogdmFsdWVkIHdpdGggYSBDSEdhUmVzb3VyY2VQbGF0Zm9ybSB0aGF0IGlzIGEgUGFja2FnZSBpbiB0aGUgQ29tcG9uZW50IFZpZXcuCiAgKiBAc2luY2UgMC4xMAogICovCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy52YWxpZGF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy92YWxpZGF0b3IvY29uc3RyYWludHMvQXJpbmNQcm9jXzAxLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy52YWxpZGF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy92YWxpZGF0b3IvY29uc3RyYWludHMvQXJpbmNQcm9jXzAxLmphdmEKaW5kZXggMTY0ZDc4ZC4uMzI0MTA0OSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MudmFsaWRhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdmFsaWRhdG9yL2NvbnN0cmFpbnRzL0FyaW5jUHJvY18wMS5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnZhbGlkYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3ZhbGlkYXRvci9jb25zdHJhaW50cy9BcmluY1Byb2NfMDEuamF2YQpAQCAtMTAsNyArMTAsNyBAQAogLS0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAgLS0KIC0tIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgIC0tCiAtLSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0ICAgICAtLQotLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICovCiBwYWNrYWdlIG9yZy5wb2xhcnN5cy5jaGVzcy52YWxpZGF0b3IuY29uc3RyYWludHM7CmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy52YWxpZGF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy92YWxpZGF0b3IvY29uc3RyYWludHMvQ29ubmVjdG9yXzAxLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy52YWxpZGF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy92YWxpZGF0b3IvY29uc3RyYWludHMvQ29ubmVjdG9yXzAxLmphdmEKaW5kZXggMzYzNTU2ZS4uZjJkNDlmZCAxMDA3NTUKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MudmFsaWRhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdmFsaWRhdG9yL2NvbnN0cmFpbnRzL0Nvbm5lY3Rvcl8wMS5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnZhbGlkYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3ZhbGlkYXRvci9jb25zdHJhaW50cy9Db25uZWN0b3JfMDEuamF2YQpAQCAtMTAsNyArMTAsNyBAQAogLS0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAgLS0KIC0tIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgIC0tCiAtLSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0ICAgICAtLQotLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogKi8KIHBhY2thZ2Ugb3JnLnBvbGFyc3lzLmNoZXNzLnZhbGlkYXRvci5jb25zdHJhaW50czsKZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnZhbGlkYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3ZhbGlkYXRvci9jb25zdHJhaW50cy9Db25uZWN0b3JfMDIuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnZhbGlkYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3ZhbGlkYXRvci9jb25zdHJhaW50cy9Db25uZWN0b3JfMDIuamF2YQppbmRleCBkNTZkYTUxLi40ZDI2YmZjIDEwMDc1NQotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy52YWxpZGF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy92YWxpZGF0b3IvY29uc3RyYWludHMvQ29ubmVjdG9yXzAyLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MudmFsaWRhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdmFsaWRhdG9yL2NvbnN0cmFpbnRzL0Nvbm5lY3Rvcl8wMi5qYXZhCkBAIC0xMCw3ICsxMCw3IEBACiAtLSBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzICAtLQogLS0gYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAgLS0KIC0tIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgICAgIC0tCi0tLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqLwogCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy52YWxpZGF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy92YWxpZGF0b3IvY29uc3RyYWludHMvQ29ubmVjdG9yXzAzLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy52YWxpZGF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy92YWxpZGF0b3IvY29uc3RyYWludHMvQ29ubmVjdG9yXzAzLmphdmEKaW5kZXggYjQ5YWM5Zi4uYjc2OTU4NSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MudmFsaWRhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdmFsaWRhdG9yL2NvbnN0cmFpbnRzL0Nvbm5lY3Rvcl8wMy5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnZhbGlkYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3ZhbGlkYXRvci9jb25zdHJhaW50cy9Db25uZWN0b3JfMDMuamF2YQpAQCAtMTAsNyArMTAsNyBAQAogLS0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAgLS0KIC0tIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgIC0tCiAtLSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0ICAgICAtLQotLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICovCiAKZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnZhbGlkYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3ZhbGlkYXRvci9jb25zdHJhaW50cy9EVl8wMS5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MudmFsaWRhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdmFsaWRhdG9yL2NvbnN0cmFpbnRzL0RWXzAxLmphdmEKaW5kZXggZjY3ZmEwOS4uZjEzNmQyZSAxMDA3NTUKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MudmFsaWRhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdmFsaWRhdG9yL2NvbnN0cmFpbnRzL0RWXzAxLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MudmFsaWRhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdmFsaWRhdG9yL2NvbnN0cmFpbnRzL0RWXzAxLmphdmEKQEAgLTEwLDcgKzEwLDcgQEAKIC0tIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgIC0tCiAtLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlICAtLQogLS0gdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCAgICAgLS0KLS0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqLwogcGFja2FnZSBvcmcucG9sYXJzeXMuY2hlc3MudmFsaWRhdG9yLmNvbnN0cmFpbnRzOwpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MudmFsaWRhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdmFsaWRhdG9yL2NvbnN0cmFpbnRzL0RWXzAyLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy52YWxpZGF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy92YWxpZGF0b3IvY29uc3RyYWludHMvRFZfMDIuamF2YQppbmRleCBiZWU2NTU4Li42YWUzYmM5IDEwMDc1NQotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy52YWxpZGF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy92YWxpZGF0b3IvY29uc3RyYWludHMvRFZfMDIuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy52YWxpZGF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy92YWxpZGF0b3IvY29uc3RyYWludHMvRFZfMDIuamF2YQpAQCAtMTAsNyArMTAsNyBAQAogLS0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAgLS0KIC0tIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgIC0tCiAtLSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0ICAgICAtLQotLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICovCiBwYWNrYWdlIG9yZy5wb2xhcnN5cy5jaGVzcy52YWxpZGF0b3IuY29uc3RyYWludHM7CkBAIC0yOSw3ICsyOSw3IEBACiAKIC8qKgogICogVGhlIENsYXNzIERWXzAyLgotICogRFZfMDIgY2hlY2tzIHRoYXQgdGhlIGF0dHJpYnV0ZSCTZnJvbZQgYW5kIJN0b5Qgb2Ygc3RlcmVvdHlwZSBBc3NpZ24gbXVzdCBiZSB2YWx1ZWQgd2l0aCBleGFjdGx5IAorICogRFZfMDIgY2hlY2tzIHRoYXQgdGhlIGF0dHJpYnV0ZSDvv71mcm9t77+9IGFuZCDvv710b++/vSBvZiBzdGVyZW90eXBlIEFzc2lnbiBtdXN0IGJlIHZhbHVlZCB3aXRoIGV4YWN0bHkgCiAgKiBvbmUgdmFsdWUgb24gZWFjaCBlbmQgYW5kIHdpdGggdGhlIGNvcnJlY3QgdHlwZXM6IAogICogdGhlIHZhbHVlIG9mIHRoZSBhdHRyaWJ1dGUgJ2Zyb20nIGluIHN0ZXJlb3R5cGUgQXNzaWduIG11c3QgYmUgYW4gaW5zdGFuY2UgKEluc3RhbmNlU3BlY2lmaWNhdGlvbikgCiAgKiBvZiBhIENvbXBvbmVudEltcGxlbWVudGF0aW9uIG9yIG9mIGEgRnVuY3Rpb25hbCBQYXJ0aXRpb24gb3IgYSA8PENIUnRQb3J0U2xvdD4+IFNsb3QuIApkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MudmFsaWRhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdmFsaWRhdG9yL2NvbnN0cmFpbnRzL0RWXzAzLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy52YWxpZGF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy92YWxpZGF0b3IvY29uc3RyYWludHMvRFZfMDMuamF2YQppbmRleCA5NDMwZDIzLi42NDRiZWExIDEwMDc1NQotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy52YWxpZGF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy92YWxpZGF0b3IvY29uc3RyYWludHMvRFZfMDMuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy52YWxpZGF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy92YWxpZGF0b3IvY29uc3RyYWludHMvRFZfMDMuamF2YQpAQCAtNyw3ICs3LDcgQEAKIC0tIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgIC0tCiAtLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlICAtLQogLS0gdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCAgICAgLS0KLS0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqLwogcGFja2FnZSBvcmcucG9sYXJzeXMuY2hlc3MudmFsaWRhdG9yLmNvbnN0cmFpbnRzOwpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MudmFsaWRhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdmFsaWRhdG9yL2NvbnN0cmFpbnRzL0RWXzA0LmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy52YWxpZGF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy92YWxpZGF0b3IvY29uc3RyYWludHMvRFZfMDQuamF2YQppbmRleCBkZDkyNTliLi4wNzk2MWNiIDEwMDc1NQotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy52YWxpZGF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy92YWxpZGF0b3IvY29uc3RyYWludHMvRFZfMDQuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy52YWxpZGF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy92YWxpZGF0b3IvY29uc3RyYWludHMvRFZfMDQuamF2YQpAQCAtNyw3ICs3LDcgQEAKIC0tIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgIC0tCiAtLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlICAtLQogLS0gdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCAgICAgLS0KLS0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqLwogcGFja2FnZSBvcmcucG9sYXJzeXMuY2hlc3MudmFsaWRhdG9yLmNvbnN0cmFpbnRzOwpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MudmFsaWRhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdmFsaWRhdG9yL2NvbnN0cmFpbnRzL0RWXzA1LmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy52YWxpZGF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy92YWxpZGF0b3IvY29uc3RyYWludHMvRFZfMDUuamF2YQppbmRleCA2NWJiYzViLi41ODI1NzA2IDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy52YWxpZGF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy92YWxpZGF0b3IvY29uc3RyYWludHMvRFZfMDUuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy52YWxpZGF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy92YWxpZGF0b3IvY29uc3RyYWludHMvRFZfMDUuamF2YQpAQCAtMTAsNyArMTAsNyBAQAogLS0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAgLS0KIC0tIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgIC0tCiAtLSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0ICAgICAtLQotLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICovCiBwYWNrYWdlIG9yZy5wb2xhcnN5cy5jaGVzcy52YWxpZGF0b3IuY29uc3RyYWludHM7CmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy52YWxpZGF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy92YWxpZGF0b3IvY29uc3RyYWludHMvRFZfMDYuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnZhbGlkYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3ZhbGlkYXRvci9jb25zdHJhaW50cy9EVl8wNi5qYXZhCmluZGV4IDMyNzRkZmIuLjE4ZDkyMGMgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnZhbGlkYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3ZhbGlkYXRvci9jb25zdHJhaW50cy9EVl8wNi5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnZhbGlkYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3ZhbGlkYXRvci9jb25zdHJhaW50cy9EVl8wNi5qYXZhCkBAIC0xMCw3ICsxMCw3IEBACiAtLSBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzICAtLQogLS0gYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAgLS0KIC0tIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgICAgIC0tCi0tLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKi8KIHBhY2thZ2Ugb3JnLnBvbGFyc3lzLmNoZXNzLnZhbGlkYXRvci5jb25zdHJhaW50czsKZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnZhbGlkYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3ZhbGlkYXRvci9jb25zdHJhaW50cy9FRlZSVF8wMS5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MudmFsaWRhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdmFsaWRhdG9yL2NvbnN0cmFpbnRzL0VGVlJUXzAxLmphdmEKaW5kZXggMTEzMzVlMi4uZDZlNmNjZSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MudmFsaWRhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdmFsaWRhdG9yL2NvbnN0cmFpbnRzL0VGVlJUXzAxLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MudmFsaWRhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdmFsaWRhdG9yL2NvbnN0cmFpbnRzL0VGVlJUXzAxLmphdmEKQEAgLTExLDcgKzExLDcgQEAKIC0tIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgIC0tCiAtLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlICAtLQogLS0gdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCAgICAgLS0KLS0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqLwogcGFja2FnZSBvcmcucG9sYXJzeXMuY2hlc3MudmFsaWRhdG9yLmNvbnN0cmFpbnRzOwpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MudmFsaWRhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdmFsaWRhdG9yL2NvbnN0cmFpbnRzL0VGVlJUXzAyLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy52YWxpZGF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy92YWxpZGF0b3IvY29uc3RyYWludHMvRUZWUlRfMDIuamF2YQppbmRleCAwNjk2Y2Y3Li4wOGQ5NWMyIDEwMDc1NQotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy52YWxpZGF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy92YWxpZGF0b3IvY29uc3RyYWludHMvRUZWUlRfMDIuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy52YWxpZGF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy92YWxpZGF0b3IvY29uc3RyYWludHMvRUZWUlRfMDIuamF2YQpAQCAtMTAsNyArMTAsNyBAQAogLS0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAgLS0KIC0tIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgIC0tCiAtLSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0ICAgICAtLQotLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICovCiBwYWNrYWdlIG9yZy5wb2xhcnN5cy5jaGVzcy52YWxpZGF0b3IuY29uc3RyYWludHM7CmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy52YWxpZGF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy92YWxpZGF0b3IvY29uc3RyYWludHMvRUZWUlRfMDJfMS5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MudmFsaWRhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdmFsaWRhdG9yL2NvbnN0cmFpbnRzL0VGVlJUXzAyXzEuamF2YQppbmRleCA1OThiNmY4Li5kYjg3ZTlkIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy52YWxpZGF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy92YWxpZGF0b3IvY29uc3RyYWludHMvRUZWUlRfMDJfMS5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnZhbGlkYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3ZhbGlkYXRvci9jb25zdHJhaW50cy9FRlZSVF8wMl8xLmphdmEKQEAgLTEwLDcgKzEwLDcgQEAKIC0tIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgIC0tCiAtLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlICAtLQogLS0gdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCAgICAgLS0KLS0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqLwogcGFja2FnZSBvcmcucG9sYXJzeXMuY2hlc3MudmFsaWRhdG9yLmNvbnN0cmFpbnRzOwpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MudmFsaWRhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdmFsaWRhdG9yL2NvbnN0cmFpbnRzL0VGVlJUXzAzLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy52YWxpZGF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy92YWxpZGF0b3IvY29uc3RyYWludHMvRUZWUlRfMDMuamF2YQppbmRleCA3ODRiM2FhLi4wZGNkZTY4IDEwMDc1NQotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy52YWxpZGF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy92YWxpZGF0b3IvY29uc3RyYWludHMvRUZWUlRfMDMuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy52YWxpZGF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy92YWxpZGF0b3IvY29uc3RyYWludHMvRUZWUlRfMDMuamF2YQpAQCAtMTAsNyArMTAsNyBAQAogLS0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAgLS0KIC0tIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgIC0tCiAtLSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0ICAgICAtLQotLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICovCiBwYWNrYWdlIG9yZy5wb2xhcnN5cy5jaGVzcy52YWxpZGF0b3IuY29uc3RyYWludHM7CmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy52YWxpZGF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy92YWxpZGF0b3IvY29uc3RyYWludHMvRUZWUlRfMDQuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnZhbGlkYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3ZhbGlkYXRvci9jb25zdHJhaW50cy9FRlZSVF8wNC5qYXZhCmluZGV4IGFlOTNkOTguLjE3MmM0ZWEgMTAwNzU1Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnZhbGlkYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3ZhbGlkYXRvci9jb25zdHJhaW50cy9FRlZSVF8wNC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnZhbGlkYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3ZhbGlkYXRvci9jb25zdHJhaW50cy9FRlZSVF8wNC5qYXZhCkBAIC0xMCw3ICsxMCw3IEBACiAtLSBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzICAtLQogLS0gYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAgLS0KIC0tIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgICAgIC0tCi0tLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKi8KIHBhY2thZ2Ugb3JnLnBvbGFyc3lzLmNoZXNzLnZhbGlkYXRvci5jb25zdHJhaW50czsKZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnZhbGlkYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3ZhbGlkYXRvci9jb25zdHJhaW50cy9FRlZSVF8yMC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MudmFsaWRhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdmFsaWRhdG9yL2NvbnN0cmFpbnRzL0VGVlJUXzIwLmphdmEKaW5kZXggMWE2OGJmMi4uNWI5M2UzZCAxMDA3NTUKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MudmFsaWRhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdmFsaWRhdG9yL2NvbnN0cmFpbnRzL0VGVlJUXzIwLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MudmFsaWRhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdmFsaWRhdG9yL2NvbnN0cmFpbnRzL0VGVlJUXzIwLmphdmEKQEAgLTEwLDcgKzEwLDcgQEAKIC0tIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgIC0tCiAtLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlICAtLQogLS0gdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCAgICAgLS0KLS0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqLwogcGFja2FnZSBvcmcucG9sYXJzeXMuY2hlc3MudmFsaWRhdG9yLmNvbnN0cmFpbnRzOwpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MudmFsaWRhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdmFsaWRhdG9yL2NvbnN0cmFpbnRzL0VGVlJUXzMwLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy52YWxpZGF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy92YWxpZGF0b3IvY29uc3RyYWludHMvRUZWUlRfMzAuamF2YQppbmRleCA5ZjMxMWU2Li41N2NhNDNkIDEwMDc1NQotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy52YWxpZGF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy92YWxpZGF0b3IvY29uc3RyYWludHMvRUZWUlRfMzAuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy52YWxpZGF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy92YWxpZGF0b3IvY29uc3RyYWludHMvRUZWUlRfMzAuamF2YQpAQCAtMTAsNyArMTAsNyBAQAogLS0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAgLS0KIC0tIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgIC0tCiAtLSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0ICAgICAtLQotLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICovCiBwYWNrYWdlIG9yZy5wb2xhcnN5cy5jaGVzcy52YWxpZGF0b3IuY29uc3RyYWludHM7CmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy52YWxpZGF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy92YWxpZGF0b3IvY29uc3RyYWludHMvRUZWUlRfNDAuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnZhbGlkYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3ZhbGlkYXRvci9jb25zdHJhaW50cy9FRlZSVF80MC5qYXZhCmluZGV4IDljYzc0N2QuLmFiOTdjYjggMTAwNzU1Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnZhbGlkYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3ZhbGlkYXRvci9jb25zdHJhaW50cy9FRlZSVF80MC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnZhbGlkYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3ZhbGlkYXRvci9jb25zdHJhaW50cy9FRlZSVF80MC5qYXZhCkBAIC0xMCw3ICsxMCw3IEBACiAtLSBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzICAtLQogLS0gYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAgLS0KIC0tIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgICAgIC0tCi0tLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKi8KIHBhY2thZ2Ugb3JnLnBvbGFyc3lzLmNoZXNzLnZhbGlkYXRvci5jb25zdHJhaW50czsKZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnZhbGlkYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3ZhbGlkYXRvci9jb25zdHJhaW50cy9GVl8wMi5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MudmFsaWRhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdmFsaWRhdG9yL2NvbnN0cmFpbnRzL0ZWXzAyLmphdmEKaW5kZXggMWZhZmMzZC4uYzBkNjVmNSAxMDA3NTUKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MudmFsaWRhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdmFsaWRhdG9yL2NvbnN0cmFpbnRzL0ZWXzAyLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MudmFsaWRhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdmFsaWRhdG9yL2NvbnN0cmFpbnRzL0ZWXzAyLmphdmEKQEAgLTEwLDcgKzEwLDcgQEAKIC0tIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgIC0tCiAtLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlICAtLQogLS0gdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCAgICAgLS0KLS0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICovCiBwYWNrYWdlIG9yZy5wb2xhcnN5cy5jaGVzcy52YWxpZGF0b3IuY29uc3RyYWludHM7CmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy52YWxpZGF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy92YWxpZGF0b3IvY29uc3RyYWludHMvRlZfMDMuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnZhbGlkYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3ZhbGlkYXRvci9jb25zdHJhaW50cy9GVl8wMy5qYXZhCmluZGV4IDQyYTkwY2EuLjZkYWRjZWQgMTAwNzU1Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnZhbGlkYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3ZhbGlkYXRvci9jb25zdHJhaW50cy9GVl8wMy5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnZhbGlkYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3ZhbGlkYXRvci9jb25zdHJhaW50cy9GVl8wMy5qYXZhCkBAIC0xMCw3ICsxMCw3IEBACiAtLSBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzICAtLQogLS0gYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAgLS0KIC0tIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgICAgIC0tCi0tLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqLwogcGFja2FnZSBvcmcucG9sYXJzeXMuY2hlc3MudmFsaWRhdG9yLmNvbnN0cmFpbnRzOwpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MudmFsaWRhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdmFsaWRhdG9yL2NvbnN0cmFpbnRzL0ZWXzA0LmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy52YWxpZGF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy92YWxpZGF0b3IvY29uc3RyYWludHMvRlZfMDQuamF2YQppbmRleCBiZTU0NTNlLi43NzI0MjVmIDEwMDc1NQotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy52YWxpZGF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy92YWxpZGF0b3IvY29uc3RyYWludHMvRlZfMDQuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy52YWxpZGF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy92YWxpZGF0b3IvY29uc3RyYWludHMvRlZfMDQuamF2YQpAQCAtMTAsNyArMTAsNyBAQAogLS0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAgLS0KIC0tIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgIC0tCiAtLSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0ICAgICAtLQotLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogKi8KIHBhY2thZ2Ugb3JnLnBvbGFyc3lzLmNoZXNzLnZhbGlkYXRvci5jb25zdHJhaW50czsKZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnZhbGlkYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3ZhbGlkYXRvci9jb25zdHJhaW50cy9GVl8wNS5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MudmFsaWRhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdmFsaWRhdG9yL2NvbnN0cmFpbnRzL0ZWXzA1LmphdmEKaW5kZXggNzUyYzE5OS4uOWM3ZWVkNyAxMDA3NTUKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MudmFsaWRhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdmFsaWRhdG9yL2NvbnN0cmFpbnRzL0ZWXzA1LmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MudmFsaWRhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdmFsaWRhdG9yL2NvbnN0cmFpbnRzL0ZWXzA1LmphdmEKQEAgLTEwLDcgKzEwLDcgQEAKIC0tIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgIC0tCiAtLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlICAtLQogLS0gdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCAgICAgLS0KLS0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqLwogcGFja2FnZSBvcmcucG9sYXJzeXMuY2hlc3MudmFsaWRhdG9yLmNvbnN0cmFpbnRzOwpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MudmFsaWRhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdmFsaWRhdG9yL2NvbnN0cmFpbnRzL0ZWXzA2LmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy52YWxpZGF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy92YWxpZGF0b3IvY29uc3RyYWludHMvRlZfMDYuamF2YQppbmRleCBhYWNkNmEzLi5mYzViZGI0IDEwMDc1NQotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy52YWxpZGF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy92YWxpZGF0b3IvY29uc3RyYWludHMvRlZfMDYuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy52YWxpZGF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy92YWxpZGF0b3IvY29uc3RyYWludHMvRlZfMDYuamF2YQpAQCAtMTAsNyArMTAsNyBAQAogLS0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAgLS0KIC0tIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgIC0tCiAtLSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0ICAgICAtLQotLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICovCiBwYWNrYWdlIG9yZy5wb2xhcnN5cy5jaGVzcy52YWxpZGF0b3IuY29uc3RyYWludHM7CmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy52YWxpZGF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy92YWxpZGF0b3IvY29uc3RyYWludHMvRlZfMDcuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnZhbGlkYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3ZhbGlkYXRvci9jb25zdHJhaW50cy9GVl8wNy5qYXZhCmluZGV4IDMwMmMwOTIuLmIzMjZkZGEgMTAwNzU1Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnZhbGlkYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3ZhbGlkYXRvci9jb25zdHJhaW50cy9GVl8wNy5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnZhbGlkYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3ZhbGlkYXRvci9jb25zdHJhaW50cy9GVl8wNy5qYXZhCkBAIC0xMCw3ICsxMCw3IEBACiAtLSBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzICAtLQogLS0gYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAgLS0KIC0tIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgICAgIC0tCi0tLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKi8KIHBhY2thZ2Ugb3JnLnBvbGFyc3lzLmNoZXNzLnZhbGlkYXRvci5jb25zdHJhaW50czsKZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnZhbGlkYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3ZhbGlkYXRvci9jb25zdHJhaW50cy9GbG93UG9ydHNfMDEuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnZhbGlkYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3ZhbGlkYXRvci9jb25zdHJhaW50cy9GbG93UG9ydHNfMDEuamF2YQppbmRleCBmYzI3MDAwLi4zMTkxZDk4IDEwMDc1NQotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy52YWxpZGF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy92YWxpZGF0b3IvY29uc3RyYWludHMvRmxvd1BvcnRzXzAxLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MudmFsaWRhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdmFsaWRhdG9yL2NvbnN0cmFpbnRzL0Zsb3dQb3J0c18wMS5qYXZhCkBAIC0xMCw3ICsxMCw3IEBACiAtLSBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzICAtLQogLS0gYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAgLS0KIC0tIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgICAgIC0tCi0tLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKi8KIApkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MudmFsaWRhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdmFsaWRhdG9yL2NvbnN0cmFpbnRzL0Zsb3dQb3J0c18wMi5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MudmFsaWRhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdmFsaWRhdG9yL2NvbnN0cmFpbnRzL0Zsb3dQb3J0c18wMi5qYXZhCmluZGV4IDQ4NzJmMTMuLjFjYTZmOWMgMTAwNzU1Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnZhbGlkYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3ZhbGlkYXRvci9jb25zdHJhaW50cy9GbG93UG9ydHNfMDIuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy52YWxpZGF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy92YWxpZGF0b3IvY29uc3RyYWludHMvRmxvd1BvcnRzXzAyLmphdmEKQEAgLTEwLDcgKzEwLDcgQEAKIC0tIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgIC0tCiAtLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlICAtLQogLS0gdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCAgICAgLS0KLS0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqLwogCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy52YWxpZGF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy92YWxpZGF0b3IvY29uc3RyYWludHMvRmxvd1BvcnRzXzAzLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy52YWxpZGF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy92YWxpZGF0b3IvY29uc3RyYWludHMvRmxvd1BvcnRzXzAzLmphdmEKaW5kZXggZTdkYWJiYy4uMGMwNTA5MSAxMDA3NTUKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MudmFsaWRhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdmFsaWRhdG9yL2NvbnN0cmFpbnRzL0Zsb3dQb3J0c18wMy5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnZhbGlkYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3ZhbGlkYXRvci9jb25zdHJhaW50cy9GbG93UG9ydHNfMDMuamF2YQpAQCAtMTAsNyArMTAsNyBAQAogLS0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAgLS0KIC0tIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgIC0tCiAtLSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0ICAgICAtLQotLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICovCiAKZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnZhbGlkYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3ZhbGlkYXRvci9jb25zdHJhaW50cy9TdHJpbmdQYXJzZXIuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnZhbGlkYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3ZhbGlkYXRvci9jb25zdHJhaW50cy9TdHJpbmdQYXJzZXIuamF2YQppbmRleCA3YzZkMGZmLi4yOGQzZTAxIDEwMDc1NQotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy52YWxpZGF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy92YWxpZGF0b3IvY29uc3RyYWludHMvU3RyaW5nUGFyc2VyLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MudmFsaWRhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdmFsaWRhdG9yL2NvbnN0cmFpbnRzL1N0cmluZ1BhcnNlci5qYXZhCkBAIC0xMCw3ICsxMCw3IEBACiAtLSBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzICAtLQogLS0gYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAgLS0KIC0tIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgICAgIC0tCi0tLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqLwogcGFja2FnZSBvcmcucG9sYXJzeXMuY2hlc3MudmFsaWRhdG9yLmNvbnN0cmFpbnRzOwpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MudmFsaWRhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdmFsaWRhdG9yL2xpYnMvQWN0aW9uc0xpYi5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MudmFsaWRhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdmFsaWRhdG9yL2xpYnMvQWN0aW9uc0xpYi5qYXZhCmluZGV4IGJjNWFhMTYuLmNiNzI4MjggMTAwNzU1Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnZhbGlkYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3ZhbGlkYXRvci9saWJzL0FjdGlvbnNMaWIuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy52YWxpZGF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy92YWxpZGF0b3IvbGlicy9BY3Rpb25zTGliLmphdmEKQEAgLTExLDcgKzExLDcgQEAKIC0tIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgIC0tCiAtLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlICAtLQogLS0gdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCAgICAgLS0KLS0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqLwogCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy52YWxpZGF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy92YWxpZGF0b3IvbGlicy9Db25zdHJhaW50c0xpYi5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MudmFsaWRhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdmFsaWRhdG9yL2xpYnMvQ29uc3RyYWludHNMaWIuamF2YQppbmRleCAxM2M1NzcxLi43ZjQxOTI5IDEwMDc1NQotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy52YWxpZGF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy92YWxpZGF0b3IvbGlicy9Db25zdHJhaW50c0xpYi5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnZhbGlkYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3ZhbGlkYXRvci9saWJzL0NvbnN0cmFpbnRzTGliLmphdmEKQEAgLTEyLDcgKzEyLDcgQEAKIC0tIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgIC0tCiAtLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlICAtLQogLS0gdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCAgICAgLS0KLS0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICovCiAKZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnZhbGlkYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3ZhbGlkYXRvci9saWJzL0Nyb3NzVmlld0FjdGlvbkxpYi5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MudmFsaWRhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdmFsaWRhdG9yL2xpYnMvQ3Jvc3NWaWV3QWN0aW9uTGliLmphdmEKaW5kZXggYzA3MmM4YS4uYmMwMmM2YSAxMDA3NTUKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MudmFsaWRhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdmFsaWRhdG9yL2xpYnMvQ3Jvc3NWaWV3QWN0aW9uTGliLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MudmFsaWRhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdmFsaWRhdG9yL2xpYnMvQ3Jvc3NWaWV3QWN0aW9uTGliLmphdmEKQEAgLTEwLDcgKzEwLDcgQEAKIC0tIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgIC0tCiAtLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlICAtLQogLS0gdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCAgICAgLS0KLS0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqLwogCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy52YWxpZGF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy92YWxpZGF0b3IvbWFuYWdlcnMvQWRkRGlhZ3JhbUVsZW1lbnQuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnZhbGlkYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3ZhbGlkYXRvci9tYW5hZ2Vycy9BZGREaWFncmFtRWxlbWVudC5qYXZhCmluZGV4IGFjZDIxYTcuLmQzZmEyNGYgMTAwNzU1Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnZhbGlkYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3ZhbGlkYXRvci9tYW5hZ2Vycy9BZGREaWFncmFtRWxlbWVudC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnZhbGlkYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3ZhbGlkYXRvci9tYW5hZ2Vycy9BZGREaWFncmFtRWxlbWVudC5qYXZhCkBAIC0xMCw3ICsxMCw3IEBACiAtLSBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzICAtLQogLS0gYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAgLS0KIC0tIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgICAgIC0tCi0tLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqLwogCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy52YWxpZGF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy92YWxpZGF0b3IvbWFuYWdlcnMvTW9kZWxNYW5hZ2VyLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy52YWxpZGF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy92YWxpZGF0b3IvbWFuYWdlcnMvTW9kZWxNYW5hZ2VyLmphdmEKaW5kZXggODgzMjIzYy4uNGYwZmQyOCAxMDA3NTUKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MudmFsaWRhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdmFsaWRhdG9yL21hbmFnZXJzL01vZGVsTWFuYWdlci5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnZhbGlkYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3ZhbGlkYXRvci9tYW5hZ2Vycy9Nb2RlbE1hbmFnZXIuamF2YQpAQCAtMTAsNyArMTAsNyBAQAogLS0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAgLS0KIC0tIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgIC0tCiAtLSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0ICAgICAtLQotLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogKi8KIApkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MudmFsaWRhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdmFsaWRhdG9yL21hbmFnZXJzL01vZGVsUGFyc2VyLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy52YWxpZGF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy92YWxpZGF0b3IvbWFuYWdlcnMvTW9kZWxQYXJzZXIuamF2YQppbmRleCA3MjMwMjRkLi5kYTY4ODEyIDEwMDc1NQotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy52YWxpZGF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy92YWxpZGF0b3IvbWFuYWdlcnMvTW9kZWxQYXJzZXIuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy52YWxpZGF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy92YWxpZGF0b3IvbWFuYWdlcnMvTW9kZWxQYXJzZXIuamF2YQpAQCAtMTAsNyArMTAsNyBAQAogLS0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAgLS0KIC0tIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgIC0tCiAtLSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0ICAgICAtLQotLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICovCiAKZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnZhbGlkYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3ZhbGlkYXRvci9tYW5hZ2Vycy9SZXNvdXJjZUxpc3RlbmVyLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy52YWxpZGF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy92YWxpZGF0b3IvbWFuYWdlcnMvUmVzb3VyY2VMaXN0ZW5lci5qYXZhCmluZGV4IGEwMDg3YTIuLjk0NTNhMzMgMTAwNzU1Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnZhbGlkYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3ZhbGlkYXRvci9tYW5hZ2Vycy9SZXNvdXJjZUxpc3RlbmVyLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MudmFsaWRhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdmFsaWRhdG9yL21hbmFnZXJzL1Jlc291cmNlTGlzdGVuZXIuamF2YQpAQCAtOCw3ICs4LDcgQEAKIC0tIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgIC0tCiAtLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlICAtLQogLS0gdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCAgICAgLS0KLS0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICovCiAKZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnZhbGlkYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3ZhbGlkYXRvci9tYW5hZ2Vycy9WYWxpZGF0aW9uRGVsZWdhdGVDbGllbnRTZWxlY3Rvci5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MudmFsaWRhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdmFsaWRhdG9yL21hbmFnZXJzL1ZhbGlkYXRpb25EZWxlZ2F0ZUNsaWVudFNlbGVjdG9yLmphdmEKaW5kZXggNjM2ODViOC4uMTAxYjEwMCAxMDA3NTUKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MudmFsaWRhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdmFsaWRhdG9yL21hbmFnZXJzL1ZhbGlkYXRpb25EZWxlZ2F0ZUNsaWVudFNlbGVjdG9yLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MudmFsaWRhdG9yL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MvdmFsaWRhdG9yL21hbmFnZXJzL1ZhbGlkYXRpb25EZWxlZ2F0ZUNsaWVudFNlbGVjdG9yLmphdmEKQEAgLTEwLDcgKzEwLDcgQEAKIC0tIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgIC0tCiAtLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlICAtLQogLS0gdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCAgICAgLS0KLS0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICovCiBwYWNrYWdlIG9yZy5wb2xhcnN5cy5jaGVzcy52YWxpZGF0b3IubWFuYWdlcnM7CmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy52YWxpZGF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy92YWxpZGF0b3IvbWFuYWdlcnMvVmlld01hbmFnZXIuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnZhbGlkYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3ZhbGlkYXRvci9tYW5hZ2Vycy9WaWV3TWFuYWdlci5qYXZhCmluZGV4IGQxOGMyMjcuLjhjMWZkMDcgMTAwNzU1Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnZhbGlkYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3ZhbGlkYXRvci9tYW5hZ2Vycy9WaWV3TWFuYWdlci5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnZhbGlkYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3ZhbGlkYXRvci9tYW5hZ2Vycy9WaWV3TWFuYWdlci5qYXZhCkBAIC0xMCw3ICsxMCw3IEBACiAtLSBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzICAtLQogLS0gYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAgLS0KIC0tIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgICAgIC0tCi0tLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqLwogCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy52YWxpZGF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy92YWxpZGF0b3IvbWVzc2FnZXMvTWVzc2FnZXMuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnZhbGlkYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3ZhbGlkYXRvci9tZXNzYWdlcy9NZXNzYWdlcy5qYXZhCmluZGV4IDQ2ZjgzMjMuLjdmOTJkNzYgMTAwNzU1Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnZhbGlkYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3ZhbGlkYXRvci9tZXNzYWdlcy9NZXNzYWdlcy5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnZhbGlkYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3ZhbGlkYXRvci9tZXNzYWdlcy9NZXNzYWdlcy5qYXZhCkBAIC0xMCw3ICsxMCw3IEBACiAtLSBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzICAtLQogLS0gYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAgLS0KIC0tIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgICAgIC0tCi0tLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqLwogCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy52YWxpZGF0b3Ivc3JjL29yZy9wb2xhcnN5cy9jaGVzcy92YWxpZGF0b3IvbWVzc2FnZXMvbWVzc2FnZXMucHJvcGVydGllcyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnZhbGlkYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3ZhbGlkYXRvci9tZXNzYWdlcy9tZXNzYWdlcy5wcm9wZXJ0aWVzCmluZGV4IGMxOGQ1MWUuLmI5ZmNkZmMgMTAwNzU1Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnZhbGlkYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3ZhbGlkYXRvci9tZXNzYWdlcy9tZXNzYWdlcy5wcm9wZXJ0aWVzCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnZhbGlkYXRvci9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3ZhbGlkYXRvci9tZXNzYWdlcy9tZXNzYWdlcy5wcm9wZXJ0aWVzCkBAIC0xLDE0ICsxLDIxIEBACi1lcnJvcl9kaWFncmFtSW5WaWV3PURpYWdyYW1zIG11c3QgYmUgY3JlYXRlZCBpbnNpZGUgdGhlIHZpZXdzCi1lcnJvcl9kaWFncmFtQ3VycmVudFZpZXc9VGhpcyBkaWFncmFtIGlzIG5vdCBhbGxvd2VkIGluIHRoZSBjdXJyZW50IHZpZXcKLU51bGxWaWV3TXNnPUNhbid0IG1vZGlmeSB0aGUgbW9kZWwgb3V0c2lkZSB0aGUgdmlld3MKLU1vZGVsTWFuYWdlcl8xPURlbGV0aW5nIGEgdmlldyBpcyBmb3JiaWRkZW4uCi1WaWV3RGVsZXRpb25Nc2c9Q2FuJ3QgZGVsZXRlIHZpZXcgZnJvbSB0aGUgbW9kZWxcIQotTW9kZWxNYW5hZ2VyXzI9TW9kZWwgcm9vdCBtdXN0IGNvbnRhaW5zIG9ubHkgdGhlIHZpZXdzLgotTW9kZWxNYW5hZ2VyXzM9QXBwbGluZyBhIHZpZXcgc3RlcmVvdHlwZSBpcyBmb3JiaWRkZW4uCi1Nb2RlbE1hbmFnZXJfND1DcmVhdGlvbiBvZiBpbnRlcmZhY2VzIGlzIG9ubHkgYWxsb3dlZCBpbiB0aGUgRnVuY3Rpb25hbCBWaWV3LgotTW9kZWxNYW5hZ2VyXzU9Q3JlYXRpb24gb2YgY29tcG9uZW50IHdpdGggbm8gYWRkaXRpb25hbCBzdGVyZW90eXBlcyBpcyBvbmx5IGFsbG93ZWQgaW4gdGhlIEZ1bmN0aW9uYWwgVmlldy4KLU1vZGVsTWFuYWdlcl82PU9wZXJhdGlvbnMgaW4gdGhlIEZ1bmN0aW9uYWwgVmlldyBtdXN0IGhhdmUgcHVibGljIHZpc2liaWxpdHkuCi1Nb2RlbE1hbmFnZXJfNz1JbnRlcmZhY2UgcmVhbGl6YXRpb24gaXMgbm90IGFsbG93ZWQgYmVjYXVzZSBvd25lZCBvcGVyYXRpb25zIGRvZXMgbm90IG1hdGNoLgotTW9kZWxNYW5hZ2VyXzg9VGhpcyBlbGVtZW50IGRvZXMgbm90IGJlbG9uZyB0byB0aGUgY3VycmVudCB2aWV3IGFuZCBjYW5ub3QgYmUgdGhlcmVmb3JlIG1vZGlmaWVkLgotTW9kZWxNYW5hZ2VyXzk9QSBwcmVkZWZpbmVkIHN0ZXJlb3R5cGUgY2Fubm90IGJlIHJlbW92ZWQuCi1vcGVyYXRpb25BYm9ydGVkPU9wZXJhdGlvbiBhYm9ydGVkIGJ5IHRoZSB1c2VyCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKyMgQ29weXJpZ2h0IChDKSAyMDIwIA0KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyMgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wDQorIyB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyMgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwNCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK2Vycm9yX2RpYWdyYW1JblZpZXc9RGlhZ3JhbXMgbXVzdCBiZSBjcmVhdGVkIGluc2lkZSB0aGUgdmlld3MNCitlcnJvcl9kaWFncmFtQ3VycmVudFZpZXc9VGhpcyBkaWFncmFtIGlzIG5vdCBhbGxvd2VkIGluIHRoZSBjdXJyZW50IHZpZXcNCitOdWxsVmlld01zZz1DYW4ndCBtb2RpZnkgdGhlIG1vZGVsIG91dHNpZGUgdGhlIHZpZXdzDQorTW9kZWxNYW5hZ2VyXzE9RGVsZXRpbmcgYSB2aWV3IGlzIGZvcmJpZGRlbi4NCitWaWV3RGVsZXRpb25Nc2c9Q2FuJ3QgZGVsZXRlIHZpZXcgZnJvbSB0aGUgbW9kZWxcIQ0KK01vZGVsTWFuYWdlcl8yPU1vZGVsIHJvb3QgbXVzdCBjb250YWlucyBvbmx5IHRoZSB2aWV3cy4NCitNb2RlbE1hbmFnZXJfMz1BcHBsaW5nIGEgdmlldyBzdGVyZW90eXBlIGlzIGZvcmJpZGRlbi4NCitNb2RlbE1hbmFnZXJfND1DcmVhdGlvbiBvZiBpbnRlcmZhY2VzIGlzIG9ubHkgYWxsb3dlZCBpbiB0aGUgRnVuY3Rpb25hbCBWaWV3Lg0KK01vZGVsTWFuYWdlcl81PUNyZWF0aW9uIG9mIGNvbXBvbmVudCB3aXRoIG5vIGFkZGl0aW9uYWwgc3RlcmVvdHlwZXMgaXMgb25seSBhbGxvd2VkIGluIHRoZSBGdW5jdGlvbmFsIFZpZXcuDQorTW9kZWxNYW5hZ2VyXzY9T3BlcmF0aW9ucyBpbiB0aGUgRnVuY3Rpb25hbCBWaWV3IG11c3QgaGF2ZSBwdWJsaWMgdmlzaWJpbGl0eS4NCitNb2RlbE1hbmFnZXJfNz1JbnRlcmZhY2UgcmVhbGl6YXRpb24gaXMgbm90IGFsbG93ZWQgYmVjYXVzZSBvd25lZCBvcGVyYXRpb25zIGRvZXMgbm90IG1hdGNoLg0KK01vZGVsTWFuYWdlcl84PVRoaXMgZWxlbWVudCBkb2VzIG5vdCBiZWxvbmcgdG8gdGhlIGN1cnJlbnQgdmlldyBhbmQgY2Fubm90IGJlIHRoZXJlZm9yZSBtb2RpZmllZC4NCitNb2RlbE1hbmFnZXJfOT1BIHByZWRlZmluZWQgc3RlcmVvdHlwZSBjYW5ub3QgYmUgcmVtb3ZlZC4NCitvcGVyYXRpb25BYm9ydGVkPU9wZXJhdGlvbiBhYm9ydGVkIGJ5IHRoZSB1c2VyDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3Mud2l6YXJkcy9hYm91dC5odG1sIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3Mud2l6YXJkcy9hYm91dC5odG1sCmluZGV4IGRkM2MwODkuLjE2NGY3ODEgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLndpemFyZHMvYWJvdXQuaHRtbAorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy53aXphcmRzL2Fib3V0Lmh0bWwKQEAgLTIsMjcgKzIsMzUgQEAKICAgICAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+CiA8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+CiA8aGVhZD4KLTxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiLz4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiIC8+CiA8dGl0bGU+QWJvdXQ8L3RpdGxlPgogPC9oZWFkPgogPGJvZHkgbGFuZz0iRU4tVVMiPgotPGgyPkFib3V0IFRoaXMgQ29udGVudDwvaDI+Ci0gCi08cD5Ob3ZlbWJlciAxNCwgMjAwODwvcD4JCi08aDM+TGljZW5zZTwvaDM+CisJPGgyPkFib3V0IFRoaXMgQ29udGVudDwvaDI+CiAKLTxwPlRoZSBFY2xpcHNlIEZvdW5kYXRpb24gbWFrZXMgYXZhaWxhYmxlIGFsbCBjb250ZW50IGluIHRoaXMgcGx1Zy1pbiAoJnF1b3Q7Q29udGVudCZxdW90OykuICBVbmxlc3Mgb3RoZXJ3aXNlIAotaW5kaWNhdGVkIGJlbG93LCB0aGUgQ29udGVudCBpcyBwcm92aWRlZCB0byB5b3UgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZQotRWNsaXBzZSBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDEuMCAoJnF1b3Q7RVBMJnF1b3Q7KS4gIEEgY29weSBvZiB0aGUgRVBMIGlzIGF2YWlsYWJsZSAKLWF0IDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbDwvYT4uCi1Gb3IgcHVycG9zZXMgb2YgdGhlIEVQTCwgJnF1b3Q7UHJvZ3JhbSZxdW90OyB3aWxsIG1lYW4gdGhlIENvbnRlbnQuPC9wPgorCTxwPk5vdmVtYmVyIDMwLCAyMDE3PC9wPgorCTxoMz5MaWNlbnNlPC9oMz4KIAotPHA+SWYgeW91IGRpZCBub3QgcmVjZWl2ZSB0aGlzIENvbnRlbnQgZGlyZWN0bHkgZnJvbSB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uLCB0aGUgQ29udGVudCBpcyAKLWJlaW5nIHJlZGlzdHJpYnV0ZWQgYnkgYW5vdGhlciBwYXJ0eSAoJnF1b3Q7UmVkaXN0cmlidXRvciZxdW90OykgYW5kIGRpZmZlcmVudCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBtYXkKLWFwcGx5IHRvIHlvdXIgdXNlIG9mIGFueSBvYmplY3QgY29kZSBpbiB0aGUgQ29udGVudC4gIENoZWNrIHRoZSBSZWRpc3RyaWJ1dG9yJ3MgbGljZW5zZSB0aGF0IHdhcyAKLXByb3ZpZGVkIHdpdGggdGhlIENvbnRlbnQuICBJZiBubyBzdWNoIGxpY2Vuc2UgZXhpc3RzLCBjb250YWN0IHRoZSBSZWRpc3RyaWJ1dG9yLiAgVW5sZXNzIG90aGVyd2lzZQotaW5kaWNhdGVkIGJlbG93LCB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVQTCBzdGlsbCBhcHBseSB0byBhbnkgc291cmNlIGNvZGUgaW4gdGhlIENvbnRlbnQKLWFuZCBzdWNoIHNvdXJjZSBjb2RlIG1heSBiZSBvYnRhaW5lZCBhdCA8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnPC9hPi48L3A+CisJPHA+CisJCVRoZSBFY2xpcHNlIEZvdW5kYXRpb24gbWFrZXMgYXZhaWxhYmxlIGFsbCBjb250ZW50IGluIHRoaXMgcGx1Zy1pbgorCQkoJnF1b3Q7Q29udGVudCZxdW90OykuIFVubGVzcyBvdGhlcndpc2UgaW5kaWNhdGVkIGJlbG93LCB0aGUgQ29udGVudAorCQlpcyBwcm92aWRlZCB0byB5b3UgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFY2xpcHNlCisJCVB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMi4wICgmcXVvdDtFUEwmcXVvdDspLiBBIGNvcHkgb2YgdGhlIEVQTCBpcworCQlhdmFpbGFibGUgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjA8L2E+LgorCQlGb3IgcHVycG9zZXMgb2YgdGhlIEVQTCwgJnF1b3Q7UHJvZ3JhbSZxdW90OyB3aWxsIG1lYW4gdGhlIENvbnRlbnQuCisJPC9wPgorCisJPHA+CisJCUlmIHlvdSBkaWQgbm90IHJlY2VpdmUgdGhpcyBDb250ZW50IGRpcmVjdGx5IGZyb20gdGhlIEVjbGlwc2UKKwkJRm91bmRhdGlvbiwgdGhlIENvbnRlbnQgaXMgYmVpbmcgcmVkaXN0cmlidXRlZCBieSBhbm90aGVyIHBhcnR5CisJCSgmcXVvdDtSZWRpc3RyaWJ1dG9yJnF1b3Q7KSBhbmQgZGlmZmVyZW50IHRlcm1zIGFuZCBjb25kaXRpb25zIG1heQorCQlhcHBseSB0byB5b3VyIHVzZSBvZiBhbnkgb2JqZWN0IGNvZGUgaW4gdGhlIENvbnRlbnQuIENoZWNrIHRoZQorCQlSZWRpc3RyaWJ1dG9yJ3MgbGljZW5zZSB0aGF0IHdhcyBwcm92aWRlZCB3aXRoIHRoZSBDb250ZW50LiBJZiBubyBzdWNoCisJCWxpY2Vuc2UgZXhpc3RzLCBjb250YWN0IHRoZSBSZWRpc3RyaWJ1dG9yLiBVbmxlc3Mgb3RoZXJ3aXNlIGluZGljYXRlZAorCQliZWxvdywgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFUEwgc3RpbGwgYXBwbHkgdG8gYW55IHNvdXJjZQorCQljb2RlIGluIHRoZSBDb250ZW50IGFuZCBzdWNoIHNvdXJjZSBjb2RlIG1heSBiZSBvYnRhaW5lZCBhdCA8YQorCQkJaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy8iPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmc8L2E+LgorCTwvcD4KIAogPC9ib2R5PgogPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLndpemFyZHMvcGx1Z2luLnByb3BlcnRpZXMgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy53aXphcmRzL3BsdWdpbi5wcm9wZXJ0aWVzCmluZGV4IDBiNGE1MjMuLjBhNDRlODcgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLndpemFyZHMvcGx1Z2luLnByb3BlcnRpZXMKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3Mud2l6YXJkcy9wbHVnaW4ucHJvcGVydGllcwpAQCAtMSw5ICsxLDkgQEAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgQ29weXJpZ2h0IChjKSAyMDA4IE9iZW8uCiAjIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgCi0jIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorIyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAKICMgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSMgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyMgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwKICMgCiAjIENvbnRyaWJ1dG9yczoKICMgICAgIE9iZW8gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLndpemFyZHMvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy93aXphcmRzL0FjdGl2YXRvci5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3Mud2l6YXJkcy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3dpemFyZHMvQWN0aXZhdG9yLmphdmEKaW5kZXggZjQ5MmQ4NS4uZjFiYThlNSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3Mud2l6YXJkcy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3dpemFyZHMvQWN0aXZhdG9yLmphdmEKKysrIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3Mud2l6YXJkcy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3dpemFyZHMvQWN0aXZhdG9yLmphdmEKQEAgLTEwLDcgKzEwLDcgQEAKIC0tIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgIC0tCiAtLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlICAtLQogLS0gdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCAgICAgLS0KLS0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICovcGFja2FnZSBvcmcucG9sYXJzeXMuY2hlc3Mud2l6YXJkczsKIApkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3Mud2l6YXJkcy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3dpemFyZHMvcHJvdmlkZXJzL1dvcmtzcGFjZU5ld01vZGVsU3RvcmFnZVByb3ZpZGVyLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy53aXphcmRzL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3Mvd2l6YXJkcy9wcm92aWRlcnMvV29ya3NwYWNlTmV3TW9kZWxTdG9yYWdlUHJvdmlkZXIuamF2YQppbmRleCBjMGE2YWMwLi41M2IzMWZhIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy53aXphcmRzL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3Mvd2l6YXJkcy9wcm92aWRlcnMvV29ya3NwYWNlTmV3TW9kZWxTdG9yYWdlUHJvdmlkZXIuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy53aXphcmRzL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3Mvd2l6YXJkcy9wcm92aWRlcnMvV29ya3NwYWNlTmV3TW9kZWxTdG9yYWdlUHJvdmlkZXIuamF2YQpAQCAtMSwxNzMgKzEsMTgwIEBACi1wYWNrYWdlIG9yZy5wb2xhcnN5cy5jaGVzcy53aXphcmRzLnByb3ZpZGVyczsKLQotaW1wb3J0IHN0YXRpYyBvcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLndpemFyZHMudXRpbHMuV2l6YXJkc0hlbHBlci5hZGFwdDsKLQotaW1wb3J0IGphdmEudXRpbC5BcnJheXM7Ci1pbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb25zOwotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSUZpbGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVJlc291cmNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLlJlc291cmNlc1BsdWdpbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuUGF0aDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuU3RhdHVzOwotaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24udWkuVVJJRWRpdG9ySW5wdXQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLlVSSTsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLklTdHJ1Y3R1cmVkU2VsZWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLndpemFyZC5JV2l6YXJkUGFnZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLndpemFyZHMucGFnZXMuTmV3TW9kZWxGaWxlUGFnZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLndpemFyZHMudXRpbHMuV2l6YXJkc0hlbHBlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS51aS5JRWRpdG9ySW5wdXQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudWkucGFydC5GaWxlRWRpdG9ySW5wdXQ7Ci1pbXBvcnQgb3JnLnBvbGFyc3lzLmNoZXNzLndpemFyZHMud2l6YXJkcy5DcmVhdGVDSEVTU01vZGVsV2l6YXJkOwotaW1wb3J0IG9yZy5wb2xhcnN5cy5jaGVzcy53aXphcmRzLndpemFyZHMuSW5pdE1vZGVsV2l6YXJkLk5ld0RpYWdyYW1Gb3JFeGlzdGluZ01vZGVsUGFnZTsKLQotLyoqCi0gKiBUaGUgQ2xhc3MgV29ya3NwYWNlTmV3TW9kZWxTdG9yYWdlUHJvdmlkZXIuCi0gKi8KLXB1YmxpYyBjbGFzcyBXb3Jrc3BhY2VOZXdNb2RlbFN0b3JhZ2VQcm92aWRlciB7Ci0KLQkvKiogVGhlIHdpemFyZC4gKi8KLQlwcml2YXRlIENyZWF0ZUNIRVNTTW9kZWxXaXphcmQgd2l6YXJkOwotCi0JLyoqIFRoZSBuZXcgbW9kZWwgZmlsZSBwYWdlLiAqLwotCXByaXZhdGUgTmV3TW9kZWxGaWxlUGFnZSBuZXdNb2RlbEZpbGVQYWdlOwotCi0JLyoqCi0JICogSW5zdGFudGlhdGVzIGEgbmV3IHdvcmtzcGFjZSBuZXcgbW9kZWwgc3RvcmFnZSBwcm92aWRlci4KLQkgKi8KLQlwdWJsaWMgV29ya3NwYWNlTmV3TW9kZWxTdG9yYWdlUHJvdmlkZXIoKSB7Ci0JCXN1cGVyKCk7Ci0JfQotCi0JLyoqCi0JICogQ2hlY2tzIGlmIHRoZSBXb3Jrc3BhY2VOZXdNb2RlbFN0b3JhZ2VQcm92aWRlciBjYW4gaGFuZGxlIHRoZSBzdHJ1Y3R1cmVkIHNlbGVjdGlvbiBpbiBpbnB1dAotCSAqCi0JICogQHBhcmFtIGluaXRpYWxTZWxlY3Rpb24gdGhlIGluaXRpYWwgc3RydWN0dXJlZCBzZWxlY3Rpb24KLQkgKiBAcmV0dXJuIHRydWUsIGlmIHN1Y2Nlc3NmdWwKLQkgKi8KLQlwdWJsaWMgYm9vbGVhbiBjYW5IYW5kbGUoSVN0cnVjdHVyZWRTZWxlY3Rpb24gaW5pdGlhbFNlbGVjdGlvbikgewotCQlib29sZWFuIHJlc3VsdCA9IGZhbHNlOwotCi0JCWZvcihPYmplY3QgbmV4dCA6IGluaXRpYWxTZWxlY3Rpb24udG9MaXN0KCkpIHsKLQkJCWlmKGFkYXB0KG5leHQsIElSZXNvdXJjZS5jbGFzcykgIT0gbnVsbCkgewotCQkJCXJlc3VsdCA9IHRydWU7Ci0JCQkJYnJlYWs7Ci0JCQl9Ci0JCX0KLQotCQlyZXR1cm4gcmVzdWx0OwotCX0KLQotCS8qKgotCSAqIEluaXRpYWxpemVzIHRoZSB3aXphcmQuCi0JICoKLQkgKiBAcGFyYW0gd2l6YXJkIHRoZSB3aXphcmQKLQkgKiBAcGFyYW0gc2VsZWN0aW9uIHRoZSBzZWxlY3Rpb24KLQkgKi8KLQlwdWJsaWMgdm9pZCBpbml0KENyZWF0ZUNIRVNTTW9kZWxXaXphcmQgd2l6YXJkLCBJU3RydWN0dXJlZFNlbGVjdGlvbiBzZWxlY3Rpb24pIHsKLQkJdGhpcy53aXphcmQgPSB3aXphcmQ7Ci0JCW5ld01vZGVsRmlsZVBhZ2UgPSBjcmVhdGVOZXdNb2RlbEZpbGVQYWdlKHNlbGVjdGlvbik7Ci0JfQotCi0JLyoqCi0JICogQ3JlYXRlcyB0aGUgd2l6YXJkIHBhZ2VzLgotCSAqCi0JICogQHJldHVybiB0aGUgbGlzdCBvZiB3aXphcmRzIHBhZ2VzCi0JICovCi0JcHVibGljIExpc3Q8PyBleHRlbmRzIElXaXphcmRQYWdlPiBjcmVhdGVQYWdlcygpIHsKLQkJaWYobmV3TW9kZWxGaWxlUGFnZSA9PSBudWxsKSB7Ci0JCQlyZXR1cm4gQ29sbGVjdGlvbnMuZW1wdHlMaXN0KCk7Ci0JCX0KLQotCQlyZXR1cm4gQXJyYXlzLmFzTGlzdChuZXdNb2RlbEZpbGVQYWdlKTsKLQl9Ci0KLQkvKioKLQkgKiBWYWxpZGF0ZXMgdGhlIGRpYWdyYW0gY2F0ZWdvcmllcy4KLQkgKgotCSAqIEBwYXJhbSBuZXdDYXRlZ29yaWVzIHRoZSBuZXcgY2F0ZWdvcmllcwotCSAqIEByZXR1cm4gdGhlIHN0YXR1cyBvZiB0aGUgdmFsaWRhdGlvbgotCSAqLwotCXB1YmxpYyBJU3RhdHVzIHZhbGlkYXRlRGlhZ3JhbUNhdGVnb3JpZXMoU3RyaW5nLi4uIG5ld0NhdGVnb3JpZXMpIHsKLQkJaWYobmV3TW9kZWxGaWxlUGFnZSAhPSBudWxsKSB7Ci0JCQlTdHJpbmcgZmlyc3RDYXRlZ29yeSA9IG5ld0NhdGVnb3JpZXMubGVuZ3RoID4gMCA/IG5ld0NhdGVnb3JpZXNbMF0gOiBudWxsOwotCQkJaWYobmV3Q2F0ZWdvcmllcy5sZW5ndGggPiAwKSB7Ci0JCQkJcmV0dXJuIG5ld01vZGVsRmlsZVBhZ2UuZGlhZ3JhbUV4dGVuc2lvbkNoYW5nZWQod2l6YXJkLmdldERpYWdyYW1GaWxlRXh0ZW5zaW9uKGZpcnN0Q2F0ZWdvcnkpKTsKLQkJCX0KLQkJfQotCi0JCXJldHVybiBTdGF0dXMuT0tfU1RBVFVTOwotCX0KLQotCi0JLyoqCi0JICogQ3JlYXRlcyB0aGUgbmV3IG1vZGVsIGZpbGUgcGFnZS4KLQkgKgotCSAqIEBwYXJhbSBzZWxlY3Rpb24gdGhlIGN1cnJlbnQgc3RydWN0dXJlZCBzZWxlY3Rpb24KLQkgKiBAcmV0dXJuIHRoZSBuZXcgbW9kZWwgZmlsZSBwYWdlCi0JICovCi0JcHJvdGVjdGVkIE5ld01vZGVsRmlsZVBhZ2UgY3JlYXRlTmV3TW9kZWxGaWxlUGFnZShJU3RydWN0dXJlZFNlbGVjdGlvbiBzZWxlY3Rpb24pIHsKLQotCQlpZih3aXphcmQuaXNDcmVhdGVQcm9qZWN0V2l6YXJkKCkgfHwgd2l6YXJkLmlzQ3JlYXRlTXVsdGlwbGVNb2RlbHNXaXphcmQoKSkgewotCi0JCQlyZXR1cm4gbnVsbDsKLQkJfQotCi0JCS8vCQlJRmlsZSBzZWxlY3RlZEZpbGUgPSBnZXRTZWxlY3RlZEZpbGUoc2VsZWN0aW9uKTsKLQkJVVJJIHNlbGVjdGVkUmVzb3VyY2VVUkkgPSBXaXphcmRzSGVscGVyLmdldFNlbGVjdGVkUmVzb3VyY2VVUkkoc2VsZWN0aW9uKTsKLQotCQlpZihpc0NyZWF0ZUZyb21FeGlzdGluZ0RvbWFpbk1vZGVsKCkgJiYgc2VsZWN0ZWRSZXNvdXJjZVVSSSAhPSBudWxsKSB7Ci0JCQlyZXR1cm4gbmV3IE5ld0RpYWdyYW1Gb3JFeGlzdGluZ01vZGVsUGFnZShzZWxlY3Rpb24sIHdpemFyZC5nZXRNb2RlbEtpbmROYW1lKCksIGdldERpYWdyYW1GaWxlTmFtZShzZWxlY3RlZFJlc291cmNlVVJJKSArICIuIiArIHdpemFyZC5nZXREaWFncmFtRmlsZUV4dGVuc2lvbihudWxsKSwgd2l6YXJkLmdldERpYWdyYW1GaWxlRXh0ZW5zaW9uKG51bGwpKTsgLy8kTk9OLU5MUy0xJAotCQl9Ci0KLQkJcmV0dXJuIG5ldyBOZXdNb2RlbEZpbGVQYWdlKHNlbGVjdGlvbiwgd2l6YXJkLmdldE1vZGVsS2luZE5hbWUoKSk7Ci0JfQotCi0JLyoqCi0JICogR2V0cyB0aGUgZGlhZ3JhbSBmaWxlIG5hbWUuCi0JICoKLQkgKiBAcGFyYW0gZG9tYWluTW9kZWxVUkkgdGhlIGRvbWFpbiBtb2RlbCBVUkkKLQkgKiBAcmV0dXJuIHRoZSBkaWFncmFtIGZpbGUgbmFtZQotCSAqLwotCXByb3RlY3RlZCBTdHJpbmcgZ2V0RGlhZ3JhbUZpbGVOYW1lKFVSSSBkb21haW5Nb2RlbFVSSSkgewotCQlyZXR1cm4gZG9tYWluTW9kZWxVUkkudHJpbUZpbGVFeHRlbnNpb24oKS5sYXN0U2VnbWVudCgpOwotCX0KLQotCS8qKgotCSAqIENoZWNrcyBpZiB0aGUgd2l6YXJkcyBjcmVhdGVzIHRoZSBmcm9tIGV4aXN0aW5nIGRvbWFpbiBtb2RlbC4KLQkgKgotCSAqIEByZXR1cm4gZmFsc2UKLQkgKi8KLQlwcm90ZWN0ZWQgYm9vbGVhbiBpc0NyZWF0ZUZyb21FeGlzdGluZ0RvbWFpbk1vZGVsKCkgewotCQlyZXR1cm4gZmFsc2U7Ci0JfQotCi0JLyoqCi0JICogQ3JlYXRlcyB0aGUgbmV3IG1vZGVsIFVSSQotCSAqCi0JICogQHBhcmFtIGNhdGVnb3J5SWQgdGhlIGNhdGVnb3J5IGlkCi0JICogQHJldHVybiB0aGUgVVJJCi0JICovCi0JcHVibGljIFVSSSBjcmVhdGVOZXdNb2RlbFVSSShTdHJpbmcgY2F0ZWdvcnlJZCkgewotCQlJRmlsZSBuZXdGaWxlID0gbmV3TW9kZWxGaWxlUGFnZS5jcmVhdGVOZXdGaWxlKCk7Ci0JCXJldHVybiAobmV3RmlsZSA9PSBudWxsKSA/IG51bGwgOiBVUkkuY3JlYXRlUGxhdGZvcm1SZXNvdXJjZVVSSShuZXdGaWxlLmdldEZ1bGxQYXRoKCkudG9TdHJpbmcoKSwgdHJ1ZSk7Ci0JfQotCQotCS8qKgotCSAqIENyZWF0ZXMgdGhlIGVkaXRvciBpbnB1dC4KLQkgKgotCSAqIEBwYXJhbSB1cmkgdGhlIFVSSQotCSAqIEByZXR1cm4gdGhlIGVkaXRvciBpbnB1dAotCSAqLwotCXB1YmxpYyBJRWRpdG9ySW5wdXQgY3JlYXRlRWRpdG9ySW5wdXQoVVJJIHVyaSkgewotCQlpZiAodXJpLmlzUGxhdGZvcm1SZXNvdXJjZSgpKSB7Ci0JCQlyZXR1cm4gbmV3IEZpbGVFZGl0b3JJbnB1dChSZXNvdXJjZXNQbHVnaW4uZ2V0V29ya3NwYWNlKCkuZ2V0Um9vdCgpCi0JCQkJLmdldEZpbGUobmV3IFBhdGgodXJpLnRvUGxhdGZvcm1TdHJpbmcodHJ1ZSkpKSk7Ci0JCX0gZWxzZSB7Ci0JCQlyZXR1cm4gbmV3IFVSSUVkaXRvcklucHV0KHVyaSk7Ci0JCX0KLQl9Ci0KLX0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICogQ29weXJpZ2h0IChDKSAyMDIwIA0KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjANCisgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sDQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCitwYWNrYWdlIG9yZy5wb2xhcnN5cy5jaGVzcy53aXphcmRzLnByb3ZpZGVyczsNCisNCitpbXBvcnQgc3RhdGljIG9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0ud2l6YXJkcy51dGlscy5XaXphcmRzSGVscGVyLmFkYXB0Ow0KKw0KK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlzOw0KK2ltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbnM7DQoraW1wb3J0IGphdmEudXRpbC5MaXN0Ow0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JRmlsZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVJlc291cmNlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5SZXNvdXJjZXNQbHVnaW47DQoraW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JU3RhdHVzOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuUGF0aDsNCitpbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlN0YXR1czsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51aS5VUklFZGl0b3JJbnB1dDsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLlVSSTsNCitpbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5JU3RydWN0dXJlZFNlbGVjdGlvbjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uud2l6YXJkLklXaXphcmRQYWdlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLndpemFyZHMucGFnZXMuTmV3TW9kZWxGaWxlUGFnZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS53aXphcmRzLnV0aWxzLldpemFyZHNIZWxwZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnVpLklFZGl0b3JJbnB1dDsNCitpbXBvcnQgb3JnLmVjbGlwc2UudWkucGFydC5GaWxlRWRpdG9ySW5wdXQ7DQoraW1wb3J0IG9yZy5wb2xhcnN5cy5jaGVzcy53aXphcmRzLndpemFyZHMuQ3JlYXRlQ0hFU1NNb2RlbFdpemFyZDsNCitpbXBvcnQgb3JnLnBvbGFyc3lzLmNoZXNzLndpemFyZHMud2l6YXJkcy5Jbml0TW9kZWxXaXphcmQuTmV3RGlhZ3JhbUZvckV4aXN0aW5nTW9kZWxQYWdlOw0KKw0KKy8qKg0KKyAqIFRoZSBDbGFzcyBXb3Jrc3BhY2VOZXdNb2RlbFN0b3JhZ2VQcm92aWRlci4NCisgKi8NCitwdWJsaWMgY2xhc3MgV29ya3NwYWNlTmV3TW9kZWxTdG9yYWdlUHJvdmlkZXIgew0KKw0KKwkvKiogVGhlIHdpemFyZC4gKi8NCisJcHJpdmF0ZSBDcmVhdGVDSEVTU01vZGVsV2l6YXJkIHdpemFyZDsNCisNCisJLyoqIFRoZSBuZXcgbW9kZWwgZmlsZSBwYWdlLiAqLw0KKwlwcml2YXRlIE5ld01vZGVsRmlsZVBhZ2UgbmV3TW9kZWxGaWxlUGFnZTsNCisNCisJLyoqDQorCSAqIEluc3RhbnRpYXRlcyBhIG5ldyB3b3Jrc3BhY2UgbmV3IG1vZGVsIHN0b3JhZ2UgcHJvdmlkZXIuDQorCSAqLw0KKwlwdWJsaWMgV29ya3NwYWNlTmV3TW9kZWxTdG9yYWdlUHJvdmlkZXIoKSB7DQorCQlzdXBlcigpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBDaGVja3MgaWYgdGhlIFdvcmtzcGFjZU5ld01vZGVsU3RvcmFnZVByb3ZpZGVyIGNhbiBoYW5kbGUgdGhlIHN0cnVjdHVyZWQgc2VsZWN0aW9uIGluIGlucHV0DQorCSAqDQorCSAqIEBwYXJhbSBpbml0aWFsU2VsZWN0aW9uIHRoZSBpbml0aWFsIHN0cnVjdHVyZWQgc2VsZWN0aW9uDQorCSAqIEByZXR1cm4gdHJ1ZSwgaWYgc3VjY2Vzc2Z1bA0KKwkgKi8NCisJcHVibGljIGJvb2xlYW4gY2FuSGFuZGxlKElTdHJ1Y3R1cmVkU2VsZWN0aW9uIGluaXRpYWxTZWxlY3Rpb24pIHsNCisJCWJvb2xlYW4gcmVzdWx0ID0gZmFsc2U7DQorDQorCQlmb3IoT2JqZWN0IG5leHQgOiBpbml0aWFsU2VsZWN0aW9uLnRvTGlzdCgpKSB7DQorCQkJaWYoYWRhcHQobmV4dCwgSVJlc291cmNlLmNsYXNzKSAhPSBudWxsKSB7DQorCQkJCXJlc3VsdCA9IHRydWU7DQorCQkJCWJyZWFrOw0KKwkJCX0NCisJCX0NCisNCisJCXJldHVybiByZXN1bHQ7DQorCX0NCisNCisJLyoqDQorCSAqIEluaXRpYWxpemVzIHRoZSB3aXphcmQuDQorCSAqDQorCSAqIEBwYXJhbSB3aXphcmQgdGhlIHdpemFyZA0KKwkgKiBAcGFyYW0gc2VsZWN0aW9uIHRoZSBzZWxlY3Rpb24NCisJICovDQorCXB1YmxpYyB2b2lkIGluaXQoQ3JlYXRlQ0hFU1NNb2RlbFdpemFyZCB3aXphcmQsIElTdHJ1Y3R1cmVkU2VsZWN0aW9uIHNlbGVjdGlvbikgew0KKwkJdGhpcy53aXphcmQgPSB3aXphcmQ7DQorCQluZXdNb2RlbEZpbGVQYWdlID0gY3JlYXRlTmV3TW9kZWxGaWxlUGFnZShzZWxlY3Rpb24pOw0KKwl9DQorDQorCS8qKg0KKwkgKiBDcmVhdGVzIHRoZSB3aXphcmQgcGFnZXMuDQorCSAqDQorCSAqIEByZXR1cm4gdGhlIGxpc3Qgb2Ygd2l6YXJkcyBwYWdlcw0KKwkgKi8NCisJcHVibGljIExpc3Q8PyBleHRlbmRzIElXaXphcmRQYWdlPiBjcmVhdGVQYWdlcygpIHsNCisJCWlmKG5ld01vZGVsRmlsZVBhZ2UgPT0gbnVsbCkgew0KKwkJCXJldHVybiBDb2xsZWN0aW9ucy5lbXB0eUxpc3QoKTsNCisJCX0NCisNCisJCXJldHVybiBBcnJheXMuYXNMaXN0KG5ld01vZGVsRmlsZVBhZ2UpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBWYWxpZGF0ZXMgdGhlIGRpYWdyYW0gY2F0ZWdvcmllcy4NCisJICoNCisJICogQHBhcmFtIG5ld0NhdGVnb3JpZXMgdGhlIG5ldyBjYXRlZ29yaWVzDQorCSAqIEByZXR1cm4gdGhlIHN0YXR1cyBvZiB0aGUgdmFsaWRhdGlvbg0KKwkgKi8NCisJcHVibGljIElTdGF0dXMgdmFsaWRhdGVEaWFncmFtQ2F0ZWdvcmllcyhTdHJpbmcuLi4gbmV3Q2F0ZWdvcmllcykgew0KKwkJaWYobmV3TW9kZWxGaWxlUGFnZSAhPSBudWxsKSB7DQorCQkJU3RyaW5nIGZpcnN0Q2F0ZWdvcnkgPSBuZXdDYXRlZ29yaWVzLmxlbmd0aCA+IDAgPyBuZXdDYXRlZ29yaWVzWzBdIDogbnVsbDsNCisJCQlpZihuZXdDYXRlZ29yaWVzLmxlbmd0aCA+IDApIHsNCisJCQkJcmV0dXJuIG5ld01vZGVsRmlsZVBhZ2UuZGlhZ3JhbUV4dGVuc2lvbkNoYW5nZWQod2l6YXJkLmdldERpYWdyYW1GaWxlRXh0ZW5zaW9uKGZpcnN0Q2F0ZWdvcnkpKTsNCisJCQl9DQorCQl9DQorDQorCQlyZXR1cm4gU3RhdHVzLk9LX1NUQVRVUzsNCisJfQ0KKw0KKw0KKwkvKioNCisJICogQ3JlYXRlcyB0aGUgbmV3IG1vZGVsIGZpbGUgcGFnZS4NCisJICoNCisJICogQHBhcmFtIHNlbGVjdGlvbiB0aGUgY3VycmVudCBzdHJ1Y3R1cmVkIHNlbGVjdGlvbg0KKwkgKiBAcmV0dXJuIHRoZSBuZXcgbW9kZWwgZmlsZSBwYWdlDQorCSAqLw0KKwlwcm90ZWN0ZWQgTmV3TW9kZWxGaWxlUGFnZSBjcmVhdGVOZXdNb2RlbEZpbGVQYWdlKElTdHJ1Y3R1cmVkU2VsZWN0aW9uIHNlbGVjdGlvbikgew0KKw0KKwkJaWYod2l6YXJkLmlzQ3JlYXRlUHJvamVjdFdpemFyZCgpIHx8IHdpemFyZC5pc0NyZWF0ZU11bHRpcGxlTW9kZWxzV2l6YXJkKCkpIHsNCisNCisJCQlyZXR1cm4gbnVsbDsNCisJCX0NCisNCisJCS8vCQlJRmlsZSBzZWxlY3RlZEZpbGUgPSBnZXRTZWxlY3RlZEZpbGUoc2VsZWN0aW9uKTsNCisJCVVSSSBzZWxlY3RlZFJlc291cmNlVVJJID0gV2l6YXJkc0hlbHBlci5nZXRTZWxlY3RlZFJlc291cmNlVVJJKHNlbGVjdGlvbik7DQorDQorCQlpZihpc0NyZWF0ZUZyb21FeGlzdGluZ0RvbWFpbk1vZGVsKCkgJiYgc2VsZWN0ZWRSZXNvdXJjZVVSSSAhPSBudWxsKSB7DQorCQkJcmV0dXJuIG5ldyBOZXdEaWFncmFtRm9yRXhpc3RpbmdNb2RlbFBhZ2Uoc2VsZWN0aW9uLCB3aXphcmQuZ2V0TW9kZWxLaW5kTmFtZSgpLCBnZXREaWFncmFtRmlsZU5hbWUoc2VsZWN0ZWRSZXNvdXJjZVVSSSkgKyAiLiIgKyB3aXphcmQuZ2V0RGlhZ3JhbUZpbGVFeHRlbnNpb24obnVsbCksIHdpemFyZC5nZXREaWFncmFtRmlsZUV4dGVuc2lvbihudWxsKSk7IC8vJE5PTi1OTFMtMSQNCisJCX0NCisNCisJCXJldHVybiBuZXcgTmV3TW9kZWxGaWxlUGFnZShzZWxlY3Rpb24sIHdpemFyZC5nZXRNb2RlbEtpbmROYW1lKCkpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBHZXRzIHRoZSBkaWFncmFtIGZpbGUgbmFtZS4NCisJICoNCisJICogQHBhcmFtIGRvbWFpbk1vZGVsVVJJIHRoZSBkb21haW4gbW9kZWwgVVJJDQorCSAqIEByZXR1cm4gdGhlIGRpYWdyYW0gZmlsZSBuYW1lDQorCSAqLw0KKwlwcm90ZWN0ZWQgU3RyaW5nIGdldERpYWdyYW1GaWxlTmFtZShVUkkgZG9tYWluTW9kZWxVUkkpIHsNCisJCXJldHVybiBkb21haW5Nb2RlbFVSSS50cmltRmlsZUV4dGVuc2lvbigpLmxhc3RTZWdtZW50KCk7DQorCX0NCisNCisJLyoqDQorCSAqIENoZWNrcyBpZiB0aGUgd2l6YXJkcyBjcmVhdGVzIHRoZSBmcm9tIGV4aXN0aW5nIGRvbWFpbiBtb2RlbC4NCisJICoNCisJICogQHJldHVybiBmYWxzZQ0KKwkgKi8NCisJcHJvdGVjdGVkIGJvb2xlYW4gaXNDcmVhdGVGcm9tRXhpc3RpbmdEb21haW5Nb2RlbCgpIHsNCisJCXJldHVybiBmYWxzZTsNCisJfQ0KKw0KKwkvKioNCisJICogQ3JlYXRlcyB0aGUgbmV3IG1vZGVsIFVSSQ0KKwkgKg0KKwkgKiBAcGFyYW0gY2F0ZWdvcnlJZCB0aGUgY2F0ZWdvcnkgaWQNCisJICogQHJldHVybiB0aGUgVVJJDQorCSAqLw0KKwlwdWJsaWMgVVJJIGNyZWF0ZU5ld01vZGVsVVJJKFN0cmluZyBjYXRlZ29yeUlkKSB7DQorCQlJRmlsZSBuZXdGaWxlID0gbmV3TW9kZWxGaWxlUGFnZS5jcmVhdGVOZXdGaWxlKCk7DQorCQlyZXR1cm4gKG5ld0ZpbGUgPT0gbnVsbCkgPyBudWxsIDogVVJJLmNyZWF0ZVBsYXRmb3JtUmVzb3VyY2VVUkkobmV3RmlsZS5nZXRGdWxsUGF0aCgpLnRvU3RyaW5nKCksIHRydWUpOw0KKwl9DQorCQ0KKwkvKioNCisJICogQ3JlYXRlcyB0aGUgZWRpdG9yIGlucHV0Lg0KKwkgKg0KKwkgKiBAcGFyYW0gdXJpIHRoZSBVUkkNCisJICogQHJldHVybiB0aGUgZWRpdG9yIGlucHV0DQorCSAqLw0KKwlwdWJsaWMgSUVkaXRvcklucHV0IGNyZWF0ZUVkaXRvcklucHV0KFVSSSB1cmkpIHsNCisJCWlmICh1cmkuaXNQbGF0Zm9ybVJlc291cmNlKCkpIHsNCisJCQlyZXR1cm4gbmV3IEZpbGVFZGl0b3JJbnB1dChSZXNvdXJjZXNQbHVnaW4uZ2V0V29ya3NwYWNlKCkuZ2V0Um9vdCgpDQorCQkJCS5nZXRGaWxlKG5ldyBQYXRoKHVyaS50b1BsYXRmb3JtU3RyaW5nKHRydWUpKSkpOw0KKwkJfSBlbHNlIHsNCisJCQlyZXR1cm4gbmV3IFVSSUVkaXRvcklucHV0KHVyaSk7DQorCQl9DQorCX0NCisNCit9DQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3Mud2l6YXJkcy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3dpemFyZHMvd2l6YXJkcy9DSEVTU05ld1Byb2plY3RXaXphcmQuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLndpemFyZHMvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy93aXphcmRzL3dpemFyZHMvQ0hFU1NOZXdQcm9qZWN0V2l6YXJkLmphdmEKaW5kZXggZTNhZjFhMy4uN2IxYmMzOSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3Mud2l6YXJkcy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3dpemFyZHMvd2l6YXJkcy9DSEVTU05ld1Byb2plY3RXaXphcmQuamF2YQorKysgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy53aXphcmRzL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3Mvd2l6YXJkcy93aXphcmRzL0NIRVNTTmV3UHJvamVjdFdpemFyZC5qYXZhCkBAIC0xMCw3ICsxMCw3IEBACiAtLSBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzICAtLQ0KIC0tIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgIC0tDQogLS0gdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCAgICAgLS0NCi0tLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQ0KKy0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tDQogDQogQ29udHJpYnV0b3I6DQogIFN0ZWZhbm8gUHVyaSAoSW50ZWNzKSAtIHN1cHBvcnQgY3JlYXRpbmcgQ0hFU1MgbW9kZWwNCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy53aXphcmRzL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3Mvd2l6YXJkcy93aXphcmRzL0NyZWF0ZUNIRVNTTW9kZWxXaXphcmQuamF2YSBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLndpemFyZHMvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy93aXphcmRzL3dpemFyZHMvQ3JlYXRlQ0hFU1NNb2RlbFdpemFyZC5qYXZhCmluZGV4IDAxYmRkOWIuLmQ0MGYwMzQgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLndpemFyZHMvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy93aXphcmRzL3dpemFyZHMvQ3JlYXRlQ0hFU1NNb2RlbFdpemFyZC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLndpemFyZHMvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy93aXphcmRzL3dpemFyZHMvQ3JlYXRlQ0hFU1NNb2RlbFdpemFyZC5qYXZhCkBAIC0xMCw3ICsxMCw3IEBACiAtLSBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzICAtLQogLS0gYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAgLS0KIC0tIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgICAgIC0tCi0tLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKICovCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy53aXphcmRzL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3Mvd2l6YXJkcy93aXphcmRzL0luaXRNb2RlbFdpemFyZC5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3Mud2l6YXJkcy9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3dpemFyZHMvd2l6YXJkcy9Jbml0TW9kZWxXaXphcmQuamF2YQppbmRleCBlOGQzYWZjLi42MmZkN2QzIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy53aXphcmRzL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3Mvd2l6YXJkcy93aXphcmRzL0luaXRNb2RlbFdpemFyZC5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLndpemFyZHMvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy93aXphcmRzL3dpemFyZHMvSW5pdE1vZGVsV2l6YXJkLmphdmEKQEAgLTEwLDcgKzEwLDcgQEAKIC0tIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgIC0tCiAtLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlICAtLQogLS0gdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCAgICAgLS0KLS0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogKi8KZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnh0ZXh0Lmdsb2JhbC9hYm91dC5odG1sIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MueHRleHQuZ2xvYmFsL2Fib3V0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTY0Zjc4MQotLS0gL2Rldi9udWxsCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnh0ZXh0Lmdsb2JhbC9hYm91dC5odG1sCkBAIC0wLDAgKzEsMzYgQEAKKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFN0cmljdC8vRU4iCisgICAgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXN0cmljdC5kdGQiPgorPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xIiAvPgorPHRpdGxlPkFib3V0PC90aXRsZT4KKzwvaGVhZD4KKzxib2R5IGxhbmc9IkVOLVVTIj4KKwk8aDI+QWJvdXQgVGhpcyBDb250ZW50PC9oMj4KKworCTxwPk5vdmVtYmVyIDMwLCAyMDE3PC9wPgorCTxoMz5MaWNlbnNlPC9oMz4KKworCTxwPgorCQlUaGUgRWNsaXBzZSBGb3VuZGF0aW9uIG1ha2VzIGF2YWlsYWJsZSBhbGwgY29udGVudCBpbiB0aGlzIHBsdWctaW4KKwkJKCZxdW90O0NvbnRlbnQmcXVvdDspLiBVbmxlc3Mgb3RoZXJ3aXNlIGluZGljYXRlZCBiZWxvdywgdGhlIENvbnRlbnQKKwkJaXMgcHJvdmlkZWQgdG8geW91IHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRWNsaXBzZQorCQlQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDIuMCAoJnF1b3Q7RVBMJnF1b3Q7KS4gQSBjb3B5IG9mIHRoZSBFUEwgaXMKKwkJYXZhaWxhYmxlIGF0IDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMCI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wPC9hPi4KKwkJRm9yIHB1cnBvc2VzIG9mIHRoZSBFUEwsICZxdW90O1Byb2dyYW0mcXVvdDsgd2lsbCBtZWFuIHRoZSBDb250ZW50LgorCTwvcD4KKworCTxwPgorCQlJZiB5b3UgZGlkIG5vdCByZWNlaXZlIHRoaXMgQ29udGVudCBkaXJlY3RseSBmcm9tIHRoZSBFY2xpcHNlCisJCUZvdW5kYXRpb24sIHRoZSBDb250ZW50IGlzIGJlaW5nIHJlZGlzdHJpYnV0ZWQgYnkgYW5vdGhlciBwYXJ0eQorCQkoJnF1b3Q7UmVkaXN0cmlidXRvciZxdW90OykgYW5kIGRpZmZlcmVudCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBtYXkKKwkJYXBwbHkgdG8geW91ciB1c2Ugb2YgYW55IG9iamVjdCBjb2RlIGluIHRoZSBDb250ZW50LiBDaGVjayB0aGUKKwkJUmVkaXN0cmlidXRvcidzIGxpY2Vuc2UgdGhhdCB3YXMgcHJvdmlkZWQgd2l0aCB0aGUgQ29udGVudC4gSWYgbm8gc3VjaAorCQlsaWNlbnNlIGV4aXN0cywgY29udGFjdCB0aGUgUmVkaXN0cmlidXRvci4gVW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQKKwkJYmVsb3csIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRVBMIHN0aWxsIGFwcGx5IHRvIGFueSBzb3VyY2UKKwkJY29kZSBpbiB0aGUgQ29udGVudCBhbmQgc3VjaCBzb3VyY2UgY29kZSBtYXkgYmUgb2J0YWluZWQgYXQgPGEKKwkJCWhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnPC9hPi4KKwk8L3A+CisKKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy54dGV4dC5nbG9iYWwvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy94dGV4dC9nbG9iYWwvQWN0aXZhdG9yLmphdmEgYi9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy54dGV4dC5nbG9iYWwvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy94dGV4dC9nbG9iYWwvQWN0aXZhdG9yLmphdmEKaW5kZXggMWQ5NDBkYi4uZDI2ZWU2ZiAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MueHRleHQuZ2xvYmFsL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MveHRleHQvZ2xvYmFsL0FjdGl2YXRvci5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnh0ZXh0Lmdsb2JhbC9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3h0ZXh0L2dsb2JhbC9BY3RpdmF0b3IuamF2YQpAQCAtMiw5ICsyLDkgQEAKICAtCiAgLSBDb3B5cmlnaHQgKGMpIDIwMTMsIDIwMTUgSW50ZWNzIFNwQSAKICAtIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAtIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorIC0gYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2Mi4wCiAgLSB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotIC0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAtIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sCiAgLQogIC0gQ29udHJpYnV0b3JzOgogIC0gCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy54dGV4dC5nbG9iYWwvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy94dGV4dC9nbG9iYWwvdXRpbHMvWHRleHRVdGlscy5qYXZhIGIvcGx1Z2lucy9vcmcucG9sYXJzeXMuY2hlc3MueHRleHQuZ2xvYmFsL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3MveHRleHQvZ2xvYmFsL3V0aWxzL1h0ZXh0VXRpbHMuamF2YQppbmRleCAxYmQ3MzRlLi5mNDRjZWY3IDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5wb2xhcnN5cy5jaGVzcy54dGV4dC5nbG9iYWwvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy94dGV4dC9nbG9iYWwvdXRpbHMvWHRleHRVdGlscy5qYXZhCisrKyBiL3BsdWdpbnMvb3JnLnBvbGFyc3lzLmNoZXNzLnh0ZXh0Lmdsb2JhbC9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3h0ZXh0L2dsb2JhbC91dGlscy9YdGV4dFV0aWxzLmphdmEKQEAgLTIsOSArMiw5IEBACiAgLQogIC0gQ29weXJpZ2h0IChjKSAyMDEzLCAyMDE1IEludGVjcyBTcEEgCiAgLSBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyAtIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogIC0gd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAtIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogIC0KICAtIENvbnRyaWJ1dG9yczoKICAtIApkaWZmIC0tZ2l0IGEvcGx1Z2lucy9zYmEvb3JnLnBvbGFyc3lzLmNoZXNzLnN0YXRlYmFzZWQvQVRML0NIRVNTMklNLmF0bCBiL3BsdWdpbnMvc2JhL29yZy5wb2xhcnN5cy5jaGVzcy5zdGF0ZWJhc2VkL0FUTC9DSEVTUzJJTS5hdGwKaW5kZXggMDc1M2NjYy4uYjE5NWQxYSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9zYmEvb3JnLnBvbGFyc3lzLmNoZXNzLnN0YXRlYmFzZWQvQVRML0NIRVNTMklNLmF0bAorKysgYi9wbHVnaW5zL3NiYS9vcmcucG9sYXJzeXMuY2hlc3Muc3RhdGViYXNlZC9BVEwvQ0hFU1MySU0uYXRsCkBAIC01LDcgKzUsNyBAQAogLS0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAgLS0NCiAtLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlICAtLQ0KIC0tIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgICAgIC0tDQotLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0NCistLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQ0KIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tDQogLS0gQ29udHJpYnV0b3JzOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0NCiAtLSBMZW9uYXJkbyBNb250ZWNjaGkgCWxtb250ZWNjaGlAdW5pZmkuaXQgICAgICAgICAgICAgICAgICAgICAgICAgIC0tDQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9zYmEvb3JnLnBvbGFyc3lzLmNoZXNzLnN0YXRlYmFzZWQvQVRML0lETTJQTk1MLmF0bCBiL3BsdWdpbnMvc2JhL29yZy5wb2xhcnN5cy5jaGVzcy5zdGF0ZWJhc2VkL0FUTC9JRE0yUE5NTC5hdGwKaW5kZXggNTc4OTg1MS4uZGEzNzdlYiAxMDA2NDQKLS0tIGEvcGx1Z2lucy9zYmEvb3JnLnBvbGFyc3lzLmNoZXNzLnN0YXRlYmFzZWQvQVRML0lETTJQTk1MLmF0bAorKysgYi9wbHVnaW5zL3NiYS9vcmcucG9sYXJzeXMuY2hlc3Muc3RhdGViYXNlZC9BVEwvSURNMlBOTUwuYXRsCkBAIC01LDcgKzUsNyBAQAogLS0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAgLS0KIC0tIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgIC0tCiAtLSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0ICAgICAtLQotLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0gQ29udHJpYnV0b3JzOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tIExlb25hcmRvIE1vbnRlY2NoaSAJbG1vbnRlY2NoaUB1bmlmaS5pdCAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvc2JhL29yZy5wb2xhcnN5cy5jaGVzcy5zdGF0ZWJhc2VkL0FUTC9QTk1MMkRFRU0uYXRsIGIvcGx1Z2lucy9zYmEvb3JnLnBvbGFyc3lzLmNoZXNzLnN0YXRlYmFzZWQvQVRML1BOTUwyREVFTS5hdGwKaW5kZXggNDc4NjJlNS4uZTVhZjZlZSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9zYmEvb3JnLnBvbGFyc3lzLmNoZXNzLnN0YXRlYmFzZWQvQVRML1BOTUwyREVFTS5hdGwKKysrIGIvcGx1Z2lucy9zYmEvb3JnLnBvbGFyc3lzLmNoZXNzLnN0YXRlYmFzZWQvQVRML1BOTUwyREVFTS5hdGwKQEAgLTUsNyArNSw3IEBACiAtLSBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzICAtLQogLS0gYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAgLS0KIC0tIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgICAgIC0tCi0tLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLSBDb250cmlidXRvcnM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0gTGVvbmFyZG8gTW9udGVjY2hpIAlsbW9udGVjY2hpQHVuaWZpLml0ICAgICAgICAgICAgICAgICAgICAgICAgICAtLQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9zYmEvb3JnLnBvbGFyc3lzLmNoZXNzLnN0YXRlYmFzZWQvYWJvdXQuaHRtbCBiL3BsdWdpbnMvc2JhL29yZy5wb2xhcnN5cy5jaGVzcy5zdGF0ZWJhc2VkL2Fib3V0Lmh0bWwKaW5kZXggZGQzYzA4OS4uMTY0Zjc4MSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9zYmEvb3JnLnBvbGFyc3lzLmNoZXNzLnN0YXRlYmFzZWQvYWJvdXQuaHRtbAorKysgYi9wbHVnaW5zL3NiYS9vcmcucG9sYXJzeXMuY2hlc3Muc3RhdGViYXNlZC9hYm91dC5odG1sCkBAIC0yLDI3ICsyLDM1IEBACiAgICAgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXN0cmljdC5kdGQiPgogPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgogPGhlYWQ+Ci08bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xIi8+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xIiAvPgogPHRpdGxlPkFib3V0PC90aXRsZT4KIDwvaGVhZD4KIDxib2R5IGxhbmc9IkVOLVVTIj4KLTxoMj5BYm91dCBUaGlzIENvbnRlbnQ8L2gyPgotIAotPHA+Tm92ZW1iZXIgMTQsIDIwMDg8L3A+CQotPGgzPkxpY2Vuc2U8L2gzPgorCTxoMj5BYm91dCBUaGlzIENvbnRlbnQ8L2gyPgogCi08cD5UaGUgRWNsaXBzZSBGb3VuZGF0aW9uIG1ha2VzIGF2YWlsYWJsZSBhbGwgY29udGVudCBpbiB0aGlzIHBsdWctaW4gKCZxdW90O0NvbnRlbnQmcXVvdDspLiAgVW5sZXNzIG90aGVyd2lzZSAKLWluZGljYXRlZCBiZWxvdywgdGhlIENvbnRlbnQgaXMgcHJvdmlkZWQgdG8geW91IHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUKLUVjbGlwc2UgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAxLjAgKCZxdW90O0VQTCZxdW90OykuICBBIGNvcHkgb2YgdGhlIEVQTCBpcyBhdmFpbGFibGUgCi1hdCA8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWw8L2E+LgotRm9yIHB1cnBvc2VzIG9mIHRoZSBFUEwsICZxdW90O1Byb2dyYW0mcXVvdDsgd2lsbCBtZWFuIHRoZSBDb250ZW50LjwvcD4KKwk8cD5Ob3ZlbWJlciAzMCwgMjAxNzwvcD4KKwk8aDM+TGljZW5zZTwvaDM+CiAKLTxwPklmIHlvdSBkaWQgbm90IHJlY2VpdmUgdGhpcyBDb250ZW50IGRpcmVjdGx5IGZyb20gdGhlIEVjbGlwc2UgRm91bmRhdGlvbiwgdGhlIENvbnRlbnQgaXMgCi1iZWluZyByZWRpc3RyaWJ1dGVkIGJ5IGFub3RoZXIgcGFydHkgKCZxdW90O1JlZGlzdHJpYnV0b3ImcXVvdDspIGFuZCBkaWZmZXJlbnQgdGVybXMgYW5kIGNvbmRpdGlvbnMgbWF5Ci1hcHBseSB0byB5b3VyIHVzZSBvZiBhbnkgb2JqZWN0IGNvZGUgaW4gdGhlIENvbnRlbnQuICBDaGVjayB0aGUgUmVkaXN0cmlidXRvcidzIGxpY2Vuc2UgdGhhdCB3YXMgCi1wcm92aWRlZCB3aXRoIHRoZSBDb250ZW50LiAgSWYgbm8gc3VjaCBsaWNlbnNlIGV4aXN0cywgY29udGFjdCB0aGUgUmVkaXN0cmlidXRvci4gIFVubGVzcyBvdGhlcndpc2UKLWluZGljYXRlZCBiZWxvdywgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFUEwgc3RpbGwgYXBwbHkgdG8gYW55IHNvdXJjZSBjb2RlIGluIHRoZSBDb250ZW50Ci1hbmQgc3VjaCBzb3VyY2UgY29kZSBtYXkgYmUgb2J0YWluZWQgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZyI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZzwvYT4uPC9wPgorCTxwPgorCQlUaGUgRWNsaXBzZSBGb3VuZGF0aW9uIG1ha2VzIGF2YWlsYWJsZSBhbGwgY29udGVudCBpbiB0aGlzIHBsdWctaW4KKwkJKCZxdW90O0NvbnRlbnQmcXVvdDspLiBVbmxlc3Mgb3RoZXJ3aXNlIGluZGljYXRlZCBiZWxvdywgdGhlIENvbnRlbnQKKwkJaXMgcHJvdmlkZWQgdG8geW91IHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRWNsaXBzZQorCQlQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDIuMCAoJnF1b3Q7RVBMJnF1b3Q7KS4gQSBjb3B5IG9mIHRoZSBFUEwgaXMKKwkJYXZhaWxhYmxlIGF0IDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMCI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wPC9hPi4KKwkJRm9yIHB1cnBvc2VzIG9mIHRoZSBFUEwsICZxdW90O1Byb2dyYW0mcXVvdDsgd2lsbCBtZWFuIHRoZSBDb250ZW50LgorCTwvcD4KKworCTxwPgorCQlJZiB5b3UgZGlkIG5vdCByZWNlaXZlIHRoaXMgQ29udGVudCBkaXJlY3RseSBmcm9tIHRoZSBFY2xpcHNlCisJCUZvdW5kYXRpb24sIHRoZSBDb250ZW50IGlzIGJlaW5nIHJlZGlzdHJpYnV0ZWQgYnkgYW5vdGhlciBwYXJ0eQorCQkoJnF1b3Q7UmVkaXN0cmlidXRvciZxdW90OykgYW5kIGRpZmZlcmVudCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBtYXkKKwkJYXBwbHkgdG8geW91ciB1c2Ugb2YgYW55IG9iamVjdCBjb2RlIGluIHRoZSBDb250ZW50LiBDaGVjayB0aGUKKwkJUmVkaXN0cmlidXRvcidzIGxpY2Vuc2UgdGhhdCB3YXMgcHJvdmlkZWQgd2l0aCB0aGUgQ29udGVudC4gSWYgbm8gc3VjaAorCQlsaWNlbnNlIGV4aXN0cywgY29udGFjdCB0aGUgUmVkaXN0cmlidXRvci4gVW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQKKwkJYmVsb3csIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRVBMIHN0aWxsIGFwcGx5IHRvIGFueSBzb3VyY2UKKwkJY29kZSBpbiB0aGUgQ29udGVudCBhbmQgc3VjaCBzb3VyY2UgY29kZSBtYXkgYmUgb2J0YWluZWQgYXQgPGEKKwkJCWhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnPC9hPi4KKwk8L3A+CiAKIDwvYm9keT4KIDwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9wbHVnaW5zL3NiYS9vcmcucG9sYXJzeXMuY2hlc3Muc3RhdGViYXNlZC9idWlsZC5wcm9wZXJ0aWVzIGIvcGx1Z2lucy9zYmEvb3JnLnBvbGFyc3lzLmNoZXNzLnN0YXRlYmFzZWQvYnVpbGQucHJvcGVydGllcwppbmRleCAzYWVmNDc2Li4zNDRkYmE2IDEwMDY0NAotLS0gYS9wbHVnaW5zL3NiYS9vcmcucG9sYXJzeXMuY2hlc3Muc3RhdGViYXNlZC9idWlsZC5wcm9wZXJ0aWVzCisrKyBiL3BsdWdpbnMvc2JhL29yZy5wb2xhcnN5cy5jaGVzcy5zdGF0ZWJhc2VkL2J1aWxkLnByb3BlcnRpZXMKQEAgLTQsOSArNCw5IEBACiAjIEludGVjcyBTLnAuQS4sIEl0YWx5CiAjICAgCiAjIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSMgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisjIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMAogIyB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotIyBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorIyBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbAogIwogIyBDb250cmlidXRvcnM6CiAjIExlb25hcmRvIE1vbnRlY2NoaQlsbW9udGVjY2hpQHVuaWZpLml0CmRpZmYgLS1naXQgYS9wbHVnaW5zL3NiYS9vcmcucG9sYXJzeXMuY2hlc3Muc3RhdGViYXNlZC9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3N0YXRlYmFzZWQvQWN0aXZhdG9yLmphdmEgYi9wbHVnaW5zL3NiYS9vcmcucG9sYXJzeXMuY2hlc3Muc3RhdGViYXNlZC9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3N0YXRlYmFzZWQvQWN0aXZhdG9yLmphdmEKaW5kZXggMWRkMDM1MS4uYmE1NGY2YSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9zYmEvb3JnLnBvbGFyc3lzLmNoZXNzLnN0YXRlYmFzZWQvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9zdGF0ZWJhc2VkL0FjdGl2YXRvci5qYXZhCisrKyBiL3BsdWdpbnMvc2JhL29yZy5wb2xhcnN5cy5jaGVzcy5zdGF0ZWJhc2VkL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3Mvc3RhdGViYXNlZC9BY3RpdmF0b3IuamF2YQpAQCAtNyw3ICs3LDcgQEAKIC0tIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgIC0tCiAtLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlICAtLQogLS0gdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCAgICAgLS0KLS0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tIENvbnRyaWJ1dG9yczogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLSBMZW9uYXJkbyBNb250ZWNjaGkgCWxtb250ZWNjaGlAdW5pZmkuaXQgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCmRpZmYgLS1naXQgYS9wbHVnaW5zL3NiYS9vcmcucG9sYXJzeXMuY2hlc3Muc3RhdGViYXNlZC9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3N0YXRlYmFzZWQvREVFTUNsaWVudC5qYXZhIGIvcGx1Z2lucy9zYmEvb3JnLnBvbGFyc3lzLmNoZXNzLnN0YXRlYmFzZWQvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9zdGF0ZWJhc2VkL0RFRU1DbGllbnQuamF2YQppbmRleCBjYzdkZmJiLi4wNjZmZTBlIDEwMDY0NAotLS0gYS9wbHVnaW5zL3NiYS9vcmcucG9sYXJzeXMuY2hlc3Muc3RhdGViYXNlZC9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3N0YXRlYmFzZWQvREVFTUNsaWVudC5qYXZhCisrKyBiL3BsdWdpbnMvc2JhL29yZy5wb2xhcnN5cy5jaGVzcy5zdGF0ZWJhc2VkL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3Mvc3RhdGViYXNlZC9ERUVNQ2xpZW50LmphdmEKQEAgLTYsNyArNiw3IEBACiAtLSBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzICAtLQogLS0gYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAgLS0KIC0tIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgICAgIC0tCi0tLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLSBDb250cmlidXRvcnM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0gTGVvbmFyZG8gTW9udGVjY2hpIAlsbW9udGVjY2hpQHVuaWZpLml0ICAgICAgICAgICAgICAgICAgICAgICAgICAtLQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9zYmEvb3JnLnBvbGFyc3lzLmNoZXNzLnN0YXRlYmFzZWQvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9zdGF0ZWJhc2VkL0RFRU1Qcm9ncmVzc0luZm9ybWF0aW9uLmphdmEgYi9wbHVnaW5zL3NiYS9vcmcucG9sYXJzeXMuY2hlc3Muc3RhdGViYXNlZC9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3N0YXRlYmFzZWQvREVFTVByb2dyZXNzSW5mb3JtYXRpb24uamF2YQppbmRleCBkMWZlZTA3Li5hY2EyZWU3IDEwMDY0NAotLS0gYS9wbHVnaW5zL3NiYS9vcmcucG9sYXJzeXMuY2hlc3Muc3RhdGViYXNlZC9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3N0YXRlYmFzZWQvREVFTVByb2dyZXNzSW5mb3JtYXRpb24uamF2YQorKysgYi9wbHVnaW5zL3NiYS9vcmcucG9sYXJzeXMuY2hlc3Muc3RhdGViYXNlZC9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3N0YXRlYmFzZWQvREVFTVByb2dyZXNzSW5mb3JtYXRpb24uamF2YQpAQCAtNiw3ICs2LDcgQEAKIC0tIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgIC0tCiAtLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlICAtLQogLS0gdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCAgICAgLS0KLS0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tIENvbnRyaWJ1dG9yczogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLSBMZW9uYXJkbyBNb250ZWNjaGkgCWxtb250ZWNjaGlAdW5pZmkuaXQgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCmRpZmYgLS1naXQgYS9wbHVnaW5zL3NiYS9vcmcucG9sYXJzeXMuY2hlc3Muc3RhdGViYXNlZC9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3N0YXRlYmFzZWQvUGVyaW9kaWNFeGVjdXRpb25EaWFsb2cuamF2YSBiL3BsdWdpbnMvc2JhL29yZy5wb2xhcnN5cy5jaGVzcy5zdGF0ZWJhc2VkL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3Mvc3RhdGViYXNlZC9QZXJpb2RpY0V4ZWN1dGlvbkRpYWxvZy5qYXZhCmluZGV4IDQ2NGQyMmUuLjAyZDBkMjQgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvc2JhL29yZy5wb2xhcnN5cy5jaGVzcy5zdGF0ZWJhc2VkL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3Mvc3RhdGViYXNlZC9QZXJpb2RpY0V4ZWN1dGlvbkRpYWxvZy5qYXZhCisrKyBiL3BsdWdpbnMvc2JhL29yZy5wb2xhcnN5cy5jaGVzcy5zdGF0ZWJhc2VkL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3Mvc3RhdGViYXNlZC9QZXJpb2RpY0V4ZWN1dGlvbkRpYWxvZy5qYXZhCkBAIC02LDcgKzYsNyBAQAogLS0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAgLS0KIC0tIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgIC0tCiAtLSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0ICAgICAtLQotLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0gQ29udHJpYnV0b3JzOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tIExlb25hcmRvIE1vbnRlY2NoaSAJbG1vbnRlY2NoaUB1bmlmaS5pdCAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvc2JhL29yZy5wb2xhcnN5cy5jaGVzcy5zdGF0ZWJhc2VkL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3Mvc3RhdGViYXNlZC9TZWxlY3Rpb25MaXN0ZW5lckZvclN0YXRlQmFzZWQuamF2YSBiL3BsdWdpbnMvc2JhL29yZy5wb2xhcnN5cy5jaGVzcy5zdGF0ZWJhc2VkL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3Mvc3RhdGViYXNlZC9TZWxlY3Rpb25MaXN0ZW5lckZvclN0YXRlQmFzZWQuamF2YQppbmRleCA1ZDU3MGE2Li5hYjZkYzcyIDEwMDY0NAotLS0gYS9wbHVnaW5zL3NiYS9vcmcucG9sYXJzeXMuY2hlc3Muc3RhdGViYXNlZC9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3N0YXRlYmFzZWQvU2VsZWN0aW9uTGlzdGVuZXJGb3JTdGF0ZUJhc2VkLmphdmEKKysrIGIvcGx1Z2lucy9zYmEvb3JnLnBvbGFyc3lzLmNoZXNzLnN0YXRlYmFzZWQvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9zdGF0ZWJhc2VkL1NlbGVjdGlvbkxpc3RlbmVyRm9yU3RhdGVCYXNlZC5qYXZhCkBAIC03LDcgKzcsNyBAQAogLS0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAgLS0KIC0tIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgIC0tCiAtLSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0ICAgICAtLQotLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0gQ29udHJpYnV0b3JzOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tIE5pY2hvbGFzIFBhY2luaQkJbmljaG9sYXMucGFjaW5pQGludGVjcy5pdCAgICAgICAgICAgICAgICAgICAgLS0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvc2JhL29yZy5wb2xhcnN5cy5jaGVzcy5zdGF0ZWJhc2VkL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3Mvc3RhdGViYXNlZC9TdGF0ZUJhc2VkU291cmNlUHJvdmlkZXIuamF2YSBiL3BsdWdpbnMvc2JhL29yZy5wb2xhcnN5cy5jaGVzcy5zdGF0ZWJhc2VkL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3Mvc3RhdGViYXNlZC9TdGF0ZUJhc2VkU291cmNlUHJvdmlkZXIuamF2YQppbmRleCA2MGNiZmVhLi4wMzRkNTFmIDEwMDY0NAotLS0gYS9wbHVnaW5zL3NiYS9vcmcucG9sYXJzeXMuY2hlc3Muc3RhdGViYXNlZC9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3N0YXRlYmFzZWQvU3RhdGVCYXNlZFNvdXJjZVByb3ZpZGVyLmphdmEKKysrIGIvcGx1Z2lucy9zYmEvb3JnLnBvbGFyc3lzLmNoZXNzLnN0YXRlYmFzZWQvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9zdGF0ZWJhc2VkL1N0YXRlQmFzZWRTb3VyY2VQcm92aWRlci5qYXZhCkBAIC03LDcgKzcsNyBAQAogLS0gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAgLS0KIC0tIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgIC0tCiAtLSB2MS4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0ICAgICAtLQotLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KKy0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYyMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0gQ29udHJpYnV0b3JzOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tIE5pY2hvbGFzIFBhY2luaQkJbmljaG9sYXMucGFjaW5pQGludGVjcy5pdCAgICAgICAgICAgICAgICAgICAgLS0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvc2JhL29yZy5wb2xhcnN5cy5jaGVzcy5zdGF0ZWJhc2VkL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3Mvc3RhdGViYXNlZC9TdGF0ZUJhc2VkVHJhbnNmb3JtYXRpb25Db21tYW5kLmphdmEgYi9wbHVnaW5zL3NiYS9vcmcucG9sYXJzeXMuY2hlc3Muc3RhdGViYXNlZC9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3N0YXRlYmFzZWQvU3RhdGVCYXNlZFRyYW5zZm9ybWF0aW9uQ29tbWFuZC5qYXZhCmluZGV4IDQ1ZTQ2YmQuLmRkMWY2ZjMgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvc2JhL29yZy5wb2xhcnN5cy5jaGVzcy5zdGF0ZWJhc2VkL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3Mvc3RhdGViYXNlZC9TdGF0ZUJhc2VkVHJhbnNmb3JtYXRpb25Db21tYW5kLmphdmEKKysrIGIvcGx1Z2lucy9zYmEvb3JnLnBvbGFyc3lzLmNoZXNzLnN0YXRlYmFzZWQvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9zdGF0ZWJhc2VkL1N0YXRlQmFzZWRUcmFuc2Zvcm1hdGlvbkNvbW1hbmQuamF2YQpAQCAtNyw3ICs3LDcgQEAKIC0tIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgIC0tCiAtLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlICAtLQogLS0gdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCAgICAgLS0KLS0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tIENvbnRyaWJ1dG9yczogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLSBMZW9uYXJkbyBNb250ZWNjaGkgCWxtb250ZWNjaGlAdW5pZmkuaXQgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCmRpZmYgLS1naXQgYS9wbHVnaW5zL3NiYS9vcmcucG9sYXJzeXMuY2hlc3Muc3RhdGViYXNlZC9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3N0YXRlYmFzZWQvU3RhdGVCYXNlZFdpdGhQYXJhbWV0ZXJzQ29tbWFuZC5qYXZhIGIvcGx1Z2lucy9zYmEvb3JnLnBvbGFyc3lzLmNoZXNzLnN0YXRlYmFzZWQvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9zdGF0ZWJhc2VkL1N0YXRlQmFzZWRXaXRoUGFyYW1ldGVyc0NvbW1hbmQuamF2YQppbmRleCA4MTg4OTkyLi41NjNmMGNlIDEwMDY0NAotLS0gYS9wbHVnaW5zL3NiYS9vcmcucG9sYXJzeXMuY2hlc3Muc3RhdGViYXNlZC9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3N0YXRlYmFzZWQvU3RhdGVCYXNlZFdpdGhQYXJhbWV0ZXJzQ29tbWFuZC5qYXZhCisrKyBiL3BsdWdpbnMvc2JhL29yZy5wb2xhcnN5cy5jaGVzcy5zdGF0ZWJhc2VkL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3Mvc3RhdGViYXNlZC9TdGF0ZUJhc2VkV2l0aFBhcmFtZXRlcnNDb21tYW5kLmphdmEKQEAgLTcsNyArNyw3IEBACiAtLSBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzICAtLQogLS0gYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAgLS0KIC0tIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgICAgIC0tCi0tLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLSBDb250cmlidXRvcnM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0gTGVvbmFyZG8gTW9udGVjY2hpIAlsbW9udGVjY2hpQHVuaWZpLml0ICAgICAgICAgICAgICAgICAgICAgICAgICAtLQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9zYmEvb3JnLnBvbGFyc3lzLmNoZXNzLnN0YXRlYmFzZWQvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9zdGF0ZWJhc2VkL2RhZW1vbi9ERUVNUHJvZ3Jlc3NJbmZvcm1hdGlvbi5qYXZhIGIvcGx1Z2lucy9zYmEvb3JnLnBvbGFyc3lzLmNoZXNzLnN0YXRlYmFzZWQvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9zdGF0ZWJhc2VkL2RhZW1vbi9ERUVNUHJvZ3Jlc3NJbmZvcm1hdGlvbi5qYXZhCmluZGV4IDZjYmM4Y2EuLjllMDA1NjcgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvc2JhL29yZy5wb2xhcnN5cy5jaGVzcy5zdGF0ZWJhc2VkL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3Mvc3RhdGViYXNlZC9kYWVtb24vREVFTVByb2dyZXNzSW5mb3JtYXRpb24uamF2YQorKysgYi9wbHVnaW5zL3NiYS9vcmcucG9sYXJzeXMuY2hlc3Muc3RhdGViYXNlZC9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3N0YXRlYmFzZWQvZGFlbW9uL0RFRU1Qcm9ncmVzc0luZm9ybWF0aW9uLmphdmEKQEAgLTYsNyArNiw3IEBACiAtLSBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzICAtLQogLS0gYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAgLS0KIC0tIHYxLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgICAgIC0tCi0tLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQorLS0gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjIwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLSBDb250cmlidXRvcnM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0gTGVvbmFyZG8gTW9udGVjY2hpIAlsbW9udGVjY2hpQHVuaWZpLml0ICAgICAgICAgICAgICAgICAgICAgICAgICAtLQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9zYmEvb3JnLnBvbGFyc3lzLmNoZXNzLnN0YXRlYmFzZWQvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9zdGF0ZWJhc2VkL2RhZW1vbi9QYXJhbWV0ZXJMaXN0LmphdmEgYi9wbHVnaW5zL3NiYS9vcmcucG9sYXJzeXMuY2hlc3Muc3RhdGViYXNlZC9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3N0YXRlYmFzZWQvZGFlbW9uL1BhcmFtZXRlckxpc3QuamF2YQppbmRleCA5Y2M3NzQwLi4zZjY4ZjE4IDEwMDY0NAotLS0gYS9wbHVnaW5zL3NiYS9vcmcucG9sYXJzeXMuY2hlc3Muc3RhdGViYXNlZC9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3N0YXRlYmFzZWQvZGFlbW9uL1BhcmFtZXRlckxpc3QuamF2YQorKysgYi9wbHVnaW5zL3NiYS9vcmcucG9sYXJzeXMuY2hlc3Muc3RhdGViYXNlZC9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3N0YXRlYmFzZWQvZGFlbW9uL1BhcmFtZXRlckxpc3QuamF2YQpAQCAtNiw3ICs2LDcgQEAKIC0tIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgIC0tCiAtLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlICAtLQogLS0gdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCAgICAgLS0KLS0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tIENvbnRyaWJ1dG9yczogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLSBMZW9uYXJkbyBNb250ZWNjaGkgCWxtb250ZWNjaGlAdW5pZmkuaXQgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCmRpZmYgLS1naXQgYS9wbHVnaW5zL3NiYS9vcmcucG9sYXJzeXMuY2hlc3Muc3RhdGViYXNlZC9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3N0YXRlYmFzZWQvcHJlZmVyZW5jZXMvU3RhdGVCYXNlZFByZWZlcmVuY2VQYWdlLmphdmEgYi9wbHVnaW5zL3NiYS9vcmcucG9sYXJzeXMuY2hlc3Muc3RhdGViYXNlZC9zcmMvb3JnL3BvbGFyc3lzL2NoZXNzL3N0YXRlYmFzZWQvcHJlZmVyZW5jZXMvU3RhdGVCYXNlZFByZWZlcmVuY2VQYWdlLmphdmEKaW5kZXggMjdmYjc4My4uMTBjNzg4OSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9zYmEvb3JnLnBvbGFyc3lzLmNoZXNzLnN0YXRlYmFzZWQvc3JjL29yZy9wb2xhcnN5cy9jaGVzcy9zdGF0ZWJhc2VkL3ByZWZlcmVuY2VzL1N0YXRlQmFzZWRQcmVmZXJlbmNlUGFnZS5qYXZhCisrKyBiL3BsdWdpbnMvc2JhL29yZy5wb2xhcnN5cy5jaGVzcy5zdGF0ZWJhc2VkL3NyYy9vcmcvcG9sYXJzeXMvY2hlc3Mvc3RhdGViYXNlZC9wcmVmZXJlbmNlcy9TdGF0ZUJhc2VkUHJlZmVyZW5jZVBhZ2UuamF2YQpAQCAtNyw3ICs3LDcgQEAKIC0tIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgIC0tCiAtLSBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlICAtLQogLS0gdjEuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdCAgICAgLS0KLS0tIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgIC0tCistLSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MjAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tIENvbnRyaWJ1dG9yczogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLSBMZW9uYXJkbyBNb250ZWNjaGkgCWxtb250ZWNjaGlAdW5pZmkuaXQgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCg==