Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1anMnX-0003BB-4A for pgadmin-hackers@arkaria.postgresql.org; Tue, 05 Apr 2016 08:57:19 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84_2) (envelope-from ) id 1anMnW-0002zF-Mt for pgadmin-hackers@arkaria.postgresql.org; Tue, 05 Apr 2016 08:57:18 +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 1anMnS-0002z7-6e for pgadmin-hackers@postgresql.org; Tue, 05 Apr 2016 08:57:14 +0000 Received: from mail-lf0-x235.google.com ([2a00:1450:4010:c07::235]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.84_2) (envelope-from ) id 1anMnM-0003ub-1o for pgadmin-hackers@postgresql.org; Tue, 05 Apr 2016 08:57:13 +0000 Received: by mail-lf0-x235.google.com with SMTP id j11so5334458lfb.1 for ; Tue, 05 Apr 2016 01:57:07 -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; bh=n2CsIZlHowbWhW56FX57AQ2Ttp44QyTOhPqODA0bGnY=; b=DW5Kuplm4l/U9fZe4gRBDsWQAfDaWVALwWAKkmKu2RXlB8psBMpFu8J1WGkZblYKwR eFZ3fgylTNMr8dgcdXQ2/4CHAgXPsiuOu+JAqWXDkdg7TnYpZUStzTk/3RBC5CdUo1OS g+2uwkNi64O+zPv+GOQLWd6ExI1KH0n7Wdn+y70VfYP34KoX7oxBPUTWW6ZY2m/ovdAQ BkgbfU7vJjiIbWUufng8tTbWPdgwGqyRstOjIN6owDBNUajZzSeNRkRoBqG2L+6SxENB sFSGL3l0PMT37VdZbvhYW92Q/wD+it7O6C5JPebNV/yplnCvsevr4WNjXMZLXry/I/Fl MHPg== 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; bh=n2CsIZlHowbWhW56FX57AQ2Ttp44QyTOhPqODA0bGnY=; b=QQpOXfU2U+RRlEtpKVDlEJH3RWS0fYoGq6lOgYJ8ga6kuT5U8YYWp/lnEFw9yRckxt PSuRzgJBm/8ZgSbBJ/NvDbviS1l9eJCotK0Mxb+AHSOSo950J4IHLrNGIjMj0ibM9SzK a6cjCTcd1NyiPt/SueuYGty/DlQFNn3uZbr1V9czNiMBPHz7NgJDXzjtTusuqK49YAeN BX5nMVqvlemReZjAGtGOB0Gyn5sJwUjPacMukIU/60HlJUKlw7Te3tAXaCmdmDhkBmmE rpkSettVz6ox6GeKVvFKsOh0rtOB2v7jd1oWEXK0BrHGxk5J+ISszcm6tWvBD8//YBzn oScA== X-Gm-Message-State: AD7BkJJaYCtnO86xzK6vzDimAdHZ1SvIKkkP7y1HBnmGuCvKeVzROTNBO1AjZQ6eyZbCi7qe3t8BY1I6OiMo2RZH MIME-Version: 1.0 X-Received: by 10.25.29.211 with SMTP id d202mr10649742lfd.92.1459846626086; Tue, 05 Apr 2016 01:57:06 -0700 (PDT) Received: by 10.25.144.81 with HTTP; Tue, 5 Apr 2016 01:57:05 -0700 (PDT) In-Reply-To: References: Date: Tue, 5 Apr 2016 14:27:05 +0530 Message-ID: Subject: Re: [pgAdmin4] [Patch]: Foreign Table Module From: Khushboo Vashi To: pgadmin-hackers Content-Type: multipart/mixed; boundary=001a11401c4c93431a052fb9079c 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 --001a11401c4c93431a052fb9079c Content-Type: multipart/alternative; boundary=001a11401c4c934315052fb9079a --001a11401c4c934315052fb9079a Content-Type: text/plain; charset=UTF-8 Hi, Please find updated patch for the Foreign Table Module. This patch is dependent on 1. Backgrid Depscell Patch, (submitted by me) 2. NodeAjaxOptionsCell Transform change patch, on which Ashesh and Murtuza are working Thanks, Khushboo On Wed, Feb 24, 2016 at 2:57 PM, Khushboo Vashi < khushboo.vashi@enterprisedb.com> wrote: > Hi, > > I have updated the Foreign Table module as below: > > - Used 'NodeByListControl' to get schemas, in the foreign_table.js file as > suggested by Ashesh to avoid code redundancy. > > - Applied *'Security Label Macro'* Patch (Implemented by Harshal). > To test the Foreign Table patch, 'Security Label Macro' patch must be > applied first as that is not committed yet. > > Please find attached Foreign Table Patch. > > Thanks, > Khushboo > > On Tue, Feb 23, 2016 at 6:53 PM, Khushboo Vashi < > khushboo.vashi@enterprisedb.com> wrote: > >> Hi, >> >> Please find attached patch for the Foreign Table Module. >> >> The patch will be modified after Types module implementation as we need >> to populate Base Type and some Type related validations from the Types >> module. >> >> Please review it and let me know the feedback. >> >> Thanks, >> Khushboo >> > > --001a11401c4c934315052fb9079a Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Hi,

Please find updated patch for the F= oreign Table Module.

This patch is dependent on=C2= =A0
1. Backgrid Depscell Patch, (submitted by me)
2. No= deAjaxOptionsCell Transform change patch, on which Ashesh and Murtuza are w= orking

Thanks,
Khushboo




On Wed, Feb 24, 2016 at 2:57 PM, Khushboo Vashi <khushboo.vashi@enterprisedb.com> wrote:
Hi,

I have updated the Foreign Table module as below:

- Used 'NodeByListControl' to get schemas, in the foreign_table.= js file as suggested by Ashesh to avoid code redundancy.

- App= lied 'Security Label Macro'=C2=A0 Patch (Implemented by Har= shal).
=C2=A0 To test the Foreign Table patch, 'Security Label Macr= o' patch must be applied first as that is not committed yet.
<= div>
Please find attached Foreign Table Patch.

<= div>Thanks,
Khushboo
=

On Tue, Feb 23, 2= 016 at 6:53 PM, Khushboo Vashi <khushboo.vashi@enterprisedb.= com> wrote:
Hi,

Please find attached patch for the Foreign Table Module.
The patch will be modified after Types module implementation as we need t= o populate Base Type=C2=A0 and some Type related validations from the Types= module.

Please review it and let me know the feedback.

Thank= s,
Khushboo


--001a11401c4c934315052fb9079a-- --001a11401c4c93431a052fb9079c Content-Type: text/x-patch; charset=US-ASCII; name="pgAdmin4_Foreign_tables_ver1.patch" Content-Disposition: attachment; filename="pgAdmin4_Foreign_tables_ver1.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_imn6xpwc0 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL19f aW5pdF9fLnB5IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvX19p bml0X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u MDRkNzU5MgotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Zv cmVpZ25fdGFibGVzL19faW5pdF9fLnB5CkBAIC0wLDAgKzEsMTAzNCBAQAor IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMKKyMgcGdBZG1pbiA0 IC0gUG9zdGdyZVNRTCBUb29scworIworIyBDb3B5cmlnaHQgKEMpIDIwMTMg LSAyMDE2LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisjIFRoaXMg c29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGlj ZW5jZQorIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIiIi SW1wbGVtZW50cyB0aGUgRm9yZWlnbiBUYWJsZSBNb2R1bGUuIiIiCisKK2lt cG9ydCBqc29uCitmcm9tIGZ1bmN0b29scyBpbXBvcnQgd3JhcHMKK2ltcG9y dCBzeXMKK2ltcG9ydCB0cmFjZWJhY2sKK2Zyb20gZmxhc2sgaW1wb3J0IHJl bmRlcl90ZW1wbGF0ZSwgbWFrZV9yZXNwb25zZSwgcmVxdWVzdCwganNvbmlm eSwgXAorICAgIGN1cnJlbnRfYXBwCitmcm9tIGZsYXNrLmV4dC5iYWJlbCBp bXBvcnQgZ2V0dGV4dAorZnJvbSBjb25maWcgaW1wb3J0IFBHX0RFRkFVTFRf RFJJVkVSCitmcm9tIHBnYWRtaW4udXRpbHMuYWpheCBpbXBvcnQgbWFrZV9q c29uX3Jlc3BvbnNlLCBcCisgICAgbWFrZV9yZXNwb25zZSBhcyBhamF4X3Jl c3BvbnNlLCBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IKK2Zyb20gcGdhZG1pbi5i cm93c2VyLnV0aWxzIGltcG9ydCBQR0NoaWxkTm9kZVZpZXcKK2Zyb20gcGdh ZG1pbi5icm93c2VyLmNvbGxlY3Rpb24gaW1wb3J0IENvbGxlY3Rpb25Ob2Rl TW9kdWxlCitpbXBvcnQgcGdhZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMu c2VydmVycy5kYXRhYmFzZXMuc2NoZW1hcyBhcyBzY2hlbWFzCitmcm9tIHBn YWRtaW4udXRpbHMuYWpheCBpbXBvcnQgcHJlY29uZGl0aW9uX3JlcXVpcmVk Citmcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMu ZGF0YWJhc2VzLnNjaGVtYXMudXRpbHMgaW1wb3J0IFwKKyAgICBTY2hlbWFD aGlsZE1vZHVsZSwgRGF0YVR5cGVSZWFkZXIKK2Zyb20gcGdhZG1pbi51dGls cy5kcml2ZXIgaW1wb3J0IGdldF9kcml2ZXIKK2Zyb20gcGdhZG1pbi5icm93 c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy5kYXRhYmFzZXMudXRpbHMgaW1w b3J0IFwKKyAgICBwYXJzZV9zZWNfbGFiZWxzX2Zyb21fZGIKKworCitjbGFz cyBGb3JlaWduVGFibGVNb2R1bGUoU2NoZW1hQ2hpbGRNb2R1bGUpOgorICAg ICIiIgorICAgIGNsYXNzIEZvcmVpZ25UYWJsZU1vZHVsZShDb2xsZWN0aW9u Tm9kZU1vZHVsZSk6CisKKyAgICAgICAgVGhpcyBjbGFzcyByZXByZXNlbnRz IFRoZSBGb3JlaWduIFRhYmxlIE1vZHVsZS4KKworICAgIE1ldGhvZHM6Cisg ICAgLS0tLS0tLQorICAgICogX19pbml0X18oKmFyZ3MsICoqa3dhcmdzKQor ICAgICAgLSBJbml0aWFsaXplIHRoZSBGb3JlaWduIFRhYmxlIE1vZHVsZS4K KworICAgICogZ2V0X25vZGVzKGdpZCwgc2lkLCBkaWQsIHNjaWQpCisgICAg ICAtIEdlbmVyYXRlIHRoZSBGb3JlaWduIFRhYmxlIGNvbGxlY3Rpb24gbm9k ZS4KKworICAgICogbm9kZV9pbm9kZSgpOgorICAgICAgLSBPdmVycmlkZSB0 aGlzIHByb3BlcnR5IHRvIG1ha2UgdGhlIEZvcmVpZ24gVGFibGUgbm9kZSBh cyBsZWFmIG5vZGUuCisKKyAgICAqIHNjcmlwdF9sb2FkKCkKKyAgICAgIC0g TG9hZCB0aGUgbW9kdWxlIHNjcmlwdCBmb3IgRm9yZWlnbiBUYWJsZSwgd2hl biBzY2hlbWEgbm9kZSBpcworICAgICAgICBpbml0aWFsaXplZC4KKyAgICAi IiIKKyAgICBOT0RFX1RZUEUgPSAnZm9yZWlnbi10YWJsZScKKyAgICBDT0xM RUNUSU9OX0xBQkVMID0gZ2V0dGV4dCgiRm9yZWlnbiBUYWJsZXMiKQorCisg ICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAg ICAgIHN1cGVyKEZvcmVpZ25UYWJsZU1vZHVsZSwgc2VsZikuX19pbml0X18o KmFyZ3MsICoqa3dhcmdzKQorICAgICAgICBzZWxmLm1pbl92ZXIgPSBOb25l CisgICAgICAgIHNlbGYubWF4X3ZlciA9IE5vbmUKKworICAgIGRlZiBnZXRf bm9kZXMoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCk6CisgICAgICAgICIi IgorICAgICAgICBHZW5lcmF0ZSB0aGUgRm9yZWlnbiBUYWJsZSBjb2xsZWN0 aW9uIG5vZGUuCisgICAgICAgICIiIgorICAgICAgICB5aWVsZCBzZWxmLmdl bmVyYXRlX2Jyb3dzZXJfY29sbGVjdGlvbl9ub2RlKHNjaWQpCisKKyAgICBA cHJvcGVydHkKKyAgICBkZWYgbm9kZV9pbm9kZShzZWxmKToKKyAgICAgICAg IiIiCisgICAgICAgIE1ha2UgdGhlIG5vZGUgYXMgbGVhZiBub2RlLgorICAg ICAgICAiIiIKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBAcHJvcGVy dHkKKyAgICBkZWYgc2NyaXB0X2xvYWQoc2VsZik6CisgICAgICAgICIiIgor ICAgICAgICBMb2FkIHRoZSBtb2R1bGUgc2NyaXB0IGZvciBmb3JlaWduIHRh YmxlLCB3aGVuIHRoZQorICAgICAgICBzY2hlbWEgbm9kZSBpcyBpbml0aWFs aXplZC4KKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBzY2hlbWFzLlNj aGVtYU1vZHVsZS5OT0RFX1RZUEUKKworCitibHVlcHJpbnQgPSBGb3JlaWdu VGFibGVNb2R1bGUoX19uYW1lX18pCisKKworY2xhc3MgRm9yZWlnblRhYmxl VmlldyhQR0NoaWxkTm9kZVZpZXcsIERhdGFUeXBlUmVhZGVyKToKKyAgICAi IiIKKyAgICBjbGFzcyBGb3JlaWduVGFibGVWaWV3KFBHQ2hpbGROb2RlVmll dykKKworICAgIFRoaXMgY2xhc3MgaW5oZXJpdHMgUEdDaGlsZE5vZGVWaWV3 IHRvIGdldCB0aGUgZGlmZmVyZW50IHJvdXRlcyBmb3IKKyAgICB0aGUgbW9k dWxlLgorCisgICAgVGhlIGNsYXNzIGlzIHJlc3BvbnNpYmxlIHRvIENyZWF0 ZSwgUmVhZCwgVXBkYXRlIGFuZCBEZWxldGUgb3BlcmF0aW9ucyBmb3IKKyAg ICB0aGUgRm9yZWlnbiBUYWJsZS4KKworICAgIE1ldGhvZHM6CisgICAgLS0t LS0tLQorICAgICogdmFsaWRhdGVfcmVxdWVzdChmKToKKyAgICAgIC0gV29y a3MgYXMgYSBkZWNvcmF0b3IuCisgICAgICAgIFZhbGlkYXRpbmcgcmVxdWVz dCBvbiB0aGUgcmVxdWVzdCBvZiBjcmVhdGUsIHVwZGF0ZSBhbmQgbW9kaWZp ZWQgU1FMLgorCisgICAgKiBtb2R1bGVfanMoKToKKyAgICAgIC0gT3ZlcnJp ZGVzIHRoaXMgcHJvcGVydHkgdG8gZGVmaW5lIGphdmFzY3JpcHQgZm9yIEZv cmVpZ24gVGFibGUgbm9kZS4KKworICAgICogY2hlY2tfcHJlY29uZGl0aW9u KGYpOgorICAgICAgLSBXb3JrcyBhcyBhIGRlY29yYXRvci4KKyAgICAgIC0g Q2hlY2tzIGRhdGFiYXNlIGNvbm5lY3Rpb24gc3RhdHVzLgorICAgICAgLSBB dHRhY2ggY29ubmVjdGlvbiBvYmplY3QgYW5kIHRlbXBsYXRlIHBhdGguCisK KyAgICAqIGxpc3QoZ2lkLCBzaWQsIGRpZCwgc2NpZCk6CisgICAgICAtIExp c3QgdGhlIEZvcmVpZ24gVGFibGUuCisKKyAgICAqIG5vZGVzKGdpZCwgc2lk LCBkaWQsIHNjaWQpOgorICAgICAgLSBSZXR1cm5zIGFsbCB0aGUgRm9yZWln biBUYWJsZSB0byBnZW5lcmF0ZSBOb2RlcyBpbiB0aGUgYnJvd3Nlci4KKwor ICAgICogcHJvcGVydGllcyhnaWQsIHNpZCwgZGlkLCBzY2lkLCBmb2lkKToK KyAgICAgIC0gUmV0dXJucyB0aGUgRm9yZWlnbiBUYWJsZSBwcm9wZXJ0aWVz LgorCisgICAgKiBnZXRfY29sbGF0aW9ucyhnaWQsIHNpZCwgZGlkLCBzY2lk LCBmb2lkPU5vbmUpOgorICAgICAgLSBSZXR1cm5zIENvbGxhdGlvbnMuCisK KyAgICAqIGdldF90eXBlcyhnaWQsIHNpZCwgZGlkLCBzY2lkLCBmb2lkPU5v bmUpOgorICAgICAgLSBSZXR1cm5zIERhdGEgVHlwZXMuCisKKyAgICAqIGdl dF9mb3JlaWduX3NlcnZlcnMoZ2lkLCBzaWQsIGRpZCwgc2NpZCwgZm9pZD1O b25lKToKKyAgICAgIC0gUmV0dXJucyB0aGUgRm9yZWlnbiBTZXJ2ZXJzLgor CisgICAgKiBnZXRfdGFibGVzKGdpZCwgc2lkLCBkaWQsIHNjaWQsIGZvaWQ9 Tm9uZSk6CisgICAgICAtIFJldHVybnMgdGhlIEZvcmVpZ24gVGFibGVzIGFz IHdlbGwgYXMgUGxhaW4gVGFibGVzLgorCisgICAgKiBnZXRfY29sdW1ucyhn aWQsIHNpZCwgZGlkLCBzY2lkLCBmb2lkPU5vbmUpOgorICAgICAgLSBSZXR1 cm5zIHRoZSBUYWJsZSBDb2x1bW5zLgorCisgICAgKiBjcmVhdGUoZ2lkLCBz aWQsIGRpZCwgc2NpZCk6CisgICAgICAtIENyZWF0ZXMgYSBuZXcgRm9yZWln biBUYWJsZSBvYmplY3QuCisKKyAgICAqIHVwZGF0ZShnaWQsIHNpZCwgZGlk LCBzY2lkLCBmb2lkKToKKyAgICAgIC0gVXBkYXRlcyB0aGUgRm9yZWlnbiBU YWJsZSBvYmplY3QuCisKKyAgICAqIGRlbGV0ZShnaWQsIHNpZCwgZGlkLCBz Y2lkLCBmb2lkKToKKyAgICAgIC0gRHJvcHMgdGhlIEZvcmVpZ24gVGFibGUg b2JqZWN0LgorCisgICAgKiBzcWwoZ2lkLCBzaWQsIGRpZCwgc2NpZCwgZm9p ZCk6CisgICAgICAtIFJldHVybnMgdGhlIFNRTCBmb3IgdGhlIEZvcmVpZ24g VGFibGUgb2JqZWN0LgorCisgICAgKiBtc3FsKGdpZCwgc2lkLCBkaWQsIHNj aWQsIGZvaWQ9Tm9uZSk6CisgICAgICAtIFJldHVybnMgdGhlIG1vZGlmaWVk IFNRTC4KKworICAgICogZ2V0X3NxbChnaWQsIHNpZCwgZGF0YSwgc2NpZCwg Zm9pZD1Ob25lKToKKyAgICAgIC0gR2VuZXJhdGVzIHRoZSBTUUwgc3RhdGVt ZW50cyB0byBjcmVhdGUvdXBkYXRlIHRoZSBGb3JlaWduIFRhYmxlIG9iamVj dC4KKworICAgICogZGVwZW5kZW50cyhnaWQsIHNpZCwgZGlkLCBzY2lkLCBm b2lkKToKKyAgICAgIC0gUmV0dXJucyB0aGUgZGVwZW5kZW50cyBmb3IgdGhl IEZvcmVpZ24gVGFibGUgb2JqZWN0LgorCisgICAgKiBkZXBlbmRlbmNpZXMo Z2lkLCBzaWQsIGRpZCwgc2NpZCwgZm9pZCk6CisgICAgICAtIFJldHVybnMg dGhlIGRlcGVuZGVuY2llcyBmb3IgdGhlIEZvcmVpZ24gVGFibGUgb2JqZWN0 LgorICAgICIiIgorCisgICAgbm9kZV90eXBlID0gYmx1ZXByaW50Lm5vZGVf dHlwZQorCisgICAgcGFyZW50X2lkcyA9IFsKKyAgICAgICAgeyd0eXBlJzog J2ludCcsICdpZCc6ICdnaWQnfSwKKyAgICAgICAgeyd0eXBlJzogJ2ludCcs ICdpZCc6ICdzaWQnfSwKKyAgICAgICAgeyd0eXBlJzogJ2ludCcsICdpZCc6 ICdkaWQnfSwKKyAgICAgICAgeyd0eXBlJzogJ2ludCcsICdpZCc6ICdzY2lk J30KKyAgICBdCisgICAgaWRzID0gWworICAgICAgICB7J3R5cGUnOiAnaW50 JywgJ2lkJzogJ2ZvaWQnfQorICAgIF0KKworICAgIG9wZXJhdGlvbnMgPSBk aWN0KHsKKyAgICAgICAgJ29iaic6IFsKKyAgICAgICAgICAgIHsnZ2V0Jzog J3Byb3BlcnRpZXMnLCAnZGVsZXRlJzogJ2RlbGV0ZScsICdwdXQnOiAndXBk YXRlJ30sCisgICAgICAgICAgICB7J2dldCc6ICdsaXN0JywgJ3Bvc3QnOiAn Y3JlYXRlJ30KKyAgICAgICAgXSwKKyAgICAgICAgJ2RlbGV0ZSc6IFt7J2Rl bGV0ZSc6ICdkZWxldGUnfV0sCisgICAgICAgICdjaGlsZHJlbic6IFt7J2dl dCc6ICdjaGlsZHJlbid9XSwKKyAgICAgICAgJ25vZGVzJzogW3snZ2V0Jzog J25vZGUnfSwgeydnZXQnOiAnbm9kZXMnfV0sCisgICAgICAgICdzcWwnOiBb eydnZXQnOiAnc3FsJ31dLAorICAgICAgICAnbXNxbCc6IFt7J2dldCc6ICdt c3FsJ30sIHsnZ2V0JzogJ21zcWwnfV0sCisgICAgICAgICdzdGF0cyc6IFt7 J2dldCc6ICdzdGF0aXN0aWNzJ31dLAorICAgICAgICAnZGVwZW5kZW5jeSc6 IFt7J2dldCc6ICdkZXBlbmRlbmNpZXMnfV0sCisgICAgICAgICdkZXBlbmRl bnQnOiBbeydnZXQnOiAnZGVwZW5kZW50cyd9XSwKKyAgICAgICAgJ21vZHVs ZS5qcyc6IFt7fSwge30sIHsnZ2V0JzogJ21vZHVsZV9qcyd9XSwKKyAgICAg ICAgJ2dldF9jb2xsYXRpb25zJzogWworICAgICAgICAgICAgeydnZXQnOiAn Z2V0X2NvbGxhdGlvbnMnfSwKKyAgICAgICAgICAgIHsnZ2V0JzogJ2dldF9j b2xsYXRpb25zJ30KKyAgICAgICAgICAgIF0sCisgICAgICAgICdnZXRfdHlw ZXMnOiBbeydnZXQnOiAndHlwZXMnfSwgeydnZXQnOiAndHlwZXMnfV0sCisg ICAgICAgICdnZXRfZm9yZWlnbl9zZXJ2ZXJzJzogW3snZ2V0JzogJ2dldF9m b3JlaWduX3NlcnZlcnMnfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgeydnZXQnOiAnZ2V0X2ZvcmVpZ25fc2VydmVycyd9XSwKKyAgICAg ICAgJ2dldF90YWJsZXMnOiBbeydnZXQnOiAnZ2V0X3RhYmxlcyd9LCB7J2dl dCc6ICdnZXRfdGFibGVzJ31dLAorICAgICAgICAnZ2V0X2NvbHVtbnMnOiBb eydnZXQnOiAnZ2V0X2NvbHVtbnMnfSwgeydnZXQnOiAnZ2V0X2NvbHVtbnMn fV0KKyAgICB9KQorCisgICAgZGVmIHZhbGlkYXRlX3JlcXVlc3QoZik6Cisg ICAgICAgICIiIgorICAgICAgICBXb3JrcyBhcyBhIGRlY29yYXRvci4KKyAg ICAgICAgVmFsaWRhdGluZyByZXF1ZXN0IG9uIHRoZSByZXF1ZXN0IG9mIGNy ZWF0ZSwgdXBkYXRlIGFuZCBtb2RpZmllZCBTUUwuCisKKyAgICAgICAgUmVx dWlyZWQgQXJnczoKKyAgICAgICAgICAgICAgICAgICAgbmFtZTogTmFtZSBv ZiB0aGUgRm9yZWlnbiBUYWJsZQorICAgICAgICAgICAgICAgICAgICBmdHNy dm5hbWU6IEZvcmVpZ24gU2VydmVyIE5hbWUKKworICAgICAgICBBYm92ZSBi b3RoIHRoZSBhcmd1bWVudHMgd2lsbCBub3QgYmUgdmFsaWRhdGVkIGluIHRo ZSB1cGRhdGUgYWN0aW9uLgorICAgICAgICAiIiIKKyAgICAgICAgQHdyYXBz KGYpCisgICAgICAgIGRlZiB3cmFwKHNlbGYsICoqa3dhcmdzKToKKworICAg ICAgICAgICAgZGF0YSA9IHt9CisKKyAgICAgICAgICAgIGlmIHJlcXVlc3Qu ZGF0YToKKyAgICAgICAgICAgICAgICByZXEgPSBqc29uLmxvYWRzKHJlcXVl c3QuZGF0YS5kZWNvZGUoKSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAg ICAgICAgICAgcmVxID0gcmVxdWVzdC5hcmdzIG9yIHJlcXVlc3QuZm9ybQor CisgICAgICAgICAgICBpZiAnZm9pZCcgbm90IGluIGt3YXJnczoKKyAgICAg ICAgICAgICAgICByZXF1aXJlZF9hcmdzID0gWworICAgICAgICAgICAgICAg ICAgICAnbmFtZScsCisgICAgICAgICAgICAgICAgICAgICdmdHNydm5hbWUn CisgICAgICAgICAgICAgICAgXQorCisgICAgICAgICAgICAgICAgZm9yIGFy ZyBpbiByZXF1aXJlZF9hcmdzOgorICAgICAgICAgICAgICAgICAgICBpZiBh cmcgbm90IGluIHJlcSBvciByZXFbYXJnXSA9PSAnJzoKKyAgICAgICAgICAg ICAgICAgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzPTQxMCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzdWNjZXNzPTAsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZXJyb3Jtc2c9Z2V0dGV4dCgKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIkNvdWxkbid0IGZpbmQgdGhlIHJlcXVp cmVkIHBhcmFtZXRlciBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICglcykuIiAlIGFyZworICAgICAgICAgICAgICAgICAgICAgICAgICAg ICkKKyAgICAgICAgICAgICAgICAgICAgICAgICkKKworICAgICAgICAgICAg dHJ5OgorICAgICAgICAgICAgICAgIGxpc3RfcGFyYW1zID0gW10KKyAgICAg ICAgICAgICAgICBpZiByZXF1ZXN0Lm1ldGhvZCA9PSAnR0VUJzoKKyAgICAg ICAgICAgICAgICAgICAgbGlzdF9wYXJhbXMgPSBbJ2NvbnN0cmFpbnRzJywg J2NvbHVtbnMnLCAnZnRvcHRpb25zJywKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJ3NlY2xhYmVscycsICdpbmhlcml0cyddCisgICAg ICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgbGlzdF9w YXJhbXMgPSBbJ2luaGVyaXRzJ10KKworICAgICAgICAgICAgICAgIGZvciBr ZXkgaW4gcmVxOgorICAgICAgICAgICAgICAgICAgICBpZiBrZXkgaW4gbGlz dF9wYXJhbXMgYW5kIHJlcVtrZXldICE9ICcnIFwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICBhbmQgcmVxW2tleV0gaXMgbm90IE5vbmU6CisgICAg ICAgICAgICAgICAgICAgICAgICAjIENvdmVydHMgc3RyaW5nIGludG8gcHl0 aG9uIGxpc3QgYXMgZXhwZWN0ZWQuCisgICAgICAgICAgICAgICAgICAgICAg ICBkYXRhW2tleV0gPSBqc29uLmxvYWRzKHJlcVtrZXldKQorCisgICAgICAg ICAgICAgICAgICAgICAgICBpZiBrZXkgPT0gJ2luaGVyaXRzJzoKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAjIENvbnZlcnQgVGFibGUgaWRzIGZy b20gdW5pY29kZS9zdHJpbmcgdG8gaW50CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIyBhbmQgbWFrZSB0dXBsZSBmb3IgJ0lOJyBxdWVyeS4KKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpbmhlcml0cyA9IHR1cGxlKFtp bnQoeCkgZm9yIHggaW4gZGF0YVtrZXldXSkKKworICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGlmIGxlbihpbmhlcml0cykgPT0gMToKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIyBQeXRob24gdHVwcGxlIGhhcyAs IGFmdGVyIHRoZSBmaXJzdCBwYXJhbQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAjIGluIGNhc2Ugb2Ygc2luZ2xlIHBhcmFtZXRlci4KKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBTbywgd2UgbmVlZCB0 byBtYWtlIGl0IHR1cGxlIGV4cGxpY2l0bHkuCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGluaGVyaXRzID0gIigiICsgc3RyKGluaGVyaXRz WzBdKSArICIpIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGlu aGVyaXRzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEZl dGNoIFRhYmxlIE5hbWVzIGZyb20gdGhlaXIgcmVzcGVjdGl2ZSBJZHMsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYXMgd2UgbmVlZCBU YWJsZSBuYW1lcyB0byBnZW5lcmF0ZSB0aGUgU1FMLgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLyIuam9pbihb c2VsZi50ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICdnZXRfdGFibGVzLnNxbCddKSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJlbGlkPWlu aGVyaXRzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0 dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQorCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW50 ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpZiAnaW5oZXJpdHMnIGluIHJlc1sn cm93cyddWzBdOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZGF0YVtrZXldID0gcmVzWydyb3dzJ11bMF1bJ2luaGVyaXRzJ10KKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFba2V5XSA9IFtdCisK KyAgICAgICAgICAgICAgICAgICAgZWxpZiBrZXkgPT0gJ3R5cG5vdG51bGwn OgorICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVtrZXldID0gVHJ1ZSBp ZiAocmVxW2tleV0gPT0gJ3RydWUnIG9yIHJlcVtrZXldCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBUcnVlKSBl bHNlIEZhbHNlIGlmXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChy ZXFba2V5XSA9PSAnZmFsc2UnIG9yIHJlcVtrZXldKSBpcyBGYWxzZSBlbHNl ICcnCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAg ICAgICAgICAgICBkYXRhW2tleV0gPSByZXFba2V5XQorCisgICAgICAgICAg ICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgcmV0 dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1zdHIoZSkpCisK KyAgICAgICAgICAgIHNlbGYucmVxdWVzdCA9IGRhdGEKKyAgICAgICAgICAg IHJldHVybiBmKHNlbGYsICoqa3dhcmdzKQorCisgICAgICAgIHJldHVybiB3 cmFwCisKKyAgICBkZWYgbW9kdWxlX2pzKHNlbGYpOgorICAgICAgICAiIiIK KyAgICAgICAgTG9hZCBKUyBmaWxlIChmb3JlaWduX3RhYmxlcy5qcykgZm9y IHRoaXMgbW9kdWxlLgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIG1h a2VfcmVzcG9uc2UoCisgICAgICAgICAgICByZW5kZXJfdGVtcGxhdGUoCisg ICAgICAgICAgICAgICAgImZvcmVpZ25fdGFibGVzL2pzL2ZvcmVpZ25fdGFi bGVzLmpzIiwKKyAgICAgICAgICAgICAgICBfPWdldHRleHQKKyAgICAgICAg ICAgICksCisgICAgICAgICAgICAyMDAsIHsnQ29udGVudC1UeXBlJzogJ2Fw cGxpY2F0aW9uL3gtamF2YXNjcmlwdCd9CisgICAgICAgICkKKworICAgIGRl ZiBjaGVja19wcmVjb25kaXRpb24oZik6CisgICAgICAgICIiIgorICAgICAg ICBXb3JrcyBhcyBhIGRlY29yYXRvci4KKyAgICAgICAgQ2hlY2tzIHRoZSBk YXRhYmFzZSBjb25uZWN0aW9uIHN0YXR1cy4KKyAgICAgICAgQXR0YWNoZXMg dGhlIGNvbm5lY3Rpb24gb2JqZWN0IGFuZCB0ZW1wbGF0ZSBwYXRoIHRvIHRo ZSBjbGFzcyBvYmplY3QuCisgICAgICAgICIiIgorICAgICAgICBAd3JhcHMo ZikKKyAgICAgICAgZGVmIHdyYXAoKmFyZ3MsICoqa3dhcmdzKToKKyAgICAg ICAgICAgIHNlbGYgPSBhcmdzWzBdCisgICAgICAgICAgICBkcml2ZXIgPSBn ZXRfZHJpdmVyKFBHX0RFRkFVTFRfRFJJVkVSKQorICAgICAgICAgICAgc2Vs Zi5tYW5hZ2VyID0gZHJpdmVyLmNvbm5lY3Rpb25fbWFuYWdlcihrd2FyZ3Nb J3NpZCddKQorCisgICAgICAgICAgICAjIEdldCBkYXRhYmFzZSBjb25uZWN0 aW9uCisgICAgICAgICAgICBzZWxmLmNvbm4gPSBzZWxmLm1hbmFnZXIuY29u bmVjdGlvbihkaWQ9a3dhcmdzWydkaWQnXSkKKworICAgICAgICAgICAgc2Vs Zi5xdElkZW50ID0gZHJpdmVyLnF0SWRlbnQKKworICAgICAgICAgICAgaWYg bm90IHNlbGYuY29ubi5jb25uZWN0ZWQoKToKKyAgICAgICAgICAgICAgICBy ZXR1cm4gcHJlY29uZGl0aW9uX3JlcXVpcmVkKAorICAgICAgICAgICAgICAg ICAgICBnZXR0ZXh0KAorICAgICAgICAgICAgICAgICAgICAgICAgIkNvbm5l Y3Rpb24gdG8gdGhlIHNlcnZlciBoYXMgYmVlbiBsb3N0ISIKKyAgICAgICAg ICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICkKKworICAgICAgICAg ICAgdmVyID0gc2VsZi5tYW5hZ2VyLnZlcnNpb24KKyAgICAgICAgICAgIHNl cnZlcl90eXBlID0gc2VsZi5tYW5hZ2VyLnNlcnZlcl90eXBlCisKKyAgICAg ICAgICAgICMgU2V0IHRlbXBsYXRlIHBhdGggZm9yIHNxbCBzY3JpcHRzIGRl cGVuZGluZworICAgICAgICAgICAgIyBvbiB0aGUgc2VydmVyIHZlcnNpb24u CisKKyAgICAgICAgICAgIGlmIHZlciA+PSA5MDUwMDoKKyAgICAgICAgICAg ICAgICBzZWxmLnRlbXBsYXRlX3BhdGggPSAnZm9yZWlnbl90YWJsZXMvc3Fs LzkuNV9wbHVzJworICAgICAgICAgICAgZWxpZiB2ZXIgPj0gOTAzMDA6Cisg ICAgICAgICAgICAgICAgc2VsZi50ZW1wbGF0ZV9wYXRoID0gJ2ZvcmVpZ25f dGFibGVzL3NxbC85LjNfcGx1cycKKyAgICAgICAgICAgIGVsc2U6CisgICAg ICAgICAgICAgICAgc2VsZi50ZW1wbGF0ZV9wYXRoID0gJ2ZvcmVpZ25fdGFi bGVzL3NxbC85LjFfcGx1cycKKworICAgICAgICAgICAgcmV0dXJuIGYoKmFy Z3MsICoqa3dhcmdzKQorCisgICAgICAgIHJldHVybiB3cmFwCisKKyAgICBA Y2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVmIGxpc3Qoc2VsZiwgZ2lkLCBz aWQsIGRpZCwgc2NpZCk6CisgICAgICAgICIiIgorICAgICAgICBMaXN0IGFs bCB0aGUgRm9yZWlnbiBUYWJsZXMuCisKKyAgICAgICAgQXJnczoKKyAgICAg ICAgICAgIGdpZDogU2VydmVyIEdyb3VwIElkCisgICAgICAgICAgICBzaWQ6 IFNlcnZlciBJZAorICAgICAgICAgICAgZGlkOiBEYXRhYmFzZSBJZAorICAg ICAgICAgICAgc2NpZDogU2NoZW1hIElkCisgICAgICAgICIiIgorICAgICAg ICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxh dGVfcGF0aCwgJ25vZGUuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc2NpZD1zY2lkKQorICAgICAgICBzdGF0dXMsIHJlcyA9IHNl bGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQorCisgICAgICAgIGlmIG5vdCBz dGF0dXM6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vy cm9yKGVycm9ybXNnPXJlcykKKyAgICAgICAgcmV0dXJuIGFqYXhfcmVzcG9u c2UoCisgICAgICAgICAgICByZXNwb25zZT1yZXNbJ3Jvd3MnXSwKKyAgICAg ICAgICAgIHN0YXR1cz0yMDAKKyAgICAgICAgKQorCisgICAgQGNoZWNrX3By ZWNvbmRpdGlvbgorICAgIGRlZiBub2RlcyhzZWxmLCBnaWQsIHNpZCwgZGlk LCBzY2lkKToKKyAgICAgICAgIiIiCisgICAgICAgIFJldHVybnMgdGhlIEZv cmVpZ24gVGFibGVzIHRvIGdlbmVyYXRlIHRoZSBOb2Rlcy4KKworICAgICAg ICBBcmdzOgorICAgICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAgSWQKKyAg ICAgICAgICAgIHNpZDogU2VydmVyIElkCisgICAgICAgICAgICBkaWQ6IERh dGFiYXNlIElkCisgICAgICAgICAgICBzY2lkOiBTY2hlbWEgSWQKKyAgICAg ICAgIiIiCisKKyAgICAgICAgcmVzID0gW10KKyAgICAgICAgU1FMID0gcmVu ZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25vZGUu c3FsJ10pLCBzY2lkPXNjaWQpCisgICAgICAgIHN0YXR1cywgcnNldCA9IHNl bGYuY29ubi5leGVjdXRlXzJkYXJyYXkoU1FMKQorCisgICAgICAgIGlmIG5v dCBzdGF0dXM6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVy X2Vycm9yKGVycm9ybXNnPXJzZXQpCisKKyAgICAgICAgZm9yIHJvdyBpbiBy c2V0Wydyb3dzJ106CisgICAgICAgICAgICByZXMuYXBwZW5kKAorICAgICAg ICAgICAgICAgIHNlbGYuYmx1ZXByaW50LmdlbmVyYXRlX2Jyb3dzZXJfbm9k ZSgKKyAgICAgICAgICAgICAgICAgICAgcm93WydvaWQnXSwKKyAgICAgICAg ICAgICAgICAgICAgc2NpZCwKKyAgICAgICAgICAgICAgICAgICAgcm93Wydu YW1lJ10sCisgICAgICAgICAgICAgICAgICAgIGljb249Imljb24tZm9yZWln bi10YWJsZSIKKyAgICAgICAgICAgICAgICApKQorCisgICAgICAgIHJldHVy biBtYWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAgICAgICBkYXRhPXJlcywK KyAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAgICAgKQorCisgICAgQGNo ZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBwcm9wZXJ0aWVzKHNlbGYsIGdp ZCwgc2lkLCBkaWQsIHNjaWQsIGZvaWQpOgorICAgICAgICAiIiIKKyAgICAg ICAgUmV0dXJucyB0aGUgRm9yZWlnbiBUYWJsZSBwcm9wZXJ0aWVzLgorCisg ICAgICAgIEFyZ3M6CisgICAgICAgICAgICBnaWQ6IFNlcnZlciBHcm91cCBJ ZAorICAgICAgICAgICAgc2lkOiBTZXJ2ZXIgSWQKKyAgICAgICAgICAgIGRp ZDogRGF0YWJhc2UgSWQKKyAgICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJZAor ICAgICAgICAgICAgZm9pZDogRm9yZWlnbiBUYWJsZSBJZAorICAgICAgICAi IiIKKyAgICAgICAgZGF0YSA9IHNlbGYuX2ZldGNoX3Byb3BlcnRpZXMoZ2lk LCBzaWQsIGRpZCwgc2NpZCwgZm9pZCkKKworICAgICAgICByZXR1cm4gYWph eF9yZXNwb25zZSgKKyAgICAgICAgICAgIHJlc3BvbnNlPWRhdGEsCisgICAg ICAgICAgICBzdGF0dXM9MjAwCisgICAgICAgICkKKworICAgIEBjaGVja19w cmVjb25kaXRpb24KKyAgICBkZWYgZ2V0X2NvbGxhdGlvbnMoc2VsZiwgZ2lk LCBzaWQsIGRpZCwgc2NpZCwgZm9pZD1Ob25lKToKKyAgICAgICAgIiIiCisg ICAgICAgIFJldHVybnMgdGhlIENvbGxhdGlvbnMuCisKKyAgICAgICAgQXJn czoKKyAgICAgICAgICAgIGdpZDogU2VydmVyIEdyb3VwIElkCisgICAgICAg ICAgICBzaWQ6IFNlcnZlciBJZAorICAgICAgICAgICAgZGlkOiBEYXRhYmFz ZSBJZAorICAgICAgICAgICAgc2NpZDogU2NoZW1hIElkCisgICAgICAgICAg ICBmb2lkOiBGb3JlaWduIFRhYmxlIElkCisgICAgICAgICIiIgorCisgICAg ICAgIHJlcyA9IFt7J2xhYmVsJzogJycsICd2YWx1ZSc6ICcnfV0KKyAgICAg ICAgdHJ5OgorICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIv Ii5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnZXRfY29sbGF0aW9ucy5z cWwnXSkpCisgICAgICAgICAgICBzdGF0dXMsIHJzZXQgPSBzZWxmLmNvbm4u ZXhlY3V0ZV8yZGFycmF5KFNRTCkKKyAgICAgICAgICAgIGlmIG5vdCBzdGF0 dXM6CisgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9l cnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgICAgIGZvciByb3cgaW4g cnNldFsncm93cyddOgorICAgICAgICAgICAgICAgIHJlcy5hcHBlbmQoCisg ICAgICAgICAgICAgICAgICAgIHsnbGFiZWwnOiByb3dbJ2NvcHlfY29sbGF0 aW9uJ10sCisgICAgICAgICAgICAgICAgICAgICAndmFsdWUnOiByb3dbJ2Nv cHlfY29sbGF0aW9uJ119CisgICAgICAgICAgICAgICAgKQorCisgICAgICAg ICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAg ICAgIGRhdGE9cmVzLAorICAgICAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAg ICAgICAgICAgICkKKworICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6 CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVy cm9ybXNnPXN0cihlKSkKKworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAg ICBkZWYgdHlwZXMoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgZm9pZD1O b25lKToKKyAgICAgICAgIiIiCisgICAgICAgIFJldHVybnMgdGhlIERhdGEg VHlwZXMuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIGdpZDogU2Vy dmVyIEdyb3VwIElkCisgICAgICAgICAgICBzaWQ6IFNlcnZlciBJZAorICAg ICAgICAgICAgZGlkOiBEYXRhYmFzZSBJZAorICAgICAgICAgICAgc2NpZDog U2NoZW1hIElkCisgICAgICAgICAgICBmb2lkOiBGb3JlaWduIFRhYmxlIElk CisgICAgICAgICIiIgorCisgICAgICAgIGNvbmRpdGlvbiA9ICIiInR5cGlz ZGVmaW5lZCBBTkQgdHlwdHlwZSBJTiAoJ2InLCAnYycsICdkJywgJ2UnLCAn cicpCitBTkQgTk9UIEVYSVNUUyAoU0VMRUNUIDEgRlJPTSBwZ19jbGFzcyBX SEVSRSByZWxuYW1lc3BhY2U9dHlwbmFtZXNwYWNlCitBTkQgcmVsbmFtZSA9 IHR5cG5hbWUgQU5EIHJlbGtpbmQgIT0gJ2MnKSBBTkQKKyh0eXBuYW1lIE5P VCBMSUtFICdfJScgT1IgTk9UIEVYSVNUUyAoU0VMRUNUIDEgRlJPTSBwZ19j bGFzcyBXSEVSRQorcmVsbmFtZXNwYWNlPXR5cG5hbWVzcGFjZSBBTkQgcmVs bmFtZSA9IHN1YnN0cmluZyh0eXBuYW1lIEZST00gMik6Om5hbWUKK0FORCBy ZWxraW5kICE9ICdjJykpIiIiCisKKyAgICAgICAgaWYgc2VsZi5ibHVlcHJp bnQuc2hvd19zeXN0ZW1fb2JqZWN0czoKKyAgICAgICAgICAgIGNvbmRpdGlv biArPSAiIEFORCBuc3AubnNwbmFtZSAhPSAnaW5mb3JtYXRpb25fc2NoZW1h JyIKKworICAgICAgICAjIEdldCBUeXBlcworICAgICAgICBzdGF0dXMsIHR5 cGVzID0gc2VsZi5nZXRfdHlwZXMoc2VsZi5jb25uLCBjb25kaXRpb24pCisK KyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBp bnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9dHlwZXMpCisKKyAgICAg ICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAgICAgIGRh dGE9dHlwZXMsCisgICAgICAgICAgICBzdGF0dXM9MjAwCisgICAgICAgICkK KworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgZ2V0X2ZvcmVp Z25fc2VydmVycyhzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCBmb2lkPU5v bmUpOgorICAgICAgICAiIiIKKyAgICAgICAgUmV0dXJucyB0aGUgRm9yZWln biBTZXJ2ZXJzLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBnaWQ6 IFNlcnZlciBHcm91cCBJZAorICAgICAgICAgICAgc2lkOiBTZXJ2ZXIgSWQK KyAgICAgICAgICAgIGRpZDogRGF0YWJhc2UgSWQKKyAgICAgICAgICAgIHNj aWQ6IFNjaGVtYSBJZAorICAgICAgICAgICAgZm9pZDogRm9yZWlnbiBUYWJs ZSBJZAorICAgICAgICAiIiIKKyAgICAgICAgcmVzID0gW3snbGFiZWwnOiAn JywgJ3ZhbHVlJzogJyd9XQorICAgICAgICB0cnk6CisgICAgICAgICAgICBT UUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVf cGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJ2dldF9mb3JlaWduX3NlcnZlcnMuc3FsJ10pKQorICAgICAgICAg ICAgc3RhdHVzLCByc2V0ID0gc2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJheShT UUwpCisgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAg ICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVz KQorCisgICAgICAgICAgICBmb3Igcm93IGluIHJzZXRbJ3Jvd3MnXToKKyAg ICAgICAgICAgICAgICByZXMuYXBwZW5kKAorICAgICAgICAgICAgICAgICAg ICB7J2xhYmVsJzogcm93WydzcnZuYW1lJ10sICd2YWx1ZSc6IHJvd1snc3J2 bmFtZSddfQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIHJldHVy biBtYWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAgICAgICAgICAgZGF0YT1y ZXMsCisgICAgICAgICAgICAgICAgc3RhdHVzPTIwMAorICAgICAgICAgICAg KQorCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAg ICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3Ry KGUpKQorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBnZXRf dGFibGVzKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIGZvaWQ9Tm9uZSk6 CisgICAgICAgICIiIgorICAgICAgICBSZXR1cm5zIHRoZSBGb3JlaWduIFRh YmxlcyBhcyB3ZWxsIGFzIFBsYWluIFRhYmxlcy4KKworICAgICAgICBBcmdz OgorICAgICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAgSWQKKyAgICAgICAg ICAgIHNpZDogU2VydmVyIElkCisgICAgICAgICAgICBkaWQ6IERhdGFiYXNl IElkCisgICAgICAgICAgICBzY2lkOiBTY2hlbWEgSWQKKyAgICAgICAgICAg IGZvaWQ6IEZvcmVpZ24gVGFibGUgSWQKKyAgICAgICAgIiIiCisgICAgICAg IHJlcyA9IFtdCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIFNRTCA9IHJl bmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn Z2V0X3RhYmxlcy5zcWwnXSkpCisgICAgICAgICAgICBzdGF0dXMsIHJzZXQg PSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKKyAgICAgICAgICAgIGlm IG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFs X3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgICAgIHJl dHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAgICAgICAgICAgZGF0 YT1yc2V0Wydyb3dzJ10sCisgICAgICAgICAgICAgICAgc3RhdHVzPTIwMAor ICAgICAgICAgICAgKQorCisgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAg IGV4Y190eXBlLCBleGNfdmFsdWUsIGV4Y190cmFjZWJhY2sgPSBzeXMuZXhj X2luZm8oKQorICAgICAgICAgICAgY3VycmVudF9hcHAubG9nZ2VyLmVycm9y KAorICAgICAgICAgICAgICAgIHRyYWNlYmFjay5wcmludF9leGNlcHRpb24o ZXhjX3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBleGNfdmFsdWUsIGV4Y190cmFjZWJhY2ssIGxpbWl0PTIpKQor CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVy cm9ybXNnPXN0cihleGNfdmFsdWUpKQorCisgICAgQGNoZWNrX3ByZWNvbmRp dGlvbgorICAgIGRlZiBnZXRfY29sdW1ucyhzZWxmLCBnaWQsIHNpZCwgZGlk LCBzY2lkLCBmb2lkPU5vbmUpOgorICAgICAgICAiIiIKKyAgICAgICAgUmV0 dXJucyB0aGUgVGFibGUgQ29sdW1ucy4KKworICAgICAgICBBcmdzOgorICAg ICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAgSWQKKyAgICAgICAgICAgIHNp ZDogU2VydmVyIElkCisgICAgICAgICAgICBkaWQ6IERhdGFiYXNlIElkCisg ICAgICAgICAgICBzY2lkOiBTY2hlbWEgSWQKKyAgICAgICAgICAgIGZvaWQ6 IEZvcmVpZ24gVGFibGUgSWQKKyAgICAgICAgICAgIGF0dHJlbGlkOiBUYWJs ZSBvaWQKKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgICBKU09O IEFycmF5IHdpdGggYmVsb3cgcGFyYW1ldGVycy4KKyAgICAgICAgICAgICAg YXR0bmFtZTogQ29sdW1uIE5hbWUKKyAgICAgICAgICAgICAgZGF0YXR5cGU6 IENvbHVtbiBEYXRhIFR5cGUKKyAgICAgICAgICAgICAgaW5oZXJpdGVkX2Zy b206IFBhcmVudCBUYWJsZSBmcm9tIHdoaWNoIHRoZSByZWxhdGVkIGNvbHVt bgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgaW5oZXJpdHRl ZC4KKyAgICAgICAgIiIiCisgICAgICAgIHJlcyA9IFtdCisgICAgICAgIGRh dGEgPSByZXF1ZXN0LmFyZ3MgaWYgcmVxdWVzdC5hcmdzIGVsc2UgTm9uZQor ICAgICAgICB0cnk6CisgICAgICAgICAgICBpZiBkYXRhIGFuZCAnYXR0cmVs aWQnIGluIGRhdGE6CisgICAgICAgICAgICAgICAgU1FMID0gcmVuZGVyX3Rl bXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2V0 X3RhYmxlX2NvbHVtbnMuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBhdHRyZWxpZD1kYXRhWydhdHRyZWxpZCddKQor ICAgICAgICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1 dGVfZGljdChTUUwpCisKKyAgICAgICAgICAgICAgICBpZiBub3Qgc3RhdHVz OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVy X2Vycm9yKGVycm9ybXNnPXJlcykKKyAgICAgICAgICAgICAgICByZXR1cm4g bWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgICAgICAgICBkYXRh PXJlc1sncm93cyddLAorICAgICAgICAgICAgICAgICAgICBzdGF0dXM9MjAw CisgICAgICAgICAgICAgICAgKQorICAgICAgICBleGNlcHQ6CisgICAgICAg ICAgICBleGNfdHlwZSwgZXhjX3ZhbHVlLCBleGNfdHJhY2ViYWNrID0gc3lz LmV4Y19pbmZvKCkKKyAgICAgICAgICAgIGN1cnJlbnRfYXBwLmxvZ2dlci5l cnJvcih0cmFjZWJhY2sucHJpbnRfZXhjZXB0aW9uKAorICAgICAgICAgICAg ICAgIGV4Y190eXBlLAorICAgICAgICAgICAgICAgIGV4Y192YWx1ZSwKKyAg ICAgICAgICAgICAgICBleGNfdHJhY2ViYWNrLAorICAgICAgICAgICAgICAg IGxpbWl0PTIKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICApCisK KyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJy b3Jtc2c9c3RyKGV4Y192YWx1ZSkpCisKKyAgICBAY2hlY2tfcHJlY29uZGl0 aW9uCisgICAgQHZhbGlkYXRlX3JlcXVlc3QKKyAgICBkZWYgY3JlYXRlKHNl bGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQpOgorICAgICAgICAiIiIKKyAgICAg ICAgQ3JlYXRlcyBhIG5ldyBGb3JlaWduIFRhYmxlIG9iamVjdC4KKworICAg ICAgICBBcmdzOgorICAgICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAgSWQK KyAgICAgICAgICAgIHNpZDogU2VydmVyIElkCisgICAgICAgICAgICBkaWQ6 IERhdGFiYXNlIElkCisgICAgICAgICAgICBzY2lkOiBTY2hlbWEgSWQKKyAg ICAgICAgICAgIGZvaWQ6IEZvcmVpZ24gVGFibGUgSWQKKyAgICAgICAgICAg IG5hbWU6IEZvcmVpZ24gVGFibGUgTmFtZQorICAgICAgICAgICAgYmFzZW5z cDogU2NoZW1hIE5hbWUKKyAgICAgICAgICAgIGZ0c3J2bmFtZTogRm9yZWln biBTZXJ2ZXIgTmFtZQorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAg ICBGb3JlaWduIFRhYmxlIG9iamVjdCBpbiBqc29uIGZvcm1hdC4KKyAgICAg ICAgIiIiCisgICAgICAgIHRyeToKKyAgICAgICAgICAgICMgR2V0IFNRTCB0 byBjcmVhdGUgRm9yZWlnbiBUYWJsZQorICAgICAgICAgICAgc3RhdHVzLCBT UUwgPSBzZWxmLmdldF9zcWwoZ2lkLCBzaWQsIGRpZCwgc2NpZCwgc2VsZi5y ZXF1ZXN0KQorICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAg ICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNn PVNRTCkKKworICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4u ZXhlY3V0ZV9zY2FsYXIoU1FMKQorICAgICAgICAgICAgaWYgbm90IHN0YXR1 czoKKyAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vy cm9yKGVycm9ybXNnPXJlcykKKworICAgICAgICAgICAgIyBOZWVkIG9pZCB0 byBhZGQgb2JqZWN0IGluIHRoZSB0cmVlIGF0IGJyb3dzZXIuCisgICAgICAg ICAgICBiYXNlbnNwID0gc2VsZi5yZXF1ZXN0WydiYXNlbnNwJ10gaWYgKCdi YXNlbnNwJyBpbiBzZWxmLnJlcXVlc3QpIFwKKyAgICAgICAgICAgICAgICBl bHNlIE5vbmUKKyAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgi LyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2V0X29pZC5zcWwnXSks CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZW5zcD1i YXNlbnNwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5h bWU9c2VsZi5yZXF1ZXN0WyduYW1lJ10pCisgICAgICAgICAgICBzdGF0dXMs IHJlcyA9IHNlbGYuY29ubi5leGVjdXRlXzJkYXJyYXkoU1FMKQorICAgICAg ICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICByZXR1cm4g aW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKworICAgICAg ICAgICAgZm9pZCwgc2NpZCA9IHJlc1sncm93cyddWzBdCisKKyAgICAgICAg ICAgIHJldHVybiBqc29uaWZ5KAorICAgICAgICAgICAgICAgIG5vZGU9c2Vs Zi5ibHVlcHJpbnQuZ2VuZXJhdGVfYnJvd3Nlcl9ub2RlKAorICAgICAgICAg ICAgICAgICAgICBmb2lkLAorICAgICAgICAgICAgICAgICAgICBzY2lkLAor ICAgICAgICAgICAgICAgICAgICBzZWxmLnJlcXVlc3RbJ25hbWUnXSwKKyAg ICAgICAgICAgICAgICAgICAgaWNvbj0iaWNvbi1mb3JlaWduLXRhYmxlIgor ICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICkKKyAgICAgICAgZXhj ZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgcmV0dXJuIGludGVy bmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1zdHIoZSkpCisKKyAgICBAY2hl Y2tfcHJlY29uZGl0aW9uCisgICAgZGVmIGRlbGV0ZShzZWxmLCBnaWQsIHNp ZCwgZGlkLCBzY2lkLCBmb2lkKToKKyAgICAgICAgIiIiCisgICAgICAgIERy b3BzIHRoZSBGb3JlaWduIFRhYmxlLgorCisgICAgICAgIEFyZ3M6CisgICAg ICAgICAgICBnaWQ6IFNlcnZlciBHcm91cCBJZAorICAgICAgICAgICAgc2lk OiBTZXJ2ZXIgSWQKKyAgICAgICAgICAgIGRpZDogRGF0YWJhc2UgSWQKKyAg ICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJZAorICAgICAgICAgICAgZm9pZDog Rm9yZWlnbiBUYWJsZSBJZAorICAgICAgICAiIiIKKyAgICAgICAgaWYgc2Vs Zi5jbWQgPT0gJ2RlbGV0ZSc6CisgICAgICAgICAgICAjIFRoaXMgaXMgYSBj YXNjYWRlIG9wZXJhdGlvbgorICAgICAgICAgICAgY2FzY2FkZSA9IFRydWUK KyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGNhc2NhZGUgPSBGYWxzZQor CisgICAgICAgIHRyeToKKyAgICAgICAgICAgICMgRmV0Y2ggTmFtZSBhbmQg U2NoZW1hIE5hbWUgdG8gZGVsZXRlIHRoZSBmb3JlaWduIHRhYmxlLgorICAg ICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxm LnRlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJ2RlbGV0ZS5zcWwnXSksIHNjaWQ9c2NpZCwgZm9pZD1mb2lkKQor ICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV8y ZGFycmF5KFNRTCkKKyAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAg ICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJv cm1zZz1yZXMpCisKKyAgICAgICAgICAgIG5hbWUsIGJhc2Vuc3AgPSByZXNb J3Jvd3MnXVswXQorCisgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxh dGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlbGV0ZS5zcWwn XSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1u YW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2Vu c3A9YmFzZW5zcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjYXNjYWRlPWNhc2NhZGUpCisgICAgICAgICAgICBzdGF0dXMsIHJlcyA9 IHNlbGYuY29ubi5leGVjdXRlX3NjYWxhcihTUUwpCisgICAgICAgICAgICBp ZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5h bF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgICAgICBy ZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgICAgIHN1 Y2Nlc3M9MSwKKyAgICAgICAgICAgICAgICBpbmZvPWdldHRleHQoIkZvcmVp Z24gVGFibGUgZHJvcHBlZCIpLAorICAgICAgICAgICAgICAgIGRhdGE9ewor ICAgICAgICAgICAgICAgICAgICAnaWQnOiBmb2lkLAorICAgICAgICAgICAg ICAgICAgICAnc2NpZCc6IHNjaWQsCisgICAgICAgICAgICAgICAgICAgICdz aWQnOiBzaWQsCisgICAgICAgICAgICAgICAgICAgICdnaWQnOiBnaWQsCisg ICAgICAgICAgICAgICAgICAgICdkaWQnOiBkaWQKKyAgICAgICAgICAgICAg ICB9CisgICAgICAgICAgICApCisKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlv biBhcyBlOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9l cnJvcihlcnJvcm1zZz1zdHIoZSkpCisKKyAgICBAY2hlY2tfcHJlY29uZGl0 aW9uCisgICAgQHZhbGlkYXRlX3JlcXVlc3QKKyAgICBkZWYgdXBkYXRlKHNl bGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIGZvaWQpOgorICAgICAgICAiIiIK KyAgICAgICAgVXBkYXRlcyB0aGUgRm9yZWlnbiBUYWJsZS4KKworICAgICAg ICBBcmdzOgorICAgICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAgSWQKKyAg ICAgICAgICAgIHNpZDogU2VydmVyIElkCisgICAgICAgICAgICBkaWQ6IERh dGFiYXNlIElkCisgICAgICAgICAgICBzY2lkOiBTY2hlbWEgSWQKKyAgICAg ICAgICAgIGZvaWQ6IEZvcmVpZ24gVGFibGUgSWQKKyAgICAgICAgIiIiCisg ICAgICAgIHN0YXR1cywgU1FMID0gc2VsZi5nZXRfc3FsKGdpZCwgc2lkLCBk aWQsIHNjaWQsIHNlbGYucmVxdWVzdCwgZm9pZCkKKworICAgICAgICBpZiBu b3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZl cl9lcnJvcihlcnJvcm1zZz1TUUwpCisKKyAgICAgICAgdHJ5OgorICAgICAg ICAgICAgaWYgU1FMIGFuZCBTUUwuc3RyaXAoJ1xuJykgYW5kIFNRTC5zdHJp cCgnICcpOgorICAgICAgICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5j b25uLmV4ZWN1dGVfc2NhbGFyKFNRTCkKKyAgICAgICAgICAgICAgICBpZiBu b3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJu YWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKworICAgICAgICAgICAg ICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1w bGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJ2dldF9vaWQuc3FsJ10pLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBmb2lkPWZvaWQpCisgICAgICAg ICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV8yZGFy cmF5KFNRTCkKKyAgICAgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAg ICAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9y KGVycm9ybXNnPXJlcykKKworICAgICAgICAgICAgICAgIHNjaWQgPSByZXNb J3Jvd3MnXVswXVsnc2NpZCddCisKKyAgICAgICAgICAgICAgICByZXR1cm4g bWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgICAgICAgICBzdWNj ZXNzPTEsCisgICAgICAgICAgICAgICAgICAgIGluZm89IkZvcmVpZ24gVGFi bGUgdXBkYXRlZCIsCisgICAgICAgICAgICAgICAgICAgIGRhdGE9eworICAg ICAgICAgICAgICAgICAgICAgICAgJ2lkJzogZm9pZCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICdzY2lkJzogc2NpZCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICdzaWQnOiBzaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAn Z2lkJzogZ2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2RpZCc6IGRp ZAorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgKQor ICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXR1cm4gbWFr ZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgICAgICAgICBzdWNjZXNz PTEsCisgICAgICAgICAgICAgICAgICAgIGluZm89Ik5vdGhpbmcgdG8gdXBk YXRlIiwKKyAgICAgICAgICAgICAgICAgICAgZGF0YT17CisgICAgICAgICAg ICAgICAgICAgICAgICAnaWQnOiBmb2lkLAorICAgICAgICAgICAgICAgICAg ICAgICAgJ3NjaWQnOiBzY2lkLAorICAgICAgICAgICAgICAgICAgICAgICAg J3NpZCc6IHNpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICdnaWQnOiBn aWQsCisgICAgICAgICAgICAgICAgICAgICAgICAnZGlkJzogZGlkCisgICAg ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICApCisKKyAgICAg ICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgcmV0dXJu IGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1zdHIoZSkpCisKKyAg ICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVmIHNxbChzZWxmLCBnaWQs IHNpZCwgZGlkLCBzY2lkLCBmb2lkPU5vbmUpOgorICAgICAgICAiIiIKKyAg ICAgICAgUmV0dXJucyB0aGUgU1FMIGZvciB0aGUgRm9yZWlnbiBUYWJsZSBv YmplY3QuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIGdpZDogU2Vy dmVyIEdyb3VwIElkCisgICAgICAgICAgICBzaWQ6IFNlcnZlciBJZAorICAg ICAgICAgICAgZGlkOiBEYXRhYmFzZSBJZAorICAgICAgICAgICAgc2NpZDog U2NoZW1hIElkCisgICAgICAgICAgICBmb2lkOiBGb3JlaWduIFRhYmxlIElk CisgICAgICAgICIiIgorICAgICAgICBkYXRhID0gc2VsZi5fZmV0Y2hfcHJv cGVydGllcyhnaWQsIHNpZCwgZGlkLCBzY2lkLCBmb2lkLCBpbmhlcml0cz1U cnVlKQorCisgICAgICAgIGNvbF9kYXRhID0gW10KKyAgICAgICAgZm9yIGMg aW4gZGF0YVsnY29sdW1ucyddOgorICAgICAgICAgICAgaWYgKG5vdCAnaW5o ZXJpdGVkZnJvbScgaW4gYykgb3IgKGNbJ2luaGVyaXRlZGZyb20nXSBpcyBO b25lKToKKyAgICAgICAgICAgICAgICBjb2xfZGF0YS5hcHBlbmQoYykKKwor ICAgICAgICBkYXRhWydjb2x1bW5zJ10gPSBjb2xfZGF0YQorCisgICAgICAg IFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0 ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICdjcmVhdGUuc3FsJ10pLCBkYXRhPWRhdGEpCisKKyAgICAgICAgc3Fs X2hlYWRlciA9ICIiIi0tIHswfTogezF9CisKKy0tIERST1AgezB9IHsxfTsK KworIiIiLmZvcm1hdCgnRk9SRUlHTiBUQUJMRScsIGRhdGFbJ2Jhc2Vuc3An XSArICIuIiArIGRhdGFbJ25hbWUnXSkKKworICAgICAgICBTUUwgPSBzcWxf aGVhZGVyICsgU1FMCisKKyAgICAgICAgcmV0dXJuIGFqYXhfcmVzcG9uc2Uo cmVzcG9uc2U9U1FMLnN0cmlwKCdcbicpKQorCisgICAgQGNoZWNrX3ByZWNv bmRpdGlvbgorICAgIEB2YWxpZGF0ZV9yZXF1ZXN0CisgICAgZGVmIG1zcWwo c2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgZm9pZD1Ob25lKToKKyAgICAg ICAgIiIiCisgICAgICAgIFJldHVybnMgdGhlIG1vZGlmaWVkIFNRTC4KKwor ICAgICAgICBBcmdzOgorICAgICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAg SWQKKyAgICAgICAgICAgIHNpZDogU2VydmVyIElkCisgICAgICAgICAgICBk aWQ6IERhdGFiYXNlIElkCisgICAgICAgICAgICBzY2lkOiBTY2hlbWEgSWQK KyAgICAgICAgICAgIGZvaWQ6IEZvcmVpZ24gVGFibGUgSWQKKyAgICAgICAg ICAgIG5hbWU6IEZvcmVpZ24gVGFibGUgTmFtZQorICAgICAgICAgICAgZnRz cnZuYW1lOiBGb3JlaWduIFNlcnZlciBOYW1lCisKKyAgICAgICAgUmV0dXJu czoKKyAgICAgICAgICAgIFNRTCBzdGF0ZW1lbnRzIHRvIGNyZWF0ZS91cGRh dGUgdGhlIEZvcmVpZ24gVGFibGUuCisgICAgICAgICIiIgorICAgICAgICBz dGF0dXMsIFNRTCA9IHNlbGYuZ2V0X3NxbChnaWQsIHNpZCwgZGlkLCBzY2lk LCBzZWxmLnJlcXVlc3QsIGZvaWQpCisgICAgICAgIGlmIHN0YXR1czoKKyAg ICAgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAg ICAgICAgICAgZGF0YT1TUUwuc3RyaXAoJ1xuJyksCisgICAgICAgICAgICAg ICAgc3RhdHVzPTIwMAorICAgICAgICAgICAgKQorICAgICAgICBlbHNlOgor ICAgICAgICAgICAgcmV0dXJuIFNRTAorCisgICAgZGVmIGdldF9zcWwoc2Vs ZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgZGF0YSwgZm9pZD1Ob25lKToKKyAg ICAgICAgIiIiCisgICAgICAgIEdlbnJhdGVzIHRoZSBTUUwgc3RhdGVtZW50 cyB0byBjcmVhdGUvdXBkYXRlIHRoZSBGb3JlaWduIFRhYmxlLgorCisgICAg ICAgIEFyZ3M6CisgICAgICAgICAgICBnaWQ6IFNlcnZlciBHcm91cCBJZAor ICAgICAgICAgICAgc2lkOiBTZXJ2ZXIgSWQKKyAgICAgICAgICAgIGRpZDog RGF0YWJhc2UgSWQKKyAgICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJZAorICAg ICAgICAgICAgZm9pZDogRm9yZWlnbiBUYWJsZSBJZAorICAgICAgICAiIiIK KyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaWYgZm9pZCBpcyBub3QgTm9u ZToKKyAgICAgICAgICAgICAgICBvbGRfZGF0YSA9IHNlbGYuX2ZldGNoX3By b3BlcnRpZXMoZ2lkLCBzaWQsIGRpZCwgc2NpZCwgZm9pZCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5o ZXJpdHM9VHJ1ZSkKKworICAgICAgICAgICAgICAgICMgUHJlcGFyZSBkaWN0 IG9mIGNvbHVtbnMgd2l0aCBrZXkgPSBjb2x1bW4ncyBhdHRudW0KKyAgICAg ICAgICAgICAgICAjIFdpbGwgdXNlIHRoaXMgaW4gdGhlIHVwZGF0ZSB0ZW1w bGF0ZSB3aGVuIGFueSBjb2x1bW4gaXMKKyAgICAgICAgICAgICAgICAjIGNo YW5nZWQsIHRvIGlkZW50aWZ5IHRoZSBjb2x1bW5zLgorICAgICAgICAgICAg ICAgIGNvbF9kYXRhID0ge30KKyAgICAgICAgICAgICAgICBmb3IgYyBpbiBv bGRfZGF0YVsnY29sdW1ucyddOgorICAgICAgICAgICAgICAgICAgICBjb2xf ZGF0YVtjWydhdHRudW0nXV0gPSBjCisKKyAgICAgICAgICAgICAgICBvbGRf ZGF0YVsnY29sdW1ucyddID0gY29sX2RhdGEKKworICAgICAgICAgICAgICAg IFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgICAgICAgICAgICAg Ii8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ3VwZGF0ZS5zcWwnXSks CisgICAgICAgICAgICAgICAgICAgIGRhdGE9ZGF0YSwgb19kYXRhPW9sZF9k YXRhCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgZWxzZToKKyAg ICAgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4o W3NlbGYudGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICdjcmVhdGUuc3FsJ10pLCBkYXRh PWRhdGEpCisgICAgICAgICAgICByZXR1cm4gVHJ1ZSwgU1FMCisKKyAgICAg ICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgcmV0dXJu IEZhbHNlLCBlCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVm IGRlcGVuZGVudHMoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgZm9pZCk6 CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIGdldCB0aGUg ZGVwZW5kZW50cyBhbmQgcmV0dXJuIGFqYXggcmVzcG9uc2UKKyAgICAgICAg Zm9yIHRoZSBGb3JlaWduIFRhYmxlIG9iamVjdC4KKworICAgICAgICBBcmdz OgorICAgICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAgSWQKKyAgICAgICAg ICAgIHNpZDogU2VydmVyIElkCisgICAgICAgICAgICBkaWQ6IERhdGFiYXNl IElkCisgICAgICAgICAgICBzY2lkOiBTY2hlbWEgSWQKKyAgICAgICAgICAg IGZvaWQ6IEZvcmVpZ24gVGFibGUgSWQKKyAgICAgICAgIiIiCisgICAgICAg IGRlcGVuZGVudHNfcmVzdWx0ID0gc2VsZi5nZXRfZGVwZW5kZW50cyhzZWxm LmNvbm4sIGZvaWQpCisgICAgICAgIHJldHVybiBhamF4X3Jlc3BvbnNlKAor ICAgICAgICAgICAgcmVzcG9uc2U9ZGVwZW5kZW50c19yZXN1bHQsCisgICAg ICAgICAgICBzdGF0dXM9MjAwCisgICAgICAgICkKKworICAgIEBjaGVja19w cmVjb25kaXRpb24KKyAgICBkZWYgZGVwZW5kZW5jaWVzKHNlbGYsIGdpZCwg c2lkLCBkaWQsIHNjaWQsIGZvaWQpOgorICAgICAgICAiIiIKKyAgICAgICAg VGhpcyBmdW5jdGlvbiBnZXQgdGhlIGRlcGVuZGVuY2llcyBhbmQgcmV0dXJu IGFqYXggcmVzcG9uc2UKKyAgICAgICAgZm9yIHRoZSAgRm9yZWlnbiBUYWJs ZSBvYmplY3QuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIGdpZDog U2VydmVyIEdyb3VwIElkCisgICAgICAgICAgICBzaWQ6IFNlcnZlciBJZAor ICAgICAgICAgICAgZGlkOiBEYXRhYmFzZSBJZAorICAgICAgICAgICAgc2Np ZDogU2NoZW1hIElkCisgICAgICAgICAgICBmb2lkOiBGb3JlaWduIFRhYmxl IElkCisgICAgICAgICIiIgorICAgICAgICBkZXBlbmRlbmNpZXNfcmVzdWx0 ID0gc2VsZi5nZXRfZGVwZW5kZW5jaWVzKHNlbGYuY29ubiwgZm9pZCkKKyAg ICAgICAgcmV0dXJuIGFqYXhfcmVzcG9uc2UoCisgICAgICAgICAgICByZXNw b25zZT1kZXBlbmRlbmNpZXNfcmVzdWx0LAorICAgICAgICAgICAgc3RhdHVz PTIwMAorICAgICAgICApCisKKyAgICBkZWYgX2ZldGNoX3Byb3BlcnRpZXMo c2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgZm9pZCwgaW5oZXJpdHM9RmFs c2UpOgorICAgICAgICAiIiIKKyAgICAgICAgUmV0dXJucyB0aGUgRm9yZWln biBUYWJsZSBwcm9wZXJ0aWVzIHdoaWNoIHdpbGwgYmUgdXNlZCBpbgorICAg ICAgICBwcm9wZXJ0aWVzLCBzcWwgYW5kIGdldF9zcWwgZnVuY3Rpb25zLgor CisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBnaWQ6IFNlcnZlciBHcm91 cCBJZAorICAgICAgICAgICAgc2lkOiBTZXJ2ZXIgSWQKKyAgICAgICAgICAg IGRpZDogRGF0YWJhc2UgSWQKKyAgICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJ ZAorICAgICAgICAgICAgZm9pZDogRm9yZWlnbiBUYWJsZSBJZAorICAgICAg ICAgICAgaW5oZXJpdHM6IElmIFRydWUgdGhlbiBpbmhlcml0ZWQgdGFibGUg d2lsbCBiZSBmZXRjaGVkIGZyb20KKyAgICAgICAgICAgICAgICAgICAgICBk YXRhYmFzZQorCisgICAgICAgIFJldHVybnM6CisKKyAgICAgICAgIiIiCisg ICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50 ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICdwcm9wZXJ0aWVzLnNxbCddKSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHNjaWQ9c2NpZCwgZm9pZD1mb2lkKQorICAgICAg ICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQor ICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIGlu dGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAg ZGF0YSA9IHJlc1sncm93cyddWzBdCisKKyAgICAgICAgIyBHZXQgZm9ybWF0 dGVkIFNlY3VyaXR5IExhYmVscworICAgICAgICBpZiAnc2VjbGFiZWxzJyBp biBkYXRhOgorICAgICAgICAgICAgZGF0YS51cGRhdGUocGFyc2Vfc2VjX2xh YmVsc19mcm9tX2RiKGRhdGFbJ3NlY2xhYmVscyddKSkKKworICAgICAgICAj IEdldCBmb3JtYXR0ZWQgVmFyaWFibGVzCisgICAgICAgIGlmICdmdG9wdGlv bnMnIGluIGRhdGE6CisgICAgICAgICAgICBkYXRhLnVwZGF0ZSh7J3N0cmZ0 b3B0aW9ucyc6IGRhdGFbJ2Z0b3B0aW9ucyddfSkKKyAgICAgICAgICAgIGRh dGEudXBkYXRlKHNlbGYuX3BhcnNlX3ZhcmlhYmxlc19mcm9tX2RiKGRhdGFb J2Z0b3B0aW9ucyddKSkKKworICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxh dGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2V0X2NvbnN0cmFpbnRz LnNxbCddKSwgZm9pZD1mb2lkKQorICAgICAgICBzdGF0dXMsIGNvbnMgPSBz ZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKKyAgICAgICAgaWYgbm90IHN0 YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJy b3IoZXJyb3Jtc2c9Y29ucykKKworICAgICAgICBpZiBjb25zIGFuZCAncm93 cycgaW4gY29uczoKKyAgICAgICAgICAgIGRhdGFbJ2NvbnN0cmFpbnRzJ10g PSBjb25zWydyb3dzJ10KKworICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxh dGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2V0X2NvbHVtbnMuc3Fs J10pLCBmb2lkPWZvaWQpCisgICAgICAgIHN0YXR1cywgY29scyA9IHNlbGYu Y29ubi5leGVjdXRlX2RpY3QoU1FMKQorICAgICAgICBpZiBub3Qgc3RhdHVz OgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihl cnJvcm1zZz1jb2xzKQorCisgICAgICAgICMgVGhlIExlbmd0aCBhbmQgdGhl IHByZWNpc2lvbiBvZiB0aGUgRGF0YXR5cGUgc2hvdWxkIGJlIHNlcGFyYXRl ZC4KKyAgICAgICAgIyBUaGUgRm9ybWF0IHdlIGdldHRpbmcgZnJvbSBkYXRh YmFzZSBpczogbnVtZXJpYygxLDEpCisgICAgICAgICMgU28sIHdlIG5lZWQg dG8gc2VwYXJhdGUgaXQgYXMgTGVuZ3RoOiAxLCBQcmVjaXNpb246IDEKKyAg ICAgICAgZm9yIGMgaW4gY29sc1sncm93cyddOgorICAgICAgICAgICAgaWYg Y1snZnVsbHR5cGUnXSAhPSAnJyBhbmQgY1snZnVsbHR5cGUnXS5maW5kKCIo IikgPiAwOgorICAgICAgICAgICAgICAgIHN1YnN0ciA9IGNbJ2Z1bGx0eXBl J11bY1snZnVsbHR5cGUnXS5maW5kKCIoIikgKyAxOmxlbigKKyAgICAgICAg ICAgICAgICAgICAgY1snZnVsbHR5cGUnXSkgLSAxXQorICAgICAgICAgICAg ICAgIHR5cGxlbiA9IHN1YnN0ci5zcGxpdCgiLCIpCisgICAgICAgICAgICAg ICAgaWYgbGVuKHR5cGxlbikgPiAxOgorICAgICAgICAgICAgICAgICAgICBj Wyd0eXBsZW4nXSA9IGludCh0eXBsZW5bMF0pCisgICAgICAgICAgICAgICAg ICAgIGNbJ3ByZWNpc2lvbiddID0gaW50KHR5cGxlblsxXSkKKyAgICAgICAg ICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBjWyd0eXBsZW4n XSA9IGludCh0eXBsZW4pCisgICAgICAgICAgICAgICAgICAgIGNbJ3ByZWNp c2lvbiddID0gJycKKworICAgICAgICBpZiBjb2xzIGFuZCAncm93cycgaW4g Y29sczoKKyAgICAgICAgICAgIGRhdGFbJ2NvbHVtbnMnXSA9IGNvbHNbJ3Jv d3MnXQorCisgICAgICAgIGRhdGFbJ3N0cmNvbHVtbiddID0gJycKKyAgICAg ICAgc3RyX2NvbHMgPSBbXQorICAgICAgICBpZiAnY29sdW1ucycgaW4gZGF0 YToKKyAgICAgICAgICAgIGZvciBjIGluIGRhdGFbJ2NvbHVtbnMnXToKKyAg ICAgICAgICAgICAgICBzdHJfY29scy5hcHBlbmQoY1snc3RyY29sdW1uJ10p CisgICAgICAgICAgICBkYXRhWydzdHJjb2x1bW4nXSA9ICcsICcuam9pbihz dHJfY29scykKKworICAgICAgICAjIEdldCBJbmhlcml0ZWQgdGFibGUgbmFt ZXMgZnJvbSB0aGVpciBPSUQKKyAgICAgICAgaWYgaW5oZXJpdHM6CisgICAg ICAgICAgICBpZiAnaW5oZXJpdHMnIGluIGRhdGEgYW5kIGRhdGFbJ2luaGVy aXRzJ106CisgICAgICAgICAgICAgICAgaW5oZXJpdHMgPSB0dXBsZShbaW50 KHgpIGZvciB4IGluIGRhdGFbJ2luaGVyaXRzJ11dKQorICAgICAgICAgICAg ICAgIGlmIGxlbihpbmhlcml0cykgPT0gMToKKyAgICAgICAgICAgICAgICAg ICAgaW5oZXJpdHMgPSAiKCIgKyBzdHIoaW5oZXJpdHNbMF0pICsgIikiCisK KyAgICAgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpv aW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnZXRfdGFibGVzLnNxbCdd KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0 cmVsaWQ9aW5oZXJpdHMpCisgICAgICAgICAgICAgICAgc3RhdHVzLCByZXMg PSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKKworICAgICAgICAgICAg ICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAgICAgIHJldHVy biBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAg ICAgICAgICAgICAgaWYgJ2luaGVyaXRzJyBpbiByZXNbJ3Jvd3MnXVswXToK KyAgICAgICAgICAgICAgICAgICAgZGF0YVsnaW5oZXJpdHMnXSA9IHJlc1sn cm93cyddWzBdWydpbmhlcml0cyddCisKKyAgICAgICAgcmV0dXJuIGRhdGEK KworICAgIGRlZiBfcGFyc2VfdmFyaWFibGVzX2Zyb21fZGIoc2VsZiwgZGJf dmFyaWFibGVzKToKKyAgICAgICAgIiIiCisgICAgICAgIEZ1bmN0aW9uIHRv IGZvcm1hdCB0aGUgb3V0cHV0IGZvciB2YXJpYWJsZXMuCisKKyAgICAgICAg QXJnczoKKyAgICAgICAgICAgIGRiX3ZhcmlhYmxlczogVmFyaWFibGUgb2Jq ZWN0CisKKyAgICAgICAgICAgICAgICBFeHBlY3RlZCBPYmplY3QgRm9ybWF0 OgorICAgICAgICAgICAgICAgICAgICBbJ29wdGlvbjE9dmFsdWUxJywgLi5d CisgICAgICAgICAgICAgICAgd2hlcmU6CisgICAgICAgICAgICAgICAgICAg IHVzZXJfbmFtZSBhbmQgZGF0YWJhc2UgYXJlIG9wdGlvbmFsCisgICAgICAg IFJldHVybnM6CisgICAgICAgICAgICBWYXJpYWJsZSBPYmplY3QgaW4gYmVs b3cgZm9ybWF0OgorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg ICAndmFyaWFibGVzJzogWworICAgICAgICAgICAgICAgICAgICB7J25hbWUn OiAndmFyX25hbWUnLCAndmFsdWUnOiAndmFyX3ZhbHVlJywKKyAgICAgICAg ICAgICAgICAgICAgJ3VzZXJfbmFtZSc6ICd1c2VyX25hbWUnLCAnZGF0YWJh c2UnOiAnZGF0YWJhc2VfbmFtZSd9LAorICAgICAgICAgICAgICAgICAgICAu Li5dCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHdoZXJl OgorICAgICAgICAgICAgICAgICAgICB1c2VyX25hbWUgYW5kIGRhdGFiYXNl IGFyZSBvcHRpb25hbAorICAgICAgICAiIiIKKyAgICAgICAgdmFyaWFibGVz X2xzdCA9IFtdCisKKyAgICAgICAgaWYgZGJfdmFyaWFibGVzIGlzIG5vdCBO b25lOgorICAgICAgICAgICAgZm9yIHJvdyBpbiBkYl92YXJpYWJsZXM6Cisg ICAgICAgICAgICAgICAgdmFyX25hbWUsIHZhcl92YWx1ZSA9IHJvdy5zcGxp dCgiPSIpCisgICAgICAgICAgICAgICAgIyBCZWNhdXNlIHdlIHNhdmUgYXMg Ym9vbGVhbiBzdHJpbmcgaW4gZGIgc28gaXQgbmVlZHMKKyAgICAgICAgICAg ICAgICAjIGNvbnZlcnNpb24KKyAgICAgICAgICAgICAgICBpZiB2YXJfdmFs dWUgPT0gJ2ZhbHNlJyBvciB2YXJfdmFsdWUgPT0gJ29mZic6CisgICAgICAg ICAgICAgICAgICAgIHZhcl92YWx1ZSA9IEZhbHNlCisKKyAgICAgICAgICAg ICAgICB2YXJfZGljdCA9IHsnb3B0aW9uJzogdmFyX25hbWUsICd2YWx1ZSc6 IHZhcl92YWx1ZX0KKworICAgICAgICAgICAgICAgIHZhcmlhYmxlc19sc3Qu YXBwZW5kKHZhcl9kaWN0KQorCisgICAgICAgIHJldHVybiB7ImZ0b3B0aW9u cyI6IHZhcmlhYmxlc19sc3R9CisKK0ZvcmVpZ25UYWJsZVZpZXcucmVnaXN0 ZXJfbm9kZV92aWV3KGJsdWVwcmludCkKZGlmZiAtLWdpdCBhL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL2ZvcmVpZ25fdGFibGVzL3N0YXRpYy9pbWcvY29sbC1mb3JlaWdu LXRhYmxlLnBuZyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3N0 YXRpYy9pbWcvY29sbC1mb3JlaWduLXRhYmxlLnBuZwpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwLi5kYzFmNzQyYmJjYTA1OTgwZjNjNGNiZjNjMTZhZjBlMGNm OWFmYTQxCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCA0OTIKemNtVjxJMFRj ZC1QKTxoOzNLfExrMDAwZTFOSkxUcTAwMG1HMDAwbU8we3tSM0NAbHxEMDAw MDFiNWNoXzBJdHApCno9PlB4I3g9PjcxTVBzQDRBKGlLZiZpPDZvYEt7SVIl R35QUzxMQm4qPWpQXy0jbnxSe3gjJSNRPSFuaCFRbjIhfgp6KSRRSGctR2pe aWRkQjsyITEtM1BeR1UxbEoqRGsycDZlJT4+RTdQbmdVa0kmdE1FT2Y/SUBZ KS17MFRqO15PMXUKejxLXlkkaHJzOUg7TllqSHI+dn4zP0NrOUI/KFhVNz5F WXF3cmx6Sy1zSG07MnQqQGBJPmd3dXslSmIqdj1qLWUxCno9Oy1MRnNqMlZw QEEye1I/ZHxRVnM7YVFDdShHblU8bUJZPUBiRylhYCl8UGJENEZQcXBUIzJw MDAwNFdRY2hDPAp6SzwzekgwMDAwMVZvT0l2MEVoKTBOQntyOzMyO2JSYXt2 R2Y2OTUxVTY5RTk0b0VRS0EwMChxUU8rXlJXMH57NDcKekNWYzslY0tgcVlv PUhTT1IyYjc7JiVGLTlGYnFifmReQ2E5RjV5PVEzSmhVdG1RMWRNIXUhNyRQ NzZaUjxJUiFmCno4MnJZSmdHRldDYSNoejJAZjZ6aXpkPGBRQEgyelckMj1u dUhDJSQ0P1QobTJBbDdnJD1FNVl8aUFYZks3c0VqOwp6UExpYDJKYz1ReTA0 dnNNPSsmXmRIK1lkREpDbCtjRVFieVVlSUghOHF9TCNGMW9rMj80UWtOblBU KHFUYFhPVFEKaTxESDQ4a2xOVU5aK2A9TShoVW1tSztSWXQwMDAwPE1OVU1u TFNUWD1UbHZ1ZAoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0 IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvc3RhdGljL2ltZy9m b3JlaWduLXRhYmxlLnBuZyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFi bGVzL3N0YXRpYy9pbWcvZm9yZWlnbi10YWJsZS5wbmcKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMC4uNTNjMTMzODg1YTBjMGM3MDUwZTRjODU4MGFkZmQ3NWY4 Y2VhYTg1MgpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgNTYzCnpjbVYtMzA/ aHIxUCk8aDszS3xMazAwMGUxTkpMVHEwMDBtRzAwMG1PMHt7UjNDQGx8RDAw MDAxYjVjaF8wSXRwKQp6PT5QeCMpbGZgU01kYWs8QShpS2koRXBPcGA9Wm5K eTRkWn0tfDY0dT1qRzwtPUh9K3c7cE1FKD1WUCh4RX1RNiEKeiY7TnpZeyhp eyhiO0o1PnpXOENkX0V4ZzxPUlZyZnJ8dmhQPkBBJD9DWWI0ayU+OFM9Xyg3 KWJIbGdlO29hKGdKCno/JW16cC1ybkJkLXswV2k7Tmp1bjteTn10PEt5TSE8 JWhyTD07LUxfPkZNWF49YyVjd3RnTmk7P0NrQ0I/ZUZqSgp6Pmd3dkpyPkNm PnNJOUg3dWRsRGA+K0E2RkBiZEVWPyhYaVp0RTtmRXUoN2VSdmErKUFAJHZL WF5ZISlod1k5Yk8Kel9WKVByX19uc1R4Vlg2WV94RHQjS1JvfmQwMERHVFBF IUN0PUdiTmMwMDA0RU9HaVdpaHlAKTswMDAwOWE3YkJtCnowMDBYVTAwMFhV MFJXbnU3eXRrTzJYc2tJTUYtbWg5MkY9ZWxKV21yMDAwMldOa2w8Wjd9SGhI LUVNK0Y1QyEwIQp6IWFgU09FITUmcU9OJiUodz9JVE9hVDlIX0c0dVpLPFNl eHAmZlI9RG5hbUxhP25WZCE0PyFyU18pKTEqZzQpQ1EKekRiMWNJRlpweWZV a3IpeVlucl89Nno/QkBQJWY5JT1XNHpBYGNgSXUra1dYMGpUfUhWS2tXdUpD SSZUTWd7bldhCnp0dXx5TUJJKzRAOXUwKnNCV3NDYVJvOG9AMDNkWHdiUFZo RXE/MisxbDNac2EyRyFJTWNSNVZUJGFObD9vclJkRgp6MExhTHQ0RTZiITt+ X1VJTmIrWkorOytXQEwpU29pQFBxayh8MF95ejZ3fCZRUXs/fnYwMDJvdlBE SExrVjFuRmgKQkNuRXA9CgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYg LS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0 ZXMvZm9yZWlnbl90YWJsZXMvanMvZm9yZWlnbl90YWJsZXMuanMgYi93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90 YWJsZXMvanMvZm9yZWlnbl90YWJsZXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMC4uODg2NWRjOQotLS0gL2Rldi9udWxsCisrKyBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRlcy9mb3Jl aWduX3RhYmxlcy9qcy9mb3JlaWduX3RhYmxlcy5qcwpAQCAtMCwwICsxLDY0 MiBAQAorLyogQ3JlYXRlIGFuZCBSZWdpc3RlciBGb3JlaWduIFRhYmxlIENv bGxlY3Rpb24gYW5kIE5vZGUuICovCitkZWZpbmUoCisgICAgICAgIFsnanF1 ZXJ5JywgJ3VuZGVyc2NvcmUnLCAndW5kZXJzY29yZS5zdHJpbmcnLCAncGdh ZG1pbicsICdwZ2FkbWluLmJyb3dzZXInLCAnYWxlcnRpZnknLCAncGdhZG1p bi5icm93c2VyLmNvbGxlY3Rpb24nXSwKK2Z1bmN0aW9uKCQsIF8sIFMsIHBn QWRtaW4sIHBnQnJvd3NlciwgYWxlcnRpZnkpIHsKKworICBpZiAoIXBnQnJv d3Nlci5Ob2Rlc1snY29sbC1mb3JlaWduLXRhYmxlJ10pIHsKKyAgICB2YXIg Zm9yZWlnbnRhYmxlID0gcGdBZG1pbi5Ccm93c2VyLk5vZGVzWydjb2xsLWZv cmVpZ24tdGFibGUnXSA9CisgICAgICBwZ0FkbWluLkJyb3dzZXIuQ29sbGVj dGlvbi5leHRlbmQoeworICAgICAgICBub2RlOiAnZm9yZWlnbi10YWJsZScs CisgICAgICAgIGxhYmVsOiAne3sgXygnRm9yZWlnbiBUYWJsZXMnKSB9fScs CisgICAgICAgIHR5cGU6ICdjb2xsLWZvcmVpZ24tdGFibGUnLAorICAgICAg ICBjb2x1bW5zOiBbJ25hbWUnLCAnb3duZXInLCAnZGVzY3JpcHRpb24nXQor ICAgICAgfSk7CisgIH07CisKKyAgLy8gU2VjdXJpdHkgTW9kZWwKKyAgdmFy IFNlY3VyaXR5TW9kZWwgPSBCYWNrZm9ybS5TZWN1cml0eU1vZGVsID0gcGdB ZG1pbi5Ccm93c2VyLk5vZGUuTW9kZWwuZXh0ZW5kKHsKKyAgICBkZWZhdWx0 czogeworICAgICAgcHJvdmlkZXI6IG51bGwsCisgICAgICBsYWJlbDogbnVs bAorICAgIH0sCisgICAgc2NoZW1hOiBbeworICAgICAgaWQ6ICdwcm92aWRl cicsIGxhYmVsOiAne3sgXygnUHJvdmlkZXInKSB9fScsCisgICAgICB0eXBl OiAndGV4dCcsIGVkaXRhYmxlOiB0cnVlLCBjZWxsSGVhZGVyQ2xhc3Nlczon d2lkdGhfcGVyY2VudF81MCcKKyAgICB9LHsKKyAgICAgIGlkOiAnc2VjdXJp dHlfbGFiZWwnLCBsYWJlbDogJ3t7IF8oJ1NlY3VyaXR5IExhYmVsJykgfX0n LAorICAgICAgdHlwZTogJ3RleHQnLCBlZGl0YWJsZTogdHJ1ZSwgY2VsbEhl YWRlckNsYXNzZXM6J3dpZHRoX3BlcmNlbnRfNTAnCisgICAgfV0sCisgICAg dmFsaWRhdGU6IGZ1bmN0aW9uKCkgeworICAgICAgdmFyIGVyciA9IHt9LAor ICAgICAgICAgIGVycm1zZyA9IG51bGwsCisgICAgICAgICAgZGF0YSA9IHRo aXMudG9KU09OKCk7CisKKyAgICAgIGlmIChfLmlzVW5kZWZpbmVkKGRhdGEu bGFiZWwpIHx8CisgICAgICAgIF8uaXNOdWxsKGRhdGEubGFiZWwpIHx8Cisg ICAgICAgIFN0cmluZyhkYXRhLmxhYmVsKS5yZXBsYWNlKC9eXHMrfFxzKyQv ZywgJycpID09ICcnKSB7CisgICAgICAgIHJldHVybiBfKCJQbGVhc2Ugc3Bl Y2lmeSB0aGUgdmFsdWUgZm9yIGFsbCB0aGUgc2VjdXJpdHkgcHJvdmlkZXJz LiIpOworICAgICAgfQorICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorICB9 KTsKKworICAvLyBJbnRlZ2VyIENlbGwgZm9yIENvbHVtbnMgTGVuZ3RoIGFu ZCBQcmVjaXNpb24KKyAgdmFyIEludGVnZXJEZXBDZWxsID0gQmFja2dyaWQu SW50ZWdlckNlbGwuZXh0ZW5kKHsKKyAgICAgIGluaXRpYWxpemU6IGZ1bmN0 aW9uKCkgeworICAgICAgICBCYWNrZ3JpZC5OdW1iZXJDZWxsLnByb3RvdHlw ZS5pbml0aWFsaXplLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CisgICAgICAg IEJhY2tncmlkLkV4dGVuc2lvbi5EZXBlbmRlbnRDZWxsLnByb3RvdHlwZS5p bml0aWFsaXplLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CisgICAgICB9LAor ICAgICAgdXBkYXRlVUlEZXBzOiBmdW5jdGlvbiAoKSB7CisgICAgICAgIHRo aXMuJGVsLmVtcHR5KCk7CisgICAgICAgIHZhciBtb2RlbCA9IHRoaXMubW9k ZWw7CisgICAgICAgIHZhciBjb2x1bW4gPSB0aGlzLmNvbHVtbjsKKyAgICAg ICAgZWRpdGFibGUgPSB0aGlzLmNvbHVtbi5nZXQoImVkaXRhYmxlIik7CisK KyAgICAgICAgaXNfZWRpdGFibGUgPSBfLmlzRnVuY3Rpb24oZWRpdGFibGUp ID8gISFlZGl0YWJsZS5hcHBseShjb2x1bW4sIFttb2RlbF0pIDogISFlZGl0 YWJsZTsKKyAgICAgICAgaWYgKGlzX2VkaXRhYmxlKXsgdGhpcy4kZWwuYWRk Q2xhc3MoImVkaXRhYmxlIik7IH0KKyAgICAgICAgZWxzZSB7IHRoaXMuJGVs LnJlbW92ZUNsYXNzKCJlZGl0YWJsZSIpOyB9CisKKyAgICAgICAgdGhpcy5k ZWxlZ2F0ZUV2ZW50cygpOworICAgICAgICByZXR1cm4gdGhpczsKKyAgICAg IH0sCisgICAgICByZW1vdmU6IEJhY2tncmlkLkV4dGVuc2lvbi5EZXBlbmRl bnRDZWxsLnByb3RvdHlwZS5yZW1vdmUKKyAgICB9KTsKKworCisgIC8vIENv bHVtbnMgTW9kZWwKKyAgdmFyIENvbHVtbnNNb2RlbCA9IHBnQWRtaW4uQnJv d3Nlci5Ob2RlLk1vZGVsLmV4dGVuZCh7CisgICAgaWRBdHRyaWJ1dGU6ICdh dHRudW0nLAorICAgIGRlZmF1bHRzOiB7CisgICAgICBhdHRuYW1lOiB1bmRl ZmluZWQsCisgICAgICBkYXRhdHlwZTogdW5kZWZpbmVkLAorICAgICAgdHlw bGVuOiB1bmRlZmluZWQsCisgICAgICBwcmVjaXNpb246IHVuZGVmaW5lZCwK KyAgICAgIHR5cGRlZmF1bHQ6IHVuZGVmaW5lZCwKKyAgICAgIGF0dG5vdG51 bGw6IHVuZGVmaW5lZCwKKyAgICAgIGNvbGxuYW1lOiB1bmRlZmluZWQsCisg ICAgICBhdHRudW06IHVuZGVmaW5lZCwKKyAgICAgIGluaGVyaXRlZGZyb206 IHVuZGVmaW5lZCwKKyAgICAgIGluaGVyaXRlZGlkOiB1bmRlZmluZWQsCisg ICAgfSwKKyAgICB0eXBlX29wdGlvbnM6IHVuZGVmaW5lZCwKKyAgICBzY2hl bWE6IFt7CisgICAgICAgIGlkOiAnYXR0bmFtZScsIGxhYmVsOid7eyBfKCdO YW1lJykgfX0nLCBjZWxsOiAnc3RyaW5nJywgdHlwZTogJ3RleHQnLAorICAg ICAgICBlZGl0YWJsZTogdHJ1ZSwgY2VsbEhlYWRlckNsYXNzZXM6ICd3aWR0 aF9wZXJjZW50XzIwJworICAgICAgfSx7CisgICAgICAgIGlkOiAnZGF0YXR5 cGUnLCBsYWJlbDone3sgXygnRGF0YSBUeXBlJykgfX0nLCBjZWxsOiAnbm9k ZS1hamF4LW9wdGlvbnMnLAorICAgICAgICBjb250cm9sOiAnbm9kZS1hamF4 LW9wdGlvbnMnLCB0eXBlOiAndGV4dCcsIHVybDogJ2dldF90eXBlcycsCisg ICAgICAgIGVkaXRhYmxlOiB0cnVlLCBjZWxsSGVhZGVyQ2xhc3NlczogJ3dp ZHRoX3BlcmNlbnRfMjAnLAorICAgICAgICB0cmFuc2Zvcm06IGZ1bmN0aW9u KGQsIHNlbGYpeworICAgICAgICAgICAgc2VsZi5tb2RlbC50eXBlX29wdGlv bnMgPSBkOworICAgICAgICAgICAgcmV0dXJuIGQ7CisgICAgICAgICAgfQor ICAgICAgfSx7CisgICAgICAgIGlkOiAndHlwbGVuJywgbGFiZWw6J3t7IF8o J0xlbmd0aCcpIH19JywKKyAgICAgICAgY2VsbDogSW50ZWdlckRlcENlbGws CisgICAgICAgIHR5cGU6ICd0ZXh0JywgZGVwczogWydkYXRhdHlwZSddLAor ICAgICAgICBlZGl0YWJsZTogZnVuY3Rpb24obSkgeworICAgICAgICAvLyBX ZSB3aWxsIHN0b3JlIHR5cGUgZnJvbSBzZWxlY3RlZCBmcm9tIGNvbWJvYm94 CisgICAgICAgIC8vXy5pc1VuZGVmaW5lZChtLmlzTmV3KSA/IGZhbHNlIDog bS5pc05ldygpOworICAgICAgICB2YXIgb2ZfdHlwZSA9IG0uZ2V0KCdkYXRh dHlwZScpOworICAgICAgICBpZihtLnR5cGVfb3B0aW9ucykgeworICAgICAg ICAgIG0uc2V0KCdpc190bGVuZ3RoJywgZmFsc2UsIHtzaWxlbnQ6IHRydWV9 KTsKKworICAgICAgICAgIC8vIGl0ZXJhdGluZyBvdmVyIGFsbCB0aGUgdHlw ZXMKKyAgICAgICAgICBfLmVhY2gobS50eXBlX29wdGlvbnMsIGZ1bmN0aW9u KG8pIHsKKyAgICAgICAgICAgIC8vIGlmIHR5cGUgZnJvbSBzZWxlY3RlZCBm cm9tIGNvbWJvYm94IG1hdGNoZXMgaW4gb3B0aW9ucworICAgICAgICAgICAg aWYgKCBvZl90eXBlID09IG8udmFsdWUgKSB7CisgICAgICAgICAgICAgICAg Ly8gaWYgbGVuZ3RoIGlzIGFsbG93ZWQgZm9yIHNlbGVjdGVkIHR5cGUKKyAg ICAgICAgICAgICAgICBpZihvLmxlbmd0aCkKKyAgICAgICAgICAgICAgICB7 CisgICAgICAgICAgICAgICAgICAvLyBzZXQgdGhlIHZhbHVlcyBpbiBtb2Rl bAorICAgICAgICAgICAgICAgICAgbS5zZXQoJ2lzX3RsZW5ndGgnLCB0cnVl LCB7c2lsZW50OiB0cnVlfSk7CisgICAgICAgICAgICAgICAgICBtLnNldCgn bWluX3ZhbCcsIG8ubWluX3ZhbCwge3NpbGVudDogdHJ1ZX0pOworICAgICAg ICAgICAgICAgICAgbS5zZXQoJ21heF92YWwnLCBvLm1heF92YWwsIHtzaWxl bnQ6IHRydWV9KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9 CisgICAgICAgICAgfSk7CisgICAgICAgICAgcmV0dXJuIG0uZ2V0KCdpc190 bGVuZ3RoJyk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7Cisg ICAgICAgIH0sCisgICAgICAgIGNlbGxIZWFkZXJDbGFzc2VzOiAnd2lkdGhf cGVyY2VudF8xMCcKKyAgICAgIH0seworICAgICAgICBpZDogJ3ByZWNpc2lv bicsIGxhYmVsOid7eyBfKCdQcmVjaXNpb24nKSB9fScsCisgICAgICAgIHR5 cGU6ICd0ZXh0JywgZGVwczogWydkYXRhdHlwZSddLAorICAgICAgICBjZWxs OiBJbnRlZ2VyRGVwQ2VsbCwKKyAgICAgICAgZWRpdGFibGU6IGZ1bmN0aW9u KG0pIHsKKyAgICAgICAgICB2YXIgb2ZfdHlwZSA9IG0uZ2V0KCdkYXRhdHlw ZScpOworICAgICAgICAgIGlmKG0udHlwZV9vcHRpb25zKSB7CisgICAgICAg ICAgICAgbS5zZXQoJ2lzX3ByZWNpc2lvbicsIGZhbHNlLCB7c2lsZW50OiB0 cnVlfSk7CisgICAgICAgICAgICAvLyBpdGVyYXRpbmcgb3ZlciBhbGwgdGhl IHR5cGVzCisgICAgICAgICAgICBfLmVhY2gobS50eXBlX29wdGlvbnMsIGZ1 bmN0aW9uKG8pIHsKKyAgICAgICAgICAgICAgLy8gaWYgdHlwZSBmcm9tIHNl bGVjdGVkIGZyb20gY29tYm9ib3ggbWF0Y2hlcyBpbiBvcHRpb25zCisgICAg ICAgICAgICAgIGlmICggb2ZfdHlwZSA9PSBvLnZhbHVlICkgeworICAgICAg ICAgICAgICAgIC8vIGlmIHByZWNlc3Npb24gaXMgYWxsb3dlZCBmb3Igc2Vs ZWN0ZWQgdHlwZQorICAgICAgICAgICAgICAgIGlmKG8ucHJlY2lzaW9uKQor ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgIC8vIHNldCB0 aGUgdmFsdWVzIGluIG1vZGVsCisgICAgICAgICAgICAgICAgICBtLnNldCgn aXNfcHJlY2lzaW9uJywgdHJ1ZSwge3NpbGVudDogdHJ1ZX0pOworICAgICAg ICAgICAgICAgICAgbS5zZXQoJ21pbl92YWwnLCBvLm1pbl92YWwsIHtzaWxl bnQ6IHRydWV9KTsKKyAgICAgICAgICAgICAgICAgIG0uc2V0KCdtYXhfdmFs Jywgby5tYXhfdmFsLCB7c2lsZW50OiB0cnVlfSk7CisgICAgICAgICAgICAg ICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0pOworICAgICAgICAg IHJldHVybiBtLmdldCgnaXNfcHJlY2lzaW9uJyk7CisgICAgICAgIH0KKyAg ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0sIGNlbGxIZWFkZXJDbGFz c2VzOiAnd2lkdGhfcGVyY2VudF8xMCcKKyAgICAgIH0seworICAgICAgICBp ZDogJ3R5cGRlZmF1bHQnLCBsYWJlbDone3sgXygnRGVmYXVsdCcpIH19Jywg dHlwZTogJ3RleHQnLAorICAgICAgICBjZWxsOiAnc3RyaW5nJywgbWluX3Zl cnNpb246IDkwMzAwLAorICAgICAgICBwbGFjZWhvbGRlcjogIkVudGVyIGFu IGV4cHJlc3Npb24gb3IgYSB2YWx1ZS4iLAorICAgICAgICBjZWxsSGVhZGVy Q2xhc3NlczogJ3dpZHRoX3BlcmNlbnRfMTAnLAorICAgICAgICBlZGl0YWJs ZTogZnVuY3Rpb24obSkgeworICAgICAgICAgIGlmICh0aGlzLmdldCgnbm9k ZV9pbmZvJykuc2VydmVyLnZlcnNpb24gPCA5MDMwMCl7CisgICAgICAgICAg ICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgfQorICAgICAgICAgIHJldHVy biB0cnVlOworICAgICAgICB9CisgICAgICB9LHsKKyAgICAgICAgaWQ6ICdh dHRub3RudWxsJywgbGFiZWw6J3t7IF8oJ05vdCBOdWxsJykgfX0nLAorICAg ICAgICBjZWxsOiAnYm9vbGVhbicsdHlwZTogJ3N3aXRjaCcsIGVkaXRhYmxl OiB0cnVlLAorICAgICAgICBjZWxsSGVhZGVyQ2xhc3NlczogJ3dpZHRoX3Bl cmNlbnRfMTAnCisgICAgICB9LHsKKyAgICAgICAgaWQ6ICdjb2xsbmFtZScs IGxhYmVsOid7eyBfKCdDb2xsYXRpb24nKSB9fScsIGNlbGw6ICdub2RlLWFq YXgtb3B0aW9ucycsCisgICAgICAgIGNvbnRyb2w6ICdub2RlLWFqYXgtb3B0 aW9ucycsIHR5cGU6ICd0ZXh0JywgdXJsOiAnZ2V0X2NvbGxhdGlvbnMnLAor ICAgICAgICBtaW5fdmVyc2lvbjogOTAzMDAsIGVkaXRhYmxlOiB0cnVlLAor ICAgICAgICBjZWxsSGVhZGVyQ2xhc3NlczogJ3dpZHRoX3BlcmNlbnRfMjAn CisgICAgICB9LHsKKyAgICAgICAgaWQ6ICdhdHRudW0nLCBjZWxsOiAnc3Ry aW5nJyx0eXBlOiAndGV4dCcsIHZpc2libGU6IGZhbHNlCisgICAgICB9LHsK KyAgICAgICAgaWQ6ICdpbmhlcml0ZWRmcm9tJywgbGFiZWw6J3t7IF8oJ0lu aGVyaXRlZCBGcm9tJykgfX0nLCBjZWxsOiAnc3RyaW5nJywKKyAgICAgICAg dHlwZTogJ3RleHQnLCB2aXNpYmxlOiBmYWxzZSwgbW9kZTogWydwcm9wZXJ0 aWVzJ10sCisgICAgICAgIGNlbGxIZWFkZXJDbGFzc2VzOiAnd2lkdGhfcGVy Y2VudF8xMCcKKyAgICB9XSwKKyAgICB2YWxpZGF0ZTogZnVuY3Rpb24oKSB7 CisgICAgICAvLyBUT0RPOiBBZGQgdmFsaWRhdGlvbiBoZXJlCisgICAgfSwK KyAgICB0b0pTT046IEJhY2tib25lLk1vZGVsLnByb3RvdHlwZS50b0pTT04K KyAgfSk7CisKKyAgdmFyIGZvcm1hdE5vZGUgPSBmdW5jdGlvbihvcHQpIHsK KyAgICBpZiAoIW9wdC5pZCkgeworICAgICAgcmV0dXJuIG9wdC50ZXh0Owor ICAgIH0KKworICAgIHZhciBvcHRpbWFnZSA9ICQob3B0LmVsZW1lbnQpLmRh dGEoJ2ltYWdlJyk7CisKKyAgICBpZighb3B0aW1hZ2UpeworICAgICAgcmV0 dXJuIG9wdC50ZXh0OworICAgIH0gZWxzZSB7CisgICAgICByZXR1cm4gJCgK KyAgICAgICAgICAnPHNwYW4+PHNwYW4gY2xhc3M9IndjVGFiSWNvbiAnICsg b3B0aW1hZ2UgKyAnIi8+JyArIG9wdC50ZXh0ICsgJzwvc3Bhbj4nCisgICAg ICAgICAgKTsKKyAgICB9CisgIH07CisKKworICAvKiBOb2RlQWpheE9wdGlv bnNNdWx0aXBsZUNvbnRyb2wgaXMgZm9yIG11bHRpcGxlIHNlbGVjdGlvbiBv ZiBDb21ib2JveC4KKyAgKiAgVGhpcyBjb250cm9sIGlzIHVzZWQgdG8gc2Vs ZWN0IE11bHRpcGxlIFBhcmVudCBUYWJsZXMgdG8gYmUgaW5oZXJpdGVkLgor ICAqICBJdCBhbHNvIHBvcHVsYXRlcy92YWNhdGVzIENvbHVtbnMgb24gc2Vs ZWN0aW9uL2Rlc2VsZWN0aW9uIG9mIHRoZSBvcHRpb24gKGkuZS4gdGFibGUg bmFtZSkuCisgICogIFRvIHBvcHVsYXRlcyB0aGUgY29sdW1uLCBpdCBjYWxs cyB0aGUgc2VydmVyIGFuZCBmZXRjaCB0aGUgY29sdW1ucyBkYXRhCisgICog IGZvciB0aGUgc2VsZWN0ZWQgdGFibGUuCisgICovCisKKyAgdmFyIE5vZGVB amF4T3B0aW9uc011bHRpcGxlQ29udHJvbCA9IEJhY2tmb3JtLk5vZGVBamF4 T3B0aW9uc011bHRpcGxlQ29udHJvbCA9IEJhY2tmb3JtLk5vZGVBamF4T3B0 aW9uc0NvbnRyb2wuZXh0ZW5kKHsKKyAgICB0ZW1wbGF0ZTogXy50ZW1wbGF0 ZShbCisgICAgICAnPGxhYmVsIGNsYXNzPSI8JT1CYWNrZm9ybS5jb250cm9s TGFiZWxDbGFzc05hbWUlPiI+PCU9bGFiZWwlPjwvbGFiZWw+JywKKyAgICAg ICc8ZGl2IGNsYXNzPSI8JT1CYWNrZm9ybS5jb250cm9sc0NsYXNzTmFtZSU+ IDwlPWV4dHJhQ2xhc3Nlcy5qb2luKFwnIFwnKSU+Ij4nLAorICAgICAgJyAg PHNlbGVjdCBjbGFzcz0icGdhZG1pbi1ub2RlLXNlbGVjdCBmb3JtLWNvbnRy b2wiIG5hbWU9IjwlPW5hbWUlPiIgc3R5bGU9IndpZHRoOjEwMCU7IiB2YWx1 ZT08JS12YWx1ZSU+IDwlPWRpc2FibGVkID8gImRpc2FibGVkIiA6ICIiJT4g PCU9cmVxdWlyZWQgPyAicmVxdWlyZWQiIDogIiIlPiA+JywKKyAgICAgICcg IDwvc2VsZWN0PicsCisgICAgICAnPC9kaXY+J10uam9pbigiXG4iKSksCisg ICAgZGVmYXVsdHM6IF8uZXh0ZW5kKAorICAgICAge30sIEJhY2tmb3JtLk5v ZGVBamF4T3B0aW9uc0NvbnRyb2wucHJvdG90eXBlLmRlZmF1bHRzLAorICAg ICAgeworICAgICAgICBzZWxlY3QyOiB7CisgICAgICAgICAgYWxsb3dDbGVh cjogdHJ1ZSwKKyAgICAgICAgICBwbGFjZWhvbGRlcjogJ1NlbGVjdCBmcm9t IHRoZSBsaXN0JywKKyAgICAgICAgICB3aWR0aDogJ3N0eWxlJywKKyAgICAg ICAgICB0ZW1wbGF0ZVJlc3VsdDogZm9ybWF0Tm9kZSwKKyAgICAgICAgICB0 ZW1wbGF0ZVNlbGVjdGlvbjogZm9ybWF0Tm9kZQorICAgICAgICB9CisgICAg ICB9KSwKKyAgICByZW5kZXI6IGZ1bmN0aW9uKCkgeworICAgICAgdmFyIGZp ZWxkID0gXy5kZWZhdWx0cyh0aGlzLmZpZWxkLnRvSlNPTigpLCB0aGlzLmRl ZmF1bHRzKSwKKyAgICAgICAgYXR0cmlidXRlcyA9IHRoaXMubW9kZWwudG9K U09OKCksCisgICAgICAgIGF0dHJBcnIgPSBmaWVsZC5uYW1lLnNwbGl0KCcu JyksCisgICAgICAgIG5hbWUgPSBhdHRyQXJyLnNoaWZ0KCksCisgICAgICAg IHBhdGggPSBhdHRyQXJyLmpvaW4oJy4nKSwKKyAgICAgICAgcmF3VmFsdWUg PSB0aGlzLmtleVBhdGhBY2Nlc3NvcihhdHRyaWJ1dGVzW25hbWVdLCBwYXRo KSwKKyAgICAgICAgZGF0YSA9IF8uZXh0ZW5kKGZpZWxkLCB7CisgICAgICAg ICAgcmF3VmFsdWU6IHJhd1ZhbHVlLAorICAgICAgICAgIHZhbHVlOiB0aGlz LmZvcm1hdHRlci5mcm9tUmF3KHJhd1ZhbHVlLCB0aGlzLm1vZGVsKSwKKyAg ICAgICAgICBhdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzLAorICAgICAgICAgIGZv cm1hdHRlcjogdGhpcy5mb3JtYXR0ZXIKKyAgICAgICAgfSksCisgICAgICAg IGV2YWxGID0gZnVuY3Rpb24oZiwgZCwgbSkgeworICAgICAgICAgIHJldHVy biAoXy5pc0Z1bmN0aW9uKGYpID8gISFmLmFwcGx5KGQsIFttXSkgOiAhIWYp OworICAgICAgICB9OworCisgICAgICAvLyBFdmFsdWF0ZSB0aGUgZGlzYWJs ZWQsIHZpc2libGUsIGFuZCByZXF1aXJlZCBvcHRpb24KKyAgICAgIF8uZXh0 ZW5kKGRhdGEsIHsKKyAgICAgICAgZGlzYWJsZWQ6IGV2YWxGKGRhdGEuZGlz YWJsZWQsIGRhdGEsIHRoaXMubW9kZWwpLAorICAgICAgICB2aXNpYmxlOiAg ZXZhbEYoZGF0YS52aXNpYmxlLCBkYXRhLCB0aGlzLm1vZGVsKSwKKyAgICAg ICAgcmVxdWlyZWQ6IGV2YWxGKGRhdGEucmVxdWlyZWQsIGRhdGEsIHRoaXMu bW9kZWwpCisgICAgICB9KTsKKworICAgICAgaWYgKGZpZWxkLm5vZGVfaW5m by5zZXJ2ZXIudmVyc2lvbiA8IGZpZWxkLm1pbl92ZXJzaW9uKSB7CisgICAg ICAgIGZpZWxkLnZlcnNpb25fY29tcGF0aWJsZSA9IGZhbHNlCisgICAgICAg IHJldHVybiB0aGlzOworICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAg IC8vIEV2YWx1YXRpb24gdGhlIG9wdGlvbnMKKyAgICAgICAgaWYgKF8uaXNG dW5jdGlvbihkYXRhLm9wdGlvbnMpKSB7CisgICAgICAgIHRyeSB7CisgICAg ICAgICAgZGF0YS5vcHRpb25zID0gZGF0YS5vcHRpb25zLmFwcGx5KHRoaXMp CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgIC8vIERvIG5vdGhp bmcKKyAgICAgICAgICBkYXRhLm9wdGlvbnMgPSBbXQorICAgICAgICAgIHRo aXMubW9kZWwudHJpZ2dlcigncGdhZG1pbi12aWV3OnRyYW5zZm9ybTplcnJv cicsIG0sIHNlbGYuZmllbGQsIGUpOworICAgICAgICB9CisgICAgICAgIH0K KworICAgICAgICAvLyBDbGVhbiB1cCBmaXJzdAorICAgICAgICB0aGlzLiRl bC5yZW1vdmVDbGFzcyhCYWNrZm9ybS5oaWRkZW5DbGFzc25hbWUpOworICAg ICAgICB0aGlzLiRlbC5odG1sKHRoaXMudGVtcGxhdGUoZGF0YSkpLmFkZENs YXNzKGZpZWxkLm5hbWUpOworCisgICAgICAgIGlmICghZGF0YS52aXNpYmxl KSB7CisgICAgICAgIHRoaXMuJGVsLmFkZENsYXNzKEJhY2tmb3JtLmhpZGRl bkNsYXNzbmFtZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgIHZhciBv cHRzID0gXy5leHRlbmQoCisgICAgICAgICAge30sIHRoaXMuZGVmYXVsdHMu c2VsZWN0MiwgZGF0YS5zZWxlY3QyLAorICAgICAgICAgIHsKKyAgICAgICAg ICAgICdkYXRhJzogZGF0YS5vcHRpb25zCisgICAgICAgICAgfSk7CisgICAg ICAgIHRoaXMuJGVsLmZpbmQoInNlbGVjdCIpLnNlbGVjdDIob3B0cykudmFs KGRhdGEucmF3VmFsdWUpLnRyaWdnZXIoImNoYW5nZSIpOworICAgICAgICB0 aGlzLnVwZGF0ZUludmFsaWQoKTsKKyAgICAgICAgfQorICAgICAgfQorICAg ICAgcmV0dXJuIHRoaXM7CisgICAgfSwKKyAgICBvbkNoYW5nZTogZnVuY3Rp b24oZSkgeworICAgICAgdmFyIG1vZGVsID0gdGhpcy5tb2RlbCwKKyAgICAg ICAgICAkZWwgPSAkKGUudGFyZ2V0KSwKKyAgICAgICAgICBhdHRyQXJyID0g dGhpcy5maWVsZC5nZXQoIm5hbWUiKS5zcGxpdCgnLicpLAorICAgICAgICAg IG5hbWUgPSBhdHRyQXJyLnNoaWZ0KCksCisgICAgICAgICAgcGF0aCA9IGF0 dHJBcnIuam9pbignLicpLAorICAgICAgICAgIHZhbHVlID0gdGhpcy5nZXRW YWx1ZUZyb21ET00oKSwKKyAgICAgICAgICBjaGFuZ2VzID0ge30sCisgICAg ICAgICAgY29sdW1ucyA9IG1vZGVsLmdldCgnY29sdW1ucycpLAorICAgICAg ICAgIGluaGVyaXRzID0gbW9kZWwuZ2V0KG5hbWUpOworCisgICAgICBpZiAo dGhpcy5tb2RlbC5lcnJvck1vZGVsIGluc3RhbmNlb2YgQmFja2JvbmUuTW9k ZWwpIHsKKyAgICAgICAgaWYgKF8uaXNFbXB0eShwYXRoKSkgeworICAgICAg ICAgIHRoaXMubW9kZWwuZXJyb3JNb2RlbC51bnNldChuYW1lKTsKKyAgICAg ICAgfSBlbHNlIHsKKyAgICAgICAgICB2YXIgbmVzdGVkRXJyb3IgPSB0aGlz Lm1vZGVsLmVycm9yTW9kZWwuZ2V0KG5hbWUpOworICAgICAgICAgIGlmIChu ZXN0ZWRFcnJvcikgeworICAgICAgICAgICAgdGhpcy5rZXlQYXRoU2V0dGVy KG5lc3RlZEVycm9yLCBwYXRoLCBudWxsKTsKKyAgICAgICAgICAgIHRoaXMu bW9kZWwuZXJyb3JNb2RlbC5zZXQobmFtZSwgbmVzdGVkRXJyb3IpOworICAg ICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorCisgICAgICB2YXIgc2Vs ZiA9IHRoaXM7CisKKyAgICAgIGlmICh0eXBlb2YoaW5oZXJpdHMpICA9PSAi c3RyaW5nIil7IGluaGVyaXRzID0gSlNPTi5wYXJzZShpbmhlcml0cyk7IH0K KworICAgICAgLy8gUmVtb3ZlIENvbHVtbnMgaWYgaW5oZXJpdCBvcHRpb24g aXMgZGVzZWxlY3RlZCBmcm9tIHRoZSBjb21ib2JveAorICAgICAgaWYoXy5z aXplKEpTT04ucGFyc2UodmFsdWUpKSA8IF8uc2l6ZShpbmhlcml0cykpIHsK KyAgICAgICAgdmFyIGRpZiA9ICBfLmRpZmZlcmVuY2UoaW5oZXJpdHMsIEpT T04ucGFyc2UodmFsdWUpKTsKKyAgICAgICAgdmFyIHJtdl9jb2x1bW5zID0g Y29sdW1ucy53aGVyZSh7aW5oZXJpdGVkaWQ6IHBhcnNlSW50KGRpZlswXSl9 KTsKKyAgICAgICAgY29sdW1ucy5yZW1vdmUocm12X2NvbHVtbnMpOworICAg ICAgfQorICAgICAgZWxzZQorICAgICAgeworICAgICAgICBfLmVhY2goSlNP Ti5wYXJzZSh2YWx1ZSksIGZ1bmN0aW9uKGkpIHsKKyAgICAgICAgICAvLyBG ZXRjaCBDb2x1bW5zIGZyb20gc2VydmVyCisgICAgICAgICAgaW5odGVkX2Nv bHVtbnMgPSBzZWxmLmZldGNoQ29sdW1ucyhpKTsKKyAgICAgICAgICBjb2x1 bW5zLmFkZChpbmh0ZWRfY29sdW1ucyk7CisgICAgICAgIH0pOworICAgICAg fQorCisgICAgICBjaGFuZ2VzW25hbWVdID0gXy5pc0VtcHR5KHBhdGgpID8g dmFsdWUgOiBfLmNsb25lKG1vZGVsLmdldChuYW1lKSkgfHwge307CisgICAg ICB0aGlzLnN0b3BMaXN0ZW5pbmcodGhpcy5tb2RlbCwgImNoYW5nZToiICsg bmFtZSwgdGhpcy5yZW5kZXIpOworICAgICAgbW9kZWwuc2V0KGNoYW5nZXMp OworICAgICAgdGhpcy5saXN0ZW5Ubyh0aGlzLm1vZGVsLCAiY2hhbmdlOiIg KyBuYW1lLCB0aGlzLnJlbmRlcik7CisgICAgfSwKKyAgICBmZXRjaENvbHVt bnM6IGZ1bmN0aW9uKHRhYmxlX2lkKXsKKyAgICAgIHZhciBzZWxmID0gdGhp cywKKyAgICAgICAgICB1cmwgPSAnZ2V0X2NvbHVtbnMnLAorICAgICAgICAg IG0gPSBzZWxmLm1vZGVsLnRvcCB8fCBzZWxmLm1vZGVsOworCisgICAgICBp ZiAodXJsKSB7CisgICAgICAgIHZhciBub2RlID0gdGhpcy5maWVsZC5nZXQo J3NjaGVtYV9ub2RlJyksCisgICAgICAgICAgICBub2RlX2luZm8gPSB0aGlz LmZpZWxkLmdldCgnbm9kZV9pbmZvJyksCisgICAgICAgICAgICBmdWxsX3Vy bCA9IG5vZGUuZ2VuZXJhdGVfdXJsLmFwcGx5KAorICAgICAgICAgICAgICBu b2RlLCBbCisgICAgICAgICAgICAgICAgbnVsbCwgdXJsLCB0aGlzLmZpZWxk LmdldCgnbm9kZV9kYXRhJyksCisgICAgICAgICAgICAgICAgdGhpcy5maWVs ZC5nZXQoJ3VybF93aXRoX2lkJykgfHwgZmFsc2UsIG5vZGVfaW5mbworICAg ICAgICAgICAgICBdKSwKKyAgICAgICAgICAgIGNhY2hlX2xldmVsID0gdGhp cy5maWVsZC5nZXQoJ2NhY2hlX2xldmVsJykgfHwgbm9kZS50eXBlLAorICAg ICAgICAgICAgY2FjaGVfbm9kZSA9IHRoaXMuZmllbGQuZ2V0KCdjYWNoZV9u b2RlJyk7CisKKyAgICAgICAgY2FjaGVfbm9kZSA9IChjYWNoZV9ub2RlICYm IHBnQWRtaW4uQnJvd3Nlci5Ob2Rlc1snY2FjaGVfbm9kZSddKSB8fCBub2Rl OworCisgICAgICAgIG0udHJpZ2dlcigncGdhZG1pbjp2aWV3OmZldGNoaW5n JywgbSwgc2VsZi5maWVsZCk7CisgICAgICAgIGRhdGEgPSB7YXR0cmVsaWQ6 IHRhYmxlX2lkfQorCisgICAgICAgIC8vIEZldGNoaW5nIENvbHVtbnMgZGF0 YSBmb3IgdGhlIHNlbGVjdGVkIHRhYmxlLgorICAgICAgICAkLmFqYXgoewor ICAgICAgICAgIGFzeW5jOiBmYWxzZSwKKyAgICAgICAgICB1cmw6IGZ1bGxf dXJsLAorICAgICAgICAgIGRhdGE6IGRhdGEsCisgICAgICAgICAgc3VjY2Vz czogZnVuY3Rpb24ocmVzKSB7CisgICAgICAgICAgICAvKgorICAgICAgICAg ICAgICogV2Ugd2lsbCBjYWNoZSB0aGlzIGRhdGEgZm9yIHNob3J0IHBlcmlv ZCBvZiB0aW1lIGZvciBhdm9pZGluZworICAgICAgICAgICAgICogc2FtZSBj YWxscy4KKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgZGF0YSA9IGNh Y2hlX25vZGUuY2FjaGUodXJsLCBub2RlX2luZm8sIGNhY2hlX2xldmVsLCBy ZXMuZGF0YSk7CisgICAgICAgICAgfSwKKyAgICAgICAgICBlcnJvcjogZnVu Y3Rpb24oKSB7CisgICAgICAgICAgICBtLnRyaWdnZXIoJ3BnYWRtaW46dmll dzpmZXRjaDplcnJvcicsIG0sIHNlbGYuZmllbGQpOworICAgICAgICAgIH0K KyAgICAgICAgfSk7CisgICAgICAgIG0udHJpZ2dlcigncGdhZG1pbjp2aWV3 OmZldGNoZWQnLCBtLCBzZWxmLmZpZWxkKTsKKworICAgICAgICAvLyBUbyBm ZXRjaCBvbmx5IG9wdGlvbnMgZnJvbSBjYWNoZSwgd2UgZG8gbm90IG5lZWQg dGltZSBmcm9tICdhdCcKKyAgICAgICAgLy8gYXR0cmlidXRlIGJ1dCBvbmx5 IG9wdGlvbnMuCisgICAgICAgIC8vCisgICAgICAgIC8vIEl0IGlzIGZlYXNp YmxlIHRoYXQgdGhlIGRhdGEgbWF5IG5vdCBoYXZlIGJlZW4gZmV0Y2hlZC4K KyAgICAgICAgZGF0YSA9IChkYXRhICYmIGRhdGEuZGF0YSkgfHwgW107Cisg ICAgICAgIHJldHVybiBkYXRhOworICAgICAgfQorICAgIH0sCisgIH0pOwor CisKKyAgLy8gQ29uc3RyYWludHMgTW9kZWwKKyAgdmFyIENvbnN0cmFpbnRN b2RlbCA9IHBnQWRtaW4uQnJvd3Nlci5Ob2RlLk1vZGVsLmV4dGVuZCh7Cisg ICAgaWRBdHRyaWJ1dGU6ICdjb25vaWQnLAorICAgIGluaXRpYWxpemU6IGZ1 bmN0aW9uKGF0dHJzLCBhcmdzKSB7CisgICAgICB2YXIgaXNOZXcgPSAoXy5z aXplKGF0dHJzKSA9PT0gMCk7CisgICAgICBpZiAoIWlzTmV3KSB7CisgICAg ICAgIHRoaXMuY29udmFsaWRhdGVkX2RlZmF1bHQgPSB0aGlzLmdldCgnY29u dmFsaWRhdGVkJykKKyAgICAgIH0KKyAgICAgIHBnQWRtaW4uQnJvd3Nlci5O b2RlLk1vZGVsLnByb3RvdHlwZS5pbml0aWFsaXplLmFwcGx5KHRoaXMsIGFy Z3VtZW50cyk7CisgICAgfSwKKyAgICBkZWZhdWx0czogeworICAgICAgY29u b2lkOiB1bmRlZmluZWQsCisgICAgICBjb25uYW1lOiB1bmRlZmluZWQsCisg ICAgICBjb25zcmM6IHVuZGVmaW5lZCwKKyAgICAgIGNvbm5vaW5oZXJpdDog dW5kZWZpbmVkLAorICAgICAgY29udmFsaWRhdGVkOiB0cnVlCisgICAgfSwK KyAgICBjb252YWxpZGF0ZWRfZGVmYXVsdDogdHJ1ZSwKKyAgICBzY2hlbWE6 IFt7CisgICAgICBpZDogJ2Nvbm9pZCcsIHR5cGU6ICd0ZXh0JywgY2VsbDog J3N0cmluZycsIHZpc2libGU6IGZhbHNlCisgICAgfSx7CisgICAgICBpZDog J2Nvbm5hbWUnLCBsYWJlbDone3sgXygnTmFtZScpIH19JywgdHlwZTogJ3Rl eHQnLCBjZWxsOiAnc3RyaW5nJywKKyAgICAgIGVkaXRhYmxlOiAnaXNfZWRp dGFibGUnLCBjZWxsSGVhZGVyQ2xhc3NlczogJ3dpZHRoX3BlcmNlbnRfMzAn CisgICAgfSx7CisgICAgICBpZDogJ2NvbnNyYycsIGxhYmVsOid7eyBfKCdD aGVjaycpIH19JywgdHlwZTogJ211bHRpbGluZScsCisgICAgICBlZGl0YWJs ZTogJ2lzX2VkaXRhYmxlJywgY2VsbDogQmFja2dyaWQuRXh0ZW5zaW9uLlRl eHRhcmVhQ2VsbCwKKyAgICAgIGNlbGxIZWFkZXJDbGFzc2VzOiAnd2lkdGhf cGVyY2VudF8zMCcKKyAgICB9LHsKKyAgICAgIGlkOiAnY29ubm9pbmhlcml0 JywgbGFiZWw6J3t7IF8oJ05vIEluaGVyaXQnKSB9fScsIHR5cGU6ICdzd2l0 Y2gnLAorICAgICAgY2VsbDogJ2Jvb2xlYW4nLCBlZGl0YWJsZTogJ2lzX2Vk aXRhYmxlJywKKyAgICAgIGNlbGxIZWFkZXJDbGFzc2VzOiAnd2lkdGhfcGVy Y2VudF8yMCcKKyAgICB9LHsKKyAgICAgIGlkOiAnY29udmFsaWRhdGVkJywg bGFiZWw6J3t7IF8oJ1ZhbGlkYXRlPycpIH19JywgdHlwZTogJ3N3aXRjaCcs CisgICAgICBjZWxsOiAnYm9vbGVhbicsIGNlbGxIZWFkZXJDbGFzc2VzOiAn d2lkdGhfcGVyY2VudF8yMCcsCisgICAgICBlZGl0YWJsZTogZnVuY3Rpb24o bSkgeworICAgICAgICB2YXIgc2VydmVyID0gdGhpcy5nZXQoJ25vZGVfaW5m bycpLnNlcnZlcjsKKyAgICAgICAgaWYgKF8uaXNVbmRlZmluZWQobS5pc05l dykpIHsgcmV0dXJuIHRydWU7IH0KKyAgICAgICAgaWYgKCFtLmlzTmV3KCkp IHsKKyAgICAgICAgICBpZihtLmdldCgnY29udmFsaWRhdGVkJykgJiYgbS5j b252YWxpZGF0ZWRfZGVmYXVsdCkgeworICAgICAgICAgICAgcmV0dXJuIGZh bHNlOworICAgICAgICAgIH0KKyAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg ICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgIH0KKyAgICAg fQorICAgIF0sCisgICAgdmFsaWRhdGU6IGZ1bmN0aW9uKCkgeworICAgICAg Ly8gVE9ETzogQWRkIHZhbGlkYXRpb24gaGVyZQorICAgIH0sCisgICAgaXNf ZWRpdGFibGU6IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgcmV0dXJuIF8uaXNV bmRlZmluZWQobS5pc05ldykgPyB0cnVlIDogbS5pc05ldygpOworICAgIH0s CisgICAgdG9KU09OOiBCYWNrYm9uZS5Nb2RlbC5wcm90b3R5cGUudG9KU09O CisgIH0pOworCisKKyAgLy8gT3B0aW9ucyBNb2RlbAorICB2YXIgT3B0aW9u c01vZGVsID0gcGdBZG1pbi5Ccm93c2VyLk5vZGUuTW9kZWwuZXh0ZW5kKHsK KyAgICBkZWZhdWx0czogeworICAgICAgb3B0aW9uOiB1bmRlZmluZWQsCisg ICAgICB2YWx1ZTogdW5kZWZpbmVkCisgICAgfSwKKyAgICBzY2hlbWE6IFt7 CisgICAgICBpZDogJ29wdGlvbicsIGxhYmVsOid7eyBfKCdPcHRpb24nKSB9 fScsIGNlbGw6ICdzdHJpbmcnLCB0eXBlOiAndGV4dCcsCisgICAgICBlZGl0 YWJsZTogdHJ1ZSwgY2VsbEhlYWRlckNsYXNzZXM6J3dpZHRoX3BlcmNlbnRf NTAnCisgICAgfSx7CisgICAgICBpZDogJ3ZhbHVlJywgbGFiZWw6J3t7IF8o J1ZhbHVlJykgfX0nLCBjZWxsOiAnc3RyaW5nJyx0eXBlOiAndGV4dCcsCisg ICAgICBlZGl0YWJsZTogdHJ1ZSwgY2VsbEhlYWRlckNsYXNzZXM6J3dpZHRo X3BlcmNlbnRfNTAnCisgICAgfQorICAgIF0sCisgICAgdmFsaWRhdGU6IGZ1 bmN0aW9uKCkgeworICAgICAgLy8gVE9ETzogQWRkIHZhbGlkYXRpb24gaGVy ZQorICAgIH0sCisgICAgdG9KU09OOiBCYWNrYm9uZS5Nb2RlbC5wcm90b3R5 cGUudG9KU09OCisgIH0pOworCisKKyAgaWYgKCFwZ0Jyb3dzZXIuTm9kZXNb J2ZvcmVpZ24tdGFibGUnXSkgeworICAgIHBnQWRtaW4uQnJvd3Nlci5Ob2Rl c1snZm9yZWlnbi10YWJsZSddID0gcGdCcm93c2VyLk5vZGUuZXh0ZW5kKHsK KyAgICAgIHR5cGU6ICdmb3JlaWduLXRhYmxlJywKKyAgICAgIGxhYmVsOiAn e3sgXygnRm9yZWlnbiBUYWJsZScpIH19JywKKyAgICAgIGNvbGxlY3Rpb25f dHlwZTogJ2NvbGwtZm9yZWlnbi10YWJsZScsCisgICAgICBoYXNTUUw6IHRy dWUsCisgICAgICBoYXNEZXBlbmRzOiB0cnVlLAorICAgICAgcGFyZW50X3R5 cGU6IFsnc2NoZW1hJ10sCisgICAgICBJbml0OiBmdW5jdGlvbigpIHsKKyAg ICAgICAgLyogQXZvaWQgbXVsaXRwbGUgcmVnaXN0cmF0aW9uIG9mIG1lbnVz ICovCisgICAgICAgIGlmICh0aGlzLmluaXRpYWxpemVkKQorICAgICAgICAg ICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSB0cnVl OworCisgICAgICAgIHBnQnJvd3Nlci5hZGRfbWVudXMoW3sKKyAgICAgICAg ICBuYW1lOiAnY3JlYXRlX2ZvcmVpZ24tdGFibGVfb25fY29sbCcsIG5vZGU6 ICdjb2xsLWZvcmVpZ24tdGFibGUnLCBtb2R1bGU6IHRoaXMsCisgICAgICAg ICAgYXBwbGllczogWydvYmplY3QnLCAnY29udGV4dCddLCBjYWxsYmFjazog J3Nob3dfb2JqX3Byb3BlcnRpZXMnLAorICAgICAgICAgIGNhdGVnb3J5OiAn Y3JlYXRlJywgcHJpb3JpdHk6IDQsIGxhYmVsOiAne3sgXygnRm9yZWlnbiBU YWJsZS4uLicpIH19JywKKyAgICAgICAgICBpY29uOiAnd2NUYWJJY29uIGlj b24tZm9yZWlnbi10YWJsZScsIGRhdGE6IHthY3Rpb246ICdjcmVhdGUnLCBj aGVjazogdHJ1ZX0sCisgICAgICAgICAgZW5hYmxlOiAnY2FuQ3JlYXRlJwor ICAgICAgICB9LHsKKyAgICAgICAgICBuYW1lOiAnY3JlYXRlX2ZvcmVpZ24t dGFibGUnLCBub2RlOiAnZm9yZWlnbi10YWJsZScsIG1vZHVsZTogdGhpcywK KyAgICAgICAgICBhcHBsaWVzOiBbJ29iamVjdCcsICdjb250ZXh0J10sIGNh bGxiYWNrOiAnc2hvd19vYmpfcHJvcGVydGllcycsCisgICAgICAgICAgY2F0 ZWdvcnk6ICdjcmVhdGUnLCBwcmlvcml0eTogNCwgbGFiZWw6ICd7eyBfKCdG b3JlaWduIFRhYmxlLi4uJykgfX0nLAorICAgICAgICAgIGljb246ICd3Y1Rh Ykljb24gaWNvbi1mb3JlaWduLXRhYmxlJywgZGF0YToge2FjdGlvbjogJ2Ny ZWF0ZScsIGNoZWNrOiB0cnVlfSwKKyAgICAgICAgICBlbmFibGU6ICdjYW5D cmVhdGUnCisgICAgICAgIH0seworICAgICAgICAgIG5hbWU6ICdjcmVhdGVf Zm9yZWlnbi10YWJsZScsIG5vZGU6ICdzY2hlbWEnLCBtb2R1bGU6IHRoaXMs CisgICAgICAgICAgYXBwbGllczogWydvYmplY3QnLCAnY29udGV4dCddLCBj YWxsYmFjazogJ3Nob3dfb2JqX3Byb3BlcnRpZXMnLAorICAgICAgICAgIGNh dGVnb3J5OiAnY3JlYXRlJywgcHJpb3JpdHk6IDQsIGxhYmVsOiAne3sgXygn Rm9yZWlnbiBUYWJsZS4uLicpIH19JywKKyAgICAgICAgICBpY29uOiAnd2NU YWJJY29uIGljb24tZm9yZWlnbi10YWJsZScsIGRhdGE6IHthY3Rpb246ICdj cmVhdGUnLCBjaGVjazogZmFsc2V9LAorICAgICAgICAgIGVuYWJsZTogJ2Nh bkNyZWF0ZScKKyAgICAgICAgfQorICAgICAgICBdKTsKKworICAgICAgfSwK KyAgICAgIGNhbkRyb3A6IHBnQnJvd3Nlci5Ob2Rlc1snc2NoZW1hJ10uY2Fu Q2hpbGREcm9wLAorICAgICAgY2FuRHJvcENhc2NhZGU6IHBnQnJvd3Nlci5O b2Rlc1snc2NoZW1hJ10uY2FuQ2hpbGREcm9wLAorICAgICAgbW9kZWw6IHBn QWRtaW4uQnJvd3Nlci5Ob2RlLk1vZGVsLmV4dGVuZCh7CisgICAgICAgIGlu aXRpYWxpemU6IGZ1bmN0aW9uKGF0dHJzLCBhcmdzKSB7CisgICAgICAgICAg dmFyIGlzTmV3ID0gKF8uc2l6ZShhdHRycykgPT09IDApOworICAgICAgICAg IGlmIChpc05ldykgeworICAgICAgICAgICAgLy8gU2V0IFNlbGVjdGVkIFNj aGVtYQorICAgICAgICAgICAgc2NoZW1hID0gYXJncy5ub2RlX2luZm8uc2No ZW1hLmxhYmVsCisgICAgICAgICAgICB0aGlzLnNldCh7J2Jhc2Vuc3AnOiBz Y2hlbWF9LCB7c2lsZW50OiB0cnVlfSk7CisgICAgICAgICAgfQorICAgICAg ICAgIHBnQWRtaW4uQnJvd3Nlci5Ob2RlLk1vZGVsLnByb3RvdHlwZS5pbml0 aWFsaXplLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CisgICAgICAgIH0sCisg ICAgICAgIGRlZmF1bHRzOiB7CisgICAgICAgICAgbmFtZTogdW5kZWZpbmVk LAorICAgICAgICAgIG9pZDogdW5kZWZpbmVkLAorICAgICAgICAgIG93bmVy OiB1bmRlZmluZWQsCisgICAgICAgICAgYmFzZW5zcDogdW5kZWZpbmVkLAor ICAgICAgICAgIGRlc2NyaXB0aW9uOiB1bmRlZmluZWQsCisgICAgICAgICAg ZnRzcnZuYW1lOiB1bmRlZmluZWQsCisgICAgICAgICAgc3RyY29sdW1uOiB1 bmRlZmluZWQsCisgICAgICAgICAgc3RyZnRvcHRpb25zOiB1bmRlZmluZWQs CisgICAgICAgICAgaW5oZXJpdHM6IFtdLAorICAgICAgICAgIGNvbHVtbnM6 IFtdLAorICAgICAgICAgIGNvbnN0cmFpbnRzOiBbXSwKKyAgICAgICAgICBm dG9wdGlvbnM6IFtdLAorICAgICAgICAgIHNlY2xhYmVsczogW10KKyAgICAg ICAgfSwKKyAgICAgICAgc2NoZW1hOiBbeworICAgICAgICAgIGlkOiAnbmFt ZScsIGxhYmVsOiAne3sgXygnTmFtZScpIH19JywgY2VsbDogJ3N0cmluZycs CisgICAgICAgICAgdHlwZTogJ3RleHQnLCBtb2RlOiBbJ3Byb3BlcnRpZXMn LCAnY3JlYXRlJywgJ2VkaXQnXQorICAgICAgICB9LHsKKyAgICAgICAgICBp ZDogJ29pZCcsIGxhYmVsOid7eyBfKCdPaWQnKSB9fScsIGNlbGw6ICdzdHJp bmcnLAorICAgICAgICAgIHR5cGU6ICd0ZXh0JyAsIG1vZGU6IFsncHJvcGVy dGllcyddCisgICAgICAgIH0seworICAgICAgICAgIGlkOiAnb3duZXInLCBs YWJlbDone3sgXygnT3duZXInKSB9fScsIGNlbGw6ICdzdHJpbmcnLCBjb250 cm9sOiBCYWNrZm9ybS5Ob2RlTGlzdEJ5TmFtZUNvbnRyb2wsCisgICAgICAg ICAgbm9kZTogJ3JvbGUnLCAgdHlwZTogJ3RleHQnLCBtb2RlOiBbJ2VkaXQn LCAncHJvcGVydGllcyddCisgICAgICAgIH0seworICAgICAgICAgIGlkOiAn YmFzZW5zcCcsIGxhYmVsOid7eyBfKCdTY2hlbWEnKSB9fScsIGNlbGw6ICdu b2RlLWxpc3QtYnktbmFtZScsCisgICAgICAgICAgIGNvbnRyb2w6ICdub2Rl LWxpc3QtYnktbmFtZScsIGNhY2hlX2xldmVsOiAnZGF0YWJhc2UnLCB0eXBl OiAndGV4dCcsCisgICAgICAgICAgIG5vZGU6ICdzY2hlbWEnLCBtb2RlOlsn Y3JlYXRlJywgJ2VkaXQnXQorICAgICAgICB9LHsKKyAgICAgICAgICBpZDog J2Rlc2NyaXB0aW9uJywgbGFiZWw6J3t7IF8oJ0NvbW1lbnQnKSB9fScsIGNl bGw6ICdzdHJpbmcnLAorICAgICAgICAgIHR5cGU6ICdtdWx0aWxpbmUnCisg ICAgICAgIH0seworICAgICAgICAgIGlkOiAnZnRzcnZuYW1lJywgbGFiZWw6 J3t7IF8oJ0ZvcmVpZ24gU2VydmVyJykgfX0nLCBjZWxsOiAnc3RyaW5nJywg Y29udHJvbDogJ25vZGUtYWpheC1vcHRpb25zJywKKyAgICAgICAgICB0eXBl OiAndGV4dCcsIGdyb3VwOiAnRGVmaW5pdGlvbicsIHVybDogJ2dldF9mb3Jl aWduX3NlcnZlcnMnLCBkaXNhYmxlZDogZnVuY3Rpb24obSkgeyByZXR1cm4g IW0uaXNOZXcoKTsgfQorICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ2lu aGVyaXRzJywgbGFiZWw6J3t7IF8oJ0luaGVyaXRzJykgfX0nLCBjZWxsOiAn c3RyaW5nJywgZ3JvdXA6ICdEZWZpbml0aW9uJywKKyAgICAgICAgICB0eXBl OiAnbGlzdCcsIG1pbl92ZXJzaW9uOiA5MDUwMCwgY29udHJvbDogJ25vZGUt YWpheC1vcHRpb25zLW11bHRpcGxlJywKKyAgICAgICAgICB1cmw6ICdnZXRf dGFibGVzJywgc2VsZWN0Mjoge211bHRpcGxlOiB0cnVlfSwKKyAgICAgICAg ICAnY2FjaGVfbGV2ZWwnOiAnZGF0YWJhc2UnCisgICAgICAgIH0seworICAg ICAgICAgIGlkOiAnc3RyY29sdW1uJywgbGFiZWw6J3t7IF8oJ0NvbHVtbnMn KSB9fScsIGNlbGw6ICdzdHJpbmcnLCBncm91cDogJ0RlZmluaXRpb24nLAor ICAgICAgICAgIHR5cGU6ICd0ZXh0JywgbWluX3ZlcnNpb246IDkwNTAwLCBt b2RlOiBbJ3Byb3BlcnRpZXMnXQorICAgICAgICB9LHsKKyAgICAgICAgICBp ZDogJ2NvbHVtbnMnLCBsYWJlbDone3sgXygnQ29sdW1ucycpIH19JywgY2Vs bDogJ3N0cmluZycsCisgICAgICAgICAgdHlwZTogJ2NvbGxlY3Rpb24nLCBn cm91cDogJ0NvbHVtbnMnLCB2aXNpYmxlOiBmYWxzZSwgbW9kZTogWydlZGl0 JywgJ2NyZWF0ZSddLAorICAgICAgICAgIG1vZGVsOiBDb2x1bW5zTW9kZWws IGNhbkFkZDogdHJ1ZSwgY2FuRGVsZXRlOiB0cnVlLCBjYW5FZGl0OiBmYWxz ZSwKKyAgICAgICAgICBjb2x1bW5zOiBbJ2F0dG5hbWUnLCAnZGF0YXR5cGUn LCAndHlwbGVuJywgJ3ByZWNpc2lvbicsICd0eXBkZWZhdWx0JywgJ2F0dG5v dG51bGwnLCAnY29sbG5hbWUnLCAnaW5oZXJpdGVkZnJvbSddCisgICAgICAg IH0sCisgICAgICAgIHsKKyAgICAgICAgICBpZDogJ2NvbnN0cmFpbnRzJywg bGFiZWw6J3t7IF8oJ0NvbnN0cmFpbnRzJykgfX0nLCBjZWxsOiAnc3RyaW5n JywKKyAgICAgICAgICB0eXBlOiAnY29sbGVjdGlvbicsIGdyb3VwOiAnQ29u c3RyYWludHMnLCB2aXNpYmxlOiBmYWxzZSwgbW9kZTogWydlZGl0JywgJ2Ny ZWF0ZSddLAorICAgICAgICAgIG1vZGVsOiBDb25zdHJhaW50TW9kZWwsIGNh bkFkZDogdHJ1ZSwgY2FuRGVsZXRlOiB0cnVlLCBjb2x1bW5zOiBbJ2Nvbm5h bWUnLCdjb25zcmMnLCAnY29ubm9pbmhlcml0JywgJ2NvbnZhbGlkYXRlZCdd LAorICAgICAgICAgIGNhbkVkaXQ6IGZ1bmN0aW9uKG8pIHsKKyAgICAgICAg ICAgIGlmIChvIGluc3RhbmNlb2YgQmFja2JvbmUuTW9kZWwpIHsKKyAgICAg ICAgICAgICAgaWYgKG8gaW5zdGFuY2VvZiBDb25zdHJhaW50TW9kZWwpIHsK KyAgICAgICAgICAgICAgICByZXR1cm4gby5pc05ldygpOworICAgICAgICAg ICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gdHJ1 ZTsKKyAgICAgICAgICB9LCBtaW5fdmVyc2lvbjogOTA1MDAKKyAgICAgICAg fSx7CisgICAgICAgICAgaWQ6ICdzdHJmdG9wdGlvbnMnLCBsYWJlbDone3sg XygnT3B0aW9ucycpIH19JywgY2VsbDogJ3N0cmluZycsCisgICAgICAgICAg dHlwZTogJ3RleHQnLCBncm91cDogJ0RlZmluaXRpb24nLCBtb2RlOiBbJ3By b3BlcnRpZXMnXQorICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ2Z0b3B0 aW9ucycsIGxhYmVsOid7eyBfKCdPcHRpb25zJykgfX0nLCBjZWxsOiAnc3Ry aW5nJywKKyAgICAgICAgICB0eXBlOiAnY29sbGVjdGlvbicsIGdyb3VwOiAn T3B0aW9ucycsIHZpc2libGU6IGZhbHNlLCBtb2RlOiBbJ2VkaXQnLCAnY3Jl YXRlJ10sCisgICAgICAgICAgbW9kZWw6IE9wdGlvbnNNb2RlbCwgY2FuQWRk OiB0cnVlLCBjYW5EZWxldGU6IHRydWUsIGNhbkVkaXQ6IGZhbHNlCisgICAg ICAgIH0seworICAgICAgICAgIGlkOiAnc2VjbGFiZWxzJywgbGFiZWw6ICd7 eyBfKCdTZWN1cml0eSBMYWJlbHMnKSB9fScsCisgICAgICAgICAgbW9kZWw6 IFNlY3VyaXR5TW9kZWwsIHR5cGU6ICdjb2xsZWN0aW9uJywKKyAgICAgICAg ICBncm91cDogJ3t7IF8oJ1NlY3VyaXR5JykgfX0nLCBtb2RlOiBbJ2VkaXQn LCAnY3JlYXRlJ10sCisgICAgICAgICAgbWluX3ZlcnNpb246IDkwMTAwLCBj YW5BZGQ6IHRydWUsCisgICAgICAgICAgY2FuRWRpdDogZmFsc2UsIGNhbkRl bGV0ZTogdHJ1ZSwKKyAgICAgICAgICBjb250cm9sOiAndW5pcXVlLWNvbC1j b2xsZWN0aW9uJywgdW5pcXVlQ29sIDogWydwcm92aWRlciddCisgICAgICAg IH0KKyAgICAgICAgXSwKKyAgICAgICAgdmFsaWRhdGU6IGZ1bmN0aW9uKCkK KyAgICAgICAgeworICAgICAgICAgIHZhciBlcnIgPSB7fSwKKyAgICAgICAg ICAgICAgZXJybXNnLAorICAgICAgICAgICAgICBzZWNsYWJlbHMgPSB0aGlz LmdldCgnc2VjbGFiZWxzJyk7CisKKyAgICAgICAgICBpZiAoXy5pc1VuZGVm aW5lZCh0aGlzLmdldCgnbmFtZScpKSB8fCBTdHJpbmcodGhpcy5nZXQoJ25h bWUnKSkucmVwbGFjZSgvXlxzK3xccyskL2csICcnKSA9PSAnJykgeworICAg ICAgICAgICAgZXJyWyduYW1lJ10gPSAne3sgXygnTmFtZSBjYW4gbm90IGJl IGVtcHR5IScpIH19JzsKKyAgICAgICAgICAgIGVycm1zZyA9IGVycm1zZyB8 fCBlcnJbJ25hbWUnXTsKKyAgICAgICAgICB9CisKKyAgICAgICAgICBpZiAo Xy5pc1VuZGVmaW5lZCh0aGlzLmdldCgnYmFzZW5zcCcpKSB8fCBTdHJpbmco dGhpcy5nZXQoJ2Jhc2Vuc3AnKSkKKyAgICAgICAgICAucmVwbGFjZSgvXlxz K3xccyskL2csICcnKSA9PSAnJykgeworICAgICAgICAgICAgZXJyWydiYXNl bnNwJ10gPSAne3sgXygnU2NoZW1hIGNhbiBub3QgYmUgZW1wdHkhJykgfX0n OworICAgICAgICAgICAgZXJybXNnID0gZXJybXNnIHx8IGVyclsnYmFzZW5z cCddOworICAgICAgICAgIH0KKworICAgICAgICAgIGlmIChfLmlzVW5kZWZp bmVkKHRoaXMuZ2V0KCdmdHNydm5hbWUnKSkgfHwgU3RyaW5nKHRoaXMuZ2V0 KCdmdHNydm5hbWUnKSkucmVwbGFjZSgvXlxzK3xccyskL2csICcnKSA9PSAn JykgeworICAgICAgICAgICAgZXJyWydmdHNydm5hbWUnXSA9ICd7eyBfKCdG b3JlaWduIFNlcnZlciBjYW4gbm90IGJlIGVtcHR5IScpIH19JzsKKyAgICAg ICAgICAgIGVycm1zZyA9IGVycm1zZyB8fCBlcnJbJ2Z0c3J2bmFtZSddOwor ICAgICAgICAgIH0KKworICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC5jbGVh cigpLnNldChlcnIpOworCisgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAg ICAgIH0KKyAgICAgIH0pLAorICAgICAgY2FuQ3JlYXRlOiBmdW5jdGlvbihp dGVtRGF0YSwgaXRlbSwgZGF0YSkgeworICAgICAgICAvL0lmIGNoZWNrIGlz IGZhbHNlIHRoZW4gLCB3ZSB3aWxsIGFsbG93IGNyZWF0ZSBtZW51CisgICAg ICAgIGlmIChkYXRhICYmIGRhdGEuY2hlY2sgPT0gZmFsc2UpCisgICAgICAg ICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgdmFyIHQgPSBwZ0Jyb3dzZXIu dHJlZSwgaSA9IGl0ZW0sIGQgPSBpdGVtRGF0YTsKKyAgICAgICAgLy8gVG8g aXRlcmF0ZSBvdmVyIHRyZWUgdG8gY2hlY2sgcGFyZW50IG5vZGUKKyAgICAg ICAgd2hpbGUgKGkpIHsKKyAgICAgICAgICAvLyBJZiBpdCBpcyBzY2hlbWEg dGhlbiBhbGxvdyB1c2VyIHRvIGNyZWF0ZSBmb3JlaWduIHRhYmxlCisgICAg ICAgICAgaWYgKF8uaW5kZXhPZihbJ3NjaGVtYSddLCBkLl90eXBlKSA+IC0x KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgICBpZiAo J2NvbGwtZm9yZWlnbi10YWJsZScgPT0gZC5fdHlwZSkgeworICAgICAgICAg ICAgLy9DaGVjayBpZiB3ZSBhcmUgbm90IGNoaWxkIG9mIGNhdGFsb2cKKyAg ICAgICAgICAgIHByZXZfaSA9IHQuaGFzUGFyZW50KGkpID8gdC5wYXJlbnQo aSkgOiBudWxsOworICAgICAgICAgICAgcHJldl9kID0gcHJldl9pID8gdC5p dGVtRGF0YShwcmV2X2kpIDogbnVsbDsKKyAgICAgICAgICAgIGlmKCBwcmV2 X2QuX3R5cGUgPT0gJ2NhdGFsb2cnKSB7CisgICAgICAgICAgICAgIHJldHVy biBmYWxzZTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg IHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAg ICAgICAgICBpID0gdC5oYXNQYXJlbnQoaSkgPyB0LnBhcmVudChpKSA6IG51 bGw7CisgICAgICAgICAgZCA9IGkgPyB0Lml0ZW1EYXRhKGkpIDogbnVsbDsK KyAgICAgICAgfQorICAgICAgICAvLyBieSBkZWZhdWx0IHdlIGRvIG5vdCB3 YW50IHRvIGFsbG93IGNyZWF0ZSBtZW51CisgICAgICAgIHJldHVybiB0cnVl OworICAgICAgfQorICB9KTsKKworICB9CisKKyAgcmV0dXJuIHBnQnJvd3Nl ci5Ob2Rlc1snZm9yZWlnbi10YWJsZSddOworfSk7CmRpZmYgLS1naXQgYS93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWln bl90YWJsZXMvc3FsLzkuMV9wbHVzL2NyZWF0ZS5zcWwgYi93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90YWJsZXMv c3FsLzkuMV9wbHVzL2NyZWF0ZS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMC4uOGM0NmVjYQotLS0gL2Rldi9udWxsCisrKyBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRlcy9mb3JlaWdu X3RhYmxlcy9zcWwvOS4xX3BsdXMvY3JlYXRlLnNxbApAQCAtMCwwICsxLDI4 IEBACit7JSBpbXBvcnQgJ21hY3Jvcy9zY2hlbWFzL3NlY3VyaXR5Lm1hY3Jv cycgYXMgU0VDTEFCTEUgJX0KK3slIGlmIGRhdGEgJX0KK0NSRUFURSBGT1JF SUdOIFRBQkxFIHt7IGNvbm58cXRJZGVudChkYXRhLmJhc2Vuc3AsIGRhdGEu bmFtZSkgfX0gKHslIGlmIGRhdGEuY29sdW1ucyAlfQoreyUgZm9yIGMgaW4g ZGF0YS5jb2x1bW5zICV9Cit7JSBpZiBub3QgbG9vcC5maXJzdCV9ICAgIHsl IGVuZGlmICV9e3tjb25ufHF0SWRlbnQoYy5hdHRuYW1lKX19IHt7IGNvbm58 cXRUeXBlSWRlbnQoYy5kYXRhdHlwZSkgfX17JSBpZiBjLnR5cGxlbiAlfSh7 e2MudHlwbGVufX0geyUgaWYgYy5wcmVjaXNpb24gJX0sIHt7Yy5wcmVjaXNp b259fXslIGVuZGlmICV9KXslIGVuZGlmICV9eyUgaWYgYy5hdHRub3RudWxs ICV9CisgTk9UIE5VTEx7JSBlbHNlICV9IE5VTEx7JSBlbmRpZiAlfQoreyUg aWYgbm90IGxvb3AubGFzdCAlfSwKK3slIGVuZGlmICV9eyUgZW5kZm9yIC0l fXslIGVuZGlmICV9CispCisgICAgU0VSVkVSIHt7IGNvbm58cXRJZGVudChk YXRhLmZ0c3J2bmFtZSkgfX17JSBpZiBkYXRhLmZ0b3B0aW9ucyAlfQoreyUg Zm9yIG8gaW4gZGF0YS5mdG9wdGlvbnMgJX0KK3slIGlmIG8ub3B0aW9uIGFu ZCBvLnZhbHVlICV9Cit7JSBpZiBsb29wLmZpcnN0ICV9ICAgIE9QVElPTlMg KHslIGVuZGlmICV9eyUgaWYgbm90IGxvb3AuZmlyc3QgJX0sIHslIGVuZGlm ICV9e3tvLm9wdGlvbn19IHt7by52YWx1ZXxxdExpdGVyYWx9fXslIGlmIGxv b3AubGFzdCAlfSl7JSBlbmRpZiAlfXslIGVuZGlmICV9Cit7JSBlbmRmb3Ig JX17JSBlbmRpZiAtJX07Cit7JSBpZiBkYXRhLmRlc2NyaXB0aW9uICV9CisK K0NPTU1FTlQgT04gRk9SRUlHTiBUQUJMRSB7eyBjb25ufHF0SWRlbnQoZGF0 YS5iYXNlbnNwLCBkYXRhLm5hbWUpIH19CisgICAgSVMgJ3t7IGRhdGEuZGVz Y3JpcHRpb24gfX0nOworeyUgZW5kaWYgLSV9Cit7JSBpZiBkYXRhLnNlY2xh YmVscyAlfQoreyUgZm9yIHIgaW4gZGF0YS5zZWNsYWJlbHMgJX0KK3slIGlm IHIubGFiZWwgYW5kIHIucHJvdmlkZXIgJX0KKwore3sgU0VDTEFCTEUuU0VU KGNvbm4sICdGT1JFSUdOIFRBQkxFJywgZGF0YS5uYW1lLCByLnByb3ZpZGVy LCByLmxhYmVsLCBkYXRhLmJhc2Vuc3ApIH19Cit7JSBlbmRpZiAlfQoreyUg ZW5kZm9yICV9Cit7JSBlbmRpZiAlfQoreyUgZW5kaWYgJX0KZGlmZiAtLWdp dCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRlcy9m b3JlaWduX3RhYmxlcy9zcWwvOS4xX3BsdXMvZGVsZXRlLnNxbCBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRlcy9mb3JlaWduX3Rh Ymxlcy9zcWwvOS4xX3BsdXMvZGVsZXRlLnNxbApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwLi42MjQzZTA1Ci0tLSAvZGV2L251bGwKKysr IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvdGVtcGxhdGVzL2Zv cmVpZ25fdGFibGVzL3NxbC85LjFfcGx1cy9kZWxldGUuc3FsCkBAIC0wLDAg KzEsMTUgQEAKK3slIGlmIHNjaWQgYW5kIGZvaWQgJX0KK1NFTEVDVAorICAg IGMucmVsbmFtZSBBUyBuYW1lLCBuc3BuYW1lIGFzIGJhc2Vuc3AKK0ZST00K KyAgICBwZ19jbGFzcyBjCitMRUZUIE9VVEVSIEpPSU4KKyAgICBwZ19uYW1l c3BhY2UgbnNwIE9OIChuc3Aub2lkPWMucmVsbmFtZXNwYWNlKQorV0hFUkUK KyAgICBjLnJlbG5hbWVzcGFjZSA9IHt7c2NpZH19OjpvaWQKKyAgICBBTkQg Yy5vaWQgPSB7e2ZvaWR9fTo6b2lkOworeyUgZW5kaWYgJX0KKworeyUgaWYg bmFtZSAlfQorRFJPUCBGT1JFSUdOIFRBQkxFIHt7IGNvbm58cXRJZGVudChi YXNlbnNwLCBuYW1lKSB9fXslIGlmIGNhc2NhZGUgJX0gQ0FTQ0FERXslIGVu ZGlmICV9OworeyUgZW5kaWYgJX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRlcy9mb3JlaWduX3RhYmxlcy9z cWwvOS4xX3BsdXMvZ2V0X2NvbGxhdGlvbnMuc3FsIGIvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvZm9yZWlnbl90YWJsZXMvdGVtcGxhdGVzL2ZvcmVpZ25fdGFibGVzL3Nx bC85LjFfcGx1cy9nZXRfY29sbGF0aW9ucy5zcWwKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uZTU5YzE3ZAotLS0gL2Rldi9udWxsCisr KyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRlcy9m b3JlaWduX3RhYmxlcy9zcWwvOS4xX3BsdXMvZ2V0X2NvbGxhdGlvbnMuc3Fs CkBAIC0wLDAgKzEsMTAgQEAKK1NFTEVDVCAtLW5zcG5hbWUsIGNvbGxuYW1l LAorICAgIENBU0UgV0hFTiBsZW5ndGgobnNwbmFtZSkgPiAwIEFORCBsZW5n dGgoY29sbG5hbWUpID4gMCAgVEhFTgorICAgIGNvbmNhdChuc3BuYW1lLCAn LiInLCBjb2xsbmFtZSwnIicpCisgICAgRUxTRSAnJyBFTkQgQVMgY29weV9j b2xsYXRpb24KK0ZST00KKyAgICBwZ19jb2xsYXRpb24gYywgcGdfbmFtZXNw YWNlIG4KK1dIRVJFCisgICAgYy5jb2xsbmFtZXNwYWNlPW4ub2lkCitPUkRF UiBCWQorICAgIG5zcG5hbWUsIGNvbGxuYW1lOwpkaWZmIC0tZ2l0IGEvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvdGVtcGxhdGVzL2ZvcmVpZ25f dGFibGVzL3NxbC85LjFfcGx1cy9nZXRfY29sdW1ucy5zcWwgYi93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90YWJs ZXMvc3FsLzkuMV9wbHVzL2dldF9jb2x1bW5zLnNxbApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi40YmY1ZTE3Ci0tLSAvZGV2L251bGwK KysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvdGVtcGxhdGVz L2ZvcmVpZ25fdGFibGVzL3NxbC85LjFfcGx1cy9nZXRfY29sdW1ucy5zcWwK QEAgLTAsMCArMSwyMiBAQAorU0VMRUNUCisgICAgYXR0bmFtZSwgYXR0bmRp bXMsIGF0dHR5cG1vZCwgZm9ybWF0X3R5cGUodC5vaWQsTlVMTCkgQVMgZGF0 YXR5cGUsCisgICAgZm9ybWF0X3R5cGUodC5vaWQsIGF0dC5hdHR0eXBtb2Qp IEFTIGZ1bGx0eXBlLCBhdHRub3RudWxsLCBhdHRudW0sCisgICAgKFNFTEVD VCBDT1VOVCgxKSBmcm9tIHBnX3R5cGUgdDIgV0hFUkUgdDIudHlwbmFtZT10 LnR5cG5hbWUpID4gMSBBUyBpc2R1cCwKKyAgICAoCisgICAgICAgIGF0dG5h bWUgfHwgJyAnIHx8IGZvcm1hdF90eXBlKHQub2lkLCBhdHQuYXR0dHlwbW9k KSB8fCAnICcgfHwKKyAgICAgICAgKENBU0UgV0hFTiBhdHRub3RudWxsPSd0 cnVlJworICAgICAgICBUSEVOICdOT1QgTlVMTCcgRUxTRSAnTlVMTCcKKyAg ICAgICAgRU5EKQorICAgICkgYXMgc3RyY29sdW1uCitGUk9NCisgICAgcGdf YXR0cmlidXRlIGF0dAorSk9JTgorICAgIHBnX3R5cGUgdCBPTiB0Lm9pZD1h dHR0eXBpZAorSk9JTgorICAgIHBnX25hbWVzcGFjZSBuc3AgT04gdC50eXBu YW1lc3BhY2U9bnNwLm9pZAorTEVGVCBPVVRFUiBKT0lOCisgICAgcGdfdHlw ZSBiIE9OIHQudHlwZWxlbT1iLm9pZAorV0hFUkUKKyAgICBhdHQuYXR0cmVs aWQ9e3tmb2lkfX06Om9pZAorICAgIEFORCBhdHRudW0+MAorT1JERVIgYnkg YXR0bnVtOwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90 YWJsZXMvdGVtcGxhdGVzL2ZvcmVpZ25fdGFibGVzL3NxbC85LjFfcGx1cy9n ZXRfY29uc3RyYWludHMuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90 YWJsZXMvdGVtcGxhdGVzL2ZvcmVpZ25fdGFibGVzL3NxbC85LjFfcGx1cy9n ZXRfY29uc3RyYWludHMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLmZjOTM1NDkKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90YWJs ZXMvc3FsLzkuMV9wbHVzL2dldF9jb25zdHJhaW50cy5zcWwKQEAgLTAsMCAr MSw3IEBACitTRUxFQ1QKKyAgICBjb25uYW1lLCBjb250eXBlLCBjb25zcmMK K0ZST00KKyAgICBwZ19jb25zdHJhaW50CitXSEVSRQorICAgIGNvbnJlbGlk PXt7Zm9pZH19OjpvaWQKK09SREVSIGJ5IGNvbm5hbWU7CmRpZmYgLS1naXQg YS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9y ZWlnbl90YWJsZXMvc3FsLzkuMV9wbHVzL2dldF9mb3JlaWduX3NlcnZlcnMu c3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvdGVtcGxhdGVz L2ZvcmVpZ25fdGFibGVzL3NxbC85LjFfcGx1cy9nZXRfZm9yZWlnbl9zZXJ2 ZXJzLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4x OTgwZjAyCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9y ZWlnbl90YWJsZXMvdGVtcGxhdGVzL2ZvcmVpZ25fdGFibGVzL3NxbC85LjFf cGx1cy9nZXRfZm9yZWlnbl9zZXJ2ZXJzLnNxbApAQCAtMCwwICsxLDUgQEAK K1NFTEVDVAorICAgIHNydm5hbWUKK0ZST00KKyAgICBwZ19mb3JlaWduX3Nl cnZlcgorT1JERVIgQlkgc3J2bmFtZTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRlcy9mb3JlaWduX3RhYmxl cy9zcWwvOS4xX3BsdXMvZ2V0X29pZC5zcWwgYi93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9m b3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90YWJsZXMvc3FsLzku MV9wbHVzL2dldF9vaWQuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLjlhNWY1ZDEKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90YWJs ZXMvc3FsLzkuMV9wbHVzL2dldF9vaWQuc3FsCkBAIC0wLDAgKzEsMTkgQEAK K3slIGlmIGJhc2Vuc3AgJX0KK1NFTEVDVAorICAgIGMub2lkLCBibi5vaWQg YXMgc2NpZAorRlJPTQorICAgIHBnX2NsYXNzIGMKK0pPSU4KKyAgICBwZ19u YW1lc3BhY2UgYm4gT04gYm4ub2lkPWMucmVsbmFtZXNwYWNlCitXSEVSRQor ICAgIGJuLm5zcG5hbWUgPSB7eyBiYXNlbnNwfHF0TGl0ZXJhbCB9fQorICAg IEFORCBjLnJlbG5hbWU9e3sgbmFtZXxxdExpdGVyYWwgfX07CisKK3slIGVs aWYgZm9pZCAlfQorU0VMRUNUCisgICAgYy5yZWxuYW1lc3BhY2UgYXMgc2Np ZAorRlJPTQorICAgIHBnX2NsYXNzIGMKK1dIRVJFCisgICAgYy5vaWQgPSB7 e2ZvaWR9fTo6b2lkOworeyUgZW5kaWYgJX0KZGlmZiAtLWdpdCBhL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRlcy9mb3JlaWduX3Rh Ymxlcy9zcWwvOS4xX3BsdXMvbm9kZS5zcWwgYi93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9m b3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90YWJsZXMvc3FsLzku MV9wbHVzL25vZGUuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAuLjJkM2EzOGIKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90YWJsZXMv c3FsLzkuMV9wbHVzL25vZGUuc3FsCkBAIC0wLDAgKzEsMTIgQEAKK1NFTEVD VAorICAgIGMub2lkLCBjLnJlbG5hbWUgQVMgbmFtZSwgcGdfZ2V0X3VzZXJi eWlkKHJlbG93bmVyKSBBUyBvd25lciwKKyAgICBmdG9wdGlvbnMsIG5zcG5h bWUgYXMgYmFzZW5zcAorRlJPTQorICAgIHBnX2NsYXNzIGMKK0pPSU4KKyAg ICBwZ19mb3JlaWduX3RhYmxlIGZ0IE9OIGMub2lkPWZ0LmZ0cmVsaWQKK0xF RlQgT1VURVIgSk9JTgorICAgIHBnX25hbWVzcGFjZSBuc3AgT04gKG5zcC5v aWQ9Yy5yZWxuYW1lc3BhY2UpCitXSEVSRQorICAgIGMucmVsbmFtZXNwYWNl ID0ge3tzY2lkfX06Om9pZAorT1JERVIgQlkgYy5yZWxuYW1lOwpkaWZmIC0t Z2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvdGVtcGxhdGVz L2ZvcmVpZ25fdGFibGVzL3NxbC85LjFfcGx1cy9wcm9wZXJ0aWVzLnNxbCBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRlcy9mb3Jl aWduX3RhYmxlcy9zcWwvOS4xX3BsdXMvcHJvcGVydGllcy5zcWwKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjVhYmMxYgotLS0gL2Rl di9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3Rl bXBsYXRlcy9mb3JlaWduX3RhYmxlcy9zcWwvOS4xX3BsdXMvcHJvcGVydGll cy5zcWwKQEAgLTAsMCArMSwyNSBAQAorU0VMRUNUCisgICAgYy5vaWQsIGMu cmVsbmFtZSBBUyBuYW1lLCBwZ19nZXRfdXNlcmJ5aWQocmVsb3duZXIpIEFT IG93bmVyLAorICAgIGZ0b3B0aW9ucywgc3J2bmFtZSBBUyBmdHNydm5hbWUs IGRlc2NyaXB0aW9uLCBuc3BuYW1lIGFzIGJhc2Vuc3AsCisgICAgKFNFTEVD VAorICAgICAgICBhcnJheV9hZ2cocHJvdmlkZXIgfHwgJz0nIHx8IGxhYmVs KQorICAgIEZST00KKyAgICAgICAgcGdfc2VjbGFiZWwgc2wxCisgICAgV0hF UkUKKyAgICAgICAgc2wxLm9iam9pZD1jLm9pZCkgQVMgc2VjbGFiZWxzCitG Uk9NCisgICAgcGdfY2xhc3MgYworSk9JTgorICAgIHBnX2ZvcmVpZ25fdGFi bGUgZnQgT04gYy5vaWQ9ZnQuZnRyZWxpZAorTEVGVCBPVVRFUiBKT0lOCisg ICAgcGdfZm9yZWlnbl9zZXJ2ZXIgZnMgT04gZnQuZnRzZXJ2ZXI9ZnMub2lk CitMRUZUIE9VVEVSIEpPSU4KKyAgICBwZ19kZXNjcmlwdGlvbiBkZXMgT04g KGRlcy5vYmpvaWQ9Yy5vaWQgQU5EIGRlcy5jbGFzc29pZD0ncGdfY2xhc3Mn OjpyZWdjbGFzcykKK0xFRlQgT1VURVIgSk9JTgorICAgIHBnX25hbWVzcGFj ZSBuc3AgT04gKG5zcC5vaWQ9Yy5yZWxuYW1lc3BhY2UpCitXSEVSRQorICAg IGMucmVsbmFtZXNwYWNlID0ge3tzY2lkfX06Om9pZAorICAgIHslIGlmIGZv aWQgJX0KKyAgICBBTkQgYy5vaWQgPSB7e2ZvaWR9fTo6b2lkCisgICAgeyUg ZW5kaWYgJX0KK09SREVSIEJZIGMucmVsbmFtZTsKZGlmZiAtLWdpdCBhL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRlcy9mb3JlaWdu X3RhYmxlcy9zcWwvOS4xX3BsdXMvdXBkYXRlLnNxbCBiL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRlcy9mb3JlaWduX3RhYmxlcy9z cWwvOS4xX3BsdXMvdXBkYXRlLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwLi4yNWZiY2VmCi0tLSAvZGV2L251bGwKKysrIGIvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvdGVtcGxhdGVzL2ZvcmVpZ25f dGFibGVzL3NxbC85LjFfcGx1cy91cGRhdGUuc3FsCkBAIC0wLDAgKzEsMTA1 IEBACit7JSBpbXBvcnQgJ21hY3Jvcy9zY2hlbWFzL3NlY3VyaXR5Lm1hY3Jv cycgYXMgU0VDTEFCTEUgJX0KK3slIGlmIGRhdGEgJX0KK3slIHNldCBuYW1l ID0gb19kYXRhLm5hbWUgJX0KK3slIGlmIGRhdGEubmFtZSAlfQoreyUgaWYg ZGF0YS5uYW1lICE9IG9fZGF0YS5uYW1lICV9CitBTFRFUiBGT1JFSUdOIFRB QkxFIHt7IGNvbm58cXRJZGVudChvX2RhdGEuYmFzZW5zcCwgb19kYXRhLm5h bWUpIH19CitSRU5BTUUgVE8ge3sgY29ubnxxdElkZW50KGRhdGEubmFtZSkg fX07Cit7JSBzZXQgbmFtZSA9IGRhdGEubmFtZSAlfQoreyUgZW5kaWYgJX0K K3slIGVuZGlmIC0lfQorCit7JSBpZiBkYXRhLm93bmVyICV9CisKK0FMVEVS IEZPUkVJR04gVEFCTEUge3sgY29ubnxxdElkZW50KG9fZGF0YS5iYXNlbnNw LCBuYW1lKSB9fQorT1dORVIgVE8ge3sgZGF0YS5vd25lciB9fTsKK3slIGVu ZGlmIC0lfQorCit7JSBpZiBkYXRhLmNvbHVtbnMgJX0KK3slIGZvciBjIGlu IGRhdGEuY29sdW1ucy5kZWxldGVkICV9CisKK0FMVEVSIEZPUkVJR04gVEFC TEUge3sgY29ubnxxdElkZW50KG9fZGF0YS5iYXNlbnNwLCBuYW1lKSB9fQor RFJPUCBDT0xVTU4ge3tjb25ufHF0SWRlbnQoYy5hdHRuYW1lKX19OworeyUg ZW5kZm9yIC0lfQorCit7JSBmb3IgYyBpbiBkYXRhLmNvbHVtbnMuYWRkZWQg JX0KKworQUxURVIgRk9SRUlHTiBUQUJMRSB7eyBjb25ufHF0SWRlbnQob19k YXRhLmJhc2Vuc3AsIG5hbWUpIH19CitBREQgQ09MVU1OIHt7Y29ubnxxdElk ZW50KGMuYXR0bmFtZSl9fSB7eyBjb25ufHF0VHlwZUlkZW50KGMuZGF0YXR5 cGUpIH19eyUgaWYgYy50eXBsZW4gJX0oe3tjLnR5cGxlbn19IHslIGlmIGMu cHJlY2lzaW9uICV9LCB7e2MucHJlY2lzaW9ufX17JSBlbmRpZiAlfSl7JSBl bmRpZiAlfQoreyUgaWYgYy5hdHRub3RudWxsICV9IE5PVCBOVUxMeyUgZWxz ZSAlfSBOVUxMeyUgZW5kaWYgJX0KK3slIGlmIGMudHlwZGVmYXVsdCAlfSBE RUZBVUxUIHt7Yy50eXBkZWZhdWx0fX17JSBlbmRpZiAlfQoreyUgaWYgYy5j b2xsbmFtZSAlfSBDT0xMQVRFIHt7Yy5jb2xsbmFtZX19eyUgZW5kaWYgJX07 Cit7JSBlbmRmb3IgLSV9CisKK3slIGZvciBjIGluIGRhdGEuY29sdW1ucy5j aGFuZ2VkICV9CisKK0FMVEVSIEZPUkVJR04gVEFCTEUge3sgY29ubnxxdElk ZW50KG9fZGF0YS5iYXNlbnNwLCBuYW1lKSB9fQorRFJPUCBDT0xVTU4ge3tj b25ufHF0SWRlbnQob19kYXRhWydjb2x1bW5zJ11bYy5hdHRudW1dWydhdHRu YW1lJ10pfX07CisKK0FMVEVSIEZPUkVJR04gVEFCTEUge3sgY29ubnxxdElk ZW50KG9fZGF0YS5iYXNlbnNwLCBuYW1lKSB9fQorQUREIENPTFVNTiB7e2Nv bm58cXRJZGVudChjLmF0dG5hbWUpfX0ge3sgY29ubnxxdFR5cGVJZGVudChj LmRhdGF0eXBlKSB9fXslIGlmIGMudHlwbGVuICV9KHt7Yy50eXBsZW59fSB7 JSBpZiBjLnByZWNpc2lvbiAlfSwge3tjLnByZWNpc2lvbn19eyUgZW5kaWYg JX0peyUgZW5kaWYgJX0KK3slIGlmIGMuYXR0bm90bnVsbCAlfSBOT1QgTlVM THslIGVsc2UgJX0gTlVMTHslIGVuZGlmICV9Cit7JSBpZiBjLnR5cGRlZmF1 bHQgJX0gREVGQVVMVCB7e2MudHlwZGVmYXVsdH19eyUgZW5kaWYgJX0KK3sl IGlmIGMuY29sbG5hbWUgJX0gQ09MTEFURSB7e2MuY29sbG5hbWV9fXslIGVu ZGlmICV9OworeyUgZW5kZm9yICV9Cit7JSBlbmRpZiAtJX0KKworCit7JSBp ZiBkYXRhLmZ0b3B0aW9ucyAlfQoreyUgZm9yIG8gaW4gZGF0YS5mdG9wdGlv bnMuZGVsZXRlZCAlfQoreyUgaWYgby5vcHRpb24gYW5kIG8udmFsdWUgJX0K KworQUxURVIgRk9SRUlHTiBUQUJMRSB7eyBjb25ufHF0SWRlbnQob19kYXRh LmJhc2Vuc3AsIG5hbWUpIH19CitPUFRJT05TICggRFJPUCB7e28ub3B0aW9u fX0ge3tvLnZhbHVlfHF0TGl0ZXJhbH19KTsKK3slIGVuZGlmICV9Cit7JSBl bmRmb3IgJX0KKworeyUgZm9yIG8gaW4gZGF0YS5mdG9wdGlvbnMuYWRkZWQg JX0KK3slIGlmIG8ub3B0aW9uIGFuZCBvLnZhbHVlICV9CisKK0FMVEVSIEZP UkVJR04gVEFCTEUge3sgY29ubnxxdElkZW50KG9fZGF0YS5iYXNlbnNwLCBu YW1lKSB9fQorT1BUSU9OUyAoQUREIHt7by5vcHRpb259fSB7e28udmFsdWV8 cXRMaXRlcmFsfX0pOworeyUgZW5kaWYgJX0KK3slIGVuZGZvciAlfQorCit7 JSBmb3IgbyBpbiBkYXRhLmZ0b3B0aW9ucy5jaGFuZ2VkICV9Cit7JSBpZiBv Lm9wdGlvbiBhbmQgby52YWx1ZSAlfQorCitBTFRFUiBGT1JFSUdOIFRBQkxF IHt7IGNvbm58cXRJZGVudChvX2RhdGEuYmFzZW5zcCwgbmFtZSkgfX0KK09Q VElPTlMgKFNFVCB7e28ub3B0aW9ufX0ge3tvLnZhbHVlfHF0TGl0ZXJhbH19 KTsKK3slIGVuZGlmICV9Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmIC0lfQor CisKK3slIHNldCBzZWNsYWJlbHMgPSBkYXRhLnNlY2xhYmVscyAlfQoreyUg aWYgJ2RlbGV0ZWQnIGluIHNlY2xhYmVscyBhbmQgc2VjbGFiZWxzLmRlbGV0 ZWR8bGVuZ3RoID4gMCAlfQoreyUgZm9yIHIgaW4gc2VjbGFiZWxzLmRlbGV0 ZWQgJX0KK3t7IFNFQ0xBQkxFLlVOU0VUKGNvbm4sICdGT1JFSUdOIFRBQkxF JywgbmFtZSwgci5wcm92aWRlciwgb19kYXRhLmJhc2Vuc3ApIH19Cit7JSBl bmRmb3IgJX0KK3slIGVuZGlmIC0lfQoreyUgaWYgJ2FkZGVkJyBpbiBzZWNs YWJlbHMgYW5kIHNlY2xhYmVscy5hZGRlZHxsZW5ndGggPiAwICV9Cit7JSBm b3IgciBpbiBzZWNsYWJlbHMuYWRkZWQgJX0KKwore3sgU0VDTEFCTEUuU0VU KGNvbm4sICdGT1JFSUdOIFRBQkxFJywgbmFtZSwgci5wcm92aWRlciwgci5s YWJlbCwgb19kYXRhLmJhc2Vuc3ApIH19Cit7JSBlbmRmb3IgJX0KK3slIGVu ZGlmIC0lfQoreyUgaWYgJ2NoYW5nZWQnIGluIHNlY2xhYmVscyBhbmQgc2Vj bGFiZWxzLmNoYW5nZWR8bGVuZ3RoID4gMCAlfQoreyUgZm9yIHIgaW4gc2Vj bGFiZWxzLmNoYW5nZWQgJX0KKwore3sgU0VDTEFCTEUuU0VUKGNvbm4sICdG T1JFSUdOIFRBQkxFJywgbmFtZSwgci5wcm92aWRlciwgci5sYWJlbCwgb19k YXRhLmJhc2Vuc3ApIH19Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmIC0lfQor Cit7JSBpZiBkYXRhLmRlc2NyaXB0aW9uICV9CisKK0NPTU1FTlQgT04gRk9S RUlHTiBUQUJMRSB7eyBjb25ufHF0SWRlbnQob19kYXRhLmJhc2Vuc3AsIG5h bWUpIH19CisgICAgSVMge3sgZGF0YS5kZXNjcmlwdGlvbnxxdExpdGVyYWwg fX07Cit7JSBlbmRpZiAtJX0KKworeyUgaWYgZGF0YS5iYXNlbnNwICV9CisK K0FMVEVSIEZPUkVJR04gVEFCTEUge3sgY29ubnxxdElkZW50KG9fZGF0YS5i YXNlbnNwLCBuYW1lKSB9fQorICAgIFNFVCBTQ0hFTUEge3sgY29ubnxxdElk ZW50KGRhdGEuYmFzZW5zcCkgfX07Cit7JSBlbmRpZiAlfQoreyUgZW5kaWYg JX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVz L3RlbXBsYXRlcy9mb3JlaWduX3RhYmxlcy9zcWwvOS4zX3BsdXMvY3JlYXRl LnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRl cy9mb3JlaWduX3RhYmxlcy9zcWwvOS4zX3BsdXMvY3JlYXRlLnNxbApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40Zjk3MGRmCi0tLSAv ZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMv dGVtcGxhdGVzL2ZvcmVpZ25fdGFibGVzL3NxbC85LjNfcGx1cy9jcmVhdGUu c3FsCkBAIC0wLDAgKzEsMzAgQEAKK3slIGltcG9ydCAnbWFjcm9zL3NjaGVt YXMvc2VjdXJpdHkubWFjcm9zJyBhcyBTRUNMQUJMRSAlfQoreyUgaWYgZGF0 YSAlfQorQ1JFQVRFIEZPUkVJR04gVEFCTEUge3sgY29ubnxxdElkZW50KGRh dGEuYmFzZW5zcCwgZGF0YS5uYW1lKSB9fSAoeyUgaWYgZGF0YS5jb2x1bW5z ICV9Cit7JSBmb3IgYyBpbiBkYXRhLmNvbHVtbnMgJX0KK3slIGlmIG5vdCBs b29wLmZpcnN0JX0gICAgeyUgZW5kaWYgJX17e2Nvbm58cXRJZGVudChjLmF0 dG5hbWUpfX0ge3tjb25ufHF0VHlwZUlkZW50KGMuZGF0YXR5cGUpIH19eyUg aWYgYy50eXBsZW4gJX0oe3tjLnR5cGxlbn19eyUgaWYgYy5wcmVjaXNpb24g JX0sIHt7Yy5wcmVjaXNpb259fXslIGVuZGlmICV9KXslIGVuZGlmICV9eyUg aWYgYy5hdHRub3RudWxsICV9CisgTk9UIE5VTEx7JSBlbHNlICV9IE5VTEx7 JSBlbmRpZiAlfXslIGlmIGMudHlwZGVmYXVsdCAlfQorIERFRkFVTFQge3tj LnR5cGRlZmF1bHR9fXslIGVuZGlmICV9eyUgaWYgYy5jb2xsbmFtZSAlfQor IENPTExBVEUge3tjLmNvbGxuYW1lfX17JSBlbmRpZiAlfQoreyUgaWYgbm90 IGxvb3AubGFzdCAlfSwKK3slIGVuZGlmICV9eyUgZW5kZm9yIC0lfXslIGVu ZGlmICV9CispCisgICAgU0VSVkVSIHt7IGNvbm58cXRJZGVudChkYXRhLmZ0 c3J2bmFtZSkgfX17JSBpZiBkYXRhLmZ0b3B0aW9ucyAlfQoreyUgZm9yIG8g aW4gZGF0YS5mdG9wdGlvbnMgJX0KK3slIGlmIG8ub3B0aW9uIGFuZCBvLnZh bHVlICV9Cit7JSBpZiBsb29wLmZpcnN0ICV9ICAgIE9QVElPTlMgKHslIGVu ZGlmICV9eyUgaWYgbm90IGxvb3AuZmlyc3QgJX0sIHslIGVuZGlmICV9e3tv Lm9wdGlvbn19IHt7by52YWx1ZXxxdExpdGVyYWx9fXslIGlmIGxvb3AubGFz dCAlfSl7JSBlbmRpZiAlfXslIGVuZGlmICV9Cit7JSBlbmRmb3IgJX17JSBl bmRpZiAlfTsKK3slIGlmIGRhdGEuZGVzY3JpcHRpb24gJX0KKworQ09NTUVO VCBPTiBGT1JFSUdOIFRBQkxFIHt7IGNvbm58cXRJZGVudChkYXRhLmJhc2Vu c3AsIGRhdGEubmFtZSkgfX0KKyAgICBJUyAne3sgZGF0YS5kZXNjcmlwdGlv biB9fSc7Cit7JSBlbmRpZiAtJX0KK3slIGlmIGRhdGEuc2VjbGFiZWxzICV9 Cit7JSBmb3IgciBpbiBkYXRhLnNlY2xhYmVscyAlfQoreyUgaWYgci5zZWN1 cml0eV9sYWJlbCBhbmQgci5wcm92aWRlciAlfQorCit7eyBTRUNMQUJMRS5T RVQoY29ubiwgJ0ZPUkVJR04gVEFCTEUnLCBkYXRhLm5hbWUsIHIucHJvdmlk ZXIsIHIuc2VjdXJpdHlfbGFiZWwsIGRhdGEuYmFzZW5zcCkgfX0KK3slIGVu ZGlmICV9Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmICV9Cit7JSBlbmRpZiAl fQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMv dGVtcGxhdGVzL2ZvcmVpZ25fdGFibGVzL3NxbC85LjNfcGx1cy9kZWxldGUu c3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvdGVtcGxhdGVz L2ZvcmVpZ25fdGFibGVzL3NxbC85LjNfcGx1cy9kZWxldGUuc3FsCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViYjA5NjkKLS0tIC9k ZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy90 ZW1wbGF0ZXMvZm9yZWlnbl90YWJsZXMvc3FsLzkuM19wbHVzL2RlbGV0ZS5z cWwKQEAgLTAsMCArMSwxNyBAQAoreyUgaWYgc2NpZCBhbmQgZm9pZCAlfQor U0VMRUNUCisgICAgYy5yZWxuYW1lIEFTIG5hbWUsIG5zcG5hbWUgYXMgYmFz ZW5zcAorRlJPTQorICAgIHBnX2NsYXNzIGMKK0xFRlQgT1VURVIgSk9JTgor ICAgIHBnX25hbWVzcGFjZSBuc3AgT04gKG5zcC5vaWQ9Yy5yZWxuYW1lc3Bh Y2UpCitXSEVSRQorICAgIGMucmVsbmFtZXNwYWNlID0ge3tzY2lkfX06Om9p ZAorQU5ECisgICAgYy5vaWQgPSB7e2ZvaWR9fTo6b2lkOworeyUgZW5kaWYg JX0KKworCit7JSBpZiBuYW1lICV9CitEUk9QIEZPUkVJR04gVEFCTEUge3sg Y29ubnxxdElkZW50KGJhc2Vuc3AsIG5hbWUpIH19eyUgaWYgY2FzY2FkZSV9 IENBU0NBREV7JSBlbmRpZiAlfTsKK3slIGVuZGlmICV9CmRpZmYgLS1naXQg YS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9y ZWlnbl90YWJsZXMvc3FsLzkuM19wbHVzL2dldF9jb2xsYXRpb25zLnNxbCBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRlcy9mb3Jl aWduX3RhYmxlcy9zcWwvOS4zX3BsdXMvZ2V0X2NvbGxhdGlvbnMuc3FsCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4ZDI3NGIKLS0t IC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxl cy90ZW1wbGF0ZXMvZm9yZWlnbl90YWJsZXMvc3FsLzkuM19wbHVzL2dldF9j b2xsYXRpb25zLnNxbApAQCAtMCwwICsxLDkgQEAKK1NFTEVDVCAtLW5zcG5h bWUsIGNvbGxuYW1lLAorICAgIENBU0UgV0hFTiBsZW5ndGgobnNwbmFtZSkg PiAwIEFORCBsZW5ndGgoY29sbG5hbWUpID4gMCAgVEhFTgorICAgIGNvbmNh dChuc3BuYW1lLCAnLiInLCBjb2xsbmFtZSwnIicpCisgICAgRUxTRSAnJyBF TkQgQVMgY29weV9jb2xsYXRpb24KK0ZST00KKyAgICBwZ19jb2xsYXRpb24g YywgcGdfbmFtZXNwYWNlIG4KK1dIRVJFCisgICAgYy5jb2xsbmFtZXNwYWNl PW4ub2lkCitPUkRFUiBCWSBuc3BuYW1lLCBjb2xsbmFtZTsKZGlmZiAtLWdp dCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRlcy9m b3JlaWduX3RhYmxlcy9zcWwvOS4zX3BsdXMvZ2V0X2NvbHVtbnMuc3FsIGIv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvdGVtcGxhdGVzL2ZvcmVp Z25fdGFibGVzL3NxbC85LjNfcGx1cy9nZXRfY29sdW1ucy5zcWwKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDgyNGQzZQotLS0gL2Rl di9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3Rl bXBsYXRlcy9mb3JlaWduX3RhYmxlcy9zcWwvOS4zX3BsdXMvZ2V0X2NvbHVt bnMuc3FsCkBAIC0wLDAgKzEsMzQgQEAKK1NFTEVDVAorICAgIGF0dG5hbWUs IGF0dG5kaW1zLCBhdHR0eXBtb2QsIGZvcm1hdF90eXBlKHQub2lkLE5VTEwp IEFTIGRhdGF0eXBlLAorICAgIGF0dG5vdG51bGwsIGF0dG51bSwgZm9ybWF0 X3R5cGUodC5vaWQsIGF0dC5hdHR0eXBtb2QpIEFTIGZ1bGx0eXBlLAorICAg IENBU0UgV0hFTiBsZW5ndGgoY24ubnNwbmFtZSkgPiAwIEFORCBsZW5ndGgo Y2wuY29sbG5hbWUpID4gMCBUSEVOCisgICAgY29uY2F0KGNuLm5zcG5hbWUs ICcuIicsIGNsLmNvbGxuYW1lLCciJykgRUxTRSAnJyBFTkQgQVMgY29sbG5h bWUsCisgICAgKFNFTEVDVCBDT1VOVCgxKSBmcm9tIHBnX3R5cGUgdDIgV0hF UkUgdDIudHlwbmFtZT10LnR5cG5hbWUpID4gMSBBUyBpc2R1cCwKKyAgICBw Z19jYXRhbG9nLnBnX2dldF9leHByKGRlZi5hZGJpbiwgZGVmLmFkcmVsaWQp IEFTIHR5cGRlZmF1bHQsCisgICAgKAorICAgICAgICBhdHRuYW1lIHx8ICcg JyB8fCBmb3JtYXRfdHlwZSh0Lm9pZCwgYXR0LmF0dHR5cG1vZCkgfHwgJyAn IHx8CisgICAgICAgIChDQVNFIFdIRU4gYXR0bm90bnVsbD0ndHJ1ZScKKyAg ICAgICAgVEhFTiAnTk9UIE5VTEwnIEVMU0UgJ05VTEwnCisgICAgICAgIEVO RCkgfHwgJyAnIHx8CisgICAgICAgIChDQVNFIFdIRU4gcGdfY2F0YWxvZy5w Z19nZXRfZXhwcihkZWYuYWRiaW4sIGRlZi5hZHJlbGlkKTw+JycKKyAgICAg ICAgVEhFTiAnREVGQVVMVCAnIHx8IHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIo ZGVmLmFkYmluLCBkZWYuYWRyZWxpZCkKKyAgICAgICAgRUxTRSAnJyBFTkQp CisgICAgKSBhcyBzdHJjb2x1bW4KK0ZST00KKyAgICBwZ19hdHRyaWJ1dGUg YXR0CitKT0lOCisgICAgcGdfdHlwZSB0IE9OIHQub2lkPWF0dHR5cGlkCitK T0lOCisgICAgcGdfbmFtZXNwYWNlIG5zcCBPTiB0LnR5cG5hbWVzcGFjZT1u c3Aub2lkCitMRUZUIE9VVEVSIEpPSU4KKyAgICBwZ19hdHRyZGVmIGRlZiBP TiBhZHJlbGlkPWF0dC5hdHRyZWxpZCBBTkQgYWRudW09YXR0LmF0dG51bQor TEVGVCBPVVRFUiBKT0lOCisgICAgcGdfdHlwZSBiIE9OIHQudHlwZWxlbT1i Lm9pZAorTEVGVCBPVVRFUiBKT0lOCisgICAgcGdfY29sbGF0aW9uIGNsIE9O IHQudHlwY29sbGF0aW9uPWNsLm9pZAorTEVGVCBPVVRFUiBKT0lOCisgICAg cGdfbmFtZXNwYWNlIGNuIE9OIGNsLmNvbGxuYW1lc3BhY2U9Y24ub2lkCitX SEVSRQorICAgIGF0dC5hdHRyZWxpZD17e2ZvaWR9fTo6b2lkCisgICAgQU5E IGF0dG51bT4wCitPUkRFUiBieSBhdHRudW07CmRpZmYgLS1naXQgYS93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90 YWJsZXMvc3FsLzkuM19wbHVzL2dldF9jb25zdHJhaW50cy5zcWwgYi93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90 YWJsZXMvc3FsLzkuM19wbHVzL2dldF9jb25zdHJhaW50cy5zcWwKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmM5MzU0OQotLS0gL2Rl di9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3Rl bXBsYXRlcy9mb3JlaWduX3RhYmxlcy9zcWwvOS4zX3BsdXMvZ2V0X2NvbnN0 cmFpbnRzLnNxbApAQCAtMCwwICsxLDcgQEAKK1NFTEVDVAorICAgIGNvbm5h bWUsIGNvbnR5cGUsIGNvbnNyYworRlJPTQorICAgIHBnX2NvbnN0cmFpbnQK K1dIRVJFCisgICAgY29ucmVsaWQ9e3tmb2lkfX06Om9pZAorT1JERVIgYnkg Y29ubmFtZTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25f dGFibGVzL3RlbXBsYXRlcy9mb3JlaWduX3RhYmxlcy9zcWwvOS4zX3BsdXMv Z2V0X2ZvcmVpZ25fc2VydmVycy5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3Jl aWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90YWJsZXMvc3FsLzkuM19w bHVzL2dldF9mb3JlaWduX3NlcnZlcnMuc3FsCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLjFjOTVjZTUKLS0tIC9kZXYvbnVsbAorKysg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9y ZWlnbl90YWJsZXMvc3FsLzkuM19wbHVzL2dldF9mb3JlaWduX3NlcnZlcnMu c3FsCkBAIC0wLDAgKzEsNiBAQAorU0VMRUNUCisgICAgc3J2bmFtZQorRlJP TQorICAgIHBnX2ZvcmVpZ25fc2VydmVyCitPUkRFUiBCWQorICAgIHNydm5h bWU7CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxl cy90ZW1wbGF0ZXMvZm9yZWlnbl90YWJsZXMvc3FsLzkuM19wbHVzL2dldF9v aWQuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvdGVtcGxh dGVzL2ZvcmVpZ25fdGFibGVzL3NxbC85LjNfcGx1cy9nZXRfb2lkLnNxbApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YTVmNWQxCi0t LSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJs ZXMvdGVtcGxhdGVzL2ZvcmVpZ25fdGFibGVzL3NxbC85LjNfcGx1cy9nZXRf b2lkLnNxbApAQCAtMCwwICsxLDE5IEBACit7JSBpZiBiYXNlbnNwICV9CitT RUxFQ1QKKyAgICBjLm9pZCwgYm4ub2lkIGFzIHNjaWQKK0ZST00KKyAgICBw Z19jbGFzcyBjCitKT0lOCisgICAgcGdfbmFtZXNwYWNlIGJuIE9OIGJuLm9p ZD1jLnJlbG5hbWVzcGFjZQorV0hFUkUKKyAgICBibi5uc3BuYW1lID0ge3sg YmFzZW5zcHxxdExpdGVyYWwgfX0KKyAgICBBTkQgYy5yZWxuYW1lPXt7IG5h bWV8cXRMaXRlcmFsIH19OworCit7JSBlbGlmIGZvaWQgJX0KK1NFTEVDVAor ICAgIGMucmVsbmFtZXNwYWNlIGFzIHNjaWQKK0ZST00KKyAgICBwZ19jbGFz cyBjCitXSEVSRQorICAgIGMub2lkID0ge3tmb2lkfX06Om9pZDsKK3slIGVu ZGlmICV9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3Rh Ymxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90YWJsZXMvc3FsLzkuM19wbHVzL25v ZGUuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvdGVtcGxh dGVzL2ZvcmVpZ25fdGFibGVzL3NxbC85LjNfcGx1cy9ub2RlLnNxbApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZDNhMzhiCi0tLSAv ZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMv dGVtcGxhdGVzL2ZvcmVpZ25fdGFibGVzL3NxbC85LjNfcGx1cy9ub2RlLnNx bApAQCAtMCwwICsxLDEyIEBACitTRUxFQ1QKKyAgICBjLm9pZCwgYy5yZWxu YW1lIEFTIG5hbWUsIHBnX2dldF91c2VyYnlpZChyZWxvd25lcikgQVMgb3du ZXIsCisgICAgZnRvcHRpb25zLCBuc3BuYW1lIGFzIGJhc2Vuc3AKK0ZST00K KyAgICBwZ19jbGFzcyBjCitKT0lOCisgICAgcGdfZm9yZWlnbl90YWJsZSBm dCBPTiBjLm9pZD1mdC5mdHJlbGlkCitMRUZUIE9VVEVSIEpPSU4KKyAgICBw Z19uYW1lc3BhY2UgbnNwIE9OIChuc3Aub2lkPWMucmVsbmFtZXNwYWNlKQor V0hFUkUKKyAgICBjLnJlbG5hbWVzcGFjZSA9IHt7c2NpZH19OjpvaWQKK09S REVSIEJZIGMucmVsbmFtZTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRlcy9mb3JlaWduX3RhYmxlcy9zcWwv OS4zX3BsdXMvcHJvcGVydGllcy5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3Jl aWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90YWJsZXMvc3FsLzkuM19w bHVzL3Byb3BlcnRpZXMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLjNmZjA4OGYKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90YWJs ZXMvc3FsLzkuM19wbHVzL3Byb3BlcnRpZXMuc3FsCkBAIC0wLDAgKzEsMjcg QEAKK1NFTEVDVAorICAgIGMub2lkLCBjLnJlbG5hbWUgQVMgbmFtZSwgcGdf Z2V0X3VzZXJieWlkKHJlbG93bmVyKSBBUyBvd25lciwKKyAgICBmdG9wdGlv bnMsIHNydm5hbWUgQVMgZnRzcnZuYW1lLCBkZXNjcmlwdGlvbiwgbnNwbmFt ZSBhcyBiYXNlbnNwLCBjb25zcmMsCisgICAgKFNFTEVDVAorICAgICAgICBh cnJheV9hZ2cocHJvdmlkZXIgfHwgJz0nIHx8IGxhYmVsKQorICAgIEZST00K KyAgICAgICAgcGdfc2hzZWNsYWJlbCBzbDEKKyAgICBXSEVSRQorICAgICAg ICBzbDEub2Jqb2lkPWMub2lkKSBBUyBzZWNsYWJlbHMKK0ZST00KKyAgICBw Z19jbGFzcyBjCitKT0lOCisgICAgcGdfZm9yZWlnbl90YWJsZSBmdCBPTiBj Lm9pZD1mdC5mdHJlbGlkCitMRUZUIE9VVEVSIEpPSU4KKyAgICBwZ19mb3Jl aWduX3NlcnZlciBmcyBPTiBmdC5mdHNlcnZlcj1mcy5vaWQKK0xFRlQgT1VU RVIgSk9JTgorICAgIHBnX2Rlc2NyaXB0aW9uIGRlcyBPTiAoZGVzLm9iam9p ZD1jLm9pZCBBTkQgZGVzLmNsYXNzb2lkPSdwZ19jbGFzcyc6OnJlZ2NsYXNz KQorTEVGVCBPVVRFUiBKT0lOCisgICAgcGdfbmFtZXNwYWNlIG5zcCBPTiAo bnNwLm9pZD1jLnJlbG5hbWVzcGFjZSkKK0xFRlQgT1VURVIgSk9JTgorICAg IHBnX2NvbnN0cmFpbnQgY24gT04gKGNuLmNvbnJlbGlkPWMub2lkKQorV0hF UkUKKyAgICBjLnJlbG5hbWVzcGFjZSA9IHt7c2NpZH19OjpvaWQKKyAgICB7 JSBpZiBmb2lkICV9CisgICAgQU5EIGMub2lkID0ge3tmb2lkfX06Om9pZAor ICAgIHslIGVuZGlmICV9CitPUkRFUiBCWSBjLnJlbG5hbWU7CmRpZmYgLS1n aXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMv Zm9yZWlnbl90YWJsZXMvc3FsLzkuM19wbHVzL3VwZGF0ZS5zcWwgYi93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90 YWJsZXMvc3FsLzkuM19wbHVzL3VwZGF0ZS5zcWwKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uNzNiMDUwOAotLS0gL2Rldi9udWxsCisr KyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRlcy9m b3JlaWduX3RhYmxlcy9zcWwvOS4zX3BsdXMvdXBkYXRlLnNxbApAQCAtMCww ICsxLDExMyBAQAoreyUgaW1wb3J0ICdtYWNyb3Mvc2NoZW1hcy9zZWN1cml0 eS5tYWNyb3MnIGFzIFNFQ0xBQkxFICV9Cit7JSBpZiBkYXRhICV9Cit7JSBz ZXQgbmFtZSA9IG9fZGF0YS5uYW1lICV9Cit7JSBpZiBkYXRhLm5hbWUgJX0K K3slIGlmIGRhdGEubmFtZSAhPSBvX2RhdGEubmFtZSAlfQorQUxURVIgRk9S RUlHTiBUQUJMRSB7eyBjb25ufHF0SWRlbnQob19kYXRhLmJhc2Vuc3AsIG9f ZGF0YS5uYW1lKSB9fQorUkVOQU1FIFRPIHt7IGNvbm58cXRJZGVudChkYXRh Lm5hbWUpIH19OworeyUgc2V0IG5hbWUgPSBkYXRhLm5hbWUgJX0KK3slIGVu ZGlmICV9Cit7JSBlbmRpZiAtJX0KK3slIGlmIGRhdGEub3duZXIgJX0KKwor QUxURVIgRk9SRUlHTiBUQUJMRSB7eyBjb25ufHF0SWRlbnQob19kYXRhLmJh c2Vuc3AsIG5hbWUpIH19CitPV05FUiBUTyB7eyBkYXRhLm93bmVyIH19Owor eyUgZW5kaWYgLSV9Cit7JSBpZiBkYXRhLmNvbHVtbnMgJX0KK3slIGZvciBj IGluIGRhdGEuY29sdW1ucy5kZWxldGVkICV9CisKK0FMVEVSIEZPUkVJR04g VEFCTEUge3sgY29ubnxxdElkZW50KG9fZGF0YS5iYXNlbnNwLCBuYW1lKSB9 fQorRFJPUCBDT0xVTU4ge3tjb25ufHF0SWRlbnQoYy5hdHRuYW1lKX19Owor eyUgZW5kZm9yIC0lfQoreyUgZm9yIGMgaW4gZGF0YS5jb2x1bW5zLmFkZGVk ICV9CisKK0FMVEVSIEZPUkVJR04gVEFCTEUge3sgY29ubnxxdElkZW50KG9f ZGF0YS5iYXNlbnNwLCBuYW1lKSB9fQorQUREIENPTFVNTiB7e2Nvbm58cXRJ ZGVudChjLmF0dG5hbWUpfX0ge3sgY29ubnxxdFR5cGVJZGVudChjLmRhdGF0 eXBlKSB9fXslIGlmIGMudHlwbGVuICV9KHt7Yy50eXBsZW59fSB7JSBpZiBj LnByZWNpc2lvbiAlfSwge3tjLnByZWNpc2lvbn19eyUgZW5kaWYgJX0peyUg ZW5kaWYgJX0KK3slIGlmIGMuYXR0bm90bnVsbCAlfSBOT1QgTlVMTHslIGVs c2UgJX0gTlVMTHslIGVuZGlmICV9Cit7JSBpZiBjLnR5cGRlZmF1bHQgJX0g REVGQVVMVCB7e2MudHlwZGVmYXVsdH19eyUgZW5kaWYgJX0KK3slIGlmIGMu Y29sbG5hbWUgJX0gQ09MTEFURSB7e2MuY29sbG5hbWV9fXslIGVuZGlmICV9 OworeyUgZW5kZm9yIC0lfQoreyUgZm9yIGMgaW4gZGF0YS5jb2x1bW5zLmNo YW5nZWQgJX0KKworQUxURVIgRk9SRUlHTiBUQUJMRSB7eyBjb25ufHF0SWRl bnQob19kYXRhLmJhc2Vuc3AsIG5hbWUpIH19CitEUk9QIENPTFVNTiB7e2Nv bm58cXRJZGVudChvX2RhdGFbJ2NvbHVtbnMnXVtjLmF0dG51bV1bJ2F0dG5h bWUnXSl9fTsKKworQUxURVIgRk9SRUlHTiBUQUJMRSB7eyBjb25ufHF0SWRl bnQob19kYXRhLmJhc2Vuc3AsIG5hbWUpIH19CitBREQgQ09MVU1OIHt7Y29u bnxxdElkZW50KGMuYXR0bmFtZSl9fSB7eyBjb25ufHF0VHlwZUlkZW50KGMu ZGF0YXR5cGUpIH19eyUgaWYgYy50eXBsZW4gJX0oe3tjLnR5cGxlbn19IHsl IGlmIGMucHJlY2lzaW9uICV9LCB7e2MucHJlY2lzaW9ufX17JSBlbmRpZiAl fSl7JSBlbmRpZiAlfQoreyUgaWYgYy5hdHRub3RudWxsICV9IE5PVCBOVUxM eyUgZWxzZSAlfSBOVUxMeyUgZW5kaWYgJX0KK3slIGlmIGMudHlwZGVmYXVs dCAlfSBERUZBVUxUIHt7Yy50eXBkZWZhdWx0fX17JSBlbmRpZiAlfQoreyUg aWYgYy5jb2xsbmFtZSAlfSBDT0xMQVRFIHt7Yy5jb2xsbmFtZX19eyUgZW5k aWYgJX07Cit7JSBlbmRmb3IgLSV9Cit7JSBlbmRpZiAtJX0KK3slIGlmIGRh dGEuY29uc3RyYWludHMgJX0KK3slIGZvciBjIGluIGRhdGEuY29uc3RyYWlu dHMuZGVsZXRlZCAlfQorCitBTFRFUiBGT1JFSUdOIFRBQkxFIHt7IGNvbm58 cXRJZGVudChvX2RhdGEuYmFzZW5zcCwgbmFtZSkgfX0KK0RST1AgQ09OU1RS QUlOVCB7e2Nvbm58cXRJZGVudChjLmNvbm5hbWUpfX07Cit7JSBlbmRmb3Ig JX0KKworeyUgZm9yIGMgaW4gZGF0YS5jb25zdHJhaW50cy5hZGRlZCAlfQor CitBTFRFUiBGT1JFSUdOIFRBQkxFIHt7IGNvbm58cXRJZGVudChvX2RhdGEu YmFzZW5zcCwgbmFtZSkgfX0KK0FERCBDT05TVFJBSU5UIHt7Y29ubnxxdElk ZW50KGMuY29ubmFtZSl9fSB7JSBpZiBjLmNvbnNyYyAlfSBDSEVDSyAoe3tj LmNvbnNyY319KXslIGVuZGlmICV9IHslIGlmIGMuY29ubm9pbmhlcml0ICV9 IE5PIElOSEVSSVR7JSBlbmRpZiAlfTsKK3slIGVuZGZvciAlfQoreyUgZW5k aWYgLSV9CisKK3slIGlmIGRhdGEuZnRvcHRpb25zICV9Cit7JSBmb3IgbyBp biBkYXRhLmZ0b3B0aW9ucy5kZWxldGVkICV9Cit7JSBpZiBvLm9wdGlvbiBh bmQgby52YWx1ZSAlfQorCitBTFRFUiBGT1JFSUdOIFRBQkxFIHt7IGNvbm58 cXRJZGVudChvX2RhdGEuYmFzZW5zcCwgbmFtZSkgfX0KK09QVElPTlMgKCBE Uk9QIHt7by5vcHRpb259fSB7e28udmFsdWV8cXRMaXRlcmFsfX0pOworeyUg ZW5kaWYgJX0KK3slIGVuZGZvciAlfQorCit7JSBmb3IgbyBpbiBkYXRhLmZ0 b3B0aW9ucy5hZGRlZCAlfQoreyUgaWYgby5vcHRpb24gYW5kIG8udmFsdWUg JX0KKworQUxURVIgRk9SRUlHTiBUQUJMRSB7eyBjb25ufHF0SWRlbnQob19k YXRhLmJhc2Vuc3AsIG5hbWUpIH19CitPUFRJT05TIChBREQge3tvLm9wdGlv bn19IHt7by52YWx1ZXxxdExpdGVyYWx9fSk7Cit7JSBlbmRpZiAlfQoreyUg ZW5kZm9yICV9CisKK3slIGZvciBvIGluIGRhdGEuZnRvcHRpb25zLmNoYW5n ZWQgJX0KK3slIGlmIG8ub3B0aW9uIGFuZCBvLnZhbHVlICV9CisKK0FMVEVS IEZPUkVJR04gVEFCTEUge3sgY29ubnxxdElkZW50KG9fZGF0YS5iYXNlbnNw LCBuYW1lKSB9fQorT1BUSU9OUyAoU0VUIHt7by5vcHRpb259fSB7e28udmFs dWV8cXRMaXRlcmFsfX0pOworeyUgZW5kaWYgJX0KK3slIGVuZGZvciAlfQor eyUgZW5kaWYgLSV9CisKK3slIHNldCBzZWNsYWJlbHMgPSBkYXRhLnNlY2xh YmVscyAlfQoreyUgaWYgJ2RlbGV0ZWQnIGluIHNlY2xhYmVscyBhbmQgc2Vj bGFiZWxzLmRlbGV0ZWR8bGVuZ3RoID4gMCAlfQoreyUgZm9yIHIgaW4gc2Vj bGFiZWxzLmRlbGV0ZWQgJX0KKwore3sgU0VDTEFCTEUuVU5TRVQoY29ubiwg J0ZPUkVJR04gVEFCTEUnLCBuYW1lLCByLnByb3ZpZGVyLCBvX2RhdGEuYmFz ZW5zcCkgfX0KK3slIGVuZGZvciAlfQoreyUgZW5kaWYgLSV9Cit7JSBpZiAn YWRkZWQnIGluIHNlY2xhYmVscyBhbmQgc2VjbGFiZWxzLmFkZGVkfGxlbmd0 aCA+IDAgJX0KK3slIGZvciByIGluIHNlY2xhYmVscy5hZGRlZCAlfQorCit7 eyBTRUNMQUJMRS5TRVQoY29ubiwgJ0ZPUkVJR04gVEFCTEUnLCBuYW1lLCBy LnByb3ZpZGVyLCByLmxhYmVsLCBvX2RhdGEuYmFzZW5zcCkgfX0KK3slIGVu ZGZvciAlfQoreyUgZW5kaWYgLSV9Cit7JSBpZiAnY2hhbmdlZCcgaW4gc2Vj bGFiZWxzIGFuZCBzZWNsYWJlbHMuY2hhbmdlZHxsZW5ndGggPiAwICV9Cit7 JSBmb3IgciBpbiBzZWNsYWJlbHMuY2hhbmdlZCAlfQorCit7eyBTRUNMQUJM RS5TRVQoY29ubiwgJ0ZPUkVJR04gVEFCTEUnLCBuYW1lLCByLnByb3ZpZGVy LCByLmxhYmVsLCBvX2RhdGEuYmFzZW5zcCkgfX0KK3slIGVuZGZvciAlfQor eyUgZW5kaWYgLSV9CisKK3slIGlmIGRhdGEuZGVzY3JpcHRpb24gJX0KKwor Q09NTUVOVCBPTiBGT1JFSUdOIFRBQkxFIHt7IGNvbm58cXRJZGVudChvX2Rh dGEuYmFzZW5zcCwgbmFtZSkgfX0KKyAgICBJUyB7eyBkYXRhLmRlc2NyaXB0 aW9ufHF0TGl0ZXJhbCB9fTsKK3slIGVuZGlmIC0lfQorCit7JSBpZiBkYXRh LmJhc2Vuc3AgJX0KKworQUxURVIgRk9SRUlHTiBUQUJMRSB7eyBjb25ufHF0 SWRlbnQob19kYXRhLmJhc2Vuc3AsIG5hbWUpIH19CisgICAgU0VUIFNDSEVN QSB7eyBjb25ufHF0SWRlbnQoZGF0YS5iYXNlbnNwKSB9fTsKK3slIGVuZGlm ICV9Cit7JSBlbmRpZiAlfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv Zm9yZWlnbl90YWJsZXMvdGVtcGxhdGVzL2ZvcmVpZ25fdGFibGVzL3NxbC85 LjVfcGx1cy9jcmVhdGUuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90 YWJsZXMvdGVtcGxhdGVzL2ZvcmVpZ25fdGFibGVzL3NxbC85LjVfcGx1cy9j cmVhdGUuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu LjQwOWIyOTQKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9m b3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90YWJsZXMvc3FsLzku NV9wbHVzL2NyZWF0ZS5zcWwKQEAgLTAsMCArMSw0NiBAQAoreyUgaW1wb3J0 ICdtYWNyb3Mvc2NoZW1hcy9zZWN1cml0eS5tYWNyb3MnIGFzIFNFQ0xBQkxF ICV9Cit7JSBzZXQgaXNfY29sdW1ucyA9IFtdICV9Cit7JSBpZiBkYXRhICV9 CitDUkVBVEUgRk9SRUlHTiBUQUJMRSB7eyBjb25ufHF0SWRlbnQoZGF0YS5i YXNlbnNwLCBkYXRhLm5hbWUpIH19CisoeyUgaWYgZGF0YS5jb2x1bW5zICV9 Cit7JSBmb3IgYyBpbiBkYXRhLmNvbHVtbnMgJX0KK3slIGlmIChub3QgYy5p bmhlcml0ZWRmcm9tIG9yIGMuaW5oZXJpdGVkZnJvbSA9PScnIG9yICBjLmlu aGVyaXRlZGZyb20gPT0gTm9uZSBvciAgYy5pbmhlcml0ZWRmcm9tID09ICdO b25lJyApICV9Cit7JSBpZiBpc19jb2x1bW5zLmFwcGVuZCgnMScpICV9eyUg ZW5kaWYgJX0KK3t7Y29ubnxxdElkZW50KGMuYXR0bmFtZSl9fSB7e2Nvbm58 cXRUeXBlSWRlbnQoYy5kYXRhdHlwZSkgfX17JSBpZiBjLnR5cGxlbiAlfSh7 e2MudHlwbGVufX17JSBpZiBjLnByZWNpc2lvbiAlfSwge3tjLnByZWNpc2lv bn19eyUgZW5kaWYgJX0peyUgZW5kaWYgJX0KK3slIGlmIGMuYXR0bm90bnVs bCAlfSBOT1QgTlVMTHslIGVsc2UgJX0gTlVMTHslIGVuZGlmICV9Cit7JSBp ZiBjLnR5cGRlZmF1bHQgJX0gREVGQVVMVHt7Yy50eXBkZWZhdWx0fX17JSBl bmRpZiAlfQoreyUgaWYgYy5jb2xsbmFtZSAlfSBDT0xMQVRFe3tjLmNvbGxu YW1lfX17JSBlbmRpZiAlfQoreyUgaWYgbm90IGxvb3AubGFzdCAlfSwKK3sl IGVuZGlmICV9eyUgZW5kaWYgJX17JSBlbmRmb3IgLSV9Cit7JSBlbmRpZiAt JX0KKykKK3slIGlmIGRhdGEuaW5oZXJpdHMgJX0KKyAgICBJTkhFUklUUyAo eyUgZm9yIGkgaW4gZGF0YS5pbmhlcml0cyAlfXslIGlmIGkgJX17e2l9fXsl IGlmIG5vdCBsb29wLmxhc3QgJX0sIHslIGVuZGlmICV9eyUgZW5kaWYgJX17 JSBlbmRmb3IgJX0pCit7JSBlbmRpZiAlfQorICAgIFNFUlZFUiB7eyBjb25u fHF0SWRlbnQoZGF0YS5mdHNydm5hbWUpIH19eyUgaWYgZGF0YS5mdG9wdGlv bnMgJX0KK3slIGZvciBvIGluIGRhdGEuZnRvcHRpb25zICV9CisKK3slIGlm IG8ub3B0aW9uIGFuZCBvLnZhbHVlICV9eyUgaWYgbG9vcC5maXJzdCAlfSAg ICBPUFRJT05TICh7JSBlbmRpZiAlfXslIGlmIG5vdCBsb29wLmZpcnN0ICV9 LCB7JSBlbmRpZiAlfXt7by5vcHRpb259fSB7e28udmFsdWV8cXRMaXRlcmFs fX17JSBpZiBsb29wLmxhc3QgJX0peyUgZW5kaWYgJX17JSBlbmRpZiAlfQor eyUgZW5kZm9yICV9eyUgZW5kaWYgJX07Cit7JSBpZiBkYXRhLmNvbnN0cmFp bnRzICV9Cit7JSBmb3IgYyBpbiBkYXRhLmNvbnN0cmFpbnRzICV9CisKK0FM VEVSIEZPUkVJR04gVEFCTEUge3sgY29ubnxxdElkZW50KGRhdGEuYmFzZW5z cCwgZGF0YS5uYW1lKSB9fQorICAgIEFERCBDT05TVFJBSU5UIHt7IGNvbm58 cXRJZGVudChjLmNvbm5hbWUpIH19IENIRUNLICh7eyBjLmNvbnNyYyB9fSl7 JSBpZiBub3QgYy5jb252YWxpZGF0ZWQgJX0gTk9UIFZBTElEeyUgZW5kaWYg JX17JSBpZiBjLmNvbm5vaW5oZXJpdCAlfSBOTyBJTkhFUklUeyUgZW5kaWYg JX07Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmICV9Cit7JSBpZiBkYXRhLmRl c2NyaXB0aW9uICV9CisKK0NPTU1FTlQgT04gRk9SRUlHTiBUQUJMRSB7eyBj b25ufHF0SWRlbnQoZGF0YS5iYXNlbnNwLCBkYXRhLm5hbWUpIH19CisgICAg SVMgJ3t7IGRhdGEuZGVzY3JpcHRpb24gfX0nOworeyUgZW5kaWYgLSV9CisK K3slIGlmIGRhdGEuc2VjbGFiZWxzICV9Cit7JSBmb3IgciBpbiBkYXRhLnNl Y2xhYmVscyAlfQoreyUgaWYgci5sYWJlbCBhbmQgci5wcm92aWRlciAlfQor Cit7eyBTRUNMQUJMRS5TRVQoY29ubiwgJ0ZPUkVJR04gVEFCTEUnLCBkYXRh Lm5hbWUsIHIucHJvdmlkZXIsIHIubGFiZWwsIGRhdGEuYmFzZW5zcCkgfX0K K3slIGVuZGlmICV9Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmICV9Cit7JSBl bmRpZiAlfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90 YWJsZXMvdGVtcGxhdGVzL2ZvcmVpZ25fdGFibGVzL3NxbC85LjVfcGx1cy9k ZWxldGUuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvdGVt cGxhdGVzL2ZvcmVpZ25fdGFibGVzL3NxbC85LjVfcGx1cy9kZWxldGUuc3Fs Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViYjA5NjkK LS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3Rh Ymxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90YWJsZXMvc3FsLzkuNV9wbHVzL2Rl bGV0ZS5zcWwKQEAgLTAsMCArMSwxNyBAQAoreyUgaWYgc2NpZCBhbmQgZm9p ZCAlfQorU0VMRUNUCisgICAgYy5yZWxuYW1lIEFTIG5hbWUsIG5zcG5hbWUg YXMgYmFzZW5zcAorRlJPTQorICAgIHBnX2NsYXNzIGMKK0xFRlQgT1VURVIg Sk9JTgorICAgIHBnX25hbWVzcGFjZSBuc3AgT04gKG5zcC5vaWQ9Yy5yZWxu YW1lc3BhY2UpCitXSEVSRQorICAgIGMucmVsbmFtZXNwYWNlID0ge3tzY2lk fX06Om9pZAorQU5ECisgICAgYy5vaWQgPSB7e2ZvaWR9fTo6b2lkOworeyUg ZW5kaWYgJX0KKworCit7JSBpZiBuYW1lICV9CitEUk9QIEZPUkVJR04gVEFC TEUge3sgY29ubnxxdElkZW50KGJhc2Vuc3AsIG5hbWUpIH19eyUgaWYgY2Fz Y2FkZSV9IENBU0NBREV7JSBlbmRpZiAlfTsKK3slIGVuZGlmICV9CmRpZmYg LS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0 ZXMvZm9yZWlnbl90YWJsZXMvc3FsLzkuNV9wbHVzL2dldF9jb2xsYXRpb25z LnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRl cy9mb3JlaWduX3RhYmxlcy9zcWwvOS41X3BsdXMvZ2V0X2NvbGxhdGlvbnMu c3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4ZDI3 NGIKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWdu X3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90YWJsZXMvc3FsLzkuNV9wbHVz L2dldF9jb2xsYXRpb25zLnNxbApAQCAtMCwwICsxLDkgQEAKK1NFTEVDVCAt LW5zcG5hbWUsIGNvbGxuYW1lLAorICAgIENBU0UgV0hFTiBsZW5ndGgobnNw bmFtZSkgPiAwIEFORCBsZW5ndGgoY29sbG5hbWUpID4gMCAgVEhFTgorICAg IGNvbmNhdChuc3BuYW1lLCAnLiInLCBjb2xsbmFtZSwnIicpCisgICAgRUxT RSAnJyBFTkQgQVMgY29weV9jb2xsYXRpb24KK0ZST00KKyAgICBwZ19jb2xs YXRpb24gYywgcGdfbmFtZXNwYWNlIG4KK1dIRVJFCisgICAgYy5jb2xsbmFt ZXNwYWNlPW4ub2lkCitPUkRFUiBCWSBuc3BuYW1lLCBjb2xsbmFtZTsKZGlm ZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBs YXRlcy9mb3JlaWduX3RhYmxlcy9zcWwvOS41X3BsdXMvZ2V0X2NvbHVtbnMu c3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvdGVtcGxhdGVz L2ZvcmVpZ25fdGFibGVzL3NxbC85LjVfcGx1cy9nZXRfY29sdW1ucy5zcWwK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjA2MDJlZAot LS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFi bGVzL3RlbXBsYXRlcy9mb3JlaWduX3RhYmxlcy9zcWwvOS41X3BsdXMvZ2V0 X2NvbHVtbnMuc3FsCkBAIC0wLDAgKzEsNDYgQEAKK1NFTEVDVAorICAgIGF0 dC5hdHRuYW1lLCBhdHQuYXR0bmRpbXMsIGF0dC5hdHR0eXBtb2QsIGZvcm1h dF90eXBlKHQub2lkLE5VTEwpIEFTIGRhdGF0eXBlLAorICAgIGF0dC5hdHRu b3RudWxsLCBhdHQuYXR0bnVtLCBmb3JtYXRfdHlwZSh0Lm9pZCwgYXR0LmF0 dHR5cG1vZCkgQVMgZnVsbHR5cGUsCisgICAgQ0FTRSBXSEVOIGxlbmd0aChj bi5uc3BuYW1lKSA+IDAgQU5EIGxlbmd0aChjbC5jb2xsbmFtZSkgPiAwIFRI RU4KKyAgICBjb25jYXQoY24ubnNwbmFtZSwgJy4iJywgY2wuY29sbG5hbWUs JyInKQorICAgIEVMU0UgJycgRU5EIEFTIGNvbGxuYW1lLAorICAgIHBnX2Nh dGFsb2cucGdfZ2V0X2V4cHIoZGVmLmFkYmluLCBkZWYuYWRyZWxpZCkgQVMg dHlwZGVmYXVsdCwKKyAgICAoCisgICAgICAgIGF0dG5hbWUgfHwgJyAnIHx8 IGZvcm1hdF90eXBlKHQub2lkLCBhdHQuYXR0dHlwbW9kKSB8fCAnICcgfHwK KyAgICAgICAgKENBU0UgV0hFTiBhdHRub3RudWxsPSd0cnVlJworICAgICAg ICBUSEVOICdOT1QgTlVMTCcgRUxTRSAnTlVMTCcKKyAgICAgICAgRU5EKSB8 fCAnICcgfHwKKyAgICAgICAgKENBU0UgV0hFTiBwZ19jYXRhbG9nLnBnX2dl dF9leHByKGRlZi5hZGJpbiwgZGVmLmFkcmVsaWQpPD4nJworICAgICAgICBU SEVOICdERUZBVUxUICcgfHwgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihkZWYu YWRiaW4sIGRlZi5hZHJlbGlkKQorICAgICAgICBFTFNFICcnIEVORCkKKyAg ICApIGFzIHN0cmNvbHVtbiwKKyAgICAoU0VMRUNUIGNvbmNhdChubXNwX3Bh cmVudC5uc3BuYW1lLCAnLicscGFyZW50LnJlbG5hbWUgKSBhcyBpbmhlcml0 ZWRmcm9tCisgICAgRlJPTQorICAgICAgICBwZ19hdHRyaWJ1dGUgYXQKKyAg ICBKT0lOCisgICAgICAgIHBnX2luaGVyaXRzIHBoIE9OIHBoLmluaHBhcmVu dCA9IGF0LmF0dHJlbGlkIEFORCBwaC5pbmhyZWxpZCA9ICB7e2ZvaWR9fTo6 b2lkCisgICAgSk9JTgorICAgICAgICBwZ19jbGFzcyBwYXJlbnQgT04gcGgu aW5ocGFyZW50ICA9IHBhcmVudC5vaWQKKyAgICBKT0lOCisgICAgICAgIHBn X25hbWVzcGFjZSBubXNwX3BhcmVudCBPTiBubXNwX3BhcmVudC5vaWQgID0g cGFyZW50LnJlbG5hbWVzcGFjZQorICAgICAgICBXSEVSRSBhdC5hdHRuYW1l ID0gYXR0LmF0dG5hbWUKKyAgICApLAorICAgIChTRUxFQ1QgQ09VTlQoMSkg ZnJvbSBwZ190eXBlIHQyIFdIRVJFIHQyLnR5cG5hbWU9dC50eXBuYW1lKSA+ IDEgQVMgaXNkdXAKK0ZST00KKyAgICBwZ19hdHRyaWJ1dGUgYXR0CitKT0lO CisgICAgcGdfdHlwZSB0IE9OIHQub2lkPWF0dHR5cGlkCitKT0lOCisgICAg cGdfbmFtZXNwYWNlIG5zcCBPTiB0LnR5cG5hbWVzcGFjZT1uc3Aub2lkCitM RUZUIE9VVEVSIEpPSU4KKyAgICBwZ19hdHRyZGVmIGRlZiBPTiBhZHJlbGlk PWF0dC5hdHRyZWxpZCBBTkQgYWRudW09YXR0LmF0dG51bQorTEVGVCBPVVRF UiBKT0lOCisgICAgcGdfdHlwZSBiIE9OIHQudHlwZWxlbT1iLm9pZAorTEVG VCBPVVRFUiBKT0lOCisgICAgcGdfY29sbGF0aW9uIGNsIE9OIHQudHlwY29s bGF0aW9uPWNsLm9pZAorTEVGVCBPVVRFUiBKT0lOCisgICAgcGdfbmFtZXNw YWNlIGNuIE9OIGNsLmNvbGxuYW1lc3BhY2U9Y24ub2lkCitXSEVSRQorICAg IGF0dC5hdHRyZWxpZD17e2ZvaWR9fTo6b2lkCisgICAgQU5EIGF0dC5hdHRu dW0+MAorT1JERVIgYnkgYXR0LmF0dG51bTsKZGlmZiAtLWdpdCBhL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRlcy9mb3JlaWduX3Rh Ymxlcy9zcWwvOS41X3BsdXMvZ2V0X2NvbnN0cmFpbnRzLnNxbCBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRlcy9mb3JlaWduX3Rh Ymxlcy9zcWwvOS41X3BsdXMvZ2V0X2NvbnN0cmFpbnRzLnNxbApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NTYwYzMxCi0tLSAvZGV2 L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvdGVt cGxhdGVzL2ZvcmVpZ25fdGFibGVzL3NxbC85LjVfcGx1cy9nZXRfY29uc3Ry YWludHMuc3FsCkBAIC0wLDAgKzEsNyBAQAorU0VMRUNUCisgICAgb2lkIGFz IGNvbm9pZCwgY29ubmFtZSwgY29udHlwZSwgY29uc3JjLCBjb25ub2luaGVy aXQsIGNvbnZhbGlkYXRlZAorRlJPTQorICAgIHBnX2NvbnN0cmFpbnQKK1dI RVJFCisgICAgY29ucmVsaWQ9e3tmb2lkfX06Om9pZAorT1JERVIgYnkgY29u bmFtZTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFi bGVzL3RlbXBsYXRlcy9mb3JlaWduX3RhYmxlcy9zcWwvOS41X3BsdXMvZ2V0 X2ZvcmVpZ25fc2VydmVycy5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWdu X3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90YWJsZXMvc3FsLzkuNV9wbHVz L2dldF9mb3JlaWduX3NlcnZlcnMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAuLjcxN2JkZDMKLS0tIC9kZXYvbnVsbAorKysgYi93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWln bl90YWJsZXMvc3FsLzkuNV9wbHVzL2dldF9mb3JlaWduX3NlcnZlcnMuc3Fs CkBAIC0wLDAgKzEsNiBAQAorU0VMRUNUCisgICAgc3J2bmFtZQorRlJPTQor ICAgIHBnX2ZvcmVpZ25fc2VydmVyCitPUkRFUgorICAgIEJZIHNydm5hbWU7 CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy90 ZW1wbGF0ZXMvZm9yZWlnbl90YWJsZXMvc3FsLzkuNV9wbHVzL2dldF9vaWQu c3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvdGVtcGxhdGVz L2ZvcmVpZ25fdGFibGVzL3NxbC85LjVfcGx1cy9nZXRfb2lkLnNxbApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YTVmNWQxCi0tLSAv ZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMv dGVtcGxhdGVzL2ZvcmVpZ25fdGFibGVzL3NxbC85LjVfcGx1cy9nZXRfb2lk LnNxbApAQCAtMCwwICsxLDE5IEBACit7JSBpZiBiYXNlbnNwICV9CitTRUxF Q1QKKyAgICBjLm9pZCwgYm4ub2lkIGFzIHNjaWQKK0ZST00KKyAgICBwZ19j bGFzcyBjCitKT0lOCisgICAgcGdfbmFtZXNwYWNlIGJuIE9OIGJuLm9pZD1j LnJlbG5hbWVzcGFjZQorV0hFUkUKKyAgICBibi5uc3BuYW1lID0ge3sgYmFz ZW5zcHxxdExpdGVyYWwgfX0KKyAgICBBTkQgYy5yZWxuYW1lPXt7IG5hbWV8 cXRMaXRlcmFsIH19OworCit7JSBlbGlmIGZvaWQgJX0KK1NFTEVDVAorICAg IGMucmVsbmFtZXNwYWNlIGFzIHNjaWQKK0ZST00KKyAgICBwZ19jbGFzcyBj CitXSEVSRQorICAgIGMub2lkID0ge3tmb2lkfX06Om9pZDsKK3slIGVuZGlm ICV9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxl cy90ZW1wbGF0ZXMvZm9yZWlnbl90YWJsZXMvc3FsLzkuNV9wbHVzL2dldF90 YWJsZV9jb2x1bW5zLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFi bGVzL3RlbXBsYXRlcy9mb3JlaWduX3RhYmxlcy9zcWwvOS41X3BsdXMvZ2V0 X3RhYmxlX2NvbHVtbnMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLmUxODgyZGIKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90YWJs ZXMvc3FsLzkuNV9wbHVzL2dldF90YWJsZV9jb2x1bW5zLnNxbApAQCAtMCww ICsxLDE0IEBACit7JSBpZiBhdHRyZWxpZCAgJX0KK1NFTEVDVAorICAgIGEu YXR0bmFtZSwgZm9ybWF0X3R5cGUoYS5hdHR0eXBpZCwgTlVMTCkgQVMgZGF0 YXR5cGUsCisgICAgcXVvdGVfaWRlbnQobi5uc3BuYW1lKXx8Jy4nfHxxdW90 ZV9pZGVudChjLnJlbG5hbWUpIGFzIGluaGVyaXRlZGZyb20sCisgICAgYy5v aWQgYXMgaW5oZXJpdGVkaWQKK0ZST00KKyAgICBwZ19jbGFzcyBjCitKT0lO CisgICAgcGdfbmFtZXNwYWNlIG4gT04gYy5yZWxuYW1lc3BhY2U9bi5vaWQK K0pPSU4KKyAgICBwZ19hdHRyaWJ1dGUgYSBPTiBhLmF0dHJlbGlkID0gYy5v aWQgQU5EIE5PVCBhLmF0dGlzZHJvcHBlZCBBTkQgYS5hdHRudW0+MAorV0hF UkUKKyAgICBjLm9pZCA9IHt7YXR0cmVsaWR9fTo6T0lECit7JSBlbmRpZiAl fQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMv dGVtcGxhdGVzL2ZvcmVpZ25fdGFibGVzL3NxbC85LjVfcGx1cy9nZXRfdGFi bGVzLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBs YXRlcy9mb3JlaWduX3RhYmxlcy9zcWwvOS41X3BsdXMvZ2V0X3RhYmxlcy5z cWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzA4NWEy NgotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25f dGFibGVzL3RlbXBsYXRlcy9mb3JlaWduX3RhYmxlcy9zcWwvOS41X3BsdXMv Z2V0X3RhYmxlcy5zcWwKQEAgLTAsMCArMSwxOSBAQAoreyUgaWYgYXR0cmVs aWQgICV9CitTRUxFQ1QKKyAgICBhcnJheV9hZ2cocXVvdGVfaWRlbnQobi5u c3BuYW1lKSB8fCAnLicgfHwgcXVvdGVfaWRlbnQoYy5yZWxuYW1lKSkgYXMg aW5oZXJpdHMKK0ZST00KKyAgICBwZ19jbGFzcyBjLCBwZ19uYW1lc3BhY2Ug bgorV0hFUkUKKyAgICBjLnJlbG5hbWVzcGFjZT1uLm9pZCBBTkQgYy5yZWxr aW5kIElOICgncicsICdmJykKKyAgICBBTkQgYy5vaWQgaW4ge3thdHRyZWxp ZH19OworCit7JSBlbHNlICV9CitTRUxFQ1QKKyAgICBjLm9pZCBBUyBpZCwg cXVvdGVfaWRlbnQobi5uc3BuYW1lKSB8fCAnLicgfHwgcXVvdGVfaWRlbnQo Yy5yZWxuYW1lKSBhcyB0ZXh0CitGUk9NCisgICAgcGdfY2xhc3MgYywgcGdf bmFtZXNwYWNlIG4KK1dIRVJFCisgICAgYy5yZWxuYW1lc3BhY2U9bi5vaWQg QU5EIGMucmVsa2luZCBJTiAoJ3InLCAnZicpCitPUkRFUiBCWQorICAgIG4u bnNwbmFtZSwgYy5yZWxuYW1lOworeyUgZW5kaWYgJX0KZGlmZiAtLWdpdCBh L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRlcy9mb3Jl aWduX3RhYmxlcy9zcWwvOS41X3BsdXMvbm9kZS5zcWwgYi93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90YWJsZXMv c3FsLzkuNV9wbHVzL25vZGUuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAuLjJkM2EzOGIKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90 YWJsZXMvc3FsLzkuNV9wbHVzL25vZGUuc3FsCkBAIC0wLDAgKzEsMTIgQEAK K1NFTEVDVAorICAgIGMub2lkLCBjLnJlbG5hbWUgQVMgbmFtZSwgcGdfZ2V0 X3VzZXJieWlkKHJlbG93bmVyKSBBUyBvd25lciwKKyAgICBmdG9wdGlvbnMs IG5zcG5hbWUgYXMgYmFzZW5zcAorRlJPTQorICAgIHBnX2NsYXNzIGMKK0pP SU4KKyAgICBwZ19mb3JlaWduX3RhYmxlIGZ0IE9OIGMub2lkPWZ0LmZ0cmVs aWQKK0xFRlQgT1VURVIgSk9JTgorICAgIHBnX25hbWVzcGFjZSBuc3AgT04g KG5zcC5vaWQ9Yy5yZWxuYW1lc3BhY2UpCitXSEVSRQorICAgIGMucmVsbmFt ZXNwYWNlID0ge3tzY2lkfX06Om9pZAorT1JERVIgQlkgYy5yZWxuYW1lOwpk aWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvdGVt cGxhdGVzL2ZvcmVpZ25fdGFibGVzL3NxbC85LjVfcGx1cy9wcm9wZXJ0aWVz LnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRl cy9mb3JlaWduX3RhYmxlcy9zcWwvOS41X3BsdXMvcHJvcGVydGllcy5zcWwK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzIwYjgyNAot LS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFi bGVzL3RlbXBsYXRlcy9mb3JlaWduX3RhYmxlcy9zcWwvOS41X3BsdXMvcHJv cGVydGllcy5zcWwKQEAgLTAsMCArMSwzMSBAQAorU0VMRUNUCisgICAgYy5v aWQsIGMucmVsbmFtZSBBUyBuYW1lLCBwZ19nZXRfdXNlcmJ5aWQocmVsb3du ZXIpIEFTIG93bmVyLAorICAgIGZ0b3B0aW9ucywgc3J2bmFtZSBBUyBmdHNy dm5hbWUsIGRlc2NyaXB0aW9uLCBuc3BuYW1lIEFTIGJhc2Vuc3AsCisgICAg KFNFTEVDVAorICAgICAgICBhcnJheV9hZ2cocHJvdmlkZXIgfHwgJz0nIHx8 IGxhYmVsKQorICAgIEZST00KKyAgICAgICAgcGdfc2hzZWNsYWJlbCBzbDEK KyAgICBXSEVSRQorICAgICAgICBzbDEub2Jqb2lkPWMub2lkKSBBUyBzZWNs YWJlbHMKKyAgICB7JSBpZiBmb2lkICV9LAorICAgIChTRUxFQ1QKKyAgICAg ICAgYXJyYXlfYWdnKGkuaW5ocGFyZW50KSBGUk9NIHBnX2luaGVyaXRzIGkK KyAgICBXSEVSRQorICAgICAgICBpLmluaHJlbGlkID0ge3tmb2lkfX06Om9p ZCBHUk9VUCBCWSBpLmluaHJlbGlkKSBBUyBpbmhlcml0cworICAgIHslIGVu ZGlmICV9CitGUk9NCisgICAgcGdfY2xhc3MgYworSk9JTgorICAgIHBnX2Zv cmVpZ25fdGFibGUgZnQgT04gYy5vaWQ9ZnQuZnRyZWxpZAorTEVGVCBPVVRF UiBKT0lOCisgICAgcGdfZm9yZWlnbl9zZXJ2ZXIgZnMgT04gZnQuZnRzZXJ2 ZXI9ZnMub2lkCitMRUZUIE9VVEVSIEpPSU4KKyAgICBwZ19kZXNjcmlwdGlv biBkZXMgT04gKGRlcy5vYmpvaWQ9Yy5vaWQgQU5EIGRlcy5jbGFzc29pZD0n cGdfY2xhc3MnOjpyZWdjbGFzcykKK0xFRlQgT1VURVIgSk9JTgorICAgIHBn X25hbWVzcGFjZSBuc3AgT04gKG5zcC5vaWQ9Yy5yZWxuYW1lc3BhY2UpCitX SEVSRQorICAgIGMucmVsbmFtZXNwYWNlID0ge3tzY2lkfX06Om9pZAorICAg IHslIGlmIGZvaWQgJX0KKyAgICBBTkQgYy5vaWQgPSB7e2ZvaWR9fTo6b2lk CisgICAgeyUgZW5kaWYgJX0KK09SREVSIEJZIGMucmVsbmFtZTsKZGlmZiAt LWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRl cy9mb3JlaWduX3RhYmxlcy9zcWwvOS41X3BsdXMvdXBkYXRlLnNxbCBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRlcy9mb3JlaWdu X3RhYmxlcy9zcWwvOS41X3BsdXMvdXBkYXRlLnNxbApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi5lN2NjMWE1Ci0tLSAvZGV2L251bGwK KysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvdGVtcGxhdGVz L2ZvcmVpZ25fdGFibGVzL3NxbC85LjVfcGx1cy91cGRhdGUuc3FsCkBAIC0w LDAgKzEsMTM5IEBACit7JSBpbXBvcnQgJ21hY3Jvcy9zY2hlbWFzL3NlY3Vy aXR5Lm1hY3JvcycgYXMgU0VDTEFCTEUgJX0KK3slIGlmIGRhdGEgJX0KK3sl IHNldCBuYW1lID0gb19kYXRhLm5hbWUgJX0KK3slIGlmIGRhdGEubmFtZSAl fXslIGlmIGRhdGEubmFtZSAhPSBvX2RhdGEubmFtZSAlfQorQUxURVIgRk9S RUlHTiBUQUJMRSB7eyBjb25ufHF0SWRlbnQob19kYXRhLmJhc2Vuc3AsIG9f ZGF0YS5uYW1lKSB9fQorICAgIFJFTkFNRSBUTyB7eyBjb25ufHF0SWRlbnQo ZGF0YS5uYW1lKSB9fTsKK3slIHNldCBuYW1lID0gZGF0YS5uYW1lICV9Cit7 JSBlbmRpZiAlfXslIGVuZGlmICV9Cit7JSBpZiBkYXRhLm93bmVyICV9CisK K0FMVEVSIEZPUkVJR04gVEFCTEUge3sgY29ubnxxdElkZW50KG9fZGF0YS5i YXNlbnNwLCBuYW1lKSB9fQorICAgIE9XTkVSIFRPIHt7IGRhdGEub3duZXIg fX07Cit7JSBlbmRpZiAlfQoreyUgaWYgZGF0YS5jb2x1bW5zICV9Cit7JSBm b3IgYyBpbiBkYXRhLmNvbHVtbnMuZGVsZXRlZCAlfQorCitBTFRFUiBGT1JF SUdOIFRBQkxFIHt7IGNvbm58cXRJZGVudChvX2RhdGEuYmFzZW5zcCwgbmFt ZSkgfX0KKyAgICBEUk9QIENPTFVNTiB7e2Nvbm58cXRJZGVudChjLmF0dG5h bWUpfX07Cit7JSBlbmRmb3IgLSV9Cit7JSBmb3IgYyBpbiBkYXRhLmNvbHVt bnMuYWRkZWQgJX0KK3slIGlmIChub3QgYy5pbmhlcml0ZWRmcm9tIG9yIGMu aW5oZXJpdGVkZnJvbSA9PScnIG9yICBjLmluaGVyaXRlZGZyb20gPT0gTm9u ZSBvciAgYy5pbmhlcml0ZWRmcm9tID09ICdOb25lJyApICV9CisKK0FMVEVS IEZPUkVJR04gVEFCTEUge3sgY29ubnxxdElkZW50KG9fZGF0YS5iYXNlbnNw LCBuYW1lKSB9fQorICAgIEFERCBDT0xVTU4ge3tjb25ufHF0SWRlbnQoYy5h dHRuYW1lKX19IHt7IGNvbm58cXRUeXBlSWRlbnQoYy5kYXRhdHlwZSkgfX17 JSBpZiBjLnR5cGxlbiAlfSh7e2MudHlwbGVufX0geyUgaWYgYy5wcmVjaXNp b24gJX0sIHt7Yy5wcmVjaXNpb259fXslIGVuZGlmICV9KXslIGVuZGlmICV9 Cit7JSBpZiBjLmF0dG5vdG51bGwgJX0gTk9UIE5VTEx7JSBlbHNlICV9IE5V TEx7JSBlbmRpZiAlfQoreyUgaWYgYy50eXBkZWZhdWx0ICV9IERFRkFVTFQg e3tjLnR5cGRlZmF1bHR9fXslIGVuZGlmICV9Cit7JSBpZiBjLmNvbGxuYW1l ICV9IENPTExBVEUge3tjLmNvbGxuYW1lfX17JSBlbmRpZiAlfTsKK3slIGVu ZGlmICV9Cit7JSBlbmRmb3IgLSV9Cit7JSBmb3IgYyBpbiBkYXRhLmNvbHVt bnMuY2hhbmdlZCAlfQorCitBTFRFUiBGT1JFSUdOIFRBQkxFIHt7IGNvbm58 cXRJZGVudChvX2RhdGEuYmFzZW5zcCwgbmFtZSkgfX0KKyAgICBEUk9QIENP TFVNTiB7e2Nvbm58cXRJZGVudChvX2RhdGFbJ2NvbHVtbnMnXVtjLmF0dG51 bV1bJ2F0dG5hbWUnXSl9fTsKKworQUxURVIgRk9SRUlHTiBUQUJMRSB7eyBj b25ufHF0SWRlbnQob19kYXRhLmJhc2Vuc3AsIG5hbWUpIH19CisgICAgQURE IENPTFVNTiB7e2Nvbm58cXRJZGVudChjLmF0dG5hbWUpfX0ge3sgY29ubnxx dFR5cGVJZGVudChjLmRhdGF0eXBlKSB9fXslIGlmIGMudHlwbGVuICV9KHt7 Yy50eXBsZW59fSB7JSBpZiBjLnByZWNpc2lvbiAlfSwge3tjLnByZWNpc2lv bn19eyUgZW5kaWYgJX0peyUgZW5kaWYgJX0KK3slIGlmIGMuYXR0bm90bnVs bCAlfSBOT1QgTlVMTHslIGVsc2UgJX0gTlVMTHslIGVuZGlmICV9Cit7JSBp ZiBjLnR5cGRlZmF1bHQgJX0gREVGQVVMVCB7e2MudHlwZGVmYXVsdH19eyUg ZW5kaWYgJX0KK3slIGlmIGMuY29sbG5hbWUgJX0gQ09MTEFURSB7e2MuY29s bG5hbWV9fXslIGVuZGlmICV9OworeyUgZW5kZm9yICV9Cit7JSBlbmRpZiAl fQoreyUgaWYgZGF0YS5pbmhlcml0cyBhbmQgZGF0YS5pbmhlcml0c3xsZW5n dGggPiAwJX0KK3slIGlmIG9fZGF0YS5pbmhlcml0cyA9PSBOb25lIG9yIG9f ZGF0YS5pbmhlcml0cyA9PSAnTm9uZScgJX0KK3slIHNldCBpbmhlcml0cyA9 ICcnICV9Cit7JSBlbHNlICV9Cit7JSBzZXQgaW5oZXJpdHMgPSBvX2RhdGEu aW5oZXJpdHMgJX0KK3slIGVuZGlmICV9Cit7JSBmb3IgaSBpbiBkYXRhLmlu aGVyaXRzICV9Cit7JSBpZiBpIG5vdCBpbiBpbmhlcml0cyAlfXslIGlmIGkg JX0KKworQUxURVIgRk9SRUlHTiBUQUJMRSB7eyBjb25ufHF0SWRlbnQob19k YXRhLmJhc2Vuc3AsIG5hbWUpIH19IElOSEVSSVQge3tpfX07Cit7JSBlbmRp ZiAlfQoreyUgZW5kaWYgJX0KK3slIGVuZGZvciAlfQoreyUgZW5kaWYgJX0K K3slIGlmIG9fZGF0YS5pbmhlcml0cyBhbmQgJ2luaGVyaXRzJyBpbiBkYXRh ICV9Cit7JSBpZiBkYXRhLmluaGVyaXRzID09IE5vbmUgb3IgZGF0YS5pbmhl cml0cyA9PSAnTm9uZScgJX0KK3slIHNldCBpbmhlcml0cyA9ICcnICV9Cit7 JSBlbHNlICV9Cit7JSBzZXQgaW5oZXJpdHMgPSBkYXRhLmluaGVyaXRzICV9 Cit7JSBlbmRpZiAlfQoreyUgZm9yIGkgaW4gb19kYXRhLmluaGVyaXRzICV9 eyUgaWYgaSBub3QgaW4gaW5oZXJpdHMgJX17JSBpZiBpICV9CisKK0FMVEVS IEZPUkVJR04gVEFCTEUge3sgY29ubnxxdElkZW50KG9fZGF0YS5iYXNlbnNw LCBuYW1lKSB9fSBOTyBJTkhFUklUIHt7aX19O3slIGVuZGlmICV9Cit7JSBl bmRpZiAlfQoreyUgZW5kZm9yICV9Cit7JSBlbmRpZiAlfQoreyUgaWYgZGF0 YS5jb25zdHJhaW50cyAlfQoreyUgZm9yIGMgaW4gZGF0YS5jb25zdHJhaW50 cy5kZWxldGVkICV9CisKK0FMVEVSIEZPUkVJR04gVEFCTEUge3sgY29ubnxx dElkZW50KG9fZGF0YS5iYXNlbnNwLCBuYW1lKSB9fQorICAgIERST1AgQ09O U1RSQUlOVCB7e2Nvbm58cXRJZGVudChjLmNvbm5hbWUpfX07Cit7JSBlbmRm b3IgLSV9Cit7JSBmb3IgYyBpbiBkYXRhLmNvbnN0cmFpbnRzLmFkZGVkICV9 CisKK0FMVEVSIEZPUkVJR04gVEFCTEUge3sgY29ubnxxdElkZW50KG9fZGF0 YS5iYXNlbnNwLCBuYW1lKSB9fQorICAgIEFERCBDT05TVFJBSU5UIHt7IGNv bm58cXRJZGVudChjLmNvbm5hbWUpIH19IENIRUNLICh7eyBjLmNvbnNyYyB9 fSl7JSBpZiBub3QgYy5jb252YWxpZGF0ZWQgJX0gTk9UIFZBTElEeyUgZW5k aWYgJX17JSBpZiBjLmNvbm5vaW5oZXJpdCAlfSBOTyBJTkhFUklUeyUgZW5k aWYgJX07Cit7JSBlbmRmb3IgJX0KK3slIGZvciBjIGluIGRhdGEuY29uc3Ry YWludHMuY2hhbmdlZCAlfQoreyUgaWYgYy5jb252YWxpZGF0ZWQgJX0KKwor QUxURVIgRk9SRUlHTiBUQUJMRSB7eyBjb25ufHF0SWRlbnQob19kYXRhLmJh c2Vuc3AsIG5hbWUpIH19CisgICAgVkFMSURBVEUgQ09OU1RSQUlOVCB7eyBj b25ufHF0SWRlbnQoYy5jb25uYW1lKSB9fTsKK3slIGVuZGlmICV9Cit7JSBl bmRmb3IgJX0KK3slIGVuZGlmICV9Cit7JSBpZiBkYXRhLmZ0b3B0aW9ucyAl fQoreyUgZm9yIG8gaW4gZGF0YS5mdG9wdGlvbnMuZGVsZXRlZCAlfQoreyUg aWYgby5vcHRpb24gYW5kIG8udmFsdWUgJX0KKworQUxURVIgRk9SRUlHTiBU QUJMRSB7eyBjb25ufHF0SWRlbnQob19kYXRhLmJhc2Vuc3AsIG5hbWUpIH19 CisgICAgT1BUSU9OUyAoIERST1Age3tvLm9wdGlvbn19IHt7by52YWx1ZXxx dExpdGVyYWx9fSk7Cit7JSBlbmRpZiAlfQoreyUgZW5kZm9yICV9Cit7JSBm b3IgbyBpbiBkYXRhLmZ0b3B0aW9ucy5hZGRlZCAlfQoreyUgaWYgby5vcHRp b24gYW5kIG8udmFsdWUgJX0KKworQUxURVIgRk9SRUlHTiBUQUJMRSB7eyBj b25ufHF0SWRlbnQob19kYXRhLmJhc2Vuc3AsIG5hbWUpIH19CisgICAgT1BU SU9OUyAoQUREIHt7by5vcHRpb259fSB7e28udmFsdWV8cXRMaXRlcmFsfX0p OworeyUgZW5kaWYgJX0KK3slIGVuZGZvciAlfQoreyUgZm9yIG8gaW4gZGF0 YS5mdG9wdGlvbnMuY2hhbmdlZCAlfQoreyUgaWYgby5vcHRpb24gYW5kIG8u dmFsdWUgJX0KKworQUxURVIgRk9SRUlHTiBUQUJMRSB7eyBjb25ufHF0SWRl bnQob19kYXRhLmJhc2Vuc3AsIG5hbWUpIH19CisgICAgT1BUSU9OUyAoU0VU IHt7by5vcHRpb259fSB7e28udmFsdWV8cXRMaXRlcmFsfX0pOworeyUgZW5k aWYgJX0KK3slIGVuZGZvciAlfQoreyUgZW5kaWYgLSV9Cit7JSBzZXQgc2Vj bGFiZWxzID0gZGF0YS5zZWNsYWJlbHMgJX0KK3slIGlmICdkZWxldGVkJyBp biBzZWNsYWJlbHMgYW5kIHNlY2xhYmVscy5kZWxldGVkfGxlbmd0aCA+IDAg JX0KK3slIGZvciByIGluIHNlY2xhYmVscy5kZWxldGVkICV9CisKK3t7IFNF Q0xBQkxFLlVOU0VUKGNvbm4sICdGT1JFSUdOIFRBQkxFJywgbmFtZSwgci5w cm92aWRlciwgb19kYXRhLmJhc2Vuc3ApIH19Cit7JSBlbmRmb3IgJX0KK3sl IGVuZGlmICV9Cit7JSBpZiAnYWRkZWQnIGluIHNlY2xhYmVscyBhbmQgc2Vj bGFiZWxzLmFkZGVkfGxlbmd0aCA+IDAgJX0KK3slIGZvciByIGluIHNlY2xh YmVscy5hZGRlZCAlfQorCit7eyBTRUNMQUJMRS5TRVQoY29ubiwgJ0ZPUkVJ R04gVEFCTEUnLCBuYW1lLCByLnByb3ZpZGVyLCByLmxhYmVsLCBvX2RhdGEu YmFzZW5zcCkgfX0KK3slIGVuZGZvciAlfQoreyUgZW5kaWYgJX0KK3slIGlm ICdjaGFuZ2VkJyBpbiBzZWNsYWJlbHMgYW5kIHNlY2xhYmVscy5jaGFuZ2Vk fGxlbmd0aCA+IDAgJX0KK3slIGZvciByIGluIHNlY2xhYmVscy5jaGFuZ2Vk ICV9CisKK3t7IFNFQ0xBQkxFLlNFVChjb25uLCAnRk9SRUlHTiBUQUJMRScs IG5hbWUsIHIucHJvdmlkZXIsIHIubGFiZWwsIG9fZGF0YS5iYXNlbnNwKSB9 fQoreyUgZW5kZm9yICV9Cit7JSBlbmRpZiAtJX0KK3slIGlmIGRhdGEuZGVz Y3JpcHRpb24gJX0KKworQ09NTUVOVCBPTiBGT1JFSUdOIFRBQkxFIHt7IGNv bm58cXRJZGVudChvX2RhdGEuYmFzZW5zcCwgbmFtZSkgfX0KK0lTIHt7IGRh dGEuZGVzY3JpcHRpb258cXRMaXRlcmFsIH19OworeyUgZW5kaWYgLSV9Cit7 JSBpZiBkYXRhLmJhc2Vuc3AgJX0KKworQUxURVIgRk9SRUlHTiBUQUJMRSB7 eyBjb25ufHF0SWRlbnQob19kYXRhLmJhc2Vuc3AsIG5hbWUpIH19CisgICAg U0VUIFNDSEVNQSB7eyBjb25ufHF0SWRlbnQoZGF0YS5iYXNlbnNwKSB9fTsK K3slIGVuZGlmICV9Cit7JSBlbmRpZiAlfQo= --001a11401c4c93431a052fb9079c 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 --001a11401c4c93431a052fb9079c--