From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 5856 invoked by alias); 22 Dec 2003 19:49:21 -0000 Mailing-List: contact rhdb-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Post: List-Help: , Sender: rhdb-owner@sources.redhat.com Received: (qmail 5849 invoked from network); 22 Dec 2003 19:49:20 -0000 Received: from unknown (HELO web21402.mail.yahoo.com) (216.136.232.72) by sources.redhat.com with SMTP; 22 Dec 2003 19:49:20 -0000 Message-ID: <20031222194919.70773.qmail@web21402.mail.yahoo.com> Received: from [216.129.200.20] by web21402.mail.yahoo.com via HTTP; Mon, 22 Dec 2003 14:49:19 EST Date: Mon, 22 Dec 2003 19:49:00 -0000 From: Deepak B Subject: First of set of changes to Administrator 2.0 (Java) for PostgreSQL 7.4 series. To: rhdb@sources.redhat.com MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="0-1902587908-1072122559=:66149" X-SW-Source: 2003-q4/txt/msg00013.txt.bz2 --0-1902587908-1072122559=:66149 Content-Type: text/plain; charset=us-ascii Content-Id: Content-Disposition: inline Content-length: 255 This is the first of a set of changes to Administrator for PostgreSQL 7.4. series. Compatibility will be maintained with 7.3. Deepak ______________________________________________________________________ Post your free ad now! http://personals.yahoo.ca --0-1902587908-1072122559=:66149 Content-Type: application/octet-stream; name="diff.patch" Content-Transfer-Encoding: base64 Content-Description: diff.patch Content-Disposition: attachment; filename="diff.patch" Content-length: 133432 SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBm aWxlOiAvY3ZzL3JoZGIvc3JjL3JoZGIvZ3VpdG9vbHMvcmhkYi1hZG1pbi9D aGFuZ2VMb2csdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMS4xLjEKZGlmZiAt YyAtcCAtcjEuMS4xLjEgQ2hhbmdlTG9nCioqKiBDaGFuZ2VMb2cJMjEgTm92 IDIwMDMgMTg6MzA6MTkgLTAwMDAJMS4xLjEuMQotLS0gQ2hhbmdlTG9nCTIy IERlYyAyMDAzIDE5OjMxOjAzIC0wMDAwCioqKioqKioqKioqKioqKgoqKiog MSwzICoqKioKLS0tIDEsMTYzIC0tLS0KKyAyMDAzLTEyLTE5ICBEZWVwYWsg QmhvbGUgIDxpYmV0dGhpc2lkaXNhdmFpbGFibGVAeWFob28uY2E+CisgCisg CSogc3JjL2NvbS9yZWRoYXQvcmhkYi9hZG1pbi9BZG1pbkJhY2tlbmRDbGll bnQuamF2YQorIAkoZ2V0QmFja2VuZFZlcnNpb24pOiBGaXggaW1wcm9wZXIg Y29tcGFyaXNpb25zIGluIGZ1bmN0aW9uIHRoYXQgY2F1c2VkCisgCWl0IHRv IHJldHVybiBpbmNvcnJlY3QgdmVyc2lvbiBpbiBzb21lIGNhc2VzLgorIAkq IHNyYy9jb20vcmVkaGF0L3JoZGIvYWRtaW4vRGF0YWJhc2VVcGRhdGUuamF2 YSAocmVuYW1lRGF0YWJhc2UpOiBBZGQKKyAJbmV3IGZ1bmN0aW9uIHRvIHJl bmFtZSBhIGRhdGFiYXNlLgorIAkqIHNyYy9jb20vcmVkaGF0L3JoZGIvYWRt aW4vR3JvdXBVcGRhdGUuamF2YSAocmVuYW1lR3JvdXApOiBBZGQKKyAJbmV3 IGZ1bmN0aW9uIHRvIHJlbmFtZSBhIGdyb3VwLgorIAkqIHNyYy9jb20vcmVk aGF0L3JoZGIvYWRtaW4vT3BlcmF0b3JDbGFzc1VwZGF0ZS5qYXZhIChyZW5h bWVPcENsYXNzKToKKyAJQWRkIG5ldyBmdW5jdGlvbiB0byByZW5hbWUgYW4g b3BlcmF0b3IgY2xhc3MuCisgCSogc3JjL2NvbS9yZWRoYXQvcmhkYi9hZG1p bi9SZW5hbWVEaWFsb2cuamF2YSAoY29uc3RydWN0b3IpOiBDaGFuZ2UKKyAJ ZnVuY3Rpb24gdG8gc2V0IHRpdGxlIGNvcnJlY3RseSB3aGVuIHJlbmFtaW5n IGVsZW1lbnRzIHRoYXQgaGF2ZSBhCisgCWN1c3RvbSBzaWduYXR1cmUuIEFs c28sIGNoYW5nZSBmdW5jdGlvbiB0byBwdXQgdGhlIGN1cnJlbnQgbmFtZSBp bgorIAlxdW90ZXMgaWYgQXV0by1RdW90ZSBJZGVudGlmaWVycyBpcyBvZmYu CisgCShkb09LQWN0aW9uKTogQWRkIGhhbmRsaW5nIGZvciByZW5hbWluZyBv ZiBkYXRhYmFzZXMsIGdyb3Vwcywgb3BlcmF0b3IKKyAJY2xhc3Nlcywgc2No ZW1hcyBhbmQgdXNlcnMuIEFsc28sIGZpeCBjb2RlIGZvciByZXBvc2l0aW9u aW5nIHNlbGVjdG9yCisgCWJhY2sgdG8gbmV3bHkgbmFtZWQgaXRlbSAob2xk IG9uZSBkaWRuJ3QgaGFuZGxlIGNlcnRhaW4gY29uZGl0aW9ucworIAl3ZWxs KS4KKyAJKiBzcmMvY29tL3JlZGhhdC9yaGRiL2FkbWluL1NjaGVtYVVwZGF0 ZS5qYXZhIChyZW5hbWVHcm91cCk6IEFkZAorIAluZXcgZnVuY3Rpb24gdG8g cmVuYW1lIGEgc2NoZW1hLgorIAkqIHNyYy9jb20vcmVkaGF0L3JoZGIvYWRt aW4vVXNlclVwZGF0ZS5qYXZhICh1c2VyR3JvdXApOiBBZGQKKyAJbmV3IGZ1 bmN0aW9uIHRvIHJlbmFtZSBhIHVzZXIuCisgCSogc3JjL2NvbS9yZWRoYXQv cmhkYi9hZG1pbi9yZXNvdXJjZXMvQWRtaW5SZXNvdXJjZXMuamF2YTogQWRk ZWQgc29tZQorIAluZXcgc3RyaW5ncyBpbiBFbmdsaXNoLgorIAkqIHNyYy9j b20vcmVkaGF0L3JoZGIvYWRtaW4vdHJlZS9BYnN0cmFjdEN1c3RvbVNpZ25h dHVyZUZhY3RvcnkuamF2YQorIAkoZ2V0T3BDbGFzc0RhdGFUeXBlc0Zyb21T aWduYXR1cmUpOiBOZXcgZnVuY3Rpb24uIFJldHVybnMgdGhlCisgCWRhdGF0 eXBlcyBvZiBhbiBvcGVyYXRvciBjbGFzcyBnaXZlbiBhIHNpZ25hdHVyZS4K KyAJKGdldE9wQ2xhc3NTaWduYXR1cmUpOiBuZXcgZnVuY3Rpb24uIFJldHVy bnMgYW4gb3AgY2xhc3Mgc2lnbmF0dXJlCisgCWdpdmVuIG5hbWUsIGFtIGFu ZCBkYXRhIHR5cGVzLgorIAkqIHNyYy9jb20vcmVkaGF0L3JoZGIvYWRtaW4v dHJlZS9BZG1pbkdlbmVyaWNUcmVlTm9kZS5qYXZhCisgCShnZXRQb3B1cE1l bnUpOiBDaGFuZ2UgZnVuY3Rpb24gdG8gdGFrZSBhIGNsaWVudCBhcyBhbiBh cmd1bWVudCwgYW5kCisgCWFsc28gcGFzcyBpdCB0byBnZXROb2RlTWVudSgp LgorIAkqIHNyYy9jb20vcmVkaGF0L3JoZGIvYWRtaW4vdHJlZS9BZG1pblRy ZWUuamF2YSAocHJvY2Vzc1BvcHVwRXZlbnQpOgorIAlQYXNzIHRoZSBjbGll bnQgdG8gZ2V0UG9wdXBtZW51KCkuCisgCSogc3JjL2NvbS9yZWRoYXQvcmhk Yi9hZG1pbi90cmVlL0FkbWluVHJlZU5vZGUuamF2YSAoZ2V0UG9wdXBNZW51 KToKKyAJQ2hhbmdlIGZ1Y250aW9uIHRvIHRha2UgYW4gQWRtaW5CYWNrZW5k Q2xpZW50IGFzIGFuIGFyZ3VtZW50LgorIAkoZ2V0Tm9kZU1lbnUpOiBEaXR0 by4KKyAJKiBzcmMvY29tL3JlZGhhdC9yaGRiL2FkbWluL3RyZWUvQWdncmVn YXRlTm9kZS5qYXZhIChnZXROb2RlTWVudSk6CisgCURpdHRvLgorIAkqIHNy Yy9jb20vcmVkaGF0L3JoZGIvYWRtaW4vdHJlZS9BZ2dyZWdhdGVzSGVhZGVy Tm9kZS5qYXZhCisgCShnZXROb2RlTWVudSk6IERpdHRvLgorIAkqIHNyYy9j b20vcmVkaGF0L3JoZGIvYWRtaW4vdHJlZS9DYXN0Tm9kZS5qYXZhIChnZXRO b2RlTWVudSk6IERpdHRvLgorIAkqIHNyYy9jb20vcmVkaGF0L3JoZGIvYWRt aW4vdHJlZS9DYXN0c0hlYWRlck5vZGUuamF2YSAoZ2V0Tm9kZU1lbnUpOgor IAlEaXR0by4KKyAJKiBzcmMvY29tL3JlZGhhdC9yaGRiL2FkbWluL3RyZWUv Q2hlY2tDb25zdHJhaW50Tm9kZS5qYXZhCisgCShnZXROb2RlTWVudSk6IERp dHRvLgorIAkqIHNyYy9jb20vcmVkaGF0L3JoZGIvYWRtaW4vdHJlZS9DbHVz dGVyTm9kZS5qYXZhIChnZXROb2RlTWVudSk6CisgCURpdHRvLgorIAkqIHNy Yy9jb20vcmVkaGF0L3JoZGIvYWRtaW4vdHJlZS9Db2x1bW5HZW5lcmljTm9k ZS5qYXZhIChnZXROb2RlTWVudSk6CisgCURpdHRvLgorIAkqIHNyYy9jb20v cmVkaGF0L3JoZGIvYWRtaW4vdHJlZS9Db2x1bW5zR2VuZXJpY0hlYWRlck5v ZGUuamF2YQorIAkoZ2V0Tm9kZU1lbnUpOiBEaXR0by4KKyAJKiBzcmMvY29t L3JlZGhhdC9yaGRiL2FkbWluL3RyZWUvQ29sdW1uc1VuZGVyVGFibGVIZWFk ZXJOb2RlLmphdmEKKyAJKGdldE5vZGVNZW51KTogRGl0dG8uCisgCSogc3Jj L2NvbS9yZWRoYXQvcmhkYi9hZG1pbi90cmVlL0NvbHVtbnNVbmRlclZpZXdI ZWFkZXJOb2RlLmphdmEKKyAJKGdldE5vZGVNZW51KTogRGl0dG8uCisgCSog c3JjL2NvbS9yZWRoYXQvcmhkYi9hZG1pbi90cmVlL0NvbHVtblVuZGVyVGFi bGVOb2RlLmphdmEKKyAJKGdldE5vZGVNZW51KTogRGl0dG8uCisgCSogc3Jj L2NvbS9yZWRoYXQvcmhkYi9hZG1pbi90cmVlL0NvbHVtblVuZGVyVmlld05v ZGUuamF2YQorIAkoZ2V0Tm9kZU1lbnUpOiBEaXR0by4KKyAJKiBzcmMvY29t L3JlZGhhdC9yaGRiL2FkbWluL3RyZWUvQ29uc3RyYWludHNIZWFkZXJOb2Rl LmphdmEKKyAJKGdldE5vZGVNZW51KTogRGl0dG8uCisgCSogc3JjL2NvbS9y ZWRoYXQvcmhkYi9hZG1pbi90cmVlL0NvbnZlcnNpb25Ob2RlLmphdmEgKGdl dE5vZGVNZW51KToKKyAJRGl0dG8uCisgCSogc3JjL2NvbS9yZWRoYXQvcmhk Yi9hZG1pbi90cmVlL0NvbnZlcnNpb25zSGVhZGVyTm9kZS5qYXZhCisgCShn ZXROb2RlTWVudSk6IERpdHRvLgorIAkqIHNyYy9jb20vcmVkaGF0L3JoZGIv YWRtaW4vdHJlZS9EYXRhYmFzZU5vZGUuamF2YSAoZG9NZW51QWN0aW9uKTog QWRkCisgCWhhbmRsaW5nIGZvciBSRU5BTUUgREFUQUJBU0UuCisgCShnZXRO b2RlTWVudSk6IENoYW5nZSBmdWNudGlvbiB0byB0YWtlIGFuIEFkbWluQmFj a2VuZENsaWVudCBhcyBhbgorIAlhcmd1bWVudC4gQWxzbywgYWRkIG1lbnUg b3B0aW9uIGZvciBSRU5BTUUgREFUQUJBU0Ugd2hlbiBiYWNrZW5kIAorIAlp cyA+IDcuMworIAkqIHNyYy9jb20vcmVkaGF0L3JoZGIvYWRtaW4vdHJlZS9E YXRhYmFzZXNIZWFkZXJOb2RlLmphdmEKKyAJKGdldE5vZGVNZW51KTogQ2hh bmdlIGZ1Y250aW9uIHRvIHRha2UgYW4gQWRtaW5CYWNrZW5kQ2xpZW50IGFz IGFuCisgCWFyZ3VtZW50LgorIAkqIHNyYy9jb20vcmVkaGF0L3JoZGIvYWRt aW4vdHJlZS9EYXRhVHlwZU5vZGUuamF2YSAoZ2V0Tm9kZU1lbnUpOgorIAlE aXR0by4KKyAJKiBzcmMvY29tL3JlZGhhdC9yaGRiL2FkbWluL3RyZWUvRGF0 YVR5cGVzSGVhZGVyTm9kZS5qYXZhCisgCShnZXROb2RlTWVudSk6IERpdHRv LgorIAkqIHNyYy9jb20vcmVkaGF0L3JoZGIvYWRtaW4vdHJlZS9Eb21haW5O b2RlLmphdmEgKGdldE5vZGVNZW51KTogRGl0dG8uCisgCSogc3JjL2NvbS9y ZWRoYXQvcmhkYi9hZG1pbi90cmVlL0RvbWFpbnNIZWFkZXJOb2RlLmphdmEg KGdldE5vZGVNZW51KToKKyAJRGl0dG8uCisgCSogc3JjL2NvbS9yZWRoYXQv cmhkYi9hZG1pbi90cmVlL0R1bW15Tm9kZS5qYXZhIChnZXROb2RlTWVudSk6 IERpdHRvLgorIAkqIHNyYy9jb20vcmVkaGF0L3JoZGIvYWRtaW4vdHJlZS9G S0NvbnN0cmFpbnROb2RlLmphdmEgKGdldE5vZGVNZW51KToKKyAJRGl0dG8u CisgCSogc3JjL2NvbS9yZWRoYXQvcmhkYi9hZG1pbi90cmVlL0Z1bmN0aW9u Tm9kZS5qYXZhIChnZXROb2RlTWVudSk6CisgCURpdHRvLgorIAkqIHNyYy9j b20vcmVkaGF0L3JoZGIvYWRtaW4vdHJlZS9GdW5jdGlvbnNIZWFkZXJOb2Rl LmphdmEKKyAJKGdldE5vZGVNZW51KTogRGl0dG8uCisgCSogc3JjL2NvbS9y ZWRoYXQvcmhkYi9hZG1pbi90cmVlL0dyb3VwTm9kZS5qYXZhIChkb01lbnVB Y3Rpb24pOiBBZGQKKyAJaGFuZGxpbmcgZm9yIFJFTkFNRSBHUk9VUC4KKyAJ KGdldE5vZGVNZW51KTogQ2hhbmdlIGZ1Y250aW9uIHRvIHRha2UgYW4gQWRt aW5CYWNrZW5kQ2xpZW50IGFzIGFuCisgCWFyZ3VtZW50LiBBbHNvLCBhZGQg bWVudSBvcHRpb24gZm9yIFJFTkFNRSBHUk9VUCB3aGVuIGJhY2tlbmQgCisg CWlzID4gNy4zLgorIAkqIHNyYy9jb20vcmVkaGF0L3JoZGIvYWRtaW4vdHJl ZS9Hcm91cHNIZWFkZXJOb2RlLmphdmEgKGdldE5vZGVNZW51KToKKyAJQ2hh bmdlIGZ1Y250aW9uIHRvIHRha2UgYW4gQWRtaW5CYWNrZW5kQ2xpZW50IGFz IGFuIGFyZ3VtZW50LgorIAkqIHNyYy9jb20vcmVkaGF0L3JoZGIvYWRtaW4v dHJlZS9JbmRleGVzSGVhZGVyTm9kZS5qYXZhIChnZXROb2RlTWVudSk6Cisg CURpdHRvLgorIAkqIHNyYy9jb20vcmVkaGF0L3JoZGIvYWRtaW4vdHJlZS9J bmRleE5vZGUuamF2YSAoZ2V0Tm9kZU1lbnUpOiBEaXR0by4KKyAJKiBzcmMv Y29tL3JlZGhhdC9yaGRiL2FkbWluL3RyZWUvTGFuZ3VhZ2VOb2RlLmphdmEg KGdldE5vZGVNZW51KToKKyAJRGl0dG8uCisgCSogc3JjL2NvbS9yZWRoYXQv cmhkYi9hZG1pbi90cmVlL0xhbmd1YWdlc0hlYWRlck5vZGUuamF2YQorIAko Z2V0Tm9kZU1lbnUpOiBEaXR0by4KKyAJKiBzcmMvY29tL3JlZGhhdC9yaGRi L2FkbWluL3RyZWUvT3BlcmF0b3JDbGFzc2VzSGVhZGVyTm9kZS5qYXZhCisg CShnZXROb2RlTWVudSk6IERpdHRvLgorIAkqIHNyYy9jb20vcmVkaGF0L3Jo ZGIvYWRtaW4vdHJlZS9PcGVyYXRvckNsYXNzTm9kZS5qYXZhCisgCShkb01l bnVBY3Rpb24pOiBBZGQgaGFuZGxpbmcgZm9yIFJFTkFNRSBPUEVSQVRPUiBD TEFTUy4KKyAJKGdldE5vZGVNZW51KTogQ2hhbmdlIGZ1Y250aW9uIHRvIHRh a2UgYW4gQWRtaW5CYWNrZW5kQ2xpZW50IGFzIGFuCisgCWFyZ3VtZW50LiBB bHNvLCBhZGQgbWVudSBvcHRpb24gZm9yIFJFTkFNRSBPUEVSQVRPUiBDTEFT UyB3aGVuIGJhY2tlbmQgCisgCWlzID4gNy4zLgorIAkqIHNyYy9jb20vcmVk aGF0L3JoZGIvYWRtaW4vdHJlZS9PcGVyYXRvck5vZGUuamF2YSAoZ2V0Tm9k ZU1lbnUpOgorIAlDaGFuZ2UgZnVjbnRpb24gdG8gdGFrZSBhbiBBZG1pbkJh Y2tlbmRDbGllbnQgYXMgYW4gYXJndW1lbnQuCisgCSogc3JjL2NvbS9yZWRo YXQvcmhkYi9hZG1pbi90cmVlL09wZXJhdG9yc0hlYWRlck5vZGUuamF2YQor IAkoZ2V0Tm9kZU1lbnUpOiBEaXR0by4KKyAJKiBzcmMvY29tL3JlZGhhdC9y aGRiL2FkbWluL3RyZWUvUEtDb25zdHJhaW50Tm9kZS5qYXZhIChnZXROb2Rl TWVudSk6CisgCURpdHRvLgorIAkqIHNyYy9jb20vcmVkaGF0L3JoZGIvYWRt aW4vdHJlZS9Sb290Tm9kZS5qYXZhIChnZXROb2RlTWVudSk6IERpdHRvLgor IAkqIHNyYy9jb20vcmVkaGF0L3JoZGIvYWRtaW4vdHJlZS9SdWxlR2VuZXJp Y05vZGUuamF2YSAoZ2V0Tm9kZU1lbnUpOgorIAlEaXR0by4KKyAJKiBzcmMv Y29tL3JlZGhhdC9yaGRiL2FkbWluL3RyZWUvUnVsZXNHZW5lcmljSGVhZGVy Tm9kZS5qYXZhCisgCShnZXROb2RlTWVudSk6IERpdHRvLgorIAkqIHNyYy9j b20vcmVkaGF0L3JoZGIvYWRtaW4vdHJlZS9SdWxlc1VuZGVyVGFibGVIZWFk ZXJOb2RlLmphdmEKKyAJKGdldE5vZGVNZW51KTogRGl0dG8uCisgCSogc3Jj L2NvbS9yZWRoYXQvcmhkYi9hZG1pbi90cmVlL1J1bGVzVW5kZXJWaWV3SGVh ZGVyTm9kZS5qYXZhCisgCShnZXROb2RlTWVudSk6IERpdHRvLgorIAkqIHNy Yy9jb20vcmVkaGF0L3JoZGIvYWRtaW4vdHJlZS9SdWxlVW5kZXJUYWJsZU5v ZGUuamF2YQorIAkoZ2V0Tm9kZU1lbnUpOiBEaXR0by4KKyAJKiBzcmMvY29t L3JlZGhhdC9yaGRiL2FkbWluL3RyZWUvUnVsZVVuZGVyVmlld05vZGUuamF2 YSAoZ2V0Tm9kZU1lbnUpOgorIAlEaXR0by4KKyAJKiBzcmMvY29tL3JlZGhh dC9yaGRiL2FkbWluL3RyZWUvU2NoZW1hTm9kZS5qYXZhIChkb01lbnVBY3Rp b24pOiBBZGQKKyAJaGFuZGxpbmcgZm9yIFJFTkFNRSBTQ0hFTUEuCisgCShn ZXROb2RlTWVudSk6IENoYW5nZSBmdWNudGlvbiB0byB0YWtlIGFuIEFkbWlu QmFja2VuZENsaWVudCBhcyBhbgorIAlhcmd1bWVudC4gQWxzbywgYWRkIG1l bnUgb3B0aW9uIGZvciBSRU5BTUUgU0NIRU1BIHdoZW4gYmFja2VuZCAKKyAJ aXMgPiA3LjMuCisgCSogc3JjL2NvbS9yZWRoYXQvcmhkYi9hZG1pbi90cmVl L1NjaGVtYXNIZWFkZXJOb2RlLmphdmEgKGdldE5vZGVNZW51KToKKyAJQ2hh bmdlIGZ1Y250aW9uIHRvIHRha2UgYW4gQWRtaW5CYWNrZW5kQ2xpZW50IGFz IGFuIGFyZ3VtZW50LgorIAkqIHNyYy9jb20vcmVkaGF0L3JoZGIvYWRtaW4v dHJlZS9TZXF1ZW5jZU5vZGUuamF2YSAoZ2V0Tm9kZU1lbnUpOgorIAlEaXR0 by4KKyAJKiBzcmMvY29tL3JlZGhhdC9yaGRiL2FkbWluL3RyZWUvU2VxdWVu Y2VzSGVhZGVyTm9kZS5qYXZhCisgCShnZXROb2RlTWVudSk6IERpdHRvLgor IAkqIHNyYy9jb20vcmVkaGF0L3JoZGIvYWRtaW4vdHJlZS9UYWJsZU5vZGUu amF2YSAoZ2V0Tm9kZU1lbnUpOiBEaXR0by4KKyAJKiBzcmMvY29tL3JlZGhh dC9yaGRiL2FkbWluL3RyZWUvVGFibGVzSGVhZGVyTm9kZS5qYXZhIChnZXRO b2RlTWVudSk6CisgCURpdHRvLgorIAkqIHNyYy9jb20vcmVkaGF0L3JoZGIv YWRtaW4vdHJlZS9UcmlnZ2VyTm9kZS5qYXZhIChnZXROb2RlTWVudSk6Cisg CURpdHRvLgorIAkqIHNyYy9jb20vcmVkaGF0L3JoZGIvYWRtaW4vdHJlZS9U cmlnZ2Vyc0hlYWRlck5vZGUuamF2YQorIAkoZ2V0Tm9kZU1lbnUpOiBEaXR0 by4KKyAJKiBzcmMvY29tL3JlZGhhdC9yaGRiL2FkbWluL3RyZWUvVW5pcXVl Q29uc3RyYWludE5vZGUuamF2YQorIAkoZ2V0Tm9kZU1lbnUpOiBEaXR0by4K KyAJKiBzcmMvY29tL3JlZGhhdC9yaGRiL2FkbWluL3RyZWUvVXNlck5vZGUu amF2YSAoZG9NZW51QWN0aW9uKTogQWRkCisgCWhhbmRsaW5nIGZvciBSRU5B TUUgVVNFUi4KKyAJKGdldE5vZGVNZW51KTogQ2hhbmdlIGZ1Y250aW9uIHRv IHRha2UgYW4gQWRtaW5CYWNrZW5kQ2xpZW50IGFzIGFuCisgCWFyZ3VtZW50 LiBBbHNvLCBhZGQgbWVudSBvcHRpb24gZm9yIFJFTkFNRSBVU0VSIHdoZW4g YmFja2VuZCAKKyAJaXMgPiA3LjMuCisgCSogc3JjL2NvbS9yZWRoYXQvcmhk Yi9hZG1pbi90cmVlL1VzZXJzSGVhZGVyTm9kZS5qYXZhIChnZXROb2RlTWVu dSk6CisgCUNoYW5nZSBmdWNudGlvbiB0byB0YWtlIGFuIEFkbWluQmFja2Vu ZENsaWVudCBhcyBhbiBhcmd1bWVudC4KKyAJKiBzcmMvY29tL3JlZGhhdC9y aGRiL2FkbWluL3RyZWUvVmlld05vZGUuamF2YSAoZ2V0Tm9kZU1lbnUpOiBE aXR0by4KKyAJKiBzcmMvY29tL3JlZGhhdC9yaGRiL2FkbWluL3RyZWUvVmll d3NIZWFkZXJOb2RlLmphdmEgKGdldE5vZGVNZW51KToKKyAJRGl0dG8uCisg CiAgMjAwMy0xMS0yMSAgRmVybmFuZG8gTmFzc2VyICA8Zm5hc3NlckByZWRo YXQuY29tPiAKICAKICAJKiBJbml0aWFsIHB1YmxpYyByZXZpc2lvbi4KSW5k ZXg6IHNyYy9jb20vcmVkaGF0L3JoZGIvYWRtaW4vQWRtaW5CYWNrZW5kQ2xp ZW50LmphdmEKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2 cy9yaGRiL3NyYy9yaGRiL2d1aXRvb2xzL3JoZGItYWRtaW4vc3JjL2NvbS9y ZWRoYXQvcmhkYi9hZG1pbi9BZG1pbkJhY2tlbmRDbGllbnQuamF2YSx2CnJl dHJpZXZpbmcgcmV2aXNpb24gMS4xLjEuMQpkaWZmIC1jIC1wIC1yMS4xLjEu MSBBZG1pbkJhY2tlbmRDbGllbnQuamF2YQoqKiogc3JjL2NvbS9yZWRoYXQv cmhkYi9hZG1pbi9BZG1pbkJhY2tlbmRDbGllbnQuamF2YQkyMSBOb3YgMjAw MyAxODozMDoxOSAtMDAwMAkxLjEuMS4xCi0tLSBzcmMvY29tL3JlZGhhdC9y aGRiL2FkbWluL0FkbWluQmFja2VuZENsaWVudC5qYXZhCTIyIERlYyAyMDAz IDE5OjMxOjAzIC0wMDAwCioqKioqKioqKioqKioqKiBwdWJsaWMgY2xhc3Mg QWRtaW5CYWNrZW5kQ2xpZW50IHsKKioqIDEwNiwxMTcgKioqKgogIAlwdWJs aWMgZG91YmxlIGdldEJhY2tlbmRWZXJzaW9uKFN0cmluZyBjbHVzdGVyTmFt ZSkgdGhyb3dzIENsYXNzTm90Rm91bmRFeGNlcHRpb24sIElPRXhjZXB0aW9u LCBTUUxFeGNlcHRpb24gewogIAkJQ29ubmVjdGlvbiBjb25uID0gY29ublBv b2wuZ2V0Q29ubmVjdGlvbihjbHVzdGVyTmFtZSk7CiAgCQkKISAJCWlmICgo KEpkYmMzQ29ubmVjdGlvbikgY29ubikuZ2V0REJWZXJzaW9uTnVtYmVyKCku Y29tcGFyZVRvKCI3LjIiKSA+PSAwIAohIAkJJiYgICgoSmRiYzNDb25uZWN0 aW9uKSBjb25uKS5nZXREQlZlcnNpb25OdW1iZXIoKS5jb21wYXJlVG8oIjcu NCIpIDw9IDApIAogIAkJCXJldHVybiA3LjM7CiAgCQkKISAJCWlmICgoKEpk YmMzQ29ubmVjdGlvbikgY29ubikuZ2V0REJWZXJzaW9uTnVtYmVyKCkuY29t cGFyZVRvKCI3LjMiKSA+PSAwIAohIAkJJiYgICgoSmRiYzNDb25uZWN0aW9u KSBjb25uKS5nZXREQlZlcnNpb25OdW1iZXIoKS5jb21wYXJlVG8oIjcuNSIp IDw9IDApIAogIAkJCXJldHVybiA3LjQ7CiAgCQkKICAJCS8vIEZJWE1FOiBX aGF0IHNob3VsZCB0aGUgImRlZmF1bHQiIGJlPwotLS0gMTA2LDExNyAtLS0t CiAgCXB1YmxpYyBkb3VibGUgZ2V0QmFja2VuZFZlcnNpb24oU3RyaW5nIGNs dXN0ZXJOYW1lKSB0aHJvd3MgQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiwgSU9F eGNlcHRpb24sIFNRTEV4Y2VwdGlvbiB7CiAgCQlDb25uZWN0aW9uIGNvbm4g PSBjb25uUG9vbC5nZXRDb25uZWN0aW9uKGNsdXN0ZXJOYW1lKTsKICAJCQoh IAkJaWYgKCgoSmRiYzNDb25uZWN0aW9uKSBjb25uKS5nZXREQlZlcnNpb25O dW1iZXIoKS5jb21wYXJlVG8oIjcuMiIpID4gMCAKISAJCSYmICAoKEpkYmMz Q29ubmVjdGlvbikgY29ubikuZ2V0REJWZXJzaW9uTnVtYmVyKCkuY29tcGFy ZVRvKCI3LjQiKSA8IDApCiAgCQkJcmV0dXJuIDcuMzsKICAJCQohIAkJaWYg KCgoSmRiYzNDb25uZWN0aW9uKSBjb25uKS5nZXREQlZlcnNpb25OdW1iZXIo KS5jb21wYXJlVG8oIjcuMyIpID4gMCAKISAJCSYmICAoKEpkYmMzQ29ubmVj dGlvbikgY29ubikuZ2V0REJWZXJzaW9uTnVtYmVyKCkuY29tcGFyZVRvKCI3 LjUiKSA8IDApCiAgCQkJcmV0dXJuIDcuNDsKICAJCQogIAkJLy8gRklYTUU6 IFdoYXQgc2hvdWxkIHRoZSAiZGVmYXVsdCIgYmU/CkluZGV4OiBzcmMvY29t L3JlZGhhdC9yaGRiL2FkbWluL0RhdGFiYXNlVXBkYXRlLmphdmEKPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yaGRiL3NyYy9yaGRi L2d1aXRvb2xzL3JoZGItYWRtaW4vc3JjL2NvbS9yZWRoYXQvcmhkYi9hZG1p bi9EYXRhYmFzZVVwZGF0ZS5qYXZhLHYKcmV0cmlldmluZyByZXZpc2lvbiAx LjEuMS4xCmRpZmYgLWMgLXAgLXIxLjEuMS4xIERhdGFiYXNlVXBkYXRlLmph dmEKKioqIHNyYy9jb20vcmVkaGF0L3JoZGIvYWRtaW4vRGF0YWJhc2VVcGRh dGUuamF2YQkyMSBOb3YgMjAwMyAxODozMDoyMiAtMDAwMAkxLjEuMS4xCi0t LSBzcmMvY29tL3JlZGhhdC9yaGRiL2FkbWluL0RhdGFiYXNlVXBkYXRlLmph dmEJMjIgRGVjIDIwMDMgMTk6MzE6MDMgLTAwMDAKKioqKioqKioqKioqKioq IHB1YmxpYyBjbGFzcyBEYXRhYmFzZVVwZGF0ZSBleHRlbmRzIE9iamUKKioq IDIxNSwyMTkgKioqKgotLS0gMjE1LDI1MCAtLS0tCiAgCQl9CQogIAkKICAJ fQorIAkKKyAJLyoqCisgCSAqIFJlbmFtZXMgYSBkYXRhYmFzZQorIAkgKgor IAkgKiBAcGFyYW0gY2xpZW50IFRoZSBiYWNrZW5kIGNsaWVudC4KKyAJICog QHBhcmFtIG5vZGUgdGhlIGludm9raW5nIGRhdGFiYXNlIG5vZGUuCisgCSAq IEBwYXJhbSBuYW1lIHRoZSBuZXcgbmFtZSBvZiB0aGUgZGF0YWJhc2UuCisg CSAqIEB0aHJvd3MgT2JqZWN0VXBkYXRlRXhjZXB0aW9uIGlmIHRoZSBkYXRh YmFzZSBjYW5ub3QgYmUgcmVuYW1lZC4KKyAJICovCisgCisgCXB1YmxpYyBz dGF0aWMgdm9pZCByZW5hbWVEYXRhYmFzZShBZG1pbkJhY2tlbmRDbGllbnQg Y2xpZW50LCBEYXRhYmFzZU5vZGUgbm9kZSwgU3RyaW5nIG5hbWUpIHRocm93 cyBPYmplY3RVcGRhdGVFeGNlcHRpb24geworIAkKKyAJCVN0cmluZyB1cGRh dGVTdHJpbmcgPSAiQUxURVIgREFUQUJBU0UgIjsKKyAJCQorIAkJdXBkYXRl U3RyaW5nICs9IEFkbWluTWlzY0Z1bmN0aW9ucy5nZXREb3VibGVRdW90ZWRJ ZGVudGlmaWVyKG5vZGUudG9TdHJpbmcoKSk7CisgCQkKKyAJCXVwZGF0ZVN0 cmluZyArPSAiIFJFTkFNRSBUTyAiICsgbmFtZTsKKyAJCQorIAkJLy8gcGVy Zm9ybSB0aGUgdXBkYXRlLiBBbnkgZXJyb3JzIGFyZSBwYXNzZWQgdG8gdGhl IHBhcmVudAorIAorIAkJLy8gTmVlZCB0byBkcm9wIGNvbm5lY3Rpb24gdG8g Y3VycmVudCBkYXRhYmFzZSBmaXJzdC4uCisgCQkKKyAJCWNsaWVudC5kcm9w Q29ubmVjdGlvbihub2RlLmdldFBhcmVudENsdXN0ZXJOYW1lKCksIG5vZGUu dG9TdHJpbmcoKSk7CisgCQkKKyAJCXRyeSB7CisgCQkJY2xpZW50LnBlcmZv cm1VcGRhdGUobm9kZS5nZXRQYXJlbnRDbHVzdGVyTmFtZSgpLCAidGVtcGxh dGUxIiwgdXBkYXRlU3RyaW5nKTsKKyAJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBl KSB7CisgCQkJdGhyb3cgbmV3IE9iamVjdFVwZGF0ZUV4Y2VwdGlvbihlLmdl dE1lc3NhZ2UoKSk7CisgCQl9CQorIAkKKyAJfQogIAogIH0KSW5kZXg6IHNy Yy9jb20vcmVkaGF0L3JoZGIvYWRtaW4vR3JvdXBVcGRhdGUuamF2YQo9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3JoZGIvc3JjL3Jo ZGIvZ3VpdG9vbHMvcmhkYi1hZG1pbi9zcmMvY29tL3JlZGhhdC9yaGRiL2Fk bWluL0dyb3VwVXBkYXRlLmphdmEsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEu MS4xLjEKZGlmZiAtYyAtcCAtcjEuMS4xLjEgR3JvdXBVcGRhdGUuamF2YQoq Kiogc3JjL2NvbS9yZWRoYXQvcmhkYi9hZG1pbi9Hcm91cFVwZGF0ZS5qYXZh CTIxIE5vdiAyMDAzIDE4OjMwOjIzIC0wMDAwCTEuMS4xLjEKLS0tIHNyYy9j b20vcmVkaGF0L3JoZGIvYWRtaW4vR3JvdXBVcGRhdGUuamF2YQkyMiBEZWMg MjAwMyAxOTozMTowMyAtMDAwMAoqKioqKioqKioqKioqKiogcGFja2FnZSBj b20ucmVkaGF0LnJoZGIuYWRtaW47CioqKiAxNiwyMSAqKioqCi0tLSAxNiwy MiAtLS0tCiAgaW1wb3J0IGphdmEudXRpbC4qOwogIAogIGltcG9ydCBjb20u cmVkaGF0LnJoZGIuYWRtaW4ucmVzb3VyY2VzLio7CisgaW1wb3J0IGNvbS5y ZWRoYXQucmhkYi5hZG1pbi50cmVlLio7CiAgaW1wb3J0IGNvbS5yZWRoYXQu cmhkYi5hZG1pbi51dGlscy4qOwogIAogIC8qKgoqKioqKioqKioqKioqKiog cHVibGljIGNsYXNzIEdyb3VwVXBkYXRlIGV4dGVuZHMgT2JqZWN0VQoqKiog MTg0LDE4OCAqKioqCi0tLSAxODUsMjE2IC0tLS0KICAJCX0gY2F0Y2ggKEV4 Y2VwdGlvbiBlKSB7CiAgCQkJdGhyb3cgbmV3IE9iamVjdFVwZGF0ZUV4Y2Vw dGlvbihlLmdldE1lc3NhZ2UoKSk7CiAgCQl9CisgCX0KKyAJCisgCS8qKgor IAkgKiBSZW5hbWVzIGEgZ3JvdXAKKyAJICoKKyAJICogQHBhcmFtIGNsaWVu dCBUaGUgYmFja2VuZCBjbGllbnQuCisgCSAqIEBwYXJhbSBub2RlIHRoZSBp bnZva2luZyBncm91cCBub2RlLgorIAkgKiBAcGFyYW0gbmFtZSB0aGUgbmV3 IG5hbWUgb2YgdGhlIGdyb3VwLgorIAkgKiBAdGhyb3dzIE9iamVjdFVwZGF0 ZUV4Y2VwdGlvbiBpZiB0aGUgZ3JvdXAgY2Fubm90IGJlIHJlbmFtZWQuCisg CSAqLworIAorIAlwdWJsaWMgc3RhdGljIHZvaWQgcmVuYW1lR3JvdXAoQWRt aW5CYWNrZW5kQ2xpZW50IGNsaWVudCwgR3JvdXBOb2RlIG5vZGUsIFN0cmlu ZyBuYW1lKSB0aHJvd3MgT2JqZWN0VXBkYXRlRXhjZXB0aW9uIHsKKyAJCisg CQlTdHJpbmcgdXBkYXRlU3RyaW5nID0gIkFMVEVSIEdST1VQICI7CisgCQkK KyAJCXVwZGF0ZVN0cmluZyArPSBBZG1pbk1pc2NGdW5jdGlvbnMuZ2V0RG91 YmxlUXVvdGVkSWRlbnRpZmllcihub2RlLnRvU3RyaW5nKCkpOworIAkJCisg CQl1cGRhdGVTdHJpbmcgKz0gIiBSRU5BTUUgVE8gIiArIG5hbWU7CisgCQkK KyAJCS8vIHBlcmZvcm0gdGhlIHVwZGF0ZS4gQW55IGVycm9ycyBhcmUgcGFz c2VkIHRvIHRoZSBwYXJlbnQKKyAKKyAJCXRyeSB7CisgCQkJY2xpZW50LnBl cmZvcm1VcGRhdGUobm9kZS5nZXRQYXJlbnRDbHVzdGVyTmFtZSgpLCAidGVt cGxhdGUxIiwgdXBkYXRlU3RyaW5nKTsKKyAJCX0gY2F0Y2ggKEV4Y2VwdGlv biBlKSB7CisgCQkJdGhyb3cgbmV3IE9iamVjdFVwZGF0ZUV4Y2VwdGlvbihl LmdldE1lc3NhZ2UoKSk7CisgCQl9CQorIAkKICAJfQogIH0KSW5kZXg6IHNy Yy9jb20vcmVkaGF0L3JoZGIvYWRtaW4vT3BlcmF0b3JDbGFzc1VwZGF0ZS5q YXZhCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcmhk Yi9zcmMvcmhkYi9ndWl0b29scy9yaGRiLWFkbWluL3NyYy9jb20vcmVkaGF0 L3JoZGIvYWRtaW4vT3BlcmF0b3JDbGFzc1VwZGF0ZS5qYXZhLHYKcmV0cmll dmluZyByZXZpc2lvbiAxLjEuMS4xCmRpZmYgLWMgLXAgLXIxLjEuMS4xIE9w ZXJhdG9yQ2xhc3NVcGRhdGUuamF2YQoqKiogc3JjL2NvbS9yZWRoYXQvcmhk Yi9hZG1pbi9PcGVyYXRvckNsYXNzVXBkYXRlLmphdmEJMjEgTm92IDIwMDMg MTg6MzA6MjMgLTAwMDAJMS4xLjEuMQotLS0gc3JjL2NvbS9yZWRoYXQvcmhk Yi9hZG1pbi9PcGVyYXRvckNsYXNzVXBkYXRlLmphdmEJMjIgRGVjIDIwMDMg MTk6MzE6MDMgLTAwMDAKKioqKioqKioqKioqKioqIHB1YmxpYyBhYnN0cmFj dCBjbGFzcyBPcGVyYXRvckNsYXNzVXBkYXQKKioqIDE1MSwxNTUgKioqKgot LS0gMTUxLDE4OCAtLS0tCiAgCQl9CiAgCQogIAl9CisgCQorIAkKKyAJLyoq CisgCSAqIFJlbmFtZXMgYW4gb3BlcmF0b3IgY2xhc3MKKyAJICoKKyAJICog QHBhcmFtIGNsaWVudCBUaGUgYmFja2VuZCBjbGllbnQuCisgCSAqIEBwYXJh bSBub2RlIHRoZSBpbnZva2luZyB0YWJsZSBub2RlLgorIAkgKiBAcGFyYW0g bmFtZSB0aGUgbmV3IG5hbWUgb2YgdGhlIG9wIGNsYXNzLgorIAkgKiBAdGhy b3dzIE9iamVjdFVwZGF0ZUV4Y2VwdGlvbiBpZiB0aGUgdGFibGUgY2Fubm90 IGJlIHJlbmFtZWQuCisgCSAqLworIAorIAlwdWJsaWMgc3RhdGljIHZvaWQg cmVuYW1lT3BDbGFzcyhBZG1pbkJhY2tlbmRDbGllbnQgY2xpZW50LCBPcGVy YXRvckNsYXNzTm9kZSBub2RlLCBTdHJpbmcgbmFtZSkgdGhyb3dzIE9iamVj dFVwZGF0ZUV4Y2VwdGlvbiB7CisgCisgCQkvLyBJbmRleCBtZXRob2QuLgor IAkJCisgCQlTdHJpbmcgaW0gPSBub2RlLmdldEFjY2Vzc01ldGhvZCgpOwor IAkJCisgCQlTdHJpbmcgdXBkYXRlU3RyaW5nID0gIkFMVEVSIE9QRVJBVE9S IENMQVNTICI7CisgCisgCQl1cGRhdGVTdHJpbmcgKz0gQWRtaW5NaXNjRnVu Y3Rpb25zLmdldERvdWJsZVF1b3RlZElkZW50aWZpZXIobm9kZS5nZXRQYXJl bnRTY2hlbWFOYW1lKCkpICsgIi4iOworIAkJdXBkYXRlU3RyaW5nICs9IEFk bWluTWlzY0Z1bmN0aW9ucy5nZXREb3VibGVRdW90ZWRJZGVudGlmaWVyKG5v ZGUuZ2V0TmFtZSgpKTsKKyAJCXVwZGF0ZVN0cmluZyArPSAiIFVTSU5HICIg KyBpbTsKKyAJCXVwZGF0ZVN0cmluZyArPSAiIFJFTkFNRSBUTyAiICsgbmFt ZTsKKyAKKyAJCS8vIHBlcmZvcm0gdGhlIHVwZGF0ZS4gQW55IGVycm9ycyBh cmUgcGFzc2VkIHRvIHRoZSBwYXJlbnQKKyAKKyAJCXRyeSB7CisgCQkJY2xp ZW50LnBlcmZvcm1VcGRhdGUobm9kZS5nZXRQYXJlbnRDbHVzdGVyTmFtZSgp LCBub2RlLmdldFBhcmVudERhdGFiYXNlTmFtZSgpLCB1cGRhdGVTdHJpbmcp OworIAkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAJCQl0aHJvdyBuZXcg T2JqZWN0VXBkYXRlRXhjZXB0aW9uKGUuZ2V0TWVzc2FnZSgpKTsKKyAJCX0J CisgCQorIAl9CiAgCiAgfQpJbmRleDogc3JjL2NvbS9yZWRoYXQvcmhkYi9h ZG1pbi9SZW5hbWVEaWFsb2cuamF2YQo9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 ClJDUyBmaWxlOiAvY3ZzL3JoZGIvc3JjL3JoZGIvZ3VpdG9vbHMvcmhkYi1h ZG1pbi9zcmMvY29tL3JlZGhhdC9yaGRiL2FkbWluL1JlbmFtZURpYWxvZy5q YXZhLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjEuMS4xCmRpZmYgLWMgLXAg LXIxLjEuMS4xIFJlbmFtZURpYWxvZy5qYXZhCioqKiBzcmMvY29tL3JlZGhh dC9yaGRiL2FkbWluL1JlbmFtZURpYWxvZy5qYXZhCTIxIE5vdiAyMDAzIDE4 OjMwOjI0IC0wMDAwCTEuMS4xLjEKLS0tIHNyYy9jb20vcmVkaGF0L3JoZGIv YWRtaW4vUmVuYW1lRGlhbG9nLmphdmEJMjIgRGVjIDIwMDMgMTk6MzE6MDQg LTAwMDAKKioqKioqKioqKioqKioqIHB1YmxpYyBjbGFzcyBSZW5hbWVEaWFs b2cgZXh0ZW5kcyBBbHRlckMKKioqIDQ1LDUyICoqKioKICAgICAgICAgIHRo aXMuaW52b2NhdGlvbk5vZGUgPSBub2RlOwogICAgICAgICAgCiAgICAgICAg ICAvLyB1cGRhdGUgdGl0bGUgYW5kIG5hbWUgYm94CiEgICAgICAgICBzZXRU aXRsZShBZG1pblJlc291cmNlcy5nZXRTdHJpbmcoQWRtaW5SZXNvdXJjZXMu RExHX1JFTkFNRV9USVRMRSwgb2JqZWN0VHlwZS50b1VwcGVyQ2FzZSgpLCBp bnZvY2F0aW9uTm9kZS50b1N0cmluZygpKSk7CiEgICAgICAgICBqdGZOYW1l LnNldFRleHQoaW52b2NhdGlvbk5vZGUudG9TdHJpbmcoKSk7CiAgICAgICAg ICBqbGJOYW1lLnNldFRleHQoQWRtaW5SZXNvdXJjZXMuZ2V0U3RyaW5nKEFk bWluUmVzb3VyY2VzLkRMR19SRU5BTUVfTEFCRUwsIG9iamVjdFR5cGUpKTsK ICAgICAgICAgIAogICAgICAgICAgY2VudGVyRGlhbG9nKCk7Ci0tLSA0NSw2 OSAtLS0tCiAgICAgICAgICB0aGlzLmludm9jYXRpb25Ob2RlID0gbm9kZTsK ICAgICAgICAgIAogICAgICAgICAgLy8gdXBkYXRlIHRpdGxlIGFuZCBuYW1l IGJveAohIAkJCiEgICAgICAgICAvLyBTb21lIG5vZGVzIHN1Y2ggYXMgT3Bl cmF0b3IgQ2xhc3NlcyBoYXZlIG5hbWVzIGVtYmVkZGVkIGluc2lkZSB0aGUg CiEgICAgICAgICAvLyBzaWduYXR1cmUuIFdlIG5lZWQgdG8gcHV0IGl0IGlu IHRoZSByZW5hbWUgZGlhbG9nIGFwcHJvcHJpYXRlbHkuCiEgCQkKISAgICAg ICAgIFN0cmluZyBuYW1lID0gaW52b2NhdGlvbk5vZGUudG9TdHJpbmcoKTsK ISAJCQohICAgICAgICAgaWYgKGludm9jYXRpb25Ob2RlIGluc3RhbmNlb2Yg T3BlcmF0b3JDbGFzc05vZGUpIHsKISAJCQluYW1lID0gKChPcGVyYXRvckNs YXNzTm9kZSkgaW52b2NhdGlvbk5vZGUpLmdldE5hbWUoKTsKISAgICAgICAg IH0KISAKISAgICAgICAgIHNldFRpdGxlKEFkbWluUmVzb3VyY2VzLmdldFN0 cmluZyhBZG1pblJlc291cmNlcy5ETEdfUkVOQU1FX1RJVExFLCBvYmplY3RU eXBlLnRvVXBwZXJDYXNlKCksIG5hbWUpKTsKISAJCQohICAgICAgICAgLy8g UHV0IHRoZSBuYW1lIGluIHF1b3RlcyBmb3IgdGhlIHVzZXIgaWYgYXV0byBx dW90aW5nIGlzIG9mZgohIAkJCiEgICAgICAgICBpZiAoIUFkbWluQ29uZmln LmF1dG9RdW90ZUlkZW50aWZpZXJzKCkpIHsKISAJCQluYW1lID0gQWRtaW5N aXNjRnVuY3Rpb25zLmdldERvdWJsZVF1b3RlZElkZW50aWZpZXIobmFtZSk7 CiEgICAgICAgICB9CiEgCiEgICAgICAgICBqdGZOYW1lLnNldFRleHQobmFt ZSk7CiAgICAgICAgICBqbGJOYW1lLnNldFRleHQoQWRtaW5SZXNvdXJjZXMu Z2V0U3RyaW5nKEFkbWluUmVzb3VyY2VzLkRMR19SRU5BTUVfTEFCRUwsIG9i amVjdFR5cGUpKTsKICAgICAgICAgIAogICAgICAgICAgY2VudGVyRGlhbG9n KCk7CioqKioqKioqKioqKioqKiBwdWJsaWMgY2xhc3MgUmVuYW1lRGlhbG9n IGV4dGVuZHMgQWx0ZXJDCioqKiAyMDUsMjExICoqKioKICAJCQlWaWV3VXBk YXRlLnJlbmFtZVZpZXcoYmFja2VuZENsaWVudCwgKFZpZXdOb2RlKSBpbnZv Y2F0aW9uTm9kZSwgcXVvdGVkTmFtZSk7CiAgCQllbHNlIGlmIChpbnZvY2F0 aW9uTm9kZSBpbnN0YW5jZW9mIEluZGV4Tm9kZSkKICAJCQlJbmRleFVwZGF0 ZS5hbHRlckluZGV4KGJhY2tlbmRDbGllbnQsIChJbmRleE5vZGUpIGludm9j YXRpb25Ob2RlLCBPYmplY3RVcGRhdGUuQUxURVJfSU5ERVhfQUNUSU9OX1JF TkFNRSwgcXVvdGVkTmFtZSk7CiEgCQkJCQogIAkJLy8gUmVhY2hlZCBoZXJl ID0+IGFsbCB3ZW50IHdlbGwKICAJCQogIAkJLy8gd2lsbCBuZWVkIHRoaXMg dG8gY29tcHV0ZSB0aGUgbmV3IHBhdGggYW5kIGdvIHRvIGl0IGlmIHRoaXMg aXMgdGhlIHNlbGVjdGVkIG5vZGUuLgotLS0gMjIyLDIzOCAtLS0tCiAgCQkJ Vmlld1VwZGF0ZS5yZW5hbWVWaWV3KGJhY2tlbmRDbGllbnQsIChWaWV3Tm9k ZSkgaW52b2NhdGlvbk5vZGUsIHF1b3RlZE5hbWUpOwogIAkJZWxzZSBpZiAo aW52b2NhdGlvbk5vZGUgaW5zdGFuY2VvZiBJbmRleE5vZGUpCiAgCQkJSW5k ZXhVcGRhdGUuYWx0ZXJJbmRleChiYWNrZW5kQ2xpZW50LCAoSW5kZXhOb2Rl KSBpbnZvY2F0aW9uTm9kZSwgT2JqZWN0VXBkYXRlLkFMVEVSX0lOREVYX0FD VElPTl9SRU5BTUUsIHF1b3RlZE5hbWUpOwohIAkJZWxzZSBpZiAoaW52b2Nh dGlvbk5vZGUgaW5zdGFuY2VvZiBPcGVyYXRvckNsYXNzTm9kZSkKISAJCQlP cGVyYXRvckNsYXNzVXBkYXRlLnJlbmFtZU9wQ2xhc3MoYmFja2VuZENsaWVu dCwgKE9wZXJhdG9yQ2xhc3NOb2RlKSBpbnZvY2F0aW9uTm9kZSwgcXVvdGVk TmFtZSk7CiEgCQllbHNlIGlmIChpbnZvY2F0aW9uTm9kZSBpbnN0YW5jZW9m IFNjaGVtYU5vZGUpCiEgCQkJU2NoZW1hVXBkYXRlLnJlbmFtZVNjaGVtYShi YWNrZW5kQ2xpZW50LCAoU2NoZW1hTm9kZSkgaW52b2NhdGlvbk5vZGUsIHF1 b3RlZE5hbWUpOwohIAkJZWxzZSBpZiAoaW52b2NhdGlvbk5vZGUgaW5zdGFu Y2VvZiBEYXRhYmFzZU5vZGUpCiEgCQkJRGF0YWJhc2VVcGRhdGUucmVuYW1l RGF0YWJhc2UoYmFja2VuZENsaWVudCwgKERhdGFiYXNlTm9kZSkgaW52b2Nh dGlvbk5vZGUsIHF1b3RlZE5hbWUpOwohIAkJZWxzZSBpZiAoaW52b2NhdGlv bk5vZGUgaW5zdGFuY2VvZiBHcm91cE5vZGUpCiEgCQkJR3JvdXBVcGRhdGUu cmVuYW1lR3JvdXAoYmFja2VuZENsaWVudCwgKEdyb3VwTm9kZSkgaW52b2Nh dGlvbk5vZGUsIHF1b3RlZE5hbWUpOwohIAkJZWxzZSBpZiAoaW52b2NhdGlv bk5vZGUgaW5zdGFuY2VvZiBVc2VyTm9kZSkKISAJCQlVc2VyVXBkYXRlLnJl bmFtZVVzZXIoYmFja2VuZENsaWVudCwgKFVzZXJOb2RlKSBpbnZvY2F0aW9u Tm9kZSwgcXVvdGVkTmFtZSk7CiEgCiAgCQkvLyBSZWFjaGVkIGhlcmUgPT4g YWxsIHdlbnQgd2VsbAogIAkJCiAgCQkvLyB3aWxsIG5lZWQgdGhpcyB0byBj b21wdXRlIHRoZSBuZXcgcGF0aCBhbmQgZ28gdG8gaXQgaWYgdGhpcyBpcyB0 aGUgc2VsZWN0ZWQgbm9kZS4uCioqKioqKioqKioqKioqKiBwdWJsaWMgY2xh c3MgUmVuYW1lRGlhbG9nIGV4dGVuZHMgQWx0ZXJDCioqKiAyMTYsMjI3ICoq KioKICAJCS8vIHRoZSBuZXcgbmFtZSBvZiB0aGUgbm9kZSB0aGF0IHdhcyBq dXN0IHJlbmFtZWQuIE5vdGUgdGhhdAogIAkJLy8gaWYgdGhlIEF1dG8tUXVv dGUgb3B0aW9uIHdhc24ndCB1c2VkLCB0aGUgbmV3IG5vZGUgbmFtZSB3aWxs IGJlCiAgCQkvLyBhbGwgaW4gbG93ZXIgY2FzZSwgZHVlIHRvIFBvc3RncmVT UUwncyBjYXNlIGNvbGxhcHNpbmcgcHJvcGVydHkuCiAgCiAgCQlTdHJpbmcg bmV3Tm9kZU5hbWU7CiAgCQlpZiAoQWRtaW5Db25maWcuYXV0b1F1b3RlSWRl bnRpZmllcnMoKSkgewogIAkJCW5ld05vZGVOYW1lID0ganRmTmFtZS5nZXRU ZXh0KCk7CiAgCQl9IGVsc2UgewohIAkJCW5ld05vZGVOYW1lID0ganRmTmFt ZS5nZXRUZXh0KCkudG9Mb3dlckNhc2UoKTsKICAJCX0KICAKICAJCS8vIFRo ZXJlIGFyZSB0d28gc3BlY2lhbCBjYXNlcyBoZXJlOgotLS0gMjQzLDI3OCAt LS0tCiAgCQkvLyB0aGUgbmV3IG5hbWUgb2YgdGhlIG5vZGUgdGhhdCB3YXMg anVzdCByZW5hbWVkLiBOb3RlIHRoYXQKICAJCS8vIGlmIHRoZSBBdXRvLVF1 b3RlIG9wdGlvbiB3YXNuJ3QgdXNlZCwgdGhlIG5ldyBub2RlIG5hbWUgd2ls bCBiZQogIAkJLy8gYWxsIGluIGxvd2VyIGNhc2UsIGR1ZSB0byBQb3N0Z3Jl U1FMJ3MgY2FzZSBjb2xsYXBzaW5nIHByb3BlcnR5LgorIAkJLy8gVGhlcmUg aXMgYW4gZXhjZXB0aW9uIGluIHRoaXMgY2FzZS4gSWYgTk9UIGF1dG9xdW90 aW5nIEFORCBuZXcgbmFtZSAKKyAJCS8vIGlzIGluIHF1b3Rlcywgd2UgbmVl ZCB0byBleHRyYWN0IHRoZSBuYW1lLgogIAogIAkJU3RyaW5nIG5ld05vZGVO YW1lOwogIAkJaWYgKEFkbWluQ29uZmlnLmF1dG9RdW90ZUlkZW50aWZpZXJz KCkpIHsKICAJCQluZXdOb2RlTmFtZSA9IGp0Zk5hbWUuZ2V0VGV4dCgpOwog IAkJfSBlbHNlIHsKISAKISAJCQkvLyBJZiBpbiBxdW90ZXMsIHdlIG5lZWQg dG8gZXh0cmFjdCB3aGF0IGlzIGluc2lkZS4gTm8gbmVlZCB0byB0dXJuIAoh IAkJCS8vIGl0IHRvIGxvd2VyY2FzZSB0aGVuLgohIAkJCQohIAkJCW5ld05v ZGVOYW1lID0ganRmTmFtZS5nZXRUZXh0KCk7CiEgCQkJCiEgCQkJLy8gU3Rh cnRzIHdpdGggXCIgPT4gRW5kcyB3aXRoIFwiIGVsc2UgYmFja2VuZCB3aWxs IGdpdmUgCiEgCQkJLy8gcGFyc2UgZXJyb3IuLgohIAohIAkJCWlmIChuZXdO b2RlTmFtZS5zdGFydHNXaXRoKCJcIiIpKSB7CiEgCQkJCW5ld05vZGVOYW1l ID0gbmV3Tm9kZU5hbWUuc3Vic3RyaW5nKDEsIChuZXdOb2RlTmFtZS5sZW5n dGgoKSAtIDEpKTsKISAJCQl9IGVsc2UgewohIAkJCQluZXdOb2RlTmFtZSA9 IG5ld05vZGVOYW1lLnRvTG93ZXJDYXNlKCk7CiEgCQkJfQohIAkJfQohIAoh IAkJLy8gSWYgd2UgYXJlIGRlYWxpbmcgd2l0aCBzb21ldGhpbmcgbGlrZSBh biAib3BlcmF0b3IiIGNsYXNzLCBhIG5ldyAKISAJCS8vIG5vZGUgbmFtZSBp cyBhIGJpdCBtb3JlIGNvbXBsaWNhdGVkCiEgCQkKISAJCWlmIChpbnZvY2F0 aW9uTm9kZSBpbnN0YW5jZW9mIE9wZXJhdG9yQ2xhc3NOb2RlKSB7CiEgCQkJ U3RyaW5nIGFtID0gKChPcGVyYXRvckNsYXNzTm9kZSkgaW52b2NhdGlvbk5v ZGUpLmdldEFjY2Vzc01ldGhvZCgpOwohIAkJCVN0cmluZyB0eXBlcyA9IEFi c3RyYWN0Q3VzdG9tU2lnbmF0dXJlRmFjdG9yeS5nZXRPcENsYXNzRGF0YVR5 cGVzRnJvbVNpZ25hdHVyZShpbnZvY2F0aW9uTm9kZS50b1N0cmluZygpKTsK ISAJCQluZXdOb2RlTmFtZSA9IEFic3RyYWN0Q3VzdG9tU2lnbmF0dXJlRmFj dG9yeS5nZXRPcENsYXNzU2lnbmF0dXJlKG5ld05vZGVOYW1lLCBhbSwgdHlw ZXMpOwogIAkJfQogIAogIAkJLy8gVGhlcmUgYXJlIHR3byBzcGVjaWFsIGNh c2VzIGhlcmU6CkluZGV4OiBzcmMvY29tL3JlZGhhdC9yaGRiL2FkbWluL1Nj aGVtYVVwZGF0ZS5qYXZhCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZp bGU6IC9jdnMvcmhkYi9zcmMvcmhkYi9ndWl0b29scy9yaGRiLWFkbWluL3Ny Yy9jb20vcmVkaGF0L3JoZGIvYWRtaW4vU2NoZW1hVXBkYXRlLmphdmEsdgpy ZXRyaWV2aW5nIHJldmlzaW9uIDEuMS4xLjEKZGlmZiAtYyAtcCAtcjEuMS4x LjEgU2NoZW1hVXBkYXRlLmphdmEKKioqIHNyYy9jb20vcmVkaGF0L3JoZGIv YWRtaW4vU2NoZW1hVXBkYXRlLmphdmEJMjEgTm92IDIwMDMgMTg6MzA6MjQg LTAwMDAJMS4xLjEuMQotLS0gc3JjL2NvbS9yZWRoYXQvcmhkYi9hZG1pbi9T Y2hlbWFVcGRhdGUuamF2YQkyMiBEZWMgMjAwMyAxOTozMTowNCAtMDAwMAoq KioqKioqKioqKioqKiogcHVibGljIGNsYXNzIFNjaGVtYVVwZGF0ZSBleHRl bmRzIE9iamVjdAoqKiogMTE2LDEyMCAqKioqCi0tLSAxMTYsMTQ1IC0tLS0K ICAJCX0KICAJfQogIAkKKyAJLyoqCisgCSAqIFJlbmFtZXMgYSBzY2hlbWEK KyAJICoKKyAJICogQHBhcmFtIGNsaWVudCBUaGUgYmFja2VuZCBjbGllbnQu CisgCSAqIEBwYXJhbSBub2RlIHRoZSBpbnZva2luZyBzY2hlbWEgbm9kZS4K KyAJICogQHBhcmFtIG5hbWUgdGhlIG5ldyBuYW1lIG9mIHRoZSBzY2hlbWEu CisgCSAqIEB0aHJvd3MgT2JqZWN0VXBkYXRlRXhjZXB0aW9uIGlmIHRoZSBz Y2hlbWEgY2Fubm90IGJlIHJlbmFtZWQuCisgCSAqLwogIAorIAlwdWJsaWMg c3RhdGljIHZvaWQgcmVuYW1lU2NoZW1hKEFkbWluQmFja2VuZENsaWVudCBj bGllbnQsIFNjaGVtYU5vZGUgbm9kZSwgU3RyaW5nIG5hbWUpIHRocm93cyBP YmplY3RVcGRhdGVFeGNlcHRpb24geworIAkKKyAJCVN0cmluZyB1cGRhdGVT dHJpbmcgPSAiQUxURVIgU0NIRU1BICI7CisgCQkKKyAJCXVwZGF0ZVN0cmlu ZyArPSBBZG1pbk1pc2NGdW5jdGlvbnMuZ2V0RG91YmxlUXVvdGVkSWRlbnRp Zmllcihub2RlLnRvU3RyaW5nKCkpOworIAkJCisgCQl1cGRhdGVTdHJpbmcg Kz0gIiBSRU5BTUUgVE8gIiArIG5hbWU7CisgCQkKKyAJCS8vIHBlcmZvcm0g dGhlIHVwZGF0ZS4gQW55IGVycm9ycyBhcmUgcGFzc2VkIHRvIHRoZSBwYXJl bnQKKyAKKyAJCXRyeSB7CisgCQkJY2xpZW50LnBlcmZvcm1VcGRhdGUobm9k ZS5nZXRQYXJlbnRDbHVzdGVyTmFtZSgpLCBub2RlLmdldFBhcmVudERhdGFi YXNlTmFtZSgpLCB1cGRhdGVTdHJpbmcpOworIAkJfSBjYXRjaCAoRXhjZXB0 aW9uIGUpIHsKKyAJCQl0aHJvdyBuZXcgT2JqZWN0VXBkYXRlRXhjZXB0aW9u KGUuZ2V0TWVzc2FnZSgpKTsKKyAJCX0JCisgCQorIAl9CiAgfQpJbmRleDog c3JjL2NvbS9yZWRoYXQvcmhkYi9hZG1pbi9Vc2VyVXBkYXRlLmphdmEKPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yaGRiL3NyYy9y aGRiL2d1aXRvb2xzL3JoZGItYWRtaW4vc3JjL2NvbS9yZWRoYXQvcmhkYi9h ZG1pbi9Vc2VyVXBkYXRlLmphdmEsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEu MS4xLjEKZGlmZiAtYyAtcCAtcjEuMS4xLjEgVXNlclVwZGF0ZS5qYXZhCioq KiBzcmMvY29tL3JlZGhhdC9yaGRiL2FkbWluL1VzZXJVcGRhdGUuamF2YQky MSBOb3YgMjAwMyAxODozMDoyNCAtMDAwMAkxLjEuMS4xCi0tLSBzcmMvY29t L3JlZGhhdC9yaGRiL2FkbWluL1VzZXJVcGRhdGUuamF2YQkyMiBEZWMgMjAw MyAxOTozMTowNCAtMDAwMAoqKioqKioqKioqKioqKiogcGFja2FnZSBjb20u cmVkaGF0LnJoZGIuYWRtaW47CioqKiAxNSwyMCAqKioqCi0tLSAxNSwyMSAt LS0tCiAgaW1wb3J0IGphdmEudXRpbC4qOwogIAogIGltcG9ydCBjb20ucmVk aGF0LnJoZGIuYWRtaW4ucmVzb3VyY2VzLio7CisgaW1wb3J0IGNvbS5yZWRo YXQucmhkYi5hZG1pbi50cmVlLio7CiAgaW1wb3J0IGNvbS5yZWRoYXQucmhk Yi5hZG1pbi51dGlscy4qOwogIAogIC8qKgoqKioqKioqKioqKioqKiogcHVi bGljIGNsYXNzIFVzZXJVcGRhdGUgZXh0ZW5kcyBPYmplY3RVcAoqKiogMjY5 LDI3MyAqKioqCi0tLSAyNzAsMzAxIC0tLS0KICAJCX0gY2F0Y2ggKEV4Y2Vw dGlvbiBlKSB7CiAgCQkJdGhyb3cgbmV3IE9iamVjdFVwZGF0ZUV4Y2VwdGlv bihlLmdldE1lc3NhZ2UoKSk7CiAgCQl9CisgCX0KKyAKKyAJLyoqCisgCSAq IFJlbmFtZXMgYSB1c2VyCisgCSAqCisgCSAqIEBwYXJhbSBjbGllbnQgVGhl IGJhY2tlbmQgY2xpZW50LgorIAkgKiBAcGFyYW0gbm9kZSB0aGUgaW52b2tp bmcgdXNlciBub2RlLgorIAkgKiBAcGFyYW0gbmFtZSB0aGUgbmV3IG5hbWUg b2YgdGhlIHVzZXIuCisgCSAqIEB0aHJvd3MgT2JqZWN0VXBkYXRlRXhjZXB0 aW9uIGlmIHRoZSB1c2VyIGNhbm5vdCBiZSByZW5hbWVkLgorIAkgKi8KKyAK KyAJcHVibGljIHN0YXRpYyB2b2lkIHJlbmFtZVVzZXIoQWRtaW5CYWNrZW5k Q2xpZW50IGNsaWVudCwgVXNlck5vZGUgbm9kZSwgU3RyaW5nIG5hbWUpIHRo cm93cyBPYmplY3RVcGRhdGVFeGNlcHRpb24geworIAkKKyAJCVN0cmluZyB1 cGRhdGVTdHJpbmcgPSAiQUxURVIgVVNFUiAiOworIAkJCisgCQl1cGRhdGVT dHJpbmcgKz0gQWRtaW5NaXNjRnVuY3Rpb25zLmdldERvdWJsZVF1b3RlZElk ZW50aWZpZXIobm9kZS50b1N0cmluZygpKTsKKyAJCQorIAkJdXBkYXRlU3Ry aW5nICs9ICIgUkVOQU1FIFRPICIgKyBuYW1lOworIAkJCisgCQkvLyBwZXJm b3JtIHRoZSB1cGRhdGUuIEFueSBlcnJvcnMgYXJlIHBhc3NlZCB0byB0aGUg cGFyZW50CisgCisgCQl0cnkgeworIAkJCWNsaWVudC5wZXJmb3JtVXBkYXRl KG5vZGUuZ2V0UGFyZW50Q2x1c3Rlck5hbWUoKSwgInRlbXBsYXRlMSIsIHVw ZGF0ZVN0cmluZyk7CisgCQl9IGNhdGNoIChFeGNlcHRpb24gZSkgeworIAkJ CXRocm93IG5ldyBPYmplY3RVcGRhdGVFeGNlcHRpb24oZS5nZXRNZXNzYWdl KCkpOworIAkJfQkKKyAJCiAgCX0KICB9CkluZGV4OiBzcmMvY29tL3JlZGhh dC9yaGRiL2FkbWluL3Jlc291cmNlcy9BZG1pblJlc291cmNlcy5qYXZhCj09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcmhkYi9zcmMv cmhkYi9ndWl0b29scy9yaGRiLWFkbWluL3NyYy9jb20vcmVkaGF0L3JoZGIv YWRtaW4vcmVzb3VyY2VzL0FkbWluUmVzb3VyY2VzLmphdmEsdgpyZXRyaWV2 aW5nIHJldmlzaW9uIDEuMS4xLjEKZGlmZiAtYyAtcCAtcjEuMS4xLjEgQWRt aW5SZXNvdXJjZXMuamF2YQoqKiogc3JjL2NvbS9yZWRoYXQvcmhkYi9hZG1p bi9yZXNvdXJjZXMvQWRtaW5SZXNvdXJjZXMuamF2YQkyMSBOb3YgMjAwMyAx ODozMDoyOSAtMDAwMAkxLjEuMS4xCi0tLSBzcmMvY29tL3JlZGhhdC9yaGRi L2FkbWluL3Jlc291cmNlcy9BZG1pblJlc291cmNlcy5qYXZhCTIyIERlYyAy MDAzIDE5OjMxOjA0IC0wMDAwCioqKioqKioqKioqKioqKiBwdWJsaWMgYWJz dHJhY3QgY2xhc3MgQWRtaW5SZXNvdXJjZXMKKioqIDI4NCwyOTUgKioqKgot LS0gMjg0LDMwMCAtLS0tCiAgCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5n IE1FTlVfUkVNT1ZFX0NMVVNURVIJCT0gInJlbW92ZS5jbHVzdGVyIjsKICAJ cHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgTUVOVV9SRUlOREVYX0lOREVY ID0gIm1lbnUucmVpbmRleC5pbmRleCI7CiAgCXB1YmxpYyBzdGF0aWMgZmlu YWwgU3RyaW5nIE1FTlVfUkVJTkRFWF9UQUJMRSA9ICJtZW51LnJlaW5kZXgu dGFibGUiOworIAlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBNRU5VX1JF TkFNRV9EQVRBQkFTRSA9ICJtZW51LnJlbmFtZS5kYXRhYmFzZSI7CiAgCXB1 YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIE1FTlVfUkVOQU1FX0NPTFVNTiA9 ICJtZW51LnJlbmFtZS5jb2x1bW4iOworIAlwdWJsaWMgc3RhdGljIGZpbmFs IFN0cmluZyBNRU5VX1JFTkFNRV9HUk9VUCA9ICJtZW51LnJlbmFtZS5ncm91 cCI7CiAgCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIE1FTlVfUkVOQU1F X0lOREVYID0gIm1lbnUucmVuYW1lLmluZGV4IjsKKyAJcHVibGljIHN0YXRp YyBmaW5hbCBTdHJpbmcgTUVOVV9SRU5BTUVfT1BfQ0xBU1MgPSAibWVudS5y ZW5hbWUub3AuY2xhc3MiOworIAlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmlu ZyBNRU5VX1JFTkFNRV9TQ0hFTUEgPSAibWVudS5yZW5hbWUuc2NoZW1hIjsK ICAJcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgTUVOVV9SRU5BTUVfU0VR VUVOQ0UJCT0gIm1lbnUucmVuYW1lLnNlcXVlbmNlIjsKICAJcHVibGljIHN0 YXRpYyBmaW5hbCBTdHJpbmcgTUVOVV9SRU5BTUVfVEFCTEUJCT0gIm1lbnUu cmVuYW1lLnRhYmxlIjsKICAJcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcg TUVOVV9SRU5BTUVfVklFVwkJCT0gInJlbmFtZS52aWV3IjsKICAJcHVibGlj IHN0YXRpYyBmaW5hbCBTdHJpbmcgTUVOVV9SRU5BTUVfVFJJR0dFUgkJCT0g InJlbmFtZS50cmlnZ2VyIjsKKyAJcHVibGljIHN0YXRpYyBmaW5hbCBTdHJp bmcgTUVOVV9SRU5BTUVfVVNFUiA9ICJtZW51LnJlbmFtZS51c2VyIjsKICAJ cHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgTUVOVV9SRVBMQUNFX0ZVTkNU SU9OCQkJPSAicmVwbGFjZS5mdW5jdGlvbiI7CiAgCXB1YmxpYyBzdGF0aWMg ZmluYWwgU3RyaW5nIE1FTlVfUkVQTEFDRV9SVUxFCQk9ICJyZXBsYWNlLnJ1 bGUiOwogIAlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBNRU5VX1JFUExB Q0VfVklFVwkJPSAicmVwbGFjZS52aWV3IjsKSW5kZXg6IHNyYy9jb20vcmVk aGF0L3JoZGIvYWRtaW4vcmVzb3VyY2VzL1Jlc291cmNlcy5qYXZhLmluCj09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcmhkYi9zcmMv cmhkYi9ndWl0b29scy9yaGRiLWFkbWluL3NyYy9jb20vcmVkaGF0L3JoZGIv YWRtaW4vcmVzb3VyY2VzL1Jlc291cmNlcy5qYXZhLmluLHYKcmV0cmlldmlu ZyByZXZpc2lvbiAxLjEuMS4xCmRpZmYgLWMgLXAgLXIxLjEuMS4xIFJlc291 cmNlcy5qYXZhLmluCioqKiBzcmMvY29tL3JlZGhhdC9yaGRiL2FkbWluL3Jl c291cmNlcy9SZXNvdXJjZXMuamF2YS5pbgkyMSBOb3YgMjAwMyAxODozMDoz MCAtMDAwMAkxLjEuMS4xCi0tLSBzcmMvY29tL3JlZGhhdC9yaGRiL2FkbWlu L3Jlc291cmNlcy9SZXNvdXJjZXMuamF2YS5pbgkyMiBEZWMgMjAwMyAxOToz MTowNSAtMDAwMAoqKioqKioqKioqKioqKiogcHVibGljIGNsYXNzIFJlc291 cmNlcyBleHRlbmRzIExpc3RSZXNvdQoqKiogMjg0LDI5MyAqKioqCi0tLSAy ODQsMjk4IC0tLS0KICAJCXsgQWRtaW5SZXNvdXJjZXMuTUVOVV9SRUlOREVY X0lOREVYLCAiUkVJTkRFWCBJTkRFWCIgfSwKICAJCXsgQWRtaW5SZXNvdXJj ZXMuTUVOVV9SRUlOREVYX1RBQkxFLCAiUkVJTkRFWCBUQUJMRS4uLiJ9LAog IAkJeyBBZG1pblJlc291cmNlcy5NRU5VX1JFTU9WRV9DTFVTVEVSLAkJIlJF TU9WRSBDTFVTVEVSIiB9LAorIAkJeyBBZG1pblJlc291cmNlcy5NRU5VX1JF TkFNRV9EQVRBQkFTRSwgIlJFTkFNRSBEQVRBQkFTRS4uLiIgfSwKKyAJCXsg QWRtaW5SZXNvdXJjZXMuTUVOVV9SRU5BTUVfR1JPVVAsICJSRU5BTUUgR1JP VVAuLi4iIH0sCiAgCQl7IEFkbWluUmVzb3VyY2VzLk1FTlVfUkVOQU1FX0lO REVYLCAiUkVOQU1FIElOREVYIiB9LAorIAkJeyBBZG1pblJlc291cmNlcy5N RU5VX1JFTkFNRV9PUF9DTEFTUywgIlJFTkFNRSBPUEVSQVRPUiBDTEFTUyIg fSwKKyAJCXsgQWRtaW5SZXNvdXJjZXMuTUVOVV9SRU5BTUVfU0NIRU1BLAkJ IlJFTkFNRSBTQ0hFTUEuLi4iIH0sCiAgCQl7IEFkbWluUmVzb3VyY2VzLk1F TlVfUkVOQU1FX1NFUVVFTkNFLAkJIlJFTkFNRSBTRVFVRU5DRS4uLiIgfSwK ICAJCXsgQWRtaW5SZXNvdXJjZXMuTUVOVV9SRU5BTUVfVFJJR0dFUiwJCSJS RU5BTUUgVFJJR0dFUi4uLiIgfSwKICAJCXsgQWRtaW5SZXNvdXJjZXMuTUVO VV9SRU5BTUVfVEFCTEUsICJSRU5BTUUgVEFCTEUuLi4ifSwKKyAJCXsgQWRt aW5SZXNvdXJjZXMuTUVOVV9SRU5BTUVfVVNFUiwgIlJFTkFNRSBVU0VSLi4u IiB9LAogIAkJeyBBZG1pblJlc291cmNlcy5NRU5VX1JFTkFNRV9WSUVXLCAg ICAgICJSRU5BTUUgVklFVy4uLiIgfSwKICAJCXsgQWRtaW5SZXNvdXJjZXMu TUVOVV9SRVBMQUNFX0ZVTkNUSU9OLCAgICAgIlJFUExBQ0UgRlVOQ1RJT04u Li4iIH0sCiAgCQl7IEFkbWluUmVzb3VyY2VzLk1FTlVfUkVQTEFDRV9SVUxF LCAgICAgIlJFUExBQ0UgUlVMRS4uLiIgfSwKSW5kZXg6IHNyYy9jb20vcmVk aGF0L3JoZGIvYWRtaW4vdHJlZS9BYnN0cmFjdEN1c3RvbVNpZ25hdHVyZUZh Y3RvcnkuamF2YQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAv Y3ZzL3JoZGIvc3JjL3JoZGIvZ3VpdG9vbHMvcmhkYi1hZG1pbi9zcmMvY29t L3JlZGhhdC9yaGRiL2FkbWluL3RyZWUvQWJzdHJhY3RDdXN0b21TaWduYXR1 cmVGYWN0b3J5LmphdmEsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMS4xLjEK ZGlmZiAtYyAtcCAtcjEuMS4xLjEgQWJzdHJhY3RDdXN0b21TaWduYXR1cmVG YWN0b3J5LmphdmEKKioqIHNyYy9jb20vcmVkaGF0L3JoZGIvYWRtaW4vdHJl ZS9BYnN0cmFjdEN1c3RvbVNpZ25hdHVyZUZhY3RvcnkuamF2YQkyMSBOb3Yg MjAwMyAxODozMDoyNyAtMDAwMAkxLjEuMS4xCi0tLSBzcmMvY29tL3JlZGhh dC9yaGRiL2FkbWluL3RyZWUvQWJzdHJhY3RDdXN0b21TaWduYXR1cmVGYWN0 b3J5LmphdmEJMjIgRGVjIDIwMDMgMTk6MzE6MDUgLTAwMDAKKioqKioqKioq KioqKioqIHB1YmxpYyBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdEN1c3RvbVNp Z24KKioqIDQxMCw0MTUgKioqKgotLS0gNDEwLDQ0MCAtLS0tCiAgCX0KICAJ CiAgCS8qKgorIAkgKiBSZXR1cm5zIHRoZSBvcCBjbGFzcyBkYXRhIHR5cGVz IChjb21tYSBzZXBhcmF0ZWQpCisgCSAqCisgCSAqIEBwYXJhbSBvcENsYXNz U2lnIFRoZSBvcGVyYXRvciBjbGFzcyBzaWduYXR1cmUKKyAJICogQHJldHVy biBTdHJpbmcgY29udGFpbmluZyB0aGUgb3AgY2xhc3MgZGF0YSB0eXBlcyAo Y29tbWEgc2VwYXJhdGVkKQorIAkgKi8KKyAJCisgCXB1YmxpYyBzdGF0aWMg U3RyaW5nIGdldE9wQ2xhc3NEYXRhVHlwZXNGcm9tU2lnbmF0dXJlIChTdHJp bmcgb3BDbGFzc1NpZykgeworIAkJcmV0dXJuIG9wQ2xhc3NTaWcuc3Vic3Ry aW5nKG9wQ2xhc3NTaWcuaW5kZXhPZignLCcpICsgMSk7CisgCX0KKyAKKyAJ LyoqCisgCSAqIFJldHVybnMgb3AgY2xhc3Mgc2lnbmF0dXJlcyBnaXZlbiBu YW1lLCBhY2Nlc3MgbWV0aG9kLCBhbmQgY29tbWEgCisgCSAqIHNlcGFyYXRl ZCBkYXRhIHR5cGVzIChhcyByZXR1cm5lZCBieSBnZXRPcENsYXNzRGF0YVR5 cGVzRnJvbVNpZ25hdHVyZSgpKQorIAkgKgorIAkgKiBAcGFyYW0gbmFtZSBv cCBjbGFzcyBuYW1lCisgCSAqIEBwYXJhbSBhbSBvcCBjbGFzcyBhY2Nlc3Mg bWV0aG9kCisgCSAqIEBwYXJhbSB0eXBlcyBjb21tYSBzZXBhcmF0ZWQgb3Ag Y2xhc3MgZGF0YSB0eXBlcywgYXMgcmV0dXJuZWQgYnkgCisgCSAqCQkJCWdl dE9wQ2xhc3NEYXRhVHlwZXNGcm9tU2lnbmF0dXJlKCkKKyAJICovCisgCQor IAlwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRPcENsYXNzU2lnbmF0dXJlIChT dHJpbmcgbmFtZSwgU3RyaW5nIGFtLCBTdHJpbmcgdHlwZXMpIHsKKyAJCXJl dHVybiBuYW1lICsgIi0+IiArIGFtICsgIiwiICsgdHlwZXM7CisgCX0KKyAK KyAJLyoqCiAgCSAqIFJldHVybnMgdGhlIG9wZXJhdG9yIGNsYXNzIG5vZGUg c2lnbmF0dXJlcyBiYXNlZCBvbiB0aGUgZ2l2ZW4gcmVzdWx0IHNldC4KICAJ ICoKICAJICogQHBhcmFtIHJlc3VsdFNldAl0aGUgU3RyaW5nIGFycmF5IHRo YXQgY29udGFpbnMgdGhlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBvcENsYXNz CkluZGV4OiBzcmMvY29tL3JlZGhhdC9yaGRiL2FkbWluL3RyZWUvQWRtaW5H ZW5lcmljVHJlZU5vZGUuamF2YQo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJD UyBmaWxlOiAvY3ZzL3JoZGIvc3JjL3JoZGIvZ3VpdG9vbHMvcmhkYi1hZG1p bi9zcmMvY29tL3JlZGhhdC9yaGRiL2FkbWluL3RyZWUvQWRtaW5HZW5lcmlj VHJlZU5vZGUuamF2YSx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xLjEuMQpk aWZmIC1jIC1wIC1yMS4xLjEuMSBBZG1pbkdlbmVyaWNUcmVlTm9kZS5qYXZh CioqKiBzcmMvY29tL3JlZGhhdC9yaGRiL2FkbWluL3RyZWUvQWRtaW5HZW5l cmljVHJlZU5vZGUuamF2YQkyMSBOb3YgMjAwMyAxODozMDoyNyAtMDAwMAkx LjEuMS4xCi0tLSBzcmMvY29tL3JlZGhhdC9yaGRiL2FkbWluL3RyZWUvQWRt aW5HZW5lcmljVHJlZU5vZGUuamF2YQkyMiBEZWMgMjAwMyAxOTozMTowNSAt MDAwMAoqKioqKioqKioqKioqKiogcHVibGljIGNsYXNzIEFkbWluR2VuZXJp Y1RyZWVOb2RlIGltcGxlbQoqKiogNDM2LDQ0NyAqKioqCiAgCS8qKiAKICAJ ICogQ3JlYXRlcyBhIHBvcHVwIG1lbnUgZm9yIHRoaXMgbm9kZS4KICAJICoK ICAJICovCiAgCiEgCXB1YmxpYyBKUG9wdXBNZW51IGdldFBvcHVwTWVudSgp IHsKICAJCQogIAkJSk1lbnVJdGVtIG1lbnVJdGVtOwohIAkJSlBvcHVwTWVu dSBub2RlTWVudSA9ICgoQWRtaW5UcmVlTm9kZSkgdGhpcykuZ2V0Tm9kZU1l bnUoKTsKICAJCQogIAkJLy8gQ3JlYXRlIGEgbmV3IG1lbnUgaWZmIGl0cyBu ZWVkZWQKICAJCQotLS0gNDM2LDQ0OCAtLS0tCiAgCS8qKiAKICAJICogQ3Jl YXRlcyBhIHBvcHVwIG1lbnUgZm9yIHRoaXMgbm9kZS4KICAJICoKKyAJICog QHBhcmFtIGNsaWVudCBBIGNsaWVudCB0byB0aGUgYmFja2VuZAogIAkgKi8K ICAKISAJcHVibGljIEpQb3B1cE1lbnUgZ2V0UG9wdXBNZW51KEFkbWluQmFj a2VuZENsaWVudCBjbGllbnQpIHsKICAJCQogIAkJSk1lbnVJdGVtIG1lbnVJ dGVtOwohIAkJSlBvcHVwTWVudSBub2RlTWVudSA9ICgoQWRtaW5UcmVlTm9k ZSkgdGhpcykuZ2V0Tm9kZU1lbnUoY2xpZW50KTsKICAJCQogIAkJLy8gQ3Jl YXRlIGEgbmV3IG1lbnUgaWZmIGl0cyBuZWVkZWQKICAJCQpJbmRleDogc3Jj L2NvbS9yZWRoYXQvcmhkYi9hZG1pbi90cmVlL0FkbWluVHJlZS5qYXZhCj09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcmhkYi9zcmMv cmhkYi9ndWl0b29scy9yaGRiLWFkbWluL3NyYy9jb20vcmVkaGF0L3JoZGIv YWRtaW4vdHJlZS9BZG1pblRyZWUuamF2YSx2CnJldHJpZXZpbmcgcmV2aXNp b24gMS4xLjEuMQpkaWZmIC1jIC1wIC1yMS4xLjEuMSBBZG1pblRyZWUuamF2 YQoqKiogc3JjL2NvbS9yZWRoYXQvcmhkYi9hZG1pbi90cmVlL0FkbWluVHJl ZS5qYXZhCTIxIE5vdiAyMDAzIDE4OjMwOjI3IC0wMDAwCTEuMS4xLjEKLS0t IHNyYy9jb20vcmVkaGF0L3JoZGIvYWRtaW4vdHJlZS9BZG1pblRyZWUuamF2 YQkyMiBEZWMgMjAwMyAxOTozMTowNiAtMDAwMAoqKioqKioqKioqKioqKiog cHVibGljIGNsYXNzIEFkbWluVHJlZSBleHRlbmRzIEpUcmVlIGltcAoqKiog MjQ5LDI1NSAqKioqCiAgCQlBZG1pblRyZWVOb2RlIG5vZGUgPSAoQWRtaW5U cmVlTm9kZSkgbm9kZVBhdGguZ2V0UGF0aENvbXBvbmVudChub2RlUGF0aC5n ZXRQYXRoQ291bnQoKSAtIDEpOwogIAkJCiAgCQl0cnkgewohIAkJCW1lbnUg PSBub2RlLmdldFBvcHVwTWVudSgpOwogIAogIAkJCWlmIChtZW51ID09IG51 bGwpIHsKICAJCQkJcmV0dXJuOwotLS0gMjQ5LDI1NSAtLS0tCiAgCQlBZG1p blRyZWVOb2RlIG5vZGUgPSAoQWRtaW5UcmVlTm9kZSkgbm9kZVBhdGguZ2V0 UGF0aENvbXBvbmVudChub2RlUGF0aC5nZXRQYXRoQ291bnQoKSAtIDEpOwog IAkJCiAgCQl0cnkgewohIAkJCW1lbnUgPSBub2RlLmdldFBvcHVwTWVudShi YWNrZW5kQ2xpZW50KTsKICAKICAJCQlpZiAobWVudSA9PSBudWxsKSB7CiAg CQkJCXJldHVybjsKSW5kZXg6IHNyYy9jb20vcmVkaGF0L3JoZGIvYWRtaW4v dHJlZS9BZG1pblRyZWVOb2RlLmphdmEKPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQpSQ1MgZmlsZTogL2N2cy9yaGRiL3NyYy9yaGRiL2d1aXRvb2xzL3JoZGIt YWRtaW4vc3JjL2NvbS9yZWRoYXQvcmhkYi9hZG1pbi90cmVlL0FkbWluVHJl ZU5vZGUuamF2YSx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xLjEuMQpkaWZm IC1jIC1wIC1yMS4xLjEuMSBBZG1pblRyZWVOb2RlLmphdmEKKioqIHNyYy9j b20vcmVkaGF0L3JoZGIvYWRtaW4vdHJlZS9BZG1pblRyZWVOb2RlLmphdmEJ MjEgTm92IDIwMDMgMTg6MzA6MjcgLTAwMDAJMS4xLjEuMQotLS0gc3JjL2Nv bS9yZWRoYXQvcmhkYi9hZG1pbi90cmVlL0FkbWluVHJlZU5vZGUuamF2YQky MiBEZWMgMjAwMyAxOTozMTowNiAtMDAwMAoqKioqKioqKioqKioqKiogcHVi bGljIGludGVyZmFjZSBBZG1pblRyZWVOb2RlIGV4dGVuZHMgVAoqKiogMTA1 LDExNSAqKioqCiAgCUltYWdlSWNvbiBnZXRJbWFnZShTdHJpbmcgZmlsZSk7 CiAgCiAgCS8qKiAKLSAJICoKICAJICogQ3JlYXRlcyBhIHBvcHVwIG1lbnUg Zm9yIHRoaXMgbm9kZS4KICAJICovCiAgCiEgCUpQb3B1cE1lbnUgZ2V0Tm9k ZU1lbnUoKTsKICAKICAKICAJLyoqCi0tLSAxMDUsMTE2IC0tLS0KICAJSW1h Z2VJY29uIGdldEltYWdlKFN0cmluZyBmaWxlKTsKICAKICAJLyoqIAogIAkg KiBDcmVhdGVzIGEgcG9wdXAgbWVudSBmb3IgdGhpcyBub2RlLgorIAkgKgor IAkgKiBAcGFyYW0gY2xpZW50IENsaWVudCB0byB0aGUgYmFja2VuZAogIAkg Ki8KICAKISAJSlBvcHVwTWVudSBnZXROb2RlTWVudShBZG1pbkJhY2tlbmRD bGllbnQgY2xpZW50KTsKICAKICAKICAJLyoqCioqKioqKioqKioqKioqKiBw dWJsaWMgaW50ZXJmYWNlIEFkbWluVHJlZU5vZGUgZXh0ZW5kcyBUCioqKiAx MzUsMTQ1ICoqKioKICAJVHJlZVBhdGggZ2V0UGF0aCgpOwogIAogIAkvKiog Ci0gCSAqCiAgCSAqIENyZWF0ZXMgYSBwb3B1cCBtZW51IGZvciB0aGlzIG5v ZGUgKGltcGxlbWVudGVkIGluIEFkbWluR2VuZXJpY1RyZWVOb2RlKS4KICAJ ICovCiAgCiEgCUpQb3B1cE1lbnUgZ2V0UG9wdXBNZW51KCk7CiAgCiAgCS8q KgogIAkgKiBHZXRzIHdoZXRoZXIgdGhpcyBub2RlIGlzIGV4cGFuZGVkIG9y IG5vdC4KLS0tIDEzNiwxNDcgLS0tLQogIAlUcmVlUGF0aCBnZXRQYXRoKCk7 CiAgCiAgCS8qKiAKICAJICogQ3JlYXRlcyBhIHBvcHVwIG1lbnUgZm9yIHRo aXMgbm9kZSAoaW1wbGVtZW50ZWQgaW4gQWRtaW5HZW5lcmljVHJlZU5vZGUp LgorIAkgKgorIAkgKiBAcGFyYW0gY2xpZW50IENsaWVudCB0byB0aGUgYmFj a2VuZAogIAkgKi8KICAKISAJSlBvcHVwTWVudSBnZXRQb3B1cE1lbnUoQWRt aW5CYWNrZW5kQ2xpZW50IGNsaWVudCk7CiAgCiAgCS8qKgogIAkgKiBHZXRz IHdoZXRoZXIgdGhpcyBub2RlIGlzIGV4cGFuZGVkIG9yIG5vdC4KSW5kZXg6 IHNyYy9jb20vcmVkaGF0L3JoZGIvYWRtaW4vdHJlZS9BZ2dyZWdhdGVOb2Rl LmphdmEKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9y aGRiL3NyYy9yaGRiL2d1aXRvb2xzL3JoZGItYWRtaW4vc3JjL2NvbS9yZWRo YXQvcmhkYi9hZG1pbi90cmVlL0FnZ3JlZ2F0ZU5vZGUuamF2YSx2CnJldHJp ZXZpbmcgcmV2aXNpb24gMS4xLjEuMQpkaWZmIC1jIC1wIC1yMS4xLjEuMSBB Z2dyZWdhdGVOb2RlLmphdmEKKioqIHNyYy9jb20vcmVkaGF0L3JoZGIvYWRt aW4vdHJlZS9BZ2dyZWdhdGVOb2RlLmphdmEJMjEgTm92IDIwMDMgMTg6MzA6 MjcgLTAwMDAJMS4xLjEuMQotLS0gc3JjL2NvbS9yZWRoYXQvcmhkYi9hZG1p bi90cmVlL0FnZ3JlZ2F0ZU5vZGUuamF2YQkyMiBEZWMgMjAwMyAxOTozMTow NiAtMDAwMAoqKioqKioqKioqKioqKiogcHVibGljIGNsYXNzIEFnZ3JlZ2F0 ZU5vZGUgZXh0ZW5kcyBBZG1pbgoqKiogMTU2LDE2NSAqKioqCiAgCS8qKgog IAkgKiBSZXR1cm5zIHRoZSBwb3B1cC1tZW51IGZvciB0aGlzIG5vZGUKICAJ ICoKICAJICogQHJldHVybiB0aGUgcG9wdXAgbWVudSBmb3IgdGhpcyBub2Rl CiAgCSAqLwogIAkKISAJcHVibGljIEpQb3B1cE1lbnUgZ2V0Tm9kZU1lbnUo KSB7CiAgCQlKUG9wdXBNZW51IG1lbnUgPSBuZXcgSlBvcHVwTWVudSgpOwog IAogIAkJbWVudS5hZGQobmV3IEpNZW51SXRlbShBZG1pblJlc291cmNlcy5n ZXRTdHJpbmcoQWRtaW5SZXNvdXJjZXMuTUVOVV9EUk9QX1JFU1RSSUNUKSkp OwotLS0gMTU2LDE2NiAtLS0tCiAgCS8qKgogIAkgKiBSZXR1cm5zIHRoZSBw b3B1cC1tZW51IGZvciB0aGlzIG5vZGUKICAJICoKKyAJICogQHBhcmFtIGNs aWVudCBDbGllbnQgdG8gdGhlIGJhY2tlbmQKICAJICogQHJldHVybiB0aGUg cG9wdXAgbWVudSBmb3IgdGhpcyBub2RlCiAgCSAqLwogIAkKISAJcHVibGlj IEpQb3B1cE1lbnUgZ2V0Tm9kZU1lbnUoQWRtaW5CYWNrZW5kQ2xpZW50IGNs aWVudCkgewogIAkJSlBvcHVwTWVudSBtZW51ID0gbmV3IEpQb3B1cE1lbnUo KTsKICAKICAJCW1lbnUuYWRkKG5ldyBKTWVudUl0ZW0oQWRtaW5SZXNvdXJj ZXMuZ2V0U3RyaW5nKEFkbWluUmVzb3VyY2VzLk1FTlVfRFJPUF9SRVNUUklD VCkpKTsKSW5kZXg6IHNyYy9jb20vcmVkaGF0L3JoZGIvYWRtaW4vdHJlZS9B Z2dyZWdhdGVzSGVhZGVyTm9kZS5qYXZhCj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KUkNTIGZpbGU6IC9jdnMvcmhkYi9zcmMvcmhkYi9ndWl0b29scy9yaGRi LWFkbWluL3NyYy9jb20vcmVkaGF0L3JoZGIvYWRtaW4vdHJlZS9BZ2dyZWdh dGVzSGVhZGVyTm9kZS5qYXZhLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjEu MS4xCmRpZmYgLWMgLXAgLXIxLjEuMS4xIEFnZ3JlZ2F0ZXNIZWFkZXJOb2Rl LmphdmEKKioqIHNyYy9jb20vcmVkaGF0L3JoZGIvYWRtaW4vdHJlZS9BZ2dy ZWdhdGVzSGVhZGVyTm9kZS5qYXZhCTIxIE5vdiAyMDAzIDE4OjMwOjI3IC0w MDAwCTEuMS4xLjEKLS0tIHNyYy9jb20vcmVkaGF0L3JoZGIvYWRtaW4vdHJl ZS9BZ2dyZWdhdGVzSGVhZGVyTm9kZS5qYXZhCTIyIERlYyAyMDAzIDE5OjMx OjA2IC0wMDAwCioqKioqKioqKioqKioqKiBwdWJsaWMgY2xhc3MgQWdncmVn YXRlc0hlYWRlck5vZGUgZXh0ZW5kCioqKiAxMzgsMTQ3ICoqKioKICAJLyoq CiAgCSAqIFJldHVybnMgdGhlIHBvcHVwLW1lbnUgZm9yIHRoaXMgbm9kZQog IAkgKgogIAkgKiBAcmV0dXJuIHRoZSBwb3B1cCBtZW51IGZvciB0aGlzIG5v ZGUKICAJICovCiAgCQohIAlwdWJsaWMgSlBvcHVwTWVudSBnZXROb2RlTWVu dSgpIHsKICAJCUpQb3B1cE1lbnUgbWVudSA9IG5ldyBKUG9wdXBNZW51KCk7 CiAgCiAgCQltZW51LmFkZChuZXcgSk1lbnVJdGVtKEFkbWluUmVzb3VyY2Vz LmdldFN0cmluZyhBZG1pblJlc291cmNlcy5NRU5VX0NSRUFURV9BR0dSRUdB VEUpKSk7Ci0tLSAxMzgsMTQ4IC0tLS0KICAJLyoqCiAgCSAqIFJldHVybnMg dGhlIHBvcHVwLW1lbnUgZm9yIHRoaXMgbm9kZQogIAkgKgorIAkgKiBAcGFy YW0gY2xpZW50IENsaWVudCB0byB0aGUgYmFja2VuZAogIAkgKiBAcmV0dXJu IHRoZSBwb3B1cCBtZW51IGZvciB0aGlzIG5vZGUKICAJICovCiAgCQohIAlw dWJsaWMgSlBvcHVwTWVudSBnZXROb2RlTWVudShBZG1pbkJhY2tlbmRDbGll bnQgY2xpZW50KSB7CiAgCQlKUG9wdXBNZW51IG1lbnUgPSBuZXcgSlBvcHVw TWVudSgpOwogIAogIAkJbWVudS5hZGQobmV3IEpNZW51SXRlbShBZG1pblJl c291cmNlcy5nZXRTdHJpbmcoQWRtaW5SZXNvdXJjZXMuTUVOVV9DUkVBVEVf QUdHUkVHQVRFKSkpOwpJbmRleDogc3JjL2NvbS9yZWRoYXQvcmhkYi9hZG1p bi90cmVlL0Nhc3ROb2RlLmphdmEKPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpS Q1MgZmlsZTogL2N2cy9yaGRiL3NyYy9yaGRiL2d1aXRvb2xzL3JoZGItYWRt aW4vc3JjL2NvbS9yZWRoYXQvcmhkYi9hZG1pbi90cmVlL0Nhc3ROb2RlLmph dmEsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMS4xLjEKZGlmZiAtYyAtcCAt cjEuMS4xLjEgQ2FzdE5vZGUuamF2YQoqKiogc3JjL2NvbS9yZWRoYXQvcmhk Yi9hZG1pbi90cmVlL0Nhc3ROb2RlLmphdmEJMjEgTm92IDIwMDMgMTg6MzA6 MjcgLTAwMDAJMS4xLjEuMQotLS0gc3JjL2NvbS9yZWRoYXQvcmhkYi9hZG1p bi90cmVlL0Nhc3ROb2RlLmphdmEJMjIgRGVjIDIwMDMgMTk6MzE6MDYgLTAw MDAKKioqKioqKioqKioqKioqIHB1YmxpYyBjbGFzcyBDYXN0Tm9kZSBleHRl bmRzIEFkbWluR2VuZXIKKioqIDEzNiwxNDUgKioqKgogIAkvKioKICAJICog UmV0dXJucyB0aGUgcG9wdXAtbWVudSBmb3IgdGhpcyBub2RlCiAgCSAqCiAg CSAqIEByZXR1cm4gdGhlIHBvcHVwIG1lbnUgZm9yIHRoaXMgbm9kZQogIAkg Ki8KICAJCiEgCXB1YmxpYyBKUG9wdXBNZW51IGdldE5vZGVNZW51KCkgewog IAkJSlBvcHVwTWVudSBtZW51ID0gbmV3IEpQb3B1cE1lbnUoKTsKICAKICAJ CW1lbnUuYWRkKG5ldyBKTWVudUl0ZW0oQWRtaW5SZXNvdXJjZXMuZ2V0U3Ry aW5nKEFkbWluUmVzb3VyY2VzLk1FTlVfRFJPUF9SRVNUUklDVCkpKTsKLS0t IDEzNiwxNDYgLS0tLQogIAkvKioKICAJICogUmV0dXJucyB0aGUgcG9wdXAt bWVudSBmb3IgdGhpcyBub2RlCiAgCSAqCisgCSAqIEBwYXJhbSBjbGllbnQg Q2xpZW50IHRvIHRoZSBiYWNrZW5kCiAgCSAqIEByZXR1cm4gdGhlIHBvcHVw IG1lbnUgZm9yIHRoaXMgbm9kZQogIAkgKi8KICAJCiEgCXB1YmxpYyBKUG9w dXBNZW51IGdldE5vZGVNZW51KEFkbWluQmFja2VuZENsaWVudCBjbGllbnQp IHsKICAJCUpQb3B1cE1lbnUgbWVudSA9IG5ldyBKUG9wdXBNZW51KCk7CiAg CiAgCQltZW51LmFkZChuZXcgSk1lbnVJdGVtKEFkbWluUmVzb3VyY2VzLmdl dFN0cmluZyhBZG1pblJlc291cmNlcy5NRU5VX0RST1BfUkVTVFJJQ1QpKSk7 CkluZGV4OiBzcmMvY29tL3JlZGhhdC9yaGRiL2FkbWluL3RyZWUvQ2FzdHNI ZWFkZXJOb2RlLmphdmEKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmls ZTogL2N2cy9yaGRiL3NyYy9yaGRiL2d1aXRvb2xzL3JoZGItYWRtaW4vc3Jj L2NvbS9yZWRoYXQvcmhkYi9hZG1pbi90cmVlL0Nhc3RzSGVhZGVyTm9kZS5q YXZhLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjEuMS4xCmRpZmYgLWMgLXAg LXIxLjEuMS4xIENhc3RzSGVhZGVyTm9kZS5qYXZhCioqKiBzcmMvY29tL3Jl ZGhhdC9yaGRiL2FkbWluL3RyZWUvQ2FzdHNIZWFkZXJOb2RlLmphdmEJMjEg Tm92IDIwMDMgMTg6MzA6MjcgLTAwMDAJMS4xLjEuMQotLS0gc3JjL2NvbS9y ZWRoYXQvcmhkYi9hZG1pbi90cmVlL0Nhc3RzSGVhZGVyTm9kZS5qYXZhCTIy IERlYyAyMDAzIDE5OjMxOjA2IC0wMDAwCioqKioqKioqKioqKioqKiBwdWJs aWMgY2xhc3MgQ2FzdHNIZWFkZXJOb2RlIGV4dGVuZHMgQWRtCioqKiAxMDAs MTA5ICoqKioKICAJLyoqCiAgCSAqIFJldHVybnMgdGhlIHBvcHVwLW1lbnUg Zm9yIHRoaXMgbm9kZQogIAkgKgogIAkgKiBAcmV0dXJuIHRoZSBwb3B1cCBt ZW51IGZvciB0aGlzIG5vZGUKICAJICovCiAgCQohIAlwdWJsaWMgSlBvcHVw TWVudSBnZXROb2RlTWVudSgpIHsKICAJCUpQb3B1cE1lbnUgbWVudSA9IG5l dyBKUG9wdXBNZW51KCk7CiAgCiAgCQltZW51LmFkZChuZXcgSk1lbnVJdGVt KEFkbWluUmVzb3VyY2VzLmdldFN0cmluZyhBZG1pblJlc291cmNlcy5NRU5V X0NSRUFURV9DQVNUKSkpOwotLS0gMTAwLDExMCAtLS0tCiAgCS8qKgogIAkg KiBSZXR1cm5zIHRoZSBwb3B1cC1tZW51IGZvciB0aGlzIG5vZGUKICAJICoK KyAJICogQHBhcmFtIGNsaWVudCBDbGllbnQgdG8gdGhlIGJhY2tlbmQKICAJ ICogQHJldHVybiB0aGUgcG9wdXAgbWVudSBmb3IgdGhpcyBub2RlCiAgCSAq LwogIAkKISAJcHVibGljIEpQb3B1cE1lbnUgZ2V0Tm9kZU1lbnUoQWRtaW5C YWNrZW5kQ2xpZW50IGNsaWVudCkgewogIAkJSlBvcHVwTWVudSBtZW51ID0g bmV3IEpQb3B1cE1lbnUoKTsKICAKICAJCW1lbnUuYWRkKG5ldyBKTWVudUl0 ZW0oQWRtaW5SZXNvdXJjZXMuZ2V0U3RyaW5nKEFkbWluUmVzb3VyY2VzLk1F TlVfQ1JFQVRFX0NBU1QpKSk7CkluZGV4OiBzcmMvY29tL3JlZGhhdC9yaGRi L2FkbWluL3RyZWUvQ2hlY2tDb25zdHJhaW50Tm9kZS5qYXZhCj09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcmhkYi9zcmMvcmhkYi9n dWl0b29scy9yaGRiLWFkbWluL3NyYy9jb20vcmVkaGF0L3JoZGIvYWRtaW4v dHJlZS9DaGVja0NvbnN0cmFpbnROb2RlLmphdmEsdgpyZXRyaWV2aW5nIHJl dmlzaW9uIDEuMS4xLjEKZGlmZiAtYyAtcCAtcjEuMS4xLjEgQ2hlY2tDb25z dHJhaW50Tm9kZS5qYXZhCioqKiBzcmMvY29tL3JlZGhhdC9yaGRiL2FkbWlu L3RyZWUvQ2hlY2tDb25zdHJhaW50Tm9kZS5qYXZhCTIxIE5vdiAyMDAzIDE4 OjMwOjI3IC0wMDAwCTEuMS4xLjEKLS0tIHNyYy9jb20vcmVkaGF0L3JoZGIv YWRtaW4vdHJlZS9DaGVja0NvbnN0cmFpbnROb2RlLmphdmEJMjIgRGVjIDIw MDMgMTk6MzE6MDYgLTAwMDAKKioqKioqKioqKioqKioqIHB1YmxpYyBjbGFz cyBDaGVja0NvbnN0cmFpbnROb2RlIGV4dGVuZHMKKioqIDEzNSwxNDQgKioq KgogIAkvKioKICAJICogUmV0dXJucyB0aGUgcG9wdXAtbWVudSBmb3IgdGhp cyBub2RlCiAgCSAqCiAgCSAqIEByZXR1cm4gdGhlIHBvcHVwIG1lbnUgZm9y IHRoaXMgbm9kZQogIAkgKi8KICAJCiEgCXB1YmxpYyBKUG9wdXBNZW51IGdl dE5vZGVNZW51KCkgewogIAkJSlBvcHVwTWVudSBtZW51ID0gbmV3IEpQb3B1 cE1lbnUoKTsKICAKICAJCW1lbnUuYWRkKG5ldyBKTWVudUl0ZW0oQWRtaW5S ZXNvdXJjZXMuZ2V0U3RyaW5nKEFkbWluUmVzb3VyY2VzLk1FTlVfRFJPUF9S RVNUUklDVCkpKTsKLS0tIDEzNSwxNDUgLS0tLQogIAkvKioKICAJICogUmV0 dXJucyB0aGUgcG9wdXAtbWVudSBmb3IgdGhpcyBub2RlCiAgCSAqCisgCSAq IEBwYXJhbSBjbGllbnQgQ2xpZW50IHRvIHRoZSBiYWNrZW5kCiAgCSAqIEBy ZXR1cm4gdGhlIHBvcHVwIG1lbnUgZm9yIHRoaXMgbm9kZQogIAkgKi8KICAJ CiEgCXB1YmxpYyBKUG9wdXBNZW51IGdldE5vZGVNZW51KEFkbWluQmFja2Vu ZENsaWVudCBjbGllbnQpIHsKICAJCUpQb3B1cE1lbnUgbWVudSA9IG5ldyBK UG9wdXBNZW51KCk7CiAgCiAgCQltZW51LmFkZChuZXcgSk1lbnVJdGVtKEFk bWluUmVzb3VyY2VzLmdldFN0cmluZyhBZG1pblJlc291cmNlcy5NRU5VX0RS T1BfUkVTVFJJQ1QpKSk7CkluZGV4OiBzcmMvY29tL3JlZGhhdC9yaGRiL2Fk bWluL3RyZWUvQ2x1c3Rlck5vZGUuamF2YQo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09ClJDUyBmaWxlOiAvY3ZzL3JoZGIvc3JjL3JoZGIvZ3VpdG9vbHMvcmhk Yi1hZG1pbi9zcmMvY29tL3JlZGhhdC9yaGRiL2FkbWluL3RyZWUvQ2x1c3Rl ck5vZGUuamF2YSx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xLjEuMQpkaWZm IC1jIC1wIC1yMS4xLjEuMSBDbHVzdGVyTm9kZS5qYXZhCioqKiBzcmMvY29t L3JlZGhhdC9yaGRiL2FkbWluL3RyZWUvQ2x1c3Rlck5vZGUuamF2YQkyMSBO b3YgMjAwMyAxODozMDoyNyAtMDAwMAkxLjEuMS4xCi0tLSBzcmMvY29tL3Jl ZGhhdC9yaGRiL2FkbWluL3RyZWUvQ2x1c3Rlck5vZGUuamF2YQkyMiBEZWMg MjAwMyAxOTozMTowNiAtMDAwMAoqKioqKioqKioqKioqKiogcHVibGljIGNs YXNzIENsdXN0ZXJOb2RlIGV4dGVuZHMgQWRtaW5HZQoqKiogMTY2LDE3NSAq KioqCiAgCS8qKgogIAkgKiBSZXR1cm5zIHRoZSBwb3B1cC1tZW51IGZvciB0 aGlzIG5vZGUKICAJICoKICAJICogQHJldHVybiB0aGUgcG9wdXAgbWVudSBm b3IgdGhpcyBub2RlCiAgCSAqLwogIAkKISAJcHVibGljIEpQb3B1cE1lbnUg Z2V0Tm9kZU1lbnUoKSB7CiAgCQlKUG9wdXBNZW51IG1lbnUgPSBuZXcgSlBv cHVwTWVudSgpOwogIAogIAkJbWVudS5hZGQobmV3IEpNZW51SXRlbShBZG1p blJlc291cmNlcy5nZXRTdHJpbmcoQWRtaW5SZXNvdXJjZXMuTUVOVV9FRElU X0NMVVNURVIpKSk7Ci0tLSAxNjYsMTc2IC0tLS0KICAJLyoqCiAgCSAqIFJl dHVybnMgdGhlIHBvcHVwLW1lbnUgZm9yIHRoaXMgbm9kZQogIAkgKgorIAkg KiBAcGFyYW0gY2xpZW50IENsaWVudCB0byB0aGUgYmFja2VuZAogIAkgKiBA cmV0dXJuIHRoZSBwb3B1cCBtZW51IGZvciB0aGlzIG5vZGUKICAJICovCiAg CQohIAlwdWJsaWMgSlBvcHVwTWVudSBnZXROb2RlTWVudShBZG1pbkJhY2tl bmRDbGllbnQgY2xpZW50KSB7CiAgCQlKUG9wdXBNZW51IG1lbnUgPSBuZXcg SlBvcHVwTWVudSgpOwogIAogIAkJbWVudS5hZGQobmV3IEpNZW51SXRlbShB ZG1pblJlc291cmNlcy5nZXRTdHJpbmcoQWRtaW5SZXNvdXJjZXMuTUVOVV9F RElUX0NMVVNURVIpKSk7CkluZGV4OiBzcmMvY29tL3JlZGhhdC9yaGRiL2Fk bWluL3RyZWUvQ29sdW1uVW5kZXJUYWJsZU5vZGUuamF2YQo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3JoZGIvc3JjL3JoZGIvZ3Vp dG9vbHMvcmhkYi1hZG1pbi9zcmMvY29tL3JlZGhhdC9yaGRiL2FkbWluL3Ry ZWUvQ29sdW1uVW5kZXJUYWJsZU5vZGUuamF2YSx2CnJldHJpZXZpbmcgcmV2 aXNpb24gMS4xLjEuMQpkaWZmIC1jIC1wIC1yMS4xLjEuMSBDb2x1bW5VbmRl clRhYmxlTm9kZS5qYXZhCioqKiBzcmMvY29tL3JlZGhhdC9yaGRiL2FkbWlu L3RyZWUvQ29sdW1uVW5kZXJUYWJsZU5vZGUuamF2YQkyMSBOb3YgMjAwMyAx ODozMDoyNyAtMDAwMAkxLjEuMS4xCi0tLSBzcmMvY29tL3JlZGhhdC9yaGRi L2FkbWluL3RyZWUvQ29sdW1uVW5kZXJUYWJsZU5vZGUuamF2YQkyMiBEZWMg MjAwMyAxOTozMTowNiAtMDAwMAoqKioqKioqKioqKioqKiogcHVibGljIGNs YXNzIENvbHVtblVuZGVyVGFibGVOb2RlIGV4dGVuZAoqKiogMTE1LDEyNCAq KioqCiAgCS8qKgogIAkgKiBSZXR1cm5zIHRoZSBwb3B1cC1tZW51IGZvciB0 aGlzIG5vZGUKICAJICoKICAJICogQHJldHVybiB0aGUgcG9wdXAgbWVudSBm b3IgdGhpcyBub2RlCiAgCSAqLwogIAkKISAJcHVibGljIEpQb3B1cE1lbnUg Z2V0Tm9kZU1lbnUoKSB7CiAgCQlKUG9wdXBNZW51IG1lbnUgPSBuZXcgSlBv cHVwTWVudSgpOwogIAogIAkJbWVudS5hZGQobmV3IEpNZW51SXRlbShBZG1p blJlc291cmNlcy5nZXRTdHJpbmcoQWRtaW5SZXNvdXJjZXMuTUVOVV9EUk9Q X1JFU1RSSUNUKSkpOwotLS0gMTE1LDEyNSAtLS0tCiAgCS8qKgogIAkgKiBS ZXR1cm5zIHRoZSBwb3B1cC1tZW51IGZvciB0aGlzIG5vZGUKICAJICoKKyAJ ICogQHBhcmFtIGNsaWVudCBDbGllbnQgdG8gdGhlIGJhY2tlbmQKICAJICog QHJldHVybiB0aGUgcG9wdXAgbWVudSBmb3IgdGhpcyBub2RlCiAgCSAqLwog IAkKISAJcHVibGljIEpQb3B1cE1lbnUgZ2V0Tm9kZU1lbnUoQWRtaW5CYWNr ZW5kQ2xpZW50IGNsaWVudCkgewogIAkJSlBvcHVwTWVudSBtZW51ID0gbmV3 IEpQb3B1cE1lbnUoKTsKICAKICAJCW1lbnUuYWRkKG5ldyBKTWVudUl0ZW0o QWRtaW5SZXNvdXJjZXMuZ2V0U3RyaW5nKEFkbWluUmVzb3VyY2VzLk1FTlVf RFJPUF9SRVNUUklDVCkpKTsKSW5kZXg6IHNyYy9jb20vcmVkaGF0L3JoZGIv YWRtaW4vdHJlZS9Db2x1bW5VbmRlclZpZXdOb2RlLmphdmEKPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yaGRiL3NyYy9yaGRiL2d1 aXRvb2xzL3JoZGItYWRtaW4vc3JjL2NvbS9yZWRoYXQvcmhkYi9hZG1pbi90 cmVlL0NvbHVtblVuZGVyVmlld05vZGUuamF2YSx2CnJldHJpZXZpbmcgcmV2 aXNpb24gMS4xLjEuMQpkaWZmIC1jIC1wIC1yMS4xLjEuMSBDb2x1bW5VbmRl clZpZXdOb2RlLmphdmEKKioqIHNyYy9jb20vcmVkaGF0L3JoZGIvYWRtaW4v dHJlZS9Db2x1bW5VbmRlclZpZXdOb2RlLmphdmEJMjEgTm92IDIwMDMgMTg6 MzA6MjcgLTAwMDAJMS4xLjEuMQotLS0gc3JjL2NvbS9yZWRoYXQvcmhkYi9h ZG1pbi90cmVlL0NvbHVtblVuZGVyVmlld05vZGUuamF2YQkyMiBEZWMgMjAw MyAxOTozMTowNiAtMDAwMAoqKioqKioqKioqKioqKiogcHVibGljIGNsYXNz IENvbHVtblVuZGVyVmlld05vZGUgZXh0ZW5kcwoqKiogOTksMTA4ICoqKioK ICAJLyoqCiAgCSAqIFJldHVybnMgdGhlIHBvcHVwLW1lbnUgZm9yIHRoaXMg bm9kZQogIAkgKgogIAkgKiBAcmV0dXJuIHRoZSBwb3B1cCBtZW51IGZvciB0 aGlzIG5vZGUKICAJICovCiAgCQohIAlwdWJsaWMgSlBvcHVwTWVudSBnZXRO b2RlTWVudSgpIHsKICAJCQkKICAJCUpQb3B1cE1lbnUgbWVudSA9IG5ldyBK UG9wdXBNZW51KCk7CiAgCi0tLSA5OSwxMDkgLS0tLQogIAkvKioKICAJICog UmV0dXJucyB0aGUgcG9wdXAtbWVudSBmb3IgdGhpcyBub2RlCiAgCSAqCisg CSAqIEBwYXJhbSBjbGllbnQgQ2xpZW50IHRvIHRoZSBiYWNrZW5kCiAgCSAq IEByZXR1cm4gdGhlIHBvcHVwIG1lbnUgZm9yIHRoaXMgbm9kZQogIAkgKi8K ICAJCiEgCXB1YmxpYyBKUG9wdXBNZW51IGdldE5vZGVNZW51KEFkbWluQmFj a2VuZENsaWVudCBjbGllbnQpIHsKICAJCQkKICAJCUpQb3B1cE1lbnUgbWVu dSA9IG5ldyBKUG9wdXBNZW51KCk7CiAgCkluZGV4OiBzcmMvY29tL3JlZGhh dC9yaGRiL2FkbWluL3RyZWUvQ29sdW1uc0dlbmVyaWNIZWFkZXJOb2RlLmph dmEKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yaGRi L3NyYy9yaGRiL2d1aXRvb2xzL3JoZGItYWRtaW4vc3JjL2NvbS9yZWRoYXQv cmhkYi9hZG1pbi90cmVlL0NvbHVtbnNHZW5lcmljSGVhZGVyTm9kZS5qYXZh LHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjEuMS4xCmRpZmYgLWMgLXAgLXIx LjEuMS4xIENvbHVtbnNHZW5lcmljSGVhZGVyTm9kZS5qYXZhCioqKiBzcmMv Y29tL3JlZGhhdC9yaGRiL2FkbWluL3RyZWUvQ29sdW1uc0dlbmVyaWNIZWFk ZXJOb2RlLmphdmEJMjEgTm92IDIwMDMgMTg6MzA6MjcgLTAwMDAJMS4xLjEu MQotLS0gc3JjL2NvbS9yZWRoYXQvcmhkYi9hZG1pbi90cmVlL0NvbHVtbnNH ZW5lcmljSGVhZGVyTm9kZS5qYXZhCTIyIERlYyAyMDAzIDE5OjMxOjA2IC0w MDAwCioqKioqKioqKioqKioqKiBwdWJsaWMgYWJzdHJhY3QgY2xhc3MgQ29s dW1uc0dlbmVyaWNIZWFkCioqKiA5NywxMDYgKioqKgogIAkvKioKICAJICog UmV0dXJucyB0aGUgcG9wdXAtbWVudSBmb3IgdGhpcyBub2RlCiAgCSAqCiAg CSAqIEByZXR1cm4gdGhlIHBvcHVwIG1lbnUgZm9yIHRoaXMgbm9kZQogIAkg Ki8KICAJCiEgCXB1YmxpYyBhYnN0cmFjdCBKUG9wdXBNZW51IGdldE5vZGVN ZW51KCk7CiAgCQogIAogIAkvKioKLS0tIDk3LDEwNyAtLS0tCiAgCS8qKgog IAkgKiBSZXR1cm5zIHRoZSBwb3B1cC1tZW51IGZvciB0aGlzIG5vZGUKICAJ ICoKKyAJICogQHBhcmFtIGNsaWVudCBDbGllbnQgdG8gdGhlIGJhY2tlbmQK ICAJICogQHJldHVybiB0aGUgcG9wdXAgbWVudSBmb3IgdGhpcyBub2RlCiAg CSAqLwogIAkKISAJcHVibGljIGFic3RyYWN0IEpQb3B1cE1lbnUgZ2V0Tm9k ZU1lbnUoQWRtaW5CYWNrZW5kQ2xpZW50IGNsaWVudCk7CiAgCQogIAogIAkv KioKSW5kZXg6IHNyYy9jb20vcmVkaGF0L3JoZGIvYWRtaW4vdHJlZS9Db2x1 bW5zVW5kZXJUYWJsZUhlYWRlck5vZGUuamF2YQo9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09ClJDUyBmaWxlOiAvY3ZzL3JoZGIvc3JjL3JoZGIvZ3VpdG9vbHMv cmhkYi1hZG1pbi9zcmMvY29tL3JlZGhhdC9yaGRiL2FkbWluL3RyZWUvQ29s dW1uc1VuZGVyVGFibGVIZWFkZXJOb2RlLmphdmEsdgpyZXRyaWV2aW5nIHJl dmlzaW9uIDEuMS4xLjEKZGlmZiAtYyAtcCAtcjEuMS4xLjEgQ29sdW1uc1Vu ZGVyVGFibGVIZWFkZXJOb2RlLmphdmEKKioqIHNyYy9jb20vcmVkaGF0L3Jo ZGIvYWRtaW4vdHJlZS9Db2x1bW5zVW5kZXJUYWJsZUhlYWRlck5vZGUuamF2 YQkyMSBOb3YgMjAwMyAxODozMDoyNyAtMDAwMAkxLjEuMS4xCi0tLSBzcmMv Y29tL3JlZGhhdC9yaGRiL2FkbWluL3RyZWUvQ29sdW1uc1VuZGVyVGFibGVI ZWFkZXJOb2RlLmphdmEJMjIgRGVjIDIwMDMgMTk6MzE6MDYgLTAwMDAKKioq KioqKioqKioqKioqIHB1YmxpYyBjbGFzcyBDb2x1bW5zVW5kZXJUYWJsZUhl YWRlck5vZGUKKioqIDkxLDEwMCAqKioqCiAgCS8qKgogIAkgKiBSZXR1cm5z IHRoZSBwb3B1cC1tZW51IGZvciB0aGlzIG5vZGUKICAJICoKICAJICogQHJl dHVybiB0aGUgcG9wdXAgbWVudSBmb3IgdGhpcyBub2RlCiAgCSAqLwogIAkK ISAJcHVibGljIEpQb3B1cE1lbnUgZ2V0Tm9kZU1lbnUoKSB7CiAgCQkKICAJ CUpQb3B1cE1lbnUgbWVudSA9IG5ldyBKUG9wdXBNZW51KCk7CiAgCi0tLSA5 MSwxMDEgLS0tLQogIAkvKioKICAJICogUmV0dXJucyB0aGUgcG9wdXAtbWVu dSBmb3IgdGhpcyBub2RlCiAgCSAqCisgCSAqIEBwYXJhbSBjbGllbnQgQ2xp ZW50IHRvIHRoZSBiYWNrZW5kCiAgCSAqIEByZXR1cm4gdGhlIHBvcHVwIG1l bnUgZm9yIHRoaXMgbm9kZQogIAkgKi8KICAJCiEgCXB1YmxpYyBKUG9wdXBN ZW51IGdldE5vZGVNZW51KEFkbWluQmFja2VuZENsaWVudCBjbGllbnQpIHsK ICAJCQogIAkJSlBvcHVwTWVudSBtZW51ID0gbmV3IEpQb3B1cE1lbnUoKTsK ICAKSW5kZXg6IHNyYy9jb20vcmVkaGF0L3JoZGIvYWRtaW4vdHJlZS9Db2x1 bW5zVW5kZXJWaWV3SGVhZGVyTm9kZS5qYXZhCj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KUkNTIGZpbGU6IC9jdnMvcmhkYi9zcmMvcmhkYi9ndWl0b29scy9y aGRiLWFkbWluL3NyYy9jb20vcmVkaGF0L3JoZGIvYWRtaW4vdHJlZS9Db2x1 bW5zVW5kZXJWaWV3SGVhZGVyTm9kZS5qYXZhLHYKcmV0cmlldmluZyByZXZp c2lvbiAxLjEuMS4xCmRpZmYgLWMgLXAgLXIxLjEuMS4xIENvbHVtbnNVbmRl clZpZXdIZWFkZXJOb2RlLmphdmEKKioqIHNyYy9jb20vcmVkaGF0L3JoZGIv YWRtaW4vdHJlZS9Db2x1bW5zVW5kZXJWaWV3SGVhZGVyTm9kZS5qYXZhCTIx IE5vdiAyMDAzIDE4OjMwOjI3IC0wMDAwCTEuMS4xLjEKLS0tIHNyYy9jb20v cmVkaGF0L3JoZGIvYWRtaW4vdHJlZS9Db2x1bW5zVW5kZXJWaWV3SGVhZGVy Tm9kZS5qYXZhCTIyIERlYyAyMDAzIDE5OjMxOjA2IC0wMDAwCioqKioqKioq KioqKioqKiBwdWJsaWMgY2xhc3MgQ29sdW1uc1VuZGVyVmlld0hlYWRlck5v ZGUgCioqKiA4Nyw5NiAqKioqCiAgCS8qKgogIAkgKiBSZXR1cm5zIHRoZSBw b3B1cC1tZW51IGZvciB0aGlzIG5vZGUKICAJICoKICAJICogQHJldHVybiB0 aGUgcG9wdXAgbWVudSBmb3IgdGhpcyBub2RlCiAgCSAqLwogIAkKISAJcHVi bGljIEpQb3B1cE1lbnUgZ2V0Tm9kZU1lbnUoKSB7CiAgCQlKUG9wdXBNZW51 IG1lbnUgPSBuZXcgSlBvcHVwTWVudSgpOwogIAogIAkJcmV0dXJuIG1lbnU7 Ci0tLSA4Nyw5NyAtLS0tCiAgCS8qKgogIAkgKiBSZXR1cm5zIHRoZSBwb3B1 cC1tZW51IGZvciB0aGlzIG5vZGUKICAJICoKKyAJICogQHBhcmFtIGNsaWVu dCBDbGllbnQgdG8gdGhlIGJhY2tlbmQKICAJICogQHJldHVybiB0aGUgcG9w dXAgbWVudSBmb3IgdGhpcyBub2RlCiAgCSAqLwogIAkKISAJcHVibGljIEpQ b3B1cE1lbnUgZ2V0Tm9kZU1lbnUoQWRtaW5CYWNrZW5kQ2xpZW50IGNsaWVu dCkgewogIAkJSlBvcHVwTWVudSBtZW51ID0gbmV3IEpQb3B1cE1lbnUoKTsK ICAKICAJCXJldHVybiBtZW51OwpJbmRleDogc3JjL2NvbS9yZWRoYXQvcmhk Yi9hZG1pbi90cmVlL0NvbnN0cmFpbnRzSGVhZGVyTm9kZS5qYXZhCj09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcmhkYi9zcmMvcmhk Yi9ndWl0b29scy9yaGRiLWFkbWluL3NyYy9jb20vcmVkaGF0L3JoZGIvYWRt aW4vdHJlZS9Db25zdHJhaW50c0hlYWRlck5vZGUuamF2YSx2CnJldHJpZXZp bmcgcmV2aXNpb24gMS4xLjEuMQpkaWZmIC1jIC1wIC1yMS4xLjEuMSBDb25z dHJhaW50c0hlYWRlck5vZGUuamF2YQoqKiogc3JjL2NvbS9yZWRoYXQvcmhk Yi9hZG1pbi90cmVlL0NvbnN0cmFpbnRzSGVhZGVyTm9kZS5qYXZhCTIxIE5v diAyMDAzIDE4OjMwOjI3IC0wMDAwCTEuMS4xLjEKLS0tIHNyYy9jb20vcmVk aGF0L3JoZGIvYWRtaW4vdHJlZS9Db25zdHJhaW50c0hlYWRlck5vZGUuamF2 YQkyMiBEZWMgMjAwMyAxOTozMTowNiAtMDAwMAoqKioqKioqKioqKioqKiog cHVibGljIGNsYXNzIENvbnN0cmFpbnRzSGVhZGVyTm9kZSBleHRlbgoqKiog MTEwLDExOSAqKioqCiAgCS8qKgogIAkgKiBSZXR1cm5zIHRoZSBwb3B1cC1t ZW51IGZvciB0aGlzIG5vZGUKICAJICoKICAJICogQHJldHVybiB0aGUgcG9w dXAgbWVudSBmb3IgdGhpcyBub2RlCiAgCSAqLwogIAkKISAJcHVibGljIEpQ b3B1cE1lbnUgZ2V0Tm9kZU1lbnUoKSB7CiAgCQlKUG9wdXBNZW51IG1lbnUg PSBuZXcgSlBvcHVwTWVudSgpOwogIAkJSk1lbnUgc3ViTWVudSA9IG5ldyBK TWVudShBZG1pblJlc291cmNlcy5nZXRTdHJpbmcoQWRtaW5SZXNvdXJjZXMu TUVOVV9BRERfVEFCTEVfQ09OU1RSQUlOVCkpOwogIAotLS0gMTEwLDEyMCAt LS0tCiAgCS8qKgogIAkgKiBSZXR1cm5zIHRoZSBwb3B1cC1tZW51IGZvciB0 aGlzIG5vZGUKICAJICoKKyAJICogQHBhcmFtIGNsaWVudCBDbGllbnQgdG8g dGhlIGJhY2tlbmQKICAJICogQHJldHVybiB0aGUgcG9wdXAgbWVudSBmb3Ig dGhpcyBub2RlCiAgCSAqLwogIAkKISAJcHVibGljIEpQb3B1cE1lbnUgZ2V0 Tm9kZU1lbnUoQWRtaW5CYWNrZW5kQ2xpZW50IGNsaWVudCkgewogIAkJSlBv cHVwTWVudSBtZW51ID0gbmV3IEpQb3B1cE1lbnUoKTsKICAJCUpNZW51IHN1 Yk1lbnUgPSBuZXcgSk1lbnUoQWRtaW5SZXNvdXJjZXMuZ2V0U3RyaW5nKEFk bWluUmVzb3VyY2VzLk1FTlVfQUREX1RBQkxFX0NPTlNUUkFJTlQpKTsKICAK SW5kZXg6IHNyYy9jb20vcmVkaGF0L3JoZGIvYWRtaW4vdHJlZS9Db252ZXJz aW9uTm9kZS5qYXZhCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6 IC9jdnMvcmhkYi9zcmMvcmhkYi9ndWl0b29scy9yaGRiLWFkbWluL3NyYy9j b20vcmVkaGF0L3JoZGIvYWRtaW4vdHJlZS9Db252ZXJzaW9uTm9kZS5qYXZh LHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjEuMS4xCmRpZmYgLWMgLXAgLXIx LjEuMS4xIENvbnZlcnNpb25Ob2RlLmphdmEKKioqIHNyYy9jb20vcmVkaGF0 L3JoZGIvYWRtaW4vdHJlZS9Db252ZXJzaW9uTm9kZS5qYXZhCTIxIE5vdiAy MDAzIDE4OjMwOjI3IC0wMDAwCTEuMS4xLjEKLS0tIHNyYy9jb20vcmVkaGF0 L3JoZGIvYWRtaW4vdHJlZS9Db252ZXJzaW9uTm9kZS5qYXZhCTIyIERlYyAy MDAzIDE5OjMxOjA2IC0wMDAwCioqKioqKioqKioqKioqKiBwdWJsaWMgY2xh c3MgQ29udmVyc2lvbk5vZGUgZXh0ZW5kcyBBZG1pCioqKiAxMDMsMTEyICoq KioKICAJLyoqCiAgCSAqIFJldHVybnMgdGhlIHBvcHVwLW1lbnUgZm9yIHRo aXMgbm9kZQogIAkgKgogIAkgKiBAcmV0dXJuIHRoZSBwb3B1cCBtZW51IGZv ciB0aGlzIG5vZGUKICAJICovCiAgCQohIAlwdWJsaWMgSlBvcHVwTWVudSBn ZXROb2RlTWVudSgpIHsKICAJCUpQb3B1cE1lbnUgbWVudSA9IG5ldyBKUG9w dXBNZW51KCk7CiAgCiAgCQltZW51LmFkZChuZXcgSk1lbnVJdGVtKEFkbWlu UmVzb3VyY2VzLmdldFN0cmluZyhBZG1pblJlc291cmNlcy5NRU5VX0RST1Bf UkVTVFJJQ1QpKSk7Ci0tLSAxMDMsMTEzIC0tLS0KICAJLyoqCiAgCSAqIFJl dHVybnMgdGhlIHBvcHVwLW1lbnUgZm9yIHRoaXMgbm9kZQogIAkgKgorIAkg KiBAcGFyYW0gY2xpZW50IENsaWVudCB0byB0aGUgYmFja2VuZAogIAkgKiBA cmV0dXJuIHRoZSBwb3B1cCBtZW51IGZvciB0aGlzIG5vZGUKICAJICovCiAg CQohIAlwdWJsaWMgSlBvcHVwTWVudSBnZXROb2RlTWVudShBZG1pbkJhY2tl bmRDbGllbnQgY2xpZW50KSB7CiAgCQlKUG9wdXBNZW51IG1lbnUgPSBuZXcg SlBvcHVwTWVudSgpOwogIAogIAkJbWVudS5hZGQobmV3IEpNZW51SXRlbShB ZG1pblJlc291cmNlcy5nZXRTdHJpbmcoQWRtaW5SZXNvdXJjZXMuTUVOVV9E Uk9QX1JFU1RSSUNUKSkpOwpJbmRleDogc3JjL2NvbS9yZWRoYXQvcmhkYi9h ZG1pbi90cmVlL0NvbnZlcnNpb25zSGVhZGVyTm9kZS5qYXZhCj09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcmhkYi9zcmMvcmhkYi9n dWl0b29scy9yaGRiLWFkbWluL3NyYy9jb20vcmVkaGF0L3JoZGIvYWRtaW4v dHJlZS9Db252ZXJzaW9uc0hlYWRlck5vZGUuamF2YSx2CnJldHJpZXZpbmcg cmV2aXNpb24gMS4xLjEuMQpkaWZmIC1jIC1wIC1yMS4xLjEuMSBDb252ZXJz aW9uc0hlYWRlck5vZGUuamF2YQoqKiogc3JjL2NvbS9yZWRoYXQvcmhkYi9h ZG1pbi90cmVlL0NvbnZlcnNpb25zSGVhZGVyTm9kZS5qYXZhCTIxIE5vdiAy MDAzIDE4OjMwOjI3IC0wMDAwCTEuMS4xLjEKLS0tIHNyYy9jb20vcmVkaGF0 L3JoZGIvYWRtaW4vdHJlZS9Db252ZXJzaW9uc0hlYWRlck5vZGUuamF2YQky MiBEZWMgMjAwMyAxOTozMTowNyAtMDAwMAoqKioqKioqKioqKioqKiogcHVi bGljIGNsYXNzIENvbnZlcnNpb25zSGVhZGVyTm9kZSBleHRlbgoqKiogMTAw LDEwOSAqKioqCiAgCS8qKgogIAkgKiBSZXR1cm5zIHRoZSBwb3B1cC1tZW51 IGZvciB0aGlzIG5vZGUKICAJICoKICAJICogQHJldHVybiB0aGUgcG9wdXAg bWVudSBmb3IgdGhpcyBub2RlCiAgCSAqLwogIAkKISAJcHVibGljIEpQb3B1 cE1lbnUgZ2V0Tm9kZU1lbnUoKSB7CiAgCQlKUG9wdXBNZW51IG1lbnUgPSBu ZXcgSlBvcHVwTWVudSgpOwogIAogIAkJbWVudS5hZGQobmV3IEpNZW51SXRl bShBZG1pblJlc291cmNlcy5nZXRTdHJpbmcoQWRtaW5SZXNvdXJjZXMuTUVO VV9DUkVBVEVfQ09OVkVSU0lPTikpKTsKLS0tIDEwMCwxMTAgLS0tLQogIAkv KioKICAJICogUmV0dXJucyB0aGUgcG9wdXAtbWVudSBmb3IgdGhpcyBub2Rl CiAgCSAqCisgCSAqIEBwYXJhbSBjbGllbnQgQ2xpZW50IHRvIHRoZSBiYWNr ZW5kCiAgCSAqIEByZXR1cm4gdGhlIHBvcHVwIG1lbnUgZm9yIHRoaXMgbm9k ZQogIAkgKi8KICAJCiEgCXB1YmxpYyBKUG9wdXBNZW51IGdldE5vZGVNZW51 KEFkbWluQmFja2VuZENsaWVudCBjbGllbnQpIHsKICAJCUpQb3B1cE1lbnUg bWVudSA9IG5ldyBKUG9wdXBNZW51KCk7CiAgCiAgCQltZW51LmFkZChuZXcg Sk1lbnVJdGVtKEFkbWluUmVzb3VyY2VzLmdldFN0cmluZyhBZG1pblJlc291 cmNlcy5NRU5VX0NSRUFURV9DT05WRVJTSU9OKSkpOwpJbmRleDogc3JjL2Nv bS9yZWRoYXQvcmhkYi9hZG1pbi90cmVlL0RhdGFUeXBlTm9kZS5qYXZhCj09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcmhkYi9zcmMv cmhkYi9ndWl0b29scy9yaGRiLWFkbWluL3NyYy9jb20vcmVkaGF0L3JoZGIv YWRtaW4vdHJlZS9EYXRhVHlwZU5vZGUuamF2YSx2CnJldHJpZXZpbmcgcmV2 aXNpb24gMS4xLjEuMQpkaWZmIC1jIC1wIC1yMS4xLjEuMSBEYXRhVHlwZU5v ZGUuamF2YQoqKiogc3JjL2NvbS9yZWRoYXQvcmhkYi9hZG1pbi90cmVlL0Rh dGFUeXBlTm9kZS5qYXZhCTIxIE5vdiAyMDAzIDE4OjMwOjI3IC0wMDAwCTEu MS4xLjEKLS0tIHNyYy9jb20vcmVkaGF0L3JoZGIvYWRtaW4vdHJlZS9EYXRh VHlwZU5vZGUuamF2YQkyMiBEZWMgMjAwMyAxOTozMTowNyAtMDAwMAoqKioq KioqKioqKioqKiogcHVibGljIGNsYXNzIERhdGFUeXBlTm9kZSBleHRlbmRz IEFkbWluRwoqKiogMTA1LDExNCAqKioqCiAgCS8qKgogIAkgKiBSZXR1cm5z IHRoZSBwb3B1cC1tZW51IGZvciB0aGlzIG5vZGUKICAJICoKICAJICogQHJl dHVybiB0aGUgcG9wdXAgbWVudSBmb3IgdGhpcyBub2RlCiAgCSAqLwogIAkK ISAJcHVibGljIEpQb3B1cE1lbnUgZ2V0Tm9kZU1lbnUoKSB7CiAgCQlKUG9w dXBNZW51IG1lbnUgPSBuZXcgSlBvcHVwTWVudSgpOwogIAogIAkJbWVudS5h ZGQobmV3IEpNZW51SXRlbShBZG1pblJlc291cmNlcy5nZXRTdHJpbmcoQWRt aW5SZXNvdXJjZXMuTUVOVV9EUk9QX1JFU1RSSUNUKSkpOwotLS0gMTA1LDEx NSAtLS0tCiAgCS8qKgogIAkgKiBSZXR1cm5zIHRoZSBwb3B1cC1tZW51IGZv ciB0aGlzIG5vZGUKICAJICoKKyAJICogQHBhcmFtIGNsaWVudCBDbGllbnQg dG8gdGhlIGJhY2tlbmQKICAJICogQHJldHVybiB0aGUgcG9wdXAgbWVudSBm b3IgdGhpcyBub2RlCiAgCSAqLwogIAkKISAJcHVibGljIEpQb3B1cE1lbnUg Z2V0Tm9kZU1lbnUoQWRtaW5CYWNrZW5kQ2xpZW50IGNsaWVudCkgewogIAkJ SlBvcHVwTWVudSBtZW51ID0gbmV3IEpQb3B1cE1lbnUoKTsKICAKICAJCW1l bnUuYWRkKG5ldyBKTWVudUl0ZW0oQWRtaW5SZXNvdXJjZXMuZ2V0U3RyaW5n KEFkbWluUmVzb3VyY2VzLk1FTlVfRFJPUF9SRVNUUklDVCkpKTsKSW5kZXg6 IHNyYy9jb20vcmVkaGF0L3JoZGIvYWRtaW4vdHJlZS9EYXRhVHlwZXNIZWFk ZXJOb2RlLmphdmEKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTog L2N2cy9yaGRiL3NyYy9yaGRiL2d1aXRvb2xzL3JoZGItYWRtaW4vc3JjL2Nv bS9yZWRoYXQvcmhkYi9hZG1pbi90cmVlL0RhdGFUeXBlc0hlYWRlck5vZGUu amF2YSx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xLjEuMQpkaWZmIC1jIC1w IC1yMS4xLjEuMSBEYXRhVHlwZXNIZWFkZXJOb2RlLmphdmEKKioqIHNyYy9j b20vcmVkaGF0L3JoZGIvYWRtaW4vdHJlZS9EYXRhVHlwZXNIZWFkZXJOb2Rl LmphdmEJMjEgTm92IDIwMDMgMTg6MzA6MjcgLTAwMDAJMS4xLjEuMQotLS0g c3JjL2NvbS9yZWRoYXQvcmhkYi9hZG1pbi90cmVlL0RhdGFUeXBlc0hlYWRl ck5vZGUuamF2YQkyMiBEZWMgMjAwMyAxOTozMTowNyAtMDAwMAoqKioqKioq KioqKioqKiogcHVibGljIGNsYXNzIERhdGFUeXBlc0hlYWRlck5vZGUgZXh0 ZW5kcwoqKiogMTQxLDE1MCAqKioqCiAgCS8qKgogIAkgKiBSZXR1cm5zIHRo ZSBwb3B1cC1tZW51IGZvciB0aGlzIG5vZGUKICAJICoKICAJICogQHJldHVy biB0aGUgcG9wdXAgbWVudSBmb3IgdGhpcyBub2RlCiAgCSAqLwogIAkKISAJ cHVibGljIEpQb3B1cE1lbnUgZ2V0Tm9kZU1lbnUoKSB7CiAgCQlKUG9wdXBN ZW51IG1lbnUgPSBuZXcgSlBvcHVwTWVudSgpOwogIAogIAkJbWVudS5hZGQo bmV3IEpNZW51SXRlbShBZG1pblJlc291cmNlcy5nZXRTdHJpbmcoQWRtaW5S ZXNvdXJjZXMuTUVOVV9DUkVBVEVfREFUQVRZUEUpKSk7Ci0tLSAxNDEsMTUx IC0tLS0KICAJLyoqCiAgCSAqIFJldHVybnMgdGhlIHBvcHVwLW1lbnUgZm9y IHRoaXMgbm9kZQogIAkgKgorIAkgKiBAcGFyYW0gY2xpZW50IENsaWVudCB0 byB0aGUgYmFja2VuZAogIAkgKiBAcmV0dXJuIHRoZSBwb3B1cCBtZW51IGZv ciB0aGlzIG5vZGUKICAJICovCiAgCQohIAlwdWJsaWMgSlBvcHVwTWVudSBn ZXROb2RlTWVudShBZG1pbkJhY2tlbmRDbGllbnQgY2xpZW50KSB7CiAgCQlK UG9wdXBNZW51IG1lbnUgPSBuZXcgSlBvcHVwTWVudSgpOwogIAogIAkJbWVu dS5hZGQobmV3IEpNZW51SXRlbShBZG1pblJlc291cmNlcy5nZXRTdHJpbmco QWRtaW5SZXNvdXJjZXMuTUVOVV9DUkVBVEVfREFUQVRZUEUpKSk7CkluZGV4 OiBzcmMvY29tL3JlZGhhdC9yaGRiL2FkbWluL3RyZWUvRGF0YWJhc2VOb2Rl LmphdmEKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9y aGRiL3NyYy9yaGRiL2d1aXRvb2xzL3JoZGItYWRtaW4vc3JjL2NvbS9yZWRo YXQvcmhkYi9hZG1pbi90cmVlL0RhdGFiYXNlTm9kZS5qYXZhLHYKcmV0cmll dmluZyByZXZpc2lvbiAxLjEuMS4xCmRpZmYgLWMgLXAgLXIxLjEuMS4xIERh dGFiYXNlTm9kZS5qYXZhCioqKiBzcmMvY29tL3JlZGhhdC9yaGRiL2FkbWlu L3RyZWUvRGF0YWJhc2VOb2RlLmphdmEJMjEgTm92IDIwMDMgMTg6MzA6Mjgg LTAwMDAJMS4xLjEuMQotLS0gc3JjL2NvbS9yZWRoYXQvcmhkYi9hZG1pbi90 cmVlL0RhdGFiYXNlTm9kZS5qYXZhCTIyIERlYyAyMDAzIDE5OjMxOjA3IC0w MDAwCioqKioqKioqKioqKioqKiBwdWJsaWMgY2xhc3MgRGF0YWJhc2VOb2Rl IGV4dGVuZHMgQWRtaW5HCioqKiAxMzcsMTU2ICoqKioKICAJCQlsYXVuY2hT aGVsbChkb2NrV2luZG93KTsKICAJCX0gZWxzZSBpZiAoc2VsZWN0ZWRNZW51 Q2FwdGlvbiA9PSBBZG1pblJlc291cmNlcy5nZXRTdHJpbmcoQWRtaW5SZXNv dXJjZXMuUkVGUkVTSF9USElTX0xFVkVMKSkgewogIAkJCXJlZnJlc2hTZWxm KGNsaWVudCk7CiAgCQl9CiAgCX0KICAKICAJLyoqCiAgCSAqIFJldHVybnMg dGhlIHBvcHVwLW1lbnUgZm9yIHRoaXMgbm9kZQogIAkgKgogIAkgKiBAcmV0 dXJuIHRoZSBwb3B1cCBtZW51IGZvciB0aGlzIG5vZGUKICAJICovCiAgCQoh IAlwdWJsaWMgSlBvcHVwTWVudSBnZXROb2RlTWVudSgpIHsKICAJCUpQb3B1 cE1lbnUgbWVudSA9IG5ldyBKUG9wdXBNZW51KCk7CiAgCQkKISAJCW1lbnUu YWRkKG5ldyBKTWVudUl0ZW0oQWRtaW5SZXNvdXJjZXMuZ2V0U3RyaW5nKEFk bWluUmVzb3VyY2VzLk1FTlVfRFJPUF9EQVRBQkFTRSkpKTsKICAJCQogIAkJ Sk1lbnUgc3ViTWVudSA9IG5ldyBKTWVudShBZG1pblJlc291cmNlcy5nZXRT dHJpbmcoQWRtaW5SZXNvdXJjZXMuTUVOVV9BTFRFUl9EQVRBQkFTRSkpOwog IAkJc3ViTWVudS5hZGQobmV3IEpNZW51SXRlbShBZG1pblJlc291cmNlcy5n ZXRTdHJpbmcoQWRtaW5SZXNvdXJjZXMuTUVOVV9BTFRFUl9EQVRBQkFTRV9T RVRfVkFSKSkpOwkJCiAgCQltZW51LmFkZChzdWJNZW51KTsKLS0tIDEzNywx NzkgLS0tLQogIAkJCWxhdW5jaFNoZWxsKGRvY2tXaW5kb3cpOwogIAkJfSBl bHNlIGlmIChzZWxlY3RlZE1lbnVDYXB0aW9uID09IEFkbWluUmVzb3VyY2Vz LmdldFN0cmluZyhBZG1pblJlc291cmNlcy5SRUZSRVNIX1RISVNfTEVWRUwp KSB7CiAgCQkJcmVmcmVzaFNlbGYoY2xpZW50KTsKKyAJCX0gZWxzZSBpZiAo c2VsZWN0ZWRNZW51Q2FwdGlvbiA9PSBBZG1pblJlc291cmNlcy5nZXRTdHJp bmcoQWRtaW5SZXNvdXJjZXMuTUVOVV9SRU5BTUVfREFUQUJBU0UpKSB7Cisg CQkJUmVuYW1lRGlhbG9nIHJkID0gbmV3IFJlbmFtZURpYWxvZyhkb2NrV2lu ZG93LCB0aGlzLCBjbGllbnQsIHRoaXMuZ2V0Tm9kZVR5cGUoKSk7CisgCQkJ cmQuc2hvdygpOwogIAkJfQogIAl9CiAgCiAgCS8qKgogIAkgKiBSZXR1cm5z IHRoZSBwb3B1cC1tZW51IGZvciB0aGlzIG5vZGUKICAJICoKKyAJICogQHBh cmFtIGNsaWVudCBDbGllbnQgdG8gdGhlIGJhY2tlbmQKICAJICogQHJldHVy biB0aGUgcG9wdXAgbWVudSBmb3IgdGhpcyBub2RlCiAgCSAqLwogIAkKISAJ cHVibGljIEpQb3B1cE1lbnUgZ2V0Tm9kZU1lbnUoQWRtaW5CYWNrZW5kQ2xp ZW50IGNsaWVudCkgewogIAkJSlBvcHVwTWVudSBtZW51ID0gbmV3IEpQb3B1 cE1lbnUoKTsKICAJCQohIAkJLy8gTWVudSBpdGVtcyB0aGF0IHZhcnkgYWNj b3JkaW5nIHRvIGJhY2tlbmQKISAJCQohIAkJSk1lbnVJdGVtIGptaVJlbmFt ZSA9IG5ldyBKTWVudUl0ZW0oKTsKISAJCWptaVJlbmFtZS5zZXRUZXh0KEFk bWluUmVzb3VyY2VzLmdldFN0cmluZyhBZG1pblJlc291cmNlcy5NRU5VX1JF TkFNRV9EQVRBQkFTRSkpOwohIAkJam1pUmVuYW1lLnNldEVuYWJsZWQoZmFs c2UpOwogIAkJCisgCQl0cnkgeworIAkJCQorIAkJCS8vIEZvciBhIGNvbnNp c3RlbnQgbG9vaywgaWYgaXRlbSBpcyBub3QgYXZhaWxhYmxlIG9uIHRoaXMg dmVyc2lvbiwgCisgCQkJLy8gd2Ugd2lsbCBkaXNhYmxlIGl0LCBidXQgc3Rp bGwgc2hvdyBpdAorIAorIAkJCWlmIChjbGllbnQuZ2V0QmFja2VuZFZlcnNp b24odGhpcy5nZXRQYXJlbnRDbHVzdGVyTmFtZSgpKSA+IDcuMykgeworIAkJ CQkgam1pUmVuYW1lLnNldEVuYWJsZWQodHJ1ZSk7CisgCQkJfQorIAorIAkJ fSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAJCQkvLyBOb3RoaW5nLi4gZWxl bWVudCB3aWxsIHJlbWFpbiBkaXNhYmxlZAorIAkJfQorIAkJCisgCQltZW51 LmFkZChuZXcgSk1lbnVJdGVtKEFkbWluUmVzb3VyY2VzLmdldFN0cmluZyhB ZG1pblJlc291cmNlcy5NRU5VX0RST1BfREFUQUJBU0UpKSk7CisgCQltZW51 LmFkZChqbWlSZW5hbWUpOwogIAkJSk1lbnUgc3ViTWVudSA9IG5ldyBKTWVu dShBZG1pblJlc291cmNlcy5nZXRTdHJpbmcoQWRtaW5SZXNvdXJjZXMuTUVO VV9BTFRFUl9EQVRBQkFTRSkpOwogIAkJc3ViTWVudS5hZGQobmV3IEpNZW51 SXRlbShBZG1pblJlc291cmNlcy5nZXRTdHJpbmcoQWRtaW5SZXNvdXJjZXMu TUVOVV9BTFRFUl9EQVRBQkFTRV9TRVRfVkFSKSkpOwkJCiAgCQltZW51LmFk ZChzdWJNZW51KTsKSW5kZXg6IHNyYy9jb20vcmVkaGF0L3JoZGIvYWRtaW4v dHJlZS9EYXRhYmFzZXNIZWFkZXJOb2RlLmphdmEKPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yaGRiL3NyYy9yaGRiL2d1aXRvb2xz L3JoZGItYWRtaW4vc3JjL2NvbS9yZWRoYXQvcmhkYi9hZG1pbi90cmVlL0Rh dGFiYXNlc0hlYWRlck5vZGUuamF2YSx2CnJldHJpZXZpbmcgcmV2aXNpb24g MS4xLjEuMQpkaWZmIC1jIC1wIC1yMS4xLjEuMSBEYXRhYmFzZXNIZWFkZXJO b2RlLmphdmEKKioqIHNyYy9jb20vcmVkaGF0L3JoZGIvYWRtaW4vdHJlZS9E YXRhYmFzZXNIZWFkZXJOb2RlLmphdmEJMjEgTm92IDIwMDMgMTg6MzA6Mjgg LTAwMDAJMS4xLjEuMQotLS0gc3JjL2NvbS9yZWRoYXQvcmhkYi9hZG1pbi90 cmVlL0RhdGFiYXNlc0hlYWRlck5vZGUuamF2YQkyMiBEZWMgMjAwMyAxOToz MTowNyAtMDAwMAoqKioqKioqKioqKioqKiogcHVibGljIGNsYXNzIERhdGFi YXNlc0hlYWRlck5vZGUgZXh0ZW5kcwoqKiogMTkwLDE5OSAqKioqCiAgCS8q KgogIAkgKiBSZXR1cm5zIHRoZSBwb3B1cC1tZW51IGZvciB0aGlzIG5vZGUK ICAJICoKICAJICogQHJldHVybiB0aGUgcG9wdXAgbWVudSBmb3IgdGhpcyBu b2RlCiAgCSAqLwogIAkKISAJcHVibGljIEpQb3B1cE1lbnUgZ2V0Tm9kZU1l bnUoKSB7CiAgCQlKUG9wdXBNZW51IG1lbnUgPSBuZXcgSlBvcHVwTWVudSgp OwogIAogIAkJbWVudS5hZGQobmV3IEpNZW51SXRlbShBZG1pblJlc291cmNl cy5nZXRTdHJpbmcoQWRtaW5SZXNvdXJjZXMuTUVOVV9DUkVBVEVfREFUQUJB U0UpKSk7Ci0tLSAxOTAsMjAwIC0tLS0KICAJLyoqCiAgCSAqIFJldHVybnMg dGhlIHBvcHVwLW1lbnUgZm9yIHRoaXMgbm9kZQogIAkgKgorIAkgKiBAcGFy YW0gY2xpZW50IENsaWVudCB0byB0aGUgYmFja2VuZAogIAkgKiBAcmV0dXJu IHRoZSBwb3B1cCBtZW51IGZvciB0aGlzIG5vZGUKICAJICovCiAgCQohIAlw dWJsaWMgSlBvcHVwTWVudSBnZXROb2RlTWVudShBZG1pbkJhY2tlbmRDbGll bnQgY2xpZW50KSB7CiAgCQlKUG9wdXBNZW51IG1lbnUgPSBuZXcgSlBvcHVw TWVudSgpOwogIAogIAkJbWVudS5hZGQobmV3IEpNZW51SXRlbShBZG1pblJl c291cmNlcy5nZXRTdHJpbmcoQWRtaW5SZXNvdXJjZXMuTUVOVV9DUkVBVEVf REFUQUJBU0UpKSk7CkluZGV4OiBzcmMvY29tL3JlZGhhdC9yaGRiL2FkbWlu L3RyZWUvRG9tYWluTm9kZS5qYXZhCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K UkNTIGZpbGU6IC9jdnMvcmhkYi9zcmMvcmhkYi9ndWl0b29scy9yaGRiLWFk bWluL3NyYy9jb20vcmVkaGF0L3JoZGIvYWRtaW4vdHJlZS9Eb21haW5Ob2Rl LmphdmEsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMS4xLjEKZGlmZiAtYyAt cCAtcjEuMS4xLjEgRG9tYWluTm9kZS5qYXZhCioqKiBzcmMvY29tL3JlZGhh dC9yaGRiL2FkbWluL3RyZWUvRG9tYWluTm9kZS5qYXZhCTIxIE5vdiAyMDAz IDE4OjMwOjI4IC0wMDAwCTEuMS4xLjEKLS0tIHNyYy9jb20vcmVkaGF0L3Jo ZGIvYWRtaW4vdHJlZS9Eb21haW5Ob2RlLmphdmEJMjIgRGVjIDIwMDMgMTk6 MzE6MDcgLTAwMDAKKioqKioqKioqKioqKioqIHB1YmxpYyBjbGFzcyBEb21h aW5Ob2RlIGV4dGVuZHMgQWRtaW5HZW4KKioqIDE0MiwxNTEgKioqKgogIAkv KioKICAJICogUmV0dXJucyB0aGUgcG9wdXAtbWVudSBmb3IgdGhpcyBub2Rl CiAgCSAqCiAgCSAqIEByZXR1cm4gdGhlIHBvcHVwIG1lbnUgZm9yIHRoaXMg bm9kZQogIAkgKi8KICAJCiEgCXB1YmxpYyBKUG9wdXBNZW51IGdldE5vZGVN ZW51KCkgewogIAkJSlBvcHVwTWVudSBtZW51ID0gbmV3IEpQb3B1cE1lbnUo KTsKICAKICAJCW1lbnUuYWRkKG5ldyBKTWVudUl0ZW0oQWRtaW5SZXNvdXJj ZXMuZ2V0U3RyaW5nKEFkbWluUmVzb3VyY2VzLk1FTlVfRFJPUF9SRVNUUklD VCkpKTsKLS0tIDE0MiwxNTIgLS0tLQogIAkvKioKICAJICogUmV0dXJucyB0 aGUgcG9wdXAtbWVudSBmb3IgdGhpcyBub2RlCiAgCSAqCisgCSAqIEBwYXJh bSBjbGllbnQgQ2xpZW50IHRvIHRoZSBiYWNrZW5kCiAgCSAqIEByZXR1cm4g dGhlIHBvcHVwIG1lbnUgZm9yIHRoaXMgbm9kZQogIAkgKi8KICAJCiEgCXB1 YmxpYyBKUG9wdXBNZW51IGdldE5vZGVNZW51KEFkbWluQmFja2VuZENsaWVu dCBjbGllbnQpIHsKICAJCUpQb3B1cE1lbnUgbWVudSA9IG5ldyBKUG9wdXBN ZW51KCk7CiAgCiAgCQltZW51LmFkZChuZXcgSk1lbnVJdGVtKEFkbWluUmVz b3VyY2VzLmdldFN0cmluZyhBZG1pblJlc291cmNlcy5NRU5VX0RST1BfUkVT VFJJQ1QpKSk7CkluZGV4OiBzcmMvY29tL3JlZGhhdC9yaGRiL2FkbWluL3Ry ZWUvRG9tYWluc0hlYWRlck5vZGUuamF2YQo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09ClJDUyBmaWxlOiAvY3ZzL3JoZGIvc3JjL3JoZGIvZ3VpdG9vbHMvcmhk Yi1hZG1pbi9zcmMvY29tL3JlZGhhdC9yaGRiL2FkbWluL3RyZWUvRG9tYWlu c0hlYWRlck5vZGUuamF2YSx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xLjEu MQpkaWZmIC1jIC1wIC1yMS4xLjEuMSBEb21haW5zSGVhZGVyTm9kZS5qYXZh CioqKiBzcmMvY29tL3JlZGhhdC9yaGRiL2FkbWluL3RyZWUvRG9tYWluc0hl YWRlck5vZGUuamF2YQkyMSBOb3YgMjAwMyAxODozMDoyOCAtMDAwMAkxLjEu MS4xCi0tLSBzcmMvY29tL3JlZGhhdC9yaGRiL2FkbWluL3RyZWUvRG9tYWlu c0hlYWRlck5vZGUuamF2YQkyMiBEZWMgMjAwMyAxOTozMTowNyAtMDAwMAoq KioqKioqKioqKioqKiogcHVibGljIGNsYXNzIERvbWFpbnNIZWFkZXJOb2Rl IGV4dGVuZHMgQQoqKiogMTAwLDEwOSAqKioqCiAgCS8qKgogIAkgKiBSZXR1 cm5zIHRoZSBwb3B1cC1tZW51IGZvciB0aGlzIG5vZGUKICAJICoKICAJICog QHJldHVybiB0aGUgcG9wdXAgbWVudSBmb3IgdGhpcyBub2RlCiAgCSAqLwog IAkKISAJcHVibGljIEpQb3B1cE1lbnUgZ2V0Tm9kZU1lbnUoKSB7CiAgCQlK UG9wdXBNZW51IG1lbnUgPSBuZXcgSlBvcHVwTWVudSgpOwogIAogIAkJbWVu dS5hZGQobmV3IEpNZW51SXRlbShBZG1pblJlc291cmNlcy5nZXRTdHJpbmco QWRtaW5SZXNvdXJjZXMuTUVOVV9DUkVBVEVfRE9NQUlOKSkpOwotLS0gMTAw LDExMCAtLS0tCiAgCS8qKgogIAkgKiBSZXR1cm5zIHRoZSBwb3B1cC1tZW51 IGZvciB0aGlzIG5vZGUKICAJICoKKyAJICogQHBhcmFtIGNsaWVudCBDbGll bnQgdG8gdGhlIGJhY2tlbmQKICAJICogQHJldHVybiB0aGUgcG9wdXAgbWVu dSBmb3IgdGhpcyBub2RlCiAgCSAqLwogIAkKISAJcHVibGljIEpQb3B1cE1l bnUgZ2V0Tm9kZU1lbnUoQWRtaW5CYWNrZW5kQ2xpZW50IGNsaWVudCkgewog IAkJSlBvcHVwTWVudSBtZW51ID0gbmV3IEpQb3B1cE1lbnUoKTsKICAKICAJ CW1lbnUuYWRkKG5ldyBKTWVudUl0ZW0oQWRtaW5SZXNvdXJjZXMuZ2V0U3Ry aW5nKEFkbWluUmVzb3VyY2VzLk1FTlVfQ1JFQVRFX0RPTUFJTikpKTsKSW5k ZXg6IHNyYy9jb20vcmVkaGF0L3JoZGIvYWRtaW4vdHJlZS9EdW1teU5vZGUu amF2YQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jo ZGIvc3JjL3JoZGIvZ3VpdG9vbHMvcmhkYi1hZG1pbi9zcmMvY29tL3JlZGhh dC9yaGRiL2FkbWluL3RyZWUvRHVtbXlOb2RlLmphdmEsdgpyZXRyaWV2aW5n IHJldmlzaW9uIDEuMS4xLjEKZGlmZiAtYyAtcCAtcjEuMS4xLjEgRHVtbXlO b2RlLmphdmEKKioqIHNyYy9jb20vcmVkaGF0L3JoZGIvYWRtaW4vdHJlZS9E dW1teU5vZGUuamF2YQkyMSBOb3YgMjAwMyAxODozMDoyOCAtMDAwMAkxLjEu MS4xCi0tLSBzcmMvY29tL3JlZGhhdC9yaGRiL2FkbWluL3RyZWUvRHVtbXlO b2RlLmphdmEJMjIgRGVjIDIwMDMgMTk6MzE6MDcgLTAwMDAKKioqKioqKioq KioqKioqIHB1YmxpYyBjbGFzcyBEdW1teU5vZGUgZXh0ZW5kcyBBZG1pbkdl bmUKKioqIDUxLDU3ICoqKioKICAJCXJldHVybiBub2RlSWNvbjsKICAJfQog IAkKISAJcHVibGljIGphdmF4LnN3aW5nLkpQb3B1cE1lbnUgZ2V0Tm9kZU1l bnUoKSB7CiAgCQlyZXR1cm4gbnVsbDsKICAJfQogIAkKLS0tIDUxLDU3IC0t LS0KICAJCXJldHVybiBub2RlSWNvbjsKICAJfQogIAkKISAJcHVibGljIGph dmF4LnN3aW5nLkpQb3B1cE1lbnUgZ2V0Tm9kZU1lbnUoQWRtaW5CYWNrZW5k Q2xpZW50IGNsaWVudCkgewogIAkJcmV0dXJuIG51bGw7CiAgCX0KICAJCklu ZGV4OiBzcmMvY29tL3JlZGhhdC9yaGRiL2FkbWluL3RyZWUvRktDb25zdHJh aW50Tm9kZS5qYXZhCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6 IC9jdnMvcmhkYi9zcmMvcmhkYi9ndWl0b29scy9yaGRiLWFkbWluL3NyYy9j b20vcmVkaGF0L3JoZGIvYWRtaW4vdHJlZS9GS0NvbnN0cmFpbnROb2RlLmph dmEsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMS4xLjEKZGlmZiAtYyAtcCAt cjEuMS4xLjEgRktDb25zdHJhaW50Tm9kZS5qYXZhCioqKiBzcmMvY29tL3Jl ZGhhdC9yaGRiL2FkbWluL3RyZWUvRktDb25zdHJhaW50Tm9kZS5qYXZhCTIx IE5vdiAyMDAzIDE4OjMwOjI4IC0wMDAwCTEuMS4xLjEKLS0tIHNyYy9jb20v cmVkaGF0L3JoZGIvYWRtaW4vdHJlZS9GS0NvbnN0cmFpbnROb2RlLmphdmEJ MjIgRGVjIDIwMDMgMTk6MzE6MDcgLTAwMDAKKioqKioqKioqKioqKioqIHB1 YmxpYyBjbGFzcyBGS0NvbnN0cmFpbnROb2RlIGV4dGVuZHMgQWQKKioqIDE5 OCwyMDcgKioqKgogIAkvKioKICAJICogUmV0dXJucyB0aGUgcG9wdXAtbWVu dSBmb3IgdGhpcyBub2RlCiAgCSAqCiAgCSAqIEByZXR1cm4gdGhlIHBvcHVw IG1lbnUgZm9yIHRoaXMgbm9kZQogIAkgKi8KICAJCiEgCXB1YmxpYyBKUG9w dXBNZW51IGdldE5vZGVNZW51KCkgewogIAkJSlBvcHVwTWVudSBtZW51ID0g bmV3IEpQb3B1cE1lbnUoKTsKICAKICAJCW1lbnUuYWRkKG5ldyBKTWVudUl0 ZW0oQWRtaW5SZXNvdXJjZXMuZ2V0U3RyaW5nKEFkbWluUmVzb3VyY2VzLk1F TlVfRFJPUF9SRVNUUklDVCkpKTsKLS0tIDE5OCwyMDggLS0tLQogIAkvKioK ICAJICogUmV0dXJucyB0aGUgcG9wdXAtbWVudSBmb3IgdGhpcyBub2RlCiAg CSAqCisgCSAqIEBwYXJhbSBjbGllbnQgQ2xpZW50IHRvIHRoZSBiYWNrZW5k CiAgCSAqIEByZXR1cm4gdGhlIHBvcHVwIG1lbnUgZm9yIHRoaXMgbm9kZQog IAkgKi8KICAJCiEgCXB1YmxpYyBKUG9wdXBNZW51IGdldE5vZGVNZW51KEFk bWluQmFja2VuZENsaWVudCBjbGllbnQpIHsKICAJCUpQb3B1cE1lbnUgbWVu dSA9IG5ldyBKUG9wdXBNZW51KCk7CiAgCiAgCQltZW51LmFkZChuZXcgSk1l bnVJdGVtKEFkbWluUmVzb3VyY2VzLmdldFN0cmluZyhBZG1pblJlc291cmNl cy5NRU5VX0RST1BfUkVTVFJJQ1QpKSk7CkluZGV4OiBzcmMvY29tL3JlZGhh dC9yaGRiL2FkbWluL3RyZWUvRnVuY3Rpb25Ob2RlLmphdmEKPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yaGRiL3NyYy9yaGRiL2d1 aXRvb2xzL3JoZGItYWRtaW4vc3JjL2NvbS9yZWRoYXQvcmhkYi9hZG1pbi90 cmVlL0Z1bmN0aW9uTm9kZS5qYXZhLHYKcmV0cmlldmluZyByZXZpc2lvbiAx LjEuMS4xCmRpZmYgLWMgLXAgLXIxLjEuMS4xIEZ1bmN0aW9uTm9kZS5qYXZh CioqKiBzcmMvY29tL3JlZGhhdC9yaGRiL2FkbWluL3RyZWUvRnVuY3Rpb25O b2RlLmphdmEJMjEgTm92IDIwMDMgMTg6MzA6MjggLTAwMDAJMS4xLjEuMQot LS0gc3JjL2NvbS9yZWRoYXQvcmhkYi9hZG1pbi90cmVlL0Z1bmN0aW9uTm9k ZS5qYXZhCTIyIERlYyAyMDAzIDE5OjMxOjA3IC0wMDAwCioqKioqKioqKioq KioqKiBwdWJsaWMgY2xhc3MgRnVuY3Rpb25Ob2RlIGV4dGVuZHMgQWRtaW5H CioqKiAxNDAsMTQ5ICoqKioKICAJLyoqCiAgCSAqIFJldHVybnMgdGhlIHBv cHVwLW1lbnUgZm9yIHRoaXMgbm9kZQogIAkgKgogIAkgKiBAcmV0dXJuIHRo ZSBwb3B1cCBtZW51IGZvciB0aGlzIG5vZGUKICAJICovCiAgCQohIAlwdWJs aWMgSlBvcHVwTWVudSBnZXROb2RlTWVudSgpIHsKICAJCUpQb3B1cE1lbnUg bWVudSA9IG5ldyBKUG9wdXBNZW51KCk7CiAgCiAgCQltZW51LmFkZChuZXcg Sk1lbnVJdGVtKEFkbWluUmVzb3VyY2VzLmdldFN0cmluZyhBZG1pblJlc291 cmNlcy5NRU5VX0RST1BfUkVTVFJJQ1QpKSk7Ci0tLSAxNDAsMTUwIC0tLS0K ICAJLyoqCiAgCSAqIFJldHVybnMgdGhlIHBvcHVwLW1lbnUgZm9yIHRoaXMg bm9kZQogIAkgKgorIAkgKiBAcGFyYW0gY2xpZW50IENsaWVudCB0byB0aGUg YmFja2VuZAogIAkgKiBAcmV0dXJuIHRoZSBwb3B1cCBtZW51IGZvciB0aGlz IG5vZGUKICAJICovCiAgCQohIAlwdWJsaWMgSlBvcHVwTWVudSBnZXROb2Rl TWVudShBZG1pbkJhY2tlbmRDbGllbnQgY2xpZW50KSB7CiAgCQlKUG9wdXBN ZW51IG1lbnUgPSBuZXcgSlBvcHVwTWVudSgpOwogIAogIAkJbWVudS5hZGQo bmV3IEpNZW51SXRlbShBZG1pblJlc291cmNlcy5nZXRTdHJpbmcoQWRtaW5S ZXNvdXJjZXMuTUVOVV9EUk9QX1JFU1RSSUNUKSkpOwpJbmRleDogc3JjL2Nv bS9yZWRoYXQvcmhkYi9hZG1pbi90cmVlL0Z1bmN0aW9uc0hlYWRlck5vZGUu amF2YQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jo ZGIvc3JjL3JoZGIvZ3VpdG9vbHMvcmhkYi1hZG1pbi9zcmMvY29tL3JlZGhh dC9yaGRiL2FkbWluL3RyZWUvRnVuY3Rpb25zSGVhZGVyTm9kZS5qYXZhLHYK cmV0cmlldmluZyByZXZpc2lvbiAxLjEuMS4xCmRpZmYgLWMgLXAgLXIxLjEu MS4xIEZ1bmN0aW9uc0hlYWRlck5vZGUuamF2YQoqKiogc3JjL2NvbS9yZWRo YXQvcmhkYi9hZG1pbi90cmVlL0Z1bmN0aW9uc0hlYWRlck5vZGUuamF2YQky MSBOb3YgMjAwMyAxODozMDoyOCAtMDAwMAkxLjEuMS4xCi0tLSBzcmMvY29t L3JlZGhhdC9yaGRiL2FkbWluL3RyZWUvRnVuY3Rpb25zSGVhZGVyTm9kZS5q YXZhCTIyIERlYyAyMDAzIDE5OjMxOjA3IC0wMDAwCioqKioqKioqKioqKioq KiBwdWJsaWMgY2xhc3MgRnVuY3Rpb25zSGVhZGVyTm9kZSBleHRlbmRzCioq KiAxNTEsMTYwICoqKioKICAJLyoqCiAgCSAqIFJldHVybnMgdGhlIHBvcHVw LW1lbnUgZm9yIHRoaXMgbm9kZQogIAkgKgogIAkgKiBAcmV0dXJuIHRoZSBw b3B1cCBtZW51IGZvciB0aGlzIG5vZGUKICAJICovCiAgCQohIAlwdWJsaWMg SlBvcHVwTWVudSBnZXROb2RlTWVudSgpIHsKICAJCUpQb3B1cE1lbnUgbWVu dSA9IG5ldyBKUG9wdXBNZW51KCk7CiAgCiAgCQltZW51LmFkZChuZXcgSk1l bnVJdGVtKEFkbWluUmVzb3VyY2VzLmdldFN0cmluZyhBZG1pblJlc291cmNl cy5NRU5VX0NSRUFURV9GVU5DVElPTikpKTsKLS0tIDE1MSwxNjEgLS0tLQog IAkvKioKICAJICogUmV0dXJucyB0aGUgcG9wdXAtbWVudSBmb3IgdGhpcyBu b2RlCiAgCSAqCisgCSAqIEBwYXJhbSBjbGllbnQgQ2xpZW50IHRvIHRoZSBi YWNrZW5kCiAgCSAqIEByZXR1cm4gdGhlIHBvcHVwIG1lbnUgZm9yIHRoaXMg bm9kZQogIAkgKi8KICAJCiEgCXB1YmxpYyBKUG9wdXBNZW51IGdldE5vZGVN ZW51KEFkbWluQmFja2VuZENsaWVudCBjbGllbnQpIHsKICAJCUpQb3B1cE1l bnUgbWVudSA9IG5ldyBKUG9wdXBNZW51KCk7CiAgCiAgCQltZW51LmFkZChu ZXcgSk1lbnVJdGVtKEFkbWluUmVzb3VyY2VzLmdldFN0cmluZyhBZG1pblJl c291cmNlcy5NRU5VX0NSRUFURV9GVU5DVElPTikpKTsKSW5kZXg6IHNyYy9j b20vcmVkaGF0L3JoZGIvYWRtaW4vdHJlZS9Hcm91cE5vZGUuamF2YQo9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3JoZGIvc3JjL3Jo ZGIvZ3VpdG9vbHMvcmhkYi1hZG1pbi9zcmMvY29tL3JlZGhhdC9yaGRiL2Fk bWluL3RyZWUvR3JvdXBOb2RlLmphdmEsdgpyZXRyaWV2aW5nIHJldmlzaW9u IDEuMS4xLjEKZGlmZiAtYyAtcCAtcjEuMS4xLjEgR3JvdXBOb2RlLmphdmEK KioqIHNyYy9jb20vcmVkaGF0L3JoZGIvYWRtaW4vdHJlZS9Hcm91cE5vZGUu amF2YQkyMSBOb3YgMjAwMyAxODozMDoyOCAtMDAwMAkxLjEuMS4xCi0tLSBz cmMvY29tL3JlZGhhdC9yaGRiL2FkbWluL3RyZWUvR3JvdXBOb2RlLmphdmEJ MjIgRGVjIDIwMDMgMTk6MzE6MDcgLTAwMDAKKioqKioqKioqKioqKioqIHB1 YmxpYyBjbGFzcyBHcm91cE5vZGUgZXh0ZW5kcyBBZG1pbkdlbmUKKioqIDkz LDExMSAqKioqCiAgCQkJbXBkLnNob3coKTsKICAJCX0gZWxzZSBpZiAoc2Vs ZWN0ZWRNZW51Q2FwdGlvbiA9PSBBZG1pblJlc291cmNlcy5nZXRTdHJpbmco QWRtaW5SZXNvdXJjZXMuUkVGUkVTSF9USElTX0xFVkVMKSkgewogIAkJCXJl ZnJlc2hTZWxmKGNsaWVudCk7CiAgCQl9CiAgCX0KICAKICAJLyoqCiAgCSAq IFJldHVybnMgdGhlIHBvcHVwLW1lbnUgZm9yIHRoaXMgbm9kZQogIAkgKgog IAkgKiBAcmV0dXJuIHRoZSBwb3B1cCBtZW51IGZvciB0aGlzIG5vZGUKICAJ ICovCiAgCQohIAlwdWJsaWMgSlBvcHVwTWVudSBnZXROb2RlTWVudSgpIHsK ICAJCUpQb3B1cE1lbnUgbWVudSA9IG5ldyBKUG9wdXBNZW51KCk7CiAgCiAg CQltZW51LmFkZChuZXcgSk1lbnVJdGVtKEFkbWluUmVzb3VyY2VzLmdldFN0 cmluZyhBZG1pblJlc291cmNlcy5NRU5VX0RST1BfR1JPVVApKSk7CiAgCQlt ZW51LmFkZChuZXcgSk1lbnVJdGVtKEFkbWluUmVzb3VyY2VzLmdldFN0cmlu ZyhBZG1pblJlc291cmNlcy5NRU5VX0FMVEVSX0dST1VQKSkpOwogIAkJbWVu dS5hZGQobmV3IEpNZW51SXRlbShBZG1pblJlc291cmNlcy5nZXRTdHJpbmco QWRtaW5SZXNvdXJjZXMuTUVOVV9NQU5BR0VfUFJJVklMRUdFUykpKTsKICAK LS0tIDkzLDEzNSAtLS0tCiAgCQkJbXBkLnNob3coKTsKICAJCX0gZWxzZSBp ZiAoc2VsZWN0ZWRNZW51Q2FwdGlvbiA9PSBBZG1pblJlc291cmNlcy5nZXRT dHJpbmcoQWRtaW5SZXNvdXJjZXMuUkVGUkVTSF9USElTX0xFVkVMKSkgewog IAkJCXJlZnJlc2hTZWxmKGNsaWVudCk7CisgCQl9IGVsc2UgaWYgKHNlbGVj dGVkTWVudUNhcHRpb24gPT0gQWRtaW5SZXNvdXJjZXMuZ2V0U3RyaW5nKEFk bWluUmVzb3VyY2VzLk1FTlVfUkVOQU1FX0dST1VQKSkgeworIAkJCVJlbmFt ZURpYWxvZyByZCA9IG5ldyBSZW5hbWVEaWFsb2coZG9ja1dpbmRvdywgdGhp cywgY2xpZW50LCB0aGlzLmdldE5vZGVUeXBlKCkpOworIAkJCXJkLnNob3co KTsKICAJCX0KICAJfQogIAogIAkvKioKICAJICogUmV0dXJucyB0aGUgcG9w dXAtbWVudSBmb3IgdGhpcyBub2RlCiAgCSAqCisgCSAqIEBwYXJhbSBjbGll bnQgQ2xpZW50IHRvIHRoZSBiYWNrZW5kCiAgCSAqIEByZXR1cm4gdGhlIHBv cHVwIG1lbnUgZm9yIHRoaXMgbm9kZQogIAkgKi8KICAJCiEgCXB1YmxpYyBK UG9wdXBNZW51IGdldE5vZGVNZW51KEFkbWluQmFja2VuZENsaWVudCBjbGll bnQpIHsKICAJCUpQb3B1cE1lbnUgbWVudSA9IG5ldyBKUG9wdXBNZW51KCk7 CiAgCisgCQkvLyBNZW51IGl0ZW1zIHRoYXQgdmFyeSBhY2NvcmRpbmcgdG8g YmFja2VuZAorIAkJCisgCQlKTWVudUl0ZW0gam1pUmVuYW1lID0gbmV3IEpN ZW51SXRlbSgpOworIAkJam1pUmVuYW1lLnNldFRleHQoQWRtaW5SZXNvdXJj ZXMuZ2V0U3RyaW5nKEFkbWluUmVzb3VyY2VzLk1FTlVfUkVOQU1FX0dST1VQ KSk7CisgCQlqbWlSZW5hbWUuc2V0RW5hYmxlZChmYWxzZSk7CisgCQkKKyAJ CXRyeSB7CisgCQkJCisgCQkJLy8gRm9yIGEgY29uc2lzdGVudCBsb29rLCBp ZiBpdGVtIGlzIG5vdCBhdmFpbGFibGUgb24gdGhpcyB2ZXJzaW9uLCAKKyAJ CQkvLyB3ZSB3aWxsIGRpc2FibGUgaXQsIGJ1dCBzdGlsbCBzaG93IGl0Cisg CisgCQkJaWYgKGNsaWVudC5nZXRCYWNrZW5kVmVyc2lvbih0aGlzLmdldFBh cmVudENsdXN0ZXJOYW1lKCkpID4gNy4zKSB7CisgCQkJCSBqbWlSZW5hbWUu c2V0RW5hYmxlZCh0cnVlKTsKKyAJCQl9CisgCisgCQl9IGNhdGNoIChFeGNl cHRpb24gZSkgeworIAkJCS8vIE5vdGhpbmcuLiBlbGVtZW50IHdpbGwgcmVt YWluIGRpc2FibGVkCisgCQl9CisgCQkKICAJCW1lbnUuYWRkKG5ldyBKTWVu dUl0ZW0oQWRtaW5SZXNvdXJjZXMuZ2V0U3RyaW5nKEFkbWluUmVzb3VyY2Vz Lk1FTlVfRFJPUF9HUk9VUCkpKTsKKyAJCW1lbnUuYWRkKGptaVJlbmFtZSk7 CiAgCQltZW51LmFkZChuZXcgSk1lbnVJdGVtKEFkbWluUmVzb3VyY2VzLmdl dFN0cmluZyhBZG1pblJlc291cmNlcy5NRU5VX0FMVEVSX0dST1VQKSkpOwog IAkJbWVudS5hZGQobmV3IEpNZW51SXRlbShBZG1pblJlc291cmNlcy5nZXRT dHJpbmcoQWRtaW5SZXNvdXJjZXMuTUVOVV9NQU5BR0VfUFJJVklMRUdFUykp KTsKICAKSW5kZXg6IHNyYy9jb20vcmVkaGF0L3JoZGIvYWRtaW4vdHJlZS9H cm91cHNIZWFkZXJOb2RlLmphdmEKPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpS Q1MgZmlsZTogL2N2cy9yaGRiL3NyYy9yaGRiL2d1aXRvb2xzL3JoZGItYWRt aW4vc3JjL2NvbS9yZWRoYXQvcmhkYi9hZG1pbi90cmVlL0dyb3Vwc0hlYWRl ck5vZGUuamF2YSx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xLjEuMQpkaWZm IC1jIC1wIC1yMS4xLjEuMSBHcm91cHNIZWFkZXJOb2RlLmphdmEKKioqIHNy Yy9jb20vcmVkaGF0L3JoZGIvYWRtaW4vdHJlZS9Hcm91cHNIZWFkZXJOb2Rl LmphdmEJMjEgTm92IDIwMDMgMTg6MzA6MjggLTAwMDAJMS4xLjEuMQotLS0g c3JjL2NvbS9yZWRoYXQvcmhkYi9hZG1pbi90cmVlL0dyb3Vwc0hlYWRlck5v ZGUuamF2YQkyMiBEZWMgMjAwMyAxOTozMTowNyAtMDAwMAoqKioqKioqKioq KioqKiogcHVibGljIGNsYXNzIEdyb3Vwc0hlYWRlck5vZGUgZXh0ZW5kcyBB ZAoqKiogMTc0LDE4MyAqKioqCiAgCS8qKgogIAkgKiBSZXR1cm5zIHRoZSBw b3B1cC1tZW51IGZvciB0aGlzIG5vZGUKICAJICoKICAJICogQHJldHVybiB0 aGUgcG9wdXAgbWVudSBmb3IgdGhpcyBub2RlCiAgCSAqLwogIAkKISAJcHVi bGljIEpQb3B1cE1lbnUgZ2V0Tm9kZU1lbnUoKSB7CiAgCQlKUG9wdXBNZW51 IG1lbnUgPSBuZXcgSlBvcHVwTWVudSgpOwogIAogIAkJbWVudS5hZGQobmV3 IEpNZW51SXRlbShBZG1pblJlc291cmNlcy5nZXRTdHJpbmcoQWRtaW5SZXNv dXJjZXMuTUVOVV9DUkVBVEVfR1JPVVApKSk7Ci0tLSAxNzQsMTg0IC0tLS0K ICAJLyoqCiAgCSAqIFJldHVybnMgdGhlIHBvcHVwLW1lbnUgZm9yIHRoaXMg bm9kZQogIAkgKgorIAkgKiBAcGFyYW0gY2xpZW50IENsaWVudCB0byB0aGUg YmFja2VuZAogIAkgKiBAcmV0dXJuIHRoZSBwb3B1cCBtZW51IGZvciB0aGlz IG5vZGUKICAJICovCiAgCQohIAlwdWJsaWMgSlBvcHVwTWVudSBnZXROb2Rl TWVudShBZG1pbkJhY2tlbmRDbGllbnQgY2xpZW50KSB7CiAgCQlKUG9wdXBN ZW51IG1lbnUgPSBuZXcgSlBvcHVwTWVudSgpOwogIAogIAkJbWVudS5hZGQo bmV3IEpNZW51SXRlbShBZG1pblJlc291cmNlcy5nZXRTdHJpbmcoQWRtaW5S ZXNvdXJjZXMuTUVOVV9DUkVBVEVfR1JPVVApKSk7CkluZGV4OiBzcmMvY29t L3JlZGhhdC9yaGRiL2FkbWluL3RyZWUvSW5kZXhOb2RlLmphdmEKPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yaGRiL3NyYy9yaGRi L2d1aXRvb2xzL3JoZGItYWRtaW4vc3JjL2NvbS9yZWRoYXQvcmhkYi9hZG1p bi90cmVlL0luZGV4Tm9kZS5qYXZhLHYKcmV0cmlldmluZyByZXZpc2lvbiAx LjEuMS4xCmRpZmYgLWMgLXAgLXIxLjEuMS4xIEluZGV4Tm9kZS5qYXZhCioq KiBzcmMvY29tL3JlZGhhdC9yaGRiL2FkbWluL3RyZWUvSW5kZXhOb2RlLmph dmEJMjEgTm92IDIwMDMgMTg6MzA6MjggLTAwMDAJMS4xLjEuMQotLS0gc3Jj L2NvbS9yZWRoYXQvcmhkYi9hZG1pbi90cmVlL0luZGV4Tm9kZS5qYXZhCTIy IERlYyAyMDAzIDE5OjMxOjA4IC0wMDAwCioqKioqKioqKioqKioqKiBwdWJs aWMgY2xhc3MgSW5kZXhOb2RlIGV4dGVuZHMgQWRtaW5HZW5lCioqKiAxMzIs MTQxICoqKioKICAJLyoqCiAgCSAqIFJldHVybnMgdGhlIHBvcHVwLW1lbnUg Zm9yIHRoaXMgbm9kZQogIAkgKgogIAkgKiBAcmV0dXJuIHRoZSBwb3B1cCBt ZW51IGZvciB0aGlzIG5vZGUKICAJICovCiAgCQohIAlwdWJsaWMgSlBvcHVw TWVudSBnZXROb2RlTWVudSgpIHsKICAJCUpQb3B1cE1lbnUgbWVudSA9IG5l dyBKUG9wdXBNZW51KCk7CiAgCiAgCQltZW51LmFkZChuZXcgSk1lbnVJdGVt KEFkbWluUmVzb3VyY2VzLmdldFN0cmluZyhBZG1pblJlc291cmNlcy5NRU5V X0RST1BfUkVTVFJJQ1QpKSk7Ci0tLSAxMzIsMTQyIC0tLS0KICAJLyoqCiAg CSAqIFJldHVybnMgdGhlIHBvcHVwLW1lbnUgZm9yIHRoaXMgbm9kZQogIAkg KgorIAkgKiBAcGFyYW0gY2xpZW50IENsaWVudCB0byB0aGUgYmFja2VuZAog IAkgKiBAcmV0dXJuIHRoZSBwb3B1cCBtZW51IGZvciB0aGlzIG5vZGUKICAJ ICovCiAgCQohIAlwdWJsaWMgSlBvcHVwTWVudSBnZXROb2RlTWVudShBZG1p bkJhY2tlbmRDbGllbnQgY2xpZW50KSB7CiAgCQlKUG9wdXBNZW51IG1lbnUg PSBuZXcgSlBvcHVwTWVudSgpOwogIAogIAkJbWVudS5hZGQobmV3IEpNZW51 SXRlbShBZG1pblJlc291cmNlcy5nZXRTdHJpbmcoQWRtaW5SZXNvdXJjZXMu TUVOVV9EUk9QX1JFU1RSSUNUKSkpOwpJbmRleDogc3JjL2NvbS9yZWRoYXQv cmhkYi9hZG1pbi90cmVlL0luZGV4ZXNIZWFkZXJOb2RlLmphdmEKPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yaGRiL3NyYy9yaGRi L2d1aXRvb2xzL3JoZGItYWRtaW4vc3JjL2NvbS9yZWRoYXQvcmhkYi9hZG1p bi90cmVlL0luZGV4ZXNIZWFkZXJOb2RlLmphdmEsdgpyZXRyaWV2aW5nIHJl dmlzaW9uIDEuMS4xLjEKZGlmZiAtYyAtcCAtcjEuMS4xLjEgSW5kZXhlc0hl YWRlck5vZGUuamF2YQoqKiogc3JjL2NvbS9yZWRoYXQvcmhkYi9hZG1pbi90 cmVlL0luZGV4ZXNIZWFkZXJOb2RlLmphdmEJMjEgTm92IDIwMDMgMTg6MzA6 MjggLTAwMDAJMS4xLjEuMQotLS0gc3JjL2NvbS9yZWRoYXQvcmhkYi9hZG1p bi90cmVlL0luZGV4ZXNIZWFkZXJOb2RlLmphdmEJMjIgRGVjIDIwMDMgMTk6 MzE6MDggLTAwMDAKKioqKioqKioqKioqKioqIHB1YmxpYyBjbGFzcyBJbmRl eGVzSGVhZGVyTm9kZSBleHRlbmRzIEEKKioqIDE1OCwxNjcgKioqKgogIAkv KioKICAJICogUmV0dXJucyB0aGUgcG9wdXAtbWVudSBmb3IgdGhpcyBub2Rl CiAgCSAqCiAgCSAqIEByZXR1cm4gdGhlIHBvcHVwIG1lbnUgZm9yIHRoaXMg bm9kZQogIAkgKi8KICAJCiEgCXB1YmxpYyBKUG9wdXBNZW51IGdldE5vZGVN ZW51KCkgewogIAkJSlBvcHVwTWVudSBtZW51ID0gbmV3IEpQb3B1cE1lbnUo KTsKICAKICAJCW1lbnUuYWRkKEFkbWluUmVzb3VyY2VzLmdldFN0cmluZyhB ZG1pblJlc291cmNlcy5NRU5VX0NSRUFURV9JTkRFWCkpOwotLS0gMTU4LDE2 OCAtLS0tCiAgCS8qKgogIAkgKiBSZXR1cm5zIHRoZSBwb3B1cC1tZW51IGZv ciB0aGlzIG5vZGUKICAJICoKKyAJICogQHBhcmFtIGNsaWVudCBDbGllbnQg dG8gdGhlIGJhY2tlbmQKICAJICogQHJldHVybiB0aGUgcG9wdXAgbWVudSBm b3IgdGhpcyBub2RlCiAgCSAqLwogIAkKISAJcHVibGljIEpQb3B1cE1lbnUg Z2V0Tm9kZU1lbnUoQWRtaW5CYWNrZW5kQ2xpZW50IGNsaWVudCkgewogIAkJ SlBvcHVwTWVudSBtZW51ID0gbmV3IEpQb3B1cE1lbnUoKTsKICAKICAJCW1l bnUuYWRkKEFkbWluUmVzb3VyY2VzLmdldFN0cmluZyhBZG1pblJlc291cmNl cy5NRU5VX0NSRUFURV9JTkRFWCkpOwpJbmRleDogc3JjL2NvbS9yZWRoYXQv cmhkYi9hZG1pbi90cmVlL0xhbmd1YWdlTm9kZS5qYXZhCj09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcmhkYi9zcmMvcmhkYi9ndWl0 b29scy9yaGRiLWFkbWluL3NyYy9jb20vcmVkaGF0L3JoZGIvYWRtaW4vdHJl ZS9MYW5ndWFnZU5vZGUuamF2YSx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4x LjEuMQpkaWZmIC1jIC1wIC1yMS4xLjEuMSBMYW5ndWFnZU5vZGUuamF2YQoq Kiogc3JjL2NvbS9yZWRoYXQvcmhkYi9hZG1pbi90cmVlL0xhbmd1YWdlTm9k ZS5qYXZhCTIxIE5vdiAyMDAzIDE4OjMwOjI4IC0wMDAwCTEuMS4xLjEKLS0t IHNyYy9jb20vcmVkaGF0L3JoZGIvYWRtaW4vdHJlZS9MYW5ndWFnZU5vZGUu amF2YQkyMiBEZWMgMjAwMyAxOTozMTowOCAtMDAwMAoqKioqKioqKioqKioq KiogcHVibGljIGNsYXNzIExhbmd1YWdlTm9kZSBleHRlbmRzIEFkbWluRwoq KiogMTQ2LDE1NSAqKioqCiAgCS8qKgogIAkgKiBSZXR1cm5zIHRoZSBwb3B1 cC1tZW51IGZvciB0aGlzIG5vZGUKICAJICoKICAJICogQHJldHVybiB0aGUg cG9wdXAgbWVudSBmb3IgdGhpcyBub2RlCiAgCSAqLwogIAkKISAJcHVibGlj IEpQb3B1cE1lbnUgZ2V0Tm9kZU1lbnUoKSB7CiAgCQlKUG9wdXBNZW51IG1l bnUgPSBuZXcgSlBvcHVwTWVudSgpOwogIAogIAkJbWVudS5hZGQobmV3IEpN ZW51SXRlbShBZG1pblJlc291cmNlcy5nZXRTdHJpbmcoQWRtaW5SZXNvdXJj ZXMuTUVOVV9EUk9QX1JFU1RSSUNUKSkpOwotLS0gMTQ2LDE1NiAtLS0tCiAg CS8qKgogIAkgKiBSZXR1cm5zIHRoZSBwb3B1cC1tZW51IGZvciB0aGlzIG5v ZGUKICAJICoKKyAJICogQHBhcmFtIGNsaWVudCBDbGllbnQgdG8gdGhlIGJh Y2tlbmQKICAJICogQHJldHVybiB0aGUgcG9wdXAgbWVudSBmb3IgdGhpcyBu b2RlCiAgCSAqLwogIAkKISAJcHVibGljIEpQb3B1cE1lbnUgZ2V0Tm9kZU1l bnUoQWRtaW5CYWNrZW5kQ2xpZW50IGNsaWVudCkgewogIAkJSlBvcHVwTWVu dSBtZW51ID0gbmV3IEpQb3B1cE1lbnUoKTsKICAKICAJCW1lbnUuYWRkKG5l dyBKTWVudUl0ZW0oQWRtaW5SZXNvdXJjZXMuZ2V0U3RyaW5nKEFkbWluUmVz b3VyY2VzLk1FTlVfRFJPUF9SRVNUUklDVCkpKTsKSW5kZXg6IHNyYy9jb20v cmVkaGF0L3JoZGIvYWRtaW4vdHJlZS9MYW5ndWFnZXNIZWFkZXJOb2RlLmph dmEKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yaGRi L3NyYy9yaGRiL2d1aXRvb2xzL3JoZGItYWRtaW4vc3JjL2NvbS9yZWRoYXQv cmhkYi9hZG1pbi90cmVlL0xhbmd1YWdlc0hlYWRlck5vZGUuamF2YSx2CnJl dHJpZXZpbmcgcmV2aXNpb24gMS4xLjEuMQpkaWZmIC1jIC1wIC1yMS4xLjEu MSBMYW5ndWFnZXNIZWFkZXJOb2RlLmphdmEKKioqIHNyYy9jb20vcmVkaGF0 L3JoZGIvYWRtaW4vdHJlZS9MYW5ndWFnZXNIZWFkZXJOb2RlLmphdmEJMjEg Tm92IDIwMDMgMTg6MzA6MjggLTAwMDAJMS4xLjEuMQotLS0gc3JjL2NvbS9y ZWRoYXQvcmhkYi9hZG1pbi90cmVlL0xhbmd1YWdlc0hlYWRlck5vZGUuamF2 YQkyMiBEZWMgMjAwMyAxOTozMTowOCAtMDAwMAoqKioqKioqKioqKioqKiog cHVibGljIGNsYXNzIExhbmd1YWdlc0hlYWRlck5vZGUgZXh0ZW5kcwoqKiog MTE3LDEyNiAqKioqCiAgCS8qKgogIAkgKiBSZXR1cm5zIHRoZSBwb3B1cC1t ZW51IGZvciB0aGlzIG5vZGUKICAJICoKICAJICogQHJldHVybiB0aGUgcG9w dXAgbWVudSBmb3IgdGhpcyBub2RlCiAgCSAqLwogIAkKISAJcHVibGljIEpQ b3B1cE1lbnUgZ2V0Tm9kZU1lbnUoKSB7CiAgCQlKUG9wdXBNZW51IG1lbnUg PSBuZXcgSlBvcHVwTWVudSgpOwogIAogIAkJbWVudS5hZGQobmV3IEpNZW51 SXRlbShBZG1pblJlc291cmNlcy5nZXRTdHJpbmcoQWRtaW5SZXNvdXJjZXMu TUVOVV9DUkVBVEVfTEFOR1VBR0UpKSk7Ci0tLSAxMTcsMTI3IC0tLS0KICAJ LyoqCiAgCSAqIFJldHVybnMgdGhlIHBvcHVwLW1lbnUgZm9yIHRoaXMgbm9k ZQogIAkgKgorIAkgKiBAcGFyYW0gY2xpZW50IENsaWVudCB0byB0aGUgYmFj a2VuZAogIAkgKiBAcmV0dXJuIHRoZSBwb3B1cCBtZW51IGZvciB0aGlzIG5v ZGUKICAJICovCiAgCQohIAlwdWJsaWMgSlBvcHVwTWVudSBnZXROb2RlTWVu dShBZG1pbkJhY2tlbmRDbGllbnQgY2xpZW50KSB7CiAgCQlKUG9wdXBNZW51 IG1lbnUgPSBuZXcgSlBvcHVwTWVudSgpOwogIAogIAkJbWVudS5hZGQobmV3 IEpNZW51SXRlbShBZG1pblJlc291cmNlcy5nZXRTdHJpbmcoQWRtaW5SZXNv dXJjZXMuTUVOVV9DUkVBVEVfTEFOR1VBR0UpKSk7CkluZGV4OiBzcmMvY29t L3JlZGhhdC9yaGRiL2FkbWluL3RyZWUvT3BlcmF0b3JDbGFzc05vZGUuamF2 YQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3JoZGIv c3JjL3JoZGIvZ3VpdG9vbHMvcmhkYi1hZG1pbi9zcmMvY29tL3JlZGhhdC9y aGRiL2FkbWluL3RyZWUvT3BlcmF0b3JDbGFzc05vZGUuamF2YSx2CnJldHJp ZXZpbmcgcmV2aXNpb24gMS4xLjEuMQpkaWZmIC1jIC1wIC1yMS4xLjEuMSBP cGVyYXRvckNsYXNzTm9kZS5qYXZhCioqKiBzcmMvY29tL3JlZGhhdC9yaGRi L2FkbWluL3RyZWUvT3BlcmF0b3JDbGFzc05vZGUuamF2YQkyMSBOb3YgMjAw MyAxODozMDoyOCAtMDAwMAkxLjEuMS4xCi0tLSBzcmMvY29tL3JlZGhhdC9y aGRiL2FkbWluL3RyZWUvT3BlcmF0b3JDbGFzc05vZGUuamF2YQkyMiBEZWMg MjAwMyAxOTozMTowOCAtMDAwMAoqKioqKioqKioqKioqKiogcHVibGljIGNs YXNzIE9wZXJhdG9yQ2xhc3NOb2RlIGV4dGVuZHMgQQoqKiogMTA5LDExNSAq KioqCiAgCSAqLwogIAogIAlwdWJsaWMgdm9pZCBkb01lbnVBY3Rpb24oU3Ry aW5nIHNlbGVjdGVkTWVudUNhcHRpb24sIEFkbWluQmFja2VuZENsaWVudCBj bGllbnQsIEpGcmFtZSBkb2NrV2luZG93KSB0aHJvd3MgT2JqZWN0RHJvcEV4 Y2VwdGlvbiwgVHJlZU5vZGVQb3B1bGF0aW9uRXhjZXB0aW9uLCBEaWFsb2dS YWlzZUV4Y2VwdGlvbiB7CiEgCQlpZiAoc2VsZWN0ZWRNZW51Q2FwdGlvbiA9 PSBBZG1pblJlc291cmNlcy5nZXRTdHJpbmcoQWRtaW5SZXNvdXJjZXMuTUVO VV9EUk9QX1JFU1RSSUNUKSkgewogIAkJCWlmIChnZXREcm9wUmVzcG9uc2Uo ZG9ja1dpbmRvdywgRFJPUF9UWVBFX1JFU1RSSUNUKSkgewogIAkJCQlPcGVy YXRvckNsYXNzVXBkYXRlLmRyb3BPcGVyYXRvckNsYXNzKGNsaWVudCwgdGhp cywgT2JqZWN0VXBkYXRlLkRST1BfVFlQRV9SRVNUUklDVCk7CiAgCQkJCXJl ZnJlc2hQYXJlbnQoY2xpZW50KTsKLS0tIDEwOSwxMTggLS0tLQogIAkgKi8K ICAKICAJcHVibGljIHZvaWQgZG9NZW51QWN0aW9uKFN0cmluZyBzZWxlY3Rl ZE1lbnVDYXB0aW9uLCBBZG1pbkJhY2tlbmRDbGllbnQgY2xpZW50LCBKRnJh bWUgZG9ja1dpbmRvdykgdGhyb3dzIE9iamVjdERyb3BFeGNlcHRpb24sIFRy ZWVOb2RlUG9wdWxhdGlvbkV4Y2VwdGlvbiwgRGlhbG9nUmFpc2VFeGNlcHRp b24gewohIAkJaWYgKHNlbGVjdGVkTWVudUNhcHRpb24gPT0gQWRtaW5SZXNv dXJjZXMuZ2V0U3RyaW5nKEFkbWluUmVzb3VyY2VzLk1FTlVfUkVOQU1FX09Q X0NMQVNTKSkgewohIAkJCVJlbmFtZURpYWxvZyByZCA9IG5ldyBSZW5hbWVE aWFsb2coZG9ja1dpbmRvdywgdGhpcywgY2xpZW50LCB0aGlzLmdldE5vZGVU eXBlKCkpOwohIAkJCXJkLnNob3coKTsKISAJCX0gZWxzZSBpZiAoc2VsZWN0 ZWRNZW51Q2FwdGlvbiA9PSBBZG1pblJlc291cmNlcy5nZXRTdHJpbmcoQWRt aW5SZXNvdXJjZXMuTUVOVV9EUk9QX1JFU1RSSUNUKSkgewogIAkJCWlmIChn ZXREcm9wUmVzcG9uc2UoZG9ja1dpbmRvdywgRFJPUF9UWVBFX1JFU1RSSUNU KSkgewogIAkJCQlPcGVyYXRvckNsYXNzVXBkYXRlLmRyb3BPcGVyYXRvckNs YXNzKGNsaWVudCwgdGhpcywgT2JqZWN0VXBkYXRlLkRST1BfVFlQRV9SRVNU UklDVCk7CiAgCQkJCXJlZnJlc2hQYXJlbnQoY2xpZW50KTsKKioqKioqKioq KioqKioqIHB1YmxpYyBjbGFzcyBPcGVyYXRvckNsYXNzTm9kZSBleHRlbmRz IEEKKioqIDEyNSwxMzggKioqKgogIAkvKioKICAJICogUmV0dXJucyB0aGUg cG9wdXAtbWVudSBmb3IgdGhpcyBub2RlCiAgCSAqCiAgCSAqIEByZXR1cm4g dGhlIHBvcHVwIG1lbnUgZm9yIHRoaXMgbm9kZQogIAkgKi8KICAJCiEgCXB1 YmxpYyBKUG9wdXBNZW51IGdldE5vZGVNZW51KCkgewogIAkJSlBvcHVwTWVu dSBtZW51ID0gbmV3IEpQb3B1cE1lbnUoKTsKICAKICAJCW1lbnUuYWRkKG5l dyBKTWVudUl0ZW0oQWRtaW5SZXNvdXJjZXMuZ2V0U3RyaW5nKEFkbWluUmVz b3VyY2VzLk1FTlVfRFJPUF9SRVNUUklDVCkpKTsKICAJCW1lbnUuYWRkKG5l dyBKTWVudUl0ZW0oQWRtaW5SZXNvdXJjZXMuZ2V0U3RyaW5nKEFkbWluUmVz b3VyY2VzLk1FTlVfRFJPUF9DQVNDQURFKSkpOwogIAogIAkJcmV0dXJuIG1l bnU7CiAgCX0KLS0tIDEyOCwxNjIgLS0tLQogIAkvKioKICAJICogUmV0dXJu cyB0aGUgcG9wdXAtbWVudSBmb3IgdGhpcyBub2RlCiAgCSAqCisgCSAqIEBw YXJhbSBjbGllbnQgQ2xpZW50IHRvIHRoZSBiYWNrZW5kCiAgCSAqIEByZXR1 cm4gdGhlIHBvcHVwIG1lbnUgZm9yIHRoaXMgbm9kZQogIAkgKi8KICAJCiEg CXB1YmxpYyBKUG9wdXBNZW51IGdldE5vZGVNZW51KEFkbWluQmFja2VuZENs aWVudCBjbGllbnQpIHsKICAJCUpQb3B1cE1lbnUgbWVudSA9IG5ldyBKUG9w dXBNZW51KCk7CiAgCisgCQkvLyBNZW51IGl0ZW1zIHRoYXQgdmFyeSBhY2Nv cmRpbmcgdG8gYmFja2VuZAorIAkJCisgCQlKTWVudUl0ZW0gam1pUmVuYW1l ID0gbmV3IEpNZW51SXRlbSgpOworIAkJam1pUmVuYW1lLnNldFRleHQoQWRt aW5SZXNvdXJjZXMuZ2V0U3RyaW5nKEFkbWluUmVzb3VyY2VzLk1FTlVfUkVO QU1FX09QX0NMQVNTKSk7CisgCQlqbWlSZW5hbWUuc2V0RW5hYmxlZChmYWxz ZSk7CisgCQkKKyAJCXRyeSB7CisgCQkJCisgCQkJLy8gRm9yIGEgY29uc2lz dGVudCBsb29rLCBpZiBpdGVtIGlzIG5vdCBhdmFpbGFibGUgb24gdGhpcyB2 ZXJzaW9uLCAKKyAJCQkvLyB3ZSB3aWxsIGRpc2FibGUgaXQsIGJ1dCBzdGls bCBzaG93IGl0CisgCisgCQkJaWYgKGNsaWVudC5nZXRCYWNrZW5kVmVyc2lv bih0aGlzLmdldFBhcmVudENsdXN0ZXJOYW1lKCkpID4gNy4zKSB7CisgCQkJ CSBqbWlSZW5hbWUuc2V0RW5hYmxlZCh0cnVlKTsKKyAJCQl9CisgCisgCQl9 IGNhdGNoIChFeGNlcHRpb24gZSkgeworIAkJCS8vIE5vdGhpbmcuLiBlbGVt ZW50IHdpbGwgcmVtYWluIGRpc2FibGVkCisgCQl9CisgIAogIAkJbWVudS5h ZGQobmV3IEpNZW51SXRlbShBZG1pblJlc291cmNlcy5nZXRTdHJpbmcoQWRt aW5SZXNvdXJjZXMuTUVOVV9EUk9QX1JFU1RSSUNUKSkpOwogIAkJbWVudS5h ZGQobmV3IEpNZW51SXRlbShBZG1pblJlc291cmNlcy5nZXRTdHJpbmcoQWRt aW5SZXNvdXJjZXMuTUVOVV9EUk9QX0NBU0NBREUpKSk7CisgCQltZW51LmFk ZChqbWlSZW5hbWUpOwogIAogIAkJcmV0dXJuIG1lbnU7CiAgCX0KSW5kZXg6 IHNyYy9jb20vcmVkaGF0L3JoZGIvYWRtaW4vdHJlZS9PcGVyYXRvckNsYXNz ZXNIZWFkZXJOb2RlLmphdmEKPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1Mg ZmlsZTogL2N2cy9yaGRiL3NyYy9yaGRiL2d1aXRvb2xzL3JoZGItYWRtaW4v c3JjL2NvbS9yZWRoYXQvcmhkYi9hZG1pbi90cmVlL09wZXJhdG9yQ2xhc3Nl c0hlYWRlck5vZGUuamF2YSx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xLjEu MQpkaWZmIC1jIC1wIC1yMS4xLjEuMSBPcGVyYXRvckNsYXNzZXNIZWFkZXJO b2RlLmphdmEKKioqIHNyYy9jb20vcmVkaGF0L3JoZGIvYWRtaW4vdHJlZS9P cGVyYXRvckNsYXNzZXNIZWFkZXJOb2RlLmphdmEJMjEgTm92IDIwMDMgMTg6 MzA6MjggLTAwMDAJMS4xLjEuMQotLS0gc3JjL2NvbS9yZWRoYXQvcmhkYi9h ZG1pbi90cmVlL09wZXJhdG9yQ2xhc3Nlc0hlYWRlck5vZGUuamF2YQkyMiBE ZWMgMjAwMyAxOTozMTowOCAtMDAwMAoqKioqKioqKioqKioqKiogcHVibGlj IGNsYXNzIE9wZXJhdG9yQ2xhc3Nlc0hlYWRlck5vZGUgZQoqKiogMTAwLDEw OSAqKioqCiAgCS8qKgogIAkgKiBSZXR1cm5zIHRoZSBwb3B1cC1tZW51IGZv ciB0aGlzIG5vZGUKICAJICoKICAJICogQHJldHVybiB0aGUgcG9wdXAgbWVu dSBmb3IgdGhpcyBub2RlCiAgCSAqLwogIAkKISAJcHVibGljIEpQb3B1cE1l bnUgZ2V0Tm9kZU1lbnUoKSB7CiAgCQlKUG9wdXBNZW51IG1lbnUgPSBuZXcg SlBvcHVwTWVudSgpOwogIAogIAkJbWVudS5hZGQobmV3IEpNZW51SXRlbShB ZG1pblJlc291cmNlcy5nZXRTdHJpbmcoQWRtaW5SZXNvdXJjZXMuTUVOVV9D UkVBVEVfT1BFUkFUT1JfQ0xBU1MpKSk7Ci0tLSAxMDAsMTEwIC0tLS0KICAJ LyoqCiAgCSAqIFJldHVybnMgdGhlIHBvcHVwLW1lbnUgZm9yIHRoaXMgbm9k ZQogIAkgKgorIAkgKiBAcGFyYW0gY2xpZW50IENsaWVudCB0byB0aGUgYmFj a2VuZAogIAkgKiBAcmV0dXJuIHRoZSBwb3B1cCBtZW51IGZvciB0aGlzIG5v ZGUKICAJICovCiAgCQohIAlwdWJsaWMgSlBvcHVwTWVudSBnZXROb2RlTWVu dShBZG1pbkJhY2tlbmRDbGllbnQgY2xpZW50KSB7CiAgCQlKUG9wdXBNZW51 IG1lbnUgPSBuZXcgSlBvcHVwTWVudSgpOwogIAogIAkJbWVudS5hZGQobmV3 IEpNZW51SXRlbShBZG1pblJlc291cmNlcy5nZXRTdHJpbmcoQWRtaW5SZXNv dXJjZXMuTUVOVV9DUkVBVEVfT1BFUkFUT1JfQ0xBU1MpKSk7CkluZGV4OiBz cmMvY29tL3JlZGhhdC9yaGRiL2FkbWluL3RyZWUvT3BlcmF0b3JOb2RlLmph dmEKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yaGRi L3NyYy9yaGRiL2d1aXRvb2xzL3JoZGItYWRtaW4vc3JjL2NvbS9yZWRoYXQv cmhkYi9hZG1pbi90cmVlL09wZXJhdG9yTm9kZS5qYXZhLHYKcmV0cmlldmlu ZyByZXZpc2lvbiAxLjEuMS4xCmRpZmYgLWMgLXAgLXIxLjEuMS4xIE9wZXJh dG9yTm9kZS5qYXZhCioqKiBzcmMvY29tL3JlZGhhdC9yaGRiL2FkbWluL3Ry ZWUvT3BlcmF0b3JOb2RlLmphdmEJMjEgTm92IDIwMDMgMTg6MzA6MjggLTAw MDAJMS4xLjEuMQotLS0gc3JjL2NvbS9yZWRoYXQvcmhkYi9hZG1pbi90cmVl L09wZXJhdG9yTm9kZS5qYXZhCTIyIERlYyAyMDAzIDE5OjMxOjA4IC0wMDAw CioqKioqKioqKioqKioqKiBwdWJsaWMgY2xhc3MgT3BlcmF0b3JOb2RlIGV4 dGVuZHMgQWRtaW5HCioqKiAxNjYsMTc1ICoqKioKICAJLyoqCiAgCSAqIFJl dHVybnMgdGhlIHBvcHVwLW1lbnUgZm9yIHRoaXMgbm9kZQogIAkgKgogIAkg KiBAcmV0dXJuIHRoZSBwb3B1cCBtZW51IGZvciB0aGlzIG5vZGUKICAJICov CiAgCQohIAlwdWJsaWMgSlBvcHVwTWVudSBnZXROb2RlTWVudSgpIHsKICAK ICAJCUpQb3B1cE1lbnUgbWVudSA9IG5ldyBKUG9wdXBNZW51KCk7CiAgCi0t LSAxNjYsMTc2IC0tLS0KICAJLyoqCiAgCSAqIFJldHVybnMgdGhlIHBvcHVw LW1lbnUgZm9yIHRoaXMgbm9kZQogIAkgKgorIAkgKiBAcGFyYW0gY2xpZW50 IENsaWVudCB0byB0aGUgYmFja2VuZAogIAkgKiBAcmV0dXJuIHRoZSBwb3B1 cCBtZW51IGZvciB0aGlzIG5vZGUKICAJICovCiAgCQohIAlwdWJsaWMgSlBv cHVwTWVudSBnZXROb2RlTWVudShBZG1pbkJhY2tlbmRDbGllbnQgY2xpZW50 KSB7CiAgCiAgCQlKUG9wdXBNZW51IG1lbnUgPSBuZXcgSlBvcHVwTWVudSgp OwogIApJbmRleDogc3JjL2NvbS9yZWRoYXQvcmhkYi9hZG1pbi90cmVlL09w ZXJhdG9yc0hlYWRlck5vZGUuamF2YQo9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 ClJDUyBmaWxlOiAvY3ZzL3JoZGIvc3JjL3JoZGIvZ3VpdG9vbHMvcmhkYi1h ZG1pbi9zcmMvY29tL3JlZGhhdC9yaGRiL2FkbWluL3RyZWUvT3BlcmF0b3Jz SGVhZGVyTm9kZS5qYXZhLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjEuMS4x CmRpZmYgLWMgLXAgLXIxLjEuMS4xIE9wZXJhdG9yc0hlYWRlck5vZGUuamF2 YQoqKiogc3JjL2NvbS9yZWRoYXQvcmhkYi9hZG1pbi90cmVlL09wZXJhdG9y c0hlYWRlck5vZGUuamF2YQkyMSBOb3YgMjAwMyAxODozMDoyOCAtMDAwMAkx LjEuMS4xCi0tLSBzcmMvY29tL3JlZGhhdC9yaGRiL2FkbWluL3RyZWUvT3Bl cmF0b3JzSGVhZGVyTm9kZS5qYXZhCTIyIERlYyAyMDAzIDE5OjMxOjA4IC0w MDAwCioqKioqKioqKioqKioqKiBwdWJsaWMgY2xhc3MgT3BlcmF0b3JzSGVh ZGVyTm9kZSBleHRlbmRzCioqKiAxMDMsMTEyICoqKioKICAJLyoqCiAgCSAq IFJldHVybnMgdGhlIHBvcHVwLW1lbnUgZm9yIHRoaXMgbm9kZQogIAkgKgog IAkgKiBAcmV0dXJuIHRoZSBwb3B1cCBtZW51IGZvciB0aGlzIG5vZGUKICAJ ICovCiAgCQohIAlwdWJsaWMgSlBvcHVwTWVudSBnZXROb2RlTWVudSgpIHsK ICAJCQogIAkJSlBvcHVwTWVudSBtZW51ID0gbmV3IEpQb3B1cE1lbnUoKTsK ICAKLS0tIDEwMywxMTMgLS0tLQogIAkvKioKICAJICogUmV0dXJucyB0aGUg cG9wdXAtbWVudSBmb3IgdGhpcyBub2RlCiAgCSAqCisgCSAqIEBwYXJhbSBj bGllbnQgQ2xpZW50IHRvIHRoZSBiYWNrZW5kCiAgCSAqIEByZXR1cm4gdGhl IHBvcHVwIG1lbnUgZm9yIHRoaXMgbm9kZQogIAkgKi8KICAJCiEgCXB1Ymxp YyBKUG9wdXBNZW51IGdldE5vZGVNZW51KEFkbWluQmFja2VuZENsaWVudCBj bGllbnQpIHsKICAJCQogIAkJSlBvcHVwTWVudSBtZW51ID0gbmV3IEpQb3B1 cE1lbnUoKTsKICAKSW5kZXg6IHNyYy9jb20vcmVkaGF0L3JoZGIvYWRtaW4v dHJlZS9QS0NvbnN0cmFpbnROb2RlLmphdmEKPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQpSQ1MgZmlsZTogL2N2cy9yaGRiL3NyYy9yaGRiL2d1aXRvb2xzL3Jo ZGItYWRtaW4vc3JjL2NvbS9yZWRoYXQvcmhkYi9hZG1pbi90cmVlL1BLQ29u c3RyYWludE5vZGUuamF2YSx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xLjEu MQpkaWZmIC1jIC1wIC1yMS4xLjEuMSBQS0NvbnN0cmFpbnROb2RlLmphdmEK KioqIHNyYy9jb20vcmVkaGF0L3JoZGIvYWRtaW4vdHJlZS9QS0NvbnN0cmFp bnROb2RlLmphdmEJMjEgTm92IDIwMDMgMTg6MzA6MjggLTAwMDAJMS4xLjEu MQotLS0gc3JjL2NvbS9yZWRoYXQvcmhkYi9hZG1pbi90cmVlL1BLQ29uc3Ry YWludE5vZGUuamF2YQkyMiBEZWMgMjAwMyAxOTozMTowOCAtMDAwMAoqKioq KioqKioqKioqKiogcHVibGljIGNsYXNzIFBLQ29uc3RyYWludE5vZGUgZXh0 ZW5kcyBBZAoqKiogMTUwLDE1OSAqKioqCiAgCS8qKgogIAkgKiBSZXR1cm5z IHRoZSBwb3B1cC1tZW51IGZvciB0aGlzIG5vZGUKICAJICoKICAJICogQHJl dHVybiB0aGUgcG9wdXAgbWVudSBmb3IgdGhpcyBub2RlCiAgCSAqLwogIAkK ISAJcHVibGljIEpQb3B1cE1lbnUgZ2V0Tm9kZU1lbnUoKSB7CiAgCQlKUG9w dXBNZW51IG1lbnUgPSBuZXcgSlBvcHVwTWVudSgpOwogIAogIAkJbWVudS5h ZGQobmV3IEpNZW51SXRlbShBZG1pblJlc291cmNlcy5nZXRTdHJpbmcoQWRt aW5SZXNvdXJjZXMuTUVOVV9EUk9QX1JFU1RSSUNUKSkpOwotLS0gMTUwLDE2 MCAtLS0tCiAgCS8qKgogIAkgKiBSZXR1cm5zIHRoZSBwb3B1cC1tZW51IGZv ciB0aGlzIG5vZGUKICAJICoKKyAJICogQHBhcmFtIGNsaWVudCBDbGllbnQg dG8gdGhlIGJhY2tlbmQKICAJICogQHJldHVybiB0aGUgcG9wdXAgbWVudSBm b3IgdGhpcyBub2RlCiAgCSAqLwogIAkKISAJcHVibGljIEpQb3B1cE1lbnUg Z2V0Tm9kZU1lbnUoQWRtaW5CYWNrZW5kQ2xpZW50IGNsaWVudCkgewogIAkJ SlBvcHVwTWVudSBtZW51ID0gbmV3IEpQb3B1cE1lbnUoKTsKICAKICAJCW1l bnUuYWRkKG5ldyBKTWVudUl0ZW0oQWRtaW5SZXNvdXJjZXMuZ2V0U3RyaW5n KEFkbWluUmVzb3VyY2VzLk1FTlVfRFJPUF9SRVNUUklDVCkpKTsKSW5kZXg6 IHNyYy9jb20vcmVkaGF0L3JoZGIvYWRtaW4vdHJlZS9Sb290Tm9kZS5qYXZh Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcmhkYi9z cmMvcmhkYi9ndWl0b29scy9yaGRiLWFkbWluL3NyYy9jb20vcmVkaGF0L3Jo ZGIvYWRtaW4vdHJlZS9Sb290Tm9kZS5qYXZhLHYKcmV0cmlldmluZyByZXZp c2lvbiAxLjEuMS4xCmRpZmYgLWMgLXAgLXIxLjEuMS4xIFJvb3ROb2RlLmph dmEKKioqIHNyYy9jb20vcmVkaGF0L3JoZGIvYWRtaW4vdHJlZS9Sb290Tm9k ZS5qYXZhCTIxIE5vdiAyMDAzIDE4OjMwOjI4IC0wMDAwCTEuMS4xLjEKLS0t IHNyYy9jb20vcmVkaGF0L3JoZGIvYWRtaW4vdHJlZS9Sb290Tm9kZS5qYXZh CTIyIERlYyAyMDAzIDE5OjMxOjA4IC0wMDAwCioqKioqKioqKioqKioqKiBw dWJsaWMgY2xhc3MgUm9vdE5vZGUgZXh0ZW5kcyBBZG1pbkdlbmVyCioqKiA5 MSwxMDAgKioqKgogIAkvKioKICAJICogUmV0dXJucyB0aGUgcG9wdXAtbWVu dSBmb3IgdGhpcyBub2RlCiAgCSAqCiAgCSAqIEByZXR1cm4gdGhlIHBvcHVw IG1lbnUgZm9yIHRoaXMgbm9kZQogIAkgKi8KICAJCiEgCXB1YmxpYyBKUG9w dXBNZW51IGdldE5vZGVNZW51KCkgewogIAkJcmV0dXJuIG51bGw7CiAgCX0K ICAKLS0tIDkxLDEwMSAtLS0tCiAgCS8qKgogIAkgKiBSZXR1cm5zIHRoZSBw b3B1cC1tZW51IGZvciB0aGlzIG5vZGUKICAJICoKKyAJICogQHBhcmFtIGNs aWVudCBDbGllbnQgdG8gdGhlIGJhY2tlbmQKICAJICogQHJldHVybiB0aGUg cG9wdXAgbWVudSBmb3IgdGhpcyBub2RlCiAgCSAqLwogIAkKISAJcHVibGlj IEpQb3B1cE1lbnUgZ2V0Tm9kZU1lbnUoQWRtaW5CYWNrZW5kQ2xpZW50IGNs aWVudCkgewogIAkJcmV0dXJuIG51bGw7CiAgCX0KICAKSW5kZXg6IHNyYy9j b20vcmVkaGF0L3JoZGIvYWRtaW4vdHJlZS9SdWxlR2VuZXJpY05vZGUuamF2 YQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3JoZGIv c3JjL3JoZGIvZ3VpdG9vbHMvcmhkYi1hZG1pbi9zcmMvY29tL3JlZGhhdC9y aGRiL2FkbWluL3RyZWUvUnVsZUdlbmVyaWNOb2RlLmphdmEsdgpyZXRyaWV2 aW5nIHJldmlzaW9uIDEuMS4xLjEKZGlmZiAtYyAtcCAtcjEuMS4xLjEgUnVs ZUdlbmVyaWNOb2RlLmphdmEKKioqIHNyYy9jb20vcmVkaGF0L3JoZGIvYWRt aW4vdHJlZS9SdWxlR2VuZXJpY05vZGUuamF2YQkyMSBOb3YgMjAwMyAxODoz MDoyOCAtMDAwMAkxLjEuMS4xCi0tLSBzcmMvY29tL3JlZGhhdC9yaGRiL2Fk bWluL3RyZWUvUnVsZUdlbmVyaWNOb2RlLmphdmEJMjIgRGVjIDIwMDMgMTk6 MzE6MDggLTAwMDAKKioqKioqKioqKioqKioqIHB1YmxpYyBhYnN0cmFjdCBj bGFzcyBSdWxlR2VuZXJpY05vZGUgZXgKKioqIDExMiwxMjEgKioqKgogIAkv KioKICAJICogUmV0dXJucyB0aGUgcG9wdXAtbWVudSBmb3IgdGhpcyBub2Rl CiAgCSAqCiAgCSAqIEByZXR1cm4gdGhlIHBvcHVwIG1lbnUgZm9yIHRoaXMg bm9kZQogIAkgKi8KICAJCiEgCXB1YmxpYyBKUG9wdXBNZW51IGdldE5vZGVN ZW51KCkgewogIAkJSlBvcHVwTWVudSBtZW51ID0gbmV3IEpQb3B1cE1lbnUo KTsKICAJCQogIAkJbWVudS5hZGQobmV3IEpNZW51SXRlbShBZG1pblJlc291 cmNlcy5nZXRTdHJpbmcoQWRtaW5SZXNvdXJjZXMuTUVOVV9EUk9QX1JFU1RS SUNUKSkpOwotLS0gMTEyLDEyMiAtLS0tCiAgCS8qKgogIAkgKiBSZXR1cm5z IHRoZSBwb3B1cC1tZW51IGZvciB0aGlzIG5vZGUKICAJICoKKyAJICogQHBh cmFtIGNsaWVudCBDbGllbnQgdG8gdGhlIGJhY2tlbmQKICAJICogQHJldHVy biB0aGUgcG9wdXAgbWVudSBmb3IgdGhpcyBub2RlCiAgCSAqLwogIAkKISAJ cHVibGljIEpQb3B1cE1lbnUgZ2V0Tm9kZU1lbnUoQWRtaW5CYWNrZW5kQ2xp ZW50IGNsaWVudCkgewogIAkJSlBvcHVwTWVudSBtZW51ID0gbmV3IEpQb3B1 cE1lbnUoKTsKICAJCQogIAkJbWVudS5hZGQobmV3IEpNZW51SXRlbShBZG1p blJlc291cmNlcy5nZXRTdHJpbmcoQWRtaW5SZXNvdXJjZXMuTUVOVV9EUk9Q X1JFU1RSSUNUKSkpOwpJbmRleDogc3JjL2NvbS9yZWRoYXQvcmhkYi9hZG1p bi90cmVlL1J1bGVzR2VuZXJpY0hlYWRlck5vZGUuamF2YQo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3JoZGIvc3JjL3JoZGIvZ3Vp dG9vbHMvcmhkYi1hZG1pbi9zcmMvY29tL3JlZGhhdC9yaGRiL2FkbWluL3Ry ZWUvUnVsZXNHZW5lcmljSGVhZGVyTm9kZS5qYXZhLHYKcmV0cmlldmluZyBy ZXZpc2lvbiAxLjEuMS4xCmRpZmYgLWMgLXAgLXIxLjEuMS4xIFJ1bGVzR2Vu ZXJpY0hlYWRlck5vZGUuamF2YQoqKiogc3JjL2NvbS9yZWRoYXQvcmhkYi9h ZG1pbi90cmVlL1J1bGVzR2VuZXJpY0hlYWRlck5vZGUuamF2YQkyMSBOb3Yg MjAwMyAxODozMDoyOCAtMDAwMAkxLjEuMS4xCi0tLSBzcmMvY29tL3JlZGhh dC9yaGRiL2FkbWluL3RyZWUvUnVsZXNHZW5lcmljSGVhZGVyTm9kZS5qYXZh CTIyIERlYyAyMDAzIDE5OjMxOjA4IC0wMDAwCioqKioqKioqKioqKioqKiBw dWJsaWMgYWJzdHJhY3QgY2xhc3MgUnVsZXNHZW5lcmljSGVhZGVyCioqKiA4 NSw5NCAqKioqCiAgCS8qKgogIAkgKiBSZXR1cm5zIHRoZSBwb3B1cC1tZW51 IGZvciB0aGlzIG5vZGUKICAJICoKICAJICogQHJldHVybiB0aGUgcG9wdXAg bWVudSBmb3IgdGhpcyBub2RlCiAgCSAqLwogIAkKISAJcHVibGljIEpQb3B1 cE1lbnUgZ2V0Tm9kZU1lbnUoKSB7CiAgCQkKICAJCUpQb3B1cE1lbnUgbWVu dSA9IG5ldyBKUG9wdXBNZW51KCk7CiAgCi0tLSA4NSw5NSAtLS0tCiAgCS8q KgogIAkgKiBSZXR1cm5zIHRoZSBwb3B1cC1tZW51IGZvciB0aGlzIG5vZGUK ICAJICoKKyAJICogQHBhcmFtIGNsaWVudCBDbGllbnQgdG8gdGhlIGJhY2tl bmQKICAJICogQHJldHVybiB0aGUgcG9wdXAgbWVudSBmb3IgdGhpcyBub2Rl CiAgCSAqLwogIAkKISAJcHVibGljIEpQb3B1cE1lbnUgZ2V0Tm9kZU1lbnUo QWRtaW5CYWNrZW5kQ2xpZW50IGNsaWVudCkgewogIAkJCiAgCQlKUG9wdXBN ZW51IG1lbnUgPSBuZXcgSlBvcHVwTWVudSgpOwogIApJbmRleDogc3JjL2Nv bS9yZWRoYXQvcmhkYi9hZG1pbi90cmVlL1NjaGVtYU5vZGUuamF2YQo9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3JoZGIvc3JjL3Jo ZGIvZ3VpdG9vbHMvcmhkYi1hZG1pbi9zcmMvY29tL3JlZGhhdC9yaGRiL2Fk bWluL3RyZWUvU2NoZW1hTm9kZS5qYXZhLHYKcmV0cmlldmluZyByZXZpc2lv biAxLjEuMS4xCmRpZmYgLWMgLXAgLXIxLjEuMS4xIFNjaGVtYU5vZGUuamF2 YQoqKiogc3JjL2NvbS9yZWRoYXQvcmhkYi9hZG1pbi90cmVlL1NjaGVtYU5v ZGUuamF2YQkyMSBOb3YgMjAwMyAxODozMDoyOCAtMDAwMAkxLjEuMS4xCi0t LSBzcmMvY29tL3JlZGhhdC9yaGRiL2FkbWluL3RyZWUvU2NoZW1hTm9kZS5q YXZhCTIyIERlYyAyMDAzIDE5OjMxOjA4IC0wMDAwCioqKioqKioqKioqKioq KiBwdWJsaWMgY2xhc3MgU2NoZW1hTm9kZSBleHRlbmRzIEFkbWluR2VuCioq KiAxMTIsMTMxICoqKioKICAJCQkJU2NoZW1hVXBkYXRlLmRyb3BTY2hlbWEo Y2xpZW50LCB0aGlzLCBPYmplY3RVcGRhdGUuRFJPUF9UWVBFX0NBU0NBREUp OwogIAkJCQlyZWZyZXNoUGFyZW50KGNsaWVudCk7CiAgCQkJfQogIAkJfQog IAl9CiAgCiAgCS8qKgogIAkgKiBSZXR1cm5zIHRoZSBwb3B1cC1tZW51IGZv ciB0aGlzIG5vZGUKICAJICoKICAJICogQHJldHVybiB0aGUgcG9wdXAgbWVu dSBmb3IgdGhpcyBub2RlCiAgCSAqLwogIAkKISAJcHVibGljIEpQb3B1cE1l bnUgZ2V0Tm9kZU1lbnUoKSB7CiAgCQlKUG9wdXBNZW51IG1lbnUgPSBuZXcg SlBvcHVwTWVudSgpOwogIAogIAkJbWVudS5hZGQobmV3IEpNZW51SXRlbShB ZG1pblJlc291cmNlcy5nZXRTdHJpbmcoQWRtaW5SZXNvdXJjZXMuTUVOVV9E Uk9QX1JFU1RSSUNUKSkpOwogIAkJbWVudS5hZGQobmV3IEpNZW51SXRlbShB ZG1pblJlc291cmNlcy5nZXRTdHJpbmcoQWRtaW5SZXNvdXJjZXMuTUVOVV9E Uk9QX0NBU0NBREUpKSk7CiAgCQltZW51LmFkZChuZXcgSk1lbnVJdGVtKEFk bWluUmVzb3VyY2VzLmdldFN0cmluZyhBZG1pblJlc291cmNlcy5NRU5VX0VE SVRfUFJJVklMRUdFUykpKTsKICAJCW1lbnUuYWRkKG5ldyBKTWVudUl0ZW0o QWRtaW5SZXNvdXJjZXMuZ2V0U3RyaW5nKEFkbWluUmVzb3VyY2VzLk1FTlVf Q09NTUVOVCkpKTsKICAKLS0tIDExMiwxNTUgLS0tLQogIAkJCQlTY2hlbWFV cGRhdGUuZHJvcFNjaGVtYShjbGllbnQsIHRoaXMsIE9iamVjdFVwZGF0ZS5E Uk9QX1RZUEVfQ0FTQ0FERSk7CiAgCQkJCXJlZnJlc2hQYXJlbnQoY2xpZW50 KTsKICAJCQl9CisgCQl9IGVsc2UgaWYgKHNlbGVjdGVkTWVudUNhcHRpb24g PT0gQWRtaW5SZXNvdXJjZXMuZ2V0U3RyaW5nKEFkbWluUmVzb3VyY2VzLk1F TlVfUkVOQU1FX1NDSEVNQSkpIHsKKyAJCQlSZW5hbWVEaWFsb2cgcmQgPSBu ZXcgUmVuYW1lRGlhbG9nKGRvY2tXaW5kb3csIHRoaXMsIGNsaWVudCwgdGhp cy5nZXROb2RlVHlwZSgpKTsKKyAJCQlyZC5zaG93KCk7CiAgCQl9CiAgCX0K ICAKICAJLyoqCiAgCSAqIFJldHVybnMgdGhlIHBvcHVwLW1lbnUgZm9yIHRo aXMgbm9kZQogIAkgKgorIAkgKiBAcGFyYW0gY2xpZW50IENsaWVudCB0byB0 aGUgYmFja2VuZAogIAkgKiBAcmV0dXJuIHRoZSBwb3B1cCBtZW51IGZvciB0 aGlzIG5vZGUKICAJICovCiAgCQohIAlwdWJsaWMgSlBvcHVwTWVudSBnZXRO b2RlTWVudShBZG1pbkJhY2tlbmRDbGllbnQgY2xpZW50KSB7CiAgCQlKUG9w dXBNZW51IG1lbnUgPSBuZXcgSlBvcHVwTWVudSgpOwogIAorIAkJLy8gTWVu dSBpdGVtcyB0aGF0IHZhcnkgYWNjb3JkaW5nIHRvIGJhY2tlbmQKKyAJCQor IAkJSk1lbnVJdGVtIGptaVJlbmFtZSA9IG5ldyBKTWVudUl0ZW0oKTsKKyAJ CWptaVJlbmFtZS5zZXRUZXh0KEFkbWluUmVzb3VyY2VzLmdldFN0cmluZyhB ZG1pblJlc291cmNlcy5NRU5VX1JFTkFNRV9TQ0hFTUEpKTsKKyAJCWptaVJl bmFtZS5zZXRFbmFibGVkKGZhbHNlKTsKKyAJCQorIAkJdHJ5IHsKKyAJCQkK KyAJCQkvLyBGb3IgYSBjb25zaXN0ZW50IGxvb2ssIGlmIGl0ZW0gaXMgbm90 IGF2YWlsYWJsZSBvbiB0aGlzIHZlcnNpb24sIAorIAkJCS8vIHdlIHdpbGwg ZGlzYWJsZSBpdCwgYnV0IHN0aWxsIHNob3cgaXQKKyAKKyAJCQlpZiAoY2xp ZW50LmdldEJhY2tlbmRWZXJzaW9uKHRoaXMuZ2V0UGFyZW50Q2x1c3Rlck5h bWUoKSkgPiA3LjMpIHsKKyAJCQkJIGptaVJlbmFtZS5zZXRFbmFibGVkKHRy dWUpOworIAkJCX0KKyAKKyAJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7Cisg CQkJLy8gTm90aGluZy4uIGVsZW1lbnQgd2lsbCByZW1haW4gZGlzYWJsZWQK KyAJCX0KKyAgCiAgCQltZW51LmFkZChuZXcgSk1lbnVJdGVtKEFkbWluUmVz b3VyY2VzLmdldFN0cmluZyhBZG1pblJlc291cmNlcy5NRU5VX0RST1BfUkVT VFJJQ1QpKSk7CiAgCQltZW51LmFkZChuZXcgSk1lbnVJdGVtKEFkbWluUmVz b3VyY2VzLmdldFN0cmluZyhBZG1pblJlc291cmNlcy5NRU5VX0RST1BfQ0FT Q0FERSkpKTsKKyAJCW1lbnUuYWRkKGptaVJlbmFtZSk7CiAgCQltZW51LmFk ZChuZXcgSk1lbnVJdGVtKEFkbWluUmVzb3VyY2VzLmdldFN0cmluZyhBZG1p blJlc291cmNlcy5NRU5VX0VESVRfUFJJVklMRUdFUykpKTsKICAJCW1lbnUu YWRkKG5ldyBKTWVudUl0ZW0oQWRtaW5SZXNvdXJjZXMuZ2V0U3RyaW5nKEFk bWluUmVzb3VyY2VzLk1FTlVfQ09NTUVOVCkpKTsKICAKSW5kZXg6IHNyYy9j b20vcmVkaGF0L3JoZGIvYWRtaW4vdHJlZS9TY2hlbWFzSGVhZGVyTm9kZS5q YXZhCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcmhk Yi9zcmMvcmhkYi9ndWl0b29scy9yaGRiLWFkbWluL3NyYy9jb20vcmVkaGF0 L3JoZGIvYWRtaW4vdHJlZS9TY2hlbWFzSGVhZGVyTm9kZS5qYXZhLHYKcmV0 cmlldmluZyByZXZpc2lvbiAxLjEuMS4xCmRpZmYgLWMgLXAgLXIxLjEuMS4x IFNjaGVtYXNIZWFkZXJOb2RlLmphdmEKKioqIHNyYy9jb20vcmVkaGF0L3Jo ZGIvYWRtaW4vdHJlZS9TY2hlbWFzSGVhZGVyTm9kZS5qYXZhCTIxIE5vdiAy MDAzIDE4OjMwOjI4IC0wMDAwCTEuMS4xLjEKLS0tIHNyYy9jb20vcmVkaGF0 L3JoZGIvYWRtaW4vdHJlZS9TY2hlbWFzSGVhZGVyTm9kZS5qYXZhCTIyIERl YyAyMDAzIDE5OjMxOjA4IC0wMDAwCioqKioqKioqKioqKioqKiBwdWJsaWMg Y2xhc3MgU2NoZW1hc0hlYWRlck5vZGUgZXh0ZW5kcyBBCioqKiAxNjMsMTcy ICoqKioKICAJLyoqCiAgCSAqIFJldHVybnMgdGhlIHBvcHVwLW1lbnUgZm9y IHRoaXMgbm9kZQogIAkgKgogIAkgKiBAcmV0dXJuIHRoZSBwb3B1cCBtZW51 IGZvciB0aGlzIG5vZGUKICAJICovCiAgCQohIAlwdWJsaWMgSlBvcHVwTWVu dSBnZXROb2RlTWVudSgpIHsKICAJCUpQb3B1cE1lbnUgbWVudSA9IG5ldyBK UG9wdXBNZW51KCk7CiAgCiAgCQltZW51LmFkZChuZXcgSk1lbnVJdGVtKEFk bWluUmVzb3VyY2VzLmdldFN0cmluZyhBZG1pblJlc291cmNlcy5NRU5VX0NS RUFURV9TQ0hFTUEpKSk7Ci0tLSAxNjMsMTczIC0tLS0KICAJLyoqCiAgCSAq IFJldHVybnMgdGhlIHBvcHVwLW1lbnUgZm9yIHRoaXMgbm9kZQogIAkgKgor IAkgKiBAcGFyYW0gY2xpZW50IENsaWVudCB0byB0aGUgYmFja2VuZAogIAkg KiBAcmV0dXJuIHRoZSBwb3B1cCBtZW51IGZvciB0aGlzIG5vZGUKICAJICov CiAgCQohIAlwdWJsaWMgSlBvcHVwTWVudSBnZXROb2RlTWVudShBZG1pbkJh Y2tlbmRDbGllbnQgY2xpZW50KSB7CiAgCQlKUG9wdXBNZW51IG1lbnUgPSBu ZXcgSlBvcHVwTWVudSgpOwogIAogIAkJbWVudS5hZGQobmV3IEpNZW51SXRl bShBZG1pblJlc291cmNlcy5nZXRTdHJpbmcoQWRtaW5SZXNvdXJjZXMuTUVO VV9DUkVBVEVfU0NIRU1BKSkpOwpJbmRleDogc3JjL2NvbS9yZWRoYXQvcmhk Yi9hZG1pbi90cmVlL1NlcXVlbmNlTm9kZS5qYXZhCj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcmhkYi9zcmMvcmhkYi9ndWl0b29s cy9yaGRiLWFkbWluL3NyYy9jb20vcmVkaGF0L3JoZGIvYWRtaW4vdHJlZS9T ZXF1ZW5jZU5vZGUuamF2YSx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xLjEu MQpkaWZmIC1jIC1wIC1yMS4xLjEuMSBTZXF1ZW5jZU5vZGUuamF2YQoqKiog c3JjL2NvbS9yZWRoYXQvcmhkYi9hZG1pbi90cmVlL1NlcXVlbmNlTm9kZS5q YXZhCTIxIE5vdiAyMDAzIDE4OjMwOjI4IC0wMDAwCTEuMS4xLjEKLS0tIHNy Yy9jb20vcmVkaGF0L3JoZGIvYWRtaW4vdHJlZS9TZXF1ZW5jZU5vZGUuamF2 YQkyMiBEZWMgMjAwMyAxOTozMTowOSAtMDAwMAoqKioqKioqKioqKioqKiog cHVibGljIGNsYXNzIFNlcXVlbmNlTm9kZSBleHRlbmRzIEFkbWluRwoqKiog MTIzLDEzMiAqKioqCiAgCS8qKgogIAkgKiBSZXR1cm5zIHRoZSBwb3B1cC1t ZW51IGZvciB0aGlzIG5vZGUKICAJICoKICAJICogQHJldHVybiB0aGUgcG9w dXAgbWVudSBmb3IgdGhpcyBub2RlCiAgCSAqLwogIAkKISAJcHVibGljIEpQ b3B1cE1lbnUgZ2V0Tm9kZU1lbnUoKSB7CiAgCQlKUG9wdXBNZW51IG1lbnUg PSBuZXcgSlBvcHVwTWVudSgpOwogIAogIAkJbWVudS5hZGQobmV3IEpNZW51 SXRlbShBZG1pblJlc291cmNlcy5nZXRTdHJpbmcoQWRtaW5SZXNvdXJjZXMu TUVOVV9EUk9QX1JFU1RSSUNUKSkpOwotLS0gMTIzLDEzMyAtLS0tCiAgCS8q KgogIAkgKiBSZXR1cm5zIHRoZSBwb3B1cC1tZW51IGZvciB0aGlzIG5vZGUK ICAJICoKKyAJICogQHBhcmFtIGNsaWVudCBDbGllbnQgdG8gdGhlIGJhY2tl bmQKICAJICogQHJldHVybiB0aGUgcG9wdXAgbWVudSBmb3IgdGhpcyBub2Rl CiAgCSAqLwogIAkKISAJcHVibGljIEpQb3B1cE1lbnUgZ2V0Tm9kZU1lbnUo QWRtaW5CYWNrZW5kQ2xpZW50IGNsaWVudCkgewogIAkJSlBvcHVwTWVudSBt ZW51ID0gbmV3IEpQb3B1cE1lbnUoKTsKICAKICAJCW1lbnUuYWRkKG5ldyBK TWVudUl0ZW0oQWRtaW5SZXNvdXJjZXMuZ2V0U3RyaW5nKEFkbWluUmVzb3Vy Y2VzLk1FTlVfRFJPUF9SRVNUUklDVCkpKTsKSW5kZXg6IHNyYy9jb20vcmVk aGF0L3JoZGIvYWRtaW4vdHJlZS9TZXF1ZW5jZXNIZWFkZXJOb2RlLmphdmEK PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yaGRiL3Ny Yy9yaGRiL2d1aXRvb2xzL3JoZGItYWRtaW4vc3JjL2NvbS9yZWRoYXQvcmhk Yi9hZG1pbi90cmVlL1NlcXVlbmNlc0hlYWRlck5vZGUuamF2YSx2CnJldHJp ZXZpbmcgcmV2aXNpb24gMS4xLjEuMQpkaWZmIC1jIC1wIC1yMS4xLjEuMSBT ZXF1ZW5jZXNIZWFkZXJOb2RlLmphdmEKKioqIHNyYy9jb20vcmVkaGF0L3Jo ZGIvYWRtaW4vdHJlZS9TZXF1ZW5jZXNIZWFkZXJOb2RlLmphdmEJMjEgTm92 IDIwMDMgMTg6MzA6MjggLTAwMDAJMS4xLjEuMQotLS0gc3JjL2NvbS9yZWRo YXQvcmhkYi9hZG1pbi90cmVlL1NlcXVlbmNlc0hlYWRlck5vZGUuamF2YQky MiBEZWMgMjAwMyAxOTozMTowOSAtMDAwMAoqKioqKioqKioqKioqKiogcHVi bGljIGNsYXNzIFNlcXVlbmNlc0hlYWRlck5vZGUgZXh0ZW5kcwoqKiogMTAw LDEwOSAqKioqCiAgCS8qKgogIAkgKiBSZXR1cm5zIHRoZSBwb3B1cC1tZW51 IGZvciB0aGlzIG5vZGUKICAJICoKICAJICogQHJldHVybiB0aGUgcG9wdXAg bWVudSBmb3IgdGhpcyBub2RlCiAgCSAqLwogIAkKISAJcHVibGljIEpQb3B1 cE1lbnUgZ2V0Tm9kZU1lbnUoKSB7CiAgCQlKUG9wdXBNZW51IG1lbnUgPSBu ZXcgSlBvcHVwTWVudSgpOwogIAogIAkJbWVudS5hZGQobmV3IEpNZW51SXRl bShBZG1pblJlc291cmNlcy5nZXRTdHJpbmcoQWRtaW5SZXNvdXJjZXMuTUVO VV9DUkVBVEVfU0VRVUVOQ0UpKSk7Ci0tLSAxMDAsMTEwIC0tLS0KICAJLyoq CiAgCSAqIFJldHVybnMgdGhlIHBvcHVwLW1lbnUgZm9yIHRoaXMgbm9kZQog IAkgKgorIAkgKiBAcGFyYW0gY2xpZW50IENsaWVudCB0byB0aGUgYmFja2Vu ZAogIAkgKiBAcmV0dXJuIHRoZSBwb3B1cCBtZW51IGZvciB0aGlzIG5vZGUK ICAJICovCiAgCQohIAlwdWJsaWMgSlBvcHVwTWVudSBnZXROb2RlTWVudShB ZG1pbkJhY2tlbmRDbGllbnQgY2xpZW50KSB7CiAgCQlKUG9wdXBNZW51IG1l bnUgPSBuZXcgSlBvcHVwTWVudSgpOwogIAogIAkJbWVudS5hZGQobmV3IEpN ZW51SXRlbShBZG1pblJlc291cmNlcy5nZXRTdHJpbmcoQWRtaW5SZXNvdXJj ZXMuTUVOVV9DUkVBVEVfU0VRVUVOQ0UpKSk7CkluZGV4OiBzcmMvY29tL3Jl ZGhhdC9yaGRiL2FkbWluL3RyZWUvVGFibGVOb2RlLmphdmEKPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yaGRiL3NyYy9yaGRiL2d1 aXRvb2xzL3JoZGItYWRtaW4vc3JjL2NvbS9yZWRoYXQvcmhkYi9hZG1pbi90 cmVlL1RhYmxlTm9kZS5qYXZhLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjEu MS4xCmRpZmYgLWMgLXAgLXIxLjEuMS4xIFRhYmxlTm9kZS5qYXZhCioqKiBz cmMvY29tL3JlZGhhdC9yaGRiL2FkbWluL3RyZWUvVGFibGVOb2RlLmphdmEJ MjEgTm92IDIwMDMgMTg6MzA6MjggLTAwMDAJMS4xLjEuMQotLS0gc3JjL2Nv bS9yZWRoYXQvcmhkYi9hZG1pbi90cmVlL1RhYmxlTm9kZS5qYXZhCTIyIERl YyAyMDAzIDE5OjMxOjA5IC0wMDAwCioqKioqKioqKioqKioqKiBwdWJsaWMg Y2xhc3MgVGFibGVOb2RlIGV4dGVuZHMgQWRtaW5HZW5lCioqKiAxNTIsMTYx ICoqKioKICAJLyoqCiAgCSAqIFJldHVybnMgdGhlIHBvcHVwLW1lbnUgZm9y IHRoaXMgbm9kZQogIAkgKgogIAkgKiBAcmV0dXJuIHRoZSBwb3B1cCBtZW51 IGZvciB0aGlzIG5vZGUKICAJICovCiAgCQohIAlwdWJsaWMgSlBvcHVwTWVu dSBnZXROb2RlTWVudSgpIHsKICAJCUpQb3B1cE1lbnUgbWVudSA9IG5ldyBK UG9wdXBNZW51KCk7CiAgCiAgCQltZW51LmFkZChuZXcgSk1lbnVJdGVtKEFk bWluUmVzb3VyY2VzLmdldFN0cmluZyhBZG1pblJlc291cmNlcy5NRU5VX0RS T1BfUkVTVFJJQ1QpKSk7Ci0tLSAxNTIsMTYyIC0tLS0KICAJLyoqCiAgCSAq IFJldHVybnMgdGhlIHBvcHVwLW1lbnUgZm9yIHRoaXMgbm9kZQogIAkgKgor IAkgKiBAcGFyYW0gY2xpZW50IENsaWVudCB0byB0aGUgYmFja2VuZAogIAkg KiBAcmV0dXJuIHRoZSBwb3B1cCBtZW51IGZvciB0aGlzIG5vZGUKICAJICov CiAgCQohIAlwdWJsaWMgSlBvcHVwTWVudSBnZXROb2RlTWVudShBZG1pbkJh Y2tlbmRDbGllbnQgY2xpZW50KSB7CiAgCQlKUG9wdXBNZW51IG1lbnUgPSBu ZXcgSlBvcHVwTWVudSgpOwogIAogIAkJbWVudS5hZGQobmV3IEpNZW51SXRl bShBZG1pblJlc291cmNlcy5nZXRTdHJpbmcoQWRtaW5SZXNvdXJjZXMuTUVO VV9EUk9QX1JFU1RSSUNUKSkpOwpJbmRleDogc3JjL2NvbS9yZWRoYXQvcmhk Yi9hZG1pbi90cmVlL1RhYmxlc0hlYWRlck5vZGUuamF2YQo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3JoZGIvc3JjL3JoZGIvZ3Vp dG9vbHMvcmhkYi1hZG1pbi9zcmMvY29tL3JlZGhhdC9yaGRiL2FkbWluL3Ry ZWUvVGFibGVzSGVhZGVyTm9kZS5qYXZhLHYKcmV0cmlldmluZyByZXZpc2lv biAxLjEuMS4xCmRpZmYgLWMgLXAgLXIxLjEuMS4xIFRhYmxlc0hlYWRlck5v ZGUuamF2YQoqKiogc3JjL2NvbS9yZWRoYXQvcmhkYi9hZG1pbi90cmVlL1Rh Ymxlc0hlYWRlck5vZGUuamF2YQkyMSBOb3YgMjAwMyAxODozMDoyOCAtMDAw MAkxLjEuMS4xCi0tLSBzcmMvY29tL3JlZGhhdC9yaGRiL2FkbWluL3RyZWUv VGFibGVzSGVhZGVyTm9kZS5qYXZhCTIyIERlYyAyMDAzIDE5OjMxOjA5IC0w MDAwCioqKioqKioqKioqKioqKiBwdWJsaWMgY2xhc3MgVGFibGVzSGVhZGVy Tm9kZSBleHRlbmRzIEFkCioqKiAxOTEsMjAwICoqKioKICAJLyoqCiAgCSAq IFJldHVybnMgdGhlIHBvcHVwLW1lbnUgZm9yIHRoaXMgbm9kZQogIAkgKgog IAkgKiBAcmV0dXJuIHRoZSBwb3B1cCBtZW51IGZvciB0aGlzIG5vZGUKICAJ ICovCiAgCQohIAlwdWJsaWMgSlBvcHVwTWVudSBnZXROb2RlTWVudSgpIHsK ICAJCUpQb3B1cE1lbnUgbWVudSA9IG5ldyBKUG9wdXBNZW51KCk7CiAgCiAg CQltZW51LmFkZChuZXcgSk1lbnVJdGVtKEFkbWluUmVzb3VyY2VzLmdldFN0 cmluZyhBZG1pblJlc291cmNlcy5NRU5VX0NSRUFURV9UQUJMRSkpKTsKLS0t IDE5MSwyMDEgLS0tLQogIAkvKioKICAJICogUmV0dXJucyB0aGUgcG9wdXAt bWVudSBmb3IgdGhpcyBub2RlCiAgCSAqCisgCSAqIEBwYXJhbSBjbGllbnQg Q2xpZW50IHRvIHRoZSBiYWNrZW5kCiAgCSAqIEByZXR1cm4gdGhlIHBvcHVw IG1lbnUgZm9yIHRoaXMgbm9kZQogIAkgKi8KICAJCiEgCXB1YmxpYyBKUG9w dXBNZW51IGdldE5vZGVNZW51KEFkbWluQmFja2VuZENsaWVudCBjbGllbnQp IHsKICAJCUpQb3B1cE1lbnUgbWVudSA9IG5ldyBKUG9wdXBNZW51KCk7CiAg CiAgCQltZW51LmFkZChuZXcgSk1lbnVJdGVtKEFkbWluUmVzb3VyY2VzLmdl dFN0cmluZyhBZG1pblJlc291cmNlcy5NRU5VX0NSRUFURV9UQUJMRSkpKTsK SW5kZXg6IHNyYy9jb20vcmVkaGF0L3JoZGIvYWRtaW4vdHJlZS9UcmlnZ2Vy Tm9kZS5qYXZhCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9j dnMvcmhkYi9zcmMvcmhkYi9ndWl0b29scy9yaGRiLWFkbWluL3NyYy9jb20v cmVkaGF0L3JoZGIvYWRtaW4vdHJlZS9UcmlnZ2VyTm9kZS5qYXZhLHYKcmV0 cmlldmluZyByZXZpc2lvbiAxLjEuMS4xCmRpZmYgLWMgLXAgLXIxLjEuMS4x IFRyaWdnZXJOb2RlLmphdmEKKioqIHNyYy9jb20vcmVkaGF0L3JoZGIvYWRt aW4vdHJlZS9UcmlnZ2VyTm9kZS5qYXZhCTIxIE5vdiAyMDAzIDE4OjMwOjI4 IC0wMDAwCTEuMS4xLjEKLS0tIHNyYy9jb20vcmVkaGF0L3JoZGIvYWRtaW4v dHJlZS9UcmlnZ2VyTm9kZS5qYXZhCTIyIERlYyAyMDAzIDE5OjMxOjA5IC0w MDAwCioqKioqKioqKioqKioqKiBwdWJsaWMgY2xhc3MgVHJpZ2dlck5vZGUg ZXh0ZW5kcyBBZG1pbkdlCioqKiAxNDMsMTUyICoqKioKICAJLyoqCiAgCSAq IFJldHVybnMgdGhlIHBvcHVwLW1lbnUgZm9yIHRoaXMgbm9kZQogIAkgKgog IAkgKiBAcmV0dXJuIHRoZSBwb3B1cCBtZW51IGZvciB0aGlzIG5vZGUKICAJ ICovCiAgCQohIAlwdWJsaWMgSlBvcHVwTWVudSBnZXROb2RlTWVudSgpIHsK ICAKICAJCUpQb3B1cE1lbnUgbWVudSA9IG5ldyBKUG9wdXBNZW51KCk7CiAg Ci0tLSAxNDMsMTUzIC0tLS0KICAJLyoqCiAgCSAqIFJldHVybnMgdGhlIHBv cHVwLW1lbnUgZm9yIHRoaXMgbm9kZQogIAkgKgorIAkgKiBAcGFyYW0gY2xp ZW50IENsaWVudCB0byB0aGUgYmFja2VuZAogIAkgKiBAcmV0dXJuIHRoZSBw b3B1cCBtZW51IGZvciB0aGlzIG5vZGUKICAJICovCiAgCQohIAlwdWJsaWMg SlBvcHVwTWVudSBnZXROb2RlTWVudShBZG1pbkJhY2tlbmRDbGllbnQgY2xp ZW50KSB7CiAgCiAgCQlKUG9wdXBNZW51IG1lbnUgPSBuZXcgSlBvcHVwTWVu dSgpOwogIApJbmRleDogc3JjL2NvbS9yZWRoYXQvcmhkYi9hZG1pbi90cmVl L1RyaWdnZXJzSGVhZGVyTm9kZS5qYXZhCj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KUkNTIGZpbGU6IC9jdnMvcmhkYi9zcmMvcmhkYi9ndWl0b29scy9yaGRi LWFkbWluL3NyYy9jb20vcmVkaGF0L3JoZGIvYWRtaW4vdHJlZS9UcmlnZ2Vy c0hlYWRlck5vZGUuamF2YSx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xLjEu MQpkaWZmIC1jIC1wIC1yMS4xLjEuMSBUcmlnZ2Vyc0hlYWRlck5vZGUuamF2 YQoqKiogc3JjL2NvbS9yZWRoYXQvcmhkYi9hZG1pbi90cmVlL1RyaWdnZXJz SGVhZGVyTm9kZS5qYXZhCTIxIE5vdiAyMDAzIDE4OjMwOjI4IC0wMDAwCTEu MS4xLjEKLS0tIHNyYy9jb20vcmVkaGF0L3JoZGIvYWRtaW4vdHJlZS9Ucmln Z2Vyc0hlYWRlck5vZGUuamF2YQkyMiBEZWMgMjAwMyAxOTozMTowOSAtMDAw MAoqKioqKioqKioqKioqKiogcHVibGljIGNsYXNzIFRyaWdnZXJzSGVhZGVy Tm9kZSBleHRlbmRzIAoqKiogMTU4LDE2NyAqKioqCiAgCS8qKgogIAkgKiBS ZXR1cm5zIHRoZSBwb3B1cC1tZW51IGZvciB0aGlzIG5vZGUKICAJICoKICAJ ICogQHJldHVybiB0aGUgcG9wdXAgbWVudSBmb3IgdGhpcyBub2RlCiAgCSAq LwogIAkKISAJcHVibGljIEpQb3B1cE1lbnUgZ2V0Tm9kZU1lbnUoKSB7CiAg CQkKICAJCUpQb3B1cE1lbnUgbWVudSA9IG5ldyBKUG9wdXBNZW51KCk7CiAg Ci0tLSAxNTgsMTY4IC0tLS0KICAJLyoqCiAgCSAqIFJldHVybnMgdGhlIHBv cHVwLW1lbnUgZm9yIHRoaXMgbm9kZQogIAkgKgorIAkgKiBAcGFyYW0gY2xp ZW50IENsaWVudCB0byB0aGUgYmFja2VuZAogIAkgKiBAcmV0dXJuIHRoZSBw b3B1cCBtZW51IGZvciB0aGlzIG5vZGUKICAJICovCiAgCQohIAlwdWJsaWMg SlBvcHVwTWVudSBnZXROb2RlTWVudShBZG1pbkJhY2tlbmRDbGllbnQgY2xp ZW50KSB7CiAgCQkKICAJCUpQb3B1cE1lbnUgbWVudSA9IG5ldyBKUG9wdXBN ZW51KCk7CiAgCkluZGV4OiBzcmMvY29tL3JlZGhhdC9yaGRiL2FkbWluL3Ry ZWUvVW5pcXVlQ29uc3RyYWludE5vZGUuamF2YQo9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09ClJDUyBmaWxlOiAvY3ZzL3JoZGIvc3JjL3JoZGIvZ3VpdG9vbHMv cmhkYi1hZG1pbi9zcmMvY29tL3JlZGhhdC9yaGRiL2FkbWluL3RyZWUvVW5p cXVlQ29uc3RyYWludE5vZGUuamF2YSx2CnJldHJpZXZpbmcgcmV2aXNpb24g MS4xLjEuMQpkaWZmIC1jIC1wIC1yMS4xLjEuMSBVbmlxdWVDb25zdHJhaW50 Tm9kZS5qYXZhCioqKiBzcmMvY29tL3JlZGhhdC9yaGRiL2FkbWluL3RyZWUv VW5pcXVlQ29uc3RyYWludE5vZGUuamF2YQkyMSBOb3YgMjAwMyAxODozMDoy OCAtMDAwMAkxLjEuMS4xCi0tLSBzcmMvY29tL3JlZGhhdC9yaGRiL2FkbWlu L3RyZWUvVW5pcXVlQ29uc3RyYWludE5vZGUuamF2YQkyMiBEZWMgMjAwMyAx OTozMTowOSAtMDAwMAoqKioqKioqKioqKioqKiogcHVibGljIGNsYXNzIFVu aXF1ZUNvbnN0cmFpbnROb2RlIGV4dGVuZAoqKiogMTYxLDE3MCAqKioqCiAg CS8qKgogIAkgKiBSZXR1cm5zIHRoZSBwb3B1cC1tZW51IGZvciB0aGlzIG5v ZGUKICAJICoKICAJICogQHJldHVybiB0aGUgcG9wdXAgbWVudSBmb3IgdGhp cyBub2RlCiAgCSAqLwogIAkKISAJcHVibGljIEpQb3B1cE1lbnUgZ2V0Tm9k ZU1lbnUoKSB7CiAgCQlKUG9wdXBNZW51IG1lbnUgPSBuZXcgSlBvcHVwTWVu dSgpOwogIAogIAkJbWVudS5hZGQobmV3IEpNZW51SXRlbShBZG1pblJlc291 cmNlcy5nZXRTdHJpbmcoQWRtaW5SZXNvdXJjZXMuTUVOVV9EUk9QX1JFU1RS SUNUKSkpOwotLS0gMTYxLDE3MSAtLS0tCiAgCS8qKgogIAkgKiBSZXR1cm5z IHRoZSBwb3B1cC1tZW51IGZvciB0aGlzIG5vZGUKICAJICoKKyAJICogQHBh cmFtIGNsaWVudCBDbGllbnQgdG8gdGhlIGJhY2tlbmQKICAJICogQHJldHVy biB0aGUgcG9wdXAgbWVudSBmb3IgdGhpcyBub2RlCiAgCSAqLwogIAkKISAJ cHVibGljIEpQb3B1cE1lbnUgZ2V0Tm9kZU1lbnUoQWRtaW5CYWNrZW5kQ2xp ZW50IGNsaWVudCkgewogIAkJSlBvcHVwTWVudSBtZW51ID0gbmV3IEpQb3B1 cE1lbnUoKTsKICAKICAJCW1lbnUuYWRkKG5ldyBKTWVudUl0ZW0oQWRtaW5S ZXNvdXJjZXMuZ2V0U3RyaW5nKEFkbWluUmVzb3VyY2VzLk1FTlVfRFJPUF9S RVNUUklDVCkpKTsKSW5kZXg6IHNyYy9jb20vcmVkaGF0L3JoZGIvYWRtaW4v dHJlZS9Vc2VyTm9kZS5qYXZhCj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNT IGZpbGU6IC9jdnMvcmhkYi9zcmMvcmhkYi9ndWl0b29scy9yaGRiLWFkbWlu L3NyYy9jb20vcmVkaGF0L3JoZGIvYWRtaW4vdHJlZS9Vc2VyTm9kZS5qYXZh LHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjEuMS4xCmRpZmYgLWMgLXAgLXIx LjEuMS4xIFVzZXJOb2RlLmphdmEKKioqIHNyYy9jb20vcmVkaGF0L3JoZGIv YWRtaW4vdHJlZS9Vc2VyTm9kZS5qYXZhCTIxIE5vdiAyMDAzIDE4OjMwOjI4 IC0wMDAwCTEuMS4xLjEKLS0tIHNyYy9jb20vcmVkaGF0L3JoZGIvYWRtaW4v dHJlZS9Vc2VyTm9kZS5qYXZhCTIyIERlYyAyMDAzIDE5OjMxOjA5IC0wMDAw CioqKioqKioqKioqKioqKiBwdWJsaWMgY2xhc3MgVXNlck5vZGUgZXh0ZW5k cyBBZG1pbkdlbmVyCioqKiA5OSwxMTcgKioqKgogIAkJCQogIAkJCVNldFZh cmlhYmxlRGlhbG9nIHN2ZCA9IG5ldyBTZXRWYXJpYWJsZURpYWxvZyhkb2Nr V2luZG93LCB0aGlzLCBjbGllbnQpOwogIAkJCXN2ZC5zaG93KCk7CiAgCQl9 CiAgCX0KICAKICAJLyoqCiAgCSAqIFJldHVybnMgdGhlIHBvcHVwLW1lbnUg Zm9yIHRoaXMgbm9kZQogIAkgKgogIAkgKiBAcmV0dXJuIHRoZSBwb3B1cCBt ZW51IGZvciB0aGlzIG5vZGUKICAJICovCiAgCQohIAlwdWJsaWMgSlBvcHVw TWVudSBnZXROb2RlTWVudSgpIHsKICAJCUpQb3B1cE1lbnUgbWVudSA9IG5l dyBKUG9wdXBNZW51KCk7CiAgCQkKICAJCW1lbnUuYWRkKG5ldyBKTWVudUl0 ZW0oQWRtaW5SZXNvdXJjZXMuZ2V0U3RyaW5nKEFkbWluUmVzb3VyY2VzLk1F TlVfRFJPUF9VU0VSKSkpOwogIAkJCiAgCQlKTWVudSBhbHRlclN1Yk1lbnUg PSBuZXcgSk1lbnUoQWRtaW5SZXNvdXJjZXMuZ2V0U3RyaW5nKEFkbWluUmVz b3VyY2VzLk1FTlVfQUxURVJfVVNFUikpOwogIAkJYWx0ZXJTdWJNZW51LmFk ZChuZXcgSk1lbnVJdGVtKEFkbWluUmVzb3VyY2VzLmdldFN0cmluZyhBZG1p blJlc291cmNlcy5NRU5VX0FMVEVSX1VTRVJfQVRUUklCVVRFUykpKTsKLS0t IDk5LDE0MSAtLS0tCiAgCQkJCiAgCQkJU2V0VmFyaWFibGVEaWFsb2cgc3Zk ID0gbmV3IFNldFZhcmlhYmxlRGlhbG9nKGRvY2tXaW5kb3csIHRoaXMsIGNs aWVudCk7CiAgCQkJc3ZkLnNob3coKTsKKyAJCX0gZWxzZSBpZiAoc2VsZWN0 ZWRNZW51Q2FwdGlvbiA9PSBBZG1pblJlc291cmNlcy5nZXRTdHJpbmcoQWRt aW5SZXNvdXJjZXMuTUVOVV9SRU5BTUVfVVNFUikpIHsKKyAJCQlSZW5hbWVE aWFsb2cgcmQgPSBuZXcgUmVuYW1lRGlhbG9nKGRvY2tXaW5kb3csIHRoaXMs IGNsaWVudCwgdGhpcy5nZXROb2RlVHlwZSgpKTsKKyAJCQlyZC5zaG93KCk7 CiAgCQl9CiAgCX0KICAKICAJLyoqCiAgCSAqIFJldHVybnMgdGhlIHBvcHVw LW1lbnUgZm9yIHRoaXMgbm9kZQogIAkgKgorIAkgKiBAcGFyYW0gY2xpZW50 IENsaWVudCB0byB0aGUgYmFja2VuZAogIAkgKiBAcmV0dXJuIHRoZSBwb3B1 cCBtZW51IGZvciB0aGlzIG5vZGUKICAJICovCiAgCQohIAlwdWJsaWMgSlBv cHVwTWVudSBnZXROb2RlTWVudShBZG1pbkJhY2tlbmRDbGllbnQgY2xpZW50 KSB7CiAgCQlKUG9wdXBNZW51IG1lbnUgPSBuZXcgSlBvcHVwTWVudSgpOwog IAkJCisgCQkvLyBNZW51IGl0ZW1zIHRoYXQgdmFyeSBhY2NvcmRpbmcgdG8g YmFja2VuZAorIAkJCisgCQlKTWVudUl0ZW0gam1pUmVuYW1lID0gbmV3IEpN ZW51SXRlbSgpOworIAkJam1pUmVuYW1lLnNldFRleHQoQWRtaW5SZXNvdXJj ZXMuZ2V0U3RyaW5nKEFkbWluUmVzb3VyY2VzLk1FTlVfUkVOQU1FX1VTRVIp KTsKKyAJCWptaVJlbmFtZS5zZXRFbmFibGVkKGZhbHNlKTsKKyAJCQorIAkJ dHJ5IHsKKyAJCQkKKyAJCQkvLyBGb3IgYSBjb25zaXN0ZW50IGxvb2ssIGlm IGl0ZW0gaXMgbm90IGF2YWlsYWJsZSBvbiB0aGlzIHZlcnNpb24sIAorIAkJ CS8vIHdlIHdpbGwgZGlzYWJsZSBpdCwgYnV0IHN0aWxsIHNob3cgaXQKKyAK KyAJCQlpZiAoY2xpZW50LmdldEJhY2tlbmRWZXJzaW9uKHRoaXMuZ2V0UGFy ZW50Q2x1c3Rlck5hbWUoKSkgPiA3LjMpIHsKKyAJCQkJIGptaVJlbmFtZS5z ZXRFbmFibGVkKHRydWUpOworIAkJCX0KKyAKKyAJCX0gY2F0Y2ggKEV4Y2Vw dGlvbiBlKSB7CisgCQkJLy8gTm90aGluZy4uIGVsZW1lbnQgd2lsbCByZW1h aW4gZGlzYWJsZWQKKyAJCX0KKyAJCQogIAkJbWVudS5hZGQobmV3IEpNZW51 SXRlbShBZG1pblJlc291cmNlcy5nZXRTdHJpbmcoQWRtaW5SZXNvdXJjZXMu TUVOVV9EUk9QX1VTRVIpKSk7CisgCQltZW51LmFkZChqbWlSZW5hbWUpOwog IAkJCiAgCQlKTWVudSBhbHRlclN1Yk1lbnUgPSBuZXcgSk1lbnUoQWRtaW5S ZXNvdXJjZXMuZ2V0U3RyaW5nKEFkbWluUmVzb3VyY2VzLk1FTlVfQUxURVJf VVNFUikpOwogIAkJYWx0ZXJTdWJNZW51LmFkZChuZXcgSk1lbnVJdGVtKEFk bWluUmVzb3VyY2VzLmdldFN0cmluZyhBZG1pblJlc291cmNlcy5NRU5VX0FM VEVSX1VTRVJfQVRUUklCVVRFUykpKTsKSW5kZXg6IHNyYy9jb20vcmVkaGF0 L3JoZGIvYWRtaW4vdHJlZS9Vc2Vyc0hlYWRlck5vZGUuamF2YQo9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3JoZGIvc3JjL3JoZGIv Z3VpdG9vbHMvcmhkYi1hZG1pbi9zcmMvY29tL3JlZGhhdC9yaGRiL2FkbWlu L3RyZWUvVXNlcnNIZWFkZXJOb2RlLmphdmEsdgpyZXRyaWV2aW5nIHJldmlz aW9uIDEuMS4xLjEKZGlmZiAtYyAtcCAtcjEuMS4xLjEgVXNlcnNIZWFkZXJO b2RlLmphdmEKKioqIHNyYy9jb20vcmVkaGF0L3JoZGIvYWRtaW4vdHJlZS9V c2Vyc0hlYWRlck5vZGUuamF2YQkyMSBOb3YgMjAwMyAxODozMDoyOCAtMDAw MAkxLjEuMS4xCi0tLSBzcmMvY29tL3JlZGhhdC9yaGRiL2FkbWluL3RyZWUv VXNlcnNIZWFkZXJOb2RlLmphdmEJMjIgRGVjIDIwMDMgMTk6MzE6MDkgLTAw MDAKKioqKioqKioqKioqKioqIHB1YmxpYyBjbGFzcyBVc2Vyc0hlYWRlck5v ZGUgZXh0ZW5kcyBBZG0KKioqIDEwMCwxMDkgKioqKgogIAkvKioKICAJICog UmV0dXJucyB0aGUgcG9wdXAtbWVudSBmb3IgdGhpcyBub2RlCiAgCSAqCiAg CSAqIEByZXR1cm4gdGhlIHBvcHVwIG1lbnUgZm9yIHRoaXMgbm9kZQogIAkg Ki8KICAJCiEgCXB1YmxpYyBKUG9wdXBNZW51IGdldE5vZGVNZW51KCkgewog IAkJSlBvcHVwTWVudSBtZW51ID0gbmV3IEpQb3B1cE1lbnUoKTsKICAKICAJ CW1lbnUuYWRkKG5ldyBKTWVudUl0ZW0oQWRtaW5SZXNvdXJjZXMuZ2V0U3Ry aW5nKEFkbWluUmVzb3VyY2VzLk1FTlVfQ1JFQVRFX1VTRVIpKSk7Ci0tLSAx MDAsMTEwIC0tLS0KICAJLyoqCiAgCSAqIFJldHVybnMgdGhlIHBvcHVwLW1l bnUgZm9yIHRoaXMgbm9kZQogIAkgKgorIAkgKiBAcGFyYW0gY2xpZW50IENs aWVudCB0byB0aGUgYmFja2VuZAogIAkgKiBAcmV0dXJuIHRoZSBwb3B1cCBt ZW51IGZvciB0aGlzIG5vZGUKICAJICovCiAgCQohIAlwdWJsaWMgSlBvcHVw TWVudSBnZXROb2RlTWVudShBZG1pbkJhY2tlbmRDbGllbnQgY2xpZW50KSB7 CiAgCQlKUG9wdXBNZW51IG1lbnUgPSBuZXcgSlBvcHVwTWVudSgpOwogIAog IAkJbWVudS5hZGQobmV3IEpNZW51SXRlbShBZG1pblJlc291cmNlcy5nZXRT dHJpbmcoQWRtaW5SZXNvdXJjZXMuTUVOVV9DUkVBVEVfVVNFUikpKTsKSW5k ZXg6IHNyYy9jb20vcmVkaGF0L3JoZGIvYWRtaW4vdHJlZS9WaWV3Tm9kZS5q YXZhCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcmhk Yi9zcmMvcmhkYi9ndWl0b29scy9yaGRiLWFkbWluL3NyYy9jb20vcmVkaGF0 L3JoZGIvYWRtaW4vdHJlZS9WaWV3Tm9kZS5qYXZhLHYKcmV0cmlldmluZyBy ZXZpc2lvbiAxLjEuMS4xCmRpZmYgLWMgLXAgLXIxLjEuMS4xIFZpZXdOb2Rl LmphdmEKKioqIHNyYy9jb20vcmVkaGF0L3JoZGIvYWRtaW4vdHJlZS9WaWV3 Tm9kZS5qYXZhCTIxIE5vdiAyMDAzIDE4OjMwOjI4IC0wMDAwCTEuMS4xLjEK LS0tIHNyYy9jb20vcmVkaGF0L3JoZGIvYWRtaW4vdHJlZS9WaWV3Tm9kZS5q YXZhCTIyIERlYyAyMDAzIDE5OjMxOjA5IC0wMDAwCioqKioqKioqKioqKioq KiBwdWJsaWMgY2xhc3MgVmlld05vZGUgZXh0ZW5kcyBBZG1pbkdlbmVyCioq KiAxOTMsMjAyICoqKioKICAJLyoqCiAgCSAqIFJldHVybnMgdGhlIHBvcHVw LW1lbnUgZm9yIHRoaXMgbm9kZQogIAkgKgogIAkgKiBAcmV0dXJuIHRoZSBw b3B1cCBtZW51IGZvciB0aGlzIG5vZGUKICAJICovCiAgCQohIAlwdWJsaWMg SlBvcHVwTWVudSBnZXROb2RlTWVudSgpIHsKICAKICAJCUpQb3B1cE1lbnUg bWVudSA9IG5ldyBKUG9wdXBNZW51KCk7CiAgCi0tLSAxOTMsMjAzIC0tLS0K ICAJLyoqCiAgCSAqIFJldHVybnMgdGhlIHBvcHVwLW1lbnUgZm9yIHRoaXMg bm9kZQogIAkgKgorIAkgKiBAcGFyYW0gY2xpZW50IENsaWVudCB0byB0aGUg YmFja2VuZAogIAkgKiBAcmV0dXJuIHRoZSBwb3B1cCBtZW51IGZvciB0aGlz IG5vZGUKICAJICovCiAgCQohIAlwdWJsaWMgSlBvcHVwTWVudSBnZXROb2Rl TWVudShBZG1pbkJhY2tlbmRDbGllbnQgY2xpZW50KSB7CiAgCiAgCQlKUG9w dXBNZW51IG1lbnUgPSBuZXcgSlBvcHVwTWVudSgpOwogIApJbmRleDogc3Jj L2NvbS9yZWRoYXQvcmhkYi9hZG1pbi90cmVlL1ZpZXdzSGVhZGVyTm9kZS5q YXZhCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcmhk Yi9zcmMvcmhkYi9ndWl0b29scy9yaGRiLWFkbWluL3NyYy9jb20vcmVkaGF0 L3JoZGIvYWRtaW4vdHJlZS9WaWV3c0hlYWRlck5vZGUuamF2YSx2CnJldHJp ZXZpbmcgcmV2aXNpb24gMS4xLjEuMQpkaWZmIC1jIC1wIC1yMS4xLjEuMSBW aWV3c0hlYWRlck5vZGUuamF2YQoqKiogc3JjL2NvbS9yZWRoYXQvcmhkYi9h ZG1pbi90cmVlL1ZpZXdzSGVhZGVyTm9kZS5qYXZhCTIxIE5vdiAyMDAzIDE4 OjMwOjI4IC0wMDAwCTEuMS4xLjEKLS0tIHNyYy9jb20vcmVkaGF0L3JoZGIv YWRtaW4vdHJlZS9WaWV3c0hlYWRlck5vZGUuamF2YQkyMiBEZWMgMjAwMyAx OTozMTowOSAtMDAwMAoqKioqKioqKioqKioqKiogcHVibGljIGNsYXNzIFZp ZXdzSGVhZGVyTm9kZSBleHRlbmRzIEFkbQoqKiogMTAxLDExMCAqKioqCiAg CS8qKgogIAkgKiBSZXR1cm5zIHRoZSBwb3B1cC1tZW51IGZvciB0aGlzIG5v ZGUKICAJICoKICAJICogQHJldHVybiB0aGUgcG9wdXAgbWVudSBmb3IgdGhp cyBub2RlCiAgCSAqLwogIAkKISAJcHVibGljIEpQb3B1cE1lbnUgZ2V0Tm9k ZU1lbnUoKSB7CiAgCiAgCQlKUG9wdXBNZW51IG1lbnUgPSBuZXcgSlBvcHVw TWVudSgpOwogIAotLS0gMTAxLDExMSAtLS0tCiAgCS8qKgogIAkgKiBSZXR1 cm5zIHRoZSBwb3B1cC1tZW51IGZvciB0aGlzIG5vZGUKICAJICoKKyAJICog QHBhcmFtIGNsaWVudCBDbGllbnQgdG8gdGhlIGJhY2tlbmQKICAJICogQHJl dHVybiB0aGUgcG9wdXAgbWVudSBmb3IgdGhpcyBub2RlCiAgCSAqLwogIAkK ISAJcHVibGljIEpQb3B1cE1lbnUgZ2V0Tm9kZU1lbnUoQWRtaW5CYWNrZW5k Q2xpZW50IGNsaWVudCkgewogIAogIAkJSlBvcHVwTWVudSBtZW51ID0gbmV3 IEpQb3B1cE1lbnUoKTsKICAK --0-1902587908-1072122559=:66149--