LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogQ29weXJpZ2h0IChjKSAyMDAzIElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgogKiBBbGwgcmlnaHRzIHJlc2VydmVkLiCgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ29tbW9uIFB1YmxpYyBMaWNlbnNlIHYxLjAKICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9jcGwtdjEwLmh0bWwKoCoKICogQ29udHJpYnV0b3JzOgogKiAgICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCnBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LnNlcnZlci5qMmVlOwoKaW1wb3J0IGphdmEudXRpbC5Qcm9wZXJ0aWVzOwoKaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIuY29yZS5tb2RlbC5JTGF1bmNoYWJsZTsKLyoqCiAqIAogKi8KcHVibGljIGNsYXNzIEpuZGlMYXVuY2hhYmxlIGltcGxlbWVudHMgSUxhdW5jaGFibGUgewoJcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgSUQgPSAiam5kaSI7CgoJcHJpdmF0ZSBQcm9wZXJ0aWVzIHByb3BzOwoJcHJpdmF0ZSBTdHJpbmcgam5kaU5hbWU7Cglwcml2YXRlIFN0cmluZyBzZXJ2ZXI7Cglwcml2YXRlIGludCBwb3J0OwoKCXB1YmxpYyBKbmRpTGF1bmNoYWJsZShQcm9wZXJ0aWVzIHByb3BzLCBTdHJpbmcgam5kaU5hbWUpIHsKCQl0aGlzLmpuZGlOYW1lID0gam5kaU5hbWU7CgkJdGhpcy5wcm9wcyA9IHByb3BzOwoJfQoKCS8qCgkgKiBAc2VlIElMYXVuY2hhYmxlI2dldElkKCkKCSAqLwoJcHVibGljIFN0cmluZyBnZXRJZCgpIHsKCQlyZXR1cm4gSUQ7Cgl9CgoJcHVibGljIFByb3BlcnRpZXMgZ2V0UHJvcGVydGllcygpIHsKCQlyZXR1cm4gcHJvcHM7Cgl9CgoJcHVibGljIFN0cmluZyBnZXRKTkRJTmFtZSgpIHsKCQlyZXR1cm4gam5kaU5hbWU7Cgl9CgkKCXB1YmxpYyBTdHJpbmcgZ2V0U2VydmVyKCkgewoJCXJldHVybiBzZXJ2ZXI7Cgl9CgkKCXB1YmxpYyBpbnQgZ2V0SFRUUFBvcnQoKSB7CgkJcmV0dXJuIHBvcnQ7Cgl9Cn0=