Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.80) (envelope-from ) id 1aRD8Y-0003WX-Ek for pgadmin-hackers@arkaria.postgresql.org; Thu, 04 Feb 2016 06:11:26 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84) (envelope-from ) id 1aRD8X-0001A9-IP for pgadmin-hackers@arkaria.postgresql.org; Thu, 04 Feb 2016 06:11:25 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84) (envelope-from ) id 1aRD8V-00019y-PH for pgadmin-hackers@postgresql.org; Thu, 04 Feb 2016 06:11:23 +0000 Received: from mail-wm0-x236.google.com ([2a00:1450:400c:c09::236]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.84) (envelope-from ) id 1aRD8R-0001og-OU for pgadmin-hackers@postgresql.org; Thu, 04 Feb 2016 06:11:23 +0000 Received: by mail-wm0-x236.google.com with SMTP id r129so196062061wmr.0 for ; Wed, 03 Feb 2016 22:11:19 -0800 (PST) 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:from:date:message-id:subject:to :cc:content-type; bh=YfvPXRN1YlSJnEaeO2WZyZT08J+E+GyC/47EsyujS7c=; b=zb9DMuRk0C4vBqyjAXXQDH1rL8e2QlBv5PSRPYbHBDV4YeHi/hHpNNJIgeNk2uhcPP Mz+hZOfc+pIppopwJUsDri52O4bCfSwDJq0ObPtZ+m+3Uv0Pf7ezzao2gbDG6URLiGN8 TR1cI7Rh5LAFZ3uLVkg/QxOIetfHGJodWMN8Y0nmwHo4Ys5lV0oL0iXZviHXJ+YdUWZv XvYKuzOlcFrJhiAz1ZSeJI4zrp1EaxWVkJwqJpgaGiSNovmXLpQIHWBBG8VFw/9nmmsq qiZoiyp/EIdruDysZVXxtBsTPuCp9pCPotCwCdVvaVnBJhXl9vCu/5rQ45RM5xe1hlhQ /CVw== 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:from:date :message-id:subject:to:cc:content-type; bh=YfvPXRN1YlSJnEaeO2WZyZT08J+E+GyC/47EsyujS7c=; b=F2NctwPz3DZgL5gzqobzQoz/vNwbiKyy4FE/0bw12BKXoypXnoa9J83KAdMOwZCOMJ R8LvgK8wnq7R/WNFD5ovAY0NjKprh2C5otKP3PGfF2hz4pwq4yd1MgFzTl/Qf5Enijb1 JhQinGpYvZhrSpM6EjZeDcVphkDuNgkla74AbllLBuFB6DoC9XfJ/lVYWKBKut9aXFTQ nENyuU4tHLaBP5QI7rFeLfKJg6ujwpc1y7HoS7b8KQQF2GsVV8sjjVvQYhwOfx46dJI7 beQ48o/UF3Berv4zkGQaFoCS1qkVy5z7Bo/ctin4BZo6APwAoTwSm7dhSLN8OBzPtXk2 +QlA== X-Gm-Message-State: AG10YOSfcnJJSSqOk7z97vD33RVPy1If8w6SZsAHbaCIFayt9LUzBQkk5o8uzDLFBM+sIEuBLXAl/GIhR4GPAWlR X-Received: by 10.28.170.139 with SMTP id t133mr8464179wme.50.1454566278823; Wed, 03 Feb 2016 22:11:18 -0800 (PST) MIME-Version: 1.0 Received: by 10.28.15.66 with HTTP; Wed, 3 Feb 2016 22:10:49 -0800 (PST) In-Reply-To: References: From: Surinder Kumar Date: Thu, 4 Feb 2016 11:40:49 +0530 Message-ID: Subject: Re: [pgAdmin4] [Patch]: Extension Module To: Neel Patel Cc: pgadmin-hackers Content-Type: multipart/mixed; boundary=001a11442f185a2d2f052aeb9a26 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 --001a11442f185a2d2f052aeb9a26 Content-Type: multipart/alternative; boundary=001a11442f185a2d2b052aeb9a24 --001a11442f185a2d2b052aeb9a24 Content-Type: text/plain; charset=UTF-8 Hi Neel, Please find the patch with following changes: 1. Removed Whitespace from files. 2. Fixed an issue in which json object converted into [object object] string. 3. Fixed python3 issue of unicode type where code breaks at "isinstance(SQL, str)" in python3 if str is unicode, because python no longer support unicode type of string. Please review the patch and Let me know for any comments. Thanks, Surinder Kumar On Thu, Feb 4, 2016 at 10:16 AM, Neel Patel wrote: > Hi Surinder, > > While applying the patch, we are getting below warnings. > > extension_v3.patch:362: trailing whitespace. > This function will generate sql for sql panel > extension_v3.patch:646: trailing whitespace. > -- Extension: {{ conn|qtIdent(data.name) }} > warning: 2 lines add whitespace errors. > > > Can you please resend the patch file, after fixing above warnings ? > > Thanks, > Neel Patel > > On Fri, Jan 22, 2016 at 12:25 PM, Surinder Kumar < > surinder.kumar@enterprisedb.com> wrote: > >> Hi >> >> Please find the updated patch with following fixes: >> 1. Missing `owner` column under properties for `extensions collection`. >> Add cell: 'string' property for owner fixed it >> 2. Schema object identifier should be wrapped with in function qtIdent . >> Using function `qtIdent` for schema in create.sql fixed it. >> >> >> Thanks >> Surinder Kumar >> >> On Thu, Jan 21, 2016 at 8:04 PM, Surinder Kumar < >> surinder.kumar@enterprisedb.com> wrote: >> >>> Hi, >>> >>> I've fixed the issues given in review comments. >>> >>> Please find the attached updated patch for extension module, review it >>> and let me know for any comments. >>> >>> On Mon, Jan 18, 2016 at 5:44 PM, Surinder Kumar < >>> surinder.kumar@enterprisedb.com> wrote: >>> >>>> Thanks Neel for reviewing. I'll send the patch with the fixes suggested. >>>> >>>> On Mon, Jan 18, 2016 at 4:52 PM, Neel Patel < >>>> neel.patel@enterprisedb.com> wrote: >>>> >>>>> Hi Surinder, >>>>> >>>>> We have applied/tested the patch and below are the review comments. >>>>> >>>>> 1. When we select the extension "plpython3u", "plperl", "plperu" etc. >>>>> then it gives 'TypeError' in Javascript. >>>>> TypeError: d.version is undefined >>>>> 'version': (!_.isNull(d.version[0]) ? d.version[0]: '') >>>>> >>>>> We are getting this error while selecting many extensions so please >>>>> test with all types of extensions, it should not give any error at client >>>>> side. >>>>> >>>> Fixed. >>> >>>> >>>>> 2. Use 2 space indentation instead of 4 space in javascript file. >>>>> >>>> Done >>> >>>> >>>>> 3. In "validate" function in "extension.js" file, validate only the >>>>> changed values not all, and "this.get('name') - should be called only one >>>>> time not multiple >>>>> time". >>>>> >>>> Fixed. >>> >>>> >>>>> 4. When we pass object identifier, use the function 'qtIdent', and >>>>> for the values, use function 'qtLiteral' in all the sql files. >>>>> >>>> Done. >>> >>>> >>>>> 5. By default, when we create the extension, "schema_name" and >>>>> "version" should not be be set with value. It should be set blank by >>>>> default. >>>>> >>>> Kept blank while creating extension. >>> >>>> >>>>> 6. When we create any extension like "citext" then we are not able to >>>>> create the same extension again after deleting the same extension. May be >>>>> issue >>>>> with caching mechanism. >>>>> >>>> It is an architecture change. we'll fix it later. >>> >>>> >>>>> 7. When we remove the schema_name during the "Edit" operation then >>>>> wrong SQL is getting generated. >>>>> >>>> Fixed, Now it generates right SQL. >>> >>>> >>>>> >>>> 8. Remove "Use Slony" option. As discussed with Ashesh, we will >>>>> implement it as separate module. >>>>> >>>> Removed. >>> >>>> >>>>> Please fix the above issues. Let us know if you want more information. >>>>> >>>>> Thanks, >>>>> Neel Patel >>>>> >>>>> >>>>> Thanks, >>>>> Neel Patel >>>>> >>>>> >>>>> On Tue, Jan 12, 2016 at 1:15 PM, Surinder Kumar < >>>>> surinder.kumar@enterprisedb.com> wrote: >>>>> >>>>>> Please find the updated patch with following changes: >>>>>> >>>>>> 1. corrected copyright. >>>>>> 2. Added proper comment for script_module function in __init__.py >>>>>> file. >>>>>> 3. Renamed collection Node's label to Extensions in extensions.js >>>>>> file. >>>>>> >>>>>> >>>>>> On Tue, Jan 12, 2016 at 12:44 PM, Surinder Kumar < >>>>>> surinder.kumar@enterprisedb.com> wrote: >>>>>> >>>>>>> Hi, >>>>>>> >>>>>>> Please find attached patch for the extension module. >>>>>>> Please review it and Let me know for any comments. >>>>>>> >>>>>>> >>>>>>> Thanks, >>>>>>> Surinder Kumar >>>>>>> >>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org >>>>>> ) >>>>>> To make changes to your subscription: >>>>>> http://www.postgresql.org/mailpref/pgadmin-hackers >>>>>> >>>>>> >>>>> >>>> >>> >> > --001a11442f185a2d2b052aeb9a24 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Hi Neel,

Please find the patch with fol= lowing changes:
1. Removed Whitespace from files.
2. Fi= xed an issue in which json object converted into [object object] string.
3. Fixed python3 issue of unicode type where code breaks at "i= sinstance(SQL, str)" in python3 if str is unicode,
because p= ython no longer support unicode type of string.

Please review the patch and Let me know for an= y comments.

=
Thanks,
Surinder Kumar

On Thu, Feb 4, 2016 at 10:16 AM, Nee= l Patel <neel.patel@enterprisedb.com> wrote:
Hi Surinder,

While applying the patch, we are getting below warnings.

<= /div>
extension_v3.patch:362: trailing whitespace.
=C2= =A0 =C2=A0 =C2=A0 =C2=A0 This function will generate sql for sql panel=C2= =A0
extension_v3.patch:646: trailing whitespace.
-- Ext= ension: {{ conn|qtIdent(data= .name) }}=C2=A0
warning: 2 lines add whitespace errors.
=


Can you please resend the patch fi= le, after fixing above warnings ?

Thanks,
Neel Patel

On Fri, Jan 22, 2016 at 12:= 25 PM, Surinder Kumar <surinder.kumar@enterprisedb.com&g= t; wrote:
Hi
=
Please find the updated patch with following fixes:
1. Missing `owner` column under properties for `extensions collection`. A= dd cell: 'string' property for owner fixed it
2. Schema o= bject identifier should be wrapped with in function qtIdent . Using functio= n `qtIdent` for schema in create.sql fixed it.

Thanks
Surinder Kumar

On Thu, Jan 21, 2016 at 8:04 PM, Surinder Kumar <surinder.kumar@enterprisedb.com> wrote:
Hi,

I've fixed = the issues given in review comments.

Please find t= he attached updated patch for extension module, review it and let me know f= or any comments.

On Mon, Jan 18, 2016 at 5:44 PM, Surinder Kumar <surinder.kumar@enterprisedb.com> wrote:
Thanks Neel for reviewing. I'= ll send the patch with the fixes suggested.

On Mon, Jan 18, 2016 at 4:52 PM, = Neel Patel <neel.patel@enterprisedb.com> wrote:
Hi Surinder,

We have applied/tested the patch and below are the review comments.

1. When we select the extension "plpython= 3u", "plperl", "plperu" etc. then it gives 'Ty= peError' in Javascript.
TypeError: d.version is undefined
'version': (!_.isNull(d.version[0]) ? d.version[0]: '= 9;)

We are getting this error while selecting many= extensions so please test with all types of extensions, it should not give= any error at client side.
=
Fixed.=C2=A0
=

2.= =C2=A0 Use 2 space indentation instead of 4 space in javascript file.
=
D= one

3. In "validate" function in "e= xtension.js" file, validate only the changed values not all, and "= ;this.get('name') - should be called only one time not multiple=C2= =A0
=C2=A0 =C2=A0 time".
Fixed.=C2=A0

= 4.=C2=A0When we pass object identifier, us= e the function 'qtIdent', and for the values, use function =C2=A0&#= 39;qtLiteral' in all the sql files.
Done.=C2=A0

5. By default, when we create the extension, "schema_name" = and "version" should not be be set with value. It should be set b= lank by default.
Kept blank while creating extension.=C2=A0

6. When we create any extension like "citext" then we are = not able to create the same extension again after deleting the same extensi= on. May be issue=C2=A0
=C2=A0 =C2=A0 with caching mechanism.
It is = an architecture change. we'll fix it later.=C2=A0

7. When we remove the schema_name during the "Edit" operation = then wrong SQL is getting generated.
Fixed, Now it generates right SQL.
=
<= div class=3D"gmail_quote">
<= div>=C2=A0
8. Remove "Use Slony&= quot; option. As discussed with Ashesh, we will implement it as separate mo= dule.
<= div>Removed.=C2=A0

Please fix the above issues. Let= us know if you want more information.

Thanks,
Neel Patel


Thanks,
Neel Patel


On Tue, Jan 12, 2016 at 1:15 PM, Surinder Ku= mar <surinder.kumar@enterprisedb.com> wrote:
Ple= ase find the updated patch with following changes:
  1. corrected co= pyright.
  2. Added proper comment for script_module function in __init_= _.py file.
  3. Renamed collection Node's label to Extensions in ext= ensions.js file.
=
On Tue, Jan 12, 2016 at 12:44 PM, Surinder K= umar <surinder.kumar@enterprisedb.com> wrote:<= br>
Hi,

<= /div>
Please find attached patch for the extension module.
Please re= view it and Let me know for any comments.


Thanks,
Surinder Kumar



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







--001a11442f185a2d2b052aeb9a24-- --001a11442f185a2d2f052aeb9a26 Content-Type: application/octet-stream; name="extension_v4.patch" Content-Disposition: attachment; filename="extension_v4.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ik7v6ewg0 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9leHRlbnNpb25zL19faW5pdF9fLnB5IGIv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL2V4dGVuc2lvbnMvX19pbml0X18ucHkKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uMzdhZDIyOQotLS0gL2Rldi9udWxsCisr KyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9leHRlbnNpb25zL19faW5pdF9fLnB5CkBAIC0wLDAgKzEs Mzk0IEBACisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIworIyBw Z0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisjCisjIENvcHlyaWdodCAo QykgMjAxMyAtIDIwMTYsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0K KyMgVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdy ZVNRTCBMaWNlbmNlCisjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IworCitpbXBvcnQganNvbgorZnJvbSBmbGFzayBpbXBvcnQgcmVuZGVyX3Rl bXBsYXRlLCBtYWtlX3Jlc3BvbnNlLCByZXF1ZXN0LCBqc29uaWZ5Citmcm9t IGZsYXNrLmV4dC5iYWJlbCBpbXBvcnQgZ2V0dGV4dAorZnJvbSBwZ2FkbWlu LnV0aWxzLmFqYXggaW1wb3J0IG1ha2VfanNvbl9yZXNwb25zZSwgXAorICAg IG1ha2VfcmVzcG9uc2UgYXMgYWpheF9yZXNwb25zZSwgaW50ZXJuYWxfc2Vy dmVyX2Vycm9yCitmcm9tIHBnYWRtaW4uYnJvd3Nlci51dGlscyBpbXBvcnQg Tm9kZVZpZXcKK2Zyb20gcGdhZG1pbi5icm93c2VyLmNvbGxlY3Rpb24gaW1w b3J0IENvbGxlY3Rpb25Ob2RlTW9kdWxlCitpbXBvcnQgcGdhZG1pbi5icm93 c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy5kYXRhYmFzZXMgYXMgZGF0YWJh c2VzCitmcm9tIHBnYWRtaW4udXRpbHMuYWpheCBpbXBvcnQgcHJlY29uZGl0 aW9uX3JlcXVpcmVkCitmcm9tIHBnYWRtaW4udXRpbHMuZHJpdmVyIGltcG9y dCBnZXRfZHJpdmVyCitmcm9tIGNvbmZpZyBpbXBvcnQgUEdfREVGQVVMVF9E UklWRVIKK2Zyb20gZnVuY3Rvb2xzIGltcG9ydCB3cmFwcworCisjIEFzIHVu aWNvZGUgdHlwZSBpcyBub3QgYXZhaWxhYmxlIGluIHB5dGhvbjMKKyMgSWYg d2UgY2hlY2sgYSB2YXJpYWJsZSBpcyAiaXNpbnN0YW5jZSh2YXJpYWJsZSwg c3RyKQorIyBpdCBicmVha3MgaW4gcHl0aG9uIDMgYXMgdmFyaWFibGUgdHlw ZSBpcyBub3Qgc3RyaW5nIGl0cyB1bmljb2RlLgorIyBXZSBhc3NpZ24gYmFz ZXN0cmluZyBhcyBzdHIgdHlwZSBpZiBpdCBpcyBweXRob24zLCB1bmljb2Rl CisjIGlmIGl0IGlzIHB5dGhvbjIuCisKK3RyeToKKyAgICB1bmljb2RlID0g dW5pY29kZQorZXhjZXB0IE5hbWVFcnJvcjoKKyAgICAjICd1bmljb2RlJyBp cyB1bmRlZmluZWQsIG11c3QgYmUgUHl0aG9uIDMKKyAgICBzdHIgPSBzdHIK KyAgICB1bmljb2RlID0gc3RyCisgICAgYnl0ZXMgPSBieXRlcworICAgIGJh c2VzdHJpbmcgPSAoc3RyLGJ5dGVzKQorZWxzZToKKyAgICAjICd1bmljb2Rl JyBleGlzdHMsIG11c3QgYmUgUHl0aG9uIDIKKyAgICBzdHIgPSBzdHIKKyAg ICB1bmljb2RlID0gdW5pY29kZQorICAgIGJ5dGVzID0gc3RyCisgICAgYmFz ZXN0cmluZyA9IGJhc2VzdHJpbmcKKworCitjbGFzcyBFeHRlbnNpb25Nb2R1 bGUoQ29sbGVjdGlvbk5vZGVNb2R1bGUpOgorICAgIE5PREVfVFlQRSA9ICJl eHRlbnNpb24iCisgICAgQ09MTEVDVElPTl9MQUJFTCA9IGdldHRleHQoIkV4 dGVuc2lvbnMiKQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAq Kmt3YXJncyk6CisgICAgICAgIHN1cGVyKEV4dGVuc2lvbk1vZHVsZSwgc2Vs ZikuX19pbml0X18oKmFyZ3MsICoqa3dhcmdzKQorCisgICAgZGVmIGdldF9u b2RlcyhzZWxmLCBnaWQsIHNpZCwgZGlkKToKKyAgICAgICAgIiIiCisgICAg ICAgIEdlbmVyYXRlIHRoZSBjb2xsZWN0aW9uIG5vZGUKKyAgICAgICAgIiIi CisgICAgICAgIHlpZWxkIHNlbGYuZ2VuZXJhdGVfYnJvd3Nlcl9jb2xsZWN0 aW9uX25vZGUoZGlkKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHNjcmlw dF9sb2FkKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgTG9hZCB0aGUg bW9kdWxlIHNjcmlwdCBmb3IgZXh0ZW5zaW9uLCB3aGVuIGFueSBvZiB0aGUg ZGF0YWJhc2Ugbm9kZSBpcworICAgICAgICBpbml0aWFsaXplZC4KKyAgICAg ICAgIiIiCisgICAgICAgIHJldHVybiBkYXRhYmFzZXMuRGF0YWJhc2VNb2R1 bGUuTk9ERV9UWVBFCisKKworYmx1ZXByaW50ID0gRXh0ZW5zaW9uTW9kdWxl KF9fbmFtZV9fKQorCisKK2NsYXNzIEV4dGVuc2lvblZpZXcoTm9kZVZpZXcp OgorICAgIG5vZGVfdHlwZSA9IGJsdWVwcmludC5ub2RlX3R5cGUKKworICAg IHBhcmVudF9pZHMgPSBbCisgICAgICAgICAgICB7J3R5cGUnOiAnaW50Jywg J2lkJzogJ2dpZCd9LAorICAgICAgICAgICAgeyd0eXBlJzogJ2ludCcsICdp ZCc6ICdzaWQnfSwKKyAgICAgICAgICAgIHsndHlwZSc6ICdpbnQnLCAnaWQn OiAnZGlkJ30KKyAgICAgICAgICAgIF0KKyAgICBpZHMgPSBbCisgICAgICAg ICAgICB7J3R5cGUnOiAnaW50JywgJ2lkJzogJ2VpZCd9CisgICAgICAgICAg ICBdCisKKyAgICBvcGVyYXRpb25zID0gZGljdCh7CisgICAgICAgICdvYmon OiBbCisgICAgICAgICAgICB7J2dldCc6ICdwcm9wZXJ0aWVzJywgJ2RlbGV0 ZSc6ICdkZWxldGUnLCAncHV0JzogJ3VwZGF0ZSd9LAorICAgICAgICAgICAg eydnZXQnOiAnbGlzdCcsICdwb3N0JzogJ2NyZWF0ZSd9CisgICAgICAgIF0s CisgICAgICAgICdkZWxldGUnOiBbeydkZWxldGUnOiAnZGVsZXRlJ31dLAor ICAgICAgICAnbm9kZXMnOiBbeydnZXQnOiAnbm9kZSd9LCB7J2dldCc6ICdu b2Rlcyd9XSwKKyAgICAgICAgJ3NxbCc6IFt7J2dldCc6ICdzcWwnfV0sCisg ICAgICAgICdtc3FsJzogW3snZ2V0JzogJ21zcWwnfSwgeydnZXQnOiAnbXNx bCd9XSwKKyAgICAgICAgJ3N0YXRzJzogW3snZ2V0JzogJ3N0YXRpc3RpY3Mn fV0sCisgICAgICAgICdkZXBlbmRlbmN5JzogW3snZ2V0JzogJ2RlcGVuZGVu Y2llcyd9XSwKKyAgICAgICAgJ2RlcGVuZGVudCc6IFt7J2dldCc6ICdkZXBl bmRlbnRzJ31dLAorICAgICAgICAnbW9kdWxlLmpzJzogW3t9LCB7fSwgeydn ZXQnOiAnbW9kdWxlX2pzJ31dLAorICAgICAgICAnYXZhaWxzJzogW3t9LCB7 J2dldCc6ICdhdmFpbHMnfV0sCisgICAgICAgICdzY2hlbWFzJzogW3t9LCB7 J2dldCc6ICdzY2hlbWFzJ31dLAorICAgICAgICAnY2hpbGRyZW4nOiBbeydn ZXQnOiAnY2hpbGRyZW4nfV0KKyAgICB9KQorCisgICAgZGVmIGNoZWNrX3By ZWNvbmRpdGlvbihmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVu Y3Rpb24gd2lsbCBiZWhhdmUgYXMgYSBkZWNvcmF0b3Igd2hpY2ggd2lsbCBj aGVja3MKKyAgICAgICAgZGF0YWJhc2UgY29ubmVjdGlvbiBiZWZvcmUgcnVu bmluZyB2aWV3LCBpdCB3aWxsIGFsc28gYXR0YWNoZXMKKyAgICAgICAgbWFu YWdlcixjb25uICYgdGVtcGxhdGVfcGF0aCBwcm9wZXJ0aWVzIHRvIHNlbGYK KyAgICAgICAgIiIiCisgICAgICAgIEB3cmFwcyhmKQorICAgICAgICBkZWYg d3JhcCgqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAgICAgIyBIZXJlIGFy Z3NbMF0gd2lsbCBob2xkIHNlbGYgJiBrd2FyZ3Mgd2lsbCBob2xkIGdpZCxz aWQsZGlkCisgICAgICAgICAgICBzZWxmID0gYXJnc1swXQorICAgICAgICAg ICAgc2VsZi5tYW5hZ2VyID0gZ2V0X2RyaXZlcihQR19ERUZBVUxUX0RSSVZF UikuY29ubmVjdGlvbl9tYW5hZ2VyKGt3YXJnc1snc2lkJ10pCisgICAgICAg ICAgICBzZWxmLmNvbm4gPSBzZWxmLm1hbmFnZXIuY29ubmVjdGlvbihkaWQ9 a3dhcmdzWydkaWQnXSkKKyAgICAgICAgICAgIHNlbGYudGVtcGxhdGVfcGF0 aCA9ICdleHRlbnNpb25zL3NxbCcKKworICAgICAgICAgICAgcmV0dXJuIGYo KmFyZ3MsICoqa3dhcmdzKQorICAgICAgICByZXR1cm4gd3JhcAorCisgICAg QGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBsaXN0KHNlbGYsIGdpZCwg c2lkLCBkaWQpOgorICAgICAgICAiIiIKKyAgICAgICAgSXQgZmV0Y2hlcyBh bGwgZXh0ZW5zaW9ucyBwcm9wZXJ0aWVzIGFuZCByZW5kZXIgaW50byBwcm9w ZXJ0aWVzCisgICAgICAgIHRhYgorICAgICAgICAiIiIKKyAgICAgICAgU1FM ID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3Bh dGgsICdwcm9wZXJ0aWVzLnNxbCddKSkKKyAgICAgICAgc3RhdHVzLCByZXMg PSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKKworICAgICAgICBpZiBu b3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZl cl9lcnJvcihlcnJvcm1zZz1yZXMpCisgICAgICAgIHJldHVybiBhamF4X3Jl c3BvbnNlKAorICAgICAgICAgICAgICAgIHJlc3BvbnNlPXJlc1sncm93cydd LAorICAgICAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAgICAgICAgICAg ICApCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVmIG5vZGVz KHNlbGYsIGdpZCwgc2lkLCBkaWQpOgorICAgICAgICAiIiIKKyAgICAgICAg SXQgbGlzdHMgZG93biB0aGUgYWxsIGV4dGVuc2lvbnMgdW5kZXIgdGhlIEV4 dGVuc2lvbnMgQ29sbGVjdGlvbiBub2RlCisgICAgICAgICIiIgorICAgICAg ICByZXMgPSBbXQorICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8i LmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ3Byb3BlcnRpZXMuc3FsJ10p KQorICAgICAgICBzdGF0dXMsIHJzZXQgPSBzZWxmLmNvbm4uZXhlY3V0ZV8y ZGFycmF5KFNRTCkKKyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAg ICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cnNl dCkKKworICAgICAgICBmb3Igcm93IGluIHJzZXRbJ3Jvd3MnXToKKyAgICAg ICAgICAgIHJlcy5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgIHNlbGYu Ymx1ZXByaW50LmdlbmVyYXRlX2Jyb3dzZXJfbm9kZSgKKyAgICAgICAgICAg ICAgICAgICAgICAgIHJvd1snZWlkJ10sCisgICAgICAgICAgICAgICAgICAg ICAgICByb3dbJ25hbWUnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICdp Y29uLWV4dGVuc2lvbicKKyAgICAgICAgICAgICAgICAgICAgKSkKKworICAg ICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAg ICAgIGRhdGE9cmVzLAorICAgICAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAg ICAgICAgICAgICAgICApCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisg ICAgZGVmIHByb3BlcnRpZXMoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgZWlkKToK KyAgICAgICAgIiIiCisgICAgICAgIEl0IGZldGNoZXMgdGhlIHByb3BlcnRp ZXMgb2YgYSBzaW5nbGUgZXh0ZW5zaW9uCisgICAgICAgIGFuZCByZW5kZXIg aW4gcHJvcGVydGllcyB0YWIKKworICAgICAgICAiIiIKKyAgICAgICAgU1FM ID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3Bh dGgsICdwcm9wZXJ0aWVzLnNxbCddKSwgZWlkPWVpZCkKKyAgICAgICAgc3Rh dHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKKyAgICAg ICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5h bF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgIHJldHVy biBhamF4X3Jlc3BvbnNlKAorICAgICAgICAgICAgICAgIHJlc3BvbnNlPXJl c1sncm93cyddWzBdLAorICAgICAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAg ICAgICAgICAgICAgICApCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisg ICAgZGVmIGNyZWF0ZShzZWxmLCBnaWQsIHNpZCwgZGlkKToKKyAgICAgICAg IiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBjcmVhdGVzIG5ldyB0 aGUgZXh0ZW5zaW9uIG9iamVjdAorICAgICAgICAiIiIKKyAgICAgICAgcmVx dWlyZWRfYXJncyA9IFsKKyAgICAgICAgICAgICduYW1lJworICAgICAgICBd CisKKyAgICAgICAgZGF0YSA9IHJlcXVlc3QuZm9ybSBpZiByZXF1ZXN0LmZv cm0gZWxzZSBqc29uLmxvYWRzKHJlcXVlc3QuZGF0YS5kZWNvZGUoKSkKKyAg ICAgICAgZm9yIGFyZyBpbiByZXF1aXJlZF9hcmdzOgorICAgICAgICAgICAg aWYgYXJnIG5vdCBpbiBkYXRhOgorICAgICAgICAgICAgICAgIHJldHVybiBt YWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAgICAgICAgICAgICAgIHN0YXR1 cz00MTAsCisgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M9MCwKKyAgICAg ICAgICAgICAgICAgICAgZXJyb3Jtc2c9Z2V0dGV4dCgKKyAgICAgICAgICAg ICAgICAgICAgICAgICJDb3VsZG4ndCBmaW5kIHRoZSByZXF1aXJlZCBwYXJh bWV0ZXIgKCVzKS4iICUgYXJnCisgICAgICAgICAgICAgICAgICAgICkKKyAg ICAgICAgICAgICAgICApCisKKyAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxm LmNvbm4uZXhlY3V0ZV9kaWN0KAorICAgICAgICAgICAgcmVuZGVyX3RlbXBs YXRlKAorICAgICAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRlbXBsYXRl X3BhdGgsICdjcmVhdGUuc3FsJ10pLAorICAgICAgICAgICAgICAgIGRhdGE9 ZGF0YQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICkKKworICAg ICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIGludGVy bmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgc3Rh dHVzLCByc2V0ID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdCgKKyAgICAgICAg ICAgIHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgICAgICAgICAiLyIuam9p bihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAncHJvcGVydGllcy5zcWwnXSksCisg ICAgICAgICAgICAgICAgZW5hbWU9ZGF0YVsnbmFtZSddCisgICAgICAgICAg ICApCisgICAgICAgICkKKworICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAg ICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1z Zz1yc2V0KQorCisgICAgICAgIGZvciByb3cgaW4gcnNldFsncm93cyddOgor ICAgICAgICAgICAgcmV0dXJuIGpzb25pZnkoCisgICAgICAgICAgICAgIG5v ZGU9c2VsZi5ibHVlcHJpbnQuZ2VuZXJhdGVfYnJvd3Nlcl9ub2RlKAorICAg ICAgICAgICAgICAgICAgICByb3dbJ2VpZCddLAorICAgICAgICAgICAgICAg ICAgICByb3dbJ25hbWUnXSwKKyAgICAgICAgICAgICAgICAgICAgJ2ljb24t ZXh0ZW5zaW9uJworICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAg ICApCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVmIHVwZGF0 ZShzZWxmLCBnaWQsIHNpZCwgZGlkLCBlaWQpOgorICAgICAgICAiIiIKKyAg ICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIHVwZGF0ZSBleHRlbnNpb24gb2Jq ZWN0CisgICAgICAgICIiIgorICAgICAgICBkYXRhID0gcmVxdWVzdC5mb3Jt IGlmIHJlcXVlc3QuZm9ybSBlbHNlIGpzb24ubG9hZHMocmVxdWVzdC5kYXRh LmRlY29kZSgpKQorICAgICAgICBTUUwgPSBzZWxmLmdldFNRTChnaWQsIHNp ZCwgZGF0YSwgZGlkLCBlaWQpCisKKyAgICAgICAgdHJ5OgorICAgICAgICAg ICAgaWYgU1FMIGFuZCBpc2luc3RhbmNlKFNRTCwgYmFzZXN0cmluZykgYW5k IFNRTC5zdHJpcCgnXG4nKSBhbmQgU1FMLnN0cmlwKCcgJyk6CisgICAgICAg ICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0 KFNRTCkKKyAgICAgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAg ICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVy cm9ybXNnPXJlcykKKworICAgICAgICAgICAgICAgIHJldHVybiBtYWtlX2pz b25fcmVzcG9uc2UoCisgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M9MSwK KyAgICAgICAgICAgICAgICAgICAgaW5mbz0iRXh0ZW5zaW9uIHVwZGF0ZWQi LAorICAgICAgICAgICAgICAgICAgICBkYXRhPXsKKyAgICAgICAgICAgICAg ICAgICAgICAgICdpZCc6IGVpZCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICdzaWQnOiBzaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAnZ2lkJzog Z2lkCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAp CisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVybiBt YWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAgICAgICAgICAgICAgIHN1Y2Nl c3M9MSwKKyAgICAgICAgICAgICAgICAgICAgaW5mbz0iTm90aGluZyB0byB1 cGRhdGUiLAorICAgICAgICAgICAgICAgICAgICBkYXRhPXsKKyAgICAgICAg ICAgICAgICAgICAgICAgICdpZCc6IGRpZCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICdzaWQnOiBzaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAn Z2lkJzogZ2lkCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg ICAgICApCisKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAg ICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1z Zz1zdHIoZSkpCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVm IGRlbGV0ZShzZWxmLCBnaWQsIHNpZCwgZGlkLCBlaWQpOgorICAgICAgICAi IiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIGRlbGV0ZSBkcm9wL2Ry b3AgY2FzY2FkZSB0aGUgZXh0ZW5zaW9uIG9iamVjdAorICAgICAgICAiIiIK KyAgICAgICAgY2FzY2FkZSA9IFRydWUgaWYgc2VsZi5jbWQgPT0gJ2RlbGV0 ZScgZWxzZSBGYWxzZQorICAgICAgICB0cnk6CisgICAgICAgICAgICAjIGNo ZWNrIGlmIGV4dGVuc2lvbiB3aXRoIGVpZCBleGlzdHMKKyAgICAgICAgICAg IFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0 ZV9wYXRoLCAnZGVsZXRlLnNxbCddKSwgZWlkPWVpZCkKKyAgICAgICAgICAg IHN0YXR1cywgbmFtZSA9IHNlbGYuY29ubi5leGVjdXRlX3NjYWxhcihTUUwp CisgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAg IHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9bmFtZSkK KyAgICAgICAgICAgICMgZHJvcCBleHRlbnNpb24KKyAgICAgICAgICAgIFNR TCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9w YXRoLCAnZGVsZXRlLnNxbCddKSwgbmFtZT1uYW1lLCBjYXNjYWRlPWNhc2Nh ZGUpCisgICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVj dXRlX3NjYWxhcihTUUwpCisgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgor ICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3Io ZXJyb3Jtc2c9cmVzKQorCisgICAgICAgICAgICByZXR1cm4gbWFrZV9qc29u X3Jlc3BvbnNlKAorICAgICAgICAgICAgICAgIHN1Y2Nlc3M9MSwKKyAgICAg ICAgICAgICAgICBpbmZvPWdldHRleHQoIkV4dGVuc2lvbiBkcm9wcGVkIiks CisgICAgICAgICAgICAgICAgZGF0YT17CisgICAgICAgICAgICAgICAgICAg ICdpZCc6IGRpZCwKKyAgICAgICAgICAgICAgICAgICAgJ3NpZCc6IHNpZCwK KyAgICAgICAgICAgICAgICAgICAgJ2dpZCc6IGdpZCwKKyAgICAgICAgICAg ICAgICB9CisgICAgICAgICAgICApCisKKyAgICAgICAgZXhjZXB0IEV4Y2Vw dGlvbiBhcyBlOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZl cl9lcnJvcihlcnJvcm1zZz1zdHIoZSkpCisKKyAgICBAY2hlY2tfcHJlY29u ZGl0aW9uCisgICAgZGVmIG1zcWwoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgZWlk PU5vbmUpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiB0 byByZXR1cm4gbW9kaWZpZWQgU1FMCisgICAgICAgICIiIgorICAgICAgICBk YXRhID0gcmVxdWVzdC5hcmdzLmNvcHkoKQorICAgICAgICBTUUwgPSBzZWxm LmdldFNRTChnaWQsIHNpZCwgZGF0YSwgZGlkLCBlaWQpCisgICAgICAgIGlm IFNRTCBhbmQgaXNpbnN0YW5jZShTUUwsIGJhc2VzdHJpbmcpIGFuZCBTUUwu c3RyaXAoJ1xuJykgYW5kIFNRTC5zdHJpcCgnICcpOgorICAgICAgICAgICAg cmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICAg ICAgZGF0YT1TUUwsCisgICAgICAgICAgICAgICAgICAgIHN0YXR1cz0yMDAK KyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICBlbHNlOgorICAgICAg ICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAgICAg ICAgICAgICAgZGF0YT0nLS0gTW9kaWZpZWQgU1FMIC0tJywKKyAgICAgICAg ICAgICAgICAgICAgc3RhdHVzPTIwMAorICAgICAgICAgICAgICAgICAgICAp CisKKyAgICBkZWYgZ2V0U1FMKHNlbGYsIGdpZCwgc2lkLCBkYXRhLCBkaWQs IGVpZD1Ob25lKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rp b24gd2lsbCBnZW5lcmF0ZSBzcWwgZnJvbSBtb2RlbCBkYXRhCisgICAgICAg ICIiIgorICAgICAgICByZXF1aXJlZF9hcmdzID0gWworICAgICAgICAgICAg J25hbWUnCisgICAgICAgIF0KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAg aWYgZWlkIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIFNRTCA9IHJl bmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAn cHJvcGVydGllcy5zcWwnXSksIGVpZD1laWQpCisgICAgICAgICAgICAgICAg c3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKKyAg ICAgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAg ICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJl cykKKyAgICAgICAgICAgICAgICBvbGRfZGF0YSA9IHJlc1sncm93cyddWzBd CisgICAgICAgICAgICAgICAgZm9yIGFyZyBpbiByZXF1aXJlZF9hcmdzOgor ICAgICAgICAgICAgICAgICAgICBpZiBhcmcgbm90IGluIGRhdGE6CisgICAg ICAgICAgICAgICAgICAgICAgICBkYXRhW2FyZ10gPSBvbGRfZGF0YVthcmdd CisgICAgICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5q b2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICd1cGRhdGUuc3FsJ10pLCBkYXRh PWRhdGEsIG9fZGF0YT1vbGRfZGF0YSkKKyAgICAgICAgICAgIGVsc2U6Cisg ICAgICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2lu KFtzZWxmLnRlbXBsYXRlX3BhdGgsICdjcmVhdGUuc3FsJ10pLCBkYXRhPWRh dGEpCisgICAgICAgICAgICByZXR1cm4gU1FMCisgICAgICAgIGV4Y2VwdCBF eGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9z ZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKGUpKQorCisgICAgQGNoZWNrX3By ZWNvbmRpdGlvbgorICAgIGRlZiBhdmFpbHMoc2VsZiwgZ2lkLCBzaWQsIGRp ZCk6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpdGgg ZmV0Y2ggYWxsIHRoZSBhdmFpbGFibGUgZXh0ZW5zaW9ucworICAgICAgICAi IiIKKyAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtz ZWxmLnRlbXBsYXRlX3BhdGgsICdleHRlbnNpb25zLnNxbCddKSkKKyAgICAg ICAgc3RhdHVzLCByc2V0ID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChTUUwp CisgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICByZXR1cm4g aW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJzZXQpCisgICAgICAg IHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAgICAgICAgICAg ZGF0YT1yc2V0Wydyb3dzJ10sCisgICAgICAgICAgICAgICAgc3RhdHVzPTIw MAorICAgICAgICAgICAgICAgICkKKworICAgIEBjaGVja19wcmVjb25kaXRp b24KKyAgICBkZWYgc2NoZW1hcyhzZWxmLCBnaWQsIHNpZCwgZGlkKToKKyAg ICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gd2l0aCBmZXRjaCBh bGwgdGhlIHNjaGVtYXMKKyAgICAgICAgIiIiCisgICAgICAgIFNRTCA9IHJl bmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAn c2NoZW1hcy5zcWwnXSkpCisgICAgICAgIHN0YXR1cywgcnNldCA9IHNlbGYu Y29ubi5leGVjdXRlX2RpY3QoU1FMKQorICAgICAgICBpZiBub3Qgc3RhdHVz OgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihl cnJvcm1zZz1yc2V0KQorICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3Bv bnNlKAorICAgICAgICAgICAgICAgIGRhdGE9cnNldFsncm93cyddLAorICAg ICAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAgICAgICAgICAgICApCisK KyAgICBkZWYgbW9kdWxlX2pzKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAg ICAgVGhpcyBwcm9wZXJ0eSBkZWZpbmVzIChpZiBqYXZhc2NyaXB0KSBleGlz dHMgZm9yIHRoaXMgbm9kZS4KKyAgICAgICAgT3ZlcnJpZGUgdGhpcyBwcm9w ZXJ0eSBmb3IgeW91ciBvd24gbG9naWMuCisgICAgICAgICIiIgorICAgICAg ICByZXR1cm4gbWFrZV9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICByZW5k ZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAgICAgICAgICJleHRlbnNpb25z L2pzL2V4dGVuc2lvbnMuanMiLAorICAgICAgICAgICAgICAgICAgICBfPWdl dHRleHQKKyAgICAgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAg ICAyMDAsIHsnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtamF2YXNj cmlwdCd9CisgICAgICAgICAgICAgICAgKQorCisgICAgQGNoZWNrX3ByZWNv bmRpdGlvbgorICAgIGRlZiBzcWwoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgZWlk KToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBn ZW5lcmF0ZSBzcWwgZm9yIHNxbCBwYW5lbAorICAgICAgICAiIiIKKyAgICAg ICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBs YXRlX3BhdGgsICdwcm9wZXJ0aWVzLnNxbCddKSwgZWlkPWVpZCkKKyAgICAg ICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkK KyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBp bnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAg IHJlc3VsdCA9IHJlc1sncm93cyddWzBdCisKKyAgICAgICAgU1FMID0gcmVu ZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdj cmVhdGUuc3FsJ10pLAorICAgICAgICAgICAgZGF0YT1yZXN1bHQsCisgICAg ICAgICAgICBjb25uPXNlbGYuY29ubiwKKyAgICAgICAgICAgIGRpc3BsYXlf Y29tbWVudHM9VHJ1ZQorICAgICAgICApCisKKyAgICAgICAgcmV0dXJuIGFq YXhfcmVzcG9uc2UocmVzcG9uc2U9U1FMKQorCitFeHRlbnNpb25WaWV3LnJl Z2lzdGVyX25vZGVfdmlldyhibHVlcHJpbnQpCmRpZmYgLS1naXQgYS93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvZXh0ZW5zaW9ucy9zdGF0aWMvaW1nL2NvbGwtZXh0ZW5zaW9uLnBuZyBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9leHRlbnNpb25zL3N0YXRpYy9pbWcvY29sbC1leHRlbnNpb24u cG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVlZDdjYTk3YTMzZWY1OTVm NDQ4Yjg2MjExNjhkNTMxZjg2ZDUxZDUKR0lUIGJpbmFyeSBwYXRjaApsaXRl cmFsIDEwMTcKemNtVjxWMHx4d3dQKTxoOzNLfExrMDAwZTFOSkxUcTAwMG1H MDAwbU8we3tSM0NAbHxEMDAwMDFiNWNoXzBJdHApCno9PlB4JV9mU2shTVNe eFooI15OM3A/UiZPZCtfWXUkaWJqJVReNlJvckIjYm1uITFfNXh9MkppVUg5 fG09aSRwewp6UnQ+N2VzWngocmtITUImbXxrcH1Za0YtaStTOXFIb05UWUNm eF58b0s3Yz5IPkJ4N25lTUVqamZPOXZablFnemcKem5hc3pvLWB2Yy13dzdL XzByQmVBd3lTPWdtMWpQQ0plSkkkR2o9biZ2eXEqWFZ+flZTZVErP0drekx1 KXYrKEtDCno/JlpwdWklQEQ/NV9vN0s1TCp0ZTxHZHwkRSZUaVVgfXAkdF9V IWZXO1BkUis+KjIhYS1NWiU0dmc2Z007TClMPQp6azUzdzQ3OU0zQkRRK2xm c0JvJnx4b0UzITgpRiRqZF9MWEduNWRVbUhFSmNFJCltfmIoeEszKnYqRXFC PWZrayYKenpONnVAbyFfcEkqUChYN2c+az10Zjc2eFAkZElqP1NWZTl1Z1NM cG4+Jn0rbHNGMiNEaVApV2opfGg8TWxoNDQ5CnptNCF1Q1B5fWRMNFZzOFV0 Q3YhSHY0TTVjamVkUFBDfSR1alo2e3hOSkJvY1hCeDQoOyl2azhNaGRfQD01 bkstIwp6V2YodHxPMD1ZRUY9cnJ6dnhuOTMrXnlCTFQkZipBb0BQSWVOMCsj a1dSK3VyY1FNY0oqU0Ytc1Qmcm5mbFZGancKemthS00lRz1uO0AkKl8tcUlU bF9NIXN5R0cmN258fFJFXjEqRHw7fSQpNHRmbWhyejZBSWJJWkFucXF7eWkq VCVWCnpIaFZXdFY7JnUxOEkjdGRJRV9OcHprYnJZYzlWZk1MdFBYPFpZeDEm QjVaOU9tM304Vlo3RmlQZXM5by1URHglMQp6d3s2WHtXeCVGWG9yV3s1a35f a3JNdnszVk1zemV8dCFgK31nSlI1bUhqK1huWTkoLTtaYipWaEN4JGMxdVUq SGgKelJtRz1HekBSXmhhdlYqMUpZMzNuUj4qVG95azt8K01MTVpiSylfK1hv akhBSDVtPHl2UjtGVDUjJjFpK1lETDBrCnpKSEs2X2s0dWh3R2xwfDFpK0Mp IXBpO0orTX5aWUlmQH5SdFo1RDRfMzBqRiNSO2dxKnk7KzJLSipKJj0kaXR8 Swp6YnRiXjFQckl+fSM9KWg7ek1AfXxUXndtMDU/JkQrWTheSjBNSjxtITZr YD4mbkwmNEhDPmQlU1A9YCo0ZF8kM1gKekNvR2FaZlQofEtTX190WkI3VVpR S0QlOE9YYyZLTDdKK0xPOCtSbTBmPUMhezlUI21KN1VERkUwMDAwMWJXJT1K CnowNl55MFcmaSpIMGIpeD5MOyMyZDlZX0VHMDEwcU5TI3RtWTNsamhVM2xq a1ZudyVIXzAwME1jTmxpcnUrWEVYQgp6NkNwKFJiY3B9fTBCJVZ7S354eWlV NjhSMnojdDMrblModHQhM35oWV52R2c0MkZMPWBFRU5ObTB7TSE2LXkxOykK elF4RmF6dkxfY0sqYjxfb2tGZzBkOEhjI1Y9RWhgKWgreVptcGxlaG5sTlpF ZHRnUUBoWDBDTmVJV0VweHchb3lOCm5kY350c3A5VGxpZE96T0MmLSkqfEtI KTNwRDJuZ3IwMDAwME5rdlhYdTBtamY8S05VegoKbGl0ZXJhbCAwCkhjbVY/ ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL2V4dGVuc2lvbnMvc3RhdGlj L2ltZy9leHRlbnNpb24ucG5nIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL2V4dGVuc2lvbnMvc3RhdGlj L2ltZy9leHRlbnNpb24ucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUz YzUzMzM0Nzg4M2ZjMWRlYzczYmNiMjFiMzJmYzU0ZTNjMzE3MzIKR0lUIGJp bmFyeSBwYXRjaApsaXRlcmFsIDk5Ngp6Y21WPEEwfmBFX1ApPGg7M0t8TGsw MDBlMU5KTFRxMDAwbUcwMDBtTzB7e1IzQ0BsfEQwMDAwMWI1Y2hfMEl0cCkK ej0+UHglYGNPPCVNUTJ6TGZfNkk2Jjl8emRkOTk+LUBhKjJtIUp1bmg3Til8 YlJmfC1ieHx6VmJvU0toYV93KGxHCno7bWMtTDRYVlZjUWpiKVIhSW9OPlVU bTZjZFRsUCspNDhhZVlfRigrIXF2aClmSXEkSSRha0BRTTFEZW1iMnAteQp6 Wk5JcGclKlU/Wit8MGVVbVI/USlAI0B5THRBM3U5WEZodjhtZHYwdGJ+QyFP ayk0eGNrYzNXc2E0PyphVUQ/cEgKekBhZlgtPDtzfGdQLTxIZWN4V0xJVE1u K3t5ZSlEcXtRTEwmYDExTW8/RGc+QV5YJUV7O2xrK015NWB4azxKR0MpCnoo Vj9KXlBhMHFyOSVVUlVaWVhKfWFIYHxFWHNkNz1WO01rdktIYmNpc0Z6bllZ OSplQHFzaV5rcTBwK2M7a34hIwp6IT81TVBxdjVsaS0+IzY/cD8xTkFhbGUz bikwTnVEa2difG5NUSR2RXd1cjspJlgoUCVrbExlKCpxd3NibjAoWmUKeiYl bHFCZysqM1MxWlk/ZG51dFRJbXJ7R05mcHlaMmV0a005WENOcVRDdHI5d2lo Vk9BVjtpTl91NkQoVEsjeGNmCnpUbmB2ITcoYk90dzRgYj1YQ1E+TGh0PWBp dDx8KCNtdFNGP1c8UVFjbSQ7VD5tMUJaO0cwKlNVeDglV0d0NyY0Qgp6VjNE K3RiOFJJd2dGM0x1dSNiTl43RzR2PT0qeVZScC1fQGtqbWVvU2RvYUchelN6 V3YhS2BVSFVLQyFNVnVaU2oKemFJQUpWZHBBeUY5dnh5Q2xoJmcralk4R0dl JHU7a2xZdW91VEAqaVZEP3cpPlk7N0VzZWtWQz9EUlIxZ1pfdFFaCnp5S3Y5 OVpPeVl+ekB9ODRoQkt7X0pIbighbDZmTFZiVG5oRlpmTVNmViQ2THVsMHFo R0MyKlo/TlA8VHZoQkx+cQp6VUJ8MGMjaXZjY3BnKVJvOThHI1dUKmBQPiRh Nn0oVzsyPmFJO2x9V3ordHxmSWVsamxTY0ZTZnJlYVhXWiVmMiMKek1aI3R+ emc/a15PT0FVcGhJMSo0Y3IzVn1RbnM4JmlnWTFAWSNEQFk3SD9iJFQ4VUN0 c2JuXzJTJWkyIXJrISloCnohPkVhTUNjdmFteVI/KFchS0s4JHFGPDMrOUJD YUFVSik4PDlYNkxtRXNzMURWLT5aVEwzZTI9OEVQOSloZmF1bQp6THk+d1hF UnNFZHNERW8oM3ptRSRleGBqc3lJbUcmNz1MT09mb2x+VGNPKiVJTkVtSiU3 aX1CfFlSbjElMDAwNFcKelFjaEM8SzwzekgwMDAwMVZvT0l2MEVoKTBOQnty OzMyO2JSYXt2R2Y2OTUxVTY5RTk0b0VRS0EwMChxUU8rXlJXCnowfi14RzQh JkhCRjh9fWxSIUt4YlIyYjdeVT8zajJ4UztWdkxYYnR3VHp+PjBXPVFoVkEp eUhfRmtMe30xO2h1awp6cGFLQ1FLekA9N3Nge2k5N2kwQHZsMlRTOHcxQzc/ UiZHN3k7KTFObTw8T1prQ3tBLWg8Nn1BPENqYkRhUDhxRGUKU1JfNGU2MDAw MDxNTlVNbkxTVGFYLV5MMzcKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlm ZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9leHRlbnNpb25zL3RlbXBsYXRlcy9leHRlbnNp b25zL2pzL2V4dGVuc2lvbnMuanMgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvZXh0ZW5zaW9ucy90ZW1w bGF0ZXMvZXh0ZW5zaW9ucy9qcy9leHRlbnNpb25zLmpzCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjExMzg1YjAKLS0tIC9kZXYvbnVs bAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvZXh0ZW5zaW9ucy90ZW1wbGF0ZXMvZXh0ZW5zaW9u cy9qcy9leHRlbnNpb25zLmpzCkBAIC0wLDAgKzEsMTk2IEBACitkZWZpbmUo CisgICAgICBbJ2pxdWVyeScsICd1bmRlcnNjb3JlJywgJ3VuZGVyc2NvcmUu c3RyaW5nJywgJ3BnYWRtaW4nLCAncGdhZG1pbi5icm93c2VyJywgJ3BnYWRt aW4uYnJvd3Nlci5jb2xsZWN0aW9uJ10sCitmdW5jdGlvbigkLCBfLCBTLCBw Z0FkbWluLCBwZ0Jyb3dzZXIpIHsKKworICBpZiAoIXBnQnJvd3Nlci5Ob2Rl c1snY29sbC1leHRlbnNpb24nXSkgeworICAgIHZhciBleHRlbnNpb25zID0g cGdBZG1pbi5Ccm93c2VyLk5vZGVzWydjb2xsLWV4dGVuc2lvbiddID0KKyAg ICAgIHBnQWRtaW4uQnJvd3Nlci5Db2xsZWN0aW9uLmV4dGVuZCh7CisgICAg ICAgIG5vZGU6ICdleHRlbnNpb24nLAorICAgICAgICBsYWJlbDogJ3t7IF8o J0V4dGVuc2lvbicpIH19JywKKyAgICAgICAgdHlwZTogJ2NvbGwtZXh0ZW5z aW9uJywKKyAgICAgICAgY29sdW1uczogWyduYW1lJywgJ293bmVyJywgJ2Nv bW1lbnQnXQorICAgICAgfSk7CisgIH07CisKKyAgaWYgKCFwZ0Jyb3dzZXIu Tm9kZXNbJ2V4dGVuc2lvbiddKSB7CisgICAgcGdBZG1pbi5Ccm93c2VyLk5v ZGVzWydleHRlbnNpb24nXSA9CisgICAgcGdBZG1pbi5Ccm93c2VyLk5vZGUu ZXh0ZW5kKHsKKyAgICAgIHBhcmVudF90eXBlOiAnZGF0YWJhc2UnLAorICAg ICAgdHlwZTogJ2V4dGVuc2lvbicsCisgICAgICBoYXNTUUw6IHRydWUsCisg ICAgICBjYW5Ecm9wOiB0cnVlLAorICAgICAgY2FuRHJvcENhc2NhZGU6IHRy dWUsCisgICAgICBsYWJlbDogJ3t7IF8oJ0V4dGVuc2lvbicpIH19JywKKwor ICAgICAgSW5pdDogZnVuY3Rpb24oKXsKKyAgICAgICAgaWYodGhpcy5pbml0 aWFsaXplZCkKKyAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5p bml0aWFsaXplZCA9IHRydWU7CisKKyAgICAgICAgcGdCcm93c2VyLmFkZF9t ZW51cyhbeworICAgICAgICAgIG5hbWU6ICdjcmVhdGVfZXh0ZW5zaW9uX29u X2NvbGwnLCBub2RlOiAnY29sbC1leHRlbnNpb24nLCBtb2R1bGU6IHRoaXMs CisgICAgICAgICAgYXBwbGllczogWydvYmplY3QnLCAnY29udGV4dCddLCBj YWxsYmFjazogJ3Nob3dfb2JqX3Byb3BlcnRpZXMnLAorICAgICAgICAgIGNh dGVnb3J5OiAnY3JlYXRlJywgcHJpb3JpdHk6IDQsIGxhYmVsOiAne3sgXygn RXh0ZW5zaW9uLi4uJykgfX0nLAorICAgICAgICAgIGljb246ICd3Y1RhYklj b24gcGctaWNvbi1leHRlbnNpb24nLCBkYXRhOiB7YWN0aW9uOiAnY3JlYXRl J30KKyAgICAgICAgfSx7CisgICAgICAgICAgbmFtZTogJ2NyZWF0ZV9leHRl bnNpb24nLCBub2RlOiAnZXh0ZW5zaW9uJywgbW9kdWxlOiB0aGlzLAorICAg ICAgICAgIGFwcGxpZXM6IFsnb2JqZWN0JywgJ2NvbnRleHQnXSwgY2FsbGJh Y2s6ICdzaG93X29ial9wcm9wZXJ0aWVzJywKKyAgICAgICAgICBjYXRlZ29y eTogJ2NyZWF0ZScsIHByaW9yaXR5OiA0LCBsYWJlbDogJ3t7IF8oJ0V4dGVu c2lvbi4uLicpIH19JywKKyAgICAgICAgICBpY29uOiAnd2NUYWJJY29uIHBn LWljb24tZXh0ZW5zaW9uJywgZGF0YToge2FjdGlvbjogJ2NyZWF0ZSd9Cisg ICAgICAgIH0KKyAgICAgICAgXSk7CisgICAgICB9LAorICAgICAgbW9kZWw6 IHBnQWRtaW4uQnJvd3Nlci5Ob2RlLk1vZGVsLmV4dGVuZCh7CisgICAgICAg IHNjaGVtYTogWworICAgICAgICAgIHsKKyAgICAgICAgICAgIGlkOiAnbmFt ZScsIGxhYmVsOiAne3sgXygnTmFtZScpfX0nLCBmaXJzdF9lbXB0eTogdHJ1 ZSwKKyAgICAgICAgICAgIHR5cGU6ICd0ZXh0JywgbW9kZTogWydwcm9wZXJ0 aWVzJywgJ2NyZWF0ZScsICdlZGl0J10sCisgICAgICAgICAgICB2aXNpYmxl OiB0cnVlLCB1cmw6J2F2YWlscycsIGRpc2FibGVkOiBmdW5jdGlvbihtKSB7 CisgICAgICAgICAgICAgICAgcmV0dXJuICFtLmlzTmV3KCk7CisgICAgICAg ICAgICB9LAorICAgICAgICAgICAgdHJhbnNmb3JtOiBmdW5jdGlvbihkYXRh KSB7CisgICAgICAgICAgICAgIHZhciByZXMgPSBbXTsKKyAgICAgICAgICAg ICAgdmFyIGxhYmVsID0gdGhpcy5tb2RlbC5nZXQoJ25hbWUnKTsKKyAgICAg ICAgICAgICAgaWYgKCF0aGlzLm1vZGVsLmlzTmV3KCkpeworICAgICAgICAg ICAgICAgIHJlcy5wdXNoKHtsYWJlbDogbGFiZWwsIHZhbHVlOiBsYWJlbH0p OworICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlm IChkYXRhICYmIF8uaXNBcnJheShkYXRhKSkgeworICAgICAgICAgICAgICAg ICAgXy5lYWNoKGRhdGEsIGZ1bmN0aW9uKGQpIHsKKyAgICAgICAgICAgICAg ICAgICAgaWYgKGQuaW5zdGFsbGVkX3ZlcnNpb24gPT09IG51bGwpCisgICAg ICAgICAgICAgICAgICAgICAgLyogZCBjb250YWlucyBqc29uIGRhdGEgYW5k IHNldHMgaW50bworICAgICAgICAgICAgICAgICAgICAgICogc2VsZWN0J3Mg b3B0aW9uIGNvbnRyb2wKKyAgICAgICAgICAgICAgICAgICAgICAqCisgICAg ICAgICAgICAgICAgICAgICAgKiBXZSBuZWVkIHRvIHN0cmluZ2lmeSBkYXRh IGJlY2F1c2UgZm9ybWF0dGVyIHdpbGwKKyAgICAgICAgICAgICAgICAgICAg ICAqIGNvbnZlcnQgQXJyYXkgT2JqZWN0IGFzIFtPYmplY3RdIHN0cmluZwor ICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgICAg ICAgcmVzLnB1c2goe2xhYmVsOiBkLm5hbWUsIHZhbHVlOiBKU09OLnN0cmlu Z2lmeShkKX0pOworICAgICAgICAgICAgICAgICAgfSkKKyAgICAgICAgICAg ICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgcmV0dXJu IHJlczsKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAvKiBleHRlbmRz IE5vZGVBamF4T3B0aW9uc0NvbnRyb2wgdG8gb3ZlcnJpZGUgdGhlIHByb3Bl cnRpZXMKKyAgICAgICAgICAgICogZ2V0VmFsdWVGcm9tRE9NIHdoaWNoIHRh a2VzIHN0cmluZ2lmaWVkIGRhdGEgZnJvbSBvcHRpb24gb2YKKyAgICAgICAg ICAgICogc2VsZWN0IGNvbnRyb2wgYW5kIHBhcnNlIGl0LiBBbmQgYG9uQ2hh bmdlYCB0YWtlcyB0aGUgc3RyaW5naWZpZWQKKyAgICAgICAgICAgICogZGF0 YSBmcm9tIHNlbGVjdCdzIG9wdGlvbiwgdGh1cyBjb252ZXJ0IGl0IHRvIGpz b24gZm9ybWF0IGFuZCBzZXQgdGhlCisgICAgICAgICAgICAqIGRhdGEgaW50 byBNb2RlbCB3aGljaCBpcyB1c2VkIHRvIGVuYWJsZS9kaXNhYmxlIHRoZSBz Y2hlbWEgZmllbGQuCisgICAgICAgICAgICAqLworICAgICAgICAgICAgY29u dHJvbDogQmFja2Zvcm0uTm9kZUFqYXhPcHRpb25zQ29udHJvbC5leHRlbmQo eworICAgICAgICAgICAgICBnZXRWYWx1ZUZyb21ET006IGZ1bmN0aW9uKCkg eworICAgICAgICAgICAgICAgIHZhciBkYXRhID0gdGhpcy5mb3JtYXR0ZXIu dG9SYXcoXy51bmVzY2FwZSh0aGlzLiRlbC5maW5kKCJzZWxlY3QiKS52YWwo KSksIHRoaXMubW9kZWwpOworICAgICAgICAgICAgICAgIC8qCisgICAgICAg ICAgICAgICAgICogcmV0dXJuIG51bGwgaWYgZGF0YSBpcyBlbXB0eSB0byBw cmV2ZW50IGl0IGZyb20KKyAgICAgICAgICAgICAgICAgKiB0aHJvd2luZyBw YXJzaW5nIGVycm9yLiBBZGRzIGNoZWNrIGFzIG5hbWUgY2FuIGJlIGVtcHR5 CisgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICBpZiAoZGF0 YSA9PT0gJycpeworICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7Cisg ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKHR5 cGVvZihkYXRhKSA9PT0gJ3N0cmluZycpIHsKKyAgICAgICAgICAgICAgICAg IGRhdGE9SlNPTi5wYXJzZShkYXRhKTsKKyAgICAgICAgICAgICAgICB9Cisg ICAgICAgICAgICAgICAgcmV0dXJuIGRhdGEubmFtZTsKKyAgICAgICAgICAg ICAgfSwKKyAgICAgICAgICAgICAgb25DaGFuZ2U6IGZ1bmN0aW9uKCkgewor ICAgICAgICAgICAgICAgIEJhY2tmb3JtLk5vZGVBamF4T3B0aW9uc0NvbnRy b2wucHJvdG90eXBlLm9uQ2hhbmdlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7 CisgICAgICAgICAgICAgICAgdmFyIHNlbGVjdGVkVmFsdWUgPSB0aGlzLiRl bC5maW5kKCJzZWxlY3QiKS52YWwoKTsKKyAgICAgICAgICAgICAgICBpZiAo c2VsZWN0ZWRWYWx1ZS50cmltKCkgIT0gIiIpeworICAgICAgICAgICAgICAg ICAgdmFyIGQgPSB0aGlzLmZvcm1hdHRlci50b1JhdyhzZWxlY3RlZFZhbHVl LCB0aGlzLm1vZGVsKTsKKyAgICAgICAgICAgICAgICAgIGlmKHR5cGVvZihk KSA9PT0gJ3N0cmluZycpCisgICAgICAgICAgICAgICAgICAgIGQ9SlNPTi5w YXJzZShkKTsKKyAgICAgICAgICAgICAgICAgIHZhciBjaGFuZ2VzID0gewor ICAgICAgICAgICAgICAgICAgICAndmVyc2lvbicgOiAnJywKKyAgICAgICAg ICAgICAgICAgICAgJ3JlbG9jYXRhYmxlJzogKCghXy5pc051bGwoZC5yZWxv Y2F0YWJsZVswXSkgJiYgIV8uaXNVbmRlZmluZWQoZC5yZWxvY2F0YWJsZVsw XSkpID8gZC5yZWxvY2F0YWJsZVswXTogJycpLAorICAgICAgICAgICAgICAg ICAgICAnc2NoZW1hJzogKCghXy5pc051bGwoZC5zY2hlbWFbMF0pICYmICFf LmlzVW5kZWZpbmVkKGQuc2NoZW1hWzBdKSkgPyBkLnNjaGVtYVswXTogJycp CisgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgICB0 aGlzLm1vZGVsLnNldChjaGFuZ2VzKTsKKyAgICAgICAgICAgICAgICB9ZWxz ZXsKKyAgICAgICAgICAgICAgICAgIHZhciBjaGFuZ2VzID0geyd2ZXJzaW9u JzogJycsICdyZWxvY2F0YWJsZSc6IHRydWUsICdzY2hlbWEnOiAnJ307Cisg ICAgICAgICAgICAgICAgICB0aGlzLm1vZGVsLnNldChjaGFuZ2VzKTsKKyAg ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAg ICB9KQorICAgICAgICAgIH0seworICAgICAgICAgICAgaWQ6ICdlaWQnLCBs YWJlbDogJ3t7IF8oJ09pZCcpfX0nLCBjZWxsOiAnc3RyaW5nJywKKyAgICAg ICAgICAgIHR5cGU6ICd0ZXh0JywgZGlzYWJsZWQ6IHRydWUsIG1vZGU6IFsn cHJvcGVydGllcycsICdlZGl0JywgJ2NyZWF0ZSddCisgICAgICAgICAgfSx7 CisgICAgICAgICAgICBpZDogJ293bmVyJywgbGFiZWw6J3t7IF8oJ093bmVy JykgfX0nLCBjb250cm9sOiAnbm9kZS1saXN0LWJ5LW5hbWUnLAorICAgICAg ICAgICAgbW9kZTogWydwcm9wZXJ0aWVzJ10sIG5vZGU6ICdyb2xlJywgY2Vs bDogJ3N0cmluZycKKyAgICAgICAgICB9LHsKKyAgICAgICAgICAgIGlkOiAn c2NoZW1hJywgbGFiZWw6ICd7eyBfKCdTY2hlbWEnKX19JywgdHlwZTogJ3Rl eHQnLCBjb250cm9sOiAnbm9kZS1hamF4LW9wdGlvbnMnLAorICAgICAgICAg ICAgbW9kZTogWydwcm9wZXJ0aWVzJywgJ2NyZWF0ZScsICdlZGl0J10sIGdy b3VwOiAnRGVmaW5pdGlvbicsIGRlcHM6IFsncmVsb2NhdGFibGUnXSwKKyAg ICAgICAgICAgIHVybDogJ3NjaGVtYXMnLCBmaXJzdF9lbXB0eTogdHJ1ZSwg ZGlzYWJsZWQ6IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICAgICAgLyogZW5h YmxlIG9yIGRpc2FibGUgc2NoZW1hIGZpZWxkIGlmIG1vZGVsJ3MgcmVsb2Nh dGFibGUKKyAgICAgICAgICAgICAgKiBhdHRyaWJ1dGUgaXMgVHJ1ZSBvciBG YWxzZQorICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICByZXR1cm4g KG0uaGFzKCdyZWxvY2F0YWJsZScpID8gIW0uZ2V0KCdyZWxvY2F0YWJsZScp IDogZmFsc2UpOworICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHRyYW5z Zm9ybTogZnVuY3Rpb24oZGF0YSkgeworICAgICAgICAgICAgICB2YXIgcmVz ID0gW107CisgICAgICAgICAgICAgIGlmIChkYXRhICYmIF8uaXNBcnJheShk YXRhKSkgeworICAgICAgICAgICAgICAgIF8uZWFjaChkYXRhLCBmdW5jdGlv bihkKSB7CisgICAgICAgICAgICAgICAgICByZXMucHVzaCh7bGFiZWw6IGQu c2NoZW1hLCB2YWx1ZTogZC5zY2hlbWF9KTsKKyAgICAgICAgICAgICAgICB9 KQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIHJldHVybiByZXM7 CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwKKyAgICAgICAgICB7Cisg ICAgICAgICAgICBpZDogJ3JlbG9jYXRhYmxlJywgbGFiZWw6ICd7eyBfKCdS ZWxvY2F0YWJsZT8nKX19JywgY2VsbDogJ3N3aXRjaCcsCisgICAgICAgICAg ICB0eXBlOiAnc3dpdGNoJywgbW9kZTogWydwcm9wZXJ0aWVzJ10sICdvcHRp b25zJzogeworICAgICAgICAgICAgICAnb25UZXh0JzogJ1llcycsICdvZmZU ZXh0JzogJ05vJywgJ29uQ29sb3InOiAnc3VjY2VzcycsCisgICAgICAgICAg ICAgICdvZmZDb2xvcic6ICdkZWZhdWx0JywgJ3NpemUnOiAnc21hbGwnCisg ICAgICAgICAgICB9CisgICAgICAgICAgfSwKKyAgICAgICAgICB7CisgICAg ICAgICAgICBpZDogJ3ZlcnNpb24nLCBsYWJlbDogJ3t7IF8oJ1ZlcnNpb24n KX19JywgY2VsbDogJ3N0cmluZycsCisgICAgICAgICAgICBtb2RlOiBbJ3By b3BlcnRpZXMnLCAnY3JlYXRlJywgJ2VkaXQnXSwgZ3JvdXA6ICdEZWZpbml0 aW9uJywKKyAgICAgICAgICAgIGNvbnRyb2w6ICdub2RlLWFqYXgtb3B0aW9u cycsIHVybDonYXZhaWxzJywgZmlyc3RfZW1wdHk6IHRydWUsCisgICAgICAg ICAgICAvKgorICAgICAgICAgICAgKiBUcmFuc2Zvcm0gdGhlIGRhdGEgaW50 byB2ZXJzaW9uIGZvciB0aGUgc2VsZWN0ZWQgZXh0ZW5zaW9uLgorICAgICAg ICAgICAgKi8KKyAgICAgICAgICAgIHRyYW5zZm9ybTogZnVuY3Rpb24oZGF0 YSkgeworICAgICAgICAgICAgICByZXMgPSBbXTsKKyAgICAgICAgICAgICAg dmFyIGV4dGVuc2lvbiA9IHRoaXMubW9kZWwuZ2V0KCduYW1lJyk7CisgICAg ICAgICAgICAgIF8uZWFjaChkYXRhLCBmdW5jdGlvbihkdCl7CisgICAgICAg ICAgICAgICAgaWYoZHQubmFtZSA9PSBleHRlbnNpb24peworICAgICAgICAg ICAgICAgICAgaWYoZHQudmVyc2lvbiAmJiBfLmlzQXJyYXkoZHQudmVyc2lv bikpeworICAgICAgICAgICAgICAgICAgICBfLmVhY2goZHQudmVyc2lvbiwg ZnVuY3Rpb24odil7CisgICAgICAgICAgICAgICAgICAgICAgcmVzLnB1c2go eyBsYWJlbDogdiwgdmFsdWU6IHYgfSk7CisgICAgICAgICAgICAgICAgICAg IH0pOworICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0K KyAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgIHJldHVybiByZXM7 CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwKKyAgICAgICAgICB7Cisg ICAgICAgICAgICBpZDogJ2NvbW1lbnQnLCBsYWJlbDogJ3t7IF8oJ0NvbW1l bnQnKX19JywgY2VsbDogJ3N0cmluZycsCisgICAgICAgICAgICB0eXBlOiAn bXVsdGlsaW5lJywgZGlzYWJsZWQ6IHRydWUKKyAgICAgICAgICB9CisgICAg ICAgIF0sCisgICAgICAgIHZhbGlkYXRlOiBmdW5jdGlvbigpIHsKKyAgICAg ICAgICAvKgorICAgICAgICAgICogVHJpZ2dlcnMgZXJyb3IgbWVzc2FnZXMg Zm9yIG5hbWUKKyAgICAgICAgICAqIGlmIGl0IGlzIGVtcHR5L3VuZGVmaW5l ZC9udWxsCisgICAgICAgICAgKi8KKyAgICAgICAgICB2YXIgZXJyID0ge30s CisgICAgICAgICAgICBlcnJtc2csCisgICAgICAgICAgICBuYW1lID0gdGhp cy5nZXQoJ25hbWUnKTsKKyAgICAgICAgICBpZiAoXy5pc1VuZGVmaW5lZChu YW1lKSB8fCBfLmlzTnVsbChuYW1lKSB8fAorICAgICAgICAgICAgU3RyaW5n KG5hbWUpLnJlcGxhY2UoL15ccyt8XHMrJC9nLCAnJykgPT0gJycpIHsKKyAg ICAgICAgICAgIGVyclsnbmFtZSddID0gJ3t7IF8oJ05hbWUgY2FuIG5vdCBi ZSBlbXB0eSEnKSB9fSc7CisgICAgICAgICAgICBlcnJtc2cgPSBlcnJtc2cg fHwgZXJyWyduYW1lJ107CisgICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwu c2V0KCduYW1lJywgZXJybXNnKTsKKyAgICAgICAgICAgIHJldHVybiBlcnJt c2c7CisgICAgICAgICAgfWVsc2V7CisgICAgICAgICAgICB0aGlzLmVycm9y TW9kZWwudW5zZXQoJ25hbWUnKTsKKyAgICAgICAgICB9CisgICAgICAgICAg cmV0dXJuIG51bGw7CisgICAgICAgIH0KKyAgICAgIH0pCisgICAgfSkKKyAg fTsKKworICByZXR1cm4gcGdCcm93c2VyLk5vZGVzWydjb2xsLWV4dGVuc2lv biddOworfSk7CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvZXh0ZW5zaW9ucy90ZW1w bGF0ZXMvZXh0ZW5zaW9ucy9zcWwvY3JlYXRlLnNxbCBiL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9leHRl bnNpb25zL3RlbXBsYXRlcy9leHRlbnNpb25zL3NxbC9jcmVhdGUuc3FsCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4OGE3Y2MKLS0t IC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvZXh0ZW5zaW9ucy90ZW1wbGF0ZXMv ZXh0ZW5zaW9ucy9zcWwvY3JlYXRlLnNxbApAQCAtMCwwICsxLDE5IEBACit7 Iz09PT09PT09PT09PT09PT09PT09PT09PT1DcmVhdGUgbmV3IGV4dGVuc2lv bj09PT09PT09PT09PT09PT09PT09PT0jfQoreyM9PT1HZW5lcmF0ZXMgY29t bWVudHMgYW5kIGNvZGUgZm9yIFNRTCB0YWI9PT0jfQoreyUgaWYgZGlzcGxh eV9jb21tZW50cyAlfQorLS0gRXh0ZW5zaW9uOiB7eyBjb25ufHF0SWRlbnQo ZGF0YS5uYW1lKSB9fQorCistLSBEUk9QIEVYVEVOU0lPTiB7eyBjb25ufHF0 SWRlbnQoZGF0YS5uYW1lKSB9fTsKKworeyUgZW5kaWYgJX0KK3slIGlmIGRh dGEubmFtZSAlfQorIENSRUFURSBFWFRFTlNJT04ge3sgY29ubnxxdElkZW50 KGRhdGEubmFtZSkgfX17JSBpZiBkYXRhLnNjaGVtYSA9PSAnJyBhbmQgZGF0 YS52ZXJzaW9uID09ICcnICV9O3slIGVuZGlmICV9Cit7JSBpZiBkYXRhLnNj aGVtYSAlfQorCisgICAgU0NIRU1BIHt7IGNvbm58cXRJZGVudChkYXRhLnNj aGVtYSkgfX17JSBpZiBkYXRhLnZlcnNpb24gPT0gJycgJX07eyUgZW5kaWYg JX0KK3slIGVuZGlmICV9Cit7JSBpZiBkYXRhLnZlcnNpb24gJX0KKworICAg IFZFUlNJT04ge3sgY29ubnxxdElkZW50KGRhdGEudmVyc2lvbikgfX07Cit7 JSBlbmRpZiAlfQoreyUgZW5kaWYgJX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9l eHRlbnNpb25zL3RlbXBsYXRlcy9leHRlbnNpb25zL3NxbC9kZWxldGUuc3Fs IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL2V4dGVuc2lvbnMvdGVtcGxhdGVzL2V4dGVuc2lvbnMvc3Fs L2RlbGV0ZS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MC4uNDQxNTVmNgotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9leHRlbnNp b25zL3RlbXBsYXRlcy9leHRlbnNpb25zL3NxbC9kZWxldGUuc3FsCkBAIC0w LDAgKzEsOCBAQAoreyM9PT09PT09PT09PT09PT09PT09PT09PT09PT09RHJv cC9DYXNjYWRlIEV4dGVuc2lvbiBieSBuYW1lPT09PT09PT09PT09PT09PT09 PT09PT09PSN9Cit7JSBpZiBlaWQgJX0KK1NFTEVDVCB4LmV4dG5hbWUgZnJv bSBwZ19leHRlbnNpb24geAorICAgIFdIRVJFIHgub2lkID0ge3sgZWlkIH19 OjppbnQKK3slIGVuZGlmICV9Cit7JSBpZiBuYW1lICV9CitEUk9QIEVYVEVO U0lPTiB7eyBjb25ufHF0SWRlbnQobmFtZSkgfX0geyUgaWYgY2FzY2FkZSAl fSBDQVNDQURFIHslIGVuZGlmICV9Cit7JSBlbmRpZiAlfQpkaWZmIC0tZ2l0 IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL2V4dGVuc2lvbnMvdGVtcGxhdGVzL2V4dGVuc2lvbnMvc3Fs L2V4dGVuc2lvbnMuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL2V4dGVuc2lvbnMvdGVtcGxhdGVz L2V4dGVuc2lvbnMvc3FsL2V4dGVuc2lvbnMuc3FsCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmMzk3OWQKLS0tIC9kZXYvbnVsbAor KysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvZXh0ZW5zaW9ucy90ZW1wbGF0ZXMvZXh0ZW5zaW9ucy9z cWwvZXh0ZW5zaW9ucy5zcWwKQEAgLTAsMCArMSwxMiBAQAoreyMgPT09PT09 PT09PT09PT09PT09PT09PUZldGNoIGV4dGVuc2lvbnMgbmFtZXM9PT09PT09 PT09PT09PT09PT09PT0jfQorU0VMRUNUCisgICAgYS5uYW1lLCBhLmluc3Rh bGxlZF92ZXJzaW9uLAorICAgIGFycmF5X2FnZyhhdi52ZXJzaW9uKSBhcyB2 ZXJzaW9uLAorICAgIGFycmF5X2FnZyhhdi5zY2hlbWEpIGFzIHNjaGVtYSwK KyAgICBhcnJheV9hZ2coYXYuc3VwZXJ1c2VyKSBhcyBzdXBlcnVzZXIsCisg ICAgYXJyYXlfYWdnKGF2LnJlbG9jYXRhYmxlKSBhcyByZWxvY2F0YWJsZQor RlJPTQorICAgIHBnX2F2YWlsYWJsZV9leHRlbnNpb25zIGEKKyAgICBMRUZU IEpPSU4gcGdfYXZhaWxhYmxlX2V4dGVuc2lvbl92ZXJzaW9ucyBhdiBPTiAo YS5uYW1lID0gYXYubmFtZSkKK0dST1VQIEJZIGEubmFtZSwgYS5pbnN0YWxs ZWRfdmVyc2lvbgorT1JERVIgQlkgYS5uYW1lCmRpZmYgLS1naXQgYS93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvZXh0ZW5zaW9ucy90ZW1wbGF0ZXMvZXh0ZW5zaW9ucy9zcWwvcHJvcGVy dGllcy5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvZXh0ZW5zaW9ucy90ZW1wbGF0ZXMvZXh0ZW5z aW9ucy9zcWwvcHJvcGVydGllcy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMC4uZjY1MjY3NgotLS0gL2Rldi9udWxsCisrKyBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9leHRlbnNpb25zL3RlbXBsYXRlcy9leHRlbnNpb25zL3NxbC9wcm9w ZXJ0aWVzLnNxbApAQCAtMCwwICsxLDE3IEBACit7Iz09PT09PT09PT09PT09 PT09PT1GZXRjaCBwcm9wZXJ0aWVzIG9mIGVhY2ggZXh0ZW5zaW9uIGJ5IG5h bWUgb3Igb2lkPT09PT09PT09PT09PT09PT09PSN9CitTRUxFQ1QKKyAgICB4 Lm9pZCBBUyBlaWQsIHBnX2dldF91c2VyYnlpZChleHRvd25lcikgQVMgb3du ZXIsCisgICAgeC5leHRuYW1lIEFTIG5hbWUsIG4ubnNwbmFtZSBBUyBzY2hl bWEsCisgICAgeC5leHRyZWxvY2F0YWJsZSBBUyByZWxvY2F0YWJsZSwgeC5l eHR2ZXJzaW9uIEFTIHZlcnNpb24sCisgICAgZS5jb21tZW50CitGUk9NCisg ICAgcGdfZXh0ZW5zaW9uIHgKKyAgICBMRUZUIEpPSU4gcGdfbmFtZXNwYWNl IG4gT04geC5leHRuYW1lc3BhY2U9bi5vaWQKKyAgICBKT0lOIHBnX2F2YWls YWJsZV9leHRlbnNpb25zKCkgZShuYW1lLCBkZWZhdWx0X3ZlcnNpb24sIGNv bW1lbnQpIE9OIHguZXh0bmFtZT1lLm5hbWUKK3slLSBpZiBlaWQgJX0KKyBX SEVSRSB4Lm9pZCA9IHt7ZWlkfX06OmludAoreyUgZWxpZiBlbmFtZSAlfQor IFdIRVJFIHguZXh0bmFtZSA9IHt7ZW5hbWV8cXRMaXRlcmFsfX06OnRleHQK K3slIGVsc2UgJX0KKyBPUkRFUiBCWSB4LmV4dG5hbWUKK3slIGVuZGlmICV9 CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvZXh0ZW5zaW9ucy90ZW1wbGF0ZXMvZXh0 ZW5zaW9ucy9zcWwvc2NoZW1hcy5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvZXh0ZW5zaW9ucy90 ZW1wbGF0ZXMvZXh0ZW5zaW9ucy9zcWwvc2NoZW1hcy5zcWwKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjhlM2M5NwotLS0gL2Rldi9u dWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9leHRlbnNpb25zL3RlbXBsYXRlcy9leHRlbnNp b25zL3NxbC9zY2hlbWFzLnNxbApAQCAtMCwwICsxLDMgQEAKK3sjPT09PT09 PT09PT09PT09PT09PWZldGNoIGFsbCBzY2hlbWFzPT09PT09PT09PT09PT09 PT09PT09PT09PT0jfQorU0VMRUNUIG5zcG5hbWUgQXMgc2NoZW1hIEZST00g cGdfbmFtZXNwYWNlCisgT1JERVIgQlkgbnNwbmFtZQpkaWZmIC0tZ2l0IGEv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL2V4dGVuc2lvbnMvdGVtcGxhdGVzL2V4dGVuc2lvbnMvc3FsL3Vw ZGF0ZS5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvZXh0ZW5zaW9ucy90ZW1wbGF0ZXMvZXh0ZW5z aW9ucy9zcWwvdXBkYXRlLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi5jNGNkNjI2Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L2V4dGVuc2lvbnMvdGVtcGxhdGVzL2V4dGVuc2lvbnMvc3FsL3VwZGF0ZS5z cWwKQEAgLTAsMCArMSwxMCBAQAoreyMgPT09PT09PT09PT09PVVwZGF0ZSBl eHRlbnNpb24gc2NoZW1hPT09PT09PT09PT09PSAjfQoreyUgaWYgZGF0YS5z Y2hlbWEgYW5kIGRhdGEuc2NoZW1hICE9IG9fZGF0YS5zY2hlbWEgJX0KK0FM VEVSIEVYVEVOU0lPTiB7eyBjb25ufHF0SWRlbnQob19kYXRhLm5hbWUpIH19 CisgICAgU0VUIFNDSEVNQSB7eyBjb25ufHF0SWRlbnQoZGF0YS5zY2hlbWEp IH19OworeyUgZW5kaWYgJX0KK3sjID09PT09PT09PT09PT1VcGRhdGUgZXh0 ZW5zaW9uIHZlcnNpb249PT09PT09PT09PT09ICN9Cit7JSBpZiBkYXRhLnZl cnNpb24gYW5kIGRhdGEudmVyc2lvbiAhPSBvX2RhdGEudmVyc2lvbiAlfQor QUxURVIgRVhURU5TSU9OIHt7IGNvbm58cXRJZGVudChvX2RhdGEubmFtZSkg fX0KKyAgICBVUERBVEUgVE8ge3sgY29ubnxxdElkZW50KGRhdGEudmVyc2lv bikgfX07Cit7JSBlbmRpZiAlfQo= --001a11442f185a2d2f052aeb9a26 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 --001a11442f185a2d2f052aeb9a26--