LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogQ29weXJpZ2h0IChjKSAyMDAzLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgogKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCiAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENvbW1vbiBQdWJsaWMgTGljZW5zZSB2MS4wCiAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0CiAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvY3BsLXYxMC5odG1sCqAqCiAqIENvbnRyaWJ1dG9yczoKICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KcGFja2FnZSBvcmcuZWNsaXBzZS53c3Quc2VydmVyLmNvcmU7CgppbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklTdGF0dXM7Ci8qKgogKiBBIHB1Ymxpc2ggbGlzdGVuZXIgaXMgdXNlZCB0byBsaXN0ZW4gZm9yIHB1Ymxpc2hpbmcgZXZlbnRzIGZyb20gYSBzZXJ2ZXIuCiAqIFRoZSBldmVudHMgYXJlIHR5cGljYWxseSByZWNlaXZlZCBpbiB0aGUgZm9sbG93aW5nIG9yZGVyOgogKiAKICogcHVibGlzaFN0YXJ0ZWQoKSAtIFRoZSBwdWJsaXNoIG9wZXJhdGlvbiBpcyBzdGFydGluZwogKiAgIHB1Ymxpc2hNb2R1bGVTdGFydGVkKCkgLSBUaGlzIHNlY3Rpb24gaXMgZmlyZWQgZm9yIGVhY2ggbW9kdWxlIGluIHRoZSBzZXJ2ZXIKICogICBwdWJsaXNoTW9kdWxlRmluaXNoZWQoKSAtIFRoaXMgbW9kdWxlIGlzIGZpbmlzaGVkIHB1Ymxpc2hpbmcKICogcHVibGlzaEZpbmlzaGVkKCkgLSBUaGUgcHVibGlzaCBvcGVyYXRpb24gaXMgZmluaXNoZWQKICovCnB1YmxpYyBpbnRlcmZhY2UgSVB1Ymxpc2hMaXN0ZW5lciB7CgkvKioKCSAqIEZpcmVkIHRvIG5vdGlmeSB0aGF0IHB1Ymxpc2hpbmcgaGFzIGJlZ3VuLgoJICoKCSAqIEBwYXJhbSBzZXJ2ZXIKCSAqLwoJcHVibGljIHZvaWQgcHVibGlzaFN0YXJ0ZWQoSVNlcnZlciBzZXJ2ZXIpOwoKCS8qKgoJICogRmlyZWQgd2l0aCB0aGUgbW9kdWxlIHRvIG5vdGlmeSB0aGF0IHB1Ymxpc2hpbmcgb2YgdGhpcyBtb2R1bGUKCSAqIGlzIHN0YXJ0aW5nLgoJICogCgkgKiBAcGFyYW0gc2VydmVyCgkgKiBAcGFyYW0gcGFyZW50cwoJICogQHBhcmFtIG1vZHVsZQoJICovCglwdWJsaWMgdm9pZCBwdWJsaXNoTW9kdWxlU3RhcnRlZChJU2VydmVyIHNlcnZlciwgSU1vZHVsZVtdIHBhcmVudHMsIElNb2R1bGUgbW9kdWxlKTsKCgkvKioKCSAqIFRoZSBldmVudCBpcyBmaXJlZCB3aGVuIHRoZSBtb2R1bGUgaGFzIGZpbmlzaGVkIHB1Ymxpc2hpbmcsCgkgKiBhbmQgaW5jbHVkZXMgdGhlIHN0YXR1cy4KCSAqIAoJICogQHBhcmFtIHNlcnZlcgoJICogQHBhcmFtIHBhcmVudHMKCSAqIEBwYXJhbSBtb2R1bGUKCSAqIEBwYXJhbSBzdGF0dXMKCSAqLwoJcHVibGljIHZvaWQgcHVibGlzaE1vZHVsZUZpbmlzaGVkKElTZXJ2ZXIgc2VydmVyLCBJTW9kdWxlW10gcGFyZW50cywgSU1vZHVsZSBtb2R1bGUsIElTdGF0dXMgc3RhdHVzKTsKCgkvKioKCSAqIFB1Ymxpc2hpbmcgaGFzIGZpbmlzaGVkLiBSZXR1cm5zIHRoZSBvdmVyYWxsIHN0YXR1cy4KCSAqCgkgKiBAcGFyYW0gc2VydmVyCgkgKiBAcGFyYW0gc3RhdHVzCgkgKi8KCXB1YmxpYyB2b2lkIHB1Ymxpc2hGaW5pc2hlZChJU2VydmVyIHNlcnZlciwgSVN0YXR1cyBzdGF0dXMpOwp9