Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1b2vdh-0000gh-In for pgadmin-hackers@arkaria.postgresql.org; Wed, 18 May 2016 07:11:30 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84_2) (envelope-from ) id 1b2vdg-0004hm-HL for pgadmin-hackers@arkaria.postgresql.org; Wed, 18 May 2016 07:11:28 +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 1b2vdM-0004TC-RK for pgadmin-hackers@postgresql.org; Wed, 18 May 2016 07:11:09 +0000 Received: from mail-vk0-x22b.google.com ([2607:f8b0:400c:c05::22b]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.84_2) (envelope-from ) id 1b2vdG-00041A-FF for pgadmin-hackers@postgresql.org; Wed, 18 May 2016 07:11:07 +0000 Received: by mail-vk0-x22b.google.com with SMTP id c189so50016534vkb.1 for ; Wed, 18 May 2016 00:11:02 -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=Nc3Dx6YyCtThqeTpuem32C0iYzNoQ1dA7+Ad8ejyunw=; b=lFvIx0xfrttVXnhY3iTnCJqzDUDh29tSlvkOePh9bcRB+alQHTAz7w2lshphYdmJdz mbk8PB+DSAKIai7lZKwXBBfJ9Tu2nEQLMugpQH9/lgqkiaCEKarW0pO1DoA8iUnntYGh YPfp5H6+zch6LVJ+pk9rrnpF3RdkWZpYDK/DBDoeFG8yPtKjNySa0/vNXMHgoqO7gOgJ XKSgsJfRj747IK4woiZp3Mlfu9zvbVeoZ0luofdXRlxVfFKrnaam+GrMlO0QNd9vK6Xf T2L8vyDB5aj1RvrsMIFMMU2Z2rwUwR+rKyH9uHvvqu3v+dmr403ffA7OIa6+g+7uHxQD OSuA== 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=Nc3Dx6YyCtThqeTpuem32C0iYzNoQ1dA7+Ad8ejyunw=; b=DyjPYYcLodL+NUbrQBN1xZ+AVrDRKe79IrwFL56umVPVTTLPLZXhJMVnwnqOldFraB 6b1vFOltRqnKiAiKK0v+6j2hGzdBh0bSL1Uhdta03YrWim0cUacu0xBGZLIL4CHI2C1X cymhH9+efKMpHpxGOsnWZ1zL8MlD7hZ0peiPYJvx+CDDUNDfkEIwQMYrfHoMxu4w47IF Wj+WYP0uIle5AM5VV7ER7/hXZFhlu6VB63VzQ00LiqBVXKQZGvHDfVf37IZ8vFp4yILU JLe/nixTQ4tiakyzbHtLpy6f347B6V4qf6FDrke/Hlm+xq2QpmAjVMUstXaRqCvYBb0M ZD8Q== X-Gm-Message-State: AOPr4FVCOdK1j7AYK8oX3/PsMczl6aMuo5XMtU3R/9UD4U0kUrjmCfzcoopfJZ/EsA8BwFs74H6mlw0M2iY8jwxI MIME-Version: 1.0 X-Received: by 10.159.35.5 with SMTP id 5mr3209217uae.118.1463555461308; Wed, 18 May 2016 00:11:01 -0700 (PDT) Received: by 10.31.189.70 with HTTP; Wed, 18 May 2016 00:11:01 -0700 (PDT) In-Reply-To: References: Date: Wed, 18 May 2016 12:41:01 +0530 Message-ID: Subject: Re: PATCH: FTS configuration node From: Sanket Mehta To: Harshal Dhumal Cc: Akshay Joshi , pgadmin-hackers Content-Type: multipart/mixed; boundary=001a11379e0461d42d0533188fd8 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 --001a11379e0461d42d0533188fd8 Content-Type: multipart/alternative; boundary=001a11379e0461d4280533188fd6 --001a11379e0461d4280533188fd6 Content-Type: text/plain; charset=UTF-8 Hi, PFA the revised patch. Response is lnline. Regards, Sanket Mehta Sr Software engineer Enterprisedb On Tue, May 17, 2016 at 12:54 PM, Harshal Dhumal < harshal.dhumal@enterprisedb.com> wrote: > Hi Sanket, > > Please find my review comments below: > > 1. In create mode it generates wrong sql. > > CREATE TEXT SEARCH CONFIGURATION test.asdf ( > COPY= > ); > > steps to reproduce: > a] Fill up any necessary fields in general tab. > b] On definition tab set Copy config filed and navigate to SQL tab. > c] Come back again to definition tab clear Copy config field and set > Parser field and again navigate to SQL tab > Fixed > > 2. Create new FTS configuration with parser throws below error. > > provide atleast copy config or parser. > > (this is because you have used key name for parser in js as "prsname" and > in python you have applied validations on key "parser") > Fixed > > 3. When we clear dictionary for any token using cross (x) button in > select2; JavaScript code for selecct2 fails. (see attached screenshot) > This occurs due to issue in select2 control. Its a generalized issue which will be resolved later. > > > > > > > -- > *Harshal Dhumal* > *Software Engineer * > > > > EenterpriseDB > > On Mon, May 16, 2016 at 7:37 PM, Sanket Mehta < > sanket.mehta@enterprisedb.com> wrote: > >> Hi, >> >> Revised patch is attached with this mail. >> My response is inline. >> >> >> Regards, >> Sanket Mehta >> Sr Software engineer >> Enterprisedb >> >> On Fri, May 13, 2016 at 6:20 PM, Akshay Joshi < >> akshay.joshi@enterprisedb.com> wrote: >> >>> Hi Sanket >>> >>> Below are my review comments: >>> >>> >>> - Add button should be disabled in Tokens tab while creating. >>> >>> Done >> >>> >>> - Unable to click on down arrow for token select control. >>> >>> Done >> >>> >>> - Title should be change from "Create FTS-dictionaries" to "Create >>> FTS-Configuration". >>> >>> Done >> >>> >>> - Tree node is not getting refreshed on name change. >>> >>> Done >> >>> >>> - Unable to rename FTS Configuration when name contains any capital >>> letter. >>> >>> Done >> >>> >>> - If user tries to add already existing token then respective row in >>> the backgrid should be highlighted. >>> >>> Done >> >>> >>> - "URL not found" when click on SQL help icon from the properties >>> dialog. >>> >>> Done >> >>> >>> - SQL should not be generated when remove and add the same token >>> again. Currently it is creating two sql's one for remove and another >>> is for add. >>> - *Fix for the above issue is*: - Add "keys: ['token']," to >>> TokenModel in your js file. >>> >>> Done >> >> >>> >>> On Fri, May 13, 2016 at 2:58 PM, Sanket Mehta < >>> sanket.mehta@enterprisedb.com> wrote: >>> >>>> Hi All, >>>> >>>> Last patch for FTS configuration does not contain node.ui.js file >>>> Kindly ignore it. >>>> >>>> Here is the new revised patch attached with this mail. >>>> Please do review it and let me know if any changes required >>>> >>>> Regards, >>>> Sanket Mehta >>>> Sr Software engineer >>>> Enterprisedb >>>> >>>> On Thu, May 12, 2016 at 4:38 PM, Sanket Mehta < >>>> sanket.mehta@enterprisedb.com> wrote: >>>> >>>>> Hi, >>>>> >>>>> PFA the revised patch. >>>>> Please do review it and let me know if anything is not proper. >>>>> >>>>> Regards, >>>>> Sanket Mehta >>>>> Sr Software engineer >>>>> Enterprisedb >>>>> >>>>> On Thu, May 5, 2016 at 8:19 PM, Harshal Dhumal < >>>>> harshal.dhumal@enterprisedb.com> wrote: >>>>> >>>>>> + patch link >>>>>> >>>>>> >>>>>> http://www.postgresql.org/message-id/CAFiP3vwkka+=1FOJ7kr2zbC4AzecoCa9eO9DZ34-Oyy_9gE92g@mail.gmail.com >>>>>> >>>>>> -- >>>>>> *Harshal Dhumal* >>>>>> *Software Engineer * >>>>>> >>>>>> >>>>>> >>>>>> EenterpriseDB >>>>>> >>>>>> On Thu, May 5, 2016 at 8:18 PM, Sanket Mehta < >>>>>> sanket.mehta@enterprisedb.com> wrote: >>>>>> >>>>>>> Hi, >>>>>>> >>>>>>> PFA first patch for FTS configuration node. >>>>>>> >>>>>>> It depends upon backgrid select2cell multi select control, for which >>>>>>> Harshal has sent the patch recently. >>>>>>> Please do apply his patch first and then apply this patch. >>>>>>> >>>>>>> Please do review it and let me know if any changes are required. >>>>>>> >>>>>>> >>>>>>> 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 >>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>>> >>>> -- >>>> Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org) >>>> To make changes to your subscription: >>>> http://www.postgresql.org/mailpref/pgadmin-hackers >>>> >>>> >>> >>> >>> -- >>> *Akshay Joshi* >>> *Principal Software Engineer * >>> >>> >>> >>> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246* >>> >> >> >> >> -- >> Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org) >> To make changes to your subscription: >> http://www.postgresql.org/mailpref/pgadmin-hackers >> >> > --001a11379e0461d4280533188fd6 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Hi,

PFA the revised patch.
Re= sponse is lnline.

Regards,
Sanket Mehta
Sr Software engineer
Enterprisedb

On Tue, May 17, 2016 at 12:54 PM, Harshal Dh= umal <harshal.dhumal@enterprisedb.com> wrote:<= br>
Hi Sanket,

Please find my review comments below:

1. In create mode it generates wrong sql.

CREATE TEXT SEARCH CONFIG= URATION test.asdf (
=C2=A0=C2=A0=C2=A0 COPY=3D
);
steps to reproduce:
=C2=A0=C2=A0=C2=A0 a] Fill up any necess= ary fields in general tab.
=C2=A0=C2=A0=C2=A0 b] On definition tab set C= opy config filed and navigate to SQL tab.
=C2=A0=C2=A0=C2=A0 c] Co= me back again to definition tab clear Copy config field and set Parser fiel= d and again navigate to SQL tab
Fixed=C2= =A0

2. Create new FTS configuration with parser throws below error.

provide atleast copy config or = parser.

(this is because you have used = key name for parser in js as "prsname" and in python you have app= lied validations on key "parser")
Fixed=C2=A0

3. When we clear dictionary for any token using cross (x)= button in select2; JavaScript code for selecct2 fails. (see attached scree= nshot)
This occurs due to issue in select2 contr= ol. Its a generalized issue which will be resolved later.






--=C2=A0
Harshal Dhumal
Software Engi= neer=C2=A0




On Mon, May 16= , 2016 at 7:37 PM, Sanket Mehta <sanket.mehta@enterprisedb.com= > wrote:
H= i,

Revised patch is attached with this mail.
M= y response is inline.


Regards= ,
Sanket Mehta
Sr Software engineer
Enterprisedb

On Fri, May 13, 2016 at 6:20 PM= , Akshay Joshi <akshay.joshi@enterprisedb.com> w= rote:
Hi Sanket=C2=A0

Below are my review comments:

<= /div>
  • Add button should be disabled in Tokens tab while creatin= g.
Done=C2=A0
=
  • Unable to clic= k on down arrow for token select control.=C2=A0
Done=C2=A0
  • Title should be change from "Create FTS-dictionaries" to "Create FTS-Configura= tion".
Done=C2=A0
  • Tree = node is not getting refreshed on name change.
Done=C2=A0
<= div dir=3D"ltr">
  • Unable to rename FTS Configuratio= n when name contains any capital letter.
Done=C2=A0
  • If user tries to add already existing token then re= spective row in the backgrid should be highlighted.
Done=C2=A0
  • "URL not found" w= hen click on SQL help icon from the properties dialog.=C2=A0
Done=C2=A0
<= span>
  • SQL= should not be generated when remove and add the same token again. C= urrently it is creating two sql's one for remove and anoth= er is for add.
    • Fix for the above issue is: - Add "k= eys: ['token']," to TokenModel in your js file.
Done
=C2=A0

On Fri, May 13, 2016 at 2:= 58 PM, Sanket Mehta <sanket.mehta@enterprisedb.com> wrote:
Hi All,
<= br>
Last patch for FTS configuration does not contain node.ui.js = file
Kindly ignore it.

Here is the new r= evised patch attached with this mail.
Please do review it and let= me know if any changes required

Regards,
Sanket Mehta
Sr Software engineer
Enterprisedb

On Thu, May 12, 2016 at 4:3= 8 PM, Sanket Mehta <sanket.mehta@enterprisedb.com> wrote:
Hi,

PFA the revised patch.
Please do review it and let me kn= ow if anything is not proper.
<= br clear=3D"all">
Regards,
Sanket Mehta
=
Sr Software engineer
Enterprisedb

On Thu, May 5, 2016 at 8:19= PM, Harshal Dhumal <harshal.dhumal@enterprisedb.com>= wrote:

--=C2=A0
Harshal Dhumal
Software Engineer=C2=A0




On Thu, May 5, 2016 at 8:18 PM, Sa= nket Mehta <sanket.mehta@enterprisedb.com> wrote= :
= Hi,

PFA first patch for FTS configuration node.

It depends upon backgrid select2cell multi select control,= for which Harshal has sent the patch recently.
Please do apply h= is patch first and then apply this patch.

Please d= o review it and let me know if any changes are required.


Regards,
Sanket Meh= ta
Sr Software engineer
Enterprisedb
<= /div>


--
Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgadmin-hackers=






--
Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgadmin-hackers=




--
Akshay Joshi
Principal Softw= are Engineer=C2=A0
<= span style=3D"color:rgb(0,0,0);font-family:arial,sans-serif;font-size:13px;= border-collapse:collapse">
<= /b>
=
Phone: +91 20-3058-9517
Mobile: +91 976-788-8246
<= /font>



--
Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgadmin-hackers=



--001a11379e0461d4280533188fd6-- --001a11379e0461d42d0533188fd8 Content-Type: text/x-patch; charset=US-ASCII; name="fts_configurationv5.patch" Content-Disposition: attachment; filename="fts_configurationv5.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_iocj4qu71 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z0c19jb25maWd1cmF0aW9u cy9fX2luaXRfXy5weSBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z0c19jb25maWd1cmF0 aW9ucy9fX2luaXRfXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi42Yjg3NzQwCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvZnRzX2NvbmZpZ3VyYXRpb25zL19faW5pdF9fLnB5CkBAIC0wLDAg KzEsOTUxIEBACisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIwor IyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisjCisjIENvcHlyaWdo dCAoQykgMjAxNiwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorIyBU aGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FM IExpY2VuY2UKKyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisK KyIiIkRlZmluZXMgdmlld3MgZm9yIG1hbmFnZW1lbnQgb2YgRnRzIENvbmZp Z3VyYXRpb24gbm9kZSIiIgorCitpbXBvcnQganNvbgorZnJvbSBmbGFzayBp bXBvcnQgcmVuZGVyX3RlbXBsYXRlLCBtYWtlX3Jlc3BvbnNlLCBjdXJyZW50 X2FwcCwgcmVxdWVzdCwganNvbmlmeQorZnJvbSBmbGFzay5leHQuYmFiZWwg aW1wb3J0IGdldHRleHQgYXMgXworZnJvbSBwZ2FkbWluLnV0aWxzLmFqYXgg aW1wb3J0IG1ha2VfanNvbl9yZXNwb25zZSwgXAorICAgIG1ha2VfcmVzcG9u c2UgYXMgYWpheF9yZXNwb25zZSwgaW50ZXJuYWxfc2VydmVyX2Vycm9yLCBn b25lCitmcm9tIHBnYWRtaW4uYnJvd3Nlci51dGlscyBpbXBvcnQgUEdDaGls ZE5vZGVWaWV3Citmcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBz LnNlcnZlcnMuZGF0YWJhc2VzLnNjaGVtYXMudXRpbHMgXAorICAgIGltcG9y dCBTY2hlbWFDaGlsZE1vZHVsZQoraW1wb3J0IHBnYWRtaW4uYnJvd3Nlci5z ZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMuZGF0YWJhc2VzLnNjaGVtYXMgYXMgc2No ZW1hcworZnJvbSBwZ2FkbWluLnV0aWxzLmFqYXggaW1wb3J0IHByZWNvbmRp dGlvbl9yZXF1aXJlZAorZnJvbSBwZ2FkbWluLnV0aWxzLmRyaXZlciBpbXBv cnQgZ2V0X2RyaXZlcgorZnJvbSBjb25maWcgaW1wb3J0IFBHX0RFRkFVTFRf RFJJVkVSCitmcm9tIGZ1bmN0b29scyBpbXBvcnQgd3JhcHMKKworCitjbGFz cyBGdHNDb25maWd1cmF0aW9uTW9kdWxlKFNjaGVtYUNoaWxkTW9kdWxlKToK KyAgICAiIiIKKyAgICAgY2xhc3MgRnRzQ29uZmlndXJhdGlvbk1vZHVsZShT Y2hlbWFDaGlsZE1vZHVsZSkKKworICAgICAgICBBIG1vZHVsZSBjbGFzcyBm b3IgRlRTIENvbmZpZ3VyYXRpb24gbm9kZSBkZXJpdmVkIGZyb20gU2NoZW1h Q2hpbGRNb2R1bGUuCisKKyAgICBNZXRob2RzOgorICAgIC0tLS0tLS0KKyAg ICAqIF9faW5pdF9fKCphcmdzLCAqKmt3YXJncykKKyAgICAgIC0gTWV0aG9k IGlzIHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUgRnRzQ29uZmlndXJhdGlvbk1v ZHVsZSBhbmQKKyAgICAgICAgaXQncyBiYXNlIG1vZHVsZS4KKworICAgICog Z2V0X25vZGVzKGdpZCwgc2lkLCBkaWQsIHNjaWQpCisgICAgICAtIE1ldGhv ZCBpcyB1c2VkIHRvIGdlbmVyYXRlIHRoZSBicm93c2VyIGNvbGxlY3Rpb24g bm9kZS4KKworICAgICogbm9kZV9pbm9kZSgpCisgICAgICAtIE1ldGhvZCBp cyBvdmVycmlkZGVuIGZyb20gaXRzIGJhc2UgY2xhc3MgdG8gbWFrZSB0aGUg bm9kZSBhcyBsZWFmIG5vZGUKKworICAgICogc2NyaXB0X2xvYWQoKQorICAg ICAgLSBMb2FkIHRoZSBtb2R1bGUgc2NyaXB0IGZvciBGVFMgQ29uZmlndXJh dGlvbiwgd2hlbiBhbnkgb2YgdGhlIHNjaGVtYQorICAgICAgbm9kZSBpcyBp bml0aWFsaXplZC4KKworICAgICogY3Nzc25pcHBldHMoKQorICAgICAgLSBM b2FkIHN0eWxlIHNoZWV0cyBmb3IgdGhpcyBtb2R1bGUKKyAgICAiIiIKKyAg ICBOT0RFX1RZUEUgPSAnZnRzX2NvbmZpZ3VyYXRpb24nCisgICAgQ09MTEVD VElPTl9MQUJFTCA9IF8oJ0ZUUyBDb25maWd1cmF0aW9ucycpCisKKyAgICBk ZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAg c2VsZi5taW5fdmVyID0gTm9uZQorICAgICAgICBzZWxmLm1heF92ZXIgPSBO b25lCisgICAgICAgIHNlbGYubWFuYWdlciA9IE5vbmUKKyAgICAgICAgc3Vw ZXIoRnRzQ29uZmlndXJhdGlvbk1vZHVsZSwgc2VsZikuX19pbml0X18oKmFy Z3MsICoqa3dhcmdzKQorCisgICAgZGVmIGdldF9ub2RlcyhzZWxmLCBnaWQs IHNpZCwgZGlkLCBzY2lkKToKKyAgICAgICAgIiIiCisgICAgICAgIEdlbmVy YXRlIHRoZSBjb2xsZWN0aW9uIG5vZGUKKyAgICAgICAgOnBhcmFtIGdpZDog Z3JvdXAgaWQKKyAgICAgICAgOnBhcmFtIHNpZDogc2VydmVyIGlkCisgICAg ICAgIDpwYXJhbSBkaWQ6IGRhdGFiYXNlIGlkCisgICAgICAgIDpwYXJhbSBz Y2lkOiBzY2hlbWEgaWQKKyAgICAgICAgIiIiCisgICAgICAgIHlpZWxkIHNl bGYuZ2VuZXJhdGVfYnJvd3Nlcl9jb2xsZWN0aW9uX25vZGUoc2NpZCkKKwor ICAgIEBwcm9wZXJ0eQorICAgIGRlZiBub2RlX2lub2RlKHNlbGYpOgorICAg ICAgICAiIiIKKyAgICAgICAgT3ZlcnJpZGUgdGhlIHByb3BlcnR5IHRvIG1h a2UgdGhlIG5vZGUgYXMgbGVhZiBub2RlCisgICAgICAgICIiIgorICAgICAg ICByZXR1cm4gRmFsc2UKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBzY3Jp cHRfbG9hZChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIExvYWQgdGhl IG1vZHVsZSBzY3JpcHQgZm9yIGZ0cyB0ZW1wbGF0ZSwgd2hlbiBhbnkgb2Yg dGhlIHNjaGVtYQorICAgICAgICBub2RlIGlzIGluaXRpYWxpemVkLgorICAg ICAgICAiIiIKKyAgICAgICAgcmV0dXJuIHNjaGVtYXMuU2NoZW1hTW9kdWxl Lk5PREVfVFlQRQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGNzc3NuaXBw ZXRzKHNlbGYpOgorICAgICAgICBzbmlwcGV0cyA9IFtyZW5kZXJfdGVtcGxh dGUoCisgICAgICAgICAgICAnZnRzX2NvbmZpZ3VyYXRpb24vY3NzL2Z0c19j b25maWd1cmF0aW9uLmNzcycsCisgICAgICAgICAgICBub2RlX3R5cGUgPSBz ZWxmLm5vZGVfdHlwZSwKKyAgICAgICAgICAgIF89XworICAgICAgICApXQor ICAgICAgICBzbmlwcGV0cy5leHRlbmQoc3VwZXIoU2NoZW1hQ2hpbGRNb2R1 bGUsc2VsZikuY3Nzc25pcHBldHMpCisgICAgICAgIHJldHVybiBzbmlwcGV0 cworCitibHVlcHJpbnQgPSBGdHNDb25maWd1cmF0aW9uTW9kdWxlKF9fbmFt ZV9fKQorCisKK2NsYXNzIEZ0c0NvbmZpZ3VyYXRpb25WaWV3KFBHQ2hpbGRO b2RlVmlldyk6CisgICAgIiIiCisgICAgY2xhc3MgRnRzQ29uZmlndXJhdGlv blZpZXcoUEdDaGlsZE5vZGVWaWV3KQorCisgICAgICAgIEEgdmlldyBjbGFz cyBmb3IgRlRTIENvbmZpZ3VyYXRpb24gbm9kZSBkZXJpdmVkIGZyb20gUEdD aGlsZE5vZGVWaWV3LgorICAgICAgICBUaGlzIGNsYXNzIGlzIHJlc3BvbnNp YmxlIGZvciBhbGwgdGhlIHN0dWZmIHJlbGF0ZWQgdG8gdmlldyBsaWtlCisg ICAgICAgIGNyZWF0ZS91cGRhdGUvZGVsZXRlIEZUUyBDb25maWd1cmF0aW9u LAorICAgICAgICBzaG93aW5nIHByb3BlcnRpZXMgb2Ygbm9kZSwgc2hvd2lu ZyBzcWwgaW4gc3FsIHBhbmUuCisKKyAgICBNZXRob2RzOgorICAgIC0tLS0t LS0KKyAgICAqIF9faW5pdF9fKCoqa3dhcmdzKQorICAgICAgLSBNZXRob2Qg aXMgdXNlZCB0byBpbml0aWFsaXplIHRoZSBGdHNDb25maWd1cmF0aW9uVmll dyBhbmQgaXQncyBiYXNlIHZpZXcuCisKKyAgICAqIG1vZHVsZV9qcygpCisg ICAgICAtIFRoaXMgcHJvcGVydHkgZGVmaW5lcyAoaWYgamF2YXNjcmlwdCkg ZXhpc3RzIGZvciB0aGlzIG5vZGUuCisgICAgICAgIE92ZXJyaWRlIHRoaXMg cHJvcGVydHkgZm9yIHlvdXIgb3duIGxvZ2ljCisKKyAgICAqIGNoZWNrX3By ZWNvbmRpdGlvbigpCisgICAgICAtIFRoaXMgZnVuY3Rpb24gd2lsbCBiZWhh dmUgYXMgYSBkZWNvcmF0b3Igd2hpY2ggd2lsbCBjaGVja3MKKyAgICAgICAg ZGF0YWJhc2UgY29ubmVjdGlvbiBiZWZvcmUgcnVubmluZyB2aWV3LCBpdCB3 aWxsIGFsc28gYXR0YWNoZXMKKyAgICAgICAgbWFuYWdlcixjb25uICYgdGVt cGxhdGVfcGF0aCBwcm9wZXJ0aWVzIHRvIHNlbGYKKworICAgICogbGlzdCgp CisgICAgICAtIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBsaXN0IGFsbCB0 aGUgIG5vZGVzIHdpdGhpbiB0aGF0IGNvbGxlY3Rpb24uCisKKyAgICAqIG5v ZGVzKCkKKyAgICAgIC0gVGhpcyBmdW5jdGlvbiB3aWxsIGJlIHVzZWQgdG8g Y3JlYXRlIGFsbCB0aGUgY2hpbGQgbm9kZSB3aXRoaW4gY29sbGVjdGlvbi4K KyAgICAgICAgSGVyZSBpdCB3aWxsIGNyZWF0ZSBhbGwgdGhlIEZUUyBDb25m aWd1cmF0aW9uIG5vZGVzLgorCisgICAgKiBub2RlKCkKKyAgICAgIC0gVGhp cyBmdW5jdGlvbiB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlIGEgbm9kZSBnaXZl biBpdHMgb2lkCisgICAgICAgIEhlcmUgaXQgd2lsbCBjcmVhdGUgdGhlIEZU UyBUZW1wbGF0ZSBub2RlIGJhc2VkIG9uIGl0cyBvaWQKKworICAgICogcHJv cGVydGllcyhnaWQsIHNpZCwgZGlkLCBzY2lkLCBjZmdpZCkKKyAgICAgIC0g VGhpcyBmdW5jdGlvbiB3aWxsIHNob3cgdGhlIHByb3BlcnRpZXMgb2YgdGhl IHNlbGVjdGVkIEZUUyBDb25maWd1cmF0aW9uIG5vZGUKKworICAgICogY3Jl YXRlKGdpZCwgc2lkLCBkaWQsIHNjaWQpCisgICAgICAtIFRoaXMgZnVuY3Rp b24gd2lsbCBjcmVhdGUgdGhlIG5ldyBGVFMgQ29uZmlndXJhdGlvbiBvYmpl Y3QKKworICAgICogdXBkYXRlKGdpZCwgc2lkLCBkaWQsIHNjaWQsIGNmZ2lk KQorICAgICAgLSBUaGlzIGZ1bmN0aW9uIHdpbGwgdXBkYXRlIHRoZSBkYXRh IGZvciB0aGUgc2VsZWN0ZWQgRlRTIENvbmZpZ3VyYXRpb24gbm9kZQorCisg ICAgKiBkZWxldGUoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgY2ZnaWQp OgorICAgICAgLSBUaGlzIGZ1bmN0aW9uIHdpbGwgZHJvcCB0aGUgRlRTIENv bmZpZ3VyYXRpb24gb2JqZWN0CisKKyAgICAqIG1zcWwoZ2lkLCBzaWQsIGRp ZCwgc2NpZCwgY2ZnaWQpCisgICAgICAtIFRoaXMgZnVuY3Rpb24gaXMgdXNl ZCB0byByZXR1cm4gbW9kaWZpZWQgU1FMIGZvciB0aGUgc2VsZWN0ZWQgbm9k ZQorCisgICAgKiBnZXRfc3FsKGRhdGEsIGNmZ2lkKQorICAgICAgLSBUaGlz IGZ1bmN0aW9uIHdpbGwgZ2VuZXJhdGUgc3FsIGZyb20gbW9kZWwgZGF0YQor CisgICAgKiBzcWwoZ2lkLCBzaWQsIGRpZCwgc2NpZCwgY2ZnaWQpOgorICAg ICAgLSBUaGlzIGZ1bmN0aW9uIHdpbGwgZ2VuZXJhdGUgc3FsIHRvIHNob3cg aW4gc3FsIHBhbmUgZm9yIG5vZGUuCisKKyAgICAqIHBhcnNlcnMoZ2lkLCBz aWQsIGRpZCwgc2NpZCk6CisgICAgICAtIFRoaXMgZnVuY3Rpb24gd2lsbCBm ZXRjaCBhbGwgZnRwIHBhcnNlcnMgZnJvbSB0aGUgc2FtZSBzY2hlbWEKKwor ICAgICogY29weUNvbmZpZygpOgorICAgICAgLSBUaGlzIGZ1bmN0aW9uIHdp bGwgZmV0Y2ggYWxsIGV4aXN0ZWQgZnRzIGNvbmZpZ3VyYXRpb25zIGZyb20g c2FtZSBzY2hlbWEKKworICAgICogdG9rZW5zKCk6CisgICAgICAtIFRoaXMg ZnVuY3Rpb24gd2lsbCBmZXRjaCBhbGwgdG9rZW5zIGZyb20gZnRzIHBhcnNl ciByZWxhdGVkIHRvIG5vZGUKKworICAgICogZGljdGlvbmFyaWVzKCk6Cisg ICAgICAtIFRoaXMgZnVuY3Rpb24gd2lsbCBmZXRjaCBhbGwgZGljdGlvbmFy aWVzIHJlbGF0ZWQgdG8gbm9kZQorCisgICAgKiBkZXBlbmRlbnRzKGdpZCwg c2lkLCBkaWQsIHNjaWQsIGNmZ2lkKToKKyAgICAgIC0gVGhpcyBmdW5jdGlv biBnZXQgdGhlIGRlcGVuZGVudHMgYW5kIHJldHVybiBhamF4IHJlc3BvbnNl IGZvciB0aGUgbm9kZS4KKworICAgICogZGVwZW5kZW5jaWVzKHNlbGYsIGdp ZCwgc2lkLCBkaWQsIHNjaWQsIGNmZ2lkKToKKyAgICAgIC0gVGhpcyBmdW5j dGlvbiBnZXQgdGhlIGRlcGVuZGVuY2llcyBhbmQgcmV0dXJuIGFqYXggcmVz cG9uc2UgZm9yIG5vZGUuCisKKyAgICAiIiIKKworICAgIG5vZGVfdHlwZSA9 IGJsdWVwcmludC5ub2RlX3R5cGUKKworICAgIHBhcmVudF9pZHMgPSBbCisg ICAgICAgIHsndHlwZSc6ICdpbnQnLCAnaWQnOiAnZ2lkJ30sCisgICAgICAg IHsndHlwZSc6ICdpbnQnLCAnaWQnOiAnc2lkJ30sCisgICAgICAgIHsndHlw ZSc6ICdpbnQnLCAnaWQnOiAnZGlkJ30sCisgICAgICAgIHsndHlwZSc6ICdp bnQnLCAnaWQnOiAnc2NpZCd9CisgICAgXQorICAgIGlkcyA9IFsKKyAgICAg ICAgeyd0eXBlJzogJ2ludCcsICdpZCc6ICdjZmdpZCd9CisgICAgXQorCisg ICAgb3BlcmF0aW9ucyA9IGRpY3QoeworICAgICAgICAnb2JqJzogWworICAg ICAgICAgICAgeydnZXQnOiAncHJvcGVydGllcycsICdkZWxldGUnOiAnZGVs ZXRlJywgJ3B1dCc6ICd1cGRhdGUnfSwKKyAgICAgICAgICAgIHsnZ2V0Jzog J2xpc3QnLCAncG9zdCc6ICdjcmVhdGUnfQorICAgICAgICBdLAorICAgICAg ICAnY2hpbGRyZW4nOiBbeworICAgICAgICAgICAgJ2dldCc6ICdjaGlsZHJl bicKKyAgICAgICAgfV0sCisgICAgICAgICdkZWxldGUnOiBbeydkZWxldGUn OiAnZGVsZXRlJ31dLAorICAgICAgICAnbm9kZXMnOiBbeydnZXQnOiAnbm9k ZSd9LCB7J2dldCc6ICdub2Rlcyd9XSwKKyAgICAgICAgJ3NxbCc6IFt7J2dl dCc6ICdzcWwnfV0sCisgICAgICAgICdtc3FsJzogW3snZ2V0JzogJ21zcWwn fSwgeydnZXQnOiAnbXNxbCd9XSwKKyAgICAgICAgJ3N0YXRzJzogW3snZ2V0 JzogJ3N0YXRpc3RpY3MnfV0sCisgICAgICAgICdkZXBlbmRlbmN5JzogW3sn Z2V0JzogJ2RlcGVuZGVuY2llcyd9XSwKKyAgICAgICAgJ2RlcGVuZGVudCc6 IFt7J2dldCc6ICdkZXBlbmRlbnRzJ31dLAorICAgICAgICAnbW9kdWxlLmpz JzogW3t9LCB7fSwgeydnZXQnOiAnbW9kdWxlX2pzJ31dLAorICAgICAgICAn cGFyc2Vycyc6IFt7J2dldCc6ICdwYXJzZXJzJ30sCisgICAgICAgICAgICAg ICAgICAgICAgICAgIHsnZ2V0JzogJ3BhcnNlcnMnfV0sCisgICAgICAgICdj b3B5Q29uZmlnJzogW3snZ2V0JzogJ2NvcHlDb25maWcnfSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHsnZ2V0JzogJ2NvcHlDb25maWcnfV0s CisgICAgICAgICd0b2tlbnMnOiBbeydnZXQnOiAndG9rZW5zJ30sIHsnZ2V0 JzogJ3Rva2Vucyd9XSwKKyAgICAgICAgJ2RpY3Rpb25hcmllcyc6IFt7fSwg eydnZXQnOiAnZGljdGlvbmFyaWVzJ31dLAorICAgIH0pCisKKyAgICBkZWYg X2luaXRfKHNlbGYsICoqa3dhcmdzKToKKyAgICAgICAgc2VsZi5jb25uID0g Tm9uZQorICAgICAgICBzZWxmLnRlbXBsYXRlX3BhdGggPSBOb25lCisgICAg ICAgIHNlbGYubWFuYWdlciA9IE5vbmUKKyAgICAgICAgc3VwZXIoRnRzQ29u ZmlndXJhdGlvblZpZXcsIHNlbGYpLl9faW5pdF9fKCoqa3dhcmdzKQorCisg ICAgZGVmIG1vZHVsZV9qcyhzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAg IExvYWQgSlMgZmlsZSAoZnRzX2NvbmZpZ3VyYXRpb24uanMpIGZvciB0aGlz IG1vZHVsZS4KKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBtYWtlX3Jl c3BvbnNlKAorICAgICAgICAgICAgcmVuZGVyX3RlbXBsYXRlKAorICAgICAg ICAgICAgICAgICJmdHNfY29uZmlndXJhdGlvbi9qcy9mdHNfY29uZmlndXJh dGlvbi5qcyIsCisgICAgICAgICAgICAgICAgXz1fCisgICAgICAgICAgICAp LAorICAgICAgICAgICAgMjAwLCB7J0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNh dGlvbi94LWphdmFzY3JpcHQnfQorICAgICAgICApCisKKyAgICBkZWYgY2hl Y2tfcHJlY29uZGl0aW9uKGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhp cyBmdW5jdGlvbiB3aWxsIGJlaGF2ZSBhcyBhIGRlY29yYXRvciB3aGljaCB3 aWxsIGNoZWNrcworICAgICAgICBkYXRhYmFzZSBjb25uZWN0aW9uIGJlZm9y ZSBydW5uaW5nIHZpZXcsIGl0IHdpbGwgYWxzbyBhdHRhY2hlcworICAgICAg ICBtYW5hZ2VyLGNvbm4gJiB0ZW1wbGF0ZV9wYXRoIHByb3BlcnRpZXMgdG8g c2VsZgorICAgICAgICAiIiIKKworICAgICAgICBAd3JhcHMoZikKKyAgICAg ICAgZGVmIHdyYXAoKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgICAgICMg SGVyZSBhcmdzWzBdIHdpbGwgaG9sZCBzZWxmICYga3dhcmdzIHdpbGwgaG9s ZCBnaWQsc2lkLGRpZAorICAgICAgICAgICAgc2VsZiA9IGFyZ3NbMF0KKyAg ICAgICAgICAgIHNlbGYubWFuYWdlciA9IGdldF9kcml2ZXIoUEdfREVGQVVM VF9EUklWRVIpLmNvbm5lY3Rpb25fbWFuYWdlcigKKyAgICAgICAgICAgICAg ICBrd2FyZ3NbJ3NpZCddKQorICAgICAgICAgICAgc2VsZi5jb25uID0gc2Vs Zi5tYW5hZ2VyLmNvbm5lY3Rpb24oZGlkPWt3YXJnc1snZGlkJ10pCisgICAg ICAgICAgICAjIElmIERCIG5vdCBjb25uZWN0ZWQgdGhlbiByZXR1cm4gZXJy b3IgdG8gYnJvd3NlcgorICAgICAgICAgICAgaWYgbm90IHNlbGYuY29ubi5j b25uZWN0ZWQoKToKKyAgICAgICAgICAgICAgICByZXR1cm4gcHJlY29uZGl0 aW9uX3JlcXVpcmVkKAorICAgICAgICAgICAgICAgICAgICBfKCJDb25uZWN0 aW9uIHRvIHRoZSBzZXJ2ZXIgaGFzIGJlZW4gbG9zdCEiKQorICAgICAgICAg ICAgICAgICkKKyAgICAgICAgICAgICMgd2Ugd2lsbCBzZXQgdGVtcGxhdGUg cGF0aCBmb3Igc3FsIHNjcmlwdHMgZGVwZW5kaW5nIHVwb24gc2VydmVyIHZl cnNpb24KKyAgICAgICAgICAgIHZlciA9IHNlbGYubWFuYWdlci52ZXJzaW9u CisgICAgICAgICAgICBpZiB2ZXIgPj0gOTAxMDA6CisgICAgICAgICAgICAg ICAgc2VsZi50ZW1wbGF0ZV9wYXRoID0gJ2Z0c19jb25maWd1cmF0aW9uL3Nx bC85LjFfcGx1cycKKyAgICAgICAgICAgIHJldHVybiBmKCphcmdzLCAqKmt3 YXJncykKKworICAgICAgICByZXR1cm4gd3JhcAorCisgICAgQGNoZWNrX3By ZWNvbmRpdGlvbgorICAgIGRlZiBsaXN0KHNlbGYsIGdpZCwgc2lkLCBkaWQs IHNjaWQpOgorICAgICAgICAiIiIKKyAgICAgICAgTGlzdCBhbGwgRlRTIENv bmZpZ3VyYXRpb24gbm9kZXMuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAg ICAgIGdpZDogU2VydmVyIEdyb3VwIElkCisgICAgICAgICAgICBzaWQ6IFNl cnZlciBJZAorICAgICAgICAgICAgZGlkOiBEYXRhYmFzZSBJZAorICAgICAg ICAgICAgc2NpZDogU2NoZW1hIElkCisgICAgICAgICIiIgorCisgICAgICAg IHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgICAgICAgICAiLyIu am9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAncHJvcGVydGllcy5zcWwnXSks CisgICAgICAgICAgICAgICAgc2NpZD1zY2lkCisgICAgICAgICAgICAgKQor ICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3Qo c3FsKQorCisgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICBy ZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKwor ICAgICAgICByZXR1cm4gYWpheF9yZXNwb25zZSgKKyAgICAgICAgICAgIHJl c3BvbnNlPXJlc1sncm93cyddLAorICAgICAgICAgICAgc3RhdHVzPTIwMAor ICAgICAgICApCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVm IG5vZGVzKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQpOgorICAgICAgICAi IiIKKyAgICAgICAgUmV0dXJuIGFsbCBGVFMgQ29uZmlndXJhdGlvbnMgdG8g Z2VuZXJhdGUgbm9kZXMuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAg IGdpZDogU2VydmVyIEdyb3VwIElkCisgICAgICAgICAgICBzaWQ6IFNlcnZl ciBJZAorICAgICAgICAgICAgZGlkOiBEYXRhYmFzZSBJZAorICAgICAgICAg ICAgc2NpZDogU2NoZW1hIElkCisgICAgICAgICIiIgorCisgICAgICAgIHJl cyA9IFtdCisgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAg ICAgICAgICIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdub2Rlcy5z cWwnXSksCisgICAgICAgICAgICBzY2lkPXNjaWQKKyAgICAgICAgKQorICAg ICAgICBzdGF0dXMsIHJzZXQgPSBzZWxmLmNvbm4uZXhlY3V0ZV8yZGFycmF5 KHNxbCkKKyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJl dHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cnNldCkKKwor ICAgICAgICBmb3Igcm93IGluIHJzZXRbJ3Jvd3MnXToKKyAgICAgICAgICAg IHJlcy5hcHBlbmQoCisgICAgICAgICAgICAgICAgc2VsZi5ibHVlcHJpbnQu Z2VuZXJhdGVfYnJvd3Nlcl9ub2RlKAorICAgICAgICAgICAgICAgICAgICBy b3dbJ29pZCddLAorICAgICAgICAgICAgICAgICAgICBkaWQsCisgICAgICAg ICAgICAgICAgICAgIHJvd1snbmFtZSddLAorICAgICAgICAgICAgICAgICAg ICBpY29uPSJpY29uLWZ0c19jb25maWd1cmF0aW9uIgorICAgICAgICAgICAg ICAgICkpCisKKyAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgK KyAgICAgICAgICAgIGRhdGE9cmVzLAorICAgICAgICAgICAgc3RhdHVzPTIw MAorICAgICAgICApCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAg ZGVmIG5vZGUoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgY2ZnaWQpOgor ICAgICAgICAiIiIKKyAgICAgICAgUmV0dXJuIEZUUyBDb25maWd1cmF0aW9u IG5vZGUgdG8gZ2VuZXJhdGUgbm9kZQorCisgICAgICAgIEFyZ3M6CisgICAg ICAgICAgICBnaWQ6IFNlcnZlciBHcm91cCBJZAorICAgICAgICAgICAgc2lk OiBTZXJ2ZXIgSWQKKyAgICAgICAgICAgIGRpZDogRGF0YWJhc2UgSWQKKyAg ICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJZAorICAgICAgICAgICAgY2ZnaWQ6 IGZ0cyBDb25maWd1cmF0aW9uIGlkCisgICAgICAgICIiIgorCisgICAgICAg IHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgICAgICIvIi5qb2lu KFtzZWxmLnRlbXBsYXRlX3BhdGgsICdub2Rlcy5zcWwnXSksCisgICAgICAg ICAgICBjZmdpZD1jZmdpZAorICAgICAgICApCisgICAgICAgIHN0YXR1cywg cnNldCA9IHNlbGYuY29ubi5leGVjdXRlXzJkYXJyYXkoc3FsKQorICAgICAg ICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFs X3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yc2V0KQorCisgICAgICAgIGlmIGxl bihyc2V0Wydyb3dzJ10pID09IDA6CisgICAgICAgICAgICByZXR1cm4gZ29u ZShfKCIiIgorICAgICAgICAgICAgICAgIENvdWxkIG5vdCBmaW5kIHRoZSBG VFMgQ29uZmlndXJhdGlvbiBub2RlLgorICAgICAgICAgICAgICAgICIiIikp CisKKyAgICAgICAgZm9yIHJvdyBpbiByc2V0Wydyb3dzJ106CisgICAgICAg ICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAg ICAgIGRhdGE9c2VsZi5ibHVlcHJpbnQuZ2VuZXJhdGVfYnJvd3Nlcl9ub2Rl KAorICAgICAgICAgICAgICAgICAgICByb3dbJ29pZCddLAorICAgICAgICAg ICAgICAgICAgICBkaWQsCisgICAgICAgICAgICAgICAgICAgIHJvd1snbmFt ZSddLAorICAgICAgICAgICAgICAgICAgICBpY29uPSJpY29uLWZ0c19jb25m aWd1cmF0aW9uIgorICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAg ICAgc3RhdHVzPTIwMAorICAgICAgICAgICAgKQorCisgICAgQGNoZWNrX3By ZWNvbmRpdGlvbgorICAgIGRlZiBwcm9wZXJ0aWVzKHNlbGYsIGdpZCwgc2lk LCBkaWQsIHNjaWQsIGNmZ2lkKToKKyAgICAgICAgIiIiCisgICAgICAgIFNo b3cgcHJvcGVydGllcyBvZiBGVFMgQ29uZmlndXJhdGlvbiBub2RlCisKKyAg ICAgICAgQXJnczoKKyAgICAgICAgICAgIGdpZDogU2VydmVyIEdyb3VwIElk CisgICAgICAgICAgICBzaWQ6IFNlcnZlciBJZAorICAgICAgICAgICAgZGlk OiBEYXRhYmFzZSBJZAorICAgICAgICAgICAgc2NpZDogU2NoZW1hIElkCisg ICAgICAgICAgICBjZmdpZDogZnRzIENvbmZpZ3VyYXRpb24gaWQKKyAgICAg ICAgIiIiCisKKyAgICAgICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKAorICAg ICAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdw cm9wZXJ0aWVzLnNxbCddKSwKKyAgICAgICAgICAgICAgICBzY2lkPXNjaWQs CisgICAgICAgICAgICAgICAgY2ZnaWQ9Y2ZnaWQKKyAgICAgICAgICAgICAg KQorICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2Rp Y3Qoc3FsKQorCisgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAg ICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykK KworICAgICAgICBpZiBsZW4ocmVzWydyb3dzJ10pID09IDA6CisgICAgICAg ICAgICByZXR1cm4gZ29uZShfKCIiIgorICAgICAgICAgICAgICAgIENvdWxk IG5vdCBmaW5kIHRoZSBGVFMgQ29uZmlndXJhdGlvbiBub2RlLgorICAgICAg ICAgICAgICAgICIiIikpCisKKyAgICAgICAgIyBJbiBlZGl0IG1vZGUgZmV0 Y2ggdG9rZW4vZGljdGlvbmFyeSBsaXN0IGFsc28KKyAgICAgICAgaWYgY2Zn aWQ6CisgICAgICAgICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpv aW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICd0b2tlbkRpY3RMaXN0LnNxbCdd KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2ZnaWQ9Y2Zn aWQpCisKKyAgICAgICAgICAgIHN0YXR1cywgcnNldCA9IHNlbGYuY29ubi5l eGVjdXRlX2RpY3Qoc3FsKQorCisgICAgICAgICAgICBpZiBub3Qgc3RhdHVz OgorICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJy b3IoZXJyb3Jtc2c9cnNldCkKKworICAgICAgICAgICAgcmVzWydyb3dzJ11b MF1bJ3Rva2VucyddID0gcnNldFsncm93cyddCisKKyAgICAgICAgcmV0dXJu IGFqYXhfcmVzcG9uc2UoCisgICAgICAgICAgICByZXNwb25zZT1yZXNbJ3Jv d3MnXVswXSwKKyAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAgICAgKQor CisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBjcmVhdGUoc2Vs ZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCk6CisgICAgICAgICIiIgorICAgICAg ICBUaGlzIGZ1bmN0aW9uIHdpbGwgY3JlYXRlcyBuZXcgdGhlIEZUUyBDb25m aWd1cmF0aW9uIG9iamVjdAorICAgICAgICA6cGFyYW0gZ2lkOiBncm91cCBp ZAorICAgICAgICA6cGFyYW0gc2lkOiBzZXJ2ZXIgaWQKKyAgICAgICAgOnBh cmFtIGRpZDogZGF0YWJhc2UgaWQKKyAgICAgICAgOnBhcmFtIHNjaWQ6IHNj aGVtYSBpZAorICAgICAgICAiIiIKKworICAgICAgICAjIE1hbmRhdG9yeSBm aWVsZHMgdG8gY3JlYXRlIGEgbmV3IEZUUyBDb25maWd1cmF0aW9uCisgICAg ICAgIHJlcXVpcmVkX2FyZ3MgPSBbCisgICAgICAgICAgICAnc2NoZW1hJywK KyAgICAgICAgICAgICduYW1lJworICAgICAgICBdCisKKyAgICAgICAgZGF0 YSA9IHJlcXVlc3QuZm9ybSBpZiByZXF1ZXN0LmZvcm0gZWxzZSBqc29uLmxv YWRzKAorICAgICAgICAgICAgcmVxdWVzdC5kYXRhLmRlY29kZSgpKQorICAg ICAgICBmb3IgYXJnIGluIHJlcXVpcmVkX2FyZ3M6CisgICAgICAgICAgICBp ZiBhcmcgbm90IGluIGRhdGE6CisgICAgICAgICAgICAgICAgcmV0dXJuIG1h a2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICAgICAgc3RhdHVz PTQxMCwKKyAgICAgICAgICAgICAgICAgICAgc3VjY2Vzcz0wLAorICAgICAg ICAgICAgICAgICAgICBlcnJvcm1zZz1fKAorICAgICAgICAgICAgICAgICAg ICAgICAgIkNvdWxkbid0IGZpbmQgdGhlIHJlcXVpcmVkIHBhcmFtZXRlciAo JXMpLiIgJSBhcmcKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAg ICAgICAgICkKKworICAgICAgICAjIEVpdGhlciBjb3B5IGNvbmZpZyBvciBw YXJzZXIgbXVzdCBiZSBwcmVzZW50IGluIGRhdGEKKyAgICAgICAgaWYgJ2Nv cHlfY29uZmlnJyBub3QgaW4gZGF0YSBhbmQgJ3Byc25hbWUnIG5vdCBpbiBk YXRhOgorICAgICAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgK KyAgICAgICAgICAgICAgICBzdGF0dXM9NDEwLAorICAgICAgICAgICAgICAg IHN1Y2Nlc3M9MCwKKyAgICAgICAgICAgICAgICBlcnJvcm1zZz1fKAorICAg ICAgICAgICAgICAgICAgICAicHJvdmlkZSBhdGxlYXN0IGNvcHkgY29uZmln IG9yIHBhcnNlciIKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAp CisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyBGZXRjaCBzY2hlbWEg bmFtZSBmcm9tIHNjaGVtYSBvaWQKKyAgICAgICAgICAgIHNxbCA9IHJlbmRl cl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2No ZW1hLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBkYXRhPWRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29ubj1zZWxmLmNvbm4sCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKQorCisgICAgICAgICAgICBzdGF0dXMsIHNjaGVtYSA9IHNl bGYuY29ubi5leGVjdXRlX3NjYWxhcihzcWwpCisgICAgICAgICAgICBpZiBu b3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9z ZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c2NoZW1hKQorCisgICAgICAgICAgICAj IFJlcGxhY2Ugc2NoZW1hIG9pZCB3aXRoIHNjaGVtYSBuYW1lIGJlZm9yZSBw YXNzaW5nIHRvIGNyZWF0ZS5zcWwKKyAgICAgICAgICAgICMgVG8gZ2VuZXJh dGUgcHJvcGVyIHNxbCBxdWVyeQorICAgICAgICAgICAgbmV3X2RhdGEgPSBk YXRhLmNvcHkoKQorICAgICAgICAgICAgbmV3X2RhdGFbJ3NjaGVtYSddID0g c2NoZW1hCisKKyAgICAgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgK KyAgICAgICAgICAgICAgICAiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRo LCAnY3JlYXRlLnNxbCddKSwKKyAgICAgICAgICAgICAgICBkYXRhPW5ld19k YXRhLAorICAgICAgICAgICAgICAgIGNvbm49c2VsZi5jb25uLAorICAgICAg ICAgICAgKQorICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4u ZXhlY3V0ZV9zY2FsYXIoc3FsKQorICAgICAgICAgICAgaWYgbm90IHN0YXR1 czoKKyAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vy cm9yKGVycm9ybXNnPXJlcykKKworICAgICAgICAgICAgIyBXZSBuZWVkIGNm Z2lkIHRvIGFkZCBvYmplY3QgaW4gdHJlZSBhdCBicm93c2VyLAorICAgICAg ICAgICAgIyBCZWxvdyBzcWwgd2lsbCBnaXZlIHRoZSBzYW1lCisgICAgICAg ICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAgICAg Ii8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ3Byb3BlcnRpZXMuc3Fs J10pLAorICAgICAgICAgICAgICAgIG5hbWU9ZGF0YVsnbmFtZSddCisgICAg ICAgICAgICApCisgICAgICAgICAgICBzdGF0dXMsIGNmZ2lkID0gc2VsZi5j b25uLmV4ZWN1dGVfc2NhbGFyKHNxbCkKKyAgICAgICAgICAgIGlmIG5vdCBz dGF0dXM6CisgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZl cl9lcnJvcihlcnJvcm1zZz1jZmdpZCkKKworICAgICAgICAgICAgcmV0dXJu IGpzb25pZnkoCisgICAgICAgICAgICAgICAgbm9kZT1zZWxmLmJsdWVwcmlu dC5nZW5lcmF0ZV9icm93c2VyX25vZGUoCisgICAgICAgICAgICAgICAgICAg IGNmZ2lkLAorICAgICAgICAgICAgICAgICAgICBkaWQsCisgICAgICAgICAg ICAgICAgICAgIGRhdGFbJ25hbWUnXSwKKyAgICAgICAgICAgICAgICAgICAg aWNvbj0iaWNvbi1mdHNfY29uZmlndXJhdGlvbiIKKyAgICAgICAgICAgICAg ICApCisgICAgICAgICAgICApCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24g YXMgZToKKyAgICAgICAgICAgIGN1cnJlbnRfYXBwLmxvZ2dlci5leGNlcHRp b24oZSkKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJy b3IoZXJyb3Jtc2c9c3RyKGUpKQorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlv bgorICAgIGRlZiB1cGRhdGUoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwg Y2ZnaWQpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiB3 aWxsIHVwZGF0ZSBGVFMgQ29uZmlndXJhdGlvbiBub2RlCisgICAgICAgIDpw YXJhbSBnaWQ6IGdyb3VwIGlkCisgICAgICAgIDpwYXJhbSBzaWQ6IHNlcnZl ciBpZAorICAgICAgICA6cGFyYW0gZGlkOiBkYXRhYmFzZSBpZAorICAgICAg ICA6cGFyYW0gc2NpZDogc2NoZW1hIGlkCisgICAgICAgIDpwYXJhbSBjZmdp ZDogZnRzIENvbmZpZ3VyYXRpb24gaWQKKyAgICAgICAgIiIiCisgICAgICAg IGRhdGEgPSByZXF1ZXN0LmZvcm0gaWYgcmVxdWVzdC5mb3JtIGVsc2UganNv bi5sb2FkcygKKyAgICAgICAgICAgIHJlcXVlc3QuZGF0YS5kZWNvZGUoKSkK KworICAgICAgICAjIEZldGNoIHNxbCBxdWVyeSB0byB1cGRhdGUgZnRzIENv bmZpZ3VyYXRpb24KKyAgICAgICAgc3FsID0gc2VsZi5nZXRfc3FsKGdpZCwg c2lkLCBkaWQsIHNjaWQsIGRhdGEsIGNmZ2lkKQorICAgICAgICB0cnk6Cisg ICAgICAgICAgICBpZiBzcWwgYW5kIHNxbC5zdHJpcCgnXG4nKSBhbmQgc3Fs LnN0cmlwKCcgJyk6CisgICAgICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBz ZWxmLmNvbm4uZXhlY3V0ZV9zY2FsYXIoc3FsKQorICAgICAgICAgICAgICAg IGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBp bnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAg ICAgICAgICAgaWYgY2ZnaWQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAg ICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgICAgICAg ICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdub2Rl cy5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICBjZmdpZD1jZmdp ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNjaWQ9c2NpZAorICAgICAg ICAgICAgICAgICAgICApCisKKyAgICAgICAgICAgICAgICBzdGF0dXMsIHJl cyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3Qoc3FsKQorICAgICAgICAgICAg ICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAgICAgIHJldHVy biBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAg ICAgICAgICAgICAgaWYgbGVuKHJlc1sncm93cyddKSA9PSAwOgorICAgICAg ICAgICAgICAgICAgICByZXR1cm4gZ29uZShfKCIiIgorICAgICAgICAgICAg ICAgICAgICAgICAgQ291bGQgbm90IGZpbmQgdGhlIEZUUyBDb25maWd1cmF0 aW9uIG5vZGUgdG8gdXBkYXRlLgorICAgICAgICAgICAgICAgICAgICAiIiIp KQorCisgICAgICAgICAgICAgICAgZGF0YSA9IHJlc1sncm93cyddWzBdCisg ICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKKyAg ICAgICAgICAgICAgICAgICAgc3VjY2Vzcz0xLAorICAgICAgICAgICAgICAg ICAgICBpbmZvPSJGVFMgQ29uZmlndXJhdGlvbiBVcGRhdGVkLiIsCisgICAg ICAgICAgICAgICAgICAgIGRhdGE9eworICAgICAgICAgICAgICAgICAgICAg ICAgJ2lkJzogY2ZnaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAnc2lk Jzogc2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2dpZCc6IGdpZCwK KyAgICAgICAgICAgICAgICAgICAgICAgICdkaWQnOiBkaWQsCisgICAgICAg ICAgICAgICAgICAgICAgICAnc2NpZCc6IHNjaWQKKyAgICAgICAgICAgICAg ICAgICAgfQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICMgSW4g Y2FzZSBGVFMgQ29uZmlndXJhdGlvbiBub2RlIGlzIG5vdCBwcmVzZW50Cisg ICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVybiBtYWtl X2pzb25fcmVzcG9uc2UoCisgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M9 MSwKKyAgICAgICAgICAgICAgICAgICAgaW5mbz0iTm90aGluZyB0byB1cGRh dGUiLAorICAgICAgICAgICAgICAgICAgICBkYXRhPXsKKyAgICAgICAgICAg ICAgICAgICAgICAgICdpZCc6IGNmZ2lkLAorICAgICAgICAgICAgICAgICAg ICAgICAgJ3NpZCc6IHNpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICdn aWQnOiBnaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAnZGlkJzogZGlk LAorICAgICAgICAgICAgICAgICAgICAgICAgJ3NjaWQnOiBzY2lkCisgICAg ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICApCisKKyAgICAg ICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgY3VycmVu dF9hcHAubG9nZ2VyLmV4Y2VwdGlvbihlKQorICAgICAgICAgICAgcmV0dXJu IGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1zdHIoZSkpCisKKyAg ICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVmIGRlbGV0ZShzZWxmLCBn aWQsIHNpZCwgZGlkLCBzY2lkLCBjZmdpZCk6CisgICAgICAgICIiIgorICAg ICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgZHJvcCB0aGUgRlRTIENvbmZpZ3Vy YXRpb24gb2JqZWN0CisgICAgICAgIDpwYXJhbSBnaWQ6IGdyb3VwIGlkCisg ICAgICAgIDpwYXJhbSBzaWQ6IHNlcnZlciBpZAorICAgICAgICA6cGFyYW0g ZGlkOiBkYXRhYmFzZSBpZAorICAgICAgICA6cGFyYW0gc2NpZDogc2NoZW1h IGlkCisgICAgICAgIDpwYXJhbSBjZmdpZDogRlRTIENvbmZpZ3VyYXRpb24g aWQKKyAgICAgICAgIiIiCisgICAgICAgICMgQmVsb3cgd2lsbCBkZWNpZGUg aWYgaXQncyBzaW1wbGUgZHJvcCBvciBkcm9wIHdpdGggY2FzY2FkZSBjYWxs CisgICAgICAgIGlmIHNlbGYuY21kID09ICdkZWxldGUnOgorICAgICAgICAg ICAgIyBUaGlzIGlzIGEgY2FzY2FkZSBvcGVyYXRpb24KKyAgICAgICAgICAg IGNhc2NhZGUgPSBUcnVlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBj YXNjYWRlID0gRmFsc2UKKworICAgICAgICB0cnk6CisgICAgICAgICAgICAj IEdldCBuYW1lIGZvciBGVFMgQ29uZmlndXJhdGlvbiBmcm9tIGNmZ2lkCisg ICAgICAgICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoCisgICAgICAgICAg ICAgICAgIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ2dldF9uYW1l LnNxbCddKSwKKyAgICAgICAgICAgICAgICBjZmdpZD1jZmdpZAorICAgICAg ICAgICAgICAgICkKKyAgICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5j b25uLmV4ZWN1dGVfZGljdChzcWwpCisgICAgICAgICAgICBpZiBub3Qgc3Rh dHVzOgorICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJf ZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgICAgICBpZiBsZW4ocmVz Wydyb3dzJ10pID09IDA6CisgICAgICAgICAgICAgICAgcmV0dXJuIGdvbmUo XygiIiIKKyAgICAgICAgICAgICAgICAgICAgICAgIENvdWxkIG5vdCBmaW5k IHRoZSBGVFMgQ29uZmlndXJhdGlvbiBub2RlIHRvIGRlbGV0ZS4KKyAgICAg ICAgICAgICAgICAgICAgIiIiKSkKKworICAgICAgICAgICAgIyBEcm9wIEZU UyBDb25maWd1cmF0aW9uCisgICAgICAgICAgICByZXN1bHQgPSByZXNbJ3Jv d3MnXVswXQorICAgICAgICAgICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKAor ICAgICAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgs ICdkZWxldGUuc3FsJ10pLAorICAgICAgICAgICAgICAgIG5hbWU9cmVzdWx0 WyduYW1lJ10sCisgICAgICAgICAgICAgICAgc2NoZW1hPXJlc3VsdFsnc2No ZW1hJ10sCisgICAgICAgICAgICAgICAgY2FzY2FkZT1jYXNjYWRlCisgICAg ICAgICAgICAgICAgKQorCisgICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNl bGYuY29ubi5leGVjdXRlX3NjYWxhcihzcWwpCisgICAgICAgICAgICBpZiBu b3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9z ZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgICAgICByZXR1 cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgICAgIHN1Y2Nl c3M9MSwKKyAgICAgICAgICAgICAgICBpbmZvPV8oIkZUUyBDb25maWd1cmF0 aW9uIGRyb3BwZWQiKSwKKyAgICAgICAgICAgICAgICBkYXRhPXsKKyAgICAg ICAgICAgICAgICAgICAgJ2lkJzogY2ZnaWQsCisgICAgICAgICAgICAgICAg ICAgICdzaWQnOiBzaWQsCisgICAgICAgICAgICAgICAgICAgICdnaWQnOiBn aWQsCisgICAgICAgICAgICAgICAgICAgICdkaWQnOiBkaWQsCisgICAgICAg ICAgICAgICAgICAgICdzY2lkJzogc2NpZAorICAgICAgICAgICAgICAgIH0K KyAgICAgICAgICAgICkKKworICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFz IGU6CisgICAgICAgICAgICBjdXJyZW50X2FwcC5sb2dnZXIuZXhjZXB0aW9u KGUpCisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9y KGVycm9ybXNnPXN0cihlKSkKKworICAgIEBjaGVja19wcmVjb25kaXRpb24K KyAgICBkZWYgbXNxbChzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCBjZmdp ZD1Ob25lKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24g cmV0dXJucyBtb2RpZmllZCBTUUwKKyAgICAgICAgOnBhcmFtIGdpZDogZ3Jv dXAgaWQKKyAgICAgICAgOnBhcmFtIHNpZDogc2VydmVyIGlkCisgICAgICAg IDpwYXJhbSBkaWQ6IGRhdGFiYXNlIGlkCisgICAgICAgIDpwYXJhbSBzY2lk OiBzY2hlbWEgaWQKKyAgICAgICAgOnBhcmFtIGNmZ2lkOiBGVFMgQ29uZmln dXJhdGlvbiBpZAorICAgICAgICAiIiIKKyAgICAgICAgZGF0YSA9IHt9Cisg ICAgICAgIGZvciBrLCB2IGluIHJlcXVlc3QuYXJncy5pdGVtcygpOgorICAg ICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGRhdGFba10gPSBqc29u LmxvYWRzKHYpCisgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAg ICAgICAgICAgICAgICBkYXRhW2tdID0gdgorCisgICAgICAgICMgRmV0Y2gg c3FsIHF1ZXJ5IGZvciBtb2RpZmllZCBkYXRhCisgICAgICAgIHNxbCA9IHNl bGYuZ2V0X3NxbChnaWQsIHNpZCwgZGlkLCBzY2lkLCBkYXRhLCBjZmdpZCkK KworICAgICAgICBpZiBpc2luc3RhbmNlKHNxbCwgc3RyKSBhbmQgc3FsIGFu ZCBzcWwuc3RyaXAoJ1xuJykgYW5kIHNxbC5zdHJpcCgnICcpOgorICAgICAg ICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAgICAg ICAgICBkYXRhPXNxbCwKKyAgICAgICAgICAgICAgICBzdGF0dXM9MjAwCisg ICAgICAgICAgICApCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1 cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgICAgIGRhdGE9 Ii0tbW9kaWZpZWQgU1FMIiwKKyAgICAgICAgICAgICAgICBzdGF0dXM9MjAw CisgICAgICAgICAgICApCisKKyAgICBkZWYgZ2V0X3NxbChzZWxmLCBnaWQs IHNpZCwgZGlkLCBzY2lkLCBkYXRhLCBjZmdpZD1Ob25lKToKKyAgICAgICAg IiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCByZXR1cm4gU1FMIGZv ciBtb2RlbCBkYXRhCisgICAgICAgIDpwYXJhbSBnaWQ6IGdyb3VwIGlkCisg ICAgICAgIDpwYXJhbSBzaWQ6IHNlcnZlciBpZAorICAgICAgICA6cGFyYW0g ZGlkOiBkYXRhYmFzZSBpZAorICAgICAgICA6cGFyYW0gc2NpZDogc2NoZW1h IGlkCisgICAgICAgIDpwYXJhbSBjZmdpZDogZnRzIENvbmZpZ3VyYXRpb24g aWQKKyAgICAgICAgIiIiCisgICAgICAgIHRyeToKKyAgICAgICAgICAgICMg RmV0Y2ggc3FsIGZvciB1cGRhdGUKKyAgICAgICAgICAgIGlmIGNmZ2lkIGlz IG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1w bGF0ZSgKKyAgICAgICAgICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYudGVt cGxhdGVfcGF0aCwgJ3Byb3BlcnRpZXMuc3FsJ10pLAorICAgICAgICAgICAg ICAgICAgICBjZmdpZD1jZmdpZCwKKyAgICAgICAgICAgICAgICAgICAgc2Np ZD1zY2lkCisgICAgICAgICAgICAgICAgKQorCisgICAgICAgICAgICAgICAg c3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KHNxbCkKKyAg ICAgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAg ICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJl cykKKworICAgICAgICAgICAgICAgIGlmIGxlbihyZXNbJ3Jvd3MnXSkgPT0g MDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdvbmUoXygiIiIKKyAg ICAgICAgICAgICAgICAgICAgICAgIENvdWxkIG5vdCBmaW5kIHRoZSBGVFMg Q29uZmlndXJhdGlvbiBub2RlLgorICAgICAgICAgICAgICAgICAgICAiIiIp KQorCisgICAgICAgICAgICAgICAgb2xkX2RhdGEgPSByZXNbJ3Jvd3MnXVsw XQorCisgICAgICAgICAgICAgICAgIyBJZiB1c2VyIGhhcyBjaGFuZ2VkIHRo ZSBzY2hlbWEgdGhlbiBmZXRjaCBuZXcgc2NoZW1hIGRpcmVjdGx5CisgICAg ICAgICAgICAgICAgIyB1c2luZyBpdHMgb2lkIG90aGVyd2lzZSBmZXRjaCBv bGQgc2NoZW1hIG5hbWUgdXNpbmcgaXRzIG9pZAorICAgICAgICAgICAgICAg IHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgICAgICAgICAgICAg Ii8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ3NjaGVtYS5zcWwnXSks CisgICAgICAgICAgICAgICAgICAgIGRhdGE9ZGF0YSkKKworICAgICAgICAg ICAgICAgIHN0YXR1cywgbmV3X3NjaGVtYSA9IHNlbGYuY29ubi5leGVjdXRl X3NjYWxhcihzcWwpCisgICAgICAgICAgICAgICAgaWYgbm90IHN0YXR1czoK KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9l cnJvcihlcnJvcm1zZz1uZXdfc2NoZW1hKQorCisgICAgICAgICAgICAgICAg IyBSZXBsYWNlIHNjaGVtYSBvaWQgd2l0aCBzY2hlbWEgbmFtZQorICAgICAg ICAgICAgICAgIG5ld19kYXRhID0gZGF0YS5jb3B5KCkKKyAgICAgICAgICAg ICAgICBpZiAnc2NoZW1hJyBpbiBuZXdfZGF0YToKKyAgICAgICAgICAgICAg ICAgICAgbmV3X2RhdGFbJ3NjaGVtYSddID0gbmV3X3NjaGVtYQorCisgICAg ICAgICAgICAgICAgIyBGZXRjaCBvbGQgc2NoZW1hIG5hbWUgdXNpbmcgb2xk IHNjaGVtYSBvaWQKKyAgICAgICAgICAgICAgICBzcWwgPSByZW5kZXJfdGVt cGxhdGUoCisgICAgICAgICAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRl bXBsYXRlX3BhdGgsICdzY2hlbWEuc3FsJ10pLAorICAgICAgICAgICAgICAg ICAgICBkYXRhPW9sZF9kYXRhCisgICAgICAgICAgICAgICAgICAgICkKKwor ICAgICAgICAgICAgICAgIHN0YXR1cywgb2xkX3NjaGVtYSA9IHNlbGYuY29u bi5leGVjdXRlX3NjYWxhcihzcWwpCisgICAgICAgICAgICAgICAgaWYgbm90 IHN0YXR1czoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFs X3NlcnZlcl9lcnJvcihlcnJvcm1zZz1vbGRfc2NoZW1hKQorCisgICAgICAg ICAgICAgICAgIyBSZXBsYWNlIG9sZCBzY2hlbWEgb2lkIHdpdGggb2xkIHNj aGVtYSBuYW1lCisgICAgICAgICAgICAgICAgb2xkX2RhdGFbJ3NjaGVtYSdd ID0gb2xkX3NjaGVtYQorCisgICAgICAgICAgICAgICAgc3FsID0gcmVuZGVy X3RlbXBsYXRlKAorICAgICAgICAgICAgICAgICAgICAiLyIuam9pbihbc2Vs Zi50ZW1wbGF0ZV9wYXRoLCAndXBkYXRlLnNxbCddKSwKKyAgICAgICAgICAg ICAgICAgICAgZGF0YT1uZXdfZGF0YSwgb19kYXRhPW9sZF9kYXRhCisgICAg ICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAjIEZldGNoIHNx bCBxdWVyeSBmb3IgbW9kaWZpZWQgZGF0YQorICAgICAgICAgICAgZWxzZToK KyAgICAgICAgICAgICAgICAjIEZldGNoIHNjaGVtYSBuYW1lIGZyb20gc2No ZW1hIG9pZAorICAgICAgICAgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0 ZSgKKyAgICAgICAgICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYudGVtcGxh dGVfcGF0aCwgJ3NjaGVtYS5zcWwnXSksCisgICAgICAgICAgICAgICAgICAg IGRhdGE9ZGF0YQorICAgICAgICAgICAgICAgICAgICApCisKKyAgICAgICAg ICAgICAgICBzdGF0dXMsIHNjaGVtYSA9IHNlbGYuY29ubi5leGVjdXRlX3Nj YWxhcihzcWwpCisgICAgICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAg ICAgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJv cihlcnJvcm1zZz1zY2hlbWEpCisKKyAgICAgICAgICAgICAgICAjIFJlcGxh Y2Ugc2NoZW1hIG9pZCB3aXRoIHNjaGVtYSBuYW1lCisgICAgICAgICAgICAg ICAgbmV3X2RhdGEgPSBkYXRhLmNvcHkoKQorICAgICAgICAgICAgICAgIG5l d19kYXRhWydzY2hlbWEnXSA9IHNjaGVtYQorCisgICAgICAgICAgICAgICAg aWYgJ25hbWUnIGluIG5ld19kYXRhIGFuZCBcCisgICAgICAgICAgICAgICAg ICAgICAgICAnc2NoZW1hJyBpbiBuZXdfZGF0YToKKyAgICAgICAgICAgICAg ICAgICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRl bXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJ2NyZWF0ZS5zcWwnXSksCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPW5ld19k YXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29ubj1zZWxmLmNvbm4KKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAg ICAgICAgICAgICAgICAgICBzcWwgPSAiLS0gaW5jb21wbGV0ZSBkZWZpbml0 aW9uIgorICAgICAgICAgICAgcmV0dXJuIHN0cihzcWwuc3RyaXAoJ1xuJykp CisKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAg ICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1zdHIo ZSkpCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVmIHBhcnNl cnMoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCk6CisgICAgICAgICIiIgor ICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIGZ0cyBwYXJzZXJz IGxpc3QgZm9yIEZUUyBDb25maWd1cmF0aW9uCisgICAgICAgIDpwYXJhbSBn aWQ6IGdyb3VwIGlkCisgICAgICAgIDpwYXJhbSBzaWQ6IHNlcnZlciBpZAor ICAgICAgICA6cGFyYW0gZGlkOiBkYXRhYmFzZSBpZAorICAgICAgICA6cGFy YW0gc2NpZDogc2NoZW1hIGlkCisgICAgICAgICIiIgorICAgICAgICAjIEZl dGNoIGxhc3Qgc3lzdGVtIG9pZAorICAgICAgICBkYXRsYXN0c3lzb2lkID0g c2VsZi5tYW5hZ2VyLmRiX2luZm9bZGlkXVsnZGF0bGFzdHN5c29pZCddCisK KyAgICAgICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAg Ii8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ3BhcnNlci5zcWwnXSks CisgICAgICAgICAgICBwYXJzZXI9VHJ1ZQorICAgICAgICAgICAgKQorICAg ICAgICBzdGF0dXMsIHJzZXQgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KHNx bCkKKworICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0 dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yc2V0KQorCisg ICAgICAgICMgRW1wdHkgc2V0IGlzIGFkZGVkIGJlZm9yZSBhY3R1YWwgbGlz dCBhcyBpbml0aWFsbHkgaXQgd2lsbCBiZSB2aXNpYmxlCisgICAgICAgICMg YXQgcGFyc2VyIGNvbnRyb2wgd2hpbGUgY3JlYXRpbmcgYSBuZXcgRlRTIENv bmZpZ3VyYXRpb24KKyAgICAgICAgcmVzID0gW3snbGFiZWwnOicnLCAndmFs dWUnOicnfV0KKyAgICAgICAgZm9yIHJvdyBpbiByc2V0Wydyb3dzJ106Cisg ICAgICAgICAgICBpZiByb3dbJ3NjaGVtYW9pZCddID4gZGF0bGFzdHN5c29p ZDoKKyAgICAgICAgICAgICAgICByb3dbJ3Byc25hbWUnXSA9IHJvd1snbnNw bmFtZSddICsgJy4nICsgcm93WydwcnNuYW1lJ10KKworICAgICAgICAgICAg cmVzLmFwcGVuZCh7J2xhYmVsJzogcm93WydwcnNuYW1lJ10sCisgICAgICAg ICAgICAgICAgICAgICAgICAndmFsdWUnOiByb3dbJ3Byc25hbWUnXX0pCisg ICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAgICAg ICBkYXRhPXJlcywKKyAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAgICAg KQorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBjb3B5Q29u ZmlnKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQpOgorICAgICAgICAiIiIK KyAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIHJldHVybiBjb3B5IGNvbmZp ZyBsaXN0IGZvciBGVFMgQ29uZmlndXJhdGlvbgorICAgICAgICA6cGFyYW0g Z2lkOiBncm91cCBpZAorICAgICAgICA6cGFyYW0gc2lkOiBzZXJ2ZXIgaWQK KyAgICAgICAgOnBhcmFtIGRpZDogZGF0YWJhc2UgaWQKKyAgICAgICAgOnBh cmFtIHNjaWQ6IHNjaGVtYSBpZAorICAgICAgICAiIiIKKyAgICAgICAgIyBG ZXRjaCBsYXN0IHN5c3RlbSBvaWQKKyAgICAgICAgZGF0bGFzdHN5c29pZCA9 IHNlbGYubWFuYWdlci5kYl9pbmZvW2RpZF1bJ2RhdGxhc3RzeXNvaWQnXQor CisgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgICAg ICIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdjb3B5X2NvbmZpZy5z cWwnXSksCisgICAgICAgICAgICBjb3B5X2NvbmZpZz1UcnVlCisgICAgICAg ICAgICApCisgICAgICAgIHN0YXR1cywgcnNldCA9IHNlbGYuY29ubi5leGVj dXRlX2RpY3Qoc3FsKQorCisgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAg ICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNn PXJzZXQpCisKKyAgICAgICAgIyBFbXB0eSBzZXQgaXMgYWRkZWQgYmVmb3Jl IGFjdHVhbCBsaXN0IGFzIGluaXRpYWxseSBpdCB3aWxsIGJlIHZpc2libGUK KyAgICAgICAgIyBhdCBjb3B5X2NvbmZpZyBjb250cm9sIHdoaWxlIGNyZWF0 aW5nIGEgbmV3IEZUUyBDb25maWd1cmF0aW9uCisgICAgICAgIHJlcyA9IFt7 J2xhYmVsJzogJycsICd2YWx1ZSc6ICcnfV0KKyAgICAgICAgZm9yIHJvdyBp biByc2V0Wydyb3dzJ106CisgICAgICAgICAgICBpZiByb3dbJ29pZCddID4g ZGF0bGFzdHN5c29pZDoKKyAgICAgICAgICAgICAgICByb3dbJ2NmZ25hbWUn XSA9IHJvd1snbnNwbmFtZSddICsgJy4nICsgcm93WydjZmduYW1lJ10KKwor ICAgICAgICAgICAgcmVzLmFwcGVuZCh7J2xhYmVsJzogcm93WydjZmduYW1l J10sCisgICAgICAgICAgICAgICAgICAgICAgICAndmFsdWUnOiByb3dbJ2Nm Z25hbWUnXX0pCisgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2Uo CisgICAgICAgICAgICBkYXRhPXJlcywKKyAgICAgICAgICAgIHN0YXR1cz0y MDAKKyAgICAgICAgKQorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAg IGRlZiB0b2tlbnMoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgY2ZnaWQ9 Tm9uZSk6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIHdp bGwgcmV0dXJuIHRva2VuIGxpc3Qgb2YgZnRzIHBhcnNlciBub2RlIHJlbGF0 ZWQgdG8KKyAgICAgICAgY3VycmVudCBGVFMgQ29uZmlndXJhdGlvbiBub2Rl CisgICAgICAgIDpwYXJhbSBnaWQ6IGdyb3VwIGlkCisgICAgICAgIDpwYXJh bSBzaWQ6IHNlcnZlciBpZAorICAgICAgICA6cGFyYW0gZGlkOiBkYXRhYmFz ZSBpZAorICAgICAgICA6cGFyYW0gc2NpZDogc2NoZW1hIGlkCisgICAgICAg IDpwYXJhbSBjZmdpZDogZnRzIGNvbmZpZ3VyYXRpb24gaWQKKyAgICAgICAg IiIiCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJlcyA9IFtdCisgICAg ICAgICAgICBpZiBjZmdpZCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAg ICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAgICAgICAg ICIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdwYXJzZXIuc3FsJ10p LAorICAgICAgICAgICAgICAgICAgICBjZmdpZD1jZmdpZAorICAgICAgICAg ICAgICAgICAgICApCisgICAgICAgICAgICAgICAgc3RhdHVzLCBwYXJzZXJv aWQgPSBzZWxmLmNvbm4uZXhlY3V0ZV9zY2FsYXIoc3FsKQorCisgICAgICAg ICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICAgICAg cmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1wYXJzZXJv aWQpCisKKyAgICAgICAgICAgICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUo CisgICAgICAgICAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRlbXBsYXRl X3BhdGgsICd0b2tlbnMuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICBw YXJzZXJvaWQ9cGFyc2Vyb2lkCisgICAgICAgICAgICAgICAgICAgICkKKyAg ICAgICAgICAgICAgICBzdGF0dXMsIHJzZXQgPSBzZWxmLmNvbm4uZXhlY3V0 ZV9kaWN0KHNxbCkKKworICAgICAgICAgICAgICAgIGZvciByb3cgaW4gcnNl dFsncm93cyddOgorICAgICAgICAgICAgICAgICAgICByZXMuYXBwZW5kKHsn bGFiZWwnOiByb3dbJ2FsaWFzJ10sCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICd2YWx1ZSc6IHJvd1snYWxpYXMnXX0pCisKKyAgICAgICAg ICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAgICAgICAg ICAgZGF0YT1yZXMsCisgICAgICAgICAgICAgICAgc3RhdHVzPTIwMAorICAg ICAgICAgICAgKQorCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToK KyAgICAgICAgICAgIGN1cnJlbnRfYXBwLmxvZ2dlci5leGNlcHRpb24oZSkK KyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJy b3Jtc2c9c3RyKGUpKQorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAg IGRlZiBkaWN0aW9uYXJpZXMoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwg Y2ZnaWQ9Tm9uZSk6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0 aW9uIHdpbGwgcmV0dXJuIGRpY3Rpb25hcnkgbGlzdCBmb3IgRlRTIENvbmZp Z3VyYXRpb24KKyAgICAgICAgOnBhcmFtIGdpZDogZ3JvdXAgaWQKKyAgICAg ICAgOnBhcmFtIHNpZDogc2VydmVyIGlkCisgICAgICAgIDpwYXJhbSBkaWQ6 IGRhdGFiYXNlIGlkCisgICAgICAgIDpwYXJhbSBzY2lkOiBzY2hlbWEgaWQK KyAgICAgICAgIiIiCisgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgK KyAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsJ2Rp Y3Rpb25hcmllcy5zcWwnXSkKKyAgICAgICAgICAgICkKKyAgICAgICAgc3Rh dHVzLCByc2V0ID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChzcWwpCisKKyAg ICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRl cm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cnNldCkKKworICAgICAgICBy ZXMgPSBbXQorICAgICAgICBmb3Igcm93IGluIHJzZXRbJ3Jvd3MnXToKKyAg ICAgICAgICAgIHJlcy5hcHBlbmQoeydsYWJlbCc6IHJvd1snZGljdG5hbWUn XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICd2YWx1ZSc6IHJvd1snZGlj dG5hbWUnXX0pCisgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2Uo CisgICAgICAgICAgICBkYXRhPXJlcywKKyAgICAgICAgICAgIHN0YXR1cz0y MDAKKyAgICAgICAgKQorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAg IGRlZiBzcWwoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgY2ZnaWQpOgor ICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIHJldmVy c2UgZ2VuZXJhdGUgc3FsIGZvciBzcWwgcGFuZWwKKyAgICAgICAgOnBhcmFt IGdpZDogZ3JvdXAgaWQKKyAgICAgICAgOnBhcmFtIHNpZDogc2VydmVyIGlk CisgICAgICAgIDpwYXJhbSBkaWQ6IGRhdGFiYXNlIGlkCisgICAgICAgIDpw YXJhbSBzY2lkOiBzY2hlbWEgaWQKKyAgICAgICAgOnBhcmFtIGNmZ2lkOiBG VFMgQ29uZmlndXJhdGlvbiBpZAorICAgICAgICAiIiIKKyAgICAgICAgdHJ5 OgorICAgICAgICAgICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKAorICAgICAg ICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdzcWwu c3FsJ10pLAorICAgICAgICAgICAgICAgIGNmZ2lkPWNmZ2lkLAorICAgICAg ICAgICAgICAgIHNjaWQ9c2NpZCwKKyAgICAgICAgICAgICAgICBjb25uPXNl bGYuY29ubgorICAgICAgICAgICAgKQorICAgICAgICAgICAgc3RhdHVzLCBy ZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9zY2FsYXIoc3FsKQorICAgICAgICAg ICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICByZXR1cm4gaW50 ZXJuYWxfc2VydmVyX2Vycm9yKAorICAgICAgICAgICAgICAgICAgICBfKAor ICAgICAgICAgICAgICAgICAgICAiRVJST1I6IENvdWxkbid0IGdlbmVyYXRl IHJldmVyc2VkIGVuZ2luZWVyZWQgcXVlcnkgZm9yIHRoZSBGVFMgQ29uZmln dXJhdGlvbiFcbnswfSIKKyAgICAgICAgICAgICAgICAgICAgKS5mb3JtYXQo CisgICAgICAgICAgICAgICAgICAgICAgICByZXMKKyAgICAgICAgICAgICAg ICAgICAgKQorICAgICAgICAgICAgICAgICkKKworICAgICAgICAgICAgaWYg cmVzIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgcmV0dXJuIGdvbmUoCisg ICAgICAgICAgICAgICAgICAgIF8oCisgICAgICAgICAgICAgICAgICAgICAg ICAiRVJST1I6IENvdWxkbid0IGdlbmVyYXRlIHJldmVyc2VkIGVuZ2luZWVy ZWQgcXVlcnkgZm9yIEZUUyBDb25maWd1cmF0aW9uIG5vZGUhIikKKyAgICAg ICAgICAgICAgICApCisKKyAgICAgICAgICAgIHJldHVybiBhamF4X3Jlc3Bv bnNlKHJlc3BvbnNlPXJlcykKKworICAgICAgICBleGNlcHQgRXhjZXB0aW9u IGFzIGU6CisgICAgICAgICAgICBjdXJyZW50X2FwcC5sb2dnZXIuZXhjZXB0 aW9uKGUpCisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vy cm9yKGVycm9ybXNnPXN0cihlKSkKKworICAgIEBjaGVja19wcmVjb25kaXRp b24KKyAgICBkZWYgZGVwZW5kZW50cyhzZWxmLCBnaWQsIHNpZCwgZGlkLCBz Y2lkLCBjZmdpZCk6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0 aW9uIGdldCB0aGUgZGVwZW5kZW50cyBhbmQgcmV0dXJuIGFqYXggcmVzcG9u c2UKKyAgICAgICAgZm9yIHRoZSBGVFMgQ29uZmlndXJhdGlvbiBub2RlLgor CisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBnaWQ6IFNlcnZlciBHcm91 cCBJRAorICAgICAgICAgICAgc2lkOiBTZXJ2ZXIgSUQKKyAgICAgICAgICAg IGRpZDogRGF0YWJhc2UgSUQKKyAgICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJ RAorICAgICAgICAgICAgY2ZnaWQ6IEZUUyBDb25maWd1cmF0aW9uIElECisg ICAgICAgICIiIgorICAgICAgICBkZXBlbmRlbnRzX3Jlc3VsdCA9IHNlbGYu Z2V0X2RlcGVuZGVudHMoc2VsZi5jb25uLCBjZmdpZCkKKyAgICAgICAgcmV0 dXJuIGFqYXhfcmVzcG9uc2UoCisgICAgICAgICAgICByZXNwb25zZT1kZXBl bmRlbnRzX3Jlc3VsdCwKKyAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAg ICAgKQorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBkZXBl bmRlbmNpZXMoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgY2ZnaWQpOgor ICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiBnZXQgdGhlIGRl cGVuZGVuY2llcyBhbmQgcmV0dXJuIGFqYXggcmVzcG9uc2UKKyAgICAgICAg Zm9yIHRoZSBGVFMgQ29uZmlndXJhdGlvbiBub2RlLgorCisgICAgICAgIEFy Z3M6CisgICAgICAgICAgICBnaWQ6IFNlcnZlciBHcm91cCBJRAorICAgICAg ICAgICAgc2lkOiBTZXJ2ZXIgSUQKKyAgICAgICAgICAgIGRpZDogRGF0YWJh c2UgSUQKKyAgICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJRAorICAgICAgICAg ICAgY2ZnaWQ6IEZUUyBDb25maWd1cmF0aW9uIElECisgICAgICAgICIiIgor ICAgICAgICBkZXBlbmRlbmNpZXNfcmVzdWx0ID0gc2VsZi5nZXRfZGVwZW5k ZW5jaWVzKHNlbGYuY29ubiwgY2ZnaWQpCisgICAgICAgIHJldHVybiBhamF4 X3Jlc3BvbnNlKAorICAgICAgICAgICAgcmVzcG9uc2U9ZGVwZW5kZW5jaWVz X3Jlc3VsdCwKKyAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAgICAgKQor CisKK0Z0c0NvbmZpZ3VyYXRpb25WaWV3LnJlZ2lzdGVyX25vZGVfdmlldyhi bHVlcHJpbnQpCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdHNfY29u ZmlndXJhdGlvbnMvc3RhdGljL2ltZy9jb2xsLWZ0c19jb25maWd1cmF0aW9u LnBuZyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z0c19jb25maWd1cmF0aW9ucy9zdGF0 aWMvaW1nL2NvbGwtZnRzX2NvbmZpZ3VyYXRpb24ucG5nCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAuLjAxYmY0ZWU1YmJjYzNmN2M4NTk4YTRmYTlkOWE3NmUw NjFiZjYwZTAKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDM2OQp6Y21lQVNA Tj8ob2xIeWB1VkJxIWlhMHZwXjB3QngqQnA5cV9FWjdVQW1gWn5EZipCYWZD WkR3Y0BzaG1WVF5KWnYKel4ocT95ZDdLM3ZrO09wVDFCfjVIWDQ/VDdPRmRt MkxuSk9JQ29uV303OC1zT21Kfj8lY31CYXh7PHQjZDcxPSN8CnpIUHFDV04k NUBaQGx3RlVtIzYyeF9+LVNxay1xVX4/KVJVX2Bqeng9JnI5fnpLanJ5MVcm NTdGZjg5MzBebmQ7TAp6PElIYlk/Yl40QVkwPE9TcmB5QmQ5YzV0c3dKPEFo ez5ePkFzJD5xJihwb1g9Xj5WLVlIfD5qPW09RGhxKilYZXsKekpeIzRNSENe XmQ9Q0k4bGV0ZXhfSHspPGFSK3dJMF5NbUZxRzVoPEB1KW1JQ1BHd0BTU3lm PW9ARyg5Uz13UV9uCnoqTkJwbyNGQTkyPGYycHsjYjlKJFhyT0NvcS0kVXBW cXs9dFZyKnElcUhTUG1XbmZAMlEma1F7THZEVWJXP0NnZwpnZ01sU2oxNHkt JWZmKz1Ac3ArOT5mRXBNKVVIeDN2SVZDZyEwTl9QfEZhUTdtCgpsaXRlcmFs IDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9m dHNfY29uZmlndXJhdGlvbnMvc3RhdGljL2ltZy9mdHNfY29uZmlndXJhdGlv bi5wbmcgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdHNfY29uZmlndXJhdGlvbnMvc3Rh dGljL2ltZy9mdHNfY29uZmlndXJhdGlvbi5wbmcKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMC4uMGE1Y2FmNTM3MzY3MGNjNjg0NjA1ZDQyYzllYjIxNzI0ZmQ3 NTUyMwpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMzQ2CnpjbWVBU0BOPyhv bEh5YHVWQnEhaWEwdnBeMHdCeCpCcDlxX0VaN1VBbWBafkRmKkJhZkNaRHdj QHNobVZUXkpadgp6XihxP3lkN0szdms7T3BUMUJ+NUhYND9UN2VWIzZrQXJo Qzk2QXJMV3lSUGN6X1JOMXk8K3Q/NWVrd21fYHYzcHQKenBYU2hVVyR5Myk9 S25yRGFvZSUoJG8mMkx6OD9Tbi0+Mm8lQDEobEApaXYqKntoVkF7QGI5K3Re NzE/anQ3Nk0zCnp8NmQ+N2RpbEFZJW5WRHhRfiFUSElkcmt3dShNUilyPlNC Nnl0I01sKXRCKzdJYlF1Ym1EfSUqJUxoaiQ/fFZ1Zwp6QzlqM1Y/KGFMcC1X anFzQGM9S3d1fWp7ITd7Wkc4MGJRbkE7dT13c2wzMD56bTBYa3hxIV40MDM9 TVAqamRUcVIKekx5UWNwT3BMOGVPdGNNNXRxY3EtV34kMWVYdm9iXiR4TiQr WGZVdEBZWEdVWEdCQVReSTVqPFY0TndEdnI+bWRLCklJO1ZzdDBBSyVxNGdk ZkUKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL2Z0c19jb25maWd1cmF0aW9ucy90ZW1wbGF0ZXMvZnRzX2Nv bmZpZ3VyYXRpb24vY3NzL2Z0c19jb25maWd1cmF0aW9uLmNzcyBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL2Z0c19jb25maWd1cmF0aW9ucy90ZW1wbGF0ZXMvZnRzX2Nv bmZpZ3VyYXRpb24vY3NzL2Z0c19jb25maWd1cmF0aW9uLmNzcwpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOGVmMzkzCi0tLSAvZGV2 L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnRzX2NvbmZpZ3VyYXRpb25z L3RlbXBsYXRlcy9mdHNfY29uZmlndXJhdGlvbi9jc3MvZnRzX2NvbmZpZ3Vy YXRpb24uY3NzCkBAIC0wLDAgKzEsMyBAQAorLnBnYWRtaW4tY29udHJvbHMg eworICAgIG1pbi13aWR0aDogMHB4ICFpbXBvcnRhbnQ7Cit9ClwgTm8gbmV3 bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvZnRzX2NvbmZpZ3VyYXRpb25zL3RlbXBsYXRlcy9mdHNfY29uZmlndXJh dGlvbi9qcy9mdHNfY29uZmlndXJhdGlvbi5qcyBiL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L2Z0c19jb25maWd1cmF0aW9ucy90ZW1wbGF0ZXMvZnRzX2NvbmZpZ3VyYXRp b24vanMvZnRzX2NvbmZpZ3VyYXRpb24uanMKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMC4uYjFkNzNlNgotLS0gL2Rldi9udWxsCisrKyBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL2Z0c19jb25maWd1cmF0aW9ucy90ZW1wbGF0ZXMv ZnRzX2NvbmZpZ3VyYXRpb24vanMvZnRzX2NvbmZpZ3VyYXRpb24uanMKQEAg LTAsMCArMSw1NzkgQEAKK2RlZmluZSgKKyAgICAgICAgWydqcXVlcnknLCAn dW5kZXJzY29yZScsICd1bmRlcnNjb3JlLnN0cmluZycsICdwZ2FkbWluJywK KyAgICAgICAgICdwZ2FkbWluLmJyb3dzZXInLCAnYWxlcnRpZnknLCAncGdh ZG1pbi5icm93c2VyLmNvbGxlY3Rpb24nXSwKK2Z1bmN0aW9uKCQsIF8sIFMs IHBnQWRtaW4sIHBnQnJvd3NlciwgYWxlcnRpZnkpIHsKKworCisvLyBNb2Rl bCBmb3IgdG9rZW5zIGNvbnRyb2wKKyAgdmFyIFRva2VuTW9kZWwgPSBwZ0Fk bWluLkJyb3dzZXIuTm9kZS5Nb2RlbC5leHRlbmQoeworICAgICAgICBkZWZh dWx0czogeworICAgICAgICAgIHRva2VuOiB1bmRlZmluZWQsCisgICAgICAg ICAgZGljdG5hbWU6IHVuZGVmaW5lZAorICAgICAgICB9LAorICAgICAgICBr ZXlzOiBbJ3Rva2VuJ10sCisgICAgICAgIC8vIERlZmluZSB0aGUgc2NoZW1h IGZvciB0aGUgdG9rZW4vZGljdGlvbmFyeSBsaXN0CisgICAgICAgIHNjaGVt YTogW3sKKyAgICAgICAgICBpZDogJ3Rva2VuJywgbGFiZWw6J1Rva2VuJywg dHlwZTondGV4dCcsIGdyb3VwOiBudWxsLAorICAgICAgICAgIGNlbGxIZWFk ZXJDbGFzc2VzOid3aWR0aF9wZXJjZW50XzUwJywgZWRpdGFibGU6IHRydWUs CisgICAgICAgICAgZWRpdGFibGU6IGZhbHNlLCBjZWxsOiAnc3RyaW5nJywg dXJsOiAndG9rZW5zJworICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ2Rp Y3RuYW1lJywgbGFiZWw6ICdEaWN0aW9uYXJpZXMnLCB0eXBlOiAndGV4dCcs IGdyb3VwOm51bGwsCisgICAgICAgICAgY2VsbEhlYWRlckNsYXNzZXM6J3dp ZHRoX3BlcmNlbnRfNTAnLCBlZGl0YWJsZTogdHJ1ZSwKKyAgICAgICAgICBj ZWxsOkJhY2tncmlkLkV4dGVuc2lvbi5NdWx0aVNlbGVjdEFqYXhDZWxsLCB1 cmw6ICdkaWN0aW9uYXJpZXMnCisgICAgICAgIH1dLAorICAgICAgICAvLyBW YWxpZGF0aW9uIGZvciB0b2tlbiBhbmQgZGljdGlvbmFyeSBsaXN0CisgICAg ICAgIHZhbGlkYXRlOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIC8vIENs ZWFyIGFueSBleGlzdGluZyBlcnJvcnMuCisgICAgICAgICAgdmFyIG1zZzsK KyAgICAgICAgICB0aGlzLmVycm9yTW9kZWwuY2xlYXIoKTsKKyAgICAgICAg ICB2YXIgdG9rZW4gPSB0aGlzLmdldCgndG9rZW4nKTsKKyAgICAgICAgICB2 YXIgZGljdGlvbmFyeSA9IHRoaXMuZ2V0KCdkaWN0bmFtZScpOworCisgICAg ICAgICAgaWYgKF8uaXNOdWxsKHRva2VuKSB8fAorICAgICAgICAgICAgICBf LmlzVW5kZWZpbmVkKHRva2VuKSB8fAorICAgICAgICAgICAgICBTdHJpbmco dG9rZW4pLnJlcGxhY2UoL15ccyt8XHMrJC9nLCAnJykgPT0gJycpIHsKKyAg ICAgICAgICAgIG1zZyA9ICd7eyBfKCdUb2tlbiBjYW4gbm90IGJlIGVtcHR5 IScpIH19JzsKKyAgICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC5zZXQoJ3Rv a2VuJyxtc2cpOworICAgICAgICAgICAgcmV0dXJuIG1zZzsKKyAgICAgICAg ICB9CisKKyAgICAgICAgICBpZiAoXy5pc051bGwoZGljdGlvbmFyeSkgfHwK KyAgICAgICAgICAgICAgXy5pc1VuZGVmaW5lZChkaWN0aW9uYXJ5KSB8fAor ICAgICAgICAgICAgICBTdHJpbmcoZGljdGlvbmFyeSkucmVwbGFjZSgvXlxz K3xccyskL2csICcnKSA9PSAnJykgeworICAgICAgICAgICAgbXNnID0gJ3t7 IF8oJ0RpY3Rpb25hcnkgbmFtZSBjYW4gbm90IGJlIGVtcHR5IScpIH19JzsK KyAgICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC5zZXQoJ2RpY3RuYW1lJyxt c2cpOworICAgICAgICAgICAgcmV0dXJuIG1zZzsKKyAgICAgICAgICB9Cisg ICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKyAgfSk7CisKKy8v IEN1c3RvbWl6ZWQgY29udHJvbCBmb3IgdG9rZW4gY29udHJvbAorICB2YXIg VG9rZW5Db250cm9sID0gIEJhY2tmb3JtLlRva2VuQ29udHJvbCA9CisgICAg QmFja2Zvcm0uVW5pcXVlQ29sQ29sbGVjdGlvbkNvbnRyb2wuZXh0ZW5kKHsK KworICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKG9wdHMpIHsKKyAgICAgIEJh Y2tmb3JtLlVuaXF1ZUNvbENvbGxlY3Rpb25Db250cm9sLnByb3RvdHlwZS5p bml0aWFsaXplLmFwcGx5KAorICAgICAgICB0aGlzLCBhcmd1bWVudHMKKyAg ICAgICk7CisKKyAgICAgIHZhciBzZWxmID0gdGhhdCA9IHRoaXMsCisgICAg ICAgICAgbm9kZSA9ICdmdHNfY29uZmlndXJhdGlvbicsCisgICAgICAgICAg aGVhZGVyU2NoZW1hID0gW3sKKyAgICAgICAgICAgIGlkOiAndG9rZW4nLCBs YWJlbDonJywgdHlwZTondGV4dCcsIHVybDogJ3Rva2VucycsCisgICAgICAg ICAgICBub2RlOidmdHNfY29uZmlndXJhdGlvbicsIGNhbkFkZDogdHJ1ZSwg J3VybF93aXRoX2lkJzogdHJ1ZSwKKworICAgICAgICAgICAgLy8gRGVmaW5p bmcgY29udHJvbCBmb3IgdG9rZW5zIGRyb3Bkb3duIGNvbnRyb2wgaW4gaGVh ZGVyCisgICAgICAgICAgICBjb250cm9sOiBCYWNrZm9ybS5Ob2RlQWpheE9w dGlvbnNDb250cm9sLmV4dGVuZCh7CisgICAgICAgICAgICAgIGZvcm1hdHRl cjogQmFja2Zvcm0uTm9kZUFqYXhPcHRpb25zQ29udHJvbC5wcm90b3R5cGUu Zm9ybWF0dGVyLAorICAgICAgICAgICAgICBpbml0aWFsaXplOiBmdW5jdGlv bigpIHsKKyAgICAgICAgICAgICAgICBCYWNrZm9ybS5Ob2RlQWpheE9wdGlv bnNDb250cm9sLnByb3RvdHlwZS5pbml0aWFsaXplLmFwcGx5KAorICAgICAg ICAgICAgICAgICAgdGhpcywKKyAgICAgICAgICAgICAgICAgIGFyZ3VtZW50 cworICAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgICAgIHZhciBz ZWxmID0gdGhpcywKKyAgICAgICAgICAgICAgICAgIHVybCA9IHNlbGYuZmll bGQuZ2V0KCd1cmwnKSB8fCBzZWxmLmRlZmF1bHRzLnVybCwKKyAgICAgICAg ICAgICAgICAgIG0gPSBzZWxmLm1vZGVsLnRvcCB8fCBzZWxmLm1vZGVsOwor CisgICAgICAgICAgICAgICAgLyogRmV0Y2ggdGhlIHRva2Vucy9kaWN0IGxp c3QgZnJvbSAndGhhdCcgbm9kZS4KKyAgICAgICAgICAgICAgICAgKiBIZXJl ICd0aGF0JyByZWZlcnMgdG8gdW5pcXVlIGNvbGxlY3Rpb24gY29udHJvbCB3 aGVyZQorICAgICAgICAgICAgICAgICAqICdzZWxmJyByZWZlcnMgdG8gbm9k ZUFqYXhPcHRpb25zIGNvbnRyb2wgZm9yIGRpY3Rpb25hcnkKKyAgICAgICAg ICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICB2YXIgY2ZnaWQgPSB0aGF0 Lm1vZGVsLmdldCgnb2lkJyk7CisgICAgICAgICAgICAgICAgaWYgKHVybCkg eworICAgICAgICAgICAgICAgICAgdmFyIG5vZGUgPSB0aGlzLmZpZWxkLmdl dCgnc2NoZW1hX25vZGUnKSwKKyAgICAgICAgICAgICAgICAgICAgbm9kZV9p bmZvID0gdGhpcy5maWVsZC5nZXQoJ25vZGVfaW5mbycpLAorICAgICAgICAg ICAgICAgICAgICBmdWxsX3VybCA9IG5vZGUuZ2VuZXJhdGVfdXJsLmFwcGx5 KAorICAgICAgICAgICAgICAgICAgICAgIG5vZGUsIFsKKyAgICAgICAgICAg ICAgICAgICAgICAgIG51bGwsIHVybCwgdGhpcy5maWVsZC5nZXQoJ25vZGVf ZGF0YScpLAorICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maWVsZC5n ZXQoJ3VybF93aXRoX2lkJykgfHwgZmFsc2UsCisgICAgICAgICAgICAgICAg ICAgICAgICBub2RlX2luZm8KKyAgICAgICAgICAgICAgICAgICAgICBdKSwK KyAgICAgICAgICAgICAgICAgICAgY2FjaGVfbGV2ZWwgPSB0aGlzLmZpZWxk LmdldCgnY2FjaGVfbGV2ZWwnKSB8fCBub2RlLnR5cGUsCisgICAgICAgICAg ICAgICAgICAgIGNhY2hlX25vZGUgPSB0aGlzLmZpZWxkLmdldCgnY2FjaGVf bm9kZScpOworCisgICAgICAgICAgICAgICAgICBjYWNoZV9ub2RlID0gKGNh Y2hlX25vZGUgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHBnQWRtaW4uQnJvd3Nlci5Ob2Rlc1snY2FjaGVfbm9kZSddKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IG5vZGU7CisKKyAgICAg ICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICAgKiBXZSBuZWVk cyB0byBjaGVjaywgaWYgd2UgaGF2ZSBhbHJlYWR5IGNhY2hlZCBkYXRhCisg ICAgICAgICAgICAgICAgICAgKiBmb3IgdGhpcyB1cmwuIElmIHllcyAtIHVz ZSBpdCwgYW5kIGRvIG5vdCBib3RoZXIgYWJvdXQKKyAgICAgICAgICAgICAg ICAgICAqIGZldGNoaW5nIGl0IGFnYWluLgorICAgICAgICAgICAgICAgICAg ICovCisgICAgICAgICAgICAgICAgICB2YXIgZGF0YSA9IGNhY2hlX25vZGUu Y2FjaGUodXJsLCBub2RlX2luZm8sIGNhY2hlX2xldmVsKTsKKworICAgICAg ICAgICAgICAgICAgLy8gRmV0Y2ggdG9rZW4vZGljdGlvbmFyeSBsaXN0Cisg ICAgICAgICAgICAgICAgICBpZiAodGhpcy5maWVsZC5nZXQoJ3ZlcnNpb25f Y29tcGF0aWJsZScpICYmCisgICAgICAgICAgICAgICAgICAgIChfLmlzVW5k ZWZpbmVkKGRhdGEpIHx8IF8uaXNOdWxsKGRhdGEpKSkgeworICAgICAgICAg ICAgICAgICAgICBtLnRyaWdnZXIoJ3BnYWRtaW46dmlldzpmZXRjaGluZycs IG0sIHNlbGYuZmllbGQpOworICAgICAgICAgICAgICAgICAgICAkLmFqYXgo eworICAgICAgICAgICAgICAgICAgICAgIGFzeW5jOiBmYWxzZSwKKyAgICAg ICAgICAgICAgICAgICAgICB1cmw6IGZ1bGxfdXJsLAorICAgICAgICAgICAg ICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uKHJlcykgeworICAgICAgICAg ICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICAgICAgICogV2Ug d2lsbCBjYWNoZSB0aGlzIGRhdGEgZm9yIHNob3J0IHBlcmlvZCBvZiB0aW1l IGZvcgorICAgICAgICAgICAgICAgICAgICAgICAqIGF2b2lkaW5nIHNhbWUg Y2FsbHMuCisgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAg ICAgICAgICAgICAgICBkYXRhID0gY2FjaGVfbm9kZS5jYWNoZSh1cmwsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlX2luZm8sCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWNoZV9sZXZlbCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5kYXRhCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAg ICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAgIGVycm9yOiBm dW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG0udHJpZ2dl cigncGdhZG1pbjp2aWV3OmZldGNoOmVycm9yJywgbSwgc2VsZi5maWVsZCk7 CisgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg ICB9KTsKKyAgICAgICAgICAgICAgICAgICAgbS50cmlnZ2VyKCdwZ2FkbWlu OnZpZXc6ZmV0Y2hlZCcsIG0sIHNlbGYuZmllbGQpOworICAgICAgICAgICAg ICAgICAgfQorCisgICAgICAgICAgICAgICAgICAvLyBJdCBpcyBmZWFzaWJs ZSB0aGF0IHRoZSBkYXRhIG1heSBub3QgaGF2ZSBiZWVuIGZldGNoZWQuCisg ICAgICAgICAgICAgICAgICBkYXRhID0gKGRhdGEgJiYgZGF0YS5kYXRhKSB8 fCBbXTsKKworICAgICAgICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAg ICAgICAqIFRyYW5zZm9ybSB0aGUgZGF0YQorICAgICAgICAgICAgICAgICAg ICovCisgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm0gPSAodGhpcy5maWVs ZC5nZXQoJ3RyYW5zZm9ybScpCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHx8IHNlbGYuZGVmYXVsdHMudHJhbnNmb3JtKTsKKyAgICAgICAg ICAgICAgICAgIGlmICh0cmFuc2Zvcm0gJiYgXy5pc0Z1bmN0aW9uKHRyYW5z Zm9ybSkpIHsKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5maWVsZC5zZXQo J29wdGlvbnMnLCB0cmFuc2Zvcm0uYmluZChzZWxmLCBkYXRhKSk7CisgICAg ICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBz ZWxmLmZpZWxkLnNldCgnb3B0aW9ucycsIGRhdGEpOworICAgICAgICAgICAg ICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQor ICAgICAgICAgICAgfSksCisgICAgICAgICAgICAvLyBTZWxlY3QyIGNvbnRy b2wgZm9yIGFkZGluZyBuZXcgdG9rZW5zCisgICAgICAgICAgICBzZWxlY3Qy OiB7CisgICAgICAgICAgICAgIGFsbG93Q2xlYXI6IHRydWUsIHdpZHRoOiAn c3R5bGUnLAorICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogJ1NlbGVjdCB0 b2tlbicKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBmaXJzdF9lbXB0 eTogdHJ1ZSwKKyAgICAgICAgICAgIGRpc2FibGVkOiBmdW5jdGlvbihtKSB7 CisgICAgICAgICAgICAgIHJldHVybiBfLmlzVW5kZWZpbmVkKHNlbGYubW9k ZWwuZ2V0KCdvaWQnKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgfV0s CisgICAgICAgICAgaGVhZGVyRGVmYXVsdHMgPSB7dG9rZW46IG51bGx9LAor ICAgICAgICAgIC8vIEdyaWQgY29sdW1ucyBiYWNrZ3JpZAorICAgICAgICAg IGdyaWRDb2xzID0gWyd0b2tlbicsICdkaWN0bmFtZSddOworCisgICAgICAv LyBDcmVhdGluZyBtb2RlbCBmb3IgaGVhZGVyIGNvbnRyb2wgd2hpY2ggaXMg dXNlZCB0byBhZGQgbmV3IHRva2VucworICAgICAgc2VsZi5oZWFkZXJEYXRh ID0gbmV3IChCYWNrYm9uZS5Nb2RlbC5leHRlbmQoeworICAgICAgICBkZWZh dWx0czogaGVhZGVyRGVmYXVsdHMsCisgICAgICAgIHNjaGVtYTogaGVhZGVy U2NoZW1hCisgICAgICB9KSkoe30pOworCisgICAgICAvLyBDcmVhdGluZyB2 aWV3IGZyb20gaGVhZGVyIHNjaGVtYSBpbiB0b2tlbnMgY29udHJvbAorICAg ICAgdmFyIGhlYWRlckdyb3VwcyA9IEJhY2tmb3JtLmdlbmVyYXRlVmlld1Nj aGVtYSgKKyAgICAgICAgICBzZWxmLmZpZWxkLmdldCgnbm9kZV9pbmZvJyks IHNlbGYuaGVhZGVyRGF0YSwgJ2NyZWF0ZScsCisgICAgICAgICAgc2VsZi5m aWVsZC5nZXQoJ3NjaGVtYV9ub2RlJyksIHNlbGYuZmllbGQuZ2V0KCdub2Rl X2RhdGEnKQorICAgICAgICAgICksCisgICAgICAgICAgZmllbGRzID0gW107 CisKKyAgICAgIF8uZWFjaChoZWFkZXJHcm91cHMsIGZ1bmN0aW9uKG8pIHsK KyAgICAgICAgZmllbGRzID0gZmllbGRzLmNvbmNhdChvLmZpZWxkcyk7Cisg ICAgICB9KTsKKyAgICAgIHNlbGYuaGVhZGVyRmllbGRzID0gbmV3IEJhY2tm b3JtLkZpZWxkcyhmaWVsZHMpOworCisgICAgICAvLyBjcmVhdGluZyBncmlk IHVzaW5nIGdyaWQgY29sdW1ucworICAgICAgc2VsZi5ncmlkU2NoZW1hID0g QmFja2Zvcm0uZ2VuZXJhdGVHcmlkQ29sdW1uc0Zyb21Nb2RlbCgKKyAgICAg ICAgICBzZWxmLmZpZWxkLmdldCgnbm9kZV9pbmZvJyksIHNlbGYuZmllbGQu Z2V0KCdtb2RlbCcpLAorICAgICAgICAgICdlZGl0JywgZ3JpZENvbHMsIHNl bGYuZmllbGQuZ2V0KCdzY2hlbWFfbm9kZScpCisgICAgICApOworCisgICAg ICAvLyBQcm92aWRpbmcgYmVoYXZpb3VyIGNvbnRyb2wgZnVuY3Rpb25zIHRv IGhlYWRlciBhbmQgZ3JpZCBjb250cm9sCisgICAgICBzZWxmLmNvbnRyb2xz ID0gW107CisgICAgICBzZWxmLmxpc3RlblRvKHNlbGYuaGVhZGVyRGF0YSwg ImNoYW5nZSIsIHNlbGYuaGVhZGVyRGF0YUNoYW5nZWQpOworICAgICAgc2Vs Zi5saXN0ZW5UbyhzZWxmLmhlYWRlckRhdGEsICJzZWxlY3QyIiwgc2VsZi5o ZWFkZXJEYXRhQ2hhbmdlZCk7CisgICAgICBzZWxmLmxpc3RlblRvKHNlbGYu Y29sbGVjdGlvbiwgImFkZCIsIHNlbGYub25BZGRvclJlbW92ZVRva2Vucyk7 CisgICAgICBzZWxmLmxpc3RlblRvKHNlbGYuY29sbGVjdGlvbiwgInJlbW92 ZSIsIHNlbGYub25BZGRvclJlbW92ZVRva2Vucyk7CisgICAgfSwKKworICAg IC8vIFRlbXBsYXRlIGZvciBjcmVhdGluZyBoZWFkZXIgdmlldworICAgIGdl bmVyYXRlSGVhZGVyOiBmdW5jdGlvbihkYXRhKSB7CisgICAgICB2YXIgaGVh ZGVyID0gWworICAgICAgICAnPGRpdiBjbGFzcz0ic3Vibm9kZS1oZWFkZXIt Zm9ybSI+JywKKyAgICAgICAgJyA8ZGl2IGNsYXNzPSJjb250YWluZXItZmx1 aWQiPicsCisgICAgICAgICcgIDxkaXYgY2xhc3M9InJvdyI+JywKKyAgICAg ICAgJyAgIDxkaXYgY2xhc3M9ImNvbC14cy00Ij4nLAorICAgICAgICAnICAg IDxsYWJlbCBjbGFzcz0iY29udHJvbC1sYWJlbCI+PCUtdG9rZW5fbGFiZWwl PjwvbGFiZWw+JywKKyAgICAgICAgJyAgIDwvZGl2PicsCisgICAgICAgICcg ICA8ZGl2IGNsYXNzPSJjb2wteHMtNCIgaGVhZGVyPSJ0b2tlbiI+PC9kaXY+ JywKKyAgICAgICAgJyAgIDxkaXYgY2xhc3M9ImNvbC14cy00Ij4nLAorICAg ICAgICAnICAgICA8YnV0dG9uIGNsYXNzPSJidG4tc20gYnRuLWRlZmF1bHQg YWRkIiA8JT1jYW5BZGQgPyAiIiA6ICJkaXNhYmxlZD1cJ2Rpc2FibGVkXCci JT4gPjwlLWFkZF9sYWJlbCU+PC9idXR0dG9uPicsCisgICAgICAgICcgICA8 L2Rpdj4nLAorICAgICAgICAnICA8L2Rpdj4nLAorICAgICAgICAnIDwvZGl2 PicsCisgICAgICAgICc8L2Rpdj4nLF0uam9pbigiXG4iKQorCisgICAgICBf LmV4dGVuZChkYXRhLCB7CisgICAgICAgIHRva2VuX2xhYmVsOiAne3sgXygn VG9rZW5zJyl9fScsCisgICAgICAgIGFkZF9sYWJlbDogJ3t7IF8oJ0FERCcp fX0nCisgICAgICB9KTsKKworICAgICAgdmFyIHNlbGYgPSB0aGlzLAorICAg ICAgICAgIGhlYWRlclRtcGwgPSBfLnRlbXBsYXRlKGhlYWRlciksCisgICAg ICAgICAgJGhlYWRlciA9ICQoaGVhZGVyVG1wbChkYXRhKSksCisgICAgICAg ICAgY29udHJvbHMgPSB0aGlzLmNvbnRyb2xzOworCisgICAgICBzZWxmLmhl YWRlckZpZWxkcy5lYWNoKGZ1bmN0aW9uKGZpZWxkKSB7CisgICAgICAgIHZh ciBjb250cm9sID0gbmV3IChmaWVsZC5nZXQoImNvbnRyb2wiKSkoeworICAg ICAgICAgIGZpZWxkOiBmaWVsZCwKKyAgICAgICAgICBtb2RlbDogc2VsZi5o ZWFkZXJEYXRhCisgICAgICAgIH0pOworCisgICAgICAgICRoZWFkZXIuZmlu ZCgnZGl2W2hlYWRlcj0iJyArIGZpZWxkLmdldCgnbmFtZScpICsgJyJdJyku YXBwZW5kKAorICAgICAgICAgIGNvbnRyb2wucmVuZGVyKCkuJGVsCisgICAg ICAgICk7CisKKyAgICAgICAgY29udHJvbC4kZWwuZmluZCgnLmNvbnRyb2wt bGFiZWwnKS5yZW1vdmUoKTsKKyAgICAgICAgY29udHJvbHMucHVzaChjb250 cm9sKTsKKyAgICAgIH0pOworCisgICAgICAvLyBXZSBzaG91bGQgbm90IHNo b3cgYWRkIGJ1dHRvbiBpbiBwcm9wZXJ0aWVzIG1vZGUKKyAgICAgIGlmIChk YXRhLm1vZGUgPT0gJ3Byb3BlcnRpZXMnKSB7CisgICAgICAgICRoZWFkZXIu ZmluZCgiYnV0dG9uLmFkZCIpLnJlbW92ZSgpOworICAgICAgfQorCisgICAg ICAvLyBEaXNhYmxlIGFkZCBidXR0b24gaW4gdG9rZW4gY29udHJvbCBpbiBj cmVhdGUgbW9kZQorICAgICAgaWYoZGF0YS5tb2RlID09ICdjcmVhdGUnKSB7 CisgICAgICAgICRoZWFkZXIuZmluZCgiYnV0dG9uLmFkZCIpLmF0dHIoJ2Rp c2FibGVkJywgdHJ1ZSk7CisgICAgICB9CisKKyAgICAgIHNlbGYuJGhlYWRl ciA9ICRoZWFkZXI7CisgICAgICByZXR1cm4gJGhlYWRlcjsKKyAgICB9LAor CisgICAgLy8gUHJvdmlkaW5nIGV2ZW50IGhhbmRsZXIgZm9yIGFkZCBidXR0 b24gaW4gaGVhZGVyCisgICAgZXZlbnRzOiBfLmV4dGVuZCgKKyAgICAgICAg ICAgICAge30sIEJhY2tmb3JtLlVuaXF1ZUNvbENvbGxlY3Rpb25Db250cm9s LnByb3RvdHlwZS5ldmVudHMsCisgICAgICAgICAgICAgIHsnY2xpY2sgYnV0 dG9uLmFkZCc6ICdhZGRUb2tlbnMnfQorICAgICAgICAgICAgKSwKKworICAg IC8vIFNob3cgdG9rZW4vZGljdGlvbmFyeSBncmlkCisgICAgc2hvd0dyaWRD b250cm9sOiBmdW5jdGlvbihkYXRhKSB7CisKKyAgICAgIHZhciBzZWxmID0g dGhpcywKKyAgICAgICAgICB0aXRsZVRtcGwgPSBfLnRlbXBsYXRlKCI8ZGl2 IGNsYXNzPSdzdWJub2RlLWhlYWRlcic+PC9kaXY+IiksCisgICAgICAgICAg JGdyaWRCb2R5ID0gJCgiPGRpdj48L2Rpdj4iLCB7CisgICAgICAgICAgICBj bGFzczoncGdhZG1pbi1jb250cm9sLWdyb3VwIGJhY2tncmlkIGZvcm0tZ3Jv dXAgY29sLXhzLTEyIG9iamVjdCBzdWJub2RlJworICAgICAgICAgIH0pLmFw cGVuZCgKKyAgICAgICAgICAgICAgIHRpdGxlVG1wbCh7bGFiZWw6IGRhdGEu bGFiZWx9KQorICAgICAgICAgICk7CisKKyAgICAgICRncmlkQm9keS5hcHBl bmQoc2VsZi5nZW5lcmF0ZUhlYWRlcihkYXRhKSk7CisKKyAgICAgIHZhciBn cmlkQ29sdW1ucyA9IF8uY2xvbmUodGhpcy5ncmlkU2NoZW1hLmNvbHVtbnMp OworCisgICAgICAvLyBJbnNlcnQgRGVsZXRlIENlbGwgaW50byBHcmlkCisg ICAgICBpZiAoZGF0YS5kaXNhYmxlZCA9PSBmYWxzZSAmJiBkYXRhLmNhbkRl bGV0ZSkgeworICAgICAgICAgIGdyaWRDb2x1bW5zLnVuc2hpZnQoeworICAg ICAgICAgICAgbmFtZTogInBnLWJhY2tmb3JtLWRlbGV0ZSIsIGxhYmVsOiAi IiwKKyAgICAgICAgICAgIGNlbGw6IEJhY2tncmlkLkV4dGVuc2lvbi5EZWxl dGVDZWxsLAorICAgICAgICAgICAgZWRpdGFibGU6IGZhbHNlLCBjZWxsX3By aW9yaXR5OiAtMQorICAgICAgICAgIH0pOworICAgICAgfQorCisgICAgICBp ZiAoc2VsZi5ncmlkKSB7CisgICAgICAgIHNlbGYuZ3JpZC5yZW1vdmUoKTsK KyAgICAgICAgc2VsZi5ncmlkLm51bGw7CisgICAgICB9CisgICAgICAvLyBJ bml0aWFsaXplIGEgbmV3IEdyaWQgaW5zdGFuY2UKKyAgICAgIHZhciBncmlk ID0gc2VsZi5ncmlkID0gbmV3IEJhY2tncmlkLkdyaWQoeworICAgICAgICBj b2x1bW5zOiBncmlkQ29sdW1ucywKKyAgICAgICAgY29sbGVjdGlvbjogc2Vs Zi5jb2xsZWN0aW9uLAorICAgICAgICBjbGFzc05hbWU6ICJiYWNrZ3JpZCB0 YWJsZS1ib3JkZXJlZCIKKyAgICAgIH0pOworICAgICAgc2VsZi4kZ3JpZCA9 IGdyaWQucmVuZGVyKCkuJGVsOworCisgICAgICAkZ3JpZEJvZHkuYXBwZW5k KHNlbGYuJGdyaWQpOworCisgICAgICAvLyBGaW5kIHNlbGVjdGVkIGRpY3Rp b25hcmllcyBpbiBncmlkIGFuZCBzaG93IGl0IGFsbCB0b2dldGhlcgorICAg ICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgc2VsZi5oZWFk ZXJEYXRhLnNldCh7CisgICAgICAgICAgJ3Rva2VuJzogc2VsZi4kaGVhZGVy LmZpbmQoCisgICAgICAgICAgICAnZGl2W2hlYWRlcj0idG9rZW4iXSBzZWxl Y3QnCisgICAgICAgICAgICApLnZhbCgpCisgICAgICAgICAgICB9LCB7c2ls ZW50OnRydWV9CisgICAgICAgICAgKTsKKyAgICAgIH0sIDEwKTsKKworICAg ICAgLy8gUmVuZGVyIG5vZGUgZ3JpZAorICAgICAgcmV0dXJuICRncmlkQm9k eTsKKyAgICB9LAorCisgICAgLy8gV2hlbiB1c2VyIGNoYW5nZSB0aGUgaGVh ZGVyIGNvbnRyb2wgdG8gYWRkIGEgbmV3IHRva2VuCisgICAgaGVhZGVyRGF0 YUNoYW5nZWQ6IGZ1bmN0aW9uKCkgeworICAgICAgdmFyIHNlbGYgPSB0aGlz LCB2YWwsCisgICAgICAgICAgZGF0YSA9IHRoaXMuaGVhZGVyRGF0YS50b0pT T04oKSwKKyAgICAgICAgICBpblNlbGVjdGVkID0gKF8uaXNFbXB0eShkYXRh KSB8fCBfLmlzVW5kZWZpbmVkKGRhdGEpKSwKKyAgICAgICAgICBjaGVja1Zh cnMgPSBbJ3Rva2VuJ107CisKKyAgICAgIGlmICghc2VsZi4kaGVhZGVyKSB7 CisgICAgICAgIHJldHVybjsKKyAgICAgIH0KKworICAgICAgc2VsZi4kaGVh ZGVyLmZpbmQoJ2J1dHRvbi5hZGQnKS5wcm9wKCdkaXNhYmxlZCcsIGluU2Vs ZWN0ZWQpOworICAgIH0sCisKKyAgICAvLyBHZXQgY2FsbGVkIHdoZW4gdXNl ciBjbGljayBvbiBhZGQgYnV0dG9uIGhlYWRlcgorICAgIGFkZFRva2Vuczog ZnVuY3Rpb24oZXYpIHsKKyAgICAgIGV2LnByZXZlbnREZWZhdWx0KCk7Cisg ICAgICB2YXIgc2VsZiA9IHRoaXMsCisgICAgICAgICAgdG9rZW4gPSBzZWxm LmhlYWRlckRhdGEuZ2V0KCd0b2tlbicpOworCisgICAgICBpZiAoIXRva2Vu IHx8IHRva2VuID09ICcnKSB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg ICAgIH0KKworICAgICAgdmFyIGNvbGwgPSBzZWxmLm1vZGVsLmdldChzZWxm LmZpZWxkLmdldCgnbmFtZScpKSwKKyAgICAgICAgICBtID0gbmV3IChzZWxm LmZpZWxkLmdldCgnbW9kZWwnKSkoCisgICAgICAgICAgICAgICAgc2VsZi5o ZWFkZXJEYXRhLnRvSlNPTigpLCB7CisgICAgICAgICAgICAgICAgICBzaWxl bnQ6IHRydWUsIHRvcDogc2VsZi5tb2RlbC50b3AsCisgICAgICAgICAgICAg ICAgICBjb2xsZWN0aW9uOiBjb2xsLCBoYW5kbGVyOiBjb2xsCisgICAgICAg ICAgICAgICAgfSksCisgICAgICAgICAgY2hlY2tWYXJzID0gWyd0b2tlbidd LAorICAgICAgICAgIGlkeCA9IC0xOworCisgICAgICAvLyBGaW5kIGlmIHRv a2VuIGV4aXN0cyBpbiBncmlkCisgICAgICBzZWxmLmNvbGxlY3Rpb24uZWFj aChmdW5jdGlvbihtKSB7CisgICAgICAgIF8uZWFjaChjaGVja1ZhcnMsIGZ1 bmN0aW9uKHYpIHsKKyAgICAgICAgICB2YWwgPSBtLmdldCh2KTsKKyAgICAg ICAgICBpZih2YWwgPT0gdG9rZW4pIHsKKyAgICAgICAgICAgIGlkeCA9IGNv bGwuaW5kZXhPZihtKTsKKyAgICAgICAgICB9CisgICAgICAgIH0pOworICAg ICAgfSk7CisKKworCisgICAgICAvLyByZW1vdmUgJ20nIGlmIGR1cGxpY2F0 ZSB2YWx1ZSBmb3VuZC4KKyAgICAgIGlmIChpZHggPT0gLTEpIHsKKyAgICAg ICAgY29sbC5hZGQobSk7CisgICAgICAgIGlkeCA9IGNvbGwuaW5kZXhPZiht KTsKKyAgICAgIH0KKyAgICAgIHNlbGYuJGdyaWQuZmluZCgnLm5ldycpLnJl bW92ZUNsYXNzKCduZXcnKTsKKyAgICAgIHZhciBuZXdSb3cgPSBzZWxmLmdy aWQuYm9keS5yb3dzW2lkeF0uJGVsOworICAgICAgbmV3Um93LmFkZENsYXNz KCJuZXciKTsKKyAgICAgIC8vJChuZXdSb3cpLnBnTWFrZVZpc2libGUoJ3Rh YmxlLWJvcmRlcmVkJyk7CisgICAgICAkKG5ld1JvdykucGdNYWtlVmlzaWJs ZSgnYmFja2Zvcm0tdGFiJyk7CisKKworICAgICAgcmV0dXJuIGZhbHNlOwor ICAgIH0sCisKKyAgICAvLyBXaGVuIHVzZXIgZGVsZXRlIHRva2VuL2RpY3Rp b25hcnkgZW50cnkgZnJvbSBncmlkCisgICAgb25BZGRvclJlbW92ZVRva2Vu czogZnVuY3Rpb24oKSB7CisgICAgICB2YXIgc2VsZiA9IHRoaXM7CisKKyAg ICAgIC8qCisgICAgICAgKiBXYWl0IGZvciBjb2xsZWN0aW9uIHRvIGJlIHVw ZGF0ZWQgYmVmb3JlIGNoZWNraW5nIGZvciB0aGUgYnV0dG9uIHRvCisgICAg ICAgKiBiZSBlbmFibGVkLCBvciBub3QuCisgICAgICAgKi8KKyAgICAgIHNl dFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgICAgc2VsZi5jb2xsZWN0 aW9uLnRyaWdnZXIoJ3BnYWRtaW46dG9rZW5zOnVwZGF0ZWQnLCBzZWxmLmNv bGxlY3Rpb24pOworICAgICAgICBzZWxmLmhlYWRlckRhdGFDaGFuZ2VkKCk7 CisgICAgICB9LCAxMCk7CisgICAgfSwKKworICAgIC8vIFdoZW4gY29udHJv bCBpcyBhYm91dCB0byBkZXN0cm95CisgICAgcmVtb3ZlOiBmdW5jdGlvbigp IHsKKyAgICAgIC8qCisgICAgICAgKiBTdG9wIGxpc3RlbmluZyB0aGUgZXZl bnRzIHJlZ2lzdGVyZWQgYnkgdGhpcyBjb250cm9sLgorICAgICAgICovCisg ICAgICB0aGlzLnN0b3BMaXN0ZW5pbmcodGhpcy5oZWFkZXJEYXRhLCAiY2hh bmdlIiwgdGhpcy5oZWFkZXJEYXRhQ2hhbmdlZCk7CisgICAgICB0aGlzLmxp c3RlblRvKHRoaXMuaGVhZGVyRGF0YSwgInNlbGVjdDIiLCB0aGlzLmhlYWRl ckRhdGFDaGFuZ2VkKTsKKyAgICAgIHRoaXMubGlzdGVuVG8odGhpcy5jb2xs ZWN0aW9uLCAicmVtb3ZlIiwgdGhpcy5vbkFkZG9yUmVtb3ZlVG9rZW5zKTsK KworICAgICAgVG9rZW5Db250cm9sLl9fc3VwZXJfXy5yZW1vdmUuYXBwbHko dGhpcywgYXJndW1lbnRzKTsKKworICAgICAgLy8gUmVtb3ZlIHRoZSBoZWFk ZXIgbW9kZWwKKyAgICAgIGRlbGV0ZSAodGhpcy5oZWFkZXJEYXRhKTsKKwor ICAgIH0KKyAgfSk7CisKKworICAvLyBFeHRlbmQgdGhlIGNvbGxlY3Rpb24g Y2xhc3MgZm9yIEZUUyBDb25maWd1cmF0aW9uCisgIGlmICghcGdCcm93c2Vy Lk5vZGVzWydjb2xsLWZ0c19jb25maWd1cmF0aW9uJ10pIHsKKyAgICB2YXIg ZnRzX2NvbmZpZ3VyYXRpb25zID0gcGdBZG1pbi5Ccm93c2VyLk5vZGVzWydj b2xsLWZ0c19jb25maWd1cmF0aW9uJ10gPQorICAgICAgcGdBZG1pbi5Ccm93 c2VyLkNvbGxlY3Rpb24uZXh0ZW5kKHsKKyAgICAgICAgbm9kZTogJ2Z0c19j b25maWd1cmF0aW9uJywKKyAgICAgICAgbGFiZWw6ICd7eyBfKCdGVFMgQ29u ZmlndXJhdGlvbnMnKSB9fScsCisgICAgICAgIHR5cGU6ICdjb2xsLWZ0c19j b25maWd1cmF0aW9uJywKKyAgICAgICAgY29sdW1uczogWyduYW1lJywgJ2Rl c2NyaXB0aW9uJ10KKyAgICAgIH0pOworICB9OworCisgIC8vIEV4dGVuZCB0 aGUgbm9kZSBjbGFzcyBmb3IgRlRTIENvbmZpZ3VyYXRpb24KKyAgaWYgKCFw Z0Jyb3dzZXIuTm9kZXNbJ2Z0c19jb25maWd1cmF0aW9uJ10pIHsKKyAgICBw Z0FkbWluLkJyb3dzZXIuTm9kZXNbJ2Z0c19jb25maWd1cmF0aW9uJ10gPSBw Z0FkbWluLkJyb3dzZXIuTm9kZS5leHRlbmQoeworICAgICAgcGFyZW50X3R5 cGU6IFsnc2NoZW1hJywgJ2NhdGFsb2cnXSwKKyAgICAgIHR5cGU6ICdmdHNf Y29uZmlndXJhdGlvbicsCisgICAgICBzcWxBbHRlckhlbHA6ICdzcWwtYWx0 ZXJ0c2NvbmZpZy5odG1sJywKKyAgICAgIHNxbENyZWF0ZUhlbHA6ICdzcWwt Y3JlYXRldHNjb25maWcuaHRtbCcsCisgICAgICBjYW5Ecm9wOiB0cnVlLAor ICAgICAgY2FuRHJvcENhc2NhZGU6IHRydWUsCisgICAgICBsYWJlbDogJ3t7 IF8oJ0ZUUyBDb25maWd1cmF0aW9uJykgfX0nLAorICAgICAgaGFzU1FMOiB0 cnVlLAorICAgICAgaGFzRGVwZW5kczogdHJ1ZSwKKyAgICAgIEluaXQ6IGZ1 bmN0aW9uKCkgeworCisgICAgICAgIC8vIEF2b2lkIG11bHRpcGxlIHJlZ2lz dHJhdGlvbiBvZiBtZW51cworICAgICAgICBpZiAodGhpcy5pbml0aWFsaXpl ZCkKKyAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5pbml0aWFs aXplZCA9IHRydWU7CisKKyAgICAgICAgLy8gQWRkIGNvbnRleHQgbWVudXMg Zm9yIEZUUyBDb25maWd1cmF0aW9uCisgICAgICAgIHBnQnJvd3Nlci5hZGRf bWVudXMoW3sKKyAgICAgICAgICBuYW1lOiAnY3JlYXRlX2Z0c19jb25maWd1 cmF0aW9uX29uX3NjaGVtYScsIG5vZGU6ICdzY2hlbWEnLAorICAgICAgICAg IG1vZHVsZTogdGhpcywgY2F0ZWdvcnk6ICdjcmVhdGUnLCBwcmlvcml0eTog NCwKKyAgICAgICAgICBhcHBsaWVzOiBbJ29iamVjdCcsICdjb250ZXh0J10s IGNhbGxiYWNrOiAnc2hvd19vYmpfcHJvcGVydGllcycsCisgICAgICAgICAg bGFiZWw6ICd7e18oJ0ZUUyBDb25maWd1cmF0aW9uLi4uJyl9fScsCisgICAg ICAgICAgaWNvbjogJ3djVGFiSWNvbiBpY29uLWZ0c19jb25maWd1cmF0aW9u JywgZGF0YToge2FjdGlvbjogJ2NyZWF0ZSd9CisgICAgICAgICAgfSx7Cisg ICAgICAgICAgbmFtZTogJ2NyZWF0ZV9mdHNfY29uZmlndXJhdGlvbl9vbl9j b2xsJywgbW9kdWxlOiB0aGlzLCBwcmlvcml0eTogNCwKKyAgICAgICAgICBu b2RlOiAnY29sbC1mdHNfY29uZmlndXJhdGlvbicsIGFwcGxpZXM6IFsnb2Jq ZWN0JywgJ2NvbnRleHQnXSwKKyAgICAgICAgICBjYWxsYmFjazogJ3Nob3df b2JqX3Byb3BlcnRpZXMnLCBjYXRlZ29yeTogJ2NyZWF0ZScsCisgICAgICAg ICAgbGFiZWw6ICd7eyBfKCdGVFMgQ29uZmlndXJhdGlvbi4uLicpIH19Jywg ZGF0YToge2FjdGlvbjogJ2NyZWF0ZSd9LAorICAgICAgICAgIGljb246ICd3 Y1RhYkljb24gaWNvbi1mdHNfY29uZmlndXJhdGlvbicKKyAgICAgICAgICB9 LHsKKyAgICAgICAgICBuYW1lOiAnY3JlYXRlX2Z0c19jb25maWd1cmF0aW9u Jywgbm9kZTogJ2Z0c19jb25maWd1cmF0aW9uJywKKyAgICAgICAgICBtb2R1 bGU6IHRoaXMsIGFwcGxpZXM6IFsnb2JqZWN0JywgJ2NvbnRleHQnXSwKKyAg ICAgICAgICBjYWxsYmFjazogJ3Nob3dfb2JqX3Byb3BlcnRpZXMnLCBjYXRl Z29yeTogJ2NyZWF0ZScsIHByaW9yaXR5OiA0LAorICAgICAgICAgIGxhYmVs OiAne3tfKCdGVFMgQ29uZmlndXJhdGlvbi4uLicpfX0nLCBkYXRhOiB7YWN0 aW9uOiAnY3JlYXRlJ30sCisgICAgICAgICAgaWNvbjogJ3djVGFiSWNvbiBp Y29uLWZ0c19jb25maWd1cmF0aW9uJworICAgICAgICAgIH1dKTsKKyAgICAg IH0sCisKKyAgICAgIC8vIERlZmluaW5nIG1vZGVsIGZvciBGVFMgQ29uZmln dXJhdGlvbiBub2RlCisgICAgICBtb2RlbDogcGdBZG1pbi5Ccm93c2VyLk5v ZGUuTW9kZWwuZXh0ZW5kKHsKKyAgICAgICAgZGVmYXVsdHM6IHsKKyAgICAg ICAgICBuYW1lOiB1bmRlZmluZWQsICAgICAgICAvLyBGVFMgQ29uZmlndXJh dGlvbiBuYW1lCisgICAgICAgICAgb3duZXI6IHVuZGVmaW5lZCwgICAgICAg Ly8gRlRTIENvbmZpZ3VyYXRpb24gb3duZXIKKyAgICAgICAgICBkZXNjcmlw dGlvbjogdW5kZWZpbmVkLCAvLyBDb21tZW50IG9uIEZUUyBDb25maWd1cmF0 aW9uCisgICAgICAgICAgc2NoZW1hOiB1bmRlZmluZWQsICAgICAgLy8gU2No ZW1hIG5hbWUgRlRTIENvbmZpZ3VyYXRpb24gYmVsb25ncyB0bworICAgICAg ICAgIHByc25hbWU6IHVuZGVmaW5lZCwgICAgLy8gRlRTIHBhcnNlciBsaXN0 IGZvciBGVFMgQ29uZmlndXJhdGlvbiBub2RlCisgICAgICAgICAgY29weV9j b25maWc6IHVuZGVmaW5lZCwgLy8gRlRTIGNvbmZpZ3VyYXRpb24gbGlzdCB0 byBjb3B5IGZyb20KKyAgICAgICAgICB0b2tlbnM6IHVuZGVmaW5lZCAgICAg IC8vIHRva2VuL2RpY3Rpb25hcnkgcGFpciBsaXN0IGZvciBub2RlCisgICAg ICAgIH0sCisgICAgICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKGF0dHJzLCBh cmdzKSB7CisgICAgICAgICAgdmFyIGlzTmV3ID0gKF8uc2l6ZShhdHRycykg PT09IDApOworCisgICAgICAgICAgaWYgKGlzTmV3KSB7CisgICAgICAgICAg ICB2YXIgdXNlckluZm8gPSBwZ0Jyb3dzZXIuc2VydmVySW5mb1thcmdzLm5v ZGVfaW5mby5zZXJ2ZXIuX2lkXS51c2VyOworICAgICAgICAgICAgdGhpcy5z ZXQoeydvd25lcic6IHVzZXJJbmZvLm5hbWV9LCB7c2lsZW50OiB0cnVlfSk7 CisgICAgICAgICAgfQorICAgICAgICAgIHBnQWRtaW4uQnJvd3Nlci5Ob2Rl Lk1vZGVsLnByb3RvdHlwZS5pbml0aWFsaXplLmFwcGx5KHRoaXMsIGFyZ3Vt ZW50cyk7CisgICAgICAgICAgaWYgKF8uaXNVbmRlZmluZWQodGhpcy5nZXQo J3NjaGVtYScpKSkgeworICAgICAgICAgICAgICB0aGlzLnNldCgnc2NoZW1h JywgdGhpcy5ub2RlX2luZm8uc2NoZW1hLl9pZCk7CisgICAgICAgICAgfQor ICAgICAgICB9LAorICAgICAgICAvLyBEZWZpbmluZyBzY2hlbWEgZm9yIEZU UyBDb25maWd1cmF0aW9uCisgICAgICAgIHNjaGVtYTogW3sKKyAgICAgICAg ICBpZDogJ25hbWUnLCBsYWJlbDogJ3t7IF8oJ05hbWUnKSB9fScsIGNlbGw6 ICdzdHJpbmcnLAorICAgICAgICAgIHR5cGU6ICd0ZXh0JywgY2VsbEhlYWRl ckNsYXNzZXM6ICd3aWR0aF9wZXJjZW50XzUwJworICAgICAgICB9LHsKKyAg ICAgICAgICBpZDogJ29pZCcsIGxhYmVsOid7eyBfKCdPSUQnKSB9fScsIGNl bGw6ICdzdHJpbmcnLAorICAgICAgICAgIGVkaXRhYmxlOiBmYWxzZSwgdHlw ZTogJ3RleHQnLCBkaXNhYmxlZDogdHJ1ZSwgbW9kZTpbJ3Byb3BlcnRpZXMn XQorICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ293bmVyJywgbGFiZWw6 J3t7IF8oJ093bmVyJykgfX0nLCBjZWxsOiAnc3RyaW5nJywKKyAgICAgICAg ICB0eXBlOiAndGV4dCcsIG1vZGU6IFsncHJvcGVydGllcycsICdlZGl0Jywn Y3JlYXRlJ10sIG5vZGU6ICdyb2xlJywKKyAgICAgICAgICBjb250cm9sOiBC YWNrZm9ybS5Ob2RlTGlzdEJ5TmFtZUNvbnRyb2wKKyAgICAgICAgfSx7Cisg ICAgICAgICAgaWQ6ICdzY2hlbWEnLCBsYWJlbDogJ3t7IF8oJ1NjaGVtYScp fX0nLCBjZWxsOiAnc3RyaW5nJywKKyAgICAgICAgICB0eXBlOiAndGV4dCcs IG1vZGU6IFsnY3JlYXRlJywnZWRpdCddLCBub2RlOiAnc2NoZW1hJywKKyAg ICAgICAgICBjb250cm9sOiAnbm9kZS1saXN0LWJ5LWlkJworICAgICAgICB9 LHsKKyAgICAgICAgICBpZDogJ2Rlc2NyaXB0aW9uJywgbGFiZWw6J3t7IF8o J0NvbW1lbnQnKSB9fScsIGNlbGw6ICdzdHJpbmcnLAorICAgICAgICAgIHR5 cGU6ICdtdWx0aWxpbmUnLCBjZWxsSGVhZGVyQ2xhc3NlczogJ3dpZHRoX3Bl cmNlbnRfNTAnCisgICAgICAgIH0seworICAgICAgICAgIGlkOiAncHJzbmFt ZScsIGxhYmVsOiAne3sgXygnUGFyc2VyJyl9fScsdHlwZTogJ3RleHQnLAor ICAgICAgICAgIHVybDogJ3BhcnNlcnMnLCBmaXJzdF9lbXB0eTogdHJ1ZSwK KyAgICAgICAgICBncm91cDogJ3t7IF8oJ0RlZmluaXRpb24nKSB9fScsIGNv bnRyb2w6ICdub2RlLWFqYXgtb3B0aW9ucycsCisgICAgICAgICAgZGVwczog Wydjb3B5X2NvbmZpZyddLAorICAgICAgICAgIC8vZGlzYWJsZSBwYXJzZXIg d2hlbiB1c2VyIHNlbGVjdCBjb3B5X2NvbmZpZyBtYW51YWxseSBhbmQgdmlj YS12ZXJzYQorICAgICAgICAgIGRpc2FibGVkOiBmdW5jdGlvbihtKSB7Cisg ICAgICAgICAgICB2YXIgY29weV9jb25maWcgPSBtLmdldCgnY29weV9jb25m aWcnKTsKKyAgICAgICAgICAgIHJldHVybiBtLmlzTmV3KCkgJiYKKyAgICAg ICAgICAgICAgICAgICAgKF8uaXNOdWxsKGNvcHlfY29uZmlnKSB8fAorICAg ICAgICAgICAgICAgICAgICBfLmlzVW5kZWZpbmVkKGNvcHlfY29uZmlnKSB8 fAorICAgICAgICAgICAgICAgICAgICBjb3B5X2NvbmZpZyA9PT0gJycpID8g ZmFsc2UgOiB0cnVlOworICAgICAgICAgIH0KKyAgICAgICAgfSx7CisgICAg ICAgICAgaWQ6ICdjb3B5X2NvbmZpZycsIGxhYmVsOiAne3sgXygnQ29weSBD b25maWcnKX19Jyx0eXBlOiAndGV4dCcsCisgICAgICAgICAgbW9kZTogWydj cmVhdGUnXSwgZ3JvdXA6ICd7eyBfKCdEZWZpbml0aW9uJykgfX0nLAorICAg ICAgICAgIGNvbnRyb2w6ICdub2RlLWFqYXgtb3B0aW9ucycsIHVybDogJ2Nv cHlDb25maWcnLCBkZXBzOiBbJ3Byc25hbWUnXSwKKworICAgICAgICAgIC8v ZGlzYWJsZSBjb3B5X2NvbmZpZyB3aGVuIHVzZXIgc2VsZWN0IHBhcnNlciBt YW51YWxseSBhbmQgdmljYS12ZXJzYQorICAgICAgICAgIGRpc2FibGVkOiBm dW5jdGlvbihtKSB7CisgICAgICAgICAgICB2YXIgcGFyc2VyID0gbS5nZXQo J3Byc25hbWUnKTsKKyAgICAgICAgICAgIHJldHVybiBtLmlzTmV3KCkgJiYK KyAgICAgICAgICAgICAgICAgICAgKF8uaXNOdWxsKHBhcnNlcikgfHwKKyAg ICAgICAgICAgICAgICAgICAgXy5pc1VuZGVmaW5lZChwYXJzZXIpIHx8Cisg ICAgICAgICAgICAgICAgICAgIHBhcnNlciA9PT0gJycpID8gZmFsc2UgOiB0 cnVlOworICAgICAgICAgIH0KKyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6 ICd0b2tlbnMnLCBsYWJlbDogJ3t7IF8oJ1Rva2VucycpIH19JywgdHlwZTog J2NvbGxlY3Rpb24nLAorICAgICAgICAgIGdyb3VwOiAne3sgXygnVG9rZW5z JykgfX0nLCBjb250cm9sOiBUb2tlbkNvbnRyb2wsCisgICAgICAgICAgbW9k ZWw6IFRva2VuTW9kZWwsIGNvbHVtbnM6IFsndG9rZW4nLCAnZGljdGlvbmFy eSddLAorICAgICAgICAgIHVuaXF1ZUNvbCA6IFsndG9rZW4nXSwgbW9kZTog WydjcmVhdGUnLCdlZGl0J10sCisgICAgICAgICAgY2FuQWRkOiB0cnVlLCBj YW5FZGl0OiBmYWxzZSwgY2FuRGVsZXRlOiB0cnVlCisgICAgICAgICB9XSwK KworICAgICAgICAvKgorICAgICAgICAgKiBUcmlnZ2VycyBjb250cm9sIHNw ZWNpZmljIGVycm9yIG1lc3NhZ2VzIGZvciBuYW1lLAorICAgICAgICAgKiBj b3B5X2NvbmZpZy9wYXJzZXIgYW5kIHNjaGVtYSwgaWYgYW55IG9uZSBvZiB0 aGVtIGlzIG5vdCBzcGVjaWZpZWQKKyAgICAgICAgICogd2hpbGUgY3JlYXRp bmcgbmV3IGZ0cyBjb25maWd1cmF0aW9uCisgICAgICAgICAqLworICAgICAg ICB2YWxpZGF0ZTogZnVuY3Rpb24oa2V5cyl7CisgICAgICAgICAgdmFyIG1z ZzsKKyAgICAgICAgICB2YXIgbmFtZSA9IHRoaXMuZ2V0KCduYW1lJyk7Cisg ICAgICAgICAgdmFyIHBhcnNlciA9IHRoaXMuZ2V0KCdwcnNuYW1lJyk7Cisg ICAgICAgICAgdmFyIGNvcHlfY29uZmlnX29yX3BhcnNlciA9ICEocGFyc2Vy ID09PSAnJyB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIF8uaXNVbmRlZmluZWQocGFyc2VyKSB8fAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8uaXNOdWxsKHBhcnNlcikp ID8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0 aGlzLmdldCgncHJzbmFtZScpIDogdGhpcy5nZXQoJ2NvcHlfY29uZmlnJyk7 CisgICAgICAgICAgdmFyIHNjaGVtYSA9IHRoaXMuZ2V0KCdzY2hlbWEnKTsK KworICAgICAgICAgIC8vIENsZWFyIHRoZSBleGlzdGluZyBlcnJvciBtb2Rl bAorICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC5jbGVhcigpOworICAgICAg ICAgIHRoaXMudHJpZ2dlcignb24tc3RhdHVzLWNsZWFyJyk7CisKKyAgICAg ICAgICAvLyBWYWxpZGF0ZSB0aGUgbmFtZQorICAgICAgICAgIGlmIChfLmlz VW5kZWZpbmVkKG5hbWUpIHx8CisgICAgICAgICAgICAgIF8uaXNOdWxsKG5h bWUpIHx8CisgICAgICAgICAgICAgIFN0cmluZyhuYW1lKS5yZXBsYWNlKC9e XHMrfFxzKyQvZywgJycpID09ICcnKSB7CisgICAgICAgICAgICBtc2cgPSAn e3sgXygnTmFtZSBtdXN0IGJlIHNwZWNpZmllZCEnKSB9fSc7CisgICAgICAg ICAgICB0aGlzLmVycm9yTW9kZWwuc2V0KCduYW1lJywgbXNnKTsKKyAgICAg ICAgICAgIHJldHVybiBtc2c7CisgICAgICAgICAgfQorCisgICAgICAgICAg Ly8gVmFsaWRhdGUgcGFyc2VyIG9yIGNvcHlfY29uZmlnCisgICAgICAgICAg ZWxzZSBpZiAoXy5pc1VuZGVmaW5lZChjb3B5X2NvbmZpZ19vcl9wYXJzZXIp IHx8CisgICAgICAgICAgICAgICAgICAgXy5pc051bGwoY29weV9jb25maWdf b3JfcGFyc2VyKSB8fAorICAgICAgICAgICAgICAgICAgIFN0cmluZyhjb3B5 X2NvbmZpZ19vcl9wYXJzZXIpLnJlcGxhY2UoL15ccyt8XHMrJC9nLCAnJykg PT0gJycpIHsKKyAgICAgICAgICAgIG1zZyA9ICd7eyBfKCdTZWxlY3QgcGFy c2VyIG9yIGNvbmZpZ3VyYXRpb24gdG8gY29weSEnKSB9fSc7CisgICAgICAg ICAgICB0aGlzLmVycm9yTW9kZWwuc2V0KCdwYXJzZXInLCBtc2cpOworICAg ICAgICAgICAgcmV0dXJuIG1zZzsKKyAgICAgICAgICB9CisKKyAgICAgICAg ICAvLyBWYWxpZGF0ZSBzY2hlbWEKKyAgICAgICAgICBlbHNlIGlmIChfLmlz VW5kZWZpbmVkKHNjaGVtYSkgfHwKKyAgICAgICAgICAgICAgICAgICBfLmlz TnVsbChzY2hlbWEpIHx8CisgICAgICAgICAgICAgICAgICAgU3RyaW5nKHNj aGVtYSkucmVwbGFjZSgvXlxzK3xccyskL2csICcnKSA9PSAnJykgeworICAg ICAgICAgICAgbXNnID0gJ3t7IF8oJ1NjaGVtYSBtdXN0IGJlIHNlbGVjdGVk IScpIH19JzsKKyAgICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC5zZXQoJ3Nj aGVtYScsIG1zZyk7CisgICAgICAgICAgICByZXR1cm4gbXNnOworICAgICAg ICAgIH0KKworICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9Cisg ICAgICB9KQorICAgIH0pOworICB9CisKK3JldHVybiBwZ0Jyb3dzZXIuTm9k ZXNbJ2NvbGwtZnRzX2NvbmZpZ3VyYXRpb24nXTsKK30pOwpcIE5vIG5ld2xp bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L2Z0c19jb25maWd1cmF0aW9ucy90ZW1wbGF0ZXMvZnRzX2NvbmZpZ3VyYXRp b24vc3FsLzkuMV9wbHVzL2NvcHlfY29uZmlnLnNxbCBiL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL2Z0c19jb25maWd1cmF0aW9ucy90ZW1wbGF0ZXMvZnRzX2NvbmZpZ3Vy YXRpb24vc3FsLzkuMV9wbHVzL2NvcHlfY29uZmlnLnNxbApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ODRmYzAwCi0tLSAvZGV2L251 bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnRzX2NvbmZpZ3VyYXRpb25zL3Rl bXBsYXRlcy9mdHNfY29uZmlndXJhdGlvbi9zcWwvOS4xX3BsdXMvY29weV9j b25maWcuc3FsCkBAIC0wLDAgKzEsMTUgQEAKK3sjIEZFVENIIGNvcHkgY29u ZmlnIGZvciBGVFMgQ09ORklHVVJBVElPTiAjfQoreyUgaWYgY29weV9jb25m aWcgJX0KK1NFTEVDVAorICAgIGNmZy5vaWQsCisgICAgY2ZnbmFtZSwKKyAg ICBuc3BuYW1lLAorICAgIG4ub2lkIGFzIHNjaGVtYW9pZAorRlJPTQorICAg IHBnX3RzX2NvbmZpZyBjZmcKKyAgICBKT0lOIHBnX25hbWVzcGFjZSBuCisg ICAgT04gbi5vaWQ9Y2ZnbmFtZXNwYWNlCitPUkRFUiBCWQorICAgIG5zcG5h bWUsCisgICAgY2ZnbmFtZQoreyUgZW5kaWYgJX0KXCBObyBuZXdsaW5lIGF0 IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdHNf Y29uZmlndXJhdGlvbnMvdGVtcGxhdGVzL2Z0c19jb25maWd1cmF0aW9uL3Nx bC85LjFfcGx1cy9jcmVhdGUuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnRzX2Nv bmZpZ3VyYXRpb25zL3RlbXBsYXRlcy9mdHNfY29uZmlndXJhdGlvbi9zcWwv OS4xX3BsdXMvY3JlYXRlLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi44OGY0MjhiCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvZnRzX2NvbmZpZ3VyYXRpb25zL3RlbXBsYXRlcy9mdHNfY29u ZmlndXJhdGlvbi9zcWwvOS4xX3BsdXMvY3JlYXRlLnNxbApAQCAtMCwwICsx LDE1IEBACit7IyBDUkVBVEUgRlRTIENPTkZJR1VSQVRJT04gU3RhdGVtZW50 ICN9Cit7JSBpZiBkYXRhIGFuZCBkYXRhLnNjaGVtYSBhbmQgZGF0YS5uYW1l ICV9CitDUkVBVEUgVEVYVCBTRUFSQ0ggQ09ORklHVVJBVElPTiB7eyBjb25u fHF0SWRlbnQoZGF0YS5zY2hlbWEsIGRhdGEubmFtZSkgfX0gKAoreyUgaWYg J2NvcHlfY29uZmlnJyBpbiBkYXRhIGFuZCBkYXRhLmNvcHlfY29uZmlnICE9 ICcnICV9CisgICAgQ09QWT17eyBkYXRhLmNvcHlfY29uZmlnIH19Cit7JSBl bGlmICdwcnNuYW1lJyBpbiBkYXRhIGFuZCBkYXRhLnByc25hbWUgIT0gJycg JX0KKyAgICBQQVJTRVIgPSB7eyBkYXRhLnByc25hbWUgfX0KK3slIGVuZGlm ICV9CispOworeyMgRGVzY3JpcHRpb24gZm9yIEZUU19DT05GSUdVUkFUSU9O ICN9CisKK3slIGlmIGRhdGEuZGVzY3JpcHRpb24gJX0KK0NPTU1FTlQgT04g VEVYVCBTRUFSQ0ggQ09ORklHVVJBVElPTiB7eyBjb25ufHF0SWRlbnQoZGF0 YS5zY2hlbWEsIGRhdGEubmFtZSkgfX0KKyAgICBJUyB7eyBkYXRhLmRlc2Ny aXB0aW9ufHF0TGl0ZXJhbCB9fTsKK3slIGVuZGlmICV9eyUgZW5kaWYgJX0K XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy9mdHNfY29uZmlndXJhdGlvbnMvdGVtcGxhdGVzL2Z0c19j b25maWd1cmF0aW9uL3NxbC85LjFfcGx1cy9kZWxldGUuc3FsIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvZnRzX2NvbmZpZ3VyYXRpb25zL3RlbXBsYXRlcy9mdHNfY29u ZmlndXJhdGlvbi9zcWwvOS4xX3BsdXMvZGVsZXRlLnNxbApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMDUyZjYxCi0tLSAvZGV2L251 bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnRzX2NvbmZpZ3VyYXRpb25zL3Rl bXBsYXRlcy9mdHNfY29uZmlndXJhdGlvbi9zcWwvOS4xX3BsdXMvZGVsZXRl LnNxbApAQCAtMCwwICsxLDQgQEAKK3sjIERST1AgRlRTIENPTkZJR1VSQVRJ T04gU3RhdGVtZW50ICN9Cit7JSBpZiBzY2hlbWEgYW5kIG5hbWUgJX0KK0RS T1AgVEVYVCBTRUFSQ0ggQ09ORklHVVJBVElPTiB7e2Nvbm58cXRJZGVudChz Y2hlbWEpfX0ue3tjb25ufHF0SWRlbnQobmFtZSl9fSB7JSBpZiBjYXNjYWRl ICV9Q0FTQ0FERXslZW5kaWYlfTsKK3slIGVuZGlmICV9ClwgTm8gbmV3bGlu ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv ZnRzX2NvbmZpZ3VyYXRpb25zL3RlbXBsYXRlcy9mdHNfY29uZmlndXJhdGlv bi9zcWwvOS4xX3BsdXMvZGljdGlvbmFyaWVzLnNxbCBiL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL2Z0c19jb25maWd1cmF0aW9ucy90ZW1wbGF0ZXMvZnRzX2NvbmZpZ3Vy YXRpb24vc3FsLzkuMV9wbHVzL2RpY3Rpb25hcmllcy5zcWwKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjBlN2IwZgotLS0gL2Rldi9u dWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z0c19jb25maWd1cmF0aW9ucy90 ZW1wbGF0ZXMvZnRzX2NvbmZpZ3VyYXRpb24vc3FsLzkuMV9wbHVzL2RpY3Rp b25hcmllcy5zcWwKQEAgLTAsMCArMSw3IEBACit7IyBGRVRDSCBESUNUSU9O QVJJRVMgc3RhdGVtZW50ICN9CitTRUxFQ1QKKyAgICBkaWN0bmFtZQorRlJP TQorICAgIHBnX3RzX2RpY3QKK09SREVSIEJZCisgICAgZGljdG5hbWUKXCBO byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy9mdHNfY29uZmlndXJhdGlvbnMvdGVtcGxhdGVzL2Z0c19jb25m aWd1cmF0aW9uL3NxbC85LjFfcGx1cy9nZXRfbmFtZS5zcWwgYi93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy9mdHNfY29uZmlndXJhdGlvbnMvdGVtcGxhdGVzL2Z0c19jb25m aWd1cmF0aW9uL3NxbC85LjFfcGx1cy9nZXRfbmFtZS5zcWwKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzIzOGI4YwotLS0gL2Rldi9u dWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z0c19jb25maWd1cmF0aW9ucy90 ZW1wbGF0ZXMvZnRzX2NvbmZpZ3VyYXRpb24vc3FsLzkuMV9wbHVzL2dldF9u YW1lLnNxbApAQCAtMCwwICsxLDE3IEBACit7IyBHRVQgRlRTIENPTkZJR1VS QVRJT04gbmFtZSAjfQoreyUgaWYgY2ZnaWQgJX0KK1NFTEVDVAorICAgIGNm Zy5jZmduYW1lIGFzIG5hbWUsCisgICAgKAorICAgIFNFTEVDVAorICAgICAg ICBuc3BuYW1lCisgICAgRlJPTQorICAgICAgICBwZ19uYW1lc3BhY2UKKyAg ICBXSEVSRQorICAgICAgICBvaWQgPSBjZmcuY2ZnbmFtZXNwYWNlCisgICAg KSBhcyBzY2hlbWEKK0ZST00KKyAgICBwZ190c19jb25maWcgY2ZnCitXSEVS RQorICAgIGNmZy5vaWQgPSB7e2NmZ2lkfX06Ok9JRDsKK3slIGVuZGlmICV9 CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdHNfY29uZmlndXJhdGlv bnMvdGVtcGxhdGVzL2Z0c19jb25maWd1cmF0aW9uL3NxbC85LjFfcGx1cy9u b2Rlcy5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdHNfY29uZmlndXJhdGlvbnMv dGVtcGxhdGVzL2Z0c19jb25maWd1cmF0aW9uL3NxbC85LjFfcGx1cy9ub2Rl cy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWM1 MGFjYgotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z0c19j b25maWd1cmF0aW9ucy90ZW1wbGF0ZXMvZnRzX2NvbmZpZ3VyYXRpb24vc3Fs LzkuMV9wbHVzL25vZGVzLnNxbApAQCAtMCwwICsxLDEzIEBACit7IyBGRVRD SCBGVFMgQ09ORklHVVJBVElPTiBOQU1FIHN0YXRlbWVudCAjfQorU0VMRUNU CisgICAgb2lkLCBjZmduYW1lIGFzIG5hbWUKK0ZST00KKyAgICBwZ190c19j b25maWcgY2ZnCitXSEVSRQoreyUgaWYgc2NpZCAlfQorICAgIGNmZy5jZmdu YW1lc3BhY2UgPSB7e3NjaWR9fTo6T0lECit7JSBlbGlmIGNmZ2lkICV9Cisg ICAgY2ZnLm9pZCA9IHt7Y2ZnaWR9fTo6T0lECit7JSBlbmRpZiAlfQorCitP UkRFUiBCWSBuYW1lClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm IC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnRzX2NvbmZpZ3VyYXRpb25zL3Rl bXBsYXRlcy9mdHNfY29uZmlndXJhdGlvbi9zcWwvOS4xX3BsdXMvcGFyc2Vy LnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z0c19jb25maWd1cmF0aW9ucy90ZW1w bGF0ZXMvZnRzX2NvbmZpZ3VyYXRpb24vc3FsLzkuMV9wbHVzL3BhcnNlci5z cWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2JjYTlj OQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z0c19jb25m aWd1cmF0aW9ucy90ZW1wbGF0ZXMvZnRzX2NvbmZpZ3VyYXRpb24vc3FsLzku MV9wbHVzL3BhcnNlci5zcWwKQEAgLTAsMCArMSwyNCBAQAoreyMgUEFSU0VS IG5hbWUgZnJvbSBGVFMgQ09ORklHVVJBVElPTiBPSUQgI30KK3slIGlmIGNm Z2lkICV9CitTRUxFQ1QKKyAgICBjZmdwYXJzZXIKK0ZST00KKyAgICBwZ190 c19jb25maWcKK3doZXJlCisgICAgb2lkID0ge3tjZmdpZH19OjpPSUQKK3sl IGVuZGlmICV9CisKKworeyMgUEFSU0VSIGxpc3QgI30KK3slIGlmIHBhcnNl ciAlfQorU0VMRUNUCisgICAgcHJzbmFtZSwKKyAgICBuc3BuYW1lLAorICAg IG4ub2lkIGFzIHNjaGVtYW9pZAorRlJPTQorICAgIHBnX3RzX3BhcnNlcgor ICAgIEpPSU4gcGdfbmFtZXNwYWNlIG4KKyAgICBPTiBuLm9pZD1wcnNuYW1l c3BhY2UKK09SREVSIEJZCisgICAgcHJzbmFtZTsKK3slIGVuZGlmICV9CmRp ZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdHNfY29uZmlndXJhdGlvbnMv dGVtcGxhdGVzL2Z0c19jb25maWd1cmF0aW9uL3NxbC85LjFfcGx1cy9wcm9w ZXJ0aWVzLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z0c19jb25maWd1cmF0aW9u cy90ZW1wbGF0ZXMvZnRzX2NvbmZpZ3VyYXRpb24vc3FsLzkuMV9wbHVzL3By b3BlcnRpZXMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLmEyZjM3NmUKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy9mdHNfY29uZmlndXJhdGlvbnMvdGVtcGxhdGVzL2Z0c19jb25maWd1cmF0 aW9uL3NxbC85LjFfcGx1cy9wcm9wZXJ0aWVzLnNxbApAQCAtMCwwICsxLDI1 IEBACit7IyBGRVRDSCBwcm9wZXJ0aWVzIGZvciBGVFMgQ09ORklHVVJBVElP TiAjfQorU0VMRUNUCisgICAgY2ZnLm9pZCwKKyAgICBjZmcuY2ZnbmFtZSBh cyBuYW1lLAorICAgIHBnX2dldF91c2VyYnlpZChjZmcuY2Znb3duZXIpIGFz IG93bmVyLAorICAgIGNmZy5jZmdwYXJzZXIgYXMgcGFyc2VyLAorICAgIGNm Zy5jZmduYW1lc3BhY2UgYXMgc2NoZW1hLAorICAgIHBhcnNlci5wcnNuYW1l IGFzIHByc25hbWUsCisgICAgZGVzY3JpcHRpb24KK0ZST00KKyAgICBwZ190 c19jb25maWcgY2ZnCisgICAgTEVGVCBPVVRFUiBKT0lOIHBnX3RzX3BhcnNl ciBwYXJzZXIKKyAgICBPTiBwYXJzZXIub2lkPWNmZy5jZmdwYXJzZXIKKyAg ICBMRUZUIE9VVEVSIEpPSU4gcGdfZGVzY3JpcHRpb24gZGVzCisgICAgT04g KGRlcy5vYmpvaWQ9Y2ZnLm9pZCBBTkQgZGVzLmNsYXNzb2lkPSdwZ190c19j b25maWcnOjpyZWdjbGFzcykKK1dIRVJFCit7JSBpZiBzY2lkICV9CisgICAg Y2ZnLmNmZ25hbWVzcGFjZSA9IHt7c2NpZH19OjpPSUQKK3slIGVsaWYgbmFt ZSAlfQorICAgIGNmZy5jZmduYW1lID0ge3tuYW1lfHF0TGl0ZXJhbH19Cit7 JSBlbmRpZiAlfQoreyUgaWYgY2ZnaWQgJX0KKyAgICBBTkQgY2ZnLm9pZCA9 IHt7Y2ZnaWR9fTo6T0lECit7JSBlbmRpZiAlfQorT1JERVIgQlkgY2ZnLmNm Z25hbWUKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z0c19jb25maWd1 cmF0aW9ucy90ZW1wbGF0ZXMvZnRzX2NvbmZpZ3VyYXRpb24vc3FsLzkuMV9w bHVzL3NjaGVtYS5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdHNfY29uZmlndXJh dGlvbnMvdGVtcGxhdGVzL2Z0c19jb25maWd1cmF0aW9uL3NxbC85LjFfcGx1 cy9zY2hlbWEuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLmI1NmNlYjgKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy9mdHNfY29uZmlndXJhdGlvbnMvdGVtcGxhdGVzL2Z0c19jb25maWd1cmF0 aW9uL3NxbC85LjFfcGx1cy9zY2hlbWEuc3FsCkBAIC0wLDAgKzEsMTkgQEAK K3sjIEZFVENIIHN0YXRlbWVudCBmb3IgU0NIRU1BIG5hbWUgI30KK3slIGlm IGRhdGEuc2NoZW1hICV9CitTRUxFQ1QKKyAgICBuc3BuYW1lCitGUk9NCisg ICAgcGdfbmFtZXNwYWNlCitXSEVSRQorICAgIG9pZCA9IHt7ZGF0YS5zY2hl bWF9fTo6T0lECisKK3slIGVsaWYgZGF0YS5pZCAlfQorU0VMRUNUCisgICAg bnNwbmFtZQorRlJPTQorICAgIHBnX25hbWVzcGFjZSBuc3AKKyAgICBMRUZU IEpPSU4gcGdfdHNfY29uZmlnIGNmZworICAgIE9OIGNmZy5jZmduYW1lc3Bh Y2UgPSBuc3Aub2lkCitXSEVSRQorICAgIGNmZy5vaWQgPSB7e2RhdGEuaWR9 fTo6T0lECit7JSBlbmRpZiAlfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp bGUKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z0c19jb25maWd1cmF0 aW9ucy90ZW1wbGF0ZXMvZnRzX2NvbmZpZ3VyYXRpb24vc3FsLzkuMV9wbHVz L3NxbC5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdHNfY29uZmlndXJhdGlvbnMv dGVtcGxhdGVzL2Z0c19jb25maWd1cmF0aW9uL3NxbC85LjFfcGx1cy9zcWwu c3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUzMTMw N2QKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdHNfY29u ZmlndXJhdGlvbnMvdGVtcGxhdGVzL2Z0c19jb25maWd1cmF0aW9uL3NxbC85 LjFfcGx1cy9zcWwuc3FsCkBAIC0wLDAgKzEsNzUgQEAKK3sjIFJFVkVSU0VE IEVOR0lORUVSRUQgU1FMIEZPUiBGVFMgQ09ORklHVVJBVElPTiAjfQoreyUg aWYgY2ZnaWQgYW5kIHNjaWQgJX0KK1NFTEVDVAorICAgIGFycmF5X3RvX3N0 cmluZyhhcnJheV9hZ2coc3FsKSwgRSdcblxuJykgYXMgc3FsCitGUk9NCisg ICAgKAorICAgIFNFTEVDVAorICAgICAgICBFJy0tIFRleHQgU2VhcmNoIENP TkZJR1VSQVRJT046ICcgfHwgcXVvdGVfaWRlbnQobnNwbmFtZSkgfHwgRScu JworICAgICAgICB8fCBxdW90ZV9pZGVudChjZmcuY2ZnbmFtZSkgfHwKKyAg ICAgICAgRSdcblxuLS0gRFJPUCBURVhUIFNFQVJDSCBDT05GSUdVUkFUSU9O ICcgfHwgcXVvdGVfaWRlbnQobnNwbmFtZSkgfHwKKyAgICAgICAgRScuJyB8 fCBxdW90ZV9pZGVudChjZmcuY2ZnbmFtZSkgfHwKKyAgICAgICAgRSdcblxu Q1JFQVRFIFRFWFQgU0VBUkNIIENPTkZJR1VSQVRJT04gJyB8fCBxdW90ZV9p ZGVudChuc3BuYW1lKSB8fAorICAgICAgICBFJy4nIHx8ICBxdW90ZV9pZGVu dChjZmcuY2ZnbmFtZSkgfHwgRScgKFxuJyB8fAorICAgICAgICBFJ1x0UEFS U0VSID0gJyB8fCBwYXJzZXJuYW1lIHx8CisgICAgICAgIEUnXG4pOycgfHwK KyAgICAgICAgQ0FTRQorICAgICAgICAgICAgV0hFTiBkZXNjcmlwdGlvbiBJ UyBOT1QgTlVMTCBUSEVOCisgICAgICAgICAgICAgICAgRSdcblxuQ09NTUVO VCBPTiBURVhUIFNFQVJDSCBDT05GSUdVUkFUSU9OICcgfHwKKyAgICAgICAg ICAgICAgICBxdW90ZV9pZGVudChuc3BuYW1lKSB8fCBFJy4nIHx8IHF1b3Rl X2lkZW50KGNmZy5jZmduYW1lKSB8fAorICAgICAgICAgICAgICAgIEUnIElT ICcgfHwgcGdfY2F0YWxvZy5xdW90ZV9saXRlcmFsKGRlc2NyaXB0aW9uKSB8 fCBFJzsnCisgICAgICAgICAgICBFTFNFICcnCisgICAgICAgIEVORCB8fAor ICAgICAgICAoCisgICAgICAgIFNFTEVDVCBhcnJheSgKKwkgICAgICAgIFNF TEVDVAorCSAgICAgICAgICAgICdBTFRFUiBURVhUIFNFQVJDSCBDT05GSUdV UkFUSU9OICcgfHwgcXVvdGVfaWRlbnQobnNwbmFtZSkgfHwKKwkgICAgICAg ICAgICBFJy4nIHx8IHF1b3RlX2lkZW50KGNmZy5jZmduYW1lKSB8fCAnIEFE RCBNQVBQSU5HIEZPUiAnIHx8CisJICAgICAgICAgICAgdC5hbGlhcyAgfHwg JyBXSVRIICcgfHwKKwkgICAgICAgICAgICBhcnJheV90b19zdHJpbmcoYXJy YXlfYWdnKGRpY3QuZGljdG5hbWUpLCAnLCAnKSB8fCAnOycKKyAgICAgICAg ICAgIEZST00KKyAgICAgICAgICAgICAgICBwZ190c19jb25maWdfbWFwIG1h cAorICAgICAgICAgICAgICAgIExFRlQgSk9JTiAoCisgICAgICAgICAgICAg ICAgICAgICAgICAgIFNFTEVDVAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdG9raWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBh bGlhcworICAgICAgICAgICAgICAgICAgICAgICAgICBGUk9NCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBwZ19jYXRhbG9nLnRzX3Rva2VuX3R5 cGUoY2ZnLmNmZ3BhcnNlcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAg KSB0IE9OICh0LnRva2lkID0gbWFwLm1hcHRva2VudHlwZSkKKyAgICAgICAg ICAgICAgICBMRUZUIE9VVEVSIEpPSU4gcGdfdHNfZGljdCBkaWN0IE9OICht YXAubWFwZGljdCA9IGRpY3Qub2lkKQorICAgICAgICAgICAgV0hFUkUKKyAg ICAgICAgICAgICAgICBtYXAubWFwY2ZnID0gY2ZnLm9pZAorICAgICAgICAg ICAgR1JPVVAgQlkgdC5hbGlhcworICAgICAgICAgICAgT1JERVIgQlkgdC5h bGlhcykKKyAgICAgICAgKSBhcyBzcWwKKyAgICBGUk9NCisgICAgICAgIHBn X3RzX2NvbmZpZyBjZmcKKyAgICBMRUZUIEpPSU4gKAorICAgICAgICBTRUxF Q1QKKyAgICAgICAgICAgIGRlcy5kZXNjcmlwdGlvbiBhcyBkZXNjcmlwdGlv biwKKyAgICAgICAgICAgIGRlcy5vYmpvaWQgYXMgZGVzY29pZAorICAgICAg ICBGUk9NCisgICAgICAgICAgICBwZ19kZXNjcmlwdGlvbiBkZXMKKyAgICAg ICAgV0hFUkUKKyAgICAgICAgICAgIGRlcy5vYmpvaWQ9e3tjZmdpZH19OjpP SUQgQU5EIGRlcy5jbGFzc29pZD0ncGdfdHNfY29uZmlnJzo6cmVnY2xhc3MK KyAgICApIGEgT04gKGEuZGVzY29pZCA9IGNmZy5vaWQpCisgICAgTEVGVCBK T0lOICgKKyAgICAgICAgU0VMRUNUCisgICAgICAgICAgICBuc3BuYW1lLAor ICAgICAgICAgICAgbnNwLm9pZCBhcyBub2lkCisgICAgICAgIEZST00KKyAg ICAgICAgICAgIHBnX25hbWVzcGFjZSBuc3AKKyAgICAgICAgV0hFUkUKKyAg ICAgICAgICAgIG9pZCA9IHt7c2NpZH19OjpPSUQKKyAgICApIGIgT04gKGIu bm9pZCA9IGNmZy5jZmduYW1lc3BhY2UpCisgICAgTEVGVCBKT0lOKAorICAg ICAgICBTRUxFQ1QKKyAgICAgICAgICAgIHBycy5wcnNuYW1lIGFzIHBhcnNl cm5hbWUsCisgICAgICAgICAgICBwcnMub2lkIGFzIG9pZAorICAgICAgICBG Uk9NCisgICAgICAgICAgICBwZ190c19wYXJzZXIgcHJzCisgICAgKWMgT04g KGMub2lkID0gY2ZnLmNmZ3BhcnNlcikKKyAgICBXSEVSRQorICAgICAgIGNm Zy5vaWQ9e3tjZmdpZH19OjpPSUQKKyAgICApIGU7Cit7JSBlbmRpZiAlfQpc IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL2Z0c19jb25maWd1cmF0aW9ucy90ZW1wbGF0ZXMvZnRzX2Nv bmZpZ3VyYXRpb24vc3FsLzkuMV9wbHVzL3Rva2VuRGljdExpc3Quc3FsIGIv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvZnRzX2NvbmZpZ3VyYXRpb25zL3RlbXBsYXRlcy9m dHNfY29uZmlndXJhdGlvbi9zcWwvOS4xX3BsdXMvdG9rZW5EaWN0TGlzdC5z cWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZThhMmQ1 YgotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z0c19jb25m aWd1cmF0aW9ucy90ZW1wbGF0ZXMvZnRzX2NvbmZpZ3VyYXRpb24vc3FsLzku MV9wbHVzL3Rva2VuRGljdExpc3Quc3FsCkBAIC0wLDAgKzEsMjMgQEAKK3sj IEZldGNoIHRva2VuL2RpY3Rpb25hcnkgbGlzdCBmb3IgRlRTIENPTkZJR1VS QVRJT04gI30KK3slIGlmIGNmZ2lkICV9CitTRUxFQ1QKKyAgICAoCisgICAg U0VMRUNUCisgICAgICAgIHQuYWxpYXMKKyAgICBGUk9NCisgICAgICAgIHBn X2NhdGFsb2cudHNfdG9rZW5fdHlwZShjZmdwYXJzZXIpIEFTIHQKKyAgICBX SEVSRQorICAgICAgICB0LnRva2lkID0gbWFwdG9rZW50eXBlCisgICAgKSBB UyB0b2tlbiwKKyAgICBhcnJheV9hZ2coZGljdG5hbWUpIEFTIGRpY3RuYW1l CitGUk9NCisgICAgcGdfdHNfY29uZmlnX21hcAorICAgIExFRlQgT1VURVIg Sk9JTiBwZ190c19jb25maWcgT04gbWFwY2ZnID0gcGdfdHNfY29uZmlnLm9p ZAorICAgIExFRlQgT1VURVIgSk9JTiBwZ190c19kaWN0IE9OIG1hcGRpY3Qg PSBwZ190c19kaWN0Lm9pZAorV0hFUkUKKyAgICBtYXBjZmc9e3tjZmdpZH19 OjpPSUQKK0dST1VQIEJZCisgICAgdG9rZW4KK09SREVSIEJZCisgICAgMQor eyUgZW5kaWYgJX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg LS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdHNfY29uZmlndXJhdGlvbnMvdGVt cGxhdGVzL2Z0c19jb25maWd1cmF0aW9uL3NxbC85LjFfcGx1cy90b2tlbnMu c3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvZnRzX2NvbmZpZ3VyYXRpb25zL3RlbXBs YXRlcy9mdHNfY29uZmlndXJhdGlvbi9zcWwvOS4xX3BsdXMvdG9rZW5zLnNx bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZTBjNWVi Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnRzX2NvbmZp Z3VyYXRpb25zL3RlbXBsYXRlcy9mdHNfY29uZmlndXJhdGlvbi9zcWwvOS4x X3BsdXMvdG9rZW5zLnNxbApAQCAtMCwwICsxLDEwIEBACit7IyBUb2tlbnMg Zm9yIEZUUyBDT05GSUdVUkFUSU9OIG5vZGUgI30KKworeyUgaWYgcGFyc2Vy b2lkICV9CitTRUxFQ1QKKyAgICBhbGlhcworRlJPTQorICAgIHRzX3Rva2Vu X3R5cGUoe3twYXJzZXJvaWR9fTo6T0lEKQorT1JERVIgQlkKKyAgICBhbGlh cworeyUgZW5kaWYgJX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp ZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdHNfY29uZmlndXJhdGlvbnMv dGVtcGxhdGVzL2Z0c19jb25maWd1cmF0aW9uL3NxbC85LjFfcGx1cy91cGRh dGUuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnRzX2NvbmZpZ3VyYXRpb25zL3Rl bXBsYXRlcy9mdHNfY29uZmlndXJhdGlvbi9zcWwvOS4xX3BsdXMvdXBkYXRl LnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NzU5 OWY4Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnRzX2Nv bmZpZ3VyYXRpb25zL3RlbXBsYXRlcy9mdHNfY29uZmlndXJhdGlvbi9zcWwv OS4xX3BsdXMvdXBkYXRlLnNxbApAQCAtMCwwICsxLDUxIEBACit7IyBVUERB VEUgc3RhdGVtZW50IGZvciBGVFMgQ09ORklHVVJBVElPTiAjfQoreyUgaWYg ZGF0YSAlfQoreyUgc2V0IG5hbWUgPSBvX2RhdGEubmFtZSAlfQoreyUgc2V0 IHNjaGVtYSA9IG9fZGF0YS5zY2hlbWEgJX0KK3slIGlmIGRhdGEubmFtZSBh bmQgZGF0YS5uYW1lICE9IG9fZGF0YS5uYW1lICV9Cit7JSBzZXQgbmFtZSA9 IGRhdGEubmFtZSAlfQorQUxURVIgVEVYVCBTRUFSQ0ggQ09ORklHVVJBVElP TiB7e2Nvbm58cXRJZGVudChvX2RhdGEuc2NoZW1hKX19Lnt7Y29ubnxxdElk ZW50KG9fZGF0YS5uYW1lKX19CisgICAgUkVOQU1FIFRPIHt7Y29ubnxxdElk ZW50KGRhdGEubmFtZSl9fTsKKworeyUgZW5kaWYgJX0KK3slIGlmICd0b2tl bnMnIGluIGRhdGEgJX0KK3slIGlmJ2NoYW5nZWQnIGluIGRhdGEudG9rZW5z ICV9Cit7JSBmb3IgdG9rIGluIGRhdGEudG9rZW5zLmNoYW5nZWQgJX0KK0FM VEVSIFRFWFQgU0VBUkNIIENPTkZJR1VSQVRJT04ge3tjb25ufHF0SWRlbnQo b19kYXRhLnNjaGVtYSl9fS57e2Nvbm58cXRJZGVudChuYW1lKX19CisgICAg QUxURVIgTUFQUElORyBGT1Ige3t0b2sudG9rZW59fQorICAgIFdJVEggeyUg Zm9yIGRpY3QgaW4gdG9rLmRpY3RuYW1lICV9e3tkaWN0fX17JSBpZiBub3Qg bG9vcC5sYXN0ICV9LCB7JSBlbmRpZiAlfXslIGVuZGZvciAlfTsKKworeyUg ZW5kZm9yICV9Cit7JSBlbmRpZiAlfQoreyUgaWYnYWRkZWQnIGluIGRhdGEu dG9rZW5zICV9Cit7JSBmb3IgdG9rIGluIGRhdGEudG9rZW5zLmFkZGVkICV9 CitBTFRFUiBURVhUIFNFQVJDSCBDT05GSUdVUkFUSU9OIHt7Y29ubnxxdElk ZW50KG9fZGF0YS5zY2hlbWEpfX0ue3tjb25ufHF0SWRlbnQobmFtZSl9fQor ICAgIEFERCBNQVBQSU5HIEZPUiB7e3Rvay50b2tlbn19CisgICAgV0lUSCB7 JSBmb3IgZGljdCBpbiB0b2suZGljdG5hbWUgJX17e2RpY3R9fXslIGlmIG5v dCBsb29wLmxhc3QgJX0sIHslIGVuZGlmICV9eyUgZW5kZm9yICV9OworCit7 JSBlbmRmb3IgJX0KK3slIGVuZGlmICV9Cit7JSBpZidkZWxldGVkJyBpbiBk YXRhLnRva2VucyAlfQoreyUgZm9yIHRvayBpbiBkYXRhLnRva2Vucy5kZWxl dGVkICV9CitBTFRFUiBURVhUIFNFQVJDSCBDT05GSUdVUkFUSU9OIHt7Y29u bnxxdElkZW50KG9fZGF0YS5zY2hlbWEpfX0ue3tjb25ufHF0SWRlbnQobmFt ZSl9fQorICAgIERST1AgTUFQUElORyBGT1Ige3t0b2sudG9rZW59fTsKKwor eyUgZW5kZm9yICV9Cit7JSBlbmRpZiAlfQoreyUgZW5kaWYgJX0KK3slIGlm ICdvd25lcicgaW4gZGF0YSBhbmQgZGF0YS5vd25lciAhPSBvX2RhdGEub3du ZXIgJX0KK0FMVEVSIFRFWFQgU0VBUkNIIENPTkZJR1VSQVRJT04ge3tjb25u fHF0SWRlbnQob19kYXRhLnNjaGVtYSl9fS57e2Nvbm58cXRJZGVudChuYW1l KX19CisgICAgT1dORVIgVE8ge3tkYXRhLm93bmVyfX07CisKK3slIGVuZGlm ICV9Cit7JSBpZiAnc2NoZW1hJyBpbiBkYXRhIGFuZCBkYXRhLnNjaGVtYSAh PSBvX2RhdGEuc2NoZW1hICV9Cit7JSBzZXQgc2NoZW1hID0gZGF0YS5zY2hl bWElfQorQUxURVIgVEVYVCBTRUFSQ0ggQ09ORklHVVJBVElPTiB7e2Nvbm58 cXRJZGVudChvX2RhdGEuc2NoZW1hKX19Lnt7Y29ubnxxdElkZW50KG5hbWUp fX0KKyAgICBTRVQgU0NIRU1BIHt7ZGF0YS5zY2hlbWF9fTsKKworeyUgZW5k aWYgJX0KK3slIGlmICdkZXNjcmlwdGlvbicgaW4gZGF0YSBhbmQgZGF0YS5k ZXNjcmlwdGlvbiAhPSBvX2RhdGEuZGVzY3JpcHRpb24gJX0KK0NPTU1FTlQg T04gVEVYVCBTRUFSQ0ggQ09ORklHVVJBVElPTiB7e2Nvbm58cXRJZGVudChz Y2hlbWEpfX0ue3tjb25ufHF0SWRlbnQobmFtZSl9fQorICAgIElTIHt7IGRh dGEuZGVzY3JpcHRpb258cXRMaXRlcmFsIH19OworeyUgZW5kaWYgJX0KK3sl IGVuZGlmICV9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t Z2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zdGF0aWMvanMvbm9kZS51aS5q cyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc3RhdGljL2pzL25vZGUudWkuanMK aW5kZXggOGJmNzFkYy4uN2U4NDkzNSAxMDA2NDQKLS0tIGEvd2ViL3BnYWRt aW4vYnJvd3Nlci9zdGF0aWMvanMvbm9kZS51aS5qcworKysgYi93ZWIvcGdh ZG1pbi9icm93c2VyL3N0YXRpYy9qcy9ub2RlLnVpLmpzCkBAIC01MDQsNiAr NTA0LDM1IEBAIGZ1bmN0aW9uKCQsIF8sIHBnQWRtaW4sIEJhY2tib25lLCBC YWNrZm9ybSwgQWxlcnRpZnksIE5vZGUpIHsKICAgICB9KQogICB9KTsKIAor ICAgIC8vIEV4dGVuZCB0aGUgYnJvd3NlcidzIG5vZGUgbW9kZWwgY2xhc3Mg dG8gY3JlYXRlIGEgb3B0aW9uL3ZhbHVlIHBhaXIKKyAgdmFyIE11bHRpU2Vs ZWN0QWpheENlbGwgPSBCYWNrZ3JpZC5FeHRlbnNpb24uTXVsdGlTZWxlY3RB amF4Q2VsbCA9IEJhY2tncmlkLkV4dGVuc2lvbi5Ob2RlQWpheE9wdGlvbnND ZWxsLmV4dGVuZCh7CisgICAgZGVmYXVsdHM6IF8uZXh0ZW5kKHt9LCBOb2Rl QWpheE9wdGlvbnNDZWxsLnByb3RvdHlwZS5kZWZhdWx0cywgeworICAgICAg dHJhbnNmb3JtOiB1bmRlZmluZWQsCisgICAgICB1cmxfd2l0aF9pZDogZmFs c2UsCisgICAgICBzZWxlY3QyOiB7CisgICAgICAgIGFsbG93Q2xlYXI6IHRy dWUsCisgICAgICAgIHBsYWNlaG9sZGVyOiAnU2VsZWN0IGZyb20gdGhlIGxp c3QnLAorICAgICAgICB3aWR0aDogJ3N0eWxlJywKKyAgICAgICAgbXVsdGlw bGU6IHRydWUKKyAgICAgIH0sCisgICAgICBvcHQ6IHsKKyAgICAgICAgbGFi ZWw6IG51bGwsCisgICAgICAgIHZhbHVlOiBudWxsLAorICAgICAgICBpbWFn ZTogbnVsbCwKKyAgICAgICAgc2VsZWN0ZWQ6IGZhbHNlCisgICAgICAgfQor ICAgIH0pLAorICAgIGdldFZhbHVlRnJvbURPTTogZnVuY3Rpb24oKSB7Cisg ICAgICB2YXIgcmVzID0gW107CisKKyAgICAgIHRoaXMuJGVsLmZpbmQoInNl bGVjdCIpLmZpbmQoJzpzZWxlY3RlZCcpLmVhY2goZnVuY3Rpb24oKSB7Cisg ICAgICAgIHJlcy5wdXNoKCQodGhpcykuYXR0cigndmFsdWUnKSk7CisgICAg ICB9KTsKKworICAgICAgcmV0dXJuIHJlczsKKyAgICB9LAorICB9KTsKKwog ICAvKgogICAgKiBDb250cm9sIHRvIHNlbGVjdCBtdWx0aXBsZSBjb2x1bW5z LgogICAgKi8K --001a11379e0461d42d0533188fd8 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 --001a11379e0461d42d0533188fd8--