LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogQ29weXJpZ2h0IChjKSAyMDAzIElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgogKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCiAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENvbW1vbiBQdWJsaWMgTGljZW5zZSB2MS4wCiAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0CiAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvY3BsLXYxMC5odG1sCqAqCiAqIENvbnRyaWJ1dG9yczoKICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KcGFja2FnZSBvcmcuZWNsaXBzZS53c3Quc2VydmVyLmNvcmUudXRpbDsKCmltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OwppbXBvcnQgamF2YS51dGlsLkxpc3Q7CgppbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnNlcnZlci5jb3JlLmludGVybmFsLlRyYWNlOwppbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnNlcnZlci5jb3JlLm1vZGVsLio7Ci8qKgogKiAKICovCnB1YmxpYyBjbGFzcyBNaXNzaW5nTW9kdWxlRmFjdG9yeURlbGVnYXRlIGltcGxlbWVudHMgSU1vZHVsZUZhY3RvcnlEZWxlZ2F0ZSB7CgkvKgoJICogQHNlZSBJTW9kdWxlRmFjdG9yeURlbGVnYXRlI2dldE1vZHVsZShTdHJpbmcpCgkgKi8KCXB1YmxpYyBJTW9kdWxlIGdldE1vZHVsZShTdHJpbmcgbWVtZW50bykgewoJCWlmIChtZW1lbnRvID09IG51bGwpCgkJCXJldHVybiBudWxsOwoJCXRyeSB7CgkJCWludCBpbmRleCA9IG1lbWVudG8uaW5kZXhPZigiLyIpOwoJCQlpZiAoaW5kZXggPCAwKQoJCQkJcmV0dXJuIG51bGw7CgkJCVN0cmluZyBpZCA9IG1lbWVudG8uc3Vic3RyaW5nKDAsIGluZGV4KTsKCQkJU3RyaW5nIG5hbWUgPSBtZW1lbnRvLnN1YnN0cmluZyhpbmRleCArIDEpOwoJCQlyZXR1cm4gbmV3IE1pc3NpbmdNb2R1bGUoaWQsIG5hbWUpOwoJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CgkJCVRyYWNlLnRyYWNlKCJDb3VsZCBub3QgY3JlYXRlIG1vZHVsZTogIiArIGUuZ2V0TWVzc2FnZSgpKTsKCQl9CgkJcmV0dXJuIG51bGw7Cgl9CgoJLyoKCSAqIEBzZWUgSU1vZHVsZUZhY3RvcnlEZWxlZ2F0ZSNnZXRNb2R1bGVzKCkKCSAqLwoJcHVibGljIExpc3QgZ2V0TW9kdWxlcygpIHsKCQlyZXR1cm4gbmV3IEFycmF5TGlzdCgwKTsKCX0KCQoJLyoqCgkgKiBBZGQgYSBsaXN0ZW5lciB0byB0aGUgbW9kdWxlIGZhY3RvcnkuCgkgKgoJICogQHBhcmFtIGxpc3RlbmVyIG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIuY29yZS5tb2RlbC5JTW9kdWxlRmFjdG9yeUxpc3RlbmVyCgkgKi8KCXB1YmxpYyB2b2lkIGFkZE1vZHVsZUZhY3RvcnlMaXN0ZW5lcihJTW9kdWxlRmFjdG9yeUxpc3RlbmVyIGxpc3RlbmVyKSB7IH0KCQoJLyoqCgkgKiBSZW1vdmUgYSBsaXN0ZW5lciBmcm9tIHRoZSBtb2R1bGUgZmFjdG9yeS4KCSAqCgkgKiBAcGFyYW0gbGlzdGVuZXIgb3JnLmVjbGlwc2Uud3N0LnNlcnZlci5jb3JlLm1vZGVsLklNb2R1bGVGYWN0b3J5TGlzdGVuZXIKCSAqLwoJcHVibGljIHZvaWQgcmVtb3ZlTW9kdWxlRmFjdG9yeUxpc3RlbmVyKElNb2R1bGVGYWN0b3J5TGlzdGVuZXIgbGlzdGVuZXIpIHsgfQp9Cg==