Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1aoAuE-0000Y1-0J for pgadmin-hackers@arkaria.postgresql.org; Thu, 07 Apr 2016 14:27:34 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84_2) (envelope-from ) id 1aoAuD-0002Ta-Il for pgadmin-hackers@arkaria.postgresql.org; Thu, 07 Apr 2016 14:27:33 +0000 Received: from makus.postgresql.org ([2001:4800:1501:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1aoAuA-0002Jy-5M for pgadmin-hackers@postgresql.org; Thu, 07 Apr 2016 14:27:30 +0000 Received: from mail-vk0-x233.google.com ([2607:f8b0:400c:c05::233]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.84_2) (envelope-from ) id 1aoAu3-0003Sx-DJ for pgadmin-hackers@postgresql.org; Thu, 07 Apr 2016 14:27:29 +0000 Received: by mail-vk0-x233.google.com with SMTP id t129so14796440vkg.2 for ; Thu, 07 Apr 2016 07:27:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb-com.20150623.gappssmtp.com; s=20150623; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc; bh=oNnRilHKBafvVvPpDrBY0amHi1V/FbokXZABeectmjA=; b=1VWEa3eMhBGJqQiD3+EF3gcr/swLRQG6lNs6p66LCTTVgRRwXznMhkcCx7mybVZYSL Gj8e3Z0tnzsW0thpRzHzhuaVx3245kSrbOYpqJzwFeWsWp0sGmI+wXEd+rklbB5ToaGW X6rjHPv4RC/dgFQ6UogbcKgHX56MePvVVgOFkXybvLgehUItOGJuxl/RSOGYW32Irl8B U5KWPt5cNWH7/AfD7F+Qb7ymdod6aYxks09Q0/t+avhJUzU+VH+3Cjy+DD4mH3djaEel zk93Wh6OVBQSER6uDWfGCcmV6ipdu1KMgc7l0e7TaItuVDXMESTXBFqYdfgK1J2iKEBi 6rPg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc; bh=oNnRilHKBafvVvPpDrBY0amHi1V/FbokXZABeectmjA=; b=Ei80XJCRCr8GFLXM/HzZG+f4Bvoo7Ytv97dPnQKjOppv8ISNvqbSYWa1SuHHpM0fgr NjTo7DZqvoWNEMmVuMwjSPu/QQ1ZxLrj/uVxcqH+kJZbwpP6qhpbLL3hEnBS5RUnJW28 j5l2x18YXL5nofJ08qlCUNtpPpuadhovhrEhsvGKWGhQm0dvvWv7I2iCdJDAQHu9v4/o VIf18XsLgXSDhLmdA8lfgT5Q1DAefxWwjX04deuQg3Lop5Z7aH6Usxadyxw4HQBMVecT HlbRryOllERWUS47PIuENxPRNigFE4YCXlffirYb4w4H5+gSJYumFMBO/f3ODHzt5Fqs 5IJg== X-Gm-Message-State: AD7BkJLCZr5uFmD/TioAaaogQOhnp4HAF3oSxffeV7S26+KXSAikXlzWRFBgdbFZyDk02v+pun15y0M67jq8gwoX MIME-Version: 1.0 X-Received: by 10.31.147.82 with SMTP id v79mr1355119vkd.58.1460039242161; Thu, 07 Apr 2016 07:27:22 -0700 (PDT) Received: by 10.31.164.75 with HTTP; Thu, 7 Apr 2016 07:27:22 -0700 (PDT) In-Reply-To: References: Date: Thu, 7 Apr 2016 19:57:22 +0530 Message-ID: Subject: Re: PATCH: pgadmin 4: FTS Parser From: Sanket Mehta To: Ashesh Vashi Cc: pgadmin-hackers Content-Type: multipart/mixed; boundary=001a1141dca2634bed052fe5e064 X-Pg-Spam-Score: -2.6 (--) List-Archive: List-Help: List-ID: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-Mailing-List: pgadmin-hackers Precedence: bulk Sender: pgadmin-hackers-owner@postgresql.org --001a1141dca2634bed052fe5e064 Content-Type: multipart/alternative; boundary=001a1141dca2634be7052fe5e062 --001a1141dca2634be7052fe5e062 Content-Type: text/plain; charset=UTF-8 Hi, PFA the revised patch. response is inline. Please do review the patch and revert with comments if any. Regards, Sanket Mehta Sr Software engineer Enterprisedb On Mon, Apr 4, 2016 at 1:24 PM, Ashesh Vashi wrote: > On Mon, Mar 28, 2016 at 2:32 PM, Sanket Mehta < > sanket.mehta@enterprisedb.com> wrote: > >> Hi, >> >> PFA the patch for FTS parser node for review. >> Please do review it and provide the comments. >> > Hi Sanket, > > Thanks for the patch. > Please find my review comments. > > * 'current_app' has been imported but not used. > Fixed (it is used now for logging) * Few variables are assigned, but not used further. > one of the example: "res = []" (fts_parser/__init__py line#271 > Unused variables are removed * 'gone' is used, but - not imported. > Fixed * Do not require __init__(...) function in the 'FtsParserModule' class, as > it does not do anything here. > Removed * Load the module with the database (not, schema), as it may be require to > show in dependencies list in the database. > Fixed > * Some of the lines/comments are going beyond the line length limit (i.e. > more than 80 character per length). > Fixed * Please add comments for all the methods in FtsParserView. > Fixed * Do not need the URL routes for get_start, get_token, get_token, > get_headline with id, as it does not use the fts parse id. Declare these > URL-routes without id for these methods. > Fixed * Create separate templates for each methods instead of club them together > for the above methods. > Ignored as discussed with Ashesh. * HTTP method GET implies for getting/fetching the information/data from > the server. Please remove the 'get_' from the above methods, > Fixed > * Inline comments for __init__ method (FtsParserView class) is missing. > Fixed * Do not need to override the 'module_js' method, it has already been > implemented in PGChildNodeView class. > Fixed * Please fix the correctness of the comments for all the methods. Avoid > copy/paste from other modules. > Fixed * Check for the version before setting the template_path variable in > check_precondition method is not required. > Ignored as per discussion with Ashesh. * Check the existence of the node/object before assuming, it is available > (otherwise - return with 'gone') in node, and properties method. SQL may > not fail, but - no of records returned will be 0 (zero). > Fixed > * Please test the module on Python 3 too. > Fixed * Use generate_browser_node from the 'update' method after successful > operation, while generating the result. > Fixed * Do not catch exception (if not required) (i.e. in 'update' method, you > will not be able to catch the actual issue in that case). Please remove all > unwanted exceptions. > Fixed > * Log the exception with the application, whenever we catch them. > Fixed > > Note: > I've not yet tested the patch. > These are the review comments from the python code only. > You may also want to look at the javascript module before sending for > review again. > (i.e. code should be wrapped after the line #79.) > Fixed > > -- > > Thanks & Regards, > > Ashesh Vashi > EnterpriseDB INDIA: Enterprise PostgreSQL Company > > > > *http://www.linkedin.com/in/asheshvashi* > > > >> Regards, >> Sanket Mehta >> Sr Software engineer >> Enterprisedb >> >> >> -- >> Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org) >> To make changes to your subscription: >> http://www.postgresql.org/mailpref/pgadmin-hackers >> >> > --001a1141dca2634be7052fe5e062 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Hi,

PFA the revised patch.
re= sponse is inline.

Please do review the patch and r= evert with comments if any.



Regards,
= Sanket Mehta
Sr Software engineer
Enterprisedb

On Mon, Apr 4, 2016 at 1:24 PM, Ashesh Vashi= <ashesh.vashi@enterprisedb.com> wrote:

On = Mon, Mar 28, 2016 at 2:32 PM, Sanket Mehta <sanket.mehta@enter= prisedb.com> wrote:

Hi,
PFA the patch for FTS parser node for review.
Please = do review it and provide the comments.
= Hi Sanket,

Thanks for the patch.
Please = find my review comments.

* 'current_app' has been imported but not used.
Fixed (it is used now fo= r logging)

* Few variables are assigned, but not used further.= =C2=A0
=C2=A0 one of the example: "res =3D = []" (fts_parser/__init__py line#271
Unused variables are removed

* 'gone' is us= ed, but - not imported.
Fixed

* Do not require __init__(...) function in the 'FtsParse= rModule' class, as it does not do anything here.
Removed=C2=A0

* Load the module with th= e database (not, schema), as it may be require to show in dependencies list= in the database.
Fix= ed
=C2=A0
* Some of the lines/comments are going beyond the line length limi= t (i.e. more than 80 character per length).
<= /div>
Fixed=C2=A0

* Please add comments for all the me= thods in=C2=A0FtsParserView.
Fixed=C2=A0

<= div class=3D"gmail_extra">
* Do not need the URL routes for get_start, get_t= oken, get_token, get_headline with id,=C2=A0as it does not use the fts pars= e id.=C2=A0Declare these URL-routes without id=C2=A0=C2=A0for these methods= .
Fixed=C2=A0

<= div class=3D"gmail_quote">
* C= reate separate templates for each methods instead of club them together for= the above methods.
I= gnored as discussed with Ashesh.=C2=A0

* HTTP method=C2=A0GET implies f= or getting/fetching the information/data from the server. Please=C2=A0remov= e the 'get_' from the above methods,
=
Fixed
=C2=A0
= * Inline comments for __init__ method (= FtsParserView class) is missing.
Fixed=C2=A0

* Do not need to override the 'module_js= 9; method, it has already been implemented in PGChildNodeView class.=
Fixed

<= blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-l= eft-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;pa= dding-left:1ex">
* Please fix the = correctness of the comments for all the methods. Avoid copy/paste from othe= r modules.
Fixed

= * Check for the version before setting the template_path variable in check_= precondition method is not=C2=A0required.
Ignored as per discussion with Ashesh.=C2=A0

* Check the=C2=A0existenc= e=C2=A0of the node/object before assuming, it is available (otherwise - ret= urn with 'gone') in node, and properties method. SQL may not fail, = but - no of records returned will be 0 (zero).
Fixed
=C2=A0
* Please test the module on Python 3 = too.
Fixed
=
* Use = generate_browser_node from the 'update' method after successful ope= ration, while generating the result.
Fixed=C2=A0

* Do not catch exception (if not required= ) (i.e. in 'update' method, you will not be able to catch the actua= l issue in that case). Please remove all unwanted exceptions.
<= /div>
Fixed
=C2=A0
* Log the exception wi= th the application, whenever we catch them.
<= /div>
Fixed
=C2=A0
=C2=A0=
Note:
I've not yet tested the patch.
The= se are the review comments from the python code only.
You may als= o want to look at the javascript module before sending for review again.
(i.e. code should be wrapped after the line #79.)
=
Fixed=C2=A0


--001a1141dca2634be7052fe5e062-- --001a1141dca2634bed052fe5e064 Content-Type: text/x-patch; charset=US-ASCII; name="fts_parserv2.patch" Content-Disposition: attachment; filename="fts_parserv2.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_imqdnz390 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z0c19wYXJzZXIvX19pbml0 X18ucHkgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdHNfcGFyc2VyL19faW5pdF9fLnB5 Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmNjI1YjQK LS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdHNfcGFyc2Vy L19faW5pdF9fLnB5CkBAIC0wLDAgKzEsODU4IEBACisjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIworIworIyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FM IFRvb2xzCisjCisjIENvcHlyaWdodCAoQykgMjAxNiwgVGhlIHBnQWRtaW4g RGV2ZWxvcG1lbnQgVGVhbQorIyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2Vk IHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKyMKKyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjCisKKyIiIkRlZmluZXMgdmlld3MgZm9yIG1h bmFnZW1lbnQgb2YgRnRzIFBhcnNlciBub2RlIiIiCisKK2ltcG9ydCBqc29u Citmcm9tIGZsYXNrIGltcG9ydCByZW5kZXJfdGVtcGxhdGUsIHJlcXVlc3Qs IGpzb25pZnksIGN1cnJlbnRfYXBwCitmcm9tIGZsYXNrLmV4dC5iYWJlbCBp bXBvcnQgZ2V0dGV4dCBhcyBfCitmcm9tIHBnYWRtaW4udXRpbHMuYWpheCBp bXBvcnQgbWFrZV9qc29uX3Jlc3BvbnNlLCBcCisgICAgbWFrZV9yZXNwb25z ZSBhcyBhamF4X3Jlc3BvbnNlLCBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IKK2Zy b20gcGdhZG1pbi5icm93c2VyLnV0aWxzIGltcG9ydCBQR0NoaWxkTm9kZVZp ZXcKK2Zyb20gcGdhZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVy cy5kYXRhYmFzZXMuc2NoZW1hcy51dGlscyBpbXBvcnQgU2NoZW1hQ2hpbGRN b2R1bGUKK2Zyb20gcGdhZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2Vy dmVycy5kYXRhYmFzZXMgaW1wb3J0IERhdGFiYXNlTW9kdWxlCitmcm9tIHBn YWRtaW4udXRpbHMuYWpheCBpbXBvcnQgcHJlY29uZGl0aW9uX3JlcXVpcmVk Citmcm9tIHBnYWRtaW4udXRpbHMuZHJpdmVyIGltcG9ydCBnZXRfZHJpdmVy Citmcm9tIGNvbmZpZyBpbXBvcnQgUEdfREVGQVVMVF9EUklWRVIKK2Zyb20g ZnVuY3Rvb2xzIGltcG9ydCB3cmFwcworCisKK2NsYXNzIEZ0c1BhcnNlck1v ZHVsZShTY2hlbWFDaGlsZE1vZHVsZSk6CisgICAgIiIiCisgICAgIGNsYXNz IEZ0c1BhcnNlck1vZHVsZShTY2hlbWFDaGlsZE1vZHVsZSkKKworICAgICAg ICBBIG1vZHVsZSBjbGFzcyBmb3IgRlRTIFBhcnNlciBub2RlIGRlcml2ZWQg ZnJvbSBTY2hlbWFDaGlsZE1vZHVsZS4KKworICAgIE1ldGhvZHM6CisgICAg LS0tLS0tLQorICAgICogZ2V0X25vZGVzKGdpZCwgc2lkLCBkaWQsIHNjaWQp CisgICAgICAtIE1ldGhvZCBpcyB1c2VkIHRvIGdlbmVyYXRlIHRoZSBicm93 c2VyIGNvbGxlY3Rpb24gbm9kZS4KKworICAgICogbm9kZV9pbm9kZSgpCisg ICAgICAtIE1ldGhvZCBpcyBvdmVycmlkZGVuIGZyb20gaXRzIGJhc2UgY2xh c3MgdG8gbWFrZSB0aGUgbm9kZSBhcyBsZWFmIG5vZGUuCisKKyAgICAqIHNj cmlwdF9sb2FkKCkKKyAgICAgIC0gTG9hZCB0aGUgbW9kdWxlIHNjcmlwdCBm b3IgRlRTIFBhcnNlciwgd2hlbiBhbnkgb2YgdGhlIHNjaGVtYSBub2RlIGlz CisgICAgICAgIGluaXRpYWxpemVkLgorICAgICIiIgorICAgIE5PREVfVFlQ RSA9ICdmdHNfcGFyc2VyJworICAgIENPTExFQ1RJT05fTEFCRUwgPSBfKCdG VFMgUGFyc2VycycpCisKKyAgICBkZWYgZ2V0X25vZGVzKHNlbGYsIGdpZCwg c2lkLCBkaWQsIHNjaWQpOgorICAgICAgICAiIiIKKyAgICAgICAgR2VuZXJh dGUgdGhlIGNvbGxlY3Rpb24gbm9kZQorICAgICAgICA6cGFyYW0gZ2lkOiBn cm91cCBpZAorICAgICAgICA6cGFyYW0gc2lkOiBzZXJ2ZXIgaWQKKyAgICAg ICAgOnBhcmFtIGRpZDogZGF0YWJhc2UgaWQKKyAgICAgICAgOnBhcmFtIHNj aWQ6IHNjaGVtYSBpZAorICAgICAgICAiIiIKKyAgICAgICAgeWllbGQgc2Vs Zi5nZW5lcmF0ZV9icm93c2VyX2NvbGxlY3Rpb25fbm9kZShzY2lkKQorCisg ICAgQHByb3BlcnR5CisgICAgZGVmIG5vZGVfaW5vZGUoc2VsZik6CisgICAg ICAgICIiIgorICAgICAgICBPdmVycmlkZSB0aGUgcHJvcGVydHkgdG8gbWFr ZSB0aGUgbm9kZSBhcyBsZWFmIG5vZGUKKyAgICAgICAgIiIiCisgICAgICAg IHJldHVybiBGYWxzZQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHNjcmlw dF9sb2FkKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgTG9hZCB0aGUg bW9kdWxlIHNjcmlwdCBmb3IgZnRzIHRlbXBsYXRlLCB3aGVuIGFueSBvZiB0 aGUgc2NoZW1hIG5vZGUgaXMKKyAgICAgICAgaW5pdGlhbGl6ZWQuCisgICAg ICAgICIiIgorICAgICAgICByZXR1cm4gRGF0YWJhc2VNb2R1bGUuTk9ERV9U WVBFCisKKworYmx1ZXByaW50ID0gRnRzUGFyc2VyTW9kdWxlKF9fbmFtZV9f KQorCisKK2NsYXNzIEZ0c1BhcnNlclZpZXcoUEdDaGlsZE5vZGVWaWV3KToK KyAgICAiIiIKKyAgICBjbGFzcyBGdHNQYXJzZXJWaWV3KFBHQ2hpbGROb2Rl VmlldykKKworICAgICAgICBBIHZpZXcgY2xhc3MgZm9yIEZUUyBQYXJzZXIg bm9kZSBkZXJpdmVkIGZyb20gUEdDaGlsZE5vZGVWaWV3LgorICAgICAgICBU aGlzIGNsYXNzIGlzIHJlc3BvbnNpYmxlIGZvciBhbGwgdGhlIHN0dWZmIHJl bGF0ZWQgdG8gdmlldworICAgICAgICBsaWtlIGNyZWF0ZS91cGRhdGUvZGVs ZXRlIEZUUyBQYXJzZXIsIHNob3dpbmcgcHJvcGVydGllcyBvZiBub2RlLAor ICAgICAgICBzaG93aW5nIHNxbCBpbiBzcWwgcGFuZS4KKworICAgIE1ldGhv ZHM6CisgICAgLS0tLS0tLQorICAgICogX19pbml0X18oKiprd2FyZ3MpCisg ICAgICAtIE1ldGhvZCBpcyB1c2VkIHRvIGluaXRpYWxpemUgdGhlIEZ0c1Bh cnNlclZpZXcgYW5kIGl0J3MgYmFzZSB2aWV3LgorCisgICAgKiBtb2R1bGVf anMoKQorICAgICAgLSBUaGlzIHByb3BlcnR5IGRlZmluZXMgKGlmIGphdmFz Y3JpcHQpIGV4aXN0cyBmb3IgdGhpcyBub2RlLgorICAgICAgICBPdmVycmlk ZSB0aGlzIHByb3BlcnR5IGZvciB5b3VyIG93biBsb2dpYworCisgICAgKiBj aGVja19wcmVjb25kaXRpb24oKQorICAgICAgLSBUaGlzIGZ1bmN0aW9uIHdp bGwgYmVoYXZlIGFzIGEgZGVjb3JhdG9yIHdoaWNoIHdpbGwgY2hlY2tzCisg ICAgICAgIGRhdGFiYXNlIGNvbm5lY3Rpb24gYmVmb3JlIHJ1bm5pbmcgdmll dywgaXQgd2lsbCBhbHNvIGF0dGFjaGVzCisgICAgICAgIG1hbmFnZXIsY29u biAmIHRlbXBsYXRlX3BhdGggcHJvcGVydGllcyB0byBzZWxmCisKKyAgICAq IGxpc3QoKQorICAgICAgLSBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gbGlz dCBhbGwgdGhlICBub2RlcyB3aXRoaW4gdGhhdCBjb2xsZWN0aW9uLgorCisg ICAgKiBub2RlcygpCisgICAgICAtIFRoaXMgZnVuY3Rpb24gd2lsbCB1c2Vk IHRvIGNyZWF0ZSBhbGwgdGhlIGNoaWxkIG5vZGUgd2l0aGluIHRoYXQKKyAg ICAgICAgY29sbGVjdGlvbi4KKyAgICAgIC0gSGVyZSBpdCB3aWxsIGNyZWF0 ZSBhbGwgdGhlIEZUUyBQYXJzZXIgbm9kZXMuCisKKyAgICAqIHByb3BlcnRp ZXMoZ2lkLCBzaWQsIGRpZCwgc2NpZCwgcGlkKQorICAgICAgLSBUaGlzIGZ1 bmN0aW9uIHdpbGwgc2hvdyB0aGUgcHJvcGVydGllcyBvZiB0aGUgc2VsZWN0 ZWQgRlRTIFBhcnNlciBub2RlCisKKyAgICAqIGNyZWF0ZShnaWQsIHNpZCwg ZGlkLCBzY2lkKQorICAgICAgLSBUaGlzIGZ1bmN0aW9uIHdpbGwgY3JlYXRl IHRoZSBuZXcgRlRTIFBhcnNlciBvYmplY3QKKworICAgICogdXBkYXRlKGdp ZCwgc2lkLCBkaWQsIHNjaWQsIHBpZCkKKyAgICAgIC0gVGhpcyBmdW5jdGlv biB3aWxsIHVwZGF0ZSB0aGUgZGF0YSBmb3IgdGhlIHNlbGVjdGVkIEZUUyBQ YXJzZXIgbm9kZQorCisgICAgKiBkZWxldGUoc2VsZiwgZ2lkLCBzaWQsIGRp ZCwgc2NpZCwgcGlkKToKKyAgICAgIC0gVGhpcyBmdW5jdGlvbiB3aWxsIGRy b3AgdGhlIEZUUyBQYXJzZXIgb2JqZWN0CisKKyAgICAqIG1zcWwoZ2lkLCBz aWQsIGRpZCwgc2NpZCwgcGlkKQorICAgICAgLSBUaGlzIGZ1bmN0aW9uIGlz IHVzZWQgdG8gcmV0dXJuIG1vZGlmaWVkIFNRTCBmb3IKKyAgICAgICAgc2Vs ZWN0ZWQgRlRTIFBhcnNlciBub2RlCisKKyAgICAqIGdldF9zcWwoZGF0YSwg cGlkKQorICAgICAgLSBUaGlzIGZ1bmN0aW9uIHdpbGwgZ2VuZXJhdGUgc3Fs IGZyb20gbW9kZWwgZGF0YQorCisgICAgKiBnZXRfc3RhcnQoc2VsZiwgZ2lk LCBzaWQsIGRpZCwgc2NpZCwgcGlkKQorICAgICAgLSBUaGlzIGZ1bmN0aW9u IHdpbGwgZmV0Y2ggc3RhcnQgZnVuY3Rpb25zIGxpc3QgZm9yIGZ0cCBwYXJz ZXIKKworICAgICogZ2V0X3Rva2VuKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNj aWQsIHBpZCkKKyAgICAgIC0gVGhpcyBmdW5jdGlvbiB3aWxsIGZldGNoIHRv a2VuIGZ1bmN0aW9ucyBsaXN0IGZvciBmdHAgcGFyc2VyCisKKyAgICAqIGdl dF9lbmQoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgcGlkKQorICAgICAg LSBUaGlzIGZ1bmN0aW9uIHdpbGwgZmV0Y2ggZW5kIGZ1bmN0aW9ucyBsaXN0 IGZvciBmdHAgcGFyc2VyCisKKyAgICAqIGdldF9sZXh0eXBlKHNlbGYsIGdp ZCwgc2lkLCBkaWQsIHNjaWQsIHBpZCkKKyAgICAgIC0gVGhpcyBmdW5jdGlv biB3aWxsIGZldGNoIGxleHR5cGUgZnVuY3Rpb25zIGxpc3QgZm9yIGZ0cCBw YXJzZXIKKworICAgICogZ2V0X2hlYWRsaW5lKHNlbGYsIGdpZCwgc2lkLCBk aWQsIHNjaWQsIHBpZCkKKyAgICAgIC0gVGhpcyBmdW5jdGlvbiB3aWxsIGZl dGNoIGhlYWRsaW5lIGZ1bmN0aW9ucyBsaXN0IGZvciBmdHAgcGFyc2VyCisK KyAgICAqIHNxbChnaWQsIHNpZCwgZGlkLCBzY2lkLCBwaWQpOgorICAgICAg LSBUaGlzIGZ1bmN0aW9uIHdpbGwgZ2VuZXJhdGUgc3FsIHRvIHNob3cgaXQg aW4gc3FsIHBhbmUgZm9yIHRoZSBzZWxlY3RlZAorICAgICAgICBGVFMgUGFy c2VyIG5vZGUuCisKKyAgICAqIGdldF90eXBlKCk6CisgICAgICAtIFRoaXMg ZnVuY3Rpb24gd2lsbCBmZXRjaCBhbGwgdGhlIHR5cGVzIGZvciBzb3VyY2Ug YW5kCisgICAgICAgIHRhcmdldCB0eXBlcyBzZWxlY3QgY29udHJvbC4KKwor ICAgICogZGVwZW5kZW50cyhnaWQsIHNpZCwgZGlkLCBzY2lkLCBwaWQpOgor ICAgICAgLSBUaGlzIGZ1bmN0aW9uIGdldCB0aGUgZGVwZW5kZW50cyBhbmQg cmV0dXJuIGFqYXggcmVzcG9uc2UgZm9yCisgICAgICAgIEZ0cyBQYXJzZXIg bm9kZS4KKworICAgICogZGVwZW5kZW5jaWVzKHNlbGYsIGdpZCwgc2lkLCBk aWQsIHNjaWQsIHBpZCk6CisgICAgICAtIFRoaXMgZnVuY3Rpb24gZ2V0IHRo ZSBkZXBlbmRlbmNpZXMgYW5kIHJldHVybiBhamF4IHJlc3BvbnNlIGZvcgor ICAgICAgICBGVFMgUGFyc2VyIG5vZGUuCisKKyAgICAiIiIKKworICAgIG5v ZGVfdHlwZSA9IGJsdWVwcmludC5ub2RlX3R5cGUKKworICAgIHBhcmVudF9p ZHMgPSBbCisgICAgICAgIHsndHlwZSc6ICdpbnQnLCAnaWQnOiAnZ2lkJ30s CisgICAgICAgIHsndHlwZSc6ICdpbnQnLCAnaWQnOiAnc2lkJ30sCisgICAg ICAgIHsndHlwZSc6ICdpbnQnLCAnaWQnOiAnZGlkJ30sCisgICAgICAgIHsn dHlwZSc6ICdpbnQnLCAnaWQnOiAnc2NpZCd9CisgICAgXQorICAgIGlkcyA9 IFsKKyAgICAgICAgeyd0eXBlJzogJ2ludCcsICdpZCc6ICdwaWQnfQorICAg IF0KKworICAgIG9wZXJhdGlvbnMgPSBkaWN0KHsKKyAgICAgICAgJ29iaic6 IFsKKyAgICAgICAgICAgIHsnZ2V0JzogJ3Byb3BlcnRpZXMnLCAnZGVsZXRl JzogJ2RlbGV0ZScsICdwdXQnOiAndXBkYXRlJ30sCisgICAgICAgICAgICB7 J2dldCc6ICdsaXN0JywgJ3Bvc3QnOiAnY3JlYXRlJ30KKyAgICAgICAgXSwK KyAgICAgICAgJ2NoaWxkcmVuJzogW3sKKyAgICAgICAgICAgICdnZXQnOiAn Y2hpbGRyZW4nCisgICAgICAgIH1dLAorICAgICAgICAnZGVsZXRlJzogW3sn ZGVsZXRlJzogJ2RlbGV0ZSd9XSwKKyAgICAgICAgJ25vZGVzJzogW3snZ2V0 JzogJ25vZGUnfSwgeydnZXQnOiAnbm9kZXMnfV0sCisgICAgICAgICdzcWwn OiBbeydnZXQnOiAnc3FsJ31dLAorICAgICAgICAnbXNxbCc6IFt7J2dldCc6 ICdtc3FsJ30sIHsnZ2V0JzogJ21zcWwnfV0sCisgICAgICAgICdzdGF0cyc6 IFt7J2dldCc6ICdzdGF0aXN0aWNzJ31dLAorICAgICAgICAnZGVwZW5kZW5j eSc6IFt7J2dldCc6ICdkZXBlbmRlbmNpZXMnfV0sCisgICAgICAgICdkZXBl bmRlbnQnOiBbeydnZXQnOiAnZGVwZW5kZW50cyd9XSwKKyAgICAgICAgJ21v ZHVsZS5qcyc6IFt7fSwge30sIHsnZ2V0JzogJ21vZHVsZV9qcyd9XSwKKyAg ICAgICAgJ3N0YXJ0X2Z1bmN0aW9ucyc6IFt7J2dldCc6ICdzdGFydF9mdW5j dGlvbnMnfSwgeydnZXQnOiAnc3RhcnRfZnVuY3Rpb25zJ31dLAorICAgICAg ICAndG9rZW5fZnVuY3Rpb25zJzogW3snZ2V0JzogJ3Rva2VuX2Z1bmN0aW9u cyd9LCB7J2dldCc6ICd0b2tlbl9mdW5jdGlvbnMnfV0sCisgICAgICAgICdl bmRfZnVuY3Rpb25zJzogW3snZ2V0JzogJ2VuZF9mdW5jdGlvbnMnfSwgeydn ZXQnOiAnZW5kX2Z1bmN0aW9ucyd9XSwKKyAgICAgICAgJ2xleHR5cGVfZnVu Y3Rpb25zJzogW3snZ2V0JzogJ2xleHR5cGVfZnVuY3Rpb25zJ30sIHsnZ2V0 JzogJ2xleHR5cGVfZnVuY3Rpb25zJ31dLAorICAgICAgICAnaGVhZGxpbmVf ZnVuY3Rpb25zJzogW3snZ2V0JzogJ2hlYWRsaW5lX2Z1bmN0aW9ucyd9LCB7 J2dldCc6ICdoZWFkbGluZV9mdW5jdGlvbnMnfV0sCisgICAgfSkKKworICAg IGRlZiBfaW5pdF8oc2VsZiwgKiprd2FyZ3MpOgorICAgICAgICAiIiIKKyAg ICAgICAgTWV0aG9kIGlzIHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUgRnRzUGFy c2VyVmlldyBhbmQgaXQncyBiYXNlIHZpZXcuCisKKyAgICAgICAgQXJnczoK KyAgICAgICAgICAgICphcmdzOgorICAgICAgICAgICAgKiprd2FyZ3M6Cisg ICAgICAgICIiIgorICAgICAgICBzZWxmLmNvbm4gPSBOb25lCisgICAgICAg IHNlbGYudGVtcGxhdGVfcGF0aCA9IE5vbmUKKyAgICAgICAgc2VsZi5tYW5h Z2VyID0gTm9uZQorICAgICAgICBzdXBlcihGdHNQYXJzZXJWaWV3LCBzZWxm KS5fX2luaXRfXygqKmt3YXJncykKKworICAgIGRlZiBjaGVja19wcmVjb25k aXRpb24oZik6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9u IHdpbGwgYmVoYXZlIGFzIGEgZGVjb3JhdG9yIHdoaWNoIHdpbGwgY2hlY2tz CisgICAgICAgIGRhdGFiYXNlIGNvbm5lY3Rpb24gYmVmb3JlIHJ1bm5pbmcg dmlldywgaXQgd2lsbCBhbHNvIGF0dGFjaGVzCisgICAgICAgIG1hbmFnZXIs Y29ubiAmIHRlbXBsYXRlX3BhdGggcHJvcGVydGllcyB0byBzZWxmCisgICAg ICAgICIiIgorCisgICAgICAgIEB3cmFwcyhmKQorICAgICAgICBkZWYgd3Jh cCgqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAgICAgIyBIZXJlIGFyZ3Nb MF0gd2lsbCBob2xkIHNlbGYgJiBrd2FyZ3Mgd2lsbCBob2xkIGdpZCxzaWQs ZGlkCisgICAgICAgICAgICBzZWxmID0gYXJnc1swXQorICAgICAgICAgICAg c2VsZi5tYW5hZ2VyID0gZ2V0X2RyaXZlcihQR19ERUZBVUxUX0RSSVZFUiku Y29ubmVjdGlvbl9tYW5hZ2VyKAorICAgICAgICAgICAgICAgIGt3YXJnc1sn c2lkJ10pCisgICAgICAgICAgICBzZWxmLmNvbm4gPSBzZWxmLm1hbmFnZXIu Y29ubmVjdGlvbihkaWQ9a3dhcmdzWydkaWQnXSkKKyAgICAgICAgICAgICMg SWYgREIgbm90IGNvbm5lY3RlZCB0aGVuIHJldHVybiBlcnJvciB0byBicm93 c2VyCisgICAgICAgICAgICBpZiBub3Qgc2VsZi5jb25uLmNvbm5lY3RlZCgp OgorICAgICAgICAgICAgICAgIHJldHVybiBwcmVjb25kaXRpb25fcmVxdWly ZWQoCisgICAgICAgICAgICAgICAgICAgIF8oCisgICAgICAgICAgICAgICAg ICAgICAgICAiQ29ubmVjdGlvbiB0byB0aGUgc2VydmVyIGhhcyBiZWVuIGxv c3QhIgorICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAg KQorICAgICAgICAgICAgIyB3ZSB3aWxsIHNldCB0ZW1wbGF0ZSBwYXRoIGZv ciBzcWwgc2NyaXB0cyBkZXBlbmRpbmcgdXBvbiBzZXJ2ZXIgdmVyc2lvbgor ICAgICAgICAgICAgdmVyID0gc2VsZi5tYW5hZ2VyLnZlcnNpb24KKyAgICAg ICAgICAgIGlmIHZlciA+PSA5MDEwMDoKKyAgICAgICAgICAgICAgICBzZWxm LnRlbXBsYXRlX3BhdGggPSAnZnRzX3BhcnNlci9zcWwvOS4xX3BsdXMnCisg ICAgICAgICAgICByZXR1cm4gZigqYXJncywgKiprd2FyZ3MpCisKKyAgICAg ICAgcmV0dXJuIHdyYXAKKworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAg ICBkZWYgbGlzdChzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkKToKKyAgICAg ICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAgICAgICIv Ii5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdwcm9wZXJ0aWVzLnNxbCdd KSwKKyAgICAgICAgICAgICAgICBzY2lkPXNjaWQKKyAgICAgICAgICAgICAg KQorICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2Rp Y3Qoc3FsKQorCisgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAg ICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykK KworICAgICAgICByZXR1cm4gYWpheF9yZXNwb25zZSgKKyAgICAgICAgICAg IHJlc3BvbnNlPXJlc1sncm93cyddLAorICAgICAgICAgICAgc3RhdHVzPTIw MAorICAgICAgICApCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAg ZGVmIG5vZGVzKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQpOgorICAgICAg ICByZXMgPSBbXQorICAgICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoCisg ICAgICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwg J25vZGVzLnNxbCddKSwKKyAgICAgICAgICAgICAgICBzY2lkPXNjaWQKKyAg ICAgICAgICAgICAgKQorICAgICAgICBzdGF0dXMsIHJzZXQgPSBzZWxmLmNv bm4uZXhlY3V0ZV8yZGFycmF5KHNxbCkKKyAgICAgICAgaWYgbm90IHN0YXR1 czoKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3Io ZXJyb3Jtc2c9cnNldCkKKworICAgICAgICBmb3Igcm93IGluIHJzZXRbJ3Jv d3MnXToKKyAgICAgICAgICAgIHJlcy5hcHBlbmQoCisgICAgICAgICAgICAg ICAgc2VsZi5ibHVlcHJpbnQuZ2VuZXJhdGVfYnJvd3Nlcl9ub2RlKAorICAg ICAgICAgICAgICAgICAgICByb3dbJ29pZCddLAorICAgICAgICAgICAgICAg ICAgICBkaWQsCisgICAgICAgICAgICAgICAgICAgIHJvd1snbmFtZSddLAor ICAgICAgICAgICAgICAgICAgICBpY29uPSJpY29uLWZ0c19wYXJzZXIiCisg ICAgICAgICAgICAgICAgKSkKKworICAgICAgICByZXR1cm4gbWFrZV9qc29u X3Jlc3BvbnNlKAorICAgICAgICAgICAgZGF0YT1yZXMsCisgICAgICAgICAg ICBzdGF0dXM9MjAwCisgICAgICAgICkKKworICAgIEBjaGVja19wcmVjb25k aXRpb24KKyAgICBkZWYgbm9kZShzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lk LCBwaWQpOgorICAgICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoCisgICAg ICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ25v ZGVzLnNxbCddKSwKKyAgICAgICAgICAgICAgICBwaWQ9cGlkCisgICAgICAg ICAgICAgICkKKyAgICAgICAgc3RhdHVzLCByc2V0ID0gc2VsZi5jb25uLmV4 ZWN1dGVfMmRhcnJheShzcWwpCisgICAgICAgIGlmIG5vdCBzdGF0dXM6Cisg ICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9y bXNnPXJzZXQpCisKKyAgICAgICAgaWYgbGVuKHJzZXRbJ3Jvd3MnXSkgPT0g MDoKKyAgICAgICAgICAgIHJldHVybiBnb25lKF8oIiIiCisgICAgICAgICAg ICAgICAgQ291bGQgbm90IGZpbmQgdGhlIGZ0cyBwYXJzZXIgbm9kZS4KKyAg ICAgICAgICAgICAgICAiIiIpKQorCisgICAgICAgIGZvciByb3cgaW4gcnNl dFsncm93cyddOgorICAgICAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNw b25zZSgKKyAgICAgICAgICAgICAgICBkYXRhPXNlbGYuYmx1ZXByaW50Lmdl bmVyYXRlX2Jyb3dzZXJfbm9kZSgKKyAgICAgICAgICAgICAgICAgICAgICAg IHJvd1snb2lkJ10sCisgICAgICAgICAgICAgICAgICAgICAgICBkaWQsCisg ICAgICAgICAgICAgICAgICAgICAgICByb3dbJ25hbWUnXSwKKyAgICAgICAg ICAgICAgICAgICAgICAgIGljb249Imljb24tZnRzX3BhcnNlciIKKyAgICAg ICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICBzdGF0dXM9MjAw CisgICAgICAgICAgICApCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisg ICAgZGVmIHByb3BlcnRpZXMoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwg cGlkKToKKyAgICAgICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKAorICAgICAg ICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdwcm9w ZXJ0aWVzLnNxbCddKSwKKyAgICAgICAgICAgICAgICBzY2lkPXNjaWQsCisg ICAgICAgICAgICAgICAgcGlkPXBpZAorICAgICAgICAgICAgICApCisgICAg ICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChzcWwp CisKKyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVy biBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAg ICAgIGlmIGxlbihyZXNbJ3Jvd3MnXSkgPT0gMDoKKyAgICAgICAgICAgIHJl dHVybiBnb25lKF8oIiIiCisgICAgICAgICAgICAgICAgQ291bGQgbm90IGZp bmQgdGhlIGZ0cyBwYXJzZXIgbm9kZS4KKyAgICAgICAgICAgICAgICAiIiIp KQorCisgICAgICAgIHJldHVybiBhamF4X3Jlc3BvbnNlKAorICAgICAgICAg ICAgcmVzcG9uc2U9cmVzWydyb3dzJ11bMF0sCisgICAgICAgICAgICBzdGF0 dXM9MjAwCisgICAgICAgICkKKworICAgIEBjaGVja19wcmVjb25kaXRpb24K KyAgICBkZWYgY3JlYXRlKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQpOgor ICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIGNyZWF0 ZXMgbmV3IHRoZSBmdHNfcGFyc2VyIG9iamVjdAorICAgICAgICA6cGFyYW0g Z2lkOiBncm91cCBpZAorICAgICAgICA6cGFyYW0gc2lkOiBzZXJ2ZXIgaWQK KyAgICAgICAgOnBhcmFtIGRpZDogZGF0YWJhc2UgaWQKKyAgICAgICAgOnBh cmFtIHNjaWQ6IHNjaGVtYSBpZAorICAgICAgICAiIiIKKworICAgICAgICAj IE1hbmRhdG9yeSBmaWVsZHMgdG8gY3JlYXRlIGEgbmV3IGZ0cyBwYXJzZXIK KyAgICAgICAgcmVxdWlyZWRfYXJncyA9IFsKKyAgICAgICAgICAgICdwcnNz dGFydCcsCisgICAgICAgICAgICAncHJzdG9rZW4nLAorICAgICAgICAgICAg J3Byc2VuZCcsCisgICAgICAgICAgICAncHJzbGV4dHlwZScsCisgICAgICAg ICAgICAnc2NoZW1hJywKKyAgICAgICAgICAgICduYW1lJworICAgICAgICBd CisKKyAgICAgICAgZGF0YSA9IHJlcXVlc3QuZm9ybSBpZiByZXF1ZXN0LmZv cm0gZWxzZSBqc29uLmxvYWRzKAorICAgICAgICAgICAgcmVxdWVzdC5kYXRh LmRlY29kZSgpKQorICAgICAgICBmb3IgYXJnIGluIHJlcXVpcmVkX2FyZ3M6 CisgICAgICAgICAgICBpZiBhcmcgbm90IGluIGRhdGE6CisgICAgICAgICAg ICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAgICAg ICAgICAgICAgc3RhdHVzPTQxMCwKKyAgICAgICAgICAgICAgICAgICAgc3Vj Y2Vzcz0wLAorICAgICAgICAgICAgICAgICAgICBlcnJvcm1zZz1fKAorICAg ICAgICAgICAgICAgICAgICAgICAgIkNvdWxkbid0IGZpbmQgdGhlIHJlcXVp cmVkIHBhcmFtZXRlciAoJXMpLiIgJSBhcmcKKyAgICAgICAgICAgICAgICAg ICAgKQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgdHJ5OgorICAgICAg ICAgICAgIyBGZXRjaCBzY2hlbWEgbmFtZSBmcm9tIHNjaGVtYSBvaWQKKyAg ICAgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgICAg ICAgICAgICAgIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ3NjaGVt YS5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgIGRhdGE9ZGF0YSwKKyAg ICAgICAgICAgICAgICAgICAgY29ubj1zZWxmLmNvbm4sCisgICAgICAgICAg ICAgICAgICApCisKKyAgICAgICAgICAgIHN0YXR1cywgc2NoZW1hID0gc2Vs Zi5jb25uLmV4ZWN1dGVfc2NhbGFyKHNxbCkKKyAgICAgICAgICAgIGlmIG5v dCBzdGF0dXM6CisgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3Nl cnZlcl9lcnJvcihlcnJvcm1zZz1zY2hlbWEpCisKKyAgICAgICAgICAgICMg cmVwbGFjZSBzY2hlbWEgb2lkIHdpdGggc2NoZW1hIG5hbWUgYmVmb3JlIHBh c3NpbmcgdG8gY3JlYXRlLnNxbAorICAgICAgICAgICAgIyB0byBnZW5lcmF0 ZSBwcm9wZXIgc3FsIHF1ZXJ5CisgICAgICAgICAgICBuZXdfZGF0YSA9IGRh dGEuY29weSgpCisgICAgICAgICAgICBuZXdfZGF0YVsnc2NoZW1hJ10gPSBz Y2hlbWEKKyAgICAgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgKKyAg ICAgICAgICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0 aCwgJ2NyZWF0ZS5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgIGRhdGE9 bmV3X2RhdGEsCisgICAgICAgICAgICAgICAgICAgIGNvbm49c2VsZi5jb25u LAorICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgc3RhdHVzLCBy ZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9zY2FsYXIoc3FsKQorICAgICAgICAg ICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICByZXR1cm4gaW50 ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKworICAgICAgICAg ICAgIyB3ZSBuZWVkIGZ0c19wYXJzZXIgaWQgdG8gdG8gYWRkIG9iamVjdCBp biB0cmVlIGF0IGJyb3dzZXIsCisgICAgICAgICAgICAjIGJlbG93IHNxbCB3 aWxsIGdpdmUgdGhlIHNhbWUKKyAgICAgICAgICAgIHNxbCA9IHJlbmRlcl90 ZW1wbGF0ZSgKKyAgICAgICAgICAgICAgICAiLyIuam9pbihbc2VsZi50ZW1w bGF0ZV9wYXRoLCAncHJvcGVydGllcy5zcWwnXSksCisgICAgICAgICAgICAg ICAgbmFtZT1kYXRhWyduYW1lJ10KKyAgICAgICAgICAgICkKKyAgICAgICAg ICAgIHN0YXR1cywgcGlkID0gc2VsZi5jb25uLmV4ZWN1dGVfc2NhbGFyKHNx bCkKKyAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAg ICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1waWQp CisKKyAgICAgICAgICAgIHJldHVybiBqc29uaWZ5KAorICAgICAgICAgICAg ICAgIG5vZGU9c2VsZi5ibHVlcHJpbnQuZ2VuZXJhdGVfYnJvd3Nlcl9ub2Rl KAorICAgICAgICAgICAgICAgICAgICBwaWQsCisgICAgICAgICAgICAgICAg ICAgIGRpZCwKKyAgICAgICAgICAgICAgICAgICAgZGF0YVsnbmFtZSddLAor ICAgICAgICAgICAgICAgICAgICBpY29uPSJpY29uLWZ0c19wYXJzZXIiCisg ICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKQorICAgICAgICBleGNl cHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICBjdXJyZW50X2FwcC5s b2dnZXIuZXhjZXB0aW9uKGUpCisgICAgICAgICAgICByZXR1cm4gaW50ZXJu YWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXN0cihlKSkKKworICAgIEBjaGVj a19wcmVjb25kaXRpb24KKyAgICBkZWYgdXBkYXRlKHNlbGYsIGdpZCwgc2lk LCBkaWQsIHNjaWQsIHBpZCk6CisgICAgICAgICIiIgorICAgICAgICBUaGlz IGZ1bmN0aW9uIHdpbGwgdXBkYXRlIHRleHQgc2VhcmNoIHBhcnNlciBvYmpl Y3QKKyAgICAgICAgOnBhcmFtIGdpZDogZ3JvdXAgaWQKKyAgICAgICAgOnBh cmFtIHNpZDogc2VydmVyIGlkCisgICAgICAgIDpwYXJhbSBkaWQ6IGRhdGFi YXNlIGlkCisgICAgICAgIDpwYXJhbSBzY2lkOiBzY2hlbWEgaWQKKyAgICAg ICAgOnBhcmFtIHBpZDogZnRzIHBhcnNlciBpZAorICAgICAgICAiIiIKKyAg ICAgICAgZGF0YSA9IHJlcXVlc3QuZm9ybSBpZiByZXF1ZXN0LmZvcm0gZWxz ZSBqc29uLmxvYWRzKAorICAgICAgICAgICAgcmVxdWVzdC5kYXRhLmRlY29k ZSgpKQorCisgICAgICAgICMgRmV0Y2ggc3FsIHF1ZXJ5IHRvIHVwZGF0ZSBm dHMgcGFyc2VyCisgICAgICAgIHNxbCA9IHNlbGYuZ2V0X3NxbChnaWQsIHNp ZCwgZGlkLCBzY2lkLCBkYXRhLCBwaWQpCisgICAgICAgIGlmIHNxbCBhbmQg c3FsLnN0cmlwKCdcbicpIGFuZCBzcWwuc3RyaXAoJyAnKToKKyAgICAgICAg ICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfc2NhbGFyKHNx bCkKKyAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAg ICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMp CisKKyAgICAgICAgICAgIGlmIHBpZCBpcyBub3QgTm9uZToKKyAgICAgICAg ICAgICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAg ICAgICAgICAgICAiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAncHJv cGVydGllcy5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICBwaWQ9 cGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgc2NpZD1zY2lkCisgICAg ICAgICAgICAgICAgICAgICAgKQorCisgICAgICAgICAgICAgICAgc3RhdHVz LCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KHNxbCkKKyAgICAgICAg ICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgICAgICBy ZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKwor ICAgICAgICAgICAgICAgIGlmIGxlbihyZXNbJ3Jvd3MnXSkgPT0gMDoKKyAg ICAgICAgICAgICAgICAgICAgcmV0dXJuIGdvbmUoXygiIiIKKyAgICAgICAg ICAgICAgICAgICAgICAgIENvdWxkIG5vdCBmaW5kIHRoZSBmdHMgcGFyc2Vy IG5vZGUgdG8gdXBkYXRlLgorICAgICAgICAgICAgICAgICAgICAiIiIpKQor CisgICAgICAgICAgICAgICAgZGF0YSA9IHJlc1sncm93cyddWzBdCisgICAg ICAgICAgICAgICAgcmV0dXJuIGpzb25pZnkoCisgICAgICAgICAgICAgICAg ICAgICAgICBub2RlPXNlbGYuYmx1ZXByaW50LmdlbmVyYXRlX2Jyb3dzZXJf bm9kZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIHBpZCwKKyAgICAgICAg ICAgICAgICAgICAgICAgIGRpZCwKKyAgICAgICAgICAgICAgICAgICAgICAg IGRhdGFbJ25hbWUnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGljb249 Imljb24tZnRzX3BhcnNlciIKKyAgICAgICAgICAgICAgICAgICAgKQorICAg ICAgICAgICAgICAgICkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJl dHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAgICAgICAgICAgICAg IHN1Y2Nlc3M9MSwKKyAgICAgICAgICAgICAgICAgICAgaW5mbz0iTm90aGlu ZyB0byB1cGRhdGUiLAorICAgICAgICAgICAgICAgICAgICBkYXRhPXsKKyAg ICAgICAgICAgICAgICAgICAgICAgICdpZCc6ICAgcGlkLAorICAgICAgICAg ICAgICAgICAgICAgICAgJ3NjaWQnOiBzY2lkLAorICAgICAgICAgICAgICAg ICAgICAgICAgJ3NpZCc6ICBzaWQsCisgICAgICAgICAgICAgICAgICAgICAg ICAnZ2lkJzogIGdpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICdkaWQn OiAgZGlkCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg ICApCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVmIGRlbGV0 ZShzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCBwaWQpOgorICAgICAgICAi IiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIGRyb3AgdGhlIGZ0c19w YXJzZXIgb2JqZWN0CisgICAgICAgIDpwYXJhbSBnaWQ6IGdyb3VwIGlkCisg ICAgICAgIDpwYXJhbSBzaWQ6IHNlcnZlciBpZAorICAgICAgICA6cGFyYW0g ZGlkOiBkYXRhYmFzZSBpZAorICAgICAgICA6cGFyYW0gc2NpZDogc2NoZW1h IGlkCisgICAgICAgIDpwYXJhbSBwaWQ6IGZ0cyB0ZW1wYXRlIGlkCisgICAg ICAgICIiIgorICAgICAgICAjIEJlbG93IHdpbGwgZGVjaWRlIGlmIGl0J3Mg c2ltcGxlIGRyb3Agb3IgZHJvcCB3aXRoIGNhc2NhZGUgY2FsbAorICAgICAg ICBpZiBzZWxmLmNtZCA9PSAnZGVsZXRlJzoKKyAgICAgICAgICAgICMgVGhp cyBpcyBhIGNhc2NhZGUgb3BlcmF0aW9uCisgICAgICAgICAgICBjYXNjYWRl ID0gVHJ1ZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgY2FzY2FkZSA9 IEZhbHNlCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyBHZXQgbmFt ZSBmb3IgUGFyc2VyIGZyb20gcGlkCisgICAgICAgICAgICBzcWwgPSByZW5k ZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAgICAgICAgICIvIi5qb2luKFtz ZWxmLnRlbXBsYXRlX3BhdGgsICdkZWxldGUuc3FsJ10pLAorICAgICAgICAg ICAgICAgICAgICBwaWQ9cGlkCisgICAgICAgICAgICAgICAgICApCisgICAg ICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3Qo c3FsKQorICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAg ICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJl cykKKworICAgICAgICAgICAgaWYgbGVuKHJlc1sncm93cyddKSA9PSAwOgor ICAgICAgICAgICAgICAgIHJldHVybiBnb25lKF8oIiIiCisgICAgICAgICAg ICAgICAgICAgIENvdWxkIG5vdCBmaW5kIHRoZSBmdHMgcGFyc2VyIG5vZGUu CisgICAgICAgICAgICAgICAgICAgICIiIikpCisKKyAgICAgICAgICAgICMg RHJvcCBmdHMgUGFyc2VyCisgICAgICAgICAgICByZXN1bHQgPSByZXNbJ3Jv d3MnXVswXQorICAgICAgICAgICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKAor ICAgICAgICAgICAgICAgICAgICAiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9w YXRoLCAnZGVsZXRlLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgbmFt ZT1yZXN1bHRbJ25hbWUnXSwKKyAgICAgICAgICAgICAgICAgICAgc2NoZW1h PXJlc3VsdFsnc2NoZW1hJ10sCisgICAgICAgICAgICAgICAgICAgIGNhc2Nh ZGU9Y2FzY2FkZQorICAgICAgICAgICAgICAgICAgKQorCisgICAgICAgICAg ICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX3NjYWxhcihzcWwp CisgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAg IHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQor CisgICAgICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAg ICAgICAgICAgICAgIHN1Y2Nlc3M9MSwKKyAgICAgICAgICAgICAgICBpbmZv PV8oIkZUUyBQYXJzZXIgZHJvcHBlZCIpLAorICAgICAgICAgICAgICAgIGRh dGE9eworICAgICAgICAgICAgICAgICAgICAnaWQnOiBwaWQsCisgICAgICAg ICAgICAgICAgICAgICdzaWQnOiBzaWQsCisgICAgICAgICAgICAgICAgICAg ICdnaWQnOiBnaWQsCisgICAgICAgICAgICAgICAgICAgICdkaWQnOiBkaWQs CisgICAgICAgICAgICAgICAgICAgICdzY2lkJzogc2NpZAorICAgICAgICAg ICAgICAgIH0KKyAgICAgICAgICAgICkKKworICAgICAgICBleGNlcHQgRXhj ZXB0aW9uIGFzIGU6CisgICAgICAgICAgICBjdXJyZW50X2FwcC5sb2dnZXIu ZXhjZXB0aW9uKGUpCisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2Vy dmVyX2Vycm9yKGVycm9ybXNnPXN0cihlKSkKKworICAgIEBjaGVja19wcmVj b25kaXRpb24KKyAgICBkZWYgbXNxbChzZWxmLCBnaWQsIHNpZCwgZGlkLCBz Y2lkLCBwaWQ9Tm9uZSk6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1 bmN0aW9uIHJldHVybnMgbW9kaWZpZWQgU1FMCisgICAgICAgIDpwYXJhbSBn aWQ6IGdyb3VwIGlkCisgICAgICAgIDpwYXJhbSBzaWQ6IHNlcnZlciBpZAor ICAgICAgICA6cGFyYW0gZGlkOiBkYXRhYmFzZSBpZAorICAgICAgICA6cGFy YW0gc2NpZDogc2NoZW1hIGlkCisgICAgICAgIDpwYXJhbSBwaWQ6IGZ0cyB0 ZW1wYXRlIGlkCisgICAgICAgICIiIgorICAgICAgICBkYXRhID0gcmVxdWVz dC5hcmdzCisKKyAgICAgICAgIyBGZXRjaCBzcWwgcXVlcnkgZm9yIG1vZGlm aWVkIGRhdGEKKyAgICAgICAgc3FsID0gc2VsZi5nZXRfc3FsKGdpZCwgc2lk LCBkaWQsIHNjaWQsIGRhdGEsIHBpZCkKKworICAgICAgICBpZiBpc2luc3Rh bmNlKHNxbCwgc3RyKSBhbmQgc3FsIGFuZCBzcWwuc3RyaXAoJ1xuJykgYW5k IHNxbC5zdHJpcCgnICcpOgorICAgICAgICAgICAgcmV0dXJuIG1ha2VfanNv bl9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICBkYXRhPXNxbCwKKyAgICAg ICAgICAgICAgICBzdGF0dXM9MjAwCisgICAgICAgICAgICApCisgICAgICAg IGVsc2U6CisgICAgICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNl KAorICAgICAgICAgICAgICAgIGRhdGE9Ii0tbW9kaWZpZWQgU1FMIiwKKyAg ICAgICAgICAgICAgICBzdGF0dXM9MjAwCisgICAgICAgICAgICApCisKKyAg ICBkZWYgZ2V0X3NxbChzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCBkYXRh LCBwaWQ9Tm9uZSk6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0 aW9uIHdpbGwgcmV0dXJuIFNRTCBmb3IgbW9kZWwgZGF0YQorICAgICAgICA6 cGFyYW0gZ2lkOiBncm91cCBpZAorICAgICAgICA6cGFyYW0gc2lkOiBzZXJ2 ZXIgaWQKKyAgICAgICAgOnBhcmFtIGRpZDogZGF0YWJhc2UgaWQKKyAgICAg ICAgOnBhcmFtIHNjaWQ6IHNjaGVtYSBpZAorICAgICAgICA6cGFyYW0gcGlk OiBmdHMgdGVtcGF0ZSBpZAorICAgICAgICAiIiIKKyAgICAgICAgdHJ5Ogor ICAgICAgICAgICAgIyBGZXRjaCBzcWwgZm9yIHVwZGF0ZQorICAgICAgICAg ICAgaWYgcGlkIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHNxbCA9 IHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICIv Ii5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdwcm9wZXJ0aWVzLnNxbCdd KSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHBpZD1waWQsCisgICAgICAg ICAgICAgICAgICAgICAgICBzY2lkPXNjaWQKKyAgICAgICAgICAgICAgICAg ICAgICApCisKKyAgICAgICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYu Y29ubi5leGVjdXRlX2RpY3Qoc3FsKQorICAgICAgICAgICAgICAgIGlmIG5v dCBzdGF0dXM6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5h bF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgICAgICAg ICAgaWYgbGVuKHJlc1sncm93cyddKSA9PSAwOgorICAgICAgICAgICAgICAg ICAgICByZXR1cm4gZ29uZShfKCIiIgorICAgICAgICAgICAgICAgICAgICAg ICAgQ291bGQgbm90IGZpbmQgdGhlIGZ0cyBwYXJzZXIgbm9kZS4KKyAgICAg ICAgICAgICAgICAgICAgIiIiKSkKKworICAgICAgICAgICAgICAgIG9sZF9k YXRhID0gcmVzWydyb3dzJ11bMF0KKworICAgICAgICAgICAgICAgICMgSWYg dXNlciBoYXMgY2hhbmdlZCB0aGUgc2NoZW1hIHRoZW4gZmV0Y2ggbmV3IHNj aGVtYSBkaXJlY3RseQorICAgICAgICAgICAgICAgICMgdXNpbmcgaXRzIG9p ZCBvdGhlcndpc2UgZmV0Y2ggb2xkIHNjaGVtYSBuYW1lIHdpdGggcGFyc2Vy IG9pZAorICAgICAgICAgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgK KyAgICAgICAgICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVf cGF0aCwgJ3NjaGVtYS5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgIGRh dGE9ZGF0YSkKKworICAgICAgICAgICAgICAgIHN0YXR1cywgbmV3X3NjaGVt YSA9IHNlbGYuY29ubi5leGVjdXRlX3NjYWxhcihzcWwpCisgICAgICAgICAg ICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICAgICAgcmV0 dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1uZXdfc2NoZW1h KQorCisgICAgICAgICAgICAgICAgIyBSZXBsYWNlIHNjaGVtYSBvaWQgd2l0 aCBzY2hlbWEgbmFtZQorICAgICAgICAgICAgICAgIG5ld19kYXRhID0gZGF0 YS5jb3B5KCkKKyAgICAgICAgICAgICAgICBpZiAnc2NoZW1hJyBpbiBuZXdf ZGF0YToKKyAgICAgICAgICAgICAgICAgICAgbmV3X2RhdGFbJ3NjaGVtYSdd ID0gbmV3X3NjaGVtYQorCisgICAgICAgICAgICAgICAgIyBGZXRjaCBvbGQg c2NoZW1hIG5hbWUgdXNpbmcgb2xkIHNjaGVtYSBvaWQKKyAgICAgICAgICAg ICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAgICAg ICAgICAgICAiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAnc2NoZW1h LnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9b2xkX2Rh dGEKKyAgICAgICAgICAgICAgICAgICAgICApCisKKyAgICAgICAgICAgICAg ICBzdGF0dXMsIG9sZF9zY2hlbWEgPSBzZWxmLmNvbm4uZXhlY3V0ZV9zY2Fs YXIoc3FsKQorICAgICAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAg ICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3Io ZXJyb3Jtc2c9b2xkX3NjaGVtYSkKKworICAgICAgICAgICAgICAgICMgUmVw bGFjZSBvbGQgc2NoZW1hIG9pZCB3aXRoIG9sZCBzY2hlbWEgbmFtZQorICAg ICAgICAgICAgICAgIG9sZF9kYXRhWydzY2hlbWEnXSA9IG9sZF9zY2hlbWEK KworICAgICAgICAgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgKKyAg ICAgICAgICAgICAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRlbXBsYXRl X3BhdGgsICd1cGRhdGUuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAg ICAgZGF0YT1uZXdfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG9f ZGF0YT1vbGRfZGF0YQorICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAg ICAgICAgICAgICAjIEZldGNoIHNxbCBxdWVyeSBmb3IgbW9kaWZpZWQgZGF0 YQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAjIEZldGNo IHNjaGVtYSBuYW1lIGZyb20gc2NoZW1hIG9pZAorICAgICAgICAgICAgICAg IHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgICAgICAgICAgICAg ICAgICIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdzY2hlbWEuc3Fs J10pLAorICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1kYXRhCisgICAg ICAgICAgICAgICAgICAgICAgKQorCisgICAgICAgICAgICAgICAgc3RhdHVz LCBzY2hlbWEgPSBzZWxmLmNvbm4uZXhlY3V0ZV9zY2FsYXIoc3FsKQorICAg ICAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAg ICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c2No ZW1hKQorCisgICAgICAgICAgICAgICAgIyBSZXBsYWNlIHNjaGVtYSBvaWQg d2l0aCBzY2hlbWEgbmFtZQorICAgICAgICAgICAgICAgIG5ld19kYXRhID0g ZGF0YS5jb3B5KCkKKyAgICAgICAgICAgICAgICBuZXdfZGF0YVsnc2NoZW1h J10gPSBzY2hlbWEKKworICAgICAgICAgICAgICAgIGlmICdwcnNzdGFydCcg aW4gbmV3X2RhdGEgYW5kIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICdw cnN0b2tlbicgaW4gbmV3X2RhdGEgYW5kIFwKKyAgICAgICAgICAgICAgICAg ICAgICAgICdwcnNlbmQnIGluIG5ld19kYXRhIGFuZCBcCisgICAgICAgICAg ICAgICAgICAgICAgICAncHJzbGV4dHlwZScgaW4gbmV3X2RhdGEgYW5kIFwK KyAgICAgICAgICAgICAgICAgICAgICAgICduYW1lJyBpbiBuZXdfZGF0YSBh bmQgXAorICAgICAgICAgICAgICAgICAgICAgICAgJ3NjaGVtYScgaW4gbmV3 X2RhdGE6CisgICAgICAgICAgICAgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1w bGF0ZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLyIuam9pbihb c2VsZi50ZW1wbGF0ZV9wYXRoLCdjcmVhdGUuc3FsJ10pLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGRhdGE9bmV3X2RhdGEsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29ubj1zZWxmLmNvbm4KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAg ICAgICAgICAgICAgICAgIHNxbCA9ICItLSBpbmNvbXBsZXRlIGRlZmluaXRp b24iCisgICAgICAgICAgICByZXR1cm4gc3RyKHNxbC5zdHJpcCgnXG4nKSkK KworICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAg ICBjdXJyZW50X2FwcC5sb2dnZXIuZXhjZXB0aW9uKGUpCisgICAgICAgICAg ICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXN0cihl KSkKKworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgc3RhcnRf ZnVuY3Rpb25zKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQpOgorICAgICAg ICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIHJldHVybiBzdGFy dCBmdW5jdGlvbnMgbGlzdCBmb3IgZnRzIFBhcnNlcgorICAgICAgICA6cGFy YW0gZ2lkOiBncm91cCBpZAorICAgICAgICA6cGFyYW0gc2lkOiBzZXJ2ZXIg aWQKKyAgICAgICAgOnBhcmFtIGRpZDogZGF0YWJhc2UgaWQKKyAgICAgICAg OnBhcmFtIHNjaWQ6IHNjaGVtYSBpZAorICAgICAgICAiIiIKKyAgICAgICAg c3FsID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRl X3BhdGgsICdmdW5jdGlvbnMuc3FsJ10pLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc3RhcnQ9VHJ1ZSkKKyAgICAgICAgc3RhdHVzLCByc2V0 ID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChzcWwpCisKKyAgICAgICAgaWYg bm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2 ZXJfZXJyb3IoZXJyb3Jtc2c9cnNldCkKKworICAgICAgICAjIEVtcHR5IHNl dCBpcyBhZGRlZCBiZWZvcmUgYWN0dWFsIGxpc3QgYXMgaW5pdGlhbGx5IGl0 IHdpbGwgYmUgdmlzaWJsZQorICAgICAgICAjIGF0IHN0YXJ0IHNlbGVjdCBj b250cm9sIHdoaWxlIGNyZWF0aW5nIGEgbmV3IGZ0cyBwYXJzZXIKKyAgICAg ICAgcmVzID0gW3snbGFiZWwnOiAnJywgJ3ZhbHVlJzogJyd9XQorICAgICAg ICBmb3Igcm93IGluIHJzZXRbJ3Jvd3MnXToKKyAgICAgICAgICAgIHJlcy5h cHBlbmQoeydsYWJlbCc6IHJvd1sncHJvbmFtZSddLAorICAgICAgICAgICAg ICAgICAgICAgICAgJ3ZhbHVlJzogcm93Wydwcm9uYW1lJ119KQorICAgICAg ICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgZGF0 YT1yZXMsCisgICAgICAgICAgICBzdGF0dXM9MjAwCisgICAgICAgICkKKwor ICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgdG9rZW5fZnVuY3Rp b25zKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQpOgorICAgICAgICAiIiIK KyAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIHJldHVybiB0b2tlbiBmdW5j dGlvbnMgbGlzdCBmb3IgZnRzIFBhcnNlcgorICAgICAgICA6cGFyYW0gZ2lk OiBncm91cCBpZAorICAgICAgICA6cGFyYW0gc2lkOiBzZXJ2ZXIgaWQKKyAg ICAgICAgOnBhcmFtIGRpZDogZGF0YWJhc2UgaWQKKyAgICAgICAgOnBhcmFt IHNjaWQ6IHNjaGVtYSBpZAorICAgICAgICAiIiIKKyAgICAgICAgc3FsID0g cmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgs ICdmdW5jdGlvbnMuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdG9rZW49VHJ1ZSkKKyAgICAgICAgc3RhdHVzLCByc2V0ID0gc2Vs Zi5jb25uLmV4ZWN1dGVfZGljdChzcWwpCisKKyAgICAgICAgaWYgbm90IHN0 YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJy b3IoZXJyb3Jtc2c9cnNldCkKKworICAgICAgICAjIEVtcHR5IHNldCBpcyBh ZGRlZCBiZWZvcmUgYWN0dWFsIGxpc3QgYXMgaW5pdGlhbGx5IGl0IHdpbGwg YmUgdmlzaWJsZQorICAgICAgICAjIGF0IHRva2VuIHNlbGVjdCBjb250cm9s IHdoaWxlIGNyZWF0aW5nIGEgbmV3IGZ0cyBwYXJzZXIKKyAgICAgICAgcmVz ID0gW3snbGFiZWwnOiAnJywgJ3ZhbHVlJzogJyd9XQorICAgICAgICBmb3Ig cm93IGluIHJzZXRbJ3Jvd3MnXToKKyAgICAgICAgICAgIHJlcy5hcHBlbmQo eydsYWJlbCc6IHJvd1sncHJvbmFtZSddLAorICAgICAgICAgICAgICAgICAg ICAgICAgJ3ZhbHVlJzogcm93Wydwcm9uYW1lJ119KQorICAgICAgICByZXR1 cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgZGF0YT1yZXMs CisgICAgICAgICAgICBzdGF0dXM9MjAwCisgICAgICAgICkKKworICAgIEBj aGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgZW5kX2Z1bmN0aW9ucyhzZWxm LCBnaWQsIHNpZCwgZGlkLCBzY2lkKToKKyAgICAgICAgIiIiCisgICAgICAg IFRoaXMgZnVuY3Rpb24gd2lsbCByZXR1cm4gZW5kIGZ1bmN0aW9ucyBsaXN0 IGZvciBmdHMgUGFyc2VyCisgICAgICAgIDpwYXJhbSBnaWQ6IGdyb3VwIGlk CisgICAgICAgIDpwYXJhbSBzaWQ6IHNlcnZlciBpZAorICAgICAgICA6cGFy YW0gZGlkOiBkYXRhYmFzZSBpZAorICAgICAgICA6cGFyYW0gc2NpZDogc2No ZW1hIGlkCisgICAgICAgICIiIgorICAgICAgICBzcWwgPSByZW5kZXJfdGVt cGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ2Z1bmN0aW9u cy5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQ9 VHJ1ZSkKKyAgICAgICAgc3RhdHVzLCByc2V0ID0gc2VsZi5jb25uLmV4ZWN1 dGVfZGljdChzcWwpCisKKyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAg ICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9 cnNldCkKKworICAgICAgICAjIEVtcHR5IHNldCBpcyBhZGRlZCBiZWZvcmUg YWN0dWFsIGxpc3QgYXMgaW5pdGlhbGx5IGl0IHdpbGwgYmUgdmlzaWJsZQor ICAgICAgICAjIGF0IGVuZCBzZWxlY3QgY29udHJvbCB3aGlsZSBjcmVhdGlu ZyBhIG5ldyBmdHMgcGFyc2VyCisgICAgICAgIHJlcyA9IFt7J2xhYmVsJzog JycsICd2YWx1ZSc6ICcnfV0KKyAgICAgICAgZm9yIHJvdyBpbiByc2V0Wydy b3dzJ106CisgICAgICAgICAgICByZXMuYXBwZW5kKHsnbGFiZWwnOiByb3db J3Byb25hbWUnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICd2YWx1ZSc6 IHJvd1sncHJvbmFtZSddfSkKKyAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9y ZXNwb25zZSgKKyAgICAgICAgICAgIGRhdGE9cmVzLAorICAgICAgICAgICAg c3RhdHVzPTIwMAorICAgICAgICApCisKKyAgICBAY2hlY2tfcHJlY29uZGl0 aW9uCisgICAgZGVmIGxleHR5cGVfZnVuY3Rpb25zKHNlbGYsIGdpZCwgc2lk LCBkaWQsIHNjaWQpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5j dGlvbiB3aWxsIHJldHVybiBsZXh0eXBlIGZ1bmN0aW9ucyBsaXN0IGZvciBm dHMgUGFyc2VyCisgICAgICAgIDpwYXJhbSBnaWQ6IGdyb3VwIGlkCisgICAg ICAgIDpwYXJhbSBzaWQ6IHNlcnZlciBpZAorICAgICAgICA6cGFyYW0gZGlk OiBkYXRhYmFzZSBpZAorICAgICAgICA6cGFyYW0gc2NpZDogc2NoZW1hIGlk CisgICAgICAgICIiIgorICAgICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUo Ii8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ2Z1bmN0aW9ucy5zcWwn XSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXh0eXBlPVRy dWUpCisgICAgICAgIHN0YXR1cywgcnNldCA9IHNlbGYuY29ubi5leGVjdXRl X2RpY3Qoc3FsKQorCisgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAg ICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJz ZXQpCisKKyAgICAgICAgIyBFbXB0eSBzZXQgaXMgYWRkZWQgYmVmb3JlIGFj dHVhbCBsaXN0IGFzIGluaXRpYWxseSBpdCB3aWxsIGJlIHZpc2libGUKKyAg ICAgICAgIyBhdCBsZXh0eXBlIHNlbGVjdCBjb250cm9sIHdoaWxlIGNyZWF0 aW5nIGEgbmV3IGZ0cyBwYXJzZXIKKyAgICAgICAgcmVzID0gW3snbGFiZWwn OiAnJywgJ3ZhbHVlJzogJyd9XQorICAgICAgICBmb3Igcm93IGluIHJzZXRb J3Jvd3MnXToKKyAgICAgICAgICAgIHJlcy5hcHBlbmQoeydsYWJlbCc6IHJv d1sncHJvbmFtZSddLAorICAgICAgICAgICAgICAgICAgICAgICAgJ3ZhbHVl Jzogcm93Wydwcm9uYW1lJ119KQorICAgICAgICByZXR1cm4gbWFrZV9qc29u X3Jlc3BvbnNlKAorICAgICAgICAgICAgZGF0YT1yZXMsCisgICAgICAgICAg ICBzdGF0dXM9MjAwCisgICAgICAgICkKKworICAgIEBjaGVja19wcmVjb25k aXRpb24KKyAgICBkZWYgaGVhZGxpbmVfZnVuY3Rpb25zKHNlbGYsIGdpZCwg c2lkLCBkaWQsIHNjaWQpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBm dW5jdGlvbiB3aWxsIHJldHVybiBoZWFkbGluZSBmdW5jdGlvbnMgbGlzdCBm b3IgZnRzIFBhcnNlcgorICAgICAgICA6cGFyYW0gZ2lkOiBncm91cCBpZAor ICAgICAgICA6cGFyYW0gc2lkOiBzZXJ2ZXIgaWQKKyAgICAgICAgOnBhcmFt IGRpZDogZGF0YWJhc2UgaWQKKyAgICAgICAgOnBhcmFtIHNjaWQ6IHNjaGVt YSBpZAorICAgICAgICAiIiIKKyAgICAgICAgc3FsID0gcmVuZGVyX3RlbXBs YXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdmdW5jdGlvbnMu c3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGxp bmU9VHJ1ZSkKKyAgICAgICAgc3RhdHVzLCByc2V0ID0gc2VsZi5jb25uLmV4 ZWN1dGVfZGljdChzcWwpCisKKyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAg ICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jt c2c9cnNldCkKKworICAgICAgICAjIEVtcHR5IHNldCBpcyBhZGRlZCBiZWZv cmUgYWN0dWFsIGxpc3QgYXMgaW5pdGlhbGx5IGl0IHdpbGwgYmUgdmlzaWJs ZQorICAgICAgICAjIGF0IGhlYWRsaW5lIHNlbGVjdCBjb250cm9sIHdoaWxl IGNyZWF0aW5nIGEgbmV3IGZ0cyBwYXJzZXIKKyAgICAgICAgcmVzID0gW3sn bGFiZWwnOiAnJywgJ3ZhbHVlJzogJyd9XQorICAgICAgICBmb3Igcm93IGlu IHJzZXRbJ3Jvd3MnXToKKyAgICAgICAgICAgIHJlcy5hcHBlbmQoeydsYWJl bCc6IHJvd1sncHJvbmFtZSddLAorICAgICAgICAgICAgICAgICAgICAgICAg J3ZhbHVlJzogcm93Wydwcm9uYW1lJ119KQorICAgICAgICByZXR1cm4gbWFr ZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgZGF0YT1yZXMsCisgICAg ICAgICAgICBzdGF0dXM9MjAwCisgICAgICAgICkKKworICAgIEBjaGVja19w cmVjb25kaXRpb24KKyAgICBkZWYgc3FsKHNlbGYsIGdpZCwgc2lkLCBkaWQs IHNjaWQsIHBpZCk6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0 aW9uIHdpbGwgcmV2ZXJzZSBnZW5lcmF0ZSBzcWwgZm9yIHNxbCBwYW5lbAor ICAgICAgICA6cGFyYW0gZ2lkOiBncm91cCBpZAorICAgICAgICA6cGFyYW0g c2lkOiBzZXJ2ZXIgaWQKKyAgICAgICAgOnBhcmFtIGRpZDogZGF0YWJhc2Ug aWQKKyAgICAgICAgOnBhcmFtIHNjaWQ6IHNjaGVtYSBpZAorICAgICAgICA6 cGFyYW0gcGlkOiBmdHMgdGVtcGF0ZSBpZAorICAgICAgICAiIiIKKyAgICAg ICAgdHJ5OgorICAgICAgICAgICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKAor ICAgICAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgs ICdzcWwuc3FsJ10pLAorICAgICAgICAgICAgICAgIHBpZD1waWQsCisgICAg ICAgICAgICAgICAgc2NpZD1zY2lkLAorICAgICAgICAgICAgICAgIGNvbm49 c2VsZi5jb25uCisgICAgICAgICAgICApCisgICAgICAgICAgICBzdGF0dXMs IHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX3NjYWxhcihzcWwpCisgICAgICAg ICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgIHJldHVybiBp bnRlcm5hbF9zZXJ2ZXJfZXJyb3IoCisgICAgICAgICAgICAgICAgICAgIF8o CisgICAgICAgICAgICAgICAgICAgICAgICAiRVJST1I6IENvdWxkbid0IGdl bmVyYXRlIHJldmVyc2VkIGVuZ2luZWVyZWQgXAorICAgICAgICAgICAgICAg ICAgICAgICAgUXVlcnkgZm9yIHRoZSBGVFMgUGFyc2VyIVxuezB9IgorICAg ICAgICAgICAgICAgICAgICApLmZvcm1hdChyZXMpCisgICAgICAgICAgICAg ICAgKQorCisgICAgICAgICAgICBpZiByZXMgaXMgTm9uZToKKyAgICAgICAg ICAgICAgICByZXR1cm4gZ29uZSgKKyAgICAgICAgICAgICAgICAgICAgXygK KyAgICAgICAgICAgICAgICAgICAgICAgICJFUlJPUjogQ291bGRuJ3QgZ2Vu ZXJhdGUgcmV2ZXJzZWQgZW5naW5lZXJlZCBcCisgICAgICAgICAgICAgICAg ICAgICAgICBRdWVyeSBmb3IgRlRTIFBhcnNlciBub2RlISIKKyAgICAgICAg ICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICkKKworICAgICAgICAg ICAgcmV0dXJuIGFqYXhfcmVzcG9uc2UocmVzcG9uc2U9cmVzKQorCisgICAg ICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIGN1cnJl bnRfYXBwLmxvZ2dlci5leGNlcHRpb24oZSkKKyAgICAgICAgICAgIHJldHVy biBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKGUpKQorCisg ICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBkZXBlbmRlbnRzKHNl bGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIHBpZCk6CisgICAgICAgICIiIgor ICAgICAgICBUaGlzIGZ1bmN0aW9uIGdldCB0aGUgZGVwZW5kZW50cyBhbmQg cmV0dXJuIGFqYXggcmVzcG9uc2UKKyAgICAgICAgZm9yIHRoZSBGVFMgUGFy c2VyIG5vZGUuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIGdpZDog U2VydmVyIEdyb3VwIElECisgICAgICAgICAgICBzaWQ6IFNlcnZlciBJRAor ICAgICAgICAgICAgZGlkOiBEYXRhYmFzZSBJRAorICAgICAgICAgICAgc2Np ZDogU2NoZW1hIElECisgICAgICAgICAgICBwaWQ6IEZUUyBQYXJzZXIgSUQK KyAgICAgICAgIiIiCisgICAgICAgIGRlcGVuZGVudHNfcmVzdWx0ID0gc2Vs Zi5nZXRfZGVwZW5kZW50cyhzZWxmLmNvbm4sIHBpZCkKKyAgICAgICAgcmV0 dXJuIGFqYXhfcmVzcG9uc2UoCisgICAgICAgICAgICAgICAgcmVzcG9uc2U9 ZGVwZW5kZW50c19yZXN1bHQsCisgICAgICAgICAgICAgICAgc3RhdHVzPTIw MAorICAgICAgICAgICAgICAgICkKKworICAgIEBjaGVja19wcmVjb25kaXRp b24KKyAgICBkZWYgZGVwZW5kZW5jaWVzKHNlbGYsIGdpZCwgc2lkLCBkaWQs IHNjaWQsIHBpZCk6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0 aW9uIGdldCB0aGUgZGVwZW5kZW5jaWVzIGFuZCByZXR1cm4gYWpheCByZXNw b25zZQorICAgICAgICBmb3IgdGhlIEZUUyBQYXJzZXIgbm9kZS4KKworICAg ICAgICBBcmdzOgorICAgICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAgSUQK KyAgICAgICAgICAgIHNpZDogU2VydmVyIElECisgICAgICAgICAgICBkaWQ6 IERhdGFiYXNlIElECisgICAgICAgICAgICBzY2lkOiBTY2hlbWEgSUQKKyAg ICAgICAgICAgIHBpZDogRlRTIFRlbXBhbHRlIElECisgICAgICAgICIiIgor ICAgICAgICBkZXBlbmRlbmNpZXNfcmVzdWx0ID0gc2VsZi5nZXRfZGVwZW5k ZW5jaWVzKHNlbGYuY29ubiwgcGlkKQorICAgICAgICByZXR1cm4gYWpheF9y ZXNwb25zZSgKKyAgICAgICAgICAgICAgICByZXNwb25zZT1kZXBlbmRlbmNp ZXNfcmVzdWx0LAorICAgICAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAg ICAgICAgICAgICApCisKK0Z0c1BhcnNlclZpZXcucmVnaXN0ZXJfbm9kZV92 aWV3KGJsdWVwcmludCkKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z0 c19wYXJzZXIvc3RhdGljL2ltZy9jb2xsLWZ0c19wYXJzZXIucG5nIGIvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvZnRzX3BhcnNlci9zdGF0aWMvaW1nL2NvbGwtZnRzX3Bh cnNlci5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzQwZWM2YjdmYmRj ZjE3MDJmNjZmZTJjODMzZmNkY2Q1MTJiYjE0MQpHSVQgYmluYXJ5IHBhdGNo CmxpdGVyYWwgNjIwCnpjbWVBU0BOPyhvbEh5YHVWQnEhaWEwdnBeMHdCITYz P3d5bGBHWGw0NytDeytMUl44fG0zIU1ON2ExZj5WVlMpKAp6dVc2bWQkcnA8 cns2QmRBfE5ndUdjSGpRRD9kSVBOKlotYHpgZ19UTnI9OWd7NFlGclItMXhl RV80Ul92UnFBRVMKejcxQyEyRUk1XnZHZnk7VXckelJQOD9YRlplJk9IenZ3 eDxhYHJVV3pTSWVPdm1IV1F1QEJkYkM/MHZgRlozWHhMCnpANE5WSyhRY0xO aGt3QDBPYFd0JGBSYm1AbE1qQ19OdD9sY2BgP3orZTxxKiEpcF9KKy1HVDRM aGRXb19PbiFYIwp6JGtzYllIcno8TWQkQGhZXio8fCp7JW1Tbz0zbHFlVzU/ SXswfV92fTk5bEpGU0oxU2J6N01XMEtkSm91JSFpcVcKemV3NlJ9biFOUk0q b0lHRHlWfEIpUHI3c1NAVW9rUzdoTy1mYilhIXNeRzRJN1V1ekQxRSFfVihi SSsldzFDd1ZUCnpIQFVVSFooalgrJjF3Ymxocm9iZkVENz1wV15qMFJCTXIj bUVieGRkMkdTbTI+fj1FUzQjPTQyPkVhazdhWEM1Ugp6MDdIK0A4RyE+d0lH JTBadXhWcClLfmRyNzUxJjQ2WmVVP3lYPkQyUDw+S1BWYlM1ZG9Zc1Mld1F3 JGJzUGhgLVYKeklBemtiaUJsKHMyWlJWRUJtfF9UZyQwSE4yTTFwZHhQMFlP OHIhUmppUHhAUEhhOVJhR0JZJGFYNk11fWoqZl9tCnp5blctPU89fUNRTWl6 O1pJazdRIUA3VVZ4LUJWa20+Y0RpVyZnJm16cXZKdEUjZjZFZDFnPipDKypM ZXEkYnA0ewp6O2xNKG5qNSVrYEw0SHYhYWc4V1JOaTBkVk4tanpUUVZkMjBo NmNLWk0hRSl1QXd+dlBDZE83S3JySExrUnQ1KDEKdC1zIURFKFU2OztsOV5U cyhPX1QrKSZOdihWcjVfayhRcztkPW8rOH4yMldRJW12djRGTyNzMkBBLVZ0 bgoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvZnRzX3BhcnNlci9zdGF0aWMvaW1nL2Z0c19wYXJzZXIucG5n IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvZnRzX3BhcnNlci9zdGF0aWMvaW1nL2Z0c19w YXJzZXIucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ3ZWNhOTk1MDQ5 OWZjMGNhMWUyZWUwYTQxOWE4YTM4MGZkNTI4ZjMKR0lUIGJpbmFyeSBwYXRj aApsaXRlcmFsIDcxNQp6Y21lQVNATj8ob2xIeWB1VkJxIWlhMHZwXjB3QiE2 Mz93eWxgR1hsNDctSXJfTFJeOHxtMyFNTjdhMWY+VlZTKSgKenVXNm1kJHJw PHJ7NkJkMi08fmBGdyVfYDw+SDQyRlNBUT9Oe0NuUVRVJGdmO1h7bGVVbXB4 MTMjQEZwUHslXlNhCnpafFY4SmJJPDtuY0l0UUVuY3RKSHw2WUZPKk1kdHdY SjdzPz1naH4rX3k2elB0I2JZM0A5cyZQR0ZLbiZ4LWpGJgp6NXY/YWp2PnRD TVUzPms8bEltcjhjbUN9LV9qbCYkS05DOzw+T0F0WjtwKHImN3JJWn1PbiEz aj0jRCFfdyVrYSUKemNjSlVWdC1sLUZTMHVFcWgmdWVVd3NEIzdpbz95dlda cGN2ekdLI3xzRn1NJEE2e0U/Ul5gTD5LZFgtWVlCfV95CnpZVHgmUS1RVXZB fENuXjlZdX1CZWA/bjlUeT4pb2leYHUrcEl1Qm0/eXtLX25LPmFlJCs5Z2ln ekNeYUlAbV9TVwp6Y3ZJPX1RPkc2T1kySTYzeXh7IVR6UVAzeElrVGxzZVZC Z21kK0UtdmlDYUkxWlQjZjNfTV85TGtBOD4wbHBPcT0KemNpPmFqO1pPUGRV bC0yWlI/eGlCP0QrZmM2Vzx6K2RAVm90QzRjfHRqNkkpe2M3QlQ5e3hOTCho bWg/cjxMbFJKCnp7OzE5YDBmc01RTnN3UEtnVHUyTVgrUkVWZmskTDlrb0V2 JHgwQmcrSypsbXA3c244WiVnRzR9T2E/fVYmV3lzIQp6OXA/fDdJKEZ7aCQp amZ2cEZYYUNmSnNDXkxgWTBmUkN4TT9EVStzNjZsTEt1SURQVztYPkFRSCZE QVNidDt9djwKekcxPERNd0Irai1VWV8wXy12ZG1gKHc+UDszJWgydnQ/VjBM MDs5V254X0cjR0lsc1N0eldqIVVfNERmOzUme1o1CnpHOW9IbVIwMCZWdGts Zig+PVg/KEVtY2kqeGlsdXNuPmNnbyt7dkAyI3xLMSYlOzc3V3NjPmQjbGde UEpKaXZxXwp6ZW91elFrRTcpfCg4YTFIdGBRfEVpNnlDNCR3akZeaW93WGgm X0xKRk5ZfXRII0teJFAjTXNLalJOS0pSJURgYVcKdEpIMXNYOGdsYmZHU2V5 ezhWb0dLOGkxLXp0UElRYDhjdDBRVD81cD47T1hrO3ZkJEA/Mj5gU0RVNyFF fQoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvZnRzX3BhcnNlci90ZW1wbGF0ZXMvZnRzX3BhcnNlci9qcy9m dHNfcGFyc2VyLmpzIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnRzX3BhcnNlci90ZW1w bGF0ZXMvZnRzX3BhcnNlci9qcy9mdHNfcGFyc2VyLmpzCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI2NTAzZjYKLS0tIC9kZXYvbnVs bAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdHNfcGFyc2VyL3RlbXBsYXRlcy9m dHNfcGFyc2VyL2pzL2Z0c19wYXJzZXIuanMKQEAgLTAsMCArMSwxOTMgQEAK K2RlZmluZSgKKyAgICAgICAgWydqcXVlcnknLCAndW5kZXJzY29yZScsICd1 bmRlcnNjb3JlLnN0cmluZycsICdwZ2FkbWluJywKKyAgICAgICAgICdwZ2Fk bWluLmJyb3dzZXInLCAnYWxlcnRpZnknLCAncGdhZG1pbi5icm93c2VyLmNv bGxlY3Rpb24nXSwKK2Z1bmN0aW9uKCQsIF8sIFMsIHBnQWRtaW4sIHBnQnJv d3NlciwgYWxlcnRpZnkpIHsKKworICAvLyBFeHRlbmQgdGhlIGNvbGxlY3Rp b24gY2xhc3MgZm9yIGZ0cyBwYXJzZXIKKyAgaWYgKCFwZ0Jyb3dzZXIuTm9k ZXNbJ2NvbGwtZnRzX3BhcnNlciddKSB7CisgICAgdmFyIGZ0c19wYXJzZXJz ID0gcGdBZG1pbi5Ccm93c2VyLk5vZGVzWydjb2xsLWZ0c19wYXJzZXInXSA9 CisgICAgICBwZ0FkbWluLkJyb3dzZXIuQ29sbGVjdGlvbi5leHRlbmQoewor ICAgICAgICBub2RlOiAnZnRzX3BhcnNlcicsCisgICAgICAgIGxhYmVsOiAn e3sgXygnRlRTIFBhcnNlcnMnKSB9fScsCisgICAgICAgIHR5cGU6ICdjb2xs LWZ0c19wYXJzZXInLAorICAgICAgICBjb2x1bW5zOiBbJ25hbWUnLCAnZGVz Y3JpcHRpb24nXQorICAgICAgfSk7CisgIH07CisKKyAgLy8gRXh0ZW5kIHRo ZSBub2RlIGNsYXNzIGZvciBmdHMgcGFyc2VyCisgIGlmICghcGdCcm93c2Vy Lk5vZGVzWydmdHNfcGFyc2VyJ10pIHsKKyAgICBwZ0FkbWluLkJyb3dzZXIu Tm9kZXNbJ2Z0c19wYXJzZXInXSA9IHBnQWRtaW4uQnJvd3Nlci5Ob2RlLmV4 dGVuZCh7CisgICAgICBwYXJlbnRfdHlwZTogWydzY2hlbWEnLCAnY2F0YWxv ZyddLAorICAgICAgdHlwZTogJ2Z0c19wYXJzZXInLAorICAgICAgY2FuRHJv cDogdHJ1ZSwKKyAgICAgIGNhbkRyb3BDYXNjYWRlOiB0cnVlLAorICAgICAg bGFiZWw6ICd7eyBfKCdGVFMgUGFyc2VycycpIH19JywKKyAgICAgIGhhc1NR TDogdHJ1ZSwKKyAgICAgIGhhc0RlcGVuZHM6IHRydWUsCisgICAgICBJbml0 OiBmdW5jdGlvbigpIHsKKworICAgICAgICAvLyBBdm9pZCBtdWx0aXBsZSBy ZWdpc3RyYXRpb24gb2YgbWVudXMKKyAgICAgICAgaWYgKHRoaXMuaW5pdGlh bGl6ZWQpCisgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuaW5p dGlhbGl6ZWQgPSB0cnVlOworCisgICAgICAgIC8vIEFkZCBjb250ZXh0IG1l bnVzIGZvciBmdHMgcGFyc2VyCisgICAgICAgIHBnQnJvd3Nlci5hZGRfbWVu dXMoW3sKKyAgICAgICAgICBuYW1lOiAnY3JlYXRlX2Z0c19wYXJzZXJfb25f c2NoZW1hJywgbm9kZTogJ3NjaGVtYScsIG1vZHVsZTogdGhpcywKKyAgICAg ICAgICBhcHBsaWVzOiBbJ29iamVjdCcsICdjb250ZXh0J10sIGNhbGxiYWNr OiAnc2hvd19vYmpfcHJvcGVydGllcycsCisgICAgICAgICAgY2F0ZWdvcnk6 ICdjcmVhdGUnLCBwcmlvcml0eTogNCwgbGFiZWw6ICd7eyBfKCdGVFMgUGFy c2VyLi4uJykgfX0nLAorICAgICAgICAgIGljb246ICd3Y1RhYkljb24gaWNv bi1mdHNfcGFyc2VyJywgZGF0YToge2FjdGlvbjogJ2NyZWF0ZSd9CisgICAg ICAgICAgfSx7CisgICAgICAgICAgbmFtZTogJ2NyZWF0ZV9mdHNfcGFyc2Vy X29uX2NvbGwnLCBub2RlOiAnY29sbC1mdHNfcGFyc2VyJywKKyAgICAgICAg ICBhcHBsaWVzOiBbJ29iamVjdCcsICdjb250ZXh0J10sIGNhbGxiYWNrOiAn c2hvd19vYmpfcHJvcGVydGllcycsCisgICAgICAgICAgY2F0ZWdvcnk6ICdj cmVhdGUnLCBwcmlvcml0eTogNCwgbGFiZWw6ICd7eyBfKCdGVFMgUGFyc2Vy Li4uJykgfX0nLAorICAgICAgICAgIGljb246ICd3Y1RhYkljb24gaWNvbi1m dHNfcGFyc2VyJywgZGF0YToge2FjdGlvbjogJ2NyZWF0ZSd9LAorICAgICAg ICAgIG1vZHVsZTogdGhpcworICAgICAgICAgIH0seworICAgICAgICAgIG5h bWU6ICdjcmVhdGVfZnRzX3BhcnNlcicsIG5vZGU6ICdmdHNfcGFyc2VyJywg bW9kdWxlOiB0aGlzLAorICAgICAgICAgIGFwcGxpZXM6IFsnb2JqZWN0Jywg J2NvbnRleHQnXSwgY2FsbGJhY2s6ICdzaG93X29ial9wcm9wZXJ0aWVzJywK KyAgICAgICAgICBjYXRlZ29yeTogJ2NyZWF0ZScsIHByaW9yaXR5OiA0LCBs YWJlbDogJ3t7IF8oJ0ZUUyBQYXJzZXIuLi4nKSB9fScsCisgICAgICAgICAg aWNvbjogJ3djVGFiSWNvbiBpY29uLWZ0c19wYXJzZXInLCBkYXRhOiB7YWN0 aW9uOiAnY3JlYXRlJ30KKyAgICAgICAgICB9XSk7CisKKyAgICAgIH0sCisK KyAgICAgIC8vIERlZmluaW5nIGJhY2tmb3JtIG1vZGVsIGZvciBmdHMgcGFy c2VyIG5vZGUKKyAgICAgIG1vZGVsOiBwZ0FkbWluLkJyb3dzZXIuTm9kZS5N b2RlbC5leHRlbmQoeworICAgICAgICBkZWZhdWx0czogeworICAgICAgICAg IG5hbWU6IHVuZGVmaW5lZCwgICAgICAgICAgLy8gRnRzIHBhcnNlciBuYW1l CisgICAgICAgICAgZGVzY3JpcHRpb246IHVuZGVmaW5lZCwgICAvLyBDb21t ZW50IG9uIHBhcnNlcgorICAgICAgICAgIHNjaGVtYTogdW5kZWZpbmVkLCAg ICAgICAgLy8gU2NoZW1hIG5hbWUgdG8gd2hpY2ggcGFyc2VyIGJlbG9uZ3MK KyAgICAgICAgICBwcnNzdGFydDogdW5kZWZpbmVkLCAgICAgIC8vIFN0YXJ0 IGZ1bmN0aW9uIGZvciBmdHMgcGFyc2VyCisgICAgICAgICAgcHJzdG9rZW46 IHVuZGVmaW5lZCwgICAgICAgLy8gVG9rZW4gZnVuY3Rpb24gZm9yIGZ0cyBw YXJzZXIKKyAgICAgICAgICBwcnNlbmQ6IHVuZGVmaW5lZCwgICAgICAgIC8v IEVuZCBmdW5jdGlvbiBmb3IgZnRzIHBhcnNlcgorICAgICAgICAgIHByc2xl eHR5cGU6IHVuZGVmaW5lZCwgICAgLy8gTGV4dHlwZSBmdW5jdGlvbiBmb3Ig ZnRzIHBhcnNlcgorICAgICAgICAgIHByc2hlYWRsaW5lOiB1bmRlZmluZWQg ICAgLy8gSGVhZGxpbmUgZnVuY3Rpb24gZm9yIGZ0cyBwYXJzZQorICAgICAg ICB9LAorICAgICAgICBpbml0aWFsaXplOiBmdW5jdGlvbigpIHsKKyAgICAg ICAgICAgIHBnQWRtaW4uQnJvd3Nlci5Ob2RlLk1vZGVsLnByb3RvdHlwZS5p bml0aWFsaXplLmFwcGx5KHRoaXMsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJn dW1lbnRzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgaWYgKF8u aXNVbmRlZmluZWQodGhpcy5nZXQoJ3NjaGVtYScpKSkgeworICAgICAgICAg ICAgICAgIHRoaXMuc2V0KCdzY2hlbWEnLCB0aGlzLm5vZGVfaW5mby5zY2hl bWEuX2lkKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAg Ly8gRGVmaW5pbmcgc2NoZW1hIGZvciBmdHMgcGFyc2VyCisgICAgICAgIHNj aGVtYTogW3sKKyAgICAgICAgICBpZDogJ25hbWUnLCBsYWJlbDogJ3t7IF8o J05hbWUnKSB9fScsIGNlbGw6ICdzdHJpbmcnLAorICAgICAgICAgIHR5cGU6 ICd0ZXh0JywgY2VsbEhlYWRlckNsYXNzZXM6ICd3aWR0aF9wZXJjZW50XzUw JworICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ29pZCcsIGxhYmVsOid7 eyBfKCdPSUQnKSB9fScsIGNlbGw6ICdzdHJpbmcnLAorICAgICAgICAgIGVk aXRhYmxlOiBmYWxzZSwgdHlwZTogJ3RleHQnLCBkaXNhYmxlZDogdHJ1ZSwg bW9kZTpbJ3Byb3BlcnRpZXMnXQorICAgICAgICB9LHsKKyAgICAgICAgICBp ZDogJ3NjaGVtYScsIGxhYmVsOiAne3sgXygnU2NoZW1hJyl9fScsIGNlbGw6 ICdzdHJpbmcnLAorICAgICAgICAgIHR5cGU6ICd0ZXh0JywgbW9kZTogWydj cmVhdGUnLCdlZGl0J10sIG5vZGU6ICdzY2hlbWEnLAorICAgICAgICAgIGNv bnRyb2w6ICdub2RlLWxpc3QtYnktaWQnCisgICAgICAgIH0seworICAgICAg ICAgIGlkOiAnZGVzY3JpcHRpb24nLCBsYWJlbDone3sgXygnQ29tbWVudCcp IH19JywgY2VsbDogJ3N0cmluZycsCisgICAgICAgICAgdHlwZTogJ211bHRp bGluZScsIGNlbGxIZWFkZXJDbGFzc2VzOiAnd2lkdGhfcGVyY2VudF81MCcK KyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdwcnNzdGFydCcsIGxhYmVs OiAne3sgXygnU3RhcnQgRnVuY3Rpb24nKX19JywKKyAgICAgICAgICB0eXBl OiAndGV4dCcsIGRpc2FibGVkOiBmdW5jdGlvbihtKSB7IHJldHVybiAhbS5p c05ldygpOyB9LAorICAgICAgICAgIGNvbnRyb2w6ICdub2RlLWFqYXgtb3B0 aW9ucycsIHVybDogJ3N0YXJ0X2Z1bmN0aW9ucycsCisgICAgICAgICAgZ3Jv dXA6ICd7eyBfKCdEZWZpbml0aW9uJykgfX0nCisgICAgICAgIH0seworICAg ICAgICAgIGlkOiAncHJzdG9rZW4nLCBsYWJlbDogJ3t7IF8oJ0dldHRva2Vu IEZ1bmN0aW9uJyl9fScsCisgICAgICAgICAgdHlwZTogJ3RleHQnLCBkaXNh YmxlZDogZnVuY3Rpb24obSkgeyByZXR1cm4gIW0uaXNOZXcoKTsgfSwKKyAg ICAgICAgICBjb250cm9sOiAnbm9kZS1hamF4LW9wdGlvbnMnLCB1cmw6ICd0 b2tlbl9mdW5jdGlvbnMnLAorICAgICAgICAgIGdyb3VwOiAne3sgXygnRGVm aW5pdGlvbicpIH19JworICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ3By c2VuZCcsIGxhYmVsOiAne3sgXygnRW5kIEZ1bmN0aW9uJyl9fScsCisgICAg ICAgICAgdHlwZTogJ3RleHQnLCBkaXNhYmxlZDogZnVuY3Rpb24obSkgeyBy ZXR1cm4gIW0uaXNOZXcoKTsgfSwKKyAgICAgICAgICBjb250cm9sOiAnbm9k ZS1hamF4LW9wdGlvbnMnLCB1cmw6ICdlbmRfZnVuY3Rpb25zJywKKyAgICAg ICAgICBncm91cDogJ3t7IF8oJ0RlZmluaXRpb24nKSB9fScKKyAgICAgICAg fSx7CisgICAgICAgICAgaWQ6ICdwcnNsZXh0eXBlJywgbGFiZWw6ICd7eyBf KCdMZXh0eXBlcyBGdW5jdGlvbicpfX0nLAorICAgICAgICAgIHR5cGU6ICd0 ZXh0JywgZGlzYWJsZWQ6IGZ1bmN0aW9uKG0pIHsgcmV0dXJuICFtLmlzTmV3 KCk7IH0sCisgICAgICAgICAgY29udHJvbDogJ25vZGUtYWpheC1vcHRpb25z JywgdXJsOiAnbGV4dHlwZV9mdW5jdGlvbnMnLAorICAgICAgICAgIGdyb3Vw OiAne3sgXygnRGVmaW5pdGlvbicpIH19JworICAgICAgICB9LHsKKyAgICAg ICAgICBpZDogJ3Byc2hlYWRsaW5lJywgbGFiZWw6ICd7eyBfKCdIZWFkbGlu ZSBGdW5jdGlvbicpfX0nLAorICAgICAgICAgIHR5cGU6ICd0ZXh0JywgZGlz YWJsZWQ6IGZ1bmN0aW9uKG0pIHsgcmV0dXJuICFtLmlzTmV3KCk7IH0sCisg ICAgICAgICAgY29udHJvbDogJ25vZGUtYWpheC1vcHRpb25zJywgdXJsOiAn aGVhZGxpbmVfZnVuY3Rpb25zJywKKyAgICAgICAgICBncm91cDogJ3t7IF8o J0RlZmluaXRpb24nKSB9fScKKyAgICAgICAgfV0sCisKKyAgICAgICAgLyoK KyAgICAgICAgICogVHJpZ2dlcnMgY29udHJvbCBzcGVjaWZpYyBlcnJvciBt ZXNzYWdlcyBmb3IgcGFyc2VyIG5hbWUsCisgICAgICAgICAqIHN0YXJ0LCB0 b2tlbiwgZW5kLCBsZXh0eXBlIGZ1bmN0aW9ucyBhbmQgc2NoZW1hLCBpZiBh bnkgb25lIG9mIHRoZW0gaXMgbm90IHNwZWNpZmllZAorICAgICAgICAgKiB3 aGlsZSBjcmVhdGluZyBuZXcgZnRzIHBhcnNlcgorICAgICAgICAgKi8KKyAg ICAgICAgdmFsaWRhdGU6IGZ1bmN0aW9uKGtleXMpeworICAgICAgICAgIHZh ciBuYW1lID0gdGhpcy5nZXQoJ25hbWUnKTsKKyAgICAgICAgICB2YXIgc3Rh cnQgPSB0aGlzLmdldCgncHJzc3RhcnQnKTsKKyAgICAgICAgICB2YXIgdG9r ZW4gPSB0aGlzLmdldCgncHJzdG9rZW4nKTsKKyAgICAgICAgICB2YXIgZW5k ID0gdGhpcy5nZXQoJ3Byc2VuZCcpOworICAgICAgICAgIHZhciBsZXh0eXBl ID0gdGhpcy5nZXQoJ3Byc2xleHR5cGUnKTsKKyAgICAgICAgICB2YXIgc2No ZW1hID0gdGhpcy5nZXQoJ3NjaGVtYScpOworCisgICAgICAgICAgLy8gVmFs aWRhdGUgZnRzIHBhcnNlciBuYW1lCisgICAgICAgICAgaWYgKF8uaXNVbmRl ZmluZWQobmFtZSkgfHwKKyAgICAgICAgICAgICAgICBfLmlzTnVsbChuYW1l KSB8fAorICAgICAgICAgICAgICAgIFN0cmluZyhuYW1lKS5yZXBsYWNlKC9e XHMrfFxzKyQvZywgJycpID09ICcnKSB7CisgICAgICAgICAgICB2YXIgbXNn ID0gJ3t7IF8oJ05hbWUgbXVzdCBiZSBzcGVjaWZpZWQhJykgfX0nOworICAg ICAgICAgICAgdGhpcy5lcnJvck1vZGVsLnNldCgnbmFtZScsIG1zZyk7Cisg ICAgICAgICAgICByZXR1cm4gbXNnOworICAgICAgICAgIH0KKworICAgICAg ICAgIC8vIFZhbGlkYXRlIHN0YXJ0IGZ1bmN0aW9uIGNvbnRyb2wKKyAgICAg ICAgICBlbHNlIGlmIChfLmlzVW5kZWZpbmVkKHN0YXJ0KSB8fAorICAgICAg ICAgICAgICAgICAgICBfLmlzTnVsbChzdGFydCkgfHwKKyAgICAgICAgICAg ICAgICAgICAgU3RyaW5nKHN0YXJ0KS5yZXBsYWNlKC9eXHMrfFxzKyQvZywg JycpID09ICcnKSB7CisgICAgICAgICAgICB2YXIgbXNnID0gJ3t7IF8oJ1N0 YXJ0IGZ1bmN0aW9uIG11c3QgYmUgc2VsZWN0ZWQhJykgfX0nOworICAgICAg ICAgICAgdGhpcy5lcnJvck1vZGVsLnNldCgncHJzc3RhcnQnLCBtc2cpOwor ICAgICAgICAgICAgcmV0dXJuIG1zZzsKKyAgICAgICAgICB9CisKKyAgICAg ICAgICAvLyBWYWxpZGF0ZSBnZXR0b2tlbiBmdW5jdGlvbiBjb250cm9sCisg ICAgICAgICAgZWxzZSBpZiAoXy5pc1VuZGVmaW5lZCh0b2tlbikgfHwKKyAg ICAgICAgICAgICAgICAgICAgXy5pc051bGwodG9rZW4pIHx8CisgICAgICAg ICAgICAgICAgICAgIFN0cmluZyh0b2tlbikucmVwbGFjZSgvXlxzK3xccysk L2csICcnKSA9PSAnJykgeworICAgICAgICAgICAgdmFyIG1zZyA9ICd7eyBf KCdHZXR0b2tlbiBmdW5jdGlvbiBtdXN0IGJlIHNlbGVjdGVkIScpIH19JzsK KyAgICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC5zZXQoJ3Byc3Rva2VuJywg bXNnKTsKKyAgICAgICAgICAgIHJldHVybiBtc2c7CisgICAgICAgICAgfQor CisgICAgICAgICAgLy8gVmFsaWRhdGUgZW5kIGZ1bmN0aW9uIGNvbnRyb2wK KyAgICAgICAgICBlbHNlIGlmIChfLmlzVW5kZWZpbmVkKGVuZCkgfHwKKyAg ICAgICAgICAgICAgICAgICAgXy5pc051bGwoZW5kKSB8fAorICAgICAgICAg ICAgICAgICAgICBTdHJpbmcoZW5kKS5yZXBsYWNlKC9eXHMrfFxzKyQvZywg JycpID09ICcnKSB7CisgICAgICAgICAgICB2YXIgbXNnID0gJ3t7IF8oJ0Vu ZCBmdW5jdGlvbiBtdXN0IGJlIHNlbGVjdGVkIScpIH19JzsKKyAgICAgICAg ICAgIHRoaXMuZXJyb3JNb2RlbC5zZXQoJ3Byc2VuZCcsIG1zZyk7CisgICAg ICAgICAgICByZXR1cm4gbXNnOworICAgICAgICAgIH0KKworICAgICAgICAg IC8vIFZhbGlkYXRlIGxleHR5cGUgZnVuY3Rpb24gY29udHJvbAorICAgICAg ICAgIGVsc2UgaWYgKF8uaXNVbmRlZmluZWQobGV4dHlwZSkgfHwKKyAgICAg ICAgICAgICAgICAgICAgXy5pc051bGwobGV4dHlwZSkgfHwKKyAgICAgICAg ICAgICAgICAgICAgU3RyaW5nKGxleHR5cGUpLnJlcGxhY2UoL15ccyt8XHMr JC9nLCAnJykgPT0gJycpIHsKKyAgICAgICAgICAgIHZhciBtc2cgPSAne3sg XygnTGV4dHlwZSBmdW5jdGlvbiBtdXN0IGJlIHNlbGVjdGVkIScpIH19JzsK KyAgICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC5zZXQoJ3Byc2xleHR5cGUn LCBtc2cpOworICAgICAgICAgICAgcmV0dXJuIG1zZzsKKyAgICAgICAgICB9 CisKKyAgICAgICAgICAvLyBWYWxpZGF0ZSBzY2hlbWEgZm9yIGZ0cyBwYXJz ZXIKKyAgICAgICAgICBlbHNlIGlmIChfLmlzVW5kZWZpbmVkKHNjaGVtYSkg fHwKKyAgICAgICAgICAgICAgICAgICAgXy5pc051bGwoc2NoZW1hKSB8fAor ICAgICAgICAgICAgICAgICAgICBTdHJpbmcoc2NoZW1hKS5yZXBsYWNlKC9e XHMrfFxzKyQvZywgJycpID09ICcnKSB7CisgICAgICAgICAgICB2YXIgbXNn ID0gJ3t7IF8oJ1NjaGVtYSBtdXN0IGJlIHNlbGVjdGVkIScpIH19JzsKKyAg ICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC5zZXQoJ3NjaGVtYScsIG1zZyk7 CisgICAgICAgICAgICByZXR1cm4gbXNnOworICAgICAgICAgIH0KKyAgICAg ICAgICBlbHNlIHRoaXMuZXJyb3JNb2RlbC5jbGVhcigpOworCisgICAgICAg ICAgdGhpcy50cmlnZ2VyKCdvbi1zdGF0dXMtY2xlYXInKTsKKyAgICAgICAg ICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorICAgICAgfSkKKyAgICB9KTsK KyAgfQorCityZXR1cm4gcGdCcm93c2VyLk5vZGVzWydjb2xsLWZ0c19wYXJz ZXInXTsKK30pOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt LWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z0c19wYXJzZXIvdGVtcGxhdGVzL2Z0 c19wYXJzZXIvc3FsLzkuMV9wbHVzL2NyZWF0ZS5zcWwgYi93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy9mdHNfcGFyc2VyL3RlbXBsYXRlcy9mdHNfcGFyc2VyL3NxbC85LjFf cGx1cy9jcmVhdGUuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAuLmRlNmU1YjEKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy9mdHNfcGFyc2VyL3RlbXBsYXRlcy9mdHNfcGFyc2VyL3NxbC85LjFf cGx1cy9jcmVhdGUuc3FsCkBAIC0wLDAgKzEsMTQgQEAKK3sjIENSRUFURSBG VFMgUEFSU0VSIFN0YXRlbWVudCAjfQoreyUgaWYgZGF0YSBhbmQgZGF0YS5z Y2hlbWEgYW5kIGRhdGEubmFtZSBhbmQgZGF0YS5wcnNzdGFydCBhbmQgZGF0 YS5wcnN0b2tlbiBhbmQgZGF0YS5wcnNlbmQgYW5kIGRhdGEucHJzbGV4dHlw ZSAlfQorQ1JFQVRFIFRFWFQgU0VBUkNIIFBBUlNFUiB7eyBjb25ufHF0SWRl bnQoZGF0YS5zY2hlbWEsIGRhdGEubmFtZSkgfX0gKAorICAgIFNUQVJUID0g e3tkYXRhLnByc3N0YXJ0fX0sCisgICAgR0VUVE9LRU4gPSB7e2RhdGEucHJz dG9rZW59fSwKKyAgICBFTkQgPSB7e2RhdGEucHJzZW5kfX0sCisgICAgTEVY VFlQRVMgPSB7e2RhdGEucHJzbGV4dHlwZX19eyUgaWYgZGF0YS5wcnNoZWFk bGluZSBhbmQgZGF0YS5wcnNoZWFkbGluZSAhPSAnLSclfSwKKyAgICBIRUFE TElORSA9IHt7ZGF0YS5wcnNoZWFkbGluZX19LHslIGVuZGlmICV9CispOwor eyMgRGVzY3JpcHRpb24gZm9yIEZUU19QQVJTRVIgI30KK3slIGlmIGRhdGEu ZGVzY3JpcHRpb24gJX0KK0NPTU1FTlQgT04gVEVYVCBTRUFSQ0ggUEFSU0VS IHt7IGNvbm58cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0YS5uYW1lKSB9fQor ICAgICAgSVMge3sgZGF0YS5kZXNjcmlwdGlvbnxxdExpdGVyYWwgfX07Cit7 JSBlbmRpZiAlfXslIGVuZGlmICV9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg ZmlsZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnRzX3BhcnNlci90 ZW1wbGF0ZXMvZnRzX3BhcnNlci9zcWwvOS4xX3BsdXMvZGVsZXRlLnNxbCBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL2Z0c19wYXJzZXIvdGVtcGxhdGVzL2Z0c19wYXJz ZXIvc3FsLzkuMV9wbHVzL2RlbGV0ZS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMC4uNzM2MTEwNQotLS0gL2Rldi9udWxsCisrKyBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL2Z0c19wYXJzZXIvdGVtcGxhdGVzL2Z0c19wYXJz ZXIvc3FsLzkuMV9wbHVzL2RlbGV0ZS5zcWwKQEAgLTAsMCArMSwyMyBAQAor eyMgRkVUQ0ggRlRTIFBBUlNFUiBOQU1FIFN0YXRlbWVudCAjfQoreyUgaWYg cGlkICV9CitTRUxFQ1QKKyAgICBwLnByc25hbWUgQVMgbmFtZSwKKyAgICAo CisgICAgU0VMRUNUCisgICAgICAgIG5zcG5hbWUKKyAgICBGUk9NCisgICAg ICAgIHBnX25hbWVzcGFjZQorICAgIFdIRVJFCisgICAgICAgIG9pZCA9IHAu cHJzbmFtZXNwYWNlCisgICAgKSBhcyBzY2hlbWEKK0ZST00KKyAgICBwZ190 c19wYXJzZXIgcCBMRUZUIEpPSU4gcGdfZGVzY3JpcHRpb24gZAorICAgIE9O IGQub2Jqb2lkPXAub2lkIEFORCBkLmNsYXNzb2lkPSdwZ190c19wYXJzZXIn OjpyZWdjbGFzcworV0hFUkUKKyAgICBwLm9pZCA9IHt7cGlkfX06Ok9JRDsK K3slIGVuZGlmICV9CisKK3sjIERST1AgRlRTIFBBUlNFUiBTdGF0ZW1lbnQg I30KK3slIGlmIHNjaGVtYSBhbmQgbmFtZSAlfQorRFJPUCBURVhUIFNFQVJD SCBQQVJTRVIge3tjb25ufHF0SWRlbnQoc2NoZW1hKX19Lnt7Y29ubnxxdElk ZW50KG5hbWUpfX0geyUgaWYgY2FzY2FkZSAlfUNBU0NBREV7JWVuZGlmJX07 Cit7JSBlbmRpZiAlfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm ZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z0c19wYXJzZXIvdGVtcGxhdGVz L2Z0c19wYXJzZXIvc3FsLzkuMV9wbHVzL2Z1bmN0aW9ucy5zcWwgYi93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy9mdHNfcGFyc2VyL3RlbXBsYXRlcy9mdHNfcGFyc2VyL3Nx bC85LjFfcGx1cy9mdW5jdGlvbnMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAuLjk1OTc3OTAKLS0tIC9kZXYvbnVsbAorKysgYi93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy9mdHNfcGFyc2VyL3RlbXBsYXRlcy9mdHNfcGFyc2Vy L3NxbC85LjFfcGx1cy9mdW5jdGlvbnMuc3FsCkBAIC0wLDAgKzEsNTggQEAK K3sjIEZFVENIIHN0YXJ0IGZ1bmN0aW9ucyBmb3IgRlRTX1BBUlNFUiAjfQor eyUgaWYgc3RhcnQgJX0KK1NFTEVDVAorICAgIHByb25hbWUsIG5zcG5hbWUK K0ZST00KKyAgICBwZ19wcm9jIEpPSU4gcGdfbmFtZXNwYWNlIG4gT04gbi5v aWQ9cHJvbmFtZXNwYWNlCitXSEVSRQorICAgIHByb2FyZ3R5cGVzPScyMjgx IDIzJworT1JERVIgQlkgcHJvbmFtZTsKK3slIGVuZGlmICV9CisKK3sjIEZF VENIIHRva2VuIGZ1bmN0aW9ucyBmb3IgRlRTX1BBUlNFUiAjfQoreyUgaWYg dG9rZW4gJX0KK1NFTEVDVAorICAgIHByb25hbWUsIG5zcG5hbWUKK0ZST00K KyAgICBwZ19wcm9jIEpPSU4gcGdfbmFtZXNwYWNlIG4gT04gbi5vaWQ9cHJv bmFtZXNwYWNlCitXSEVSRQorICAgIHByb2FyZ3R5cGVzPScyMjgxIDIyODEg MjI4MScKK09SREVSIEJZCisgICAgcHJvbmFtZTsKK3slIGVuZGlmICV9CisK K3sjIEZFVENIIGVuZCBmdW5jdGlvbnMgZm9yIEZUU19QQVJTRVIgI30KK3sl IGlmIGVuZCAlfQorU0VMRUNUCisgICAgcHJvbmFtZSwgbnNwbmFtZQorRlJP TQorICAgIHBnX3Byb2MgSk9JTiBwZ19uYW1lc3BhY2UgbiBPTiBuLm9pZD1w cm9uYW1lc3BhY2UKK1dIRVJFCisgICAgcHJvcmV0dHlwZT0yMjc4IGFuZCBw cm9hcmd0eXBlcz0nMjI4MScKK09SREVSIEJZCisgICAgcHJvbmFtZTsKK3sl IGVuZGlmICV9CisKK3sjIEZFVENIIGxleHR5cGUgZnVuY3Rpb25zIGZvciBG VFNfUEFSU0VSICN9Cit7JSBpZiBsZXh0eXBlICV9CitTRUxFQ1QKKyAgICBw cm9uYW1lLCBuc3BuYW1lCitGUk9NCisgICAgcGdfcHJvYyBKT0lOIHBnX25h bWVzcGFjZSBuIE9OIG4ub2lkPXByb25hbWVzcGFjZQorV0hFUkUKKyAgICBw cm9yZXR0eXBlPTIyODEgYW5kIHByb2FyZ3R5cGVzPScyMjgxJworT1JERVIg QlkKKyAgICBwcm9uYW1lOworeyUgZW5kaWYgJX0KKworeyMgRkVUQ0ggaGVh ZGxpbmUgZnVuY3Rpb25zIGZvciBGVFNfUEFSU0VSICN9Cit7JSBpZiBoZWFk bGluZSAlfQorU0VMRUNUCisgICAgcHJvbmFtZSwgbnNwbmFtZQorRlJPTQor ICAgIHBnX3Byb2MgSk9JTiBwZ19uYW1lc3BhY2UgbiBPTiBuLm9pZD1wcm9u YW1lc3BhY2UKK1dIRVJFCisgICAgcHJvYXJndHlwZXM9JzIyODEgMjI4MSAz NjE1JworT1JERVIgQlkKKyAgICBwcm9uYW1lOworeyUgZW5kaWYgJX0KZGlm ZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z0c19wYXJzZXIvdGVtcGxhdGVz L2Z0c19wYXJzZXIvc3FsLzkuMV9wbHVzL25vZGVzLnNxbCBiL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL2Z0c19wYXJzZXIvdGVtcGxhdGVzL2Z0c19wYXJzZXIvc3FsLzku MV9wbHVzL25vZGVzLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi5iOGViNTIyCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvZnRzX3BhcnNlci90ZW1wbGF0ZXMvZnRzX3BhcnNlci9zcWwvOS4x X3BsdXMvbm9kZXMuc3FsCkBAIC0wLDAgKzEsMTMgQEAKK3sjIEZFVENIIEZU UyBQQVJTRVIgbmFtZSBzdGF0ZW1lbnQgI30KK1NFTEVDVAorICAgIG9pZCwg cHJzbmFtZSBhcyBuYW1lCitGUk9NCisgICAgcGdfdHNfcGFyc2VyIHBycwor V0hFUkUKK3slIGlmIHNjaWQgJX0KKyAgICBwcnMucHJzbmFtZXNwYWNlID0g e3tzY2lkfX06Ok9JRAoreyUgZWxpZiBwaWQgJX0KKyAgICBwcnMub2lkID0g e3twaWR9fTo6T0lECit7JSBlbmRpZiAlfQorCitPUkRFUiBCWSBuYW1lClwg Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvZnRzX3BhcnNlci90ZW1wbGF0ZXMvZnRzX3BhcnNlci9zcWwv OS4xX3BsdXMvcHJvcGVydGllcy5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdHNf cGFyc2VyL3RlbXBsYXRlcy9mdHNfcGFyc2VyL3NxbC85LjFfcGx1cy9wcm9w ZXJ0aWVzLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li5hNzk2NzdkCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv ZnRzX3BhcnNlci90ZW1wbGF0ZXMvZnRzX3BhcnNlci9zcWwvOS4xX3BsdXMv cHJvcGVydGllcy5zcWwKQEAgLTAsMCArMSwzMCBAQAoreyMgRkVUQ0ggcHJv cGVydGllcyBmb3IgRlRTIFBBUlNFUiAjfQorU0VMRUNUCisgICAgcHJzLm9p ZCwKKyAgICBwcnMucHJzbmFtZSBhcyBuYW1lLAorICAgIHBycy5wcnNzdGFy dCwKKyAgICBwcnMucHJzdG9rZW4sCisgICAgcHJzLnByc2VuZCwKKyAgICBw cnMucHJzbGV4dHlwZSwKKyAgICBwcnMucHJzaGVhZGxpbmUsCisgICAgZGVz Y3JpcHRpb24sCisgICAgcHJzLnByc25hbWVzcGFjZSBBUyBzY2hlbWEKK0ZS T00KKyAgICBwZ190c19wYXJzZXIgcHJzCisgICAgTEVGVCBPVVRFUiBKT0lO IHBnX2Rlc2NyaXB0aW9uIGRlcworT04KKyAgICAoCisgICAgZGVzLm9iam9p ZD1wcnMub2lkCisgICAgQU5EIGRlcy5jbGFzc29pZD0ncGdfdHNfcGFyc2Vy Jzo6cmVnY2xhc3MKKyAgICApCitXSEVSRQoreyUgaWYgc2NpZCAlfQorICAg IHBycy5wcnNuYW1lc3BhY2UgPSB7e3NjaWR9fTo6T0lECit7JSBlbGlmIG5h bWUgJX0KKyAgICBwcnMucHJzbmFtZSA9IHt7bmFtZXxxdExpdGVyYWx9fQor eyUgZW5kaWYgJX0KK3slIGlmIHBpZCAlfQorICAgIEFORCBwcnMub2lkID0g e3twaWR9fTo6T0lECit7JSBlbmRpZiAlfQorT1JERVIgQlkKKyAgICBwcnMu cHJzbmFtZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdp dCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL2Z0c19wYXJzZXIvdGVtcGxhdGVzL2Z0c19w YXJzZXIvc3FsLzkuMV9wbHVzL3NjaGVtYS5zcWwgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy9mdHNfcGFyc2VyL3RlbXBsYXRlcy9mdHNfcGFyc2VyL3NxbC85LjFfcGx1 cy9zY2hlbWEuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLjI5ZGRhYmEKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy9mdHNfcGFyc2VyL3RlbXBsYXRlcy9mdHNfcGFyc2VyL3NxbC85LjFfcGx1 cy9zY2hlbWEuc3FsCkBAIC0wLDAgKzEsMTkgQEAKK3sjIEZFVENIIHN0YXRl bWVudCBmb3IgU0NIRU1BIG5hbWUgI30KK3slIGlmIGRhdGEuc2NoZW1hICV9 CitTRUxFQ1QKKyAgICBuc3BuYW1lCitGUk9NCisgICAgcGdfbmFtZXNwYWNl CitXSEVSRQorICAgIG9pZCA9IHt7ZGF0YS5zY2hlbWF9fTo6T0lECisKK3sl IGVsaWYgZGF0YS5pZCAlfQorU0VMRUNUCisgICAgbnNwbmFtZQorRlJPTQor ICAgIHBnX25hbWVzcGFjZSBuc3AKKyAgICBMRUZUIEpPSU4gcGdfdHNfcGFy c2VyIHBycworICAgIE9OIHBycy5wcnNuYW1lc3BhY2UgPSBuc3Aub2lkCitX SEVSRQorICAgIHBycy5vaWQgPSB7e2RhdGEuaWR9fTo6T0lECit7JSBlbmRp ZiAlfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL2Z0c19wYXJzZXIvdGVtcGxhdGVzL2Z0c19wYXJz ZXIvc3FsLzkuMV9wbHVzL3NxbC5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdHNf cGFyc2VyL3RlbXBsYXRlcy9mdHNfcGFyc2VyL3NxbC85LjFfcGx1cy9zcWwu c3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJmYTEx ZTYKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdHNfcGFy c2VyL3RlbXBsYXRlcy9mdHNfcGFyc2VyL3NxbC85LjFfcGx1cy9zcWwuc3Fs CkBAIC0wLDAgKzEsNDYgQEAKK3sjIFJldmVyc2UgZW5naW5lZXJlZCBzcWwg Zm9yIEZUUyBQQVJTRVIgI30KK3slIGlmIHBpZCBhbmQgc2NpZCAlfQorU0VM RUNUCisgICAgYXJyYXlfdG9fc3RyaW5nKGFycmF5X2FnZyhzcWwpLCBFJ1xu XG4nKSBhcyBzcWwKK0ZST00KKyAgICAoCisgICAgU0VMRUNUCisgICAgICAg IEUnLS0gVGV4dCBTZWFyY2ggUGFyc2VyOiAnIHx8IG5zcG5hbWUgfHwgRScu JyB8fCBwcnMucHJzbmFtZSB8fAorICAgICAgICBFJ1xuXG4tLSBEUk9QIFRF WFQgU0VBUkNIIFBBUlNFUiAnIHx8IG5zcG5hbWUgfHwgRScuJyB8fCBwcnMu cHJzbmFtZSB8fAorICAgICAgICBFJ1xuXG5DUkVBVEUgVEVYVCBTRUFSQ0gg UEFSU0VSICcgfHwgbnNwbmFtZSB8fCBFJy4nIHx8ICBwcnMucHJzbmFtZSB8 fCBFJyAoXG4nIHx8CisgICAgICAgIEUnICAgIFNUQVJUID0gJyB8fCBwcnMu cHJzc3RhcnQgfHwgRScsXG4nIHx8CisgICAgICAgIEUnICAgIEdFVFRPS0VO ID0gJyB8fCBwcnMucHJzdG9rZW4gfHwgRScsXG4nIHx8CisgICAgICAgIEUn ICAgIEVORCA9ICcgfHwgcHJzLnByc2VuZCB8fCBFJyxcbicgfHwKKyAgICAg ICAgRScgICAgTEVYVFlQRVMgPSAnIHx8IHBycy5wcnNsZXh0eXBlIHx8Cisg ICAgICAgIENBU0UKKyAgICAgICAgICAgIFdIRU4gcHJzLnByc2hlYWRsaW5l ICE9ICctJzo6cmVnY2xhc3MgVEhFTiBFJyxcbiAgICBIRUFETElORSA9ICcg fHwgcHJzLnByc2hlYWRsaW5lCisgICAgICAgICAgICBFTFNFICcnIEVORCB8 fCBFJ1xuKTsnIHx8CisgICAgICAgIENBU0UKKyAgICAgICAgICAgIFdIRU4g ZGVzY3JpcHRpb24gSVMgTk9UIE5VTEwgVEhFTgorICAgICAgICAgICAgICAg IEUnXG5cbkNPTU1FTlQgT04gVEVYVCBTRUFSQ0ggVEVNUExBVEUgJyB8fCBu c3BuYW1lIHx8IEUnLicgfHwgcHJzLnByc25hbWUgfHwKKyAgICAgICAgICAg ICAgICBFJyBJUyAnIHx8IHBnX2NhdGFsb2cucXVvdGVfbGl0ZXJhbChkZXNj cmlwdGlvbikgfHwgRSc7JworICAgICAgICAgICAgRUxTRSAnJyAgRU5EIGFz IHNxbAorICAgIEZST00KKyAgICAgICAgcGdfdHNfcGFyc2VyIHBycworICAg IExFRlQgSk9JTiAoCisgICAgICAgIFNFTEVDVAorICAgICAgICAgICAgZGVz LmRlc2NyaXB0aW9uIGFzIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAgZGVz Lm9iam9pZCBhcyBkZXNjb2lkCisgICAgICAgIEZST00KKyAgICAgICAgICAg IHBnX2Rlc2NyaXB0aW9uIGRlcworICAgICAgICBXSEVSRQorICAgICAgICAg ICAgZGVzLm9iam9pZD17e3BpZH19OjpPSUQgQU5EIGRlcy5jbGFzc29pZD0n cGdfdHNfcGFyc2VyJzo6cmVnY2xhc3MKKyAgICApIGEgT04gKGEuZGVzY29p ZCA9IHBycy5vaWQpCisgICAgTEVGVCBKT0lOICgKKyAgICAgICAgU0VMRUNU CisgICAgICAgICAgICBuc3BuYW1lLAorICAgICAgICAgICAgbnNwLm9pZCBh cyBub2lkCisgICAgICAgIEZST00KKyAgICAgICAgICAgIHBnX25hbWVzcGFj ZSBuc3AKKyAgICAgICAgV0hFUkUKKyAgICAgICAgICAgIG9pZCA9IHt7c2Np ZH19OjpPSUQKKyAgICApIGIgT04gKGIubm9pZCA9IHBycy5wcnNuYW1lc3Bh Y2UpCitXSEVSRQorICAgIHBycy5vaWQ9e3twaWR9fTo6T0lECispIGFzIGM7 Cit7JSBlbmRpZiAlfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm ZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z0c19wYXJzZXIvdGVtcGxhdGVz L2Z0c19wYXJzZXIvc3FsLzkuMV9wbHVzL3VwZGF0ZS5zcWwgYi93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy9mdHNfcGFyc2VyL3RlbXBsYXRlcy9mdHNfcGFyc2VyL3NxbC85 LjFfcGx1cy91cGRhdGUuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLmFjMjlkOTkKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy9mdHNfcGFyc2VyL3RlbXBsYXRlcy9mdHNfcGFyc2VyL3NxbC85 LjFfcGx1cy91cGRhdGUuc3FsCkBAIC0wLDAgKzEsMjIgQEAKK3sjIFVQREFU RSBzdGF0ZW1lbnQgZm9yIEZUUyBQQVJTRVIgI30KK3slIGlmIGRhdGEgJX0K K3slIGlmIGRhdGEubmFtZSBhbmQgZGF0YS5uYW1lICE9IG9fZGF0YS5uYW1l ICV9CitBTFRFUiBURVhUIFNFQVJDSCBQQVJTRVIge3tjb25ufHF0SWRlbnQo b19kYXRhLnNjaGVtYSl9fS57e2Nvbm58cXRJZGVudChvX2RhdGEubmFtZSl9 fQorICAgIFJFTkFNRSBUTyB7e2RhdGEubmFtZX19OworeyUgZW5kaWYgJX0K KworeyNpbiBjYXNlIG9mIHJlbmFtZSwgdXNlIG5ldyBmdHMgdGVtcGxhdGUg bmFtZSAjfQoreyUgaWYgZGF0YS5uYW1lIGFuZCBkYXRhLm5hbWUgIT0gb19k YXRhLm5hbWUgJX0KK3slIHNldCBuYW1lID0gZGF0YS5uYW1lICV9Cit7JSBl bHNlICV9Cit7JSBzZXQgbmFtZSA9IG9fZGF0YS5uYW1lICV9Cit7JSBlbmRp ZiAlfQoreyUgaWYgZGF0YS5zY2hlbWEgYW5kIGRhdGEuc2NoZW1hICE9IG9f ZGF0YS5zY2hlbWEgJX0KK0FMVEVSIFRFWFQgU0VBUkNIIFBBUlNFUiB7e2Nv bm58cXRJZGVudChvX2RhdGEuc2NoZW1hKX19Lnt7Y29ubnxxdElkZW50KG5h bWUpfX0KKyAgICBTRVQgU0NIRU1BIHt7ZGF0YS5zY2hlbWF9fTsKK3slIGVu ZGlmICV9Cit7JSBpZiAiZGVzY3JpcHRpb24iIGluIGRhdGEgYW5kIGRhdGEu ZGVzY3JpcHRpb24gIT0gb19kYXRhLmRlc2NyaXB0aW9uICV9CitDT01NRU5U IE9OIFRFWFQgU0VBUkNIIFBBUlNFUiB7e2Nvbm58cXRJZGVudChvX2RhdGEu c2NoZW1hKX19Lnt7Y29ubnxxdElkZW50KG5hbWUpfX0KKyAgICBJUyB7eyBk YXRhLmRlc2NyaXB0aW9ufHF0TGl0ZXJhbCB9fTsKK3slIGVuZGlmICV9Cit7 JSBlbmRpZiAlfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK --001a1141dca2634bed052fe5e064 Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 8bit MIME-Version: 1.0 -- Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgadmin-hackers --001a1141dca2634bed052fe5e064--