LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogQ29weXJpZ2h0IChjKSAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgogKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCiAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENvbW1vbiBQdWJsaWMgTGljZW5zZSB2MS4wCiAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0CiAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvY3BsLXYxMC5odG1sCqAqCiAqIENvbnRyaWJ1dG9yczoKICogICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpwYWNrYWdlIG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIuY29yZS5pbnRlcm5hbC5vcGVyYXRpb25zOwoKaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CmltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLyoqCiAqIEEgc2VydmVyIHN0YXRlLgogKi8KcHVibGljIGNsYXNzIFNlcnZlclN0YXRlIHsKCXByaXZhdGUgaW50IHN0YXRlOwoJcHJpdmF0ZSBib29sZWFuIHB1Ymxpc2g7Cglwcml2YXRlIExpc3QgbW9kdWxlU3RhdGVzID0gbmV3IEFycmF5TGlzdCgyKTsKCQoJcHVibGljIFNlcnZlclN0YXRlKGludCBzdGF0ZSwgYm9vbGVhbiBwdWJsaXNoKSB7CgkJdGhpcy5zdGF0ZSA9IHN0YXRlOwoJCXRoaXMucHVibGlzaCA9IHB1Ymxpc2g7Cgl9CgkKCXB1YmxpYyB2b2lkIGFkZE1vZHVsZVN0YXRlKE1vZHVsZVN0YXRlIG1vZHVsZVN0YXRlKSB7CgkJaWYgKG1vZHVsZVN0YXRlcy5jb250YWlucyhtb2R1bGVTdGF0ZSkpCgkJCXJldHVybjsKCQltb2R1bGVTdGF0ZXMuYWRkKG1vZHVsZVN0YXRlKTsKCX0KCglwdWJsaWMgaW50IGdldFN0YXRlKCkgewoJCXJldHVybiBzdGF0ZTsKCX0KCglwdWJsaWMgYm9vbGVhbiBnZXRQdWJsaXNoKCkgewoJCXJldHVybiBwdWJsaXNoOwoJfQoKCXB1YmxpYyBNb2R1bGVTdGF0ZVtdIGdldE1vZHVsZVN0YXRlcygpIHsKCQlNb2R1bGVTdGF0ZVtdIG1zID0gbmV3IE1vZHVsZVN0YXRlW21vZHVsZVN0YXRlcy5zaXplKCldOwoJCW1vZHVsZVN0YXRlcy50b0FycmF5KG1zKTsKCQlyZXR1cm4gbXM7Cgl9Cn0=