Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.80) (envelope-from ) id 1aVJDU-0000po-8g for pgadmin-hackers@arkaria.postgresql.org; Mon, 15 Feb 2016 13:29:28 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84) (envelope-from ) id 1aVJDT-0004fW-QR for pgadmin-hackers@arkaria.postgresql.org; Mon, 15 Feb 2016 13:29:27 +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 1aVJDC-0004PV-Uw for pgadmin-hackers@postgresql.org; Mon, 15 Feb 2016 13:29:11 +0000 Received: from mail-yw0-x22f.google.com ([2607:f8b0:4002:c05::22f]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.84) (envelope-from ) id 1aVJD2-00043k-IK for pgadmin-hackers@postgresql.org; Mon, 15 Feb 2016 13:29:09 +0000 Received: by mail-yw0-x22f.google.com with SMTP id u200so114314423ywf.0 for ; Mon, 15 Feb 2016 05:29:00 -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:date:message-id:subject:from:to :cc:content-type; bh=vYvTwsihPsgVTzy4gCrmeCaRTcmnHXa31jgOqY2gOlI=; b=JP5/jgtPYqtQFf1AfQ7BpJKSWGS+6/4mSEQzUlkUUh5P21+i/2lr8P9gBNzQcOQBRy E0H3D7hhNSZq/JLoAJEyij54qByHwVo3X/d4+m5b+y24/4GIKnBQG6gMSqOBIPeIPI3l ufalmw2BVt7a4OjUSwV76myWM/WsHFYkokrYwh7UC8dVIgRY+zqtPdpTf/eaXsypdxhD +WvI8D14IjgTbPXZgj4HeO71bSmxw22b26vY4yTdde/fuAg1AJzrYYo+wyWmX3G3p/Ax xxssO9D17nnJpnaWQjC82SKyKRxVNcnoWu0F+/veoC/vYTmokbvT0XFEUiKlCNv30EMA vCjg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc:content-type; bh=vYvTwsihPsgVTzy4gCrmeCaRTcmnHXa31jgOqY2gOlI=; b=h6NPZ7Rz0D+3gJuNSjsjUU+G8Ei46BFZ70QYeMFmL35iuZrpC0xhIfMWI5RD3RUo+w FxQafqPb40RCR0FDksSgP/jBK2M40B5kMhMC5zJhbsYZZtiCYxwmy7E0hU4Mz/kPKHtj Y0SMfKCXlMM2L+gbIM20lAPmZF+7SOrDZxP5YQUys4Kattw+oOftTv6/SgYKSw2zGOTo tHP4cyIWIyocXT1Ttr490XvuIliEvU275ZlqFWUouG/9OsmewBynrTTquUkAaIVMrHfm ptRmu6vDK5ZpOxLoeYKvVSoaZOq4FMQtlQko8OiTI1JhuPd7OmTe4Nq6RD37VMMJN5Q4 60BA== X-Gm-Message-State: AG10YORIf5/RYJDSR4GJCd6ifibVT52clJc3m5Dy+UuVTkj/YUY//OaIk3qHD0ywLXTetjAZ1/sLew9GiplKweU5 MIME-Version: 1.0 X-Received: by 10.129.82.15 with SMTP id g15mr9066130ywb.344.1455542938865; Mon, 15 Feb 2016 05:28:58 -0800 (PST) Received: by 10.129.84.198 with HTTP; Mon, 15 Feb 2016 05:28:58 -0800 (PST) In-Reply-To: References: Date: Mon, 15 Feb 2016 18:58:58 +0530 Message-ID: Subject: Re: patch for cast module From: Sanket Mehta To: Dave Page Cc: pgadmin-hackers Content-Type: multipart/mixed; boundary=001a114dac44d3ecab052bceff07 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 --001a114dac44d3ecab052bceff07 Content-Type: multipart/alternative; boundary=001a114dac44d3eca4052bceff05 --001a114dac44d3eca4052bceff05 Content-Type: text/plain; charset=UTF-8 Hi, PFA the revised patch with all the required comments. Regards, Sanket Mehta Sr Software engineer Enterprisedb On Mon, Feb 15, 2016 at 4:18 PM, Dave Page wrote: > > > On Mon, Feb 15, 2016 at 8:10 AM, Sanket Mehta < > sanket.mehta@enterprisedb.com> wrote: > >> Hi Dave, >> >> Regarding your suggestion of putting some comments in javascript, I think >> I have already put some comments regarding model data and their controls if >> any extended. >> >> Can you please let me know where exactly you think more comments are >> required? >> > > Hi > > The issue for me is that jQuery code isn't the easiest to read at the best > of times, with nested/anonymous functions and inline JSON etc. As I look > through the code for the various nodes in isolation, it's extremely > difficult to get a sense of what exactly each part of the code is doing. In > this example, what I see by reading the code is: > > - Define the required libraries (require.js stuff) > - Extend the collection class > - Extend the node class > - Define an init function inline > - Add the menu options > > That part is fairly easy to figure out (easier because there are blank > lines between the logical sections). From there though, it becomes much > harder; > > - There are no blank lines to separate logical code sections at all > between line 48 and 235 (there is one blank line, but it doesn't separate > code sections). > - There are 4 comments that I can see. The first two are identical, and > appear to have identical code blocks following them for reasons that are > not even remotely obvious. > - As a newcomer to this code, I'm wondering if it's purpose is to define > the backform model. If so, why is it not broken up into sections with a > comment to tell me what field each block handles, and any other useful > information I may need to know? If it's not, then what is it for? > > So... I'm not going to tell you exactly where to put comments, because the > point is that without spending a couple of hours understanding this, I > simply don't know. The point of the comments (and separation of logical > sections of code with blank lines) is to make it easy for another developer > (especially one as rusty as me) to read and understand, then fix and > improve. Be generous with comments, but don't use them unnecessarily (e.g. > "a = 1 // Set a to one"). > > Of course, this is not just directed at you Sanket - it's something all of > us working on pgAdmin need to keep in mind. > > Thanks. > > -- > Dave Page > Blog: http://pgsnake.blogspot.com > Twitter: @pgsnake > > EnterpriseDB UK: http://www.enterprisedb.com > The Enterprise PostgreSQL Company > --001a114dac44d3eca4052bceff05 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Hi,

PFA the revised patch with all the r= equired comments.



Regards,
Sank= et Mehta
Sr Software engineer
Enterprisedb
<= /div>

On Mon, Feb 15, 2016 at 4:18 PM, Dave Page <= span dir=3D"ltr"><dpage@pgadmin.org> wrote:
=


On Mon, Feb 15, 2016 at 8:10 AM, Sanket Mehta <sanket.mehta@enterprisedb.com> wrote:
Hi Dave,

Regarding= your suggestion of putting some comments in javascript, I think I have alr= eady put some comments regarding model data and their controls if any exten= ded.

Can you please let me know where exactly you think more c= omments are required?

Hi
=

The issue for me is that jQuery code isn't the easi= est to read at the best of times, with nested/anonymous functions and inlin= e JSON etc. As I look through the code for the various nodes in isolation, = it's extremely difficult to get a sense of what exactly each part of th= e code is doing. In this example, what I see by reading the code is:
<= div>
- Define the required libraries (require.js stuff)
=
- Extend the collection class
- Extend the node class
<= div>=C2=A0 - Define an init function inline
=C2=A0 - Add the menu= options

That part is fairly easy to figure out (e= asier because there are blank lines between the logical sections). From the= re though, it becomes much harder;

- There are no = blank lines to separate logical code sections at all between line 48 and 23= 5 (there is one blank line, but it doesn't separate code sections).=C2= =A0
- There are 4 comments that I can see. The first two are iden= tical, and appear to have identical code blocks following them for reasons = that are not even remotely obvious.=C2=A0
- As a newcomer to this= code, I'm wondering if it's purpose is to define the backform mode= l. If so, why is it not broken up into sections with a comment to tell me w= hat field each block handles, and any other useful information I may need t= o know? If it's not, then what is it for?

So..= . I'm not going to tell you exactly where to put comments, because the = point is that without spending a couple of hours understanding this, I simp= ly don't know. The point of the comments (and separation of logical sec= tions of code with blank lines) is to make it easy for another developer (e= specially one as rusty as me) to read and understand, then fix and improve.= Be generous with comments, but don't use them unnecessarily (e.g. &quo= t;a =3D 1 // Set a to one").

Of course, this = is not just directed at you Sanket - it's something all of us working o= n pgAdmin need to keep in mind.

Thanks.

--

--001a114dac44d3eca4052bceff05-- --001a114dac44d3ecab052bceff07 Content-Type: text/x-patch; charset=US-ASCII; name="castv8.patch" Content-Disposition: attachment; filename="castv8.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_iko0o2i90 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9jYXN0cy9fX2luaXRfXy5weSBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9jYXN0cy9fX2luaXRfXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi45NmNhZmZjCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L2Nhc3RzL19faW5pdF9fLnB5CkBAIC0wLDAgKzEsNDk4IEBACisjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIworIyBwZ0FkbWluIDQgLSBQb3N0 Z3JlU1FMIFRvb2xzCisjCisjIENvcHlyaWdodCAoQykgMjAxNiwgVGhlIHBn QWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorIyBUaGlzIHNvZnR3YXJlIGlzIHJl bGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKyMKKyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyIiIkRlZmluZXMgdmlld3Mg Zm9yIG1hbmFnZW1lbnQgb2YgY2FzdCBub2RlIiIiCitpbXBvcnQganNvbgor ZnJvbSBmbGFzayBpbXBvcnQgcmVuZGVyX3RlbXBsYXRlLCBtYWtlX3Jlc3Bv bnNlLCBjdXJyZW50X2FwcCwgcmVxdWVzdCwganNvbmlmeQorZnJvbSBmbGFz ay5leHQuYmFiZWwgaW1wb3J0IGdldHRleHQKK2Zyb20gcGdhZG1pbi51dGls cy5hamF4IGltcG9ydCBtYWtlX2pzb25fcmVzcG9uc2UsIFwKKyAgICBtYWtl X3Jlc3BvbnNlIGFzIGFqYXhfcmVzcG9uc2UsIGludGVybmFsX3NlcnZlcl9l cnJvcgorZnJvbSBwZ2FkbWluLmJyb3dzZXIudXRpbHMgaW1wb3J0IE5vZGVW aWV3Citmcm9tIHBnYWRtaW4uYnJvd3Nlci5jb2xsZWN0aW9uIGltcG9ydCBD b2xsZWN0aW9uTm9kZU1vZHVsZQoraW1wb3J0IHBnYWRtaW4uYnJvd3Nlci5z ZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMuZGF0YWJhc2VzIGFzIGRhdGFiYXNlcwor ZnJvbSBwZ2FkbWluLnV0aWxzLmFqYXggaW1wb3J0IHByZWNvbmRpdGlvbl9y ZXF1aXJlZAorZnJvbSBwZ2FkbWluLnV0aWxzLmRyaXZlciBpbXBvcnQgZ2V0 X2RyaXZlcgorZnJvbSBjb25maWcgaW1wb3J0IFBHX0RFRkFVTFRfRFJJVkVS Citmcm9tIGZ1bmN0b29scyBpbXBvcnQgd3JhcHMKKworCitjbGFzcyBDYXN0 TW9kdWxlKENvbGxlY3Rpb25Ob2RlTW9kdWxlKToKKyAgICBOT0RFX1RZUEUg PSAnY2FzdCcKKyAgICBDT0xMRUNUSU9OX0xBQkVMID0gJ0Nhc3RzJworCisg ICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAg ICAgIHN1cGVyKENhc3RNb2R1bGUsIHNlbGYpLl9faW5pdF9fKCphcmdzLCAq Kmt3YXJncykKKworICAgIGRlZiBnZXRfbm9kZXMoc2VsZiwgZ2lkLCBzaWQs IGRpZCk6CisgICAgICAgICIiIgorICAgICAgICBHZW5lcmF0ZSB0aGUgY29s bGVjdGlvbiBub2RlCisgICAgICAgIDpwYXJhbSBnaWQ6IGdyb3VwIGlkCisg ICAgICAgIDpwYXJhbSBzaWQ6IHNlcnZlciBpZAorICAgICAgICA6cGFyYW0g ZGlkOiBkYXRhYmFzZSBpZAorICAgICAgICAiIiIKKyAgICAgICAgeWllbGQg c2VsZi5nZW5lcmF0ZV9icm93c2VyX2NvbGxlY3Rpb25fbm9kZShkaWQpCisK KyAgICBAcHJvcGVydHkKKyAgICBkZWYgbm9kZV9pbm9kZShzZWxmKToKKyAg ICAgICAgIiIiCisgICAgICAgIE92ZXJyaWRlIHRoZSBwcm9wZXJ0eSB0byBt YWtlIHRoZSBub2RlIGFzIGxlYWYgbm9kZQorICAgICAgICAiIiIKKyAgICAg ICAgcmV0dXJuIEZhbHNlCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgc2Ny aXB0X2xvYWQoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBMb2FkIHRo ZSBtb2R1bGUgc2NyaXB0IGZvciBjYXN0LCB3aGVuIGFueSBvZiB0aGUgZGF0 YWJhc2Ugbm9kZSBpcworICAgICAgICBpbml0aWFsaXplZC4KKyAgICAgICAg IiIiCisgICAgICAgIHJldHVybiBkYXRhYmFzZXMuRGF0YWJhc2VNb2R1bGUu Tk9ERV9UWVBFCisKKworYmx1ZXByaW50ID0gQ2FzdE1vZHVsZShfX25hbWVf XykKKworCitjbGFzcyBDYXN0VmlldyhOb2RlVmlldyk6CisgICAgbm9kZV90 eXBlID0gYmx1ZXByaW50Lm5vZGVfdHlwZQorCisgICAgcGFyZW50X2lkcyA9 IFsKKyAgICAgICAgeyd0eXBlJzogJ2ludCcsICdpZCc6ICdnaWQnfSwKKyAg ICAgICAgeyd0eXBlJzogJ2ludCcsICdpZCc6ICdzaWQnfSwKKyAgICAgICAg eyd0eXBlJzogJ2ludCcsICdpZCc6ICdkaWQnfQorICAgIF0KKyAgICBpZHMg PSBbCisgICAgICAgIHsndHlwZSc6ICdpbnQnLCAnaWQnOiAnY2lkJ30KKyAg ICBdCisKKyAgICBvcGVyYXRpb25zID0gZGljdCh7CisgICAgICAgICdvYmon OiBbCisgICAgICAgICAgICB7J2dldCc6ICdwcm9wZXJ0aWVzJywgJ2RlbGV0 ZSc6ICdkZWxldGUnLCAncHV0JzogJ3VwZGF0ZSd9LAorICAgICAgICAgICAg eydnZXQnOiAnbGlzdCcsICdwb3N0JzogJ2NyZWF0ZSd9CisgICAgICAgIF0s CisgICAgICAgICdjaGlsZHJlbic6IFt7CisgICAgICAgICAgICAnZ2V0Jzog J2NoaWxkcmVuJworICAgICAgICB9XSwKKyAgICAgICAgJ2RlbGV0ZSc6IFt7 J2RlbGV0ZSc6ICdkZWxldGUnfV0sCisgICAgICAgICdub2Rlcyc6IFt7J2dl dCc6ICdub2RlJ30sIHsnZ2V0JzogJ25vZGVzJ31dLAorICAgICAgICAnc3Fs JzogW3snZ2V0JzogJ3NxbCd9XSwKKyAgICAgICAgJ21zcWwnOiBbeydnZXQn OiAnbXNxbCd9LCB7J2dldCc6ICdtc3FsJ31dLAorICAgICAgICAnc3RhdHMn OiBbeydnZXQnOiAnc3RhdGlzdGljcyd9XSwKKyAgICAgICAgJ2RlcGVuZGVu Y3knOiBbeydnZXQnOiAnZGVwZW5kZW5jaWVzJ31dLAorICAgICAgICAnZGVw ZW5kZW50JzogW3snZ2V0JzogJ2RlcGVuZGVudHMnfV0sCisgICAgICAgICdt b2R1bGUuanMnOiBbe30sIHt9LCB7J2dldCc6ICdtb2R1bGVfanMnfV0sCisg ICAgICAgICdnZXRfdHlwZSc6IFt7J2dldCc6ICdnZXRfc3JjX2FuZF90cmdf dHlwZSd9LCB7J2dldCc6ICdnZXRfc3JjX2FuZF90cmdfdHlwZSd9XSwKKyAg ICAgICAgJ2dldF9mdW5jdGlvbnMnOiBbeydwb3N0JzogJ2dldF9mdW5jdGlv bnMnfSwgeydwb3N0JzogJ2dldF9mdW5jdGlvbnMnfV0KKyAgICB9KQorCisg ICAgZGVmIF9pbml0XyhzZWxmLCAqKmt3YXJncyk6CisgICAgICAgIHNlbGYu Y29ubiA9IE5vbmUKKyAgICAgICAgc2VsZi50ZW1wbGF0ZV9wYXRoID0gTm9u ZQorICAgICAgICBzZWxmLm1hbmFnZXIgPSBOb25lCisgICAgICAgIHN1cGVy KENhc3RWaWV3LCBzZWxmKS5fX2luaXRfXygqKmt3YXJncykKKworICAgIGRl ZiBtb2R1bGVfanMoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUaGlz IHByb3BlcnR5IGRlZmluZXMgKGlmIGphdmFzY3JpcHQpIGV4aXN0cyBmb3Ig dGhpcyBub2RlLgorICAgICAgICBPdmVycmlkZSB0aGlzIHByb3BlcnR5IGZv ciB5b3VyIG93biBsb2dpYy4KKyAgICAgICAgIiIiCisgICAgICAgIHJldHVy biBtYWtlX3Jlc3BvbnNlKAorICAgICAgICAgICAgcmVuZGVyX3RlbXBsYXRl KAorICAgICAgICAgICAgICAgICJjYXN0L2pzL2Nhc3RzLmpzIiwKKyAgICAg ICAgICAgICAgICBfPWdldHRleHQKKyAgICAgICAgICAgICksCisgICAgICAg ICAgICAyMDAsIHsnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtamF2 YXNjcmlwdCd9CisgICAgICAgICkKKworICAgIGRlZiBjaGVja19wcmVjb25k aXRpb24oZik6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9u IHdpbGwgYmVoYXZlIGFzIGEgZGVjb3JhdG9yIHdoaWNoIHdpbGwgY2hlY2tz CisgICAgICAgIGRhdGFiYXNlIGNvbm5lY3Rpb24gYmVmb3JlIHJ1bm5pbmcg dmlldywgaXQgd2lsbCBhbHNvIGF0dGFjaGVzCisgICAgICAgIG1hbmFnZXIs Y29ubiAmIHRlbXBsYXRlX3BhdGggcHJvcGVydGllcyB0byBzZWxmCisgICAg ICAgICIiIgorCisgICAgICAgIEB3cmFwcyhmKQorICAgICAgICBkZWYgd3Jh cCgqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAgICAgIyBIZXJlIGFyZ3Nb MF0gd2lsbCBob2xkIHNlbGYgJiBrd2FyZ3Mgd2lsbCBob2xkIGdpZCxzaWQs ZGlkCisgICAgICAgICAgICBzZWxmID0gYXJnc1swXQorICAgICAgICAgICAg c2VsZi5tYW5hZ2VyID0gZ2V0X2RyaXZlcihQR19ERUZBVUxUX0RSSVZFUiku Y29ubmVjdGlvbl9tYW5hZ2VyKGt3YXJnc1snc2lkJ10pCisgICAgICAgICAg ICBzZWxmLmNvbm4gPSBzZWxmLm1hbmFnZXIuY29ubmVjdGlvbihkaWQ9a3dh cmdzWydkaWQnXSkKKyAgICAgICAgICAgICMgSWYgREIgbm90IGNvbm5lY3Rl ZCB0aGVuIHJldHVybiBlcnJvciB0byBicm93c2VyCisgICAgICAgICAgICBp ZiBub3Qgc2VsZi5jb25uLmNvbm5lY3RlZCgpOgorICAgICAgICAgICAgICAg IHJldHVybiBwcmVjb25kaXRpb25fcmVxdWlyZWQoCisgICAgICAgICAgICAg ICAgICAgIGdldHRleHQoCisgICAgICAgICAgICAgICAgICAgICAgICAiQ29u bmVjdGlvbiB0byB0aGUgc2VydmVyIGhhcyBiZWVuIGxvc3QhIgorICAgICAg ICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgKQorICAgICAgICAg ICAgdmVyID0gc2VsZi5tYW5hZ2VyLnZlcnNpb24KKyAgICAgICAgICAgICMg d2Ugd2lsbCBzZXQgdGVtcGxhdGUgcGF0aCBmb3Igc3FsIHNjcmlwdHMKKyAg ICAgICAgICAgIGlmIHZlciA+PSA5MDEwMDoKKyAgICAgICAgICAgICAgICBz ZWxmLnRlbXBsYXRlX3BhdGggPSAnY2FzdC9zcWwvOS4xX3BsdXMnCisKKyAg ICAgICAgICAgIHJldHVybiBmKCphcmdzLCAqKmt3YXJncykKKworICAgICAg ICByZXR1cm4gd3JhcAorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAg IGRlZiBsaXN0KHNlbGYsIGdpZCwgc2lkLCBkaWQpOgorICAgICAgICBzcWwg PSByZW5kZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAiLyIuam9pbihbc2Vs Zi50ZW1wbGF0ZV9wYXRoLCAncHJvcGVydGllcy5zcWwnXSksCisgICAgICAg ICAgICBkYXRsYXN0c3lzb2lkPXNlbGYubWFuYWdlci5kYl9pbmZvW2RpZF1b J2RhdGxhc3RzeXNvaWQnXQorICAgICAgICApCisgICAgICAgIHN0YXR1cywg cmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChzcWwpCisKKyAgICAgICAg aWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9z ZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgIGZvciByb3cg aW4gcmVzWydyb3dzJ106CisgICAgICAgICAgICByb3dbJ2Nhc3Rjb250ZXh0 J10gPSBUcnVlIGlmIHJvd1snY2FzdGNvbnRleHQnXSA9PSAnSU1QTElDSVQn IGVsc2UgRmFsc2UKKworICAgICAgICByZXR1cm4gYWpheF9yZXNwb25zZSgK KyAgICAgICAgICAgIHJlc3BvbnNlPXJlc1sncm93cyddLAorICAgICAgICAg ICAgc3RhdHVzPTIwMAorICAgICAgICApCisKKyAgICBAY2hlY2tfcHJlY29u ZGl0aW9uCisgICAgZGVmIG5vZGVzKHNlbGYsIGdpZCwgc2lkLCBkaWQpOgor ICAgICAgICByZXMgPSBbXQorICAgICAgICBzcWwgPSByZW5kZXJfdGVtcGxh dGUoCisgICAgICAgICAgICAiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRo LCAncHJvcGVydGllcy5zcWwnXSksCisgICAgICAgICAgICBkYXRsYXN0c3lz b2lkPXNlbGYubWFuYWdlci5kYl9pbmZvW2RpZF1bJ2RhdGxhc3RzeXNvaWQn XQorICAgICAgICApCisgICAgICAgIHN0YXR1cywgcnNldCA9IHNlbGYuY29u bi5leGVjdXRlXzJkYXJyYXkoc3FsKQorICAgICAgICBpZiBub3Qgc3RhdHVz OgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihl cnJvcm1zZz1yc2V0KQorCisgICAgICAgIGZvciByb3cgaW4gcnNldFsncm93 cyddOgorICAgICAgICAgICAgcm93WydjYXN0Y29udGV4dCddID0gVHJ1ZSBp ZiByb3dbJ2Nhc3Rjb250ZXh0J10gPT0gJ0lNUExJQ0lUJyBlbHNlIEZhbHNl CisgICAgICAgICAgICByZXMuYXBwZW5kKAorICAgICAgICAgICAgICAgIHNl bGYuYmx1ZXByaW50LmdlbmVyYXRlX2Jyb3dzZXJfbm9kZSgKKyAgICAgICAg ICAgICAgICAgICAgcm93WydvaWQnXSwKKyAgICAgICAgICAgICAgICAgICAg ZGlkLAorICAgICAgICAgICAgICAgICAgICByb3dbJ25hbWUnXSwKKyAgICAg ICAgICAgICAgICAgICAgaWNvbj0iaWNvbi1jYXN0IgorICAgICAgICAgICAg ICAgICkpCisKKyAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgK KyAgICAgICAgICAgIGRhdGE9cmVzLAorICAgICAgICAgICAgc3RhdHVzPTIw MAorICAgICAgICApCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAg ZGVmIHByb3BlcnRpZXMoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgY2lkKToKKyAg ICAgICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAgIi8i LmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ3Byb3BlcnRpZXMuc3FsJ10p LAorICAgICAgICAgICAgY2lkPWNpZCwKKyAgICAgICAgICAgIGRhdGxhc3Rz eXNvaWQ9c2VsZi5tYW5hZ2VyLmRiX2luZm9bZGlkXVsnZGF0bGFzdHN5c29p ZCddCisgICAgICAgICkKKyAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNv bm4uZXhlY3V0ZV9kaWN0KHNxbCkKKworICAgICAgICBpZiBub3Qgc3RhdHVz OgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihl cnJvcm1zZz1yZXMpCisgICAgICAgIHJlc3VsdCA9IHJlc1sncm93cyddWzBd CisKKyAgICAgICAgcmV0dXJuIGFqYXhfcmVzcG9uc2UoCisgICAgICAgICAg ICByZXNwb25zZT1yZXNbJ3Jvd3MnXVswXSwKKyAgICAgICAgICAgIHN0YXR1 cz0yMDAKKyAgICAgICAgKQorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgor ICAgIGRlZiBjcmVhdGUoc2VsZiwgZ2lkLCBzaWQsIGRpZCk6CisgICAgICAg ICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgY3JlYXRlcyBuZXcg dGhlIGNhc3Qgb2JqZWN0CisgICAgICAgIDpwYXJhbSBkaWQ6IGRhdGFiYXNl IGlkCisgICAgICAgIDpwYXJhbSBzaWQ6IHNlcnZlciBpZAorICAgICAgICA6 cGFyYW0gZ2lkOiBncm91cCBpZAorICAgICAgICAiIiIKKworICAgICAgICBy ZXF1aXJlZF9hcmdzID0gWworICAgICAgICAgICAgJ3NyY3R5cCcsCisgICAg ICAgICAgICAndHJndHlwJworICAgICAgICBdCisKKyAgICAgICAgZGF0YSA9 IHJlcXVlc3QuZm9ybSBpZiByZXF1ZXN0LmZvcm0gZWxzZSBqc29uLmxvYWRz KHJlcXVlc3QuZGF0YS5kZWNvZGUoKSkKKyAgICAgICAgZm9yIGFyZyBpbiBy ZXF1aXJlZF9hcmdzOgorICAgICAgICAgICAgaWYgYXJnIG5vdCBpbiBkYXRh OgorICAgICAgICAgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2Uo CisgICAgICAgICAgICAgICAgICAgIHN0YXR1cz00MTAsCisgICAgICAgICAg ICAgICAgICAgIHN1Y2Nlc3M9MCwKKyAgICAgICAgICAgICAgICAgICAgZXJy b3Jtc2c9Z2V0dGV4dCgKKyAgICAgICAgICAgICAgICAgICAgICAgICJDb3Vs ZG4ndCBmaW5kIHRoZSByZXF1aXJlZCBwYXJhbWV0ZXIgKCVzKS4iICUgYXJn CisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICApCisg ICAgICAgIHRyeToKKyAgICAgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0 ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAnY3JlYXRlLnNxbCdd KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPWRh dGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubj1z ZWxmLmNvbm4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KQorICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0 ZV9zY2FsYXIoc3FsKQorICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAg ICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVy cm9ybXNnPXJlcykKKworICAgICAgICAgICAgIyB3ZSBuZWVkIG9pZCB0byB0 byBhZGQgb2JqZWN0IGluIHRyZWUgYXQgYnJvd3NlciwgYmVsb3cgc3FsIHdp bGwgZ2l2ZXMgdGhlIHNhbWUKKyAgICAgICAgICAgIHNxbCA9IHJlbmRlcl90 ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAncHJvcGVy dGllcy5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc3JjdHlwPWRhdGFbJ3NyY3R5cCddLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHRyZ3R5cD1kYXRhWyd0cmd0eXAnXSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRsYXN0c3lzb2lkPXNl bGYubWFuYWdlci5kYl9pbmZvW2RpZF1bJ2RhdGxhc3RzeXNvaWQnXQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAg IHN0YXR1cywgY2lkID0gc2VsZi5jb25uLmV4ZWN1dGVfc2NhbGFyKHNxbCkK KyAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAg cmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1jaWQpCisK KyAgICAgICAgICAgIHJldHVybiBqc29uaWZ5KAorICAgICAgICAgICAgICAg IG5vZGU9c2VsZi5ibHVlcHJpbnQuZ2VuZXJhdGVfYnJvd3Nlcl9ub2RlKAor ICAgICAgICAgICAgICAgICAgICBjaWQsCisgICAgICAgICAgICAgICAgICAg IGRpZCwKKyAgICAgICAgICAgICAgICAgICAgZGF0YVsnbmFtZSddLAorICAg ICAgICAgICAgICAgICAgICBpY29uPSJpY29uLWNhc3QiCisgICAgICAgICAg ICAgICAgKQorICAgICAgICAgICAgKQorICAgICAgICBleGNlcHQgRXhjZXB0 aW9uIGFzIGU6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVy X2Vycm9yKGVycm9ybXNnPXN0cihlKSkKKworICAgIEBjaGVja19wcmVjb25k aXRpb24KKyAgICBkZWYgdXBkYXRlKHNlbGYsIGdpZCwgc2lkLCBkaWQsIGNp ZCk6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwg dXBkYXRlIGNhc3Qgb2JqZWN0CisgICAgICAgIDpwYXJhbSBjaWQ6IGNhc3Qg aWQKKyAgICAgICAgOnBhcmFtIGRpZDogZGF0YWJhc2UgaWQKKyAgICAgICAg OnBhcmFtIHNpZDogc2VydmVyIGlkCisgICAgICAgIDpwYXJhbSBnaWQ6IGdy b3VwIGlkCisgICAgICAgICIiIgorICAgICAgICBkYXRhID0gcmVxdWVzdC5m b3JtIGlmIHJlcXVlc3QuZm9ybSBlbHNlIGpzb24ubG9hZHMocmVxdWVzdC5k YXRhLmRlY29kZSgpKQorICAgICAgICBzcWwgPSBzZWxmLmdldF9zcWwoZ2lk LCBzaWQsIGRpZCwgZGF0YSwgY2lkKQorICAgICAgICB0cnk6CisgICAgICAg ICAgICBpZiBzcWwgYW5kIHNxbC5zdHJpcCgnXG4nKSBhbmQgc3FsLnN0cmlw KCcgJyk6CisgICAgICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNv bm4uZXhlY3V0ZV9zY2FsYXIoc3FsKQorICAgICAgICAgICAgICAgIGlmIG5v dCBzdGF0dXM6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5h bF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgICAgICAg ICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAgICAgICAg ICAgICAgc3VjY2Vzcz0xLAorICAgICAgICAgICAgICAgICAgICBpbmZvPSJD YXN0IHVwZGF0ZWQiLAorICAgICAgICAgICAgICAgICAgICBkYXRhPXsKKyAg ICAgICAgICAgICAgICAgICAgICAgICdpZCc6IGNpZCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICdzaWQnOiBzaWQsCisgICAgICAgICAgICAgICAgICAg ICAgICAnZ2lkJzogZ2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2Rp ZCc6IGRpZAorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg ICAgKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXR1 cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgICAgICAgICBz dWNjZXNzPTEsCisgICAgICAgICAgICAgICAgICAgIGluZm89Ik5vdGhpbmcg dG8gdXBkYXRlIiwKKyAgICAgICAgICAgICAgICAgICAgZGF0YT17CisgICAg ICAgICAgICAgICAgICAgICAgICAnaWQnOiBjaWQsCisgICAgICAgICAgICAg ICAgICAgICAgICAnc2lkJzogc2lkLAorICAgICAgICAgICAgICAgICAgICAg ICAgJ2dpZCc6IGdpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICdkaWQn OiBkaWQKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg ICkKKworICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAg ICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXN0 cihlKSkKKworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgZGVs ZXRlKHNlbGYsIGdpZCwgc2lkLCBkaWQsIGNpZCk6CisgICAgICAgICIiIgor ICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgZHJvcCB0aGUgY2FzdCBvYmpl Y3QKKyAgICAgICAgOnBhcmFtIGNpZDogY2FzdCBpZAorICAgICAgICA6cGFy YW0gZGlkOiBkYXRhYmFzZSBpZAorICAgICAgICA6cGFyYW0gc2lkOiBzZXJ2 ZXIgaWQKKyAgICAgICAgOnBhcmFtIGdpZDogZ3JvdXAgaWQKKyAgICAgICAg IiIiCisgICAgICAgICMgQmVsb3cgd2lsbCBkZWNpZGUgaWYgaXQncyBzaW1w bGUgZHJvcCBvciBkcm9wIHdpdGggY2FzY2FkZSBjYWxsCisgICAgICAgIGlm IHNlbGYuY21kID09ICdkZWxldGUnOgorICAgICAgICAgICAgIyBUaGlzIGlz IGEgY2FzY2FkZSBvcGVyYXRpb24KKyAgICAgICAgICAgIGNhc2NhZGUgPSBU cnVlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBjYXNjYWRlID0gRmFs c2UKKworICAgICAgICB0cnk6CisgICAgICAgICAgICAjIEdldCBuYW1lIGZv ciBjYXN0IGZyb20gY2lkCisgICAgICAgICAgICBzcWwgPSByZW5kZXJfdGVt cGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ2RlbGV0ZS5z cWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2lk PWNpZCkKKyAgICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4 ZWN1dGVfZGljdChzcWwpCisgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgor ICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3Io ZXJyb3Jtc2c9cmVzKQorCisgICAgICAgICAgICAjIGRyb3AgY2FzdAorICAg ICAgICAgICAgcmVzdWx0ID0gcmVzWydyb3dzJ11bMF0KKyAgICAgICAgICAg IHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0 ZV9wYXRoLCAnZGVsZXRlLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjYXN0c291cmNlPXJlc3VsdFsnY2FzdHNvdXJjZSdd LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc3R0YXJn ZXQ9cmVzdWx0WydjYXN0dGFyZ2V0J10sCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY2FzY2FkZT1jYXNjYWRlCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgc3RhdHVzLCBy ZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9zY2FsYXIoc3FsKQorICAgICAgICAg ICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICByZXR1cm4gaW50 ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKworICAgICAgICAg ICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAgICAgICAg ICBzdWNjZXNzPTEsCisgICAgICAgICAgICAgICAgaW5mbz1nZXR0ZXh0KCJD YXN0IGRyb3BwZWQiKSwKKyAgICAgICAgICAgICAgICBkYXRhPXsKKyAgICAg ICAgICAgICAgICAgICAgJ2lkJzogY2lkLAorICAgICAgICAgICAgICAgICAg ICAnc2lkJzogc2lkLAorICAgICAgICAgICAgICAgICAgICAnZ2lkJzogZ2lk LAorICAgICAgICAgICAgICAgICAgICAnZGlkJzogZGlkCisgICAgICAgICAg ICAgICAgfQorICAgICAgICAgICAgKQorCisgICAgICAgIGV4Y2VwdCBFeGNl cHRpb24gYXMgZToKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2 ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKGUpKQorCisgICAgQGNoZWNrX3ByZWNv bmRpdGlvbgorICAgIGRlZiBtc3FsKHNlbGYsIGdpZCwgc2lkLCBkaWQsIGNp ZD1Ob25lKToKKyAgICAgICAgIiIiCisgICAgICAgICBUaGlzIGZ1bmN0aW9u IHJldHVybnMgbW9kaWZpZWQgU1FMCisgICAgICAgICA6cGFyYW0gY2lkOiBj YXN0IGlkCisgICAgICAgICA6cGFyYW0gZGlkOiBkYXRhYmFzZSBpZAorICAg ICAgICAgOnBhcmFtIHNpZDogc2VydmVyIGlkCisgICAgICAgICA6cGFyYW0g Z2lkOiBncm91cCBpZAorICAgICAgICAiIiIKKyAgICAgICAgZGF0YSA9IHJl cXVlc3QuYXJncworICAgICAgICBzcWwgPSBzZWxmLmdldF9zcWwoZ2lkLCBz aWQsIGRpZCwgZGF0YSwgY2lkKQorICAgICAgICBpZiBpc2luc3RhbmNlKHNx bCwgc3RyKSBhbmQgc3FsIGFuZCBzcWwuc3RyaXAoJ1xuJykgYW5kIHNxbC5z dHJpcCgnICcpOgorICAgICAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNw b25zZSgKKyAgICAgICAgICAgICAgICBkYXRhPXNxbCwKKyAgICAgICAgICAg ICAgICBzdGF0dXM9MjAwCisgICAgICAgICAgICApCisgICAgICAgIGVsc2U6 CisgICAgICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAg ICAgICAgICAgICAgIGRhdGE9Ii0tbW9kaWZpZWQgU1FMIiwKKyAgICAgICAg ICAgICAgICBzdGF0dXM9MjAwCisgICAgICAgICAgICApCisKKyAgICBkZWYg Z2V0X3NxbChzZWxmLCBnaWQsIHNpZCwgZGlkLCBkYXRhLCBjaWQ9Tm9uZSk6 CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgcmV0 dXJuIHNxbCBmb3IgbW9kZWwgZGF0YQorICAgICAgICA6cGFyYW0gZ2lkOiBn cm91cCBpZAorICAgICAgICA6cGFyYW0gc2lkOiBzZXJ2ZXIgaWQKKyAgICAg ICAgOnBhcmFtIGRpZDogZGF0YWJhc2UgaWQKKyAgICAgICAgOnBhcmFtIGNp ZDogY2FzdCBpZAorICAgICAgICA6cGFyYW0gZGF0YTogbW9kZWwgZGF0YQor ICAgICAgICAiIiIKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaWYgY2lk IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHNxbCA9IHJlbmRlcl90 ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAncHJvcGVy dGllcy5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNpZD1jaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGRhdGxhc3RzeXNvaWQ9c2VsZi5tYW5hZ2VyLmRiX2luZm9b ZGlkXVsnZGF0bGFzdHN5c29pZCddKQorICAgICAgICAgICAgICAgIHN0YXR1 cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChzcWwpCisKKyAgICAg ICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgICAg ICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykK KworICAgICAgICAgICAgICAgIG9sZF9kYXRhID0gcmVzWydyb3dzJ11bMF0K KyAgICAgICAgICAgICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoCisgICAg ICAgICAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgs ICd1cGRhdGUuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICBkYXRhPWRh dGEsIG9fZGF0YT1vbGRfZGF0YQorICAgICAgICAgICAgICAgICkKKyAgICAg ICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgaWYgJ3NyY3R5cCcgaW4g ZGF0YSBhbmQgJ3RyZ3R5cCcgaW4gZGF0YToKKyAgICAgICAgICAgICAgICAg ICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBs YXRlX3BhdGgsICdjcmVhdGUuc3FsJ10pLCBkYXRhPWRhdGEsIGNvbm49c2Vs Zi5jb25uKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAg ICAgICAgIHNxbCA9ICItLSBpbmNvbXBsZXRlIGRlZmluaXRpb24iCisgICAg ICAgICAgICByZXR1cm4gc3FsCisKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlv biBhcyBlOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9l cnJvcihlcnJvcm1zZz1zdHIoZSkpCisKKyAgICBAY2hlY2tfcHJlY29uZGl0 aW9uCisgICAgZGVmIGdldF9mdW5jdGlvbnMoc2VsZiwgZ2lkLCBzaWQsIGRp ZCwgY2lkPU5vbmUpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5j dGlvbiB3aWxsIHJldHVybiBmdW5jdGlvbnMgbGlzdCBhc3NvY2lhdGVkIHRv IGEgY2FzdAorICAgICAgICA6cGFyYW0gZ2lkOiBncm91cCBpZAorICAgICAg ICA6cGFyYW0gc2lkOiBzZXJ2ZXIgaWQKKyAgICAgICAgOnBhcmFtIGRpZDog ZGF0YWJhc2UgaWQKKyAgICAgICAgOnBhcmFtIGNpZDogY2FzdCBpZAorICAg ICAgICAiIiIKKyAgICAgICAgcmVzID0gW10KKyAgICAgICAgZGF0YSA9IHJl cXVlc3QuZm9ybSBpZiByZXF1ZXN0LmZvcm0gZWxzZSBqc29uLmxvYWRzKHJl cXVlc3QuZGF0YS5kZWNvZGUoKSkKKyAgICAgICAgc3FsID0gcmVuZGVyX3Rl bXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdmdW5jdGlv bnMuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Jj dHlwPWRhdGFbJ3NyY3R5cCddLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdHJndHlwPWRhdGFbJ3RyZ3R5cCddKQorICAgICAgICBzdGF0dXMs IHJzZXQgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KHNxbCkKKworICAgICAg ICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFs X3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yc2V0KQorICAgICAgICByZXMuYXBw ZW5kKHsnbGFiZWwnOiAnJywKKyAgICAgICAgICAgICAgICAgICAgJ3ZhbHVl JzogJyd9KQorCisgICAgICAgIGZvciByb3cgaW4gcnNldFsncm93cyddOgor ICAgICAgICAgICAgcmVzLmFwcGVuZCh7J2xhYmVsJzogcm93Wydwcm9uYW1l J10sCisgICAgICAgICAgICAgICAgICAgICAgICAndmFsdWUnOiByb3dbJ3By b25hbWUnXX0pCisgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2Uo CisgICAgICAgICAgICBkYXRhPXJlcywKKyAgICAgICAgICAgIHN0YXR1cz0y MDAKKyAgICAgICAgKQorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAg IGRlZiBnZXRfc3JjX2FuZF90cmdfdHlwZShzZWxmLCBnaWQsIHNpZCwgZGlk LCBjaWQ9Tm9uZSk6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0 aW9uIHdpbGwgcmV0dXJuIHR5cGUgbGlzdAorICAgICAgICA6cGFyYW0gZ2lk OiBncm91cCBpZAorICAgICAgICA6cGFyYW0gc2lkOiBzZXJ2ZXIgaWQKKyAg ICAgICAgOnBhcmFtIGRpZDogZGF0YWJhc2UgaWQKKyAgICAgICAgOnBhcmFt IGNpZDogY2FzdCBpZAorICAgICAgICAiIiIKKyAgICAgICAgcmVzID0gW10K KyAgICAgICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAg Ii8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ2dldHNyY2FuZHRyZ3R0 eXBlLnNxbCddKSwKKyAgICAgICAgICAgIGNpZD1jaWQKKyAgICAgICAgKQor ICAgICAgICBzdGF0dXMsIHJzZXQgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0 KHNxbCkKKworICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAg cmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yc2V0KQor CisgICAgICAgIHJlcyA9IFt7J2xhYmVsJzogJycsICd2YWx1ZSc6ICcnfV0K KyAgICAgICAgZm9yIHJvdyBpbiByc2V0Wydyb3dzJ106CisgICAgICAgICAg ICByZXMuYXBwZW5kKHsKKyAgICAgICAgICAgICAgICAnbGFiZWwnOiByb3db J3R5cG5hbWUnXSwKKyAgICAgICAgICAgICAgICAndmFsdWUnOiByb3dbJ3R5 cG5hbWUnXQorICAgICAgICAgICAgfSkKKworICAgICAgICByZXR1cm4gbWFr ZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgZGF0YT1yZXMsCisgICAg ICAgICAgICBzdGF0dXM9MjAwCisgICAgICAgICkKKworICAgIEBjaGVja19w cmVjb25kaXRpb24KKyAgICBkZWYgc3FsKHNlbGYsIGdpZCwgc2lkLCBkaWQs IGNpZCk6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIHdp bGwgZ2VuZXJhdGUgc3FsIGZvciBzcWwgcGFuZWwKKyAgICAgICAgOnBhcmFt IGdpZDogZ3JvdXAgaWQKKyAgICAgICAgOnBhcmFtIHNpZDogc2VydmVyIGlk CisgICAgICAgIDpwYXJhbSBkaWQ6IGRhdGFiYXNlIGlkCisgICAgICAgIDpw YXJhbSBjaWQ6IGNhc3QgaWQKKyAgICAgICAgIiIiCisgICAgICAgIHRyeToK KyAgICAgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAg ICAgICAgICAiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAnc3FsLnNx bCddKSwKKyAgICAgICAgICAgICAgICBjaWQ9Y2lkLAorICAgICAgICAgICAg ICAgIGNvbm49c2VsZi5jb25uCisgICAgICAgICAgICApCisgICAgICAgICAg ICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX3NjYWxhcihzcWwp CisgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAg IHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoCisgICAgICAgICAgICAg ICAgICAgIF8oIkVSUk9SOiBDb3VsZG4ndCBnZW5lcmF0ZSByZXZlcnNlZCBl bmdpbmVlcmVkIFF1ZXJ5IGZvciB0aGUgY2FzdCFcbnswfSIpLmZvcm1hdCgK KyAgICAgICAgICAgICAgICAgICAgICAgIHJlcworICAgICAgICAgICAgICAg ICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgICApCisKKyAgICAgICAg ICAgIGlmIHJlcyBpcyBOb25lOgorICAgICAgICAgICAgICAgIHJldHVybiBn b25lKAorICAgICAgICAgICAgICAgICAgICBfKCJFUlJPUjogQ291bGRuJ3Qg Z2VuZXJhdGUgcmV2ZXJzZWQgZW5naW5lZXJlZCBRdWVyeSBmb3IgdGhlIGNh c3Qgbm9kZSEiKQorICAgICAgICAgICAgICAgICAgICApCisKKyAgICAgICAg ICAgIHJldHVybiBhamF4X3Jlc3BvbnNlKHJlc3BvbnNlPXJlcykKKworICAg ICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICByZXR1 cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXN0cihlKSkKKwor CitDYXN0Vmlldy5yZWdpc3Rlcl9ub2RlX3ZpZXcoYmx1ZXByaW50KQpkaWZm IC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL2Nhc3RzL3N0YXRpYy9pbWcvY2FzdC5wbmcgYi93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvY2FzdHMvc3RhdGljL2ltZy9jYXN0LnBuZwpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwLi4yYmU3ZjM3NDJhNzYwZmFhNzcwOTA1MjY2OWY0NDRiYTg5 NDljMzMwCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCA0MjYKemNtZUFTQE4/ KG9sSHlgdVZCcSFpYTB2cF4wd0IhNjM/d3lsYEdiS31hKTN7V0UwQTg9WExJ WX5gYmhzPmJFalhzCnpkdGMoPCMpX1Z7XkdsY2hLZWV+Iy1VR1E2RUJAYnFz SWhMe3xBJnVfSCpmeWA8Zjs5eFVIX2p3X2M/Zyp8QklKVgp6Q3I8by17V3t+ cWg1djhnbVJgSHx8TlotPmQtd2kte01oXldAJkNgQ3JvRExhZjZ3O0UoUXso c2Z6fmpWMW87SXMKekk2UytOMklPIVNjdGpRaFglOEBWSkRGXzxXWWxAT0lF Rn1FJk9MdXlzTDRRcGBORlpReXdqREdJeWBwJV8jZEJuCnpRMChgRU83Q1VI WFFlKk5gPyk9dF5RN0Q4dzh9OVYqTSZPWG1ZY1NRTVRUeFhhNWVaXnNZYnpW am9IdGxBTTZYPgp6dylWdDc7WFVodT9hQ2c4LXEpVCNkanNwPzF2UW4wKCNI WnsmYXZLPkc7N018S2V6aSoxSnw5QHdNQEE4R0l1NWEKejdrQFN2S0ElbExm aTYpa2FnOFdSTmkwZFZOLWp6VFFWZDIwaDZjS1pNIUUpdUF3fnZQQ2RPN0tD Zld3M1J0NSRaCnNHZ2FrS0gwMCl8V1RzVUBHI0ZUZEhHb3VHOEpJeWRvU0dp RzJCPzktKTc4JnFvbGA7KzA2ekAzaHlWWnAKCmxpdGVyYWwgMApIY21WP2Qw MDAwMQoKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9jYXN0cy9zdGF0aWMvaW1nL2Nv bGwtY2FzdC5wbmcgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvY2FzdHMvc3RhdGljL2ltZy9jb2xsLWNh c3QucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA5ZWI2NWFmMDJjNjZi ZDY0YWIzNDA1YzU5MmVmZTRkOTBkNDFjOTgKR0lUIGJpbmFyeSBwYXRjaAps aXRlcmFsIDQwMgp6Y21lQVNATj8ob2xIeWB1VkJxIWlhMHZwXjB3QiE2Mz93 eWxgR2JLfVJEZSYyRTA4fDV3YFhhZU88bHE0TmRIfVAKenIoZTUhVSFwIypk Zzs+dF9afSF0WjRBcCNvY2kjUXs9U1hvUG9DUUUtKDxVTCkmR3FmfExAeE18 TEZGRj1Qdj5lCnpBTzhSMGVjUCo3RFFEMEF8TVkzeytxYjNIdUttQSV8TnBh UnwxWmhSajBjKnxTUTZ3SCU7NTBzTWpEWEFTPk8+Xwp6NDVVNTQqeklKdDln dmFsPkVhazdhaz0jVFpONnAmMGhTQT95R3AmNVg2USVoZSowZV5Ub1paV05U c3IrYil0KWwKemo5JTRMcTRxWk93ZkZEY3pje09xPDYpcm1rc0VKJm5FaU9G d0B5M0RWeipaTz04K1RBWj1KUUMmQ2g9SWxKJXEwCnpuI2ElZCRPbjV9ZVEh X3tgTzA8MVBrV3NeYGcpTyEhSkFtLXV7O1hnNHp5YWUjNUpOTUM5eCNjRCFD e1hOSEd7MAp6NyNpcHI4dEVEc2g4UClHbkhYRHttfW5jQVN7V0V2JXY2O18o VTY7O2w5XlRzKE9fVCspJk5wJVduYyE7YUI2eiEKUThsVk9TUGdnJmVieHNM UTA5WGZ+ZmRCdmkKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdp dCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9jYXN0cy90ZW1wbGF0ZXMvY2FzdC9qcy9jYXN0cy5qcyBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9jYXN0cy90ZW1wbGF0ZXMvY2FzdC9qcy9jYXN0cy5qcwpuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MWI2MGFhCi0tLSAv ZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL2Nhc3RzL3RlbXBsYXRlcy9jYXN0L2pz L2Nhc3RzLmpzCkBAIC0wLDAgKzEsMjkwIEBACitkZWZpbmUoCisgICAgICAg IFsnanF1ZXJ5JywgJ3VuZGVyc2NvcmUnLCAndW5kZXJzY29yZS5zdHJpbmcn LCAncGdhZG1pbicsICdwZ2FkbWluLmJyb3dzZXInLCAnYWxlcnRpZnknLCAn cGdhZG1pbi5icm93c2VyLmNvbGxlY3Rpb24nXSwKK2Z1bmN0aW9uKCQsIF8s IFMsIHBnQWRtaW4sIHBnQnJvd3NlciwgYWxlcnRpZnkpIHsKKworICAgIC8q IEV4dGVuZCB0aGUgY29sbGVjdGlvbiBjbGFzcyBmb3IgY2FzdCovCisgICAg aWYgKCFwZ0Jyb3dzZXIuTm9kZXNbJ2NvbGwtY2FzdCddKSB7CisgICAgICB2 YXIgY2FzdHMgPSBwZ0FkbWluLkJyb3dzZXIuTm9kZXNbJ2NvbGwtY2FzdCdd ID0KKyAgICAgICAgcGdBZG1pbi5Ccm93c2VyLkNvbGxlY3Rpb24uZXh0ZW5k KHsKKyAgICAgICAgICBub2RlOiAnY2FzdCcsCisgICAgICAgICAgbGFiZWw6 ICd7eyBfKCdDYXN0cycpIH19JywKKyAgICAgICAgICB0eXBlOiAnY29sbC1j YXN0JywKKyAgICAgICAgICBjb2x1bW5zOiBbJ25hbWUnLCAnZGVzY3JpcHRp b24nXQorICAgICAgICB9KTsKKyAgICB9OworCisgICAgLyogRXh0ZW5kIHRo ZSBub2RlIGNsYXNzIGZvciBjYXN0Ki8KKyAgICBpZiAoIXBnQnJvd3Nlci5O b2Rlc1snY2FzdCddKSB7CisgICAgICBwZ0FkbWluLkJyb3dzZXIuTm9kZXNb J2Nhc3QnXSA9IHBnQWRtaW4uQnJvd3Nlci5Ob2RlLmV4dGVuZCh7CisgICAg ICAgIHBhcmVudF90eXBlOiAnZGF0YWJhc2UnLAorICAgICAgICB0eXBlOiAn Y2FzdCcsCisgICAgICAgIGNhbkRyb3A6IHRydWUsCisgICAgICAgIGNhbkRy b3BDYXNjYWRlOiB0cnVlLAorICAgICAgICBsYWJlbDogJ3t7IF8oJ0Nhc3Qn KSB9fScsCisgICAgICAgIGhhc1NRTDogdHJ1ZSwKKyAgICAgICAgSW5pdDog ZnVuY3Rpb24oKSB7CisKKyAgICAgICAgICAvKiBBdm9pZCBtdWxpdHBsZSBy ZWdpc3RyYXRpb24gb2YgbWVudXMgKi8KKyAgICAgICAgICBpZiAodGhpcy5p bml0aWFsaXplZCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAg IHRoaXMuaW5pdGlhbGl6ZWQgPSB0cnVlOworCisgICAgICAgICAgLypBZGQg Y29udGV4dCBtZW51cyBmb3IgY2FzdCovCisgICAgICAgICAgcGdCcm93c2Vy LmFkZF9tZW51cyhbeworICAgICAgICAgICAgbmFtZTogJ2NyZWF0ZV9jYXN0 X29uX2RhdGFiYXNlJywgbm9kZTogJ2RhdGFiYXNlJywgbW9kdWxlOiB0aGlz LAorICAgICAgICAgICAgYXBwbGllczogWydvYmplY3QnLCAnY29udGV4dCdd LCBjYWxsYmFjazogJ3Nob3dfb2JqX3Byb3BlcnRpZXMnLAorICAgICAgICAg ICAgY2F0ZWdvcnk6ICdjcmVhdGUnLCBwcmlvcml0eTogNCwgbGFiZWw6ICd7 eyBfKCdDYXN0Li4uJykgfX0nLAorICAgICAgICAgICAgaWNvbjogJ3djVGFi SWNvbiBpY29uLWNhc3QnLCBkYXRhOiB7YWN0aW9uOiAnY3JlYXRlJ30KKyAg ICAgICAgICB9LHsKKyAgICAgICAgICAgIG5hbWU6ICdjcmVhdGVfY2FzdF9v bl9jb2xsJywgbm9kZTogJ2NvbGwtY2FzdCcsIG1vZHVsZTogdGhpcywKKyAg ICAgICAgICAgIGFwcGxpZXM6IFsnb2JqZWN0JywgJ2NvbnRleHQnXSwgY2Fs bGJhY2s6ICdzaG93X29ial9wcm9wZXJ0aWVzJywKKyAgICAgICAgICAgIGNh dGVnb3J5OiAnY3JlYXRlJywgcHJpb3JpdHk6IDQsIGxhYmVsOiAne3sgXygn Q2FzdC4uLicpIH19JywKKyAgICAgICAgICAgIGljb246ICd3Y1RhYkljb24g aWNvbi1jYXN0JywgZGF0YToge2FjdGlvbjogJ2NyZWF0ZSd9CisgICAgICAg ICAgfSx7CisgICAgICAgICAgICBuYW1lOiAnY3JlYXRlX2Nhc3QnLCBub2Rl OiAnY2FzdCcsIG1vZHVsZTogdGhpcywKKyAgICAgICAgICAgIGFwcGxpZXM6 IFsnb2JqZWN0JywgJ2NvbnRleHQnXSwgY2FsbGJhY2s6ICdzaG93X29ial9w cm9wZXJ0aWVzJywKKyAgICAgICAgICAgIGNhdGVnb3J5OiAnY3JlYXRlJywg cHJpb3JpdHk6IDQsIGxhYmVsOiAne3sgXygnQ2FzdC4uLicpIH19JywKKyAg ICAgICAgICAgIGljb246ICd3Y1RhYkljb24gaWNvbi1jYXN0JywgZGF0YTog e2FjdGlvbjogJ2NyZWF0ZSd9CisgICAgICAgICAgfV0pOworCisgICAgICAg IH0sCisKKyAgICAgICAgLypEZWZpbmluZyBiYWNrZm9ybSBtb2RlbCBmb3Ig Y2FzdCBub2RlKi8KKyAgICAgICAgbW9kZWw6IHBnQWRtaW4uQnJvd3Nlci5O b2RlLk1vZGVsLmV4dGVuZCh7CisgICAgICAgICAgZGVmYXVsdHM6IHsKKyAg ICAgICAgICAgIG5hbWU6IHVuZGVmaW5lZCwgICAgICAgICAgICAvL05hbWUg b2YgdGhlIGNhc3QKKyAgICAgICAgICAgIGVuY29kaW5nOiAnVVRGOCcsCisg ICAgICAgICAgICBzcmN0eXA6IHVuZGVmaW5lZCwgICAgICAgICAgLy9Tb3Vy Y2UgdHlwZQorICAgICAgICAgICAgdHJndHlwOiB1bmRlZmluZWQsICAgICAg ICAgIC8vdGFyZ2V0IHR5cGUKKyAgICAgICAgICAgIHByb25hbWU6IHVuZGVm aW5lZCwgICAgICAgICAvL0Z1bmN0aW9uCisgICAgICAgICAgICBjYXN0Y29u dGV4dDogdW5kZWZpbmVkLCAgICAgLy9Db250ZXh0IChJTVBMSUNJVC9FWFBM SUNJVC9BU1NJR05NRU5UKQorICAgICAgICAgICAgc3lzY2FzdDogdW5kZWZp bmVkLCAgICAgICAgIC8vaXMgdGhpcyBjYXN0IGlzIHN5c3RlbSBvYmplY3Q/ IFllcy9ObworICAgICAgICAgICAgZGVzY3JpcHRpb246IHVuZGVmaW5lZCAg ICAgIC8vQ29tbWVudCBvbiB0aGUgY2FzdAorICAgICAgICAgIH0sCisKKyAg ICAgICAgICAvKkRlZmluaW5nIHNjaGVtYSBmb3IgY2FzdCovCisgICAgICAg ICAgc2NoZW1hOiBbeworICAgICAgICAgICAgaWQ6ICduYW1lJywgbGFiZWw6 ICd7eyBfKCdOYW1lJykgfX0nLCBjZWxsOiAnc3RyaW5nJywgZ3JvdXA6ICd7 eyBfKCdEZWZpbml0aW9uJykgfX0nLAorICAgICAgICAgICAgZWRpdGFibGU6 IGZhbHNlLCB0eXBlOiAndGV4dCcsIGRpc2FibGVkOiB0cnVlLCBjZWxsSGVh ZGVyQ2xhc3NlczogJ3dpZHRoX3BlcmNlbnRfNTAnCisgICAgICAgICAgfSx7 CisgICAgICAgICAgICBpZDogJ29pZCcsIGxhYmVsOid7eyBfKCdPaWQnKSB9 fScsIGNlbGw6ICdzdHJpbmcnLCBncm91cDogJ3t7IF8oJ0RlZmluaXRpb24n KSB9fScsCisgICAgICAgICAgICBlZGl0YWJsZTogZmFsc2UsIHR5cGU6ICd0 ZXh0JywgZGlzYWJsZWQ6IHRydWUKKyAgICAgICAgICB9LHsKKyAgICAgICAg ICAgIGlkOiAnc3JjdHlwJywgbGFiZWw6J3t7IF8oJ1NvdXJjZSB0eXBlJykg fX0nLCB1cmw6ICdnZXRfdHlwZScsCisgICAgICAgICAgICB0eXBlOiAndGV4 dCcsIGdyb3VwOiAnRGVmaW5pdGlvbicsIGRpc2FibGVkOiBmdW5jdGlvbiht KSB7CisgICAgICAgICAgICByZXR1cm4gIW0uaXNOZXcoKQorICAgICAgICAg ICAgfSwgbW9kZTogWydjcmVhdGUnXSwKKworICAgICAgICAgICAgdHJhbnNm b3JtOiBmdW5jdGlvbihyb3dzKSB7CisgICAgICAgICAgICAgIF8uZWFjaChy b3dzLCBmdW5jdGlvbihyKSB7CisgICAgICAgICAgICAgICAgclsnaW1hZ2Un XSA9ICdpY29uLWNhc3QnOworICAgICAgICAgICAgICB9KTsKKyAgICAgICAg ICAgICAgcmV0dXJuIHJvd3M7CisgICAgICAgICAgICB9LAorCisgICAgICAg ICAgICAvKiBDb250cm9sIGlzIGV4dGVuZGVkIHRvIGNyZWF0ZSBjYXN0IG5h bWUgZnJvbSBzb3VyY2UgdHlwZSBhbmQgZGVzdGluYXRpb24gdHlwZQorICAg ICAgICAgICAgICAgb25jZSB0aGVpciB2YWx1ZXMgYXJlIGNoYW5nZWQKKyAg ICAgICAgICAgICovCisgICAgICAgICAgICAgY29udHJvbDogQmFja2Zvcm0u Tm9kZUFqYXhPcHRpb25zQ29udHJvbC5leHRlbmQoeworCisgICAgICAgICAg ICAgICBvbkNoYW5nZTogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAg IEJhY2tmb3JtLk5vZGVBamF4T3B0aW9uc0NvbnRyb2wucHJvdG90eXBlLm9u Q2hhbmdlLmFwcGx5KAorICAgICAgICAgICAgICAgICAgICB0aGlzLCBhcmd1 bWVudHMKKyAgICAgICAgICAgICAgICAgICAgKTsKKworICAgICAgICAgICAg ICAgICAvKiBPbiBzb3VyY2UgdHlwZSBjaGFuZ2UsIGNoZWNrIGlmIGJvdGgg c291cmNlIHR5cGUgYW5kCisgICAgICAgICAgICAgICAgICAgIHRhcmdldCB0 eXBlIGFyZSBzZXQsIGlmIHllcyB0aGVuIGZldGNoIHZhbHVlcyBmcm9tIGJv dGgKKyAgICAgICAgICAgICAgICAgICAgY29udHJvbHMgYW5kIGdlbmVyYXRl IGNhc3QgbmFtZQorICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAg ICAgICB2YXIgc3JjdHlwZSA9IHRoaXMubW9kZWwuZ2V0KCdzcmN0eXAnKTsK KyAgICAgICAgICAgICAgICAgdmFyIHRyZ3R5cGUgPSB0aGlzLm1vZGVsLmdl dCgndHJndHlwJyk7CisgICAgICAgICAgICAgICAgIGlmKHNyY3R5cGUgIT0g dW5kZWZpbmVkICYmIHNyY3R5cGUgIT0gJycgJiYKKyAgICAgICAgICAgICAg ICAgICAgdHJndHlwZSAhPSB1bmRlZmluZWQgJiYgdHJndHlwZSAhPSAnJykK KyAgICAgICAgICAgICAgICAgICB0aGlzLm1vZGVsLnNldCgibmFtZSIsIHNy Y3R5cGUrIi0+Iit0cmd0eXBlKTsKKyAgICAgICAgICAgICAgICAgZWxzZQor ICAgICAgICAgICAgICAgICAgIHRoaXMubW9kZWwudW5zZXQoIm5hbWUiKTsK KyAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0pCisgICAgICAgICAg fSwKKworICAgICAgICAgIC8qIHRleHQgY29udHJvbCBmb3Igdmlld2luZyBz b3VyY2UgdHlwZSBpbiBwcm9wZXJ0aWVzIGFuZAorICAgICAgICAgICAgIGVk aXQgbW9kZSBvbmx5CisgICAgICAgICAgKi8KKyAgICAgICAgICB7CisgICAg ICAgICAgICBpZDogJ3NyY3R5cCcsIGxhYmVsOid7eyBfKCdTb3VyY2UgdHlw ZScpIH19JywgdHlwZTogJ3RleHQnLAorICAgICAgICAgICAgZ3JvdXA6ICdE ZWZpbml0aW9uJywgZGlzYWJsZWQ6IHRydWUsIG1vZGU6Wydwcm9wZXJ0aWVz JywnZWRpdCddCisgICAgICAgICAgfSx7CisgICAgICAgICAgICBpZDogJ3Ry Z3R5cCcsIGxhYmVsOid7eyBfKCdUYXJnZXQgdHlwZScpIH19JywgdXJsOiAn Z2V0X3R5cGUnLAorICAgICAgICAgICAgdHlwZTogJ3RleHQnLCBncm91cDog J0RlZmluaXRpb24nLCBkaXNhYmxlZDogZnVuY3Rpb24obSkgeworICAgICAg ICAgICAgICByZXR1cm4gIW0uaXNOZXcoKQorICAgICAgICAgICAgICB9LCBt b2RlOiBbJ2NyZWF0ZSddLAorICAgICAgICAgICAgdHJhbnNmb3JtOiBmdW5j dGlvbihyb3dzKSB7CisgICAgICAgICAgICAgIF8uZWFjaChyb3dzLCBmdW5j dGlvbihyKSB7CisgICAgICAgICAgICAgICAgclsnaW1hZ2UnXSA9ICdpY29u LWNhc3QnOworICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgcmV0 dXJuIHJvd3M7CisgICAgICAgICAgICB9LAorCisgICAgICAgICAgICAvKiBD b250cm9sIGlzIGV4dGVuZGVkIHRvIGNyZWF0ZSBjYXN0IG5hbWUgZnJvbSBz b3VyY2UgdHlwZSBhbmQgZGVzdGluYXRpb24gdHlwZQorICAgICAgICAgICAg ICAgb25jZSB0aGVpciB2YWx1ZXMgYXJlIGNoYW5nZWQKKyAgICAgICAgICAg ICovCisgICAgICAgICAgICAgY29udHJvbDogQmFja2Zvcm0uTm9kZUFqYXhP cHRpb25zQ29udHJvbC5leHRlbmQoeworCisgICAgICAgICAgICAgb25DaGFu Z2U6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgQmFja2Zvcm0uTm9k ZUFqYXhPcHRpb25zQ29udHJvbC5wcm90b3R5cGUub25DaGFuZ2UuYXBwbHko CisgICAgICAgICAgICAgICAgIHRoaXMsIGFyZ3VtZW50cworICAgICAgICAg ICAgICAgICApOworCisgICAgICAgICAgICAgICAgIC8qb24gdGFyZ2V0IHR5 cGUgY2hhbmdlLCBjaGVjayBpZiBib3RoIHNvdXJjZSB0eXBlIGFuZAorICAg ICAgICAgICAgICAgICAgIHRhcmdldCB0eXBlIGFyZSBzZXQsIGlmIHllcyB0 aGVuIGZldGNoIHZhbHVlcyBmcm9tIGJvdGgKKyAgICAgICAgICAgICAgICAg ICBjb250cm9scyBhbmQgZ2VuZXJhdGUgY2FzdCBuYW1lKi8KKyAgICAgICAg ICAgICAgIHZhciBzcmNUeXBlID0gdGhpcy5tb2RlbC5nZXQoJ3NyY3R5cCcp OworICAgICAgICAgICAgICAgdmFyIHRyZ3R5cGUgPSB0aGlzLm1vZGVsLmdl dCgndHJndHlwJyk7CisgICAgICAgICAgICAgICBpZihzcmNUeXBlICE9IHVu ZGVmaW5lZCAmJiBzcmNUeXBlICE9ICcnICYmCisgICAgICAgICAgICAgICAg ICB0cmd0eXBlICE9IHVuZGVmaW5lZCAmJiB0cmd0eXBlICE9ICcnKQorICAg ICAgICAgICAgICAgICB0aGlzLm1vZGVsLnNldCgibmFtZSIsIHNyY1R5cGUr Ii0+Iit0cmd0eXBlKTsKKyAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAg ICAgICAgICAgdGhpcy5tb2RlbC51bnNldCgibmFtZSIpOworICAgICAgICAg ICAgIH0KKyAgICAgICAgICAgICB9KQorICAgICAgICAgIH0sCisgICAgICAg ICAgLyogdGV4dCBjb250cm9sIGZvciB2aWV3aW5nIHRhcmdldCB0eXBlIGlu IHByb3BlcnRpZXMgYW5kCisgICAgICAgICAgICAgZWRpdCBtb2RlIG9ubHkK KyAgICAgICAgICAqLworICAgICAgICAgIHsKKyAgICAgICAgICAgIGlkOiAn dHJndHlwJywgbGFiZWw6J3t7IF8oJ1RhcmdldCB0eXBlJykgfX0nLCB0eXBl OiAndGV4dCcsCisgICAgICAgICAgICBncm91cDogJ0RlZmluaXRpb24nLCBk aXNhYmxlZDogdHJ1ZSwgbW9kZTpbJ3Byb3BlcnRpZXMnLCdlZGl0J10KKyAg ICAgICAgICB9LAorCisgICAgICAgICAgLyogcHJvbmFtZSBmaWVsZCBpcyBk ZXBlbmRlbnQgb24gc291cmNlIHR5cGUgYW5kIHRhcmdldCB0eXBlLgorICAg ICAgICAgICAgIE9uIHNvdXJjZSBhbmQgdGFyZ2V0IHR5cGUgY2hhbmdlZCBl dmVudCwKKyAgICAgICAgICAgICBhc3NvY2lhdGVkIGZ1bmN0aW9ucyB3aWxs IGJlIGZldGNoIHVzaW5nIGFqYXggY2FsbAorICAgICAgICAgICovCisgICAg ICAgICAgeworICAgICAgICAgICAgaWQ6ICdwcm9uYW1lJywgbGFiZWw6J3t7 IF8oJ0Z1bmN0aW9uJykgfX0nLCBkZXBzOlsnc3JjdHlwJywgJ3RyZ3R5cCdd LAorICAgICAgICAgICAgdHlwZTogJ3RleHQnLCBkaXNhYmxlZDogZnVuY3Rp b24obSkgeyByZXR1cm4gIW0uaXNOZXcoKTsgfSwKKyAgICAgICAgICAgIGdy b3VwOiAnRGVmaW5pdGlvbicsIG1vZGU6IFsnY3JlYXRlJ10sCisgICAgICAg ICAgICBjb250cm9sOiAnbm9kZS1hamF4LW9wdGlvbnMnLAorICAgICAgICAg ICAgb3B0aW9uczogZnVuY3Rpb24oKSB7CisKKyAgICAgICAgICAgICAgdmFy IHNyY1R5cCA9IHRoaXMubW9kZWwuZ2V0KCdzcmN0eXAnKTsKKyAgICAgICAg ICAgICAgdmFyIHRyZ3R5cCA9IHRoaXMubW9kZWwuZ2V0KCd0cmd0eXAnKTsK KyAgICAgICAgICAgICAgdmFyIHJlcyA9IFtdOworCisgICAgICAgICAgICAg IGlmKHNyY1R5cCAhPSB1bmRlZmluZWQgJiYgc3JjVHlwICE9ICcnICYmCisg ICAgICAgICAgICAgICAgIHRyZ3R5cCAhPSB1bmRlZmluZWQgJiYgdHJndHlw ICE9ICcnKQorICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIHZh ciBub2RlID0gdGhpcy5maWVsZC5nZXQoJ3NjaGVtYV9ub2RlJyksCisgICAg ICAgICAgICAgICAgIF91cmwgPSBub2RlLmdlbmVyYXRlX3VybC5hcHBseSgK KyAgICAgICAgICAgICAgICAgbm9kZSwgWworICAgICAgICAgICAgICAgICAg IG51bGwsICdnZXRfZnVuY3Rpb25zJywgdGhpcy5maWVsZC5nZXQoJ25vZGVf ZGF0YScpLCBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICB0aGlzLmZpZWxk LmdldCgnbm9kZV9pbmZvJykKKyAgICAgICAgICAgICAgICAgXSk7CisgICAg ICAgICAgICAgICAgICQuYWpheCh7CisgICAgICAgICAgICAgICAgIHR5cGU6 ICdQT1NUJywKKyAgICAgICAgICAgICAgICAgdGltZW91dDogMzAwMDAsCisg ICAgICAgICAgICAgICAgIHVybDogX3VybCwKKyAgICAgICAgICAgICAgICAg Y2FjaGU6IGZhbHNlLAorICAgICAgICAgICAgICAgICBhc3luYzogZmFsc2Us CisgICAgICAgICAgICAgICAgIGRhdGE6IHsic3JjdHlwIiA6IHNyY1R5cCwg InRyZ3R5cCIgOiB0cmd0eXB9LAorCisgICAgICAgICAgICAgICAgIC8qb24g c3VjY2VzcyByZXR1cm4gZnVuY3Rpb24gbGlzdCBmcm9tIHNlcnZlciovCisg ICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uKHJlc3VsdCkgewor ICAgICAgICAgICAgICAgICAgIHJlcyA9IHJlc3VsdC5kYXRhOworICAgICAg ICAgICAgICAgICAgIHJldHVybiByZXM7CisgICAgICAgICAgICAgICAgIH0s CisKKyAgICAgICAgICAgICAgICAgLypvbiBmYWlsdXJlIHNob3cgZXJyb3Ig YXBwcm9wcmlhdGUgZXJyb3IgbWVzc2FnZSB0byB1c2VyKi8KKyAgICAgICAg ICAgICAgICAgZXJyb3I6IGZ1bmN0aW9uKHhociwgc3RhdHVzLCBlcnJvcikg eworICAgICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAg ICAgICB2YXIgZXJyID0gJC5wYXJzZUpTT04oeGhyLnJlc3BvbnNlVGV4dCk7 CisgICAgICAgICAgICAgICAgICAgICBpZiAoZXJyLnN1Y2Nlc3MgPT0gMCkg eworICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSBTKCd7eyBfKCcgKyBl cnIuZXJyb3Jtc2cgKyAnKX19JykudmFsdWUoKTsKKyAgICAgICAgICAgICAg ICAgICAgICAgYWxlcnRpZnkuZXJyb3IoInt7IF8oJyIgKyBlcnIuZXJyb3Jt c2cgKyAiJykgfX0iKTsKKyAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg ICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7fQorICAgICAgICAgICAgICAg ICB9CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgIH0KKyAg ICAgICAgICAgIHJldHVybiByZXM7CisgICAgICAgICAgfQorICAgICAgICB9 LAorICAgICAgICAvKiB0ZXh0IHR5cGUgY29udHJvbCBmb3Igdmlld2luZyBm dW5jdGlvbiBuYW1lIGluIHByb3BlcnRpZXMgYW5kCisgICAgICAgICAgIGVk aXQgbW9kZSBvbmx5CisgICAgICAgICovCisgICAgICAgIHsKKyAgICAgICAg ICBpZDogJ3Byb25hbWUnLCBsYWJlbDone3sgXygnRnVuY3Rpb24nKSB9fScs IHR5cGU6ICd0ZXh0JywKKyAgICAgICAgICBncm91cDogJ0RlZmluaXRpb24n LCBkaXNhYmxlZDogdHJ1ZSwgbW9kZTpbJ3Byb3BlcnRpZXMnLCdlZGl0J10K KyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdjYXN0Y29udGV4dCcsIGxh YmVsOid7eyBfKCdDb250ZXh0JykgfX0nLAorICAgICAgICAgIG9wdGlvbnM6 eydvblRleHQnOidJTVBMSUNJVCcsJ29mZlRleHQnOidFWFBMSUNJVCd9LAor ICAgICAgICAgIGVkaXRhYmxlOiBmYWxzZSwgdHlwZTogJ3N0cmluZycsIGdy b3VwOiAnRGVmaW5pdGlvbicsCisgICAgICAgICAgbW9kZTpbJ2NyZWF0ZSdd LAorICAgICAgICAgIGNvbnRyb2w6IEJhY2tmb3JtLlN3aXRjaENvbnRyb2wu ZXh0ZW5kKHsKKyAgICAgICAgICAgIGdldFZhbHVlRnJvbURPTTogZnVuY3Rp b24oKSB7CisgICAgICAgICAgICAgIHJldHVybiB0aGlzLiRpbnB1dC5wcm9w KCdjaGVja2VkJykgPyAnSU1QTElDSVQnIDogJ0VYUExJQ0lUJzsKKyAgICAg ICAgICAgIH0KKyAgICAgICAgICB9KQorICAgICAgICB9LAorICAgICAgICAv KiB0ZXh0IGNvbnRyb2wgZm9yIHZpZXdpbmcgY29udGV4dCBpbiBwcm9wZXJ0 aWVzIGFuZAorICAgICAgICAgICBlZGl0IG1vZGUKKyAgICAgICAgKi8KKyAg ICAgICAgeworICAgICAgICAgIGlkOiAnY2FzdGNvbnRleHQnLCBsYWJlbDon e3sgXygnQ29udGV4dCcpIH19JywgZGlzYWJsZWQ6IHRydWUsCisgICAgICAg ICAgb3B0aW9uczpbeworICAgICAgICAgICAgbGFiZWw6ICdJTVBMSUNJVCcs IHZhbHVlOiAnSU1QTElDSVQnCisgICAgICAgICAgfSx7CisgICAgICAgICAg ICBsYWJlbDogJ0VYUExJQ0lUJywgdmFsdWU6ICdFWFBMSUNJVCcKKyAgICAg ICAgICB9LHsKKyAgICAgICAgICAgIGxhYmVsOiAnQVNTSUdOTUVOVCcsIHZh bHVlOiAnQVNTSUdOTUVOVCcKKyAgICAgICAgICB9XSwgZWRpdGFibGU6IGZh bHNlLCB0eXBlOiAnc2VsZWN0MicsIGdyb3VwOiAnRGVmaW5pdGlvbicsCisg ICAgICAgICAgbW9kZTpbJ3Byb3BlcnRpZXMnLCAnZWRpdCddCisgICAgICAg IH0seworICAgICAgICAgIGlkOiAnc3lzY2FzdCcsIGxhYmVsOid7eyBfKCdT eXN0ZW0gQ2FzdD8nKSB9fScsIG1vZGU6IFsncHJvcGVydGllcyddLAorICAg ICAgICAgIGVkaXRhYmxlOiBmYWxzZSwgdHlwZTogJ3RleHQnCisgICAgICAg IH0seworICAgICAgICAgIGlkOiAnZGVzY3JpcHRpb24nLCBsYWJlbDone3sg XygnQ29tbWVudCcpIH19Jyx0eXBlOiAndGV4dCcsIGdyb3VwOiAnRGVmaW5p dGlvbicsCisgICAgICAgICAgdHlwZTogJ211bHRpbGluZScsIGNlbGxIZWFk ZXJDbGFzc2VzOiAnd2lkdGhfcGVyY2VudF81MCcKKyAgICAgICAgfQorICAg ICAgICBdLAorCisgICAgICAgIC8qIFRyaWdnZXJzIGNvbnRyb2wgc3BlY2lm aWMgZXJyb3IgbWVzc2FnZXMgZm9yIHNvdXJjZSB0eXBlIGFuZAorICAgICAg ICAgICB0YXJnZXQgdHlwZSBpZiBhbnkgb25lIG9mIHRoZW0gaXMgbm90IHNl bGVjdGVkIHdoaWxlIGNyZWF0aW5nCisgICAgICAgICAgIG5ldyBjYXN0Cisg ICAgICAgICovCisgICAgICAgIHZhbGlkYXRlOiBmdW5jdGlvbihrZXlzKXsK KworICAgICAgICAgIHZhciBzcmN0eXBlID0gdGhpcy5nZXQoJ3NyY3R5cCcp OworICAgICAgICAgIHZhciB0cmd0eXBlID0gdGhpcy5nZXQoJ3RyZ3R5cCcp OworCisgICAgICAgICAgLyp2YWxpZGF0ZSBzb3VyY2UgdHlwZSBjb250cm9s Ki8KKyAgICAgICAgICBpZiAoXy5pc1VuZGVmaW5lZChzcmN0eXBlKSB8fCBf LmlzTnVsbChzcmN0eXBlKSB8fCBTdHJpbmcoc3JjdHlwZSkucmVwbGFjZSgv XlxzK3xccyskL2csICcnKSA9PSAnJykgeworICAgICAgICAgICAgdmFyIG1z ZyA9ICd7eyBfKCdTb3VyY2UgdHlwZSBtdXN0IGJlIHNlbGVjdGVkIScpIH19 JzsKKyAgICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC5zZXQoJ3NyY3R5cCcs IG1zZyk7CisgICAgICAgICAgICByZXR1cm4gbXNnOworICAgICAgICAgIH0K KyAgICAgICAgICBlbHNlCisgICAgICAgICAgeworICAgICAgICAgICAgdGhp cy5lcnJvck1vZGVsLnVuc2V0KCdzcmN0eXAnKTsKKyAgICAgICAgICB9CisK KyAgICAgICAgICAvKnZhbGlkYXRlIHRhcmdldCB0eXBlIGNvbnRyb2wqLwor ICAgICAgICAgIGlmIChfLmlzVW5kZWZpbmVkKHRyZ3R5cGUpIHx8IF8uaXNO dWxsKHRyZ3R5cGUpIHx8IFN0cmluZyh0cmd0eXBlKS5yZXBsYWNlKC9eXHMr fFxzKyQvZywgJycpID09ICcnKSB7CisgICAgICAgICAgICB2YXIgbXNnID0g J3t7IF8oJ1RhcmdldCB0eXBlIG11c3QgYmUgc2VsZWN0ZWQhJykgfX0nOwor ICAgICAgICAgICAgdGhpcy5lcnJvck1vZGVsLnNldCgndHJndHlwJywgbXNn KTsKKyAgICAgICAgICAgIHJldHVybiBtc2c7CisgICAgICAgICAgfQorICAg ICAgICAgIGVsc2UKKyAgICAgICAgICB7CisgICAgICAgICAgICB0aGlzLmVy cm9yTW9kZWwudW5zZXQoJ3RyZ3R5cCcpOworICAgICAgICAgIH0KKyAgICAg ICAgICB0aGlzLnRyaWdnZXIoJ29uLXN0YXR1cy1jbGVhcicpOworICAgICAg ICAgIHJldHVybiBudWxsOworICAgICAgICB9CisgICAgICB9KQorICB9KTsK KworICB9CisgICAgcmV0dXJuIHBnQnJvd3Nlci5Ob2Rlc1snY29sbC1jYXN0 J107Cit9KTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n aXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvY2FzdHMvdGVtcGxhdGVzL2Nhc3Qvc3FsLzkuMV9wbHVz L2NyZWF0ZS5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvY2FzdHMvdGVtcGxhdGVzL2Nhc3Qvc3Fs LzkuMV9wbHVzL2NyZWF0ZS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uYTMwMzE2NAotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9jYXN0cy90ZW1wbGF0ZXMvY2FzdC9zcWwvOS4xX3BsdXMvY3JlYXRlLnNx bApAQCAtMCwwICsxLDIwIEBACit7IyBDUkVBVEUgQ0FTVCBTdGF0ZW1lbnQg I30KK3slIGlmIGlzX3NxbCAlfQorLS0gQ2FzdDoge3tjb25ufHF0VHlwZUlk ZW50KGRhdGEuc3JjdHlwKX19LT57eyBjb25ufHF0VHlwZUlkZW50KGRhdGEu dHJndHlwKSB9fTsKKworLS0gRFJPUCBDQVNUICh7eyBjb25ufHF0VHlwZUlk ZW50KGRhdGEuc3JjdHlwKSB9fSBBUyB7eyBjb25ufHF0VHlwZUlkZW50KGRh dGEudHJndHlwKSB9fSk7CisKK3slIGVuZGlmICV9Cit7JSBpZiBkYXRhIGFu ZCBkYXRhLnNyY3R5cCBhbmQgZGF0YS50cmd0eXAgJX0KK0NSRUFURSBDQVNU ICh7eyBjb25ufHF0VHlwZUlkZW50KGRhdGEuc3JjdHlwKSB9fSBBUyB7eyBj b25ufHF0VHlwZUlkZW50KGRhdGEudHJndHlwKSB9fSkKK3slIGlmIGRhdGEu cHJvbmFtZSBhbmQgZGF0YS5wcm9uYW1lICE9ICdiaW5hcnkgY29tcGF0aWJs ZSclfQorICAgIFdJVEggRlVOQ1RJT04ge3tkYXRhLnByb25hbWV9fXslIGVs c2UgJX0KKyAgICBXSVRIT1VUIEZVTkNUSU9OeyUgZW5kaWYgJX0KK3slIGlm IGRhdGEuY2FzdGNvbnRleHQgYW5kIGRhdGEuY2FzdGNvbnRleHQgIT0gJ0VY UExJQ0lUJyAlfQorCisgICAgQVMge3tkYXRhLmNhc3Rjb250ZXh0fX17JSBl bmRpZiAlfTsKK3sjIERlc2NyaXB0aW9uIGZvciBDQVNUICN9Cit7JSBpZiBk YXRhLmRlc2NyaXB0aW9uICV9CitDT01NRU5UIE9OIENBU1QgKHt7IGNvbm58 cXRUeXBlSWRlbnQoZGF0YS5zcmN0eXApIH19IEFTIHt7IGNvbm58cXRUeXBl SWRlbnQoZGF0YS50cmd0eXApIH19KQorICAgICAgSVMge3sgZGF0YS5kZXNj cmlwdGlvbnxxdExpdGVyYWwgfX07Cit7JSBlbmRpZiAlfXslIGVuZGlmICV9 ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL2Nhc3RzL3RlbXBsYXRlcy9jYXN0L3NxbC85LjFfcGx1cy9kZWxldGUu c3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL2Nhc3RzL3RlbXBsYXRlcy9jYXN0L3NxbC85LjFfcGx1 cy9kZWxldGUuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLjFiOGQ4YjYKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvY2FzdHMv dGVtcGxhdGVzL2Nhc3Qvc3FsLzkuMV9wbHVzL2RlbGV0ZS5zcWwKQEAgLTAs MCArMSwxNCBAQAoreyMgRkVUQ0ggQ0FTVCBTT1VSQ0UgVFlQRSBBTkQgVEFS R0VUIFRZUEUgU3RhdGVtZW50ICN9Cit7JSBpZiBjaWQgJX0KKyAgU0VMRUNU CisgICAgZm9ybWF0X3R5cGUoY2EuY2FzdHNvdXJjZSwgbnVsbCkgYXMgY2Fz dHNvdXJjZSwKKyAgICBmb3JtYXRfdHlwZShjYS5jYXN0dGFyZ2V0LCBudWxs KSBhcyBjYXN0dGFyZ2V0CisgIEZST00KKyAgICBwZ19jYXN0IGNhCisgIFdI RVJFCisgICAgY2Eub2lkID0ge3tjaWR9fTo6T0lEOworeyUgZW5kaWYgJX0K K3sjIERST1AgQ0FTVCBTdGF0ZW1lbnQgI30KK3slIGlmIGNhc3Rzb3VyY2Ug YW5kIGNhc3R0YXJnZXQgJX0KK0RST1AgQ0FTVCAoe3tjYXN0c291cmNlfX0g QVMge3tjYXN0dGFyZ2V0fX0pIHslIGlmIGNhc2NhZGUgJX1DQVNDQURFeyVl bmRpZiV9OworeyUgZW5kaWYgJX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm aWxlCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvY2FzdHMvdGVtcGxhdGVzL2Nhc3Qv c3FsLzkuMV9wbHVzL2Z1bmN0aW9ucy5zcWwgYi93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvY2FzdHMvdGVt cGxhdGVzL2Nhc3Qvc3FsLzkuMV9wbHVzL2Z1bmN0aW9ucy5zcWwKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmM2YWNhOQotLS0gL2Rl di9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9jYXN0cy90ZW1wbGF0ZXMvY2FzdC9zcWwv OS4xX3BsdXMvZnVuY3Rpb25zLnNxbApAQCAtMCwwICsxLDE4IEBACit7IyBG RVRDSCBGVU5DVElPTlMgZGVwZW5kaW5nIHVwb24gU09VUkNFIFRZUEUgYW5k IFRBUkdFVCBUWVBFIElOIENBU1QgICN9CitTRUxFQ1QKKyAgcHJvbmFtZSB8 fCAnKCcgfHwgcGdfY2F0YWxvZy5wZ19nZXRfZnVuY3Rpb25faWRlbnRpdHlf YXJndW1lbnRzKHAub2lkKSB8fCAnKScgYXMgcHJvbmFtZSwKKyAgbnNwbmFt ZSwKKyAgcHJvYXJndHlwZXMKK0ZST00KKyAgcGdfcHJvYyBwIEpPSU4gcGdf bmFtZXNwYWNlIG4gT04gbi5vaWQ9cC5wcm9uYW1lc3BhY2UKK1dIRVJFCisg IHByb2FyZ3R5cGVzWzBdID0gKFNFTEVDVCB0Lm9pZCBGUk9NIHBnX3R5cGUg dCBXSEVSRSBmb3JtYXRfdHlwZSh0Lm9pZCwgTlVMTCkgPSB7e3NyY3R5cHxx dExpdGVyYWx9fSkKKyAgQU5EIHByb3JldHR5cGUgPSAoU0VMRUNUIHQub2lk IEZST00gcGdfdHlwZSB0IFdIRVJFIGZvcm1hdF90eXBlKHQub2lkLCBOVUxM KSA9IHt7dHJndHlwfHF0TGl0ZXJhbH19KQorICBBTkQKKyAgICBDQVNFCisg ICAgV0hFTiBhcnJheV9sZW5ndGgocHJvYXJndHlwZXMsMSkgID0gMiBUSEVO CisgICAgICBwcm9hcmd0eXBlc1sxXSA9IDIzCisgICAgV0hFTiBhcnJheV9s ZW5ndGgocHJvYXJndHlwZXMsMSkgID49IDMgVEhFTgorICAgICAgcHJvYXJn dHlwZXNbMV0gPSAyMyBBTkQgcHJvYXJndHlwZXNbMl0gPSAxNgorICAgIEVM U0UgVFJVRQorICAgIEVORApkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL2Nhc3RzL3Rl bXBsYXRlcy9jYXN0L3NxbC85LjFfcGx1cy9nZXRzcmNhbmR0cmd0dHlwZS5z cWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvY2FzdHMvdGVtcGxhdGVzL2Nhc3Qvc3FsLzkuMV9wbHVz L2dldHNyY2FuZHRyZ3R0eXBlLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwLi4xZTA1Y2NiCi0tLSAvZGV2L251bGwKKysrIGIvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL2Nhc3RzL3RlbXBsYXRlcy9jYXN0L3NxbC85LjFfcGx1cy9nZXRzcmNh bmR0cmd0dHlwZS5zcWwKQEAgLTAsMCArMSw0MyBAQAorU0VMRUNUCisgICAg KgorRlJPTSAoCisJICAgIFNFTEVDVCBmb3JtYXRfdHlwZSh0Lm9pZCxOVUxM KSBBUyB0eXBuYW1lLAorCQlDQVNFCisJCSAgV0hFTiB0eXBlbGVtID4gMCBU SEVOIHR5cGVsZW0KKwkgICAgICBFTFNFIHQub2lkCisJCUVORCBhcyBlbGVt b2lkLAorCQkgIHR5cGxlbiwKKwkJICB0eXB0eXBlLAorCQkgIHQub2lkLAor CSAgICAgIG5zcG5hbWUsCisJCSAgKFNFTEVDVCBDT1VOVCgxKSBGUk9NIHBn X3R5cGUgdDIgV0hFUkUgdDIudHlwbmFtZSA9IHQudHlwbmFtZSkgPiAxIEFT IGlzZHVwCisJICAgIEZST00KKwkgICAgICBwZ190eXBlIHQKKwkgICAgICBK T0lOIHBnX25hbWVzcGFjZSBuc3AgT04gdHlwbmFtZXNwYWNlPW5zcC5vaWQK KwkJV0hFUkUKKwkJICAoTk9UICh0eXBuYW1lID0gJ3Vua25vd24nCisJCSAg IEFORCBuc3BuYW1lID0gJ3BnX2NhdGFsb2cnKSkKKwkJICAgQU5EIHR5cGlz ZGVmaW5lZAorCQkgICBBTkQgdHlwdHlwZSBJTiAoJ2InLCAnYycsICdlJywg J3InKQorCQkgICBBTkQgTk9UIEVYSVNUUyAoCisJCSAgICAgICAgICAgICAg ICAgICAgIFNFTEVDVAorCQkgICAgICAgICAgICAgICAgICAgICAgIDEKKwkJ ICAgICAgICAgICAgICAgICAgICAgRlJPTQorCQkgICAgICAgICAgICAgICAg ICAgICAgIHBnX2NsYXNzCisJCSAgICAgICAgICAgICAgICAgICAgIFdIRVJF CisJCSAgICAgICAgICAgICAgICAgICAgICAgcmVsbmFtZXNwYWNlID0gdHlw bmFtZXNwYWNlCisJCSAgICAgICAgICAgICAgICAgICAgICAgQU5EIHJlbG5h bWUgPSB0eXBuYW1lCisJCSAgICAgICAgICAgICAgICAgICAgICAgQU5EIHJl bGtpbmQgIT0gJ2MnKQorCQkgICAgICAgICAgICAgICAgICAgICAgIEFORCAo dHlwbmFtZSBOT1QgTElLRSAnXyUnCisJCSAgICAgICAgICAgICAgICAgICAg ICAgICAgICBPUiBOT1QgRVhJU1RTICgKKwkJICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgU0VMRUNUCisJCSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMQorCQkg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBG Uk9NCisJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcGdfY2xhc3MKKwkJICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgV0hFUkUKKwkJICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWxuYW1lc3BhY2Ug PSB0eXBuYW1lc3BhY2UKKwkJICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBBTkQgcmVsbmFtZSA9IFNVQlNUUklORyh0 eXBuYW1lIEZST00gMik6Om5hbWUKKwkJICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBBTkQgcmVsa2luZCAhPSAnYycp KQorCQkgICBBTkQgbnNwLm5zcG5hbWUgIT0gJ2luZm9ybWF0aW9uX3NjaGVt YScgKSBBUyBkdW1teQorT1JERVIgQlkKKyAgbnNwbmFtZSA8PiAncGdfY2F0 YWxvZycsIG5zcG5hbWUgPD4gJ3B1YmxpYycsIG5zcG5hbWUsIDEKZGlmZiAt LWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9jYXN0cy90ZW1wbGF0ZXMvY2FzdC9zcWwvOS4xX3Bs dXMvcHJvcGVydGllcy5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvY2FzdHMvdGVtcGxhdGVzL2Nh c3Qvc3FsLzkuMV9wbHVzL3Byb3BlcnRpZXMuc3FsCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNiNGMzMzAKLS0tIC9kZXYvbnVsbAor KysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvY2FzdHMvdGVtcGxhdGVzL2Nhc3Qvc3FsLzkuMV9wbHVz L3Byb3BlcnRpZXMuc3FsCkBAIC0wLDAgKzEsNjEgQEAKK3sjIEdldCBPSUQg Zm9yIENBU1QgI30KK3slIGlmIHNyY3R5cCBhbmQgdHJndHlwICV9CisgIFNF TEVDVAorICAgIGNhLm9pZAorICBGUk9NIHBnX2Nhc3QgY2EKKyAgV0hFUkUg Y2EuY2FzdHNvdXJjZSA9IChTRUxFQ1QgdC5vaWQgRlJPTSBwZ190eXBlIHQg V0hFUkUgZm9ybWF0X3R5cGUodC5vaWQsIE5VTEwpID0ge3tzcmN0eXB8cXRM aXRlcmFsfX0pCisgIEFORCBjYS5jYXN0dGFyZ2V0ID0gKFNFTEVDVCB0Lm9p ZCBGUk9NIHBnX3R5cGUgdCBXSEVSRSBmb3JtYXRfdHlwZSh0Lm9pZCwgTlVM TCkgPSB7e3RyZ3R5cHxxdExpdGVyYWx9fSkKKyAgeyUgaWYgZGF0bGFzdHN5 c29pZCAlfQorICAgQU5EIGNhLm9pZCA+IHt7ZGF0bGFzdHN5c29pZH19OjpP SUQKKyAgeyUgZW5kaWYgJX0KKworeyMgRkVUQ0ggcHJvcGVydGllcyBmb3Ig Q0FTVCAjfQoreyUgZWxzZSAlfQorICBTRUxFQ1QKKyAgICBjYS5vaWQsCisg IENBU0UKKyAgICBXSEVOIHt7ZGF0bGFzdHN5c29pZH19OjpPSUQgPiBjYS5v aWQgdGhlbiAnWWVzJyBFTFNFICdObycKKyAgRU5EIEFTIHN5c2Nhc3QsCisg IENBU0UKKyAgICBXSEVOIGNhLmNhc3Rjb250ZXh0ID0gJ2EnIFRIRU4gJ0FT U0lHTk1FTlQnCisgICAgV0hFTiBjYS5jYXN0Y29udGV4dCA9ICdpJyBUSEVO ICdJTVBMSUNJVCcKKyAgICBXSEVOIGNhLmNhc3Rjb250ZXh0ID0gJ2UnIFRI RU4gJ0VYUExJQ0lUJworICBFTkQgQVMgY2FzdGNvbnRleHQsCisgIENBU0UK KyAgICBXSEVOIHByb25hbWUgSVMgTlVMTCBUSEVOICdiaW5hcnkgY29tcGF0 aWJsZScKKyAgICBFTFNFIHByb25hbWUgfHwgJygnIHx8IHBnX2NhdGFsb2cu cGdfZ2V0X2Z1bmN0aW9uX2lkZW50aXR5X2FyZ3VtZW50cyhwci5vaWQpIHx8 ICcpJworICBFTkQgQVMgcHJvbmFtZSwKKyAgICBjYS5jYXN0ZnVuYywKKyAg ICBmb3JtYXRfdHlwZShzdC5vaWQsTlVMTCkgQVMgc3JjdHlwLAorICAgIGZv cm1hdF90eXBlKHR0Lm9pZCx0dC50eXB0eXBtb2QpIEFTIHRyZ3R5cCwKKyAg ICBucy5uc3BuYW1lIEFTIHNyY25zcG5hbWUsCisgICAgbnQubnNwbmFtZSBB UyB0cmduc3BuYW1lLAorICAgIG5wLm5zcG5hbWUgQVMgcHJvbnNwbmFtZSwK KyAgICBkZXNjcmlwdGlvbiwKKyAgICBjb25jYXQoZm9ybWF0X3R5cGUoc3Qu b2lkLE5VTEwpLCctPicsZm9ybWF0X3R5cGUodHQub2lkLHR0LnR5cHR5cG1v ZCkpIGFzIG5hbWUKKyAgRlJPTSBwZ19jYXN0IGNhCisgIEpPSU4gcGdfdHlw ZSBzdCBPTiBzdC5vaWQ9Y2FzdHNvdXJjZQorICBKT0lOIHBnX25hbWVzcGFj ZSBucyBPTiBucy5vaWQ9c3QudHlwbmFtZXNwYWNlCisgIEpPSU4gcGdfdHlw ZSB0dCBPTiB0dC5vaWQ9Y2FzdHRhcmdldAorICBKT0lOIHBnX25hbWVzcGFj ZSBudCBPTiBudC5vaWQ9dHQudHlwbmFtZXNwYWNlCisgIExFRlQgSk9JTiBw Z19wcm9jIHByIE9OIHByLm9pZD1jYXN0ZnVuYworICBMRUZUIEpPSU4gcGdf bmFtZXNwYWNlIG5wIE9OIG5wLm9pZD1wci5wcm9uYW1lc3BhY2UKKyAgTEVG VCBPVVRFUiBKT0lOIHBnX2Rlc2NyaXB0aW9uIGRlcyBPTiAoZGVzLm9iam9p ZD1jYS5vaWQgQU5EIGRlcy5vYmpzdWJpZD0wIEFORCBkZXMuY2xhc3NvaWQ9 J3BnX2Nhc3QnOjpyZWdjbGFzcykKKworICB7JSBpZiBjaWQgJX0KKyAgICBX SEVSRSBjYS5vaWQ9e3tjaWR9fTo6aW50CisgIHslIGVuZGlmICV9CisKKy0t VE9ETzogYWRkIGNoZWNrIGZvciBzaG93U3lzdGVtT2JqZWN0KCkuIGN1cnJl bnRseSBhc3N1bWVkIGFzIGZhbHNlCisgIHsjCisgIHslIGlmIGRhdGxhc3Rz eXNvaWQgJX0KKyAgICB7JSBpZiBjaWQgJX0KKyAgICAgIEFORAorICAgIHsl IGVsc2UgJX0KKyAgICAgIFdIRVJFCisgICAgeyUgZW5kaWYgJX0KKyAgICBj YS5vaWQgPiB7e2RhdGxhc3RzeXNvaWR9fTo6T0lECisgIHslIGVuZGlmICV9 CisgICN9CisgIE9SREVSIEJZIHN0LnR5cG5hbWUsIHR0LnR5cG5hbWUKK3sl IGVuZGlmICV9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t Z2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL2Nhc3RzL3RlbXBsYXRlcy9jYXN0L3NxbC85LjFfcGx1 cy9zcWwuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL2Nhc3RzL3RlbXBsYXRlcy9jYXN0L3NxbC85 LjFfcGx1cy9zcWwuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAuLmNkYzUyYWQKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvY2Fz dHMvdGVtcGxhdGVzL2Nhc3Qvc3FsLzkuMV9wbHVzL3NxbC5zcWwKQEAgLTAs MCArMSw0NCBAQAorU0VMRUNUCisgICAgICAgIGFycmF5X3RvX3N0cmluZyhh cnJheV9hZ2coc3FsKSwgRSdcblxuJykgYXMgc3FsCitGUk9NCisoU0VMRUNU CisgICBFJy0tIENhc3Q6ICcgfHwKKyAgIGZvcm1hdF90eXBlKHN0Lm9pZCwg bnVsbCl8fCBFJyAtPiAnIHx8CisgICBmb3JtYXRfdHlwZSh0dC5vaWQsIHR0 LnR5cHR5cG1vZCkgfHwKKyAgIEUnXG5cbi0tIERST1AgQ0FTVCAoJyB8fCBm b3JtYXRfdHlwZShzdC5vaWQsIG51bGwpIHx8CisgICBFJyBBUyAnIHx8IGZv cm1hdF90eXBlKHR0Lm9pZCx0dC50eXB0eXBtb2QpIHx8CisgICBFJyk7XG5c biAgQ1JFQVRFIENBU1QgKCcgfHwgZm9ybWF0X3R5cGUoc3Qub2lkLCBudWxs KSB8fAorICAgRScgQVMgJyB8fCBmb3JtYXRfdHlwZSh0dC5vaWQsdHQudHlw dHlwbW9kKSB8fCBFJylcbicgfHwKKyAgIENBU0UgV0hFTiBjYS5jYXN0ZnVu YyAhPSAwIFRIRU4KKyAgIEUnXHRXSVRIIEZVTkNUSU9OICcgfHwKKyAgIHBy LnByb25hbWUgfHwgJygnIHx8IENPQUxFU0NFKHBnX2NhdGFsb2cucGdfZ2V0 X2Z1bmN0aW9uX2lkZW50aXR5X2FyZ3VtZW50cyhwci5vaWQpLCAnJykgfHwg RScpJworICAgV0hFTiBjYS5jYXN0ZnVuYyA9IDAgQU5EIGNhLmNhc3RtZXRo b2QgPSAnaScgVEhFTgorICAgRSdcdFdJVEggSU5PVVQnCisgICBFTFNFIEUn XHRXSVRIT1VUIEZVTkNUSU9OJyBFTkQgfHwKKyAgIENBU0UgV0hFTiBjYS5j YXN0Y29udGV4dCA9ICdhJyBUSEVOIEUnXG5cdEFTIEFTU0lHTk1FTlQ7Jwor ICAgV0hFTiBjYS5jYXN0Y29udGV4dCA9ICdpJyBUSEVOIEUnXG5cdEFTIElN UExJQ0lUOycKKyAgIEVMU0UgRSc7JyBFTkQgfHwKKyAgIENBU0UgV0hFTiBh LmRlc2NyaXB0aW9uIElTIE5PVCBOVUxMIFRIRU4KKyAgICAgICBFJ1xuXG5D T01NRU5UIE9OIENBU1QgKCcgfHwgKGZvcm1hdF90eXBlKHN0Lm9pZCxOVUxM KSkgfHwKKyAgICAgICBFJyBBUyAnIHx8IChmb3JtYXRfdHlwZSh0dC5vaWQs dHQudHlwdHlwbW9kKSkgfHwKKyAgICAgICBFJykgSVMgJyB8fCBwZ19jYXRh bG9nLnF1b3RlX2xpdGVyYWwoZGVzY3JpcHRpb24pIHx8IEUnOycKKyAgIEVM U0UgJycgIEVORCBhcyBzcWwKKyBGUk9NCisgICAgcGdfY2FzdCBjYQorICAg IEpPSU4gcGdfdHlwZSBzdCBPTiBzdC5vaWQ9Y2EuY2FzdHNvdXJjZQorICAg IEpPSU4gcGdfbmFtZXNwYWNlIG5zIE9OIG5zLm9pZD1zdC50eXBuYW1lc3Bh Y2UKKyAgICBKT0lOIHBnX3R5cGUgdHQgT04gdHQub2lkPWNhLmNhc3R0YXJn ZXQKKyAgICBKT0lOIHBnX25hbWVzcGFjZSBudCBPTiBudC5vaWQ9dHQudHlw bmFtZXNwYWNlCisgICAgTEVGVCBKT0lOIHBnX3Byb2MgcHIgT04gcHIub2lk PWNhLmNhc3RmdW5jCisgICAgTEVGVCBKT0lOICgKKyAgICAgICAgU0VMRUNU CisgICAgICAgICAgICAgICAgZGVzLmRlc2NyaXB0aW9uIGFzIGRlc2NyaXB0 aW9uLAorICAgICAgICAgICAgICAgIGRlcy5vYmpvaWQgYXMgZGVzY29pZAor ICAgICAgICBGUk9NCisgICAgICAgICAgICAgICAgcGdfZGVzY3JpcHRpb24g ZGVzCisgICAgICAgIFdIRVJFCisgICAgICAgICAgICAgICAgZGVzLm9iam9p ZD17e2NpZH19OjpPSUQgQU5EIGRlcy5vYmpzdWJpZD0wIEFORCBkZXMuY2xh c3NvaWQ9J3BnX2Nhc3QnOjpyZWdjbGFzcworICAgICAgICApIGEgT04gKGEu ZGVzY29pZCA9IGNhLm9pZCkKKyBXSEVSRQorICAgIGNhLm9pZD17e2NpZH19 OjpPSUQKKyAgICApIGM7CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvY2FzdHMvdGVt cGxhdGVzL2Nhc3Qvc3FsLzkuMV9wbHVzL3VwZGF0ZS5zcWwgYi93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv Y2FzdHMvdGVtcGxhdGVzL2Nhc3Qvc3FsLzkuMV9wbHVzL3VwZGF0ZS5zcWwK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGI5MGEyMwot LS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9jYXN0cy90ZW1wbGF0ZXMvY2Fz dC9zcWwvOS4xX3BsdXMvdXBkYXRlLnNxbApAQCAtMCwwICsxLDYgQEAKK3sj IFVQREFURSBEZXNjcmlwdGlvbiBmb3IgQ0FTVCAjfQorCit7JSAgaWYgZGF0 YSBhbmQgJ2Rlc2NyaXB0aW9uJyBpbiBkYXRhIGFuZCBkYXRhLmRlc2NyaXB0 aW9uICE9IG9fZGF0YS5kZXNjcmlwdGlvbiAlfQorICBDT01NRU5UIE9OIENB U1QgKHt7IGNvbm58cXRUeXBlSWRlbnQob19kYXRhLnNyY3R5cCkgfX0gQVMg e3sgY29ubnxxdFR5cGVJZGVudChvX2RhdGEudHJndHlwKSB9fSkKKyAgICBJ UyB7eyBkYXRhLmRlc2NyaXB0aW9ufHF0TGl0ZXJhbCB9fTsKK3slIGVuZGlm ICV9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo= --001a114dac44d3ecab052bceff07 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 --001a114dac44d3ecab052bceff07--