Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1b3RY0-0006aM-9N for pgadmin-hackers@arkaria.postgresql.org; Thu, 19 May 2016 17:15:45 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84_2) (envelope-from ) id 1b3RXz-0002Th-KA for pgadmin-hackers@arkaria.postgresql.org; Thu, 19 May 2016 17:15:43 +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 1b3RRJ-0001fW-4N for pgadmin-hackers@postgresql.org; Thu, 19 May 2016 17:08:49 +0000 Received: from mail-oi0-x234.google.com ([2607:f8b0:4003:c06::234]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.84_2) (envelope-from ) id 1b3RQm-0002yh-FR for pgadmin-hackers@postgresql.org; Thu, 19 May 2016 17:08:48 +0000 Received: by mail-oi0-x234.google.com with SMTP id x19so139156665oix.2 for ; Thu, 19 May 2016 10:08:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb-com.20150623.gappssmtp.com; s=20150623; h=mime-version:in-reply-to:references:date:message-id:subject:from:to; bh=V5DVUUezAcm9xupRSZT3V97YKuZvOCD52u+OFhomG+g=; b=m1AlZqrKjDRRYs2UeKiwJc6Hp57W4qlI/orENc1Hp3Vi/3RmWiv6oYmgqAN69VzmOt SYCZKOblq3NaWjHDwitE5oxWCmM7BR7r+v3sVgYniPkyzCRansHm5Lu4k1jxrmdfTPTw sjc+FG9IkZdpXCaoHvqdnx/Q1v7O5EP8kjIkyfVvv+aR+Z2elipTCYZQzkfsY0ws+1pa tzhvBeuYkqhWdA56l5Bj46IzaeTB7otKP20SE+YchwwOU31zNIZxDzF7m2sagYlreno5 MkLSWPDMyzyVxXTGAdV9aNgVewiwnnyPm8K+R24GEClfklhw5htiSWSQ4/QC679VOenA /cgw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:date :message-id:subject:from:to; bh=V5DVUUezAcm9xupRSZT3V97YKuZvOCD52u+OFhomG+g=; b=XgV+WJhZxsRXxA3ZxkqObIYyXRoa7Ydz4qUbIE/xynr7QQoL/HkUfNeLjffaFZKTSb Hzg69ZmO1pxmMbwmbSnpBxofCA6PS4Z7fMAPndsMji4CCTOwoBS+oQcZNtWolKCvF8/b Qu3x0ZYRJRhE3bkcx1PF4zDbGfyFxFJf1KU6qhUHAfVZz1AY37E1tafPQeSaSe6DM8J9 ajUfKXHZOaZt7y0RRhpQCtsqg1E+2y0hh5x2DguAFtYszTJGzzb4BRX8lPjq7HjsjY6X 9pQSSOo8jXK4Vb4X5ZgQ6aDDb2sLfknER035jX1mNqgJP2HKVqCi4dZ4yguHfd5q/O/H UnIQ== X-Gm-Message-State: AOPr4FWR/Cf+qWH63OdJDY4xqutNbrO9gV5WJFrs5b3fRcrmxrfTL2uJ/NPHCwhDDEJNAmzwW1jHikQtxmgeoaQe MIME-Version: 1.0 X-Received: by 10.157.5.10 with SMTP id 10mr3462341otw.125.1463677694337; Thu, 19 May 2016 10:08:14 -0700 (PDT) Received: by 10.157.5.172 with HTTP; Thu, 19 May 2016 10:08:14 -0700 (PDT) In-Reply-To: References: Date: Thu, 19 May 2016 22:38:14 +0530 Message-ID: Subject: Re: [PATCH] Tables node (pgAdmin4) From: Harshal Dhumal To: pgadmin-hackers Content-Type: multipart/mixed; boundary=94eb2c045dc209dbb8053335054f 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 --94eb2c045dc209dbb8053335054f Content-Type: multipart/alternative; boundary=94eb2c045dc209dbb2053335054d --94eb2c045dc209dbb2053335054d Content-Type: text/plain; charset=UTF-8 Hi, PFA updated patch for table and all it's child nodes (Version 9). This patch does not depend on any of existing table node patch. Major change in this patch: Unlike pgAdmin3 now in table create mode any constraint(s) created (but not saved) will listen to table column changes and adapt themselves accordingly. For e.g. In table create mode user adds column definition with name "col1" then adds constraint which includes column "col1". Now user changes column name to "col2" then constraint will listen to this change and adapt the column name from "col1" to "col2" in constraint definition. Also if column "col2" is removed then constraint will also remove the column "col2" from it's definition. -- *Harshal Dhumal* *Software Engineer * EenterpriseDB On Wed, May 18, 2016 at 7:47 PM, Surinder Kumar < surinder.kumar@enterprisedb.com> wrote: > Hi, > > Please find add-on patch for Column node. > Issue fixed: > 1. Column node, 'Primary key' switch should be hidden under view node, > refer column node visible condition for table node > 2. 'Inherited from' column should be hidden. > 2. Other columns except Default value should be disabled. > > > On Wed, May 18, 2016 at 4:43 PM, Murtuza Zabuawala < > murtuza.zabuawala@enterprisedb.com> wrote: > >> Hi, >> >> PFA table add-on patch version 8.4. (apply after 8.3) >> This includes changes for trigger node issues. >> >> >> -- >> Regards, >> Murtuza Zabuawala >> EnterpriseDB: http://www.enterprisedb.com >> The Enterprise PostgreSQL Company >> >> On Wed, May 18, 2016 at 4:19 PM, Murtuza Zabuawala < >> murtuza.zabuawala@enterprisedb.com> wrote: >> >>> Hi, >>> >>> PFA table add-on patch version 8.3. (apply after 8.2) >>> >>> >>> -- >>> Regards, >>> Murtuza Zabuawala >>> EnterpriseDB: http://www.enterprisedb.com >>> The Enterprise PostgreSQL Company >>> >>> On Wed, May 18, 2016 at 3:20 PM, Murtuza Zabuawala < >>> murtuza.zabuawala@enterprisedb.com> wrote: >>> >>>> Hi, >>>> >>>> PFA table add-on patch version 8.2 >>>> >>>> -- >>>> Regards, >>>> Murtuza Zabuawala >>>> EnterpriseDB: http://www.enterprisedb.com >>>> The Enterprise PostgreSQL Company >>>> >>>> On Wed, May 18, 2016 at 2:42 PM, Harshal Dhumal < >>>> harshal.dhumal@enterprisedb.com> wrote: >>>> >>>>> Hi, >>>>> >>>>> PFA patch for table node (version 8.1). apply this patch on version 7 >>>>> patch. Not all issue are fixed in this patch. Murtuza will be sending >>>>> version 8.2 witch will have resolution for remaining issues. Apply version >>>>> 8.2 patch on version 8.1 >>>>> >>>>> -- >>>>> *Harshal Dhumal* >>>>> *Software Engineer * >>>>> >>>>> >>>>> >>>>> EenterpriseDB >>>>> >>>>> On Tue, May 17, 2016 at 10:12 PM, Sanket Mehta < >>>>> sanket.mehta@enterprisedb.com> wrote: >>>>> >>>>>> Hi Harshal, >>>>>> >>>>>> >>>>>> Below are my review comments: >>>>>> >>>>>> I got below warning when I tried to apply the patch for table node >>>>>> as mentioned below: >>>>>> >>>>>> Table creation: >>>>>> >>>>>> - Trailing white spaces warnings >>>>>> >>>>>> $ git apply >>>>>> /projects/patches/pgadmin4/Table/table_14_May_V6.patch >>>>>> >>>>>> /projects/patches/pgadmin4/Table/table_14_May_V6.patch:6008: trailing >>>>>> whitespace. >>>>>> return false; >>>>>> >>>>>> /projects/patches/pgadmin4/Table/table_14_May_V6.patch:6016: trailing >>>>>> whitespace. >>>>>> return false; >>>>>> warning: 2 lines add whitespace errors. >>>>>> >>>>> >>>>> Fixed (These were introduced due to rules node.) >>>>> >>>>> >>>>>> >>>>>> - In Table creation dialog, while adding a new primary key, it >>>>>> does not allow to change the tablespace to empty. (which is not the case in >>>>>> case of tablespace in table) >>>>>> >>>>>> Fixed >>>>> >>>>>> >>>>>> - In Table creation dialog, while adding a new column, data type >>>>>> and name field must be mandatory. otherwise while clicking on save it gives >>>>>> below error >>>>>> >>>>>> File >>>>>> "/projects/pgadmin4/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/__init__.py", >>>>>> line 1319, in _parse_format_columns >>>>>> c['cltype'] = self._cltype_formatter(c['cltype']) >>>>>> KeyError: 'cltype >>>>>> >>>>> Fixed >>>>> >>>>> >>>>>> >>>>>> - In Table creation dialog, While adding a new column, in primary >>>>>> check box is needed to click twice in order to check it. Ideally it should >>>>>> be checked by only one click. >>>>>> >>>>>> This is Backgrid behaviour. >>>>> >>>>>> >>>>>> - In Table creation dialog, While adding a new column, primary >>>>>> key should not be allowed to added unless user has provided name and data >>>>>> type for at least one column. >>>>>> >>>>>> Fixed >>>>> >>>>>> >>>>>> - currently if user has clicked on add column button and >>>>>> immediately click on add primary key button, it will add a row in primary >>>>>> key data grid >>>>>> >>>>>> Fixed >>>>> >>>>>> >>>>>> - When delete table/drop cascade is apply on any table, i got a >>>>>> javascript error as mentioned below >>>>>> >>>>>> node.js:94 Uncaught TypeError: self.canDrop.apply is >>>>>> not a function >>>>>> >>>>> Already fixed in other commit. >>>>> >>>>> >>>>>> >>>>>> - Once the above error generated, every time user tries to open a >>>>>> context menu by right clicking on any existing table, that same error comes >>>>>> >>>>>> Already fixed in other commit. >>>>> >>>>>> >>>>>> - In table creation dialog, if table is inherited from another >>>>>> table, if a new primary key is added manually there, the create sql will >>>>>> not have an entry for primary key >>>>>> >>>>>> Fixed >>>>> >>>>>> >>>>>> - In table creation dialog, if primary key check box is checked >>>>>> while adding the row, a new row is added in primary key datagrid but >>>>>> unchecking the primary key checkbox from column datagrid, does not removes >>>>>> that row from primary key data grid. >>>>>> >>>>>> Fixed. >>>>> >>>>>> >>>>>> - In AutoVacuum tab, if user provides any invalid value to any >>>>>> parameter, then a error message should be prompted, only background color >>>>>> change would not tell user to change the value. >>>>>> >>>>>> Expected behaviour. >>>>> >>>>>> >>>>>> - In table creation dialog, security label are not being added. >>>>>> javascript error is coming as mentioned below: >>>>>> {"success": 0, "info": "", "result": null, "data": null, >>>>>> "errormsg": "can't adapt type 'Undefined'"} >>>>>> >>>>>> Fixed >>>>> >>>>>> >>>>>> - In Table creation dialog, while adding foreign key, in action >>>>>> tab. if user click on 'x' button in "on update" or "on delete" select2 >>>>>> control, it gives error "Uncaught SyntaxError: Unexpected end of input" >>>>>> >>>>>> Fixed >>>>> >>>>>> >>>>>> - In Table creation dialog, while adding a check constraint, >>>>>> "validated" button does not work properly >>>>>> >>>>>> Fixed. >>>>> >>>>>> >>>>>> - After successfully creation of table, "table name cannot be >>>>>> empty" error is not getting cleared. >>>>>> >>>>>> Not reproducible. >>>>> >>>>>> >>>>>> - In Table creation dialog, if user has added an empty column >>>>>> without entering its name or type and trying to add check constraint, it >>>>>> will add an empty constraint >>>>>> >>>>>> Expected behaviour (Columns are not mandatory for check constrains) >>>>> >>>>>> >>>>>> - In Table creation dialog, while adding an exclude constraint, >>>>>> for "character varying" column type, no operators are being listed >>>>>> >>>>>> There are no operators for character varying data type. >>>>> >>>>>> >>>>>> - In Table creation dialog, while adding an exclude constraint, >>>>>> below mentioned error comes if user removes operator class by clicking 'x' >>>>>> on that control Uncaught TypeError: Cannot read property 'id' of undefined >>>>>> >>>>>> TODO >>>>> >>>>>> >>>>>> - In Table creation dialog, SQL is not getting generated for >>>>>> exclude constraint >>>>>> >>>>>> Fixed >>>>> >>>>>> >>>>>> - In Table creation dialog, schema should be prefixed with table >>>>>> name in "of type" control >>>>>> >>>>>> Fixed >>>>> >>>>>> >>>>>> - In Table creation dialog, while adding privileges, it always >>>>>> shows default privileges even if user has selected different privileges. >>>>>> (This works fine once user edit the privileges in edit table mode and shows >>>>>> only those privileges which user selects). Ashesh, please confirm the >>>>>> behaviour. >>>>>> >>>>>> Privileges are set correctly. Only it shows in incorrect order. >>>>> >>>>> >>>>>> Table edit mode: >>>>>> >>>>>> - If in edit mode, any constraint is already having any comment, >>>>>> then remove it. It will not create the SQL for the same. >>>>>> >>>>>> >>>>> Fixed >>>>> >>>>>> >>>>>> - Changing Schema will give server error >>>>>> >>>>>> This is generic issue for each node. >>>>> >>>>> >>>>>> Column Creation: >>>>>> >>>>>> - Save button is enabled by default >>>>>> - Data type validation is not provided. Save button is enabled >>>>>> just after providing column name >>>>>> - Length field limitation is not provided. (i.e. for numeric >>>>>> type, length should be allowed greater than 1000) >>>>>> >>>>>> *Fixed* >>>> >>>>> Exclusion constraint creation: >>>>>> >>>>>> - Access method should not be allowed to be empty. (currently by >>>>>> clicking 'x' will remove the selection in it) >>>>>> >>>>>> Access method is optional. >>>>> >>>>> >>>>>> Index creation: >>>>>> >>>>>> - No error message for name field when empty >>>>>> - No error message when column name is not provided while adding >>>>>> a column in index >>>>>> - While adding a column if no name is provided, "None" appears in >>>>>> SQL tab which will give error on OK button click >>>>>> - when comment is provided while creation, it gives error saying >>>>>> index does not exists. because schema name is not added before it. >>>>>> >>>>>> *Fixed* >>>> >>>>> Rule creation: >>>>>> >>>>>> - Name is empty error does not come till user enters something in >>>>>> definition tab >>>>>> - DO INSTEAD button does not make any difference to SQL (it works >>>>>> in edit mode) >>>>>> >>>>>> *Surinder will send patch* >>>> >>>>> Rule edit mode: >>>>>> >>>>>> - Add comment in edit mode, check the SQL in sql tab. Now come >>>>>> back to general tab and removes comment and check the sql tab again. >>>>>> SQL for comment is still there with empty string as comment >>>>>> >>>>>> *Surinder will send patch* >>>> >>>>> Trigger Creation: >>>>>> >>>>>> - SQL is not proper when creating a trigger. "()" should be >>>>>> appended to function name in SQL. >>>>>> It gives error while creating a trigger >>>>>> - "+" sign is visible in browser tree in front of trigger. >>>>>> either On expanding trigger, it should show the trigger function name or >>>>>> that "+" sign should not appear >>>>>> >>>>>> *Fixed* >>>> >>>>> Trigger edit node: >>>>>> >>>>> >>>>>> - On removing comment, nothing happens. No sql is being created. >>>>>> Comment is still there in properties. >>>>>> >>>>>> *Fixed* >>>> >>>>> >>>>>> Regards, >>>>>> Sanket Mehta >>>>>> Sr Software engineer >>>>>> Enterprisedb >>>>>> >>>>> >>>>> >>>>> >>>>> -- >>>>> Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org) >>>>> To make changes to your subscription: >>>>> http://www.postgresql.org/mailpref/pgadmin-hackers >>>>> >>>>> >>>> >>> >> >> >> -- >> Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org) >> To make changes to your subscription: >> http://www.postgresql.org/mailpref/pgadmin-hackers >> >> > --94eb2c045dc209dbb2053335054d Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Hi,

PFA updated patch for table and= all it's child nodes (Version 9). This patch does not depend on any of= existing table node patch.

Major change in this patch: Unlike= pgAdmin3 now in table create mode any constraint(s) created (but not saved= ) will listen to table column changes and adapt themselves accordingly.
=

For e.g.
In table create mode user adds c= olumn definition with name "col1" then adds constraint which incl= udes column "col1". Now user changes column name to "col2&qu= ot; then constraint will listen to this change and adapt the column name fr= om "col1" to "col2" in constraint definition. Also if c= olumn "col2" is removed then constraint will also remove the colu= mn "col2" from it's definition.

=

--=C2=A0<= /div>
Harshal Dhumal
Software Engineer=C2=A0




On Wed, May 18, 2016 at 7:47 PM, Surinder Ku= mar <surinder.kumar@enterprisedb.com> wrote:
Hi,

Pl= ease find add-on patch for Column node.
Issue fixed:
1.= =C2=A0=C2=A0Column node, 'Primary key' switch should be hidden under view= node, refer column node visible condition for table node
= 2. =C2=A0'Inherited from' column sho= uld be hidden.
2.=C2=A0 Oth= er columns except Default value should be disabled.


On Wed, May 18, 2016 at 4:4= 3 PM, Murtuza Zabuawala <murtuza.zabuawala@enterprisedb.c= om> wrote:
Hi,

PFA table add-on patch version 8= .4. (apply after 8.3)
This includes ch= anges for trigger node issues.


--
Regards,Mur= tuza Zabuawala
EnterpriseDB:=C2=A0http://www.enterprisedb.com
= The Enterprise PostgreSQL Company


On Wed, May 18, 2016 at 4:1= 9 PM, Murtuza Zabuawala <murtuza.zabuawala@enterprisedb.c= om> wrote:
Hi,

PFA table add-on patch version 8= .3. (apply after 8.2)

=
--
= Regards,
Murtuza Zabuawala
EnterpriseDB:=C2=A0= http://www.enterprisedb.comTh= e Enterprise PostgreSQL Company


On Wed, May 18, 2016 at 3:20 PM, Murtuza Zab= uawala <murtuza.zabuawala@enterprisedb.com>= wrote:
Hi,

PFA table add-on patch version 8.2
<= br clear=3D"all">
--
<= span style=3D"color:rgb(136,136,136)">Regards,
Murtuza Zabuawala
EnterpriseDB:=C2=A0= http://www.enterprisedb.comTh= e Enterprise PostgreSQL Company


On Wed, May 18, 2016 at 2:42 PM, Harshal Dhu= mal <harshal.dhumal@enterprisedb.com> wrote:
Hi,

PFA patch for tab= le node (version 8.1). apply this patch on version 7 patch. Not all issue a= re fixed in this patch. Murtuza will be sending version 8.2 witch will have= resolution for remaining issues. Apply version 8.2 patch on version 8.1
--=C2=A0
Harshal Dhumal
Software Engineer=C2=A0



On Tue, May 17, 2016 at 10:12 PM, Sanket Meh= ta <sanket.mehta@enterprisedb.com> wrote:
Hi Harshal,


Below are my review comments:

=C2=A0I got below = warning when I tried to apply the patch for table node as mentioned below:<= /div>

Table creation:
  • =C2=A0Trail= ing white spaces warnings=C2=A0
=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 $ git apply /projects/patc= hes/pgadmin4/Table/table_14_May_V6.patch
=C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /projects/patches/pgadmin4/Ta= ble/table_14_May_V6.patch:6008: trailing whitespace.
=C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 return false;=C2=A0
=C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/projects/patches/pgadmin4/Tab= le/table_14_May_V6.patch:6016: trailing whitespace.
=C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 return false;=C2=A0
=C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0warning: 2 lines add whitespace e= rrors.

Fixed (These were introduced = due to rules node.)
=C2=A0
  • In Table creation dialog, while adding a new primary key,= it does not allow to change the tablespace to empty. (which is not the cas= e in case of tablespace in table)
Fi= xed=C2=A0
  • In Table crea= tion dialog, while adding a new column, data type and name field must be ma= ndatory. otherwise while clicking on save it gives below error
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 File= "/projects/pgadmin4/web/pgadmin/browser/server_groups/servers/databas= es/schemas/tables/__init__.py", line 1319, in _parse_format_columns
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0c['cltype'] =3D self._cltype_formatter(c['cltype'])
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= KeyError: 'cltype
Fixed
=C2= =A0
  • In Table creation d= ialog, While adding a new column, in primary check box is needed to click t= wice in order to check it. Ideally it should be checked by only one click.<= br>
This is Backgrid behaviour.
  • In Table creation dialog, W= hile adding a new column, primary key should not be allowed to added unless= user has provided name and data type for at least one column.
=C2=A0Fixed
  • currently if user has clicked on add column button = and immediately click on add primary key button, it will add a row in prima= ry key data grid
Fixed=C2=A0
  • When delete table/drop cas= cade is apply on any table, i got a javascript error as mentioned below
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0no= de.js:94 Uncaught TypeError: self.canDrop.apply is not a function
Already fixed in other commit.
=C2=A0
  • Once the above error gen= erated, every time user tries to open a context menu by right clicking on a= ny existing table, that same error comes=C2=A0
Already fixed in other commit.
  • In table creation dialog, if table is inherited from ano= ther table, if a new primary key is added manually there, the create sql wi= ll not have an entry for primary key
Fixed=C2=A0
  • In table c= reation dialog, if primary key check box is checked while adding the row, a= new row is added in primary key datagrid but unchecking the primary key ch= eckbox from column datagrid, does not removes that row from primary key dat= a grid.
Fixed.=C2=A0
  • In AutoVacuum tab, if user provide= s any invalid value to any parameter, then a error message should be prompt= ed, only background color change would not tell user to change the value.
Expected =C2=A0behaviour.
  • In table creation dialog, security= label are not being added. javascript error is coming as mentioned below:<= br>=C2=A0=C2=A0{"= ;success": 0, "info": "", "result": null= , "data": null, "errormsg": "can't adapt type = 'Undefined'"}
= =C2=A0Fixed
  • In Table creation dialog,= while adding foreign key, in action tab. if user click on 'x' but= ton in "on update" or "on delete" select2 control, it g= ives error "Uncaught SyntaxError: Unexpected end of input"=
Fixed
  • In Table creation dialog, while adding a check constra= int, "validated" button does not work properly
  • =
Fixed.=C2=A0
  • After successfully creation of table, "table name cannot be= empty" error is not getting cleared.
Not reproducible.=C2=A0
  • In Table creation dialog, if user has added an empty column wit= hout entering its name or type and trying to add check constraint, it will = add an empty constraint
=C2=A0Expected =C2=A0behaviour (Columns are not mandatory for check const= rains)
  • In Table creation dialog, whil= e adding an exclude constraint, for "character varying" column ty= pe, no operators are being listed
=C2=A0There are no operators for=C2=A0character varying data type.
  • In Table creation dialog, while adding an exclu= de constraint, below mentioned error comes if user removes operator class b= y clicking 'x' on that control Uncaught TypeError: Cannot read property 'id' of unde= fined
=C2=A0TODO
=
  • In Table creation dialog, SQL is not getti= ng generated for exclude constraint
Fixed
  • In Table creation= dialog, schema should be prefixed with table name in "of type" c= ontrol
=C2=A0Fixed
  • In Table creation dialog, while adding p= rivileges, it always shows default privileges even if user has selected dif= ferent privileges. (This works fine once user edit the privileges in edit t= able mode and shows only those privileges which user selects).=20 Ashesh, please confirm the behaviour.
= Privileges are set correctly. Only it shows in incorrect order.
<= /div>
=C2=A0
Table edit mode:=
  • If in edit mode, any constraint is already having any comment, = then remove it. It will not create the SQL for the same.
  • =

Fixed=C2=A0
  • <= span style=3D"white-space:pre-wrap">Changing Schema will give server error<= /span>
This is generic = issue for each node.
=C2=A0
Co= lumn Creation:
  • Save button is enabled by default
  • = Data type validation is not provided. Save button is enabled just after pro= viding column name
  • Length field limitation is not provided. (i.e. f= or numeric type, length should be allowed greater than 1000)<= /li>
=
=
Fixed=C2=A0
Exclusion constraint creation:
  • = Access method should not be allowed to be empty. (currently by clicking = 9;x' will remove the selection in it)
Access method is optional.
=C2=A0
Index creation:
  • No error message for name field when empty
  • No error message wh= en column name is not provided while adding a column in index
  • While= adding a column if no name is provided, "None" appears in SQL ta= b which will give error on OK button click
  • when comment is provided= while creation, it gives error saying index does not exists. because schem= a name is not added before it.
  • Fixed=C2=A0
    Rule crea= tion:
    • Name is empty error does not come till = user enters something in definition tab
    • DO INSTEAD button does not = make any difference to SQL (it works in edit mode)
    Surinder = will send patch=C2=A0
    Rule edit mode:
    • Add comment in e= dit mode, check the SQL in sql tab. Now come back to general tab and remove= s comment and check the sql tab again.
      SQL for comment is still there wi= th empty string as comment
    Surinder will send patch=C2= =A0
    =
    Trig= ger Creation:
    • SQL is not proper when creating a tri= gger. "()" should be appended to function name in SQL.
      It give= s error while creating a trigger
    • "+" sign is visible in b= rowser tree in front of trigger. =C2=A0either On expanding trigger, it shou= ld show the trigger function name or that "+" sign should not app= ear
    Fixed=C2=A0
    <= div>
    =
    Trigger edit node:
    • On removing comment, nothin= g happens. No sql is being created. Comment is still there in properties.= =C2=A0
    Fixed=C2=A0

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



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






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



    --94eb2c045dc209dbb2053335054d-- --94eb2c045dc209dbb8053335054f Content-Type: text/x-patch; charset=US-ASCII; name="table_19_May_V9.patch" Content-Disposition: attachment; filename="table_19_May_V9.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ioejfna01 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9fX2luaXRfXy5w eSBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9fX2luaXRfXy5weQpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MDg2NjBiCi0tLSAvZGV2 L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL19faW5pdF9fLnB5 CkBAIC0wLDAgKzEsMjgwOSBAQAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKKyMKKyMgcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworIwor IyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE2LCBUaGUgcGdBZG1pbiBEZXZl bG9wbWVudCBUZWFtCisjIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5k ZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorIworIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMKKworIiIiIEltcGxlbWVudHMgVGFibGUgTm9kZSAi IiIKKworaW1wb3J0IGpzb24KK2ltcG9ydCByZQorZnJvbSBmbGFzayBpbXBv cnQgcmVuZGVyX3RlbXBsYXRlLCBtYWtlX3Jlc3BvbnNlLCByZXF1ZXN0LCBq c29uaWZ5Citmcm9tIGZsYXNrLmV4dC5iYWJlbCBpbXBvcnQgZ2V0dGV4dAor ZnJvbSBwZ2FkbWluLnV0aWxzLmFqYXggaW1wb3J0IG1ha2VfanNvbl9yZXNw b25zZSwgXAorICAgIG1ha2VfcmVzcG9uc2UgYXMgYWpheF9yZXNwb25zZSwg aW50ZXJuYWxfc2VydmVyX2Vycm9yCitmcm9tIHBnYWRtaW4uYnJvd3Nlci51 dGlscyBpbXBvcnQgUEdDaGlsZE5vZGVWaWV3Citmcm9tIHBnYWRtaW4uYnJv d3Nlci5zZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMuZGF0YWJhc2VzLnNjaGVtYXMu dXRpbHMgXAorICAgIGltcG9ydCBTY2hlbWFDaGlsZE1vZHVsZSwgRGF0YVR5 cGVSZWFkZXIsIFZhY3V1bVNldHRpbmdzLCBcCisgICAgdHJpZ2dlcl9kZWZp bml0aW9uLCBwYXJzZV9ydWxlX2RlZmluaXRpb24KK2ltcG9ydCBwZ2FkbWlu LmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLmRhdGFiYXNlcyBhcyBk YXRhYmFzZQorZnJvbSBwZ2FkbWluLnV0aWxzLmFqYXggaW1wb3J0IHByZWNv bmRpdGlvbl9yZXF1aXJlZAorZnJvbSBwZ2FkbWluLnV0aWxzLmRyaXZlciBp bXBvcnQgZ2V0X2RyaXZlcgorZnJvbSBjb25maWcgaW1wb3J0IFBHX0RFRkFV TFRfRFJJVkVSCitmcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBz LnNlcnZlcnMudXRpbHMgaW1wb3J0IHBhcnNlX3ByaXZfZnJvbV9kYiwgXAor ICAgIHBhcnNlX3ByaXZfdG9fZGIKK2Zyb20gZnVuY3Rvb2xzIGltcG9ydCB3 cmFwcworCisKK2NsYXNzIFRhYmxlTW9kdWxlKFNjaGVtYUNoaWxkTW9kdWxl KToKKyAgICAiIiIKKyAgICAgY2xhc3MgVGFibGVNb2R1bGUoU2NoZW1hQ2hp bGRNb2R1bGUpCisKKyAgICAgICAgQSBtb2R1bGUgY2xhc3MgZm9yIFRhYmxl IG5vZGUgZGVyaXZlZCBmcm9tIFNjaGVtYUNoaWxkTW9kdWxlLgorCisgICAg TWV0aG9kczoKKyAgICAtLS0tLS0tCisgICAgKiBfX2luaXRfXygqYXJncywg Kiprd2FyZ3MpCisgICAgICAtIE1ldGhvZCBpcyB1c2VkIHRvIGluaXRpYWxp emUgdGhlIFRhYmxlIGFuZCBpdCdzIGJhc2UgbW9kdWxlLgorCisgICAgKiBn ZXRfbm9kZXMoZ2lkLCBzaWQsIGRpZCwgc2NpZCwgdGlkKQorICAgICAgLSBN ZXRob2QgaXMgdXNlZCB0byBnZW5lcmF0ZSB0aGUgYnJvd3NlciBjb2xsZWN0 aW9uIG5vZGUuCisKKyAgICAqIG5vZGVfaW5vZGUoKQorICAgICAgLSBNZXRo b2QgaXMgb3ZlcnJpZGRlbiBmcm9tIGl0cyBiYXNlIGNsYXNzIHRvIG1ha2Ug dGhlIG5vZGUgYXMgbGVhZiBub2RlLgorCisgICAgKiBzY3JpcHRfbG9hZCgp CisgICAgICAtIExvYWQgdGhlIG1vZHVsZSBzY3JpcHQgZm9yIHNjaGVtYSwg d2hlbiBhbnkgb2YgdGhlIHNlcnZlciBub2RlIGlzCisgICAgICAgIGluaXRp YWxpemVkLgorICAgICIiIgorICAgIE5PREVfVFlQRSA9ICd0YWJsZScKKyAg ICBDT0xMRUNUSU9OX0xBQkVMID0gZ2V0dGV4dCgiVGFibGVzIikKKworICAg IGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAg ICAiIiIKKyAgICAgICAgTWV0aG9kIGlzIHVzZWQgdG8gaW5pdGlhbGl6ZSB0 aGUgVGFibGVNb2R1bGUgYW5kIGl0J3MgYmFzZSBtb2R1bGUuCisKKyAgICAg ICAgQXJnczoKKyAgICAgICAgICAgICphcmdzOgorICAgICAgICAgICAgKipr d2FyZ3M6CisgICAgICAgICIiIgorICAgICAgICBzdXBlcihUYWJsZU1vZHVs ZSwgc2VsZikuX19pbml0X18oKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICBz ZWxmLm1heF92ZXIgPSBOb25lCisgICAgICAgIHNlbGYubWluX3ZlciA9IE5v bmUKKworICAgIGRlZiBnZXRfbm9kZXMoc2VsZiwgZ2lkLCBzaWQsIGRpZCwg c2NpZCk6CisgICAgICAgICIiIgorICAgICAgICBHZW5lcmF0ZSB0aGUgY29s bGVjdGlvbiBub2RlCisgICAgICAgICIiIgorICAgICAgICB5aWVsZCBzZWxm LmdlbmVyYXRlX2Jyb3dzZXJfY29sbGVjdGlvbl9ub2RlKHNjaWQpCisKKyAg ICBAcHJvcGVydHkKKyAgICBkZWYgc2NyaXB0X2xvYWQoc2VsZik6CisgICAg ICAgICIiIgorICAgICAgICBMb2FkIHRoZSBtb2R1bGUgc2NyaXB0IGZvciBk YXRhYmFzZSwgd2hlbiBhbnkgb2YgdGhlIGRhdGFiYXNlIG5vZGUgaXMKKyAg ICAgICAgaW5pdGlhbGl6ZWQuCisgICAgICAgICIiIgorICAgICAgICByZXR1 cm4gZGF0YWJhc2UuRGF0YWJhc2VNb2R1bGUuTk9ERV9UWVBFCisKKworYmx1 ZXByaW50ID0gVGFibGVNb2R1bGUoX19uYW1lX18pCisKKworY2xhc3MgVGFi bGVWaWV3KFBHQ2hpbGROb2RlVmlldywgRGF0YVR5cGVSZWFkZXIsIFZhY3V1 bVNldHRpbmdzKToKKyAgICAiIiIKKyAgICBUaGlzIGNsYXNzIGlzIHJlc3Bv bnNpYmxlIGZvciBnZW5lcmF0aW5nIHJvdXRlcyBmb3IgVGFibGUgbm9kZQor CisgICAgTWV0aG9kczoKKyAgICAtLS0tLS0tCisgICAgKiBfX2luaXRfXygq Kmt3YXJncykKKyAgICAgIC0gTWV0aG9kIGlzIHVzZWQgdG8gaW5pdGlhbGl6 ZSB0aGUgVGFibGVWaWV3IGFuZCBpdCdzIGJhc2Ugdmlldy4KKworICAgICog bW9kdWxlX2pzKCkKKyAgICAgIC0gVGhpcyBwcm9wZXJ0eSBkZWZpbmVzIChp ZiBqYXZhc2NyaXB0KSBleGlzdHMgZm9yIHRoaXMgbm9kZS4KKyAgICAgICAg T3ZlcnJpZGUgdGhpcyBwcm9wZXJ0eSBmb3IgeW91ciBvd24gbG9naWMKKwor ICAgICogY2hlY2tfcHJlY29uZGl0aW9uKCkKKyAgICAgIC0gVGhpcyBmdW5j dGlvbiB3aWxsIGJlaGF2ZSBhcyBhIGRlY29yYXRvciB3aGljaCB3aWxsIGNo ZWNrcworICAgICAgICBkYXRhYmFzZSBjb25uZWN0aW9uIGJlZm9yZSBydW5u aW5nIHZpZXcsIGl0IHdpbGwgYWxzbyBhdHRhY2hlcworICAgICAgICBtYW5h Z2VyLGNvbm4gJiB0ZW1wbGF0ZV9wYXRoIHByb3BlcnRpZXMgdG8gc2VsZgor CisgICAgKiBsaXN0KCkKKyAgICAgIC0gVGhpcyBmdW5jdGlvbiBpcyB1c2Vk IHRvIGxpc3QgYWxsIHRoZSBUYWJsZSBub2RlcyB3aXRoaW4gdGhhdAorICAg ICAgY29sbGVjdGlvbi4KKworICAgICogbm9kZXMoKQorICAgICAgLSBUaGlz IGZ1bmN0aW9uIHdpbGwgdXNlZCB0byBjcmVhdGUgYWxsIHRoZSBjaGlsZCBu b2RlIHdpdGhpbiB0aGF0CisgICAgICAgIGNvbGxlY3Rpb24sIEhlcmUgaXQg d2lsbCBjcmVhdGUgYWxsIHRoZSBUYWJsZSBub2RlLgorCisgICAgKiBwcm9w ZXJ0aWVzKGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRpZCkKKyAgICAgIC0gVGhp cyBmdW5jdGlvbiB3aWxsIHNob3cgdGhlIHByb3BlcnRpZXMgb2YgdGhlIHNl bGVjdGVkIFRhYmxlIG5vZGUKKworICAgICogY3JlYXRlKGdpZCwgc2lkLCBk aWQsIHNjaWQpCisgICAgICAtIFRoaXMgZnVuY3Rpb24gd2lsbCBjcmVhdGUg dGhlIG5ldyBUYWJsZSBvYmplY3QKKworICAgICogdXBkYXRlKGdpZCwgc2lk LCBkaWQsIHNjaWQsIHRpZCkKKyAgICAgIC0gVGhpcyBmdW5jdGlvbiB3aWxs IHVwZGF0ZSB0aGUgZGF0YSBmb3IgdGhlIHNlbGVjdGVkIFRhYmxlIG5vZGUK KworICAgICogZGVsZXRlKGdpZCwgc2lkLCBzY2lkLCB0aWQpOgorICAgICAg LSBUaGlzIGZ1bmN0aW9uIHdpbGwgZHJvcCB0aGUgVGFibGUgb2JqZWN0CisK KyAgICAqIHRydW5jYXRlKGdpZCwgc2lkLCBzY2lkLCB0aWQpOgorICAgICAg LSBUaGlzIGZ1bmN0aW9uIHdpbGwgdHJ1bmNhdGUgdGFibGUgb2JqZWN0CisK KyAgICAqIHNldF90cmlnZ2VyKGdpZCwgc2lkLCBzY2lkLCB0aWQpOgorICAg ICAgLSBUaGlzIGZ1bmN0aW9uIHdpbGwgZW5hYmxlL2Rpc2FibGUgdHJpZ2dl cihzKSBvbiB0YWJsZSBvYmplY3QKKworICAgICogcmVzZXQoZ2lkLCBzaWQs IHNjaWQsIHRpZCk6CisgICAgICAtIFRoaXMgZnVuY3Rpb24gd2lsbCByZXNl dCB0YWJsZSBvYmplY3Qgc3RhdGlzdGljcworCisgICAgKiBtc3FsKGdpZCwg c2lkLCBkaWQsIHNjaWQsIHRpZCkKKyAgICAgIC0gVGhpcyBmdW5jdGlvbiBp cyB1c2VkIHRvIHJldHVybiBtb2RpZmllZCBTUUwgZm9yIHRoZSBzZWxlY3Rl ZAorICAgICAgICBUYWJsZSBub2RlCisKKyAgICAqIGdldF9zcWwoZGF0YSwg c2NpZCwgdGlkKQorICAgICAgLSBUaGlzIGZ1bmN0aW9uIHdpbGwgZ2VuZXJh dGUgc3FsIGZyb20gbW9kZWwgZGF0YQorCisgICAgKiBzcWwoZ2lkLCBzaWQs IGRpZCwgc2NpZCwgdGlkKToKKyAgICAgIC0gVGhpcyBmdW5jdGlvbiB3aWxs IGdlbmVyYXRlIHNxbCB0byBzaG93IGl0IGluIHNxbCBwYW5lIGZvciB0aGUK KyAgICAgICAgc2VsZWN0ZWQgVGFibGUgbm9kZS4KKworICAgICogZGVwZW5k ZW5jeShnaWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQpOgorICAgICAgLSBUaGlz IGZ1bmN0aW9uIHdpbGwgZ2VuZXJhdGUgZGVwZW5kZW5jeSBsaXN0IHNob3cg aXQgaW4gZGVwZW5kZW5jeQorICAgICAgICBwYW5lIGZvciB0aGUgc2VsZWN0 ZWQgVGFibGUgbm9kZS4KKworICAgICogZGVwZW5kZW50KGdpZCwgc2lkLCBk aWQsIHNjaWQsIHRpZCk6CisgICAgICAtIFRoaXMgZnVuY3Rpb24gd2lsbCBn ZW5lcmF0ZSBkZXBlbmRlbnQgbGlzdCB0byBzaG93IGl0IGluIGRlcGVuZGVu dAorICAgICAgICBwYW5lIGZvciB0aGUgc2VsZWN0ZWQgbm9kZS4KKworICAg ICogX2Zvcm1hdHRlcihkYXRhLCB0aWQpCisgICAgICAtIEl0IHdpbGwgcmV0 dXJuIGZvcm1hdHRlZCBvdXRwdXQgb2YgcXVlcnkgcmVzdWx0CisgICAgICAg IGFzIHBlciBjbGllbnQgbW9kZWwgZm9ybWF0CisKKyAgICAqIGdldF90eXBl cyhzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkKQorICAgICAgLSBUaGlzIGZ1 bmN0aW9uIHdpbGwgcmV0dXJuIGxpc3Qgb2YgdHlwZXMgYXZhaWxhYmxlIGZv ciBjb2x1bW5zIG5vZGUKKyAgICAgICAgdmlhIEFKQVggcmVzcG9uc2UKKwor ICAgICogZ2V0X29mdHlwZShzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCB0 aWQpCisgICAgICAtIFRoaXMgZnVuY3Rpb24gd2lsbCByZXR1cm4gbGlzdCBv ZiB0eXBlcyBhdmFpbGFibGUgZm9yIHRhYmxlIG5vZGUKKyAgICAgICAgdmlh IEFKQVggcmVzcG9uc2UKKworICAgICogZ2V0X2luaGVyaXRzKHNlbGYsIGdp ZCwgc2lkLCBkaWQsIHNjaWQsIHRpZCkKKyAgICAgIC0gVGhpcyBmdW5jdGlv biB3aWxsIHJldHVybiBsaXN0IG9mIHRhYmxlcyBhdmFpbGFibGVmb3IgaW5o ZXJpdGFuY2UKKyAgICAgICAgdmlhIEFKQVggcmVzcG9uc2UKKworICAgICog Z2V0X3JlbGF0aW9ucyhzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQp CisgICAgICAtIFRoaXMgZnVuY3Rpb24gd2lsbCByZXR1cm4gbGlzdCBvZiB0 YWJsZXMgYXZhaWxhYmxlIGZvciBsaWtlL3JlbGF0aW9uCisgICAgICAgIHZp YSBBSkFYIHJlc3BvbnNlCisKKyAgICAqIGdldF9jb2x1bW5zKGdpZCwgc2lk LCBkaWQsIHNjaWQsIGZvaWQ9Tm9uZSk6CisgICAgICAtIFJldHVybnMgdGhl IFRhYmxlIENvbHVtbnMuCisKKyAgICAqIGdldF90YWJsZV92YWN1dW0oZ2lk LCBzaWQsIGRpZCwgc2NpZD1Ob25lLCB0aWQ9Tm9uZSk6CisgICAgICAtIEZl dGNoIHRoZSBkZWZhdWx0IHZhbHVlcyBmb3IgdGFibGUgYXV0by12YWN1dW0K KworICAgICogZ2V0X3RvYXN0X3RhYmxlX3ZhY3V1bShnaWQsIHNpZCwgZGlk LCBzY2lkPU5vbmUsIHRpZD1Ob25lKQorICAgICAgLSBGZXRjaCB0aGUgZGVm YXVsdCB2YWx1ZXMgZm9yIHRvYXN0IHRhYmxlIGF1dG8tdmFjdXVtCisKKyAg ICAqIF9jb2x1bW5zX2Zvcm1hdHRlcih0aWQsIGRhdGEpOgorICAgICAgLSBJ dCB3aWxsIHJldHVybiBmb3JtYXR0ZWQgb3V0cHV0IG9mIHF1ZXJ5IHJlc3Vs dAorICAgICAgICBhcyBwZXIgY2xpZW50IG1vZGVsIGZvcm1hdCBmb3IgY29s dW1uIG5vZGUKKworICAgICogX2luZGV4X2NvbnN0cmFpbnRzX2Zvcm1hdHRl cihzZWxmLCB0aWQsIGRhdGEpOgorICAgICAgLSBJdCB3aWxsIHJldHVybiBm b3JtYXR0ZWQgb3V0cHV0IG9mIHF1ZXJ5IHJlc3VsdAorICAgICAgICBhcyBw ZXIgY2xpZW50IG1vZGVsIGZvcm1hdCBmb3IgaW5kZXggY29uc3RyYWludCBu b2RlCisKKyAgICAqIF9jbHR5cGVfZm9ybWF0dGVyKHNlbGYsIHR5cGUpOgor ICAgICAgLSBXZSBuZWVkIHRvIHJlbW92ZSBbXSBmcm9tIHR5cGUgYW5kIGFw cGVuZCBpdAorICAgICAgICBhZnRlciBsZW5ndGgvcHJlY2lzaW9uIHNvIHdl IHdpbGwgc2V0IGZsYWcgZm9yCisgICAgICAgIHNxbCB0ZW1wbGF0ZQorCisg ICAgKiBfcGFyc2VfZm9ybWF0X2NvbHVtbnMoc2VsZiwgZGF0YSwgbW9kZT1O b25lKToKKyAgICAgICAtIFRoaXMgZnVuY3Rpb24gd2lsbCBwYXJzZSBhbmQg cmV0dXJuIGZvcm1hdHRlZCBsaXN0IG9mIGNvbHVtbnMKKyAgICAgICAgIGFk ZGVkIGJ5IHVzZXIKKworICAgICogZ2V0X2luZGV4X2NvbnN0cmFpbnRfc3Fs KHNlbGYsIHRpZCwgZGF0YSk6CisgICAgICAtIFRoaXMgZnVuY3Rpb24gd2ls bCBnZW5lcmF0ZSBtb2RpZmllZCBzcWwgZm9yIGluZGV4IGNvbnN0cmFpbnRz CisgICAgICAgIChQcmltYXJ5IEtleSAmIFVuaXF1ZSkKKworICAgICogc2Vs ZWN0X3NxbChnaWQsIHNpZCwgZGlkLCBzY2lkLCBmb2lkKToKKyAgICAgIC0g UmV0dXJucyBzcWwgZm9yIFNjcmlwdAorCisgICAgKiBpbnNlcnRfc3FsKGdp ZCwgc2lkLCBkaWQsIHNjaWQsIGZvaWQpOgorICAgICAgLSBSZXR1cm5zIHNx bCBmb3IgU2NyaXB0CisKKyAgICAqIHVwZGF0ZV9zcWwoZ2lkLCBzaWQsIGRp ZCwgc2NpZCwgZm9pZCk6CisgICAgICAtIFJldHVybnMgc3FsIGZvciBTY3Jp cHQKKworICAgICogZGVsZXRlX3NxbChnaWQsIHNpZCwgZGlkLCBzY2lkLCBm b2lkKToKKyAgICAgIC0gUmV0dXJucyBzcWwgZm9yIFNjcmlwdAorIiIiCisK KyAgICBub2RlX3R5cGUgPSBibHVlcHJpbnQubm9kZV90eXBlCisKKyAgICBw YXJlbnRfaWRzID0gWworICAgICAgICAgICAgeyd0eXBlJzogJ2ludCcsICdp ZCc6ICdnaWQnfSwKKyAgICAgICAgICAgIHsndHlwZSc6ICdpbnQnLCAnaWQn OiAnc2lkJ30sCisgICAgICAgICAgICB7J3R5cGUnOiAnaW50JywgJ2lkJzog J2RpZCd9LAorICAgICAgICAgICAgeyd0eXBlJzogJ2ludCcsICdpZCc6ICdz Y2lkJ30KKyAgICAgICAgICAgIF0KKyAgICBpZHMgPSBbCisgICAgICAgICAg ICB7J3R5cGUnOiAnaW50JywgJ2lkJzogJ3RpZCd9CisgICAgICAgICAgICBd CisKKyAgICBvcGVyYXRpb25zID0gZGljdCh7CisgICAgICAgICdvYmonOiBb CisgICAgICAgICAgICB7J2dldCc6ICdwcm9wZXJ0aWVzJywgJ2RlbGV0ZSc6 ICdkZWxldGUnLCAncHV0JzogJ3VwZGF0ZSd9LAorICAgICAgICAgICAgeydn ZXQnOiAnbGlzdCcsICdwb3N0JzogJ2NyZWF0ZSd9CisgICAgICAgIF0sCisg ICAgICAgICdkZWxldGUnOiBbeydkZWxldGUnOiAnZGVsZXRlJ31dLAorICAg ICAgICAnY2hpbGRyZW4nOiBbeydnZXQnOiAnY2hpbGRyZW4nfV0sCisgICAg ICAgICdub2Rlcyc6IFt7J2dldCc6ICdub2RlJ30sIHsnZ2V0JzogJ25vZGVz J31dLAorICAgICAgICAnc3FsJzogW3snZ2V0JzogJ3NxbCd9XSwKKyAgICAg ICAgJ21zcWwnOiBbeydnZXQnOiAnbXNxbCd9LCB7J2dldCc6ICdtc3FsJ31d LAorICAgICAgICAnc3RhdHMnOiBbeydnZXQnOiAnc3RhdGlzdGljcyd9XSwK KyAgICAgICAgJ2RlcGVuZGVuY3knOiBbeydnZXQnOiAnZGVwZW5kZW5jaWVz J31dLAorICAgICAgICAnZGVwZW5kZW50JzogW3snZ2V0JzogJ2RlcGVuZGVu dHMnfV0sCisgICAgICAgICdtb2R1bGUuanMnOiBbe30sIHt9LCB7J2dldCc6 ICdtb2R1bGVfanMnfV0sCisgICAgICAgICdnZXRfb2Z0eXBlJzogW3snZ2V0 JzogJ2dldF9vZnR5cGUnfSwgeydnZXQnOiAnZ2V0X29mdHlwZSd9XSwKKyAg ICAgICAgJ2dldF9pbmhlcml0cyc6IFt7J2dldCc6ICdnZXRfaW5oZXJpdHMn fSwgeydnZXQnOiAnZ2V0X2luaGVyaXRzJ31dLAorICAgICAgICAnZ2V0X3Jl bGF0aW9ucyc6IFt7J2dldCc6ICdnZXRfcmVsYXRpb25zJ30sIHsnZ2V0Jzog J2dldF9yZWxhdGlvbnMnfV0sCisgICAgICAgICd0cnVuY2F0ZSc6IFt7J3B1 dCc6ICd0cnVuY2F0ZSd9XSwKKyAgICAgICAgJ3Jlc2V0JzogW3snZGVsZXRl JzogJ3Jlc2V0J31dLAorICAgICAgICAnc2V0X3RyaWdnZXInOiBbeydwdXQn OiAnZW5hYmxlX2Rpc2FibGVfdHJpZ2dlcnMnfV0sCisgICAgICAgICdnZXRf dHlwZXMnOiBbeydnZXQnOiAndHlwZXMnfSwgeydnZXQnOiAndHlwZXMnfV0s CisgICAgICAgICdnZXRfY29sdW1ucyc6IFt7J2dldCc6ICdnZXRfY29sdW1u cyd9LCB7J2dldCc6ICdnZXRfY29sdW1ucyd9XSwKKyAgICAgICAgJ2dldF90 YWJsZV92YWN1dW0nOiBbe30sIHsnZ2V0JzogJ2dldF90YWJsZV92YWN1dW0n fV0sCisgICAgICAgICdnZXRfdG9hc3RfdGFibGVfdmFjdXVtJzogW3t9LCB7 J2dldCc6ICdnZXRfdG9hc3RfdGFibGVfdmFjdXVtJ31dLAorICAgICAgICAn YWxsX3RhYmxlcyc6IFt7fSwgeydnZXQnOiAnZ2V0X2FsbF90YWJsZXMnfV0s CisgICAgICAgICdnZXRfYWNjZXNzX21ldGhvZHMnOiBbe30sIHsnZ2V0Jzog J2dldF9hY2Nlc3NfbWV0aG9kcyd9XSwKKyAgICAgICAgJ2dldF9vcGVyX2Ns YXNzJzogW3t9LCB7J2dldCc6ICdnZXRfb3Blcl9jbGFzcyd9XSwKKyAgICAg ICAgJ2dldF9vcGVyYXRvcic6IFt7fSwgeydnZXQnOiAnZ2V0X29wZXJhdG9y J31dLAorICAgICAgICAnc2VsZWN0X3NxbCc6IFt7J2dldCc6ICdzZWxlY3Rf c3FsJ31dLAorICAgICAgICAnaW5zZXJ0X3NxbCc6IFt7J2dldCc6ICdpbnNl cnRfc3FsJ31dLAorICAgICAgICAndXBkYXRlX3NxbCc6IFt7J2dldCc6ICd1 cGRhdGVfc3FsJ31dLAorICAgICAgICAnZGVsZXRlX3NxbCc6IFt7J2dldCc6 ICdkZWxldGVfc3FsJ31dCisKKyAgICB9KQorCisgICAgZGVmIGNoZWNrX3By ZWNvbmRpdGlvbihmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVu Y3Rpb24gd2lsbCBiZWhhdmUgYXMgYSBkZWNvcmF0b3Igd2hpY2ggd2lsbCBj aGVja3MKKyAgICAgICAgZGF0YWJhc2UgY29ubmVjdGlvbiBiZWZvcmUgcnVu bmluZyB2aWV3LCBpdCB3aWxsIGFsc28gYXR0YWNoZXMKKyAgICAgICAgbWFu YWdlcixjb25uICYgdGVtcGxhdGVfcGF0aCBwcm9wZXJ0aWVzIHRvIHNlbGYK KyAgICAgICAgIiIiCisgICAgICAgIEB3cmFwcyhmKQorICAgICAgICBkZWYg d3JhcCgqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAgICAgIyBIZXJlIGFy Z3NbMF0gd2lsbCBob2xkIHNlbGYgJiBrd2FyZ3Mgd2lsbCBob2xkIGdpZCxz aWQsZGlkCisgICAgICAgICAgICBzZWxmID0gYXJnc1swXQorICAgICAgICAg ICAgZHJpdmVyID0gZ2V0X2RyaXZlcihQR19ERUZBVUxUX0RSSVZFUikKKyAg ICAgICAgICAgIHNlbGYubWFuYWdlciA9IGRyaXZlci5jb25uZWN0aW9uX21h bmFnZXIoa3dhcmdzWydzaWQnXSkKKyAgICAgICAgICAgIHNlbGYuY29ubiA9 IHNlbGYubWFuYWdlci5jb25uZWN0aW9uKGRpZD1rd2FyZ3NbJ2RpZCddKQor ICAgICAgICAgICAgc2VsZi5xdElkZW50ID0gZHJpdmVyLnF0SWRlbnQKKyAg ICAgICAgICAgICMgV2UgbmVlZCBkYXRsYXN0c3lzb2lkIHRvIGNoZWNrIGlm IGN1cnJlbnQgdGFibGUgaXMgc3lzdGVtIHRhYmxlCisgICAgICAgICAgICBz ZWxmLmRhdGxhc3RzeXNvaWQgPSBzZWxmLm1hbmFnZXIuZGJfaW5mb1trd2Fy Z3NbJ2RpZCddXVsnZGF0bGFzdHN5c29pZCddCisKKyAgICAgICAgICAgICMg SWYgREIgbm90IGNvbm5lY3RlZCB0aGVuIHJldHVybiBlcnJvciB0byBicm93 c2VyCisgICAgICAgICAgICBpZiBub3Qgc2VsZi5jb25uLmNvbm5lY3RlZCgp OgorICAgICAgICAgICAgICAgIHJldHVybiBwcmVjb25kaXRpb25fcmVxdWly ZWQoCisgICAgICAgICAgICAgICAgICAgIGdldHRleHQoCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIkNvbm5lY3Rpb24gdG8gdGhlIHNlcnZlciBo YXMgYmVlbiBsb3N0ISIKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAg ICAgICAgICAgICkKKworICAgICAgICAgICAgIyBXZSBuZWVkIGRhdGxhc3Rz eXNvaWQgdG8gY2hlY2sgaWYgY3VycmVudCBpbmRleCBpcyBzeXN0ZW0gaW5k ZXgKKyAgICAgICAgICAgIHNlbGYuZGF0bGFzdHN5c29pZCA9IHNlbGYubWFu YWdlci5kYl9pbmZvW2t3YXJnc1snZGlkJ11dWydkYXRsYXN0c3lzb2lkJ10K KworICAgICAgICAgICAgIyB3ZSB3aWxsIHNldCB0ZW1wbGF0ZSBwYXRoIGZv ciBzcWwgc2NyaXB0cworICAgICAgICAgICAgdmVyID0gc2VsZi5tYW5hZ2Vy LnZlcnNpb24KKyAgICAgICAgICAgICMgVGVtcGxhdGUgZm9yIENvbHVtbiBu b2RlCisgICAgICAgICAgICBpZiB2ZXIgPj0gOTA1MDA6CisgICAgICAgICAg ICAgICAgc2VsZi50ZW1wbGF0ZV9wYXRoID0gJ3RhYmxlL3NxbC85LjVfcGx1 cycKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi50 ZW1wbGF0ZV9wYXRoID0gJ3RhYmxlL3NxbC85LjFfcGx1cycKKworICAgICAg ICAgICAgIyBUZW1wbGF0ZSBmb3IgQ29sdW1uICxjaGVjayBjb25zdHJhaW50 IGFuZCBleGNsdXNpb24gY29uc3RyYWludCBub2RlCisgICAgICAgICAgICBp ZiB2ZXIgPj0gOTAyMDA6CisgICAgICAgICAgICAgICAgc2VsZi5jb2x1bW5f dGVtcGxhdGVfcGF0aCA9ICdjb2x1bW4vc3FsLzkuMl9wbHVzJworICAgICAg ICAgICAgICAgIHNlbGYuY2hlY2tfY29uc3RyYWludF90ZW1wbGF0ZV9wYXRo ID0gJ2NoZWNrX2NvbnN0cmFpbnQvc3FsLzkuMl9wbHVzJworICAgICAgICAg ICAgICAgIHNlbGYuZXhjbHVzaW9uX2NvbnN0cmFpbnRfdGVtcGxhdGVfcGF0 aCA9ICdleGNsdXNpb25fY29uc3RyYWludC9zcWwvOS4yX3BsdXMnCisgICAg ICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuY29sdW1uX3Rl bXBsYXRlX3BhdGggPSAnY29sdW1uL3NxbC85LjFfcGx1cycKKyAgICAgICAg ICAgICAgICBzZWxmLmNoZWNrX2NvbnN0cmFpbnRfdGVtcGxhdGVfcGF0aCA9 ICdjaGVja19jb25zdHJhaW50L3NxbC85LjFfcGx1cycKKyAgICAgICAgICAg ICAgICBzZWxmLmV4Y2x1c2lvbl9jb25zdHJhaW50X3RlbXBsYXRlX3BhdGgg PSAnZXhjbHVzaW9uX2NvbnN0cmFpbnQvc3FsLzkuMV9wbHVzJworCisgICAg ICAgICAgICAjIFRlbXBsYXRlIGZvciBQSyAmIFVuaXF1ZSBjb25zdHJhaW50 IG5vZGUKKyAgICAgICAgICAgIHNlbGYuaW5kZXhfY29uc3RyYWludF90ZW1w bGF0ZV9wYXRoID0gJ2luZGV4X2NvbnN0cmFpbnQvc3FsJworCisgICAgICAg ICAgICAjIFRlbXBsYXRlIGZvciBmb3JlaWduIGtleSBjb25zdHJhaW50IG5v ZGUKKyAgICAgICAgICAgIHNlbGYuZm9yZWlnbl9rZXlfdGVtcGxhdGVfcGF0 aCA9ICdmb3JlaWduX2tleS9zcWwnCisKKyAgICAgICAgICAgICMgVGVtcGxh dGUgZm9yIGluZGV4IG5vZGUKKyAgICAgICAgICAgIHNlbGYuaW5kZXhfdGVt cGxhdGVfcGF0aCA9ICdpbmRleC9zcWwvOS4xX3BsdXMnCisKKyAgICAgICAg ICAgICMgVGVtcGxhdGUgZm9yIHRyaWdnZXIgbm9kZQorICAgICAgICAgICAg c2VsZi50cmlnZ2VyX3RlbXBsYXRlX3BhdGggPSAndHJpZ2dlci9zcWwvOS4x X3BsdXMnCisKKyAgICAgICAgICAgICMgVGVtcGxhdGUgZm9yIHJ1bGVzIG5v ZGUKKyAgICAgICAgICAgIHNlbGYucnVsZXNfdGVtcGxhdGVfcGF0aCA9ICdy dWxlcy9zcWwnCisKKyAgICAgICAgICAgICMgU3VwcG9ydGVkIEFDTCBmb3Ig dGFibGUKKyAgICAgICAgICAgIHNlbGYuYWNsID0gWydhJywgJ3InLCAndycs ICdkJywgJ0QnLCAneCcsICd0J10KKworICAgICAgICAgICAgIyBTdXBwb3J0 ZWQgQUNMIGZvciBjb2x1bW5zCisgICAgICAgICAgICBzZWxmLmNvbHVtbl9h Y2wgPSBbJ2EnLCAncicsICd3JywgJ3gnXQorCisgICAgICAgICAgICByZXR1 cm4gZigqYXJncywgKiprd2FyZ3MpCisKKyAgICAgICAgcmV0dXJuIHdyYXAK KworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgbGlzdChzZWxm LCBnaWQsIHNpZCwgZGlkLCBzY2lkKToKKyAgICAgICAgIiIiCisgICAgICAg IFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBsaXN0IGFsbCB0aGUgdGFibGUg bm9kZXMgd2l0aGluIHRoYXQgY29sbGVjdGlvbi4KKworICAgICAgICBBcmdz OgorICAgICAgICAgICAgZ2lkOiBTZXJ2ZXIgZ3JvdXAgSUQKKyAgICAgICAg ICAgIHNpZDogU2VydmVyIElECisgICAgICAgICAgICBkaWQ6IERhdGFiYXNl IElECisgICAgICAgICAgICBzY2lkOiBTY2hlbWEgSUQKKworICAgICAgICBS ZXR1cm5zOgorICAgICAgICAgICAgSlNPTiBvZiBhdmFpbGFibGUgdGFibGUg bm9kZXMKKyAgICAgICAgIiIiCisgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1w bGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwcm9wZXJ0aWVzLnNx bCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjaWQ9c2Np ZCwgZGF0bGFzdHN5c29pZD1zZWxmLmRhdGxhc3RzeXNvaWQpCisgICAgICAg IHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChTUUwpCisK KyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBp bnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorICAgICAgICBy ZXR1cm4gYWpheF9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICByZXNwb25z ZT1yZXNbJ3Jvd3MnXSwKKyAgICAgICAgICAgICAgICBzdGF0dXM9MjAwCisg ICAgICAgICAgICAgICAgKQorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgor ICAgIGRlZiBub2RlcyhzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkKToKKyAg ICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBs aXN0IGFsbCB0aGUgdGFibGUgbm9kZXMgd2l0aGluIHRoYXQgY29sbGVjdGlv bi4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgZ2lkOiBTZXJ2ZXIg Z3JvdXAgSUQKKyAgICAgICAgICAgIHNpZDogU2VydmVyIElECisgICAgICAg ICAgICBkaWQ6IERhdGFiYXNlIElECisgICAgICAgICAgICBzY2lkOiBTY2hl bWEgSUQKKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgSlNPTiBv ZiBhdmFpbGFibGUgdGFibGUgbm9kZXMKKyAgICAgICAgIiIiCisgICAgICAg IHJlcyA9IFtdCisgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIu am9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICdub2Rlcy5zcWwnXSksCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzY2lkPXNjaWQpCisgICAgICAgIHN0 YXR1cywgcnNldCA9IHNlbGYuY29ubi5leGVjdXRlXzJkYXJyYXkoU1FMKQor ICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIGlu dGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yc2V0KQorCisgICAgICAg IGZvciByb3cgaW4gcnNldFsncm93cyddOgorICAgICAgICAgICAgcmVzLmFw cGVuZCgKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5ibHVlcHJpbnQuZ2Vu ZXJhdGVfYnJvd3Nlcl9ub2RlKAorICAgICAgICAgICAgICAgICAgICAgICAg cm93WydvaWQnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNjaWQsCisg ICAgICAgICAgICAgICAgICAgICAgICByb3dbJ25hbWUnXSwKKyAgICAgICAg ICAgICAgICAgICAgICAgIGljb249Imljb24tdGFibGUiLAorICAgICAgICAg ICAgICAgICAgICAgICAgdGlnZ2VyX2NvdW50PXJvd1sndHJpZ2dlcmNvdW50 J10sCisgICAgICAgICAgICAgICAgICAgICAgICBoYXNfZW5hYmxlX3RyaWdn ZXJzPXJvd1snaGFzX2VuYWJsZV90cmlnZ2VycyddCisgICAgICAgICAgICAg ICAgICAgICkpCisKKyAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25z ZSgKKyAgICAgICAgICAgICAgICBkYXRhPXJlcywKKyAgICAgICAgICAgICAg ICBzdGF0dXM9MjAwCisgICAgICAgICAgICAgICAgKQorCisgICAgQGNoZWNr X3ByZWNvbmRpdGlvbgorICAgIGRlZiBnZXRfYWxsX3RhYmxlcyhzZWxmLCBn aWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQ9Tm9uZSk6CisgICAgICAgICIiIgor ICAgICAgICBBcmdzOgorICAgICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAg SWQKKyAgICAgICAgICAgIHNpZDogU2VydmVyIElkCisgICAgICAgICAgICBk aWQ6IERhdGFiYXNlIElkCisgICAgICAgICAgICBzY2lkOiBTY2hlbWEgSWQK KyAgICAgICAgICAgIHRpZDogVGFibGUgSWQKKworICAgICAgICBSZXR1cm5z OgorICAgICAgICAgICAgUmV0dXJucyB0aGUgbGl0cyBvZiB0YWJsZXMgcmVx dWlyZWQgZm9yIGNvbnN0cmFpbnRzLgorICAgICAgICAiIiIKKyAgICAgICAg dHJ5OgorICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5q b2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICdnZXRfdGFibGVzX2Zvcl9jb25z dHJhaW50cy5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc2hvd19zeXNvYmo9c2VsZi5ibHVlcHJpbnQuc2hvd19zeXN0ZW1f b2JqZWN0cykKKworICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNv bm4uZXhlY3V0ZV9kaWN0KFNRTCkKKworICAgICAgICAgICAgaWYgbm90IHN0 YXR1czoKKyAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVy X2Vycm9yKGVycm9ybXNnPXJlcykKKworICAgICAgICAgICAgcmV0dXJuIG1h a2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICBkYXRhPXJlc1sn cm93cyddLAorICAgICAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAgICAg ICAgICkKKworICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAg ICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNn PXN0cihlKSkKKworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYg Z2V0X3RhYmxlX3ZhY3V1bShzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkPU5v bmUsIHRpZD1Ob25lKToKKyAgICAgICAgIiIiCisgICAgICAgIEZldGNoIHRo ZSBkZWZhdWx0IHZhbHVlcyBmb3IgdGFibGUgYXV0by12YWN1dW0KKyAgICAg ICAgZmllbGRzLCByZXR1cm4gYW4gYXJyYXkgb2YKKyAgICAgICAgICAtIGxh YmVsCisgICAgICAgICAgLSBuYW1lCisgICAgICAgICAgLSBzZXR0aW5nCisg ICAgICAgIHZhbHVlcworICAgICAgICAiIiIKKyAgICAgICAgcmVzID0gc2Vs Zi5nZXRfdmFjdXVtX3RhYmxlX3NldHRpbmdzKHNlbGYuY29ubikKKyAgICAg ICAgcmV0dXJuIGFqYXhfcmVzcG9uc2UoCisgICAgICAgICAgICByZXNwb25z ZT1yZXNbJ3Jvd3MnXSwKKyAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAg ICAgICAgICkKKworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYg Z2V0X3RvYXN0X3RhYmxlX3ZhY3V1bShzZWxmLCBnaWQsIHNpZCwgZGlkLCBz Y2lkPU5vbmUsIHRpZD1Ob25lKToKKyAgICAgICAgIiIiCisgICAgICAgIEZl dGNoIHRoZSBkZWZhdWx0IHZhbHVlcyBmb3IgdG9hc3QgdGFibGUgYXV0by12 YWN1dW0KKyAgICAgICAgZmllbGRzLCByZXR1cm4gYW4gYXJyYXkgb2YKKyAg ICAgICAgICAtIGxhYmVsCisgICAgICAgICAgLSBuYW1lCisgICAgICAgICAg LSBzZXR0aW5nCisgICAgICAgIHZhbHVlcworICAgICAgICAiIiIKKyAgICAg ICAgcmVzID0gc2VsZi5nZXRfdmFjdXVtX3RvYXN0X3NldHRpbmdzKHNlbGYu Y29ubikKKyAgICAgICAgcmV0dXJuIGFqYXhfcmVzcG9uc2UoCisgICAgICAg ICAgICByZXNwb25zZT1yZXNbJ3Jvd3MnXSwKKyAgICAgICAgICAgIHN0YXR1 cz0yMDAKKyAgICAgICAgICAgICkKKworICAgIEBjaGVja19wcmVjb25kaXRp b24KKyAgICBkZWYgZ2V0X2FjY2Vzc19tZXRob2RzKHNlbGYsIGdpZCwgc2lk LCBkaWQsIHNjaWQsIHRpZD1Ob25lKToKKyAgICAgICAgIiIiCisgICAgICAg IFRoaXMgZnVuY3Rpb24gcmV0dXJucyBhY2Nlc3MgbWV0aG9kcy4KKworICAg ICAgICBBcmdzOgorICAgICAgICAgIGdpZDogU2VydmVyIEdyb3VwIElECisg ICAgICAgICAgc2lkOiBTZXJ2ZXIgSUQKKyAgICAgICAgICBkaWQ6IERhdGFi YXNlIElECisgICAgICAgICAgc2NpZDogU2NoZW1hIElECisgICAgICAgICAg dGlkOiBUYWJsZSBJRAorICAgICAgICAgIGV4aWQ6IEV4Y2x1c2lvbiBjb25z dHJhaW50IElECisKKyAgICAgICAgUmV0dXJuczoKKworICAgICAgICAiIiIK KyAgICAgICAgcmVzID0gW3snbGFiZWwnOiAnJywgJ3ZhbHVlJzogJyd9XQor ICAgICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAi LyIuam9pbihbc2VsZi5leGNsdXNpb25fY29uc3RyYWludF90ZW1wbGF0ZV9w YXRoLAorICAgICAgICAgICAgICAgICAgICAgICdnZXRfYWNjZXNzX21ldGhv ZHMuc3FsJ10pKQorICAgICAgICBzdGF0dXMsIHJlc3QgPSBzZWxmLmNvbm4u ZXhlY3V0ZV8yZGFycmF5KHNxbCkKKworICAgICAgICBpZiBub3Qgc3RhdHVz OgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihl cnJvcm1zZz1yZXN0KQorCisgICAgICAgIGZvciByb3cgaW4gcmVzdFsncm93 cyddOgorICAgICAgICAgICAgcmVzLmFwcGVuZCgKKyAgICAgICAgICAgICAg ICB7J2xhYmVsJzogcm93WydhbW5hbWUnXSwgJ3ZhbHVlJzogcm93WydhbW5h bWUnXX0KKyAgICAgICAgICAgICkKKyAgICAgICAgcmV0dXJuIG1ha2VfanNv bl9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICBkYXRhPXJlcywKKyAgICAg ICAgICAgICAgICBzdGF0dXM9MjAwCisgICAgICAgICAgICAgICAgKQorCisg ICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBnZXRfb3Blcl9jbGFz cyhzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQ9Tm9uZSk6CisgICAg ICAgICIiIgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgZ2lkOiBTZXJ2 ZXIgR3JvdXAgSUQKKyAgICAgICAgICBzaWQ6IFNlcnZlciBJRAorICAgICAg ICAgIGRpZDogRGF0YWJhc2UgSUQKKyAgICAgICAgICBzY2lkOiBTY2hlbWEg SUQKKyAgICAgICAgICB0aWQ6IFRhYmxlIElECisgICAgICAgICAgZXhpZDog RXhjbHVzaW9uIGNvbnN0cmFpbnQgSUQKKworICAgICAgICBSZXR1cm5zOgor CisgICAgICAgICIiIgorICAgICAgICBkYXRhID0gcmVxdWVzdC5hcmdzIGlm IHJlcXVlc3QuYXJncyBlbHNlIE5vbmUKKyAgICAgICAgdHJ5OgorICAgICAg ICAgICAgaWYgZGF0YSBhbmQgJ2luZGV4dHlwZScgaW4gZGF0YToKKyAgICAg ICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoCisgICAgICAgICAg ICAgICAgICAgICIvIi5qb2luKFtzZWxmLmV4Y2x1c2lvbl9jb25zdHJhaW50 X3RlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAnZ2V0X29wZXJfY2xhc3Muc3FsJ10pLAorICAgICAgICAgICAgICAgICAg ICBpbmRleHR5cGU9ZGF0YVsnaW5kZXh0eXBlJ10pCisKKyAgICAgICAgICAg ICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlXzJkYXJyYXko U1FMKQorCisgICAgICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAg ICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihl cnJvcm1zZz1yZXMpCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gW10KKyAg ICAgICAgICAgICAgICBmb3Igcm93IGluIHJlc1sncm93cyddOgorICAgICAg ICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKFtyb3dbJ29wY25hbWUnXSwg cm93WydvcGNuYW1lJ11dKQorICAgICAgICAgICAgICAgIHJldHVybiBtYWtl X2pzb25fcmVzcG9uc2UoCisgICAgICAgICAgICAgICAgICAgIGRhdGE9cmVz dWx0LAorICAgICAgICAgICAgICAgICAgICBzdGF0dXM9MjAwCisgICAgICAg ICAgICAgICAgICAgICkKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBl OgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihl cnJvcm1zZz1zdHIoZSkpCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisg ICAgZGVmIGdldF9vcGVyYXRvcihzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lk LCB0aWQ9Tm9uZSk6CisgICAgICAgICIiIgorCisgICAgICAgIEFyZ3M6Cisg ICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAgSUQKKyAgICAgICAgICBzaWQ6 IFNlcnZlciBJRAorICAgICAgICAgIGRpZDogRGF0YWJhc2UgSUQKKyAgICAg ICAgICBzY2lkOiBTY2hlbWEgSUQKKyAgICAgICAgICB0aWQ6IFRhYmxlIElE CisgICAgICAgICAgZXhpZDogRXhjbHVzaW9uIGNvbnN0cmFpbnQgSUQKKwor ICAgICAgICBSZXR1cm5zOgorCisgICAgICAgICIiIgorICAgICAgICBkYXRh ID0gcmVxdWVzdC5hcmdzIGlmIHJlcXVlc3QuYXJncyBlbHNlIE5vbmUKKyAg ICAgICAgdHJ5OgorICAgICAgICAgICAgaWYgZGF0YSBhbmQgJ2NvbF90eXBl JyBpbiBkYXRhOgorICAgICAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1w bGF0ZSgKKyAgICAgICAgICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYuZXhj bHVzaW9uX2NvbnN0cmFpbnRfdGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICdnZXRfb3BlcmF0b3Iuc3FsJ10pLAorICAg ICAgICAgICAgICAgICAgICB0eXBlPWRhdGFbJ2NvbF90eXBlJ10sCisgICAg ICAgICAgICAgICAgICAgIHNob3dfc3lzb2JqPXNlbGYuYmx1ZXByaW50LnNo b3dfc3lzdGVtX29iamVjdHMpCisKKyAgICAgICAgICAgICAgICBzdGF0dXMs IHJlcyA9IHNlbGYuY29ubi5leGVjdXRlXzJkYXJyYXkoU1FMKQorCisgICAg ICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICAg ICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMp CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gW10KKyAgICAgICAgICAgICAg ICBmb3Igcm93IGluIHJlc1sncm93cyddOgorICAgICAgICAgICAgICAgICAg ICByZXN1bHQuYXBwZW5kKFtyb3dbJ29wcm5hbWUnXSwgcm93WydvcHJuYW1l J11dKQorICAgICAgICAgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9u c2UoCisgICAgICAgICAgICAgICAgICAgIGRhdGE9cmVzdWx0LAorICAgICAg ICAgICAgICAgICAgICBzdGF0dXM9MjAwCisgICAgICAgICAgICAgICAgICAg ICkKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAg ICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1zdHIo ZSkpCisKKyAgICBkZWYgX2NvbHVtbnNfZm9ybWF0dGVyKHNlbGYsIHRpZCwg ZGF0YSk6CisgICAgICAgICIiIgorICAgICAgICBBcmdzOgorICAgICAgICAg ICAgdGlkOiBUYWJsZSBPSUQKKyAgICAgICAgICAgIGRhdGE6IGRpY3Qgb2Yg cXVlcnkgcmVzdWx0CisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAg IEl0IHdpbGwgcmV0dXJuIGZvcm1hdHRlZCBvdXRwdXQgb2YgcXVlcnkgcmVz dWx0CisgICAgICAgICAgICBhcyBwZXIgY2xpZW50IG1vZGVsIGZvcm1hdCBm b3IgY29sdW1uIG5vZGUKKyAgICAgICAgIiIiCisgICAgICAgIGZvciBjb2x1 bW4gaW4gZGF0YVsnY29sdW1ucyddOgorCisgICAgICAgICAgICAjIFdlIG5l ZWQgdG8gZm9ybWF0IHZhcmlhYmxlcyBhY2NvcmRpbmcgdG8gY2xpZW50IGpz IGNvbGxlY3Rpb24KKyAgICAgICAgICAgIGlmICdhdHRvcHRpb25zJyBpbiBj b2x1bW4gYW5kIGNvbHVtblsnYXR0b3B0aW9ucyddIGlzIG5vdCBOb25lOgor ICAgICAgICAgICAgICAgIHNwY29wdGlvbnMgPSBbXQorICAgICAgICAgICAg ICAgIGZvciBzcGNvcHRpb24gaW4gY29sdW1uWydhdHRvcHRpb25zJ106Cisg ICAgICAgICAgICAgICAgICAgIGssIHYgPSBzcGNvcHRpb24uc3BsaXQoJz0n KQorICAgICAgICAgICAgICAgICAgICBzcGNvcHRpb25zLmFwcGVuZCh7J25h bWUnOiBrLCAndmFsdWUnOiB2fSkKKworICAgICAgICAgICAgICAgIGNvbHVt blsnYXR0b3B0aW9ucyddID0gc3Bjb3B0aW9ucworCisgICAgICAgICAgICAj IE5lZWQgdG8gZm9ybWF0IHNlY3VyaXR5IGxhYmVscyBhY2NvcmRpbmcgdG8g Y2xpZW50IGpzIGNvbGxlY3Rpb24KKyAgICAgICAgICAgIGlmICdzZWNsYWJl bHMnIGluIGNvbHVtbiBhbmQgY29sdW1uWydzZWNsYWJlbHMnXSBpcyBub3Qg Tm9uZToKKyAgICAgICAgICAgICAgICBzZWNsYWJlbHMgPSBbXQorICAgICAg ICAgICAgICAgIGZvciBzZWNsYmxzIGluIGNvbHVtblsnc2VjbGFiZWxzJ106 CisgICAgICAgICAgICAgICAgICAgIGssIHYgPSBzZWNsYmxzLnNwbGl0KCc9 JykKKyAgICAgICAgICAgICAgICAgICAgc2VjbGFiZWxzLmFwcGVuZCh7J3By b3ZpZGVyJzogaywgJ2xhYmVsJzogdn0pCisKKyAgICAgICAgICAgICAgICBj b2x1bW5bJ3NlY2xhYmVscyddID0gc2VjbGFiZWxzCisKKyAgICAgICAgICAg IGlmICdhdHRudW0nIGluIGNvbHVtbiBhbmQgY29sdW1uWydhdHRudW0nXSBp cyBub3QgTm9uZSBhbmQgXAorICAgICAgICAgICAgICAgICAgICBjb2x1bW5b J2F0dG51bSddID4gMDoKKyAgICAgICAgICAgICAgICAjIFdlIG5lZWQgdG8g cGFyc2UgJiBjb252ZXJ0IEFDTCBjb21pbmcgZnJvbSBkYXRhYmFzZSB0byBq c29uIGZvcm1hdAorICAgICAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1w bGF0ZSgiLyIuam9pbihbc2VsZi5jb2x1bW5fdGVtcGxhdGVfcGF0aCwgJ2Fj bC5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHRpZD10aWQsIGNsaWQ9Y29sdW1uWydhdHRudW0nXSkKKyAgICAgICAg ICAgICAgICBzdGF0dXMsIGFjbCA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3Qo U1FMKQorCisgICAgICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAg ICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihl cnJvcm1zZz1hY2wpCisKKyAgICAgICAgICAgICAgICAjIFdlIHdpbGwgc2V0 IGdldCBwcml2aWxlZ2VzIGZyb20gYWNsIHNxbCBzbyB3ZSBkb24ndCBuZWVk CisgICAgICAgICAgICAgICAgIyBpdCBmcm9tIHByb3BlcnRpZXMgc3FsCisg ICAgICAgICAgICAgICAgY29sdW1uWydhdHRhY2wnXSA9IFtdCisKKyAgICAg ICAgICAgICAgICBmb3Igcm93IGluIGFjbFsncm93cyddOgorICAgICAgICAg ICAgICAgICAgICBwcml2ID0gcGFyc2VfcHJpdl9mcm9tX2RiKHJvdykKKyAg ICAgICAgICAgICAgICAgICAgY29sdW1uLnNldGRlZmF1bHQocm93WydkZWZ0 eXBlJ10sIFtdKS5hcHBlbmQocHJpdikKKworICAgICAgICAgICAgICAgICMg d2UgYXJlIHJlY2VpdmluZyByZXF1ZXN0IHdoZW4gaW4gZWRpdCBtb2RlCisg ICAgICAgICAgICAgICAgIyB3ZSB3aWxsIHNlbmQgZmlsdGVyZWQgdHlwZXMg cmVsYXRlZCB0byBjdXJyZW50IHR5cGUKKyAgICAgICAgICAgICAgICBwcmVz ZW50X3R5cGUgPSBjb2x1bW5bJ2NsdHlwZSddCisKKyAgICAgICAgICAgICAg ICB0eXBlX2lkID0gY29sdW1uWydhdHR0eXBpZCddCisKKyAgICAgICAgICAg ICAgICBmdWxsdHlwZSA9IHNlbGYuZ2V0X2Z1bGxfdHlwZSgKKyAgICAgICAg ICAgICAgICAgICAgY29sdW1uWyd0eXBuc3BuYW1lJ10sIGNvbHVtblsndHlw bmFtZSddLAorICAgICAgICAgICAgICAgICAgICBjb2x1bW5bJ2lzZHVwJ10s IGNvbHVtblsnYXR0bmRpbXMnXSwgY29sdW1uWydhdHR0eXBtb2QnXQorICAg ICAgICAgICAgICAgICkKKworICAgICAgICAgICAgICAgIGltcG9ydCByZQor ICAgICAgICAgICAgICAgICMgSWYgd2UgaGF2ZSBsZW5ndGggJiBwcmVjaXNp b24gYm90aAorICAgICAgICAgICAgICAgIG1hdGNoT2JqID0gcmUuc2VhcmNo KHInKFxkKyksKFxkKyknLCBmdWxsdHlwZSkKKyAgICAgICAgICAgICAgICBp ZiBtYXRjaE9iajoKKyAgICAgICAgICAgICAgICAgICAgY29sdW1uWydhdHRs ZW4nXSA9IG1hdGNoT2JqLmdyb3VwKDEpCisgICAgICAgICAgICAgICAgICAg IGNvbHVtblsnYXR0cHJlY2lzaW9uJ10gPSBtYXRjaE9iai5ncm91cCgyKQor ICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICMg SWYgd2UgaGF2ZSBsZW5ndGggb25seQorICAgICAgICAgICAgICAgICAgICBt YXRjaE9iaiA9IHJlLnNlYXJjaChyJyhcZCspJywgZnVsbHR5cGUpCisgICAg ICAgICAgICAgICAgICAgIGlmIG1hdGNoT2JqOgorICAgICAgICAgICAgICAg ICAgICAgICAgY29sdW1uWydhdHRsZW4nXSA9IG1hdGNoT2JqLmdyb3VwKDEp CisgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5bJ2F0dHByZWNpc2lv biddID0gTm9uZQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAg ICAgICAgICAgICAgICAgICAgY29sdW1uWydhdHRsZW4nXSA9IE5vbmUKKyAg ICAgICAgICAgICAgICAgICAgICAgIGNvbHVtblsnYXR0cHJlY2lzaW9uJ10g PSBOb25lCisKKyAgICAgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxh dGUoIi8iLmpvaW4oW3NlbGYuY29sdW1uX3RlbXBsYXRlX3BhdGgsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn aXNfcmVmZXJlbmNlZC5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHRpZD10aWQsIGNsaWQ9Y29sdW1uWydhdHRudW0n XSkKKworICAgICAgICAgICAgICAgIHN0YXR1cywgaXNfcmVmZXJlbmNlID0g c2VsZi5jb25uLmV4ZWN1dGVfc2NhbGFyKFNRTCkKKworICAgICAgICAgICAg ICAgIGVkaXRfdHlwZXNfbGlzdCA9IGxpc3QoKQorICAgICAgICAgICAgICAg ICMgV2Ugd2lsbCBuZWVkIHByZXNlbnQgdHlwZSBpbiBlZGl0IG1vZGUKKyAg ICAgICAgICAgICAgICBlZGl0X3R5cGVzX2xpc3QuYXBwZW5kKHByZXNlbnRf dHlwZSkKKworICAgICAgICAgICAgICAgIGlmIGludChpc19yZWZlcmVuY2Up ID09IDA6CisgICAgICAgICAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1w bGF0ZSgiLyIuam9pbihbc2VsZi5jb2x1bW5fdGVtcGxhdGVfcGF0aCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAnZWRpdF9tb2RlX3R5cGVzLnNxbCddKSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVfaWQ9dHlwZV9pZCkK KyAgICAgICAgICAgICAgICAgICAgc3RhdHVzLCByc2V0ID0gc2VsZi5jb25u LmV4ZWN1dGVfMmRhcnJheShTUUwpCisKKyAgICAgICAgICAgICAgICAgICAg Zm9yIHJvdyBpbiByc2V0Wydyb3dzJ106CisgICAgICAgICAgICAgICAgICAg ICAgICBlZGl0X3R5cGVzX2xpc3QuYXBwZW5kKHJvd1sndHlwbmFtZSddKQor ICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGVk aXRfdHlwZXNfbGlzdC5hcHBlbmQocHJlc2VudF90eXBlKQorCisgICAgICAg ICAgICAgICAgY29sdW1uWydlZGl0X3R5cGVzJ10gPSBlZGl0X3R5cGVzX2xp c3QKKworICAgICAgICAgICAgICAgICMgTWFudWFsIERhdGEgdHlwZSBmb3Jt YXR0aW5nCisgICAgICAgICAgICAgICAgIyBJZiBkYXRhIHR5cGUgaGFzICgp IHdpdGggdGhlbSB0aGVuIHdlIG5lZWQgdG8gcmVtb3ZlIHRoZW0KKyAgICAg ICAgICAgICAgICAjIGVnIGJpdCgxKSBiZWNhdXNlIHdlIG5lZWQgdG8gbWF0 Y2ggdGhlIG5hbWUgd2l0aCBjb21ib2JveAorICAgICAgICAgICAgICAgIGlz QXJyYXkgPSBGYWxzZQorICAgICAgICAgICAgICAgIGlmIGNvbHVtblsnY2x0 eXBlJ10uZW5kc3dpdGgoJ1tdJyk6CisgICAgICAgICAgICAgICAgICAgIGlz QXJyYXkgPSBUcnVlCisgICAgICAgICAgICAgICAgICAgIGNvbHVtblsnY2x0 eXBlJ10gPSBjb2x1bW5bJ2NsdHlwZSddLnJzdHJpcCgnW10nKQorCisgICAg ICAgICAgICAgICAgaWR4ID0gY29sdW1uWydjbHR5cGUnXS5maW5kKCcoJykK KyAgICAgICAgICAgICAgICBpZiBpZHggYW5kIGNvbHVtblsnY2x0eXBlJ10u ZW5kc3dpdGgoJyknKToKKyAgICAgICAgICAgICAgICAgICAgY29sdW1uWydj bHR5cGUnXSA9IGNvbHVtblsnY2x0eXBlJ11bOmlkeF0KKworICAgICAgICAg ICAgICAgIGlmIGlzQXJyYXk6CisgICAgICAgICAgICAgICAgICAgIGNvbHVt blsnY2x0eXBlJ10gKz0gIltdIgorCisgICAgICAgICAgICAgICAgaWYgJ2lu ZGtleScgaW4gY29sdW1uOgorICAgICAgICAgICAgICAgICAgICAjIEN1cnJl bnQgY29sdW1uCisgICAgICAgICAgICAgICAgICAgIGF0dG51bSA9IHN0cihj b2x1bW5bJ2F0dG51bSddKQorCisgICAgICAgICAgICAgICAgICAgICMgU2lu Z2xlL0xpc3Qgb2YgcHJpbWFyeSBrZXkgY29sdW1uKHMpCisgICAgICAgICAg ICAgICAgICAgIGluZGtleSA9IHN0cihjb2x1bW5bJ2luZGtleSddKQorCisg ICAgICAgICAgICAgICAgICAgICMgV2Ugd2lsbCBjaGVjayBpZiBjb2x1bW4g aXMgaW4gcHJpbWFyeSBjb2x1bW4ocykKKyAgICAgICAgICAgICAgICAgICAg aWYgYXR0bnVtIGluIGluZGtleS5zcGxpdCgiICIpOgorICAgICAgICAgICAg ICAgICAgICAgICAgY29sdW1uWydpc19wcmltYXJ5X2tleSddID0gVHJ1ZQor ICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAg ICAgICAgY29sdW1uWydpc19wcmltYXJ5X2tleSddID0gRmFsc2UKKworICAg ICAgICByZXR1cm4gZGF0YQorCisgICAgZGVmIF9pbmRleF9jb25zdHJhaW50 c19mb3JtYXR0ZXIoc2VsZiwgdGlkLCBkYXRhKToKKyAgICAgICAgIiIiCisg ICAgICAgIEFyZ3M6CisgICAgICAgICAgICB0aWQ6IFRhYmxlIE9JRAorICAg ICAgICAgICAgZGF0YTogZGljdCBvZiBxdWVyeSByZXN1bHQKKworICAgICAg ICBSZXR1cm5zOgorICAgICAgICAgICAgSXQgd2lsbCByZXR1cm4gZm9ybWF0 dGVkIG91dHB1dCBvZiBxdWVyeSByZXN1bHQKKyAgICAgICAgICAgIGFzIHBl ciBjbGllbnQgbW9kZWwgZm9ybWF0IGZvciBpbmRleCBjb25zdHJhaW50IG5v ZGUKKyAgICAgICAgIiIiCisKKyAgICAgICAgIyBXZSB3aWxsIGZldGNoIGFs bCB0aGUgaW5kZXggY29uc3RyYWludHMgZm9yIHRoZSB0YWJsZQorICAgICAg ICBpbmRleF9jb25zdHJhaW50cyA9IHsKKyAgICAgICAgICAgICdwJzogJ3By aW1hcnlfa2V5JywgJ3UnOiAndW5pcXVlX2NvbnN0cmFpbnQnCisgICAgICAg IH0KKworICAgICAgICBmb3IgY3R5cGUgaW4gaW5kZXhfY29uc3RyYWludHMu a2V5cygpOgorICAgICAgICAgICAgZGF0YVtpbmRleF9jb25zdHJhaW50c1tj dHlwZV1dID0gW10KKworICAgICAgICAgICAgc3FsID0gcmVuZGVyX3RlbXBs YXRlKCIvIi5qb2luKFtzZWxmLmluZGV4X2NvbnN0cmFpbnRfdGVtcGxhdGVf cGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJ3Byb3BlcnRpZXMuc3FsJ10pLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHRpZD10aWQsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY29uc3RyYWludF90eXBlPWN0eXBlKQorICAgICAg ICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KHNx bCkKKworICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAg ICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJl cykKKworICAgICAgICAgICAgZm9yIHJvdyBpbiByZXNbJ3Jvd3MnXToKKyAg ICAgICAgICAgICAgICByZXN1bHQgPSByb3cKKyAgICAgICAgICAgICAgICBz cWwgPSByZW5kZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAgICAgICAgICIv Ii5qb2luKFtzZWxmLmluZGV4X2NvbnN0cmFpbnRfdGVtcGxhdGVfcGF0aCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnZXRfY29uc3RyYWlu dF9jb2xzLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgY2lkPXJvd1sn b2lkJ10sCisgICAgICAgICAgICAgICAgICAgIGNvbGNudD1yb3dbJ2luZG5h dHRzJ10pCisgICAgICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNv bm4uZXhlY3V0ZV9kaWN0KHNxbCkKKworICAgICAgICAgICAgICAgIGlmIG5v dCBzdGF0dXM6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5h bF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgICAgICAg ICAgY29sdW1ucyA9IFtdCisgICAgICAgICAgICAgICAgZm9yIHIgaW4gcmVz Wydyb3dzJ106CisgICAgICAgICAgICAgICAgICAgIGNvbHVtbnMuYXBwZW5k KHsiY29sdW1uIjogICByWydjb2x1bW4nXS5zdHJpcCgnIicpfSkKKworICAg ICAgICAgICAgICAgIHJlc3VsdFsnY29sdW1ucyddID0gY29sdW1ucworCisg ICAgICAgICAgICAgICAgIyBJZiBub3QgZXhpc3RzIHRoZW4gY3JlYXRlIGxp c3QgYW5kL29yIGFwcGVuZCBpbnRvCisgICAgICAgICAgICAgICAgIyBleGlz dGluZyBsaXN0IFsgQWRkaW5nIGludG8gbWFpbiBkYXRhIGRpY3RdCisgICAg ICAgICAgICAgICAgZGF0YS5zZXRkZWZhdWx0KGluZGV4X2NvbnN0cmFpbnRz W2N0eXBlXSwgW10pLmFwcGVuZChyZXN1bHQpCisKKyAgICAgICAgcmV0dXJu IGRhdGEKKworICAgIGRlZiBfZm9yZWlnbl9rZXlfZm9ybWF0dGVyKHNlbGYs IHRpZCwgZGF0YSk6CisgICAgICAgICIiIgorICAgICAgICBBcmdzOgorICAg ICAgICAgICAgdGlkOiBUYWJsZSBPSUQKKyAgICAgICAgICAgIGRhdGE6IGRp Y3Qgb2YgcXVlcnkgcmVzdWx0CisKKyAgICAgICAgUmV0dXJuczoKKyAgICAg ICAgICAgIEl0IHdpbGwgcmV0dXJuIGZvcm1hdHRlZCBvdXRwdXQgb2YgcXVl cnkgcmVzdWx0CisgICAgICAgICAgICBhcyBwZXIgY2xpZW50IG1vZGVsIGZv cm1hdCBmb3IgZm9yZWlnbiBrZXkgY29uc3RyYWludCBub2RlCisgICAgICAg ICIiIgorCisgICAgICAgICMgV2Ugd2lsbCBmZXRjaCBhbGwgdGhlIGluZGV4 IGNvbnN0cmFpbnRzIGZvciB0aGUgdGFibGUKKyAgICAgICAgc3FsID0gcmVu ZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLmZvcmVpZ25fa2V5X3RlbXBs YXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJ3Byb3BlcnRpZXMuc3FsJ10pLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHRpZD10aWQpCisKKyAgICAgICAgc3RhdHVzLCBy ZXN1bHQgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KHNxbCkKKworICAgICAg ICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFs X3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXN1bHQpCisKKyAgICAgICAgZm9y IGZrIGluIHJlc3VsdFsncm93cyddOgorCisgICAgICAgICAgICBzcWwgPSBy ZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYuZm9yZWlnbl9rZXlfdGVt cGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAnZ2V0X2NvbnN0cmFpbnRfY29scy5zcWwnXSksCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB0aWQ9dGlkLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAga2V5cz16aXAoZmtbJ2NvbmZrZXknXSwgZmtb J2NvbmtleSddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bmZyZWxpZD1ma1snY29uZnJlbGlkJ10pCisKKyAgICAgICAgICAgIHN0YXR1 cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChzcWwpCisKKyAgICAg ICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAgcmV0dXJu IGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAg ICAgICAgIGNvbHVtbnMgPSBbXQorICAgICAgICAgICAgY29scyA9IFtdCisg ICAgICAgICAgICBmb3Igcm93IGluIHJlc1sncm93cyddOgorICAgICAgICAg ICAgICAgIGNvbHVtbnMuYXBwZW5kKHsibG9jYWxfY29sdW1uIjogcm93Wydj b25hdHRuYW1lJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICJyZWZlcmVuY2VzIjogZmtbJ2NvbmZyZWxpZCddLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAicmVmZXJlbmNlZCI6IHJvd1snY29uZmF0 dG5hbWUnXX0pCisgICAgICAgICAgICAgICAgY29scy5hcHBlbmQocm93Wydj b25hdHRuYW1lJ10pCisKKyAgICAgICAgICAgIGZrWydjb2x1bW5zJ10gPSBj b2x1bW5zCisKKyAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgi LyIuam9pbihbc2VsZi5mb3JlaWduX2tleV90ZW1wbGF0ZV9wYXRoLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2V0 X3BhcmVudC5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdGlkPWZrWydjb2x1bW5zJ11bMF1bJ3JlZmVyZW5jZXMnXSkKKwor ICAgICAgICAgICAgc3RhdHVzLCByc2V0ID0gc2VsZi5jb25uLmV4ZWN1dGVf MmRhcnJheShTUUwpCisgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAg ICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJy b3Jtc2c9cnNldCkKKworICAgICAgICAgICAgZmtbJ3JlbW90ZV9zY2hlbWEn XSA9IHJzZXRbJ3Jvd3MnXVswXVsnc2NoZW1hJ10KKyAgICAgICAgICAgIGZr WydyZW1vdGVfdGFibGUnXSA9IHJzZXRbJ3Jvd3MnXVswXVsndGFibGUnXQor CisgICAgICAgICAgICBjb3ZlcmluZ2luZGV4ID0gc2VsZi5zZWFyY2hfY292 ZXJpbmdpbmRleCh0aWQsIGNvbHMpCisKKyAgICAgICAgICAgIGZrWydjb3Zl cmluZ2luZGV4J10gPSBjb3ZlcmluZ2luZGV4CisgICAgICAgICAgICBpZiBj b3ZlcmluZ2luZGV4OgorICAgICAgICAgICAgICAgIGZrWydhdXRvaW5kZXgn XSA9IFRydWUKKyAgICAgICAgICAgICAgICBma1snaGFzaW5kZXgnXSA9IFRy dWUKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZmtbJ2F1 dG9pbmRleCddID0gRmFsc2UKKyAgICAgICAgICAgICAgICBma1snaGFzaW5k ZXgnXSA9IEZhbHNlCisgICAgICAgICAgICAjIElmIG5vdCBleGlzdHMgdGhl biBjcmVhdGUgbGlzdCBhbmQvb3IgYXBwZW5kIGludG8KKyAgICAgICAgICAg ICMgZXhpc3RpbmcgbGlzdCBbIEFkZGluZyBpbnRvIG1haW4gZGF0YSBkaWN0 XQorICAgICAgICAgICAgZGF0YS5zZXRkZWZhdWx0KCdmb3JlaWduX2tleScs IFtdKS5hcHBlbmQoZmspCisKKyAgICAgICAgcmV0dXJuIGRhdGEKKworICAg IGRlZiBfY2hlY2tfY29uc3RyYWludF9mb3JtYXR0ZXIoc2VsZiwgdGlkLCBk YXRhKToKKyAgICAgICAgIiIiCisgICAgICAgIEFyZ3M6CisgICAgICAgICAg ICB0aWQ6IFRhYmxlIE9JRAorICAgICAgICAgICAgZGF0YTogZGljdCBvZiBx dWVyeSByZXN1bHQKKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAg SXQgd2lsbCByZXR1cm4gZm9ybWF0dGVkIG91dHB1dCBvZiBxdWVyeSByZXN1 bHQKKyAgICAgICAgICAgIGFzIHBlciBjbGllbnQgbW9kZWwgZm9ybWF0IGZv ciBjaGVjayBjb25zdHJhaW50IG5vZGUKKyAgICAgICAgIiIiCisKKyAgICAg ICAgIyBXZSB3aWxsIGZldGNoIGFsbCB0aGUgaW5kZXggY29uc3RyYWludHMg Zm9yIHRoZSB0YWJsZQorICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUo Ii8iLmpvaW4oW3NlbGYuY2hlY2tfY29uc3RyYWludF90ZW1wbGF0ZV9wYXRo LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdw cm9wZXJ0aWVzLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHRpZD10aWQpCisKKyAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNv bm4uZXhlY3V0ZV9kaWN0KFNRTCkKKworICAgICAgICBpZiBub3Qgc3RhdHVz OgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihl cnJvcm1zZz1yZXMpCisgICAgICAgICMgSWYgbm90IGV4aXN0cyB0aGVuIGNy ZWF0ZSBsaXN0IGFuZC9vciBhcHBlbmQgaW50bworICAgICAgICAjIGV4aXN0 aW5nIGxpc3QgWyBBZGRpbmcgaW50byBtYWluIGRhdGEgZGljdF0KKworICAg ICAgICBkYXRhWydjaGVja19jb25zdHJhaW50J10gPSByZXNbJ3Jvd3MnXQor CisgICAgICAgIHJldHVybiBkYXRhCisKKyAgICBkZWYgX2V4Y2x1c2lvbl9j b25zdHJhaW50X2Zvcm1hdHRlcihzZWxmLCB0aWQsIGRhdGEpOgorICAgICAg ICAiIiIKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIHRpZDogVGFibGUg T0lECisgICAgICAgICAgICBkYXRhOiBkaWN0IG9mIHF1ZXJ5IHJlc3VsdAor CisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBJdCB3aWxsIHJldHVy biBmb3JtYXR0ZWQgb3V0cHV0IG9mIHF1ZXJ5IHJlc3VsdAorICAgICAgICAg ICAgYXMgcGVyIGNsaWVudCBtb2RlbCBmb3JtYXQgZm9yIGV4Y2x1c2lvbiBj b25zdHJhaW50IG5vZGUKKyAgICAgICAgIiIiCisKKyAgICAgICAgIyBXZSB3 aWxsIGZldGNoIGFsbCB0aGUgaW5kZXggY29uc3RyYWludHMgZm9yIHRoZSB0 YWJsZQorICAgICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4o W3NlbGYuZXhjbHVzaW9uX2NvbnN0cmFpbnRfdGVtcGxhdGVfcGF0aCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHJvcGVy dGllcy5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0 aWQ9dGlkKQorCisgICAgICAgIHN0YXR1cywgcmVzdWx0ID0gc2VsZi5jb25u LmV4ZWN1dGVfZGljdChzcWwpCisKKyAgICAgICAgaWYgbm90IHN0YXR1czoK KyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJy b3Jtc2c9cmVzdWx0KQorCisgICAgICAgIGZvciBleCBpbiByZXN1bHRbJ3Jv d3MnXToKKworICAgICAgICAgICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKCIv Ii5qb2luKFtzZWxmLmV4Y2x1c2lvbl9jb25zdHJhaW50X3RlbXBsYXRlX3Bh dGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICdnZXRfY29uc3RyYWludF9jb2xzLnNxbCddKSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjaWQ9ZXhbJ29pZCddLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbGNudD1leFsnaW5kbmF0 dHMnXSkKKworICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4u ZXhlY3V0ZV9kaWN0KHNxbCkKKworICAgICAgICAgICAgaWYgbm90IHN0YXR1 czoKKyAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vy cm9yKGVycm9ybXNnPXJlcykKKworICAgICAgICAgICAgY29sdW1ucyA9IFtd CisgICAgICAgICAgICBmb3Igcm93IGluIHJlc1sncm93cyddOgorICAgICAg ICAgICAgICAgIGlmIHJvd1snb3B0aW9ucyddICYgMToKKyAgICAgICAgICAg ICAgICAgICAgb3JkZXIgPSBGYWxzZQorICAgICAgICAgICAgICAgICAgICBu dWxsc19vcmRlciA9IFRydWUgaWYgKHJvd1snb3B0aW9ucyddICYgMikgZWxz ZSBGYWxzZQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAg ICAgICAgIG9yZGVyID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICBudWxs c19vcmRlciA9IFRydWUgaWYgKHJvd1snb3B0aW9ucyddICYgMikgZWxzZSBG YWxzZQorCisgICAgICAgICAgICAgICAgY29sdW1ucy5hcHBlbmQoeyJjb2x1 bW4iOiByb3dbJ2NvbGRlZiddLnN0cmlwKCciJyksCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICJvcGVyX2NsYXNzIjogcm93WydvcGNuYW1l J10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvcmRlciI6 IG9yZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibnVs bHNfb3JkZXIiOiBudWxsc19vcmRlciwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIm9wZXJhdG9yIjogcm93WydvcHJuYW1lJ10sCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb2xfdHlwZSI6IHJvd1sn ZGF0YXR5cGUnXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9 KQorCisgICAgICAgICAgICBleFsnY29sdW1ucyddID0gY29sdW1ucworICAg ICAgICAgICAgIyBJZiBub3QgZXhpc3RzIHRoZW4gY3JlYXRlIGxpc3QgYW5k L29yIGFwcGVuZCBpbnRvCisgICAgICAgICAgICAjIGV4aXN0aW5nIGxpc3Qg WyBBZGRpbmcgaW50byBtYWluIGRhdGEgZGljdF0KKyAgICAgICAgICAgIGRh dGEuc2V0ZGVmYXVsdCgnZXhjbHVkZV9jb25zdHJhaW50JywgW10pLmFwcGVu ZChleCkKKworICAgICAgICByZXR1cm4gZGF0YQorCisgICAgZGVmIHNlYXJj aF9jb3ZlcmluZ2luZGV4KHNlbGYsIHRpZCwgY29scyk6CisgICAgICAgICIi IgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgdGlkOiBUYWJsZSBpZAor ICAgICAgICAgIGNvbHM6IGNvbHVtbiBsaXN0CisKKyAgICAgICAgUmV0dXJu czoKKworICAgICAgICAiIiIKKworICAgICAgICBjb2xzID0gc2V0KGNvbHMp CisgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2Vs Zi5mb3JlaWduX2tleV90ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICdnZXRfY29uc3RyYWludHMuc3Fs J10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlkPXRpZCkK KyAgICAgICAgc3RhdHVzLCBjb25zdHJhaW50cyA9IHNlbGYuY29ubi5leGVj dXRlX2RpY3QoU1FMKQorCisgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAg ICAgICAgICByYWlzZSBFeGNlcHRpb24oY29uc3RyYWludHMpCisKKyAgICAg ICAgZm9yIGNvc3RybnQgaW4gY29uc3RyYWludHNbJ3Jvd3MnXToKKworICAg ICAgICAgICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAg ICAgICIvIi5qb2luKFtzZWxmLmZvcmVpZ25fa2V5X3RlbXBsYXRlX3BhdGgs ICdnZXRfY29scy5zcWwnXSksCisgICAgICAgICAgICAgICAgY2lkPWNvc3Ry bnRbJ29pZCddLAorICAgICAgICAgICAgICAgIGNvbGNudD1jb3N0cm50Wydp bmRuYXR0cyddKQorICAgICAgICAgICAgc3RhdHVzLCByZXN0ID0gc2VsZi5j b25uLmV4ZWN1dGVfZGljdChzcWwpCisKKyAgICAgICAgICAgIGlmIG5vdCBz dGF0dXM6CisgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZl cl9lcnJvcihlcnJvcm1zZz1yZXN0KQorCisgICAgICAgICAgICBpbmRleGNv bHMgPSBzZXQoKQorICAgICAgICAgICAgZm9yIHIgaW4gcmVzdFsncm93cydd OgorICAgICAgICAgICAgICAgIGluZGV4Y29scy5hZGQoclsnY29sdW1uJ10u c3RyaXAoJyInKSkKKworICAgICAgICAgICAgaWYgbGVuKGNvbHMgLSBpbmRl eGNvbHMpID09IGxlbihpbmRleGNvbHMgLSBjb2xzKSA9PSAwOgorICAgICAg ICAgICAgICAgIHJldHVybiBjb3N0cm50WyJpZHhuYW1lIl0KKworICAgICAg ICByZXR1cm4gTm9uZQorCisgICAgZGVmIF9mb3JtYXR0ZXIoc2VsZiwgc2Np ZCwgdGlkLCBkYXRhKToKKyAgICAgICAgIiIiCisgICAgICAgIEFyZ3M6Cisg ICAgICAgICAgICBkYXRhOiBkaWN0IG9mIHF1ZXJ5IHJlc3VsdAorICAgICAg ICAgICAgc2NpZDogc2NoZW1hIG9pZAorICAgICAgICAgICAgdGlkOiB0YWJs ZSBvaWQKKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgSXQgd2ls bCByZXR1cm4gZm9ybWF0dGVkIG91dHB1dCBvZiBxdWVyeSByZXN1bHQKKyAg ICAgICAgICAgIGFzIHBlciBjbGllbnQgbW9kZWwgZm9ybWF0CisgICAgICAg ICIiIgorICAgICAgICAjIE5lZWQgdG8gZm9ybWF0IHNlY3VyaXR5IGxhYmVs cyBhY2NvcmRpbmcgdG8gY2xpZW50IGpzIGNvbGxlY3Rpb24KKyAgICAgICAg aWYgJ3NlY2xhYmVscycgaW4gZGF0YSBhbmQgZGF0YVsnc2VjbGFiZWxzJ10g aXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWNsYWJlbHMgPSBbXQorICAg ICAgICAgICAgZm9yIHNlY2xibHMgaW4gZGF0YVsnc2VjbGFiZWxzJ106Cisg ICAgICAgICAgICAgICAgaywgdiA9IHNlY2xibHMuc3BsaXQoJz0nKQorICAg ICAgICAgICAgICAgIHNlY2xhYmVscy5hcHBlbmQoeydwcm92aWRlcic6IGss ICdsYWJlbCc6IHZ9KQorCisgICAgICAgICAgICBkYXRhWydzZWNsYWJlbHMn XSA9IHNlY2xhYmVscworCisgICAgICAgICMgV2UgbmVlZCB0byBwYXJzZSAm IGNvbnZlcnQgQUNMIGNvbWluZyBmcm9tIGRhdGFiYXNlIHRvIGpzb24gZm9y bWF0CisgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihb c2VsZi50ZW1wbGF0ZV9wYXRoLCAnYWNsLnNxbCddKSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHRpZD10aWQsIHNjaWQ9c2NpZCkKKyAgICAg ICAgc3RhdHVzLCBhY2wgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkK KyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBp bnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9YWNsKQorCisgICAgICAg ICMgV2Ugd2lsbCBzZXQgZ2V0IHByaXZpbGVnZXMgZnJvbSBhY2wgc3FsIHNv IHdlIGRvbid0IG5lZWQKKyAgICAgICAgIyBpdCBmcm9tIHByb3BlcnRpZXMg c3FsCisgICAgICAgIGZvciByb3cgaW4gYWNsWydyb3dzJ106CisgICAgICAg ICAgICBwcml2ID0gcGFyc2VfcHJpdl9mcm9tX2RiKHJvdykKKyAgICAgICAg ICAgIGlmIHJvd1snZGVmdHlwZSddIGluIGRhdGE6CisgICAgICAgICAgICAg ICAgZGF0YVtyb3dbJ2RlZnR5cGUnXV0uYXBwZW5kKHByaXYpCisgICAgICAg ICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGRhdGFbcm93WydkZWZ0eXBl J11dID0gW3ByaXZdCisKKyAgICAgICAgIyBXZSB3aWxsIGFkZCBBdXRvIHZh Y3V1bSBkZWZhdWx0cyB3aXRoIG91dCByZXN1bHQgZm9yIGdyaWQKKyAgICAg ICAgZGF0YVsndmFjdXVtX3RhYmxlJ10gPSBzZWxmLnBhcnNlX3ZhY3V1bV9k YXRhKHNlbGYuY29ubiwgZGF0YSwgJ3RhYmxlJykKKyAgICAgICAgZGF0YVsn dmFjdXVtX3RvYXN0J10gPSBzZWxmLnBhcnNlX3ZhY3V1bV9kYXRhKHNlbGYu Y29ubiwgZGF0YSwgJ3RvYXN0JykKKworICAgICAgICAjIEZldGNoIGNvbHVt bnMgZm9yIHRoZSB0YWJsZSBsb2dpYworICAgICAgICAjCisgICAgICAgICMg MSkgQ2hlY2sgaWYgb2ZfdHlwZSBhbmQgaW5oZXJpdGVkIHRhYmxlcyBhcmUg cHJlc2VudD8KKyAgICAgICAgIyAyKSBJZiB5ZXMgdGhlbiBGZXRjaCBhbGwg dGhlIGNvbHVtbnMgZm9yIG9mX3R5cGUgYW5kIGluaGVyaXRlZCB0YWJsZXMK KyAgICAgICAgIyAzKSBBZGQgY29sdW1ucyBpbiBjb2x1bW5zIGNvbGxlY3Rp b24KKyAgICAgICAgIyA0KSBGaW5kIGFsbCB0aGUgY29sdW1ucyBmb3IgdGFi bGVzIGFuZCBmaWx0ZXIgb3V0IGNvbHVtbnMgd2hpY2ggYXJlCisgICAgICAg ICMgICBub3QgaW5oZXJpdGVkIGZyb20gYW55IHRhYmxlICYgZm9ybWF0IHRo ZW0gb25lIGJ5IG9uZQorCisgICAgICAgICMgR2V0IG9mX3R5cGUgdGFibGUg Y29sdW1ucyBhbmQgYWRkIGl0IGludG8gY29sdW1ucyBkaWN0CisgICAgICAg IGlmIGRhdGFbJ3R5cG5hbWUnXToKKyAgICAgICAgICAgIFNRTCA9IHJlbmRl cl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2V0 X2NvbHVtbnNfZm9yX3RhYmxlLnNxbCddKSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB0bmFtZT1kYXRhWyd0eXBuYW1lJ10pCisKKyAg ICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGlj dChTUUwpCisgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAg ICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9 cmVzKQorICAgICAgICAgICAgZGF0YVsnY29sdW1ucyddID0gcmVzWydyb3dz J10KKworICAgICAgICAjIEdldCBpbmhlcml0ZWQgdGFibGUocykgY29sdW1u cyBhbmQgYWRkIGl0IGludG8gY29sdW1ucyBkaWN0CisgICAgICAgIGVsaWYg ZGF0YVsnY29sbF9pbmhlcml0cyddIGFuZCBsZW4oZGF0YVsnY29sbF9pbmhl cml0cyddKSA+IDA6CisgICAgICAgICAgICBjb2x1bW5zID0gW10KKyAgICAg ICAgICAgICMgUmV0dXJuIGFsbCB0YWJsZXMgd2hpY2ggY2FuIGJlIGluaGVy aXRlZCAmIGRvIG5vdCBzaG93CisgICAgICAgICAgICAjIHN5c3RlbSBjb2x1 bW5zCisgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpv aW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ2dldF9pbmhlcml0cy5zcWwnXSks CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd19zeXN0 ZW1fb2JqZWN0cz1GYWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICkKKyAgICAgICAgICAgIHN0YXR1cywgcnNldCA9IHNlbGYuY29u bi5leGVjdXRlXzJkYXJyYXkoU1FMKQorICAgICAgICAgICAgaWYgbm90IHN0 YXR1czoKKyAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVy X2Vycm9yKGVycm9ybXNnPXJzZXQpCisKKyAgICAgICAgICAgIGZvciByb3cg aW4gcnNldFsncm93cyddOgorICAgICAgICAgICAgICAgIGlmIHJvd1snaW5o ZXJpdHMnXSBpbiBkYXRhWydjb2xsX2luaGVyaXRzJ106CisgICAgICAgICAg ICAgICAgICAgICMgRmV0Y2ggY29sdW1ucyB1c2luZyBpbmhlcml0ZWQgdGFi bGUgT0lECisgICAgICAgICAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1w bGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdn ZXRfY29sdW1uc19mb3JfdGFibGUuc3FsJ10pLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlkPXJvd1snb2lkJ10pCisg ICAgICAgICAgICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4 ZWN1dGVfZGljdChTUUwpCisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBz dGF0dXM6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJu YWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKyAgICAgICAgICAgICAg ICAgICAgY29sdW1ucy5leHRlbmQocmVzWydyb3dzJ11bOl0pCisgICAgICAg ICAgICBkYXRhWydjb2x1bW5zJ10gPSBjb2x1bW5zCisKKyAgICAgICAgIyBX ZSB3aWxsIGZldGNoIGFsbCB0aGUgY29sdW1ucyBmb3IgdGhlIHRhYmxlIHVz aW5nCisgICAgICAgICMgY29sdW1ucyBwcm9wZXJ0aWVzLnNxbCwgc28gd2Ug bmVlZCB0byBzZXQgdGVtcGxhdGUgcGF0aAorICAgICAgICBTUUwgPSByZW5k ZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYuY29sdW1uX3RlbXBsYXRlX3Bh dGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg J3Byb3BlcnRpZXMuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdGlkPXRpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHNob3dfc3lzX29iamVjdHM9RmFsc2UKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICkKKworICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29u bi5leGVjdXRlX2RpY3QoU1FMKQorICAgICAgICBpZiBub3Qgc3RhdHVzOgor ICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJv cm1zZz1yZXMpCisgICAgICAgIGFsbF9jb2x1bW5zID0gcmVzWydyb3dzJ10K KworICAgICAgICAjIEZpbHRlciBpbmhlcml0ZWQgY29sdW1ucyBmcm9tIGFs bCBjb2x1bW5zCisgICAgICAgIGlmICdjb2x1bW5zJyBpbiBkYXRhIGFuZCBs ZW4oZGF0YVsnY29sdW1ucyddKSA+IDAgXAorICAgICAgICAgICAgYW5kIGxl bihhbGxfY29sdW1ucykgPiAwOgorICAgICAgICAgICAgY29sdW1ucyA9IFtd CisgICAgICAgICAgICBmb3Igcm93IGluIGRhdGFbJ2NvbHVtbnMnXToKKyAg ICAgICAgICAgICAgICBmb3IgaSwgY29sIGluIGVudW1lcmF0ZShhbGxfY29s dW1ucyk6CisgICAgICAgICAgICAgICAgICAgICMgSWYgYm90aCBuYW1lIGFy ZSBzYW1lIHRoZW4gcmVtb3ZlIGl0CisgICAgICAgICAgICAgICAgICAgICMg YXMgaXQgaXMgaW5oZXJpdGVkIGZyb20gb3RoZXIgdGFibGUKKyAgICAgICAg ICAgICAgICAgICAgaWYgY29sWyduYW1lJ10gPT0gcm93WyduYW1lJ106Cisg ICAgICAgICAgICAgICAgICAgICAgICAjIFJlbW92ZSBzYW1lIGNvbHVtbiBm cm9tIGFsbF9jb2x1bW5zIGFzCisgICAgICAgICAgICAgICAgICAgICAgICAj IGFscmVhZHkgaGF2ZSBpdCBjb2x1bW5zIGNvbGxlY3Rpb24KKyAgICAgICAg ICAgICAgICAgICAgICAgIGRlbCBhbGxfY29sdW1uc1tpXQorCisgICAgICAg ICAgICAjIElmIGFueSBjb2x1bW4gaXMgYWRkZWQgdGhlbiB1cGRhdGUgY29s dW1ucyBjb2xsZWN0aW9uCisgICAgICAgICAgICBpZiBsZW4oYWxsX2NvbHVt bnMpID4gMDoKKyAgICAgICAgICAgICAgICBkYXRhWydjb2x1bW5zJ10gKz0g YWxsX2NvbHVtbnMKKyAgICAgICAgIyBJZiBubyBpbmhlcml0ZWQgY29sdW1u cyBmb3VuZCB0aGVuIGFkZCBhbGwgY29sdW1ucworICAgICAgICBlbGlmIGxl bihhbGxfY29sdW1ucykgPiAwOgorICAgICAgICAgICAgZGF0YVsnY29sdW1u cyddID0gYWxsX2NvbHVtbnMKKworICAgICAgICBpZiAnY29sdW1ucycgaW4g ZGF0YSBhbmQgbGVuKGRhdGFbJ2NvbHVtbnMnXSkgPiAwOgorICAgICAgICAg ICAgZGF0YSA9IHNlbGYuX2NvbHVtbnNfZm9ybWF0dGVyKHRpZCwgZGF0YSkK KworICAgICAgICAjIEhlcmUgd2Ugd2lsbCBhZGQgY29uc3RyYWludCBpbiBv dXIgb3V0cHV0CisgICAgICAgIGRhdGEgPSBzZWxmLl9pbmRleF9jb25zdHJh aW50c19mb3JtYXR0ZXIodGlkLCBkYXRhKQorICAgICAgICBkYXRhID0gc2Vs Zi5fZm9yZWlnbl9rZXlfZm9ybWF0dGVyKHRpZCwgZGF0YSkKKyAgICAgICAg ZGF0YSA9IHNlbGYuX2NoZWNrX2NvbnN0cmFpbnRfZm9ybWF0dGVyKHRpZCwg ZGF0YSkKKyAgICAgICAgZGF0YSA9IHNlbGYuX2V4Y2x1c2lvbl9jb25zdHJh aW50X2Zvcm1hdHRlcih0aWQsIGRhdGEpCisKKyAgICAgICAgcmV0dXJuIGRh dGEKKworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgcHJvcGVy dGllcyhzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQpOgorICAgICAg ICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIHNob3cgdGhlIHBy b3BlcnRpZXMgb2YgdGhlIHNlbGVjdGVkIHRhYmxlIG5vZGUuCisKKyAgICAg ICAgQXJnczoKKyAgICAgICAgICAgIGdpZDogU2VydmVyIEdyb3VwIElECisg ICAgICAgICAgICBzaWQ6IFNlcnZlciBJRAorICAgICAgICAgICAgZGlkOiAg RGF0YWJhc2UgSUQKKyAgICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJRAorICAg ICAgICAgICAgc2NpZDogU2NoZW1hIElECisgICAgICAgICAgICB0aWQ6IFRh YmxlIElECisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIEpTT04g b2Ygc2VsZWN0ZWQgdGFibGUgbm9kZQorICAgICAgICAiIiIKKworICAgICAg ICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxh dGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAncHJvcGVydGllcy5zcWwnXSksCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzY2lkPXNjaWQsIHRpZD10aWQsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBkYXRsYXN0c3lzb2lkPXNlbGYuZGF0bGFzdHN5 c29pZCkKKyAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0 ZV9kaWN0KFNRTCkKKyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAg ICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVz KQorICAgICAgICBkYXRhID0gcmVzWydyb3dzJ11bMF0KKworICAgICAgICBk YXRhWyd2YWN1dW1fc2V0dGluZ3Nfc3RyJ10gPSAiIgorCisgICAgICAgIGlm IGRhdGFbJ3RhYmxlX3ZhY3V1bV9zZXR0aW5nc19zdHInXSBpcyBub3QgTm9u ZToKKyAgICAgICAgICAgIGRhdGFbJ3ZhY3V1bV9zZXR0aW5nc19zdHInXSAr PSBkYXRhWworICAgICAgICAgICAgICAgICd0YWJsZV92YWN1dW1fc2V0dGlu Z3Nfc3RyJ10ucmVwbGFjZSgnLCcsICdcbicpCisKKyAgICAgICAgaWYgZGF0 YVsndG9hc3RfdGFibGVfdmFjdXVtX3NldHRpbmdzX3N0ciddIGlzIG5vdCBO b25lOgorICAgICAgICAgICAgZGF0YVsndmFjdXVtX3NldHRpbmdzX3N0cidd ICs9ICdcbicgKyAnXG4nLmpvaW4oCisgICAgICAgICAgICAgICAgICAgIFsn dG9hc3RfJyArIHNldHRpbmcgZm9yIHNldHRpbmcgaW4gZGF0YVsKKyAgICAg ICAgICAgICAgICAgICAgICAgICd0b2FzdF90YWJsZV92YWN1dW1fc2V0dGlu Z3Nfc3RyJworICAgICAgICAgICAgICAgICAgICBdLnNwbGl0KCcsJyldCisg ICAgICAgICAgICAgICAgKQorICAgICAgICBkYXRhWyd2YWN1dW1fc2V0dGlu Z3Nfc3RyJ10gPSBkYXRhWworICAgICAgICAgICAgJ3ZhY3V1bV9zZXR0aW5n c19zdHInCisgICAgICAgIF0ucmVwbGFjZSgiPSIsICIgPSAiKQorCisgICAg ICAgIGRhdGEgPSBzZWxmLl9mb3JtYXR0ZXIoc2NpZCwgdGlkLCBkYXRhKQor CisgICAgICAgIHJldHVybiBhamF4X3Jlc3BvbnNlKAorICAgICAgICAgICAg ICAgIHJlc3BvbnNlPWRhdGEsCisgICAgICAgICAgICAgICAgc3RhdHVzPTIw MAorICAgICAgICAgICAgICAgICkKKworICAgIEBjaGVja19wcmVjb25kaXRp b24KKyAgICBkZWYgdHlwZXMoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwg dGlkPU5vbmUsIGNsaWQ9Tm9uZSk6CisgICAgICAgICIiIgorICAgICAgICBS ZXR1cm5zOgorICAgICAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIHJldHVy biBsaXN0IG9mIHR5cGVzIGF2YWlsYWJsZSBmb3IgY29sdW1uIG5vZGUKKyAg ICAgICAgICAgIGZvciBub2RlLWFqYXgtY29udHJvbAorICAgICAgICAiIiIK KyAgICAgICAgY29uZGl0aW9uID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2lu KFtzZWxmLnRlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgJ2dldF90eXBlc193aGVyZV9jb25k aXRpb24uc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc2hvd19zeXN0ZW1fb2JqZWN0cz1zZWxmLmJsdWVwcmludC5zaG93 X3N5c3RlbV9vYmplY3RzKQorCisgICAgICAgIHN0YXR1cywgdHlwZXMgPSBz ZWxmLmdldF90eXBlcyhzZWxmLmNvbm4sIGNvbmRpdGlvbikKKworICAgICAg ICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFs X3NlcnZlcl9lcnJvcihlcnJvcm1zZz10eXBlcykKKworICAgICAgICByZXR1 cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgZGF0YT10eXBl cywKKyAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAgICAgKQorCisgICAg QGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBnZXRfY29sdW1ucyhzZWxm LCBnaWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQ9Tm9uZSk6CisgICAgICAgICIi IgorICAgICAgICBSZXR1cm5zIHRoZSBUYWJsZSBDb2x1bW5zLgorCisgICAg ICAgIEFyZ3M6CisgICAgICAgICAgICBnaWQ6IFNlcnZlciBHcm91cCBJZAor ICAgICAgICAgICAgc2lkOiBTZXJ2ZXIgSWQKKyAgICAgICAgICAgIGRpZDog RGF0YWJhc2UgSWQKKyAgICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJZAorICAg ICAgICAgICAgdGlkOiBUYWJsZSBJZAorCisgICAgICAgIFJldHVybnM6Cisg ICAgICAgICAgICAgIEpTT04gQXJyYXkgd2l0aCBiZWxvdyBwYXJhbWV0ZXJz LgorICAgICAgICAgICAgICBuYW1lOiBDb2x1bW4gTmFtZQorICAgICAgICAg ICAgICBjdHlwZTogQ29sdW1uIERhdGEgVHlwZQorICAgICAgICAgICAgICBp bmhlcml0ZWRfZnJvbTogUGFyZW50IFRhYmxlIGZyb20gd2hpY2ggdGhlIHJl bGF0ZWQgY29sdW1uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp cyBpbmhlcml0dGVkLgorICAgICAgICAiIiIKKyAgICAgICAgcmVzID0gW10K KyAgICAgICAgZGF0YSA9IHJlcXVlc3QuYXJncyBpZiByZXF1ZXN0LmFyZ3Mg ZWxzZSBOb25lCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGlmIGRhdGEg YW5kICd0aWQnIGluIGRhdGE6CisgICAgICAgICAgICAgICAgU1FMID0gcmVu ZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAnZ2V0X2NvbHVtbnNfZm9yX3RhYmxlLnNxbCddKSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlkPWRhdGFbJ3RpZCddKQor ICAgICAgICAgICAgZWxpZiBkYXRhIGFuZCAndG5hbWUnIGluIGRhdGE6Cisg ICAgICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2lu KFtzZWxmLnRlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2V0X2NvbHVtbnNfZm9yX3Rh YmxlLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdG5hbWU9ZGF0YVsndG5hbWUnXSkKKworICAgICAgICAgICAgaWYg U1FMOgorICAgICAgICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25u LmV4ZWN1dGVfZGljdChTUUwpCisgICAgICAgICAgICAgICAgaWYgbm90IHN0 YXR1czoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3Nl cnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisgICAgICAgICAgICAgICAgcmVz ID0gcmVzWydyb3dzJ10KKworICAgICAgICAgICAgcmV0dXJuIG1ha2VfanNv bl9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICBkYXRhPXJlcywKKyAgICAg ICAgICAgICAgICBzdGF0dXM9MjAwCisgICAgICAgICAgICApCisKKyAgICAg ICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgcmV0dXJu IGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1zdHIoZSkpCisKKyAg ICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVmIGdldF9vZnR5cGUoc2Vs ZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgdGlkPU5vbmUpOgorICAgICAgICAi IiIKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIFRoaXMgZnVuY3Rp b24gd2lsbCByZXR1cm4gbGlzdCBvZiB0eXBlcyBhdmFpbGFibGUgZm9yIHRh YmxlIG5vZGUKKyAgICAgICAgICAgIGZvciBub2RlLWFqYXgtY29udHJvbAor ICAgICAgICAiIiIKKyAgICAgICAgcmVzID0gW3snbGFiZWwnOiAnJywgJ3Zh bHVlJzogJyd9XQorICAgICAgICB0cnk6CisgICAgICAgICAgICBTUUwgPSBy ZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg J2dldF9vZnR5cGUuc3FsJ10pLCBzY2lkPXNjaWQpCisgICAgICAgICAgICBz dGF0dXMsIHJzZXQgPSBzZWxmLmNvbm4uZXhlY3V0ZV8yZGFycmF5KFNRTCkK KyAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAg cmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisg ICAgICAgICAgICBmb3Igcm93IGluIHJzZXRbJ3Jvd3MnXToKKyAgICAgICAg ICAgICAgICByZXMuYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHsnbGFiZWwnOiByb3dbJ3R5cG5hbWUnXSwgJ3ZhbHVlJzogcm93Wyd0 eXBuYW1lJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0aWQn OiByb3dbJ29pZCddCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0K KyAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIHJldHVy biBtYWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAgICAgICAgICAgICAgIGRh dGE9cmVzLAorICAgICAgICAgICAgICAgICAgICBzdGF0dXM9MjAwCisgICAg ICAgICAgICAgICAgICAgICkKKworICAgICAgICBleGNlcHQgRXhjZXB0aW9u IGFzIGU6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vy cm9yKGVycm9ybXNnPXN0cihlKSkKKworICAgIEBjaGVja19wcmVjb25kaXRp b24KKyAgICBkZWYgZ2V0X2luaGVyaXRzKHNlbGYsIGdpZCwgc2lkLCBkaWQs IHNjaWQsIHRpZD1Ob25lKToKKyAgICAgICAgIiIiCisgICAgICAgIFJldHVy bnM6CisgICAgICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIGxp c3Qgb2YgdGFibGVzIGF2YWlsYWJsZSBmb3IgaW5oZXJpdGFuY2UKKyAgICAg ICAgICAgIHdoaWxlIGNyZWF0aW5nIG5ldyB0YWJsZQorICAgICAgICAiIiIK KyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmVzID0gW10KKyAgICAgICAg ICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1w bGF0ZV9wYXRoLCAnZ2V0X2luaGVyaXRzLnNxbCddKSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzaG93X3N5c3RlbV9vYmplY3RzPXNl bGYuYmx1ZXByaW50LnNob3dfc3lzdGVtX29iamVjdHMKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBzdGF0dXMs IHJzZXQgPSBzZWxmLmNvbm4uZXhlY3V0ZV8yZGFycmF5KFNRTCkKKyAgICAg ICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAgcmV0dXJu IGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisgICAgICAg ICAgICBmb3Igcm93IGluIHJzZXRbJ3Jvd3MnXToKKyAgICAgICAgICAgICAg ICByZXMuYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsn bGFiZWwnOiByb3dbJ2luaGVyaXRzJ10sICd2YWx1ZSc6IHJvd1snaW5oZXJp dHMnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RpZCc6IHJv d1snb2lkJ10KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAg ICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgcmV0dXJuIG1h a2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICAgICAgZGF0YT1y ZXMsCisgICAgICAgICAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAgICAg ICAgICAgICAgICAgKQorCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMg ZToKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3Io ZXJyb3Jtc2c9c3RyKGUpKQorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgor ICAgIGRlZiBnZXRfcmVsYXRpb25zKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNj aWQsIHRpZD1Ob25lKToKKyAgICAgICAgIiIiCisgICAgICAgIFJldHVybnM6 CisgICAgICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIGxpc3Qg b2YgdGFibGVzIGF2YWlsYWJsZSBmb3IgbGlrZS9yZWxhdGlvbgorICAgICAg ICAgICAgY29tYm9ib3ggd2hpbGUgY3JlYXRpbmcgbmV3IHRhYmxlCisgICAg ICAgICIiIgorICAgICAgICByZXMgPSBbeydsYWJlbCc6ICcnLCAndmFsdWUn OiAnJ31dCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIFNRTCA9IHJlbmRl cl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAnZ2V0 X3JlbGF0aW9ucy5zcWwnXSkpCisgICAgICAgICAgICBzdGF0dXMsIHJzZXQg PSBzZWxmLmNvbm4uZXhlY3V0ZV8yZGFycmF5KFNRTCkKKyAgICAgICAgICAg IGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAgcmV0dXJuIGludGVy bmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisgICAgICAgICAgICBm b3Igcm93IGluIHJzZXRbJ3Jvd3MnXToKKyAgICAgICAgICAgICAgICByZXMu YXBwZW5kKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsnbGFiZWwn OiByb3dbJ2xpa2VfcmVsYXRpb24nXSwgJ3ZhbHVlJzogcm93WydsaWtlX3Jl bGF0aW9uJ119CisgICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAg ICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAg ICAgICAgICBkYXRhPXJlcywKKyAgICAgICAgICAgICAgICAgICAgc3RhdHVz PTIwMAorICAgICAgICAgICAgICAgICAgICApCisKKyAgICAgICAgZXhjZXB0 IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFs X3NlcnZlcl9lcnJvcihlcnJvcm1zZz1zdHIoZSkpCisKKyAgICBkZWYgX2Ns dHlwZV9mb3JtYXR0ZXIoc2VsZiwgdHlwZSk6CisgICAgICAgICIiIgorCisg ICAgICAgIEFyZ3M6CisgICAgICAgICAgICBkYXRhOiBUeXBlIHN0cmluZwor CisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBXZSBuZWVkIHRvIHJl bW92ZSBbXSBmcm9tIHR5cGUgYW5kIGFwcGVuZCBpdAorICAgICAgICAgICAg YWZ0ZXIgbGVuZ3RoL3ByZWNpc2lvbiBzbyB3ZSB3aWxsIHNldCBmbGFnIGZv cgorICAgICAgICAgICAgc3FsIHRlbXBsYXRlCisgICAgICAgICIiIgorICAg ICAgICBpZiAnW10nIGluIHR5cGU6CisgICAgICAgICAgICB0eXBlID0gdHlw ZS5yZXBsYWNlKCdbXScsICcnKQorICAgICAgICAgICAgc2VsZi5oYXNTcXJC cmFja2V0ID0gVHJ1ZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2Vs Zi5oYXNTcXJCcmFja2V0ID0gRmFsc2UKKworICAgICAgICByZXR1cm4gdHlw ZQorCisgICAgZGVmIF9wYXJzZV9mb3JtYXRfY29sdW1ucyhzZWxmLCBkYXRh LCBtb2RlPU5vbmUpOgorICAgICAgICAiIiIKKyAgICAgICAgZGF0YToKKyAg ICAgICAgICAgIERhdGEgY29taW5nIGZyb20gY2xpZW50IHNpZGUKKworICAg ICAgICBSZXR1cm5zOgorICAgICAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxs IHBhcnNlIGFuZCByZXR1cm4gZm9ybWF0dGVkIGxpc3Qgb2YgY29sdW1ucwor ICAgICAgICAgICAgYWRkZWQgYnkgdXNlcgorICAgICAgICAiIiIKKyAgICAg ICAgY29sdW1ucyA9IGRhdGFbJ2NvbHVtbnMnXQorICAgICAgICAjICdFRElU JyBtb2RlCisgICAgICAgIGlmIG1vZGUgaXMgbm90IE5vbmU6CisgICAgICAg ICAgICBmb3IgYWN0aW9uIGluIFsnYWRkZWQnLCAnY2hhbmdlZCddOgorICAg ICAgICAgICAgICAgIGlmIGFjdGlvbiBpbiBjb2x1bW5zOgorICAgICAgICAg ICAgICAgICAgICBmaW5hbF9jb2x1bW5zID0gW10KKyAgICAgICAgICAgICAg ICAgICAgZm9yIGMgaW4gY29sdW1uc1thY3Rpb25dOgorICAgICAgICAgICAg ICAgICAgICAgICAgaWYgJ2luaGVyaXRlZGZyb20nIG5vdCBpbiBjOgorICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsX2NvbHVtbnMuYXBwZW5k KGMpCisKKyAgICAgICAgICAgICAgICAgICAgZm9yIGMgaW4gZmluYWxfY29s dW1uczoKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICdhdHRhY2wnIGlu IGM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1snYXR0YWNsJ10g PSBwYXJzZV9wcml2X3RvX2RiKGNbJ2F0dGFjbCddLCBzZWxmLmNvbHVtbl9h Y2wpCisKKyAgICAgICAgICAgICAgICAgICAgICAgICMgY2hlY2sgdHlwZSBm b3IgJ1tdJyBpbiBpdAorICAgICAgICAgICAgICAgICAgICAgICAgY1snY2x0 eXBlJ10gPSBzZWxmLl9jbHR5cGVfZm9ybWF0dGVyKGNbJ2NsdHlwZSddKQor ICAgICAgICAgICAgICAgICAgICAgICAgY1snaGFzU3FyQnJhY2tldCddID0g c2VsZi5oYXNTcXJCcmFja2V0CisKKyAgICAgICAgICAgICAgICAgICAgZGF0 YVsnY29sdW1ucyddW2FjdGlvbl0gPSBmaW5hbF9jb2x1bW5zCisgICAgICAg IGVsc2U6CisgICAgICAgICAgICAjIFdlIG5lZWQgdG8gZXhjbHVkZSBhbGwg dGhlIGNvbHVtbnMgd2hpY2ggYXJlIGluaGVyaXRlZCBmcm9tIG90aGVyIHRh YmxlcworICAgICAgICAgICAgIyAnQ1JFQVRFJyBtb2RlCisgICAgICAgICAg ICBmaW5hbF9jb2x1bW5zID0gW10KKworICAgICAgICAgICAgZm9yIGMgaW4g Y29sdW1uczoKKyAgICAgICAgICAgICAgICBpZiAnaW5oZXJpdGVkZnJvbScg bm90IGluIGM6CisgICAgICAgICAgICAgICAgICAgIGZpbmFsX2NvbHVtbnMu YXBwZW5kKGMpCisKKyAgICAgICAgICAgICMgTm93IHdlIGhhdmUgYWxsIGxp cyBvZiBjb2x1bW5zIHdoaWNoIHdlIG5lZWQKKyAgICAgICAgICAgICMgdG8g aW5jbHVkZSBpbiBvdXIgY3JlYXRlIGRlZmluaXRpb24sIExldCdzIGZvcm1h dCB0aGVtCisgICAgICAgICAgICBmb3IgYyBpbiBmaW5hbF9jb2x1bW5zOgor ICAgICAgICAgICAgICAgIGlmICdhdHRhY2wnIGluIGM6CisgICAgICAgICAg ICAgICAgICAgIGNbJ2F0dGFjbCddID0gcGFyc2VfcHJpdl90b19kYihjWydh dHRhY2wnXSwgc2VsZi5jb2x1bW5fYWNsKQorCisgICAgICAgICAgICAgICAg IyBjaGVjayB0eXBlIGZvciAnW10nIGluIGl0CisgICAgICAgICAgICAgICAg Y1snY2x0eXBlJ10gPSBzZWxmLl9jbHR5cGVfZm9ybWF0dGVyKGNbJ2NsdHlw ZSddKQorICAgICAgICAgICAgICAgIGNbJ2hhc1NxckJyYWNrZXQnXSA9IHNl bGYuaGFzU3FyQnJhY2tldAorCisgICAgICAgICAgICBkYXRhWydjb2x1bW5z J10gPSBmaW5hbF9jb2x1bW5zCisKKyAgICAgICAgcmV0dXJuIGRhdGEKKwor ICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgY3JlYXRlKHNlbGYs IGdpZCwgc2lkLCBkaWQsIHNjaWQpOgorICAgICAgICAiIiIKKyAgICAgICAg VGhpcyBmdW5jdGlvbiB3aWxsIGNyZWF0ZXMgbmV3IHRoZSB0YWJsZSBvYmpl Y3QKKworICAgICAgICAgQXJnczoKKyAgICAgICAgICAgZ2lkOiBTZXJ2ZXIg R3JvdXAgSUQKKyAgICAgICAgICAgc2lkOiBTZXJ2ZXIgSUQKKyAgICAgICAg ICAgZGlkOiBEYXRhYmFzZSBJRAorICAgICAgICAgICBzY2lkOiBTY2hlbWEg SUQKKyAgICAgICAgIiIiCisgICAgICAgIGRhdGEgPSByZXF1ZXN0LmZvcm0g aWYgcmVxdWVzdC5mb3JtIGVsc2UganNvbi5sb2FkcyhyZXF1ZXN0LmRhdGEu ZGVjb2RlKCkpCisKKyAgICAgICAgZm9yIGssIHYgaW4gZGF0YS5pdGVtcygp OgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGRhdGFba10g PSBqc29uLmxvYWRzKHYpCisgICAgICAgICAgICBleGNlcHQgKFZhbHVlRXJy b3IsIFR5cGVFcnJvcik6CisgICAgICAgICAgICAgICAgZGF0YVtrXSA9IHYK KworICAgICAgICByZXF1aXJlZF9hcmdzID0gWworICAgICAgICAgICAgJ25h bWUnCisgICAgICAgIF0KKworICAgICAgICBmb3IgYXJnIGluIHJlcXVpcmVk X2FyZ3M6CisgICAgICAgICAgICBpZiBhcmcgbm90IGluIGRhdGE6CisgICAg ICAgICAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKKyAgICAg ICAgICAgICAgICAgICAgc3RhdHVzPTQxMCwKKyAgICAgICAgICAgICAgICAg ICAgc3VjY2Vzcz0wLAorICAgICAgICAgICAgICAgICAgICBlcnJvcm1zZz1n ZXR0ZXh0KAorICAgICAgICAgICAgICAgICAgICAgICAgIkNvdWxkbid0IGZp bmQgdGhlIHJlcXVpcmVkIHBhcmFtZXRlciAoJXMpLiIgJSBhcmcKKyAgICAg ICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICkKKworICAgICAg ICAjIFBhcnNlIHByaXZpbGVnZSBkYXRhIGNvbWluZyBmcm9tIGNsaWVudCBh Y2NvcmRpbmcgdG8gZGF0YWJhc2UgZm9ybWF0CisgICAgICAgIGlmICdyZWxh Y2wnIGluIGRhdGE6CisgICAgICAgICAgICBkYXRhWydyZWxhY2wnXSA9IHBh cnNlX3ByaXZfdG9fZGIoZGF0YVsncmVsYWNsJ10sIHNlbGYuYWNsKQorCisg ICAgICAgICMgUGFyc2UgJiBmb3JtYXQgY29sdW1ucworICAgICAgICBkYXRh ID0gc2VsZi5fcGFyc2VfZm9ybWF0X2NvbHVtbnMoZGF0YSkKKworICAgICAg ICAjICdjb2xsX2luaGVyaXRzJyBpcyBBcnJheSBidXQgaXQgY29tZXMgYXMg c3RyaW5nIGZyb20gYnJvd3NlcgorICAgICAgICAjIFdlIHdpbGwgY29udmVy dCBpdCBhZ2FpbiB0byBsaXN0CisgICAgICAgIGlmICdjb2xsX2luaGVyaXRz JyBpbiBkYXRhIGFuZCBcCisgICAgICAgICAgICAgICAgaXNpbnN0YW5jZShk YXRhWydjb2xsX2luaGVyaXRzJ10sIHN0cik6CisgICAgICAgICAgICBkYXRh Wydjb2xsX2luaGVyaXRzJ10gPSBqc29uLmxvYWRzKGRhdGFbJ2NvbGxfaW5o ZXJpdHMnXSkKKworICAgICAgICBpZiAnZm9yZWlnbl9rZXknIGluIGRhdGE6 CisgICAgICAgICAgICBmb3IgYyBpbiBkYXRhWydmb3JlaWduX2tleSddOgor ICAgICAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9p bihbc2VsZi5mb3JlaWduX2tleV90ZW1wbGF0ZV9wYXRoLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dldF9w YXJlbnQuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB0aWQ9Y1snY29sdW1ucyddWzBdWydyZWZlcmVuY2VzJ10pCisg ICAgICAgICAgICAgICAgc3RhdHVzLCByc2V0ID0gc2VsZi5jb25uLmV4ZWN1 dGVfMmRhcnJheShTUUwpCisgICAgICAgICAgICAgICAgaWYgbm90IHN0YXR1 czoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZl cl9lcnJvcihlcnJvcm1zZz1yc2V0KQorCisgICAgICAgICAgICAgICAgY1sn cmVtb3RlX3NjaGVtYSddID0gcnNldFsncm93cyddWzBdWydzY2hlbWEnXQor ICAgICAgICAgICAgICAgIGNbJ3JlbW90ZV90YWJsZSddID0gcnNldFsncm93 cyddWzBdWyd0YWJsZSddCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAg U1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRl X3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICdjcmVhdGUuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGRhdGE9ZGF0YSwgY29ubj1zZWxmLmNvbm4pCisgICAg ICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX3NjYWxh cihTUUwpCisgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAg ICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9 cmVzKQorCisgICAgICAgICAgICAjIHdlIG5lZWQgb2lkIHRvIHRvIGFkZCBv YmplY3QgaW4gdHJlZSBhdCBicm93c2VyCisgICAgICAgICAgICBTUUwgPSBy ZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg J2dldF9vaWQuc3FsJ10pLCBzY2lkPXNjaWQsIGRhdGE9ZGF0YSkKKyAgICAg ICAgICAgIHN0YXR1cywgdGlkID0gc2VsZi5jb25uLmV4ZWN1dGVfc2NhbGFy KFNRTCkKKyAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAg ICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz10 aWQpCisKKyAgICAgICAgICAgIHJldHVybiBqc29uaWZ5KAorICAgICAgICAg ICAgICAgIG5vZGU9c2VsZi5ibHVlcHJpbnQuZ2VuZXJhdGVfYnJvd3Nlcl9u b2RlKAorICAgICAgICAgICAgICAgICAgICB0aWQsCisgICAgICAgICAgICAg ICAgICAgIHNjaWQsCisgICAgICAgICAgICAgICAgICAgIGRhdGFbJ25hbWUn XSwKKyAgICAgICAgICAgICAgICAgICAgaWNvbj0iaWNvbi10YWJsZSIKKyAg ICAgICAgICAgICAgICApCisgICAgICAgICAgICApCisgICAgICAgIGV4Y2Vw dCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5h bF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKGUpKQorCisgICAgQGNoZWNr X3ByZWNvbmRpdGlvbgorICAgIGRlZiB1cGRhdGUoc2VsZiwgZ2lkLCBzaWQs IGRpZCwgc2NpZCwgdGlkKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMg ZnVuY3Rpb24gd2lsbCB1cGRhdGUgYW4gZXhpc3RpbmcgdGFibGUgb2JqZWN0 CisKKyAgICAgICAgIEFyZ3M6CisgICAgICAgICAgIGdpZDogU2VydmVyIEdy b3VwIElECisgICAgICAgICAgIHNpZDogU2VydmVyIElECisgICAgICAgICAg IGRpZDogRGF0YWJhc2UgSUQKKyAgICAgICAgICAgc2NpZDogU2NoZW1hIElE CisgICAgICAgICAgIHRpZDogVGFibGUgSUQKKyAgICAgICAgIiIiCisgICAg ICAgIGRhdGEgPSByZXF1ZXN0LmZvcm0gaWYgcmVxdWVzdC5mb3JtIGVsc2Ug anNvbi5sb2FkcygKKyAgICAgICAgICAgIHJlcXVlc3QuZGF0YS5kZWNvZGUo KQorICAgICAgICApCisKKyAgICAgICAgZm9yIGssIHYgaW4gZGF0YS5pdGVt cygpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGRhdGFb a10gPSBqc29uLmxvYWRzKHYpCisgICAgICAgICAgICBleGNlcHQgKFZhbHVl RXJyb3IsIFR5cGVFcnJvcik6CisgICAgICAgICAgICAgICAgZGF0YVtrXSA9 IHYKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBTUUwgPSBzZWxmLmdl dF9zcWwoc2NpZCwgdGlkLCBkYXRhKQorCisgICAgICAgICAgICBpZiBTUUwg YW5kIFNRTC5zdHJpcCgnXG4nKSBhbmQgU1FMLnN0cmlwKCcgJyk6CisgICAg ICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9z Y2FsYXIoU1FMKQorICAgICAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6Cisg ICAgICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJy b3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgICAgICAgICAgcmV0dXJuIG1h a2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICAgICAgc3VjY2Vz cz0xLAorICAgICAgICAgICAgICAgICAgICBpbmZvPSJUYWJsZSB1cGRhdGVk IiwKKyAgICAgICAgICAgICAgICAgICAgZGF0YT17CisgICAgICAgICAgICAg ICAgICAgICAgICAnaWQnOiB0aWQsCisgICAgICAgICAgICAgICAgICAgICAg ICAnc2NpZCc6IHNjaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAnZGlk JzogZGlkCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg ICApCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVy biBtYWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAgICAgICAgICAgICAgIHN1 Y2Nlc3M9MSwKKyAgICAgICAgICAgICAgICAgICAgaW5mbz0iTm90aGluZyB0 byB1cGRhdGUiLAorICAgICAgICAgICAgICAgICAgICBkYXRhPXsKKyAgICAg ICAgICAgICAgICAgICAgICAgICdpZCc6IHRpZCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICdzY2lkJzogc2NpZCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICdkaWQnOiBkaWQKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAg ICAgICAgICAgICkKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgor ICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJv cm1zZz1zdHIoZSkpCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAg ZGVmIGRlbGV0ZShzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQpOgor ICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIGRlbGV0 ZXMgdGhlIHRhYmxlIG9iamVjdAorCisgICAgICAgICBBcmdzOgorICAgICAg ICAgICBnaWQ6IFNlcnZlciBHcm91cCBJRAorICAgICAgICAgICBzaWQ6IFNl cnZlciBJRAorICAgICAgICAgICBkaWQ6IERhdGFiYXNlIElECisgICAgICAg ICAgIHNjaWQ6IFNjaGVtYSBJRAorICAgICAgICAgICB0aWQ6IFRhYmxlIElE CisgICAgICAgICIiIgorICAgICAgICAjIEJlbG93IHdpbGwgZGVjaWRlIGlm IGl0J3Mgc2ltcGxlIGRyb3Agb3IgZHJvcCB3aXRoIGNhc2NhZGUgY2FsbAor ICAgICAgICBpZiBzZWxmLmNtZCA9PSAnZGVsZXRlJzoKKyAgICAgICAgICAg ICMgVGhpcyBpcyBhIGNhc2NhZGUgb3BlcmF0aW9uCisgICAgICAgICAgICBj YXNjYWRlID0gVHJ1ZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgY2Fz Y2FkZSA9IEZhbHNlCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgU1FM ID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3Bh dGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICdwcm9wZXJ0aWVzLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzY2lkPXNjaWQsIHRpZD10aWQsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZGF0bGFzdHN5c29pZD1zZWxmLmRh dGxhc3RzeXNvaWQpCisgICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYu Y29ubi5leGVjdXRlX2RpY3QoU1FMKQorICAgICAgICAgICAgaWYgbm90IHN0 YXR1czoKKyAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVy X2Vycm9yKGVycm9ybXNnPXJlcykKKyAgICAgICAgICAgIGRhdGEgPSByZXNb J3Jvd3MnXVswXQorCisgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxh dGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlbGV0ZS5zcWwn XSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1k YXRhLCBjYXNjYWRlPWNhc2NhZGUsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY29ubj1zZWxmLmNvbm4pCisgICAgICAgICAgICBzdGF0 dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX3NjYWxhcihTUUwpCisgICAg ICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgIHJldHVy biBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAg ICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAg ICAgICAgIHN1Y2Nlc3M9MSwKKyAgICAgICAgICAgICAgICBpbmZvPWdldHRl eHQoIlRhYmxlIGRyb3BwZWQiKSwKKyAgICAgICAgICAgICAgICBkYXRhPXsK KyAgICAgICAgICAgICAgICAgICAgJ2lkJzogdGlkLAorICAgICAgICAgICAg ICAgICAgICAnc2NpZCc6IHNjaWQKKyAgICAgICAgICAgICAgICB9CisgICAg ICAgICAgICApCisKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgor ICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJv cm1zZz1zdHIoZSkpCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAg ZGVmIHRydW5jYXRlKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRpZCk6 CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgdHJ1 bmNhdGUgdGhlIHRhYmxlIG9iamVjdAorCisgICAgICAgICBBcmdzOgorICAg ICAgICAgICBnaWQ6IFNlcnZlciBHcm91cCBJRAorICAgICAgICAgICBzaWQ6 IFNlcnZlciBJRAorICAgICAgICAgICBkaWQ6IERhdGFiYXNlIElECisgICAg ICAgICAgIHNjaWQ6IFNjaGVtYSBJRAorICAgICAgICAgICB0aWQ6IFRhYmxl IElECisgICAgICAgICIiIgorICAgICAgICAjIEJlbG93IHdpbGwgZGVjaWRl IGlmIGl0J3Mgc2ltcGxlIGRyb3Agb3IgZHJvcCB3aXRoIGNhc2NhZGUgY2Fs bAorICAgICAgICBkYXRhID0gcmVxdWVzdC5mb3JtIGlmIHJlcXVlc3QuZm9y bSBlbHNlIGpzb24ubG9hZHMocmVxdWVzdC5kYXRhLmRlY29kZSgpKQorICAg ICAgICAjIENvbnZlcnQgc3RyICd0cnVlJyB0byBib29sZWFuIHR5cGUKKyAg ICAgICAgaXNfY2FzY2FkZSA9IGpzb24ubG9hZHMoZGF0YVsnY2FzY2FkZSdd KQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90 ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHJvcGVy dGllcy5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc2NpZD1zY2lkLCB0aWQ9dGlkLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGRhdGxhc3RzeXNvaWQ9c2VsZi5kYXRsYXN0c3lzb2lk KQorICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0 ZV9kaWN0KFNRTCkKKyAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAg ICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJv cm1zZz1yZXMpCisgICAgICAgICAgICBkYXRhID0gcmVzWydyb3dzJ11bMF0K KworICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2lu KFtzZWxmLnRlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICd0cnVuY2F0ZS5zcWwnXSksCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1kYXRhLCBjYXNj YWRlPWlzX2Nhc2NhZGUpCisgICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNl bGYuY29ubi5leGVjdXRlX3NjYWxhcihTUUwpCisgICAgICAgICAgICBpZiBu b3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9z ZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgICAgICByZXR1 cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgICAgIHN1Y2Nl c3M9MSwKKyAgICAgICAgICAgICAgICBpbmZvPWdldHRleHQoIlRhYmxlIHRy dW5jYXRlZCIpLAorICAgICAgICAgICAgICAgIGRhdGE9eworICAgICAgICAg ICAgICAgICAgICAnaWQnOiB0aWQsCisgICAgICAgICAgICAgICAgICAgICdz Y2lkJzogc2NpZAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICkK KworICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAg ICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXN0cihl KSkKKworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgZW5hYmxl X2Rpc2FibGVfdHJpZ2dlcnMoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwg dGlkKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gd2ls bCBlbmFibGUvZGlzYWJsZSB0cmlnZ2VyKHMpIG9uIHRoZSB0YWJsZSBvYmpl Y3QKKworICAgICAgICAgQXJnczoKKyAgICAgICAgICAgZ2lkOiBTZXJ2ZXIg R3JvdXAgSUQKKyAgICAgICAgICAgc2lkOiBTZXJ2ZXIgSUQKKyAgICAgICAg ICAgZGlkOiBEYXRhYmFzZSBJRAorICAgICAgICAgICBzY2lkOiBTY2hlbWEg SUQKKyAgICAgICAgICAgdGlkOiBUYWJsZSBJRAorICAgICAgICAiIiIKKyAg ICAgICAgIyBCZWxvdyB3aWxsIGRlY2lkZSBpZiBpdCdzIHNpbXBsZSBkcm9w IG9yIGRyb3Agd2l0aCBjYXNjYWRlIGNhbGwKKyAgICAgICAgZGF0YSA9IHJl cXVlc3QuZm9ybSBpZiByZXF1ZXN0LmZvcm0gZWxzZSBqc29uLmxvYWRzKHJl cXVlc3QuZGF0YS5kZWNvZGUoKSkKKyAgICAgICAgIyBDb252ZXJ0IHN0ciAn dHJ1ZScgdG8gYm9vbGVhbiB0eXBlCisgICAgICAgIGlzX2VuYWJsZSA9IGpz b24ubG9hZHMoZGF0YVsnZW5hYmxlJ10pCisKKyAgICAgICAgdHJ5OgorICAg ICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxm LnRlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICdwcm9wZXJ0aWVzLnNxbCddKSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzY2lkPXNjaWQsIHRpZD10aWQs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0bGFzdHN5 c29pZD1zZWxmLmRhdGxhc3RzeXNvaWQpCisgICAgICAgICAgICBzdGF0dXMs IHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQorICAgICAgICAg ICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICByZXR1cm4gaW50 ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKyAgICAgICAgICAg IGRhdGEgPSByZXNbJ3Jvd3MnXVswXQorICAgICAgICAgICAgIyBUT0RPOi8v CisgICAgICAgICAgICAjIEZpbmQgU1FMIHdoaWNoIGNhbiBlbmFibGUgYWxs IG9yIGRpc2FibGUgYWxsIHRyaWdnZXJzCisgICAgICAgICAgICBTUUwgPSBy ZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg J2VuYWJsZV9kaXNhYmxlX3RyaWdnZXIuc3FsJ10pLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGRhdGE9ZGF0YSwgaXNfZW5hYmxlX3Ry aWdnZXI9aXNfZW5hYmxlKQorICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBz ZWxmLmNvbm4uZXhlY3V0ZV9zY2FsYXIoU1FMKQorICAgICAgICAgICAgaWYg bm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxf c2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKworICAgICAgICAgICAgcmV0 dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICBzdWNj ZXNzPTEsCisgICAgICAgICAgICAgICAgaW5mbz1nZXR0ZXh0KCJUcmlnZ2Vy KHMpIGhhcyBiZWVuIGVuYWJsZWQiKSBpZiBpc19lbmFibGUKKyAgICAgICAg ICAgICAgICBlbHNlIGdldHRleHQoIlRyaWdnZXIocykgaGFzIGJlZW4gZGlz YWJsZWQiKSwKKyAgICAgICAgICAgICAgICBkYXRhPXsKKyAgICAgICAgICAg ICAgICAgICAgJ2lkJzogdGlkLAorICAgICAgICAgICAgICAgICAgICAnc2Np ZCc6IHNjaWQKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICApCisK KyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAg cmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1zdHIoZSkp CisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVmIHJlc2V0KHNl bGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRpZCk6CisgICAgICAgICIiIgor ICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgcmVzZXQgc3RhdGlzdGljcyBv ZiB0YWJsZQorCisgICAgICAgICBBcmdzOgorICAgICAgICAgICBnaWQ6IFNl cnZlciBHcm91cCBJRAorICAgICAgICAgICBzaWQ6IFNlcnZlciBJRAorICAg ICAgICAgICBkaWQ6IERhdGFiYXNlIElECisgICAgICAgICAgIHNjaWQ6IFNj aGVtYSBJRAorICAgICAgICAgICB0aWQ6IFRhYmxlIElECisgICAgICAgICIi IgorICAgICAgICB0cnk6CisgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVt cGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Jlc2V0X3N0 YXRzLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB0aWQ9dGlkKQorICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNv bm4uZXhlY3V0ZV9zY2FsYXIoU1FMKQorICAgICAgICAgICAgaWYgbm90IHN0 YXR1czoKKyAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVy X2Vycm9yKGVycm9ybXNnPXJlcykKKworICAgICAgICAgICAgcmV0dXJuIG1h a2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICBzdWNjZXNzPTEs CisgICAgICAgICAgICAgICAgaW5mbz1nZXR0ZXh0KCJUYWJsZSBzdGF0aXN0 aWNzIGhhcyBiZWVuIHJlc2V0IiksCisgICAgICAgICAgICAgICAgZGF0YT17 CisgICAgICAgICAgICAgICAgICAgICdpZCc6IHRpZCwKKyAgICAgICAgICAg ICAgICAgICAgJ3NjaWQnOiBzY2lkCisgICAgICAgICAgICAgICAgfQorICAg ICAgICAgICAgKQorCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToK KyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJy b3Jtc2c9c3RyKGUpKQorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAg IGRlZiBtc3FsKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRpZD1Ob25l KToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBj cmVhdGUgbW9kaWZpZWQgc3FsIGZvciB0YWJsZSBvYmplY3QKKworICAgICAg ICAgQXJnczoKKyAgICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAgSUQKKyAg ICAgICAgICAgc2lkOiBTZXJ2ZXIgSUQKKyAgICAgICAgICAgZGlkOiBEYXRh YmFzZSBJRAorICAgICAgICAgICBzY2lkOiBTY2hlbWEgSUQKKyAgICAgICAg ICAgdGlkOiBUYWJsZSBJRAorICAgICAgICAiIiIKKyAgICAgICAgZGF0YSA9 IGRpY3QoKQorICAgICAgICBmb3IgaywgdiBpbiByZXF1ZXN0LmFyZ3MuaXRl bXMoKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBkYXRh W2tdID0ganNvbi5sb2Fkcyh2KQorICAgICAgICAgICAgZXhjZXB0IChWYWx1 ZUVycm9yLCBUeXBlRXJyb3IpOgorICAgICAgICAgICAgICAgIGRhdGFba10g PSB2CisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgU1FMID0gc2VsZi5n ZXRfc3FsKHNjaWQsIHRpZCwgZGF0YSkKKyAgICAgICAgICAgIFNRTCA9IHJl LnN1YignXG57Mix9JywgJ1xuJywgU1FMKQorICAgICAgICAgICAgU1FMID0g U1FMLnN0cmlwKCdcbicpCisgICAgICAgICAgICByZXR1cm4gbWFrZV9qc29u X3Jlc3BvbnNlKAorICAgICAgICAgICAgICAgIGRhdGE9U1FMLAorICAgICAg ICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAgICAgICAgICkKKyAgICAgICAg ZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgcmV0dXJuIGlu dGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1zdHIoZSkpCisKKyAgICBk ZWYgZ2V0X2luZGV4X2NvbnN0cmFpbnRfc3FsKHNlbGYsIHRpZCwgZGF0YSk6 CisgICAgICAgICIiIgorICAgICAgICAgQXJnczoKKyAgICAgICAgICAgdGlk OiBUYWJsZSBJRAorICAgICAgICAgICBkYXRhOiBkYXRhIGRpY3QgY29taW5n IGZyb20gdGhlIGNsaWVudAorCisgICAgICAgIFJldHVybnM6CisgICAgICAg IFRoaXMgZnVuY3Rpb24gd2lsbCBnZW5lcmF0ZSBtb2RpZmllZCBzcWwgZm9y IGluZGV4IGNvbnN0cmFpbnRzCisgICAgICAgIChQcmltYXJ5IEtleSAmIFVu aXF1ZSkKKyAgICAgICAgIiIiCisgICAgICAgIHNxbCA9IFtdCisgICAgICAg ICMgV2Ugd2lsbCBmZXRjaCBhbGwgdGhlIGluZGV4IGNvbnN0cmFpbnRzIGZv ciB0aGUgdGFibGUKKyAgICAgICAgaW5kZXhfY29uc3RyYWludHMgPSB7Cisg ICAgICAgICAgICAncCc6ICdwcmltYXJ5X2tleScsICd1JzogJ3VuaXF1ZV9j b25zdHJhaW50JworICAgICAgICB9CisKKyAgICAgICAgZm9yIGN0eXBlIGlu IGluZGV4X2NvbnN0cmFpbnRzLmtleXMoKToKKyAgICAgICAgICAgICMgQ2hl Y2sgaWYgY29uc3RyYWludCBpcyBpbiBkYXRhCisgICAgICAgICAgICAjIElm IHllcyB0aGVuIHdlIG5lZWQgdG8gY2hlY2sgZm9yIGFkZC9jaGFuZ2UvZGVs ZXRlCisgICAgICAgICAgICBpZiBpbmRleF9jb25zdHJhaW50c1tjdHlwZV0g aW4gZGF0YToKKyAgICAgICAgICAgICAgICBjb25zdHJhaW50ID0gZGF0YVtp bmRleF9jb25zdHJhaW50c1tjdHlwZV1dCisgICAgICAgICAgICAgICAgIyBJ ZiBjb25zdHJhaW50KHMpIGlzL2FyZSBkZWxldGVkCisgICAgICAgICAgICAg ICAgaWYgJ2RlbGV0ZWQnIGluIGNvbnN0cmFpbnQ6CisgICAgICAgICAgICAg ICAgICAgIGZvciBjIGluIGNvbnN0cmFpbnRbJ2RlbGV0ZWQnXToKKyAgICAg ICAgICAgICAgICAgICAgICAgIGNbJ3NjaGVtYSddID0gZGF0YVsnc2NoZW1h J10KKyAgICAgICAgICAgICAgICAgICAgICAgIGNbJ3RhYmxlJ10gPSBkYXRh WyduYW1lJ10KKworICAgICAgICAgICAgICAgICAgICAgICAgIyBTcWwgZm9y IGRyb3AKKyAgICAgICAgICAgICAgICAgICAgICAgIHNxbC5hcHBlbmQoCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyX3RlbXBsYXRlKCIv Ii5qb2luKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWxmLmlu ZGV4X2NvbnN0cmFpbnRfdGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJ2RlbGV0ZS5zcWwnXSksCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGRhdGE9YywgY29ubj1zZWxmLmNvbm4pLnN0 cmlwKCdcbicpCisgICAgICAgICAgICAgICAgICAgICAgICApCisKKyAgICAg ICAgICAgICAgICBpZiAnY2hhbmdlZCcgaW4gY29uc3RyYWludDoKKyAgICAg ICAgICAgICAgICAgICAgZm9yIGMgaW4gY29uc3RyYWludFsnY2hhbmdlZCdd OgorICAgICAgICAgICAgICAgICAgICAgICAgY1snc2NoZW1hJ10gPSBkYXRh WydzY2hlbWEnXQorICAgICAgICAgICAgICAgICAgICAgICAgY1sndGFibGUn XSA9IGRhdGFbJ25hbWUnXQorCisgICAgICAgICAgICAgICAgICAgICAgICBw cm9wZXJ0aWVzX3NxbCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbigKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VsZi5pbmRleF9jb25zdHJh aW50X3RlbXBsYXRlX3BhdGgsICdwcm9wZXJ0aWVzLnNxbCddKSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICB0aWQ9dGlkLCBjaWQ9Y1snb2lkJ10s IGNvbnN0cmFpbnRfdHlwZT1jdHlwZSkKKyAgICAgICAgICAgICAgICAgICAg ICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChwcm9w ZXJ0aWVzX3NxbCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBz dGF0dXM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlu dGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAg ICAgICAgICAgICAgICAgIG9sZF9kYXRhID0gcmVzWydyb3dzJ11bMF0KKyAg ICAgICAgICAgICAgICAgICAgICAgICMgU3FsIHRvIHVwZGF0ZSBvYmplY3QK KyAgICAgICAgICAgICAgICAgICAgICAgIHNxbC5hcHBlbmQoCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2lu KFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5pbmRl eF9jb25zdHJhaW50X3RlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICd1cGRhdGUuc3FsJ10pLCBkYXRhPWMsIG9fZGF0 YT1vbGRfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y29ubj1zZWxmLmNvbm4pLnN0cmlwKCdcbicpCisgICAgICAgICAgICAgICAg ICAgICAgICApCisKKyAgICAgICAgICAgICAgICBpZiAnYWRkZWQnIGluIGNv bnN0cmFpbnQ6CisgICAgICAgICAgICAgICAgICAgIGZvciBjIGluIGNvbnN0 cmFpbnRbJ2FkZGVkJ106CisgICAgICAgICAgICAgICAgICAgICAgICBjWydz Y2hlbWEnXSA9IGRhdGFbJ3NjaGVtYSddCisgICAgICAgICAgICAgICAgICAg ICAgICBjWyd0YWJsZSddID0gZGF0YVsnbmFtZSddCisKKyAgICAgICAgICAg ICAgICAgICAgICAgICMgU3FsIHRvIGFkZCBvYmplY3QKKyAgICAgICAgICAg ICAgICAgICAgICAgIGlmIHNlbGYudmFsaWRhdGVfY29uc3RyYWlucyhpbmRl eF9jb25zdHJhaW50c1tjdHlwZV0sIGMpOgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHNxbC5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLmluZGV4X2NvbnN0 cmFpbnRfdGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAnY3JlYXRlLnNxbCddKSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9YywgY29ubj1z ZWxmLmNvbm4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjb25zdHJhaW50X25hbWU9J1BSSU1BUlkgS0VZJworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaWYgY3R5cGUgPT0gJ3AnIGVsc2Ug J1VOSVFVRScKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICkuc3RyaXAoJ1xuJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAp CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBzcWwgdG8gdXBkYXRl IGNvbW1lbnRzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3FsLmFw cGVuZCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVy X3RlbXBsYXRlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIi8iLmpvaW4oW3NlbGYuaW5kZXhfY29uc3RyYWludF90ZW1wbGF0ZV9w YXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICdhbHRlci5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBkYXRhPWMsIGNvbm49c2VsZi5jb25uCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLnN0cmlwKCdcbicpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAg ICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBz cWwuYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn ZXR0ZXh0KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Jy0tIGluY29tcGxldGUgZGVmaW5pdGlvbiBmb3IgezB9IGNvbnN0cmFpbnQn LmZvcm1hdChpbmRleF9jb25zdHJhaW50c1tjdHlwZV0pCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICApCisgICAgICAgIGlmIGxlbihzcWwpID4gMDoKKyAgICAgICAg ICAgICMgSm9pbiBhbGwgdGhlIHNxbChzKSBhcyBzaW5nbGUgc3RyaW5nCisg ICAgICAgICAgICByZXR1cm4gJ1xuXG4nLmpvaW4oc3FsKQorICAgICAgICBl bHNlOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIGRlZiBnZXRf Zm9yZWlnbl9rZXlfc3FsKHNlbGYsIHRpZCwgZGF0YSk6CisgICAgICAgICIi IgorICAgICAgICAgQXJnczoKKyAgICAgICAgICAgdGlkOiBUYWJsZSBJRAor ICAgICAgICAgICBkYXRhOiBkYXRhIGRpY3QgY29taW5nIGZyb20gdGhlIGNs aWVudAorCisgICAgICAgIFJldHVybnM6CisgICAgICAgIFRoaXMgZnVuY3Rp b24gd2lsbCBnZW5lcmF0ZSBtb2RpZmllZCBzcWwgZm9yIGZvcmVpZ24ga2V5 CisgICAgICAgICIiIgorICAgICAgICBzcWwgPSBbXQorICAgICAgICAjIENo ZWNrIGlmIGNvbnN0cmFpbnQgaXMgaW4gZGF0YQorICAgICAgICAjIElmIHll cyB0aGVuIHdlIG5lZWQgdG8gY2hlY2sgZm9yIGFkZC9jaGFuZ2UvZGVsZXRl CisgICAgICAgIGlmICdmb3JlaWduX2tleScgaW4gZGF0YToKKyAgICAgICAg ICAgIGNvbnN0cmFpbnQgPSBkYXRhWydmb3JlaWduX2tleSddCisgICAgICAg ICAgICAjIElmIGNvbnN0cmFpbnQocykgaXMvYXJlIGRlbGV0ZWQKKyAgICAg ICAgICAgIGlmICdkZWxldGVkJyBpbiBjb25zdHJhaW50OgorICAgICAgICAg ICAgICAgIGZvciBjIGluIGNvbnN0cmFpbnRbJ2RlbGV0ZWQnXToKKyAgICAg ICAgICAgICAgICAgICAgY1snc2NoZW1hJ10gPSBkYXRhWydzY2hlbWEnXQor ICAgICAgICAgICAgICAgICAgICBjWyd0YWJsZSddID0gZGF0YVsnbmFtZSdd CisKKyAgICAgICAgICAgICAgICAgICAgIyBTcWwgZm9yIGRyb3AKKyAgICAg ICAgICAgICAgICAgICAgc3FsLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAg ICAgICAgIHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbigKKyAgICAgICAgICAg ICAgICAgICAgICAgIFtzZWxmLmZvcmVpZ25fa2V5X3RlbXBsYXRlX3BhdGgs CisgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlbGV0ZS5zcWwnXSksCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1jLCBjb25uPXNlbGYu Y29ubikuc3RyaXAoJ1xuJykKKyAgICAgICAgICAgICAgICAgICAgKQorCisg ICAgICAgICAgICBpZiAnY2hhbmdlZCcgaW4gY29uc3RyYWludDoKKyAgICAg ICAgICAgICAgICBmb3IgYyBpbiBjb25zdHJhaW50WydjaGFuZ2VkJ106Cisg ICAgICAgICAgICAgICAgICAgIGNbJ3NjaGVtYSddID0gZGF0YVsnc2NoZW1h J10KKyAgICAgICAgICAgICAgICAgICAgY1sndGFibGUnXSA9IGRhdGFbJ25h bWUnXQorCisgICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXNfc3FsID0g cmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKAorICAgICAgICAgICAgICAgICAg ICAgICAgW3NlbGYuZm9yZWlnbl9rZXlfdGVtcGxhdGVfcGF0aCwgJ3Byb3Bl cnRpZXMuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAgdGlkPXRp ZCwgY2lkPWNbJ29pZCddKQorICAgICAgICAgICAgICAgICAgICBzdGF0dXMs IHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QocHJvcGVydGllc19zcWwp CisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAg ICAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9y KGVycm9ybXNnPXJlcykKKworICAgICAgICAgICAgICAgICAgICBvbGRfZGF0 YSA9IHJlc1sncm93cyddWzBdCisgICAgICAgICAgICAgICAgICAgICMgU3Fs IHRvIHVwZGF0ZSBvYmplY3QKKyAgICAgICAgICAgICAgICAgICAgc3FsLmFw cGVuZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcl90ZW1wbGF0 ZSgiLyIuam9pbihbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vs Zi5mb3JlaWduX2tleV90ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICd1cGRhdGUuc3FsJ10pLCBkYXRhPWMsIG9fZGF0YT1v bGRfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uPXNl bGYuY29ubikuc3RyaXAoJ1xuJykKKyAgICAgICAgICAgICAgICAgICAgKQor CisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLnZhbGlkYXRlX2Nv bnN0cmFpbnMoJ2ZvcmVpZ25fa2V5JywgYyk6CisgICAgICAgICAgICAgICAg ICAgICAgICBzcWwuYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGdldHRleHQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICctLSBpbmNvbXBsZXRlIGRlZmluaXRpb24gZm9yIGZvcmVpZ25fa2V5IGNv bnN0cmFpbnQnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQorICAg ICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgICAg ICAgcmV0dXJuICdcblxuJy5qb2luKHNxbCkKKworICAgICAgICAgICAgICAg ICAgICBjb2xzID0gW10KKyAgICAgICAgICAgICAgICAgICAgZm9yIGNvbCBp biBjWydjb2x1bW5zJ106CisgICAgICAgICAgICAgICAgICAgICAgICBjb2xz LmFwcGVuZChjb2xbJ2xvY2FsX2NvbHVtbiddKQorCisgICAgICAgICAgICAg ICAgICAgIGNvdmVyaW5naW5kZXggPSBzZWxmLnNlYXJjaF9jb3ZlcmluZ2lu ZGV4KHRpZCwgY29scykKKworICAgICAgICAgICAgICAgICAgICBpZiBjb3Zl cmluZ2luZGV4IGlzIE5vbmUgYW5kICdhdXRvaW5kZXgnIGluIGMgYW5kIGNb J2F1dG9pbmRleCddIGFuZFwKKyAgICAgICAgICAgICAgICAgICAgICAgICgn Y292ZXJpbmdpbmRleCcgaW4gYyBhbmQKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY1snY292ZXJpbmdpbmRleCddICE9ICcnKToKKyAgICAgICAg ICAgICAgICAgICAgICAgIHNxbC5hcHBlbmQocmVuZGVyX3RlbXBsYXRlKAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLmZv cmVpZ25fa2V5X3RlbXBsYXRlX3BhdGgsICdjcmVhdGVfaW5kZXguc3FsJ10p LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9YywgY29ubj1z ZWxmLmNvbm4pLnN0cmlwKCdcbicpCisgICAgICAgICAgICAgICAgICAgICAg ICApCisKKyAgICAgICAgICAgIGlmICdhZGRlZCcgaW4gY29uc3RyYWludDoK KyAgICAgICAgICAgICAgICBmb3IgYyBpbiBjb25zdHJhaW50WydhZGRlZCdd OgorICAgICAgICAgICAgICAgICAgICBjWydzY2hlbWEnXSA9IGRhdGFbJ3Nj aGVtYSddCisgICAgICAgICAgICAgICAgICAgIGNbJ3RhYmxlJ10gPSBkYXRh WyduYW1lJ10KKworICAgICAgICAgICAgICAgICAgICAjIFNxbCB0byBhZGQg b2JqZWN0CisgICAgICAgICAgICAgICAgICAgICMgQ29sdW1ucworCisgICAg ICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLnZhbGlkYXRlX2NvbnN0cmFp bnMoJ2ZvcmVpZ25fa2V5JywgYyk6CisgICAgICAgICAgICAgICAgICAgICAg ICBzcWwuYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdl dHRleHQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLSBp bmNvbXBsZXRlIGRlZmluaXRpb24gZm9yIGZvcmVpZ25fa2V5IGNvbnN0cmFp bnQnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAg ICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0 dXJuICdcblxuJy5qb2luKHNxbCkKKworICAgICAgICAgICAgICAgICAgICBT UUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYuZm9yZWlnbl9r ZXlfdGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2V0X3BhcmVudC5zcWwnXSks CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0 aWQ9Y1snY29sdW1ucyddWzBdWydyZWZlcmVuY2VzJ10pCisgICAgICAgICAg ICAgICAgICAgIHN0YXR1cywgcnNldCA9IHNlbGYuY29ubi5leGVjdXRlXzJk YXJyYXkoU1FMKQorICAgICAgICAgICAgICAgICAgICBpZiBub3Qgc3RhdHVz OgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3Nl cnZlcl9lcnJvcihlcnJvcm1zZz1yc2V0KQorCisgICAgICAgICAgICAgICAg ICAgIGNbJ3JlbW90ZV9zY2hlbWEnXSA9IHJzZXRbJ3Jvd3MnXVswXVsnc2No ZW1hJ10KKyAgICAgICAgICAgICAgICAgICAgY1sncmVtb3RlX3RhYmxlJ10g PSByc2V0Wydyb3dzJ11bMF1bJ3RhYmxlJ10KKworICAgICAgICAgICAgICAg ICAgICBzcWwuYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICAgICAgcmVu ZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICIv Ii5qb2luKFtzZWxmLmZvcmVpZ25fa2V5X3RlbXBsYXRlX3BhdGgsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjcmVhdGUuc3Fs J10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9YywgY29u bj1zZWxmLmNvbm4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICApLnN0 cmlwKCdcbicpCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAg ICAgICAgICAgIyBzcWwgdG8gdXBkYXRlIGNvbW1lbnRzCisgICAgICAgICAg ICAgICAgICAgIHNxbC5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgICAg ICByZW5kZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIi8iLmpvaW4oW3NlbGYuZm9yZWlnbl9rZXlfdGVtcGxhdGVfcGF0aCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FsdGVy LnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPWMs IGNvbm49c2VsZi5jb25uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg KS5zdHJpcCgnXG4nKQorICAgICAgICAgICAgICAgICAgICApCisKKyAgICAg ICAgICAgICAgICAgICAgaWYgY1snYXV0b2luZGV4J106CisgICAgICAgICAg ICAgICAgICAgICAgICBzcWwuYXBwZW5kKAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYuZm9yZWlnbl9rZXlfdGVt cGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICdjcmVhdGVfaW5kZXguc3FsJ10pLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBkYXRhPWMsIGNvbm49c2VsZi5jb25uKS5z dHJpcCgnXG4nKQorICAgICAgICAgICAgICAgICAgICAgICAgKQorCisgICAg ICAgIGlmIGxlbihzcWwpID4gMDoKKyAgICAgICAgICAgICMgSm9pbiBhbGwg dGhlIHNxbChzKSBhcyBzaW5nbGUgc3RyaW5nCisgICAgICAgICAgICByZXR1 cm4gJ1xuXG4nLmpvaW4oc3FsKQorICAgICAgICBlbHNlOgorICAgICAgICAg ICAgcmV0dXJuIE5vbmUKKworICAgIGRlZiBnZXRfY2hlY2tfY29uc3RyYWlu dF9zcWwoc2VsZiwgdGlkLCBkYXRhKToKKyAgICAgICAgIiIiCisgICAgICAg ICBBcmdzOgorICAgICAgICAgICB0aWQ6IFRhYmxlIElECisgICAgICAgICAg IGRhdGE6IGRhdGEgZGljdCBjb21pbmcgZnJvbSB0aGUgY2xpZW50CisKKyAg ICAgICAgUmV0dXJuczoKKyAgICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwg Z2VuZXJhdGUgbW9kaWZpZWQgc3FsIGZvciBjaGVjayBjb25zdHJhaW50Cisg ICAgICAgICIiIgorICAgICAgICBzcWwgPSBbXQorICAgICAgICAjIENoZWNr IGlmIGNvbnN0cmFpbnQgaXMgaW4gZGF0YQorICAgICAgICAjIElmIHllcyB0 aGVuIHdlIG5lZWQgdG8gY2hlY2sgZm9yIGFkZC9jaGFuZ2UvZGVsZXRlCisg ICAgICAgIGlmICdjaGVja19jb25zdHJhaW50JyBpbiBkYXRhOgorICAgICAg ICAgICAgY29uc3RyYWludCA9IGRhdGFbJ2NoZWNrX2NvbnN0cmFpbnQnXQor ICAgICAgICAgICAgIyBJZiBjb25zdHJhaW50KHMpIGlzL2FyZSBkZWxldGVk CisgICAgICAgICAgICBpZiAnZGVsZXRlZCcgaW4gY29uc3RyYWludDoKKyAg ICAgICAgICAgICAgICBmb3IgYyBpbiBjb25zdHJhaW50WydkZWxldGVkJ106 CisgICAgICAgICAgICAgICAgICAgIGNbJ3NjaGVtYSddID0gZGF0YVsnc2No ZW1hJ10KKyAgICAgICAgICAgICAgICAgICAgY1sndGFibGUnXSA9IGRhdGFb J25hbWUnXQorCisgICAgICAgICAgICAgICAgICAgICMgU3FsIGZvciBkcm9w CisgICAgICAgICAgICAgICAgICAgIHNxbC5hcHBlbmQoCisgICAgICAgICAg ICAgICAgICAgICAgICByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGYuY2hlY2tfY29uc3RyYWlu dF90ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAnZGVsZXRlLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICBkYXRhPWMsIGNvbm49c2VsZi5jb25uKS5zdHJpcCgnXG4nKQorICAgICAg ICAgICAgICAgICAgICApCisKKyAgICAgICAgICAgIGlmICdjaGFuZ2VkJyBp biBjb25zdHJhaW50OgorICAgICAgICAgICAgICAgIGZvciBjIGluIGNvbnN0 cmFpbnRbJ2NoYW5nZWQnXToKKyAgICAgICAgICAgICAgICAgICAgY1snc2No ZW1hJ10gPSBkYXRhWydzY2hlbWEnXQorICAgICAgICAgICAgICAgICAgICBj Wyd0YWJsZSddID0gZGF0YVsnbmFtZSddCisKKyAgICAgICAgICAgICAgICAg ICAgcHJvcGVydGllc19zcWwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4o CisgICAgICAgICAgICAgICAgICAgICAgICBbc2VsZi5jaGVja19jb25zdHJh aW50X3RlbXBsYXRlX3BhdGgsICdwcm9wZXJ0aWVzLnNxbCddKSwKKyAgICAg ICAgICAgICAgICAgICAgICAgIHRpZD10aWQsIGNpZD1jWydvaWQnXSkKKyAg ICAgICAgICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhl Y3V0ZV9kaWN0KHByb3BlcnRpZXNfc3FsKQorICAgICAgICAgICAgICAgICAg ICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0 dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAg ICAgICAgICAgICAgICAgICAgb2xkX2RhdGEgPSByZXNbJ3Jvd3MnXVswXQor ICAgICAgICAgICAgICAgICAgICAjIFNxbCB0byB1cGRhdGUgb2JqZWN0Cisg ICAgICAgICAgICAgICAgICAgIHNxbC5hcHBlbmQoCisgICAgICAgICAgICAg ICAgICAgICAgICByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oWworICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2hlY2tfY29uc3RyYWludF90 ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICd1 cGRhdGUuc3FsJ10pLCBkYXRhPWMsIG9fZGF0YT1vbGRfZGF0YSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb25uPXNlbGYuY29ubikuc3RyaXAo J1xuJykKKyAgICAgICAgICAgICAgICAgICAgKQorCisgICAgICAgICAgICBp ZiAnYWRkZWQnIGluIGNvbnN0cmFpbnQ6CisgICAgICAgICAgICAgICAgZm9y IGMgaW4gY29uc3RyYWludFsnYWRkZWQnXToKKyAgICAgICAgICAgICAgICAg ICAgY1snc2NoZW1hJ10gPSBkYXRhWydzY2hlbWEnXQorICAgICAgICAgICAg ICAgICAgICBjWyd0YWJsZSddID0gZGF0YVsnbmFtZSddCisKKyAgICAgICAg ICAgICAgICAgICAgaWYgbm90IHNlbGYudmFsaWRhdGVfY29uc3RyYWlucygn Y2hlY2tfY29uc3RyYWludCcsIGMpOgorICAgICAgICAgICAgICAgICAgICAg ICAgc3FsLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBn ZXR0ZXh0KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS0g aW5jb21wbGV0ZSBkZWZpbml0aW9uIGZvciBjaGVja19jb25zdHJhaW50Jwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAg ICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAn XG5cbicuam9pbihzcWwpCisKKyAgICAgICAgICAgICAgICAgICAgc3FsLmFw cGVuZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcl90ZW1wbGF0 ZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLyIuam9pbihbc2Vs Zi5jaGVja19jb25zdHJhaW50X3RlbXBsYXRlX3BhdGgsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjcmVhdGUuc3FsJ10pLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9YywgY29ubj1zZWxm LmNvbm4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICApLnN0cmlwKCdc bicpCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAg ICAgIyBzcWwgdG8gdXBkYXRlIGNvbW1lbnRzCisgICAgICAgICAgICAgICAg ICAgIHNxbC5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgICAgICByZW5k ZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi8i LmpvaW4oW3NlbGYuY2hlY2tfY29uc3RyYWludF90ZW1wbGF0ZV9wYXRoLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYWx0ZXIu c3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9Yywg Y29ubj1zZWxmLmNvbm4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAp LnN0cmlwKCdcbicpCisgICAgICAgICAgICAgICAgICAgICkKKworICAgICAg ICBpZiBsZW4oc3FsKSA+IDA6CisgICAgICAgICAgICAjIEpvaW4gYWxsIHRo ZSBzcWwocykgYXMgc2luZ2xlIHN0cmluZworICAgICAgICAgICAgcmV0dXJu ICdcblxuJy5qb2luKHNxbCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAg IHJldHVybiBOb25lCisKKyAgICBkZWYgZ2V0X2V4Y2x1c2lvbl9jb25zdHJh aW50X3NxbChzZWxmLCB0aWQsIGRhdGEpOgorICAgICAgICAiIiIKKyAgICAg ICAgIEFyZ3M6CisgICAgICAgICAgIHRpZDogVGFibGUgSUQKKyAgICAgICAg ICAgZGF0YTogZGF0YSBkaWN0IGNvbWluZyBmcm9tIHRoZSBjbGllbnQKKwor ICAgICAgICBSZXR1cm5zOgorICAgICAgICAgIFRoaXMgZnVuY3Rpb24gd2ls bCBnZW5lcmF0ZSBtb2RpZmllZCBzcWwgZm9yIGV4Y2x1c2lvbiBjb25zdHJh aW50CisgICAgICAgICIiIgorICAgICAgICBzcWwgPSBbXQorICAgICAgICAj IENoZWNrIGlmIGNvbnN0cmFpbnQgaXMgaW4gZGF0YQorICAgICAgICAjIElm IHllcyB0aGVuIHdlIG5lZWQgdG8gY2hlY2sgZm9yIGFkZC9jaGFuZ2UvZGVs ZXRlCisgICAgICAgIGlmICdleGNsdWRlX2NvbnN0cmFpbnQnIGluIGRhdGE6 CisgICAgICAgICAgICBjb25zdHJhaW50ID0gZGF0YVsnZXhjbHVkZV9jb25z dHJhaW50J10KKyAgICAgICAgICAgICMgSWYgY29uc3RyYWludChzKSBpcy9h cmUgZGVsZXRlZAorICAgICAgICAgICAgaWYgJ2RlbGV0ZWQnIGluIGNvbnN0 cmFpbnQ6CisgICAgICAgICAgICAgICAgZm9yIGMgaW4gY29uc3RyYWludFsn ZGVsZXRlZCddOgorICAgICAgICAgICAgICAgICAgICBjWydzY2hlbWEnXSA9 IGRhdGFbJ3NjaGVtYSddCisgICAgICAgICAgICAgICAgICAgIGNbJ3RhYmxl J10gPSBkYXRhWyduYW1lJ10KKworICAgICAgICAgICAgICAgICAgICAjIFNx bCBmb3IgZHJvcAorICAgICAgICAgICAgICAgICAgICBzcWwuYXBwZW5kKAor ICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyX3RlbXBsYXRlKCIvIi5q b2luKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWxmLmV4Y2x1 c2lvbl9jb25zdHJhaW50X3RlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICdkZWxldGUuc3FsJ10pLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGRhdGE9YywgY29ubj1zZWxmLmNvbm4pLnN0cmlw KCdcbicpCisgICAgICAgICAgICAgICAgICAgICkKKworICAgICAgICAgICAg aWYgJ2NoYW5nZWQnIGluIGNvbnN0cmFpbnQ6CisgICAgICAgICAgICAgICAg Zm9yIGMgaW4gY29uc3RyYWludFsnY2hhbmdlZCddOgorICAgICAgICAgICAg ICAgICAgICBjWydzY2hlbWEnXSA9IGRhdGFbJ3NjaGVtYSddCisgICAgICAg ICAgICAgICAgICAgIGNbJ3RhYmxlJ10gPSBkYXRhWyduYW1lJ10KKworICAg ICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzX3NxbCA9IHJlbmRlcl90ZW1w bGF0ZSgiLyIuam9pbigKKyAgICAgICAgICAgICAgICAgICAgICAgIFtzZWxm LmV4Y2x1c2lvbl9jb25zdHJhaW50X3RlbXBsYXRlX3BhdGgsICdwcm9wZXJ0 aWVzLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHRpZD10aWQs IGNpZD1jWydvaWQnXSkKKyAgICAgICAgICAgICAgICAgICAgc3RhdHVzLCBy ZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KHByb3BlcnRpZXNfc3FsKQor ICAgICAgICAgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAg ICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihl cnJvcm1zZz1yZXMpCisKKyAgICAgICAgICAgICAgICAgICAgb2xkX2RhdGEg PSByZXNbJ3Jvd3MnXVswXQorICAgICAgICAgICAgICAgICAgICAjIFNxbCB0 byB1cGRhdGUgb2JqZWN0CisgICAgICAgICAgICAgICAgICAgIHNxbC5hcHBl bmQoCisgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJfdGVtcGxhdGUo Ii8iLmpvaW4oWworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYu ZXhjbHVzaW9uX2NvbnN0cmFpbnRfdGVtcGxhdGVfcGF0aCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAndXBkYXRlLnNxbCddKSwgZGF0YT1jLCBv X2RhdGE9b2xkX2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y29ubj1zZWxmLmNvbm4pLnN0cmlwKCdcbicpCisgICAgICAgICAgICAgICAg ICAgICkKKworICAgICAgICAgICAgaWYgJ2FkZGVkJyBpbiBjb25zdHJhaW50 OgorICAgICAgICAgICAgICAgIGZvciBjIGluIGNvbnN0cmFpbnRbJ2FkZGVk J106CisgICAgICAgICAgICAgICAgICAgIGNbJ3NjaGVtYSddID0gZGF0YVsn c2NoZW1hJ10KKyAgICAgICAgICAgICAgICAgICAgY1sndGFibGUnXSA9IGRh dGFbJ25hbWUnXQorCisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxm LnZhbGlkYXRlX2NvbnN0cmFpbnMoJ2V4Y2x1ZGVfY29uc3RyYWludCcsIGMp OgorICAgICAgICAgICAgICAgICAgICAgICAgc3FsLmFwcGVuZCgKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICBnZXR0ZXh0KAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAnLS0gaW5jb21wbGV0ZSBkZWZpbml0aW9u IGZvciBleGNsdXNpb25fY29uc3RyYWludCcKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgICAgICApCisgICAg ICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1xuXG4nLmpvaW4oc3FsKQor CisgICAgICAgICAgICAgICAgICAgIHNxbC5hcHBlbmQoCisgICAgICAgICAg ICAgICAgICAgICAgICByZW5kZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYuZXhjbHVzaW9uX2NvbnN0 cmFpbnRfdGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJ2NyZWF0ZS5zcWwnXSksCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZGF0YT1jLCBjb25uPXNlbGYuY29ubgorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICkuc3RyaXAoJ1xuJykKKyAgICAgICAg ICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgICAjIHNxbCB0byB1 cGRhdGUgY29tbWVudHMKKyAgICAgICAgICAgICAgICAgICAgc3FsLmFwcGVu ZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcl90ZW1wbGF0ZSgK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLyIuam9pbihbc2VsZi5l eGNsdXNpb25fY29uc3RyYWludF90ZW1wbGF0ZV9wYXRoLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYWx0ZXIuc3FsJ10pLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9YywgY29ubj1zZWxm LmNvbm4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICApLnN0cmlwKCdc bicpCisgICAgICAgICAgICAgICAgICAgICkKKworICAgICAgICBpZiBsZW4o c3FsKSA+IDA6CisgICAgICAgICAgICAjIEpvaW4gYWxsIHRoZSBzcWwocykg YXMgc2luZ2xlIHN0cmluZworICAgICAgICAgICAgcmV0dXJuICdcblxuJy5q b2luKHNxbCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBO b25lCisKKyAgICBkZWYgZ2V0X3NxbChzZWxmLCBzY2lkLCB0aWQsIGRhdGEp OgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIGdl bmVyYXRlIGNyZWF0ZS91cGRhdGUgc3FsIGZyb20gbW9kZWwgZGF0YQorICAg ICAgICBjb21pbmcgZnJvbSBjbGllbnQKKyAgICAgICAgIiIiCisgICAgICAg IGlmIHRpZCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIFNRTCA9IHJlbmRl cl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHJv cGVydGllcy5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc2NpZD1zY2lkLCB0aWQ9dGlkLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGRhdGxhc3RzeXNvaWQ9c2VsZi5kYXRsYXN0c3lz b2lkKQorICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhl Y3V0ZV9kaWN0KFNRTCkKKyAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6Cisg ICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihl cnJvcm1zZz1yZXMpCisKKyAgICAgICAgICAgIG9sZF9kYXRhID0gcmVzWydy b3dzJ11bMF0KKyAgICAgICAgICAgIG9sZF9kYXRhID0gc2VsZi5fZm9ybWF0 dGVyKHNjaWQsIHRpZCwgb2xkX2RhdGEpCisKKyAgICAgICAgICAgICMgV2Ug d2lsbCBjb252ZXJ0IHByaXZpbGVnZXMgY29taW5nIGZyb20gY2xpZW50IHJl cXVpcmVkCisgICAgICAgICAgICBpZiAncmVsYWNsJyBpbiBkYXRhOgorICAg ICAgICAgICAgICAgIGZvciBtb2RlIGluIFsnYWRkZWQnLCAnY2hhbmdlZCcs ICdkZWxldGVkJ106CisgICAgICAgICAgICAgICAgICAgIGlmIG1vZGUgaW4g ZGF0YVsncmVsYWNsJ106CisgICAgICAgICAgICAgICAgICAgICAgICBkYXRh WydyZWxhY2wnXVttb2RlXSA9IHBhcnNlX3ByaXZfdG9fZGIoCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZGF0YVsncmVsYWNsJ11bbW9kZV0sIHNl bGYuYWNsCisgICAgICAgICAgICAgICAgICAgICAgICApCisKKyAgICAgICAg ICAgICMgSWYgbmFtZSBpZiBub3QgcHJlc2VudAorICAgICAgICAgICAgaWYg J25hbWUnIG5vdCBpbiBkYXRhOgorICAgICAgICAgICAgICAgIGRhdGFbJ25h bWUnXSA9IG9sZF9kYXRhWyduYW1lJ10KKyAgICAgICAgICAgICMgSWYgbmFt ZSBpZiBub3QgcHJlc2VudAorICAgICAgICAgICAgaWYgJ3NjaGVtYScgbm90 IGluIGRhdGE6CisgICAgICAgICAgICAgICAgZGF0YVsnc2NoZW1hJ10gPSBv bGRfZGF0YVsnc2NoZW1hJ10KKworICAgICAgICAgICAgIyBGaWx0ZXIgb3V0 IG5ldyB0YWJsZXMgZnJvbSBsaXN0LCB3ZSB3aWxsIHNlbmQgY29tcGxldGUg bGlzdAorICAgICAgICAgICAgIyBhbmQgbm90IG5ld2x5IGFkZGVkIHRhYmxl cyBpbiB0aGUgbGlzdCBmcm9tIGNsaWVudAorICAgICAgICAgICAgIyBzbyB3 ZSB3aWxsIGZpbHRlciBuZXcgdGFibGVzIGhlcmUKKyAgICAgICAgICAgIGlm ICdjb2xsX2luaGVyaXRzJyBpbiBkYXRhOgorICAgICAgICAgICAgICAgIHBf bGVuID0gbGVuKG9sZF9kYXRhWydjb2xsX2luaGVyaXRzJ10pCisgICAgICAg ICAgICAgICAgY19sZW4gPSBsZW4oZGF0YVsnY29sbF9pbmhlcml0cyddKQor ICAgICAgICAgICAgICAgICMgSWYgdGFibGUocykgYWRkZWQKKyAgICAgICAg ICAgICAgICBpZiBjX2xlbiA+IHBfbGVuOgorICAgICAgICAgICAgICAgICAg ICBkYXRhWydjb2xsX2luaGVyaXRzX2FkZGVkJ10gPSBsaXN0KAorICAgICAg ICAgICAgICAgICAgICAgICAgc2V0KGRhdGFbJ2NvbGxfaW5oZXJpdHMnXSkg LSBzZXQob2xkX2RhdGFbJ2NvbGxfaW5oZXJpdHMnXSkKKyAgICAgICAgICAg ICAgICAgICAgKQorICAgICAgICAgICAgICAgICMgSWYgdGFibGUocylyZW1v dmVkCisgICAgICAgICAgICAgICAgZWxpZiBjX2xlbiA8IHBfbGVuOgorICAg ICAgICAgICAgICAgICAgICBkYXRhWydjb2xsX2luaGVyaXRzX3JlbW92ZWQn XSA9IGxpc3QoCisgICAgICAgICAgICAgICAgICAgICAgICBzZXQob2xkX2Rh dGFbJ2NvbGxfaW5oZXJpdHMnXSkgLSBzZXQoZGF0YVsnY29sbF9pbmhlcml0 cyddKQorICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAg IyBTYWZlIHNpZGUgdmVyaWZpY2F0aW9uLEluIGNhc2UgaXQgaGFwcGVucy4u CisgICAgICAgICAgICAgICAgIyBJZiB1c2VyIHJlbW92ZXMgYW5kIGFkZHMg c2FtZSBudW1iZXIgb2YgdGFibGUKKyAgICAgICAgICAgICAgICAjIGVnIHJl bW92ZWQgb25lIHRhYmxlIGFuZCBhZGRlZCBvbmUgbmV3IHRhYmxlCisgICAg ICAgICAgICAgICAgZWxpZiBjX2xlbiA9PSBwX2xlbjoKKyAgICAgICAgICAg ICAgICAgICAgZGF0YVsnY29sbF9pbmhlcml0c19hZGRlZCddID0gbGlzdCgK KyAgICAgICAgICAgICAgICAgICAgICAgIHNldChkYXRhWydjb2xsX2luaGVy aXRzJ10pIC0gc2V0KG9sZF9kYXRhWydjb2xsX2luaGVyaXRzJ10pCisgICAg ICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgZGF0YVsn Y29sbF9pbmhlcml0c19yZW1vdmVkJ10gPSBsaXN0KAorICAgICAgICAgICAg ICAgICAgICAgICAgc2V0KG9sZF9kYXRhWydjb2xsX2luaGVyaXRzJ10pIC0g c2V0KGRhdGFbJ2NvbGxfaW5oZXJpdHMnXSkKKyAgICAgICAgICAgICAgICAg ICAgKQorCisgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8i LmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ3VwZGF0ZS5zcWwnXSksCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb19kYXRhPW9sZF9k YXRhLCBkYXRhPWRhdGEsIGNvbm49c2VsZi5jb25uKQorICAgICAgICAgICAg IyBSZW1vdmVzIHRyYWluaW5nIG5ldyBsaW5lcworICAgICAgICAgICAgU1FM ID0gU1FMLnN0cmlwKCdcbicpICsgJ1xuXG4nCisKKyAgICAgICAgICAgICMg UGFyc2UvRm9ybWF0IGNvbHVtbnMgJiBjcmVhdGUgc3FsCisgICAgICAgICAg ICBpZiAnY29sdW1ucycgaW4gZGF0YToKKyAgICAgICAgICAgICAgICAjIFBh cnNlIHRoZSBkYXRhIGNvbWluZyBmcm9tIGNsaWVudAorICAgICAgICAgICAg ICAgIGRhdGEgPSBzZWxmLl9wYXJzZV9mb3JtYXRfY29sdW1ucyhkYXRhLCBt b2RlPSdlZGl0JykKKworICAgICAgICAgICAgICAgIGNvbHVtbnMgPSBkYXRh Wydjb2x1bW5zJ10KKyAgICAgICAgICAgICAgICBjb2x1bW5fc3FsID0gJ1xu JworCisgICAgICAgICAgICAgICAgIyBJZiBjb2x1bW4ocykgaXMvYXJlIGRl bGV0ZWQKKyAgICAgICAgICAgICAgICBpZiAnZGVsZXRlZCcgaW4gY29sdW1u czoKKyAgICAgICAgICAgICAgICAgICAgZm9yIGMgaW4gY29sdW1uc1snZGVs ZXRlZCddOgorICAgICAgICAgICAgICAgICAgICAgICAgY1snc2NoZW1hJ10g PSBkYXRhWydzY2hlbWEnXQorICAgICAgICAgICAgICAgICAgICAgICAgY1sn dGFibGUnXSA9IGRhdGFbJ25hbWUnXQorICAgICAgICAgICAgICAgICAgICAg ICAgIyBTcWwgZm9yIGRyb3AgY29sdW1uCisgICAgICAgICAgICAgICAgICAg ICAgICBpZiAnaW5oZXJpdGVkZnJvbScgbm90IGluIGM6CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29sdW1uX3NxbCArPSByZW5kZXJfdGVtcGxh dGUoIi8iLmpvaW4oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFtzZWxmLmNvbHVtbl90ZW1wbGF0ZV9wYXRoLCAnZGVsZXRlLnNxbCddKSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1jLCBjb25u PXNlbGYuY29ubikuc3RyaXAoJ1xuJykgKyAnXG5cbicKKworICAgICAgICAg ICAgICAgICMgSWYgY29sdW1uKHMpIGlzL2FyZSBjaGFuZ2VkCisgICAgICAg ICAgICAgICAgIyBIZXJlIHdlIHdpbGwgYmUgbmVlZGluZyBwcmV2aW91cyBw cm9wZXJ0aWVzIG9mIGNvbHVtbgorICAgICAgICAgICAgICAgICMgc28gdGhh dCB3ZSBjYW4gY29tcGFyZSAmIHVwZGF0ZSBpdAorICAgICAgICAgICAgICAg IGlmICdjaGFuZ2VkJyBpbiBjb2x1bW5zOgorICAgICAgICAgICAgICAgICAg ICBmb3IgYyBpbiBjb2x1bW5zWydjaGFuZ2VkJ106CisgICAgICAgICAgICAg ICAgICAgICAgICBjWydzY2hlbWEnXSA9IGRhdGFbJ3NjaGVtYSddCisgICAg ICAgICAgICAgICAgICAgICAgICBjWyd0YWJsZSddID0gZGF0YVsnbmFtZSdd CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAnYXR0YWNsJyBpbiBjOgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbJ2F0dGFjbCddID0gcGFy c2VfcHJpdl90b19kYihjWydhdHRhY2wnXSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vs Zi5jb2x1bW5fYWNsKQorCisgICAgICAgICAgICAgICAgICAgICAgICBwcm9w ZXJ0aWVzX3NxbCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi5j b2x1bW5fdGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJ3Byb3BlcnRpZXMuc3FsJ10pLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWQ9 dGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjbGlkPWNbJ2F0dG51bSddLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzaG93X3N5c19vYmplY3RzPXNlbGYu Ymx1ZXByaW50LnNob3dfc3lzdGVtX29iamVjdHMKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQorCisgICAgICAgICAg ICAgICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRl X2RpY3QocHJvcGVydGllc19zcWwpCisgICAgICAgICAgICAgICAgICAgICAg ICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAg IHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQor ICAgICAgICAgICAgICAgICAgICAgICAgb2xkX2RhdGEgPSByZXNbJ3Jvd3Mn XVswXQorCisgICAgICAgICAgICAgICAgICAgICAgICBvbGRfZGF0YVsnY2x0 eXBlJ10gPSBzZWxmLl9jbHR5cGVfZm9ybWF0dGVyKG9sZF9kYXRhWydjbHR5 cGUnXSkKKyAgICAgICAgICAgICAgICAgICAgICAgIG9sZF9kYXRhWydoYXNT cXJCcmFja2V0J10gPSBzZWxmLmhhc1NxckJyYWNrZXQKKworICAgICAgICAg ICAgICAgICAgICAgICAgIyBTcWwgZm9yIGFsdGVyIGNvbHVtbgorICAgICAg ICAgICAgICAgICAgICAgICAgaWYgJ2luaGVyaXRlZGZyb20nIG5vdCBpbiBj OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbl9zcWwgKz0g cmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBbc2VsZi5jb2x1bW5fdGVtcGxhdGVfcGF0aCwgJ3Vw ZGF0ZS5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGRhdGE9Yywgb19kYXRhPW9sZF9kYXRhLCBjb25uPXNlbGYuY29ubikuc3Ry aXAoJ1xuJykgKyAnXG5cbicKKworICAgICAgICAgICAgICAgICMgSWYgY29s dW1uKHMpIGlzL2FyZSBhZGRlZAorICAgICAgICAgICAgICAgIGlmICdhZGRl ZCcgaW4gY29sdW1uczoKKyAgICAgICAgICAgICAgICAgICAgZm9yIGMgaW4g Y29sdW1uc1snYWRkZWQnXToKKyAgICAgICAgICAgICAgICAgICAgICAgIGNb J3NjaGVtYSddID0gZGF0YVsnc2NoZW1hJ10KKyAgICAgICAgICAgICAgICAg ICAgICAgIGNbJ3RhYmxlJ10gPSBkYXRhWyduYW1lJ10KKyAgICAgICAgICAg ICAgICAgICAgICAgICMgU3FsIGZvciBjcmVhdGUgY29sdW1uCisgICAgICAg ICAgICAgICAgICAgICAgICBpZiAnYXR0YWNsJyBpbiBjOgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNbJ2F0dGFjbCddID0gcGFyc2VfcHJpdl90 b19kYihjWydhdHRhY2wnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jb2x1bW5f YWNsKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgJ2luaGVyaXRlZGZy b20nIG5vdCBpbiBjOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bHVtbl9zcWwgKz0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VsZi5jb2x1bW5fdGVtcGxh dGVfcGF0aCwgJ2NyZWF0ZS5zcWwnXSksCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGRhdGE9YywgY29ubj1zZWxmLmNvbm4pLnN0cmlwKCdc bicpICsgJ1xuXG4nCisKKyAgICAgICAgICAgICAgICAjIENvbWJpbmUgYWxs IHRoZSBTUUwgdG9nZXRoZXIKKyAgICAgICAgICAgICAgICBTUUwgKz0gY29s dW1uX3NxbC5zdHJpcCgnXG4nKQorCisgICAgICAgICAgICAjIENoZWNrIGlm IGluZGV4IGNvbnN0cmFpbnRzIGFyZSBhZGRlZC9jaGFuZ2VkL2RlbGV0ZWQK KyAgICAgICAgICAgIGluZGV4X2NvbnN0cmFpbnRfc3FsID0gc2VsZi5nZXRf aW5kZXhfY29uc3RyYWludF9zcWwodGlkLCBkYXRhKQorICAgICAgICAgICAg IyBJZiB3ZSBoYXZlIGluZGV4IGNvbnN0cmFpbnQgc3FsIHRoZW4gYWQgaXQg aW4gbWFpbiBzcWwKKyAgICAgICAgICAgIGlmIGluZGV4X2NvbnN0cmFpbnRf c3FsIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIFNRTCArPSAnXG4n ICsgaW5kZXhfY29uc3RyYWludF9zcWwKKworICAgICAgICAgICAgIyBDaGVj ayBpZiBmb3JlaWduIGtleShzKSBpcy9hcmUgYWRkZWQvY2hhbmdlZC9kZWxl dGVkCisgICAgICAgICAgICBmb3JlaWduX2tleV9zcWwgPSBzZWxmLmdldF9m b3JlaWduX2tleV9zcWwodGlkLCBkYXRhKQorICAgICAgICAgICAgIyBJZiB3 ZSBoYXZlIGZvcmVpZ24ga2V5IHNxbCB0aGVuIGFkIGl0IGluIG1haW4gc3Fs CisgICAgICAgICAgICBpZiBmb3JlaWduX2tleV9zcWwgaXMgbm90IE5vbmU6 CisgICAgICAgICAgICAgICAgU1FMICs9ICdcbicgKyBmb3JlaWduX2tleV9z cWwKKworICAgICAgICAgICAgIyBDaGVjayBpZiBjaGVjayBjb25zdHJhaW50 KHMpIGlzL2FyZSBhZGRlZC9jaGFuZ2VkL2RlbGV0ZWQKKyAgICAgICAgICAg IGNoZWNrX2NvbnN0cmFpbnRfc3FsID0gc2VsZi5nZXRfY2hlY2tfY29uc3Ry YWludF9zcWwodGlkLCBkYXRhKQorICAgICAgICAgICAgIyBJZiB3ZSBoYXZl IGNoZWNrIGNvbnN0cmFpbnQgc3FsIHRoZW4gYWQgaXQgaW4gbWFpbiBzcWwK KyAgICAgICAgICAgIGlmIGNoZWNrX2NvbnN0cmFpbnRfc3FsIGlzIG5vdCBO b25lOgorICAgICAgICAgICAgICAgIFNRTCArPSAnXG4nICsgY2hlY2tfY29u c3RyYWludF9zcWwKKworICAgICAgICAgICAgIyBDaGVjayBpZiBleGNsdXNp b24gY29uc3RyYWludChzKSBpcy9hcmUgYWRkZWQvY2hhbmdlZC9kZWxldGVk CisgICAgICAgICAgICBleGNsdXNpb25fY29uc3RyYWludF9zcWwgPSBzZWxm LmdldF9leGNsdXNpb25fY29uc3RyYWludF9zcWwodGlkLCBkYXRhKQorICAg ICAgICAgICAgIyBJZiB3ZSBoYXZlIGNoZWNrIGNvbnN0cmFpbnQgc3FsIHRo ZW4gYWQgaXQgaW4gbWFpbiBzcWwKKyAgICAgICAgICAgIGlmIGV4Y2x1c2lv bl9jb25zdHJhaW50X3NxbCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAg ICBTUUwgKz0gJ1xuJyArIGV4Y2x1c2lvbl9jb25zdHJhaW50X3NxbAorCisg ICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXF1aXJlZF9hcmdzID0gWwor ICAgICAgICAgICAgICAgICduYW1lJworICAgICAgICAgICAgXQorCisgICAg ICAgICAgICBmb3IgYXJnIGluIHJlcXVpcmVkX2FyZ3M6CisgICAgICAgICAg ICAgICAgaWYgYXJnIG5vdCBpbiBkYXRhOgorICAgICAgICAgICAgICAgICAg ICByZXR1cm4gZ2V0dGV4dCgnLS0gaW5jb21wbGV0ZSBkZWZpbml0aW9uJykK KworICAgICAgICAgICAgIyB2YWxpZGF0ZSBjb25zdHJhaW50IGRhdGEuCisg ICAgICAgICAgICBmb3Iga2V5IGluIFsncHJpbWFyeV9rZXknLCAndW5pcXVl X2NvbnN0cmFpbnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvcmVp Z25fa2V5JywgJ2NoZWNrX2NvbnN0cmFpbnQnLAorICAgICAgICAgICAgICAg ICAgICAgICAgJ2V4Y2x1ZGVfY29uc3RyYWludCddOgorICAgICAgICAgICAg ICAgIGlmIGtleSBpbiBkYXRhIGFuZCBsZW4oZGF0YVtrZXldKSA+IDA6Cisg ICAgICAgICAgICAgICAgICAgIGZvciBjb25zdHJhaW50IGluIGRhdGFba2V5 XToKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLnZhbGlk YXRlX2NvbnN0cmFpbnMoa2V5LCBjb25zdHJhaW50KToKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICByZXR1cm4gZ2V0dGV4dCgnLS0gaW5jb21wbGV0 ZSBkZWZpbml0aW9uIGZvciB7MH0nLmZvcm1hdChrZXkpKQorCisgICAgICAg ICAgICAjIFdlIHdpbGwgY29udmVydCBwcml2aWxlZ2VzIGNvbWluZyBmcm9t IGNsaWVudCByZXF1aXJlZAorICAgICAgICAgICAgIyBpbiBzZXJ2ZXIgc2lk ZSBmb3JtYXQKKyAgICAgICAgICAgIGlmICdyZWxhY2wnIGluIGRhdGE6Cisg ICAgICAgICAgICAgICAgZGF0YVsncmVsYWNsJ10gPSBwYXJzZV9wcml2X3Rv X2RiKGRhdGFbJ3JlbGFjbCddLCBzZWxmLmFjbCkKKworICAgICAgICAgICAg IyBQYXJzZSAmIGZvcm1hdCBjb2x1bW5zCisgICAgICAgICAgICBkYXRhID0g c2VsZi5fcGFyc2VfZm9ybWF0X2NvbHVtbnMoZGF0YSkKKworICAgICAgICAg ICAgaWYgJ2ZvcmVpZ25fa2V5JyBpbiBkYXRhOgorICAgICAgICAgICAgICAg IGZvciBjIGluIGRhdGFbJ2ZvcmVpZ25fa2V5J106CisgICAgICAgICAgICAg ICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi5m b3JlaWduX2tleV90ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnZXRfcGFyZW50 LnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHRpZD1jWydjb2x1bW5zJ11bMF1bJ3JlZmVyZW5jZXMnXSkKKyAg ICAgICAgICAgICAgICAgICAgc3RhdHVzLCByc2V0ID0gc2VsZi5jb25uLmV4 ZWN1dGVfMmRhcnJheShTUUwpCisgICAgICAgICAgICAgICAgICAgIGlmIG5v dCBzdGF0dXM6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW50 ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJzZXQpCisKKyAgICAgICAg ICAgICAgICAgICAgY1sncmVtb3RlX3NjaGVtYSddID0gcnNldFsncm93cydd WzBdWydzY2hlbWEnXQorICAgICAgICAgICAgICAgICAgICBjWydyZW1vdGVf dGFibGUnXSA9IHJzZXRbJ3Jvd3MnXVswXVsndGFibGUnXQorCisgICAgICAg ICAgICAjIElmIHRoZSByZXF1ZXN0IGZvciBuZXcgb2JqZWN0IHdoaWNoIGRv IG5vdCBoYXZlIGRpZAorICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBs YXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdjcmVhdGUuc3Fs J10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9 ZGF0YSwgY29ubj1zZWxmLmNvbm4pCisgICAgICAgIFNRTCA9IHJlLnN1Yign XG57Mix9JywgJ1xuJywgU1FMKQorICAgICAgICBTUUwgPSBTUUwuc3RyaXAo J1xuJykKKworICAgICAgICByZXR1cm4gU1FMCisKKyAgICBkZWYgdmFsaWRh dGVfY29uc3RyYWlucyhzZWxmLCBrZXksIGRhdGEpOgorCisgICAgICAgIGlm IGtleSA9PSAncHJpbWFyeV9rZXknIG9yIGtleSA9PSAndW5pcXVlX2NvbnN0 cmFpbnQnOgorICAgICAgICAgICAgaWYgJ2NvbHVtbnMnIGluIGRhdGEgYW5k IGxlbihkYXRhWydjb2x1bW5zJ10pID4gMDoKKyAgICAgICAgICAgICAgICBy ZXR1cm4gVHJ1ZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAg ICByZXR1cm4gRmFsc2UKKyAgICAgICAgZWxpZiBrZXkgPT0gJ2ZvcmVpZ25f a2V5JzoKKyAgICAgICAgICAgIGZvciBhcmcgaW4gWydjb2x1bW5zJ106Cisg ICAgICAgICAgICAgICAgaWYgYXJnIG5vdCBpbiBkYXRhOgorICAgICAgICAg ICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgICAgICAgICBlbGlm IGlzaW5zdGFuY2UoZGF0YVthcmddLCBsaXN0KSBhbmQgbGVuKGRhdGFbYXJn XSkgPCAxOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKwor ICAgICAgICAgICAgaWYgZGF0YVsnYXV0b2luZGV4J10gYW5kICgnY292ZXJp bmdpbmRleCcgbm90IGluIGRhdGEgb3IKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZGF0YVsnY292ZXJpbmdpbmRleCddID09ICcn KToKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgICAgICAg ICAgcmV0dXJuIFRydWUKKworICAgICAgICBlbGlmIGtleSA9PSAnY2hlY2tf Y29uc3RyYWludCc6CisgICAgICAgICAgICBmb3IgYXJnIGluIFsnY29uc3Jj J106CisgICAgICAgICAgICAgICAgaWYgYXJnIG5vdCBpbiBkYXRhIG9yIGRh dGFbYXJnXSA9PSAnJzoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZh bHNlCisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgICAgIGVsaWYg a2V5ID09ICdleGNsdWRlX2NvbnN0cmFpbnQnOgorICAgICAgICAgICAgcGFz cworCisgICAgICAgIHJldHVybiBUcnVlCisKKyAgICBAY2hlY2tfcHJlY29u ZGl0aW9uCisgICAgZGVmIGRlcGVuZGVudHMoc2VsZiwgZ2lkLCBzaWQsIGRp ZCwgc2NpZCwgdGlkKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVu Y3Rpb24gZ2V0IHRoZSBkZXBlbmRlbnRzIGFuZCByZXR1cm4gYWpheCByZXNw b25zZQorICAgICAgICBmb3IgdGhlIHRhYmxlIG5vZGUuCisKKyAgICAgICAg QXJnczoKKyAgICAgICAgICAgIGdpZDogU2VydmVyIEdyb3VwIElECisgICAg ICAgICAgICBzaWQ6IFNlcnZlciBJRAorICAgICAgICAgICAgZGlkOiBEYXRh YmFzZSBJRAorICAgICAgICAgICAgc2NpZDogU2NoZW1hIElECisgICAgICAg ICAgICB0aWQ6IFRhYmxlIElECisgICAgICAgICIiIgorICAgICAgICAjIFNw ZWNpZmljIGNvbmRpdGlvbiBmb3IgY29sdW1uIHdoaWNoIHdlIG5lZWQgdG8g YXBwZW5kCisgICAgICAgIHdoZXJlID0gIldIRVJFIGRlcC5yZWZvYmppZD17 MH06Ok9JRCIuZm9ybWF0KHRpZCkKKworICAgICAgICBkZXBlbmRlbnRzX3Jl c3VsdCA9IHNlbGYuZ2V0X2RlcGVuZGVudHMoCisgICAgICAgICAgICBzZWxm LmNvbm4sIHRpZAorICAgICAgICApCisKKyAgICAgICAgIyBTcGVjaWZpYyBz cWwgdG8gcnVuIGFnYWludCBjb2x1bW4gdG8gZmV0Y2ggZGVwZW5kZW50cwor ICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYu dGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAnZGVwZW5kLnNxbCddKSwgd2hlcmU9d2hlcmUpCisKKyAg ICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNR TCkKKyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVy biBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAg ICAgIGZvciByb3cgaW4gcmVzWydyb3dzJ106CisgICAgICAgICAgICByZWZf bmFtZSA9IHJvd1sncmVmbmFtZSddCisgICAgICAgICAgICBpZiByZWZfbmFt ZSBpcyBOb25lOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAg ICAgICAgIGRlcF90eXBlID0gJycKKyAgICAgICAgICAgIGRlcF9zdHIgPSBy b3dbJ2RlcHR5cGUnXQorICAgICAgICAgICAgaWYgZGVwX3N0ciA9PSAnYSc6 CisgICAgICAgICAgICAgICAgZGVwX3R5cGUgPSAnYXV0bycKKyAgICAgICAg ICAgIGVsaWYgZGVwX3N0ciA9PSAnbic6CisgICAgICAgICAgICAgICAgZGVw X3R5cGUgPSAnbm9ybWFsJworICAgICAgICAgICAgZWxpZiBkZXBfc3RyID09 ICdpJzoKKyAgICAgICAgICAgICAgICBkZXBfdHlwZSA9ICdpbnRlcm5hbCcK KworICAgICAgICAgICAgZGVwZW5kZW50c19yZXN1bHQuYXBwZW5kKHsndHlw ZSc6ICdzZXF1ZW5jZScsICduYW1lJzogcmVmX25hbWUsICdmaWVsZCc6IGRl cF90eXBlfSkKKworICAgICAgICByZXR1cm4gYWpheF9yZXNwb25zZSgKKyAg ICAgICAgICAgICAgICByZXNwb25zZT1kZXBlbmRlbnRzX3Jlc3VsdCwKKyAg ICAgICAgICAgICAgICBzdGF0dXM9MjAwCisgICAgICAgICAgICAgICAgKQor CisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBkZXBlbmRlbmNp ZXMoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgdGlkKToKKyAgICAgICAg IiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gZ2V0IHRoZSBkZXBlbmRlbmNp ZXMgYW5kIHJldHVybiBhamF4IHJlc3BvbnNlCisgICAgICAgIGZvciB0aGUg dGFibGUgbm9kZS4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgZ2lk OiBTZXJ2ZXIgR3JvdXAgSUQKKyAgICAgICAgICAgIHNpZDogU2VydmVyIElE CisgICAgICAgICAgICBkaWQ6IERhdGFiYXNlIElECisgICAgICAgICAgICBz Y2lkOiBTY2hlbWEgSUQKKyAgICAgICAgICAgIHRpZDogVGFibGUgSUQKKwor ICAgICAgICAiIiIKKyAgICAgICAgZGVwZW5kZW5jaWVzX3Jlc3VsdCA9IHNl bGYuZ2V0X2RlcGVuZGVuY2llcygKKyAgICAgICAgICAgIHNlbGYuY29ubiwg dGlkCisgICAgICAgICkKKworICAgICAgICByZXR1cm4gYWpheF9yZXNwb25z ZSgKKyAgICAgICAgICAgICAgICByZXNwb25zZT1kZXBlbmRlbmNpZXNfcmVz dWx0LAorICAgICAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAgICAgICAg ICAgICApCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVmIHNx bChzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQpOgorICAgICAgICAi IiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIGNyZWF0ZXMgcmV2ZXJz ZSBlbmdpbmVlcmVkIHNxbCBmb3IKKyAgICAgICAgdGhlIHRhYmxlIG9iamVj dAorCisgICAgICAgICBBcmdzOgorICAgICAgICAgICBnaWQ6IFNlcnZlciBH cm91cCBJRAorICAgICAgICAgICBzaWQ6IFNlcnZlciBJRAorICAgICAgICAg ICBkaWQ6IERhdGFiYXNlIElECisgICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJ RAorICAgICAgICAgICB0aWQ6IFRhYmxlIElECisgICAgICAgICIiIgorICAg ICAgICBtYWluX3NxbCA9IFtdCisKKyAgICAgICAgIiIiCisgICAgICAgICMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyAgICAgICAg IyAxKSBSZXZlcnNlIGVuZ2luZWVyZWQgc3FsIGZvciBUQUJMRQorICAgICAg ICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisgICAg ICAgICIiIgorICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpv aW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAncHJvcGVydGllcy5zcWwnXSksCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzY2lkPXNjaWQsIHRpZD10aWQs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRsYXN0c3lzb2lk PXNlbGYuZGF0bGFzdHN5c29pZCkKKyAgICAgICAgc3RhdHVzLCByZXMgPSBz ZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKKyAgICAgICAgaWYgbm90IHN0 YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJy b3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgIGRhdGEgPSByZXNbJ3Jvd3Mn XVswXQorCisgICAgICAgICMgVGFibGUgJiBTY2hlbWEgZGVjbGFyYXRpb24g c28gdGhhdCB3ZSBjYW4gdXNlIHRoZW0gaW4gY2hpbGQgbm9kZXMKKyAgICAg ICAgc2NoZW1hID0gZGF0YVsnc2NoZW1hJ10KKyAgICAgICAgdGFibGUgPSBk YXRhWyduYW1lJ10KKworICAgICAgICBkYXRhID0gc2VsZi5fZm9ybWF0dGVy KHNjaWQsIHRpZCwgZGF0YSkKKworICAgICAgICAjIE5vdyB3ZSBoYXZlIGFs bCBsaXMgb2YgY29sdW1ucyB3aGljaCB3ZSBuZWVkCisgICAgICAgICMgdG8g aW5jbHVkZSBpbiBvdXIgY3JlYXRlIGRlZmluaXRpb24sIExldCdzIGZvcm1h dCB0aGVtCisgICAgICAgIGlmICdjb2x1bW5zJyBpbiBkYXRhOgorICAgICAg ICAgICAgZm9yIGMgaW4gZGF0YVsnY29sdW1ucyddOgorICAgICAgICAgICAg ICAgIGlmICdhdHRhY2wnIGluIGM6CisgICAgICAgICAgICAgICAgICAgIGNb J2F0dGFjbCddID0gcGFyc2VfcHJpdl90b19kYihjWydhdHRhY2wnXSwgc2Vs Zi5jb2x1bW5fYWNsKQorCisgICAgICAgICAgICAgICAgIyBjaGVjayB0eXBl IGZvciAnW10nIGluIGl0CisgICAgICAgICAgICAgICAgY1snY2x0eXBlJ10g PSBzZWxmLl9jbHR5cGVfZm9ybWF0dGVyKGNbJ2NsdHlwZSddKQorICAgICAg ICAgICAgICAgIGNbJ2hhc1NxckJyYWNrZXQnXSA9IHNlbGYuaGFzU3FyQnJh Y2tldAorCisgICAgICAgIHNxbF9oZWFkZXIgPSAiLS0gVGFibGU6IHswfVxu XG4tLSAiLmZvcm1hdChzZWxmLnF0SWRlbnQoc2VsZi5jb25uLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGRhdGFbJ3NjaGVtYSddLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGRhdGFbJ25hbWUnXSkpCisgICAgICAgIHNxbF9oZWFkZXIgKz0gcmVu ZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAnZGVsZXRlLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZGF0YT1kYXRhLCBjb25uPXNlbGYuY29ubikKKworICAg ICAgICBzcWxfaGVhZGVyID0gc3FsX2hlYWRlci5zdHJpcCgnXG4nKQorICAg ICAgICBzcWxfaGVhZGVyICs9ICdcbicKKworICAgICAgICAjIEFkZCBpbnRv IG1haW4gc3FsCisgICAgICAgIG1haW5fc3FsLmFwcGVuZChzcWxfaGVhZGVy KQorCisgICAgICAgICMgUGFyc2UgcHJpdmlsZWdlIGRhdGEKKyAgICAgICAg aWYgJ3JlbGFjbCcgaW4gZGF0YToKKyAgICAgICAgICAgIGRhdGFbJ3JlbGFj bCddID0gcGFyc2VfcHJpdl90b19kYihkYXRhWydyZWxhY2wnXSwgc2VsZi5h Y2wpCisKKyAgICAgICAgIyBJZiB0aGUgcmVxdWVzdCBmb3IgbmV3IG9iamVj dCB3aGljaCBkbyBub3QgaGF2ZSBkaWQKKyAgICAgICAgdGFibGVfc3FsID0g cmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJ2NyZWF0ZS5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBkYXRhPWRhdGEsIGNvbm49c2VsZi5jb25uKQorCisgICAg ICAgICMgQWRkIGludG8gbWFpbiBzcWwKKyAgICAgICAgdGFibGVfc3FsID0g cmUuc3ViKCdcbnsyLH0nLCAnXG5cbicsIHRhYmxlX3NxbCkKKyAgICAgICAg bWFpbl9zcWwuYXBwZW5kKHRhYmxlX3NxbC5zdHJpcCgnXG4nKSkKKworICAg ICAgICAiIiIKKyAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMKKyAgICAgICAgIyAyKSBSZXZlcnNlIGVuZ2luZWVyZWQg c3FsIGZvciBJTkRFWAorICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIworICAgICAgICAiIiIKKworICAgICAgICBTUUwg PSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYuaW5kZXhfdGVtcGxh dGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAnbm9kZXMuc3FsJ10pLCB0aWQ9dGlkKQorICAgICAgICBzdGF0dXMs IHJzZXQgPSBzZWxmLmNvbm4uZXhlY3V0ZV8yZGFycmF5KFNRTCkKKyAgICAg ICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5h bF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cnNldCkKKworICAgICAgICBmb3Ig cm93IGluIHJzZXRbJ3Jvd3MnXToKKworICAgICAgICAgICAgU1FMID0gcmVu ZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLmluZGV4X3RlbXBsYXRlX3Bh dGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICdwcm9wZXJ0aWVzLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB0aWQ9dGlkLCBpZHg9cm93WydvaWQnXSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRsYXN0c3lzb2lkPXNl bGYuZGF0bGFzdHN5c29pZCkKKworICAgICAgICAgICAgc3RhdHVzLCByZXMg PSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKKyAgICAgICAgICAgIGlm IG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFs X3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgICAgIGRh dGEgPSBkaWN0KHJlc1sncm93cyddWzBdKQorICAgICAgICAgICAgIyBBZGRp bmcgcGFyZW50IGludG8gZGF0YSBkaWN0LCB3aWxsIGJlIHVzaW5nIGl0IHdo aWxlIGNyZWF0aW5nIHNxbAorICAgICAgICAgICAgZGF0YVsnc2NoZW1hJ10g PSBzY2hlbWEKKyAgICAgICAgICAgIGRhdGFbJ3RhYmxlJ10gPSB0YWJsZQor ICAgICAgICAgICAgIyBXZSBhbHNvIG5lZWQgdG8gZmVjdGggY29sdW1ucyBv ZiBpbmRleAorICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIv Ii5qb2luKFtzZWxmLmluZGV4X3RlbXBsYXRlX3BhdGgsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb2x1bW5fZGV0 YWlscy5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgaWR4PXJvd1snb2lkJ10pCisgICAgICAgICAgICBzdGF0dXMsIHJzZXQg PSBzZWxmLmNvbm4uZXhlY3V0ZV8yZGFycmF5KFNRTCkKKyAgICAgICAgICAg IGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAgcmV0dXJuIGludGVy bmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yc2V0KQorCisgICAgICAgICAg ICAjICdhdHRkZWYnIGNvbWVzIHdpdGggcXVvdGVzIGZyb20gcXVlcnkgc28g d2UgbmVlZCB0byBzdHJpcCB0aGVtCisgICAgICAgICAgICAjICdvcHRpb25z JyB3ZSBuZWVkIHRydWUvZmFsc2UgdG8gcmVuZGVyIHN3aXRjaCBBU0MoZmFs c2UpL0RFU0ModHJ1ZSkKKyAgICAgICAgICAgIGNvbHVtbnMgPSBbXQorICAg ICAgICAgICAgY29scyA9IFtdCisgICAgICAgICAgICBmb3Igcm93IGluIHJz ZXRbJ3Jvd3MnXToKKyAgICAgICAgICAgICAgICAjIFdlIG5lZWQgYWxsIGRh dGEgYXMgY29sbGVjdGlvbiBmb3IgQ29sdW1uc01vZGVsCisgICAgICAgICAg ICAgICAgY29sc19kYXRhID0geworICAgICAgICAgICAgICAgICAgICAnY29s bmFtZSc6IHJvd1snYXR0ZGVmJ10uc3RyaXAoJyInKSwKKyAgICAgICAgICAg ICAgICAgICAgJ2NvbGxzcGNuYW1lJzogcm93Wydjb2xsbnNwbmFtZSddLAor ICAgICAgICAgICAgICAgICAgICAnb3BfY2xhc3MnOiByb3dbJ29wY25hbWUn XSwKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgcm93 WydvcHRpb25zJ11bMF0gPT0gJ0RFU0MnOgorICAgICAgICAgICAgICAgICAg ICBjb2xzX2RhdGFbJ3NvcnRfb3JkZXInXSA9IFRydWUKKyAgICAgICAgICAg ICAgICBjb2x1bW5zLmFwcGVuZChjb2xzX2RhdGEpCisKKyAgICAgICAgICAg ICAgICAjIFdlIG5lZWQgc2FtZSBkYXRhIGFzIHN0cmluZyB0byBkaXNwbGF5 IGluIHByb3BlcnRpZXMgd2luZG93CisgICAgICAgICAgICAgICAgIyBJZiBt dWx0aXBsZSBjb2x1bW4gdGhlbiBzZXBhcmF0ZSBpdCBieSBjb2xvbgorICAg ICAgICAgICAgICAgIGNvbHNfc3RyID0gcm93WydhdHRkZWYnXQorICAgICAg ICAgICAgICAgIGlmIHJvd1snY29sbG5zcG5hbWUnXToKKyAgICAgICAgICAg ICAgICAgICAgY29sc19zdHIgKz0gJyBDT0xMQVRFICcgKyByb3dbJ2NvbGxu c3BuYW1lJ10KKyAgICAgICAgICAgICAgICBpZiByb3dbJ29wY25hbWUnXToK KyAgICAgICAgICAgICAgICAgICAgY29sc19zdHIgKz0gJyAnICsgcm93Wydv cGNuYW1lJ10KKyAgICAgICAgICAgICAgICBpZiByb3dbJ29wdGlvbnMnXVsw XSA9PSAnREVTQyc6CisgICAgICAgICAgICAgICAgICAgIGNvbHNfc3RyICs9 ICcgREVTQycKKyAgICAgICAgICAgICAgICBjb2xzLmFwcGVuZChjb2xzX3N0 cikKKworICAgICAgICAgICAgIyBQdXNoIGFzIGNvbGxlY3Rpb24KKyAgICAg ICAgICAgIGRhdGFbJ2NvbHVtbnMnXSA9IGNvbHVtbnMKKyAgICAgICAgICAg ICMgUHVzaCBhcyBzdHJpbmcKKyAgICAgICAgICAgIGRhdGFbJ2NvbHMnXSA9 ICcsICcuam9pbihjb2xzKQorCisgICAgICAgICAgICBzcWxfaGVhZGVyID0g IlxuLS0gSW5kZXg6IHswfVxuXG4tLSAiLmZvcm1hdChkYXRhWyduYW1lJ10p CisgICAgICAgICAgICBzcWxfaGVhZGVyICs9IHJlbmRlcl90ZW1wbGF0ZSgi LyIuam9pbihbc2VsZi5pbmRleF90ZW1wbGF0ZV9wYXRoLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdk ZWxldGUuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZGF0YT1kYXRhLCBjb25uPXNlbGYuY29ubikKKworICAg ICAgICAgICAgaW5kZXhfc3FsID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2lu KFtzZWxmLmluZGV4X3RlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjcmVhdGUuc3Fs J10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGRhdGE9ZGF0YSwgY29ubj1zZWxmLmNvbm4pCisgICAgICAgICAgICBpbmRl eF9zcWwgKz0gIlxuIgorICAgICAgICAgICAgaW5kZXhfc3FsICs9IHJlbmRl cl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi5pbmRleF90ZW1wbGF0ZV9wYXRo LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJ2FsdGVyLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZGF0YT1kYXRhLCBjb25uPXNlbGYuY29u bikKKworICAgICAgICAgICAgIyBBZGQgaW50byBtYWluIHNxbAorICAgICAg ICAgICAgaW5kZXhfc3FsID0gcmUuc3ViKCdcbnsyLH0nLCAnXG5cbicsIGlu ZGV4X3NxbCkKKyAgICAgICAgICAgIG1haW5fc3FsLmFwcGVuZChzcWxfaGVh ZGVyICsgJ1xuXG4nICsgaW5kZXhfc3FsLnN0cmlwKCdcbicpKQorCisgICAg ICAgICIiIgorICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjCisgICAgICAgICMgMykgUmV2ZXJzZSBlbmdpbmVlcmVk IHNxbCBmb3IgVFJJR0dFUlMKKyAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIworICAgICAgICAiIiIKKyAgICAgICAg U1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRyaWdnZXJf dGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAnbm9kZXMuc3FsJ10pLCB0aWQ9dGlkKQorICAgICAgICBz dGF0dXMsIHJzZXQgPSBzZWxmLmNvbm4uZXhlY3V0ZV8yZGFycmF5KFNRTCkK KyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBp bnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cnNldCkKKworICAgICAg ICBmb3Igcm93IGluIHJzZXRbJ3Jvd3MnXToKKyAgICAgICAgICAgIHRyaWdn ZXJfc3FsID0gJycKKworICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBs YXRlKCIvIi5qb2luKFtzZWxmLnRyaWdnZXJfdGVtcGxhdGVfcGF0aCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3By b3BlcnRpZXMuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHRpZD10aWQsIHRyaWQ9cm93WydvaWQnXSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBkYXRsYXN0c3lzb2lkPXNlbGYuZGF0 bGFzdHN5c29pZCkKKworICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxm LmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKKyAgICAgICAgICAgIGlmIG5vdCBz dGF0dXM6CisgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZl cl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgICAgIGRhdGEgPSBk aWN0KHJlc1sncm93cyddWzBdKQorICAgICAgICAgICAgIyBBZGRpbmcgcGFy ZW50IGludG8gZGF0YSBkaWN0LCB3aWxsIGJlIHVzaW5nIGl0IHdoaWxlIGNy ZWF0aW5nIHNxbAorICAgICAgICAgICAgZGF0YVsnc2NoZW1hJ10gPSBzY2hl bWEKKyAgICAgICAgICAgIGRhdGFbJ3RhYmxlJ10gPSB0YWJsZQorCisgICAg ICAgICAgICBpZiBkYXRhWyd0Z25hcmdzJ10gPiAxOgorICAgICAgICAgICAg ICAgICMgV2Uga25vdyB0aGF0IHRyaWdnZXIgaGFzIG1vcmUgdGhhbiAxIGFy Z3VtZW50cywgbGV0J3Mgam9pbiB0aGVtCisgICAgICAgICAgICAgICAgZGF0 YVsndGdhcmdzJ10gPSAnLCAnLmpvaW4oZGF0YVsndGdhcmdzJ10pCisKKyAg ICAgICAgICAgIGlmIGxlbihkYXRhWyd0Z2F0dHInXSkgPiAxOgorICAgICAg ICAgICAgICAgIGNvbHVtbnMgPSAnLCAnLmpvaW4oZGF0YVsndGdhdHRyJ10u c3BsaXQoJyAnKSkKKworICAgICAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90 ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50cmlnZ2VyX3RlbXBsYXRlX3BhdGgs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAnZ2V0X2NvbHVtbnMuc3FsJ10pLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB0aWQ9dGlkLCBjbGlzdD1jb2x1bW5zKQor CisgICAgICAgICAgICAgICAgc3RhdHVzLCByc2V0ID0gc2VsZi5jb25uLmV4 ZWN1dGVfMmRhcnJheShTUUwpCisgICAgICAgICAgICAgICAgaWYgbm90IHN0 YXR1czoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3Nl cnZlcl9lcnJvcihlcnJvcm1zZz1yc2V0KQorICAgICAgICAgICAgICAgICMg J3RnYXR0cicgY29udGFpbnMgbGlzdCBvZiBjb2x1bW5zIGZyb20gdGFibGUg dXNlZCBpbiB0cmlnZ2VyCisgICAgICAgICAgICAgICAgY29sdW1ucyA9IFtd CisKKyAgICAgICAgICAgICAgICBmb3Igcm93IGluIHJzZXRbJ3Jvd3MnXToK KyAgICAgICAgICAgICAgICAgICAgY29sdW1ucy5hcHBlbmQoeydjb2x1bW4n OiByb3dbJ25hbWUnXX0pCisKKyAgICAgICAgICAgICAgICBkYXRhWydjb2x1 bW5zJ10gPSBjb2x1bW5zCisKKyAgICAgICAgICAgIGRhdGEgPSB0cmlnZ2Vy X2RlZmluaXRpb24oZGF0YSkKKworICAgICAgICAgICAgc3FsX2hlYWRlciA9 ICJcbi0tIFRyaWdnZXI6IHswfVxuXG4tLSAiLmZvcm1hdChkYXRhWyduYW1l J10pCisgICAgICAgICAgICBzcWxfaGVhZGVyICs9IHJlbmRlcl90ZW1wbGF0 ZSgiLyIuam9pbihbc2VsZi50cmlnZ2VyX3RlbXBsYXRlX3BhdGgsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJ2RlbGV0ZS5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBkYXRhPWRhdGEsIGNvbm49c2VsZi5jb25uKQor CisgICAgICAgICAgICAjIElmIHRoZSByZXF1ZXN0IGZvciBuZXcgb2JqZWN0 IHdoaWNoIGRvIG5vdCBoYXZlIGRpZAorICAgICAgICAgICAgdHJpZ2dlcl9z cWwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudHJpZ2dlcl90 ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICdjcmVhdGUuc3FsJ10pLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1kYXRh LCBjb25uPXNlbGYuY29ubikKKworICAgICAgICAgICAgdHJpZ2dlcl9zcWwg PSBzcWxfaGVhZGVyICsgJ1xuXG4nICsgdHJpZ2dlcl9zcWwuc3RyaXAoJ1xu JykKKworICAgICAgICAgICAgIyBJZiB0cmlnZ2VyIGlzIGRpc2FibGVkIHRo ZW4gYWRkIHNxbCBjb2RlIGZvciB0aGUgc2FtZQorICAgICAgICAgICAgaWYg bm90IGRhdGFbJ2lzX2VuYWJsZV90cmlnZ2VyJ106CisgICAgICAgICAgICAg ICAgdHJpZ2dlcl9zcWwgKz0gJ1xuXG4nCisgICAgICAgICAgICAgICAgdHJp Z2dlcl9zcWwgKz0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFsKKyAgICAg ICAgICAgICAgICAgICAgc2VsZi50cmlnZ2VyX3RlbXBsYXRlX3BhdGgsCisg ICAgICAgICAgICAgICAgICAgICdlbmFibGVfZGlzYWJsZV90cmlnZ2VyLnNx bCddKSwKKyAgICAgICAgICAgICAgICAgICAgZGF0YT1kYXRhLCBjb25uPXNl bGYuY29ubikKKworICAgICAgICAgICAgIyBBZGQgaW50byBtYWluIHNxbAor ICAgICAgICAgICAgdHJpZ2dlcl9zcWwgPSByZS5zdWIoJ1xuezIsfScsICdc blxuJywgdHJpZ2dlcl9zcWwpCisgICAgICAgICAgICBtYWluX3NxbC5hcHBl bmQodHJpZ2dlcl9zcWwpCisKKyAgICAgICAgIiIiCisgICAgICAgICMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyAgICAgICAgIyA0 KSBSZXZlcnNlIGVuZ2luZWVyZWQgc3FsIGZvciBSVUxFUworICAgICAgICAj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisgICAgICAg ICIiIgorCisgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9p bigKKyAgICAgICAgICBbc2VsZi5ydWxlc190ZW1wbGF0ZV9wYXRoLCAncHJv cGVydGllcy5zcWwnXSksIHRpZD10aWQpCisKKyAgICAgICAgc3RhdHVzLCBy c2V0ID0gc2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJheShTUUwpCisgICAgICAg IGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxf c2VydmVyX2Vycm9yKGVycm9ybXNnPXJzZXQpCisKKyAgICAgICAgZm9yIHJv dyBpbiByc2V0Wydyb3dzJ106CisgICAgICAgICAgICBydWxlc19zcWwgPSAn XG4nCisgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpv aW4oCisgICAgICAgICAgICAgICAgW3NlbGYucnVsZXNfdGVtcGxhdGVfcGF0 aCwgJ3Byb3BlcnRpZXMuc3FsJ10KKyAgICAgICAgICAgICAgKSwgcmlkPXJv d1snb2lkJ10sIGRhdGxhc3RzeXNvaWQ9c2VsZi5kYXRsYXN0c3lzb2lkKQor CisgICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRl X2RpY3QoU1FMKQorICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAg ICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9y bXNnPXJlcykKKworICAgICAgICAgICAgcmVzX2RhdGEgPSBwYXJzZV9ydWxl X2RlZmluaXRpb24ocmVzKQorICAgICAgICAgICAgcnVsZXNfc3FsICs9IHJl bmRlcl90ZW1wbGF0ZSgiLyIuam9pbigKKyAgICAgICAgICAgICAgICBbc2Vs Zi5ydWxlc190ZW1wbGF0ZV9wYXRoLCAnY3JlYXRlLnNxbCddKSwKKyAgICAg ICAgICAgICAgICBkYXRhPXJlc19kYXRhLCBkaXNwbGF5X2NvbW1lbnRzPVRy dWUpCisKKyAgICAgICAgICAgICMgQWRkIGludG8gbWFpbiBzcWwKKyAgICAg ICAgICAgIHJ1bGVzX3NxbCA9IHJlLnN1YignXG57Mix9JywgJ1xuXG4nLCBy dWxlc19zcWwpCisgICAgICAgICAgICBtYWluX3NxbC5hcHBlbmQocnVsZXNf c3FsKQorCisgICAgICAgIHNxbCA9ICdcbicuam9pbihtYWluX3NxbCkKKwor ICAgICAgICByZXR1cm4gYWpheF9yZXNwb25zZShyZXNwb25zZT1zcWwuc3Ry aXAoJ1xuJykpCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVm IHNlbGVjdF9zcWwoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgdGlkKToK KyAgICAgICAgIiIiCisgICAgICAgIFNFTEVDVCBzY3JpcHQgc3FsIGZvciB0 aGUgb2JqZWN0CisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIGdpZDog U2VydmVyIEdyb3VwIElkCisgICAgICAgICAgICBzaWQ6IFNlcnZlciBJZAor ICAgICAgICAgICAgZGlkOiBEYXRhYmFzZSBJZAorICAgICAgICAgICAgc2Np ZDogU2NoZW1hIElkCisgICAgICAgICAgICB0aWQ6IFRhYmxlIElkCisKKyAg ICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIFNFTEVDVCBTY3JpcHQgc3Fs IGZvciB0aGUgb2JqZWN0CisgICAgICAgICIiIgorICAgICAgICBTUUwgPSBy ZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHJv cGVydGllcy5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzY2lkPXNjaWQsIHRpZD10aWQsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBkYXRsYXN0c3lzb2lkPXNlbGYuZGF0bGFzdHN5c29pZCkKKyAg ICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNR TCkKKyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVy biBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAg ICAgIGRhdGEgPSByZXNbJ3Jvd3MnXVswXQorICAgICAgICBkYXRhID0gc2Vs Zi5fZm9ybWF0dGVyKHNjaWQsIHRpZCwgZGF0YSkKKworICAgICAgICBjb2x1 bW5zID0gW10KKworICAgICAgICAjIE5vdyB3ZSBoYXZlIGFsbCBsaXN0IG9m IGNvbHVtbnMgd2hpY2ggd2UgbmVlZAorICAgICAgICBpZiAnY29sdW1ucycg aW4gZGF0YToKKyAgICAgICAgICAgIGZvciBjIGluIGRhdGFbJ2NvbHVtbnMn XToKKyAgICAgICAgICAgICAgICBjb2x1bW5zLmFwcGVuZChzZWxmLnF0SWRl bnQoc2VsZi5jb25uLCBjWydhdHRuYW1lJ10pKQorCisgICAgICAgIGlmIGxl bihjb2x1bW5zKSA+IDA6CisgICAgICAgICAgICBjb2x1bW5zID0gIiwgIi5q b2luKGNvbHVtbnMpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBjb2x1 bW5zID0gJyonCisKKyAgICAgICAgc3FsID0gIlNFTEVDVCB7MH1cblx0RlJP TSB7MX07Ii5mb3JtYXQoCisgICAgICAgICAgICBjb2x1bW5zLAorICAgICAg ICAgICAgc2VsZi5xdElkZW50KHNlbGYuY29ubiwgZGF0YVsnc2NoZW1hJ10s IGRhdGFbJ25hbWUnXSkKKyAgICAgICAgKQorICAgICAgICByZXR1cm4gYWph eF9yZXNwb25zZShyZXNwb25zZT1zcWwpCisKKyAgICBAY2hlY2tfcHJlY29u ZGl0aW9uCisgICAgZGVmIGluc2VydF9zcWwoc2VsZiwgZ2lkLCBzaWQsIGRp ZCwgc2NpZCwgdGlkKToKKyAgICAgICAgIiIiCisgICAgICAgIElOU0VSVCBz Y3JpcHQgc3FsIGZvciB0aGUgb2JqZWN0CisKKyAgICAgICAgQXJnczoKKyAg ICAgICAgICAgIGdpZDogU2VydmVyIEdyb3VwIElkCisgICAgICAgICAgICBz aWQ6IFNlcnZlciBJZAorICAgICAgICAgICAgZGlkOiBEYXRhYmFzZSBJZAor ICAgICAgICAgICAgc2NpZDogU2NoZW1hIElkCisgICAgICAgICAgICB0aWQ6 IFRhYmxlIElkCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIElO U0VSVCBTY3JpcHQgc3FsIGZvciB0aGUgb2JqZWN0CisgICAgICAgICIiIgor ICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYu dGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAncHJvcGVydGllcy5zcWwnXSksCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzY2lkPXNjaWQsIHRpZD10aWQsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBkYXRsYXN0c3lzb2lkPXNlbGYuZGF0 bGFzdHN5c29pZCkKKyAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4u ZXhlY3V0ZV9kaWN0KFNRTCkKKyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAg ICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jt c2c9cmVzKQorCisgICAgICAgIGRhdGEgPSByZXNbJ3Jvd3MnXVswXQorICAg ICAgICBkYXRhID0gc2VsZi5fZm9ybWF0dGVyKHNjaWQsIHRpZCwgZGF0YSkK KworICAgICAgICBjb2x1bW5zID0gW10KKyAgICAgICAgdmFsdWVzID0gW10K KworICAgICAgICAjIE5vdyB3ZSBoYXZlIGFsbCBsaXN0IG9mIGNvbHVtbnMg d2hpY2ggd2UgbmVlZAorICAgICAgICBpZiAnY29sdW1ucycgaW4gZGF0YToK KyAgICAgICAgICAgIGZvciBjIGluIGRhdGFbJ2NvbHVtbnMnXToKKyAgICAg ICAgICAgICAgICBjb2x1bW5zLmFwcGVuZChzZWxmLnF0SWRlbnQoc2VsZi5j b25uLCBjWydhdHRuYW1lJ10pKQorICAgICAgICAgICAgICAgIHZhbHVlcy5h cHBlbmQoJz8nKQorCisgICAgICAgIGlmIGxlbihjb2x1bW5zKSA+IDA6Cisg ICAgICAgICAgICBjb2x1bW5zID0gIiwgIi5qb2luKGNvbHVtbnMpCisgICAg ICAgICAgICB2YWx1ZXMgPSAiLCAiLmpvaW4odmFsdWVzKQorICAgICAgICAg ICAgc3FsID0gIklOU0VSVCBJTlRPIHswfShcblx0ezF9KVxuXHRWQUxVRVMg KHsyfSk7Ii5mb3JtYXQoCisgICAgICAgICAgICAgICAgc2VsZi5xdElkZW50 KHNlbGYuY29ubiwgZGF0YVsnc2NoZW1hJ10sIGRhdGFbJ25hbWUnXSksCisg ICAgICAgICAgICAgICAgY29sdW1ucywgdmFsdWVzCisgICAgICAgICAgICAp CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzcWwgPSBnZXR0ZXh0KCct LSBQbGVhc2UgY3JlYXRlIGNvbHVtbihzKSBmaXJzdC4uLicpCisKKyAgICAg ICAgcmV0dXJuIGFqYXhfcmVzcG9uc2UocmVzcG9uc2U9c3FsKQorCisgICAg QGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiB1cGRhdGVfc3FsKHNlbGYs IGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRpZCk6CisgICAgICAgICIiIgorICAg ICAgICBVUERBVEUgc2NyaXB0IHNxbCBmb3IgdGhlIG9iamVjdAorCisgICAg ICAgIEFyZ3M6CisgICAgICAgICAgICBnaWQ6IFNlcnZlciBHcm91cCBJZAor ICAgICAgICAgICAgc2lkOiBTZXJ2ZXIgSWQKKyAgICAgICAgICAgIGRpZDog RGF0YWJhc2UgSWQKKyAgICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJZAorICAg ICAgICAgICAgdGlkOiBUYWJsZSBJZAorCisgICAgICAgIFJldHVybnM6Cisg ICAgICAgICAgICBVUERBVEUgU2NyaXB0IHNxbCBmb3IgdGhlIG9iamVjdAor ICAgICAgICAiIiIKKyAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIv Ii5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb3BlcnRpZXMuc3FsJ10pLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NpZD1zY2lkLCB0aWQ9 dGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0bGFzdHN5 c29pZD1zZWxmLmRhdGxhc3RzeXNvaWQpCisgICAgICAgIHN0YXR1cywgcmVz ID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChTUUwpCisgICAgICAgIGlmIG5v dCBzdGF0dXM6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVy X2Vycm9yKGVycm9ybXNnPXJlcykKKworICAgICAgICBkYXRhID0gcmVzWydy b3dzJ11bMF0KKyAgICAgICAgZGF0YSA9IHNlbGYuX2Zvcm1hdHRlcihzY2lk LCB0aWQsIGRhdGEpCisKKyAgICAgICAgY29sdW1ucyA9IFtdCisKKyAgICAg ICAgIyBOb3cgd2UgaGF2ZSBhbGwgbGlzdCBvZiBjb2x1bW5zIHdoaWNoIHdl IG5lZWQKKyAgICAgICAgaWYgJ2NvbHVtbnMnIGluIGRhdGE6CisgICAgICAg ICAgICBmb3IgYyBpbiBkYXRhWydjb2x1bW5zJ106CisgICAgICAgICAgICAg ICAgY29sdW1ucy5hcHBlbmQoc2VsZi5xdElkZW50KHNlbGYuY29ubiwgY1sn YXR0bmFtZSddKSkKKworICAgICAgICBpZiBsZW4oY29sdW1ucykgPiAwOgor ICAgICAgICAgICAgaWYgbGVuKGNvbHVtbnMpID09IDE6CisgICAgICAgICAg ICAgICAgY29sdW1ucyA9IGNvbHVtbnNbMF0KKyAgICAgICAgICAgICAgICBj b2x1bW5zICs9ICI9PyIKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAg ICAgICAgY29sdW1ucyA9ICI9PywgIi5qb2luKGNvbHVtbnMpCisKKyAgICAg ICAgICAgIHNxbCA9ICJVUERBVEUgezB9XG5cdFNFVCB7MX1cblx0V0hFUkUg PGNvbmRpdGlvbj47Ii5mb3JtYXQoCisgICAgICAgICAgICAgICAgc2VsZi5x dElkZW50KHNlbGYuY29ubiwgZGF0YVsnc2NoZW1hJ10sIGRhdGFbJ25hbWUn XSksCisgICAgICAgICAgICAgICAgY29sdW1ucworICAgICAgICAgICAgKQor ICAgICAgICBlbHNlOgorICAgICAgICAgICAgc3FsID0gZ2V0dGV4dCgnLS0g UGxlYXNlIGNyZWF0ZSBjb2x1bW4ocykgZmlyc3QuLi4nKQorCisgICAgICAg IHJldHVybiBhamF4X3Jlc3BvbnNlKHJlc3BvbnNlPXNxbCkKKworICAgIEBj aGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgZGVsZXRlX3NxbChzZWxmLCBn aWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQpOgorICAgICAgICAiIiIKKyAgICAg ICAgREVMRVRFIHNjcmlwdCBzcWwgZm9yIHRoZSBvYmplY3QKKworICAgICAg ICBBcmdzOgorICAgICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAgSWQKKyAg ICAgICAgICAgIHNpZDogU2VydmVyIElkCisgICAgICAgICAgICBkaWQ6IERh dGFiYXNlIElkCisgICAgICAgICAgICBzY2lkOiBTY2hlbWEgSWQKKyAgICAg ICAgICAgIHRpZDogVGFibGUgSWQKKworICAgICAgICBSZXR1cm5zOgorICAg ICAgICAgICAgREVMRVRFIFNjcmlwdCBzcWwgZm9yIHRoZSBvYmplY3QKKyAg ICAgICAgIiIiCisgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIu am9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICdwcm9wZXJ0aWVzLnNxbCddKSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjaWQ9c2NpZCwgdGlkPXRp ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGxhc3RzeXNv aWQ9c2VsZi5kYXRsYXN0c3lzb2lkKQorICAgICAgICBzdGF0dXMsIHJlcyA9 IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQorICAgICAgICBpZiBub3Qg c3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9l cnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgZGF0YSA9IHJlc1sncm93 cyddWzBdCisKKyAgICAgICAgc3FsID0gIkRFTEVURSBGUk9NIHswfVxuXHRX SEVSRSA8Y29uZGl0aW9uPjsiLmZvcm1hdCgKKyAgICAgICAgICAgIHNlbGYu cXRJZGVudChzZWxmLmNvbm4sIGRhdGFbJ3NjaGVtYSddLCBkYXRhWyduYW1l J10pCisgICAgICAgICkKKworICAgICAgICByZXR1cm4gYWpheF9yZXNwb25z ZShyZXNwb25zZT1zcWwpCisKKworVGFibGVWaWV3LnJlZ2lzdGVyX25vZGVf dmlldyhibHVlcHJpbnQpCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90 YWJsZXMvY29sdW1uL19faW5pdF9fLnB5IGIvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFi bGVzL2NvbHVtbi9fX2luaXRfXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwLi41YmNiNDU2Ci0tLSAvZGV2L251bGwKKysrIGIvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvdGFibGVzL2NvbHVtbi9fX2luaXRfXy5weQpAQCAtMCww ICsxLDkwNiBAQAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMK KyMgcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworIworIyBDb3B5cmln aHQgKEMpIDIwMTMgLSAyMDE2LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBU ZWFtCisjIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBv c3RncmVTUUwgTGljZW5jZQorIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKKworIiIiIEltcGxlbWVudHMgQ29sdW1uIE5vZGUgIiIiCisKK2Zy b20gZmxhc2sgaW1wb3J0IHJlbmRlcl90ZW1wbGF0ZSwgbWFrZV9yZXNwb25z ZSwgcmVxdWVzdCwganNvbmlmeQorZnJvbSBmbGFzay5leHQuYmFiZWwgaW1w b3J0IGdldHRleHQKK2Zyb20gcGdhZG1pbi51dGlscy5hamF4IGltcG9ydCBt YWtlX2pzb25fcmVzcG9uc2UsIFwKKyAgICBtYWtlX3Jlc3BvbnNlIGFzIGFq YXhfcmVzcG9uc2UsIGludGVybmFsX3NlcnZlcl9lcnJvcgorZnJvbSBwZ2Fk bWluLmJyb3dzZXIudXRpbHMgaW1wb3J0IFBHQ2hpbGROb2RlVmlldworZnJv bSBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLmRhdGFi YXNlcy5zY2hlbWFzLnV0aWxzIFwKKyAgICBpbXBvcnQgRGF0YVR5cGVSZWFk ZXIKK2Zyb20gcGdhZG1pbi5icm93c2VyLmNvbGxlY3Rpb24gaW1wb3J0IENv bGxlY3Rpb25Ob2RlTW9kdWxlCitpbXBvcnQgcGdhZG1pbi5icm93c2VyLnNl cnZlcl9ncm91cHMuc2VydmVycy5kYXRhYmFzZXMgYXMgZGF0YWJhc2UKK2Zy b20gcGdhZG1pbi51dGlscy5hamF4IGltcG9ydCBwcmVjb25kaXRpb25fcmVx dWlyZWQKK2Zyb20gcGdhZG1pbi51dGlscy5kcml2ZXIgaW1wb3J0IGdldF9k cml2ZXIKK2Zyb20gY29uZmlnIGltcG9ydCBQR19ERUZBVUxUX0RSSVZFUgor ZnJvbSBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLnV0 aWxzIGltcG9ydCBwYXJzZV9wcml2X2Zyb21fZGIsIFwKKyAgICBwYXJzZV9w cml2X3RvX2RiCitmcm9tIGZ1bmN0b29scyBpbXBvcnQgd3JhcHMKK2ltcG9y dCBqc29uCisKKworY2xhc3MgQ29sdW1uc01vZHVsZShDb2xsZWN0aW9uTm9k ZU1vZHVsZSk6CisgICAgIiIiCisgICAgIGNsYXNzIENvbHVtbnNNb2R1bGUo Q29sbGVjdGlvbk5vZGVNb2R1bGUpCisKKyAgICAgICAgQSBtb2R1bGUgY2xh c3MgZm9yIENvbHVtbiBub2RlIGRlcml2ZWQgZnJvbSBDb2xsZWN0aW9uTm9k ZU1vZHVsZS4KKworICAgIE1ldGhvZHM6CisgICAgLS0tLS0tLQorICAgICog X19pbml0X18oKmFyZ3MsICoqa3dhcmdzKQorICAgICAgLSBNZXRob2QgaXMg dXNlZCB0byBpbml0aWFsaXplIHRoZSBDb2x1bW4gYW5kIGl0J3MgYmFzZSBt b2R1bGUuCisKKyAgICAqIGdldF9ub2RlcyhnaWQsIHNpZCwgZGlkLCBzY2lk LCB0aWQpCisgICAgICAtIE1ldGhvZCBpcyB1c2VkIHRvIGdlbmVyYXRlIHRo ZSBicm93c2VyIGNvbGxlY3Rpb24gbm9kZS4KKworICAgICogbm9kZV9pbm9k ZSgpCisgICAgICAtIE1ldGhvZCBpcyBvdmVycmlkZGVuIGZyb20gaXRzIGJh c2UgY2xhc3MgdG8gbWFrZSB0aGUgbm9kZSBhcyBsZWFmIG5vZGUuCisKKyAg ICAqIHNjcmlwdF9sb2FkKCkKKyAgICAgIC0gTG9hZCB0aGUgbW9kdWxlIHNj cmlwdCBmb3Igc2NoZW1hLCB3aGVuIGFueSBvZiB0aGUgc2VydmVyIG5vZGUg aXMKKyAgICAgICAgaW5pdGlhbGl6ZWQuCisgICAgIiIiCisKKyAgICBOT0RF X1RZUEUgPSAnY29sdW1uJworICAgIENPTExFQ1RJT05fTEFCRUwgPSBnZXR0 ZXh0KCJDb2x1bW5zIikKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJn cywgKiprd2FyZ3MpOgorICAgICAgICAiIiIKKyAgICAgICAgTWV0aG9kIGlz IHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUgQ29sdW1uTW9kdWxlIGFuZCBpdCdz IGJhc2UgbW9kdWxlLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICAq YXJnczoKKyAgICAgICAgICAgICoqa3dhcmdzOgorICAgICAgICAiIiIKKyAg ICAgICAgc2VsZi5taW5fdmVyID0gTm9uZQorICAgICAgICBzZWxmLm1heF92 ZXIgPSBOb25lCisgICAgICAgIHN1cGVyKENvbHVtbnNNb2R1bGUsIHNlbGYp Ll9faW5pdF9fKCphcmdzLCAqKmt3YXJncykKKworICAgIGRlZiBnZXRfbm9k ZXMoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgKiprd2FyZ3MpOgorICAg ICAgICAiIiIKKyAgICAgICAgR2VuZXJhdGUgdGhlIGNvbGxlY3Rpb24gbm9k ZQorICAgICAgICAiIiIKKyAgICAgICAgYXNzZXJ0KCd0aWQnIGluIGt3YXJn cyBvciAndmlkJyBpbiBrd2FyZ3MpCisgICAgICAgIHlpZWxkIHNlbGYuZ2Vu ZXJhdGVfYnJvd3Nlcl9jb2xsZWN0aW9uX25vZGUoCisgICAgICAgICAgICBr d2FyZ3NbJ3RpZCddIGlmICd0aWQnIGluIGt3YXJncyBlbHNlIGt3YXJnc1sn dmlkJ10KKyAgICAgICAgKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHNj cmlwdF9sb2FkKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgTG9hZCB0 aGUgbW9kdWxlIHNjcmlwdCBmb3Igc2VydmVyLCB3aGVuIGFueSBvZiB0aGUg c2VydmVyLWdyb3VwIG5vZGUgaXMKKyAgICAgICAgaW5pdGlhbGl6ZWQuCisg ICAgICAgICIiIgorICAgICAgICByZXR1cm4gZGF0YWJhc2UuRGF0YWJhc2VN b2R1bGUuTk9ERV9UWVBFCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgbm9k ZV9pbm9kZShzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIExvYWQgdGhl IG1vZHVsZSBub2RlIGFzIGEgbGVhZiBub2RlCisgICAgICAgICIiIgorICAg ICAgICByZXR1cm4gRmFsc2UKKworCitibHVlcHJpbnQgPSBDb2x1bW5zTW9k dWxlKF9fbmFtZV9fKQorCisKK2NsYXNzIENvbHVtbnNWaWV3KFBHQ2hpbGRO b2RlVmlldywgRGF0YVR5cGVSZWFkZXIpOgorICAgICIiIgorICAgIFRoaXMg Y2xhc3MgaXMgcmVzcG9uc2libGUgZm9yIGdlbmVyYXRpbmcgcm91dGVzIGZv ciBDb2x1bW4gbm9kZQorCisgICAgTWV0aG9kczoKKyAgICAtLS0tLS0tCisg ICAgKiBfX2luaXRfXygqKmt3YXJncykKKyAgICAgIC0gTWV0aG9kIGlzIHVz ZWQgdG8gaW5pdGlhbGl6ZSB0aGUgQ29sdW1uVmlldyBhbmQgaXQncyBiYXNl IHZpZXcuCisKKyAgICAqIG1vZHVsZV9qcygpCisgICAgICAtIFRoaXMgcHJv cGVydHkgZGVmaW5lcyAoaWYgamF2YXNjcmlwdCkgZXhpc3RzIGZvciB0aGlz IG5vZGUuCisgICAgICAgIE92ZXJyaWRlIHRoaXMgcHJvcGVydHkgZm9yIHlv dXIgb3duIGxvZ2ljCisKKyAgICAqIGNoZWNrX3ByZWNvbmRpdGlvbigpCisg ICAgICAtIFRoaXMgZnVuY3Rpb24gd2lsbCBiZWhhdmUgYXMgYSBkZWNvcmF0 b3Igd2hpY2ggd2lsbCBjaGVja3MKKyAgICAgICAgZGF0YWJhc2UgY29ubmVj dGlvbiBiZWZvcmUgcnVubmluZyB2aWV3LCBpdCB3aWxsIGFsc28gYXR0YWNo ZXMKKyAgICAgICAgbWFuYWdlcixjb25uICYgdGVtcGxhdGVfcGF0aCBwcm9w ZXJ0aWVzIHRvIHNlbGYKKworICAgICogbGlzdCgpCisgICAgICAtIFRoaXMg ZnVuY3Rpb24gaXMgdXNlZCB0byBsaXN0IGFsbCB0aGUgQ29sdW1uIG5vZGVz IHdpdGhpbiB0aGF0CisgICAgICBjb2xsZWN0aW9uLgorCisgICAgKiBub2Rl cygpCisgICAgICAtIFRoaXMgZnVuY3Rpb24gd2lsbCB1c2VkIHRvIGNyZWF0 ZSBhbGwgdGhlIGNoaWxkIG5vZGUgd2l0aGluIHRoYXQKKyAgICAgICAgY29s bGVjdGlvbiwgSGVyZSBpdCB3aWxsIGNyZWF0ZSBhbGwgdGhlIENvbHVtbiBu b2RlLgorCisgICAgKiBwcm9wZXJ0aWVzKGdpZCwgc2lkLCBkaWQsIHNjaWQs IHRpZCwgY2xpZCkKKyAgICAgIC0gVGhpcyBmdW5jdGlvbiB3aWxsIHNob3cg dGhlIHByb3BlcnRpZXMgb2YgdGhlIHNlbGVjdGVkIENvbHVtbiBub2RlCisK KyAgICAqIGNyZWF0ZShnaWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQpCisgICAg ICAtIFRoaXMgZnVuY3Rpb24gd2lsbCBjcmVhdGUgdGhlIG5ldyBDb2x1bW4g b2JqZWN0CisKKyAgICAqIHVwZGF0ZShnaWQsIHNpZCwgZGlkLCBzY2lkLCB0 aWQsIGNsaWQpCisgICAgICAtIFRoaXMgZnVuY3Rpb24gd2lsbCB1cGRhdGUg dGhlIGRhdGEgZm9yIHRoZSBzZWxlY3RlZCBDb2x1bW4gbm9kZQorCisgICAg KiBkZWxldGUoc2VsZiwgZ2lkLCBzaWQsIHNjaWQsIHRpZCwgY2xpZCk6Cisg ICAgICAtIFRoaXMgZnVuY3Rpb24gd2lsbCBkcm9wIHRoZSBDb2x1bW4gb2Jq ZWN0CisKKyAgICAqIG1zcWwoZ2lkLCBzaWQsIGRpZCwgc2NpZCwgdGlkLCBj bGlkKQorICAgICAgLSBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gcmV0dXJu IG1vZGlmaWVkIFNRTCBmb3IgdGhlIHNlbGVjdGVkCisgICAgICAgIENvbHVt biBub2RlCisKKyAgICAqIGdldF9zcWwoZGF0YSwgc2NpZCwgdGlkKQorICAg ICAgLSBUaGlzIGZ1bmN0aW9uIHdpbGwgZ2VuZXJhdGUgc3FsIGZyb20gbW9k ZWwgZGF0YQorCisgICAgKiBzcWwoZ2lkLCBzaWQsIGRpZCwgc2NpZCk6Cisg ICAgICAtIFRoaXMgZnVuY3Rpb24gd2lsbCBnZW5lcmF0ZSBzcWwgdG8gc2hv dyBpdCBpbiBzcWwgcGFuZSBmb3IgdGhlCisgICAgICAgIHNlbGVjdGVkIENv bHVtbiBub2RlLgorCisgICAgKiBkZXBlbmRlbmN5KGdpZCwgc2lkLCBkaWQs IHNjaWQpOgorICAgICAgLSBUaGlzIGZ1bmN0aW9uIHdpbGwgZ2VuZXJhdGUg ZGVwZW5kZW5jeSBsaXN0IHNob3cgaXQgaW4gZGVwZW5kZW5jeQorICAgICAg ICBwYW5lIGZvciB0aGUgc2VsZWN0ZWQgQ29sdW1uIG5vZGUuCisKKyAgICAq IGRlcGVuZGVudChnaWQsIHNpZCwgZGlkLCBzY2lkKToKKyAgICAgIC0gVGhp cyBmdW5jdGlvbiB3aWxsIGdlbmVyYXRlIGRlcGVuZGVudCBsaXN0IHRvIHNo b3cgaXQgaW4gZGVwZW5kZW50CisgICAgICAgIHBhbmUgZm9yIHRoZSBzZWxl Y3RlZCBDb2x1bW4gbm9kZS4KKyAgICAiIiIKKworICAgIG5vZGVfdHlwZSA9 IGJsdWVwcmludC5ub2RlX3R5cGUKKworICAgIHBhcmVudF9pZHMgPSBbCisg ICAgICAgICAgICB7J3R5cGUnOiAnaW50JywgJ2lkJzogJ2dpZCd9LAorICAg ICAgICAgICAgeyd0eXBlJzogJ2ludCcsICdpZCc6ICdzaWQnfSwKKyAgICAg ICAgICAgIHsndHlwZSc6ICdpbnQnLCAnaWQnOiAnZGlkJ30sCisgICAgICAg ICAgICB7J3R5cGUnOiAnaW50JywgJ2lkJzogJ3NjaWQnfSwKKyAgICAgICAg ICAgIHsndHlwZSc6ICdpbnQnLCAnaWQnOiAndGlkJ30KKyAgICAgICAgICAg IF0KKyAgICBpZHMgPSBbCisgICAgICAgICAgICAjIEhlcmUgd2Ugc3BlY2lm eSB0eXBlIGFzIGFueSBiZWNhdXNlIHRhYmxlCisgICAgICAgICAgICAjIGFy ZSBhbHNvIGhhcyAnLScgaW4gdGhlbSBpZiB0aGV5IGFyZSBzeXN0ZW0gdGFi bGUKKyAgICAgICAgICAgIHsndHlwZSc6ICdzdHJpbmcnLCAnaWQnOiAnY2xp ZCd9CisgICAgICAgICAgICBdCisKKyAgICBvcGVyYXRpb25zID0gZGljdCh7 CisgICAgICAgICdvYmonOiBbCisgICAgICAgICAgICB7J2dldCc6ICdwcm9w ZXJ0aWVzJywgJ2RlbGV0ZSc6ICdkZWxldGUnLCAncHV0JzogJ3VwZGF0ZSd9 LAorICAgICAgICAgICAgeydnZXQnOiAnbGlzdCcsICdwb3N0JzogJ2NyZWF0 ZSd9CisgICAgICAgIF0sCisgICAgICAgICdjaGlsZHJlbic6IFt7J2dldCc6 ICdjaGlsZHJlbid9XSwKKyAgICAgICAgJ25vZGVzJzogW3snZ2V0JzogJ25v ZGUnfSwgeydnZXQnOiAnbm9kZXMnfV0sCisgICAgICAgICdzcWwnOiBbeydn ZXQnOiAnc3FsJ31dLAorICAgICAgICAnbXNxbCc6IFt7J2dldCc6ICdtc3Fs J30sIHsnZ2V0JzogJ21zcWwnfV0sCisgICAgICAgICdzdGF0cyc6IFt7J2dl dCc6ICdzdGF0aXN0aWNzJ31dLAorICAgICAgICAnZGVwZW5kZW5jeSc6IFt7 J2dldCc6ICdkZXBlbmRlbmNpZXMnfV0sCisgICAgICAgICdkZXBlbmRlbnQn OiBbeydnZXQnOiAnZGVwZW5kZW50cyd9XSwKKyAgICAgICAgJ21vZHVsZS5q cyc6IFt7fSwge30sIHsnZ2V0JzogJ21vZHVsZV9qcyd9XSwKKyAgICB9KQor CisgICAgZGVmIGNoZWNrX3ByZWNvbmRpdGlvbihmKToKKyAgICAgICAgIiIi CisgICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBiZWhhdmUgYXMgYSBkZWNv cmF0b3Igd2hpY2ggd2lsbCBjaGVja3MKKyAgICAgICAgZGF0YWJhc2UgY29u bmVjdGlvbiBiZWZvcmUgcnVubmluZyB2aWV3LCBpdCB3aWxsIGFsc28gYXR0 YWNoZXMKKyAgICAgICAgbWFuYWdlcixjb25uICYgdGVtcGxhdGVfcGF0aCBw cm9wZXJ0aWVzIHRvIHNlbGYKKyAgICAgICAgIiIiCisgICAgICAgIEB3cmFw cyhmKQorICAgICAgICBkZWYgd3JhcCgqYXJncywgKiprd2FyZ3MpOgorICAg ICAgICAgICAgIyBIZXJlIGFyZ3NbMF0gd2lsbCBob2xkIHNlbGYgJiBrd2Fy Z3Mgd2lsbCBob2xkIGdpZCxzaWQsZGlkCisgICAgICAgICAgICBzZWxmID0g YXJnc1swXQorICAgICAgICAgICAgZHJpdmVyID0gZ2V0X2RyaXZlcihQR19E RUZBVUxUX0RSSVZFUikKKyAgICAgICAgICAgIHNlbGYubWFuYWdlciA9IGRy aXZlci5jb25uZWN0aW9uX21hbmFnZXIoCisgICAgICAgICAgICAgICAga3dh cmdzWydzaWQnXQorICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5j b25uID0gc2VsZi5tYW5hZ2VyLmNvbm5lY3Rpb24oZGlkPWt3YXJnc1snZGlk J10pCisgICAgICAgICAgICBzZWxmLnF0SWRlbnQgPSBkcml2ZXIucXRJZGVu dAorICAgICAgICAgICAgIyBJZiBEQiBub3QgY29ubmVjdGVkIHRoZW4gcmV0 dXJuIGVycm9yIHRvIGJyb3dzZXIKKyAgICAgICAgICAgIGlmIG5vdCBzZWxm LmNvbm4uY29ubmVjdGVkKCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHBy ZWNvbmRpdGlvbl9yZXF1aXJlZCgKKyAgICAgICAgICAgICAgICAgICAgZ2V0 dGV4dCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29ubmVjdGlv biB0byB0aGUgc2VydmVyIGhhcyBiZWVuIGxvc3QhIgorICAgICAgICAgICAg ICAgICAgICApCisgICAgICAgICAgICAgICAgKQorCisgICAgICAgICAgICB2 ZXIgPSBzZWxmLm1hbmFnZXIudmVyc2lvbgorICAgICAgICAgICAgIyB3ZSB3 aWxsIHNldCB0ZW1wbGF0ZSBwYXRoIGZvciBzcWwgc2NyaXB0cworICAgICAg ICAgICAgaWYgdmVyID49IDkwMjAwOgorICAgICAgICAgICAgICAgIHNlbGYu dGVtcGxhdGVfcGF0aCA9ICdjb2x1bW4vc3FsLzkuMl9wbHVzJworICAgICAg ICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLnRlbXBsYXRlX3Bh dGggPSAnY29sdW1uL3NxbC85LjFfcGx1cycKKyAgICAgICAgICAgICMgQWxs b3dlZCBBQ0wgZm9yIGNvbHVtbiAnU2VsZWN0L1VwZGF0ZS9JbnNlcnQvUmVm ZXJlbmNlcycKKyAgICAgICAgICAgIHNlbGYuYWNsID0gWydhJywgJ3InLCAn dycsICd4J10KKworICAgICAgICAgICAgIyBXZSBuZWVkIHBhcmVudCdzIG5h bWUgZWcgdGFibGUgbmFtZSBhbmQgc2NoZW1hIG5hbWUKKyAgICAgICAgICAg IFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0 ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAnZ2V0X3BhcmVudC5zcWwnXSksCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdGlkPWt3YXJnc1sndGlkJ10pCisgICAgICAg ICAgICBzdGF0dXMsIHJzZXQgPSBzZWxmLmNvbm4uZXhlY3V0ZV8yZGFycmF5 KFNRTCkKKyAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAg ICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1y c2V0KQorCisgICAgICAgICAgICBmb3Igcm93IGluIHJzZXRbJ3Jvd3MnXToK KyAgICAgICAgICAgICAgICBzZWxmLnNjaGVtYSA9IHJvd1snc2NoZW1hJ10K KyAgICAgICAgICAgICAgICBzZWxmLnRhYmxlID0gcm93Wyd0YWJsZSddCisK KyAgICAgICAgICAgIHJldHVybiBmKCphcmdzLCAqKmt3YXJncykKKworICAg ICAgICByZXR1cm4gd3JhcAorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgor ICAgIGRlZiBsaXN0KHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRpZCk6 CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQg dG8gbGlzdCBhbGwgdGhlIHNjaGVtYSBub2RlcyB3aXRoaW4gdGhhdCBjb2xs ZWN0aW9uLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBnaWQ6IFNl cnZlciBncm91cCBJRAorICAgICAgICAgICAgc2lkOiBTZXJ2ZXIgSUQKKyAg ICAgICAgICAgIGRpZDogRGF0YWJhc2UgSUQKKyAgICAgICAgICAgIHNjaWQ6 IFNjaGVtYSBJRAorICAgICAgICAgICAgdGlkOiBUYWJsZSBJRAorCisgICAg ICAgIFJldHVybnM6CisgICAgICAgICAgICBKU09OIG9mIGF2YWlsYWJsZSBj b2x1bW4gbm9kZXMKKyAgICAgICAgIiIiCisKKyAgICAgICAgU1FMID0gcmVu ZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb3Bl cnRpZXMuc3FsJ10pLCB0aWQ9dGlkLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc2hvd19zeXNfb2JqZWN0cz1zZWxmLmJsdWVwcmludC5zaG93 X3N5c3RlbV9vYmplY3RzKQorICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYu Y29ubi5leGVjdXRlX2RpY3QoU1FMKQorCisgICAgICAgIGlmIG5vdCBzdGF0 dXM6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9y KGVycm9ybXNnPXJlcykKKyAgICAgICAgcmV0dXJuIGFqYXhfcmVzcG9uc2Uo CisgICAgICAgICAgICAgICAgcmVzcG9uc2U9cmVzWydyb3dzJ10sCisgICAg ICAgICAgICAgICAgc3RhdHVzPTIwMAorICAgICAgICAgICAgICAgICkKKwor ICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgbm9kZXMoc2VsZiwg Z2lkLCBzaWQsIGRpZCwgc2NpZCwgdGlkKToKKyAgICAgICAgIiIiCisgICAg ICAgIFRoaXMgZnVuY3Rpb24gd2lsbCB1c2VkIHRvIGNyZWF0ZSBhbGwgdGhl IGNoaWxkIG5vZGUgd2l0aGluIHRoYXQgY29sbGVjdGlvbi4KKyAgICAgICAg SGVyZSBpdCB3aWxsIGNyZWF0ZSBhbGwgdGhlIHNjaGVtYSBub2RlLgorCisg ICAgICAgIEFyZ3M6CisgICAgICAgICAgICBnaWQ6IFNlcnZlciBHcm91cCBJ RAorICAgICAgICAgICAgc2lkOiBTZXJ2ZXIgSUQKKyAgICAgICAgICAgIGRp ZDogRGF0YWJhc2UgSUQKKyAgICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJRAor ICAgICAgICAgICAgdGlkOiBUYWJsZSBJRAorCisgICAgICAgIFJldHVybnM6 CisgICAgICAgICAgICBKU09OIG9mIGF2YWlsYWJsZSBzY2hlbWEgY2hpbGQg bm9kZXMKKyAgICAgICAgIiIiCisgICAgICAgIHJlcyA9IFtdCisgICAgICAg IFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0 ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICdub2Rlcy5zcWwnXSksIHRpZD10aWQsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzaG93X3N5c19vYmplY3RzPXNlbGYuYmx1ZXByaW50 LnNob3dfc3lzdGVtX29iamVjdHMpCisgICAgICAgIHN0YXR1cywgcnNldCA9 IHNlbGYuY29ubi5leGVjdXRlXzJkYXJyYXkoU1FMKQorICAgICAgICBpZiBu b3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZl cl9lcnJvcihlcnJvcm1zZz1yc2V0KQorCisgICAgICAgIGZvciByb3cgaW4g cnNldFsncm93cyddOgorICAgICAgICAgICAgcmVzLmFwcGVuZCgKKyAgICAg ICAgICAgICAgICBzZWxmLmJsdWVwcmludC5nZW5lcmF0ZV9icm93c2VyX25v ZGUoCisgICAgICAgICAgICAgICAgICAgIHJvd1snb2lkJ10sCisgICAgICAg ICAgICAgICAgICAgIHRpZCwKKyAgICAgICAgICAgICAgICAgICAgcm93Wydu YW1lJ10sCisgICAgICAgICAgICAgICAgICAgIGljb249Imljb24tY29sdW1u IiwKKyAgICAgICAgICAgICAgICAgICAgZGF0YXR5cGU9cm93WydkYXRhdHlw ZSddICAjIFdlIG5lZWQgZGF0YXR5cGUgc29tZXdoZXJlIGluCisgICAgICAg ICAgICApKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBleGNs dXNpb24gY29uc3RyYWludC4KKworICAgICAgICByZXR1cm4gbWFrZV9qc29u X3Jlc3BvbnNlKAorICAgICAgICAgICAgICAgIGRhdGE9cmVzLAorICAgICAg ICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAgICAgICAgICAgICApCisKKyAg ICBkZWYgX2Zvcm1hdHRlcihzZWxmLCBzY2lkLCB0aWQsIGNsaWQsIGRhdGEp OgorICAgICAgICAiIiIKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgICBz Y2lkOiBzY2hlbWEgb2lkCisgICAgICAgICAgICAgdGlkOiB0YWJsZSBvaWQK KyAgICAgICAgICAgICBjbGlkOiBwb3NpdGlvbiBvZiBjb2x1bW4gaW4gdGFi bGUKKyAgICAgICAgICAgICBkYXRhOiBkaWN0IG9mIHF1ZXJ5IHJlc3VsdAor CisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBJdCB3aWxsIHJldHVy biBmb3JtYXR0ZWQgb3V0cHV0IG9mIGNvbGxlY3Rpb25zCisgICAgICAgICIi IgorICAgICAgICAjIFRvIGNoZWNrIGlmIGNvbHVtbiBpcyBwcmltYXJ5IGtl eQorICAgICAgICBpZiAnYXR0bnVtJyBpbiBkYXRhIGFuZCAnaW5ka2V5JyBp biBkYXRhOgorICAgICAgICAgICAgIyBDdXJyZW50IGNvbHVtbgorICAgICAg ICAgICAgYXR0bnVtID0gc3RyKGRhdGFbJ2F0dG51bSddKQorCisgICAgICAg ICAgICAjIFNpbmdsZS9MaXN0IG9mIHByaW1hcnkga2V5IGNvbHVtbihzKQor ICAgICAgICAgICAgaW5ka2V5ID0gc3RyKGRhdGFbJ2luZGtleSddKQorCisg ICAgICAgICAgICAjIFdlIHdpbGwgY2hlY2sgaWYgY29sdW1uIGlzIGluIHBy aW1hcnkgY29sdW1uKHMpCisgICAgICAgICAgICBpZiBhdHRudW0gaW4gaW5k a2V5LnNwbGl0KCIgIik6CisgICAgICAgICAgICAgICAgZGF0YVsnaXNfcGsn XSA9IFRydWUKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAg ZGF0YVsnaXNfcGsnXSA9IEZhbHNlCisKKyAgICAgICAgIyBGaW5kIGxlbmd0 aCAmIHByZWNpc2lvbiBvZiBjb2x1bW4gZGF0YSB0eXBlCisgICAgICAgIGZ1 bGx0eXBlID0gc2VsZi5nZXRfZnVsbF90eXBlKAorICAgICAgICAgICAgZGF0 YVsndHlwbnNwbmFtZSddLCBkYXRhWyd0eXBuYW1lJ10sCisgICAgICAgICAg ICBkYXRhWydpc2R1cCddLCBkYXRhWydhdHRuZGltcyddLCBkYXRhWydhdHR0 eXBtb2QnXQorICAgICAgICApCisKKyAgICAgICAgaW1wb3J0IHJlCisgICAg ICAgICMgSWYgd2UgaGF2ZSBsZW5ndGggJiBwcmVjaXNpb24gYm90aAorICAg ICAgICBtYXRjaE9iaiA9IHJlLnNlYXJjaChyJyhcZCspLChcZCspJywgZnVs bHR5cGUpCisgICAgICAgIGlmIG1hdGNoT2JqOgorICAgICAgICAgICAgZGF0 YVsnYXR0bGVuJ10gPSBtYXRjaE9iai5ncm91cCgxKQorICAgICAgICAgICAg ZGF0YVsnYXR0cHJlY2lzaW9uJ10gPSBtYXRjaE9iai5ncm91cCgyKQorICAg ICAgICBlbHNlOgorICAgICAgICAgICAgIyBJZiB3ZSBoYXZlIGxlbmd0aCBv bmx5CisgICAgICAgICAgICBtYXRjaE9iaiA9IHJlLnNlYXJjaChyJyhcZCsp JywgZnVsbHR5cGUpCisgICAgICAgICAgICBpZiBtYXRjaE9iajoKKyAgICAg ICAgICAgICAgICBkYXRhWydhdHRsZW4nXSA9IG1hdGNoT2JqLmdyb3VwKDEp CisgICAgICAgICAgICAgICAgZGF0YVsnYXR0cHJlY2lzaW9uJ10gPSBOb25l CisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGRhdGFbJ2F0 dGxlbiddID0gTm9uZQorICAgICAgICAgICAgICAgIGRhdGFbJ2F0dHByZWNp c2lvbiddID0gTm9uZQorCisgICAgICAgICMgV2UgbmVlZCB0byBmZXRjaCBp bmhlcml0ZWQgdGFibGVzIGZvciBlYWNoIHRhYmxlCisgICAgICAgIFNRTCA9 IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRo LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdn ZXRfaW5oZXJpdGVkX3RhYmxlcy5zcWwnXSksCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB0aWQ9dGlkKQorICAgICAgICBzdGF0dXMsIGluaF9y ZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKKyAgICAgICAgaWYg bm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2 ZXJfZXJyb3IoZXJyb3Jtc2c9aW5oX3JlcykKKyAgICAgICAgZm9yIHJvdyBp biBpbmhfcmVzWydyb3dzJ106CisgICAgICAgICAgICBpZiByb3dbJ2F0dHJu YW1lJ10gPT0gZGF0YVsnbmFtZSddOgorICAgICAgICAgICAgICAgIGRhdGFb J2lzX2luaGVyaXRlZCddID0gVHJ1ZQorICAgICAgICAgICAgICAgIGRhdGFb J3RibHNfaW5oZXJpdGVkJ10gPSByb3dbJ2luaHJlbG5hbWUnXQorCisgICAg ICAgICMgV2UgbmVlZCB0byBmb3JtYXQgdmFyaWFibGVzIGFjY29yZGluZyB0 byBjbGllbnQganMgY29sbGVjdGlvbgorICAgICAgICBpZiAnYXR0b3B0aW9u cycgaW4gZGF0YSBhbmQgZGF0YVsnYXR0b3B0aW9ucyddIGlzIG5vdCBOb25l OgorICAgICAgICAgICAgc3Bjb3B0aW9ucyA9IFtdCisgICAgICAgICAgICBm b3Igc3Bjb3B0aW9uIGluIGRhdGFbJ2F0dG9wdGlvbnMnXToKKyAgICAgICAg ICAgICAgICBrLCB2ID0gc3Bjb3B0aW9uLnNwbGl0KCc9JykKKyAgICAgICAg ICAgICAgICBzcGNvcHRpb25zLmFwcGVuZCh7J25hbWUnOiBrLCAndmFsdWUn OiB2fSkKKworICAgICAgICAgICAgZGF0YVsnYXR0b3B0aW9ucyddID0gc3Bj b3B0aW9ucworCisgICAgICAgICMgTmVlZCB0byBmb3JtYXQgc2VjdXJpdHkg bGFiZWxzIGFjY29yZGluZyB0byBjbGllbnQganMgY29sbGVjdGlvbgorICAg ICAgICBpZiAnc2VjbGFiZWxzJyBpbiBkYXRhIGFuZCBkYXRhWydzZWNsYWJl bHMnXSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlY2xhYmVscyA9IFtd CisgICAgICAgICAgICBmb3Igc2VjbGJscyBpbiBkYXRhWydzZWNsYWJlbHMn XToKKyAgICAgICAgICAgICAgICBrLCB2ID0gc2VjbGJscy5zcGxpdCgnPScp CisgICAgICAgICAgICAgICAgc2VjbGFiZWxzLmFwcGVuZCh7J3Byb3ZpZGVy JzogaywgJ2xhYmVsJzogdn0pCisKKyAgICAgICAgICAgIGRhdGFbJ3NlY2xh YmVscyddID0gc2VjbGFiZWxzCisKKyAgICAgICAgIyBXZSBuZWVkIHRvIHBh cnNlICYgY29udmVydCBBQ0wgY29taW5nIGZyb20gZGF0YWJhc2UgdG8ganNv biBmb3JtYXQKKyAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5q b2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdhY2wuc3FsJ10pLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdGlkPXRpZCwgY2xpZD1jbGlkKQor ICAgICAgICBzdGF0dXMsIGFjbCA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3Qo U1FMKQorCisgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICBy ZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPWFjbCkKKwor ICAgICAgICAjIFdlIHdpbGwgc2V0IGdldCBwcml2aWxlZ2VzIGZyb20gYWNs IHNxbCBzbyB3ZSBkb24ndCBuZWVkCisgICAgICAgICMgaXQgZnJvbSBwcm9w ZXJ0aWVzIHNxbAorICAgICAgICBkYXRhWydhdHRhY2wnXSA9IFtdCisKKyAg ICAgICAgZm9yIHJvdyBpbiBhY2xbJ3Jvd3MnXToKKyAgICAgICAgICAgIHBy aXYgPSBwYXJzZV9wcml2X2Zyb21fZGIocm93KQorICAgICAgICAgICAgZGF0 YS5zZXRkZWZhdWx0KHJvd1snZGVmdHlwZSddLCBbXSkuYXBwZW5kKHByaXYp CisKKyAgICAgICAgIyB3ZSBhcmUgcmVjZWl2aW5nIHJlcXVlc3Qgd2hlbiBp biBlZGl0IG1vZGUKKyAgICAgICAgIyB3ZSB3aWxsIHNlbmQgZmlsdGVyZWQg dHlwZXMgcmVsYXRlZCB0byBjdXJyZW50IHR5cGUKKyAgICAgICAgcHJlc2Vu dF90eXBlID0gZGF0YVsnY2x0eXBlJ10KKyAgICAgICAgdHlwZV9pZCA9IGRh dGFbJ2F0dHR5cGlkJ10KKworICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxh dGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaXNfcmVmZXJlbmNlZC5z cWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWQ9dGlk LCBjbGlkPWNsaWQpCisKKyAgICAgICAgc3RhdHVzLCBpc19yZWZlcmVuY2Ug PSBzZWxmLmNvbm4uZXhlY3V0ZV9zY2FsYXIoU1FMKQorCisgICAgICAgIGVk aXRfdHlwZXNfbGlzdCA9IGxpc3QoKQorICAgICAgICAjIFdlIHdpbGwgbmVl ZCBwcmVzZW50IHR5cGUgaW4gZWRpdCBtb2RlCisgICAgICAgIGVkaXRfdHlw ZXNfbGlzdC5hcHBlbmQocHJlc2VudF90eXBlKQorCisgICAgICAgIGlmIGlu dChpc19yZWZlcmVuY2UpID09IDA6CisgICAgICAgICAgICBTUUwgPSByZW5k ZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Vk aXRfbW9kZV90eXBlcy5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdHlwZV9pZD10eXBlX2lkKQorICAgICAgICAgICAgc3Rh dHVzLCByc2V0ID0gc2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJheShTUUwpCisK KyAgICAgICAgICAgIGZvciByb3cgaW4gcnNldFsncm93cyddOgorICAgICAg ICAgICAgICAgIGVkaXRfdHlwZXNfbGlzdC5hcHBlbmQocm93Wyd0eXBuYW1l J10pCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBlZGl0X3R5cGVzX2xp c3QuYXBwZW5kKHByZXNlbnRfdHlwZSkKKworICAgICAgICBkYXRhWydlZGl0 X3R5cGVzJ10gPSBlZGl0X3R5cGVzX2xpc3QKKworICAgICAgICAjIE1hbnVh bCBEYXRhIHR5cGUgZm9ybWF0dGluZworICAgICAgICAjIElmIGRhdGEgdHlw ZSBoYXMgKCkgd2l0aCB0aGVtIHRoZW4gd2UgbmVlZCB0byByZW1vdmUgdGhl bQorICAgICAgICAjIGVnIGJpdCgxKSBiZWNhdXNlIHdlIG5lZWQgdG8gbWF0 Y2ggdGhlIG5hbWUgd2l0aCBjb21ib2JveAorICAgICAgICBpc0FycmF5ID0g RmFsc2UKKyAgICAgICAgaWYgZGF0YVsnY2x0eXBlJ10uZW5kc3dpdGgoJ1td Jyk6CisgICAgICAgICAgICBpc0FycmF5ID0gVHJ1ZQorICAgICAgICAgICAg ZGF0YVsnY2x0eXBlJ10gPSBkYXRhWydjbHR5cGUnXS5yc3RyaXAoJ1tdJykK KworICAgICAgICBpZHggPSBkYXRhWydjbHR5cGUnXS5maW5kKCcoJykKKyAg ICAgICAgaWYgaWR4IGFuZCBkYXRhWydjbHR5cGUnXS5lbmRzd2l0aCgnKScp OgorICAgICAgICAgICAgZGF0YVsnY2x0eXBlJ10gPSBkYXRhWydjbHR5cGUn XVs6aWR4XQorCisgICAgICAgIGlmIGlzQXJyYXk6CisgICAgICAgICAgICBk YXRhWydjbHR5cGUnXSArPSAiW10iCisKKyAgICAgICAgcmV0dXJuIGRhdGEK KworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgcHJvcGVydGll cyhzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQsIGNsaWQpOgorICAg ICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIHNob3cgdGhl IHByb3BlcnRpZXMgb2YgdGhlIHNlbGVjdGVkIHNjaGVtYSBub2RlLgorCisg ICAgICAgIEFyZ3M6CisgICAgICAgICAgICBnaWQ6IFNlcnZlciBHcm91cCBJ RAorICAgICAgICAgICAgc2lkOiBTZXJ2ZXIgSUQKKyAgICAgICAgICAgIGRp ZDogIERhdGFiYXNlIElECisgICAgICAgICAgICBzY2lkOiBTY2hlbWEgSUQK KyAgICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJRAorICAgICAgICAgICAgdGlk OiBUYWJsZSBJRAorICAgICAgICAgICAgY2xpZDogQ29sdW1uIElECisKKyAg ICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIEpTT04gb2Ygc2VsZWN0ZWQg c2NoZW1hIG5vZGUKKyAgICAgICAgIiIiCisKKyAgICAgICAgU1FMID0gcmVu ZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb3Bl cnRpZXMuc3FsJ10pLCB0aWQ9dGlkLCBjbGlkPWNsaWQKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICwgc2hvd19zeXNfb2JqZWN0cz1zZWxmLmJs dWVwcmludC5zaG93X3N5c3RlbV9vYmplY3RzKQorCisgICAgICAgIHN0YXR1 cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChTUUwpCisKKyAgICAg ICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5h bF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgICMgTWFr aW5nIGNvcHkgb2Ygb3V0cHV0IGZvciBmdXR1cmUgdXNlCisgICAgICAgIGRh dGEgPSBkaWN0KHJlc1sncm93cyddWzBdKQorICAgICAgICBkYXRhID0gc2Vs Zi5fZm9ybWF0dGVyKHNjaWQsIHRpZCwgY2xpZCwgZGF0YSkKKworICAgICAg ICByZXR1cm4gYWpheF9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICByZXNw b25zZT1kYXRhLAorICAgICAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAg ICAgICAgICAgICApCisKKyAgICBkZWYgX2NsdHlwZV9mb3JtYXR0ZXIoc2Vs ZiwgdHlwZSk6CisgICAgICAgICIiIgorCisgICAgICAgIEFyZ3M6CisgICAg ICAgICAgICBkYXRhOiBUeXBlIHN0cmluZworCisgICAgICAgIFJldHVybnM6 CisgICAgICAgICAgICBXZSBuZWVkIHRvIHJlbW92ZSBbXSBmcm9tIHR5cGUg YW5kIGFwcGVuZCBpdAorICAgICAgICAgICAgYWZ0ZXIgbGVuZ3RoL3ByZWNp c2lvbiBzbyB3ZSB3aWxsIHNldCBmbGFnIGZvcgorICAgICAgICAgICAgc3Fs IHRlbXBsYXRlCisgICAgICAgICIiIgorICAgICAgICBpZiAnW10nIGluIHR5 cGU6CisgICAgICAgICAgICB0eXBlID0gdHlwZS5yZXBsYWNlKCdbXScsICcn KQorICAgICAgICAgICAgc2VsZi5oYXNTcXJCcmFja2V0ID0gVHJ1ZQorICAg ICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5oYXNTcXJCcmFja2V0ID0g RmFsc2UKKworICAgICAgICByZXR1cm4gdHlwZQorCisgICAgQGNoZWNrX3By ZWNvbmRpdGlvbgorICAgIGRlZiBjcmVhdGUoc2VsZiwgZ2lkLCBzaWQsIGRp ZCwgc2NpZCwgdGlkKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVu Y3Rpb24gd2lsbCBjcmVhdGVzIG5ldyB0aGUgc2NoZW1hIG9iamVjdAorCisg ICAgICAgICBBcmdzOgorICAgICAgICAgICBnaWQ6IFNlcnZlciBHcm91cCBJ RAorICAgICAgICAgICBzaWQ6IFNlcnZlciBJRAorICAgICAgICAgICBkaWQ6 IERhdGFiYXNlIElECisgICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJRAorICAg ICAgICAgICB0aWQ6IFRhYmxlIElECisgICAgICAgICIiIgorICAgICAgICBk YXRhID0gcmVxdWVzdC5mb3JtIGlmIHJlcXVlc3QuZm9ybSBlbHNlIGpzb24u bG9hZHMoCisgICAgICAgICAgICByZXF1ZXN0LmRhdGEuZGVjb2RlKCkKKyAg ICAgICAgKQorCisgICAgICAgIGZvciBrLCB2IGluIGRhdGEuaXRlbXMoKToK KyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBkYXRhW2tdID0g anNvbi5sb2Fkcyh2KQorICAgICAgICAgICAgZXhjZXB0IChWYWx1ZUVycm9y LCBUeXBlRXJyb3IpOgorICAgICAgICAgICAgICAgIGRhdGFba10gPSB2CisK KyAgICAgICAgcmVxdWlyZWRfYXJncyA9IHsKKyAgICAgICAgICAgICduYW1l JzogJ05hbWUnLAorICAgICAgICAgICAgJ2NsdHlwZSc6ICdUeXBlJworICAg ICAgICB9CisKKyAgICAgICAgZm9yIGFyZyBpbiByZXF1aXJlZF9hcmdzOgor ICAgICAgICAgICAgaWYgYXJnIG5vdCBpbiBkYXRhOgorICAgICAgICAgICAg ICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAgICAgICAg ICAgICAgIHN0YXR1cz00MTAsCisgICAgICAgICAgICAgICAgICAgIHN1Y2Nl c3M9MCwKKyAgICAgICAgICAgICAgICAgICAgZXJyb3Jtc2c9Z2V0dGV4dCgK KyAgICAgICAgICAgICAgICAgICAgICAgICJDb3VsZG4ndCBmaW5kIHRoZSBy ZXF1aXJlZCBwYXJhbWV0ZXIgKCVzKS4iICUKKyAgICAgICAgICAgICAgICAg ICAgICAgIHJlcXVpcmVkX2FyZ3NbYXJnXQorICAgICAgICAgICAgICAgICAg ICApCisgICAgICAgICAgICAgICAgKQorCisgICAgICAgICMgUGFyc2UgcHJp dmlsZWdlIGRhdGEgY29taW5nIGZyb20gY2xpZW50IGFjY29yZGluZyB0byBk YXRhYmFzZSBmb3JtYXQKKyAgICAgICAgaWYgJ2F0dGFjbCcgaW4gZGF0YToK KyAgICAgICAgICAgIGRhdGFbJ2F0dGFjbCddID0gcGFyc2VfcHJpdl90b19k YihkYXRhWydhdHRhY2wnXSwgc2VsZi5hY2wpCisKKyAgICAgICAgIyBBZGRp bmcgcGFyZW50IGludG8gZGF0YSBkaWN0LCB3aWxsIGJlIHVzaW5nIGl0IHdo aWxlIGNyZWF0aW5nIHNxbAorICAgICAgICBkYXRhWydzY2hlbWEnXSA9IHNl bGYuc2NoZW1hCisgICAgICAgIGRhdGFbJ3RhYmxlJ10gPSBzZWxmLnRhYmxl CisKKyAgICAgICAgIyBjaGVjayB0eXBlIGZvciAnW10nIGluIGl0CisgICAg ICAgIGRhdGFbJ2NsdHlwZSddID0gc2VsZi5fY2x0eXBlX2Zvcm1hdHRlcihk YXRhWydjbHR5cGUnXSkKKyAgICAgICAgZGF0YVsnaGFzU3FyQnJhY2tldCdd ID0gc2VsZi5oYXNTcXJCcmFja2V0CisKKyAgICAgICAgdHJ5OgorICAgICAg ICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRl bXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICdjcmVhdGUuc3FsJ10pLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGRhdGE9ZGF0YSwgY29ubj1zZWxmLmNvbm4p CisgICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRl X3NjYWxhcihTUUwpCisgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAg ICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJy b3Jtc2c9cmVzKQorCisgICAgICAgICAgICAjIHdlIG5lZWQgb2lkIHRvIHRv IGFkZCBvYmplY3QgaW4gdHJlZSBhdCBicm93c2VyCisgICAgICAgICAgICBT UUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVf cGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJ2dldF9wb3NpdGlvbi5zcWwnXSksCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdGlkPXRpZCwgZGF0YT1kYXRhKQorICAgICAg ICAgICAgc3RhdHVzLCBjbGlkID0gc2VsZi5jb25uLmV4ZWN1dGVfc2NhbGFy KFNRTCkKKyAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAg ICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz10 aWQpCisKKyAgICAgICAgICAgIHJldHVybiBqc29uaWZ5KAorICAgICAgICAg ICAgICAgIG5vZGU9c2VsZi5ibHVlcHJpbnQuZ2VuZXJhdGVfYnJvd3Nlcl9u b2RlKAorICAgICAgICAgICAgICAgICAgICBjbGlkLAorICAgICAgICAgICAg ICAgICAgICBzY2lkLAorICAgICAgICAgICAgICAgICAgICBkYXRhWyduYW1l J10sCisgICAgICAgICAgICAgICAgICAgIGljb249Imljb24tY29sdW1uIgor ICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICkKKyAgICAgICAgZXhj ZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgcmV0dXJuIGludGVy bmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1zdHIoZSkpCisKKyAgICBAY2hl Y2tfcHJlY29uZGl0aW9uCisgICAgZGVmIGRlbGV0ZShzZWxmLCBnaWQsIHNp ZCwgZGlkLCBzY2lkLCB0aWQsIGNsaWQpOgorICAgICAgICAiIiIKKyAgICAg ICAgVGhpcyBmdW5jdGlvbiB3aWxsIHVwZGF0ZXMgZXhpc3RpbmcgdGhlIHNj aGVtYSBvYmplY3QKKworICAgICAgICAgQXJnczoKKyAgICAgICAgICAgZ2lk OiBTZXJ2ZXIgR3JvdXAgSUQKKyAgICAgICAgICAgc2lkOiBTZXJ2ZXIgSUQK KyAgICAgICAgICAgZGlkOiBEYXRhYmFzZSBJRAorICAgICAgICAgICBzY2lk OiBTY2hlbWEgSUQKKyAgICAgICAgICAgdGlkOiBUYWJsZSBJRAorICAgICAg ICAgICBjbGlkOiBDb2x1bW4gSUQKKyAgICAgICAgIiIiCisgICAgICAgICMg V2Ugd2lsbCBmaXJzdCBmZXRjaCB0aGUgY29sdW1uIG5hbWUgZm9yIGN1cnJl bnQgcmVxdWVzdAorICAgICAgICAjIHNvIHRoYXQgd2UgY3JlYXRlIHRlbXBs YXRlIGZvciBkcm9wcGluZyBjb2x1bW4KKyAgICAgICAgdHJ5OgorCisgICAg ICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYu dGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJ3Byb3BlcnRpZXMuc3FsJ10pLCB0aWQ9dGlkLCBj bGlkPWNsaWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAs IHNob3dfc3lzX29iamVjdHM9c2VsZi5ibHVlcHJpbnQuc2hvd19zeXN0ZW1f b2JqZWN0cykKKworICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNv bm4uZXhlY3V0ZV9kaWN0KFNRTCkKKyAgICAgICAgICAgIGlmIG5vdCBzdGF0 dXM6CisgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9l cnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgICAgIGRhdGEgPSBkaWN0 KHJlc1sncm93cyddWzBdKQorICAgICAgICAgICAgIyBXZSB3aWxsIGFkZCB0 YWJsZSAmIHNjaGVtYSBhcyB3ZWxsCisgICAgICAgICAgICBkYXRhWydzY2hl bWEnXSA9IHNlbGYuc2NoZW1hCisgICAgICAgICAgICBkYXRhWyd0YWJsZSdd ID0gc2VsZi50YWJsZQorCisgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVt cGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlbGV0ZS5z cWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0 YT1kYXRhLCBjb25uPXNlbGYuY29ubikKKyAgICAgICAgICAgIHN0YXR1cywg cmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfc2NhbGFyKFNRTCkKKyAgICAgICAg ICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAgcmV0dXJuIGlu dGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAg ICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAgICAgICAg ICAgc3VjY2Vzcz0xLAorICAgICAgICAgICAgICAgIGluZm89Z2V0dGV4dCgi Q29sdW1uIGlzIGRyb3BwZWQiKSwKKyAgICAgICAgICAgICAgICBkYXRhPXsK KyAgICAgICAgICAgICAgICAgICAgJ2lkJzogY2xpZCwKKyAgICAgICAgICAg ICAgICAgICAgJ3RpZCc6IHRpZAorICAgICAgICAgICAgICAgIH0KKyAgICAg ICAgICAgICkKKworICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6Cisg ICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9y bXNnPXN0cihlKSkKKworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBk ZWYgdXBkYXRlKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRpZCwgY2xp ZCk6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwg dXBkYXRlcyBleGlzdGluZyB0aGUgc2NoZW1hIG9iamVjdAorCisgICAgICAg ICBBcmdzOgorICAgICAgICAgICBnaWQ6IFNlcnZlciBHcm91cCBJRAorICAg ICAgICAgICBzaWQ6IFNlcnZlciBJRAorICAgICAgICAgICBkaWQ6IERhdGFi YXNlIElECisgICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJRAorICAgICAgICAg ICB0aWQ6IFRhYmxlIElECisgICAgICAgICAgIGNsaWQ6IENvbHVtbiBJRAor ICAgICAgICAiIiIKKyAgICAgICAgZGF0YSA9IHJlcXVlc3QuZm9ybSBpZiBy ZXF1ZXN0LmZvcm0gZWxzZSBqc29uLmxvYWRzKHJlcXVlc3QuZGF0YS5kZWNv ZGUoKSkKKworICAgICAgICAjIEFkZGluZyBwYXJlbnQgaW50byBkYXRhIGRp Y3QsIHdpbGwgYmUgdXNpbmcgaXQgd2hpbGUgY3JlYXRpbmcgc3FsCisgICAg ICAgIGRhdGFbJ3NjaGVtYSddID0gc2VsZi5zY2hlbWEKKyAgICAgICAgZGF0 YVsndGFibGUnXSA9IHNlbGYudGFibGUKKworICAgICAgICAjIGNoZWNrIHR5 cGUgZm9yICdbXScgaW4gaXQKKyAgICAgICAgaWYgJ2NsdHlwZScgaW4gZGF0 YToKKyAgICAgICAgICAgIGRhdGFbJ2NsdHlwZSddID0gc2VsZi5fY2x0eXBl X2Zvcm1hdHRlcihkYXRhWydjbHR5cGUnXSkKKyAgICAgICAgICAgIGRhdGFb J2hhc1NxckJyYWNrZXQnXSA9IHNlbGYuaGFzU3FyQnJhY2tldAorCisgICAg ICAgIHRyeToKKyAgICAgICAgICAgIFNRTCA9IHNlbGYuZ2V0X3NxbChzY2lk LCB0aWQsIGNsaWQsIGRhdGEpCisgICAgICAgICAgICBpZiBTUUwgYW5kIFNR TC5zdHJpcCgnXG4nKSBhbmQgU1FMLnN0cmlwKCcgJyk6CisgICAgICAgICAg ICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9zY2FsYXIo U1FMKQorICAgICAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAg ICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJy b3Jtc2c9cmVzKQorCisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VfanNv bl9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICAgICAgc3VjY2Vzcz0xLAor ICAgICAgICAgICAgICAgICAgICBpbmZvPSJDb2x1bW4gdXBkYXRlZCIsCisg ICAgICAgICAgICAgICAgICAgIGRhdGE9eworICAgICAgICAgICAgICAgICAg ICAgICAgJ2lkJzogY2xpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICd0 aWQnOiB0aWQsCisgICAgICAgICAgICAgICAgICAgICAgICAnc2NpZCc6IHNj aWQKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICkK KyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmV0dXJuIG1h a2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICAgICAgc3VjY2Vz cz0xLAorICAgICAgICAgICAgICAgICAgICBpbmZvPSJOb3RoaW5nIHRvIHVw ZGF0ZSIsCisgICAgICAgICAgICAgICAgICAgIGRhdGE9eworICAgICAgICAg ICAgICAgICAgICAgICAgJ2lkJzogY2xpZCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICd0aWQnOiB0aWQsCisgICAgICAgICAgICAgICAgICAgICAgICAn c2NpZCc6IHNjaWQKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg ICAgICAgICkKKworICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6Cisg ICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9y bXNnPXN0cihlKSkKKworCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAg IGRlZiBtc3FsKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRpZCwgY2xp ZD1Ob25lKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24g d2lsbCBnZW5lcmF0ZXMgbW9kaWZpZWQgc3FsIGZvciBzY2hlbWEgb2JqZWN0 CisKKyAgICAgICAgIEFyZ3M6CisgICAgICAgICAgIGdpZDogU2VydmVyIEdy b3VwIElECisgICAgICAgICAgIHNpZDogU2VydmVyIElECisgICAgICAgICAg IGRpZDogRGF0YWJhc2UgSUQKKyAgICAgICAgICAgc2NpZDogU2NoZW1hIElE CisgICAgICAgICAgIHRpZDogVGFibGUgSUQKKyAgICAgICAgICAgY2xpZDog Q29sdW1uIElEIChXaGVuIHdvcmtpbmcgd2l0aCBleGlzdGluZyBjb2x1bW4p CisgICAgICAgICIiIgorICAgICAgICBkYXRhID0gZGljdCgpCisgICAgICAg IGZvciBrLCB2IGluIHJlcXVlc3QuYXJncy5pdGVtcygpOgorICAgICAgICAg ICAgdHJ5OgorICAgICAgICAgICAgICAgIGRhdGFba10gPSBqc29uLmxvYWRz KHYpCisgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAg ICAgICAgICBkYXRhW2tdID0gdgorCisgICAgICAgICMgQWRkaW5nIHBhcmVu dCBpbnRvIGRhdGEgZGljdCwgd2lsbCBiZSB1c2luZyBpdCB3aGlsZSBjcmVh dGluZyBzcWwKKyAgICAgICAgZGF0YVsnc2NoZW1hJ10gPSBzZWxmLnNjaGVt YQorICAgICAgICBkYXRhWyd0YWJsZSddID0gc2VsZi50YWJsZQorCisgICAg ICAgICMgY2hlY2sgdHlwZSBmb3IgJ1tdJyBpbiBpdAorICAgICAgICBpZiAn Y2x0eXBlJyBpbiBkYXRhOgorICAgICAgICAgICAgZGF0YVsnY2x0eXBlJ10g PSBzZWxmLl9jbHR5cGVfZm9ybWF0dGVyKGRhdGFbJ2NsdHlwZSddKQorICAg ICAgICAgICAgZGF0YVsnaGFzU3FyQnJhY2tldCddID0gc2VsZi5oYXNTcXJC cmFja2V0CisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgU1FMID0gc2Vs Zi5nZXRfc3FsKHNjaWQsIHRpZCwgY2xpZCwgZGF0YSkKKworICAgICAgICAg ICAgaWYgU1FMIGFuZCBTUUwuc3RyaXAoJ1xuJykgYW5kIFNRTC5zdHJpcCgn ICcpOgorICAgICAgICAgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9u c2UoCisgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPVNRTCwKKyAgICAg ICAgICAgICAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAgICAgICAgICAg ICAgICAgICAgICkKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgor ICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJv cm1zZz1zdHIoZSkpCisKKyAgICBkZWYgZ2V0X3NxbChzZWxmLCBzY2lkLCB0 aWQsIGNsaWQsIGRhdGEpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBm dW5jdGlvbiB3aWxsIGdlbnJhdGUgc3FsIGZyb20gbW9kZWwgZGF0YQorICAg ICAgICAiIiIKKyAgICAgICAgaWYgY2xpZCBpcyBub3QgTm9uZToKKyAgICAg ICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50 ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAncHJvcGVydGllcy5zcWwnXSksIHRpZD10aWQsIGNs aWQ9Y2xpZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwg c2hvd19zeXNfb2JqZWN0cz1zZWxmLmJsdWVwcmludC5zaG93X3N5c3RlbV9v YmplY3RzKQorCisgICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29u bi5leGVjdXRlX2RpY3QoU1FMKQorICAgICAgICAgICAgaWYgbm90IHN0YXR1 czoKKyAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vy cm9yKGVycm9ybXNnPXJlcykKKworICAgICAgICAgICAgb2xkX2RhdGEgPSBk aWN0KHJlc1sncm93cyddWzBdKQorICAgICAgICAgICAgIyBXZSB3aWxsIGFk ZCB0YWJsZSAmIHNjaGVtYSBhcyB3ZWxsCisgICAgICAgICAgICBvbGRfZGF0 YSA9IHNlbGYuX2Zvcm1hdHRlcihzY2lkLCB0aWQsIGNsaWQsIG9sZF9kYXRh KQorCisgICAgICAgICAgICAjIElmIG5hbWUgaXMgbm90IHByZXNlbnQgaW4g ZGF0YSB0aGVuCisgICAgICAgICAgICAjIHdlIHdpbGwgZmV0Y2ggaXQgZnJv bSBvbGQgZGF0YSwgd2UgYWxzbyBuZWVkIHNjaGVtYSAmIHRhYmxlIG5hbWUK KyAgICAgICAgICAgIGlmICduYW1lJyBub3QgaW4gZGF0YToKKyAgICAgICAg ICAgICAgICBkYXRhWyduYW1lJ10gPSBvbGRfZGF0YVsnbmFtZSddCisKKyAg ICAgICAgICAgICMgQ29udmVydCBhY2wgY29taW5nIGZyb20gY2xpZW50IGlu IGRiIHBhcnNpbmcgZm9ybWF0CisgICAgICAgICAgICBrZXkgPSAnYXR0YWNs JworICAgICAgICAgICAgaWYga2V5IGluIGRhdGEgYW5kIGRhdGFba2V5XSBp cyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBpZiAnYWRkZWQnIGluIGRh dGFba2V5XToKKyAgICAgICAgICAgICAgICAgICAgZGF0YVtrZXldWydhZGRl ZCddID0gcGFyc2VfcHJpdl90b19kYigKKyAgICAgICAgICAgICAgICAgICAg ICBkYXRhW2tleV1bJ2FkZGVkJ10sIHNlbGYuYWNsCisgICAgICAgICAgICAg ICAgICAgICkKKyAgICAgICAgICAgICAgICBpZiAnY2hhbmdlZCcgaW4gZGF0 YVtrZXldOgorICAgICAgICAgICAgICAgICAgICBkYXRhW2tleV1bJ2NoYW5n ZWQnXSA9IHBhcnNlX3ByaXZfdG9fZGIoCisgICAgICAgICAgICAgICAgICAg ICAgZGF0YVtrZXldWydjaGFuZ2VkJ10sIHNlbGYuYWNsCisgICAgICAgICAg ICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBpZiAnZGVsZXRlZCcgaW4g ZGF0YVtrZXldOgorICAgICAgICAgICAgICAgICAgICBkYXRhW2tleV1bJ2Rl bGV0ZWQnXSA9IHBhcnNlX3ByaXZfdG9fZGIoCisgICAgICAgICAgICAgICAg ICAgICAgZGF0YVtrZXldWydkZWxldGVkJ10sIHNlbGYuYWNsCisgICAgICAg ICAgICAgICAgICAgICkKKworICAgICAgICAgICAgU1FMID0gcmVuZGVyX3Rl bXBsYXRlKAorICAgICAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRlbXBs YXRlX3BhdGgsICd1cGRhdGUuc3FsJ10pLAorICAgICAgICAgICAgICAgIGRh dGE9ZGF0YSwgb19kYXRhPW9sZF9kYXRhLCBjb25uPXNlbGYuY29ubgorICAg ICAgICAgICAgICAgICkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJl cXVpcmVkX2FyZ3MgPSBbCisgICAgICAgICAgICAgICAgJ25hbWUnLAorICAg ICAgICAgICAgICAgICdjbHR5cGUnCisgICAgICAgICAgICBdCisKKyAgICAg ICAgICAgIGZvciBhcmcgaW4gcmVxdWlyZWRfYXJnczoKKyAgICAgICAgICAg ICAgICBpZiBhcmcgbm90IGluIGRhdGE6CisgICAgICAgICAgICAgICAgICAg IHJldHVybiBnZXR0ZXh0KCctLSBpbmNvbXBsZXRlIGRlZmluaXRpb24nKQor CisgICAgICAgICAgICAjIFdlIHdpbGwgY29udmVydCBwcml2aWxlZ2VzIGNv bWluZyBmcm9tIGNsaWVudCByZXF1aXJlZAorICAgICAgICAgICAgIyBpbiBz ZXJ2ZXIgc2lkZSBmb3JtYXQKKyAgICAgICAgICAgIGlmICdhdHRhY2wnIGlu IGRhdGE6CisgICAgICAgICAgICAgICAgZGF0YVsnYXR0YWNsJ10gPSBwYXJz ZV9wcml2X3RvX2RiKGRhdGFbJ2F0dGFjbCddLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFjbCkK KyAgICAgICAgICAgICMgSWYgdGhlIHJlcXVlc3QgZm9yIG5ldyBvYmplY3Qg d2hpY2ggZG8gbm90IGhhdmUgZGlkCisgICAgICAgICAgICBTUUwgPSByZW5k ZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ2Ny ZWF0ZS5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZGF0YT1kYXRhLCBjb25uPXNlbGYuY29ubikKKyAgICAgICAgcmV0dXJu IFNRTAorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBzcWwo c2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgdGlkLCBjbGlkKToKKyAgICAg ICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBnZW5lcmF0ZXMg cmV2ZXJzZSBlbmdpbmVlcmVkIHNxbCBmb3Igc2NoZW1hIG9iamVjdAorCisg ICAgICAgICBBcmdzOgorICAgICAgICAgICBnaWQ6IFNlcnZlciBHcm91cCBJ RAorICAgICAgICAgICBzaWQ6IFNlcnZlciBJRAorICAgICAgICAgICBkaWQ6 IERhdGFiYXNlIElECisgICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJRAorICAg ICAgICAgICB0aWQ6IFRhYmxlIElECisgICAgICAgICAgIGNsaWQ6IENvbHVt biBJRAorICAgICAgICAiIiIKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAg U1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRl X3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICdwcm9wZXJ0aWVzLnNxbCddKSwgdGlkPXRpZCwgY2xpZD1jbGlk CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBzaG93X3N5 c19vYmplY3RzPXNlbGYuYmx1ZXByaW50LnNob3dfc3lzdGVtX29iamVjdHMp CisKKyAgICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1 dGVfZGljdChTUUwpCisgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAg ICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJy b3Jtc2c9cmVzKQorCisgICAgICAgICAgICBkYXRhID0gZGljdChyZXNbJ3Jv d3MnXVswXSkKKyAgICAgICAgICAgICMgV2UgZG8gbm90IHdhbnQgdG8gZGlz cGxheSBsZW5ndGggYXMgLTEgaW4gY3JlYXRlIHF1ZXJ5CisgICAgICAgICAg ICBpZiAnYXR0bGVuJyBpbiBkYXRhIGFuZCBkYXRhWydhdHRsZW4nXSA9PSAt MToKKyAgICAgICAgICAgICAgICBkYXRhWydhdHRsZW4nXSA9ICcnCisgICAg ICAgICAgICAjIEFkZGluZyBwYXJlbnQgaW50byBkYXRhIGRpY3QsIHdpbGwg YmUgdXNpbmcgaXQgd2hpbGUgY3JlYXRpbmcgc3FsCisgICAgICAgICAgICBk YXRhWydzY2hlbWEnXSA9IHNlbGYuc2NoZW1hCisgICAgICAgICAgICBkYXRh Wyd0YWJsZSddID0gc2VsZi50YWJsZQorICAgICAgICAgICAgIyBjaGVjayB0 eXBlIGZvciAnW10nIGluIGl0CisgICAgICAgICAgICBpZiAnY2x0eXBlJyBp biBkYXRhOgorICAgICAgICAgICAgICAgIGRhdGFbJ2NsdHlwZSddID0gc2Vs Zi5fY2x0eXBlX2Zvcm1hdHRlcihkYXRhWydjbHR5cGUnXSkKKyAgICAgICAg ICAgICAgICBkYXRhWydoYXNTcXJCcmFja2V0J10gPSBzZWxmLmhhc1NxckJy YWNrZXQKKworICAgICAgICAgICAgIyBXZSB3aWxsIGFkZCB0YWJsZSAmIHNj aGVtYSBhcyB3ZWxsCisgICAgICAgICAgICBkYXRhID0gc2VsZi5fZm9ybWF0 dGVyKHNjaWQsIHRpZCwgY2xpZCwgZGF0YSkKKworICAgICAgICAgICAgU1FM ID0gc2VsZi5nZXRfc3FsKHNjaWQsIHRpZCwgTm9uZSwgZGF0YSkKKworICAg ICAgICAgICAgc3FsX2hlYWRlciA9ICItLSBDb2x1bW46IHswfVxuXG4tLSAi LmZvcm1hdChzZWxmLnF0SWRlbnQoc2VsZi5jb25uLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZGF0YVsnc2NoZW1hJ10sCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBkYXRhWyd0YWJsZSddLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZGF0YVsnbmFtZSddKSkKKyAgICAgICAgICAgIHNxbF9oZWFkZXIgKz0g cmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJ2RlbGV0ZS5zcWwnXSksCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBkYXRhPWRhdGEsIGNvbm49c2VsZi5j b25uKQorICAgICAgICAgICAgU1FMID0gc3FsX2hlYWRlciArICdcblxuJyAr IFNRTAorCisgICAgICAgICAgICByZXR1cm4gU1FMCisKKyAgICAgICAgZXhj ZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgcmV0dXJuIGludGVy bmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1zdHIoZSkpCisKKyAgICBAY2hl Y2tfcHJlY29uZGl0aW9uCisgICAgZGVmIGRlcGVuZGVudHMoc2VsZiwgZ2lk LCBzaWQsIGRpZCwgc2NpZCwgdGlkLCBjbGlkKToKKyAgICAgICAgIiIiCisg ICAgICAgIFRoaXMgZnVuY3Rpb24gZ2V0IHRoZSBkZXBlbmRlbnRzIGFuZCBy ZXR1cm4gYWpheCByZXNwb25zZQorICAgICAgICBmb3IgdGhlIGNvbHVtbiBu b2RlLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBnaWQ6IFNlcnZl ciBHcm91cCBJRAorICAgICAgICAgICAgc2lkOiBTZXJ2ZXIgSUQKKyAgICAg ICAgICAgIGRpZDogRGF0YWJhc2UgSUQKKyAgICAgICAgICAgIHNjaWQ6IFNj aGVtYSBJRAorICAgICAgICAgICAgdGlkOiBUYWJsZSBJRAorICAgICAgICAg ICAgY2xpZDogQ29sdW1uIElECisgICAgICAgICIiIgorICAgICAgICAjIFNw ZWNpZmljIGNvbmRpdGlvbiBmb3IgY29sdW1uIHdoaWNoIHdlIG5lZWQgdG8g YXBwZW5kCisgICAgICAgIHdoZXJlID0gIldIRVJFIGRlcC5yZWZvYmppZD17 MH06Ok9JRCBBTkQgZGVwLnJlZm9ianN1YmlkPXsxfSIuZm9ybWF0KAorICAg ICAgICAgICAgdGlkLCBjbGlkCisgICAgICAgICkKKworICAgICAgICBkZXBl bmRlbnRzX3Jlc3VsdCA9IHNlbGYuZ2V0X2RlcGVuZGVudHMoCisgICAgICAg ICAgICBzZWxmLmNvbm4sIGNsaWQsIHdoZXJlPXdoZXJlCisgICAgICAgICkK KworICAgICAgICAjIFNwZWNpZmljIHNxbCB0byBydW4gYWdhaW50IGNvbHVt biB0byBmZXRjaCBkZXBlbmRlbnRzCisgICAgICAgIFNRTCA9IHJlbmRlcl90 ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZXBlbmQuc3Fs J10pLCB3aGVyZT13aGVyZSkKKworICAgICAgICBzdGF0dXMsIHJlcyA9IHNl bGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQorICAgICAgICBpZiBub3Qgc3Rh dHVzOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJv cihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgZm9yIHJvdyBpbiByZXNbJ3Jv d3MnXToKKyAgICAgICAgICAgIHJlZl9uYW1lID0gcm93WydyZWZuYW1lJ10K KyAgICAgICAgICAgIGlmIHJlZl9uYW1lIGlzIE5vbmU6CisgICAgICAgICAg ICAgICAgY29udGludWUKKworICAgICAgICAgICAgZGVwX3R5cGUgPSAnJwor ICAgICAgICAgICAgZGVwX3N0ciA9IHJvd1snZGVwdHlwZSddCisgICAgICAg ICAgICBpZiBkZXBfc3RyID09ICdhJzoKKyAgICAgICAgICAgICAgICBkZXBf dHlwZSA9ICdhdXRvJworICAgICAgICAgICAgZWxpZiBkZXBfc3RyID09ICdu JzoKKyAgICAgICAgICAgICAgICBkZXBfdHlwZSA9ICdub3JtYWwnCisgICAg ICAgICAgICBlbGlmIGRlcF9zdHIgPT0gJ2knOgorICAgICAgICAgICAgICAg IGRlcF90eXBlID0gJ2ludGVybmFsJworCisgICAgICAgICAgICBkZXBlbmRl bnRzX3Jlc3VsdC5hcHBlbmQoeyd0eXBlJzogJ3NlcXVlbmNlJywgJ25hbWUn OiByZWZfbmFtZSwgJ2ZpZWxkJzogZGVwX3R5cGV9KQorCisgICAgICAgIHJl dHVybiBhamF4X3Jlc3BvbnNlKAorICAgICAgICAgICAgICAgIHJlc3BvbnNl PWRlcGVuZGVudHNfcmVzdWx0LAorICAgICAgICAgICAgICAgIHN0YXR1cz0y MDAKKyAgICAgICAgICAgICAgICApCisKKyAgICBAY2hlY2tfcHJlY29uZGl0 aW9uCisgICAgZGVmIGRlcGVuZGVuY2llcyhzZWxmLCBnaWQsIHNpZCwgZGlk LCBzY2lkLCB0aWQsIGNsaWQpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhp cyBmdW5jdGlvbiBnZXQgdGhlIGRlcGVuZGVuY2llcyBhbmQgcmV0dXJuIGFq YXggcmVzcG9uc2UKKyAgICAgICAgZm9yIHRoZSBjb2x1bW4gbm9kZS4KKwor ICAgICAgICBBcmdzOgorICAgICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAg SUQKKyAgICAgICAgICAgIHNpZDogU2VydmVyIElECisgICAgICAgICAgICBk aWQ6IERhdGFiYXNlIElECisgICAgICAgICAgICBzY2lkOiBTY2hlbWEgSUQK KyAgICAgICAgICAgIHRpZDogVGFibGUgSUQKKyAgICAgICAgICAgIGNsaWQ6 IENvbHVtbiBJRAorCisgICAgICAgICIiIgorICAgICAgICAjIFNwZWNpZmlj IGNvbmRpdGlvbiBmb3IgY29sdW1uIHdoaWNoIHdlIG5lZWQgdG8gYXBwZW5k CisgICAgICAgIGRlcGVuZGVuY2llc19yZXN1bHQgPSBzZWxmLmdldF9kZXBl bmRlbmNpZXMoCisgICAgICAgICAgICBzZWxmLmNvbm4sIGNsaWQKKyAgICAg ICAgKQorCisgICAgICAgIHJldHVybiBhamF4X3Jlc3BvbnNlKAorICAgICAg ICAgICAgICAgIHJlc3BvbnNlPWRlcGVuZGVuY2llc19yZXN1bHQsCisgICAg ICAgICAgICAgICAgc3RhdHVzPTIwMAorICAgICAgICAgICAgICAgICkKKwor CitDb2x1bW5zVmlldy5yZWdpc3Rlcl9ub2RlX3ZpZXcoYmx1ZXByaW50KQpk aWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2NvbHVtbi9zdGF0 aWMvaW1nL2NvbGwtY29sdW1uLnBuZyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxl cy9jb2x1bW4vc3RhdGljL2ltZy9jb2xsLWNvbHVtbi5wbmcKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMC4uODlkNzU4ODM0ZDQxNzZjMWRmMjU0OGRiMTBiNDZi MWY2YjJlNGVjNQpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgNDAwCnpjbWVB U0BOPyhvbEh5YHVWQnEhaWEwdnBeMHdCITYzP3d5bGBHYkt9Y3p7b2NFMDkq NGBoM0V2JnMobSZ5TDxRVQp6KTJDMExKJHUlXnw5U0c8PE0tfn1kLSg5LXZT cktPeW1fOzMtTVdgQVUjP3VhYV8hbys+KHtTO18zRzkwPWclS0oKemM8fW81 PmtsNzNlRWFybyRCckV2SGYtM3FhcFUqei1gfkR7VGF0Z002S0ZKSk5zd1BL Z1R1Mk1YK1JFVmZrJEw5Cnprb0V2JHgwQmcrS3RfUzVpKGBueTw9Rkc/Vmhz dkJ0YH1XNEVAWlFnX19wNnFtQG5ieTtxckcxajBfSUBjXig7cgp6dWhQKTJY PERfUD9kdGkyJHZ6eXYoayhWKm8/Zj9IPGk/Z1hpUkEpbWhUVXB3b2ZRbipQ OGB8TFd3PU1jTmFYUSEKenkrcUBAWWQwbTF5bEYzZnsoQW5fLUVWJCFQNExe I19gMDl2aCs9Y1c4PSYyKUM5Vi1BRFR5VmlSPj8pRksjSVowCnp6fGNVfiZg OCg3RnZRNWYlRVp7cCM2O1ZgKVhLb1hWeTNEYmlpWF8kbCszaEJoejB7b3Vt K0g3RCs0byNoRXZsKwpSKjhudnpjKUkkenRhRDBlMHMjQllyIUBjbwoKbGl0 ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvdGFibGVzL2NvbHVtbi9zdGF0aWMvaW1nL2NvbHVtbi5wbmcgYi93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy90YWJsZXMvY29sdW1uL3N0YXRpYy9pbWcvY29sdW1uLnBu ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZDlmODFkZjk4ZmUyN2Q4MWFk ZTUxNDRkNjZiM2IwOWI5NjEyM2MxCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJh bCA0MzUKemNtZUFTQE4/KG9sSHlgdVZCcSFpYTB2cF4wd0IhNjM/d3lsYEdi S31YQEYwTkUwOSo0YGgzRXYmcyhtJnlMPFFVCnp5P2dpVy1AcEkjPkM8UD1w MCkzUHpISGdEPWcqKE5jPTYpUm4+WHYkdCRYP008O3M7U1NGQmpFY0oxMnI+ KHs/fQp6XzNGV2MyTS1AVWVEdnRpPmVaeyl0WFo+WikyMHN9S0Q+VllgcVFV UnBGZTs4YHR8RiNae0skOCpzKT41aEsoQ0gKemUqZ2FjP2MyQlMtbzQ5ZUtl IVpWRj1JKVBVb2VCaXZtMHFaNHJoVCFXSEZIVDBBc2g0Kj4qcmlzaSV1JGh7 V2FFCnpeQjBBaDZhLW9tNFJtLWl1VjMrWDxvMnJtP3x3JH0/ISFlTl95MCpk Y1RfT1JiNng3QT17NmN1PF42WH1rWTJJYgp6WjBUTUhyaWgxSV5DVWheZCVA PHkpM1R2T3YmSzZpSH4tUkNUZFZVNmN6TWU5Kmh+MWx7VlMxXyhEM345UDZf cTQKemdYaSspKSE2RV58OXhmckIqR3pJLVRBKV49bTZDYypOQnBvI0ZBOTI8 ZjJweyNiOUokWHJPQ29xLSRVcFZxez10CnpWcipxJXFIU1BtV25mQDJRJmtR e0x2RFViVz9DZ2dnTWxTajE0eS0lZmYrPUBzcCs5PmZFcE0pVUh4M3ZJVkNn IQpFME5ScW5afnk9UgoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0t Z2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2NvbHVtbi90ZW1wbGF0ZXMv Y29sdW1uL2pzL2NvbHVtbi5qcyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9j b2x1bW4vdGVtcGxhdGVzL2NvbHVtbi9qcy9jb2x1bW4uanMKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWY4ZWRjNgotLS0gL2Rldi9u dWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9jb2x1bW4vdGVtcGxh dGVzL2NvbHVtbi9qcy9jb2x1bW4uanMKQEAgLTAsMCArMSw1ODYgQEAKK2Rl ZmluZSgKKyAgICAgICAgWydqcXVlcnknLCAndW5kZXJzY29yZScsICd1bmRl cnNjb3JlLnN0cmluZycsICdwZ2FkbWluJywgJ3BnYWRtaW4uYnJvd3Nlcics CisgICAgICAgICdiYWNrZm9ybScsICdhbGVydGlmeScsICdwZ2FkbWluLmJy b3dzZXIuY29sbGVjdGlvbiddLAorZnVuY3Rpb24oJCwgXywgUywgcGdBZG1p biwgcGdCcm93c2VyLCBCYWNrZm9ybSwgYWxlcnRpZnkpIHsKKworICBpZiAo IXBnQnJvd3Nlci5Ob2Rlc1snY29sbC1jb2x1bW4nXSkgeworICAgIHZhciBk YXRhYmFzZXMgPSBwZ0FkbWluLkJyb3dzZXIuTm9kZXNbJ2NvbGwtY29sdW1u J10gPQorICAgICAgcGdBZG1pbi5Ccm93c2VyLkNvbGxlY3Rpb24uZXh0ZW5k KHsKKyAgICAgICAgbm9kZTogJ2NvbHVtbicsCisgICAgICAgIGxhYmVsOiAn e3sgXygnQ29sdW1ucycpIH19JywKKyAgICAgICAgdHlwZTogJ2NvbGwtY29s dW1uJywKKyAgICAgICAgc3FsQWx0ZXJIZWxwOiAnc3FsLWFsdGVydGFibGUu aHRtbCcsCisgICAgICAgIHNxbENyZWF0ZUhlbHA6ICdzcWwtYWx0ZXJ0YWJs ZS5odG1sJywKKyAgICAgICAgY29sdW1uczogWyduYW1lJywgJ2F0dHR5cGlk JywgJ2Rlc2NyaXB0aW9uJ10KKyAgICAgIH0pOworICB9OworCisgIC8vIFN3 aXRjaCBDZWxsIGZvciBQcmltYXJ5IEtleSBzZWxlY3Rpb24KKyAgdmFyIFN3 aXRjaERlcENlbGwgPSBCYWNrZ3JpZC5Cb29sZWFuQ2VsbC5leHRlbmQoewor ICAgICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24oKSB7CisgICAgICAgIEJhY2tn cmlkLkJvb2xlYW5DZWxsLnByb3RvdHlwZS5pbml0aWFsaXplLmFwcGx5KHRo aXMsIGFyZ3VtZW50cyk7CisgICAgICAgIEJhY2tncmlkLkV4dGVuc2lvbi5E ZXBlbmRlbnRDZWxsLnByb3RvdHlwZS5pbml0aWFsaXplLmFwcGx5KHRoaXMs IGFyZ3VtZW50cyk7CisgICAgICB9LAorICAgICAgZGVwZW5kZW50Q2hhbmdl ZDogZnVuY3Rpb24gKCkgeworICAgICAgICB2YXIgbW9kZWwgPSB0aGlzLm1v ZGVsLAorICAgICAgICAgIGNvbHVtbiA9IHRoaXMuY29sdW1uLAorICAgICAg ICAgIGVkaXRhYmxlID0gdGhpcy5jb2x1bW4uZ2V0KCJlZGl0YWJsZSIpLAor ICAgICAgICAgIGlucHV0ID0gdGhpcy4kZWwuZmluZCgnaW5wdXRbdHlwZT1j aGVja2JveF0nKS5maXJzdCgpOworCisgICAgICAgIGlzX2VkaXRhYmxlID0g Xy5pc0Z1bmN0aW9uKGVkaXRhYmxlKSA/ICEhZWRpdGFibGUuYXBwbHkoY29s dW1uLCBbbW9kZWxdKSA6ICEhZWRpdGFibGU7CisgICAgICAgIGlmIChpc19l ZGl0YWJsZSkgeworICAgICAgICAgICB0aGlzLiRlbC5hZGRDbGFzcygiZWRp dGFibGUiKTsKKyAgICAgICAgICAgaW5wdXQucHJvcCgnZGlzYWJsZWQnLCBm YWxzZSk7CisgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICB0aGlzLiRl bC5yZW1vdmVDbGFzcygiZWRpdGFibGUiKTsKKyAgICAgICAgICAgaW5wdXQu cHJvcCgnZGlzYWJsZWQnLCB0cnVlKTsKKyAgICAgICAgIH0KKworICAgICAg ICB0aGlzLmRlbGVnYXRlRXZlbnRzKCk7CisgICAgICAgIHJldHVybiB0aGlz OworICAgICAgfSwKKyAgICAgIHJlbW92ZTogQmFja2dyaWQuRXh0ZW5zaW9u LkRlcGVuZGVudENlbGwucHJvdG90eXBlLnJlbW92ZQorICAgIH0pOworCisg ICAvLyBUaGlzIE5vZGUgbW9kZWwgd2lsbCBiZSB1c2VkIGZvciB2YXJpYWJs ZSBjb250cm9sIGZvciBjb2x1bW4KKyAgIHZhciBWYXJpYWJsZXNNb2RlbCA9 IEJhY2tmb3JtLlZhcmlhYmxlc01vZGVsID0gcGdBZG1pbi5Ccm93c2VyLk5v ZGUuTW9kZWwuZXh0ZW5kKHsKKyAgICBkZWZhdWx0czogeworICAgICAgbmFt ZTogbnVsbCwKKyAgICAgIHZhbHVlOiBudWxsCisgICAgfSwKKyAgICBzY2hl bWE6IFt7CisgICAgICBpZDogJ25hbWUnLCBsYWJlbDogJ3t7IF8oJ05hbWUn KSB9fScsIGNlbGw6ICdzZWxlY3QyJywKKyAgICAgIHR5cGU6ICd0ZXh0Jywg ZGlzYWJsZWQ6IGZhbHNlLCBub2RlOiAnY29sdW1uJywKKyAgICAgIG9wdGlv bnM6IFtbJ25fZGlzdGluY3QnLCAnbl9kaXN0aW5jdCddLAorICAgICAgWydu X2Rpc3RpbmN0X2luaGVyaXRlZCcsJ25fZGlzdGluY3RfaW5oZXJpdGVkJ11d LAorICAgICAgc2VsZWN0Mjoge3BsYWNlaG9sZGVyOiAiU2VsZWN0IHZhcmlh YmxlIn0sCisgICAgICBjZWxsSGVhZGVyQ2xhc3Nlczond2lkdGhfcGVyY2Vu dF81MCcKKyAgICB9LHsKKyAgICAgIGlkOiAndmFsdWUnLCBsYWJlbDogJ3t7 IF8oJ1ZhbHVlJykgfX0nLAorICAgICAgdHlwZTogJ3RleHQnLCBkaXNhYmxl ZDogZmFsc2UsCisgICAgICBjZWxsSGVhZGVyQ2xhc3Nlczond2lkdGhfcGVy Y2VudF81MCcKKyAgICB9XSwKKyAgICB2YWxpZGF0ZTogZnVuY3Rpb24oKSB7 CisgICAgICB2YXIgZXJyID0ge30sCisgICAgICAgICAgZXJybXNnID0gbnVs bDsKKworICAgICAgaWYgKF8uaXNVbmRlZmluZWQodGhpcy5nZXQoJ3ZhbHVl JykpIHx8CisgICAgICAgIF8uaXNOdWxsKHRoaXMuZ2V0KCd2YWx1ZScpKSB8 fAorICAgICAgICBTdHJpbmcodGhpcy5nZXQoJ3ZhbHVlJykpLnJlcGxhY2Uo L15ccyt8XHMrJC9nLCAnJykgPT0gJycpIHsKKyAgICAgICAgICAgIGVycm1z ZyA9ICAne3sgXygnUGxlYXNlIHByb3ZpZGUgaW5wdXQgZm9yIHZhcmlhYmxl LicpfX0nOworICAgICAgICAgICAgdGhpcy5lcnJvck1vZGVsLnNldCgndmFs dWUnLCBlcnJtc2cpOworICAgICAgICAgICAgcmV0dXJuIGVycm1zZzsKKyAg ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGhpcy5lcnJvck1vZGVs LnVuc2V0KCd2YWx1ZScpOworICAgICAgICAgIH0KKyAgICAgIHJldHVybiBu dWxsOworICAgIH0KKyAgfSk7CisKKyAgaWYgKCFwZ0Jyb3dzZXIuTm9kZXNb J2NvbHVtbiddKSB7CisgICAgcGdBZG1pbi5Ccm93c2VyLk5vZGVzWydjb2x1 bW4nXSA9IHBnQWRtaW4uQnJvd3Nlci5Ob2RlLmV4dGVuZCh7CisgICAgICBw YXJlbnRfdHlwZTogWyd0YWJsZScsICd2aWV3JywgJ212aWV3J10sCisgICAg ICBjb2xsZWN0aW9uX3R5cGU6IFsnY29sbC10YWJsZScsICdjb2xsLXZpZXcn LCAnY29sbC1tdmlldyddLAorICAgICAgdHlwZTogJ2NvbHVtbicsCisgICAg ICBsYWJlbDogJ3t7IF8oJ0NvbHVtbicpIH19JywKKyAgICAgIGhhc1NRTDog IHRydWUsCisgICAgICBjYW5Ecm9wOiBmdW5jdGlvbihpdGVtRGF0YSwgaXRl bSwgZGF0YSl7CisgICAgICAgIGlmIChwZ0Jyb3dzZXIuTm9kZXNbJ3NjaGVt YSddLmNhbkNoaWxkRHJvcC5hcHBseSh0aGlzLCBbaXRlbURhdGEsIGl0ZW0s IGRhdGFdKSkgeworICAgICAgICAgIHZhciB0ID0gcGdCcm93c2VyLnRyZWUs IGkgPSBpdGVtLCBkID0gaXRlbURhdGEsIHBhcmVudHMgPSBbXTsKKyAgICAg ICAgICAvLyBUbyBpdGVyYXRlIG92ZXIgdHJlZSB0byBjaGVjayBwYXJlbnQg bm9kZQorICAgICAgICAgIHdoaWxlIChpKSB7CisgICAgICAgICAgICBwYXJl bnRzLnB1c2goZC5fdHlwZSk7CisgICAgICAgICAgICBpID0gdC5oYXNQYXJl bnQoaSkgPyB0LnBhcmVudChpKSA6IG51bGw7CisgICAgICAgICAgICBkID0g aSA/IHQuaXRlbURhdGEoaSkgOiBudWxsOworICAgICAgICAgIH0KKworICAg ICAgICAgIC8vIENoZWNrIGlmIG1lbnUgaXMgYWxsb3dlZCA/CisgICAgICAg ICAgaWYoXy5pbmRleE9mKHBhcmVudHMsICdjYXRhbG9nJykgPiAtMSB8fAor ICAgICAgICAgICAgIF8uaW5kZXhPZihwYXJlbnRzLCAndmlldycpID4gLTEg fHwKKyAgICAgICAgICAgICBfLmluZGV4T2YocGFyZW50cywgJ212aWV3Jykg PiAtMSkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg IH0gZWxzZSBpZihfLmluZGV4T2YocGFyZW50cywgJ3RhYmxlJykgPiAtMSkg eworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgfQorICAg ICAgICB9IGVsc2UgeworICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg ICAgfQorICAgICAgfSwKKyAgICAgIGhhc0RlcGVuZHM6IHRydWUsCisgICAg ICBJbml0OiBmdW5jdGlvbigpIHsKKyAgICAgICAgLyogQXZvaWQgbXVsaXRw bGUgcmVnaXN0cmF0aW9uIG9mIG1lbnVzICovCisgICAgICAgIGlmICh0aGlz LmluaXRpYWxpemVkKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg IHRoaXMuaW5pdGlhbGl6ZWQgPSB0cnVlOworCisgICAgICAgIHBnQnJvd3Nl ci5hZGRfbWVudXMoW3sKKyAgICAgICAgICBuYW1lOiAnY3JlYXRlX2NvbHVt bl9vbl9jb2xsJywgbm9kZTogJ2NvbGwtY29sdW1uJywgbW9kdWxlOiB0aGlz LAorICAgICAgICAgIGFwcGxpZXM6IFsnb2JqZWN0JywgJ2NvbnRleHQnXSwg Y2FsbGJhY2s6ICdzaG93X29ial9wcm9wZXJ0aWVzJywKKyAgICAgICAgICBj YXRlZ29yeTogJ2NyZWF0ZScsIHByaW9yaXR5OiA0LCBsYWJlbDogJ3t7IF8o J0NvbHVtbi4uLicpIH19JywKKyAgICAgICAgICBpY29uOiAnd2NUYWJJY29u IGljb24tY29sdW1uJywgZGF0YToge2FjdGlvbjogJ2NyZWF0ZScsIGNoZWNr OiB0cnVlfSwKKyAgICAgICAgICBlbmFibGU6ICdjYW5DcmVhdGUnCisgICAg ICAgIH0seworICAgICAgICAgIG5hbWU6ICdjcmVhdGVfY29sdW1uJywgbm9k ZTogJ2NvbHVtbicsIG1vZHVsZTogdGhpcywKKyAgICAgICAgICBhcHBsaWVz OiBbJ29iamVjdCcsICdjb250ZXh0J10sIGNhbGxiYWNrOiAnc2hvd19vYmpf cHJvcGVydGllcycsCisgICAgICAgICAgY2F0ZWdvcnk6ICdjcmVhdGUnLCBw cmlvcml0eTogNCwgbGFiZWw6ICd7eyBfKCdDb2x1bW4uLi4nKSB9fScsCisg ICAgICAgICAgaWNvbjogJ3djVGFiSWNvbiBpY29uLWNvbHVtbicsIGRhdGE6 IHthY3Rpb246ICdjcmVhdGUnLCBjaGVjazogdHJ1ZX0sCisgICAgICAgICAg ZW5hYmxlOiAnY2FuQ3JlYXRlJworICAgICAgICB9LHsKKyAgICAgICAgICBu YW1lOiAnY3JlYXRlX2NvbHVtbl9vblRhYmxlJywgbm9kZTogJ3RhYmxlJywg bW9kdWxlOiB0aGlzLAorICAgICAgICAgIGFwcGxpZXM6IFsnb2JqZWN0Jywg J2NvbnRleHQnXSwgY2FsbGJhY2s6ICdzaG93X29ial9wcm9wZXJ0aWVzJywK KyAgICAgICAgICBjYXRlZ29yeTogJ2NyZWF0ZScsIHByaW9yaXR5OiA0LCBs YWJlbDogJ3t7IF8oJ0NvbHVtbi4uLicpIH19JywKKyAgICAgICAgICBpY29u OiAnd2NUYWJJY29uIGljb24tY29sdW1uJywgZGF0YToge2FjdGlvbjogJ2Ny ZWF0ZScsIGNoZWNrOiB0cnVlfSwKKyAgICAgICAgICBlbmFibGU6ICdjYW5D cmVhdGUnCisgICAgICAgIH0seworICAgICAgICAgIG5hbWU6ICdjcmVhdGVf Y29sdW1uX29uVmlldycsIG5vZGU6ICd2aWV3JywgbW9kdWxlOiB0aGlzLAor ICAgICAgICAgIGFwcGxpZXM6IFsnb2JqZWN0JywgJ2NvbnRleHQnXSwgY2Fs bGJhY2s6ICdzaG93X29ial9wcm9wZXJ0aWVzJywKKyAgICAgICAgICBjYXRl Z29yeTogJ2NyZWF0ZScsIHByaW9yaXR5OiA0LCBsYWJlbDogJ3t7IF8oJ0Nv bHVtbi4uLicpIH19JywKKyAgICAgICAgICBpY29uOiAnd2NUYWJJY29uIGlj b24tY29sdW1uJywgZGF0YToge2FjdGlvbjogJ2NyZWF0ZScsIGNoZWNrOiB0 cnVlfSwKKyAgICAgICAgICBlbmFibGU6ICdjYW5DcmVhdGUnCisgICAgICAg IH0KKyAgICAgICAgXSk7CisgICAgICB9LAorICAgICAgbW9kZWw6IHBnQWRt aW4uQnJvd3Nlci5Ob2RlLk1vZGVsLmV4dGVuZCh7CisgICAgICAgIGRlZmF1 bHRzOiB7CisgICAgICAgICAgbmFtZTogdW5kZWZpbmVkLAorICAgICAgICAg IGF0dG93bmVyOiB1bmRlZmluZWQsCisgICAgICAgICAgYXR0dHlwaWQ6IHVu ZGVmaW5lZCwKKyAgICAgICAgICBhdHRudW06IHVuZGVmaW5lZCwKKyAgICAg ICAgICBjbHR5cGU6IHVuZGVmaW5lZCwKKyAgICAgICAgICBjb2xsc3BjbmFt ZTogdW5kZWZpbmVkLAorICAgICAgICAgIGF0dGFjbDogdW5kZWZpbmVkLAor ICAgICAgICAgIGRlc2NyaXB0aW9uOiB1bmRlZmluZWQsCisgICAgICAgICAg cGFyZW50X3RibDogdW5kZWZpbmVkLAorICAgICAgICAgIG1pbl92YWw6IHVu ZGVmaW5lZCwKKyAgICAgICAgICBtYXhfdmFsOiB1bmRlZmluZWQsCisgICAg ICAgICAgZWRpdF90eXBlczogdW5kZWZpbmVkLAorICAgICAgICAgIGlzX3By aW1hcnlfa2V5OiBmYWxzZSwKKyAgICAgICAgICBpbmhlcml0ZWRmcm9tOiB1 bmRlZmluZWQsCisgICAgICAgICAgYXR0c3RhdHRhcmdldDp1bmRlZmluZWQK KyAgICAgICAgfSwKKyAgICAgICAgc2NoZW1hOiBbeworICAgICAgICAgIGlk OiAnbmFtZScsIGxhYmVsOiAne3sgXygnTmFtZScpIH19JywgY2VsbDogJ3N0 cmluZycsCisgICAgICAgICAgdHlwZTogJ3RleHQnLCBkaXNhYmxlZDogJ2lu U2NoZW1hV2l0aENvbHVtbkNoZWNrJywKKyAgICAgICAgICBjZWxsSGVhZGVy Q2xhc3Nlczond2lkdGhfcGVyY2VudF8zMCcsCisgICAgICAgICAgZWRpdGFi bGU6ICdlZGl0YWJsZV9jaGVja19mb3JfdGFibGUnCisgICAgICAgIH0sewor ICAgICAgICAgIC8vIE5lZWQgdG8gc2hvdyB0aGlzIGZpZWxkIG9ubHkgd2hl biBjcmVhdGluZyBuZXcgdGFibGUgW2luIFN1Yk5vZGUgY29udHJvbF0KKyAg ICAgICAgICBpZDogJ2lzX3ByaW1hcnlfa2V5JywgbGFiZWw6ICd7eyBfKCdJ cyBwcmltYXJ5IGtleT8nKSB9fScsIGNlbGw6IFN3aXRjaERlcENlbGwsCisg ICAgICAgICAgdHlwZTogJ3N3aXRjaCcsIGRlcHM6WyduYW1lJ10sCisgICAg ICAgICAgb3B0aW9uczogeworICAgICAgICAgICAgb25UZXh0OiAnWWVzJywg b2ZmVGV4dDogJ05vJywgb25Db2xvcjogJ3N1Y2Nlc3MnLAorICAgICAgICAg ICAgb2ZmQ29sb3I6ICdwcmltYXJ5Jywgc2l6ZTogJ3NtYWxsJ30sCisgICAg ICAgICAgY2VsbEhlYWRlckNsYXNzZXM6J3dpZHRoX3BlcmNlbnRfNScsCisg ICAgICAgICAgdmlzaWJsZTogZnVuY3Rpb24obSkgeworICAgICAgICAgICAg cmV0dXJuIF8uaXNVbmRlZmluZWQobS50b3Aubm9kZV9pbmZvWyd0YWJsZSdd IHx8IG0udG9wLm5vZGVfaW5mb1sndmlldyddIHx8IG0udG9wLm5vZGVfaW5m b1snbXZpZXcnXSk7CisgICAgICAgICAgfSwKKyAgICAgICAgICBkaXNhYmxl ZDogZnVuY3Rpb24obSl7CisgICAgICAgICAgICAvLyBJZiBwcmltYXJ5IGtl eSBhbHJlYWR5IGV4aXN0IHRoZW4gZGlzYWJsZS4KKyAgICAgICAgICAgIGlm IChtLnRvcCAmJiAhXy5pc1VuZGVmaW5lZChtLnRvcC5nZXQoJ29pZCcpKSAm JgorICAgICAgICAgICAgICAgICAgICAgICAgbS50b3AuZ2V0KCdwcmltYXJ5 X2tleScpLmxlbmd0aCA+IDAgJiYKKyAgICAgICAgICAgICAgICAgICAgICAg ICFfLmlzVW5kZWZpbmVkKG0udG9wLmdldCgncHJpbWFyeV9rZXknKS5maXJz dCgpLmdldCgnb2lkJykpKSB7CisgICAgICAgICAgICAgIHJldHVybiB0cnVl OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgbmFtZSA9IG0u Z2V0KCduYW1lJyk7CisKKyAgICAgICAgICAgIGlmKCFtLmluU2NoZW1hV2l0 aENvbHVtbkNoZWNrLmFwcGx5KHRoaXMsIFttXSkgJiYKKyAgICAgICAgICAg IChfLmlzVW5kZWZpbmVkKG5hbWUpICB8fCBfLmlzTnVsbChuYW1lKSB8fCBu YW1lID09ICcnKSkgeworICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg ICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg ICAgICB9LAorICAgICAgICAgIGVkaXRhYmxlOiBmdW5jdGlvbihtKXsKKyAg ICAgICAgICAgIHZhciBuYW1lID0gbS5nZXQoJ25hbWUnKTsKKyAgICAgICAg ICAgIC8vIElmIEhlYWRlckNlbGwgdGhlbiBhbGxvdyBUcnVlCisgICAgICAg ICAgICBpZihtIGluc3RhbmNlb2YgQmFja2JvbmUuQ29sbGVjdGlvbikgewor ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAg ICAgICAgICAgIC8vIElmIHByaW1hcnkga2V5IGFscmVhZHkgZXhpc3QgdGhl biBkaXNhYmxlLgorICAgICAgICAgICAgaWYgKG0udG9wICYmICFfLmlzVW5k ZWZpbmVkKG0udG9wLmdldCgnb2lkJykpICYmCisgICAgICAgICAgICAgICAg ICAgICAgbS50b3AuZ2V0KCdwcmltYXJ5X2tleScpLmxlbmd0aCA+IDAgJiYK KyAgICAgICAgICAgICAgICAgICAgICAhXy5pc1VuZGVmaW5lZChtLnRvcC5n ZXQoJ3ByaW1hcnlfa2V5JykuZmlyc3QoKS5nZXQoJ29pZCcpKSkgeworCisg ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKwor ICAgICAgICAgICAgaWYoIW0uaW5TY2hlbWFXaXRoQ29sdW1uQ2hlY2suYXBw bHkodGhpcywgW21dKSAmJgorICAgICAgICAgICAgICAhXy5pc1VuZGVmaW5l ZChuYW1lKSAmJiAhXy5pc051bGwobmFtZSkgJiYgbmFtZSAhPT0gJycpIHsK KyAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9Cisg ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAvLyBTZXQg dG8gZmFsc2UgaWYgbm8gY29uZGl0aW9uIGlzIG1ldAorICAgICAgICAgICAg bS5zZXQoJ2lzX3ByaW1hcnlfa2V5JywgZmFsc2UpOworICAgICAgICAgIH0K KyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdhdHRudW0nLCBsYWJlbDon e3sgXygnUG9zaXRpb24nKSB9fScsIGNlbGw6ICdzdHJpbmcnLAorICAgICAg ICAgIHR5cGU6ICd0ZXh0JywgZGlzYWJsZWQ6ICdpblNjaGVtYScsIG1vZGU6 IFsncHJvcGVydGllcyddCisgICAgICAgIH0seworICAgICAgICAgIGlkOiAn Y2x0eXBlJywgbGFiZWw6J3t7IF8oJ0RhdGEgdHlwZScpIH19JywgY2VsbDog J25vZGUtYWpheC1vcHRpb25zJywKKyAgICAgICAgICB0eXBlOiAndGV4dCcs IGRpc2FibGVkOiAnaW5TY2hlbWFXaXRoQ29sdW1uQ2hlY2snLAorICAgICAg ICAgIGNvbnRyb2w6ICdub2RlLWFqYXgtb3B0aW9ucycsIHVybDogJ2dldF90 eXBlcycsIG5vZGU6ICd0YWJsZScsCisgICAgICAgICAgY2VsbEhlYWRlckNs YXNzZXM6J3dpZHRoX3BlcmNlbnRfMzAnLCBmaXJzdF9lbXB0eTogdHJ1ZSwK KyAgICAgICAgICBzZWxlY3QyOiB7IGFsbG93Q2xlYXI6IGZhbHNlIH0sIGdy b3VwOiAne3sgXygnRGVmaW5pdGlvbicpIH19JywKKyAgICAgICAgICB0cmFu c2Zvcm06IGZ1bmN0aW9uKGRhdGEsIGNlbGwpIHsKKyAgICAgICAgICAgIC8q ICd0cmFuc2Zvcm0nIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIGJ5IGNvbnRy b2wsIGFuZCBjZWxsIGJvdGguCisgICAgICAgICAgICAgKiBUaGUgd2F5LCB3 ZSB1c2UgdGhlIHRyYW5zZm9ybSBpbiBjZWxsLCBhbmQgY29udHJvbCBpcyBk aWZmZXJlbnQuCisgICAgICAgICAgICAgKiBCZWNhdXNlIC0gb3B0aW9ucyBh cmUgc2hhcmVkIHVzaW5nICdjb2x1bW4nIG9iamVjdCBpbiBiYWNrZ3JpZCwK KyAgICAgICAgICAgICAqIGhlbmNlIC0gdGhlIGNlbGwgaXMgcGFzc2VkIGFz IHNlY29uZCBwYXJhbWV0ZXIsIHdoaWxlIHRoZSBjb250cm9sCisgICAgICAg ICAgICAgKiB1c2VzICh0aGlzKSBhcyBhIG9iamVjdC4KKyAgICAgICAgICAg ICAqLworICAgICAgICAgICAgdmFyIGNvbnRyb2wgPSBjZWxsIHx8IHRoaXMs CisgICAgICAgICAgICAgICAgbSA9IGNvbnRyb2wubW9kZWw7CisKKyAgICAg ICAgICAgIC8qIFdlIG5lZWQgZGlmZmVyZW50IGRhdGEgaW4gY3JlYXRlIG1v ZGUgJiBpbiBlZGl0IG1vZGUKKyAgICAgICAgICAgICAqIGlmIHdlIGFyZSBp biBjcmVhdGUgbW9kZSB0aGVuIHJldHVybiBkYXRhIGFzIGl0IGlzCisgICAg ICAgICAgICAgKiBpZiB3ZSBhcmUgaW4gZWRpdCBtb2RlIHRoZW4gd2UgbmVl ZCB0byBmaWx0ZXIgZGF0YQorICAgICAgICAgICAgICovCisgICAgICAgICAg ICBjb250cm9sLm1vZGVsLmRhdGF0eXBlcyA9IGRhdGE7CisgICAgICAgICAg ICB2YXIgZWRpdF90eXBlcyA9IG0uZ2V0KCdlZGl0X3R5cGVzJyksCisgICAg ICAgICAgICAgICAgcmVzdWx0ID0gW107CisKKyAgICAgICAgICAgIC8vIElm IGNhbGxlZCBmcm9tIFRhYmxlLCBXZSB3aWxsIGNoZWNrIGlmIGluIGVkaXQg bW9kZQorICAgICAgICAgICAgLy8gdGhlbiBzZW5kIGVkaXRfdHlwZXMgb25s eQorICAgICAgICAgICAgaWYoICFfLmlzVW5kZWZpbmVkKG0udG9wKSAmJiAh bS50b3AuaXNOZXcoKSApIHsKKyAgICAgICAgICAgICAgXy5lYWNoKGRhdGEs IGZ1bmN0aW9uKHQpIHsKKyAgICAgICAgICAgICAgICBpZiAoXy5pbmRleE9m KGVkaXRfdHlwZXMsIHQudmFsdWUpICE9IC0xKSB7CisgICAgICAgICAgICAg ICAgICByZXN1bHQucHVzaCh0KTsKKyAgICAgICAgICAgICAgICB9CisgICAg ICAgICAgICB9KTsKKyAgICAgICAgICAgICAgLy8gVGhlcmUgbWF5IGJlIGNh c2UgdGhhdCB1c2VyIGFkZHMgbmV3IGNvbHVtbiBpbiAgZXhpc3RpbmcgY29s bGVjdGlvbgorICAgICAgICAgICAgICAvLyB3ZSB3aWxsIG5vdCBoYXZlIGVk aXQgdHlwZXMgdGhlbgorICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0Lmxl bmd0aCA+IDAgPyByZXN1bHQgOiBkYXRhOworICAgICAgICAgICAgfQorCisg ICAgICAgICAgICAvLyBJZiBjYWxsZWQgZnJvbSBDb2x1bW4KKyAgICAgICAg ICAgIGlmKG0uaXNOZXcoKSkgeworICAgICAgICAgICAgICByZXR1cm4gZGF0 YTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgIC8vZWRp dCBtb2RlCisgICAgICAgICAgICAgIF8uZWFjaChkYXRhLCBmdW5jdGlvbih0 KSB7CisgICAgICAgICAgICAgICAgaWYgKF8uaW5kZXhPZihlZGl0X3R5cGVz LCB0LnZhbHVlKSAhPSAtMSkgeworICAgICAgICAgICAgICAgICAgcmVzdWx0 LnB1c2godCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9 KTsKKworICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICAg ICAgfQorICAgICAgICAgIH0sCisgICAgICAgICAgZWRpdGFibGU6ICdlZGl0 YWJsZV9jaGVja19mb3JfdGFibGUnCisgICAgICAgIH0seworICAgICAgICAg IC8vIE5lZWQgdG8gc2hvdyB0aGlzIGZpZWxkIG9ubHkgd2hlbiBjcmVhdGlu ZyBuZXcgdGFibGUgW2luIFN1Yk5vZGUgY29udHJvbF0KKyAgICAgICAgICBp ZDogJ2luaGVyaXRlZGZyb20nLCBsYWJlbDogJ3t7IF8oJ0luaGVyaXRlZCBm cm9tIHRhYmxlJykgfX0nLAorICAgICAgICAgIHR5cGU6ICd0ZXh0JywgZGlz YWJsZWQ6IHRydWUsIGVkaXRhYmxlOiBmYWxzZSwKKyAgICAgICAgICBjZWxs SGVhZGVyQ2xhc3Nlczond2lkdGhfcGVyY2VudF8zMCcsCisgICAgICAgICAg dmlzaWJsZTogZnVuY3Rpb24obSkgeworICAgICAgICAgICAgcmV0dXJuIF8u aXNVbmRlZmluZWQobS50b3Aubm9kZV9pbmZvWyd0YWJsZSddIHx8IG0udG9w Lm5vZGVfaW5mb1sndmlldyddIHx8IG0udG9wLm5vZGVfaW5mb1snbXZpZXcn XSk7CisgICAgICAgICAgfQorICAgICAgICB9LHsKKyAgICAgICAgICBpZDog J2F0dGxlbicsIGxhYmVsOid7eyBfKCdMZW5ndGgnKSB9fScsIGNlbGw6ICdz dHJpbmcnLAorICAgICAgICAgICBkZXBzOiBbJ2NsdHlwZSddLCB0eXBlOiAn aW50JywgZ3JvdXA6ICd7eyBfKCdEZWZpbml0aW9uJykgfX0nLAorICAgICAg ICAgICBkaXNhYmxlZDogZnVuY3Rpb24obSkgeworICAgICAgICAgICAgIHZh ciBvZl90eXBlID0gbS5nZXQoJ2NsdHlwZScpLAorICAgICAgICAgICAgICAg ZmxhZyA9IHRydWU7CisgICAgICAgICAgICAgIF8uZWFjaChtLmRhdGF0eXBl cywgZnVuY3Rpb24obykgeworICAgICAgICAgICAgICAgIGlmICggb2ZfdHlw ZSA9PSBvLnZhbHVlICkgeworICAgICAgICAgICAgICAgICAgICBpZihvLmxl bmd0aCkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg ICAgICAgIG0uc2V0KCdtaW5fdmFsJywgby5taW5fdmFsLCB7c2lsZW50OiB0 cnVlfSk7CisgICAgICAgICAgICAgICAgICAgICAgbS5zZXQoJ21heF92YWwn LCBvLm1heF92YWwsIHtzaWxlbnQ6IHRydWV9KTsKKyAgICAgICAgICAgICAg ICAgICAgICBmbGFnID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIH0K KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0pOworCisgICAg ICAgICAgICAgIGZsYWcgJiYgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAg ICAgICAgICAgICAgICAgIG0uc2V0KCdhdHRsZW4nLCBudWxsKTsKKyAgICAg ICAgICAgICAgICB9LDEwKTsKKworICAgICAgICAgICAgICByZXR1cm4gZmxh ZzsKKyAgICAgICAgICAgfQorICAgICAgICB9LHsKKyAgICAgICAgICBpZDog J2F0dHByZWNpc2lvbicsIGxhYmVsOid7eyBfKCdQcmVjaXNpb24nKSB9fScs IGNlbGw6ICdzdHJpbmcnLAorICAgICAgICAgICBkZXBzOiBbJ2NsdHlwZSdd LCB0eXBlOiAnaW50JywgZ3JvdXA6ICd7eyBfKCdEZWZpbml0aW9uJykgfX0n LAorICAgICAgICAgICBkaXNhYmxlZDogZnVuY3Rpb24obSkgeworICAgICAg ICAgICAgIHZhciBvZl90eXBlID0gbS5nZXQoJ2NsdHlwZScpLAorICAgICAg ICAgICAgICAgZmxhZyA9IHRydWU7CisgICAgICAgICAgICAgIF8uZWFjaCht LmRhdGF0eXBlcywgZnVuY3Rpb24obykgeworICAgICAgICAgICAgICAgIGlm ICggb2ZfdHlwZSA9PSBvLnZhbHVlICkgeworICAgICAgICAgICAgICAgICAg ICBpZihvLnByZWNpc2lvbikKKyAgICAgICAgICAgICAgICAgICAgeworICAg ICAgICAgICAgICAgICAgICAgIG0uc2V0KCdtaW5fdmFsJywgby5taW5fdmFs LCB7c2lsZW50OiB0cnVlfSk7CisgICAgICAgICAgICAgICAgICAgICAgbS5z ZXQoJ21heF92YWwnLCBvLm1heF92YWwsIHtzaWxlbnQ6IHRydWV9KTsKKyAg ICAgICAgICAgICAgICAgICAgICBmbGFnID0gZmFsc2U7CisgICAgICAgICAg ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg IH0pOworCisgICAgICAgICAgICAgIGZsYWcgJiYgc2V0VGltZW91dChmdW5j dGlvbigpIHsKKyAgICAgICAgICAgICAgICAgIG0uc2V0KCdhdHRwcmVjaXNp b24nLCBudWxsKTsKKyAgICAgICAgICAgICAgICB9LDEwKTsKKyAgICAgICAg ICAgICAgcmV0dXJuIGZsYWc7CisgICAgICAgICAgIH0KKyAgICAgICAgIH0s eworICAgICAgICAgIGlkOiAnY29sbHNwY25hbWUnLCBsYWJlbDone3sgXygn Q29sbGF0aW9uJykgfX0nLCBjZWxsOiAnc3RyaW5nJywKKyAgICAgICAgICB0 eXBlOiAndGV4dCcsIGNvbnRyb2w6ICdub2RlLWFqYXgtb3B0aW9ucycsIHVy bDogJ2dldF9jb2xsYXRpb25zJywKKyAgICAgICAgICBncm91cDogJ3t7IF8o J0RlZmluaXRpb24nKSB9fScsIG5vZGU6ICdjb2xsYXRpb24nLAorICAgICAg ICAgIGRlcHM6IFsnY2x0eXBlJ10sIGRpc2FibGVkOiBmdW5jdGlvbihtKSB7 CisgICAgICAgICAgICAgdmFyIG9mX3R5cGUgPSBtLmdldCgnY2x0eXBlJyks CisgICAgICAgICAgICAgICBmbGFnID0gdHJ1ZTsKKyAgICAgICAgICAgICAg Xy5lYWNoKG0uZGF0YXR5cGVzLCBmdW5jdGlvbihvKSB7CisgICAgICAgICAg ICAgICAgaWYgKCBvZl90eXBlID09IG8udmFsdWUgKSB7CisgICAgICAgICAg ICAgICAgICAgIGlmKG8uaXNfY29sbGF0YWJsZSkKKyAgICAgICAgICAgICAg ICAgICAgeworICAgICAgICAgICAgICAgICAgICAgIGZsYWcgPSBmYWxzZTsK KyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAg ICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgIGlmIChmbGFnKSB7Cisg ICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpeworICAgICAg ICAgICAgICAgICAgbS5zZXQoJ2NvbGxzcGNuYW1lJywgIiIpOworICAgICAg ICAgICAgICAgIH0sIDEwKTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAg ICAgICByZXR1cm4gZmxhZzsKKyAgICAgICAgICB9CisgICAgICAgIH0sewor ICAgICAgICAgIGlkOiAnZGVmdmFsJywgbGFiZWw6J3t7IF8oJ0RlZmF1bHQg VmFsdWUnKSB9fScsIGNlbGw6ICdzdHJpbmcnLAorICAgICAgICAgIHR5cGU6 ICd0ZXh0JywgZGlzYWJsZWQ6ICdpblNjaGVtYVdpdGhDb2x1bW5DaGVjaycs CisgICAgICAgICAgZ3JvdXA6ICd7eyBfKCdEZWZpbml0aW9uJykgfX0nCisg ICAgICAgIH0seworICAgICAgICAgIGlkOiAnYXR0bm90bnVsbCcsIGxhYmVs Oid7eyBfKCdOb3QgTlVMTD8nKSB9fScsIGNlbGw6ICdzdHJpbmcnLAorICAg ICAgICAgIHR5cGU6ICdzd2l0Y2gnLCBkaXNhYmxlZDogJ2luU2NoZW1hV2l0 aENvbHVtbkNoZWNrJywKKyAgICAgICAgICBncm91cDogJ3t7IF8oJ0RlZmlu aXRpb24nKSB9fScKKyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdhdHRz dGF0dGFyZ2V0JywgbGFiZWw6J3t7IF8oJ1N0YXRpc3RpY3MnKSB9fScsIGNl bGw6ICdzdHJpbmcnLAorICAgICAgICAgIHR5cGU6ICd0ZXh0JywgZGlzYWJs ZWQ6ICdpblNjaGVtYVdpdGhDb2x1bW5DaGVjaycsIG1vZGU6IFsncHJvcGVy dGllcycsICdlZGl0J10sCisgICAgICAgICAgZ3JvdXA6ICd7eyBfKCdEZWZp bml0aW9uJykgfX0nCisgICAgICAgIH0seworICAgICAgICAgIGlkOiAnYXR0 c3RvcmFnZScsIGxhYmVsOid7eyBfKCdTdG9yYWdlJykgfX0nLCBncm91cDog J3t7IF8oJ0RlZmluaXRpb24nKSB9fScsCisgICAgICAgICAgdHlwZTogJ3Rl eHQnLCBtb2RlOiBbJ3Byb3BlcnRpZXMnLCAnZWRpdCddLAorICAgICAgICAg IGNlbGw6ICdzdHJpbmcnLCBkaXNhYmxlZDogJ2luU2NoZW1hV2l0aENvbHVt bkNoZWNrJywgZmlyc3RfZW1wdHk6IHRydWUsCisgICAgICAgICAgY29udHJv bDogJ3NlbGVjdDInLCBzZWxlY3QyOiB7IHBsYWNlaG9sZGVyOiAiU2VsZWN0 IHN0b3JhZ2UiLAorICAgICAgICAgICAgYWxsb3dDbGVhcjogZmFsc2UsCisg ICAgICAgICAgICB3aWR0aDogIjEwMCUiCisgICAgICAgICAgfSwKKyAgICAg ICAgICBvcHRpb25zOiBbCisgICAgICAgICAgICB7bGFiZWw6ICJQTEFJTiIs IHZhbHVlOiAicCJ9LAorICAgICAgICAgICAge2xhYmVsOiAiTUFJTiIsIHZh bHVlOiAibSJ9LAorICAgICAgICAgICAge2xhYmVsOiAiRVhURVJOQUwiLCB2 YWx1ZTogImUifSwKKyAgICAgICAgICAgIHtsYWJlbDogIkVYVEVOREVEIiwg dmFsdWU6ICJ4In0sCisgICAgICAgICAgIF0KKyAgICAgICAgfSx7CisgICAg ICAgICAgaWQ6ICdpc19waycsIGxhYmVsOid7eyBfKCdQcmltYXJ5IGtleT8n KSB9fScsCisgICAgICAgICAgdHlwZTogJ3N3aXRjaCcsIGRpc2FibGVkOiB0 cnVlLCBtb2RlOiBbJ3Byb3BlcnRpZXMnXQorICAgICAgICB9LHsKKyAgICAg ICAgICBpZDogJ2lzX2ZrJywgbGFiZWw6J3t7IF8oJ0ZvcmVpZ24ga2V5Pycp IH19JywKKyAgICAgICAgICB0eXBlOiAnc3dpdGNoJywgZGlzYWJsZWQ6IHRy dWUsIG1vZGU6IFsncHJvcGVydGllcyddCisgICAgICAgIH0seworICAgICAg ICAgIGlkOiAnaXNfaW5oZXJpdGVkJywgbGFiZWw6J3t7IF8oJ0luaGVyaXRl ZD8nKSB9fScsCisgICAgICAgICAgdHlwZTogJ3N3aXRjaCcsIGRpc2FibGVk OiB0cnVlLCBtb2RlOiBbJ3Byb3BlcnRpZXMnXQorICAgICAgICB9LHsKKyAg ICAgICAgICBpZDogJ3RibHNfaW5oZXJpdGVkJywgbGFiZWw6J3t7IF8oJ0lu aGVyaXRlZCBmcm9tIHRhYmxlKHMpJykgfX0nLAorICAgICAgICAgIHR5cGU6 ICd0ZXh0JywgZGlzYWJsZWQ6IHRydWUsIG1vZGU6IFsncHJvcGVydGllcydd LCBkZXBzOiBbJ2lzX2luaGVyaXRlZCddLAorICAgICAgICAgIHZpc2libGU6 IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICAgICAgaWYgKCFfLmlzVW5kZWZp bmVkKG0uZ2V0KCdpc19pbmhlcml0ZWQnKSkgJiYgbS5nZXQoJ2lzX2luaGVy aXRlZCcpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZh bHNlOworICAgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9 LHsKKyAgICAgICAgICBpZDogJ2lzX3N5c19jb2x1bW4nLCBsYWJlbDone3sg XygnU3lzdGVtIENvbHVtbj8nKSB9fScsIGNlbGw6ICdzdHJpbmcnLAorICAg ICAgICAgIHR5cGU6ICdzd2l0Y2gnLCBkaXNhYmxlZDogdHJ1ZSwgbW9kZTog Wydwcm9wZXJ0aWVzJ10KKyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdk ZXNjcmlwdGlvbicsIGxhYmVsOid7eyBfKCdDb21tZW50JykgfX0nLCBjZWxs OiAnc3RyaW5nJywKKyAgICAgICAgICB0eXBlOiAnbXVsdGlsaW5lJywgbW9k ZTogWydwcm9wZXJ0aWVzJywgJ2NyZWF0ZScsICdlZGl0J10sCisgICAgICAg ICAgZGlzYWJsZWQ6ICdpblNjaGVtYScKKyAgICAgICAgfSx7CisgICAgICAg ICAgaWQ6ICdhdHRhY2wnLCBsYWJlbDogJ1ByaXZpbGVnZXMnLCB0eXBlOiAn Y29sbGVjdGlvbicsCisgICAgICAgICAgZ3JvdXA6ICd7eyBfKCdTZWN1cml0 eScpIH19JywgY29udHJvbDogJ3VuaXF1ZS1jb2wtY29sbGVjdGlvbicsCisg ICAgICAgICAgbW9kZWw6IHBnQWRtaW4uQnJvd3Nlci5Ob2RlLlByaXZpbGVn ZVJvbGVNb2RlbC5leHRlbmQoeworICAgICAgICAgIHByaXZpbGVnZXM6IFsn YScsJ3InLCd3JywneCddfSksCisgICAgICAgICAgbW9kZTogWydlZGl0J10s IGNhbkFkZDogdHJ1ZSwgY2FuRGVsZXRlOiB0cnVlLAorICAgICAgICAgIHVu aXF1ZUNvbCA6IFsnZ3JhbnRlZSddCisgICAgICAgIH0seworICAgICAgICAg IGlkOiAnYXR0b3B0aW9ucycsIGxhYmVsOiAnVmFyaWFibGVzJywgdHlwZTog J2NvbGxlY3Rpb24nLAorICAgICAgICAgIGdyb3VwOiAne3sgXygnU2VjdXJp dHknKSB9fScsIGNvbnRyb2w6ICd1bmlxdWUtY29sLWNvbGxlY3Rpb24nLAor ICAgICAgICAgIG1vZGVsOiBWYXJpYWJsZXNNb2RlbCwgdW5pcXVlQ29sIDog WyduYW1lJ10sCisgICAgICAgICAgbW9kZTogWydlZGl0JywgJ2NyZWF0ZSdd LCBjYW5BZGQ6IHRydWUsIGNhbkVkaXQ6IGZhbHNlLAorICAgICAgICAgIGNh bkRlbGV0ZTogdHJ1ZQorICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ3Nl Y2xhYmVscycsIGxhYmVsOiAne3sgXygnU2VjdXJpdHkgTGFiZWxzJykgfX0n LAorICAgICAgICAgIG1vZGVsOiBwZ0FkbWluLkJyb3dzZXIuU2VjdXJpdHlN b2RlbCwKKyAgICAgICAgICBlZGl0YWJsZTogZmFsc2UsIHR5cGU6ICdjb2xs ZWN0aW9uJywKKyAgICAgICAgICBncm91cDogJ3t7IF8oJ1NlY3VyaXR5Jykg fX0nLCBtb2RlOiBbJ2VkaXQnLCAnY3JlYXRlJ10sCisgICAgICAgICAgbWlu X3ZlcnNpb246IDkwMTAwLCBjYW5BZGQ6IHRydWUsCisgICAgICAgICAgY2Fu RWRpdDogZmFsc2UsIGNhbkRlbGV0ZTogdHJ1ZSwgY29udHJvbDogJ3VuaXF1 ZS1jb2wtY29sbGVjdGlvbicKKyAgICAgICAgfQorICAgICAgICBdLAorICAg ICAgICB2YWxpZGF0ZTogZnVuY3Rpb24oa2V5cykgeworICAgICAgICAgIHZh ciBlcnIgPSB7fSwKKyAgICAgICAgICAgICAgY2hhbmdlZEF0dHJzID0gdGhp cy5jaGFuZ2VkLAorICAgICAgICAgICAgICBtc2cgPSB1bmRlZmluZWQ7CisK KyAgICAgICAgICAvLyBOb3RoaW5nIHRvIHZhbGlkYXRlCisgICAgICAgICAg aWYgKGtleXMgJiYga2V5cy5sZW5ndGggPT0gMCkgeworICAgICAgICAgICAg dGhpcy5lcnJvck1vZGVsLmNsZWFyKCk7CisgICAgICAgICAgICByZXR1cm4g bnVsbDsKKyAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGhpcy5l cnJvck1vZGVsLmNsZWFyKCk7CisgICAgICAgICAgfQorCisgICAgICAgICAg aWYgKF8uaXNVbmRlZmluZWQodGhpcy5nZXQoJ25hbWUnKSkKKyAgICAgICAg ICAgICAgfHwgU3RyaW5nKHRoaXMuZ2V0KCduYW1lJykpLnJlcGxhY2UoL15c cyt8XHMrJC9nLCAnJykgPT0gJycpIHsKKyAgICAgICAgICAgIG1zZyA9ICd7 eyBfKCdDb2x1bW4gbmFtZSBjYW4gbm90IGJlIGVtcHR5LicpIH19JzsKKyAg ICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC5zZXQoJ25hbWUnLCBtc2cpOwor ICAgICAgICAgICAgcmV0dXJuIG1zZzsKKyAgICAgICAgICB9CisKKyAgICAg ICAgICBpZiAoXy5pc1VuZGVmaW5lZCh0aGlzLmdldCgnY2x0eXBlJykpCisg ICAgICAgICAgICAgIHx8IFN0cmluZyh0aGlzLmdldCgnY2x0eXBlJykpLnJl cGxhY2UoL15ccyt8XHMrJC9nLCAnJykgPT0gJycpIHsKKyAgICAgICAgICAg IG1zZyA9ICd7eyBfKCdDb2x1bW4gdHlwZSBjYW4gbm90IGJlIGVtcHR5Licp IH19JzsKKyAgICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC5zZXQoJ2NsdHlw ZScsIG1zZyk7CisgICAgICAgICAgICByZXR1cm4gbXNnOworICAgICAgICAg IH0KKworICAgICAgICAgIGlmICghXy5pc1VuZGVmaW5lZCh0aGlzLmdldCgn Y2x0eXBlJykpCisgICAgICAgICAgICAgICAgJiYgIV8uaXNVbmRlZmluZWQo dGhpcy5nZXQoJ2F0dGxlbicpKQorICAgICAgICAgICAgICAgICYmICFfLmlz TnVsbCh0aGlzLmdldCgnYXR0bGVuJykpCisgICAgICAgICAgICAgICAgJiYg dGhpcy5nZXQoJ2F0dGxlbicpICE9PSAnJykgeworICAgICAgICAgICAgLy8g VmFsaWRhdGlvbiBmb3IgTGVuZ3RoIGZpZWxkCisgICAgICAgICAgICBpZiAo dGhpcy5nZXQoJ2F0dGxlbicpIDwgdGhpcy5nZXQoJ21pbl92YWwnKSkKKyAg ICAgICAgICAgICAgbXNnID0gJ3t7IF8oJ0xlbmd0aCBzaG91bGQgbm90IGJl IGxlc3MgdGhhbjogJykgfX0nICsgdGhpcy5nZXQoJ21pbl92YWwnKTsKKyAg ICAgICAgICAgIGlmICh0aGlzLmdldCgnYXR0bGVuJykgPiB0aGlzLmdldCgn bWF4X3ZhbCcpKQorICAgICAgICAgICAgICBtc2cgPSAne3sgXygnTGVuZ3Ro IHNob3VsZCBub3QgYmUgZ3JlYXRlciB0aGFuOiAnKSB9fScgKyB0aGlzLmdl dCgnbWF4X3ZhbCcpOworICAgICAgICAgICAgLy8gSWYgd2UgaGF2ZSBhbnkg ZXJyb3Igc2V0IHRoZW4gdGhyb3cgaXQgdG8gdXNlcgorICAgICAgICAgICAg aWYobXNnKSB7CisgICAgICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC5zZXQo J2F0dGxlbicsIG1zZykKKyAgICAgICAgICAgICAgcmV0dXJuIG1zZzsKKyAg ICAgICAgICAgIH0KKyAgICAgICAgICB9CisKKyAgICAgICAgICBpZiAoIV8u aXNVbmRlZmluZWQodGhpcy5nZXQoJ2NsdHlwZScpKQorICAgICAgICAgICAg ICAgICYmICFfLmlzVW5kZWZpbmVkKHRoaXMuZ2V0KCdhdHRwcmVjaXNpb24n KSkKKyAgICAgICAgICAgICAgICAmJiAhXy5pc051bGwodGhpcy5nZXQoJ2F0 dHByZWNpc2lvbicpKQorICAgICAgICAgICAgICAgICYmIHRoaXMuZ2V0KCdh dHRwcmVjaXNpb24nKSAhPT0gJycpIHsKKyAgICAgICAgICAgIC8vIFZhbGlk YXRpb24gZm9yIHByZWNpc2lvbiBmaWVsZAorICAgICAgICAgICAgaWYgKHRo aXMuZ2V0KCdhdHRwcmVjaXNpb24nKSA8IHRoaXMuZ2V0KCdtaW5fdmFsJykp CisgICAgICAgICAgICAgIG1zZyA9ICd7eyBfKCdQcmVjaXNpb24gc2hvdWxk IG5vdCBiZSBsZXNzIHRoYW46ICcpIH19JyArIHRoaXMuZ2V0KCdtaW5fdmFs Jyk7CisgICAgICAgICAgICBpZiAodGhpcy5nZXQoJ2F0dHByZWNpc2lvbicp ID4gdGhpcy5nZXQoJ21heF92YWwnKSkKKyAgICAgICAgICAgICAgbXNnID0g J3t7IF8oJ1ByZWNpc2lvbiBzaG91bGQgbm90IGJlIGdyZWF0ZXIgdGhhbjog JykgfX0nICsgdGhpcy5nZXQoJ21heF92YWwnKTsKKyAgICAgICAgICAgIC8v IElmIHdlIGhhdmUgYW55IGVycm9yIHNldCB0aGVuIHRocm93IGl0IHRvIHVz ZXIKKyAgICAgICAgICAgIGlmKG1zZykgeworICAgICAgICAgICAgICB0aGlz LmVycm9yTW9kZWwuc2V0KCdhdHRwcmVjaXNpb24nLCBtc2cpCisgICAgICAg ICAgICAgIHJldHVybiBtc2c7CisgICAgICAgICAgICB9CisgICAgICAgICAg fQorCisgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0sCisgICAg ICAgIGlzSW5oZXJ0ZWRDb2x1bW46IGZ1bmN0aW9uKCkgeworICAgICAgICB9 LAorICAgICAgICAvLyBXZSB3aWxsIGNoZWNrIGlmIHdlIGFyZSB1bmRlciBz Y2hlbWEgbm9kZSAmIGluICdjcmVhdGUnIG1vZGUKKyAgICAgICAgaW5TY2hl bWE6IGZ1bmN0aW9uKCkgeworICAgICAgICAgIGlmKHRoaXMubm9kZV9pbmZv ICYmICAnY2F0YWxvZycgaW4gdGhpcy5ub2RlX2luZm8pCisgICAgICAgICAg eworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgfQorICAg ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfSwKKyAgICAgICAgLy8g V2Ugd2lsbCBjaGVjayBpZiB3ZSBhcmUgdW5kZXIgc2NoZW1hIG5vZGUgJiBp biAnY3JlYXRlJyBtb2RlCisgICAgICAgIGluU2NoZW1hV2l0aE1vZGVsQ2hl Y2s6IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICBpZih0aGlzLm5vZGVfaW5m byAmJiAgJ3NjaGVtYScgaW4gdGhpcy5ub2RlX2luZm8pCisgICAgICAgICAg eworICAgICAgICAgICAgLy8gV2Ugd2lsbCBkaXNhYmxlIGNvbnRyb2wgaWYg aXQncyBpbiAnZWRpdCcgbW9kZQorICAgICAgICAgICAgaWYgKG0uaXNOZXco KSkgeworICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAg ICB9IGVsc2UgeworICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg ICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgICAgcmV0dXJuIHRydWU7 CisgICAgICAgIH0sCisgICAgICAgIC8vIENoZWNrcyB3ZWF0aGVyIHRvIGVu YWJsZS9kaXNhYmxlIGNvbnRyb2wKKyAgICAgICAgaW5TY2hlbWFXaXRoQ29s dW1uQ2hlY2s6IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICB2YXIgbm9kZV9p bmZvID0gdGhpcy5ub2RlX2luZm8gfHwgbS5ub2RlX2luZm8gfHwgbS50b3Au bm9kZV9pbmZvOworCisgICAgICAgICAgLy8gZGlzYWJsZSBhbGwgZmllbGRz IGlmIGNvbHVtbiBpcyBsaXN0ZWQgdW5kZXIgdmlldyBvciBtdmlldworICAg ICAgICAgIGlmICgndmlldycgaW4gbm9kZV9pbmZvIHx8ICdtdmlldycgaW4g bm9kZV9pbmZvKSB7CisgICAgICAgICAgICBpZiAodGhpcyAmJiBfLmhhcyh0 aGlzLCAnbmFtZScpICYmICh0aGlzLm5hbWUgIT0gJ2RlZnZhbCcpKSB7Cisg ICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAg ICAgICAgIH0KKworICAgICAgICAgIGlmKG5vZGVfaW5mbyAmJiAgJ3NjaGVt YScgaW4gbm9kZV9pbmZvKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIC8v IFdlIHdpbGwgZGlzYWJsZSBjb250cm9sIGlmIGl0J3Mgc3lzdGVtIGNvbHVt bnMKKyAgICAgICAgICAgIC8vIGluaGVyaXRlZGZyb20gY2hlY2sgaXMgdXNl ZnVsIHdoZW4gd2UgdXNlIHRoaXMgc2NoZW1hIGluIHRhYmxlIG5vZGUKKyAg ICAgICAgICAgIC8vIGluaGVyaXRlZGZyb20gaGFzIHZhbHVlIHRoZW4gd2Ug c2hvdWxkIGRpc2FibGUgaXQKKyAgICAgICAgICAgIGlmKCFfLmlzVW5kZWZp bmVkKG0uZ2V0KCdpbmhlcml0ZWRmcm9tJykpKSB7CisgICAgICAgICAgICAg ICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAv LyBpZTogaXQncyBwb3NpdGlvbiBpcyBsZXNzIHRoZW4gMQorICAgICAgICAg ICAgaWYgKG0uaXNOZXcoKSkgeworICAgICAgICAgICAgICByZXR1cm4gZmFs c2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyBpZiB3ZSBhcmUg aW4gZWRpdCBtb2RlCisgICAgICAgICAgICBpZiAoIV8uaXNVbmRlZmluZWQo bS5nZXQoJ2F0dG51bScpKSAmJiBtLmdldCgnYXR0bnVtJykgPiAwICkgewor ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9IGVs c2UgeworICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAg IH0KKyAgICAgICAgICAgfQorICAgICAgICAgIHJldHVybiB0cnVlOworICAg ICAgICB9LAorICAgICAgICBlZGl0YWJsZV9jaGVja19mb3JfdGFibGU6IGZ1 bmN0aW9uKGFyZykgeworICAgICAgICAgICAgaWYgKGFyZyBpbnN0YW5jZW9m IEJhY2tib25lLkNvbGxlY3Rpb24pIHsKKyAgICAgICAgICAgICAgICByZXR1 cm4gIWFyZy5tb2RlbC5wcm90b3R5cGUuaW5TY2hlbWFXaXRoQ29sdW1uQ2hl Y2suYXBwbHkoCisgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcywgW2Fy Zy50b3BdCisgICAgICAgICAgICAgICAgICAgICAgICk7CisgICAgICAgICAg ICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHJldHVybiAhYXJnLmluU2No ZW1hV2l0aENvbHVtbkNoZWNrLmFwcGx5KAorICAgICAgICAgICAgICAgICAg ICAgICAgIHRoaXMsIFthcmddCisgICAgICAgICAgICAgICAgICAgICAgICk7 CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0pLAorICAgICAg Ly8gQmVsb3cgZnVuY3Rpb24gd2lsbCBlbmFibGUgcmlnaHQgY2xpY2sgbWVu dSBmb3IgY3JlYXRpbmcgY29sdW1uCisgICAgICBjYW5DcmVhdGU6IGZ1bmN0 aW9uKGl0ZW1EYXRhLCBpdGVtLCBkYXRhKSB7CisgICAgICAgICAgLy8gSWYg Y2hlY2sgaXMgZmFsc2UgdGhlbiAsIHdlIHdpbGwgYWxsb3cgY3JlYXRlIG1l bnUKKyAgICAgICAgICBpZiAoZGF0YSAmJiBkYXRhLmNoZWNrID09IGZhbHNl KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgICB2YXIg dCA9IHBnQnJvd3Nlci50cmVlLCBpID0gaXRlbSwgZCA9IGl0ZW1EYXRhLCBw YXJlbnRzID0gW107CisgICAgICAgICAgLy8gVG8gaXRlcmF0ZSBvdmVyIHRy ZWUgdG8gY2hlY2sgcGFyZW50IG5vZGUKKyAgICAgICAgICB3aGlsZSAoaSkg eworICAgICAgICAgICAgLy8gSWYgaXQgaXMgc2NoZW1hIHRoZW4gYWxsb3cg dXNlciB0byBjcmVhdGUgdGFibGUKKyAgICAgICAgICAgIGlmIChfLmluZGV4 T2YoWydzY2hlbWEnXSwgZC5fdHlwZSkgPiAtMSkgeworICAgICAgICAgICAg ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVs c2UgaWYgKF8uaW5kZXhPZihbJ3ZpZXcnLCAnY29sbC12aWV3JywKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ212aWV3JywKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbGwtbXZpZXcnXSwgZC5fdHlw ZSkgPiAtMSkgeworICAgICAgICAgICAgICBwYXJlbnRzLnB1c2goZC5fdHlw ZSk7CisgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAg ICAgICAgICAgcGFyZW50cy5wdXNoKGQuX3R5cGUpOworICAgICAgICAgICAg aSA9IHQuaGFzUGFyZW50KGkpID8gdC5wYXJlbnQoaSkgOiBudWxsOworICAg ICAgICAgICAgZCA9IGkgPyB0Lml0ZW1EYXRhKGkpIDogbnVsbDsKKyAgICAg ICAgICB9CisgICAgICAgICAgLy8gSWYgbm9kZSBpcyB1bmRlciBjYXRhbG9n IHRoZW4gZG8gbm90IGFsbG93ICdjcmVhdGUnIG1lbnUKKyAgICAgICAgICBp ZiAoXy5pbmRleE9mKHBhcmVudHMsICdjYXRhbG9nJykgPiAtMSB8fAorICAg ICAgICAgICAgICBfLmluZGV4T2YocGFyZW50cywgJ2NvbGwtdmlldycpID4g LTEgfHwKKyAgICAgICAgICAgICAgXy5pbmRleE9mKHBhcmVudHMsICdjb2xs LW12aWV3JykgPiAtMSB8fAorICAgICAgICAgICAgICBfLmluZGV4T2YocGFy ZW50cywgJ212aWV3JykgPiAtMSB8fAorICAgICAgICAgICAgICBfLmluZGV4 T2YocGFyZW50cywgJ3ZpZXcnKSA+IC0xKSB7CisgICAgICAgICAgICByZXR1 cm4gZmFsc2U7CisgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJl dHVybiB0cnVlOworICAgICAgICAgIH0KKyAgICAgIH0KKyAgfSk7CisgfQor CisgIHJldHVybiBwZ0Jyb3dzZXIuTm9kZXNbJ2NvbHVtbiddOworfSk7CmRp ZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29sdW1uL3RlbXBs YXRlcy9jb2x1bW4vbWFjcm9zL3ByaXZpbGVnZS5tYWNyb3MgYi93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy90YWJsZXMvY29sdW1uL3RlbXBsYXRlcy9jb2x1bW4vbWFjcm9z L3ByaXZpbGVnZS5tYWNyb3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMC4uN2VhZmQ2MAotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL3RhYmxlcy9jb2x1bW4vdGVtcGxhdGVzL2NvbHVtbi9tYWNyb3Mv cHJpdmlsZWdlLm1hY3JvcwpAQCAtMCwwICsxLDEzIEBACit7JSBtYWNybyBB UFBMWShjb25uLCBzY2hlbWFfbmFtZSwgdGFibGVfb2JqZWN0LCBjb2x1bW5f b2JqZWN0LCByb2xlLCBwcml2cywgd2l0aF9ncmFudF9wcml2cykgLSV9Cit7 JSBpZiBwcml2cyAlfQorR1JBTlQgeyUgZm9yIHAgaW4gcHJpdnMgJX17JSBp ZiBsb29wLmluZGV4ICE9IDEgJX0sIHslIGVuZGlmICV9e3twfX0oe3tjb25u fHF0SWRlbnQoY29sdW1uX29iamVjdCl9fSl7JSBlbmRmb3IgJX0KKyBPTiB7 eyBjb25ufHF0SWRlbnQoc2NoZW1hX25hbWUsIHRhYmxlX29iamVjdCkgfX0g VE8ge3sgY29ubnxxdElkZW50KHJvbGUpIH19OworeyUgZW5kaWYgJX0KK3sl IGlmIHdpdGhfZ3JhbnRfcHJpdnMgJX0KK0dSQU5UIHslIGZvciBwIGluIHdp dGhfZ3JhbnRfcHJpdnMgJX17JSBpZiBsb29wLmluZGV4ICE9IDEgJX0sIHsl IGVuZGlmICV9e3twfX0oe3tjb25ufHF0SWRlbnQoY29sdW1uX29iamVjdCl9 fSl7JSBlbmRmb3IgJX0KKyBPTiB7eyBjb25ufHF0SWRlbnQoc2NoZW1hX25h bWUsIHRhYmxlX29iamVjdCkgfX0gVE8ge3sgY29ubnxxdElkZW50KHJvbGUp IH19IFdJVEggR1JBTlQgT1BUSU9OOworeyUgZW5kaWYgJX0KK3slLSBlbmRt YWNybyAlfQoreyUgbWFjcm8gUkVTRVRBTEwoY29ubiwgc2NoZW1hX25hbWUs IHRhYmxlX29iamVjdCwgY29sdW1uX29iamVjdCwgcm9sZSkgLSV9CitSRVZP S0UgQUxMKHt7IGNvbm58cXRJZGVudChjb2x1bW5fb2JqZWN0KSB9fSkgT04g e3sgY29ubnxxdElkZW50KHNjaGVtYV9uYW1lLCB0YWJsZV9vYmplY3QpIH19 IEZST00ge3sgY29ubnxxdElkZW50KHJvbGUpIH19OworeyUtIGVuZG1hY3Jv ICV9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvdGFibGVzL2NvbHVtbi90ZW1wbGF0ZXMvY29sdW1u L21hY3Jvcy9zZWN1cml0eS5tYWNyb3MgYi93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJs ZXMvY29sdW1uL3RlbXBsYXRlcy9jb2x1bW4vbWFjcm9zL3NlY3VyaXR5Lm1h Y3JvcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOTU4 N2MzCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVz L2NvbHVtbi90ZW1wbGF0ZXMvY29sdW1uL21hY3Jvcy9zZWN1cml0eS5tYWNy b3MKQEAgLTAsMCArMSw2IEBACit7JSBtYWNybyBBUFBMWShjb25uLCB0eXBl LCBzY2hlbWFfbmFtZSwgcGFyZW50X29iamVjdCwgY2hpbGRfb2JqZWN0LCBw cm92aWRlciwgbGFiZWwpIC0lfQorU0VDVVJJVFkgTEFCRUwgRk9SIHt7IGNv bm58cXRJZGVudChwcm92aWRlcikgfX0gT04ge3sgdHlwZSB9fSB7eyBjb25u fHF0SWRlbnQoc2NoZW1hX25hbWUsIHBhcmVudF9vYmplY3QsIGNoaWxkX29i amVjdCkgfX0gSVMge3sgbGFiZWx8cXRMaXRlcmFsIH19OworeyUtIGVuZG1h Y3JvICV9Cit7JSBtYWNybyBEUk9QKGNvbm4sIHR5cGUsIHNjaGVtYV9uYW1l LCBwYXJlbnRfb2JqZWN0LCBjaGlsZF9vYmplY3QsIHByb3ZpZGVyKSAtJX0K K1NFQ1VSSVRZIExBQkVMIEZPUiB7eyBjb25ufHF0SWRlbnQocHJvdmlkZXIp IH19IE9OIHt7IHR5cGUgfX0ge3sgY29ubnxxdElkZW50KHNjaGVtYV9uYW1l LCBwYXJlbnRfb2JqZWN0LCBjaGlsZF9vYmplY3QpIH19IElTIE5VTEw7Cit7 JS0gZW5kbWFjcm8gJX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3Rh Ymxlcy9jb25zdHJhaW50cy9fX2luaXRfXy5weSBiL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L3RhYmxlcy9jb25zdHJhaW50cy9fX2luaXRfXy5weQpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi40NzVjNzFmCi0tLSAvZGV2L251bGwK KysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2NvbnN0cmFpbnRzL19faW5p dF9fLnB5CkBAIC0wLDAgKzEsMTMzIEBACisjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIworIworIyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xz CisjCisjIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTYsIFRoZSBwZ0FkbWlu IERldmVsb3BtZW50IFRlYW0KKyMgVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNl ZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisjCisjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIworCisiIiJJbXBsZW1lbnRzIENvbnN0cmFp bnQgTm9kZSIiIgorCitmcm9tIGZsYXNrLmV4dC5iYWJlbCBpbXBvcnQgZ2V0 dGV4dAorZnJvbSBmbGFzayBpbXBvcnQgcmVuZGVyX3RlbXBsYXRlLCBtYWtl X3Jlc3BvbnNlCitmcm9tIHBnYWRtaW4uYnJvd3Nlci5jb2xsZWN0aW9uIGlt cG9ydCBDb2xsZWN0aW9uTm9kZU1vZHVsZQoraW1wb3J0IHBnYWRtaW4uYnJv d3Nlci5zZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMuZGF0YWJhc2VzIGFzIGRhdGFi YXNlCitmcm9tIHBnYWRtaW4udXRpbHMuYWpheCBpbXBvcnQgbWFrZV9qc29u X3Jlc3BvbnNlLCBcCisgICAgIG1ha2VfcmVzcG9uc2UgYXMgYWpheF9yZXNw b25zZQorZnJvbSAudHlwZSBpbXBvcnQgQ29uc3RyYWludFJlZ2lzdHJ5CisK KworY2xhc3MgQ29uc3RyYWludHNNb2R1bGUoQ29sbGVjdGlvbk5vZGVNb2R1 bGUpOgorICAgICIiIgorICAgIGNsYXNzIENvbnN0cmFpbnRzTW9kdWxlKENv bGxlY3Rpb25Ob2RlTW9kdWxlKQorCisgICAgICAgIEEgbW9kdWxlIGNsYXNz IGZvciBDb25zdHJhaW50IG5vZGUgZGVyaXZlZCBmcm9tIENvbGxlY3Rpb25O b2RlTW9kdWxlLgorCisgICAgTWV0aG9kczoKKyAgICAtLS0tLS0tCisgICAg KiBfX2luaXRfXygqYXJncywgKiprd2FyZ3MpCisgICAgICAtIE1ldGhvZCBp cyB1c2VkIHRvIGluaXRpYWxpemUgdGhlIENvbnN0cmFpbnRzTW9kdWxlIGFu ZCBpdCdzIGJhc2UgbW9kdWxlLgorCisgICAgKiBnZXRfbm9kZXMoZ2lkLCBz aWQsIGRpZCkKKyAgICAgIC0gTWV0aG9kIGlzIHVzZWQgdG8gZ2VuZXJhdGUg dGhlIGJyb3dzZXIgY29sbGVjdGlvbiBub2RlLgorCisgICAgKiBub2RlX2lu b2RlKCkKKyAgICAgIC0gTWV0aG9kIGlzIG92ZXJyaWRkZW4gZnJvbSBpdHMg YmFzZSBjbGFzcyB0byBtYWtlIHRoZSBub2RlIGFzIGxlYWYgbm9kZS4KKwor ICAgICogc2NyaXB0X2xvYWQoKQorICAgICAgLSBMb2FkIHRoZSBtb2R1bGUg c2NyaXB0IGZvciBjb25zdHJhaW50IG5vZGUsIHdoZW4gYW55IG9mIHRoZSBk YXRhYmFzZSBub2RlIGlzCisgICAgICAgIGluaXRpYWxpemVkLgorICAgICIi IgorCisgICAgTk9ERV9UWVBFID0gJ2NvbnN0cmFpbnRzJworICAgIENPTExF Q1RJT05fTEFCRUwgPSBnZXR0ZXh0KCJDb25zdHJhaW50cyIpCisKKyAgICBk ZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAg c2VsZi5taW5fdmVyID0gTm9uZQorICAgICAgICBzZWxmLm1heF92ZXIgPSBO b25lCisgICAgICAgIHN1cGVyKENvbnN0cmFpbnRzTW9kdWxlLCBzZWxmKS5f X2luaXRfXygqYXJncywgKiprd2FyZ3MpCisKKyAgICBkZWYgZ2V0X25vZGVz KHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRpZCk6CisgICAgICAgICIi IgorICAgICAgICBHZW5lcmF0ZSB0aGUgY29sbGVjdGlvbiBub2RlCisgICAg ICAgICIiIgorICAgICAgICB5aWVsZCBzZWxmLmdlbmVyYXRlX2Jyb3dzZXJf Y29sbGVjdGlvbl9ub2RlKHRpZCkKKworICAgIEBwcm9wZXJ0eQorICAgIGRl ZiBzY3JpcHRfbG9hZChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIExv YWQgdGhlIG1vZHVsZSBzY3JpcHQgZm9yIGNvbnN0cmFpbnRzLCB3aGVuIGFu eSBvZiB0aGUgdGFibGUgbm9kZSBpcworICAgICAgICBpbml0aWFsaXplZC4K KyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBkYXRhYmFzZS5EYXRhYmFz ZU1vZHVsZS5OT0RFX1RZUEUKKworYmx1ZXByaW50ID0gQ29uc3RyYWludHNN b2R1bGUoX19uYW1lX18pCisKKworQGJsdWVwcmludC5yb3V0ZSgnL25vZGVz LzxpbnQ6Z2lkPi88aW50OnNpZD4vPGludDpkaWQ+LzxpbnQ6c2NpZD4vPGlu dDp0aWQ+LycpCitkZWYgbm9kZXMoKiprd2FyZ3MpOgorICAgICIiIgorICAg IFJldHVybnMgYWxsIGNvbnN0cmFpbnQgYXMgYSB0cmVlIG5vZGUuCisKKyAg ICBBcmdzOgorICAgICAgKiprd2FyZ3M6CisKKyAgICBSZXR1cm5zOgorCisg ICAgIiIiCisKKyAgICBjbWQgPSB7ImNtZCI6ICJub2RlcyJ9CisgICAgcmVz ID0gW10KKyAgICBmb3IgbmFtZSBpbiBDb25zdHJhaW50UmVnaXN0cnkucmVn aXN0cnk6CisgICAgICAgIG1vZHVsZSA9IChDb25zdHJhaW50UmVnaXN0cnku cmVnaXN0cnlbbmFtZV0pWydub2RldmlldyddCisgICAgICAgIHZpZXcgPSBt b2R1bGUoKipjbWQpCisgICAgICAgIHJlcyA9IHJlcyArIHZpZXcuZ2V0X25v ZGVzKCoqa3dhcmdzKQorCisgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25z ZSgKKyAgICAgICAgICAgICAgICBkYXRhPXJlcywKKyAgICAgICAgICAgICAg ICBzdGF0dXM9MjAwCisgICAgICAgICAgICAgICAgKQorCisKK0BibHVlcHJp bnQucm91dGUoJy9vYmovPGludDpnaWQ+LzxpbnQ6c2lkPi88aW50OmRpZD4v PGludDpzY2lkPi88aW50OnRpZD4vJykKK2RlZiBwcm9wbGlzdCgqKmt3YXJn cyk6CisgICAgIiIiCisgICAgUmV0dXJucyBhbGwgY29uc3RyYWludCB3aXRo IHByb3BlcnRpZXMuCisgICAgQXJnczoKKyAgICAgICoqa3dhcmdzOgorCisg ICAgUmV0dXJuczoKKworICAgICIiIgorCisgICAgY21kID0geyJjbWQiOiAi b2JqIn0KKyAgICByZXMgPSBbXQorICAgIGZvciBuYW1lIGluIENvbnN0cmFp bnRSZWdpc3RyeS5yZWdpc3RyeToKKyAgICAgICAgbW9kdWxlID0gKENvbnN0 cmFpbnRSZWdpc3RyeS5yZWdpc3RyeVtuYW1lXSlbJ25vZGV2aWV3J10KKyAg ICAgICAgdmlldyA9IG1vZHVsZSgqKmNtZCkKKyAgICAgICAgcmVzID0gcmVz ICsgdmlldy5nZXRfbm9kZV9saXN0KCoqa3dhcmdzKQorCisgICAgcmV0dXJu IGFqYXhfcmVzcG9uc2UoCisgICAgICAgICAgICAgICAgcmVzcG9uc2U9cmVz LAorICAgICAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAgICAgICAgICAg ICApCisKKworQGJsdWVwcmludC5yb3V0ZSgnL21vZHVsZS5qcycpCitkZWYg bW9kdWxlX2pzKCk6CisgICAgIiIiCisgICAgICBUaGlzIHByb3BlcnR5IGRl ZmluZXMgd2hldGhlciBqYXZhc2NyaXB0IGV4aXN0cyBmb3IgdGhpcyBub2Rl LgorCisgICAgIiIiCisgICAgcmV0dXJuIG1ha2VfcmVzcG9uc2UoCisgICAg ICAgICAgICByZW5kZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAgICAgImNv bnN0cmFpbnRzL2pzL2NvbnN0cmFpbnRzLmpzIiwKKyAgICAgICAgICAgICAg ICBfPWdldHRleHQsCisgICAgICAgICAgICAgICAgY29uc3RyYWludHM9Wwor ICAgICAgICAgICAgICAgICAgKENvbnN0cmFpbnRSZWdpc3RyeS5yZWdpc3Ry eVtuXSlbJ2JsdWVwcmludCddLk5PREVfVFlQRSBcCisgICAgICAgICAgICAg ICAgICBmb3IgbiBpbiBDb25zdHJhaW50UmVnaXN0cnkucmVnaXN0cnkKKyAg ICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICApLAorICAgICAg ICAgICAgMjAwLCB7J0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94LWph dmFzY3JpcHQnfQorICAgICAgICAgICAgKQpkaWZmIC0tZ2l0IGEvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvdGFibGVzL2NvbnN0cmFpbnRzL2NoZWNrX2NvbnN0cmFpbnQv X19pbml0X18ucHkgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29uc3RyYWlu dHMvY2hlY2tfY29uc3RyYWludC9fX2luaXRfXy5weQpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMmViODFiCi0tLSAvZGV2L251bGwK KysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2NvbnN0cmFpbnRzL2NoZWNr X2NvbnN0cmFpbnQvX19pbml0X18ucHkKQEAgLTAsMCArMSw4MzMgQEAKKyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjCisjIHBnQWRtaW4gNCAt IFBvc3RncmVTUUwgVG9vbHMKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDEzIC0g MjAxNiwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorIyBUaGlzIHNv ZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2Vu Y2UKKyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyIiIklt cGxlbWVudHMgdGhlIENoZWNrIENvbnN0cmFpbnQgTW9kdWxlLiIiIgorCitp bXBvcnQganNvbgorZnJvbSBmbGFzayBpbXBvcnQgcmVuZGVyX3RlbXBsYXRl LCBtYWtlX3Jlc3BvbnNlLCByZXF1ZXN0LCBqc29uaWZ5Citmcm9tIGZsYXNr LmV4dC5iYWJlbCBpbXBvcnQgZ2V0dGV4dCBhcyBfCitmcm9tIHBnYWRtaW4u dXRpbHMuYWpheCBpbXBvcnQgbWFrZV9qc29uX3Jlc3BvbnNlLCBcCisgICAg bWFrZV9yZXNwb25zZSBhcyBhamF4X3Jlc3BvbnNlLCBpbnRlcm5hbF9zZXJ2 ZXJfZXJyb3IKK2Zyb20gcGdhZG1pbi5icm93c2VyLnV0aWxzIGltcG9ydCBQ R0NoaWxkTm9kZVZpZXcKK2Zyb20gcGdhZG1pbi5icm93c2VyLmNvbGxlY3Rp b24gaW1wb3J0IENvbGxlY3Rpb25Ob2RlTW9kdWxlCitpbXBvcnQgcGdhZG1p bi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy5kYXRhYmFzZXMgYXMg ZGF0YWJhc2UKK2Zyb20gcGdhZG1pbi51dGlscy5hamF4IGltcG9ydCBwcmVj b25kaXRpb25fcmVxdWlyZWQKK2Zyb20gcGdhZG1pbi51dGlscy5kcml2ZXIg aW1wb3J0IGdldF9kcml2ZXIKK2Zyb20gY29uZmlnIGltcG9ydCBQR19ERUZB VUxUX0RSSVZFUgorZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHdyYXBzCitmcm9t IHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMuZGF0YWJh c2VzLnNjaGVtYXMudGFibGVzLmNvbnN0cmFpbnRzLnR5cGUgXAorICAgIGlt cG9ydCBDb25zdHJhaW50UmVnaXN0cnksIENvbnN0cmFpbnRUeXBlTW9kdWxl CisKKworY2xhc3MgQ2hlY2tDb25zdHJhaW50TW9kdWxlKENvbGxlY3Rpb25O b2RlTW9kdWxlKToKKyAgICAiIiIKKyAgICBjbGFzcyBDaGVja0NvbnN0cmFp bnRNb2R1bGUoQ29sbGVjdGlvbk5vZGVNb2R1bGUpOgorCisgICAgICAgIFRo aXMgY2xhc3MgcmVwcmVzZW50cyBUaGUgQ2hlY2sgQ29uc3RyYWludCBNb2R1 bGUuCisKKyAgICBNZXRob2RzOgorICAgIC0tLS0tLS0KKyAgICAqIF9faW5p dF9fKCphcmdzLCAqKmt3YXJncykKKyAgICAgIC0gSW5pdGlhbGl6ZSB0aGUg Q2hlY2sgQ29uc3RyYWludCBNb2R1bGUuCisKKyAgICAqIGdldF9ub2Rlcyhn aWQsIHNpZCwgZGlkLCBzY2lkKQorICAgICAgLSBHZW5lcmF0ZSB0aGUgQ2hl Y2sgQ29uc3RyYWludCBjb2xsZWN0aW9uIG5vZGUuCisKKyAgICAqIG5vZGVf aW5vZGUoZ2lkLCBzaWQsIGRpZCwgc2NpZCkKKyAgICAgIC0gUmV0dXJucyBD aGVjayBDb25zdHJhaW50IG5vZGUgYXMgbGVhZiBub2RlLgorCisgICAgKiBz Y3JpcHRfbG9hZCgpCisgICAgICAtIExvYWQgdGhlIG1vZHVsZSBzY3JpcHQg Zm9yIHRoZSBDaGVjayBDb25zdHJhaW50LCB3aGVuIGFueSBvZiB0aGUKKyAg ICAgICAgQ2hlY2sgbm9kZSBpcyBpbml0aWFsaXplZC4KKyAgICAiIiIKKyAg ICBOT0RFX1RZUEUgPSAnY2hlY2tfY29uc3RyYWludHMnCisgICAgQ09MTEVD VElPTl9MQUJFTCA9IF8oIkNoZWNrIENvbnN0cmFpbnRzIikKKworICAgIGRl ZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICBz dXBlcihDaGVja0NvbnN0cmFpbnRNb2R1bGUsIHNlbGYpLl9faW5pdF9fKCph cmdzLCAqKmt3YXJncykKKyAgICAgICAgc2VsZi5taW5fdmVyID0gTm9uZQor ICAgICAgICBzZWxmLm1heF92ZXIgPSBOb25lCisKKyAgICBkZWYgZ2V0X25v ZGVzKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIGRvaWQpOgorICAgICAg ICAiIiIKKyAgICAgICAgR2VuZXJhdGUgdGhlIENoZWNrIENvbnN0cmFpbnQg Y29sbGVjdGlvbiBub2RlLgorICAgICAgICAiIiIKKyAgICAgICAgeWllbGQg c2VsZi5nZW5lcmF0ZV9icm93c2VyX2NvbGxlY3Rpb25fbm9kZShkb2lkKQor CisgICAgQHByb3BlcnR5CisgICAgZGVmIG5vZGVfaW5vZGUoc2VsZik6Cisg ICAgICAgICIiIgorICAgICAgICBSZXR1cm5zIENoZWNrIENvbnN0cmFpbnQg bm9kZSBhcyBsZWFmIG5vZGUuCisgICAgICAgICIiIgorICAgICAgICByZXR1 cm4gRmFsc2UKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBzY3JpcHRfbG9h ZChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIExvYWQgdGhlIG1vZHVs ZSBzY3JpcHQgZm9yIHRoZSBDaGVjayBDb25zdHJhaW50LCB3aGVuIGFueSBv ZiB0aGUKKyAgICAgICAgQ2hlY2sgbm9kZSBpcyBpbml0aWFsaXplZC4KKyAg ICAgICAgIiIiCisgICAgICAgIHJldHVybiBkYXRhYmFzZS5EYXRhYmFzZU1v ZHVsZS5OT0RFX1RZUEUKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBjc3Nz bmlwcGV0cyhzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFJldHVybnMg YSBzbmlwcGV0IG9mIGNzcyB0byBpbmNsdWRlIGluIHRoZSBwYWdlCisgICAg ICAgICIiIgorICAgICAgICByZXR1cm4gWworICAgICAgICAgICAgICAgIHJl bmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgICAgICAgICAgICAgImNoZWNrX2Nv bnN0cmFpbnQvY3NzL2NoZWNrX2NvbnN0cmFpbnQuY3NzIiwKKyAgICAgICAg ICAgICAgICAgICAgbm9kZV90eXBlPXNlbGYubm9kZV90eXBlCisgICAgICAg ICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBdCisKKworYmx1ZXBy aW50ID0gQ2hlY2tDb25zdHJhaW50TW9kdWxlKF9fbmFtZV9fKQorCisKK2Ns YXNzIENoZWNrQ29uc3RyYWludFZpZXcoUEdDaGlsZE5vZGVWaWV3KToKKyAg ICAiIiIKKyAgICBjbGFzcyBDaGVja0NvbnN0cmFpbnRWaWV3KFBHQ2hpbGRO b2RlVmlldyk6CisKKyAgICBUaGlzIGNsYXNzIGluaGVyaXRzIFBHQ2hpbGRO b2RlVmlldyB0byBnZXQgdGhlIGRpZmZlcmVudCByb3V0ZXMgZm9yCisgICAg dGhlIG1vZHVsZS4KKworICAgIFRoZSBjbGFzcyBpcyByZXNwb25zaWJsZSB0 byBDcmVhdGUsIFJlYWQsIFVwZGF0ZSBhbmQgRGVsZXRlIG9wZXJhdGlvbnMg Zm9yCisgICAgdGhlIENoZWNrIENvbnN0cmFpbnQuCisKKyAgICBNZXRob2Rz OgorICAgIC0tLS0tLS0KKworICAgICogbW9kdWxlX2pzKCk6CisgICAgICAt IExvYWQgSlMgZmlsZSAoY2hlY2stY29uc3RyYWludHMuanMpIGZvciB0aGlz IG1vZHVsZS4KKworICAgICogY2hlY2tfcHJlY29uZGl0aW9uKGYpOgorICAg ICAgLSBXb3JrcyBhcyBhIGRlY29yYXRvci4KKyAgICAgIC0gIENoZWNrcyBk YXRhYmFzZSBjb25uZWN0aW9uIHN0YXR1cy4KKyAgICAgIC0gIEF0dGFjaCBj b25uZWN0aW9uIG9iamVjdCBhbmQgdGVtcGxhdGUgcGF0aC4KKworICAgICog bGlzdChnaWQsIHNpZCwgZGlkLCBzY2lkLCBkb2lkKToKKyAgICAgIC0gTGlz dCB0aGUgQ2hlY2sgQ29uc3RyYWludHMuCisKKyAgICAqIG5vZGVzKGdpZCwg c2lkLCBkaWQsIHNjaWQpOgorICAgICAgLSBSZXR1cm5zIGFsbCB0aGUgQ2hl Y2sgQ29uc3RyYWludHMgdG8gZ2VuZXJhdGUgTm9kZXMgaW4gdGhlIGJyb3dz ZXIuCisKKyAgICAqIHByb3BlcnRpZXMoZ2lkLCBzaWQsIGRpZCwgc2NpZCwg ZG9pZCk6CisgICAgICAtIFJldHVybnMgdGhlIENoZWNrIENvbnN0cmFpbnQg cHJvcGVydGllcy4KKworICAgICogY3JlYXRlKGdpZCwgc2lkLCBkaWQsIHNj aWQpOgorICAgICAgLSBDcmVhdGVzIGEgbmV3IENoZWNrIENvbnN0cmFpbnQg b2JqZWN0LgorCisgICAgKiB1cGRhdGUoZ2lkLCBzaWQsIGRpZCwgc2NpZCwg ZG9pZCk6CisgICAgICAtIFVwZGF0ZXMgdGhlIENoZWNrIENvbnN0cmFpbnQg b2JqZWN0LgorCisgICAgKiBkZWxldGUoZ2lkLCBzaWQsIGRpZCwgc2NpZCwg ZG9pZCk6CisgICAgICAtIERyb3BzIHRoZSBDaGVjayBDb25zdHJhaW50IG9i amVjdC4KKworICAgICogc3FsKGdpZCwgc2lkLCBkaWQsIHNjaWQsIGRvaWQ9 Tm9uZSk6CisgICAgICAtIFJldHVybnMgdGhlIFNRTCBmb3IgdGhlIENoZWNr IENvbnN0cmFpbnQgb2JqZWN0LgorCisgICAgKiBtc3FsKGdpZCwgc2lkLCBk aWQsIHNjaWQsIGRvaWQ9Tm9uZSk6CisgICAgICAtIFJldHVybnMgdGhlIG1v ZGlmaWVkIFNRTC4KKworICAgICogZ2V0X3NxbChnaWQsIHNpZCwgZGF0YSwg c2NpZCwgdGlkPU5vbmUpOgorICAgICAgLSBHZW5lcmF0ZXMgdGhlIFNRTCBz dGF0ZW1lbnRzIHRvIGNyZWF0ZS91cGRhdGUgdGhlIENoZWNrIENvbnN0cmFp bnQuCisgICAgICAgIG9iamVjdC4KKworICAgICogZGVwZW5kZW50cyhnaWQs IHNpZCwgZGlkLCBzY2lkLCB0aWQsIGNpZCk6CisgICAgICAtIFJldHVybnMg dGhlIGRlcGVuZGVudHMgZm9yIHRoZSBDaGVjayBDb25zdHJhaW50IG9iamVj dC4KKworICAgICogZGVwZW5kZW5jaWVzKGdpZCwgc2lkLCBkaWQsIHNjaWQs IHRpZCwgY2lkKToKKyAgICAgIC0gUmV0dXJucyB0aGUgZGVwZW5kZW5jaWVz IGZvciB0aGUgQ2hlY2sgQ29uc3RyYWludCBvYmplY3QuCisKKyAgICAqIHZh bGlkYXRlX2NoZWNrX2NvbnN0cmFpbnQoZ2lkLCBzaWQsIGRpZCwgc2NpZCwg dGlkLCBjaWQpOgorICAgICAgLSBWYWxpZGF0ZSBjaGVjayBjb25zdHJhaW50 LgorICAgICIiIgorICAgIG5vZGVfdHlwZSA9IGJsdWVwcmludC5ub2RlX3R5 cGUKKworICAgIHBhcmVudF9pZHMgPSBbCisgICAgICAgIHsndHlwZSc6ICdp bnQnLCAnaWQnOiAnZ2lkJ30sCisgICAgICAgIHsndHlwZSc6ICdpbnQnLCAn aWQnOiAnc2lkJ30sCisgICAgICAgIHsndHlwZSc6ICdpbnQnLCAnaWQnOiAn ZGlkJ30sCisgICAgICAgIHsndHlwZSc6ICdpbnQnLCAnaWQnOiAnc2NpZCd9 LAorICAgICAgICB7J3R5cGUnOiAnaW50JywgJ2lkJzogJ3RpZCd9CisgICAg XQorICAgIGlkcyA9IFsKKyAgICAgICAgeyd0eXBlJzogJ2ludCcsICdpZCc6 ICdjaWQnfQorICAgIF0KKworICAgIG9wZXJhdGlvbnMgPSBkaWN0KHsKKyAg ICAgICAgJ29iaic6IFsKKyAgICAgICAgICAgIHsnZ2V0JzogJ3Byb3BlcnRp ZXMnLCAnZGVsZXRlJzogJ2RlbGV0ZScsICdwdXQnOiAndXBkYXRlJ30sCisg ICAgICAgICAgICB7J2dldCc6ICdsaXN0JywgJ3Bvc3QnOiAnY3JlYXRlJ30K KyAgICAgICAgXSwKKyAgICAgICAgJ2RlbGV0ZSc6IFt7J2RlbGV0ZSc6ICdk ZWxldGUnfV0sCisgICAgICAgICdjaGlsZHJlbic6IFt7J2dldCc6ICdjaGls ZHJlbid9XSwKKyAgICAgICAgJ25vZGVzJzogW3snZ2V0JzogJ25vZGUnfSwg eydnZXQnOiAnbm9kZXMnfV0sCisgICAgICAgICdzcWwnOiBbeydnZXQnOiAn c3FsJ31dLAorICAgICAgICAnbXNxbCc6IFt7J2dldCc6ICdtc3FsJ30sIHsn Z2V0JzogJ21zcWwnfV0sCisgICAgICAgICdzdGF0cyc6IFt7J2dldCc6ICdz dGF0aXN0aWNzJ31dLAorICAgICAgICAnZGVwZW5kZW5jeSc6IFt7J2dldCc6 ICdkZXBlbmRlbmNpZXMnfV0sCisgICAgICAgICdkZXBlbmRlbnQnOiBbeydn ZXQnOiAnZGVwZW5kZW50cyd9XSwKKyAgICAgICAgJ21vZHVsZS5qcyc6IFt7 fSwge30sIHsnZ2V0JzogJ21vZHVsZV9qcyd9XSwKKyAgICAgICAgJ3ZhbGlk YXRlJzogW3snZ2V0JzogJ3ZhbGlkYXRlX2NoZWNrX2NvbnN0cmFpbnQnfV0s CisgICAgfSkKKworICAgIGRlZiBtb2R1bGVfanMoc2VsZik6CisgICAgICAg ICIiIgorICAgICAgICBMb2FkIEpTIGZpbGUgKGNoZWNrX2NvbnN0cmFpbnQu anMpIGZvciB0aGlzIG1vZHVsZS4KKyAgICAgICAgIiIiCisgICAgICAgIHJl dHVybiBtYWtlX3Jlc3BvbnNlKAorICAgICAgICAgICAgcmVuZGVyX3RlbXBs YXRlKAorICAgICAgICAgICAgICAgICJjaGVja19jb25zdHJhaW50L2pzL2No ZWNrX2NvbnN0cmFpbnQuanMiLAorICAgICAgICAgICAgICAgIF89XworICAg ICAgICAgICAgKSwKKyAgICAgICAgICAgIDIwMCwgeydDb250ZW50LVR5cGUn OiAnYXBwbGljYXRpb24veC1qYXZhc2NyaXB0J30KKyAgICAgICAgKQorCisg ICAgZGVmIGNoZWNrX3ByZWNvbmRpdGlvbihmKToKKyAgICAgICAgIiIiCisg ICAgICAgIFdvcmtzIGFzIGEgZGVjb3JhdG9yLgorICAgICAgICBDaGVja3Mg ZGF0YWJhc2UgY29ubmVjdGlvbiBzdGF0dXMuCisgICAgICAgIEF0dGFjaCBj b25uZWN0aW9uIG9iamVjdCBhbmQgdGVtcGxhdGUgcGF0aC4KKyAgICAgICAg IiIiCisgICAgICAgIEB3cmFwcyhmKQorICAgICAgICBkZWYgd3JhcCgqYXJn cywgKiprd2FyZ3MpOgorICAgICAgICAgICAgc2VsZiA9IGFyZ3NbMF0KKyAg ICAgICAgICAgIGRyaXZlciA9IGdldF9kcml2ZXIoUEdfREVGQVVMVF9EUklW RVIpCisgICAgICAgICAgICBzZWxmLm1hbmFnZXIgPSBkcml2ZXIuY29ubmVj dGlvbl9tYW5hZ2VyKGt3YXJnc1snc2lkJ10pCisgICAgICAgICAgICBzZWxm LmNvbm4gPSBzZWxmLm1hbmFnZXIuY29ubmVjdGlvbihkaWQ9a3dhcmdzWydk aWQnXSkKKyAgICAgICAgICAgIHNlbGYucXRJZGVudCA9IGRyaXZlci5xdElk ZW50CisKKyAgICAgICAgICAgICMgSWYgREIgbm90IGNvbm5lY3RlZCB0aGVu IHJldHVybiBlcnJvciB0byBicm93c2VyCisgICAgICAgICAgICBpZiBub3Qg c2VsZi5jb25uLmNvbm5lY3RlZCgpOgorICAgICAgICAgICAgICAgIHJldHVy biBwcmVjb25kaXRpb25fcmVxdWlyZWQoCisgICAgICAgICAgICAgICAgICAg IF8oIkNvbm5lY3Rpb24gdG8gdGhlIHNlcnZlciBoYXMgYmVlbiBsb3N0ISIp CisgICAgICAgICAgICAgICAgKQorCisgICAgICAgICAgICB2ZXIgPSBzZWxm Lm1hbmFnZXIudmVyc2lvbgorCisgICAgICAgICAgICAjIHdlIHdpbGwgc2V0 IHRlbXBsYXRlIHBhdGggZm9yIHNxbCBzY3JpcHRzCisgICAgICAgICAgICBp ZiB2ZXIgPj0gOTAyMDA6CisgICAgICAgICAgICAgICAgc2VsZi50ZW1wbGF0 ZV9wYXRoID0gJ2NoZWNrX2NvbnN0cmFpbnQvc3FsLzkuMl9wbHVzJworICAg ICAgICAgICAgZWxpZiB2ZXIgPj0gOTAxMDA6CisgICAgICAgICAgICAgICAg c2VsZi50ZW1wbGF0ZV9wYXRoID0gJ2NoZWNrX2NvbnN0cmFpbnQvc3FsLzku MV9wbHVzJworCisgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUo Ii8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dldF9wYXJlbnQuc3Fs J10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpZD1r d2FyZ3NbJ3RpZCddKQorICAgICAgICAgICAgc3RhdHVzLCByc2V0ID0gc2Vs Zi5jb25uLmV4ZWN1dGVfMmRhcnJheShTUUwpCisgICAgICAgICAgICBpZiBu b3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9z ZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cnNldCkKKworICAgICAgICAgICAgc2Vs Zi5zY2hlbWEgPSByc2V0Wydyb3dzJ11bMF1bJ3NjaGVtYSddCisgICAgICAg ICAgICBzZWxmLnRhYmxlID0gcnNldFsncm93cyddWzBdWyd0YWJsZSddCisK KyAgICAgICAgICAgIHJldHVybiBmKCphcmdzLCAqKmt3YXJncykKKworICAg ICAgICByZXR1cm4gd3JhcAorCisgICAgZGVmIGVuZF90cmFuc2FjdGlvbihz ZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgICAgICBFbmQgZGF0YWJhc2Ug dHJhbnNhY3Rpb24uCisgICAgICAgIFJldHVybnM6CisKKyAgICAgICAgIiIi CisgICAgICAgIFNRTCA9ICJFTkQ7IgorICAgICAgICBzZWxmLmNvbm4uZXhl Y3V0ZV9zY2FsYXIoU1FMKQorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgor ICAgIGRlZiBsaXN0KHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRpZCwg Y2lkPU5vbmUpOgorICAgICAgICAiIiIKKyAgICAgICAgTGlzdCB0aGUgQ2hl Y2sgQ29uc3RyYWludHMuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAg IGdpZDogU2VydmVyIEdyb3VwIElkCisgICAgICAgICAgICBzaWQ6IFNlcnZl ciBJZAorICAgICAgICAgICAgZGlkOiBEYXRhYmFzZSBJZAorICAgICAgICAg ICAgc2NpZDogU2NoZW1hIElkCisgICAgICAgICAgICB0aWQ6IFRhYmxlIElk CisgICAgICAgICAgICBjaWQ6IENoZWNrIElkCisgICAgICAgICIiIgorICAg ICAgICB0cnk6CisgICAgICAgICAgICByZXMgPSBzZWxmLmdldF9ub2RlX2xp c3QoZ2lkLCBzaWQsIGRpZCwgc2NpZCwgdGlkLCBjaWQpCisgICAgICAgICAg ICByZXR1cm4gYWpheF9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICAgICAg cmVzcG9uc2U9cmVzLAorICAgICAgICAgICAgICAgICAgICBzdGF0dXM9MjAw CisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgZXhjZXB0IEV4Y2Vw dGlvbiBhcyBlOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZl cl9lcnJvcihlcnJvcm1zZz1zdHIoZSkpCisKKyAgICBAY2hlY2tfcHJlY29u ZGl0aW9uCisgICAgZGVmIGdldF9ub2RlX2xpc3Qoc2VsZiwgZ2lkLCBzaWQs IGRpZCwgc2NpZCwgdGlkLCBjaWQ9Tm9uZSk6CisgICAgICAgICIiIgorICAg ICAgICBUaGlzIGZ1bmN0aW9uIHJldHVybnMgYWxsIGNoZWNrIGNvbnN0cmFp bnRzCisgICAgICAgIG5vZGVzIHdpdGhpbiB0aGF0IGNvbGxlY3Rpb24gYXMg YSBsaXN0LgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgZ2lkOiBTZXJ2 ZXIgR3JvdXAgSUQKKyAgICAgICAgICBzaWQ6IFNlcnZlciBJRAorICAgICAg ICAgIGRpZDogRGF0YWJhc2UgSUQKKyAgICAgICAgICBzY2lkOiBTY2hlbWEg SUQKKyAgICAgICAgICB0aWQ6IFRhYmxlIElECisgICAgICAgICAgY2lkOiBD ZWhjayBjb25zdHJhaW50IElECisKKyAgICAgICAgUmV0dXJuczoKKworICAg ICAgICAiIiIKKyAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5q b2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdwcm9wZXJ0aWVzLnNxbCddKSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpZD10aWQpCisgICAg ICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChTUUwp CisKKyAgICAgICAgcmV0dXJuIHJlc1sncm93cyddCisKKyAgICBAY2hlY2tf cHJlY29uZGl0aW9uCisgICAgZGVmIG5vZGVzKHNlbGYsIGdpZCwgc2lkLCBk aWQsIHNjaWQsIHRpZCwgY2lkPU5vbmUpOgorICAgICAgICAiIiIKKyAgICAg ICAgUmV0dXJucyBhbGwgdGhlIENoZWNrIENvbnN0cmFpbnRzLgorCisgICAg ICAgIEFyZ3M6CisgICAgICAgICAgICBnaWQ6IFNlcnZlciBHcm91cCBJZAor ICAgICAgICAgICAgc2lkOiBTZXJ2ZXIgSWQKKyAgICAgICAgICAgIGRpZDog RGF0YWJhc2UgSWQKKyAgICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJZAorICAg ICAgICAgICAgdGlkOiBUYWJsZSBJZAorICAgICAgICAgICAgY2lkOiBDaGVj ayBjb25zdHJhaW50IElkLgorICAgICAgICAiIiIKKyAgICAgICAgdHJ5Ogor ICAgICAgICAgICAgcmVzID0gc2VsZi5nZXRfbm9kZXMoZ2lkLCBzaWQsIGRp ZCwgc2NpZCwgdGlkLCBjaWQpCisgICAgICAgICAgICByZXR1cm4gbWFrZV9q c29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgICAgICAgICBkYXRhPXJlcywK KyAgICAgICAgICAgICAgICAgICAgc3RhdHVzPTIwMAorICAgICAgICAgICAg ICAgICAgICApCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAg ICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jt c2c9c3RyKGUpKQorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRl ZiBnZXRfbm9kZXMoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgdGlkLCBj aWQ9Tm9uZSk6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9u IHJldHVybnMgYWxsIGV2ZW50IGNoZWNrIGNvbnN0cmFpbnQgYXMgYSBsaXN0 LgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3Jv dXAgSUQKKyAgICAgICAgICBzaWQ6IFNlcnZlciBJRAorICAgICAgICAgIGRp ZDogRGF0YWJhc2UgSUQKKyAgICAgICAgICBzY2lkOiBTY2hlbWEgSUQKKyAg ICAgICAgICB0aWQ6IFRhYmxlIElECisgICAgICAgICAgY2lkOiBDaGVjayBj b25zdHJhaW50IElECisKKyAgICAgICAgUmV0dXJuczoKKworICAgICAgICAi IiIKKyAgICAgICAgcmVzID0gW10KKyAgICAgICAgU1FMID0gcmVuZGVyX3Rl bXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25vZGVzLnNxbCdd KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpZD10aWQpCisg ICAgICAgIHN0YXR1cywgcnNldCA9IHNlbGYuY29ubi5leGVjdXRlXzJkYXJy YXkoU1FMKQorCisgICAgICAgIGZvciByb3cgaW4gcnNldFsncm93cyddOgor ICAgICAgICAgICAgaWYgImNvbnZhbGlkYXRlZCIgaW4gcm93IGFuZCByb3db ImNvbnZhbGlkYXRlZCJdOgorICAgICAgICAgICAgICAgIGljb24gPSAiaWNv bi1jaGVja19jb25zdHJhaW50c19iYWQiCisgICAgICAgICAgICAgICAgdmFs aWQgPSBGYWxzZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAg ICBpY29uID0gImljb24tY2hlY2tfY29uc3RyYWludHMiCisgICAgICAgICAg ICAgICAgdmFsaWQgPSBUcnVlCisgICAgICAgICAgICByZXMuYXBwZW5kKAor ICAgICAgICAgICAgICAgICAgICBzZWxmLmJsdWVwcmludC5nZW5lcmF0ZV9i cm93c2VyX25vZGUoCisgICAgICAgICAgICAgICAgICAgICAgICByb3dbJ29p ZCddLAorICAgICAgICAgICAgICAgICAgICAgICAgdGlkLAorICAgICAgICAg ICAgICAgICAgICAgICAgcm93WyduYW1lJ10sCisgICAgICAgICAgICAgICAg ICAgICAgICBpY29uPWljb24sCisgICAgICAgICAgICAgICAgICAgICAgICB2 YWxpZD12YWxpZAorICAgICAgICAgICAgICAgICAgICApKQorICAgICAgICBy ZXR1cm4gcmVzCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVm IHByb3BlcnRpZXMoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgdGlkLCBj aWQpOgorICAgICAgICAiIiIKKyAgICAgICAgUmV0dXJucyB0aGUgQ2hlY2sg Q29uc3RyYWludHMgcHJvcGVydHkuCisKKyAgICAgICAgQXJnczoKKyAgICAg ICAgICAgIGdpZDogU2VydmVyIEdyb3VwIElkCisgICAgICAgICAgICBzaWQ6 IFNlcnZlciBJZAorICAgICAgICAgICAgZGlkOiBEYXRhYmFzZSBJZAorICAg ICAgICAgICAgc2NpZDogU2NoZW1hIElkCisgICAgICAgICAgICB0aWQ6IENo ZWNrIElkCisgICAgICAgICAgICBjaWQ6IENoZWNrIENvbnN0cmFpbnQgSWQK KyAgICAgICAgIiIiCisKKyAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRl KCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb3BlcnRpZXMuc3FsJ10p LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlkPXRpZCwgY2lk PWNpZCkKKyAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0 ZV9kaWN0KFNRTCkKKyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAg ICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVz KQorCisgICAgICAgIGRhdGEgPSByZXNbJ3Jvd3MnXVswXQorICAgICAgICBy ZXR1cm4gYWpheF9yZXNwb25zZSgKKyAgICAgICAgICAgIHJlc3BvbnNlPWRh dGEsCisgICAgICAgICAgICBzdGF0dXM9MjAwCisgICAgICAgICkKKworICAg IEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgY3JlYXRlKHNlbGYsIGdp ZCwgc2lkLCBkaWQsIHNjaWQsIHRpZCwgY2lkPU5vbmUpOgorICAgICAgICAi IiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIGNyZWF0ZSBhIHByaW1h cnkga2V5LgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgZ2lkOiBTZXJ2 ZXIgR3JvdXAgSUQKKyAgICAgICAgICBzaWQ6IFNlcnZlciBJRAorICAgICAg ICAgIGRpZDogRGF0YWJhc2UgSUQKKyAgICAgICAgICBzY2lkOiBTY2hlbWEg SUQKKyAgICAgICAgICB0aWQ6IFRhYmxlIElECisgICAgICAgICAgY2lkOiBD aGVjayBjb25zdHJhaW50IElECisKKyAgICAgICAgUmV0dXJuczoKKworICAg ICAgICAiIiIKKyAgICAgICAgcmVxdWlyZWRfYXJncyA9IFsnY29uc3JjJ10K KworICAgICAgICBkYXRhID0gcmVxdWVzdC5mb3JtIGlmIHJlcXVlc3QuZm9y bSBlbHNlIGpzb24ubG9hZHMocmVxdWVzdC5kYXRhLmRlY29kZSgpKQorCisg ICAgICAgIGZvciBrLCB2IGluIGRhdGEuaXRlbXMoKToKKyAgICAgICAgICAg IHRyeToKKyAgICAgICAgICAgICAgICBkYXRhW2tdID0ganNvbi5sb2Fkcyh2 KQorICAgICAgICAgICAgZXhjZXB0IChWYWx1ZUVycm9yLCBUeXBlRXJyb3Ip OgorICAgICAgICAgICAgICAgIGRhdGFba10gPSB2CisKKyAgICAgICAgZm9y IGFyZyBpbiByZXF1aXJlZF9hcmdzOgorICAgICAgICAgICAgaWYgYXJnIG5v dCBpbiBkYXRhIG9yIGRhdGFbYXJnXSA9PSAnJzoKKyAgICAgICAgICAgICAg ICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgICAg ICAgICBzdGF0dXM9NDAwLAorICAgICAgICAgICAgICAgICAgICBzdWNjZXNz PTAsCisgICAgICAgICAgICAgICAgICAgIGVycm9ybXNnPV8oCisgICAgICAg ICAgICAgICAgICAgICAgICAiQ291bGRuJ3QgZmluZCB0aGUgcmVxdWlyZWQg cGFyYW1ldGVyICglcykuIiAlIGFyZworICAgICAgICAgICAgICAgICAgICAp CisgICAgICAgICAgICAgICAgKQorCisgICAgICAgIGRhdGFbJ3NjaGVtYSdd ID0gc2VsZi5zY2hlbWEKKyAgICAgICAgZGF0YVsndGFibGUnXSA9IHNlbGYu dGFibGUKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaWYgJ25hbWUnIG5v dCBpbiBkYXRhIG9yIGRhdGFbJ25hbWUnXSA9PSAiIjoKKyAgICAgICAgICAg ICAgICBTUUwgPSAiQkVHSU47IgorICAgICAgICAgICAgICAgICMgU3RhcnQg dHJhbnNhY3Rpb24uCisgICAgICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBz ZWxmLmNvbm4uZXhlY3V0ZV9zY2FsYXIoU1FMKQorICAgICAgICAgICAgICAg IGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuZW5k X3RyYW5zYWN0aW9uKCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlu dGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAg ICAgICMgVGhlIGJlbG93IFNRTCB3aWxsIGV4ZWN1dGUgQ1JFQVRFIERETCBv bmx5CisgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoCisgICAg ICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ2Ny ZWF0ZS5zcWwnXSksCisgICAgICAgICAgICAgICAgZGF0YT1kYXRhCisgICAg ICAgICAgICAgICAgKQorCisgICAgICAgICAgICBzdGF0dXMsIG1zZyA9IHNl bGYuY29ubi5leGVjdXRlX3NjYWxhcihTUUwpCisgICAgICAgICAgICBpZiBu b3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgIHNlbGYuZW5kX3RyYW5zYWN0 aW9uKCkKKyAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVy X2Vycm9yKGVycm9ybXNnPW1zZykKKworICAgICAgICAgICAgaWYgJ25hbWUn IG5vdCBpbiBkYXRhIG9yIGRhdGFbJ25hbWUnXSA9PSAiIjoKKyAgICAgICAg ICAgICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAg ICAgICAgICIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAnZ2V0X29pZF93aXRoX3RyYW5zYWN0 aW9uLnNxbCddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLAor ICAgICAgICAgICAgICAgICAgICB0aWQ9dGlkKQorCisgICAgICAgICAgICAg ICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KHNxbCkK KyAgICAgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAg ICAgICAgICBzZWxmLmVuZF90cmFuc2FjdGlvbigpCisgICAgICAgICAgICAg ICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9 cmVzKQorCisgICAgICAgICAgICAgICAgc2VsZi5lbmRfdHJhbnNhY3Rpb24o KQorCisgICAgICAgICAgICAgICAgZGF0YVsnbmFtZSddID0gcmVzWydyb3dz J11bMF1bJ25hbWUnXQorCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAg ICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50 ZW1wbGF0ZV9wYXRoLCAnZ2V0X29pZC5zcWwnXSksCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHRpZD10aWQsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9ZGF0YVsnbmFtZSdd KQorICAgICAgICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4 ZWN1dGVfZGljdChzcWwpCisgICAgICAgICAgICAgICAgaWYgbm90IHN0YXR1 czoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5lbmRfdHJhbnNhY3Rpb24o KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVy X2Vycm9yKGVycm9ybXNnPXJlcykKKworICAgICAgICAgICAgaWYgImNvbnZh bGlkYXRlZCIgaW4gcmVzWydyb3dzJ11bMF0gYW5kIHJlc1sncm93cyddWzBd WyJjb252YWxpZGF0ZWQiXToKKyAgICAgICAgICAgICAgICBpY29uID0gImlj b24tY2hlY2tfY29uc3RyYWludHNfYmFkIgorICAgICAgICAgICAgICAgIHZh bGlkID0gRmFsc2UKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAg ICAgaWNvbiA9ICJpY29uLWNoZWNrX2NvbnN0cmFpbnRzIgorICAgICAgICAg ICAgICAgIHZhbGlkID0gVHJ1ZQorCisgICAgICAgICAgICBzcWwgPSByZW5k ZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ2Fs dGVyLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBkYXRhPWRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29ubj1zZWxmLmNvbm4pCisgICAgICAgICAgICBzcWwgPSBzcWwuc3Ry aXAoJ1xuJykuc3RyaXAoJyAnKQorCisgICAgICAgICAgICBpZiBzcWwgIT0g Jyc6CisgICAgICAgICAgICAgICAgc3RhdHVzLCByZXN1bHQgPSBzZWxmLmNv bm4uZXhlY3V0ZV9zY2FsYXIoc3FsKQorICAgICAgICAgICAgICAgIGlmIG5v dCBzdGF0dXM6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuZW5kX3RyYW5z YWN0aW9uKCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFs X3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXN1bHQpCisKKyAgICAgICAgICAg IHJldHVybiBqc29uaWZ5KAorICAgICAgICAgICAgICAgIG5vZGU9c2VsZi5i bHVlcHJpbnQuZ2VuZXJhdGVfYnJvd3Nlcl9ub2RlKAorICAgICAgICAgICAg ICAgICAgICByZXNbJ3Jvd3MnXVswXVsnb2lkJ10sCisgICAgICAgICAgICAg ICAgICAgIHRpZCwKKyAgICAgICAgICAgICAgICAgICAgZGF0YVsnbmFtZSdd LAorICAgICAgICAgICAgICAgICAgICBpY29uPWljb24sCisgICAgICAgICAg ICAgICAgICAgIHZhbGlkPXZhbGlkCisgICAgICAgICAgICAgICAgICAgICkK KyAgICAgICAgICAgICAgICApCisKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlv biBhcyBlOgorICAgICAgICAgICAgc2VsZi5lbmRfdHJhbnNhY3Rpb24oKQor ICAgICAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKKyAgICAg ICAgICAgICAgICBzdGF0dXM9NDAwLAorICAgICAgICAgICAgICAgIHN1Y2Nl c3M9MCwKKyAgICAgICAgICAgICAgICBlcnJvcm1zZz1lCisgICAgICAgICAg ICApCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVmIGRlbGV0 ZShzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQsIGNpZCk6CisgICAg ICAgICIiIgorICAgICAgICBEcm9wcyB0aGUgQ2hlY2sgQ29uc3RyYWludCBv YmplY3QuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIGdpZDogU2Vy dmVyIEdyb3VwIElkCisgICAgICAgICAgICBzaWQ6IFNlcnZlciBJZAorICAg ICAgICAgICAgZGlkOiBEYXRhYmFzZSBJZAorICAgICAgICAgICAgc2NpZDog U2NoZW1hIElkCisgICAgICAgICAgICB0aWQ6IENoZWNrIElkCisgICAgICAg ICAgICBjaWQ6IENoZWNrIENvbnN0cmFpbnQgSWQKKyAgICAgICAgIiIiCisg ICAgICAgIHRyeToKKyAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0 ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHJvcGVydGllcy5z cWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlk PXRpZCwgY2lkPWNpZCkKKyAgICAgICAgICAgIHN0YXR1cywgcmVzID0gc2Vs Zi5jb25uLmV4ZWN1dGVfZGljdChTUUwpCisKKyAgICAgICAgICAgIGlmIG5v dCBzdGF0dXM6CisgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3Nl cnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgICAgIGRhdGEg PSByZXNbJ3Jvd3MnXVswXQorCisgICAgICAgICAgICBTUUwgPSByZW5kZXJf dGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlbGV0 ZS5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZGF0YT1kYXRhKQorICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNv bm4uZXhlY3V0ZV9zY2FsYXIoU1FMKQorICAgICAgICAgICAgaWYgbm90IHN0 YXR1czoKKyAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVy X2Vycm9yKGVycm9ybXNnPXJlcykKKworICAgICAgICAgICAgcmV0dXJuIG1h a2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICBzdWNjZXNzPTEs CisgICAgICAgICAgICAgICAgaW5mbz1fKCJDaGVjayBDb25zdHJhaW50IGRy b3BwZWQiKSwKKyAgICAgICAgICAgICAgICBkYXRhPXsKKyAgICAgICAgICAg ICAgICAgICAgJ2lkJzogdGlkLAorICAgICAgICAgICAgICAgICAgICAnc2Np ZCc6IHNjaWQsCisgICAgICAgICAgICAgICAgICAgICdzaWQnOiBzaWQsCisg ICAgICAgICAgICAgICAgICAgICdnaWQnOiBnaWQsCisgICAgICAgICAgICAg ICAgICAgICdkaWQnOiBkaWQKKyAgICAgICAgICAgICAgICB9CisgICAgICAg ICAgICApCisKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAg ICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1z Zz1zdHIoZSkpCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVm IHVwZGF0ZShzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQsIGNpZCk6 CisgICAgICAgICIiIgorICAgICAgICBVcGRhdGVzIHRoZSBDaGVjayBDb25z dHJhaW50IG9iamVjdC4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAg Z2lkOiBTZXJ2ZXIgR3JvdXAgSWQKKyAgICAgICAgICAgIHNpZDogU2VydmVy IElkCisgICAgICAgICAgICBkaWQ6IERhdGFiYXNlIElkCisgICAgICAgICAg ICBzY2lkOiBTY2hlbWEgSWQKKyAgICAgICAgICAgIHRpZDogVGFibGUgSWQK KyAgICAgICAgICAgIGNpZDogQ2hlY2sgQ29uc3RyYWludCBJZAorICAgICAg ICAiIiIKKyAgICAgICAgZGF0YSA9IHJlcXVlc3QuZm9ybSBpZiByZXF1ZXN0 LmZvcm0gZWxzZSBqc29uLmxvYWRzKHJlcXVlc3QuZGF0YS5kZWNvZGUoKSkK KworICAgICAgICB0cnk6CisgICAgICAgICAgICBkYXRhWydzY2hlbWEnXSA9 IHNlbGYuc2NoZW1hCisgICAgICAgICAgICBkYXRhWyd0YWJsZSddID0gc2Vs Zi50YWJsZQorCisgICAgICAgICAgICBTUUwgPSBzZWxmLmdldF9zcWwoZ2lk LCBzaWQsIGRhdGEsIHNjaWQsIHRpZCwgY2lkKQorICAgICAgICAgICAgU1FM ID0gU1FMLnN0cmlwKCdcbicpLnN0cmlwKCcgJykKKyAgICAgICAgICAgIGlm IFNRTCAhPSAiIjoKKyAgICAgICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNl bGYuY29ubi5leGVjdXRlX3NjYWxhcihTUUwpCisgICAgICAgICAgICAgICAg aWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlu dGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAg ICAgICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYu dGVtcGxhdGVfcGF0aCwgJ2dldF9uYW1lLnNxbCddKSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2lkPWNpZCkKKyAgICAgICAg ICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3Qo c3FsKQorICAgICAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAg ICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJy b3Jtc2c9cmVzKQorCisgICAgICAgICAgICAgICAgaWYgImNvbnZhbGlkYXRl ZCIgaW4gcmVzWydyb3dzJ11bMF0gYW5kIHJlc1sncm93cyddWzBdWyJjb252 YWxpZGF0ZWQiXToKKyAgICAgICAgICAgICAgICAgICAgaWNvbiA9ICdpY29u LWNoZWNrX2NvbnN0cmFpbnRzXyliYWQnCisgICAgICAgICAgICAgICAgICAg IHZhbGlkID0gRmFsc2UKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAg ICAgICAgICAgICAgICBpY29uID0gJ2ljb24tY2hlY2tfY29uc3RyYWludHMn CisgICAgICAgICAgICAgICAgICAgIHZhbGlkID0gVHJ1ZQorCisgICAgICAg ICAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAg ICAgICAgICAgICAgc3VjY2Vzcz0xLAorICAgICAgICAgICAgICAgICAgICBp bmZvPSJDaGVjayBDb25zdHJhaW50IHVwZGF0ZWQiLAorICAgICAgICAgICAg ICAgICAgICBkYXRhPXsKKyAgICAgICAgICAgICAgICAgICAgICAgICdpZCc6 IGNpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICd0aWQnOiB0aWQsCisg ICAgICAgICAgICAgICAgICAgICAgICAnc2NpZCc6IHNjaWQsCisgICAgICAg ICAgICAgICAgICAgICAgICAnc2lkJzogc2lkLAorICAgICAgICAgICAgICAg ICAgICAgICAgJ2dpZCc6IGdpZCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICdkaWQnOiBkaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAnaWNvbic6 IGljb24sCisgICAgICAgICAgICAgICAgICAgICAgICAndmFsICAgIGlkJzog dmFsaWQKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg ICkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmV0dXJu IG1ha2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICAgICAgc3Vj Y2Vzcz0xLAorICAgICAgICAgICAgICAgICAgICBpbmZvPSJOb3RoaW5nIHRv IHVwZGF0ZSIsCisgICAgICAgICAgICAgICAgICAgIGRhdGE9eworICAgICAg ICAgICAgICAgICAgICAgICAgJ2lkJzogY2lkLAorICAgICAgICAgICAgICAg ICAgICAgICAgJ3RpZCc6IHRpZCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICdzY2lkJzogc2NpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICdzaWQn OiBzaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAnZ2lkJzogZ2lkLAor ICAgICAgICAgICAgICAgICAgICAgICAgJ2RpZCc6IGRpZAorICAgICAgICAg ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgKQorCisgICAgICAgIGV4 Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIHJldHVybiBpbnRl cm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKGUpKQorCisgICAgQGNo ZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBzcWwoc2VsZiwgZ2lkLCBzaWQs IGRpZCwgc2NpZCwgdGlkLCBjaWQ9Tm9uZSk6CisgICAgICAgICIiIgorICAg ICAgICBSZXR1cm5zIHRoZSBTUUwgZm9yIHRoZSBDaGVjayBDb25zdHJhaW50 IG9iamVjdC4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgZ2lkOiBT ZXJ2ZXIgR3JvdXAgSWQKKyAgICAgICAgICAgIHNpZDogU2VydmVyIElkCisg ICAgICAgICAgICBkaWQ6IERhdGFiYXNlIElkCisgICAgICAgICAgICBzY2lk OiBTY2hlbWEgSWQKKyAgICAgICAgICAgIHRpZDogVGFibGUgSWQKKyAgICAg ICAgICAgIGNpZDogQ2hlY2sgQ29uc3RyYWludCBJZAorICAgICAgICAiIiIK KworICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3Nl bGYudGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAncHJvcGVydGllcy5zcWwnXSksCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB0aWQ9dGlkLCBjaWQ9Y2lkKQorICAgICAg ICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQor ICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIGlu dGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAg ZGF0YSA9IHJlc1sncm93cyddWzBdCisgICAgICAgIGRhdGFbJ3NjaGVtYSdd ID0gc2VsZi5zY2hlbWEKKyAgICAgICAgZGF0YVsndGFibGUnXSA9IHNlbGYu dGFibGUKKworICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpv aW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAnY3JlYXRlLnNxbCddKSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGRhdGE9ZGF0YSkKKyAgICAgICAgU1FM ICs9ICJcbiIKKyAgICAgICAgU1FMICs9IHJlbmRlcl90ZW1wbGF0ZSgKKyAg ICAgICAgICAgICAgICAiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAn YWx0ZXIuc3FsJ10pLAorICAgICAgICAgICAgICAgIGRhdGE9ZGF0YSkKKwor ICAgICAgICBzcWxfaGVhZGVyID0gIi0tIENvbnN0cmFpbnQ6IHswfVxuXG4t LSAiLmZvcm1hdChkYXRhWyduYW1lJ10pCisKKyAgICAgICAgc3FsX2hlYWRl ciArPSByZW5kZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAgICAgIi8iLmpv aW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ2RlbGV0ZS5zcWwnXSksCisgICAg ICAgICAgICAgICAgZGF0YT1kYXRhKQorICAgICAgICBzcWxfaGVhZGVyICs9 ICJcbiIKKworICAgICAgICBTUUwgPSBzcWxfaGVhZGVyICsgU1FMCisKKyAg ICAgICAgcmV0dXJuIGFqYXhfcmVzcG9uc2UocmVzcG9uc2U9U1FMKQorCisg ICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBtc3FsKHNlbGYsIGdp ZCwgc2lkLCBkaWQsIHNjaWQsIHRpZCwgY2lkPU5vbmUpOgorICAgICAgICAi IiIKKyAgICAgICAgUmV0dXJucyB0aGUgbW9kaWZpZWQgU1FMLgorCisgICAg ICAgIEFyZ3M6CisgICAgICAgICAgICBnaWQ6IFNlcnZlciBHcm91cCBJZAor ICAgICAgICAgICAgc2lkOiBTZXJ2ZXIgSWQKKyAgICAgICAgICAgIGRpZDog RGF0YWJhc2UgSWQKKyAgICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJZAorICAg ICAgICAgICAgdGlkOiBUYWJsZSBJZAorICAgICAgICAgICAgY2lkOiBDaGVj ayBDb25zdHJhaW50IElkCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAg ICAgIENoZWNrIENvbnN0cmFpbnQgb2JqZWN0IGluIGpzb24gZm9ybWF0Lgor ICAgICAgICAiIiIKKyAgICAgICAgZGF0YSA9IHt9CisgICAgICAgIGZvciBr LCB2IGluIHJlcXVlc3QuYXJncy5pdGVtcygpOgorICAgICAgICAgICAgdHJ5 OgorICAgICAgICAgICAgICAgIGRhdGFba10gPSBqc29uLmxvYWRzKHYpCisg ICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgICAg ICBkYXRhW2tdID0gdgorCisgICAgICAgIGRhdGFbJ3NjaGVtYSddID0gc2Vs Zi5zY2hlbWEKKyAgICAgICAgZGF0YVsndGFibGUnXSA9IHNlbGYudGFibGUK KyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc3FsID0gc2VsZi5nZXRfc3Fs KGdpZCwgc2lkLCBkYXRhLCBzY2lkLCB0aWQsIGNpZCkKKyAgICAgICAgICAg IHNxbCA9IHNxbC5zdHJpcCgnXG4nKS5zdHJpcCgnICcpCisKKyAgICAgICAg ICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAgICAgICAg ICAgICAgIGRhdGE9c3FsLAorICAgICAgICAgICAgICAgICAgICBzdGF0dXM9 MjAwCisgICAgICAgICAgICAgICAgICAgICkKKworICAgICAgICBleGNlcHQg RXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxf c2VydmVyX2Vycm9yKGVycm9ybXNnPXN0cihlKSkKKworICAgIGRlZiBnZXRf c3FsKHNlbGYsIGdpZCwgc2lkLCBkYXRhLCBzY2lkLCB0aWQsIGNpZD1Ob25l KToKKyAgICAgICAgIiIiCisgICAgICAgIEdlbmVyYXRlcyB0aGUgU1FMIHN0 YXRlbWVudHMgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgQ2hlY2sgQ29uc3RyYWlu dC4KKworICAgICAgICAgQXJnczoKKyAgICAgICAgICAgIGdpZDogU2VydmVy IEdyb3VwIElkCisgICAgICAgICAgICBzaWQ6IFNlcnZlciBJZAorICAgICAg ICAgICAgZGlkOiBEYXRhYmFzZSBJZAorICAgICAgICAgICAgc2NpZDogU2No ZW1hIElkCisgICAgICAgICAgICB0aWQ6IFRhYmxlIElkCisgICAgICAgICAg ICBjaWQ6IENoZWNrIENvbnN0cmFpbnQgSWQKKyAgICAgICAgIiIiCisgICAg ICAgIHRyeToKKyAgICAgICAgICAgIGlmIGNpZCBpcyBub3QgTm9uZToKKyAg ICAgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4o W3NlbGYudGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICdwcm9wZXJ0aWVzLnNxbCddKSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlkPXRp ZCwgY2lkPWNpZCkKKyAgICAgICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNl bGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQorCisgICAgICAgICAgICAgICAg aWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZh bHNlLCBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisg ICAgICAgICAgICAgICAgb2xkX2RhdGEgPSByZXNbJ3Jvd3MnXVswXQorICAg ICAgICAgICAgICAgIHJlcXVpcmVkX2FyZ3MgPSBbJ25hbWUnXQorICAgICAg ICAgICAgICAgIGZvciBhcmcgaW4gcmVxdWlyZWRfYXJnczoKKyAgICAgICAg ICAgICAgICAgICAgaWYgYXJnIG5vdCBpbiBkYXRhOgorICAgICAgICAgICAg ICAgICAgICAgICAgZGF0YVthcmddID0gb2xkX2RhdGFbYXJnXQorCisgICAg ICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAg ICAgICAgICAgICAiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAndXBk YXRlLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgZGF0YT1kYXRhLCBv X2RhdGE9b2xkX2RhdGEsIGNvbm49c2VsZi5jb25uCisgICAgICAgICAgICAg ICAgICAgICkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAg cmVxdWlyZWRfYXJncyA9IFsnY29uc3JjJ10KKworICAgICAgICAgICAgICAg IGZvciBhcmcgaW4gcmVxdWlyZWRfYXJnczoKKyAgICAgICAgICAgICAgICAg ICAgaWYgYXJnIG5vdCBpbiBkYXRhOgorICAgICAgICAgICAgICAgICAgICAg ICAgcmV0dXJuIF8oJy0tIGRlZmluaXRpb24gaW5jb21wbGV0ZScpCisgICAg ICAgICAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShkYXRhW2FyZ10sIGxp c3QpIGFuZCBsZW4oZGF0YVthcmddKSA8IDE6CisgICAgICAgICAgICAgICAg ICAgICAgICByZXR1cm4gXygnLS0gZGVmaW5pdGlvbiBpbmNvbXBsZXRlJykK KworICAgICAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIu am9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NyZWF0ZS5zcWwnXSks CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9 ZGF0YSkKKyAgICAgICAgICAgICAgICBTUUwgKz0gIlxuIgorICAgICAgICAg ICAgICAgIFNRTCArPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYu dGVtcGxhdGVfcGF0aCwgJ2FsdGVyLnNxbCddKSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9ZGF0YSkKKworICAgICAg ICAgICAgcmV0dXJuIFNRTAorICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFz IGU6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UsIGludGVybmFsX3NlcnZl cl9lcnJvcihlcnJvcm1zZz1zdHIoZSkpCisKKyAgICBAY2hlY2tfcHJlY29u ZGl0aW9uCisgICAgZGVmIGRlcGVuZGVudHMoc2VsZiwgZ2lkLCBzaWQsIGRp ZCwgc2NpZCwgdGlkLCBjaWQpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhp cyBmdW5jdGlvbiBnZXQgdGhlIGRlcGVuZGVudHMgYW5kIHJldHVybiBhamF4 IHJlc3BvbnNlCisgICAgICAgIGZvciB0aGUgQ2hlY2sgQ29uc3RyYWludCBu b2RlLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBnaWQ6ICBTZXJ2 ZXIgR3JvdXAgSWQKKyAgICAgICAgICAgIHNpZDogIFNlcnZlciBJZAorICAg ICAgICAgICAgZGlkOiAgRGF0YWJhc2UgSWQKKyAgICAgICAgICAgIHNjaWQ6 IFNjaGVtYSBJZAorICAgICAgICAgICAgdGlkOiBUYWJsZSBJZAorICAgICAg ICAgICAgY2lkOiBDaGVjayBDb25zdHJhaW50IElkCisgICAgICAgICIiIgor ICAgICAgICBkZXBlbmRlbnRzX3Jlc3VsdCA9IHNlbGYuZ2V0X2RlcGVuZGVu dHMoc2VsZi5jb25uLCBjaWQpCisgICAgICAgIHJldHVybiBhamF4X3Jlc3Bv bnNlKAorICAgICAgICAgICAgICAgIHJlc3BvbnNlPWRlcGVuZGVudHNfcmVz dWx0LAorICAgICAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAgICAgICAg ICAgICApCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVmIGRl cGVuZGVuY2llcyhzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQsIGNp ZCk6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIGdldCB0 aGUgZGVwZW5kZW5jaWVzIGFuZCByZXR1cm4gYWpheCByZXNwb25zZQorICAg ICAgICBmb3IgdGhlIENoZWNrIENvbnN0cmFpbnQgbm9kZS4KKworICAgICAg ICBBcmdzOgorICAgICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAgSWQKKyAg ICAgICAgICAgIHNpZDogU2VydmVyIElkCisgICAgICAgICAgICBkaWQ6IERh dGFiYXNlIElkCisgICAgICAgICAgICBzY2lkOiBTY2hlbWEgSWQKKyAgICAg ICAgICAgIHRpZDogVGFibGUgSWQKKyAgICAgICAgICAgIGNpZDogQ2hlY2sg Q29uc3RyYWludCBJZAorICAgICAgICAiIiIKKyAgICAgICAgZGVwZW5kZW5j aWVzX3Jlc3VsdCA9IHNlbGYuZ2V0X2RlcGVuZGVuY2llcyhzZWxmLmNvbm4s IGNpZCkKKyAgICAgICAgcmV0dXJuIGFqYXhfcmVzcG9uc2UoCisgICAgICAg ICAgICAgICAgcmVzcG9uc2U9ZGVwZW5kZW5jaWVzX3Jlc3VsdCwKKyAgICAg ICAgICAgICAgICBzdGF0dXM9MjAwCisgICAgICAgICAgICAgICAgKQorCisg ICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiB2YWxpZGF0ZV9jaGVj a19jb25zdHJhaW50KHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRpZCwg Y2lkKToKKyAgICAgICAgIiIiCisgICAgICAgIFZhbGlkYXRlIGNoZWNrIGNv bnN0cmFpbnQuCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBnaWQ6IFNl cnZlciBHcm91cCBJZAorICAgICAgICAgICAgc2lkOiBTZXJ2ZXIgSWQKKyAg ICAgICAgICAgIGRpZDogRGF0YWJhc2UgSWQKKyAgICAgICAgICAgIHNjaWQ6 IFNjaGVtYSBJZAorICAgICAgICAgICAgdGlkOiBUYWJsZSBJZAorICAgICAg ICAgICAgY2lkOiBDaGVjayBDb25zdHJhaW50IElkCisKKyAgICAgICAgUmV0 dXJuczoKKworICAgICAgICAiIiIKKyAgICAgICAgZGF0YSA9IHt9CisgICAg ICAgIHRyeToKKyAgICAgICAgICAgIGRhdGFbJ3NjaGVtYSddID0gc2VsZi5z Y2hlbWEKKyAgICAgICAgICAgIGRhdGFbJ3RhYmxlJ10gPSBzZWxmLnRhYmxl CisgICAgICAgICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4o W3NlbGYudGVtcGxhdGVfcGF0aCwgJ2dldF9uYW1lLnNxbCddKSwgY2lkPWNp ZCkKKyAgICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1 dGVfc2NhbGFyKHNxbCkKKyAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6Cisg ICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihl cnJvcm1zZz1yZXMpCisKKyAgICAgICAgICAgIGRhdGFbJ25hbWUnXSA9IHJl cworICAgICAgICAgICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2lu KFtzZWxmLnRlbXBsYXRlX3BhdGgsICd2YWxpZGF0ZS5zcWwnXSksIGRhdGE9 ZGF0YSkKKyAgICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4 ZWN1dGVfZGljdChzcWwpCisgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgor ICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3Io ZXJyb3Jtc2c9cmVzKQorCisgICAgICAgICAgICByZXR1cm4gbWFrZV9qc29u X3Jlc3BvbnNlKAorICAgICAgICAgICAgICAgIHN1Y2Nlc3M9MSwKKyAgICAg ICAgICAgICAgICBpbmZvPV8oIkNoZWNrIGNvbnN0cmFpbnQgdXBkYXRlZC4i KSwKKyAgICAgICAgICAgICAgICBkYXRhPXsKKyAgICAgICAgICAgICAgICAg ICAgJ2lkJzogY2lkLAorICAgICAgICAgICAgICAgICAgICAndGlkJzogdGlk LAorICAgICAgICAgICAgICAgICAgICAnc2NpZCc6IHNjaWQsCisgICAgICAg ICAgICAgICAgICAgICdkaWQnOiBkaWQKKyAgICAgICAgICAgICAgICB9Cisg ICAgICAgICAgICApCisKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBl OgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihl cnJvcm1zZz1zdHIoZSkpCisKK2NvbnN0cmFpbnQgPSBDb25zdHJhaW50UmVn aXN0cnkoCisgICAgJ2NoZWNrX2NvbnN0cmFpbnQnLCBDaGVja0NvbnN0cmFp bnRNb2R1bGUsIENoZWNrQ29uc3RyYWludFZpZXcKKyAgICApCitDaGVja0Nv bnN0cmFpbnRWaWV3LnJlZ2lzdGVyX25vZGVfdmlldyhibHVlcHJpbnQpCmRp ZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29uc3RyYWludHMv Y2hlY2tfY29uc3RyYWludC9zdGF0aWMvaW1nL2NoZWNrLWNvbnN0cmFpbnRz LWJhZC5wbmcgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29uc3RyYWludHMv Y2hlY2tfY29uc3RyYWludC9zdGF0aWMvaW1nL2NoZWNrLWNvbnN0cmFpbnRz LWJhZC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzJhMDQ1YjhmYWZk YzA4NjQwZDUzYjJhODZiMWRjYWJjYjBmZTBmZApHSVQgYmluYXJ5IHBhdGNo CmxpdGVyYWwgNTc5CnpjbVYtSjA9KWYrUCk8aDszS3xMazAwMGUxTkpMVHEw MDBtRzAwMG1PMHt7UjNDQGx8RDAwMDAxYjVjaF8wSXRwKQp6PT5QeCRBVyUk SE1SMVo5I1EqQFJFSG1kSEFtPDw7PXBgbFREbDYkTEUxNSR8bk02eXhKMyM2 JkZ9XilReDxwM24KekgjaDR6SUspT3UjNzlmVE1AI0hKS2tZKDg/TCRRRUxg Q2pKTWVhc00/bmcoO1FCPnxvTmJYMlU/bitBVU9IMSFlCnpPeiV4aT9AZG5j UEVYS1JTP15DeiNhbXRRUUJtK3hRdChxI0BLYVJxUjg7VSlScTw5PEBtRSpZ VnEoYH5WKTB2Qgp6K0dTPClWUFclUFYlPSRKYWchSkhYbFY2cVpTYCgkX0h1 SDNwZDxFbmNKX0M3ZjFAWFdxYkd1PkR1PTh1aHBqSikKenZONGFnSDxpM1Vy TVlnV3lLPGV5TjFWcStwMnRiQSFHNUMzUE8hbSRxfEh2ViNEJH5KT3N2O2Z0 a19xdi1DZVFYCnpUKmNDJSRKMzs+PDZfTCR0PEtyOCkhd3xyQG8+Y1BhbTRY Kit+bWlgXkt7R2xjfHhoPE5kTiE8MGQhSk1Rdmc4Ygp6KmslOSMwMENsNE0/ P1VLMXN6QkwwMDBTYU5MaDBMMDFGY1UwMUZjVjBHZ1pfMDAwMDdiVipHYDJp cGYzNDxST2cKeihwNzJ6MDA1NmtMX3QmLSkxezJaM2NecVQxbURFb2R5Nkla dUNXJnMxViFgXjR9JGdvZT8oMThAYjJEYipqKncxCnolNE0ocDsmWnc/OVph S0F4byp4O0NPWH08OGZ6anFLUnZeMmtGMXNweW1ZSE1qRTJtN0hsfGF+ZW1D TndHOChpPwp6OEkjYGAoa2lCckViaH0oUW44VEwyKyR9YjNIbl43cGBLNlIj XzZ6UTIkP3V4O2xYQllCPmhrTkBDJWc/NHZWQk0KUiRiYkw8MDAyb3ZQREhM a1YxbWluME9TQXcKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdp dCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9jb25zdHJhaW50cy9jaGVja19j b25zdHJhaW50L3N0YXRpYy9pbWcvY2hlY2stY29uc3RyYWludHMucG5nIGIv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvdGFibGVzL2NvbnN0cmFpbnRzL2NoZWNrX2NvbnN0 cmFpbnQvc3RhdGljL2ltZy9jaGVjay1jb25zdHJhaW50cy5wbmcKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMC4uOWQxZDJhMDYxYzc5NDgxNjhkN2IxYzI0NzRk NzY5YjMxNzA5ZjFjZgpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgNDA2Cnpj bWVBU0BOPyhvbEh5YHVWQnEhaWEwdnBeMHdCITYzP3d5bGBHYkt9WEBGME5F MDh7VlkybmhIY15lTWFVJWpgZAp6YUkkIytIdUVLQ3twS0VaS1luPmgoK2FJ TUheTWpHamNzM31mOUNxeXQmZnZ4N0FUKil4dl5gTDtoZntIaV9pUDQKenhn SyUmVj9xNjVfNGMqOzh9RyU7Sk1NWTxTTE1fX19NNEJpOXtFXiE8WVVwWCZu MWdhYDdQZ0Z3RWtkUyEoI1A8CnpObiZATjlPcWlLKGkmKG5WQFolLUZvVk9o OCktbGVYTXNtI0ZfODhFVzREdnBjMGZqaXI7QjVWI08zNksxc24hTwp6aFJW Zn01alNzR1BIP2Y8eHVkY3x2Qm9ZPCY1Y2I9dVRHQjl2MTg3SjRJSStpdDU/ amhuOEZ7VHNDWklXUmFkJEQKemcxKks5VyVjdTJOc0QoaEVmVlQjKndtI3BZ dztEMDQrMEUodVFFP3NgWjYqWlhvcVR2WWVZIyhWbzlvMWEjMVJmCnpWbFhs PUd8KTlQKGxzeSlGKjJ8K0Z9NS0+KEtheChHQkJ7MXNWYXd9QXZacklHcCFQ JCFOM3glMGlAYz56em18ewpUKWIhOWJLbilDQHU2ezEtb0QhTTw9NE9eawoK bGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvdGFibGVzL2NvbnN0cmFpbnRzL2NoZWNrX2NvbnN0cmFpbnQvdGVt cGxhdGVzL2NoZWNrX2NvbnN0cmFpbnQvY3NzL2NoZWNrX2NvbnN0cmFpbnQu Y3NzIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2NvbnN0cmFpbnRzL2NoZWNr X2NvbnN0cmFpbnQvdGVtcGxhdGVzL2NoZWNrX2NvbnN0cmFpbnQvY3NzL2No ZWNrX2NvbnN0cmFpbnQuY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLjA2OTE4NjgKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy90YWJsZXMvY29uc3RyYWludHMvY2hlY2tfY29uc3RyYWludC90 ZW1wbGF0ZXMvY2hlY2tfY29uc3RyYWludC9jc3MvY2hlY2tfY29uc3RyYWlu dC5jc3MKQEAgLTAsMCArMSwxNSBAQAorLmljb24tY2hlY2tfYmFkLCAuaWNv bi1jaGVja19jb25zdHJhaW50c19iYWQgeworICBiYWNrZ3JvdW5kLWltYWdl OiB1cmwoJ3t7IHVybF9mb3IoJ05PREUtJXMuc3RhdGljJyAlIG5vZGVfdHlw ZSwgZmlsZW5hbWU9J2ltZy9jaGVjay1jb25zdHJhaW50cy1iYWQucG5nJyAp fX0nKSAhaW1wb3J0YW50OworICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVw ZWF0OworICBhbGlnbi1jb250ZW50OiBjZW50ZXI7CisgIHZlcnRpY2FsLWFs aWduOiBtaWRkbGU7CisgIGhlaWdodDogMS4zZW07Cit9CisKKy5pY29uLWNo ZWNrLCAuaWNvbi1jaGVja19jb25zdHJhaW50cyB7CisgIGJhY2tncm91bmQt aW1hZ2U6IHVybCgne3sgdXJsX2ZvcignTk9ERS0lcy5zdGF0aWMnICUgbm9k ZV90eXBlLCBmaWxlbmFtZT0naW1nL2NoZWNrLWNvbnN0cmFpbnRzLnBuZycg KX19JykgIWltcG9ydGFudDsKKyAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJl cGVhdDsKKyAgYWxpZ24tY29udGVudDogY2VudGVyOworICB2ZXJ0aWNhbC1h bGlnbjogbWlkZGxlOworICBoZWlnaHQ6IDEuM2VtOworfQpcIE5vIG5ld2xp bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L3RhYmxlcy9jb25zdHJhaW50cy9jaGVja19jb25zdHJhaW50L3RlbXBsYXRl cy9jaGVja19jb25zdHJhaW50L2pzL2NoZWNrX2NvbnN0cmFpbnQuanMgYi93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy90YWJsZXMvY29uc3RyYWludHMvY2hlY2tfY29uc3Ry YWludC90ZW1wbGF0ZXMvY2hlY2tfY29uc3RyYWludC9qcy9jaGVja19jb25z dHJhaW50LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu LmFmYzViYTkKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90 YWJsZXMvY29uc3RyYWludHMvY2hlY2tfY29uc3RyYWludC90ZW1wbGF0ZXMv Y2hlY2tfY29uc3RyYWludC9qcy9jaGVja19jb25zdHJhaW50LmpzCkBAIC0w LDAgKzEsMjE2IEBACisvLyBDaGVjayBDb25zdHJhaW50IE1vZHVsZTogTm9k ZQorZGVmaW5lKAorICBbCisgICAnanF1ZXJ5JywgJ3VuZGVyc2NvcmUnLCAn dW5kZXJzY29yZS5zdHJpbmcnLCAncGdhZG1pbicsICdwZ2FkbWluLmJyb3dz ZXInLAorICAgJ2FsZXJ0aWZ5JywgJ3BnYWRtaW4uYnJvd3Nlci5jb2xsZWN0 aW9uJworICBdLAorZnVuY3Rpb24oJCwgXywgUywgcGdBZG1pbiwgcGdCcm93 c2VyLCBBbGVydGlmeSkgeworCisgIC8vIENoZWNrIENvbnN0cmFpbnQgTm9k ZQorICBpZiAoIXBnQnJvd3Nlci5Ob2Rlc1snY2hlY2tfY29uc3RyYWludHMn XSkgeworICAgIHBnQWRtaW4uQnJvd3Nlci5Ob2Rlc1snY2hlY2tfY29uc3Ry YWludHMnXSA9IHBnQnJvd3Nlci5Ob2RlLmV4dGVuZCh7CisgICAgICB0eXBl OiAnY2hlY2tfY29uc3RyYWludHMnLAorICAgICAgbGFiZWw6ICd7eyBfKCdD aGVjaycpIH19JywKKyAgICAgIGNvbGxlY3Rpb25fdHlwZTogJ2NvbGwtY29u c3RyYWludHMnLAorICAgICAgc3FsQWx0ZXJIZWxwOiAnZGRsLWFsdGVyLmh0 bWwnLAorICAgICAgc3FsQ3JlYXRlSGVscDogJ2RkbC1jb25zdHJhaW50cy5o dG1sJywKKyAgICAgIGhhc1NRTDogdHJ1ZSwKKyAgICAgIGhhc0RlcGVuZHM6 IHRydWUsCisgICAgICBwYXJlbnRfdHlwZTogWyd0YWJsZSddLAorICAgICAg SW5pdDogZnVuY3Rpb24oKSB7CisgICAgICAgIC8vIEF2b2lkIG11bGl0cGxl IHJlZ2lzdHJhdGlvbiBvZiBtZW51cworICAgICAgICBpZiAodGhpcy5pbml0 aWFsaXplZCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlz LmluaXRpYWxpemVkID0gdHJ1ZTsKKworICAgICAgICBwZ0Jyb3dzZXIuYWRk X21lbnVzKFt7CisgICAgICAgICAgbmFtZTogJ2NyZWF0ZV9jaGVja19jb25z dHJhaW50c19vbl9jb2xsJywgbm9kZTogJ2NvbGwtY29uc3RyYWludHMnLCBt b2R1bGU6IHRoaXMsCisgICAgICAgICAgYXBwbGllczogWydvYmplY3QnLCAn Y29udGV4dCddLCBjYWxsYmFjazogJ3Nob3dfb2JqX3Byb3BlcnRpZXMnLAor ICAgICAgICAgIGNhdGVnb3J5OiAnY3JlYXRlJywgcHJpb3JpdHk6IDUsIGxh YmVsOiAne3sgXygnQ2hlY2suLi4nKSB9fScsCisgICAgICAgICAgaWNvbjog J3djVGFiSWNvbiBpY29uLWNoZWNrX2NvbnN0cmFpbnRzJywgZGF0YToge2Fj dGlvbjogJ2NyZWF0ZScsIGNoZWNrOiB0cnVlfSwKKyAgICAgICAgICBlbmFi bGU6ICdjYW5DcmVhdGUnCisgICAgICAgIH0seworICAgICAgICAgIG5hbWU6 ICd2YWxpZGF0ZV9jaGVja19jb25zdHJhaW50Jywgbm9kZTogJ2NoZWNrX2Nv bnN0cmFpbnRzJywgbW9kdWxlOiB0aGlzLAorICAgICAgICAgIGFwcGxpZXM6 IFsnb2JqZWN0JywgJ2NvbnRleHQnXSwgY2FsbGJhY2s6ICd2YWxpZGF0ZV9j aGVja19jb25zdHJhaW50JywKKyAgICAgICAgICBjYXRlZ29yeTogJ3ZhbGlk YXRlJywgcHJpb3JpdHk6IDQsIGxhYmVsOiAne3sgXygnVmFsaWRhdGUgY2hl Y2sgY29uc3RyYWludCcpIH19JywKKyAgICAgICAgICBpY29uOiAnZmEgZmEt bGluaycsIGVuYWJsZSA6ICdpc19ub3RfdmFsaWQnLCBkYXRhOiB7YWN0aW9u OiAnZWRpdCcsIGNoZWNrOiB0cnVlfQorICAgICAgICB9CisgICAgICAgIF0p OworCisgICAgICB9LAorICAgICAgaXNfbm90X3ZhbGlkOiBmdW5jdGlvbihp dGVtRGF0YSwgaXRlbSwgZGF0YSkgeworICAgICAgICBpZiAodGhpcy5jYW5D cmVhdGUoaXRlbURhdGEsIGl0ZW0sIGRhdGEpKSB7CisgICAgICAgICAgcmV0 dXJuIChpdGVtRGF0YSAmJiAhaXRlbURhdGEudmFsaWQpOworICAgICAgICB9 IGVsc2UgeworICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQor ICAgICAgfSwKKyAgICAgIGNhbGxiYWNrczogeworICAgICAgICB2YWxpZGF0 ZV9jaGVja19jb25zdHJhaW50OiBmdW5jdGlvbihhcmdzKSB7CisgICAgICAg ICAgdmFyIGlucHV0ID0gYXJncyB8fCB7fTsKKyAgICAgICAgICBvYmogPSB0 aGlzLAorICAgICAgICAgIHQgPSBwZ0Jyb3dzZXIudHJlZSwKKyAgICAgICAg ICBpID0gaW5wdXQuaXRlbSB8fCB0LnNlbGVjdGVkKCksCisgICAgICAgICAg ZCA9IGkgJiYgaS5sZW5ndGggPT0gMSA/IHQuaXRlbURhdGEoaSkgOiB1bmRl ZmluZWQ7CisKKyAgICAgICAgICBpZiAoIWQpIHsKKyAgICAgICAgICAgIHJl dHVybiBmYWxzZTsKKyAgICAgICAgICB9CisgICAgICAgICAgdmFyIGRhdGEg PSBkOworICAgICAgICAgICQuYWpheCh7CisgICAgICAgICAgICB1cmw6IG9i ai5nZW5lcmF0ZV91cmwoaSwgJ3ZhbGlkYXRlJywgZCwgdHJ1ZSksCisgICAg ICAgICAgICB0eXBlOidHRVQnLAorICAgICAgICAgICAgc3VjY2VzczogZnVu Y3Rpb24ocmVzKSB7CisgICAgICAgICAgICAgIGlmIChyZXMuc3VjY2VzcyA9 PSAxKSB7CisgICAgICAgICAgICAgICAgQWxlcnRpZnkuc3VjY2Vzcygie3sg XygnIiArIHJlcy5pbmZvICsgIicpIH19Iik7CisgICAgICAgICAgICAgICAg dC5yZW1vdmVJY29uKGkpOworICAgICAgICAgICAgICAgIGRhdGEudmFsaWQg PSB0cnVlOworICAgICAgICAgICAgICAgIGRhdGEuaWNvbiA9ICdpY29uLWNo ZWNrX2NvbnN0cmFpbnRzJzsKKyAgICAgICAgICAgICAgICB0LmFkZEljb24o aSwge2ljb246IGRhdGEuaWNvbn0pOworICAgICAgICAgICAgICAgIHNldFRp bWVvdXQoZnVuY3Rpb24oKSB7dC5kZXNlbGVjdChpKTt9LCAxMCk7CisgICAg ICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHt0LnNlbGVjdChp KTt9LCAxMDApOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAor ICAgICAgICAgICAgZXJyb3I6IGZ1bmN0aW9uKHhociwgc3RhdHVzLCBlcnJv cikgeworICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIHZh ciBlcnIgPSAkLnBhcnNlSlNPTih4aHIucmVzcG9uc2VUZXh0KTsKKyAgICAg ICAgICAgICAgICBpZiAoZXJyLnN1Y2Nlc3MgPT0gMCkgeworICAgICAgICAg ICAgICAgICAgbXNnID0gUygne3sgXygnICsgZXJyLmVycm9ybXNnICsgJyl9 fScpLnZhbHVlKCk7CisgICAgICAgICAgICAgICAgICBBbGVydGlmeS5lcnJv cigie3sgXygnIiArIGVyci5lcnJvcm1zZyArICInKSB9fSIpOworICAgICAg ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge30KKyAg ICAgICAgICAgICAgdC51bmxvYWQoaSk7CisgICAgICAgICAgICB9CisgICAg ICAgICAgICB9KTsKKworICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg ICAgfQorICAgICAgfSwKKyAgICAgIGNhbkRyb3A6IHBnQnJvd3Nlci5Ob2Rl c1snc2NoZW1hJ10uY2FuQ2hpbGREcm9wLAorICAgICAgbW9kZWw6IHBnQWRt aW4uQnJvd3Nlci5Ob2RlLk1vZGVsLmV4dGVuZCh7CisgICAgICAgIGRlZmF1 bHRzOiB7CisgICAgICAgICAgbmFtZTogdW5kZWZpbmVkLAorICAgICAgICAg IG9pZDogdW5kZWZpbmVkLAorICAgICAgICAgIGRlc2NyaXB0aW9uOiB1bmRl ZmluZWQsCisgICAgICAgICAgY29uc3JjOiB1bmRlZmluZWQsCisgICAgICAg ICAgY29ubm9pbmhlcml0OiB1bmRlZmluZWQsCisgICAgICAgICAgY29udmFs aWRhdGVkOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgIC8vIENoZWNrIENv bnN0cmFpbnQgU2NoZW1hCisgICAgICAgIHNjaGVtYTogW3sKKyAgICAgICAg ICBpZDogJ25hbWUnLCBsYWJlbDogJ3t7IF8oJ05hbWUnKSB9fScsIHR5cGU6 J3RleHQnLCBjZWxsOidzdHJpbmcnLAorICAgICAgICAgIGRpc2FibGVkOiAn aXNEaXNhYmxlZCcKKyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdvaWQn LCBsYWJlbDone3sgXygnT0lEJykgfX0nLCBjZWxsOiAnc3RyaW5nJywKKyAg ICAgICAgICB0eXBlOiAndGV4dCcgLCBtb2RlOiBbJ3Byb3BlcnRpZXMnXQor ICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ2NvbW1lbnQnLCBsYWJlbDog J3t7IF8oJ0NvbW1lbnQnKSB9fScsIHR5cGU6ICdtdWx0aWxpbmUnLCBjZWxs OgorICAgICAgICAgICdzdHJpbmcnLCBtb2RlOiBbJ3Byb3BlcnRpZXMnLCAn Y3JlYXRlJywgJ2VkaXQnXSwKKyAgICAgICAgICBkZXBzOlsnbmFtZSddLCBk aXNhYmxlZDpmdW5jdGlvbihtKSB7CisgICAgICAgICAgICB2YXIgbmFtZSA9 IG0uZ2V0KCduYW1lJyk7CisgICAgICAgICAgICBpZiAoIShuYW1lICYmIG5h bWUgIT0gJycpKSB7CisgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rp b24oKXsKKyAgICAgICAgICAgICAgICBtLnNldCgnY29tbWVudCcsIG51bGwp OworICAgICAgICAgICAgICB9LDEwKTsKKyAgICAgICAgICAgICAgcmV0dXJu IHRydWU7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICBy ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAg ICAgICB9LHsKKyAgICAgICAgICBpZDogJ2NvbnNyYycsIGxhYmVsOiAne3sg XygnQ2hlY2snKSB9fScsIHR5cGU6ICdtdWx0aWxpbmUnLCBjZWxsOgorICAg ICAgICAgICdzdHJpbmcnLCBncm91cDogJ3t7IF8oJ0RlZmluaXRpb24nKSB9 fScsIG1vZGU6IFsncHJvcGVydGllcycsCisgICAgICAgICAgJ2NyZWF0ZScs ICdlZGl0J10sIGRpc2FibGVkOiBmdW5jdGlvbihtKSB7CisgICAgICAgICAg ICByZXR1cm4gKChfLmhhcyhtLCAnaGFuZGxlcicpICYmCisgICAgICAgICAg ICAgICFfLmlzVW5kZWZpbmVkKG0uaGFuZGxlcikgJiYKKyAgICAgICAgICAg ICAgIV8uaXNVbmRlZmluZWQobS5nZXQoJ29pZCcpKSkgfHwgKF8uaXNGdW5j dGlvbihtLmlzTmV3KSAmJiAhbS5pc05ldygpKSk7CisgICAgICAgICAgfSwg ZWRpdGFibGU6IGZhbHNlCisgICAgICAgIH0seworICAgICAgICAgIGlkOiAn Y29ubm9pbmhlcml0JywgbGFiZWw6ICd7eyBfKCdObyBJbmhlcml0JykgfX0n LCB0eXBlOgorICAgICAgICAgICdzd2l0Y2gnLCBjZWxsOiAnYm9vbGVhbics IGdyb3VwOiAne3sgXygnRGVmaW5pdGlvbicpIH19JywgbW9kZToKKyAgICAg ICAgICBbJ3Byb3BlcnRpZXMnLCAnY3JlYXRlJywgJ2VkaXQnXSwgbWluX3Zl cnNpb246IDkwMjAwLAorICAgICAgICAgIGRpc2FibGVkOiBmdW5jdGlvbiht KSB7CisgICAgICAgICAgICByZXR1cm4gKChfLmhhcyhtLCAnaGFuZGxlcicp ICYmCisgICAgICAgICAgICAgICFfLmlzVW5kZWZpbmVkKG0uaGFuZGxlcikg JiYKKyAgICAgICAgICAgICAgIV8uaXNVbmRlZmluZWQobS5nZXQoJ29pZCcp KSkgfHwgKF8uaXNGdW5jdGlvbihtLmlzTmV3KSAmJiAhbS5pc05ldygpKSk7 CisgICAgICAgICAgfQorICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ2Nv bnZhbGlkYXRlZCcsIGxhYmVsOiAie3sgXygiRG9uJ3QgdmFsaWRhdGUiKSB9 fSIsIHR5cGU6ICdzd2l0Y2gnLCBjZWxsOgorICAgICAgICAgICdib29sZWFu JywgZ3JvdXA6ICd7eyBfKCdEZWZpbml0aW9uJykgfX0nLCBtaW5fdmVyc2lv bjogOTAyMDAsCisgICAgICAgICAgZGlzYWJsZWQ6IGZ1bmN0aW9uKG0pIHsK KyAgICAgICAgICAgIGlmICgoXy5pc0Z1bmN0aW9uKG0uaXNOZXcpICYmICFt LmlzTmV3KCkpIHx8CisgICAgICAgICAgICAgICAgICAoXy5oYXMobSwgJ2hh bmRsZXInKSAmJgorICAgICAgICAgICAgICAgICAgIV8uaXNVbmRlZmluZWQo bS5oYW5kbGVyKSAmJgorICAgICAgICAgICAgICAgICAgIV8uaXNVbmRlZmlu ZWQobS5nZXQoJ29pZCcpKSkpIHsKKworICAgICAgICAgICAgICByZXR1cm4g IW0uZ2V0KCJjb252YWxpZGF0ZWQiKTsKKyAgICAgICAgICAgIH0gZWxzZSB7 CisgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0K KyAgICAgICAgICB9LAorICAgICAgICAgIG1vZGU6IFsncHJvcGVydGllcycs ICdjcmVhdGUnLCAnZWRpdCddCisgICAgICAgIH1dLAorICAgICAgICAvLyBD bGllbnQgU2lkZSBWYWxpZGF0aW9uCisgICAgICAgIHZhbGlkYXRlOiBmdW5j dGlvbigpIHsKKyAgICAgICAgICB2YXIgZXJyID0ge30sCisgICAgICAgICAg ICAgIGVycm1zZzsKKworICAgICAgICAgIGlmIChfLmlzVW5kZWZpbmVkKHRo aXMuZ2V0KCdjb25zcmMnKSkgfHwgU3RyaW5nKHRoaXMuZ2V0KCdjb25zcmMn KSkucmVwbGFjZSgvXlxzK3xccyskL2csICcnKSA9PSAnJykgeworICAgICAg ICAgICAgZXJyWydjb25zcmMnXSA9ICd7eyBfKCdDaGVjayBjYW4gbm90IGJl IGVtcHR5IScpIH19JzsKKyAgICAgICAgICAgIGVycm1zZyA9IGVycm1zZyB8 fCBlcnJbJ2NvbnNyYyddOworICAgICAgICAgIH0KKworICAgICAgICAgIHRo aXMuZXJyb3JNb2RlbC5jbGVhcigpLnNldChlcnIpOworCisgICAgICAgICAg aWYgKF8uc2l6ZShlcnIpKSB7CisgICAgICAgICAgICB0aGlzLnRyaWdnZXIo J29uLXN0YXR1cycsIHttc2c6IGVycm1zZ30pOworICAgICAgICAgICAgcmV0 dXJuIGVycm1zZzsKKyAgICAgICAgICB9CisKKyAgICAgICAgICByZXR1cm4g bnVsbDsKKworICAgICAgICB9LAorICAgICAgICBpc0Rpc2FibGVkOiBmdW5j dGlvbihtKXsKKyAgICAgICAgICBpZiAoKF8uaGFzKG0sICdoYW5kbGVyJykg JiYKKyAgICAgICAgICAgICAgIV8uaXNVbmRlZmluZWQobS5oYW5kbGVyKSAm JgorICAgICAgICAgICAgICAhXy5pc1VuZGVmaW5lZChtLmdldCgnb2lkJykp KSB8fAorICAgICAgICAgICAgKF8uaXNGdW5jdGlvbihtLmlzTmV3KSAmJiAh bS5pc05ldygpKSkgeworICAgICAgICAgICAgdmFyIHNlcnZlciA9ICh0aGlz Lm5vZGVfaW5mbyB8fCBtLnRvcC5ub2RlX2luZm8pLnNlcnZlcjsKKyAgICAg ICAgICAgIGlmIChzZXJ2ZXIudmVyc2lvbiA8IDkwMjAwKQorICAgICAgICAg ICAgeworICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAg IH0KKyAgICAgICAgICB9CisgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg ICAgICB9CisgICAgICB9KSwKKyAgICAgIC8vIEJlbG93IGZ1bmN0aW9uIHdp bGwgZW5hYmxlIHJpZ2h0IGNsaWNrIG1lbnUgZm9yIGNyZWF0aW5nIGNoZWNr IGNvbnN0cmFpbnQuCisgICAgICBjYW5DcmVhdGU6IGZ1bmN0aW9uKGl0ZW1E YXRhLCBpdGVtLCBkYXRhKSB7CisgICAgICAgICAgLy8gSWYgY2hlY2sgaXMg ZmFsc2UgdGhlbiAsIHdlIHdpbGwgYWxsb3cgY3JlYXRlIG1lbnUKKyAgICAg ICAgICBpZiAoZGF0YSAmJiBkYXRhLmNoZWNrID09IGZhbHNlKQorICAgICAg ICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgICB2YXIgdCA9IHBnQnJv d3Nlci50cmVlLCBpID0gaXRlbSwgZCA9IGl0ZW1EYXRhLCBwYXJlbnRzID0g W107CisgICAgICAgICAgLy8gVG8gaXRlcmF0ZSBvdmVyIHRyZWUgdG8gY2hl Y2sgcGFyZW50IG5vZGUKKyAgICAgICAgICB3aGlsZSAoaSkgeworICAgICAg ICAgICAgLy8gSWYgaXQgaXMgc2NoZW1hIHRoZW4gYWxsb3cgdXNlciB0byBj IHJlYXRlIHRhYmxlCisgICAgICAgICAgICBpZiAoXy5pbmRleE9mKFsnc2No ZW1hJ10sIGQuX3R5cGUpID4gLTEpCisgICAgICAgICAgICAgIHJldHVybiB0 cnVlOworICAgICAgICAgICAgcGFyZW50cy5wdXNoKGQuX3R5cGUpOworICAg ICAgICAgICAgaSA9IHQuaGFzUGFyZW50KGkpID8gdC5wYXJlbnQoaSkgOiBu dWxsOworICAgICAgICAgICAgZCA9IGkgPyB0Lml0ZW1EYXRhKGkpIDogbnVs bDsKKyAgICAgICAgICB9CisgICAgICAgICAgLy8gSWYgbm9kZSBpcyB1bmRl ciBjYXRhbG9nIHRoZW4gZG8gbm90IGFsbG93ICdjcmVhdGUnIG1lbnUKKyAg ICAgICAgICBpZiAoXy5pbmRleE9mKHBhcmVudHMsICdjYXRhbG9nJykgPiAt MSkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgIH0g ZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICB9 CisgICAgICB9CisgIH0pOworCisgIH0KKworICByZXR1cm4gcGdCcm93c2Vy Lk5vZGVzWydjaGVja19jb25zdHJhaW50cyddOworfSk7CmRpZmYgLS1naXQg YS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29uc3RyYWludHMvZXhjbHVzaW9u X2NvbnN0cmFpbnQvX19pbml0X18ucHkgYi93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJs ZXMvY29uc3RyYWludHMvZXhjbHVzaW9uX2NvbnN0cmFpbnQvX19pbml0X18u cHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2Y1OTll NQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9j b25zdHJhaW50cy9leGNsdXNpb25fY29uc3RyYWludC9fX2luaXRfXy5weQpA QCAtMCwwICsxLDgyMCBAQAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMKKyMKKyMgcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworIworIyBD b3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE2LCBUaGUgcGdBZG1pbiBEZXZlbG9w bWVudCBUZWFtCisjIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIg dGhlIFBvc3RncmVTUUwgTGljZW5jZQorIworIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMKKworIiIiSW1wbGVtZW50cyBFeGNsdXNpb24gY29uc3Ry YWludCBOb2RlIiIiCisKK2ltcG9ydCBqc29uCitmcm9tIGZsYXNrIGltcG9y dCByZW5kZXJfdGVtcGxhdGUsIG1ha2VfcmVzcG9uc2UsIHJlcXVlc3QsIGpz b25pZnkKK2Zyb20gZmxhc2suZXh0LmJhYmVsIGltcG9ydCBnZXR0ZXh0IGFz IF8KK2Zyb20gcGdhZG1pbi51dGlscy5hamF4IGltcG9ydCBtYWtlX2pzb25f cmVzcG9uc2UsIFwKKyAgICBtYWtlX3Jlc3BvbnNlIGFzIGFqYXhfcmVzcG9u c2UsIGludGVybmFsX3NlcnZlcl9lcnJvcgorZnJvbSBwZ2FkbWluLmJyb3dz ZXIudXRpbHMgaW1wb3J0IFBHQ2hpbGROb2RlVmlldworZnJvbSBwZ2FkbWlu LnV0aWxzLmFqYXggaW1wb3J0IHByZWNvbmRpdGlvbl9yZXF1aXJlZAorZnJv bSBwZ2FkbWluLnV0aWxzLmRyaXZlciBpbXBvcnQgZ2V0X2RyaXZlcgorZnJv bSBjb25maWcgaW1wb3J0IFBHX0RFRkFVTFRfRFJJVkVSCitpbXBvcnQgcGdh ZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy5kYXRhYmFzZXMg YXMgZGF0YWJhc2UKK2Zyb20gZnVuY3Rvb2xzIGltcG9ydCB3cmFwcworZnJv bSBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLmRhdGFi YXNlcy5zY2hlbWFzLnRhYmxlcy5jb25zdHJhaW50cy50eXBlIFwKKyAgICBp bXBvcnQgQ29uc3RyYWludFJlZ2lzdHJ5LCBDb25zdHJhaW50VHlwZU1vZHVs ZQorCisKK2NsYXNzIEV4Y2x1c2lvbkNvbnN0cmFpbnRNb2R1bGUoQ29uc3Ry YWludFR5cGVNb2R1bGUpOgorICAgICIiIgorICAgIGNsYXNzIEZvcmVpZ25L ZXlDb25zdHJhaW50TW9kdWxlKENvbGxlY3Rpb25Ob2RlTW9kdWxlKQorCisg ICAgICAgIEEgbW9kdWxlIGNsYXNzIGZvciBFeGNsdXNpb24gY29uc3RyYWlu dCBub2RlIGRlcml2ZWQgZnJvbSBDb25zdHJhaW50VHlwZU1vZHVsZS4KKwor ICAgIE1ldGhvZHM6CisgICAgLS0tLS0tLQorICAgICogX19pbml0X18oKmFy Z3MsICoqa3dhcmdzKQorICAgICAgLSBNZXRob2QgaXMgdXNlZCB0byBpbml0 aWFsaXplIHRoZSBGb3JlaWduS2V5Q29uc3RyYWludE1vZHVsZSBhbmQgaXQn cyBiYXNlIG1vZHVsZS4KKworICAgICogZ2V0X25vZGVzKGdpZCwgc2lkLCBk aWQpCisgICAgICAtIE1ldGhvZCBpcyB1c2VkIHRvIGdlbmVyYXRlIHRoZSBi cm93c2VyIGNvbGxlY3Rpb24gbm9kZS4KKworICAgICogbm9kZV9pbm9kZSgp CisgICAgICAtIE1ldGhvZCBpcyBvdmVycmlkZGVuIGZyb20gaXRzIGJhc2Ug Y2xhc3MgdG8gbWFrZSB0aGUgbm9kZSBhcyBsZWFmIG5vZGUuCisKKyAgICAq IHNjcmlwdF9sb2FkKCkKKyAgICAgIC0gTG9hZCB0aGUgbW9kdWxlIHNjcmlw dCBmb3IgbGFuZ3VhZ2UsIHdoZW4gYW55IG9mIHRoZSBkYXRhYmFzZSBub2Rl IGlzCisgICAgICAgIGluaXRpYWxpemVkLgorICAgICIiIgorCisgICAgTk9E RV9UWVBFID0gJ2V4Y2x1c2lvbl9jb25zdHJhaW50JworICAgIENPTExFQ1RJ T05fTEFCRUwgPSBfKCJGb3JlaWduIEtleXMiKQorCisgICAgZGVmIF9faW5p dF9fKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICIiIgorICAg ICAgICBNZXRob2QgaXMgdXNlZCB0byBpbml0aWFsaXplIHRoZSBGb3JlaWdu S2V5Q29uc3RyYWludE1vZHVsZSBhbmQgaXQncyBiYXNlIG1vZHVsZS4KKwor ICAgICAgICBBcmdzOgorICAgICAgICAgICphcmdzOgorICAgICAgICAgICoq a3dhcmdzOgorCisgICAgICAgIFJldHVybnM6CisKKyAgICAgICAgIiIiCisg ICAgICAgIHNlbGYubWluX3ZlciA9IE5vbmUKKyAgICAgICAgc2VsZi5tYXhf dmVyID0gTm9uZQorICAgICAgICBzdXBlcihFeGNsdXNpb25Db25zdHJhaW50 TW9kdWxlLCBzZWxmKS5fX2luaXRfXygqYXJncywgKiprd2FyZ3MpCisKKyAg ICBkZWYgZ2V0X25vZGVzKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRp ZCk6CisgICAgICAgICIiIgorICAgICAgICBHZW5lcmF0ZSB0aGUgY29sbGVj dGlvbiBub2RlCisgICAgICAgICIiIgorICAgICAgICBwYXNzCisKKyAgICBA cHJvcGVydHkKKyAgICBkZWYgbm9kZV9pbm9kZShzZWxmKToKKyAgICAgICAg IiIiCisgICAgICAgIE92ZXJyaWRlIHRoaXMgcHJvcGVydHkgdG8gbWFrZSB0 aGUgbm9kZSBhIGxlYWYgbm9kZS4KKworICAgICAgICBSZXR1cm5zOiBGYWxz ZSBhcyB0aGlzIGlzIHRoZSBsZWFmIG5vZGUKKyAgICAgICAgIiIiCisgICAg ICAgIHJldHVybiBGYWxzZQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHNj cmlwdF9sb2FkKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgTG9hZCB0 aGUgbW9kdWxlIHNjcmlwdCBmb3IgZXhjbHVzaW9uX2NvbnN0cmFpbnQsIHdo ZW4gYW55IG9mIHRoZSB0YWJsZSBub2RlIGlzCisgICAgICAgIGluaXRpYWxp emVkLgorCisgICAgICAgIFJldHVybnM6IG5vZGUgdHlwZSBvZiB0aGUgc2Vy dmVyIG1vZHVsZS4KKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBkYXRh YmFzZS5EYXRhYmFzZU1vZHVsZS5OT0RFX1RZUEUKKworYmx1ZXByaW50ID0g RXhjbHVzaW9uQ29uc3RyYWludE1vZHVsZShfX25hbWVfXykKKworCitjbGFz cyBFeGNsdXNpb25Db25zdHJhaW50VmlldyhQR0NoaWxkTm9kZVZpZXcpOgor ICAgICIiIgorICAgIGNsYXNzIEV4Y2x1c2lvbkNvbnN0cmFpbnRWaWV3KFBH Q2hpbGROb2RlVmlldykKKworICAgICAgICBBIHZpZXcgY2xhc3MgZm9yIEV4 Y2x1c2lvbiBjb25zdHJhaW50IG5vZGUgZGVyaXZlZCBmcm9tIFBHQ2hpbGRO b2RlVmlldy4gVGhpcyBjbGFzcyBpcworICAgICAgICByZXNwb25zaWJsZSBm b3IgYWxsIHRoZSBzdHVmZiByZWxhdGVkIHRvIHZpZXcgbGlrZSBjcmVhdGlu ZywgdXBkYXRpbmcgRXhjbHVzaW9uIGNvbnN0cmFpbnQKKyAgICAgICAgbm9k ZSwgc2hvd2luZyBwcm9wZXJ0aWVzLCBzaG93aW5nIHNxbCBpbiBzcWwgcGFu ZS4KKworICAgIE1ldGhvZHM6CisgICAgLS0tLS0tLQorICAgICogX19pbml0 X18oKiprd2FyZ3MpCisgICAgICAtIE1ldGhvZCBpcyB1c2VkIHRvIGluaXRp YWxpemUgdGhlIEZvcmVpZ25LZXlDb25zdHJhaW50VmlldyBhbmQgaXQncyBi YXNlIHZpZXcuCisKKyAgICAqIG1vZHVsZV9qcygpCisgICAgICAtIFRoaXMg cHJvcGVydHkgZGVmaW5lcyAoaWYgamF2YXNjcmlwdCkgZXhpc3RzIGZvciB0 aGlzIG5vZGUuCisgICAgICAgIE92ZXJyaWRlIHRoaXMgcHJvcGVydHkgZm9y IHlvdXIgb3duIGxvZ2ljCisKKyAgICAqIGNoZWNrX3ByZWNvbmRpdGlvbigp CisgICAgICAtIFRoaXMgZnVuY3Rpb24gd2lsbCBiZWhhdmUgYXMgYSBkZWNv cmF0b3Igd2hpY2ggd2lsbCBjaGVja3MKKyAgICAgICAgZGF0YWJhc2UgY29u bmVjdGlvbiBiZWZvcmUgcnVubmluZyB2aWV3LCBpdCB3aWxsIGFsc28gYXR0 YWNoZXMKKyAgICAgICAgbWFuYWdlcixjb25uICYgdGVtcGxhdGVfcGF0aCBw cm9wZXJ0aWVzIHRvIHNlbGYKKworICAgICogZW5kX3RyYW5zYWN0aW9uKCkK KyAgICAgIC0gVG8gZW5kIGFueSBleGlzdGluZyBkYXRhYmFzZSB0cmFuc2Fj dGlvbi4KKworICAgICogbGlzdCgpCisgICAgICAtIFRoaXMgZnVuY3Rpb24g cmV0dXJucyBFeGNsdXNpb24gY29uc3RyYWludCBub2RlcyB3aXRoaW4gdGhh dAorICAgICAgICBjb2xsZWN0aW9uIGFzIGh0dHAgcmVzcG9uc2UuCisKKyAg ICAqIGdldF9saXN0KCkKKyAgICAgIC0gVGhpcyBmdW5jdGlvbiBpcyB1c2Vk IHRvIGxpc3QgYWxsIHRoZSBsYW5ndWFnZSBub2RlcyB3aXRoaW4gdGhhdCBj b2xsZWN0aW9uCisgICAgICAgIGFuZCByZXR1cm4gbGlzdCBvZiBFeGNsdXNp b24gY29uc3RyYWludCBub2Rlcy4KKworICAgICogbm9kZXMoKQorICAgICAg LSBUaGlzIGZ1bmN0aW9uIHJldHVybnMgY2hpbGQgbm9kZSB3aXRoaW4gdGhh dCBjb2xsZWN0aW9uLgorICAgICAgICBIZXJlIHJldHVybiBhbGwgRXhjbHVz aW9uIGNvbnN0cmFpbnQgbm9kZSBhcyBodHRwIHJlc3BvbnNlLgorCisgICAg KiBnZXRfbm9kZXMoKQorICAgICAgLSByZXR1cm5zIGFsbCBFeGNsdXNpb24g Y29uc3RyYWludCBub2RlcycgbGlzdC4KKworICAgICogcHJvcGVydGllcygp CisgICAgICAtIFRoaXMgZnVuY3Rpb24gd2lsbCBzaG93IHRoZSBwcm9wZXJ0 aWVzIG9mIHRoZSBzZWxlY3RlZCBFeGNsdXNpb24uCisKKyAgICAqIHVwZGF0 ZSgpCisgICAgICAtIFRoaXMgZnVuY3Rpb24gd2lsbCB1cGRhdGUgdGhlIGRh dGEgZm9yIHRoZSBzZWxlY3RlZCBFeGNsdXNpb24uCisKKyAgICAqIG1zcWwo KQorICAgICAgLSBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gcmV0dXJuIG1v ZGlmaWVkIFNRTCBmb3IgdGhlIHNlbGVjdGVkIEV4Y2x1c2lvbi4KKworICAg ICogZ2V0X3NxbCgpCisgICAgICAtIFRoaXMgZnVuY3Rpb24gd2lsbCBnZW5l cmF0ZSBzcWwgZnJvbSBtb2RlbCBkYXRhLgorCisgICAgKiBzcWwoKToKKyAg ICAgIC0gVGhpcyBmdW5jdGlvbiB3aWxsIGdlbmVyYXRlIHNxbCB0byBzaG93 IGl0IGluIHNxbCBwYW5lIGZvciB0aGUgc2VsZWN0ZWQgRXhjbHVzaW9uLgor CisgICAgKiBnZXRfYWNjZXNzX21ldGhvZHMoKToKKyAgICAgIC0gUmV0dXJu cyBhY2Nlc3MgbWV0aG9kcyBmb3IgZXhjbHVzaW9uIGNvbnN0cmFpbnQuCisK KyAgICAqIGdldF9vcGVyX2NsYXNzKCk6CisgICAgICAtIFJldHVybnMgb3Bl cmF0b3IgY2xhc3NlcyBmb3Igc2VsZWN0ZWQgYWNjZXNzIG1ldGhvZC4KKwor ICAgICogZ2V0X29wZXJhdG9yKCk6CisgICAgICAtIFJldHVybnMgb3BlcmF0 b3JzIGZvciBzZWxlY3RlZCBjb2x1bW4uCisKKyAgICAiIiIKKworICAgIG5v ZGVfdHlwZSA9ICdleGNsdXNpb25fY29uc3RyYWludCcKKworICAgIHBhcmVu dF9pZHMgPSBbCisgICAgICAgICAgICB7J3R5cGUnOiAnaW50JywgJ2lkJzog J2dpZCd9LAorICAgICAgICAgICAgeyd0eXBlJzogJ2ludCcsICdpZCc6ICdz aWQnfSwKKyAgICAgICAgICAgIHsndHlwZSc6ICdpbnQnLCAnaWQnOiAnZGlk J30sCisgICAgICAgICAgICB7J3R5cGUnOiAnaW50JywgJ2lkJzogJ3NjaWQn fSwKKyAgICAgICAgICAgIHsndHlwZSc6ICdpbnQnLCAnaWQnOiAndGlkJ30K KyAgICAgICAgICAgIF0KKyAgICBpZHMgPSBbeyd0eXBlJzogJ2ludCcsICdp ZCc6ICdleGlkJ30KKyAgICAgICAgICAgIF0KKworICAgIG9wZXJhdGlvbnMg PSBkaWN0KHsKKyAgICAgICAgJ29iaic6IFsKKyAgICAgICAgICAgIHsnZ2V0 JzogJ3Byb3BlcnRpZXMnLCAnZGVsZXRlJzogJ2RlbGV0ZScsICdwdXQnOiAn dXBkYXRlJ30sCisgICAgICAgICAgICB7J2dldCc6ICdsaXN0JywgJ3Bvc3Qn OiAnY3JlYXRlJ30KKyAgICAgICAgXSwKKyAgICAgICAgJ2RlbGV0ZSc6IFt7 J2RlbGV0ZSc6ICdkZWxldGUnfV0sCisgICAgICAgICdjaGlsZHJlbic6IFt7 J2dldCc6ICdjaGlsZHJlbid9XSwKKyAgICAgICAgJ25vZGVzJzogW3snZ2V0 JzogJ25vZGUnfSwgeydnZXQnOiAnbm9kZXMnfV0sCisgICAgICAgICdzcWwn OiBbeydnZXQnOiAnc3FsJ31dLAorICAgICAgICAnbXNxbCc6IFt7J2dldCc6 ICdtc3FsJ30sIHsnZ2V0JzogJ21zcWwnfV0sCisgICAgICAgICdzdGF0cyc6 IFt7J2dldCc6ICdzdGF0aXN0aWNzJ31dLAorICAgICAgICAnbW9kdWxlLmpz JzogW3t9LCB7fSwgeydnZXQnOiAnbW9kdWxlX2pzJ31dCisgICAgfSkKKwor ICAgIGRlZiBtb2R1bGVfanMoc2VsZik6CisgICAgICAgICIiIgorICAgICAg ICBUaGlzIHByb3BlcnR5IGRlZmluZXMgKGlmIGphdmFzY3JpcHQpIGV4aXN0 cyBmb3IgdGhpcyBub2RlLgorICAgICAgICBPdmVycmlkZSB0aGlzIHByb3Bl cnR5IGZvciB5b3VyIG93biBsb2dpYy4KKyAgICAgICAgIiIiCisgICAgICAg IHJldHVybiBtYWtlX3Jlc3BvbnNlKAorICAgICAgICAgICAgICAgIHJlbmRl cl90ZW1wbGF0ZSgKKyAgICAgICAgICAgICAgICAgICAgImV4Y2x1c2lvbl9j b25zdHJhaW50L2pzL2V4Y2x1c2lvbl9jb25zdHJhaW50LmpzIiwKKyAgICAg ICAgICAgICAgICAgICAgXz1fCisgICAgICAgICAgICAgICAgICAgICksCisg ICAgICAgICAgICAgICAgMjAwLCB7J0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNh dGlvbi94LWphdmFzY3JpcHQnfQorICAgICAgICAgICAgICAgICkKKworICAg IGRlZiBjaGVja19wcmVjb25kaXRpb24oZik6CisgICAgICAgICIiIgorICAg ICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgYmVoYXZlIGFzIGEgZGVjb3JhdG9y IHdoaWNoIHdpbGwgY2hlY2tzCisgICAgICAgIGRhdGFiYXNlIGNvbm5lY3Rp b24gYmVmb3JlIHJ1bm5pbmcgdmlldywgaXQgd2lsbCBhbHNvIGF0dGFjaGVz CisgICAgICAgIG1hbmFnZXIsY29ubiAmIHRlbXBsYXRlX3BhdGggcHJvcGVy dGllcyB0byBzZWxmCisgICAgICAgICIiIgorICAgICAgICBAd3JhcHMoZikK KyAgICAgICAgZGVmIHdyYXAoKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAg ICAgICMgSGVyZSBhcmdzWzBdIHdpbGwgaG9sZCBzZWxmICYga3dhcmdzIHdp bGwgaG9sZCBnaWQsc2lkLGRpZAorICAgICAgICAgICAgc2VsZiA9IGFyZ3Nb MF0KKyAgICAgICAgICAgIHNlbGYubWFuYWdlciA9IGdldF9kcml2ZXIoUEdf REVGQVVMVF9EUklWRVIpLmNvbm5lY3Rpb25fbWFuYWdlcigKKyAgICAgICAg ICAgICAgICBrd2FyZ3NbJ3NpZCddCisgICAgICAgICAgICAgICAgKQorICAg ICAgICAgICAgc2VsZi5jb25uID0gc2VsZi5tYW5hZ2VyLmNvbm5lY3Rpb24o ZGlkPWt3YXJnc1snZGlkJ10pCisKKyAgICAgICAgICAgICMgSWYgREIgbm90 IGNvbm5lY3RlZCB0aGVuIHJldHVybiBlcnJvciB0byBicm93c2VyCisgICAg ICAgICAgICBpZiBub3Qgc2VsZi5jb25uLmNvbm5lY3RlZCgpOgorICAgICAg ICAgICAgICAgIHJldHVybiBwcmVjb25kaXRpb25fcmVxdWlyZWQoCisgICAg ICAgICAgICAgICAgICAgIF8oCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIkNvbm5lY3Rpb24gdG8gdGhlIHNlcnZlciBoYXMgYmVlbiBsb3N0ISIK KyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICkKKwor ICAgICAgICAgICAgdmVyID0gc2VsZi5tYW5hZ2VyLnZlcnNpb24KKworICAg ICAgICAgICAgaWYgdmVyID49IDkwMjAwOgorICAgICAgICAgICAgICAgIHNl bGYudGVtcGxhdGVfcGF0aCA9ICdleGNsdXNpb25fY29uc3RyYWludC9zcWwv OS4yX3BsdXMnCisgICAgICAgICAgICBlbGlmIHZlciA+PSA5MDEwMDoKKyAg ICAgICAgICAgICAgICBzZWxmLnRlbXBsYXRlX3BhdGggPSAnZXhjbHVzaW9u X2NvbnN0cmFpbnQvc3FsLzkuMV9wbHVzJworCisgICAgICAgICAgICAjIFdl IG5lZWQgcGFyZW50J3MgbmFtZSBlZyB0YWJsZSBuYW1lIGFuZCBzY2hlbWEg bmFtZQorICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5q b2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICdnZXRfcGFyZW50LnNxbCddKSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWQ9a3dhcmdz Wyd0aWQnXSkKKyAgICAgICAgICAgIHN0YXR1cywgcnNldCA9IHNlbGYuY29u bi5leGVjdXRlXzJkYXJyYXkoU1FMKQorICAgICAgICAgICAgaWYgbm90IHN0 YXR1czoKKyAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVy X2Vycm9yKGVycm9ybXNnPXJzZXQpCisKKyAgICAgICAgICAgIGZvciByb3cg aW4gcnNldFsncm93cyddOgorICAgICAgICAgICAgICAgIHNlbGYuc2NoZW1h ID0gcm93WydzY2hlbWEnXQorICAgICAgICAgICAgICAgIHNlbGYudGFibGUg PSByb3dbJ3RhYmxlJ10KKyAgICAgICAgICAgIHJldHVybiBmKCphcmdzLCAq Kmt3YXJncykKKworICAgICAgICByZXR1cm4gd3JhcAorCisgICAgZGVmIGVu ZF90cmFuc2FjdGlvbihzZWxmKToKKyAgICAgICAgU1FMID0gcmVuZGVyX3Rl bXBsYXRlKAorICAgICAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRlbXBs YXRlX3BhdGgsICdlbmQuc3FsJ10pKQorICAgICAgICAjIEVuZCB0cmFuc2Fj dGlvbiBpZiBhbnkuCisgICAgICAgIHNlbGYuY29ubi5leGVjdXRlX3NjYWxh cihTUUwpCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVmIHBy b3BlcnRpZXMoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgdGlkLCBleGlk PU5vbmUpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiBp cyB1c2VkIHRvIGxpc3QgYWxsIHRoZSBFeGNsdXNpb24gY29uc3RyYWludAor ICAgICAgICBub2RlcyB3aXRoaW4gdGhhdCBjb2xsZWN0aW9uLgorCisgICAg ICAgIEFyZ3M6CisgICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAgSUQKKyAg ICAgICAgICBzaWQ6IFNlcnZlciBJRAorICAgICAgICAgIGRpZDogRGF0YWJh c2UgSUQKKyAgICAgICAgICBzY2lkOiBTY2hlbWEgSUQKKyAgICAgICAgICB0 aWQ6IFRhYmxlIElECisgICAgICAgICAgZXhpZDogRXhjbHVzaW9uIGNvbnN0 cmFpbnQgSUQKKworICAgICAgICBSZXR1cm5zOgorCisgICAgICAgICIiIgor ICAgICAgICB0cnk6CisgICAgICAgICAgICBzcWwgPSByZW5kZXJfdGVtcGxh dGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ3Byb3BlcnRpZXMu c3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRp ZD10aWQsIGNpZD1leGlkKQorCisgICAgICAgICAgICBzdGF0dXMsIHJlcyA9 IHNlbGYuY29ubi5leGVjdXRlX2RpY3Qoc3FsKQorCisgICAgICAgICAgICBp ZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5h bF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgICAgICBy ZXN1bHQgPSByZXNbJ3Jvd3MnXVswXQorCisgICAgICAgICAgICBzcWwgPSBy ZW5kZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAgICAgIi8iLmpvaW4oW3Nl bGYudGVtcGxhdGVfcGF0aCwgJ2dldF9jb25zdHJhaW50X2NvbHMuc3FsJ10p LAorICAgICAgICAgICAgICAgIGNpZD1leGlkLAorICAgICAgICAgICAgICAg IGNvbGNudD1yZXN1bHRbJ2luZG5hdHRzJ10pCisgICAgICAgICAgICBzdGF0 dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3Qoc3FsKQorCisgICAg ICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgIHJldHVy biBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAg ICAgICAgICBjb2x1bW5zID0gW10KKyAgICAgICAgICAgIGZvciByb3cgaW4g cmVzWydyb3dzJ106CisgICAgICAgICAgICAgICAgaWYgcm93WydvcHRpb25z J10gJiAxOgorICAgICAgICAgICAgICAgICAgICBvcmRlciA9IEZhbHNlCisg ICAgICAgICAgICAgICAgICAgIG51bGxzX29yZGVyID0gVHJ1ZSBpZiAocm93 WydvcHRpb25zJ10gJiAyKSBlbHNlIEZhbHNlCisgICAgICAgICAgICAgICAg ZWxzZToKKyAgICAgICAgICAgICAgICAgICAgb3JkZXIgPSBUcnVlCisgICAg ICAgICAgICAgICAgICAgIG51bGxzX29yZGVyID0gVHJ1ZSBpZiAocm93Wydv cHRpb25zJ10gJiAyKSBlbHNlIEZhbHNlCisKKyAgICAgICAgICAgICAgICBj b2x1bW5zLmFwcGVuZCh7ImNvbHVtbiI6IHJvd1snY29sZGVmJ10uc3RyaXAo JyInKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9wZXJf Y2xhc3MiOiByb3dbJ29wY25hbWUnXSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIm9yZGVyIjogb3JkZXIsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICJudWxsc19vcmRlciI6IG51bGxzX29yZGVyLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib3BlcmF0b3IiOiBy b3dbJ29wcm5hbWUnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgImNvbF90eXBlIjogcm93WydkYXRhdHlwZSddCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIH0pCisKKyAgICAgICAgICAgIHJlc3VsdFsn Y29sdW1ucyddID0gY29sdW1ucworCisgICAgICAgICAgICByZXR1cm4gYWph eF9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2U9cmVz dWx0LAorICAgICAgICAgICAgICAgICAgICBzdGF0dXM9MjAwCisgICAgICAg ICAgICAgICAgICAgICkKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBl OgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihl cnJvcm1zZz1zdHIoZSkpCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisg ICAgZGVmIGxpc3Qoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgdGlkLCBl eGlkPU5vbmUpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlv biByZXR1cm5zIGFsbCBleGNsdXNpb24gY29uc3RyYWludHMKKyAgICAgICAg bm9kZXMgd2l0aGluIHRoYXQgY29sbGVjdGlvbiBhcyBhIGh0dHAgcmVzcG9u c2UuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICBnaWQ6IFNlcnZlciBH cm91cCBJRAorICAgICAgICAgIHNpZDogU2VydmVyIElECisgICAgICAgICAg ZGlkOiBEYXRhYmFzZSBJRAorICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJRAor ICAgICAgICAgIHRpZDogVGFibGUgSUQKKyAgICAgICAgICBleGlkOiBFeGNs dXNpb24gY29uc3RyYWludCBJRAorCisgICAgICAgIFJldHVybnM6CisKKyAg ICAgICAgIiIiCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJlcyA9IHNl bGYuZ2V0X25vZGVfbGlzdChnaWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQsIGV4 aWQpCisgICAgICAgICAgICByZXR1cm4gYWpheF9yZXNwb25zZSgKKyAgICAg ICAgICAgICAgICAgICAgcmVzcG9uc2U9cmVzLAorICAgICAgICAgICAgICAg ICAgICBzdGF0dXM9MjAwCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAg ICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgcmV0dXJu IGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1zdHIoZSkpCisKKyAg ICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVmIGdldF9ub2RlX2xpc3Qo c2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgdGlkLCBleGlkPU5vbmUpOgor ICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiByZXR1cm5zIGFs bCBleGNsdXNpb24gY29uc3RyYWludHMKKyAgICAgICAgbm9kZXMgd2l0aGlu IHRoYXQgY29sbGVjdGlvbiBhcyBhIGxpc3QuCisKKyAgICAgICAgQXJnczoK KyAgICAgICAgICBnaWQ6IFNlcnZlciBHcm91cCBJRAorICAgICAgICAgIHNp ZDogU2VydmVyIElECisgICAgICAgICAgZGlkOiBEYXRhYmFzZSBJRAorICAg ICAgICAgIHNjaWQ6IFNjaGVtYSBJRAorICAgICAgICAgIHRpZDogVGFibGUg SUQKKyAgICAgICAgICBleGlkOiBFeGNsdXNpb24gY29uc3RyYWludCBJRAor CisgICAgICAgIFJldHVybnM6CisKKyAgICAgICAgIiIiCisgICAgICAgIFNR TCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9w YXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICdwcm9wZXJ0aWVzLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB0aWQ9dGlkKQorICAgICAgICBzdGF0dXMsIHJl cyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQorCisgICAgICAgIHJl dHVybiByZXNbJ3Jvd3MnXQorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgor ICAgIGRlZiBub2RlcyhzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQs IGV4aWQ9Tm9uZSk6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0 aW9uIHJldHVybnMgYWxsIEV4Y2x1c2lvbiBjb25zdHJhaW50IG5vZGVzIGFz IGEKKyAgICAgICAgaHR0cCByZXNwb25zZS4KKworICAgICAgICBBcmdzOgor ICAgICAgICAgIGdpZDogU2VydmVyIEdyb3VwIElECisgICAgICAgICAgc2lk OiBTZXJ2ZXIgSUQKKyAgICAgICAgICBkaWQ6IERhdGFiYXNlIElECisgICAg ICAgICAgc2NpZDogU2NoZW1hIElECisgICAgICAgICAgdGlkOiBUYWJsZSBJ RAorICAgICAgICAgIGV4aWQ6IEV4Y2x1c2lvbiBjb25zdHJhaW50IElECisK KyAgICAgICAgUmV0dXJuczoKKworICAgICAgICAiIiIKKyAgICAgICAgdHJ5 OgorICAgICAgICAgICAgcmVzID0gc2VsZi5nZXRfbm9kZXMoZ2lkLCBzaWQs IGRpZCwgc2NpZCwgdGlkLCBleGlkKQorICAgICAgICAgICAgcmV0dXJuIG1h a2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICAgICAgZGF0YT1y ZXMsCisgICAgICAgICAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAgICAg ICAgICAgICAgICAgKQorICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6 CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVy cm9ybXNnPXN0cihlKSkKKworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAg ICBkZWYgZ2V0X25vZGVzKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRp ZCwgZXhpZD1Ob25lKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVu Y3Rpb24gcmV0dXJucyBhbGwgRXhjbHVzaW9uIGNvbnN0cmFpbnQgbm9kZXMg YXMgYSBsaXN0LgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgZ2lkOiBT ZXJ2ZXIgR3JvdXAgSUQKKyAgICAgICAgICBzaWQ6IFNlcnZlciBJRAorICAg ICAgICAgIGRpZDogRGF0YWJhc2UgSUQKKyAgICAgICAgICBzY2lkOiBTY2hl bWEgSUQKKyAgICAgICAgICB0aWQ6IFRhYmxlIElECisgICAgICAgICAgZXhp ZDogRXhjbHVzaW9uIGNvbnN0cmFpbnQgSUQKKworICAgICAgICBSZXR1cm5z OgorCisgICAgICAgICIiIgorICAgICAgICByZXMgPSBbXQorICAgICAgICBT UUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVf cGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAnbm9kZXMuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdGlkPXRpZCkKKyAgICAgICAgc3RhdHVzLCByc2V0ID0gc2VsZi5jb25u LmV4ZWN1dGVfMmRhcnJheShTUUwpCisKKyAgICAgICAgZm9yIHJvdyBpbiBy c2V0Wydyb3dzJ106CisgICAgICAgICAgICByZXMuYXBwZW5kKAorICAgICAg ICAgICAgICAgICAgICBzZWxmLmJsdWVwcmludC5nZW5lcmF0ZV9icm93c2Vy X25vZGUoCisgICAgICAgICAgICAgICAgICAgICAgICByb3dbJ29pZCddLAor ICAgICAgICAgICAgICAgICAgICAgICAgdGlkLAorICAgICAgICAgICAgICAg ICAgICAgICAgcm93WyduYW1lJ10sCisgICAgICAgICAgICAgICAgICAgICAg ICBpY29uPSJpY29uLWV4Y2x1c2lvbl9jb25zdHJhaW50IgorICAgICAgICAg ICAgICAgICAgICApKQorICAgICAgICByZXR1cm4gcmVzCisKKyAgICBAY2hl Y2tfcHJlY29uZGl0aW9uCisgICAgZGVmIGNyZWF0ZShzZWxmLCBnaWQsIHNp ZCwgZGlkLCBzY2lkLCB0aWQsIGV4aWQ9Tm9uZSk6CisgICAgICAgICIiIgor ICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgY3JlYXRlIGEgRXhjbHVzaW9u IGNvbnN0cmFpbnQuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICBnaWQ6 IFNlcnZlciBHcm91cCBJRAorICAgICAgICAgIHNpZDogU2VydmVyIElECisg ICAgICAgICAgZGlkOiBEYXRhYmFzZSBJRAorICAgICAgICAgIHNjaWQ6IFNj aGVtYSBJRAorICAgICAgICAgIHRpZDogVGFibGUgSUQKKyAgICAgICAgICBl eGlkOiBFeGNsdXNpb24gY29uc3RyYWludCBJRAorCisgICAgICAgIFJldHVy bnM6CisKKyAgICAgICAgIiIiCisgICAgICAgIHJlcXVpcmVkX2FyZ3MgPSBb J2NvbHVtbnMnXQorCisgICAgICAgIGRhdGEgPSByZXF1ZXN0LmZvcm0gaWYg cmVxdWVzdC5mb3JtIGVsc2UganNvbi5sb2FkcyhyZXF1ZXN0LmRhdGEuZGVj b2RlKCkpCisKKyAgICAgICAgZm9yIGssIHYgaW4gZGF0YS5pdGVtcygpOgor ICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGRhdGFba10gPSBq c29uLmxvYWRzKHYpCisgICAgICAgICAgICBleGNlcHQgKFZhbHVlRXJyb3Is IFR5cGVFcnJvcik6CisgICAgICAgICAgICAgICAgZGF0YVtrXSA9IHYKKwor ICAgICAgICBmb3IgYXJnIGluIHJlcXVpcmVkX2FyZ3M6CisgICAgICAgICAg ICBpZiBhcmcgbm90IGluIGRhdGE6CisgICAgICAgICAgICAgICAgcmV0dXJu IG1ha2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICAgICAgICBz dGF0dXM9NDAwLAorICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M9MCwK KyAgICAgICAgICAgICAgICAgICAgICBlcnJvcm1zZz1fKAorICAgICAgICAg ICAgICAgICAgICAgICAgICAiQ291bGRuJ3QgZmluZCByZXF1aXJlZCBwYXJh bWV0ZXIgKCVzKS4iICUgc3RyKGFyZykKKyAgICAgICAgICAgICAgICAgICAg ICApCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIGVsaWYg aXNpbnN0YW5jZShkYXRhW2FyZ10sIGxpc3QpIGFuZCBsZW4oZGF0YVthcmdd KSA8IDE6CisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNw b25zZSgKKyAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM9NDAwLAorICAg ICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M9MCwKKyAgICAgICAgICAgICAg ICAgICAgICBlcnJvcm1zZz1fKAorICAgICAgICAgICAgICAgICAgICAgICAg ICAiQ291bGRuJ3QgZmluZCByZXF1aXJlZCBwYXJhbWV0ZXIgKCVzKS4iICUg c3RyKGFyZykKKyAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAg ICAgICAgICAgICkKKworICAgICAgICBkYXRhWydzY2hlbWEnXSA9IHNlbGYu c2NoZW1hCisgICAgICAgIGRhdGFbJ3RhYmxlJ10gPSBzZWxmLnRhYmxlCisg ICAgICAgIHRyeToKKyAgICAgICAgICAgIGlmICduYW1lJyBub3QgaW4gZGF0 YSBvciBkYXRhWyduYW1lJ10gPT0gIiI6CisgICAgICAgICAgICAgICAgU1FM ID0gcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAgICAgICAgICAiLyIu am9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAnYmVnaW4uc3FsJ10pKQorICAg ICAgICAgICAgICAgICMgU3RhcnQgdHJhbnNhY3Rpb24uCisgICAgICAgICAg ICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9zY2FsYXIo U1FMKQorICAgICAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAg ICAgICAgICAgICAgIHNlbGYuZW5kX3RyYW5zYWN0aW9uKCkKKyAgICAgICAg ICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJv cm1zZz1yZXMpCisKKyAgICAgICAgICAgICMgVGhlIGJlbG93IFNRTCB3aWxs IGV4ZWN1dGUgQ1JFQVRFIERETCBvbmx5CisgICAgICAgICAgICBTUUwgPSBy ZW5kZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAgICAgIi8iLmpvaW4oW3Nl bGYudGVtcGxhdGVfcGF0aCwgJ2NyZWF0ZS5zcWwnXSksCisgICAgICAgICAg ICAgICAgZGF0YT1kYXRhLCBjb25uPXNlbGYuY29ubgorICAgICAgICAgICAg ICAgICkKKyAgICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4 ZWN1dGVfc2NhbGFyKFNRTCkKKyAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6 CisgICAgICAgICAgICAgICAgc2VsZi5lbmRfdHJhbnNhY3Rpb24oKQorICAg ICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJy b3Jtc2c9cmVzKQorCisgICAgICAgICAgICBpZiAnbmFtZScgbm90IGluIGRh dGEgb3IgZGF0YVsnbmFtZSddID09ICIiOgorICAgICAgICAgICAgICAgIHNx bCA9IHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgICAgICAgICAgICAgIi8i LmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICdnZXRfb2lkX3dpdGhfdHJhbnNhY3Rpb24uc3FsJ10p LAorICAgICAgICAgICAgICAgICAgICB0aWQ9dGlkKQorCisgICAgICAgICAg ICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KHNx bCkKKyAgICAgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAg ICAgICAgICAgICBzZWxmLmVuZF90cmFuc2FjdGlvbigpCisgICAgICAgICAg ICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jt c2c9cmVzKQorCisgICAgICAgICAgICAgICAgc2VsZi5lbmRfdHJhbnNhY3Rp b24oKQorCisgICAgICAgICAgICAgICAgZGF0YVsnbmFtZSddID0gcmVzWydy b3dzJ11bMF1bJ25hbWUnXQorCisgICAgICAgICAgICBlbHNlOgorICAgICAg ICAgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2Vs Zi50ZW1wbGF0ZV9wYXRoLCAnZ2V0X29pZC5zcWwnXSksIG5hbWU9ZGF0YVsn bmFtZSddKQorICAgICAgICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5j b25uLmV4ZWN1dGVfZGljdChzcWwpCisgICAgICAgICAgICAgICAgaWYgbm90 IHN0YXR1czoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5lbmRfdHJhbnNh Y3Rpb24oKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxf c2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKyAgICAgICAgICAgIGlmICdu YW1lJyBpbiBkYXRhIGFuZCBkYXRhWyduYW1lJ10gIT0gJyc6CisgICAgICAg ICAgICAgICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxm LnRlbXBsYXRlX3BhdGgsICdhbHRlci5zcWwnXSksIGRhdGE9ZGF0YSwgY29u bj1zZWxmLmNvbm4pCisgICAgICAgICAgICAgICAgc3FsID0gc3FsLnN0cmlw KCdcbicpLnN0cmlwKCcgJykKKworICAgICAgICAgICAgICAgIGlmIHNxbCAh PSAnJzoKKyAgICAgICAgICAgICAgICAgICAgc3RhdHVzLCByZXN1bHQgPSBz ZWxmLmNvbm4uZXhlY3V0ZV9zY2FsYXIoc3FsKQorICAgICAgICAgICAgICAg ICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgICAgICAgICAg c2VsZi5lbmRfdHJhbnNhY3Rpb24oKQorICAgICAgICAgICAgICAgICAgICAg ICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXN1 bHQpCisKKyAgICAgICAgICAgIHJldHVybiBqc29uaWZ5KAorICAgICAgICAg ICAgICAgIG5vZGU9c2VsZi5ibHVlcHJpbnQuZ2VuZXJhdGVfYnJvd3Nlcl9u b2RlKAorICAgICAgICAgICAgICAgICAgICByZXNbJ3Jvd3MnXVswXVsnb2lk J10sCisgICAgICAgICAgICAgICAgICAgIHRpZCwKKyAgICAgICAgICAgICAg ICAgICAgZGF0YVsnbmFtZSddLAorICAgICAgICAgICAgICAgICAgICBpY29u PSJpY29uLWV4Y2x1c2lvbl9jb25zdHJhaW50IgorICAgICAgICAgICAgICAg ICAgICApCisgICAgICAgICAgICAgICAgKQorCisgICAgICAgIGV4Y2VwdCBF eGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIHNlbGYuZW5kX3RyYW5zYWN0 aW9uKCkKKworICAgICAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25z ZSgKKyAgICAgICAgICAgICAgICBzdGF0dXM9NDAwLAorICAgICAgICAgICAg ICAgIHN1Y2Nlc3M9MCwKKyAgICAgICAgICAgICAgICBlcnJvcm1zZz1lCisg ICAgICAgICAgICApCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAg ZGVmIHVwZGF0ZShzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQsIGV4 aWQ9Tm9uZSk6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9u IHdpbGwgdXBkYXRlIHRoZSBkYXRhIGZvciB0aGUgc2VsZWN0ZWQKKyAgICAg ICAgRXhjbHVzaW9uIGNvbnN0cmFpbnQuCisKKyAgICAgICAgQXJnczoKKyAg ICAgICAgICBnaWQ6IFNlcnZlciBHcm91cCBJRAorICAgICAgICAgIHNpZDog U2VydmVyIElECisgICAgICAgICAgZGlkOiBEYXRhYmFzZSBJRAorICAgICAg ICAgIHNjaWQ6IFNjaGVtYSBJRAorICAgICAgICAgIHRpZDogVGFibGUgSUQK KyAgICAgICAgICBleGlkOiBFeGNsdXNpb24gY29uc3RyYWludCBJRAorCisg ICAgICAgIFJldHVybnM6CisKKyAgICAgICAgIiIiCisgICAgICAgIGRhdGEg PSByZXF1ZXN0LmZvcm0gaWYgcmVxdWVzdC5mb3JtIGVsc2UganNvbi5sb2Fk cyhyZXF1ZXN0LmRhdGEuZGVjb2RlKCkpCisKKyAgICAgICAgdHJ5OgorICAg ICAgICAgICAgZGF0YVsnc2NoZW1hJ10gPSBzZWxmLnNjaGVtYQorICAgICAg ICAgICAgZGF0YVsndGFibGUnXSA9IHNlbGYudGFibGUKKyAgICAgICAgICAg IHNxbCA9IHNlbGYuZ2V0X3NxbChkYXRhLCB0aWQsIGV4aWQpCisgICAgICAg ICAgICBzcWwgPSBzcWwuc3RyaXAoJ1xuJykuc3RyaXAoJyAnKQorICAgICAg ICAgICAgaWYgc3FsICE9ICIiOgorICAgICAgICAgICAgICAgIHN0YXR1cywg cmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfc2NhbGFyKHNxbCkKKyAgICAgICAg ICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgICAgICBy ZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKwor ICAgICAgICAgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9p bihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAnZ2V0X29pZC5zcWwnXSksIG5hbWU9 ZGF0YVsnbmFtZSddKQorICAgICAgICAgICAgICAgIHN0YXR1cywgcmVzID0g c2VsZi5jb25uLmV4ZWN1dGVfZGljdChzcWwpCisgICAgICAgICAgICAgICAg aWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlu dGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAg ICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAg ICAgICAgICAgICBzdWNjZXNzPTEsCisgICAgICAgICAgICAgICAgICAgIGlu Zm89IkV4Y2x1c2lvbiBjb25zdHJhaW50IHVwZGF0ZWQiLAorICAgICAgICAg ICAgICAgICAgICBkYXRhPXsKKyAgICAgICAgICAgICAgICAgICAgICAgICdp ZCc6IHJlc1sncm93cyddWzBdWydvaWQnXSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICd0aWQnOiB0aWQsCisgICAgICAgICAgICAgICAgICAgICAgICAn c2NpZCc6IHNjaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAnc2lkJzog c2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2dpZCc6IGdpZCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICdkaWQnOiBkaWQsCisgICAgICAgICAg ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBl bHNlOgorICAgICAgICAgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9u c2UoCisgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M9MSwKKyAgICAgICAg ICAgICAgICAgICAgaW5mbz0iTm90aGluZyB0byB1cGRhdGUiLAorICAgICAg ICAgICAgICAgICAgICBkYXRhPXsKKyAgICAgICAgICAgICAgICAgICAgICAg ICdpZCc6IGV4aWQsCisgICAgICAgICAgICAgICAgICAgICAgICAndGlkJzog dGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgJ3NjaWQnOiBzY2lkLAor ICAgICAgICAgICAgICAgICAgICAgICAgJ3NpZCc6IHNpZCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICdnaWQnOiBnaWQsCisgICAgICAgICAgICAgICAg ICAgICAgICAnZGlkJzogZGlkCisgICAgICAgICAgICAgICAgICAgIH0KKyAg ICAgICAgICAgICAgICApCisKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBh cyBlOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJv cihlcnJvcm1zZz1zdHIoZSkpCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9u CisgICAgZGVmIGRlbGV0ZShzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCB0 aWQsIGV4aWQ9Tm9uZSk6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1 bmN0aW9uIHdpbGwgZGVsZXRlIGFuIGV4aXN0aW5nIEV4Y2x1c2lvbi4KKwor ICAgICAgICBBcmdzOgorICAgICAgICAgIGdpZDogU2VydmVyIEdyb3VwIElE CisgICAgICAgICAgc2lkOiBTZXJ2ZXIgSUQKKyAgICAgICAgICBkaWQ6IERh dGFiYXNlIElECisgICAgICAgICAgc2NpZDogU2NoZW1hIElECisgICAgICAg ICAgdGlkOiBUYWJsZSBJRAorICAgICAgICAgIGV4aWQ6IEV4Y2x1c2lvbiBj b25zdHJhaW50IElECisKKyAgICAgICAgUmV0dXJuczoKKworICAgICAgICAi IiIKKyAgICAgICAgIyBCZWxvdyBjb2RlIHdpbGwgZGVjaWRlIGlmIGl0J3Mg c2ltcGxlIGRyb3Agb3IgZHJvcCB3aXRoIGNhc2NhZGUgY2FsbAorICAgICAg ICBpZiBzZWxmLmNtZCA9PSAnZGVsZXRlJzoKKyAgICAgICAgICAgICMgVGhp cyBpcyBhIGNhc2NhZGUgb3BlcmF0aW9uCisgICAgICAgICAgICBjYXNjYWRl ID0gVHJ1ZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgY2FzY2FkZSA9 IEZhbHNlCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNxbCA9IHJlbmRl cl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAnZ2V0 X25hbWUuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNpZD1leGlkKQorICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxm LmNvbm4uZXhlY3V0ZV9kaWN0KHNxbCkKKyAgICAgICAgICAgIGlmIG5vdCBz dGF0dXM6CisgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZl cl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgICAgIGRhdGEgPSBy ZXNbJ3Jvd3MnXVswXQorICAgICAgICAgICAgZGF0YVsnc2NoZW1hJ10gPSBz ZWxmLnNjaGVtYQorICAgICAgICAgICAgZGF0YVsndGFibGUnXSA9IHNlbGYu dGFibGUKKworICAgICAgICAgICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKCIv Ii5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdkZWxldGUuc3FsJ10pLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9ZGF0YSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNjYWRlPWNh c2NhZGUpCisgICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5l eGVjdXRlX3NjYWxhcihzcWwpCisgICAgICAgICAgICBpZiBub3Qgc3RhdHVz OgorICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJy b3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgICAgICByZXR1cm4gbWFrZV9q c29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgICAgIHN1Y2Nlc3M9MSwKKyAg ICAgICAgICAgICAgICBpbmZvPV8oIkV4Y2x1c2lvbiBjb25zdHJhaW50IGRy b3BwZWQuIiksCisgICAgICAgICAgICAgICAgZGF0YT17CisgICAgICAgICAg ICAgICAgICAgICdpZCc6IGV4aWQsCisgICAgICAgICAgICAgICAgICAgICdz aWQnOiBzaWQsCisgICAgICAgICAgICAgICAgICAgICdnaWQnOiBnaWQsCisg ICAgICAgICAgICAgICAgICAgICdkaWQnOiBkaWQKKyAgICAgICAgICAgICAg ICB9CisgICAgICAgICAgICApCisKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlv biBhcyBlOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9l cnJvcihlcnJvcm1zZz1zdHIoZSkpCisKKyAgICBAY2hlY2tfcHJlY29uZGl0 aW9uCisgICAgZGVmIG1zcWwoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwg dGlkLCBleGlkPU5vbmUpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBm dW5jdGlvbiByZXR1cm5zIG1vZGlmaWVkIFNRTCBmb3IgdGhlIHNlbGVjdGVk CisgICAgICAgIEV4Y2x1c2lvbiBjb25zdHJhaW50LgorCisgICAgICAgIEFy Z3M6CisgICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAgSUQKKyAgICAgICAg ICBzaWQ6IFNlcnZlciBJRAorICAgICAgICAgIGRpZDogRGF0YWJhc2UgSUQK KyAgICAgICAgICBzY2lkOiBTY2hlbWEgSUQKKyAgICAgICAgICB0aWQ6IFRh YmxlIElECisgICAgICAgICAgZXhpZDogRXhjbHVzaW9uIGNvbnN0cmFpbnQg SUQKKworICAgICAgICBSZXR1cm5zOgorCisgICAgICAgICIiIgorICAgICAg ICBkYXRhID0ge30KKyAgICAgICAgZm9yIGssIHYgaW4gcmVxdWVzdC5hcmdz Lml0ZW1zKCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAg ZGF0YVtrXSA9IGpzb24ubG9hZHModikKKyAgICAgICAgICAgIGV4Y2VwdCBW YWx1ZUVycm9yOgorICAgICAgICAgICAgICAgIGRhdGFba10gPSB2CisKKyAg ICAgICAgZGF0YVsnc2NoZW1hJ10gPSBzZWxmLnNjaGVtYQorICAgICAgICBk YXRhWyd0YWJsZSddID0gc2VsZi50YWJsZQorICAgICAgICB0cnk6CisgICAg ICAgICAgICBzcWwgPSBzZWxmLmdldF9zcWwoZGF0YSwgdGlkLCBleGlkKQor ICAgICAgICAgICAgc3FsID0gc3FsLnN0cmlwKCdcbicpLnN0cmlwKCcgJykK KworICAgICAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKKyAg ICAgICAgICAgICAgICAgICAgZGF0YT1zcWwsCisgICAgICAgICAgICAgICAg ICAgIHN0YXR1cz0yMDAKKyAgICAgICAgICAgICAgICAgICAgKQorCisgICAg ICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIHJldHVy biBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKGUpKQorCisg ICAgZGVmIGdldF9zcWwoc2VsZiwgZGF0YSwgdGlkLCBleGlkPU5vbmUpOgor ICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIGdlbmVy YXRlIHNxbCBmcm9tIG1vZGVsIGRhdGEuCisKKyAgICAgICAgQXJnczoKKyAg ICAgICAgICBkYXRhOiBDb250YWlucyB0aGUgZGF0YSBvZiB0aGUgc2VsZWN0 ZWQgRXhjbHVzaW9uIGNvbnN0cmFpbnQuCisgICAgICAgICAgdGlkOiBUYWJs ZSBJRC4KKyAgICAgICAgICBleGlkOiBFeGNsdXNpb24gY29uc3RyYWludCBJ RAorCisgICAgICAgIFJldHVybnM6CisKKyAgICAgICAgIiIiCisgICAgICAg IGlmIGV4aWQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzcWwgPSByZW5k ZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ3By b3BlcnRpZXMuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHRpZD10aWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY2lkPWV4aWQpCisgICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNl bGYuY29ubi5leGVjdXRlX2RpY3Qoc3FsKQorICAgICAgICAgICAgaWYgbm90 IHN0YXR1czoKKyAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2Vy dmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKworICAgICAgICAgICAgb2xkX2Rh dGEgPSByZXNbJ3Jvd3MnXVswXQorICAgICAgICAgICAgcmVxdWlyZWRfYXJn cyA9IFsnbmFtZSddCisgICAgICAgICAgICBmb3IgYXJnIGluIHJlcXVpcmVk X2FyZ3M6CisgICAgICAgICAgICAgICAgaWYgYXJnIG5vdCBpbiBkYXRhOgor ICAgICAgICAgICAgICAgICAgICBkYXRhW2FyZ10gPSBvbGRfZGF0YVthcmdd CisKKyAgICAgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9p bihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAndXBkYXRlLnNxbCddKSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPWRhdGEsIG9fZGF0 YT1vbGRfZGF0YSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJlcXVp cmVkX2FyZ3MgPSBbJ2NvbHVtbnMnXQorCisgICAgICAgICAgICBmb3IgYXJn IGluIHJlcXVpcmVkX2FyZ3M6CisgICAgICAgICAgICAgICAgaWYgYXJnIG5v dCBpbiBkYXRhOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gXygnLS0g ZGVmaW5pdGlvbiBpbmNvbXBsZXRlJykKKyAgICAgICAgICAgICAgICBlbGlm IGlzaW5zdGFuY2UoZGF0YVthcmddLCBsaXN0KSBhbmQgbGVuKGRhdGFbYXJn XSkgPCAxOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gXygnLS0gZGVm aW5pdGlvbiBpbmNvbXBsZXRlJykKKworICAgICAgICAgICAgc3FsID0gcmVu ZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdj cmVhdGUuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGRhdGE9ZGF0YSwgY29ubj1zZWxmLmNvbm4pCisgICAgICAgICAgICBz cWwgKz0gIlxuIgorICAgICAgICAgICAgc3FsICs9IHJlbmRlcl90ZW1wbGF0 ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAnYWx0ZXIuc3FsJ10p LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPWRh dGEsIGNvbm49c2VsZi5jb25uKQorCisgICAgICAgIHJldHVybiBzcWwKKwor ICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgc3FsKHNlbGYsIGdp ZCwgc2lkLCBkaWQsIHNjaWQsIHRpZCwgZXhpZD1Ob25lKToKKyAgICAgICAg IiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gZ2VuZXJhdGVzIHNxbCB0byBz aG93IGluIHRoZSBzcWwgcGFuZSBmb3IgdGhlIHNlbGVjdGVkCisgICAgICAg IEV4Y2x1c2lvbiBjb25zdHJhaW50LgorCisgICAgICAgIEFyZ3M6CisgICAg ICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAgSUQKKyAgICAgICAgICBzaWQ6IFNl cnZlciBJRAorICAgICAgICAgIGRpZDogRGF0YWJhc2UgSUQKKyAgICAgICAg ICBzY2lkOiBTY2hlbWEgSUQKKyAgICAgICAgICB0aWQ6IFRhYmxlIElECisg ICAgICAgICAgZXhpZDogRXhjbHVzaW9uIGNvbnN0cmFpbnQgSUQKKworICAg ICAgICBSZXR1cm5zOgorCisgICAgICAgICIiIgorICAgICAgICB0cnk6Cisg ICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoCisgICAgICAgICAg ICAgICAgIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ3Byb3BlcnRp ZXMuc3FsJ10pLAorICAgICAgICAgICAgICAgIHRpZD10aWQsIGNvbm49c2Vs Zi5jb25uLCBjaWQ9ZXhpZCkKKyAgICAgICAgICAgIHN0YXR1cywgcmVzdWx0 ID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChTUUwpCisgICAgICAgICAgICBp ZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5h bF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzdWx0KQorCisgICAgICAgICAg ICBkYXRhID0gcmVzdWx0Wydyb3dzJ11bMF0KKyAgICAgICAgICAgIGRhdGFb J3NjaGVtYSddID0gc2VsZi5zY2hlbWEKKyAgICAgICAgICAgIGRhdGFbJ3Rh YmxlJ10gPSBzZWxmLnRhYmxlCisKKyAgICAgICAgICAgIHNxbCA9IHJlbmRl cl90ZW1wbGF0ZSgKKyAgICAgICAgICAgICAgICAiLyIuam9pbihbc2VsZi50 ZW1wbGF0ZV9wYXRoLCAnZ2V0X2NvbnN0cmFpbnRfY29scy5zcWwnXSksCisg ICAgICAgICAgICAgICAgY2lkPWV4aWQsCisgICAgICAgICAgICAgICAgY29s Y250PWRhdGFbJ2luZG5hdHRzJ10pCisgICAgICAgICAgICBzdGF0dXMsIHJl cyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3Qoc3FsKQorCisgICAgICAgICAg ICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgIHJldHVybiBpbnRl cm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgICAg ICBjb2x1bW5zID0gW10KKyAgICAgICAgICAgIGZvciByb3cgaW4gcmVzWydy b3dzJ106CisgICAgICAgICAgICAgICAgaWYgcm93WydvcHRpb25zJ10gJiAx OgorICAgICAgICAgICAgICAgICAgICBvcmRlciA9IEZhbHNlCisgICAgICAg ICAgICAgICAgICAgIG51bGxzX29yZGVyID0gVHJ1ZSBpZiAocm93WydvcHRp b25zJ10gJiAyKSBlbHNlIEZhbHNlCisgICAgICAgICAgICAgICAgZWxzZToK KyAgICAgICAgICAgICAgICAgICAgb3JkZXIgPSBUcnVlCisgICAgICAgICAg ICAgICAgICAgIG51bGxzX29yZGVyID0gVHJ1ZSBpZiAocm93WydvcHRpb25z J10gJiAyKSBlbHNlIEZhbHNlCisKKyAgICAgICAgICAgICAgICBjb2x1bW5z LmFwcGVuZCh7ImNvbHVtbiI6IHJvd1snY29sZGVmJ10uc3RyaXAoJyInKSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9wZXJfY2xhc3Mi OiByb3dbJ29wY25hbWUnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIm9yZGVyIjogb3JkZXIsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICJudWxsc19vcmRlciI6IG51bGxzX29yZGVyLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAib3BlcmF0b3IiOiByb3dbJ29w cm5hbWUnXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KQor CisgICAgICAgICAgICBkYXRhWydjb2x1bW5zJ10gPSBjb2x1bW5zCisKKyAg ICAgICAgICAgIGlmIG5vdCBkYXRhWydhbW5hbWUnXSBvciBkYXRhWydhbW5h bWUnXSA9PSAnJzoKKyAgICAgICAgICAgICAgICBkYXRhWydhbW5hbWUnXSA9 ICdidHJlZScKKworICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRl KAorICAgICAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3Bh dGgsICdjcmVhdGUuc3FsJ10pLCBkYXRhPWRhdGEpCisgICAgICAgICAgICBT UUwgKz0gIlxuIgorICAgICAgICAgICAgU1FMICs9IHJlbmRlcl90ZW1wbGF0 ZSgKKyAgICAgICAgICAgICAgICAiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9w YXRoLCAnYWx0ZXIuc3FsJ10pLAorICAgICAgICAgICAgICAgIGRhdGE9ZGF0 YSwgY29ubj1zZWxmLmNvbm4pCisKKyAgICAgICAgICAgIHNxbF9oZWFkZXIg PSAiLS0gQ29uc3RyYWludDogezB9XG5cbi0tICIuZm9ybWF0KGRhdGFbJ25h bWUnXSkKKworICAgICAgICAgICAgc3FsX2hlYWRlciArPSByZW5kZXJfdGVt cGxhdGUoCisgICAgICAgICAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRl bXBsYXRlX3BhdGgsICdkZWxldGUuc3FsJ10pLAorICAgICAgICAgICAgICAg ICAgICBkYXRhPWRhdGEpCisgICAgICAgICAgICBzcWxfaGVhZGVyICs9ICJc biIKKworICAgICAgICAgICAgU1FMID0gc3FsX2hlYWRlciArIFNRTAorCisg ICAgICAgICAgICByZXR1cm4gYWpheF9yZXNwb25zZShyZXNwb25zZT1TUUwp CisKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAg ICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1zdHIo ZSkpCisKK2NvbnN0cmFpbnQgPSBDb25zdHJhaW50UmVnaXN0cnkoCisgICAg J2V4Y2x1c2lvbl9jb25zdHJhaW50JywgRXhjbHVzaW9uQ29uc3RyYWludE1v ZHVsZSwgRXhjbHVzaW9uQ29uc3RyYWludFZpZXcKKyAgICApCitFeGNsdXNp b25Db25zdHJhaW50Vmlldy5yZWdpc3Rlcl9ub2RlX3ZpZXcoYmx1ZXByaW50 KQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2NvbnN0cmFp bnRzL2V4Y2x1c2lvbl9jb25zdHJhaW50L3N0YXRpYy9pbWcvZXhjbHVzaW9u X2NvbnN0cmFpbnQucG5nIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2NvbnN0 cmFpbnRzL2V4Y2x1c2lvbl9jb25zdHJhaW50L3N0YXRpYy9pbWcvZXhjbHVz aW9uX2NvbnN0cmFpbnQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJk NjJlZWY2NDEwZDkzMTU4NTdkMmU2ZDI0Njc3MGU4YjY1YjhmNDcKR0lUIGJp bmFyeSBwYXRjaApsaXRlcmFsIDcyNQp6Y21lQVNATj8ob2xIeWB1VkJxIWlh MHZwXjB3QiE2Mz93eWxgR1hsNDd5fC0pTFJeOHx3aX08eW1UdlZ3X1FyWTEK ekxDMz9kXipVRGhGV0xBMXw5YCl3TWBLUkVidlhRNUEtPSg2JTlmUjlaaFVf Nl40XnB3UzI4bExXTXdePUhTNT49CnpfaXNMWlAxPEAld1FgUWprPUslKm5O Z0cwOUpxQW5ZK35abSgkZCRkc1pUMl5FfktRfmUpP0xzZDZ7SjFMYGtvIwp6 OFFZSF5YemhBWlNvclZQdVArLW1kfHRCVC1gfkhGWWlmPjZua0pQdU51cXA/ WUlPRDU2SWJeOGByVjYrZF5LPDAKenprbVBVdFhRIXBHRnFaIWhHZzNzd2Uq ZzRYSyF3SWF6NXFlX0hmRlNyd2JRdV5BQ2AwU3xLQFFrN1VrLSp+aFBNCnpF aHNxPDgyST0xPztCSTZVaFYxbV92Zz5TQGJJbSpqZ2t8ME5HPzJPZjlSIVRe QDdDcHIlem5Fd2M1flZtJXNseQp6VUVRNU5LQzVsKmMzcnFGeDhRezJucm43 QDk/QTQ8dyU+NSYmY2AzYFp7Rk9Pb1Y7OUhkeGZzPCFKTTRPeDk/Nm0KemVu V2ZCVyRBNFhZP2h6WVVVSF48YEJ2NTRQWGhXRHFASF9jd2VneC1hbzZGN0Ew NUNqV2hARXUzdWJWNWJ8VmVNCnpOJUQ0ZztiXi16d0Y9MUxFYnhkZDJHU20y Pn49RVM0Iy0mVj5FYWs3YVhDNVIwN0gqWTJHYmR4NDVsP1haK0xpUQp6V01t WX4pV3MofWM9cXQ9VntyaXlBdSZOdztwcSZWOSR1Y09QbjxlPVFkPmh5diQm WmhCO0BLOVE8SlMqTj12P2UKekltcEQ7PTV8Yk4qfE19XyYlfnhCRmx1S0BN X1VJNlM0WHFFdDhaeDcrYFc0Qz8pSyU9eEEoNz9fYyZtJFY0ens0CnpWcSY2 V3FoIVJUQXxOWClFazF3M2o0NSpfJjY+dDFibUJ3YGkqLS00cVBEV00lN24/ Pjx0MlZ7PUNqTntVMVYpdwp6VjMtanRVSFVhaXt4czAoc3dKKXdCYEp2fHNh REJGc1gmVXMkaVVFMCo4cXIyTGt1bWYzQG9qVGprRkVTdFBCaX0KaGNiSylJ WHZvYl4keE4lbnR6cH5NSn1hT0cyMldRJW12djRGTyNxODlKdiNzWgoKbGl0 ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvdGFibGVzL2NvbnN0cmFpbnRzL2V4Y2x1c2lvbl9jb25zdHJhaW50L3Rl bXBsYXRlcy9leGNsdXNpb25fY29uc3RyYWludC9qcy9leGNsdXNpb25fY29u c3RyYWludC5qcyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9jb25zdHJhaW50 cy9leGNsdXNpb25fY29uc3RyYWludC90ZW1wbGF0ZXMvZXhjbHVzaW9uX2Nv bnN0cmFpbnQvanMvZXhjbHVzaW9uX2NvbnN0cmFpbnQuanMKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmNmYTdjMwotLS0gL2Rldi9u dWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9jb25zdHJhaW50cy9l eGNsdXNpb25fY29uc3RyYWludC90ZW1wbGF0ZXMvZXhjbHVzaW9uX2NvbnN0 cmFpbnQvanMvZXhjbHVzaW9uX2NvbnN0cmFpbnQuanMKQEAgLTAsMCArMSw5 MTUgQEAKK2RlZmluZSgKKyAgICAgICAgWydqcXVlcnknLCAndW5kZXJzY29y ZScsICd1bmRlcnNjb3JlLnN0cmluZycsICdwZ2FkbWluJywKKyAgICAgICAg J3BnYWRtaW4uYnJvd3NlcicsICdhbGVydGlmeScsICdwZ2FkbWluLmJyb3dz ZXIuY29sbGVjdGlvbiddLAorZnVuY3Rpb24oJCwgXywgUywgcGdBZG1pbiwg cGdCcm93c2VyLCBBbGVydGlmeSkgeworCisgIHZhciBFeGNsdXNpb25Db25z dHJhaW50Q29sdW1uTW9kZWwgPSBwZ0Jyb3dzZXIuTm9kZS5Nb2RlbC5leHRl bmQoeworICAgIGRlZmF1bHRzOiB7CisgICAgICBjb2x1bW46IHVuZGVmaW5l ZCwKKyAgICAgIG9wZXJfY2xhc3M6IHVuZGVmaW5lZCwKKyAgICAgIG9yZGVy OiB1bmRlZmluZWQsCisgICAgICBudWxsc19vcmRlcjogdW5kZWZpbmVkLAor ICAgICAgb3BlcmF0b3I6dW5kZWZpbmVkLAorICAgICAgY29sX3R5cGU6dW5k ZWZpbmVkCisgICAgfSwKKyAgICB0b0pTT046IGZ1bmN0aW9uICgpIHsKKyAg ICAgIHZhciBkID0gcGdCcm93c2VyLk5vZGUuTW9kZWwucHJvdG90eXBlLnRv SlNPTi5hcHBseSh0aGlzLCBhcmd1bWVudHMpOworICAgICAgZGVsZXRlIGQu Y29sX3R5cGU7CisgICAgICByZXR1cm4gZDsKKyAgICB9LAorICAgIHNjaGVt YTogW3sKKyAgICAgICAgaWQ6ICdjb2x1bW4nLCBsYWJlbDone3sgXygnQ29s dW1uJykgfX0nLCB0eXBlOid0ZXh0JywgZWRpdGFibGU6IGZhbHNlLAorICAg ICAgICBjZWxsOidzdHJpbmcnCisgICAgICB9LHsKKyAgICAgICAgaWQ6ICdv cGVyX2NsYXNzJywgbGFiZWw6J3t7IF8oJ09wZXJhdG9yIGNsYXNzJykgfX0n LCB0eXBlOid0ZXh0JywKKyAgICAgICAgbm9kZTogJ3RhYmxlJywgdXJsOiAn Z2V0X29wZXJfY2xhc3MnLCBmaXJzdF9lbXB0eTogdHJ1ZSwKKyAgICAgICAg ZWRpdGFibGU6IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICBpZiAobSBpbnN0 YW5jZW9mIEJhY2tib25lLkNvbGxlY3Rpb24pIHsKKyAgICAgICAgICAgIHJl dHVybiB0cnVlOworICAgICAgICAgIH0KKyAgICAgICAgICBpZiAoKF8uaGFz KG0uY29sbGVjdGlvbiwgJ2hhbmRsZXInKSAmJgorICAgICAgICAgICAgICAg ICFfLmlzVW5kZWZpbmVkKG0uY29sbGVjdGlvbi5oYW5kbGVyKSAmJgorICAg ICAgICAgICAgICAgICFfLmlzVW5kZWZpbmVkKG0uY29sbGVjdGlvbi5oYW5k bGVyLmdldCgnb2lkJykpKSkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNl OworICAgICAgICAgIH0KKworICAgICAgICAgIGlmIChtLmNvbGxlY3Rpb24p IHsKKyAgICAgICAgICAgIHZhciBpbmRleFR5cGUgPSBtLmNvbGxlY3Rpb24u aGFuZGxlci5nZXQoJ2FtbmFtZScpCisgICAgICAgICAgICByZXR1cm4gKGlu ZGV4VHlwZSA9PSAnYnRyZWUnIHx8IF8uaXNVbmRlZmluZWQoaW5kZXhUeXBl KSB8fAorICAgICAgICAgICAgICBfLmlzTnVsbChpbmRleFR5cGUpIHx8IGlu ZGV4VHlwZSA9PSAnJyk7CisgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg ICAgIHJldHVybiB0cnVlOworICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAg ICAgICAgc2VsZWN0MjogeworICAgICAgICAgIGFsbG93Q2xlYXI6IHRydWUs IHdpZHRoOiAnc3R5bGUnLAorICAgICAgICAgIHBsYWNlaG9sZGVyOiAne3sg XygiU2VsZWN0IHRoZSBvcGVyYXRvciBjbGFzcyIpIH19JworICAgICAgICB9 LCBjZWxsOiBCYWNrZ3JpZC5FeHRlbnNpb24uU2VsZWN0MkNlbGwuZXh0ZW5k KHsKKyAgICAgICAgICBpbml0aWFsaXplOiBmdW5jdGlvbiAoKSB7CisgICAg ICAgICAgICBCYWNrZ3JpZC5FeHRlbnNpb24uU2VsZWN0MkNlbGwucHJvdG90 eXBlLmluaXRpYWxpemUuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKKworICAg ICAgICAgIHZhciBzZWxmID0gdGhpcywKKyAgICAgICAgICAgIHVybCA9IHNl bGYuY29sdW1uLmdldCgndXJsJykgfHwgc2VsZi5kZWZhdWx0cy51cmwsCisg ICAgICAgICAgICBtID0gc2VsZi5tb2RlbCwKKyAgICAgICAgICAgIGluZGV4 dHlwZSA9IHNlbGYubW9kZWwuY29sbGVjdGlvbi5oYW5kbGVyLmdldCgnYW1u YW1lJyk7CisKKyAgICAgICAgICAgIGlmICh1cmwgJiYgKGluZGV4dHlwZSA9 PSAnYnRyZWUnIHx8IF8uaXNVbmRlZmluZWQoaW5kZXh0eXBlKSB8fAorICAg ICAgICAgICAgICAgIF8uaXNOdWxsKGluZGV4dHlwZSkgfHwgaW5kZXh0eXBl ID09ICcnKSkgeworICAgICAgICAgICAgICB2YXIgbm9kZSA9IHRoaXMuY29s dW1uLmdldCgnc2NoZW1hX25vZGUnKSwKKyAgICAgICAgICAgICAgICAgIGV2 ZW50SGFuZGxlciA9IG0udG9wIHx8IG0sCisgICAgICAgICAgICAgICAgICBu b2RlX2luZm8gPSB0aGlzLmNvbHVtbi5nZXQoJ25vZGVfaW5mbycpLAorICAg ICAgICAgICAgICAgICAgZnVsbF91cmwgPSBub2RlLmdlbmVyYXRlX3VybC5h cHBseSgKKyAgICAgICAgICAgICAgICAgICAgbm9kZSwgWworICAgICAgICAg ICAgICAgICAgICAgIG51bGwsIHVybCwgdGhpcy5jb2x1bW4uZ2V0KCdub2Rl X2RhdGEnKSwKKyAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbHVtbi5n ZXQoJ3VybF93aXRoX2lkJykgfHwgZmFsc2UsIG5vZGVfaW5mbworICAgICAg ICAgICAgICAgICAgICBdKSwKKyAgICAgICAgICAgICAgICAgIGRhdGEgPSBb XTsKKworICAgICAgICAgICAgICBpbmRleHR5cGUgPSAnYnRyZWUnOworCisg ICAgICAgICAgICAgIGlmICh0aGlzLmNvbHVtbi5nZXQoJ3ZlcnNpb25fY29t cGF0aWJsZScpKSB7CisgICAgICAgICAgICAgICAgZXZlbnRIYW5kbGVyLnRy aWdnZXIoJ3BnYWRtaW46dmlldzpmZXRjaGluZycsIG0sIHNlbGYuY29sdW1u KTsKKyAgICAgICAgICAgICAgICAkLmFqYXgoeworICAgICAgICAgICAgICAg ICAgYXN5bmM6IGZhbHNlLAorICAgICAgICAgICAgICAgICAgZGF0YSA6IHtp bmRleHR5cGU6aW5kZXh0eXBlfSwKKyAgICAgICAgICAgICAgICAgIHVybDog ZnVsbF91cmwsCisgICAgICAgICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlv bihyZXMpIHsKKyAgICAgICAgICAgICAgICAgICAgZGF0YSA9IHJlcy5kYXRh OworICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgIGVy cm9yOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgZXZlbnRI YW5kbGVyLnRyaWdnZXIoJ3BnYWRtaW46dmlldzpmZXRjaDplcnJvcicsIG0s IHNlbGYuY29sdW1uKTsKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg ICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICBldmVudEhhbmRsZXIudHJp Z2dlcigncGdhZG1pbjp2aWV3OmZldGNoZWQnLCBtLCBzZWxmLmNvbHVtbik7 CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgLyoKKyAgICAgICAg ICAgICAgICogVHJhbnNmb3JtIHRoZSBkYXRhCisgICAgICAgICAgICAgICAq LworICAgICAgICAgICAgICB0cmFuc2Zvcm0gPSBzZWxmLmNvbHVtbi5nZXQo J3RyYW5zZm9ybScpIHx8IHNlbGYuZGVmYXVsdHMudHJhbnNmb3JtOworICAg ICAgICAgICAgICBpZiAodHJhbnNmb3JtICYmIF8uaXNGdW5jdGlvbih0cmFu c2Zvcm0pKSB7CisgICAgICAgICAgICAgICAgLy8gV2Ugd2lsbCB0cmFuc2Zv cm0gdGhlIGRhdGEgbGF0ZXIsIHdoZW4gcmVuZGVyaW5nLgorICAgICAgICAg ICAgICAgIC8vIEl0IHdpbGwgYWxsb3cgdXMgdG8gZ2VuZXJhdGUgZGlmZmVy ZW50IGRhdGEgYmFzZWQgb24gdGhlCisgICAgICAgICAgICAgICAgLy8gZGVw ZW5kZW5jaWVzLgorICAgICAgICAgICAgICAgIHNlbGYuY29sdW1uLnNldCgn b3B0aW9ucycsIHRyYW5zZm9ybS5iaW5kKHNlbGYsIGRhdGEpKTsKKyAgICAg ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBzZWxmLmNvbHVt bi5zZXQoJ29wdGlvbnMnLCBkYXRhKTsKKyAgICAgICAgICAgICAgfQorICAg ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgc2VsZi5jb2x1bW4u c2V0KCdvcHRpb25zJywgW10pOworICAgICAgICAgICAgfQorICAgICAgICAg IH0KKyAgICAgICAgfSkKKyAgICAgIH0seworICAgICAgICBpZDogJ29yZGVy JywgbGFiZWw6J3t7IF8oJ0RFU0MnKSB9fScsIHR5cGU6ICdzd2l0Y2gnLAor ICAgICAgICBvcHRpb25zOiB7CisgICAgICAgICAgb25UZXh0OiAnQVNDJywK KyAgICAgICAgICBvZmZUZXh0OiAnREVTQycsCisgICAgICAgIH0sZWRpdGFi bGU6IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICBpZiAobSBpbnN0YW5jZW9m IEJhY2tib25lLkNvbGxlY3Rpb24pIHsKKyAgICAgICAgICAgIHJldHVybiB0 cnVlOworICAgICAgICAgIH0KKyAgICAgICAgICBpZiAoKF8uaGFzKG0uY29s bGVjdGlvbiwgJ2hhbmRsZXInKSAmJgorICAgICAgICAgICAgICAgICFfLmlz VW5kZWZpbmVkKG0uY29sbGVjdGlvbi5oYW5kbGVyKSAmJgorICAgICAgICAg ICAgICAgICFfLmlzVW5kZWZpbmVkKG0uY29sbGVjdGlvbi5oYW5kbGVyLmdl dCgnb2lkJykpKSkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg ICAgICAgIH0KKyAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQor ICAgICAgfSx7CisgICAgICAgIGlkOiAnbnVsbHNfb3JkZXInLCBsYWJlbDon e3sgXygnTlVMTHMgb3JkZXInKSB9fScsIHR5cGU6InN3aXRjaCIsCisgICAg ICAgIG9wdGlvbnM6IHsKKyAgICAgICAgICBvblRleHQ6ICdGSVJTVCcsCisg ICAgICAgICAgb2ZmVGV4dDogJ0xBU1QnLAorICAgICAgICB9LGVkaXRhYmxl OiBmdW5jdGlvbihtKSB7CisgICAgICAgICAgaWYgKG0gaW5zdGFuY2VvZiBC YWNrYm9uZS5Db2xsZWN0aW9uKSB7CisgICAgICAgICAgICByZXR1cm4gdHJ1 ZTsKKyAgICAgICAgICB9CisgICAgICAgICAgaWYgKChfLmhhcyhtLmNvbGxl Y3Rpb24sICdoYW5kbGVyJykgJiYKKyAgICAgICAgICAgICAgICAhXy5pc1Vu ZGVmaW5lZChtLmNvbGxlY3Rpb24uaGFuZGxlcikgJiYKKyAgICAgICAgICAg ICAgICAhXy5pc1VuZGVmaW5lZChtLmNvbGxlY3Rpb24uaGFuZGxlci5nZXQo J29pZCcpKSkpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg ICAgICB9CisgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAg ICAgIH0seworICAgICAgICBpZDogJ29wZXJhdG9yJywgbGFiZWw6J3t7IF8o J09wZXJhdG9yJykgfX0nLCB0eXBlOiAndGV4dCcsCisgICAgICAgIG5vZGU6 ICd0YWJsZScsIHVybDogJ2dldF9vcGVyYXRvcicsCisgICAgICAgIGVkaXRh YmxlOiBmdW5jdGlvbihtKSB7CisgICAgICAgICAgaWYgKG0gaW5zdGFuY2Vv ZiBCYWNrYm9uZS5Db2xsZWN0aW9uKSB7CisgICAgICAgICAgICByZXR1cm4g dHJ1ZTsKKyAgICAgICAgICB9CisgICAgICAgICAgaWYgKChfLmhhcyhtLmNv bGxlY3Rpb24sICdoYW5kbGVyJykgJiYKKyAgICAgICAgICAgICAgICAhXy5p c1VuZGVmaW5lZChtLmNvbGxlY3Rpb24uaGFuZGxlcikgJiYKKyAgICAgICAg ICAgICAgICAhXy5pc1VuZGVmaW5lZChtLmNvbGxlY3Rpb24uaGFuZGxlci5n ZXQoJ29pZCcpKSkpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg ICAgICAgICB9CisgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0s CisgICAgICAgIHNlbGVjdDI6IHsKKyAgICAgICAgICBhbGxvd0NsZWFyOiBm YWxzZSwgd2lkdGg6ICdzdHlsZScsCisgICAgICAgIH0sIGNlbGw6IEJhY2tn cmlkLkV4dGVuc2lvbi5TZWxlY3QyQ2VsbC5leHRlbmQoeworICAgICAgICBp bml0aWFsaXplOiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgQmFja2dyaWQu RXh0ZW5zaW9uLlNlbGVjdDJDZWxsLnByb3RvdHlwZS5pbml0aWFsaXplLmFw cGx5KHRoaXMsIGFyZ3VtZW50cyk7CisKKyAgICAgICAgICB2YXIgc2VsZiA9 IHRoaXMsCisgICAgICAgICAgICB1cmwgPSBzZWxmLmNvbHVtbi5nZXQoJ3Vy bCcpIHx8IHNlbGYuZGVmYXVsdHMudXJsLAorICAgICAgICAgICAgbSA9IHNl bGYubW9kZWwsCisgICAgICAgICAgICBjb2xfdHlwZSA9IHNlbGYubW9kZWwu Z2V0KCdjb2xfdHlwZScpOworCisgICAgICAgICAgICBzZWxmLmNvbHVtbi5z ZXQoJ29wdGlvbnMnLCBbXSk7CisKKyAgICAgICAgICAgIGlmICh1cmwgJiYg IV8uaXNVbmRlZmluZWQoY29sX3R5cGUpICYmICFfLmlzTnVsbChjb2xfdHlw ZSkgJiYgY29sX3R5cGUgIT0gJycpIHsKKyAgICAgICAgICAgICAgdmFyIG5v ZGUgPSB0aGlzLmNvbHVtbi5nZXQoJ3NjaGVtYV9ub2RlJyksCisgICAgICAg ICAgICAgICAgICBldmVudEhhbmRsZXIgPSBtLnRvcCB8fCBtLAorICAgICAg ICAgICAgICAgICAgbm9kZV9pbmZvID0gdGhpcy5jb2x1bW4uZ2V0KCdub2Rl X2luZm8nKSwKKyAgICAgICAgICAgICAgICAgIGZ1bGxfdXJsID0gbm9kZS5n ZW5lcmF0ZV91cmwuYXBwbHkoCisgICAgICAgICAgICAgICAgICAgIG5vZGUs IFsKKyAgICAgICAgICAgICAgICAgICAgICBudWxsLCB1cmwsIHRoaXMuY29s dW1uLmdldCgnbm9kZV9kYXRhJyksCisgICAgICAgICAgICAgICAgICAgICAg dGhpcy5jb2x1bW4uZ2V0KCd1cmxfd2l0aF9pZCcpIHx8IGZhbHNlLCBub2Rl X2luZm8KKyAgICAgICAgICAgICAgICAgICAgXSksCisgICAgICAgICAgICAg ICAgICBkYXRhID0gW107CisKKyAgICAgICAgICAgICAgaWYgKHRoaXMuY29s dW1uLmdldCgndmVyc2lvbl9jb21wYXRpYmxlJykpIHsKKyAgICAgICAgICAg ICAgICBldmVudEhhbmRsZXIudHJpZ2dlcigncGdhZG1pbjp2aWV3OmZldGNo aW5nJywgbSwgc2VsZi5jb2x1bW4pOworICAgICAgICAgICAgICAgICQuYWph eCh7CisgICAgICAgICAgICAgICAgICBhc3luYzogZmFsc2UsCisgICAgICAg ICAgICAgICAgICBkYXRhIDoge2NvbF90eXBlOmNvbF90eXBlfSwKKyAgICAg ICAgICAgICAgICAgIHVybDogZnVsbF91cmwsCisgICAgICAgICAgICAgICAg ICBzdWNjZXNzOiBmdW5jdGlvbihyZXMpIHsKKyAgICAgICAgICAgICAgICAg ICAgZGF0YSA9IHJlcy5kYXRhOworICAgICAgICAgICAgICAgICAgfSwKKyAg ICAgICAgICAgICAgICAgIGVycm9yOiBmdW5jdGlvbigpIHsKKyAgICAgICAg ICAgICAgICAgICAgZXZlbnRIYW5kbGVyLnRyaWdnZXIoJ3BnYWRtaW46dmll dzpmZXRjaDplcnJvcicsIG0sIHNlbGYuY29sdW1uKTsKKyAgICAgICAgICAg ICAgICAgIH0KKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAg ICBldmVudEhhbmRsZXIudHJpZ2dlcigncGdhZG1pbjp2aWV3OmZldGNoZWQn LCBtLCBzZWxmLmNvbHVtbik7CisgICAgICAgICAgICAgIH0KKyAgICAgICAg ICAgICAgLyoKKyAgICAgICAgICAgICAgICogVHJhbnNmb3JtIHRoZSBkYXRh CisgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICB0cmFuc2Zvcm0g PSBzZWxmLmNvbHVtbi5nZXQoJ3RyYW5zZm9ybScpIHx8IHNlbGYuZGVmYXVs dHMudHJhbnNmb3JtOworICAgICAgICAgICAgICBpZiAodHJhbnNmb3JtICYm IF8uaXNGdW5jdGlvbih0cmFuc2Zvcm0pKSB7CisgICAgICAgICAgICAgICAg Ly8gV2Ugd2lsbCB0cmFuc2Zvcm0gdGhlIGRhdGEgbGF0ZXIsIHdoZW4gcmVu ZGVyaW5nLgorICAgICAgICAgICAgICAgIC8vIEl0IHdpbGwgYWxsb3cgdXMg dG8gZ2VuZXJhdGUgZGlmZmVyZW50IGRhdGEgYmFzZWQgb24gdGhlCisgICAg ICAgICAgICAgICAgLy8gZGVwZW5kZW5jaWVzLgorICAgICAgICAgICAgICAg IHNlbGYuY29sdW1uLnNldCgnb3B0aW9ucycsIHRyYW5zZm9ybS5iaW5kKHNl bGYsIGRhdGEpKTsKKyAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg ICAgICAgICBzZWxmLmNvbHVtbi5zZXQoJ29wdGlvbnMnLCBkYXRhKTsKKyAg ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAg ICAgICAgfSkKKyAgICAgIH0KKyAgICBdCisgIH0pOworCisgIHZhciBFeGNs dXNpb25Db25zdHJhaW50Q29sdW1uQ29udHJvbCA9ICBCYWNrZm9ybS5FeGNs dXNpb25Db25zdHJhaW50Q29sdW1uQ29udHJvbCA9CisgICAgQmFja2Zvcm0u VW5pcXVlQ29sQ29sbGVjdGlvbkNvbnRyb2wuZXh0ZW5kKHsKKworICAgIGlu aXRpYWxpemU6IGZ1bmN0aW9uKG9wdHMpIHsKKyAgICAgIEJhY2tmb3JtLlVu aXF1ZUNvbENvbGxlY3Rpb25Db250cm9sLnByb3RvdHlwZS5pbml0aWFsaXpl LmFwcGx5KAorICAgICAgICB0aGlzLCBhcmd1bWVudHMKKyAgICAgICAgICAp OworCisgICAgICB2YXIgc2VsZiA9IHRoaXMsCisgICAgICAgIG5vZGUgPSAn ZXhjbHVzaW9uX2NvbnN0cmFpbnQnLAorICAgICAgICBoZWFkZXJTY2hlbWEg PSBbeworICAgICAgICAgIGlkOiAnY29sdW1uJywgbGFiZWw6JycsIHR5cGU6 J3RleHQnLAorICAgICAgICAgIG5vZGU6ICdjb2x1bW4nLCBjb250cm9sOiBC YWNrZm9ybS5Ob2RlTGlzdEJ5TmFtZUNvbnRyb2wuZXh0ZW5kKHsKKyAgICAg ICAgICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg ICAvLyBIZXJlIHdlIHdpbGwgZGVjaWRlIGlmIHdlIG5lZWQgdG8gY2FsbCBV UkwKKyAgICAgICAgICAgICAgLy8gT3IgZmV0Y2ggdGhlIGRhdGEgZnJvbSBw YXJlbnQgY29sdW1ucyBjb2xsZWN0aW9uCisgICAgICAgICAgICAgICAgaWYo c2VsZi5tb2RlbC5oYW5kbGVyKSB7CisgICAgICAgICAgICAgICAgICBCYWNr Zm9ybS5TZWxlY3QyQ29udHJvbC5wcm90b3R5cGUuaW5pdGlhbGl6ZS5hcHBs eSh0aGlzLCBhcmd1bWVudHMpOworICAgICAgICAgICAgICAgICAgLy8gRG8g bm90IGxpc3RlbiBmb3IgYW55IGV2ZW50KHMpIGZvciBleGlzdGluZyBjb25z dHJhaW50LgorICAgICAgICAgICAgICAgICAgaWYgKF8uaXNVbmRlZmluZWQo c2VsZi5tb2RlbC5nZXQoJ29pZCcpKSkgeworICAgICAgICAgICAgICAgICAg ICB2YXIgdGFibGVDb2xzID0gc2VsZi5tb2RlbC50b3AuZ2V0KCdjb2x1bW5z Jyk7CisgICAgICAgICAgICAgICAgICAgIHRoaXMubGlzdGVuVG8odGFibGVD b2xzLCAncmVtb3ZlJyAsIHRoaXMucmVtb3ZlQ29sdW1uKTsKKyAgICAgICAg ICAgICAgICAgICAgdGhpcy5saXN0ZW5Ubyh0YWJsZUNvbHMsICdjaGFuZ2U6 bmFtZScsIHRoaXMucmVzZXRDb2xPcHRpb25zKTsKKyAgICAgICAgICAgICAg ICAgICAgdGhpcy5saXN0ZW5Ubyh0YWJsZUNvbHMsICdjaGFuZ2U6Y2x0eXBl JywgdGhpcy5yZXNldENvbE9wdGlvbnMpOworICAgICAgICAgICAgICAgICAg fQorICAgICAgICAgICAgICAgICAgdGhpcy5jdXN0b21fb3B0aW9ucygpOwor ICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICBC YWNrZm9ybS5Ob2RlTGlzdEJ5TmFtZUNvbnRyb2wucHJvdG90eXBlLmluaXRp YWxpemUuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKKyAgICAgICAgICAgICAg ICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgcmVtb3ZlQ29sdW1u OiBmdW5jdGlvbiAobSkgeworICAgICAgICAgICAgICB2YXIgdGhhdCA9IHRo aXM7CisgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gICAoKSB7 CisgICAgICAgICAgICAgICAgdGhhdC5jdXN0b21fb3B0aW9ucygpOworICAg ICAgICAgICAgICAgIHRoYXQucmVuZGVyLmFwcGx5KHRoYXQpOworICAgICAg ICAgICAgICB9LCA1MCk7CisgICAgICAgICAgICB9LAorICAgICAgICAgICAg cmVzZXRDb2xPcHRpb25zOiBmdW5jdGlvbihtKSB7CisgICAgICAgICAgICAg IHZhciB0aGF0ID0gdGhpczsKKworICAgICAgICAgICAgICBpZiAobS5wcmV2 aW91cygnbmFtZScpID09ICBzZWxmLmhlYWRlckRhdGEuZ2V0KCdjb2x1bW4n KSkgeworICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICog VGFibGUgY29sdW1uIG5hbWUgaGFzIGNoYW5nZWQgc28gdXBkYXRlCisgICAg ICAgICAgICAgICAgICogY29sdW1uIG5hbWUgaW4gZXhjbHVkZSBjb25zdHJh aW50IGFzIHdlbGwuCisgICAgICAgICAgICAgICAgICovCisgICAgICAgICAg ICAgICAgc2VsZi5oZWFkZXJEYXRhLnNldCgKKyAgICAgICAgICAgICAgICAg IHsiY29sdW1uIjogbS5nZXQoJ25hbWUnKX0pOworICAgICAgICAgICAgICAg ICAgc2VsZi5oZWFkZXJEYXRhQ2hhbmdlZCgpOworICAgICAgICAgICAgICB9 CisKKyAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7Cisg ICAgICAgICAgICAgICAgdGhhdC5jdXN0b21fb3B0aW9ucygpOworICAgICAg ICAgICAgICAgIHRoYXQucmVuZGVyLmFwcGx5KHRoYXQpOworICAgICAgICAg ICAgICB9LCA1MCk7CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgY3Vz dG9tX29wdGlvbnM6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAvLyBX ZSB3aWxsIGFkZCBhbGwgdGhlIGNvbHVtbnMgZW50ZXJlZCBieSB1c2VyIGlu IHRhYmxlIG1vZGVsCisgICAgICAgICAgICAgIHZhciBjb2x1bW5zID0gc2Vs Zi5tb2RlbC50b3AuZ2V0KCdjb2x1bW5zJyksCisgICAgICAgICAgICAgICAg ICBhZGRlZF9jb2x1bW5zX2Zyb21fdGFibGVzID0gW10sCisgICAgICAgICAg ICAgICAgICBjb2xfdHlwZXMgPSBbXTsKKworICAgICAgICAgICAgICBpZiAo Y29sdW1ucy5sZW5ndGggPiAwKSB7CisgICAgICAgICAgICAgICAgXy5lYWNo KGNvbHVtbnMubW9kZWxzLCBmdW5jdGlvbihtKSB7CisgICAgICAgICAgICAg ICAgICB2YXIgY29sID0gbS5nZXQoJ25hbWUnKTsKKyAgICAgICAgICAgICAg ICAgIGlmKCFfLmlzVW5kZWZpbmVkKGNvbCkgJiYgIV8uaXNOdWxsKGNvbCkp IHsKKyAgICAgICAgICAgICAgICAgICAgYWRkZWRfY29sdW1uc19mcm9tX3Rh Ymxlcy5wdXNoKHsKKyAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogY29s LCB2YWx1ZTogY29sLCBpbWFnZTonaWNvbi1jb2x1bW4nCisgICAgICAgICAg ICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgICAgIGNvbF90eXBl cy5wdXNoKHtuYW1lOmNvbCwgdHlwZTptLmdldCgnY2x0eXBlJyl9KTsKKyAg ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9KTsKKyAgICAg ICAgICAgICAgfQorICAgICAgICAgICAgICAvLyBTZXQgdGhlIHZhbHVlcyBp biB0byBvcHRpb25zIHNvIHRoYXQgdXNlciBjYW4gc2VsZWN0CisgICAgICAg ICAgICAgIHRoaXMuZmllbGQuc2V0KCdvcHRpb25zJywgYWRkZWRfY29sdW1u c19mcm9tX3RhYmxlcyk7CisgICAgICAgICAgICAgIHNlbGYuZmllbGQuc2V0 KCdjb2xfdHlwZXMnLCBjb2xfdHlwZXMpOworICAgICAgICAgICAgfSwKKyAg ICAgICAgICAgIHJlbW92ZTogZnVuY3Rpb24gKCkgeworICAgICAgICAgICAg ICBpZihzZWxmLm1vZGVsLmhhbmRsZXIpIHsKKyAgICAgICAgICAgICAgICAg IHRhYmxlQ29scyA9IHNlbGYubW9kZWwudG9wLmdldCgnY29sdW1ucycpOwor ICAgICAgICAgICAgICAgICAgdGhpcy5zdG9wTGlzdGVuaW5nKHRhYmxlQ29s cywgJ3JlbW92ZScgLCB0aGlzLnJlbW92ZUNvbHVtbik7CisgICAgICAgICAg ICAgICAgICB0aGlzLnN0b3BMaXN0ZW5pbmcodGFibGVDb2xzLCAnY2hhbmdl Om5hbWUnICwgdGhpcy5yZXNldENvbE9wdGlvbnMpOworICAgICAgICAgICAg ICAgICAgdGhpcy5zdG9wTGlzdGVuaW5nKHRhYmxlQ29scywgJ2NoYW5nZTpj bHR5cGUnICwgdGhpcy5yZXNldENvbE9wdGlvbnMpOworCisgICAgICAgICAg ICAgICAgQmFja2Zvcm0uU2VsZWN0MkNvbnRyb2wucHJvdG90eXBlLnJlbW92 ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpOworCisgICAgICAgICAgICAgIH0g ZWxzZSB7CisgICAgICAgICAgICAgICAgQmFja2Zvcm0uTm9kZUxpc3RCeU5h bWVDb250cm9sLnByb3RvdHlwZS5yZW1vdmUuYXBwbHkodGhpcywgYXJndW1l bnRzKTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAg ICAgICAgIHRlbXBsYXRlOiBfLnRlbXBsYXRlKFsKKyAgICAgICAgICAgICAg JzxkaXYgY2xhc3M9IjwlPUJhY2tmb3JtLmNvbnRyb2xzQ2xhc3NOYW1lJT4g PCU9ZXh0cmFDbGFzc2VzLmpvaW4oXCcgXCcpJT4iPicsCisgICAgICAgICAg ICAgICcgIDxzZWxlY3QgY2xhc3M9InBnYWRtaW4tbm9kZS1zZWxlY3QgZm9y bS1jb250cm9sIiBuYW1lPSI8JT1uYW1lJT4iIHN0eWxlPSJ3aWR0aDoxMDAl OyIgdmFsdWU9IjwlLXZhbHVlJT4iIDwlPWRpc2FibGVkID8gImRpc2FibGVk IiA6ICIiJT4gPCU9cmVxdWlyZWQgPyAicmVxdWlyZWQiIDogIiIlPiA+JywK KyAgICAgICAgICAgICAgJyAgICA8JSBpZiAoZmlyc3RfZW1wdHkpIHsgJT4n LAorICAgICAgICAgICAgICAnICAgIDxvcHRpb24gdmFsdWU9IiIgPCU9IiIg PT09IHJhd1ZhbHVlID8gInNlbGVjdGVkIiA6ICIiICU+PjwlLSBlbXB0eV92 YWx1ZSAlPjwvb3B0aW9uPicsCisgICAgICAgICAgICAgICcgICAgPCUgfSAl PicsCisgICAgICAgICAgICAgICcgICAgPCUgZm9yICh2YXIgaT0wOyBpIDwg b3B0aW9ucy5sZW5ndGg7IGkrKykgeyAlPicsCisgICAgICAgICAgICAgICcg ICAgPCUgdmFyIG9wdGlvbiA9IG9wdGlvbnNbaV07ICU+JywKKyAgICAgICAg ICAgICAgJyAgICA8b3B0aW9uIDwlIGlmIChvcHRpb24uaW1hZ2UpIHsgJT4g ZGF0YS1pbWFnZT08JT0gb3B0aW9uLmltYWdlICU+IDwlIH0gJT4gdmFsdWU9 PCU9IGZvcm1hdHRlci5mcm9tUmF3KG9wdGlvbi52YWx1ZSkgJT4gPCU9b3B0 aW9uLnZhbHVlID09PSByYXdWYWx1ZSA/ICJzZWxlY3RlZD1cJ3NlbGVjdGVk XCciIDogIiIgJT4+PCUtb3B0aW9uLmxhYmVsJT48L29wdGlvbj4nLAorICAg ICAgICAgICAgICAnICAgIDwlIH0gJT4nLAorICAgICAgICAgICAgICAnICA8 L3NlbGVjdD4nLAorICAgICAgICAgICAgICAnPC9kaXY+J10uam9pbigiXG4i KSkKKyAgICAgICAgICB9KSwKKyAgICAgICAgICB0cmFuc2Zvcm06IGZ1bmN0 aW9uKHJvd3MpIHsKKyAgICAgICAgICAgIC8vIFRoaXMgd2lsbCBvbmx5IGdl dCBjYWxsZWQgaW4gY2FzZSBvZiBOb2RlTGlzdEJ5TmFtZUNvbnRyb2wuCisK KyAgICAgICAgICAgIHZhciB0aGF0ID0gdGhpcywKKyAgICAgICAgICAgICAg ICBub2RlID0gdGhhdC5maWVsZC5nZXQoJ3NjaGVtYV9ub2RlJyksCisgICAg ICAgICAgICAgICAgcmVzID0gW10sCisgICAgICAgICAgICAgICAgY29sX3R5 cGVzID0gW10sCisgICAgICAgICAgICAgICAgZmlsdGVyID0gdGhhdC5maWVs ZC5nZXQoJ2ZpbHRlcicpIHx8IGZ1bmN0aW9uKCkgeyByZXR1cm4gdHJ1ZTsg fTsKKworICAgICAgICAgICAgZmlsdGVyID0gZmlsdGVyLmJpbmQodGhhdCk7 CisKKyAgICAgICAgICAgIF8uZWFjaChyb3dzLCBmdW5jdGlvbihyKSB7Cisg ICAgICAgICAgICAgIGlmIChmaWx0ZXIocikpIHsKKyAgICAgICAgICAgICAg ICB2YXIgbCA9IChfLmlzRnVuY3Rpb24obm9kZVsnbm9kZV9sYWJlbCddKSA/ CisgICAgICAgICAgICAgICAgICAgICAgKG5vZGVbJ25vZGVfbGFiZWwnXSku YXBwbHkobm9kZSwgW3IsIHRoYXQubW9kZWwsIHRoYXRdKSA6CisgICAgICAg ICAgICAgICAgICAgICAgci5sYWJlbCksCisgICAgICAgICAgICAgICAgICAg IGltYWdlID0gKF8uaXNGdW5jdGlvbihub2RlWydub2RlX2ltYWdlJ10pID8K KyAgICAgICAgICAgICAgICAgICAgICAobm9kZVsnbm9kZV9pbWFnZSddKS5h cHBseSgKKyAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUsIFtyLCB0aGF0 Lm1vZGVsLCB0aGF0XQorICAgICAgICAgICAgICAgICAgICAgICAgKSA6Cisg ICAgICAgICAgICAgICAgICAgICAgKG5vZGVbJ25vZGVfaW1hZ2UnXSB8fCAo J2ljb24tJyArIG5vZGUudHlwZSkpKTsKKyAgICAgICAgICAgICAgICByZXMu cHVzaCh7CisgICAgICAgICAgICAgICAgICAndmFsdWUnOiByLmxhYmVsLAor ICAgICAgICAgICAgICAgICAgJ2ltYWdlJzogaW1hZ2UsCisgICAgICAgICAg ICAgICAgICAnbGFiZWwnOiBsCisgICAgICAgICAgICAgICAgfSk7CisgICAg ICAgICAgICAgICAgY29sX3R5cGVzLnB1c2goe25hbWU6ci5sYWJlbCwgdHlw ZTpyLmRhdGF0eXBlfSk7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg IH0pOworICAgICAgICAgICAgc2VsZi5maWVsZC5zZXQoJ2NvbF90eXBlcycs IGNvbF90eXBlcyk7CisgICAgICAgICAgICByZXR1cm4gcmVzOworICAgICAg ICAgIH0sCisgICAgICAgICAgY2FuQWRkOiBmdW5jdGlvbihtKSB7CisgICAg ICAgICAgICByZXR1cm4gISgoXy5oYXMobSwgJ2hhbmRsZXInKSAmJgorICAg ICAgICAgICAgICAhXy5pc1VuZGVmaW5lZChtLmhhbmRsZXIpICYmCisgICAg ICAgICAgICAgICFfLmlzVW5kZWZpbmVkKG0uZ2V0KCdvaWQnKSkpIHx8IChf LmlzRnVuY3Rpb24obS5pc05ldykgJiYgIW0uaXNOZXcoKSkpOworICAgICAg ICAgIH0sCisgICAgICAgICAgc2VsZWN0MjogeworICAgICAgICAgICAgYWxs b3dDbGVhcjogZmFsc2UsIHdpZHRoOiAnc3R5bGUnLAorICAgICAgICAgICAg cGxhY2Vob2xkZXI6ICdTZWxlY3QgY29sdW1uJworICAgICAgICAgIH0sIGZp cnN0X2VtcHR5OiAhc2VsZi5tb2RlbC5pc05ldygpLAorICAgICAgICAgIGRp c2FibGVkOiBmdW5jdGlvbihtKSB7CisgICAgICAgICAgICByZXR1cm4gIV8u aXNVbmRlZmluZWQoc2VsZi5tb2RlbC5nZXQoJ29pZCcpKTsKKyAgICAgICAg ICB9CisgICAgICAgIH1dLAorICAgICAgICBoZWFkZXJEZWZhdWx0cyA9IHtj b2x1bW46IG51bGx9LAorCisgICAgICAgIGdyaWRDb2xzID0gWydjb2x1bW4n LCAnb3Blcl9jbGFzcycsICdvcmRlcicsICdudWxsc19vcmRlcicsICdvcGVy YXRvciddOworCisgICAgICBzZWxmLmhlYWRlckRhdGEgPSBuZXcgKEJhY2ti b25lLk1vZGVsLmV4dGVuZCh7CisgICAgICAgIGRlZmF1bHRzOiBoZWFkZXJE ZWZhdWx0cywKKyAgICAgICAgc2NoZW1hOiBoZWFkZXJTY2hlbWEKKyAgICAg IH0pKSh7fSk7CisKKyAgICAgIHZhciBoZWFkZXJHcm91cHMgPSBCYWNrZm9y bS5nZW5lcmF0ZVZpZXdTY2hlbWEoCisgICAgICAgICAgc2VsZi5maWVsZC5n ZXQoJ25vZGVfaW5mbycpLCBzZWxmLmhlYWRlckRhdGEsICdjcmVhdGUnLAor ICAgICAgICAgIG5vZGUsIHNlbGYuZmllbGQuZ2V0KCdub2RlX2RhdGEnKQor ICAgICAgICAgICksCisgICAgICAgICAgZmllbGRzID0gW107CisKKyAgICAg IF8uZWFjaChoZWFkZXJHcm91cHMsIGZ1bmN0aW9uKG8pIHsKKyAgICAgICAg ZmllbGRzID0gZmllbGRzLmNvbmNhdChvLmZpZWxkcyk7CisgICAgICB9KTsK KworICAgICAgc2VsZi5oZWFkZXJGaWVsZHMgPSBuZXcgQmFja2Zvcm0uRmll bGRzKGZpZWxkcyk7CisgICAgICBzZWxmLmdyaWRTY2hlbWEgPSBCYWNrZm9y bS5nZW5lcmF0ZUdyaWRDb2x1bW5zRnJvbU1vZGVsKAorICAgICAgICAgIHNl bGYuZmllbGQuZ2V0KCdub2RlX2luZm8nKSwgc2VsZi5maWVsZC5nZXQoJ21v ZGVsJyksICdlZGl0JywgZ3JpZENvbHMsIHNlbGYuZmllbGQuZ2V0KCdzY2hl bWFfbm9kZScpCisgICAgICAgICAgKTsKKworICAgICAgc2VsZi5jb250cm9s cyA9IFtdOworICAgICAgc2VsZi5saXN0ZW5UbyhzZWxmLmhlYWRlckRhdGEs ICJjaGFuZ2UiLCBzZWxmLmhlYWRlckRhdGFDaGFuZ2VkKTsKKyAgICAgIHNl bGYubGlzdGVuVG8oc2VsZi5oZWFkZXJEYXRhLCAic2VsZWN0MiIsIHNlbGYu aGVhZGVyRGF0YUNoYW5nZWQpOworICAgICAgc2VsZi5saXN0ZW5UbyhzZWxm LmNvbGxlY3Rpb24sICJhZGQiLCBzZWxmLm9uQWRkb3JSZW1vdmVDb2x1bW5z KTsKKyAgICAgIHNlbGYubGlzdGVuVG8oc2VsZi5jb2xsZWN0aW9uLCAicmVt b3ZlIiwgc2VsZi5vbkFkZG9yUmVtb3ZlQ29sdW1ucyk7CisgICAgfSwKKwor ICAgIGdlbmVyYXRlSGVhZGVyOiBmdW5jdGlvbihkYXRhKSB7CisgICAgICB2 YXIgaGVhZGVyID0gWworICAgICAgICAnPGRpdiBjbGFzcz0ic3Vibm9kZS1o ZWFkZXItZm9ybSI+JywKKyAgICAgICAgJyA8ZGl2IGNsYXNzPSJjb250YWlu ZXItZmx1aWQiPicsCisgICAgICAgICcgIDxkaXYgY2xhc3M9InJvdyI+JywK KyAgICAgICAgJyAgIDxkaXYgY2xhc3M9ImNvbC14cy00Ij4nLAorICAgICAg ICAnICAgIDxsYWJlbCBjbGFzcz0iY29udHJvbC1sYWJlbCI+PCUtY29sdW1u X2xhYmVsJT48L2xhYmVsPicsCisgICAgICAgICcgICA8L2Rpdj4nLAorICAg ICAgICAnICAgPGRpdiBjbGFzcz0iY29sLXhzLTQiIGhlYWRlcj0iY29sdW1u Ij48L2Rpdj4nLAorICAgICAgICAnICAgPGRpdiBjbGFzcz0iY29sLXhzLTQi PicsCisgICAgICAgICcgICAgIDxidXR0b24gY2xhc3M9ImJ0bi1zbSBidG4t ZGVmYXVsdCBhZGQiIDwlPWNhbkFkZCA/ICIiIDogImRpc2FibGVkPVwnZGlz YWJsZWRcJyIlPiA+PCUtYWRkX2xhYmVsJT48L2J1dHR0b24+JywKKyAgICAg ICAgJyAgIDwvZGl2PicsCisgICAgICAgICcgIDwvZGl2PicsCisgICAgICAg ICcgPC9kaXY+JywKKyAgICAgICAgJzwvZGl2PicsXS5qb2luKCJcbiIpCisK KyAgICAgIF8uZXh0ZW5kKGRhdGEsIHsKKyAgICAgICAgY29sdW1uX2xhYmVs OiAne3sgXygnQ29sdW1uJyl9fScsCisgICAgICAgIGFkZF9sYWJlbDogJ3t7 IF8oJ0FERCcpfX0nCisgICAgICB9KTsKKworICAgICAgdmFyIHNlbGYgPSB0 aGlzLAorICAgICAgICAgIGhlYWRlclRtcGwgPSBfLnRlbXBsYXRlKGhlYWRl ciksCisgICAgICAgICAgJGhlYWRlciA9ICQoaGVhZGVyVG1wbChkYXRhKSks CisgICAgICAgICAgY29udHJvbHMgPSB0aGlzLmNvbnRyb2xzOworCisgICAg ICB0aGlzLmhlYWRlckZpZWxkcy5lYWNoKGZ1bmN0aW9uKGZpZWxkKSB7Cisg ICAgICAgIHZhciBjb250cm9sID0gbmV3IChmaWVsZC5nZXQoImNvbnRyb2wi KSkoeworICAgICAgICAgIGZpZWxkOiBmaWVsZCwKKyAgICAgICAgICBtb2Rl bDogc2VsZi5oZWFkZXJEYXRhCisgICAgICAgIH0pOworCisgICAgICAgICRo ZWFkZXIuZmluZCgnZGl2W2hlYWRlcj0iJyArIGZpZWxkLmdldCgnbmFtZScp ICsgJyJdJykuYXBwZW5kKAorICAgICAgICAgIGNvbnRyb2wucmVuZGVyKCku JGVsCisgICAgICAgICk7CisKKyAgICAgICAgY29udHJvbHMucHVzaChjb250 cm9sKTsKKyAgICAgIH0pOworCisgICAgICAvLyBXZSBzaG91bGQgbm90IHNo b3cgYWRkIGJ1dCBpbiBwcm9wZXJ0aWVzIG1vZGUKKyAgICAgIGlmIChkYXRh Lm1vZGUgPT0gJ3Byb3BlcnRpZXMnKSB7CisgICAgICAgICRoZWFkZXIuZmlu ZCgiYnV0dG9uLmFkZCIpLnJlbW92ZSgpOworICAgICAgfQorCisgICAgICBz ZWxmLiRoZWFkZXIgPSAkaGVhZGVyOworCisgICAgICByZXR1cm4gJGhlYWRl cjsKKyAgICB9LAorCisgICAgZXZlbnRzOiBfLmV4dGVuZCgKKyAgICAgICAg ICAgICAgICAgIHt9LCBCYWNrZm9ybS5VbmlxdWVDb2xDb2xsZWN0aW9uQ29u dHJvbC5wcm90b3R5cGUuZXZlbnRzLAorICAgICAgICAgICAgICAgIHsnY2xp Y2sgYnV0dG9uLmFkZCc6ICdhZGRDb2x1bW5zJ30KKyAgICAgICAgICAgICAg ICApLAorCisgICAgc2hvd0dyaWRDb250cm9sOiBmdW5jdGlvbihkYXRhKSB7 CisKKyAgICAgIHZhciBzZWxmID0gdGhpcywKKyAgICAgICAgICB0aXRsZVRt cGwgPSBfLnRlbXBsYXRlKCI8ZGl2IGNsYXNzPSdzdWJub2RlLWhlYWRlcic+ PC9kaXY+IiksCisgICAgICAgICAgJGdyaWRCb2R5ID0KKyAgICAgICAgICAg ICQoIjxkaXYgY2xhc3M9J3BnYWRtaW4tY29udHJvbC1ncm91cCBiYWNrZ3Jp ZCBmb3JtLWdyb3VwIGNvbC14cy0xMiBvYmplY3Qgc3Vibm9kZSc+PC9kaXY+ IikuYXBwZW5kKAorICAgICAgICAgICAgICB0aXRsZVRtcGwoe2xhYmVsOiBk YXRhLmxhYmVsfSkKKyAgICAgICAgICAgICk7CisKKyAgICAgICRncmlkQm9k eS5hcHBlbmQoc2VsZi5nZW5lcmF0ZUhlYWRlcihkYXRhKSk7CisKKyAgICAg IHZhciBncmlkQ29sdW1ucyA9IF8uY2xvbmUodGhpcy5ncmlkU2NoZW1hLmNv bHVtbnMpOworCisgICAgICAvLyBJbnNlcnQgRGVsZXRlIENlbGwgaW50byBH cmlkCisgICAgICBpZiAoZGF0YS5kaXNhYmxlZCA9PSBmYWxzZSAmJiBkYXRh LmNhbkRlbGV0ZSkgeworICAgICAgICAgIGdyaWRDb2x1bW5zLnVuc2hpZnQo eworICAgICAgICAgICAgbmFtZTogInBnLWJhY2tmb3JtLWRlbGV0ZSIsIGxh YmVsOiAiIiwKKyAgICAgICAgICAgIGNlbGw6IEJhY2tncmlkLkV4dGVuc2lv bi5EZWxldGVDZWxsLAorICAgICAgICAgICAgZWRpdGFibGU6IGZhbHNlLCBj ZWxsX3ByaW9yaXR5OiAtMQorICAgICAgICAgIH0pOworICAgICAgfQorCisg ICAgICBpZiAoc2VsZi5ncmlkKSB7CisgICAgICAgIHNlbGYuZ3JpZC5yZW1v dmUoKTsKKyAgICAgICAgc2VsZi5ncmlkLm51bGw7CisgICAgICB9CisgICAg ICAvLyBJbml0aWFsaXplIGEgbmV3IEdyaWQgaW5zdGFuY2UKKyAgICAgIHZh ciBncmlkID0gc2VsZi5ncmlkID0gbmV3IEJhY2tncmlkLkdyaWQoeworICAg ICAgICBjb2x1bW5zOiBncmlkQ29sdW1ucywKKyAgICAgICAgY29sbGVjdGlv bjogc2VsZi5jb2xsZWN0aW9uLAorICAgICAgICBjbGFzc05hbWU6ICJiYWNr Z3JpZCB0YWJsZS1ib3JkZXJlZCIKKyAgICAgIH0pOworICAgICAgc2VsZi4k Z3JpZCA9IGdyaWQucmVuZGVyKCkuJGVsOworCisgICAgICAkZ3JpZEJvZHku YXBwZW5kKHNlbGYuJGdyaWQpOworCisgICAgICBzZXRUaW1lb3V0KGZ1bmN0 aW9uKCkgeworICAgICAgICBzZWxmLmhlYWRlckRhdGEuc2V0KHsKKyAgICAg ICAgICAnY29sdW1uJzogc2VsZi4kaGVhZGVyLmZpbmQoCisgICAgICAgICAg ICAnZGl2W2hlYWRlcj0iY29sdW1uIl0gc2VsZWN0JworICAgICAgICAgICAg KS52YWwoKQorICAgICAgICAgICAgfSwge3NpbGVudDp0cnVlfQorICAgICAg ICAgICk7CisgICAgICB9LCAxMCk7CisKKyAgICAgIC8vIFJlbmRlciBub2Rl IGdyaWQKKyAgICAgIHJldHVybiAkZ3JpZEJvZHk7CisgICAgfSwKKworICAg IGhlYWRlckRhdGFDaGFuZ2VkOiBmdW5jdGlvbigpIHsKKyAgICAgIHZhciBz ZWxmID0gdGhpcywgdmFsLAorICAgICAgICAgIGRhdGEgPSB0aGlzLmhlYWRl ckRhdGEudG9KU09OKCksCisgICAgICAgICAgaW5TZWxlY3RlZCA9IGZhbHNl LAorICAgICAgICAgIGNoZWNrVmFycyA9IFsnY29sdW1uJ107CisKKyAgICAg IGlmICghc2VsZi4kaGVhZGVyKSB7CisgICAgICAgIHJldHVybjsKKyAgICAg IH0KKworICAgICAgaWYgKHNlbGYuY29udHJvbF9kYXRhLmNhbkFkZCkgewor ICAgICAgICBzZWxmLmNvbGxlY3Rpb24uZWFjaChmdW5jdGlvbihtKSB7Cisg ICAgICAgICAgaWYgKCFpblNlbGVjdGVkKSB7CisgICAgICAgICAgICBfLmVh Y2goY2hlY2tWYXJzLCBmdW5jdGlvbih2KSB7CisgICAgICAgICAgICAgIGlm ICghaW5TZWxlY3RlZCkgeworICAgICAgICAgICAgICAgIHZhbCA9IG0uZ2V0 KHYpOworICAgICAgICAgICAgICAgIGluU2VsZWN0ZWQgPSAoKAorICAgICAg ICAgICAgICAgICAgKF8uaXNVbmRlZmluZWQodmFsKSB8fCBfLmlzTnVsbCh2 YWwpKSAmJgorICAgICAgICAgICAgICAgICAgKF8uaXNVbmRlZmluZWQoZGF0 YVt2XSkgfHwgXy5pc051bGwoZGF0YVt2XSkpCisgICAgICAgICAgICAgICAg ICApIHx8CisgICAgICAgICAgICAgICAgICAodmFsID09IGRhdGFbdl0pKTsK KyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSk7CisgICAgICAgICAg fQorICAgICAgICB9KTsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAg ICBpblNlbGVjdGVkID0gdHJ1ZTsKKyAgICAgIH0KKworICAgICAgc2VsZi4k aGVhZGVyLmZpbmQoJ2J1dHRvbi5hZGQnKS5wcm9wKCdkaXNhYmxlZCcsIGlu U2VsZWN0ZWQpOworICAgIH0sCisKKyAgICBhZGRDb2x1bW5zOiBmdW5jdGlv bihldikgeworICAgICAgZXYucHJldmVudERlZmF1bHQoKTsKKyAgICAgIHZh ciBzZWxmID0gdGhpcywKKyAgICAgICAgICBjb2x1bW4gPSBzZWxmLmhlYWRl ckRhdGEuZ2V0KCdjb2x1bW4nKTsKKworICAgICAgaWYgKCFjb2x1bW4gfHwg Y29sdW1uID09ICcnKSB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg IH0KKworICAgICAgdmFyIGNvbGwgPSBzZWxmLm1vZGVsLmdldChzZWxmLmZp ZWxkLmdldCgnbmFtZScpKSwKKyAgICAgICAgICBtID0gbmV3IChzZWxmLmZp ZWxkLmdldCgnbW9kZWwnKSkoCisgICAgICAgICAgICAgICAgc2VsZi5oZWFk ZXJEYXRhLnRvSlNPTigpLCB7CisgICAgICAgICAgICAgICAgICBzaWxlbnQ6 IHRydWUsIHRvcDogc2VsZi5tb2RlbC50b3AsCisgICAgICAgICAgICAgICAg ICBjb2xsZWN0aW9uOiBjb2xsLCBoYW5kbGVyOiBjb2xsCisgICAgICAgICAg ICAgICAgfSksCisgICAgICAgICAgY29sX3R5cGVzID1zZWxmLmZpZWxkLmdl dCgnY29sX3R5cGVzJykgfHwgW107CisKKyAgICAgIGZvcih2YXIgaT0wOyBp IDwgY29sX3R5cGVzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgIHZhciBjb2xf dHlwZSA9IGNvbF90eXBlc1tpXTsKKyAgICAgICAgaWYgKGNvbF90eXBlWydu YW1lJ10gPT0gIG0uZ2V0KCdjb2x1bW4nKSkgeworICAgICAgICAgICAgbS5z ZXQoeydjb2xfdHlwZSc6Y29sX3R5cGVbJ3R5cGUnXX0pOworICAgICAgICAg IGJyZWFrOworICAgICAgICB9CisgICAgICB9CisKKyAgICAgIGNvbGwuYWRk KG0pOworCisgICAgICB2YXIgaWR4ID0gY29sbC5pbmRleE9mKG0pOworCisg ICAgICAvLyBpZHggbWF5IG5vdCBiZSBhbHdheXMgPiAtMSBiZWNhdXNlIG91 ciBVbmlxdWVDb2xDb2xsZWN0aW9uIG1heQorICAgICAgLy8gcmVtb3ZlICdt JyBpZiBkdXBsaWNhdGUgdmFsdWUgZm91bmQuCisgICAgICBpZiAoaWR4ID4g LTEpIHsKKyAgICAgICAgc2VsZi4kZ3JpZC5maW5kKCcubmV3JykucmVtb3Zl Q2xhc3MoJ25ldycpOworCisgICAgICAgIHZhciBuZXdSb3cgPSBzZWxmLmdy aWQuYm9keS5yb3dzW2lkeF0uJGVsOworCisgICAgICAgIG5ld1Jvdy5hZGRD bGFzcygibmV3Iik7CisgICAgICAgICQobmV3Um93KS5wZ01ha2VWaXNpYmxl KCdiYWNrZm9ybS10YWInKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGRl bGV0ZSBtOworICAgICAgfQorCisgICAgICByZXR1cm4gZmFsc2U7CisgICAg fSwKKworICAgIG9uQWRkb3JSZW1vdmVDb2x1bW5zOiBmdW5jdGlvbigpIHsK KyAgICAgIHZhciBzZWxmID0gdGhpczsKKworICAgICAgLy8gV2FpdCBmb3Ig Y29sbGVjdGlvbiB0byBiZSB1cGRhdGVkIGJlZm9yZSBjaGVja2luZyBmb3Ig dGhlIGJ1dHRvbiB0byBiZQorICAgICAgLy8gZW5hYmxlZCwgb3Igbm90Lgor ICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgICBzZWxm LmNvbGxlY3Rpb24udHJpZ2dlcigncGdhZG1pbjpjb2x1bW5zOnVwZGF0ZWQn LCBzZWxmLmNvbGxlY3Rpb24pOworICAgICAgICBzZWxmLmhlYWRlckRhdGFD aGFuZ2VkKCk7CisgICAgICB9LCAxMCk7CisgICAgfSwKKworICAgIHJlbW92 ZTogZnVuY3Rpb24oKSB7CisgICAgICAvKgorICAgICAgICogU3RvcCBsaXN0 ZW5pbmcgdGhlIGV2ZW50cyByZWdpc3RlcmVkIGJ5IHRoaXMgY29udHJvbC4K KyAgICAgICAqLworICAgICAgdGhpcy5zdG9wTGlzdGVuaW5nKHRoaXMuaGVh ZGVyRGF0YSwgImNoYW5nZSIsIHRoaXMuaGVhZGVyRGF0YUNoYW5nZWQpOwor ICAgICAgdGhpcy5saXN0ZW5Ubyh0aGlzLmhlYWRlckRhdGEsICJzZWxlY3Qy IiwgdGhpcy5oZWFkZXJEYXRhQ2hhbmdlZCk7CisgICAgICB0aGlzLmxpc3Rl blRvKHRoaXMuY29sbGVjdGlvbiwgInJlbW92ZSIsIHRoaXMub25BZGRvclJl bW92ZUNvbHVtbnMpOworCisgICAgICAvLyBSZW1vdmUgaGVhZGVyIGNvbnRy b2xzLgorICAgICAgXy5lYWNoKHRoaXMuY29udHJvbHMsIGZ1bmN0aW9uKGNv bnRyb2xzKSB7CisgICAgICAgIGNvbnRyb2xzLnJlbW92ZSgpOworICAgICAg fSk7CisKKyAgICAgIEV4Y2x1c2lvbkNvbnN0cmFpbnRDb2x1bW5Db250cm9s Ll9fc3VwZXJfXy5yZW1vdmUuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKKwor ICAgICAgLy8gUmVtb3ZlIHRoZSBoZWFkZXIgbW9kZWwKKyAgICAgIGRlbGV0 ZSAodGhpcy5oZWFkZXJEYXRhKTsKKworICAgIH0KKyAgfSk7CisKKyAgLy8g RXh0ZW5kIHRoZSBicm93c2VyJ3Mgbm9kZSBjbGFzcyBmb3IgZXhjbHVzaW9u IGNvbnN0cmFpbnQgbm9kZQorICBpZiAoIXBnQnJvd3Nlci5Ob2Rlc1snZXhj bHVzaW9uX2NvbnN0cmFpbnQnXSkgeworICAgIHBnQWRtaW4uQnJvd3Nlci5O b2Rlc1snZXhjbHVzaW9uX2NvbnN0cmFpbnQnXSA9IHBnQnJvd3Nlci5Ob2Rl LmV4dGVuZCh7CisgICAgICB0eXBlOiAnZXhjbHVzaW9uX2NvbnN0cmFpbnQn LAorICAgICAgbGFiZWw6ICd7eyBfKCdFeGNsdXNpb24gY29uc3RyYWludCcp IH19JywKKyAgICAgIGNvbGxlY3Rpb25fdHlwZTogJ2NvbGwtY29uc3RyYWlu dHMnLAorICAgICAgc3FsQWx0ZXJIZWxwOiAnZGRsLWFsdGVyLmh0bWwnLAor ICAgICAgc3FsQ3JlYXRlSGVscDogJ2RkbC1jb25zdHJhaW50cy5odG1sJywK KyAgICAgIGhhc1NRTDogdHJ1ZSwKKyAgICAgIHBhcmVudF90eXBlOiAndGFi bGUnLAorICAgICAgY2FuRHJvcDogdHJ1ZSwKKyAgICAgIGNhbkRyb3BDYXNj YWRlOiB0cnVlLAorICAgICAgaGFzRGVwZW5kczogdHJ1ZSwKKyAgICAgIElu aXQ6IGZ1bmN0aW9uKCkgeworICAgICAgICAvKiBBdm9pZCBtdWx0aXBsZSBy ZWdpc3RyYXRpb24gb2YgbWVudXMgKi8KKyAgICAgICAgaWYgKHRoaXMuaW5p dGlhbGl6ZWQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhp cy5pbml0aWFsaXplZCA9IHRydWU7CisKKyAgICAgICAgcGdCcm93c2VyLmFk ZF9tZW51cyhbeworICAgICAgICAgIG5hbWU6ICdjcmVhdGVfZXhjbHVzaW9u X2NvbnN0cmFpbnRfb25fY29sbCcsIG5vZGU6ICdjb2xsLWNvbnN0cmFpbnRz JywgbW9kdWxlOiB0aGlzLAorICAgICAgICAgIGFwcGxpZXM6IFsnb2JqZWN0 JywgJ2NvbnRleHQnXSwgY2FsbGJhY2s6ICdzaG93X29ial9wcm9wZXJ0aWVz JywKKyAgICAgICAgICBjYXRlZ29yeTogJ2NyZWF0ZScsIHByaW9yaXR5OiA0 LCBsYWJlbDogJ3t7IF8oJ0V4Y2x1c2lvbiBjb25zdHJhaW50Li4uJykgfX0n LAorICAgICAgICAgIGljb246ICd3Y1RhYkljb24gaWNvbi1leGNsdXNpb25f Y29uc3RyYWludCcsIGRhdGE6IHthY3Rpb246ICdjcmVhdGUnLCBjaGVjazog dHJ1ZX0sCisgICAgICAgICAgZW5hYmxlOiAnY2FuQ3JlYXRlJworICAgICAg ICB9XSk7CisgICAgICB9LAorICAgICAgaXNfbm90X3ZhbGlkOiBmdW5jdGlv bihub2RlKSB7CisgICAgICAgIHJldHVybiAobm9kZSAmJiAhbm9kZS52YWxp ZCk7CisgICAgICB9LAorICAgICAgLy8gRGVmaW5lIHRoZSBtb2RlbCBmb3Ig ZXhjbHVzaW9uIGNvbnN0cmFpbnQgbm9kZQorICAgICAgbW9kZWw6IHBnQWRt aW4uQnJvd3Nlci5Ob2RlLk1vZGVsLmV4dGVuZCh7CisgICAgICAgIGRlZmF1 bHRzOiB7CisgICAgICAgICAgbmFtZTogdW5kZWZpbmVkLAorICAgICAgICAg IG9pZDogdW5kZWZpbmVkLAorICAgICAgICAgIGNvbW1lbnQ6IHVuZGVmaW5l ZCwKKyAgICAgICAgICBzcGNuYW1lOiAicGdfZGVmYXVsdCIsCisgICAgICAg ICAgYW1uYW1lOiAiZ2lzdCIsCisgICAgICAgICAgZmlsbGZhY3RvcjogdW5k ZWZpbmVkLAorICAgICAgICAgIGNvbmRlZmVycmFibGU6IHVuZGVmaW5lZCwK KyAgICAgICAgICBjb25kZWZlcnJlZDogdW5kZWZpbmVkLAorICAgICAgICAg IGNvbHVtbnM6IFtdCisgICAgICAgIH0sCisKKyAgICAgICAgLy8gRGVmaW5l IHRoZSBzY2hlbWEgZm9yIHRoZSBleGNsdXNpb24gY29uc3RyYWludCBub2Rl CisgICAgICAgIHNjaGVtYTogW3sKKyAgICAgICAgICBpZDogJ25hbWUnLCBs YWJlbDogJ3t7IF8oJ05hbWUnKSB9fScsIHR5cGU6ICd0ZXh0JywKKyAgICAg ICAgICBtb2RlOiBbJ3Byb3BlcnRpZXMnLCAnY3JlYXRlJywgJ2VkaXQnXSwg ZWRpdGFibGU6IHRydWUsCisgICAgICAgIH0seworICAgICAgICAgIGlkOiAn b2lkJywgbGFiZWw6J3t7IF8oJ09JRCcpIH19JywgY2VsbDogJ3N0cmluZycs CisgICAgICAgICAgdHlwZTogJ3RleHQnICwgbW9kZTogWydwcm9wZXJ0aWVz J10KKyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdjb21tZW50JywgbGFi ZWw6J3t7IF8oJ0NvbW1lbnQnKSB9fScsIGNlbGw6ICdzdHJpbmcnLAorICAg ICAgICAgIHR5cGU6ICdtdWx0aWxpbmUnLCBtb2RlOiBbJ3Byb3BlcnRpZXMn LCAnY3JlYXRlJywgJ2VkaXQnXSwKKyAgICAgICAgICBkZXBzOlsnbmFtZSdd LCBkaXNhYmxlZDpmdW5jdGlvbihtKSB7CisgICAgICAgICAgICB2YXIgbmFt ZSA9IG0uZ2V0KCduYW1lJyk7CisgICAgICAgICAgICBpZiAoIShuYW1lICYm IG5hbWUgIT0gJycpKSB7CisgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVu Y3Rpb24oKXsKKyAgICAgICAgICAgICAgICBtLnNldCgnY29tbWVudCcsIG51 bGwpOworICAgICAgICAgICAgICB9LDEwKTsKKyAgICAgICAgICAgICAgcmV0 dXJuIHRydWU7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg ICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQor ICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ3NwY25hbWUnLCBsYWJlbDog J3t7IF8oJ1RhYmxlc3BhY2UnKSB9fScsCisgICAgICAgICAgdHlwZTogJ3Rl eHQnLCBncm91cDogJ3t7IF8oJ0RlZmluaXRpb24nKSB9fScsCisgICAgICAg ICAgY29udHJvbDogJ25vZGUtbGlzdC1ieS1uYW1lJywgbm9kZTogJ3RhYmxl c3BhY2UnLAorICAgICAgICAgIHNlbGVjdDI6e2FsbG93Q2xlYXI6ZmFsc2V9 LAorICAgICAgICAgIGZpbHRlcjogZnVuY3Rpb24obSkgeworICAgICAgICAg ICAgLy8gRG9uJ3Qgc2hvdyBwZ19nbG9iYWwgdGFibGVzcGFjZSBpbiBzZWxl Y3Rpb24uCisgICAgICAgICAgICBpZiAobS5sYWJlbCA9PSAicGdfZ2xvYmFs IikgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgZWxzZSByZXR1cm4gdHJ1 ZTsKKyAgICAgICAgICB9CisgICAgICAgIH0seworICAgICAgICAgIGlkOiAn YW1uYW1lJywgbGFiZWw6ICd7eyBfKCdBY2Nlc3MgbWV0aG9kJykgfX0nLAor ICAgICAgICAgIHR5cGU6ICd0ZXh0JywgZ3JvdXA6ICd7eyBfKCdEZWZpbml0 aW9uJykgfX0nLAorICAgICAgICAgIHVybDoiZ2V0X2FjY2Vzc19tZXRob2Rz Iiwgbm9kZTogJ3RhYmxlJywKKyAgICAgICAgICBjb250cm9sOiBCYWNrZm9y bS5Ob2RlQWpheE9wdGlvbnNDb250cm9sLmV4dGVuZCh7CisgICAgICAgICAg ICAvLyBXaGVuIGFjY2VzcyBtZXRob2QgY2hhbmdlcyB3ZSBuZWVkIHRvIGNs ZWFyIGNvbHVtbnMgY29sbGVjdGlvbgorICAgICAgICAgICAgb25DaGFuZ2U6 IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICBCYWNrZm9ybS5Ob2RlQWph eE9wdGlvbnNDb250cm9sLnByb3RvdHlwZS5vbkNoYW5nZS5hcHBseSh0aGlz LCBhcmd1bWVudHMpOworICAgICAgICAgICAgICB2YXIgc2VsZiA9IHRoaXMs CisgICAgICAgICAgICAgIC8vIGN1cnJlbnQgYWNjZXNzIG1ldGhvZAorICAg ICAgICAgICAgICBjdXJyZW50X2FtID0gc2VsZi5tb2RlbC5nZXQoJ2FtbmFt ZScpLAorICAgICAgICAgICAgICAvLyBwcmV2aW91cyBhY2Nlc3MgbWV0aG9k CisgICAgICAgICAgICAgIHByZXZpb3VzX2FtID0gc2VsZi5tb2RlbC5wcmV2 aW91cygnYW1uYW1lJyksCisgICAgICAgICAgICAgIGNvbHVtbl9jb2xsZWN0 aW9uID0gc2VsZi5tb2RlbC5nZXQoJ2NvbHVtbnMnKTsKKworICAgICAgICAg ICAgICBpZiAoY29sdW1uX2NvbGxlY3Rpb24ubGVuZ3RoID4gMCAmJiBjdXJy ZW50X2FtICE9IHByZXZpb3VzX2FtKSB7CisgICAgICAgICAgICAgICAgdmFy IG1zZyA9ICd7eyBfKCdDaGFuZ2luZyBhY2Nlc3MgbWV0aG9kIHdpbGwgY2xl YXIgY29sdW1ucyBjb2xsZWN0aW9uJykgfX0nOworICAgICAgICAgICAgICAg IEFsZXJ0aWZ5LmNvbmZpcm0obXNnLCBmdW5jdGlvbiAoZSkgeworICAgICAg ICAgICAgICAgICAgICAvLyBVc2VyIGNsaWNrcyBPaywgbGV0cyBjbGVhciBj b2xsZWN0aW9uCisgICAgICAgICAgICAgICAgICAgIGNvbHVtbl9jb2xsZWN0 aW9uLnJlc2V0KCk7CisgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQo ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgICAgY29sdW1uX2Nv bGxlY3Rpb24udHJpZ2dlcigncGdhZG1pbjpjb2x1bW5zOnVwZGF0ZWQnLCBj b2x1bW5fY29sbGVjdGlvbik7CisgICAgICAgICAgICAgICAgICAgIH0sIDEw KTsKKworICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oKSB7CisgICAg ICAgICAgICAgICAgICAgIC8vIFVzZXIgY2xpY2tzIENhbmNlbCBzZXQgcHJl dmlvdXMgdmFsdWUgYWdhaW4gaW4gY29tYm8gYm94CisgICAgICAgICAgICAg ICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKXsKKyAgICAgICAgICAgICAg ICAgICAgICBzZWxmLm1vZGVsLnNldCgnYW1uYW1lJywgcHJldmlvdXNfYW0p OworICAgICAgICAgICAgICAgICAgICB9LCAxMCk7CisgICAgICAgICAgICAg ICAgfSk7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAg ICAgICB9KSwKKyAgICAgICAgICBzZWxlY3QyOnthbGxvd0NsZWFyOnRydWV9 LAorICAgICAgICAgIGRpc2FibGVkOiBmdW5jdGlvbihtKSB7CisgICAgICAg ICAgICByZXR1cm4gKChfLmhhcyhtLCAnaGFuZGxlcicpICYmCisgICAgICAg ICAgICAgICFfLmlzVW5kZWZpbmVkKG0uaGFuZGxlcikgJiYKKyAgICAgICAg ICAgICAgIV8uaXNVbmRlZmluZWQobS5nZXQoJ29pZCcpKSkgfHwgKF8uaXNG dW5jdGlvbihtLmlzTmV3KSAmJiAhbS5pc05ldygpKSk7CisgICAgICAgICAg fQorICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ2ZpbGxmYWN0b3InLCBs YWJlbDogJ3t7IF8oJ0ZpbGwgZmFjdG9yJykgfX0nLAorICAgICAgICAgIHR5 cGU6ICdpbnQnLCBncm91cDogJ3t7IF8oJ0RlZmluaXRpb24nKSB9fScsIGFs bG93TnVsbDogdHJ1ZQorICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ2Nv bmRlZmVycmFibGUnLCBsYWJlbDogJ3t7IF8oJ0RlZmVycmFibGUnKSB9fScs CisgICAgICAgICAgdHlwZTogJ3N3aXRjaCcsIGdyb3VwOiAne3sgXygnRGVm aW5pdGlvbicpIH19JywgZGVwczogWydpbmRleCddLAorICAgICAgICAgIGRp c2FibGVkOiBmdW5jdGlvbihtKSB7CisgICAgICAgICAgICByZXR1cm4gKChf LmhhcyhtLCAnaGFuZGxlcicpICYmCisgICAgICAgICAgICAgICFfLmlzVW5k ZWZpbmVkKG0uaGFuZGxlcikgJiYKKyAgICAgICAgICAgICAgIV8uaXNVbmRl ZmluZWQobS5nZXQoJ29pZCcpKSkgfHwgKF8uaXNGdW5jdGlvbihtLmlzTmV3 KSAmJiAhbS5pc05ldygpKSk7CisgICAgICAgICAgfQorICAgICAgICB9LHsK KyAgICAgICAgICBpZDogJ2NvbmRlZmVycmVkJywgbGFiZWw6ICd7eyBfKCdE ZWZlcnJlZCcpIH19JywKKyAgICAgICAgICB0eXBlOiAnc3dpdGNoJywgZ3Jv dXA6ICd7eyBfKCdEZWZpbml0aW9uJykgfX0nLAorICAgICAgICAgIGRlcHM6 IFsnY29uZGVmZXJyYWJsZSddLAorICAgICAgICAgIGRpc2FibGVkOiBmdW5j dGlvbihtKSB7CisgICAgICAgICAgICBpZigoXy5oYXMobSwgJ2hhbmRsZXIn KSAmJgorICAgICAgICAgICAgICAhXy5pc1VuZGVmaW5lZChtLmhhbmRsZXIp ICYmCisgICAgICAgICAgICAgICFfLmlzVW5kZWZpbmVkKG0uZ2V0KCdvaWQn KSkpIHx8IChfLmlzRnVuY3Rpb24obS5pc05ldykgJiYgIW0uaXNOZXcoKSkp IHsKKyAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9 CisKKyAgICAgICAgICAgIC8vIERpc2FibGUgaWYgY29uZGVmZXJyZWQgaXMg ZmFsc2Ugb3IgdW5zZWxlY3RlZC4KKyAgICAgICAgICAgIGlmKG0uZ2V0KCdj b25kZWZlcnJhYmxlJykgPT0gdHJ1ZSkgeworICAgICAgICAgICAgICByZXR1 cm4gZmFsc2U7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg ICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7CisgICAgICAgICAgICAgICAgbS5z ZXQoJ2NvbmRlZmVycmVkJywgZmFsc2UpOworICAgICAgICAgICAgICB9LDEw KTsKKyAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9 CisgICAgICAgICAgfQorICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ2Nv bnN0cmFpbnQnLCBsYWJlbDone3sgXygnQ29uc3RyYWludCcpIH19JywgY2Vs bDogJ3N0cmluZycsCisgICAgICAgICAgdHlwZTogJ211bHRpbGluZScsIG1v ZGU6IFsnY3JlYXRlJywgJ2VkaXQnXSwgZWRpdGFibGU6IGZhbHNlLAorICAg ICAgICAgIGdyb3VwOiAne3sgXygnRGVmaW5pdGlvbicpIH19JywgZGlzYWJs ZWQ6IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICAgIHJldHVybiAoKF8uaGFz KG0sICdoYW5kbGVyJykgJiYKKyAgICAgICAgICAgICAgIV8uaXNVbmRlZmlu ZWQobS5oYW5kbGVyKSAmJgorICAgICAgICAgICAgICAhXy5pc1VuZGVmaW5l ZChtLmdldCgnb2lkJykpKSB8fCAoXy5pc0Z1bmN0aW9uKG0uaXNOZXcpICYm ICFtLmlzTmV3KCkpKTsKKyAgICAgICAgICB9CisgICAgICAgIH0seworICAg ICAgICAgIGlkOiAnY29sdW1ucycsIGxhYmVsOiAne3sgXygnQ29sdW1ucycp IH19JywKKyAgICAgICAgICB0eXBlOiAnY29sbGVjdGlvbicsIGdyb3VwOiAn e3sgXygnQ29sdW1ucycpIH19JywgZGlzYWJsZWQ6IGZhbHNlLAorICAgICAg ICAgIGRlcHM6WydhbW5hbWUnXSwgY2FuRGVsZXRlOiB0cnVlLCBlZGl0YWJs ZTogZmFsc2UsCisgICAgICAgICAgY2FuQWRkOiBmdW5jdGlvbihtKSB7Cisg ICAgICAgICAgICAvLyBXZSBjYW4ndCB1cGRhdGUgY29sdW1ucyBvZiBleGlz dGluZyBleGNsdXNpb24gY29uc3RyYWludC4KKyAgICAgICAgICAgIHJldHVy biAhKChfLmhhcyhtLCAnaGFuZGxlcicpICYmCisgICAgICAgICAgICAgICFf LmlzVW5kZWZpbmVkKG0uaGFuZGxlcikgJiYKKyAgICAgICAgICAgICAgIV8u aXNVbmRlZmluZWQobS5nZXQoJ29pZCcpKSkgfHwgKF8uaXNGdW5jdGlvbiht LmlzTmV3KSAmJiAhbS5pc05ldygpKSk7CisgICAgICAgICAgfSwKKyAgICAg ICAgICBjb250cm9sOiBFeGNsdXNpb25Db25zdHJhaW50Q29sdW1uQ29udHJv bCwKKyAgICAgICAgICBtb2RlbDogRXhjbHVzaW9uQ29uc3RyYWludENvbHVt bk1vZGVsLAorICAgICAgICAgIGRpc2FibGVkOiBmdW5jdGlvbihtKSB7Cisg ICAgICAgICAgICByZXR1cm4gKChfLmhhcyhtLCAnaGFuZGxlcicpICYmCisg ICAgICAgICAgICAgICFfLmlzVW5kZWZpbmVkKG0uaGFuZGxlcikgJiYKKyAg ICAgICAgICAgICAgIV8uaXNVbmRlZmluZWQobS5nZXQoJ29pZCcpKSkgfHwg KF8uaXNGdW5jdGlvbihtLmlzTmV3KSAmJiAhbS5pc05ldygpKSk7CisgICAg ICAgICAgfSwKKyAgICAgICAgICBjZWxsOiBCYWNrZ3JpZC5TdHJpbmdDZWxs LmV4dGVuZCh7CisgICAgICAgICAgICBpbml0aWFsaXplOiBmdW5jdGlvbigp IHsKKyAgICAgICAgICAgICAgQmFja2dyaWQuU3RyaW5nQ2VsbC5wcm90b3R5 cGUuaW5pdGlhbGl6ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpOworICAgICAg ICAgICAgICB2YXIgc2VsZiA9IHRoaXM7CisgICAgICAgICAgICAgIC8vIERv IG5vdCBsaXN0ZW4gZm9yIGFueSBldmVudChzKSBmb3IgZXhpc3RpbmcgY29u c3RyYWludC4KKyAgICAgICAgICAgICAgaWYgKF8uaXNVbmRlZmluZWQoc2Vs Zi5tb2RlbC5nZXQoJ29pZCcpKSkgeworICAgICAgICAgICAgICAgIHZhciB0 YWJsZUNvbHMgPSBzZWxmLm1vZGVsLnRvcC5nZXQoJ2NvbHVtbnMnKTsKKwor ICAgICAgICAgICAgICAgIHNlbGYubGlzdGVuVG8odGFibGVDb2xzLCAncmVt b3ZlJyAsIHNlbGYucmVtb3ZlQ29sdW1uKTsKKyAgICAgICAgICAgICAgICBz ZWxmLmxpc3RlblRvKHRhYmxlQ29scywgJ2NoYW5nZTpuYW1lJywgc2VsZi5y ZXNldENvbE9wdGlvbnMpOworICAgICAgICAgICAgICAgIHNlbGYubGlzdGVu VG8odGFibGVDb2xzLCAnY2hhbmdlOmNsdHlwZScsIHNlbGYucmVtb3ZlQ29s dW1uV2l0aFR5cGUpOworICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAg ICAgdGhpcy5tb2RlbC5nZXQoJ2NvbHVtbnMnKS5vbigncGdhZG1pbjpjb2x1 bW5zOnVwZGF0ZWQnLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBz ZWxmLnJlbmRlci5hcHBseShzZWxmKTsKKyAgICAgICAgICAgICAgfSk7Cisg ICAgICAgICAgICB9LAorICAgICAgICAgICAgcmVtb3ZlQ29sdW1uV2l0aFR5 cGU6IGZ1bmN0aW9uKG0peworICAgICAgICAgICAgICB2YXIgc2VsZiA9IHRo aXMsCisgICAgICAgICAgICAgICAgICBjb2xzID0gc2VsZi5tb2RlbC5nZXQo J2NvbHVtbnMnKSwKKyAgICAgICAgICAgICAgICAgIHJlbW92ZWRDb2xzID0g Y29scy53aGVyZSgKKyAgICAgICAgICAgICAgICAgICAge2NvbF90eXBlOiBt LnByZXZpb3VzKCdjbHR5cGUnKX0KKyAgICAgICAgICAgICAgICAgICAgKTsK KworICAgICAgICAgICAgICBjb2xzLnJlbW92ZShyZW1vdmVkQ29scyk7Cisg ICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeworICAgICAg ICAgICAgICAgIHNlbGYucmVuZGVyKCk7CisgICAgICAgICAgICAgIH0sIDEw KTsKKworICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsK KyAgICAgICAgICAgICAgICBjb25zdHJhaW50cyA9IHNlbGYubW9kZWwudG9w LmdldCgiZXhjbHVkZV9jb25zdHJhaW50Iik7CisgICAgICAgICAgICAgICAg dmFyIHJlbW92ZWQgPSBbXTsKKyAgICAgICAgICAgICAgICBjb25zdHJhaW50 cy5lYWNoKGZ1bmN0aW9uKGNvbnN0cmFpbnQpIHsKKyAgICAgICAgICAgICAg ICAgIGlmIChjb25zdHJhaW50LmdldCgiY29sdW1ucyIpLmxlbmd0aCA9PSAw KSB7CisgICAgICAgICAgICAgICAgICAgICByZW1vdmVkLnB1c2goY29uc3Ry YWludCk7CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg fSk7CisgICAgICAgICAgICAgICAgY29uc3RyYWludHMucmVtb3ZlKHJlbW92 ZWQpOworICAgICAgICAgICAgICB9LDEwMCk7CisgICAgICAgICAgICB9LAor ICAgICAgICAgICAgcmVtb3ZlQ29sdW1uOiBmdW5jdGlvbihtKXsKKyAgICAg ICAgICAgICAgdmFyIHNlbGYgPSB0aGlzLAorICAgICAgICAgICAgICAgICAg cmVtb3ZlZENvbHMgPSBzZWxmLm1vZGVsLmdldCgnY29sdW1ucycpLndoZXJl KAorICAgICAgICAgICAgICAgICAgICB7Y29sdW1uOiBtLmdldCgnbmFtZScp fQorICAgICAgICAgICAgICAgICAgICApOworCisgICAgICAgICAgICAgIHNl bGYubW9kZWwuZ2V0KCdjb2x1bW5zJykucmVtb3ZlKHJlbW92ZWRDb2xzKTsK KyAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CisgICAg ICAgICAgICAgICAgc2VsZi5yZW5kZXIoKTsKKyAgICAgICAgICAgICAgfSwg MTApOworCisgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkg eworICAgICAgICAgICAgICAgIGNvbnN0cmFpbnRzID0gc2VsZi5tb2RlbC50 b3AuZ2V0KCJleGNsdWRlX2NvbnN0cmFpbnQiKTsKKyAgICAgICAgICAgICAg ICB2YXIgcmVtb3ZlZCA9IFtdOworICAgICAgICAgICAgICAgIGNvbnN0cmFp bnRzLmVhY2goZnVuY3Rpb24oY29uc3RyYWludCkgeworICAgICAgICAgICAg ICAgICAgaWYgKGNvbnN0cmFpbnQuZ2V0KCJjb2x1bW5zIikubGVuZ3RoID09 IDApIHsKKyAgICAgICAgICAgICAgICAgICAgIHJlbW92ZWQucHVzaChjb25z dHJhaW50KTsKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg ICB9KTsKKyAgICAgICAgICAgICAgICBjb25zdHJhaW50cy5yZW1vdmUocmVt b3ZlZCk7CisgICAgICAgICAgICAgIH0sMTAwKTsKKyAgICAgICAgICAgIH0s CisgICAgICAgICAgICByZXNldENvbE9wdGlvbnMgOiBmdW5jdGlvbihtKSB7 CisgICAgICAgICAgICAgICAgdmFyIHNlbGYgPSB0aGlzLAorICAgICAgICAg ICAgICAgICAgdXBkYXRlZENvbHMgPSBzZWxmLm1vZGVsLmdldCgnY29sdW1u cycpLndoZXJlKAorICAgICAgICAgICAgICAgICAgeyJjb2x1bW4iOiBtLnBy ZXZpb3VzKCduYW1lJyl9CisgICAgICAgICAgICAgICAgICApOworCisgICAg ICAgICAgICAgICAgaWYgKHVwZGF0ZWRDb2xzLmxlbmd0aCA+IDApIHsKKyAg ICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICAgKiBUYWJs ZSBjb2x1bW4gbmFtZSBoYXMgY2hhbmdlZCBzbyB1cGRhdGUKKyAgICAgICAg ICAgICAgICAgICAqIGNvbHVtbiBuYW1lIGluIGZvcmVpZ24ga2V5IGFzIHdl bGwuCisgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICAg IHVwZGF0ZWRDb2xzWzBdLnNldCgKKyAgICAgICAgICAgICAgICAgIHsiY29s dW1uIjogbS5nZXQoJ25hbWUnKX0pOworICAgICAgICAgICAgICAgIH0KKwor ICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeworICAg ICAgICAgICAgICAgICAgc2VsZi5yZW5kZXIoKTsKKyAgICAgICAgICAgICAg ICB9LCAxMCk7CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgZm9ybWF0 dGVyOiB7CisgICAgICAgICAgICAgIGZyb21SYXc6IGZ1bmN0aW9uIChyYXdW YWx1ZSwgbW9kZWwpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gcmF3VmFs dWUucGx1Y2soImNvbHVtbiIpLnRvU3RyaW5nKCk7CisgICAgICAgICAgICAg IH0sCisgICAgICAgICAgICAgIHRvUmF3OiBmdW5jdGlvbiAodmFsLCBtb2Rl bCkgeworICAgICAgICAgICAgICAgIHJldHVybiB2YWw7CisgICAgICAgICAg ICAgIH0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICByZW5kZXI6IGZ1 bmN0aW9uKCkgeworICAgICAgICAgICAgICByZXR1cm4gQmFja2dyaWQuU3Ry aW5nQ2VsbC5wcm90b3R5cGUucmVuZGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50 cyk7CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgcmVtb3ZlOiBmdW5j dGlvbigpIHsKKyAgICAgICAgICAgICAgdmFyIHRhYmxlQ29scyA9IHRoaXMu bW9kZWwudG9wLmdldCgnY29sdW1ucycpLAorICAgICAgICAgICAgICAgICAg Y29scyA9IHRoaXMubW9kZWwuZ2V0KCdjb2x1bW5zJyk7CisgICAgICAgICAg ICAgIGlmIChjb2xzKSB7CisgICAgICAgICAgICAgICAgY29scy5vZmYoJ3Bn YWRtaW46Y29sdW1uczp1cGRhdGVkJyk7CisgICAgICAgICAgICAgIH0KKwor ICAgICAgICAgICAgICB0aGlzLnN0b3BMaXN0ZW5pbmcodGFibGVDb2xzLCAn cmVtb3ZlJyAsIHNlbGYucmVtb3ZlQ29sdW1uKTsKKyAgICAgICAgICAgICAg dGhpcy5zdG9wTGlzdGVuaW5nKHRhYmxlQ29scywgJ2NoYW5nZTpuYW1lJyAs IHNlbGYucmVzZXRDb2xPcHRpb25zKTsKKyAgICAgICAgICAgICAgdGhpcy5z dG9wTGlzdGVuaW5nKHRhYmxlQ29scywgJ2NoYW5nZTpjbHR5cGUnICwgc2Vs Zi5yZW1vdmVDb2x1bW5XaXRoVHlwZSk7CisKKyAgICAgICAgICAgICAgQmFj a2dyaWQuU3RyaW5nQ2VsbC5wcm90b3R5cGUucmVtb3ZlLmFwcGx5KHRoaXMs IGFyZ3VtZW50cyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgfSksCisg ICAgICAgIH1dLAorICAgICAgICB2YWxpZGF0ZTogZnVuY3Rpb24oKSB7Cisg ICAgICAgICAgdGhpcy5lcnJvck1vZGVsLmNsZWFyKCk7CisgICAgICAgICAg dmFyIGNvbHVtbnMgPSB0aGlzLmdldCgnY29sdW1ucycpOworICAgICAgICAg IGlmICgoXy5pc1VuZGVmaW5lZChjb2x1bW5zKSB8fCBfLmlzTnVsbChjb2x1 bW5zKSB8fCBjb2x1bW5zLmxlbmd0aCA8IDEpKSB7CisgICAgICAgICAgICB2 YXIgbXNnID0gJ3t7IF8oJ1BsZWFzZSBzcGVjaWZ5IGNvbHVtbnMgZm9yIEV4 Y2x1ZGUgY29uc3RyYWludC4nKSB9fSc7CisgICAgICAgICAgICB0aGlzLmVy cm9yTW9kZWwuc2V0KCdjb2x1bW5zJywgbXNnKTsKKyAgICAgICAgICAgIHJl dHVybiBtc2c7CisgICAgICAgICAgfQorCisgICAgICAgICAgcmV0dXJuIG51 bGw7CisgICAgICAgIH0KKyAgICAgIH0pLAorCisgICAgICBjYW5DcmVhdGU6 IGZ1bmN0aW9uKGl0ZW1EYXRhLCBpdGVtLCBkYXRhKSB7CisgICAgICAgICAg Ly8gSWYgY2hlY2sgaXMgZmFsc2UgdGhlbiAsIHdlIHdpbGwgYWxsb3cgY3Jl YXRlIG1lbnUKKyAgICAgICAgICBpZiAoZGF0YSAmJiBkYXRhLmNoZWNrID09 IGZhbHNlKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAg ICB2YXIgdCA9IHBnQnJvd3Nlci50cmVlLCBpID0gaXRlbSwgZCA9IGl0ZW1E YXRhLCBwYXJlbnRzID0gW107CisgICAgICAgICAgLy8gVG8gaXRlcmF0ZSBv dmVyIHRyZWUgdG8gY2hlY2sgcGFyZW50IG5vZGUKKyAgICAgICAgICB3aGls ZSAoaSkgeworICAgICAgICAgICAgLy8gSWYgaXQgaXMgc2NoZW1hIHRoZW4g YWxsb3cgdXNlciB0byBjcmVhdGUgdGFibGUKKyAgICAgICAgICAgIGlmIChf LmluZGV4T2YoWydzY2hlbWEnXSwgZC5fdHlwZSkgPiAtMSkKKyAgICAgICAg ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICBwYXJlbnRzLnB1c2go ZC5fdHlwZSk7CisgICAgICAgICAgICBpID0gdC5oYXNQYXJlbnQoaSkgPyB0 LnBhcmVudChpKSA6IG51bGw7CisgICAgICAgICAgICBkID0gaSA/IHQuaXRl bURhdGEoaSkgOiBudWxsOworICAgICAgICAgIH0KKyAgICAgICAgICAvLyBJ ZiBub2RlIGlzIHVuZGVyIGNhdGFsb2cgdGhlbiBkbyBub3QgYWxsb3cgJ2Ny ZWF0ZScgbWVudQorICAgICAgICAgIGlmIChfLmluZGV4T2YocGFyZW50cywg J2NhdGFsb2cnKSA+IC0xKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7 CisgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiB0cnVl OworICAgICAgICAgIH0KKyAgICAgIH0KKyAgICB9KTsKKyAgfQorCisgIHJl dHVybiBwZ0Jyb3dzZXIuTm9kZXNbJ2V4Y2x1c2lvbl9jb25zdHJhaW50J107 Cit9KTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9jb25z dHJhaW50cy9mb3JlaWduX2tleS9fX2luaXRfXy5weSBiL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL3RhYmxlcy9jb25zdHJhaW50cy9mb3JlaWduX2tleS9fX2luaXRfXy5w eQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZTA1MDMx Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2Nv bnN0cmFpbnRzL2ZvcmVpZ25fa2V5L19faW5pdF9fLnB5CkBAIC0wLDAgKzEs MTA3MiBAQAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMKKyMg cGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworIworIyBDb3B5cmlnaHQg KEMpIDIwMTMgLSAyMDE2LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFt CisjIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3Rn cmVTUUwgTGljZW5jZQorIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMKKworIiIiSW1wbGVtZW50cyBGb3JlaWduIGtleSBjb25zdHJhaW50IE5v ZGUiIiIKKworaW1wb3J0IGpzb24KK2Zyb20gZmxhc2sgaW1wb3J0IHJlbmRl cl90ZW1wbGF0ZSwgbWFrZV9yZXNwb25zZSwgcmVxdWVzdCwganNvbmlmeQor ZnJvbSBmbGFzay5leHQuYmFiZWwgaW1wb3J0IGdldHRleHQgYXMgXworZnJv bSBwZ2FkbWluLnV0aWxzLmFqYXggaW1wb3J0IG1ha2VfanNvbl9yZXNwb25z ZSwgXAorICAgIG1ha2VfcmVzcG9uc2UgYXMgYWpheF9yZXNwb25zZSwgaW50 ZXJuYWxfc2VydmVyX2Vycm9yCitmcm9tIHBnYWRtaW4uYnJvd3Nlci51dGls cyBpbXBvcnQgUEdDaGlsZE5vZGVWaWV3Citmcm9tIHBnYWRtaW4udXRpbHMu YWpheCBpbXBvcnQgcHJlY29uZGl0aW9uX3JlcXVpcmVkCitmcm9tIHBnYWRt aW4udXRpbHMuZHJpdmVyIGltcG9ydCBnZXRfZHJpdmVyCitmcm9tIGNvbmZp ZyBpbXBvcnQgUEdfREVGQVVMVF9EUklWRVIKK2ltcG9ydCBwZ2FkbWluLmJy b3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLmRhdGFiYXNlcyBhcyBkYXRh YmFzZQorZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHdyYXBzCitmcm9tIHBnYWRt aW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMuZGF0YWJhc2VzLnNj aGVtYXMudGFibGVzLmNvbnN0cmFpbnRzLnR5cGUgXAorICAgIGltcG9ydCBD b25zdHJhaW50UmVnaXN0cnksIENvbnN0cmFpbnRUeXBlTW9kdWxlCisKKwor Y2xhc3MgRm9yZWlnbktleUNvbnN0cmFpbnRNb2R1bGUoQ29uc3RyYWludFR5 cGVNb2R1bGUpOgorICAgICIiIgorICAgIGNsYXNzIEZvcmVpZ25LZXlDb25z dHJhaW50TW9kdWxlKENvbGxlY3Rpb25Ob2RlTW9kdWxlKQorCisgICAgICAg IEEgbW9kdWxlIGNsYXNzIGZvciBGb3JlaWduIGtleSBjb25zdHJhaW50IG5v ZGUgZGVyaXZlZCBmcm9tIENvbnN0cmFpbnRUeXBlTW9kdWxlLgorCisgICAg TWV0aG9kczoKKyAgICAtLS0tLS0tCisgICAgKiBfX2luaXRfXygqYXJncywg Kiprd2FyZ3MpCisgICAgICAtIE1ldGhvZCBpcyB1c2VkIHRvIGluaXRpYWxp emUgdGhlIEZvcmVpZ25LZXlDb25zdHJhaW50TW9kdWxlIGFuZCBpdCdzIGJh c2UgbW9kdWxlLgorCisgICAgKiBnZXRfbm9kZXMoZ2lkLCBzaWQsIGRpZCkK KyAgICAgIC0gTWV0aG9kIGlzIHVzZWQgdG8gZ2VuZXJhdGUgdGhlIGJyb3dz ZXIgY29sbGVjdGlvbiBub2RlLgorCisgICAgKiBub2RlX2lub2RlKCkKKyAg ICAgIC0gTWV0aG9kIGlzIG92ZXJyaWRkZW4gZnJvbSBpdHMgYmFzZSBjbGFz cyB0byBtYWtlIHRoZSBub2RlIGFzIGxlYWYgbm9kZS4KKworICAgICogc2Ny aXB0X2xvYWQoKQorICAgICAgLSBMb2FkIHRoZSBtb2R1bGUgc2NyaXB0IGZv ciBsYW5ndWFnZSwgd2hlbiBhbnkgb2YgdGhlIGRhdGFiYXNlIG5vZGUgaXMK KyAgICAgICAgaW5pdGlhbGl6ZWQuCisgICAgIiIiCisKKyAgICBOT0RFX1RZ UEUgPSAnZm9yZWlnbl9rZXknCisgICAgQ09MTEVDVElPTl9MQUJFTCA9IF8o IkZvcmVpZ24gS2V5cyIpCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgKmFy Z3MsICoqa3dhcmdzKToKKyAgICAgICAgIiIiCisgICAgICAgIE1ldGhvZCBp cyB1c2VkIHRvIGluaXRpYWxpemUgdGhlIEZvcmVpZ25LZXlDb25zdHJhaW50 TW9kdWxlIGFuZCBpdCdzIGJhc2UgbW9kdWxlLgorCisgICAgICAgIEFyZ3M6 CisgICAgICAgICAgKmFyZ3M6CisgICAgICAgICAgKiprd2FyZ3M6CisKKyAg ICAgICAgUmV0dXJuczoKKworICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5t aW5fdmVyID0gTm9uZQorICAgICAgICBzZWxmLm1heF92ZXIgPSBOb25lCisg ICAgICAgIHN1cGVyKEZvcmVpZ25LZXlDb25zdHJhaW50TW9kdWxlLCBzZWxm KS5fX2luaXRfXygqYXJncywgKiprd2FyZ3MpCisKKyAgICBkZWYgZ2V0X25v ZGVzKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRpZCk6CisgICAgICAg ICIiIgorICAgICAgICBHZW5lcmF0ZSB0aGUgY29sbGVjdGlvbiBub2RlCisg ICAgICAgICIiIgorICAgICAgICBwYXNzCisKKyAgICBAcHJvcGVydHkKKyAg ICBkZWYgbm9kZV9pbm9kZShzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAg IE92ZXJyaWRlIHRoaXMgcHJvcGVydHkgdG8gbWFrZSB0aGUgbm9kZSBhIGxl YWYgbm9kZS4KKworICAgICAgICBSZXR1cm5zOiBGYWxzZSBhcyB0aGlzIGlz IHRoZSBsZWFmIG5vZGUKKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBG YWxzZQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHNjcmlwdF9sb2FkKHNl bGYpOgorICAgICAgICAiIiIKKyAgICAgICAgTG9hZCB0aGUgbW9kdWxlIHNj cmlwdCBmb3IgZm9yZWlnbl9rZXksIHdoZW4gYW55IG9mIHRoZSB0YWJsZSBu b2RlIGlzCisgICAgICAgIGluaXRpYWxpemVkLgorCisgICAgICAgIFJldHVy bnM6IG5vZGUgdHlwZSBvZiB0aGUgc2VydmVyIG1vZHVsZS4KKyAgICAgICAg IiIiCisgICAgICAgIHJldHVybiBkYXRhYmFzZS5EYXRhYmFzZU1vZHVsZS5O T0RFX1RZUEUKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBjc3NzbmlwcGV0 cyhzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFJldHVybnMgYSBzbmlw cGV0IG9mIGNzcyB0byBpbmNsdWRlIGluIHRoZSBwYWdlCisgICAgICAgICIi IgorICAgICAgICBzbmlwcGV0cyA9IFsKKyAgICAgICAgICAgICAgICByZW5k ZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAgICAgICAgICJicm93c2VyL2Nz cy9jb2xsZWN0aW9uLmNzcyIsCisgICAgICAgICAgICAgICAgICAgIG5vZGVf dHlwZT1zZWxmLm5vZGVfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgXz1f CisgICAgICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgcmVu ZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAgICAgICAgICAiZm9yZWlnbl9r ZXkvY3NzL2ZvcmVpZ25fa2V5LmNzcyIsCisgICAgICAgICAgICAgICAgICAg IG5vZGVfdHlwZT1zZWxmLm5vZGVfdHlwZSwKKyAgICAgICAgICAgICAgICAg ICAgXz1fCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAg ICBdCisKKyAgICAgICAgZm9yIHN1Ym1vZHVsZSBpbiBzZWxmLnN1Ym1vZHVs ZXM6CisgICAgICAgICAgICBzbmlwcGV0cy5leHRlbmQoc3VibW9kdWxlLmNz c3NuaXBwZXRzKQorCisgICAgICAgIHJldHVybiBzbmlwcGV0cworCitibHVl cHJpbnQgPSBGb3JlaWduS2V5Q29uc3RyYWludE1vZHVsZShfX25hbWVfXykK KworCitjbGFzcyBGb3JlaWduS2V5Q29uc3RyYWludFZpZXcoUEdDaGlsZE5v ZGVWaWV3KToKKyAgICAiIiIKKyAgICBjbGFzcyBGb3JlaWduS2V5Q29uc3Ry YWludFZpZXcoUEdDaGlsZE5vZGVWaWV3KQorCisgICAgICAgIEEgdmlldyBj bGFzcyBmb3IgRm9yZWlnbiBrZXkgY29uc3RyYWludCBub2RlIGRlcml2ZWQg ZnJvbSBQR0NoaWxkTm9kZVZpZXcuIFRoaXMgY2xhc3MgaXMKKyAgICAgICAg cmVzcG9uc2libGUgZm9yIGFsbCB0aGUgc3R1ZmYgcmVsYXRlZCB0byB2aWV3 IGxpa2UgY3JlYXRpbmcsIHVwZGF0aW5nIEZvcmVpZ24ga2V5IGNvbnN0cmFp bnQKKyAgICAgICAgbm9kZSwgc2hvd2luZyBwcm9wZXJ0aWVzLCBzaG93aW5n IHNxbCBpbiBzcWwgcGFuZS4KKworICAgIE1ldGhvZHM6CisgICAgLS0tLS0t LQorICAgICogX19pbml0X18oKiprd2FyZ3MpCisgICAgICAtIE1ldGhvZCBp cyB1c2VkIHRvIGluaXRpYWxpemUgdGhlIEZvcmVpZ25LZXlDb25zdHJhaW50 VmlldyBhbmQgaXQncyBiYXNlIHZpZXcuCisKKyAgICAqIG1vZHVsZV9qcygp CisgICAgICAtIFRoaXMgcHJvcGVydHkgZGVmaW5lcyAoaWYgamF2YXNjcmlw dCkgZXhpc3RzIGZvciB0aGlzIG5vZGUuCisgICAgICAgIE92ZXJyaWRlIHRo aXMgcHJvcGVydHkgZm9yIHlvdXIgb3duIGxvZ2ljCisKKyAgICAqIGNoZWNr X3ByZWNvbmRpdGlvbigpCisgICAgICAtIFRoaXMgZnVuY3Rpb24gd2lsbCBi ZWhhdmUgYXMgYSBkZWNvcmF0b3Igd2hpY2ggd2lsbCBjaGVja3MKKyAgICAg ICAgZGF0YWJhc2UgY29ubmVjdGlvbiBiZWZvcmUgcnVubmluZyB2aWV3LCBp dCB3aWxsIGFsc28gYXR0YWNoZXMKKyAgICAgICAgbWFuYWdlcixjb25uICYg dGVtcGxhdGVfcGF0aCBwcm9wZXJ0aWVzIHRvIHNlbGYKKworICAgICogbGlz dCgpCisgICAgICAtIFRoaXMgZnVuY3Rpb24gcmV0dXJucyBmb3JlaWduIGtl eSBjb25zdHJhaW50IG5vZGVzIHdpdGhpbiB0aGF0CisgICAgICAgIGNvbGxl Y3Rpb24gYXMgaHR0cCByZXNwb25zZS4KKworICAgICogZ2V0X2xpc3QoKQor ICAgICAgLSBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gbGlzdCBhbGwgdGhl IGxhbmd1YWdlIG5vZGVzIHdpdGhpbiB0aGF0IGNvbGxlY3Rpb24KKyAgICAg ICAgYW5kIHJldHVybiBsaXN0IG9mIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQg bm9kZXMuCisKKyAgICAqIG5vZGVzKCkKKyAgICAgIC0gVGhpcyBmdW5jdGlv biByZXR1cm5zIGNoaWxkIG5vZGUgd2l0aGluIHRoYXQgY29sbGVjdGlvbi4K KyAgICAgICAgSGVyZSByZXR1cm4gYWxsIGZvcmVpZ24ga2V5IGNvbnN0cmFp bnQgbm9kZSBhcyBodHRwIHJlc3BvbnNlLgorCisgICAgKiBnZXRfbm9kZXMo KQorICAgICAgLSByZXR1cm5zIGFsbCBmb3JlaWduIGtleSBjb25zdHJhaW50 IG5vZGVzJyBsaXN0LgorCisgICAgKiBwcm9wZXJ0aWVzKCkKKyAgICAgIC0g VGhpcyBmdW5jdGlvbiB3aWxsIHNob3cgdGhlIHByb3BlcnRpZXMgb2YgdGhl IHNlbGVjdGVkIGZvcmVpZ24ga2V5LgorCisgICAgKiB1cGRhdGUoKQorICAg ICAgLSBUaGlzIGZ1bmN0aW9uIHdpbGwgdXBkYXRlIHRoZSBkYXRhIGZvciB0 aGUgc2VsZWN0ZWQgZm9yZWlnbiBrZXkuCisKKyAgICAqIG1zcWwoKQorICAg ICAgLSBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gcmV0dXJuIG1vZGlmaWVk IFNRTCBmb3IgdGhlIHNlbGVjdGVkIGZvcmVpZ24ga2V5LgorCisgICAgKiBn ZXRfc3FsKCkKKyAgICAgIC0gVGhpcyBmdW5jdGlvbiB3aWxsIGdlbmVyYXRl IHNxbCBmcm9tIG1vZGVsIGRhdGEuCisKKyAgICAqIHNxbCgpOgorICAgICAg LSBUaGlzIGZ1bmN0aW9uIHdpbGwgZ2VuZXJhdGUgc3FsIHRvIHNob3cgaXQg aW4gc3FsIHBhbmUgZm9yIHRoZSBzZWxlY3RlZCBmb3JlaWduIGtleS4KKwor ICAgICogZ2V0X2luZGljZXMoKToKKyAgICAgICAgLSBUaGlzIGZ1bmN0aW9u IHJldHVybnMgaW5kaWNlcyBmb3IgY3VycmVudCB0YWJsZS4KKworICAgICIi IgorCisgICAgbm9kZV90eXBlID0gJ2ZvcmVpZ25fa2V5JworCisgICAgcGFy ZW50X2lkcyA9IFsKKyAgICAgICAgICAgIHsndHlwZSc6ICdpbnQnLCAnaWQn OiAnZ2lkJ30sCisgICAgICAgICAgICB7J3R5cGUnOiAnaW50JywgJ2lkJzog J3NpZCd9LAorICAgICAgICAgICAgeyd0eXBlJzogJ2ludCcsICdpZCc6ICdk aWQnfSwKKyAgICAgICAgICAgIHsndHlwZSc6ICdpbnQnLCAnaWQnOiAnc2Np ZCd9LAorICAgICAgICAgICAgeyd0eXBlJzogJ2ludCcsICdpZCc6ICd0aWQn fQorICAgICAgICAgICAgXQorICAgIGlkcyA9IFt7J3R5cGUnOiAnaW50Jywg J2lkJzogJ2ZraWQnfQorICAgICAgICAgICAgXQorCisgICAgb3BlcmF0aW9u cyA9IGRpY3QoeworICAgICAgICAnb2JqJzogWworICAgICAgICAgICAgeydn ZXQnOiAncHJvcGVydGllcycsICdkZWxldGUnOiAnZGVsZXRlJywgJ3B1dCc6 ICd1cGRhdGUnfSwKKyAgICAgICAgICAgIHsnZ2V0JzogJ2xpc3QnLCAncG9z dCc6ICdjcmVhdGUnfQorICAgICAgICBdLAorICAgICAgICAnZGVsZXRlJzog W3snZGVsZXRlJzogJ2RlbGV0ZSd9XSwKKyAgICAgICAgJ2NoaWxkcmVuJzog W3snZ2V0JzogJ2NoaWxkcmVuJ31dLAorICAgICAgICAnbm9kZXMnOiBbeydn ZXQnOiAnbm9kZSd9LCB7J2dldCc6ICdub2Rlcyd9XSwKKyAgICAgICAgJ3Nx bCc6IFt7J2dldCc6ICdzcWwnfV0sCisgICAgICAgICdtc3FsJzogW3snZ2V0 JzogJ21zcWwnfSwgeydnZXQnOiAnbXNxbCd9XSwKKyAgICAgICAgJ3N0YXRz JzogW3snZ2V0JzogJ3N0YXRpc3RpY3MnfV0sCisgICAgICAgICdkZXBlbmRl bmN5JzogW3snZ2V0JzogJ2RlcGVuZGVuY2llcyd9XSwKKyAgICAgICAgJ2Rl cGVuZGVudCc6IFt7J2dldCc6ICdkZXBlbmRlbnRzJ31dLAorICAgICAgICAn bW9kdWxlLmpzJzogW3t9LCB7fSwgeydnZXQnOiAnbW9kdWxlX2pzJ31dLAor ICAgICAgICAnaW5kaWNlcyc6IFt7fSwgeydnZXQnOiAnZ2V0X2luZGljZXMn fV0sCisgICAgICAgICd2YWxpZGF0ZSc6IFt7J2dldCc6ICd2YWxpZGF0ZV9m b3JlaWduX2tleSd9XSwKKyAgICAgICAgJ2dldF9jb3ZlcmluZ2luZGV4Jzog W3t9LCB7J2dldCc6ICdnZXRfY292ZXJpbmdpbmRleCd9XQorICAgIH0pCisK KyAgICBkZWYgbW9kdWxlX2pzKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAg ICAgVGhpcyBwcm9wZXJ0eSBkZWZpbmVzIChpZiBqYXZhc2NyaXB0KSBleGlz dHMgZm9yIHRoaXMgbm9kZS4KKyAgICAgICAgT3ZlcnJpZGUgdGhpcyBwcm9w ZXJ0eSBmb3IgeW91ciBvd24gbG9naWMuCisgICAgICAgICIiIgorICAgICAg ICByZXR1cm4gbWFrZV9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICByZW5k ZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAgICAgICAgICJmb3JlaWduX2tl eS9qcy9mb3JlaWduX2tleS5qcyIsCisgICAgICAgICAgICAgICAgICAgIF89 XworICAgICAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgIDIw MCwgeydDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC1qYXZhc2NyaXB0 J30KKyAgICAgICAgICAgICAgICApCisKKyAgICBkZWYgY2hlY2tfcHJlY29u ZGl0aW9uKGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlv biB3aWxsIGJlaGF2ZSBhcyBhIGRlY29yYXRvciB3aGljaCB3aWxsIGNoZWNr cworICAgICAgICBkYXRhYmFzZSBjb25uZWN0aW9uIGJlZm9yZSBydW5uaW5n IHZpZXcsIGl0IHdpbGwgYWxzbyBhdHRhY2hlcworICAgICAgICBtYW5hZ2Vy LGNvbm4gJiB0ZW1wbGF0ZV9wYXRoIHByb3BlcnRpZXMgdG8gc2VsZgorICAg ICAgICAiIiIKKyAgICAgICAgQHdyYXBzKGYpCisgICAgICAgIGRlZiB3cmFw KCphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICAgICAjIEhlcmUgYXJnc1sw XSB3aWxsIGhvbGQgc2VsZiAmIGt3YXJncyB3aWxsIGhvbGQgZ2lkLHNpZCxk aWQKKyAgICAgICAgICAgIHNlbGYgPSBhcmdzWzBdCisgICAgICAgICAgICBz ZWxmLm1hbmFnZXIgPSBnZXRfZHJpdmVyKFBHX0RFRkFVTFRfRFJJVkVSKS5j b25uZWN0aW9uX21hbmFnZXIoCisgICAgICAgICAgICAgICAga3dhcmdzWydz aWQnXQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuY29u biA9IHNlbGYubWFuYWdlci5jb25uZWN0aW9uKGRpZD1rd2FyZ3NbJ2RpZCdd KQorCisgICAgICAgICAgICAjIElmIERCIG5vdCBjb25uZWN0ZWQgdGhlbiBy ZXR1cm4gZXJyb3IgdG8gYnJvd3NlcgorICAgICAgICAgICAgaWYgbm90IHNl bGYuY29ubi5jb25uZWN0ZWQoKToKKyAgICAgICAgICAgICAgICByZXR1cm4g cHJlY29uZGl0aW9uX3JlcXVpcmVkKAorICAgICAgICAgICAgICAgICAgICBf KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb25uZWN0aW9uIHRv IHRoZSBzZXJ2ZXIgaGFzIGJlZW4gbG9zdCEiCisgICAgICAgICAgICAgICAg ICAgICkKKyAgICAgICAgICAgICAgICApCisKKyAgICAgICAgICAgIHNlbGYu dGVtcGxhdGVfcGF0aCA9ICdmb3JlaWduX2tleS9zcWwnCisgICAgICAgICAg ICAjIFdlIG5lZWQgcGFyZW50J3MgbmFtZSBlZyB0YWJsZSBuYW1lIGFuZCBz Y2hlbWEgbmFtZQorICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRl KCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnZXRfcGFyZW50LnNx bCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWQ9 a3dhcmdzWyd0aWQnXSkKKyAgICAgICAgICAgIHN0YXR1cywgcnNldCA9IHNl bGYuY29ubi5leGVjdXRlXzJkYXJyYXkoU1FMKQorICAgICAgICAgICAgaWYg bm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxf c2VydmVyX2Vycm9yKGVycm9ybXNnPXJzZXQpCisKKyAgICAgICAgICAgIGZv ciByb3cgaW4gcnNldFsncm93cyddOgorICAgICAgICAgICAgICAgIHNlbGYu c2NoZW1hID0gcm93WydzY2hlbWEnXQorICAgICAgICAgICAgICAgIHNlbGYu dGFibGUgPSByb3dbJ3RhYmxlJ10KKyAgICAgICAgICAgIHJldHVybiBmKCph cmdzLCAqKmt3YXJncykKKworICAgICAgICByZXR1cm4gd3JhcAorCisgICAg ZGVmIGVuZF90cmFuc2FjdGlvbihzZWxmKToKKyAgICAgICAgU1FMID0gcmVu ZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAgICAgICIvIi5qb2luKFtzZWxm LnRlbXBsYXRlX3BhdGgsICdlbmQuc3FsJ10pKQorICAgICAgICAjIEVuZCB0 cmFuc2FjdGlvbiBpZiBhbnkuCisgICAgICAgIHNlbGYuY29ubi5leGVjdXRl X3NjYWxhcihTUUwpCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAg ZGVmIHByb3BlcnRpZXMoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgdGlk LCBma2lkPU5vbmUpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5j dGlvbiBpcyB1c2VkIHRvIGxpc3QgYWxsIHRoZSBmb3JlaWduIGtleQorICAg ICAgICBub2RlcyB3aXRoaW4gdGhhdCBjb2xsZWN0aW9uLgorCisgICAgICAg IEFyZ3M6CisgICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAgSUQKKyAgICAg ICAgICBzaWQ6IFNlcnZlciBJRAorICAgICAgICAgIGRpZDogRGF0YWJhc2Ug SUQKKyAgICAgICAgICBzY2lkOiBTY2hlbWEgSUQKKyAgICAgICAgICB0aWQ6 IFRhYmxlIElECisgICAgICAgICAgZmtpZDogRm9yZWlnbiBrZXkgY29uc3Ry YWludCBJRAorCisgICAgICAgIFJldHVybnM6CisKKyAgICAgICAgIiIiCisg ICAgICAgIHRyeToKKyAgICAgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0 ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAncHJvcGVydGllcy5z cWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlk PXRpZCwgY2lkPWZraWQpCisKKyAgICAgICAgICAgIHN0YXR1cywgcmVzID0g c2VsZi5jb25uLmV4ZWN1dGVfZGljdChzcWwpCisKKyAgICAgICAgICAgIGlm IG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFs X3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgICAgIHJl c3VsdCA9IHJlc1sncm93cyddWzBdCisKKyAgICAgICAgICAgIHNxbCA9IHJl bmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn Z2V0X2NvbnN0cmFpbnRfY29scy5zcWwnXSksCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdGlkPXRpZCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBrZXlzPXppcChyZXN1bHRbJ2NvbmZrZXknXSwg cmVzdWx0Wydjb25rZXknXSksCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY29uZnJlbGlkPXJlc3VsdFsnY29uZnJlbGlkJ10pCisKKyAg ICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGlj dChzcWwpCisKKyAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAg ICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1z Zz1yZXMpCisKKyAgICAgICAgICAgIGNvbHVtbnMgPSBbXQorICAgICAgICAg ICAgY29scyA9IFtdCisgICAgICAgICAgICBmb3Igcm93IGluIHJlc1sncm93 cyddOgorICAgICAgICAgICAgICAgIGNvbHVtbnMuYXBwZW5kKHsibG9jYWxf Y29sdW1uIjogcm93Wydjb25hdHRuYW1lJ10sCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICJyZWZlcmVuY2VzIjogcmVzdWx0Wydjb25mcmVs aWQnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlZmVy ZW5jZWQiOiByb3dbJ2NvbmZhdHRuYW1lJ119KQorICAgICAgICAgICAgICAg IGNvbHMuYXBwZW5kKHJvd1snY29uYXR0bmFtZSddKQorCisgICAgICAgICAg ICByZXN1bHRbJ2NvbHVtbnMnXSA9IGNvbHVtbnMKKworICAgICAgICAgICAg aWYgZmtpZDoKKyAgICAgICAgICAgICAgICBjb3ZlcmluZ2luZGV4ID0gc2Vs Zi5zZWFyY2hfY292ZXJpbmdpbmRleCh0aWQsIGNvbHMpCisgICAgICAgICAg ICAgICAgcmVzdWx0Wydjb3ZlcmluZ2luZGV4J10gPSBjb3ZlcmluZ2luZGV4 CisgICAgICAgICAgICAgICAgaWYgY292ZXJpbmdpbmRleDoKKyAgICAgICAg ICAgICAgICAgICAgcmVzdWx0WydhdXRvaW5kZXgnXSA9IFRydWUKKyAgICAg ICAgICAgICAgICAgICAgcmVzdWx0WydoYXNpbmRleCddID0gVHJ1ZQorICAg ICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHJlc3Vs dFsnYXV0b2luZGV4J10gPSBGYWxzZQorICAgICAgICAgICAgICAgICAgICBy ZXN1bHRbJ2hhc2luZGV4J10gPSBGYWxzZQorCisgICAgICAgICAgICByZXR1 cm4gYWpheF9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICAgICAgcmVzcG9u c2U9cmVzdWx0LAorICAgICAgICAgICAgICAgICAgICBzdGF0dXM9MjAwCisg ICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlv biBhcyBlOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9l cnJvcihlcnJvcm1zZz1zdHIoZSkpCisKKyAgICBAY2hlY2tfcHJlY29uZGl0 aW9uCisgICAgZGVmIGxpc3Qoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwg dGlkLCBma2lkPU5vbmUpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBm dW5jdGlvbiByZXR1cm5zIGFsbCBmb3JlaWduIGtleXMKKyAgICAgICAgbm9k ZXMgd2l0aGluIHRoYXQgY29sbGVjdGlvbiBhcyBhIGh0dHAgcmVzcG9uc2Uu CisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICBnaWQ6IFNlcnZlciBHcm91 cCBJRAorICAgICAgICAgIHNpZDogU2VydmVyIElECisgICAgICAgICAgZGlk OiBEYXRhYmFzZSBJRAorICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJRAorICAg ICAgICAgIHRpZDogVGFibGUgSUQKKyAgICAgICAgICBma2lkOiBGb3JlaWdu IGtleSBjb25zdHJhaW50IElECisKKyAgICAgICAgUmV0dXJuczoKKworICAg ICAgICAiIiIKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmVzID0gc2Vs Zi5nZXRfbm9kZV9saXN0KGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRpZCwgZmtp ZCkKKyAgICAgICAgICAgIHJldHVybiBhamF4X3Jlc3BvbnNlKAorICAgICAg ICAgICAgICAgICAgICByZXNwb25zZT1yZXMsCisgICAgICAgICAgICAgICAg ICAgIHN0YXR1cz0yMDAKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAg ICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICByZXR1cm4g aW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXN0cihlKSkKKworICAg IEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgZ2V0X25vZGVfbGlzdChz ZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQsIGZraWQ9Tm9uZSk6Cisg ICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIHJldHVybnMgYWxs IGZvcmVpZ24ga2V5cworICAgICAgICBub2RlcyB3aXRoaW4gdGhhdCBjb2xs ZWN0aW9uIGFzIGEgbGlzdC4KKworICAgICAgICBBcmdzOgorICAgICAgICAg IGdpZDogU2VydmVyIEdyb3VwIElECisgICAgICAgICAgc2lkOiBTZXJ2ZXIg SUQKKyAgICAgICAgICBkaWQ6IERhdGFiYXNlIElECisgICAgICAgICAgc2Np ZDogU2NoZW1hIElECisgICAgICAgICAgdGlkOiBUYWJsZSBJRAorICAgICAg ICAgIGZraWQ6IEZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgSUQKKworICAgICAg ICBSZXR1cm5zOgorCisgICAgICAgICIiIgorICAgICAgICBTUUwgPSByZW5k ZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHJvcGVy dGllcy5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdGlkPXRpZCkKKyAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxm LmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKKworICAgICAgICByZXR1cm4gcmVz Wydyb3dzJ10KKworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYg bm9kZXMoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgdGlkLCBma2lkPU5v bmUpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiByZXR1 cm5zIGFsbCBldmVudCB0cmlnZ2VyIG5vZGVzIGFzIGEKKyAgICAgICAgaHR0 cCByZXNwb25zZS4KKworICAgICAgICBBcmdzOgorICAgICAgICAgIGdpZDog U2VydmVyIEdyb3VwIElECisgICAgICAgICAgc2lkOiBTZXJ2ZXIgSUQKKyAg ICAgICAgICBkaWQ6IERhdGFiYXNlIElECisgICAgICAgICAgc2NpZDogU2No ZW1hIElECisgICAgICAgICAgdGlkOiBUYWJsZSBJRAorICAgICAgICAgIGZr aWQ6IEZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgSUQKKworICAgICAgICBSZXR1 cm5zOgorCisgICAgICAgICIiIgorICAgICAgICB0cnk6CisgICAgICAgICAg ICByZXMgPSBzZWxmLmdldF9ub2RlcyhnaWQsIHNpZCwgZGlkLCBzY2lkLCB0 aWQsIGZraWQpCisgICAgICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3Bv bnNlKAorICAgICAgICAgICAgICAgICAgICBkYXRhPXJlcywKKyAgICAgICAg ICAgICAgICAgICAgc3RhdHVzPTIwMAorICAgICAgICAgICAgICAgICAgICAp CisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAg IHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKGUp KQorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBnZXRfbm9k ZXMoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgdGlkLCBma2lkPU5vbmUp OgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiByZXR1cm5z IGFsbCBldmVudCB0cmlnZ2VyIG5vZGVzIGFzIGEgbGlzdC4KKworICAgICAg ICBBcmdzOgorICAgICAgICAgIGdpZDogU2VydmVyIEdyb3VwIElECisgICAg ICAgICAgc2lkOiBTZXJ2ZXIgSUQKKyAgICAgICAgICBkaWQ6IERhdGFiYXNl IElECisgICAgICAgICAgc2NpZDogU2NoZW1hIElECisgICAgICAgICAgdGlk OiBUYWJsZSBJRAorICAgICAgICAgIGZraWQ6IEZvcmVpZ24ga2V5IGNvbnN0 cmFpbnQgSUQKKworICAgICAgICBSZXR1cm5zOgorCisgICAgICAgICIiIgor ICAgICAgICByZXMgPSBbXQorICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxh dGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbm9kZXMuc3FsJ10pLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlkPXRpZCkKKyAgICAg ICAgc3RhdHVzLCByc2V0ID0gc2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJheShT UUwpCisKKyAgICAgICAgZm9yIHJvdyBpbiByc2V0Wydyb3dzJ106CisgICAg ICAgICAgICBpZiByb3dbImNvbnZhbGlkYXRlZCJdOgorICAgICAgICAgICAg ICAgIGljb24gPSAiaWNvbi1mb3JlaWduX2tleV9ub192YWxpZGF0ZSIKKyAg ICAgICAgICAgICAgICB2YWxpZCA9IEZhbHNlCisgICAgICAgICAgICBlbHNl OgorICAgICAgICAgICAgICAgIGljb24gPSAiaWNvbi1mb3JlaWduX2tleSIK KyAgICAgICAgICAgICAgICB2YWxpZCA9IFRydWUKKyAgICAgICAgICAgIHJl cy5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYmx1ZXByaW50 LmdlbmVyYXRlX2Jyb3dzZXJfbm9kZSgKKyAgICAgICAgICAgICAgICAgICAg ICAgIHJvd1snb2lkJ10sCisgICAgICAgICAgICAgICAgICAgICAgICB0aWQs CisgICAgICAgICAgICAgICAgICAgICAgICByb3dbJ25hbWUnXSwKKyAgICAg ICAgICAgICAgICAgICAgICAgIGljb249aWNvbiwKKyAgICAgICAgICAgICAg ICAgICAgICAgIHZhbGlkPXZhbGlkCisgICAgICAgICAgICAgICAgICAgICkp CisgICAgICAgIHJldHVybiByZXMKKworICAgIEBjaGVja19wcmVjb25kaXRp b24KKyAgICBkZWYgY3JlYXRlKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQs IHRpZCwgZmtpZD1Ob25lKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMg ZnVuY3Rpb24gd2lsbCBjcmVhdGUgYSBmb3JlaWduIGtleS4KKworICAgICAg ICBBcmdzOgorICAgICAgICAgIGdpZDogU2VydmVyIEdyb3VwIElECisgICAg ICAgICAgc2lkOiBTZXJ2ZXIgSUQKKyAgICAgICAgICBkaWQ6IERhdGFiYXNl IElECisgICAgICAgICAgc2NpZDogU2NoZW1hIElECisgICAgICAgICAgdGlk OiBUYWJsZSBJRAorICAgICAgICAgIGZraWQ6IEZvcmVpZ24ga2V5IGNvbnN0 cmFpbnQgSUQKKworICAgICAgICBSZXR1cm5zOgorCisgICAgICAgICIiIgor ICAgICAgICByZXF1aXJlZF9hcmdzID0gWydjb2x1bW5zJ10KKworICAgICAg ICBkYXRhID0gcmVxdWVzdC5mb3JtIGlmIHJlcXVlc3QuZm9ybSBlbHNlIGpz b24ubG9hZHMocmVxdWVzdC5kYXRhLmRlY29kZSgpKQorCisgICAgICAgIGZv ciBrLCB2IGluIGRhdGEuaXRlbXMoKToKKyAgICAgICAgICAgIHRyeToKKyAg ICAgICAgICAgICAgICBkYXRhW2tdID0ganNvbi5sb2Fkcyh2KQorICAgICAg ICAgICAgZXhjZXB0IChWYWx1ZUVycm9yLCBUeXBlRXJyb3IpOgorICAgICAg ICAgICAgICAgIGRhdGFba10gPSB2CisKKyAgICAgICAgZm9yIGFyZyBpbiBy ZXF1aXJlZF9hcmdzOgorICAgICAgICAgICAgaWYgYXJnIG5vdCBpbiBkYXRh OgorICAgICAgICAgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2Uo CisgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzPTQwMCwKKyAgICAgICAg ICAgICAgICAgICAgICBzdWNjZXNzPTAsCisgICAgICAgICAgICAgICAgICAg ICAgZXJyb3Jtc2c9XygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIkNv dWxkbid0IGZpbmQgcmVxdWlyZWQgcGFyYW1ldGVyICglcykuIiAlIHN0cihh cmcpCisgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAg ICAgICApCisgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZGF0YVthcmdd LCBsaXN0KSBhbmQgbGVuKGRhdGFbYXJnXSkgPCAxOgorICAgICAgICAgICAg ICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAgICAgICAg ICAgICAgICAgc3RhdHVzPTQwMCwKKyAgICAgICAgICAgICAgICAgICAgICBz dWNjZXNzPTAsCisgICAgICAgICAgICAgICAgICAgICAgZXJyb3Jtc2c9XygK KyAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvdWxkbid0IGZpbmQgcmVx dWlyZWQgcGFyYW1ldGVyICglcykuIiAlIHN0cihhcmcpCisgICAgICAgICAg ICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgICApCisKKyAgICAg ICAgZGF0YVsnc2NoZW1hJ10gPSBzZWxmLnNjaGVtYQorICAgICAgICBkYXRh Wyd0YWJsZSddID0gc2VsZi50YWJsZQorICAgICAgICB0cnk6CisgICAgICAg ICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVt cGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJ2dldF9wYXJlbnQuc3FsJ10pLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHRpZD1kYXRhWydjb2x1bW5zJ11bMF1b J3JlZmVyZW5jZXMnXSkKKyAgICAgICAgICAgIHN0YXR1cywgcmVzID0gc2Vs Zi5jb25uLmV4ZWN1dGVfMmRhcnJheShTUUwpCisgICAgICAgICAgICBpZiBu b3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9z ZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgICAgICBkYXRh WydyZW1vdGVfc2NoZW1hJ10gPSByZXNbJ3Jvd3MnXVswXVsnc2NoZW1hJ10K KyAgICAgICAgICAgIGRhdGFbJ3JlbW90ZV90YWJsZSddID0gcmVzWydyb3dz J11bMF1bJ3RhYmxlJ10KKworICAgICAgICAgICAgaWYgJ25hbWUnIG5vdCBp biBkYXRhIG9yIGRhdGFbJ25hbWUnXSA9PSAiIjoKKyAgICAgICAgICAgICAg ICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAgICAgICAg ICIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdiZWdpbi5zcWwnXSkp CisgICAgICAgICAgICAgICAgIyBTdGFydCB0cmFuc2FjdGlvbi4KKyAgICAg ICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX3Nj YWxhcihTUUwpCisgICAgICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAg ICAgICAgICAgICAgICAgICAgc2VsZi5lbmRfdHJhbnNhY3Rpb24oKQorICAg ICAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9y KGVycm9ybXNnPXJlcykKKworICAgICAgICAgICAgIyBUaGUgYmVsb3cgU1FM IHdpbGwgZXhlY3V0ZSBDUkVBVEUgRERMIG9ubHkKKyAgICAgICAgICAgIFNR TCA9IHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgICAgICAgICAiLyIuam9p bihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAnY3JlYXRlLnNxbCddKSwKKyAgICAg ICAgICAgICAgICBkYXRhPWRhdGEsIGNvbm49c2VsZi5jb25uCisgICAgICAg ICAgICAgICAgKQorICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNv bm4uZXhlY3V0ZV9zY2FsYXIoU1FMKQorICAgICAgICAgICAgaWYgbm90IHN0 YXR1czoKKyAgICAgICAgICAgICAgICBzZWxmLmVuZF90cmFuc2FjdGlvbigp CisgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJv cihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgICAgIGlmICduYW1lJyBub3Qg aW4gZGF0YSBvciBkYXRhWyduYW1lJ10gPT0gIiI6CisgICAgICAgICAgICAg ICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAgICAgICAg ICAiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJ2dldF9vaWRfd2l0aF90cmFuc2FjdGlvbi5z cWwnXSksCisgICAgICAgICAgICAgICAgICAgIHRpZD10aWQpCisKKyAgICAg ICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2Rp Y3Qoc3FsKQorICAgICAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAg ICAgICAgICAgICAgICAgIHNlbGYuZW5kX3RyYW5zYWN0aW9uKCkKKyAgICAg ICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihl cnJvcm1zZz1yZXMpCisKKyAgICAgICAgICAgICAgICBzZWxmLmVuZF90cmFu c2FjdGlvbigpCisKKyAgICAgICAgICAgICAgICBkYXRhWyduYW1lJ10gPSBy ZXNbJ3Jvd3MnXVswXVsnbmFtZSddCisKKyAgICAgICAgICAgIGVsc2U6Cisg ICAgICAgICAgICAgICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2lu KFtzZWxmLnRlbXBsYXRlX3BhdGgsICdnZXRfb2lkLnNxbCddKSwgbmFtZT1k YXRhWyduYW1lJ10pCisgICAgICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBz ZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KHNxbCkKKyAgICAgICAgICAgICAgICBp ZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmVuZF90 cmFuc2FjdGlvbigpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBpbnRl cm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgICAg ICBpZiByZXNbJ3Jvd3MnXVswXVsiY29udmFsaWRhdGVkIl06CisgICAgICAg ICAgICAgICAgaWNvbiA9ICJpY29uLWZvcmVpZ25fa2V5X25vX3ZhbGlkYXRl IgorICAgICAgICAgICAgICAgIHZhbGlkID0gRmFsc2UKKyAgICAgICAgICAg IGVsc2U6CisgICAgICAgICAgICAgICAgaWNvbiA9ICJpY29uLWZvcmVpZ25f a2V5IgorICAgICAgICAgICAgICAgIHZhbGlkID0gVHJ1ZQorCisgICAgICAg ICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVt cGxhdGVfcGF0aCwgJ2FsdGVyLnNxbCddKSwgZGF0YT1kYXRhLCBjb25uPXNl bGYuY29ubikKKyAgICAgICAgICAgIHNxbCA9IHNxbC5zdHJpcCgnXG4nKS5z dHJpcCgnICcpCisKKyAgICAgICAgICAgIGlmIHNxbCAhPSAnJzoKKyAgICAg ICAgICAgICAgICBzdGF0dXMsIHJlc3VsdCA9IHNlbGYuY29ubi5leGVjdXRl X3NjYWxhcihzcWwpCisgICAgICAgICAgICAgICAgaWYgbm90IHN0YXR1czoK KyAgICAgICAgICAgICAgICAgICAgc2VsZi5lbmRfdHJhbnNhY3Rpb24oKQor ICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vy cm9yKGVycm9ybXNnPXJlc3VsdCkKKworICAgICAgICAgICAgaWYgZGF0YVsn YXV0b2luZGV4J106CisgICAgICAgICAgICAgICAgc3FsID0gcmVuZGVyX3Rl bXBsYXRlKAorICAgICAgICAgICAgICAgICAgICAiLyIuam9pbihbc2VsZi50 ZW1wbGF0ZV9wYXRoLCAnY3JlYXRlX2luZGV4LnNxbCddKSwKKyAgICAgICAg ICAgICAgICAgICAgZGF0YT1kYXRhLCBjb25uPXNlbGYuY29ubikKKyAgICAg ICAgICAgICAgICBzcWwgPSBzcWwuc3RyaXAoJ1xuJykuc3RyaXAoJyAnKQor CisgICAgICAgICAgICAgICAgaWYgc3FsICE9ICcnOgorICAgICAgICAgICAg ICAgICAgICBzdGF0dXMsIGlkeF9yZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9z Y2FsYXIoc3FsKQorICAgICAgICAgICAgICAgICAgICBpZiBub3Qgc3RhdHVz OgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5lbmRfdHJhbnNhY3Rp b24oKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFs X3NlcnZlcl9lcnJvcihlcnJvcm1zZz1pZHhfcmVzKQorCisgICAgICAgICAg ICByZXR1cm4ganNvbmlmeSgKKyAgICAgICAgICAgICAgICBub2RlPXNlbGYu Ymx1ZXByaW50LmdlbmVyYXRlX2Jyb3dzZXJfbm9kZSgKKyAgICAgICAgICAg ICAgICAgICAgcmVzWydyb3dzJ11bMF1bJ29pZCddLAorICAgICAgICAgICAg ICAgICAgICB0aWQsCisgICAgICAgICAgICAgICAgICAgIGRhdGFbJ25hbWUn XSwKKyAgICAgICAgICAgICAgICAgICAgdmFsaWQ9dmFsaWQsCisgICAgICAg ICAgICAgICAgICAgIGljb249aWNvbgorICAgICAgICAgICAgICAgICAgICAp CisgICAgICAgICAgICAgICAgKQorCisgICAgICAgIGV4Y2VwdCBFeGNlcHRp b24gYXMgZToKKyAgICAgICAgICAgIHNlbGYuZW5kX3RyYW5zYWN0aW9uKCkK KyAgICAgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCisgICAg ICAgICAgICAgICAgc3RhdHVzPTQwMCwKKyAgICAgICAgICAgICAgICBzdWNj ZXNzPTAsCisgICAgICAgICAgICAgICAgZXJyb3Jtc2c9ZQorICAgICAgICAg ICAgKQorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiB1cGRh dGUoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgdGlkLCBma2lkPU5vbmUp OgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIHVw ZGF0ZSB0aGUgZGF0YSBmb3IgdGhlIHNlbGVjdGVkCisgICAgICAgIGZvcmVp Z24ga2V5LgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgZ2lkOiBTZXJ2 ZXIgR3JvdXAgSUQKKyAgICAgICAgICBzaWQ6IFNlcnZlciBJRAorICAgICAg ICAgIGRpZDogRGF0YWJhc2UgSUQKKyAgICAgICAgICBzY2lkOiBTY2hlbWEg SUQKKyAgICAgICAgICB0aWQ6IFRhYmxlIElECisgICAgICAgICAgZmtpZDog Rm9yZWlnbiBrZXkgY29uc3RyYWludCBJRAorCisgICAgICAgIFJldHVybnM6 CisKKyAgICAgICAgIiIiCisgICAgICAgIGRhdGEgPSByZXF1ZXN0LmZvcm0g aWYgcmVxdWVzdC5mb3JtIGVsc2UganNvbi5sb2FkcyhyZXF1ZXN0LmRhdGEu ZGVjb2RlKCkpCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZGF0YVsn c2NoZW1hJ10gPSBzZWxmLnNjaGVtYQorICAgICAgICAgICAgZGF0YVsndGFi bGUnXSA9IHNlbGYudGFibGUKKyAgICAgICAgICAgIHNxbCA9IHNlbGYuZ2V0 X3NxbChkYXRhLCB0aWQsIGZraWQpCisgICAgICAgICAgICBzcWwgPSBzcWwu c3RyaXAoJ1xuJykuc3RyaXAoJyAnKQorICAgICAgICAgICAgaWYgc3FsICE9 ICIiOgorICAgICAgICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25u LmV4ZWN1dGVfc2NhbGFyKHNxbCkKKyAgICAgICAgICAgICAgICBpZiBub3Qg c3RhdHVzOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxf c2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKworICAgICAgICAgICAgICAg IHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0 ZV9wYXRoLCAnZ2V0X29pZC5zcWwnXSksCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHRpZD10aWQsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIG5hbWU9ZGF0YVsnbmFtZSddKQorICAg ICAgICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVf ZGljdChzcWwpCisgICAgICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAg ICAgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJv cihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgICAgICAgICBpZiByZXNbJ3Jv d3MnXVswXVsiY29udmFsaWRhdGVkIl06CisgICAgICAgICAgICAgICAgICAg IGljb24gPSAiaWNvbi1mb3JlaWduX2tleV9ub192YWxpZGF0ZSIKKyAgICAg ICAgICAgICAgICAgICAgdmFsaWQgPSBGYWxzZQorICAgICAgICAgICAgICAg IGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGljb24gPSAiaWNvbi1mb3Jl aWduX2tleSIKKyAgICAgICAgICAgICAgICAgICAgdmFsaWQgPSBUcnVlCisK KyAgICAgICAgICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAor ICAgICAgICAgICAgICAgICAgICBzdWNjZXNzPTEsCisgICAgICAgICAgICAg ICAgICAgIGluZm89IkZvcmVpZ24ga2V5IHVwZGF0ZWQiLAorICAgICAgICAg ICAgICAgICAgICBkYXRhPXsKKyAgICAgICAgICAgICAgICAgICAgICAgICdp ZCc6IHJlc1sncm93cyddWzBdWydvaWQnXSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICd0aWQnOiB0aWQsCisgICAgICAgICAgICAgICAgICAgICAgICAn c2NpZCc6IHNjaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAnc2lkJzog c2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2dpZCc6IGdpZCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICdkaWQnOiBkaWQsCisgICAgICAgICAg ICAgICAgICAgICAgICAnaWNvbic6aWNvbiwKKyAgICAgICAgICAgICAgICAg ICAgICAgICd2YWxpZCc6dmFsaWQKKyAgICAgICAgICAgICAgICAgICAgfQor ICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAg ICAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAg ICAgICAgICAgICAgc3VjY2Vzcz0xLAorICAgICAgICAgICAgICAgICAgICBp bmZvPSJOb3RoaW5nIHRvIHVwZGF0ZSIsCisgICAgICAgICAgICAgICAgICAg IGRhdGE9eworICAgICAgICAgICAgICAgICAgICAgICAgJ2lkJzogZmtpZCwK KyAgICAgICAgICAgICAgICAgICAgICAgICd0aWQnOiB0aWQsCisgICAgICAg ICAgICAgICAgICAgICAgICAnc2NpZCc6IHNjaWQsCisgICAgICAgICAgICAg ICAgICAgICAgICAnc2lkJzogc2lkLAorICAgICAgICAgICAgICAgICAgICAg ICAgJ2dpZCc6IGdpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICdkaWQn OiBkaWQKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg ICkKKworICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAg ICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXN0 cihlKSkKKworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgZGVs ZXRlKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRpZCwgZmtpZD1Ob25l KToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBk ZWxldGUgYW4gZXhpc3RpbmcgZm9yZWlnbiBrZXkuCisKKyAgICAgICAgQXJn czoKKyAgICAgICAgICBnaWQ6IFNlcnZlciBHcm91cCBJRAorICAgICAgICAg IHNpZDogU2VydmVyIElECisgICAgICAgICAgZGlkOiBEYXRhYmFzZSBJRAor ICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJRAorICAgICAgICAgIHRpZDogVGFi bGUgSUQKKyAgICAgICAgICBma2lkOiBGb3JlaWduIGtleSBjb25zdHJhaW50 IElECisKKyAgICAgICAgUmV0dXJuczoKKworICAgICAgICAiIiIKKyAgICAg ICAgIyBCZWxvdyBjb2RlIHdpbGwgZGVjaWRlIGlmIGl0J3Mgc2ltcGxlIGRy b3Agb3IgZHJvcCB3aXRoIGNhc2NhZGUgY2FsbAorICAgICAgICBpZiBzZWxm LmNtZCA9PSAnZGVsZXRlJzoKKyAgICAgICAgICAgICMgVGhpcyBpcyBhIGNh c2NhZGUgb3BlcmF0aW9uCisgICAgICAgICAgICBjYXNjYWRlID0gVHJ1ZQor ICAgICAgICBlbHNlOgorICAgICAgICAgICAgY2FzY2FkZSA9IEZhbHNlCisg ICAgICAgIHRyeToKKyAgICAgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0 ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAnZ2V0X25hbWUuc3Fs J10pLCBma2lkPWZraWQpCisgICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNl bGYuY29ubi5leGVjdXRlX2RpY3Qoc3FsKQorICAgICAgICAgICAgaWYgbm90 IHN0YXR1czoKKyAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2Vy dmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKworICAgICAgICAgICAgZGF0YSA9 IHJlc1sncm93cyddWzBdCisgICAgICAgICAgICBkYXRhWydzY2hlbWEnXSA9 IHNlbGYuc2NoZW1hCisgICAgICAgICAgICBkYXRhWyd0YWJsZSddID0gc2Vs Zi50YWJsZQorCisgICAgICAgICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUo Ii8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ2RlbGV0ZS5zcWwnXSks IGRhdGE9ZGF0YSwgY2FzY2FkZT1jYXNjYWRlKQorICAgICAgICAgICAgc3Rh dHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9zY2FsYXIoc3FsKQorICAg ICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICByZXR1 cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKworICAg ICAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAg ICAgICAgICBzdWNjZXNzPTEsCisgICAgICAgICAgICAgICAgaW5mbz1fKCJG b3JlaWduIGtleSBkcm9wcGVkLiIpLAorICAgICAgICAgICAgICAgIGRhdGE9 eworICAgICAgICAgICAgICAgICAgICAnaWQnOiBma2lkLAorICAgICAgICAg ICAgICAgICAgICAnc2lkJzogc2lkLAorICAgICAgICAgICAgICAgICAgICAn Z2lkJzogZ2lkLAorICAgICAgICAgICAgICAgICAgICAnZGlkJzogZGlkCisg ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgKQorCisgICAgICAgIGV4 Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIHJldHVybiBpbnRl cm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKGUpKQorCisgICAgQGNo ZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBtc3FsKHNlbGYsIGdpZCwgc2lk LCBkaWQsIHNjaWQsIHRpZCwgZmtpZD1Ob25lKToKKyAgICAgICAgIiIiCisg ICAgICAgIFRoaXMgZnVuY3Rpb24gcmV0dXJucyBtb2RpZmllZCBTUUwgZm9y IHRoZSBzZWxlY3RlZAorICAgICAgICBmb3JlaWduIGtleS4KKworICAgICAg ICBBcmdzOgorICAgICAgICAgIGdpZDogU2VydmVyIEdyb3VwIElECisgICAg ICAgICAgc2lkOiBTZXJ2ZXIgSUQKKyAgICAgICAgICBkaWQ6IERhdGFiYXNl IElECisgICAgICAgICAgc2NpZDogU2NoZW1hIElECisgICAgICAgICAgdGlk OiBUYWJsZSBJRAorICAgICAgICAgIGZraWQ6IEZvcmVpZ24ga2V5IGNvbnN0 cmFpbnQgSUQKKworICAgICAgICBSZXR1cm5zOgorCisgICAgICAgICIiIgor ICAgICAgICBkYXRhID0ge30KKyAgICAgICAgZm9yIGssIHYgaW4gcmVxdWVz dC5hcmdzLml0ZW1zKCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAg ICAgICAgZGF0YVtrXSA9IGpzb24ubG9hZHModikKKyAgICAgICAgICAgIGV4 Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgICAgIGRhdGFba10gPSB2 CisKKyAgICAgICAgZGF0YVsnc2NoZW1hJ10gPSBzZWxmLnNjaGVtYQorICAg ICAgICBkYXRhWyd0YWJsZSddID0gc2VsZi50YWJsZQorICAgICAgICB0cnk6 CisgICAgICAgICAgICBzcWwgPSBzZWxmLmdldF9zcWwoZGF0YSwgdGlkLCBm a2lkKQorICAgICAgICAgICAgc3FsID0gc3FsLnN0cmlwKCdcbicpLnN0cmlw KCcgJykKKworICAgICAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25z ZSgKKyAgICAgICAgICAgICAgICAgICAgZGF0YT1zcWwsCisgICAgICAgICAg ICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAgICAgICAgICAgICAgICAgKQor CisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAg IHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKGUp KQorCisgICAgZGVmIGdldF9zcWwoc2VsZiwgZGF0YSwgdGlkLCBma2lkPU5v bmUpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxs IGdlbmVyYXRlIHNxbCBmcm9tIG1vZGVsIGRhdGEuCisKKyAgICAgICAgQXJn czoKKyAgICAgICAgICBkYXRhOiBDb250YWlucyB0aGUgZGF0YSBvZiB0aGUg c2VsZWN0ZWQgZm9yZWlnbiBrZXkgY29uc3RyYWludC4KKyAgICAgICAgICB0 aWQ6IFRhYmxlIElELgorICAgICAgICAgIGZraWQ6IEZvcmVpZ24ga2V5IGNv bnN0cmFpbnQgSUQKKworICAgICAgICBSZXR1cm5zOgorCisgICAgICAgICIi IgorICAgICAgICBpZiBma2lkIGlzIG5vdCBOb25lOgorICAgICAgICAgICAg c3FsID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRl X3BhdGgsICdwcm9wZXJ0aWVzLnNxbCddKSwgdGlkPXRpZCwgY2lkPWZraWQp CisgICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRl X2RpY3Qoc3FsKQorICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAg ICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9y bXNnPXJlcykKKworICAgICAgICAgICAgb2xkX2RhdGEgPSByZXNbJ3Jvd3Mn XVswXQorICAgICAgICAgICAgcmVxdWlyZWRfYXJncyA9IFsnbmFtZSddCisg ICAgICAgICAgICBmb3IgYXJnIGluIHJlcXVpcmVkX2FyZ3M6CisgICAgICAg ICAgICAgICAgaWYgYXJnIG5vdCBpbiBkYXRhOgorICAgICAgICAgICAgICAg ICAgICBkYXRhW2FyZ10gPSBvbGRfZGF0YVthcmddCisKKyAgICAgICAgICAg IHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0 ZV9wYXRoLCAndXBkYXRlLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBkYXRhPWRhdGEsIG9fZGF0YT1vbGRfZGF0YSkKKwor ICAgICAgICAgICAgaWYgJ2F1dG9pbmRleCcgaW4gZGF0YSBhbmQgZGF0YVsn YXV0b2luZGV4J10gYW5kXAorICAgICAgICAgICAgICAgICAgICAoJ2NvdmVy aW5naW5kZXgnIGluIGRhdGEgYW5kCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGRhdGFbJ2NvdmVyaW5naW5kZXgnXSAhPSAnJyk6CisKKyAgICAg ICAgICAgICAgICBjb2xfc3FsID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2lu KFtzZWxmLnRlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2V0X2NvbnN0cmFpbnRfY29s cy5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHRpZD10aWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGtleXM9emlwKG9sZF9kYXRhWydjb25ma2V5J10sIG9sZF9kYXRh Wydjb25rZXknXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNvbmZyZWxpZD1vbGRfZGF0YVsnY29uZnJlbGlkJ10pCisKKyAg ICAgICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRl X2RpY3QoY29sX3NxbCkKKworICAgICAgICAgICAgICAgIGlmIG5vdCBzdGF0 dXM6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2 ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgICAgICAgICAgY29s dW1ucyA9IFtdCisgICAgICAgICAgICAgICAgZm9yIHJvdyBpbiByZXNbJ3Jv d3MnXToKKyAgICAgICAgICAgICAgICAgICAgY29sdW1ucy5hcHBlbmQoeyJs b2NhbF9jb2x1bW4iOiByb3dbJ2NvbmF0dG5hbWUnXSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICJyZWZlcmVuY2VzIjogb2xkX2Rh dGFbJ2NvbmZyZWxpZCddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgInJlZmVyZW5jZWQiOiByb3dbJ2NvbmZhdHRuYW1lJ119KQor CisgICAgICAgICAgICAgICAgZGF0YVsnY29sdW1ucyddID0gY29sdW1ucwor CisgICAgICAgICAgICAgICAgc3FsICs9IHJlbmRlcl90ZW1wbGF0ZSgKKyAg ICAgICAgICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0 aCwgJ2NyZWF0ZV9pbmRleC5zcWwnXSksCisgICAgICAgICAgICAgICAgICAg IGRhdGE9ZGF0YSwgY29ubj1zZWxmLmNvbm4pCisgICAgICAgIGVsc2U6Cisg ICAgICAgICAgICByZXF1aXJlZF9hcmdzID0gWydjb2x1bW5zJ10KKworICAg ICAgICAgICAgZm9yIGFyZyBpbiByZXF1aXJlZF9hcmdzOgorICAgICAgICAg ICAgICAgIGlmIGFyZyBub3QgaW4gZGF0YToKKyAgICAgICAgICAgICAgICAg ICAgcmV0dXJuIF8oJy0tIGRlZmluaXRpb24gaW5jb21wbGV0ZScpCisgICAg ICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKGRhdGFbYXJnXSwgbGlzdCkg YW5kIGxlbihkYXRhW2FyZ10pIDwgMToKKyAgICAgICAgICAgICAgICAgICAg cmV0dXJuIF8oJy0tIGRlZmluaXRpb24gaW5jb21wbGV0ZScpCisKKyAgICAg ICAgICAgIGlmIGRhdGFbJ2F1dG9pbmRleCddIGFuZCAoJ2NvdmVyaW5naW5k ZXgnIG5vdCBpbiBkYXRhIG9yCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGRhdGFbJ2NvdmVyaW5naW5kZXgnXSA9PSAnJyk6Cisg ICAgICAgICAgICAgICAgcmV0dXJuIF8oJy0tIGRlZmluaXRpb24gaW5jb21w bGV0ZScpCisKKyAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgi LyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2V0X3BhcmVudC5zcWwn XSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlkPWRh dGFbJ2NvbHVtbnMnXVswXVsncmVmZXJlbmNlcyddKQorICAgICAgICAgICAg c3RhdHVzLCByc2V0ID0gc2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJheShTUUwp CisgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAg IHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cnNldCkK KworICAgICAgICAgICAgZGF0YVsncmVtb3RlX3NjaGVtYSddID0gcnNldFsn cm93cyddWzBdWydzY2hlbWEnXQorICAgICAgICAgICAgZGF0YVsncmVtb3Rl X3RhYmxlJ10gPSByc2V0Wydyb3dzJ11bMF1bJ3RhYmxlJ10KKworICAgICAg ICAgICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRl bXBsYXRlX3BhdGgsICdjcmVhdGUuc3FsJ10pLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGRhdGE9ZGF0YSwgY29ubj1zZWxmLmNvbm4p CisgICAgICAgICAgICBzcWwgKz0gIlxuIgorICAgICAgICAgICAgc3FsICs9 IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRo LCAnYWx0ZXIuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBkYXRhPWRhdGEsIGNvbm49c2VsZi5jb25uKQorCisgICAgICAg ICAgICBpZiBkYXRhWydhdXRvaW5kZXgnXToKKyAgICAgICAgICAgICAgICBz cWwgKz0gcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAgICAgICAgICAi LyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAnY3JlYXRlX2luZGV4LnNx bCddKSwKKyAgICAgICAgICAgICAgICAgICAgZGF0YT1kYXRhLCBjb25uPXNl bGYuY29ubikKKyAgICAgICAgcmV0dXJuIHNxbAorCisgICAgQGNoZWNrX3By ZWNvbmRpdGlvbgorICAgIGRlZiBzcWwoc2VsZiwgZ2lkLCBzaWQsIGRpZCwg c2NpZCwgdGlkLCBma2lkPU5vbmUpOgorICAgICAgICAiIiIKKyAgICAgICAg VGhpcyBmdW5jdGlvbiBnZW5lcmF0ZXMgc3FsIHRvIHNob3cgaW4gdGhlIHNx bCBwYW5lIGZvciB0aGUgc2VsZWN0ZWQKKyAgICAgICAgZm9yZWlnbiBrZXku CisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICBnaWQ6IFNlcnZlciBHcm91 cCBJRAorICAgICAgICAgIHNpZDogU2VydmVyIElECisgICAgICAgICAgZGlk OiBEYXRhYmFzZSBJRAorICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJRAorICAg ICAgICAgIHRpZDogVGFibGUgSUQKKyAgICAgICAgICBma2lkOiBGb3JlaWdu IGtleSBjb25zdHJhaW50IElECisKKyAgICAgICAgUmV0dXJuczoKKworICAg ICAgICAiIiIKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgU1FMID0gcmVu ZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAgICAgICIvIi5qb2luKFtzZWxm LnRlbXBsYXRlX3BhdGgsICdwcm9wZXJ0aWVzLnNxbCddKSwKKyAgICAgICAg ICAgICAgICB0aWQ9dGlkLCBjb25uPXNlbGYuY29ubiwgY2lkPWZraWQpCisg ICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2Rp Y3QoU1FMKQorICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAg ICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNn PXJlcykKKworICAgICAgICAgICAgZGF0YSA9IHJlc1sncm93cyddWzBdCisg ICAgICAgICAgICBkYXRhWydzY2hlbWEnXSA9IHNlbGYuc2NoZW1hCisgICAg ICAgICAgICBkYXRhWyd0YWJsZSddID0gc2VsZi50YWJsZQorCisgICAgICAg ICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVt cGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJ2dldF9jb25zdHJhaW50X2NvbHMuc3FsJ10pLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpZD10aWQsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5cz16aXAoZGF0YVsn Y29uZmtleSddLCBkYXRhWydjb25rZXknXSksCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29uZnJlbGlkPWRhdGFbJ2NvbmZyZWxpZCdd KQorCisgICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVj dXRlX2RpY3Qoc3FsKQorCisgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgor ICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3Io ZXJyb3Jtc2c9cmVzKQorCisgICAgICAgICAgICBjb2x1bW5zID0gW10KKyAg ICAgICAgICAgIGZvciByb3cgaW4gcmVzWydyb3dzJ106CisgICAgICAgICAg ICAgICAgY29sdW1ucy5hcHBlbmQoeyJsb2NhbF9jb2x1bW4iOiByb3dbJ2Nv bmF0dG5hbWUnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg InJlZmVyZW5jZXMiOiBkYXRhWydjb25mcmVsaWQnXSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgInJlZmVyZW5jZWQiOiByb3dbJ2NvbmZh dHRuYW1lJ119KQorCisgICAgICAgICAgICBkYXRhWydjb2x1bW5zJ10gPSBj b2x1bW5zCisKKyAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgi LyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2V0X3BhcmVudC5zcWwn XSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlkPWRh dGFbJ2NvbHVtbnMnXVswXVsncmVmZXJlbmNlcyddKQorICAgICAgICAgICAg c3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV8yZGFycmF5KFNRTCkK KworICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAg ICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykK KworICAgICAgICAgICAgZGF0YVsncmVtb3RlX3NjaGVtYSddID0gcmVzWydy b3dzJ11bMF1bJ3NjaGVtYSddCisgICAgICAgICAgICBkYXRhWydyZW1vdGVf dGFibGUnXSA9IHJlc1sncm93cyddWzBdWyd0YWJsZSddCisKKyAgICAgICAg ICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgICAgICAgICAi LyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAnY3JlYXRlLnNxbCddKSwg ZGF0YT1kYXRhKQorICAgICAgICAgICAgU1FMICs9ICJcbiIKKyAgICAgICAg ICAgIFNRTCArPSByZW5kZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAgICAg Ii8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ2FsdGVyLnNxbCddKSwK KyAgICAgICAgICAgICAgICBkYXRhPWRhdGEsIGNvbm49c2VsZi5jb25uKQor CisgICAgICAgICAgICBzcWxfaGVhZGVyID0gIi0tIENvbnN0cmFpbnQ6IHsw fVxuXG4tLSAiLmZvcm1hdChkYXRhWyduYW1lJ10pCisKKyAgICAgICAgICAg IHNxbF9oZWFkZXIgKz0gcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAg ICAgICAgICAiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAnZGVsZXRl LnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgZGF0YT1kYXRhKQorICAg ICAgICAgICAgc3FsX2hlYWRlciArPSAiXG4iCisKKyAgICAgICAgICAgIFNR TCA9IHNxbF9oZWFkZXIgKyBTUUwKKworICAgICAgICAgICAgcmV0dXJuIGFq YXhfcmVzcG9uc2UocmVzcG9uc2U9U1FMKQorCisgICAgICAgIGV4Y2VwdCBF eGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9z ZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKGUpKQorCisgICAgQGNoZWNrX3By ZWNvbmRpdGlvbgorICAgIGRlZiBkZXBlbmRlbnRzKHNlbGYsIGdpZCwgc2lk LCBkaWQsIHNjaWQsIHRpZCwgZmtpZD1Ob25lKToKKyAgICAgICAgIiIiCisg ICAgICAgIFRoaXMgZnVuY3Rpb24gZ2V0cyB0aGUgZGVwZW5kZW50cyBhbmQg cmV0dXJucyBhbiBhamF4IHJlc3BvbnNlCisgICAgICAgIGZvciB0aGUgZXZl bnQgdHJpZ2dlciBub2RlLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAg ICBnaWQ6IFNlcnZlciBHcm91cCBJRAorICAgICAgICAgICAgc2lkOiBTZXJ2 ZXIgSUQKKyAgICAgICAgICAgIGRpZDogRGF0YWJhc2UgSUQKKyAgICAgICAg ICAgIGV0aWQ6IEV2ZW50IHRyaWdnZXIgSUQKKyAgICAgICAgIiIiCisgICAg ICAgIGRlcGVuZGVudHNfcmVzdWx0ID0gc2VsZi5nZXRfZGVwZW5kZW50cyhz ZWxmLmNvbm4sIGZraWQpCisgICAgICAgIHJldHVybiBhamF4X3Jlc3BvbnNl KAorICAgICAgICAgICAgICAgIHJlc3BvbnNlPWRlcGVuZGVudHNfcmVzdWx0 LAorICAgICAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAgICAgICAgICAg ICApCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVmIGRlcGVu ZGVuY2llcyhzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQsIGZraWQ9 Tm9uZSk6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIGdl dHMgdGhlIGRlcGVuZGVuY2llcyBhbmQgcmV0dXJucyBhbiBhamF4IHJlc3Bv bnNlCisgICAgICAgIGZvciB0aGUgZXZlbnQgdHJpZ2dlciBub2RlLgorCisg ICAgICAgIEFyZ3M6CisgICAgICAgICAgICBnaWQ6IFNlcnZlciBHcm91cCBJ RAorICAgICAgICAgICAgc2lkOiBTZXJ2ZXIgSUQKKyAgICAgICAgICAgIGRp ZDogRGF0YWJhc2UgSUQKKyAgICAgICAgICAgIGV0aWQ6IEV2ZW50IHRyaWdn ZXIgSUQKKyAgICAgICAgIiIiCisgICAgICAgIGRlcGVuZGVuY2llc19yZXN1 bHQgPSBzZWxmLmdldF9kZXBlbmRlbmNpZXMoc2VsZi5jb25uLCBma2lkKQor ICAgICAgICByZXR1cm4gYWpheF9yZXNwb25zZSgKKyAgICAgICAgICAgICAg ICByZXNwb25zZT1kZXBlbmRlbmNpZXNfcmVzdWx0LAorICAgICAgICAgICAg ICAgIHN0YXR1cz0yMDAKKyAgICAgICAgICAgICAgICApCisKKyAgICBAY2hl Y2tfcHJlY29uZGl0aW9uCisgICAgZGVmIHZhbGlkYXRlX2ZvcmVpZ25fa2V5 KHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRpZCwgZmtpZCk6CisgICAg ICAgICIiIgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgZ2lkOgorICAg ICAgICAgIHNpZDoKKyAgICAgICAgICBkaWQ6CisgICAgICAgICAgc2NpZDoK KyAgICAgICAgICB0aWQ6CisgICAgICAgICAgZmtpZDoKKworICAgICAgICBS ZXR1cm5zOgorCisgICAgICAgICIiIgorICAgICAgICBkYXRhID0ge30KKyAg ICAgICAgdHJ5OgorICAgICAgICAgICAgZGF0YVsnc2NoZW1hJ10gPSBzZWxm LnNjaGVtYQorICAgICAgICAgICAgZGF0YVsndGFibGUnXSA9IHNlbGYudGFi bGUKKyAgICAgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9p bihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAnZ2V0X25hbWUuc3FsJ10pLCBma2lk PWZraWQpCisgICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5l eGVjdXRlX3NjYWxhcihzcWwpCisgICAgICAgICAgICBpZiBub3Qgc3RhdHVz OgorICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJy b3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgICAgICBkYXRhWyduYW1lJ10g PSByZXMKKyAgICAgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIu am9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAndmFsaWRhdGUuc3FsJ10pLCBk YXRhPWRhdGEpCisgICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29u bi5leGVjdXRlX2RpY3Qoc3FsKQorICAgICAgICAgICAgaWYgbm90IHN0YXR1 czoKKyAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vy cm9yKGVycm9ybXNnPXJlcykKKworICAgICAgICAgICAgcmV0dXJuIG1ha2Vf anNvbl9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICBzdWNjZXNzPTEsCisg ICAgICAgICAgICAgICAgaW5mbz1fKCJGb3JlaWduIGtleSB1cGRhdGVkLiIp LAorICAgICAgICAgICAgICAgIGRhdGE9eworICAgICAgICAgICAgICAgICAg ICAnaWQnOiBma2lkLAorICAgICAgICAgICAgICAgICAgICAndGlkJzogdGlk LAorICAgICAgICAgICAgICAgICAgICAnc2NpZCc6IHNjaWQsCisgICAgICAg ICAgICAgICAgICAgICdkaWQnOiBkaWQKKyAgICAgICAgICAgICAgICB9Cisg ICAgICAgICAgICApCisKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBl OgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihl cnJvcm1zZz1zdHIoZSkpCisKKyAgICBkZWYgc2VhcmNoX2NvdmVyaW5naW5k ZXgoc2VsZiwgdGlkLCBjb2xzKToKKyAgICAgICAgIiIiCisKKyAgICAgICAg QXJnczoKKyAgICAgICAgICB0aWQ6IFRhYmxlIGlkCisgICAgICAgICAgY29s czogY29sdW1uIGxpc3QKKworICAgICAgICBSZXR1cm5zOgorCisgICAgICAg ICIiIgorCisgICAgICAgIGNvbHMgPSBzZXQoY29scykKKyAgICAgICAgU1FM ID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3Bh dGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg J2dldF9jb25zdHJhaW50cy5zcWwnXSksCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB0aWQ9dGlkKQorICAgICAgICBzdGF0dXMsIGNvbnN0cmFp bnRzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChTUUwpCisKKyAgICAgICAg aWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbihj b25zdHJhaW50cykKKworICAgICAgICBmb3IgY29zdHJudCBpbiBjb25zdHJh aW50c1sncm93cyddOgorCisgICAgICAgICAgICBzcWwgPSByZW5kZXJfdGVt cGxhdGUoCisgICAgICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYudGVtcGxh dGVfcGF0aCwgJ2dldF9jb2xzLnNxbCddKSwKKyAgICAgICAgICAgICAgICBj aWQ9Y29zdHJudFsnb2lkJ10sCisgICAgICAgICAgICAgICAgY29sY250PWNv c3RybnRbJ2luZG5hdHRzJ10pCisgICAgICAgICAgICBzdGF0dXMsIHJlc3Qg PSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KHNxbCkKKworICAgICAgICAgICAg aWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJu YWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlc3QpCisKKyAgICAgICAgICAg IGluZGV4Y29scyA9IHNldCgpCisgICAgICAgICAgICBmb3IgciBpbiByZXN0 Wydyb3dzJ106CisgICAgICAgICAgICAgICAgaW5kZXhjb2xzLmFkZChyWydj b2x1bW4nXS5zdHJpcCgnIicpKQorCisgICAgICAgICAgICBpZiBsZW4oY29s cyAtIGluZGV4Y29scykgPT0gbGVuKGluZGV4Y29scyAtIGNvbHMpID09IDA6 CisgICAgICAgICAgICAgICAgcmV0dXJuIGNvc3RybnRbImlkeG5hbWUiXQor CisgICAgICAgIHJldHVybiBOb25lCisKKyAgICBAY2hlY2tfcHJlY29uZGl0 aW9uCisgICAgZGVmIGdldF9jb3ZlcmluZ2luZGV4KHNlbGYsIGdpZCwgc2lk LCBkaWQsIHNjaWQsIHRpZD1Ob25lKToKKyAgICAgICAgIiIiCisKKyAgICAg ICAgQXJnczoKKyAgICAgICAgICBnaWQ6CisgICAgICAgICAgc2lkOgorICAg ICAgICAgIGRpZDoKKyAgICAgICAgICBzY2lkOgorICAgICAgICAgIHRpZDoK KworICAgICAgICBSZXR1cm5zOgorCisgICAgICAgICIiIgorCisgICAgICAg IGRhdGEgPSByZXF1ZXN0LmFyZ3MgaWYgcmVxdWVzdC5hcmdzIGVsc2UgTm9u ZQorICAgICAgICBpbmRleCA9IE5vbmUKKyAgICAgICAgdHJ5OgorICAgICAg ICAgICAgaWYgZGF0YSBhbmQgJ2NvbHMnIGluIGRhdGE6CisgICAgICAgICAg ICAgICAgY29scyA9IHNldChqc29uLmxvYWRzKGRhdGFbJ2NvbHMnXSkpCisg ICAgICAgICAgICAgICAgaW5kZXggPSBzZWxmLnNlYXJjaF9jb3ZlcmluZ2lu ZGV4KHRpZCwgY29scykKKworICAgICAgICAgICAgcmV0dXJuIG1ha2VfanNv bl9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICBkYXRhPWluZGV4LAorICAg ICAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAgICAgICAgICAgICApCisg ICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIHJl dHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKGUpKQor Citjb25zdHJhaW50ID0gQ29uc3RyYWludFJlZ2lzdHJ5KAorICAgICdmb3Jl aWduX2tleScsIEZvcmVpZ25LZXlDb25zdHJhaW50TW9kdWxlLCBGb3JlaWdu S2V5Q29uc3RyYWludFZpZXcKKyAgICApCitGb3JlaWduS2V5Q29uc3RyYWlu dFZpZXcucmVnaXN0ZXJfbm9kZV92aWV3KGJsdWVwcmludCkKZGlmZiAtLWdp dCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9jb25zdHJhaW50cy9mb3JlaWdu X2tleS9zdGF0aWMvaW1nL2ZvcmVpZ25fa2V5LnBuZyBiL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL3RhYmxlcy9jb25zdHJhaW50cy9mb3JlaWduX2tleS9zdGF0aWMvaW1n L2ZvcmVpZ25fa2V5LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMzYw NTUwMDQzOWRiNzJjMmM0Mzg3OWFiYjYxYTI0Yzk1NmUxYmY1CkdJVCBiaW5h cnkgcGF0Y2gKbGl0ZXJhbCAyOTkKemNtZUFTQE4/KG9sSHlgdVZCcSFpYTB2 cF4wd0J4KkJwOXFfRVo3VUFtYFp+RGYqQmFmQ1pEd2NAc2htVlReSlp2Cnpe KHE/eWQ3SzN2aztPcFQxQn41SFg0P1Q3QHQhVkBBcmhDOTZCY21ZeE97Jjxg XkB7aHAxISh6Y0NFKiFYdHtlawp6PiN+em9TI2xCKlVoTXoxO00yMzYtUjYw QmNodm5uXzFKNXxmeG85X3J8YUVgc1pEPTZSYSF4YGRmVDEtbHxOcyMKemM/ cXo1WTs0UWhTQ1d7X1pJYFhkJk1Ael9JcGN4e210JWxkc2d9NCNsJXluPHEq XjV4cjI7N2lCTGhQTlR8KjtYCnoxSCV2XzExbDNfRC0lO34xNSt5bGdMJmB0 Ui10SWYlfT5jcHRBdURVdW1vIVdzeTRBUUZvUzN+SDlkMzxQeT5VZgpMdERu bXtyLVVXfDdiIz83CgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1n aXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29uc3RyYWludHMvZm9yZWln bl9rZXkvc3RhdGljL2ltZy9mb3JlaWduX2tleV9ub192YWxpZGF0ZS5wbmcg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29uc3RyYWludHMvZm9yZWlnbl9r ZXkvc3RhdGljL2ltZy9mb3JlaWduX2tleV9ub192YWxpZGF0ZS5wbmcKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMC4uOTc1NTYxYmNmNzIzN2Q1ZTk5ZTlkNDJm ZjcwNWRiNjdmMWJiMmZkYgpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgNjE4 CnpjbWVBU0BOPyhvbEh5YHVWQnEhaWEwdnBeMHdCITYzP3d5bGBHWGw0Nz99 Y21MUl44fEokdkBfX3hEZWpGeVoyYgp6aSQ4ei17UUJgellpc000RW42PDBJ KEkhTz1fbXVraDQ5RU5ReF9nfV9yOUIlYFM5VnhUXnFOYjNKbSNIVVZobCEK emR2O3NAVVIkUys7byg9V1VWWlQzS318ezN4M2FRdE1NWW9wXjdkRmVkPCtZ RkA5K1E0IX1JP0FgJkRJP1V2cVE2CnpXTXE2IU84TzhRYHJaI0g/czU2ajxx SWR5ZGA/WEs3IztsfkI7PnVYLSNkNXImNl91MHheKEhuYFNYVmw5bG4qQwp6 YFhMeDc/KSVRb1pJekMzVXRpeiQ0ViRrNE8kWkt0QDhrMiUpJUFeP3tjOCkw LU9qRWJmYFo8QWQldHlZZVFqPzMKeiVGeXRvdylUZz56O3w5PVo9R0ZjSSh4 bTsodGU/O2BkbVRidCZ7VCtIP1E+T05pJHUlcFVXI1c9aFZEIVluS094Cnow JUoqI1VvZUJpdm0wcVo0cmhUIVdIRkhUMEFzaDQqPip0MmRgfW4wNVEpb2Nk IUd0NTEmRmxoY1FtYyh5eFZuRwp6X1FxWT1feTR0dVQjdHp0KVgkbXVfdU0l PiNkXldSUVdsRn1LQ2Ymdj8lcDdmd0RxOWh8RTl5NTJVKWl0PWF5R3AKelY9 diZNQT4kfnJ2NFRuRGdlVHw5NjFKTiReVkIzOV4rYTUhb1NLXlRfT2ohVHM+ TF82N0dIa3JgMTlPMWNJVGRCCnpsVkFGSHViN3AqRih6XkUlfnZlRHwxIUdJ SVZZYXNhN2M5ZlopU2huazNrdnB0M3Y7P0hReTdRKEE7OyoxP1dgTwp6NjQh ezVsKkUhJHRLXzBvQWpNIzBVfSZnb1Y2MUNrNW5eYSRXb1R8P1Y1eDBqV0BU Vi1gUHFzajZiLXJnRFZiQE4KV3hIVC09RXBRTDBmeCorJiZ0O3VjTEs2VkA2 QWokfQoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvdGFibGVzL2NvbnN0cmFpbnRzL2ZvcmVpZ25fa2V5L3Rl bXBsYXRlcy9mb3JlaWduX2tleS9jc3MvZm9yZWlnbl9rZXkuY3NzIGIvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvdGFibGVzL2NvbnN0cmFpbnRzL2ZvcmVpZ25fa2V5L3Rl bXBsYXRlcy9mb3JlaWduX2tleS9jc3MvZm9yZWlnbl9rZXkuY3NzCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFlYWZmMTEKLS0tIC9k ZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29uc3RyYWlu dHMvZm9yZWlnbl9rZXkvdGVtcGxhdGVzL2ZvcmVpZ25fa2V5L2Nzcy9mb3Jl aWduX2tleS5jc3MKQEAgLTAsMCArMSwxMiBAQAorLmljb24tZm9yZWlnbl9r ZXkgeworICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJ3t7IHVybF9mb3IoJ05P REUtZm9yZWlnbl9rZXkuc3RhdGljJywgZmlsZW5hbWU9J2ltZy9mb3JlaWdu X2tleS5wbmcnKSB9fScpICFpbXBvcnRhbnQ7CisgIGJhY2tncm91bmQtcmVw ZWF0OiBuby1yZXBlYXQ7CisgIGFsaWduLWNvbnRlbnQ6IGNlbnRlcjsKKyAg dmVydGljYWwtYWxpZ246IG1pZGRsZTsKKyAgaGVpZ2h0OiAxLjNlbTsKK30K KworLmljb24tZm9yZWlnbl9rZXlfbm9fdmFsaWRhdGUgeworICBiYWNrZ3Jv dW5kLWltYWdlOiB1cmwoJ3t7IHVybF9mb3IoJ05PREUtZm9yZWlnbl9rZXku c3RhdGljJywgZmlsZW5hbWU9J2ltZy9mb3JlaWduX2tleV9ub192YWxpZGF0 ZS5wbmcnKSB9fScpICFpbXBvcnRhbnQ7CisgIGJvcmRlci1yYWRpdXM6IDEw cHgKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg YS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29uc3RyYWludHMvZm9yZWlnbl9r ZXkvdGVtcGxhdGVzL2ZvcmVpZ25fa2V5L2pzL2ZvcmVpZ25fa2V5LmpzIGIv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvdGFibGVzL2NvbnN0cmFpbnRzL2ZvcmVpZ25fa2V5 L3RlbXBsYXRlcy9mb3JlaWduX2tleS9qcy9mb3JlaWduX2tleS5qcwpuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZGE0NThhCi0tLSAv ZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2NvbnN0cmFp bnRzL2ZvcmVpZ25fa2V5L3RlbXBsYXRlcy9mb3JlaWduX2tleS9qcy9mb3Jl aWduX2tleS5qcwpAQCAtMCwwICsxLDEwNzIgQEAKK2RlZmluZSgKKyAgICAg ICAgWydqcXVlcnknLCAndW5kZXJzY29yZScsICd1bmRlcnNjb3JlLnN0cmlu ZycsICdwZ2FkbWluJywKKyAgICAgICAgJ3BnYWRtaW4uYnJvd3NlcicsICdh bGVydGlmeScsICdwZ2FkbWluLmJyb3dzZXIuY29sbGVjdGlvbiddLAorZnVu Y3Rpb24oJCwgXywgUywgcGdBZG1pbiwgcGdCcm93c2VyLCBBbGVydGlmeSkg eworCisgIHZhciBmb3JtYXROb2RlID0gZnVuY3Rpb24ob3B0KSB7CisgICAg aWYgKCFvcHQuaWQpIHsKKyAgICAgIHJldHVybiBvcHQudGV4dDsKKyAgICB9 CisKKyAgICB2YXIgb3B0aW1hZ2UgPSAkKG9wdC5lbGVtZW50KS5kYXRhKCdp bWFnZScpOworCisgICAgaWYoIW9wdGltYWdlKXsKKyAgICAgIHJldHVybiBv cHQudGV4dDsKKyAgICB9IGVsc2UgeworICAgICAgcmV0dXJuICQoCisgICAg ICAgICAgJzxzcGFuPjxzcGFuIGNsYXNzPSJ3Y1RhYkljb24gJyArIG9wdGlt YWdlICsgJyIvPicgKyBvcHQudGV4dCArICc8L3NwYW4+JworICAgICAgICAg ICk7CisgICAgfQorICB9LAorICAgICAgaGVhZGVyU2VsZWN0Q29udHJvbFRl bXBsYXRlID0gIF8udGVtcGxhdGUoWworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJzxkaXYgY2xhc3M9IjwlPUJhY2tmb3JtLmNvbnRyb2xzQ2xh c3NOYW1lJT4gPCU9ZXh0cmFDbGFzc2VzLmpvaW4oXCcgXCcpJT4iPicsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnICA8c2VsZWN0IGNsYXNz PSJwZ2FkbWluLW5vZGUtc2VsZWN0IGZvcm0tY29udHJvbCIgbmFtZT0iPCU9 bmFtZSU+IiBzdHlsZT0id2lkdGg6MTAwJTsiIHZhbHVlPSI8JS12YWx1ZSU+ IiA8JT1kaXNhYmxlZCA/ICJkaXNhYmxlZCIgOiAiIiU+IDwlPXJlcXVpcmVk ID8gInJlcXVpcmVkIiA6ICIiJT4gPicsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAnICAgIDwlIGlmIChmaXJzdF9lbXB0eSkgeyAlPicsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIDxvcHRpb24gdmFs dWU9IiIgPCU9IiIgPT09IHJhd1ZhbHVlID8gInNlbGVjdGVkIiA6ICIiICU+ PjwlLSBlbXB0eV92YWx1ZSAlPjwvb3B0aW9uPicsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAnICAgIDwlIH0gJT4nLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJyAgICA8JSBmb3IgKHZhciBpPTA7IGkgPCBv cHRpb25zLmxlbmd0aDsgaSsrKSB7ICU+JywKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICcgICAgPCUgdmFyIG9wdGlvbiA9IG9wdGlvbnNbaV07 ICU+JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgPG9w dGlvbiA8JSBpZiAob3B0aW9uLmltYWdlKSB7ICU+IGRhdGEtaW1hZ2U9PCU9 IG9wdGlvbi5pbWFnZSAlPiA8JSB9ICU+IHZhbHVlPTwlPSBmb3JtYXR0ZXIu ZnJvbVJhdyhvcHRpb24udmFsdWUpICU+IDwlPW9wdGlvbi52YWx1ZSA9PT0g cmF3VmFsdWUgPyAic2VsZWN0ZWQ9XCdzZWxlY3RlZFwnIiA6ICIiICU+Pjwl LW9wdGlvbi5sYWJlbCU+PC9vcHRpb24+JywKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICcgICAgPCUgfSAlPicsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAnICA8L3NlbGVjdD4nLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJzwvZGl2PiddLmpvaW4oIlxuIikpOworCisgIHZh ciBGb3JlaWduS2V5Q29sdW1uTW9kZWwgPSBwZ0Jyb3dzZXIuTm9kZS5Nb2Rl bC5leHRlbmQoeworICAgIGRlZmF1bHRzOiB7CisgICAgICBsb2NhbF9jb2x1 bW46IHVuZGVmaW5lZCwKKyAgICAgIHJlZmVyZW5jZXM6IHVuZGVmaW5lZCwK KyAgICAgIHJlZmVyZW5jZWQ6IHVuZGVmaW5lZAorICAgIH0sCisgICAgc2No ZW1hOiBbeworICAgICAgICBpZDogJ2xvY2FsX2NvbHVtbicsIGxhYmVsOidM b2NhbCcsIHR5cGU6J3RleHQnLCBlZGl0YWJsZTogZmFsc2UsCisgICAgICAg IGNlbGxIZWFkZXJDbGFzc2VzOiAnd2lkdGhfcGVyY2VudF81MCcsIGNlbGw6 J3N0cmluZycsCisgICAgICAgIGhlYWRlckNlbGw6IEJhY2tncmlkLkV4dGVu c2lvbi5DdXN0b21IZWFkZXJDZWxsCisgICAgICB9LHsKKyAgICAgICAgaWQ6 ICdyZWZlcmVuY2VkJywgbGFiZWw6J1JlZmVyZW5jZWQnLCB0eXBlOiAndGV4 dCcsIGVkaXRhYmxlOiBmYWxzZSwKKyAgICAgICAgY2VsbDonc3RyaW5nJywg Y2VsbEhlYWRlckNsYXNzZXM6ICd3aWR0aF9wZXJjZW50XzUwJywKKyAgICAg ICAgaGVhZGVyQ2VsbDogQmFja2dyaWQuRXh0ZW5zaW9uLkN1c3RvbUhlYWRl ckNlbGwKKyAgICAgIH1dCisgIH0pOworCisgIHZhciBGb3JlaWduS2V5Q29s dW1uQ29udHJvbCA9ICBCYWNrZm9ybS5Gb3JlaWduS2V5Q29sdW1uQ29udHJv bCA9CisgICAgQmFja2Zvcm0uVW5pcXVlQ29sQ29sbGVjdGlvbkNvbnRyb2wu ZXh0ZW5kKHsKKworICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKG9wdHMpIHsK KyAgICAgIEJhY2tmb3JtLlVuaXF1ZUNvbENvbGxlY3Rpb25Db250cm9sLnBy b3RvdHlwZS5pbml0aWFsaXplLmFwcGx5KAorICAgICAgICB0aGlzLCBhcmd1 bWVudHMKKyAgICAgICAgICApOworCisgICAgICB2YXIgc2VsZiA9IHRoaXMs CisgICAgICAgIG5vZGUgPSAnZm9yZWlnbl9rZXknLAorICAgICAgICBoZWFk ZXJTY2hlbWEgPSBbeworICAgICAgICAgIGlkOiAnbG9jYWxfY29sdW1uJywg bGFiZWw6JycsIHR5cGU6J3RleHQnLAorICAgICAgICAgIG5vZGU6ICdjb2x1 bW4nLCBjb250cm9sOiBCYWNrZm9ybS5Ob2RlTGlzdEJ5TmFtZUNvbnRyb2wu ZXh0ZW5kKHsKKyAgICAgICAgICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKCkg eworICAgICAgICAgICAgICAvLyBIZXJlIHdlIHdpbGwgZGVjaWRlIGlmIHdl IG5lZWQgdG8gY2FsbCBVUkwKKyAgICAgICAgICAgICAgLy8gT3IgZmV0Y2gg dGhlIGRhdGEgZnJvbSBwYXJlbnQgY29sdW1ucyBjb2xsZWN0aW9uCisgICAg ICAgICAgICAgICAgaWYoc2VsZi5tb2RlbC5oYW5kbGVyKSB7CisgICAgICAg ICAgICAgICAgICBCYWNrZm9ybS5TZWxlY3QyQ29udHJvbC5wcm90b3R5cGUu aW5pdGlhbGl6ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpOworICAgICAgICAg ICAgICAgICAgLy8gRG8gbm90IGxpc3RlbiBmb3IgYW55IGV2ZW50KHMpIGZv ciBleGlzdGluZyBjb25zdHJhaW50LgorICAgICAgICAgICAgICAgICAgaWYg KF8uaXNVbmRlZmluZWQoc2VsZi5tb2RlbC5nZXQoJ29pZCcpKSkgeworICAg ICAgICAgICAgICAgICAgICB2YXIgdGFibGVDb2xzID0gc2VsZi5tb2RlbC50 b3AuZ2V0KCdjb2x1bW5zJyk7CisgICAgICAgICAgICAgICAgICAgIHRoaXMu bGlzdGVuVG8odGFibGVDb2xzLCAncmVtb3ZlJyAsIHRoaXMucmVtb3ZlQ29s dW1uKTsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5saXN0ZW5Ubyh0YWJs ZUNvbHMsICdjaGFuZ2U6bmFtZScsIHRoaXMucmVzZXRDb2xPcHRpb25zKTsK KyAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgdGhp cy5jdXN0b21fb3B0aW9ucygpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7 CisgICAgICAgICAgICAgICAgICBCYWNrZm9ybS5Ob2RlTGlzdEJ5TmFtZUNv bnRyb2wucHJvdG90eXBlLmluaXRpYWxpemUuYXBwbHkodGhpcywgYXJndW1l bnRzKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAg ICAgICAgICAgcmVtb3ZlQ29sdW1uOiBmdW5jdGlvbiAobSkgeworICAgICAg ICAgICAgICB2YXIgdGhhdCA9IHRoaXM7CisgICAgICAgICAgICAgIHNldFRp bWVvdXQoZnVuY3Rpb24gICAoKSB7CisgICAgICAgICAgICAgICAgdGhhdC5j dXN0b21fb3B0aW9ucygpOworICAgICAgICAgICAgICAgIHRoYXQucmVuZGVy LmFwcGx5KHRoYXQpOworICAgICAgICAgICAgICB9LCA1MCk7CisgICAgICAg ICAgICB9LAorICAgICAgICAgICAgcmVzZXRDb2xPcHRpb25zOiBmdW5jdGlv bihtKSB7CisgICAgICAgICAgICAgIHZhciB0aGF0ID0gdGhpczsKKworICAg ICAgICAgICAgICBpZiAobS5wcmV2aW91cygnbmFtZScpID09ICBzZWxmLmhl YWRlckRhdGEuZ2V0KCdsb2NhbF9jb2x1bW4nKSkgeworICAgICAgICAgICAg ICAgIC8qCisgICAgICAgICAgICAgICAgICogVGFibGUgY29sdW1uIG5hbWUg aGFzIGNoYW5nZWQgc28gdXBkYXRlCisgICAgICAgICAgICAgICAgICogY29s dW1uIG5hbWUgaW4gZm9yZWlnbiBrZXkgYXMgd2VsbC4KKyAgICAgICAgICAg ICAgICAgKi8KKyAgICAgICAgICAgICAgICBzZWxmLmhlYWRlckRhdGEuc2V0 KAorICAgICAgICAgICAgICAgICAgeyJsb2NhbF9jb2x1bW4iOiBtLmdldCgn bmFtZScpfSk7CisgICAgICAgICAgICAgICAgICBzZWxmLmhlYWRlckRhdGFD aGFuZ2VkKCk7CisgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICBz ZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICB0aGF0 LmN1c3RvbV9vcHRpb25zKCk7CisgICAgICAgICAgICAgICAgdGhhdC5yZW5k ZXIuYXBwbHkodGhhdCk7CisgICAgICAgICAgICAgIH0sIDUwKTsKKyAgICAg ICAgICAgIH0sCisgICAgICAgICAgICBjdXN0b21fb3B0aW9uczogZnVuY3Rp b24oKSB7CisgICAgICAgICAgICAgIC8vIFdlIHdpbGwgYWRkIGFsbCB0aGUg Y29sdW1ucyBlbnRlcmVkIGJ5IHVzZXIgaW4gdGFibGUgbW9kZWwKKyAgICAg ICAgICAgICAgdmFyIGNvbHVtbnMgPSBzZWxmLm1vZGVsLnRvcC5nZXQoJ2Nv bHVtbnMnKSwKKyAgICAgICAgICAgICAgICAgIGFkZGVkX2NvbHVtbnNfZnJv bV90YWJsZXMgPSBbXTsKKworICAgICAgICAgICAgICBpZiAoY29sdW1ucy5s ZW5ndGggPiAwKSB7CisgICAgICAgICAgICAgICAgXy5lYWNoKGNvbHVtbnMu bW9kZWxzLCBmdW5jdGlvbihtKSB7CisgICAgICAgICAgICAgICAgICAgIHZh ciBjb2wgPSBtLmdldCgnbmFtZScpOworICAgICAgICAgICAgICAgICAgICBp ZighXy5pc1VuZGVmaW5lZChjb2wpICYmICFfLmlzTnVsbChjb2wpKSB7Cisg ICAgICAgICAgICAgICAgICAgICAgYWRkZWRfY29sdW1uc19mcm9tX3RhYmxl cy5wdXNoKAorICAgICAgICAgICAgICAgICAgICAgICAge2xhYmVsOiBjb2ws IHZhbHVlOiBjb2wsIGltYWdlOidpY29uLWNvbHVtbid9CisgICAgICAgICAg ICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAg ICAgICAgICAgIH0pOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg IC8vIFNldCB0aGUgdmFsdWVzIGluIHRvIG9wdGlvbnMgc28gdGhhdCB1c2Vy IGNhbiBzZWxlY3QKKyAgICAgICAgICAgICAgdGhpcy5maWVsZC5zZXQoJ29w dGlvbnMnLCBhZGRlZF9jb2x1bW5zX2Zyb21fdGFibGVzKTsKKyAgICAgICAg ICAgIH0sCisgICAgICAgICAgICB0ZW1wbGF0ZTogaGVhZGVyU2VsZWN0Q29u dHJvbFRlbXBsYXRlLAorICAgICAgICAgICAgcmVtb3ZlOiBmdW5jdGlvbiAo KSB7CisgICAgICAgICAgICAgIGlmKHNlbGYubW9kZWwuaGFuZGxlcikgewor ICAgICAgICAgICAgICAgIHZhciB0YWJsZUNvbHMgPSBzZWxmLm1vZGVsLnRv cC5nZXQoJ2NvbHVtbnMnKTsKKyAgICAgICAgICAgICAgICB0aGlzLnN0b3BM aXN0ZW5pbmcodGFibGVDb2xzLCAncmVtb3ZlJyAsIHRoaXMucmVtb3ZlQ29s dW1uKTsKKyAgICAgICAgICAgICAgICB0aGlzLnN0b3BMaXN0ZW5pbmcodGFi bGVDb2xzLCAnY2hhbmdlOm5hbWUnICwgdGhpcy5yZXNldENvbE9wdGlvbnMp OworCisgICAgICAgICAgICAgICAgQmFja2Zvcm0uU2VsZWN0MkNvbnRyb2wu cHJvdG90eXBlLnJlbW92ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpOworCisg ICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgQmFja2Zv cm0uTm9kZUxpc3RCeU5hbWVDb250cm9sLnByb3RvdHlwZS5yZW1vdmUuYXBw bHkodGhpcywgYXJndW1lbnRzKTsKKyAgICAgICAgICAgICAgfQorICAgICAg ICAgICAgfQorICAgICAgICAgIH0pLAorICAgICAgICAgIHNlbGVjdDI6IHsK KyAgICAgICAgICAgIGFsbG93Q2xlYXI6IGZhbHNlLCB3aWR0aDogJ3N0eWxl JywKKyAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnU2VsZWN0IGNvbHVtbicK KyAgICAgICAgICB9LCBmaXJzdF9lbXB0eTogIV8uaXNVbmRlZmluZWQoc2Vs Zi5tb2RlbC5nZXQoJ29pZCcpKSwKKyAgICAgICAgICB2ZXJzaW9uX2NvbXBh dGlibGU6IHNlbGYuZmllbGQuZ2V0KCd2ZXJzaW9uX2NvbXBhdGlibGUnKSwK KyAgICAgICAgICBkaXNhYmxlZDogZnVuY3Rpb24obSkgeworICAgICAgICAg ICAgcmV0dXJuICFfLmlzVW5kZWZpbmVkKHNlbGYubW9kZWwuZ2V0KCdvaWQn KSk7CisgICAgICAgICAgfQorICAgICAgICB9LHsKKyAgICAgICAgICBpZDog J3JlZmVyZW5jZXMnLCBsYWJlbDonJywgdHlwZTogJ3RleHQnLCBjYWNoZV9s ZXZlbDogJ3NlcnZlcicsCisgICAgICAgICAgc2VsZWN0MjogeworICAgICAg ICAgICAgYWxsb3dDbGVhcjogZmFsc2UsIHdpZHRoOiAnc3R5bGUnLAorICAg ICAgICAgICAgcGxhY2Vob2xkZXI6ICdTZWxlY3QgZm9yZWlnbiB0YWJsZScs CisgICAgICAgICAgfSwgZmlyc3RfZW1wdHk6IHRydWUsCisgICAgICAgICAg Y29udHJvbDogQmFja2Zvcm0uTm9kZUxpc3RCeU5hbWVDb250cm9sLmV4dGVu ZCh7CisgICAgICAgICAgICBmb3JtYXR0ZXI6IEJhY2tmb3JtLkNvbnRyb2xG b3JtYXR0ZXIsCisgICAgICAgICAgICB0ZW1wbGF0ZTogaGVhZGVyU2VsZWN0 Q29udHJvbFRlbXBsYXRlCisgICAgICAgICAgICB9KSwKKyAgICAgICAgICB1 cmw6ICdhbGxfdGFibGVzJywgbm9kZTogJ3RhYmxlJywKKyAgICAgICAgICB2 ZXJzaW9uX2NvbXBhdGlibGU6IHNlbGYuZmllbGQuZ2V0KCd2ZXJzaW9uX2Nv bXBhdGlibGUnKSwKKyAgICAgICAgICBkaXNhYmxlZDogZnVuY3Rpb24obSkg eworICAgICAgICAgICAgcmV0dXJuICFfLmlzVW5kZWZpbmVkKHNlbGYubW9k ZWwuZ2V0KCdvaWQnKSk7CisgICAgICAgICAgfSwKKyAgICAgICAgICB0cmFu c2Zvcm06IGZ1bmN0aW9uKHJvd3MpIHsKKyAgICAgICAgICAgIHZhciByZXMg PSBbXTsKKyAgICAgICAgICAgIF8uZWFjaChyb3dzLCBmdW5jdGlvbihyKSB7 CisgICAgICAgICAgICAgIHJlcy5wdXNoKHsKKyAgICAgICAgICAgICAgICAn dmFsdWUnOiByLnZhbHVlLAorICAgICAgICAgICAgICAgICdpbWFnZSc6ICJp Y29uLXRhYmxlIiwKKyAgICAgICAgICAgICAgICAnbGFiZWwnOiByLmxhYmVs CisgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7CisgICAgICAg ICAgICByZXR1cm4gcmVzOworICAgICAgICAgIH0KKyAgICAgICAgfSx7Cisg ICAgICAgICAgaWQ6ICdyZWZlcmVuY2VkJywgbGFiZWw6JycsIHR5cGU6ICd0 ZXh0JywgY2FjaGVfbGV2ZWw6ICdzZXJ2ZXInLAorICAgICAgICAgIHRyYW5z Zm9ybTogZnVuY3Rpb24ocm93cykgeworICAgICAgICAgICAgdmFyIHJlcyA9 IFtdOworICAgICAgICAgICAgXy5lYWNoKHJvd3MsIGZ1bmN0aW9uKHIpIHsK KyAgICAgICAgICAgICAgcmVzLnB1c2goeworICAgICAgICAgICAgICAgICd2 YWx1ZSc6IHIubmFtZSwKKyAgICAgICAgICAgICAgICAnaW1hZ2UnOiAnaWNv bi1jb2x1bW4nLAorICAgICAgICAgICAgICAgICdsYWJlbCc6IHIubmFtZQor ICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAg ICAgcmV0dXJuIHJlczsKKyAgICAgICAgICB9LAorICAgICAgICAgIGNvbnRy b2w6IEJhY2tmb3JtLlNlbGVjdDJDb250cm9sLmV4dGVuZCh7CisgICAgICAg ICAgICBmb3JtYXR0ZXI6IEJhY2tmb3JtLkNvbnRyb2xGb3JtYXR0ZXIsCisg ICAgICAgICAgICB0ZW1wbGF0ZTogaGVhZGVyU2VsZWN0Q29udHJvbFRlbXBs YXRlLAorICAgICAgICAgICAgcmVuZGVyOiBmdW5jdGlvbigpIHsKKyAgICAg ICAgICAgICAgdmFyIHNlbGYgPSB0aGlzLAorICAgICAgICAgICAgICB1cmwg PSBzZWxmLmZpZWxkLmdldCgndXJsJykgfHwgc2VsZi5kZWZhdWx0cy51cmws CisgICAgICAgICAgICAgIG0gPSBzZWxmLm1vZGVsLAorICAgICAgICAgICAg ICB0aWQgPSBtLmdldCgncmVmZXJlbmNlcycpOworCisgICAgICAgICAgICAg IC8vIENsZWFyIGFueSBleGlzdGluZyB2YWx1ZSBiZWZvcmUgc2V0dGluZyBu ZXcgb3B0aW9ucy4KKyAgICAgICAgICAgICAgbS5zZXQoc2VsZi5maWVsZC5n ZXQoJ25hbWUnKSwgbnVsbCwge3NpbGVudDogdHJ1ZX0pOworCisgICAgICAg ICAgICAgIGlmICh1cmwgJiYgIV8uaXNVbmRlZmluZWQodGlkKSAmJiAhXy5p c051bGwodGlkKSAmJiB0aWQgIT0gJycpIHsKKyAgICAgICAgICAgICAgICB2 YXIgbm9kZSA9IHRoaXMuZmllbGQuZ2V0KCdzY2hlbWFfbm9kZScpLAorICAg ICAgICAgICAgICAgICAgICBub2RlX2luZm8gPSB0aGlzLmZpZWxkLmdldCgn bm9kZV9pbmZvJyksCisgICAgICAgICAgICAgICAgICAgIGZ1bGxfdXJsID0g bm9kZS5nZW5lcmF0ZV91cmwuYXBwbHkoCisgICAgICAgICAgICAgICAgICAg ICAgbm9kZSwgWworICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCwgdXJs LCB0aGlzLmZpZWxkLmdldCgnbm9kZV9kYXRhJyksCisgICAgICAgICAgICAg ICAgICAgICAgICB0aGlzLmZpZWxkLmdldCgndXJsX3dpdGhfaWQnKSB8fCBm YWxzZSwgbm9kZV9pbmZvCisgICAgICAgICAgICAgICAgICAgICAgXSksCisg ICAgICAgICAgICAgICAgICAgIGRhdGEgPSBbXTsKKworICAgICAgICAgICAg ICAgIGlmICh0aGlzLmZpZWxkLmdldCgndmVyc2lvbl9jb21wYXRpYmxlJykp IHsKKyAgICAgICAgICAgICAgICAgIG0udHJpZ2dlcigncGdhZG1pbjp2aWV3 OmZldGNoaW5nJywgbSwgc2VsZi5maWVsZCk7CisgICAgICAgICAgICAgICAg ICAkLmFqYXgoeworICAgICAgICAgICAgICAgICAgICBhc3luYzogZmFsc2Us CisgICAgICAgICAgICAgICAgICAgIGRhdGEgOiB7dGlkOnRpZH0sCisgICAg ICAgICAgICAgICAgICAgIHVybDogZnVsbF91cmwsCisgICAgICAgICAgICAg ICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uKHJlcykgeworICAgICAgICAgICAg ICAgICAgICAgIGRhdGEgPSByZXMuZGF0YTsKKyAgICAgICAgICAgICAgICAg ICAgfSwKKyAgICAgICAgICAgICAgICAgICAgZXJyb3I6IGZ1bmN0aW9uKCkg eworICAgICAgICAgICAgICAgICAgICAgIG0udHJpZ2dlcigncGdhZG1pbjp2 aWV3OmZldGNoOmVycm9yJywgbSwgc2VsZi5maWVsZCk7CisgICAgICAgICAg ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAg ICAgICAgICAgbS50cmlnZ2VyKCdwZ2FkbWluOnZpZXc6ZmV0Y2hlZCcsIG0s IHNlbGYuZmllbGQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg ICAgICAvKgorICAgICAgICAgICAgICAgICAqIFRyYW5zZm9ybSB0aGUgZGF0 YQorICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgIHRyYW5z Zm9ybSA9IHRoaXMuZmllbGQuZ2V0KCd0cmFuc2Zvcm0nKSB8fCBzZWxmLmRl ZmF1bHRzLnRyYW5zZm9ybTsKKyAgICAgICAgICAgICAgICBpZiAodHJhbnNm b3JtICYmIF8uaXNGdW5jdGlvbih0cmFuc2Zvcm0pKSB7CisgICAgICAgICAg ICAgICAgICAvLyBXZSB3aWxsIHRyYW5zZm9ybSB0aGUgZGF0YSBsYXRlciwg d2hlbiByZW5kZXJpbmcuCisgICAgICAgICAgICAgICAgICAvLyBJdCB3aWxs IGFsbG93IHVzIHRvIGdlbmVyYXRlIGRpZmZlcmVudCBkYXRhIGJhc2VkIG9u IHRoZQorICAgICAgICAgICAgICAgICAgLy8gZGVwZW5kZW5jaWVzLgorICAg ICAgICAgICAgICAgICAgc2VsZi5maWVsZC5zZXQoJ29wdGlvbnMnLCB0cmFu c2Zvcm0uYmluZChzZWxmLCBkYXRhKSk7CisgICAgICAgICAgICAgICAgfSBl bHNlIHsKKyAgICAgICAgICAgICAgICAgIHNlbGYuZmllbGQuc2V0KCdvcHRp b25zJywgZGF0YSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg ICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHNlbGYuZmllbGQuc2V0KCdv cHRpb25zJywgW10pOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg IEJhY2tmb3JtLlNlbGVjdDJDb250cm9sLnByb3RvdHlwZS5yZW5kZXIuYXBw bHkodGhpcywgYXJndW1lbnRzKTsKKyAgICAgICAgICAgICAgcmV0dXJuIHRo aXM7CisgICAgICAgICAgICB9CisgICAgICAgICAgfSksIHVybDogJ2dldF9j b2x1bW5zJywgZmlyc3RfZW1wdHk6IHRydWUsCisgICAgICAgICAgc2VsZWN0 MjogeworICAgICAgICAgICAgd2lkdGg6ICJzdHlsZSIsCisgICAgICAgICAg ICBwbGFjZWhvbGRlcjogJ1NlbGVjdCBjb2x1bW4nLAorICAgICAgICAgICAg dGVtcGxhdGVSZXN1bHQ6IGZvcm1hdE5vZGUsCisgICAgICAgICAgICB0ZW1w bGF0ZVNlbGVjdGlvbjogZm9ybWF0Tm9kZQorICAgICAgICAgIH0sCisgICAg ICAgICAgZGVwczpbJ3JlZmVyZW5jZXMnXSwgIG5vZGU6ICd0YWJsZScsCisg ICAgICAgICAgdmVyc2lvbl9jb21wYXRpYmxlOiBzZWxmLmZpZWxkLmdldCgn dmVyc2lvbl9jb21wYXRpYmxlJyksCisgICAgICAgICAgZGlzYWJsZWQ6IGZ1 bmN0aW9uKG0pIHsKKyAgICAgICAgICAgIHJldHVybiAhXy5pc1VuZGVmaW5l ZChzZWxmLm1vZGVsLmdldCgnb2lkJykpOworICAgICAgICAgIH0KKyAgICAg ICAgfV0sCisgICAgICAgIGhlYWRlckRlZmF1bHRzID0ge2xvY2FsX2NvbHVt bjogbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNl czogbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNl ZDpudWxsfSwKKyAgICAgICAgZ3JpZENvbHMgPSBbJ2xvY2FsX2NvbHVtbics ICdyZWZlcmVuY2VzJywgJ3JlZmVyZW5jZWQnXTsKKworICAgICAgaWYgKCgh c2VsZi5tb2RlbC5pc05ldygpICYmIF8uaXNVbmRlZmluZWQoc2VsZi5tb2Rl bC5oYW5kbGVyKSkgfHwKKyAgICAgICAgICAoXy5oYXMoc2VsZi5tb2RlbCwg J2hhbmRsZXInKSAmJgorICAgICAgICAgICFfLmlzVW5kZWZpbmVkKHNlbGYu bW9kZWwuaGFuZGxlcikgJiYKKyAgICAgICAgICAhXy5pc1VuZGVmaW5lZChz ZWxmLm1vZGVsLmdldCgnb2lkJykpKSkgeworICAgICAgICB2YXIgY29sdW1u ID0gc2VsZi5jb2xsZWN0aW9uLmZpcnN0KCk7CisgICAgICAgIGlmIChjb2x1 bW4pIHsKKyAgICAgICAgICBoZWFkZXJEZWZhdWx0c1sicmVmZXJlbmNlcyJd ID0gY29sdW1uLmdldCgicmVmZXJlbmNlcyIpOworICAgICAgICB9CisgICAg ICB9CisKKyAgICAgIHNlbGYuaGVhZGVyRGF0YSA9IG5ldyAoQmFja2JvbmUu TW9kZWwuZXh0ZW5kKHsKKyAgICAgICAgZGVmYXVsdHM6IGhlYWRlckRlZmF1 bHRzLAorICAgICAgICBzY2hlbWE6IGhlYWRlclNjaGVtYQorICAgICAgfSkp KHt9KTsKKworICAgICAgdmFyIGhlYWRlckdyb3VwcyA9IEJhY2tmb3JtLmdl bmVyYXRlVmlld1NjaGVtYSgKKyAgICAgICAgICBzZWxmLmZpZWxkLmdldCgn bm9kZV9pbmZvJyksIHNlbGYuaGVhZGVyRGF0YSwgJ2NyZWF0ZScsCisgICAg ICAgICAgbm9kZSwgc2VsZi5maWVsZC5nZXQoJ25vZGVfZGF0YScpCisgICAg ICAgICAgKSwKKyAgICAgICAgICBmaWVsZHMgPSBbXTsKKworICAgICAgXy5l YWNoKGhlYWRlckdyb3VwcywgZnVuY3Rpb24obykgeworICAgICAgICBmaWVs ZHMgPSBmaWVsZHMuY29uY2F0KG8uZmllbGRzKTsKKyAgICAgIH0pOworCisg ICAgICBzZWxmLmhlYWRlckZpZWxkcyA9IG5ldyBCYWNrZm9ybS5GaWVsZHMo ZmllbGRzKTsKKyAgICAgIHNlbGYuZ3JpZFNjaGVtYSA9IEJhY2tmb3JtLmdl bmVyYXRlR3JpZENvbHVtbnNGcm9tTW9kZWwoCisgICAgICAgICAgLy9udWxs LCBGb3JlaWduS2V5Q29sdW1uTW9kZWwsICdlZGl0JywgZ3JpZENvbHMKKyAg ICAgICAgICBzZWxmLmZpZWxkLmdldCgnbm9kZV9pbmZvJyksIHNlbGYuZmll bGQuZ2V0KCdtb2RlbCcpLCAnZWRpdCcsCisgICAgICAgICAgZ3JpZENvbHMs IHNlbGYuZmllbGQuZ2V0KCdzY2hlbWFfbm9kZScpCisgICAgICAgICAgKTsK KworICAgICAgc2VsZi5jb250cm9scyA9IFtdOworICAgICAgc2VsZi5saXN0 ZW5UbyhzZWxmLmhlYWRlckRhdGEsICJjaGFuZ2UiLCBzZWxmLmhlYWRlckRh dGFDaGFuZ2VkKTsKKyAgICAgIHNlbGYubGlzdGVuVG8oc2VsZi5oZWFkZXJE YXRhLCAic2VsZWN0MiIsIHNlbGYuaGVhZGVyRGF0YUNoYW5nZWQpOworICAg ICAgc2VsZi5saXN0ZW5UbyhzZWxmLmNvbGxlY3Rpb24sICJhZGQiLCBzZWxm Lm9uQWRkb3JSZW1vdmVDb2x1bW5zKTsKKyAgICAgIHNlbGYubGlzdGVuVG8o c2VsZi5jb2xsZWN0aW9uLCAicmVtb3ZlIiwgc2VsZi5vbkFkZG9yUmVtb3Zl Q29sdW1ucyk7CisgICAgfSwKKworICAgIGdlbmVyYXRlSGVhZGVyOiBmdW5j dGlvbihkYXRhKSB7CisgICAgICB2YXIgaGVhZGVyID0gWworICAgICAgICAn PGRpdiBjbGFzcz0ic3Vibm9kZS1oZWFkZXItZm9ybSI+JywKKyAgICAgICAg JyA8ZGl2IGNsYXNzPSJjb250YWluZXItZmx1aWQiPicsCisgICAgICAgICcg IDxkaXYgY2xhc3M9InJvdyI+JywKKyAgICAgICAgJyAgIDxkaXYgY2xhc3M9 ImNvbC1tZC00Ij4nLAorICAgICAgICAnICAgIDxsYWJlbCBjbGFzcz0iY29u dHJvbC1sYWJlbCI+PCUtY29sdW1uX2xhYmVsJT48L2xhYmVsPicsCisgICAg ICAgICcgICA8L2Rpdj4nLAorICAgICAgICAnICAgPGRpdiBjbGFzcz0iY29s LW1kLTQiIGhlYWRlcj0ibG9jYWxfY29sdW1uIj48L2Rpdj4nLAorICAgICAg ICAnICAgPGRpdiBjbGFzcz0iY29sLW1kLTQiPicsCisgICAgICAgICcgICAg IDxidXR0b24gY2xhc3M9ImJ0bi1zbSBidG4tZGVmYXVsdCBhZGQiIDwlPWNh bkFkZCA/ICIiIDogImRpc2FibGVkPVwnZGlzYWJsZWRcJyIlPiA+PCUtYWRk X2xhYmVsJT48L2J1dHR0b24+JywKKyAgICAgICAgJyAgIDwvZGl2PicsCisg ICAgICAgICcgIDwvZGl2PicsCisgICAgICAgICcgIDxkaXYgY2xhc3M9InJv dyI+JywKKyAgICAgICAgJyAgIDxkaXYgY2xhc3M9ImNvbC1tZC00Ij4nLAor ICAgICAgICAnICAgIDxsYWJlbCBjbGFzcz0iY29udHJvbC1sYWJlbCI+PCUt cmVmZXJlbmNlc19sYWJlbCU+PC9sYWJlbD4nLAorICAgICAgICAnICAgPC9k aXY+JywKKyAgICAgICAgJyAgIDxkaXYgY2xhc3M9ImNvbC1tZC00IiBoZWFk ZXI9InJlZmVyZW5jZXMiPjwvZGl2PicsCisgICAgICAgICcgIDwvZGl2Pics CisgICAgICAgICcgIDxkaXYgY2xhc3M9InJvdyI+JywKKyAgICAgICAgJyAg IDxkaXYgY2xhc3M9ImNvbC1tZC00Ij4nLAorICAgICAgICAnICAgIDxsYWJl bCBjbGFzcz0iY29udHJvbC1sYWJlbCI+PCUtcmVmZXJlbmNlZF9sYWJlbCU+ PC9sYWJlbD4nLAorICAgICAgICAnICAgPC9kaXY+JywKKyAgICAgICAgJyAg IDxkaXYgY2xhc3M9ImNvbC1tZC00IiBoZWFkZXI9InJlZmVyZW5jZWQiPjwv ZGl2PicsCisgICAgICAgICcgIDwvZGl2PicsCisgICAgICAgICcgPC9kaXY+ JywKKyAgICAgICAgJzwvZGl2PicsXS5qb2luKCJcbiIpCisKKyAgICAgIF8u ZXh0ZW5kKGRhdGEsIHsKKyAgICAgICAgY29sdW1uX2xhYmVsOiAne3sgXygn TG9jYWwgY29sdW1uJyl9fScsCisgICAgICAgIGFkZF9sYWJlbDogJ3t7IF8o J0FERCcpfX0nLAorICAgICAgICByZWZlcmVuY2VzX2xhYmVsOiAne3sgXygn UmVmZXJlbmNlcycpfX0nLAorICAgICAgICByZWZlcmVuY2VkX2xhYmVsOiAn e3sgXygnUmVmZXJlbmNpbmcnKX19JworICAgICAgfSk7CisKKyAgICAgIHZh ciBzZWxmID0gdGhpcywKKyAgICAgICAgICBoZWFkZXJUbXBsID0gXy50ZW1w bGF0ZShoZWFkZXIpLAorICAgICAgICAgICRoZWFkZXIgPSAkKGhlYWRlclRt cGwoZGF0YSkpLAorICAgICAgICAgIGNvbnRyb2xzID0gdGhpcy5jb250cm9s czsKKworICAgICAgdGhpcy5oZWFkZXJGaWVsZHMuZWFjaChmdW5jdGlvbihm aWVsZCkgeworICAgICAgICB2YXIgY29udHJvbCA9IG5ldyAoZmllbGQuZ2V0 KCJjb250cm9sIikpKHsKKyAgICAgICAgICBmaWVsZDogZmllbGQsCisgICAg ICAgICAgbW9kZWw6IHNlbGYuaGVhZGVyRGF0YQorICAgICAgICB9KTsKKwor ICAgICAgICAkaGVhZGVyLmZpbmQoJ2RpdltoZWFkZXI9IicgKyBmaWVsZC5n ZXQoJ25hbWUnKSArICciXScpLmFwcGVuZCgKKyAgICAgICAgICBjb250cm9s LnJlbmRlcigpLiRlbAorICAgICAgICApOworCisgICAgICAgIGNvbnRyb2xz LnB1c2goY29udHJvbCk7CisgICAgICB9KTsKKworICAgICAgLy8gV2Ugc2hv dWxkIG5vdCBzaG93IGFkZCBidXQgaW4gcHJvcGVydGllcyBtb2RlCisgICAg ICBpZiAoZGF0YS5tb2RlID09ICdwcm9wZXJ0aWVzJykgeworICAgICAgICAk aGVhZGVyLmZpbmQoImJ1dHRvbi5hZGQiKS5yZW1vdmUoKTsKKyAgICAgIH0K KworICAgICAgc2VsZi4kaGVhZGVyID0gJGhlYWRlcjsKKworICAgICAgcmV0 dXJuICRoZWFkZXI7CisgICAgfSwKKworICAgIGV2ZW50czogXy5leHRlbmQo CisgICAgICAgICAgICAgICAge30sIEJhY2tmb3JtLlVuaXF1ZUNvbENvbGxl Y3Rpb25Db250cm9sLnByb3RvdHlwZS5ldmVudHMsCisgICAgICAgICAgICAg ICAgeydjbGljayBidXR0b24uYWRkJzogJ2FkZENvbHVtbnMnfQorICAgICAg ICAgICAgICAgICksCisKKyAgICBzaG93R3JpZENvbnRyb2w6IGZ1bmN0aW9u KGRhdGEpIHsKKworICAgICAgdmFyIHNlbGYgPSB0aGlzLAorICAgICAgICAg IHRpdGxlVG1wbCA9IF8udGVtcGxhdGUoWworICAgICAgICAgICAgIjxkaXYg Y2xhc3M9J3N1Ym5vZGUtaGVhZGVyJz4iLAorICAgICAgICAgICAgIjxsYWJl bCBjbGFzcz0nY29udHJvbC1sYWJlbCc+PCUtbGFiZWwlPjwvbGFiZWw+IiwK KyAgICAgICAgICAgICI8L2Rpdj4iXS5qb2luKCJcbiIpKSwKKyAgICAgICAg ICAkZ3JpZEJvZHkgPQorICAgICAgICAgICAgJCgiPGRpdiBjbGFzcz0ncGdh ZG1pbi1jb250cm9sLWdyb3VwIGJhY2tncmlkIGZvcm0tZ3JvdXAgY29sLXhz LTEyIG9iamVjdCBzdWJub2RlJz48L2Rpdj4iKS5hcHBlbmQoCisgICAgICAg ICAgICAgIHRpdGxlVG1wbCh7bGFiZWw6IGRhdGEubGFiZWx9KQorICAgICAg ICAgICAgKTsKKworICAgICAgJGdyaWRCb2R5LmFwcGVuZChzZWxmLmdlbmVy YXRlSGVhZGVyKGRhdGEpKTsKKworICAgICAgdmFyIGdyaWRTY2hlbWEgPSBf LmNsb25lKHRoaXMuZ3JpZFNjaGVtYSk7CisKKyAgICAgIC8vIEluc2VydCBE ZWxldGUgQ2VsbCBpbnRvIEdyaWQKKyAgICAgIGlmIChkYXRhLmRpc2FibGVk ID09IGZhbHNlICYmIGRhdGEuY2FuRGVsZXRlKSB7CisgICAgICAgICAgZ3Jp ZFNjaGVtYS5jb2x1bW5zLnVuc2hpZnQoeworICAgICAgICAgICAgbmFtZTog InBnLWJhY2tmb3JtLWRlbGV0ZSIsIGxhYmVsOiAiIiwKKyAgICAgICAgICAg IGNlbGw6IEJhY2tncmlkLkV4dGVuc2lvbi5EZWxldGVDZWxsLAorICAgICAg ICAgICAgZWRpdGFibGU6IGZhbHNlLCBjZWxsX3ByaW9yaXR5OiAtMQorICAg ICAgICAgIH0pOworICAgICAgfQorCisgICAgICAvLyBJbml0aWFsaXplIGEg bmV3IEdyaWQgaW5zdGFuY2UKKyAgICAgIHZhciBncmlkID0gc2VsZi5ncmlk ID0gbmV3IEJhY2tncmlkLkdyaWQoeworICAgICAgICBjb2x1bW5zOiBncmlk U2NoZW1hLmNvbHVtbnMsCisgICAgICAgIGNvbGxlY3Rpb246IHNlbGYuY29s bGVjdGlvbiwKKyAgICAgICAgY2xhc3NOYW1lOiAiYmFja2dyaWQgdGFibGUt Ym9yZGVyZWQiCisgICAgICB9KTsKKyAgICAgIHNlbGYuJGdyaWQgPSBncmlk LnJlbmRlcigpLiRlbDsKKworICAgICAgJGdyaWRCb2R5LmFwcGVuZChzZWxm LiRncmlkKTsKKworICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAg ICAgICAgc2VsZi5oZWFkZXJEYXRhLnNldCh7CisgICAgICAgICAgJ2xvY2Fs X2NvbHVtbic6CisgICAgICAgICAgc2VsZi4kaGVhZGVyLmZpbmQoCisgICAg ICAgICAgICAnZGl2W2hlYWRlcj0ibG9jYWxfY29sdW1uIl0gc2VsZWN0IG9w dGlvbjpmaXJzdCcKKyAgICAgICAgICAgICkudmFsKCksCisgICAgICAgICAg ICAncmVmZXJlbmNlZCc6CisgICAgICAgICAgc2VsZi4kaGVhZGVyLmZpbmQo CisgICAgICAgICAgICAnZGl2W2hlYWRlcj0icmVmZXJlbmNlZCJdIHNlbGVj dCBvcHRpb246Zmlyc3QnCisgICAgICAgICAgICApLnZhbCgpLAorICAgICAg ICAgICAgJ3JlZmVyZW5jZXMnOgorICAgICAgICAgIHNlbGYuJGhlYWRlci5m aW5kKAorICAgICAgICAgICAgJ2RpdltoZWFkZXI9InJlZmVyZW5jZXMiXSBz ZWxlY3Qgb3B0aW9uOmZpcnN0JworICAgICAgICAgICAgKS52YWwoKQorICAg ICAgICAgICAgfSwge3NpbGVudDp0cnVlfQorICAgICAgICAgICk7CisgICAg ICB9LCAxMCk7CisKKyAgICAgIC8vIFJlbmRlciBub2RlIGdyaWQKKyAgICAg IHJldHVybiAkZ3JpZEJvZHk7CisgICAgfSwKKworICAgIGhlYWRlckRhdGFD aGFuZ2VkOiBmdW5jdGlvbigpIHsKKyAgICAgIHZhciBzZWxmID0gdGhpcywg dmFsLAorICAgICAgICAgIGRhdGEgPSB0aGlzLmhlYWRlckRhdGEudG9KU09O KCksCisgICAgICAgICAgaW5TZWxlY3RlZCA9IGZhbHNlLAorICAgICAgICAg IGNoZWNrVmFycyA9IFsnbG9jYWxfY29sdW1uJywgJ3JlZmVyZW5jZWQnXTsK KworICAgICAgaWYgKCFzZWxmLiRoZWFkZXIpIHsKKyAgICAgICAgcmV0dXJu OworICAgICAgfQorCisgICAgICBpZiAoc2VsZi5jb250cm9sX2RhdGEuY2Fu QWRkKSB7CisgICAgICAgIHNlbGYuY29sbGVjdGlvbi5lYWNoKGZ1bmN0aW9u KG0pIHsKKyAgICAgICAgICBpZiAoIWluU2VsZWN0ZWQpIHsKKyAgICAgICAg ICAgIF8uZWFjaChjaGVja1ZhcnMsIGZ1bmN0aW9uKHYpIHsKKyAgICAgICAg ICAgICAgaWYgKCFpblNlbGVjdGVkKSB7CisgICAgICAgICAgICAgICAgdmFs ID0gbS5nZXQodik7CisgICAgICAgICAgICAgICAgaW5TZWxlY3RlZCA9ICgo CisgICAgICAgICAgICAgICAgICAoXy5pc1VuZGVmaW5lZCh2YWwpIHx8IF8u aXNOdWxsKHZhbCkpICYmCisgICAgICAgICAgICAgICAgICAoXy5pc1VuZGVm aW5lZChkYXRhW3ZdKSB8fCBfLmlzTnVsbChkYXRhW3ZdKSkKKyAgICAgICAg ICAgICAgICAgICkgfHwKKyAgICAgICAgICAgICAgICAgICh2YWwgPT0gZGF0 YVt2XSkpOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9KTsKKyAg ICAgICAgICB9CisgICAgICAgIH0pOworICAgICAgfQorICAgICAgZWxzZSB7 CisgICAgICAgIGluU2VsZWN0ZWQgPSB0cnVlOworICAgICAgfQorCisgICAg ICBzZWxmLiRoZWFkZXIuZmluZCgnYnV0dG9uLmFkZCcpLnByb3AoJ2Rpc2Fi bGVkJywgaW5TZWxlY3RlZCk7CisgICAgfSwKKworICAgIGFkZENvbHVtbnM6 IGZ1bmN0aW9uKGV2KSB7CisgICAgICBldi5wcmV2ZW50RGVmYXVsdCgpOwor ICAgICAgdmFyIHNlbGYgPSB0aGlzLAorICAgICAgICAgIGxvY2FsX2NvbHVt biA9IHNlbGYuaGVhZGVyRGF0YS5nZXQoJ2xvY2FsX2NvbHVtbicpLAorICAg ICAgICAgIHJlZmVyZW5jZWQgPSBzZWxmLmhlYWRlckRhdGEuZ2V0KCdyZWZl cmVuY2VkJyk7CisKKyAgICAgIGlmICghbG9jYWxfY29sdW1uIHx8IGxvY2Fs X2NvbHVtbiA9PSAnJyB8fAorICAgICAgICAgICFyZWZlcmVuY2VkIHx8IHJl ZmVyZW5jZWQgID09JycpIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg ICAgfQorCisgICAgICB2YXIgbSA9IG5ldyAoc2VsZi5maWVsZC5nZXQoJ21v ZGVsJykpKAorICAgICAgICAgICAgICAgIHNlbGYuaGVhZGVyRGF0YS50b0pT T04oKSksCisgICAgICAgICAgY29sbCA9IHNlbGYubW9kZWwuZ2V0KHNlbGYu ZmllbGQuZ2V0KCduYW1lJykpOworCisgICAgICBjb2xsLmFkZChtKTsKKwor ICAgICAgdmFyIGlkeCA9IGNvbGwuaW5kZXhPZihtKTsKKworICAgICAgLy8g aWR4IG1heSBub3QgYmUgYWx3YXlzID4gLTEgYmVjYXVzZSBvdXIgVW5pcXVl Q29sQ29sbGVjdGlvbiBtYXkKKyAgICAgIC8vIHJlbW92ZSAnbScgaWYgZHVw bGljYXRlIHZhbHVlIGZvdW5kLgorICAgICAgaWYgKGlkeCA+IC0xKSB7Cisg ICAgICAgIHNlbGYuJGdyaWQuZmluZCgnLm5ldycpLnJlbW92ZUNsYXNzKCdu ZXcnKTsKKworICAgICAgICB2YXIgbmV3Um93ID0gc2VsZi5ncmlkLmJvZHku cm93c1tpZHhdLiRlbDsKKworICAgICAgICBuZXdSb3cuYWRkQ2xhc3MoIm5l dyIpOworICAgICAgICAkKG5ld1JvdykucGdNYWtlVmlzaWJsZSgnYmFja2Zv cm0tdGFiJyk7CisgICAgICB9IGVsc2UgeworICAgICAgICBkZWxldGUgbTsK KyAgICAgIH0KKworICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0sCisKKyAg ICBvbkFkZG9yUmVtb3ZlQ29sdW1uczogZnVuY3Rpb24oKSB7CisgICAgICB2 YXIgc2VsZiA9IHRoaXM7CisKKyAgICAgIC8vIFdhaXQgZm9yIGNvbGxlY3Rp b24gdG8gYmUgdXBkYXRlZCBiZWZvcmUgY2hlY2tpbmcgZm9yIHRoZSBidXR0 b24gdG8gYmUKKyAgICAgIC8vIGVuYWJsZWQsIG9yIG5vdC4KKyAgICAgIHNl dFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgIGlmIChzZWxmLmNvbGxl Y3Rpb24ubGVuZ3RoID4gMCkgeworICAgICAgICAgIHNlbGYuJGhlYWRlci5m aW5kKAorICAgICAgICAgICAgJ2RpdltoZWFkZXI9InJlZmVyZW5jZXMiXSBz ZWxlY3QnCisgICAgICAgICAgICApLnByb3AoJ2Rpc2FibGVkJywgdHJ1ZSk7 CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgc2VsZi4kaGVhZGVyLmZp bmQoCisgICAgICAgICAgICAnZGl2W2hlYWRlcj0icmVmZXJlbmNlcyJdIHNl bGVjdCcKKyAgICAgICAgICAgICkucHJvcCgnZGlzYWJsZWQnLCBmYWxzZSk7 CisgICAgICAgIH0KKworICAgICAgICBzZWxmLmNvbGxlY3Rpb24udHJpZ2dl cigncGdhZG1pbjpjb2x1bW5zOnVwZGF0ZWQnLCBzZWxmLmNvbGxlY3Rpb24p OworCisgICAgICAgIHNlbGYuaGVhZGVyRGF0YUNoYW5nZWQoKTsKKworICAg ICAgICBpZiAoKCFfLmhhcyhzZWxmLm1vZGVsLCAnaGFuZGxlcicpIHx8IChf LmhhcyhzZWxmLm1vZGVsLCAnaGFuZGxlcicpICYmCisgICAgICAgICAgICAg IF8uaXNVbmRlZmluZWQoc2VsZi5tb2RlbC5oYW5kbGVyKSkpIHx8CisgICAg ICAgICAgICAoXy5oYXMoc2VsZi5tb2RlbCwgJ2hhbmRsZXInKSAmJiAhXy5p c1VuZGVmaW5lZChzZWxmLm1vZGVsLmhhbmRsZXIpICYmCisgICAgICAgICAg ICAhXy5pc1VuZGVmaW5lZChzZWxmLm1vZGVsLmhhbmRsZXIuZ2V0KCdvaWQn KSkpKSB7CisgICAgICAgICAgc2VsZi5nZXRDb3ZlcmluZ0luZGV4KCk7Cisg ICAgICAgIH0KKworICAgICAgfSwgMTApOworICAgIH0sCisKKyAgICBnZXRD b3ZlcmluZ0luZGV4OiBmdW5jdGlvbigpIHsKKworICAgICAgdmFyIHNlbGYg PSB0aGlzLAorICAgICAgICAgIHVybCA9ICdnZXRfY292ZXJpbmdpbmRleCcs CisgICAgICAgICAgbSA9IHNlbGYubW9kZWwKKyAgICAgICAgICBjb2xzID0g W10sCisgICAgICAgICAgY292ZXJpbmdpbmRleCA9IG51bGw7CisKKyAgICAg ICAgICBzZWxmLmNvbGxlY3Rpb24uZWFjaChmdW5jdGlvbihtKXsKKyAgICAg ICAgICAgIGNvbHMucHVzaChtLmdldCgnbG9jYWxfY29sdW1uJykpOworICAg ICAgICAgIH0pCisKKyAgICAgICAgICBpZiAoY29scy5sZW5ndGggPiAwKSB7 CisgICAgICAgICAgICB2YXIgbm9kZSA9IHRoaXMuZmllbGQuZ2V0KCdzY2hl bWFfbm9kZScpLAorICAgICAgICAgICAgICBub2RlX2luZm8gPSB0aGlzLmZp ZWxkLmdldCgnbm9kZV9pbmZvJyksCisgICAgICAgICAgICAgIGZ1bGxfdXJs ID0gbm9kZS5nZW5lcmF0ZV91cmwuYXBwbHkoCisgICAgICAgICAgICAgICAg bm9kZSwgWworICAgICAgICAgICAgICAgICAgbnVsbCwgdXJsLCB0aGlzLmZp ZWxkLmdldCgnbm9kZV9kYXRhJyksCisgICAgICAgICAgICAgICAgICB0aGlz LmZpZWxkLmdldCgndXJsX3dpdGhfaWQnKSB8fCBmYWxzZSwgbm9kZV9pbmZv CisgICAgICAgICAgICAgICAgXSk7CisKKyAgICAgICAgICAgIGlmICh0aGlz LmZpZWxkLmdldCgndmVyc2lvbl9jb21wYXRpYmxlJykpIHsKKyAgICAgICAg ICAgICAgbS50cmlnZ2VyKCdwZ2FkbWluOnZpZXc6ZmV0Y2hpbmcnLCBtLCBz ZWxmLmZpZWxkKTsKKyAgICAgICAgICAgICAgJC5hamF4KHsKKyAgICAgICAg ICAgICAgICBhc3luYzogZmFsc2UsCisgICAgICAgICAgICAgICAgZGF0YSA6 IHtjb2xzOkpTT04uc3RyaW5naWZ5KGNvbHMpfSwKKyAgICAgICAgICAgICAg ICB1cmw6IGZ1bGxfdXJsLAorICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1 bmN0aW9uKHJlcykgeworICAgICAgICAgICAgICAgICAgY292ZXJpbmdpbmRl eCA9IHJlcy5kYXRhOworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAg ICAgICAgZXJyb3I6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAg bS50cmlnZ2VyKCdwZ2FkbWluOnZpZXc6ZmV0Y2g6ZXJyb3InLCBtLCBzZWxm LmZpZWxkKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0p OworICAgICAgICAgICAgICBtLnRyaWdnZXIoJ3BnYWRtaW46dmlldzpmZXRj aGVkJywgbSwgc2VsZi5maWVsZCk7CisgICAgICAgICAgICB9CisgICAgICAg ICAgfQorCisgICAgICAgICAgaWYgKGNvdmVyaW5naW5kZXgpIHsKKyAgICAg ICAgICAgIG0uc2V0KCdoYXNpbmRleCcsIHRydWUpOworICAgICAgICAgICAg bS5zZXQoJ2F1dG9pbmRleCcsIGZhbHNlKTsKKyAgICAgICAgICAgIG0uc2V0 KCdjb3ZlcmluZ2luZGV4JywgY292ZXJpbmdpbmRleCk7CisgICAgICAgICAg fSBlbHNlIHsKKyAgICAgICAgICAgIG0uc2V0KCdjb3ZlcmluZ2luZGV4Jywg bnVsbCk7CisgICAgICAgICAgICBtLnNldCgnYXV0b2luZGV4JywgdHJ1ZSk7 CisgICAgICAgICAgICBtLnNldCgnaGFzaW5kZXgnLCBmYWxzZSk7CisgICAg ICAgICAgfQorICAgIH0sCisKKyAgICByZW1vdmU6IGZ1bmN0aW9uKCkgewor ICAgICAgLyoKKyAgICAgICAqIFN0b3AgbGlzdGVuaW5nIHRoZSBldmVudHMg cmVnaXN0ZXJlZCBieSB0aGlzIGNvbnRyb2wuCisgICAgICAgKi8KKyAgICAg IHRoaXMuc3RvcExpc3RlbmluZyh0aGlzLmhlYWRlckRhdGEsICJjaGFuZ2Ui LCB0aGlzLmhlYWRlckRhdGFDaGFuZ2VkKTsKKyAgICAgIHRoaXMubGlzdGVu VG8odGhpcy5oZWFkZXJEYXRhLCAic2VsZWN0MiIsIHRoaXMuaGVhZGVyRGF0 YUNoYW5nZWQpOworICAgICAgdGhpcy5saXN0ZW5Ubyh0aGlzLmNvbGxlY3Rp b24sICJyZW1vdmUiLCB0aGlzLm9uUmVtb3ZlVmFyaWFibGUpOworICAgICAg Ly8gUmVtb3ZlIGhlYWRlciBjb250cm9scy4KKyAgICAgIF8uZWFjaCh0aGlz LmNvbnRyb2xzLCBmdW5jdGlvbihjb250cm9scykgeworICAgICAgICBjb250 cm9scy5yZW1vdmUoKTsKKyAgICAgIH0pOworCisgICAgICBGb3JlaWduS2V5 Q29sdW1uQ29udHJvbC5fX3N1cGVyX18ucmVtb3ZlLmFwcGx5KHRoaXMsIGFy Z3VtZW50cyk7CisKKyAgICAgIC8vIFJlbW92ZSB0aGUgaGVhZGVyIG1vZGVs CisgICAgICBkZWxldGUgKHRoaXMuaGVhZGVyRGF0YSk7CisKKyAgICB9Cisg IH0pOworCisgIC8vIEV4dGVuZCB0aGUgYnJvd3NlcidzIG5vZGUgY2xhc3Mg Zm9yIGZvcmVpZ24ga2V5IG5vZGUKKyAgaWYgKCFwZ0Jyb3dzZXIuTm9kZXNb J2ZvcmVpZ25fa2V5J10pIHsKKyAgICBwZ0FkbWluLkJyb3dzZXIuTm9kZXNb J2ZvcmVpZ25fa2V5J10gPSBwZ0Jyb3dzZXIuTm9kZS5leHRlbmQoeworICAg ICAgdHlwZTogJ2ZvcmVpZ25fa2V5JywKKyAgICAgIGxhYmVsOiAne3sgXygn Rm9yZWlnbiBrZXknKSB9fScsCisgICAgICBjb2xsZWN0aW9uX3R5cGU6ICdj b2xsLWNvbnN0cmFpbnRzJywKKyAgICAgIHNxbEFsdGVySGVscDogJ2RkbC1h bHRlci5odG1sJywKKyAgICAgIHNxbENyZWF0ZUhlbHA6ICdkZGwtY29uc3Ry YWludHMuaHRtbCcsCisgICAgICBoYXNTUUw6IHRydWUsCisgICAgICBoYXNE ZXBlbmRzOiBmYWxzZSwKKyAgICAgIHBhcmVudF90eXBlOiAndGFibGUnLAor ICAgICAgY2FuRHJvcDogdHJ1ZSwKKyAgICAgIGNhbkRyb3BDYXNjYWRlOiB0 cnVlLAorICAgICAgaGFzRGVwZW5kczogdHJ1ZSwKKyAgICAgIEluaXQ6IGZ1 bmN0aW9uKCkgeworICAgICAgICAvKiBBdm9pZCBtdWx0aXBsZSByZWdpc3Ry YXRpb24gb2YgbWVudXMgKi8KKyAgICAgICAgaWYgKHRoaXMuaW5pdGlhbGl6 ZWQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5pbml0 aWFsaXplZCA9IHRydWU7CisKKyAgICAgICAgcGdCcm93c2VyLmFkZF9tZW51 cyhbeworICAgICAgICAgIG5hbWU6ICdjcmVhdGVfZm9yZWlnbl9rZXlfb25f Y29sbCcsIG5vZGU6ICdjb2xsLWNvbnN0cmFpbnRzJywgbW9kdWxlOiB0aGlz LAorICAgICAgICAgIGFwcGxpZXM6IFsnb2JqZWN0JywgJ2NvbnRleHQnXSwg Y2FsbGJhY2s6ICdzaG93X29ial9wcm9wZXJ0aWVzJywKKyAgICAgICAgICBj YXRlZ29yeTogJ2NyZWF0ZScsIHByaW9yaXR5OiA0LCBsYWJlbDogJ3t7IF8o J0ZvcmVpZ24ga2V5Li4uJykgfX0nLAorICAgICAgICAgIGljb246ICd3Y1Rh Ykljb24gaWNvbi1mb3JlaWduX2tleScsIGRhdGE6IHthY3Rpb246ICdjcmVh dGUnLCBjaGVjazogdHJ1ZX0sCisgICAgICAgICAgZW5hYmxlOiAnY2FuQ3Jl YXRlJworICAgICAgICB9LHsKKyAgICAgICAgICBuYW1lOiAndmFsaWRhdGVf Zm9yZWlnbl9rZXknLCBub2RlOiAnZm9yZWlnbl9rZXknLCBtb2R1bGU6IHRo aXMsCisgICAgICAgICAgYXBwbGllczogWydvYmplY3QnLCAnY29udGV4dCdd LCBjYWxsYmFjazogJ3ZhbGlkYXRlX2ZvcmVpZ25fa2V5JywKKyAgICAgICAg ICBjYXRlZ29yeTogJ3ZhbGlkYXRlJywgcHJpb3JpdHk6IDQsIGxhYmVsOiAn e3sgXygnVmFsaWRhdGUgZm9yZWlnbiBrZXknKSB9fScsCisgICAgICAgICAg aWNvbjogJ2ZhIGZhLWxpbmsnLCBlbmFibGUgOiAnaXNfbm90X3ZhbGlkJwor ICAgICAgICB9CisgICAgICAgIF0pOworICAgICAgfSwKKyAgICAgIGlzX25v dF92YWxpZDogZnVuY3Rpb24obm9kZSkgeworICAgICAgICByZXR1cm4gKG5v ZGUgJiYgIW5vZGUudmFsaWQpOworICAgICAgfSwKKyAgICAgIGNhbGxiYWNr czogeworICAgICAgICB2YWxpZGF0ZV9mb3JlaWduX2tleTogZnVuY3Rpb24o YXJncykgeworICAgICAgICAgIHZhciBpbnB1dCA9IGFyZ3MgfHwge307Cisg ICAgICAgICAgb2JqID0gdGhpcywKKyAgICAgICAgICB0ID0gcGdCcm93c2Vy LnRyZWUsCisgICAgICAgICAgaSA9IGlucHV0Lml0ZW0gfHwgdC5zZWxlY3Rl ZCgpLAorICAgICAgICAgIGQgPSBpICYmIGkubGVuZ3RoID09IDEgPyB0Lml0 ZW1EYXRhKGkpIDogdW5kZWZpbmVkOworCisgICAgICAgICAgaWYgKCFkKSB7 CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgfQorICAg ICAgICAgIHZhciBkYXRhID0gZDsKKyAgICAgICAgICAkLmFqYXgoeworICAg ICAgICAgICAgdXJsOiBvYmouZ2VuZXJhdGVfdXJsKGksICd2YWxpZGF0ZScs IGQsIHRydWUpLAorICAgICAgICAgICAgdHlwZTonR0VUJywKKyAgICAgICAg ICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uKHJlcykgeworICAgICAgICAgICAgICBp ZiAocmVzLnN1Y2Nlc3MgPT0gMSkgeworICAgICAgICAgICAgICAgIEFsZXJ0 aWZ5LnN1Y2Nlc3MoInt7IF8oJyIgKyByZXMuaW5mbyArICInKSB9fSIpOwor ICAgICAgICAgICAgICAgIHQucmVtb3ZlSWNvbihpKTsKKyAgICAgICAgICAg ICAgICBkYXRhLnZhbGlkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBkYXRh Lmljb24gPSAnaWNvbi1mb3JlaWduX2tleSc7CisgICAgICAgICAgICAgICAg dC5hZGRJY29uKGksIHtpY29uOiBkYXRhLmljb259KTsKKyAgICAgICAgICAg ICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge3QuZGVzZWxlY3QoaSk7fSwg MTApOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7 dC5zZWxlY3QoaSk7fSwgMTAwKTsKKyAgICAgICAgICAgICAgfQorICAgICAg ICAgICAgfSwKKyAgICAgICAgICAgIGVycm9yOiBmdW5jdGlvbih4aHIsIHN0 YXR1cywgZXJyb3IpIHsKKyAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAg ICAgICAgICB2YXIgZXJyID0gJC5wYXJzZUpTT04oeGhyLnJlc3BvbnNlVGV4 dCk7CisgICAgICAgICAgICAgICAgaWYgKGVyci5zdWNjZXNzID09IDApIHsK KyAgICAgICAgICAgICAgICAgIG1zZyA9IFMoJ3t7IF8oJyArIGVyci5lcnJv cm1zZyArICcpfX0nKS52YWx1ZSgpOworICAgICAgICAgICAgICAgICAgQWxl cnRpZnkuZXJyb3IoInt7IF8oJyIgKyBlcnIuZXJyb3Jtc2cgKyAiJykgfX0i KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0gY2F0Y2gg KGUpIHt9CisgICAgICAgICAgICAgIHQudW5sb2FkKGkpOworICAgICAgICAg ICAgfQorICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICByZXR1cm4gZmFs c2U7CisgICAgICAgIH0KKyAgICAgIH0sCisgICAgICAvLyBEZWZpbmUgdGhl IG1vZGVsIGZvciBmb3JlaWduIGtleSBub2RlCisgICAgICBtb2RlbDogcGdB ZG1pbi5Ccm93c2VyLk5vZGUuTW9kZWwuZXh0ZW5kKHsKKyAgICAgICAgZGVm YXVsdHM6IHsKKyAgICAgICAgICBuYW1lOiB1bmRlZmluZWQsCisgICAgICAg ICAgb2lkOiB1bmRlZmluZWQsCisgICAgICAgICAgY29tbWVudDogdW5kZWZp bmVkLAorICAgICAgICAgIGNvbmRlZmVycmFibGU6IHVuZGVmaW5lZCwKKyAg ICAgICAgICBjb25kZWZlcnJlZDogdW5kZWZpbmVkLAorICAgICAgICAgIGNv bmZtYXRjaHR5cGU6IHVuZGVmaW5lZCwKKyAgICAgICAgICBjb252YWxpZGF0 ZWQ6IHVuZGVmaW5lZCwKKyAgICAgICAgICBjb2x1bW5zOiB1bmRlZmluZWQs CisgICAgICAgICAgY29uZnVwZHR5cGU6ICJhIiwKKyAgICAgICAgICBjb25m ZGVsdHlwZTogImEiLAorICAgICAgICAgIGF1dG9pbmRleDogdHJ1ZSwKKyAg ICAgICAgICBjb3ZlcmluZ2luZGV4OiB1bmRlZmluZWQsCisgICAgICAgICAg aGFzaW5kZXg6dW5kZWZpbmVkCisgICAgICAgIH0sCisgICAgICAgIHRvSlNP TjogZnVuY3Rpb24gKCkgeworICAgICAgICAgIHZhciBkID0gcGdBZG1pbi5C cm93c2VyLk5vZGUuTW9kZWwucHJvdG90eXBlLnRvSlNPTi5hcHBseSh0aGlz LCBhcmd1bWVudHMpOworICAgICAgICAgIGRlbGV0ZSBkLmhhc2luZGV4Owor ICAgICAgICAgIHJldHVybiBkOworICAgICAgICB9LAorICAgICAgICAvLyBE ZWZpbmUgdGhlIHNjaGVtYSBmb3IgdGhlIGZvcmVpZ24ga2V5IG5vZGUKKyAg ICAgICAgc2NoZW1hOiBbeworICAgICAgICAgIGlkOiAnbmFtZScsIGxhYmVs OiAne3sgXygnTmFtZScpIH19JywgdHlwZTogJ3RleHQnLAorICAgICAgICAg IG1vZGU6IFsncHJvcGVydGllcycsICdjcmVhdGUnLCAnZWRpdCddLCBlZGl0 YWJsZTp0cnVlLAorICAgICAgICAgIGhlYWRlckNlbGw6IEJhY2tncmlkLkV4 dGVuc2lvbi5DdXN0b21IZWFkZXJDZWxsLCBjZWxsSGVhZGVyQ2xhc3Nlczog J3dpZHRoX3BlcmNlbnRfNTAnCisgICAgICAgIH0seworICAgICAgICAgIGlk OiAnb2lkJywgbGFiZWw6J3t7IF8oJ09JRCcpIH19JywgY2VsbDogJ3N0cmlu ZycsCisgICAgICAgICAgdHlwZTogJ3RleHQnICwgbW9kZTogWydwcm9wZXJ0 aWVzJ10KKyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdjb21tZW50Jywg bGFiZWw6J3t7IF8oJ0NvbW1lbnQnKSB9fScsIGNlbGw6ICdzdHJpbmcnLAor ICAgICAgICAgIHR5cGU6ICdtdWx0aWxpbmUnLCBtb2RlOiBbJ3Byb3BlcnRp ZXMnLCAnY3JlYXRlJywgJ2VkaXQnXSwKKyAgICAgICAgICBkZXBzOlsnbmFt ZSddLCBkaXNhYmxlZDpmdW5jdGlvbihtKSB7CisgICAgICAgICAgICB2YXIg bmFtZSA9IG0uZ2V0KCduYW1lJyk7CisgICAgICAgICAgICBpZiAoIShuYW1l ICYmIG5hbWUgIT0gJycpKSB7CisgICAgICAgICAgICAgIHNldFRpbWVvdXQo ZnVuY3Rpb24oKXsKKyAgICAgICAgICAgICAgICBtLnNldCgnY29tbWVudCcs IG51bGwpOworICAgICAgICAgICAgICB9LDEwKTsKKyAgICAgICAgICAgICAg cmV0dXJuIHRydWU7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAg fQorICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ2NvbmRlZmVycmFibGUn LCBsYWJlbDogJ3t7IF8oJ0RlZmVycmFibGUnKSB9fScsCisgICAgICAgICAg dHlwZTogJ3N3aXRjaCcsIGdyb3VwOiAne3sgXygnRGVmaW5pdGlvbicpIH19 JywKKyAgICAgICAgICBkaXNhYmxlZDogZnVuY3Rpb24obSkgeworICAgICAg ICAgICAgLy8gSWYgd2UgYXJlIGluIHRhYmxlIGVkaXQgbW9kZSB0aGVuCisg ICAgICAgICAgICBpZiAoXy5oYXMobSwgJ2hhbmRsZXInKSAmJiAhXy5pc1Vu ZGVmaW5lZChtLmhhbmRsZXIpKSB7CisgICAgICAgICAgICAgICAgLy8gSWYg T0lEIGlzIHVuZGVmaW5lZCB0aGVuIHVzZXIgaXMgdHJ5aW5nIHRvIGFkZAor ICAgICAgICAgICAgICAgIC8vIG5ldyBjb25zdHJhaW50IHdoaWNoIHNob3Vs ZCBhbGxvd2VkIGZvciBVbmlxdWUKKyAgICAgICAgICAgICAgICByZXR1cm4g IV8uaXNVbmRlZmluZWQobS5nZXQoJ29pZCcpKTsKKyAgICAgICAgICAgIH0K KyAgICAgICAgICAgIC8vIFdlIGNhbid0IHVwZGF0ZSBjb25kZWZlcnJhYmxl IG9mIGV4aXN0aW5nIGZvcmVpZ24ga2V5LgorICAgICAgICAgICAgcmV0dXJu ICFtLmlzTmV3KCk7CisgICAgICAgICAgfQorICAgICAgICB9LHsKKyAgICAg ICAgICBpZDogJ2NvbmRlZmVycmVkJywgbGFiZWw6ICd7eyBfKCdEZWZlcnJl ZCcpIH19JywKKyAgICAgICAgICB0eXBlOiAnc3dpdGNoJywgZ3JvdXA6ICd7 eyBfKCdEZWZpbml0aW9uJykgfX0nLAorICAgICAgICAgIGRlcHM6IFsnY29u ZGVmZXJyYWJsZSddLAorICAgICAgICAgIGRpc2FibGVkOiBmdW5jdGlvbiht KSB7CisgICAgICAgICAgICAvLyBJZiB3ZSBhcmUgaW4gdGFibGUgZWRpdCBt b2RlIHRoZW4KKyAgICAgICAgICAgIGlmIChfLmhhcyhtLCAnaGFuZGxlcicp ICYmICFfLmlzVW5kZWZpbmVkKG0uaGFuZGxlcikpIHsKKyAgICAgICAgICAg ICAgICAvLyBJZiBPSUQgaXMgdW5kZWZpbmVkIHRoZW4gdXNlciBpcyB0cnlp bmcgdG8gYWRkCisgICAgICAgICAgICAgICAgLy8gbmV3IGNvbnN0cmFpbnQg d2hpY2ggc2hvdWxkIGFsbG93ZWQgZm9yIFVuaXF1ZQorICAgICAgICAgICAg ICAgIHJldHVybiAhXy5pc1VuZGVmaW5lZChtLmdldCgnb2lkJykpOworICAg ICAgICAgICAgfSBlbHNlIGlmKCFtLmlzTmV3KCkpIHsKKyAgICAgICAgICAg ICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAv LyBEaXNhYmxlIGlmIGNvbmRlZmVycmVkIGlzIGZhbHNlIG9yIHVuc2VsZWN0 ZWQuCisgICAgICAgICAgICBpZihtLmdldCgnY29uZGVmZXJyYWJsZScpID09 IHRydWUpIHsKKyAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5j dGlvbigpeworICAgICAgICAgICAgICAgIG0uc2V0KCdjb25kZWZlcnJlZCcs IGZhbHNlKTsKKyAgICAgICAgICAgICAgfSwxMCk7CisgICAgICAgICAgICAg IHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAg ICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdjb25mbWF0Y2h0eXBlJywgbGFi ZWw6ICd7eyBfKCdNYXRjaCB0eXBlJykgfX0nLAorICAgICAgICAgIHR5cGU6 ICdzd2l0Y2gnLCBncm91cDogJ3t7IF8oJ0RlZmluaXRpb24nKSB9fScsCisg ICAgICAgICAgb3B0aW9uczogeworICAgICAgICAgICAgb25UZXh0OiAnRlVM TCcsCisgICAgICAgICAgICBvZmZUZXh0OiAnU0lNUExFJywKKyAgICAgICAg ICB9LGRpc2FibGVkOiBmdW5jdGlvbihtKSB7CisgICAgICAgICAgICAvLyBJ ZiB3ZSBhcmUgaW4gdGFibGUgZWRpdCBtb2RlIHRoZW4KKyAgICAgICAgICAg IGlmIChfLmhhcyhtLCAnaGFuZGxlcicpICYmICFfLmlzVW5kZWZpbmVkKG0u aGFuZGxlcikpIHsKKyAgICAgICAgICAgICAgICAvLyBJZiBPSUQgaXMgdW5k ZWZpbmVkIHRoZW4gdXNlciBpcyB0cnlpbmcgdG8gYWRkCisgICAgICAgICAg ICAgICAgLy8gbmV3IGNvbnN0cmFpbnQgd2hpY2ggc2hvdWxkIGFsbG93ZWQg Zm9yIFVuaXF1ZQorICAgICAgICAgICAgICAgIHJldHVybiAhXy5pc1VuZGVm aW5lZChtLmdldCgnb2lkJykpOworICAgICAgICAgICAgfQorICAgICAgICAg ICAgLy8gV2UgY2FuJ3QgdXBkYXRlIGNvbmRlZmVycmVkIG9mIGV4aXN0aW5n IGZvcmVpZ24ga2V5LgorICAgICAgICAgICAgcmV0dXJuICFtLmlzTmV3KCk7 CisgICAgICAgICAgfQorICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ2Nv bnZhbGlkYXRlZCcsIGxhYmVsOiAie3sgXygiVmFsaWRhdGVkPyIpIH19IiwK KyAgICAgICAgICB0eXBlOiAnc3dpdGNoJywgZ3JvdXA6ICd7eyBfKCdEZWZp bml0aW9uJykgfX0nLAorICAgICAgICAgIG9wdGlvbnM6IHsKKyAgICAgICAg ICAgIG9uVGV4dDogJ1llcycsCisgICAgICAgICAgICBvZmZUZXh0OiAnTm8n CisgICAgICAgICAgfSxkaXNhYmxlZDogZnVuY3Rpb24obSkgeworICAgICAg ICAgICAgLy8gSWYgd2UgYXJlIGluIHRhYmxlIGVkaXQgbW9kZSB0aGVuCisg ICAgICAgICAgICBpZiAoXy5oYXMobSwgJ2hhbmRsZXInKSAmJiAhXy5pc1Vu ZGVmaW5lZChtLmhhbmRsZXIpKSB7CisgICAgICAgICAgICAgICAgLy8gSWYg T0lEIGlzIHVuZGVmaW5lZCB0aGVuIHVzZXIgaXMgdHJ5aW5nIHRvIGFkZAor ICAgICAgICAgICAgICAgIC8vIG5ldyBjb25zdHJhaW50IHdoaWNoIHNob3Vs ZCBhbGxvd2VkCisgICAgICAgICAgICAgICAgcmV0dXJuICEoXy5pc1VuZGVm aW5lZChtLmdldCgnb2lkJykpIHx8IG0uZ2V0KCJjb252YWxpZGF0ZWQiKSk7 CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyBXZSBjYW4ndCB1cGRh dGUgY29uZGVmZXJyZWQgb2YgZXhpc3RpbmcgZm9yZWlnbiBrZXkuCisgICAg ICAgICAgICByZXR1cm4gIShtLmlzTmV3KCkgfHwgbS5nZXQoImNvbnZhbGlk YXRlZCIpKTsKKyAgICAgICAgICB9CisgICAgICAgIH0seworICAgICAgICAg IGlkOiAnYXV0b2luZGV4JywgbGFiZWw6ICd7eyBfKCdBdXRvIEZLIGluZGV4 JykgfX0nLAorICAgICAgICAgIHR5cGU6ICdzd2l0Y2gnLCBncm91cDogJ3t7 IF8oJ0RlZmluaXRpb24nKSB9fScsCisgICAgICAgICAgZGVwczogWyduYW1l JywgJ2hhc2luZGV4J10sCisgICAgICAgICAgb3B0aW9uczogeworICAgICAg ICAgICAgb25UZXh0OiAnWWVzJywKKyAgICAgICAgICAgIG9mZlRleHQ6ICdO bycsCisgICAgICAgICAgfSxkaXNhYmxlZDogZnVuY3Rpb24obSkgeworICAg ICAgICAgICAgdmFyIGluZGV4ID0gbS5nZXQoJ2NvdmVyaW5naW5kZXgnKSwK KyAgICAgICAgICAgICAgICBhdXRvaW5kZXggPSBtLmdldCgnYXV0b2luZGV4 JyksCisgICAgICAgICAgICAgICAgc2V0SW5kZXhOYW1lID0gZnVuY3Rpb24o KSB7CisgICAgICAgICAgICAgICAgICB2YXIgbmFtZSA9IG0uZ2V0KCduYW1l JyksCisgICAgICAgICAgICAgICAgICBvbGRpbmRleCA9ICdma2lfJyttLnBy ZXZpb3VzICgnbmFtZScpOworCisgICAgICAgICAgICAgICAgICBpZiAobS5n ZXQoJ2hhc2luZGV4JykpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu IHRydWU7CisgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG0uZ2V0KCdh dXRvaW5kZXgnKSAmJiAhXy5pc1VuZGVmaW5lZChuYW1lKSAmJiAhXy5pc051 bGwobmFtZSkgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5h bWUgIT0gJycgJiYgKF8uaXNVbmRlZmluZWQoaW5kZXgpIHx8IF8uaXNOdWxs KGluZGV4KSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5k ZXggPT0gJycgfHwgaW5kZXggPT0gb2xkaW5kZXgpKSB7CisgICAgICAgICAg ICAgICAgICAgIHZhciBuZXdJbmRleCA9ICdma2lfJyArIG5hbWU7CisgICAg ICAgICAgICAgICAgICAgIG0uc2V0KCdjb3ZlcmluZ2luZGV4JywgbmV3SW5k ZXgpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg ICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBy ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg ICAgICAgfTsKKyAgICAgICAgICAgIC8vIElmIHdlIGFyZSBpbiB0YWJsZSBl ZGl0IG1vZGUgdGhlbgorICAgICAgICAgICAgaWYgKF8uaGFzKG0sICdoYW5k bGVyJykgJiYgIV8uaXNVbmRlZmluZWQobS5oYW5kbGVyKSkgeworICAgICAg ICAgICAgICAgIC8vIElmIE9JRCBpcyB1bmRlZmluZWQgdGhlbiB1c2VyIGlz IHRyeWluZyB0byBhZGQKKyAgICAgICAgICAgICAgICAvLyBuZXcgY29uc3Ry YWludCB3aGljaCBzaG91bGQgYWxsb3dlZCBmb3IgVW5pcXVlCisgICAgICAg ICAgICAgICAgaWYoXy5pc1VuZGVmaW5lZChtLmdldCgnb2lkJykpICYmIF8u aXNVbmRlZmluZWQobS5oYW5kbGVyLmdldCgnb2lkJykpKSB7CisgICAgICAg ICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAg ICAgICAgICAgICAgbS5zZXQoJ2F1dG9pbmRleCcsIGZhbHNlKTsKKyAgICAg ICAgICAgICAgICAgIH0sIDEwKTsKKyAgICAgICAgICAgICAgICAgIHJldHVy biB0cnVlOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg ICAgICAgICByZXR1cm4gc2V0SW5kZXhOYW1lKCk7CisgICAgICAgICAgICAg ICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgaWYo IW0uaXNOZXcoKSAmJiBhdXRvaW5kZXggJiYgIV8uaXNVbmRlZmluZWQoaW5k ZXgpICYmCisgICAgICAgICAgICAgICAgICAgICFfLmlzTnVsbChpbmRleCkg JiYgaW5kZXggIT0gJycgJiYgbS5nZXQoJ2hhc2luZGV4JykpIHsKKyAgICAg ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgfSBlbHNl IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gc2V0SW5kZXhOYW1lKCk7Cisg ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9Cisg ICAgICAgIH0seworICAgICAgICAgIGlkOiAnY292ZXJpbmdpbmRleCcsIGxh YmVsOiAne3sgXygnQ292ZXJpbmcgaW5kZXgnKSB9fScsIHR5cGU6ICd0ZXh0 JywKKyAgICAgICAgICBtb2RlOiBbJ3Byb3BlcnRpZXMnLCAnY3JlYXRlJywg J2VkaXQnXSwgZ3JvdXA6ICd7eyBfKCdEZWZpbml0aW9uJykgfX0nLAorICAg ICAgICAgIGRlcHM6WydhdXRvaW5kZXgnLCAnaGFzaW5kZXgnXSwKKyAgICAg ICAgICBkaXNhYmxlZDogZnVuY3Rpb24obSkgeworICAgICAgICAgICAgdmFy IGluZGV4ID0gbS5nZXQoJ2NvdmVyaW5naW5kZXgnKSwKKyAgICAgICAgICAg ICAgc2V0SW5kZXhOYW1lID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAg ICAgaWYgKG0uZ2V0KCdoYXNpbmRleCcpKSB7CisgICAgICAgICAgICAgICAg ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFt LmdldCgnYXV0b2luZGV4JykpIHsKKyAgICAgICAgICAgICAgICAgIHNldFRp bWVvdXQoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICBtLnNl dCgnY292ZXJpbmdpbmRleCcsIG51bGwpOworICAgICAgICAgICAgICAgICAg fSk7CisgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgc2V0VGltZW91 dChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBuYW1l ID0gbS5nZXQoJ25hbWUnKSwKKyAgICAgICAgICAgICAgICAgICAgICBuZXdJ bmRleCA9ICdma2lfJyArIG5hbWU7CisKKyAgICAgICAgICAgICAgICAgICAg ICBpZiAobS5nZXQoJ2F1dG9pbmRleCcpICYmICFfLmlzVW5kZWZpbmVkKG5h bWUpICYmICFfLmlzTnVsbChuYW1lKSAmJgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgIG5hbWUgIT0gJycpIHsKKyAgICAgICAgICAgICAgICAgICAg ICAgIG0uc2V0KCdjb3ZlcmluZ2luZGV4JywgbmV3SW5kZXgpOworICAgICAg ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgIH0pOworCisg ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAg ICAgfQorICAgICAgICAgICAgICB9OworCisgICAgICAgICAgICAvLyBJZiB3 ZSBhcmUgaW4gdGFibGUgZWRpdCBtb2RlIHRoZW4KKyAgICAgICAgICAgIGlm IChfLmhhcyhtLCAnaGFuZGxlcicpICYmICFfLmlzVW5kZWZpbmVkKG0uaGFu ZGxlcikpIHsKKyAgICAgICAgICAgICAgICAvLyBJZiBPSUQgaXMgdW5kZWZp bmVkIHRoZW4gdXNlciBpcyB0cnlpbmcgdG8gYWRkCisgICAgICAgICAgICAg ICAgLy8gbmV3IGNvbnN0cmFpbnQgd2hpY2ggc2hvdWxkIGFsbG93ZWQgZm9y IFVuaXF1ZQorICAgICAgICAgICAgICAgIGlmIChfLmlzVW5kZWZpbmVkKG0u Z2V0KCdvaWQnKSkgJiYgXy5pc1VuZGVmaW5lZChtLmhhbmRsZXIuZ2V0KCdv aWQnKSkpIHsKKyAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg ICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICByZXR1 cm4gc2V0SW5kZXhOYW1lKCk7CisgICAgICAgICAgICAgICAgfQorCisgICAg ICAgICAgICB9IGVsc2UgaWYgKCFtLmlzTmV3KCkgJiYgbS5nZXQoJ2F1dG9p bmRleCcpICYmICFfLmlzVW5kZWZpbmVkKGluZGV4KQorICAgICAgICAgICAg ICAgICAgICAgICAgJiYgXy5pc051bGwoaW5kZXgpICYmIGluZGV4ID09ICcn KSB7CisgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAg fQorCisgICAgICAgICAgICByZXR1cm4gc2V0SW5kZXhOYW1lKCk7CisgICAg ICAgICAgfQorICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ2NvbHVtbnMn LCBsYWJlbDogJ3t7IF8oJ0NvbHVtbnMnKSB9fScsCisgICAgICAgICAgdHlw ZTogJ2NvbGxlY3Rpb24nLCBncm91cDogJ3t7IF8oJ0NvbHVtbnMnKSB9fScs IGRpc2FibGVkOiBmYWxzZSwKKyAgICAgICAgICBub2RlOiAnZm9yZWlnbl9r ZXknLCBlZGl0YWJsZTogZmFsc2UsIGhlYWRlckNlbGw6IEJhY2tncmlkLkV4 dGVuc2lvbi5DdXN0b21IZWFkZXJDZWxsLAorICAgICAgICAgIGNlbGxIZWFk ZXJDbGFzc2VzOiAnd2lkdGhfcGVyY2VudF81MCcsCisgICAgICAgICAgY2Vs bDogQmFja2dyaWQuU3RyaW5nQ2VsbC5leHRlbmQoeworICAgICAgICAgICAg aW5pdGlhbGl6ZTogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgIEJhY2tn cmlkLlN0cmluZ0NlbGwucHJvdG90eXBlLmluaXRpYWxpemUuYXBwbHkodGhp cywgYXJndW1lbnRzKTsKKyAgICAgICAgICAgICAgdmFyIHNlbGYgPSB0aGlz LAorICAgICAgICAgICAgICAgIGNvbGxlY3Rpb24gPSB0aGlzLm1vZGVsLmdl dCgnY29sdW1ucycpOworICAgICAgICAgICAgICAvLyBEbyBub3QgbGlzdGVu IGZvciBhbnkgZXZlbnQocykgZm9yIGV4aXN0aW5nIGNvbnN0cmFpbnQuCisg ICAgICAgICAgICAgIGlmIChfLmlzVW5kZWZpbmVkKHNlbGYubW9kZWwuZ2V0 KCdvaWQnKSkpIHsKKyAgICAgICAgICAgICAgICB2YXIgdGFibGVDb2xzID0g c2VsZi5tb2RlbC50b3AuZ2V0KCdjb2x1bW5zJyk7CisgICAgICAgICAgICAg ICAgc2VsZi5saXN0ZW5Ubyh0YWJsZUNvbHMsICdyZW1vdmUnICwgc2VsZi5y ZW1vdmVDb2x1bW4pOworICAgICAgICAgICAgICAgIHNlbGYubGlzdGVuVG8o dGFibGVDb2xzLCAnY2hhbmdlOm5hbWUnLCBzZWxmLnJlc2V0Q29sT3B0aW9u cyk7CisgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICBzZWxmLm1v ZGVsLmdldCgnY29sdW1ucycpLm9uKCdwZ2FkbWluOmNvbHVtbnM6dXBkYXRl ZCcsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIHNlbGYucmVuZGVy LmFwcGx5KHNlbGYpOworICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAg ICAgc2VsZi5saXN0ZW5Ubyhjb2xsZWN0aW9uLCAiYWRkIiwgc2VsZi5yZW5k ZXIpOworICAgICAgICAgICAgICBzZWxmLmxpc3RlblRvKGNvbGxlY3Rpb24s ICJyZW1vdmUiLCBzZWxmLnJlbmRlcik7CisgICAgICAgICAgICB9LAorICAg ICAgICAgICAgcmVtb3ZlQ29sdW1uOiBmdW5jdGlvbihtKXsKKyAgICAgICAg ICAgICAgdmFyIHNlbGYgPSB0aGlzLAorICAgICAgICAgICAgICAgICAgcmVt b3ZlZENvbHMgPSBzZWxmLm1vZGVsLmdldCgnY29sdW1ucycpLndoZXJlKAor ICAgICAgICAgICAgICAgICAgICB7bG9jYWxfY29sdW1uOiBtLmdldCgnbmFt ZScpfQorICAgICAgICAgICAgICAgICAgICApOworCisgICAgICAgICAgICAg IHNlbGYubW9kZWwuZ2V0KCdjb2x1bW5zJykucmVtb3ZlKHJlbW92ZWRDb2xz KTsKKyAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7Cisg ICAgICAgICAgICAgICAgc2VsZi5yZW5kZXIoKTsKKyAgICAgICAgICAgICAg fSwgMTApOworCisgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24g KCkgeworICAgICAgICAgICAgICAgIGNvbnN0cmFpbnRzID0gc2VsZi5tb2Rl bC50b3AuZ2V0KCJmb3JlaWduX2tleSIpOworICAgICAgICAgICAgICAgIHZh ciByZW1vdmVkID0gW107CisgICAgICAgICAgICAgICAgY29uc3RyYWludHMu ZWFjaChmdW5jdGlvbihjb25zdHJhaW50KSB7CisgICAgICAgICAgICAgICAg ICBpZiAoY29uc3RyYWludC5nZXQoImNvbHVtbnMiKS5sZW5ndGggPT0gMCkg eworICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlZC5wdXNoKGNvbnN0cmFp bnQpOworICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0p OworICAgICAgICAgICAgICAgIGNvbnN0cmFpbnRzLnJlbW92ZShyZW1vdmVk KTsKKyAgICAgICAgICAgICAgfSwxMDApOworICAgICAgICAgICAgfSwKKyAg ICAgICAgICAgIHJlc2V0Q29sT3B0aW9ucyA6IGZ1bmN0aW9uKG0pIHsKKyAg ICAgICAgICAgICAgICB2YXIgc2VsZiA9IHRoaXMsCisgICAgICAgICAgICAg ICAgICB1cGRhdGVkQ29scyA9IHNlbGYubW9kZWwuZ2V0KCdjb2x1bW5zJyku d2hlcmUoCisgICAgICAgICAgICAgICAgICB7ImxvY2FsX2NvbHVtbiI6IG0u cHJldmlvdXMoJ25hbWUnKX0KKyAgICAgICAgICAgICAgICAgICk7CisgICAg ICAgICAgICAgICAgaWYgKHVwZGF0ZWRDb2xzLmxlbmd0aCA+IDApIHsKKyAg ICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICAgKiBUYWJs ZSBjb2x1bW4gbmFtZSBoYXMgY2hhbmdlZCBzbyB1cGRhdGUKKyAgICAgICAg ICAgICAgICAgICAqIGNvbHVtbiBuYW1lIGluIGZvcmVpZ24ga2V5IGFzIHdl bGwuCisgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICAg IHVwZGF0ZWRDb2xzWzBdLnNldCgKKyAgICAgICAgICAgICAgICAgIHsibG9j YWxfY29sdW1uIjogbS5nZXQoJ25hbWUnKX0pOworICAgICAgICAgICAgICAg IH0KKworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkg eworICAgICAgICAgICAgICAgICAgc2VsZi5yZW5kZXIoKTsKKyAgICAgICAg ICAgICAgICB9LCAxMCk7CisgICAgICAgICAgICB9LAorICAgICAgICAgICAg Zm9ybWF0dGVyOiB7CisgICAgICAgICAgICAgIGZyb21SYXc6IGZ1bmN0aW9u IChyYXdWYWx1ZSwgbW9kZWwpIHsKKyAgICAgICAgICAgICAgICB2YXIgY29s cyA9IFtdLAorICAgICAgICAgICAgICAgICAgICByZW1vdGVfY29scyA9IFtd OworICAgICAgICAgICAgICAgIGlmIChyYXdWYWx1ZS5sZW5ndGggPiAwKSB7 CisgICAgICAgICAgICAgICAgICByYXdWYWx1ZS5lYWNoKGZ1bmN0aW9uKGNv bCl7CisgICAgICAgICAgICAgICAgICAgIGNvbHMucHVzaChjb2wuZ2V0KCds b2NhbF9jb2x1bW4nKSk7CisgICAgICAgICAgICAgICAgICAgIHJlbW90ZV9j b2xzLnB1c2goY29sLmdldCgncmVmZXJlbmNlZCcpKQorICAgICAgICAgICAg ICAgICAgfSk7CisgICAgICAgICAgICAgICAgICByZXR1cm4gJygnK2NvbHMu am9pbignLCAnKSsnKSAtPiAoJysgcmVtb3RlX2NvbHMuam9pbignLCAnKSsn KSc7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVy biAiIjsKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgdG9SYXc6 IGZ1bmN0aW9uICh2YWwsIG1vZGVsKSB7CisgICAgICAgICAgICAgICAgcmV0 dXJuIHZhbDsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAg ICAgICAgICAgIHJlbmRlcjogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAg IHJldHVybiBCYWNrZ3JpZC5TdHJpbmdDZWxsLnByb3RvdHlwZS5yZW5kZXIu YXBwbHkodGhpcywgYXJndW1lbnRzKTsKKyAgICAgICAgICAgIH0sCisgICAg ICAgICAgICByZW1vdmU6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICB2 YXIgdGFibGVDb2xzID0gdGhpcy5tb2RlbC50b3AuZ2V0KCdjb2x1bW5zJyk7 CisKKyAgICAgICAgICAgICAgdGhpcy5zdG9wTGlzdGVuaW5nKHRhYmxlQ29s cywgJ3JlbW92ZScgLCBzZWxmLnJlbW92ZUNvbHVtbik7CisgICAgICAgICAg ICAgIHRoaXMuc3RvcExpc3RlbmluZyh0YWJsZUNvbHMsICdjaGFuZ2U6bmFt ZScgLCBzZWxmLnJlc2V0Q29sT3B0aW9ucyk7CisKKyAgICAgICAgICAgICAg QmFja2dyaWQuU3RyaW5nQ2VsbC5wcm90b3R5cGUucmVtb3ZlLmFwcGx5KHRo aXMsIGFyZ3VtZW50cyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgfSks CisgICAgICAgICAgY2FuQWRkOiBmdW5jdGlvbihtKSB7CisgICAgICAgICAg ICAvLyBXZSBjYW4ndCB1cGRhdGUgY29sdW1ucyBvZiBleGlzdGluZyBmb3Jl aWduIGtleS4KKyAgICAgICAgICAgIHJldHVybiBtLmlzTmV3KCk7CisgICAg ICAgICAgfSwgY2FuRGVsZXRlOiB0cnVlLAorICAgICAgICAgIGNvbnRyb2w6 IEZvcmVpZ25LZXlDb2x1bW5Db250cm9sLAorICAgICAgICAgIG1vZGVsOiBG b3JlaWduS2V5Q29sdW1uTW9kZWwsCisgICAgICAgICAgZGlzYWJsZWQ6IGZ1 bmN0aW9uKG0pIHsKKyAgICAgICAgICAgIC8vIElmIHdlIGFyZSBpbiB0YWJs ZSBlZGl0IG1vZGUgdGhlbgorICAgICAgICAgICAgaWYgKF8uaGFzKG0sICdo YW5kbGVyJykgJiYgIV8uaXNVbmRlZmluZWQobS5oYW5kbGVyKSkgeworICAg ICAgICAgICAgICAgIC8vIElmIE9JRCBpcyB1bmRlZmluZWQgdGhlbiB1c2Vy IGlzIHRyeWluZyB0byBhZGQKKyAgICAgICAgICAgICAgICAvLyBuZXcgY29u c3RyYWludCB3aGljaCBzaG91bGQgYWxsb3dlZCBmb3IgVW5pcXVlCisgICAg ICAgICAgICAgICAgcmV0dXJuICFfLmlzVW5kZWZpbmVkKG0uZ2V0KCdvaWQn KSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyBXZSBjYW4ndCB1 cGRhdGUgY29sdW1ucyBvZiBleGlzdGluZyBmb3JlaWduIGtleS4KKyAgICAg ICAgICAgIHJldHVybiAhbS5pc05ldygpOworICAgICAgICAgICAgfQorICAg ICAgICB9LHsKKyAgICAgICAgICBpZDogJ2NvbmZ1cGR0eXBlJywgbGFiZWw6 J3t7IF8oJ09uIHVwZGF0ZScpIH19JywKKyAgICAgICAgICB0eXBlOiJzZWxl Y3QyIiwgZ3JvdXA6ICd7eyBfKCdBY3Rpb24nKSB9fScsIG1vZGU6IFsnZWRp dCcsJ2NyZWF0ZSddLAorICAgICAgICAgIHNlbGVjdDI6e3dpZHRoOiI1MCUi LCBhbGxvd0NsZWFyOiBmYWxzZX0sCisgICAgICAgICAgb3B0aW9uczogWwor ICAgICAgICAgICAge2xhYmVsOiAiTk8gQUNUSU9OIiwgdmFsdWU6ICJhIn0s CisgICAgICAgICAgICB7bGFiZWw6ICJSRVNUUklDVCIsIHZhbHVlOiAiciJ9 LAorICAgICAgICAgICAge2xhYmVsOiAiQ0FTQ0FERSIsIHZhbHVlOiAiYyJ9 LAorICAgICAgICAgICAge2xhYmVsOiAiU0VUIE5VTEwiLCB2YWx1ZTogIm4i fSwKKyAgICAgICAgICAgIHtsYWJlbDogIlNFVCBERUZBVUxUIiwgdmFsdWU6 ICJkIn0KKyAgICAgICAgICBdLGRpc2FibGVkOiBmdW5jdGlvbihtKSB7Cisg ICAgICAgICAgICAvLyBJZiB3ZSBhcmUgaW4gdGFibGUgZWRpdCBtb2RlIHRo ZW4KKyAgICAgICAgICAgIGlmIChfLmhhcyhtLCAnaGFuZGxlcicpICYmICFf LmlzVW5kZWZpbmVkKG0uaGFuZGxlcikpIHsKKyAgICAgICAgICAgICAgICAv LyBJZiBPSUQgaXMgdW5kZWZpbmVkIHRoZW4gdXNlciBpcyB0cnlpbmcgdG8g YWRkCisgICAgICAgICAgICAgICAgLy8gbmV3IGNvbnN0cmFpbnQgd2hpY2gg c2hvdWxkIGFsbG93ZWQgZm9yIFVuaXF1ZQorICAgICAgICAgICAgICAgIHJl dHVybiAhXy5pc1VuZGVmaW5lZChtLmdldCgnb2lkJykpOworICAgICAgICAg ICAgfQorICAgICAgICAgICAgLy8gV2UgY2FuJ3QgdXBkYXRlIGNvbmZ1cGR0 eXBlIG9mIGV4aXN0aW5nIGZvcmVpZ24ga2V5LgorICAgICAgICAgICAgcmV0 dXJuICFtLmlzTmV3KCk7CisgICAgICAgICAgfQorICAgICAgICB9LHsKKyAg ICAgICAgICBpZDogJ2NvbmZkZWx0eXBlJywgbGFiZWw6J3t7IF8oJ09uIGRl bGV0ZScpIH19JywKKyAgICAgICAgICB0eXBlOiJzZWxlY3QyIiwgZ3JvdXA6 ICd7eyBfKCdBY3Rpb24nKSB9fScsIG1vZGU6IFsnZWRpdCcsJ2NyZWF0ZSdd LAorICAgICAgICAgIHNlbGVjdDI6e3dpZHRoOiI1MCUiLCBhbGxvd0NsZWFy OiBmYWxzZX0sCisgICAgICAgICAgb3B0aW9uczogWworICAgICAgICAgICAg e2xhYmVsOiAiTk8gQUNUSU9OIiwgdmFsdWU6ICJhIn0sCisgICAgICAgICAg ICB7bGFiZWw6ICJSRVNUUklDVCIsIHZhbHVlOiAiciJ9LAorICAgICAgICAg ICAge2xhYmVsOiAiQ0FTQ0FERSIsIHZhbHVlOiAiYyJ9LAorICAgICAgICAg ICAge2xhYmVsOiAiU0VUIE5VTEwiLCB2YWx1ZTogIm4ifSwKKyAgICAgICAg ICAgIHtsYWJlbDogIlNFVCBERUZBVUxUIiwgdmFsdWU6ICJkIn0KKyAgICAg ICAgICBdLGRpc2FibGVkOiBmdW5jdGlvbihtKSB7CisgICAgICAgICAgICAv LyBJZiB3ZSBhcmUgaW4gdGFibGUgZWRpdCBtb2RlIHRoZW4KKyAgICAgICAg ICAgIGlmIChfLmhhcyhtLCAnaGFuZGxlcicpICYmICFfLmlzVW5kZWZpbmVk KG0uaGFuZGxlcikpIHsKKyAgICAgICAgICAgICAgICAvLyBJZiBPSUQgaXMg dW5kZWZpbmVkIHRoZW4gdXNlciBpcyB0cnlpbmcgdG8gYWRkCisgICAgICAg ICAgICAgICAgLy8gbmV3IGNvbnN0cmFpbnQgd2hpY2ggc2hvdWxkIGFsbG93 ZWQgZm9yIFVuaXF1ZQorICAgICAgICAgICAgICAgIHJldHVybiAhXy5pc1Vu ZGVmaW5lZChtLmdldCgnb2lkJykpOworICAgICAgICAgICAgfQorICAgICAg ICAgICAgLy8gV2UgY2FuJ3QgdXBkYXRlIGNvbmZkZWx0eXBlIG9mIGV4aXN0 aW5nIGZvcmVpZ24ga2V5LgorICAgICAgICAgICAgcmV0dXJuICFtLmlzTmV3 KCk7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIF0sCisgICAg ICAgIHZhbGlkYXRlOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICB0aGlzLmVy cm9yTW9kZWwuY2xlYXIoKTsKKworICAgICAgICAgIHZhciBjb2x1bW5zID0g dGhpcy5nZXQoJ2NvbHVtbnMnKTsKKyAgICAgICAgICBpZiAoKF8uaXNVbmRl ZmluZWQoY29sdW1ucykgfHwgXy5pc051bGwoY29sdW1ucykgfHwgY29sdW1u cy5sZW5ndGggPCAxKSkgeworICAgICAgICAgICAgdmFyIG1zZyA9ICd7eyBf KCdQbGVhc2Ugc3BlY2lmeSBjb2x1bW5zIGZvciBGb3JlaWduIGtleS4nKSB9 fSc7CisgICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwuc2V0KCdjb2x1bW5z JywgbXNnKTsKKyAgICAgICAgICAgIHJldHVybiBtc2c7CisgICAgICAgICAg fQorCisgICAgICAgICAgdmFyIGNvdmVyaW5naW5kZXggPSB0aGlzLmdldCgn Y292ZXJpbmdpbmRleCcpLAorICAgICAgICAgICAgICBhdXRvaW5kZXggPSB0 aGlzLmdldCgnYXV0b2luZGV4Jyk7CisgICAgICAgICAgaWYgKGF1dG9pbmRl eCAmJiAoXy5pc1VuZGVmaW5lZChjb3ZlcmluZ2luZGV4KSB8fCBfLmlzTnVs bChjb3ZlcmluZ2luZGV4KSB8fAorICAgICAgICAgICAgU3RyaW5nKGNvdmVy aW5naW5kZXgpLnJlcGxhY2UoL15ccyt8XHMrJC9nLCAnJykgPT0gJycpKSB7 CisgICAgICAgICAgICB2YXIgbXNnID0gJ3t7IF8oJ1BsZWFzZSBzcGVjaWZ5 IGNvdmVyaW5nIGluZGV4IG5hbWUuJykgfX0nOworICAgICAgICAgICAgdGhp cy5lcnJvck1vZGVsLnNldCgnY292ZXJpbmdpbmRleCcsIG1zZyk7CisgICAg ICAgICAgICByZXR1cm4gbXNnOworICAgICAgICAgIH0KKworICAgICAgICAg IHJldHVybiBudWxsOworICAgICAgICB9CisgICAgICB9KSwKKworICAgICAg Y2FuQ3JlYXRlOiBmdW5jdGlvbihpdGVtRGF0YSwgaXRlbSwgZGF0YSkgewor ICAgICAgICAgIC8vIElmIGNoZWNrIGlzIGZhbHNlIHRoZW4gLCB3ZSB3aWxs IGFsbG93IGNyZWF0ZSBtZW51CisgICAgICAgICAgaWYgKGRhdGEgJiYgZGF0 YS5jaGVjayA9PSBmYWxzZSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor CisgICAgICAgICAgdmFyIHQgPSBwZ0Jyb3dzZXIudHJlZSwgaSA9IGl0ZW0s IGQgPSBpdGVtRGF0YSwgcGFyZW50cyA9IFtdOworICAgICAgICAgIC8vIFRv IGl0ZXJhdGUgb3ZlciB0cmVlIHRvIGNoZWNrIHBhcmVudCBub2RlCisgICAg ICAgICAgd2hpbGUgKGkpIHsKKyAgICAgICAgICAgIC8vIElmIGl0IGlzIHNj aGVtYSB0aGVuIGFsbG93IHVzZXIgdG8gYyByZWF0ZSB0YWJsZQorICAgICAg ICAgICAgaWYgKF8uaW5kZXhPZihbJ3NjaGVtYSddLCBkLl90eXBlKSA+IC0x KQorICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIHBh cmVudHMucHVzaChkLl90eXBlKTsKKyAgICAgICAgICAgIGkgPSB0Lmhhc1Bh cmVudChpKSA/IHQucGFyZW50KGkpIDogbnVsbDsKKyAgICAgICAgICAgIGQg PSBpID8gdC5pdGVtRGF0YShpKSA6IG51bGw7CisgICAgICAgICAgfQorICAg ICAgICAgIC8vIElmIG5vZGUgaXMgdW5kZXIgY2F0YWxvZyB0aGVuIGRvIG5v dCBhbGxvdyAnY3JlYXRlJyBtZW51CisgICAgICAgICAgaWYgKF8uaW5kZXhP ZihwYXJlbnRzLCAnY2F0YWxvZycpID4gLTEpIHsKKyAgICAgICAgICAgIHJl dHVybiBmYWxzZTsKKyAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg cmV0dXJuIHRydWU7CisgICAgICAgICAgfQorICAgICAgfQorICAgIH0pOwor ICB9CisKKyAgcmV0dXJuIHBnQnJvd3Nlci5Ob2Rlc1snZm9yZWlnbl9rZXkn XTsKK30pOwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2Nv bnN0cmFpbnRzL2luZGV4X2NvbnN0cmFpbnQvX19pbml0X18ucHkgYi93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy90YWJsZXMvY29uc3RyYWludHMvaW5kZXhfY29uc3RyYWlu dC9fX2luaXRfXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwLi40NzFhNzFlCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvdGFibGVzL2NvbnN0cmFpbnRzL2luZGV4X2NvbnN0cmFpbnQvX19pbml0 X18ucHkKQEAgLTAsMCArMSw4NzggQEAKKyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjCisjCisjIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMK KyMKKyMgQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAxNiwgVGhlIHBnQWRtaW4g RGV2ZWxvcG1lbnQgVGVhbQorIyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2Vk IHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKyMKKyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjCisKKyIiIkltcGxlbWVudHMgUHJpbWFyeSBr ZXkgY29uc3RyYWludCBOb2RlIiIiCisKK2ltcG9ydCBqc29uCitmcm9tIGZs YXNrIGltcG9ydCByZW5kZXJfdGVtcGxhdGUsIG1ha2VfcmVzcG9uc2UsIHJl cXVlc3QsIGpzb25pZnkKK2Zyb20gZmxhc2suZXh0LmJhYmVsIGltcG9ydCBn ZXR0ZXh0IGFzIF8KK2Zyb20gcGdhZG1pbi51dGlscy5hamF4IGltcG9ydCBt YWtlX2pzb25fcmVzcG9uc2UsIFwKKyAgICBtYWtlX3Jlc3BvbnNlIGFzIGFq YXhfcmVzcG9uc2UsIGludGVybmFsX3NlcnZlcl9lcnJvcgorZnJvbSBwZ2Fk bWluLmJyb3dzZXIudXRpbHMgaW1wb3J0IFBHQ2hpbGROb2RlVmlldworZnJv bSBwZ2FkbWluLnV0aWxzLmFqYXggaW1wb3J0IHByZWNvbmRpdGlvbl9yZXF1 aXJlZAorZnJvbSBwZ2FkbWluLnV0aWxzLmRyaXZlciBpbXBvcnQgZ2V0X2Ry aXZlcgorZnJvbSBjb25maWcgaW1wb3J0IFBHX0RFRkFVTFRfRFJJVkVSCitp bXBvcnQgcGdhZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy5k YXRhYmFzZXMgYXMgZGF0YWJhc2UKK2Zyb20gZnVuY3Rvb2xzIGltcG9ydCB3 cmFwcworZnJvbSBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2 ZXJzLmRhdGFiYXNlcy5zY2hlbWFzLnRhYmxlcy5jb25zdHJhaW50cy50eXBl IFwKKyAgICBpbXBvcnQgQ29uc3RyYWludFJlZ2lzdHJ5LCBDb25zdHJhaW50 VHlwZU1vZHVsZQorCisKK2NsYXNzIEluZGV4Q29uc3RyYWludE1vZHVsZShD b25zdHJhaW50VHlwZU1vZHVsZSk6CisgICAgIiIiCisgICAgY2xhc3MgSW5k ZXhDb25zdHJhaW50TW9kdWxlKENvbGxlY3Rpb25Ob2RlTW9kdWxlKQorCisg ICAgICAgIEEgbW9kdWxlIGNsYXNzIGZvciBQcmltYXJ5IGtleSBjb25zdHJh aW50IG5vZGUgZGVyaXZlZCBmcm9tIENvbnN0cmFpbnRUeXBlTW9kdWxlLgor CisgICAgTWV0aG9kczoKKyAgICAtLS0tLS0tCisgICAgKiBfX2luaXRfXygq YXJncywgKiprd2FyZ3MpCisgICAgICAtIE1ldGhvZCBpcyB1c2VkIHRvIGlu aXRpYWxpemUgdGhlIFByaW1hcnlLZXlDb25zdHJhaW50TW9kdWxlIGFuZCBp dCdzIGJhc2UgbW9kdWxlLgorCisgICAgKiBnZXRfbm9kZXMoZ2lkLCBzaWQs IGRpZCkKKyAgICAgIC0gTWV0aG9kIGlzIHVzZWQgdG8gZ2VuZXJhdGUgdGhl IGJyb3dzZXIgY29sbGVjdGlvbiBub2RlLgorCisgICAgKiBub2RlX2lub2Rl KCkKKyAgICAgIC0gTWV0aG9kIGlzIG92ZXJyaWRkZW4gZnJvbSBpdHMgYmFz ZSBjbGFzcyB0byBtYWtlIHRoZSBub2RlIGFzIGxlYWYgbm9kZS4KKworICAg ICogc2NyaXB0X2xvYWQoKQorICAgICAgLSBMb2FkIHRoZSBtb2R1bGUgc2Ny aXB0IGZvciBsYW5ndWFnZSwgd2hlbiBhbnkgb2YgdGhlIGRhdGFiYXNlIG5v ZGUgaXMKKyAgICAgICAgaW5pdGlhbGl6ZWQuCisgICAgIiIiCisKKyAgICBO T0RFX1RZUEUgPSAnSW5kZXggY29uc3RyYWludCcKKyAgICBDT0xMRUNUSU9O X0xBQkVMID0gXygnaW5kZXhfY29uc3RyYWludCcpCisKKyAgICBkZWYgX19p bml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgIiIiCisg ICAgICAgIE1ldGhvZCBpcyB1c2VkIHRvIGluaXRpYWxpemUgdGhlIFByaW1h cnlLZXlDb25zdHJhaW50TW9kdWxlIGFuZCBpdCdzIGJhc2UgbW9kdWxlLgor CisgICAgICAgIEFyZ3M6CisgICAgICAgICAgKmFyZ3M6CisgICAgICAgICAg Kiprd2FyZ3M6CisKKyAgICAgICAgUmV0dXJuczoKKworICAgICAgICAiIiIK KyAgICAgICAgc2VsZi5taW5fdmVyID0gTm9uZQorICAgICAgICBzZWxmLm1h eF92ZXIgPSBOb25lCisgICAgICAgIHN1cGVyKEluZGV4Q29uc3RyYWludE1v ZHVsZSwgc2VsZikuX19pbml0X18oKmFyZ3MsICoqa3dhcmdzKQorCisgICAg ZGVmIGdldF9ub2RlcyhzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQp OgorICAgICAgICAiIiIKKyAgICAgICAgR2VuZXJhdGUgdGhlIGNvbGxlY3Rp b24gbm9kZQorICAgICAgICAiIiIKKyAgICAgICAgcGFzcworCisgICAgQHBy b3BlcnR5CisgICAgZGVmIG5vZGVfaW5vZGUoc2VsZik6CisgICAgICAgICIi IgorICAgICAgICBPdmVycmlkZSB0aGlzIHByb3BlcnR5IHRvIG1ha2UgdGhl IG5vZGUgYSBsZWFmIG5vZGUuCisKKyAgICAgICAgUmV0dXJuczogRmFsc2Ug YXMgdGhpcyBpcyB0aGUgbGVhZiBub2RlCisgICAgICAgICIiIgorICAgICAg ICByZXR1cm4gRmFsc2UKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBzY3Jp cHRfbG9hZChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIExvYWQgdGhl IG1vZHVsZSBzY3JpcHQgZm9yIHByaW1hcnlfa2V5LCB3aGVuIGFueSBvZiB0 aGUgdGFibGUgbm9kZSBpcworICAgICAgICBpbml0aWFsaXplZC4KKworICAg ICAgICBSZXR1cm5zOiBub2RlIHR5cGUgb2YgdGhlIHNlcnZlciBtb2R1bGUu CisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gZGF0YWJhc2UuRGF0YWJh c2VNb2R1bGUuTk9ERV9UWVBFCisKKworY2xhc3MgUHJpbWFyeUtleUNvbnN0 cmFpbnRNb2R1bGUoSW5kZXhDb25zdHJhaW50TW9kdWxlKToKKyAgICAiIiIK KyAgICAgY2xhc3MgUHJpbWFyeUtleUNvbnN0cmFpbnRNb2R1bGUoSW5kZXhD b25zdHJhaW50TW9kdWxlKQorCisgICAgICAgIEEgbW9kdWxlIGNsYXNzIGZv ciB0aGUgY2F0YWxvZyBzY2hlbWEgbm9kZSBkZXJpdmVkIGZyb20gSW5kZXhD b25zdHJhaW50TW9kdWxlLgorICAgICIiIgorCisgICAgTk9ERV9UWVBFID0g J3ByaW1hcnlfa2V5JworICAgIENPTExFQ1RJT05fTEFCRUwgPSBfKCJQcmlt YXJ5IGtleSIpCisKKworcHJpbWFyeV9rZXlfYmx1ZXByaW50ID0gUHJpbWFy eUtleUNvbnN0cmFpbnRNb2R1bGUoX19uYW1lX18pCisKKworY2xhc3MgVW5p cXVlQ29uc3RyYWludE1vZHVsZShJbmRleENvbnN0cmFpbnRNb2R1bGUpOgor ICAgICIiIgorICAgICBjbGFzcyBVbmlxdWVDb25zdHJhaW50TW9kdWxlKElu ZGV4Q29uc3RyYWludE1vZHVsZSkKKworICAgICAgICBBIG1vZHVsZSBjbGFz cyBmb3IgdGhlIGNhdGFsb2cgc2NoZW1hIG5vZGUgZGVyaXZlZCBmcm9tIElu ZGV4Q29uc3RyYWludE1vZHVsZS4KKyAgICAiIiIKKworICAgIE5PREVfVFlQ RSA9ICd1bmlxdWVfY29uc3RyYWludCcKKyAgICBDT0xMRUNUSU9OX0xBQkVM ID0gXygiVW5pcXVlIGNvbnN0cmFpbnQiKQorCisKK3VuaXF1ZV9jb25zdHJh aW50X2JsdWVwcmludCA9IFVuaXF1ZUNvbnN0cmFpbnRNb2R1bGUoX19uYW1l X18pCisKKworY2xhc3MgSW5kZXhDb25zdHJhaW50VmlldyhQR0NoaWxkTm9k ZVZpZXcpOgorICAgICIiIgorICAgIGNsYXNzIFByaW1hcnlLZXlDb25zdHJh aW50VmlldyhQR0NoaWxkTm9kZVZpZXcpCisKKyAgICAgICAgQSB2aWV3IGNs YXNzIGZvciBQcmltYXJ5IGtleSBjb25zdHJhaW50IG5vZGUgZGVyaXZlZCBm cm9tIFBHQ2hpbGROb2RlVmlldy4gVGhpcyBjbGFzcyBpcworICAgICAgICBy ZXNwb25zaWJsZSBmb3IgYWxsIHRoZSBzdHVmZiByZWxhdGVkIHRvIHZpZXcg bGlrZSBjcmVhdGluZywgdXBkYXRpbmcgUHJpbWFyeSBrZXkgY29uc3RyYWlu dAorICAgICAgICBub2RlLCBzaG93aW5nIHByb3BlcnRpZXMsIHNob3dpbmcg c3FsIGluIHNxbCBwYW5lLgorCisgICAgTWV0aG9kczoKKyAgICAtLS0tLS0t CisgICAgKiBfX2luaXRfXygqKmt3YXJncykKKyAgICAgIC0gTWV0aG9kIGlz IHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUgUHJpbWFyeUtleUNvbnN0cmFpbnRW aWV3IGFuZCBpdCdzIGJhc2Ugdmlldy4KKworICAgICogbW9kdWxlX2pzKCkK KyAgICAgIC0gVGhpcyBwcm9wZXJ0eSBkZWZpbmVzIChpZiBqYXZhc2NyaXB0 KSBleGlzdHMgZm9yIHRoaXMgbm9kZS4KKyAgICAgICAgT3ZlcnJpZGUgdGhp cyBwcm9wZXJ0eSBmb3IgeW91ciBvd24gbG9naWMKKworICAgICogY2hlY2tf cHJlY29uZGl0aW9uKCkKKyAgICAgIC0gVGhpcyBmdW5jdGlvbiB3aWxsIGJl aGF2ZSBhcyBhIGRlY29yYXRvciB3aGljaCB3aWxsIGNoZWNrcworICAgICAg ICBkYXRhYmFzZSBjb25uZWN0aW9uIGJlZm9yZSBydW5uaW5nIHZpZXcsIGl0 IHdpbGwgYWxzbyBhdHRhY2hlcworICAgICAgICBtYW5hZ2VyLGNvbm4gJiB0 ZW1wbGF0ZV9wYXRoIHByb3BlcnRpZXMgdG8gc2VsZgorCisgICAgKiBsaXN0 KCkKKyAgICAgIC0gVGhpcyBmdW5jdGlvbiByZXR1cm5zIHByaW1hcnkga2V5 IGNvbnN0cmFpbnQgbm9kZXMgd2l0aGluIHRoYXQKKyAgICAgICAgY29sbGVj dGlvbiBhcyBodHRwIHJlc3BvbnNlLgorCisgICAgKiBnZXRfbGlzdCgpCisg ICAgICAtIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBsaXN0IGFsbCB0aGUg bGFuZ3VhZ2Ugbm9kZXMgd2l0aGluIHRoYXQgY29sbGVjdGlvbgorICAgICAg ICBhbmQgcmV0dXJuIGxpc3Qgb2YgcHJpbWFyeSBrZXkgY29uc3RyYWludCBu b2Rlcy4KKworICAgICogbm9kZXMoKQorICAgICAgLSBUaGlzIGZ1bmN0aW9u IHJldHVybnMgY2hpbGQgbm9kZSB3aXRoaW4gdGhhdCBjb2xsZWN0aW9uLgor ICAgICAgICBIZXJlIHJldHVybiBhbGwgcHJpbWFyeSBrZXkgY29uc3RyYWlu dCBub2RlIGFzIGh0dHAgcmVzcG9uc2UuCisKKyAgICAqIGdldF9ub2Rlcygp CisgICAgICAtIHJldHVybnMgYWxsIHByaW1hcnkga2V5IGNvbnN0cmFpbnQg bm9kZXMnIGxpc3QuCisKKyAgICAqIHByb3BlcnRpZXMoKQorICAgICAgLSBU aGlzIGZ1bmN0aW9uIHdpbGwgc2hvdyB0aGUgcHJvcGVydGllcyBvZiB0aGUg c2VsZWN0ZWQgcHJpbWFyeSBrZXkuCisKKyAgICAqIHVwZGF0ZSgpCisgICAg ICAtIFRoaXMgZnVuY3Rpb24gd2lsbCB1cGRhdGUgdGhlIGRhdGEgZm9yIHRo ZSBzZWxlY3RlZCBwcmltYXJ5IGtleS4KKworICAgICogbXNxbCgpCisgICAg ICAtIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byByZXR1cm4gbW9kaWZpZWQg U1FMIGZvciB0aGUgc2VsZWN0ZWQgcHJpbWFyeSBrZXkuCisKKyAgICAqIGdl dF9zcWwoKQorICAgICAgLSBUaGlzIGZ1bmN0aW9uIHdpbGwgZ2VuZXJhdGUg c3FsIGZyb20gbW9kZWwgZGF0YS4KKworICAgICogc3FsKCk6CisgICAgICAt IFRoaXMgZnVuY3Rpb24gd2lsbCBnZW5lcmF0ZSBzcWwgdG8gc2hvdyBpdCBp biBzcWwgcGFuZSBmb3IgdGhlIHNlbGVjdGVkIHByaW1hcnkga2V5LgorCisg ICAgKiBnZXRfaW5kaWNlcygpOgorICAgICAgICAtIFRoaXMgZnVuY3Rpb24g cmV0dXJucyBpbmRpY2VzIGZvciBjdXJyZW50IHRhYmxlLgorCisgICAgIiIi CisKKyAgICBub2RlX3R5cGUgPSAnaW5kZXhfY29uc3RyYWludCcKKworICAg IG5vZGVfbGFiZWwgPSBfKCdJbmRleCBjb25zdHJhaW50JykKKworICAgIHBh cmVudF9pZHMgPSBbCisgICAgICAgICAgICB7J3R5cGUnOiAnaW50JywgJ2lk JzogJ2dpZCd9LAorICAgICAgICAgICAgeyd0eXBlJzogJ2ludCcsICdpZCc6 ICdzaWQnfSwKKyAgICAgICAgICAgIHsndHlwZSc6ICdpbnQnLCAnaWQnOiAn ZGlkJ30sCisgICAgICAgICAgICB7J3R5cGUnOiAnaW50JywgJ2lkJzogJ3Nj aWQnfSwKKyAgICAgICAgICAgIHsndHlwZSc6ICdpbnQnLCAnaWQnOiAndGlk J30KKyAgICAgICAgICAgIF0KKyAgICBpZHMgPSBbeyd0eXBlJzogJ2ludCcs ICdpZCc6ICdjaWQnfQorICAgICAgICAgICAgXQorCisgICAgb3BlcmF0aW9u cyA9IGRpY3QoeworICAgICAgICAnb2JqJzogWworICAgICAgICAgICAgeydn ZXQnOiAncHJvcGVydGllcycsICdkZWxldGUnOiAnZGVsZXRlJywgJ3B1dCc6 ICd1cGRhdGUnfSwKKyAgICAgICAgICAgIHsnZ2V0JzogJ2xpc3QnLCAncG9z dCc6ICdjcmVhdGUnfQorICAgICAgICBdLAorICAgICAgICAnZGVsZXRlJzog W3snZGVsZXRlJzogJ2RlbGV0ZSd9XSwKKyAgICAgICAgJ2NoaWxkcmVuJzog W3snZ2V0JzogJ2NoaWxkcmVuJ31dLAorICAgICAgICAnbm9kZXMnOiBbeydn ZXQnOiAnbm9kZSd9LCB7J2dldCc6ICdub2Rlcyd9XSwKKyAgICAgICAgJ3Nx bCc6IFt7J2dldCc6ICdzcWwnfV0sCisgICAgICAgICdtc3FsJzogW3snZ2V0 JzogJ21zcWwnfSwgeydnZXQnOiAnbXNxbCd9XSwKKyAgICAgICAgJ3N0YXRz JzogW3snZ2V0JzogJ3N0YXRpc3RpY3MnfV0sCisgICAgICAgICdkZXBlbmRl bmN5JzogW3snZ2V0JzogJ2RlcGVuZGVuY2llcyd9XSwKKyAgICAgICAgJ2Rl cGVuZGVudCc6IFt7J2dldCc6ICdkZXBlbmRlbnRzJ31dLAorICAgICAgICAn bW9kdWxlLmpzJzogW3t9LCB7fSwgeydnZXQnOiAnbW9kdWxlX2pzJ31dCisg ICAgfSkKKworICAgIGRlZiBtb2R1bGVfanMoc2VsZik6CisgICAgICAgICIi IgorICAgICAgICBUaGlzIHByb3BlcnR5IGRlZmluZXMgKGlmIGphdmFzY3Jp cHQpIGV4aXN0cyBmb3IgdGhpcyBub2RlLgorICAgICAgICBPdmVycmlkZSB0 aGlzIHByb3BlcnR5IGZvciB5b3VyIG93biBsb2dpYy4KKyAgICAgICAgIiIi CisgICAgICAgIHJldHVybiBtYWtlX3Jlc3BvbnNlKAorICAgICAgICAgICAg ICAgIHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgICAgICAgICAgICAgImlu ZGV4X2NvbnN0cmFpbnQvanMvaW5kZXhfY29uc3RyYWludC5qcyIsCisgICAg ICAgICAgICAgICAgICAgIF89XywKKyAgICAgICAgICAgICAgICAgICAgbm9k ZV90eXBlPXNlbGYubm9kZV90eXBlLAorICAgICAgICAgICAgICAgICAgICBu b2RlX2xhYmVsPXNlbGYubm9kZV9sYWJlbAorICAgICAgICAgICAgICAgICAg ICApLAorICAgICAgICAgICAgICAgIDIwMCwgeydDb250ZW50LVR5cGUnOiAn YXBwbGljYXRpb24veC1qYXZhc2NyaXB0J30KKyAgICAgICAgICAgICAgICAp CisKKyAgICBkZWYgY2hlY2tfcHJlY29uZGl0aW9uKGYpOgorICAgICAgICAi IiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIGJlaGF2ZSBhcyBhIGRl Y29yYXRvciB3aGljaCB3aWxsIGNoZWNrcworICAgICAgICBkYXRhYmFzZSBj b25uZWN0aW9uIGJlZm9yZSBydW5uaW5nIHZpZXcsIGl0IHdpbGwgYWxzbyBh dHRhY2hlcworICAgICAgICBtYW5hZ2VyLGNvbm4gJiB0ZW1wbGF0ZV9wYXRo IHByb3BlcnRpZXMgdG8gc2VsZgorICAgICAgICAiIiIKKyAgICAgICAgQHdy YXBzKGYpCisgICAgICAgIGRlZiB3cmFwKCphcmdzLCAqKmt3YXJncyk6Cisg ICAgICAgICAgICAjIEhlcmUgYXJnc1swXSB3aWxsIGhvbGQgc2VsZiAmIGt3 YXJncyB3aWxsIGhvbGQgZ2lkLHNpZCxkaWQKKyAgICAgICAgICAgIHNlbGYg PSBhcmdzWzBdCisgICAgICAgICAgICBzZWxmLm1hbmFnZXIgPSBnZXRfZHJp dmVyKFBHX0RFRkFVTFRfRFJJVkVSKS5jb25uZWN0aW9uX21hbmFnZXIoCisg ICAgICAgICAgICAgICAga3dhcmdzWydzaWQnXQorICAgICAgICAgICAgICAg ICkKKyAgICAgICAgICAgIHNlbGYuY29ubiA9IHNlbGYubWFuYWdlci5jb25u ZWN0aW9uKGRpZD1rd2FyZ3NbJ2RpZCddKQorCisgICAgICAgICAgICAjIElm IERCIG5vdCBjb25uZWN0ZWQgdGhlbiByZXR1cm4gZXJyb3IgdG8gYnJvd3Nl cgorICAgICAgICAgICAgaWYgbm90IHNlbGYuY29ubi5jb25uZWN0ZWQoKToK KyAgICAgICAgICAgICAgICByZXR1cm4gcHJlY29uZGl0aW9uX3JlcXVpcmVk KAorICAgICAgICAgICAgICAgICAgICBfKAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICJDb25uZWN0aW9uIHRvIHRoZSBzZXJ2ZXIgaGFzIGJlZW4g bG9zdCEiCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAg ICApCisKKyAgICAgICAgICAgIHNlbGYudGVtcGxhdGVfcGF0aCA9ICdpbmRl eF9jb25zdHJhaW50L3NxbCcKKyAgICAgICAgICAgICMgV2UgbmVlZCBwYXJl bnQncyBuYW1lIGVnIHRhYmxlIG5hbWUgYW5kIHNjaGVtYSBuYW1lCisgICAg ICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYu dGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJ2dldF9wYXJlbnQuc3FsJ10pLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHRpZD1rd2FyZ3NbJ3RpZCddKQor ICAgICAgICAgICAgc3RhdHVzLCByc2V0ID0gc2VsZi5jb25uLmV4ZWN1dGVf MmRhcnJheShTUUwpCisgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAg ICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJy b3Jtc2c9cnNldCkKKworICAgICAgICAgICAgZm9yIHJvdyBpbiByc2V0Wydy b3dzJ106CisgICAgICAgICAgICAgICAgc2VsZi5zY2hlbWEgPSByb3dbJ3Nj aGVtYSddCisgICAgICAgICAgICAgICAgc2VsZi50YWJsZSA9IHJvd1sndGFi bGUnXQorICAgICAgICAgICAgcmV0dXJuIGYoKmFyZ3MsICoqa3dhcmdzKQor CisgICAgICAgIHJldHVybiB3cmFwCisKKyAgICBkZWYgZW5kX3RyYW5zYWN0 aW9uKHNlbGYpOgorICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoCisg ICAgICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwg J2VuZC5zcWwnXSkpCisgICAgICAgICMgRW5kIHRyYW5zYWN0aW9uIGlmIGFu eS4KKyAgICAgICAgc2VsZi5jb25uLmV4ZWN1dGVfc2NhbGFyKFNRTCkKKwor ICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgcHJvcGVydGllcyhz ZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQsIGNpZD1Ob25lKToKKyAg ICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBs aXN0IGFsbCB0aGUgcHJpbWFyeSBrZXkKKyAgICAgICAgbm9kZXMgd2l0aGlu IHRoYXQgY29sbGVjdGlvbi4KKworICAgICAgICBBcmdzOgorICAgICAgICAg IGdpZDogU2VydmVyIEdyb3VwIElECisgICAgICAgICAgc2lkOiBTZXJ2ZXIg SUQKKyAgICAgICAgICBkaWQ6IERhdGFiYXNlIElECisgICAgICAgICAgc2Np ZDogU2NoZW1hIElECisgICAgICAgICAgdGlkOiBUYWJsZSBJRAorICAgICAg ICAgIGNpZDogUHJpbWFyeSBrZXkgY29uc3RyYWludCBJRAorCisgICAgICAg IFJldHVybnM6CisKKyAgICAgICAgIiIiCisgICAgICAgIHNxbCA9IHJlbmRl cl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAncHJv cGVydGllcy5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB0aWQ9dGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2lk PWNpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0cmFp bnRfdHlwZT0gc2VsZi5jb25zdHJhaW50X3R5cGUpCisgICAgICAgIHN0YXR1 cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChzcWwpCisKKyAgICAg ICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5h bF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgIHJlc3Vs dCA9IHJlc1sncm93cyddWzBdCisKKyAgICAgICAgc3FsID0gcmVuZGVyX3Rl bXBsYXRlKAorICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVf cGF0aCwgJ2dldF9jb25zdHJhaW50X2NvbHMuc3FsJ10pLAorICAgICAgICAg ICAgY2lkPWNpZCwKKyAgICAgICAgICAgIGNvbGNudD1yZXN1bHRbJ2luZG5h dHRzJ10pCisgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1 dGVfZGljdChzcWwpCisKKyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAg ICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9 cmVzKQorCisgICAgICAgIGNvbHVtbnMgPSBbXQorICAgICAgICBmb3Igcm93 IGluIHJlc1sncm93cyddOgorICAgICAgICAgICAgY29sdW1ucy5hcHBlbmQo eyJjb2x1bW4iOiAgIHJvd1snY29sdW1uJ10uc3RyaXAoJyInKX0pCisKKyAg ICAgICAgcmVzdWx0Wydjb2x1bW5zJ10gPSBjb2x1bW5zCisKKyAgICAgICAg cmV0dXJuIGFqYXhfcmVzcG9uc2UoCisgICAgICAgICAgICAgICAgcmVzcG9u c2U9cmVzdWx0LAorICAgICAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAg ICAgICAgICAgICApCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAg ZGVmIGxpc3Qoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgdGlkLCBjaWQ9 Tm9uZSk6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIHJl dHVybnMgYWxsIHByaW1hcnkga2V5cworICAgICAgICBub2RlcyB3aXRoaW4g dGhhdCBjb2xsZWN0aW9uIGFzIGEgaHR0cCByZXNwb25zZS4KKworICAgICAg ICBBcmdzOgorICAgICAgICAgIGdpZDogU2VydmVyIEdyb3VwIElECisgICAg ICAgICAgc2lkOiBTZXJ2ZXIgSUQKKyAgICAgICAgICBkaWQ6IERhdGFiYXNl IElECisgICAgICAgICAgc2NpZDogU2NoZW1hIElECisgICAgICAgICAgdGlk OiBUYWJsZSBJRAorICAgICAgICAgIGNpZDogUHJpbWFyeSBrZXkgY29uc3Ry YWludCBJRAorCisgICAgICAgIFJldHVybnM6CisKKyAgICAgICAgIiIiCisg ICAgICAgIHRyeToKKyAgICAgICAgICAgIHJlcyA9IHNlbGYuZ2V0X25vZGVf bGlzdChnaWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQsIGNpZCkKKyAgICAgICAg ICAgIHJldHVybiBhamF4X3Jlc3BvbnNlKAorICAgICAgICAgICAgICAgICAg ICByZXNwb25zZT1yZXMsCisgICAgICAgICAgICAgICAgICAgIHN0YXR1cz0y MDAKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICBleGNlcHQgRXhj ZXB0aW9uIGFzIGU6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2Vy dmVyX2Vycm9yKGVycm9ybXNnPXN0cihlKSkKKworICAgIEBjaGVja19wcmVj b25kaXRpb24KKyAgICBkZWYgZ2V0X25vZGVfbGlzdChzZWxmLCBnaWQsIHNp ZCwgZGlkLCBzY2lkLCB0aWQsIGNpZD1Ob25lKToKKyAgICAgICAgIiIiCisg ICAgICAgIFRoaXMgZnVuY3Rpb24gcmV0dXJucyBhbGwgcHJpbWFyeSBrZXlz CisgICAgICAgIG5vZGVzIHdpdGhpbiB0aGF0IGNvbGxlY3Rpb24gYXMgYSBs aXN0LgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgZ2lkOiBTZXJ2ZXIg R3JvdXAgSUQKKyAgICAgICAgICBzaWQ6IFNlcnZlciBJRAorICAgICAgICAg IGRpZDogRGF0YWJhc2UgSUQKKyAgICAgICAgICBzY2lkOiBTY2hlbWEgSUQK KyAgICAgICAgICB0aWQ6IFRhYmxlIElECisgICAgICAgICAgY2lkOiBQcmlt YXJ5IGtleSBjb25zdHJhaW50IElECisKKyAgICAgICAgUmV0dXJuczoKKwor ICAgICAgICAiIiIKKyAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIv Ii5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdwcm9wZXJ0aWVzLnNxbCdd KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpZD10aWQsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdHJhaW50X3R5cGU9 IHNlbGYuY29uc3RyYWludF90eXBlKQorICAgICAgICBzdGF0dXMsIHJlcyA9 IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQorCisgICAgICAgIHJldHVy biByZXNbJ3Jvd3MnXQorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAg IGRlZiBub2RlcyhzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQsIGNp ZD1Ob25lKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24g cmV0dXJucyBhbGwgZXZlbnQgdHJpZ2dlciBub2RlcyBhcyBhCisgICAgICAg IGh0dHAgcmVzcG9uc2UuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICBn aWQ6IFNlcnZlciBHcm91cCBJRAorICAgICAgICAgIHNpZDogU2VydmVyIElE CisgICAgICAgICAgZGlkOiBEYXRhYmFzZSBJRAorICAgICAgICAgIHNjaWQ6 IFNjaGVtYSBJRAorICAgICAgICAgIHRpZDogVGFibGUgSUQKKyAgICAgICAg ICBjaWQ6IFByaW1hcnkga2V5IGNvbnN0cmFpbnQgSUQKKworICAgICAgICBS ZXR1cm5zOgorCisgICAgICAgICIiIgorICAgICAgICB0cnk6CisgICAgICAg ICAgICByZXMgPSBzZWxmLmdldF9ub2RlcyhnaWQsIHNpZCwgZGlkLCBzY2lk LCB0aWQsIGNpZCkKKyAgICAgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVz cG9uc2UoCisgICAgICAgICAgICAgICAgICAgIGRhdGE9cmVzLAorICAgICAg ICAgICAgICAgICAgICBzdGF0dXM9MjAwCisgICAgICAgICAgICAgICAgICAg ICkKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAg ICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1zdHIo ZSkpCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVmIGdldF9u b2RlcyhzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQsIGNpZD1Ob25l KToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gcmV0dXJu cyBhbGwgZXZlbnQgdHJpZ2dlciBub2RlcyBhcyBhIGxpc3QuCisKKyAgICAg ICAgQXJnczoKKyAgICAgICAgICBnaWQ6IFNlcnZlciBHcm91cCBJRAorICAg ICAgICAgIHNpZDogU2VydmVyIElECisgICAgICAgICAgZGlkOiBEYXRhYmFz ZSBJRAorICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJRAorICAgICAgICAgIHRp ZDogVGFibGUgSUQKKyAgICAgICAgICBjaWQ6IFByaW1hcnkga2V5IGNvbnN0 cmFpbnQgSUQKKworICAgICAgICBSZXR1cm5zOgorCisgICAgICAgICIiIgor ICAgICAgICByZXMgPSBbXQorICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxh dGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ25vZGVzLnNxbCdd KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpZD10aWQsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdHJhaW50X3R5cGU9 c2VsZi5jb25zdHJhaW50X3R5cGUpCisgICAgICAgIHN0YXR1cywgcnNldCA9 IHNlbGYuY29ubi5leGVjdXRlXzJkYXJyYXkoU1FMKQorCisgICAgICAgIGZv ciByb3cgaW4gcnNldFsncm93cyddOgorICAgICAgICAgICAgcmVzLmFwcGVu ZCgKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5ibHVlcHJpbnQuZ2VuZXJh dGVfYnJvd3Nlcl9ub2RlKAorICAgICAgICAgICAgICAgICAgICAgICAgcm93 WydvaWQnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHRpZCwKKyAgICAg ICAgICAgICAgICAgICAgICAgIHJvd1snbmFtZSddLAorICAgICAgICAgICAg ICAgICAgICAgICAgaWNvbj0iaWNvbi0lcyIgJSBzZWxmLm5vZGVfdHlwZQor ICAgICAgICAgICAgICAgICAgICApKQorICAgICAgICByZXR1cm4gcmVzCisK KyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVmIGNyZWF0ZShzZWxm LCBnaWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQsIGNpZD1Ob25lKToKKyAgICAg ICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBjcmVhdGUgYSBw cmltYXJ5IGtleS4KKworICAgICAgICBBcmdzOgorICAgICAgICAgIGdpZDog U2VydmVyIEdyb3VwIElECisgICAgICAgICAgc2lkOiBTZXJ2ZXIgSUQKKyAg ICAgICAgICBkaWQ6IERhdGFiYXNlIElECisgICAgICAgICAgc2NpZDogU2No ZW1hIElECisgICAgICAgICAgdGlkOiBUYWJsZSBJRAorICAgICAgICAgIGNp ZDogUHJpbWFyeSBrZXkgY29uc3RyYWludCBJRAorCisgICAgICAgIFJldHVy bnM6CisKKyAgICAgICAgIiIiCisgICAgICAgIHJlcXVpcmVkX2FyZ3MgPSBb CisgICAgICAgICAgICBbdSdjb2x1bW5zJywgdSdpbmRleCddICAgICMgRWl0 aGVyIG9mIG9uZSBzaG91bGQgYmUgdGhlcmUuCisgICAgICAgIF0KKworICAg ICAgICBkYXRhID0gcmVxdWVzdC5mb3JtIGlmIHJlcXVlc3QuZm9ybSBlbHNl IGpzb24ubG9hZHMocmVxdWVzdC5kYXRhLmRlY29kZSgpKQorCisgICAgICAg IGZvciBrLCB2IGluIGRhdGEuaXRlbXMoKToKKyAgICAgICAgICAgIHRyeToK KyAgICAgICAgICAgICAgICBkYXRhW2tdID0ganNvbi5sb2Fkcyh2KQorICAg ICAgICAgICAgZXhjZXB0IChWYWx1ZUVycm9yLCBUeXBlRXJyb3IpOgorICAg ICAgICAgICAgICAgIGRhdGFba10gPSB2CisKKyAgICAgICAgZm9yIGFyZyBp biByZXF1aXJlZF9hcmdzOgorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShh cmcsIGxpc3QpOgorICAgICAgICAgICAgICAgIGZvciBwYXJhbSBpbiBhcmc6 CisgICAgICAgICAgICAgICAgICAgIGlmIChwYXJhbSBpbiBkYXRhIGFuZAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub3QgaXNpbnN0YW5jZShk YXRhW3BhcmFtXSwgbGlzdCkgb3IKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGlzaW5zdGFuY2UoZGF0YVtwYXJhbV0sIGxpc3QpIGFuZAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKGRhdGFb cGFyYW1dKSA+IDApKSk6CisgICAgICAgICAgICAgICAgICAgICAgICBicmVh aworICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAg IHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAgICAgICAgICAg ICAgICAgc3RhdHVzPTQwMCwKKyAgICAgICAgICAgICAgICAgICAgICBzdWNj ZXNzPTAsCisgICAgICAgICAgICAgICAgICAgICAgZXJyb3Jtc2c9XygKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIkNvdWxkbid0IGZpbmQgYXQgbGVh c3Qgb25lIHJlcXVpcmVkIHBhcmFtZXRlciAoJXMpLiIgJSBzdHIocGFyYW0p CisgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAg ICApCisKKyAgICAgICAgICAgIGVsaWYgYXJnIG5vdCBpbiBkYXRhOgorICAg ICAgICAgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCisgICAg ICAgICAgICAgICAgICAgIHN0YXR1cz00MDAsCisgICAgICAgICAgICAgICAg ICAgIHN1Y2Nlc3M9MCwKKyAgICAgICAgICAgICAgICAgICAgZXJyb3Jtc2c9 XygKKyAgICAgICAgICAgICAgICAgICAgICAgICJDb3VsZG4ndCBmaW5kIHRo ZSByZXF1aXJlZCBwYXJhbWV0ZXIgKCVzKS4iICUgYXJnCisgICAgICAgICAg ICAgICAgICAgICkKKyAgICAgICAgICAgICAgICApCisKKyAgICAgICAgZGF0 YVsnc2NoZW1hJ10gPSBzZWxmLnNjaGVtYQorICAgICAgICBkYXRhWyd0YWJs ZSddID0gc2VsZi50YWJsZQorICAgICAgICB0cnk6CisgICAgICAgICAgICBp ZiAnbmFtZScgbm90IGluIGRhdGEgb3IgZGF0YVsnbmFtZSddID09ICIiOgor ICAgICAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAg ICAgICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwg J2JlZ2luLnNxbCddKSkKKyAgICAgICAgICAgICAgICAjIFN0YXJ0IHRyYW5z YWN0aW9uLgorICAgICAgICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5j b25uLmV4ZWN1dGVfc2NhbGFyKFNRTCkKKyAgICAgICAgICAgICAgICBpZiBu b3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmVuZF90cmFu c2FjdGlvbigpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5h bF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgICAgICAj IFRoZSBiZWxvdyBTUUwgd2lsbCBleGVjdXRlIENSRUFURSBEREwgb25seQor ICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAg ICAgICAgICIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdjcmVhdGUu c3FsJ10pLAorICAgICAgICAgICAgICAgIGRhdGE9ZGF0YSwgY29ubj1zZWxm LmNvbm4sCisgICAgICAgICAgICAgICAgY29uc3RyYWludF9uYW1lPXNlbGYu Y29uc3RyYWludF9uYW1lCisgICAgICAgICAgICAgICAgKQorCisgICAgICAg ICAgICBzdGF0dXMsIG1zZyA9IHNlbGYuY29ubi5leGVjdXRlX3NjYWxhcihT UUwpCisgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAg ICAgIHNlbGYuZW5kX3RyYW5zYWN0aW9uKCkKKyAgICAgICAgICAgICAgICBy ZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPW1zZykKKwor ICAgICAgICAgICAgaWYgJ25hbWUnIG5vdCBpbiBkYXRhIG9yIGRhdGFbJ25h bWUnXSA9PSAiIjoKKyAgICAgICAgICAgICAgICBzcWwgPSByZW5kZXJfdGVt cGxhdGUoCisgICAgICAgICAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRl bXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn Z2V0X29pZF93aXRoX3RyYW5zYWN0aW9uLnNxbCddLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgICAgICBjb25z dHJhaW50X3R5cGU9c2VsZi5jb25zdHJhaW50X3R5cGUsCisgICAgICAgICAg ICAgICAgICAgIHRpZD10aWQpCisKKyAgICAgICAgICAgICAgICBzdGF0dXMs IHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3Qoc3FsKQorICAgICAgICAg ICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAgICAgIHNl bGYuZW5kX3RyYW5zYWN0aW9uKCkKKyAgICAgICAgICAgICAgICAgICAgcmV0 dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAg ICAgICAgICAgICAgICBzZWxmLmVuZF90cmFuc2FjdGlvbigpCisKKyAgICAg ICAgICAgICAgICBkYXRhWyduYW1lJ10gPSByZXNbJ3Jvd3MnXVswXVsnbmFt ZSddCisKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc3Fs ID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3Bh dGgsICdnZXRfb2lkLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdGlkPXRpZCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3RyYWludF90eXBlPXNlbGYuY29uc3Ry YWludF90eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBuYW1lPWRhdGFbJ25hbWUnXSkKKyAgICAgICAgICAgICAgICBzdGF0 dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3Qoc3FsKQorICAgICAg ICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAgICAg IHNlbGYuZW5kX3RyYW5zYWN0aW9uKCkKKyAgICAgICAgICAgICAgICAgICAg cmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisK KyAgICAgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihb c2VsZi50ZW1wbGF0ZV9wYXRoLCAnYWx0ZXIuc3FsJ10pLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9ZGF0YSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uPXNlbGYuY29ubikKKyAg ICAgICAgICAgIHNxbCA9IHNxbC5zdHJpcCgnXG4nKS5zdHJpcCgnICcpCisK KyAgICAgICAgICAgIGlmIHNxbCAhPSAnJzoKKyAgICAgICAgICAgICAgICBz dGF0dXMsIHJlc3VsdCA9IHNlbGYuY29ubi5leGVjdXRlX3NjYWxhcihzcWwp CisgICAgICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAg ICAgICAgICAgc2VsZi5lbmRfdHJhbnNhY3Rpb24oKQorICAgICAgICAgICAg ICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNn PXJlc3VsdCkKKworICAgICAgICAgICAgcmV0dXJuIGpzb25pZnkoCisgICAg ICAgICAgICAgICAgbm9kZT1zZWxmLmJsdWVwcmludC5nZW5lcmF0ZV9icm93 c2VyX25vZGUoCisgICAgICAgICAgICAgICAgICAgIHJlc1sncm93cyddWzBd WydvaWQnXSwKKyAgICAgICAgICAgICAgICAgICAgdGlkLAorICAgICAgICAg ICAgICAgICAgICBkYXRhWyduYW1lJ10sCisgICAgICAgICAgICAgICAgICAg IGljb249Imljb24tJXMiICUgc2VsZi5ub2RlX3R5cGUKKyAgICAgICAgICAg ICAgICAgICAgKQorICAgICAgICAgICAgICAgICkKKworICAgICAgICBleGNl cHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICBzZWxmLmVuZF90cmFu c2FjdGlvbigpCisgICAgICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3Bv bnNlKAorICAgICAgICAgICAgICAgIHN0YXR1cz00MDAsCisgICAgICAgICAg ICAgICAgc3VjY2Vzcz0wLAorICAgICAgICAgICAgICAgIGVycm9ybXNnPWUK KyAgICAgICAgICAgICkKKworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAg ICBkZWYgdXBkYXRlKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRpZCwg Y2lkPU5vbmUpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlv biB3aWxsIHVwZGF0ZSB0aGUgZGF0YSBmb3IgdGhlIHNlbGVjdGVkCisgICAg ICAgIHByaW1hcnkga2V5LgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAg Z2lkOiBTZXJ2ZXIgR3JvdXAgSUQKKyAgICAgICAgICBzaWQ6IFNlcnZlciBJ RAorICAgICAgICAgIGRpZDogRGF0YWJhc2UgSUQKKyAgICAgICAgICBzY2lk OiBTY2hlbWEgSUQKKyAgICAgICAgICB0aWQ6IFRhYmxlIElECisgICAgICAg ICAgY2lkOiBQcmltYXJ5IGtleSBjb25zdHJhaW50IElECisKKyAgICAgICAg UmV0dXJuczoKKworICAgICAgICAiIiIKKyAgICAgICAgZGF0YSA9IHJlcXVl c3QuZm9ybSBpZiByZXF1ZXN0LmZvcm0gZWxzZSBqc29uLmxvYWRzKHJlcXVl c3QuZGF0YS5kZWNvZGUoKSkKKworICAgICAgICB0cnk6CisgICAgICAgICAg ICBkYXRhWydzY2hlbWEnXSA9IHNlbGYuc2NoZW1hCisgICAgICAgICAgICBk YXRhWyd0YWJsZSddID0gc2VsZi50YWJsZQorICAgICAgICAgICAgc3FsID0g c2VsZi5nZXRfc3FsKGRhdGEsIHRpZCwgY2lkKQorICAgICAgICAgICAgc3Fs ID0gc3FsLnN0cmlwKCdcbicpLnN0cmlwKCcgJykKKyAgICAgICAgICAgIGlm IHNxbCAhPSAiIjoKKyAgICAgICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNl bGYuY29ubi5leGVjdXRlX3NjYWxhcihzcWwpCisgICAgICAgICAgICAgICAg aWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlu dGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAg ICAgICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYu dGVtcGxhdGVfcGF0aCwgJ2dldF9vaWQuc3FsJ10pLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB0aWQ9dGlkLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdHJhaW50X3R5cGU9 c2VsZi5jb25zdHJhaW50X3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIG5hbWU9ZGF0YVsnbmFtZSddKQorICAgICAgICAg ICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChz cWwpCisgICAgICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAg ICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJv cm1zZz1yZXMpCisKKyAgICAgICAgICAgICAgICByZXR1cm4gbWFrZV9qc29u X3Jlc3BvbnNlKAorICAgICAgICAgICAgICAgICAgICBzdWNjZXNzPTEsCisg ICAgICAgICAgICAgICAgICAgIGluZm89IkNvbnN0cmFpbnQgdXBkYXRlZCIs CisgICAgICAgICAgICAgICAgICAgIGRhdGE9eworICAgICAgICAgICAgICAg ICAgICAgICAgJ2lkJzogY2lkLAorICAgICAgICAgICAgICAgICAgICAgICAg J3RpZCc6IHRpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICdzY2lkJzog c2NpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICdzaWQnOiBzaWQsCisg ICAgICAgICAgICAgICAgICAgICAgICAnZ2lkJzogZ2lkLAorICAgICAgICAg ICAgICAgICAgICAgICAgJ2RpZCc6IGRpZAorICAgICAgICAgICAgICAgICAg ICB9CisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgZWxzZToKKyAg ICAgICAgICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAg ICAgICAgICAgICAgICAgICBzdWNjZXNzPTEsCisgICAgICAgICAgICAgICAg ICAgIGluZm89Ik5vdGhpbmcgdG8gdXBkYXRlIiwKKyAgICAgICAgICAgICAg ICAgICAgZGF0YT17CisgICAgICAgICAgICAgICAgICAgICAgICAnaWQnOiBj aWQsCisgICAgICAgICAgICAgICAgICAgICAgICAndGlkJzogdGlkLAorICAg ICAgICAgICAgICAgICAgICAgICAgJ3NjaWQnOiBzY2lkLAorICAgICAgICAg ICAgICAgICAgICAgICAgJ3NpZCc6IHNpZCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICdnaWQnOiBnaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAn ZGlkJzogZGlkCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg ICAgICApCisKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAg ICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1z Zz1zdHIoZSkpCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVm IGRlbGV0ZShzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQsIGNpZD1O b25lKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gd2ls bCBkZWxldGUgYW4gZXhpc3RpbmcgcHJpbWFyeSBrZXkuCisKKyAgICAgICAg QXJnczoKKyAgICAgICAgICBnaWQ6IFNlcnZlciBHcm91cCBJRAorICAgICAg ICAgIHNpZDogU2VydmVyIElECisgICAgICAgICAgZGlkOiBEYXRhYmFzZSBJ RAorICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJRAorICAgICAgICAgIHRpZDog VGFibGUgSUQKKyAgICAgICAgICBjaWQ6IFByaW1hcnkga2V5IGNvbnN0cmFp bnQgSUQKKworICAgICAgICBSZXR1cm5zOgorCisgICAgICAgICIiIgorICAg ICAgICAjIEJlbG93IGNvZGUgd2lsbCBkZWNpZGUgaWYgaXQncyBzaW1wbGUg ZHJvcCBvciBkcm9wIHdpdGggY2FzY2FkZSBjYWxsCisgICAgICAgIGlmIHNl bGYuY21kID09ICdkZWxldGUnOgorICAgICAgICAgICAgIyBUaGlzIGlzIGEg Y2FzY2FkZSBvcGVyYXRpb24KKyAgICAgICAgICAgIGNhc2NhZGUgPSBUcnVl CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBjYXNjYWRlID0gRmFsc2UK KyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc3FsID0gcmVuZGVyX3RlbXBs YXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdnZXRfbmFtZS5z cWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlk PXRpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z dHJhaW50X3R5cGUgPSBzZWxmLmNvbnN0cmFpbnRfdHlwZSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjaWQ9Y2lkKQorICAgICAgICAg ICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KHNxbCkK KyAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAg cmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisK KyAgICAgICAgICAgIGRhdGEgPSByZXNbJ3Jvd3MnXVswXQorICAgICAgICAg ICAgZGF0YVsnc2NoZW1hJ10gPSBzZWxmLnNjaGVtYQorICAgICAgICAgICAg ZGF0YVsndGFibGUnXSA9IHNlbGYudGFibGUKKworICAgICAgICAgICAgc3Fs ID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3Bh dGgsICdkZWxldGUuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGRhdGE9ZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjYXNjYWRlPWNhc2NhZGUpCisgICAgICAgICAgICBzdGF0 dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX3NjYWxhcihzcWwpCisgICAg ICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgIHJldHVy biBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAg ICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAg ICAgICAgIHN1Y2Nlc3M9MSwKKyAgICAgICAgICAgICAgICBpbmZvPV8oInsw fSBkcm9wcGVkLiIuZm9ybWF0KHNlbGYubm9kZV9sYWJlbCkpLAorICAgICAg ICAgICAgICAgIGRhdGE9eworICAgICAgICAgICAgICAgICAgICAnaWQnOiBj aWQsCisgICAgICAgICAgICAgICAgICAgICdzaWQnOiBzaWQsCisgICAgICAg ICAgICAgICAgICAgICdnaWQnOiBnaWQsCisgICAgICAgICAgICAgICAgICAg ICdkaWQnOiBkaWQKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAp CisKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAg ICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1zdHIo ZSkpCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVmIG1zcWwo c2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgdGlkLCBjaWQ9Tm9uZSk6Cisg ICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIHJldHVybnMgbW9k aWZpZWQgU1FMIGZvciB0aGUgc2VsZWN0ZWQKKyAgICAgICAgcHJpbWFyeSBr ZXkuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICBnaWQ6IFNlcnZlciBH cm91cCBJRAorICAgICAgICAgIHNpZDogU2VydmVyIElECisgICAgICAgICAg ZGlkOiBEYXRhYmFzZSBJRAorICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJRAor ICAgICAgICAgIHRpZDogVGFibGUgSUQKKyAgICAgICAgICBjaWQ6IFByaW1h cnkga2V5IGNvbnN0cmFpbnQgSUQKKworICAgICAgICBSZXR1cm5zOgorCisg ICAgICAgICIiIgorICAgICAgICBkYXRhID0ge30KKyAgICAgICAgZm9yIGss IHYgaW4gcmVxdWVzdC5hcmdzLml0ZW1zKCk6CisgICAgICAgICAgICB0cnk6 CisgICAgICAgICAgICAgICAgZGF0YVtrXSA9IGpzb24ubG9hZHModikKKyAg ICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgICAg IGRhdGFba10gPSB2CisKKyAgICAgICAgZGF0YVsnc2NoZW1hJ10gPSBzZWxm LnNjaGVtYQorICAgICAgICBkYXRhWyd0YWJsZSddID0gc2VsZi50YWJsZQor ICAgICAgICB0cnk6CisgICAgICAgICAgICBzcWwgPSBzZWxmLmdldF9zcWwo ZGF0YSwgdGlkLCBjaWQpCisgICAgICAgICAgICBzcWwgPSBzcWwuc3RyaXAo J1xuJykuc3RyaXAoJyAnKQorCisgICAgICAgICAgICByZXR1cm4gbWFrZV9q c29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgICAgICAgICBkYXRhPXNxbCwK KyAgICAgICAgICAgICAgICAgICAgc3RhdHVzPTIwMAorICAgICAgICAgICAg ICAgICAgICApCisKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgor ICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJv cm1zZz1zdHIoZSkpCisKKyAgICBkZWYgZ2V0X3NxbChzZWxmLCBkYXRhLCB0 aWQsIGNpZD1Ob25lKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVu Y3Rpb24gd2lsbCBnZW5lcmF0ZSBzcWwgZnJvbSBtb2RlbCBkYXRhLgorCisg ICAgICAgIEFyZ3M6CisgICAgICAgICAgZGF0YTogQ29udGFpbnMgdGhlIGRh dGEgb2YgdGhlIHNlbGVjdGVkIHByaW1hcnkga2V5IGNvbnN0cmFpbnQuCisg ICAgICAgICAgdGlkOiBUYWJsZSBJRC4KKyAgICAgICAgICBjaWQ6IFByaW1h cnkga2V5IGNvbnN0cmFpbnQgSUQKKworICAgICAgICBSZXR1cm5zOgorCisg ICAgICAgICIiIgorICAgICAgICBpZiBjaWQgaXMgbm90IE5vbmU6CisgICAg ICAgICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYu dGVtcGxhdGVfcGF0aCwgJ3Byb3BlcnRpZXMuc3FsJ10pLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHRpZD10aWQsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY2lkPWNpZCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb25zdHJhaW50X3R5cGU9IHNlbGYu Y29uc3RyYWludF90eXBlKQorICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBz ZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KHNxbCkKKyAgICAgICAgICAgIGlmIG5v dCBzdGF0dXM6CisgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3Nl cnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgICAgIG9sZF9k YXRhID0gcmVzWydyb3dzJ11bMF0KKyAgICAgICAgICAgIHJlcXVpcmVkX2Fy Z3MgPSBbdSduYW1lJ10KKyAgICAgICAgICAgIGZvciBhcmcgaW4gcmVxdWly ZWRfYXJnczoKKyAgICAgICAgICAgICAgICBpZiBhcmcgbm90IGluIGRhdGE6 CisgICAgICAgICAgICAgICAgICAgIGRhdGFbYXJnXSA9IG9sZF9kYXRhW2Fy Z10KKworICAgICAgICAgICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5q b2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICd1cGRhdGUuc3FsJ10pLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9ZGF0YSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvX2RhdGE9b2xkX2Rh dGEpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXF1aXJlZF9hcmdz ID0gWworICAgICAgICAgICAgICAgIFt1J2NvbHVtbnMnLCB1J2luZGV4J10g ICAgIyBFaXRoZXIgb2Ygb25lIHNob3VsZCBiZSB0aGVyZS4KKyAgICAgICAg ICAgIF0KKworICAgICAgICAgICAgZm9yIGFyZyBpbiByZXF1aXJlZF9hcmdz OgorICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoYXJnLCBsaXN0KToK KyAgICAgICAgICAgICAgICAgICAgZm9yIHBhcmFtIGluIGFyZzoKKyAgICAg ICAgICAgICAgICAgICAgICAgIGlmIChwYXJhbSBpbiBkYXRhIGFuZAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGlzaW5zdGFuY2UoZGF0 YVtwYXJhbV0sIHN0cikgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBkYXRhW3BhcmFtXSAhPSAiIikgb3IKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChpc2luc3RhbmNlKGRhdGFbcGFy YW1dLCBsaXN0KSBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBsZW4oZGF0YVtwYXJhbV0pID4gMCkpKToKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgICAg ICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF8oJy0t IGRlZmluaXRpb24gaW5jb21wbGV0ZScpCisKKyAgICAgICAgICAgICAgICBl bGlmIGFyZyBub3QgaW4gZGF0YToKKyAgICAgICAgICAgICAgICAgICAgcmV0 dXJuIF8oJy0tIGRlZmluaXRpb24gaW5jb21wbGV0ZScpCisKKyAgICAgICAg ICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1w bGF0ZV9wYXRoLCAnY3JlYXRlLnNxbCddKSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBkYXRhPWRhdGEsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29ubj1zZWxmLmNvbm4sCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RyYWludF9uYW1lPXNlbGYu Y29uc3RyYWludF9uYW1lKQorICAgICAgICAgICAgc3FsICs9ICJcbiIKKyAg ICAgICAgICAgIHNxbCArPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3Nl bGYudGVtcGxhdGVfcGF0aCwgJ2FsdGVyLnNxbCddKSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1kYXRhLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uPXNlbGYuY29ubikKKwor ICAgICAgICByZXR1cm4gc3FsCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9u CisgICAgZGVmIHNxbChzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQs IGNpZD1Ob25lKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rp b24gZ2VuZXJhdGVzIHNxbCB0byBzaG93IGluIHRoZSBzcWwgcGFuZSBmb3Ig dGhlIHNlbGVjdGVkCisgICAgICAgIHByaW1hcnkga2V5LgorCisgICAgICAg IEFyZ3M6CisgICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAgSUQKKyAgICAg ICAgICBzaWQ6IFNlcnZlciBJRAorICAgICAgICAgIGRpZDogRGF0YWJhc2Ug SUQKKyAgICAgICAgICBzY2lkOiBTY2hlbWEgSUQKKyAgICAgICAgICB0aWQ6 IFRhYmxlIElECisgICAgICAgICAgY2lkOiBQcmltYXJ5IGtleSBjb25zdHJh aW50IElECisKKyAgICAgICAgUmV0dXJuczoKKworICAgICAgICAiIiIKKyAg ICAgICAgdHJ5OgorICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRl KAorICAgICAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3Bh dGgsICdwcm9wZXJ0aWVzLnNxbCddKSwKKyAgICAgICAgICAgICAgICB0aWQ9 dGlkLAorICAgICAgICAgICAgICAgIGNvbm49c2VsZi5jb25uLAorICAgICAg ICAgICAgICAgIGNpZD1jaWQsCisgICAgICAgICAgICAgICAgY29uc3RyYWlu dF90eXBlPXNlbGYuY29uc3RyYWludF90eXBlKQorICAgICAgICAgICAgc3Rh dHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKKyAgICAg ICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAgcmV0dXJu IGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAg ICAgICAgIGRhdGEgPSByZXNbJ3Jvd3MnXVswXQorICAgICAgICAgICAgZGF0 YVsnc2NoZW1hJ10gPSBzZWxmLnNjaGVtYQorICAgICAgICAgICAgZGF0YVsn dGFibGUnXSA9IHNlbGYudGFibGUKKworICAgICAgICAgICAgc3FsID0gcmVu ZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAgICAgICIvIi5qb2luKFtzZWxm LnRlbXBsYXRlX3BhdGgsICdnZXRfY29uc3RyYWludF9jb2xzLnNxbCddKSwK KyAgICAgICAgICAgICAgICBjaWQ9Y2lkLCBjb2xjbnQ9ZGF0YVsnaW5kbmF0 dHMnXSkKKworICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4u ZXhlY3V0ZV9kaWN0KHNxbCkKKworICAgICAgICAgICAgaWYgbm90IHN0YXR1 czoKKyAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vy cm9yKGVycm9ybXNnPXJlcykKKworICAgICAgICAgICAgY29sdW1ucyA9IFtd CisgICAgICAgICAgICBmb3Igcm93IGluIHJlc1sncm93cyddOgorICAgICAg ICAgICAgICAgIGNvbHVtbnMuYXBwZW5kKHsiY29sdW1uIjogICByb3dbJ2Nv bHVtbiddLnN0cmlwKCciJyl9KQorCisgICAgICAgICAgICBkYXRhWydjb2x1 bW5zJ10gPSBjb2x1bW5zCisKKyAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90 ZW1wbGF0ZSgKKyAgICAgICAgICAgICAgICAiLyIuam9pbihbc2VsZi50ZW1w bGF0ZV9wYXRoLCAnY3JlYXRlLnNxbCddKSwKKyAgICAgICAgICAgICAgICBk YXRhPWRhdGEsCisgICAgICAgICAgICAgICAgY29uc3RyYWludF9uYW1lPXNl bGYuY29uc3RyYWludF9uYW1lKQorICAgICAgICAgICAgU1FMICs9ICJcbiIK KyAgICAgICAgICAgIFNRTCArPSByZW5kZXJfdGVtcGxhdGUoCisgICAgICAg ICAgICAgICAgIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ2FsdGVy LnNxbCddKSwKKyAgICAgICAgICAgICAgICBkYXRhPWRhdGEsIGNvbm49c2Vs Zi5jb25uKQorCisgICAgICAgICAgICBzcWxfaGVhZGVyID0gIi0tIENvbnN0 cmFpbnQ6IHswfVxuXG4tLSAiLmZvcm1hdChkYXRhWyduYW1lJ10pCisKKyAg ICAgICAgICAgIHNxbF9oZWFkZXIgKz0gcmVuZGVyX3RlbXBsYXRlKAorICAg ICAgICAgICAgICAgICAgICAiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRo LCAnZGVsZXRlLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgZGF0YT1k YXRhKQorICAgICAgICAgICAgc3FsX2hlYWRlciArPSAiXG4iCisKKyAgICAg ICAgICAgIFNRTCA9IHNxbF9oZWFkZXIgKyBTUUwKKworICAgICAgICAgICAg cmV0dXJuIGFqYXhfcmVzcG9uc2UocmVzcG9uc2U9U1FMKQorCisgICAgICAg IGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIHJldHVybiBp bnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKGUpKQorCisKK2Ns YXNzIFByaW1hcnlLZXlDb25zdHJhaW50VmlldyhJbmRleENvbnN0cmFpbnRW aWV3KToKKyAgICBub2RlX3R5cGUgPSAncHJpbWFyeV9rZXknCisKKyAgICBu b2RlX2xhYmVsID0gXygnUHJpbWFyeSBrZXknKQorCisgICAgY29uc3RyYWlu dF9uYW1lID0gIlBSSU1BUlkgS0VZIgorCisgICAgY29uc3RyYWludF90eXBl ID0gInAiCisKKworY2xhc3MgVW5pcXVlQ29uc3RyYWludFZpZXcoSW5kZXhD b25zdHJhaW50Vmlldyk6CisgICAgbm9kZV90eXBlID0gJ3VuaXF1ZV9jb25z dHJhaW50JworCisgICAgbm9kZV9sYWJlbCA9IF8oJ1VuaXF1ZSBjb25zdHJh aW50JykKKworICAgIGNvbnN0cmFpbnRfbmFtZSA9ICJVTklRVUUiCisKKyAg ICBjb25zdHJhaW50X3R5cGUgPSAidSIKKworCitwcmltYXJ5X2tleV9jb25z dHJhaW50ID0gQ29uc3RyYWludFJlZ2lzdHJ5KAorICAgICdwcmltYXJ5X2tl eScsIFByaW1hcnlLZXlDb25zdHJhaW50TW9kdWxlLCBQcmltYXJ5S2V5Q29u c3RyYWludFZpZXcKKyAgICApCisKK3VuaXF1ZV9jb25zdHJhaW50ID0gQ29u c3RyYWludFJlZ2lzdHJ5KAorICAgICd1bmlxdWVfY29uc3RyYWludCcsIFVu aXF1ZUNvbnN0cmFpbnRNb2R1bGUsIFVuaXF1ZUNvbnN0cmFpbnRWaWV3Cisg ICAgKQorCitQcmltYXJ5S2V5Q29uc3RyYWludFZpZXcucmVnaXN0ZXJfbm9k ZV92aWV3KHByaW1hcnlfa2V5X2JsdWVwcmludCkKK1VuaXF1ZUNvbnN0cmFp bnRWaWV3LnJlZ2lzdGVyX25vZGVfdmlldyh1bmlxdWVfY29uc3RyYWludF9i bHVlcHJpbnQpCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMv Y29uc3RyYWludHMvaW5kZXhfY29uc3RyYWludC9zdGF0aWMvaW1nL3ByaW1h cnlfa2V5LnBuZyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9jb25zdHJhaW50 cy9pbmRleF9jb25zdHJhaW50L3N0YXRpYy9pbWcvcHJpbWFyeV9rZXkucG5n Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI1N2Y1OTc3ODU1NGMzYjBlZTFi ODcyYTQxNzRjYmU2MzFlZTY0ZTIKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFs IDQ0Mwp6Y21lQVNATj8ob2xIeWB1VkJxIWlhMHZwXjB3QiE2Mz93eWxgR2JN ZjxOJSkjUzBNZjFlRH49TWNFP3hoLWFBd08Kej8pazJGJiRyKF9RKzw0OyZi UUFPekktX0w+RGBWbUAzITROUmRSNUYjTz5xZFVxN0F3e0M+eFdtJE4+O24p VWgzCno7eEJJKGV8YklZXlEoIVVVTm5BdyhlKFlwK0lQPSllKkpqal5WXkxk bz1eRHJWIzRQKTN2TTR6YDEqRml0eiF8Tgp6VW8/TXQpcUMkdT9iblktS2Zs fWpAJTRnRnVqayE4blMxdzQpIVFkNC1hYzckX2YqbUdtMERfVj9gUSpeI2FJ JkwKejd0Ry1CPl8hQHAhJiVARlNxITgten1XMyV3akdjV0A5RStnQjVecjZW RjZie04+WS1gR3ZtITBIZj0wY0lKdm8/CnpzUE9aTFBtVD1zJSo/ezg4Umpw VHUlVG5jajIkZ1lNQzFiO3FUMmshe05md35KdEpMM21veD9YI3lTVWsmK2VE IQp6YUk5ZnQ8Q0JmR3R6fGFKVWlyQXJmYFFAMlRHa3pCLVVnUWd0eF8jPGpW TVY7RUo/TFdFPW1QYjNgUGNxMkQqa3UKengoMD9KTWd+P1UjI1NiIys2SmFw MV90eHE+OChRMWtlaT45bk58dFdVfDxRPjA5MCphV25jITthQjZ6IThsVk9T Ck1QZ2cmZWJ4c0xRMDdlKGFrcEtWeQoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAx CgpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2NvbnN0cmFp bnRzL2luZGV4X2NvbnN0cmFpbnQvc3RhdGljL2ltZy91bmlxdWVfY29uc3Ry YWludC5wbmcgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29uc3RyYWludHMv aW5kZXhfY29uc3RyYWludC9zdGF0aWMvaW1nL3VuaXF1ZV9jb25zdHJhaW50 LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lODI4NTcyMzVlZDFkNWJi MzUxYjk4MWM0NDdlYzMzNzBkNDk1ZmE5CkdJVCBiaW5hcnkgcGF0Y2gKbGl0 ZXJhbCA0MjIKemNtZUFTQE4/KG9sSHlgdVZCcSFpYTB2cF4wd0IhNjM/d3ls YEdiS31WfU1WSEUwQXRwZFA2NXxae09OR2M/JlBLCno5bGtUPyV3eWw/Nkdk Q0VnfDlxY3YrTVRxRF5MNTUtT0ppXkhGVzhQK01SYlltdDJXaGE9Q1dmVUYq VV90dmx+VQp6RjElV3w8JGc7NGBKJn1GcVVLKygtfUluJCtrQHlpSHlidVFE cURJaFp1YWVsYiZ2RHItSE14ZXIpPTVkUmoxITkKekl7SXFEal8xd21wN3Z+ ZHYwKHEzSE9Kb1AzMW1uQjlsPS08PFFMNH5AYSNxIWtpJUt2NW1ea1JKOzIh UVdWUmlVCno1IyNDTjckUn1HeDZoUkNLbWQ8KGVRYTc8K0smSD4rTkdJQkEq OztvRWpQQ1EoQnohM1YhQ0szXlQhTGttejVaewp6Sis4OTUoWDd6KHFPKVZO TndSfGVzVj88YiVicz93bGFKNm5tVSt5MyE8eVQ1YkhxS35EeDNYX0hlVl5z e0huXzQKemdibU9oKWVfZjtsOWFAZlJJQjhvUjNPRCpXTUY4WllpT2l2VT5J VSNVfWEpI1duIXZyVX18TXhGej1uLURpalU1Cm5gNi0hY2xASlhFbVM3RCkp aDFSM1cpS2FocmlaUXBZR0NrbV4+YlAwbCtYa0tHUTZ5QwoKbGl0ZXJhbCAw CkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFi bGVzL2NvbnN0cmFpbnRzL2luZGV4X2NvbnN0cmFpbnQvdGVtcGxhdGVzL2lu ZGV4X2NvbnN0cmFpbnQvanMvaW5kZXhfY29uc3RyYWludC5qcyBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL3RhYmxlcy9jb25zdHJhaW50cy9pbmRleF9jb25zdHJhaW50 L3RlbXBsYXRlcy9pbmRleF9jb25zdHJhaW50L2pzL2luZGV4X2NvbnN0cmFp bnQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjE5 ZDkwZgotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxl cy9jb25zdHJhaW50cy9pbmRleF9jb25zdHJhaW50L3RlbXBsYXRlcy9pbmRl eF9jb25zdHJhaW50L2pzL2luZGV4X2NvbnN0cmFpbnQuanMKQEAgLTAsMCAr MSw1MzYgQEAKK2RlZmluZSgKKyAgICAgICAgWydqcXVlcnknLCAndW5kZXJz Y29yZScsICd1bmRlcnNjb3JlLnN0cmluZycsICdwZ2FkbWluJywKKyAgICAg ICAgJ3BnYWRtaW4uYnJvd3NlcicsICdhbGVydGlmeScsICdwZ2FkbWluLmJy b3dzZXIuY29sbGVjdGlvbiddLAorZnVuY3Rpb24oJCwgXywgUywgcGdBZG1p biwgcGdCcm93c2VyLCBhbGVydGlmeSkgeworCisgIC8vIEV4dGVuZCB0aGUg YnJvd3NlcidzIG5vZGUgY2xhc3MgZm9yIGluZGV4IGNvbnN0cmFpbnQgbm9k ZQorICBpZiAoIXBnQnJvd3Nlci5Ob2Rlc1sne3tub2RlX3R5cGV9fSddKSB7 CisgICAgcGdBZG1pbi5Ccm93c2VyLk5vZGVzWyd7e25vZGVfdHlwZX19J10g PSBwZ0Jyb3dzZXIuTm9kZS5leHRlbmQoeworICAgICAgdHlwZTogJ3t7bm9k ZV90eXBlfX0nLAorICAgICAgbGFiZWw6ICd7eyBub2RlX2xhYmVsIH19JywK KyAgICAgIGNvbGxlY3Rpb25fdHlwZTogJ2NvbGwtY29uc3RyYWludHMnLAor ICAgICAgc3FsQWx0ZXJIZWxwOiAnZGRsLWFsdGVyLmh0bWwnLAorICAgICAg c3FsQ3JlYXRlSGVscDogJ2RkbC1jb25zdHJhaW50cy5odG1sJywKKyAgICAg IGhhc1NRTDogdHJ1ZSwKKyAgICAgIGhhc0RlcGVuZHM6IGZhbHNlLAorICAg ICAgcGFyZW50X3R5cGU6ICd0YWJsZScsCisgICAgICBjYW5Ecm9wOiB0cnVl LAorICAgICAgY2FuRHJvcENhc2NhZGU6IHRydWUsCisgICAgICBJbml0OiBm dW5jdGlvbigpIHsKKyAgICAgICAgLyogQXZvaWQgbXVsdGlwbGUgcmVnaXN0 cmF0aW9uIG9mIG1lbnVzICovCisgICAgICAgIGlmICh0aGlzLmluaXRpYWxp emVkKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuaW5p dGlhbGl6ZWQgPSB0cnVlOworCisgICAgICAgIHBnQnJvd3Nlci5hZGRfbWVu dXMoW3sKKyAgICAgICAgICBuYW1lOiAnY3JlYXRlX3t7bm9kZV90eXBlfX1f b25fY29sbCcsIG5vZGU6ICdjb2xsLWNvbnN0cmFpbnRzJywgbW9kdWxlOiB0 aGlzLAorICAgICAgICAgIGFwcGxpZXM6IFsnb2JqZWN0JywgJ2NvbnRleHQn XSwgY2FsbGJhY2s6ICdzaG93X29ial9wcm9wZXJ0aWVzJywKKyAgICAgICAg ICBjYXRlZ29yeTogJ2NyZWF0ZScsIHByaW9yaXR5OiA0LCBsYWJlbDogJ3t7 IG5vZGVfbGFiZWwgfX0nLAorICAgICAgICAgIGljb246ICd3Y1RhYkljb24g aWNvbi17e25vZGVfdHlwZX19JywgZGF0YToge2FjdGlvbjogJ2NyZWF0ZScs IGNoZWNrOiB0cnVlfSwKKyAgICAgICAgICBlbmFibGU6ICdjYW5DcmVhdGUn CisKKyAgICAgICAgfQorICAgICAgICBdKTsKKyAgICAgIH0sCisgICAgICBj YW5DcmVhdGU6IGZ1bmN0aW9uKGl0ZW1EYXRhLCBpdGVtLCBkYXRhKSB7Cisg ICAgICAgIC8vIElmIGNoZWNrIGlzIGZhbHNlIHRoZW4gLCB3ZSB3aWxsIGFs bG93IGNyZWF0ZSBtZW51CisgICAgICAgIGlmIChkYXRhICYmIGRhdGEuY2hl Y2sgPT0gZmFsc2UpCisgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAg ICAgdmFyIHQgPSBwZ0Jyb3dzZXIudHJlZSwgaSA9IGl0ZW0sIGQgPSBpdGVt RGF0YSwgcGFyZW50cyA9IFtdOworICAgICAgICAvLyBUbyBpdGVyYXRlIG92 ZXIgdHJlZSB0byBjaGVjayBwYXJlbnQgbm9kZQorICAgICAgICB3aGlsZSAo aSkgeworICAgICAgICAgIC8vIElmIGl0IGlzIHNjaGVtYSB0aGVuIGFsbG93 IHVzZXIgdG8gYyByZWF0ZSB0YWJsZQorICAgICAgICAgIGlmIChfLmluZGV4 T2YoWydzY2hlbWEnXSwgZC5fdHlwZSkgPiAtMSkgeworICAgICAgICAgICAg eyUgaWYgbm9kZV90eXBlID09ICdwcmltYXJ5X2tleScgJX0KKyAgICAgICAg ICAgIC8vIFRoZXJlIHNob3VsZCBiZSBvbmx5IG9uZSBwcmltYXJ5IGtleSBw ZXIgdGFibGUuCisgICAgICAgICAgICB2YXIgY2hpbGRyZW4gPSB0LmNoaWxk cmVuKGFyZ3VtZW50c1sxXSwgZmFsc2UpLAorICAgICAgICAgICAgICBwcmlt YXJ5X2tleV9mb3VuZCA9IGZhbHNlOworCisgICAgICAgICAgICBfLmVhY2go Y2hpbGRyZW4sIGZ1bmN0aW9uKGNoaWxkKXsKKyAgICAgICAgICAgICAgZGF0 YSA9IHBnQnJvd3Nlci50cmVlLml0ZW1EYXRhKCQoY2hpbGQpKTsKKyAgICAg ICAgICAgICAgaWYgKCFwcmltYXJ5X2tleV9mb3VuZCAmJiBkYXRhLl90eXBl ID09ICJwcmltYXJ5X2tleSIpIHsKKyAgICAgICAgICAgICAgICBwcmltYXJ5 X2tleV9mb3VuZCA9IHRydWU7CisgICAgICAgICAgICAgIH0KKyAgICAgICAg ICAgIH0pOworICAgICAgICAgICAgcmV0dXJuICFwcmltYXJ5X2tleV9mb3Vu ZDsKKyAgICAgICAgICAgIHslIGVsc2UgJX0KKyAgICAgICAgICAgIHJldHVy biB0cnVlOworICAgICAgICAgICAgeyUgZW5kaWYgJX0KKyAgICAgICAgICB9 CisgICAgICAgICAgcGFyZW50cy5wdXNoKGQuX3R5cGUpOworICAgICAgICAg IGkgPSB0Lmhhc1BhcmVudChpKSA/IHQucGFyZW50KGkpIDogbnVsbDsKKyAg ICAgICAgICBkID0gaSA/IHQuaXRlbURhdGEoaSkgOiBudWxsOworICAgICAg ICB9CisgICAgICAgIC8vIElmIG5vZGUgaXMgdW5kZXIgY2F0YWxvZyB0aGVu IGRvIG5vdCBhbGxvdyAnY3JlYXRlJyBtZW51CisgICAgICAgIGlmIChfLmlu ZGV4T2YocGFyZW50cywgJ2NhdGFsb2cnKSA+IC0xKSB7CisgICAgICAgICAg cmV0dXJuIGZhbHNlOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg cmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgIH0sCisKKyAgICAgIC8v IERlZmluZSB0aGUgbW9kZWwgZm9yIGluZGV4IGNvbnN0cmFpbnQgbm9kZQor ICAgICAgbW9kZWw6IHBnQWRtaW4uQnJvd3Nlci5Ob2RlLk1vZGVsLmV4dGVu ZCh7CisgICAgICAgIGRlZmF1bHRzOiB7CisgICAgICAgICAgbmFtZTogdW5k ZWZpbmVkLAorICAgICAgICAgIG9pZDogdW5kZWZpbmVkLAorICAgICAgICAg IGNvbW1lbnQ6IHVuZGVmaW5lZCwKKyAgICAgICAgICBzcGNuYW1lOiAicGdf ZGVmYXVsdCIsCisgICAgICAgICAgaW5kZXg6IHVuZGVmaW5lZCwKKyAgICAg ICAgICBmaWxsZmFjdG9yOiB1bmRlZmluZWQsCisgICAgICAgICAgY29uZGVm ZXJyYWJsZTogdW5kZWZpbmVkLAorICAgICAgICAgIGNvbmRlZmVycmVkOiB1 bmRlZmluZWQsCisgICAgICAgICAgY29sdW1uczogW10KKyAgICAgICAgfSwK KworICAgICAgICAvLyBEZWZpbmUgdGhlIHNjaGVtYSBmb3IgdGhlIGluZGV4 IGNvbnN0cmFpbnQgbm9kZQorICAgICAgICBzY2hlbWE6IFt7CisgICAgICAg ICAgaWQ6ICduYW1lJywgbGFiZWw6ICd7eyBfKCdOYW1lJykgfX0nLCB0eXBl OiAndGV4dCcsCisgICAgICAgICAgbW9kZTogWydwcm9wZXJ0aWVzJywgJ2Ny ZWF0ZScsICdlZGl0J10sIGVkaXRhYmxlOnRydWUsCisgICAgICAgICAgY2Vs bEhlYWRlckNsYXNzZXM6J3dpZHRoX3BlcmNlbnRfNDAnLAorICAgICAgICB9 LHsKKyAgICAgICAgICBpZDogJ29pZCcsIGxhYmVsOid7eyBfKCdPSUQnKSB9 fScsIGNlbGw6ICdzdHJpbmcnLAorICAgICAgICAgIHR5cGU6ICd0ZXh0JyAs IG1vZGU6IFsncHJvcGVydGllcyddLCBlZGl0YWJsZTogZmFsc2UsCisgICAg ICAgICAgY2VsbEhlYWRlckNsYXNzZXM6J3dpZHRoX3BlcmNlbnRfMjAnLAor ICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ2NvbW1lbnQnLCBsYWJlbDon e3sgXygnQ29tbWVudCcpIH19JywgY2VsbDogJ3N0cmluZycsCisgICAgICAg ICAgdHlwZTogJ211bHRpbGluZScsIG1vZGU6IFsncHJvcGVydGllcycsICdj cmVhdGUnLCAnZWRpdCddLAorICAgICAgICAgIGRlcHM6WyduYW1lJ10sIGRp c2FibGVkOmZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICAgIHZhciBuYW1lID0g bS5nZXQoJ25hbWUnKTsKKyAgICAgICAgICAgIGlmICghKG5hbWUgJiYgbmFt ZSAhPSAnJykpIHsKKyAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlv bigpeworICAgICAgICAgICAgICAgIG0uc2V0KCdjb21tZW50JywgbnVsbCk7 CisgICAgICAgICAgICAgIH0sMTApOworICAgICAgICAgICAgICByZXR1cm4g dHJ1ZTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgIHJl dHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAg ICAgIH0seworICAgICAgICAgIGlkOiAnY29sdW1ucycsIGxhYmVsOiAne3sg XygnQ29sdW1ucycpIH19JywKKyAgICAgICAgICB0eXBlOiAnY29sbGVjdGlv bicsIGdyb3VwOiAne3sgXygnRGVmaW5pdGlvbicpIH19JywKKyAgICAgICAg ICBlZGl0YWJsZTogZmFsc2UsCisgICAgICAgICAgY2VsbDogQmFja2dyaWQu U3RyaW5nQ2VsbC5leHRlbmQoeworICAgICAgICAgICAgaW5pdGlhbGl6ZTog ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgIEJhY2tncmlkLlN0cmluZ0Nl bGwucHJvdG90eXBlLmluaXRpYWxpemUuYXBwbHkodGhpcywgYXJndW1lbnRz KTsKKworICAgICAgICAgICAgICB2YXIgc2VsZiA9IHRoaXMsCisgICAgICAg ICAgICAgICAgY29sbGVjdGlvbiA9IHRoaXMubW9kZWwuZ2V0KCdjb2x1bW5z Jyk7CisKKyAgICAgICAgICAgICAgIC8vIERvIG5vdCBsaXN0ZW4gZm9yIGFu eSBldmVudChzKSBmb3IgZXhpc3RpbmcgY29uc3RyYWludC4KKyAgICAgICAg ICAgICAgaWYgKF8uaXNVbmRlZmluZWQoc2VsZi5tb2RlbC5nZXQoJ29pZCcp KSkgeworICAgICAgICAgICAgICAgIHZhciB0YWJsZUNvbHMgPSBzZWxmLm1v ZGVsLnRvcC5nZXQoJ2NvbHVtbnMnKTsKKyAgICAgICAgICAgICAgICAgIHNl bGYubGlzdGVuVG8odGFibGVDb2xzLCAncmVtb3ZlJyAsIHNlbGYucmVtb3Zl Q29sdW1uKTsKKyAgICAgICAgICAgICAgICAgIHNlbGYubGlzdGVuVG8odGFi bGVDb2xzLCAnY2hhbmdlOm5hbWUnLCBzZWxmLnJlc2V0Q29sT3B0aW9ucyk7 CisgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICBjb2xsZWN0aW9u Lm9uKCdwZ2FkbWluOm11bHRpY29sdW1uOnVwZGF0ZWQnLCBmdW5jdGlvbigp IHsKKyAgICAgICAgICAgICAgICBzZWxmLnJlbmRlci5hcHBseShzZWxmKTsK KyAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgIHNlbGYubGlzdGVu VG8oY29sbGVjdGlvbiwgImFkZCIsIHNlbGYucmVuZGVyKTsKKyAgICAgICAg ICAgICAgc2VsZi5saXN0ZW5Ubyhjb2xsZWN0aW9uLCAicmVtb3ZlIiwgc2Vs Zi5yZW5kZXIpOworICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHJlbW92 ZUNvbHVtbjogZnVuY3Rpb24obSkgeworICAgICAgICAgICAgICB2YXIgc2Vs ZiA9IHRoaXMsCisgICAgICAgICAgICAgICAgICByZW1vdmVkQ29scyA9IHNl bGYubW9kZWwuZ2V0KCdjb2x1bW5zJykud2hlcmUoCisgICAgICAgICAgICAg ICAgICAgIHtjb2x1bW46IG0uZ2V0KCduYW1lJyl9CisgICAgICAgICAgICAg ICAgICAgICk7CisKKyAgICAgICAgICAgICAgc2VsZi5tb2RlbC5nZXQoJ2Nv bHVtbnMnKS5yZW1vdmUocmVtb3ZlZENvbHMpOworICAgICAgICAgICAgICBz ZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBzZWxm LnJlbmRlcigpOworICAgICAgICAgICAgICB9LCAxMCk7CisKKyAgICAgICAg ICAgICAgeyUgaWYgbm9kZV90eXBlID09ICdwcmltYXJ5X2tleScgJX0KKyAg ICAgICAgICAgICAgICB2YXIga2V5ID0gJ3ByaW1hcnlfa2V5JworICAgICAg ICAgICAgICB7JSBlbHNlICV9CisgICAgICAgICAgICAgICAgdmFyIGtleSA9 ICd1bmlxdWVfY29uc3RyYWludCcKKyAgICAgICAgICAgICAgeyUgZW5kaWYg JX0KKworICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsK KyAgICAgICAgICAgICAgICBjb25zdHJhaW50cyA9IHNlbGYubW9kZWwudG9w LmdldChrZXkpOworICAgICAgICAgICAgICAgIHZhciByZW1vdmVkID0gW107 CisgICAgICAgICAgICAgICAgY29uc3RyYWludHMuZWFjaChmdW5jdGlvbihj b25zdHJhaW50KSB7CisgICAgICAgICAgICAgICAgICBpZiAoY29uc3RyYWlu dC5nZXQoImNvbHVtbnMiKS5sZW5ndGggPT0gMCkgeworICAgICAgICAgICAg ICAgICAgICAgcmVtb3ZlZC5wdXNoKGNvbnN0cmFpbnQpOworICAgICAgICAg ICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAg ICAgIGNvbnN0cmFpbnRzLnJlbW92ZShyZW1vdmVkKTsKKyAgICAgICAgICAg ICAgfSwxMDApOworCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgcmVz ZXRDb2xPcHRpb25zIDogZnVuY3Rpb24obSkgeworICAgICAgICAgICAgICB2 YXIgc2VsZiA9IHRoaXMsCisgICAgICAgICAgICAgICAgdXBkYXRlZENvbHMg PSBzZWxmLm1vZGVsLmdldCgnY29sdW1ucycpLndoZXJlKAorICAgICAgICAg ICAgICAgIHtjb2x1bW46IG0ucHJldmlvdXMoJ25hbWUnKX0KKyAgICAgICAg ICAgICAgICApOworICAgICAgICAgICAgICBpZiAodXBkYXRlZENvbHMubGVu Z3RoID4gMCkgeworICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAg ICAgICogVGFibGUgY29sdW1uIG5hbWUgaGFzIGNoYW5nZWQgc28gdXBkYXRl CisgICAgICAgICAgICAgICAgICogY29sdW1uIG5hbWUgaW4gcHJpbWFyeSBr ZXkgYXMgd2VsbC4KKyAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAg ICAgICB1cGRhdGVkQ29sc1swXS5zZXQoCisgICAgICAgICAgICAgICAgeyJj b2x1bW4iOiBtLmdldCgnbmFtZScpfSwKKyAgICAgICAgICAgICAgICB7c2ls ZW50OiB0cnVlfSk7CisgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAg ICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBz ZWxmLnJlbmRlcigpOworICAgICAgICAgICAgICB9LCAxMCk7CisgICAgICAg ICAgICB9LAorICAgICAgICAgICAgZm9ybWF0dGVyOiB7CisgICAgICAgICAg ICAgIGZyb21SYXc6IGZ1bmN0aW9uIChyYXdWYWx1ZSwgbW9kZWwpIHsKKyAg ICAgICAgICAgICAgICByZXR1cm4gcmF3VmFsdWUucGx1Y2soImNvbHVtbiIp LnRvU3RyaW5nKCk7CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAg IHRvUmF3OiBmdW5jdGlvbiAodmFsLCBtb2RlbCkgeworICAgICAgICAgICAg ICAgIHJldHVybiB2YWw7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg IH0sCisgICAgICAgICAgICByZW5kZXI6IGZ1bmN0aW9uKCkgeworICAgICAg ICAgICAgICByZXR1cm4gQmFja2dyaWQuU3RyaW5nQ2VsbC5wcm90b3R5cGUu cmVuZGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CisgICAgICAgICAgICB9 LAorICAgICAgICAgICAgcmVtb3ZlOiBmdW5jdGlvbigpIHsKKyAgICAgICAg ICAgICAgdmFyIHRhYmxlQ29scyA9IHRoaXMubW9kZWwudG9wLmdldCgnY29s dW1ucycpLAorICAgICAgICAgICAgICBwcmltYXJ5X2tleV9jb2wgPSB0aGlz Lm1vZGVsLmdldCgnY29sdW1ucycpOworCisgICAgICAgICAgICAgIGlmIChw cmltYXJ5X2tleV9jb2wpIHsKKyAgICAgICAgICAgICAgICBwcmltYXJ5X2tl eV9jb2wub2ZmKCdwZ2FkbWluOm11bHRpY29sdW1uOnVwZGF0ZWQnKTsKKyAg ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgIHRoaXMuc3RvcExpc3Rl bmluZyh0YWJsZUNvbHMsICdyZW1vdmUnICwgc2VsZi5yZW1vdmVDb2x1bW4p OworICAgICAgICAgICAgICB0aGlzLnN0b3BMaXN0ZW5pbmcodGFibGVDb2xz LCAnY2hhbmdlOm5hbWUnICwgc2VsZi5yZXNldENvbE9wdGlvbnMpOworCisg ICAgICAgICAgICAgIEJhY2tncmlkLlN0cmluZ0NlbGwucHJvdG90eXBlLnJl bW92ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpOworICAgICAgICAgICAgfQor ICAgICAgICAgIH0pLAorICAgICAgICAgIGNhbkRlbGV0ZTogdHJ1ZSwgY2Fu QWRkOiB0cnVlLAorICAgICAgICAgIGNvbnRyb2w6IEJhY2tmb3JtLk11bHRp U2VsZWN0QWpheENvbnRyb2wuZXh0ZW5kKHsKKyAgICAgICAgICAgIGZvcm1h dHRlcjogeworICAgICAgICAgICAgICBmcm9tUmF3OiBmdW5jdGlvbiAocmF3 RGF0YSwgbW9kZWwpIHsKKyAgICAgICAgICAgICAgICB2YXIgcmVzID0gXy5p c09iamVjdChyYXdEYXRhKSA/CisgICAgICAgICAgICAgICAgICAgICAgcmF3 RGF0YSA6IEpTT04ucGFyc2UocmF3RGF0YSk7CisKKyAgICAgICAgICAgICAg ICByZXR1cm4gXy5wbHVjayhyZXMsICdjb2x1bW4nKTsKKyAgICAgICAgICAg ICAgfSwKKyAgICAgICAgICAgICAgdG9SYXc6IGZ1bmN0aW9uIChmb3JtYXR0 ZWREYXRhLCBtb2RlbCkgeworICAgICAgICAgICAgICAgIHJldHVybiBmb3Jt YXR0ZWREYXRhOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAor ICAgICAgICAgICAgZGVmYXVsdHM6IF8uZXh0ZW5kKAorICAgICAgICAgICAg ICB7fSwKKyAgICAgICAgICAgICAgQmFja2Zvcm0uTm9kZUxpc3RCeU5hbWVD b250cm9sLnByb3RvdHlwZS5kZWZhdWx0cywKKyAgICAgICAgICAgICAgewor ICAgICAgICAgICAgICAgIHNlbGVjdDI6IHsKKyAgICAgICAgICAgICAgICAg IG11bHRpcGxlOiB0cnVlLAorICAgICAgICAgICAgICAgICAgYWxsb3dDbGVh cjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgIHdpZHRoOiAnc3R5bGUnLAor ICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICd7eyBfKCdTZWxlY3Qg dGhlIGNvbHVtbihzKScpIH19JywKKyAgICAgICAgICAgICAgICB9CisgICAg ICAgICAgICAgIH0KKyAgICAgICAgICAgICksCisgICAgICAgICAgICBpbml0 aWFsaXplOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIC8vIEhlcmUgd2Ug d2lsbCBkZWNpZGUgaWYgd2UgbmVlZCB0byBjYWxsIFVSTAorICAgICAgICAg ICAgLy8gT3IgZmV0Y2ggdGhlIGRhdGEgZnJvbSBwYXJlbnQgY29sdW1ucyBj b2xsZWN0aW9uCisgICAgICAgICAgICAgIHZhciBzZWxmID0gdGhpczsKKyAg ICAgICAgICAgICAgaWYodGhpcy5tb2RlbC5oYW5kbGVyKSB7CisgICAgICAg ICAgICAgICAgQmFja2Zvcm0uU2VsZWN0MkNvbnRyb2wucHJvdG90eXBlLmlu aXRpYWxpemUuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKKyAgICAgICAgICAg ICAgICAvLyBEbyBub3QgbGlzdGVuIGZvciBhbnkgZXZlbnQocykgZm9yIGV4 aXN0aW5nIGNvbnN0cmFpbnQuCisgICAgICAgICAgICAgICAgaWYgKF8uaXNV bmRlZmluZWQoc2VsZi5tb2RlbC5nZXQoJ29pZCcpKSkgeworICAgICAgICAg ICAgICAgICAgdmFyIHRhYmxlQ29scyA9IHNlbGYubW9kZWwudG9wLmdldCgn Y29sdW1ucycpOworICAgICAgICAgICAgICAgICAgc2VsZi5saXN0ZW5Ubyh0 YWJsZUNvbHMsICdyZW1vdmUnICwgc2VsZi5yZXNldENvbE9wdGlvbnMpOwor ICAgICAgICAgICAgICAgICAgc2VsZi5saXN0ZW5Ubyh0YWJsZUNvbHMsICdj aGFuZ2U6bmFtZScsIHNlbGYucmVzZXRDb2xPcHRpb25zKTsKKyAgICAgICAg ICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBzZWxmLmN1c3RvbV9vcHRp b25zKCk7CisgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg ICAgQmFja2Zvcm0uTXVsdGlTZWxlY3RBamF4Q29udHJvbC5wcm90b3R5cGUu aW5pdGlhbGl6ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpOworICAgICAgICAg ICAgICB9CisgICAgICAgICAgICAgIHNlbGYubW9kZWwuZ2V0KCdjb2x1bW5z Jykub24oJ3BnYWRtaW46bXVsdGljb2x1bW46dXBkYXRlZCcsIGZ1bmN0aW9u KCkgeworICAgICAgICAgICAgICAgICAgc2VsZi5yZW5kZXIuYXBwbHkoc2Vs Zik7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9LAorICAg ICAgICAgICAgcmVzZXRDb2xPcHRpb25zOiBmdW5jdGlvbihtKSB7CisgICAg ICAgICAgICAgIHZhciBzZWxmID0gdGhpczsKKworICAgICAgICAgICAgICBz ZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBzZWxm LmN1c3RvbV9vcHRpb25zKCk7CisgICAgICAgICAgICAgICAgc2VsZi5yZW5k ZXIuYXBwbHkoc2VsZik7CisgICAgICAgICAgICAgIH0sIDUwKTsKKworICAg ICAgICAgICAgfSwKKyAgICAgICAgICAgIGN1c3RvbV9vcHRpb25zOiBmdW5j dGlvbigpIHsKKyAgICAgICAgICAgICAgLy8gV2Ugd2lsbCBhZGQgYWxsIHRo ZSBjb2x1bW5zIGVudGVyZWQgYnkgdXNlciBpbiB0YWJsZSBtb2RlbAorICAg ICAgICAgICAgICB2YXIgY29sdW1ucyA9IHRoaXMubW9kZWwudG9wLmdldCgn Y29sdW1ucycpLAorICAgICAgICAgICAgICAgIGFkZGVkX2NvbHVtbnNfZnJv bV90YWJsZXMgPSBbXTsKKworICAgICAgICAgICAgICBpZiAoY29sdW1ucy5s ZW5ndGggPiAwKSB7CisgICAgICAgICAgICAgICAgXy5lYWNoKGNvbHVtbnMu bW9kZWxzLCBmdW5jdGlvbihtKSB7CisgICAgICAgICAgICAgICAgICAgIHZh ciBjb2wgPSBtLmdldCgnbmFtZScpOworICAgICAgICAgICAgICAgICAgICBp ZighXy5pc1VuZGVmaW5lZChjb2wpICYmICFfLmlzTnVsbChjb2wpKSB7Cisg ICAgICAgICAgICAgICAgICAgICAgYWRkZWRfY29sdW1uc19mcm9tX3RhYmxl cy5wdXNoKAorICAgICAgICAgICAgICAgICAgICAgICAge2xhYmVsOiBjb2ws IHZhbHVlOiBjb2wsIGltYWdlOidpY29uLWNvbHVtbid9CisgICAgICAgICAg ICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAg ICAgICAgICAgIH0pOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg IC8vIFNldCB0aGUgdmFsdWVzIGluIHRvIG9wdGlvbnMgc28gdGhhdCB1c2Vy IGNhbiBzZWxlY3QKKyAgICAgICAgICAgICAgdGhpcy5maWVsZC5zZXQoJ29w dGlvbnMnLCBhZGRlZF9jb2x1bW5zX2Zyb21fdGFibGVzKTsKKyAgICAgICAg ICAgIH0sCisgICAgICAgICAgICBvbkNoYW5nZTogZnVuY3Rpb24oZSkgewor ICAgICAgICAgICAgICB2YXIgc2VsZiA9IHRoaXMsCisgICAgICAgICAgICAg ICAgICBtb2RlbCA9IHRoaXMubW9kZWwsCisgICAgICAgICAgICAgICAgICAk ZWwgPSAkKGUudGFyZ2V0KSwKKyAgICAgICAgICAgICAgICAgIGF0dHJBcnIg PSB0aGlzLmZpZWxkLmdldCgibmFtZSIpLnNwbGl0KCcuJyksCisgICAgICAg ICAgICAgICAgICBuYW1lID0gYXR0ckFyci5zaGlmdCgpLAorICAgICAgICAg ICAgICAgICAgcGF0aCA9IGF0dHJBcnIuam9pbignLicpLAorICAgICAgICAg ICAgICAgICAgdmFscyA9IHRoaXMuZ2V0VmFsdWVGcm9tRE9NKCksCisgICAg ICAgICAgICAgICAgICBjb2xsZWN0aW9uID0gbW9kZWwuZ2V0KG5hbWUpLAor ICAgICAgICAgICAgICAgICAgcmVtb3ZlZCA9IFtdOworCisgICAgICAgICAg ICAgIHRoaXMuc3RvcExpc3RlbmluZyh0aGlzLm1vZGVsLCAiY2hhbmdlOiIg KyBuYW1lLCB0aGlzLnJlbmRlcik7CisKKyAgICAgICAgICAgICAgLyoKKyAg ICAgICAgICAgICAgICogSXRlcmF0ZSB0aHJvdWdoIGFsbCB0aGUgdmFsdWVz LCBhbmQgZmluZCBvdXQgaG93IG1hbnkgYXJlIGFscmVhZHkKKyAgICAgICAg ICAgICAgICogcHJlc2VudCBpbiB0aGUgY29sbGVjdGlvbi4KKyAgICAgICAg ICAgICAgICovCisgICAgICAgICAgICAgIGNvbGxlY3Rpb24uZWFjaChmdW5j dGlvbihtKSB7CisgICAgICAgICAgICAgICAgICB2YXIgY29sdW1uID0gbS5n ZXQoJ2NvbHVtbicpLAorICAgICAgICAgICAgICAgICAgICAgIGlkeCA9IF8u aW5kZXhPZih2YWxzLCBjb2x1bW4pOworCisgICAgICAgICAgICAgICAgICBp ZiAoaWR4ID4gLTEpIHsKKyAgICAgICAgICAgICAgICAgICAgdmFscy5zcGxp Y2UoaWR4LCAxKTsKKyAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAg ICAgICAgICAgICAgICAgIHJlbW92ZWQucHVzaChjb2x1bW4pOworICAgICAg ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAg ICAgICAgLyoKKyAgICAgICAgICAgICAgICogQWRkaW5nIG5ldyB2YWx1ZXMK KyAgICAgICAgICAgICAgICovCisKKyAgICAgICAgICAgICAgXy5lYWNoKHZh bHMsIGZ1bmN0aW9uKHYpIHsKKyAgICAgICAgICAgICAgICB2YXIgbSA9IG5l dyAoc2VsZi5maWVsZC5nZXQoJ21vZGVsJykpKAorICAgICAgICAgICAgICAg ICAgICAgIHtjb2x1bW46IHZ9LCB7IHNpbGVudDogdHJ1ZSwKKyAgICAgICAg ICAgICAgICAgICAgICB0b3A6IHNlbGYubW9kZWwudG9wLAorICAgICAgICAg ICAgICAgICAgICAgIGNvbGxlY3Rpb246IGNvbGxlY3Rpb24sCisgICAgICAg ICAgICAgICAgICAgICAgaGFuZGxlcjogY29sbGVjdGlvbgorICAgICAgICAg ICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgICAgIGNvbGxlY3Rpb24u YWRkKG0pOworICAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgICAv KgorICAgICAgICAgICAgICAgKiBSZW1vdmluZyB1bndhbnRlZCEKKyAgICAg ICAgICAgICAgICovCisgICAgICAgICAgICAgIF8uZWFjaChyZW1vdmVkLCBm dW5jdGlvbih2KSB7CisgICAgICAgICAgICAgICAgY29sbGVjdGlvbi5yZW1v dmUoY29sbGVjdGlvbi53aGVyZSh7Y29sdW1uOiB2fSkpOworICAgICAgICAg ICAgICB9KTsKKworICAgICAgICAgICAgICB0aGlzLmxpc3RlblRvKHRoaXMu bW9kZWwsICJjaGFuZ2U6IiArIG5hbWUsIHRoaXMucmVuZGVyKTsKKyAgICAg ICAgICAgIH0sCisgICAgICAgICAgICByZW1vdmU6IGZ1bmN0aW9uKCkgewor ICAgICAgICAgICAgICBpZih0aGlzLm1vZGVsLmhhbmRsZXIpIHsKKyAgICAg ICAgICAgICAgICB2YXIgc2VsZiA9IHRoaXMsCisgICAgICAgICAgICAgICAg dGFibGVDb2xzID0gc2VsZi5tb2RlbC50b3AuZ2V0KCdjb2x1bW5zJyk7Cisg ICAgICAgICAgICAgICAgc2VsZi5zdG9wTGlzdGVuaW5nKHRhYmxlQ29scywg J3JlbW92ZScgLCBzZWxmLnJlc2V0Q29sT3B0aW9ucyk7CisgICAgICAgICAg ICAgICAgc2VsZi5zdG9wTGlzdGVuaW5nKHRhYmxlQ29scywgJ2NoYW5nZTpu YW1lJyAsIHNlbGYucmVzZXRDb2xPcHRpb25zKTsKKyAgICAgICAgICAgICAg ICBzZWxmLm1vZGVsLmdldCgnY29sdW1ucycpLm9mZigncGdhZG1pbjptdWx0 aWNvbHVtbjp1cGRhdGVkJyk7CisKKyAgICAgICAgICAgICAgICBCYWNrZm9y bS5TZWxlY3QyQ29udHJvbC5wcm90b3R5cGUucmVtb3ZlLmFwcGx5KHRoaXMs IGFyZ3VtZW50cyk7CisKKyAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg ICAgICAgICAgICBCYWNrZm9ybS5NdWx0aVNlbGVjdEFqYXhDb250cm9sLnBy b3RvdHlwZS5yZW1vdmUuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKKyAgICAg ICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0pLAorICAg ICAgICAgIGRlcHM6IFsnaW5kZXgnXSwgbm9kZTogJ2NvbHVtbicsCisgICAg ICAgICAgbW9kZWw6IHBnQnJvd3Nlci5Ob2RlLk1vZGVsLmV4dGVuZCh7Cisg ICAgICAgICAgICBkZWZhdWx0czogeworICAgICAgICAgICAgICBjb2x1bW46 IHVuZGVmaW5lZAorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHZhbGlk YXRlOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgcmV0dXJuIG51bGw7 CisgICAgICAgICAgIH0KKyAgICAgICAgICB9KSwKKyAgICAgICAgICB0cmFu c2Zvcm0gOiBmdW5jdGlvbihkYXRhKXsKKyAgICAgICAgICAgIHZhciByZXMg PSBbXTsKKyAgICAgICAgICAgIGlmIChkYXRhICYmIF8uaXNBcnJheShkYXRh KSkgeworICAgICAgICAgICAgICBfLmVhY2goZGF0YSwgZnVuY3Rpb24oZCkg eworICAgICAgICAgICAgICAgIHJlcy5wdXNoKHtsYWJlbDogZC5sYWJlbCwg dmFsdWU6IGQubGFiZWwsIGltYWdlOidpY29uLWNvbHVtbid9KTsKKyAgICAg ICAgICAgICAgfSkKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVy biByZXM7CisgICAgICAgICAgfSwKKyAgICAgICAgICBzZWxlY3QyOnthbGxv d0NsZWFyOmZhbHNlfSwKKyAgICAgICAgICBkaXNhYmxlZDogZnVuY3Rpb24o bSkgeworICAgICAgICAgICAgLy8gSWYgd2UgYXJlIGluIHRhYmxlIGVkaXQg bW9kZSB0aGVuCisgICAgICAgICAgICBpZiAoXy5oYXMobSwgJ3RvcCcpICYm ICFfLmlzVW5kZWZpbmVkKG0udG9wKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJiYgIW0udG9wLmlzTmV3KCkpIHsKKyAgICAgICAg ICAgICAgICAvLyBJZiBPSUQgaXMgdW5kZWZpbmVkIHRoZW4gdXNlciBpcyB0 cnlpbmcgdG8gYWRkCisgICAgICAgICAgICAgICAgLy8gbmV3IGNvbnN0cmFp bnQgd2hpY2ggc2hvdWxkIGJlIGFsbG93ZWQgZm9yIFVuaXF1ZQorICAgICAg ICAgICAgICAgIHJldHVybiAhXy5pc1VuZGVmaW5lZChtLmdldCgnb2lkJykp OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBXZSBjYW4ndCB1 cGRhdGUgY29sdW1ucyBvZiBleGlzdGluZyBpbmRleCBjb25zdHJhaW50Lgor ICAgICAgICAgICAgaWYgKCFtLmlzTmV3KCkpIHsKKyAgICAgICAgICAgICAg ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8v IERpc2FibGUgaWYgaW5kZXggaXMgc2VsZWN0ZWQuCisgICAgICAgICAgICB2 YXIgaW5kZXggPSBtLmdldCgnaW5kZXgnKTsKKyAgICAgICAgICAgICAgaWYo Xy5pc1VuZGVmaW5lZChpbmRleCkgfHwgaW5kZXggPT0gJycpIHsKKyAgICAg ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgIH0gZWxz ZSB7CisgICAgICAgICAgICAgICAgdmFyIGNvbCA9IG0uZ2V0KCdjb2x1bW5z Jyk7CisgICAgICAgICAgICAgICAgY29sLnJlc2V0KCk7CisgICAgICAgICAg ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgIH0KKyAgICAgICAg ICAgIH0KKyAgICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ3NwY25hbWUn LCBsYWJlbDogJ3t7IF8oJ1RhYmxlc3BhY2UnKSB9fScsCisgICAgICAgICAg dHlwZTogJ3RleHQnLCBncm91cDogJ3t7IF8oJ0RlZmluaXRpb24nKSB9fScs CisgICAgICAgICAgY29udHJvbDogJ25vZGUtbGlzdC1ieS1uYW1lJywgbm9k ZTogJ3RhYmxlc3BhY2UnLAorICAgICAgICAgIGRlcHM6IFsnaW5kZXgnXSwK KyAgICAgICAgICBzZWxlY3QyOnthbGxvd0NsZWFyOmZhbHNlfSwKKyAgICAg ICAgICBmaWx0ZXI6IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICAgIC8vIERv bid0IHNob3cgcGdfZ2xvYmFsIHRhYmxlc3BhY2UgaW4gc2VsZWN0aW9uLgor ICAgICAgICAgICAgaWYgKG0ubGFiZWwgPT0gInBnX2dsb2JhbCIpIHJldHVy biBmYWxzZTsKKyAgICAgICAgICAgIGVsc2UgcmV0dXJuIHRydWU7CisgICAg ICAgICAgfSwKKyAgICAgICAgICBkaXNhYmxlZDogZnVuY3Rpb24obSkgewor ICAgICAgICAgICAgLy8gRGlzYWJsZSBpZiBpbmRleCBpcyBzZWxlY3RlZC4K KyAgICAgICAgICAgIG0gPSBtLnRvcCB8fCBtOworICAgICAgICAgICAgdmFy IGluZGV4ID0gbS5nZXQoJ2luZGV4Jyk7CisgICAgICAgICAgICAgIGlmKF8u aXNVbmRlZmluZWQoaW5kZXgpIHx8IGluZGV4ID09ICcnKSB7CisgICAgICAg ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICB9IGVsc2Ug eworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKXsKKyAg ICAgICAgICAgICAgICAgIG0uc2V0KCdzcGNuYW1lJywgJycpOworICAgICAg ICAgICAgICAgIH0sMTApOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVl OworICAgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9LHsK KyAgICAgICAgICBpZDogJ2luZGV4JywgbGFiZWw6ICd7eyBfKCdJbmRleCcp IH19JywKKyAgICAgICAgICB0eXBlOiAndGV4dCcsIGdyb3VwOiAne3sgXygn RGVmaW5pdGlvbicpIH19JywKKyAgICAgICAgICBjb250cm9sOiBCYWNrZm9y bS5Ob2RlTGlzdEJ5TmFtZUNvbnRyb2wuZXh0ZW5kKHsKKyAgICAgICAgICBp bml0aWFsaXplOmZ1bmN0aW9uKCkgeworICAgICAgICAgICAgaWYgKF8uaXNV bmRlZmluZWQodGhpcy5tb2RlbC50b3ApKSB7CisgICAgICAgICAgICAgIEJh Y2tmb3JtLk5vZGVMaXN0QnlOYW1lQ29udHJvbC5wcm90b3R5cGUuaW5pdGlh bGl6ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7CisgICAgICAgICAgICB9IGVs c2UgeworICAgICAgICAgICAgICBCYWNrZm9ybS5Db250cm9sLnByb3RvdHlw ZS5pbml0aWFsaXplLmFwcGx5KHRoaXMsYXJndW1lbnRzKTsKKyAgICAgICAg ICAgIH0KKyAgICAgICAgICB9CisgICAgICAgICAgfSksCisgICAgICAgICAg c2VsZWN0Mjp7YWxsb3dDbGVhcjp0cnVlfSwgbm9kZTogJ2luZGV4JywKKyAg ICAgICAgICBkaXNhYmxlZDogZnVuY3Rpb24obSkgeworICAgICAgICAgICAg Ly8gSWYgd2UgYXJlIGluIHRhYmxlIGVkaXQgbW9kZSB0aGVuIGRpc2FibGUg aXQKKyAgICAgICAgICAgIGlmIChfLmhhcyhtLCAndG9wJykgJiYgIV8uaXNV bmRlZmluZWQobS50b3ApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAmJiAhbS50b3AuaXNOZXcoKSkgeworICAgICAgICAgICAgICAg IHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAv LyBXZSBjYW4ndCB1cGRhdGUgaW5kZXggb2YgZXhpc3RpbmcgaW5kZXggY29u c3RyYWludC4KKyAgICAgICAgICAgIHJldHVybiAhbS5pc05ldygpOworICAg ICAgICAgIH0sCisgICAgICAgICAgLy8gV2Ugd2lsbCBub3Qgc2hvdyB0aGlz IGZpZWxkIGluIENyZWF0ZSBUYWJsZSBtb2RlCisgICAgICAgICAgdmlzaWJs ZTogZnVuY3Rpb24obSkgeworICAgICAgICAgICAgcmV0dXJuICFfLmlzVW5k ZWZpbmVkKG0udG9wLm5vZGVfaW5mb1sndGFibGUnXSk7CisgICAgICAgICAg fQorICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ2ZpbGxmYWN0b3InLCBs YWJlbDogJ3t7IF8oJ0ZpbGwgZmFjdG9yJykgfX0nLCBkZXBzOiBbJ2luZGV4 J10sCisgICAgICAgICAgdHlwZTogJ2ludCcsIGdyb3VwOiAne3sgXygnRGVm aW5pdGlvbicpIH19JywgYWxsb3dOdWxsOiB0cnVlLAorICAgICAgICAgIGRp c2FibGVkOiBmdW5jdGlvbihtKSB7CisgICAgICAgICAgICAvLyBEaXNhYmxl IGlmIGluZGV4IGlzIHNlbGVjdGVkLgorICAgICAgICAgICAgdmFyIGluZGV4 ID0gbS5nZXQoJ2luZGV4Jyk7CisgICAgICAgICAgICAgIGlmKF8uaXNVbmRl ZmluZWQoaW5kZXgpIHx8IGluZGV4ID09ICcnKSB7CisgICAgICAgICAgICAg ICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICB9IGVsc2UgeworICAg ICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKXsKKyAgICAgICAg ICAgICAgICAgIG0uc2V0KCdmaWxsZmFjdG9yJywgbnVsbCk7CisgICAgICAg ICAgICAgICAgfSwxMCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7 CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSx7 CisgICAgICAgICAgaWQ6ICdjb25kZWZlcnJhYmxlJywgbGFiZWw6ICd7eyBf KCdEZWZlcnJhYmxlJykgfX0nLAorICAgICAgICAgIHR5cGU6ICdzd2l0Y2gn LCBncm91cDogJ3t7IF8oJ0RlZmluaXRpb24nKSB9fScsIGRlcHM6IFsnaW5k ZXgnXSwKKyAgICAgICAgICBkaXNhYmxlZDogZnVuY3Rpb24obSkgeworICAg ICAgICAgICAgLy8gSWYgd2UgYXJlIGluIHRhYmxlIGVkaXQgbW9kZSB0aGVu CisgICAgICAgICAgICBpZiAoXy5oYXMobSwgJ3RvcCcpICYmICFfLmlzVW5k ZWZpbmVkKG0udG9wKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJiYgIW0udG9wLmlzTmV3KCkpIHsKKyAgICAgICAgICAgICAgICAv LyBJZiBPSUQgaXMgdW5kZWZpbmVkIHRoZW4gdXNlciBpcyB0cnlpbmcgdG8g YWRkCisgICAgICAgICAgICAgICAgLy8gbmV3IGNvbnN0cmFpbnQgd2hpY2gg c2hvdWxkIGFsbG93ZWQgZm9yIFVuaXF1ZQorICAgICAgICAgICAgICAgIHJl dHVybiAhXy5pc1VuZGVmaW5lZChtLmdldCgnb2lkJykpOworICAgICAgICAg ICAgfQorCisgICAgICAgICAgICAvLyBXZSBjYW4ndCB1cGRhdGUgY29uZGVm ZXJyYWJsZSBvZiBleGlzdGluZyBpbmRleCBjb25zdHJhaW50LgorICAgICAg ICAgICAgaWYgKCFtLmlzTmV3KCkpIHsKKyAgICAgICAgICAgICAgICByZXR1 cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vIERpc2Fi bGUgaWYgaW5kZXggaXMgc2VsZWN0ZWQuCisgICAgICAgICAgICB2YXIgaW5k ZXggPSBtLmdldCgnaW5kZXgnKTsKKyAgICAgICAgICAgIGlmKF8uaXNVbmRl ZmluZWQoaW5kZXgpIHx8IGluZGV4ID09ICcnKSB7CisgICAgICAgICAgICAg IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg ICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKXsKKyAgICAgICAgICAgICAg ICBtLnNldCgnY29uZGVmZXJyYWJsZScsIGZhbHNlKTsKKyAgICAgICAgICAg ICAgfSwxMCk7CisgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg ICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfSx7CisgICAgICAgICAg aWQ6ICdjb25kZWZlcnJlZCcsIGxhYmVsOiAne3sgXygnRGVmZXJyZWQnKSB9 fScsCisgICAgICAgICAgdHlwZTogJ3N3aXRjaCcsIGdyb3VwOiAne3sgXygn RGVmaW5pdGlvbicpIH19JywKKyAgICAgICAgICBkZXBzOiBbJ2NvbmRlZmVy cmFibGUnXSwKKyAgICAgICAgICBkaXNhYmxlZDogZnVuY3Rpb24obSkgewor ICAgICAgICAgICAgLy8gSWYgd2UgYXJlIGluIHRhYmxlIGVkaXQgbW9kZSB0 aGVuCisgICAgICAgICAgICBpZiAoXy5oYXMobSwgJ3RvcCcpICYmICFfLmlz VW5kZWZpbmVkKG0udG9wKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJiYgIW0udG9wLmlzTmV3KCkpIHsKKyAgICAgICAgICAgICAg ICAvLyBJZiBPSUQgaXMgdW5kZWZpbmVkIHRoZW4gdXNlciBpcyB0cnlpbmcg dG8gYWRkCisgICAgICAgICAgICAgICAgLy8gbmV3IGNvbnN0cmFpbnQgd2hp Y2ggc2hvdWxkIGFsbG93ZWQgZm9yIFVuaXF1ZQorICAgICAgICAgICAgICAg IHJldHVybiAhXy5pc1VuZGVmaW5lZChtLmdldCgnb2lkJykpOworICAgICAg ICAgICAgfQorCisgICAgICAgICAgICAvLyBXZSBjYW4ndCB1cGRhdGUgY29u ZGVmZXJyZWQgb2YgZXhpc3RpbmcgaW5kZXggY29uc3RyYWludC4KKyAgICAg ICAgICAgIGlmICghbS5pc05ldygpKSB7CisgICAgICAgICAgICAgIHJldHVy biB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLy8gRGlzYWJs ZSBpZiBjb25kZWZlcnJlZCBpcyBmYWxzZSBvciB1bnNlbGVjdGVkLgorICAg ICAgICAgICAgaWYobS5nZXQoJ2NvbmRlZmVycmFibGUnKSA9PSB0cnVlKSB7 CisgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0g ZWxzZSB7CisgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKXsK KyAgICAgICAgICAgICAgICBtLnNldCgnY29uZGVmZXJyZWQnLCBmYWxzZSk7 CisgICAgICAgICAgICAgIH0sMTApOworICAgICAgICAgICAgICByZXR1cm4g dHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0K KyAgICAgICAgXSwKKyAgICAgICAgdmFsaWRhdGU6IGZ1bmN0aW9uKCkgewor ICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC5jbGVhcigpOworICAgICAgICAg IC8vIENsZWFyIHBhcmVudCdzIGVycm9yIGFzIHdlbGwKKyAgICAgICAgICBp ZiAoXy5oYXModGhpcywgJ3RvcCcpKSB7CisgICAgICAgICAgICB0aGlzLnRv cC5lcnJvck1vZGVsLmNsZWFyKCk7CisgICAgICAgICAgfQorCisgICAgICAg ICAgdmFyIGNvbHVtbnMgPSB0aGlzLmdldCgnY29sdW1ucycpLAorICAgICAg ICAgICAgaW5kZXggPSB0aGlzLmdldCgnaW5kZXgnKTsKKworICAgICAgICAg ICAgaWYgKChfLmlzVW5kZWZpbmVkKGluZGV4KSB8fCBTdHJpbmcoaW5kZXgp LnJlcGxhY2UoL15ccyt8XHMrJC9nLCAnJykgPT0gJycpICYmCisgICAgICAg ICAgICAgICAgKF8uaXNVbmRlZmluZWQoY29sdW1ucykgfHwgXy5pc051bGwo Y29sdW1ucykgfHwgY29sdW1ucy5sZW5ndGggPCAxKSkgeworICAgICAgICAg ICAgICB2YXIgbXNnID0gJ3t7IF8oJ1BsZWFzZSBzcGVjaWZ5IGNvbHVtbnMg Zm9yICcpIH19JyArICd7eyBub2RlX2xhYmVsIH19JzsKKyAgICAgICAgICAg ICAgdGhpcy5lcnJvck1vZGVsLnNldCgnY29sdW1ucycsIG1zZyk7CisgICAg ICAgICAgICAgIHJldHVybiBtc2c7CisgICAgICAgICAgICB9CisKKyAgICAg ICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorICAgICAgfSkKKyAgfSk7 CisgIH0KKworICByZXR1cm4gcGdCcm93c2VyLk5vZGVzWyd7e25vZGVfdHlw ZX19J107Cit9KTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxl cy9jb25zdHJhaW50cy9zdGF0aWMvaW1nL2NvbGwtY29uc3RyYWludHMucG5n IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2NvbnN0cmFpbnRzL3N0YXRpYy9p bWcvY29sbC1jb25zdHJhaW50cy5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MC4uZDYyZTEzNzA1YzUwZTZjMGNmOGYxOWQ2ODAwNTNlODY0M2UyODc1MQpH SVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMzE0CnpjbWVBU0BOPyhvbEh5YHVW QnEhaWEwdnBeMHdCITczPyQjKWVGUEZ2M0dmTVYxPTJUck84NDd7SmxgfHRg UXBhcwp6bjxoUytsPXJNWT5SR1Bxdmx5ZGl6UkomPkJgT20jVn1SLXlPTT83 QDg2Mk03TkNSPj4zcF5yPWZ3VHUweVBlRm8KejEyVEwpVF52ST10fHVvUFV8 fFpGPHRnYUhHKlFzUSE/bSZUcT0/M21DdX1KI0R4M3hAbU19fV5pRT01TklX WG5rCnprcG5DNGFpJWE+QDtHZzc9dXVtcz05YklLPUVnZH4odXMtM2dASXYw Mmdmc0teSlBeKWdIPW1oQlQ3O2RPSCE/cAp6aSZCOVVnT1AhdWZ2JXlFdTdQ MlFrJTUob3Y2WUY1d3Q9YVlmcX0oTFJYRyQ1eCVueFhYX1hLUzI5e3RBQWt8 Z3wKWFcpS2FocmlaUXBZR0NrbV4+YlAwbCtYa0t5eVJVfQoKbGl0ZXJhbCAw CkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFi bGVzL2NvbnN0cmFpbnRzL3RlbXBsYXRlcy9jb25zdHJhaW50cy9qcy9jb25z dHJhaW50cy5qcyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9jb25zdHJhaW50 cy90ZW1wbGF0ZXMvY29uc3RyYWludHMvanMvY29uc3RyYWludHMuanMKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzgxNDRmZAotLS0g L2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9jb25zdHJh aW50cy90ZW1wbGF0ZXMvY29uc3RyYWludHMvanMvY29uc3RyYWludHMuanMK QEAgLTAsMCArMSw1NCBAQAorZGVmaW5lKAorICBbCisgICdqcXVlcnknLCAn dW5kZXJzY29yZScsICd1bmRlcnNjb3JlLnN0cmluZycsICdwZ2FkbWluJywg J3BnYWRtaW4uYnJvd3NlcicsCisgICdwZ2FkbWluLmJyb3dzZXIuY29sbGVj dGlvbid7JSBmb3IgYyBpbiBjb25zdHJhaW50cyAlfSwgJ3BnYWRtaW4ubm9k ZS57eyBjfHNhZmUgfX0neyVlbmRmb3IlfQorICBdLAorZnVuY3Rpb24oJCwg XywgUywgcGdBZG1pbiwgcGdCcm93c2VyKSB7CisKKyAgaWYgKCFwZ0Jyb3dz ZXIuTm9kZXNbJ2NvbGwtY29uc3RyYWludHMnXSkgeworICAgIHZhciBkYXRh YmFzZXMgPSBwZ0FkbWluLkJyb3dzZXIuTm9kZXNbJ2NvbGwtY29uc3RyYWlu dHMnXSA9CisgICAgICBwZ0FkbWluLkJyb3dzZXIuQ29sbGVjdGlvbi5leHRl bmQoeworICAgICAgICBub2RlOiAnY29uc3RyYWludHMnLAorICAgICAgICBs YWJlbDogJ3t7IF8oJ0NvbnN0cmFpbnRzJykgfX0nLAorICAgICAgICB0eXBl OiAnY29sbC1jb25zdHJhaW50cycsCisgICAgICAgIGNvbHVtbnM6IFsnbmFt ZScsICdjb21tZW50J10KKyAgICAgIH0pOworICB9OworCisgIGlmICghcGdC cm93c2VyLk5vZGVzWydjb25zdHJhaW50cyddKSB7CisgICAgcGdBZG1pbi5C cm93c2VyLk5vZGVzWydjb25zdHJhaW50cyddID0gcGdCcm93c2VyLk5vZGUu ZXh0ZW5kKHsKKyAgICAgIHR5cGU6ICdjb25zdHJhaW50cycsCisgICAgICBs YWJlbDogJ3t7IF8oJ0NvbnN0cmFpbnRzJykgfX0nLAorICAgICAgY29sbGVj dGlvbl90eXBlOiAnY29sbC1jb25zdHJhaW50cycsCisgICAgICBwYXJlbnRf dHlwZTogWyd0YWJsZSddLAorICAgICAgSW5pdDogZnVuY3Rpb24oKSB7Cisg ICAgICAgIC8qIEF2b2lkIG11bGl0cGxlIHJlZ2lzdHJhdGlvbiBvZiBtZW51 cyAqLworICAgICAgICBpZiAodGhpcy5pbml0aWFsaXplZCkKKyAgICAgICAg ICAgIHJldHVybjsKKworICAgICAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1 ZTsKKworICAgICAgICBwZ0Jyb3dzZXIuYWRkX21lbnVzKFtdKTsKKyAgICAg IH0sCisgICAgICBtb2RlbDogcGdBZG1pbi5Ccm93c2VyLk5vZGUuTW9kZWwu ZXh0ZW5kKHsKKyAgICAgICAgZGVmYXVsdHM6IHsKKyAgICAgICAgICBuYW1l OiB1bmRlZmluZWQsCisgICAgICAgICAgb2lkOiB1bmRlZmluZWQsCisgICAg ICAgICAgY29tbWVudDogdW5kZWZpbmVkCisgICAgICAgfSwKKyAgICAgICAg c2NoZW1hOiBbeworICAgICAgICAgIGlkOiAnbmFtZScsIGxhYmVsOiAne3sg XygnTmFtZScpIH19JywgdHlwZTogJ3RleHQnLAorICAgICAgICAgIG1vZGU6 IFsncHJvcGVydGllcycsICdjcmVhdGUnLCAnZWRpdCddCisgICAgICAgIH0s eworICAgICAgICAgIGlkOiAnb2lkJywgbGFiZWw6J3t7IF8oJ09pZCcpIH19 JywgY2VsbDogJ3N0cmluZycsCisgICAgICAgICAgdHlwZTogJ3RleHQnICwg bW9kZTogWydwcm9wZXJ0aWVzJ10KKyAgICAgICAgfSx7CisgICAgICAgICAg aWQ6ICdjb21tZW50JywgbGFiZWw6J3t7IF8oJ0NvbW1lbnQnKSB9fScsIGNl bGw6ICdzdHJpbmcnLAorICAgICAgICAgIHR5cGU6ICdtdWx0aWxpbmUnLCBt b2RlOiBbJ3Byb3BlcnRpZXMnLCAnY3JlYXRlJywgJ2VkaXQnXQorICAgICAg ICB9XQorICAgICAgfSkKKyAgfSk7CisgIH0KKworICByZXR1cm4gcGdCcm93 c2VyLk5vZGVzWydjb25zdHJhaW50cyddOworfSk7ClwgTm8gbmV3bGluZSBh dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFi bGVzL2NvbnN0cmFpbnRzL3R5cGUucHkgYi93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJs ZXMvY29uc3RyYWludHMvdHlwZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwLi5kNzViZjJiCi0tLSAvZGV2L251bGwKKysrIGIvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvdGFibGVzL2NvbnN0cmFpbnRzL3R5cGUucHkKQEAgLTAs MCArMSw0MiBAQAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMK KyMgcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworIworIyBDb3B5cmln aHQgKEMpIDIwMTMgLSAyMDE2LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBU ZWFtCisjIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBv c3RncmVTUUwgTGljZW5jZQorIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKKworZnJvbSBwZ2FkbWluLmJyb3dzZXIuY29sbGVjdGlvbiBpbXBv cnQgQ29sbGVjdGlvbk5vZGVNb2R1bGUKK2Zyb20gZmxhc2sgaW1wb3J0IEJs dWVwcmludAorCisKK2NsYXNzIENvbnN0cmFpbnRSZWdpc3RyeShvYmplY3Qp OgorICAgICIiIgorICAgIENvbnN0cmFpbnRUeXBlUmVnaXN0cnkKKworICAg IEl0IGlzIG1vcmUgb2YgYSByZWdpc3RyeSBmb3IgZGlmZmVyZW5jZSB0eXBl IG9mIGNvbnN0cmFpbnRzIGZvciB0aGUgdGFibGVzLgorICAgIEl0cyBqb2Ig aXMgdG8gaW5pdGlhbGl6ZSB0byBkaWZmZXJlbnQgdHlwZSBvZiBjb25zdHJh aW50IGJsdWVwcmludCBhbmQKKyAgICByZWdpc3RlciBpdCB3aXRoIGl0cyBy ZXNwZWN0aXZlIE5vZGVWaWV3LgorICAgICIiIgorICAgIHJlZ2lzdHJ5ID0g ZGljdCgpCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSwgY29uX2Js dWVwcmludCwgY29uX25vZGV2aWV3KToKKyAgICAgICAgaWYgbmFtZSBub3Qg aW4gQ29uc3RyYWludFJlZ2lzdHJ5LnJlZ2lzdHJ5OgorCisgICAgICAgICAg ICBibHVlcHJpbnQgPSBjb25fYmx1ZXByaW50KG5hbWUpCisKKyAgICAgICAg ICAgICMgVE9ETzo6IHJlZ2lzdGVyIHRoZSB2aWV3IHdpdGggdGhlIGJsdWVw cmludAorICAgICAgICAgICAgY29uX25vZGV2aWV3LnJlZ2lzdGVyX25vZGVf dmlldyhibHVlcHJpbnQpCisKKyAgICAgICAgICAgIENvbnN0cmFpbnRSZWdp c3RyeS5yZWdpc3RyeVtuYW1lXSA9IHsKKyAgICAgICAgICAgICAgICAnYmx1 ZXByaW50JzogYmx1ZXByaW50LAorICAgICAgICAgICAgICAgICdub2Rldmll dyc6IGNvbl9ub2RldmlldworICAgICAgICAgICAgfQorCisKK2NsYXNzIENv bnN0cmFpbnRUeXBlTW9kdWxlKENvbGxlY3Rpb25Ob2RlTW9kdWxlKToKKyAg ICByZWdpc3RlciA9IEJsdWVwcmludC5yZWdpc3RlcgorCisgICAgZGVmIF9f aW5pdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHN1cGVy KENvbnN0cmFpbnRUeXBlTW9kdWxlLCBzZWxmKS5fX2luaXRfXygqYXJncywg Kiprd2FyZ3MpCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMv aW5kZXhlcy9fX2luaXRfXy5weSBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9p bmRleGVzL19faW5pdF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLjQ1NzNhOTcKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy90YWJsZXMvaW5kZXhlcy9fX2luaXRfXy5weQpAQCAtMCwwICsx LDg3NCBAQAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMKKyMg cGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworIworIyBDb3B5cmlnaHQg KEMpIDIwMTMgLSAyMDE2LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFt CisjIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3Rn cmVTUUwgTGljZW5jZQorIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMKKworIiIiIEltcGxlbWVudHMgSW5kZXggTm9kZSAiIiIKKworZnJvbSBm bGFzayBpbXBvcnQgcmVuZGVyX3RlbXBsYXRlLCBtYWtlX3Jlc3BvbnNlLCBy ZXF1ZXN0LCBqc29uaWZ5Citmcm9tIGZsYXNrLmV4dC5iYWJlbCBpbXBvcnQg Z2V0dGV4dAorZnJvbSBwZ2FkbWluLnV0aWxzLmFqYXggaW1wb3J0IG1ha2Vf anNvbl9yZXNwb25zZSwgXAorICAgIG1ha2VfcmVzcG9uc2UgYXMgYWpheF9y ZXNwb25zZSwgaW50ZXJuYWxfc2VydmVyX2Vycm9yCitmcm9tIHBnYWRtaW4u YnJvd3Nlci51dGlscyBpbXBvcnQgUEdDaGlsZE5vZGVWaWV3Citmcm9tIHBn YWRtaW4uYnJvd3Nlci5jb2xsZWN0aW9uIGltcG9ydCBDb2xsZWN0aW9uTm9k ZU1vZHVsZQoraW1wb3J0IHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBz LnNlcnZlcnMuZGF0YWJhc2VzIGFzIGRhdGFiYXNlCitmcm9tIHBnYWRtaW4u dXRpbHMuYWpheCBpbXBvcnQgcHJlY29uZGl0aW9uX3JlcXVpcmVkCitmcm9t IHBnYWRtaW4udXRpbHMuZHJpdmVyIGltcG9ydCBnZXRfZHJpdmVyCitmcm9t IGNvbmZpZyBpbXBvcnQgUEdfREVGQVVMVF9EUklWRVIKK2Zyb20gcGdhZG1p bi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy51dGlscyBpbXBvcnQg cGFyc2VfcHJpdl9mcm9tX2RiLCBcCisgICAgcGFyc2VfcHJpdl90b19kYgor ZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHdyYXBzCitpbXBvcnQganNvbgorCisK K2NsYXNzIEluZGV4ZXNNb2R1bGUoQ29sbGVjdGlvbk5vZGVNb2R1bGUpOgor ICAgICIiIgorICAgICBjbGFzcyBJbmRleGVzTW9kdWxlKENvbGxlY3Rpb25O b2RlTW9kdWxlKQorCisgICAgICAgIEEgbW9kdWxlIGNsYXNzIGZvciBJbmRl eCBub2RlIGRlcml2ZWQgZnJvbSBDb2xsZWN0aW9uTm9kZU1vZHVsZS4KKwor ICAgIE1ldGhvZHM6CisgICAgLS0tLS0tLQorICAgICogX19pbml0X18oKmFy Z3MsICoqa3dhcmdzKQorICAgICAgLSBNZXRob2QgaXMgdXNlZCB0byBpbml0 aWFsaXplIHRoZSBJbmRleCBhbmQgaXQncyBiYXNlIG1vZHVsZS4KKworICAg ICogZ2V0X25vZGVzKGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRpZCkKKyAgICAg IC0gTWV0aG9kIGlzIHVzZWQgdG8gZ2VuZXJhdGUgdGhlIGJyb3dzZXIgY29s bGVjdGlvbiBub2RlLgorCisgICAgKiBub2RlX2lub2RlKCkKKyAgICAgIC0g TWV0aG9kIGlzIG92ZXJyaWRkZW4gZnJvbSBpdHMgYmFzZSBjbGFzcyB0byBt YWtlIHRoZSBub2RlIGFzIGxlYWYgbm9kZS4KKworICAgICogc2NyaXB0X2xv YWQoKQorICAgICAgLSBMb2FkIHRoZSBtb2R1bGUgc2NyaXB0IGZvciBzY2hl bWEsIHdoZW4gYW55IG9mIHRoZSBzZXJ2ZXIgbm9kZSBpcworICAgICAgICBp bml0aWFsaXplZC4KKyAgICAiIiIKKworICAgIE5PREVfVFlQRSA9ICdpbmRl eCcKKyAgICBDT0xMRUNUSU9OX0xBQkVMID0gZ2V0dGV4dCgiSW5kZXhlcyIp CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToK KyAgICAgICAgIiIiCisgICAgICAgIE1ldGhvZCBpcyB1c2VkIHRvIGluaXRp YWxpemUgdGhlIEluZGV4TW9kdWxlIGFuZCBpdCdzIGJhc2UgbW9kdWxlLgor CisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICAqYXJnczoKKyAgICAgICAg ICAgICoqa3dhcmdzOgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5taW5f dmVyID0gTm9uZQorICAgICAgICBzZWxmLm1heF92ZXIgPSBOb25lCisgICAg ICAgIHN1cGVyKEluZGV4ZXNNb2R1bGUsIHNlbGYpLl9faW5pdF9fKCphcmdz LCAqKmt3YXJncykKKworICAgIGRlZiBCYWNrZW5kU3VwcG9ydGVkKHNlbGYs IG1hbmFnZXIsICoqa3dhcmdzKToKKyAgICAgICAgIiIiCisgICAgICAgIExv YWQgdGhpcyBtb2R1bGUgaWYgdmlkIGlzIHZpZXcsIHdlIHdpbGwgbm90IGxv YWQgaXQgdW5kZXIKKyAgICAgICAgbWF0ZXJpYWwgdmlldworICAgICAgICAi IiIKKyAgICAgICAgaWYgc3VwZXIoSW5kZXhlc01vZHVsZSwgc2VsZikuQmFj a2VuZFN1cHBvcnRlZChtYW5hZ2VyLCAqKmt3YXJncyk6CisgICAgICAgICAg ICBjb25uID0gbWFuYWdlci5jb25uZWN0aW9uKGRpZD1rd2FyZ3NbJ2RpZCdd KQorICAgICAgICAgICAgIyBJZiBEQiBpcyBub3QgY29ubmVjdGVkIHRoZW4g cmV0dXJuIGVycm9yIHRvIGJyb3dzZXIKKyAgICAgICAgICAgIGlmIG5vdCBj b25uLmNvbm5lY3RlZCgpOgorICAgICAgICAgICAgICAgIHJldHVybiBwcmVj b25kaXRpb25fcmVxdWlyZWQoCisgICAgICAgICAgICAgICAgICAgIGdldHRl eHQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvbm5lY3Rpb24g dG8gdGhlIHNlcnZlciBoYXMgYmVlbiBsb3N0ISIKKyAgICAgICAgICAgICAg ICAgICAgKQorICAgICAgICAgICAgICAgICkKKworICAgICAgICAgICAgaWYg J3ZpZCcgbm90IGluIGt3YXJnczoKKyAgICAgICAgICAgICAgICByZXR1cm4g VHJ1ZQorCisgICAgICAgICAgICB0ZW1wbGF0ZV9wYXRoID0gJ2luZGV4L3Nx bC85LjFfcGx1cycKKyAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0 ZSgiLyIuam9pbigKKyAgICAgICAgICAgICAgICAgIFt0ZW1wbGF0ZV9wYXRo LCAnYmFja2VuZF9zdXBwb3J0LnNxbCddKSwgdmlkPWt3YXJnc1sndmlkJ10p CisgICAgICAgICAgICBzdGF0dXMsIHJlcyA9IGNvbm4uZXhlY3V0ZV9zY2Fs YXIoU1FMKQorCisgICAgICAgICAgICAjIGNoZWNrIGlmIGFueSBlcnJvcnMK KyAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAg cmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisg ICAgICAgICAgICAjIENoZWNrIHZpZCBpcyB2aWV3IG5vdCBtYXRlcmlhbCB2 aWV3CisgICAgICAgICAgICAjIHRoZW4gdHJ1ZSwgb3RoZXdpc2UgZmFsc2UK KyAgICAgICAgICAgIHJldHVybiByZXMKKworICAgIGRlZiBnZXRfbm9kZXMo c2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgKiprd2FyZ3MpOgorICAgICAg ICAiIiIKKyAgICAgICAgR2VuZXJhdGUgdGhlIGNvbGxlY3Rpb24gbm9kZQor ICAgICAgICAiIiIKKyAgICAgICAgYXNzZXJ0KCd0aWQnIGluIGt3YXJncyBv ciAndmlkJyBpbiBrd2FyZ3MpCisgICAgICAgIHlpZWxkIHNlbGYuZ2VuZXJh dGVfYnJvd3Nlcl9jb2xsZWN0aW9uX25vZGUoCisgICAgICAgICAgICBrd2Fy Z3NbJ3RpZCddIGlmICd0aWQnIGluIGt3YXJncyBlbHNlIGt3YXJnc1sndmlk J10KKyAgICAgICAgKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHNjcmlw dF9sb2FkKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgTG9hZCB0aGUg bW9kdWxlIHNjcmlwdCBmb3Igc2VydmVyLCB3aGVuIGFueSBvZiB0aGUgc2Vy dmVyLWdyb3VwIG5vZGUgaXMKKyAgICAgICAgaW5pdGlhbGl6ZWQuCisgICAg ICAgICIiIgorICAgICAgICByZXR1cm4gZGF0YWJhc2UuRGF0YWJhc2VNb2R1 bGUuTk9ERV9UWVBFCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgbm9kZV9p bm9kZShzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIExvYWQgdGhlIG1v ZHVsZSBub2RlIGFzIGEgbGVhZiBub2RlCisgICAgICAgICIiIgorICAgICAg ICByZXR1cm4gRmFsc2UKKworYmx1ZXByaW50ID0gSW5kZXhlc01vZHVsZShf X25hbWVfXykKKworCitjbGFzcyBJbmRleGVzVmlldyhQR0NoaWxkTm9kZVZp ZXcpOgorICAgICIiIgorICAgIFRoaXMgY2xhc3MgaXMgcmVzcG9uc2libGUg Zm9yIGdlbmVyYXRpbmcgcm91dGVzIGZvciBJbmRleCBub2RlCisKKyAgICBN ZXRob2RzOgorICAgIC0tLS0tLS0KKyAgICAqIF9faW5pdF9fKCoqa3dhcmdz KQorICAgICAgLSBNZXRob2QgaXMgdXNlZCB0byBpbml0aWFsaXplIHRoZSBJ bmRleFZpZXcgYW5kIGl0J3MgYmFzZSB2aWV3LgorCisgICAgKiBtb2R1bGVf anMoKQorICAgICAgLSBUaGlzIHByb3BlcnR5IGRlZmluZXMgKGlmIGphdmFz Y3JpcHQpIGV4aXN0cyBmb3IgdGhpcyBub2RlLgorICAgICAgICBPdmVycmlk ZSB0aGlzIHByb3BlcnR5IGZvciB5b3VyIG93biBsb2dpYworCisgICAgKiBj aGVja19wcmVjb25kaXRpb24oKQorICAgICAgLSBUaGlzIGZ1bmN0aW9uIHdp bGwgYmVoYXZlIGFzIGEgZGVjb3JhdG9yIHdoaWNoIHdpbGwgY2hlY2tzCisg ICAgICAgIGRhdGFiYXNlIGNvbm5lY3Rpb24gYmVmb3JlIHJ1bm5pbmcgdmll dywgaXQgd2lsbCBhbHNvIGF0dGFjaGVzCisgICAgICAgIG1hbmFnZXIsY29u biAmIHRlbXBsYXRlX3BhdGggcHJvcGVydGllcyB0byBzZWxmCisKKyAgICAq IGxpc3QoKQorICAgICAgLSBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gbGlz dCBhbGwgdGhlIEluZGV4IG5vZGVzIHdpdGhpbiB0aGF0CisgICAgICBjb2xs ZWN0aW9uLgorCisgICAgKiBub2RlcygpCisgICAgICAtIFRoaXMgZnVuY3Rp b24gd2lsbCB1c2VkIHRvIGNyZWF0ZSBhbGwgdGhlIGNoaWxkIG5vZGUgd2l0 aGluIHRoYXQKKyAgICAgICAgY29sbGVjdGlvbiwgSGVyZSBpdCB3aWxsIGNy ZWF0ZSBhbGwgdGhlIEluZGV4IG5vZGUuCisKKyAgICAqIHByb3BlcnRpZXMo Z2lkLCBzaWQsIGRpZCwgc2NpZCwgdGlkLCBpZHgpCisgICAgICAtIFRoaXMg ZnVuY3Rpb24gd2lsbCBzaG93IHRoZSBwcm9wZXJ0aWVzIG9mIHRoZSBzZWxl Y3RlZCBJbmRleCBub2RlCisKKyAgICAqIGNyZWF0ZShnaWQsIHNpZCwgZGlk LCBzY2lkLCB0aWQpCisgICAgICAtIFRoaXMgZnVuY3Rpb24gd2lsbCBjcmVh dGUgdGhlIG5ldyBJbmRleCBvYmplY3QKKworICAgICogdXBkYXRlKGdpZCwg c2lkLCBkaWQsIHNjaWQsIHRpZCwgaWR4KQorICAgICAgLSBUaGlzIGZ1bmN0 aW9uIHdpbGwgdXBkYXRlIHRoZSBkYXRhIGZvciB0aGUgc2VsZWN0ZWQgSW5k ZXggbm9kZQorCisgICAgKiBkZWxldGUoc2VsZiwgZ2lkLCBzaWQsIHNjaWQs IHRpZCwgaWR4KToKKyAgICAgIC0gVGhpcyBmdW5jdGlvbiB3aWxsIGRyb3Ag dGhlIEluZGV4IG9iamVjdAorCisgICAgKiBtc3FsKGdpZCwgc2lkLCBkaWQs IHNjaWQsIHRpZCwgaWR4KQorICAgICAgLSBUaGlzIGZ1bmN0aW9uIGlzIHVz ZWQgdG8gcmV0dXJuIG1vZGlmaWVkIFNRTCBmb3IgdGhlIHNlbGVjdGVkCisg ICAgICAgIEluZGV4IG5vZGUKKworICAgICogZ2V0X3NxbChkYXRhLCBzY2lk LCB0aWQpCisgICAgICAtIFRoaXMgZnVuY3Rpb24gd2lsbCBnZW5lcmF0ZSBz cWwgZnJvbSBtb2RlbCBkYXRhCisKKyAgICAqIHNxbChnaWQsIHNpZCwgZGlk LCBzY2lkKToKKyAgICAgIC0gVGhpcyBmdW5jdGlvbiB3aWxsIGdlbmVyYXRl IHNxbCB0byBzaG93IGl0IGluIHNxbCBwYW5lIGZvciB0aGUKKyAgICAgICAg c2VsZWN0ZWQgSW5kZXggbm9kZS4KKworICAgICogZGVwZW5kZW5jeShnaWQs IHNpZCwgZGlkLCBzY2lkKToKKyAgICAgIC0gVGhpcyBmdW5jdGlvbiB3aWxs IGdlbmVyYXRlIGRlcGVuZGVuY3kgbGlzdCBzaG93IGl0IGluIGRlcGVuZGVu Y3kKKyAgICAgICAgcGFuZSBmb3IgdGhlIHNlbGVjdGVkIEluZGV4IG5vZGUu CisKKyAgICAqIGRlcGVuZGVudChnaWQsIHNpZCwgZGlkLCBzY2lkKToKKyAg ICAgIC0gVGhpcyBmdW5jdGlvbiB3aWxsIGdlbmVyYXRlIGRlcGVuZGVudCBs aXN0IHRvIHNob3cgaXQgaW4gZGVwZW5kZW50CisgICAgICAgIHBhbmUgZm9y IHRoZSBzZWxlY3RlZCBJbmRleCBub2RlLgorICAgICIiIgorCisgICAgbm9k ZV90eXBlID0gYmx1ZXByaW50Lm5vZGVfdHlwZQorCisgICAgcGFyZW50X2lk cyA9IFsKKyAgICAgICAgICAgIHsndHlwZSc6ICdpbnQnLCAnaWQnOiAnZ2lk J30sCisgICAgICAgICAgICB7J3R5cGUnOiAnaW50JywgJ2lkJzogJ3NpZCd9 LAorICAgICAgICAgICAgeyd0eXBlJzogJ2ludCcsICdpZCc6ICdkaWQnfSwK KyAgICAgICAgICAgIHsndHlwZSc6ICdpbnQnLCAnaWQnOiAnc2NpZCd9LAor ICAgICAgICAgICAgeyd0eXBlJzogJ2ludCcsICdpZCc6ICd0aWQnfQorICAg ICAgICAgICAgXQorICAgIGlkcyA9IFsKKyAgICAgICAgICAgIHsndHlwZSc6 ICdpbnQnLCAnaWQnOiAnaWR4J30KKyAgICAgICAgICAgIF0KKworICAgIG9w ZXJhdGlvbnMgPSBkaWN0KHsKKyAgICAgICAgJ29iaic6IFsKKyAgICAgICAg ICAgIHsnZ2V0JzogJ3Byb3BlcnRpZXMnLCAnZGVsZXRlJzogJ2RlbGV0ZScs ICdwdXQnOiAndXBkYXRlJ30sCisgICAgICAgICAgICB7J2dldCc6ICdsaXN0 JywgJ3Bvc3QnOiAnY3JlYXRlJ30KKyAgICAgICAgXSwKKyAgICAgICAgJ2Rl bGV0ZSc6IFt7J2RlbGV0ZSc6ICdkZWxldGUnfV0sCisgICAgICAgICdjaGls ZHJlbic6IFt7J2dldCc6ICdjaGlsZHJlbid9XSwKKyAgICAgICAgJ25vZGVz JzogW3snZ2V0JzogJ25vZGUnfSwgeydnZXQnOiAnbm9kZXMnfV0sCisgICAg ICAgICdzcWwnOiBbeydnZXQnOiAnc3FsJ31dLAorICAgICAgICAnbXNxbCc6 IFt7J2dldCc6ICdtc3FsJ30sIHsnZ2V0JzogJ21zcWwnfV0sCisgICAgICAg ICdzdGF0cyc6IFt7J2dldCc6ICdzdGF0aXN0aWNzJ31dLAorICAgICAgICAn ZGVwZW5kZW5jeSc6IFt7J2dldCc6ICdkZXBlbmRlbmNpZXMnfV0sCisgICAg ICAgICdkZXBlbmRlbnQnOiBbeydnZXQnOiAnZGVwZW5kZW50cyd9XSwKKyAg ICAgICAgJ21vZHVsZS5qcyc6IFt7fSwge30sIHsnZ2V0JzogJ21vZHVsZV9q cyd9XSwKKyAgICAgICAgJ2dldF9jb2xsYXRpb25zJzogW3snZ2V0JzogJ2dl dF9jb2xsYXRpb25zJ30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICB7 J2dldCc6ICdnZXRfY29sbGF0aW9ucyd9XSwKKyAgICAgICAgJ2dldF9hY2Nl c3NfbWV0aG9kcyc6IFt7J2dldCc6ICdnZXRfYWNjZXNzX21ldGhvZHMnfSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7J2dldCc6ICdnZXRf YWNjZXNzX21ldGhvZHMnfV0sCisgICAgICAgICdnZXRfb3BfY2xhc3MnOiBb eydnZXQnOiAnZ2V0X29wX2NsYXNzJ30sCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgeydnZXQnOiAnZ2V0X29wX2NsYXNzJ31dCisgICAgfSkK KworICAgIGRlZiBjaGVja19wcmVjb25kaXRpb24oZik6CisgICAgICAgICIi IgorICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgYmVoYXZlIGFzIGEgZGVj b3JhdG9yIHdoaWNoIHdpbGwgY2hlY2tzCisgICAgICAgIGRhdGFiYXNlIGNv bm5lY3Rpb24gYmVmb3JlIHJ1bm5pbmcgdmlldywgaXQgd2lsbCBhbHNvIGF0 dGFjaGVzCisgICAgICAgIG1hbmFnZXIsY29ubiAmIHRlbXBsYXRlX3BhdGgg cHJvcGVydGllcyB0byBzZWxmCisgICAgICAgICIiIgorICAgICAgICBAd3Jh cHMoZikKKyAgICAgICAgZGVmIHdyYXAoKmFyZ3MsICoqa3dhcmdzKToKKyAg ICAgICAgICAgICMgSGVyZSBhcmdzWzBdIHdpbGwgaG9sZCBzZWxmICYga3dh cmdzIHdpbGwgaG9sZCBnaWQsc2lkLGRpZAorICAgICAgICAgICAgc2VsZiA9 IGFyZ3NbMF0KKyAgICAgICAgICAgIHNlbGYubWFuYWdlciA9IGdldF9kcml2 ZXIoUEdfREVGQVVMVF9EUklWRVIpLmNvbm5lY3Rpb25fbWFuYWdlcigKKyAg ICAgICAgICAgICAgICBrd2FyZ3NbJ3NpZCddCisgICAgICAgICAgICApCisg ICAgICAgICAgICBzZWxmLmNvbm4gPSBzZWxmLm1hbmFnZXIuY29ubmVjdGlv bihkaWQ9a3dhcmdzWydkaWQnXSkKKyAgICAgICAgICAgICMgSWYgREIgbm90 IGNvbm5lY3RlZCB0aGVuIHJldHVybiBlcnJvciB0byBicm93c2VyCisgICAg ICAgICAgICBpZiBub3Qgc2VsZi5jb25uLmNvbm5lY3RlZCgpOgorICAgICAg ICAgICAgICAgIHJldHVybiBwcmVjb25kaXRpb25fcmVxdWlyZWQoCisgICAg ICAgICAgICAgICAgICAgIGdldHRleHQoCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIkNvbm5lY3Rpb24gdG8gdGhlIHNlcnZlciBoYXMgYmVlbiBs b3N0ISIKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAg ICkKKworICAgICAgICAgICAgIyBXZSBuZWVkIGRhdGxhc3RzeXNvaWQgdG8g Y2hlY2sgaWYgY3VycmVudCBpbmRleCBpcyBzeXN0ZW0gaW5kZXgKKyAgICAg ICAgICAgIHNlbGYuZGF0bGFzdHN5c29pZCA9IHNlbGYubWFuYWdlci5kYl9p bmZvW2t3YXJnc1snZGlkJ11dWydkYXRsYXN0c3lzb2lkJ10KKworICAgICAg ICAgICAgIyB3ZSB3aWxsIHNldCB0ZW1wbGF0ZSBwYXRoIGZvciBzcWwgc2Ny aXB0cworICAgICAgICAgICAgc2VsZi50ZW1wbGF0ZV9wYXRoID0gJ2luZGV4 L3NxbC85LjFfcGx1cycKKworICAgICAgICAgICAgIyBXZSBuZWVkIHBhcmVu dCdzIG5hbWUgZWcgdGFibGUgbmFtZSBhbmQgc2NoZW1hIG5hbWUKKyAgICAg ICAgICAgICMgd2hlbiB3ZSBjcmVhdGUgbmV3IGluZGV4IGluIHVwZGF0ZSB3 ZSBjYW4gZmV0Y2ggaXQgdXNpbmcKKyAgICAgICAgICAgICMgcHJvcGVydHkg c3FsCisgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpv aW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgJ2dldF9wYXJlbnQuc3FsJ10pLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpZD1rd2FyZ3Nb J3RpZCddKQorICAgICAgICAgICAgc3RhdHVzLCByc2V0ID0gc2VsZi5jb25u LmV4ZWN1dGVfMmRhcnJheShTUUwpCisgICAgICAgICAgICBpZiBub3Qgc3Rh dHVzOgorICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJf ZXJyb3IoZXJyb3Jtc2c9cnNldCkKKworICAgICAgICAgICAgZm9yIHJvdyBp biByc2V0Wydyb3dzJ106CisgICAgICAgICAgICAgICAgc2VsZi5zY2hlbWEg PSByb3dbJ3NjaGVtYSddCisgICAgICAgICAgICAgICAgc2VsZi50YWJsZSA9 IHJvd1sndGFibGUnXQorCisgICAgICAgICAgICByZXR1cm4gZigqYXJncywg Kiprd2FyZ3MpCisKKyAgICAgICAgcmV0dXJuIHdyYXAKKworICAgIEBjaGVj a19wcmVjb25kaXRpb24KKyAgICBkZWYgZ2V0X2NvbGxhdGlvbnMoc2VsZiwg Z2lkLCBzaWQsIGRpZCwgc2NpZCwgdGlkLCBpZHg9Tm9uZSk6CisgICAgICAg ICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIGxpc3Qg b2YgY29sbGF0aW9uIGF2YWlsYWJsZQorICAgICAgICB2aWEgQUpBWCByZXNw b25zZQorICAgICAgICAiIiIKKyAgICAgICAgcmVzID0gW3snbGFiZWwnOiAn JywgJ3ZhbHVlJzogJyd9XQorICAgICAgICB0cnk6CisgICAgICAgICAgICBT UUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVf cGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJ2dldF9jb2xsYXRpb25zLnNxbCddKSkKKyAgICAgICAgICAgIHN0 YXR1cywgcnNldCA9IHNlbGYuY29ubi5leGVjdXRlXzJkYXJyYXkoU1FMKQor ICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICBy ZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKwor ICAgICAgICAgICAgZm9yIHJvdyBpbiByc2V0Wydyb3dzJ106CisgICAgICAg ICAgICAgICAgcmVzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICB7J2xhYmVsJzogcm93Wydjb2xsYXRpb24nXSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJ3ZhbHVlJzogcm93Wydjb2xsYXRpb24nXX0K KyAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIHJldHVy biBtYWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAgICAgICAgICAgICAgIGRh dGE9cmVzLAorICAgICAgICAgICAgICAgICAgICBzdGF0dXM9MjAwCisgICAg ICAgICAgICAgICAgICAgICkKKworICAgICAgICBleGNlcHQgRXhjZXB0aW9u IGFzIGU6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vy cm9yKGVycm9ybXNnPXN0cihlKSkKKworICAgIEBjaGVja19wcmVjb25kaXRp b24KKyAgICBkZWYgZ2V0X2FjY2Vzc19tZXRob2RzKHNlbGYsIGdpZCwgc2lk LCBkaWQsIHNjaWQsIHRpZCwgaWR4PU5vbmUpOgorICAgICAgICAiIiIKKyAg ICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIHJldHVybiBsaXN0IG9mIGFjY2Vz cyBtZXRob2RzIGF2YWlsYWJsZQorICAgICAgICB2aWEgQUpBWCByZXNwb25z ZQorICAgICAgICAiIiIKKyAgICAgICAgcmVzID0gW3snbGFiZWwnOiAnJywg J3ZhbHVlJzogJyd9XQorICAgICAgICB0cnk6CisgICAgICAgICAgICBTUUwg PSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0 aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJ2dldF9hbS5zcWwnXSkpCisgICAgICAgICAgICBzdGF0dXMsIHJzZXQg PSBzZWxmLmNvbm4uZXhlY3V0ZV8yZGFycmF5KFNRTCkKKyAgICAgICAgICAg IGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAgcmV0dXJuIGludGVy bmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgICAg IGZvciByb3cgaW4gcnNldFsncm93cyddOgorICAgICAgICAgICAgICAgIHJl cy5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeydsYWJl bCc6IHJvd1snYW1uYW1lJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICd2YWx1ZSc6IHJvd1snYW1uYW1lJ119CisgICAgICAgICAgICAgICAg ICAgICAgICApCisgICAgICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3Bv bnNlKAorICAgICAgICAgICAgICAgICAgICBkYXRhPXJlcywKKyAgICAgICAg ICAgICAgICAgICAgc3RhdHVzPTIwMAorICAgICAgICAgICAgICAgICAgICAp CisKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAg ICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1zdHIo ZSkpCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVmIGdldF9v cF9jbGFzcyhzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQsIGlkeD1O b25lKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gd2ls bCByZXR1cm4gbGlzdCBvZiBvcF9jbGFzcyBtZXRob2QKKyAgICAgICAgZm9y IGVhY2ggYWNjZXNzIG1ldGhvZHMgYXZhaWxhYmxlIHZpYSBBSkFYIHJlc3Bv bnNlCisgICAgICAgICIiIgorICAgICAgICByZXMgPSBkaWN0KCkKKyAgICAg ICAgdHJ5OgorICAgICAgICAgICAgIyBGZXRjaGluZyBhbGwgdGhlIGFjY2Vz cyBtZXRob2RzCisgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUo Ii8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dldF9hbS5zcWwnXSkp CisgICAgICAgICAgICBzdGF0dXMsIHJzZXQgPSBzZWxmLmNvbm4uZXhlY3V0 ZV8yZGFycmF5KFNRTCkKKyAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6Cisg ICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihl cnJvcm1zZz1yZXMpCisKKyAgICAgICAgICAgIGZvciByb3cgaW4gcnNldFsn cm93cyddOgorICAgICAgICAgICAgICAgICMgRmV0Y2hpbmcgYWxsIHRoZSBv cF9jbGFzc2VzIGZvciBlYWNoIGFjY2VzcyBtZXRob2QKKyAgICAgICAgICAg ICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVt cGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICdnZXRfb3BfY2xhc3Muc3FsJ10pLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvaWQ9cm93WydvaWQn XSkKKyAgICAgICAgICAgICAgICBzdGF0dXMsIHJlc3VsdCA9IHNlbGYuY29u bi5leGVjdXRlXzJkYXJyYXkoU1FMKQorICAgICAgICAgICAgICAgIGlmIG5v dCBzdGF0dXM6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5h bF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgICAgICAg ICAgb3BfY2xhc3NfbGlzdCA9IFt7J2xhYmVsJzogJycsICd2YWx1ZSc6ICcn fV0KKworICAgICAgICAgICAgICAgIGZvciByIGluIHJlc3VsdFsncm93cydd OgorICAgICAgICAgICAgICAgICAgICBvcF9jbGFzc19saXN0LmFwcGVuZCh7 J2xhYmVsJzogclsnb3BjbmFtZSddLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJ3ZhbHVlJzogclsnb3BjbmFtZSddfSkK KworICAgICAgICAgICAgICAgICMgQXBwZW5kIG9wX2NsYXNzIGxpc3QgaW4g bWFpbiByZXN1bHQgYXMgY29sbGVjdGlvbgorICAgICAgICAgICAgICAgIHJl c1tyb3dbJ2FtbmFtZSddXSA9IG9wX2NsYXNzX2xpc3QKKworICAgICAgICAg ICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAgICAgICAg ICAgICAgZGF0YT1yZXMsCisgICAgICAgICAgICAgICAgICAgIHN0YXR1cz0y MDAKKyAgICAgICAgICAgICAgICAgICAgKQorCisgICAgICAgIGV4Y2VwdCBF eGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9z ZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKGUpKQorCisKKyAgICBAY2hlY2tf cHJlY29uZGl0aW9uCisgICAgZGVmIGxpc3Qoc2VsZiwgZ2lkLCBzaWQsIGRp ZCwgc2NpZCwgdGlkKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVu Y3Rpb24gaXMgdXNlZCB0byBsaXN0IGFsbCB0aGUgc2NoZW1hIG5vZGVzIHdp dGhpbiB0aGF0IGNvbGxlY3Rpb24uCisKKyAgICAgICAgQXJnczoKKyAgICAg ICAgICAgIGdpZDogU2VydmVyIGdyb3VwIElECisgICAgICAgICAgICBzaWQ6 IFNlcnZlciBJRAorICAgICAgICAgICAgZGlkOiBEYXRhYmFzZSBJRAorICAg ICAgICAgICAgc2NpZDogU2NoZW1hIElECisgICAgICAgICAgICB0aWQ6IFRh YmxlIElECisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIEpTT04g b2YgYXZhaWxhYmxlIHNjaGVtYSBub2RlcworICAgICAgICAiIiIKKworICAg ICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVt cGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAnbm9kZXMuc3FsJ10pLCB0aWQ9dGlkKQorICAgICAgICBzdGF0 dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQorCisgICAg ICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJu YWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKyAgICAgICAgcmV0dXJu IGFqYXhfcmVzcG9uc2UoCisgICAgICAgICAgICAgICAgcmVzcG9uc2U9cmVz Wydyb3dzJ10sCisgICAgICAgICAgICAgICAgc3RhdHVzPTIwMAorICAgICAg ICAgICAgICAgICkKKworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBk ZWYgbm9kZXMoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgdGlkKToKKyAg ICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCB1c2VkIHRv IGNyZWF0ZSBhbGwgdGhlIGNoaWxkIG5vZGUgd2l0aGluIHRoYXQgY29sbGVj dGlvbi4KKyAgICAgICAgSGVyZSBpdCB3aWxsIGNyZWF0ZSBhbGwgdGhlIHNj aGVtYSBub2RlLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBnaWQ6 IFNlcnZlciBHcm91cCBJRAorICAgICAgICAgICAgc2lkOiBTZXJ2ZXIgSUQK KyAgICAgICAgICAgIGRpZDogRGF0YWJhc2UgSUQKKyAgICAgICAgICAgIHNj aWQ6IFNjaGVtYSBJRAorICAgICAgICAgICAgdGlkOiBUYWJsZSBJRAorCisg ICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBKU09OIG9mIGF2YWlsYWJs ZSBzY2hlbWEgY2hpbGQgbm9kZXMKKyAgICAgICAgIiIiCisgICAgICAgIHJl cyA9IFtdCisgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9p bihbc2VsZi50ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICdub2Rlcy5zcWwnXSksIHRpZD10aWQpCisg ICAgICAgIHN0YXR1cywgcnNldCA9IHNlbGYuY29ubi5leGVjdXRlXzJkYXJy YXkoU1FMKQorICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAg cmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yc2V0KQor CisgICAgICAgIGZvciByb3cgaW4gcnNldFsncm93cyddOgorICAgICAgICAg ICAgcmVzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5ibHVl cHJpbnQuZ2VuZXJhdGVfYnJvd3Nlcl9ub2RlKAorICAgICAgICAgICAgICAg ICAgICAgICAgcm93WydvaWQnXSwKKyAgICAgICAgICAgICAgICAgICAgICAg IHRpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHJvd1snbmFtZSddLAor ICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj0iaWNvbi1pbmRleCIKKyAg ICAgICAgICAgICAgICAgICAgKSkKKworICAgICAgICByZXR1cm4gbWFrZV9q c29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgICAgIGRhdGE9cmVzLAorICAg ICAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAgICAgICAgICAgICApCisK KyAgICBkZWYgX2NvbHVtbl9kZXRhaWxzKHNlbGYsIGlkeCwgZGF0YSk6Cisg ICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uYWwgd2lsbCBmZXRj aCBsaXN0IG9mIGNvbHVtbiBkZXRhaWxzIGZvciBpbmRleAorCisgICAgICAg IEFyZ3M6CisgICAgICAgICAgICBpZHg6IEluZGV4IE9JRAorICAgICAgICAg ICAgZGF0YTogUHJvcGVydGllcyBkYXRhCisKKyAgICAgICAgUmV0dXJuczoK KyAgICAgICAgICAgIFVwZGF0ZWQgcHJvcGVydGllcyBkYXRhIHdpdGggY29s dW1uIGRldGFpbHMKKyAgICAgICAgIiIiCisKKyAgICAgICAgU1FMID0gcmVu ZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbHVt bl9kZXRhaWxzLnNxbCddKSwgaWR4PWlkeCkKKyAgICAgICAgc3RhdHVzLCBy c2V0ID0gc2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJheShTUUwpCisgICAgICAg IGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxf c2VydmVyX2Vycm9yKGVycm9ybXNnPXJzZXQpCisgICAgICAgICMgJ2F0dGRl ZicgY29tZXMgd2l0aCBxdW90ZXMgZnJvbSBxdWVyeSBzbyB3ZSBuZWVkIHRv IHN0cmlwIHRoZW0KKyAgICAgICAgIyAnb3B0aW9ucycgd2UgbmVlZCB0cnVl L2ZhbHNlIHRvIHJlbmRlciBzd2l0Y2ggQVNDKGZhbHNlKS9ERVNDKHRydWUp CisgICAgICAgIGNvbHVtbnMgPSBbXQorICAgICAgICBjb2xzID0gW10KKyAg ICAgICAgY250ID0gMQorICAgICAgICBmb3Igcm93IGluIHJzZXRbJ3Jvd3Mn XToKKyAgICAgICAgICAgICMgV2UgbmVlZCBhbGwgZGF0YSBhcyBjb2xsZWN0 aW9uIGZvciBDb2x1bW5zTW9kZWwKKyAgICAgICAgICAgIGNvbHNfZGF0YSA9 IHsKKyAgICAgICAgICAgICAgICAnY29sbmFtZSc6IHJvd1snYXR0ZGVmJ10u c3RyaXAoJyInKSwKKyAgICAgICAgICAgICAgICAnY29sbHNwY25hbWUnOiBy b3dbJ2NvbGxuc3BuYW1lJ10sCisgICAgICAgICAgICAgICAgJ29wX2NsYXNz Jzogcm93WydvcGNuYW1lJ10sCisgICAgICAgICAgICB9CisgICAgICAgICAg ICBpZiByb3dbJ29wdGlvbnMnXVswXSA9PSAnREVTQyc6CisgICAgICAgICAg ICAgICAgY29sc19kYXRhWydzb3J0X29yZGVyJ10gPSBUcnVlCisgICAgICAg ICAgICBjb2x1bW5zLmFwcGVuZChjb2xzX2RhdGEpCisKKyAgICAgICAgICAg ICMgV2UgbmVlZCBzYW1lIGRhdGEgYXMgc3RyaW5nIHRvIGRpc3BsYXkgaW4g cHJvcGVydGllcyB3aW5kb3cKKyAgICAgICAgICAgICMgSWYgbXVsdGlwbGUg Y29sdW1uIHRoZW4gc2VwYXJhdGUgaXQgYnkgY29sb24KKyAgICAgICAgICAg IGNvbHNfc3RyID0gcm93WydhdHRkZWYnXQorICAgICAgICAgICAgaWYgcm93 Wydjb2xsbnNwbmFtZSddOgorICAgICAgICAgICAgICAgIGNvbHNfc3RyICs9 ICcgQ09MTEFURSAnICsgcm93Wydjb2xsbnNwbmFtZSddCisgICAgICAgICAg ICBpZiByb3dbJ29wY25hbWUnXToKKyAgICAgICAgICAgICAgICBjb2xzX3N0 ciArPSAnICcgKyByb3dbJ29wY25hbWUnXQorICAgICAgICAgICAgaWYgcm93 WydvcHRpb25zJ11bMF0gPT0gJ0RFU0MnOgorICAgICAgICAgICAgICAgIGNv bHNfc3RyICs9ICcgREVTQycKKyAgICAgICAgICAgIGNvbHMuYXBwZW5kKGNv bHNfc3RyKQorCisgICAgICAgICMgUHVzaCBhcyBjb2xsZWN0aW9uCisgICAg ICAgIGRhdGFbJ2NvbHVtbnMnXSA9IGNvbHVtbnMKKyAgICAgICAgIyBQdXNo IGFzIHN0cmluZworICAgICAgICBkYXRhWydjb2xzJ10gPSAnLCAnLmpvaW4o Y29scykKKworICAgICAgICByZXR1cm4gZGF0YQorCisKKyAgICBAY2hlY2tf cHJlY29uZGl0aW9uCisgICAgZGVmIHByb3BlcnRpZXMoc2VsZiwgZ2lkLCBz aWQsIGRpZCwgc2NpZCwgdGlkLCBpZHgpOgorICAgICAgICAiIiIKKyAgICAg ICAgVGhpcyBmdW5jdGlvbiB3aWxsIHNob3cgdGhlIHByb3BlcnRpZXMgb2Yg dGhlIHNlbGVjdGVkIHNjaGVtYSBub2RlLgorCisgICAgICAgIEFyZ3M6Cisg ICAgICAgICAgICBnaWQ6IFNlcnZlciBHcm91cCBJRAorICAgICAgICAgICAg c2lkOiBTZXJ2ZXIgSUQKKyAgICAgICAgICAgIGRpZDogIERhdGFiYXNlIElE CisgICAgICAgICAgICBzY2lkOiBTY2hlbWEgSUQKKyAgICAgICAgICAgIHNj aWQ6IFNjaGVtYSBJRAorICAgICAgICAgICAgdGlkOiBUYWJsZSBJRAorICAg ICAgICAgICAgaWR4OiBJbmRleCBJRAorCisgICAgICAgIFJldHVybnM6Cisg ICAgICAgICAgICBKU09OIG9mIHNlbGVjdGVkIHNjaGVtYSBub2RlCisgICAg ICAgICIiIgorCisgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIu am9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICdwcm9wZXJ0aWVzLnNxbCddKSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpZD10aWQsIGlkeD1pZHgs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRsYXN0c3lzb2lk PXNlbGYuZGF0bGFzdHN5c29pZCkKKworICAgICAgICBzdGF0dXMsIHJlcyA9 IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQorCisgICAgICAgIGlmIG5v dCBzdGF0dXM6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVy X2Vycm9yKGVycm9ybXNnPXJlcykKKworICAgICAgICAjIE1ha2luZyBjb3B5 IG9mIG91dHB1dCBmb3IgZnV0dXJlIHVzZQorICAgICAgICBkYXRhID0gZGlj dChyZXNbJ3Jvd3MnXVswXSkKKworICAgICAgICAjIEFkZCBjb2x1bW4gZGV0 YWlscyBmb3IgY3VycmVudCBpbmRleAorICAgICAgICBkYXRhID0gc2VsZi5f Y29sdW1uX2RldGFpbHMoaWR4LCBkYXRhKQorCisgICAgICAgIHJldHVybiBh amF4X3Jlc3BvbnNlKAorICAgICAgICAgICAgICAgIHJlc3BvbnNlPWRhdGEs CisgICAgICAgICAgICAgICAgc3RhdHVzPTIwMAorICAgICAgICAgICAgICAg ICkKKworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgY3JlYXRl KHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRpZCk6CisgICAgICAgICIi IgorICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgY3JlYXRlcyBuZXcgdGhl IHNjaGVtYSBvYmplY3QKKworICAgICAgICAgQXJnczoKKyAgICAgICAgICAg Z2lkOiBTZXJ2ZXIgR3JvdXAgSUQKKyAgICAgICAgICAgc2lkOiBTZXJ2ZXIg SUQKKyAgICAgICAgICAgZGlkOiBEYXRhYmFzZSBJRAorICAgICAgICAgICBz Y2lkOiBTY2hlbWEgSUQKKyAgICAgICAgICAgdGlkOiBUYWJsZSBJRAorICAg ICAgICAiIiIKKyAgICAgICAgZGF0YSA9IHJlcXVlc3QuZm9ybSBpZiByZXF1 ZXN0LmZvcm0gZWxzZSBqc29uLmxvYWRzKAorICAgICAgICAgICAgcmVxdWVz dC5kYXRhLmRlY29kZSgpCisgICAgICAgICkKKworICAgICAgICBmb3Igaywg diBpbiBkYXRhLml0ZW1zKCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAg ICAgICAgICAgZGF0YVtrXSA9IGpzb24ubG9hZHModikKKyAgICAgICAgICAg IGV4Y2VwdCAoVmFsdWVFcnJvciwgVHlwZUVycm9yKToKKyAgICAgICAgICAg ICAgICBkYXRhW2tdID0gdgorCisgICAgICAgIHJlcXVpcmVkX2FyZ3MgPSB7 CisgICAgICAgICAgICAnbmFtZSc6ICdOYW1lJywKKyAgICAgICAgICAgICdj b2x1bW5zJzogJ0NvbHVtbnMnCisgICAgICAgIH0KKworICAgICAgICBmb3Ig YXJnIGluIHJlcXVpcmVkX2FyZ3M6CisgICAgICAgICAgICBlcnJfbXNnID0g Tm9uZQorICAgICAgICAgICAgaWYgYXJnID09ICdjb2x1bW5zJyBhbmQgbGVu KGRhdGFbJ2NvbHVtbnMnXSkgPCAxOgorICAgICAgICAgICAgICAgIGVycl9t c2cgPSAiWW91IG11c3QgcHJvdmlkZSBvbmUgb3IgbW9yZSBjb2x1bW4gdG8g Y3JlYXRlIGluZGV4IgorCisgICAgICAgICAgICBpZiBhcmcgbm90IGluIGRh dGE6CisgICAgICAgICAgICAgICAgZXJyX21zZyA9ICJDb3VsZG4ndCBmaW5k IHRoZSByZXF1aXJlZCBwYXJhbWV0ZXIgKCVzKS4iICUgXAorICAgICAgICAg ICAgICAgICAgICAgICAgICByZXF1aXJlZF9hcmdzW2FyZ10KKyAgICAgICAg ICAgICAgICAjIENoZWNrIGlmIHdlIGhhdmUgYXQgbGVhc3Qgb25lIGNvbHVt bgorICAgICAgICAgICAgaWYgZXJyX21zZyBpcyBub3QgTm9uZToKKyAgICAg ICAgICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAg ICAgICAgICAgICAgICBzdGF0dXM9NDEwLAorICAgICAgICAgICAgICAgICAg ICBzdWNjZXNzPTAsCisgICAgICAgICAgICAgICAgICAgIGVycm9ybXNnPWdl dHRleHQoZXJyX21zZykKKyAgICAgICAgICAgICAgICApCisKKyAgICAgICAg IyBBZGRpbmcgcGFyZW50IGludG8gZGF0YSBkaWN0LCB3aWxsIGJlIHVzaW5n IGl0IHdoaWxlIGNyZWF0aW5nIHNxbAorICAgICAgICBkYXRhWydzY2hlbWEn XSA9IHNlbGYuc2NoZW1hCisgICAgICAgIGRhdGFbJ3RhYmxlJ10gPSBzZWxm LnRhYmxlCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgU1FMID0gcmVu ZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdj cmVhdGUuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGRhdGE9ZGF0YSwgY29ubj1zZWxmLmNvbm4pCisgICAgICAgICAgICBz dGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX3NjYWxhcihTUUwpCisg ICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgIHJl dHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisg ICAgICAgICAgICAjIElmIHVzZXIgY2hvb3NlcyBjb25jdXJyZW50IGluZGV4 IHRoZW4gd2UgY2FuIG5vdCBydW4gaXQgYWxvbmcKKyAgICAgICAgICAgICMg d2l0aCBvdGhlciBhbHRlciBzdGF0bWVudHMgc28gd2Ugd2lsbCBzZXBhcmF0 ZSBhbHRlciBpbmRleCBwYXJ0CisgICAgICAgICAgICBTUUwgPSByZW5kZXJf dGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FsdGVy LnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk YXRhPWRhdGEsIGNvbm49c2VsZi5jb25uKQorICAgICAgICAgICAgU1FMID0g U1FMLnN0cmlwKCdcbicpLnN0cmlwKCcgJykKKyAgICAgICAgICAgIGlmIFNR TCAhPSAnJzoKKyAgICAgICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYu Y29ubi5leGVjdXRlX3NjYWxhcihTUUwpCisgICAgICAgICAgICAgICAgaWYg bm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGludGVy bmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgICAg ICMgd2UgbmVlZCBvaWQgdG8gdG8gYWRkIG9iamVjdCBpbiB0cmVlIGF0IGJy b3dzZXIKKyAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIu am9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2V0X29pZC5zcWwnXSksCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlkPXRpZCwgZGF0 YT1kYXRhKQorICAgICAgICAgICAgc3RhdHVzLCBpZHggPSBzZWxmLmNvbm4u ZXhlY3V0ZV9zY2FsYXIoU1FMKQorICAgICAgICAgICAgaWYgbm90IHN0YXR1 czoKKyAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vy cm9yKGVycm9ybXNnPXRpZCkKKworICAgICAgICAgICAgcmV0dXJuIGpzb25p ZnkoCisgICAgICAgICAgICAgICAgbm9kZT1zZWxmLmJsdWVwcmludC5nZW5l cmF0ZV9icm93c2VyX25vZGUoCisgICAgICAgICAgICAgICAgICAgIGlkeCwK KyAgICAgICAgICAgICAgICAgICAgc2NpZCwKKyAgICAgICAgICAgICAgICAg ICAgZGF0YVsnbmFtZSddLAorICAgICAgICAgICAgICAgICAgICBpY29uPSJp Y29uLWluZGV4IgorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICkK KyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAg cmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1zdHIoZSkp CisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVmIGRlbGV0ZShz ZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQsIGlkeCk6CisgICAgICAg ICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgdXBkYXRlcyBleGlz dGluZyB0aGUgc2NoZW1hIG9iamVjdAorCisgICAgICAgICBBcmdzOgorICAg ICAgICAgICBnaWQ6IFNlcnZlciBHcm91cCBJRAorICAgICAgICAgICBzaWQ6 IFNlcnZlciBJRAorICAgICAgICAgICBkaWQ6IERhdGFiYXNlIElECisgICAg ICAgICAgIHNjaWQ6IFNjaGVtYSBJRAorICAgICAgICAgICB0aWQ6IFRhYmxl IElECisgICAgICAgICAgIGlkeDogSW5kZXggSUQKKyAgICAgICAgIiIiCisg ICAgICAgICMgQmVsb3cgd2lsbCBkZWNpZGUgaWYgaXQncyBzaW1wbGUgZHJv cCBvciBkcm9wIHdpdGggY2FzY2FkZSBjYWxsCisgICAgICAgIGlmIHNlbGYu Y21kID09ICdkZWxldGUnOgorICAgICAgICAgICAgIyBUaGlzIGlzIGEgY2Fz Y2FkZSBvcGVyYXRpb24KKyAgICAgICAgICAgIGNhc2NhZGUgPSBUcnVlCisg ICAgICAgIGVsc2U6CisgICAgICAgICAgICBjYXNjYWRlID0gRmFsc2UKKwor ICAgICAgICB0cnk6CisgICAgICAgICAgICAjIFdlIHdpbGwgZmlyc3QgZmV0 Y2ggdGhlIGluZGV4IG5hbWUgZm9yIGN1cnJlbnQgcmVxdWVzdAorICAgICAg ICAgICAgIyBzbyB0aGF0IHdlIGNyZWF0ZSB0ZW1wbGF0ZSBmb3IgZHJvcHBp bmcgaW5kZXgKKyAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgi LyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHJvcGVydGllcy5zcWwn XSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlkPXRp ZCwgaWR4PWlkeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBkYXRsYXN0c3lzb2lkPXNlbGYuZGF0bGFzdHN5c29pZCkKKworICAgICAg ICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNR TCkKKyAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAg ICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMp CisKKyAgICAgICAgICAgIGRhdGEgPSBkaWN0KHJlc1sncm93cyddWzBdKQor CisgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4o W3NlbGYudGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJ2RlbGV0ZS5zcWwnXSksCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1kYXRhLCBjb25uPXNl bGYuY29ubiwgY2FzY2FkZT1jYXNjYWRlKQorICAgICAgICAgICAgc3RhdHVz LCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9zY2FsYXIoU1FMKQorICAgICAg ICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICByZXR1cm4g aW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKworICAgICAg ICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAgICAg ICAgICBzdWNjZXNzPTEsCisgICAgICAgICAgICAgICAgaW5mbz1nZXR0ZXh0 KCJJbmRleCBpcyBkcm9wcGVkIiksCisgICAgICAgICAgICAgICAgZGF0YT17 CisgICAgICAgICAgICAgICAgICAgICdpZCc6IGlkeCwKKyAgICAgICAgICAg ICAgICAgICAgJ3RpZCc6IHRpZAorICAgICAgICAgICAgICAgIH0KKyAgICAg ICAgICAgICkKKworICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6Cisg ICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9y bXNnPXN0cihlKSkKKworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBk ZWYgdXBkYXRlKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRpZCwgaWR4 KToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCB1 cGRhdGVzIGV4aXN0aW5nIHRoZSBzY2hlbWEgb2JqZWN0CisKKyAgICAgICAg IEFyZ3M6CisgICAgICAgICAgIGdpZDogU2VydmVyIEdyb3VwIElECisgICAg ICAgICAgIHNpZDogU2VydmVyIElECisgICAgICAgICAgIGRpZDogRGF0YWJh c2UgSUQKKyAgICAgICAgICAgc2NpZDogU2NoZW1hIElECisgICAgICAgICAg IHRpZDogVGFibGUgSUQKKyAgICAgICAgICAgaWR4OiBJbmRleCBJRAorICAg ICAgICAiIiIKKyAgICAgICAgZGF0YSA9IHJlcXVlc3QuZm9ybSBpZiByZXF1 ZXN0LmZvcm0gZWxzZSBqc29uLmxvYWRzKHJlcXVlc3QuZGF0YS5kZWNvZGUo KSkKKyAgICAgICAgZGF0YVsnc2NoZW1hJ10gPSBzZWxmLnNjaGVtYQorICAg ICAgICBkYXRhWyd0YWJsZSddID0gc2VsZi50YWJsZQorICAgICAgICB0cnk6 CisgICAgICAgICAgICBTUUwgPSBzZWxmLmdldF9zcWwoc2NpZCwgdGlkLCBp ZHgsIGRhdGEpCisgICAgICAgICAgICBpZiBTUUwgYW5kIFNRTC5zdHJpcCgn XG4nKSBhbmQgU1FMLnN0cmlwKCcgJyk6CisgICAgICAgICAgICAgICAgc3Rh dHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9zY2FsYXIoU1FMKQorICAg ICAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAg ICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVz KQorCisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25z ZSgKKyAgICAgICAgICAgICAgICAgICAgc3VjY2Vzcz0xLAorICAgICAgICAg ICAgICAgICAgICBpbmZvPSJJbmRleCB1cGRhdGVkIiwKKyAgICAgICAgICAg ICAgICAgICAgZGF0YT17CisgICAgICAgICAgICAgICAgICAgICAgICAnaWQn OiBpZHgsCisgICAgICAgICAgICAgICAgICAgICAgICAndGlkJzogdGlkLAor ICAgICAgICAgICAgICAgICAgICAgICAgJ3NjaWQnOiBzY2lkCisgICAgICAg ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICApCisgICAgICAgICAg ICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVz cG9uc2UoCisgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M9MSwKKyAgICAg ICAgICAgICAgICAgICAgaW5mbz0iTm90aGluZyB0byB1cGRhdGUiLAorICAg ICAgICAgICAgICAgICAgICBkYXRhPXsKKyAgICAgICAgICAgICAgICAgICAg ICAgICdpZCc6IGlkeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICd0aWQn OiB0aWQsCisgICAgICAgICAgICAgICAgICAgICAgICAnc2NpZCc6IHNjaWQK KyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICkKKwor ICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICBy ZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXN0cihlKSkK KworCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBtc3FsKHNl bGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRpZCwgaWR4PU5vbmUpOgorICAg ICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIGdlbmVyYXRl cyBtb2RpZmllZCBzcWwgZm9yIHNjaGVtYSBvYmplY3QKKworICAgICAgICAg QXJnczoKKyAgICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAgSUQKKyAgICAg ICAgICAgc2lkOiBTZXJ2ZXIgSUQKKyAgICAgICAgICAgZGlkOiBEYXRhYmFz ZSBJRAorICAgICAgICAgICBzY2lkOiBTY2hlbWEgSUQKKyAgICAgICAgICAg dGlkOiBUYWJsZSBJRAorICAgICAgICAgICBpZHg6IEluZGV4IElEIChXaGVu IHdvcmtpbmcgd2l0aCBleGlzdGluZyBpbmRleCkKKyAgICAgICAgIiIiCisg ICAgICAgIGRhdGEgPSBkaWN0KCkKKyAgICAgICAgZm9yIGssIHYgaW4gcmVx dWVzdC5hcmdzLml0ZW1zKCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAg ICAgICAgICAgZGF0YVtrXSA9IGpzb24ubG9hZHModikKKyAgICAgICAgICAg IGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgICAgIGRhdGFba10g PSB2CisKKyAgICAgICAgIyBBZGRpbmcgcGFyZW50IGludG8gZGF0YSBkaWN0 LCB3aWxsIGJlIHVzaW5nIGl0IHdoaWxlIGNyZWF0aW5nIHNxbAorICAgICAg ICBkYXRhWydzY2hlbWEnXSA9IHNlbGYuc2NoZW1hCisgICAgICAgIGRhdGFb J3RhYmxlJ10gPSBzZWxmLnRhYmxlCisKKyAgICAgICAgdHJ5OgorICAgICAg ICAgICAgU1FMID0gc2VsZi5nZXRfc3FsKHNjaWQsIHRpZCwgaWR4LCBkYXRh KQorCisgICAgICAgICAgICBpZiBTUUwgYW5kIFNRTC5zdHJpcCgnXG4nKSBh bmQgU1FMLnN0cmlwKCcgJyk6CisgICAgICAgICAgICAgICAgcmV0dXJuIG1h a2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIGRh dGE9U1FMLAorICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzPTIwMAor ICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICBleGNlcHQgRXhj ZXB0aW9uIGFzIGU6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2Vy dmVyX2Vycm9yKGVycm9ybXNnPXN0cihlKSkKKworICAgIGRlZiBnZXRfc3Fs KHNlbGYsIHNjaWQsIHRpZCwgaWR4LCBkYXRhKToKKyAgICAgICAgIiIiCisg ICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBnZW5yYXRlIHNxbCBmcm9tIG1v ZGVsIGRhdGEKKyAgICAgICAgIiIiCisgICAgICAgIGlmIGlkeCBpcyBub3Qg Tm9uZToKKyAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIu am9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAncHJvcGVydGllcy5zcWwnXSks CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlkPXRpZCwg aWR4PWlkeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk YXRsYXN0c3lzb2lkPXNlbGYuZGF0bGFzdHN5c29pZCkKKworICAgICAgICAg ICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkK KyAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAg cmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisK KyAgICAgICAgICAgIG9sZF9kYXRhID0gZGljdChyZXNbJ3Jvd3MnXVswXSkK KworICAgICAgICAgICAgIyBJZiBuYW1lIGlzIG5vdCBwcmVzZW50IGluIGRh dGEgdGhlbgorICAgICAgICAgICAgIyB3ZSB3aWxsIGZldGNoIGl0IGZyb20g b2xkIGRhdGEsIHdlIGFsc28gbmVlZCBzY2hlbWEgJiB0YWJsZSBuYW1lCisg ICAgICAgICAgICBpZiAnbmFtZScgbm90IGluIGRhdGE6CisgICAgICAgICAg ICAgICAgZGF0YVsnbmFtZSddID0gb2xkX2RhdGFbJ25hbWUnXQorCisgICAg ICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAg ICAgIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ3VwZGF0ZS5zcWwn XSksCisgICAgICAgICAgICAgICAgZGF0YT1kYXRhLCBvX2RhdGE9b2xkX2Rh dGEsIGNvbm49c2VsZi5jb25uCisgICAgICAgICAgICAgICAgKQorICAgICAg ICBlbHNlOgorICAgICAgICAgICAgcmVxdWlyZWRfYXJncyA9IHsKKyAgICAg ICAgICAgICAgICAnbmFtZSc6ICdOYW1lJywKKyAgICAgICAgICAgICAgICAn Y29sdW1ucyc6ICdDb2x1bW5zJworICAgICAgICAgICAgfQorICAgICAgICAg ICAgZm9yIGFyZyBpbiByZXF1aXJlZF9hcmdzOgorICAgICAgICAgICAgICAg IGVyciA9IEZhbHNlCisgICAgICAgICAgICAgICAgaWYgYXJnID09ICdjb2x1 bW5zJyBhbmQgbGVuKGRhdGFbJ2NvbHVtbnMnXSkgPCAxOgorICAgICAgICAg ICAgICAgICAgICBlcnIgPSBUcnVlCisKKyAgICAgICAgICAgICAgICBpZiBh cmcgbm90IGluIGRhdGE6CisgICAgICAgICAgICAgICAgICAgIGVyciA9IFRy dWUKKyAgICAgICAgICAgICAgICAgICAgIyBDaGVjayBpZiB3ZSBoYXZlIGF0 IGxlYXN0IG9uZSBjb2x1bW4KKyAgICAgICAgICAgICAgICBpZiBlcnI6Cisg ICAgICAgICAgICAgICAgICAgIHJldHVybiBnZXR0ZXh0KCctLSBpbmNvbXBs ZXRlIGRlZmluaXRpb24nKQorCisgICAgICAgICAgICAjIElmIHRoZSByZXF1 ZXN0IGZvciBuZXcgb2JqZWN0IHdoaWNoIGRvIG5vdCBoYXZlIGRpZAorICAg ICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxm LnRlbXBsYXRlX3BhdGgsICdjcmVhdGUuc3FsJ10pLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGRhdGE9ZGF0YSwgY29ubj1zZWxmLmNv bm4pCisgICAgICAgICAgICBTUUwgKz0gIlxuIgorICAgICAgICAgICAgU1FM ICs9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9w YXRoLCAnYWx0ZXIuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBkYXRhPWRhdGEsIGNvbm49c2VsZi5jb25uKQorCisgICAg ICAgIHJldHVybiBTUUwKKworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAg ICBkZWYgc3FsKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRpZCwgaWR4 KToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBn ZW5lcmF0ZXMgcmV2ZXJzZSBlbmdpbmVlcmVkIHNxbCBmb3Igc2NoZW1hIG9i amVjdAorCisgICAgICAgICBBcmdzOgorICAgICAgICAgICBnaWQ6IFNlcnZl ciBHcm91cCBJRAorICAgICAgICAgICBzaWQ6IFNlcnZlciBJRAorICAgICAg ICAgICBkaWQ6IERhdGFiYXNlIElECisgICAgICAgICAgIHNjaWQ6IFNjaGVt YSBJRAorICAgICAgICAgICB0aWQ6IFRhYmxlIElECisgICAgICAgICAgIGlk eDogSW5kZXggSUQKKyAgICAgICAgIiIiCisgICAgICAgIHRyeToKKyAgICAg ICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50 ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAncHJvcGVydGllcy5zcWwnXSksCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdGlkPXRpZCwgaWR4PWlkeCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRsYXN0c3lzb2lk PXNlbGYuZGF0bGFzdHN5c29pZCkKKworICAgICAgICAgICAgc3RhdHVzLCBy ZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKKyAgICAgICAgICAg IGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAgcmV0dXJuIGludGVy bmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgICAg IGRhdGEgPSBkaWN0KHJlc1sncm93cyddWzBdKQorICAgICAgICAgICAgIyBB ZGRpbmcgcGFyZW50IGludG8gZGF0YSBkaWN0LCB3aWxsIGJlIHVzaW5nIGl0 IHdoaWxlIGNyZWF0aW5nIHNxbAorICAgICAgICAgICAgZGF0YVsnc2NoZW1h J10gPSBzZWxmLnNjaGVtYQorICAgICAgICAgICAgZGF0YVsndGFibGUnXSA9 IHNlbGYudGFibGUKKworICAgICAgICAgICAgIyBBZGQgY29sdW1uIGRldGFp bHMgZm9yIGN1cnJlbnQgaW5kZXgKKyAgICAgICAgICAgIGRhdGEgPSBzZWxm Ll9jb2x1bW5fZGV0YWlscyhpZHgsIGRhdGEpCisKKyAgICAgICAgICAgIFNR TCA9IHNlbGYuZ2V0X3NxbChzY2lkLCB0aWQsIE5vbmUsIGRhdGEpCisKKyAg ICAgICAgICAgIHNxbF9oZWFkZXIgPSAiLS0gSW5kZXg6IHswfVxuXG4tLSAi LmZvcm1hdChkYXRhWyduYW1lJ10pCisgICAgICAgICAgICBzcWxfaGVhZGVy ICs9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9w YXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICdkZWxldGUuc3FsJ10pLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1kYXRhLCBjb25uPXNl bGYuY29ubikKKworICAgICAgICAgICAgU1FMID0gc3FsX2hlYWRlciArICdc blxuJyArIFNRTAorCisgICAgICAgICAgICByZXR1cm4gYWpheF9yZXNwb25z ZShyZXNwb25zZT1TUUwpCisKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBh cyBlOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJv cihlcnJvcm1zZz1zdHIoZSkpCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9u CisgICAgZGVmIGRlcGVuZGVudHMoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2Np ZCwgdGlkLCBpZHgpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5j dGlvbiBnZXQgdGhlIGRlcGVuZGVudHMgYW5kIHJldHVybiBhamF4IHJlc3Bv bnNlCisgICAgICAgIGZvciB0aGUgc2NoZW1hIG5vZGUuCisKKyAgICAgICAg QXJnczoKKyAgICAgICAgICAgIGdpZDogU2VydmVyIEdyb3VwIElECisgICAg ICAgICAgICBzaWQ6IFNlcnZlciBJRAorICAgICAgICAgICAgZGlkOiBEYXRh YmFzZSBJRAorICAgICAgICAgICAgc2NpZDogU2NoZW1hIElECisgICAgICAg ICAgICB0aWQ6IFRhYmxlIElECisgICAgICAgICAgICBpZHg6IEluZGV4IElE CisgICAgICAgICIiIgorICAgICAgICBkZXBlbmRlbnRzX3Jlc3VsdCA9IHNl bGYuZ2V0X2RlcGVuZGVudHMoCisgICAgICAgICAgICBzZWxmLmNvbm4sIGlk eAorICAgICAgICApCisKKyAgICAgICAgcmV0dXJuIGFqYXhfcmVzcG9uc2Uo CisgICAgICAgICAgICAgICAgcmVzcG9uc2U9ZGVwZW5kZW50c19yZXN1bHQs CisgICAgICAgICAgICAgICAgc3RhdHVzPTIwMAorICAgICAgICAgICAgICAg ICkKKworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgZGVwZW5k ZW5jaWVzKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRpZCwgaWR4KToK KyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gZ2V0IHRoZSBk ZXBlbmRlbmNpZXMgYW5kIHJldHVybiBhamF4IHJlc3BvbnNlCisgICAgICAg IGZvciB0aGUgc2NoZW1hIG5vZGUuCisKKyAgICAgICAgQXJnczoKKyAgICAg ICAgICAgIGdpZDogU2VydmVyIEdyb3VwIElECisgICAgICAgICAgICBzaWQ6 IFNlcnZlciBJRAorICAgICAgICAgICAgZGlkOiBEYXRhYmFzZSBJRAorICAg ICAgICAgICAgc2NpZDogU2NoZW1hIElECisgICAgICAgICAgICB0aWQ6IFRh YmxlIElECisgICAgICAgICAgICBpZHg6IEluZGV4IElECisKKyAgICAgICAg IiIiCisgICAgICAgIGRlcGVuZGVuY2llc19yZXN1bHQgPSBzZWxmLmdldF9k ZXBlbmRlbmNpZXMoCisgICAgICAgICAgICBzZWxmLmNvbm4sIGlkeAorICAg ICAgICApCisKKyAgICAgICAgcmV0dXJuIGFqYXhfcmVzcG9uc2UoCisgICAg ICAgICAgICAgICAgcmVzcG9uc2U9ZGVwZW5kZW5jaWVzX3Jlc3VsdCwKKyAg ICAgICAgICAgICAgICBzdGF0dXM9MjAwCisgICAgICAgICAgICAgICAgKQor CitJbmRleGVzVmlldy5yZWdpc3Rlcl9ub2RlX3ZpZXcoYmx1ZXByaW50KQpk aWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2luZGV4ZXMvc3Rh dGljL2ltZy9jb2xsLWluZGV4LnBuZyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxl cy9pbmRleGVzL3N0YXRpYy9pbWcvY29sbC1pbmRleC5wbmcKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMC4uYmIxNTEzYzgyODdlMmVlNWIzOWMzNjgzNmZjMDE2 MzZlZDM1Y2Y1ZgpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgNDY4CnpjbWVB U0BOPyhvbEh5YHVWQnEhaWEwdnBeMHdCITYzP3d5bGBHYk1mb0IqRT9TMExU RmBvM1pQTWFgUGleNXNYMgp6Pm80bG1vPmk8a0NSVihrSjh3dEZtWnpybW1y cDxjY0twZkxMa35haXgkfGwzXiQrVlZ5PDJ8diY0THJKaWRIXjYKekAkQm8t JDZwVEl7flFwTDxRSjlYNk9wKj4jc3t+TWM7fSF2aGsmQCpNX3dGeF5rdl9A UGRqZFkqbSZqTCVKWGopCnpwTCNYdD0hQHdHcFppMjZkVzkjcmhiRkFQQFlY M1gmZlkoRSpYQHMrdWYxUCQ7cUI3WHVqZF9tSXBmZ3R1Mk1mMgp6cCEqbjBn OFlJUjlHPX1zMTlDVkVKUip5TXY8RGN3b3lAaWFHVihvTDk3N343Q25wP1c9 PHp3RHFydFEkPVooeDkKemp+Y3heaTNkI18xKW8yQmAxRnlSZ053OEhGcEVw VClxP0l0RDw2dEUyT3JrJFRnSH5iOW5qbWRXWGhKRkhGSW9TCnpnYWRrOzdF UmpKd1E4MnQ1dyEoVXl1UH0qdmF6SypxS3x6MiFwcWEhbFVURE9kIzZNUEJn MGcyJlgxU3gwV0RAPQp6UCVVd2RDYG1+eU53ckVZTihFOTNNaDFva3hgc3gm MjhKTzwyMzk3PFJ3a3l9MkJ1YTkySl96T3R3UGF8bzFjPUkKaVJ0ZUV5VTx1 WCRSQmQ4cVU8VDF9WUleN3prUUpWO2VsRntyNX1FLTEoISZQOwoKbGl0ZXJh bCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv dGFibGVzL2luZGV4ZXMvc3RhdGljL2ltZy9pbmRleC5wbmcgYi93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy90YWJsZXMvaW5kZXhlcy9zdGF0aWMvaW1nL2luZGV4LnBuZwpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMjM5YzEyNTEwOWNhOGQ3M2I2YWZh ODQwYjU3NDBhOGJiMDY5MzRlCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCA1 NjIKemNtZUFTQE4/KG9sSHlgdVZCcSFpYTB2cF4wd0IhNjM/d3lsYEdiTWYr Vz87c1MwTFRGYG8zWlBNYWBQaV41c1gyCno+bzRsbW8+aTxrQ1JWKGtKOHk/ K3twRjQ9UGZ0SnBjSC0mUnFtUkVGZURIYmktQV9BaWUleVRSe2tsdTxSLVN2 YQp6PGthaGNtP1p6YEIpX09jcE5QYnJ3PzJBPUNBZnZleTlDRU0xOyNCbntf XkNydWc5S3pKQG9MKXpJJmd4VHp8aioKel4xRF4lLXorYC1kY2xjVGJCQDA3 aSVSbHxPIVNJSypsX3VzT0tga1hQQEY/Um9TbEV7ajY9XjRLbC14Jnted257 CnpLV0BBNlZaKVZvdDFyQT1jSU5mTWxkdDk7ZUwzXmNeUWl9KGN9RkM4aDkk VSVDYikqZ0ZGKlVuRihBJn5LWCZIZgp6PVg+c2ErSjV1SHJtT0dRVVZPWGE/ Mz19PlVkPW85YUBPRyYoKylnO2I4TXFCKDhHKStMNExzdTQkcDMrMFhkdW4K ejkrQWFCKzU/UTtQRztLeTg4eDBSanYqNDRsTUB0fTQyJXBuRld9ZylYPThE TDVfZj9qZ1pZZn1oWXoxVnVDSmg+CnpxTjgrKlJadXs5YGgrUXlyY0luV3h0 JjhwTHJjP3A8JSg0K3Zvb0FuTTdDfXpUfmhrPjNvbFF2MEBFP0lXb2dnRQp6 cmlFUUkrYXx5JFkrY1JudUFWTCkmTjA5N154MzxJRlEyfUJ7NXBTPEhuYUlF P0dwP1B2JW0wI3NFYlRtNHxJb1cKemlFQmhqTkA3Vz5SZFBgKGtZWEAwRmZg Q0xHfTFMTjNeNmpXR0JMST9HMVdGT3dLNmM2X2ZCc1dpaVhfJGwrM2hCCmlo ejB7b3VtKyVONkR0RVZoPXg8c0wpUVFgRm5HSDl4dlg8YVhhV0c1ZkIyKlQK CmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL3RhYmxlcy9pbmRleGVzL3RlbXBsYXRlcy9pbmRleC9qcy9pbmRl eC5qcyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9pbmRleGVzL3RlbXBsYXRl cy9pbmRleC9qcy9pbmRleC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi5iNDk0OTJhCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvdGFibGVzL2luZGV4ZXMvdGVtcGxhdGVzL2luZGV4L2pzL2lu ZGV4LmpzCkBAIC0wLDAgKzEsNDA5IEBACitkZWZpbmUoCisgICAgICAgIFsn anF1ZXJ5JywgJ3VuZGVyc2NvcmUnLCAndW5kZXJzY29yZS5zdHJpbmcnLCAn cGdhZG1pbicsICdwZ2FkbWluLmJyb3dzZXInLAorICAgICAgICAnYmFja2Zv cm0nLCAnYWxlcnRpZnknLCAncGdhZG1pbi5icm93c2VyLmNvbGxlY3Rpb24n XSwKK2Z1bmN0aW9uKCQsIF8sIFMsIHBnQWRtaW4sIHBnQnJvd3NlciwgQmFj a2Zvcm0sIGFsZXJ0aWZ5KSB7CisKKyAgaWYgKCFwZ0Jyb3dzZXIuTm9kZXNb J2NvbGwtaW5kZXgnXSkgeworICAgIHZhciBkYXRhYmFzZXMgPSBwZ0FkbWlu LkJyb3dzZXIuTm9kZXNbJ2NvbGwtaW5kZXgnXSA9CisgICAgICBwZ0FkbWlu LkJyb3dzZXIuQ29sbGVjdGlvbi5leHRlbmQoeworICAgICAgICBub2RlOiAn aW5kZXgnLAorICAgICAgICBsYWJlbDogJ3t7IF8oJ0luZGV4ZXMnKSB9fScs CisgICAgICAgIHR5cGU6ICdjb2xsLWluZGV4JywKKyAgICAgICAgc3FsQWx0 ZXJIZWxwOiAnc3FsLWFsdGVyaW5kZXguaHRtbCcsCisgICAgICAgIHNxbENy ZWF0ZUhlbHA6ICdzcWwtY3JlYXRlaW5kZXguaHRtbCcsCisgICAgICAgIGNv bHVtbnM6IFsnbmFtZScsICdkZXNjcmlwdGlvbiddCisgICAgICB9KTsKKyAg fTsKKworICAgIC8vIE1vZGVsIHRvIGNyZWF0ZSBjb2x1bW4gY29sbGVjdGlv biBjb250cm9sCisgICAgdmFyIENvbHVtbk1vZGVsID0gcGdBZG1pbi5Ccm93 c2VyLk5vZGUuTW9kZWwuZXh0ZW5kKHsKKyAgICAgICAgZGVmYXVsdHM6IHsK KyAgICAgICAgICBjb2xuYW1lOiB1bmRlZmluZWQsCisgICAgICAgICAgY29s bHNwY25hbWU6IHVuZGVmaW5lZCwKKyAgICAgICAgICBvcF9jbGFzczogdW5k ZWZpbmVkLAorICAgICAgICAgIHNvcnRfb3JkZXI6IGZhbHNlLAorICAgICAg ICAgIG51bGxzOiBmYWxzZQorICAgICAgICB9LAorICAgICAgICBzY2hlbWE6 IFsKKyAgICAgICAgICB7CisgICAgICAgICAgICBpZDogJ2NvbG5hbWUnLCBs YWJlbDone3sgXygnQ29sdW1uJykgfX0nLCBjZWxsOiAnc3RyaW5nJywKKyAg ICAgICAgICAgIHR5cGU6ICd0ZXh0JywgZGlzYWJsZWQ6ICdpblNjaGVtYScs IGVkaXRhYmxlOiBmYWxzZSwKKyAgICAgICAgICAgIGNvbnRyb2w6ICdub2Rl LWxpc3QtYnktbmFtZScsIG5vZGU6ICdjb2x1bW4nCisgICAgICAgICAgfSx7 CisgICAgICAgICAgICBpZDogJ2NvbGxzcGNuYW1lJywgbGFiZWw6J3t7IF8o J0NvbGxhdGlvbicpIH19JywgY2VsbDogJ3N0cmluZycsCisgICAgICAgICAg ICB0eXBlOiAndGV4dCcsIGRpc2FibGVkOiAnaW5TY2hlbWEnLCBlZGl0YWJs ZTogZmFsc2UsCisgICAgICAgICAgICBjb250cm9sOiAnbm9kZS1hamF4LW9w dGlvbnMnLCB1cmw6ICdnZXRfY29sbGF0aW9ucycsIG5vZGU6ICdpbmRleCcK KyAgICAgICAgICB9LHsKKyAgICAgICAgICAgIGlkOiAnb3BfY2xhc3MnLCBs YWJlbDone3sgXygnT3BlcmF0b3IgY2xhc3MnKSB9fScsIGNlbGw6ICdzdHJp bmcnLAorICAgICAgICAgICAgdHlwZTogJ3RleHQnLCBkaXNhYmxlZDogJ2No ZWNrQWNjZXNzTWV0aG9kJywgZWRpdGFibGU6IGZhbHNlLAorICAgICAgICAg ICAgY29udHJvbDogJ25vZGUtYWpheC1vcHRpb25zJywgdXJsOiAnZ2V0X29w X2NsYXNzJywgbm9kZTogJ2luZGV4JywKKyAgICAgICAgICAgIGRlcHM6IFsn YW1uYW1lJ10sIHRyYW5zZm9ybTogZnVuY3Rpb24oZGF0YSkgeworICAgICAg ICAgICAgIC8qIFdlIG5lZWQgdG8gZXh0cmFjdCBkYXRhIGZyb20gY29sbGVj dGlvbiBhY2NvcmRpbmcKKyAgICAgICAgICAgICAgKiB0byBhY2Nlc3MgbWV0 aG9kIHNlbGVjdGVkIGJ5IHVzZXIgaWYgbm90IHNlbGVjdGVkCisgICAgICAg ICAgICAgICogc2VuZCBidHJlZSByZWxhdGVkIG9wX2NsYXNzIG9wdGlvbnMK KyAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICB2YXIgYW1uYW1lID0g dGhpcy5tb2RlbC5oYW5kbGVyLmdldCgnYW1uYW1lJyksCisgICAgICAgICAg ICAgICAgIG9wdGlvbnMgPSBkYXRhWydidHJlZSddOworCisgICAgICAgICAg ICAgaWYoXy5pc1VuZGVmaW5lZChhbW5hbWUpKQorICAgICAgICAgICAgICAg cmV0dXJuIG9wdGlvbnM7CisKKyAgICAgICAgICAgICBfLmVhY2goZGF0YSwg ZnVuY3Rpb24odiwgaykgeworICAgICAgICAgICAgICAgIGlmKGFtbmFtZSA9 PT0gaykgeworICAgICAgICAgICAgICAgICAgb3B0aW9ucyA9IHY7CisgICAg ICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAg ICByZXR1cm4gb3B0aW9uczsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9 LHsKKyAgICAgICAgICAgIGlkOiAnc29ydF9vcmRlcicsIGxhYmVsOid7eyBf KCdTb3J0IG9yZGVyJykgfX0nLCBjZWxsOiAnc3dpdGNoJywKKyAgICAgICAg ICAgIHR5cGU6ICdzd2l0Y2gnLCBkaXNhYmxlZDogJ2NoZWNrQWNjZXNzTWV0 aG9kJywgZWRpdGFibGU6IGZhbHNlLAorICAgICAgICAgICAgZGVwczogWydh bW5hbWUnXSwKKyAgICAgICAgICAgIG9wdGlvbnM6IHsKKyAgICAgICAgICAg ICAnb25UZXh0JzogJ0RFU0MnLCAnb2ZmVGV4dCc6ICdBU0MnLAorICAgICAg ICAgICAgICdvbkNvbG9yJzogJ3N1Y2Nlc3MnLCAnb2ZmQ29sb3InOiAnZGVm YXVsdCcsCisgICAgICAgICAgICAgJ3NpemUnOiAnc21hbGwnCisgICAgICAg ICAgICB9CisgICAgICAgICAgfSx7CisgICAgICAgICAgICBpZDogJ251bGxz JywgbGFiZWw6J3t7IF8oJ05VTExzJykgfX0nLCBjZWxsOiAnc3dpdGNoJywK KyAgICAgICAgICAgIHR5cGU6ICdzd2l0Y2gnLCBkaXNhYmxlZDogJ2NoZWNr QWNjZXNzTWV0aG9kJywgZWRpdGFibGU6IGZhbHNlLAorICAgICAgICAgICAg ZGVwczogWydhbW5hbWUnLCAnc29ydF9vcmRlciddLAorICAgICAgICAgICAg b3B0aW9uczogeworICAgICAgICAgICAgICdvblRleHQnOiAnRklSU1QnLCAn b2ZmVGV4dCc6ICdMQVNUJywKKyAgICAgICAgICAgICAnb25Db2xvcic6ICdz dWNjZXNzJywgJ29mZkNvbG9yJzogJ2RlZmF1bHQnLAorICAgICAgICAgICAg ICdzaXplJzogJ3NtYWxsJworICAgICAgICAgICAgfQorICAgICAgICAgIH0K KyAgICAgICAgXSwKKyAgICAgICAgdmFsaWRhdGU6IGZ1bmN0aW9uKCkgewor ICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC5jbGVhcigpOworCisgICAgICAg ICAgaWYgKF8uaXNVbmRlZmluZWQodGhpcy5nZXQoJ2NvbG5hbWUnKSkKKyAg ICAgICAgICAgICAgfHwgU3RyaW5nKHRoaXMuZ2V0KCdjb2xuYW1lJykpLnJl cGxhY2UoL15ccyt8XHMrJC9nLCAnJykgPT0gJycpIHsKKyAgICAgICAgICAg IG1zZyA9ICd7eyBfKCdDb2x1bW4gTmFtZSBjYW4gbm90IGJlIGVtcHR5Licp IH19JzsKKyAgICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC5zZXQoJ2NvbG5h bWUnLCBtc2cpOworICAgICAgICAgICAgcmV0dXJuIG1zZzsKKyAgICAgICAg ICB9CisgICAgICAgIH0sCisgICAgICAgIC8vIFdlIHdpbGwgY2hlY2sgaWYg d2UgYXJlIHVuZGVyIHNjaGVtYSBub2RlCisgICAgICAgIGluU2NoZW1hOiBm dW5jdGlvbigpIHsKKyAgICAgICAgICBpZih0aGlzLm5vZGVfaW5mbyAmJiAg J2NhdGFsb2cnIGluIHRoaXMubm9kZV9pbmZvKSB7CisgICAgICAgICAgICBy ZXR1cm4gdHJ1ZTsKKyAgICAgICAgICB9CisgICAgICAgICAgcmV0dXJuIGZh bHNlOworICAgICAgICB9LAorICAgICAgICAvLyBXZSB3aWxsIGNoZWNrIGlm IHdlIGFyZSB1bmRlciBzY2hlbWEgbm9kZSAmIGluICdjcmVhdGUnIG1vZGUK KyAgICAgICAgaW5TY2hlbWFXaXRoTW9kZWxDaGVjazogZnVuY3Rpb24obSkg eworICAgICAgICAgIGlmKHRoaXMubm9kZV9pbmZvICYmICAnc2NoZW1hJyBp biB0aGlzLm5vZGVfaW5mbykgeworICAgICAgICAgICAgLy8gV2Ugd2lsbCBk aXNhYmxlIGNvbnRyb2wgaWYgaXQncyBpbiAnZWRpdCcgbW9kZQorICAgICAg ICAgICAgaWYgKG0uaXNOZXcoKSkgeworICAgICAgICAgICAgICByZXR1cm4g ZmFsc2U7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICBy ZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAg ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0sCisgICAgICAgIC8vIFdl IHdpbGwgY2hlY2sgaWYgd2UgYXJlIHVuZGVyIHNjaGVtYSBub2RlIGFuZCBh ZGRlZCBjb25kaXRpb24KKyAgICAgICAgY2hlY2tBY2Nlc3NNZXRob2Q6IGZ1 bmN0aW9uKG0pIHsKKyAgICAgICAgLy9BY2Nlc3MgbWV0aG9kIGlzIGVtcHR5 IG9yIGJ0cmVlIHRoZW4gZG8gbm90IGRpc2FibGUgZmllbGQKKyAgICAgICAg ICB2YXIgcGFyZW50X21vZGVsID0gbS5oYW5kbGVyOworICAgICAgICAgIGlm KCFtLmluU2NoZW1hLmFwcGx5KHRoaXMsIFttXSkgJiYKKyAgICAgICAgICAg ICAgKF8uaXNVbmRlZmluZWQocGFyZW50X21vZGVsLmdldCgnYW1uYW1lJykp IHx8CisgICAgICAgICAgICAgICBfLmlzTnVsbChwYXJlbnRfbW9kZWwuZ2V0 KCdhbW5hbWUnKSkgfHwKKyAgICAgICAgICAgICAgIFN0cmluZyhwYXJlbnRf bW9kZWwuZ2V0KCdhbW5hbWUnKSkucmVwbGFjZSgvXlxzK3xccyskL2csICcn KSA9PSAnJyB8fAorICAgICAgICAgICAgICAgcGFyZW50X21vZGVsLmdldCgn YW1uYW1lJykgPT09ICdidHJlZScpKSB7CisgICAgICAgICAgICAvLyBXZSBu ZWVkIHRvIHNldCBudWxscyB0byB0cnVlIGlmIHNvcnRfb3JkZXIgaXMgc2V0 IHRvIGRlc2MKKyAgICAgICAgICAgIC8vIG51bGxzIGZpcnN0IGlzIGRlZmF1 bHQgZm9yIGRlc2MKKyAgICAgICAgICAgIGlmKG0uZ2V0KCdzb3J0X29yZGVy JykgPT0gdHJ1ZSkgeworICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5j dGlvbigpIHsgbS5zZXQoJ251bGxzJywgdHJ1ZSkgfSwgMTApOworICAgICAg ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVu Y3Rpb24oKSB7IG0uc2V0KCdudWxscycsIGZhbHNlKSB9LCAxMCk7CisgICAg ICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg ICAgfQorICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9LAorICAg IH0pOworCisgIGlmICghcGdCcm93c2VyLk5vZGVzWydpbmRleCddKSB7Cisg ICAgcGdBZG1pbi5Ccm93c2VyLk5vZGVzWydpbmRleCddID0gcGdBZG1pbi5C cm93c2VyLk5vZGUuZXh0ZW5kKHsKKyAgICAgIHBhcmVudF90eXBlOiBbJ3Rh YmxlJywgJ3ZpZXcnLCAnbXZpZXcnXSwKKyAgICAgIGNvbGxlY3Rpb25fdHlw ZTogWydjb2xsLXRhYmxlJywgJ2NvbGwtdmlldyddLAorICAgICAgdHlwZTog J2luZGV4JywKKyAgICAgIGxhYmVsOiAne3sgXygnSW5kZXgnKSB9fScsCisg ICAgICBoYXNTUUw6ICB0cnVlLAorICAgICAgaGFzRGVwZW5kczogdHJ1ZSwK KyAgICAgIEluaXQ6IGZ1bmN0aW9uKCkgeworICAgICAgICAvKiBBdm9pZCBt dWxpdHBsZSByZWdpc3RyYXRpb24gb2YgbWVudXMgKi8KKyAgICAgICAgaWYg KHRoaXMuaW5pdGlhbGl6ZWQpCisgICAgICAgICAgICByZXR1cm47CisKKyAg ICAgICAgdGhpcy5pbml0aWFsaXplZCA9IHRydWU7CisKKyAgICAgICAgcGdC cm93c2VyLmFkZF9tZW51cyhbeworICAgICAgICAgIG5hbWU6ICdjcmVhdGVf aW5kZXhfb25fY29sbCcsIG5vZGU6ICdjb2xsLWluZGV4JywgbW9kdWxlOiB0 aGlzLAorICAgICAgICAgIGFwcGxpZXM6IFsnb2JqZWN0JywgJ2NvbnRleHQn XSwgY2FsbGJhY2s6ICdzaG93X29ial9wcm9wZXJ0aWVzJywKKyAgICAgICAg ICBjYXRlZ29yeTogJ2NyZWF0ZScsIHByaW9yaXR5OiA0LCBsYWJlbDogJ3t7 IF8oJ0luZGV4Li4uJykgfX0nLAorICAgICAgICAgIGljb246ICd3Y1RhYklj b24gaWNvbi1pbmRleCcsIGRhdGE6IHthY3Rpb246ICdjcmVhdGUnLCBjaGVj azogdHJ1ZX0sCisgICAgICAgICAgZW5hYmxlOiAnY2FuQ3JlYXRlJworICAg ICAgICB9LHsKKyAgICAgICAgICBuYW1lOiAnY3JlYXRlX2luZGV4Jywgbm9k ZTogJ2luZGV4JywgbW9kdWxlOiB0aGlzLAorICAgICAgICAgIGFwcGxpZXM6 IFsnb2JqZWN0JywgJ2NvbnRleHQnXSwgY2FsbGJhY2s6ICdzaG93X29ial9w cm9wZXJ0aWVzJywKKyAgICAgICAgICBjYXRlZ29yeTogJ2NyZWF0ZScsIHBy aW9yaXR5OiA0LCBsYWJlbDogJ3t7IF8oJ0luZGV4Li4uJykgfX0nLAorICAg ICAgICAgIGljb246ICd3Y1RhYkljb24gaWNvbi1pbmRleCcsIGRhdGE6IHth Y3Rpb246ICdjcmVhdGUnLCBjaGVjazogdHJ1ZX0sCisgICAgICAgICAgZW5h YmxlOiAnY2FuQ3JlYXRlJworICAgICAgICB9LHsKKyAgICAgICAgICBuYW1l OiAnY3JlYXRlX2luZGV4X29uVGFibGUnLCBub2RlOiAndGFibGUnLCBtb2R1 bGU6IHRoaXMsCisgICAgICAgICAgYXBwbGllczogWydvYmplY3QnLCAnY29u dGV4dCddLCBjYWxsYmFjazogJ3Nob3dfb2JqX3Byb3BlcnRpZXMnLAorICAg ICAgICAgIGNhdGVnb3J5OiAnY3JlYXRlJywgcHJpb3JpdHk6IDQsIGxhYmVs OiAne3sgXygnSW5kZXguLi4nKSB9fScsCisgICAgICAgICAgaWNvbjogJ3dj VGFiSWNvbiBpY29uLWluZGV4JywgZGF0YToge2FjdGlvbjogJ2NyZWF0ZScs IGNoZWNrOiB0cnVlfSwKKyAgICAgICAgICBlbmFibGU6ICdjYW5DcmVhdGUn CisgICAgICAgIH0seworICAgICAgICAgIG5hbWU6ICdjcmVhdGVfaW5kZXhf b25NYXRWaWV3Jywgbm9kZTogJ212aWV3JywgbW9kdWxlOiB0aGlzLAorICAg ICAgICAgIGFwcGxpZXM6IFsnb2JqZWN0JywgJ2NvbnRleHQnXSwgY2FsbGJh Y2s6ICdzaG93X29ial9wcm9wZXJ0aWVzJywKKyAgICAgICAgICBjYXRlZ29y eTogJ2NyZWF0ZScsIHByaW9yaXR5OiA1LCBsYWJlbDogJ3t7IF8oJ0luZGV4 Li4uJykgfX0nLAorICAgICAgICAgIGljb246ICd3Y1RhYkljb24gaWNvbi1p bmRleCcsIGRhdGE6IHthY3Rpb246ICdjcmVhdGUnLCBjaGVjazogdHJ1ZX0s CisgICAgICAgICAgZW5hYmxlOiAnY2FuQ3JlYXRlJworICAgICAgICB9Cisg ICAgICAgIF0pOworICAgICAgfSwKKyAgICAgIGNhbkRyb3A6IHBnQnJvd3Nl ci5Ob2Rlc1snc2NoZW1hJ10uY2FuQ2hpbGREcm9wLAorICAgICAgY2FuRHJv cENhc2NhZGU6IHBnQnJvd3Nlci5Ob2Rlc1snc2NoZW1hJ10uY2FuQ2hpbGRE cm9wLAorICAgICAgbW9kZWw6IHBnQWRtaW4uQnJvd3Nlci5Ob2RlLk1vZGVs LmV4dGVuZCh7CisgICAgICAgIGRlZmF1bHRzOiB7CisgICAgICAgICAgbmFt ZTogdW5kZWZpbmVkLAorICAgICAgICAgIG5zcG5hbWU6IHVuZGVmaW5lZCwK KyAgICAgICAgICB0YWJuYW1lOiB1bmRlZmluZWQsCisgICAgICAgICAgc3Bj bmFtZTogJ3BnX2RlZmF1bHQnLAorICAgICAgICAgIGFtbmFtZTogJ2J0cmVl JworICAgICAgICB9LAorICAgICAgICBzY2hlbWE6IFt7CisgICAgICAgICAg aWQ6ICduYW1lJywgbGFiZWw6ICd7eyBfKCdOYW1lJykgfX0nLCBjZWxsOiAn c3RyaW5nJywKKyAgICAgICAgICB0eXBlOiAndGV4dCcsIGRpc2FibGVkOiAn aW5TY2hlbWEnCisgICAgICAgIH0seworICAgICAgICAgIGlkOiAnb2lkJywg bGFiZWw6J3t7IF8oJ09JRCcpIH19JywgY2VsbDogJ3N0cmluZycsCisgICAg ICAgICAgdHlwZTogJ2ludCcsIGRpc2FibGVkOiB0cnVlLCBtb2RlOiBbJ2Vk aXQnLCAncHJvcGVydGllcyddCisgICAgICAgIH0seworICAgICAgICAgIGlk OiAnc3BjbmFtZScsIGxhYmVsOid7eyBfKCdUYWJsZXNwYWNlJykgfX0nLCBj ZWxsOiAnc3RyaW5nJywKKyAgICAgICAgICBjb250cm9sOiAnbm9kZS1saXN0 LWJ5LW5hbWUnLCBub2RlOiAndGFibGVzcGFjZScsCisgICAgICAgICAgc2Vs ZWN0MjogeydhbGxvd0NsZWFyJzogdHJ1ZX0sCisgICAgICAgICAgdHlwZTog J3RleHQnLCBtb2RlOiBbJ3Byb3BlcnRpZXMnLCAnY3JlYXRlJywgJ2VkaXQn XSwKKyAgICAgICAgICBkaXNhYmxlZDogJ2luU2NoZW1hJywgZmlsdGVyOiBm dW5jdGlvbihkKSB7CisgICAgICAgICAgICAvLyBJZiB0YWJsZXNwYWNlIG5h bWUgaXMgbm90ICJwZ19nbG9iYWwiIHRoZW4gd2UgbmVlZCB0byBleGNsdWRl IHRoZW0KKyAgICAgICAgICAgIGlmKGQgJiYgZC5sYWJlbC5tYXRjaCgvcGdf Z2xvYmFsLykpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIHJldHVy biBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiB0 cnVlOworICAgICAgICAgIH0KKyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6 ICdhbW5hbWUnLCBsYWJlbDone3sgXygnQWNjZXNzIE1ldGhvZCcpIH19Jywg Y2VsbDogJ3N0cmluZycsCisgICAgICAgICAgdHlwZTogJ3RleHQnLCBtb2Rl OiBbJ3Byb3BlcnRpZXMnLCAnY3JlYXRlJywgJ2VkaXQnXSwKKyAgICAgICAg ICBkaXNhYmxlZDogJ2luU2NoZW1hV2l0aE1vZGVsQ2hlY2snLCB1cmw6ICdn ZXRfYWNjZXNzX21ldGhvZHMnLAorICAgICAgICAgIGdyb3VwOiAne3sgXygn RGVmaW5pdGlvbicpIH19Jywgc2VsZWN0MjogeydhbGxvd0NsZWFyJzogdHJ1 ZX0sCisgICAgICAgICAgY29udHJvbDogQmFja2Zvcm0uTm9kZUFqYXhPcHRp b25zQ29udHJvbC5leHRlbmQoeworICAgICAgICAgICAgLy8gV2hlbiBhY2Nl c3MgbWV0aG9kIGNoYW5nZXMgd2UgbmVlZCB0byBjbGVhciBjb2x1bW5zIGNv bGxlY3Rpb24KKyAgICAgICAgICAgIG9uQ2hhbmdlOiBmdW5jdGlvbigpIHsK KyAgICAgICAgICAgICAgQmFja2Zvcm0uTm9kZUFqYXhPcHRpb25zQ29udHJv bC5wcm90b3R5cGUub25DaGFuZ2UuYXBwbHkodGhpcywgYXJndW1lbnRzKTsK KyAgICAgICAgICAgICAgdmFyIHNlbGYgPSB0aGlzLAorICAgICAgICAgICAg ICAvLyBjdXJyZW50IGFjY2VzcyBtZXRob2QKKyAgICAgICAgICAgICAgY3Vy cmVudF9hbSA9IHNlbGYubW9kZWwuZ2V0KCdhbW5hbWUnKSwKKyAgICAgICAg ICAgICAgLy8gcHJldmlvdXMgYWNjZXNzIG1ldGhvZAorICAgICAgICAgICAg ICBwcmV2aW91c19hbSA9IHNlbGYubW9kZWwucHJldmlvdXMoJ2FtbmFtZScp OworICAgICAgICAgICAgICBpZiAoY3VycmVudF9hbSAhPSBwcmV2aW91c19h bSAmJiBzZWxmLm1vZGVsLmdldCgnY29sdW1ucycpLmxlbmd0aCAhPT0gMCkg eworICAgICAgICAgICAgICAgIHZhciBtc2cgPSAne3sgXygnQ2hhbmdpbmcg YWNjZXNzIG1ldGhvZCB3aWxsIGNsZWFyIGNvbHVtbnMgY29sbGVjdGlvbicp IH19JzsKKyAgICAgICAgICAgICAgICBhbGVydGlmeS5jb25maXJtKG1zZywg ZnVuY3Rpb24gKGUpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gVXNlciBj bGlja3MgT2ssIGxldHMgY2xlYXIgY29sbGVjdGlvbgorICAgICAgICAgICAg ICAgICAgICB2YXIgY29sdW1uX2NvbGxlY3Rpb24gPSBzZWxmLm1vZGVsLmdl dCgnY29sdW1ucycpOworICAgICAgICAgICAgICAgICAgICBjb2x1bW5fY29s bGVjdGlvbi5yZXNldCgpOworICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rp b24oKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFVzZXIgY2xpY2tzIENh bmNlbCBzZXQgcHJldmlvdXMgdmFsdWUgYWdhaW4gaW4gY29tYm8gYm94Cisg ICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKXsKKyAg ICAgICAgICAgICAgICAgICAgICBzZWxmLm1vZGVsLnNldCgnYW1uYW1lJywg cHJldmlvdXNfYW0pOworICAgICAgICAgICAgICAgICAgICB9LCAxMCk7Cisg ICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgIH0KKyAgICAgICAg ICAgIH0KKyAgICAgICAgICB9KQorICAgICAgICB9LHsKKyAgICAgICAgICBp ZDogJ2NvbHMnLCBsYWJlbDone3sgXygnQ29sdW1ucycpIH19JywgY2VsbDog J3N0cmluZycsCisgICAgICAgICAgdHlwZTogJ3RleHQnLCBkaXNhYmxlZDog J2luU2NoZW1hJywgbW9kZTogWydwcm9wZXJ0aWVzJ10KKyAgICAgICAgfSx7 CisgICAgICAgICAgaWQ6ICdmaWxsZmFjdG9yJywgbGFiZWw6J3t7IF8oJ0Zp bGwgZmFjdG9yJykgfX0nLCBjZWxsOiAnc3RyaW5nJywKKyAgICAgICAgICB0 eXBlOiAnaW50JywgZGlzYWJsZWQ6ICdpblNjaGVtYScsIG1vZGU6IFsnY3Jl YXRlJywgJ2VkaXQnLCAncHJvcGVydGllcyddLAorICAgICAgICAgIG1pbjog MTAsIG1heDoxMDAsIGdyb3VwOiAne3sgXygnRGVmaW5pdGlvbicpIH19Jwor ICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ2luZGlzdW5pcXVlJywgbGFi ZWw6J3t7IF8oJ1VuaXF1ZT8nKSB9fScsIGNlbGw6ICdzdHJpbmcnLAorICAg ICAgICAgIHR5cGU6ICdzd2l0Y2gnLCBkaXNhYmxlZDogJ2luU2NoZW1hV2l0 aE1vZGVsQ2hlY2snLAorICAgICAgICAgIGdyb3VwOiAne3sgXygnRGVmaW5p dGlvbicpIH19JworICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ2luZGlz Y2x1c3RlcmVkJywgbGFiZWw6J3t7IF8oJ0NsdXN0ZXJlZD8nKSB9fScsIGNl bGw6ICdzdHJpbmcnLAorICAgICAgICAgIHR5cGU6ICdzd2l0Y2gnLCBkaXNh YmxlZDogJ2luU2NoZW1hJywKKyAgICAgICAgICBncm91cDogJ3t7IF8oJ0Rl ZmluaXRpb24nKSB9fScKKyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdp bmRpc3ZhbGlkJywgbGFiZWw6J3t7IF8oJ1ZhbGlkPycpIH19JywgY2VsbDog J3N0cmluZycsCisgICAgICAgICAgdHlwZTogJ3N3aXRjaCcsIGRpc2FibGVk OiB0cnVlLCBtb2RlOiBbJ3Byb3BlcnRpZXMnXSwKKworICAgICAgICB9LHsK KyAgICAgICAgICBpZDogJ2luZGlzcHJpbWFyeScsIGxhYmVsOid7eyBfKCdQ cmltYXJ5PycpIH19JywgY2VsbDogJ3N0cmluZycsCisgICAgICAgICAgdHlw ZTogJ3N3aXRjaCcsIGRpc2FibGVkOiB0cnVlLCBtb2RlOiBbJ3Byb3BlcnRp ZXMnXSwKKworICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ2lzX3N5c19p ZHgnLCBsYWJlbDone3sgXygnU3lzdGVtIGluZGV4PycpIH19JywgY2VsbDog J3N0cmluZycsCisgICAgICAgICAgdHlwZTogJ3N3aXRjaCcsIGRpc2FibGVk OiB0cnVlLCBtb2RlOiBbJ3Byb3BlcnRpZXMnXSwKKworICAgICAgICB9LHsK KyAgICAgICAgICBpZDogJ2lzY29uY3VycmVudCcsIGxhYmVsOid7eyBfKCdD b25jdXJyZW50IGJ1aWxkPycpIH19JywgY2VsbDogJ3N0cmluZycsCisgICAg ICAgICAgdHlwZTogJ3N3aXRjaCcsIGRpc2FibGVkOiAnaW5TY2hlbWFXaXRo TW9kZWxDaGVjaycsCisgICAgICAgICAgbW9kZTogWydjcmVhdGUnLCAnZWRp dCddLCBncm91cDogJ3t7IF8oJ0RlZmluaXRpb24nKSB9fScKKyAgICAgICAg fSx7CisgICAgICAgICAgaWQ6ICdpbmRjb25zdHJhaW50JywgbGFiZWw6J3t7 IF8oJ0NvbnN0cmFpbnQnKSB9fScsIGNlbGw6ICdzdHJpbmcnLAorICAgICAg ICAgIHR5cGU6ICd0ZXh0JywgZGlzYWJsZWQ6ICdpblNjaGVtYVdpdGhNb2Rl bENoZWNrJywgbW9kZTogWydjcmVhdGUnLCAnZWRpdCddLAorICAgICAgICAg IGNvbnRyb2w6ICdzcWwtZmllbGQnLCB2aXNpYmxlOiB0cnVlLCBncm91cDog J3t7IF8oJ0RlZmluaXRpb24nKSB9fScKKyAgICAgICAgfSx7CisgICAgICAg ICAgaWQ6ICdjb2x1bW5zJywgbGFiZWw6ICdDb2x1bW5zJywgdHlwZTogJ2Nv bGxlY3Rpb24nLAorICAgICAgICAgIGdyb3VwOiAne3sgXygnRGVmaW5pdGlv bicpIH19JywgbW9kZWw6IENvbHVtbk1vZGVsLCBtb2RlOiBbJ2VkaXQnLCAn Y3JlYXRlJ10sCisgICAgICAgICAgY2FuQWRkOiBmdW5jdGlvbihtKSB7Cisg ICAgICAgICAgICAvLyBXZSB3aWxsIGRpc2FibGUgaXQgaWYgaXQncyBpbiAn ZWRpdCcgbW9kZQorICAgICAgICAgICAgaWYgKG0uaXNOZXcoKSkgeworICAg ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0gZWxzZSB7 CisgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0K KyAgICAgICAgICB9LAorICAgICAgICAgIGNhbkVkaXQ6IGZ1bmN0aW9uKG0p IHsKKyAgICAgICAgICAgIC8vIFdlIHdpbGwgZGlzYWJsZSBpdCBpZiBpdCdz IGluICdlZGl0JyBtb2RlCisgICAgICAgICAgICBpZiAobS5pc05ldygpKSB7 CisgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfSBl bHNlIHsKKyAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg ICAgfQorICAgICAgICAgIH0sCisgICAgICAgICAgY2FuRGVsZXRlOiBmdW5j dGlvbihtKSB7CisgICAgICAgICAgICAvLyBXZSB3aWxsIGRpc2FibGUgaXQg aWYgaXQncyBpbiAnZWRpdCcgbW9kZQorICAgICAgICAgICAgaWYgKG0uaXNO ZXcoKSkgeworICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg ICAgICAgICAgIH0KKyAgICAgICAgICB9LAorICAgICAgICAgIGNvbnRyb2w6 ICd1bmlxdWUtY29sLWNvbGxlY3Rpb24nLCB1bmlxdWVDb2wgOiBbJ2NvbG5h bWUnXQorICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ2Rlc2NyaXB0aW9u JywgbGFiZWw6J3t7IF8oJ0NvbW1lbnQnKSB9fScsIGNlbGw6ICdzdHJpbmcn LAorICAgICAgICAgIHR5cGU6ICdtdWx0aWxpbmUnLCBtb2RlOiBbJ3Byb3Bl cnRpZXMnLCAnY3JlYXRlJywgJ2VkaXQnXSwKKyAgICAgICAgICBkaXNhYmxl ZDogJ2luU2NoZW1hJworICAgICAgICB9CisgICAgICAgIF0sCisgICAgICAg IHZhbGlkYXRlOiBmdW5jdGlvbihrZXlzKSB7CisgICAgICAgICAgdmFyIGVy ciA9IHt9LAorICAgICAgICAgICAgICBjaGFuZ2VkQXR0cnMgPSB0aGlzLmNo YW5nZWQsCisgICAgICAgICAgICAgIG1zZyA9IHVuZGVmaW5lZDsKKworICAg ICAgICAgIC8vIE5vdGhpbmcgdG8gdmFsaWRhdGUKKyAgICAgICAgICBpZiAo a2V5cyAmJiBrZXlzLmxlbmd0aCA9PSAwKSB7CisgICAgICAgICAgICB0aGlz LmVycm9yTW9kZWwuY2xlYXIoKTsKKyAgICAgICAgICAgIHJldHVybiBudWxs OworICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0aGlzLmVycm9y TW9kZWwuY2xlYXIoKTsKKyAgICAgICAgICB9CisKKyAgICAgICAgICBpZiAo Xy5pc1VuZGVmaW5lZCh0aGlzLmdldCgnbmFtZScpKQorICAgICAgICAgICAg ICB8fCBTdHJpbmcodGhpcy5nZXQoJ25hbWUnKSkucmVwbGFjZSgvXlxzK3xc cyskL2csICcnKSA9PSAnJykgeworICAgICAgICAgICAgbXNnID0gJ3t7IF8o J05hbWUgY2FuIG5vdCBiZSBlbXB0eS4nKSB9fSc7CisgICAgICAgICAgICB0 aGlzLmVycm9yTW9kZWwuc2V0KCduYW1lJywgbXNnKTsKKyAgICAgICAgICAg IHJldHVybiBtc2c7CisgICAgICAgICAgfQorICAgICAgICAgIGlmIChfLmlz VW5kZWZpbmVkKHRoaXMuZ2V0KCdzcGNuYW1lJykpCisgICAgICAgICAgICAg IHx8IFN0cmluZyh0aGlzLmdldCgnc3BjbmFtZScpKS5yZXBsYWNlKC9eXHMr fFxzKyQvZywgJycpID09ICcnKSB7CisgICAgICAgICAgICBtc2cgPSAne3sg XygnVGFibGVzcGFjZSBjYW4gbm90IGJlIGVtcHR5LicpIH19JzsKKyAgICAg ICAgICAgIHRoaXMuZXJyb3JNb2RlbC5zZXQoJ3NwY25hbWUnLCBtc2cpOwor ICAgICAgICAgICAgcmV0dXJuIG1zZzsKKyAgICAgICAgICB9CisgICAgICAg ICAgaWYgKF8uaXNVbmRlZmluZWQodGhpcy5nZXQoJ2FtbmFtZScpKQorICAg ICAgICAgICAgICB8fCBTdHJpbmcodGhpcy5nZXQoJ2FtbmFtZScpKS5yZXBs YWNlKC9eXHMrfFxzKyQvZywgJycpID09ICcnKSB7CisgICAgICAgICAgICBt c2cgPSAne3sgXygnQWNjZXNzIG1ldGhvZCBjYW4gbm90IGJlIGVtcHR5Licp IH19JzsKKyAgICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC5zZXQoJ2FtbmFt ZScsIG1zZyk7CisgICAgICAgICAgICByZXR1cm4gbXNnOworICAgICAgICAg IH0KKyAgICAgICAgICAvLyBDaGVja3MgaWYgYWxsIGNvbHVtbnMgaGFzIG5h bWVzCisgICAgICAgICAgdmFyIGNvbHMgPSB0aGlzLmdldCgnY29sdW1ucycp OworICAgICAgICAgIGlmKGNvbHMgJiYgY29scy5sZW5ndGggPiAwKSB7Cisg ICAgICAgICAgICAgaWYoIV8uZXZlcnkoY29scy5wbHVjaygnY29sbmFtZScp KSkgeworICAgICAgICAgICAgICAgbXNnID0gJ3t7IF8oJ1lvdSBtdXN0IHNw ZWNpZnkgY29sdW1uIG5hbWUuJykgfX0nOworICAgICAgICAgICAgICAgdGhp cy5lcnJvck1vZGVsLnNldCgnY29sdW1ucycsIG1zZyk7CisgICAgICAgICAg ICAgICByZXR1cm4gbXNnOworICAgICAgICAgICAgIH0KKyAgICAgICAgICB9 IGVsc2UgaWYoY29scyl7CisgICAgICAgICAgICAgICBtc2cgPSAne3sgXygn WW91IG11c3Qgc3BlY2lmeSBhdCBsZWFzdCBvbmUgY29sdW1uLicpIH19JzsK KyAgICAgICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC5zZXQoJ2NvbHVtbnMn LCBtc2cpOworICAgICAgICAgICAgICAgcmV0dXJuIG1zZzsKKyAgICAgICAg ICB9CisgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0sCisgICAg ICAgIC8vIFdlIHdpbGwgY2hlY2sgaWYgd2UgYXJlIHVuZGVyIHNjaGVtYSBu b2RlICYgaW4gJ2NyZWF0ZScgbW9kZQorICAgICAgICBpblNjaGVtYTogZnVu Y3Rpb24oKSB7CisgICAgICAgICAgaWYodGhpcy5ub2RlX2luZm8gJiYgICdj YXRhbG9nJyBpbiB0aGlzLm5vZGVfaW5mbykgeworICAgICAgICAgICAgcmV0 dXJuIHRydWU7CisgICAgICAgICAgfQorICAgICAgICAgIHJldHVybiBmYWxz ZTsKKyAgICAgICAgfSwKKyAgICAgICAgLy8gV2Ugd2lsbCBjaGVjayBpZiB3 ZSBhcmUgdW5kZXIgc2NoZW1hIG5vZGUgJiBpbiAnY3JlYXRlJyBtb2RlCisg ICAgICAgIGluU2NoZW1hV2l0aE1vZGVsQ2hlY2s6IGZ1bmN0aW9uKG0pIHsK KyAgICAgICAgICBpZih0aGlzLm5vZGVfaW5mbyAmJiAgJ3NjaGVtYScgaW4g dGhpcy5ub2RlX2luZm8pIHsKKyAgICAgICAgICAgIC8vIFdlIHdpbGwgZGlz YWJsZSBjb250cm9sIGlmIGl0J3MgaW4gJ2VkaXQnIG1vZGUKKyAgICAgICAg ICAgIGlmIChtLmlzTmV3KCkpIHsKKyAgICAgICAgICAgICAgcmV0dXJuIGZh bHNlOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgcmV0 dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAg ICAgIHJldHVybiB0cnVlOworICAgICAgICB9LAorICAgICAgICAvLyBDaGVj a3Mgd2VhdGhlciB0byBlbmFibGUvZGlzYWJsZSBjb250cm9sCisgICAgICAg IGluU2NoZW1hV2l0aENvbHVtbkNoZWNrOiBmdW5jdGlvbihtKSB7CisgICAg ICAgICAgaWYodGhpcy5ub2RlX2luZm8gJiYgICdzY2hlbWEnIGluIHRoaXMu bm9kZV9pbmZvKSB7CisgICAgICAgICAgICAvLyBXZSB3aWxsIGRpc2FibGUg Y29udHJvbCBpZiBpdCdzIHN5c3RlbSBjb2x1bW5zCisgICAgICAgICAgICAv LyBpZTogaXQncyBwb3NpdGlvbiBpcyBsZXNzIHRoZW4gMQorICAgICAgICAg ICAgaWYgKG0uaXNOZXcoKSkgeworICAgICAgICAgICAgICByZXR1cm4gZmFs c2U7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAvLyBp ZiB3ZSBhcmUgaW4gZWRpdCBtb2RlCisgICAgICAgICAgICAgIGlmICghXy5p c1VuZGVmaW5lZChtLmdldCgnYXR0bnVtJykpICYmIG0uZ2V0KCdhdHRudW0n KSA+PSAxICkgeworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXR1cm4g dHJ1ZTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICB9CisgICAgICAg ICAgfQorICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAg ICB9KSwKKyAgICAgIC8vIEJlbG93IGZ1bmN0aW9uIHdpbGwgZW5hYmxlIHJp Z2h0IGNsaWNrIG1lbnUgZm9yIGNyZWF0aW5nIGNvbHVtbgorICAgICAgY2Fu Q3JlYXRlOiBmdW5jdGlvbihpdGVtRGF0YSwgaXRlbSwgZGF0YSkgeworICAg ICAgICAgIC8vIElmIGNoZWNrIGlzIGZhbHNlIHRoZW4gLCB3ZSB3aWxsIGFs bG93IGNyZWF0ZSBtZW51CisgICAgICAgICAgaWYgKGRhdGEgJiYgZGF0YS5j aGVjayA9PSBmYWxzZSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworCisg ICAgICAgICAgdmFyIHQgPSBwZ0Jyb3dzZXIudHJlZSwgaSA9IGl0ZW0sIGQg PSBpdGVtRGF0YSwgcGFyZW50cyA9IFtdOworICAgICAgICAgIC8vIFRvIGl0 ZXJhdGUgb3ZlciB0cmVlIHRvIGNoZWNrIHBhcmVudCBub2RlCisgICAgICAg ICAgd2hpbGUgKGkpIHsKKyAgICAgICAgICAgIC8vIElmIGl0IGlzIHNjaGVt YSB0aGVuIGFsbG93IHVzZXIgdG8gYyByZWF0ZSB0YWJsZQorICAgICAgICAg ICAgaWYgKF8uaW5kZXhPZihbJ3NjaGVtYSddLCBkLl90eXBlKSA+IC0xKQor ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIHBhcmVu dHMucHVzaChkLl90eXBlKTsKKyAgICAgICAgICAgIGkgPSB0Lmhhc1BhcmVu dChpKSA/IHQucGFyZW50KGkpIDogbnVsbDsKKyAgICAgICAgICAgIGQgPSBp ID8gdC5pdGVtRGF0YShpKSA6IG51bGw7CisgICAgICAgICAgfQorICAgICAg ICAgIC8vIElmIG5vZGUgaXMgdW5kZXIgY2F0YWxvZyB0aGVuIGRvIG5vdCBh bGxvdyAnY3JlYXRlJyBtZW51CisgICAgICAgICAgaWYgKF8uaW5kZXhPZihw YXJlbnRzLCAnY2F0YWxvZycpID4gLTEpIHsKKyAgICAgICAgICAgIHJldHVy biBmYWxzZTsKKyAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0 dXJuIHRydWU7CisgICAgICAgICAgfQorICAgICAgfQorICB9KTsKKyB9CisK KyAgcmV0dXJuIHBnQnJvd3Nlci5Ob2Rlc1snaW5kZXgnXTsKK30pOwpkaWZm IC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3J1bGVzL19faW5pdF9f LnB5IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3J1bGVzL19faW5pdF9fLnB5 Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0NDIzMzgK LS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvcnVs ZXMvX19pbml0X18ucHkKQEAgLTAsMCArMSw0OTcgQEAKKyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjCisjCisjIHBnQWRtaW4gNCAtIFBvc3RncmVT UUwgVG9vbHMKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAxNiwgVGhl IHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorIyBUaGlzIHNvZnR3YXJlIGlz IHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKyMKKyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyIiIkltcGxlbWVudHMg UnVsZSBOb2RlIiIiCisKK2ltcG9ydCBqc29uCitmcm9tIGZsYXNrIGltcG9y dCByZW5kZXJfdGVtcGxhdGUsIG1ha2VfcmVzcG9uc2UsIHJlcXVlc3QsIGpz b25pZnkKK2Zyb20gZmxhc2suZXh0LmJhYmVsIGltcG9ydCBnZXR0ZXh0Citm cm9tIHBnYWRtaW4udXRpbHMuYWpheCBpbXBvcnQgbWFrZV9qc29uX3Jlc3Bv bnNlLCBcCisgICAgbWFrZV9yZXNwb25zZSBhcyBhamF4X3Jlc3BvbnNlLCBp bnRlcm5hbF9zZXJ2ZXJfZXJyb3IKK2Zyb20gcGdhZG1pbi5icm93c2VyLnV0 aWxzIGltcG9ydCBQR0NoaWxkTm9kZVZpZXcKK2ltcG9ydCBwZ2FkbWluLmJy b3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLmRhdGFiYXNlcy5zY2hlbWFz IGFzIHNjaGVtYXMKK2Zyb20gcGdhZG1pbi5icm93c2VyLnNlcnZlcl9ncm91 cHMuc2VydmVycy5kYXRhYmFzZXMuc2NoZW1hcy51dGlscyBpbXBvcnQgXAor ICAgIHBhcnNlX3J1bGVfZGVmaW5pdGlvbgorZnJvbSBwZ2FkbWluLmJyb3dz ZXIuY29sbGVjdGlvbiBpbXBvcnQgQ29sbGVjdGlvbk5vZGVNb2R1bGUKK2Zy b20gcGdhZG1pbi51dGlscy5hamF4IGltcG9ydCBwcmVjb25kaXRpb25fcmVx dWlyZWQKK2Zyb20gcGdhZG1pbi51dGlscy5kcml2ZXIgaW1wb3J0IGdldF9k cml2ZXIKK2Zyb20gY29uZmlnIGltcG9ydCBQR19ERUZBVUxUX0RSSVZFUgor ZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHdyYXBzCisKKworY2xhc3MgUnVsZU1v ZHVsZShDb2xsZWN0aW9uTm9kZU1vZHVsZSk6CisgICAgIiIiCisgICAgY2xh c3MgUnVsZU1vZHVsZShDb2xsZWN0aW9uTm9kZU1vZHVsZSk6CisKKyAgICAg ICAgQSBydWxlIGNvbGxlY3Rpb24gTm9kZSB3aGljaCBpbmhlcml0cyBDb2xs ZWN0aW9uTm9kZU1vZHVsZQorICAgICAgICBjbGFzcyBhbmQgZGVmaW5lIG1l dGhvZHM6CisgICAgICAgICAgZ2V0X25vZGVzIC0gVG8gZ2VuZXJhdGUgY29s bGVjdGlvbiBub2RlLgorICAgICAgICAgIHNjcmlwdF9sb2FkIC0gdGVsbHMg d2hlbiB0byBsb2FkIGpzIGZpbGUuCisgICAgICAgICAgY3Nzc25wcGV0cyAt IGFkZCBjc3MgdG8gcGFnZQorICAgICIiIgorICAgIE5PREVfVFlQRSA9ICdy dWxlJworICAgIENPTExFQ1RJT05fTEFCRUwgPSBnZXR0ZXh0KCJSdWxlcyIp CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToK KyAgICAgICAgc2VsZi5taW5fdmVyID0gTm9uZQorICAgICAgICBzZWxmLm1h eF92ZXIgPSBOb25lCisKKyAgICAgICAgc3VwZXIoUnVsZU1vZHVsZSwgc2Vs ZikuX19pbml0X18oKmFyZ3MsICoqa3dhcmdzKQorCisgICAgZGVmIEJhY2tl bmRTdXBwb3J0ZWQoc2VsZiwgbWFuYWdlciwgKiprd2FyZ3MpOgorICAgICAg ICAiIiIKKyAgICAgICAgTG9hZCB0aGlzIG1vZHVsZSBpZiB0aWQgaXMgdmll dywgd2Ugd2lsbCBub3QgbG9hZCBpdCB1bmRlcgorICAgICAgICBtYXRlcmlh bCB2aWV3CisgICAgICAgICIiIgorICAgICAgICBpZiBzdXBlcihSdWxlTW9k dWxlLCBzZWxmKS5CYWNrZW5kU3VwcG9ydGVkKG1hbmFnZXIsICoqa3dhcmdz KToKKyAgICAgICAgICAgIGNvbm4gPSBtYW5hZ2VyLmNvbm5lY3Rpb24oZGlk PWt3YXJnc1snZGlkJ10pCisgICAgICAgICAgICAjIElmIERCIGlzIG5vdCBj b25uZWN0ZWQgdGhlbiByZXR1cm4gZXJyb3IgdG8gYnJvd3NlcgorICAgICAg ICAgICAgaWYgbm90IGNvbm4uY29ubmVjdGVkKCk6CisgICAgICAgICAgICAg ICAgcmV0dXJuIHByZWNvbmRpdGlvbl9yZXF1aXJlZCgKKyAgICAgICAgICAg ICAgICAgICAgZ2V0dGV4dCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAiQ29ubmVjdGlvbiB0byB0aGUgc2VydmVyIGhhcyBiZWVuIGxvc3QhIgor ICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgKQorCisg ICAgICAgICAgICBpZiAndmlkJyBub3QgaW4ga3dhcmdzOgorICAgICAgICAg ICAgICAgIHJldHVybiBUcnVlCisKKyAgICAgICAgICAgIHNlbGYudGVtcGxh dGVfcGF0aCA9ICdydWxlcy9zcWwnCisgICAgICAgICAgICBTUUwgPSByZW5k ZXJfdGVtcGxhdGUoIi8iLmpvaW4oCisgICAgICAgICAgICAgICAgICAgIFtz ZWxmLnRlbXBsYXRlX3BhdGgsICdiYWNrZW5kX3N1cHBvcnQuc3FsJ10KKyAg ICAgICAgICAgICAgICAgICksIHZpZD1rd2FyZ3NbJ3ZpZCddKQorICAgICAg ICAgICAgc3RhdHVzLCByZXMgPSBjb25uLmV4ZWN1dGVfc2NhbGFyKFNRTCkK KyAgICAgICAgICAgICMgY2hlY2sgaWYgYW55IGVycm9ycworICAgICAgICAg ICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICByZXR1cm4gaW50 ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKyAgICAgICAgICAg ICMgQ2hlY2sgdGlkIGlzIHZpZXcgbm90IG1hdGVyaWFsIHZpZXcKKyAgICAg ICAgICAgICMgdGhlbiB0cnVlLCBvdGhld2lzZSBmYWxzZQorICAgICAgICAg ICAgaWYgcmVzIGlzIFRydWU6CisgICAgICAgICAgICAgICAgcmV0dXJuIHJl cworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXR1cm4g cmVzCisKKyAgICBkZWYgZ2V0X25vZGVzKHNlbGYsIGdpZCwgc2lkLCBkaWQs IHNjaWQsICoqa3dhcmdzKToKKyAgICAgICAgIiIiCisgICAgICAgIEdlbmVy YXRlIHRoZSBjb2xsZWN0aW9uIG5vZGUKKyAgICAgICAgIiIiCisgICAgICAg IGFzc2VydCgndGlkJyBpbiBrd2FyZ3Mgb3IgJ3ZpZCcgaW4ga3dhcmdzKQor ICAgICAgICB5aWVsZCBzZWxmLmdlbmVyYXRlX2Jyb3dzZXJfY29sbGVjdGlv bl9ub2RlKAorICAgICAgICAgIGt3YXJnc1sndGlkJ10gaWYgJ3RpZCcgaW4g a3dhcmdzIGVsc2Uga3dhcmdzWyd2aWQnXQorICAgICAgICAgICkKKworICAg IEBwcm9wZXJ0eQorICAgIGRlZiBub2RlX2lub2RlKHNlbGYpOgorICAgICAg ICAiIiIKKyAgICAgICAgSWYgYSBub2RlIGhhcyBjaGlsZHJlbiByZXR1cm4g VHJ1ZSBvdGhlcndpc2UgRmFsc2UKKyAgICAgICAgIiIiCisgICAgICAgIHJl dHVybiBGYWxzZQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHNjcmlwdF9s b2FkKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgTG9hZCB0aGUgbW9k dWxlIHNjcmlwdCBmb3IgcnVsZSwgd2hlbiBhbnkgb2YgdGhlIGRhdGFiYXNl IG5vZGVzIGFyZQorICAgICAgICBpbml0aWFsaXplZC4KKyAgICAgICAgIiIi CisgICAgICAgIHJldHVybiBzY2hlbWFzLlNjaGVtYU1vZHVsZS5OT0RFX1RZ UEUKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBjc3NzbmlwcGV0cyhzZWxm KToKKyAgICAgICAgIiIiCisgICAgICAgIFJldHVybnMgYSBzbmlwcGV0IG9m IGNzcyB0byBpbmNsdWRlIGluIHRoZSBwYWdlCisgICAgICAgICIiIgorICAg ICAgICBzbmlwcGV0cyA9IFsKKyAgICAgICAgICAgICAgICByZW5kZXJfdGVt cGxhdGUoCisgICAgICAgICAgICAgICAgICAgICJicm93c2VyL2Nzcy9jb2xs ZWN0aW9uLmNzcyIsCisgICAgICAgICAgICAgICAgICAgIG5vZGVfdHlwZT1z ZWxmLm5vZGVfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgXz1nZXR0ZXh0 CisgICAgICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgcmVu ZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAgICAgICAgICAicnVsZXMvY3Nz L3J1bGUuY3NzIiwKKyAgICAgICAgICAgICAgICAgICAgbm9kZV90eXBlPXNl bGYubm9kZV90eXBlLAorICAgICAgICAgICAgICAgICAgICBfPWdldHRleHQK KyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIF0KKwor ICAgICAgICBmb3Igc3VibW9kdWxlIGluIHNlbGYuc3VibW9kdWxlczoKKyAg ICAgICAgICAgIHNuaXBwZXRzLmV4dGVuZChzdWJtb2R1bGUuY3Nzc25pcHBl dHMpCisKKyAgICAgICAgcmV0dXJuIHNuaXBwZXRzCisKKworIyBDcmVhdGUg Ymx1ZXByaW50IG9mIFJ1bGVNb2R1bGUuCitibHVlcHJpbnQgPSBSdWxlTW9k dWxlKF9fbmFtZV9fKQorCisKK2NsYXNzIFJ1bGVWaWV3KFBHQ2hpbGROb2Rl Vmlldyk6CisgICAgIiIiCisgICAgVGhpcyBpcyBhIGNsYXNzIGZvciBydWxl IG5vZGUgd2hpY2ggaW5oZXJpdHMgdGhlCisgICAgcHJvcGVydGllcyBhbmQg bWV0aG9kcyBmcm9tIFBHQ2hpbGROb2RlVmlldyBjbGFzcyBhbmQgZGVmaW5l CisgICAgdmFyaW91cyBtZXRob2RzIHRvIGxpc3QsIGNyZWF0ZSwgdXBkYXRl IGFuZCBkZWxldGUgcnVsZS4KKworICAgIFZhcmlhYmxlczoKKyAgICAtLS0t LS0tLS0KKyAgICAqIG5vZGVfdHlwZSAtIHRlbGxzIHdoaWNoIHR5cGUgb2Yg bm9kZSBpdCBpcworICAgICogcGFyZW50X2lkcyAtIGlkIHdpdGggaXRzIHR5 cGUgYW5kIG5hbWUgb2YgcGFyZW50IG5vZGVzCisgICAgKiBpZHMgLSBpZCB3 aXRoIHR5cGUgYW5kIG5hbWUgb2YgZXh0ZW5zaW9uIG1vZHVsZSBiZWluZyB1 c2VkLgorICAgICogb3BlcmF0aW9ucyAtIGZ1bmN0aW9uIHJvdXRlcyBtYXBw aW5ncyBkZWZpbmVkLgorICAgICIiIgorICAgIG5vZGVfdHlwZSA9IGJsdWVw cmludC5ub2RlX3R5cGUKKworICAgIHBhcmVudF9pZHMgPSBbCisgICAgICAg ICAgICB7J3R5cGUnOiAnaW50JywgJ2lkJzogJ2dpZCd9LAorICAgICAgICAg ICAgeyd0eXBlJzogJ2ludCcsICdpZCc6ICdzaWQnfSwKKyAgICAgICAgICAg IHsndHlwZSc6ICdpbnQnLCAnaWQnOiAnZGlkJ30sCisgICAgICAgICAgICB7 J3R5cGUnOiAnaW50JywgJ2lkJzogJ3NjaWQnfSwKKyAgICAgICAgICAgIHsn dHlwZSc6ICdpbnQnLCAnaWQnOiAndGlkJ30KKyAgICAgICAgICAgIF0KKyAg ICBpZHMgPSBbCisgICAgICAgICAgICB7J3R5cGUnOiAnaW50JywgJ2lkJzog J3JpZCd9CisgICAgICAgICAgICBdCisKKyAgICBvcGVyYXRpb25zID0gZGlj dCh7CisgICAgICAgICdvYmonOiBbCisgICAgICAgICAgICB7J2dldCc6ICdw cm9wZXJ0aWVzJywgJ2RlbGV0ZSc6ICdkZWxldGUnLCAncHV0JzogJ3VwZGF0 ZSd9LAorICAgICAgICAgICAgeydnZXQnOiAnbGlzdCcsICdwb3N0JzogJ2Ny ZWF0ZSd9CisgICAgICAgIF0sCisgICAgICAgICdjaGlsZHJlbic6IFt7Cisg ICAgICAgICAgICAnZ2V0JzogJ2NoaWxkcmVuJworICAgICAgICB9XSwKKyAg ICAgICAgJ2RlbGV0ZSc6IFt7J2RlbGV0ZSc6ICdkZWxldGUnfV0sCisgICAg ICAgICdub2Rlcyc6IFt7J2dldCc6ICdub2RlJ30sIHsnZ2V0JzogJ25vZGVz J31dLAorICAgICAgICAnc3FsJzogW3snZ2V0JzogJ3NxbCd9XSwKKyAgICAg ICAgJ21zcWwnOiBbeydnZXQnOiAnbXNxbCd9LCB7J2dldCc6ICdtc3FsJ31d LAorICAgICAgICAnc3RhdHMnOiBbeydnZXQnOiAnc3RhdGlzdGljcyd9XSwK KyAgICAgICAgJ2RlcGVuZGVuY3knOiBbeydnZXQnOiAnZGVwZW5kZW5jaWVz J31dLAorICAgICAgICAnZGVwZW5kZW50JzogW3snZ2V0JzogJ2RlcGVuZGVu dHMnfV0sCisgICAgICAgICdtb2R1bGUuanMnOiBbe30sIHt9LCB7J2dldCc6 ICdtb2R1bGVfanMnfV0sCisgICAgICAgICdjb25maWdzJzogW3snZ2V0Jzog J2NvbmZpZ3MnfV0KKyAgICB9KQorCisgICAgZGVmIG1vZHVsZV9qcyhzZWxm KToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgcHJvcGVydHkgZGVmaW5l cyB3aGV0aGVyIEphdmFzY3JpcHQgZXhpc3RzIGZvciB0aGlzIG5vZGUuCisg ICAgICAgICIiIgorICAgICAgICByZXR1cm4gbWFrZV9yZXNwb25zZSgKKyAg ICAgICAgICAgICAgICByZW5kZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAg ICAgICAgICJydWxlcy9qcy9ydWxlcy5qcyIsCisgICAgICAgICAgICAgICAg ICAgIF89Z2V0dGV4dAorICAgICAgICAgICAgICAgICAgICApLAorICAgICAg ICAgICAgICAgIDIwMCwgeydDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24v eC1qYXZhc2NyaXB0J30KKyAgICAgICAgICAgICAgICApCisKKyAgICBkZWYg Y2hlY2tfcHJlY29uZGl0aW9uKGYpOgorICAgICAgICAiIiIKKyAgICAgICAg VGhpcyBmdW5jdGlvbiB3aWxsIGJlaGF2ZSBhcyBhIGRlY29yYXRvciB3aGlj aCB3aWxsIGNoZWNrIHRoZQorICAgICAgICBkYXRhYmFzZSBjb25uZWN0aW9u IGJlZm9yZSBydW5uaW5nIGEgdmlldy4gSXQgd2lsbCBhbHNvIGF0dGFjaAor ICAgICAgICBtYW5hZ2VyLCBjb25uICYgdGVtcGxhdGVfcGF0aCBwcm9wZXJ0 aWVzIHRvIHNlbGYKKyAgICAgICAgIiIiCisgICAgICAgIEB3cmFwcyhmKQor ICAgICAgICBkZWYgd3JhcCgqYXJncywgKiprd2FyZ3MpOgorCisgICAgICAg ICAgICAjIEhlcmUgYXJnc1swXSB3aWxsIGhvbGQgc2VsZiAmIGt3YXJncyB3 aWxsIGhvbGQgZ2lkLHNpZCxkaWQKKyAgICAgICAgICAgIHNlbGYgPSBhcmdz WzBdCisgICAgICAgICAgICBzZWxmLm1hbmFnZXIgPSBnZXRfZHJpdmVyKAor ICAgICAgICAgICAgICBQR19ERUZBVUxUX0RSSVZFUikuY29ubmVjdGlvbl9t YW5hZ2VyKGt3YXJnc1snc2lkJ10pCisgICAgICAgICAgICBzZWxmLmNvbm4g PSBzZWxmLm1hbmFnZXIuY29ubmVjdGlvbihkaWQ9a3dhcmdzWydkaWQnXSkK KworICAgICAgICAgICAgIyBJZiBEQiBub3QgY29ubmVjdGVkIHRoZW4gcmV0 dXJuIGVycm9yIHRvIGJyb3dzZXIKKyAgICAgICAgICAgIGlmIG5vdCBzZWxm LmNvbm4uY29ubmVjdGVkKCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHBy ZWNvbmRpdGlvbl9yZXF1aXJlZCgKKyAgICAgICAgICAgICAgICAgICAgZ2V0 dGV4dCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29ubmVjdGlv biB0byB0aGUgc2VydmVyIGhhcyBiZWVuIGxvc3QhIgorICAgICAgICAgICAg ICAgICAgICApCisgICAgICAgICAgICAgICAgKQorCisgICAgICAgICAgICBz ZWxmLmRhdGxhc3RzeXNvaWQgPSBzZWxmLm1hbmFnZXIuZGJfaW5mb1trd2Fy Z3NbJ2RpZCddXVsnZGF0bGFzdHN5c29pZCddCisgICAgICAgICAgICBzZWxm LnRlbXBsYXRlX3BhdGggPSAncnVsZXMvc3FsJworICAgICAgICAgICAgcmV0 dXJuIGYoKmFyZ3MsICoqa3dhcmdzKQorCisgICAgICAgIHJldHVybiB3cmFw CisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVmIGxpc3Qoc2Vs ZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgdGlkKToKKyAgICAgICAgIiIiCisg ICAgICAgIEZldGNoIGFsbCBydWxlIHByb3BlcnRpZXMgYW5kIHJlbmRlciBp bnRvIHByb3BlcnRpZXMgdGFiCisgICAgICAgICIiIgorCisgICAgICAgICMg ZmV0Y2ggc2NoZW1hIG5hbWUgYnkgc2NoZW1hIGlkCisgICAgICAgIFNRTCA9 IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbigKKyAgICAgICAgICBbc2VsZi50 ZW1wbGF0ZV9wYXRoLCAncHJvcGVydGllcy5zcWwnXSksIHRpZD10aWQpCisg ICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChT UUwpCisKKyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJl dHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorICAg ICAgICByZXR1cm4gYWpheF9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICBy ZXNwb25zZT1yZXNbJ3Jvd3MnXSwKKyAgICAgICAgICAgICAgICBzdGF0dXM9 MjAwCisgICAgICAgICAgICAgICAgKQorCisgICAgQGNoZWNrX3ByZWNvbmRp dGlvbgorICAgIGRlZiBub2RlcyhzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lk LCB0aWQpOgorICAgICAgICAiIiIKKyAgICAgICAgTGlzdCBhbGwgdGhlIHJ1 bGVzIHVuZGVyIHRoZSBSdWxlcyBDb2xsZWN0aW9uIG5vZGUKKyAgICAgICAg IiIiCisgICAgICAgIHJlcyA9IFtdCisgICAgICAgIFNRTCA9IHJlbmRlcl90 ZW1wbGF0ZSgiLyIuam9pbigKKyAgICAgICAgICBbc2VsZi50ZW1wbGF0ZV9w YXRoLCAncHJvcGVydGllcy5zcWwnXSksIHRpZD10aWQpCisKKyAgICAgICAg c3RhdHVzLCByc2V0ID0gc2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJheShTUUwp CisgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICByZXR1cm4g aW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJzZXQpCisKKyAgICAg ICAgZm9yIHJvdyBpbiByc2V0Wydyb3dzJ106CisgICAgICAgICAgICByZXMu YXBwZW5kKAorICAgICAgICAgICAgICAgICAgICBzZWxmLmJsdWVwcmludC5n ZW5lcmF0ZV9icm93c2VyX25vZGUoCisgICAgICAgICAgICAgICAgICAgICAg ICByb3dbJ29pZCddLAorICAgICAgICAgICAgICAgICAgICAgICAgdGlkLAor ICAgICAgICAgICAgICAgICAgICAgICAgcm93WyduYW1lJ10sCisgICAgICAg ICAgICAgICAgICAgICAgICBpY29uPSJpY29uLXJ1bGUiCisgICAgICAgICAg ICAgICAgICAgICkpCisKKyAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNw b25zZSgKKyAgICAgICAgICAgICAgICBkYXRhPXJlcywKKyAgICAgICAgICAg ICAgICBzdGF0dXM9MjAwCisgICAgICAgICAgICAgICAgKQorCisgICAgQGNo ZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBwcm9wZXJ0aWVzKHNlbGYsIGdp ZCwgc2lkLCBkaWQsIHNjaWQsIHRpZCwgcmlkKToKKyAgICAgICAgIiIiCisg ICAgICAgIEZldGNoIHRoZSBwcm9wZXJ0aWVzIG9mIGFuIGluZGl2aWR1YWwg cnVsZSBhbmQgcmVuZGVyIGluIHByb3BlcnRpZXMgdGFiCisKKyAgICAgICAg IiIiCisgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbigK KyAgICAgICAgICAgIFtzZWxmLnRlbXBsYXRlX3BhdGgsICdwcm9wZXJ0aWVz LnNxbCddCisgICAgICAgICAgKSwgcmlkPXJpZCwgZGF0bGFzdHN5c29pZD1z ZWxmLmRhdGxhc3RzeXNvaWQpCisgICAgICAgIHN0YXR1cywgcmVzID0gc2Vs Zi5jb25uLmV4ZWN1dGVfZGljdChTUUwpCisKKyAgICAgICAgaWYgbm90IHN0 YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJy b3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgIHJldHVybiBhamF4X3Jlc3Bv bnNlKAorICAgICAgICAgICAgICAgIHJlc3BvbnNlPXBhcnNlX3J1bGVfZGVm aW5pdGlvbihyZXMpLAorICAgICAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAg ICAgICAgICAgICAgICApCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisg ICAgZGVmIGNyZWF0ZShzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQp OgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIGNy ZWF0ZSBhIG5ldyBydWxlIG9iamVjdAorICAgICAgICAiIiIKKyAgICAgICAg cmVxdWlyZWRfYXJncyA9IFsKKyAgICAgICAgICAgICduYW1lJywKKyAgICAg ICAgXQorCisgICAgICAgIGRhdGEgPSByZXF1ZXN0LmZvcm0gaWYgcmVxdWVz dC5mb3JtIGVsc2UgXAorICAgICAgICAgICAganNvbi5sb2FkcyhyZXF1ZXN0 LmRhdGEuZGVjb2RlKCkpCisgICAgICAgIGZvciBhcmcgaW4gcmVxdWlyZWRf YXJnczoKKyAgICAgICAgICAgIGlmIGFyZyBub3QgaW4gZGF0YToKKyAgICAg ICAgICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAg ICAgICAgICAgICAgICBzdGF0dXM9NDEwLAorICAgICAgICAgICAgICAgICAg ICBzdWNjZXNzPTAsCisgICAgICAgICAgICAgICAgICAgIGVycm9ybXNnPWdl dHRleHQoCisgICAgICAgICAgICAgICAgICAgICAgICAiQ291bGRuJ3QgZmlu ZCB0aGUgcmVxdWlyZWQgcGFyYW1ldGVyICglcykuIiAlIGFyZworICAgICAg ICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgKQorICAgICAgICB0 cnk6CisgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpv aW4oCisgICAgICAgICAgICAgICAgW3NlbGYudGVtcGxhdGVfcGF0aCwgJ2Ny ZWF0ZS5zcWwnXSksIGRhdGE9ZGF0YSkKKyAgICAgICAgICAgIHN0YXR1cywg cmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfc2NhbGFyKFNRTCkKKyAgICAgICAg ICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAgcmV0dXJuIGlu dGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAg ICAgICMgRmV0Y2ggdGhlIHJ1bGUgaWQgYWdhaW5zdCBydWxlIG5hbWUgdG8g ZGlzcGxheSBub2RlCisgICAgICAgICAgICAjIGluIHRyZWUgYnJvd3Nlcgor ICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKAor ICAgICAgICAgICAgICAgIFtzZWxmLnRlbXBsYXRlX3BhdGgsICdydWxlX2lk LnNxbCddKSwgcnVsZV9uYW1lPWRhdGFbJ25hbWUnXSkKKyAgICAgICAgICAg IHN0YXR1cywgcnVsZV9pZCA9IHNlbGYuY29ubi5leGVjdXRlX3NjYWxhcihT UUwpCisgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAg ICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cnVs ZV9pZCkKKyAgICAgICAgICAgIHJldHVybiBqc29uaWZ5KAorICAgICAgICAg ICAgICAgIG5vZGU9c2VsZi5ibHVlcHJpbnQuZ2VuZXJhdGVfYnJvd3Nlcl9u b2RlKAorICAgICAgICAgICAgICAgICAgICBydWxlX2lkLAorICAgICAgICAg ICAgICAgICAgICB0aWQsCisgICAgICAgICAgICAgICAgICAgIGRhdGFbJ25h bWUnXSwKKyAgICAgICAgICAgICAgICAgICAgaWNvbj0iaWNvbi1ydWxlIgor ICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICkKKyAgICAgICAgZXhj ZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgcmV0dXJuIGludGVy bmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1zdHIoZSkpCisKKyAgICBAY2hl Y2tfcHJlY29uZGl0aW9uCisgICAgZGVmIHVwZGF0ZShzZWxmLCBnaWQsIHNp ZCwgZGlkLCBzY2lkLCB0aWQsIHJpZCk6CisgICAgICAgICIiIgorICAgICAg ICBUaGlzIGZ1bmN0aW9uIHdpbGwgdXBkYXRlIGEgcnVsZSBvYmplY3QKKyAg ICAgICAgIiIiCisgICAgICAgIGRhdGEgPSByZXF1ZXN0LmZvcm0gaWYgcmVx dWVzdC5mb3JtIGVsc2UgXAorICAgICAgICAgICAganNvbi5sb2FkcyhyZXF1 ZXN0LmRhdGEuZGVjb2RlKCkpCisgICAgICAgIFNRTCA9IHNlbGYuZ2V0U1FM KGdpZCwgc2lkLCBkYXRhLCB0aWQsIHJpZCkKKyAgICAgICAgdHJ5OgorICAg ICAgICAgICAgaWYgU1FMIGFuZCBTUUwuc3RyaXAoJ1xuJykgYW5kIFNRTC5z dHJpcCgnICcpOgorICAgICAgICAgICAgICAgIHN0YXR1cywgcmVzID0gc2Vs Zi5jb25uLmV4ZWN1dGVfc2NhbGFyKFNRTCkKKyAgICAgICAgICAgICAgICBp ZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW50 ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKyAgICAgICAgICAg ICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAg ICAgICAgICBzdWNjZXNzPTEsCisgICAgICAgICAgICAgICAgICAgIGluZm89 Z2V0dGV4dCgiUnVsZSB1cGRhdGVkIiksCisgICAgICAgICAgICAgICAgICAg IGRhdGE9eworICAgICAgICAgICAgICAgICAgICAgICAgJ2lkJzogdGlkLAor ICAgICAgICAgICAgICAgICAgICAgICAgJ3NpZCc6IHNpZCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICdnaWQnOiBnaWQsCisgICAgICAgICAgICAgICAg ICAgICAgICAnZGlkJzogZGlkCisgICAgICAgICAgICAgICAgICAgIH0KKyAg ICAgICAgICAgICAgICApCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAg ICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAgICAg ICAgICAgICAgIHN1Y2Nlc3M9MSwKKyAgICAgICAgICAgICAgICAgICAgaW5m bz0iTm90aGluZyB0byB1cGRhdGUiLAorICAgICAgICAgICAgICAgICAgICBk YXRhPXsKKyAgICAgICAgICAgICAgICAgICAgICAgICdpZCc6IHRpZCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICdzY2lkJzogc2NpZCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICdkaWQnOiBkaWQKKyAgICAgICAgICAgICAgICAg ICAgfQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgZXhjZXB0IEV4Y2Vw dGlvbiBhcyBlOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZl cl9lcnJvcihlcnJvcm1zZz1zdHIoZSkpCisKKyAgICBAY2hlY2tfcHJlY29u ZGl0aW9uCisgICAgZGVmIGRlbGV0ZShzZWxmLCBnaWQsIHNpZCwgZGlkLCBz Y2lkLCB0aWQsIHJpZCk6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1 bmN0aW9uIHdpbGwgZHJvcCBhIHJ1bGUgb2JqZWN0CisgICAgICAgICIiIgor ICAgICAgICAjIEJlbG93IHdpbGwgZGVjaWRlIGlmIGl0J3Mgc2ltcGxlIGRy b3Agb3IgZHJvcCB3aXRoIGNhc2NhZGUgY2FsbAorICAgICAgICBjYXNjYWRl ID0gVHJ1ZSBpZiBzZWxmLmNtZCA9PSAnZGVsZXRlJyBlbHNlIEZhbHNlCisK KyAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyBHZXQgbmFtZSBmb3IgcnVs ZSBmcm9tIGRpZAorICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRl KCIvIi5qb2luKAorICAgICAgICAgICAgICBbc2VsZi50ZW1wbGF0ZV9wYXRo LCAnZGVsZXRlLnNxbCddKSwgcmlkPXJpZCkKKyAgICAgICAgICAgIHN0YXR1 cywgcmVzX2RhdGEgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKKyAg ICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAgcmV0 dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXNfZGF0YSkK KyAgICAgICAgICAgICMgZHJvcCBydWxlCisgICAgICAgICAgICByc2V0ID0g cmVzX2RhdGFbJ3Jvd3MnXVswXQorICAgICAgICAgICAgU1FMID0gcmVuZGVy X3RlbXBsYXRlKCIvIi5qb2luKAorICAgICAgICAgICAgICAgIFtzZWxmLnRl bXBsYXRlX3BhdGgsICdkZWxldGUuc3FsJ10pLAorICAgICAgICAgICAgICAg ICAgcnVsZW5hbWU9cnNldFsncnVsZW5hbWUnXSwKKyAgICAgICAgICAgICAg ICAgIHJlbG5hbWU9cnNldFsncmVsbmFtZSddLAorICAgICAgICAgICAgICAg ICAgbnNwbmFtZT1yc2V0Wyduc3BuYW1lJ10sCisgICAgICAgICAgICAgICAg ICBjYXNjYWRlPWNhc2NhZGUKKyAgICAgICAgICAgICkKKyAgICAgICAgICAg IHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfc2NhbGFyKFNRTCkK KyAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAg cmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisK KyAgICAgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCisgICAg ICAgICAgICAgICAgc3VjY2Vzcz0xLAorICAgICAgICAgICAgICAgIGluZm89 Z2V0dGV4dCgiUnVsZSBkcm9wcGVkIiksCisgICAgICAgICAgICAgICAgZGF0 YT17CisgICAgICAgICAgICAgICAgICAgICdpZCc6IHRpZCwKKyAgICAgICAg ICAgICAgICAgICAgJ3NpZCc6IHNpZCwKKyAgICAgICAgICAgICAgICAgICAg J2dpZCc6IGdpZCwKKyAgICAgICAgICAgICAgICAgICAgJ2RpZCc6IGRpZAor ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICkKKworICAgICAgICBl eGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICByZXR1cm4gaW50 ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXN0cihlKSkKKworICAgIEBj aGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgbXNxbChzZWxmLCBnaWQsIHNp ZCwgZGlkLCBzY2lkLCB0aWQsIHJpZD1Ob25lKToKKyAgICAgICAgIiIiCisg ICAgICAgIFRoaXMgZnVuY3Rpb24gcmV0dXJucyBtb2RpZmllZCBTUUwKKyAg ICAgICAgIiIiCisgICAgICAgIGRhdGEgPSByZXF1ZXN0LmFyZ3MKKyAgICAg ICAgU1FMID0gc2VsZi5nZXRTUUwoZ2lkLCBzaWQsIGRhdGEsIHRpZCwgcmlk KQorICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAg ICAgICAgICAgIGRhdGE9U1FMLAorICAgICAgICAgICAgICAgIHN0YXR1cz0y MDAKKyAgICAgICAgICAgICAgICApCisKKyAgICBAY2hlY2tfcHJlY29uZGl0 aW9uCisgICAgZGVmIHNxbChzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCB0 aWQsIHJpZCk6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9u IHdpbGwgZ2VuZXJhdGUgc3FsIHRvIHJlbmRlciBpbnRvIHRoZSBzcWwgcGFu ZWwKKyAgICAgICAgIiIiCisgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0 ZSgiLyIuam9pbigKKyAgICAgICAgICBbc2VsZi50ZW1wbGF0ZV9wYXRoLCAn cHJvcGVydGllcy5zcWwnXSksIHJpZD1yaWQpCisgICAgICAgIHN0YXR1cywg cmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChTUUwpCisgICAgICAgIGlm IG5vdCBzdGF0dXM6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2Vy dmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKyAgICAgICAgcmVzX2RhdGEgPSBw YXJzZV9ydWxlX2RlZmluaXRpb24ocmVzKQorICAgICAgICBTUUwgPSByZW5k ZXJfdGVtcGxhdGUoIi8iLmpvaW4oCisgICAgICAgICAgICBbc2VsZi50ZW1w bGF0ZV9wYXRoLCAnY3JlYXRlLnNxbCddKSwKKyAgICAgICAgICAgIGRhdGE9 cmVzX2RhdGEsIGRpc3BsYXlfY29tbWVudHM9VHJ1ZSkKKworICAgICAgICBy ZXR1cm4gYWpheF9yZXNwb25zZShyZXNwb25zZT1TUUwpCisKKyAgICBkZWYg Z2V0U1FMKHNlbGYsIGdpZCwgc2lkLCBkYXRhLCB0aWQsIHJpZCk6CisgICAg ICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgZ2VuZXJhdGUg c3FsIGZyb20gbW9kZWwgZGF0YQorICAgICAgICAiIiIKKyAgICAgICAgdHJ5 OgorICAgICAgICAgICAgaWYgcmlkIGlzIG5vdCBOb25lOgorICAgICAgICAg ICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbigKKyAgICAg ICAgICAgICAgICAgIFtzZWxmLnRlbXBsYXRlX3BhdGgsICdwcm9wZXJ0aWVz LnNxbCddKSwgcmlkPXJpZCkKKyAgICAgICAgICAgICAgICBzdGF0dXMsIHJl cyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQorICAgICAgICAgICAg ICAgIHJlc19kYXRhID0gW10KKyAgICAgICAgICAgICAgICByZXNfZGF0YSA9 IHBhcnNlX3J1bGVfZGVmaW5pdGlvbihyZXMpCisgICAgICAgICAgICAgICAg aWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlu dGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisgICAgICAgICAg ICAgICAgb2xkX2RhdGEgPSByZXNfZGF0YQorICAgICAgICAgICAgICAgIFNR TCA9IHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgICAgICAgICAgICAgIi8i LmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ3VwZGF0ZS5zcWwnXSksCisg ICAgICAgICAgICAgICAgICAgIGRhdGE9ZGF0YSwgb19kYXRhPW9sZF9kYXRh CisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIGVsc2U6Cisg ICAgICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2lu KAorICAgICAgICAgICAgICAgICAgICBbc2VsZi50ZW1wbGF0ZV9wYXRoLCAn Y3JlYXRlLnNxbCddKSwgZGF0YT1kYXRhKQorICAgICAgICAgICAgcmV0dXJu IFNRTAorICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAg ICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXN0 cihlKSkKKworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgZGVw ZW5kZW50cyhzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQsIHJpZCk6 CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIGdldHMgdGhl IGRlcGVuZGVudHMgYW5kIHJldHVybnMgYW4gYWpheCByZXNwb25zZQorICAg ICAgICBmb3IgdGhlIHJ1bGUgbm9kZS4KKworICAgICAgICBBcmdzOgorICAg ICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAgSUQKKyAgICAgICAgICAgIHNp ZDogU2VydmVyIElECisgICAgICAgICAgICBkaWQ6IERhdGFiYXNlIElECisg ICAgICAgICAgICB0aWQ6IFZpZXcgSUQKKyAgICAgICAgICAgIHJpZDogUnVs ZSBJRAorICAgICAgICAiIiIKKyAgICAgICAgZGVwZW5kZW50c19yZXN1bHQg PSBzZWxmLmdldF9kZXBlbmRlbnRzKHNlbGYuY29ubiwgcmlkKQorICAgICAg ICByZXR1cm4gYWpheF9yZXNwb25zZSgKKyAgICAgICAgICAgIHJlc3BvbnNl PWRlcGVuZGVudHNfcmVzdWx0LAorICAgICAgICAgICAgc3RhdHVzPTIwMAor ICAgICAgICAgICAgKQorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAg IGRlZiBkZXBlbmRlbmNpZXMoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwg dGlkLCByaWQpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlv biBnZXRzIHRoZSBkZXBlbmRlbmNpZXMgYW5kIHJldHVybnMgc24gYWpheCBy ZXNwb25zZQorICAgICAgICBmb3IgdGhlIHJ1bGUgbm9kZS4KKworICAgICAg ICBBcmdzOgorICAgICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAgSUQKKyAg ICAgICAgICAgIHNpZDogU2VydmVyIElECisgICAgICAgICAgICBkaWQ6IERh dGFiYXNlIElECisgICAgICAgICAgICB0aWQ6IFZpZXcgSUQKKyAgICAgICAg ICAgIHJpZDogUnVsZSBJRAorICAgICAgICAiIiIKKyAgICAgICAgZGVwZW5k ZW5jaWVzX3Jlc3VsdCA9IHNlbGYuZ2V0X2RlcGVuZGVuY2llcyhzZWxmLmNv bm4sIHJpZCkKKyAgICAgICAgcmV0dXJuIGFqYXhfcmVzcG9uc2UoCisgICAg ICAgICAgICByZXNwb25zZT1kZXBlbmRlbmNpZXNfcmVzdWx0LAorICAgICAg ICAgICAgc3RhdHVzPTIwMAorICAgICAgICAgICAgKQorCitSdWxlVmlldy5y ZWdpc3Rlcl9ub2RlX3ZpZXcoYmx1ZXByaW50KQpkaWZmIC0tZ2l0IGEvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvdGFibGVzL3J1bGVzL3N0YXRpYy9pbWcvY29sbC1ydWxl LnBuZyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9ydWxlcy9zdGF0aWMvaW1n L2NvbGwtcnVsZS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2ZlNmVk MjdkOTgzNTFhMDNlOTg0NTFmZTgzZTc4NWFlYjUxMzUxZgpHSVQgYmluYXJ5 IHBhdGNoCmxpdGVyYWwgMzU3CnpjbWVBU0BOPyhvbEh5YHVWQnEhaWEwdnBe MHdCITYzP3d5bGBHYkwhUS1EdjFFMEJKRHJ0MG9XKzViPUh7Q18mQAp6fEM0 RnxwR15BeXhiT2VkOFVMVG97e0xqa3xIbCpsS2tqKmIoRXMwfl9KNUIkfDI9 QmBfcHNzTCE9YEBePjs2NWcKemBTK204WT1gekVwZWMrY0w0THN1NCRwMysw WGR1bjkrQWFCKzU/UTtQRztLeThCdn10anYqNDRyfWxhQ0g3TX03CnpKWTNr KHJCVX47S0dkNTw9I0pzK1d0WHF9Tz9AP2VuVEU2a28xMEU+UzszWmBHaVAr KDlyfFRoYVZKYzI/d2xoZwp6PHdCRnFtYXI5Vm5FS2FOPUUkVGNPUlhRNStK QnZTenFxIUZRUUN0a1ZSXkNCMzd7PmlDOVYtQURUeVZpUj4/KUYKeksjSVow enxjVX4mYDgoN0Z2UTVmJUVae3AjOGxoQilYS25NLWFFWmpDPm5DfVEhPipr QXNQJVUhNVY8N097QCZlCldBUjEwaDRfeVApen5KZlg9ZCNXenAkUCE3Y1o7 ZTMKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL3RhYmxlcy9ydWxlcy9zdGF0aWMvaW1nL3J1bGUucG5nIGIv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvdGFibGVzL3J1bGVzL3N0YXRpYy9pbWcvcnVsZS5w bmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGI0OTc4MDkwZTMzYmJlM2Q1 ZjdlZDI0OWZkOTNjMmRhMzRmNTJkNgpHSVQgYmluYXJ5IHBhdGNoCmxpdGVy YWwgMzczCnpjbWVBU0BOPyhvbEh5YHVWQnEhaWEwdnBeMHdCITYzP3d5bGBH Ykt9Y3p7b2NFMERnc1F1Zyhrc3tjPnR7Q18oMAp6fEMxXklBTlQleSlie1VU e3J7KTR7eSYtZXw4ZjduTkEzUn1Idlc1MXtyfkNnfDQqaj5lPn55ZXF0MVUx b0JsbmgKemBTK213fEktPSZwR15BeXhjbEZ1bVZYYXh8Mj9TcV9uPmtLJWpZ enAoVHBXUWUhJmI1JnUpTT9vQ098eyNYI0J2CnpqTk1MVitXe0cmby1VM2Q1 fGBLWm5Uc19UQEhpYGJERURVbGBnXmB9R04pWWpLREJ6QE8jLUZ8WDFCZWNy bzM9TAp6Vm5VemBKOX5kYSN9cnE2X01XT2tJcFA2Z3Q4ZjMyPiNKRFMtNHpm Y3kpSil8KHlhNGRRfV9TM25QOWByJGl3KX4KekE4M0pVaUVCaGpOQDdXPlJk UGAoa1lYQDBGZmBDTEd9MUxOM142aldHQkxJP0cxV0ZPd0s2YzZfZkJzV2lp WF8kCm1sKzNoQmh6MHtvdW0rJU42RHRFVmg9eDxzTClRUWBGbkdIOXh2WDxh WGFXRWpLOS12UgoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0 IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3J1bGVzL3RlbXBsYXRlcy9ydWxl cy9jc3MvcnVsZS5jc3MgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvcnVsZXMv dGVtcGxhdGVzL3J1bGVzL2Nzcy9ydWxlLmNzcwpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwLi4zZDIxYmNmCi0tLSAvZGV2L251bGwKKysr IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3J1bGVzL3RlbXBsYXRlcy9ydWxl cy9jc3MvcnVsZS5jc3MKQEAgLTAsMCArMSwxNiBAQAorLmljb24tcnVsZXsK KyAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCd7eyB1cmxfZm9yKCdOT0RFLXJ1 bGUuc3RhdGljJywgZmlsZW5hbWU9J2ltZy9ydWxlLnBuZycpIH19JykgIWlt cG9ydGFudDsKKyAgYm9yZGVyLXJhZGl1czogMTBweDsKKyAgYmFja2dyb3Vu ZC1yZXBlYXQ6IG5vLXJlcGVhdDsKKyAgYWxpZ24tY29udGVudDogY2VudGVy OworICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOworICBoZWlnaHQ6IDEuM2Vt OworfQorCisuc3FsX2ZpZWxkX2hlaWdodF8xNDAgeworICBoZWlnaHQ6IDE0 MHB4OworfQorCisuc3FsX2ZpZWxkX2hlaWdodF8yODAgeworICBoZWlnaHQ6 IDI4MHB4OworfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVz L3J1bGVzL3RlbXBsYXRlcy9ydWxlcy9qcy9ydWxlcy5qcyBiL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL3RhYmxlcy9ydWxlcy90ZW1wbGF0ZXMvcnVsZXMvanMvcnVsZXMu anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWQwMGEz OAotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9y dWxlcy90ZW1wbGF0ZXMvcnVsZXMvanMvcnVsZXMuanMKQEAgLTAsMCArMSwy NjYgQEAKK2RlZmluZSgKKyAgWydqcXVlcnknLCAndW5kZXJzY29yZScsICd1 bmRlcnNjb3JlLnN0cmluZycsICdwZ2FkbWluJywKKyAgICAncGdhZG1pbi5i cm93c2VyJywgJ2NvZGVtaXJyb3InXSwKKworZnVuY3Rpb24oJCwgXywgUywg cGdBZG1pbiwgcGdCcm93c2VyLCBDb2RlTWlycm9yKSB7CisKKyAgLyoqCisg ICAgQ3JlYXRlIGFuZCBhZGQgYSBydWxlIGNvbGxlY3Rpb24gaW50byBub2Rl cworICAgIEBwYXJhbSB7dmFyaWFibGV9IGxhYmVsIC0gTGFiZWwgZm9yIE5v ZGUKKyAgICBAcGFyYW0ge3ZhcmlhYmxlfSB0eXBlIC0gVHlwZSBvZiBOb2Rl CisgICAgQHBhcmFtIHt2YXJpYWJsZX0gY29sdW1ucyAtIExpc3Qgb2YgY29s dW1ucyB0bworICAgICAgZGlzcGxheSB1bmRlciB1bmRlciBwcm9wZXJ0aWVz LgorICAgKi8KKyAgaWYgKCFwZ0Jyb3dzZXIuTm9kZXNbJ2NvbGwtcnVsZSdd KSB7CisgICAgdmFyIHJ1bGVzID0gcGdBZG1pbi5Ccm93c2VyLk5vZGVzWydj b2xsLXJ1bGUnXSA9CisgICAgICBwZ0FkbWluLkJyb3dzZXIuQ29sbGVjdGlv bi5leHRlbmQoeworICAgICAgICBub2RlOiAncnVsZScsCisgICAgICAgIGxh YmVsOiAne3sgXygiUnVsZXMiKSB9fScsCisgICAgICAgIHR5cGU6ICdjb2xs LXJ1bGUnLAorICAgICAgICBjb2x1bW5zOiBbIm5hbWUiLCAib3duZXIiLCAi Y29tbWVudCJdCisgICAgICB9KTsKKyAgfQorCisKKyAgLyoqCisgICAgQ3Jl YXRlIGFuZCBBZGQgYW4gUnVsZSBOb2RlIGludG8gbm9kZXMKKyAgICBAcGFy YW0ge3ZhcmlhYmxlfSBwYXJlbnRfdHlwZSAtIFRoZSBsaXN0IG9mIG5vZGVz CisgICAgdW5kZXIgd2hpY2ggdGhpcyBub2RlIHRvIGRpc3BsYXkKKyAgICBA cGFyYW0ge3ZhcmlhYmxlfSB0eXBlIC0gVHlwZSBvZiBOb2RlCisgICAgQHBh cmFtIHt2YXJpYWJsZX0gaGFzU1FMIC0gVG8gc2hvdyBTUUwgdGFiCisgICAg QHBhcmFtIHt2YXJpYWJsZX0gY2FuRHJvcCAtIEFkZHMgZHJvcCBydWxlIG9w dGlvbgorICAgIGluIHRoZSBjb250ZXh0IG1lbnUKKyAgICBAcGFyYW0ge3Zh cmlhYmxlfSBjYW5Ecm9wQ2FzY2FkZSAtIEFkZHMgZHJvcCBDYXNjYWRlCisg ICAgcnVsZSBvcHRpb24gaW4gdGhlIGNvbnRleHQgbWVudQorICAgKi8KKyAg aWYgKCFwZ0Jyb3dzZXIuTm9kZXNbJ3J1bGUnXSkgeworICAgIHBnQWRtaW4u QnJvd3Nlci5Ob2Rlc1sncnVsZSddID0gcGdBZG1pbi5Ccm93c2VyLk5vZGUu ZXh0ZW5kKHsKKyAgICAgIHBhcmVudF90eXBlOiBbJ3RhYmxlJywndmlldydd LAorICAgICAgdHlwZTogJ3J1bGUnLAorICAgICAgc3FsQWx0ZXJIZWxwOiAn c3FsLWFsdGVycnVsZS5odG1sJywKKyAgICAgIHNxbENyZWF0ZUhlbHA6ICdz cWwtY3JlYXRlcnVsZS5odG1sJywKKyAgICAgIGxhYmVsOiAne3sgXygicnVs ZSIpIH19JywKKyAgICAgIGNvbGxlY3Rpb25fdHlwZTogJ2NvbGwtdGFibGUn LAorICAgICAgaGFzU1FMOiAgdHJ1ZSwKKyAgICAgIGhhc0RlcGVuZHM6IHRy dWUsCisgICAgICBjYW5Ecm9wOiBmdW5jdGlvbihpdGVtRGF0YSwgaXRlbSwg ZGF0YSl7CisgICAgICAgIHBnQnJvd3Nlci5Ob2Rlc1snc2NoZW1hJ10uY2Fu Q2hpbGREcm9wLmFwcGx5KHRoaXMsIFtpdGVtRGF0YSwgaXRlbSwgZGF0YV0p OworICAgICAgICBpZihfLmhhcyhpdGVtRGF0YSwgJ2xhYmVsJykgJiYgaXRl bURhdGEubGFiZWwgPT09ICdfUkVUVVJOJykKKyAgICAgICAgICByZXR1cm4g ZmFsc2U7CisgICAgICAgIGVsc2UgeworICAgICAgICAgIHJldHVybiB0cnVl OworICAgICAgICB9CisgICAgICB9LAorICAgICAgY2FuRHJvcENhc2NhZGU6 IGZ1bmN0aW9uKGl0ZW1EYXRhLCBpdGVtLCBkYXRhKXsKKyAgICAgICAgcGdC cm93c2VyLk5vZGVzWydzY2hlbWEnXS5jYW5DaGlsZERyb3AuYXBwbHkodGhp cywgW2l0ZW1EYXRhLCBpdGVtLCBkYXRhXSk7CisgICAgICAgIGlmKF8uaGFz KGl0ZW1EYXRhLCAnbGFiZWwnKSAmJiBpdGVtRGF0YS5sYWJlbCA9PT0gJ19S RVRVUk4nKQorICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgZWxz ZSB7CisgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAg IH0sCisgICAgICBJbml0OiBmdW5jdGlvbigpIHsKKworICAgICAgICAvKiBB dm9pZCBtdWxpdHBsZSByZWdpc3RyYXRpb24gb2YgbWVudXMgKi8KKyAgICAg ICAgaWYgKHRoaXMuaW5pdGlhbGl6ZWQpCisgICAgICAgICAgICByZXR1cm47 CisKKyAgICAgICAgdGhpcy5pbml0aWFsaXplZCA9IHRydWU7CisKKyAgICAg ICAgLyoqCisgICAgICAgICAgQWRkICJjcmVhdGUgcnVsZSIgbWVudSBvcHRp b24gaW50byBjb250ZXh0IGFuZCBvYmplY3QgbWVudQorICAgICAgICAgIGZv ciB0aGUgZm9sbG93aW5nIG5vZGVzOgorICAgICAgICAgIGNvbGwtcnVsZSwg cnVsZSBhbmQgdmlldyBhbmQgdGFibGUuCisgICAgICAgICAgQHByb3BlcnR5 IHtkYXRhfSAtIEFsbG93IGNyZWF0ZSBydWxlIG9wdGlvbiBvbiBzY2hlbWEg bm9kZSBvcgorICAgICAgICAgIHN5c3RlbSBydWxlcyBub2RlLgorICAgICAg ICAgKi8KKyAgICAgICAgcGdCcm93c2VyLmFkZF9tZW51cyhbeworICAgICAg ICAgIG5hbWU6ICdjcmVhdGVfcnVsZV9vbl9jb2xsJywgbm9kZTogJ2NvbGwt cnVsZScsIG1vZHVsZTogdGhpcywKKyAgICAgICAgICBhcHBsaWVzOiBbJ29i amVjdCcsICdjb250ZXh0J10sIGNhbGxiYWNrOiAnc2hvd19vYmpfcHJvcGVy dGllcycsCisgICAgICAgICAgY2F0ZWdvcnk6ICdjcmVhdGUnLCBwcmlvcml0 eTogMSwgbGFiZWw6ICd7eyBfKCJSdWxlLi4uIikgfX0nLAorICAgICAgICAg IGljb246ICd3Y1RhYkljb24gaWNvbi1ydWxlJywgZGF0YToge2FjdGlvbjog J2NyZWF0ZScsIGNoZWNrOiB0cnVlfSwKKyAgICAgICAgICBlbmFibGU6ICdj YW5DcmVhdGUnCisgICAgICAgIH0seworICAgICAgICAgIG5hbWU6ICdjcmVh dGVfcnVsZV9vblZpZXcnLCBub2RlOiAndmlldycsIG1vZHVsZTogdGhpcywK KyAgICAgICAgICBhcHBsaWVzOiBbJ29iamVjdCcsICdjb250ZXh0J10sIGNh bGxiYWNrOiAnc2hvd19vYmpfcHJvcGVydGllcycsCisgICAgICAgICAgY2F0 ZWdvcnk6ICdjcmVhdGUnLCBwcmlvcml0eTogNSwgbGFiZWw6ICd7eyBfKCJS dWxlLi4uIikgfX0nLAorICAgICAgICAgIGljb246ICd3Y1RhYkljb24gaWNv bi1ydWxlJywgZGF0YToge2FjdGlvbjogJ2NyZWF0ZScsIGNoZWNrOiB0cnVl fSwKKyAgICAgICAgICBlbmFibGU6ICdjYW5DcmVhdGUnCisgICAgICAgIH0s eworICAgICAgICAgIG5hbWU6ICdjcmVhdGVfcnVsZScsIG5vZGU6ICdydWxl JywgbW9kdWxlOiB0aGlzLAorICAgICAgICAgIGFwcGxpZXM6IFsnb2JqZWN0 JywgJ2NvbnRleHQnXSwgY2FsbGJhY2s6ICdzaG93X29ial9wcm9wZXJ0aWVz JywKKyAgICAgICAgICBjYXRlZ29yeTogJ2NyZWF0ZScsIHByaW9yaXR5OiAx LCBsYWJlbDogJ3t7IF8oIlJ1bGUuLi4iKSB9fScsCisgICAgICAgICAgaWNv bjogJ3djVGFiSWNvbiBpY29uLXJ1bGUnLCBkYXRhOiB7YWN0aW9uOiAnY3Jl YXRlJywgY2hlY2s6IHRydWV9LAorICAgICAgICAgIGVuYWJsZTogJ2NhbkNy ZWF0ZScKKyAgICAgICAgfSx7CisgICAgICAgICAgbmFtZTogJ2NyZWF0ZV9y dWxlJywgbm9kZTogJ3RhYmxlJywgbW9kdWxlOiB0aGlzLAorICAgICAgICAg IGFwcGxpZXM6IFsnb2JqZWN0JywgJ2NvbnRleHQnXSwgY2FsbGJhY2s6ICdz aG93X29ial9wcm9wZXJ0aWVzJywKKyAgICAgICAgICBjYXRlZ29yeTogJ2Ny ZWF0ZScsIHByaW9yaXR5OiA0LCBsYWJlbDogJ3t7IF8oIlJ1bGUuLi4iKSB9 fScsCisgICAgICAgICAgaWNvbjogJ3djVGFiSWNvbiBpY29uLXJ1bGUnLCBk YXRhOiB7YWN0aW9uOiAnY3JlYXRlJywgY2hlY2s6IHRydWV9LAorICAgICAg ICAgIGVuYWJsZTogJ2NhbkNyZWF0ZScKKyAgICAgICAgfQorICAgICAgICBd KTsKKyAgICAgIH0sCisKKyAgICAgIC8qKgorICAgICAgICBEZWZpbmUgbW9k ZWwgZm9yIHRoZSBydWxlIG5vZGUgYW5kIHNwZWNpZnkgdGhlIG5vZGUKKyAg ICAgICAgcHJvcGVydGllcyBvZiB0aGUgbW9kZWwgaW4gc2NoZW1hLgorICAg ICAgICovCisgICAgICBtb2RlbDogcGdBZG1pbi5Ccm93c2VyLk5vZGUuTW9k ZWwuZXh0ZW5kKHsKKyAgICAgICAgc2NoZW1hOiBbeworICAgICAgICAgIGlk OiAnbmFtZScsIGxhYmVsOiAne3sgXygiTmFtZSIpIH19JywKKyAgICAgICAg ICB0eXBlOiAndGV4dCcsIGRpc2FibGVkOiBmdW5jdGlvbihtKSB7CisgICAg ICAgICAgICAvLyBkaXNhYmxlIG5hbWUgZmllbGQgaXQgaXQgaXMgc3lzdGVt IHJ1bGUKKyAgICAgICAgICAgIGlmIChtICYmIG0uZ2V0KCduYW1lJykgPT0g Il9SRVRVUk4iKSB7CisgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg ICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG0uaXNOZXcoKSkgeworICAg ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9IGVsc2Ug aWYgKG0ubm9kZV9pbmZvLnNlcnZlci52ZXJzaW9uID49IDkwNDAwKSB7Cisg ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAg ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgIH0KKyAgICAgICAg fSwKKyAgICAgICAgeworICAgICAgICAgIGlkOiAnb2lkJywgbGFiZWw6J3t7 IF8oIk9JRCIpIH19JywKKyAgICAgICAgICB0eXBlOiAndGV4dCcsIGRpc2Fi bGVkOiB0cnVlLCBtb2RlOiBbJ3Byb3BlcnRpZXMnXQorICAgICAgICB9LAor ICAgICAgICB7CisgICAgICAgICAgaWQ6ICdzY2hlbWEnLCBsYWJlbDone3sg XygiIikgfX0nLAorICAgICAgICAgIHR5cGU6ICd0ZXh0JywgdmlzaWJsZTog ZmFsc2UsIGRpc2FibGVkOiBmdW5jdGlvbihtKSB7CisgICAgICAgICAgICAv LyBJdCBpcyB1c2VkIHdoaWxlIGdlbmVyYXRpbmcgc3FsCisgICAgICAgICAg ICBtLnNldCgnc2NoZW1hJywgbS5ub2RlX2luZm8uc2NoZW1hLmxhYmVsKTsK KyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAg ICBpZDogJ3ZpZXcnLCBsYWJlbDone3sgXygiIikgfX0nLAorICAgICAgICAg IHR5cGU6ICd0ZXh0JywgdmlzaWJsZTogZmFsc2UsIGRpc2FibGVkOiBmdW5j dGlvbihtKXsKKworICAgICAgICAgICAgLy8gSXQgaXMgdXNlZCB3aGlsZSBn ZW5lcmF0aW5nIHNxbAorICAgICAgICAgICAgbS5zZXQoJ3ZpZXcnLCB0aGlz Lm5vZGVfZGF0YS5sYWJlbCk7CisgICAgICAgICAgfQorICAgICAgICB9LAor ICAgICAgICB7CisgICAgICAgICAgaWQ6ICdldmVudCcsIGxhYmVsOid7eyBf KCJFdmVudCIpIH19JywgY29udHJvbDogJ3NlbGVjdDInLAorICAgICAgICAg IGdyb3VwOiAne3sgXygiRGVmaW5pdGlvbiIpIH19JywgdHlwZTogJ3RleHQn LAorICAgICAgICAgIHNlbGVjdDI6IHsKKyAgICAgICAgICAgIHdpZHRoOiAn MTAwJScsCisgICAgICAgICAgICBhbGxvd0NsZWFyOiBmYWxzZQorICAgICAg ICAgIH0sCisgICAgICAgICAgb3B0aW9uczpbCisgICAgICAgICAgICB7bGFi ZWw6ICdTZWxlY3QnLCB2YWx1ZTogJ1NlbGVjdCd9LAorICAgICAgICAgICAg e2xhYmVsOiAnSW5zZXJ0JywgdmFsdWU6ICdJbnNlcnQnfSwKKyAgICAgICAg ICAgIHtsYWJlbDogJ1VwZGF0ZScsIHZhbHVlOiAnVXBkYXRlJ30sCisgICAg ICAgICAgICB7bGFiZWw6ICdEZWxldGUnLCB2YWx1ZTogJ0RlbGV0ZSd9Cisg ICAgICAgICAgXQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAg aWQ6ICdkb19pbnN0ZWFkJywgbGFiZWw6J3t7IF8oIkRvIEluc3RlYWQiKSB9 fScsIGdyb3VwOiAne3sgXygiRGVmaW5pdGlvbiIpIH19JywKKyAgICAgICAg ICB0eXBlOiAnc3dpdGNoJworICAgICAgICB9LAorICAgICAgICB7CisgICAg ICAgICAgaWQ6ICdjb25kaXRpb24nLCBsYWJlbDone3sgXygiQ29uZGl0aW9u IikgfX0nLAorICAgICAgICAgIHR5cGU6ICd0ZXh0JywgZ3JvdXA6ICd7eyBf KCJEZWZpbml0aW9uIikgfX0nLAorICAgICAgICAgIGNvbnRyb2w6IEJhY2tm b3JtLlNxbEZpZWxkQ29udHJvbAorICAgICAgICB9LAorICAgICAgICB7Cisg ICAgICAgICAgaWQ6ICdzdGF0ZW1lbnRzJywgbGFiZWw6J3t7IF8oIkNvbW1h bmRzIikgfX0nLAorICAgICAgICAgIHR5cGU6ICd0ZXh0JywgZ3JvdXA6ICd7 eyBfKCJEZWZpbml0aW9uIikgfX0nLAorICAgICAgICAgIGNvbnRyb2w6IEJh Y2tmb3JtLlNxbEZpZWxkQ29udHJvbAorICAgICAgICB9LAorICAgICAgICB7 CisgICAgICAgICAgaWQ6ICdzeXN0ZW1fcnVsZScsIGxhYmVsOid7eyBfKCJT eXN0ZW0gcnVsZT8iKSB9fScsCisgICAgICAgICAgdHlwZTogJ3N3aXRjaCcs IG1vZGU6IFsncHJvcGVydGllcyddCisgICAgICAgIH0sCisgICAgICAgIHsK KyAgICAgICAgICBpZDogJ2VuYWJsZWQnLCBsYWJlbDone3sgXygiRW5hYmxl ZD8iKSB9fScsCisgICAgICAgICAgdHlwZTogJ3N3aXRjaCcsIG1vZGU6IFsn cHJvcGVydGllcyddCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAg ICBpZDogJ2NvbW1lbnQnLCBsYWJlbDone3sgXygiQ29tbWVudCIpIH19Jywg Y2VsbDogJ3N0cmluZycsIHR5cGU6ICdtdWx0aWxpbmUnCisgICAgICAgIH0K KyAgICAgICAgXSwKKyAgICAgICAgdmFsaWRhdGU6IGZ1bmN0aW9uKCkgewor CisgICAgICAgICAgLy8gVHJpZ2dlcnMgc3BlY2lmaWMgZXJyb3IgbWVzc2Fn ZXMgZm9yIGZpZWxkcworICAgICAgICAgIHZhciBlcnIgPSB7fSwKKyAgICAg ICAgICAgIGVycm1zZywKKyAgICAgICAgICAgIGZpZWxkX25hbWUgPSB0aGlz LmdldCgnbmFtZScpOworICAgICAgICAgIGlmIChfLmlzVW5kZWZpbmVkKGZp ZWxkX25hbWUpIHx8IF8uaXNOdWxsKGZpZWxkX25hbWUpIHx8CisgICAgICAg ICAgICBTdHJpbmcoZmllbGRfbmFtZSkucmVwbGFjZSgvXlxzK3xccyskL2cs ICcnKSA9PT0gJycpCisgICAgICAgICAgeworICAgICAgICAgICAgZXJyWydu YW1lJ10gPSAne3sgXygiUGxlYXNlIHNwZWNpZnkgbmFtZS4iKSB9fSc7Cisg ICAgICAgICAgICBlcnJtc2cgPSBlcnJtc2cgfHwgZXJyWyduYW1lJ107Cisg ICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwuc2V0KCduYW1lJywgZXJybXNn KTsKKyAgICAgICAgICAgIHJldHVybiBlcnJtc2c7CisgICAgICAgICAgfQor ICAgICAgICAgIGVsc2UKKyAgICAgICAgICB7CisgICAgICAgICAgICB0aGlz LmVycm9yTW9kZWwudW5zZXQoJ25hbWUnKTsKKyAgICAgICAgICB9CisgICAg ICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKyAgICAgIH0pLAorCisg ICAgICAvLyBTaG93IG9yIGhpZGUgY3JlYXRlIHJ1bGUgbWVudSBvcHRpb24g b24gcGFyZW50IG5vZGUKKyAgICAgIGNhbkNyZWF0ZTogZnVuY3Rpb24oaXRl bURhdGEsIGl0ZW0sIGRhdGEpIHsKKworICAgICAgICAvLyBJZiBjaGVjayBp cyBmYWxzZSB0aGVuICwgd2Ugd2lsbCBhbGxvdyBjcmVhdGUgbWVudQorICAg ICAgICBpZiAoZGF0YSAmJiBkYXRhLmNoZWNrID09PSBmYWxzZSkKKyAgICAg ICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICB2YXIgdCA9IHBnQnJvd3Nl ci50cmVlLCBpID0gaXRlbSwgZCA9IGl0ZW1EYXRhOworCisgICAgICAgIC8v IFRvIGl0ZXJhdGUgb3ZlciB0cmVlIHRvIGNoZWNrIHBhcmVudCBub2RlCisg ICAgICAgIHdoaWxlIChpKSB7CisKKyAgICAgICAgICAvLyBJZiBpdCBpcyBz Y2hlbWEgdGhlbiBhbGxvdyB1c2VyIHRvIGNyZWF0ZSBydWxlCisgICAgICAg ICAgaWYgKF8uaW5kZXhPZihbJ3NjaGVtYSddLCBkLl90eXBlKSA+IC0xKQor ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgICBpZiAoJ2Nv bGwtcnVsZScgPT0gZC5fdHlwZSkgeworCisgICAgICAgICAgICAvL0NoZWNr IGlmIHdlIGFyZSBub3QgY2hpbGQgb2YgcnVsZQorICAgICAgICAgICAgcHJl dl9pID0gdC5oYXNQYXJlbnQoaSkgPyB0LnBhcmVudChpKSA6IG51bGw7Cisg ICAgICAgICAgICBwcmV2X2QgPSBwcmV2X2kgPyB0Lml0ZW1EYXRhKHByZXZf aSkgOiBudWxsOworICAgICAgICAgICAgcHJldl9qID0gdC5oYXNQYXJlbnQo cHJldl9pKSA/IHQucGFyZW50KHByZXZfaSkgOiBudWxsOworICAgICAgICAg ICAgcHJldl9lID0gcHJldl9qID8gdC5pdGVtRGF0YShwcmV2X2opIDogbnVs bDsKKyAgICAgICAgICAgIHByZXZfayA9IHQuaGFzUGFyZW50KHByZXZfaikg PyB0LnBhcmVudChwcmV2X2opIDogbnVsbDsKKyAgICAgICAgICAgIHByZXZf ZiA9IHByZXZfayA/IHQuaXRlbURhdGEocHJldl9rKSA6IG51bGw7CisgICAg ICAgICAgICBpZiggcHJldl9mLl90eXBlID09ICdjYXRhbG9nJykgeworICAg ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9IGVsc2Ug eworICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0K KyAgICAgICAgICB9CisKKyAgICAgICAgICAvKioKKyAgICAgICAgICAgIENo ZWNrIGlmIGl0IGlzIHZpZXcgYW5kIGl0cyBwYXJlbnQgbm9kZSBpcyBzY2hl bWEKKyAgICAgICAgICAgIHRoZW4gYWxsb3cgdG8gY3JlYXRlIFJ1bGUKKyAg ICAgICAgICAgKi8KKyAgICAgICAgICBlbHNlIGlmKCd2aWV3JyA9PSBkLl90 eXBlKXsKKyAgICAgICAgICAgIHByZXZfaSA9IHQuaGFzUGFyZW50KGkpID8g dC5wYXJlbnQoaSkgOiBudWxsOworICAgICAgICAgICAgcHJldl9kID0gcHJl dl9pID8gdC5pdGVtRGF0YShwcmV2X2kpIDogbnVsbDsKKyAgICAgICAgICAg IHByZXZfaiA9IHQuaGFzUGFyZW50KHByZXZfaSkgPyB0LnBhcmVudChwcmV2 X2kpIDogbnVsbDsKKyAgICAgICAgICAgIHByZXZfZSA9IHByZXZfaiA/IHQu aXRlbURhdGEocHJldl9qKSA6IG51bGw7CisgICAgICAgICAgICBpZihwcmV2 X2UuX3R5cGUgPT0gJ3NjaGVtYScpIHsKKyAgICAgICAgICAgICAgcmV0dXJu IHRydWU7CisgICAgICAgICAgICB9ZWxzZXsKKyAgICAgICAgICAgICAgcmV0 dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAg ICAgICBpID0gdC5oYXNQYXJlbnQoaSkgPyB0LnBhcmVudChpKSA6IG51bGw7 CisgICAgICAgICAgZCA9IGkgPyB0Lml0ZW1EYXRhKGkpIDogbnVsbDsKKyAg ICAgICAgfQorCisgICAgICAgIC8vIEJ5IGRlZmF1bHQgd2UgZG8gbm90IHdh bnQgdG8gYWxsb3cgY3JlYXRlIG1lbnUKKyAgICAgICAgcmV0dXJuIHRydWU7 CisKKyAgICAgIH0KKworICB9KTsKKyAgfQorCisgIHJldHVybiBwZ0Jyb3dz ZXIuTm9kZXNbJ2NvbGwtcnVsZSddOworfSk7CmRpZmYgLS1naXQgYS93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy90YWJsZXMvc3RhdGljL2ltZy9jb2xsLXRhYmxlLnBuZyBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9zdGF0aWMvaW1nL2NvbGwtdGFibGUu cG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY4MGU4NjQ1N2U4YzQ4Y2Qw MTMyOWYwMzAzZDY2M2IwMzA0YWI0NGQKR0lUIGJpbmFyeSBwYXRjaApsaXRl cmFsIDU1NQp6Y21lQVNATj8ob2xIeWB1VkJxIWlhMHZwXjB3QiE2Mz93eWxg R2JNZi1UPEV2UzBKcjheP0JGMWVeYnU/VHptRD8KenNYTVJrSiUwWXxgU1dN Ym8qbGpNdFplNUNnRT1vYyZpKUo5QE0taGF3fERRfVo5ZV80PmUlbzYxMyF+ QGVoYl81CnoqPm0qPStvZip9PWU8XitgU1JZcWQoRWYrZEkzZTJ5dyNaYl44 V3Elan4rZEd7UF4rSHIlJjR0SmImPXUhU2R6SAp6KlF7Q2Q9Rk9YVEA3fSQ5 YFNSaHpocyV+TlRkYHVyK089IWZ1VjRTXyl2RjFvSzBrbHt7UHBZQ0ZKOFBA eHBMK0UKel93UFNge1BfMG0rZn1QcFpQPjczKTIyO05vOz47UjtYXmdaMFk1 Wm16RjdCSF4maWohajNxJlMhMystMVpsblBACnpvQ098eyNYI0J2ak5NTFYr V3tGJUp6WDNfQnJlQ0VLUTdpfUFrZ30tJDVjeWRPJFRlbzdNRz0rTiNGbTxw WFNsQQp6RipeT2ZyclZtTyZpeiFnK3ZjbjlOO0tib1dlPmczX01kSWJ0ajU1 ejQ2N3dZcig4VGZgRE07TmdKfSoyVHM5eHQKemE4RHZ5Ukw3KWU9Q3JwM3lN aG44STxJX2dSVlRuRHN4b1ZEYEdoPDZaaVcrNzlGdW9tVERHI29fKWduMWxf S0B0CnpiSkxsYVhXOHM4NjFAOF5AdkVaOD99TTNRQWBkcm5idVFhfj9gYT1A NGRlVj1maHtNJGlmI2ZyU2hkNzhxOWk0Owp6Qi1KWHBDPjJPQzcjU0VFPW8l WDc4V0BIYzhDYVBaVGJZPEA4PDwpZDd8ZVU4dytjbD1aaGxIO1N8dm4tZmhB WjIKY1BfPkRiZmYrPUBzcCs5PmZFcE0pVUh4M3ZJVkNnITBKbHNLaTJ3aXEK CmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL3RhYmxlcy9zdGF0aWMvaW1nL3RhYmxlLXJlcGwtc20ucG5nIGIv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvdGFibGVzL3N0YXRpYy9pbWcvdGFibGUtcmVwbC1z bS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTY3YmQ5MzdmYjg5YzQ4 M2E5NTE0NmM4OGZiNGMwNjZmNmRhNTcxMQpHSVQgYmluYXJ5IHBhdGNoCmxp dGVyYWwgNjc1CnpjbWVBU0BOPyhvbEh5YHVWQnEhaWEwdnBeMHdCITYzP3d5 bGBHWGw0Nz54cGFMUl43ZCNpYEdgJmkkS217XiMxTwp6cEhBSSpiP0A9PlhW MEhNZC1tKztqYn4qJFVsYDFKKFEpPSleWFkkOCRBMEdAXz9mKShUaUItMG9+ dTlERWA0aF8KekAzczJPbSg4ZERkSTdtaC1mR056eCV1a2J5TGEjMnlMYSNZ e3Jpc3xKJG41M0B6YllJK1lkYVN3OTB3SXdmcXdvCnoqRkFvR2ZCRE1BSCph NUZ2dTRla0gqZW0oZC13OT8lUEgmSkh7MzIrYnY8d0ROfXVrPFJ7ZE11KX47 UTxlKk9BYQp6dVU+Z0g/S0FIPnBFa0x3Y1lEYjZsVG5qU016bjlUZDthfFM+ KHtTfmtLSGRrYXhkP3wtUHB3XiVqZiZfOXVJOWgKej12JStte1FkailBM3VK NGB9Uz9ZO2R7Q0o/fVNXMGt2X2U9e2VXTk45PUdacGojVm9TSCpEQ2pZMTV7 aGVScU47Cno5fUF5ekkmIzZPXiNgX3t5fWF3KG0wam5yPyo4IU1MO2pwSXNk TFlDdWZHO00+czBLQE9GYDM0V1VoT2ZmOGRBNAp6JW9rQ1VqeH5EUngmI2Iw IyohZXZVPFFZMEhgMEl7Jkh8NmZWaiU0UyMlP0ZHP1NQQ0dvLVUzZDV8QChg NnhhLXUKejcme24qamsmZEB0PVpZdCNtIXdCK05ieCZJfE8oe3hRTUszYV8z UHwme0lfNjZyQ18+K08meU5DeDxAPlh5TVMlCnpUKWtxfCVHMjJ5UygobChC XyZfS0BiWlk3XnpgXlBGZkNpUUViVz10dzZKUzNYMUNPfkRLSmBCdiU5T09p LSRgbQp6bzBzIVhYam5kZGQ7anxSXiRwdCE2REVqeEN8SWJOPS00UDNvZUkw YHRTek0+QVNeOURmNU1DQEpaMGAmTjV0QiQKemd4SmB6R1Q0OFRHKDM2M0Nr ZzBnKWVfZjtsOWFAZlJJQjhvUjNPRCpXTUY4WllpT2l2VT5JVSNVfWEpI1du IXZyCnpVfXxNeEZ6PW4tRGlqVTVgNi0hY2xASlhFbVM3RCkpaDFSM1cpS2Fo cmlaUXBZR0NrbV4+YlAwbCtYa0tSd19HUgoKbGl0ZXJhbCAwCkhjbVY/ZDAw MDAxCgpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3N0YXRp Yy9pbWcvdGFibGUtcmVwbC5wbmcgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMv c3RhdGljL2ltZy90YWJsZS1yZXBsLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwLi4yYTA4MmM2N2I4YzMwN2I2NzNkMzJmYzBkZjEyZmI1ZTg1N2ZjMWY3 CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCA4MzkKemNtVi1OMUd4TiZQKTxo OzNLfExrMDAwZTFOSkxUcTAwMG1HMDAwbU8we3tSM0NAbHxEMDAwNEBQKXQt czAwMDBYCnptRkpEbnxCfSE5cVNOKWQqek04Wj5FR2skPD51JCs9SH1Zcjwq ZCU8VzNsS2lvOUsocnxBb3h7ZSNyY0YhfUBIIwp6XytoeUFSPGlSO3RuZmdt P2wrKzlFdTg4bW5DWFNne2NGRFhMOGs2RHEza1o0PmFeREctUUNeWi1ybkVl LXs5Y2oKejtvOyVwO15PMXU8S15ZJGhyajNPPTstT2A+OVdDcG94TXx5c1hE MnRzcFJEM3RnTmk7P0NrQ0I/ZUZqSj5nd3V7CnpzWD9FQFI8aGk3aypgQ2l2 eDI2JFhwWEh5cXFidEx0KngpR3VqfWpVKEFCQEh5PzNlQlpqUTEqbENucFR5 LWJlMQp6T01hT21OUEBtaWlvcn5ZIUJ+bHBvNlRVQiYwZGVsUikpN2pAYkt7 Ul43OEtQP3NMWjlhbTN6ayFRRXVBKUtyUzMKemhfeW5CI1pyWDhPTWtMRnY5 WW5UdmEpYyotZnFDJVh0PiFAaG9nYkdVNTNGO2Z4Ync0eDxZeGNIdTNUQ15Z aW9kCnpfNFErfSlNdk5aU0Ruak1pSmhnbFlMQjUqcV89OTJxRStfeF9XMWJ0 VlhWYDFxUiZ1fiNhXnFeVEJYbyVsKTFJRgp6d1lJamx4Vlg2WV94Rj52Kjwr TilJaCo1fXghRzVqJHhlO0xTRG5uTyFgbWc2PTN0PUxSK1B0VnBVXmQkPFkr QlEKel95N09eMGQhSk1Rdmc4YiprJTkjMDEwcU5TI3RtWTA3dzc7MDd3OHYk IWs2VTAwNy1kTF90Ji0oXz4mQFVfPTI3CnpLbWpJWjdGSVRQNG8qJWtaWFJC YzAzV31BcHBkWUxzRj04ZkJ2PUtYbHpeWiNQKFZnajRrOTQwcHJFTHZ0Zkgh Pgp6Jlp6K3dLPTN1U3p5akpqeHwoe2JgVVp3WiN3SzZeUSF7ZjVPRGsmfFRS U15AdXotVzNsZTNHZm80Yn5ZcCVFajQKemhvX2c5bSQjM3ZwVEUwdEt3dUQx QVVHczZFSWNBSUQldzNKSFp9ayM1RXF9Mm4zU0I3biZ6RyFuMmB3LWh8a0st CnokPDUweiRTY2UmRGxQJkZsJDRnMFM1KEZacSpxbmYpWUxMRSlZVWdNSFpg fWpnNDdxKSlgRzJWWXd6Z25mX1diUgp6aGcma3puMzg7TzAwMDBiYlZYUW5X TU9uPUklOUhXVlJVNXhHQjdiUEVpcDFKRmZtanpGZ2kzZEl5NXlhRmZ9P2IK ekZyTXglc3NJMjBDM0hudGJZeCs0V2pid2RXTkJ1MzA1VUshRmZBfVNFaWZA dUdCWXxmRyYoUmdEPTstV0ZmaHVPClJSamRGMjAwMm92UERITGtWMWheYXNv d3dxCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy90YWJsZXMvc3RhdGljL2ltZy90YWJsZS5wbmcgYi93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy90YWJsZXMvc3RhdGljL2ltZy90YWJsZS5wbmcKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMC4uMzdiMjIyN2Q4ZmUwY2Y3NmJkZTIzODU1Njc2 NDAzYzU3Y2NmYjU2OQpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgNTkzCnpj bWVBU0BOPyhvbEh5YHVWQnEhaWEwdnBeMHdCITYzP3d5bGBHYk1malIybnpT MEpyOF4/QzF3fEM3JURVVWQyRQp6dHtaUEotaFgtakAkO3c4bzxEb2A/QUY3 bFl0QjdTLXVPYXFfS1dXR3w2OS1ldDJePGheemc1b2VMb1UrZDwpejMKeio/ WXxnaHZvMGc3cmZEKF5HYT5UJWhvZjB2LWthUVQ9dmR2O1R5ZDx1ZU14IWNs WWt5ZC12fCR6a21QMWc5aV5FCnpLNzkxKChje09EcEZWeHN6V0AxKTdjWEFF ZUVJek9eT1ktQ0s2JnpGJjYraUQtbkBESF9VLSVrP19hJW93UzQqVgp6NilS UyhVQXVQdWB0YDQwenk5I3khPjNRNS1vMU9iZGlDbEo4I1pqKnhOKn5fTyY+ cGd7UVVYeipSTmw8WnIlRnIKeitxV00tZXIoJmVaTzR1cy1Aa3Reek99Nnk9 cl9pYUFpclAraGk1bV5mRT47T2tIfSZtP0UlSmFDJHNIPGoxOFZICnpqdio0 NEwoZzlxWUJDVUxlVkVXTVRQQEQ1en5+JlB4RkVeIztvdGluY1AqXm0tMk00 JWVgSElgNn4mZW9BRzdLRAp6QkhqfHl3WGZie2Y3UUZ9TXBwVCp6NWZ6OFR4 K2swOU03Tk9sUD5kWSh3MnlJKkVUSkIjQ3hEVnlNXzZoc3E/KnsKeiViUjJ5 al5eYntiYjBad2QoQnU9Sj1iQ3g+anRHRzNuUipOcFJxRyFLbFdKWj1KKHRu aDJpfVQ8RnlVM2VfciFDCnpZP3RJX0Y1QjxnJihVeXZgZnVZdDtmOHA1Umhk aWdfY0x0Ym0qIyg1d2hIN3MpZV9mO2w5YUBmUklCOG9SM09EKgp6V01GOFpZ aU9pdlU+SVUjVX1hKSNXbiF2clV9fE14Rno9bi1EaWpVNWA2LSFjbEBKWEVt UzdEKSloMVIzVylLYWgKVHJpWlFwWUdDa21ePmJQMGwrWGtLdyFBOVAKCmxp dGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL3RhYmxlcy90ZW1wbGF0ZXMvY2hlY2tfY29uc3RyYWludC9zcWwvOS4x X3BsdXMvYWx0ZXIuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBs YXRlcy9jaGVja19jb25zdHJhaW50L3NxbC85LjFfcGx1cy9hbHRlci5zcWwK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGZiMGVhNQot LS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1w bGF0ZXMvY2hlY2tfY29uc3RyYWludC9zcWwvOS4xX3BsdXMvYWx0ZXIuc3Fs CkBAIC0wLDAgKzEsNCBAQAoreyUgaWYgZGF0YS5jb21tZW50ICV9CitDT01N RU5UIE9OIENPTlNUUkFJTlQge3sgY29ubnxxdElkZW50KGRhdGEubmFtZSkg fX0gT04ge3sgY29ubnxxdElkZW50KGRhdGEuc2NoZW1hLCBkYXRhLnRhYmxl KSB9fQorICAgIElTIHt7IGRhdGEuY29tbWVudHxxdExpdGVyYWwgfX07Cit7 JSBlbmRpZiAlfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt LWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvY2hlY2tf Y29uc3RyYWludC9zcWwvOS4xX3BsdXMvY3JlYXRlLnNxbCBiL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvY2hlY2tfY29uc3RyYWludC9zcWwv OS4xX3BsdXMvY3JlYXRlLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi44ZDhjMTBhCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy9jaGVja19jb25zdHJhaW50L3Nx bC85LjFfcGx1cy9jcmVhdGUuc3FsCkBAIC0wLDAgKzEsNCBAQAoreyUgaWYg ZGF0YSAlfQorQUxURVIgVEFCTEUge3sgY29ubnxxdElkZW50KGRhdGEuc2No ZW1hLCBkYXRhLnRhYmxlKSB9fQorICAgIEFERHslIGlmIGRhdGEubmFtZSAl fSBDT05TVFJBSU5UIHt7IGNvbm58cXRJZGVudChkYXRhLm5hbWUpIH19eyUg ZW5kaWYlfSBDSEVDSyAoe3sgZGF0YS5jb25zcmMgfX0pOworeyUgZW5kaWYg JX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0 ZXMvY2hlY2tfY29uc3RyYWludC9zcWwvOS4xX3BsdXMvZGVsZXRlLnNxbCBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvY2hlY2tfY29uc3Ry YWludC9zcWwvOS4xX3BsdXMvZGVsZXRlLnNxbApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwLi41YTg1YjRmCi0tLSAvZGV2L251bGwKKysr IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy9jaGVja19jb25z dHJhaW50L3NxbC85LjFfcGx1cy9kZWxldGUuc3FsCkBAIC0wLDAgKzEsMyBA QAoreyUgaWYgZGF0YSAlfQorQUxURVIgVEFCTEUge3sgY29ubnxxdElkZW50 KGRhdGEubnNwbmFtZSwgZGF0YS5yZWxuYW1lKSB9fSBEUk9QIENPTlNUUkFJ TlQge3sgY29ubnxxdElkZW50KGRhdGEubmFtZSkgfX07Cit7JSBlbmRpZiAl fQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRl cy9jaGVja19jb25zdHJhaW50L3NxbC85LjFfcGx1cy9nZXRfbmFtZS5zcWwg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL2NoZWNrX2NvbnN0 cmFpbnQvc3FsLzkuMV9wbHVzL2dldF9uYW1lLnNxbApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMmRmYTE1Ci0tLSAvZGV2L251bGwK KysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy9jaGVja19j b25zdHJhaW50L3NxbC85LjFfcGx1cy9nZXRfbmFtZS5zcWwKQEAgLTAsMCAr MSw0IEBACitTRUxFQ1QgY29ubmFtZSBhcyBuYW1lCitGUk9NIHBnX2NvbnN0 cmFpbnQgY3QKK1dIRVJFIGNvbnR5cGUgPSAnYycKK0FORCAgY3Qub2lkID0g e3tjaWR9fTo6b2lkClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm IC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy9jaGVj a19jb25zdHJhaW50L3NxbC85LjFfcGx1cy9nZXRfb2lkLnNxbCBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvY2hlY2tfY29uc3RyYWludC9z cWwvOS4xX3BsdXMvZ2V0X29pZC5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMC4uZmE1MjFlNgotLS0gL2Rldi9udWxsCisrKyBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvY2hlY2tfY29uc3RyYWlu dC9zcWwvOS4xX3BsdXMvZ2V0X29pZC5zcWwKQEAgLTAsMCArMSw3IEBACitT RUxFQ1QKKyAgICBvaWQsIGNvbm5hbWUgYXMgbmFtZQorRlJPTQorICAgIHBn X2NvbnN0cmFpbnQKK1dIRVJFCisgICAgY29ucmVsaWQgPSB7e3RpZH19Ojpv aWQKKyAgICBBTkQgY29ubmFtZT17eyBuYW1lfHF0TGl0ZXJhbCB9fTsKZGlm ZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvY2hl Y2tfY29uc3RyYWludC9zcWwvOS4xX3BsdXMvZ2V0X29pZF93aXRoX3RyYW5z YWN0aW9uLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMv Y2hlY2tfY29uc3RyYWludC9zcWwvOS4xX3BsdXMvZ2V0X29pZF93aXRoX3Ry YW5zYWN0aW9uLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwLi4wZjJlMjlmCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvdGFibGVzL3RlbXBsYXRlcy9jaGVja19jb25zdHJhaW50L3NxbC85LjFf cGx1cy9nZXRfb2lkX3dpdGhfdHJhbnNhY3Rpb24uc3FsCkBAIC0wLDAgKzEs NSBAQAorU0VMRUNUIGN0Lm9pZCwKKyAgICBjdC5jb25uYW1lIGFzIG5hbWUK K0ZST00gcGdfY29uc3RyYWludCBjdAorV0hFUkUgY29udHlwZT0nYycgQU5E CisgICAgY29ucmVsaWQgPSB7e3RpZH19OjpvaWQgTElNSVQgMTsKXCBObyBu ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy90YWJsZXMvdGVtcGxhdGVzL2NoZWNrX2NvbnN0cmFpbnQvc3FsLzku MV9wbHVzL2dldF9wYXJlbnQuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVz L3RlbXBsYXRlcy9jaGVja19jb25zdHJhaW50L3NxbC85LjFfcGx1cy9nZXRf cGFyZW50LnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li5hNjUyODU3Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv dGFibGVzL3RlbXBsYXRlcy9jaGVja19jb25zdHJhaW50L3NxbC85LjFfcGx1 cy9nZXRfcGFyZW50LnNxbApAQCAtMCwwICsxLDcgQEAKK1NFTEVDVCBuc3Au bnNwbmFtZSBBUyBzY2hlbWEsCisgICAgcmVsLnJlbG5hbWUgQVMgdGFibGUK K0ZST00KKyAgICBwZ19jbGFzcyByZWwKK0pPSU4gcGdfbmFtZXNwYWNlIG5z cAorT04gcmVsLnJlbG5hbWVzcGFjZSA9IG5zcC5vaWQ6OmludAorV0hFUkUg cmVsLm9pZCA9IHt7dGlkfX06OmludApcIE5vIG5ld2xpbmUgYXQgZW5kIG9m IGZpbGUKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1w bGF0ZXMvY2hlY2tfY29uc3RyYWludC9zcWwvOS4xX3BsdXMvbm9kZXMuc3Fs IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy9jaGVja19jb25z dHJhaW50L3NxbC85LjFfcGx1cy9ub2Rlcy5zcWwKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uMDcwMWM5ZgotLS0gL2Rldi9udWxsCisr KyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvY2hlY2tfY29u c3RyYWludC9zcWwvOS4xX3BsdXMvbm9kZXMuc3FsCkBAIC0wLDAgKzEsNiBA QAorU0VMRUNUIGMub2lkLCBjb25uYW1lIGFzIG5hbWUKKyAgICBGUk9NIHBn X2NvbnN0cmFpbnQgYworV0hFUkUgY29udHlwZSA9ICdjJworeyUgaWYgdGlk ICV9CisgICAgQU5EIGNvbnJlbGlkID0ge3sgdGlkIH19OjpvaWQKK3slIGVu ZGlmICV9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVt cGxhdGVzL2NoZWNrX2NvbnN0cmFpbnQvc3FsLzkuMV9wbHVzL3Byb3BlcnRp ZXMuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy9jaGVj a19jb25zdHJhaW50L3NxbC85LjFfcGx1cy9wcm9wZXJ0aWVzLnNxbApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOGNkYjM1Ci0tLSAv ZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRl cy9jaGVja19jb25zdHJhaW50L3NxbC85LjFfcGx1cy9wcm9wZXJ0aWVzLnNx bApAQCAtMCwwICsxLDEzIEBACitTRUxFQ1QgYy5vaWQsIGNvbm5hbWUgYXMg bmFtZSwgcmVsbmFtZSwgbnNwbmFtZSwgZGVzY3JpcHRpb24gYXMgY29tbWVu dCAsCisgICAgICAgcGdfZ2V0X2V4cHIoY29uYmluLCBjb25yZWxpZCwgdHJ1 ZSkgYXMgY29uc3JjCisgICAgRlJPTSBwZ19jb25zdHJhaW50IGMKKyAgICBK T0lOIHBnX2NsYXNzIGNsIE9OIGNsLm9pZD1jb25yZWxpZAorICAgIEpPSU4g cGdfbmFtZXNwYWNlIG5sIE9OIG5sLm9pZD1yZWxuYW1lc3BhY2UKK0xFRlQg T1VURVIgSk9JTgorICAgIHBnX2Rlc2NyaXB0aW9uIGRlcyBPTiAoZGVzLm9i am9pZD1jLm9pZCBBTkQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGRl cy5jbGFzc29pZD0ncGdfY29uc3RyYWludCc6OnJlZ2NsYXNzKQorV0hFUkUg Y29udHlwZSA9ICdjJworICAgIEFORCBjb25yZWxpZCA9IHt7IHRpZCB9fTo6 b2lkCit7JSBpZiBjaWQgJX0KKyAgICBBTkQgYy5vaWQgPSB7eyBjaWQgfX06 Om9pZAoreyUgZW5kaWYgJX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVz L2NoZWNrX2NvbnN0cmFpbnQvc3FsLzkuMV9wbHVzL3VwZGF0ZS5zcWwgYi93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL2NoZWNrX2NvbnN0cmFp bnQvc3FsLzkuMV9wbHVzL3VwZGF0ZS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMC4uNTdkODFjNwotLS0gL2Rldi9udWxsCisrKyBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvY2hlY2tfY29uc3Ry YWludC9zcWwvOS4xX3BsdXMvdXBkYXRlLnNxbApAQCAtMCwwICsxLDQgQEAK K3slIGlmIGRhdGEuY29tbWVudCBpcyBkZWZpbmVkIGFuZCBkYXRhLmNvbW1l bnQgIT0gb19kYXRhLmNvbW1lbnQgJX0KK0NPTU1FTlQgT04gQ09OU1RSQUlO VCB7eyBjb25ufHF0SWRlbnQob19kYXRhLm5hbWUpIH19IE9OIHt7IGNvbm58 cXRJZGVudChvX2RhdGEubnNwbmFtZSwgb19kYXRhLnJlbG5hbWUpIH19Cisg ICAgSVMge3sgZGF0YS5jb21tZW50fHF0TGl0ZXJhbCB9fTsKK3slIGVuZGlm ICV9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy9jaGVja19jb25zdHJh aW50L3NxbC85LjJfcGx1cy9hbHRlci5zcWwgYi93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90 YWJsZXMvdGVtcGxhdGVzL2NoZWNrX2NvbnN0cmFpbnQvc3FsLzkuMl9wbHVz L2FsdGVyLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li4wZmIwZWE1Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv dGFibGVzL3RlbXBsYXRlcy9jaGVja19jb25zdHJhaW50L3NxbC85LjJfcGx1 cy9hbHRlci5zcWwKQEAgLTAsMCArMSw0IEBACit7JSBpZiBkYXRhLmNvbW1l bnQgJX0KK0NPTU1FTlQgT04gQ09OU1RSQUlOVCB7eyBjb25ufHF0SWRlbnQo ZGF0YS5uYW1lKSB9fSBPTiB7eyBjb25ufHF0SWRlbnQoZGF0YS5zY2hlbWEs IGRhdGEudGFibGUpIH19CisgICAgSVMge3sgZGF0YS5jb21tZW50fHF0TGl0 ZXJhbCB9fTsKK3slIGVuZGlmICV9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg ZmlsZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBs YXRlcy9jaGVja19jb25zdHJhaW50L3NxbC85LjJfcGx1cy9jcmVhdGUuc3Fs IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy9jaGVja19jb25z dHJhaW50L3NxbC85LjJfcGx1cy9jcmVhdGUuc3FsCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJjN2E1N2YKLS0tIC9kZXYvbnVsbAor KysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL2NoZWNrX2Nv bnN0cmFpbnQvc3FsLzkuMl9wbHVzL2NyZWF0ZS5zcWwKQEAgLTAsMCArMSw2 IEBACit7JSBpZiBkYXRhICV9CitBTFRFUiBUQUJMRSB7eyBjb25ufHF0SWRl bnQoZGF0YS5zY2hlbWEsIGRhdGEudGFibGUpIH19CisgICAgQUREeyUgaWYg ZGF0YS5uYW1lICV9IENPTlNUUkFJTlQge3sgY29ubnxxdElkZW50KGRhdGEu bmFtZSkgfX17JSBlbmRpZiV9IENIRUNLICh7eyBkYXRhLmNvbnNyYyB9fSl7 JSBpZiBkYXRhLmNvbnZhbGlkYXRlZCAlfQorCisgICAgTk9UIFZBTElEeyUg ZW5kaWYgJX17JSBpZiBkYXRhLmNvbm5vaW5oZXJpdCAlfSBOTyBJTkhFUklU eyUgZW5kaWYgJX07Cit7JSBlbmRpZiAlfQpkaWZmIC0tZ2l0IGEvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy9jaGVja19jb25zdHJhaW50L3Nx bC85LjJfcGx1cy9kZWxldGUuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVz L3RlbXBsYXRlcy9jaGVja19jb25zdHJhaW50L3NxbC85LjJfcGx1cy9kZWxl dGUuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVh ODViNGYKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJs ZXMvdGVtcGxhdGVzL2NoZWNrX2NvbnN0cmFpbnQvc3FsLzkuMl9wbHVzL2Rl bGV0ZS5zcWwKQEAgLTAsMCArMSwzIEBACit7JSBpZiBkYXRhICV9CitBTFRF UiBUQUJMRSB7eyBjb25ufHF0SWRlbnQoZGF0YS5uc3BuYW1lLCBkYXRhLnJl bG5hbWUpIH19IERST1AgQ09OU1RSQUlOVCB7eyBjb25ufHF0SWRlbnQoZGF0 YS5uYW1lKSB9fTsKK3slIGVuZGlmICV9CmRpZmYgLS1naXQgYS93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL2NoZWNrX2NvbnN0cmFpbnQvc3Fs LzkuMl9wbHVzL2dldF9uYW1lLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxl cy90ZW1wbGF0ZXMvY2hlY2tfY29uc3RyYWludC9zcWwvOS4yX3BsdXMvZ2V0 X25hbWUuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu LmE5MmY4OTMKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90 YWJsZXMvdGVtcGxhdGVzL2NoZWNrX2NvbnN0cmFpbnQvc3FsLzkuMl9wbHVz L2dldF9uYW1lLnNxbApAQCAtMCwwICsxLDUgQEAKK1NFTEVDVCBjb25uYW1l IGFzIG5hbWUsCisgICAgTk9UIGNvbnZhbGlkYXRlZCBhcyBjb252YWxpZGF0 ZWQKK0ZST00gcGdfY29uc3RyYWludCBjdAorV0hFUkUgY29udHlwZSA9ICdj JworQU5EICBjdC5vaWQgPSB7e2NpZH19OjpvaWQKXCBObyBuZXdsaW5lIGF0 IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJs ZXMvdGVtcGxhdGVzL2NoZWNrX2NvbnN0cmFpbnQvc3FsLzkuMl9wbHVzL2dl dF9vaWQuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy9j aGVja19jb25zdHJhaW50L3NxbC85LjJfcGx1cy9nZXRfb2lkLnNxbApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NmYzMmM5Ci0tLSAv ZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRl cy9jaGVja19jb25zdHJhaW50L3NxbC85LjJfcGx1cy9nZXRfb2lkLnNxbApA QCAtMCwwICsxLDggQEAKK1NFTEVDVAorICAgIG9pZCwgY29ubmFtZSBhcyBu YW1lLAorICAgIE5PVCBjb252YWxpZGF0ZWQgYXMgY29udmFsaWRhdGVkCitG Uk9NCisgICAgcGdfY29uc3RyYWludAorV0hFUkUKKyAgICBjb25yZWxpZCA9 IHt7dGlkfX06Om9pZAorICAgIEFORCBjb25uYW1lPXt7IG5hbWV8cXRMaXRl cmFsIH19OwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3Rl bXBsYXRlcy9jaGVja19jb25zdHJhaW50L3NxbC85LjJfcGx1cy9nZXRfb2lk X3dpdGhfdHJhbnNhY3Rpb24uc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVz L3RlbXBsYXRlcy9jaGVja19jb25zdHJhaW50L3NxbC85LjJfcGx1cy9nZXRf b2lkX3dpdGhfdHJhbnNhY3Rpb24uc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAuLmI0OTdlM2YKLS0tIC9kZXYvbnVsbAorKysgYi93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL2NoZWNrX2NvbnN0cmFp bnQvc3FsLzkuMl9wbHVzL2dldF9vaWRfd2l0aF90cmFuc2FjdGlvbi5zcWwK QEAgLTAsMCArMSw2IEBACitTRUxFQ1QgY3Qub2lkLAorICAgIGN0LmNvbm5h bWUgYXMgbmFtZSwKKyAgICBOT1QgY29udmFsaWRhdGVkIGFzIGNvbnZhbGlk YXRlZAorRlJPTSBwZ19jb25zdHJhaW50IGN0CitXSEVSRSBjb250eXBlPSdj JyBBTkQKKyAgICBjb25yZWxpZCA9IHt7dGlkfX06Om9pZCBMSU1JVCAxOwpc IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvY2hlY2tfY29uc3RyYWludC9z cWwvOS4yX3BsdXMvZ2V0X3BhcmVudC5zcWwgYi93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90 YWJsZXMvdGVtcGxhdGVzL2NoZWNrX2NvbnN0cmFpbnQvc3FsLzkuMl9wbHVz L2dldF9wYXJlbnQuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAuLmE2NTI4NTcKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy90YWJsZXMvdGVtcGxhdGVzL2NoZWNrX2NvbnN0cmFpbnQvc3FsLzku Ml9wbHVzL2dldF9wYXJlbnQuc3FsCkBAIC0wLDAgKzEsNyBAQAorU0VMRUNU IG5zcC5uc3BuYW1lIEFTIHNjaGVtYSwKKyAgICByZWwucmVsbmFtZSBBUyB0 YWJsZQorRlJPTQorICAgIHBnX2NsYXNzIHJlbAorSk9JTiBwZ19uYW1lc3Bh Y2UgbnNwCitPTiByZWwucmVsbmFtZXNwYWNlID0gbnNwLm9pZDo6aW50CitX SEVSRSByZWwub2lkID0ge3t0aWR9fTo6aW50ClwgTm8gbmV3bGluZSBhdCBl bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVz L3RlbXBsYXRlcy9jaGVja19jb25zdHJhaW50L3NxbC85LjJfcGx1cy9ub2Rl cy5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL2NoZWNr X2NvbnN0cmFpbnQvc3FsLzkuMl9wbHVzL25vZGVzLnNxbApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZmRjM2MxCi0tLSAvZGV2L251 bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy9jaGVj a19jb25zdHJhaW50L3NxbC85LjJfcGx1cy9ub2Rlcy5zcWwKQEAgLTAsMCAr MSw3IEBACitTRUxFQ1QgYy5vaWQsIGNvbm5hbWUgYXMgbmFtZSwKKyAgICBO T1QgY29udmFsaWRhdGVkIGFzIGNvbnZhbGlkYXRlZAorICAgIEZST00gcGdf Y29uc3RyYWludCBjCitXSEVSRSBjb250eXBlID0gJ2MnCit7JSBpZiB0aWQg JX0KKyAgICBBTkQgY29ucmVsaWQgPSB7eyB0aWQgfX06Om9pZAoreyUgZW5k aWYgJX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1w bGF0ZXMvY2hlY2tfY29uc3RyYWludC9zcWwvOS4yX3BsdXMvcHJvcGVydGll cy5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL2NoZWNr X2NvbnN0cmFpbnQvc3FsLzkuMl9wbHVzL3Byb3BlcnRpZXMuc3FsCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUwOWQzMTcKLS0tIC9k ZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVz L2NoZWNrX2NvbnN0cmFpbnQvc3FsLzkuMl9wbHVzL3Byb3BlcnRpZXMuc3Fs CkBAIC0wLDAgKzEsMTQgQEAKK1NFTEVDVCBjLm9pZCwgY29ubmFtZSBhcyBu YW1lLCByZWxuYW1lLCBuc3BuYW1lLCBkZXNjcmlwdGlvbiBhcyBjb21tZW50 LAorICAgICAgIHBnX2dldF9leHByKGNvbmJpbiwgY29ucmVsaWQsIHRydWUp IGFzIGNvbnNyYywKKyAgICAgICBjb25ub2luaGVyaXQsIE5PVCBjb252YWxp ZGF0ZWQgYXMgY29udmFsaWRhdGVkCisgICAgRlJPTSBwZ19jb25zdHJhaW50 IGMKKyAgICBKT0lOIHBnX2NsYXNzIGNsIE9OIGNsLm9pZD1jb25yZWxpZAor ICAgIEpPSU4gcGdfbmFtZXNwYWNlIG5sIE9OIG5sLm9pZD1yZWxuYW1lc3Bh Y2UKK0xFRlQgT1VURVIgSk9JTgorICAgIHBnX2Rlc2NyaXB0aW9uIGRlcyBP TiAoZGVzLm9iam9pZD1jLm9pZCBBTkQKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgIGRlcy5jbGFzc29pZD0ncGdfY29uc3RyYWludCc6OnJlZ2NsYXNz KQorV0hFUkUgY29udHlwZSA9ICdjJworICAgIEFORCBjb25yZWxpZCA9IHt7 IHRpZCB9fTo6b2lkCit7JSBpZiBjaWQgJX0KKyAgICBBTkQgYy5vaWQgPSB7 eyBjaWQgfX06Om9pZAoreyUgZW5kaWYgJX0KXCBObyBuZXdsaW5lIGF0IGVu ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMv dGVtcGxhdGVzL2NoZWNrX2NvbnN0cmFpbnQvc3FsLzkuMl9wbHVzL3VwZGF0 ZS5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL2NoZWNr X2NvbnN0cmFpbnQvc3FsLzkuMl9wbHVzL3VwZGF0ZS5zcWwKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmMyNzkyMwotLS0gL2Rldi9u dWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvY2hl Y2tfY29uc3RyYWludC9zcWwvOS4yX3BsdXMvdXBkYXRlLnNxbApAQCAtMCww ICsxLDEzIEBACit7JSBpZiBkYXRhICV9Cit7JSBpZiBkYXRhLm5hbWUgIT0g b19kYXRhLm5hbWUgJX0KK0FMVEVSIFRBQkxFIHt7IGNvbm58cXRJZGVudChv X2RhdGEubnNwbmFtZSwgb19kYXRhLnJlbG5hbWUpIH19CisgICAgUkVOQU1F IENPTlNUUkFJTlQge3sgY29ubnxxdElkZW50KG9fZGF0YS5uYW1lKSB9fSBU TyB7eyBjb25ufHF0SWRlbnQoZGF0YS5uYW1lKSB9fTt7JSBlbmRpZiAtJX0K K3slIGlmICdjb252YWxpZGF0ZWQnIGluIGRhdGEgYW5kIG9fZGF0YS5jb252 YWxpZGF0ZWQgIT0gZGF0YS5jb252YWxpZGF0ZWQgYW5kIG5vdCBkYXRhLmNv bnZhbGlkYXRlZCAlfQorCitBTFRFUiBUQUJMRSB7eyBjb25ufHF0SWRlbnQo b19kYXRhLm5zcG5hbWUsIG9fZGF0YS5yZWxuYW1lKSB9fQorICAgIFZBTElE QVRFIENPTlNUUkFJTlQge3sgY29ubnxxdElkZW50KGRhdGEubmFtZSkgfX07 eyUgZW5kaWYgLSV9Cit7JSBpZiBkYXRhLmNvbW1lbnQgaXMgZGVmaW5lZCBh bmQgZGF0YS5jb21tZW50ICE9IG9fZGF0YS5jb21tZW50ICV9CisKK0NPTU1F TlQgT04gQ09OU1RSQUlOVCB7eyBjb25ufHF0SWRlbnQoZGF0YS5uYW1lKSB9 fSBPTiB7eyBjb25ufHF0SWRlbnQob19kYXRhLm5zcG5hbWUsIG9fZGF0YS5y ZWxuYW1lKSB9fQorICAgIElTIHt7IGRhdGEuY29tbWVudHxxdExpdGVyYWwg fX07eyUgZW5kaWYgJX0KK3slIGVuZGlmIC0lfQpcIE5vIG5ld2xpbmUgYXQg ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxl cy90ZW1wbGF0ZXMvY2hlY2tfY29uc3RyYWludC9zcWwvOS4yX3BsdXMvdmFs aWRhdGUuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy9j aGVja19jb25zdHJhaW50L3NxbC85LjJfcGx1cy92YWxpZGF0ZS5zcWwKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWE2MmM4MAotLS0g L2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0 ZXMvY2hlY2tfY29uc3RyYWludC9zcWwvOS4yX3BsdXMvdmFsaWRhdGUuc3Fs CkBAIC0wLDAgKzEsMiBAQAorQUxURVIgVEFCTEUge3sgY29ubnxxdElkZW50 KGRhdGEuc2NoZW1hLCBkYXRhLnRhYmxlKSB9fQorICAgIFZBTElEQVRFIENP TlNUUkFJTlQge3sgY29ubnxxdElkZW50KGRhdGEubmFtZSkgfX07ClwgTm8g bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvdGFibGVzL3RlbXBsYXRlcy9jb2x1bW4vbWFjcm9zL3ByaXZpbGVn ZS5tYWNyb3MgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL2Nv bHVtbi9tYWNyb3MvcHJpdmlsZWdlLm1hY3JvcwpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwLi43ZWFmZDYwCi0tLSAvZGV2L251bGwKKysr IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy9jb2x1bW4vbWFj cm9zL3ByaXZpbGVnZS5tYWNyb3MKQEAgLTAsMCArMSwxMyBAQAoreyUgbWFj cm8gQVBQTFkoY29ubiwgc2NoZW1hX25hbWUsIHRhYmxlX29iamVjdCwgY29s dW1uX29iamVjdCwgcm9sZSwgcHJpdnMsIHdpdGhfZ3JhbnRfcHJpdnMpIC0l fQoreyUgaWYgcHJpdnMgJX0KK0dSQU5UIHslIGZvciBwIGluIHByaXZzICV9 eyUgaWYgbG9vcC5pbmRleCAhPSAxICV9LCB7JSBlbmRpZiAlfXt7cH19KHt7 Y29ubnxxdElkZW50KGNvbHVtbl9vYmplY3QpfX0peyUgZW5kZm9yICV9Cisg T04ge3sgY29ubnxxdElkZW50KHNjaGVtYV9uYW1lLCB0YWJsZV9vYmplY3Qp IH19IFRPIHt7IGNvbm58cXRJZGVudChyb2xlKSB9fTsKK3slIGVuZGlmICV9 Cit7JSBpZiB3aXRoX2dyYW50X3ByaXZzICV9CitHUkFOVCB7JSBmb3IgcCBp biB3aXRoX2dyYW50X3ByaXZzICV9eyUgaWYgbG9vcC5pbmRleCAhPSAxICV9 LCB7JSBlbmRpZiAlfXt7cH19KHt7Y29ubnxxdElkZW50KGNvbHVtbl9vYmpl Y3QpfX0peyUgZW5kZm9yICV9CisgT04ge3sgY29ubnxxdElkZW50KHNjaGVt YV9uYW1lLCB0YWJsZV9vYmplY3QpIH19IFRPIHt7IGNvbm58cXRJZGVudChy b2xlKSB9fSBXSVRIIEdSQU5UIE9QVElPTjsKK3slIGVuZGlmICV9Cit7JS0g ZW5kbWFjcm8gJX0KK3slIG1hY3JvIFJFU0VUQUxMKGNvbm4sIHNjaGVtYV9u YW1lLCB0YWJsZV9vYmplY3QsIGNvbHVtbl9vYmplY3QsIHJvbGUpIC0lfQor UkVWT0tFIEFMTCh7eyBjb25ufHF0SWRlbnQoY29sdW1uX29iamVjdCkgfX0p IE9OIHt7IGNvbm58cXRJZGVudChzY2hlbWFfbmFtZSwgdGFibGVfb2JqZWN0 KSB9fSBGUk9NIHt7IGNvbm58cXRJZGVudChyb2xlKSB9fTsKK3slLSBlbmRt YWNybyAlfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdp dCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvY29sdW1uL21h Y3Jvcy9zZWN1cml0eS5tYWNyb3MgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMv dGVtcGxhdGVzL2NvbHVtbi9tYWNyb3Mvc2VjdXJpdHkubWFjcm9zCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5NTg3YzMKLS0tIC9k ZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVz L2NvbHVtbi9tYWNyb3Mvc2VjdXJpdHkubWFjcm9zCkBAIC0wLDAgKzEsNiBA QAoreyUgbWFjcm8gQVBQTFkoY29ubiwgdHlwZSwgc2NoZW1hX25hbWUsIHBh cmVudF9vYmplY3QsIGNoaWxkX29iamVjdCwgcHJvdmlkZXIsIGxhYmVsKSAt JX0KK1NFQ1VSSVRZIExBQkVMIEZPUiB7eyBjb25ufHF0SWRlbnQocHJvdmlk ZXIpIH19IE9OIHt7IHR5cGUgfX0ge3sgY29ubnxxdElkZW50KHNjaGVtYV9u YW1lLCBwYXJlbnRfb2JqZWN0LCBjaGlsZF9vYmplY3QpIH19IElTIHt7IGxh YmVsfHF0TGl0ZXJhbCB9fTsKK3slLSBlbmRtYWNybyAlfQoreyUgbWFjcm8g RFJPUChjb25uLCB0eXBlLCBzY2hlbWFfbmFtZSwgcGFyZW50X29iamVjdCwg Y2hpbGRfb2JqZWN0LCBwcm92aWRlcikgLSV9CitTRUNVUklUWSBMQUJFTCBG T1Ige3sgY29ubnxxdElkZW50KHByb3ZpZGVyKSB9fSBPTiB7eyB0eXBlIH19 IHt7IGNvbm58cXRJZGVudChzY2hlbWFfbmFtZSwgcGFyZW50X29iamVjdCwg Y2hpbGRfb2JqZWN0KSB9fSBJUyBOVUxMOworeyUtIGVuZG1hY3JvICV9CmRp ZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL2Nv bHVtbi9zcWwvOS4xX3BsdXMvYWNsLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3Rh Ymxlcy90ZW1wbGF0ZXMvY29sdW1uL3NxbC85LjFfcGx1cy9hY2wuc3FsCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVjNDRhOTYKLS0t IC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxh dGVzL2NvbHVtbi9zcWwvOS4xX3BsdXMvYWNsLnNxbApAQCAtMCwwICsxLDM0 IEBACitTRUxFQ1QgJ2F0dGFjbCcgYXMgZGVmdHlwZSwgQ09BTEVTQ0UoZ3Qu cm9sbmFtZSwgJ3B1YmxpYycpIGdyYW50ZWUsIGcucm9sbmFtZSBncmFudG9y LCBhcnJheV9hZ2cocHJpdmlsZWdlX3R5cGUpIGFzIHByaXZpbGVnZXMsIGFy cmF5X2FnZyhpc19ncmFudGFibGUpIGFzIGdyYW50YWJsZQorRlJPTQorICAo U0VMRUNUCisgICAgZC5ncmFudGVlLCBkLmdyYW50b3IsIGQuaXNfZ3JhbnRh YmxlLAorICAgIENBU0UgZC5wcml2aWxlZ2VfdHlwZQorICAgICAgICBXSEVO ICdDT05ORUNUJyBUSEVOICdjJworICAgICAgICBXSEVOICdDUkVBVEUnIFRI RU4gJ0MnCisgICAgICAgIFdIRU4gJ0RFTEVURScgVEhFTiAnZCcKKyAgICAg ICAgV0hFTiAnRVhFQ1VURScgVEhFTiAnWCcKKyAgICAgICAgV0hFTiAnSU5T RVJUJyBUSEVOICdhJworICAgICAgICBXSEVOICdSRUZFUkVOQ0VTJyBUSEVO ICd4JworICAgICAgICBXSEVOICdTRUxFQ1QnIFRIRU4gJ3InCisgICAgICAg IFdIRU4gJ1RFTVBPUkFSWScgVEhFTiAnVCcKKyAgICAgICAgV0hFTiAnVFJJ R0dFUicgVEhFTiAndCcKKyAgICAgICAgV0hFTiAnVFJVTkNBVEUnIFRIRU4g J0QnCisgICAgICAgIFdIRU4gJ1VQREFURScgVEhFTiAndycKKyAgICAgICAg V0hFTiAnVVNBR0UnIFRIRU4gJ1UnCisgICAgICAgIEVMU0UgJ1VOS05PV04n CisgICAgRU5EIEFTIHByaXZpbGVnZV90eXBlCisgIEZST00KKyAgICAoU0VM RUNUIGF0dGFjbAorICAgICAgICBGUk9NIHBnX2F0dHJpYnV0ZSBhdHQKKyAg ICAgICAgV0hFUkUgYXR0LmF0dHJlbGlkID0ge3t0aWR9fTo6b2lkCisgICAg ICAgIEFORCBhdHQuYXR0bnVtID0ge3tjbGlkfX06OmludAorICAgICkgYWNs LAorICAgIChTRUxFQ1QgKGQpLmdyYW50ZWUgQVMgZ3JhbnRlZSwgKGQpLmdy YW50b3IgQVMgZ3JhbnRvciwgKGQpLmlzX2dyYW50YWJsZQorICAgICAgICBB UyBpc19ncmFudGFibGUsIChkKS5wcml2aWxlZ2VfdHlwZSBBUyBwcml2aWxl Z2VfdHlwZSBGUk9NIChTRUxFQ1QKKyAgICAgICAgYWNsZXhwbG9kZShhdHRh Y2wpIGFzIGQgRlJPTSBwZ19hdHRyaWJ1dGUgYXR0CisgICAgICAgIFdIRVJF IGF0dC5hdHRyZWxpZCA9IHt7dGlkfX06Om9pZAorICAgICAgICBBTkQgYXR0 LmF0dG51bSA9IHt7Y2xpZH19OjppbnQpIGEpIGQKKyAgICApIGQKKyAgTEVG VCBKT0lOIHBnX2NhdGFsb2cucGdfcm9sZXMgZyBPTiAoZC5ncmFudG9yID0g Zy5vaWQpCisgIExFRlQgSk9JTiBwZ19jYXRhbG9nLnBnX3JvbGVzIGd0IE9O IChkLmdyYW50ZWUgPSBndC5vaWQpCitHUk9VUCBCWSBnLnJvbG5hbWUsIGd0 LnJvbG5hbWUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n aXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL2NvbHVtbi9z cWwvOS4xX3BsdXMvY3JlYXRlLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxl cy90ZW1wbGF0ZXMvY29sdW1uL3NxbC85LjFfcGx1cy9jcmVhdGUuc3FsCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUxZWVhNTIKLS0t IC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxh dGVzL2NvbHVtbi9zcWwvOS4xX3BsdXMvY3JlYXRlLnNxbApAQCAtMCwwICsx LDM4IEBACit7JSBpbXBvcnQgJ2NvbHVtbi9tYWNyb3Mvc2VjdXJpdHkubWFj cm9zJyBhcyBTRUNMQUJMRSAlfQoreyUgaW1wb3J0ICdjb2x1bW4vbWFjcm9z L3ByaXZpbGVnZS5tYWNyb3MnIGFzIFBSSVZJTEVHRSAlfQoreyUgaW1wb3J0 ICdtYWNyb3MvdmFyaWFibGUubWFjcm9zJyBhcyBWQVJJQUJMRSAlfQoreyMj IyAgQWRkIGNvbHVtbiAjIyN9Cit7JSBpZiBkYXRhLm5hbWUgYW5kICBkYXRh LmNsdHlwZSAlfQorQUxURVIgVEFCTEUge3tjb25ufHF0SWRlbnQoZGF0YS5z Y2hlbWEsIGRhdGEudGFibGUpfX0KKyAgICBBREQgQ09MVU1OIHt7Y29ubnxx dElkZW50KGRhdGEubmFtZSl9fSB7e2RhdGEuY2x0eXBlfX17JSBpZiBkYXRh LmF0dGxlbiAlfQorKHt7ZGF0YS5hdHRsZW59fXslIGlmIGRhdGEuYXR0cHJl Y2lzaW9uJX0sIHt7ZGF0YS5hdHRwcmVjaXNpb259fXslIGVuZGlmICV9KXsl IGVuZGlmICV9eyUgaWYgZGF0YS5oYXNTcXJCcmFja2V0ICV9CitbXXslIGVu ZGlmICV9eyUgaWYgZGF0YS5jb2xsc3BjbmFtZSAlfQorIENPTExBVEUge3tk YXRhLmNvbGxzcGNuYW1lfX17JSBlbmRpZiAlfXslIGlmIGRhdGEuYXR0bm90 bnVsbCAlfQorIE5PVCBOVUxMeyUgZW5kaWYgJX17JSBpZiBkYXRhLmRlZnZh bCAlfQorIERFRkFVTFQge3tkYXRhLmRlZnZhbH19eyUgZW5kaWYgJX07CisK K3slIGVuZGlmICV9Cit7IyMjICBBZGQgY29tbWVudHMgIyMjfQoreyUgaWYg ZGF0YSBhbmQgZGF0YS5kZXNjcmlwdGlvbiAlfQorQ09NTUVOVCBPTiBDT0xV TU4ge3tjb25ufHF0SWRlbnQoZGF0YS5zY2hlbWEsIGRhdGEudGFibGUsIGRh dGEubmFtZSl9fQorICAgIElTIHt7ZGF0YS5kZXNjcmlwdGlvbnxxdExpdGVy YWx9fTsKKworeyUgZW5kaWYgJX0KK3sjIyMgIEFkZCB2YXJpYWJsZXMgdG8g Y29sdW1uICMjI30KK3slIGlmIGRhdGEuYXR0b3B0aW9ucyAlfQorQUxURVIg VEFCTEUge3tjb25ufHF0SWRlbnQoZGF0YS5zY2hlbWEsIGRhdGEudGFibGUp fX0KKyAgICB7eyBWQVJJQUJMRS5TRVQoY29ubiwgJ0NPTFVNTicsIGRhdGEu bmFtZSwgZGF0YS5hdHRvcHRpb25zKSB9fQorCit7JSBlbmRpZiAlfQoreyMj IyAgQUNMICMjI30KK3slIGlmIGRhdGEuYXR0YWNsICV9Cit7JSBmb3IgcHJp diBpbiBkYXRhLmF0dGFjbCAlfQore3sgUFJJVklMRUdFLkFQUExZKGNvbm4s IGRhdGEuc2NoZW1hLCBkYXRhLnRhYmxlLCBkYXRhLm5hbWUsIHByaXYuZ3Jh bnRlZSwgcHJpdi53aXRob3V0X2dyYW50LCBwcml2LndpdGhfZ3JhbnQpIH19 Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmICV9Cit7IyMjICBTZWN1cml0eSBM YWJsZXMgIyMjfQoreyUgaWYgZGF0YS5zZWNsYWJlbHMgJX0KK3slIGZvciBy IGluIGRhdGEuc2VjbGFiZWxzICV9Cit7eyBTRUNMQUJMRS5BUFBMWShjb25u LCAnQ09MVU1OJyxkYXRhLnNjaGVtYSwgZGF0YS50YWJsZSwgZGF0YS5uYW1l LCByLnByb3ZpZGVyLCByLmxhYmVsKSB9fQoreyUgZW5kZm9yICV9Cit7JSBl bmRpZiAlfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdp dCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvY29sdW1uL3Nx bC85LjFfcGx1cy9kZWxldGUuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVz L3RlbXBsYXRlcy9jb2x1bW4vc3FsLzkuMV9wbHVzL2RlbGV0ZS5zcWwKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGUxNjI1MQotLS0g L2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0 ZXMvY29sdW1uL3NxbC85LjFfcGx1cy9kZWxldGUuc3FsCkBAIC0wLDAgKzEg QEAKK0FMVEVSIFRBQkxFIHt7Y29ubnxxdElkZW50KGRhdGEuc2NoZW1hLCBk YXRhLnRhYmxlKX19IERST1AgQ09MVU1OIHt7Y29ubnxxdElkZW50KGRhdGEu bmFtZSl9fTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n aXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL2NvbHVtbi9z cWwvOS4xX3BsdXMvZGVwZW5kLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxl cy90ZW1wbGF0ZXMvY29sdW1uL3NxbC85LjFfcGx1cy9kZXBlbmQuc3FsCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY1ZjM5ZTcKLS0t IC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxh dGVzL2NvbHVtbi9zcWwvOS4xX3BsdXMvZGVwZW5kLnNxbApAQCAtMCwwICsx LDkgQEAKK1NFTEVDVAorICAgIHJlZi5yZWxuYW1lIEFTIHJlZm5hbWUsIGQy LnJlZmNsYXNzaWQsIGRlcC5kZXB0eXBlIEFTIGRlcHR5cGUKK0ZST00gcGdf ZGVwZW5kIGRlcAorICAgIExFRlQgSk9JTiBwZ19kZXBlbmQgZDIgT04gZGVw Lm9iamlkPWQyLm9iamlkIEFORCBkZXAucmVmb2JqaWQgIT0gZDIucmVmb2Jq aWQKKyAgICBMRUZUIEpPSU4gcGdfY2xhc3MgcmVmIE9OIHJlZi5vaWQ9ZDIu cmVmb2JqaWQKKyAgICBMRUZUIEpPSU4gcGdfYXR0cmlidXRlIGF0dCBPTiBk Mi5yZWZjbGFzc2lkPWF0dC5hdHRyZWxpZCBBTkQgZDIucmVmb2Jqc3ViaWQ9 YXR0LmF0dG51bQorICAgIHt7IHdoZXJlIH19IEFORAorICAgIGRlcC5jbGFz c2lkPShTRUxFQ1Qgb2lkIEZST00gcGdfY2xhc3MgV0hFUkUgcmVsbmFtZT0n cGdfYXR0cmRlZicpIEFORAorICAgIGRlcC5yZWZvYmppZCBOT1QgSU4gKFNF TEVDVCBkMy5yZWZvYmppZCBGUk9NIHBnX2RlcGVuZCBkMyBXSEVSRSBkMy5v YmppZD1kMi5yZWZvYmppZCkKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVz L2NvbHVtbi9zcWwvOS4xX3BsdXMvZWRpdF9tb2RlX3R5cGVzLnNxbCBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvY29sdW1uL3NxbC85LjFf cGx1cy9lZGl0X21vZGVfdHlwZXMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAuLjhiYzYzODUKLS0tIC9kZXYvbnVsbAorKysgYi93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL2NvbHVtbi9zcWwvOS4x X3BsdXMvZWRpdF9tb2RlX3R5cGVzLnNxbApAQCAtMCwwICsxLDUgQEAKK1NF TEVDVCB0dC5vaWQsIGZvcm1hdF90eXBlKHR0Lm9pZCxOVUxMKSBBUyB0eXBu YW1lCisgIEZST00gcGdfY2FzdAorICBKT0lOIHBnX3R5cGUgdHQgT04gdHQu b2lkPWNhc3R0YXJnZXQKK1dIRVJFIGNhc3Rzb3VyY2U9e3t0eXBlX2lkfX0K KyAgIEFORCBjYXN0Y29udGV4dCBJTiAoJ2knLCAnYScpClwgTm8gbmV3bGlu ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv dGFibGVzL3RlbXBsYXRlcy9jb2x1bW4vc3FsLzkuMV9wbHVzL2dldF9jb2xs YXRpb25zLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMv Y29sdW1uL3NxbC85LjFfcGx1cy9nZXRfY29sbGF0aW9ucy5zcWwKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODAzYzRkNAotLS0gL2Rl di9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMv Y29sdW1uL3NxbC85LjFfcGx1cy9nZXRfY29sbGF0aW9ucy5zcWwKQEAgLTAs MCArMSw3IEBACitTRUxFQ1QgLS1uc3BuYW1lLCBjb2xsbmFtZSwKKwlDQVNF IFdIRU4gbGVuZ3RoKG5zcG5hbWUpID4gMCBBTkQgbGVuZ3RoKGNvbGxuYW1l KSA+IDAgIFRIRU4KKwkgIGNvbmNhdChxdW90ZV9pZGVudChuc3BuYW1lKSwg Jy4nLCBxdW90ZV9pZGVudChjb2xsbmFtZSkpCisJRUxTRSAnJyBFTkQgQVMg Y29sbGF0aW9uCitGUk9NIHBnX2NvbGxhdGlvbiBjLCBwZ19uYW1lc3BhY2Ug bgorICAgIFdIRVJFIGMuY29sbG5hbWVzcGFjZT1uLm9pZAorT1JERVIgQlkg bnNwbmFtZSwgY29sbG5hbWU7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls ZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRl cy9jb2x1bW4vc3FsLzkuMV9wbHVzL2dldF9pbmhlcml0ZWRfdGFibGVzLnNx bCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvY29sdW1uL3Nx bC85LjFfcGx1cy9nZXRfaW5oZXJpdGVkX3RhYmxlcy5zcWwKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzc5MzRiOAotLS0gL2Rldi9u dWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvY29s dW1uL3NxbC85LjFfcGx1cy9nZXRfaW5oZXJpdGVkX3RhYmxlcy5zcWwKQEAg LTAsMCArMSwxMiBAQAorU0VMRUNUIGFycmF5X3RvX3N0cmluZyhhcnJheV9h Z2coaW5ocmVsbmFtZSksICcsICcpIGluaHJlbG5hbWUsIGF0dHJuYW1lCitG Uk9NCisgKFNFTEVDVAorICAgaW5ocGFyZW50OjpyZWdjbGFzcyBBUyBpbmhy ZWxuYW1lLAorICAgYS5hdHRuYW1lIEFTIGF0dHJuYW1lCisgIEZST00gcGdf aW5oZXJpdHMgaQorICBMRUZUIEpPSU4gcGdfYXR0cmlidXRlIGEgT04KKyAg IChhdHRyZWxpZCA9IGluaHBhcmVudCBBTkQgYXR0bnVtID4gMCkKKyAgV0hF UkUgaW5ocmVsaWQgPSB7e3RpZH19OjpvaWQKKyAgT1JERVIgQlkgaW5oc2Vx bm8KKyApIGEKK0dST1VQIEJZIGF0dHJuYW1lOwpcIE5vIG5ld2xpbmUgYXQg ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxl cy90ZW1wbGF0ZXMvY29sdW1uL3NxbC85LjFfcGx1cy9nZXRfcGFyZW50LnNx bCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvY29sdW1uL3Nx bC85LjFfcGx1cy9nZXRfcGFyZW50LnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi41ZGQ1ZDNjCi0tLSAvZGV2L251bGwKKysrIGIv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy9jb2x1bW4vc3FsLzku MV9wbHVzL2dldF9wYXJlbnQuc3FsCkBAIC0wLDAgKzEsNSBAQAorU0VMRUNU IG5zcC5uc3BuYW1lIEFTIHNjaGVtYSAscmVsLnJlbG5hbWUgQVMgdGFibGUK K0ZST00gcGdfY2xhc3MgcmVsCisgICAgSk9JTiBwZ19uYW1lc3BhY2UgbnNw CisgICAgT04gcmVsLnJlbG5hbWVzcGFjZSA9IG5zcC5vaWQ6OmludAorICAg IFdIRVJFIHJlbC5vaWQgPSB7e3RpZH19OjppbnQKXCBObyBuZXdsaW5lIGF0 IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJs ZXMvdGVtcGxhdGVzL2NvbHVtbi9zcWwvOS4xX3BsdXMvZ2V0X3Bvc2l0aW9u LnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvY29sdW1u L3NxbC85LjFfcGx1cy9nZXRfcG9zaXRpb24uc3FsCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlYTU3MjEKLS0tIC9kZXYvbnVsbAor KysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL2NvbHVtbi9z cWwvOS4xX3BsdXMvZ2V0X3Bvc2l0aW9uLnNxbApAQCAtMCwwICsxLDQgQEAK K1NFTEVDVCBhdHQuYXR0bnVtCitGUk9NIHBnX2F0dHJpYnV0ZSBhdHQKKyAg ICBXSEVSRSBhdHQuYXR0cmVsaWQgPSB7e3RpZH19OjpvaWQKKyAgICBBTkQg YXR0LmF0dG5hbWUgPSB7e2RhdGEubmFtZXxxdExpdGVyYWx9fQpkaWZmIC0t Z2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy9jb2x1bW4v c3FsLzkuMV9wbHVzL2dldF90eXBlcy5zcWwgYi93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90 YWJsZXMvdGVtcGxhdGVzL2NvbHVtbi9zcWwvOS4xX3BsdXMvZ2V0X3R5cGVz LnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40Njkw OTZjCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVz L3RlbXBsYXRlcy9jb2x1bW4vc3FsLzkuMV9wbHVzL2dldF90eXBlcy5zcWwK QEAgLTAsMCArMSwxNCBAQAorU0VMRUNUICogRlJPTQorICAgIChTRUxFQ1Qg Zm9ybWF0X3R5cGUodC5vaWQsTlVMTCkgQVMgdHlwbmFtZSwKKyAgICBDQVNF IFdIRU4gdHlwZWxlbSA+IDAgVEhFTiB0eXBlbGVtIEVMU0UgdC5vaWQgRU5E IEFTIGVsZW1vaWQKKyAgICAsdHlwbGVuLCB0eXB0eXBlLCB0Lm9pZCwgbnNw bmFtZSwKKyAgICAoU0VMRUNUIENPVU5UKDEpIEZST00gcGdfdHlwZSB0MiBX SEVSRSB0Mi50eXBuYW1lID0gdC50eXBuYW1lKSA+IDEgQVMgaXNkdXAKK0ZS T00gcGdfdHlwZSB0CisgICAgSk9JTiBwZ19uYW1lc3BhY2UgbnNwIE9OIHR5 cG5hbWVzcGFjZT1uc3Aub2lkCitXSEVSRSAoTk9UICh0eXBuYW1lID0gJ3Vu a25vd24nIEFORCBuc3BuYW1lID0gJ3BnX2NhdGFsb2cnKSkKKyAgICBBTkQg dHlwaXNkZWZpbmVkIEFORCB0eXB0eXBlIElOICgnYicsICdjJywgJ2QnLCAn ZScsICdyJykKKyAgICBBTkQgTk9UIEVYSVNUUyAoc2VsZWN0IDEgZnJvbSBw Z19jbGFzcyB3aGVyZSByZWxuYW1lc3BhY2U9dHlwbmFtZXNwYWNlIGFuZCBy ZWxuYW1lID0gdHlwbmFtZSBhbmQgcmVsa2luZCAhPSAnYycpCisgICAgQU5E ICh0eXBuYW1lIG5vdCBsaWtlICdfJScgT1IgTk9UIEVYSVNUUyAoc2VsZWN0 IDEgZnJvbSBwZ19jbGFzcyB3aGVyZSByZWxuYW1lc3BhY2U9dHlwbmFtZXNw YWNlIGFuZCByZWxuYW1lID0gc3Vic3RyaW5nKHR5cG5hbWUgZnJvbSAyKTo6 bmFtZSBhbmQgcmVsa2luZCAhPSAnYycpKQorICAgIEFORCBuc3AubnNwbmFt ZSAhPSAnaW5mb3JtYXRpb25fc2NoZW1hJworICAgICkgQVMgZHVtbXkKKyAg ICBPUkRFUiBCWSBuc3BuYW1lIDw+ICdwZ19jYXRhbG9nJywgbnNwbmFtZSA8 PiAncHVibGljJywgbnNwbmFtZSwgMQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m IGZpbGUKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1w bGF0ZXMvY29sdW1uL3NxbC85LjFfcGx1cy9pc19yZWZlcmVuY2VkLnNxbCBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvY29sdW1uL3NxbC85 LjFfcGx1cy9pc19yZWZlcmVuY2VkLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi43ZDBiZmMzCi0tLSAvZGV2L251bGwKKysrIGIv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy9jb2x1bW4vc3FsLzku MV9wbHVzL2lzX3JlZmVyZW5jZWQuc3FsCkBAIC0wLDAgKzEsNSBAQAorU0VM RUNUIENPVU5UKDEpCitGUk9NIHBnX2RlcGVuZCBkZXAKKyAgICBKT0lOIHBn X2NsYXNzIGNsIE9OIGRlcC5jbGFzc2lkPWNsLm9pZCBBTkQgcmVsbmFtZT0n cGdfcmV3cml0ZScKKyAgICBXSEVSRSByZWZvYmppZD0ge3t0aWR9fTo6b2lk CisgICAgQU5EIHJlZm9ianN1YmlkPSB7e2NsaWR8cXRMaXRlcmFsfX07CmRp ZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL2Nv bHVtbi9zcWwvOS4xX3BsdXMvbm9kZXMuc3FsIGIvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv dGFibGVzL3RlbXBsYXRlcy9jb2x1bW4vc3FsLzkuMV9wbHVzL25vZGVzLnNx bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNmVkOGY2 Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3Rl bXBsYXRlcy9jb2x1bW4vc3FsLzkuMV9wbHVzL25vZGVzLnNxbApAQCAtMCww ICsxLDE4IEBACitTRUxFQ1QgYXR0LmF0dG5hbWUgYXMgbmFtZSwgYXR0LmF0 dG51bSBhcyBPSUQsIGZvcm1hdF90eXBlKHR5Lm9pZCxOVUxMKSBBUyBkYXRh dHlwZQorRlJPTSBwZ19hdHRyaWJ1dGUgYXR0CisgICAgSk9JTiBwZ190eXBl IHR5IE9OIHR5Lm9pZD1hdHR0eXBpZAorICAgIEpPSU4gcGdfbmFtZXNwYWNl IHRuIE9OIHRuLm9pZD10eS50eXBuYW1lc3BhY2UKKyAgICBKT0lOIHBnX2Ns YXNzIGNsIE9OIGNsLm9pZD1hdHQuYXR0cmVsaWQKKyAgICBKT0lOIHBnX25h bWVzcGFjZSBuYSBPTiBuYS5vaWQ9Y2wucmVsbmFtZXNwYWNlCisgICAgTEVG VCBPVVRFUiBKT0lOIHBnX3R5cGUgZXQgT04gZXQub2lkPXR5LnR5cGVsZW0K KyAgICBMRUZUIE9VVEVSIEpPSU4gcGdfYXR0cmRlZiBkZWYgT04gYWRyZWxp ZD1hdHQuYXR0cmVsaWQgQU5EIGFkbnVtPWF0dC5hdHRudW0KKyAgICBMRUZU IE9VVEVSIEpPSU4gKHBnX2RlcGVuZCBKT0lOIHBnX2NsYXNzIGNzIE9OIG9i amlkPWNzLm9pZCBBTkQgY3MucmVsa2luZD0nUycpIE9OIHJlZm9iamlkPWF0 dC5hdHRyZWxpZCBBTkQgcmVmb2Jqc3ViaWQ9YXR0LmF0dG51bQorICAgIExF RlQgT1VURVIgSk9JTiBwZ19uYW1lc3BhY2UgbnMgT04gbnMub2lkPWNzLnJl bG5hbWVzcGFjZQorICAgIExFRlQgT1VURVIgSk9JTiBwZ19pbmRleCBwaSBP TiBwaS5pbmRyZWxpZD1hdHQuYXR0cmVsaWQgQU5EIGluZGlzcHJpbWFyeQor V0hFUkUgYXR0LmF0dHJlbGlkID0ge3t0aWR9fTo6b2lkCit7IyMjIFRvIHNo b3cgc3lzdGVtIG9iamVjdHMgIyMjfQoreyUgaWYgbm90IHNob3dfc3lzX29i amVjdHMgJX0KKyAgICBBTkQgYXR0LmF0dG51bSA+IDAKK3slIGVuZGlmICV9 CisgICAgQU5EIGF0dC5hdHRpc2Ryb3BwZWQgSVMgRkFMU0UKKyAgICBPUkRF UiBCWSBhdHQuYXR0bnVtCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90 YWJsZXMvdGVtcGxhdGVzL2NvbHVtbi9zcWwvOS4xX3BsdXMvcHJvcGVydGll cy5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL2NvbHVt bi9zcWwvOS4xX3BsdXMvcHJvcGVydGllcy5zcWwKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uZDUzNjkwNgotLS0gL2Rldi9udWxsCisr KyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvY29sdW1uL3Nx bC85LjFfcGx1cy9wcm9wZXJ0aWVzLnNxbApAQCAtMCwwICsxLDQ1IEBACitT RUxFQ1QgYXR0LmF0dG5hbWUgYXMgbmFtZSwgYXR0LiosIGRlZi4qLCBwZ19j YXRhbG9nLnBnX2dldF9leHByKGRlZi5hZGJpbiwgZGVmLmFkcmVsaWQpIEFT IGRlZnZhbCwKKyAgICAgICAgQ0FTRSBXSEVOIGF0dC5hdHRuZGltcyA+IDAg VEhFTiAxIEVMU0UgMCBFTkQgQVMgaXNhcnJheSwKKyAgICAgICAgZm9ybWF0 X3R5cGUodHkub2lkLE5VTEwpIEFTIHR5cG5hbWUsCisgICAgICAgIGZvcm1h dF90eXBlKHR5Lm9pZCxhdHQuYXR0dHlwbW9kKSBBUyBkaXNwbGF5dHlwbmFt ZSwKKyAgICAgICAgdG4ubnNwbmFtZSBhcyB0eXBuc3BuYW1lLCBldC50eXBu YW1lIGFzIGVsZW10eXBuYW1lLAorICAgICAgICB0eS50eXBzdG9yYWdlIEFT IGRlZmF1bHRzdG9yYWdlLCBjbC5yZWxuYW1lLCBuYS5uc3BuYW1lLAorICAg ICAgICBjb25jYXQocXVvdGVfaWRlbnQobmEubnNwbmFtZSkgLCcuJywgcXVv dGVfaWRlbnQoY2wucmVsbmFtZSkpIEFTIHBhcmVudF90YmwsCisJYXR0LmF0 dHN0YXR0YXJnZXQsIGRlc2NyaXB0aW9uLCBjcy5yZWxuYW1lIEFTIHNlcm5h bWUsCisJbnMubnNwbmFtZSBBUyBzZXJzY2hlbWEsCisJKFNFTEVDVCBjb3Vu dCgxKSBGUk9NIHBnX3R5cGUgdDIgV0hFUkUgdDIudHlwbmFtZT10eS50eXBu YW1lKSA+IDEgQVMgaXNkdXAsCisJaW5ka2V5LCBjb2xsLmNvbGxuYW1lLCBu c3BjLm5zcG5hbWUgYXMgY29sbG5zcG5hbWUgLCBhdHRvcHRpb25zLAorCS0t IFN0YXJ0IHBnQWRtaW40LCBhZGRlZCB0byBzYXZlIHRpbWUgb24gY2xpZW50 IHNpZGUgcGFyc2luZworCUNBU0UgV0hFTiBsZW5ndGgoY29sbC5jb2xsbmFt ZSkgPiAwIEFORCBsZW5ndGgobnNwYy5uc3BuYW1lKSA+IDAgIFRIRU4KKwkg IGNvbmNhdChxdW90ZV9pZGVudChjb2xsLmNvbGxuYW1lKSwnLicscXVvdGVf aWRlbnQobnNwYy5uc3BuYW1lKSkKKwlFTFNFICcnIEVORCBBUyBjb2xsc3Bj bmFtZSwKKwlDQVNFIFdIRU4gc3RycG9zKGZvcm1hdF90eXBlKHR5Lm9pZCxh dHQuYXR0dHlwbW9kKSwgJy4nKSA+IDAgVEhFTgorCSAgc3BsaXRfcGFydChm b3JtYXRfdHlwZSh0eS5vaWQsYXR0LmF0dHR5cG1vZCksICcuJywgMikKKwlF TFNFIGZvcm1hdF90eXBlKHR5Lm9pZCxhdHQuYXR0dHlwbW9kKSBFTkQgQVMg Y2x0eXBlLAorCS0tIEVuZCBwZ0FkbWluNAorCUVYSVNUUyhTRUxFQ1QgMSBG Uk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ucmVsaWQ9YXR0LmF0dHJlbGlk IEFORCBjb250eXBlPSdmJyBBTkQgYXR0LmF0dG51bT1BTlkoY29ua2V5KSkg QXMgaXNfZmssCisJKFNFTEVDVCBhcnJheV9hZ2cocHJvdmlkZXIgfHwgJz0n IHx8IGxhYmVsKSBGUk9NIHBnX3NlY2xhYmVscyBzbDEgV0hFUkUgc2wxLm9i am9pZD1hdHQuYXR0dHlwaWQgQU5EIHNsMS5vYmpzdWJpZD0wKSBBUyBzZWNs YWJlbHMsCisJKENBU0UgV0hFTiAoYXR0LmF0dG51bSA8IDEpIFRIRU4gdHJ1 ZSBFbFNFIGZhbHNlIEVORCkgQVMgaXNfc3lzX2NvbHVtbgorRlJPTSBwZ19h dHRyaWJ1dGUgYXR0CisgIEpPSU4gcGdfdHlwZSB0eSBPTiB0eS5vaWQ9YXR0 dHlwaWQKKyAgSk9JTiBwZ19uYW1lc3BhY2UgdG4gT04gdG4ub2lkPXR5LnR5 cG5hbWVzcGFjZQorICBKT0lOIHBnX2NsYXNzIGNsIE9OIGNsLm9pZD1hdHQu YXR0cmVsaWQKKyAgSk9JTiBwZ19uYW1lc3BhY2UgbmEgT04gbmEub2lkPWNs LnJlbG5hbWVzcGFjZQorICBMRUZUIE9VVEVSIEpPSU4gcGdfdHlwZSBldCBP TiBldC5vaWQ9dHkudHlwZWxlbQorICBMRUZUIE9VVEVSIEpPSU4gcGdfYXR0 cmRlZiBkZWYgT04gYWRyZWxpZD1hdHQuYXR0cmVsaWQgQU5EIGFkbnVtPWF0 dC5hdHRudW0KKyAgTEVGVCBPVVRFUiBKT0lOIHBnX2Rlc2NyaXB0aW9uIGRl cyBPTiAoZGVzLm9iam9pZD1hdHQuYXR0cmVsaWQgQU5EIGRlcy5vYmpzdWJp ZD1hdHQuYXR0bnVtIEFORCBkZXMuY2xhc3NvaWQ9J3BnX2NsYXNzJzo6cmVn Y2xhc3MpCisgIExFRlQgT1VURVIgSk9JTiAocGdfZGVwZW5kIEpPSU4gcGdf Y2xhc3MgY3MgT04gb2JqaWQ9Y3Mub2lkIEFORCBjcy5yZWxraW5kPSdTJykg T04gcmVmb2JqaWQ9YXR0LmF0dHJlbGlkIEFORCByZWZvYmpzdWJpZD1hdHQu YXR0bnVtCisgIExFRlQgT1VURVIgSk9JTiBwZ19uYW1lc3BhY2UgbnMgT04g bnMub2lkPWNzLnJlbG5hbWVzcGFjZQorICBMRUZUIE9VVEVSIEpPSU4gcGdf aW5kZXggcGkgT04gcGkuaW5kcmVsaWQ9YXR0LmF0dHJlbGlkIEFORCBpbmRp c3ByaW1hcnkKKyAgTEVGVCBPVVRFUiBKT0lOIHBnX2NvbGxhdGlvbiBjb2xs IE9OIGF0dC5hdHRjb2xsYXRpb249Y29sbC5vaWQKKyAgTEVGVCBPVVRFUiBK T0lOIHBnX25hbWVzcGFjZSBuc3BjIE9OIGNvbGwuY29sbG5hbWVzcGFjZT1u c3BjLm9pZAorV0hFUkUgYXR0LmF0dHJlbGlkID0ge3t0aWR9fTo6b2lkCit7 JSBpZiBjbGlkICV9CisgICAgQU5EIGF0dC5hdHRudW0gPSB7e2NsaWR9fTo6 aW50Cit7JSBlbmRpZiAlfQoreyMjIyBUbyBzaG93IHN5c3RlbSBvYmplY3Rz ICMjI30KK3slIGlmIG5vdCBzaG93X3N5c19vYmplY3RzICV9CisgICAgQU5E IGF0dC5hdHRudW0gPiAwCit7JSBlbmRpZiAlfQorICAgIEFORCBhdHQuYXR0 aXNkcm9wcGVkIElTIEZBTFNFCisgICAgT1JERVIgQlkgYXR0LmF0dG51bQpk aWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy9j b2x1bW4vc3FsLzkuMV9wbHVzL3VwZGF0ZS5zcWwgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy90YWJsZXMvdGVtcGxhdGVzL2NvbHVtbi9zcWwvOS4xX3BsdXMvdXBkYXRl LnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMzZj NmZjCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVz L3RlbXBsYXRlcy9jb2x1bW4vc3FsLzkuMV9wbHVzL3VwZGF0ZS5zcWwKQEAg LTAsMCArMSwxMDcgQEAKK3slIGltcG9ydCAnY29sdW1uL21hY3Jvcy9zZWN1 cml0eS5tYWNyb3MnIGFzIFNFQ0xBQkxFICV9Cit7JSBpbXBvcnQgJ2NvbHVt bi9tYWNyb3MvcHJpdmlsZWdlLm1hY3JvcycgYXMgUFJJVklMRUdFICV9Cit7 JSBpbXBvcnQgJ21hY3Jvcy92YXJpYWJsZS5tYWNyb3MnIGFzIFZBUklBQkxF ICV9Cit7IyMjICBSZW5hbWUgY29sdW1uIG5hbWUgIyMjfQoreyUgaWYgZGF0 YS5uYW1lICE9IG9fZGF0YS5uYW1lICV9CitBTFRFUiBUQUJMRSB7e2Nvbm58 cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0YS50YWJsZSl9fQorICAgIFJFTkFN RSB7e2Nvbm58cXRJZGVudChvX2RhdGEubmFtZSl9fSBUTyB7e2Nvbm58cXRJ ZGVudChkYXRhLm5hbWUpfX07CisKK3slIGVuZGlmICV9Cit7IyMjICBBbHRl ciBjb2x1bW4gdHlwZSBhbmQgY29sbGF0aW9uICMjI30KK3slIGlmIChkYXRh LmNsdHlwZSBhbmQgZGF0YS5jbHR5cGUgIT0gb19kYXRhLmNsdHlwZSkgb3Ig KGRhdGEuYXR0bGVuIGFuZCBkYXRhLmF0dGxlbiAhPSBvX2RhdGEuYXR0bGVu KSBvciAoZGF0YS5hdHRwcmVjaXNpb24gYW5kIGRhdGEuYXR0cHJlY2lzaW9u ICE9IG9fZGF0YS5hdHRwcmVjaXNpb24pICV9CitBTFRFUiBUQUJMRSB7e2Nv bm58cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0YS50YWJsZSl9fQorICAgIEFM VEVSIENPTFVNTiB7e2Nvbm58cXRJZGVudChkYXRhLm5hbWUpfX0gVFlQRSB7 JSBpZiBkYXRhLmNsdHlwZSAlfXt7ZGF0YS5jbHR5cGV9fSB7JSBlbHNlICV9 e3tvX2RhdGEuY2x0eXBlfX0geyUgZW5kaWYgJX17JSBpZiBkYXRhLmF0dGxl biAlfQorKHt7ZGF0YS5hdHRsZW59fXslIGlmIGRhdGEuYXR0cHJlY2lzaW9u JX0sIHt7ZGF0YS5hdHRwcmVjaXNpb259fXslIGVuZGlmICV9KXslIGVuZGlm ICV9eyUgaWYgZGF0YS5oYXNTcXJCcmFja2V0ICV9CitbXXslIGVuZGlmICV9 eyUgaWYgZGF0YS5jb2xsc3BjbmFtZSBhbmQgZGF0YS5jb2xsc3BjbmFtZSAh PSBvX2RhdGEuY29sbHNwY25hbWUgJX0KKyBDT0xMQVRFIHt7ZGF0YS5jb2xs c3BjbmFtZX19eyUgZW5kaWYgJX07CisKK3slIGVuZGlmICV9Cit7IyMjICBB bHRlciBjb2x1bW4gZGVmYXVsdCB2YWx1ZSAjIyN9Cit7JSBpZiBkYXRhLmRl ZnZhbCBhbmQgZGF0YS5kZWZ2YWwgIT0gb19kYXRhLmRlZnZhbCAlfQorQUxU RVIgVEFCTEUge3tjb25ufHF0SWRlbnQoZGF0YS5zY2hlbWEsIGRhdGEudGFi bGUpfX0KKyAgICBBTFRFUiBDT0xVTU4ge3tjb25ufHF0SWRlbnQoZGF0YS5u YW1lKX19IFNFVCBERUZBVUxUIHt7ZGF0YS5kZWZ2YWx9fTsKKworeyUgZW5k aWYgJX0KK3sjIyMgIEFsdGVyIGNvbHVtbiBub3QgbnVsbCB2YWx1ZSAjIyN9 Cit7JSBpZiAnYXR0bm90bnVsbCcgaW4gZGF0YSBhbmQgZGF0YS5hdHRub3Ru dWxsICE9IG9fZGF0YS5hdHRub3RudWxsICV9CitBTFRFUiBUQUJMRSB7e2Nv bm58cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0YS50YWJsZSl9fQorICAgIEFM VEVSIENPTFVNTiB7e2Nvbm58cXRJZGVudChkYXRhLm5hbWUpfX0geyUgaWYg ZGF0YS5hdHRub3RudWxsICV9U0VUeyUgZWxzZSAlfURST1B7JSBlbmRpZiAl fSBOT1QgTlVMTDsKKworeyUgZW5kaWYgJX0KK3sjIyMgIEFsdGVyIGNvbHVt biBzdGF0aXN0aWNzIHZhbHVlICMjI30KK3slIGlmIGRhdGEuYXR0c3RhdHRh cmdldCBhbmQgZGF0YS5hdHRzdGF0dGFyZ2V0ICE9IG9fZGF0YS5hdHRzdGF0 dGFyZ2V0ICV9CitBTFRFUiBUQUJMRSB7e2Nvbm58cXRJZGVudChkYXRhLnNj aGVtYSwgZGF0YS50YWJsZSl9fQorICAgIEFMVEVSIENPTFVNTiB7e2Nvbm58 cXRJZGVudChkYXRhLm5hbWUpfX0gU0VUIFNUQVRJU1RJQ1Mge3tkYXRhLmF0 dHN0YXR0YXJnZXR9fTsKKworeyUgZW5kaWYgJX0KK3sjIyMgIEFsdGVyIGNv bHVtbiBzdG9yYWdlIHZhbHVlICMjI30KK3slIGlmIGRhdGEuYXR0c3RvcmFn ZSBhbmQgZGF0YS5hdHRzdG9yYWdlICE9IG9fZGF0YS5hdHRzdG9yYWdlICV9 CitBTFRFUiBUQUJMRSB7e2Nvbm58cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0 YS50YWJsZSl9fQorICAgIEFMVEVSIENPTFVNTiB7e2Nvbm58cXRJZGVudChk YXRhLm5hbWUpfX0gU0VUIFNUT1JBR0UgeyVpZiBkYXRhLmF0dHN0b3JhZ2Ug PT0gJ3AnICV9CitQTEFJTnslIGVsaWYgZGF0YS5hdHRzdG9yYWdlID09ICdt JyV9TUFJTnslIGVsaWYgZGF0YS5hdHRzdG9yYWdlID09ICdlJyV9CitFWFRF Uk5BTHslIGVsaWYgZGF0YS5hdHRzdG9yYWdlID09ICd4JyV9RVhURU5ERUR7 JSBlbmRpZiAlfTsKKworeyUgZW5kaWYgJX0KK3slIGlmIGRhdGEuZGVzY3Jp cHRpb24gJX0KK0NPTU1FTlQgT04gQ09MVU1OIHt7Y29ubnxxdElkZW50KGRh dGEuc2NoZW1hLCBkYXRhLnRhYmxlLCBkYXRhLm5hbWUpfX0KKyAgICBJUyB7 e2RhdGEuZGVzY3JpcHRpb258cXRMaXRlcmFsfX07CisKK3slIGVuZGlmICV9 Cit7IyMjIFVwZGF0ZSBjb2x1bW4gdmFyaWFibGVzICMjI30KK3slIGlmICdh dHRvcHRpb25zJyBpbiBkYXRhIGFuZCBkYXRhLmF0dG9wdGlvbnN8bGVuZ3Ro ID4gMCAlfQoreyUgc2V0IHZhcmlhYmxlcyA9IGRhdGEuYXR0b3B0aW9ucyAl fQoreyUgaWYgJ2RlbGV0ZWQnIGluIHZhcmlhYmxlcyBhbmQgdmFyaWFibGVz LmRlbGV0ZWR8bGVuZ3RoID4gMCAlfQorQUxURVIgVEFCTEUge3tjb25ufHF0 SWRlbnQoZGF0YS5zY2hlbWEsIGRhdGEudGFibGUpfX0KKyAgICB7eyBWQVJJ QUJMRS5VTlNFVChjb25uLCAnQ09MVU1OJywgZGF0YS5uYW1lLCB2YXJpYWJs ZXMuZGVsZXRlZCkgfX0KK3slIGVuZGlmICV9Cit7JSBpZiAnYWRkZWQnIGlu IHZhcmlhYmxlcyBhbmQgdmFyaWFibGVzLmFkZGVkfGxlbmd0aCA+IDAgJX0K K0FMVEVSIFRBQkxFIHt7Y29ubnxxdElkZW50KGRhdGEuc2NoZW1hLCBkYXRh LnRhYmxlKX19CisgICAge3sgVkFSSUFCTEUuU0VUKGNvbm4sICdDT0xVTU4n LCBkYXRhLm5hbWUsIHZhcmlhYmxlcy5hZGRlZCkgfX0KK3slIGVuZGlmICV9 Cit7JSBpZiAnY2hhbmdlZCcgaW4gdmFyaWFibGVzIGFuZCB2YXJpYWJsZXMu Y2hhbmdlZHxsZW5ndGggPiAwICV9CitBTFRFUiBUQUJMRSB7e2Nvbm58cXRJ ZGVudChkYXRhLnNjaGVtYSwgZGF0YS50YWJsZSl9fQorICAgIHt7IFZBUklB QkxFLlNFVChjb25uLCAnQ09MVU1OJywgZGF0YS5uYW1lLCB2YXJpYWJsZXMu Y2hhbmdlZCkgfX0KK3slIGVuZGlmICV9CisKK3slIGVuZGlmICV9Cit7IyMj IFVwZGF0ZSBjb2x1bW4gcHJpdmlsZWdlcyAjIyN9Cit7IyBDaGFuZ2UgdGhl IHByaXZpbGVnZXMgI30KK3slIGlmIGRhdGEuYXR0YWNsICV9Cit7JSBpZiAn ZGVsZXRlZCcgaW4gZGF0YS5hdHRhY2wgJX0KK3slIGZvciBwcml2IGluIGRh dGEuYXR0YWNsLmRlbGV0ZWQgJX0KK3t7IFBSSVZJTEVHRS5SRVNFVEFMTChj b25uLCBkYXRhLnNjaGVtYSwgZGF0YS50YWJsZSwgZGF0YS5uYW1lLCBwcml2 LmdyYW50ZWUpIH19Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmICV9Cit7JSBp ZiAnY2hhbmdlZCcgaW4gZGF0YS5hdHRhY2wgJX0KK3slIGZvciBwcml2IGlu IGRhdGEuYXR0YWNsLmNoYW5nZWQgJX0KK3t7IFBSSVZJTEVHRS5SRVNFVEFM TChjb25uLCBkYXRhLnNjaGVtYSwgZGF0YS50YWJsZSwgZGF0YS5uYW1lLCBw cml2LmdyYW50ZWUpIH19Cit7eyBQUklWSUxFR0UuQVBQTFkoY29ubiwgZGF0 YS5zY2hlbWEsIGRhdGEudGFibGUsIGRhdGEubmFtZSwgcHJpdi5ncmFudGVl LCBwcml2LndpdGhvdXRfZ3JhbnQsIHByaXYud2l0aF9ncmFudCkgfX0KK3sl IGVuZGZvciAlfQoreyUgZW5kaWYgJX0KK3slIGlmICdhZGRlZCcgaW4gZGF0 YS5hdHRhY2wgJX0KK3slIGZvciBwcml2IGluIGRhdGEuYXR0YWNsLmFkZGVk ICV9Cit7eyBQUklWSUxFR0UuQVBQTFkoY29ubiwgZGF0YS5zY2hlbWEsIGRh dGEudGFibGUsIGRhdGEubmFtZSwgcHJpdi5ncmFudGVlLCBwcml2LndpdGhv dXRfZ3JhbnQsIHByaXYud2l0aF9ncmFudCkgfX0KK3slIGVuZGZvciAlfQor eyUgZW5kaWYgJX0KK3slIGVuZGlmICV9Cit7IyMjIFVwcGRhdGUgdGFibGVz cGFjZSBzZWN1cml0eWxhYmVsICMjI30KK3sjIFRoZSBTUUwgZ2VuZXJhdGVk IGJlbG93IHdpbGwgY2hhbmdlIFNlY3VyaXR5IExhYmVsICN9Cit7JSBpZiBk YXRhLnNlY2xhYmVscyBhbmQgZGF0YS5zZWNsYWJlbHN8bGVuZ3RoID4gMCAl fQoreyUgc2V0IHNlY2xhYmVscyA9IGRhdGEuc2VjbGFiZWxzICV9Cit7JSBp ZiAnZGVsZXRlZCcgaW4gc2VjbGFiZWxzIGFuZCBzZWNsYWJlbHMuZGVsZXRl ZHxsZW5ndGggPiAwICV9Cit7JSBmb3IgciBpbiBzZWNsYWJlbHMuZGVsZXRl ZCAlfQore3sgU0VDTEFCTEUuRFJPUChjb25uLCAnQ09MVU1OJywgZGF0YS5z Y2hlbWEsIGRhdGEudGFibGUsIGRhdGEubmFtZSwgci5wcm92aWRlcikgfX0K K3slIGVuZGZvciAlfQoreyUgZW5kaWYgJX0KK3slIGlmICdhZGRlZCcgaW4g c2VjbGFiZWxzIGFuZCBzZWNsYWJlbHMuYWRkZWR8bGVuZ3RoID4gMCAlfQor eyUgZm9yIHIgaW4gc2VjbGFiZWxzLmFkZGVkICV9Cit7eyBTRUNMQUJMRS5B UFBMWShjb25uLCAnQ09MVU1OJyxkYXRhLnNjaGVtYSwgZGF0YS50YWJsZSwg ZGF0YS5uYW1lLCByLnByb3ZpZGVyLCByLmxhYmVsKSB9fQoreyUgZW5kZm9y ICV9Cit7JSBlbmRpZiAlfQoreyUgaWYgJ2NoYW5nZWQnIGluIHNlY2xhYmVs cyBhbmQgc2VjbGFiZWxzLmNoYW5nZWR8bGVuZ3RoID4gMCAlfQoreyUgZm9y IHIgaW4gc2VjbGFiZWxzLmNoYW5nZWQgJX0KK3t7IFNFQ0xBQkxFLkFQUExZ KGNvbm4sICdDT0xVTU4nLGRhdGEuc2NoZW1hLCBkYXRhLnRhYmxlLCBkYXRh Lm5hbWUsIHIucHJvdmlkZXIsIHIubGFiZWwpIH19Cit7JSBlbmRmb3IgJX0K K3slIGVuZGlmICV9CisKK3slIGVuZGlmICV9ClwgTm8gbmV3bGluZSBhdCBl bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVz L3RlbXBsYXRlcy9jb2x1bW4vc3FsLzkuMl9wbHVzL2FjbC5zcWwgYi93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL2NvbHVtbi9zcWwvOS4yX3Bs dXMvYWNsLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li41YzQ0YTk2Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv dGFibGVzL3RlbXBsYXRlcy9jb2x1bW4vc3FsLzkuMl9wbHVzL2FjbC5zcWwK QEAgLTAsMCArMSwzNCBAQAorU0VMRUNUICdhdHRhY2wnIGFzIGRlZnR5cGUs IENPQUxFU0NFKGd0LnJvbG5hbWUsICdwdWJsaWMnKSBncmFudGVlLCBnLnJv bG5hbWUgZ3JhbnRvciwgYXJyYXlfYWdnKHByaXZpbGVnZV90eXBlKSBhcyBw cml2aWxlZ2VzLCBhcnJheV9hZ2coaXNfZ3JhbnRhYmxlKSBhcyBncmFudGFi bGUKK0ZST00KKyAgKFNFTEVDVAorICAgIGQuZ3JhbnRlZSwgZC5ncmFudG9y LCBkLmlzX2dyYW50YWJsZSwKKyAgICBDQVNFIGQucHJpdmlsZWdlX3R5cGUK KyAgICAgICAgV0hFTiAnQ09OTkVDVCcgVEhFTiAnYycKKyAgICAgICAgV0hF TiAnQ1JFQVRFJyBUSEVOICdDJworICAgICAgICBXSEVOICdERUxFVEUnIFRI RU4gJ2QnCisgICAgICAgIFdIRU4gJ0VYRUNVVEUnIFRIRU4gJ1gnCisgICAg ICAgIFdIRU4gJ0lOU0VSVCcgVEhFTiAnYScKKyAgICAgICAgV0hFTiAnUkVG RVJFTkNFUycgVEhFTiAneCcKKyAgICAgICAgV0hFTiAnU0VMRUNUJyBUSEVO ICdyJworICAgICAgICBXSEVOICdURU1QT1JBUlknIFRIRU4gJ1QnCisgICAg ICAgIFdIRU4gJ1RSSUdHRVInIFRIRU4gJ3QnCisgICAgICAgIFdIRU4gJ1RS VU5DQVRFJyBUSEVOICdEJworICAgICAgICBXSEVOICdVUERBVEUnIFRIRU4g J3cnCisgICAgICAgIFdIRU4gJ1VTQUdFJyBUSEVOICdVJworICAgICAgICBF TFNFICdVTktOT1dOJworICAgIEVORCBBUyBwcml2aWxlZ2VfdHlwZQorICBG Uk9NCisgICAgKFNFTEVDVCBhdHRhY2wKKyAgICAgICAgRlJPTSBwZ19hdHRy aWJ1dGUgYXR0CisgICAgICAgIFdIRVJFIGF0dC5hdHRyZWxpZCA9IHt7dGlk fX06Om9pZAorICAgICAgICBBTkQgYXR0LmF0dG51bSA9IHt7Y2xpZH19Ojpp bnQKKyAgICApIGFjbCwKKyAgICAoU0VMRUNUIChkKS5ncmFudGVlIEFTIGdy YW50ZWUsIChkKS5ncmFudG9yIEFTIGdyYW50b3IsIChkKS5pc19ncmFudGFi bGUKKyAgICAgICAgQVMgaXNfZ3JhbnRhYmxlLCAoZCkucHJpdmlsZWdlX3R5 cGUgQVMgcHJpdmlsZWdlX3R5cGUgRlJPTSAoU0VMRUNUCisgICAgICAgIGFj bGV4cGxvZGUoYXR0YWNsKSBhcyBkIEZST00gcGdfYXR0cmlidXRlIGF0dAor ICAgICAgICBXSEVSRSBhdHQuYXR0cmVsaWQgPSB7e3RpZH19OjpvaWQKKyAg ICAgICAgQU5EIGF0dC5hdHRudW0gPSB7e2NsaWR9fTo6aW50KSBhKSBkCisg ICAgKSBkCisgIExFRlQgSk9JTiBwZ19jYXRhbG9nLnBnX3JvbGVzIGcgT04g KGQuZ3JhbnRvciA9IGcub2lkKQorICBMRUZUIEpPSU4gcGdfY2F0YWxvZy5w Z19yb2xlcyBndCBPTiAoZC5ncmFudGVlID0gZ3Qub2lkKQorR1JPVVAgQlkg Zy5yb2xuYW1lLCBndC5yb2xuYW1lClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg ZmlsZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBs YXRlcy9jb2x1bW4vc3FsLzkuMl9wbHVzL2NyZWF0ZS5zcWwgYi93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL2NvbHVtbi9zcWwvOS4yX3BsdXMv Y3JlYXRlLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li41MWVlYTUyCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv dGFibGVzL3RlbXBsYXRlcy9jb2x1bW4vc3FsLzkuMl9wbHVzL2NyZWF0ZS5z cWwKQEAgLTAsMCArMSwzOCBAQAoreyUgaW1wb3J0ICdjb2x1bW4vbWFjcm9z L3NlY3VyaXR5Lm1hY3JvcycgYXMgU0VDTEFCTEUgJX0KK3slIGltcG9ydCAn Y29sdW1uL21hY3Jvcy9wcml2aWxlZ2UubWFjcm9zJyBhcyBQUklWSUxFR0Ug JX0KK3slIGltcG9ydCAnbWFjcm9zL3ZhcmlhYmxlLm1hY3JvcycgYXMgVkFS SUFCTEUgJX0KK3sjIyMgIEFkZCBjb2x1bW4gIyMjfQoreyUgaWYgZGF0YS5u YW1lIGFuZCAgZGF0YS5jbHR5cGUgJX0KK0FMVEVSIFRBQkxFIHt7Y29ubnxx dElkZW50KGRhdGEuc2NoZW1hLCBkYXRhLnRhYmxlKX19CisgICAgQUREIENP TFVNTiB7e2Nvbm58cXRJZGVudChkYXRhLm5hbWUpfX0ge3tkYXRhLmNsdHlw ZX19eyUgaWYgZGF0YS5hdHRsZW4gJX0KKyh7e2RhdGEuYXR0bGVufX17JSBp ZiBkYXRhLmF0dHByZWNpc2lvbiV9LCB7e2RhdGEuYXR0cHJlY2lzaW9ufX17 JSBlbmRpZiAlfSl7JSBlbmRpZiAlfXslIGlmIGRhdGEuaGFzU3FyQnJhY2tl dCAlfQorW117JSBlbmRpZiAlfXslIGlmIGRhdGEuY29sbHNwY25hbWUgJX0K KyBDT0xMQVRFIHt7ZGF0YS5jb2xsc3BjbmFtZX19eyUgZW5kaWYgJX17JSBp ZiBkYXRhLmF0dG5vdG51bGwgJX0KKyBOT1QgTlVMTHslIGVuZGlmICV9eyUg aWYgZGF0YS5kZWZ2YWwgJX0KKyBERUZBVUxUIHt7ZGF0YS5kZWZ2YWx9fXsl IGVuZGlmICV9OworCit7JSBlbmRpZiAlfQoreyMjIyAgQWRkIGNvbW1lbnRz ICMjI30KK3slIGlmIGRhdGEgYW5kIGRhdGEuZGVzY3JpcHRpb24gJX0KK0NP TU1FTlQgT04gQ09MVU1OIHt7Y29ubnxxdElkZW50KGRhdGEuc2NoZW1hLCBk YXRhLnRhYmxlLCBkYXRhLm5hbWUpfX0KKyAgICBJUyB7e2RhdGEuZGVzY3Jp cHRpb258cXRMaXRlcmFsfX07CisKK3slIGVuZGlmICV9Cit7IyMjICBBZGQg dmFyaWFibGVzIHRvIGNvbHVtbiAjIyN9Cit7JSBpZiBkYXRhLmF0dG9wdGlv bnMgJX0KK0FMVEVSIFRBQkxFIHt7Y29ubnxxdElkZW50KGRhdGEuc2NoZW1h LCBkYXRhLnRhYmxlKX19CisgICAge3sgVkFSSUFCTEUuU0VUKGNvbm4sICdD T0xVTU4nLCBkYXRhLm5hbWUsIGRhdGEuYXR0b3B0aW9ucykgfX0KKworeyUg ZW5kaWYgJX0KK3sjIyMgIEFDTCAjIyN9Cit7JSBpZiBkYXRhLmF0dGFjbCAl fQoreyUgZm9yIHByaXYgaW4gZGF0YS5hdHRhY2wgJX0KK3t7IFBSSVZJTEVH RS5BUFBMWShjb25uLCBkYXRhLnNjaGVtYSwgZGF0YS50YWJsZSwgZGF0YS5u YW1lLCBwcml2LmdyYW50ZWUsIHByaXYud2l0aG91dF9ncmFudCwgcHJpdi53 aXRoX2dyYW50KSB9fQoreyUgZW5kZm9yICV9Cit7JSBlbmRpZiAlfQoreyMj IyAgU2VjdXJpdHkgTGFibGVzICMjI30KK3slIGlmIGRhdGEuc2VjbGFiZWxz ICV9Cit7JSBmb3IgciBpbiBkYXRhLnNlY2xhYmVscyAlfQore3sgU0VDTEFC TEUuQVBQTFkoY29ubiwgJ0NPTFVNTicsZGF0YS5zY2hlbWEsIGRhdGEudGFi bGUsIGRhdGEubmFtZSwgci5wcm92aWRlciwgci5sYWJlbCkgfX0KK3slIGVu ZGZvciAlfQoreyUgZW5kaWYgJX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm aWxlCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxh dGVzL2NvbHVtbi9zcWwvOS4yX3BsdXMvZGVsZXRlLnNxbCBiL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvY29sdW1uL3NxbC85LjJfcGx1cy9k ZWxldGUuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu LjBlMTYyNTEKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90 YWJsZXMvdGVtcGxhdGVzL2NvbHVtbi9zcWwvOS4yX3BsdXMvZGVsZXRlLnNx bApAQCAtMCwwICsxIEBACitBTFRFUiBUQUJMRSB7e2Nvbm58cXRJZGVudChk YXRhLnNjaGVtYSwgZGF0YS50YWJsZSl9fSBEUk9QIENPTFVNTiB7e2Nvbm58 cXRJZGVudChkYXRhLm5hbWUpfX07ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg ZmlsZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBs YXRlcy9jb2x1bW4vc3FsLzkuMl9wbHVzL2RlcGVuZC5zcWwgYi93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL2NvbHVtbi9zcWwvOS4yX3BsdXMv ZGVwZW5kLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li5mNWYzOWU3Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv dGFibGVzL3RlbXBsYXRlcy9jb2x1bW4vc3FsLzkuMl9wbHVzL2RlcGVuZC5z cWwKQEAgLTAsMCArMSw5IEBACitTRUxFQ1QKKyAgICByZWYucmVsbmFtZSBB UyByZWZuYW1lLCBkMi5yZWZjbGFzc2lkLCBkZXAuZGVwdHlwZSBBUyBkZXB0 eXBlCitGUk9NIHBnX2RlcGVuZCBkZXAKKyAgICBMRUZUIEpPSU4gcGdfZGVw ZW5kIGQyIE9OIGRlcC5vYmppZD1kMi5vYmppZCBBTkQgZGVwLnJlZm9iamlk ICE9IGQyLnJlZm9iamlkCisgICAgTEVGVCBKT0lOIHBnX2NsYXNzIHJlZiBP TiByZWYub2lkPWQyLnJlZm9iamlkCisgICAgTEVGVCBKT0lOIHBnX2F0dHJp YnV0ZSBhdHQgT04gZDIucmVmY2xhc3NpZD1hdHQuYXR0cmVsaWQgQU5EIGQy LnJlZm9ianN1YmlkPWF0dC5hdHRudW0KKyAgICB7eyB3aGVyZSB9fSBBTkQK KyAgICBkZXAuY2xhc3NpZD0oU0VMRUNUIG9pZCBGUk9NIHBnX2NsYXNzIFdI RVJFIHJlbG5hbWU9J3BnX2F0dHJkZWYnKSBBTkQKKyAgICBkZXAucmVmb2Jq aWQgTk9UIElOIChTRUxFQ1QgZDMucmVmb2JqaWQgRlJPTSBwZ19kZXBlbmQg ZDMgV0hFUkUgZDMub2JqaWQ9ZDIucmVmb2JqaWQpClwgTm8gbmV3bGluZSBh dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFi bGVzL3RlbXBsYXRlcy9jb2x1bW4vc3FsLzkuMl9wbHVzL2VkaXRfbW9kZV90 eXBlcy5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL2Nv bHVtbi9zcWwvOS4yX3BsdXMvZWRpdF9tb2RlX3R5cGVzLnNxbApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYzExMmM1Ci0tLSAvZGV2 L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy9j b2x1bW4vc3FsLzkuMl9wbHVzL2VkaXRfbW9kZV90eXBlcy5zcWwKQEAgLTAs MCArMSw1IEBACitTRUxFQ1QgdHQub2lkLCBmb3JtYXRfdHlwZSh0dC5vaWQs TlVMTCkgQVMgdHlwbmFtZQorRlJPTSBwZ19jYXN0CisgICAgSk9JTiBwZ190 eXBlIHR0IE9OIHR0Lm9pZD1jYXN0dGFyZ2V0CitXSEVSRSBjYXN0c291cmNl PXt7dHlwZV9pZH19CisgICAgQU5EIGNhc3Rjb250ZXh0IElOICgnaScsICdh JykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL2NvbHVtbi9zcWwvOS4y X3BsdXMvZ2V0X2NvbGxhdGlvbnMuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFi bGVzL3RlbXBsYXRlcy9jb2x1bW4vc3FsLzkuMl9wbHVzL2dldF9jb2xsYXRp b25zLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43 NDE4NzQyCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFi bGVzL3RlbXBsYXRlcy9jb2x1bW4vc3FsLzkuMl9wbHVzL2dldF9jb2xsYXRp b25zLnNxbApAQCAtMCwwICsxLDcgQEAKK1NFTEVDVCAtLW5zcG5hbWUsIGNv bGxuYW1lLAorCUNBU0UgV0hFTiBsZW5ndGgobnNwbmFtZSkgPiAwIEFORCBs ZW5ndGgoY29sbG5hbWUpID4gMCAgVEhFTgorCSAgY29uY2F0KHF1b3RlX2lk ZW50KG5zcG5hbWUpLCAnLicsIHF1b3RlX2lkZW50KGNvbGxuYW1lKSkKKwlF TFNFICcnIEVORCBBUyBjb2xsYXRpb24KK0ZST00gcGdfY29sbGF0aW9uIGMs IHBnX25hbWVzcGFjZSBuCisgICAgV0hFUkUgYy5jb2xsbmFtZXNwYWNlPW4u b2lkCisgICAgT1JERVIgQlkgbnNwbmFtZSwgY29sbG5hbWU7ClwgTm8gbmV3 bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvdGFibGVzL3RlbXBsYXRlcy9jb2x1bW4vc3FsLzkuMl9wbHVzL2dldF9p bmhlcml0ZWRfdGFibGVzLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90 ZW1wbGF0ZXMvY29sdW1uL3NxbC85LjJfcGx1cy9nZXRfaW5oZXJpdGVkX3Rh Ymxlcy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u Mzc5MzRiOAotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3Rh Ymxlcy90ZW1wbGF0ZXMvY29sdW1uL3NxbC85LjJfcGx1cy9nZXRfaW5oZXJp dGVkX3RhYmxlcy5zcWwKQEAgLTAsMCArMSwxMiBAQAorU0VMRUNUIGFycmF5 X3RvX3N0cmluZyhhcnJheV9hZ2coaW5ocmVsbmFtZSksICcsICcpIGluaHJl bG5hbWUsIGF0dHJuYW1lCitGUk9NCisgKFNFTEVDVAorICAgaW5ocGFyZW50 OjpyZWdjbGFzcyBBUyBpbmhyZWxuYW1lLAorICAgYS5hdHRuYW1lIEFTIGF0 dHJuYW1lCisgIEZST00gcGdfaW5oZXJpdHMgaQorICBMRUZUIEpPSU4gcGdf YXR0cmlidXRlIGEgT04KKyAgIChhdHRyZWxpZCA9IGluaHBhcmVudCBBTkQg YXR0bnVtID4gMCkKKyAgV0hFUkUgaW5ocmVsaWQgPSB7e3RpZH19OjpvaWQK KyAgT1JERVIgQlkgaW5oc2Vxbm8KKyApIGEKK0dST1VQIEJZIGF0dHJuYW1l OwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvY29sdW1uL3NxbC85LjJf cGx1cy9nZXRfcGFyZW50LnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90 ZW1wbGF0ZXMvY29sdW1uL3NxbC85LjJfcGx1cy9nZXRfcGFyZW50LnNxbApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZGQ1ZDNjCi0t LSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBs YXRlcy9jb2x1bW4vc3FsLzkuMl9wbHVzL2dldF9wYXJlbnQuc3FsCkBAIC0w LDAgKzEsNSBAQAorU0VMRUNUIG5zcC5uc3BuYW1lIEFTIHNjaGVtYSAscmVs LnJlbG5hbWUgQVMgdGFibGUKK0ZST00gcGdfY2xhc3MgcmVsCisgICAgSk9J TiBwZ19uYW1lc3BhY2UgbnNwCisgICAgT04gcmVsLnJlbG5hbWVzcGFjZSA9 IG5zcC5vaWQ6OmludAorICAgIFdIRVJFIHJlbC5vaWQgPSB7e3RpZH19Ojpp bnQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL2NvbHVtbi9zcWwvOS4y X3BsdXMvZ2V0X3Bvc2l0aW9uLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxl cy90ZW1wbGF0ZXMvY29sdW1uL3NxbC85LjJfcGx1cy9nZXRfcG9zaXRpb24u c3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlYTU3 MjEKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMv dGVtcGxhdGVzL2NvbHVtbi9zcWwvOS4yX3BsdXMvZ2V0X3Bvc2l0aW9uLnNx bApAQCAtMCwwICsxLDQgQEAKK1NFTEVDVCBhdHQuYXR0bnVtCitGUk9NIHBn X2F0dHJpYnV0ZSBhdHQKKyAgICBXSEVSRSBhdHQuYXR0cmVsaWQgPSB7e3Rp ZH19OjpvaWQKKyAgICBBTkQgYXR0LmF0dG5hbWUgPSB7e2RhdGEubmFtZXxx dExpdGVyYWx9fQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVz L3RlbXBsYXRlcy9jb2x1bW4vc3FsLzkuMl9wbHVzL2dldF90eXBlcy5zcWwg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL2NvbHVtbi9zcWwv OS4yX3BsdXMvZ2V0X3R5cGVzLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwLi40NjkwOTZjCi0tLSAvZGV2L251bGwKKysrIGIvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy9jb2x1bW4vc3FsLzkuMl9w bHVzL2dldF90eXBlcy5zcWwKQEAgLTAsMCArMSwxNCBAQAorU0VMRUNUICog RlJPTQorICAgIChTRUxFQ1QgZm9ybWF0X3R5cGUodC5vaWQsTlVMTCkgQVMg dHlwbmFtZSwKKyAgICBDQVNFIFdIRU4gdHlwZWxlbSA+IDAgVEhFTiB0eXBl bGVtIEVMU0UgdC5vaWQgRU5EIEFTIGVsZW1vaWQKKyAgICAsdHlwbGVuLCB0 eXB0eXBlLCB0Lm9pZCwgbnNwbmFtZSwKKyAgICAoU0VMRUNUIENPVU5UKDEp IEZST00gcGdfdHlwZSB0MiBXSEVSRSB0Mi50eXBuYW1lID0gdC50eXBuYW1l KSA+IDEgQVMgaXNkdXAKK0ZST00gcGdfdHlwZSB0CisgICAgSk9JTiBwZ19u YW1lc3BhY2UgbnNwIE9OIHR5cG5hbWVzcGFjZT1uc3Aub2lkCitXSEVSRSAo Tk9UICh0eXBuYW1lID0gJ3Vua25vd24nIEFORCBuc3BuYW1lID0gJ3BnX2Nh dGFsb2cnKSkKKyAgICBBTkQgdHlwaXNkZWZpbmVkIEFORCB0eXB0eXBlIElO ICgnYicsICdjJywgJ2QnLCAnZScsICdyJykKKyAgICBBTkQgTk9UIEVYSVNU UyAoc2VsZWN0IDEgZnJvbSBwZ19jbGFzcyB3aGVyZSByZWxuYW1lc3BhY2U9 dHlwbmFtZXNwYWNlIGFuZCByZWxuYW1lID0gdHlwbmFtZSBhbmQgcmVsa2lu ZCAhPSAnYycpCisgICAgQU5EICh0eXBuYW1lIG5vdCBsaWtlICdfJScgT1Ig Tk9UIEVYSVNUUyAoc2VsZWN0IDEgZnJvbSBwZ19jbGFzcyB3aGVyZSByZWxu YW1lc3BhY2U9dHlwbmFtZXNwYWNlIGFuZCByZWxuYW1lID0gc3Vic3RyaW5n KHR5cG5hbWUgZnJvbSAyKTo6bmFtZSBhbmQgcmVsa2luZCAhPSAnYycpKQor ICAgIEFORCBuc3AubnNwbmFtZSAhPSAnaW5mb3JtYXRpb25fc2NoZW1hJwor ICAgICkgQVMgZHVtbXkKKyAgICBPUkRFUiBCWSBuc3BuYW1lIDw+ICdwZ19j YXRhbG9nJywgbnNwbmFtZSA8PiAncHVibGljJywgbnNwbmFtZSwgMQpcIE5v IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvY29sdW1uL3NxbC85LjJfcGx1cy9p c19yZWZlcmVuY2VkLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1w bGF0ZXMvY29sdW1uL3NxbC85LjJfcGx1cy9pc19yZWZlcmVuY2VkLnNxbApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZDBiZmMzCi0t LSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBs YXRlcy9jb2x1bW4vc3FsLzkuMl9wbHVzL2lzX3JlZmVyZW5jZWQuc3FsCkBA IC0wLDAgKzEsNSBAQAorU0VMRUNUIENPVU5UKDEpCitGUk9NIHBnX2RlcGVu ZCBkZXAKKyAgICBKT0lOIHBnX2NsYXNzIGNsIE9OIGRlcC5jbGFzc2lkPWNs Lm9pZCBBTkQgcmVsbmFtZT0ncGdfcmV3cml0ZScKKyAgICBXSEVSRSByZWZv YmppZD0ge3t0aWR9fTo6b2lkCisgICAgQU5EIHJlZm9ianN1YmlkPSB7e2Ns aWR8cXRMaXRlcmFsfX07CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90 YWJsZXMvdGVtcGxhdGVzL2NvbHVtbi9zcWwvOS4yX3BsdXMvbm9kZXMuc3Fs IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy9jb2x1bW4vc3Fs LzkuMl9wbHVzL25vZGVzLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi43YTE1MzMzCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy9jb2x1bW4vc3FsLzkuMl9wbHVz L25vZGVzLnNxbApAQCAtMCwwICsxLDE4IEBACitTRUxFQ1QgYXR0LmF0dG5h bWUgYXMgbmFtZSwgYXR0LmF0dG51bSBhcyBPSUQsIGZvcm1hdF90eXBlKHR5 Lm9pZCxOVUxMKSBBUyBkYXRhdHlwZQorRlJPTSBwZ19hdHRyaWJ1dGUgYXR0 CisgIEpPSU4gcGdfdHlwZSB0eSBPTiB0eS5vaWQ9YXR0dHlwaWQKKyAgSk9J TiBwZ19uYW1lc3BhY2UgdG4gT04gdG4ub2lkPXR5LnR5cG5hbWVzcGFjZQor ICBKT0lOIHBnX2NsYXNzIGNsIE9OIGNsLm9pZD1hdHQuYXR0cmVsaWQKKyAg Sk9JTiBwZ19uYW1lc3BhY2UgbmEgT04gbmEub2lkPWNsLnJlbG5hbWVzcGFj ZQorICBMRUZUIE9VVEVSIEpPSU4gcGdfdHlwZSBldCBPTiBldC5vaWQ9dHku dHlwZWxlbQorICBMRUZUIE9VVEVSIEpPSU4gcGdfYXR0cmRlZiBkZWYgT04g YWRyZWxpZD1hdHQuYXR0cmVsaWQgQU5EIGFkbnVtPWF0dC5hdHRudW0KKyAg TEVGVCBPVVRFUiBKT0lOIChwZ19kZXBlbmQgSk9JTiBwZ19jbGFzcyBjcyBP TiBvYmppZD1jcy5vaWQgQU5EIGNzLnJlbGtpbmQ9J1MnKSBPTiByZWZvYmpp ZD1hdHQuYXR0cmVsaWQgQU5EIHJlZm9ianN1YmlkPWF0dC5hdHRudW0KKyAg TEVGVCBPVVRFUiBKT0lOIHBnX25hbWVzcGFjZSBucyBPTiBucy5vaWQ9Y3Mu cmVsbmFtZXNwYWNlCisgIExFRlQgT1VURVIgSk9JTiBwZ19pbmRleCBwaSBP TiBwaS5pbmRyZWxpZD1hdHQuYXR0cmVsaWQgQU5EIGluZGlzcHJpbWFyeQor V0hFUkUgYXR0LmF0dHJlbGlkID0ge3t0aWR9fTo6b2lkCisgICAgeyMjIyBU byBzaG93IHN5c3RlbSBvYmplY3RzICMjI30KKyAgICB7JSBpZiBub3Qgc2hv d19zeXNfb2JqZWN0cyAlfQorICAgIEFORCBhdHQuYXR0bnVtID4gMAorICAg IHslIGVuZGlmICV9CisgICAgQU5EIGF0dC5hdHRpc2Ryb3BwZWQgSVMgRkFM U0UKKyAgICBPUkRFUiBCWSBhdHQuYXR0bnVtCmRpZmYgLS1naXQgYS93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL2NvbHVtbi9zcWwvOS4yX3Bs dXMvcHJvcGVydGllcy5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVt cGxhdGVzL2NvbHVtbi9zcWwvOS4yX3BsdXMvcHJvcGVydGllcy5zcWwKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDUzNjkwNgotLS0g L2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0 ZXMvY29sdW1uL3NxbC85LjJfcGx1cy9wcm9wZXJ0aWVzLnNxbApAQCAtMCww ICsxLDQ1IEBACitTRUxFQ1QgYXR0LmF0dG5hbWUgYXMgbmFtZSwgYXR0Lios IGRlZi4qLCBwZ19jYXRhbG9nLnBnX2dldF9leHByKGRlZi5hZGJpbiwgZGVm LmFkcmVsaWQpIEFTIGRlZnZhbCwKKyAgICAgICAgQ0FTRSBXSEVOIGF0dC5h dHRuZGltcyA+IDAgVEhFTiAxIEVMU0UgMCBFTkQgQVMgaXNhcnJheSwKKyAg ICAgICAgZm9ybWF0X3R5cGUodHkub2lkLE5VTEwpIEFTIHR5cG5hbWUsCisg ICAgICAgIGZvcm1hdF90eXBlKHR5Lm9pZCxhdHQuYXR0dHlwbW9kKSBBUyBk aXNwbGF5dHlwbmFtZSwKKyAgICAgICAgdG4ubnNwbmFtZSBhcyB0eXBuc3Bu YW1lLCBldC50eXBuYW1lIGFzIGVsZW10eXBuYW1lLAorICAgICAgICB0eS50 eXBzdG9yYWdlIEFTIGRlZmF1bHRzdG9yYWdlLCBjbC5yZWxuYW1lLCBuYS5u c3BuYW1lLAorICAgICAgICBjb25jYXQocXVvdGVfaWRlbnQobmEubnNwbmFt ZSkgLCcuJywgcXVvdGVfaWRlbnQoY2wucmVsbmFtZSkpIEFTIHBhcmVudF90 YmwsCisJYXR0LmF0dHN0YXR0YXJnZXQsIGRlc2NyaXB0aW9uLCBjcy5yZWxu YW1lIEFTIHNlcm5hbWUsCisJbnMubnNwbmFtZSBBUyBzZXJzY2hlbWEsCisJ KFNFTEVDVCBjb3VudCgxKSBGUk9NIHBnX3R5cGUgdDIgV0hFUkUgdDIudHlw bmFtZT10eS50eXBuYW1lKSA+IDEgQVMgaXNkdXAsCisJaW5ka2V5LCBjb2xs LmNvbGxuYW1lLCBuc3BjLm5zcG5hbWUgYXMgY29sbG5zcG5hbWUgLCBhdHRv cHRpb25zLAorCS0tIFN0YXJ0IHBnQWRtaW40LCBhZGRlZCB0byBzYXZlIHRp bWUgb24gY2xpZW50IHNpZGUgcGFyc2luZworCUNBU0UgV0hFTiBsZW5ndGgo Y29sbC5jb2xsbmFtZSkgPiAwIEFORCBsZW5ndGgobnNwYy5uc3BuYW1lKSA+ IDAgIFRIRU4KKwkgIGNvbmNhdChxdW90ZV9pZGVudChjb2xsLmNvbGxuYW1l KSwnLicscXVvdGVfaWRlbnQobnNwYy5uc3BuYW1lKSkKKwlFTFNFICcnIEVO RCBBUyBjb2xsc3BjbmFtZSwKKwlDQVNFIFdIRU4gc3RycG9zKGZvcm1hdF90 eXBlKHR5Lm9pZCxhdHQuYXR0dHlwbW9kKSwgJy4nKSA+IDAgVEhFTgorCSAg c3BsaXRfcGFydChmb3JtYXRfdHlwZSh0eS5vaWQsYXR0LmF0dHR5cG1vZCks ICcuJywgMikKKwlFTFNFIGZvcm1hdF90eXBlKHR5Lm9pZCxhdHQuYXR0dHlw bW9kKSBFTkQgQVMgY2x0eXBlLAorCS0tIEVuZCBwZ0FkbWluNAorCUVYSVNU UyhTRUxFQ1QgMSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ucmVsaWQ9 YXR0LmF0dHJlbGlkIEFORCBjb250eXBlPSdmJyBBTkQgYXR0LmF0dG51bT1B TlkoY29ua2V5KSkgQXMgaXNfZmssCisJKFNFTEVDVCBhcnJheV9hZ2cocHJv dmlkZXIgfHwgJz0nIHx8IGxhYmVsKSBGUk9NIHBnX3NlY2xhYmVscyBzbDEg V0hFUkUgc2wxLm9iam9pZD1hdHQuYXR0dHlwaWQgQU5EIHNsMS5vYmpzdWJp ZD0wKSBBUyBzZWNsYWJlbHMsCisJKENBU0UgV0hFTiAoYXR0LmF0dG51bSA8 IDEpIFRIRU4gdHJ1ZSBFbFNFIGZhbHNlIEVORCkgQVMgaXNfc3lzX2NvbHVt bgorRlJPTSBwZ19hdHRyaWJ1dGUgYXR0CisgIEpPSU4gcGdfdHlwZSB0eSBP TiB0eS5vaWQ9YXR0dHlwaWQKKyAgSk9JTiBwZ19uYW1lc3BhY2UgdG4gT04g dG4ub2lkPXR5LnR5cG5hbWVzcGFjZQorICBKT0lOIHBnX2NsYXNzIGNsIE9O IGNsLm9pZD1hdHQuYXR0cmVsaWQKKyAgSk9JTiBwZ19uYW1lc3BhY2UgbmEg T04gbmEub2lkPWNsLnJlbG5hbWVzcGFjZQorICBMRUZUIE9VVEVSIEpPSU4g cGdfdHlwZSBldCBPTiBldC5vaWQ9dHkudHlwZWxlbQorICBMRUZUIE9VVEVS IEpPSU4gcGdfYXR0cmRlZiBkZWYgT04gYWRyZWxpZD1hdHQuYXR0cmVsaWQg QU5EIGFkbnVtPWF0dC5hdHRudW0KKyAgTEVGVCBPVVRFUiBKT0lOIHBnX2Rl c2NyaXB0aW9uIGRlcyBPTiAoZGVzLm9iam9pZD1hdHQuYXR0cmVsaWQgQU5E IGRlcy5vYmpzdWJpZD1hdHQuYXR0bnVtIEFORCBkZXMuY2xhc3NvaWQ9J3Bn X2NsYXNzJzo6cmVnY2xhc3MpCisgIExFRlQgT1VURVIgSk9JTiAocGdfZGVw ZW5kIEpPSU4gcGdfY2xhc3MgY3MgT04gb2JqaWQ9Y3Mub2lkIEFORCBjcy5y ZWxraW5kPSdTJykgT04gcmVmb2JqaWQ9YXR0LmF0dHJlbGlkIEFORCByZWZv YmpzdWJpZD1hdHQuYXR0bnVtCisgIExFRlQgT1VURVIgSk9JTiBwZ19uYW1l c3BhY2UgbnMgT04gbnMub2lkPWNzLnJlbG5hbWVzcGFjZQorICBMRUZUIE9V VEVSIEpPSU4gcGdfaW5kZXggcGkgT04gcGkuaW5kcmVsaWQ9YXR0LmF0dHJl bGlkIEFORCBpbmRpc3ByaW1hcnkKKyAgTEVGVCBPVVRFUiBKT0lOIHBnX2Nv bGxhdGlvbiBjb2xsIE9OIGF0dC5hdHRjb2xsYXRpb249Y29sbC5vaWQKKyAg TEVGVCBPVVRFUiBKT0lOIHBnX25hbWVzcGFjZSBuc3BjIE9OIGNvbGwuY29s bG5hbWVzcGFjZT1uc3BjLm9pZAorV0hFUkUgYXR0LmF0dHJlbGlkID0ge3t0 aWR9fTo6b2lkCit7JSBpZiBjbGlkICV9CisgICAgQU5EIGF0dC5hdHRudW0g PSB7e2NsaWR9fTo6aW50Cit7JSBlbmRpZiAlfQoreyMjIyBUbyBzaG93IHN5 c3RlbSBvYmplY3RzICMjI30KK3slIGlmIG5vdCBzaG93X3N5c19vYmplY3Rz ICV9CisgICAgQU5EIGF0dC5hdHRudW0gPiAwCit7JSBlbmRpZiAlfQorICAg IEFORCBhdHQuYXR0aXNkcm9wcGVkIElTIEZBTFNFCisgICAgT1JERVIgQlkg YXR0LmF0dG51bQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVz L3RlbXBsYXRlcy9jb2x1bW4vc3FsLzkuMl9wbHVzL3VwZGF0ZS5zcWwgYi93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL2NvbHVtbi9zcWwvOS4y X3BsdXMvdXBkYXRlLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi5iY2ZiOTBjCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvdGFibGVzL3RlbXBsYXRlcy9jb2x1bW4vc3FsLzkuMl9wbHVzL3Vw ZGF0ZS5zcWwKQEAgLTAsMCArMSwxMDUgQEAKK3slIGltcG9ydCAnY29sdW1u L21hY3Jvcy9zZWN1cml0eS5tYWNyb3MnIGFzIFNFQ0xBQkxFICV9Cit7JSBp bXBvcnQgJ2NvbHVtbi9tYWNyb3MvcHJpdmlsZWdlLm1hY3JvcycgYXMgUFJJ VklMRUdFICV9Cit7JSBpbXBvcnQgJ21hY3Jvcy92YXJpYWJsZS5tYWNyb3Mn IGFzIFZBUklBQkxFICV9Cit7IyMjICBSZW5hbWUgY29sdW1uIG5hbWUgIyMj fQoreyUgaWYgZGF0YS5uYW1lICE9IG9fZGF0YS5uYW1lICV9CitBTFRFUiBU QUJMRSB7e2Nvbm58cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0YS50YWJsZSl9 fQorICAgIFJFTkFNRSB7e2Nvbm58cXRJZGVudChvX2RhdGEubmFtZSl9fSBU TyB7e2Nvbm58cXRJZGVudChkYXRhLm5hbWUpfX07CisKK3slIGVuZGlmICV9 Cit7IyMjICBBbHRlciBjb2x1bW4gdHlwZSBhbmQgY29sbGF0aW9uICMjI30K K3slIGlmIChkYXRhLmNsdHlwZSBhbmQgZGF0YS5jbHR5cGUgIT0gb19kYXRh LmNsdHlwZSkgb3IgKGRhdGEuYXR0bGVuIGFuZCBkYXRhLmF0dGxlbiAhPSBv X2RhdGEuYXR0bGVuKSBvciAoZGF0YS5hdHRwcmVjaXNpb24gYW5kIGRhdGEu YXR0cHJlY2lzaW9uICE9IG9fZGF0YS5hdHRwcmVjaXNpb24pICV9CitBTFRF UiBUQUJMRSB7e2Nvbm58cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0YS50YWJs ZSl9fQorICAgIEFMVEVSIENPTFVNTiB7e2Nvbm58cXRJZGVudChkYXRhLm5h bWUpfX0gVFlQRSB7JSBpZiBkYXRhLmNsdHlwZSAlfXt7ZGF0YS5jbHR5cGV9 fSB7JSBlbHNlICV9e3tvX2RhdGEuY2x0eXBlfX0geyUgZW5kaWYgJX17JSBp ZiBkYXRhLmF0dGxlbiAlfQorKHt7ZGF0YS5hdHRsZW59fXslIGlmIGRhdGEu YXR0cHJlY2lzaW9uJX0sIHt7ZGF0YS5hdHRwcmVjaXNpb259fXslIGVuZGlm ICV9KXslIGVuZGlmICV9eyUgaWYgZGF0YS5oYXNTcXJCcmFja2V0ICV9Citb XXslIGVuZGlmICV9eyUgaWYgZGF0YS5jb2xsc3BjbmFtZSBhbmQgZGF0YS5j b2xsc3BjbmFtZSAhPSBvX2RhdGEuY29sbHNwY25hbWUgJX0KKyBDT0xMQVRF IHt7ZGF0YS5jb2xsc3BjbmFtZX19eyUgZW5kaWYgJX07CisKK3slIGVuZGlm ICV9Cit7IyMjICBBbHRlciBjb2x1bW4gZGVmYXVsdCB2YWx1ZSAjIyN9Cit7 JSBpZiBkYXRhLmRlZnZhbCBhbmQgZGF0YS5kZWZ2YWwgIT0gb19kYXRhLmRl ZnZhbCAlfQorQUxURVIgVEFCTEUge3tjb25ufHF0SWRlbnQoZGF0YS5zY2hl bWEsIGRhdGEudGFibGUpfX0KKyAgICBBTFRFUiBDT0xVTU4ge3tjb25ufHF0 SWRlbnQoZGF0YS5uYW1lKX19IFNFVCBERUZBVUxUIHt7ZGF0YS5kZWZ2YWx9 fTsKKworeyUgZW5kaWYgJX0KK3sjIyMgIEFsdGVyIGNvbHVtbiBub3QgbnVs bCB2YWx1ZSAjIyN9Cit7JSBpZiAnYXR0bm90bnVsbCcgaW4gZGF0YSBhbmQg ZGF0YS5hdHRub3RudWxsICE9IG9fZGF0YS5hdHRub3RudWxsICV9CitBTFRF UiBUQUJMRSB7e2Nvbm58cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0YS50YWJs ZSl9fQorICAgIEFMVEVSIENPTFVNTiB7e2Nvbm58cXRJZGVudChkYXRhLm5h bWUpfX0geyUgaWYgZGF0YS5hdHRub3RudWxsICV9U0VUeyUgZWxzZSAlfURS T1B7JSBlbmRpZiAlfSBOT1QgTlVMTDsKKworeyUgZW5kaWYgJX0KK3sjIyMg IEFsdGVyIGNvbHVtbiBzdGF0aXN0aWNzIHZhbHVlICMjI30KK3slIGlmIGRh dGEuYXR0c3RhdHRhcmdldCBhbmQgZGF0YS5hdHRzdGF0dGFyZ2V0ICE9IG9f ZGF0YS5hdHRzdGF0dGFyZ2V0ICV9CitBTFRFUiBUQUJMRSB7e2Nvbm58cXRJ ZGVudChkYXRhLnNjaGVtYSwgZGF0YS50YWJsZSl9fQorICAgIEFMVEVSIENP TFVNTiB7e2Nvbm58cXRJZGVudChkYXRhLm5hbWUpfX0gU0VUIFNUQVRJU1RJ Q1Mge3tkYXRhLmF0dHN0YXR0YXJnZXR9fTsKKworeyUgZW5kaWYgJX0KK3sj IyMgIEFsdGVyIGNvbHVtbiBzdG9yYWdlIHZhbHVlICMjI30KK3slIGlmIGRh dGEuYXR0c3RvcmFnZSBhbmQgZGF0YS5hdHRzdG9yYWdlICE9IG9fZGF0YS5h dHRzdG9yYWdlICV9CitBTFRFUiBUQUJMRSB7e2Nvbm58cXRJZGVudChkYXRh LnNjaGVtYSwgZGF0YS50YWJsZSl9fQorICAgIEFMVEVSIENPTFVNTiB7e2Nv bm58cXRJZGVudChkYXRhLm5hbWUpfX0gU0VUIFNUT1JBR0UgeyVpZiBkYXRh LmF0dHN0b3JhZ2UgPT0gJ3AnICV9CitQTEFJTnslIGVsaWYgZGF0YS5hdHRz dG9yYWdlID09ICdtJyV9TUFJTnslIGVsaWYgZGF0YS5hdHRzdG9yYWdlID09 ICdlJyV9CitFWFRFUk5BTHslIGVsaWYgZGF0YS5hdHRzdG9yYWdlID09ICd4 JyV9RVhURU5ERUR7JSBlbmRpZiAlfTsKKworeyUgZW5kaWYgJX0KK3slIGlm IGRhdGEuZGVzY3JpcHRpb24gJX0KK0NPTU1FTlQgT04gQ09MVU1OIHt7Y29u bnxxdElkZW50KGRhdGEuc2NoZW1hLCBkYXRhLnRhYmxlLCBkYXRhLm5hbWUp fX0KKyAgICBJUyB7e2RhdGEuZGVzY3JpcHRpb258cXRMaXRlcmFsfX07CisK K3slIGVuZGlmICV9Cit7IyMjIFVwZGF0ZSBjb2x1bW4gdmFyaWFibGVzICMj I30KK3slIGlmICdhdHRvcHRpb25zJyBpbiBkYXRhIGFuZCBkYXRhLmF0dG9w dGlvbnN8bGVuZ3RoID4gMCAlfQoreyUgc2V0IHZhcmlhYmxlcyA9IGRhdGEu YXR0b3B0aW9ucyAlfQoreyUgaWYgJ2RlbGV0ZWQnIGluIHZhcmlhYmxlcyBh bmQgdmFyaWFibGVzLmRlbGV0ZWR8bGVuZ3RoID4gMCAlfQorQUxURVIgVEFC TEUge3tjb25ufHF0SWRlbnQoZGF0YS5zY2hlbWEsIGRhdGEudGFibGUpfX0K KyAgICB7eyBWQVJJQUJMRS5VTlNFVChjb25uLCAnQ09MVU1OJywgZGF0YS5u YW1lLCB2YXJpYWJsZXMuZGVsZXRlZCkgfX0KK3slIGVuZGlmICV9Cit7JSBp ZiAnYWRkZWQnIGluIHZhcmlhYmxlcyBhbmQgdmFyaWFibGVzLmFkZGVkfGxl bmd0aCA+IDAgJX0KK0FMVEVSIFRBQkxFIHt7Y29ubnxxdElkZW50KGRhdGEu c2NoZW1hLCBkYXRhLnRhYmxlKX19CisgICAge3sgVkFSSUFCTEUuU0VUKGNv bm4sICdDT0xVTU4nLCBkYXRhLm5hbWUsIHZhcmlhYmxlcy5hZGRlZCkgfX0K K3slIGVuZGlmICV9Cit7JSBpZiAnY2hhbmdlZCcgaW4gdmFyaWFibGVzIGFu ZCB2YXJpYWJsZXMuY2hhbmdlZHxsZW5ndGggPiAwICV9CitBTFRFUiBUQUJM RSB7e2Nvbm58cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0YS50YWJsZSl9fQor ICAgIHt7IFZBUklBQkxFLlNFVChjb25uLCAnQ09MVU1OJywgZGF0YS5uYW1l LCB2YXJpYWJsZXMuY2hhbmdlZCkgfX0KK3slIGVuZGlmICV9Cit7JSBlbmRp ZiAlfQoreyMjIyBVcGRhdGUgY29sdW1uIHByaXZpbGVnZXMgIyMjfQoreyMg Q2hhbmdlIHRoZSBwcml2aWxlZ2VzICN9Cit7JSBpZiBkYXRhLmF0dGFjbCAl fQoreyUgaWYgJ2RlbGV0ZWQnIGluIGRhdGEuYXR0YWNsICV9Cit7JSBmb3Ig cHJpdiBpbiBkYXRhLmF0dGFjbC5kZWxldGVkICV9Cit7eyBQUklWSUxFR0Uu UkVTRVRBTEwoY29ubiwgZGF0YS5zY2hlbWEsIGRhdGEudGFibGUsIGRhdGEu bmFtZSwgcHJpdi5ncmFudGVlKSB9fQoreyUgZW5kZm9yICV9Cit7JSBlbmRp ZiAlfQoreyUgaWYgJ2NoYW5nZWQnIGluIGRhdGEuYXR0YWNsICV9Cit7JSBm b3IgcHJpdiBpbiBkYXRhLmF0dGFjbC5jaGFuZ2VkICV9Cit7eyBQUklWSUxF R0UuUkVTRVRBTEwoY29ubiwgZGF0YS5zY2hlbWEsIGRhdGEudGFibGUsIGRh dGEubmFtZSwgcHJpdi5ncmFudGVlKSB9fQore3sgUFJJVklMRUdFLkFQUExZ KGNvbm4sIGRhdGEuc2NoZW1hLCBkYXRhLnRhYmxlLCBkYXRhLm5hbWUsIHBy aXYuZ3JhbnRlZSwgcHJpdi53aXRob3V0X2dyYW50LCBwcml2LndpdGhfZ3Jh bnQpIH19Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmICV9Cit7JSBpZiAnYWRk ZWQnIGluIGRhdGEuYXR0YWNsICV9Cit7JSBmb3IgcHJpdiBpbiBkYXRhLmF0 dGFjbC5hZGRlZCAlfQore3sgUFJJVklMRUdFLkFQUExZKGNvbm4sIGRhdGEu c2NoZW1hLCBkYXRhLnRhYmxlLCBkYXRhLm5hbWUsIHByaXYuZ3JhbnRlZSwg cHJpdi53aXRob3V0X2dyYW50LCBwcml2LndpdGhfZ3JhbnQpIH19Cit7JSBl bmRmb3IgJX0KK3slIGVuZGlmICV9Cit7JSBlbmRpZiAlfQoreyMjIyBVcHBk YXRlIHRhYmxlc3BhY2Ugc2VjdXJpdHlsYWJlbCAjIyN9Cit7IyBUaGUgU1FM IGdlbmVyYXRlZCBiZWxvdyB3aWxsIGNoYW5nZSBTZWN1cml0eSBMYWJlbCAj fQoreyUgaWYgZGF0YS5zZWNsYWJlbHMgYW5kIGRhdGEuc2VjbGFiZWxzfGxl bmd0aCA+IDAgJX0KK3slIHNldCBzZWNsYWJlbHMgPSBkYXRhLnNlY2xhYmVs cyAlfQoreyUgaWYgJ2RlbGV0ZWQnIGluIHNlY2xhYmVscyBhbmQgc2VjbGFi ZWxzLmRlbGV0ZWR8bGVuZ3RoID4gMCAlfQoreyUgZm9yIHIgaW4gc2VjbGFi ZWxzLmRlbGV0ZWQgJX0KK3t7IFNFQ0xBQkxFLkRST1AoY29ubiwgJ0NPTFVN TicsIGRhdGEuc2NoZW1hLCBkYXRhLnRhYmxlLCBkYXRhLm5hbWUsIHIucHJv dmlkZXIpIH19Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmICV9Cit7JSBpZiAn YWRkZWQnIGluIHNlY2xhYmVscyBhbmQgc2VjbGFiZWxzLmFkZGVkfGxlbmd0 aCA+IDAgJX0KK3slIGZvciByIGluIHNlY2xhYmVscy5hZGRlZCAlfQore3sg U0VDTEFCTEUuQVBQTFkoY29ubiwgJ0NPTFVNTicsZGF0YS5zY2hlbWEsIGRh dGEudGFibGUsIGRhdGEubmFtZSwgci5wcm92aWRlciwgci5sYWJlbCkgfX0K K3slIGVuZGZvciAlfQoreyUgZW5kaWYgJX0KK3slIGlmICdjaGFuZ2VkJyBp biBzZWNsYWJlbHMgYW5kIHNlY2xhYmVscy5jaGFuZ2VkfGxlbmd0aCA+IDAg JX0KK3slIGZvciByIGluIHNlY2xhYmVscy5jaGFuZ2VkICV9Cit7eyBTRUNM QUJMRS5BUFBMWShjb25uLCAnQ09MVU1OJyxkYXRhLnNjaGVtYSwgZGF0YS50 YWJsZSwgZGF0YS5uYW1lLCByLnByb3ZpZGVyLCByLmxhYmVsKSB9fQoreyUg ZW5kZm9yICV9Cit7JSBlbmRpZiAlfQoreyUgZW5kaWYgJX0KXCBObyBuZXds aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy90YWJsZXMvdGVtcGxhdGVzL2V4Y2x1c2lvbl9jb25zdHJhaW50L3NxbC85 LjFfcGx1cy9hbHRlci5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVt cGxhdGVzL2V4Y2x1c2lvbl9jb25zdHJhaW50L3NxbC85LjFfcGx1cy9hbHRl ci5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGZi MGVhNQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxl cy90ZW1wbGF0ZXMvZXhjbHVzaW9uX2NvbnN0cmFpbnQvc3FsLzkuMV9wbHVz L2FsdGVyLnNxbApAQCAtMCwwICsxLDQgQEAKK3slIGlmIGRhdGEuY29tbWVu dCAlfQorQ09NTUVOVCBPTiBDT05TVFJBSU5UIHt7IGNvbm58cXRJZGVudChk YXRhLm5hbWUpIH19IE9OIHt7IGNvbm58cXRJZGVudChkYXRhLnNjaGVtYSwg ZGF0YS50YWJsZSkgfX0KKyAgICBJUyB7eyBkYXRhLmNvbW1lbnR8cXRMaXRl cmFsIH19OworeyUgZW5kaWYgJX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm aWxlCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxh dGVzL2V4Y2x1c2lvbl9jb25zdHJhaW50L3NxbC85LjFfcGx1cy9iZWdpbi5z cWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL2V4Y2x1c2lv bl9jb25zdHJhaW50L3NxbC85LjFfcGx1cy9iZWdpbi5zcWwKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNThiZmVlMQotLS0gL2Rldi9u dWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvZXhj bHVzaW9uX2NvbnN0cmFpbnQvc3FsLzkuMV9wbHVzL2JlZ2luLnNxbApAQCAt MCwwICsxIEBACitCRUdJTjsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVz L2V4Y2x1c2lvbl9jb25zdHJhaW50L3NxbC85LjFfcGx1cy9jcmVhdGUuc3Fs IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy9leGNsdXNpb25f Y29uc3RyYWludC9zcWwvOS4xX3BsdXMvY3JlYXRlLnNxbApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNmE1M2NkCi0tLSAvZGV2L251 bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy9leGNs dXNpb25fY29uc3RyYWludC9zcWwvOS4xX3BsdXMvY3JlYXRlLnNxbApAQCAt MCwwICsxLDEyIEBACitBTFRFUiBUQUJMRSB7eyBjb25ufHF0SWRlbnQoZGF0 YS5zY2hlbWEsIGRhdGEudGFibGUpIH19CisgICAgQUREeyUgaWYgZGF0YS5u YW1lICV9IENPTlNUUkFJTlQge3sgY29ubnxxdElkZW50KGRhdGEubmFtZSkg fX17JSBlbmRpZiV9IEVYQ0xVREUgeyUgaWYgZGF0YS5hbW5hbWUgYW5kIGRh dGEuYW1uYW1lICE9ICcnICV9VVNJTkcge3tkYXRhLmFtbmFtZX19eyUgZW5k aWYgJX0gKAorICAgIHslIGZvciBjb2wgaW4gZGF0YS5jb2x1bW5zICV9eyUg aWYgbG9vcC5pbmRleCAhPSAxICV9LAorICAgIHslIGVuZGlmICV9e3sgY29u bnxxdElkZW50KGNvbC5jb2x1bW4pfX0geyUgaWYgY29sLm9wZXJfY2xhc3Mg YW5kIGNvbC5vcGVyX2NsYXNzICE9ICcnICV9e3tjb2wub3Blcl9jbGFzc319 IHslIGVuZGlmJX17JSBpZiBjb2wub3JkZXIgJX1BU0N7JSBlbHNlICV9REVT Q3slIGVuZGlmICV9IE5VTExTIHslIGlmIGNvbC5udWxsc19vcmRlciAlfUZJ UlNUeyUgZWxzZSAlfUxBU1R7JSBlbmRpZiAlfSBXSVRIIHt7Y29sLm9wZXJh dG9yfX17JSBlbmRmb3IgJX0peyUgaWYgZGF0YS5maWxsZmFjdG9yICV9Cisg ICAgV0lUSCAoRklMTEZBQ1RPUj17e2RhdGEuZmlsbGZhY3Rvcn19KXslIGVu ZGlmICV9eyUgaWYgZGF0YS5zcGNuYW1lIGFuZCBkYXRhLnNwY25hbWUgIT0g InBnX2RlZmF1bHQiICV9CisKKyAgICBVU0lORyBJTkRFWCBUQUJMRVNQQUNF IHt7IGNvbm58cXRJZGVudChkYXRhLnNwY25hbWUpIH19eyUgZW5kaWYgJX0K K3slIGlmIGRhdGEuY29uZGVmZXJyYWJsZSAlfQorCisgICAgREVGRVJSQUJM RXslIGlmIGRhdGEuY29uZGVmZXJyZWQgJX0KKyBJTklUSUFMTFkgREVGRVJS RUR7JSBlbmRpZiV9Cit7JSBlbmRpZiV9eyUgaWYgZGF0YS5jb25zdHJhaW50 ICV9IFdIRVJFICh7e2RhdGEuY29uc3RyYWludH19KXslIGVuZGlmJX07Clwg Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy9leGNsdXNpb25fY29uc3RyYWlu dC9zcWwvOS4xX3BsdXMvZGVsZXRlLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3Rh Ymxlcy90ZW1wbGF0ZXMvZXhjbHVzaW9uX2NvbnN0cmFpbnQvc3FsLzkuMV9w bHVzL2RlbGV0ZS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMC4uMjA5Njc5NQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL3RhYmxlcy90ZW1wbGF0ZXMvZXhjbHVzaW9uX2NvbnN0cmFpbnQvc3Fs LzkuMV9wbHVzL2RlbGV0ZS5zcWwKQEAgLTAsMCArMSwzIEBACit7JSBpZiBk YXRhICV9CitBTFRFUiBUQUJMRSB7eyBjb25ufHF0SWRlbnQoZGF0YS5zY2hl bWEsIGRhdGEudGFibGUpIH19IERST1AgQ09OU1RSQUlOVCB7eyBjb25ufHF0 SWRlbnQoZGF0YS5uYW1lKSB9fXslIGlmIGNhc2NhZGUlfSBDQVNDQURFeyUg ZW5kaWYgJX07Cit7JSBlbmRpZiAlfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m IGZpbGUKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1w bGF0ZXMvZXhjbHVzaW9uX2NvbnN0cmFpbnQvc3FsLzkuMV9wbHVzL2VuZC5z cWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL2V4Y2x1c2lv bl9jb25zdHJhaW50L3NxbC85LjFfcGx1cy9lbmQuc3FsCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyZDA5ZDUKLS0tIC9kZXYvbnVs bAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL2V4Y2x1 c2lvbl9jb25zdHJhaW50L3NxbC85LjFfcGx1cy9lbmQuc3FsCkBAIC0wLDAg KzEgQEAKK0VORDsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg LS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL2V4Y2x1 c2lvbl9jb25zdHJhaW50L3NxbC85LjFfcGx1cy9nZXRfYWNjZXNzX21ldGhv ZHMuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy9leGNs dXNpb25fY29uc3RyYWludC9zcWwvOS4xX3BsdXMvZ2V0X2FjY2Vzc19tZXRo b2RzLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41 ZDc0MDU3Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFi bGVzL3RlbXBsYXRlcy9leGNsdXNpb25fY29uc3RyYWludC9zcWwvOS4xX3Bs dXMvZ2V0X2FjY2Vzc19tZXRob2RzLnNxbApAQCAtMCwwICsxLDYgQEAKK1NF TEVDVCBhbW5hbWUKK0ZST00gcGdfYW0KK1dIRVJFIEVYSVNUUyAoU0VMRUNU IDEKKyAgICAgICAgICAgICAgRlJPTSBwZ19wcm9jCisgICAgICAgICAgICAg IFdIRVJFIG9pZD1hbWdldHR1cGxlKQorT1JERVIgQlkgYW1uYW1lOwpcIE5v IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvZXhjbHVzaW9uX2NvbnN0cmFpbnQv c3FsLzkuMV9wbHVzL2dldF9jb25zdHJhaW50X2NvbHMuc3FsIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy9leGNsdXNpb25fY29uc3RyYWlu dC9zcWwvOS4xX3BsdXMvZ2V0X2NvbnN0cmFpbnRfY29scy5zcWwKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2MxYTkwMgotLS0gL2Rl di9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMv ZXhjbHVzaW9uX2NvbnN0cmFpbnQvc3FsLzkuMV9wbHVzL2dldF9jb25zdHJh aW50X2NvbHMuc3FsCkBAIC0wLDAgKzEsMjIgQEAKK3slIGZvciBuIGluIHJh bmdlKGNvbGNudHxpbnQpICV9Cit7JSBpZiBsb29wLmluZGV4ICE9IDEgJX0K K1VOSU9OCit7JSBlbmRpZiAlfQorU0VMRUNUCisgIGkuaW5kb3B0aW9uW3t7 bG9vcC5pbmRleCAtMX19XSBBUyBvcHRpb25zLAorICBwZ19nZXRfaW5kZXhk ZWYoaS5pbmRleHJlbGlkLCB7e2xvb3AuaW5kZXh9fSwgdHJ1ZSkgQVMgY29s ZGVmLAorICBvcC5vcHJuYW1lLAorICBDQVNFIFdIRU4gKG8ub3BjZGVmYXVs dCA9IEZBTFNFKSBUSEVOIG8ub3BjbmFtZSBFTFNFIG51bGwgRU5EIEFTIG9w Y25hbWUKKywKKyAgY29sbC5jb2xsbmFtZSwKKyAgbnNwYy5uc3BuYW1lIGFz IGNvbGxuc3BuYW1lLAorICBmb3JtYXRfdHlwZSh0eS5vaWQsTlVMTCkgQVMg Y29sX3R5cGUKK0ZST00gcGdfaW5kZXggaQorSk9JTiBwZ19hdHRyaWJ1dGUg YSBPTiAoYS5hdHRyZWxpZCA9IGkuaW5kZXhyZWxpZCBBTkQgYXR0bnVtID0g e3tsb29wLmluZGV4fX0pCitKT0lOIHBnX3R5cGUgdHkgT04gdHkub2lkPWEu YXR0dHlwaWQKK0xFRlQgT1VURVIgSk9JTiBwZ19vcGNsYXNzIG8gT04gKG8u b2lkID0gaS5pbmRjbGFzc1t7e2xvb3AuaW5kZXggLTF9fV0pCitMRUZUIE9V VEVSIEpPSU4gcGdfY29uc3RyYWludCBjIE9OIChjLmNvbmluZGlkID0gaS5p bmRleHJlbGlkKSBMRUZUIE9VVEVSIEpPSU4gcGdfb3BlcmF0b3Igb3AgT04g KG9wLm9pZCA9IGMuY29uZXhjbG9wW3t7bG9vcC5pbmRleH19XSkKK0xFRlQg T1VURVIgSk9JTiBwZ19jb2xsYXRpb24gY29sbCBPTiBhLmF0dGNvbGxhdGlv bj1jb2xsLm9pZAorTEVGVCBPVVRFUiBKT0lOIHBnX25hbWVzcGFjZSBuc3Bj IE9OIGNvbGwuY29sbG5hbWVzcGFjZT1uc3BjLm9pZAorV0hFUkUgaS5pbmRl eHJlbGlkID0ge3tjaWR9fTo6b2lkCit7JSBlbmRmb3IgJX0KXCBObyBuZXds aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy90YWJsZXMvdGVtcGxhdGVzL2V4Y2x1c2lvbl9jb25zdHJhaW50L3NxbC85 LjFfcGx1cy9nZXRfbmFtZS5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMv dGVtcGxhdGVzL2V4Y2x1c2lvbl9jb25zdHJhaW50L3NxbC85LjFfcGx1cy9n ZXRfbmFtZS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MC4uN2FhYTUyMgotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L3RhYmxlcy90ZW1wbGF0ZXMvZXhjbHVzaW9uX2NvbnN0cmFpbnQvc3FsLzku MV9wbHVzL2dldF9uYW1lLnNxbApAQCAtMCwwICsxLDMgQEAKK1NFTEVDVCBj b25uYW1lIGFzIG5hbWUKK0ZST00gcGdfY29uc3RyYWludCBjdAorV0hFUkUg Y3QuY29uaW5kaWQgPSB7e2NpZH19OjpvaWQKXCBObyBuZXdsaW5lIGF0IGVu ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMv dGVtcGxhdGVzL2V4Y2x1c2lvbl9jb25zdHJhaW50L3NxbC85LjFfcGx1cy9n ZXRfb2lkLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMv ZXhjbHVzaW9uX2NvbnN0cmFpbnQvc3FsLzkuMV9wbHVzL2dldF9vaWQuc3Fs Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE2OGUxM2IK LS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVt cGxhdGVzL2V4Y2x1c2lvbl9jb25zdHJhaW50L3NxbC85LjFfcGx1cy9nZXRf b2lkLnNxbApAQCAtMCwwICsxLDQgQEAKK1NFTEVDVCBjdC5vaWQKK0ZST00g cGdfY29uc3RyYWludCBjdAorV0hFUkUgY29udHlwZT0neCcgQU5ECitjdC5j b25uYW1lID0ge3sgbmFtZXxxdExpdGVyYWwgfX07ClwgTm8gbmV3bGluZSBh dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFi bGVzL3RlbXBsYXRlcy9leGNsdXNpb25fY29uc3RyYWludC9zcWwvOS4xX3Bs dXMvZ2V0X29pZF93aXRoX3RyYW5zYWN0aW9uLnNxbCBiL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL3RhYmxlcy90ZW1wbGF0ZXMvZXhjbHVzaW9uX2NvbnN0cmFpbnQvc3Fs LzkuMV9wbHVzL2dldF9vaWRfd2l0aF90cmFuc2FjdGlvbi5zcWwKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWJlNjM2YQotLS0gL2Rl di9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMv ZXhjbHVzaW9uX2NvbnN0cmFpbnQvc3FsLzkuMV9wbHVzL2dldF9vaWRfd2l0 aF90cmFuc2FjdGlvbi5zcWwKQEAgLTAsMCArMSw2IEBACitTRUxFQ1QgY3Qu b2lkLAorICAgIGN0LmNvbm5hbWUgYXMgbmFtZSwKKyAgICBOT1QgY29udmFs aWRhdGVkIGFzIGNvbnZhbGlkYXRlZAorRlJPTSBwZ19jb25zdHJhaW50IGN0 CitXSEVSRSBjb250eXBlPSdmJyBBTkQKKyAgICBjb25yZWxpZCA9IHt7dGlk fX06Om9pZCBMSU1JVCAxOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMv ZXhjbHVzaW9uX2NvbnN0cmFpbnQvc3FsLzkuMV9wbHVzL2dldF9vcGVyX2Ns YXNzLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvZXhj bHVzaW9uX2NvbnN0cmFpbnQvc3FsLzkuMV9wbHVzL2dldF9vcGVyX2NsYXNz LnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNjcz OWQwCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVz L3RlbXBsYXRlcy9leGNsdXNpb25fY29uc3RyYWludC9zcWwvOS4xX3BsdXMv Z2V0X29wZXJfY2xhc3Muc3FsCkBAIC0wLDAgKzEsNyBAQAorU0VMRUNUIG9w Y25hbWUKK0ZST00gcGdfb3BjbGFzcyBvcGMsCitwZ19hbSBhbQorV0hFUkUg b3BjbWV0aG9kPWFtLm9pZCBBTkQKKyAgICAgIGFtLmFtbmFtZSA9e3tpbmRl eHR5cGV8cXRMaXRlcmFsfX0gQU5ECisgICAgICBOT1Qgb3BjZGVmYXVsdAor T1JERVIgQlkgMQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt LWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvZXhjbHVz aW9uX2NvbnN0cmFpbnQvc3FsLzkuMV9wbHVzL2dldF9vcGVyYXRvci5zcWwg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL2V4Y2x1c2lvbl9j b25zdHJhaW50L3NxbC85LjFfcGx1cy9nZXRfb3BlcmF0b3Iuc3FsCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk5NzhiOTYKLS0tIC9k ZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVz L2V4Y2x1c2lvbl9jb25zdHJhaW50L3NxbC85LjFfcGx1cy9nZXRfb3BlcmF0 b3Iuc3FsCkBAIC0wLDAgKzEsMjkgQEAKK1NFTEVDVCBESVNUSU5DVCBvcC5v cHJuYW1lIGFzIG9wcm5hbWUKK0ZST00gcGdfb3BlcmF0b3Igb3AsCisoIFNF TEVDVCBvaWQKKyAgRlJPTSAoU0VMRUNUIGZvcm1hdF90eXBlKHQub2lkLE5V TEwpIEFTIHR5cG5hbWUsCisgICAgICB0Lm9pZCBhcyBvaWQKKyAgICAgIEZS T00gcGdfdHlwZSB0CisgICAgICBKT0lOIHBnX25hbWVzcGFjZSBuc3AgT04g dHlwbmFtZXNwYWNlPW5zcC5vaWQKKyAgICAgIFdIRVJFIChOT1QgKHR5cG5h bWUgPSAndW5rbm93bicgQU5EIG5zcG5hbWUgPSAncGdfY2F0YWxvZycpKSBB TkQKKyAgICAgIHR5cGlzZGVmaW5lZCBBTkQKKyAgICAgIHR5cHR5cGUgSU4g KCdiJywgJ2MnLCAnZCcsICdlJywgJ3InKSBBTkQKKyAgICAgIE5PVCBFWElT VFMgKFNFTEVDVCAxCisgICAgICAgICAgICAgICAgICBGUk9NIHBnX2NsYXNz CisgICAgICAgICAgICAgICAgICBXSEVSRSByZWxuYW1lc3BhY2U9dHlwbmFt ZXNwYWNlIEFORAorICAgICAgICAgICAgICAgICAgcmVsbmFtZSA9IHR5cG5h bWUgQU5ECisgICAgICAgICAgICAgICAgICByZWxraW5kICE9ICdjJykgQU5E CisgICAgICAodHlwbmFtZSBOT1QgTElLRSAnXyUnIE9SCisgICAgICBOT1Qg RVhJU1RTIChTRUxFQ1QgMQorICAgICAgICAgICAgICAgICAgRlJPTSBwZ19j bGFzcworICAgICAgICAgICAgICAgICAgV0hFUkUgcmVsbmFtZXNwYWNlPXR5 cG5hbWVzcGFjZSBBTkQKKyAgICAgICAgICAgICAgICAgICAgcmVsbmFtZSA9 IFNVQlNUUklORyh0eXBuYW1lIEZST00gMik6Om5hbWUgQU5ECisgICAgICAg ICAgICAgICAgICAgIHJlbGtpbmQgIT0gJ2MnKSkKKyAgICB7JSBpZiBub3Qg c2hvd19zeXNvYmogJX0KKyAgICAgIEFORCBuc3AubnNwbmFtZSAhPSAnaW5m b3JtYXRpb25fc2NoZW1hJworICAgIHslIGVuZGlmICV9CisgICAgICBVTklP TiBTRUxFQ1QgJ2JpZ3NlcmlhbCcsIDAKKyAgICAgIFVOSU9OIFNFTEVDVCAn c2VyaWFsJywgMCkgdDEKKyAgICAgIFdIRVJFIHR5cG5hbWUgPSB7e3R5cGV8 cXRMaXRlcmFsfX0pIEFTIHR5cGVzCitXSEVSRSBvcHJjb20gPiAwIEFORAor ICAgICAgKG9wLm9wcmxlZnQ9dHlwZXMub2lkIE9SIG9wLm9wcnJpZ2h0PXR5 cGVzLm9pZCkKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n aXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL2V4Y2x1c2lv bl9jb25zdHJhaW50L3NxbC85LjFfcGx1cy9nZXRfcGFyZW50LnNxbCBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvZXhjbHVzaW9uX2NvbnN0 cmFpbnQvc3FsLzkuMV9wbHVzL2dldF9wYXJlbnQuc3FsCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE2NTI4NTcKLS0tIC9kZXYvbnVs bAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL2V4Y2x1 c2lvbl9jb25zdHJhaW50L3NxbC85LjFfcGx1cy9nZXRfcGFyZW50LnNxbApA QCAtMCwwICsxLDcgQEAKK1NFTEVDVCBuc3AubnNwbmFtZSBBUyBzY2hlbWEs CisgICAgcmVsLnJlbG5hbWUgQVMgdGFibGUKK0ZST00KKyAgICBwZ19jbGFz cyByZWwKK0pPSU4gcGdfbmFtZXNwYWNlIG5zcAorT04gcmVsLnJlbG5hbWVz cGFjZSA9IG5zcC5vaWQ6OmludAorV0hFUkUgcmVsLm9pZCA9IHt7dGlkfX06 OmludApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvZXhjbHVzaW9uX2Nv bnN0cmFpbnQvc3FsLzkuMV9wbHVzL25vZGVzLnNxbCBiL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL3RhYmxlcy90ZW1wbGF0ZXMvZXhjbHVzaW9uX2NvbnN0cmFpbnQvc3Fs LzkuMV9wbHVzL25vZGVzLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi5jNjdjNDBkCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy9leGNsdXNpb25fY29uc3RyYWlu dC9zcWwvOS4xX3BsdXMvbm9kZXMuc3FsCkBAIC0wLDAgKzEsNyBAQAorU0VM RUNUIGNvbmluZGlkIGFzIG9pZCwKKyAgICBjb25uYW1lIGFzIG5hbWUsCisg ICAgTk9UIGNvbnZhbGlkYXRlZCBhcyBjb252YWxpZGF0ZWQKK0ZST00gcGdf Y29uc3RyYWludCBjdAorV0hFUkUgY29udHlwZT0neCcgQU5ECisgICAgY29u cmVsaWQgPSB7e3RpZH19OjpvaWQKK09SREVSIEJZIGNvbm5hbWUKXCBObyBu ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy90YWJsZXMvdGVtcGxhdGVzL2V4Y2x1c2lvbl9jb25zdHJhaW50L3Nx bC85LjFfcGx1cy9wcm9wZXJ0aWVzLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3Rh Ymxlcy90ZW1wbGF0ZXMvZXhjbHVzaW9uX2NvbnN0cmFpbnQvc3FsLzkuMV9w bHVzL3Byb3BlcnRpZXMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLjNhMWM4OTcKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL2V4Y2x1c2lvbl9jb25zdHJhaW50 L3NxbC85LjFfcGx1cy9wcm9wZXJ0aWVzLnNxbApAQCAtMCwwICsxLDMwIEBA CitTRUxFQ1QgY2xzLm9pZCwKKyAgICBjbHMucmVsbmFtZSBhcyBuYW1lLAor ICAgIGluZG5hdHRzLAorICAgIGFtbmFtZSwKKyAgICBDT0FMRVNDRShzcGNu YW1lLCAncGdfZGVmYXVsdCcpIGFzIHNwY25hbWUsCisgICAgQ0FTRSBjb250 eXBlCisgICAgICAgIFdIRU4gJ3AnIFRIRU4gZGVzcC5kZXNjcmlwdGlvbgor ICAgICAgICBXSEVOICd1JyBUSEVOIGRlc3AuZGVzY3JpcHRpb24KKyAgICAg ICAgV0hFTiAneCcgVEhFTiBkZXNwLmRlc2NyaXB0aW9uCisgICAgICAgIEVM U0UgZGVzLmRlc2NyaXB0aW9uCisgICAgRU5EIEFTIGNvbW1lbnQsCisgICAg Y29uZGVmZXJyYWJsZSwKKyAgICBjb25kZWZlcnJlZCwKKyAgICBzdWJzdHJp bmcoYXJyYXlfdG9fc3RyaW5nKGNscy5yZWxvcHRpb25zLCAnLCcpIGZyb20g J2ZpbGxmYWN0b3I9KFswLTldKiknKSBBUyBmaWxsZmFjdG9yCitGUk9NIHBn X2luZGV4IGlkeAorSk9JTiBwZ19jbGFzcyBjbHMgT04gY2xzLm9pZD1pbmRl eHJlbGlkCitKT0lOIHBnX2NsYXNzIHRhYiBPTiB0YWIub2lkPWluZHJlbGlk CitMRUZUIE9VVEVSIEpPSU4gcGdfdGFibGVzcGFjZSB0YSBvbiB0YS5vaWQ9 Y2xzLnJlbHRhYmxlc3BhY2UKK0pPSU4gcGdfbmFtZXNwYWNlIG4gT04gbi5v aWQ9dGFiLnJlbG5hbWVzcGFjZQorSk9JTiBwZ19hbSBhbSBPTiBhbS5vaWQ9 Y2xzLnJlbGFtCitMRUZUIEpPSU4gcGdfZGVwZW5kIGRlcCBPTiAoZGVwLmNs YXNzaWQgPSBjbHMudGFibGVvaWQgQU5EIGRlcC5vYmppZCA9IGNscy5vaWQg QU5EIGRlcC5yZWZvYmpzdWJpZCA9ICcwJyBBTkQgZGVwLnJlZmNsYXNzaWQ9 KFNFTEVDVCBvaWQgRlJPTSBwZ19jbGFzcyBXSEVSRSByZWxuYW1lPSdwZ19j b25zdHJhaW50JykgQU5EIGRlcC5kZXB0eXBlPSdpJykKK0xFRlQgT1VURVIg Sk9JTiBwZ19jb25zdHJhaW50IGNvbiBPTiAoY29uLnRhYmxlb2lkID0gZGVw LnJlZmNsYXNzaWQgQU5EIGNvbi5vaWQgPSBkZXAucmVmb2JqaWQpCitMRUZU IE9VVEVSIEpPSU4gcGdfZGVzY3JpcHRpb24gZGVzIE9OIChkZXMub2Jqb2lk PWNscy5vaWQgQU5EIGRlcy5jbGFzc29pZD0ncGdfY2xhc3MnOjpyZWdjbGFz cykKK0xFRlQgT1VURVIgSk9JTiBwZ19kZXNjcmlwdGlvbiBkZXNwIE9OIChk ZXNwLm9iam9pZD1jb24ub2lkIEFORCBkZXNwLm9ianN1YmlkID0gMCBBTkQg ZGVzcC5jbGFzc29pZD0ncGdfY29uc3RyYWludCc6OnJlZ2NsYXNzKQorV0hF UkUgaW5kcmVsaWQgPSB7e3RpZH19OjpvaWQKK3slIGlmIGNpZCAlfQorQU5E IGNscy5vaWQgPSB7e2NpZH19OjpvaWQKK3slIGVuZGlmICV9CitBTkQgY29u dHlwZT0neCcKK09SREVSIEJZIGNscy5yZWxuYW1lClwgTm8gbmV3bGluZSBh dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFi bGVzL3RlbXBsYXRlcy9leGNsdXNpb25fY29uc3RyYWludC9zcWwvOS4xX3Bs dXMvdXBkYXRlLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0 ZXMvZXhjbHVzaW9uX2NvbnN0cmFpbnQvc3FsLzkuMV9wbHVzL3VwZGF0ZS5z cWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGQ3MGYy MQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90 ZW1wbGF0ZXMvZXhjbHVzaW9uX2NvbnN0cmFpbnQvc3FsLzkuMV9wbHVzL3Vw ZGF0ZS5zcWwKQEAgLTAsMCArMSwyMiBAQAoreyMjIyBTUUwgdG8gdXBkYXRl IGV4Y2x1c2lvbiBjb25zdHJhaW50IG9iamVjdCAjIyN9Cit7JSBpZiBkYXRh ICV9Cit7IyA9PT09IFRvIHVwZGF0ZSBleGNsdXNpb24gY29uc3RyYWludCBu YW1lID09PT0gI30KK3slIGlmIGRhdGEubmFtZSAhPSBvX2RhdGEubmFtZSAl fQorQUxURVIgVEFCTEUge3sgY29ubnxxdElkZW50KGRhdGEuc2NoZW1hLCBk YXRhLnRhYmxlKSB9fQorICAgIFJFTkFNRSBDT05TVFJBSU5UIHt7IGNvbm58 cXRJZGVudChvX2RhdGEubmFtZSkgfX0gVE8ge3sgY29ubnxxdElkZW50KGRh dGEubmFtZSkgfX07Cit7JSBlbmRpZiAlfQoreyMgPT09PSBUbyB1cGRhdGUg ZXhjbHVzaW9uIGNvbnN0cmFpbnQgdGFibGVzcGFjZSA9PT09ICN9Cit7JSBp ZiBkYXRhLnNwY25hbWUgYW5kIGRhdGEuc3BjbmFtZSAhPSBvX2RhdGEuc3Bj bmFtZSAlfQorQUxURVIgSU5ERVgge3sgY29ubnxxdElkZW50KGRhdGEuc2No ZW1hLCBkYXRhLm5hbWUpIH19CisgICAgU0VUIFRBQkxFU1BBQ0Uge3sgY29u bnxxdElkZW50KGRhdGEuc3BjbmFtZSkgfX07Cit7JSBlbmRpZiAlfQoreyUg aWYgZGF0YS5maWxsZmFjdG9yIGFuZCBkYXRhLmZpbGxmYWN0b3IgIT0gb19k YXRhLmZpbGxmYWN0b3IgJX0KK0FMVEVSIElOREVYIHt7IGNvbm58cXRJZGVu dChkYXRhLnNjaGVtYSwgZGF0YS5uYW1lKSB9fQorICAgIFNFVCAoRklMTEZB Q1RPUj17eyBkYXRhLmZpbGxmYWN0b3IgfX0pOworeyUgZW5kaWYgJX0KK3sj ID09PT0gVG8gdXBkYXRlIGV4Y2x1c2lvbiBjb25zdHJhaW50IGNvbW1lbnRz ID09PT0gI30KK3slIGlmIGRhdGEuY29tbWVudCBpcyBkZWZpbmVkIGFuZCBk YXRhLmNvbW1lbnQgIT0gb19kYXRhLmNvbW1lbnQgJX0KK0NPTU1FTlQgT04g Q09OU1RSQUlOVCB7eyBjb25ufHF0SWRlbnQoZGF0YS5uYW1lKSB9fSBPTiB7 eyBjb25ufHF0SWRlbnQoZGF0YS5zY2hlbWEsIGRhdGEudGFibGUpIH19Cisg ICAgSVMge3sgZGF0YS5jb21tZW50fHF0TGl0ZXJhbCB9fTsKK3slIGVuZGlm ICV9Cit7JSBlbmRpZiAlfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMv ZXhjbHVzaW9uX2NvbnN0cmFpbnQvc3FsLzkuMl9wbHVzL2FsdGVyLnNxbCBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvZXhjbHVzaW9uX2Nv bnN0cmFpbnQvc3FsLzkuMl9wbHVzL2FsdGVyLnNxbApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZmIwZWE1Ci0tLSAvZGV2L251bGwK KysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy9leGNsdXNp b25fY29uc3RyYWludC9zcWwvOS4yX3BsdXMvYWx0ZXIuc3FsCkBAIC0wLDAg KzEsNCBAQAoreyUgaWYgZGF0YS5jb21tZW50ICV9CitDT01NRU5UIE9OIENP TlNUUkFJTlQge3sgY29ubnxxdElkZW50KGRhdGEubmFtZSkgfX0gT04ge3sg Y29ubnxxdElkZW50KGRhdGEuc2NoZW1hLCBkYXRhLnRhYmxlKSB9fQorICAg IElTIHt7IGRhdGEuY29tbWVudHxxdExpdGVyYWwgfX07Cit7JSBlbmRpZiAl fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvZXhjbHVzaW9uX2NvbnN0 cmFpbnQvc3FsLzkuMl9wbHVzL2JlZ2luLnNxbCBiL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L3RhYmxlcy90ZW1wbGF0ZXMvZXhjbHVzaW9uX2NvbnN0cmFpbnQvc3FsLzku Ml9wbHVzL2JlZ2luLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi41OGJmZWUxCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvdGFibGVzL3RlbXBsYXRlcy9leGNsdXNpb25fY29uc3RyYWludC9z cWwvOS4yX3BsdXMvYmVnaW4uc3FsCkBAIC0wLDAgKzEgQEAKK0JFR0lOOwpc IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvZXhjbHVzaW9uX2NvbnN0cmFp bnQvc3FsLzkuMl9wbHVzL2NyZWF0ZS5zcWwgYi93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90 YWJsZXMvdGVtcGxhdGVzL2V4Y2x1c2lvbl9jb25zdHJhaW50L3NxbC85LjJf cGx1cy9jcmVhdGUuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAuLmM2YTUzY2QKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy90YWJsZXMvdGVtcGxhdGVzL2V4Y2x1c2lvbl9jb25zdHJhaW50L3Nx bC85LjJfcGx1cy9jcmVhdGUuc3FsCkBAIC0wLDAgKzEsMTIgQEAKK0FMVEVS IFRBQkxFIHt7IGNvbm58cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0YS50YWJs ZSkgfX0KKyAgICBBRER7JSBpZiBkYXRhLm5hbWUgJX0gQ09OU1RSQUlOVCB7 eyBjb25ufHF0SWRlbnQoZGF0YS5uYW1lKSB9fXslIGVuZGlmJX0gRVhDTFVE RSB7JSBpZiBkYXRhLmFtbmFtZSBhbmQgZGF0YS5hbW5hbWUgIT0gJycgJX1V U0lORyB7e2RhdGEuYW1uYW1lfX17JSBlbmRpZiAlfSAoCisgICAgeyUgZm9y IGNvbCBpbiBkYXRhLmNvbHVtbnMgJX17JSBpZiBsb29wLmluZGV4ICE9IDEg JX0sCisgICAgeyUgZW5kaWYgJX17eyBjb25ufHF0SWRlbnQoY29sLmNvbHVt bil9fSB7JSBpZiBjb2wub3Blcl9jbGFzcyBhbmQgY29sLm9wZXJfY2xhc3Mg IT0gJycgJX17e2NvbC5vcGVyX2NsYXNzfX0geyUgZW5kaWYlfXslIGlmIGNv bC5vcmRlciAlfUFTQ3slIGVsc2UgJX1ERVNDeyUgZW5kaWYgJX0gTlVMTFMg eyUgaWYgY29sLm51bGxzX29yZGVyICV9RklSU1R7JSBlbHNlICV9TEFTVHsl IGVuZGlmICV9IFdJVEgge3tjb2wub3BlcmF0b3J9fXslIGVuZGZvciAlfSl7 JSBpZiBkYXRhLmZpbGxmYWN0b3IgJX0KKyAgICBXSVRIIChGSUxMRkFDVE9S PXt7ZGF0YS5maWxsZmFjdG9yfX0peyUgZW5kaWYgJX17JSBpZiBkYXRhLnNw Y25hbWUgYW5kIGRhdGEuc3BjbmFtZSAhPSAicGdfZGVmYXVsdCIgJX0KKwor ICAgIFVTSU5HIElOREVYIFRBQkxFU1BBQ0Uge3sgY29ubnxxdElkZW50KGRh dGEuc3BjbmFtZSkgfX17JSBlbmRpZiAlfQoreyUgaWYgZGF0YS5jb25kZWZl cnJhYmxlICV9CisKKyAgICBERUZFUlJBQkxFeyUgaWYgZGF0YS5jb25kZWZl cnJlZCAlfQorIElOSVRJQUxMWSBERUZFUlJFRHslIGVuZGlmJX0KK3slIGVu ZGlmJX17JSBpZiBkYXRhLmNvbnN0cmFpbnQgJX0gV0hFUkUgKHt7ZGF0YS5j b25zdHJhaW50fX0peyUgZW5kaWYlfTsKXCBObyBuZXdsaW5lIGF0IGVuZCBv ZiBmaWxlCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVt cGxhdGVzL2V4Y2x1c2lvbl9jb25zdHJhaW50L3NxbC85LjJfcGx1cy9kZWxl dGUuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy9leGNs dXNpb25fY29uc3RyYWludC9zcWwvOS4yX3BsdXMvZGVsZXRlLnNxbApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMDk2Nzk1Ci0tLSAv ZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRl cy9leGNsdXNpb25fY29uc3RyYWludC9zcWwvOS4yX3BsdXMvZGVsZXRlLnNx bApAQCAtMCwwICsxLDMgQEAKK3slIGlmIGRhdGEgJX0KK0FMVEVSIFRBQkxF IHt7IGNvbm58cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0YS50YWJsZSkgfX0g RFJPUCBDT05TVFJBSU5UIHt7IGNvbm58cXRJZGVudChkYXRhLm5hbWUpIH19 eyUgaWYgY2FzY2FkZSV9IENBU0NBREV7JSBlbmRpZiAlfTsKK3slIGVuZGlm ICV9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy9leGNsdXNpb25fY29u c3RyYWludC9zcWwvOS4yX3BsdXMvZW5kLnNxbCBiL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L3RhYmxlcy90ZW1wbGF0ZXMvZXhjbHVzaW9uX2NvbnN0cmFpbnQvc3FsLzku Ml9wbHVzL2VuZC5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMC4uOTJkMDlkNQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL3RhYmxlcy90ZW1wbGF0ZXMvZXhjbHVzaW9uX2NvbnN0cmFpbnQvc3Fs LzkuMl9wbHVzL2VuZC5zcWwKQEAgLTAsMCArMSBAQAorRU5EOwpcIE5vIG5l d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL3RhYmxlcy90ZW1wbGF0ZXMvZXhjbHVzaW9uX2NvbnN0cmFpbnQvc3Fs LzkuMl9wbHVzL2dldF9hY2Nlc3NfbWV0aG9kcy5zcWwgYi93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy90YWJsZXMvdGVtcGxhdGVzL2V4Y2x1c2lvbl9jb25zdHJhaW50L3Nx bC85LjJfcGx1cy9nZXRfYWNjZXNzX21ldGhvZHMuc3FsCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVkNzQwNTcKLS0tIC9kZXYvbnVs bAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL2V4Y2x1 c2lvbl9jb25zdHJhaW50L3NxbC85LjJfcGx1cy9nZXRfYWNjZXNzX21ldGhv ZHMuc3FsCkBAIC0wLDAgKzEsNiBAQAorU0VMRUNUIGFtbmFtZQorRlJPTSBw Z19hbQorV0hFUkUgRVhJU1RTIChTRUxFQ1QgMQorICAgICAgICAgICAgICBG Uk9NIHBnX3Byb2MKKyAgICAgICAgICAgICAgV0hFUkUgb2lkPWFtZ2V0dHVw bGUpCitPUkRFUiBCWSBhbW5hbWU7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg ZmlsZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBs YXRlcy9leGNsdXNpb25fY29uc3RyYWludC9zcWwvOS4yX3BsdXMvZ2V0X2Nv bnN0cmFpbnRfY29scy5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVt cGxhdGVzL2V4Y2x1c2lvbl9jb25zdHJhaW50L3NxbC85LjJfcGx1cy9nZXRf Y29uc3RyYWludF9jb2xzLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi5jMTE5Y2NiCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy9leGNsdXNpb25fY29uc3RyYWlu dC9zcWwvOS4yX3BsdXMvZ2V0X2NvbnN0cmFpbnRfY29scy5zcWwKQEAgLTAs MCArMSwyMiBAQAoreyUgZm9yIG4gaW4gcmFuZ2UoY29sY250fGludCkgJX0K K3slIGlmIGxvb3AuaW5kZXggIT0gMSAlfQorVU5JT04KK3slIGVuZGlmICV9 CitTRUxFQ1QKKyAgaS5pbmRvcHRpb25be3tsb29wLmluZGV4IC0xfX1dIEFT IG9wdGlvbnMsCisgIHBnX2dldF9pbmRleGRlZihpLmluZGV4cmVsaWQsIHt7 bG9vcC5pbmRleH19LCB0cnVlKSBBUyBjb2xkZWYsCisgIG9wLm9wcm5hbWUs CisgIENBU0UgV0hFTiAoby5vcGNkZWZhdWx0ID0gRkFMU0UpIFRIRU4gby5v cGNuYW1lIEVMU0UgbnVsbCBFTkQgQVMgb3BjbmFtZQorLAorICBjb2xsLmNv bGxuYW1lLAorICBuc3BjLm5zcG5hbWUgYXMgY29sbG5zcG5hbWUsCisgIGZv cm1hdF90eXBlKHR5Lm9pZCxOVUxMKSBBUyBkYXRhdHlwZQorRlJPTSBwZ19p bmRleCBpCitKT0lOIHBnX2F0dHJpYnV0ZSBhIE9OIChhLmF0dHJlbGlkID0g aS5pbmRleHJlbGlkIEFORCBhdHRudW0gPSB7e2xvb3AuaW5kZXh9fSkKK0pP SU4gcGdfdHlwZSB0eSBPTiB0eS5vaWQ9YS5hdHR0eXBpZAorTEVGVCBPVVRF UiBKT0lOIHBnX29wY2xhc3MgbyBPTiAoby5vaWQgPSBpLmluZGNsYXNzW3t7 bG9vcC5pbmRleCAtMX19XSkKK0xFRlQgT1VURVIgSk9JTiBwZ19jb25zdHJh aW50IGMgT04gKGMuY29uaW5kaWQgPSBpLmluZGV4cmVsaWQpIExFRlQgT1VU RVIgSk9JTiBwZ19vcGVyYXRvciBvcCBPTiAob3Aub2lkID0gYy5jb25leGNs b3Bbe3tsb29wLmluZGV4fX1dKQorTEVGVCBPVVRFUiBKT0lOIHBnX2NvbGxh dGlvbiBjb2xsIE9OIGEuYXR0Y29sbGF0aW9uPWNvbGwub2lkCitMRUZUIE9V VEVSIEpPSU4gcGdfbmFtZXNwYWNlIG5zcGMgT04gY29sbC5jb2xsbmFtZXNw YWNlPW5zcGMub2lkCitXSEVSRSBpLmluZGV4cmVsaWQgPSB7e2NpZH19Ojpv aWQKK3slIGVuZGZvciAlfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMv ZXhjbHVzaW9uX2NvbnN0cmFpbnQvc3FsLzkuMl9wbHVzL2dldF9uYW1lLnNx bCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvZXhjbHVzaW9u X2NvbnN0cmFpbnQvc3FsLzkuMl9wbHVzL2dldF9uYW1lLnNxbApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YWFhNTIyCi0tLSAvZGV2 L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy9l eGNsdXNpb25fY29uc3RyYWludC9zcWwvOS4yX3BsdXMvZ2V0X25hbWUuc3Fs CkBAIC0wLDAgKzEsMyBAQAorU0VMRUNUIGNvbm5hbWUgYXMgbmFtZQorRlJP TSBwZ19jb25zdHJhaW50IGN0CitXSEVSRSBjdC5jb25pbmRpZCA9IHt7Y2lk fX06Om9pZApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdp dCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvZXhjbHVzaW9u X2NvbnN0cmFpbnQvc3FsLzkuMl9wbHVzL2dldF9vaWQuc3FsIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy9leGNsdXNpb25fY29uc3RyYWlu dC9zcWwvOS4yX3BsdXMvZ2V0X29pZC5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMC4uMTY4ZTEzYgotLS0gL2Rldi9udWxsCisrKyBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvZXhjbHVzaW9uX2Nv bnN0cmFpbnQvc3FsLzkuMl9wbHVzL2dldF9vaWQuc3FsCkBAIC0wLDAgKzEs NCBAQAorU0VMRUNUIGN0Lm9pZAorRlJPTSBwZ19jb25zdHJhaW50IGN0CitX SEVSRSBjb250eXBlPSd4JyBBTkQKK2N0LmNvbm5hbWUgPSB7eyBuYW1lfHF0 TGl0ZXJhbCB9fTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg LS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL2V4Y2x1 c2lvbl9jb25zdHJhaW50L3NxbC85LjJfcGx1cy9nZXRfb2lkX3dpdGhfdHJh bnNhY3Rpb24uc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRl cy9leGNsdXNpb25fY29uc3RyYWludC9zcWwvOS4yX3BsdXMvZ2V0X29pZF93 aXRoX3RyYW5zYWN0aW9uLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi5hYmU2MzZhCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy9leGNsdXNpb25fY29uc3RyYWlu dC9zcWwvOS4yX3BsdXMvZ2V0X29pZF93aXRoX3RyYW5zYWN0aW9uLnNxbApA QCAtMCwwICsxLDYgQEAKK1NFTEVDVCBjdC5vaWQsCisgICAgY3QuY29ubmFt ZSBhcyBuYW1lLAorICAgIE5PVCBjb252YWxpZGF0ZWQgYXMgY29udmFsaWRh dGVkCitGUk9NIHBnX2NvbnN0cmFpbnQgY3QKK1dIRVJFIGNvbnR5cGU9J2Yn IEFORAorICAgIGNvbnJlbGlkID0ge3t0aWR9fTo6b2lkIExJTUlUIDE7Clwg Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy9leGNsdXNpb25fY29uc3RyYWlu dC9zcWwvOS4yX3BsdXMvZ2V0X29wZXJfY2xhc3Muc3FsIGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvdGFibGVzL3RlbXBsYXRlcy9leGNsdXNpb25fY29uc3RyYWludC9z cWwvOS4yX3BsdXMvZ2V0X29wZXJfY2xhc3Muc3FsCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2NzM5ZDAKLS0tIC9kZXYvbnVsbAor KysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL2V4Y2x1c2lv bl9jb25zdHJhaW50L3NxbC85LjJfcGx1cy9nZXRfb3Blcl9jbGFzcy5zcWwK QEAgLTAsMCArMSw3IEBACitTRUxFQ1Qgb3BjbmFtZQorRlJPTSBwZ19vcGNs YXNzIG9wYywKK3BnX2FtIGFtCitXSEVSRSBvcGNtZXRob2Q9YW0ub2lkIEFO RAorICAgICAgYW0uYW1uYW1lID17e2luZGV4dHlwZXxxdExpdGVyYWx9fSBB TkQKKyAgICAgIE5PVCBvcGNkZWZhdWx0CitPUkRFUiBCWSAxClwgTm8gbmV3 bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvdGFibGVzL3RlbXBsYXRlcy9leGNsdXNpb25fY29uc3RyYWludC9zcWwv OS4yX3BsdXMvZ2V0X29wZXJhdG9yLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3Rh Ymxlcy90ZW1wbGF0ZXMvZXhjbHVzaW9uX2NvbnN0cmFpbnQvc3FsLzkuMl9w bHVzL2dldF9vcGVyYXRvci5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uNjc1YTdkZQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvZXhjbHVzaW9uX2NvbnN0cmFp bnQvc3FsLzkuMl9wbHVzL2dldF9vcGVyYXRvci5zcWwKQEAgLTAsMCArMSwz MCBAQAorU0VMRUNUIERJU1RJTkNUIG9wLm9wcm5hbWUgYXMgb3BybmFtZQor RlJPTSBwZ19vcGVyYXRvciBvcCwKKyggU0VMRUNUIG9pZAorICBGUk9NIChT RUxFQ1QgZm9ybWF0X3R5cGUodC5vaWQsTlVMTCkgQVMgdHlwbmFtZSwKKyAg ICAgIHQub2lkIGFzIG9pZAorICAgICAgRlJPTSBwZ190eXBlIHQKKyAgICAg IEpPSU4gcGdfbmFtZXNwYWNlIG5zcCBPTiB0eXBuYW1lc3BhY2U9bnNwLm9p ZAorICAgICAgV0hFUkUgKE5PVCAodHlwbmFtZSA9ICd1bmtub3duJyBBTkQg bnNwbmFtZSA9ICdwZ19jYXRhbG9nJykpIEFORAorICAgICAgdHlwaXNkZWZp bmVkIEFORAorICAgICAgdHlwdHlwZSBJTiAoJ2InLCAnYycsICdkJywgJ2Un LCAncicpIEFORAorICAgICAgTk9UIEVYSVNUUyAoU0VMRUNUIDEKKyAgICAg ICAgICAgICAgICAgIEZST00gcGdfY2xhc3MKKyAgICAgICAgICAgICAgICAg IFdIRVJFIHJlbG5hbWVzcGFjZT10eXBuYW1lc3BhY2UgQU5ECisgICAgICAg ICAgICAgICAgICByZWxuYW1lID0gdHlwbmFtZSBBTkQKKyAgICAgICAgICAg ICAgICAgIHJlbGtpbmQgIT0gJ2MnKSBBTkQKKyAgICAgICh0eXBuYW1lIE5P VCBMSUtFICdfJScgT1IKKyAgICAgIE5PVCBFWElTVFMgKFNFTEVDVCAxCisg ICAgICAgICAgICAgICAgICBGUk9NIHBnX2NsYXNzCisgICAgICAgICAgICAg ICAgICBXSEVSRSByZWxuYW1lc3BhY2U9dHlwbmFtZXNwYWNlIEFORAorICAg ICAgICAgICAgICAgICAgICByZWxuYW1lID0gU1VCU1RSSU5HKHR5cG5hbWUg RlJPTSAyKTo6bmFtZSBBTkQKKyAgICAgICAgICAgICAgICAgICAgcmVsa2lu ZCAhPSAnYycpKQorICAgIHslIGlmIG5vdCBzaG93X3N5c29iaiAlfQorICAg ICAgQU5EIG5zcC5uc3BuYW1lICE9ICdpbmZvcm1hdGlvbl9zY2hlbWEnCisg ICAgeyUgZW5kaWYgJX0KKyAgICAgIFVOSU9OIFNFTEVDVCAnc21hbGxzZXJp YWwnLCAwCisgICAgICBVTklPTiBTRUxFQ1QgJ2JpZ3NlcmlhbCcsIDAKKyAg ICAgIFVOSU9OIFNFTEVDVCAnc2VyaWFsJywgMCkgdDEKKyAgICAgIFdIRVJF IHR5cG5hbWUgPSB7e3R5cGV8cXRMaXRlcmFsfX0pIEFTIHR5cGVzCitXSEVS RSBvcHJjb20gPiAwIEFORAorICAgICAgKG9wLm9wcmxlZnQ9dHlwZXMub2lk IE9SIG9wLm9wcnJpZ2h0PXR5cGVzLm9pZCkKXCBObyBuZXdsaW5lIGF0IGVu ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMv dGVtcGxhdGVzL2V4Y2x1c2lvbl9jb25zdHJhaW50L3NxbC85LjJfcGx1cy9n ZXRfcGFyZW50LnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0 ZXMvZXhjbHVzaW9uX2NvbnN0cmFpbnQvc3FsLzkuMl9wbHVzL2dldF9wYXJl bnQuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE2 NTI4NTcKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJs ZXMvdGVtcGxhdGVzL2V4Y2x1c2lvbl9jb25zdHJhaW50L3NxbC85LjJfcGx1 cy9nZXRfcGFyZW50LnNxbApAQCAtMCwwICsxLDcgQEAKK1NFTEVDVCBuc3Au bnNwbmFtZSBBUyBzY2hlbWEsCisgICAgcmVsLnJlbG5hbWUgQVMgdGFibGUK K0ZST00KKyAgICBwZ19jbGFzcyByZWwKK0pPSU4gcGdfbmFtZXNwYWNlIG5z cAorT04gcmVsLnJlbG5hbWVzcGFjZSA9IG5zcC5vaWQ6OmludAorV0hFUkUg cmVsLm9pZCA9IHt7dGlkfX06OmludApcIE5vIG5ld2xpbmUgYXQgZW5kIG9m IGZpbGUKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1w bGF0ZXMvZXhjbHVzaW9uX2NvbnN0cmFpbnQvc3FsLzkuMl9wbHVzL25vZGVz LnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvZXhjbHVz aW9uX2NvbnN0cmFpbnQvc3FsLzkuMl9wbHVzL25vZGVzLnNxbApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNjdjNDBkCi0tLSAvZGV2 L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy9l eGNsdXNpb25fY29uc3RyYWludC9zcWwvOS4yX3BsdXMvbm9kZXMuc3FsCkBA IC0wLDAgKzEsNyBAQAorU0VMRUNUIGNvbmluZGlkIGFzIG9pZCwKKyAgICBj b25uYW1lIGFzIG5hbWUsCisgICAgTk9UIGNvbnZhbGlkYXRlZCBhcyBjb252 YWxpZGF0ZWQKK0ZST00gcGdfY29uc3RyYWludCBjdAorV0hFUkUgY29udHlw ZT0neCcgQU5ECisgICAgY29ucmVsaWQgPSB7e3RpZH19OjpvaWQKK09SREVS IEJZIGNvbm5hbWUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg LS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL2V4Y2x1 c2lvbl9jb25zdHJhaW50L3NxbC85LjJfcGx1cy9wcm9wZXJ0aWVzLnNxbCBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvZXhjbHVzaW9uX2Nv bnN0cmFpbnQvc3FsLzkuMl9wbHVzL3Byb3BlcnRpZXMuc3FsCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNhMWM4OTcKLS0tIC9kZXYv bnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL2V4 Y2x1c2lvbl9jb25zdHJhaW50L3NxbC85LjJfcGx1cy9wcm9wZXJ0aWVzLnNx bApAQCAtMCwwICsxLDMwIEBACitTRUxFQ1QgY2xzLm9pZCwKKyAgICBjbHMu cmVsbmFtZSBhcyBuYW1lLAorICAgIGluZG5hdHRzLAorICAgIGFtbmFtZSwK KyAgICBDT0FMRVNDRShzcGNuYW1lLCAncGdfZGVmYXVsdCcpIGFzIHNwY25h bWUsCisgICAgQ0FTRSBjb250eXBlCisgICAgICAgIFdIRU4gJ3AnIFRIRU4g ZGVzcC5kZXNjcmlwdGlvbgorICAgICAgICBXSEVOICd1JyBUSEVOIGRlc3Au ZGVzY3JpcHRpb24KKyAgICAgICAgV0hFTiAneCcgVEhFTiBkZXNwLmRlc2Ny aXB0aW9uCisgICAgICAgIEVMU0UgZGVzLmRlc2NyaXB0aW9uCisgICAgRU5E IEFTIGNvbW1lbnQsCisgICAgY29uZGVmZXJyYWJsZSwKKyAgICBjb25kZWZl cnJlZCwKKyAgICBzdWJzdHJpbmcoYXJyYXlfdG9fc3RyaW5nKGNscy5yZWxv cHRpb25zLCAnLCcpIGZyb20gJ2ZpbGxmYWN0b3I9KFswLTldKiknKSBBUyBm aWxsZmFjdG9yCitGUk9NIHBnX2luZGV4IGlkeAorSk9JTiBwZ19jbGFzcyBj bHMgT04gY2xzLm9pZD1pbmRleHJlbGlkCitKT0lOIHBnX2NsYXNzIHRhYiBP TiB0YWIub2lkPWluZHJlbGlkCitMRUZUIE9VVEVSIEpPSU4gcGdfdGFibGVz cGFjZSB0YSBvbiB0YS5vaWQ9Y2xzLnJlbHRhYmxlc3BhY2UKK0pPSU4gcGdf bmFtZXNwYWNlIG4gT04gbi5vaWQ9dGFiLnJlbG5hbWVzcGFjZQorSk9JTiBw Z19hbSBhbSBPTiBhbS5vaWQ9Y2xzLnJlbGFtCitMRUZUIEpPSU4gcGdfZGVw ZW5kIGRlcCBPTiAoZGVwLmNsYXNzaWQgPSBjbHMudGFibGVvaWQgQU5EIGRl cC5vYmppZCA9IGNscy5vaWQgQU5EIGRlcC5yZWZvYmpzdWJpZCA9ICcwJyBB TkQgZGVwLnJlZmNsYXNzaWQ9KFNFTEVDVCBvaWQgRlJPTSBwZ19jbGFzcyBX SEVSRSByZWxuYW1lPSdwZ19jb25zdHJhaW50JykgQU5EIGRlcC5kZXB0eXBl PSdpJykKK0xFRlQgT1VURVIgSk9JTiBwZ19jb25zdHJhaW50IGNvbiBPTiAo Y29uLnRhYmxlb2lkID0gZGVwLnJlZmNsYXNzaWQgQU5EIGNvbi5vaWQgPSBk ZXAucmVmb2JqaWQpCitMRUZUIE9VVEVSIEpPSU4gcGdfZGVzY3JpcHRpb24g ZGVzIE9OIChkZXMub2Jqb2lkPWNscy5vaWQgQU5EIGRlcy5jbGFzc29pZD0n cGdfY2xhc3MnOjpyZWdjbGFzcykKK0xFRlQgT1VURVIgSk9JTiBwZ19kZXNj cmlwdGlvbiBkZXNwIE9OIChkZXNwLm9iam9pZD1jb24ub2lkIEFORCBkZXNw Lm9ianN1YmlkID0gMCBBTkQgZGVzcC5jbGFzc29pZD0ncGdfY29uc3RyYWlu dCc6OnJlZ2NsYXNzKQorV0hFUkUgaW5kcmVsaWQgPSB7e3RpZH19OjpvaWQK K3slIGlmIGNpZCAlfQorQU5EIGNscy5vaWQgPSB7e2NpZH19OjpvaWQKK3sl IGVuZGlmICV9CitBTkQgY29udHlwZT0neCcKK09SREVSIEJZIGNscy5yZWxu YW1lClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy9leGNsdXNpb25fY29u c3RyYWludC9zcWwvOS4yX3BsdXMvdXBkYXRlLnNxbCBiL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL3RhYmxlcy90ZW1wbGF0ZXMvZXhjbHVzaW9uX2NvbnN0cmFpbnQvc3Fs LzkuMl9wbHVzL3VwZGF0ZS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uNGQ3MGYyMQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvZXhjbHVzaW9uX2NvbnN0cmFp bnQvc3FsLzkuMl9wbHVzL3VwZGF0ZS5zcWwKQEAgLTAsMCArMSwyMiBAQAor eyMjIyBTUUwgdG8gdXBkYXRlIGV4Y2x1c2lvbiBjb25zdHJhaW50IG9iamVj dCAjIyN9Cit7JSBpZiBkYXRhICV9Cit7IyA9PT09IFRvIHVwZGF0ZSBleGNs dXNpb24gY29uc3RyYWludCBuYW1lID09PT0gI30KK3slIGlmIGRhdGEubmFt ZSAhPSBvX2RhdGEubmFtZSAlfQorQUxURVIgVEFCTEUge3sgY29ubnxxdElk ZW50KGRhdGEuc2NoZW1hLCBkYXRhLnRhYmxlKSB9fQorICAgIFJFTkFNRSBD T05TVFJBSU5UIHt7IGNvbm58cXRJZGVudChvX2RhdGEubmFtZSkgfX0gVE8g e3sgY29ubnxxdElkZW50KGRhdGEubmFtZSkgfX07Cit7JSBlbmRpZiAlfQor eyMgPT09PSBUbyB1cGRhdGUgZXhjbHVzaW9uIGNvbnN0cmFpbnQgdGFibGVz cGFjZSA9PT09ICN9Cit7JSBpZiBkYXRhLnNwY25hbWUgYW5kIGRhdGEuc3Bj bmFtZSAhPSBvX2RhdGEuc3BjbmFtZSAlfQorQUxURVIgSU5ERVgge3sgY29u bnxxdElkZW50KGRhdGEuc2NoZW1hLCBkYXRhLm5hbWUpIH19CisgICAgU0VU IFRBQkxFU1BBQ0Uge3sgY29ubnxxdElkZW50KGRhdGEuc3BjbmFtZSkgfX07 Cit7JSBlbmRpZiAlfQoreyUgaWYgZGF0YS5maWxsZmFjdG9yIGFuZCBkYXRh LmZpbGxmYWN0b3IgIT0gb19kYXRhLmZpbGxmYWN0b3IgJX0KK0FMVEVSIElO REVYIHt7IGNvbm58cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0YS5uYW1lKSB9 fQorICAgIFNFVCAoRklMTEZBQ1RPUj17eyBkYXRhLmZpbGxmYWN0b3IgfX0p OworeyUgZW5kaWYgJX0KK3sjID09PT0gVG8gdXBkYXRlIGV4Y2x1c2lvbiBj b25zdHJhaW50IGNvbW1lbnRzID09PT0gI30KK3slIGlmIGRhdGEuY29tbWVu dCBpcyBkZWZpbmVkIGFuZCBkYXRhLmNvbW1lbnQgIT0gb19kYXRhLmNvbW1l bnQgJX0KK0NPTU1FTlQgT04gQ09OU1RSQUlOVCB7eyBjb25ufHF0SWRlbnQo ZGF0YS5uYW1lKSB9fSBPTiB7eyBjb25ufHF0SWRlbnQoZGF0YS5zY2hlbWEs IGRhdGEudGFibGUpIH19CisgICAgSVMge3sgZGF0YS5jb21tZW50fHF0TGl0 ZXJhbCB9fTsKK3slIGVuZGlmICV9Cit7JSBlbmRpZiAlfQpcIE5vIG5ld2xp bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl9rZXkvc3FsL2FsdGVyLnNxbCBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl9rZXkv c3FsL2FsdGVyLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwLi4wZmIwZWE1Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvdGFibGVzL3RlbXBsYXRlcy9mb3JlaWduX2tleS9zcWwvYWx0ZXIuc3Fs CkBAIC0wLDAgKzEsNCBAQAoreyUgaWYgZGF0YS5jb21tZW50ICV9CitDT01N RU5UIE9OIENPTlNUUkFJTlQge3sgY29ubnxxdElkZW50KGRhdGEubmFtZSkg fX0gT04ge3sgY29ubnxxdElkZW50KGRhdGEuc2NoZW1hLCBkYXRhLnRhYmxl KSB9fQorICAgIElTIHt7IGRhdGEuY29tbWVudHxxdExpdGVyYWwgfX07Cit7 JSBlbmRpZiAlfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt LWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWln bl9rZXkvc3FsL2JlZ2luLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90 ZW1wbGF0ZXMvZm9yZWlnbl9rZXkvc3FsL2JlZ2luLnNxbApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OGJmZWUxCi0tLSAvZGV2L251 bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy9mb3Jl aWduX2tleS9zcWwvYmVnaW4uc3FsCkBAIC0wLDAgKzEgQEAKK0JFR0lOOwpc IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl9rZXkvc3FsL2Ny ZWF0ZS5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL2Zv cmVpZ25fa2V5L3NxbC9jcmVhdGUuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAuLjdhNGVkYTQKLS0tIC9kZXYvbnVsbAorKysgYi93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL2ZvcmVpZ25fa2V5L3Nx bC9jcmVhdGUuc3FsCkBAIC0wLDAgKzEsMjcgQEAKK0FMVEVSIFRBQkxFIHt7 IGNvbm58cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0YS50YWJsZSkgfX0KKyAg ICBBRER7JSBpZiBkYXRhLm5hbWUgJX0gQ09OU1RSQUlOVCB7eyBjb25ufHF0 SWRlbnQoZGF0YS5uYW1lKSB9fXslIGVuZGlmJX0gRk9SRUlHTiBLRVkgKHsl IGZvciBjb2x1bW5vYmogaW4gZGF0YS5jb2x1bW5zICV9eyUgaWYgbG9vcC5p bmRleCAhPSAxICV9CissIHslIGVuZGlmICV9e3sgY29ubnxxdElkZW50KGNv bHVtbm9iai5sb2NhbF9jb2x1bW4pfX17JSBlbmRmb3IgJX0pCisgICAgUkVG RVJFTkNFUyB7eyBjb25ufHF0SWRlbnQoZGF0YS5yZW1vdGVfc2NoZW1hLCBk YXRhLnJlbW90ZV90YWJsZSkgfX0gKHslIGZvciBjb2x1bW5vYmogaW4gZGF0 YS5jb2x1bW5zICV9eyUgaWYgbG9vcC5pbmRleCAhPSAxICV9CissIHslIGVu ZGlmICV9e3sgY29ubnxxdElkZW50KGNvbHVtbm9iai5yZWZlcmVuY2VkKX19 eyUgZW5kZm9yICV9KSB7JSBpZiBkYXRhLmNvbmZtYXRjaHR5cGUgJX1NQVRD SCBGVUxMeyUgZWxzZSAlfU1BVENIIFNJTVBMRXslIGVuZGlmJX0KKworICAg IE9OIFVQREFURXslIGlmIGRhdGEuY29uZnVwZHR5cGUgID09ICdhJyAlfQor IE5PIEFDVElPTnslIGVsaWYgZGF0YS5jb25mdXBkdHlwZSAgPT0gJ3InICV9 CisgUkVTVFJJQ1R7JSBlbGlmIGRhdGEuY29uZnVwZHR5cGUgID09ICdjJyAl fQorIENBU0NBREV7JSBlbGlmIGRhdGEuY29uZnVwZHR5cGUgID09ICduJyAl fQorIFNFVCBOVUxMeyUgZWxpZiBkYXRhLmNvbmZ1cGR0eXBlICA9PSAnZCcg JX0KKyBTRVQgREVGQVVMVHslIGVuZGlmICV9CisKKyAgICBPTiBERUxFVEV7 JSBpZiBkYXRhLmNvbmZkZWx0eXBlICA9PSAnYScgJX0KKyBOTyBBQ1RJT057 JSBlbGlmIGRhdGEuY29uZmRlbHR5cGUgID09ICdyJyAlfQorIFJFU1RSSUNU eyUgZWxpZiBkYXRhLmNvbmZkZWx0eXBlICA9PSAnYycgJX0KKyBDQVNDQURF eyUgZWxpZiBkYXRhLmNvbmZkZWx0eXBlICA9PSAnbicgJX0KKyBTRVQgTlVM THslIGVsaWYgZGF0YS5jb25mZGVsdHlwZSAgPT0gJ2QnICV9CisgU0VUIERF RkFVTFR7JSBlbmRpZiAlfQoreyUgaWYgZGF0YS5jb25kZWZlcnJhYmxlICV9 CisKKyAgICBERUZFUlJBQkxFeyUgaWYgZGF0YS5jb25kZWZlcnJlZCAlfQor IElOSVRJQUxMWSBERUZFUlJFRHslIGVuZGlmJX0KK3slIGVuZGlmJX0KK3sl IGlmIGRhdGEuY29udmFsaWRhdGVkICV9CisKKyAgICBOT1QgVkFMSUR7JSBl bmRpZiV9OwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdp dCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl9r ZXkvc3FsL2NyZWF0ZV9pbmRleC5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJs ZXMvdGVtcGxhdGVzL2ZvcmVpZ25fa2V5L3NxbC9jcmVhdGVfaW5kZXguc3Fs Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5YzFlODgK LS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVt cGxhdGVzL2ZvcmVpZ25fa2V5L3NxbC9jcmVhdGVfaW5kZXguc3FsCkBAIC0w LDAgKzEsNSBAQAoreyUgaWYgZGF0YS5hdXRvaW5kZXggJX0KK0NSRUFURSBJ TkRFWCB7eyBjb25ufHF0SWRlbnQoZGF0YS5jb3ZlcmluZ2luZGV4KSB9fQor ICAgIE9OIHt7IGNvbm58cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0YS50YWJs ZSkgfX0oeyUgZm9yIGNvbHVtbm9iaiBpbiBkYXRhLmNvbHVtbnMgJX17JSBp ZiBsb29wLmluZGV4ICE9IDEgJX0KKywgeyUgZW5kaWYgJX17eyBjb25ufHF0 SWRlbnQoY29sdW1ub2JqLmxvY2FsX2NvbHVtbil9fXslIGVuZGZvciAlfSk7 Cit7JSBlbmRpZiAlfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm ZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvZm9y ZWlnbl9rZXkvc3FsL2RlbGV0ZS5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJs ZXMvdGVtcGxhdGVzL2ZvcmVpZ25fa2V5L3NxbC9kZWxldGUuc3FsCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwOTY3OTUKLS0tIC9k ZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVz L2ZvcmVpZ25fa2V5L3NxbC9kZWxldGUuc3FsCkBAIC0wLDAgKzEsMyBAQAor eyUgaWYgZGF0YSAlfQorQUxURVIgVEFCTEUge3sgY29ubnxxdElkZW50KGRh dGEuc2NoZW1hLCBkYXRhLnRhYmxlKSB9fSBEUk9QIENPTlNUUkFJTlQge3sg Y29ubnxxdElkZW50KGRhdGEubmFtZSkgfX17JSBpZiBjYXNjYWRlJX0gQ0FT Q0FERXslIGVuZGlmICV9OworeyUgZW5kaWYgJX0KXCBObyBuZXdsaW5lIGF0 IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJs ZXMvdGVtcGxhdGVzL2ZvcmVpZ25fa2V5L3NxbC9lbmQuc3FsIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy9mb3JlaWduX2tleS9zcWwvZW5k LnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MmQw OWQ1Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVz L3RlbXBsYXRlcy9mb3JlaWduX2tleS9zcWwvZW5kLnNxbApAQCAtMCwwICsx IEBACitFTkQ7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t Z2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy9mb3JlaWdu X2tleS9zcWwvZ2V0X2NvbHMuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVz L3RlbXBsYXRlcy9mb3JlaWduX2tleS9zcWwvZ2V0X2NvbHMuc3FsCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRiMmZlZTIKLS0tIC9k ZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVz L2ZvcmVpZ25fa2V5L3NxbC9nZXRfY29scy5zcWwKQEAgLTAsMCArMSw3IEBA Cit7JSBmb3IgbiBpbiByYW5nZShjb2xjbnR8aW50KSAlfQoreyUgaWYgbG9v cC5pbmRleCAhPSAxICV9CitVTklPTiBTRUxFQ1QgIHBnX2dldF9pbmRleGRl Zih7eyBjaWR8c3RyaW5nIH19LCB7eyBsb29wLmluZGV4fHN0cmluZyB9fSwg dHJ1ZSkgQVMgY29sdW1uCit7JSBlbHNlICV9CitTRUxFQ1QgIHBnX2dldF9p bmRleGRlZih7eyBjaWR8c3RyaW5nIH19ICwge3sgbG9vcC5pbmRleHxzdHJp bmcgfX0gLCB0cnVlKSBBUyBjb2x1bW4KK3slIGVuZGlmICV9Cit7JSBlbmRm b3IgJX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg YS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL2ZvcmVpZ25fa2V5 L3NxbC9nZXRfY29uc3RyYWludF9jb2xzLnNxbCBiL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl9rZXkvc3FsL2dldF9jb25zdHJh aW50X2NvbHMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLmE5NmU1NzUKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy90YWJsZXMvdGVtcGxhdGVzL2ZvcmVpZ25fa2V5L3NxbC9nZXRfY29uc3Ry YWludF9jb2xzLnNxbApAQCAtMCwwICsxLDEzIEBACit7JSBmb3Iga2V5cGFp ciBpbiBrZXlzICV9Cit7JSBpZiBsb29wLmluZGV4ICE9IDEgJX0KK1VOSU9O Cit7JSBlbmRpZiAlfQorU0VMRUNUIGExLmF0dG5hbWUgYXMgY29uYXR0bmFt ZSwKKyAgICBhMi5hdHRuYW1lIGFzIGNvbmZhdHRuYW1lCitGUk9NIHBnX2F0 dHJpYnV0ZSBhMSwKKyAgICBwZ19hdHRyaWJ1dGUgYTIKK1dIRVJFIGExLmF0 dHJlbGlkPXt7dGlkfX06Om9pZAorICAgIEFORCBhMS5hdHRudW09e3trZXlw YWlyWzFdfX0KKyAgICBBTkQgYTIuYXR0cmVsaWQ9e3tjb25mcmVsaWR9fTo6 b2lkCisgICAgQU5EIGEyLmF0dG51bT17e2tleXBhaXJbMF19fQoreyUgZW5k Zm9yICV9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0 IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy9mb3JlaWduX2tl eS9zcWwvZ2V0X2NvbnN0cmFpbnRzLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3Rh Ymxlcy90ZW1wbGF0ZXMvZm9yZWlnbl9rZXkvc3FsL2dldF9jb25zdHJhaW50 cy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDJm MzU4YwotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxl cy90ZW1wbGF0ZXMvZm9yZWlnbl9rZXkvc3FsL2dldF9jb25zdHJhaW50cy5z cWwKQEAgLTAsMCArMSwzNyBAQAorU0VMRUNUICAgY2xzLm9pZCwgY2xzLnJl bG5hbWUgYXMgaWR4bmFtZSwgaW5kbmF0dHMKKyAgRlJPTSBwZ19pbmRleCBp ZHgKKyAgSk9JTiBwZ19jbGFzcyBjbHMgT04gY2xzLm9pZD1pbmRleHJlbGlk CisgIExFRlQgSk9JTiBwZ19kZXBlbmQgZGVwIE9OIChkZXAuY2xhc3NpZCA9 IGNscy50YWJsZW9pZCBBTkQgZGVwLm9iamlkID0gY2xzLm9pZCBBTkQgZGVw LnJlZm9ianN1YmlkID0gJzAnIEFORCBkZXAucmVmY2xhc3NpZD0oU0VMRUNU IG9pZCBGUk9NIHBnX2NsYXNzIFdIRVJFIHJlbG5hbWU9J3BnX2NvbnN0cmFp bnQnKSBBTkQgZGVwLmRlcHR5cGU9J2knKQorICBMRUZUIE9VVEVSIEpPSU4g cGdfY29uc3RyYWludCBjb24gT04gKGNvbi50YWJsZW9pZCA9IGRlcC5yZWZj bGFzc2lkIEFORCBjb24ub2lkID0gZGVwLnJlZm9iamlkKQorV0hFUkUgaWR4 LmluZHJlbGlkID0ge3t0aWR9fTo6b2lkCisgICAgQU5EIGNvbi5jb250eXBl PSdwJworCitVTklPTgorCitTRUxFQ1QgIGNscy5vaWQsIGNscy5yZWxuYW1l IGFzIGlkeG5hbWUsIGluZG5hdHRzCisgICAgRlJPTSBwZ19pbmRleCBpZHgK KyAgICBKT0lOIHBnX2NsYXNzIGNscyBPTiBjbHMub2lkPWluZGV4cmVsaWQK KyAgICBMRUZUIEpPSU4gcGdfZGVwZW5kIGRlcCBPTiAoZGVwLmNsYXNzaWQg PSBjbHMudGFibGVvaWQgQU5EIGRlcC5vYmppZCA9IGNscy5vaWQgQU5EIGRl cC5yZWZvYmpzdWJpZCA9ICcwJyBBTkQgZGVwLnJlZmNsYXNzaWQ9KFNFTEVD VCBvaWQgRlJPTSBwZ19jbGFzcyBXSEVSRSByZWxuYW1lPSdwZ19jb25zdHJh aW50JykgQU5EIGRlcC5kZXB0eXBlPSdpJykKKyAgICBMRUZUIE9VVEVSIEpP SU4gcGdfY29uc3RyYWludCBjb24gT04gKGNvbi50YWJsZW9pZCA9IGRlcC5y ZWZjbGFzc2lkIEFORCBjb24ub2lkID0gZGVwLnJlZm9iamlkKQorV0hFUkUg aWR4LmluZHJlbGlkID0ge3t0aWR9fTo6b2lkCisgICAgQU5EIGNvbi5jb250 eXBlPSd4JworCitVTklPTgorCitTRUxFQ1QgIGNscy5vaWQsIGNscy5yZWxu YW1lIGFzIGlkeG5hbWUsIGluZG5hdHRzCisgICAgRlJPTSBwZ19pbmRleCBp ZHgKKyAgICBKT0lOIHBnX2NsYXNzIGNscyBPTiBjbHMub2lkPWluZGV4cmVs aWQKKyAgICBMRUZUIEpPSU4gcGdfZGVwZW5kIGRlcCBPTiAoZGVwLmNsYXNz aWQgPSBjbHMudGFibGVvaWQgQU5EIGRlcC5vYmppZCA9IGNscy5vaWQgQU5E IGRlcC5yZWZvYmpzdWJpZCA9ICcwJyBBTkQgZGVwLnJlZmNsYXNzaWQ9KFNF TEVDVCBvaWQgRlJPTSBwZ19jbGFzcyBXSEVSRSByZWxuYW1lPSdwZ19jb25z dHJhaW50JykgQU5EIGRlcC5kZXB0eXBlPSdpJykKKyAgICBMRUZUIE9VVEVS IEpPSU4gcGdfY29uc3RyYWludCBjb24gT04gKGNvbi50YWJsZW9pZCA9IGRl cC5yZWZjbGFzc2lkIEFORCBjb24ub2lkID0gZGVwLnJlZm9iamlkKQorV0hF UkUgaWR4LmluZHJlbGlkID0ge3t0aWR9fTo6b2lkCisgICAgQU5EIGNvbi5j b250eXBlPSd1JworCitVTklPTgorCitTRUxFQ1QgIGNscy5vaWQsIGNscy5y ZWxuYW1lIGFzIGlkeG5hbWUsIGluZG5hdHRzCisgICAgRlJPTSBwZ19pbmRl eCBpZHgKKyAgICBKT0lOIHBnX2NsYXNzIGNscyBPTiBjbHMub2lkPWluZGV4 cmVsaWQKKyAgICBMRUZUIEpPSU4gcGdfZGVwZW5kIGRlcCBPTiAoZGVwLmNs YXNzaWQgPSBjbHMudGFibGVvaWQgQU5EIGRlcC5vYmppZCA9IGNscy5vaWQg QU5EIGRlcC5yZWZvYmpzdWJpZCA9ICcwJyBBTkQgZGVwLnJlZmNsYXNzaWQ9 KFNFTEVDVCBvaWQgRlJPTSBwZ19jbGFzcyBXSEVSRSByZWxuYW1lPSdwZ19j b25zdHJhaW50JykgQU5EIGRlcC5kZXB0eXBlPSdpJykKKyAgICBMRUZUIE9V VEVSIEpPSU4gcGdfY29uc3RyYWludCBjb24gT04gKGNvbi50YWJsZW9pZCA9 IGRlcC5yZWZjbGFzc2lkIEFORCBjb24ub2lkID0gZGVwLnJlZm9iamlkKQor V0hFUkUgaWR4LmluZHJlbGlkID0ge3t0aWR9fTo6b2lkCisgICBBTkQgY29u bmFtZSBJUyBOVUxMClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm IC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy9mb3Jl aWduX2tleS9zcWwvZ2V0X25hbWUuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFi bGVzL3RlbXBsYXRlcy9mb3JlaWduX2tleS9zcWwvZ2V0X25hbWUuc3FsCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3ZmRhZTIKLS0t IC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxh dGVzL2ZvcmVpZ25fa2V5L3NxbC9nZXRfbmFtZS5zcWwKQEAgLTAsMCArMSwz IEBACitTRUxFQ1QgY29ubmFtZSBhcyBuYW1lCitGUk9NIHBnX2NvbnN0cmFp bnQgY3QKK1dIRVJFIGN0Lm9pZCA9IHt7ZmtpZH19OjpvaWQKXCBObyBuZXds aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy90YWJsZXMvdGVtcGxhdGVzL2ZvcmVpZ25fa2V5L3NxbC9nZXRfb2lkLnNx bCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl9r ZXkvc3FsL2dldF9vaWQuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLjU3NmM5NzYKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL2ZvcmVpZ25fa2V5L3NxbC9nZXRf b2lkLnNxbApAQCAtMCwwICsxLDUgQEAKK1NFTEVDVCBjdC5vaWQsCisgICAg Tk9UIGNvbnZhbGlkYXRlZCBhcyBjb252YWxpZGF0ZWQKK0ZST00gcGdfY29u c3RyYWludCBjdAorV0hFUkUgY29udHlwZT0nZicgQU5ECitjdC5jb25uYW1l ID0ge3sgbmFtZXxxdExpdGVyYWwgfX07ClwgTm8gbmV3bGluZSBhdCBlbmQg b2YgZmlsZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3Rl bXBsYXRlcy9mb3JlaWduX2tleS9zcWwvZ2V0X29pZF93aXRoX3RyYW5zYWN0 aW9uLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvZm9y ZWlnbl9rZXkvc3FsL2dldF9vaWRfd2l0aF90cmFuc2FjdGlvbi5zcWwKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWJlNjM2YQotLS0g L2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0 ZXMvZm9yZWlnbl9rZXkvc3FsL2dldF9vaWRfd2l0aF90cmFuc2FjdGlvbi5z cWwKQEAgLTAsMCArMSw2IEBACitTRUxFQ1QgY3Qub2lkLAorICAgIGN0LmNv bm5hbWUgYXMgbmFtZSwKKyAgICBOT1QgY29udmFsaWRhdGVkIGFzIGNvbnZh bGlkYXRlZAorRlJPTSBwZ19jb25zdHJhaW50IGN0CitXSEVSRSBjb250eXBl PSdmJyBBTkQKKyAgICBjb25yZWxpZCA9IHt7dGlkfX06Om9pZCBMSU1JVCAx OwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl9rZXkvc3Fs L2dldF9wYXJlbnQuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBs YXRlcy9mb3JlaWduX2tleS9zcWwvZ2V0X3BhcmVudC5zcWwKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTY1Mjg1NwotLS0gL2Rldi9u dWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvZm9y ZWlnbl9rZXkvc3FsL2dldF9wYXJlbnQuc3FsCkBAIC0wLDAgKzEsNyBAQAor U0VMRUNUIG5zcC5uc3BuYW1lIEFTIHNjaGVtYSwKKyAgICByZWwucmVsbmFt ZSBBUyB0YWJsZQorRlJPTQorICAgIHBnX2NsYXNzIHJlbAorSk9JTiBwZ19u YW1lc3BhY2UgbnNwCitPTiByZWwucmVsbmFtZXNwYWNlID0gbnNwLm9pZDo6 aW50CitXSEVSRSByZWwub2lkID0ge3t0aWR9fTo6aW50ClwgTm8gbmV3bGlu ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv dGFibGVzL3RlbXBsYXRlcy9mb3JlaWduX2tleS9zcWwvbm9kZXMuc3FsIGIv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy9mb3JlaWduX2tleS9z cWwvbm9kZXMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLjk2Njc1ODgKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy90YWJsZXMvdGVtcGxhdGVzL2ZvcmVpZ25fa2V5L3NxbC9ub2Rlcy5zcWwK QEAgLTAsMCArMSw3IEBACitTRUxFQ1QgY3Qub2lkLAorICAgIGNvbm5hbWUg YXMgbmFtZSwKKyAgICBOT1QgY29udmFsaWRhdGVkIGFzIGNvbnZhbGlkYXRl ZAorRlJPTSBwZ19jb25zdHJhaW50IGN0CitXSEVSRSBjb250eXBlPSdmJyBB TkQKKyAgICBjb25yZWxpZCA9IHt7dGlkfX06Om9pZAorT1JERVIgQlkgY29u bmFtZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl9rZXkv c3FsL3Byb3BlcnRpZXMuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3Rl bXBsYXRlcy9mb3JlaWduX2tleS9zcWwvcHJvcGVydGllcy5zcWwKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWY1MDZlZQotLS0gL2Rl di9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMv Zm9yZWlnbl9rZXkvc3FsL3Byb3BlcnRpZXMuc3FsCkBAIC0wLDAgKzEsMzEg QEAKK1NFTEVDVCBjdC5vaWQsCisgICAgICBjb25uYW1lIGFzIG5hbWUsCisg ICAgICBjb25kZWZlcnJhYmxlLAorICAgICAgY29uZGVmZXJyZWQsCisgICAg ICBjb25mdXBkdHlwZSwKKyAgICAgIGNvbmZkZWx0eXBlLAorICAgICAgQ0FT RSBjb25mbWF0Y2h0eXBlCisgICAgICAgIFdIRU4gJ3MnIFRIRU4gRkFMU0UK KyAgICAgICAgV0hFTiAnZicgVEhFTiBUUlVFCisgICAgICBFTkQgQVMgY29u Zm1hdGNodHlwZSwKKyAgICAgIGNvbmtleSwKKyAgICAgIGNvbmZrZXksCisg ICAgICBjb25mcmVsaWQsCisgICAgICBubC5uc3BuYW1lIGFzIGZrbnNwLAor ICAgICAgY2wucmVsbmFtZSBhcyBma3RhYiwKKyAgICAgIG5yLm5zcG5hbWUg YXMgcmVmbnNwLAorICAgICAgY3IucmVsbmFtZSBhcyByZWZ0YWIsCisgICAg ICBkZXNjcmlwdGlvbiBhcyBjb21tZW50LAorICAgICAgTk9UIGNvbnZhbGlk YXRlZCBhcyBjb252YWxpZGF0ZWQKK0ZST00gcGdfY29uc3RyYWludCBjdAor Sk9JTiBwZ19jbGFzcyBjbCBPTiBjbC5vaWQ9Y29ucmVsaWQKK0pPSU4gcGdf bmFtZXNwYWNlIG5sIE9OIG5sLm9pZD1jbC5yZWxuYW1lc3BhY2UKK0pPSU4g cGdfY2xhc3MgY3IgT04gY3Iub2lkPWNvbmZyZWxpZAorSk9JTiBwZ19uYW1l c3BhY2UgbnIgT04gbnIub2lkPWNyLnJlbG5hbWVzcGFjZQorTEVGVCBPVVRF UiBKT0lOIHBnX2Rlc2NyaXB0aW9uIGRlcyBPTiAoZGVzLm9iam9pZD1jdC5v aWQgQU5EIGRlcy5jbGFzc29pZD0ncGdfY29uc3RyYWludCc6OnJlZ2NsYXNz KQorV0hFUkUgY29udHlwZT0nZicgQU5ECitjb25yZWxpZCA9IHt7dGlkfX06 Om9pZAoreyUgaWYgY2lkICV9CitBTkQgY3Qub2lkID0ge3tjaWR9fTo6b2lk Cit7JSBlbmRpZiAlfQorT1JERVIgQlkgY29ubmFtZQpcIE5vIG5ld2xpbmUg YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3Rh Ymxlcy90ZW1wbGF0ZXMvZm9yZWlnbl9rZXkvc3FsL3VwZGF0ZS5zcWwgYi93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL2ZvcmVpZ25fa2V5L3Nx bC91cGRhdGUuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLmVlOGY4YTkKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy90YWJsZXMvdGVtcGxhdGVzL2ZvcmVpZ25fa2V5L3NxbC91cGRhdGUuc3Fs CkBAIC0wLDAgKzEsMTggQEAKK3sjIyMgU1FMIHRvIHVwZGF0ZSBmb3JlaWdu IGtleSBvYmplY3QgIyMjfQoreyUgaWYgZGF0YSAlfQoreyMgPT09PSBUbyB1 cGRhdGUgZm9yZWlnbiBrZXkgbmFtZSA9PT09ICN9Cit7JSBpZiBkYXRhLm5h bWUgIT0gb19kYXRhLm5hbWUgJX0KK0FMVEVSIFRBQkxFIHt7IGNvbm58cXRJ ZGVudChkYXRhLnNjaGVtYSwgZGF0YS50YWJsZSkgfX0KKyAgICBSRU5BTUUg Q09OU1RSQUlOVCB7eyBjb25ufHF0SWRlbnQob19kYXRhLm5hbWUpIH19IFRP IHt7IGNvbm58cXRJZGVudChkYXRhLm5hbWUpIH19OworeyUgZW5kaWYgJX0K K3sjID09PT0gVG8gdXBkYXRlIGZvcmVpZ24ga2V5IHZhbGlkYXRlID09PT0g I30KK3slIGlmICdjb252YWxpZGF0ZWQnIGluIGRhdGEgYW5kIG9fZGF0YS5j b252YWxpZGF0ZWQgIT0gZGF0YS5jb252YWxpZGF0ZWQgYW5kIG5vdCBkYXRh LmNvbnZhbGlkYXRlZCAlfQorQUxURVIgVEFCTEUge3sgY29ubnxxdElkZW50 KGRhdGEuc2NoZW1hLCBkYXRhLnRhYmxlKSB9fQorICAgIFZBTElEQVRFIENP TlNUUkFJTlQge3sgY29ubnxxdElkZW50KGRhdGEubmFtZSkgfX07Cit7JSBl bmRpZiAlfQoreyMgPT09PSBUbyB1cGRhdGUgZm9yZWlnbiBrZXkgY29tbWVu dHMgPT09PSAjfQoreyUgaWYgZGF0YS5jb21tZW50IGlzIGRlZmluZWQgYW5k IGRhdGEuY29tbWVudCAhPSBvX2RhdGEuY29tbWVudCAlfQorQ09NTUVOVCBP TiBDT05TVFJBSU5UIHt7IGNvbm58cXRJZGVudChkYXRhLm5hbWUpIH19IE9O IHt7IGNvbm58cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0YS50YWJsZSkgfX0K KyAgICBJUyB7eyBkYXRhLmNvbW1lbnR8cXRMaXRlcmFsIH19OworeyUgZW5k aWYgJX0KK3slIGVuZGlmICV9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls ZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRl cy9mb3JlaWduX2tleS9zcWwvdmFsaWRhdGUuc3FsIGIvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvdGFibGVzL3RlbXBsYXRlcy9mb3JlaWduX2tleS9zcWwvdmFsaWRhdGUu c3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhNjJj ODAKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMv dGVtcGxhdGVzL2ZvcmVpZ25fa2V5L3NxbC92YWxpZGF0ZS5zcWwKQEAgLTAs MCArMSwyIEBACitBTFRFUiBUQUJMRSB7eyBjb25ufHF0SWRlbnQoZGF0YS5z Y2hlbWEsIGRhdGEudGFibGUpIH19CisgICAgVkFMSURBVEUgQ09OU1RSQUlO VCB7eyBjb25ufHF0SWRlbnQoZGF0YS5uYW1lKSB9fTsKXCBObyBuZXdsaW5l IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90 YWJsZXMvdGVtcGxhdGVzL2luZGV4L3NxbC85LjFfcGx1cy9hbHRlci5zcWwg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL2luZGV4L3NxbC85 LjFfcGx1cy9hbHRlci5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMC4uNjhhNDQ0NAotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvaW5kZXgvc3FsLzkuMV9wbHVzL2Fs dGVyLnNxbApAQCAtMCwwICsxLDExIEBACit7IyMgQWx0ZXIgaW5kZXggdG8g dXNlIGNsdXN0ZXIgdHlwZSAjI30KK3slIGlmIGRhdGEuaW5kaXNjbHVzdGVy ZWQgJX0KKworQUxURVIgVEFCTEUge3tjb25ufHF0SWRlbnQoZGF0YS5zY2hl bWEsIGRhdGEudGFibGUpfX0KKyAgICBDTFVTVEVSIE9OIHt7Y29ubnxxdElk ZW50KGRhdGEubmFtZSl9fTsKK3slIGVuZGlmICV9Cit7IyMgQ2hhbmdlcyBk ZXNjcmlwdGlvbiAjI30KK3slIGlmIGRhdGEuZGVzY3JpcHRpb24gaXMgZGVm aW5lZCAlfQorCitDT01NRU5UIE9OIElOREVYIHt7Y29ubnxxdElkZW50KGRh dGEuc2NoZW1hLCBkYXRhLm5hbWUpfX0KKyAgICBJUyB7e2RhdGEuZGVzY3Jp cHRpb258cXRMaXRlcmFsfX07eyUgZW5kaWYgJX0KXCBObyBuZXdsaW5lIGF0 IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJs ZXMvdGVtcGxhdGVzL2luZGV4L3NxbC85LjFfcGx1cy9iYWNrZW5kX3N1cHBv cnQuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy9pbmRl eC9zcWwvOS4xX3BsdXMvYmFja2VuZF9zdXBwb3J0LnNxbApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZjY2ZWQxCi0tLSAvZGV2L251 bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy9pbmRl eC9zcWwvOS4xX3BsdXMvYmFja2VuZF9zdXBwb3J0LnNxbApAQCAtMCwwICsx LDkgQEAKK3sjPT09PT09PT09PT09PUNoZWNrcyBpZiBpdCBpcyBtYXRlcmlh bGl6ZWQgdmlldz09PT09PT09I30KK3slIGlmIHZpZCAlfQorU0VMRUNUCisg ICAgQ0FTRSBXSEVOIGMucmVsa2luZCA9ICdtJyBUSEVOIFRydWUgRUxTRSBG YWxzZSBFTkQgQXMgbV92aWV3CitGUk9NCisgICAgcGdfY2xhc3MgYworV0hF UkUKKyAgICBjLm9pZCA9IHt7IHZpZCB9fTo6b2lkCit7JSBlbmRpZiAlfQpk aWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy9p bmRleC9zcWwvOS4xX3BsdXMvY29sdW1uX2RldGFpbHMuc3FsIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy9pbmRleC9zcWwvOS4xX3BsdXMv Y29sdW1uX2RldGFpbHMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLjJjZjU0MGEKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL2luZGV4L3NxbC85LjFfcGx1cy9j b2x1bW5fZGV0YWlscy5zcWwKQEAgLTAsMCArMSwzMCBAQAorU0VMRUNUCisg ICAgaS5pbmRleHJlbGlkLAorICAgIENBU0UgaS5pbmRvcHRpb25baS5hdHRu dW0gLSAxXQorICAgIFdIRU4gMCBUSEVOIEFSUkFZWydBU0MnLCAnTlVMTFMg TEFTVCddCisgICAgV0hFTiAxIFRIRU4gQVJSQVlbJ0RFU0MnLCAnTlVMTFMg RklSU1QnXQorICAgIFdIRU4gMiBUSEVOIEFSUkFZWydBU0MnLCAnTlVMTFMg RklSU1QnXQorICAgIFdIRU4gMyBUSEVOIEFSUkFZWydERVNDJywgJ05VTExT ICAnXQorICAgIEVMU0UgQVJSQVlbJ1VOS05PV04gT1BUSU9OJyB8fCBpLmlu ZG9wdGlvbltpLmF0dG51bSAtIDFdLCAnJ10KKyAgICBFTkQ6OnRleHRbXSBB UyBvcHRpb25zLAorICAgIGkuYXR0bnVtLAorICAgIHBnX2dldF9pbmRleGRl ZihpLmluZGV4cmVsaWQsIGkuYXR0bnVtLCB0cnVlKSBhcyBhdHRkZWYsCisg ICAgQ0FTRSBXSEVOIChvLm9wY2RlZmF1bHQgPSBGQUxTRSkgVEhFTiBvLm9w Y25hbWUgRUxTRSBudWxsIEVORCBBUyBvcGNuYW1lLAorICAgIG9wLm9wcm5h bWUgQVMgb3BybmFtZSwKKwlDQVNFIFdIRU4gbGVuZ3RoKG5zcGMubnNwbmFt ZSkgPiAwIEFORCBsZW5ndGgoY29sbC5jb2xsbmFtZSkgPiAwICBUSEVOCisJ ICBjb25jYXQocXVvdGVfaWRlbnQobnNwYy5uc3BuYW1lKSwgJy4nLCBxdW90 ZV9pZGVudChjb2xsLmNvbGxuYW1lKSkKKwlFTFNFICcnIEVORCBBUyBjb2xs bnNwbmFtZQorRlJPTSAoCisgICAgICBTRUxFQ1QKKyAgICAgICAgICBpbmRl eHJlbGlkLCBpLmluZG9wdGlvbiwgaS5pbmRjbGFzcywKKyAgICAgICAgICB1 bm5lc3QoQVJSQVkoU0VMRUNUIGdlbmVyYXRlX3NlcmllcygxLCBpLmluZG5h dHRzKSBBUyBuKSkgQVMgYXR0bnVtCisgICAgICBGUk9NCisgICAgICAgICAg cGdfaW5kZXggaQorICAgICAgV0hFUkUgaS5pbmRleHJlbGlkID0ge3tpZHh9 fTo6T0lECispIGkKKyAgICBMRUZUIEpPSU4gcGdfb3BjbGFzcyBvIE9OIChv Lm9pZCA9IGkuaW5kY2xhc3NbaS5hdHRudW0gLSAxXSkKKyAgICBMRUZUIE9V VEVSIEpPSU4gcGdfY29uc3RyYWludCBjIE9OIChjLmNvbmluZGlkID0gaS5p bmRleHJlbGlkKQorICAgIExFRlQgT1VURVIgSk9JTiBwZ19vcGVyYXRvciBv cCBPTiAob3Aub2lkID0gYy5jb25leGNsb3BbaS5hdHRudW1dKQorICAgIExF RlQgSk9JTiBwZ19hdHRyaWJ1dGUgYSBPTiAoYS5hdHRyZWxpZCA9IGkuaW5k ZXhyZWxpZCBBTkQgYS5hdHRudW0gPSBpLmF0dG51bSkKKyAgICBMRUZUIE9V VEVSIEpPSU4gcGdfY29sbGF0aW9uIGNvbGwgT04gYS5hdHRjb2xsYXRpb249 Y29sbC5vaWQKKyAgICBMRUZUIE9VVEVSIEpPSU4gcGdfbmFtZXNwYWNlIG5z cGMgT04gY29sbC5jb2xsbmFtZXNwYWNlPW5zcGMub2lkOwpkaWZmIC0tZ2l0 IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy9pbmRleC9zcWwv OS4xX3BsdXMvY3JlYXRlLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90 ZW1wbGF0ZXMvaW5kZXgvc3FsLzkuMV9wbHVzL2NyZWF0ZS5zcWwKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjMxYzgyNwotLS0gL2Rl di9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMv aW5kZXgvc3FsLzkuMV9wbHVzL2NyZWF0ZS5zcWwKQEAgLTAsMCArMSwxMiBA QAorQ1JFQVRFIHslIGlmIGRhdGEuaW5kaXN1bmlxdWUgJX1VTklRVUUgeyUg ZW5kaWYgJX1JTkRFWCB7JSBpZiBkYXRhLmlzY29uY3VycmVudCAlfUNPTkNV UlJFTlRMWSB7JSBlbmRpZiAlfXt7Y29ubnxxdElkZW50KGRhdGEubmFtZSl9 fQorICAgIE9OIHt7Y29ubnxxdElkZW50KGRhdGEuc2NoZW1hLCBkYXRhLnRh YmxlKX19IHslIGlmIGRhdGEuYW1uYW1lICV9VVNJTkcge3tjb25ufHF0SWRl bnQoZGF0YS5hbW5hbWUpfX17JSBlbmRpZiAlfQorCisgICAgKHslIGZvciBj IGluIGRhdGEuY29sdW1ucyAlfXslIGlmIGxvb3AuaW5kZXggIT0gMSAlfSwg eyUgZW5kaWYgJX17e2Nvbm58cXRJZGVudChjLmNvbG5hbWUpfX17JSBpZiBj LmNvbGxzcGNuYW1lICV9IENPTExBVEUge3tjLmNvbGxzcGNuYW1lfX0geyUg ZW5kaWYgJX17JSBpZiBjLm9wX2NsYXNzICV9Cisge3tjLm9wX2NsYXNzfX17 JSBlbmRpZiAlfXslIGlmIGMuc29ydF9vcmRlciBpcyBkZWZpbmVkICV9eyUg aWYgYy5zb3J0X29yZGVyICV9IERFU0N7JSBlbHNlICV9IEFTQ3slIGVuZGlm ICV9eyUgZW5kaWYgJX17JSBpZiBjLm51bGxzIGlzIGRlZmluZWQgJX0gTlVM TFMgeyUgaWYgYy5udWxscyAlfQorRklSU1R7JSBlbHNlICV9TEFTVHslIGVu ZGlmICV9eyUgZW5kaWYgJX17JSBlbmRmb3IgJX0peyUgaWYgZGF0YS5maWxs ZmFjdG9yICV9CisKKyAgICBXSVRIIChGSUxMRkFDVE9SPXt7ZGF0YS5maWxs ZmFjdG9yfX0peyUgZW5kaWYgJX17JSBpZiBkYXRhLnNwY25hbWUgJX0KKwor ICAgIFRBQkxFU1BBQ0Uge3tjb25ufHF0SWRlbnQoZGF0YS5zcGNuYW1lKX19 eyUgZW5kaWYgJX17JSBpZiBkYXRhLmluZGNvbnN0cmFpbnQgJX0KKworICAg IFdIRVJFIHt7ZGF0YS5pbmRjb25zdHJhaW50fX17JSBlbmRpZiAlfTsKXCBO byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL2luZGV4L3NxbC85LjFfcGx1cy9k ZWxldGUuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy9p bmRleC9zcWwvOS4xX3BsdXMvZGVsZXRlLnNxbApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwLi5mMzgwOGZhCi0tLSAvZGV2L251bGwKKysr IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy9pbmRleC9zcWwv OS4xX3BsdXMvZGVsZXRlLnNxbApAQCAtMCwwICsxIEBACitEUk9QIElOREVY IHt7Y29ubnxxdElkZW50KGRhdGEubnNwbmFtZSwgZGF0YS5uYW1lKX19eyUg aWYgY2FzY2FkZSAlfSBjYXNjYWRleyUgZW5kaWYgJX07ClwgTm8gbmV3bGlu ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv dGFibGVzL3RlbXBsYXRlcy9pbmRleC9zcWwvOS4xX3BsdXMvZ2V0X2FtLnNx bCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvaW5kZXgvc3Fs LzkuMV9wbHVzL2dldF9hbS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uNWJiNTc5YgotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvaW5kZXgvc3FsLzkuMV9wbHVz L2dldF9hbS5zcWwKQEAgLTAsMCArMSwzIEBACistLSBGZXRjaGVzIGFjY2Vz cyBtZXRob2RzCitTRUxFQ1Qgb2lkLCBhbW5hbWUKK0ZST00gcGdfYW0KXCBO byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL2luZGV4L3NxbC85LjFfcGx1cy9n ZXRfY29sbGF0aW9ucy5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVt cGxhdGVzL2luZGV4L3NxbC85LjFfcGx1cy9nZXRfY29sbGF0aW9ucy5zcWwK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzQxODc0Mgot LS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1w bGF0ZXMvaW5kZXgvc3FsLzkuMV9wbHVzL2dldF9jb2xsYXRpb25zLnNxbApA QCAtMCwwICsxLDcgQEAKK1NFTEVDVCAtLW5zcG5hbWUsIGNvbGxuYW1lLAor CUNBU0UgV0hFTiBsZW5ndGgobnNwbmFtZSkgPiAwIEFORCBsZW5ndGgoY29s bG5hbWUpID4gMCAgVEhFTgorCSAgY29uY2F0KHF1b3RlX2lkZW50KG5zcG5h bWUpLCAnLicsIHF1b3RlX2lkZW50KGNvbGxuYW1lKSkKKwlFTFNFICcnIEVO RCBBUyBjb2xsYXRpb24KK0ZST00gcGdfY29sbGF0aW9uIGMsIHBnX25hbWVz cGFjZSBuCisgICAgV0hFUkUgYy5jb2xsbmFtZXNwYWNlPW4ub2lkCisgICAg T1JERVIgQlkgbnNwbmFtZSwgY29sbG5hbWU7ClwgTm8gbmV3bGluZSBhdCBl bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVz L3RlbXBsYXRlcy9pbmRleC9zcWwvOS4xX3BsdXMvZ2V0X29pZC5zcWwgYi93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL2luZGV4L3NxbC85LjFf cGx1cy9nZXRfb2lkLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi5jMzI0MDJmCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvdGFibGVzL3RlbXBsYXRlcy9pbmRleC9zcWwvOS4xX3BsdXMvZ2V0 X29pZC5zcWwKQEAgLTAsMCArMSw3IEBACitTRUxFQ1QgRElTVElOQ1QgT04o Y2xzLnJlbG5hbWUpIGNscy5vaWQKK0ZST00gcGdfaW5kZXggaWR4CisgICAg Sk9JTiBwZ19jbGFzcyBjbHMgT04gY2xzLm9pZD1pbmRleHJlbGlkCisgICAg Sk9JTiBwZ19jbGFzcyB0YWIgT04gdGFiLm9pZD1pbmRyZWxpZAorICAgIEpP SU4gcGdfbmFtZXNwYWNlIG4gT04gbi5vaWQ9dGFiLnJlbG5hbWVzcGFjZQor V0hFUkUgaW5kcmVsaWQgPSB7e3RpZH19OjpPSUQKKyAgICBBTkQgY2xzLnJl bG5hbWUgPSB7e2RhdGEubmFtZXxxdExpdGVyYWx9fTsKXCBObyBuZXdsaW5l IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90 YWJsZXMvdGVtcGxhdGVzL2luZGV4L3NxbC85LjFfcGx1cy9nZXRfb3BfY2xh c3Muc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy9pbmRl eC9zcWwvOS4xX3BsdXMvZ2V0X29wX2NsYXNzLnNxbApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZjAxMzNhCi0tLSAvZGV2L251bGwK KysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy9pbmRleC9z cWwvOS4xX3BsdXMvZ2V0X29wX2NsYXNzLnNxbApAQCAtMCwwICsxLDUgQEAK K1NFTEVDVCBvcGNuYW1lLCAgb3BjbWV0aG9kCitGUk9NIHBnX29wY2xhc3MK KyAgICBXSEVSRSBvcGNtZXRob2QgPSB7e29pZH19OjpPSUQKKyAgICBBTkQg Tk9UIG9wY2RlZmF1bHQKKyAgICBPUkRFUiBCWSAxOwpcIE5vIG5ld2xpbmUg YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3Rh Ymxlcy90ZW1wbGF0ZXMvaW5kZXgvc3FsLzkuMV9wbHVzL2dldF9wYXJlbnQu c3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy9pbmRleC9z cWwvOS4xX3BsdXMvZ2V0X3BhcmVudC5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMC4uNWRkNWQzYwotLS0gL2Rldi9udWxsCisrKyBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvaW5kZXgvc3FsLzku MV9wbHVzL2dldF9wYXJlbnQuc3FsCkBAIC0wLDAgKzEsNSBAQAorU0VMRUNU IG5zcC5uc3BuYW1lIEFTIHNjaGVtYSAscmVsLnJlbG5hbWUgQVMgdGFibGUK K0ZST00gcGdfY2xhc3MgcmVsCisgICAgSk9JTiBwZ19uYW1lc3BhY2UgbnNw CisgICAgT04gcmVsLnJlbG5hbWVzcGFjZSA9IG5zcC5vaWQ6OmludAorICAg IFdIRVJFIHJlbC5vaWQgPSB7e3RpZH19OjppbnQKXCBObyBuZXdsaW5lIGF0 IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJs ZXMvdGVtcGxhdGVzL2luZGV4L3NxbC85LjFfcGx1cy9ub2Rlcy5zcWwgYi93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL2luZGV4L3NxbC85LjFf cGx1cy9ub2Rlcy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMC4uOWU5Yzk0OAotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL3RhYmxlcy90ZW1wbGF0ZXMvaW5kZXgvc3FsLzkuMV9wbHVzL25vZGVz LnNxbApAQCAtMCwwICsxLDEyIEBACitTRUxFQ1QgRElTVElOQ1QgT04oY2xz LnJlbG5hbWUpIGNscy5vaWQsIGNscy5yZWxuYW1lIGFzIG5hbWUKK0ZST00g cGdfaW5kZXggaWR4CisgICAgSk9JTiBwZ19jbGFzcyBjbHMgT04gY2xzLm9p ZD1pbmRleHJlbGlkCisgICAgSk9JTiBwZ19jbGFzcyB0YWIgT04gdGFiLm9p ZD1pbmRyZWxpZAorICAgIExFRlQgT1VURVIgSk9JTiBwZ190YWJsZXNwYWNl IHRhIG9uIHRhLm9pZD1jbHMucmVsdGFibGVzcGFjZQorICAgIEpPSU4gcGdf bmFtZXNwYWNlIG4gT04gbi5vaWQ9dGFiLnJlbG5hbWVzcGFjZQorICAgIEpP SU4gcGdfYW0gYW0gT04gYW0ub2lkPWNscy5yZWxhbQorICAgIExFRlQgSk9J TiBwZ19kZXBlbmQgZGVwIE9OIChkZXAuY2xhc3NpZCA9IGNscy50YWJsZW9p ZCBBTkQgZGVwLm9iamlkID0gY2xzLm9pZCBBTkQgZGVwLnJlZm9ianN1Ymlk ID0gJzAnIEFORCBkZXAucmVmY2xhc3NpZD0oU0VMRUNUIG9pZCBGUk9NIHBn X2NsYXNzIFdIRVJFIHJlbG5hbWU9J3BnX2NvbnN0cmFpbnQnKSBBTkQgZGVw LmRlcHR5cGU9J2knKQorICAgIExFRlQgT1VURVIgSk9JTiBwZ19jb25zdHJh aW50IGNvbiBPTiAoY29uLnRhYmxlb2lkID0gZGVwLnJlZmNsYXNzaWQgQU5E IGNvbi5vaWQgPSBkZXAucmVmb2JqaWQpCitXSEVSRSBpbmRyZWxpZCA9IHt7 dGlkfX06Ok9JRAorICAgIEFORCBjb25uYW1lIGlzIE5VTEwKKyAgICBPUkRF UiBCWSBjbHMucmVsbmFtZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMv aW5kZXgvc3FsLzkuMV9wbHVzL3Byb3BlcnRpZXMuc3FsIGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvdGFibGVzL3RlbXBsYXRlcy9pbmRleC9zcWwvOS4xX3BsdXMvcHJv cGVydGllcy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MC4uMjY0MWQ0YwotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L3RhYmxlcy90ZW1wbGF0ZXMvaW5kZXgvc3FsLzkuMV9wbHVzL3Byb3BlcnRp ZXMuc3FsCkBAIC0wLDAgKzEsMjIgQEAKK1NFTEVDVCBESVNUSU5DVCBPTihj bHMucmVsbmFtZSkgY2xzLm9pZCwgY2xzLnJlbG5hbWUgYXMgbmFtZSwgaW5k cmVsaWQsIGluZGtleSwgaW5kaXNjbHVzdGVyZWQsCisgICAgaW5kaXN2YWxp ZCwgaW5kaXN1bmlxdWUsIGluZGlzcHJpbWFyeSwgbi5uc3BuYW1lLGluZG5h dHRzLGNscy5yZWx0YWJsZXNwYWNlIEFTIHNwY29pZCwKKyAgICBDT0FMRVND RShzcGNuYW1lLCAncGdfZGVmYXVsdCcpIGFzIHNwY25hbWUsIHRhYi5yZWxu YW1lIGFzIHRhYm5hbWUsIGluZGNsYXNzLCBjb24ub2lkIEFTIGNvbm9pZCwK KyAgICBDQVNFIFdIRU4gY29udHlwZSBJTiAoJ3AnLCAndScsICd4JykgVEhF TiBkZXNwLmRlc2NyaXB0aW9uCisgICAgICAgICBFTFNFIGRlcy5kZXNjcmlw dGlvbiBFTkQgQVMgZGVzY3JpcHRpb24sCisgICAgcGdfZ2V0X2V4cHIoaW5k cHJlZCwgaW5kcmVsaWQsIHRydWUpIGFzIGluZGNvbnN0cmFpbnQsIGNvbnR5 cGUsIGNvbmRlZmVycmFibGUsIGNvbmRlZmVycmVkLCBhbW5hbWUsCisgICAg c3Vic3RyaW5nKGFycmF5X3RvX3N0cmluZyhjbHMucmVsb3B0aW9ucywgJywn KSBmcm9tICdmaWxsZmFjdG9yPShbMC05XSopJykgQVMgZmlsbGZhY3Rvcgor ICAgIHslIGlmIGRhdGxhc3RzeXNvaWQgJX0sIChDQVNFIFdIRU4gY2xzLm9p ZCA8PSB7eyBkYXRsYXN0c3lzb2lkfX06Om9pZCBUSEVOIHRydWUgRWxTRSBm YWxzZSBFTkQpIEFTIGlzX3N5c19pZHggeyUgZW5kaWYgJX0KK0ZST00gcGdf aW5kZXggaWR4CisgICAgSk9JTiBwZ19jbGFzcyBjbHMgT04gY2xzLm9pZD1p bmRleHJlbGlkCisgICAgSk9JTiBwZ19jbGFzcyB0YWIgT04gdGFiLm9pZD1p bmRyZWxpZAorICAgIExFRlQgT1VURVIgSk9JTiBwZ190YWJsZXNwYWNlIHRh IG9uIHRhLm9pZD1jbHMucmVsdGFibGVzcGFjZQorICAgIEpPSU4gcGdfbmFt ZXNwYWNlIG4gT04gbi5vaWQ9dGFiLnJlbG5hbWVzcGFjZQorICAgIEpPSU4g cGdfYW0gYW0gT04gYW0ub2lkPWNscy5yZWxhbQorICAgIExFRlQgSk9JTiBw Z19kZXBlbmQgZGVwIE9OIChkZXAuY2xhc3NpZCA9IGNscy50YWJsZW9pZCBB TkQgZGVwLm9iamlkID0gY2xzLm9pZCBBTkQgZGVwLnJlZm9ianN1YmlkID0g JzAnIEFORCBkZXAucmVmY2xhc3NpZD0oU0VMRUNUIG9pZCBGUk9NIHBnX2Ns YXNzIFdIRVJFIHJlbG5hbWU9J3BnX2NvbnN0cmFpbnQnKSBBTkQgZGVwLmRl cHR5cGU9J2knKQorICAgIExFRlQgT1VURVIgSk9JTiBwZ19jb25zdHJhaW50 IGNvbiBPTiAoY29uLnRhYmxlb2lkID0gZGVwLnJlZmNsYXNzaWQgQU5EIGNv bi5vaWQgPSBkZXAucmVmb2JqaWQpCisgICAgTEVGVCBPVVRFUiBKT0lOIHBn X2Rlc2NyaXB0aW9uIGRlcyBPTiAoZGVzLm9iam9pZD1jbHMub2lkIEFORCBk ZXMuY2xhc3NvaWQ9J3BnX2NsYXNzJzo6cmVnY2xhc3MpCisgICAgTEVGVCBP VVRFUiBKT0lOIHBnX2Rlc2NyaXB0aW9uIGRlc3AgT04gKGRlc3Aub2Jqb2lk PWNvbi5vaWQgQU5EIGRlc3Aub2Jqc3ViaWQgPSAwIEFORCBkZXNwLmNsYXNz b2lkPSdwZ19jb25zdHJhaW50Jzo6cmVnY2xhc3MpCitXSEVSRSBpbmRyZWxp ZCA9IHt7dGlkfX06Ok9JRAorICAgIEFORCBjb25uYW1lIGlzIE5VTEwKKyAg ICB7JSBpZiBpZHggJX1BTkQgY2xzLm9pZCA9IHt7aWR4fX06Ok9JRCB7JSBl bmRpZiAlfQorICAgIE9SREVSIEJZIGNscy5yZWxuYW1lClwgTm8gbmV3bGlu ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv dGFibGVzL3RlbXBsYXRlcy9pbmRleC9zcWwvOS4xX3BsdXMvdXBkYXRlLnNx bCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvaW5kZXgvc3Fs LzkuMV9wbHVzL3VwZGF0ZS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uZjJhY2Q2YwotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvaW5kZXgvc3FsLzkuMV9wbHVz L3VwZGF0ZS5zcWwKQEAgLTAsMCArMSwyNCBAQAoreyMjIENoYW5nZXMgbmFt ZSAjI30KK3slIGlmIGRhdGEubmFtZSBhbmQgb19kYXRhLm5hbWUgIT0gZGF0 YS5uYW1lICV9CitBTFRFUiBJTkRFWCB7e2Nvbm58cXRJZGVudChkYXRhLnNj aGVtYSwgb19kYXRhLm5hbWUpfX0KKyAgICBSRU5BTUUgVE8ge3tjb25ufHF0 SWRlbnQoZGF0YS5uYW1lKX19OworeyUgZW5kaWYgJX0KK3sjIyBDaGFuZ2Vz IGZpbGxmYWN0b3IgIyN9Cit7JSBpZiBkYXRhLmZpbGxmYWN0b3IgYW5kIG9f ZGF0YS5maWxsZmFjdG9yICE9IGRhdGEuZmlsbGZhY3RvciAlfQorQUxURVIg SU5ERVgge3tjb25ufHF0SWRlbnQoZGF0YS5zY2hlbWEsIGRhdGEubmFtZSl9 fQorICAgIFNFVCAoRklMTEZBQ1RPUj17e2RhdGEuZmlsbGZhY3Rvcn19KTsK K3slIGVuZGlmICV9Cit7IyMgQ2hhbmdlcyB0YWJsZXNwYWNlICMjfQoreyUg aWYgZGF0YS5zcGNuYW1lIGFuZCBvX2RhdGEuc3BjbmFtZSAhPSBkYXRhLnNw Y25hbWUgJX0KK0FMVEVSIElOREVYIHt7Y29ubnxxdElkZW50KGRhdGEuc2No ZW1hLCBkYXRhLm5hbWUpfX0KKyAgICBTRVQgVEFCTEVTUEFDRSB7e2Nvbm58 cXRJZGVudChkYXRhLnNwY25hbWUpfX07Cit7JSBlbmRpZiAlfQoreyMjIEFs dGVyIGluZGV4IHRvIHVzZSBjbHVzdGVyIHR5cGUgIyN9Cit7JSBpZiBkYXRh LmluZGlzY2x1c3RlcmVkIGlzIGRlZmluZWQgYW5kIG9fZGF0YS5pbmRpc2Ns dXN0ZXJlZCAhPSBkYXRhLmluZGlzY2x1c3RlcmVkICV9CitBTFRFUiBUQUJM RSB7e2Nvbm58cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0YS50YWJsZSl9fQor ICAgIENMVVNURVIgT04ge3tjb25ufHF0SWRlbnQoZGF0YS5uYW1lKX19Owor eyUgZW5kaWYgJX0KK3sjIyBDaGFuZ2VzIGRlc2NyaXB0aW9uICMjfQoreyUg aWYgZGF0YS5kZXNjcmlwdGlvbiBpcyBkZWZpbmVkIGFuZCBvX2RhdGEuZGVz Y3JpcHRpb24gIT0gZGF0YS5kZXNjcmlwdGlvbiAlfQorQ09NTUVOVCBPTiBJ TkRFWCB7e2Nvbm58cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0YS5uYW1lKX19 CisgICAgSVMge3tkYXRhLmRlc2NyaXB0aW9ufHF0TGl0ZXJhbH19O3slIGVu ZGlmICV9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0 IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy9pbmRleF9jb25z dHJhaW50L3NxbC9hbHRlci5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMv dGVtcGxhdGVzL2luZGV4X2NvbnN0cmFpbnQvc3FsL2FsdGVyLnNxbApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZmIwZWE1Ci0tLSAv ZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRl cy9pbmRleF9jb25zdHJhaW50L3NxbC9hbHRlci5zcWwKQEAgLTAsMCArMSw0 IEBACit7JSBpZiBkYXRhLmNvbW1lbnQgJX0KK0NPTU1FTlQgT04gQ09OU1RS QUlOVCB7eyBjb25ufHF0SWRlbnQoZGF0YS5uYW1lKSB9fSBPTiB7eyBjb25u fHF0SWRlbnQoZGF0YS5zY2hlbWEsIGRhdGEudGFibGUpIH19CisgICAgSVMg e3sgZGF0YS5jb21tZW50fHF0TGl0ZXJhbCB9fTsKK3slIGVuZGlmICV9Clwg Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy9pbmRleF9jb25zdHJhaW50L3Nx bC9iZWdpbi5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVz L2luZGV4X2NvbnN0cmFpbnQvc3FsL2JlZ2luLnNxbApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi41OGJmZWUxCi0tLSAvZGV2L251bGwK KysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy9pbmRleF9j b25zdHJhaW50L3NxbC9iZWdpbi5zcWwKQEAgLTAsMCArMSBAQAorQkVHSU47 ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy9pbmRleF9jb25zdHJhaW50 L3NxbC9jcmVhdGUuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBs YXRlcy9pbmRleF9jb25zdHJhaW50L3NxbC9jcmVhdGUuc3FsCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYxYTcxN2UKLS0tIC9kZXYv bnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL2lu ZGV4X2NvbnN0cmFpbnQvc3FsL2NyZWF0ZS5zcWwKQEAgLTAsMCArMSwxMiBA QAorQUxURVIgVEFCTEUge3sgY29ubnxxdElkZW50KGRhdGEuc2NoZW1hLCBk YXRhLnRhYmxlKSB9fQorICAgIEFERHslIGlmIGRhdGEubmFtZSAlfSBDT05T VFJBSU5UIHt7IGNvbm58cXRJZGVudChkYXRhLm5hbWUpIH19eyUgZW5kaWYl fSB7e2NvbnN0cmFpbnRfbmFtZX19IHslIGlmIGRhdGEuaW5kZXggJX1VU0lO RyBJTkRFWCB7eyBjb25ufHF0SWRlbnQoZGF0YS5pbmRleCkgfX17JSBlbHNl ICV9CisoeyUgZm9yIGNvbHVtbm9iaiBpbiBkYXRhLmNvbHVtbnMgJX17JSBp ZiBsb29wLmluZGV4ICE9IDEgJX0KKywgeyUgZW5kaWYgJX17eyBjb25ufHF0 SWRlbnQoY29sdW1ub2JqLmNvbHVtbil9fXslIGVuZGZvciAlfSl7JSBpZiBk YXRhLmZpbGxmYWN0b3IgJX0KKworICAgIFdJVEggKEZJTExGQUNUT1I9e3tk YXRhLmZpbGxmYWN0b3J9fSl7JSBlbmRpZiAlfXslIGlmIGRhdGEuc3BjbmFt ZSBhbmQgZGF0YS5zcGNuYW1lICE9ICJwZ19kZWZhdWx0IiAlfQorCisgICAg VVNJTkcgSU5ERVggVEFCTEVTUEFDRSB7eyBjb25ufHF0SWRlbnQoZGF0YS5z cGNuYW1lKSB9fXslIGVuZGlmICV9eyUgZW5kaWYgJX17JSBpZiBkYXRhLmNv bmRlZmVycmFibGUgJX0KKworICAgIERFRkVSUkFCTEV7JSBpZiBkYXRhLmNv bmRlZmVycmVkICV9CisgSU5JVElBTExZIERFRkVSUkVEeyUgZW5kaWYlfQor eyUgZW5kaWYlfTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg LS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL2luZGV4 X2NvbnN0cmFpbnQvc3FsL2RlbGV0ZS5zcWwgYi93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90 YWJsZXMvdGVtcGxhdGVzL2luZGV4X2NvbnN0cmFpbnQvc3FsL2RlbGV0ZS5z cWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjA5Njc5 NQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90 ZW1wbGF0ZXMvaW5kZXhfY29uc3RyYWludC9zcWwvZGVsZXRlLnNxbApAQCAt MCwwICsxLDMgQEAKK3slIGlmIGRhdGEgJX0KK0FMVEVSIFRBQkxFIHt7IGNv bm58cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0YS50YWJsZSkgfX0gRFJPUCBD T05TVFJBSU5UIHt7IGNvbm58cXRJZGVudChkYXRhLm5hbWUpIH19eyUgaWYg Y2FzY2FkZSV9IENBU0NBREV7JSBlbmRpZiAlfTsKK3slIGVuZGlmICV9Clwg Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy9pbmRleF9jb25zdHJhaW50L3Nx bC9lbmQuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy9p bmRleF9jb25zdHJhaW50L3NxbC9lbmQuc3FsCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLjkyZDA5ZDUKLS0tIC9kZXYvbnVsbAorKysg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL2luZGV4X2NvbnN0 cmFpbnQvc3FsL2VuZC5zcWwKQEAgLTAsMCArMSBAQAorRU5EOwpcIE5vIG5l d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL3RhYmxlcy90ZW1wbGF0ZXMvaW5kZXhfY29uc3RyYWludC9zcWwvZ2V0 X2NvbnN0cmFpbnRfY29scy5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMv dGVtcGxhdGVzL2luZGV4X2NvbnN0cmFpbnQvc3FsL2dldF9jb25zdHJhaW50 X2NvbHMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu LjRiMmZlZTIKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90 YWJsZXMvdGVtcGxhdGVzL2luZGV4X2NvbnN0cmFpbnQvc3FsL2dldF9jb25z dHJhaW50X2NvbHMuc3FsCkBAIC0wLDAgKzEsNyBAQAoreyUgZm9yIG4gaW4g cmFuZ2UoY29sY250fGludCkgJX0KK3slIGlmIGxvb3AuaW5kZXggIT0gMSAl fQorVU5JT04gU0VMRUNUICBwZ19nZXRfaW5kZXhkZWYoe3sgY2lkfHN0cmlu ZyB9fSwge3sgbG9vcC5pbmRleHxzdHJpbmcgfX0sIHRydWUpIEFTIGNvbHVt bgoreyUgZWxzZSAlfQorU0VMRUNUICBwZ19nZXRfaW5kZXhkZWYoe3sgY2lk fHN0cmluZyB9fSAsIHt7IGxvb3AuaW5kZXh8c3RyaW5nIH19ICwgdHJ1ZSkg QVMgY29sdW1uCit7JSBlbmRpZiAlfQoreyUgZW5kZm9yICV9ClwgTm8gbmV3 bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvdGFibGVzL3RlbXBsYXRlcy9pbmRleF9jb25zdHJhaW50L3NxbC9nZXRf aW5kaWNlcy5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVz L2luZGV4X2NvbnN0cmFpbnQvc3FsL2dldF9pbmRpY2VzLnNxbApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOWNhYjIxCi0tLSAvZGV2 L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy9p bmRleF9jb25zdHJhaW50L3NxbC9nZXRfaW5kaWNlcy5zcWwKQEAgLTAsMCAr MSwzIEBACitTRUxFQ1QgcmVsbmFtZSBGUk9NIHBnX2NsYXNzLCBwZ19pbmRl eAorV0hFUkUgcGdfY2xhc3Mub2lkPWluZGV4cmVsaWQKK0FORCBpbmRyZWxp ZD17eyB0aWQgfX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg LS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL2luZGV4 X2NvbnN0cmFpbnQvc3FsL2dldF9uYW1lLnNxbCBiL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L3RhYmxlcy90ZW1wbGF0ZXMvaW5kZXhfY29uc3RyYWludC9zcWwvZ2V0X25h bWUuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEx YmVhZmIKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJs ZXMvdGVtcGxhdGVzL2luZGV4X2NvbnN0cmFpbnQvc3FsL2dldF9uYW1lLnNx bApAQCAtMCwwICsxLDE1IEBACitTRUxFQ1QgY2xzLnJlbG5hbWUgYXMgbmFt ZQorRlJPTSBwZ19pbmRleCBpZHgKK0pPSU4gcGdfY2xhc3MgY2xzIE9OIGNs cy5vaWQ9aW5kZXhyZWxpZAorTEVGVCBKT0lOIHBnX2RlcGVuZCBkZXAgT04g KGRlcC5jbGFzc2lkID0gY2xzLnRhYmxlb2lkIEFORAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGRlcC5vYmppZCA9IGNscy5vaWQgQU5ECisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZGVwLnJlZm9ianN1YmlkID0gJzAn CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5EIGRlcC5yZWZjbGFz c2lkPShTRUxFQ1Qgb2lkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBGUk9NIHBnX2NsYXNzCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXSEVSRSBy ZWxuYW1lPSdwZ19jb25zdHJhaW50JykgQU5ECisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZGVwLmRlcHR5cGU9J2knKQorTEVGVCBPVVRFUiBKT0lO IHBnX2NvbnN0cmFpbnQgY29uIE9OIChjb24udGFibGVvaWQgPSBkZXAucmVm Y2xhc3NpZCBBTkQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY29uLm9pZCA9IGRlcC5yZWZvYmppZCkKK1dIRVJFIGluZHJlbGlk ID0ge3t0aWR9fTo6b2lkCitBTkQgY29udHlwZT0ne3tjb25zdHJhaW50X3R5 cGV9fScKK0FORCBjbHMub2lkID0ge3tjaWR9fTo6b2lkOwpcIE5vIG5ld2xp bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L3RhYmxlcy90ZW1wbGF0ZXMvaW5kZXhfY29uc3RyYWludC9zcWwvZ2V0X29p ZC5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL2luZGV4 X2NvbnN0cmFpbnQvc3FsL2dldF9vaWQuc3FsCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLjg2MWZmNTAKLS0tIC9kZXYvbnVsbAorKysg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL2luZGV4X2NvbnN0 cmFpbnQvc3FsL2dldF9vaWQuc3FsCkBAIC0wLDAgKzEsNCBAQAorU0VMRUNU IGN0LmNvbmluZGlkIGFzIG9pZAorRlJPTSBwZ19jb25zdHJhaW50IGN0CitX SEVSRSBjb250eXBlPSd7e2NvbnN0cmFpbnRfdHlwZX19JyBBTkQKK2N0LmNv bm5hbWUgPSB7eyBuYW1lfHF0TGl0ZXJhbCB9fTsKXCBObyBuZXdsaW5lIGF0 IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJs ZXMvdGVtcGxhdGVzL2luZGV4X2NvbnN0cmFpbnQvc3FsL2dldF9vaWRfd2l0 aF90cmFuc2FjdGlvbi5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVt cGxhdGVzL2luZGV4X2NvbnN0cmFpbnQvc3FsL2dldF9vaWRfd2l0aF90cmFu c2FjdGlvbi5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MC4uOWFkODAyMAotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L3RhYmxlcy90ZW1wbGF0ZXMvaW5kZXhfY29uc3RyYWludC9zcWwvZ2V0X29p ZF93aXRoX3RyYW5zYWN0aW9uLnNxbApAQCAtMCwwICsxLDUgQEAKK1NFTEVD VCBjdC5jb25pbmRpZCBhcyBvaWQsCisgICAgY3QuY29ubmFtZSBhcyBuYW1l CitGUk9NIHBnX2NvbnN0cmFpbnQgY3QKK1dIRVJFIGNvbnR5cGU9J3t7Y29u c3RyYWludF90eXBlfX0nIEFORAorICAgIGNvbnJlbGlkID0ge3t0aWR9fTo6 b2lkIExJTUlUIDE7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm IC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy9pbmRl eF9jb25zdHJhaW50L3NxbC9nZXRfcGFyZW50LnNxbCBiL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL3RhYmxlcy90ZW1wbGF0ZXMvaW5kZXhfY29uc3RyYWludC9zcWwvZ2V0 X3BhcmVudC5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MC4uYTY1Mjg1NwotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L3RhYmxlcy90ZW1wbGF0ZXMvaW5kZXhfY29uc3RyYWludC9zcWwvZ2V0X3Bh cmVudC5zcWwKQEAgLTAsMCArMSw3IEBACitTRUxFQ1QgbnNwLm5zcG5hbWUg QVMgc2NoZW1hLAorICAgIHJlbC5yZWxuYW1lIEFTIHRhYmxlCitGUk9NCisg ICAgcGdfY2xhc3MgcmVsCitKT0lOIHBnX25hbWVzcGFjZSBuc3AKK09OIHJl bC5yZWxuYW1lc3BhY2UgPSBuc3Aub2lkOjppbnQKK1dIRVJFIHJlbC5vaWQg PSB7e3RpZH19OjppbnQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp ZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL2lu ZGV4X2NvbnN0cmFpbnQvc3FsL25vZGVzLnNxbCBiL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L3RhYmxlcy90ZW1wbGF0ZXMvaW5kZXhfY29uc3RyYWludC9zcWwvbm9kZXMu c3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVkOTZi NDQKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMv dGVtcGxhdGVzL2luZGV4X2NvbnN0cmFpbnQvc3FsL25vZGVzLnNxbApAQCAt MCwwICsxLDE0IEBACitTRUxFQ1QgY2xzLm9pZCwgY2xzLnJlbG5hbWUgYXMg bmFtZQorRlJPTSBwZ19pbmRleCBpZHgKK0pPSU4gcGdfY2xhc3MgY2xzIE9O IGNscy5vaWQ9aW5kZXhyZWxpZAorTEVGVCBKT0lOIHBnX2RlcGVuZCBkZXAg T04gKGRlcC5jbGFzc2lkID0gY2xzLnRhYmxlb2lkIEFORAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGRlcC5vYmppZCA9IGNscy5vaWQgQU5ECisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwLnJlZm9ianN1YmlkID0g JzAnIEFORAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcC5yZWZj bGFzc2lkPShTRUxFQ1Qgb2lkCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEZST00gcGdfY2xhc3MKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0hFUkUgcmVsbmFt ZT0ncGdfY29uc3RyYWludCcpIEFORAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGRlcC5kZXB0eXBlPSdpJykKK0xFRlQgT1VURVIgSk9JTiBwZ19j b25zdHJhaW50IGNvbiBPTiAoY29uLnRhYmxlb2lkID0gZGVwLnJlZmNsYXNz aWQgQU5ECisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNvbi5vaWQgPSBkZXAucmVmb2JqaWQpCitXSEVSRSBpbmRyZWxpZCA9IHt7 dGlkfX06Om9pZAorQU5EIGNvbnR5cGU9J3t7Y29uc3RyYWludF90eXBlfX0n ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy9pbmRleF9jb25zdHJhaW50 L3NxbC9wcm9wZXJ0aWVzLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90 ZW1wbGF0ZXMvaW5kZXhfY29uc3RyYWludC9zcWwvcHJvcGVydGllcy5zcWwK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGVhYmRkNwot LS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1w bGF0ZXMvaW5kZXhfY29uc3RyYWludC9zcWwvcHJvcGVydGllcy5zcWwKQEAg LTAsMCArMSwyOSBAQAorU0VMRUNUIGNscy5vaWQsCisgICAgY2xzLnJlbG5h bWUgYXMgbmFtZSwKKyAgICBpbmRuYXR0cywKKyAgICBDT0FMRVNDRShzcGNu YW1lLCAncGdfZGVmYXVsdCcpIGFzIHNwY25hbWUsCisgICAgQ0FTRSBjb250 eXBlCisgICAgICAgIFdIRU4gJ3AnIFRIRU4gZGVzcC5kZXNjcmlwdGlvbgor ICAgICAgICBXSEVOICd1JyBUSEVOIGRlc3AuZGVzY3JpcHRpb24KKyAgICAg ICAgV0hFTiAneCcgVEhFTiBkZXNwLmRlc2NyaXB0aW9uCisgICAgICAgIEVM U0UgZGVzLmRlc2NyaXB0aW9uCisgICAgRU5EIEFTIGNvbW1lbnQsCisgICAg Y29uZGVmZXJyYWJsZSwKKyAgICBjb25kZWZlcnJlZCwKKyAgICBzdWJzdHJp bmcoYXJyYXlfdG9fc3RyaW5nKGNscy5yZWxvcHRpb25zLCAnLCcpIGZyb20g J2ZpbGxmYWN0b3I9KFswLTldKiknKSBBUyBmaWxsZmFjdG9yCitGUk9NIHBn X2luZGV4IGlkeAorSk9JTiBwZ19jbGFzcyBjbHMgT04gY2xzLm9pZD1pbmRl eHJlbGlkCitKT0lOIHBnX2NsYXNzIHRhYiBPTiB0YWIub2lkPWluZHJlbGlk CitMRUZUIE9VVEVSIEpPSU4gcGdfdGFibGVzcGFjZSB0YSBvbiB0YS5vaWQ9 Y2xzLnJlbHRhYmxlc3BhY2UKK0pPSU4gcGdfbmFtZXNwYWNlIG4gT04gbi5v aWQ9dGFiLnJlbG5hbWVzcGFjZQorSk9JTiBwZ19hbSBhbSBPTiBhbS5vaWQ9 Y2xzLnJlbGFtCitMRUZUIEpPSU4gcGdfZGVwZW5kIGRlcCBPTiAoZGVwLmNs YXNzaWQgPSBjbHMudGFibGVvaWQgQU5EIGRlcC5vYmppZCA9IGNscy5vaWQg QU5EIGRlcC5yZWZvYmpzdWJpZCA9ICcwJyBBTkQgZGVwLnJlZmNsYXNzaWQ9 KFNFTEVDVCBvaWQgRlJPTSBwZ19jbGFzcyBXSEVSRSByZWxuYW1lPSdwZ19j b25zdHJhaW50JykgQU5EIGRlcC5kZXB0eXBlPSdpJykKK0xFRlQgT1VURVIg Sk9JTiBwZ19jb25zdHJhaW50IGNvbiBPTiAoY29uLnRhYmxlb2lkID0gZGVw LnJlZmNsYXNzaWQgQU5EIGNvbi5vaWQgPSBkZXAucmVmb2JqaWQpCitMRUZU IE9VVEVSIEpPSU4gcGdfZGVzY3JpcHRpb24gZGVzIE9OIChkZXMub2Jqb2lk PWNscy5vaWQgQU5EIGRlcy5jbGFzc29pZD0ncGdfY2xhc3MnOjpyZWdjbGFz cykKK0xFRlQgT1VURVIgSk9JTiBwZ19kZXNjcmlwdGlvbiBkZXNwIE9OIChk ZXNwLm9iam9pZD1jb24ub2lkIEFORCBkZXNwLm9ianN1YmlkID0gMCBBTkQg ZGVzcC5jbGFzc29pZD0ncGdfY29uc3RyYWludCc6OnJlZ2NsYXNzKQorV0hF UkUgaW5kcmVsaWQgPSB7e3RpZH19OjpvaWQKK3slIGlmIGNpZCAlfQorQU5E IGNscy5vaWQgPSB7e2NpZH19OjpvaWQKK3slIGVuZGlmICV9CitBTkQgY29u dHlwZT0ne3tjb25zdHJhaW50X3R5cGV9fScKK09SREVSIEJZIGNscy5yZWxu YW1lClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy9pbmRleF9jb25zdHJh aW50L3NxbC91cGRhdGUuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3Rl bXBsYXRlcy9pbmRleF9jb25zdHJhaW50L3NxbC91cGRhdGUuc3FsCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2MTg1MzIKLS0tIC9k ZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVz L2luZGV4X2NvbnN0cmFpbnQvc3FsL3VwZGF0ZS5zcWwKQEAgLTAsMCArMSwy MiBAQAoreyMjIyBTUUwgdG8gdXBkYXRlIGNvbnN0cmFpbnQgb2JqZWN0ICMj I30KK3slIGlmIGRhdGEgJX0KK3sjID09PT0gVG8gdXBkYXRlIGNvbnN0cmFp bnQgbmFtZSA9PT09ICN9Cit7JSBpZiBkYXRhLm5hbWUgIT0gb19kYXRhLm5h bWUgJX0KK0FMVEVSIFRBQkxFIHt7IGNvbm58cXRJZGVudChkYXRhLnNjaGVt YSwgZGF0YS50YWJsZSkgfX0KKyAgICBSRU5BTUUgQ09OU1RSQUlOVCB7eyBj b25ufHF0SWRlbnQob19kYXRhLm5hbWUpIH19IFRPIHt7IGNvbm58cXRJZGVu dChkYXRhLm5hbWUpIH19OworeyUgZW5kaWYgJX0KK3sjID09PT0gVG8gdXBk YXRlIGNvbnN0cmFpbnQgdGFibGVzcGFjZSA9PT09ICN9Cit7JSBpZiBkYXRh LnNwY25hbWUgYW5kIGRhdGEuc3BjbmFtZSAhPSBvX2RhdGEuc3BjbmFtZSAl fQorQUxURVIgSU5ERVgge3sgY29ubnxxdElkZW50KGRhdGEuc2NoZW1hLCBk YXRhLm5hbWUpIH19CisgICAgU0VUIFRBQkxFU1BBQ0Uge3sgY29ubnxxdElk ZW50KGRhdGEuc3BjbmFtZSkgfX07Cit7JSBlbmRpZiAlfQoreyUgaWYgZGF0 YS5maWxsZmFjdG9yIGFuZCBkYXRhLmZpbGxmYWN0b3IgIT0gb19kYXRhLmZp bGxmYWN0b3IgJX0KK0FMVEVSIElOREVYIHt7IGNvbm58cXRJZGVudChkYXRh LnNjaGVtYSwgZGF0YS5uYW1lKSB9fQorICAgIFNFVCAoRklMTEZBQ1RPUj17 eyBkYXRhLmZpbGxmYWN0b3IgfX0pOworeyUgZW5kaWYgJX0KK3sjID09PT0g VG8gdXBkYXRlIGNvbnN0cmFpbnQgY29tbWVudHMgPT09PSAjfQoreyUgaWYg ZGF0YS5jb21tZW50IGlzIGRlZmluZWQgYW5kIGRhdGEuY29tbWVudCAhPSBv X2RhdGEuY29tbWVudCAlfQorQ09NTUVOVCBPTiBDT05TVFJBSU5UIHt7IGNv bm58cXRJZGVudChkYXRhLm5hbWUpIH19IE9OIHt7IGNvbm58cXRJZGVudChk YXRhLnNjaGVtYSwgZGF0YS50YWJsZSkgfX0KKyAgICBJUyB7eyBkYXRhLmNv bW1lbnR8cXRMaXRlcmFsIH19OworeyUgZW5kaWYgJX0KK3slIGVuZGlmICV9 ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy9ydWxlcy9zcWwvYmFja2Vu ZF9zdXBwb3J0LnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0 ZXMvcnVsZXMvc3FsL2JhY2tlbmRfc3VwcG9ydC5zcWwKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmI1ZThkOAotLS0gL2Rldi9udWxs CisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvcnVsZXMv c3FsL2JhY2tlbmRfc3VwcG9ydC5zcWwKQEAgLTAsMCArMSw5IEBACit7Iz09 PT09PT09PT09PT1DaGVja3MgaWYgaXQgaXMgbWF0ZXJpYWxpemVkIHZpZXc9 PT09PT09PSN9Cit7JSBpZiB2aWQgJX0KK1NFTEVDVAorICAgIENBU0UgV0hF TiBjLnJlbGtpbmQgPSAnbScgVEhFTiBGYWxzZSBFTFNFIFRydWUgRU5EIEFz IG1fdmlldworRlJPTQorICAgIHBnX2NsYXNzIGMKK1dIRVJFCisgICAgYy5v aWQgPSB7eyB2aWQgfX06Om9pZAoreyUgZW5kaWYgJX0KZGlmZiAtLWdpdCBh L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvcnVsZXMvc3FsL2Ny ZWF0ZS5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3J1 bGVzL3NxbC9jcmVhdGUuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLmZhZDJjN2EKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3J1bGVzL3NxbC9jcmVhdGUuc3Fs CkBAIC0wLDAgKzEsMjcgQEAKK3sjID09PT09PT09PT09PUNyZWF0ZSBSdWxl PT09PT09PT09PT09PSAjfQoreyUgaWYgZGlzcGxheV9jb21tZW50cyAlfQor LS0gUnVsZToge3sgZGF0YS5uYW1lIH19IE9OIHt7IGNvbm58cXRJZGVudChk YXRhLnNjaGVtYSwgZGF0YS5uYW1lKSB9fQorCistLSBEUk9QIFJ1bGUge3sg ZGF0YS5uYW1lIH19IE9OIHt7IGNvbm58cXRJZGVudChkYXRhLnNjaGVtYSwg ZGF0YS5uYW1lKSB9fTsKKworeyUgZW5kaWYgJX0KK3slIGlmIGRhdGEubmFt ZSBhbmQgZGF0YS5zY2hlbWEgYW5kIGRhdGEudmlldyAlfQorQ1JFQVRFIE9S IFJFUExBQ0UgUlVMRSB7eyBjb25ufHF0SWRlbnQoZGF0YS5uYW1lKSB9fSBB UworICAgIE9OIHt7IGRhdGEuZXZlbnR8dXBwZXIgaWYgZGF0YS5ldmVudCBl bHNlICdTRUxFQ1QnIH19IFRPIHt7IGNvbm58cXRJZGVudChkYXRhLnNjaGVt YSwgZGF0YS52aWV3KSB9fQoreyUgaWYgZGF0YS5jb25kaXRpb24gJX0KKyAg ICBXSEVSRSB7eyBkYXRhLmNvbmRpdGlvbiB9fQoreyUgZW5kaWYgJX0KKyAg ICBET3slIGlmIGRhdGEuZG9faW5zdGVhZCBpbiBbJ3RydWUnLCBUcnVlXSAl fQore3sgJyBJTlNURUFEJyB9fQoreyUgZWxzZSAlfQore3sgJycgfX0KK3sl IGVuZGlmICV9Cit7JSBpZiBkYXRhLnN0YXRlbWVudHMgJX0KK3t7IGRhdGEu c3RhdGVtZW50cy5yc3RyaXAoJzsnKSB9fTsKK3slIGVsc2UgJX0KKyAgTk9U SElORzsKK3slIGVuZGlmICV9Cit7JSBpZiBkYXRhLmNvbW1lbnQgJX0KKwor Q09NTUVOVCBPTiBSVUxFIHt7IGNvbm58cXRJZGVudChkYXRhLm5hbWUpIH19 IE9OIHt7IGNvbm58cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0YS52aWV3KSB9 fSBJUyB7eyBkYXRhLmNvbW1lbnR8cXRMaXRlcmFsIH19O3slIGVuZGlmICV9 Cit7JSBlbmRpZiAlfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFi bGVzL3RlbXBsYXRlcy9ydWxlcy9zcWwvZGVsZXRlLnNxbCBiL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvcnVsZXMvc3FsL2RlbGV0ZS5zcWwK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2YxODkxMwot LS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1w bGF0ZXMvcnVsZXMvc3FsL2RlbGV0ZS5zcWwKQEAgLTAsMCArMSwxNiBAQAor eyMgPT09PT09PT0gRHJvcC9DYXNjYWRlIFJ1bGUgPT09PT09PT09ICN9Cit7 JSBpZiByaWQgJX0KK1NFTEVDVAorICAgIHJ3LnJ1bGVuYW1lLAorICAgIGNs LnJlbG5hbWUsCisgICAgbnNwLm5zcG5hbWUKK0ZST00KKyAgICBwZ19yZXdy aXRlIHJ3CitKT0lOIHBnX2NsYXNzIGNsIE9OIGNsLm9pZD1ydy5ldl9jbGFz cworSk9JTiBwZ19uYW1lc3BhY2UgbnNwIE9OIG5zcC5vaWQ9Y2wucmVsbmFt ZXNwYWNlCitXSEVSRQorICAgIHJ3Lm9pZD17eyByaWQgfX07Cit7JSBlbmRp ZiAlfQoreyUgaWYgcnVsZW5hbWUgYW5kIHJlbG5hbWUgYW5kIG5zcG5hbWUg JX0KK0RST1AgUlVMRSB7eyBjb25ufHF0SWRlbnQocnVsZW5hbWUpIH19IE9O IHt7IGNvbm58cXRJZGVudChuc3BuYW1lLCByZWxuYW1lKSB9fSB7JSBpZiBj YXNjYWRlICV9IENBU0NBREUgeyUgZW5kaWYgJX07Cit7JSBlbmRpZiAlfQpk aWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy9y dWxlcy9zcWwvcHJvcGVydGllcy5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJs ZXMvdGVtcGxhdGVzL3J1bGVzL3NxbC9wcm9wZXJ0aWVzLnNxbApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZmRkMTM5Ci0tLSAvZGV2 L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy9y dWxlcy9zcWwvcHJvcGVydGllcy5zcWwKQEAgLTAsMCArMSwyNyBAQAoreyMg PT09PT09PT09PT09PT09PT09PSBGZXRjaCBSdWxlcyA9PT09PT09PT09PT09 PT09PT09PSAjfQoreyUgaWYgdGlkIG9yIHJpZCAlfQorU0VMRUNUCisgICAg cncub2lkIEFTIG9pZCwKKyAgICBydy5ydWxlbmFtZSBBUyBuYW1lLAorICAg IHJlbG5hbWUgQVMgdmlldywKKyAgICBDQVNFIFdIRU4gcmVsa2luZCA9ICdy JyBUSEVOIFRSVUUgRUxTRSBGQUxTRSBFTkQgQVMgcGFyZW50aXN0YWJsZSwK KyAgICBuc3BuYW1lIEFTIHNjaGVtYSwKKyAgICBkZXNjcmlwdGlvbiBBUyBj b21tZW50LAorICAgIHsjID09PT09IENoZWNrIHdoZXRoZXIgaXQgaXMgc3lz dGVtIHJ1bGUgb3Igbm90ID09PT09ICN9CisgICAgQ0FTRSBXSEVOIHJ3LnJ1 bGVuYW1lID0gJ19SRVRVUk4nIFRIRU4gVHJ1ZSBFTFNFIEZhbHNlIEVORCBB UyBzeXN0ZW1fcnVsZSwKKyAgICBDQVNFIFdIRU4gcncuZXZfZW5hYmxlZCAh PSAnRCcgVEhFTiBUcnVlIEVMU0UgRmFsc2UgRU5EIEFTIGVuYWJsZWQsCisg ICAgcGdfZ2V0X3J1bGVkZWYocncub2lkLCB0cnVlKSBBUyBkZWZpbml0aW9u CitGUk9NCisgICAgcGdfcmV3cml0ZSBydworSk9JTiBwZ19jbGFzcyBjbCBP TiBjbC5vaWQ9cncuZXZfY2xhc3MKK0pPSU4gcGdfbmFtZXNwYWNlIG5zcCBP TiBuc3Aub2lkPWNsLnJlbG5hbWVzcGFjZQorTEVGVCBPVVRFUiBKT0lOIHBn X2Rlc2NyaXB0aW9uIGRlcyBPTiAoZGVzLm9iam9pZD1ydy5vaWQgQU5EIGRl cy5jbGFzc29pZD0ncGdfcmV3cml0ZSc6OnJlZ2NsYXNzKQorV0hFUkUKKyAg eyUgaWYgdGlkICV9CisgICAgICBldl9jbGFzcyA9IHt7IHRpZCB9fQorICB7 JSBlbGlmIHJpZCAlfQorICAgICAgcncub2lkID0ge3sgcmlkIH19CisgIHsl IGVuZGlmICV9CitPUkRFUiBCWQorICAgIHJ3LnJ1bGVuYW1lCisgeyUgZW5k aWYgJX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1w bGF0ZXMvcnVsZXMvc3FsL3J1bGVfaWQuc3FsIGIvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv dGFibGVzL3RlbXBsYXRlcy9ydWxlcy9zcWwvcnVsZV9pZC5zcWwKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2RjNmRiYQotLS0gL2Rl di9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMv cnVsZXMvc3FsL3J1bGVfaWQuc3FsCkBAIC0wLDAgKzEsOSBAQAoreyM9PT09 PT09PUJlbG93IHdpbGwgcHJvdmlkZSBydWxlIGlkIGZvciBsYXN0IGNyZWF0 ZWQgcnVsZT09PT09PT09I30KK3slIGlmIHJ1bGVfbmFtZSAlfQorU0VMRUNU CisgICAgcncub2lkCitGUk9NCisgICAgcGdfcmV3cml0ZSBydworV0hFUkUK KyAgICBydy5ydWxlbmFtZT17eyBydWxlX25hbWV8cXRMaXRlcmFsIH19Cit7 JSBlbmRpZiAlfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVz L3RlbXBsYXRlcy9ydWxlcy9zcWwvdXBkYXRlLnNxbCBiL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL3RhYmxlcy90ZW1wbGF0ZXMvcnVsZXMvc3FsL3VwZGF0ZS5zcWwKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDk5ZDZlNAotLS0g L2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0 ZXMvcnVsZXMvc3FsL3VwZGF0ZS5zcWwKQEAgLTAsMCArMSwzMyBAQAoreyMg PT09PT0gVXBkYXRlIFJ1bGUgPT09PT0gI30KK3slIGlmIGRhdGEubmFtZSBp cyBkZWZpbmVkICV9Cit7JSBzZXQgcnVsZV9uYW1lID0gZGF0YS5uYW1lICV9 Cit7JSBlbHNlICV9Cit7JSBzZXQgcnVsZV9uYW1lID0gb19kYXRhLm5hbWUg JX0KK3slIGVuZGlmICV9Cit7JSBpZiBkYXRhLm5hbWUgYW5kIGRhdGEubmFt ZSAhPSBvX2RhdGEubmFtZSAlfQorQUxURVIgUlVMRSB7eyBjb25ufHF0SWRl bnQob19kYXRhLm5hbWUpIH19IE9OIHt7IGNvbm58cXRJZGVudChvX2RhdGEu c2NoZW1hLCBvX2RhdGEudmlldykgfX0gUkVOQU1FIFRPIHt7IGNvbm58cXRJ ZGVudChkYXRhLm5hbWUpIH19O3t7ICdcclxyJyB9fQoreyUgZW5kaWYgJX0K K3slIGlmIGRhdGEuZXZlbnQgb3IgZGF0YS5kb19pbnN0ZWFkIG9yIGRhdGEu Y29uZGl0aW9uIG9yIGRhdGEuc3RhdGVtZW50cyAlfQorQ1JFQVRFIE9SIFJF UExBQ0UgUlVMRSB7eyBjb25ufHF0SWRlbnQocnVsZV9uYW1lKSB9fSBBUwor ICAgIE9OIHslIGlmIGRhdGEuZXZlbnQgYW5kIGRhdGEuZXZlbnQgIT0gb19k YXRhLmV2ZW50ICV9e3sgZGF0YS5ldmVudHx1cHBlciB9fXslIGVsc2UgJX17 eyBvX2RhdGEuZXZlbnR8dXBwZXIgfX17JSBlbmRpZiAlfQorIFRPIHt7IGNv bm58cXRJZGVudChvX2RhdGEuc2NoZW1hLCBvX2RhdGEudmlldykgfX0KK3sl IGlmIGRhdGEuY29uZGl0aW9uIGFuZCBvX2RhdGEuY29uZGl0aW9uICE9IGRh dGEuY29uZGl0aW9uICV9CisgICAgV0hFUkUge3sgZGF0YS5jb25kaXRpb24g fX0KK3slIGVsaWYgZGF0YS5jb25kaXRpb24gaXMgbm90IGRlZmluZWQgYW5k IG9fZGF0YS5jb25kaXRpb24gJX0KKyAgICBXSEVSRSB7eyBvX2RhdGEuY29u ZGl0aW9uIH19Cit7JSBlbmRpZiAlfQorICAgIERPIHslIGlmICgoJ2RvX2lu c3RlYWQnIG5vdCBpbiBkYXRhIGFuZCBvX2RhdGEuZG9faW5zdGVhZCBpbiBb J3RydWUnLCBUcnVlXSkgb3IgKGRhdGEuZG9faW5zdGVhZCBpbiBbJ3RydWUn LCBUcnVlXSkpICV9e3sgJ0lOU1RFQUQnIH19eyUgZW5kaWYgJX0KK3slIGlm IGRhdGEuc3RhdGVtZW50cyBhbmQgZGF0YS5zdGF0ZW1lbnRzICE9IG9fZGF0 YS5zdGF0ZW1lbnRzICV9CisKK3t7IGRhdGEuc3RhdGVtZW50cy5yc3RyaXAo JzsnKSB9fTsKK3slIGVsaWYgZGF0YS5zdGF0ZW1lbnRzIGlzIG5vdCBkZWZp bmVkIGFuZCBvX2RhdGEuc3RhdGVtZW50cyAlfQorCit7eyBvX2RhdGEuc3Rh dGVtZW50cy5yc3RyaXAoJzsnKSB9fTsKK3slIGVsc2UgJX0KKyBOT1RISU5H OworeyUgZW5kaWYgJX0KKworeyUgZW5kaWYgJX0KK3slIHNldCBvbGRfY29t bWVudCA9IG9fZGF0YS5jb21tZW50fGRlZmF1bHQoJycsIHRydWUpICV9Cit7 JSBpZiAoZGF0YS5jb21tZW50IGlzIGRlZmluZWQgYW5kIChkYXRhLmNvbW1l bnQgIT0gb2xkX2NvbW1lbnQpKSAlfQorQ09NTUVOVCBPTiBSVUxFIHt7IGNv bm58cXRJZGVudChydWxlX25hbWUpIH19IE9OIHt7IGNvbm58cXRJZGVudChv X2RhdGEuc2NoZW1hLCBvX2RhdGEudmlldykgfX0gSVMge3sgZGF0YS5jb21t ZW50fHF0TGl0ZXJhbCB9fTt7JSBlbmRpZiAlfQpkaWZmIC0tZ2l0IGEvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy90YWJsZS9qcy90YWJsZS5q cyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvdGFibGUvanMv dGFibGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u YWUyYjQwZgotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3Rh Ymxlcy90ZW1wbGF0ZXMvdGFibGUvanMvdGFibGUuanMKQEAgLTAsMCArMSw5 NTQgQEAKK2RlZmluZSgKKyAgICBbCisgICAgJ2pxdWVyeScsICd1bmRlcnNj b3JlJywgJ3VuZGVyc2NvcmUuc3RyaW5nJywgJ3BnYWRtaW4nLAorICAgICdw Z2FkbWluLmJyb3dzZXInLCAnYWxlcnRpZnknLCAncGdhZG1pbi5icm93c2Vy LmNvbGxlY3Rpb24nLAorICAgICdwZ2FkbWluLm5vZGUuY29sdW1uJywgJ3Bn YWRtaW4ubm9kZS5jb25zdHJhaW50cycKKyAgICBdLAorZnVuY3Rpb24oJCwg XywgUywgcGdBZG1pbiwgcGdCcm93c2VyLCBhbGVydGlmeSkgeworCisgIGlm ICghcGdCcm93c2VyLk5vZGVzWydjb2xsLXRhYmxlJ10pIHsKKyAgICB2YXIg ZGF0YWJhc2VzID0gcGdBZG1pbi5Ccm93c2VyLk5vZGVzWydjb2xsLXRhYmxl J10gPQorICAgICAgcGdBZG1pbi5Ccm93c2VyLkNvbGxlY3Rpb24uZXh0ZW5k KHsKKyAgICAgICAgbm9kZTogJ3RhYmxlJywKKyAgICAgICAgbGFiZWw6ICd7 eyBfKCdUYWJsZXMnKSB9fScsCisgICAgICAgIHR5cGU6ICdjb2xsLXRhYmxl JywKKyAgICAgICAgY29sdW1uczogWyduYW1lJywgJ3JlbG93bmVyJywgJ2Rl c2NyaXB0aW9uJ10KKyAgICAgIH0pOworICB9OworCisgIGlmICghcGdCcm93 c2VyLk5vZGVzWyd0YWJsZSddKSB7CisgICAgcGdBZG1pbi5Ccm93c2VyLk5v ZGVzWyd0YWJsZSddID0gcGdCcm93c2VyLk5vZGUuZXh0ZW5kKHsKKyAgICAg IHR5cGU6ICd0YWJsZScsCisgICAgICBsYWJlbDogJ3t7IF8oJ1RhYmxlJykg fX0nLAorICAgICAgY29sbGVjdGlvbl90eXBlOiAnY29sbC10YWJsZScsCisg ICAgICBoYXNTUUw6IHRydWUsCisgICAgICBoYXNEZXBlbmRzOiB0cnVlLAor ICAgICAgc3FsQWx0ZXJIZWxwOiAnc3FsLWFsdGVydGFibGUuaHRtbCcsCisg ICAgICBzcWxDcmVhdGVIZWxwOiAnc3FsLWNyZWF0ZXRhYmxlLmh0bWwnLAor ICAgICAgcGFyZW50X3R5cGU6IFsnc2NoZW1hJywgJ2NhdGFsb2cnXSwKKyAg ICAgIGhhc1NjcmlwdFR5cGVzOiBbJ2NyZWF0ZScsICdzZWxlY3QnLCAnaW5z ZXJ0JywgJ3VwZGF0ZScsICdkZWxldGUnXSwKKyAgICAgIEluaXQ6IGZ1bmN0 aW9uKCkgeworICAgICAgICAvKiBBdm9pZCBtdWxpdHBsZSByZWdpc3RyYXRp b24gb2YgbWVudXMgKi8KKyAgICAgICAgaWYgKHRoaXMuaW5pdGlhbGl6ZWQp CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5pbml0aWFs aXplZCA9IHRydWU7CisKKyAgICAgICAgcGdCcm93c2VyLmFkZF9tZW51cyhb eworICAgICAgICAgIG5hbWU6ICdjcmVhdGVfdGFibGVfb25fY29sbCcsIG5v ZGU6ICdjb2xsLXRhYmxlJywgbW9kdWxlOiB0aGlzLAorICAgICAgICAgIGFw cGxpZXM6IFsnb2JqZWN0JywgJ2NvbnRleHQnXSwgY2FsbGJhY2s6ICdzaG93 X29ial9wcm9wZXJ0aWVzJywKKyAgICAgICAgICBjYXRlZ29yeTogJ2NyZWF0 ZScsIHByaW9yaXR5OiAxLCBsYWJlbDogJ3t7IF8oJ1RhYmxlLi4uJykgfX0n LAorICAgICAgICAgIGljb246ICd3Y1RhYkljb24gaWNvbi10YWJsZScsIGRh dGE6IHthY3Rpb246ICdjcmVhdGUnLCBjaGVjazogdHJ1ZX0sCisgICAgICAg ICAgZW5hYmxlOiAnY2FuQ3JlYXRlJworICAgICAgICB9LHsKKyAgICAgICAg ICBuYW1lOiAnY3JlYXRlX3RhYmxlJywgbm9kZTogJ3RhYmxlJywgbW9kdWxl OiB0aGlzLAorICAgICAgICAgIGFwcGxpZXM6IFsnb2JqZWN0JywgJ2NvbnRl eHQnXSwgY2FsbGJhY2s6ICdzaG93X29ial9wcm9wZXJ0aWVzJywKKyAgICAg ICAgICBjYXRlZ29yeTogJ2NyZWF0ZScsIHByaW9yaXR5OiAxLCBsYWJlbDog J3t7IF8oJ1RhYmxlLi4uJykgfX0nLAorICAgICAgICAgIGljb246ICd3Y1Rh Ykljb24gaWNvbi10YWJsZScsIGRhdGE6IHthY3Rpb246ICdjcmVhdGUnLCBj aGVjazogdHJ1ZX0sCisgICAgICAgICAgZW5hYmxlOiAnY2FuQ3JlYXRlJwor ICAgICAgICB9LHsKKyAgICAgICAgICBuYW1lOiAnY3JlYXRlX3RhYmxlX19v bl9zY2hlbWEnLCBub2RlOiAnc2NoZW1hJywgbW9kdWxlOiB0aGlzLAorICAg ICAgICAgIGFwcGxpZXM6IFsnb2JqZWN0JywgJ2NvbnRleHQnXSwgY2FsbGJh Y2s6ICdzaG93X29ial9wcm9wZXJ0aWVzJywKKyAgICAgICAgICBjYXRlZ29y eTogJ2NyZWF0ZScsIHByaW9yaXR5OiA0LCBsYWJlbDogJ3t7IF8oJ1RhYmxl Li4uJykgfX0nLAorICAgICAgICAgIGljb246ICd3Y1RhYkljb24gaWNvbi10 YWJsZScsIGRhdGE6IHthY3Rpb246ICdjcmVhdGUnLCBjaGVjazogZmFsc2V9 LAorICAgICAgICAgIGVuYWJsZTogJ2NhbkNyZWF0ZScKKyAgICAgICAgfSx7 CisgICAgICAgICAgbmFtZTogJ3RydW5jYXRlX3RhYmxlJywgbm9kZTogJ3Rh YmxlJywgbW9kdWxlOiB0aGlzLAorICAgICAgICAgIGFwcGxpZXM6IFsnb2Jq ZWN0JywgJ2NvbnRleHQnXSwgY2FsbGJhY2s6ICd0cnVuY2F0ZV90YWJsZScs CisgICAgICAgICAgY2F0ZWdvcnk6ICdUcnVuY2F0ZScsIHByaW9yaXR5OiAz LCBsYWJlbDogJ3t7IF8oJ1RydW5jYXRlJykgfX0nLAorICAgICAgICAgIGlj b246ICdmYSBmYS1lcmFzZXInLCBlbmFibGUgOiAnY2FuQ3JlYXRlJworICAg ICAgICB9LHsKKyAgICAgICAgICBuYW1lOiAndHJ1bmNhdGVfdGFibGVfY2Fz Y2FkZScsIG5vZGU6ICd0YWJsZScsIG1vZHVsZTogdGhpcywKKyAgICAgICAg ICBhcHBsaWVzOiBbJ29iamVjdCcsICdjb250ZXh0J10sIGNhbGxiYWNrOiAn dHJ1bmNhdGVfdGFibGVfY2FzY2FkZScsCisgICAgICAgICAgY2F0ZWdvcnk6 ICdUcnVuY2F0ZScsIHByaW9yaXR5OiAzLCBsYWJlbDogJ3t7IF8oJ1RydW5j YXRlIENhc2NhZGUnKSB9fScsCisgICAgICAgICAgaWNvbjogJ2ZhIGZhLWVy YXNlcicsIGVuYWJsZSA6ICdjYW5DcmVhdGUnCisgICAgICAgIH0seworICAg ICAgICAgIC8vIFRvIGVuYWJsZS9kaXNhYmxlIGFsbCB0cmlnZ2VycyBmb3Ig dGhlIHRhYmxlCisgICAgICAgICAgbmFtZTogJ2VuYWJsZV9hbGxfdHJpZ2dl cnMnLCBub2RlOiAndGFibGUnLCBtb2R1bGU6IHRoaXMsCisgICAgICAgICAg YXBwbGllczogWydvYmplY3QnLCAnY29udGV4dCddLCBjYWxsYmFjazogJ2Vu YWJsZV90cmlnZ2Vyc19vbl90YWJsZScsCisgICAgICAgICAgY2F0ZWdvcnk6 ICdUcmlnZ2VyKHMpJywgcHJpb3JpdHk6IDQsIGxhYmVsOiAne3sgXygnRW5h YmxlIEFsbCcpIH19JywKKyAgICAgICAgICBpY29uOiAnZmEgZmEtY2hlY2sn LCBlbmFibGUgOiAnY2FuQ3JlYXRlX3dpdGhfdHJpZ2dlcl9lbmFibGUnCisg ICAgICAgIH0seworICAgICAgICAgIG5hbWU6ICdkaXNhYmxlX2FsbF90cmln Z2VycycsIG5vZGU6ICd0YWJsZScsIG1vZHVsZTogdGhpcywKKyAgICAgICAg ICBhcHBsaWVzOiBbJ29iamVjdCcsICdjb250ZXh0J10sIGNhbGxiYWNrOiAn ZGlzYWJsZV90cmlnZ2Vyc19vbl90YWJsZScsCisgICAgICAgICAgY2F0ZWdv cnk6ICdUcmlnZ2VyKHMpJywgcHJpb3JpdHk6IDQsIGxhYmVsOiAne3sgXygn RGlzYWJsZSBBbGwnKSB9fScsCisgICAgICAgICAgaWNvbjogJ2ZhIGZhLXRp bWVzJywgZW5hYmxlIDogJ2NhbkNyZWF0ZV93aXRoX3RyaWdnZXJfZGlzYWJs ZScKKyAgICAgICAgfSx7CisgICAgICAgICAgbmFtZTogJ3Jlc2V0X3RhYmxl X3N0YXRzJywgbm9kZTogJ3RhYmxlJywgbW9kdWxlOiB0aGlzLAorICAgICAg ICAgIGFwcGxpZXM6IFsnb2JqZWN0JywgJ2NvbnRleHQnXSwgY2FsbGJhY2s6 ICdyZXNldF90YWJsZV9zdGF0cycsCisgICAgICAgICAgY2F0ZWdvcnk6ICdS ZXNldCcsIHByaW9yaXR5OiA0LCBsYWJlbDogJ3t7IF8oJ1Jlc2V0IHN0YXRp c3RpY3MnKSB9fScsCisgICAgICAgICAgaWNvbjogJ2ZhIGZhLWJhci1jaGFy dCcsIGVuYWJsZSA6ICdjYW5DcmVhdGUnCisgICAgICAgIH0KKyAgICAgICAg XSk7CisgICAgICB9LAorICAgICAgY2FuRHJvcDogcGdCcm93c2VyLk5vZGVz WydzY2hlbWEnXS5jYW5DaGlsZERyb3AsCisgICAgICBjYW5Ecm9wQ2FzY2Fk ZTogcGdCcm93c2VyLk5vZGVzWydzY2hlbWEnXS5jYW5DaGlsZERyb3AsCisg ICAgICBjYWxsYmFja3M6IHsKKyAgICAgICAgLyogRW5hYmxlIHRyaWdnZXIo cykgb24gdGFibGUgKi8KKyAgICAgICAgZW5hYmxlX3RyaWdnZXJzX29uX3Rh YmxlOiBmdW5jdGlvbihhcmdzKSB7CisgICAgICAgICAgICB2YXIgcGFyYW1z ID0geydlbmFibGUnOiB0cnVlIH07CisgICAgICAgICAgICB0aGlzLmNhbGxi YWNrcy5zZXRfdHJpZ2dlcnMuYXBwbHkodGhpcywgW2FyZ3MsIHBhcmFtc10p OworICAgICAgICB9LAorICAgICAgICAvKiBEaXNhYmxlIHRyaWdnZXIocykg b24gdGFibGUgKi8KKyAgICAgICAgZGlzYWJsZV90cmlnZ2Vyc19vbl90YWJs ZTogZnVuY3Rpb24oYXJncykgeworICAgICAgICAgICAgdmFyIHBhcmFtcyA9 IHsnZW5hYmxlJzogZmFsc2UgfTsKKyAgICAgICAgICAgIHRoaXMuY2FsbGJh Y2tzLnNldF90cmlnZ2Vycy5hcHBseSh0aGlzLCBbYXJncywgcGFyYW1zXSk7 CisgICAgICAgIH0sCisgICAgICAgIHNldF90cmlnZ2VyczogZnVuY3Rpb24o YXJncywgcGFyYW1zKSB7CisgICAgICAgICAgLy8gVGhpcyBmdW5jdGlvbiB3 aWxsIHNlbmQgcmVxdWVzdCB0byBlbmFibGUgb3IKKyAgICAgICAgICAvLyBk aXNhYmxlIHRyaWdnZXJzIG9uIHRhYmxlIGxldmVsCisgICAgICAgICAgdmFy IGlucHV0ID0gYXJncyB8fCB7fTsKKyAgICAgICAgICBvYmogPSB0aGlzLAor ICAgICAgICAgIHQgPSBwZ0Jyb3dzZXIudHJlZSwKKyAgICAgICAgICBpID0g aW5wdXQuaXRlbSB8fCB0LnNlbGVjdGVkKCksCisgICAgICAgICAgZCA9IGkg JiYgaS5sZW5ndGggPT0gMSA/IHQuaXRlbURhdGEoaSkgOiB1bmRlZmluZWQ7 CisgICAgICAgICAgaWYgKCFkKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl OworCisgICAgICAgICAgJC5hamF4KHsKKyAgICAgICAgICAgIHVybDogb2Jq LmdlbmVyYXRlX3VybChpLCAnc2V0X3RyaWdnZXInICwgZCwgdHJ1ZSksCisg ICAgICAgICAgICB0eXBlOidQVVQnLAorICAgICAgICAgICAgZGF0YTogcGFy YW1zLAorICAgICAgICAgICAgZGF0YVR5cGU6ICJqc29uIiwKKyAgICAgICAg ICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uKHJlcykgeworICAgICAgICAgICAgICBp ZiAocmVzLnN1Y2Nlc3MgPT0gMSkgeworICAgICAgICAgICAgICAgIGFsZXJ0 aWZ5LnN1Y2Nlc3MoInt7IF8oJyIgKyByZXMuaW5mbyArICInKSB9fSIpOwor ICAgICAgICAgICAgICAgIHQudW5sb2FkKGkpOworICAgICAgICAgICAgICAg IHQuc2V0SW5vZGUoaSk7CisgICAgICAgICAgICAgICAgdC5kZXNlbGVjdChp KTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewor ICAgICAgICAgICAgICAgICAgdC5zZWxlY3QoaSk7CisgICAgICAgICAgICAg ICAgfSwgMTApOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAor ICAgICAgICAgICAgZXJyb3I6IGZ1bmN0aW9uKHhociwgc3RhdHVzLCBlcnJv cikgeworICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIHZh ciBlcnIgPSAkLnBhcnNlSlNPTih4aHIucmVzcG9uc2VUZXh0KTsKKyAgICAg ICAgICAgICAgICBpZiAoZXJyLnN1Y2Nlc3MgPT0gMCkgeworICAgICAgICAg ICAgICAgICAgbXNnID0gUygne3sgXygnICsgZXJyLmVycm9ybXNnICsgJyl9 fScpLnZhbHVlKCk7CisgICAgICAgICAgICAgICAgICBhbGVydGlmeS5lcnJv cigie3sgXygnIiArIGVyci5lcnJvcm1zZyArICInKSB9fSIpOworICAgICAg ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge30KKyAg ICAgICAgICAgICAgdC51bmxvYWQoaSk7CisgICAgICAgICAgICB9CisgICAg ICAgICAgfSk7CisgICAgICAgIH0sCisgICAgICAgIC8qIFRydW5jYXRlIHRh YmxlICovCisgICAgICAgIHRydW5jYXRlX3RhYmxlOiBmdW5jdGlvbihhcmdz KSB7CisgICAgICAgICAgICB2YXIgcGFyYW1zID0geydjYXNjYWRlJzogZmFs c2UgfTsKKyAgICAgICAgICAgIHRoaXMuY2FsbGJhY2tzLnRydW5jYXRlLmFw cGx5KHRoaXMsIFthcmdzLCBwYXJhbXNdKTsKKyAgICAgICAgfSwKKyAgICAg ICAgLyogVHJ1bmNhdGUgdGFibGUgd2l0aCBjYXNjYWRlICovCisgICAgICAg IHRydW5jYXRlX3RhYmxlX2Nhc2NhZGU6IGZ1bmN0aW9uKGFyZ3MpIHsKKyAg ICAgICAgICAgIHZhciBwYXJhbXMgPSB7J2Nhc2NhZGUnOiB0cnVlIH07Cisg ICAgICAgICAgICB0aGlzLmNhbGxiYWNrcy50cnVuY2F0ZS5hcHBseSh0aGlz LCBbYXJncywgcGFyYW1zXSk7CisgICAgICAgIH0sCisgICAgICAgIHRydW5j YXRlOiBmdW5jdGlvbihhcmdzLCBwYXJhbXMpIHsKKyAgICAgICAgICB2YXIg aW5wdXQgPSBhcmdzIHx8IHt9OworICAgICAgICAgIG9iaiA9IHRoaXMsCisg ICAgICAgICAgdCA9IHBnQnJvd3Nlci50cmVlLAorICAgICAgICAgIGkgPSBp bnB1dC5pdGVtIHx8IHQuc2VsZWN0ZWQoKSwKKyAgICAgICAgICBkID0gaSAm JiBpLmxlbmd0aCA9PSAxID8gdC5pdGVtRGF0YShpKSA6IHVuZGVmaW5lZDsK KworICAgICAgICAgIGlmICghZCkKKyAgICAgICAgICAgIHJldHVybiBmYWxz ZTsKKworICAgICAgICAgIGFsZXJ0aWZ5LmNvbmZpcm0oCisgICAgICAgICAg ICBTKCd7eyBfKCdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gdHJ1bmNhdGUg dGFibGUgLSAlJXMgPycpIH19Jykuc3ByaW50ZihkLmxhYmVsKS52YWx1ZSgp LAorICAgICAgICAgICAgZnVuY3Rpb24gKGUpIHsKKyAgICAgICAgICAgIGlm IChlKSB7CisgICAgICAgICAgICAgIHZhciBkYXRhID0gZDsKKyAgICAgICAg ICAgICAgJC5hamF4KHsKKyAgICAgICAgICAgICAgICB1cmw6IG9iai5nZW5l cmF0ZV91cmwoaSwgJ3RydW5jYXRlJyAsIGQsIHRydWUpLAorICAgICAgICAg ICAgICAgIHR5cGU6J1BVVCcsCisgICAgICAgICAgICAgICAgZGF0YTogcGFy YW1zLAorICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAianNvbiIsCisgICAg ICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24ocmVzKSB7CisgICAgICAg ICAgICAgICAgICBpZiAocmVzLnN1Y2Nlc3MgPT0gMSkgeworICAgICAgICAg ICAgICAgICAgICBhbGVydGlmeS5zdWNjZXNzKCJ7eyBfKCciICsgcmVzLmlu Zm8gKyAiJykgfX0iKTsKKyAgICAgICAgICAgICAgICAgICAgdC5yZW1vdmVJ Y29uKGkpOworICAgICAgICAgICAgICAgICAgICBkYXRhLmljb24gPSAnaWNv bi10YWJsZSc7CisgICAgICAgICAgICAgICAgICAgIHQuYWRkSWNvbihpLCB7 aWNvbjogZGF0YS5pY29ufSk7CisgICAgICAgICAgICAgICAgICAgIHQudW5s b2FkKGkpOworICAgICAgICAgICAgICAgICAgICB0LnNldElub2RlKGkpOwor ICAgICAgICAgICAgICAgICAgICB0LmRlc2VsZWN0KGkpOworICAgICAgICAg ICAgICAgICAgICAvLyBGZXRjaCB1cGRhdGVkIGRhdGEgZnJvbSBzZXJ2ZXIK KyAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsK KyAgICAgICAgICAgICAgICAgICAgICB0LnNlbGVjdChpKTsKKyAgICAgICAg ICAgICAgICAgICAgfSwgMTApOworICAgICAgICAgICAgICAgICAgfQorICAg ICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgZXJyb3I6IGZ1bmN0 aW9uKHhociwgc3RhdHVzLCBlcnJvcikgeworICAgICAgICAgICAgICAgICAg dHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGVyciA9ICQucGFyc2VK U09OKHhoci5yZXNwb25zZVRleHQpOworICAgICAgICAgICAgICAgICAgICBp ZiAoZXJyLnN1Y2Nlc3MgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICAg IG1zZyA9IFMoJ3t7IF8oJyArIGVyci5lcnJvcm1zZyArICcpfX0nKS52YWx1 ZSgpOworICAgICAgICAgICAgICAgICAgICAgIGFsZXJ0aWZ5LmVycm9yKCJ7 eyBfKCciICsgZXJyLmVycm9ybXNnICsgIicpIH19Iik7CisgICAgICAgICAg ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9 CisgICAgICAgICAgICAgICAgICB0LnVubG9hZChpKTsKKyAgICAgICAgICAg ICAgICB9CisgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfQorICAg ICAgICAgfSk7CisgICAgICAgfSwKKyAgICAgICByZXNldF90YWJsZV9zdGF0 czogZnVuY3Rpb24oYXJncykgeworICAgICAgICAgIHZhciBpbnB1dCA9IGFy Z3MgfHwge307CisgICAgICAgICAgb2JqID0gdGhpcywKKyAgICAgICAgICB0 ID0gcGdCcm93c2VyLnRyZWUsCisgICAgICAgICAgaSA9IGlucHV0Lml0ZW0g fHwgdC5zZWxlY3RlZCgpLAorICAgICAgICAgIGQgPSBpICYmIGkubGVuZ3Ro ID09IDEgPyB0Lml0ZW1EYXRhKGkpIDogdW5kZWZpbmVkOworCisgICAgICAg ICAgaWYgKCFkKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg ICAgICAgYWxlcnRpZnkuY29uZmlybSgKKyAgICAgICAgICAgIFMoJ3t7IF8o J0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byByZXNldCB0YWJsZSBzdGF0aXN0 aWNzIC0gJSVzID8nKSB9fScpLnNwcmludGYoZC5sYWJlbCkudmFsdWUoKSwK KyAgICAgICAgICAgIGZ1bmN0aW9uIChlKSB7CisgICAgICAgICAgICBpZiAo ZSkgeworICAgICAgICAgICAgICB2YXIgZGF0YSA9IGQ7CisgICAgICAgICAg ICAgICQuYWpheCh7CisgICAgICAgICAgICAgICAgdXJsOiBvYmouZ2VuZXJh dGVfdXJsKGksICdyZXNldCcgLCBkLCB0cnVlKSwKKyAgICAgICAgICAgICAg ICB0eXBlOidERUxFVEUnLAorICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1 bmN0aW9uKHJlcykgeworICAgICAgICAgICAgICAgICAgaWYgKHJlcy5zdWNj ZXNzID09IDEpIHsKKyAgICAgICAgICAgICAgICAgICAgYWxlcnRpZnkuc3Vj Y2Vzcygie3sgXygnIiArIHJlcy5pbmZvICsgIicpIH19Iik7CisgICAgICAg ICAgICAgICAgICAgIHQucmVtb3ZlSWNvbihpKTsKKyAgICAgICAgICAgICAg ICAgICAgZGF0YS5pY29uID0gJ2ljb24tdGFibGUnOworICAgICAgICAgICAg ICAgICAgICB0LmFkZEljb24oaSwge2ljb246IGRhdGEuaWNvbn0pOworICAg ICAgICAgICAgICAgICAgICB0LnVubG9hZChpKTsKKyAgICAgICAgICAgICAg ICAgICAgdC5zZXRJbm9kZShpKTsKKyAgICAgICAgICAgICAgICAgICAgdC5k ZXNlbGVjdChpKTsKKyAgICAgICAgICAgICAgICAgICAgLy8gRmV0Y2ggdXBk YXRlZCBkYXRhIGZyb20gc2VydmVyCisgICAgICAgICAgICAgICAgICAgIHNl dFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgICAg dC5zZWxlY3QoaSk7CisgICAgICAgICAgICAgICAgICAgIH0sIDEwKTsKKyAg ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9LAorICAgICAg ICAgICAgICAgIGVycm9yOiBmdW5jdGlvbih4aHIsIHN0YXR1cywgZXJyb3Ip IHsKKyAgICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAg ICAgIHZhciBlcnIgPSAkLnBhcnNlSlNPTih4aHIucmVzcG9uc2VUZXh0KTsK KyAgICAgICAgICAgICAgICAgICAgaWYgKGVyci5zdWNjZXNzID09IDApIHsK KyAgICAgICAgICAgICAgICAgICAgICBtc2cgPSBTKCd7eyBfKCcgKyBlcnIu ZXJyb3Jtc2cgKyAnKX19JykudmFsdWUoKTsKKyAgICAgICAgICAgICAgICAg ICAgICBhbGVydGlmeS5lcnJvcigie3sgXygnIiArIGVyci5lcnJvcm1zZyAr ICInKSB9fSIpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg ICAgICAgICB9IGNhdGNoIChlKSB7fQorICAgICAgICAgICAgICAgICAgdC51 bmxvYWQoaSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9 KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgIH0pOworICAgICAgIH0KKyAg ICAgIH0sCisgICAgICBtb2RlbDogcGdBZG1pbi5Ccm93c2VyLk5vZGUuTW9k ZWwuZXh0ZW5kKHsKKyAgICAgICAgZGVmYXVsdHM6IHsKKyAgICAgICAgICBu YW1lOiB1bmRlZmluZWQsCisgICAgICAgICAgb2lkOiB1bmRlZmluZWQsCisg ICAgICAgICAgc3Bjb2lkOiB1bmRlZmluZWQsCisgICAgICAgICAgc3BjbmFt ZTogJ3BnX2RlZmF1bHQnLAorICAgICAgICAgIHJlbG93bmVyOiB1bmRlZmlu ZWQsCisgICAgICAgICAgcmVsYWNsOiB1bmRlZmluZWQsCisgICAgICAgICAg cmVsaGFzb2lkczogdW5kZWZpbmVkLAorICAgICAgICAgIHJlbGhhc3N1YmNs YXNzOiB1bmRlZmluZWQsCisgICAgICAgICAgcmVsdHVwbGVzOiB1bmRlZmlu ZWQsCisgICAgICAgICAgZGVzY3JpcHRpb246IHVuZGVmaW5lZCwKKyAgICAg ICAgICBjb25uYW1lOiB1bmRlZmluZWQsCisgICAgICAgICAgY29ua2V5OiB1 bmRlZmluZWQsCisgICAgICAgICAgaXNyZXBsOiB1bmRlZmluZWQsCisgICAg ICAgICAgdHJpZ2dlcmNvdW50OiB1bmRlZmluZWQsCisgICAgICAgICAgcmVs cGVyc2lzdGVuY2U6IHVuZGVmaW5lZCwKKyAgICAgICAgICBmaWxsZmFjdG9y OiB1bmRlZmluZWQsCisgICAgICAgICAgcmVsb2Z0eXBlOiB1bmRlZmluZWQs CisgICAgICAgICAgdHlwbmFtZTogdW5kZWZpbmVkLAorICAgICAgICAgIGxh YmVsczogdW5kZWZpbmVkLAorICAgICAgICAgIHByb3ZpZGVyczogdW5kZWZp bmVkLAorICAgICAgICAgIGlzX3N5c190YWJsZTogdW5kZWZpbmVkLAorICAg ICAgICAgIGNvbGxfaW5oZXJpdHM6IFtdLAorICAgICAgICAgIGhhc3RvYXN0 dGFibGU6IHRydWUsCisgICAgICAgICAgdG9hc3RfYXV0b3ZhY3V1bV9lbmFi bGVkOiBmYWxzZSwKKyAgICAgICAgICBhdXRvdmFjdXVtX2VuYWJsZWQ6IGZh bHNlLAorICAgICAgICAgIHByaW1hcnlfa2V5OiBbXQorICAgICAgIH0sCisg ICAgICAgIC8vIERlZmF1bHQgdmFsdWVzIQorICAgICAgICBpbml0aWFsaXpl OiBmdW5jdGlvbihhdHRycywgYXJncykgeworICAgICAgICAgIHZhciBzZWxm ID0gdGhpcywKKyAgICAgICAgICAgICAgaXNOZXcgPSAoXy5zaXplKGF0dHJz KSA9PT0gMCk7CisKKyAgICAgICAgICBpZiAoaXNOZXcpIHsKKyAgICAgICAg ICAgIHZhciB1c2VySW5mbyA9IHBnQnJvd3Nlci5zZXJ2ZXJJbmZvW2FyZ3Mu bm9kZV9pbmZvLnNlcnZlci5faWRdLnVzZXI7CisgICAgICAgICAgICB2YXIg c2NoZW1hSW5mbyA9IGFyZ3Mubm9kZV9pbmZvLnNjaGVtYTsKKworICAgICAg ICAgICAgdGhpcy5zZXQoeydyZWxvd25lcic6IHVzZXJJbmZvLm5hbWV9LCB7 c2lsZW50OiB0cnVlfSk7CisgICAgICAgICAgICB0aGlzLnNldCh7J3NjaGVt YSc6IHNjaGVtYUluZm8ubGFiZWx9LCB7c2lsZW50OiB0cnVlfSk7CisgICAg ICAgICAgfQorICAgICAgICAgIHBnQWRtaW4uQnJvd3Nlci5Ob2RlLk1vZGVs LnByb3RvdHlwZS5pbml0aWFsaXplLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7 CisKKyAgICAgICAgfSwKKyAgICAgICAgc2NoZW1hOiBbeworICAgICAgICAg IGlkOiAnbmFtZScsIGxhYmVsOiAne3sgXygnTmFtZScpIH19JywgY2VsbDog J3N0cmluZycsCisgICAgICAgICAgdHlwZTogJ3RleHQnLCBtb2RlOiBbJ3By b3BlcnRpZXMnLCAnY3JlYXRlJywgJ2VkaXQnXSwKKyAgICAgICAgICBkaXNh YmxlZDogJ2luU2NoZW1hJworICAgICAgICB9LHsKKyAgICAgICAgICBpZDog J29pZCcsIGxhYmVsOid7eyBfKCdPSUQnKSB9fScsIGNlbGw6ICdzdHJpbmcn LAorICAgICAgICAgIHR5cGU6ICd0ZXh0JyAsIG1vZGU6IFsncHJvcGVydGll cyddCisgICAgICAgIH0seworICAgICAgICAgIGlkOiAncmVsb3duZXInLCBs YWJlbDone3sgXygnT3duZXInKSB9fScsIGNlbGw6ICdzdHJpbmcnLAorICAg ICAgICAgIHR5cGU6ICd0ZXh0JywgbW9kZTogWydwcm9wZXJ0aWVzJywgJ2Ny ZWF0ZScsICdlZGl0J10sCisgICAgICAgICAgZGlzYWJsZWQ6ICdpblNjaGVt YScsIGNvbnRyb2w6ICdub2RlLWxpc3QtYnktbmFtZScsCisgICAgICAgICAg bm9kZTogJ3JvbGUnLCBzZWxlY3QyOiB7IGFsbG93Q2xlYXI6IGZhbHNlIH0K KyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdzY2hlbWEnLCBsYWJlbDon e3sgXygnU2NoZW1hJykgfX0nLCBjZWxsOiAnc3RyaW5nJywKKyAgICAgICAg ICBjb250cm9sOiAnbm9kZS1saXN0LWJ5LW5hbWUnLAorICAgICAgICAgIHR5 cGU6ICd0ZXh0JywgbW9kZTogWydjcmVhdGUnLCAnZWRpdCddLCBub2RlOiAn c2NoZW1hJywKKyAgICAgICAgICBkaXNhYmxlZDogJ2luU2NoZW1hJywgZmls dGVyOiBmdW5jdGlvbihkKSB7CisgICAgICAgICAgICAvLyBJZiBzY2hlbWEg bmFtZSBzdGFydCB3aXRoIHBnXyogdGhlbiB3ZSBuZWVkIHRvIGV4Y2x1ZGUg dGhlbQorICAgICAgICAgICAgaWYoZCAmJiBkLmxhYmVsLm1hdGNoKC9ecGdf LykpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIHJldHVybiBmYWxz ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor ICAgICAgICAgIH0KKyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdzcGNu YW1lJywgbGFiZWw6J3t7IF8oJ1RhYmxlc3BhY2UnKSB9fScsIGNlbGw6ICdz dHJpbmcnLCBjb250cm9sOiAnbm9kZS1saXN0LWJ5LW5hbWUnLAorICAgICAg ICAgIHR5cGU6ICd0ZXh0JywgbW9kZTogWydwcm9wZXJ0aWVzJywgJ2NyZWF0 ZScsICdlZGl0J10sIG5vZGU6ICd0YWJsZXNwYWNlJywKKyAgICAgICAgICBk aXNhYmxlZDogJ2luU2NoZW1hJywgc2VsZWN0Mjp7YWxsb3dDbGVhcjpmYWxz ZX0sCisgICAgICAgICAgZmlsdGVyOiBmdW5jdGlvbihkKSB7CisgICAgICAg ICAgICAvLyBJZiB0YWJsZXNwYWNlIG5hbWUgaXMgbm90ICJwZ19nbG9iYWwi IHRoZW4gd2UgbmVlZCB0byBleGNsdWRlIHRoZW0KKyAgICAgICAgICAgIGlm KGQgJiYgZC5sYWJlbC5tYXRjaCgvcGdfZ2xvYmFsLykpCisgICAgICAgICAg ICB7CisgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAg IH0KKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgIH0KKyAg ICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdkZXNjcmlwdGlvbicsIGxhYmVs Oid7eyBfKCdDb21tZW50JykgfX0nLCBjZWxsOiAnc3RyaW5nJywKKyAgICAg ICAgICB0eXBlOiAnbXVsdGlsaW5lJywgbW9kZTogWydwcm9wZXJ0aWVzJywg J2NyZWF0ZScsICdlZGl0J10sCisgICAgICAgICAgZGlzYWJsZWQ6ICdpblNj aGVtYScKKyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICd0eXBuYW1lJywg bGFiZWw6J3t7IF8oJ09mIHR5cGUnKSB9fScsIGNlbGw6ICdzdHJpbmcnLCBj b250cm9sOiAnbm9kZS1hamF4LW9wdGlvbnMnLAorICAgICAgICAgIHR5cGU6 ICd0ZXh0JywgbW9kZTogWydwcm9wZXJ0aWVzJywgJ2NyZWF0ZScsICdlZGl0 J10sCisgICAgICAgICAgZGlzYWJsZWQ6ICdjaGVja09mVHlwZScsIHVybDog J2dldF9vZnR5cGUnLCBncm91cDogJ3t7IF8oJ0FkdmFuY2VkJykgfX0nLCBk ZXBzOiBbJ2NvbGxfaW5oZXJpdHMnXSwKKyAgICAgICAgICB0cmFuc2Zvcm06 IGZ1bmN0aW9uKGRhdGEsIGNlbGwpIHsKKyAgICAgICAgICAgIHZhciBjb250 cm9sID0gY2VsbCB8fCB0aGlzLAorICAgICAgICAgICAgICBtID0gY29udHJv bC5tb2RlbDsKKyAgICAgICAgICAgICAgbS5vZl90eXBlc190YWJsZXMgPSBk YXRhOworICAgICAgICAgICAgICByZXR1cm4gZGF0YTsKKyAgICAgICAgICB9 LAorICAgICAgICAgIGNvbnRyb2w6IEJhY2tmb3JtLk5vZGVBamF4T3B0aW9u c0NvbnRyb2wuZXh0ZW5kKHsKKyAgICAgICAgICAgICAgLy8gV2hlbiBvZl90 eXBlcyBjaGFuZ2VzIHdlIG5lZWQgdG8gY2xlYXIgY29sdW1ucyBjb2xsZWN0 aW9uCisgICAgICAgICAgICAgIG9uQ2hhbmdlOiBmdW5jdGlvbigpIHsKKyAg ICAgICAgICAgICAgICBCYWNrZm9ybS5Ob2RlQWpheE9wdGlvbnNDb250cm9s LnByb3RvdHlwZS5vbkNoYW5nZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwor ICAgICAgICAgICAgICAgIHZhciBzZWxmID0gdGhpcywKKyAgICAgICAgICAg ICAgICAgIHRibF9vaWQgPSB1bmRlZmluZWQsCisgICAgICAgICAgICAgICAg ICB0YmxfbmFtZSA9IHNlbGYubW9kZWwuZ2V0KCd0eXBuYW1lJyksCisgICAg ICAgICAgICAgICAgICBkYXRhID0gdW5kZWZpbmVkLAorICAgICAgICAgICAg ICAgICAgYXJnID0gdW5kZWZpbmVkLAorICAgICAgICAgICAgICAgICAgY29s dW1uX2NvbGxlY3Rpb24gPSBzZWxmLm1vZGVsLmdldCgnY29sdW1ucycpOwor CisgICAgICAgICAgICAgICAgaWYgKCFfLmlzVW5kZWZpbmVkKHRibF9uYW1l KSAmJgorICAgICAgICAgICAgICAgICAgICB0YmxfbmFtZSAhPT0gJycgJiYg Y29sdW1uX2NvbGxlY3Rpb24ubGVuZ3RoICE9PSAwKSB7CisgICAgICAgICAg ICAgICAgICB2YXIgbXNnID0gJ3t7IF8oJ0NoYW5naW5nIG9mIHR5cGUgdGFi bGUgd2lsbCBjbGVhciBjb2x1bW5zIGNvbGxlY3Rpb24nKSB9fSc7CisgICAg ICAgICAgICAgICAgICBhbGVydGlmeS5jb25maXJtKG1zZywgZnVuY3Rpb24g KGUpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGUpIHsKKyAgICAgICAg ICAgICAgICAgICAgICAvLyBVc2VyIGNsaWNrcyBPaywgbGV0cyBjbGVhciBj b2x1bW5zIGNvbGxlY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgICBjb2x1 bW5fY29sbGVjdGlvbi5yZXNldCgpOworICAgICAgICAgICAgICAgICAgICB9 IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzOwor ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICB9KTsK KyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFfLmlzVW5kZWZpbmVkKHRi bF9uYW1lKSAmJiB0YmxfbmFtZSA9PT0gJycpIHsKKyAgICAgICAgICAgICAg ICAgIGNvbHVtbl9jb2xsZWN0aW9uLnJlc2V0KCk7CisgICAgICAgICAgICAg ICAgfQorCisgICAgICAgICAgICAgICAgLy8gUnVuIEFqYXggbm93IHRvIGZl dGNoIGNvbHVtbnMKKyAgICAgICAgICAgICAgICBpZiAoIV8uaXNVbmRlZmlu ZWQodGJsX25hbWUpICYmIHRibF9uYW1lICE9PSAnJykgeworICAgICAgICAg ICAgICAgICAgYXJnID0geyAndG5hbWUnOiB0YmxfbmFtZSB9CisgICAgICAg ICAgICAgICAgICBkYXRhID0gc2VsZi5tb2RlbC5mZXRjaF9jb2x1bW5zX2Fq YXguYXBwbHkoc2VsZiwgW2FyZ10pOworICAgICAgICAgICAgICAgICAgLy8g QWRkIGludG8gY29sdW1uIGNvbGxlY3Rpb24KKyAgICAgICAgICAgICAgICAg IGNvbHVtbl9jb2xsZWN0aW9uLnNldChkYXRhLCB7IG1lcmdlOmZhbHNlLHJl bW92ZTpmYWxzZSB9KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg ICAgIH0KKyAgICAgICAgICAgIH0pCisgICAgICAgIH0seworICAgICAgICAg IGlkOiAnZmlsbGZhY3RvcicsIGxhYmVsOid7eyBfKCdGaWxsIGZhY3Rvcicp IH19JywgY2VsbDogJ2ludGVnZXInLAorICAgICAgICAgIHR5cGU6ICdpbnQn LCBtb2RlOiBbJ2NyZWF0ZScsICdlZGl0J10sIG1pbjogMTAsIG1heDogMTAw LAorICAgICAgICAgIGRpc2FibGVkOiAnaW5TY2hlbWEnLGdyb3VwOiAne3sg XygnQWR2YW5jZWQnKSB9fScKKyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6 ICdyZWxoYXNvaWRzJywgbGFiZWw6J3t7IF8oJ0hhcyBPSURzPycpIH19Jywg Y2VsbDogJ3N3aXRjaCcsCisgICAgICAgICAgdHlwZTogJ3N3aXRjaCcsIG1v ZGU6IFsncHJvcGVydGllcycsICdjcmVhdGUnLCAnZWRpdCddLAorICAgICAg ICAgIGRpc2FibGVkOiAnaW5TY2hlbWEnLCBncm91cDogJ3t7IF8oJ0FkdmFu Y2VkJykgfX0nCisgICAgICAgIH0seworICAgICAgICAgIGlkOiAncmVscGVy c2lzdGVuY2UnLCBsYWJlbDone3sgXygnVW5sb2dnZWQ/JykgfX0nLCBjZWxs OiAnc3dpdGNoJywKKyAgICAgICAgICB0eXBlOiAnc3dpdGNoJywgbW9kZTog Wydwcm9wZXJ0aWVzJywgJ2NyZWF0ZScsICdlZGl0J10sCisgICAgICAgICAg ZGlzYWJsZWQ6ICdpblNjaGVtYVdpdGhNb2RlbENoZWNrJywKKyAgICAgICAg ICBncm91cDogJ3t7IF8oJ0FkdmFuY2VkJykgfX0nCisgICAgICAgIH0sewor ICAgICAgICAgIGlkOiAnY29ubmFtZScsIGxhYmVsOid7eyBfKCdQcmltYXJ5 IEtleScpIH19JywgY2VsbDogJ3N0cmluZycsCisgICAgICAgICAgdHlwZTog J3RleHQnLCBtb2RlOiBbJ3Byb3BlcnRpZXMnXSwKKyAgICAgICAgICBkaXNh YmxlZDogJ2luU2NoZW1hJworICAgICAgICB9LHsKKyAgICAgICAgICBpZDog J3JlbHR1cGxlcycsIGxhYmVsOid7eyBfKCdSb3dzIChlc3RpbWF0ZWQpJykg fX0nLCBjZWxsOiAnc3RyaW5nJywKKyAgICAgICAgICB0eXBlOiAndGV4dCcs IG1vZGU6IFsncHJvcGVydGllcyddLAorICAgICAgICAgIGRpc2FibGVkOiAn aW5TY2hlbWEnCisgICAgICAgIH0seworICAgICAgICAgIGlkOiAncm93c19j bnQnLCBsYWJlbDone3sgXygnUm93cyAoY291bnRlZCknKSB9fScsIGNlbGw6 ICdzdHJpbmcnLAorICAgICAgICAgIHR5cGU6ICd0ZXh0JywgbW9kZTogWydw cm9wZXJ0aWVzJ10sCisgICAgICAgICAgZGlzYWJsZWQ6ICdpblNjaGVtYScK KyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdyZWxoYXNzdWJjbGFzcycs IGxhYmVsOid7eyBfKCdJbmhlcml0cyB0YWJsZXM/JykgfX0nLCBjZWxsOiAn c3dpdGNoJywKKyAgICAgICAgICB0eXBlOiAnc3dpdGNoJywgbW9kZTogWydw cm9wZXJ0aWVzJ10sCisgICAgICAgICAgZGlzYWJsZWQ6ICdpblNjaGVtYScK KyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdpc19zeXNfdGFibGUnLCBs YWJlbDone3sgXygnU3lzdGVtIHRhYmVsPycpIH19JywgY2VsbDogJ3N3aXRj aCcsCisgICAgICAgICAgdHlwZTogJ3N3aXRjaCcsIG1vZGU6IFsncHJvcGVy dGllcyddLAorICAgICAgICAgIGRpc2FibGVkOiAnaW5TY2hlbWEnCisgICAg ICAgIH0seworICAgICAgICAgIGlkOiAnY29sbF9pbmhlcml0cycsIGxhYmVs OiAne3sgXygnSW5oZXJpdGVkIGZyb20gdGFibGUocyknKSB9fScsCisgICAg ICAgICAgdXJsOiAnZ2V0X2luaGVyaXRzJywgdHlwZTogJ2FycmF5JywKKyAg ICAgICAgICBkaXNhYmxlZDogJ2NoZWNrSW5oZXJpdGFuY2UnLCBkZXBzOiBb J3R5cG5hbWUnXSwKKyAgICAgICAgICBzZWxlY3QyOiB7IG11bHRpcGxlOiB0 cnVlLCBhbGxvd0NsZWFyOiB0cnVlLAorICAgICAgICAgIHBsYWNlaG9sZGVy OiAne3sgXygnU2VsZWN0IHRvIGluaGVyaXQgZnJvbS4uLicpIH19J30sCisg ICAgICAgICAgdHJhbnNmb3JtOiBmdW5jdGlvbihkYXRhLCBjZWxsKSB7Cisg ICAgICAgICAgICB2YXIgY29udHJvbCA9IGNlbGwgfHwgdGhpcywKKyAgICAg ICAgICAgICAgbSA9IGNvbnRyb2wubW9kZWw7CisgICAgICAgICAgICAgIG0u aW5oZXJpdGVkX3RhYmxlc19saXN0ID0gZGF0YTsKKyAgICAgICAgICAgICAg cmV0dXJuIGRhdGE7CisgICAgICAgICAgfSwKKyAgICAgICAgICBjb250cm9s OiBCYWNrZm9ybS5NdWx0aVNlbGVjdEFqYXhDb250cm9sLmV4dGVuZCh7Cisg ICAgICAgICAgICAgIC8vIFdoZW4gY2hhbmdlcyB3ZSBuZWVkIHRvIGFkZC9j bGVhciBjb2x1bW5zIGNvbGxlY3Rpb24KKyAgICAgICAgICAgICAgb25DaGFu Z2U6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIEJhY2tmb3JtLk11 bHRpU2VsZWN0QWpheENvbnRyb2wucHJvdG90eXBlLm9uQ2hhbmdlLmFwcGx5 KHRoaXMsIGFyZ3VtZW50cyk7CisgICAgICAgICAgICAgICAgdmFyIHNlbGYg PSB0aGlzLAorICAgICAgICAgICAgICAgIC8vIGN1cnJlbnQgdGFibGUgbGlz dCBhbmQgcHJldmlvdXMgdGFibGUgbGlzdAorICAgICAgICAgICAgICAgIGNU YmxfbGlzdCA9IHNlbGYubW9kZWwuZ2V0KCdjb2xsX2luaGVyaXRzJykgfHwg W10sCisgICAgICAgICAgICAgICAgcFRibF9saXN0ID0gc2VsZi5tb2RlbC5w cmV2aW91cygnY29sbF9pbmhlcml0cycpIHx8IFtdOworCisgICAgICAgICAg ICAgICAgaWYgKCFfLmlzVW5kZWZpbmVkKGNUYmxfbGlzdCkpIHsKKyAgICAg ICAgICAgICAgICAgIHZhciB0YmxfbmFtZSA9IHVuZGVmaW5lZCwKKyAgICAg ICAgICAgICAgICAgICAgdGlkID0gdW5kZWZpbmVkOworCisgICAgICAgICAg ICAgICAgICAvLyBBZGQgY29sdW1ucyBsb2dpYworICAgICAgICAgICAgICAg ICAgLy8gSWYgbmV3IHRhYmxlIGlzIGFkZGVkIGluIGxpc3QKKyAgICAgICAg ICAgICAgICAgIGlmKGNUYmxfbGlzdC5sZW5ndGggPiAxICYmIGNUYmxfbGlz dC5sZW5ndGggPiBwVGJsX2xpc3QubGVuZ3RoKSB7CisgICAgICAgICAgICAg ICAgICAgIC8vIEZpbmQgbmV3bHkgYWRkZWQgdGFibGUgZnJvbSBjdXJyZW50 IGxpc3QKKyAgICAgICAgICAgICAgICAgICAgdGJsX25hbWUgPSBfLmRpZmZl cmVuY2UoY1RibF9saXN0LCBwVGJsX2xpc3QpOworICAgICAgICAgICAgICAg ICAgICB0aWQgPSB0aGlzLmdldF90YWJsZV9vaWQodGJsX25hbWVbMF0pOwor ICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZF9jb2x1bW5zKHRpZCk7Cisg ICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNUYmxfbGlzdC5sZW5ndGgg PT0gMSkgeworICAgICAgICAgICAgICAgICAgICAvLyBGaXJzdCB0YWJsZSBh ZGRlZAorICAgICAgICAgICAgICAgICAgICB0aWQgPSB0aGlzLmdldF90YWJs ZV9vaWQoY1RibF9saXN0WzBdKTsKKyAgICAgICAgICAgICAgICAgICAgdGhp cy5hZGRfY29sdW1ucyh0aWQpOworICAgICAgICAgICAgICAgICAgfQorCisg ICAgICAgICAgICAgICAgICAvLyBSZW1vdmUgY29sdW1ucyBsb2dpYworICAg ICAgICAgICAgICAgICAgaWYoY1RibF9saXN0Lmxlbmd0aCA+IDAgJiYgY1Ri bF9saXN0Lmxlbmd0aCA8IHBUYmxfbGlzdC5sZW5ndGgpIHsKKyAgICAgICAg ICAgICAgICAgICAgLy8gRmluZCBkZWxldGVkIHRhYmxlIGZyb20gcHJldmlv dXMgbGlzdAorICAgICAgICAgICAgICAgICAgICB0YmxfbmFtZSA9IF8uZGlm ZmVyZW5jZShwVGJsX2xpc3QsIGNUYmxfbGlzdCk7CisgICAgICAgICAgICAg ICAgICAgIHRoaXMucmVtb3ZlX2NvbHVtbnModGJsX25hbWVbMF0pOworICAg ICAgICAgICAgICAgICAgfSBlbHNlIGlmIChwVGJsX2xpc3QubGVuZ3RoID09 PSAxICYmIGNUYmxfbGlzdC5sZW5ndGggPCAxKSB7CisgICAgICAgICAgICAg ICAgICAgIC8vIFdlIGdvdCBsYXN0IHRhYmxlIGZyb20gbGlzdAorICAgICAg ICAgICAgICAgICAgICB0YmxfbmFtZSA9IHBUYmxfbGlzdFswXTsKKyAgICAg ICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVfY29sdW1ucyh0YmxfbmFtZSk7 CisgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICB9Cisg ICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgIGFkZF9jb2x1bW5zOiBm dW5jdGlvbih0aWQpIHsKKyAgICAgICAgICAgICAgICAvLyBDcmVhdGUgY29w eSBvZiBvbGQgbW9kZWwgaWYgYW55dGhpbmcgZ29lcyB3cm9uZyBhdC1sZWFz dCB3ZSBoYXZlIGJhY2t1cAorICAgICAgICAgICAgICAgIC8vIFRoZW4gc2Vu ZCBBSkFYIHJlcXVlc3QgdG8gZmV0Y2ggdGFibGUgc3BlY2lmaWMgY29sdW1u cworICAgICAgICAgICAgICAgIHZhciBzZWxmID0gdGhpcywKKyAgICAgICAg ICAgICAgICAgIHVybCA9ICdnZXRfY29sdW1ucycsCisgICAgICAgICAgICAg ICAgICBtID0gc2VsZi5tb2RlbC50b3AgfHwgc2VsZi5tb2RlbCwKKyAgICAg ICAgICAgICAgICAgIGRhdGEgPSB1bmRlZmluZWQsCisgICAgICAgICAgICAg ICAgICBvbGRfY29sdW1ucyA9IF8uY2xvbmUobS5nZXQoJ2NvbHVtbnMnKSks CisgICAgICAgICAgICAgICAgICBjb2x1bW5fY29sbGVjdGlvbiA9IG0uZ2V0 KCdjb2x1bW5zJyk7CisKKyAgICAgICAgICAgICAgICB2YXIgYXJnID0geyd0 aWQnOiB0aWR9CisgICAgICAgICAgICAgICAgZGF0YSA9IHNlbGYubW9kZWwu ZmV0Y2hfY29sdW1uc19hamF4LmFwcGx5KHNlbGYsIFthcmddKTsKKworICAg ICAgICAgICAgICAgIC8vIFVwZGF0ZSBleGlzdGluZyBjb2x1bW4gY29sbGVj dGlvbgorICAgICAgICAgICAgICAgIGNvbHVtbl9jb2xsZWN0aW9uLnNldChk YXRhLCB7IG1lcmdlOmZhbHNlLHJlbW92ZTpmYWxzZSB9KTsKKyAgICAgICAg ICAgICAgfSwKKyAgICAgICAgICAgICAgcmVtb3ZlX2NvbHVtbnM6IGZ1bmN0 aW9uKHRibG5hbWUpIHsKKyAgICAgICAgICAgICAgICAvLyBSZW1vdmUgYWxs IHRoZSBjb2x1bW4gbW9kZWxzIGZvciBkZWxldGVkIHRhYmxlCisgICAgICAg ICAgICAgICAgdmFyIHRpZCA9IHRoaXMuZ2V0X3RhYmxlX29pZCh0YmxuYW1l KSwKKyAgICAgICAgICAgICAgICAgIGNvbHVtbl9jb2xsZWN0aW9uID0gdGhp cy5tb2RlbC5nZXQoJ2NvbHVtbnMnKTsKKyAgICAgICAgICAgICAgICBjb2x1 bW5fY29sbGVjdGlvbi5yZW1vdmUoY29sdW1uX2NvbGxlY3Rpb24ud2hlcmUo eydpbmhlcml0ZWRpZCc6IHRpZCB9KSk7CisgICAgICAgICAgICAgIH0sCisg ICAgICAgICAgICAgIGdldF90YWJsZV9vaWQ6IGZ1bmN0aW9uKHRibG5hbWUp IHsKKyAgICAgICAgICAgICAgICAvLyBIZXJlIHdlIHdpbGwgZmV0Y2ggdGhl IHRhYmxlIG9pZCBmcm9tIHRhYmxlIG5hbWUKKyAgICAgICAgICAgICAgICB2 YXIgdGJsX29pZCA9IHVuZGVmaW5lZDsKKyAgICAgICAgICAgICAgICAvLyBp dGVyYXRlIG92ZXIgbGlzdCB0byBmaW5kIHRhYmxlIG9pZAorICAgICAgICAg ICAgICAgIF8uZWFjaCh0aGlzLm1vZGVsLmluaGVyaXRlZF90YWJsZXNfbGlz dCwgZnVuY3Rpb24ob2JqKSB7CisgICAgICAgICAgICAgICAgICAgIGlmKG9i ai5sYWJlbCA9PT0gdGJsbmFtZSkgeworICAgICAgICAgICAgICAgICAgICAg IHRibF9vaWQgPSBvYmoudGlkOworICAgICAgICAgICAgICAgICAgICB9Cisg ICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRi bF9vaWQ7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0pCisgICAg ICAgIH0seworICAgICAgICAgIGlkOiAnaW5oZXJpdGVkX3RhYmxlc19jbnQn LCBsYWJlbDone3sgXygnSW5oZXJpdGVkIHRhYmxlcyBjb3VudCcpIH19Jywg Y2VsbDogJ3N0cmluZycsCisgICAgICAgICAgdHlwZTogJ3RleHQnLCBtb2Rl OiBbJ3Byb3BlcnRpZXMnXSwKKyAgICAgICAgICBkaXNhYmxlZDogJ2luU2No ZW1hJworICAgICAgICB9LHsKKyAgICAgICAgICB0eXBlOiAnbmVzdGVkJywg Y29udHJvbDogJ2ZpZWxkc2V0JywgbW9kZTogWydlZGl0JywgJ2NyZWF0ZSdd LAorICAgICAgICAgIHNjaGVtYTpbeworICAgICAgICAgICAgLy8gSGVyZSB3 ZSB3aWxsIGNyZWF0ZSB0YWIgY29udHJvbCBmb3IgY29sdW1ucworICAgICAg ICAgICAgICBpZDogJ2NvbHVtbnMnLCBsYWJlbDone3sgXygnQ29sdW1ucycp IH19JywgdHlwZTogJ2NvbGxlY3Rpb24nLAorICAgICAgICAgICAgICBncm91 cDogJ3t7IF8oJ0NvbHVtbnMnKSB9fScsCisgICAgICAgICAgICAgIG1vZGVs OiBwZ0Jyb3dzZXIuTm9kZXNbJ2NvbHVtbiddLm1vZGVsLAorICAgICAgICAg ICAgICBzdWJub2RlOiBwZ0Jyb3dzZXIuTm9kZXNbJ2NvbHVtbiddLm1vZGVs LAorICAgICAgICAgICAgICBtb2RlOiBbJ2NyZWF0ZScsICdlZGl0J10sCisg ICAgICAgICAgICAgIGRpc2FibGVkOiAnaW5TY2hlbWEnLAorICAgICAgICAg ICAgICBjYW5BZGQ6ICdjaGVja19ncmlkX2FkZF9jb25kaXRpb24nLAorICAg ICAgICAgICAgICBjYW5FZGl0OiB0cnVlLCBjYW5EZWxldGU6IHRydWUsCisg ICAgICAgICAgICAgIC8vIEZvciBlYWNoIHJvdyBlZGl0L2RlbGV0ZSBidXR0 b24gZW5hYmxlL2Rpc2FibGUKKyAgICAgICAgICAgICAgY2FuRWRpdFJvdzog J2NoZWNrX2dyaWRfcm93X2VkaXRfZGVsZXRlJywKKyAgICAgICAgICAgICAg Y2FuRGVsZXRlUm93OiAnY2hlY2tfZ3JpZF9yb3dfZWRpdF9kZWxldGUnLAor ICAgICAgICAgICAgICB1bmlxdWVDb2wgOiBbJ25hbWUnXSwKKyAgICAgICAg ICAgICAgY29sdW1ucyA6IFsnbmFtZScgLCAnY2x0eXBlJywgJ2lzX3ByaW1h cnlfa2V5JywgJ2luaGVyaXRlZGZyb20nXSwKKyAgICAgICAgICAgICAgY29u dHJvbDogQmFja2Zvcm0uVW5pcXVlQ29sQ29sbGVjdGlvbkNvbnRyb2wuZXh0 ZW5kKHsKKyAgICAgICAgICAgICAgICBpbml0aWFsaXplOiBmdW5jdGlvbigp IHsKKyAgICAgICAgICAgICAgICAgIEJhY2tmb3JtLlVuaXF1ZUNvbENvbGxl Y3Rpb25Db250cm9sLnByb3RvdHlwZS5pbml0aWFsaXplLmFwcGx5KHRoaXMs IGFyZ3VtZW50cyk7CisgICAgICAgICAgICAgICAgICB2YXIgc2VsZiA9IHRo aXMsCisgICAgICAgICAgICAgICAgICAgICAgY29sbGVjdGlvbiA9IHNlbGYu bW9kZWwuZ2V0KHNlbGYuZmllbGQuZ2V0KCduYW1lJykpOworCisgICAgICAg ICAgICAgICAgICBjb2xsZWN0aW9uLm9uKCJjaGFuZ2U6aXNfcHJpbWFyeV9r ZXkiLCBmdW5jdGlvbihtKSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBw cmltYXJ5X2tleV9jb2xsID0gc2VsZi5tb2RlbC5nZXQoJ3ByaW1hcnlfa2V5 JyksCisgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5fbmFtZSA9IG0u Z2V0KCduYW1lJyksCisgICAgICAgICAgICAgICAgICAgICAgICBwcmltYXJ5 X2tleTsKKworICAgICAgICAgICAgICAgICAgICBpZihtLmdldCgnaXNfcHJp bWFyeV9rZXknKSkgeworICAgICAgICAgICAgICAgICAgICAvLyBBZGQgY29s dW1uIHRvIHByaW1hcnkga2V5LgorICAgICAgICAgICAgICAgICAgICAgIGlm IChwcmltYXJ5X2tleV9jb2xsLmxlbmd0aCA8IDEpIHsKKyAgICAgICAgICAg ICAgICAgICAgICAgIHByaW1hcnlfa2V5ID0gbmV3IChwcmltYXJ5X2tleV9j b2xsLm1vZGVsKSh7fSwgeworICAgICAgICAgICAgICAgICAgICAgICAgICB0 b3A6IHNlbGYubW9kZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bGxlY3Rpb246IHByaW1hcnlfa2V5X2NvbGwsCisgICAgICAgICAgICAgICAg ICAgICAgICAgIGhhbmRsZXI6IHByaW1hcnlfa2V5X2NvbGwKKyAgICAgICAg ICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgICAgICAgICAg cHJpbWFyeV9rZXlfY29sbC5hZGQocHJpbWFyeV9rZXkpOworICAgICAgICAg ICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAg ICBwcmltYXJ5X2tleSA9IHByaW1hcnlfa2V5X2NvbGwuZmlyc3QoKTsKKyAg ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAg Ly8gRG8gbm90IGFsdGVyIGV4aXN0aW5nIHByaW1hcnkga2V5IGNvbHVtbnMu CisgICAgICAgICAgICAgICAgICAgICAgaWYgKF8uaXNVbmRlZmluZWQocHJp bWFyeV9rZXkuZ2V0KCdvaWQnKSkpIHsKKyAgICAgICAgICAgICAgICAgICAg ICAgIHZhciBwcmltYXJ5X2tleV9jb2x1bW5fY29sbCA9IHByaW1hcnlfa2V5 LmdldCgnY29sdW1ucycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICBw cmltYXJ5X2tleV9jb2x1bW5fZXhpc3QgPSBwcmltYXJ5X2tleV9jb2x1bW5f Y29sbC53aGVyZSh7Y29sdW1uOmNvbHVtbl9uYW1lfSk7CisKKyAgICAgICAg ICAgICAgICAgICAgICAgIGlmIChwcmltYXJ5X2tleV9jb2x1bW5fZXhpc3Qu bGVuZ3RoID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdmFy IHByaW1hcnlfa2V5X2NvbHVtbiA9IG5ldyAocHJpbWFyeV9rZXlfY29sdW1u X2NvbGwubW9kZWwpKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg e2NvbHVtbjogY29sdW1uX25hbWV9LCB7IHNpbGVudDogdHJ1ZSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHRvcDogc2VsZi5tb2RlbCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxlY3Rpb246IHByaW1h cnlfa2V5X2NvbGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBo YW5kbGVyOiBwcmltYXJ5X2tleV9jb2xsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcHJp bWFyeV9rZXlfY29sdW1uX2NvbGwuYWRkKHByaW1hcnlfa2V5X2NvbHVtbik7 CisgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAg ICAgICAgICAgIHByaW1hcnlfa2V5X2NvbHVtbl9jb2xsLnRyaWdnZXIoJ3Bn YWRtaW46bXVsdGljb2x1bW46dXBkYXRlZCcsIHByaW1hcnlfa2V5X2NvbHVt bl9jb2xsKTsKKyAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAg ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgLy8g cmVtb3ZlIGNvbHVtbiBmcm9tIHByaW1hcnkga2V5LgorICAgICAgICAgICAg ICAgICAgICAgIGlmIChwcmltYXJ5X2tleV9jb2xsLmxlbmd0aCA+IDApIHsK KyAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwcmltYXJ5X2tleSA9IHBy aW1hcnlfa2V5X2NvbGwuZmlyc3QoKTsKKyAgICAgICAgICAgICAgICAgICAg ICAgIC8vIERvIG5vdCBhbHRlciBleGlzdGluZyBwcmltYXJ5IGtleSBjb2x1 bW5zLgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFfLmlzVW5kZWZp bmVkKHByaW1hcnlfa2V5LmdldCgnb2lkJykpKSB7CisgICAgICAgICAgICAg ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgICAg IH0KKworICAgICAgICAgICAgICAgICAgICAgICAgdmFyICBwcmltYXJ5X2tl eV9jb2x1bW5fY29sbCA9IHByaW1hcnlfa2V5LmdldCgnY29sdW1ucycpLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZWRDb2xzID0gcHJp bWFyeV9rZXlfY29sdW1uX2NvbGwud2hlcmUoe2NvbHVtbjpjb2x1bW5fbmFt ZX0pOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlbW92ZWRDb2xz Lmxlbmd0aCA+IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcHJp bWFyeV9rZXlfY29sdW1uX2NvbGwucmVtb3ZlKHJlbW92ZWRDb2xzKTsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgXy5lYWNoKHJlbW92ZWRDb2xzLCBm dW5jdGlvbihtKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbS5k ZXN0cm95KCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCisgICAg ICAgICAgICAgICAgICAgICAgICAgIGlmIChwcmltYXJ5X2tleV9jb2x1bW5f Y29sbC5sZW5ndGggPT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgLy8gVGhlcmUgd2lsbCBiZSBvbmx5IG9uIHByaW1h cnkga2V5IHNvIHJlbW92ZSB0aGUgZmlyc3Qgb25lLgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcHJpbWFyeV9rZXlfY29sbC5yZW1vdmUocHJp bWFyeV9rZXlfY29sbC5maXJzdCgpKTsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIC8qIElkZWFsbHkgYWJvdmUgbGluZSBvZiBjb2RlIHNob3Vs ZCBiZSAicHJpbWFyeV9rZXlfY29sbC5yZXNldCgpIi4KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAqIEJ1dCBvdXIgY3VzdG9tIERhdGFDb2xs ZWN0aW9uIChleHRlbmRlZCBmcm9tIEJhY2tib25lIGNvbGxlY3Rpb24gaW4g ZGF0YW1vZGVsLmpzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICogZG9lcyBub3QgcmVzcG9uZCB0byByZXNldCBldmVudCwgaXQgb25seSBz dXBwb3J0cyBhZGQsIHJlbW92ZSwgY2hhbmdlIGV2ZW50cy4KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAqIEFuZCBoZW5jZSBubyBjdXN0b20g ZXZlbnQgbGlzdGVuZXJzL3ZhbGlkYXRvcnMgZ2V0IGNhbGxlZCBmb3IgcmVz ZXQgZXZlbnQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAxMCk7CisgICAgICAg ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAg IH0KKyAgICAgICAgICAgICAgICAgICAgICAgIHByaW1hcnlfa2V5X2NvbHVt bl9jb2xsLnRyaWdnZXIoJ3BnYWRtaW46bXVsdGljb2x1bW46dXBkYXRlZCcs IHByaW1hcnlfa2V5X2NvbHVtbl9jb2xsKTsKKyAgICAgICAgICAgICAgICAg ICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg ICAgIH0pCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBy ZW1vdmU6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgdmFyIGNv bGxlY3Rpb24gPSB0aGlzLm1vZGVsLmdldCh0aGlzLmZpZWxkLmdldCgnbmFt ZScpKTsKKyAgICAgICAgICAgICAgICAgIGlmIChjb2xsZWN0aW9uKSB7Cisg ICAgICAgICAgICAgICAgICAgIGNvbGxlY3Rpb24ub2ZmKCJjaGFuZ2U6aXNf cHJpbWFyeV9rZXkiKTsKKyAgICAgICAgICAgICAgICAgIH0KKworICAgICAg ICAgICAgICAgICAgQmFja2Zvcm0uVW5pcXVlQ29sQ29sbGVjdGlvbkNvbnRy b2wucHJvdG90eXBlLnJlbW92ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwor ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfSksCisgICAgICAg ICAgICAgIGFsbG93TXVsdGlwbGVFbXB0eVJvdzogZmFsc2UKKyAgICAgICAg ICB9XQorICAgICAgICB9LHsKKyAgICAgICAgICB0eXBlOiAnbmVzdGVkJywg Y29udHJvbDogJ2ZpZWxkc2V0JywKKyAgICAgICAgICBzY2hlbWE6W3sKKyAg ICAgICAgICAgICAgLy8gSGVyZSB3ZSB3aWxsIGNyZWF0ZSB0YWIgY29udHJv bCBmb3IgY29uc3RyYWludHMKKyAgICAgICAgICAgICAgdHlwZTogJ25lc3Rl ZCcsIGNvbnRyb2w6ICd0YWInLCBncm91cDogJ3t7IF8oJ0NvbnN0cmFpbnRz JykgfX0nLAorICAgICAgICAgICAgICBtb2RlOiBbJ2VkaXQnLCAnY3JlYXRl J10sCisgICAgICAgICAgICAgIHNjaGVtYTogW3sKKyAgICAgICAgICAgICAg ICAgIGlkOiAncHJpbWFyeV9rZXknLCBsYWJlbDogJ3t7IF8oJ1ByaW1hcnkg S2V5JykgfX0nLAorICAgICAgICAgICAgICAgICAgbW9kZWw6IHBnQnJvd3Nl ci5Ob2Rlc1sncHJpbWFyeV9rZXknXS5tb2RlbCwKKyAgICAgICAgICAgICAg ICAgIHN1Ym5vZGU6IHBnQnJvd3Nlci5Ob2Rlc1sncHJpbWFyeV9rZXknXS5t b2RlbCwKKyAgICAgICAgICAgICAgICAgIGVkaXRhYmxlOiBmYWxzZSwgdHlw ZTogJ2NvbGxlY3Rpb24nLAorICAgICAgICAgICAgICAgICAgZ3JvdXA6ICd7 eyBfKCdQcmltYXJ5IEtleScpIH19JywgbW9kZTogWydlZGl0JywgJ2NyZWF0 ZSddLAorICAgICAgICAgICAgICAgICAgY2FuRWRpdDogdHJ1ZSwgY2FuRGVs ZXRlOiB0cnVlLAorICAgICAgICAgICAgICAgICAgY29udHJvbDogJ3VuaXF1 ZS1jb2wtY29sbGVjdGlvbicsCisgICAgICAgICAgICAgICAgICBjb2x1bW5z IDogWyduYW1lJywgJ2NvbHVtbnMnXSwKKyAgICAgICAgICAgICAgICAgIGNh bkFkZDogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgIGNhbkFkZFJvdzogZnVu Y3Rpb24obSkgeworICAgICAgICAgICAgICAgICAgIC8vIFVzZXIgY2FuIG9u bHkgYWRkIG9uZSBwcmltYXJ5IGtleQorICAgICAgICAgICAgICAgICAgIHZh ciBjb2x1bW5zID0gbS5nZXQoJ2NvbHVtbnMnKTsKKworICAgICAgICAgICAg ICAgICAgIHJldHVybiAobS5nZXQoJ3ByaW1hcnlfa2V5JykgJiYKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICBtLmdldCgncHJpbWFyeV9rZXknKS5s ZW5ndGggPCAxICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgXy5z b21lKGNvbHVtbnMucGx1Y2soJ25hbWUnKSkpOworICAgICAgICAgICAgICAg ICAgfQorICAgICAgICAgICAgICAgIH0seworICAgICAgICAgICAgICAgICAg aWQ6ICdmb3JlaWduX2tleScsIGxhYmVsOiAne3sgXygnRm9yZWlnbiBLZXkn KSB9fScsCisgICAgICAgICAgICAgICAgICBtb2RlbDogcGdCcm93c2VyLk5v ZGVzWydmb3JlaWduX2tleSddLm1vZGVsLAorICAgICAgICAgICAgICAgICAg c3Vibm9kZTogcGdCcm93c2VyLk5vZGVzWydmb3JlaWduX2tleSddLm1vZGVs LAorICAgICAgICAgICAgICAgICAgZWRpdGFibGU6IGZhbHNlLCB0eXBlOiAn Y29sbGVjdGlvbicsCisgICAgICAgICAgICAgICAgICBncm91cDogJ3t7IF8o J0ZvcmVpZ24gS2V5JykgfX0nLCBtb2RlOiBbJ2VkaXQnLCAnY3JlYXRlJ10s CisgICAgICAgICAgICAgICAgICBjYW5FZGl0OiB0cnVlLCBjYW5EZWxldGU6 IHRydWUsCisgICAgICAgICAgICAgICAgICBjb250cm9sOiAndW5pcXVlLWNv bC1jb2xsZWN0aW9uJywKKyAgICAgICAgICAgICAgICAgIGNhbkFkZDogdHJ1 ZSwKKyAgICAgICAgICAgICAgICAgIGNvbHVtbnMgOiBbJ25hbWUnLCAnY29s dW1ucyddLAorICAgICAgICAgICAgICAgICAgY2FuQWRkUm93OiBmdW5jdGlv bihtKSB7CisgICAgICAgICAgICAgICAgICAgLy8gVXNlciBjYW4gb25seSBh ZGQgaWYgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNvbHVtbiB3aXRoIG5hbWUu CisgICAgICAgICAgICAgICAgICAgdmFyIGNvbHVtbnMgPSBtLmdldCgnY29s dW1ucycpOworICAgICAgICAgICAgICAgICAgIHJldHVybiBfLnNvbWUoY29s dW1ucy5wbHVjaygnbmFtZScpKTsKKyAgICAgICAgICAgICAgICAgIH0KKyAg ICAgICAgICAgICAgICB9LHsKKyAgICAgICAgICAgICAgICAgIGlkOiAnY2hl Y2tfY29uc3RyYWludCcsIGxhYmVsOiAne3sgXygnQ2hlY2sgQ29uc3RyYWlu dCcpIH19JywKKyAgICAgICAgICAgICAgICAgIG1vZGVsOiBwZ0Jyb3dzZXIu Tm9kZXNbJ2NoZWNrX2NvbnN0cmFpbnRzJ10ubW9kZWwsCisgICAgICAgICAg ICAgICAgICBzdWJub2RlOiBwZ0Jyb3dzZXIuTm9kZXNbJ2NoZWNrX2NvbnN0 cmFpbnRzJ10ubW9kZWwsCisgICAgICAgICAgICAgICAgICBlZGl0YWJsZTog ZmFsc2UsIHR5cGU6ICdjb2xsZWN0aW9uJywKKyAgICAgICAgICAgICAgICAg IGdyb3VwOiAne3sgXygnQ2hlY2snKSB9fScsIG1vZGU6IFsnZWRpdCcsICdj cmVhdGUnXSwKKyAgICAgICAgICAgICAgICAgIGNhbkVkaXQ6IHRydWUsIGNh bkRlbGV0ZTogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgIGNvbnRyb2w6ICd1 bmlxdWUtY29sLWNvbGxlY3Rpb24nLAorICAgICAgICAgICAgICAgICAgY2Fu QWRkOiB0cnVlLAorICAgICAgICAgICAgICAgICAgY29sdW1ucyA6IFsnbmFt ZScsICdjb25zcmMnXQorICAgICAgICAgICAgICAgIH0seworICAgICAgICAg ICAgICAgICAgaWQ6ICd1bmlxdWVfY29uc3RyYWludCcsIGxhYmVsOiAne3sg XygnVW5pcXVlIENvbnN0cmFpbnQnKSB9fScsCisgICAgICAgICAgICAgICAg ICBtb2RlbDogcGdCcm93c2VyLk5vZGVzWyd1bmlxdWVfY29uc3RyYWludCdd Lm1vZGVsLAorICAgICAgICAgICAgICAgICAgc3Vibm9kZTogcGdCcm93c2Vy Lk5vZGVzWyd1bmlxdWVfY29uc3RyYWludCddLm1vZGVsLAorICAgICAgICAg ICAgICAgICAgZWRpdGFibGU6IGZhbHNlLCB0eXBlOiAnY29sbGVjdGlvbics CisgICAgICAgICAgICAgICAgICBncm91cDogJ3t7IF8oJ1VuaXF1ZScpIH19 JywgbW9kZTogWydlZGl0JywgJ2NyZWF0ZSddLAorICAgICAgICAgICAgICAg ICAgY2FuRWRpdDogdHJ1ZSwgY2FuRGVsZXRlOiB0cnVlLAorICAgICAgICAg ICAgICAgICAgY29udHJvbDogJ3VuaXF1ZS1jb2wtY29sbGVjdGlvbicsCisg ICAgICAgICAgICAgICAgICBjb2x1bW5zIDogWyduYW1lJywgJ2NvbHVtbnMn XSwKKyAgICAgICAgICAgICAgICAgIGNhbkFkZDogdHJ1ZSwKKyAgICAgICAg ICAgICAgICAgIGNhbkFkZFJvdzogZnVuY3Rpb24obSkgeworICAgICAgICAg ICAgICAgICAgIC8vIFVzZXIgY2FuIG9ubHkgYWRkIGlmIHRoZXJlIGlzIGF0 IGxlYXN0IG9uZSBjb2x1bW4gd2l0aCBuYW1lLgorICAgICAgICAgICAgICAg ICAgIHZhciBjb2x1bW5zID0gbS5nZXQoJ2NvbHVtbnMnKTsKKyAgICAgICAg ICAgICAgICAgICByZXR1cm4gXy5zb21lKGNvbHVtbnMucGx1Y2soJ25hbWUn KSk7CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSx7 CisgICAgICAgICAgICAgICAgICBpZDogJ2V4Y2x1ZGVfY29uc3RyYWludCcs IGxhYmVsOiAne3sgXygnRXhjbHVkZSBDb25zdHJhaW50JykgfX0nLAorICAg ICAgICAgICAgICAgICAgbW9kZWw6IHBnQnJvd3Nlci5Ob2Rlc1snZXhjbHVz aW9uX2NvbnN0cmFpbnQnXS5tb2RlbCwKKyAgICAgICAgICAgICAgICAgIHN1 Ym5vZGU6IHBnQnJvd3Nlci5Ob2Rlc1snZXhjbHVzaW9uX2NvbnN0cmFpbnQn XS5tb2RlbCwKKyAgICAgICAgICAgICAgICAgIGVkaXRhYmxlOiBmYWxzZSwg dHlwZTogJ2NvbGxlY3Rpb24nLAorICAgICAgICAgICAgICAgICAgZ3JvdXA6 ICd7eyBfKCdFeGNsdWRlJykgfX0nLCBtb2RlOiBbJ2VkaXQnLCAnY3JlYXRl J10sCisgICAgICAgICAgICAgICAgICBjYW5FZGl0OiB0cnVlLCBjYW5EZWxl dGU6IHRydWUsCisgICAgICAgICAgICAgICAgICBjb250cm9sOiAndW5pcXVl LWNvbC1jb2xsZWN0aW9uJywKKyAgICAgICAgICAgICAgICAgIGNvbHVtbnMg OiBbJ25hbWUnLCAnY29sdW1ucycsICdjb25zdHJhaW50J10sCisgICAgICAg ICAgICAgICAgICBjYW5BZGQ6IHRydWUsCisgICAgICAgICAgICAgICAgICBj YW5BZGRSb3c6IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICAgICAgICAgICAv LyBVc2VyIGNhbiBvbmx5IGFkZCBpZiB0aGVyZSBpcyBhdCBsZWFzdCBvbmUg Y29sdW1uIHdpdGggbmFtZS4KKyAgICAgICAgICAgICAgICAgICB2YXIgY29s dW1ucyA9IG0uZ2V0KCdjb2x1bW5zJyk7CisgICAgICAgICAgICAgICAgICAg cmV0dXJuIF8uc29tZShjb2x1bW5zLnBsdWNrKCduYW1lJykpOworICAgICAg ICAgICAgICAgICAgfQorICAgICAgICAgICAgfV0KKyAgICAgICAgICB9XQor ICAgICAgICB9LHsKKyAgICAgICAgICB0eXBlOiAnbmVzdGVkJywgY29udHJv bDogJ2ZpZWxkc2V0JywgbGFiZWw6ICd7eyBfKCdMaWtlJykgfX0nLAorICAg ICAgICAgIGdyb3VwOiAne3sgXygnQWR2YW5jZWQnKSB9fScsCisgICAgICAg ICAgc2NoZW1hOlt7CisgICAgICAgICAgICBpZDogJ2xpa2VfcmVsYXRpb24n LCBsYWJlbDone3sgXygnUmVsYXRpb24nKSB9fScsIGNlbGw6ICdzdHJpbmcn LAorICAgICAgICAgICAgdHlwZTogJ3RleHQnLCBtb2RlOiBbJ2NyZWF0ZScs ICdlZGl0J10sCisgICAgICAgICAgICBjb250cm9sOiAnbm9kZS1hamF4LW9w dGlvbnMnLCB1cmw6ICdnZXRfcmVsYXRpb25zJywKKyAgICAgICAgICAgIGRp c2FibGVkOiAnaW5TY2hlbWFXaXRoTW9kZWxDaGVjaycsIGdyb3VwOiAne3sg XygnTGlrZScpIH19JworICAgICAgICAgIH0seworICAgICAgICAgICAgaWQ6 ICdsaWtlX2RlZmF1bHRfdmFsdWUnLCBsYWJlbDone3sgXygnV2l0aCBEZWZh dWx0IHZhbHVlcz8nKSB9fScsIGNlbGw6ICdzd2l0Y2gnLAorICAgICAgICAg ICAgdHlwZTogJ3N3aXRjaCcsIG1vZGU6IFsnY3JlYXRlJywgJ2VkaXQnXSwK KyAgICAgICAgICAgIGRpc2FibGVkOiAnaW5TY2hlbWFXaXRoTW9kZWxDaGVj aycsIGdyb3VwOiAne3sgXygnTGlrZScpIH19JworICAgICAgICAgIH0sewor ICAgICAgICAgICAgaWQ6ICdsaWtlX2NvbnN0cmFpbnRzJywgbGFiZWw6J3t7 IF8oJ1dpdGggQ29uc3RyYWludHM/JykgfX0nLCBjZWxsOiAnc3dpdGNoJywK KyAgICAgICAgICAgIHR5cGU6ICdzd2l0Y2gnLCBtb2RlOiBbJ2NyZWF0ZScs ICdlZGl0J10sCisgICAgICAgICAgICBkaXNhYmxlZDogJ2luU2NoZW1hV2l0 aE1vZGVsQ2hlY2snLCBncm91cDogJ3t7IF8oJ0xpa2UnKSB9fScKKyAgICAg ICAgICB9LHsKKyAgICAgICAgICAgIGlkOiAnbGlrZV9pbmRleGVzJywgbGFi ZWw6J3t7IF8oJ1dpdGggSW5kZXhlcz8nKSB9fScsIGNlbGw6ICdzd2l0Y2gn LAorICAgICAgICAgICAgdHlwZTogJ3N3aXRjaCcsIG1vZGU6IFsnY3JlYXRl JywgJ2VkaXQnXSwKKyAgICAgICAgICAgIGRpc2FibGVkOiAnaW5TY2hlbWFX aXRoTW9kZWxDaGVjaycsIGdyb3VwOiAne3sgXygnTGlrZScpIH19JworICAg ICAgICAgIH0seworICAgICAgICAgICAgaWQ6ICdsaWtlX3N0b3JhZ2UnLCBs YWJlbDone3sgXygnV2l0aCBTdG9yYWdlPycpIH19JywgY2VsbDogJ3N3aXRj aCcsCisgICAgICAgICAgICB0eXBlOiAnc3dpdGNoJywgbW9kZTogWydjcmVh dGUnLCAnZWRpdCddLAorICAgICAgICAgICAgZGlzYWJsZWQ6ICdpblNjaGVt YVdpdGhNb2RlbENoZWNrJywgZ3JvdXA6ICd7eyBfKCdMaWtlJykgfX0nCisg ICAgICAgICAgfSx7CisgICAgICAgICAgICBpZDogJ2xpa2VfY29tbWVudHMn LCBsYWJlbDone3sgXygnV2l0aCBDb21tZW50cz8nKSB9fScsIGNlbGw6ICdz d2l0Y2gnLAorICAgICAgICAgICAgdHlwZTogJ3N3aXRjaCcsIG1vZGU6IFsn Y3JlYXRlJywgJ2VkaXQnXSwKKyAgICAgICAgICAgIGRpc2FibGVkOiAnaW5T Y2hlbWFXaXRoTW9kZWxDaGVjaycsIGdyb3VwOiAne3sgXygnTGlrZScpIH19 JworICAgICAgICAgIH1dCisgICAgICAgIH0seworICAgICAgICAgIC8vIEhl cmUgd2Ugd2lsbCBjcmVhdGUgdGFiIGNvbnRyb2wgZm9yIGF1dG8tdmFjdXVt CisgICAgICAgICAgdHlwZTogJ25lc3RlZCcsIGNvbnRyb2w6ICd0YWInLCBn cm91cDogJ3t7IF8oJ0F1dG8gdmFjdXVtJykgfX0nLAorICAgICAgICAgIG1v ZGU6IFsnZWRpdCcsICdjcmVhdGUnXSwKKyAgICAgICAgICBzY2hlbWE6IEJh Y2tmb3JtLlZhY3V1bVNldHRpbmdzU2NoZW1hCisgICAgICAgIH0seworICAg ICAgICAgIGlkOiAncmVsYWNsX3N0cicsIGxhYmVsOid7eyBfKCdQcml2aWxl Z2VzJykgfX0nLCBjZWxsOiAnc3RyaW5nJywKKyAgICAgICAgICB0eXBlOiAn dGV4dCcsIG1vZGU6IFsncHJvcGVydGllcyddLCBncm91cDogJ3t7IF8oJ1Nl Y3VyaXR5JykgfX0nLAorICAgICAgICAgIGRpc2FibGVkOiAnaW5TY2hlbWEn CisgICAgICAgIH0seworICAgICAgICAgIGlkOiAncmVsYWNsJywgbGFiZWw6 ICdQcml2aWxlZ2VzJywgdHlwZTogJ2NvbGxlY3Rpb24nLAorICAgICAgICAg IGdyb3VwOiAne3sgXygnU2VjdXJpdHknKSB9fScsIGNvbnRyb2w6ICd1bmlx dWUtY29sLWNvbGxlY3Rpb24nLAorICAgICAgICAgIG1vZGVsOiBwZ0FkbWlu LkJyb3dzZXIuTm9kZS5Qcml2aWxlZ2VSb2xlTW9kZWwuZXh0ZW5kKHsKKyAg ICAgICAgICBwcml2aWxlZ2VzOiBbJ2EnLCdyJywndycsJ2QnLCdEJywneCcs J3QnXX0pLAorICAgICAgICAgIG1vZGU6IFsnZWRpdCcsICdjcmVhdGUnXSwg Y2FuQWRkOiB0cnVlLCBjYW5EZWxldGU6IHRydWUsCisgICAgICAgICAgdW5p cXVlQ29sIDogWydncmFudGVlJ10KKyAgICAgICAgfSx7CisgICAgICAgICAg aWQ6ICdzZWNsYWJlbHMnLCBsYWJlbDogJ3t7IF8oJ1NlY3VyaXR5IExhYmVs cycpIH19JywKKyAgICAgICAgICBtb2RlbDogcGdBZG1pbi5Ccm93c2VyLlNl Y3VyaXR5TW9kZWwsIGVkaXRhYmxlOiBmYWxzZSwgdHlwZTogJ2NvbGxlY3Rp b24nLAorICAgICAgICAgIGdyb3VwOiAne3sgXygnU2VjdXJpdHknKSB9fScs IG1vZGU6IFsnZWRpdCcsICdjcmVhdGUnXSwKKyAgICAgICAgICBtaW5fdmVy c2lvbjogOTAxMDAsIGNhbkFkZDogdHJ1ZSwKKyAgICAgICAgICBjYW5FZGl0 OiBmYWxzZSwgY2FuRGVsZXRlOiB0cnVlLCBjb250cm9sOiAndW5pcXVlLWNv bC1jb2xsZWN0aW9uJworICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ3Zh Y3V1bV9zZXR0aW5nc19zdHInLCBsYWJlbDogJ3t7IF8oJ1N0b3JhZ2UgU2V0 dGluZ3MnKSB9fScsCisgICAgICAgICAgdHlwZTogJ211bHRpbGluZScsIGdy b3VwOiAne3sgXygnQWR2YW5jZWQnKSB9fScsIG1vZGU6IFsncHJvcGVydGll cyddCisgICAgICAgIH0KKyAgICAgICAgXSwKKyAgICAgICAgdmFsaWRhdGU6 IGZ1bmN0aW9uKCkgeworICAgICAgICAgIHZhciBlcnIgPSB7fSwKKyAgICAg ICAgICAgICAgY2hhbmdlZEF0dHJzID0gdGhpcy5jaGFuZ2VkLAorICAgICAg ICAgICAgICBtc2cgPSB1bmRlZmluZWQsCisgICAgICAgICAgICAgIG5hbWUg PSB0aGlzLmdldCgnbmFtZScpLAorICAgICAgICAgICAgICBzY2hlbWEgPSB0 aGlzLmdldCgnc2NoZW1hJyksCisgICAgICAgICAgICAgIHJlbG93bmVyID0g dGhpcy5nZXQoJ3JlbG93bmVyJyk7CisKKyAgICAgICAgICB0aGlzLmVycm9y TW9kZWwuY2xlYXIoKTsKKworICAgICAgICAgIGlmIChfLmlzVW5kZWZpbmVk KG5hbWUpIHx8IF8uaXNOdWxsKG5hbWUpIHx8CisgICAgICAgICAgICBTdHJp bmcobmFtZSkucmVwbGFjZSgvXlxzK3xccyskL2csICcnKSA9PSAnJykgewor ICAgICAgICAgICAgbXNnID0gJ3t7IF8oJ1RhYmxlIG5hbWUgY2FuIG5vdCBi ZSBlbXB0eS4nKSB9fSc7CisgICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwu c2V0KCduYW1lJywgbXNnKTsKKyAgICAgICAgICAgIHJldHVybiBtc2c7Cisg ICAgICAgICAgfSBlbHNlIGlmIChfLmlzVW5kZWZpbmVkKHNjaGVtYSkgfHwg Xy5pc051bGwoc2NoZW1hKSB8fAorICAgICAgICAgICAgU3RyaW5nKHNjaGVt YSkucmVwbGFjZSgvXlxzK3xccyskL2csICcnKSA9PSAnJykgeworICAgICAg ICAgICAgbXNnID0gJ3t7IF8oJ1RhYmxlIHNjaGVtYSBjYW4gbm90IGJlIGVt cHR5LicpIH19JzsKKyAgICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC5zZXQo J3NjaGVtYScsIG1zZyk7CisgICAgICAgICAgICByZXR1cm4gbXNnOworICAg ICAgICAgIH0gZWxzZSBpZiAoXy5pc1VuZGVmaW5lZChyZWxvd25lcikgfHwg Xy5pc051bGwocmVsb3duZXIpIHx8CisgICAgICAgICAgICBTdHJpbmcocmVs b3duZXIpLnJlcGxhY2UoL15ccyt8XHMrJC9nLCAnJykgPT0gJycpIHsKKyAg ICAgICAgICAgIG1zZyA9ICd7eyBfKCdUYWJsZSBvd25lciBjYW4gbm90IGJl IGVtcHR5LicpIH19JzsKKyAgICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC5z ZXQoJ3JlbG93bmVyJywgbXNnKTsKKyAgICAgICAgICAgIHJldHVybiBtc2c7 CisgICAgICAgICAgfQorICAgICAgICAgIHJldHVybiBudWxsOworICAgICAg ICB9LAorICAgICAgICAvLyBXZSB3aWxsIGRpc2FibGUgZXZlcnl0aGluZyBp ZiB3ZSBhcmUgdW5kZXIgY2F0YWxvZyBub2RlCisgICAgICAgIGluU2NoZW1h OiBmdW5jdGlvbigpIHsKKyAgICAgICAgICBpZih0aGlzLm5vZGVfaW5mbyAm JiAgJ2NhdGFsb2cnIGluIHRoaXMubm9kZV9pbmZvKQorICAgICAgICAgIHsK KyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgIH0KKyAgICAg ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0sCisgICAgICAgaXNJbmhl cml0ZWRUYWJsZTogZnVuY3Rpb24obSkgeworICAgICAgICAgaWYoIW0uaW5T Y2hlbWEuYXBwbHkodGhpcywgW21dKSkgeworICAgICAgICAgIGlmKAorICAg ICAgICAgICAgICAgKCFfLmlzVW5kZWZpbmVkKG0uZ2V0KCdjb2xsX2luaGVy aXRzJykpICYmIG0uZ2V0KCdjb2xsX2luaGVyaXRzJykubGVuZ3RoICE9IDAp CisgICAgICAgICAgICAgfHwKKyAgICAgICAgICAgICAgICghXy5pc1VuZGVm aW5lZChtLmdldCgndHlwbmFtZScpKSAmJiBTdHJpbmcobS5nZXQoJ3R5cG5h bWUnKSkucmVwbGFjZSgvXlxzK3xccyskL2csICcnKSAhPT0gJycpCisgICAg ICAgICAgICAgKSB7CisgICAgICAgICAgICAvLyBFaXRoZXIgb2ZfdHlwZXMg b3IgY29sbF9pbmhlcml0cyBoYXMgdmFsdWUKKyAgICAgICAgICAgIHJldHVy biBmYWxzZTsKKyAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0 dXJuIHRydWU7CisgICAgICAgICAgfQorICAgICAgICAgfSBlbHNlIHsKKyAg ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgfQorICAgICAgICB9 LAorICAgICAgICAvLyBXZSB3aWxsIGRpc2FibGUgaXQgaWYgT2Z0eXBlIGlz IGRlZmluZWQKKyAgICAgICAgY2hlY2tJbmhlcml0YW5jZTogZnVuY3Rpb24o bSkgeworICAgICAgICAvL2NvbGxfaW5oZXJpdHMgfHwgdHlwbmFtZQorICAg ICAgICAgIGlmKCFtLmluU2NoZW1hLmFwcGx5KHRoaXMsIFttXSkgJiYKKyAg ICAgICAgICAgICAgKCBfLmlzVW5kZWZpbmVkKG0uZ2V0KCd0eXBuYW1lJykp IHx8CisgICAgICAgICAgICAgICAgXy5pc051bGwobS5nZXQoJ3R5cG5hbWUn KSkgfHwKKyAgICAgICAgICAgICAgICBTdHJpbmcobS5nZXQoJ3R5cG5hbWUn KSkucmVwbGFjZSgvXlxzK3xccyskL2csICcnKSA9PSAnJykpIHsKKyAgICAg ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICB9CisgICAgICAgICAg cmV0dXJuIHRydWU7CisgICAgICAgIH0sCisgICAgICAgIC8vIENoZWNrIGZv ciBjb2x1bW4gZ3JpZCB3aGVuIHRvIEFkZAorICAgICAgICBjaGVja19ncmlk X2FkZF9jb25kaXRpb246IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICB2YXIg ZW5hYmxlX2ZsYWcgPSB0cnVlOworICAgICAgICAgIGlmKCFtLmluU2NoZW1h LmFwcGx5KHRoaXMsIFttXSkpIHsKKyAgICAgICAgICAgIC8vIGlmIG9mX3R5 cGUgdGhlbiBkaXNhYmxlIGFkZCBpbiBncmlkCisgICAgICAgICAgICBpZiAo IV8uaXNVbmRlZmluZWQobS5nZXQoJ3R5cG5hbWUnKSkgJiYgIV8uaXNOdWxs KG0uZ2V0KCd0eXBuYW1lJykpKSB7CisgICAgICAgICAgICAgICAgICAgIGVu YWJsZV9mbGFnID0gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAg ICAgIH0KKyAgICAgICAgICByZXR1cm4gZW5hYmxlX2ZsYWc7CisgICAgICAg IH0sCisgICAgICAgIC8vIENoZWNrIGZvciBjb2x1bW4gZ3JpZCB3aGVuIHRv IGVkaXQvZGVsZXRlIChmb3IgZWFjaCByb3cpCisgICAgICAgIGNoZWNrX2dy aWRfcm93X2VkaXRfZGVsZXRlOiBmdW5jdGlvbihtKSB7CisgICAgICAgICAg dmFyIGZsYWcgPSB0cnVlOworICAgICAgICAgIGlmKCFfLmlzVW5kZWZpbmVk KG0uZ2V0KCdpbmhlcml0ZWRmcm9tJykpICYmCisgICAgICAgICAgICAgICAh Xy5pc051bGwobS5nZXQoJ2luaGVyaXRlZGZyb20nKSkgJiYKKyAgICAgICAg ICAgICAgIFN0cmluZyhtLmdldCgnaW5oZXJpdGVkZnJvbScpKS5yZXBsYWNl KC9eXHMrfFxzKyQvZywgJycpICE9PSAnJykgeworICAgICAgICAgICAgZmxh ZyA9IGZhbHNlOworICAgICAgICAgIH0KKyAgICAgICAgICByZXR1cm4gZmxh ZzsKKyAgICAgICAgfSwKKyAgICAgICAgLy8gV2Ugd2lsbCBkaXNhYmxlIGl0 IGlmIEluaGVyaXRhbmNlIGlzIGRlZmluZWQKKyAgICAgICAgY2hlY2tPZlR5 cGU6IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgLy9jb2xsX2luaGVyaXRzIHx8 IHR5cG5hbWUKKyAgICAgICAgICBpZighbS5pblNjaGVtYVdpdGhNb2RlbENo ZWNrLmFwcGx5KHRoaXMsIFttXSkgJiYKKyAgICAgICAgICAgICAgKF8uaXNV bmRlZmluZWQobS5nZXQoJ2NvbGxfaW5oZXJpdHMnKSkgfHwKKyAgICAgICAg ICAgICAgIF8uaXNOdWxsKG0uZ2V0KCdjb2xsX2luaGVyaXRzJykpIHx8Cisg ICAgICAgICAgICAgICBTdHJpbmcobS5nZXQoJ2NvbGxfaW5oZXJpdHMnKSku cmVwbGFjZSgvXlxzK3xccyskL2csICcnKSA9PSAnJykpIHsKKyAgICAgICAg ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICB9CisgICAgICAgICAgcmV0 dXJuIHRydWU7CisgICAgICAgIH0sCisgICAgICAgIC8vIFdlIHdpbGwgY2hl Y2sgaWYgd2UgYXJlIHVuZGVyIHNjaGVtYSBub2RlICYgaW4gJ2NyZWF0ZScg bW9kZQorICAgICAgICBpblNjaGVtYVdpdGhNb2RlbENoZWNrOiBmdW5jdGlv bihtKSB7CisgICAgICAgICAgaWYodGhpcy5ub2RlX2luZm8gJiYgICdzY2hl bWEnIGluIHRoaXMubm9kZV9pbmZvKQorICAgICAgICAgIHsKKyAgICAgICAg ICAgIC8vIFdlIHdpbGwgZGlzYmFsZSBjb250cm9sIGlmIGl0J3MgaW4gJ2Vk aXQnIG1vZGUKKyAgICAgICAgICAgIGlmIChtLmlzTmV3KCkpIHsKKyAgICAg ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfSBlbHNlIHsK KyAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9Cisg ICAgICAgICAgfQorICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9 LAorICAgICAgICBpc1RhYmxlQXV0b1ZhY3V1bUVuYWJsZTogZnVuY3Rpb24o bSkgeworICAgICAgICAgIC8vIFdlIG5lZWQgdG8gY2hlY2sgYWRkaXRpb25h bCBjb25kaXRpb24gdG8gdG9nZ2xlIGVuYWJsZS9kaXNhYmxlCisgICAgICAg ICAgLy8gZm9yIHRhYmxlIGF1dG8tdmFjdXVtCisgICAgICAgICAgaWYoIW0u aW5TY2hlbWEuYXBwbHkodGhpcywgW21dKSAmJgorICAgICAgICAgICAgICBt LmdldCgnYXV0b3ZhY3V1bV9lbmFibGVkJykgPT09IHRydWUpIHsKKyAgICAg ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICB9CisgICAgICAgICAg cmV0dXJuIHRydWU7CisgICAgICAgIH0sCisgICAgICAgIGlzVG9hc3RUYWJs ZUF1dG9WYWN1dW1FbmFibGU6IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICAv LyBXZSBuZWVkIHRvIGNoZWNrIGFkZGl0aW9uYWwgY29uZGl0aW9uIHRvIHRv Z2dsZSBlbmFibGUvZGlzYWJsZQorICAgICAgICAgIC8vIGZvciB0b2FzdCB0 YWJsZSBhdXRvLXZhY3V1bQorICAgICAgICAgIGlmKCFtLmluU2NoZW1hV2l0 aE1vZGVsQ2hlY2suYXBwbHkodGhpcywgW21dKSAmJgorICAgICAgICAgICAg ICBtLmdldCgndG9hc3RfYXV0b3ZhY3V1bV9lbmFibGVkJykgPT0gdHJ1ZSkg eworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgIH0KKyAg ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfSwKKyAgICAgICAgZmV0 Y2hfY29sdW1uc19hamF4OiBmdW5jdGlvbihhcmcpIHsKKyAgICAgICAgdmFy IHNlbGYgPSB0aGlzLAorICAgICAgICAgIHVybCA9ICdnZXRfY29sdW1ucycs CisgICAgICAgICAgbSA9IHNlbGYubW9kZWwudG9wIHx8IHNlbGYubW9kZWws CisgICAgICAgICAgb2xkX2NvbHVtbnMgPSBfLmNsb25lKG0uZ2V0KCdjb2x1 bW5zJykpCisgICAgICAgICAgZGF0YSA9IHVuZGVmaW5lZDsKKworICAgICAg ICAgIGlmICh1cmwpIHsKKyAgICAgICAgICAgIHZhciBub2RlID0gdGhpcy5m aWVsZC5nZXQoJ3NjaGVtYV9ub2RlJyksCisgICAgICAgICAgICAgIG5vZGVf aW5mbyA9IHRoaXMuZmllbGQuZ2V0KCdub2RlX2luZm8nKSwKKyAgICAgICAg ICAgICAgZnVsbF91cmwgPSBub2RlLmdlbmVyYXRlX3VybC5hcHBseSgKKyAg ICAgICAgICAgICAgICBub2RlLCBbCisgICAgICAgICAgICAgICAgICBudWxs LCB1cmwsIHRoaXMuZmllbGQuZ2V0KCdub2RlX2RhdGEnKSwKKyAgICAgICAg ICAgICAgICAgIHRoaXMuZmllbGQuZ2V0KCd1cmxfd2l0aF9pZCcpIHx8IGZh bHNlLCBub2RlX2luZm8KKyAgICAgICAgICAgICAgICBdKSwKKyAgICAgICAg ICAgICAgY2FjaGVfbGV2ZWwgPSB0aGlzLmZpZWxkLmdldCgnY2FjaGVfbGV2 ZWwnKSB8fCBub2RlLnR5cGUsCisgICAgICAgICAgICAgIGNhY2hlX25vZGUg PSB0aGlzLmZpZWxkLmdldCgnY2FjaGVfbm9kZScpOworCisgICAgICAgICAg ICBjYWNoZV9ub2RlID0gKGNhY2hlX25vZGUgJiYgcGdBZG1pbi5Ccm93c2Vy Lk5vZGVzWydjYWNoZV9ub2RlJ10pIHx8IG5vZGU7CisKKyAgICAgICAgICAg IG0udHJpZ2dlcigncGdhZG1pbjp2aWV3OmZldGNoaW5nJywgbSwgc2VsZi5m aWVsZCk7CisgICAgICAgICAgICAvLyBGZXRjaGluZyBDb2x1bW5zIGRhdGEg Zm9yIHRoZSBzZWxlY3RlZCB0YWJsZS4KKyAgICAgICAgICAgICQuYWpheCh7 CisgICAgICAgICAgICAgIGFzeW5jOiBmYWxzZSwKKyAgICAgICAgICAgICAg dXJsOiBmdWxsX3VybCwKKyAgICAgICAgICAgICAgZGF0YTogYXJnLAorICAg ICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbihyZXMpIHsKKyAgICAgICAg ICAgICAgICBkYXRhID0gY2FjaGVfbm9kZS5jYWNoZSh1cmwsIG5vZGVfaW5m bywgY2FjaGVfbGV2ZWwsIHJlcy5kYXRhKTsKKyAgICAgICAgICAgICAgfSwK KyAgICAgICAgICAgICAgZXJyb3I6IGZ1bmN0aW9uKCkgeworICAgICAgICAg ICAgICAgIG0udHJpZ2dlcigncGdhZG1pbjp2aWV3OmZldGNoOmVycm9yJywg bSwgc2VsZi5maWVsZCk7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg IH0pOworICAgICAgICAgICAgbS50cmlnZ2VyKCdwZ2FkbWluOnZpZXc6ZmV0 Y2hlZCcsIG0sIHNlbGYuZmllbGQpOworICAgICAgICAgICAgZGF0YSA9IChk YXRhICYmIGRhdGEuZGF0YSkgfHwgW107CisgICAgICAgICAgICByZXR1cm4g ZGF0YTsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0pLAorICAg ICAgY2FuQ3JlYXRlOiBmdW5jdGlvbihpdGVtRGF0YSwgaXRlbSwgZGF0YSkg eworICAgICAgICAgIC8vSWYgY2hlY2sgaXMgZmFsc2UgdGhlbiAsIHdlIHdp bGwgYWxsb3cgY3JlYXRlIG1lbnUKKyAgICAgICAgICBpZiAoZGF0YSAmJiBk YXRhLmNoZWNrID09IGZhbHNlKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7 CisKKyAgICAgICAgICB2YXIgdCA9IHBnQnJvd3Nlci50cmVlLCBpID0gaXRl bSwgZCA9IGl0ZW1EYXRhOworICAgICAgICAgIC8vIFRvIGl0ZXJhdGUgb3Zl ciB0cmVlIHRvIGNoZWNrIHBhcmVudCBub2RlCisgICAgICAgICAgd2hpbGUg KGkpIHsKKyAgICAgICAgICAgIC8vIElmIGl0IGlzIHNjaGVtYSB0aGVuIGFs bG93IHVzZXIgdG8gY3JlYXRlIHRhYmxlCisgICAgICAgICAgICBpZiAoXy5p bmRleE9mKFsnc2NoZW1hJ10sIGQuX3R5cGUpID4gLTEpCisgICAgICAgICAg ICAgIHJldHVybiB0cnVlOworCisgICAgICAgICAgICBpZiAoJ2NvbGwtdGFi bGUnID09IGQuX3R5cGUpIHsKKyAgICAgICAgICAgICAgLy9DaGVjayBpZiB3 ZSBhcmUgbm90IGNoaWxkIG9mIGNhdGFsb2cKKyAgICAgICAgICAgICAgcHJl dl9pID0gdC5oYXNQYXJlbnQoaSkgPyB0LnBhcmVudChpKSA6IG51bGw7Cisg ICAgICAgICAgICAgIHByZXZfZCA9IHByZXZfaSA/IHQuaXRlbURhdGEocHJl dl9pKSA6IG51bGw7CisgICAgICAgICAgICAgIGlmKCBwcmV2X2QuX3R5cGUg PT0gJ2NhdGFsb2cnKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl OworICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHJl dHVybiB0cnVlOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9Cisg ICAgICAgICAgICBpID0gdC5oYXNQYXJlbnQoaSkgPyB0LnBhcmVudChpKSA6 IG51bGw7CisgICAgICAgICAgICBkID0gaSA/IHQuaXRlbURhdGEoaSkgOiBu dWxsOworICAgICAgICAgIH0KKyAgICAgICAgICAvLyBieSBkZWZhdWx0IHdl IGRvIG5vdCB3YW50IHRvIGFsbG93IGNyZWF0ZSBtZW51CisgICAgICAgICAg cmV0dXJuIHRydWU7CisgICAgICB9LAorICAgICAgLy8gQ2hlY2sgdG8gd2hl dGhlciB0YWJsZSBoYXMgZGlzYWJsZSB0cmlnZ2VyKHMpCisgICAgICBjYW5D cmVhdGVfd2l0aF90cmlnZ2VyX2VuYWJsZTogZnVuY3Rpb24oaXRlbURhdGEs IGl0ZW0sIGRhdGEpIHsKKyAgICAgICAgaWYodGhpcy5jYW5DcmVhdGUuYXBw bHkodGhpcywgW2l0ZW1EYXRhLCBpdGVtLCBkYXRhXSkpIHsKKyAgICAgICAg ICAvLyBXZSBhcmUgaGVyZSBtZWFucyB3ZSBjYW4gY3JlYXRlIG1lbnUsIG5v dyBsZXQncyBjaGVjayBjb25kaXRpb24KKyAgICAgICAgICBpZihpdGVtRGF0 YS50aWdnZXJfY291bnQgPiAwKSB7CisgICAgICAgICAgICByZXR1cm4gdHJ1 ZTsKKyAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIGZh bHNlOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfSwKKyAgICAg IC8vIENoZWNrIHRvIHdoZXRoZXIgdGFibGUgaGFzIGVuYWJsZSB0cmlnZ2Vy KHMpCisgICAgICBjYW5DcmVhdGVfd2l0aF90cmlnZ2VyX2Rpc2FibGU6IGZ1 bmN0aW9uKGl0ZW1EYXRhLCBpdGVtLCBkYXRhKSB7CisgICAgICAgIGlmKHRo aXMuY2FuQ3JlYXRlLmFwcGx5KHRoaXMsIFtpdGVtRGF0YSwgaXRlbSwgZGF0 YV0pKSB7CisgICAgICAgICAgLy8gV2UgYXJlIGhlcmUgbWVhbnMgd2UgY2Fu IGNyZWF0ZSBtZW51LCBub3cgbGV0J3MgY2hlY2sgY29uZGl0aW9uCisgICAg ICAgICAgaWYoaXRlbURhdGEudGlnZ2VyX2NvdW50ID4gMCAmJiBpdGVtRGF0 YS5oYXNfZW5hYmxlX3RyaWdnZXJzID4gMCkgeworICAgICAgICAgICAgcmV0 dXJuIHRydWU7CisgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJl dHVybiBmYWxzZTsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0K KyAgfSk7CisKKyAgfQorCisgIHJldHVybiBwZ0Jyb3dzZXIuTm9kZXNbJ3Rh YmxlJ107Cit9KTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxl cy90ZW1wbGF0ZXMvdGFibGUvc3FsLzkuMV9wbHVzL2FjbC5zcWwgYi93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3RhYmxlL3NxbC85LjFfcGx1 cy9hY2wuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu LjU2ZjFmNzYKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90 YWJsZXMvdGVtcGxhdGVzL3RhYmxlL3NxbC85LjFfcGx1cy9hY2wuc3FsCkBA IC0wLDAgKzEsNDYgQEAKK3sjIyMgU1FMIHRvIGZldGNoIHByaXZpbGVnZXMg Zm9yIHRhYmxlc3BhY2UgIyMjfQorU0VMRUNUICdyZWxhY2wnIGFzIGRlZnR5 cGUsIENPQUxFU0NFKGd0LnJvbG5hbWUsICdwdWJsaWMnKSBncmFudGVlLCBn LnJvbG5hbWUgZ3JhbnRvciwKKyAgICBhcnJheV9hZ2cocHJpdmlsZWdlX3R5 cGUpIGFzIHByaXZpbGVnZXMsIGFycmF5X2FnZyhpc19ncmFudGFibGUpIGFz IGdyYW50YWJsZQorRlJPTQorICAoU0VMRUNUCisgICAgZC5ncmFudGVlLCBk LmdyYW50b3IsIGQuaXNfZ3JhbnRhYmxlLAorICAgIENBU0UgZC5wcml2aWxl Z2VfdHlwZQorCQlXSEVOICdDT05ORUNUJyBUSEVOICdjJworCQlXSEVOICdD UkVBVEUnIFRIRU4gJ0MnCisJCVdIRU4gJ0RFTEVURScgVEhFTiAnZCcKKwkJ V0hFTiAnRVhFQ1VURScgVEhFTiAnWCcKKwkJV0hFTiAnSU5TRVJUJyBUSEVO ICdhJworCQlXSEVOICdSRUZFUkVOQ0VTJyBUSEVOICd4JworCQlXSEVOICdT RUxFQ1QnIFRIRU4gJ3InCisJCVdIRU4gJ1RFTVBPUkFSWScgVEhFTiAnVCcK KwkJV0hFTiAnVFJJR0dFUicgVEhFTiAndCcKKwkJV0hFTiAnVFJVTkNBVEUn IFRIRU4gJ0QnCisJCVdIRU4gJ1VQREFURScgVEhFTiAndycKKwkJV0hFTiAn VVNBR0UnIFRIRU4gJ1UnCisJCUVMU0UgJ1VOS05PV04nCisJRU5EIEFTIHBy aXZpbGVnZV90eXBlCisgIEZST00KKyAgICAoU0VMRUNUIHJlbC5yZWxhY2wK KyAgICAgICAgRlJPTSBwZ19jbGFzcyByZWwKKyAgICAgICAgICBMRUZUIE9V VEVSIEpPSU4gcGdfdGFibGVzcGFjZSBzcGMgb24gc3BjLm9pZD1yZWwucmVs dGFibGVzcGFjZQorICAgICAgICAgIExFRlQgT1VURVIgSk9JTiBwZ19jb25z dHJhaW50IGNvbiBPTiBjb24uY29ucmVsaWQ9cmVsLm9pZCBBTkQgY29uLmNv bnR5cGU9J3AnCisgICAgICAgICAgTEVGVCBPVVRFUiBKT0lOIHBnX2NsYXNz IHRzdCBPTiB0c3Qub2lkID0gcmVsLnJlbHRvYXN0cmVsaWQKKyAgICAgICAg ICBMRUZUIEpPSU4gcGdfdHlwZSB0eXAgT04gcmVsLnJlbG9mdHlwZT10eXAu b2lkCisgICAgICAgIFdIRVJFIHJlbC5yZWxraW5kIElOICgncicsJ3MnLCd0 JykgQU5EIHJlbC5yZWxuYW1lc3BhY2UgPSB7eyBzY2lkIH19OjpvaWQKKyAg ICAgICAgICAgIEFORCByZWwub2lkID0ge3sgdGlkIH19OjpvaWQKKyAgICAp IGFjbCwKKyAgICAoU0VMRUNUIChkKS5ncmFudGVlIEFTIGdyYW50ZWUsIChk KS5ncmFudG9yIEFTIGdyYW50b3IsIChkKS5pc19ncmFudGFibGUKKyAgICAg ICAgQVMgaXNfZ3JhbnRhYmxlLCAoZCkucHJpdmlsZWdlX3R5cGUgQVMgcHJp dmlsZWdlX3R5cGUgRlJPTSAoU0VMRUNUCisgICAgICAgIGFjbGV4cGxvZGUo cmVsLnJlbGFjbCkgYXMgZAorICAgICAgICBGUk9NIHBnX2NsYXNzIHJlbAor ICAgICAgICAgIExFRlQgT1VURVIgSk9JTiBwZ190YWJsZXNwYWNlIHNwYyBv biBzcGMub2lkPXJlbC5yZWx0YWJsZXNwYWNlCisgICAgICAgICAgTEVGVCBP VVRFUiBKT0lOIHBnX2NvbnN0cmFpbnQgY29uIE9OIGNvbi5jb25yZWxpZD1y ZWwub2lkIEFORCBjb24uY29udHlwZT0ncCcKKyAgICAgICAgICBMRUZUIE9V VEVSIEpPSU4gcGdfY2xhc3MgdHN0IE9OIHRzdC5vaWQgPSByZWwucmVsdG9h c3RyZWxpZAorICAgICAgICAgIExFRlQgSk9JTiBwZ190eXBlIHR5cCBPTiBy ZWwucmVsb2Z0eXBlPXR5cC5vaWQKKyAgICAgICAgV0hFUkUgcmVsLnJlbGtp bmQgSU4gKCdyJywncycsJ3QnKSBBTkQgcmVsLnJlbG5hbWVzcGFjZSA9IHt7 IHNjaWQgfX06Om9pZAorICAgICAgICAgICAgQU5EIHJlbC5vaWQgPSB7eyB0 aWQgfX06Om9pZAorICAgICAgICApIGEpIGQKKyAgICApIGQKKyAgTEVGVCBK T0lOIHBnX2NhdGFsb2cucGdfcm9sZXMgZyBPTiAoZC5ncmFudG9yID0gZy5v aWQpCisgIExFRlQgSk9JTiBwZ19jYXRhbG9nLnBnX3JvbGVzIGd0IE9OIChk LmdyYW50ZWUgPSBndC5vaWQpCitHUk9VUCBCWSBnLnJvbG5hbWUsIGd0LnJv bG5hbWUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg YS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3RhYmxlL3NxbC85 LjFfcGx1cy9iYWNrZW5kX3N1cHBvcnQuc3FsIGIvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv dGFibGVzL3RlbXBsYXRlcy90YWJsZS9zcWwvOS4xX3BsdXMvYmFja2VuZF9z dXBwb3J0LnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li5mOWI5NTY0Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv dGFibGVzL3RlbXBsYXRlcy90YWJsZS9zcWwvOS4xX3BsdXMvYmFja2VuZF9z dXBwb3J0LnNxbApAQCAtMCwwICsxLDE4IEBACitTRUxFQ1QKKyBDQVNFIFdI RU4gbnNwLm5zcG5hbWUgSU4gKCdzeXMnLCAnZGJvJywgJ2luZm9ybWF0aW9u X3NjaGVtYScpIFRIRU4gdHJ1ZSBFTFNFIGZhbHNlIEVORCBBUyBkYlN1cHBv cnQKK0ZST00gcGdfbmFtZXNwYWNlIG5zcAorV0hFUkUgbnNwLm9pZD17e3Nj aWR9fTo6aW50CitBTkQgKAorCShuc3BuYW1lID0gJ3BnX2NhdGFsb2cnIEFO RCBFWElTVFMKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFNF TEVDVCAxIEZST00gcGdfY2xhc3MgV0hFUkUgcmVsbmFtZSA9ICdwZ19jbGFz cycgQU5EIHJlbG5hbWVzcGFjZSA9IG5zcC5vaWQgTElNSVQgMSkpCisJT1Ig KG5zcG5hbWUgPSAncGdhZ2VudCcgQU5EIEVYSVNUUworCSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoU0VMRUNUIDEgRlJPTSBwZ19jbGFzcyBX SEVSRSByZWxuYW1lID0gJ3BnYV9qb2InIEFORCByZWxuYW1lc3BhY2UgPSBu c3Aub2lkIExJTUlUIDEpKQorCU9SIChuc3BuYW1lID0gJ2luZm9ybWF0aW9u X3NjaGVtYScgQU5EIEVYSVNUUworCSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoU0VMRUNUIDEgRlJPTSBwZ19jbGFzcyBXSEVSRSByZWxuYW1l ID0gJ3RhYmxlcycgQU5EIHJlbG5hbWVzcGFjZSA9IG5zcC5vaWQgTElNSVQg MSkpCisJT1IgKG5zcG5hbWUgTElLRSAnXyUnIEFORCBFWElTVFMKKwkgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKFNFTEVDVCAxIEZST00gcGdf cHJvYyBXSEVSRSBwcm9uYW1lPSdzbG9ueXZlcnNpb24nIEFORCBwcm9uYW1l c3BhY2UgPSBuc3Aub2lkIExJTUlUIDEpKQorKQorQU5ECisgbnNwbmFtZSBO T1QgTElLRSBFJ3BnXFx0ZW1wXFwlJworQU5ECisgbnNwbmFtZSBOT1QgTElL RSBFJ3BnXFx0b2FzdF90ZW1wXFwlJwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m IGZpbGUKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1w bGF0ZXMvdGFibGUvc3FsLzkuMV9wbHVzL2NyZWF0ZS5zcWwgYi93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3RhYmxlL3NxbC85LjFfcGx1cy9j cmVhdGUuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu LmMwZmI1ZTQKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90 YWJsZXMvdGVtcGxhdGVzL3RhYmxlL3NxbC85LjFfcGx1cy9jcmVhdGUuc3Fs CkBAIC0wLDAgKzEsMTU3IEBACit7JSBpbXBvcnQgJ21hY3Jvcy9zY2hlbWFz L3NlY3VyaXR5Lm1hY3JvcycgYXMgU0VDTEFCTEUgJX0KK3slIGltcG9ydCAn bWFjcm9zL3NjaGVtYXMvcHJpdmlsZWdlLm1hY3JvcycgYXMgUFJJVklMRUdF ICV9Cit7JSBpbXBvcnQgJ21hY3Jvcy92YXJpYWJsZS5tYWNyb3MnIGFzIFZB UklBQkxFICV9Cit7JSBpbXBvcnQgJ2NvbHVtbi9tYWNyb3Mvc2VjdXJpdHku bWFjcm9zJyBhcyBDT0xVTU5fU0VDTEFCTEUgJX0KK3slIGltcG9ydCAnY29s dW1uL21hY3Jvcy9wcml2aWxlZ2UubWFjcm9zJyBhcyBDT0xVTU5fUFJJVklM RUdFICV9Cit7JSBpbXBvcnQgJ3RhYmxlL3NxbC9tYWNyb3MvY29uc3RyYWlu dHMubWFjcm8nIGFzIENPTlNUUkFJTlRTICV9Cit7Iz09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0jfQoreyM9PT09PT0gTUFJ TiBUQUJMRSBURU1QTEFURSBTVEFSVFMgSEVSRSA9PT09PT0jfQoreyM9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09I30KK3sj CisgSWYgdXNlciBoYXMgbm90IHByb3ZpZGVkIGFueSBkZXRhaWxzIGJ1dCBv bmx5IG5hbWUgdGhlbgorIGFkZCBlbXB0eSBicmFja2V0IHdpdGggdGFibGUg bmFtZQorI30KK3slIHNldCBlbXB0eV9icmFja2V0ID0gIiIlfQoreyUgaWYg ZGF0YS5jb2xsX2luaGVyaXRzfGxlbmd0aCA9PSAwIGFuZCAgZGF0YS5jb2x1 bW5zfGxlbmd0aCA9PSAwIGFuZCBub3QgZGF0YS50eXBuYW1lIGFuZCBub3Qg ZGF0YS5saWtlX3JlbGF0aW9uIGFuZCBkYXRhLnByaW1hcnlfa2V5fGxlbmd0 aCA9PSAwIGFuZCBkYXRhLnVuaXF1ZV9jb25zdHJhaW50fGxlbmd0aCA9PSAw IGFuZCBkYXRhLmZvcmVpZ25fa2V5fGxlbmd0aCA9PSAwIGFuZCBkYXRhLmNo ZWNrX2NvbnN0cmFpbnR8bGVuZ3RoID09IDAgYW5kIGRhdGEuZXhjbHVkZV9j b25zdHJhaW50fGxlbmd0aCA9PSAwICV9Cit7JSBzZXQgZW1wdHlfYnJhY2tl dCA9ICJcbihcbikiJX0KK3slIGVuZGlmICV9CitDUkVBVEUgeyUgaWYgZGF0 YS5yZWxwZXJzaXN0ZW5jZSAlfVVOTE9HR0VEIHslIGVuZGlmICV9VEFCTEUg e3tjb25ufHF0SWRlbnQoZGF0YS5zY2hlbWEsIGRhdGEubmFtZSl9fXt7ZW1w dHlfYnJhY2tldH19Cit7JSBpZiBkYXRhLnR5cG5hbWUgJX0KKyAgICBPRiB7 eyBkYXRhLnR5cG5hbWUgfX0KK3slIGVuZGlmICV9Cit7JSBpZiBkYXRhLmxp a2VfcmVsYXRpb24gb3IgZGF0YS5jb2xsX2luaGVyaXRzIG9yIGRhdGEuY29s dW1uc3xsZW5ndGggPiAwIG9yIGRhdGEucHJpbWFyeV9rZXl8bGVuZ3RoID4g MCBvciBkYXRhLnVuaXF1ZV9jb25zdHJhaW50fGxlbmd0aCA+IDAgb3IgZGF0 YS5mb3JlaWduX2tleXxsZW5ndGggPiAwIG9yIGRhdGEuY2hlY2tfY29uc3Ry YWludHxsZW5ndGggPiAwIG9yIGRhdGEuZXhjbHVkZV9jb25zdHJhaW50fGxl bmd0aCA+IDAgJX0KKygKK3slIGVuZGlmICV9Cit7JSBpZiBkYXRhLmxpa2Vf cmVsYXRpb24gJX0KKyAgICBMSUtFIHt7IGRhdGEubGlrZV9yZWxhdGlvbiB9 fXslIGlmIGRhdGEubGlrZV9kZWZhdWx0X3ZhbHVlICV9CisKKyAgICAgICAg SU5DTFVESU5HIERFRkFVTFRTeyUgZW5kaWYgJX17JSBpZiBkYXRhLmxpa2Vf Y29uc3RyYWludHMgJX0KKworICAgICAgICBJTkNMVURJTkcgQ09OU1RSQUlO VFN7JSBlbmRpZiAlfXslIGlmIGRhdGEubGlrZV9pbmRleGVzICV9CisKKyAg ICAgICAgSU5DTFVESU5HIElOREVYRVN7JSBlbmRpZiAlfXslIGlmIGRhdGEu bGlrZV9zdG9yYWdlICV9CisKKyAgICAgICAgSU5DTFVESU5HIFNUT1JBR0V7 JSBlbmRpZiAlfXslIGlmIGRhdGEubGlrZV9jb21tZW50cyAlfQorCisgICAg ICAgIElOQ0xVRElORyBDT01NRU5UU3slIGVuZGlmICV9eyUgaWYgZGF0YS5j b2x1bW5zfGxlbmd0aCA+IDAgJX0sCit7JSBlbmRpZiAlfQorCit7JSBlbmRp ZiAlfQoreyMjIyBBZGQgY29sdW1ucyAjIyN9Cit7JSBpZiBkYXRhLmNvbHVt bnMgYW5kIGRhdGEuY29sdW1uc3xsZW5ndGggPiAwICV9Cit7JSBmb3IgYyBp biBkYXRhLmNvbHVtbnMgJX0KK3slIGlmIGMubmFtZSBhbmQgYy5jbHR5cGUg JX0KK3slIGlmIGxvb3AuaW5kZXggIT0gMSAlfSwKK3slIGVuZGlmICV9Cisg ICAge3tjb25ufHF0SWRlbnQoYy5uYW1lKX19IHt7Yy5jbHR5cGV9fXslIGlm IGMuYXR0bGVuICV9Cisoe3tjLmF0dGxlbn19eyUgaWYgYy5hdHRwcmVjaXNp b24lfSwge3tjLmF0dHByZWNpc2lvbn19eyUgZW5kaWYgJX0peyUgZW5kaWYg JX17JSBpZiBjLmhhc1NxckJyYWNrZXQgJX0KK1tdeyUgZW5kaWYgJX17JSBp ZiBjLmNvbGxzcGNuYW1lICV9IENPTExBVEUge3tjLmNvbGxzcGNuYW1lfX17 JSBlbmRpZiAlfXslIGlmIGMuYXR0bm90bnVsbCAlfSBOT1QgTlVMTHslIGVu ZGlmICV9eyUgaWYgYy5kZWZ2YWwgJX0gREVGQVVMVCB7e2MuZGVmdmFsfX17 JSBlbmRpZiAlfQoreyUgZW5kaWYgJX0KK3slIGVuZGZvciAlfQoreyUgZW5k aWYgJX0KK3sjIE1hY3JvIHRvIHJlbmRlciBmb3IgY29uc3RyYWludHMgI30K K3slIGlmIGRhdGEucHJpbWFyeV9rZXl8bGVuZ3RoID4gMCAlfXslIGlmIGRh dGEuY29sdW1uc3xsZW5ndGggPiAwICV9LHslIGVuZGlmICV9Cit7e0NPTlNU UkFJTlRTLlBSSU1BUllfS0VZKGNvbm4sIGRhdGEucHJpbWFyeV9rZXlbMF0p fX17JSBlbmRpZiAlfXslIGlmIGRhdGEudW5pcXVlX2NvbnN0cmFpbnR8bGVu Z3RoID4gMCAlfXslIGlmIGRhdGEuY29sdW1uc3xsZW5ndGggPiAwIG9yIGRh dGEucHJpbWFyeV9rZXl8bGVuZ3RoID4gMCAlfSx7JSBlbmRpZiAlfQore3tD T05TVFJBSU5UUy5VTklRVUUoY29ubiwgZGF0YS51bmlxdWVfY29uc3RyYWlu dCl9fXslIGVuZGlmICV9eyUgaWYgZGF0YS5mb3JlaWduX2tleXxsZW5ndGgg PiAwICV9eyUgaWYgZGF0YS5jb2x1bW5zfGxlbmd0aCA+IDAgb3IgZGF0YS5w cmltYXJ5X2tleXxsZW5ndGggPiAwIG9yIGRhdGEudW5pcXVlX2NvbnN0cmFp bnR8bGVuZ3RoID4gMCAlfSx7JSBlbmRpZiAlfQore3tDT05TVFJBSU5UUy5G T1JFSUdOX0tFWShjb25uLCBkYXRhLmZvcmVpZ25fa2V5KX19eyUgZW5kaWYg JX17JSBpZiBkYXRhLmNoZWNrX2NvbnN0cmFpbnR8bGVuZ3RoID4gMCAlfXsl IGlmIGRhdGEuY29sdW1uc3xsZW5ndGggPiAwIG9yIGRhdGEucHJpbWFyeV9r ZXl8bGVuZ3RoID4gMCBvciBkYXRhLnVuaXF1ZV9jb25zdHJhaW50fGxlbmd0 aCA+IDAgb3IgZGF0YS5mb3JlaWduX2tleXxsZW5ndGggPiAwICV9LHslIGVu ZGlmICV9Cit7e0NPTlNUUkFJTlRTLkNIRUNLKGNvbm4sIGRhdGEuY2hlY2tf Y29uc3RyYWludCl9fXslIGVuZGlmICV9eyUgaWYgZGF0YS5leGNsdWRlX2Nv bnN0cmFpbnR8bGVuZ3RoID4gMCAlfXslIGlmIGRhdGEuY29sdW1uc3xsZW5n dGggPiAwIG9yIGRhdGEucHJpbWFyeV9rZXl8bGVuZ3RoID4gMCBvciBkYXRh LnVuaXF1ZV9jb25zdHJhaW50fGxlbmd0aCA+IDAgb3IgZGF0YS5mb3JlaWdu X2tleXxsZW5ndGggPiAwIG9yIGRhdGEuY2hlY2tfY29uc3RyYWludHxsZW5n dGggPiAwICV9LHslIGVuZGlmICV9Cit7e0NPTlNUUkFJTlRTLkVYQ0xVREUo Y29ubiwgZGF0YS5leGNsdWRlX2NvbnN0cmFpbnQpfX17JSBlbmRpZiAlfQor eyUgaWYgZGF0YS5saWtlX3JlbGF0aW9uIG9yIGRhdGEuY29sbF9pbmhlcml0 cyBvciBkYXRhLmNvbHVtbnN8bGVuZ3RoID4gMCBvciBkYXRhLnByaW1hcnlf a2V5fGxlbmd0aCA+IDAgb3IgZGF0YS51bmlxdWVfY29uc3RyYWludHxsZW5n dGggPiAwIG9yIGRhdGEuZm9yZWlnbl9rZXl8bGVuZ3RoID4gMCBvciBkYXRh LmNoZWNrX2NvbnN0cmFpbnR8bGVuZ3RoID4gMCBvciBkYXRhLmV4Y2x1ZGVf Y29uc3RyYWludHxsZW5ndGggPiAwICV9CisKKykKK3slIGVuZGlmICV9Cit7 IyMjIElmIHdlIGFyZSBpbmhlcml0aW5nIGl0IGZyb20gYW5vdGhlciB0YWJs ZShzKSAjIyN9Cit7JSBpZiBkYXRhLmNvbGxfaW5oZXJpdHMgJX0KKyAgICBJ TkhFUklUUyAoeyUgZm9yIHZhbCBpbiBkYXRhLmNvbGxfaW5oZXJpdHMgJX17 JSBpZiBsb29wLmluZGV4ICE9IDEgJX0sIHslIGVuZGlmICV9e3t2YWx9fXsl IGVuZGZvciAlfSkKK3slIGVuZGlmICV9CitXSVRIICgKKyAgICBPSURTID0g eyUgaWYgZGF0YS5yZWxoYXNvaWRzICV9VFJVRXslIGVsc2UgJX1GQUxTRXsl IGVuZGlmICV9eyUgaWYgZGF0YS5maWxsZmFjdG9yICV9LAorICAgIEZJTExG QUNUT1IgPSB7eyBkYXRhLmZpbGxmYWN0b3IgfX17JSBlbmRpZiAlfXslIGlm IGRhdGEuYXV0b3ZhY3V1bV9jdXN0b20gJX0sCisgICAgYXV0b3ZhY3V1bV9l bmFibGVkID0geyUgaWYgZGF0YS5hdXRvdmFjdXVtX2VuYWJsZWQgJX1UUlVF eyUgZWxzZSAlfUZBTFNFeyUgZW5kaWYgJX17JSBlbmRpZiAlfXslIGlmIGRh dGEudG9hc3RfYXV0b3ZhY3V1bSAlfSwKKyAgICB0b2FzdC5hdXRvdmFjdXVt X2VuYWJsZWQgPSB7JSBpZiBkYXRhLnRvYXN0X2F1dG92YWN1dW1fZW5hYmxl ZCAlfVRSVUV7JSBlbHNlICV9RkFMU0V7JSBlbmRpZiAlfQoreyUgZW5kaWYg JX17JSBpZiBkYXRhLmF1dG92YWN1dW1fZW5hYmxlZCBhbmQgZGF0YS52YWN1 dW1fdGFibGV8bGVuZ3RoID4gMCAlfQoreyUgZm9yIG9wdCBpbiBkYXRhLnZh Y3V1bV90YWJsZSAlfXslIGlmIG9wdC5uYW1lIGFuZCBvcHQudmFsdWUgJX0K KywKKyAgICB7e29wdC5uYW1lfX0gPSB7e29wdC52YWx1ZX19eyUgZW5kaWYg JX0KK3slIGVuZGZvciAlfXslIGVuZGlmICV9eyUgaWYgZGF0YS50b2FzdF9h dXRvdmFjdXVtX2VuYWJsZWQgYW5kIGRhdGEudmFjdXVtX3RvYXN0fGxlbmd0 aCA+IDAgJX0KK3slIGZvciBvcHQgaW4gZGF0YS52YWN1dW1fdG9hc3QgJX17 JSBpZiBvcHQubmFtZSBhbmQgb3B0LnZhbHVlICV9CissCisgICAgdG9hc3Qu e3tvcHQubmFtZX19ID0ge3tvcHQudmFsdWV9fXslIGVuZGlmICV9Cit7JSBl bmRmb3IgJX17JSBlbmRpZiAlfQorCispCit7IyMjIFNRTCBmb3IgVGFibGVz cGFjZSAjIyN9Cit7JSBpZiBkYXRhLnNwY25hbWUgJX0KK1RBQkxFU1BBQ0Ug e3sgY29ubnxxdElkZW50KGRhdGEuc3BjbmFtZSkgfX07Cit7JSBlbmRpZiAl fQoreyMjIyBBbHRlciBTUUwgZm9yIE93bmVyICMjI30KK3slIGlmIGRhdGEu cmVsb3duZXIgJX0KKworQUxURVIgVEFCTEUge3tjb25ufHF0SWRlbnQoZGF0 YS5zY2hlbWEsIGRhdGEubmFtZSl9fQorICAgIE9XTkVSIHRvIHt7Y29ubnxx dElkZW50KGRhdGEucmVsb3duZXIpfX07Cit7JSBlbmRpZiAlfQoreyMjIyBT ZWN1cml0eSBMYWJlbHMgb24gVGFibGUgIyMjfQoreyUgaWYgZGF0YS5zZWNs YWJlbHMgYW5kIGRhdGEuc2VjbGFiZWxzfGxlbmd0aCA+IDAgJX0KKworeyUg Zm9yIHIgaW4gZGF0YS5zZWNsYWJlbHMgJX0KK3t7IFNFQ0xBQkxFLlNFVChj b25uLCAnVEFCTEUnLCBkYXRhLm5hbWUsIHIucHJvdmlkZXIsIHIubGFiZWws IGRhdGEuc2NoZW1hKSB9fQoreyUgZW5kZm9yICV9Cit7JSBlbmRpZiAlfQor eyMjIyAgQUNMIG9uIFRhYmxlICMjI30KK3slIGlmIGRhdGEucmVsYWNsICV9 CisKK3slIGZvciBwcml2IGluIGRhdGEucmVsYWNsICV9Cit7eyBQUklWSUxF R0UuU0VUKGNvbm4sICdUQUJMRScsIHByaXYuZ3JhbnRlZSwgZGF0YS5uYW1l LCBwcml2LndpdGhvdXRfZ3JhbnQsIHByaXYud2l0aF9ncmFudCwgZGF0YS5z Y2hlbWEpIH19Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmICV9Cit7IyMjIFNR TCBmb3IgQ09NTUVOVCAjIyN9Cit7JSBpZiBkYXRhLmRlc2NyaXB0aW9uICV9 CitDT01NRU5UIE9OIFRBQkxFIHt7Y29ubnxxdElkZW50KGRhdGEuc2NoZW1h LCBkYXRhLm5hbWUpfX0KKyAgICBJUyB7e2RhdGEuZGVzY3JpcHRpb258cXRM aXRlcmFsfX07Cit7JSBlbmRpZiAlfQoreyM9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09I30KK3sjPT09PT09IE1BSU4gVEFC TEUgVEVNUExBVEUgRU5EUyBIRVJFID09PT09PSN9Cit7Iz09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0jfQoreyM9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09I30KK3sjICBD T0xVTU4gU1BFQ0lGSUMgVEVNUExBVEVTIFNUQVJUUyBIRVJFICAgICN9Cit7 Iz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0j fQoreyUgaWYgZGF0YS5jb2x1bW5zIGFuZCBkYXRhLmNvbHVtbnN8bGVuZ3Ro ID4gMCAlfQoreyUgZm9yIGMgaW4gZGF0YS5jb2x1bW5zICV9Cit7JSBpZiBj LmRlc2NyaXB0aW9uICV9CisKK0NPTU1FTlQgT04gQ09MVU1OIHt7Y29ubnxx dElkZW50KGRhdGEuc2NoZW1hLCBkYXRhLm5hbWUsIGMubmFtZSl9fQorICAg IElTIHt7Yy5kZXNjcmlwdGlvbnxxdExpdGVyYWx9fTsKK3slIGVuZGlmICV9 Cit7IyMjICBBZGQgdmFyaWFibGVzIHRvIGNvbHVtbiAjIyN9Cit7JSBpZiBj LmF0dG9wdGlvbnMgYW5kIGMuYXR0b3B0aW9uc3xsZW5ndGggPiAwICV9CisK K0FMVEVSIFRBQkxFIHt7Y29ubnxxdElkZW50KGRhdGEuc2NoZW1hLCBkYXRh Lm5hbWUpfX0KKyAgICB7eyBWQVJJQUJMRS5TRVQoY29ubiwgJ0NPTFVNTics IGMubmFtZSwgYy5hdHRvcHRpb25zKSB9fQoreyUgZW5kaWYgJX0KK3sjIyMg IEFDTCAjIyN9Cit7JSBpZiBjLmF0dGFjbCBhbmQgYy5hdHRhY2x8bGVuZ3Ro ID4gMCAlfQorCit7JSBmb3IgcHJpdiBpbiBjLmF0dGFjbCAlfQorICAgIHt7 IENPTFVNTl9QUklWSUxFR0UuQVBQTFkoY29ubiwgZGF0YS5zY2hlbWEsIGRh dGEubmFtZSwgYy5uYW1lLCBwcml2LmdyYW50ZWUsIHByaXYud2l0aG91dF9n cmFudCwgcHJpdi53aXRoX2dyYW50KSB9fQoreyUgZW5kZm9yICV9Cit7JSBl bmRpZiAlfQoreyMjIyAgU2VjdXJpdHkgTGFibGVzICMjI30KK3slIGlmIGMu c2VjbGFiZWxzIGFuZCBjLnNlY2xhYmVsc3xsZW5ndGggPiAwICV9CisKK3sl IGZvciByIGluIGMuc2VjbGFiZWxzICV9Cit7eyBDT0xVTU5fU0VDTEFCTEUu QVBQTFkoY29ubiwgJ0NPTFVNTicsZGF0YS5zY2hlbWEsIGRhdGEubmFtZSwg Yy5uYW1lLCByLnByb3ZpZGVyLCByLmxhYmVsKSB9fQoreyUgZW5kZm9yICV9 Cit7JSBlbmRpZiAlfQoreyUgZW5kZm9yICV9Cit7JSBlbmRpZiAlfQoreyM9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09I30K K3sjICAgQ09MVU1OIFNQRUNJRklDIFRFTVBMQVRFUyBFTkRTIEhFUkUgICAg ICN9Cit7Iz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0jfQoreyM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PSN9Cit7IyAgIENPTlNUUkFJTlRTIFNQRUNJRklDIFRFTVBMQVRFUyAg ICAgI30KK3sjPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0jfQore3tDT05TVFJBSU5UUy5DT05TVFJBSU5UX0NPTU1FTlRTKGNvbm4s IGRhdGEuc2NoZW1hLCBkYXRhLm5hbWUsIGRhdGEucHJpbWFyeV9rZXkpfX0K K3t7Q09OU1RSQUlOVFMuQ09OU1RSQUlOVF9DT01NRU5UUyhjb25uLCBkYXRh LnNjaGVtYSwgZGF0YS5uYW1lLCBkYXRhLnVuaXF1ZV9jb25zdHJhaW50KX19 Cit7e0NPTlNUUkFJTlRTLkNPTlNUUkFJTlRfQ09NTUVOVFMoY29ubiwgZGF0 YS5zY2hlbWEsIGRhdGEubmFtZSwgZGF0YS5mb3JlaWduX2tleSl9fQore3tD T05TVFJBSU5UUy5DT05TVFJBSU5UX0NPTU1FTlRTKGNvbm4sIGRhdGEuc2No ZW1hLCBkYXRhLm5hbWUsIGRhdGEuY2hlY2tfY29uc3RyYWludCl9fQore3tD T05TVFJBSU5UUy5DT05TVFJBSU5UX0NPTU1FTlRTKGNvbm4sIGRhdGEuc2No ZW1hLCBkYXRhLm5hbWUsIGRhdGEuZXhjbHVkZV9jb25zdHJhaW50KX19Clwg Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy90YWJsZS9zcWwvOS4xX3BsdXMv ZGVsZXRlLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMv dGFibGUvc3FsLzkuMV9wbHVzL2RlbGV0ZS5zcWwKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uMDFkMDMxNAotLS0gL2Rldi9udWxsCisr KyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvdGFibGUvc3Fs LzkuMV9wbHVzL2RlbGV0ZS5zcWwKQEAgLTAsMCArMSBAQAorRFJPUCBUQUJM RSB7e2Nvbm58cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0YS5uYW1lKX19eyUg aWYgY2FzY2FkZSAlfSBDQVNDQURFeyUgZW5kaWYgJX07ClwgTm8gbmV3bGlu ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv dGFibGVzL3RlbXBsYXRlcy90YWJsZS9zcWwvOS4xX3BsdXMvZGVwZW5kLnNx bCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvdGFibGUvc3Fs LzkuMV9wbHVzL2RlcGVuZC5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uZjVmMzllNwotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvdGFibGUvc3FsLzkuMV9wbHVz L2RlcGVuZC5zcWwKQEAgLTAsMCArMSw5IEBACitTRUxFQ1QKKyAgICByZWYu cmVsbmFtZSBBUyByZWZuYW1lLCBkMi5yZWZjbGFzc2lkLCBkZXAuZGVwdHlw ZSBBUyBkZXB0eXBlCitGUk9NIHBnX2RlcGVuZCBkZXAKKyAgICBMRUZUIEpP SU4gcGdfZGVwZW5kIGQyIE9OIGRlcC5vYmppZD1kMi5vYmppZCBBTkQgZGVw LnJlZm9iamlkICE9IGQyLnJlZm9iamlkCisgICAgTEVGVCBKT0lOIHBnX2Ns YXNzIHJlZiBPTiByZWYub2lkPWQyLnJlZm9iamlkCisgICAgTEVGVCBKT0lO IHBnX2F0dHJpYnV0ZSBhdHQgT04gZDIucmVmY2xhc3NpZD1hdHQuYXR0cmVs aWQgQU5EIGQyLnJlZm9ianN1YmlkPWF0dC5hdHRudW0KKyAgICB7eyB3aGVy ZSB9fSBBTkQKKyAgICBkZXAuY2xhc3NpZD0oU0VMRUNUIG9pZCBGUk9NIHBn X2NsYXNzIFdIRVJFIHJlbG5hbWU9J3BnX2F0dHJkZWYnKSBBTkQKKyAgICBk ZXAucmVmb2JqaWQgTk9UIElOIChTRUxFQ1QgZDMucmVmb2JqaWQgRlJPTSBw Z19kZXBlbmQgZDMgV0hFUkUgZDMub2JqaWQ9ZDIucmVmb2JqaWQpClwgTm8g bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvdGFibGVzL3RlbXBsYXRlcy90YWJsZS9zcWwvOS4xX3BsdXMvZW5h YmxlX2Rpc2FibGVfdHJpZ2dlci5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJs ZXMvdGVtcGxhdGVzL3RhYmxlL3NxbC85LjFfcGx1cy9lbmFibGVfZGlzYWJs ZV90cmlnZ2VyLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwLi5hNGFiMTU0Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvdGFibGVzL3RlbXBsYXRlcy90YWJsZS9zcWwvOS4xX3BsdXMvZW5hYmxl X2Rpc2FibGVfdHJpZ2dlci5zcWwKQEAgLTAsMCArMSwyIEBACitBTFRFUiBU QUJMRSB7eyBjb25ufHF0SWRlbnQoZGF0YS5zY2hlbWEsIGRhdGEubmFtZSkg fX0KKyAgICB7JSBpZiBpc19lbmFibGVfdHJpZ2dlciA9PSBUcnVlICV9RU5B QkxFeyUgZWxzZSAlfURJU0FCTEV7JSBlbmRpZiAlfSBUUklHR0VSIEFMTDsK XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3RhYmxlL3NxbC85LjFfcGx1 cy9nZXRfY29sdW1uc19mb3JfdGFibGUuc3FsIGIvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv dGFibGVzL3RlbXBsYXRlcy90YWJsZS9zcWwvOS4xX3BsdXMvZ2V0X2NvbHVt bnNfZm9yX3RhYmxlLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi4zZDZiYmI3Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvdGFibGVzL3RlbXBsYXRlcy90YWJsZS9zcWwvOS4xX3BsdXMvZ2V0 X2NvbHVtbnNfZm9yX3RhYmxlLnNxbApAQCAtMCwwICsxLDE2IEBACitTRUxF Q1QKKyAgICBhLmF0dG5hbWUgQVMgbmFtZSwgZm9ybWF0X3R5cGUoYS5hdHR0 eXBpZCwgTlVMTCkgQVMgY2x0eXBlLAorICAgIHF1b3RlX2lkZW50KG4ubnNw bmFtZSl8fCcuJ3x8cXVvdGVfaWRlbnQoYy5yZWxuYW1lKSBhcyBpbmhlcml0 ZWRmcm9tLAorICAgIGMub2lkIGFzIGluaGVyaXRlZGlkCitGUk9NCisgICAg cGdfY2xhc3MgYworSk9JTgorICAgIHBnX25hbWVzcGFjZSBuIE9OIGMucmVs bmFtZXNwYWNlPW4ub2lkCitKT0lOCisgICAgcGdfYXR0cmlidXRlIGEgT04g YS5hdHRyZWxpZCA9IGMub2lkIEFORCBOT1QgYS5hdHRpc2Ryb3BwZWQgQU5E IGEuYXR0bnVtID4gMAorV0hFUkUKK3slIGlmIHRpZCAlfQorICAgIGMub2lk ID0ge3t0aWR9fTo6T0lECit7JSBlbHNlICV9CisgICAgYy5yZWxuYW1lID0g e3t0bmFtZXxxdExpdGVyYWx9fQoreyUgZW5kaWYgJX0KXCBObyBuZXdsaW5l IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90 YWJsZXMvdGVtcGxhdGVzL3RhYmxlL3NxbC85LjFfcGx1cy9nZXRfaW5oZXJp dHMuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy90YWJs ZS9zcWwvOS4xX3BsdXMvZ2V0X2luaGVyaXRzLnNxbApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi41MGY5YTFkCi0tLSAvZGV2L251bGwK KysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy90YWJsZS9z cWwvOS4xX3BsdXMvZ2V0X2luaGVyaXRzLnNxbApAQCAtMCwwICsxLDEzIEBA CitTRUxFQ1QgYy5vaWQsIGMucmVsbmFtZSAsIG5zcG5hbWUsCitDQVNFIFdI RU4gKG5zcG5hbWUgTk9UIExJS0UgRSdwZ1xfJScgQU5EIG5zcG5hbWUgPD4g J3B1YmxpYycpIFRIRU4KKyBxdW90ZV9pZGVudChuc3BuYW1lKXx8Jy4nfHxx dW90ZV9pZGVudChjLnJlbG5hbWUpCitFTFNFIHF1b3RlX2lkZW50KGMucmVs bmFtZSkKK0VORCBBUyBpbmhlcml0cworRlJPTSBwZ19jbGFzcyBjCitKT0lO IHBnX25hbWVzcGFjZSBuCitPTiBuLm9pZD1jLnJlbG5hbWVzcGFjZQorV0hF UkUgcmVsa2luZD0ncicKK3slIGlmIG5vdCBzaG93X3N5c3RlbV9vYmplY3Rz ICV9CitBTkQgKG4ubnNwbmFtZSBOT1QgTElLRSBFJ3BnXF8lJyBBTkQgbi5u c3BuYW1lIE5PVCBpbiAoJ2luZm9ybWF0aW9uX3NjaGVtYScpKQoreyUgZW5k aWYgJX0KK09SREVSIEJZIHJlbG5hbWVzcGFjZSwgYy5yZWxuYW1lClwgTm8g bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvdGFibGVzL3RlbXBsYXRlcy90YWJsZS9zcWwvOS4xX3BsdXMvZ2V0 X29mdHlwZS5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVz L3RhYmxlL3NxbC85LjFfcGx1cy9nZXRfb2Z0eXBlLnNxbApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZWQ0MmYyCi0tLSAvZGV2L251 bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy90YWJs ZS9zcWwvOS4xX3BsdXMvZ2V0X29mdHlwZS5zcWwKQEAgLTAsMCArMSw2IEBA CitTRUxFQ1QgdC5vaWQsCisgIHF1b3RlX2lkZW50KG4ubnNwbmFtZSl8fCcu J3x8cXVvdGVfaWRlbnQodC50eXBuYW1lKSBBUyB0eXBuYW1lCisgIEZST00g cGdfdHlwZSB0LCBwZ19uYW1lc3BhY2UgbgorV0hFUkUgdC50eXB0eXBlPSdj JyBBTkQgdC50eXBuYW1lc3BhY2U9bi5vaWQKKyAgQU5EIE5PVCAobi5uc3Bu YW1lIGxpa2UgJ3BnXyUnIE9SIG4ubnNwbmFtZT0naW5mb3JtYXRpb25fc2No ZW1hJykKK09SREVSIEJZIHR5cG5hbWU7ClwgTm8gbmV3bGluZSBhdCBlbmQg b2YgZmlsZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3Rl bXBsYXRlcy90YWJsZS9zcWwvOS4xX3BsdXMvZ2V0X29pZC5zcWwgYi93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3RhYmxlL3NxbC85LjFfcGx1 cy9nZXRfb2lkLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwLi5lOWRjNzcyCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvdGFibGVzL3RlbXBsYXRlcy90YWJsZS9zcWwvOS4xX3BsdXMvZ2V0X29p ZC5zcWwKQEAgLTAsMCArMSw1IEBACitTRUxFQ1QgcmVsLm9pZCBhcyB0aWQK K0ZST00gcGdfY2xhc3MgcmVsCitXSEVSRSByZWwucmVsa2luZCBJTiAoJ3In LCdzJywndCcpCitBTkQgcmVsLnJlbG5hbWVzcGFjZSA9IHt7IHNjaWQgfX06 Om9pZAorQU5EIHJlbC5yZWxuYW1lID0ge3tkYXRhLm5hbWV8cXRMaXRlcmFs fX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3RhYmxlL3NxbC85LjFf cGx1cy9nZXRfcmVsYXRpb25zLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxl cy90ZW1wbGF0ZXMvdGFibGUvc3FsLzkuMV9wbHVzL2dldF9yZWxhdGlvbnMu c3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQzMWVl ODgKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMv dGVtcGxhdGVzL3RhYmxlL3NxbC85LjFfcGx1cy9nZXRfcmVsYXRpb25zLnNx bApAQCAtMCwwICsxLDYgQEAKK1NFTEVDVCBjLm9pZCwgcXVvdGVfaWRlbnQo bi5uc3BuYW1lKXx8Jy4nfHxxdW90ZV9pZGVudChjLnJlbG5hbWUpIEFTIGxp a2VfcmVsYXRpb24KK0ZST00gcGdfY2xhc3MgYywgcGdfbmFtZXNwYWNlIG4K K1dIRVJFIGMucmVsbmFtZXNwYWNlPW4ub2lkCitBTkQKK2MucmVsa2luZCBJ TiAoJ3InLCAndicsICdmJykKK09SREVSIEJZIDE7ClwgTm8gbmV3bGluZSBh dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFi bGVzL3RlbXBsYXRlcy90YWJsZS9zcWwvOS4xX3BsdXMvZ2V0X3RhYmxlc19m b3JfY29uc3RyYWludHMuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3Rl bXBsYXRlcy90YWJsZS9zcWwvOS4xX3BsdXMvZ2V0X3RhYmxlc19mb3JfY29u c3RyYWludHMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLjEzNjI0NjMKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy90YWJsZXMvdGVtcGxhdGVzL3RhYmxlL3NxbC85LjFfcGx1cy9nZXRfdGFi bGVzX2Zvcl9jb25zdHJhaW50cy5zcWwKQEAgLTAsMCArMSw4IEBACitTRUxF Q1QgY2wub2lkIGFzIHZhbHVlLCBxdW90ZV9pZGVudChuc3BuYW1lKXx8Jy4n fHxxdW90ZV9pZGVudChyZWxuYW1lKSBBUyBsYWJlbAorRlJPTSBwZ19uYW1l c3BhY2UgbnNwLCBwZ19jbGFzcyBjbAorV0hFUkUgcmVsbmFtZXNwYWNlPW5z cC5vaWQgQU5EIHJlbGtpbmQ9J3InCisgICBBTkQgbnNwLm5zcG5hbWUgTk9U IExJS0UgRSdwZ1xfdGVtcFxfJScKKyAgIHslIGlmIG5vdCBzaG93X3N5c29i aiAlfQorICAgQU5EIChuc3AubnNwbmFtZSBOT1QgTElLRSBFJ3BnXF8lJyBB TkQgbnNwLm5zcG5hbWUgTk9UIGluICgnaW5mb3JtYXRpb25fc2NoZW1hJykp CisgICB7JSBlbmRpZiAlfQorT1JERVIgQlkgbnNwbmFtZSwgcmVsbmFtZQpc IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvdGFibGUvc3FsLzkuMV9wbHVz L2dldF90eXBlc193aGVyZV9jb25kaXRpb24uc3FsIGIvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvdGFibGVzL3RlbXBsYXRlcy90YWJsZS9zcWwvOS4xX3BsdXMvZ2V0X3R5 cGVzX3doZXJlX2NvbmRpdGlvbi5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMC4uZmFkZmM5OQotLS0gL2Rldi9udWxsCisrKyBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvdGFibGUvc3FsLzkuMV9w bHVzL2dldF90eXBlc193aGVyZV9jb25kaXRpb24uc3FsCkBAIC0wLDAgKzEs MTAgQEAKK3sjIyMgQWRkaXRpb25hbCB3aGVyZSBjb25kaXRpb24gZm9yIGdl dF90eXBlcyByb3V0ZSBmb3IgY29sdW1uIG5vZGUgIyMjfQordHlwaXNkZWZp bmVkIEFORCB0eXB0eXBlIElOICgnYicsICdjJywgJ2QnLCAnZScsICdyJykK K0FORCBOT1QgRVhJU1RTIChTRUxFQ1QgMSBGUk9NIHBnX2NsYXNzIFdIRVJF IHJlbG5hbWVzcGFjZT10eXBuYW1lc3BhY2UKK0FORCByZWxuYW1lID0gdHlw bmFtZSBBTkQgcmVsa2luZCAhPSAnYycpIEFORAorKHR5cG5hbWUgTk9UIExJ S0UgJ18lJyBPUiBOT1QgRVhJU1RTIChTRUxFQ1QgMSBGUk9NIHBnX2NsYXNz IFdIRVJFCityZWxuYW1lc3BhY2U9dHlwbmFtZXNwYWNlIEFORCByZWxuYW1l ID0gc3Vic3RyaW5nKHR5cG5hbWUgRlJPTSAyKTo6bmFtZQorQU5EIHJlbGtp bmQgIT0gJ2MnKSkKK3slIGlmIG5vdCBzaG93X3N5c3RlbV9vYmplY3RzICV9 CitBTkQgbnNwLm5zcG5hbWUgIT0gJ2luZm9ybWF0aW9uX3NjaGVtYScKK3sl IGVuZGlmICV9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t Z2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy90YWJsZS9z cWwvOS4xX3BsdXMvbm9kZXMuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVz L3RlbXBsYXRlcy90YWJsZS9zcWwvOS4xX3BsdXMvbm9kZXMuc3FsCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQzZjE0Y2IKLS0tIC9k ZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVz L3RhYmxlL3NxbC85LjFfcGx1cy9ub2Rlcy5zcWwKQEAgLTAsMCArMSw2IEBA CitTRUxFQ1QgcmVsLm9pZCwgcmVsLnJlbG5hbWUgQVMgbmFtZSwKKyAgICAo U0VMRUNUIGNvdW50KCopIEZST00gcGdfdHJpZ2dlciBXSEVSRSB0Z3JlbGlk PXJlbC5vaWQgQU5EIHRnaXNpbnRlcm5hbCA9IEZBTFNFKSBBUyB0cmlnZ2Vy Y291bnQsCisgICAgKFNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3RyaWdnZXIg V0hFUkUgdGdyZWxpZD1yZWwub2lkIEFORCB0Z2lzaW50ZXJuYWwgPSBGQUxT RSBBTkQgdGdlbmFibGVkID0gJ08nKSBBUyBoYXNfZW5hYmxlX3RyaWdnZXJz CitGUk9NIHBnX2NsYXNzIHJlbAorICAgIFdIRVJFIHJlbC5yZWxraW5kIElO ICgncicsJ3MnLCd0JykgQU5EIHJlbC5yZWxuYW1lc3BhY2UgPSB7eyBzY2lk IH19OjpvaWQKKyAgICBPUkRFUiBCWSByZWwucmVsbmFtZTsKXCBObyBuZXds aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy90YWJsZXMvdGVtcGxhdGVzL3RhYmxlL3NxbC85LjFfcGx1cy9wcm9wZXJ0 aWVzLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvdGFi bGUvc3FsLzkuMV9wbHVzL3Byb3BlcnRpZXMuc3FsCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk5NzI3YzkKLS0tIC9kZXYvbnVsbAor KysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3RhYmxlL3Nx bC85LjFfcGx1cy9wcm9wZXJ0aWVzLnNxbApAQCAtMCwwICsxLDY1IEBACitT RUxFQ1QgcmVsLm9pZCwgcmVsLnJlbG5hbWUgQVMgbmFtZSwgcmVsLnJlbHRh Ymxlc3BhY2UgQVMgc3Bjb2lkLHJlbC5yZWxhY2wgQVMgcmVsYWNsX3N0ciwK KyAgKENBU0UgV0hFTiBsZW5ndGgoc3BjLnNwY25hbWUpID4gMCBUSEVOIHNw Yy5zcGNuYW1lIEVMU0UgJ3BnX2RlZmF1bHQnIEVORCkgYXMgc3BjbmFtZSwK KyAgKHNlbGVjdCBuc3BuYW1lIEZST00gcGdfbmFtZXNwYWNlIFdIRVJFIG9p ZCA9IHt7c2NpZH19OjpvaWQgKSBhcyBzY2hlbWEsCisgIHBnX2dldF91c2Vy YnlpZChyZWwucmVsb3duZXIpIEFTIHJlbG93bmVyLCByZWwucmVsaGFzb2lk cywKKyAgcmVsLnJlbGhhc3N1YmNsYXNzLCByZWwucmVsdHVwbGVzLCBkZXMu ZGVzY3JpcHRpb24sIGNvbi5jb25uYW1lLCBjb24uY29ua2V5LAorCUVYSVNU UyhzZWxlY3QgMSBGUk9NIHBnX3RyaWdnZXIKKwkJCUpPSU4gcGdfcHJvYyBw dCBPTiBwdC5vaWQ9dGdmb2lkIEFORCBwdC5wcm9uYW1lPSdsb2d0cmlnZ2Vy JworCQkJSk9JTiBwZ19wcm9jIHBjIE9OIHBjLnByb25hbWVzcGFjZT1wdC5w cm9uYW1lc3BhY2UgQU5EIHBjLnByb25hbWU9J3Nsb255dmVyc2lvbicKKwkJ CVdIRVJFIHRncmVsaWQ9cmVsLm9pZCkgQVMgaXNyZXBsLAorCShTRUxFQ1Qg Y291bnQoKikgRlJPTSBwZ190cmlnZ2VyIFdIRVJFIHRncmVsaWQ9cmVsLm9p ZCBBTkQgdGdpc2ludGVybmFsID0gRkFMU0UpIEFTIHRyaWdnZXJjb3VudCwK KwkoU0VMRUNUIEFSUkFZKFNFTEVDVCBDQVNFIFdIRU4gKG5zcG5hbWUgTk9U IExJS0UgRSdwZ1xfJScgQU5EIG5zcG5hbWUgPD4gJ3B1YmxpYycpIFRIRU4K KyAgICAgICAgICAgIHF1b3RlX2lkZW50KG5zcG5hbWUpfHwnLid8fHF1b3Rl X2lkZW50KGMucmVsbmFtZSkKKyAgICAgICAgICAgIEVMU0UgcXVvdGVfaWRl bnQoYy5yZWxuYW1lKSBFTkQgQVMgaW5oZXJpdGVkX3RhYmxlcworICAgIEZS T00gcGdfaW5oZXJpdHMgaQorICAgIEpPSU4gcGdfY2xhc3MgYyBPTiBjLm9p ZCA9IGkuaW5ocGFyZW50CisgICAgSk9JTiBwZ19uYW1lc3BhY2UgbiBPTiBu Lm9pZD1jLnJlbG5hbWVzcGFjZQorICAgIFdIRVJFIGkuaW5ocmVsaWQgPSBy ZWwub2lkIE9SREVSIEJZIGluaHNlcW5vKSkgQVMgY29sbF9pbmhlcml0cywK KyAgKFNFTEVDVCBjb3VudCgqKQorCQlGUk9NIHBnX2luaGVyaXRzIGkKKyAg ICAgIEpPSU4gcGdfY2xhc3MgYyBPTiBjLm9pZCA9IGkuaW5ocGFyZW50Cisg ICAgICBKT0lOIHBnX25hbWVzcGFjZSBuIE9OIG4ub2lkPWMucmVsbmFtZXNw YWNlCisJCVdIRVJFIGkuaW5ocmVsaWQgPSByZWwub2lkKSBBUyBpbmhlcml0 ZWRfdGFibGVzX2NudCwKKwkoQ0FTRSBXSEVOIHJlbC5yZWxwZXJzaXN0ZW5j ZSA9ICd1JyBUSEVOIHRydWUgRUxTRSBmYWxzZSBFTkQpIEFTIHJlbHBlcnNp c3RlbmNlLAorCXN1YnN0cmluZyhhcnJheV90b19zdHJpbmcocmVsLnJlbG9w dGlvbnMsICcsJykgRlJPTSAnZmlsbGZhY3Rvcj0oWzAtOV0qKScpIEFTIGZp bGxmYWN0b3IsCisJKENBU0UgV0hFTiAoc3Vic3RyaW5nKGFycmF5X3RvX3N0 cmluZyhyZWwucmVsb3B0aW9ucywgJywnKSBGUk9NICdhdXRvdmFjdXVtX2Vu YWJsZWQ9KFthLXp8MC05XSopJykgPSAndHJ1ZScpCisJICBUSEVOIHRydWUg RUxTRSBmYWxzZSBFTkQpIEFTIGF1dG92YWN1dW1fZW5hYmxlZCwKKwlzdWJz dHJpbmcoYXJyYXlfdG9fc3RyaW5nKHJlbC5yZWxvcHRpb25zLCAnLCcpIEZS T00gJ2F1dG92YWN1dW1fdmFjdXVtX3RocmVzaG9sZD0oWzAtOV0qKScpIEFT IGF1dG92YWN1dW1fdmFjdXVtX3RocmVzaG9sZCwKKwlzdWJzdHJpbmcoYXJy YXlfdG9fc3RyaW5nKHJlbC5yZWxvcHRpb25zLCAnLCcpIEZST00gJ2F1dG92 YWN1dW1fdmFjdXVtX3NjYWxlX2ZhY3Rvcj0oWzAtOV0qWy5dWzAtOV0qKScp IEFTIGF1dG92YWN1dW1fdmFjdXVtX3NjYWxlX2ZhY3RvciwKKwlzdWJzdHJp bmcoYXJyYXlfdG9fc3RyaW5nKHJlbC5yZWxvcHRpb25zLCAnLCcpIEZST00g J2F1dG92YWN1dW1fYW5hbHl6ZV90aHJlc2hvbGQ9KFswLTldKiknKSBBUyBh dXRvdmFjdXVtX2FuYWx5emVfdGhyZXNob2xkLAorCXN1YnN0cmluZyhhcnJh eV90b19zdHJpbmcocmVsLnJlbG9wdGlvbnMsICcsJykgRlJPTSAnYXV0b3Zh Y3V1bV9hbmFseXplX3NjYWxlX2ZhY3Rvcj0oWzAtOV0qWy5dWzAtOV0qKScp IEFTIGF1dG92YWN1dW1fYW5hbHl6ZV9zY2FsZV9mYWN0b3IsCisJc3Vic3Ry aW5nKGFycmF5X3RvX3N0cmluZyhyZWwucmVsb3B0aW9ucywgJywnKSBGUk9N ICdhdXRvdmFjdXVtX3ZhY3V1bV9jb3N0X2RlbGF5PShbMC05XSopJykgQVMg YXV0b3ZhY3V1bV92YWN1dW1fY29zdF9kZWxheSwKKwlzdWJzdHJpbmcoYXJy YXlfdG9fc3RyaW5nKHJlbC5yZWxvcHRpb25zLCAnLCcpIEZST00gJ2F1dG92 YWN1dW1fdmFjdXVtX2Nvc3RfbGltaXQ9KFswLTldKiknKSBBUyBhdXRvdmFj dXVtX3ZhY3V1bV9jb3N0X2xpbWl0LAorCXN1YnN0cmluZyhhcnJheV90b19z dHJpbmcocmVsLnJlbG9wdGlvbnMsICcsJykgRlJPTSAnYXV0b3ZhY3V1bV9m cmVlemVfbWluX2FnZT0oWzAtOV0qKScpIEFTIGF1dG92YWN1dW1fZnJlZXpl X21pbl9hZ2UsCisJc3Vic3RyaW5nKGFycmF5X3RvX3N0cmluZyhyZWwucmVs b3B0aW9ucywgJywnKSBGUk9NICdhdXRvdmFjdXVtX2ZyZWV6ZV9tYXhfYWdl PShbMC05XSopJykgQVMgYXV0b3ZhY3V1bV9mcmVlemVfbWF4X2FnZSwKKwlz dWJzdHJpbmcoYXJyYXlfdG9fc3RyaW5nKHJlbC5yZWxvcHRpb25zLCAnLCcp IEZST00gJ2F1dG92YWN1dW1fZnJlZXplX3RhYmxlX2FnZT0oWzAtOV0qKScp IEFTIGF1dG92YWN1dW1fZnJlZXplX3RhYmxlX2FnZSwKKwkoQ0FTRSBXSEVO IChzdWJzdHJpbmcoYXJyYXlfdG9fc3RyaW5nKHRzdC5yZWxvcHRpb25zLCAn LCcpIEZST00gJ2F1dG92YWN1dW1fZW5hYmxlZD0oW2EtenwwLTldKiknKSA9 ICAndHJ1ZScpCisJICBUSEVOIHRydWUgRUxTRSBmYWxzZSBFTkQpIEFTIHRv YXN0X2F1dG92YWN1dW1fZW5hYmxlZCwKKwlzdWJzdHJpbmcoYXJyYXlfdG9f c3RyaW5nKHRzdC5yZWxvcHRpb25zLCAnLCcpIEZST00gJ2F1dG92YWN1dW1f dmFjdXVtX3RocmVzaG9sZD0oWzAtOV0qKScpIEFTIHRvYXN0X2F1dG92YWN1 dW1fdmFjdXVtX3RocmVzaG9sZCwKKwlzdWJzdHJpbmcoYXJyYXlfdG9fc3Ry aW5nKHRzdC5yZWxvcHRpb25zLCAnLCcpIEZST00gJ2F1dG92YWN1dW1fdmFj dXVtX3NjYWxlX2ZhY3Rvcj0oWzAtOV0qWy5dWzAtOV0qKScpIEFTIHRvYXN0 X2F1dG92YWN1dW1fdmFjdXVtX3NjYWxlX2ZhY3RvciwKKwlzdWJzdHJpbmco YXJyYXlfdG9fc3RyaW5nKHRzdC5yZWxvcHRpb25zLCAnLCcpIEZST00gJ2F1 dG92YWN1dW1fYW5hbHl6ZV90aHJlc2hvbGQ9KFswLTldKiknKSBBUyB0b2Fz dF9hdXRvdmFjdXVtX2FuYWx5emVfdGhyZXNob2xkLAorCXN1YnN0cmluZyhh cnJheV90b19zdHJpbmcodHN0LnJlbG9wdGlvbnMsICcsJykgRlJPTSAnYXV0 b3ZhY3V1bV9hbmFseXplX3NjYWxlX2ZhY3Rvcj0oWzAtOV0qWy5dWzAtOV0q KScpIEFTIHRvYXN0X2F1dG92YWN1dW1fYW5hbHl6ZV9zY2FsZV9mYWN0b3Is CisJc3Vic3RyaW5nKGFycmF5X3RvX3N0cmluZyh0c3QucmVsb3B0aW9ucywg JywnKSBGUk9NICdhdXRvdmFjdXVtX3ZhY3V1bV9jb3N0X2RlbGF5PShbMC05 XSopJykgQVMgdG9hc3RfYXV0b3ZhY3V1bV92YWN1dW1fY29zdF9kZWxheSwK KwlzdWJzdHJpbmcoYXJyYXlfdG9fc3RyaW5nKHRzdC5yZWxvcHRpb25zLCAn LCcpIEZST00gJ2F1dG92YWN1dW1fdmFjdXVtX2Nvc3RfbGltaXQ9KFswLTld KiknKSBBUyB0b2FzdF9hdXRvdmFjdXVtX3ZhY3V1bV9jb3N0X2xpbWl0LAor CXN1YnN0cmluZyhhcnJheV90b19zdHJpbmcodHN0LnJlbG9wdGlvbnMsICcs JykgRlJPTSAnYXV0b3ZhY3V1bV9mcmVlemVfbWluX2FnZT0oWzAtOV0qKScp IEFTIHRvYXN0X2F1dG92YWN1dW1fZnJlZXplX21pbl9hZ2UsCisJc3Vic3Ry aW5nKGFycmF5X3RvX3N0cmluZyh0c3QucmVsb3B0aW9ucywgJywnKSBGUk9N ICdhdXRvdmFjdXVtX2ZyZWV6ZV9tYXhfYWdlPShbMC05XSopJykgQVMgdG9h c3RfYXV0b3ZhY3V1bV9mcmVlemVfbWF4X2FnZSwKKwlzdWJzdHJpbmcoYXJy YXlfdG9fc3RyaW5nKHRzdC5yZWxvcHRpb25zLCAnLCcpIEZST00gJ2F1dG92 YWN1dW1fZnJlZXplX3RhYmxlX2FnZT0oWzAtOV0qKScpIEFTIHRvYXN0X2F1 dG92YWN1dW1fZnJlZXplX3RhYmxlX2FnZSwKKwlhcnJheV90b19zdHJpbmco cmVsLnJlbG9wdGlvbnMsICcsJykgQVMgdGFibGVfdmFjdXVtX3NldHRpbmdz X3N0ciwKKwlhcnJheV90b19zdHJpbmcodHN0LnJlbG9wdGlvbnMsICcsJykg QVMgdG9hc3RfdGFibGVfdmFjdXVtX3NldHRpbmdzX3N0ciwKKwlyZWwucmVs b3B0aW9ucyBBUyByZWxvcHRpb25zLCB0c3QucmVsb3B0aW9ucyBBUyB0b2Fz dF9yZWxvcHRpb25zLCByZWwucmVsb2Z0eXBlLCB0eXAudHlwbmFtZSwKKwko Q0FTRSBXSEVOIHJlbC5yZWx0b2FzdHJlbGlkID0gMCBUSEVOIGZhbHNlIEVM U0UgdHJ1ZSBFTkQpIEFTIGhhc3RvYXN0dGFibGUsCisgICAgLS0gQWRkZWQg Zm9yIHBnQWRtaW40CisJKENBU0UgV0hFTiAoc3Vic3RyaW5nKGFycmF5X3Rv X3N0cmluZyhyZWwucmVsb3B0aW9ucywgJywnKSBGUk9NICdhdXRvdmFjdXVt X2VuYWJsZWQ9KFthLXp8MC05XSopJykpOjpib29sZWFuICBUSEVOIHRydWUg RUxTRSBmYWxzZSBFTkQpIEFTIGF1dG92YWN1dW1fY3VzdG9tLAorCShDQVNF IFdIRU4gKHN1YnN0cmluZyhhcnJheV90b19zdHJpbmcodHN0LnJlbG9wdGlv bnMsICcsJykgRlJPTSAnYXV0b3ZhY3V1bV9lbmFibGVkPShbYS16fDAtOV0q KScpKTo6Ym9vbGVhbiAgQU5EIHJlbC5yZWx0b2FzdHJlbGlkICE9IDAgVEhF TiB0cnVlIEVMU0UgZmFsc2UgRU5EKSBBUyB0b2FzdF9hdXRvdmFjdXVtLAor CisJKFNFTEVDVCBhcnJheV9hZ2cocHJvdmlkZXIgfHwgJz0nIHx8IGxhYmVs KSBGUk9NIHBnX3NlY2xhYmVscyBzbDEgV0hFUkUgc2wxLm9iam9pZD1yZWwu b2lkIEFORCBzbDEub2Jqc3ViaWQ9MCkgQVMgc2VjbGFiZWxzLAorCShDQVNF IFdIRU4gcmVsLm9pZCA8PSB7eyBkYXRsYXN0c3lzb2lkfX06Om9pZCBUSEVO IHRydWUgRWxTRSBmYWxzZSBFTkQpIEFTIGlzX3N5c190YWJsZQorRlJPTSBw Z19jbGFzcyByZWwKKyAgTEVGVCBPVVRFUiBKT0lOIHBnX3RhYmxlc3BhY2Ug c3BjIG9uIHNwYy5vaWQ9cmVsLnJlbHRhYmxlc3BhY2UKKyAgTEVGVCBPVVRF UiBKT0lOIHBnX2Rlc2NyaXB0aW9uIGRlcyBPTiAoZGVzLm9iam9pZD1yZWwu b2lkIEFORCBkZXMub2Jqc3ViaWQ9MCBBTkQgZGVzLmNsYXNzb2lkPSdwZ19j bGFzcyc6OnJlZ2NsYXNzKQorICBMRUZUIE9VVEVSIEpPSU4gcGdfY29uc3Ry YWludCBjb24gT04gY29uLmNvbnJlbGlkPXJlbC5vaWQgQU5EIGNvbi5jb250 eXBlPSdwJworICBMRUZUIE9VVEVSIEpPSU4gcGdfY2xhc3MgdHN0IE9OIHRz dC5vaWQgPSByZWwucmVsdG9hc3RyZWxpZAorICBMRUZUIEpPSU4gcGdfdHlw ZSB0eXAgT04gcmVsLnJlbG9mdHlwZT10eXAub2lkCitXSEVSRSByZWwucmVs a2luZCBJTiAoJ3InLCdzJywndCcpIEFORCByZWwucmVsbmFtZXNwYWNlID0g e3sgc2NpZCB9fTo6b2lkCit7JSBpZiB0aWQgJX0gIEFORCByZWwub2lkID0g e3sgdGlkIH19OjpvaWQgeyUgZW5kaWYgJX0KK09SREVSIEJZIHJlbC5yZWxu YW1lOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvdGFibGUvc3FsLzku MV9wbHVzL3Jlc2V0X3N0YXRzLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxl cy90ZW1wbGF0ZXMvdGFibGUvc3FsLzkuMV9wbHVzL3Jlc2V0X3N0YXRzLnNx bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNmVjYTBk Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3Rl bXBsYXRlcy90YWJsZS9zcWwvOS4xX3BsdXMvcmVzZXRfc3RhdHMuc3FsCkBA IC0wLDAgKzEgQEAKK1NFTEVDVCBwZ19zdGF0X3Jlc2V0X3NpbmdsZV90YWJs ZV9jb3VudGVycyh7e3RpZH19KQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp bGUKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0 ZXMvdGFibGUvc3FsLzkuMV9wbHVzL3NxbC5zcWwgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy90YWJsZXMvdGVtcGxhdGVzL3RhYmxlL3NxbC85LjFfcGx1cy9zcWwuc3Fs Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE3YjM1YWUK LS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVt cGxhdGVzL3RhYmxlL3NxbC85LjFfcGx1cy9zcWwuc3FsCkBAIC0wLDAgKzEg QEAKK1RBS0UgQVNIRVNIJ1MgSEVMUCBPTiBUSElTIFRBU0sgOi0pClwgTm8g bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvdGFibGVzL3RlbXBsYXRlcy90YWJsZS9zcWwvOS4xX3BsdXMvdHJ1 bmNhdGUuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy90 YWJsZS9zcWwvOS4xX3BsdXMvdHJ1bmNhdGUuc3FsCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZhMjc2ZjMKLS0tIC9kZXYvbnVsbAor KysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3RhYmxlL3Nx bC85LjFfcGx1cy90cnVuY2F0ZS5zcWwKQEAgLTAsMCArMSBAQAorVFJVTkNB VEUgVEFCTEUge3tjb25ufHF0SWRlbnQoZGF0YS5zY2hlbWEsIGRhdGEubmFt ZSl9fXslIGlmIGNhc2NhZGUgJX0gQ0FTQ0FERXslIGVuZGlmICV9OwpcIE5v IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvdGFibGUvc3FsLzkuMV9wbHVzL3Vw ZGF0ZS5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3Rh YmxlL3NxbC85LjFfcGx1cy91cGRhdGUuc3FsCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLmE5N2FjMzAKLS0tIC9kZXYvbnVsbAorKysg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3RhYmxlL3NxbC85 LjFfcGx1cy91cGRhdGUuc3FsCkBAIC0wLDAgKzEsMjAxIEBACit7JSBpbXBv cnQgJ21hY3Jvcy9zY2hlbWFzL3NlY3VyaXR5Lm1hY3JvcycgYXMgU0VDTEFC TEUgJX0KK3slIGltcG9ydCAnbWFjcm9zL3NjaGVtYXMvcHJpdmlsZWdlLm1h Y3JvcycgYXMgUFJJVklMRUdFICV9Cit7JSBpbXBvcnQgJ21hY3Jvcy92YXJp YWJsZS5tYWNyb3MnIGFzIFZBUklBQkxFICV9Cit7IyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyN9Cit7IyMg UmVuYW1lIHRhYmxlICMjfQoreyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjfQoreyUgaWYgZGF0YS5uYW1l IGFuZCBkYXRhLm5hbWUgIT0gb19kYXRhLm5hbWUgJX0KK0FMVEVSIFRBQkxF IHt7Y29ubnxxdElkZW50KG9fZGF0YS5zY2hlbWEsIG9fZGF0YS5uYW1lKX19 CisgICAgUkVOQU1FIFRPIHt7Y29ubnxxdElkZW50KGRhdGEubmFtZSl9fTsK KworeyUgZW5kaWYgJX0KK3sjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI30KK3sjIyBDaGFuZ2UgdGFibGUg c2NoZW1hICMjfQoreyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjfQoreyUgaWYgZGF0YS5zY2hlbWEgYW5k IGRhdGEuc2NoZW1hICE9IG9fZGF0YS5zY2hlbWEgJX0KK0FMVEVSIFRBQkxF IHt7Y29ubnxxdElkZW50KG9fZGF0YS5zY2hlbWEsIGRhdGEubmFtZSl9fQor ICBTRVQgU0NIRU1BIHt7Y29ubnxxdElkZW50KGRhdGEuc2NoZW1hKX19Owor Cit7JSBlbmRpZiAlfQoreyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjfQoreyMjIENoYW5nZSB0YWJsZSBv d25lciAjI30KK3sjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjI30KK3slIGlmIGRhdGEucmVsb3duZXIgYW5k IGRhdGEucmVsb3duZXIgIT0gb19kYXRhLnJlbG93bmVyICV9CitBTFRFUiBU QUJMRSB7e2Nvbm58cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0YS5uYW1lKX19 CisgICAgT1dORVIgVE8ge3tjb25ufHF0SWRlbnQoZGF0YS5yZWxvd25lcil9 fTsKKworeyUgZW5kaWYgJX0KK3sjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI30KK3sjIyBVcGRhdGUgSW5o ZXJpdHMgdGFibGUgZGVmaW5pdGlvbiAjI30KK3sjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI30KK3slIGlm IGRhdGEuY29sbF9pbmhlcml0c19hZGRlZHxsZW5ndGggPiAwICV9Cit7JSBm b3IgdmFsIGluIGRhdGEuY29sbF9pbmhlcml0c19hZGRlZCAlfQorQUxURVIg VEFCTEUge3tjb25ufHF0SWRlbnQoZGF0YS5zY2hlbWEsIGRhdGEubmFtZSl9 fQorICAgIElOSEVSSVQge3t2YWx9fTsKKworeyUgZW5kZm9yICV9Cit7JSBl bmRpZiAlfQoreyUgaWYgZGF0YS5jb2xsX2luaGVyaXRzX3JlbW92ZWR8bGVu Z3RoID4gMCAlfQoreyUgZm9yIHZhbCBpbiBkYXRhLmNvbGxfaW5oZXJpdHNf cmVtb3ZlZCAlfQorQUxURVIgVEFCTEUge3tjb25ufHF0SWRlbnQoZGF0YS5z Y2hlbWEsIGRhdGEubmFtZSl9fQorICAgIE5PIElOSEVSSVQge3t2YWx9fTsK KworeyUgZW5kZm9yICV9Cit7JSBlbmRpZiAlfQoreyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjfQoreyMj IENoYW5nZSBoYXNPSUQgYXR0cmlidXRlIG9mIHRhYmxlICMjfQoreyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjfQoreyUgaWYgZGF0YS5yZWxoYXNvaWRzIGlzIGRlZmluZWQgYW5kIGRh dGEucmVsaGFzb2lkcyAhPSBvX2RhdGEucmVsaGFzb2lkcyAlfQorQUxURVIg VEFCTEUge3tjb25ufHF0SWRlbnQoZGF0YS5zY2hlbWEsIGRhdGEubmFtZSl9 fQorICAgIFNFVCB7JSBpZiBkYXRhLnJlbGhhc29pZHMgJX1XSVRIeyUgZWxz ZSAlfVdJVEhPVVR7JSBlbmRpZiAlfSBPSURTOworCit7JSBlbmRpZiAlfQor eyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjfQoreyMjIENoYW5nZSB0YWJsZXNwYWNlICMjfQoreyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjfQoreyUgaWYgZGF0YS5zcGNuYW1lIGFuZCBkYXRhLnNwY25hbWUgIT0g b19kYXRhLnNwY25hbWUgJX0KK0FMVEVSIFRBQkxFIHt7Y29ubnxxdElkZW50 KGRhdGEuc2NoZW1hLCBkYXRhLm5hbWUpfX0KKyAgICBTRVQgVEFCTEVTUEFD RSB7e2Nvbm58cXRJZGVudChkYXRhLnNwY25hbWUpfX07CisKK3slIGVuZGlm ICV9Cit7IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyN9Cit7IyMgY2hhbmdlIGZpbGxmYWN0b3JlIHNldHRp bmdzICMjfQoreyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjfQoreyUgaWYgZGF0YS5maWxsZmFjdG9yIGFu ZCBkYXRhLmZpbGxmYWN0b3IgIT0gb19kYXRhLmZpbGxmYWN0b3IgJX0KK0FM VEVSIFRBQkxFIHt7Y29ubnxxdElkZW50KGRhdGEuc2NoZW1hLCBkYXRhLm5h bWUpfX0KKyAgICBTRVQgKEZJTExGQUNUT1I9e3tkYXRhLmZpbGxmYWN0b3J9 fSk7CisKK3slIGVuZGlmICV9Cit7IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjI30KK3sjIyBUYWJsZSBBdXRvVmFjdXVtIHNldHRpbmdzICMjfQor eyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyN9Cit7JSBpZiBvX2Rh dGEuYXV0b3ZhY3V1bV9jdXN0b20gYW5kIGRhdGEuYXV0b3ZhY3V1bV9jdXN0 b20gPT0gZmFsc2UgJX0KK0FMVEVSIFRBQkxFIHt7Y29ubnxxdElkZW50KGRh dGEuc2NoZW1hLCBkYXRhLm5hbWUpfX0gUkVTRVQgKAorICAgIGF1dG92YWN1 dW1fZW5hYmxlZCwKKyAgICBhdXRvdmFjdXVtX2FuYWx5emVfc2NhbGVfZmFj dG9yLAorICAgIGF1dG92YWN1dW1fYW5hbHl6ZV90aHJlc2hvbGQsCisgICAg YXV0b3ZhY3V1bV9mcmVlemVfbWF4X2FnZSwKKyAgICBhdXRvdmFjdXVtX3Zh Y3V1bV9jb3N0X2RlbGF5LAorICAgIGF1dG92YWN1dW1fdmFjdXVtX2Nvc3Rf bGltaXQsCisgICAgYXV0b3ZhY3V1bV92YWN1dW1fc2NhbGVfZmFjdG9yLAor ICAgIGF1dG92YWN1dW1fdmFjdXVtX3RocmVzaG9sZCwKKyAgICBhdXRvdmFj dXVtX2ZyZWV6ZV9taW5fYWdlLAorICAgIGF1dG92YWN1dW1fZnJlZXplX3Rh YmxlX2FnZQorKTsKK3slIGVsaWYgZGF0YS5hdXRvdmFjdXVtX2VuYWJsZWQg IT0gb19kYXRhLmF1dG92YWN1dW1fZW5hYmxlZCAlfQoreyUgaWYgZGF0YS5h dXRvdmFjdXVtX2VuYWJsZWQgYW5kIG9fZGF0YS5hdXRvdmFjdXVtX2VuYWJs ZWQgPT0gZmFsc2UgJX0KK0FMVEVSIFRBQkxFIHt7Y29ubnxxdElkZW50KGRh dGEuc2NoZW1hLCBkYXRhLm5hbWUpfX0gU0VUICgKKyAgICBhdXRvdmFjdXVt X2VuYWJsZWQgPSB0cnVleyUgZWxpZiBkYXRhLmF1dG92YWN1dW1fZW5hYmxl ZCA9PSBmYWxzZSBhbmQgb19kYXRhLmF1dG92YWN1dW1fZW5hYmxlZCAlfQor QUxURVIgVEFCTEUge3tjb25ufHF0SWRlbnQoZGF0YS5zY2hlbWEsIGRhdGEu bmFtZSl9fSBTRVQgKAorICAgICAgIGF1dG92YWN1dW1fZW5hYmxlZCA9IGZh bHNleyUgZW5kaWYgJX0KK3slIGlmIChkYXRhLmF1dG92YWN1dW1fZW5hYmxl ZCBvciBvX2RhdGEuYXV0b3ZhY3V1bV9lbmFibGVkIClhbmQgZGF0YS52YWN1 dW1fdGFibGUgYW5kIGRhdGEudmFjdXVtX3RhYmxlLmNoYW5nZWR8bGVuZ3Ro ID4gMCAlfQoreyUgZm9yIG9wdCBpbiBkYXRhLnZhY3V1bV90YWJsZS5jaGFu Z2VkICV9eyUgaWYgb3B0Lm5hbWUgYW5kIG9wdC52YWx1ZSAlfQoreyUgaWYg ZmxhZyBvciAoZGF0YS5hdXRvdmFjdXVtX2VuYWJsZWQgYW5kIG9fZGF0YS5h dXRvdmFjdXVtX2VuYWJsZWQgPT0gZmFsc2UpIG9yIChkYXRhLmF1dG92YWN1 dW1fZW5hYmxlZCA9PSBmYWxzZSBhbmQgb19kYXRhLmF1dG92YWN1dW1fZW5h YmxlZCkgJX0KKywKK3slIGVsc2UgJX0KK0FMVEVSIFRBQkxFIHt7Y29ubnxx dElkZW50KGRhdGEuc2NoZW1hLCBkYXRhLm5hbWUpfX0gU0VUICgKK3slIHNl dCBmbGFnID0gdHJ1ZSAlfQoreyUgZW5kaWYgJX0KKyAgICB7e29wdC5uYW1l fX0gPSB7e29wdC52YWx1ZX19eyUgZW5kaWYgJX0KK3slIGlmIGxvb3AuaW5k ZXggPT0gZGF0YS52YWN1dW1fdGFibGUuY2hhbmdlZHxsZW5ndGggYW5kIChm bGFnIG9yIChkYXRhLmF1dG92YWN1dW1fZW5hYmxlZCBhbmQgb19kYXRhLmF1 dG92YWN1dW1fZW5hYmxlZCA9PSBmYWxzZSkgb3IgKGRhdGEuYXV0b3ZhY3V1 bV9lbmFibGVkID09IGZhbHNlIGFuZCBvX2RhdGEuYXV0b3ZhY3V1bV9lbmFi bGVkKSklfQorCispOworeyUgZW5kaWYgJX0KK3slIGVuZGZvciAlfQoreyUg ZWxpZiAoZGF0YS5hdXRvdmFjdXVtX2VuYWJsZWQgYW5kIG9fZGF0YS5hdXRv dmFjdXVtX2VuYWJsZWQgPT0gZmFsc2UpIG9yIChkYXRhLmF1dG92YWN1dW1f ZW5hYmxlZCA9PSBmYWxzZSBhbmQgb19kYXRhLmF1dG92YWN1dW1fZW5hYmxl ZCkgJX0KKworKTsKK3slIGVuZGlmICV9Cit7JSBlbmRpZiAlfQoreyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyN9Cit7IyMgVG9hc3Qg dGFibGUgQXV0b1ZhY3V1bSBzZXR0aW5ncyAjI30KK3sjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjfQoreyUgaWYgb19kYXRhLnRvYXN0 X2F1dG92YWN1dW0gYW5kIGRhdGEudG9hc3RfYXV0b3ZhY3V1bSA9PSBmYWxz ZSAlfQorQUxURVIgVEFCTEUge3tjb25ufHF0SWRlbnQoZGF0YS5zY2hlbWEs IGRhdGEubmFtZSl9fSBSRVNFVCAoCisgICAgdG9hc3QuYXV0b3ZhY3V1bV9l bmFibGVkLAorICAgIHRvYXN0LmF1dG92YWN1dW1fZnJlZXplX21heF9hZ2Us CisgICAgdG9hc3QuYXV0b3ZhY3V1bV92YWN1dW1fY29zdF9kZWxheSwKKyAg ICB0b2FzdC5hdXRvdmFjdXVtX3ZhY3V1bV9jb3N0X2xpbWl0LAorICAgIHRv YXN0LmF1dG92YWN1dW1fdmFjdXVtX3NjYWxlX2ZhY3RvciwKKyAgICB0b2Fz dC5hdXRvdmFjdXVtX3ZhY3V1bV90aHJlc2hvbGQsCisgICAgdG9hc3QuYXV0 b3ZhY3V1bV9mcmVlemVfbWluX2FnZSwKKyAgICB0b2FzdC5hdXRvdmFjdXVt X2ZyZWV6ZV90YWJsZV9hZ2UsCisgICAgdG9hc3QuYXV0b3ZhY3V1bV9hbmFs eXplX3RocmVzaG9sZCwKKyAgICB0b2FzdC5hdXRvdmFjdXVtX2FuYWx5emVf c2NhbGVfZmFjdG9yCispOworeyUgZWxpZiBkYXRhLnRvYXN0X2F1dG92YWN1 dW1fZW5hYmxlZCAhPSBvX2RhdGEudG9hc3RfYXV0b3ZhY3V1bV9lbmFibGVk ICV9Cit7JSBpZiBkYXRhLnRvYXN0X2F1dG92YWN1dW1fZW5hYmxlZCBhbmQg b19kYXRhLnRvYXN0X2F1dG92YWN1dW1fZW5hYmxlZCA9PSBmYWxzZSAlfQor QUxURVIgVEFCTEUge3tjb25ufHF0SWRlbnQoZGF0YS5zY2hlbWEsIGRhdGEu bmFtZSl9fSBTRVQgKAorICAgIHRvYXN0LmF1dG92YWN1dW1fZW5hYmxlZCA9 IHRydWV7JSBlbGlmIGRhdGEudG9hc3RfYXV0b3ZhY3V1bV9lbmFibGVkID09 IGZhbHNlIGFuZCBvX2RhdGEudG9hc3RfYXV0b3ZhY3V1bV9lbmFibGVkICV9 CitBTFRFUiBUQUJMRSB7e2Nvbm58cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0 YS5uYW1lKX19IFNFVCAoCisgICAgICAgdG9hc3QuYXV0b3ZhY3V1bV9lbmFi bGVkID0gZmFsc2V7JSBlbmRpZiAlfQoreyUgaWYgKGRhdGEudG9hc3RfYXV0 b3ZhY3V1bV9lbmFibGVkIG9yIG9fZGF0YS50b2FzdF9hdXRvdmFjdXVtX2Vu YWJsZWQgKWFuZCBkYXRhLnZhY3V1bV90b2FzdCBhbmQgZGF0YS52YWN1dW1f dG9hc3QuY2hhbmdlZHxsZW5ndGggPiAwICV9Cit7JSBmb3Igb3B0IGluIGRh dGEudmFjdXVtX3RvYXN0LmNoYW5nZWQgJX17JSBpZiBvcHQubmFtZSBhbmQg b3B0LnZhbHVlICV9Cit7JSBpZiBmbGFnIG9yIChkYXRhLnRvYXN0X2F1dG92 YWN1dW1fZW5hYmxlZCBhbmQgb19kYXRhLnRvYXN0X2F1dG92YWN1dW1fZW5h YmxlZCA9PSBmYWxzZSkgb3IgKGRhdGEudG9hc3RfYXV0b3ZhY3V1bV9lbmFi bGVkID09IGZhbHNlIGFuZCBvX2RhdGEudG9hc3RfYXV0b3ZhY3V1bV9lbmFi bGVkKSAlfQorLAoreyUgZWxzZSAlfQorQUxURVIgVEFCTEUge3tjb25ufHF0 SWRlbnQoZGF0YS5zY2hlbWEsIGRhdGEubmFtZSl9fSBTRVQgKAoreyUgc2V0 IGZsYWcgPSB0cnVlICV9Cit7JSBlbmRpZiAlfQorICAgIHRvYXN0Lnt7b3B0 Lm5hbWV9fSA9IHt7b3B0LnZhbHVlfX17JSBlbmRpZiAlfQoreyUgaWYgbG9v cC5pbmRleCA9PSBkYXRhLnZhY3V1bV90b2FzdC5jaGFuZ2VkfGxlbmd0aCBh bmQgKGZsYWcgb3IgKGRhdGEudG9hc3RfYXV0b3ZhY3V1bV9lbmFibGVkIGFu ZCBvX2RhdGEudG9hc3RfYXV0b3ZhY3V1bV9lbmFibGVkID09IGZhbHNlKSBv ciAoZGF0YS50b2FzdF9hdXRvdmFjdXVtX2VuYWJsZWQgPT0gZmFsc2UgYW5k IG9fZGF0YS50b2FzdF9hdXRvdmFjdXVtX2VuYWJsZWQpKSV9CisKKyk7Cit7 JSBlbmRpZiAlfQoreyUgZW5kZm9yICV9Cit7JSBlbGlmIChkYXRhLnRvYXN0 X2F1dG92YWN1dW1fZW5hYmxlZCBhbmQgb19kYXRhLnRvYXN0X2F1dG92YWN1 dW1fZW5hYmxlZCA9PSBmYWxzZSkgb3IgKGRhdGEudG9hc3RfYXV0b3ZhY3V1 bV9lbmFibGVkID09IGZhbHNlIGFuZCBvX2RhdGEudG9hc3RfYXV0b3ZhY3V1 bV9lbmFibGVkKSAlfQorCispOworeyUgZW5kaWYgJX0KK3slIGVuZGlmICV9 Cit7IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyN9Cit7IyMgQ2hhbmdlIHRhYmxlIGNvbW1lbnRzICMjfQor eyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjfQoreyUgaWYgZGF0YS5kZXNjcmlwdGlvbiBhbmQgZGF0YS5k ZXNjcmlwdGlvbiAhPSBvX2RhdGEuZGVzY3JpcHRpb24gJX0KK0NPTU1FTlQg T04gVEFCTEUge3tjb25ufHF0SWRlbnQoZGF0YS5zY2hlbWEsIGRhdGEubmFt ZSl9fQorICBJUyB7e2RhdGEuZGVzY3JpcHRpb258cXRMaXRlcmFsfX07CisK K3slIGVuZGlmICV9Cit7IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyN9Cit7IyMgVXBkYXRlIHRhYmxlIFBy aXZpbGVnZXMgIyN9Cit7IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyN9Cit7JSBpZiBkYXRhLnJlbGFjbCAl fQoreyUgaWYgJ2RlbGV0ZWQnIGluIGRhdGEucmVsYWNsICV9Cit7JSBmb3Ig cHJpdiBpbiBkYXRhLnJlbGFjbC5kZWxldGVkICV9Cit7eyBQUklWSUxFR0Uu VU5TRVRBTEwoY29ubiwgJ1RBQkxFJywgcHJpdi5ncmFudGVlLCBkYXRhLm5h bWUsIGRhdGEuc2NoZW1hKSB9fQoreyUgZW5kZm9yICV9Cit7JSBlbmRpZiAl fQoreyUgaWYgJ2NoYW5nZWQnIGluIGRhdGEucmVsYWNsICV9Cit7JSBmb3Ig cHJpdiBpbiBkYXRhLnJlbGFjbC5jaGFuZ2VkICV9Cit7eyBQUklWSUxFR0Uu VU5TRVRBTEwoY29ubiwgJ1RBQkxFJywgcHJpdi5ncmFudGVlLCBkYXRhLm5h bWUsIGRhdGEuc2NoZW1hKSB9fQore3sgUFJJVklMRUdFLlNFVChjb25uLCAn VEFCTEUnLCBwcml2LmdyYW50ZWUsIGRhdGEubmFtZSwgcHJpdi53aXRob3V0 X2dyYW50LCBwcml2LndpdGhfZ3JhbnQsIGRhdGEuc2NoZW1hKSB9fQoreyUg ZW5kZm9yICV9Cit7JSBlbmRpZiAlfQoreyUgaWYgJ2FkZGVkJyBpbiBkYXRh LnJlbGFjbCAlfQoreyUgZm9yIHByaXYgaW4gZGF0YS5yZWxhY2wuYWRkZWQg JX0KK3t7IFBSSVZJTEVHRS5TRVQoY29ubiwgJ1RBQkxFJywgcHJpdi5ncmFu dGVlLCBkYXRhLm5hbWUsIHByaXYud2l0aG91dF9ncmFudCwgcHJpdi53aXRo X2dyYW50LCBkYXRhLnNjaGVtYSkgfX0KK3slIGVuZGZvciAlfQoreyUgZW5k aWYgJX0KK3slIGVuZGlmICV9Cit7IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyN9Cit7IyMgVXBkYXRlIHRh YmxlIFNlY3VyaXR5TGFiZWwgIyN9Cit7IyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyN9Cit7JSBpZiBkYXRh LnNlY2xhYmVscyBhbmQgZGF0YS5zZWNsYWJlbHN8bGVuZ3RoID4gMCAlfQor eyUgc2V0IHNlY2xhYmVscyA9IGRhdGEuc2VjbGFiZWxzICV9Cit7JSBpZiAn ZGVsZXRlZCcgaW4gc2VjbGFiZWxzIGFuZCBzZWNsYWJlbHMuZGVsZXRlZHxs ZW5ndGggPiAwICV9Cit7JSBmb3IgciBpbiBzZWNsYWJlbHMuZGVsZXRlZCAl fQore3sgU0VDTEFCRUwuVU5TRVQoY29ubiwgJ1RBQkxFJywgZGF0YS5uYW1l LCByLnByb3ZpZGVyLCBkYXRhLnNjaGVtYSkgfX0KK3slIGVuZGZvciAlfQor eyUgZW5kaWYgJX0KK3slIGlmICdhZGRlZCcgaW4gc2VjbGFiZWxzIGFuZCBz ZWNsYWJlbHMuYWRkZWR8bGVuZ3RoID4gMCAlfQoreyUgZm9yIHIgaW4gc2Vj bGFiZWxzLmFkZGVkICV9Cit7eyBTRUNMQUJMRS5TRVQoY29ubiwgJ1RBQkxF JywgZGF0YS5uYW1lLCByLnByb3ZpZGVyLCByLmxhYmVsLCBkYXRhLnNjaGVt YSkgfX0KK3slIGVuZGZvciAlfQoreyUgZW5kaWYgJX0KK3slIGlmICdjaGFu Z2VkJyBpbiBzZWNsYWJlbHMgYW5kIHNlY2xhYmVscy5jaGFuZ2VkfGxlbmd0 aCA+IDAgJX0KK3slIGZvciByIGluIHNlY2xhYmVscy5jaGFuZ2VkICV9Cit7 eyBTRUNMQUJMRS5TRVQoY29ubiwgJ1RBQkxFJywgZGF0YS5uYW1lLCByLnBy b3ZpZGVyLCByLmxhYmVsLCBkYXRhLnNjaGVtYSkgfX0KK3slIGVuZGZvciAl fQoreyUgZW5kaWYgJX0KKworeyUgZW5kaWYgJX0KXCBObyBuZXdsaW5lIGF0 IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJs ZXMvdGVtcGxhdGVzL3RhYmxlL3NxbC85LjVfcGx1cy9hY2wuc3FsIGIvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy90YWJsZS9zcWwvOS41X3Bs dXMvYWNsLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li41NmYxZjc2Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv dGFibGVzL3RlbXBsYXRlcy90YWJsZS9zcWwvOS41X3BsdXMvYWNsLnNxbApA QCAtMCwwICsxLDQ2IEBACit7IyMjIFNRTCB0byBmZXRjaCBwcml2aWxlZ2Vz IGZvciB0YWJsZXNwYWNlICMjI30KK1NFTEVDVCAncmVsYWNsJyBhcyBkZWZ0 eXBlLCBDT0FMRVNDRShndC5yb2xuYW1lLCAncHVibGljJykgZ3JhbnRlZSwg Zy5yb2xuYW1lIGdyYW50b3IsCisgICAgYXJyYXlfYWdnKHByaXZpbGVnZV90 eXBlKSBhcyBwcml2aWxlZ2VzLCBhcnJheV9hZ2coaXNfZ3JhbnRhYmxlKSBh cyBncmFudGFibGUKK0ZST00KKyAgKFNFTEVDVAorICAgIGQuZ3JhbnRlZSwg ZC5ncmFudG9yLCBkLmlzX2dyYW50YWJsZSwKKyAgICBDQVNFIGQucHJpdmls ZWdlX3R5cGUKKwkJV0hFTiAnQ09OTkVDVCcgVEhFTiAnYycKKwkJV0hFTiAn Q1JFQVRFJyBUSEVOICdDJworCQlXSEVOICdERUxFVEUnIFRIRU4gJ2QnCisJ CVdIRU4gJ0VYRUNVVEUnIFRIRU4gJ1gnCisJCVdIRU4gJ0lOU0VSVCcgVEhF TiAnYScKKwkJV0hFTiAnUkVGRVJFTkNFUycgVEhFTiAneCcKKwkJV0hFTiAn U0VMRUNUJyBUSEVOICdyJworCQlXSEVOICdURU1QT1JBUlknIFRIRU4gJ1Qn CisJCVdIRU4gJ1RSSUdHRVInIFRIRU4gJ3QnCisJCVdIRU4gJ1RSVU5DQVRF JyBUSEVOICdEJworCQlXSEVOICdVUERBVEUnIFRIRU4gJ3cnCisJCVdIRU4g J1VTQUdFJyBUSEVOICdVJworCQlFTFNFICdVTktOT1dOJworCUVORCBBUyBw cml2aWxlZ2VfdHlwZQorICBGUk9NCisgICAgKFNFTEVDVCByZWwucmVsYWNs CisgICAgICAgIEZST00gcGdfY2xhc3MgcmVsCisgICAgICAgICAgTEVGVCBP VVRFUiBKT0lOIHBnX3RhYmxlc3BhY2Ugc3BjIG9uIHNwYy5vaWQ9cmVsLnJl bHRhYmxlc3BhY2UKKyAgICAgICAgICBMRUZUIE9VVEVSIEpPSU4gcGdfY29u c3RyYWludCBjb24gT04gY29uLmNvbnJlbGlkPXJlbC5vaWQgQU5EIGNvbi5j b250eXBlPSdwJworICAgICAgICAgIExFRlQgT1VURVIgSk9JTiBwZ19jbGFz cyB0c3QgT04gdHN0Lm9pZCA9IHJlbC5yZWx0b2FzdHJlbGlkCisgICAgICAg ICAgTEVGVCBKT0lOIHBnX3R5cGUgdHlwIE9OIHJlbC5yZWxvZnR5cGU9dHlw Lm9pZAorICAgICAgICBXSEVSRSByZWwucmVsa2luZCBJTiAoJ3InLCdzJywn dCcpIEFORCByZWwucmVsbmFtZXNwYWNlID0ge3sgc2NpZCB9fTo6b2lkCisg ICAgICAgICAgICBBTkQgcmVsLm9pZCA9IHt7IHRpZCB9fTo6b2lkCisgICAg KSBhY2wsCisgICAgKFNFTEVDVCAoZCkuZ3JhbnRlZSBBUyBncmFudGVlLCAo ZCkuZ3JhbnRvciBBUyBncmFudG9yLCAoZCkuaXNfZ3JhbnRhYmxlCisgICAg ICAgIEFTIGlzX2dyYW50YWJsZSwgKGQpLnByaXZpbGVnZV90eXBlIEFTIHBy aXZpbGVnZV90eXBlIEZST00gKFNFTEVDVAorICAgICAgICBhY2xleHBsb2Rl KHJlbC5yZWxhY2wpIGFzIGQKKyAgICAgICAgRlJPTSBwZ19jbGFzcyByZWwK KyAgICAgICAgICBMRUZUIE9VVEVSIEpPSU4gcGdfdGFibGVzcGFjZSBzcGMg b24gc3BjLm9pZD1yZWwucmVsdGFibGVzcGFjZQorICAgICAgICAgIExFRlQg T1VURVIgSk9JTiBwZ19jb25zdHJhaW50IGNvbiBPTiBjb24uY29ucmVsaWQ9 cmVsLm9pZCBBTkQgY29uLmNvbnR5cGU9J3AnCisgICAgICAgICAgTEVGVCBP VVRFUiBKT0lOIHBnX2NsYXNzIHRzdCBPTiB0c3Qub2lkID0gcmVsLnJlbHRv YXN0cmVsaWQKKyAgICAgICAgICBMRUZUIEpPSU4gcGdfdHlwZSB0eXAgT04g cmVsLnJlbG9mdHlwZT10eXAub2lkCisgICAgICAgIFdIRVJFIHJlbC5yZWxr aW5kIElOICgncicsJ3MnLCd0JykgQU5EIHJlbC5yZWxuYW1lc3BhY2UgPSB7 eyBzY2lkIH19OjpvaWQKKyAgICAgICAgICAgIEFORCByZWwub2lkID0ge3sg dGlkIH19OjpvaWQKKyAgICAgICAgKSBhKSBkCisgICAgKSBkCisgIExFRlQg Sk9JTiBwZ19jYXRhbG9nLnBnX3JvbGVzIGcgT04gKGQuZ3JhbnRvciA9IGcu b2lkKQorICBMRUZUIEpPSU4gcGdfY2F0YWxvZy5wZ19yb2xlcyBndCBPTiAo ZC5ncmFudGVlID0gZ3Qub2lkKQorR1JPVVAgQlkgZy5yb2xuYW1lLCBndC5y b2xuYW1lClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0 IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy90YWJsZS9zcWwv OS41X3BsdXMvYmFja2VuZF9zdXBwb3J0LnNxbCBiL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L3RhYmxlcy90ZW1wbGF0ZXMvdGFibGUvc3FsLzkuNV9wbHVzL2JhY2tlbmRf c3VwcG9ydC5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MC4uZjliOTU2NAotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L3RhYmxlcy90ZW1wbGF0ZXMvdGFibGUvc3FsLzkuNV9wbHVzL2JhY2tlbmRf c3VwcG9ydC5zcWwKQEAgLTAsMCArMSwxOCBAQAorU0VMRUNUCisgQ0FTRSBX SEVOIG5zcC5uc3BuYW1lIElOICgnc3lzJywgJ2RibycsICdpbmZvcm1hdGlv bl9zY2hlbWEnKSBUSEVOIHRydWUgRUxTRSBmYWxzZSBFTkQgQVMgZGJTdXBw b3J0CitGUk9NIHBnX25hbWVzcGFjZSBuc3AKK1dIRVJFIG5zcC5vaWQ9e3tz Y2lkfX06OmludAorQU5EICgKKwkobnNwbmFtZSA9ICdwZ19jYXRhbG9nJyBB TkQgRVhJU1RTCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChT RUxFQ1QgMSBGUk9NIHBnX2NsYXNzIFdIRVJFIHJlbG5hbWUgPSAncGdfY2xh c3MnIEFORCByZWxuYW1lc3BhY2UgPSBuc3Aub2lkIExJTUlUIDEpKQorCU9S IChuc3BuYW1lID0gJ3BnYWdlbnQnIEFORCBFWElTVFMKKwkgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKFNFTEVDVCAxIEZST00gcGdfY2xhc3Mg V0hFUkUgcmVsbmFtZSA9ICdwZ2Ffam9iJyBBTkQgcmVsbmFtZXNwYWNlID0g bnNwLm9pZCBMSU1JVCAxKSkKKwlPUiAobnNwbmFtZSA9ICdpbmZvcm1hdGlv bl9zY2hlbWEnIEFORCBFWElTVFMKKwkgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKFNFTEVDVCAxIEZST00gcGdfY2xhc3MgV0hFUkUgcmVsbmFt ZSA9ICd0YWJsZXMnIEFORCByZWxuYW1lc3BhY2UgPSBuc3Aub2lkIExJTUlU IDEpKQorCU9SIChuc3BuYW1lIExJS0UgJ18lJyBBTkQgRVhJU1RTCisJICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTRUxFQ1QgMSBGUk9NIHBn X3Byb2MgV0hFUkUgcHJvbmFtZT0nc2xvbnl2ZXJzaW9uJyBBTkQgcHJvbmFt ZXNwYWNlID0gbnNwLm9pZCBMSU1JVCAxKSkKKykKK0FORAorIG5zcG5hbWUg Tk9UIExJS0UgRSdwZ1xcdGVtcFxcJScKK0FORAorIG5zcG5hbWUgTk9UIExJ S0UgRSdwZ1xcdG9hc3RfdGVtcFxcJScKXCBObyBuZXdsaW5lIGF0IGVuZCBv ZiBmaWxlCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVt cGxhdGVzL3RhYmxlL3NxbC85LjVfcGx1cy9jcmVhdGUuc3FsIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy90YWJsZS9zcWwvOS41X3BsdXMv Y3JlYXRlLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li5jMGZiNWU0Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv dGFibGVzL3RlbXBsYXRlcy90YWJsZS9zcWwvOS41X3BsdXMvY3JlYXRlLnNx bApAQCAtMCwwICsxLDE1NyBAQAoreyUgaW1wb3J0ICdtYWNyb3Mvc2NoZW1h cy9zZWN1cml0eS5tYWNyb3MnIGFzIFNFQ0xBQkxFICV9Cit7JSBpbXBvcnQg J21hY3Jvcy9zY2hlbWFzL3ByaXZpbGVnZS5tYWNyb3MnIGFzIFBSSVZJTEVH RSAlfQoreyUgaW1wb3J0ICdtYWNyb3MvdmFyaWFibGUubWFjcm9zJyBhcyBW QVJJQUJMRSAlfQoreyUgaW1wb3J0ICdjb2x1bW4vbWFjcm9zL3NlY3VyaXR5 Lm1hY3JvcycgYXMgQ09MVU1OX1NFQ0xBQkxFICV9Cit7JSBpbXBvcnQgJ2Nv bHVtbi9tYWNyb3MvcHJpdmlsZWdlLm1hY3JvcycgYXMgQ09MVU1OX1BSSVZJ TEVHRSAlfQoreyUgaW1wb3J0ICd0YWJsZS9zcWwvbWFjcm9zL2NvbnN0cmFp bnRzLm1hY3JvJyBhcyBDT05TVFJBSU5UUyAlfQoreyM9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09I30KK3sjPT09PT09IE1B SU4gVEFCTEUgVEVNUExBVEUgU1RBUlRTIEhFUkUgPT09PT09I30KK3sjPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSN9Cit7 IworIElmIHVzZXIgaGFzIG5vdCBwcm92aWRlZCBhbnkgZGV0YWlscyBidXQg b25seSBuYW1lIHRoZW4KKyBhZGQgZW1wdHkgYnJhY2tldCB3aXRoIHRhYmxl IG5hbWUKKyN9Cit7JSBzZXQgZW1wdHlfYnJhY2tldCA9ICIiJX0KK3slIGlm IGRhdGEuY29sbF9pbmhlcml0c3xsZW5ndGggPT0gMCBhbmQgIGRhdGEuY29s dW1uc3xsZW5ndGggPT0gMCBhbmQgbm90IGRhdGEudHlwbmFtZSBhbmQgbm90 IGRhdGEubGlrZV9yZWxhdGlvbiBhbmQgZGF0YS5wcmltYXJ5X2tleXxsZW5n dGggPT0gMCBhbmQgZGF0YS51bmlxdWVfY29uc3RyYWludHxsZW5ndGggPT0g MCBhbmQgZGF0YS5mb3JlaWduX2tleXxsZW5ndGggPT0gMCBhbmQgZGF0YS5j aGVja19jb25zdHJhaW50fGxlbmd0aCA9PSAwIGFuZCBkYXRhLmV4Y2x1ZGVf Y29uc3RyYWludHxsZW5ndGggPT0gMCAlfQoreyUgc2V0IGVtcHR5X2JyYWNr ZXQgPSAiXG4oXG4pIiV9Cit7JSBlbmRpZiAlfQorQ1JFQVRFIHslIGlmIGRh dGEucmVscGVyc2lzdGVuY2UgJX1VTkxPR0dFRCB7JSBlbmRpZiAlfVRBQkxF IHt7Y29ubnxxdElkZW50KGRhdGEuc2NoZW1hLCBkYXRhLm5hbWUpfX17e2Vt cHR5X2JyYWNrZXR9fQoreyUgaWYgZGF0YS50eXBuYW1lICV9CisgICAgT0Yg e3sgZGF0YS50eXBuYW1lIH19Cit7JSBlbmRpZiAlfQoreyUgaWYgZGF0YS5s aWtlX3JlbGF0aW9uIG9yIGRhdGEuY29sbF9pbmhlcml0cyBvciBkYXRhLmNv bHVtbnN8bGVuZ3RoID4gMCBvciBkYXRhLnByaW1hcnlfa2V5fGxlbmd0aCA+ IDAgb3IgZGF0YS51bmlxdWVfY29uc3RyYWludHxsZW5ndGggPiAwIG9yIGRh dGEuZm9yZWlnbl9rZXl8bGVuZ3RoID4gMCBvciBkYXRhLmNoZWNrX2NvbnN0 cmFpbnR8bGVuZ3RoID4gMCBvciBkYXRhLmV4Y2x1ZGVfY29uc3RyYWludHxs ZW5ndGggPiAwICV9CisoCit7JSBlbmRpZiAlfQoreyUgaWYgZGF0YS5saWtl X3JlbGF0aW9uICV9CisgICAgTElLRSB7eyBkYXRhLmxpa2VfcmVsYXRpb24g fX17JSBpZiBkYXRhLmxpa2VfZGVmYXVsdF92YWx1ZSAlfQorCisgICAgICAg IElOQ0xVRElORyBERUZBVUxUU3slIGVuZGlmICV9eyUgaWYgZGF0YS5saWtl X2NvbnN0cmFpbnRzICV9CisKKyAgICAgICAgSU5DTFVESU5HIENPTlNUUkFJ TlRTeyUgZW5kaWYgJX17JSBpZiBkYXRhLmxpa2VfaW5kZXhlcyAlfQorCisg ICAgICAgIElOQ0xVRElORyBJTkRFWEVTeyUgZW5kaWYgJX17JSBpZiBkYXRh Lmxpa2Vfc3RvcmFnZSAlfQorCisgICAgICAgIElOQ0xVRElORyBTVE9SQUdF eyUgZW5kaWYgJX17JSBpZiBkYXRhLmxpa2VfY29tbWVudHMgJX0KKworICAg ICAgICBJTkNMVURJTkcgQ09NTUVOVFN7JSBlbmRpZiAlfXslIGlmIGRhdGEu Y29sdW1uc3xsZW5ndGggPiAwICV9LAoreyUgZW5kaWYgJX0KKworeyUgZW5k aWYgJX0KK3sjIyMgQWRkIGNvbHVtbnMgIyMjfQoreyUgaWYgZGF0YS5jb2x1 bW5zIGFuZCBkYXRhLmNvbHVtbnN8bGVuZ3RoID4gMCAlfQoreyUgZm9yIGMg aW4gZGF0YS5jb2x1bW5zICV9Cit7JSBpZiBjLm5hbWUgYW5kIGMuY2x0eXBl ICV9Cit7JSBpZiBsb29wLmluZGV4ICE9IDEgJX0sCit7JSBlbmRpZiAlfQor ICAgIHt7Y29ubnxxdElkZW50KGMubmFtZSl9fSB7e2MuY2x0eXBlfX17JSBp ZiBjLmF0dGxlbiAlfQorKHt7Yy5hdHRsZW59fXslIGlmIGMuYXR0cHJlY2lz aW9uJX0sIHt7Yy5hdHRwcmVjaXNpb259fXslIGVuZGlmICV9KXslIGVuZGlm ICV9eyUgaWYgYy5oYXNTcXJCcmFja2V0ICV9CitbXXslIGVuZGlmICV9eyUg aWYgYy5jb2xsc3BjbmFtZSAlfSBDT0xMQVRFIHt7Yy5jb2xsc3BjbmFtZX19 eyUgZW5kaWYgJX17JSBpZiBjLmF0dG5vdG51bGwgJX0gTk9UIE5VTEx7JSBl bmRpZiAlfXslIGlmIGMuZGVmdmFsICV9IERFRkFVTFQge3tjLmRlZnZhbH19 eyUgZW5kaWYgJX0KK3slIGVuZGlmICV9Cit7JSBlbmRmb3IgJX0KK3slIGVu ZGlmICV9Cit7IyBNYWNybyB0byByZW5kZXIgZm9yIGNvbnN0cmFpbnRzICN9 Cit7JSBpZiBkYXRhLnByaW1hcnlfa2V5fGxlbmd0aCA+IDAgJX17JSBpZiBk YXRhLmNvbHVtbnN8bGVuZ3RoID4gMCAlfSx7JSBlbmRpZiAlfQore3tDT05T VFJBSU5UUy5QUklNQVJZX0tFWShjb25uLCBkYXRhLnByaW1hcnlfa2V5WzBd KX19eyUgZW5kaWYgJX17JSBpZiBkYXRhLnVuaXF1ZV9jb25zdHJhaW50fGxl bmd0aCA+IDAgJX17JSBpZiBkYXRhLmNvbHVtbnN8bGVuZ3RoID4gMCBvciBk YXRhLnByaW1hcnlfa2V5fGxlbmd0aCA+IDAgJX0seyUgZW5kaWYgJX0KK3t7 Q09OU1RSQUlOVFMuVU5JUVVFKGNvbm4sIGRhdGEudW5pcXVlX2NvbnN0cmFp bnQpfX17JSBlbmRpZiAlfXslIGlmIGRhdGEuZm9yZWlnbl9rZXl8bGVuZ3Ro ID4gMCAlfXslIGlmIGRhdGEuY29sdW1uc3xsZW5ndGggPiAwIG9yIGRhdGEu cHJpbWFyeV9rZXl8bGVuZ3RoID4gMCBvciBkYXRhLnVuaXF1ZV9jb25zdHJh aW50fGxlbmd0aCA+IDAgJX0seyUgZW5kaWYgJX0KK3t7Q09OU1RSQUlOVFMu Rk9SRUlHTl9LRVkoY29ubiwgZGF0YS5mb3JlaWduX2tleSl9fXslIGVuZGlm ICV9eyUgaWYgZGF0YS5jaGVja19jb25zdHJhaW50fGxlbmd0aCA+IDAgJX17 JSBpZiBkYXRhLmNvbHVtbnN8bGVuZ3RoID4gMCBvciBkYXRhLnByaW1hcnlf a2V5fGxlbmd0aCA+IDAgb3IgZGF0YS51bmlxdWVfY29uc3RyYWludHxsZW5n dGggPiAwIG9yIGRhdGEuZm9yZWlnbl9rZXl8bGVuZ3RoID4gMCAlfSx7JSBl bmRpZiAlfQore3tDT05TVFJBSU5UUy5DSEVDSyhjb25uLCBkYXRhLmNoZWNr X2NvbnN0cmFpbnQpfX17JSBlbmRpZiAlfXslIGlmIGRhdGEuZXhjbHVkZV9j b25zdHJhaW50fGxlbmd0aCA+IDAgJX17JSBpZiBkYXRhLmNvbHVtbnN8bGVu Z3RoID4gMCBvciBkYXRhLnByaW1hcnlfa2V5fGxlbmd0aCA+IDAgb3IgZGF0 YS51bmlxdWVfY29uc3RyYWludHxsZW5ndGggPiAwIG9yIGRhdGEuZm9yZWln bl9rZXl8bGVuZ3RoID4gMCBvciBkYXRhLmNoZWNrX2NvbnN0cmFpbnR8bGVu Z3RoID4gMCAlfSx7JSBlbmRpZiAlfQore3tDT05TVFJBSU5UUy5FWENMVURF KGNvbm4sIGRhdGEuZXhjbHVkZV9jb25zdHJhaW50KX19eyUgZW5kaWYgJX0K K3slIGlmIGRhdGEubGlrZV9yZWxhdGlvbiBvciBkYXRhLmNvbGxfaW5oZXJp dHMgb3IgZGF0YS5jb2x1bW5zfGxlbmd0aCA+IDAgb3IgZGF0YS5wcmltYXJ5 X2tleXxsZW5ndGggPiAwIG9yIGRhdGEudW5pcXVlX2NvbnN0cmFpbnR8bGVu Z3RoID4gMCBvciBkYXRhLmZvcmVpZ25fa2V5fGxlbmd0aCA+IDAgb3IgZGF0 YS5jaGVja19jb25zdHJhaW50fGxlbmd0aCA+IDAgb3IgZGF0YS5leGNsdWRl X2NvbnN0cmFpbnR8bGVuZ3RoID4gMCAlfQorCispCit7JSBlbmRpZiAlfQor eyMjIyBJZiB3ZSBhcmUgaW5oZXJpdGluZyBpdCBmcm9tIGFub3RoZXIgdGFi bGUocykgIyMjfQoreyUgaWYgZGF0YS5jb2xsX2luaGVyaXRzICV9CisgICAg SU5IRVJJVFMgKHslIGZvciB2YWwgaW4gZGF0YS5jb2xsX2luaGVyaXRzICV9 eyUgaWYgbG9vcC5pbmRleCAhPSAxICV9LCB7JSBlbmRpZiAlfXt7dmFsfX17 JSBlbmRmb3IgJX0pCit7JSBlbmRpZiAlfQorV0lUSCAoCisgICAgT0lEUyA9 IHslIGlmIGRhdGEucmVsaGFzb2lkcyAlfVRSVUV7JSBlbHNlICV9RkFMU0V7 JSBlbmRpZiAlfXslIGlmIGRhdGEuZmlsbGZhY3RvciAlfSwKKyAgICBGSUxM RkFDVE9SID0ge3sgZGF0YS5maWxsZmFjdG9yIH19eyUgZW5kaWYgJX17JSBp ZiBkYXRhLmF1dG92YWN1dW1fY3VzdG9tICV9LAorICAgIGF1dG92YWN1dW1f ZW5hYmxlZCA9IHslIGlmIGRhdGEuYXV0b3ZhY3V1bV9lbmFibGVkICV9VFJV RXslIGVsc2UgJX1GQUxTRXslIGVuZGlmICV9eyUgZW5kaWYgJX17JSBpZiBk YXRhLnRvYXN0X2F1dG92YWN1dW0gJX0sCisgICAgdG9hc3QuYXV0b3ZhY3V1 bV9lbmFibGVkID0geyUgaWYgZGF0YS50b2FzdF9hdXRvdmFjdXVtX2VuYWJs ZWQgJX1UUlVFeyUgZWxzZSAlfUZBTFNFeyUgZW5kaWYgJX0KK3slIGVuZGlm ICV9eyUgaWYgZGF0YS5hdXRvdmFjdXVtX2VuYWJsZWQgYW5kIGRhdGEudmFj dXVtX3RhYmxlfGxlbmd0aCA+IDAgJX0KK3slIGZvciBvcHQgaW4gZGF0YS52 YWN1dW1fdGFibGUgJX17JSBpZiBvcHQubmFtZSBhbmQgb3B0LnZhbHVlICV9 CissCisgICAge3tvcHQubmFtZX19ID0ge3tvcHQudmFsdWV9fXslIGVuZGlm ICV9Cit7JSBlbmRmb3IgJX17JSBlbmRpZiAlfXslIGlmIGRhdGEudG9hc3Rf YXV0b3ZhY3V1bV9lbmFibGVkIGFuZCBkYXRhLnZhY3V1bV90b2FzdHxsZW5n dGggPiAwICV9Cit7JSBmb3Igb3B0IGluIGRhdGEudmFjdXVtX3RvYXN0ICV9 eyUgaWYgb3B0Lm5hbWUgYW5kIG9wdC52YWx1ZSAlfQorLAorICAgIHRvYXN0 Lnt7b3B0Lm5hbWV9fSA9IHt7b3B0LnZhbHVlfX17JSBlbmRpZiAlfQoreyUg ZW5kZm9yICV9eyUgZW5kaWYgJX0KKworKQoreyMjIyBTUUwgZm9yIFRhYmxl c3BhY2UgIyMjfQoreyUgaWYgZGF0YS5zcGNuYW1lICV9CitUQUJMRVNQQUNF IHt7IGNvbm58cXRJZGVudChkYXRhLnNwY25hbWUpIH19OworeyUgZW5kaWYg JX0KK3sjIyMgQWx0ZXIgU1FMIGZvciBPd25lciAjIyN9Cit7JSBpZiBkYXRh LnJlbG93bmVyICV9CisKK0FMVEVSIFRBQkxFIHt7Y29ubnxxdElkZW50KGRh dGEuc2NoZW1hLCBkYXRhLm5hbWUpfX0KKyAgICBPV05FUiB0byB7e2Nvbm58 cXRJZGVudChkYXRhLnJlbG93bmVyKX19OworeyUgZW5kaWYgJX0KK3sjIyMg U2VjdXJpdHkgTGFiZWxzIG9uIFRhYmxlICMjI30KK3slIGlmIGRhdGEuc2Vj bGFiZWxzIGFuZCBkYXRhLnNlY2xhYmVsc3xsZW5ndGggPiAwICV9CisKK3sl IGZvciByIGluIGRhdGEuc2VjbGFiZWxzICV9Cit7eyBTRUNMQUJMRS5TRVQo Y29ubiwgJ1RBQkxFJywgZGF0YS5uYW1lLCByLnByb3ZpZGVyLCByLmxhYmVs LCBkYXRhLnNjaGVtYSkgfX0KK3slIGVuZGZvciAlfQoreyUgZW5kaWYgJX0K K3sjIyMgIEFDTCBvbiBUYWJsZSAjIyN9Cit7JSBpZiBkYXRhLnJlbGFjbCAl fQorCit7JSBmb3IgcHJpdiBpbiBkYXRhLnJlbGFjbCAlfQore3sgUFJJVklM RUdFLlNFVChjb25uLCAnVEFCTEUnLCBwcml2LmdyYW50ZWUsIGRhdGEubmFt ZSwgcHJpdi53aXRob3V0X2dyYW50LCBwcml2LndpdGhfZ3JhbnQsIGRhdGEu c2NoZW1hKSB9fQoreyUgZW5kZm9yICV9Cit7JSBlbmRpZiAlfQoreyMjIyBT UUwgZm9yIENPTU1FTlQgIyMjfQoreyUgaWYgZGF0YS5kZXNjcmlwdGlvbiAl fQorQ09NTUVOVCBPTiBUQUJMRSB7e2Nvbm58cXRJZGVudChkYXRhLnNjaGVt YSwgZGF0YS5uYW1lKX19CisgICAgSVMge3tkYXRhLmRlc2NyaXB0aW9ufHF0 TGl0ZXJhbH19OworeyUgZW5kaWYgJX0KK3sjPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PSN9Cit7Iz09PT09PSBNQUlOIFRB QkxFIFRFTVBMQVRFIEVORFMgSEVSRSA9PT09PT0jfQoreyM9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09I30KK3sjPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSN9Cit7IyAg Q09MVU1OIFNQRUNJRklDIFRFTVBMQVRFUyBTVEFSVFMgSEVSRSAgICAjfQor eyM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 I30KK3slIGlmIGRhdGEuY29sdW1ucyBhbmQgZGF0YS5jb2x1bW5zfGxlbmd0 aCA+IDAgJX0KK3slIGZvciBjIGluIGRhdGEuY29sdW1ucyAlfQoreyUgaWYg Yy5kZXNjcmlwdGlvbiAlfQorCitDT01NRU5UIE9OIENPTFVNTiB7e2Nvbm58 cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0YS5uYW1lLCBjLm5hbWUpfX0KKyAg ICBJUyB7e2MuZGVzY3JpcHRpb258cXRMaXRlcmFsfX07Cit7JSBlbmRpZiAl fQoreyMjIyAgQWRkIHZhcmlhYmxlcyB0byBjb2x1bW4gIyMjfQoreyUgaWYg Yy5hdHRvcHRpb25zIGFuZCBjLmF0dG9wdGlvbnN8bGVuZ3RoID4gMCAlfQor CitBTFRFUiBUQUJMRSB7e2Nvbm58cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0 YS5uYW1lKX19CisgICAge3sgVkFSSUFCTEUuU0VUKGNvbm4sICdDT0xVTU4n LCBjLm5hbWUsIGMuYXR0b3B0aW9ucykgfX0KK3slIGVuZGlmICV9Cit7IyMj ICBBQ0wgIyMjfQoreyUgaWYgYy5hdHRhY2wgYW5kIGMuYXR0YWNsfGxlbmd0 aCA+IDAgJX0KKworeyUgZm9yIHByaXYgaW4gYy5hdHRhY2wgJX0KKyAgICB7 eyBDT0xVTU5fUFJJVklMRUdFLkFQUExZKGNvbm4sIGRhdGEuc2NoZW1hLCBk YXRhLm5hbWUsIGMubmFtZSwgcHJpdi5ncmFudGVlLCBwcml2LndpdGhvdXRf Z3JhbnQsIHByaXYud2l0aF9ncmFudCkgfX0KK3slIGVuZGZvciAlfQoreyUg ZW5kaWYgJX0KK3sjIyMgIFNlY3VyaXR5IExhYmxlcyAjIyN9Cit7JSBpZiBj LnNlY2xhYmVscyBhbmQgYy5zZWNsYWJlbHN8bGVuZ3RoID4gMCAlfQorCit7 JSBmb3IgciBpbiBjLnNlY2xhYmVscyAlfQore3sgQ09MVU1OX1NFQ0xBQkxF LkFQUExZKGNvbm4sICdDT0xVTU4nLGRhdGEuc2NoZW1hLCBkYXRhLm5hbWUs IGMubmFtZSwgci5wcm92aWRlciwgci5sYWJlbCkgfX0KK3slIGVuZGZvciAl fQoreyUgZW5kaWYgJX0KK3slIGVuZGZvciAlfQoreyUgZW5kaWYgJX0KK3sj PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSN9 Cit7IyAgIENPTFVNTiBTUEVDSUZJQyBURU1QTEFURVMgRU5EUyBIRVJFICAg ICAjfQoreyM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09I30KK3sjPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0jfQoreyMgICBDT05TVFJBSU5UUyBTUEVDSUZJQyBURU1QTEFURVMg ICAgICN9Cit7Iz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09I30KK3t7Q09OU1RSQUlOVFMuQ09OU1RSQUlOVF9DT01NRU5UUyhjb25u LCBkYXRhLnNjaGVtYSwgZGF0YS5uYW1lLCBkYXRhLnByaW1hcnlfa2V5KX19 Cit7e0NPTlNUUkFJTlRTLkNPTlNUUkFJTlRfQ09NTUVOVFMoY29ubiwgZGF0 YS5zY2hlbWEsIGRhdGEubmFtZSwgZGF0YS51bmlxdWVfY29uc3RyYWludCl9 fQore3tDT05TVFJBSU5UUy5DT05TVFJBSU5UX0NPTU1FTlRTKGNvbm4sIGRh dGEuc2NoZW1hLCBkYXRhLm5hbWUsIGRhdGEuZm9yZWlnbl9rZXkpfX0KK3t7 Q09OU1RSQUlOVFMuQ09OU1RSQUlOVF9DT01NRU5UUyhjb25uLCBkYXRhLnNj aGVtYSwgZGF0YS5uYW1lLCBkYXRhLmNoZWNrX2NvbnN0cmFpbnQpfX0KK3t7 Q09OU1RSQUlOVFMuQ09OU1RSQUlOVF9DT01NRU5UUyhjb25uLCBkYXRhLnNj aGVtYSwgZGF0YS5uYW1lLCBkYXRhLmV4Y2x1ZGVfY29uc3RyYWludCl9fQpc IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvdGFibGUvc3FsLzkuNV9wbHVz L2RlbGV0ZS5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVz L3RhYmxlL3NxbC85LjVfcGx1cy9kZWxldGUuc3FsCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxZDAzMTQKLS0tIC9kZXYvbnVsbAor KysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3RhYmxlL3Nx bC85LjVfcGx1cy9kZWxldGUuc3FsCkBAIC0wLDAgKzEgQEAKK0RST1AgVEFC TEUge3tjb25ufHF0SWRlbnQoZGF0YS5zY2hlbWEsIGRhdGEubmFtZSl9fXsl IGlmIGNhc2NhZGUgJX0gQ0FTQ0FERXslIGVuZGlmICV9OwpcIE5vIG5ld2xp bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L3RhYmxlcy90ZW1wbGF0ZXMvdGFibGUvc3FsLzkuNV9wbHVzL2RlcGVuZC5z cWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3RhYmxlL3Nx bC85LjVfcGx1cy9kZXBlbmQuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAuLmY1ZjM5ZTcKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3RhYmxlL3NxbC85LjVfcGx1 cy9kZXBlbmQuc3FsCkBAIC0wLDAgKzEsOSBAQAorU0VMRUNUCisgICAgcmVm LnJlbG5hbWUgQVMgcmVmbmFtZSwgZDIucmVmY2xhc3NpZCwgZGVwLmRlcHR5 cGUgQVMgZGVwdHlwZQorRlJPTSBwZ19kZXBlbmQgZGVwCisgICAgTEVGVCBK T0lOIHBnX2RlcGVuZCBkMiBPTiBkZXAub2JqaWQ9ZDIub2JqaWQgQU5EIGRl cC5yZWZvYmppZCAhPSBkMi5yZWZvYmppZAorICAgIExFRlQgSk9JTiBwZ19j bGFzcyByZWYgT04gcmVmLm9pZD1kMi5yZWZvYmppZAorICAgIExFRlQgSk9J TiBwZ19hdHRyaWJ1dGUgYXR0IE9OIGQyLnJlZmNsYXNzaWQ9YXR0LmF0dHJl bGlkIEFORCBkMi5yZWZvYmpzdWJpZD1hdHQuYXR0bnVtCisgICAge3sgd2hl cmUgfX0gQU5ECisgICAgZGVwLmNsYXNzaWQ9KFNFTEVDVCBvaWQgRlJPTSBw Z19jbGFzcyBXSEVSRSByZWxuYW1lPSdwZ19hdHRyZGVmJykgQU5ECisgICAg ZGVwLnJlZm9iamlkIE5PVCBJTiAoU0VMRUNUIGQzLnJlZm9iamlkIEZST00g cGdfZGVwZW5kIGQzIFdIRVJFIGQzLm9iamlkPWQyLnJlZm9iamlkKQpcIE5v IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvdGFibGUvc3FsLzkuNV9wbHVzL2Vu YWJsZV9kaXNhYmxlX3RyaWdnZXIuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFi bGVzL3RlbXBsYXRlcy90YWJsZS9zcWwvOS41X3BsdXMvZW5hYmxlX2Rpc2Fi bGVfdHJpZ2dlci5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMC4uYTRhYjE1NAotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL3RhYmxlcy90ZW1wbGF0ZXMvdGFibGUvc3FsLzkuNV9wbHVzL2VuYWJs ZV9kaXNhYmxlX3RyaWdnZXIuc3FsCkBAIC0wLDAgKzEsMiBAQAorQUxURVIg VEFCTEUge3sgY29ubnxxdElkZW50KGRhdGEuc2NoZW1hLCBkYXRhLm5hbWUp IH19CisgICAgeyUgaWYgaXNfZW5hYmxlX3RyaWdnZXIgPT0gVHJ1ZSAlfUVO QUJMRXslIGVsc2UgJX1ESVNBQkxFeyUgZW5kaWYgJX0gVFJJR0dFUiBBTEw7 ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy90YWJsZS9zcWwvOS41X3Bs dXMvZ2V0X2NvbHVtbnNfZm9yX3RhYmxlLnNxbCBiL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L3RhYmxlcy90ZW1wbGF0ZXMvdGFibGUvc3FsLzkuNV9wbHVzL2dldF9jb2x1 bW5zX2Zvcl90YWJsZS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMC4uM2Q2YmJiNwotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvdGFibGUvc3FsLzkuNV9wbHVzL2dl dF9jb2x1bW5zX2Zvcl90YWJsZS5zcWwKQEAgLTAsMCArMSwxNiBAQAorU0VM RUNUCisgICAgYS5hdHRuYW1lIEFTIG5hbWUsIGZvcm1hdF90eXBlKGEuYXR0 dHlwaWQsIE5VTEwpIEFTIGNsdHlwZSwKKyAgICBxdW90ZV9pZGVudChuLm5z cG5hbWUpfHwnLid8fHF1b3RlX2lkZW50KGMucmVsbmFtZSkgYXMgaW5oZXJp dGVkZnJvbSwKKyAgICBjLm9pZCBhcyBpbmhlcml0ZWRpZAorRlJPTQorICAg IHBnX2NsYXNzIGMKK0pPSU4KKyAgICBwZ19uYW1lc3BhY2UgbiBPTiBjLnJl bG5hbWVzcGFjZT1uLm9pZAorSk9JTgorICAgIHBnX2F0dHJpYnV0ZSBhIE9O IGEuYXR0cmVsaWQgPSBjLm9pZCBBTkQgTk9UIGEuYXR0aXNkcm9wcGVkIEFO RCBhLmF0dG51bSA+IDAKK1dIRVJFCit7JSBpZiB0aWQgJX0KKyAgICBjLm9p ZCA9IHt7dGlkfX06Ok9JRAoreyUgZWxzZSAlfQorICAgIGMucmVsbmFtZSA9 IHt7dG5hbWV8cXRMaXRlcmFsfX0KK3slIGVuZGlmICV9ClwgTm8gbmV3bGlu ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv dGFibGVzL3RlbXBsYXRlcy90YWJsZS9zcWwvOS41X3BsdXMvZ2V0X2luaGVy aXRzLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvdGFi bGUvc3FsLzkuNV9wbHVzL2dldF9pbmhlcml0cy5zcWwKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTBmOWExZAotLS0gL2Rldi9udWxs CisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvdGFibGUv c3FsLzkuNV9wbHVzL2dldF9pbmhlcml0cy5zcWwKQEAgLTAsMCArMSwxMyBA QAorU0VMRUNUIGMub2lkLCBjLnJlbG5hbWUgLCBuc3BuYW1lLAorQ0FTRSBX SEVOIChuc3BuYW1lIE5PVCBMSUtFIEUncGdcXyUnIEFORCBuc3BuYW1lIDw+ ICdwdWJsaWMnKSBUSEVOCisgcXVvdGVfaWRlbnQobnNwbmFtZSl8fCcuJ3x8 cXVvdGVfaWRlbnQoYy5yZWxuYW1lKQorRUxTRSBxdW90ZV9pZGVudChjLnJl bG5hbWUpCitFTkQgQVMgaW5oZXJpdHMKK0ZST00gcGdfY2xhc3MgYworSk9J TiBwZ19uYW1lc3BhY2UgbgorT04gbi5vaWQ9Yy5yZWxuYW1lc3BhY2UKK1dI RVJFIHJlbGtpbmQ9J3InCit7JSBpZiBub3Qgc2hvd19zeXN0ZW1fb2JqZWN0 cyAlfQorQU5EIChuLm5zcG5hbWUgTk9UIExJS0UgRSdwZ1xfJScgQU5EIG4u bnNwbmFtZSBOT1QgaW4gKCdpbmZvcm1hdGlvbl9zY2hlbWEnKSkKK3slIGVu ZGlmICV9CitPUkRFUiBCWSByZWxuYW1lc3BhY2UsIGMucmVsbmFtZQpcIE5v IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvdGFibGUvc3FsLzkuNV9wbHVzL2dl dF9vZnR5cGUuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRl cy90YWJsZS9zcWwvOS41X3BsdXMvZ2V0X29mdHlwZS5zcWwKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWVkNDJmMgotLS0gL2Rldi9u dWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvdGFi bGUvc3FsLzkuNV9wbHVzL2dldF9vZnR5cGUuc3FsCkBAIC0wLDAgKzEsNiBA QAorU0VMRUNUIHQub2lkLAorICBxdW90ZV9pZGVudChuLm5zcG5hbWUpfHwn Lid8fHF1b3RlX2lkZW50KHQudHlwbmFtZSkgQVMgdHlwbmFtZQorICBGUk9N IHBnX3R5cGUgdCwgcGdfbmFtZXNwYWNlIG4KK1dIRVJFIHQudHlwdHlwZT0n YycgQU5EIHQudHlwbmFtZXNwYWNlPW4ub2lkCisgIEFORCBOT1QgKG4ubnNw bmFtZSBsaWtlICdwZ18lJyBPUiBuLm5zcG5hbWU9J2luZm9ybWF0aW9uX3Nj aGVtYScpCitPUkRFUiBCWSB0eXBuYW1lOwpcIE5vIG5ld2xpbmUgYXQgZW5k IG9mIGZpbGUKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90 ZW1wbGF0ZXMvdGFibGUvc3FsLzkuNV9wbHVzL2dldF9vaWQuc3FsIGIvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy90YWJsZS9zcWwvOS41X3Bs dXMvZ2V0X29pZC5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMC4uZTlkYzc3MgotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL3RhYmxlcy90ZW1wbGF0ZXMvdGFibGUvc3FsLzkuNV9wbHVzL2dldF9v aWQuc3FsCkBAIC0wLDAgKzEsNSBAQAorU0VMRUNUIHJlbC5vaWQgYXMgdGlk CitGUk9NIHBnX2NsYXNzIHJlbAorV0hFUkUgcmVsLnJlbGtpbmQgSU4gKCdy JywncycsJ3QnKQorQU5EIHJlbC5yZWxuYW1lc3BhY2UgPSB7eyBzY2lkIH19 OjpvaWQKK0FORCByZWwucmVsbmFtZSA9IHt7ZGF0YS5uYW1lfHF0TGl0ZXJh bH19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy90YWJsZS9zcWwvOS41 X3BsdXMvZ2V0X3JlbGF0aW9ucy5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJs ZXMvdGVtcGxhdGVzL3RhYmxlL3NxbC85LjVfcGx1cy9nZXRfcmVsYXRpb25z LnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MzFl ZTg4Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVz L3RlbXBsYXRlcy90YWJsZS9zcWwvOS41X3BsdXMvZ2V0X3JlbGF0aW9ucy5z cWwKQEAgLTAsMCArMSw2IEBACitTRUxFQ1QgYy5vaWQsIHF1b3RlX2lkZW50 KG4ubnNwbmFtZSl8fCcuJ3x8cXVvdGVfaWRlbnQoYy5yZWxuYW1lKSBBUyBs aWtlX3JlbGF0aW9uCitGUk9NIHBnX2NsYXNzIGMsIHBnX25hbWVzcGFjZSBu CitXSEVSRSBjLnJlbG5hbWVzcGFjZT1uLm9pZAorQU5ECitjLnJlbGtpbmQg SU4gKCdyJywgJ3YnLCAnZicpCitPUkRFUiBCWSAxOwpcIE5vIG5ld2xpbmUg YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3Rh Ymxlcy90ZW1wbGF0ZXMvdGFibGUvc3FsLzkuNV9wbHVzL2dldF90YWJsZXNf Zm9yX2NvbnN0cmFpbnRzLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90 ZW1wbGF0ZXMvdGFibGUvc3FsLzkuNV9wbHVzL2dldF90YWJsZXNfZm9yX2Nv bnN0cmFpbnRzLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwLi4xMzYyNDYzCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvdGFibGVzL3RlbXBsYXRlcy90YWJsZS9zcWwvOS41X3BsdXMvZ2V0X3Rh Ymxlc19mb3JfY29uc3RyYWludHMuc3FsCkBAIC0wLDAgKzEsOCBAQAorU0VM RUNUIGNsLm9pZCBhcyB2YWx1ZSwgcXVvdGVfaWRlbnQobnNwbmFtZSl8fCcu J3x8cXVvdGVfaWRlbnQocmVsbmFtZSkgQVMgbGFiZWwKK0ZST00gcGdfbmFt ZXNwYWNlIG5zcCwgcGdfY2xhc3MgY2wKK1dIRVJFIHJlbG5hbWVzcGFjZT1u c3Aub2lkIEFORCByZWxraW5kPSdyJworICAgQU5EIG5zcC5uc3BuYW1lIE5P VCBMSUtFIEUncGdcX3RlbXBcXyUnCisgICB7JSBpZiBub3Qgc2hvd19zeXNv YmogJX0KKyAgIEFORCAobnNwLm5zcG5hbWUgTk9UIExJS0UgRSdwZ1xfJScg QU5EIG5zcC5uc3BuYW1lIE5PVCBpbiAoJ2luZm9ybWF0aW9uX3NjaGVtYScp KQorICAgeyUgZW5kaWYgJX0KK09SREVSIEJZIG5zcG5hbWUsIHJlbG5hbWUK XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3RhYmxlL3NxbC85LjVfcGx1 cy9nZXRfdHlwZXNfd2hlcmVfY29uZGl0aW9uLnNxbCBiL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL3RhYmxlcy90ZW1wbGF0ZXMvdGFibGUvc3FsLzkuNV9wbHVzL2dldF90 eXBlc193aGVyZV9jb25kaXRpb24uc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAuLmZhZGZjOTkKLS0tIC9kZXYvbnVsbAorKysgYi93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3RhYmxlL3NxbC85LjVf cGx1cy9nZXRfdHlwZXNfd2hlcmVfY29uZGl0aW9uLnNxbApAQCAtMCwwICsx LDEwIEBACit7IyMjIEFkZGl0aW9uYWwgd2hlcmUgY29uZGl0aW9uIGZvciBn ZXRfdHlwZXMgcm91dGUgZm9yIGNvbHVtbiBub2RlICMjI30KK3R5cGlzZGVm aW5lZCBBTkQgdHlwdHlwZSBJTiAoJ2InLCAnYycsICdkJywgJ2UnLCAncicp CitBTkQgTk9UIEVYSVNUUyAoU0VMRUNUIDEgRlJPTSBwZ19jbGFzcyBXSEVS RSByZWxuYW1lc3BhY2U9dHlwbmFtZXNwYWNlCitBTkQgcmVsbmFtZSA9IHR5 cG5hbWUgQU5EIHJlbGtpbmQgIT0gJ2MnKSBBTkQKKyh0eXBuYW1lIE5PVCBM SUtFICdfJScgT1IgTk9UIEVYSVNUUyAoU0VMRUNUIDEgRlJPTSBwZ19jbGFz cyBXSEVSRQorcmVsbmFtZXNwYWNlPXR5cG5hbWVzcGFjZSBBTkQgcmVsbmFt ZSA9IHN1YnN0cmluZyh0eXBuYW1lIEZST00gMik6Om5hbWUKK0FORCByZWxr aW5kICE9ICdjJykpCit7JSBpZiBub3Qgc2hvd19zeXN0ZW1fb2JqZWN0cyAl fQorQU5EIG5zcC5uc3BuYW1lICE9ICdpbmZvcm1hdGlvbl9zY2hlbWEnCit7 JSBlbmRpZiAlfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt LWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvdGFibGUv c3FsLzkuNV9wbHVzL25vZGVzLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxl cy90ZW1wbGF0ZXMvdGFibGUvc3FsLzkuNV9wbHVzL25vZGVzLnNxbApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40M2YxNGNiCi0tLSAv ZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRl cy90YWJsZS9zcWwvOS41X3BsdXMvbm9kZXMuc3FsCkBAIC0wLDAgKzEsNiBA QAorU0VMRUNUIHJlbC5vaWQsIHJlbC5yZWxuYW1lIEFTIG5hbWUsCisgICAg KFNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3RyaWdnZXIgV0hFUkUgdGdyZWxp ZD1yZWwub2lkIEFORCB0Z2lzaW50ZXJuYWwgPSBGQUxTRSkgQVMgdHJpZ2dl cmNvdW50LAorICAgIChTRUxFQ1QgY291bnQoKikgRlJPTSBwZ190cmlnZ2Vy IFdIRVJFIHRncmVsaWQ9cmVsLm9pZCBBTkQgdGdpc2ludGVybmFsID0gRkFM U0UgQU5EIHRnZW5hYmxlZCA9ICdPJykgQVMgaGFzX2VuYWJsZV90cmlnZ2Vy cworRlJPTSBwZ19jbGFzcyByZWwKKyAgICBXSEVSRSByZWwucmVsa2luZCBJ TiAoJ3InLCdzJywndCcpIEFORCByZWwucmVsbmFtZXNwYWNlID0ge3sgc2Np ZCB9fTo6b2lkCisgICAgT1JERVIgQlkgcmVsLnJlbG5hbWU7ClwgTm8gbmV3 bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvdGFibGVzL3RlbXBsYXRlcy90YWJsZS9zcWwvOS41X3BsdXMvcHJvcGVy dGllcy5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3Rh YmxlL3NxbC85LjVfcGx1cy9wcm9wZXJ0aWVzLnNxbApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi45OTcyN2M5Ci0tLSAvZGV2L251bGwK KysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy90YWJsZS9z cWwvOS41X3BsdXMvcHJvcGVydGllcy5zcWwKQEAgLTAsMCArMSw2NSBAQAor U0VMRUNUIHJlbC5vaWQsIHJlbC5yZWxuYW1lIEFTIG5hbWUsIHJlbC5yZWx0 YWJsZXNwYWNlIEFTIHNwY29pZCxyZWwucmVsYWNsIEFTIHJlbGFjbF9zdHIs CisgIChDQVNFIFdIRU4gbGVuZ3RoKHNwYy5zcGNuYW1lKSA+IDAgVEhFTiBz cGMuc3BjbmFtZSBFTFNFICdwZ19kZWZhdWx0JyBFTkQpIGFzIHNwY25hbWUs CisgIChzZWxlY3QgbnNwbmFtZSBGUk9NIHBnX25hbWVzcGFjZSBXSEVSRSBv aWQgPSB7e3NjaWR9fTo6b2lkICkgYXMgc2NoZW1hLAorICBwZ19nZXRfdXNl cmJ5aWQocmVsLnJlbG93bmVyKSBBUyByZWxvd25lciwgcmVsLnJlbGhhc29p ZHMsCisgIHJlbC5yZWxoYXNzdWJjbGFzcywgcmVsLnJlbHR1cGxlcywgZGVz LmRlc2NyaXB0aW9uLCBjb24uY29ubmFtZSwgY29uLmNvbmtleSwKKwlFWElT VFMoc2VsZWN0IDEgRlJPTSBwZ190cmlnZ2VyCisJCQlKT0lOIHBnX3Byb2Mg cHQgT04gcHQub2lkPXRnZm9pZCBBTkQgcHQucHJvbmFtZT0nbG9ndHJpZ2dl cicKKwkJCUpPSU4gcGdfcHJvYyBwYyBPTiBwYy5wcm9uYW1lc3BhY2U9cHQu cHJvbmFtZXNwYWNlIEFORCBwYy5wcm9uYW1lPSdzbG9ueXZlcnNpb24nCisJ CQlXSEVSRSB0Z3JlbGlkPXJlbC5vaWQpIEFTIGlzcmVwbCwKKwkoU0VMRUNU IGNvdW50KCopIEZST00gcGdfdHJpZ2dlciBXSEVSRSB0Z3JlbGlkPXJlbC5v aWQgQU5EIHRnaXNpbnRlcm5hbCA9IEZBTFNFKSBBUyB0cmlnZ2VyY291bnQs CisJKFNFTEVDVCBBUlJBWShTRUxFQ1QgQ0FTRSBXSEVOIChuc3BuYW1lIE5P VCBMSUtFIEUncGdcXyUnIEFORCBuc3BuYW1lIDw+ICdwdWJsaWMnKSBUSEVO CisgICAgICAgICAgICBxdW90ZV9pZGVudChuc3BuYW1lKXx8Jy4nfHxxdW90 ZV9pZGVudChjLnJlbG5hbWUpCisgICAgICAgICAgICBFTFNFIHF1b3RlX2lk ZW50KGMucmVsbmFtZSkgRU5EIEFTIGluaGVyaXRlZF90YWJsZXMKKyAgICBG Uk9NIHBnX2luaGVyaXRzIGkKKyAgICBKT0lOIHBnX2NsYXNzIGMgT04gYy5v aWQgPSBpLmluaHBhcmVudAorICAgIEpPSU4gcGdfbmFtZXNwYWNlIG4gT04g bi5vaWQ9Yy5yZWxuYW1lc3BhY2UKKyAgICBXSEVSRSBpLmluaHJlbGlkID0g cmVsLm9pZCBPUkRFUiBCWSBpbmhzZXFubykpIEFTIGNvbGxfaW5oZXJpdHMs CisgIChTRUxFQ1QgY291bnQoKikKKwkJRlJPTSBwZ19pbmhlcml0cyBpCisg ICAgICBKT0lOIHBnX2NsYXNzIGMgT04gYy5vaWQgPSBpLmluaHBhcmVudAor ICAgICAgSk9JTiBwZ19uYW1lc3BhY2UgbiBPTiBuLm9pZD1jLnJlbG5hbWVz cGFjZQorCQlXSEVSRSBpLmluaHJlbGlkID0gcmVsLm9pZCkgQVMgaW5oZXJp dGVkX3RhYmxlc19jbnQsCisJKENBU0UgV0hFTiByZWwucmVscGVyc2lzdGVu Y2UgPSAndScgVEhFTiB0cnVlIEVMU0UgZmFsc2UgRU5EKSBBUyByZWxwZXJz aXN0ZW5jZSwKKwlzdWJzdHJpbmcoYXJyYXlfdG9fc3RyaW5nKHJlbC5yZWxv cHRpb25zLCAnLCcpIEZST00gJ2ZpbGxmYWN0b3I9KFswLTldKiknKSBBUyBm aWxsZmFjdG9yLAorCShDQVNFIFdIRU4gKHN1YnN0cmluZyhhcnJheV90b19z dHJpbmcocmVsLnJlbG9wdGlvbnMsICcsJykgRlJPTSAnYXV0b3ZhY3V1bV9l bmFibGVkPShbYS16fDAtOV0qKScpID0gJ3RydWUnKQorCSAgVEhFTiB0cnVl IEVMU0UgZmFsc2UgRU5EKSBBUyBhdXRvdmFjdXVtX2VuYWJsZWQsCisJc3Vi c3RyaW5nKGFycmF5X3RvX3N0cmluZyhyZWwucmVsb3B0aW9ucywgJywnKSBG Uk9NICdhdXRvdmFjdXVtX3ZhY3V1bV90aHJlc2hvbGQ9KFswLTldKiknKSBB UyBhdXRvdmFjdXVtX3ZhY3V1bV90aHJlc2hvbGQsCisJc3Vic3RyaW5nKGFy cmF5X3RvX3N0cmluZyhyZWwucmVsb3B0aW9ucywgJywnKSBGUk9NICdhdXRv dmFjdXVtX3ZhY3V1bV9zY2FsZV9mYWN0b3I9KFswLTldKlsuXVswLTldKikn KSBBUyBhdXRvdmFjdXVtX3ZhY3V1bV9zY2FsZV9mYWN0b3IsCisJc3Vic3Ry aW5nKGFycmF5X3RvX3N0cmluZyhyZWwucmVsb3B0aW9ucywgJywnKSBGUk9N ICdhdXRvdmFjdXVtX2FuYWx5emVfdGhyZXNob2xkPShbMC05XSopJykgQVMg YXV0b3ZhY3V1bV9hbmFseXplX3RocmVzaG9sZCwKKwlzdWJzdHJpbmcoYXJy YXlfdG9fc3RyaW5nKHJlbC5yZWxvcHRpb25zLCAnLCcpIEZST00gJ2F1dG92 YWN1dW1fYW5hbHl6ZV9zY2FsZV9mYWN0b3I9KFswLTldKlsuXVswLTldKikn KSBBUyBhdXRvdmFjdXVtX2FuYWx5emVfc2NhbGVfZmFjdG9yLAorCXN1YnN0 cmluZyhhcnJheV90b19zdHJpbmcocmVsLnJlbG9wdGlvbnMsICcsJykgRlJP TSAnYXV0b3ZhY3V1bV92YWN1dW1fY29zdF9kZWxheT0oWzAtOV0qKScpIEFT IGF1dG92YWN1dW1fdmFjdXVtX2Nvc3RfZGVsYXksCisJc3Vic3RyaW5nKGFy cmF5X3RvX3N0cmluZyhyZWwucmVsb3B0aW9ucywgJywnKSBGUk9NICdhdXRv dmFjdXVtX3ZhY3V1bV9jb3N0X2xpbWl0PShbMC05XSopJykgQVMgYXV0b3Zh Y3V1bV92YWN1dW1fY29zdF9saW1pdCwKKwlzdWJzdHJpbmcoYXJyYXlfdG9f c3RyaW5nKHJlbC5yZWxvcHRpb25zLCAnLCcpIEZST00gJ2F1dG92YWN1dW1f ZnJlZXplX21pbl9hZ2U9KFswLTldKiknKSBBUyBhdXRvdmFjdXVtX2ZyZWV6 ZV9taW5fYWdlLAorCXN1YnN0cmluZyhhcnJheV90b19zdHJpbmcocmVsLnJl bG9wdGlvbnMsICcsJykgRlJPTSAnYXV0b3ZhY3V1bV9mcmVlemVfbWF4X2Fn ZT0oWzAtOV0qKScpIEFTIGF1dG92YWN1dW1fZnJlZXplX21heF9hZ2UsCisJ c3Vic3RyaW5nKGFycmF5X3RvX3N0cmluZyhyZWwucmVsb3B0aW9ucywgJywn KSBGUk9NICdhdXRvdmFjdXVtX2ZyZWV6ZV90YWJsZV9hZ2U9KFswLTldKikn KSBBUyBhdXRvdmFjdXVtX2ZyZWV6ZV90YWJsZV9hZ2UsCisJKENBU0UgV0hF TiAoc3Vic3RyaW5nKGFycmF5X3RvX3N0cmluZyh0c3QucmVsb3B0aW9ucywg JywnKSBGUk9NICdhdXRvdmFjdXVtX2VuYWJsZWQ9KFthLXp8MC05XSopJykg PSAgJ3RydWUnKQorCSAgVEhFTiB0cnVlIEVMU0UgZmFsc2UgRU5EKSBBUyB0 b2FzdF9hdXRvdmFjdXVtX2VuYWJsZWQsCisJc3Vic3RyaW5nKGFycmF5X3Rv X3N0cmluZyh0c3QucmVsb3B0aW9ucywgJywnKSBGUk9NICdhdXRvdmFjdXVt X3ZhY3V1bV90aHJlc2hvbGQ9KFswLTldKiknKSBBUyB0b2FzdF9hdXRvdmFj dXVtX3ZhY3V1bV90aHJlc2hvbGQsCisJc3Vic3RyaW5nKGFycmF5X3RvX3N0 cmluZyh0c3QucmVsb3B0aW9ucywgJywnKSBGUk9NICdhdXRvdmFjdXVtX3Zh Y3V1bV9zY2FsZV9mYWN0b3I9KFswLTldKlsuXVswLTldKiknKSBBUyB0b2Fz dF9hdXRvdmFjdXVtX3ZhY3V1bV9zY2FsZV9mYWN0b3IsCisJc3Vic3RyaW5n KGFycmF5X3RvX3N0cmluZyh0c3QucmVsb3B0aW9ucywgJywnKSBGUk9NICdh dXRvdmFjdXVtX2FuYWx5emVfdGhyZXNob2xkPShbMC05XSopJykgQVMgdG9h c3RfYXV0b3ZhY3V1bV9hbmFseXplX3RocmVzaG9sZCwKKwlzdWJzdHJpbmco YXJyYXlfdG9fc3RyaW5nKHRzdC5yZWxvcHRpb25zLCAnLCcpIEZST00gJ2F1 dG92YWN1dW1fYW5hbHl6ZV9zY2FsZV9mYWN0b3I9KFswLTldKlsuXVswLTld KiknKSBBUyB0b2FzdF9hdXRvdmFjdXVtX2FuYWx5emVfc2NhbGVfZmFjdG9y LAorCXN1YnN0cmluZyhhcnJheV90b19zdHJpbmcodHN0LnJlbG9wdGlvbnMs ICcsJykgRlJPTSAnYXV0b3ZhY3V1bV92YWN1dW1fY29zdF9kZWxheT0oWzAt OV0qKScpIEFTIHRvYXN0X2F1dG92YWN1dW1fdmFjdXVtX2Nvc3RfZGVsYXks CisJc3Vic3RyaW5nKGFycmF5X3RvX3N0cmluZyh0c3QucmVsb3B0aW9ucywg JywnKSBGUk9NICdhdXRvdmFjdXVtX3ZhY3V1bV9jb3N0X2xpbWl0PShbMC05 XSopJykgQVMgdG9hc3RfYXV0b3ZhY3V1bV92YWN1dW1fY29zdF9saW1pdCwK KwlzdWJzdHJpbmcoYXJyYXlfdG9fc3RyaW5nKHRzdC5yZWxvcHRpb25zLCAn LCcpIEZST00gJ2F1dG92YWN1dW1fZnJlZXplX21pbl9hZ2U9KFswLTldKikn KSBBUyB0b2FzdF9hdXRvdmFjdXVtX2ZyZWV6ZV9taW5fYWdlLAorCXN1YnN0 cmluZyhhcnJheV90b19zdHJpbmcodHN0LnJlbG9wdGlvbnMsICcsJykgRlJP TSAnYXV0b3ZhY3V1bV9mcmVlemVfbWF4X2FnZT0oWzAtOV0qKScpIEFTIHRv YXN0X2F1dG92YWN1dW1fZnJlZXplX21heF9hZ2UsCisJc3Vic3RyaW5nKGFy cmF5X3RvX3N0cmluZyh0c3QucmVsb3B0aW9ucywgJywnKSBGUk9NICdhdXRv dmFjdXVtX2ZyZWV6ZV90YWJsZV9hZ2U9KFswLTldKiknKSBBUyB0b2FzdF9h dXRvdmFjdXVtX2ZyZWV6ZV90YWJsZV9hZ2UsCisJYXJyYXlfdG9fc3RyaW5n KHJlbC5yZWxvcHRpb25zLCAnLCcpIEFTIHRhYmxlX3ZhY3V1bV9zZXR0aW5n c19zdHIsCisJYXJyYXlfdG9fc3RyaW5nKHRzdC5yZWxvcHRpb25zLCAnLCcp IEFTIHRvYXN0X3RhYmxlX3ZhY3V1bV9zZXR0aW5nc19zdHIsCisJcmVsLnJl bG9wdGlvbnMgQVMgcmVsb3B0aW9ucywgdHN0LnJlbG9wdGlvbnMgQVMgdG9h c3RfcmVsb3B0aW9ucywgcmVsLnJlbG9mdHlwZSwgdHlwLnR5cG5hbWUsCisJ KENBU0UgV0hFTiByZWwucmVsdG9hc3RyZWxpZCA9IDAgVEhFTiBmYWxzZSBF TFNFIHRydWUgRU5EKSBBUyBoYXN0b2FzdHRhYmxlLAorICAgIC0tIEFkZGVk IGZvciBwZ0FkbWluNAorCShDQVNFIFdIRU4gKHN1YnN0cmluZyhhcnJheV90 b19zdHJpbmcocmVsLnJlbG9wdGlvbnMsICcsJykgRlJPTSAnYXV0b3ZhY3V1 bV9lbmFibGVkPShbYS16fDAtOV0qKScpKTo6Ym9vbGVhbiAgVEhFTiB0cnVl IEVMU0UgZmFsc2UgRU5EKSBBUyBhdXRvdmFjdXVtX2N1c3RvbSwKKwkoQ0FT RSBXSEVOIChzdWJzdHJpbmcoYXJyYXlfdG9fc3RyaW5nKHRzdC5yZWxvcHRp b25zLCAnLCcpIEZST00gJ2F1dG92YWN1dW1fZW5hYmxlZD0oW2EtenwwLTld KiknKSk6OmJvb2xlYW4gIEFORCByZWwucmVsdG9hc3RyZWxpZCAhPSAwIFRI RU4gdHJ1ZSBFTFNFIGZhbHNlIEVORCkgQVMgdG9hc3RfYXV0b3ZhY3V1bSwK KworCShTRUxFQ1QgYXJyYXlfYWdnKHByb3ZpZGVyIHx8ICc9JyB8fCBsYWJl bCkgRlJPTSBwZ19zZWNsYWJlbHMgc2wxIFdIRVJFIHNsMS5vYmpvaWQ9cmVs Lm9pZCBBTkQgc2wxLm9ianN1YmlkPTApIEFTIHNlY2xhYmVscywKKwkoQ0FT RSBXSEVOIHJlbC5vaWQgPD0ge3sgZGF0bGFzdHN5c29pZH19OjpvaWQgVEhF TiB0cnVlIEVsU0UgZmFsc2UgRU5EKSBBUyBpc19zeXNfdGFibGUKK0ZST00g cGdfY2xhc3MgcmVsCisgIExFRlQgT1VURVIgSk9JTiBwZ190YWJsZXNwYWNl IHNwYyBvbiBzcGMub2lkPXJlbC5yZWx0YWJsZXNwYWNlCisgIExFRlQgT1VU RVIgSk9JTiBwZ19kZXNjcmlwdGlvbiBkZXMgT04gKGRlcy5vYmpvaWQ9cmVs Lm9pZCBBTkQgZGVzLm9ianN1YmlkPTAgQU5EIGRlcy5jbGFzc29pZD0ncGdf Y2xhc3MnOjpyZWdjbGFzcykKKyAgTEVGVCBPVVRFUiBKT0lOIHBnX2NvbnN0 cmFpbnQgY29uIE9OIGNvbi5jb25yZWxpZD1yZWwub2lkIEFORCBjb24uY29u dHlwZT0ncCcKKyAgTEVGVCBPVVRFUiBKT0lOIHBnX2NsYXNzIHRzdCBPTiB0 c3Qub2lkID0gcmVsLnJlbHRvYXN0cmVsaWQKKyAgTEVGVCBKT0lOIHBnX3R5 cGUgdHlwIE9OIHJlbC5yZWxvZnR5cGU9dHlwLm9pZAorV0hFUkUgcmVsLnJl bGtpbmQgSU4gKCdyJywncycsJ3QnKSBBTkQgcmVsLnJlbG5hbWVzcGFjZSA9 IHt7IHNjaWQgfX06Om9pZAoreyUgaWYgdGlkICV9ICBBTkQgcmVsLm9pZCA9 IHt7IHRpZCB9fTo6b2lkIHslIGVuZGlmICV9CitPUkRFUiBCWSByZWwucmVs bmFtZTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg YS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3RhYmxlL3NxbC85 LjVfcGx1cy9yZXNldF9zdGF0cy5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJs ZXMvdGVtcGxhdGVzL3RhYmxlL3NxbC85LjVfcGx1cy9yZXNldF9zdGF0cy5z cWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzZlY2Ew ZAotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90 ZW1wbGF0ZXMvdGFibGUvc3FsLzkuNV9wbHVzL3Jlc2V0X3N0YXRzLnNxbApA QCAtMCwwICsxIEBACitTRUxFQ1QgcGdfc3RhdF9yZXNldF9zaW5nbGVfdGFi bGVfY291bnRlcnMoe3t0aWR9fSkKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm aWxlCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxh dGVzL3RhYmxlL3NxbC85LjVfcGx1cy9zcWwuc3FsIGIvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvdGFibGVzL3RlbXBsYXRlcy90YWJsZS9zcWwvOS41X3BsdXMvc3FsLnNx bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xN2IzNWFl Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3Rl bXBsYXRlcy90YWJsZS9zcWwvOS41X3BsdXMvc3FsLnNxbApAQCAtMCwwICsx IEBACitUQUtFIEFTSEVTSCdTIEhFTFAgT04gVEhJUyBUQVNLIDotKQpcIE5v IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvdGFibGUvc3FsLzkuNV9wbHVzL3Ry dW5jYXRlLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMv dGFibGUvc3FsLzkuNV9wbHVzL3RydW5jYXRlLnNxbApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi42YTI3NmYzCi0tLSAvZGV2L251bGwK KysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy90YWJsZS9z cWwvOS41X3BsdXMvdHJ1bmNhdGUuc3FsCkBAIC0wLDAgKzEgQEAKK1RSVU5D QVRFIFRBQkxFIHt7Y29ubnxxdElkZW50KGRhdGEuc2NoZW1hLCBkYXRhLm5h bWUpfX17JSBpZiBjYXNjYWRlICV9IENBU0NBREV7JSBlbmRpZiAlfTsKXCBO byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3RhYmxlL3NxbC85LjVfcGx1cy91 cGRhdGUuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy90 YWJsZS9zcWwvOS41X3BsdXMvdXBkYXRlLnNxbApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwLi5hOTdhYzMwCi0tLSAvZGV2L251bGwKKysr IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy90YWJsZS9zcWwv OS41X3BsdXMvdXBkYXRlLnNxbApAQCAtMCwwICsxLDIwMSBAQAoreyUgaW1w b3J0ICdtYWNyb3Mvc2NoZW1hcy9zZWN1cml0eS5tYWNyb3MnIGFzIFNFQ0xB QkxFICV9Cit7JSBpbXBvcnQgJ21hY3Jvcy9zY2hlbWFzL3ByaXZpbGVnZS5t YWNyb3MnIGFzIFBSSVZJTEVHRSAlfQoreyUgaW1wb3J0ICdtYWNyb3MvdmFy aWFibGUubWFjcm9zJyBhcyBWQVJJQUJMRSAlfQoreyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjfQoreyMj IFJlbmFtZSB0YWJsZSAjI30KK3sjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI30KK3slIGlmIGRhdGEubmFt ZSBhbmQgZGF0YS5uYW1lICE9IG9fZGF0YS5uYW1lICV9CitBTFRFUiBUQUJM RSB7e2Nvbm58cXRJZGVudChvX2RhdGEuc2NoZW1hLCBvX2RhdGEubmFtZSl9 fQorICAgIFJFTkFNRSBUTyB7e2Nvbm58cXRJZGVudChkYXRhLm5hbWUpfX07 CisKK3slIGVuZGlmICV9Cit7IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyN9Cit7IyMgQ2hhbmdlIHRhYmxl IHNjaGVtYSAjI30KK3sjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjI30KK3slIGlmIGRhdGEuc2NoZW1hIGFu ZCBkYXRhLnNjaGVtYSAhPSBvX2RhdGEuc2NoZW1hICV9CitBTFRFUiBUQUJM RSB7e2Nvbm58cXRJZGVudChvX2RhdGEuc2NoZW1hLCBkYXRhLm5hbWUpfX0K KyAgU0VUIFNDSEVNQSB7e2Nvbm58cXRJZGVudChkYXRhLnNjaGVtYSl9fTsK KworeyUgZW5kaWYgJX0KK3sjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI30KK3sjIyBDaGFuZ2UgdGFibGUg b3duZXIgIyN9Cit7IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyN9Cit7JSBpZiBkYXRhLnJlbG93bmVyIGFu ZCBkYXRhLnJlbG93bmVyICE9IG9fZGF0YS5yZWxvd25lciAlfQorQUxURVIg VEFCTEUge3tjb25ufHF0SWRlbnQoZGF0YS5zY2hlbWEsIGRhdGEubmFtZSl9 fQorICAgIE9XTkVSIFRPIHt7Y29ubnxxdElkZW50KGRhdGEucmVsb3duZXIp fX07CisKK3slIGVuZGlmICV9Cit7IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyN9Cit7IyMgVXBkYXRlIElu aGVyaXRzIHRhYmxlIGRlZmluaXRpb24gIyN9Cit7IyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyN9Cit7JSBp ZiBkYXRhLmNvbGxfaW5oZXJpdHNfYWRkZWR8bGVuZ3RoID4gMCAlfQoreyUg Zm9yIHZhbCBpbiBkYXRhLmNvbGxfaW5oZXJpdHNfYWRkZWQgJX0KK0FMVEVS IFRBQkxFIHt7Y29ubnxxdElkZW50KGRhdGEuc2NoZW1hLCBkYXRhLm5hbWUp fX0KKyAgICBJTkhFUklUIHt7dmFsfX07CisKK3slIGVuZGZvciAlfQoreyUg ZW5kaWYgJX0KK3slIGlmIGRhdGEuY29sbF9pbmhlcml0c19yZW1vdmVkfGxl bmd0aCA+IDAgJX0KK3slIGZvciB2YWwgaW4gZGF0YS5jb2xsX2luaGVyaXRz X3JlbW92ZWQgJX0KK0FMVEVSIFRBQkxFIHt7Y29ubnxxdElkZW50KGRhdGEu c2NoZW1hLCBkYXRhLm5hbWUpfX0KKyAgICBOTyBJTkhFUklUIHt7dmFsfX07 CisKK3slIGVuZGZvciAlfQoreyUgZW5kaWYgJX0KK3sjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI30KK3sj IyBDaGFuZ2UgaGFzT0lEIGF0dHJpYnV0ZSBvZiB0YWJsZSAjI30KK3sjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjI30KK3slIGlmIGRhdGEucmVsaGFzb2lkcyBpcyBkZWZpbmVkIGFuZCBk YXRhLnJlbGhhc29pZHMgIT0gb19kYXRhLnJlbGhhc29pZHMgJX0KK0FMVEVS IFRBQkxFIHt7Y29ubnxxdElkZW50KGRhdGEuc2NoZW1hLCBkYXRhLm5hbWUp fX0KKyAgICBTRVQgeyUgaWYgZGF0YS5yZWxoYXNvaWRzICV9V0lUSHslIGVs c2UgJX1XSVRIT1VUeyUgZW5kaWYgJX0gT0lEUzsKKworeyUgZW5kaWYgJX0K K3sjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjI30KK3sjIyBDaGFuZ2UgdGFibGVzcGFjZSAjI30KK3sjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjI30KK3slIGlmIGRhdGEuc3BjbmFtZSBhbmQgZGF0YS5zcGNuYW1lICE9 IG9fZGF0YS5zcGNuYW1lICV9CitBTFRFUiBUQUJMRSB7e2Nvbm58cXRJZGVu dChkYXRhLnNjaGVtYSwgZGF0YS5uYW1lKX19CisgICAgU0VUIFRBQkxFU1BB Q0Uge3tjb25ufHF0SWRlbnQoZGF0YS5zcGNuYW1lKX19OworCit7JSBlbmRp ZiAlfQoreyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjfQoreyMjIGNoYW5nZSBmaWxsZmFjdG9yZSBzZXR0 aW5ncyAjI30KK3sjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjI30KK3slIGlmIGRhdGEuZmlsbGZhY3RvciBh bmQgZGF0YS5maWxsZmFjdG9yICE9IG9fZGF0YS5maWxsZmFjdG9yICV9CitB TFRFUiBUQUJMRSB7e2Nvbm58cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0YS5u YW1lKX19CisgICAgU0VUIChGSUxMRkFDVE9SPXt7ZGF0YS5maWxsZmFjdG9y fX0pOworCit7JSBlbmRpZiAlfQoreyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyN9Cit7IyMgVGFibGUgQXV0b1ZhY3V1bSBzZXR0aW5ncyAjI30K K3sjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjfQoreyUgaWYgb19k YXRhLmF1dG92YWN1dW1fY3VzdG9tIGFuZCBkYXRhLmF1dG92YWN1dW1fY3Vz dG9tID09IGZhbHNlICV9CitBTFRFUiBUQUJMRSB7e2Nvbm58cXRJZGVudChk YXRhLnNjaGVtYSwgZGF0YS5uYW1lKX19IFJFU0VUICgKKyAgICBhdXRvdmFj dXVtX2VuYWJsZWQsCisgICAgYXV0b3ZhY3V1bV9hbmFseXplX3NjYWxlX2Zh Y3RvciwKKyAgICBhdXRvdmFjdXVtX2FuYWx5emVfdGhyZXNob2xkLAorICAg IGF1dG92YWN1dW1fZnJlZXplX21heF9hZ2UsCisgICAgYXV0b3ZhY3V1bV92 YWN1dW1fY29zdF9kZWxheSwKKyAgICBhdXRvdmFjdXVtX3ZhY3V1bV9jb3N0 X2xpbWl0LAorICAgIGF1dG92YWN1dW1fdmFjdXVtX3NjYWxlX2ZhY3RvciwK KyAgICBhdXRvdmFjdXVtX3ZhY3V1bV90aHJlc2hvbGQsCisgICAgYXV0b3Zh Y3V1bV9mcmVlemVfbWluX2FnZSwKKyAgICBhdXRvdmFjdXVtX2ZyZWV6ZV90 YWJsZV9hZ2UKKyk7Cit7JSBlbGlmIGRhdGEuYXV0b3ZhY3V1bV9lbmFibGVk ICE9IG9fZGF0YS5hdXRvdmFjdXVtX2VuYWJsZWQgJX0KK3slIGlmIGRhdGEu YXV0b3ZhY3V1bV9lbmFibGVkIGFuZCBvX2RhdGEuYXV0b3ZhY3V1bV9lbmFi bGVkID09IGZhbHNlICV9CitBTFRFUiBUQUJMRSB7e2Nvbm58cXRJZGVudChk YXRhLnNjaGVtYSwgZGF0YS5uYW1lKX19IFNFVCAoCisgICAgYXV0b3ZhY3V1 bV9lbmFibGVkID0gdHJ1ZXslIGVsaWYgZGF0YS5hdXRvdmFjdXVtX2VuYWJs ZWQgPT0gZmFsc2UgYW5kIG9fZGF0YS5hdXRvdmFjdXVtX2VuYWJsZWQgJX0K K0FMVEVSIFRBQkxFIHt7Y29ubnxxdElkZW50KGRhdGEuc2NoZW1hLCBkYXRh Lm5hbWUpfX0gU0VUICgKKyAgICAgICBhdXRvdmFjdXVtX2VuYWJsZWQgPSBm YWxzZXslIGVuZGlmICV9Cit7JSBpZiAoZGF0YS5hdXRvdmFjdXVtX2VuYWJs ZWQgb3Igb19kYXRhLmF1dG92YWN1dW1fZW5hYmxlZCApYW5kIGRhdGEudmFj dXVtX3RhYmxlIGFuZCBkYXRhLnZhY3V1bV90YWJsZS5jaGFuZ2VkfGxlbmd0 aCA+IDAgJX0KK3slIGZvciBvcHQgaW4gZGF0YS52YWN1dW1fdGFibGUuY2hh bmdlZCAlfXslIGlmIG9wdC5uYW1lIGFuZCBvcHQudmFsdWUgJX0KK3slIGlm IGZsYWcgb3IgKGRhdGEuYXV0b3ZhY3V1bV9lbmFibGVkIGFuZCBvX2RhdGEu YXV0b3ZhY3V1bV9lbmFibGVkID09IGZhbHNlKSBvciAoZGF0YS5hdXRvdmFj dXVtX2VuYWJsZWQgPT0gZmFsc2UgYW5kIG9fZGF0YS5hdXRvdmFjdXVtX2Vu YWJsZWQpICV9CissCit7JSBlbHNlICV9CitBTFRFUiBUQUJMRSB7e2Nvbm58 cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0YS5uYW1lKX19IFNFVCAoCit7JSBz ZXQgZmxhZyA9IHRydWUgJX0KK3slIGVuZGlmICV9CisgICAge3tvcHQubmFt ZX19ID0ge3tvcHQudmFsdWV9fXslIGVuZGlmICV9Cit7JSBpZiBsb29wLmlu ZGV4ID09IGRhdGEudmFjdXVtX3RhYmxlLmNoYW5nZWR8bGVuZ3RoIGFuZCAo ZmxhZyBvciAoZGF0YS5hdXRvdmFjdXVtX2VuYWJsZWQgYW5kIG9fZGF0YS5h dXRvdmFjdXVtX2VuYWJsZWQgPT0gZmFsc2UpIG9yIChkYXRhLmF1dG92YWN1 dW1fZW5hYmxlZCA9PSBmYWxzZSBhbmQgb19kYXRhLmF1dG92YWN1dW1fZW5h YmxlZCkpJX0KKworKTsKK3slIGVuZGlmICV9Cit7JSBlbmRmb3IgJX0KK3sl IGVsaWYgKGRhdGEuYXV0b3ZhY3V1bV9lbmFibGVkIGFuZCBvX2RhdGEuYXV0 b3ZhY3V1bV9lbmFibGVkID09IGZhbHNlKSBvciAoZGF0YS5hdXRvdmFjdXVt X2VuYWJsZWQgPT0gZmFsc2UgYW5kIG9fZGF0YS5hdXRvdmFjdXVtX2VuYWJs ZWQpICV9CisKKyk7Cit7JSBlbmRpZiAlfQoreyUgZW5kaWYgJX0KK3sjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjfQoreyMjIFRvYXN0 IHRhYmxlIEF1dG9WYWN1dW0gc2V0dGluZ3MgIyN9Cit7IyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI30KK3slIGlmIG9fZGF0YS50b2Fz dF9hdXRvdmFjdXVtIGFuZCBkYXRhLnRvYXN0X2F1dG92YWN1dW0gPT0gZmFs c2UgJX0KK0FMVEVSIFRBQkxFIHt7Y29ubnxxdElkZW50KGRhdGEuc2NoZW1h LCBkYXRhLm5hbWUpfX0gUkVTRVQgKAorICAgIHRvYXN0LmF1dG92YWN1dW1f ZW5hYmxlZCwKKyAgICB0b2FzdC5hdXRvdmFjdXVtX2ZyZWV6ZV9tYXhfYWdl LAorICAgIHRvYXN0LmF1dG92YWN1dW1fdmFjdXVtX2Nvc3RfZGVsYXksCisg ICAgdG9hc3QuYXV0b3ZhY3V1bV92YWN1dW1fY29zdF9saW1pdCwKKyAgICB0 b2FzdC5hdXRvdmFjdXVtX3ZhY3V1bV9zY2FsZV9mYWN0b3IsCisgICAgdG9h c3QuYXV0b3ZhY3V1bV92YWN1dW1fdGhyZXNob2xkLAorICAgIHRvYXN0LmF1 dG92YWN1dW1fZnJlZXplX21pbl9hZ2UsCisgICAgdG9hc3QuYXV0b3ZhY3V1 bV9mcmVlemVfdGFibGVfYWdlLAorICAgIHRvYXN0LmF1dG92YWN1dW1fYW5h bHl6ZV90aHJlc2hvbGQsCisgICAgdG9hc3QuYXV0b3ZhY3V1bV9hbmFseXpl X3NjYWxlX2ZhY3RvcgorKTsKK3slIGVsaWYgZGF0YS50b2FzdF9hdXRvdmFj dXVtX2VuYWJsZWQgIT0gb19kYXRhLnRvYXN0X2F1dG92YWN1dW1fZW5hYmxl ZCAlfQoreyUgaWYgZGF0YS50b2FzdF9hdXRvdmFjdXVtX2VuYWJsZWQgYW5k IG9fZGF0YS50b2FzdF9hdXRvdmFjdXVtX2VuYWJsZWQgPT0gZmFsc2UgJX0K K0FMVEVSIFRBQkxFIHt7Y29ubnxxdElkZW50KGRhdGEuc2NoZW1hLCBkYXRh Lm5hbWUpfX0gU0VUICgKKyAgICB0b2FzdC5hdXRvdmFjdXVtX2VuYWJsZWQg PSB0cnVleyUgZWxpZiBkYXRhLnRvYXN0X2F1dG92YWN1dW1fZW5hYmxlZCA9 PSBmYWxzZSBhbmQgb19kYXRhLnRvYXN0X2F1dG92YWN1dW1fZW5hYmxlZCAl fQorQUxURVIgVEFCTEUge3tjb25ufHF0SWRlbnQoZGF0YS5zY2hlbWEsIGRh dGEubmFtZSl9fSBTRVQgKAorICAgICAgIHRvYXN0LmF1dG92YWN1dW1fZW5h YmxlZCA9IGZhbHNleyUgZW5kaWYgJX0KK3slIGlmIChkYXRhLnRvYXN0X2F1 dG92YWN1dW1fZW5hYmxlZCBvciBvX2RhdGEudG9hc3RfYXV0b3ZhY3V1bV9l bmFibGVkIClhbmQgZGF0YS52YWN1dW1fdG9hc3QgYW5kIGRhdGEudmFjdXVt X3RvYXN0LmNoYW5nZWR8bGVuZ3RoID4gMCAlfQoreyUgZm9yIG9wdCBpbiBk YXRhLnZhY3V1bV90b2FzdC5jaGFuZ2VkICV9eyUgaWYgb3B0Lm5hbWUgYW5k IG9wdC52YWx1ZSAlfQoreyUgaWYgZmxhZyBvciAoZGF0YS50b2FzdF9hdXRv dmFjdXVtX2VuYWJsZWQgYW5kIG9fZGF0YS50b2FzdF9hdXRvdmFjdXVtX2Vu YWJsZWQgPT0gZmFsc2UpIG9yIChkYXRhLnRvYXN0X2F1dG92YWN1dW1fZW5h YmxlZCA9PSBmYWxzZSBhbmQgb19kYXRhLnRvYXN0X2F1dG92YWN1dW1fZW5h YmxlZCkgJX0KKywKK3slIGVsc2UgJX0KK0FMVEVSIFRBQkxFIHt7Y29ubnxx dElkZW50KGRhdGEuc2NoZW1hLCBkYXRhLm5hbWUpfX0gU0VUICgKK3slIHNl dCBmbGFnID0gdHJ1ZSAlfQoreyUgZW5kaWYgJX0KKyAgICB0b2FzdC57e29w dC5uYW1lfX0gPSB7e29wdC52YWx1ZX19eyUgZW5kaWYgJX0KK3slIGlmIGxv b3AuaW5kZXggPT0gZGF0YS52YWN1dW1fdG9hc3QuY2hhbmdlZHxsZW5ndGgg YW5kIChmbGFnIG9yIChkYXRhLnRvYXN0X2F1dG92YWN1dW1fZW5hYmxlZCBh bmQgb19kYXRhLnRvYXN0X2F1dG92YWN1dW1fZW5hYmxlZCA9PSBmYWxzZSkg b3IgKGRhdGEudG9hc3RfYXV0b3ZhY3V1bV9lbmFibGVkID09IGZhbHNlIGFu ZCBvX2RhdGEudG9hc3RfYXV0b3ZhY3V1bV9lbmFibGVkKSklfQorCispOwor eyUgZW5kaWYgJX0KK3slIGVuZGZvciAlfQoreyUgZWxpZiAoZGF0YS50b2Fz dF9hdXRvdmFjdXVtX2VuYWJsZWQgYW5kIG9fZGF0YS50b2FzdF9hdXRvdmFj dXVtX2VuYWJsZWQgPT0gZmFsc2UpIG9yIChkYXRhLnRvYXN0X2F1dG92YWN1 dW1fZW5hYmxlZCA9PSBmYWxzZSBhbmQgb19kYXRhLnRvYXN0X2F1dG92YWN1 dW1fZW5hYmxlZCkgJX0KKworKTsKK3slIGVuZGlmICV9Cit7JSBlbmRpZiAl fQoreyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjfQoreyMjIENoYW5nZSB0YWJsZSBjb21tZW50cyAjI30K K3sjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjI30KK3slIGlmIGRhdGEuZGVzY3JpcHRpb24gYW5kIGRhdGEu ZGVzY3JpcHRpb24gIT0gb19kYXRhLmRlc2NyaXB0aW9uICV9CitDT01NRU5U IE9OIFRBQkxFIHt7Y29ubnxxdElkZW50KGRhdGEuc2NoZW1hLCBkYXRhLm5h bWUpfX0KKyAgSVMge3tkYXRhLmRlc2NyaXB0aW9ufHF0TGl0ZXJhbH19Owor Cit7JSBlbmRpZiAlfQoreyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjfQoreyMjIFVwZGF0ZSB0YWJsZSBQ cml2aWxlZ2VzICMjfQoreyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjfQoreyUgaWYgZGF0YS5yZWxhY2wg JX0KK3slIGlmICdkZWxldGVkJyBpbiBkYXRhLnJlbGFjbCAlfQoreyUgZm9y IHByaXYgaW4gZGF0YS5yZWxhY2wuZGVsZXRlZCAlfQore3sgUFJJVklMRUdF LlVOU0VUQUxMKGNvbm4sICdUQUJMRScsIHByaXYuZ3JhbnRlZSwgZGF0YS5u YW1lLCBkYXRhLnNjaGVtYSkgfX0KK3slIGVuZGZvciAlfQoreyUgZW5kaWYg JX0KK3slIGlmICdjaGFuZ2VkJyBpbiBkYXRhLnJlbGFjbCAlfQoreyUgZm9y IHByaXYgaW4gZGF0YS5yZWxhY2wuY2hhbmdlZCAlfQore3sgUFJJVklMRUdF LlVOU0VUQUxMKGNvbm4sICdUQUJMRScsIHByaXYuZ3JhbnRlZSwgZGF0YS5u YW1lLCBkYXRhLnNjaGVtYSkgfX0KK3t7IFBSSVZJTEVHRS5TRVQoY29ubiwg J1RBQkxFJywgcHJpdi5ncmFudGVlLCBkYXRhLm5hbWUsIHByaXYud2l0aG91 dF9ncmFudCwgcHJpdi53aXRoX2dyYW50LCBkYXRhLnNjaGVtYSkgfX0KK3sl IGVuZGZvciAlfQoreyUgZW5kaWYgJX0KK3slIGlmICdhZGRlZCcgaW4gZGF0 YS5yZWxhY2wgJX0KK3slIGZvciBwcml2IGluIGRhdGEucmVsYWNsLmFkZGVk ICV9Cit7eyBQUklWSUxFR0UuU0VUKGNvbm4sICdUQUJMRScsIHByaXYuZ3Jh bnRlZSwgZGF0YS5uYW1lLCBwcml2LndpdGhvdXRfZ3JhbnQsIHByaXYud2l0 aF9ncmFudCwgZGF0YS5zY2hlbWEpIH19Cit7JSBlbmRmb3IgJX0KK3slIGVu ZGlmICV9Cit7JSBlbmRpZiAlfQoreyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjfQoreyMjIFVwZGF0ZSB0 YWJsZSBTZWN1cml0eUxhYmVsICMjfQoreyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjfQoreyUgaWYgZGF0 YS5zZWNsYWJlbHMgYW5kIGRhdGEuc2VjbGFiZWxzfGxlbmd0aCA+IDAgJX0K K3slIHNldCBzZWNsYWJlbHMgPSBkYXRhLnNlY2xhYmVscyAlfQoreyUgaWYg J2RlbGV0ZWQnIGluIHNlY2xhYmVscyBhbmQgc2VjbGFiZWxzLmRlbGV0ZWR8 bGVuZ3RoID4gMCAlfQoreyUgZm9yIHIgaW4gc2VjbGFiZWxzLmRlbGV0ZWQg JX0KK3t7IFNFQ0xBQkVMLlVOU0VUKGNvbm4sICdUQUJMRScsIGRhdGEubmFt ZSwgci5wcm92aWRlciwgZGF0YS5zY2hlbWEpIH19Cit7JSBlbmRmb3IgJX0K K3slIGVuZGlmICV9Cit7JSBpZiAnYWRkZWQnIGluIHNlY2xhYmVscyBhbmQg c2VjbGFiZWxzLmFkZGVkfGxlbmd0aCA+IDAgJX0KK3slIGZvciByIGluIHNl Y2xhYmVscy5hZGRlZCAlfQore3sgU0VDTEFCTEUuU0VUKGNvbm4sICdUQUJM RScsIGRhdGEubmFtZSwgci5wcm92aWRlciwgci5sYWJlbCwgZGF0YS5zY2hl bWEpIH19Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmICV9Cit7JSBpZiAnY2hh bmdlZCcgaW4gc2VjbGFiZWxzIGFuZCBzZWNsYWJlbHMuY2hhbmdlZHxsZW5n dGggPiAwICV9Cit7JSBmb3IgciBpbiBzZWNsYWJlbHMuY2hhbmdlZCAlfQor e3sgU0VDTEFCTEUuU0VUKGNvbm4sICdUQUJMRScsIGRhdGEubmFtZSwgci5w cm92aWRlciwgci5sYWJlbCwgZGF0YS5zY2hlbWEpIH19Cit7JSBlbmRmb3Ig JX0KK3slIGVuZGlmICV9CisKK3slIGVuZGlmICV9ClwgTm8gbmV3bGluZSBh dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFi bGVzL3RlbXBsYXRlcy90YWJsZS9zcWwvbWFjcm9zL2NvbnN0cmFpbnRzLm1h Y3JvIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy90YWJsZS9z cWwvbWFjcm9zL2NvbnN0cmFpbnRzLm1hY3JvCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLmZlNzM4OWEKLS0tIC9kZXYvbnVsbAorKysg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3RhYmxlL3NxbC9t YWNyb3MvY29uc3RyYWludHMubWFjcm8KQEAgLTAsMCArMSwxMDMgQEAKK3sj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI30KK3sjIE1hY3JvcyBmb3IgQ29u c3RyYWludHMgI30KK3sjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI30KK3sj ICAgIENSRUFURSBNT0RFIE9OTFkgICAgI30KK3sjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjI30KK3slIG1hY3JvIFBSSU1BUllfS0VZKGNvbm4sIGRhdGEp IC0lfQoreyUgaWYgZGF0YS5jb2x1bW5zfGxlbmd0aCA+IDAgJX0KKworICAg IHslIGlmIGRhdGEubmFtZSAlfUNPTlNUUkFJTlQge3tjb25ufHF0SWRlbnQo ZGF0YS5uYW1lKX19IHslIGVuZGlmICV9UFJJTUFSWSBLRVkgKHslIGZvciBj IGluIGRhdGEuY29sdW1ucyV9Cit7JSBpZiBsb29wLmluZGV4ICE9IDEgJX0s IHslIGVuZGlmICV9e3tjb25ufHF0SWRlbnQoYy5jb2x1bW4pfX17JSBlbmRm b3IgJX0peyUgaWYgZGF0YS5maWxsZmFjdG9yICV9CisKKyAgICAgICAgV0lU SCAoRklMTEZBQ1RPUj17e2RhdGEuZmlsbGZhY3Rvcn19KXslIGVuZGlmICV9 Cit7JSBpZiBkYXRhLnNwY25hbWUgYW5kIGRhdGEuc3BjbmFtZSAhPSAicGdf ZGVmYXVsdCIgJX0KKworICAgICAgICBVU0lORyBJTkRFWCBUQUJMRVNQQUNF IHt7IGNvbm58cXRJZGVudChkYXRhLnNwY25hbWUpIH19eyUgZW5kaWYgJX0K K3slIGlmIGRhdGEuY29uZGVmZXJyYWJsZSAlfQorCisgICAgICAgIERFRkVS UkFCTEV7JSBpZiBkYXRhLmNvbmRlZmVycmVkICV9IElOSVRJQUxMWSBERUZF UlJFRHslIGVuZGlmJX17JSBlbmRpZiV9Cit7JSBlbmRpZiAlfQoreyUtIGVu ZG1hY3JvICV9Cit7JSBtYWNybyBVTklRVUUoY29ubiwgdW5pcXVlX2RhdGEp IC0lfQoreyUgZm9yIGRhdGEgaW4gdW5pcXVlX2RhdGEgJX0KK3slIGlmIGRh dGEuY29sdW1uc3xsZW5ndGggPiAwICV9eyUgaWYgbG9vcC5pbmRleCAhPTEg JX0seyUgZW5kaWYgJX0KKworICAgIHslIGlmIGRhdGEubmFtZSAlfUNPTlNU UkFJTlQge3tjb25ufHF0SWRlbnQoZGF0YS5uYW1lKX19IHslIGVuZGlmICV9 VU5JUVVFICh7JSBmb3IgYyBpbiBkYXRhLmNvbHVtbnMlfQoreyUgaWYgbG9v cC5pbmRleCAhPSAxICV9LCB7JSBlbmRpZiAlfXt7Y29ubnxxdElkZW50KGMu Y29sdW1uKX19eyUgZW5kZm9yICV9KXslIGlmIGRhdGEuZmlsbGZhY3RvciAl fQorCisgICAgICAgIFdJVEggKEZJTExGQUNUT1I9e3tkYXRhLmZpbGxmYWN0 b3J9fSl7JSBlbmRpZiAlfQoreyUgaWYgZGF0YS5zcGNuYW1lIGFuZCBkYXRh LnNwY25hbWUgIT0gInBnX2RlZmF1bHQiICV9CisKKyAgICAgICAgVVNJTkcg SU5ERVggVEFCTEVTUEFDRSB7eyBjb25ufHF0SWRlbnQoZGF0YS5zcGNuYW1l KSB9fXslIGVuZGlmICV9Cit7JSBpZiBkYXRhLmNvbmRlZmVycmFibGUgJX0K KworICAgICAgICBERUZFUlJBQkxFeyUgaWYgZGF0YS5jb25kZWZlcnJlZCAl fSBJTklUSUFMTFkgREVGRVJSRUR7JSBlbmRpZiV9eyUgZW5kaWYlfQoreyUg ZW5kaWYgJX0KK3slIGVuZGZvciAlfQoreyUtIGVuZG1hY3JvICV9Cit7JSBt YWNybyBDSEVDSyhjb25uLCBjaGVja19kYXRhKSAtJX0KK3slIGZvciBkYXRh IGluIGNoZWNrX2RhdGEgJX17JSBpZiBsb29wLmluZGV4ICE9MSAlfSx7JSBl bmRpZiAlfQorCisgICAgeyUgaWYgZGF0YS5uYW1lICV9Q09OU1RSQUlOVCB7 eyBjb25ufHF0SWRlbnQoZGF0YS5uYW1lKSB9fSB7JSBlbmRpZiV9Q0hFQ0sg KHt7IGRhdGEuY29uc3JjIH19KXslIGlmIGRhdGEuY29udmFsaWRhdGVkICV9 CisgTk9UIFZBTElEeyUgZW5kaWYgJX17JSBpZiBkYXRhLmNvbm5vaW5oZXJp dCAlfSBOTyBJTkhFUklUeyUgZW5kaWYgJX0KK3slIGVuZGZvciAlfQoreyUt IGVuZG1hY3JvICV9Cit7JSBtYWNybyBGT1JFSUdOX0tFWShjb25uLCBmb3Jl aWduX2tleV9kYXRhKSAtJX0KK3slIGZvciBkYXRhIGluIGZvcmVpZ25fa2V5 X2RhdGEgJX17JSBpZiBsb29wLmluZGV4ICE9IDEgJX0seyUgZW5kaWYgJX0K KworICAgIHslIGlmIGRhdGEubmFtZSAlfUNPTlNUUkFJTlQge3tjb25ufHF0 SWRlbnQoZGF0YS5uYW1lKX19IHslIGVuZGlmICV9Rk9SRUlHTiBLRVkgKHsl IGZvciBjb2x1bW5vYmogaW4gZGF0YS5jb2x1bW5zICV9eyUgaWYgbG9vcC5p bmRleCAhPSAxICV9CissIHslIGVuZGlmICV9e3sgY29ubnxxdElkZW50KGNv bHVtbm9iai5sb2NhbF9jb2x1bW4pfX17JSBlbmRmb3IgJX0pCisgICAgICAg IFJFRkVSRU5DRVMge3sgY29ubnxxdElkZW50KGRhdGEucmVtb3RlX3NjaGVt YSwgZGF0YS5yZW1vdGVfdGFibGUpIH19ICh7JSBmb3IgY29sdW1ub2JqIGlu IGRhdGEuY29sdW1ucyAlfXslIGlmIGxvb3AuaW5kZXggIT0gMSAlfQorLCB7 JSBlbmRpZiAlfXt7IGNvbm58cXRJZGVudChjb2x1bW5vYmoucmVmZXJlbmNl ZCl9fXslIGVuZGZvciAlfSkgeyUgaWYgZGF0YS5jb25mbWF0Y2h0eXBlICV9 TUFUQ0ggRlVMTHslIGVsc2UgJX1NQVRDSCBTSU1QTEV7JSBlbmRpZiV9CisK KyAgICAgICAgT04gVVBEQVRFeyUgaWYgZGF0YS5jb25mdXBkdHlwZSAgPT0g J2EnICV9CisgTk8gQUNUSU9OeyUgZWxpZiBkYXRhLmNvbmZ1cGR0eXBlICA9 PSAncicgJX0KKyBSRVNUUklDVHslIGVsaWYgZGF0YS5jb25mdXBkdHlwZSAg PT0gJ2MnICV9CisgQ0FTQ0FERXslIGVsaWYgZGF0YS5jb25mdXBkdHlwZSAg PT0gJ24nICV9CisgU0VUIE5VTEx7JSBlbGlmIGRhdGEuY29uZnVwZHR5cGUg ID09ICdkJyAlfQorIFNFVCBERUZBVUxUeyUgZW5kaWYgJX0KKworICAgICAg ICBPTiBERUxFVEV7JSBpZiBkYXRhLmNvbmZkZWx0eXBlICA9PSAnYScgJX0K KyBOTyBBQ1RJT057JSBlbGlmIGRhdGEuY29uZmRlbHR5cGUgID09ICdyJyAl fQorIFJFU1RSSUNUeyUgZWxpZiBkYXRhLmNvbmZkZWx0eXBlICA9PSAnYycg JX0KKyBDQVNDQURFeyUgZWxpZiBkYXRhLmNvbmZkZWx0eXBlICA9PSAnbicg JX0KKyBTRVQgTlVMTHslIGVsaWYgZGF0YS5jb25mZGVsdHlwZSAgPT0gJ2Qn ICV9CisgU0VUIERFRkFVTFR7JSBlbmRpZiAlfQoreyUgaWYgZGF0YS5jb25k ZWZlcnJhYmxlICV9CisKKyAgICAgICAgREVGRVJSQUJMRXslIGlmIGRhdGEu Y29uZGVmZXJyZWQgJX0KKyBJTklUSUFMTFkgREVGRVJSRUR7JSBlbmRpZiV9 Cit7JSBlbmRpZiV9Cit7JSBpZiBkYXRhLmNvbnZhbGlkYXRlZCAlfQorCisg ICAgICAgIE5PVCBWQUxJRHslIGVuZGlmJX0KK3slIGVuZGZvciAlfQoreyUt IGVuZG1hY3JvICV9Cit7JSBtYWNybyBFWENMVURFKGNvbm4sIGV4Y2x1ZGVf ZGF0YSkgLSV9Cit7JSBmb3IgZGF0YSBpbiBleGNsdWRlX2RhdGEgJX17JSBp ZiBsb29wLmluZGV4ICE9IDEgJX0seyUgZW5kaWYgJX0KKworICAgIHslIGlm IGRhdGEubmFtZSAlfUNPTlNUUkFJTlQge3sgY29ubnxxdElkZW50KGRhdGEu bmFtZSkgfX0geyUgZW5kaWYlfUVYQ0xVREUgeyUgaWYgZGF0YS5hbW5hbWUg YW5kIGRhdGEuYW1uYW1lICE9ICcnICV9VVNJTkcge3tkYXRhLmFtbmFtZX19 eyUgZW5kaWYgJX0gKHslIGZvciBjb2wgaW4gZGF0YS5jb2x1bW5zICV9eyUg aWYgbG9vcC5pbmRleCAhPSAxICV9LAorICAgICAgICB7JSBlbmRpZiAlfXt7 IGNvbm58cXRJZGVudChjb2wuY29sdW1uKX19IHslIGlmIGNvbC5vcGVyX2Ns YXNzIGFuZCBjb2wub3Blcl9jbGFzcyAhPSAnJyAlfXt7Y29sLm9wZXJfY2xh c3N9fSB7JSBlbmRpZiV9eyUgaWYgY29sLm9yZGVyICV9QVNDeyUgZWxzZSAl fURFU0N7JSBlbmRpZiAlfSBOVUxMUyB7JSBpZiBjb2wubnVsbHNfb3JkZXIg JX1GSVJTVHslIGVsc2UgJX1MQVNUeyUgZW5kaWYgJX0gV0lUSCB7e2NvbC5v cGVyYXRvcn19eyUgZW5kZm9yICV9KXslIGlmIGRhdGEuZmlsbGZhY3RvciAl fQorCisgICAgICAgIFdJVEggKEZJTExGQUNUT1I9e3tkYXRhLmZpbGxmYWN0 b3J9fSl7JSBlbmRpZiAlfQorICAgICAgICB7JSBpZiBkYXRhLnNwY25hbWUg YW5kIGRhdGEuc3BjbmFtZSAhPSAicGdfZGVmYXVsdCIgJX0KKworICAgICAg ICBVU0lORyBJTkRFWCBUQUJMRVNQQUNFIHt7IGNvbm58cXRJZGVudChkYXRh LnNwY25hbWUpIH19eyUgZW5kaWYgJX0KK3slIGlmIGRhdGEuY29uZGVmZXJy YWJsZSAlfQorCisgICAgICAgIERFRkVSUkFCTEV7JSBpZiBkYXRhLmNvbmRl ZmVycmVkICV9CisgSU5JVElBTExZIERFRkVSUkVEeyUgZW5kaWYlfQoreyUg ZW5kaWYlfXslIGlmIGRhdGEuY29uc3RyYWludCAlfSBXSEVSRSAoe3tkYXRh LmNvbnN0cmFpbnR9fSl7JSBlbmRpZiV9Cit7JSBlbmRmb3IgJX0KK3slLSBl bmRtYWNybyAlfQoreyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjfQoreyMg ICAgIENPTU1FTlRTIE9OTFkgICAgICAjfQoreyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjfQoreyUgbWFjcm8gQ09OU1RSQUlOVF9DT01NRU5UUyhjb25u LCBzY2hlbWEsIHRhYmxlLCBkYXRhKSAtJX0KK3slIGZvciBkIGluIGRhdGEg JX0KK3slIGlmIGQubmFtZSBhbmQgZC5jb21tZW50ICV9CitDT01NRU5UIE9O IENPTlNUUkFJTlQge3sgY29ubnxxdElkZW50KGQubmFtZSkgfX0gT04ge3sg Y29ubnxxdElkZW50KHNjaGVtYSwgdGFibGUpIH19CisgICAgSVMge3sgZC5j b21tZW50fHF0TGl0ZXJhbCB9fTsKK3slIGVuZGlmICV9Cit7JSBlbmRmb3Ig JX0KK3slLSBlbmRtYWNybyAlfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp bGUKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0 ZXMvdHJpZ2dlci9zcWwvOS4xX3BsdXMvYWx0ZXIuc3FsIGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvdGFibGVzL3RlbXBsYXRlcy90cmlnZ2VyL3NxbC85LjFfcGx1cy9h bHRlci5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u OTNmMzIzZQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3Rh Ymxlcy90ZW1wbGF0ZXMvdHJpZ2dlci9zcWwvOS4xX3BsdXMvYWx0ZXIuc3Fs CkBAIC0wLDAgKzEsOSBAQAoreyMjIEFsdGVyIGluZGV4IHRvIHVzZSBjbHVz dGVyIHR5cGUgIyN9Cit7JSBpZiBkYXRhLmluZGlzY2x1c3RlcmVkICV9CitB TFRFUiBUQUJMRSB7e2Nvbm58cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0YS50 YWJsZSl9fQorICAgIENMVVNURVIgT04ge3tjb25ufHF0SWRlbnQoZGF0YS5u YW1lKX19OworeyUgZW5kaWYgJX0KK3sjIyBDaGFuZ2VzIGRlc2NyaXB0aW9u ICMjfQoreyUgaWYgZGF0YS5kZXNjcmlwdGlvbiAlfQorQ09NTUVOVCBPTiBJ TkRFWCB7e2Nvbm58cXRJZGVudChkYXRhLm5hbWUpfX0KKyAgICBJUyB7e2Rh dGEuZGVzY3JpcHRpb258cXRMaXRlcmFsfX07eyUgZW5kaWYgJX0KXCBObyBu ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy90YWJsZXMvdGVtcGxhdGVzL3RyaWdnZXIvc3FsLzkuMV9wbHVzL2Jh Y2tlbmRfc3VwcG9ydC5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVt cGxhdGVzL3RyaWdnZXIvc3FsLzkuMV9wbHVzL2JhY2tlbmRfc3VwcG9ydC5z cWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmI1ZThk OAotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90 ZW1wbGF0ZXMvdHJpZ2dlci9zcWwvOS4xX3BsdXMvYmFja2VuZF9zdXBwb3J0 LnNxbApAQCAtMCwwICsxLDkgQEAKK3sjPT09PT09PT09PT09PUNoZWNrcyBp ZiBpdCBpcyBtYXRlcmlhbGl6ZWQgdmlldz09PT09PT09I30KK3slIGlmIHZp ZCAlfQorU0VMRUNUCisgICAgQ0FTRSBXSEVOIGMucmVsa2luZCA9ICdtJyBU SEVOIEZhbHNlIEVMU0UgVHJ1ZSBFTkQgQXMgbV92aWV3CitGUk9NCisgICAg cGdfY2xhc3MgYworV0hFUkUKKyAgICBjLm9pZCA9IHt7IHZpZCB9fTo6b2lk Cit7JSBlbmRpZiAlfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFi bGVzL3RlbXBsYXRlcy90cmlnZ2VyL3NxbC85LjFfcGx1cy9jcmVhdGUuc3Fs IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy90cmlnZ2VyL3Nx bC85LjFfcGx1cy9jcmVhdGUuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAuLmI2MTlmNzEKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3RyaWdnZXIvc3FsLzkuMV9w bHVzL2NyZWF0ZS5zcWwKQEAgLTAsMCArMSwyNyBAQAoreyMjIyBTZXQgYSBm bGFnIHdoaWNoIGFsbG93cyB1cyB0byBwdXQgT1IgYmV0d2VlbiBldmVudHMg IyMjfQoreyUgc2V0IG9yX2ZsYWcgPSBGYWxzZSAlfQorQ1JFQVRFeyUgaWYg ZGF0YS5pc19jb25zdHJhaW50X3RyaWdnZXIgJX0gQ09OU1RSQUlOVHslIGVu ZGlmICV9IFRSSUdHRVIge3sgY29ubnxxdElkZW50KGRhdGEubmFtZSkgfX0K KyAgICB7e2RhdGEuZmlyZXN9fSB7JSBpZiBkYXRhLmV2bnRfaW5zZXJ0ICV9 SU5TRVJUeyUgc2V0IG9yX2ZsYWcgPSBUcnVlICV9Cit7JSBlbmRpZiAlfXsl IGlmIGRhdGEuZXZudF9kZWxldGUgJX0KK3slIGlmIG9yX2ZsYWcgJX0gT1Ig eyUgZW5kaWYgJX1ERUxFVEV7JSBzZXQgb3JfZmxhZyA9IFRydWUgJX0KK3sl IGVuZGlmICV9eyUgaWYgZGF0YS5ldm50X3R1cm5jYXRlICV9Cit7JSBpZiBv cl9mbGFnICV9IE9SIHslIGVuZGlmICV9VFJVTkNBVEV7JSBzZXQgb3JfZmxh ZyA9IFRydWUgJX0KK3slIGVuZGlmICV9eyUgaWYgZGF0YS5ldm50X3VwZGF0 ZSAlfQoreyUgaWYgb3JfZmxhZyAlfSBPUiB7JSBlbmRpZiAlfVVQREFURSB7 JSBpZiBkYXRhLmNvbHVtbnN8bGVuZ3RoID4gMCAlfU9GIHslIGZvciBjIGlu IGRhdGEuY29sdW1ucyAlfXslIGlmIGxvb3AuaW5kZXggIT0gMSAlfSwgeyUg ZW5kaWYgJX17eyBjb25ufHF0SWRlbnQoYy5jb2x1bW4pIH19eyUgZW5kZm9y ICV9eyUgZW5kaWYgJX0KK3slIGVuZGlmICV9CisKKyAgICBPTiB7eyBjb25u fHF0SWRlbnQoZGF0YS5zY2hlbWEsIGRhdGEudGFibGUpIH19Cit7JSBpZiBk YXRhLnRnZGVmZXJyYWJsZSAlfQorICAgIERFRkVSUkFCTEV7JSBpZiBkYXRh LnRnaW5pdGRlZmVycmVkICV9IElOSVRJQUxMWSBERUZFUlJFRHslIGVuZGlm ICV9Cit7JSBlbmRpZiAlfQorICAgIEZPUiBFQUNIeyUgaWYgZGF0YS5pc19y b3dfdHJpZ2dlciAlfSBST1d7JSBlbHNlICV9IFNUQVRFTUVOVHslIGVuZGlm ICV9Cit7JSBpZiBkYXRhLndoZW5jbGF1c2UgJX0KKworICAgIFdIRU4ge3sg ZGF0YS53aGVuY2xhdXNlIH19eyUgZW5kaWYgJX0KKworICAgIHslIGlmIGRh dGEuY29kZSAlfXt7IGRhdGEuY29kZSB9fXslIGVsc2UgJX1FWEVDVVRFIFBS T0NFRFVSRSB7eyBkYXRhLnRmdW5jdGlvbiB9fXslIGlmIGRhdGEudGdhcmdz ICV9KHt7IGRhdGEudGdhcmdzIH19KXslIGVsc2UgJX0oKXslIGVuZGlmJX17 JSBlbmRpZiV9OworCit7JSBpZiBkYXRhLmRlc2NyaXB0aW9uICV9CitDT01N RU5UIE9OIFRSSUdHRVIge3sgY29ubnxxdElkZW50KGRhdGEubmFtZSkgfX0g T04ge3sgY29ubnxxdElkZW50KGRhdGEuc2NoZW1hLCBkYXRhLnRhYmxlKSB9 fQorICAgIElTIHt7ZGF0YS5kZXNjcmlwdGlvbnxxdExpdGVyYWx9fTsKK3sl IGVuZGlmICV9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t Z2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy90cmlnZ2Vy L3NxbC85LjFfcGx1cy9kZWxldGUuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFi bGVzL3RlbXBsYXRlcy90cmlnZ2VyL3NxbC85LjFfcGx1cy9kZWxldGUuc3Fs Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjNmU4MmIK LS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVt cGxhdGVzL3RyaWdnZXIvc3FsLzkuMV9wbHVzL2RlbGV0ZS5zcWwKQEAgLTAs MCArMSBAQAorRFJPUCBUUklHR0VSIHt7Y29ubnxxdElkZW50KGRhdGEubmFt ZSl9fSBPTiB7e2Nvbm58cXRJZGVudChkYXRhLm5zcG5hbWUsIGRhdGEucmVs bmFtZSApfX17JSBpZiBjYXNjYWRlICV9IENBU0NBREV7JSBlbmRpZiAlfTsK XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3RyaWdnZXIvc3FsLzkuMV9w bHVzL2VuYWJsZV9kaXNhYmxlX3RyaWdnZXIuc3FsIGIvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvdGFibGVzL3RlbXBsYXRlcy90cmlnZ2VyL3NxbC85LjFfcGx1cy9lbmFi bGVfZGlzYWJsZV90cmlnZ2VyLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwLi5iNzAwOTI3Ci0tLSAvZGV2L251bGwKKysrIGIvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy90cmlnZ2VyL3NxbC85LjFf cGx1cy9lbmFibGVfZGlzYWJsZV90cmlnZ2VyLnNxbApAQCAtMCwwICsxLDIg QEAKK0FMVEVSIFRBQkxFIHt7IGNvbm58cXRJZGVudChkYXRhLnNjaGVtYSwg ZGF0YS50YWJsZSkgfX0KKyAgICB7JSBpZiBkYXRhLmlzX2VuYWJsZV90cmln Z2VyID09IFRydWUgJX1FTkFCTEV7JSBlbHNlICV9RElTQUJMRXslIGVuZGlm ICV9IFRSSUdHRVIge3sgY29ubnxxdElkZW50KGRhdGEubmFtZSkgfX07Clwg Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy90cmlnZ2VyL3NxbC85LjFfcGx1 cy9nZXRfY29sdW1ucy5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVt cGxhdGVzL3RyaWdnZXIvc3FsLzkuMV9wbHVzL2dldF9jb2x1bW5zLnNxbApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNzRjNjhiCi0t LSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBs YXRlcy90cmlnZ2VyL3NxbC85LjFfcGx1cy9nZXRfY29sdW1ucy5zcWwKQEAg LTAsMCArMSw2IEBACitTRUxFQ1QgYXR0LmF0dG5hbWUgYXMgbmFtZQorRlJP TSBwZ19hdHRyaWJ1dGUgYXR0CisgICAgV0hFUkUgYXR0LmF0dHJlbGlkID0g e3t0aWR9fTo6b2lkCisgICAgQU5EIGF0dC5hdHRudW0gSU4gKHt7IGNsaXN0 IH19KQorICAgIEFORCBhdHQuYXR0aXNkcm9wcGVkIElTIEZBTFNFCisgICAg T1JERVIgQlkgYXR0LmF0dG51bQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp bGUKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0 ZXMvdHJpZ2dlci9zcWwvOS4xX3BsdXMvZ2V0X29pZC5zcWwgYi93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3RyaWdnZXIvc3FsLzkuMV9wbHVz L2dldF9vaWQuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLmNmMzAyNTcKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy90YWJsZXMvdGVtcGxhdGVzL3RyaWdnZXIvc3FsLzkuMV9wbHVzL2dldF9v aWQuc3FsCkBAIC0wLDAgKzEsNSBAQAorU0VMRUNUIHQub2lkCitGUk9NIHBn X3RyaWdnZXIgdAorICAgIFdIRVJFIE5PVCB0Z2lzaW50ZXJuYWwKKyAgICBB TkQgdGdyZWxpZCA9IHt7dGlkfX06Ok9JRAorICAgIEFORCB0Z25hbWUgPSB7 e2RhdGEubmFtZXxxdExpdGVyYWx9fTsKXCBObyBuZXdsaW5lIGF0IGVuZCBv ZiBmaWxlCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVt cGxhdGVzL3RyaWdnZXIvc3FsLzkuMV9wbHVzL2dldF9wYXJlbnQuc3FsIGIv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy90cmlnZ2VyL3NxbC85 LjFfcGx1cy9nZXRfcGFyZW50LnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwLi41ZGQ1ZDNjCi0tLSAvZGV2L251bGwKKysrIGIvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy90cmlnZ2VyL3NxbC85LjFf cGx1cy9nZXRfcGFyZW50LnNxbApAQCAtMCwwICsxLDUgQEAKK1NFTEVDVCBu c3AubnNwbmFtZSBBUyBzY2hlbWEgLHJlbC5yZWxuYW1lIEFTIHRhYmxlCitG Uk9NIHBnX2NsYXNzIHJlbAorICAgIEpPSU4gcGdfbmFtZXNwYWNlIG5zcAor ICAgIE9OIHJlbC5yZWxuYW1lc3BhY2UgPSBuc3Aub2lkOjppbnQKKyAgICBX SEVSRSByZWwub2lkID0ge3t0aWR9fTo6aW50ClwgTm8gbmV3bGluZSBhdCBl bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVz L3RlbXBsYXRlcy90cmlnZ2VyL3NxbC85LjFfcGx1cy9nZXRfdHJpZ2dlcmZ1 bmN0aW9ucy5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVz L3RyaWdnZXIvc3FsLzkuMV9wbHVzL2dldF90cmlnZ2VyZnVuY3Rpb25zLnNx bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MTM0ZTBl Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3Rl bXBsYXRlcy90cmlnZ2VyL3NxbC85LjFfcGx1cy9nZXRfdHJpZ2dlcmZ1bmN0 aW9ucy5zcWwKQEAgLTAsMCArMSwxMSBAQAorU0VMRUNUIHF1b3RlX2lkZW50 KG5zcG5hbWUpIHx8ICcuJyB8fCBxdW90ZV9pZGVudChwcm9uYW1lKSBBUyB0 ZnVuY3Rpb25zCitGUk9NIHBnX3Byb2MgcCwgcGdfbmFtZXNwYWNlIG4sIHBn X2xhbmd1YWdlIGwKKyAgICBXSEVSRSBwLnByb25hbWVzcGFjZSA9IG4ub2lk CisgICAgQU5EIHAucHJvbGFuZyA9IGwub2lkCisgICAgLS0gUEdPSURfVFlQ RV9UUklHR0VSID0gMjI3OQorICAgIEFORCBsLmxhbm5hbWUgIT0gJ2VkYnNw bCcgQU5EIHByb3JldHR5cGUgPSAyMjc5CisgICAgLS0gSWYgU2hvdyBTeXN0 ZW1PYmplY3RzIGlzIG5vdCB0cnVlCisgICAgeyUgaWYgbm90IHNob3dfc3lz dGVtX29iamVjdHMgJX0KKyAgICBBTkQgKG5zcG5hbWUgTk9UIExJS0UgRSdw Z1xfJScgQU5EIG5zcG5hbWUgTk9UIGluICgnaW5mb3JtYXRpb25fc2NoZW1h JykpCisgICAgeyUgZW5kaWYgJX0KKyAgICBPUkRFUiBCWSBuc3BuYW1lIEFT QywgcHJvbmFtZSBBU0MKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3Rh Ymxlcy90ZW1wbGF0ZXMvdHJpZ2dlci9zcWwvOS4xX3BsdXMvbm9kZXMuc3Fs IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy90cmlnZ2VyL3Nx bC85LjFfcGx1cy9ub2Rlcy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uMDk1YWRhMwotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvdHJpZ2dlci9zcWwvOS4xX3Bs dXMvbm9kZXMuc3FsCkBAIC0wLDAgKzEsNSBAQAorU0VMRUNUIHQub2lkLCB0 LnRnbmFtZSBhcyBuYW1lLCAoQ0FTRSBXSEVOIHRnZW5hYmxlZCA9ICdPJyBU SEVOIHRydWUgRWxTRSBmYWxzZSBFTkQpIEFTIGlzX2VuYWJsZV90cmlnZ2Vy CitGUk9NIHBnX3RyaWdnZXIgdAorICAgIFdIRVJFIE5PVCB0Z2lzaW50ZXJu YWwKKyAgICBBTkQgdGdyZWxpZCA9IHt7dGlkfX06Ok9JRAorICAgIE9SREVS IEJZIHRnbmFtZTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxl cy90ZW1wbGF0ZXMvdHJpZ2dlci9zcWwvOS4xX3BsdXMvcHJvcGVydGllcy5z cWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3RyaWdnZXIv c3FsLzkuMV9wbHVzL3Byb3BlcnRpZXMuc3FsCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLjUzNTYyN2IKLS0tIC9kZXYvbnVsbAorKysg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3RyaWdnZXIvc3Fs LzkuMV9wbHVzL3Byb3BlcnRpZXMuc3FsCkBAIC0wLDAgKzEsMjMgQEAKK1NF TEVDVCB0Lm9pZCx0LnRnbmFtZSBBUyBuYW1lLCB0LnhtaW4sIHQuKiwgcmVs bmFtZSwgQ0FTRSBXSEVOIHJlbGtpbmQgPSAncicgVEhFTiBUUlVFIEVMU0Ug RkFMU0UgRU5EIEFTIHBhcmVudGlzdGFibGUsCisgICAgbnNwbmFtZSwgZGVz LmRlc2NyaXB0aW9uLCBsLmxhbm5hbWUsIHAucHJvc3JjLCBwLnByb25hbWUg QVMgdGZ1bmN0aW9uLAorICAgIENPQUxFU0NFKHN1YnN0cmluZyhwZ19nZXRf dHJpZ2dlcmRlZih0Lm9pZCksICdXSEVOICguKikgRVhFQ1VURSBQUk9DRURV UkUnKSwKKyAgICBzdWJzdHJpbmcocGdfZ2V0X3RyaWdnZXJkZWYodC5vaWQp LCAnV0hFTiAoLiopICBcXCR0cmlnZ2VyJykpIEFTIHdoZW5jbGF1c2UsCisg ICAgLS0gV2UgbmVlZCB0byBjb252ZXJ0IHRnYXJncyBjb2x1bW4gYnl0ZWEg ZGF0YXR5cGUgdG8gYXJyYXkgZGF0YXR5cGUKKyAgICAoc3RyaW5nX3RvX2Fy cmF5KGVuY29kZSh0Z2FyZ3MsICdlc2NhcGUnKSwgJ1wwMDAnKTo6dGV4dFtd KVsxOnRnbmFyZ3NdIEFTIHRnYXJncywKK3slIGlmIGRhdGxhc3RzeXNvaWQg JX0KKyAgICAoQ0FTRSBXSEVOIHQub2lkIDw9IHt7IGRhdGxhc3RzeXNvaWR9 fTo6b2lkIFRIRU4gdHJ1ZSBFbFNFIGZhbHNlIEVORCkgQVMgaXNfc3lzX3Ry aWdnZXIsCit7JSBlbmRpZiAlfQorICAgIChDQVNFIFdIRU4gdGdjb25zdHJh aW50ICE9IDA6Ok9JRCBUSEVOIHRydWUgRWxTRSBmYWxzZSBFTkQpIEFTIGlz X2NvbnN0YXJpbnQsCisgICAgKENBU0UgV0hFTiB0Z2VuYWJsZWQgPSAnTycg VEhFTiB0cnVlIEVsU0UgZmFsc2UgRU5EKSBBUyBpc19lbmFibGVfdHJpZ2dl cgorRlJPTSBwZ190cmlnZ2VyIHQKKyAgICBKT0lOIHBnX2NsYXNzIGNsIE9O IGNsLm9pZD10Z3JlbGlkCisgICAgSk9JTiBwZ19uYW1lc3BhY2UgbmEgT04g bmEub2lkPXJlbG5hbWVzcGFjZQorICAgIExFRlQgT1VURVIgSk9JTiBwZ19k ZXNjcmlwdGlvbiBkZXMgT04gKGRlcy5vYmpvaWQ9dC5vaWQgQU5EIGRlcy5j bGFzc29pZD0ncGdfdHJpZ2dlcic6OnJlZ2NsYXNzKQorICAgIExFRlQgT1VU RVIgSk9JTiBwZ19wcm9jIHAgT04gcC5vaWQ9dC50Z2ZvaWQKKyAgICBMRUZU IE9VVEVSIEpPSU4gcGdfbGFuZ3VhZ2UgbCBPTiBsLm9pZD1wLnByb2xhbmcK K1dIRVJFIE5PVCB0Z2lzaW50ZXJuYWwKKyAgICBBTkQgdGdyZWxpZCA9IHt7 dGlkfX06Ok9JRAoreyUgaWYgdHJpZCAlfQorICAgIEFORCB0Lm9pZCA9IHt7 dHJpZH19OjpPSUQKK3slIGVuZGlmICV9CitPUkRFUiBCWSB0Z25hbWU7CmRp ZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3Ry aWdnZXIvc3FsLzkuMV9wbHVzL3VwZGF0ZS5zcWwgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy90YWJsZXMvdGVtcGxhdGVzL3RyaWdnZXIvc3FsLzkuMV9wbHVzL3VwZGF0 ZS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmE2 NDgwOQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxl cy90ZW1wbGF0ZXMvdHJpZ2dlci9zcWwvOS4xX3BsdXMvdXBkYXRlLnNxbApA QCAtMCwwICsxLDggQEAKK3slIGlmIGRhdGEubmFtZSBhbmQgb19kYXRhLm5h bWUgIT0gZGF0YS5uYW1lICV9CitBTFRFUiBUUklHR0VSIHt7IGNvbm58cXRJ ZGVudChvX2RhdGEubmFtZSkgfX0gT04ge3sgY29ubnxxdElkZW50KG9fZGF0 YS5uc3BuYW1lLCBvX2RhdGEucmVsbmFtZSkgfX0KKyAgICBSRU5BTUUgVE8g e3sgY29ubnxxdElkZW50KGRhdGEubmFtZSkgfX07Cit7JSBlbmRpZiAlfQor eyUgaWYgZGF0YS5kZXNjcmlwdGlvbiBpcyBkZWZpbmVkICBhbmQgb19kYXRh LmRlc2NyaXB0aW9uICE9IGRhdGEuZGVzY3JpcHRpb24gJX0KK0NPTU1FTlQg T04gVFJJR0dFUiB7eyBjb25ufHF0SWRlbnQoZGF0YS5uYW1lKSB9fSBPTiB7 eyBjb25ufHF0SWRlbnQob19kYXRhLm5zcG5hbWUsIG9fZGF0YS5yZWxuYW1l KSB9fQorICAgIElTIHt7ZGF0YS5kZXNjcmlwdGlvbnxxdExpdGVyYWx9fTsK K3slIGVuZGlmICV9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm IC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RyaWdnZXJzL19faW5p dF9fLnB5IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RyaWdnZXJzL19faW5p dF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYz NDQ4M2EKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJs ZXMvdHJpZ2dlcnMvX19pbml0X18ucHkKQEAgLTAsMCArMSw5NDQgQEAKKyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjCisjIHBnQWRtaW4gNCAt IFBvc3RncmVTUUwgVG9vbHMKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDEzIC0g MjAxNiwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorIyBUaGlzIHNv ZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2Vu Y2UKKyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyIiIiBJ bXBsZW1lbnRzIFRyaWdnZXIgTm9kZSAiIiIKKworZnJvbSBmbGFzayBpbXBv cnQgcmVuZGVyX3RlbXBsYXRlLCBtYWtlX3Jlc3BvbnNlLCByZXF1ZXN0LCBq c29uaWZ5Citmcm9tIGZsYXNrLmV4dC5iYWJlbCBpbXBvcnQgZ2V0dGV4dAor ZnJvbSBwZ2FkbWluLnV0aWxzLmFqYXggaW1wb3J0IG1ha2VfanNvbl9yZXNw b25zZSwgXAorICAgIG1ha2VfcmVzcG9uc2UgYXMgYWpheF9yZXNwb25zZSwg aW50ZXJuYWxfc2VydmVyX2Vycm9yCitmcm9tIHBnYWRtaW4uYnJvd3Nlci51 dGlscyBpbXBvcnQgUEdDaGlsZE5vZGVWaWV3Citmcm9tIHBnYWRtaW4uYnJv d3Nlci5jb2xsZWN0aW9uIGltcG9ydCBDb2xsZWN0aW9uTm9kZU1vZHVsZQor aW1wb3J0IHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMu ZGF0YWJhc2VzIGFzIGRhdGFiYXNlCitmcm9tIHBnYWRtaW4uYnJvd3Nlci5z ZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMuZGF0YWJhc2VzLnNjaGVtYXMudXRpbHMg aW1wb3J0IFwKKyAgICB0cmlnZ2VyX2RlZmluaXRpb24gYXMgX3RyaWdnZXJf ZGVmaW5pdGlvbgorZnJvbSBwZ2FkbWluLnV0aWxzLmFqYXggaW1wb3J0IHBy ZWNvbmRpdGlvbl9yZXF1aXJlZAorZnJvbSBwZ2FkbWluLnV0aWxzLmRyaXZl ciBpbXBvcnQgZ2V0X2RyaXZlcgorZnJvbSBjb25maWcgaW1wb3J0IFBHX0RF RkFVTFRfRFJJVkVSCitmcm9tIGZ1bmN0b29scyBpbXBvcnQgd3JhcHMKK2lt cG9ydCBqc29uCisKKworY2xhc3MgVHJpZ2dlck1vZHVsZShDb2xsZWN0aW9u Tm9kZU1vZHVsZSk6CisgICAgIiIiCisgICAgIGNsYXNzIFRyaWdnZXJNb2R1 bGUoQ29sbGVjdGlvbk5vZGVNb2R1bGUpCisKKyAgICAgICAgQSBtb2R1bGUg Y2xhc3MgZm9yIFRyaWdnZXIgbm9kZSBkZXJpdmVkIGZyb20gQ29sbGVjdGlv bk5vZGVNb2R1bGUuCisKKyAgICBNZXRob2RzOgorICAgIC0tLS0tLS0KKyAg ICAqIF9faW5pdF9fKCphcmdzLCAqKmt3YXJncykKKyAgICAgIC0gTWV0aG9k IGlzIHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUgVHJpZ2dlciBhbmQgaXQncyBi YXNlIG1vZHVsZS4KKworICAgICogZ2V0X25vZGVzKGdpZCwgc2lkLCBkaWQs IHNjaWQsIHRpZCkKKyAgICAgIC0gTWV0aG9kIGlzIHVzZWQgdG8gZ2VuZXJh dGUgdGhlIGJyb3dzZXIgY29sbGVjdGlvbiBub2RlLgorCisgICAgKiBub2Rl X2lub2RlKCkKKyAgICAgIC0gTWV0aG9kIGlzIG92ZXJyaWRkZW4gZnJvbSBp dHMgYmFzZSBjbGFzcyB0byBtYWtlIHRoZSBub2RlIGFzIGxlYWYgbm9kZS4K KworICAgICogc2NyaXB0X2xvYWQoKQorICAgICAgLSBMb2FkIHRoZSBtb2R1 bGUgc2NyaXB0IGZvciB0cmlnZ2VyLCB3aGVuIGFueSBvZiB0aGUgc2VydmVy IG5vZGUgaXMKKyAgICAgICAgaW5pdGlhbGl6ZWQuCisgICAgIiIiCisKKyAg ICBOT0RFX1RZUEUgPSAndHJpZ2dlcicKKyAgICBDT0xMRUNUSU9OX0xBQkVM ID0gZ2V0dGV4dCgiVHJpZ2dlcnMiKQorCisgICAgZGVmIF9faW5pdF9fKHNl bGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICIiIgorICAgICAgICBN ZXRob2QgaXMgdXNlZCB0byBpbml0aWFsaXplIHRoZSBUcmlnZ2VyTW9kdWxl IGFuZCBpdCdzIGJhc2UgbW9kdWxlLgorCisgICAgICAgIEFyZ3M6CisgICAg ICAgICAgICAqYXJnczoKKyAgICAgICAgICAgICoqa3dhcmdzOgorICAgICAg ICAiIiIKKyAgICAgICAgc2VsZi5taW5fdmVyID0gTm9uZQorICAgICAgICBz ZWxmLm1heF92ZXIgPSBOb25lCisgICAgICAgIHN1cGVyKFRyaWdnZXJNb2R1 bGUsIHNlbGYpLl9faW5pdF9fKCphcmdzLCAqKmt3YXJncykKKworICAgIGRl ZiBCYWNrZW5kU3VwcG9ydGVkKHNlbGYsIG1hbmFnZXIsICoqa3dhcmdzKToK KyAgICAgICAgIiIiCisgICAgICAgIExvYWQgdGhpcyBtb2R1bGUgaWYgdmlk IGlzIHZpZXcsIHdlIHdpbGwgbm90IGxvYWQgaXQgdW5kZXIKKyAgICAgICAg bWF0ZXJpYWwgdmlldworICAgICAgICAiIiIKKyAgICAgICAgaWYgc3VwZXIo VHJpZ2dlck1vZHVsZSwgc2VsZikuQmFja2VuZFN1cHBvcnRlZChtYW5hZ2Vy LCAqKmt3YXJncyk6CisgICAgICAgICAgICBjb25uID0gbWFuYWdlci5jb25u ZWN0aW9uKGRpZD1rd2FyZ3NbJ2RpZCddKQorICAgICAgICAgICAgIyBJZiBE QiBpcyBub3QgY29ubmVjdGVkIHRoZW4gcmV0dXJuIGVycm9yIHRvIGJyb3dz ZXIKKyAgICAgICAgICAgIGlmIG5vdCBjb25uLmNvbm5lY3RlZCgpOgorICAg ICAgICAgICAgICAgIHJldHVybiBwcmVjb25kaXRpb25fcmVxdWlyZWQoCisg ICAgICAgICAgICAgICAgICAgIGdldHRleHQoCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIkNvbm5lY3Rpb24gdG8gdGhlIHNlcnZlciBoYXMgYmVl biBsb3N0ISIKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAg ICAgICkKKworICAgICAgICAgICAgaWYgJ3ZpZCcgbm90IGluIGt3YXJnczoK KyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgICAgICAgICB0 ZW1wbGF0ZV9wYXRoID0gJ3RyaWdnZXIvc3FsLzkuMV9wbHVzJworICAgICAg ICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKAorICAgICAg ICAgICAgICAgICAgW3RlbXBsYXRlX3BhdGgsICdiYWNrZW5kX3N1cHBvcnQu c3FsJ10pLCB2aWQ9a3dhcmdzWyd2aWQnXSkKKyAgICAgICAgICAgIHN0YXR1 cywgcmVzID0gY29ubi5leGVjdXRlX3NjYWxhcihTUUwpCisgICAgICAgICAg ICAjIGNoZWNrIGlmIGFueSBlcnJvcnMKKyAgICAgICAgICAgIGlmIG5vdCBz dGF0dXM6CisgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZl cl9lcnJvcihlcnJvcm1zZz1yZXMpCisgICAgICAgICAgICAjIENoZWNrIHZp ZCBpcyB2aWV3IG5vdCBtYXRlcmlhbCB2aWV3CisgICAgICAgICAgICAjIHRo ZW4gdHJ1ZSwgb3RoZXdpc2UgZmFsc2UKKyAgICAgICAgICAgIHJldHVybiBy ZXMKKworICAgIGRlZiBnZXRfbm9kZXMoc2VsZiwgZ2lkLCBzaWQsIGRpZCwg c2NpZCwgKiprd2FyZ3MpOgorICAgICAgICAiIiIKKyAgICAgICAgR2VuZXJh dGUgdGhlIGNvbGxlY3Rpb24gbm9kZQorICAgICAgICAiIiIKKyAgICAgICAg YXNzZXJ0KCd0aWQnIGluIGt3YXJncyBvciAndmlkJyBpbiBrd2FyZ3MpCisg ICAgICAgIHlpZWxkIHNlbGYuZ2VuZXJhdGVfYnJvd3Nlcl9jb2xsZWN0aW9u X25vZGUoCisgICAgICAgICAgICBrd2FyZ3NbJ3RpZCddIGlmICd0aWQnIGlu IGt3YXJncyBlbHNlIGt3YXJnc1sndmlkJ10KKyAgICAgICAgKQorCisgICAg QHByb3BlcnR5CisgICAgZGVmIHNjcmlwdF9sb2FkKHNlbGYpOgorICAgICAg ICAiIiIKKyAgICAgICAgTG9hZCB0aGUgbW9kdWxlIHNjcmlwdCBmb3Igc2Vy dmVyLCB3aGVuIGFueSBvZiB0aGUgc2VydmVyLWdyb3VwIG5vZGUgaXMKKyAg ICAgICAgaW5pdGlhbGl6ZWQuCisgICAgICAgICIiIgorICAgICAgICByZXR1 cm4gZGF0YWJhc2UuRGF0YWJhc2VNb2R1bGUuTk9ERV9UWVBFCisKKyAgICBA cHJvcGVydHkKKyAgICBkZWYgbm9kZV9pbm9kZShzZWxmKToKKyAgICAgICAg IiIiCisgICAgICAgIExvYWQgdGhlIG1vZHVsZSBub2RlIGFzIGEgbGVhZiBu b2RlCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAg QHByb3BlcnR5CisgICAgZGVmIGNzc3NuaXBwZXRzKHNlbGYpOgorICAgICAg ICAiIiIKKyAgICAgICAgUmV0dXJucyBhIHNuaXBwZXQgb2YgY3NzIHRvIGlu Y2x1ZGUgaW4gdGhlIHBhZ2UKKyAgICAgICAgIiIiCisgICAgICAgIHNuaXBw ZXRzID0gWworICAgICAgICAgICAgICAgIHJlbmRlcl90ZW1wbGF0ZSgKKyAg ICAgICAgICAgICAgICAgICAgInRyaWdnZXIvY3NzL3RyaWdnZXIuY3NzIiwK KyAgICAgICAgICAgICAgICAgICAgbm9kZV90eXBlPXNlbGYubm9kZV90eXBl CisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBdCisK KyAgICAgICAgZm9yIHN1Ym1vZHVsZSBpbiBzZWxmLnN1Ym1vZHVsZXM6Cisg ICAgICAgICAgICBzbmlwcGV0cy5leHRlbmQoc3VibW9kdWxlLmNzc3NuaXBw ZXRzKQorCisgICAgICAgIHJldHVybiBzbmlwcGV0cworCitibHVlcHJpbnQg PSBUcmlnZ2VyTW9kdWxlKF9fbmFtZV9fKQorCisKK2NsYXNzIFRyaWdnZXJW aWV3KFBHQ2hpbGROb2RlVmlldyk6CisgICAgIiIiCisgICAgVGhpcyBjbGFz cyBpcyByZXNwb25zaWJsZSBmb3IgZ2VuZXJhdGluZyByb3V0ZXMgZm9yIFRy aWdnZXIgbm9kZQorCisgICAgTWV0aG9kczoKKyAgICAtLS0tLS0tCisgICAg KiBfX2luaXRfXygqKmt3YXJncykKKyAgICAgIC0gTWV0aG9kIGlzIHVzZWQg dG8gaW5pdGlhbGl6ZSB0aGUgVHJpZ2dlclZpZXcgYW5kIGl0J3MgYmFzZSB2 aWV3LgorCisgICAgKiBtb2R1bGVfanMoKQorICAgICAgLSBUaGlzIHByb3Bl cnR5IGRlZmluZXMgKGlmIGphdmFzY3JpcHQpIGV4aXN0cyBmb3IgdGhpcyBu b2RlLgorICAgICAgICBPdmVycmlkZSB0aGlzIHByb3BlcnR5IGZvciB5b3Vy IG93biBsb2dpYworCisgICAgKiBjaGVja19wcmVjb25kaXRpb24oKQorICAg ICAgLSBUaGlzIGZ1bmN0aW9uIHdpbGwgYmVoYXZlIGFzIGEgZGVjb3JhdG9y IHdoaWNoIHdpbGwgY2hlY2tzCisgICAgICAgIGRhdGFiYXNlIGNvbm5lY3Rp b24gYmVmb3JlIHJ1bm5pbmcgdmlldywgaXQgd2lsbCBhbHNvIGF0dGFjaGVz CisgICAgICAgIG1hbmFnZXIsY29ubiAmIHRlbXBsYXRlX3BhdGggcHJvcGVy dGllcyB0byBzZWxmCisKKyAgICAqIGxpc3QoKQorICAgICAgLSBUaGlzIGZ1 bmN0aW9uIGlzIHVzZWQgdG8gbGlzdCBhbGwgdGhlIFRyaWdnZXIgbm9kZXMg d2l0aGluIHRoYXQKKyAgICAgIGNvbGxlY3Rpb24uCisKKyAgICAqIG5vZGVz KCkKKyAgICAgIC0gVGhpcyBmdW5jdGlvbiB3aWxsIHVzZWQgdG8gY3JlYXRl IGFsbCB0aGUgY2hpbGQgbm9kZSB3aXRoaW4gdGhhdAorICAgICAgICBjb2xs ZWN0aW9uLCBIZXJlIGl0IHdpbGwgY3JlYXRlIGFsbCB0aGUgVHJpZ2dlciBu b2RlLgorCisgICAgKiBwcm9wZXJ0aWVzKGdpZCwgc2lkLCBkaWQsIHNjaWQs IHRpZCwgdHJpZCkKKyAgICAgIC0gVGhpcyBmdW5jdGlvbiB3aWxsIHNob3cg dGhlIHByb3BlcnRpZXMgb2YgdGhlIHNlbGVjdGVkIFRyaWdnZXIgbm9kZQor CisgICAgKiBjcmVhdGUoZ2lkLCBzaWQsIGRpZCwgc2NpZCwgdGlkKQorICAg ICAgLSBUaGlzIGZ1bmN0aW9uIHdpbGwgY3JlYXRlIHRoZSBuZXcgVHJpZ2dl ciBvYmplY3QKKworICAgICogdXBkYXRlKGdpZCwgc2lkLCBkaWQsIHNjaWQs IHRpZCwgdHJpZCkKKyAgICAgIC0gVGhpcyBmdW5jdGlvbiB3aWxsIHVwZGF0 ZSB0aGUgZGF0YSBmb3IgdGhlIHNlbGVjdGVkIFRyaWdnZXIgbm9kZQorCisg ICAgKiBkZWxldGUoc2VsZiwgZ2lkLCBzaWQsIHNjaWQsIHRpZCwgdHJpZCk6 CisgICAgICAtIFRoaXMgZnVuY3Rpb24gd2lsbCBkcm9wIHRoZSBUcmlnZ2Vy IG9iamVjdAorCisgICAgKiBlbmFibGUoc2VsZiwgZ2lkLCBzaWQsIHNjaWQs IHRpZCwgdHJpZCk6CisgICAgICAtIFRoaXMgZnVuY3Rpb24gd2lsbCBlbmFi bGUvZGlzYWJsZSBUcmlnZ2VyIG9iamVjdAorCisgICAgKiBtc3FsKGdpZCwg c2lkLCBkaWQsIHNjaWQsIHRpZCwgdHJpZCkKKyAgICAgIC0gVGhpcyBmdW5j dGlvbiBpcyB1c2VkIHRvIHJldHVybiBtb2RpZmllZCBTUUwgZm9yIHRoZSBz ZWxlY3RlZAorICAgICAgICBUcmlnZ2VyIG5vZGUKKworICAgICogZ2V0X3Nx bChkYXRhLCBzY2lkLCB0aWQsIHRyaWQpCisgICAgICAtIFRoaXMgZnVuY3Rp b24gd2lsbCBnZW5lcmF0ZSBzcWwgZnJvbSBtb2RlbCBkYXRhCisKKyAgICAq IHNxbChnaWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQsIHRyaWQpOgorICAgICAg LSBUaGlzIGZ1bmN0aW9uIHdpbGwgZ2VuZXJhdGUgc3FsIHRvIHNob3cgaXQg aW4gc3FsIHBhbmUgZm9yIHRoZQorICAgICAgICBzZWxlY3RlZCBUcmlnZ2Vy IG5vZGUuCisKKyAgICAqIGRlcGVuZGVuY3koZ2lkLCBzaWQsIGRpZCwgc2Np ZCwgdGlkLCB0cmlkKToKKyAgICAgIC0gVGhpcyBmdW5jdGlvbiB3aWxsIGdl bmVyYXRlIGRlcGVuZGVuY3kgbGlzdCBzaG93IGl0IGluIGRlcGVuZGVuY3kK KyAgICAgICAgcGFuZSBmb3IgdGhlIHNlbGVjdGVkIFRyaWdnZXIgbm9kZS4K KworICAgICogZGVwZW5kZW50KGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRpZCwg dHJpZCk6CisgICAgICAtIFRoaXMgZnVuY3Rpb24gd2lsbCBnZW5lcmF0ZSBk ZXBlbmRlbnQgbGlzdCB0byBzaG93IGl0IGluIGRlcGVuZGVudAorICAgICAg ICBwYW5lIGZvciB0aGUgc2VsZWN0ZWQgVHJpZ2dlciBub2RlLgorCisgICAg KiBnZXRfdHJpZ2dlcl9mdW5jdGlvbnMoZ2lkLCBzaWQsIGRpZCwgc2NpZCwg dGlkLCB0cmlkKToKKyAgICAgIC0gVGhpcyBmdW5jdGlvbiB3aWxsIHJldHVy biBsaXN0IG9mIHRyaWdnZXIgZnVuY3Rpb25zIGF2YWlsYWJsZQorICAgICAg ICB2aWEgQUpBWCByZXNwb25zZQorCisgICAgKiBfY29sdW1uX2RldGFpbHMo dGlkLCBjbGlzdCk6OgorICAgICAgLSBUaGlzIGZ1bmN0aW9uIHdpbGwgZmV0 Y2ggdGhlIGNvbHVtbnMgZm9yIHRyaWdnZXIKKworICAgICogX3RyaWdnZXJf ZGVmaW5pdGlvbihkYXRhKToKKyAgICAgIC0gVGhpcyBmdW5jdGlvbiB3aWxs IHNldCBhZGRpdGlvbmFsIHRyaWdnZXIgZGVmaW5pdGlvbnMgaW4KKyAgICAg ICAgQUpBWCByZXNwb25zZQorICAgICIiIgorCisgICAgbm9kZV90eXBlID0g Ymx1ZXByaW50Lm5vZGVfdHlwZQorCisgICAgcGFyZW50X2lkcyA9IFsKKyAg ICAgICAgICAgIHsndHlwZSc6ICdpbnQnLCAnaWQnOiAnZ2lkJ30sCisgICAg ICAgICAgICB7J3R5cGUnOiAnaW50JywgJ2lkJzogJ3NpZCd9LAorICAgICAg ICAgICAgeyd0eXBlJzogJ2ludCcsICdpZCc6ICdkaWQnfSwKKyAgICAgICAg ICAgIHsndHlwZSc6ICdpbnQnLCAnaWQnOiAnc2NpZCd9LAorICAgICAgICAg ICAgeyd0eXBlJzogJ2ludCcsICdpZCc6ICd0aWQnfQorICAgICAgICAgICAg XQorICAgIGlkcyA9IFsKKyAgICAgICAgICAgIHsndHlwZSc6ICdpbnQnLCAn aWQnOiAndHJpZCd9CisgICAgICAgICAgICBdCisKKyAgICBvcGVyYXRpb25z ID0gZGljdCh7CisgICAgICAgICdvYmonOiBbCisgICAgICAgICAgICB7J2dl dCc6ICdwcm9wZXJ0aWVzJywgJ2RlbGV0ZSc6ICdkZWxldGUnLCAncHV0Jzog J3VwZGF0ZSd9LAorICAgICAgICAgICAgeydnZXQnOiAnbGlzdCcsICdwb3N0 JzogJ2NyZWF0ZSd9CisgICAgICAgIF0sCisgICAgICAgICdkZWxldGUnOiBb eydkZWxldGUnOiAnZGVsZXRlJ31dLAorICAgICAgICAnY2hpbGRyZW4nOiBb eydnZXQnOiAnY2hpbGRyZW4nfV0sCisgICAgICAgICdub2Rlcyc6IFt7J2dl dCc6ICdub2RlJ30sIHsnZ2V0JzogJ25vZGVzJ31dLAorICAgICAgICAnc3Fs JzogW3snZ2V0JzogJ3NxbCd9XSwKKyAgICAgICAgJ21zcWwnOiBbeydnZXQn OiAnbXNxbCd9LCB7J2dldCc6ICdtc3FsJ31dLAorICAgICAgICAnc3RhdHMn OiBbeydnZXQnOiAnc3RhdGlzdGljcyd9XSwKKyAgICAgICAgJ2RlcGVuZGVu Y3knOiBbeydnZXQnOiAnZGVwZW5kZW5jaWVzJ31dLAorICAgICAgICAnZGVw ZW5kZW50JzogW3snZ2V0JzogJ2RlcGVuZGVudHMnfV0sCisgICAgICAgICdt b2R1bGUuanMnOiBbe30sIHt9LCB7J2dldCc6ICdtb2R1bGVfanMnfV0sCisg ICAgICAgICdnZXRfdHJpZ2dlcmZ1bmN0aW9ucyc6IFt7J2dldCc6ICdnZXRf dHJpZ2dlcl9mdW5jdGlvbnMnfSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB7J2dldCc6ICdnZXRfdHJpZ2dlcl9mdW5jdGlvbnMnfV0sCisg ICAgICAgICdlbmFibGUnOiBbeydwdXQnOiAnZW5hYmxlX2Rpc2FibGVfdHJp Z2dlcid9XQorICAgIH0pCisKKyAgICBkZWYgY2hlY2tfcHJlY29uZGl0aW9u KGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxs IGJlaGF2ZSBhcyBhIGRlY29yYXRvciB3aGljaCB3aWxsIGNoZWNrcworICAg ICAgICBkYXRhYmFzZSBjb25uZWN0aW9uIGJlZm9yZSBydW5uaW5nIHZpZXcs IGl0IHdpbGwgYWxzbyBhdHRhY2hlcworICAgICAgICBtYW5hZ2VyLGNvbm4g JiB0ZW1wbGF0ZV9wYXRoIHByb3BlcnRpZXMgdG8gc2VsZgorICAgICAgICAi IiIKKyAgICAgICAgQHdyYXBzKGYpCisgICAgICAgIGRlZiB3cmFwKCphcmdz LCAqKmt3YXJncyk6CisgICAgICAgICAgICAjIEhlcmUgYXJnc1swXSB3aWxs IGhvbGQgc2VsZiAmIGt3YXJncyB3aWxsIGhvbGQgZ2lkLHNpZCxkaWQKKyAg ICAgICAgICAgIHNlbGYgPSBhcmdzWzBdCisgICAgICAgICAgICBzZWxmLm1h bmFnZXIgPSBnZXRfZHJpdmVyKFBHX0RFRkFVTFRfRFJJVkVSKS5jb25uZWN0 aW9uX21hbmFnZXIoCisgICAgICAgICAgICAgICAga3dhcmdzWydzaWQnXQor ICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5jb25uID0gc2VsZi5t YW5hZ2VyLmNvbm5lY3Rpb24oZGlkPWt3YXJnc1snZGlkJ10pCisgICAgICAg ICAgICAjIElmIERCIG5vdCBjb25uZWN0ZWQgdGhlbiByZXR1cm4gZXJyb3Ig dG8gYnJvd3NlcgorICAgICAgICAgICAgaWYgbm90IHNlbGYuY29ubi5jb25u ZWN0ZWQoKToKKyAgICAgICAgICAgICAgICByZXR1cm4gcHJlY29uZGl0aW9u X3JlcXVpcmVkKAorICAgICAgICAgICAgICAgICAgICBnZXR0ZXh0KAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICJDb25uZWN0aW9uIHRvIHRoZSBz ZXJ2ZXIgaGFzIGJlZW4gbG9zdCEiCisgICAgICAgICAgICAgICAgICAgICkK KyAgICAgICAgICAgICAgICApCisKKyAgICAgICAgICAgICMgV2UgbmVlZCBk YXRsYXN0c3lzb2lkIHRvIGNoZWNrIGlmIGN1cnJlbnQgdHJpZ2dlciBpcyBz eXN0ZW0gdHJpZ2dlcgorICAgICAgICAgICAgc2VsZi5kYXRsYXN0c3lzb2lk ID0gc2VsZi5tYW5hZ2VyLmRiX2luZm9ba3dhcmdzWydkaWQnXV1bJ2RhdGxh c3RzeXNvaWQnXQorCisgICAgICAgICAgICAjIHdlIHdpbGwgc2V0IHRlbXBs YXRlIHBhdGggZm9yIHNxbCBzY3JpcHRzCisgICAgICAgICAgICBzZWxmLnRl bXBsYXRlX3BhdGggPSAndHJpZ2dlci9zcWwvOS4xX3BsdXMnCisgICAgICAg ICAgICAjIFN0b3JlIHNlcnZlciB0eXBlCisgICAgICAgICAgICBzZWxmLnNl cnZlcl90eXBlID0gc2VsZi5tYW5hZ2VyLnNlcnZlcl90eXBlCisgICAgICAg ICAgICAjIFdlIG5lZWQgcGFyZW50J3MgbmFtZSBlZyB0YWJsZSBuYW1lIGFu ZCBzY2hlbWEgbmFtZQorICAgICAgICAgICAgIyB3aGVuIHdlIGNyZWF0ZSBu ZXcgdHJpZ2dlciBpbiB1cGRhdGUgd2UgY2FuIGZldGNoIGl0IHVzaW5nCisg ICAgICAgICAgICAjIHByb3BlcnR5IHNxbAorICAgICAgICAgICAgU1FMID0g cmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICdnZXRfcGFyZW50LnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB0aWQ9a3dhcmdzWyd0aWQnXSkKKyAgICAgICAgICAgIHN0 YXR1cywgcnNldCA9IHNlbGYuY29ubi5leGVjdXRlXzJkYXJyYXkoU1FMKQor ICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICBy ZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJzZXQpCisK KyAgICAgICAgICAgIGZvciByb3cgaW4gcnNldFsncm93cyddOgorICAgICAg ICAgICAgICAgIHNlbGYuc2NoZW1hID0gcm93WydzY2hlbWEnXQorICAgICAg ICAgICAgICAgIHNlbGYudGFibGUgPSByb3dbJ3RhYmxlJ10KKworICAgICAg ICAgICAgIyBIZXJlIHdlIGFyZSBzdG9yaW5nIHRyaWdnZXIgZGVmaW5pdGlv bgorICAgICAgICAgICAgIyBXZSB3aWxsIHVzZSBpdCB0byBjaGVjayB0cmln Z2VyIHR5cGUgZGVmaW5pdGlvbgorICAgICAgICAgICAgc2VsZi50cmlnZ2Vy X2RlZmluaXRpb24gPSB7CisgICAgICAgICAgICAgICAgJ1RSSUdHRVJfVFlQ RV9ST1cnOiAgICAgICAgICgxIDw8IDApLAorICAgICAgICAgICAgICAgICdU UklHR0VSX1RZUEVfQkVGT1JFJzogICAgICAoMSA8PCAxKSwKKyAgICAgICAg ICAgICAgICAnVFJJR0dFUl9UWVBFX0lOU0VSVCc6ICAgICAgKDEgPDwgMiks CisgICAgICAgICAgICAgICAgJ1RSSUdHRVJfVFlQRV9ERUxFVEUnOiAgICAg ICgxIDw8IDMpLAorICAgICAgICAgICAgICAgICdUUklHR0VSX1RZUEVfVVBE QVRFJzogICAgICAoMSA8PCA0KSwKKyAgICAgICAgICAgICAgICAnVFJJR0dF Ul9UWVBFX1RSVU5DQVRFJzogICAgKDEgPDwgNSksCisgICAgICAgICAgICAg ICAgJ1RSSUdHRVJfVFlQRV9JTlNURUFEJzogICAgICgxIDw8IDYpCisgICAg ICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBmKCphcmdzLCAqKmt3 YXJncykKKworICAgICAgICByZXR1cm4gd3JhcAorCisgICAgQGNoZWNrX3By ZWNvbmRpdGlvbgorICAgIGRlZiBnZXRfdHJpZ2dlcl9mdW5jdGlvbnMoc2Vs ZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgdGlkLCB0cmlkPU5vbmUpOgorICAg ICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIHJldHVybiBs aXN0IG9mIHRyaWdnZXIgZnVuY3Rpb25zIGF2YWlsYWJsZQorICAgICAgICB2 aWEgQUpBWCByZXNwb25zZQorICAgICAgICAiIiIKKyAgICAgICAgcmVzID0g W3snbGFiZWwnOiAnJywgJ3ZhbHVlJzogJyd9XQorCisgICAgICAgICMgVE9E TzogUkVNT1ZFIFRydWUgQ29uZGl0aW9uICwgaXQncyBqdXN0IGZvciB0ZXN0 aW5nCisgICAgICAgICMgSWYgc2VydmVyIHR5cGUgaXMgRURCLVBQQVMgdGhl biB3ZSBhbHNvIG5lZWQgdG8gYWRkCisgICAgICAgICMgaW5saW5lIGVkYi1z cGwgYWxvbmcgd2l0aCBvcHRpb25zIGZldGNoZWQgYnkgYmVsb3cgc3FsCisK KyAgICAgICAgaWYgc2VsZi5zZXJ2ZXJfdHlwZSA9PSAncHBhcyc6CisgICAg ICAgICAgICByZXMuYXBwZW5kKHsKKyAgICAgICAgICAgICAgICAnbGFiZWwn OiAnSW5saW5lIEVEQi1TUEwnLAorICAgICAgICAgICAgICAgICd2YWx1ZSc6 ICdJbmxpbmUgRURCLVNQTCcKKyAgICAgICAgICAgICAgICB9KQorICAgICAg ICB0cnk6CisgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8i LmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dldF90cmlnZ2VyZnVuY3Rp b25zLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzaG93X3N5c3RlbV9vYmplY3RzPXNlbGYuYmx1ZXByaW50LnNob3dfc3lz dGVtX29iamVjdHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICApCisgICAgICAgICAgICBzdGF0dXMsIHJzZXQgPSBzZWxmLmNvbm4uZXhl Y3V0ZV8yZGFycmF5KFNRTCkKKyAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6 CisgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJv cihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgICAgIGZvciByb3cgaW4gcnNl dFsncm93cyddOgorICAgICAgICAgICAgICAgIHJlcy5hcHBlbmQoCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgeydsYWJlbCc6IHJvd1sndGZ1bmN0 aW9ucyddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmFsdWUn OiByb3dbJ3RmdW5jdGlvbnMnXX0KKyAgICAgICAgICAgICAgICAgICAgICAg ICkKKyAgICAgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCisg ICAgICAgICAgICAgICAgICAgIGRhdGE9cmVzLAorICAgICAgICAgICAgICAg ICAgICBzdGF0dXM9MjAwCisgICAgICAgICAgICAgICAgICAgICkKKworICAg ICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICByZXR1 cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXN0cihlKSkKKwor ICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgbGlzdChzZWxmLCBn aWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQpOgorICAgICAgICAiIiIKKyAgICAg ICAgVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGxpc3QgYWxsIHRoZSB0cmln Z2VyIG5vZGVzIHdpdGhpbiB0aGF0IGNvbGxlY3Rpb24uCisKKyAgICAgICAg QXJnczoKKyAgICAgICAgICAgIGdpZDogU2VydmVyIGdyb3VwIElECisgICAg ICAgICAgICBzaWQ6IFNlcnZlciBJRAorICAgICAgICAgICAgZGlkOiBEYXRh YmFzZSBJRAorICAgICAgICAgICAgc2NpZDogU2NoZW1hIElECisgICAgICAg ICAgICB0aWQ6IFRhYmxlIElECisKKyAgICAgICAgUmV0dXJuczoKKyAgICAg ICAgICAgIEpTT04gb2YgYXZhaWxhYmxlIHRyaWdnZXIgbm9kZXMKKyAgICAg ICAgIiIiCisKKyAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5q b2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJ3Byb3BlcnRpZXMuc3FsJ10pLCB0aWQ9 dGlkKQorICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRl X2RpY3QoU1FMKQorCisgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAg ICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJl cykKKyAgICAgICAgcmV0dXJuIGFqYXhfcmVzcG9uc2UoCisgICAgICAgICAg ICAgICAgcmVzcG9uc2U9cmVzWydyb3dzJ10sCisgICAgICAgICAgICAgICAg c3RhdHVzPTIwMAorICAgICAgICAgICAgICAgICkKKworICAgIEBjaGVja19w cmVjb25kaXRpb24KKyAgICBkZWYgbm9kZXMoc2VsZiwgZ2lkLCBzaWQsIGRp ZCwgc2NpZCwgdGlkKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVu Y3Rpb24gd2lsbCB1c2VkIHRvIGNyZWF0ZSBhbGwgdGhlIGNoaWxkIG5vZGUg d2l0aGluIHRoYXQgY29sbGVjdGlvbi4KKyAgICAgICAgSGVyZSBpdCB3aWxs IGNyZWF0ZSBhbGwgdGhlIHRyaWdnZXIgbm9kZS4KKworICAgICAgICBBcmdz OgorICAgICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAgSUQKKyAgICAgICAg ICAgIHNpZDogU2VydmVyIElECisgICAgICAgICAgICBkaWQ6IERhdGFiYXNl IElECisgICAgICAgICAgICBzY2lkOiBTY2hlbWEgSUQKKyAgICAgICAgICAg IHRpZDogVGFibGUgSUQKKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAg ICAgSlNPTiBvZiBhdmFpbGFibGUgdHJpZ2dlciBjaGlsZCBub2RlcworICAg ICAgICAiIiIKKyAgICAgICAgcmVzID0gW10KKyAgICAgICAgU1FMID0gcmVu ZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25vZGVz LnNxbCddKSwgdGlkPXRpZCkKKyAgICAgICAgc3RhdHVzLCByc2V0ID0gc2Vs Zi5jb25uLmV4ZWN1dGVfMmRhcnJheShTUUwpCisgICAgICAgIGlmIG5vdCBz dGF0dXM6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vy cm9yKGVycm9ybXNnPXJzZXQpCisKKyAgICAgICAgZm9yIHJvdyBpbiByc2V0 Wydyb3dzJ106CisgICAgICAgICAgICByZXMuYXBwZW5kKAorICAgICAgICAg ICAgICAgICAgICBzZWxmLmJsdWVwcmludC5nZW5lcmF0ZV9icm93c2VyX25v ZGUoCisgICAgICAgICAgICAgICAgICAgICAgICByb3dbJ29pZCddLAorICAg ICAgICAgICAgICAgICAgICAgICAgdGlkLAorICAgICAgICAgICAgICAgICAg ICAgICAgcm93WyduYW1lJ10sCisgICAgICAgICAgICAgICAgICAgICAgICBp Y29uPSJpY29uLXRyaWdnZXIiIGlmIHJvd1snaXNfZW5hYmxlX3RyaWdnZXIn XQorICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAiaWNvbi10cmlnZ2Vy LWJhZCIKKyAgICAgICAgICAgICAgICAgICAgKSkKKworICAgICAgICByZXR1 cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgICAgIGRhdGE9 cmVzLAorICAgICAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAgICAgICAg ICAgICApCisKKyAgICBkZWYgX2NvbHVtbl9kZXRhaWxzKHNlbGYsIHRpZCwg Y2xpc3QpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbmFs IHdpbGwgZmV0Y2ggbGlzdCBvZiBjb2x1bW4gZm9yIHRyaWdnZXIKKworICAg ICAgICBBcmdzOgorICAgICAgICAgICAgdGlkOiBUYWJsZSBPSUQKKyAgICAg ICAgICAgIGNsaXN0OiBMaXN0IG9mIGNvbHVtbnMKKworICAgICAgICBSZXR1 cm5zOgorICAgICAgICAgICAgVXBkYXRlZCBwcm9wZXJ0aWVzIGRhdGEgd2l0 aCBjb2x1bW4KKyAgICAgICAgIiIiCisKKyAgICAgICAgU1FMID0gcmVuZGVy X3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dldF9jb2x1 bW5zLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRp ZD10aWQsIGNsaXN0PWNsaXN0KQorICAgICAgICBzdGF0dXMsIHJzZXQgPSBz ZWxmLmNvbm4uZXhlY3V0ZV8yZGFycmF5KFNRTCkKKyAgICAgICAgaWYgbm90 IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJf ZXJyb3IoZXJyb3Jtc2c9cnNldCkKKyAgICAgICAgIyAndGdhdHRyJyBjb250 YWlucyBsaXN0IG9mIGNvbHVtbnMgZnJvbSB0YWJsZSB1c2VkIGluIHRyaWdn ZXIKKyAgICAgICAgY29sdW1ucyA9IFtdCisKKyAgICAgICAgZm9yIHJvdyBp biByc2V0Wydyb3dzJ106CisgICAgICAgICAgICBjb2x1bW5zLmFwcGVuZCh7 J2NvbHVtbic6IHJvd1snbmFtZSddfSkKKworICAgICAgICByZXR1cm4gY29s dW1ucworCisgICAgZGVmIF90cmlnZ2VyX2RlZmluaXRpb24oc2VsZiwgZGF0 YSk6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uYWwgd2ls bCBzZXQgdGhlIHRyaWdnZXIgZGVmaW5pdGlvbgorCisgICAgICAgIEFyZ3M6 CisgICAgICAgICAgICBkYXRhOiBQcm9wZXJ0aWVzIGRhdGEKKworICAgICAg ICBSZXR1cm5zOgorICAgICAgICAgICAgVXBkYXRlZCBwcm9wZXJ0aWVzIGRh dGEgd2l0aCB0cmlnZ2VyIGRlZmluaXRpb24KKyAgICAgICAgIiIiCisKKyAg ICAgICAgIyBGaXJlcyBldmVudCBkZWZpbml0aW9uCisgICAgICAgIGlmIGRh dGFbJ3RndHlwZSddICYgc2VsZi50cmlnZ2VyX2RlZmluaXRpb25bJ1RSSUdH RVJfVFlQRV9CRUZPUkUnXToKKyAgICAgICAgICAgICBkYXRhWydmaXJlcydd ID0gJ0JFRk9SRScKKyAgICAgICAgZWxpZiBkYXRhWyd0Z3R5cGUnXSAmIHNl bGYudHJpZ2dlcl9kZWZpbml0aW9uWydUUklHR0VSX1RZUEVfSU5TVEVBRCdd OgorICAgICAgICAgICAgZGF0YVsnZmlyZXMnXSA9ICdJTlNURUFEIE9GJwor ICAgICAgICBlbHNlOgorICAgICAgICAgICAgZGF0YVsnZmlyZXMnXSA9ICdB RlRFUicKKworICAgICAgICAjIFRyaWdnZXIgb2YgdHlwZSBkZWZpbml0aW9u CisgICAgICAgIGlmIGRhdGFbJ3RndHlwZSddICYgc2VsZi50cmlnZ2VyX2Rl ZmluaXRpb25bJ1RSSUdHRVJfVFlQRV9ST1cnXToKKyAgICAgICAgICAgIGRh dGFbJ2lzX3Jvd190cmlnZ2VyJ10gPSBUcnVlCisgICAgICAgIGVsc2U6Cisg ICAgICAgICAgICBkYXRhWydpc19yb3dfdHJpZ2dlciddID0gRmFsc2UKKwor ICAgICAgICAjIEV2ZW50IGRlZmluaXRpb24KKyAgICAgICAgaWYgZGF0YVsn dGd0eXBlJ10gJiBzZWxmLnRyaWdnZXJfZGVmaW5pdGlvblsnVFJJR0dFUl9U WVBFX0lOU0VSVCddOgorICAgICAgICAgICAgZGF0YVsnZXZudF9pbnNlcnQn XSA9IFRydWUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGRhdGFbJ2V2 bnRfaW5zZXJ0J10gPSBGYWxzZQorCisgICAgICAgIGlmIGRhdGFbJ3RndHlw ZSddICYgc2VsZi50cmlnZ2VyX2RlZmluaXRpb25bJ1RSSUdHRVJfVFlQRV9E RUxFVEUnXToKKyAgICAgICAgICAgIGRhdGFbJ2V2bnRfZGVsZXRlJ10gPSBU cnVlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBkYXRhWydldm50X2Rl bGV0ZSddID0gRmFsc2UKKworICAgICAgICBpZiBkYXRhWyd0Z3R5cGUnXSAm IHNlbGYudHJpZ2dlcl9kZWZpbml0aW9uWydUUklHR0VSX1RZUEVfVVBEQVRF J106CisgICAgICAgICAgICBkYXRhWydldm50X3VwZGF0ZSddID0gVHJ1ZQor ICAgICAgICBlbHNlOgorICAgICAgICAgICAgZGF0YVsnZXZudF91cGRhdGUn XSA9IEZhbHNlCisKKyAgICAgICAgaWYgZGF0YVsndGd0eXBlJ10gJiBzZWxm LnRyaWdnZXJfZGVmaW5pdGlvblsnVFJJR0dFUl9UWVBFX1RSVU5DQVRFJ106 CisgICAgICAgICAgICBkYXRhWydldm50X3R1cm5jYXRlJ10gPSBUcnVlCisg ICAgICAgIGVsc2U6CisgICAgICAgICAgICBkYXRhWydldm50X3R1cm5jYXRl J10gPSBGYWxzZQorCisgICAgICAgIHJldHVybiBkYXRhCisKKyAgICBAY2hl Y2tfcHJlY29uZGl0aW9uCisgICAgZGVmIHByb3BlcnRpZXMoc2VsZiwgZ2lk LCBzaWQsIGRpZCwgc2NpZCwgdGlkLCB0cmlkKToKKyAgICAgICAgIiIiCisg ICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBzaG93IHRoZSBwcm9wZXJ0aWVz IG9mIHRoZSBzZWxlY3RlZCB0cmlnZ2VyIG5vZGUuCisKKyAgICAgICAgQXJn czoKKyAgICAgICAgICAgIGdpZDogU2VydmVyIEdyb3VwIElECisgICAgICAg ICAgICBzaWQ6IFNlcnZlciBJRAorICAgICAgICAgICAgZGlkOiAgRGF0YWJh c2UgSUQKKyAgICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJRAorICAgICAgICAg ICAgc2NpZDogU2NoZW1hIElECisgICAgICAgICAgICB0aWQ6IFRhYmxlIElE CisgICAgICAgICAgICB0cmlkOiBUcmlnZ2VyIElECisKKyAgICAgICAgUmV0 dXJuczoKKyAgICAgICAgICAgIEpTT04gb2Ygc2VsZWN0ZWQgdHJpZ2dlciBu b2RlCisgICAgICAgICIiIgorCisgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1w bGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwcm9wZXJ0aWVzLnNx bCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpZD10aWQs IHRyaWQ9dHJpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRh dGxhc3RzeXNvaWQ9c2VsZi5kYXRsYXN0c3lzb2lkKQorCisgICAgICAgIHN0 YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChTUUwpCisKKyAg ICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRl cm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgICMg TWFraW5nIGNvcHkgb2Ygb3V0cHV0IGZvciBmdXR1cmUgdXNlCisgICAgICAg IGRhdGEgPSBkaWN0KHJlc1sncm93cyddWzBdKQorICAgICAgICBpZiBkYXRh Wyd0Z25hcmdzJ10gPiAxOgorICAgICAgICAgICAgIyBXZSBrbm93IHRoYXQg dHJpZ2dlciBoYXMgbW9yZSB0aGFuIDEgYXJndW1lbnRzLCBsZXQncyBqb2lu IHRoZW0KKyAgICAgICAgICAgICMgYW5kIGNvbnZlcnQgaXQgYXMgc3RyaW5n CisgICAgICAgICAgICBkYXRhWyd0Z2FyZ3MnXSA9ICcsICcuam9pbihkYXRh Wyd0Z2FyZ3MnXSkKKworICAgICAgICBpZiBsZW4oZGF0YVsndGdhdHRyJ10p ID4gMToKKyAgICAgICAgICAgIGNvbHVtbnMgPSAnLCAnLmpvaW4oZGF0YVsn dGdhdHRyJ10uc3BsaXQoJyAnKSkKKyAgICAgICAgICAgIGRhdGFbJ2NvbHVt bnMnXSA9IHNlbGYuX2NvbHVtbl9kZXRhaWxzKHRpZCwgY29sdW1ucykKKwor ICAgICAgICBkYXRhID0gc2VsZi5fdHJpZ2dlcl9kZWZpbml0aW9uKGRhdGEp CisKKyAgICAgICAgcmV0dXJuIGFqYXhfcmVzcG9uc2UoCisgICAgICAgICAg ICAgICAgcmVzcG9uc2U9ZGF0YSwKKyAgICAgICAgICAgICAgICBzdGF0dXM9 MjAwCisgICAgICAgICAgICAgICAgKQorCisgICAgQGNoZWNrX3ByZWNvbmRp dGlvbgorICAgIGRlZiBjcmVhdGUoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2Np ZCwgdGlkKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24g d2lsbCBjcmVhdGVzIG5ldyB0aGUgdHJpZ2dlciBvYmplY3QKKworICAgICAg ICAgQXJnczoKKyAgICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAgSUQKKyAg ICAgICAgICAgc2lkOiBTZXJ2ZXIgSUQKKyAgICAgICAgICAgZGlkOiBEYXRh YmFzZSBJRAorICAgICAgICAgICBzY2lkOiBTY2hlbWEgSUQKKyAgICAgICAg ICAgdGlkOiBUYWJsZSBJRAorICAgICAgICAiIiIKKyAgICAgICAgZGF0YSA9 IHJlcXVlc3QuZm9ybSBpZiByZXF1ZXN0LmZvcm0gZWxzZSBqc29uLmxvYWRz KAorICAgICAgICAgICAgcmVxdWVzdC5kYXRhLmRlY29kZSgpCisgICAgICAg ICkKKworICAgICAgICBmb3IgaywgdiBpbiBkYXRhLml0ZW1zKCk6CisgICAg ICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZGF0YVtrXSA9IGpzb24u bG9hZHModikKKyAgICAgICAgICAgIGV4Y2VwdCAoVmFsdWVFcnJvciwgVHlw ZUVycm9yKToKKyAgICAgICAgICAgICAgICBkYXRhW2tdID0gdgorCisgICAg ICAgIHJlcXVpcmVkX2FyZ3MgPSB7CisgICAgICAgICAgICAnbmFtZSc6ICdO YW1lJywKKyAgICAgICAgICAgICd0ZnVuY3Rpb24nOiAnVHJpZ2dlciBmdW5j dGlvbicKKyAgICAgICAgfQorCisgICAgICAgIGZvciBhcmcgaW4gcmVxdWly ZWRfYXJnczoKKyAgICAgICAgICAgIGlmIGFyZyBub3QgaW4gZGF0YToKKyAg ICAgICAgICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAg ICAgICAgICAgICAgICAgICAgICAgc3RhdHVzPTQxMCwKKyAgICAgICAgICAg ICAgICAgICAgICAgIHN1Y2Nlc3M9MCwKKyAgICAgICAgICAgICAgICAgICAg ICAgIGVycm9ybXNnPWdldHRleHQoIkNvdWxkbid0IGZpbmQgdGhlIHJlcXVp cmVkIHBhcmFtZXRlciAoJXMpLiIgJSBcCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHJlcXVpcmVkX2FyZ3NbYXJnXSkKKyAgICAgICAgICAg ICAgICAgICAgICAgICkKKworICAgICAgICAjIEFkZGluZyBwYXJlbnQgaW50 byBkYXRhIGRpY3QsIHdpbGwgYmUgdXNpbmcgaXQgd2hpbGUgY3JlYXRpbmcg c3FsCisgICAgICAgIGRhdGFbJ3NjaGVtYSddID0gc2VsZi5zY2hlbWEKKyAg ICAgICAgZGF0YVsndGFibGUnXSA9IHNlbGYudGFibGUKKworICAgICAgICB0 cnk6CisgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpv aW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgJ2NyZWF0ZS5zcWwnXSksCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1kYXRhLCBjb25u PXNlbGYuY29ubikKKyAgICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5j b25uLmV4ZWN1dGVfc2NhbGFyKFNRTCkKKyAgICAgICAgICAgIGlmIG5vdCBz dGF0dXM6CisgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZl cl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgICAgICMgd2UgbmVl ZCBvaWQgdG8gdG8gYWRkIG9iamVjdCBpbiB0cmVlIGF0IGJyb3dzZXIKKyAg ICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2Vs Zi50ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAnZ2V0X29pZC5zcWwnXSksCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdGlkPXRpZCwgZGF0YT1kYXRhKQor ICAgICAgICAgICAgc3RhdHVzLCB0cmlkID0gc2VsZi5jb25uLmV4ZWN1dGVf c2NhbGFyKFNRTCkKKyAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAg ICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJv cm1zZz10aWQpCisKKyAgICAgICAgICAgIHJldHVybiBqc29uaWZ5KAorICAg ICAgICAgICAgICAgIG5vZGU9c2VsZi5ibHVlcHJpbnQuZ2VuZXJhdGVfYnJv d3Nlcl9ub2RlKAorICAgICAgICAgICAgICAgICAgICB0cmlkLAorICAgICAg ICAgICAgICAgICAgICBzY2lkLAorICAgICAgICAgICAgICAgICAgICBkYXRh WyduYW1lJ10sCisgICAgICAgICAgICAgICAgICAgIGljb249Imljb24tdHJp Z2dlciIKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICApCisgICAg ICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIHJldHVy biBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKGUpKQorCisg ICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBkZWxldGUoc2VsZiwg Z2lkLCBzaWQsIGRpZCwgc2NpZCwgdGlkLCB0cmlkKToKKyAgICAgICAgIiIi CisgICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCB1cGRhdGVzIGV4aXN0aW5n IHRoZSB0cmlnZ2VyIG9iamVjdAorCisgICAgICAgICBBcmdzOgorICAgICAg ICAgICBnaWQ6IFNlcnZlciBHcm91cCBJRAorICAgICAgICAgICBzaWQ6IFNl cnZlciBJRAorICAgICAgICAgICBkaWQ6IERhdGFiYXNlIElECisgICAgICAg ICAgIHNjaWQ6IFNjaGVtYSBJRAorICAgICAgICAgICB0aWQ6IFRhYmxlIElE CisgICAgICAgICAgIHRyaWQ6IFRyaWdnZXIgSUQKKyAgICAgICAgIiIiCisg ICAgICAgICMgQmVsb3cgd2lsbCBkZWNpZGUgaWYgaXQncyBzaW1wbGUgZHJv cCBvciBkcm9wIHdpdGggY2FzY2FkZSBjYWxsCisgICAgICAgIGlmIHNlbGYu Y21kID09ICdkZWxldGUnOgorICAgICAgICAgICAgIyBUaGlzIGlzIGEgY2Fz Y2FkZSBvcGVyYXRpb24KKyAgICAgICAgICAgIGNhc2NhZGUgPSBUcnVlCisg ICAgICAgIGVsc2U6CisgICAgICAgICAgICBjYXNjYWRlID0gRmFsc2UKKwor ICAgICAgICB0cnk6CisgICAgICAgICAgICAjIFdlIHdpbGwgZmlyc3QgZmV0 Y2ggdGhlIHRyaWdnZXIgbmFtZSBmb3IgY3VycmVudCByZXF1ZXN0CisgICAg ICAgICAgICAjIHNvIHRoYXQgd2UgY3JlYXRlIHRlbXBsYXRlIGZvciBkcm9w cGluZyB0cmlnZ2VyCisgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxh dGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb3BlcnRpZXMu c3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRp ZD10aWQsIHRyaWQ9dHJpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBkYXRsYXN0c3lzb2lkPXNlbGYuZGF0bGFzdHN5c29pZCkKKwor ICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9k aWN0KFNRTCkKKyAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAg ICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1z Zz1yZXMpCisKKyAgICAgICAgICAgIGRhdGEgPSBkaWN0KHJlc1sncm93cydd WzBdKQorCisgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8i LmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlbGV0ZS5zcWwnXSksCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1kYXRhLCBj b25uPXNlbGYuY29ubiwgY2FzY2FkZT1jYXNjYWRlKQorICAgICAgICAgICAg c3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9zY2FsYXIoU1FMKQor ICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICBy ZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKwor ICAgICAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKKyAgICAg ICAgICAgICAgICBzdWNjZXNzPTEsCisgICAgICAgICAgICAgICAgaW5mbz1n ZXR0ZXh0KCJUcmlnZ2VyIGlzIGRyb3BwZWQiKSwKKyAgICAgICAgICAgICAg ICBkYXRhPXsKKyAgICAgICAgICAgICAgICAgICAgJ2lkJzogdHJpZCwKKyAg ICAgICAgICAgICAgICAgICAgJ3RpZCc6IHRpZAorICAgICAgICAgICAgICAg IH0KKyAgICAgICAgICAgICkKKworICAgICAgICBleGNlcHQgRXhjZXB0aW9u IGFzIGU6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vy cm9yKGVycm9ybXNnPXN0cihlKSkKKworICAgIEBjaGVja19wcmVjb25kaXRp b24KKyAgICBkZWYgdXBkYXRlKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQs IHRpZCwgdHJpZCk6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0 aW9uIHdpbGwgdXBkYXRlcyBleGlzdGluZyB0aGUgdHJpZ2dlciBvYmplY3QK KworICAgICAgICAgQXJnczoKKyAgICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3Jv dXAgSUQKKyAgICAgICAgICAgc2lkOiBTZXJ2ZXIgSUQKKyAgICAgICAgICAg ZGlkOiBEYXRhYmFzZSBJRAorICAgICAgICAgICBzY2lkOiBTY2hlbWEgSUQK KyAgICAgICAgICAgdGlkOiBUYWJsZSBJRAorICAgICAgICAgICB0cmlkOiBU cmlnZ2VyIElECisgICAgICAgICIiIgorICAgICAgICBkYXRhID0gcmVxdWVz dC5mb3JtIGlmIHJlcXVlc3QuZm9ybSBlbHNlIGpzb24ubG9hZHMocmVxdWVz dC5kYXRhLmRlY29kZSgpKQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAg IFNRTCA9IHNlbGYuZ2V0X3NxbChzY2lkLCB0aWQsIHRyaWQsIGRhdGEpCisg ICAgICAgICAgICBpZiBTUUwgYW5kIFNRTC5zdHJpcCgnXG4nKSBhbmQgU1FM LnN0cmlwKCcgJyk6CisgICAgICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBz ZWxmLmNvbm4uZXhlY3V0ZV9zY2FsYXIoU1FMKQorICAgICAgICAgICAgICAg IGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBp bnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAg ICAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAg ICAgICAgICAgICAgc3VjY2Vzcz0xLAorICAgICAgICAgICAgICAgICAgICBp bmZvPSJUcmlnZ2VyIHVwZGF0ZWQiLAorICAgICAgICAgICAgICAgICAgICBk YXRhPXsKKyAgICAgICAgICAgICAgICAgICAgICAgICdpZCc6IHRyaWQsCisg ICAgICAgICAgICAgICAgICAgICAgICAndGlkJzogdGlkLAorICAgICAgICAg ICAgICAgICAgICAgICAgJ3NjaWQnOiBzY2lkCisgICAgICAgICAgICAgICAg ICAgIH0KKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBlbHNlOgor ICAgICAgICAgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCisg ICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M9MSwKKyAgICAgICAgICAgICAg ICAgICAgaW5mbz0iTm90aGluZyB0byB1cGRhdGUiLAorICAgICAgICAgICAg ICAgICAgICBkYXRhPXsKKyAgICAgICAgICAgICAgICAgICAgICAgICdpZCc6 IHRyaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAndGlkJzogdGlkLAor ICAgICAgICAgICAgICAgICAgICAgICAgJ3NjaWQnOiBzY2lkCisgICAgICAg ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICApCisKKyAgICAgICAg ZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgcmV0dXJuIGlu dGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1zdHIoZSkpCisKKyAgICBA Y2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVmIG1zcWwoc2VsZiwgZ2lkLCBz aWQsIGRpZCwgc2NpZCwgdGlkLCB0cmlkPU5vbmUpOgorICAgICAgICAiIiIK KyAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIGdlbmVyYXRlcyBtb2RpZmll ZCBzcWwgZm9yIHRyaWdnZXIgb2JqZWN0CisKKyAgICAgICAgIEFyZ3M6Cisg ICAgICAgICAgIGdpZDogU2VydmVyIEdyb3VwIElECisgICAgICAgICAgIHNp ZDogU2VydmVyIElECisgICAgICAgICAgIGRpZDogRGF0YWJhc2UgSUQKKyAg ICAgICAgICAgc2NpZDogU2NoZW1hIElECisgICAgICAgICAgIHRpZDogVGFi bGUgSUQKKyAgICAgICAgICAgdHJpZDogVHJpZ2dlciBJRCAoV2hlbiB3b3Jr aW5nIHdpdGggZXhpc3RpbmcgdHJpZ2dlcikKKyAgICAgICAgIiIiCisgICAg ICAgIGRhdGEgPSBkaWN0KCkKKyAgICAgICAgZm9yIGssIHYgaW4gcmVxdWVz dC5hcmdzLml0ZW1zKCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAg ICAgICAgZGF0YVtrXSA9IGpzb24ubG9hZHModikKKyAgICAgICAgICAgIGV4 Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgICAgIGRhdGFba10gPSB2 CisKKyAgICAgICAgIyBBZGRpbmcgcGFyZW50IGludG8gZGF0YSBkaWN0LCB3 aWxsIGJlIHVzaW5nIGl0IHdoaWxlIGNyZWF0aW5nIHNxbAorICAgICAgICBk YXRhWydzY2hlbWEnXSA9IHNlbGYuc2NoZW1hCisgICAgICAgIGRhdGFbJ3Rh YmxlJ10gPSBzZWxmLnRhYmxlCisKKyAgICAgICAgdHJ5OgorICAgICAgICAg ICAgU1FMID0gc2VsZi5nZXRfc3FsKHNjaWQsIHRpZCwgdHJpZCwgZGF0YSkK KworICAgICAgICAgICAgaWYgU1FMIGFuZCBTUUwuc3RyaXAoJ1xuJykgYW5k IFNRTC5zdHJpcCgnICcpOgorICAgICAgICAgICAgICAgIHJldHVybiBtYWtl X2pzb25fcmVzcG9uc2UoCisgICAgICAgICAgICAgICAgICAgICAgICBkYXRh PVNRTCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAg ICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgZXhjZXB0IEV4Y2Vw dGlvbiBhcyBlOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZl cl9lcnJvcihlcnJvcm1zZz1zdHIoZSkpCisKKyAgICBkZWYgZ2V0X3NxbChz ZWxmLCBzY2lkLCB0aWQsIHRyaWQsIGRhdGEpOgorICAgICAgICAiIiIKKyAg ICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIGdlbnJhdGUgc3FsIGZyb20gbW9k ZWwgZGF0YQorICAgICAgICAiIiIKKyAgICAgICAgaWYgdHJpZCBpcyBub3Qg Tm9uZToKKyAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIu am9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAncHJvcGVydGllcy5zcWwnXSks CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlkPXRpZCwg dHJpZD10cmlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGRhdGxhc3RzeXNvaWQ9c2VsZi5kYXRsYXN0c3lzb2lkKQorCisgICAgICAg ICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FM KQorICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAg ICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykK KworICAgICAgICAgICAgb2xkX2RhdGEgPSBkaWN0KHJlc1sncm93cyddWzBd KQorCisgICAgICAgICAgICAjIElmIG5hbWUgaXMgbm90IHByZXNlbnQgaW4g ZGF0YSB0aGVuCisgICAgICAgICAgICAjIHdlIHdpbGwgZmV0Y2ggaXQgZnJv bSBvbGQgZGF0YSwgd2UgYWxzbyBuZWVkIHNjaGVtYSAmIHRhYmxlIG5hbWUK KyAgICAgICAgICAgIGlmICduYW1lJyBub3QgaW4gZGF0YToKKyAgICAgICAg ICAgICAgICBkYXRhWyduYW1lJ10gPSBvbGRfZGF0YVsnbmFtZSddCisKKyAg ICAgICAgICAgIGlmIG9sZF9kYXRhWyd0Z25hcmdzJ10gPiAxOgorICAgICAg ICAgICAgICAgICMgV2Uga25vdyB0aGF0IHRyaWdnZXIgaGFzIG1vcmUgdGhh biAxIGFyZ3VtZW50cywgbGV0J3Mgam9pbiB0aGVtCisgICAgICAgICAgICAg ICAgb2xkX2RhdGFbJ3RnYXJncyddID0gJywgJy5qb2luKG9sZF9kYXRhWyd0 Z2FyZ3MnXSkKKworICAgICAgICAgICAgaWYgbGVuKG9sZF9kYXRhWyd0Z2F0 dHInXSkgPiAxOgorICAgICAgICAgICAgICAgIGNvbHVtbnMgPSAnLCAnLmpv aW4ob2xkX2RhdGFbJ3RnYXR0ciddLnNwbGl0KCcgJykpCisgICAgICAgICAg ICAgICAgb2xkX2RhdGFbJ2NvbHVtbnMnXSA9IHNlbGYuX2NvbHVtbl9kZXRh aWxzKHRpZCwgY29sdW1ucykKKworICAgICAgICAgICAgb2xkX2RhdGEgPSBz ZWxmLl90cmlnZ2VyX2RlZmluaXRpb24ob2xkX2RhdGEpCisKKyAgICAgICAg ICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgICAgICAgICAi LyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAndXBkYXRlLnNxbCddKSwK KyAgICAgICAgICAgICAgICBkYXRhPWRhdGEsIG9fZGF0YT1vbGRfZGF0YSwg Y29ubj1zZWxmLmNvbm4KKyAgICAgICAgICAgICAgICApCisgICAgICAgIGVs c2U6CisgICAgICAgICAgICByZXF1aXJlZF9hcmdzID0geworICAgICAgICAg ICAgICAgICduYW1lJzogJ05hbWUnLAorICAgICAgICAgICAgICAgICd0ZnVu Y3Rpb24nOiAnVHJpZ2dlciBmdW5jdGlvbicKKyAgICAgICAgICAgIH0KKwor ICAgICAgICAgICAgZm9yIGFyZyBpbiByZXF1aXJlZF9hcmdzOgorICAgICAg ICAgICAgICAgIGlmIGFyZyBub3QgaW4gZGF0YToKKyAgICAgICAgICAgICAg ICAgICAgcmV0dXJuIGdldHRleHQoJy0tIGluY29tcGxldGUgZGVmaW5pdGlv bicpCisKKyAgICAgICAgICAgICMgSWYgdGhlIHJlcXVlc3QgZm9yIG5ldyBv YmplY3Qgd2hpY2ggZG8gbm90IGhhdmUgZGlkCisgICAgICAgICAgICBTUUwg PSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0 aCwgJ2NyZWF0ZS5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZGF0YT1kYXRhLCBjb25uPXNlbGYuY29ubikKKyAgICAgICAg cmV0dXJuIFNRTAorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRl ZiBzcWwoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgdGlkLCB0cmlkKToK KyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBnZW5l cmF0ZXMgcmV2ZXJzZSBlbmdpbmVlcmVkIHNxbCBmb3IgdHJpZ2dlciBvYmpl Y3QKKworICAgICAgICAgQXJnczoKKyAgICAgICAgICAgZ2lkOiBTZXJ2ZXIg R3JvdXAgSUQKKyAgICAgICAgICAgc2lkOiBTZXJ2ZXIgSUQKKyAgICAgICAg ICAgZGlkOiBEYXRhYmFzZSBJRAorICAgICAgICAgICBzY2lkOiBTY2hlbWEg SUQKKyAgICAgICAgICAgdGlkOiBUYWJsZSBJRAorICAgICAgICAgICB0cmlk OiBUcmlnZ2VyIElECisgICAgICAgICIiIgorICAgICAgICB0cnk6CisgICAg ICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYu dGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJ3Byb3BlcnRpZXMuc3FsJ10pLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHRpZD10aWQsIHRyaWQ9dHJpZCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRsYXN0c3lz b2lkPXNlbGYuZGF0bGFzdHN5c29pZCkKKworICAgICAgICAgICAgc3RhdHVz LCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKKyAgICAgICAg ICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAgcmV0dXJuIGlu dGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAg ICAgIGRhdGEgPSBkaWN0KHJlc1sncm93cyddWzBdKQorICAgICAgICAgICAg IyBBZGRpbmcgcGFyZW50IGludG8gZGF0YSBkaWN0LCB3aWxsIGJlIHVzaW5n IGl0IHdoaWxlIGNyZWF0aW5nIHNxbAorICAgICAgICAgICAgZGF0YVsnc2No ZW1hJ10gPSBzZWxmLnNjaGVtYQorICAgICAgICAgICAgZGF0YVsndGFibGUn XSA9IHNlbGYudGFibGUKKworICAgICAgICAgICAgaWYgZGF0YVsndGduYXJn cyddID4gMToKKyAgICAgICAgICAgICAgICAjIFdlIGtub3cgdGhhdCB0cmln Z2VyIGhhcyBtb3JlIHRoYW4gMSBhcmd1bWVudHMsIGxldCdzIGpvaW4gdGhl bQorICAgICAgICAgICAgICAgIGRhdGFbJ3RnYXJncyddID0gJywgJy5qb2lu KGRhdGFbJ3RnYXJncyddKQorCisgICAgICAgICAgICBpZiBsZW4oZGF0YVsn dGdhdHRyJ10pID4gMToKKyAgICAgICAgICAgICAgICBjb2x1bW5zID0gJywg Jy5qb2luKGRhdGFbJ3RnYXR0ciddLnNwbGl0KCcgJykpCisgICAgICAgICAg ICAgICAgZGF0YVsnY29sdW1ucyddID0gc2VsZi5fY29sdW1uX2RldGFpbHMo dGlkLCBjb2x1bW5zKQorCisgICAgICAgICAgICBkYXRhID0gc2VsZi5fdHJp Z2dlcl9kZWZpbml0aW9uKGRhdGEpCisKKyAgICAgICAgICAgIFNRTCA9IHNl bGYuZ2V0X3NxbChzY2lkLCB0aWQsIE5vbmUsIGRhdGEpCisKKyAgICAgICAg ICAgIHNxbF9oZWFkZXIgPSAiLS0gVHJpZ2dlcjogezB9XG5cbi0tICIuZm9y bWF0KGRhdGFbJ25hbWUnXSkKKyAgICAgICAgICAgIHNxbF9oZWFkZXIgKz0g cmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJ2RlbGV0ZS5zcWwnXSksCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBkYXRhPWRhdGEsIGNvbm49c2VsZi5j b25uKQorCisgICAgICAgICAgICBTUUwgPSBzcWxfaGVhZGVyICsgJ1xuXG4n ICsgU1FMLnN0cmlwKCdcbicpCisKKyAgICAgICAgICAgICMgSWYgdHJpZ2dl ciBpcyBkaXNiYWxlZCB0aGVuIGFkZCBzcWwgY29kZSBmb3IgdGhlIHNhbWUK KyAgICAgICAgICAgIGlmIG5vdCBkYXRhWydpc19lbmFibGVfdHJpZ2dlcidd OgorICAgICAgICAgICAgICAgIFNRTCArPSAnXG5cbicKKyAgICAgICAgICAg ICAgICBTUUwgKz0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRl bXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJ2VuYWJsZV9kaXNhYmxlX3RyaWdnZXIuc3Fs J10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZGF0YT1kYXRhLCBjb25uPXNlbGYuY29ubikKKworICAgICAgICAgICAgcmV0 dXJuIGFqYXhfcmVzcG9uc2UocmVzcG9uc2U9U1FMKQorCisgICAgICAgIGV4 Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIHJldHVybiBpbnRl cm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKGUpKQorCisgICAgQGNo ZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBlbmFibGVfZGlzYWJsZV90cmln Z2VyKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRpZCwgdHJpZCk6Cisg ICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgZW5hYmxl IE9SIGRpc2FibGUgdGhlIGN1cnJlbnQgdHJpZ2dlciBvYmplY3QKKworICAg ICAgICAgQXJnczoKKyAgICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAgSUQK KyAgICAgICAgICAgc2lkOiBTZXJ2ZXIgSUQKKyAgICAgICAgICAgZGlkOiBE YXRhYmFzZSBJRAorICAgICAgICAgICBzY2lkOiBTY2hlbWEgSUQKKyAgICAg ICAgICAgdGlkOiBUYWJsZSBJRAorICAgICAgICAgICB0cmlkOiBUcmlnZ2Vy IElECisgICAgICAgICIiIgorCisgICAgICAgIGRhdGEgPSByZXF1ZXN0LmZv cm0gaWYgcmVxdWVzdC5mb3JtIGVsc2UganNvbi5sb2FkcyhyZXF1ZXN0LmRh dGEuZGVjb2RlKCkpCisKKyAgICAgICAgIyBDb252ZXJ0IHN0ciAndHJ1ZScg dG8gYm9vbGVhbiB0eXBlCisgICAgICAgIGlzX2VuYWJsZV9mbGFnID0ganNv bi5sb2FkcyhkYXRhWydlbmFibGUnXSkKKworICAgICAgICB0cnk6CisKKyAg ICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2Vs Zi50ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAncHJvcGVydGllcy5zcWwnXSksCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlkPXRpZCwgdHJpZD10cmlk LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGxhc3Rz eXNvaWQ9c2VsZi5kYXRsYXN0c3lzb2lkKQorCisgICAgICAgICAgICBzdGF0 dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQorICAgICAg ICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICByZXR1cm4g aW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKworICAgICAg ICAgICAgb19kYXRhID0gZGljdChyZXNbJ3Jvd3MnXVswXSkKKworICAgICAg ICAgICAgIyBJZiBlbmFibGUgaXMgc2V0IHRvIHRydWUgbWVhbnMgd2UgbmVl ZCBTUUwgdG8gZW5hYmxlCisgICAgICAgICAgICAjIGN1cnJlbnQgdHJpZ2dl ciB3aGljaCBpcyBkaXNhYmxlZCBhbHJlYWR5IHNvIHdlIG5lZWQgdG8KKyAg ICAgICAgICAgICMgYWx0ZXIgdGhlICdpc19lbmFibGVfdHJpZ2dlcicgZmxh ZyBzbyB0aGF0IHdlIGNhbiByZW5kZXIKKyAgICAgICAgICAgICMgY29ycmVj dCBTUUwgZm9yIG9wZXJhdGlvbgorICAgICAgICAgICAgb19kYXRhWydpc19l bmFibGVfdHJpZ2dlciddID0gaXNfZW5hYmxlX2ZsYWcKKworICAgICAgICAg ICAgIyBBZGRpbmcgcGFyZW50IGludG8gZGF0YSBkaWN0LCB3aWxsIGJlIHVz aW5nIGl0IHdoaWxlIGNyZWF0aW5nIHNxbAorICAgICAgICAgICAgb19kYXRh WydzY2hlbWEnXSA9IHNlbGYuc2NoZW1hCisgICAgICAgICAgICBvX2RhdGFb J3RhYmxlJ10gPSBzZWxmLnRhYmxlCisKKyAgICAgICAgICAgIFNRTCA9IHJl bmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn ZW5hYmxlX2Rpc2FibGVfdHJpZ2dlci5zcWwnXSksCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZGF0YT1vX2RhdGEsIGNvbm49c2VsZi5j b25uKQorICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhl Y3V0ZV9zY2FsYXIoU1FMKQorCisgICAgICAgICAgICBpZiBub3Qgc3RhdHVz OgorICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJy b3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgICAgICByZXR1cm4gbWFrZV9q c29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgICAgIHN1Y2Nlc3M9MSwKKyAg ICAgICAgICAgICAgICBpbmZvPSJUcmlnZ2VyIHVwZGF0ZWQiLAorICAgICAg ICAgICAgICAgIGRhdGE9eworICAgICAgICAgICAgICAgICAgICAnaWQnOiB0 cmlkLAorICAgICAgICAgICAgICAgICAgICAndGlkJzogdGlkLAorICAgICAg ICAgICAgICAgICAgICAnc2NpZCc6IHNjaWQKKyAgICAgICAgICAgICAgICB9 CisgICAgICAgICAgICApCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMg ZToKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3Io ZXJyb3Jtc2c9c3RyKGUpKQorCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9u CisgICAgZGVmIGRlcGVuZGVudHMoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2Np ZCwgdGlkLCB0cmlkKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVu Y3Rpb24gZ2V0IHRoZSBkZXBlbmRlbnRzIGFuZCByZXR1cm4gYWpheCByZXNw b25zZQorICAgICAgICBmb3IgdGhlIHRyaWdnZXIgbm9kZS4KKworICAgICAg ICBBcmdzOgorICAgICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAgSUQKKyAg ICAgICAgICAgIHNpZDogU2VydmVyIElECisgICAgICAgICAgICBkaWQ6IERh dGFiYXNlIElECisgICAgICAgICAgICBzY2lkOiBTY2hlbWEgSUQKKyAgICAg ICAgICAgIHRpZDogVGFibGUgSUQKKyAgICAgICAgICAgIHRyaWQ6IFRyaWdn ZXIgSUQKKyAgICAgICAgIiIiCisgICAgICAgIGRlcGVuZGVudHNfcmVzdWx0 ID0gc2VsZi5nZXRfZGVwZW5kZW50cygKKyAgICAgICAgICAgIHNlbGYuY29u biwgdHJpZAorICAgICAgICApCisKKyAgICAgICAgcmV0dXJuIGFqYXhfcmVz cG9uc2UoCisgICAgICAgICAgICAgICAgcmVzcG9uc2U9ZGVwZW5kZW50c19y ZXN1bHQsCisgICAgICAgICAgICAgICAgc3RhdHVzPTIwMAorICAgICAgICAg ICAgICAgICkKKworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYg ZGVwZW5kZW5jaWVzKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRpZCwg dHJpZCk6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIGdl dCB0aGUgZGVwZW5kZW5jaWVzIGFuZCByZXR1cm4gYWpheCByZXNwb25zZQor ICAgICAgICBmb3IgdGhlIHRyaWdnZXIgbm9kZS4KKworICAgICAgICBBcmdz OgorICAgICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAgSUQKKyAgICAgICAg ICAgIHNpZDogU2VydmVyIElECisgICAgICAgICAgICBkaWQ6IERhdGFiYXNl IElECisgICAgICAgICAgICBzY2lkOiBTY2hlbWEgSUQKKyAgICAgICAgICAg IHRpZDogVGFibGUgSUQKKyAgICAgICAgICAgIHRyaWQ6IFRyaWdnZXIgSUQK KworICAgICAgICAiIiIKKyAgICAgICAgZGVwZW5kZW5jaWVzX3Jlc3VsdCA9 IHNlbGYuZ2V0X2RlcGVuZGVuY2llcygKKyAgICAgICAgICAgIHNlbGYuY29u biwgdHJpZAorICAgICAgICApCisKKyAgICAgICAgcmV0dXJuIGFqYXhfcmVz cG9uc2UoCisgICAgICAgICAgICAgICAgcmVzcG9uc2U9ZGVwZW5kZW5jaWVz X3Jlc3VsdCwKKyAgICAgICAgICAgICAgICBzdGF0dXM9MjAwCisgICAgICAg ICAgICAgICAgKQorCitUcmlnZ2VyVmlldy5yZWdpc3Rlcl9ub2RlX3ZpZXco Ymx1ZXByaW50KQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVz L3RyaWdnZXJzL3N0YXRpYy9pbWcvY29sbC10cmlnZ2VyLnBuZyBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL3RhYmxlcy90cmlnZ2Vycy9zdGF0aWMvaW1nL2NvbGwtdHJp Z2dlci5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2MzMzk0MDZmYTMy NWRhZDY3ZjU5MTQxYTZhMDhhNTMzNGRlYmNkYQpHSVQgYmluYXJ5IHBhdGNo CmxpdGVyYWwgMzUwCnpjbWVBU0BOPyhvbEh5YHVWQnEhaWEwdnBeMHdCITcz PyQjKWVGUEZ2NUFYP2IxPTZraVBVPXJ3VD1NREJnYTV4UAp6XzhvdXd8TD4m I0EyWGp7Y1Ijdy1WQkl7Kz9hUlppOTcoIyp4Q0UkX3VfVllabjhEJU1qV2km S3Ylbio9NylYMTcKenZEP1hQSjBLJl4pNVM0Xzw5ZjB7a1djfnhiODBkeGh4 NUA7UHIpKyotYlE5ai1tQW9Tdk5UVDNHK0Y5NkNEVHRVCnp5cyhnb0RedkdY ZlZWZ0VzX1hZbWc3QHkoKTZ3WW97RE18KlVtcVZVbzhyPkR2eTlYSW42IzN0 N0hgY0dKPmxifgp6YHU2VEBnPjVoOUcpNWRjdTtmU3MzcXc8dk0yZX5tZGtX QkkpZV9mO2w5YUBmUklCOG9SM09EKldNRjhaWWlPaXYKelU+SVUjVX1hKSNX biF2clV9fE14Rno9bi1EaWpVNWA2LSFjbEBKWEVtUzdEKSloMVIzVylLYWhy aVpRcFlHQ2ttCkxePmJQMGwrWGtLQVIlPzMKCmxpdGVyYWwgMApIY21WP2Qw MDAwMQoKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90cmln Z2Vycy9zdGF0aWMvaW1nL3RyaWdnZXItYmFkLnBuZyBiL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL3RhYmxlcy90cmlnZ2Vycy9zdGF0aWMvaW1nL3RyaWdnZXItYmFkLnBu ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42Y2MyZmU5NmM4ZjIzNGE3MzY3 MmNjNzNmZDI3MmExNWZjN2RlNGY5CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJh bCA2MTAKemNtZUFTQE4/KG9sSHlgdVZCcSFpYTB2cF4wd0IhNjM/d3lsYEdi TWYmajZuZ1MwTFRHQDEqfDMjVS1CfW8lO1hkCnpAQmpiYmZCZzlNPi1VZkVL bVBwdGNrMCNpPnEkdlI4NWt+dk07PHdIO0BJREJsY3l7Xj5oNjZ2R3Q7PyE9 RiNaYgp6WntfN2orYFg1cytfMkJxPjBAfCFMfHk7NHZhKVlRTVBLdnNfRTxa NzM9NGJqQEJoeGpHcEBTbFJBOSowK310bDIKejhLMEFxSzdAdzhfWENRMVNv Ri1CdjJWfWsjS2UhJChIfXhXLXV3RSFiOVhtZXpoTG8heXwrP1JLTGk2c2VC WmdiCnp0PG97PktlWD19UC1BZkxkbW8+N3VDOHpGPnxhfTBfJT1gMzw+S31z RENvVm5fZ2ZkJipYSEswMz1MbXVZZDdjQQp6ZDxZREQ9akhYKio9NDQpKkdu eiE3cGtoeTYlXmgmSVVqTkpuKDU7R1R3WT1RUHBBMW4mb2g8O2Aye21MSmlD encKejxadT52TD4yPlM0PXtFK25RYUdURWJ3JTM0M1c1O2QtZntkcCMmYioy bGNaMW5zPVdyYDJMWFpAWX0hZ1pIJj1JCnpMUkEtKyNOVSFUX0R7cyFXc1kz T15VN2IwJXxUVSlpJTtma2VBU1l9Xm9EUXdZMk5lVmQrZEcpYTxtREFzV3hU awp6XnMhN0BYPHwxKWFOXm1nZmcwMVVeY0p9fll6QG1kKighZX10Tmc7LXVa byRQJjVDWjFQbkltcEp0SDJtPyVJdTwKekA+TTVwJG9FLTF0bDMhP29GWnNg PU8obE4rY3dWJFBzK29laUFUeF9vYlVefihFeE8tWUtkel5ObEljI3MjUzdQ CnpEdik5QEdCN21NSDg5cFN1bX58VXZOQU5jR08qTShGdGFpK3hjcUVJNXtp YzB7RktiSk81N1MyP0gwSFApV0cyQgpMPmdUZX5EV000Zkk3U0RBCgpsaXRl cmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy90YWJsZXMvdHJpZ2dlcnMvc3RhdGljL2ltZy90cmlnZ2VyLnBuZyBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL3RhYmxlcy90cmlnZ2Vycy9zdGF0aWMvaW1nL3RyaWdn ZXIucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNiNDEzZTRhNjQ4Yzk5 OWMwZGNjMDA1YWFhZjAyYTcxMGJlNDQxNGIKR0lUIGJpbmFyeSBwYXRjaAps aXRlcmFsIDMyNAp6Y21lQVNATj8ob2xIeWB1VkJxIWlhMHZwXjB3QiE3Mz8k IyllRlBIRjNoKVZXMT02a2lQVT1yd1Q9TURCc3NCSXoKent7TWdjfEJ1Pz11 VHZqaV9CeWV7V1laJFVfNEF6JFk+MipqYS1HeDhXa0EpOEJ8KDB7Mz1ZcTNx eWFnYzFzOypiCnpLLXZTMC1BLW9QMFUzZHdFey03XypPTDwobkI3IWVJaHMl Mjs1YiFLN30jTG88bEw7I3Z0XjZQMkNaZUVLN0NTUgp6Nmo7cDY7am41KCtQ T0tGb0kwRGJ1NC0qQ1RYdUsxSWNJfXBgWjxUUUpGN1hmVz0+KmE0cjU/PVJX SWFxWFhFc3YKeksqTG9fVHE4PFM1PSZDOGw4YUotNm9aazBwYG9zVXB7fGl9 aD1IKmM1RSZZNDg8PCVjN0BWQlVUWSNiPUgkTnBhCnJ0ckRjY0stYSgkczMq azgqdmlEaiVEX3o5eiFhJEEpYiE5YktuKUNAdTZ7MS1vRCFNPDVoaWI2Cgps aXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy90YWJsZXMvdHJpZ2dlcnMvdGVtcGxhdGVzL3RyaWdnZXIvY3NzL3Ry aWdnZXIuY3NzIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RyaWdnZXJzL3Rl bXBsYXRlcy90cmlnZ2VyL2Nzcy90cmlnZ2VyLmNzcwpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi44MTFjODM4Ci0tLSAvZGV2L251bGwK KysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RyaWdnZXJzL3RlbXBsYXRl cy90cmlnZ2VyL2Nzcy90cmlnZ2VyLmNzcwpAQCAtMCwwICsxLDIwIEBACisu aWNvbi1jb2xsLXRyaWdnZXIgeworICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwo J3t7IHVybF9mb3IoJ05PREUtdHJpZ2dlci5zdGF0aWMnLCBmaWxlbmFtZT0n aW1nL2NvbGwtdHJpZ2dlci5wbmcnICl9fScpICFpbXBvcnRhbnQ7CisgIGJh Y2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7CisgIGFsaWduLWNvbnRlbnQ6 IGNlbnRlcjsKKyAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKKyAgaGVpZ2h0 OiAxLjNlbTsKK30KKworLmljb24tdHJpZ2dlciB7CisgIGJhY2tncm91bmQt aW1hZ2U6IHVybCgne3sgdXJsX2ZvcignTk9ERS10cmlnZ2VyLnN0YXRpYycs IGZpbGVuYW1lPSdpbWcvdHJpZ2dlci5wbmcnKSB9fScpICFpbXBvcnRhbnQ7 CisgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7CisgIGFsaWduLWNv bnRlbnQ6IGNlbnRlcjsKKyAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKKyAg aGVpZ2h0OiAxLjNlbTsKK30KKworLmljb24tdHJpZ2dlci1iYWQgeworICBi YWNrZ3JvdW5kLWltYWdlOiB1cmwoJ3t7IHVybF9mb3IoJ05PREUtdHJpZ2dl ci5zdGF0aWMnLCBmaWxlbmFtZT0naW1nL3RyaWdnZXItYmFkLnBuZycpIH19 JykgIWltcG9ydGFudDsKKyAgYm9yZGVyLXJhZGl1czogMTBweAorfQpkaWZm IC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RyaWdnZXJzL3RlbXBs YXRlcy90cmlnZ2VyL2pzL3RyaWdnZXIuanMgYi93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90 YWJsZXMvdHJpZ2dlcnMvdGVtcGxhdGVzL3RyaWdnZXIvanMvdHJpZ2dlci5q cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZDIyNzk1 Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3Ry aWdnZXJzL3RlbXBsYXRlcy90cmlnZ2VyL2pzL3RyaWdnZXIuanMKQEAgLTAs MCArMSw1NDcgQEAKK2RlZmluZSgKKyAgICAgICAgWydqcXVlcnknLCAndW5k ZXJzY29yZScsICd1bmRlcnNjb3JlLnN0cmluZycsICdwZ2FkbWluJywgJ3Bn YWRtaW4uYnJvd3NlcicsCisgICAgICAgICdiYWNrZm9ybScsICdhbGVydGlm eScsICdwZ2FkbWluLmJyb3dzZXIuY29sbGVjdGlvbiddLAorZnVuY3Rpb24o JCwgXywgUywgcGdBZG1pbiwgcGdCcm93c2VyLCBCYWNrZm9ybSwgYWxlcnRp ZnkpIHsKKworICBpZiAoIXBnQnJvd3Nlci5Ob2Rlc1snY29sbC10cmlnZ2Vy J10pIHsKKyAgICB2YXIgdHJpZ2dlcnMgPSBwZ0FkbWluLkJyb3dzZXIuTm9k ZXNbJ2NvbGwtdHJpZ2dlciddID0KKyAgICAgIHBnQWRtaW4uQnJvd3Nlci5D b2xsZWN0aW9uLmV4dGVuZCh7CisgICAgICAgIG5vZGU6ICd0cmlnZ2VyJywK KyAgICAgICAgbGFiZWw6ICd7eyBfKCdUcmlnZ2VycycpIH19JywKKyAgICAg ICAgdHlwZTogJ2NvbGwtdHJpZ2dlcicsCisgICAgICAgIGNvbHVtbnM6IFsn bmFtZScsICdkZXNjcmlwdGlvbiddCisgICAgICB9KTsKKyAgfTsKKworICBp ZiAoIXBnQnJvd3Nlci5Ob2Rlc1sndHJpZ2dlciddKSB7CisgICAgcGdBZG1p bi5Ccm93c2VyLk5vZGVzWyd0cmlnZ2VyJ10gPSBwZ0FkbWluLkJyb3dzZXIu Tm9kZS5leHRlbmQoeworICAgICAgcGFyZW50X3R5cGU6IFsndGFibGUnLCAn dmlldyddLAorICAgICAgY29sbGVjdGlvbl90eXBlOiBbJ2NvbGwtdGFibGUn LCAnY29sbC12aWV3J10sCisgICAgICB0eXBlOiAndHJpZ2dlcicsCisgICAg ICBsYWJlbDogJ3t7IF8oJ1RyaWdnZXInKSB9fScsCisgICAgICBoYXNTUUw6 ICB0cnVlLAorICAgICAgaGFzRGVwZW5kczogdHJ1ZSwKKyAgICAgIHNxbEFs dGVySGVscDogJ3NxbC1hbHRlcnRyaWdnZXIuaHRtbCcsCisgICAgICBzcWxD cmVhdGVIZWxwOiAnc3FsLWNyZWF0ZXRyaWdnZXIuaHRtbCcsCisgICAgICBJ bml0OiBmdW5jdGlvbigpIHsKKyAgICAgICAgLyogQXZvaWQgbXVsaXRwbGUg cmVnaXN0cmF0aW9uIG9mIG1lbnVzICovCisgICAgICAgIGlmICh0aGlzLmlu aXRpYWxpemVkKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRo aXMuaW5pdGlhbGl6ZWQgPSB0cnVlOworCisgICAgICAgIHBnQnJvd3Nlci5h ZGRfbWVudXMoW3sKKyAgICAgICAgICBuYW1lOiAnY3JlYXRlX3RyaWdnZXJf b25fY29sbCcsIG5vZGU6ICdjb2xsLXRyaWdnZXInLCBtb2R1bGU6IHRoaXMs CisgICAgICAgICAgYXBwbGllczogWydvYmplY3QnLCAnY29udGV4dCddLCBj YWxsYmFjazogJ3Nob3dfb2JqX3Byb3BlcnRpZXMnLAorICAgICAgICAgIGNh dGVnb3J5OiAnY3JlYXRlJywgcHJpb3JpdHk6IDQsIGxhYmVsOiAne3sgXygn VHJpZ2dlci4uLicpIH19JywKKyAgICAgICAgICBpY29uOiAnd2NUYWJJY29u IGljb24tdHJpZ2dlcicsIGRhdGE6IHthY3Rpb246ICdjcmVhdGUnLCBjaGVj azogdHJ1ZX0sCisgICAgICAgICAgZW5hYmxlOiAnY2FuQ3JlYXRlJworICAg ICAgICB9LHsKKyAgICAgICAgICBuYW1lOiAnY3JlYXRlX3RyaWdnZXInLCBu b2RlOiAndHJpZ2dlcicsIG1vZHVsZTogdGhpcywKKyAgICAgICAgICBhcHBs aWVzOiBbJ29iamVjdCcsICdjb250ZXh0J10sIGNhbGxiYWNrOiAnc2hvd19v YmpfcHJvcGVydGllcycsCisgICAgICAgICAgY2F0ZWdvcnk6ICdjcmVhdGUn LCBwcmlvcml0eTogNCwgbGFiZWw6ICd7eyBfKCdUcmlnZ2VyLi4uJykgfX0n LAorICAgICAgICAgIGljb246ICd3Y1RhYkljb24gaWNvbi10cmlnZ2VyJywg ZGF0YToge2FjdGlvbjogJ2NyZWF0ZScsIGNoZWNrOiB0cnVlfSwKKyAgICAg ICAgICBlbmFibGU6ICdjYW5DcmVhdGUnCisgICAgICAgIH0seworICAgICAg ICAgIG5hbWU6ICdjcmVhdGVfdHJpZ2dlcl9vblRhYmxlJywgbm9kZTogJ3Rh YmxlJywgbW9kdWxlOiB0aGlzLAorICAgICAgICAgIGFwcGxpZXM6IFsnb2Jq ZWN0JywgJ2NvbnRleHQnXSwgY2FsbGJhY2s6ICdzaG93X29ial9wcm9wZXJ0 aWVzJywKKyAgICAgICAgICBjYXRlZ29yeTogJ2NyZWF0ZScsIHByaW9yaXR5 OiA0LCBsYWJlbDogJ3t7IF8oJ1RyaWdnZXIuLi4nKSB9fScsCisgICAgICAg ICAgaWNvbjogJ3djVGFiSWNvbiBpY29uLXRyaWdnZXInLCBkYXRhOiB7YWN0 aW9uOiAnY3JlYXRlJywgY2hlY2s6IHRydWV9LAorICAgICAgICAgIGVuYWJs ZTogJ2NhbkNyZWF0ZScKKyAgICAgICAgfSx7CisgICAgICAgICAgbmFtZTog J2VuYWJsZV90cmlnZ2VyJywgbm9kZTogJ3RyaWdnZXInLCBtb2R1bGU6IHRo aXMsCisgICAgICAgICAgYXBwbGllczogWydvYmplY3QnLCAnY29udGV4dCdd LCBjYWxsYmFjazogJ2VuYWJsZV90cmlnZ2VyJywKKyAgICAgICAgICBjYXRl Z29yeTogJ2Nvbm5lY3QnLCBwcmlvcml0eTogMywgbGFiZWw6ICd7eyBfKCdF bmFibGUgdHJpZ2dlcicpIH19JywKKyAgICAgICAgICBpY29uOiAnZmEgZmEt Y2hlY2snLCBlbmFibGUgOiAnY2FuQ3JlYXRlX3dpdGhfdHJpZ2dlcl9lbmFi bGUnCisgICAgICAgIH0seworICAgICAgICAgIG5hbWU6ICdkaXNhYmxlX3Ry aWdnZXInLCBub2RlOiAndHJpZ2dlcicsIG1vZHVsZTogdGhpcywKKyAgICAg ICAgICBhcHBsaWVzOiBbJ29iamVjdCcsICdjb250ZXh0J10sIGNhbGxiYWNr OiAnZGlzYWJsZV90cmlnZ2VyJywKKyAgICAgICAgICBjYXRlZ29yeTogJ2Ry b3AnLCBwcmlvcml0eTogMywgbGFiZWw6ICd7eyBfKCdEaXNhYmxlIHRyaWdn ZXInKSB9fScsCisgICAgICAgICAgaWNvbjogJ2ZhIGZhLXRpbWVzJywgZW5h YmxlIDogJ2NhbkNyZWF0ZV93aXRoX3RyaWdnZXJfZGlzYWJsZScKKyAgICAg ICAgfSx7CisgICAgICAgICAgbmFtZTogJ2NyZWF0ZV90cmlnZ2VyX29uVmll dycsIG5vZGU6ICd2aWV3JywgbW9kdWxlOiB0aGlzLAorICAgICAgICAgIGFw cGxpZXM6IFsnb2JqZWN0JywgJ2NvbnRleHQnXSwgY2FsbGJhY2s6ICdzaG93 X29ial9wcm9wZXJ0aWVzJywKKyAgICAgICAgICBjYXRlZ29yeTogJ2NyZWF0 ZScsIHByaW9yaXR5OiA0LCBsYWJlbDogJ3t7IF8oJ1RyaWdnZXIuLi4nKSB9 fScsCisgICAgICAgICAgaWNvbjogJ3djVGFiSWNvbiBpY29uLXRyaWdnZXIn LCBkYXRhOiB7YWN0aW9uOiAnY3JlYXRlJywgY2hlY2s6IHRydWV9LAorICAg ICAgICAgIGVuYWJsZTogJ2NhbkNyZWF0ZScKKyAgICAgICAgfQorICAgICAg ICBdKTsKKyAgICAgIH0sCisgICAgICBjYWxsYmFja3M6IHsKKyAgICAgICAg LyogRW5hYmxlIHRyaWdnZXIgKi8KKyAgICAgICAgZW5hYmxlX3RyaWdnZXI6 IGZ1bmN0aW9uKGFyZ3MpIHsKKyAgICAgICAgICB2YXIgaW5wdXQgPSBhcmdz IHx8IHt9OworICAgICAgICAgIG9iaiA9IHRoaXMsCisgICAgICAgICAgdCA9 IHBnQnJvd3Nlci50cmVlLAorICAgICAgICAgIGkgPSBpbnB1dC5pdGVtIHx8 IHQuc2VsZWN0ZWQoKSwKKyAgICAgICAgICBkID0gaSAmJiBpLmxlbmd0aCA9 PSAxID8gdC5pdGVtRGF0YShpKSA6IHVuZGVmaW5lZDsKKworICAgICAgICAg IGlmICghZCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAg ICAgIHZhciBkYXRhID0gZDsKKyAgICAgICAgICAkLmFqYXgoeworICAgICAg ICAgICAgdXJsOiBvYmouZ2VuZXJhdGVfdXJsKGksICdlbmFibGUnICwgZCwg dHJ1ZSksCisgICAgICAgICAgICB0eXBlOidQVVQnLAorICAgICAgICAgICAg ZGF0YTogeydlbmFibGUnIDogdHJ1ZX0sCisgICAgICAgICAgICBkYXRhVHlw ZTogImpzb24iLAorICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24ocmVz KSB7CisgICAgICAgICAgICAgIGlmIChyZXMuc3VjY2VzcyA9PSAxKSB7Cisg ICAgICAgICAgICAgICAgYWxlcnRpZnkuc3VjY2Vzcygie3sgXygnIiArIHJl cy5pbmZvICsgIicpIH19Iik7CisgICAgICAgICAgICAgICAgdC5yZW1vdmVJ Y29uKGkpOworICAgICAgICAgICAgICAgIGRhdGEuaWNvbiA9ICdpY29uLXRy aWdnZXInOworICAgICAgICAgICAgICAgIHQuYWRkSWNvbihpLCB7aWNvbjog ZGF0YS5pY29ufSk7CisgICAgICAgICAgICAgICAgdC51bmxvYWQoaSk7Cisg ICAgICAgICAgICAgICAgdC5zZXRJbm9kZShpKTsKKyAgICAgICAgICAgICAg ICB0LmRlc2VsZWN0KGkpOworICAgICAgICAgICAgICAgIC8vIEZldGNoIHVw ZGF0ZWQgZGF0YSBmcm9tIHNlcnZlcgorICAgICAgICAgICAgICAgIHNldFRp bWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICB0LnNlbGVj dChpKTsKKyAgICAgICAgICAgICAgICB9LCAxMCk7CisgICAgICAgICAgICAg IH0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBlcnJvcjogZnVuY3Rp b24oeGhyLCBzdGF0dXMsIGVycm9yKSB7CisgICAgICAgICAgICAgIHRyeSB7 CisgICAgICAgICAgICAgICAgdmFyIGVyciA9ICQucGFyc2VKU09OKHhoci5y ZXNwb25zZVRleHQpOworICAgICAgICAgICAgICAgIGlmIChlcnIuc3VjY2Vz cyA9PSAwKSB7CisgICAgICAgICAgICAgICAgICBtc2cgPSBTKCd7eyBfKCcg KyBlcnIuZXJyb3Jtc2cgKyAnKX19JykudmFsdWUoKTsKKyAgICAgICAgICAg ICAgICAgIGFsZXJ0aWZ5LmVycm9yKCJ7eyBfKCciICsgZXJyLmVycm9ybXNn ICsgIicpIH19Iik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg ICB9IGNhdGNoIChlKSB7fQorICAgICAgICAgICAgICB0LnVubG9hZChpKTsK KyAgICAgICAgICAgIH0KKyAgICAgICAgICB9KQorICAgICAgICB9LAorICAg ICAgICAvKiBEaXNhYmxlIHRyaWdnZXIgKi8KKyAgICAgICAgZGlzYWJsZV90 cmlnZ2VyOiBmdW5jdGlvbihhcmdzKSB7CisgICAgICAgICAgdmFyIGlucHV0 ID0gYXJncyB8fCB7fTsKKyAgICAgICAgICBvYmogPSB0aGlzLAorICAgICAg ICAgIHQgPSBwZ0Jyb3dzZXIudHJlZSwKKyAgICAgICAgICBpID0gaW5wdXQu aXRlbSB8fCB0LnNlbGVjdGVkKCksCisgICAgICAgICAgZCA9IGkgJiYgaS5s ZW5ndGggPT0gMSA/IHQuaXRlbURhdGEoaSkgOiB1bmRlZmluZWQ7CisKKyAg ICAgICAgICBpZiAoIWQpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisK KyAgICAgICAgICB2YXIgZGF0YSA9IGQ7CisgICAgICAgICAgJC5hamF4KHsK KyAgICAgICAgICAgIHVybDogb2JqLmdlbmVyYXRlX3VybChpLCAnZW5hYmxl JyAsIGQsIHRydWUpLAorICAgICAgICAgICAgdHlwZTonUFVUJywKKyAgICAg ICAgICAgIGRhdGE6IHsnZW5hYmxlJyA6IGZhbHNlfSwKKyAgICAgICAgICAg IGRhdGFUeXBlOiAianNvbiIsCisgICAgICAgICAgICBzdWNjZXNzOiBmdW5j dGlvbihyZXMpIHsKKyAgICAgICAgICAgICAgaWYgKHJlcy5zdWNjZXNzID09 IDEpIHsKKyAgICAgICAgICAgICAgICBhbGVydGlmeS5zdWNjZXNzKCJ7eyBf KCciICsgcmVzLmluZm8gKyAiJykgfX0iKTsKKyAgICAgICAgICAgICAgICB0 LnJlbW92ZUljb24oaSk7CisgICAgICAgICAgICAgICAgZGF0YS5pY29uID0g J2ljb24tdHJpZ2dlci1iYWQnOworICAgICAgICAgICAgICAgIHQuYWRkSWNv bihpLCB7aWNvbjogZGF0YS5pY29ufSk7CisgICAgICAgICAgICAgICAgdC51 bmxvYWQoaSk7CisgICAgICAgICAgICAgICAgdC5zZXRJbm9kZShpKTsKKyAg ICAgICAgICAgICAgICB0LmRlc2VsZWN0KGkpOworICAgICAgICAgICAgICAg IC8vIEZldGNoIHVwZGF0ZWQgZGF0YSBmcm9tIHNlcnZlcgorICAgICAgICAg ICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAg ICAgICB0LnNlbGVjdChpKTsKKyAgICAgICAgICAgICAgICB9LCAxMCk7Cisg ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBl cnJvcjogZnVuY3Rpb24oeGhyLCBzdGF0dXMsIGVycm9yKSB7CisgICAgICAg ICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgdmFyIGVyciA9ICQucGFy c2VKU09OKHhoci5yZXNwb25zZVRleHQpOworICAgICAgICAgICAgICAgIGlm IChlcnIuc3VjY2VzcyA9PSAwKSB7CisgICAgICAgICAgICAgICAgICBtc2cg PSBTKCd7eyBfKCcgKyBlcnIuZXJyb3Jtc2cgKyAnKX19JykudmFsdWUoKTsK KyAgICAgICAgICAgICAgICAgIGFsZXJ0aWZ5LmVycm9yKCJ7eyBfKCciICsg ZXJyLmVycm9ybXNnICsgIicpIH19Iik7CisgICAgICAgICAgICAgICAgfQor ICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7fQorICAgICAgICAgICAgICB0 LnVubG9hZChpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9KQorICAg ICAgICB9CisgICAgICB9LAorICAgICAgY2FuRHJvcDogcGdCcm93c2VyLk5v ZGVzWydzY2hlbWEnXS5jYW5DaGlsZERyb3AsCisgICAgICBjYW5Ecm9wQ2Fz Y2FkZTogcGdCcm93c2VyLk5vZGVzWydzY2hlbWEnXS5jYW5DaGlsZERyb3As CisgICAgICBtb2RlbDogcGdBZG1pbi5Ccm93c2VyLk5vZGUuTW9kZWwuZXh0 ZW5kKHsKKyAgICAgICAgZGVmYXVsdHM6IHsKKyAgICAgICAgICBuYW1lOiB1 bmRlZmluZWQsCisJCQkJCWlzX3Jvd190cmlnZ2VyOiB0cnVlCisgICAgICAg IH0sCisgICAgICAgIHNjaGVtYTogW3sKKyAgICAgICAgICBpZDogJ25hbWUn LCBsYWJlbDogJ3t7IF8oJ05hbWUnKSB9fScsIGNlbGw6ICdzdHJpbmcnLAor ICAgICAgICAgIHR5cGU6ICd0ZXh0JywgZGlzYWJsZWQ6ICdpblNjaGVtYScK KyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdvaWQnLCBsYWJlbDone3sg XygnT0lEJykgfX0nLCBjZWxsOiAnc3RyaW5nJywKKyAgICAgICAgICB0eXBl OiAnaW50JywgZGlzYWJsZWQ6IHRydWUsIG1vZGU6IFsncHJvcGVydGllcydd CisgICAgICAgIH0seworICAgICAgICAgIGlkOiAnaXNfZW5hYmxlX3RyaWdn ZXInLCBsYWJlbDone3sgXygnRW5hYmxlIHRyaWdnZXI/JykgfX0nLAorICAg ICAgICAgIHR5cGU6ICdzd2l0Y2gnLCBkaXNhYmxlZDogJ2luU2NoZW1hJywg bW9kZTogWydwcm9wZXJ0aWVzJ10KKyAgICAgICAgfSx7CisgICAgICAgICAg aWQ6ICdpc19yb3dfdHJpZ2dlcicsIGxhYmVsOid7eyBfKCdSb3cgdHJpZ2dl cicpIH19JywKKyAgICAgICAgICB0eXBlOiAnc3dpdGNoJywgZ3JvdXA6ICd7 eyBfKCdEZWZpbml0aW9uJykgfX0nLAorICAgICAgICAgIG1vZGU6IFsnY3Jl YXRlJywnZWRpdCcsICdwcm9wZXJ0aWVzJ10sCisgICAgICAgICAgZGVwczog Wydpc19jb25zdHJhaW50X3RyaWdnZXInXSwKKyAgICAgICAgICBkaXNhYmxl ZDogZnVuY3Rpb24obSkgeworICAgICAgICAgICAgLy8gSWYgY29udHJhaW50 IHRyaWdnZXIgaXMgc2V0IHRvIFRydWUgdGhlbiByb3cgdHJpZ2dlciB3aWxs CisgICAgICAgICAgICAvLyBhdXRvbWF0aWNhbGx5IHNldCB0byBUcnVlIGFu ZCBiZWNvbWVzIGRpc2FibGUKKyAgICAgICAgICAgIHZhciBpc19jb25zdHJh aW50X3RyaWdnZXIgPSBtLmdldCgnaXNfY29uc3RyYWludF90cmlnZ2VyJyk7 CisgICAgICAgICAgICBpZighbS5pblNjaGVtYVdpdGhNb2RlbENoZWNrLmFw cGx5KHRoaXMsIFttXSkpIHsKKyAgICAgICAgICAgICAgICBpZighXy5pc1Vu ZGVmaW5lZChpc19jb25zdHJhaW50X3RyaWdnZXIpICYmCisgICAgICAgICAg ICAgICAgaXNfY29uc3RyYWludF90cmlnZ2VyID09PSB0cnVlKSB7CisgICAg ICAgICAgICAgICAgLy8gY2hhbmdlIGl0J3MgbW9kZWwgdmFsdWUKKyAgICAg ICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgbS5zZXQo J2lzX3Jvd190cmlnZ2VyJywgdHJ1ZSkgfSwgMTApOworICAgICAgICAgICAg ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9IGVsc2Ug eworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg ICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg ICAgICAvLyBEaXNiYWxlIGl0CisgICAgICAgICAgICAgICAgcmV0dXJuIHRy dWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9LHsK KyAgICAgICAgICBpZDogJ2lzX2NvbnN0cmFpbnRfdHJpZ2dlcicsIGxhYmVs Oid7eyBfKCdDb25zdHJhaW50IHRyaWdnZXInKSB9fScsCisgICAgICAgICAg dHlwZTogJ3N3aXRjaCcsIGRpc2FibGVkOiAnaW5TY2hlbWFXaXRoTW9kZWxD aGVjaycsCisgICAgICAgICAgbW9kZTogWydjcmVhdGUnLCdlZGl0JywgJ3By b3BlcnRpZXMnXSwKKyAgICAgICAgICBncm91cDogJ3t7IF8oJ0RlZmluaXRp b24nKSB9fScKKyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICd0Z2RlZmVy cmFibGUnLCBsYWJlbDone3sgXygnRGVmZXJyYWJsZScpIH19JywKKyAgICAg ICAgICB0eXBlOiAnc3dpdGNoJywgZ3JvdXA6ICd7eyBfKCdEZWZpbml0aW9u JykgfX0nLAorICAgICAgICAgIG1vZGU6IFsnY3JlYXRlJywnZWRpdCcsICdw cm9wZXJ0aWVzJ10sCisgICAgICAgICAgZGVwczogWydpc19jb25zdHJhaW50 X3RyaWdnZXInXSwKKyAgICAgICAgICBkaXNhYmxlZDogZnVuY3Rpb24obSkg eworICAgICAgICAgICAgLy8gSWYgY29udHJhaW50IHRyaWdnZXIgaXMgc2V0 IHRvIFRydWUgdGhlbiBvbmx5IGVuYWJsZSBpdAorICAgICAgICAgICAgdmFy IGlzX2NvbnN0cmFpbnRfdHJpZ2dlciA9IG0uZ2V0KCdpc19jb25zdHJhaW50 X3RyaWdnZXInKTsKKyAgICAgICAgICAgIGlmKCFtLmluU2NoZW1hV2l0aE1v ZGVsQ2hlY2suYXBwbHkodGhpcywgW21dKSkgeworICAgICAgICAgICAgICAg IGlmKCFfLmlzVW5kZWZpbmVkKGlzX2NvbnN0cmFpbnRfdHJpZ2dlcikgJiYK KyAgICAgICAgICAgICAgICBpc19jb25zdHJhaW50X3RyaWdnZXIgPT09IHRy dWUpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg ICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHNl dFRpbWVvdXQoZnVuY3Rpb24oKSB7IG0uc2V0KCd0Z2RlZmVycmFibGUnLCBm YWxzZSkgfSwgMTApOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1 ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2Ugewor ICAgICAgICAgICAgICAgIC8vIERpc2JhbGUgaXQKKyAgICAgICAgICAgICAg ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9Cisg ICAgICAgIH0seworICAgICAgICAgIGlkOiAndGdpbml0ZGVmZXJyZWQnLCBs YWJlbDone3sgXygnRGVmZXJyZWQnKSB9fScsCisgICAgICAgICAgdHlwZTog J3N3aXRjaCcsIGdyb3VwOiAne3sgXygnRGVmaW5pdGlvbicpIH19JywKKyAg ICAgICAgICBtb2RlOiBbJ2NyZWF0ZScsJ2VkaXQnLCAncHJvcGVydGllcydd LAorICAgICAgICAgIGRlcHM6IFsndGdkZWZlcnJhYmxlJ10sCisgICAgICAg ICAgZGlzYWJsZWQ6IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICAgIC8vIElm IGNvbnRyYWludCB0cmlnZ2VyIGlzIHNldCB0byBUcnVlIHRoZW4gb25seSBl bmFibGUgaXQKKyAgICAgICAgICAgIHZhciBpc19jb25zdHJhaW50X3RyaWdn ZXIgPSBtLmdldCgndGdkZWZlcnJhYmxlJyk7CisgICAgICAgICAgICBpZigh bS5pblNjaGVtYVdpdGhNb2RlbENoZWNrLmFwcGx5KHRoaXMsIFttXSkpIHsK KyAgICAgICAgICAgICAgICBpZighXy5pc1VuZGVmaW5lZChpc19jb25zdHJh aW50X3RyaWdnZXIpICYmCisgICAgICAgICAgICAgICAgaXNfY29uc3RyYWlu dF90cmlnZ2VyID09PSB0cnVlKSB7CisgICAgICAgICAgICAgICAgICAgIHJl dHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAg ICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBtLnNldCgn dGdpbml0ZGVmZXJyZWQnLCBmYWxzZSkgfSwgMTApOworICAgICAgICAgICAg ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAg ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIERpc2JhbGUg aXQKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAg IH0KKyAgICAgICAgICB9CisgICAgICAgIH0seworICAgICAgICAgIGlkOiAn dGZ1bmN0aW9uJywgbGFiZWw6J3t7IF8oJ1RyaWdnZXIgRnVuY3Rpb24nKSB9 fScsCisgICAgICAgICAgdHlwZTogJ3RleHQnLCBkaXNhYmxlZDogJ2luU2No ZW1hV2l0aE1vZGVsQ2hlY2snLAorICAgICAgICAgIG1vZGU6IFsnY3JlYXRl JywnZWRpdCcsICdwcm9wZXJ0aWVzJ10sIGdyb3VwOiAne3sgXygnRGVmaW5p dGlvbicpIH19JywKKyAgICAgICAgICBjb250cm9sOiAnbm9kZS1hamF4LW9w dGlvbnMnLCB1cmw6ICdnZXRfdHJpZ2dlcmZ1bmN0aW9ucycKKyAgICAgICAg fSx7CisgICAgICAgICAgaWQ6ICd0Z2FyZ3MnLCBsYWJlbDone3sgXygnQXJn dW1lbnRzJykgfX0nLCBjZWxsOiAnc3RyaW5nJywKKyAgICAgICAgICBncm91 cDogJ3t7IF8oJ0RlZmluaXRpb24nKSB9fScsCisgICAgICAgICAgdHlwZTog J3RleHQnLG1vZGU6IFsnY3JlYXRlJywnZWRpdCcsICdwcm9wZXJ0aWVzJ10s IGRlcHM6IFsndGZ1bmN0aW9uJ10sCisgICAgICAgICAgZGlzYWJsZWQ6IGZ1 bmN0aW9uKG0pIHsKKyAgICAgICAgICAgIC8vIFdlIHdpbGwgZGlzYWJsZSBp dCB3aGVuIEVEQiBQUEFTIGFuZCB0cmlnZ2VyIGZ1bmN0aW9uIGlzCisgICAg ICAgICAgICAvLyBzZXQgdG8gSW5saW5lIEVEQi1TUEwKKyAgICAgICAgICAg IHZhciB0ZnVuY3Rpb24gPSBtLmdldCgndGZ1bmN0aW9uJyksCisgICAgICAg ICAgICAgICAgc2VydmVyX3R5cGUgPSBtLm5vZGVfaW5mb1snc2VydmVyJ11b J3NlcnZlcl90eXBlJ107CisgICAgICAgICAgICBpZighbS5pblNjaGVtYVdp dGhNb2RlbENoZWNrLmFwcGx5KHRoaXMsIFttXSkpIHsKKyAgICAgICAgICAg ICAgICBpZihzZXJ2ZXJfdHlwZSA9PT0gJ3BwYXMnICYmCisgICAgICAgICAg ICAgICAgICAgICFfLmlzVW5kZWZpbmVkKHRmdW5jdGlvbikgJiYKKyAgICAg ICAgICAgICAgICB0ZnVuY3Rpb24gPT09ICdJbmxpbmUgRURCLVNQTCcpIHsK KyAgICAgICAgICAgICAgICAgICAgLy8gRGlzYmFsZSBhbmQgY2xlYXIgaXRz IHZhbHVlCisgICAgICAgICAgICAgICAgICAgIG0uc2V0KCd0Z2FyZ3MnLCB1 bmRlZmluZWQpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwor ICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAg IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg ICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIERpc2JhbGUgaXQKKyAg ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAg ICAgICAgICB9CisgICAgICAgIH0seworICAgICAgICBpZDogJ2ZpcmVzJywg bGFiZWw6J3t7IF8oJ0ZpcmVzJykgfX0nLCBkZXBzOiBbJ2lzX2NvbnN0cmFp bnRfdHJpZ2dlciddLAorICAgICAgICBtb2RlOiBbJ2NyZWF0ZScsJ2VkaXQn LCAncHJvcGVydGllcyddLCBncm91cDogJ3t7IF8oJ0RlZmluaXRpb24nKSB9 fScsCisgICAgICAgIG9wdGlvbnM6IGZ1bmN0aW9uKGNvbnRyb2wpIHsKKyAg ICAgICAgICAgIHZhciB0YWJsZV9vcHRpb25zID0gWworICAgICAgICAgICAg ICAgIHtsYWJlbDogIkJFRk9SRSIsIHZhbHVlOiAiQkVGT1JFIn0sCisgICAg ICAgICAgICAgICAge2xhYmVsOiAiQUZURVIiLCB2YWx1ZTogIkFGVEVSIn1d LAorICAgICAgICAgICAgICAgIHZpZXdfb3B0aW9ucyA9IFsKKyAgICAgICAg ICAgICAgICB7bGFiZWw6ICJCRUZPUkUiLCB2YWx1ZTogIkJFRk9SRSJ9LAor ICAgICAgICAgICAgICAgIHtsYWJlbDogIkFGVEVSIiwgdmFsdWU6ICJBRlRF UiJ9LAorICAgICAgICAgICAgICAgIHtsYWJlbDogIklOU1RFQUQgT0YiLCB2 YWx1ZTogIklOU1RFQUQgT0YifV07CisgICAgICAgICAgICAvLyBJZiB3ZSBh cmUgdW5kZXIgdGFibGUgdGhlbiBzaG93IHRhYmxlIHNwZWNpZmljIG9wdGlv bnMKKyAgICAgICAgICAgIGlmKF8uaW5kZXhPZihPYmplY3Qua2V5cyhjb250 cm9sLm1vZGVsLm5vZGVfaW5mbyksICd0YWJsZScpICE9IC0xKSB7CisgICAg ICAgICAgICAgICAgcmV0dXJuIHRhYmxlX29wdGlvbnM7CisgICAgICAgICAg ICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHJldHVybiB2aWV3X29wdGlv bnM7CisgICAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgIC8vIElm IGNyZWF0ZSBtb2RlIHRoZW4gYnkgZGVmYXVsdCBvcGVuIGNvbXBvc2l0ZSB0 eXBlCisgICAgICAgIGNvbnRyb2w6IEJhY2tmb3JtLlNlbGVjdDJDb250cm9s LmV4dGVuZCh7CisgICAgICAgICAgICByZW5kZXI6IGZ1bmN0aW9uKCl7Cisg ICAgICAgICAgICAgICAgLy8gSW5pdGlhbGl6ZSBwYXJlbnQncyByZW5kZXIg bWV0aG9kCisgICAgICAgICAgICAgICAgQmFja2Zvcm0uU2VsZWN0MkNvbnRy b2wucHJvdG90eXBlLnJlbmRlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwor ICAgICAgICAgICAgICAgIGlmKHRoaXMubW9kZWwuaXNOZXcoKSAmJgorICAg ICAgICAgICAgICAgICAgICAgICAgdGhpcy5tb2RlbC5nZXQoJ2lzX2NvbnN0 cmFpbnRfdHJpZ2dlcicpICE9PSB0cnVlICkgeworICAgICAgICAgICAgICAg ICAgICB0aGlzLm1vZGVsLnNldCh7J2ZpcmVzJzogJ0JFRk9SRSd9LCB7c2ls ZW50OiB0cnVlfSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg ICAgIHJldHVybiB0aGlzOworICAgICAgICAgICAgfQorICAgICAgICB9KSwK KyAgICAgICAgc2VsZWN0MjogeyBhbGxvd0NsZWFyOiBmYWxzZSwgd2lkdGg6 ICIxMDAlIiB9LAorICAgICAgICBkaXNhYmxlZDogZnVuY3Rpb24obSkgewor ICAgICAgICAvLyBJZiBjb250cmFpbnQgdHJpZ2dlciBpcyBzZXQgdG8gVHJ1 ZSB0aGVuIG9ubHkgZW5hYmxlIGl0CisgICAgICAgIHZhciBpc19jb25zdHJh aW50X3RyaWdnZXIgPSBtLmdldCgnaXNfY29uc3RyYWludF90cmlnZ2VyJyk7 CisgICAgICAgIGlmKCFtLmluU2NoZW1hV2l0aE1vZGVsQ2hlY2suYXBwbHko dGhpcywgW21dKSkgeworICAgICAgICAgICAgaWYoIV8uaXNVbmRlZmluZWQo aXNfY29uc3RyYWludF90cmlnZ2VyKSAmJgorICAgICAgICAgICAgaXNfY29u c3RyYWludF90cmlnZ2VyID09PSB0cnVlKSB7CisgICAgICAgICAgICAgICAg c2V0VGltZW91dChmdW5jdGlvbigpIHsgbS5zZXQoJ2ZpcmVzJywgJ0FGVEVS Jywge3NpbGVudDogdHJ1ZX0pIH0sIDEwKTsKKyAgICAgICAgICAgICAgICBy ZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICB9 IGVsc2UgeworICAgICAgICAgICAgLy8gRGlzYmFsZSBpdAorICAgICAgICAg ICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICB9CisgICAgICB9 LHsKKyAgICAgICAgdHlwZTogJ25lc3RlZCcsIGNvbnRyb2w6ICdmaWVsZHNl dCcsIG1vZGU6IFsnY3JlYXRlJywnZWRpdCcsICdwcm9wZXJ0aWVzJ10sCisg ICAgICAgIGxhYmVsOiAne3sgXygnRXZlbnRzJykgfX0nLCBncm91cDogJ3t7 IF8oJ0RlZmluaXRpb24nKSB9fScsCisgICAgICAgIHNjaGVtYTpbeworICAg ICAgICAgICAgaWQ6ICdldm50X2luc2VydCcsIGxhYmVsOid7eyBfKCdJTlNF UlQnKSB9fScsCisgICAgICAgICAgICB0eXBlOiAnc3dpdGNoJywgbW9kZTog WydjcmVhdGUnLCdlZGl0JywgJ3Byb3BlcnRpZXMnXSwKKyAgICAgICAgICAg IGdyb3VwOiAne3sgXygnRXZlbnRzJykgfX0nLAorICAgICAgICAgICAgZGlz YWJsZWQ6IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICAgICAgICByZXR1cm4g bS5pblNjaGVtYVdpdGhNb2RlbENoZWNrLmFwcGx5KHRoaXMsIFttXSk7Cisg ICAgICAgICAgICB9CisgICAgICAgIH0seworICAgICAgICAgICAgaWQ6ICdl dm50X3VwZGF0ZScsIGxhYmVsOid7eyBfKCdVUERBVEUnKSB9fScsCisgICAg ICAgICAgICB0eXBlOiAnc3dpdGNoJywgbW9kZTogWydjcmVhdGUnLCdlZGl0 JywgJ3Byb3BlcnRpZXMnXSwKKyAgICAgICAgICAgIGdyb3VwOiAne3sgXygn RXZlbnRzJykgfX0nLAorICAgICAgICAgICAgZGlzYWJsZWQ6IGZ1bmN0aW9u KG0pIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbS5pblNjaGVtYVdpdGhN b2RlbENoZWNrLmFwcGx5KHRoaXMsIFttXSk7CisgICAgICAgICAgICB9Cisg ICAgICAgIH0seworICAgICAgICAgICAgaWQ6ICdldm50X2RlbGV0ZScsIGxh YmVsOid7eyBfKCdERUxFVEUnKSB9fScsCisgICAgICAgICAgICB0eXBlOiAn c3dpdGNoJywgbW9kZTogWydjcmVhdGUnLCdlZGl0JywgJ3Byb3BlcnRpZXMn XSwKKyAgICAgICAgICAgIGdyb3VwOiAne3sgXygnRXZlbnRzJykgfX0nLAor ICAgICAgICAgICAgZGlzYWJsZWQ6IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAg ICAgICAgICByZXR1cm4gbS5pblNjaGVtYVdpdGhNb2RlbENoZWNrLmFwcGx5 KHRoaXMsIFttXSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0seworICAg ICAgICAgICAgaWQ6ICdldm50X3R1cm5jYXRlJywgbGFiZWw6J3t7IF8oJ1RS VU5DQVRFJykgfX0nLAorICAgICAgICAgICAgdHlwZTogJ3N3aXRjaCcsIGdy b3VwOiAne3sgXygnRXZlbnRzJykgfX0nLAorICAgICAgICAgICAgZGlzYWJs ZWQ6IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICAgIHZhciBpc19jb25zdHJh aW50X3RyaWdnZXIgPSBtLmdldCgnaXNfY29uc3RyYWludF90cmlnZ2VyJyks CisgICAgICAgICAgICAgICAgaXNfcm93X3RyaWdnZXIgPSBtLmdldCgnaXNf cm93X3RyaWdnZXInKSwKKyAgICAgICAgICAgICAgICBzZXJ2ZXJfdHlwZSA9 IG0ubm9kZV9pbmZvWydzZXJ2ZXInXVsnc2VydmVyX3R5cGUnXTsKKyAgICAg ICAgICAgIGlmKCFtLmluU2NoZW1hV2l0aE1vZGVsQ2hlY2suYXBwbHkodGhp cywgW21dKSkgeworICAgICAgICAgICAgICAgIC8vIFdlIHdpbGwgZW5hYmFs ZSB0cnVuY2F0ZSBvbmx5IGZvciBFREIgUFBBUworICAgICAgICAgICAgICAg IC8vIGFuZCBib3RoIHRyaWdnZXJzIHJvdyAmIGNvbnN0YXJpbnQgYXJlIHNl dCB0byBmYWxzZQorICAgICAgICAgICAgICAgIGlmKHNlcnZlcl90eXBlID09 PSAncHBhcycgJiYKKyAgICAgICAgICAgICAgICAgICAgIV8uaXNVbmRlZmlu ZWQoaXNfY29uc3RyYWludF90cmlnZ2VyKSAmJgorICAgICAgICAgICAgICAg ICAgICAhXy5pc1VuZGVmaW5lZChpc19yb3dfdHJpZ2dlcikgJiYKKyAgICAg ICAgICAgICAgICBpc19jb25zdHJhaW50X3RyaWdnZXIgPT09IGZhbHNlICYm CisgICAgICAgICAgICAgICAgICAgIGlzX3Jvd190cmlnZ2VyID09PSBmYWxz ZSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0 dXJuIHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBl bHNlIHsKKyAgICAgICAgICAgICAgICAvLyBEaXNiYWxlIGl0CisgICAgICAg ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAg IH0KKyAgICAgICAgfV0KKyAgICAgICAgfSx7CisgICAgICAgICAgICBpZDog J3doZW5jbGF1c2UnLCBsYWJlbDone3sgXygnV2hlbicpIH19JywKKyAgICAg ICAgICAgIHR5cGU6ICd0ZXh0JywgZGlzYWJsZWQ6ICdpblNjaGVtYVdpdGhN b2RlbENoZWNrJywKKyAgICAgICAgICAgIG1vZGU6IFsnY3JlYXRlJywgJ2Vk aXQnLCAncHJvcGVydGllcyddLAorICAgICAgICAgICAgY29udHJvbDogJ3Nx bC1maWVsZCcsIHZpc2libGU6IHRydWUsIGdyb3VwOiAne3sgXygnRGVmaW5p dGlvbicpIH19JworICAgICAgICB9LHsKKyAgICAgICAgICAgIGlkOiAnY29s dW1ucycsIGxhYmVsOiAne3sgXygnQ29sdW1ucycpIH19JywgdXJsOiAnbm9k ZXMnLAorICAgICAgICAgICAgdHlwZTogJ2NvbGxlY3Rpb24nLCBjb250cm9s OiAnbXVsdGktc2VsZWN0LWFqYXgnLAorICAgICAgICAgICAgZGVwczogWydl dm50X3VwZGF0ZSddLCBub2RlOiAnY29sdW1uJywgZ3JvdXA6ICd7eyBfKCdE ZWZpbml0aW9uJykgfX0nLAorICAgICAgICAgICAgbW9kZWw6IHBnQnJvd3Nl ci5Ob2RlLk1vZGVsLmV4dGVuZCh7CisgICAgICAgICAgICAgICAga2V5czog Wydjb2x1bW4nXSwgZGVmYXVsdHM6IHsgY29sdW1uOiB1bmRlZmluZWQgfQor ICAgICAgICAgICAgfSksCisgICAgICAgICAgICBkaXNhYmxlZDogZnVuY3Rp b24obSkgeworICAgICAgICAgICAgICAgIGlmKHRoaXMubm9kZV9pbmZvICYm ICAnY2F0YWxvZycgaW4gdGhpcy5ub2RlX2luZm8pIHsKKyAgICAgICAgICAg ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgfQorICAg ICAgICAgICAgICAgIC8vRGlzYmFsZSBpbiBlZGl0IG1vZGUKKyAgICAgICAg ICAgICAgICBpZiAoIW0uaXNOZXcoKSkgeworICAgICAgICAgICAgICAgICAg ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg ICAgICAgLy8gRW5hYmxlIGNvbHVtbiBvbmx5IGlmIHVwZGF0ZSBldmVudCBp cyBzZXQgdHJ1ZQorICAgICAgICAgICAgICAgIHZhciBpc1VwZGF0ZSA9IG0u Z2V0KCdldm50X3VwZGF0ZScpOworICAgICAgICAgICAgICAgIGlmKCFfLmlz VW5kZWZpbmVkKGlzVXBkYXRlKSAmJiBpc1VwZGF0ZSkgeworICAgICAgICAg ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQor ICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAg ICAgICB9LHsKKyAgICAgICAgICAgIGlkOiAnY29kZScsIGxhYmVsOid7eyBf KCdDb2RlJykgfX0nLCBncm91cDogJ3t7IF8oJ0NvZGUnKSB9fScsCisgICAg ICAgICAgICB0eXBlOiAndGV4dCcsIG1vZGU6IFsnY3JlYXRlJywgJ2VkaXQn XSwgZGVwczogWyd0ZnVuY3Rpb24nXSwKKyAgICAgICAgICAgIGNvbnRyb2w6 ICdzcWwtZmllbGQnLCB2aXNpYmxlOiB0cnVlLAorICAgICAgICAgICAgZGlz YWJsZWQ6IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICAgICAgICAvLyBXZSB3 aWxsIGVuYWJsZSBpdCBvbmx5IHdoZW4gRURCIFBQQVMgYW5kIHRyaWdnZXIg ZnVuY3Rpb24gaXMKKyAgICAgICAgICAgICAgICAvLyBzZXQgdG8gSW5saW5l IEVEQi1TUEwKKyAgICAgICAgICAgICAgICB2YXIgdGZ1bmN0aW9uID0gbS5n ZXQoJ3RmdW5jdGlvbicpLAorICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJf dHlwZSA9IG0ubm9kZV9pbmZvWydzZXJ2ZXInXVsnc2VydmVyX3R5cGUnXTsK KyAgICAgICAgICAgICAgICBpZighbS5pblNjaGVtYVdpdGhNb2RlbENoZWNr LmFwcGx5KHRoaXMsIFttXSkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYo c2VydmVyX3R5cGUgPT09ICdwcGFzJyAmJgorICAgICAgICAgICAgICAgICAg ICAgICAgIV8uaXNVbmRlZmluZWQodGZ1bmN0aW9uKSAmJgorICAgICAgICAg ICAgICAgICAgICB0ZnVuY3Rpb24gPT09ICdJbmxpbmUgRURCLVNQTCcpIHsK KyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg ICAgICAgICAgICAgICAgICAgIC8vIEFsc28gY2xlYXIgYW5kIGRpc2FibGUg QXJndW1lbnQgZmllbGQKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsK KyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAg ICAgICAgICAgICAgICAgICAgLy8gRGlzYmFsZSBpdAorICAgICAgICAgICAg ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAg ICAgICAgICAgIH0KKyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdpc19z eXNfdHJpZ2dlcicsIGxhYmVsOid7eyBfKCdTeXN0ZW0gdHJpZ2dlcj8nKSB9 fScsIGNlbGw6ICdzdHJpbmcnLAorICAgICAgICAgIHR5cGU6ICdzd2l0Y2gn LCBkaXNhYmxlZDogJ2luU2NoZW1hV2l0aE1vZGVsQ2hlY2snLCBtb2RlOiBb J3Byb3BlcnRpZXMnXQorICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ2lz X2NvbnN0YXJpbnQnLCBsYWJlbDone3sgXygnQ29uc3RyYWludD8nKSB9fScs IGNlbGw6ICdzdHJpbmcnLAorICAgICAgICAgIHR5cGU6ICdzd2l0Y2gnLCBk aXNhYmxlZDogJ2luU2NoZW1hV2l0aE1vZGVsQ2hlY2snLCBtb2RlOiBbJ3By b3BlcnRpZXMnXQorICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ2Rlc2Ny aXB0aW9uJywgbGFiZWw6J3t7IF8oJ0NvbW1lbnQnKSB9fScsIGNlbGw6ICdz dHJpbmcnLAorICAgICAgICAgIHR5cGU6ICdtdWx0aWxpbmUnLCBtb2RlOiBb J3Byb3BlcnRpZXMnLCAnY3JlYXRlJywgJ2VkaXQnXSwKKyAgICAgICAgICBk aXNhYmxlZDogJ2luU2NoZW1hJworICAgIH1dLAorICAgICAgICB2YWxpZGF0 ZTogZnVuY3Rpb24oKSB7CisgICAgICAgICAgdmFyIGVyciA9IHt9LAorICAg ICAgICAgICAgICBtc2cgPSB1bmRlZmluZWQ7CisgICAgICAgICAgdGhpcy5l cnJvck1vZGVsLmNsZWFyKCk7CisKKyAgICAgICAgICBpZihfLmlzVW5kZWZp bmVkKHRoaXMuZ2V0KCduYW1lJykpCisgICAgICAgICAgICAgIHx8IFN0cmlu Zyh0aGlzLmdldCgnbmFtZScpKS5yZXBsYWNlKC9eXHMrfFxzKyQvZywgJycp ID09ICcnKSB7CisgICAgICAgICAgICBtc2cgPSAne3sgXygnTmFtZSBjYW4g bm90IGJlIGVtcHR5LicpIH19JzsKKyAgICAgICAgICAgIHRoaXMuZXJyb3JN b2RlbC5zZXQoJ25hbWUnLCBtc2cpOworICAgICAgICAgICAgcmV0dXJuIG1z ZzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICBpZihfLmlzVW5kZWZpbmVk KHRoaXMuZ2V0KCd0ZnVuY3Rpb24nKSkKKyAgICAgICAgICAgICAgfHwgU3Ry aW5nKHRoaXMuZ2V0KCd0ZnVuY3Rpb24nKSkucmVwbGFjZSgvXlxzK3xccysk L2csICcnKSA9PSAnJykgeworICAgICAgICAgICAgbXNnID0gJ3t7IF8oJ1Ry aWdnZXIgZnVuY3Rpb24gY2FuIG5vdCBiZSBlbXB0eS4nKSB9fSc7CisgICAg ICAgICAgICB0aGlzLmVycm9yTW9kZWwuc2V0KCd0ZnVuY3Rpb24nLCBtc2cp OworICAgICAgICAgICAgcmV0dXJuIG1zZzsKKyAgICAgICAgICB9CisKKyAg ICAgICAgICBpZighdGhpcy5nZXQoJ2V2bnRfdHVybmNhdGUnKSAmJiAhdGhp cy5nZXQoJ2V2bnRfZGVsZXRlJykgJiYgIXRoaXMuZ2V0KCdldm50X3VwZGF0 ZScpICYmICF0aGlzLmdldCgnZXZudF9pbnNlcnQnKSkgeworICAgICAgICAg IG1zZyA9ICd7eyBfKCdTcGVjaWZ5IGF0bGVhc3Qgb25lIGV2ZW50LicpIH19 JzsKKyAgICAgICAgICB0aGlzLmVycm9yTW9kZWwuc2V0KCdldm50X3R1cm5j YXRlJywgIiAiKTsKKyAgICAgICAgICB0aGlzLmVycm9yTW9kZWwuc2V0KCdl dm50X2RlbGV0ZScsICIgIik7CisgICAgICAgICAgdGhpcy5lcnJvck1vZGVs LnNldCgnZXZudF91cGRhdGUnLCAiICIpOworICAgICAgICAgIHRoaXMuZXJy b3JNb2RlbC5zZXQoJ2V2bnRfaW5zZXJ0JywgbXNnKTsKKyAgICAgICAgICBy ZXR1cm4gbXNnOworICAgICAgICAgIH0KKyAgICAgICAgICByZXR1cm4gbnVs bDsKKyAgICAgICAgfSwKKyAgICAgICAgLy8gV2Ugd2lsbCBjaGVjayBpZiB3 ZSBhcmUgdW5kZXIgc2NoZW1hIG5vZGUgJiBpbiAnY3JlYXRlJyBtb2RlCisg ICAgICAgIGluU2NoZW1hOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICBpZih0 aGlzLm5vZGVfaW5mbyAmJiAgJ2NhdGFsb2cnIGluIHRoaXMubm9kZV9pbmZv KSB7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICB9Cisg ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9LAorICAgICAgICAv LyBXZSB3aWxsIGNoZWNrIGlmIHdlIGFyZSB1bmRlciBzY2hlbWEgbm9kZSAm IGluICdjcmVhdGUnIG1vZGUKKyAgICAgICAgaW5TY2hlbWFXaXRoTW9kZWxD aGVjazogZnVuY3Rpb24obSkgeworICAgICAgICAgIGlmKHRoaXMubm9kZV9p bmZvICYmICAnc2NoZW1hJyBpbiB0aGlzLm5vZGVfaW5mbykgeworICAgICAg ICAgICAgLy8gV2Ugd2lsbCBkaXNhYmxlIGNvbnRyb2wgaWYgaXQncyBpbiAn ZWRpdCcgbW9kZQorICAgICAgICAgICAgaWYgKG0uaXNOZXcoKSkgeworICAg ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9IGVsc2Ug eworICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0K KyAgICAgICAgICB9CisgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg IH0sCisgICAgICAgIC8vIENoZWNrcyB3ZWF0aGVyIHRvIGVuYWJsZS9kaXNh YmxlIGNvbnRyb2wKKyAgICAgICAgaW5TY2hlbWFXaXRoQ29sdW1uQ2hlY2s6 IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICBpZih0aGlzLm5vZGVfaW5mbyAm JiAgJ3NjaGVtYScgaW4gdGhpcy5ub2RlX2luZm8pIHsKKyAgICAgICAgICAg IC8vIFdlIHdpbGwgZGlzYWJsZSBjb250cm9sIGlmIGl0J3Mgc3lzdGVtIGNv bHVtbnMKKyAgICAgICAgICAgIC8vIGllOiBpdCdzIHBvc2l0aW9uIGlzIGxl c3MgdGhlbiAxCisgICAgICAgICAgICBpZiAobS5pc05ldygpKSB7CisgICAg ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0gZWxzZSB7 CisgICAgICAgICAgICAgIC8vIGlmIHdlIGFyZSBpbiBlZGl0IG1vZGUKKyAg ICAgICAgICAgICAgaWYgKCFfLmlzVW5kZWZpbmVkKG0uZ2V0KCdhdHRudW0n KSkgJiYgbS5nZXQoJ2F0dG51bScpID49IDEgKSB7CisgICAgICAgICAgICAg ICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICB9IGVsc2UgeworICAg ICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICB9Cisg ICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgICAgcmV0dXJuIHRy dWU7CisgICAgICAgIH0KKyAgICAgIH0pLAorICAgICAgLy8gQmVsb3cgZnVu Y3Rpb24gd2lsbCBlbmFibGUgcmlnaHQgY2xpY2sgbWVudSBmb3IgY3JlYXRp bmcgY29sdW1uCisgICAgICBjYW5DcmVhdGU6IGZ1bmN0aW9uKGl0ZW1EYXRh LCBpdGVtLCBkYXRhKSB7CisgICAgICAgICAgLy8gSWYgY2hlY2sgaXMgZmFs c2UgdGhlbiAsIHdlIHdpbGwgYWxsb3cgY3JlYXRlIG1lbnUKKyAgICAgICAg ICBpZiAoZGF0YSAmJiBkYXRhLmNoZWNrID09IGZhbHNlKQorICAgICAgICAg ICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgICB2YXIgdCA9IHBnQnJvd3Nl ci50cmVlLCBpID0gaXRlbSwgZCA9IGl0ZW1EYXRhLCBwYXJlbnRzID0gW107 CisgICAgICAgICAgLy8gVG8gaXRlcmF0ZSBvdmVyIHRyZWUgdG8gY2hlY2sg cGFyZW50IG5vZGUKKyAgICAgICAgICB3aGlsZSAoaSkgeworICAgICAgICAg ICAgLy8gSWYgaXQgaXMgc2NoZW1hIHRoZW4gYWxsb3cgdXNlciB0byBjIHJl YXRlIHRhYmxlCisgICAgICAgICAgICBpZiAoXy5pbmRleE9mKFsnc2NoZW1h J10sIGQuX3R5cGUpID4gLTEpCisgICAgICAgICAgICAgIHJldHVybiB0cnVl OworICAgICAgICAgICAgcGFyZW50cy5wdXNoKGQuX3R5cGUpOworICAgICAg ICAgICAgaSA9IHQuaGFzUGFyZW50KGkpID8gdC5wYXJlbnQoaSkgOiBudWxs OworICAgICAgICAgICAgZCA9IGkgPyB0Lml0ZW1EYXRhKGkpIDogbnVsbDsK KyAgICAgICAgICB9CisgICAgICAgICAgLy8gSWYgbm9kZSBpcyB1bmRlciBj YXRhbG9nIHRoZW4gZG8gbm90IGFsbG93ICdjcmVhdGUnIG1lbnUKKyAgICAg ICAgICBpZiAoXy5pbmRleE9mKHBhcmVudHMsICdjYXRhbG9nJykgPiAtMSkg eworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgIH0gZWxz ZSB7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICB9Cisg ICAgICB9LAorICAgICAgLy8gQ2hlY2sgdG8gd2hldGhlciB0cmlnZ2VyIGlz IGRpc2FibGUgPworICAgICAgY2FuQ3JlYXRlX3dpdGhfdHJpZ2dlcl9lbmFi bGU6IGZ1bmN0aW9uKGl0ZW1EYXRhLCBpdGVtLCBkYXRhKSB7CisgICAgICAg IGlmKHRoaXMuY2FuQ3JlYXRlLmFwcGx5KHRoaXMsIFtpdGVtRGF0YSwgaXRl bSwgZGF0YV0pKSB7CisgICAgICAgICAgLy8gV2UgYXJlIGhlcmUgbWVhbnMg d2UgY2FuIGNyZWF0ZSBtZW51LCBub3cgbGV0J3MgY2hlY2sgY29uZGl0aW9u CisgICAgICAgICAgaWYoaXRlbURhdGEuaWNvbiA9PT0gJ2ljb24tdHJpZ2dl ci1iYWQnKSB7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg ICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg ICAgIH0KKyAgICAgICAgfQorICAgICAgfSwKKyAgICAgIC8vIENoZWNrIHRv IHdoZXRoZXIgdHJpZ2dlciBpcyBlbmFibGUgPworICAgICAgY2FuQ3JlYXRl X3dpdGhfdHJpZ2dlcl9kaXNhYmxlOiBmdW5jdGlvbihpdGVtRGF0YSwgaXRl bSwgZGF0YSkgeworICAgICAgICBpZih0aGlzLmNhbkNyZWF0ZS5hcHBseSh0 aGlzLCBbaXRlbURhdGEsIGl0ZW0sIGRhdGFdKSkgeworICAgICAgICAgIC8v IFdlIGFyZSBoZXJlIG1lYW5zIHdlIGNhbiBjcmVhdGUgbWVudSwgbm93IGxl dCdzIGNoZWNrIGNvbmRpdGlvbgorICAgICAgICAgIGlmKGl0ZW1EYXRhLmlj b24gPT09ICdpY29uLXRyaWdnZXInKSB7CisgICAgICAgICAgICByZXR1cm4g dHJ1ZTsKKyAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJu IGZhbHNlOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICB9 KTsKKyB9CisKKyAgcmV0dXJuIHBnQnJvd3Nlci5Ob2Rlc1sndHJpZ2dlcidd OworfSk7CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90ZW1wbGF0ZXMv ZGF0YXR5cGUvc3FsLzkuMV9wbHVzL2dldF90eXBlcy5zcWwgYi93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy90ZW1wbGF0ZXMvZGF0YXR5cGUvc3FsLzkuMV9wbHVzL2dldF90 eXBlcy5zcWwKaW5kZXggYjg5NTJkMi4uZjQ2NWE0NiAxMDA2NDQKLS0tIGEv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvdGVtcGxhdGVzL2RhdGF0eXBlL3NxbC85LjFfcGx1 cy9nZXRfdHlwZXMuc3FsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RlbXBsYXRl cy9kYXRhdHlwZS9zcWwvOS4xX3BsdXMvZ2V0X3R5cGVzLnNxbApAQCAtNSw3 ICs1LDggQEAgRlJPTQogICAgICAgICBmb3JtYXRfdHlwZSh0Lm9pZCxOVUxM KSBBUyB0eXBuYW1lLAogICAgICAgICBDQVNFIFdIRU4gdHlwZWxlbSA+IDAg VEhFTiB0eXBlbGVtIEVMU0UgdC5vaWQgRU5EIGFzIGVsZW1vaWQsCiAgICAg ICAgIHR5cGxlbiwgdHlwdHlwZSwgdC5vaWQsIG5zcG5hbWUsCi0gICAgICAg IChTRUxFQ1QgQ09VTlQoMSkgRlJPTSBwZ190eXBlIHQyIFdIRVJFIHQyLnR5 cG5hbWUgPSB0LnR5cG5hbWUpID4gMSBBUyBpc2R1cAorICAgICAgICAoU0VM RUNUIENPVU5UKDEpIEZST00gcGdfdHlwZSB0MiBXSEVSRSB0Mi50eXBuYW1l ID0gdC50eXBuYW1lKSA+IDEgQVMgaXNkdXAsCisgICAgICAgIENBU0UgV0hF TiB0LnR5cGNvbGxhdGlvbiAhPSAwIFRIRU4gVFJVRSBFTFNFIEZBTFNFIEVO RCBBUyBpc19jb2xsYXRhYmxlCiAgICAgRlJPTQogICAgICAgICBwZ190eXBl IHQKICAgICBKT0lOCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90ZW1w bGF0ZXMvbWFjcm9zL3NjaGVtYXMvcHJpdmlsZWdlLm1hY3JvcyBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL3RlbXBsYXRlcy9tYWNyb3Mvc2NoZW1hcy9wcml2aWxlZ2Uu bWFjcm9zCmluZGV4IDE4M2VjMmYuLmRjMThhMzEgMTAwNjQ0Ci0tLSBhL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL3RlbXBsYXRlcy9tYWNyb3Mvc2NoZW1hcy9wcml2aWxl Z2UubWFjcm9zCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RlbXBsYXRlcy9tYWNy b3Mvc2NoZW1hcy9wcml2aWxlZ2UubWFjcm9zCkBAIC02LDYgKzYsMTAgQEAK IEdSQU5UIHt7IHByaXZzfGpvaW4oJywgJykgfX0gT04ge3sgdHlwZSB9fSB7 eyBjb25ufHF0SWRlbnQoc2NoZW1hLCBwYXJhbSkgfX0gVE8ge3sgY29ubnxx dElkZW50KHJvbGUpIH19OwogeyUgZW5kaWYgJX0KIHslIGlmIHdpdGhfZ3Jh bnRfcHJpdnMgJX0KK3slIGlmIHByaXZzICV9Cit7IyBUaGlzIGVtcHR5IGlm IGlzIHRvIGFkZCBuZXcgbGluZSBpbiBiZXR3ZWVuICN9CisKK3slIGVuZGlm ICV9CiBHUkFOVCB7eyB3aXRoX2dyYW50X3ByaXZzfGpvaW4oJywgJykgfX0g T04ge3sgdHlwZSB9fSB7eyBjb25ufHF0SWRlbnQoc2NoZW1hLCBwYXJhbSkg fX0gVE8ge3sgY29ubnxxdElkZW50KHJvbGUpIH19IFdJVEggR1JBTlQgT1BU SU9OOwogeyUgZW5kaWYgJX0KIHslLSBlbmRtYWNybyAlfQpkaWZmIC0tZ2l0 IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvdGVtcGxhdGVzL3NjaGVtYS9qcy9zY2hlbWEu anMgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy90ZW1wbGF0ZXMvc2NoZW1hL2pzL3NjaGVt YS5qcwppbmRleCBkYzM5M2Q1Li4yMTBmM2U2IDEwMDY0NAotLS0gYS93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy90ZW1wbGF0ZXMvc2NoZW1hL2pzL3NjaGVtYS5qcworKysg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy90ZW1wbGF0ZXMvc2NoZW1hL2pzL3NjaGVtYS5q cwpAQCAtNCw2ICs0LDI1NiBAQCBkZWZpbmUoCiAgICAgICAgICdwZ2FkbWlu LmJyb3dzZXIuY29sbGVjdGlvbicsCiAgICAgICAgICdwZ2FkbWluLmJyb3dz ZXIuc2VydmVyLnByaXZpbGVnZSddLAogZnVuY3Rpb24oJCwgXywgUywgcGdB ZG1pbiwgcGdCcm93c2VyLCBCYWNrZm9ybSwgYWxlcnRpZnkpIHsKKworCisg ICAgLy8gVmFjY3VtU2V0dGluZ3MgQ29sbGVjdGlvbiB0byBkaXNwbGF5IGFs bCBzZXR0aW5ncyBwYXJhbWV0ZXJzIGFzIEdyaWQKKyAgICB2YXIgVmFjdXVt Q29sbGVjdGlvbkNvbnRyb2wgPSBCYWNrZm9ybS5WYWN1dW1Db2xsZWN0aW9u Q29udHJvbCA9CisgICAgICBCYWNrZm9ybS5Db250cm9sLmV4dGVuZCh7CisK KyAgICAgIGdyaWRfY29sdW1uczp1bmRlZmluZWQsCisKKyAgICAgIGluaXRp YWxpemU6IGZ1bmN0aW9uKCkgeworICAgICAgICBCYWNrZm9ybS5Db250cm9s LnByb3RvdHlwZS5pbml0aWFsaXplLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7 CisgICAgICAgIHZhciBzZWxmID0gdGhpcywKKyAgICAgICAgICAgIG0gPSB0 aGlzLm1vZGVsOworICAgICAgICAgICAgdXJsID0gc2VsZi5maWVsZC5nZXQo J3VybCcpOworCisgICAgICAgIGlmICh1cmwgJiYgbS5pc05ldygpKSB7Cisg ICAgICAgICAgdmFyIG5vZGUgPSBzZWxmLmZpZWxkLmdldCgnbm9kZScpLAor ICAgICAgICAgICAgICBub2RlX2RhdGEgPSBzZWxmLmZpZWxkLmdldCgnbm9k ZV9kYXRhJyksCisgICAgICAgICAgICAgIG5vZGVfaW5mbyA9IHNlbGYuZmll bGQuZ2V0KCdub2RlX2luZm8nKSwKKyAgICAgICAgICAgICAgZnVsbF91cmwg PSBub2RlLmdlbmVyYXRlX3VybC5hcHBseSgKKyAgICAgICAgICAgICAgICBu b2RlLCBbCisgICAgICAgICAgICAgICAgICBudWxsLCB1cmwsIG5vZGVfZGF0 YSwgZmFsc2UsIG5vZGVfaW5mbworICAgICAgICAgICAgICAgIF0pLAorICAg ICAgICAgICAgICBkYXRhOworICAgICAgICAgIG0udHJpZ2dlcigncGdhZG1p bi12aWV3OmZldGNoaW5nJywgbSwgc2VsZi5maWVsZCk7CisKKyAgICAgICAg ICAvLyBmZXRjaCBkZWZhdWx0IHZhbHVlcyBmb3IgYXV0b3ZhY3V1bSBmaWVs ZHMKKyAgICAgICAgICAkLmFqYXgoeworICAgICAgICAgICAgYXN5bmM6IGZh bHNlLAorICAgICAgICAgICAgdXJsOiBmdWxsX3VybCwKKyAgICAgICAgICAg IHN1Y2Nlc3M6IGZ1bmN0aW9uIChyZXMpIHsKKyAgICAgICAgICAgICAgZGF0 YSA9IHJlczsKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBlcnJvcjog ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgIG0udHJpZ2dlcigncGdhZG1p bi12aWV3OmZldGNoOmVycm9yJywgbSwgc2VsZi5maWVsZCk7CisgICAgICAg ICAgICB9CisgICAgICAgICAgfSk7CisgICAgICAgICAgbS50cmlnZ2VyKCdw Z2FkbWluLXZpZXc6ZmV0Y2hlZCcsIG0sIHNlbGYuZmllbGQpOworCisgICAg ICAgICAgLy8gQWRkIGZldGNoZWQgbW9kZWxzIGludG8gY29sbGVjdGlvbgor ICAgICAgICAgIGlmIChkYXRhICYmIF8uaXNBcnJheShkYXRhKSkgeworICAg ICAgICAgICAgbS5nZXQoc2VsZi5maWVsZC5nZXQoJ25hbWUnKSkucmVzZXQo ZGF0YSwge3NpbGVudDogdHJ1ZX0pOworICAgICAgICAgIH0KKyAgICAgICAg fQorICAgICAgfSwKKworICAgICAgcmVuZGVyOiBmdW5jdGlvbigpIHsKKyAg ICAgICAgdmFyIHNlbGYgPSB0aGlzLAorICAgICAgICAgICAgbSA9IHRoaXMu bW9kZWwsCisgICAgICAgICAgICBhdHRyaWJ1dGVzID0gc2VsZi5maWVsZC5h dHRyaWJ1dGVzOworCisgICAgICAgIC8vIHJlbW92ZSBncmlkCisgICAgICAg IGlmKHNlbGYuZ3JpZCkgeworICAgICAgICAgIHNlbGYuZ3JpZC5yZW1vdmUo KTsKKyAgICAgICAgICBkZWxldGUgc2VsZi5ncmlkOworICAgICAgICAgIHNl bGYuZ3JpZCA9IHVuZGVmaW5lZDsKKyAgICAgICAgfQorCisgICAgICAgIHNl bGYuJGVsLmVtcHR5KCk7CisKKyAgICAgICAgdmFyIGdyaWRIZWFkZXIgPSBf LnRlbXBsYXRlKFsKKyAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJzdWJub2Rl LWhlYWRlciI+JywKKyAgICAgICAgICAgICcgIDxsYWJlbCBjbGFzcz0iY29u dHJvbC1sYWJlbCBjb2wtc20tNCI+PCUtbGFiZWwlPjwvbGFiZWw+JywKKyAg ICAgICAgICAgICc8L2Rpdj4nXS5qb2luKCJcbiIpKSwKKyAgICAgICAgICAg IGdyaWRCb2R5ID0gJCgnPGRpdiBjbGFzcz0icGdhZG1pbi1jb250cm9sLWdy b3VwIGJhY2tncmlkIGZvcm0tZ3JvdXAgY29sLXhzLTEyIG9iamVjdCBzdWJu b2RlIj48L2Rpdj4nKS5hcHBlbmQoCisgICAgICAgICAgICAgICAgZ3JpZEhl YWRlcihhdHRyaWJ1dGVzKQorICAgICAgICAgICAgICAgICk7CisKKyAgICAg ICAgLy8gSW5pdGlhbGl6ZSBhIG5ldyBHcmlkIGluc3RhbmNlCisgICAgICAg IHZhciBncmlkID0gc2VsZi5ncmlkID0gbmV3IEJhY2tncmlkLkdyaWQoewor ICAgICAgICAgIGNvbHVtbnM6IHNlbGYuZ3JpZF9jb2x1bW5zLAorICAgICAg ICAgIGNvbGxlY3Rpb246IHNlbGYubW9kZWwuZ2V0KHNlbGYuZmllbGQuZ2V0 KCduYW1lJykpLAorICAgICAgICAgIGNsYXNzTmFtZTogImJhY2tncmlkIHRh YmxlLWJvcmRlcmVkIgorICAgICAgICB9KTsKKworICAgICAgICAvLyByZW5k ZXIgZ3JpZAorICAgICAgICBzZWxmLiRlbC5hcHBlbmQoJChncmlkQm9keSku YXBwZW5kKGdyaWQucmVuZGVyKCkuJGVsKSk7CisKKyAgICAgICAgcmV0dXJu IHNlbGY7CisgICAgICB9CisgICAgfSk7CisKKyAgLy8gV2Ugd2lsbCB1c2Ug dGhpcyBmdW5jdGlvbiBpbiBWYWN1dW1TZXR0aW5ncyBDb250cm9sCisgIC8v IHRvIGNvbnZlcnQgZGF0YSB0eXBlIG9uIHRoZSBmbHkKKyAgdmFyIGNlbGxG dW5jdGlvbiA9IEJhY2tmb3JtLmNlbGxGdW5jdGlvbiA9IGZ1bmN0aW9uKG1v ZGVsKSB7CisgICAgdmFyIHNlbGYgPSB0aGlzLAorICAgICAgICBtID0gbW9k ZWwsCisgICAgICAgIHZhcnR5cGUgPSBtb2RlbC5nZXQoJ2NvbHVtbl90eXBl Jyk7CisKKyAgICBzd2l0Y2godmFydHlwZSkgeworICAgICAgY2FzZSAiaW50 ZWdlciI6CisgICAgICAgIHJldHVybiBCYWNrZ3JpZC5JbnRlZ2VyQ2VsbDsK KyAgICAgIGJyZWFrOworICAgICAgY2FzZSAibnVtYmVyIjoKKyAgICAgICAg cmV0dXJuIEJhY2tncmlkLk51bWJlckNlbGw7CisgICAgICBicmVhazsKKyAg ICAgIGNhc2UgInN0cmluZyI6CisgICAgICAgIHJldHVybiBCYWNrZ3JpZC5T dHJpbmdDZWxsOworICAgICAgYnJlYWs7CisgICAgICBkZWZhdWx0OgorICAg ICAgICByZXR1cm4gQmFja2dyaWQuQ2VsbDsKKyAgICAgIGJyZWFrOworICAg IH0KKyAgfTsKKworICAvLyBEZWZpbmUgU2VjdXJpdHkgTW9kZWwgd2l0aCBm aWVsZHMgYW5kIHZhbGlkYXRpb24gZm9yIFZhY3V1bVNldHRpbmdzIENvbnRy b2wKKyAgdmFyIFZhY3V1bVRhYmxlTW9kZWwgPSAgQmFja2Zvcm0uVmFjdXVt VGFibGVNb2RlbCA9IHBnQWRtaW4uQnJvd3Nlci5Ob2RlLk1vZGVsLmV4dGVu ZCh7CisgICAgZGVmYXVsdHM6IHsKKyAgICAgIG5hbWU6IHVuZGVmaW5lZCwK KyAgICAgIHNldHRpbmc6IHVuZGVmaW5lZCwKKyAgICAgIGxhYmVsOnVuZGVm aW5lZCwKKyAgICAgIHZhbHVlOiB1bmRlZmluZWQsCisgICAgICBjb2x1bW5f dHlwZTogdW5kZWZpbmVkCisgICAgfSwKKworICAgIHRvSlNPTjogZnVuY3Rp b24oKXsKKyAgICAgIHZhciBkID0gcGdBZG1pbi5Ccm93c2VyLk5vZGUuTW9k ZWwucHJvdG90eXBlLnRvSlNPTi5hcHBseSh0aGlzKTsKKyAgICAgIGRlbGV0 ZSBkLmxhYmVsOworICAgICAgZGVsZXRlIGQuc2V0dGluZzsKKyAgICAgIGRl bGV0ZSBkLmNvbHVtbl90eXBlOworICAgICAgcmV0dXJuIGQ7CisgICAgfQor ICB9KTsKKworICAgLy8gRXh0ZW5kIHRoZSBicm93c2VyJ3MgY29sbGVjdGlv biBjbGFzcyBmb3IgVmFjdXVtU2V0dGluZ3NNb2RlbAorICAgIHZhciBWYWN1 dW1TZXR0aW5nc1NjaGVtYSA9IEJhY2tmb3JtLlZhY3V1bVNldHRpbmdzU2No ZW1hID0KKyAgICAgW3sKKyAgICAgICAgaWQ6ICdhdXRvdmFjdXVtX2N1c3Rv bScsIGxhYmVsOiAne3sgXygiQ3VzdG9tIGF1dG8tdmFjdXVtPyIpIH19JywK KyAgICAgICAgZ3JvdXA6ICd7eyBfKCJUYWJsZSIpIH19JywgbW9kZTogWydl ZGl0JywgJ2NyZWF0ZSddLAorICAgICAgICB0eXBlOiAnc3dpdGNoJywKKyAg ICAgICAgZGlzYWJsZWQ6IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICBpZigh bS50b3AuaW5TY2hlbWEuYXBwbHkodGhpcywgW21dKSkgeworICAgICAgICAg ICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgIH0KKyAgICAgICAgICByZXR1 cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgfSx7CisgICAgICAgIGlkOiAn YXV0b3ZhY3V1bV9lbmFibGVkJywgbGFiZWw6ICd7eyBfKCJFbmFibGVkPyIp IH19JywKKyAgICAgICAgZ3JvdXA6ICd7eyBfKCJUYWJsZSIpIH19JywgbW9k ZTogWydlZGl0JywgJ2NyZWF0ZSddLAorICAgICAgICB0eXBlOiAnc3dpdGNo JywKKyAgICAgICAgZGVwczogWydhdXRvdmFjdXVtX2N1c3RvbSddLAorICAg ICAgICBkaXNhYmxlZDogZnVuY3Rpb24obSkgeworICAgICAgICAgIGlmKCFt LnRvcC5pblNjaGVtYS5hcHBseSh0aGlzLCBbbV0pICYmCisgICAgICAgICAg ICBtLmdldCgnYXV0b3ZhY3V1bV9jdXN0b20nKSA9PSB0cnVlKSB7CisgICAg ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgfQorCisgICAgICAg ICAgLy8gV2UgYWxzbyBuZWVkIHRvIHVuc2V0IHJlc3Qgb2YgYWxsCisgICAg ICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIG0u c2V0KCdhdXRvdmFjdXVtX2VuYWJsZWQnLCBmYWxzZSk7CisgICAgICAgICAg fSwgMTApOworICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9Cisg ICAgICB9LHsKKyAgICAgICAgaWQ6ICd2YWN1dW1fdGFibGUnLCBsYWJlbDog J3t7IF8oIlZhY3V1bSBUYWJsZSIpIH19JywKKyAgICAgICAgbW9kZWw6IEJh Y2tmb3JtLlZhY3V1bVRhYmxlTW9kZWwsIGVkaXRhYmxlOiBmYWxzZSwgdHlw ZTogJ2NvbGxlY3Rpb24nLAorICAgICAgICBjYW5FZGl0OiB0cnVlLCBncm91 cDogJ3t7IF8oIlRhYmxlIikgfX0nLAorICAgICAgICBtb2RlOiBbJ2VkaXQn LCAnY3JlYXRlJ10sIHVybDogJ2dldF90YWJsZV92YWN1dW0nLAorICAgICAg ICBjb250cm9sOiBCYWNrZm9ybS5WYWN1dW1Db2xsZWN0aW9uQ29udHJvbC5l eHRlbmQoeworICAgICAgICAgIGdyaWRfY29sdW1ucyA6WworICAgICAgICAg ICAgeworICAgICAgICAgICAgICBuYW1lOiAnbGFiZWwnLCBsYWJlbDogJ3t7 IF8oIkxhYmVsIikgfX0nLAorICAgICAgICAgICAgICBoZWFkZXJDZWxsOiBC YWNrZ3JpZC5FeHRlbnNpb24uQ3VzdG9tSGVhZGVyQ2VsbCwKKyAgICAgICAg ICAgICAgY2VsbDogJ3N0cmluZycsIGVkaXRhYmxlOiBmYWxzZSwgY2VsbEhl YWRlckNsYXNzZXM6J3dpZHRoX3BlcmNlbnRfNDAnCisgICAgICAgICAgICB9 LAorICAgICAgICAgICAgeworICAgICAgICAgICAgICBuYW1lOiAndmFsdWUn LCBsYWJlbDogJ3t7IF8oIlZhbHVlIikgfX0nLAorICAgICAgICAgICAgICBj ZWxsSGVhZGVyQ2xhc3Nlczond2lkdGhfcGVyY2VudF8zMCcsCisgICAgICAg ICAgICAgIGNlbGxGdW5jdGlvbjogQmFja2Zvcm0uY2VsbEZ1bmN0aW9uLCBl ZGl0YWJsZTogZnVuY3Rpb24obSkgeworICAgICAgICAgICAgICAgIHJldHVy biBtLmhhbmRsZXIuZ2V0KCdhdXRvdmFjdXVtX2VuYWJsZWQnKTsKKyAgICAg ICAgICAgICAgfSwgaGVhZGVyQ2VsbDogQmFja2dyaWQuRXh0ZW5zaW9uLkN1 c3RvbUhlYWRlckNlbGwKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7 CisgICAgICAgICAgICAgIG5hbWU6ICdzZXR0aW5nJywgbGFiZWw6ICd7eyBf KCJEZWZhdWx0IHZhbHVlIikgfX0nLAorICAgICAgICAgICAgICBjZWxsSGVh ZGVyQ2xhc3Nlczond2lkdGhfcGVyY2VudF8zMCcsCisgICAgICAgICAgICAg IGhlYWRlckNlbGw6IEJhY2tncmlkLkV4dGVuc2lvbi5DdXN0b21IZWFkZXJD ZWxsLAorICAgICAgICAgICAgICBjZWxsRnVuY3Rpb246IEJhY2tmb3JtLmNl bGxGdW5jdGlvbiwgZWRpdGFibGU6IGZhbHNlCisgICAgICAgICAgICB9Cisg ICAgICAgICAgXQorICAgICAgICB9KSwKKyAgICAgICAgZGVwczogWydhdXRv dmFjdXVtX2VuYWJsZWQnXQorICAgICAgfSx7CisgICAgICAgIGlkOiAndG9h c3RfYXV0b3ZhY3V1bScsIGxhYmVsOiAne3sgXygiQ3VzdG9tIGF1dG8tdmFj Y3VtPyIpIH19JywKKyAgICAgICAgZ3JvdXA6ICd7eyBfKCJUb2FzdCBUYWJs ZSIpIH19JywgbW9kZTogWydlZGl0JywgJ2NyZWF0ZSddLAorICAgICAgICB0 eXBlOiAnc3dpdGNoJywKKyAgICAgICAgZGlzYWJsZWQ6IGZ1bmN0aW9uKG0p IHsKKyAgICAgICAgICAvLyBXZSBuZWVkIHRvIGNoZWNrIGFkZGl0aW9uYWwg Y29uZGl0aW9uIHRvIHRvZ2dsZSBlbmFibGUvZGlzYWJsZQorICAgICAgICAg IC8vIGZvciB0YWJsZSBhdXRvLXZhY3V1bQorICAgICAgICAgIGlmKCFtLnRv cC5pblNjaGVtYS5hcHBseSh0aGlzLCBbbV0pICYmIG0uaXNOZXcoKSkgewor ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgIH0gZWxzZSBp ZighbS50b3AuaW5TY2hlbWEuYXBwbHkodGhpcywgW21dKSAmJgorICAgICAg ICAgICAgICAobS5nZXQoJ3RvYXN0X2F1dG92YWN1dW1fZW5hYmxlZCcpID09 PSB0cnVlIHx8CisgICAgICAgICAgICAgIG0udG9wLmdldCgnaGFzdG9hc3R0 YWJsZScpID09PSB0cnVlKSkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNl OworICAgICAgICAgIH0KKyAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg ICAgfQorICAgICAgfSx7CisgICAgICAgIGlkOiAndG9hc3RfYXV0b3ZhY3V1 bV9lbmFibGVkJywgbGFiZWw6ICd7eyBfKCJFbmFibGVkPyIpIH19JywKKyAg ICAgICAgZ3JvdXA6ICd7eyBfKCJUb2FzdCBUYWJsZSIpIH19JywgbW9kZTog WydlZGl0JywgJ2NyZWF0ZSddLAorICAgICAgICB0eXBlOiAnc3dpdGNoJywK KyAgICAgICAgZGVwczpbJ3RvYXN0X2F1dG92YWN1dW0nXSwKKyAgICAgICAg ZGlzYWJsZWQ6IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICAvLyBJZiBpbiBz Y2hlbWEgJiBpbiBjcmVhdGUgbW9kZSB0aGVuIGVuYWJsZSBpdAorICAgICAg ICAgIGlmKCFtLnRvcC5pblNjaGVtYS5hcHBseSh0aGlzLCBbbV0pICYmCisg ICAgICAgICAgICAgIG0uZ2V0KCd0b2FzdF9hdXRvdmFjdXVtJykgPT09IHRy dWUpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICB9 CisKKyAgICAgICAgICBpZiAobS5pc05ldygpIHx8IG0uZ2V0KCdoYXN0b2Fz dHRhYmxlJykpIHsKKyAgICAgICAgICAgIC8vIHdlIGFsc28gbmVlZCB0byB1 bnNldCByZXN0IG9mIGFsbAorICAgICAgICAgICAgc2V0VGltZW91dChmdW5j dGlvbigpIHsKKyAgICAgICAgICAgICAgbS5zZXQoJ3RvYXN0X2F1dG92YWN1 dW1fZW5hYmxlZCcsIGZhbHNlKTsKKyAgICAgICAgICAgIH0sIDEwKTsKKyAg ICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9Cisg ICAgICB9LHsKKyAgICAgICAgaWQ6ICd2YWN1dW1fdG9hc3QnLCBsYWJlbDog J3t7IF8oIlZhY3V1bSBUb2FzdCBUYWJsZSIpIH19JywKKyAgICAgICAgbW9k ZWw6IEJhY2tmb3JtLlZhY3V1bVRhYmxlTW9kZWwsIHR5cGU6ICdjb2xsZWN0 aW9uJywgZWRpdGFibGU6IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICByZXR1 cm4gbS5pc05ldygpOworICAgICAgICB9LAorICAgICAgICBjYW5FZGl0OiB0 cnVlLCBncm91cDogJ3t7IF8oIlRvYXN0IFRhYmxlIikgfX0nLAorICAgICAg ICBtb2RlOiBbJ3Byb3BlcnRpZXMnLCAnZWRpdCcsICdjcmVhdGUnXSwgdXJs OiAnZ2V0X3RvYXN0X3RhYmxlX3ZhY3V1bScsCisgICAgICAgIGNvbnRyb2w6 IEJhY2tmb3JtLlZhY3V1bUNvbGxlY3Rpb25Db250cm9sLmV4dGVuZCh7Cisg ICAgICAgICAgZ3JpZF9jb2x1bW5zIDpbCisgICAgICAgICAgICB7CisgICAg ICAgICAgICAgIG5hbWU6ICdsYWJlbCcsIGxhYmVsOiAne3sgXygiTGFiZWwi KSB9fScsCisgICAgICAgICAgICAgIGhlYWRlckNlbGw6IEJhY2tncmlkLkV4 dGVuc2lvbi5DdXN0b21IZWFkZXJDZWxsLAorICAgICAgICAgICAgICBjZWxs OiAnc3RyaW5nJywgZWRpdGFibGU6IGZhbHNlLCBjZWxsSGVhZGVyQ2xhc3Nl czond2lkdGhfcGVyY2VudF80MCcKKyAgICAgICAgICAgIH0sCisgICAgICAg ICAgICB7CisgICAgICAgICAgICAgIG5hbWU6ICd2YWx1ZScsIGxhYmVsOiAn e3sgXygiVmFsdWUiKSB9fScsCisgICAgICAgICAgICAgIGNlbGxIZWFkZXJD bGFzc2VzOid3aWR0aF9wZXJjZW50XzMwJywKKyAgICAgICAgICAgICAgaGVh ZGVyQ2VsbDogQmFja2dyaWQuRXh0ZW5zaW9uLkN1c3RvbUhlYWRlckNlbGws CisgICAgICAgICAgICAgIGNlbGxGdW5jdGlvbjogQmFja2Zvcm0uY2VsbEZ1 bmN0aW9uLCBlZGl0YWJsZTogZnVuY3Rpb24obSkgeworICAgICAgICAgICAg ICAgIHJldHVybiBtLmhhbmRsZXIuZ2V0KCd0b2FzdF9hdXRvdmFjdXVtX2Vu YWJsZWQnKTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAg ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgbmFtZTogJ3NldHRpbmcnLCBs YWJlbDogJ3t7IF8oIkRlZmF1bHQgdmFsdWUiKSB9fScsCisgICAgICAgICAg ICAgIGNlbGxIZWFkZXJDbGFzc2VzOid3aWR0aF9wZXJjZW50XzMwJywKKyAg ICAgICAgICAgICAgaGVhZGVyQ2VsbDogQmFja2dyaWQuRXh0ZW5zaW9uLkN1 c3RvbUhlYWRlckNlbGwsCisgICAgICAgICAgICAgIGNlbGxGdW5jdGlvbjog QmFja2Zvcm0uY2VsbEZ1bmN0aW9uLCBlZGl0YWJsZTogZmFsc2UKKyAgICAg ICAgICAgIH0KKyAgICAgICAgICBdCisgICAgICAgIH0pLAorICAgICAgICBk ZXBzOiBbJ3RvYXN0X2F1dG92YWN1dW1fZW5hYmxlZCddCisgICAgICB9Cisg ICAgXTsKKwogICAgLy8gRXh0ZW5kIHRoZSBicm93c2VyJ3MgY29sbGVjdGlv biBjbGFzcyBmb3IgU2VjdXJpdHlMYWJlbCBjb250cm9sCiAgICAgdmFyIFNl Y3VyaXR5TW9kZWwgPSBCYWNrZm9ybS5TZWN1cml0eU1vZGVsID0gcGdBZG1p bi5Ccm93c2VyLk5vZGUuTW9kZWwuZXh0ZW5kKHsKICAgICBkZWZhdWx0czog ewpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGVtcGxhdGVzL3ZhY3V1 bV9zZXR0aW5ncy9zcWwvdmFjdXVtX2RlZmF1bHRzLnNxbCBiL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL3RlbXBsYXRlcy92YWN1dW1fc2V0dGluZ3Mvc3FsL3ZhY3V1bV9k ZWZhdWx0cy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MC4uZTYwNTk4YwotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L3RlbXBsYXRlcy92YWN1dW1fc2V0dGluZ3Mvc3FsL3ZhY3V1bV9kZWZhdWx0 cy5zcWwKQEAgLTAsMCArMSwyIEBACit7IyA9PT09PT09PT09PT09IEZldGNo IGxpc3Qgb2YgZGVmYXVsdCB2YWx1ZXMgZm9yIGF1dG92YWN1dW0gcGFyYW1l dGVycyA9PT09PT09PT09PT09PT0gI30KK1NFTEVDVCBuYW1lLCBzZXR0aW5n OjpudW1lcmljIEFTIHNldHRpbmcgRlJPTSBwZ19zZXR0aW5ncyBXSEVSRSBu YW1lIElOKHt7IGNvbHVtbnMgfX0pIE9SREVSIEJZIG5hbWUKZGlmZiAtLWdp dCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL3RlbXBsYXRlcy92YWN1dW1fc2V0dGluZ3Mv dmFjdXVtX2ZpZWxkcy5qc29uIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGVtcGxhdGVz L3ZhY3V1bV9zZXR0aW5ncy92YWN1dW1fZmllbGRzLmpzb24KbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODM1NzFmNAotLS0gL2Rldi9u dWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RlbXBsYXRlcy92YWN1dW1fc2V0 dGluZ3MvdmFjdXVtX2ZpZWxkcy5qc29uCkBAIC0wLDAgKzEsMzkgQEAKK3sj ID09PT09IERlZmluZSBuYW1lLCBsYWJlbCBhbmQgY29sdW1uIHR5cGUgb2Yg dmFjdXVtIHNldHRpbmdzID09PT09ICN9Cit7IyBVc2FnZToKKworICAnVHlw ZSI6CisgIHsKKyAgICAia2V5IjogWyJsYWJlbCIsICJjb2x1bW5fdHlwZSIK KyAgfQorCisgIFdoZXJlCisgICAgLSAgIlR5cGUiIGVpdGhlciB0YWJsZS90 b2FzdAorICAgIC0gICJrZXkiIHJlZmVycyB0byB0aGUgbmFtZSBvZiBjb2x1 bW5zIHdlIGZldGNoIGluIHByb3BlcnRpZXMuc3FsCisgICAgLSAgImxhYmVs IiBJdCBpcyB0aGUgbmFtZSBvZiBwcm9wZXJ0aWVzIHRvIGRpc3BsYXkgaW4g Z3JpZC4KKyAgICAtICAiY29sdW1uX3R5cGUiIFR5cGUgb2YgY29sdW1uLCB3 ZSBoYXZlIHRvIHByb3ZpZGUgdGhlIGdyaWQgd2hhdCB0eXBlIG9mIHZhbHVl IHRvIHJlbmRlcmVkCisjfQoreyMgPT09PT0gRGVmaW5lIG5hbWUsIGxhYmVs IGFuZCBjb2x1bW4gdHlwZSBvZiB2YWN1dW0gc2V0dGluZ3MgPT09PT0gI30K K3sKKyAgInRhYmxlIjoKKyAgeworICAgICJhdXRvdmFjdXVtX3ZhY3V1bV90 aHJlc2hvbGQiOiBbImF1dG92YWN1dW1fdmFjdXVtX3RocmVzaG9sZCIsICJW QUNDVU0gYmFzZSB0aHJlc2hvbGQiLCAiaW50ZWdlciJdLAorICAgICJhdXRv dmFjdXVtX2FuYWx5emVfdGhyZXNob2xkIjogWyJhdXRvdmFjdXVtX2FuYWx5 emVfdGhyZXNob2xkIiwgIkFOQUxZWkUgYmFzZSB0aHJlc2hvbGQiLCAiaW50 ZWdlciJdLAorICAgICJhdXRvdmFjdXVtX3ZhY3V1bV9zY2FsZV9mYWN0b3Ii OiBbImF1dG92YWN1dW1fdmFjdXVtX3NjYWxlX2ZhY3RvciIsICJWQUNDVU0g c2NhbGUgZmFjdG9yIiwgIm51bWJlciJdLAorICAgICJhdXRvdmFjdXVtX2Fu YWx5emVfc2NhbGVfZmFjdG9yIjogWyJhdXRvdmFjdXVtX2FuYWx5emVfc2Nh bGVfZmFjdG9yIiwgIkFOQUxZWkUgc2NhbGUgZmFjdG9yIiwgIm51bWJlciJd LAorICAgICJhdXRvdmFjdXVtX3ZhY3V1bV9jb3N0X2RlbGF5IjogWyJhdXRv dmFjdXVtX3ZhY3V1bV9jb3N0X2RlbGF5IiwgIlZBQ0NVTSBjb3N0IGRlbGF5 IiwgImludGVnZXIiXSwKKyAgICAiYXV0b3ZhY3V1bV92YWN1dW1fY29zdF9s aW1pdCI6IFsiYXV0b3ZhY3V1bV92YWN1dW1fY29zdF9saW1pdCIsICJWQUND VU0gY29zdCBsaW1pdCIsICJpbnRlZ2VyIl0sCisgICAgImF1dG92YWN1dW1f ZnJlZXplX21heF9hZ2UiOiBbImF1dG92YWN1dW1fZnJlZXplX21heF9hZ2Ui LCAiRlJFRVpFIG1heGltdW0gYWdlIiwgImludGVnZXIiXSwKKyAgICAidmFj dXVtX2ZyZWV6ZV9taW5fYWdlIjogWyJhdXRvdmFjdXVtX2ZyZWV6ZV9taW5f YWdlIiwgIkZSRUVaRSBtaW5pbXVtIGFnZSIsICJpbnRlZ2VyIl0sCisgICAg InZhY3V1bV9mcmVlemVfdGFibGVfYWdlIjogWyJhdXRvdmFjdXVtX2ZyZWV6 ZV90YWJsZV9hZ2UiLCAiRlJFRVpFIHRhYmxlIGFnZSIsICJpbnRlZ2VyIl0K KyAgfSwKKyAgInRvYXN0IjoKKyAgeworICAgICJhdXRvdmFjdXVtX3ZhY3V1 bV90aHJlc2hvbGQiOiBbImF1dG92YWN1dW1fdmFjdXVtX3RocmVzaG9sZCIs ICJWQUNDVU0gYmFzZSB0aHJlc2hvbGQiLCAiaW50ZWdlciJdLAorICAgICJh dXRvdmFjdXVtX3ZhY3V1bV9zY2FsZV9mYWN0b3IiOiBbImF1dG92YWN1dW1f dmFjdXVtX3NjYWxlX2ZhY3RvciIsICJWQUNDVU0gc2NhbGUgZmFjdG9yIiwg Im51bWJlciJdLAorICAgICJhdXRvdmFjdXVtX3ZhY3V1bV9jb3N0X2RlbGF5 IjogWyJhdXRvdmFjdXVtX3ZhY3V1bV9jb3N0X2RlbGF5IiwgIlZBQ0NVTSBj b3N0IGRlbGF5IiwgImludGVnZXIiXSwKKyAgICAiYXV0b3ZhY3V1bV92YWN1 dW1fY29zdF9saW1pdCI6IFsiYXV0b3ZhY3V1bV92YWN1dW1fY29zdF9saW1p dCIsICJWQUNDVU0gY29zdCBsaW1pdCIsICJpbnRlZ2VyIl0sCisgICAgImF1 dG92YWN1dW1fZnJlZXplX21heF9hZ2UiOiBbImF1dG92YWN1dW1fZnJlZXpl X21heF9hZ2UiLCAiRlJFRVpFIG1heGltdW0gYWdlIiwgImludGVnZXIiXSwK KyAgICAidmFjdXVtX2ZyZWV6ZV9taW5fYWdlIjogWyJhdXRvdmFjdXVtX2Zy ZWV6ZV9taW5fYWdlIiwgIkZSRUVaRSBtaW5pbXVtIGFnZSIsICJpbnRlZ2Vy Il0sCisgICAgInZhY3V1bV9mcmVlemVfdGFibGVfYWdlIjogWyJhdXRvdmFj dXVtX2ZyZWV6ZV90YWJsZV9hZ2UiLCAiRlJFRVpFIHRhYmxlIGFnZSIsICJp bnRlZ2VyIl0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3V0aWxzLnB5IGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvdXRpbHMucHkKaW5kZXggMjljNzkzNi4uMTdhMzViNiAxMDA2 NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdXRpbHMucHkKKysrIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvdXRpbHMucHkKQEAgLTEzNCw3ICsxMzQsOCBAQCBjbGFzcyBE YXRhVHlwZVJlYWRlcjoKICAgICAgICAgICAgICAgICByZXMuYXBwZW5kKHsK ICAgICAgICAgICAgICAgICAgICAgJ2xhYmVsJzogcm93Wyd0eXBuYW1lJ10s ICd2YWx1ZSc6IHJvd1sndHlwbmFtZSddLAogICAgICAgICAgICAgICAgICAg ICAndHlwdmFsJzogdHlwZXZhbCwgJ3ByZWNpc2lvbic6IHByZWNpc2lvbiwK LSAgICAgICAgICAgICAgICAgICAgJ2xlbmd0aCc6IGxlbmd0aCwgJ21pbl92 YWwnOiBtaW5fdmFsLCAnbWF4X3ZhbCc6IG1heF92YWwKKyAgICAgICAgICAg ICAgICAgICAgJ2xlbmd0aCc6IGxlbmd0aCwgJ21pbl92YWwnOiBtaW5fdmFs LCAnbWF4X3ZhbCc6IG1heF92YWwsCisgICAgICAgICAgICAgICAgICAgICdp c19jb2xsYXRhYmxlJzogcm93Wydpc19jb2xsYXRhYmxlJ10KICAgICAgICAg ICAgICAgICB9KQogCiAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToK QEAgLTMzOCw0ICszMzksMTU2IEBAIGRlZiBwYXJzZV9ydWxlX2RlZmluaXRp b24ocmVzKToKICAgICAgICAgcmVzX2RhdGFbJ2NvbmRpdGlvbiddID0gY29u ZGl0aW9uCiAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAgICAgICBy ZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXN0cihlKSkK LSAgICByZXR1cm4gcmVzX2RhdGEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm aWxlCisgICAgcmV0dXJuIHJlc19kYXRhCisKKworY2xhc3MgVmFjdXVtU2V0 dGluZ3M6CisgICAgIiIiCisgICAgVmFjdXVtU2V0dGluZ3MgQ2xhc3MuCisK KyAgICBUaGlzIGNsYXNzIGluY2x1ZGVzIGNvbW1vbiB1dGlsaXRpZXMgdG8g ZmV0Y2ggYW5kIHBhcnNlCisgICAgdmFjdXVtIGRlZmF1bHRzIHNldHRpbmdz LgorCisgICAgTWV0aG9kczoKKyAgICAtLS0tLS0tCisgICAgKiBnZXRfdmFj dXVtX3RhYmxlX3NldHRpbmdzKGNvbm4pOgorICAgICAgLSBSZXR1cm5zIHZh Y3V1bSB0YWJsZSBkZWZhdWx0cyBzZXR0aW5ncy4KKworICAgICogZ2V0X3Zh Y3V1bV90b2FzdF9zZXR0aW5ncyhjb25uKToKKyAgICAgIC0gUmV0dXJucyB2 YWN1dW0gdG9hc3QgZGVmYXVsdHMgc2V0dGluZ3MuCisKKyAgICAqIHBhcnNl X3ZhY3V1bV9kYXRhKGNvbm4sIHJlc3VsdCwgdHlwZSk6CisgICAgICAtIFJl dHVybnMgcmVzdWx0IG9mIGFuIGFzc29jaWF0ZWQgYXJyYXkKKyAgICAgICAg b2YgZmllbGRzIG5hbWUsIGxhYmVsLCB2YWx1ZSBhbmQgY29sdW1uX3R5cGUu CisgICAgICAgIEl0IGFkZHMgbmFtZSwgbGFiZWwsIGNvbHVtbl90eXBlIHBy b3BlcnRpZXMgb2YgdGFibGUvdG9hc3QKKyAgICAgICAgdmFjdXVtIGludG8g dGhlIGFycmF5IGFuZCByZXR1cm5zIGl0LgorICAgICAgICBhcmdzOgorICAg ICAgICAqIGNvbm4gLSBJdCBpcyBkYiBjb25uZWN0aW9uIG9iamVjdAorICAg ICAgICAqIHJlc3VsdCAtIFJlc3VsdHNldCBvZiB2YWN1dW0gZGF0YQorICAg ICAgICAqIHR5cGUgLSB0YWJsZS90b2FzdCB2YWN1dW0gdHlwZQorCisgICAg IiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBwYXNzCisK KyAgICBkZWYgZ2V0X3ZhY3V1bV90YWJsZV9zZXR0aW5ncyhzZWxmLCBjb25u KToKKyAgICAgICAgIiIiCisgICAgICAgIEZldGNoIHRoZSBkZWZhdWx0IHZh bHVlcyBmb3IgYXV0b3ZhY3V1bQorICAgICAgICBmaWVsZHMsIHJldHVybiBh biBhcnJheSBvZgorICAgICAgICAgIC0gbGFiZWwKKyAgICAgICAgICAtIG5h bWUKKyAgICAgICAgICAtIHNldHRpbmcKKyAgICAgICAgdmFsdWVzCisgICAg ICAgICIiIgorCisgICAgICAgICMgcmV0dXJucyBhbiBhcnJheSBvZiBuYW1l ICYgbGFiZWwgdmFsdWVzCisgICAgICAgIHZhY3V1bV9maWVsZHMgPSByZW5k ZXJfdGVtcGxhdGUoInZhY3V1bV9zZXR0aW5ncy92YWN1dW1fZmllbGRzLmpz b24iKQorCisgICAgICAgIHZhY3V1bV9maWVsZHMgPSBqc29uLmxvYWRzKHZh Y3V1bV9maWVsZHMpCisKKyAgICAgICAgIyByZXR1cm5zIGFuIGFycmF5IG9m IHNldHRpbmcgJiBuYW1lIHZhbHVlcworICAgICAgICB2YWN1dW1fZmllbGRz X2tleXMgPSAiJyIrIicsJyIuam9pbigKKyAgICAgICAgICAgIHZhY3V1bV9m aWVsZHNbJ3RhYmxlJ10ua2V5cygpKSsiJyIKKyAgICAgICAgU1FMID0gcmVu ZGVyX3RlbXBsYXRlKCd2YWN1dW1fc2V0dGluZ3Mvc3FsL3ZhY3V1bV9kZWZh dWx0cy5zcWwnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29s dW1ucz12YWN1dW1fZmllbGRzX2tleXMpCisgICAgICAgIHN0YXR1cywgcmVz ID0gY29ubi5leGVjdXRlX2RpY3QoU1FMKQorCisgICAgICAgIGlmIG5vdCBz dGF0dXM6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vy cm9yKGVycm9ybXNnPXJlcykKKworICAgICAgICBmb3Igcm93IGluIHJlc1sn cm93cyddOgorICAgICAgICAgICAgcm93X25hbWUgPSByb3dbJ25hbWUnXQor ICAgICAgICAgICAgcm93WyduYW1lJ10gPSB2YWN1dW1fZmllbGRzWyd0YWJs ZSddW3Jvd19uYW1lXVswXQorICAgICAgICAgICAgcm93WydsYWJlbCddID0g dmFjdXVtX2ZpZWxkc1sndGFibGUnXVtyb3dfbmFtZV1bMV0KKyAgICAgICAg ICAgIHJvd1snY29sdW1uX3R5cGUnXSA9IHZhY3V1bV9maWVsZHNbJ3RhYmxl J11bcm93X25hbWVdWzJdCisKKyAgICAgICAgcmV0dXJuIHJlcworCisgICAg ZGVmIGdldF92YWN1dW1fdG9hc3Rfc2V0dGluZ3Moc2VsZiwgY29ubik6Cisg ICAgICAgICIiIgorICAgICAgICBGZXRjaCB0aGUgZGVmYXVsdCB2YWx1ZXMg Zm9yIGF1dG92YWN1dW0KKyAgICAgICAgZmllbGRzLCByZXR1cm4gYW4gYXJy YXkgb2YKKyAgICAgICAgICAtIGxhYmVsCisgICAgICAgICAgLSBuYW1lCisg ICAgICAgICAgLSBzZXR0aW5nCisgICAgICAgIHZhbHVlcworICAgICAgICAi IiIKKworICAgICAgICAjIHJldHVybnMgYW4gYXJyYXkgb2YgbmFtZSAmIGxh YmVsIHZhbHVlcworICAgICAgICB2YWN1dW1fZmllbGRzID0gcmVuZGVyX3Rl bXBsYXRlKCJ2YWN1dW1fc2V0dGluZ3MvdmFjdXVtX2ZpZWxkcy5qc29uIikK KworICAgICAgICB2YWN1dW1fZmllbGRzID0ganNvbi5sb2Fkcyh2YWN1dW1f ZmllbGRzKQorCisgICAgICAgICMgcmV0dXJucyBhbiBhcnJheSBvZiBzZXR0 aW5nICYgbmFtZSB2YWx1ZXMKKyAgICAgICAgdmFjdXVtX2ZpZWxkc19rZXlz ID0gIiciKyInLCciLmpvaW4oCisgICAgICAgICAgICB2YWN1dW1fZmllbGRz Wyd0b2FzdCddLmtleXMoKSkrIiciCisgICAgICAgIFNRTCA9IHJlbmRlcl90 ZW1wbGF0ZSgndmFjdXVtX3NldHRpbmdzL3NxbC92YWN1dW1fZGVmYXVsdHMu c3FsJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnM9 dmFjdXVtX2ZpZWxkc19rZXlzKQorICAgICAgICBzdGF0dXMsIHJlcyA9IGNv bm4uZXhlY3V0ZV9kaWN0KFNRTCkKKworICAgICAgICBpZiBub3Qgc3RhdHVz OgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihl cnJvcm1zZz1yZXMpCisKKyAgICAgICAgZm9yIHJvdyBpbiByZXNbJ3Jvd3Mn XToKKyAgICAgICAgICAgIHJvd19uYW1lID0gcm93WyduYW1lJ10KKyAgICAg ICAgICAgIHJvd1snbmFtZSddID0gdmFjdXVtX2ZpZWxkc1sndG9hc3QnXVty b3dfbmFtZV1bMF0KKyAgICAgICAgICAgIHJvd1snbGFiZWwnXSA9IHZhY3V1 bV9maWVsZHNbJ3RvYXN0J11bcm93X25hbWVdWzFdCisgICAgICAgICAgICBy b3dbJ2NvbHVtbl90eXBlJ10gPSB2YWN1dW1fZmllbGRzWyd0YWJsZSddW3Jv d19uYW1lXVsyXQorCisgICAgICAgIHJldHVybiByZXMKKworICAgIGRlZiBw YXJzZV92YWN1dW1fZGF0YShzZWxmLCBjb25uLCByZXN1bHQsIHR5cGUpOgor ICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiByZXR1cm5zIHJl c3VsdCBvZiBhbiBhc3NvY2lhdGVkIGFycmF5CisgICAgICAgIG9mIGZpZWxk cyBuYW1lLCBsYWJlbCwgdmFsdWUgYW5kIGNvbHVtbl90eXBlLgorICAgICAg ICBJdCBhZGRzIG5hbWUsIGxhYmVsLCBjb2x1bW5fdHlwZSBwcm9wZXJ0aWVz IG9mIHRhYmxlL3RvYXN0CisgICAgICAgIHZhY3V1bSBpbnRvIHRoZSBhcnJh eSBhbmQgcmV0dXJucyBpdC4KKyAgICAgICAgYXJnczoKKyAgICAgICAgKiBj b25uIC0gSXQgaXMgZGIgY29ubmVjdGlvbiBvYmplY3QKKyAgICAgICAgKiBy ZXN1bHQgLSBSZXN1bHRzZXQgb2YgdmFjdXVtIGRhdGEKKyAgICAgICAgKiB0 eXBlIC0gdGFibGUvdG9hc3QgdmFjdXVtIHR5cGUKKyAgICAgICAgIiIiCisK KyAgICAgICAgIyByZXR1cm5zIGFuIGFycmF5IG9mIG5hbWUgJiBsYWJlbCB2 YWx1ZXMKKyAgICAgICAgdmFjdXVtX2ZpZWxkcyA9IHJlbmRlcl90ZW1wbGF0 ZSgidmFjdXVtX3NldHRpbmdzL3ZhY3V1bV9maWVsZHMuanNvbiIpCisKKyAg ICAgICAgdmFjdXVtX2ZpZWxkcyA9IGpzb24ubG9hZHModmFjdXVtX2ZpZWxk cykKKworICAgICAgICAjIHJldHVybnMgYW4gYXJyYXkgb2Ygc2V0dGluZyAm IG5hbWUgdmFsdWVzCisgICAgICAgIHZhY3V1bV9maWVsZHNfa2V5cyA9ICIn IisiJywnIi5qb2luKAorICAgICAgICAgICAgdmFjdXVtX2ZpZWxkc1t0eXBl XS5rZXlzKCkpICsgIiciCisgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0 ZSgndmFjdXVtX3NldHRpbmdzL3NxbC92YWN1dW1fZGVmYXVsdHMuc3FsJywK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnM9dmFjdXVt X2ZpZWxkc19rZXlzKQorICAgICAgICBzdGF0dXMsIHJlcyA9IGNvbm4uZXhl Y3V0ZV9kaWN0KFNRTCkKKworICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAg ICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1z Zz1yZXMpCisKKyAgICAgICAgaWYgdHlwZSBpcyAndGFibGUnOgorICAgICAg ICAgICAgZm9yIHJvdyBpbiByZXNbJ3Jvd3MnXToKKyAgICAgICAgICAgICAg ICByb3dfbmFtZSA9IHJvd1snbmFtZSddCisgICAgICAgICAgICAgICAgcm93 WyduYW1lJ10gPSB2YWN1dW1fZmllbGRzW3R5cGVdW3Jvd19uYW1lXVswXQor ICAgICAgICAgICAgICAgIHJvd1snbGFiZWwnXSA9IHZhY3V1bV9maWVsZHNb dHlwZV1bcm93X25hbWVdWzFdCisgICAgICAgICAgICAgICAgcm93Wydjb2x1 bW5fdHlwZSddID0gdmFjdXVtX2ZpZWxkc1t0eXBlXVtyb3dfbmFtZV1bMl0K KyAgICAgICAgICAgICAgICBpZiByZXN1bHRbcm93WyduYW1lJ11dIGlzIG5v dCBOb25lOgorICAgICAgICAgICAgICAgICAgICBpZiByb3dbJ2NvbHVtbl90 eXBlJ10gPT0gJ251bWJlcic6CisgICAgICAgICAgICAgICAgICAgICAgICB2 YWx1ZSA9IGZsb2F0KHJlc3VsdFtyb3dbJ25hbWUnXV0pCisgICAgICAgICAg ICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICB2YWx1 ZSA9IGludChyZXN1bHRbcm93WyduYW1lJ11dKQorICAgICAgICAgICAgICAg ICAgICByb3dbJ3ZhbHVlJ10gPSByb3dbJ3NldHRpbmcnXSA9IHZhbHVlCisK KyAgICAgICAgZWxpZiB0eXBlIGlzICd0b2FzdCc6CisgICAgICAgICAgICBm b3Igcm93IGluIHJlc1sncm93cyddOgorICAgICAgICAgICAgICAgIHJvd19v bGRfbmFtZSA9IHJvd1snbmFtZSddCisgICAgICAgICAgICAgICAgcm93X25h bWUgPSAndG9hc3RfezB9Jy5mb3JtYXQodmFjdXVtX2ZpZWxkc1t0eXBlXVty b3dfb2xkX25hbWVdWzBdKQorICAgICAgICAgICAgICAgIHJvd1snbmFtZSdd ID0gdmFjdXVtX2ZpZWxkc1t0eXBlXVtyb3dfb2xkX25hbWVdWzBdCisgICAg ICAgICAgICAgICAgcm93WydsYWJlbCddID0gdmFjdXVtX2ZpZWxkc1t0eXBl XVtyb3dfb2xkX25hbWVdWzFdCisgICAgICAgICAgICAgICAgcm93Wydjb2x1 bW5fdHlwZSddID0gdmFjdXVtX2ZpZWxkc1t0eXBlXVtyb3dfb2xkX25hbWVd WzJdCisgICAgICAgICAgICAgICAgaWYgcmVzdWx0W3Jvd19uYW1lXSBhbmQg cmVzdWx0W3Jvd19uYW1lXSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAg ICAgICAgaWYgcm93Wydjb2x1bW5fdHlwZSddID09ICdudW1iZXInOgorICAg ICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBmbG9hdChyZXN1bHRbcm93 X25hbWVdKQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAg ICAgICAgICAgICAgICAgdmFsdWUgPSBpbnQocmVzdWx0W3Jvd19uYW1lXSkK KyAgICAgICAgICAgICAgICAgICAgcm93Wyd2YWx1ZSddID0gcm93WydzZXR0 aW5nJ10gPSB2YWx1ZQorCisgICAgICAgIHJldHVybiByZXNbJ3Jvd3MnXQpc IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK --94eb2c045dc209dbb8053335054f 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 --94eb2c045dc209dbb8053335054f--