LyoqCiAqIENvcHlyaWdodCAoYykgMjAxOCBDRUEKICogCiAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCiAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKICogIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0CiAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAogKiAKICogQ29udHJpYnV0b3JzOgogKiAgIErpcultaWUgVGF0aWJvdWV0IChDRUEpIGplcmVtaWUudGF0aWJvdWV0QGNlYS5mciAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgogKiAgIEJlbm9pdCBNYWdnaSAoQ0VBKSBiZW5vaXQubWFnZ2lAY2VhLmZyIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCiAqICAgU2h1YWkgTGkgKENFQSkgc2h1YWkubGlAY2VhLmZyIC0gSW50ZWdyYXRpb24gb2Ygc2Vuc2lOYWN0IGFuZCBXZWIgb2YgVGhpbmdzIFRoaW5nIERlc2NyaXB0aW9uCiAqIAogKi8KcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLmlvdG1sLnNlbnNpbmFjdC5pbXBsOwoKaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FQ2xhc3M7CgppbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5pb3RtbC5zZW5zaW5hY3QuTWV0YWRhdGE7CmltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLmlvdG1sLnNlbnNpbmFjdC5TZW5zaW5hY3RQYWNrYWdlOwoKLyoqCiAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+CiAqIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5NZXRhZGF0YTwvYj48L2VtPicuCiAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgogKgogKiBAZ2VuZXJhdGVkCiAqLwpwdWJsaWMgY2xhc3MgTWV0YWRhdGFJbXBsIGV4dGVuZHMgVHlwZWRFbGVtZW50SW1wbCBpbXBsZW1lbnRzIE1ldGFkYXRhIHsKCS8qKgoJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgoJICogQGdlbmVyYXRlZAoJICovCglwcm90ZWN0ZWQgTWV0YWRhdGFJbXBsKCkgewoJCXN1cGVyKCk7Cgl9CgoJLyoqCgkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgoJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+CgkgKiBAZ2VuZXJhdGVkCgkgKi8KCUBPdmVycmlkZQoJcHJvdGVjdGVkIEVDbGFzcyBlU3RhdGljQ2xhc3MoKSB7CgkJcmV0dXJuIFNlbnNpbmFjdFBhY2thZ2UuTGl0ZXJhbHMuTUVUQURBVEE7Cgl9Cgp9IC8vTWV0YWRhdGFJbXBsCg==