Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1akT3l-0004Ox-UD for pgadmin-hackers@arkaria.postgresql.org; Mon, 28 Mar 2016 09:02:06 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84_2) (envelope-from ) id 1akT3l-0002eu-G0 for pgadmin-hackers@arkaria.postgresql.org; Mon, 28 Mar 2016 09:02:05 +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_2) (envelope-from ) id 1akT3T-0002PQ-7O for pgadmin-hackers@postgresql.org; Mon, 28 Mar 2016 09:01:47 +0000 Received: from mail-vk0-x22d.google.com ([2607:f8b0:400c:c05::22d]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.84_2) (envelope-from ) id 1akT3G-00015v-Qp for pgadmin-hackers@postgresql.org; Mon, 28 Mar 2016 09:01:46 +0000 Received: by mail-vk0-x22d.google.com with SMTP id k1so148132086vkb.0 for ; Mon, 28 Mar 2016 02:01:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb-com.20150623.gappssmtp.com; s=20150623; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc; bh=vkVk4J5gBiLvW/4ZAQvw759kHsKitnOI+S5j0g0OMnk=; b=WVI/WN8mMgYXl7JOoix8LFe3wD/emZhzNWLGXpH8u+krxrpLaBvxoVGWoA9L5jweMH c+dFEz0ix2HtIpY73Fra68Ba6zcOW2r9v7+afFgvlLup8HwRKb0ae59BfkYUlVrnHRY5 yY4IS3obXWtEswnkwmBBG18umXG/06yxIJI53n8dvUDqXwvzx8WXVmtxt+5J7d1RXX+f NuxeZRQkFPrTXxCxzJqSJ8hnEx0a+OJ6O4hE8d8e3Way3MxontrU80t1fmRPL1g8IW6t TVwVmi6WKDBqWtpS0PniU/lqFVthT0+NXr5KRW8QLxMbQoJ0fwfHrc8f42cJPgKPwAC3 pF4g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc; bh=vkVk4J5gBiLvW/4ZAQvw759kHsKitnOI+S5j0g0OMnk=; b=hxtUMKsN2ZKMuwEQ8Dx9JaLnp/b+T3HVz+b0R066K6oEYG5urtfVWRNaoX8TYTOu2o X9gePbQN7GvU9BTMHRIsSaYIUyjtTIHWinhjm4ft8+Y7zzoOVKUljXitNlzsVkGKIHUK PuaI9Mbv9KyRQkNtdxHap0Kc9NO6wswrJ7rW9/dK6DSywU/HApB0U/Z0+x7aVBbTIWqX OrT3qBhV5sOVSp5n0ptzepRR8Lbi5bYImZ45kKq7ikU6tbTf4A49yQhLV3MbVAn5pvJo WKSmp+62gCBeOWz2NbCEX4b3JAQgQRFkB1oVd7If4/EbzGDX0iebNczLtFE3NrKiF9JH iVDQ== X-Gm-Message-State: AD7BkJL460VSV8ObAGCxHzX7gbA5wnbnjQg77IaOZpNIPs0GKn7uGx6CJEHIR1X/TFTPrzoIa3pF/QeMouBcNgtu MIME-Version: 1.0 X-Received: by 10.31.54.194 with SMTP id d185mr11701060vka.130.1459155692754; Mon, 28 Mar 2016 02:01:32 -0700 (PDT) Received: by 10.31.134.198 with HTTP; Mon, 28 Mar 2016 02:01:32 -0700 (PDT) In-Reply-To: References: Date: Mon, 28 Mar 2016 14:31:32 +0530 Message-ID: Subject: Re: PATCH: PGADMIN 4 - FTS templates node From: Sanket Mehta To: Dave Page Cc: pgadmin-hackers Content-Type: multipart/mixed; boundary=001a11438b28bd4da6052f18289d 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 --001a11438b28bd4da6052f18289d Content-Type: multipart/alternative; boundary=001a11438b28bd4d9f052f18289b --001a11438b28bd4d9f052f18289b Content-Type: text/plain; charset=UTF-8 Hi Dave, I have found out the root cause of this issue. This issue is occurring at your side as you are using python 2.7 so in that case sql query returned from sql template is of type 'unicode'. And in __init__.py file we have checked if the sql query is of string type then only we would proceed further. I was not getting this issue as I was using python 3.0 I have resolved this issue and some other typo errors in comments and patch is attached with this mail. Please do review it and let me know in case of any issues. Regards, Sanket Mehta Sr Software engineer Enterprisedb On Tue, Mar 22, 2016 at 8:11 PM, Dave Page wrote: > Hi, > > This seems to be fine, except: > > - The icons were missing from the patch (I added them manually) > > - The issue you couldn't reproduce that I reported previously still > exists. I created an FTS template per the attached screenshots, and > the SQL tab shows only "Modified SQL". The template is correctly > created though. When I edit the template, I can also successfully > rename it and update the comment, though the SQL tab still says > "Modified SQL". > > > > On Wed, Mar 16, 2016 at 7:10 AM, Sanket Mehta > wrote: > > Hi, > > > > Sorry its misunderstanding from my side. > > That node refresh on tree issue has been resolved. > > > > Patch is attached with this mail. > > > > Please do review it. > > > > Regards, > > Sanket Mehta > > Sr Software engineer > > Enterprisedb > > > > On Mon, Mar 14, 2016 at 7:27 PM, Dave Page wrote: > >> > >> On Mon, Mar 14, 2016 at 1:52 PM, Sanket Mehta > >> wrote: > >> > Hi Dave, > >> > > >> > I have incorporated your changes. > >> > I have also tried to reproduce the Issues that you have mentioned. > >> > find the response inline. > >> > > >> > Also find revised patch having your suggested changes attached with > this > >> > mail. > >> > Please do review it and let me know in case anything is missing. > >> > > >> > > >> > Regards, > >> > Sanket Mehta > >> > Sr Software engineer > >> > Enterprisedb > >> > > >> > On Fri, Mar 11, 2016 at 6:41 PM, Dave Page wrote: > >> >> > >> >> Hi > >> >> > >> >> On Thu, Mar 10, 2016 at 6:28 AM, Sanket Mehta > >> >> wrote: > >> >> > Hi, > >> >> > > >> >> > PFA the patch for fts template after replacing collectionNodeModule > >> >> > with > >> >> > SchemaChildModule in __init__.py > >> >> > > >> >> > Apart from that, there was an error while updating the name of fts > >> >> > template > >> >> > which I have resolved in the same. > >> >> > > >> >> > Please do review it and let me know in case of any changes. > >> >> > >> >> I've updated the patch for consistency with others. Please find > >> >> attached. Aside from those changes, there are two issues: > >> >> > >> >> - When creating or editing a template the SQL pane just says > >> >> "--modified SQL" even when all required options are specified. The > >> >> template is created correctly though. > >> > > >> > I have tried to reproduce this issue on my system but could not > >> > reproduce > >> > it. PFA screen shorts explaining sql I got while creating and editing > a > >> > template. > >> > > >> >> > >> >> - If a template is renamed, the treeview node is not updated. > >> > > >> > This is generic issue and needed to be resolved at higher level. > >> > >> No, I tested other nodes (database and sequence for example) and they > >> were properly updated. It's possible *some* are broken, but it's > >> certainly not a general issue. > >> > >> > >> -- > >> Dave Page > >> Blog: http://pgsnake.blogspot.com > >> Twitter: @pgsnake > >> > >> EnterpriseDB UK: http://www.enterprisedb.com > >> The Enterprise PostgreSQL Company > > > > > > > > -- > Dave Page > Blog: http://pgsnake.blogspot.com > Twitter: @pgsnake > > EnterpriseDB UK: http://www.enterprisedb.com > The Enterprise PostgreSQL Company > --001a11438b28bd4d9f052f18289b Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Hi Dave,

I have found out the root caus= e of this issue.

This issue is occurring at your s= ide as you are using python 2.7 so in that case sql query returned from sql= template is of type 'unicode'.
And in __init__.py file w= e have checked if the sql query is of string type then only we would procee= d further.

I was not getting this issue as I was u= sing python 3.0

I have resolved this issue and som= e other typo errors in comments and patch is attached with this mail.
=

Please do review it and let me know in case of any issu= es.




=

Regards,
Sanket Mehta
Sr Software engi= neer
Enterprisedb

On Tue, Mar 22, 2016 at 8:11 PM, Dave Page <= span dir=3D"ltr"><dpage@pgadmin.org> wrote:
= Hi,

This seems to be fine, except:

- The icons were missing from the patch (I added them manually)

- The issue you couldn't reproduce that I reported previously still
exists. I created an FTS template per the attached screenshots, and
the SQL tab shows only "Modified SQL". The template is correctly<= br> created though. When I edit the template, I can also successfully
rename it and update the comment, though the SQL tab still says
"Modified SQL".



On Wed, Mar 16, 2016 at 7:10 AM, Sanket Mehta
<sanket.mehta@enterprisedb.com> wrote:
> Hi,
>
> Sorry its misunderstanding from my side.
> That node refresh on tree issue has been resolved.
>
> Patch is attached with this mail.
>
> Please do review it.
>
> Regards,
> Sanket Mehta
> Sr Software engineer
> Enterprisedb
>
> On Mon, Mar 14, 2016 at 7:27 PM, Dave Page <dpage@pgadmin.org> wrote:
>>
>> On Mon, Mar 14, 2016 at 1:52 PM, Sanket Mehta
>> <sanket.mehta@= enterprisedb.com> wrote:
>> > Hi Dave,
>> >
>> > I have incorporated your changes.
>> > I have also tried to reproduce the Issues that you have menti= oned.
>> > find the response inline.
>> >
>> > Also find revised patch having your suggested changes attache= d with this
>> > mail.
>> > Please do review it and let me know in case anything is missi= ng.
>> >
>> >
>> > Regards,
>> > Sanket Mehta
>> > Sr Software engineer
>> > Enterprisedb
>> >
>> > On Fri, Mar 11, 2016 at 6:41 PM, Dave Page <dpage@pgadmin.org> wrote:
>> >>
>> >> Hi
>> >>
>> >> On Thu, Mar 10, 2016 at 6:28 AM, Sanket Mehta
>> >> <sank= et.mehta@enterprisedb.com> wrote:
>> >> > Hi,
>> >> >
>> >> > PFA the patch for fts template after replacing colle= ctionNodeModule
>> >> > with
>> >> > SchemaChildModule in __init__.py
>> >> >
>> >> > Apart from that, there was an error while updating t= he name of fts
>> >> > template
>> >> > which I have resolved in the same.
>> >> >
>> >> > Please do review it and let me know in case of any c= hanges.
>> >>
>> >> I've updated the patch for consistency with others. P= lease find
>> >> attached. Aside from those changes, there are two issues:=
>> >>
>> >> - When creating or editing a template the SQL pane just s= ays
>> >> "--modified SQL" even when all required options= are specified. The
>> >> template is created correctly though.
>> >
>> > I have tried to reproduce this issue on my system but could n= ot
>> > reproduce
>> > it. PFA screen shorts explaining sql I got while creating and= editing a
>> > template.
>> >
>> >>
>> >> - If a template is renamed, the treeview node is not upda= ted.
>> >
>> > This is generic issue and needed to be resolved at higher lev= el.
>>
>> No, I tested other nodes (database and sequence for example) and t= hey
>> were properly updated. It's possible *some* are broken, but it= 's
>> certainly not a general issue.
>>
>>
>> --
>> Dave Page
>> Blog: http://pgsnake.blogspot.com
>> Twitter: @pgsnake
>>
>> EnterpriseDB UK: http://www.enterprisedb.com
>> The Enterprise PostgreSQL Company
>
>



--
Dave Page
Blog: http://pgsnake.blogspot.com
Twitter: @pgsnake

EnterpriseDB UK: http://www.enterprisedb.com
The Enterprise PostgreSQL Company

--001a11438b28bd4d9f052f18289b-- --001a11438b28bd4da6052f18289d Content-Type: text/x-patch; charset=US-ASCII; name="fts_templatev7.patch" Content-Disposition: attachment; filename="fts_templatev7.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_imbrmfmj3 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z0c190ZW1wbGF0ZXMvX19p bml0X18ucHkgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdHNfdGVtcGxhdGVzL19faW5p dF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRk ZDczNGIKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdHNf dGVtcGxhdGVzL19faW5pdF9fLnB5CkBAIC0wLDAgKzEsNzE5IEBACisjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIworIyBwZ0FkbWluIDQgLSBQ b3N0Z3JlU1FMIFRvb2xzCisjCisjIENvcHlyaWdodCAoQykgMjAxNiwgVGhl IHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorIyBUaGlzIHNvZnR3YXJlIGlz IHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKyMKKyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyIiIkRlZmluZXMgdmll d3MgZm9yIG1hbmFnZW1lbnQgb2YgRnRzIFRlbXBsYXRlIG5vZGUiIiIKKwor aW1wb3J0IGpzb24KK2Zyb20gZmxhc2sgaW1wb3J0IHJlbmRlcl90ZW1wbGF0 ZSwgbWFrZV9yZXNwb25zZSwgY3VycmVudF9hcHAsIHJlcXVlc3QsIGpzb25p ZnkKK2Zyb20gZmxhc2suZXh0LmJhYmVsIGltcG9ydCBnZXR0ZXh0Citmcm9t IHBnYWRtaW4udXRpbHMuYWpheCBpbXBvcnQgbWFrZV9qc29uX3Jlc3BvbnNl LCBcCisgICAgbWFrZV9yZXNwb25zZSBhcyBhamF4X3Jlc3BvbnNlLCBpbnRl cm5hbF9zZXJ2ZXJfZXJyb3IKK2Zyb20gcGdhZG1pbi5icm93c2VyLnV0aWxz IGltcG9ydCBQR0NoaWxkTm9kZVZpZXcKK2Zyb20gcGdhZG1pbi5icm93c2Vy LnNlcnZlcl9ncm91cHMuc2VydmVycy5kYXRhYmFzZXMuc2NoZW1hcy51dGls cyBpbXBvcnQgU2NoZW1hQ2hpbGRNb2R1bGUKK2ltcG9ydCBwZ2FkbWluLmJy b3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLmRhdGFiYXNlcy5zY2hlbWFz IGFzIHNjaGVtYXMKK2Zyb20gcGdhZG1pbi51dGlscy5hamF4IGltcG9ydCBw cmVjb25kaXRpb25fcmVxdWlyZWQKK2Zyb20gcGdhZG1pbi51dGlscy5kcml2 ZXIgaW1wb3J0IGdldF9kcml2ZXIKK2Zyb20gY29uZmlnIGltcG9ydCBQR19E RUZBVUxUX0RSSVZFUgorZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHdyYXBzCisK KworY2xhc3MgRnRzVGVtcGxhdGVNb2R1bGUoU2NoZW1hQ2hpbGRNb2R1bGUp OgorICAgICIiIgorICAgICBjbGFzcyBGdHNUZW1wbGF0ZU1vZHVsZShTY2hl bWFDaGlsZE1vZHVsZSkKKworICAgICAgICBBIG1vZHVsZSBjbGFzcyBmb3Ig RlRTIFRlbXBsYXRlIG5vZGUgZGVyaXZlZCBmcm9tIFNjaGVtYUNoaWxkTW9k dWxlLgorCisgICAgTWV0aG9kczoKKyAgICAtLS0tLS0tCisgICAgKiBfX2lu aXRfXygqYXJncywgKiprd2FyZ3MpCisgICAgICAtIE1ldGhvZCBpcyB1c2Vk IHRvIGluaXRpYWxpemUgdGhlIEZ0c1RlbXBsYXRlTW9kdWxlIGFuZCBpdCdz IGJhc2UgbW9kdWxlLgorCisgICAgKiBnZXRfbm9kZXMoZ2lkLCBzaWQsIGRp ZCwgc2NpZCkKKyAgICAgIC0gTWV0aG9kIGlzIHVzZWQgdG8gZ2VuZXJhdGUg dGhlIGJyb3dzZXIgY29sbGVjdGlvbiBub2RlLgorCisgICAgKiBub2RlX2lu b2RlKCkKKyAgICAgIC0gTWV0aG9kIGlzIG92ZXJyaWRkZW4gZnJvbSBpdHMg YmFzZSBjbGFzcyB0byBtYWtlIHRoZSBub2RlIGFzIGxlYWYgbm9kZS4KKwor ICAgICogc2NyaXB0X2xvYWQoKQorICAgICAgLSBMb2FkIHRoZSBtb2R1bGUg c2NyaXB0IGZvciBGVFMgVGVtcGxhdGUsIHdoZW4gYW55IG9mIHRoZSBzY2hl bWEgbm9kZSBpcworICAgICAgICBpbml0aWFsaXplZC4KKyAgICAiIiIKKyAg ICBOT0RFX1RZUEUgPSAnZnRzX3RlbXBsYXRlJworICAgIENPTExFQ1RJT05f TEFCRUwgPSBnZXR0ZXh0KCdGVFMgVGVtcGxhdGVzJykKKworICAgIGRlZiBf X2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICBzZWxm Lm1pbl92ZXIgPSBOb25lCisgICAgICAgIHNlbGYubWF4X3ZlciA9IE5vbmUK KyAgICAgICAgc3VwZXIoRnRzVGVtcGxhdGVNb2R1bGUsIHNlbGYpLl9faW5p dF9fKCphcmdzLCAqKmt3YXJncykKKworICAgIGRlZiBnZXRfbm9kZXMoc2Vs ZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCk6CisgICAgICAgICIiIgorICAgICAg ICBHZW5lcmF0ZSB0aGUgY29sbGVjdGlvbiBub2RlCisgICAgICAgIDpwYXJh bSBnaWQ6IGdyb3VwIGlkCisgICAgICAgIDpwYXJhbSBzaWQ6IHNlcnZlciBp ZAorICAgICAgICA6cGFyYW0gZGlkOiBkYXRhYmFzZSBpZAorICAgICAgICA6 cGFyYW0gc2NpZDogc2NoZW1hIGlkCisgICAgICAgICIiIgorICAgICAgICB5 aWVsZCBzZWxmLmdlbmVyYXRlX2Jyb3dzZXJfY29sbGVjdGlvbl9ub2RlKHNj aWQpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgbm9kZV9pbm9kZShzZWxm KToKKyAgICAgICAgIiIiCisgICAgICAgIE92ZXJyaWRlIHRoZSBwcm9wZXJ0 eSB0byBtYWtlIHRoZSBub2RlIGFzIGxlYWYgbm9kZQorICAgICAgICAiIiIK KyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBAcHJvcGVydHkKKyAgICBk ZWYgc2NyaXB0X2xvYWQoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBM b2FkIHRoZSBtb2R1bGUgc2NyaXB0IGZvciBmdHMgdGVtcGxhdGUsIHdoZW4g YW55IG9mIHRoZSBzY2hlbWEgbm9kZSBpcworICAgICAgICBpbml0aWFsaXpl ZC4KKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBzY2hlbWFzLlNjaGVt YU1vZHVsZS5OT0RFX1RZUEUKKworCitibHVlcHJpbnQgPSBGdHNUZW1wbGF0 ZU1vZHVsZShfX25hbWVfXykKKworCitjbGFzcyBGdHNUZW1wbGF0ZVZpZXco UEdDaGlsZE5vZGVWaWV3KToKKyAgICAiIiIKKyAgICBjbGFzcyBGdHNUZW1w bGF0ZVZpZXcoUEdDaGlsZE5vZGVWaWV3KQorCisgICAgICAgIEEgdmlldyBj bGFzcyBmb3IgRlRTIFRlbXBhbHRlIG5vZGUgZGVyaXZlZCBmcm9tIFBHQ2hp bGROb2RlVmlldy4gVGhpcyBjbGFzcyBpcworICAgICAgICByZXNwb25zaWJs ZSBmb3IgYWxsIHRoZSBzdHVmZiByZWxhdGVkIHRvIHZpZXcgbGlrZSBjcmVh dGUvdXBkYXRlL2RlbGV0ZQorICAgICAgICByZXNwb25zaWJsZSBmb3IgYWxs IHRoZSBzdHVmZiByZWxhdGVkIHRvIHZpZXcgbGlrZSBjcmVhdGUvdXBkYXRl L2RlbGV0ZQorICAgICAgICBGVFMgdGVtcGxhdGUsIHNob3dpbmcgcHJvcGVy dGllcyBvZiBub2RlLCBzaG93aW5nIHNxbCBpbiBzcWwgcGFuZS4KKworICAg IE1ldGhvZHM6CisgICAgLS0tLS0tLQorICAgICogX19pbml0X18oKiprd2Fy Z3MpCisgICAgICAtIE1ldGhvZCBpcyB1c2VkIHRvIGluaXRpYWxpemUgdGhl IEZ0c1RlbXBsYXRlVmlldyBhbmQgaXQncyBiYXNlIHZpZXcuCisKKyAgICAq IG1vZHVsZV9qcygpCisgICAgICAtIFRoaXMgcHJvcGVydHkgZGVmaW5lcyAo aWYgamF2YXNjcmlwdCkgZXhpc3RzIGZvciB0aGlzIG5vZGUuCisgICAgICAg IE92ZXJyaWRlIHRoaXMgcHJvcGVydHkgZm9yIHlvdXIgb3duIGxvZ2ljCisK KyAgICAqIGNoZWNrX3ByZWNvbmRpdGlvbigpCisgICAgICAtIFRoaXMgZnVu Y3Rpb24gd2lsbCBiZWhhdmUgYXMgYSBkZWNvcmF0b3Igd2hpY2ggd2lsbCBj aGVja3MKKyAgICAgICAgZGF0YWJhc2UgY29ubmVjdGlvbiBiZWZvcmUgcnVu bmluZyB2aWV3LCBpdCB3aWxsIGFsc28gYXR0YWNoZXMKKyAgICAgICAgbWFu YWdlcixjb25uICYgdGVtcGxhdGVfcGF0aCBwcm9wZXJ0aWVzIHRvIHNlbGYK KworICAgICogbGlzdCgpCisgICAgICAtIFRoaXMgZnVuY3Rpb24gaXMgdXNl ZCB0byBsaXN0IGFsbCB0aGUgIG5vZGVzIHdpdGhpbiB0aGF0IGNvbGxlY3Rp b24uCisKKyAgICAqIG5vZGVzKCkKKyAgICAgIC0gVGhpcyBmdW5jdGlvbiB3 aWxsIHVzZWQgdG8gY3JlYXRlIGFsbCB0aGUgY2hpbGQgbm9kZSB3aXRoaW4g dGhhdCBjb2xsZWN0aW9uLgorICAgICAgICBIZXJlIGl0IHdpbGwgY3JlYXRl IGFsbCB0aGUgRlRTIFRlbXBsYXRlIG5vZGVzLgorCisgICAgKiBwcm9wZXJ0 aWVzKGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRpZCkKKyAgICAgIC0gVGhpcyBm dW5jdGlvbiB3aWxsIHNob3cgdGhlIHByb3BlcnRpZXMgb2YgdGhlIHNlbGVj dGVkIEZUUyBUZW1wbGF0ZSBub2RlCisKKyAgICAqIGNyZWF0ZShnaWQsIHNp ZCwgZGlkLCBzY2lkKQorICAgICAgLSBUaGlzIGZ1bmN0aW9uIHdpbGwgY3Jl YXRlIHRoZSBuZXcgRlRTIFRlbXBsYXRlIG9iamVjdAorCisgICAgKiB1cGRh dGUoZ2lkLCBzaWQsIGRpZCwgc2NpZCwgdGlkKQorICAgICAgLSBUaGlzIGZ1 bmN0aW9uIHdpbGwgdXBkYXRlIHRoZSBkYXRhIGZvciB0aGUgc2VsZWN0ZWQg RlRTIFRlbXBsYXRlIG5vZGUKKworICAgICogZGVsZXRlKHNlbGYsIGdpZCwg c2lkLCBkaWQsIHNjaWQsIHRpZCk6CisgICAgICAtIFRoaXMgZnVuY3Rpb24g d2lsbCBkcm9wIHRoZSBGVFMgVGVtcGxhdGUgb2JqZWN0CisKKyAgICAqIG1z cWwoZ2lkLCBzaWQsIGRpZCwgc2NpZCwgdGlkKQorICAgICAgLSBUaGlzIGZ1 bmN0aW9uIGlzIHVzZWQgdG8gcmV0dXJuIG1vZGlmaWVkIFNRTCBmb3IgdGhl IHNlbGVjdGVkIEZUUyBUZW1wbGF0ZSBub2RlCisKKyAgICAqIGdldF9zcWwo ZGF0YSwgdGlkKQorICAgICAgLSBUaGlzIGZ1bmN0aW9uIHdpbGwgZ2VuZXJh dGUgc3FsIGZyb20gbW9kZWwgZGF0YQorCisgICAgKiBzcWwoZ2lkLCBzaWQs IGRpZCwgc2NpZCwgIHRpZCk6CisgICAgICAtIFRoaXMgZnVuY3Rpb24gd2ls bCBnZW5lcmF0ZSBzcWwgdG8gc2hvdyBpdCBpbiBzcWwgcGFuZSBmb3IgdGhl IHNlbGVjdGVkIEZUUyBUZW1wbGF0ZSBub2RlLgorCisgICAgKiBnZXRfdHlw ZSgpOgorICAgICAgLSBUaGlzIGZ1bmN0aW9uIHdpbGwgZmV0Y2ggYWxsIHRo ZSB0eXBlcyBmb3Igc291cmNlIGFuZCB0YXJnZXQgdHlwZXMgc2VsZWN0IGNv bnRyb2wuCisKKyAgICAqIGRlcGVuZGVudHMoZ2lkLCBzaWQsIGRpZCwgc2Np ZCwgdGlkKToKKyAgICAgIC0gVGhpcyBmdW5jdGlvbiBnZXQgdGhlIGRlcGVu ZGVudHMgYW5kIHJldHVybiBhamF4IHJlc3BvbnNlIGZvciB0aGUgRnRzIFRl bXBhbHRlIG5vZGUuCisKKyAgICAqIGRlcGVuZGVuY2llcyhzZWxmLCBnaWQs IHNpZCwgZGlkLCBzY2lkLCB0aWQpOgorICAgICAgLSBUaGlzIGZ1bmN0aW9u IGdldCB0aGUgZGVwZW5kZW5jaWVzIGFuZCByZXR1cm4gYWpheCByZXNwb25z ZSBmb3IgdGhlIEZUUyBUZW1wYWx0ZSBub2RlLgorCisgICAgIiIiCisKKyAg ICBub2RlX3R5cGUgPSBibHVlcHJpbnQubm9kZV90eXBlCisKKyAgICBwYXJl bnRfaWRzID0gWworICAgICAgICB7J3R5cGUnOiAnaW50JywgJ2lkJzogJ2dp ZCd9LAorICAgICAgICB7J3R5cGUnOiAnaW50JywgJ2lkJzogJ3NpZCd9LAor ICAgICAgICB7J3R5cGUnOiAnaW50JywgJ2lkJzogJ2RpZCd9LAorICAgICAg ICB7J3R5cGUnOiAnaW50JywgJ2lkJzogJ3NjaWQnfQorICAgIF0KKyAgICBp ZHMgPSBbCisgICAgICAgIHsndHlwZSc6ICdpbnQnLCAnaWQnOiAndGlkJ30K KyAgICBdCisKKyAgICBvcGVyYXRpb25zID0gZGljdCh7CisgICAgICAgICdv YmonOiBbCisgICAgICAgICAgICB7J2dldCc6ICdwcm9wZXJ0aWVzJywgJ2Rl bGV0ZSc6ICdkZWxldGUnLCAncHV0JzogJ3VwZGF0ZSd9LAorICAgICAgICAg ICAgeydnZXQnOiAnbGlzdCcsICdwb3N0JzogJ2NyZWF0ZSd9CisgICAgICAg IF0sCisgICAgICAgICdjaGlsZHJlbic6IFt7CisgICAgICAgICAgICAnZ2V0 JzogJ2NoaWxkcmVuJworICAgICAgICB9XSwKKyAgICAgICAgJ2RlbGV0ZSc6 IFt7J2RlbGV0ZSc6ICdkZWxldGUnfV0sCisgICAgICAgICdub2Rlcyc6IFt7 J2dldCc6ICdub2RlJ30sIHsnZ2V0JzogJ25vZGVzJ31dLAorICAgICAgICAn c3FsJzogW3snZ2V0JzogJ3NxbCd9XSwKKyAgICAgICAgJ21zcWwnOiBbeydn ZXQnOiAnbXNxbCd9LCB7J2dldCc6ICdtc3FsJ31dLAorICAgICAgICAnc3Rh dHMnOiBbeydnZXQnOiAnc3RhdGlzdGljcyd9XSwKKyAgICAgICAgJ2RlcGVu ZGVuY3knOiBbeydnZXQnOiAnZGVwZW5kZW5jaWVzJ31dLAorICAgICAgICAn ZGVwZW5kZW50JzogW3snZ2V0JzogJ2RlcGVuZGVudHMnfV0sCisgICAgICAg ICdtb2R1bGUuanMnOiBbe30sIHt9LCB7J2dldCc6ICdtb2R1bGVfanMnfV0s CisgICAgICAgICdnZXRfbGV4aXplJzogW3snZ2V0JzogJ2dldF9sZXhpemUn fSwgeydnZXQnOiAnZ2V0X2xleGl6ZSd9XSwKKyAgICAgICAgJ2dldF9pbml0 JzogW3snZ2V0JzogJ2dldF9pbml0J30sIHsnZ2V0JzogJ2dldF9pbml0J31d LAorICAgIH0pCisKKyAgICBkZWYgX2luaXRfKHNlbGYsICoqa3dhcmdzKToK KyAgICAgICAgc2VsZi5jb25uID0gTm9uZQorICAgICAgICBzZWxmLnRlbXBs YXRlX3BhdGggPSBOb25lCisgICAgICAgIHNlbGYubWFuYWdlciA9IE5vbmUK KyAgICAgICAgc3VwZXIoRnRzVGVtcGxhdGVWaWV3LCBzZWxmKS5fX2luaXRf XygqKmt3YXJncykKKworICAgIGRlZiBtb2R1bGVfanMoc2VsZik6CisgICAg ICAgICIiIgorICAgICAgICBUaGlzIHByb3BlcnR5IGRlZmluZXMgd2hldGhl ciBqYXZhc2NyaXB0IGV4aXN0cyBmb3IgdGhpcyBub2RlLgorICAgICAgICAi IiIKKyAgICAgICAgcmV0dXJuIG1ha2VfcmVzcG9uc2UoCisgICAgICAgICAg ICByZW5kZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAgICAgImZ0c190ZW1w bGF0ZS9qcy9mdHNfdGVtcGxhdGVzLmpzIiwKKyAgICAgICAgICAgICAgICBf PWdldHRleHQKKyAgICAgICAgICAgICksCisgICAgICAgICAgICAyMDAsIHsn Q29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtamF2YXNjcmlwdCd9Cisg ICAgICAgICkKKworICAgIGRlZiBjaGVja19wcmVjb25kaXRpb24oZik6Cisg ICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgYmVoYXZl IGFzIGEgZGVjb3JhdG9yIHdoaWNoIHdpbGwgY2hlY2tzCisgICAgICAgIGRh dGFiYXNlIGNvbm5lY3Rpb24gYmVmb3JlIHJ1bm5pbmcgdmlldywgaXQgd2ls bCBhbHNvIGF0dGFjaGVzCisgICAgICAgIG1hbmFnZXIsY29ubiAmIHRlbXBs YXRlX3BhdGggcHJvcGVydGllcyB0byBzZWxmCisgICAgICAgICIiIgorCisg ICAgICAgIEB3cmFwcyhmKQorICAgICAgICBkZWYgd3JhcCgqYXJncywgKipr d2FyZ3MpOgorICAgICAgICAgICAgIyBIZXJlIGFyZ3NbMF0gd2lsbCBob2xk IHNlbGYgJiBrd2FyZ3Mgd2lsbCBob2xkIGdpZCxzaWQsZGlkCisgICAgICAg ICAgICBzZWxmID0gYXJnc1swXQorICAgICAgICAgICAgc2VsZi5tYW5hZ2Vy ID0gZ2V0X2RyaXZlcihQR19ERUZBVUxUX0RSSVZFUikuY29ubmVjdGlvbl9t YW5hZ2VyKAorICAgICAgICAgICAgICAgIGt3YXJnc1snc2lkJ10pCisgICAg ICAgICAgICBzZWxmLmNvbm4gPSBzZWxmLm1hbmFnZXIuY29ubmVjdGlvbihk aWQ9a3dhcmdzWydkaWQnXSkKKyAgICAgICAgICAgICMgSWYgREIgbm90IGNv bm5lY3RlZCB0aGVuIHJldHVybiBlcnJvciB0byBicm93c2VyCisgICAgICAg ICAgICBpZiBub3Qgc2VsZi5jb25uLmNvbm5lY3RlZCgpOgorICAgICAgICAg ICAgICAgIHJldHVybiBwcmVjb25kaXRpb25fcmVxdWlyZWQoCisgICAgICAg ICAgICAgICAgICAgIGdldHRleHQoCisgICAgICAgICAgICAgICAgICAgICAg ICAiQ29ubmVjdGlvbiB0byB0aGUgc2VydmVyIGhhcyBiZWVuIGxvc3QhIgor ICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgKQorICAg ICAgICAgICAgIyB3ZSB3aWxsIHNldCB0ZW1wbGF0ZSBwYXRoIGZvciBzcWwg c2NyaXB0cyBkZXBlbmRpbmcgdXBvbiBzZXJ2ZXIgdmVyc2lvbgorICAgICAg ICAgICAgdmVyID0gc2VsZi5tYW5hZ2VyLnZlcnNpb24KKyAgICAgICAgICAg IGlmIHZlciA+PSA5MDEwMDoKKyAgICAgICAgICAgICAgICBzZWxmLnRlbXBs YXRlX3BhdGggPSAnZnRzX3RlbXBsYXRlL3NxbC85LjFfcGx1cycKKyAgICAg ICAgICAgIHJldHVybiBmKCphcmdzLCAqKmt3YXJncykKKworICAgICAgICBy ZXR1cm4gd3JhcAorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRl ZiBsaXN0KHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQpOgorICAgICAgICBz cWwgPSByZW5kZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAiLyIuam9pbihb c2VsZi50ZW1wbGF0ZV9wYXRoLCAncHJvcGVydGllcy5zcWwnXSksCisgICAg ICAgICAgICBzY2lkPXNjaWQKKyAgICAgICAgKQorICAgICAgICBzdGF0dXMs IHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3Qoc3FsKQorCisgICAgICAg IGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxf c2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKworICAgICAgICByZXR1cm4g YWpheF9yZXNwb25zZSgKKyAgICAgICAgICAgIHJlc3BvbnNlPXJlc1sncm93 cyddLAorICAgICAgICAgICAgc3RhdHVzPTIwMAorICAgICAgICApCisKKyAg ICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVmIG5vZGVzKHNlbGYsIGdp ZCwgc2lkLCBkaWQsIHNjaWQpOgorICAgICAgICByZXMgPSBbXQorICAgICAg ICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAiLyIuam9p bihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAnbm9kZXMuc3FsJ10pLAorICAgICAg ICAgICAgc2NpZD1zY2lkCisgICAgICAgICkKKyAgICAgICAgc3RhdHVzLCBy c2V0ID0gc2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJheShzcWwpCisgICAgICAg IGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxf c2VydmVyX2Vycm9yKGVycm9ybXNnPXJzZXQpCisKKyAgICAgICAgZm9yIHJv dyBpbiByc2V0Wydyb3dzJ106CisgICAgICAgICAgICByZXMuYXBwZW5kKAor ICAgICAgICAgICAgICAgIHNlbGYuYmx1ZXByaW50LmdlbmVyYXRlX2Jyb3dz ZXJfbm9kZSgKKyAgICAgICAgICAgICAgICAgICAgcm93WydvaWQnXSwKKyAg ICAgICAgICAgICAgICAgICAgZGlkLAorICAgICAgICAgICAgICAgICAgICBy b3dbJ25hbWUnXSwKKyAgICAgICAgICAgICAgICAgICAgaWNvbj0iaWNvbi1m dHNfdGVtcGxhdGUiCisgICAgICAgICAgICAgICAgKSkKKworICAgICAgICBy ZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgZGF0YT1y ZXMsCisgICAgICAgICAgICBzdGF0dXM9MjAwCisgICAgICAgICkKKworICAg IEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgbm9kZShzZWxmLCBnaWQs IHNpZCwgZGlkLCBzY2lkLCB0aWQpOgorICAgICAgICByZXMgPSBbXQorICAg ICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAiLyIu am9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAnbm9kZXMuc3FsJ10pLAorICAg ICAgICAgICAgdGlkPXRpZAorICAgICAgICApCisgICAgICAgIHN0YXR1cywg cnNldCA9IHNlbGYuY29ubi5leGVjdXRlXzJkYXJyYXkoc3FsKQorICAgICAg ICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFs X3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yc2V0KQorCisgICAgICAgIGZvciBy b3cgaW4gcnNldFsncm93cyddOgorICAgICAgICAgICAgcmV0dXJuIG1ha2Vf anNvbl9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICBkYXRhPXNlbGYuYmx1 ZXByaW50LmdlbmVyYXRlX2Jyb3dzZXJfbm9kZSgKKyAgICAgICAgICAgICAg ICAgICAgICAgIHJvd1snb2lkJ10sCisgICAgICAgICAgICAgICAgICAgICAg ICBkaWQsCisgICAgICAgICAgICAgICAgICAgICAgICByb3dbJ25hbWUnXSwK KyAgICAgICAgICAgICAgICAgICAgICAgIGljb249Imljb24tZnRzX3RlbXBs YXRlIgorICAgICAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAg IHN0YXR1cz0yMDAKKyAgICAgICAgICAgICkKKworICAgIEBjaGVja19wcmVj b25kaXRpb24KKyAgICBkZWYgcHJvcGVydGllcyhzZWxmLCBnaWQsIHNpZCwg ZGlkLCBzY2lkLCB0aWQpOgorICAgICAgICBzcWwgPSByZW5kZXJfdGVtcGxh dGUoCisgICAgICAgICAgICAiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRo LCAncHJvcGVydGllcy5zcWwnXSksCisgICAgICAgICAgICBzY2lkPXNjaWQs CisgICAgICAgICAgICB0aWQ9dGlkCisgICAgICAgICkKKyAgICAgICAgc3Rh dHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KHNxbCkKKworICAg ICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIGludGVy bmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgcmV0 dXJuIGFqYXhfcmVzcG9uc2UoCisgICAgICAgICAgICByZXNwb25zZT1yZXNb J3Jvd3MnXVswXSwKKyAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAgICAg KQorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBjcmVhdGUo c2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCk6CisgICAgICAgICIiIgorICAg ICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgY3JlYXRlcyBuZXcgdGhlIGZ0c190 ZW1wbGF0ZSBvYmplY3QKKyAgICAgICAgOnBhcmFtIGdpZDogZ3JvdXAgaWQK KyAgICAgICAgOnBhcmFtIHNpZDogc2VydmVyIGlkCisgICAgICAgIDpwYXJh bSBkaWQ6IGRhdGFiYXNlIGlkCisgICAgICAgIDpwYXJhbSBzY2lkOiBzY2hl bWEgaWQKKyAgICAgICAgIiIiCisKKyAgICAgICAgIyBNYW5kYXRvcnkgZmll bGRzIHRvIGNyZWF0ZSBhIG5ldyBmdHMgdGVtcGxhdGUKKyAgICAgICAgcmVx dWlyZWRfYXJncyA9IFsKKyAgICAgICAgICAgICd0bXBsbGV4aXplJywKKyAg ICAgICAgICAgICdzY2hlbWEnLAorICAgICAgICAgICAgJ25hbWUnCisgICAg ICAgIF0KKworICAgICAgICBkYXRhID0gcmVxdWVzdC5mb3JtIGlmIHJlcXVl c3QuZm9ybSBlbHNlIGpzb24ubG9hZHMoCisgICAgICAgICAgICByZXF1ZXN0 LmRhdGEuZGVjb2RlKCkpCisgICAgICAgIGZvciBhcmcgaW4gcmVxdWlyZWRf YXJnczoKKyAgICAgICAgICAgIGlmIGFyZyBub3QgaW4gZGF0YToKKyAgICAg ICAgICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAg ICAgICAgICAgICAgICBzdGF0dXM9NDEwLAorICAgICAgICAgICAgICAgICAg ICBzdWNjZXNzPTAsCisgICAgICAgICAgICAgICAgICAgIGVycm9ybXNnPWdl dHRleHQoCisgICAgICAgICAgICAgICAgICAgICAgICAiQ291bGRuJ3QgZmlu ZCB0aGUgcmVxdWlyZWQgcGFyYW1ldGVyICglcykuIiAlIGFyZworICAgICAg ICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgKQorICAgICAgICB0 cnk6CisgICAgICAgICAgICAjIEZldGNoIHNjaGVtYSBuYW1lIGZyb20gc2No ZW1hIG9pZAorICAgICAgICAgICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKCIv Ii5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdzY2hlbWEuc3FsJ10pLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9ZGF0YSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uPXNlbGYu Y29ubiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCisK KyAgICAgICAgICAgIHN0YXR1cywgc2NoZW1hID0gc2VsZi5jb25uLmV4ZWN1 dGVfc2NhbGFyKHNxbCkKKyAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6Cisg ICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihl cnJvcm1zZz1zY2hlbWEpCisKKyAgICAgICAgICAgICMgcmVwbGFjZSBzY2hl bWEgb2lkIHdpdGggc2NoZW1hIG5hbWUgYmVmb3JlIHBhc3NpbmcgdG8gY3Jl YXRlLnNxbAorICAgICAgICAgICAgIyB0byBnZW5lcmF0ZSBwcm9wZXIgc3Fs IHF1ZXJ5CisgICAgICAgICAgICBuZXdfZGF0YSA9IGRhdGEuY29weSgpCisg ICAgICAgICAgICBuZXdfZGF0YVsnc2NoZW1hJ10gPSBzY2hlbWEKKyAgICAg ICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50 ZW1wbGF0ZV9wYXRoLCAnY3JlYXRlLnNxbCddKSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBkYXRhPW5ld19kYXRhLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm49c2VsZi5jb25uLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAg IHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfc2NhbGFyKHNxbCkK KyAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAg cmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisK KyAgICAgICAgICAgICMgd2UgbmVlZCBmdHNfdGVtcGxhdGUgaWQgdG8gdG8g YWRkIG9iamVjdCBpbiB0cmVlIGF0IGJyb3dzZXIsCisgICAgICAgICAgICAj IGJlbG93IHNxbCB3aWxsIGdpdmUgdGhlIHNhbWUKKyAgICAgICAgICAgIHNx bCA9IHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgICAgICAgICAiLyIuam9p bihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAncHJvcGVydGllcy5zcWwnXSksCisg ICAgICAgICAgICAgICAgbmFtZT1kYXRhWyduYW1lJ10KKyAgICAgICAgICAg ICkKKyAgICAgICAgICAgIHN0YXR1cywgdGlkID0gc2VsZi5jb25uLmV4ZWN1 dGVfc2NhbGFyKHNxbCkKKyAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6Cisg ICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihl cnJvcm1zZz10aWQpCisKKyAgICAgICAgICAgIHJldHVybiBqc29uaWZ5KAor ICAgICAgICAgICAgICAgIG5vZGU9c2VsZi5ibHVlcHJpbnQuZ2VuZXJhdGVf YnJvd3Nlcl9ub2RlKAorICAgICAgICAgICAgICAgICAgICB0aWQsCisgICAg ICAgICAgICAgICAgICAgIGRpZCwKKyAgICAgICAgICAgICAgICAgICAgZGF0 YVsnbmFtZSddLAorICAgICAgICAgICAgICAgICAgICBpY29uPSJpY29uLWZ0 c190ZW1wbGF0ZSIKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAp CisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAg IHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKGUp KQorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiB1cGRhdGUo c2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgdGlkKToKKyAgICAgICAgIiIi CisgICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCB1cGRhdGUgdGV4dCBzZWFy Y2ggdGVtcGxhdGUgb2JqZWN0CisgICAgICAgIDpwYXJhbSBnaWQ6IGdyb3Vw IGlkCisgICAgICAgIDpwYXJhbSBzaWQ6IHNlcnZlciBpZAorICAgICAgICA6 cGFyYW0gZGlkOiBkYXRhYmFzZSBpZAorICAgICAgICA6cGFyYW0gc2NpZDog c2NoZW1hIGlkCisgICAgICAgIDpwYXJhbSB0aWQ6IGZ0cyB0ZW1wYXRlIGlk CisgICAgICAgICIiIgorICAgICAgICBkYXRhID0gcmVxdWVzdC5mb3JtIGlm IHJlcXVlc3QuZm9ybSBlbHNlIGpzb24ubG9hZHMoCisgICAgICAgICAgICBy ZXF1ZXN0LmRhdGEuZGVjb2RlKCkpCisKKyAgICAgICAgIyBGZXRjaCBzcWwg cXVlcnkgdG8gdXBkYXRlIGZ0cyB0ZW1wbGF0ZQorICAgICAgICBzcWwgPSBz ZWxmLmdldF9zcWwoZ2lkLCBzaWQsIGRpZCwgc2NpZCwgZGF0YSwgdGlkKQor ICAgICAgICB0cnk6CisgICAgICAgICAgICBpZiBzcWwgYW5kIHNxbC5zdHJp cCgnXG4nKSBhbmQgc3FsLnN0cmlwKCcgJyk6CisgICAgICAgICAgICAgICAg c3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9zY2FsYXIoc3FsKQor ICAgICAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAg ICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9 cmVzKQorCisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNw b25zZSgKKyAgICAgICAgICAgICAgICAgICAgc3VjY2Vzcz0xLAorICAgICAg ICAgICAgICAgICAgICBpbmZvPSJGVFMgVGVtcGxhdGUgdXBkYXRlZCIsCisg ICAgICAgICAgICAgICAgICAgIGRhdGE9eworICAgICAgICAgICAgICAgICAg ICAgICAgJ2lkJzogdGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgJ3Np ZCc6IHNpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICdnaWQnOiBnaWQs CisgICAgICAgICAgICAgICAgICAgICAgICAnZGlkJzogZGlkLAorICAgICAg ICAgICAgICAgICAgICAgICAgJ3NjaWQnOiBzY2lkCisgICAgICAgICAgICAg ICAgICAgIH0KKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBlbHNl OgorICAgICAgICAgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2Uo CisgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M9MSwKKyAgICAgICAgICAg ICAgICAgICAgaW5mbz0iTm90aGluZyB0byB1cGRhdGUiLAorICAgICAgICAg ICAgICAgICAgICBkYXRhPXsKKyAgICAgICAgICAgICAgICAgICAgICAgICdp ZCc6IHRpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICdzaWQnOiBzaWQs CisgICAgICAgICAgICAgICAgICAgICAgICAnZ2lkJzogZ2lkLAorICAgICAg ICAgICAgICAgICAgICAgICAgJ2RpZCc6IGRpZCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICdzY2lkJzogc2NpZAorICAgICAgICAgICAgICAgICAgICB9 CisgICAgICAgICAgICAgICAgKQorCisgICAgICAgIGV4Y2VwdCBFeGNlcHRp b24gYXMgZToKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJf ZXJyb3IoZXJyb3Jtc2c9c3RyKGUpKQorCisgICAgQGNoZWNrX3ByZWNvbmRp dGlvbgorICAgIGRlZiBkZWxldGUoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2Np ZCwgdGlkKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24g d2lsbCBkcm9wIHRoZSBmdHNfdGVtcGxhdGUgb2JqZWN0CisgICAgICAgIDpw YXJhbSBnaWQ6IGdyb3VwIGlkCisgICAgICAgIDpwYXJhbSBzaWQ6IHNlcnZl ciBpZAorICAgICAgICA6cGFyYW0gZGlkOiBkYXRhYmFzZSBpZAorICAgICAg ICA6cGFyYW0gc2NpZDogc2NoZW1hIGlkCisgICAgICAgIDpwYXJhbSB0aWQ6 IGZ0cyB0ZW1wYXRlIGlkCisgICAgICAgICIiIgorICAgICAgICAjIEJlbG93 IHdpbGwgZGVjaWRlIGlmIGl0J3Mgc2ltcGxlIGRyb3Agb3IgZHJvcCB3aXRo IGNhc2NhZGUgY2FsbAorICAgICAgICBpZiBzZWxmLmNtZCA9PSAnZGVsZXRl JzoKKyAgICAgICAgICAgICMgVGhpcyBpcyBhIGNhc2NhZGUgb3BlcmF0aW9u CisgICAgICAgICAgICBjYXNjYWRlID0gVHJ1ZQorICAgICAgICBlbHNlOgor ICAgICAgICAgICAgY2FzY2FkZSA9IEZhbHNlCisKKyAgICAgICAgdHJ5Ogor ICAgICAgICAgICAgIyBHZXQgbmFtZSBmb3IgdGVtcGxhdGUgZnJvbSB0aWQK KyAgICAgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihb c2VsZi50ZW1wbGF0ZV9wYXRoLCAnZGVsZXRlLnNxbCddKSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB0aWQ9dGlkKQorICAgICAgICAg ICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KHNxbCkK KyAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAg cmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisK KyAgICAgICAgICAgICMgRHJvcCBmdHMgdGVtcGxhdGUKKyAgICAgICAgICAg IHJlc3VsdCA9IHJlc1sncm93cyddWzBdCisgICAgICAgICAgICBzcWwgPSBy ZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwg J2RlbGV0ZS5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbmFtZT1yZXN1bHRbJ25hbWUnXSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzY2hlbWE9cmVzdWx0WydzY2hlbWEnXSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNjYWRlPWNhc2Nh ZGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCisKKyAg ICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfc2Nh bGFyKHNxbCkKKyAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAg ICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1z Zz1yZXMpCisKKyAgICAgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9u c2UoCisgICAgICAgICAgICAgICAgc3VjY2Vzcz0xLAorICAgICAgICAgICAg ICAgIGluZm89Z2V0dGV4dCgiRlRTIHRlbXBsYXRlIGRyb3BwZWQiKSwKKyAg ICAgICAgICAgICAgICBkYXRhPXsKKyAgICAgICAgICAgICAgICAgICAgJ2lk JzogdGlkLAorICAgICAgICAgICAgICAgICAgICAnc2lkJzogc2lkLAorICAg ICAgICAgICAgICAgICAgICAnZ2lkJzogZ2lkLAorICAgICAgICAgICAgICAg ICAgICAnZGlkJzogZGlkLAorICAgICAgICAgICAgICAgICAgICAnc2NpZCc6 IHNjaWQKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICApCisKKyAg ICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgcmV0 dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1zdHIoZSkpCisK KyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVmIG1zcWwoc2VsZiwg Z2lkLCBzaWQsIGRpZCwgc2NpZCwgdGlkPU5vbmUpOgorICAgICAgICAiIiIK KyAgICAgICAgVGhpcyBmdW5jdGlvbiByZXR1cm5zIG1vZGlmaWVkIFNRTAor ICAgICAgICA6cGFyYW0gZ2lkOiBncm91cCBpZAorICAgICAgICA6cGFyYW0g c2lkOiBzZXJ2ZXIgaWQKKyAgICAgICAgOnBhcmFtIGRpZDogZGF0YWJhc2Ug aWQKKyAgICAgICAgOnBhcmFtIHNjaWQ6IHNjaGVtYSBpZAorICAgICAgICA6 cGFyYW0gdGlkOiBmdHMgdGVtcGF0ZSBpZAorICAgICAgICAiIiIKKyAgICAg ICAgZGF0YSA9IHJlcXVlc3QuYXJncworCisgICAgICAgICMgRmV0Y2ggc3Fs IHF1ZXJ5IGZvciBtb2RpZmllZCBkYXRhCisgICAgICAgIHNxbCA9IHNlbGYu Z2V0X3NxbChnaWQsIHNpZCwgZGlkLCBzY2lkLCBkYXRhLCB0aWQpCisKKyAg ICAgICAgaWYgaXNpbnN0YW5jZShzcWwsIHN0cikgYW5kIHNxbCBhbmQgc3Fs LnN0cmlwKCdcbicpIGFuZCBzcWwuc3RyaXAoJyAnKToKKyAgICAgICAgICAg IHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAgICAgICAgICAg ZGF0YT1zcWwsCisgICAgICAgICAgICAgICAgc3RhdHVzPTIwMAorICAgICAg ICAgICAgKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIG1h a2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICBkYXRhPSItLW1v ZGlmaWVkIFNRTCIsCisgICAgICAgICAgICAgICAgc3RhdHVzPTIwMAorICAg ICAgICAgICAgKQorCisgICAgZGVmIGdldF9zcWwoc2VsZiwgZ2lkLCBzaWQs IGRpZCwgc2NpZCwgZGF0YSwgdGlkPU5vbmUpOgorICAgICAgICAiIiIKKyAg ICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIHJldHVybiBTUUwgZm9yIG1vZGVs IGRhdGEKKyAgICAgICAgOnBhcmFtIGdpZDogZ3JvdXAgaWQKKyAgICAgICAg OnBhcmFtIHNpZDogc2VydmVyIGlkCisgICAgICAgIDpwYXJhbSBkaWQ6IGRh dGFiYXNlIGlkCisgICAgICAgIDpwYXJhbSBzY2lkOiBzY2hlbWEgaWQKKyAg ICAgICAgOnBhcmFtIHRpZDogZnRzIHRlbXBhdGUgaWQKKyAgICAgICAgIiIi CisgICAgICAgIHRyeToKKyAgICAgICAgICAgICMgRmV0Y2ggc3FsIGZvciB1 cGRhdGUKKyAgICAgICAgICAgIGlmIHRpZCBpcyBub3QgTm9uZToKKyAgICAg ICAgICAgICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoCisgICAgICAgICAg ICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdwcm9w ZXJ0aWVzLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgdGlkPXRpZCwK KyAgICAgICAgICAgICAgICAgICAgc2NpZD1zY2lkCisgICAgICAgICAgICAg ICAgKQorCisgICAgICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNv bm4uZXhlY3V0ZV9kaWN0KHNxbCkKKyAgICAgICAgICAgICAgICBpZiBub3Qg c3RhdHVzOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxf c2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKworICAgICAgICAgICAgICAg IG9sZF9kYXRhID0gcmVzWydyb3dzJ11bMF0KKworICAgICAgICAgICAgICAg ICMgSWYgdXNlciBoYXMgY2hhbmdlZCB0aGUgc2NoZW1hIHRoZW4gZmV0Y2gg bmV3IHNjaGVtYSBkaXJlY3RseQorICAgICAgICAgICAgICAgICMgdXNpbmcg aXRzIG9pZCBvdGhlcndpc2UgZmV0Y2ggb2xkIHNjaGVtYSBuYW1lIHVzaW5n IGZ0cyB0ZW1wbGF0ZSBvaWQKKyAgICAgICAgICAgICAgICBzcWwgPSByZW5k ZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAgICAgICAgICIvIi5qb2luKFtz ZWxmLnRlbXBsYXRlX3BhdGgsICdzY2hlbWEuc3FsJ10pLAorICAgICAgICAg ICAgICAgICAgICBkYXRhPWRhdGEpCisKKyAgICAgICAgICAgICAgICBzdGF0 dXMsIG5ld19zY2hlbWEgPSBzZWxmLmNvbm4uZXhlY3V0ZV9zY2FsYXIoc3Fs KQorICAgICAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAg ICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jt c2c9bmV3X3NjaGVtYSkKKworICAgICAgICAgICAgICAgICMgUmVwbGFjZSBz Y2hlbWEgb2lkIHdpdGggc2NoZW1hIG5hbWUKKyAgICAgICAgICAgICAgICBu ZXdfZGF0YSA9IGRhdGEuY29weSgpCisgICAgICAgICAgICAgICAgaWYgJ3Nj aGVtYScgaW4gbmV3X2RhdGE6CisgICAgICAgICAgICAgICAgICAgIG5ld19k YXRhWydzY2hlbWEnXSA9IG5ld19zY2hlbWEKKworICAgICAgICAgICAgICAg ICMgRmV0Y2ggb2xkIHNjaGVtYSBuYW1lIHVzaW5nIG9sZCBzY2hlbWEgb2lk CisgICAgICAgICAgICAgICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKAorICAg ICAgICAgICAgICAgICAgICAiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRo LCAnc2NoZW1hLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgZGF0YT1v bGRfZGF0YSkKKworICAgICAgICAgICAgICAgIHN0YXR1cywgb2xkX3NjaGVt YSA9IHNlbGYuY29ubi5leGVjdXRlX3NjYWxhcihzcWwpCisgICAgICAgICAg ICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICAgICAgcmV0 dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1vbGRfc2NoZW1h KQorCisgICAgICAgICAgICAgICAgIyBSZXBsYWNlIG9sZCBzY2hlbWEgb2lk IHdpdGggb2xkIHNjaGVtYSBuYW1lCisgICAgICAgICAgICAgICAgb2xkX2Rh dGFbJ3NjaGVtYSddID0gb2xkX3NjaGVtYQorCisgICAgICAgICAgICAgICAg c3FsID0gcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAgICAgICAgICAi LyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAndXBkYXRlLnNxbCddKSwK KyAgICAgICAgICAgICAgICAgICAgZGF0YT1uZXdfZGF0YSwgb19kYXRhPW9s ZF9kYXRhCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICMg RmV0Y2ggc3FsIHF1ZXJ5IGZvciBtb2RpZmllZCBkYXRhCisgICAgICAgICAg ICBlbHNlOgorICAgICAgICAgICAgICAgICMgRmV0Y2ggc2NoZW1hIG5hbWUg ZnJvbSBzY2hlbWEgb2lkCisgICAgICAgICAgICAgICAgc3FsID0gcmVuZGVy X3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdzY2hl bWEuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBkYXRhPWRhdGEpCisKKyAgICAgICAgICAgICAgICBzdGF0dXMsIHNj aGVtYSA9IHNlbGYuY29ubi5leGVjdXRlX3NjYWxhcihzcWwpCisgICAgICAg ICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICAgICAg cmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1zY2hlbWEp CisKKyAgICAgICAgICAgICAgICAjIFJlcGxhY2Ugc2NoZW1hIG9pZCB3aXRo IHNjaGVtYSBuYW1lCisgICAgICAgICAgICAgICAgbmV3X2RhdGEgPSBkYXRh LmNvcHkoKQorICAgICAgICAgICAgICAgIG5ld19kYXRhWydzY2hlbWEnXSA9 IHNjaGVtYQorCisgICAgICAgICAgICAgICAgaWYgJ3RtcGxsZXhpemUnIGlu IG5ld19kYXRhIGFuZCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICduYW1lJyBpbiBuZXdfZGF0YSBhbmQgXAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAnc2NoZW1hJyBpbiBuZXdfZGF0YToKKyAgICAg ICAgICAgICAgICAgICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2lu KFtzZWxmLnRlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NyZWF0ZS5zcWwnXSks CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk YXRhPW5ld19kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY29ubj1zZWxmLmNvbm4KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBl bHNlOgorICAgICAgICAgICAgICAgICAgICBzcWwgPSAiLS0gaW5jb21wbGV0 ZSBkZWZpbml0aW9uIgorICAgICAgICAgICAgcmV0dXJuIHN0cihzcWwuc3Ry aXAoJ1xuJykpCisKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgor ICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJv cm1zZz1zdHIoZSkpCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAg ZGVmIGdldF9sZXhpemUoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgdGlk PU5vbmUpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiB3 aWxsIHJldHVybiBsZXhpemUgZnVuY3Rpb25zIGxpc3QgZm9yIGZ0cyB0ZW1w bGF0ZQorICAgICAgICA6cGFyYW0gZ2lkOiBncm91cCBpZAorICAgICAgICA6 cGFyYW0gc2lkOiBzZXJ2ZXIgaWQKKyAgICAgICAgOnBhcmFtIGRpZDogZGF0 YWJhc2UgaWQKKyAgICAgICAgOnBhcmFtIHNjaWQ6IHNjaGVtYSBpZAorICAg ICAgICA6cGFyYW0gdGlkOiBmdHMgdGVtcGF0ZSBpZAorICAgICAgICAiIiIK KyAgICAgICAgZGF0YSA9IHJlcXVlc3QuYXJncworICAgICAgICBzcWwgPSBy ZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwg J2Z1bmN0aW9ucy5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBsZXhpemU9VHJ1ZSkKKyAgICAgICAgc3RhdHVzLCByc2V0ID0gc2Vs Zi5jb25uLmV4ZWN1dGVfZGljdChzcWwpCisKKyAgICAgICAgaWYgbm90IHN0 YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJy b3IoZXJyb3Jtc2c9cnNldCkKKworICAgICAgICAjIEVtcHR5IHNldCBpcyBh ZGRlZCBiZWZvcmUgYWN0dWFsIGxpc3QgYXMgaW5pdGlhbGx5IGl0IHdpbGwg YmUgdmlzaWJsZQorICAgICAgICAjIGF0IGxleGl6ZSBzZWxlY3QgY29udHJv bCB3aGlsZSBjcmVhdGluZyBhIG5ldyBmdHMgdGVtcGxhdGUKKyAgICAgICAg cmVzID0gW3snbGFiZWwnOiAnJywgJ3ZhbHVlJzogJyd9XQorICAgICAgICBm b3Igcm93IGluIHJzZXRbJ3Jvd3MnXToKKyAgICAgICAgICAgIHJlcy5hcHBl bmQoeydsYWJlbCc6IHJvd1sncHJvbmFtZSddLAorICAgICAgICAgICAgICAg ICAgICAgICAgJ3ZhbHVlJzogcm93Wydwcm9uYW1lJ119KQorICAgICAgICBy ZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgZGF0YT1y ZXMsCisgICAgICAgICAgICBzdGF0dXM9MjAwCisgICAgICAgICkKKworICAg IEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgZ2V0X2luaXQoc2VsZiwg Z2lkLCBzaWQsIGRpZCwgc2NpZCwgdGlkPU5vbmUpOgorICAgICAgICAiIiIK KyAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIHJldHVybiBpbml0IGZ1bmN0 aW9ucyBsaXN0IGZvciBmdHMgdGVtcGxhdGUKKyAgICAgICAgOnBhcmFtIGdp ZDogZ3JvdXAgaWQKKyAgICAgICAgOnBhcmFtIHNpZDogc2VydmVyIGlkCisg ICAgICAgIDpwYXJhbSBkaWQ6IGRhdGFiYXNlIGlkCisgICAgICAgIDpwYXJh bSBzY2lkOiBzY2hlbWEgaWQKKyAgICAgICAgOnBhcmFtIHRpZDogZnRzIHRl bXBhdGUgaWQKKyAgICAgICAgIiIiCisgICAgICAgIGRhdGEgPSByZXF1ZXN0 LmFyZ3MKKyAgICAgICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2lu KFtzZWxmLnRlbXBsYXRlX3BhdGgsICdmdW5jdGlvbnMuc3FsJ10pLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdD1UcnVlKQorICAgICAg ICBzdGF0dXMsIHJzZXQgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KHNxbCkK KworICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJu IGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yc2V0KQorCisgICAg ICAgICMgV2UgaGF2ZSBhZGRlZCB0aGlzIHRvIG1hcCBhZ2FpbnN0ICctJyB3 aGljaCBpcyBjb21pbmcgZnJvbSBzZXJ2ZXIKKyAgICAgICAgcmVzID0gW3sn bGFiZWwnOiAnJywgJ3ZhbHVlJzogJy0nfV0KKyAgICAgICAgZm9yIHJvdyBp biByc2V0Wydyb3dzJ106CisgICAgICAgICAgICByZXMuYXBwZW5kKHsnbGFi ZWwnOiByb3dbJ3Byb25hbWUnXSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICd2YWx1ZSc6IHJvd1sncHJvbmFtZSddfSkKKyAgICAgICAgcmV0dXJuIG1h a2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAgICAgIGRhdGE9cmVzLAorICAg ICAgICAgICAgc3RhdHVzPTIwMAorICAgICAgICApCisKKyAgICBAY2hlY2tf cHJlY29uZGl0aW9uCisgICAgZGVmIHNxbChzZWxmLCBnaWQsIHNpZCwgZGlk LCBzY2lkLCB0aWQpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5j dGlvbiB3aWxsIHJldmVyc2UgZ2VuZXJhdGUgc3FsIGZvciBzcWwgcGFuZWwK KyAgICAgICAgOnBhcmFtIGdpZDogZ3JvdXAgaWQKKyAgICAgICAgOnBhcmFt IHNpZDogc2VydmVyIGlkCisgICAgICAgIDpwYXJhbSBkaWQ6IGRhdGFiYXNl IGlkCisgICAgICAgIDpwYXJhbSBzY2lkOiBzY2hlbWEgaWQKKyAgICAgICAg OnBhcmFtIHRpZDogZnRzIHRlbXBhdGUgaWQKKyAgICAgICAgIiIiCisgICAg ICAgIHRyeToKKyAgICAgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgK KyAgICAgICAgICAgICAgICAiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRo LCAnc3FsLnNxbCddKSwKKyAgICAgICAgICAgICAgICB0aWQ9dGlkLAorICAg ICAgICAgICAgICAgIHNjaWQ9c2NpZCwKKyAgICAgICAgICAgICAgICBjb25u PXNlbGYuY29ubgorICAgICAgICAgICAgKQorICAgICAgICAgICAgc3RhdHVz LCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9zY2FsYXIoc3FsKQorICAgICAg ICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICByZXR1cm4g aW50ZXJuYWxfc2VydmVyX2Vycm9yKAorICAgICAgICAgICAgICAgICAgICBf KAorICAgICAgICAgICAgICAgICAgICAgICAgIkVSUk9SOiBDb3VsZG4ndCBn ZW5lcmF0ZSByZXZlcnNlZCBlbmdpbmVlcmVkIFF1ZXJ5IGZvciB0aGUgRlRT IHRlbXBsYXRlIVxuezB9IikuZm9ybWF0KAorICAgICAgICAgICAgICAgICAg ICAgICAgcmVzCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAg ICAgICApCisKKyAgICAgICAgICAgIGlmIHJlcyBpcyBOb25lOgorICAgICAg ICAgICAgICAgIHJldHVybiBnb25lKAorICAgICAgICAgICAgICAgICAgICBf KAorICAgICAgICAgICAgICAgICAgICAgICAgIkVSUk9SOiBDb3VsZG4ndCBn ZW5lcmF0ZSByZXZlcnNlZCBlbmdpbmVlcmVkIFF1ZXJ5IGZvciBGVFMgdGVt cGxhdGUgbm9kZSEiKQorICAgICAgICAgICAgICAgICkKKworICAgICAgICAg ICAgcmV0dXJuIGFqYXhfcmVzcG9uc2UocmVzcG9uc2U9cmVzKQorCisgICAg ICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIHJldHVy biBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKGUpKQorCisg ICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBkZXBlbmRlbnRzKHNl bGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRpZCk6CisgICAgICAgICIiIgor ICAgICAgICBUaGlzIGZ1bmN0aW9uIGdldCB0aGUgZGVwZW5kZW50cyBhbmQg cmV0dXJuIGFqYXggcmVzcG9uc2UKKyAgICAgICAgZm9yIHRoZSBGVFMgVGVt cGxhdGUgbm9kZS4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgZ2lk OiBTZXJ2ZXIgR3JvdXAgSUQKKyAgICAgICAgICAgIHNpZDogU2VydmVyIElE CisgICAgICAgICAgICBkaWQ6IERhdGFiYXNlIElECisgICAgICAgICAgICBz Y2lkOiBTY2hlbWEgSUQKKyAgICAgICAgICAgIHRpZDogRlRTIFRlbXBsYXRl IElECisgICAgICAgICIiIgorICAgICAgICBkZXBlbmRlbnRzX3Jlc3VsdCA9 IHNlbGYuZ2V0X2RlcGVuZGVudHMoc2VsZi5jb25uLCB0aWQpCisgICAgICAg IHJldHVybiBhamF4X3Jlc3BvbnNlKAorICAgICAgICAgICAgICAgIHJlc3Bv bnNlPWRlcGVuZGVudHNfcmVzdWx0LAorICAgICAgICAgICAgICAgIHN0YXR1 cz0yMDAKKyAgICAgICAgICAgICAgICApCisKKyAgICBAY2hlY2tfcHJlY29u ZGl0aW9uCisgICAgZGVmIGRlcGVuZGVuY2llcyhzZWxmLCBnaWQsIHNpZCwg ZGlkLCBzY2lkLCB0aWQpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBm dW5jdGlvbiBnZXQgdGhlIGRlcGVuZGVuY2llcyBhbmQgcmV0dXJuIGFqYXgg cmVzcG9uc2UKKyAgICAgICAgZm9yIHRoZSBGVFMgVGVtcGxhdGUgbm9kZS4K KworICAgICAgICBBcmdzOgorICAgICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3Jv dXAgSUQKKyAgICAgICAgICAgIHNpZDogU2VydmVyIElECisgICAgICAgICAg ICBkaWQ6IERhdGFiYXNlIElECisgICAgICAgICAgICBzY2lkOiBTY2hlbWEg SUQKKyAgICAgICAgICAgIHRpZDogRlRTIFRlbXBhbHRlIElECisgICAgICAg ICIiIgorICAgICAgICBkZXBlbmRlbmNpZXNfcmVzdWx0ID0gc2VsZi5nZXRf ZGVwZW5kZW5jaWVzKHNlbGYuY29ubiwgdGlkKQorICAgICAgICByZXR1cm4g YWpheF9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICByZXNwb25zZT1kZXBl bmRlbmNpZXNfcmVzdWx0LAorICAgICAgICAgICAgICAgIHN0YXR1cz0yMDAK KyAgICAgICAgICAgICAgICApCisKK0Z0c1RlbXBsYXRlVmlldy5yZWdpc3Rl cl9ub2RlX3ZpZXcoYmx1ZXByaW50KQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvZnRzX3RlbXBsYXRlcy9zdGF0aWMvaW1nL2NvbGwtZnRzX3RlbXBs YXRlLnBuZyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z0c190ZW1wbGF0ZXMvc3RhdGlj L2ltZy9jb2xsLWZ0c190ZW1wbGF0ZS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMC4uZmFiZDQ3ZGE3YWUyN2IwNGIwYmZkMzhhN2IxZWU5ZjZjMWE3NGQy YwpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgNjAxCnpjbVkrOVllLVc4NnZ5 dWohITU/N3pEUz03Zj9RbkpFWnY4aXdYSUVaKm1qRXclSDc9dUlMcGlwTDg3 YiRtT2FvWQp6R141OUlDT1M7Kkt8Jjhodn1xRXtBJiF1Y0dCQXA4Y2xXalhV TmA7Smh5VkdWMUxwX2x2e2t6Zz15aldRMDA4SisKelBNYiQlO2xDOERRfG1V UCFLO0Y9Sl95LVdDYTBQY0A1Knp6UjR6QkNENkArNE50VU4yWDtQQmo9V19H V1prd1ZjCnpXY2g8QXpVS0wtSTFWWXdYQjxCeSVUcE5VbVpVS2h0clViODky YiUwOENpfT8oenF6VDZ+JDNPYytUXks5TXtMUAp6dz10fHI2eUojQUQ/dTNI YDU0RE5LQGNtO2NHR21MQWlOWldWVilvMHhNKCl9Zk12VEY8YCU9O0srKmpp Kk9TZk8KelhXMzRNPjdlT3JldCMpTndQZHNSU29STFh3OXxBT01PfigtM25i WmAkJU9wPUdNY151ISlBJik1NXIoNDZaSDl0CnozOElkb0V8S0lwbDVFT2s4 VlJERkFPaCgkbz0mMytMUU96QFVLOEBUeT99TjMzJDZ+QDJJc00kTzZPYEVB TTV0MAp6T18kNDcwVHM8NUp+WFV4dE90RjU5TEhle2BTfWVFPmwpNVJXQUlY aWNWaEItVXUmRDhPMjI4Wl5YQTEhJEg+K0cKenlKYiNtVWEhTWJkRTladGVO d1h9UXM5YTk0KSg8UWg4fUEtJmdLbXlRXzE8Yy1KbSY3MmJ8REIkU0hwU3Va TF4lCnpwQjQ0VDd2aWJKOyZAVjk0MHdNMFNeQi1hXjhIdFNhSUFCKmVmVXZ9 KW1JMXM2STBVd0tyYjMxVWxTWGUpRHlSYwp6Pl88Wj05S3RMfUJjPWl7ZmhD fV4jQUYwWkFRTmFZQDNmZHB3fVloPzVQWjBAQmxlJGdgVjNsJkg/SWpgYEtx OTkKWW49Um4zSERSWGZAU3JMSEYxeTx7dzlnbSozI2M3NWRqSjNjCgpsaXRl cmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy9mdHNfdGVtcGxhdGVzL3N0YXRpYy9pbWcvZnRzX3RlbXBsYXRlLnBuZyBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL2Z0c190ZW1wbGF0ZXMvc3RhdGljL2ltZy9mdHNf dGVtcGxhdGUucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmViNzgwYmYw YmIwZjVkNzc3ZThhNzI3MjBiNWVkMGUyYWQ0OGJjNDUKR0lUIGJpbmFyeSBw YXRjaApsaXRlcmFsIDY5Ngp6Y21ZK0NTND5qQDZvemtjcT53UTUhR0xrI0NM elUzUylvUSFZciRlRlU8LXQkY0hLcS1oKGJkXlEyfmgtTUlqTW8KekJPKVJK MVQ9MCU+V0dYZVZNJTxeXysmSXVkaVREIVVnNjF5fE5RNHEmaUNAPylUQVVH QGJ5e20wfDA8O3FFMmcmCnpKbTg8P0UySjVzQEhZYTA+YDtuNkhDfkR7VmBX biN1XiFLWSQxXlhBdiFYYUhpa30yd1FWXzs/ez1NQ3Y9SkN3Zwp6P002fFlm fXEyS0ZiK1k8SnBUclFeYz9wPjZsWDs3cWFhS08hVXZ2eiVrIWZnX21ibkR2 Z3srNDlwP0ZXSm4hUFQKelJ+K3xAV2dvTmIxQlNWOHZ1U0Mlbzk5UDM/bTVk b1ZjQ1phR3NyTX5HPH16KlomT3F8TmpCU1RJK2goYG4wfWg+CnpxM0pHKT5Z JTY9bER1aUxzMGlYSiF3ZkxZSih8OGxRTVZ8bmxfVlFVQDtYNlchfH1eRmVp NmZ9WHU4dkNqVSZrPgp6bDU4TXxJKWI9QDxDayMhMCl8elglfU53NENDTThF UUJNJUhJUFMjcFk3REV5dShLI3loTjJ9MVFqOCNsSTlfQTEKek00eyt1dmwl cCo2ZmooMUdLSXFNYVNTXztxR3U0cWZncTw0PE9CQG8hRW1uSVpGanFFWm50 JCt4d2wzdFJPVD13Cno4M0ZaPUZMbygtcFZWYSpPUmlmfCFiRCEydn4ocUVf b1c4VFN4cWpXUnhmd1MqUDFNPXoxRjJpbS1yPXg/UXtZJAp6ezx9QWlSJj5A NiVlQ3I7V1BPZ3RhNDsoJi1FWFVGT1VPYFhafSZoflV5dDlLZlo2SCEqQGM8 VWIxYDdHZF58OXkKendXKn4hSjBtTXx8SH1PUUtmZ0NfWG0yfWBeRUtGT2Fa fF85WippfkJpTCVPbyVGZ2ZnKTVFWkh5IVU2SVE9UStJCnp0dUVJJUVRVFQ8 WkUlelYrYEJDemJrREFzSWA5NXRhdjR6aURgO1dCeGMlUDs/UXEwcklCYUdJ cV9QJTRrXnhGRQp6OThgb1c2PH5PKDU+IVAtczNOMDYhNiszN2J9V1lWe1Ji MmorSCZuPiVLI1g9MVc0REJEbG1FKG1+MmNOa05fWXQKTEsxbjtNRjspRXEw NDh5TgoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvZnRzX3RlbXBsYXRlcy90ZW1wbGF0ZXMvZnRzX3RlbXBs YXRlL2pzL2Z0c190ZW1wbGF0ZXMuanMgYi93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdHNf dGVtcGxhdGVzL3RlbXBsYXRlcy9mdHNfdGVtcGxhdGUvanMvZnRzX3RlbXBs YXRlcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43 OTYxZWRmCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnRz X3RlbXBsYXRlcy90ZW1wbGF0ZXMvZnRzX3RlbXBsYXRlL2pzL2Z0c190ZW1w bGF0ZXMuanMKQEAgLTAsMCArMSwxMzMgQEAKK2RlZmluZSgKKyAgICAgICAg WydqcXVlcnknLCAndW5kZXJzY29yZScsICd1bmRlcnNjb3JlLnN0cmluZycs ICdwZ2FkbWluJywgJ3BnYWRtaW4uYnJvd3NlcicsICdhbGVydGlmeScsICdw Z2FkbWluLmJyb3dzZXIuY29sbGVjdGlvbiddLAorZnVuY3Rpb24oJCwgXywg UywgcGdBZG1pbiwgcGdCcm93c2VyLCBhbGVydGlmeSkgeworCisgIC8vIEV4 dGVuZCB0aGUgY29sbGVjdGlvbiBjbGFzcyBmb3IgZnRzIHRlbXBsYXRlCisg IGlmICghcGdCcm93c2VyLk5vZGVzWydjb2xsLWZ0c190ZW1wbGF0ZSddKSB7 CisgICAgdmFyIGZ0c190ZW1wbGF0ZXMgPSBwZ0FkbWluLkJyb3dzZXIuTm9k ZXNbJ2NvbGwtZnRzX3RlbXBsYXRlJ10gPQorICAgICAgcGdBZG1pbi5Ccm93 c2VyLkNvbGxlY3Rpb24uZXh0ZW5kKHsKKyAgICAgICAgbm9kZTogJ2Z0c190 ZW1wbGF0ZScsCisgICAgICAgIGxhYmVsOiAne3sgXygnRlRTIFRlbXBsYXRl cycpIH19JywKKyAgICAgICAgdHlwZTogJ2NvbGwtZnRzX3RlbXBsYXRlJywK KyAgICAgICAgY29sdW1uczogWyduYW1lJywgJ2Rlc2NyaXB0aW9uJ10KKyAg ICAgIH0pOworICB9OworCisgIC8vIEV4dGVuZCB0aGUgbm9kZSBjbGFzcyBm b3IgZnRzIHRlbXBsYXRlCisgIGlmICghcGdCcm93c2VyLk5vZGVzWydmdHNf dGVtcGxhdGUnXSkgeworICAgIHBnQWRtaW4uQnJvd3Nlci5Ob2Rlc1snZnRz X3RlbXBsYXRlJ10gPSBwZ0FkbWluLkJyb3dzZXIuTm9kZS5leHRlbmQoewor ICAgICAgcGFyZW50X3R5cGU6IFsnc2NoZW1hJywgJ2NhdGFsb2cnXSwKKyAg ICAgIHR5cGU6ICdmdHNfdGVtcGxhdGUnLAorICAgICAgY2FuRHJvcDogdHJ1 ZSwKKyAgICAgIGNhbkRyb3BDYXNjYWRlOiB0cnVlLAorICAgICAgbGFiZWw6 ICd7eyBfKCdGVFMgVGVtcGxhdGVzJykgfX0nLAorICAgICAgaGFzU1FMOiB0 cnVlLAorICAgICAgaGFzRGVwZW5kczogdHJ1ZSwKKyAgICAgIEluaXQ6IGZ1 bmN0aW9uKCkgeworCisgICAgICAgIC8vIEF2b2lkIG11bHRpcGxlIHJlZ2lz dHJhdGlvbiBvZiBtZW51cworICAgICAgICBpZiAodGhpcy5pbml0aWFsaXpl ZCkKKyAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5pbml0aWFs aXplZCA9IHRydWU7CisKKyAgICAgICAgLy8gQWRkIGNvbnRleHQgbWVudXMg Zm9yIGZ0cyB0ZW1wbGF0ZQorICAgICAgICBwZ0Jyb3dzZXIuYWRkX21lbnVz KFt7CisgICAgICAgICAgbmFtZTogJ2NyZWF0ZV9mdHNfdGVtcGxhdGVfb25f c2NoZW1hJywgbm9kZTogJ3NjaGVtYScsIG1vZHVsZTogdGhpcywKKyAgICAg ICAgICBhcHBsaWVzOiBbJ29iamVjdCcsICdjb250ZXh0J10sIGNhbGxiYWNr OiAnc2hvd19vYmpfcHJvcGVydGllcycsCisgICAgICAgICAgY2F0ZWdvcnk6 ICdjcmVhdGUnLCBwcmlvcml0eTogNCwgbGFiZWw6ICd7eyBfKCdGVFMgVGVt cGxhdGUuLi4nKSB9fScsCisgICAgICAgICAgaWNvbjogJ3djVGFiSWNvbiBp Y29uLWZ0c190ZW1wbGF0ZScsIGRhdGE6IHthY3Rpb246ICdjcmVhdGUnfQor ICAgICAgICAgIH0seworICAgICAgICAgIG5hbWU6ICdjcmVhdGVfZnRzX3Rl bXBsYXRlX29uX2NvbGwnLCBub2RlOiAnY29sbC1mdHNfdGVtcGxhdGUnLCBt b2R1bGU6IHRoaXMsCisgICAgICAgICAgYXBwbGllczogWydvYmplY3QnLCAn Y29udGV4dCddLCBjYWxsYmFjazogJ3Nob3dfb2JqX3Byb3BlcnRpZXMnLAor ICAgICAgICAgIGNhdGVnb3J5OiAnY3JlYXRlJywgcHJpb3JpdHk6IDQsIGxh YmVsOiAne3sgXygnRlRTIFRlbXBsYXRlLi4uJykgfX0nLAorICAgICAgICAg IGljb246ICd3Y1RhYkljb24gaWNvbi1mdHNfdGVtcGxhdGUnLCBkYXRhOiB7 YWN0aW9uOiAnY3JlYXRlJ30KKyAgICAgICAgICB9LHsKKyAgICAgICAgICBu YW1lOiAnY3JlYXRlX2Z0c190ZW1wbGF0ZScsIG5vZGU6ICdmdHNfdGVtcGxh dGUnLCBtb2R1bGU6IHRoaXMsCisgICAgICAgICAgYXBwbGllczogWydvYmpl Y3QnLCAnY29udGV4dCddLCBjYWxsYmFjazogJ3Nob3dfb2JqX3Byb3BlcnRp ZXMnLAorICAgICAgICAgIGNhdGVnb3J5OiAnY3JlYXRlJywgcHJpb3JpdHk6 IDQsIGxhYmVsOiAne3sgXygnRlRTIFRlbXBsYXRlLi4uJykgfX0nLAorICAg ICAgICAgIGljb246ICd3Y1RhYkljb24gaWNvbi1mdHNfdGVtcGxhdGUnLCBk YXRhOiB7YWN0aW9uOiAnY3JlYXRlJ30KKyAgICAgICAgICB9XSk7CisKKyAg ICAgIH0sCisKKyAgICAgIC8vIERlZmluaW5nIGJhY2tmb3JtIG1vZGVsIGZv ciBmdHMgdGVtcGxhdGUgbm9kZQorICAgICAgbW9kZWw6IHBnQWRtaW4uQnJv d3Nlci5Ob2RlLk1vZGVsLmV4dGVuZCh7CisgICAgICAgIGRlZmF1bHRzOiB7 CisgICAgICAgICAgbmFtZTogdW5kZWZpbmVkLCAgICAgIC8vIEZ0cyB0ZW1w bGF0ZSBuYW1lCisgICAgICAgICAgZGVzY3JpcHRpb246IHVuZGVmaW5lZCwg ICAvLyBDb21tZW50IG9uIHRlbXBsYXRlCisgICAgICAgICAgc2NoZW1hOiB1 bmRlZmluZWQsICAgICAgICAvLyBTY2hlbWEgbmFtZSB0byB3aGljaCB0ZW1w bGF0ZSBiZWxvbmdzCisgICAgICAgICAgdG1wbGluaXQ6IHVuZGVmaW5lZCwg ICAgICAvLyBJbml0IGZ1bmN0aW9uIGZvciBmdHMgdGVtcGxhdGUKKyAgICAg ICAgICB0bXBsbGV4aXplOiB1bmRlZmluZWQgICAgIC8vIExleGl6ZSBmdW5j dGlvbiBmb3IgZnRzIHRlbXBsYXRlCisgICAgICAgIH0sCisgICAgICAgIGlu aXRpYWxpemU6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgcGdBZG1pbi5C cm93c2VyLk5vZGUuTW9kZWwucHJvdG90eXBlLmluaXRpYWxpemUuYXBwbHko dGhpcywgYXJndW1lbnRzKTsKKyAgICAgICAgICAgIGlmIChfLmlzVW5kZWZp bmVkKHRoaXMuZ2V0KCdzY2hlbWEnKSkpIHsKKyAgICAgICAgICAgICAgICB0 aGlzLnNldCgnc2NoZW1hJywgdGhpcy5ub2RlX2luZm8uc2NoZW1hLl9pZCk7 CisgICAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgIC8vIERlZmlu aW5nIHNjaGVtYSBmb3IgZnRzIHRlbXBsYXRlCisgICAgICAgIHNjaGVtYTog W3sKKyAgICAgICAgICBpZDogJ25hbWUnLCBsYWJlbDogJ3t7IF8oJ05hbWUn KSB9fScsIGNlbGw6ICdzdHJpbmcnLAorICAgICAgICAgIHR5cGU6ICd0ZXh0 JywgY2VsbEhlYWRlckNsYXNzZXM6ICd3aWR0aF9wZXJjZW50XzUwJworICAg ICAgICB9LHsKKyAgICAgICAgICBpZDogJ29pZCcsIGxhYmVsOid7eyBfKCdP SUQnKSB9fScsIGNlbGw6ICdzdHJpbmcnLAorICAgICAgICAgIGVkaXRhYmxl OiBmYWxzZSwgdHlwZTogJ3RleHQnLCBkaXNhYmxlZDogdHJ1ZSwgbW9kZTpb J3Byb3BlcnRpZXMnXQorICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ3Nj aGVtYScsIGxhYmVsOiAne3sgXygnU2NoZW1hJyl9fScsIGNlbGw6ICdzdHJp bmcnLAorICAgICAgICAgIHR5cGU6ICd0ZXh0JywgbW9kZTogWydjcmVhdGUn LCdlZGl0J10sIG5vZGU6ICdzY2hlbWEnLAorICAgICAgICAgIGNvbnRyb2w6 ICdub2RlLWxpc3QtYnktaWQnCisgICAgICAgIH0seworICAgICAgICAgIGlk OiAnZGVzY3JpcHRpb24nLCBsYWJlbDone3sgXygnQ29tbWVudCcpIH19Jywg Y2VsbDogJ3N0cmluZycsCisgICAgICAgICAgdHlwZTogJ211bHRpbGluZScs IGNlbGxIZWFkZXJDbGFzc2VzOiAnd2lkdGhfcGVyY2VudF81MCcKKyAgICAg ICAgfSx7CisgICAgICAgICAgaWQ6ICd0bXBsaW5pdCcsIGxhYmVsOiAne3sg XygnSW5pdCBGdW5jdGlvbicpfX0nLCBncm91cDogJ3t7IF8oJ0RlZmluaXRp b24nKSB9fScsCisgICAgICAgICAgdHlwZTogJ3RleHQnLCBkaXNhYmxlZDog ZnVuY3Rpb24obSkgeyByZXR1cm4gIW0uaXNOZXcoKTsgfSwKKyAgICAgICAg ICBjb250cm9sOiAnbm9kZS1hamF4LW9wdGlvbnMnLCB1cmw6ICdnZXRfaW5p dCcKKyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICd0bXBsbGV4aXplJywg bGFiZWw6ICd7eyBfKCdMZXhpemUgRnVuY3Rpb24nKX19JywgZ3JvdXA6ICd7 eyBfKCdEZWZpbml0aW9uJykgfX0nLAorICAgICAgICAgIHR5cGU6ICd0ZXh0 JywgZGlzYWJsZWQ6IGZ1bmN0aW9uKG0pIHsgcmV0dXJuICFtLmlzTmV3KCk7 IH0sCisgICAgICAgICAgY29udHJvbDogJ25vZGUtYWpheC1vcHRpb25zJywg dXJsOiAnZ2V0X2xleGl6ZScKKyAgICAgICAgfV0sCisKKyAgICAgICAgLyoK KyAgICAgICAgICogVHJpZ2dlcnMgY29udHJvbCBzcGVjaWZpYyBlcnJvciBt ZXNzYWdlcyBmb3IgdGVtcGxhdGUgbmFtZSwKKyAgICAgICAgICogbGV4aXpl IGZ1bmN0aW9uIGFuZCBzY2hlbWEsIGlmIGFueSBvbmUgb2YgdGhlbSBpcyBu b3Qgc3BlY2lmaWVkCisgICAgICAgICAqIHdoaWxlIGNyZWF0aW5nIG5ldyBm dHMgdGVtcGxhdGUKKyAgICAgICAgICovCisgICAgICAgIHZhbGlkYXRlOiBm dW5jdGlvbihrZXlzKXsKKyAgICAgICAgICB2YXIgbmFtZSA9IHRoaXMuZ2V0 KCduYW1lJyk7CisgICAgICAgICAgdmFyIGxleGl6ZSA9IHRoaXMuZ2V0KCd0 bXBsbGV4aXplJyk7CisgICAgICAgICAgdmFyIHNjaGVtYSA9IHRoaXMuZ2V0 KCdzY2hlbWEnKTsKKworICAgICAgICAgIC8vIFZhbGlkYXRlIGZ0cyB0ZW1w bGF0ZSBuYW1lCisgICAgICAgICAgaWYgKF8uaXNVbmRlZmluZWQobmFtZSkg fHwgXy5pc051bGwobmFtZSkgfHwgU3RyaW5nKG5hbWUpLnJlcGxhY2UoL15c cyt8XHMrJC9nLCAnJykgPT0gJycpIHsKKyAgICAgICAgICAgIHZhciBtc2cg PSAne3sgXygnTmFtZSBtdXN0IGJlIHNwZWNpZmllZCEnKSB9fSc7CisgICAg ICAgICAgICB0aGlzLmVycm9yTW9kZWwuc2V0KCduYW1lJywgbXNnKTsKKyAg ICAgICAgICAgIHJldHVybiBtc2c7CisgICAgICAgICAgfQorCisgICAgICAg ICAgLy8gVmFsaWRhdGUgbGV4aXplIGZ1bmN0aW9uIGNvbnRyb2wKKyAgICAg ICAgICBlbHNlIGlmIChfLmlzVW5kZWZpbmVkKGxleGl6ZSkgfHwgXy5pc051 bGwobGV4aXplKSB8fCBTdHJpbmcobGV4aXplKS5yZXBsYWNlKC9eXHMrfFxz KyQvZywgJycpID09ICcnKSB7CisgICAgICAgICAgICB2YXIgbXNnID0gJ3t7 IF8oJ0xleGl6ZSBmdW5jdGlvbiBtdXN0IGJlIHNlbGVjdGVkIScpIH19JzsK KyAgICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC5zZXQoJ3RtcGxsZXhpemUn LCBtc2cpOworICAgICAgICAgICAgcmV0dXJuIG1zZzsKKyAgICAgICAgICB9 CisKKyAgICAgICAgICAvLyBWYWxpZGF0ZSBzY2hlbWEgZm9yIGZ0cyB0ZW1w bGF0ZQorICAgICAgICAgIGVsc2UgaWYgKF8uaXNVbmRlZmluZWQoc2NoZW1h KSB8fCBfLmlzTnVsbChzY2hlbWEpIHx8IFN0cmluZyhzY2hlbWEpLnJlcGxh Y2UoL15ccyt8XHMrJC9nLCAnJykgPT0gJycpIHsKKyAgICAgICAgICAgIHZh ciBtc2cgPSAne3sgXygnU2NoZW1hIG11c3QgYmUgc2VsZWN0ZWQhJykgfX0n OworICAgICAgICAgICAgdGhpcy5lcnJvck1vZGVsLnNldCgnc2NoZW1hJywg bXNnKTsKKyAgICAgICAgICAgIHJldHVybiBtc2c7CisgICAgICAgICAgfQor ICAgICAgICAgIGVsc2UgdGhpcy5lcnJvck1vZGVsLmNsZWFyKCk7CisKKyAg ICAgICAgICB0aGlzLnRyaWdnZXIoJ29uLXN0YXR1cy1jbGVhcicpOworICAg ICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CisgICAgICB9KQorICAg IH0pOworICB9CisKK3JldHVybiBwZ0Jyb3dzZXIuTm9kZXNbJ2NvbGwtZnRz X3RlbXBsYXRlJ107Cit9KTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdHNfdGVtcGxhdGVzL3Rl bXBsYXRlcy9mdHNfdGVtcGxhdGUvc3FsLzkuMV9wbHVzL2NyZWF0ZS5zcWwg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy9mdHNfdGVtcGxhdGVzL3RlbXBsYXRlcy9mdHNf dGVtcGxhdGUvc3FsLzkuMV9wbHVzL2NyZWF0ZS5zcWwKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2EyOTBiMwotLS0gL2Rldi9udWxs CisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z0c190ZW1wbGF0ZXMvdGVtcGxhdGVz L2Z0c190ZW1wbGF0ZS9zcWwvOS4xX3BsdXMvY3JlYXRlLnNxbApAQCAtMCww ICsxLDExIEBACit7IyBDUkVBVEUgVEVYVCBTRUFSQ0ggVEVNUExBVEUgU3Rh dGVtZW50ICN9Cit7JSBpZiBkYXRhIGFuZCBkYXRhLnNjaGVtYSBhbmQgZGF0 YS5uYW1lIGFuZCBkYXRhLnRtcGxsZXhpemUgJX0KK0NSRUFURSBURVhUIFNF QVJDSCBURU1QTEFURSB7eyBjb25ufHF0SWRlbnQoZGF0YS5zY2hlbWEsIGRh dGEubmFtZSkgfX0gKAoreyUgaWYgZGF0YS50bXBsaW5pdCBhbmQgZGF0YS50 bXBsaW5pdCAhPSAnLSclfSAgICBJTklUID0ge3tkYXRhLnRtcGxpbml0fX0s eyUgZW5kaWYgJX0KKyAgICBMRVhJWkUgPSB7e2RhdGEudG1wbGxleGl6ZX19 CispOworeyMgRGVzY3JpcHRpb24gZm9yIFRFWFQgU0VBUkNIIFRFTVBMQVRF ICN9Cit7JSBpZiBkYXRhLmRlc2NyaXB0aW9uICV9CitDT01NRU5UIE9OIFRF WFQgU0VBUkNIIFRFTVBMQVRFIHt7IGNvbm58cXRJZGVudChkYXRhLnNjaGVt YSwgZGF0YS5uYW1lKSB9fQorICAgICAgSVMge3sgZGF0YS5kZXNjcmlwdGlv bnxxdExpdGVyYWwgfX07Cit7JSBlbmRpZiAlfXslIGVuZGlmICV9ClwgTm8g bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvZnRzX3RlbXBsYXRlcy90ZW1wbGF0ZXMvZnRzX3RlbXBsYXRlL3Nx bC85LjFfcGx1cy9kZWxldGUuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnRzX3Rl bXBsYXRlcy90ZW1wbGF0ZXMvZnRzX3RlbXBsYXRlL3NxbC85LjFfcGx1cy9k ZWxldGUuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu LmNjYThkYzQKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9m dHNfdGVtcGxhdGVzL3RlbXBsYXRlcy9mdHNfdGVtcGxhdGUvc3FsLzkuMV9w bHVzL2RlbGV0ZS5zcWwKQEAgLTAsMCArMSwyMyBAQAoreyMgRkVUQ0ggVEVY VCBTRUFSQ0ggVEVNUExBVEUgTkFNRSBTdGF0ZW1lbnQgI30KK3slIGlmIHRp ZCAlfQorU0VMRUNUCisgICAgdC50bXBsbmFtZSBBUyBuYW1lLAorICAgICgK KyAgICBTRUxFQ1QKKyAgICAgICAgbnNwbmFtZQorICAgIEZST00KKyAgICAg ICAgcGdfbmFtZXNwYWNlCisgICAgV0hFUkUKKyAgICAgICAgb2lkID0gdC50 bXBsbmFtZXNwYWNlCisgICAgKSBhcyBzY2hlbWEKK0ZST00KKyAgICBwZ190 c190ZW1wbGF0ZSB0IExFRlQgSk9JTiBwZ19kZXNjcmlwdGlvbiBkCisgICAg T04gZC5vYmpvaWQ9dC5vaWQgQU5EIGQuY2xhc3NvaWQ9J3BnX3RzX3RlbXBs YXRlJzo6cmVnY2xhc3MKK1dIRVJFCisgICAgdC5vaWQgPSB7e3RpZH19OjpP SUQ7Cit7JSBlbmRpZiAlfQorCit7IyBEUk9QIFRFWFQgU0VBUkNIIFRFTVBM QVRFIFN0YXRlbWVudCAjfQoreyUgaWYgc2NoZW1hIGFuZCBuYW1lICV9CitE Uk9QIFRFWFQgU0VBUkNIIFRFTVBMQVRFIHt7Y29ubnxxdElkZW50KHNjaGVt YSl9fS57e2Nvbm58cXRJZGVudChuYW1lKX19IHslIGlmIGNhc2NhZGUgJX1D QVNDQURFeyVlbmRpZiV9OworeyUgZW5kaWYgJX0KXCBObyBuZXdsaW5lIGF0 IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdHNf dGVtcGxhdGVzL3RlbXBsYXRlcy9mdHNfdGVtcGxhdGUvc3FsLzkuMV9wbHVz L2Z1bmN0aW9ucy5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdHNfdGVtcGxhdGVz L3RlbXBsYXRlcy9mdHNfdGVtcGxhdGUvc3FsLzkuMV9wbHVzL2Z1bmN0aW9u cy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmZl OWUwMgotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z0c190 ZW1wbGF0ZXMvdGVtcGxhdGVzL2Z0c190ZW1wbGF0ZS9zcWwvOS4xX3BsdXMv ZnVuY3Rpb25zLnNxbApAQCAtMCwwICsxLDIzIEBACit7IyBGRVRDSCBsZXhp emUgZnVuY3Rpb25zIGZvciBURVhUIFNFQVJDSCBURU1QTEFURSAjfQoreyUg aWYgbGV4aXplICV9CitTRUxFQ1QKKyAgICBwcm9uYW1lLCBuc3BuYW1lCitG Uk9NCisgICAgcGdfcHJvYyBKT0lOIHBnX25hbWVzcGFjZSBuIE9OIG4ub2lk PXByb25hbWVzcGFjZQorV0hFUkUKKyAgICBwcm9yZXR0eXBlPTIyODEKKyAg ICBBTkQgcHJvYXJndHlwZXM9JzIyODEgMjI4MSAyMjgxIDIyODEnCitPUkRF UiBCWSBwcm9uYW1lOworeyUgZW5kaWYgJX0KKworeyMgRkVUQ0ggaW5pdCBm dW5jdGlvbnMgZm9yIFRFWFQgU0VBUkNIIFRFTVBMQVRFICN9Cit7JSBpZiBp bml0ICV9CitTRUxFQ1QKKyAgICBwcm9uYW1lLCBuc3BuYW1lCitGUk9NCisg ICAgcGdfcHJvYyBKT0lOIHBnX25hbWVzcGFjZSBuIE9OIG4ub2lkPXByb25h bWVzcGFjZQorV0hFUkUKKyAgICBwcm9yZXR0eXBlPTIyODEgYW5kIHByb2Fy Z3R5cGVzPScyMjgxJworT1JERVIgQlkKKyAgICBwcm9uYW1lOworeyUgZW5k aWYgJX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z0c190ZW1wbGF0 ZXMvdGVtcGxhdGVzL2Z0c190ZW1wbGF0ZS9zcWwvOS4xX3BsdXMvbm9kZXMu c3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvZnRzX3RlbXBsYXRlcy90ZW1wbGF0ZXMv ZnRzX3RlbXBsYXRlL3NxbC85LjFfcGx1cy9ub2Rlcy5zcWwKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODUwMjQ3ZQotLS0gL2Rldi9u dWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z0c190ZW1wbGF0ZXMvdGVtcGxh dGVzL2Z0c190ZW1wbGF0ZS9zcWwvOS4xX3BsdXMvbm9kZXMuc3FsCkBAIC0w LDAgKzEsMTIgQEAKK1NFTEVDVAorICAgIG9pZCwgdG1wbG5hbWUgYXMgbmFt ZQorRlJPTQorICAgIHBnX3RzX3RlbXBsYXRlIHRtcGwKK1dIRVJFCit7JSBp ZiBzY2lkICV9CisgICAgdG1wbC50bXBsbmFtZXNwYWNlID0ge3tzY2lkfX06 Ok9JRAoreyUgZWxpZiB0aWQgJX0KKyAgICB0bXBsLm9pZCA9IHt7dGlkfX06 Ok9JRAoreyUgZW5kaWYgJX0KKworT1JERVIgQlkgbmFtZQpcIE5vIG5ld2xp bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L2Z0c190ZW1wbGF0ZXMvdGVtcGxhdGVzL2Z0c190ZW1wbGF0ZS9zcWwvOS4x X3BsdXMvcHJvcGVydGllcy5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdHNfdGVt cGxhdGVzL3RlbXBsYXRlcy9mdHNfdGVtcGxhdGUvc3FsLzkuMV9wbHVzL3By b3BlcnRpZXMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLjJiNWE5NWYKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy9mdHNfdGVtcGxhdGVzL3RlbXBsYXRlcy9mdHNfdGVtcGxhdGUvc3FsLzku MV9wbHVzL3Byb3BlcnRpZXMuc3FsCkBAIC0wLDAgKzEsMjcgQEAKK3sjIEdl dCBwcm9wZXJ0aWVzIGZvciBGVFMgVEVNUExBVEUgI30KK1NFTEVDVAorICAg IHRtcGwub2lkLAorICAgIHRtcGwudG1wbG5hbWUgYXMgbmFtZSwKKyAgICB0 bXBsLnRtcGxpbml0LAorICAgIHRtcGwudG1wbGxleGl6ZSwKKyAgICBkZXNj cmlwdGlvbiwKKyAgICB0bXBsLnRtcGxuYW1lc3BhY2UgQVMgc2NoZW1hCitG Uk9NCisgICAgcGdfdHNfdGVtcGxhdGUgdG1wbAorICAgIExFRlQgT1VURVIg Sk9JTiBwZ19kZXNjcmlwdGlvbiBkZXMKK09OCisgICAgKAorICAgIGRlcy5v YmpvaWQ9dG1wbC5vaWQKKyAgICBBTkQgZGVzLmNsYXNzb2lkPSdwZ190c190 ZW1wbGF0ZSc6OnJlZ2NsYXNzCisgICAgKQorV0hFUkUKK3slIGlmIHNjaWQg JX0KKyAgICB0bXBsLnRtcGxuYW1lc3BhY2UgPSB7e3NjaWR9fTo6T0lECit7 JSBlbGlmIG5hbWUgJX0KKyAgICB0bXBsLnRtcGxuYW1lID0ge3tuYW1lfHF0 TGl0ZXJhbH19Cit7JSBlbmRpZiAlfQoreyUgaWYgdGlkICV9CisgICAgQU5E IHRtcGwub2lkID0ge3t0aWR9fTo6T0lECit7JSBlbmRpZiAlfQorT1JERVIg QlkKKyAgICB0bXBsLnRtcGxuYW1lClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg ZmlsZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnRzX3RlbXBsYXRl cy90ZW1wbGF0ZXMvZnRzX3RlbXBsYXRlL3NxbC85LjFfcGx1cy9zY2hlbWEu c3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvZnRzX3RlbXBsYXRlcy90ZW1wbGF0ZXMv ZnRzX3RlbXBsYXRlL3NxbC85LjFfcGx1cy9zY2hlbWEuc3FsCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmN2RkYjMKLS0tIC9kZXYv bnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdHNfdGVtcGxhdGVzL3RlbXBs YXRlcy9mdHNfdGVtcGxhdGUvc3FsLzkuMV9wbHVzL3NjaGVtYS5zcWwKQEAg LTAsMCArMSwxOSBAQAoreyMgU0NIRU1BIG5hbWUgRkVUQ0ggc3RhdGVtZW50 ICN9Cit7JSBpZiBkYXRhLnNjaGVtYSAlfQorU0VMRUNUCisgICAgbnNwbmFt ZQorRlJPTQorICAgIHBnX25hbWVzcGFjZQorV0hFUkUKKyAgICBvaWQgPSB7 e2RhdGEuc2NoZW1hfX06Ok9JRAorCit7JSBlbGlmIGRhdGEuaWQgJX0KK1NF TEVDVAorICAgIG5zcG5hbWUKK0ZST00KKyAgICBwZ19uYW1lc3BhY2UgbnNw CisgICAgTEVGVCBKT0lOIHBnX3RzX3RlbXBsYXRlIHRzCisgICAgT04gdHMu dG1wbG5hbWVzcGFjZSA9IG5zcC5vaWQKK1dIRVJFCisgICAgdHMub2lkID0g e3tkYXRhLmlkfX06Ok9JRAoreyUgZW5kaWYgJX0KXCBObyBuZXdsaW5lIGF0 IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdHNf dGVtcGxhdGVzL3RlbXBsYXRlcy9mdHNfdGVtcGxhdGUvc3FsLzkuMV9wbHVz L3NxbC5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdHNfdGVtcGxhdGVzL3RlbXBs YXRlcy9mdHNfdGVtcGxhdGUvc3FsLzkuMV9wbHVzL3NxbC5zcWwKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjY2MTA3OAotLS0gL2Rl di9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z0c190ZW1wbGF0ZXMvdGVt cGxhdGVzL2Z0c190ZW1wbGF0ZS9zcWwvOS4xX3BsdXMvc3FsLnNxbApAQCAt MCwwICsxLDQxIEBACit7IyBSZXZlcnNlIGVuZ2luZWVyZWQgc3FsIGZvciBG VFMgVEVNUExBVEUgI30KK1NFTEVDVAorICAgIGFycmF5X3RvX3N0cmluZyhh cnJheV9hZ2coc3FsKSwgRSdcblxuJykgYXMgc3FsCitGUk9NCisgICAgKAor ICAgIFNFTEVDVAorICAgICAgICBFJy0tIFRleHQgU2VhcmNoIFRlbXBsYXRl OiAnIHx8IG5zcG5hbWUgfHwgRScuJyB8fCB0bXBsLnRtcGxuYW1lIHx8Cisg ICAgICAgIEUnXG5cbi0tIERST1AgVEVYVCBTRUFSQ0ggVEVNUExBVEUgJyB8 fCBuc3BuYW1lIHx8IEUnLicgfHwgdG1wbC50bXBsbmFtZSB8fAorICAgICAg ICBFJ1xuXG5DUkVBVEUgVEVYVCBTRUFSQ0ggVEVNUExBVEUgJyB8fCBuc3Bu YW1lIHx8IEUnLicgfHwgIHRtcGwudG1wbG5hbWUgfHwgRScgKFxuJyB8fAor ICAgICAgICBDQVNFCisgICAgICAgICAgICBXSEVOIHRtcGwudG1wbGluaXQg IT0gJy0nOjpyZWdjbGFzcyBUSEVOIEUnICAgIElOSVQgPSAnIHx8IHRtcGwu dG1wbGluaXQgfHwgRScsXG4nCisgICAgICAgICAgICBFTFNFICcnIEVORCB8 fAorICAgICAgICBFJyAgICBMRVhJWkUgPSAnIHx8IHRtcGwudG1wbGxleGl6 ZSB8fCBFJ1xuKTsnIHx8CisgICAgICAgIENBU0UKKyAgICAgICAgICAgIFdI RU4gYS5kZXNjcmlwdGlvbiBJUyBOT1QgTlVMTCBUSEVOCisgICAgICAgICAg ICAgICAgRSdcblxuQ09NTUVOVCBPTiBURVhUIFNFQVJDSCBURU1QTEFURSAn IHx8IG5zcG5hbWUgfHwgRScuJyB8fCB0bXBsLnRtcGxuYW1lIHx8CisgICAg ICAgICAgICAgICAgRScgSVMgJyB8fCBwZ19jYXRhbG9nLnF1b3RlX2xpdGVy YWwoZGVzY3JpcHRpb24pIHx8IEUnOycKKyAgICAgICAgICAgIEVMU0UgJycg IEVORCBhcyBzcWwKK0ZST00KKyAgICBwZ190c190ZW1wbGF0ZSB0bXBsCisg ICAgTEVGVCBKT0lOICgKKyAgICAgICAgU0VMRUNUCisgICAgICAgICAgICBk ZXMuZGVzY3JpcHRpb24gYXMgZGVzY3JpcHRpb24sCisgICAgICAgICAgICBk ZXMub2Jqb2lkIGFzIGRlc2NvaWQKKyAgICAgICAgRlJPTQorICAgICAgICAg ICAgcGdfZGVzY3JpcHRpb24gZGVzCisgICAgICAgIFdIRVJFCisgICAgICAg ICAgICBkZXMub2Jqb2lkPXt7dGlkfX06Ok9JRCBBTkQgZGVzLmNsYXNzb2lk PSdwZ190c190ZW1wbGF0ZSc6OnJlZ2NsYXNzCisgICAgKSBhIE9OIChhLmRl c2NvaWQgPSB0bXBsLm9pZCkKKyAgICBMRUZUIEpPSU4gKAorICAgICAgICBT RUxFQ1QKKyAgICAgICAgICAgIG5zcG5hbWUsCisgICAgICAgICAgICBuc3Au b2lkIGFzIG5vaWQKKyAgICAgICAgRlJPTQorICAgICAgICAgICAgcGdfbmFt ZXNwYWNlIG5zcAorICAgICAgICBXSEVSRQorICAgICAgICAgICAgb2lkID0g e3tzY2lkfX06Ok9JRAorICAgICkgYiBPTiAoYi5ub2lkID0gdG1wbC50bXBs bmFtZXNwYWNlKQorV0hFUkUKKyAgICB0bXBsLm9pZD17e3RpZH19OjpPSUQK KykgYXMgYzsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n aXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy9mdHNfdGVtcGxhdGVzL3RlbXBsYXRlcy9m dHNfdGVtcGxhdGUvc3FsLzkuMV9wbHVzL3VwZGF0ZS5zcWwgYi93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy9mdHNfdGVtcGxhdGVzL3RlbXBsYXRlcy9mdHNfdGVtcGxhdGUv c3FsLzkuMV9wbHVzL3VwZGF0ZS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMC4uNjIwOTgwNQotLS0gL2Rldi9udWxsCisrKyBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL2Z0c190ZW1wbGF0ZXMvdGVtcGxhdGVzL2Z0c190ZW1w bGF0ZS9zcWwvOS4xX3BsdXMvdXBkYXRlLnNxbApAQCAtMCwwICsxLDIyIEBA Cit7IyBVUERBVEUgc3RhdGVtZW50IGZvciBURVhUIFNFQVJDSCBURU1QTEFU RSAjfQoreyUgaWYgZGF0YSAlfQoreyUgaWYgZGF0YS5uYW1lIGFuZCBkYXRh Lm5hbWUgIT0gb19kYXRhLm5hbWUgJX0KK0FMVEVSIFRFWFQgU0VBUkNIIFRF TVBMQVRFIHt7Y29ubnxxdElkZW50KG9fZGF0YS5zY2hlbWEpfX0ue3tjb25u fHF0SWRlbnQob19kYXRhLm5hbWUpfX0KKyAgICBSRU5BTUUgVE8ge3tkYXRh Lm5hbWV9fTsKK3slIGVuZGlmICV9CisKK3sjaW4gY2FzZSBvZiByZW5hbWUs IHVzZSBuZXcgZnRzIHRlbXBsYXRlIG5hbWUgI30KK3slIGlmIGRhdGEubmFt ZSBhbmQgZGF0YS5uYW1lICE9IG9fZGF0YS5uYW1lICV9Cit7JSBzZXQgbmFt ZSA9IGRhdGEubmFtZSAlfQoreyUgZWxzZSAlfQoreyUgc2V0IG5hbWUgPSBv X2RhdGEubmFtZSAlfQoreyUgZW5kaWYgJX0KK3slIGlmIGRhdGEuc2NoZW1h IGFuZCBkYXRhLnNjaGVtYSAhPSBvX2RhdGEuc2NoZW1hICV9CitBTFRFUiBU RVhUIFNFQVJDSCBURU1QTEFURSB7e2Nvbm58cXRJZGVudChvX2RhdGEuc2No ZW1hKX19Lnt7Y29ubnxxdElkZW50KG5hbWUpfX0KKyAgICBTRVQgU0NIRU1B IHt7ZGF0YS5zY2hlbWF9fTsKK3slIGVuZGlmICV9Cit7JSBpZiBkYXRhLmRl c2NyaXB0aW9uICE9IG9fZGF0YS5kZXNjcmlwdGlvbiAlfQorQ09NTUVOVCBP TiBURVhUIFNFQVJDSCBURU1QTEFURSB7e2Nvbm58cXRJZGVudChvX2RhdGEu c2NoZW1hKX19Lnt7Y29ubnxxdElkZW50KG5hbWUpfX0KKyAgICBJUyB7eyBk YXRhLmRlc2NyaXB0aW9ufHF0TGl0ZXJhbCB9fTsKK3slIGVuZGlmICV9Cit7 JSBlbmRpZiAlfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK --001a11438b28bd4da6052f18289d 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 --001a11438b28bd4da6052f18289d--