LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqIENvcHlyaWdodCAoYykgMjAxNiBDRUEgTElTVC4KICoKICoKICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwogKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKICoKICogQ29udHJpYnV0b3JzOgogKiAgICAgTWF1cmljaW8gQWxm6XJleihtYXVyaWNpby5hbGZlcmV6QGNlYS5mcikgQ0VBIExJU1QuIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMucmVxdWlyZW1lbnRzLnN5c21sLmFzc2lzdGFudC5oYW5kbGVyczsKCmltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLmNvbW1hbmRzLkV4ZWN1dGlvbkV2ZW50OwppbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5jb21tYW5kcy5FeGVjdXRpb25FeGNlcHRpb247CmltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnJlcXVpcmVtZW50cy5zeXNtbC5jb21tb24uUGFweXJ1c0Fic3RyYWN0SGFuZGxlcjsKaW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMucmVxdWlyZW1lbnRzLnN5c21sMTQuYXNzaXN0YW50LmNvbW1hbmRzLlBhcHlydXNSZXFTeXNNTFJlcXVpcmVtZW50Q3JlYXRlQ29tbWFuZDsKaW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLkVsZW1lbnQ7Ci8qKgogKiBFeGVjdXRlcyB0aGUgY3JlYXRpb24gb2YgYSBuZXcgU3lzTUwgcmVxdWlyZW1lbnQgYmFzZWQgb24gdGhlIFBhcHlydXMgUmVxCiAqIHByZWZlcmVuY2VzIHBhZ2UuCiAqCiAqLwpwdWJsaWMgY2xhc3MgUGFweXJ1c1JlcVN5c01MUmVxdWlyZW1lbnRIYW5kbGVyIGV4dGVuZHMgUGFweXJ1c0Fic3RyYWN0SGFuZGxlciB7CgkJcHVibGljIE9iamVjdCBleGVjdXRlKEV4ZWN1dGlvbkV2ZW50IGV2ZW50KSB0aHJvd3MgRXhlY3V0aW9uRXhjZXB0aW9uIHsKCQkJc3VwZXIuZXhlY3V0ZShldmVudCk7CgkJCUVsZW1lbnQgc2VsZWN0ZWRFbGVtZW50ID0gZ2V0U2VsZWN0aW9uKCk7CgkJCWlmIChzZWxlY3RlZEVsZW1lbnQgIT0gbnVsbCkgewoJCQkJUGFweXJ1c1JlcVN5c01MUmVxdWlyZW1lbnRDcmVhdGVDb21tYW5kIHBhcHlydXNSZXFTeXNNTFJlcXVpcmVtZW50Q3JlYXRlQ29tbWFuZCA9IG5ldyBQYXB5cnVzUmVxU3lzTUxSZXF1aXJlbWVudENyZWF0ZUNvbW1hbmQoCgkJCQkJCXRyYW5zYWN0aW9uYWxFZGl0aW5nRG9tYWluLCBzZWxlY3RlZEVsZW1lbnQpOwoJCQkJdHJhbnNhY3Rpb25hbEVkaXRpbmdEb21haW4uZ2V0Q29tbWFuZFN0YWNrKCkuZXhlY3V0ZShwYXB5cnVzUmVxU3lzTUxSZXF1aXJlbWVudENyZWF0ZUNvbW1hbmQpOwoJCQl9CgkJCXJldHVybiBudWxsOwoJCX0KCgkvKioKCSAqIAoJICogQHNlZSBvcmcuZWNsaXBzZS5jb3JlLmNvbW1hbmRzLkFic3RyYWN0SGFuZGxlciNpc0VuYWJsZWQoKQoJICogCgkgKiBAcmV0dXJuIHRydWUgaWYgdGhlIGhhbmRsZXIgaXMgcG9zc2libGUKCSAqLwoJQE92ZXJyaWRlCglwdWJsaWMgYm9vbGVhbiBpc0VuYWJsZWQoKSB7CgkJRWxlbWVudCBzZWxlY3RlZEVsZW1lbnQgPSBnZXRTZWxlY3Rpb24oKTsKCQlpZiAoc2VsZWN0ZWRFbGVtZW50ICE9IG51bGwpIHsKCQkJcmV0dXJuIHRydWU7CgkJfSBlbHNlIHsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCX0KfQo=