Received: from malur.postgresql.org ([2a02:16a8:dc51::56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1fOov6-0002wR-Ma for pgadmin-hackers@arkaria.postgresql.org; Fri, 01 Jun 2018 18:37:01 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1fOov5-0005rW-6L for pgadmin-hackers@arkaria.postgresql.org; Fri, 01 Jun 2018 18:36:59 +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.89) (envelope-from ) id 1fOov4-0005rI-IV for pgadmin-hackers@lists.postgresql.org; Fri, 01 Jun 2018 18:36:58 +0000 Received: from mail-ot0-x229.google.com ([2607:f8b0:4003:c0f::229]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1fOouv-0005FY-Hs for pgadmin-hackers@postgresql.org; Fri, 01 Jun 2018 18:36:56 +0000 Received: by mail-ot0-x229.google.com with SMTP id h6-v6so11329160otj.0 for ; Fri, 01 Jun 2018 11:36:48 -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:from:date:message-id:subject:to :cc; bh=cvxnfQumCPRFrX1fN/ksHfLUqYkzr8ZrvPLTsiaDTp8=; b=Uku/T9DFfTdv+sQcyq2QTL7RmF/FyTUtMBwYMDMZ/IEHMw5B54n5jVz6yhIeReioGk ukn1dFWovY7VxyrWOpOrL0bT/TRwNRp3QQjbGM92s0HgP0Q+h4GE/OEWnQ+WJ/1JFyPw K36UKcEVRUi1wH2kx+DdJZtZFhqn8ecYopp9DUYmAxS2WGUnrwHdrDxIcA6fdFQ4T8hE IJrTl4VsulxP+4hCVmE4xz53Iy3rMb7COt2oMf8AGZPTVaU9OHDvm2/AqRo5XjKv3OZ/ qLIwV+aih49VrQozlI+ZInRXRMHovS3iszQ4AObUSbz8uoUDGZVSzaL5W5sROrcMUxm4 1ndg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=cvxnfQumCPRFrX1fN/ksHfLUqYkzr8ZrvPLTsiaDTp8=; b=VeuhtZfdorFuQuUGnW3DmgtgVYIkmvlRMnWnqOk6vGud04wnodWyCTPXI10HBBVj5B dNrK0nTALMTiYO6qJ1Jb5Ggp5ayqvApug0fds8JHjp8b1ayNNC0w9ScX2Tdw3JMsFTyW BT/INNng9UOfWtSthR+B+7NxWYAAgM3TrVudVkdyHrJZ0Cc3WxHQWVscsV3yJwomIaph HEiIzAB6BCqvjTdgsL2/OLUVYYM+Q+OB+4ABMdSZ4qVCHqMVutafpSUZs9FNsVH0e+jW eMSSsFNYjV84AO3W2NmTDmHEf3dzd8qGydt6SP8uKX5p6puBlpvDRnK34W4gzuD5TQf3 4/pg== X-Gm-Message-State: ALKqPwffShfCf7Q4SpscVcpUz+fYFoY6yUjye2uGPmkkG6pBVYFJ4UT3 A+ZrOKIu67pMJdkuT+0NiPTRpR0aLkX2jK1sGQY2Kw== X-Google-Smtp-Source: ADUXVKL5mebFwmznOQhzI2H4wcw6M5g/52cuxrVJKM9tZ3e0c5H5iKDGIFblRBYO7aYN6xaMnmt0kP90vH0DPHfRd+E= X-Received: by 2002:a9d:1b4a:: with SMTP id l68-v6mr8587968otl.224.1527878206930; Fri, 01 Jun 2018 11:36:46 -0700 (PDT) MIME-Version: 1.0 Received: by 2002:ac9:7a54:0:0:0:0:0 with HTTP; Fri, 1 Jun 2018 11:36:26 -0700 (PDT) In-Reply-To: References: From: Ashesh Vashi Date: Sat, 2 Jun 2018 00:06:26 +0530 Message-ID: Subject: Re: [pgadmin4][patch] Initial patch to decouple from ACI Tree To: Victoria Henry Cc: Anthony Emengo , Joao De Almeida Pereira , Dave Page , Akshay Joshi , Murtuza Zabuawala , pgadmin-hackers , Khushboo Vashi Content-Type: multipart/mixed; boundary="000000000000c906a3056d98ddb9" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --000000000000c906a3056d98ddb9 Content-Type: multipart/alternative; boundary="000000000000c906a1056d98ddb7" --000000000000c906a1056d98ddb7 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Fri, Jun 1, 2018 at 10:09 PM, Victoria Henry wrote: > Hi Ashesh, > > We just attempted to apply your patch over master but it did not work. W= e > don't want to introduce any bugs or break any functionality. Please upda= te > the patch to make sure it is synced up with the master branch. > Please find the updated patch. > > Sincerely, > > Victoria > > On Fri, Jun 1, 2018 at 11:18 AM Anthony Emengo wrote= : > >> Hey Ashesh, >> >> Thanks for the explanation. It was great and it really helped! >> >> C pgadmin/browser/server_groups/servers/databases/schemas/static/js/chil= d.js >> C pgadmin/browser/server_groups/servers/databases/schemas/static/js/sche= ma_child_tree_node.js >> >> It makes sense to remove duplication by extracting these attributes out >> and setting the canDrop and canCreate functions here. But is it possible >> to combine these two files into one since they are related so we don=E2= =80=99t need >> to import schema_child_tree_node? >> > That was the original plan, but 'pgadmin/browser/static/js//node.js' script has too many dependecies, which are not easily portable. And - that may lead to change the scope of the patch. Hence - I decided to use the separate file to make sure we have enough test coverage (which is more imprortant than changing the scope). > M pgadmin/static/js/tree/tree.js >> >> The creation of the ancestorNode function feels like a pre-optimization. >> That function is not used any where outside of the tree.js file, so it= =E2=80=99s >> more confusing to have it defined. >> > It is being used in the latest changes. :-) > On a lighter note, could we avoid the !! syntax when possible? For >> example, instead of return !!obj, we could do something like return obj >> =3D=3D=3D undefined or return _.isUndefined(obj) as this is more intuiti= ve. >> >> https://softwareengineering.stackexchange.com/a/80092 >> > I am kind of disagree here. But - I have changed it anyway. > In addition, please update this patch as it is out of sync with the lates= t >> commit on the master branch. Otherwise, everything looks good! >> > Here - you go! -- Thanks, Ashesh > =E2=80=8B >> >> Thanks >> Anthony && Victoria >> >> On Fri, Jun 1, 2018 at 7:52 AM Ashesh Vashi < >> ashesh.vashi@enterprisedb.com> wrote: >> >>> On Thu, May 24, 2018 at 8:13 PM, Joao De Almeida Pereira < >>> jdealmeidapereira@pivotal.io> wrote: >>> >>>> Hey, Thanks so much for the reply. >>>> >>>> We've noticed that you've made several modifications on top of our >>>> original patch. Unfortunately, we've found it very hard to follow. Cou= ld we >>>> please get a brief synopsis of the changes you have made - just so we = can >>>> better understand the rationale behind them? Just like we've done for = you >>>> previously. >>>> >>> Please find the changes from your original patch: >>> >>> M webpack.shim.js >>> M webpack.test.config.js >>> - In order to specify the fake_browser in regression tests, we need to = use 'pgbrowser/browser' in the 'schema_child_tree_node.js' script.D pgadmin= /browser/server_groups/servers/databases/schemas/static/js/can_drop_child.j= s >>> - We don't need this with the new implementation.C pgadmin/browser/serv= er_groups/servers/databases/schemas/static/js/child.js >>> - All the children of schema node have common properties as 'parent_typ= e', 'canDrop', 'canDropCascase', 'canCreate'. >>> Hence - instead of defining them in each node, we have created a base= node, which will have all these properties. >>> And, modified all schema children node to inherit from it.C pgadmin/b= rowser/server_groups/servers/databases/schemas/static/js/schema_child_tree_= node.js >>> - In this script, we're defining three functions 'childCreateMenuEnable= d', 'isTreeItemOfChildOfSchema', & 'isTreeNodeOfSchemaChild', which are use= d by the 'SchemaChildNode' objects.M pgadmin/browser/static/js/collection.j= s >>> - Fixed an issue related to wrongly defined 'error' function for the Co= llection object.D pgadmin/static/js/menu/can_create.js >>> - It defined the function, which was defining a check for creation of a= schema child node, or not by looking at the parent node (i.e. a schema/cat= alog node). >>> The file was not defintely placed under the wrong directory, because = - the similar logic was under 'can_drop_child.js', and it was defined under= 'pgadmin/browser/server_groups/servers/databases/schemas/static/js' direct= ory.D pgadmin/static/js/menu/menu_enabled.jsC pgadmin/static/js/nodes/suppo= rted_database_node.js >>> - Used by the external tools for checking whether the 'selected' tree-n= ode is: >>> + 'database' node, and it is allowed to connect it. >>> + Or, it is one of the schema child (and, not 'catalog' child). >>> - Finding the correct location was difficult for this, as there is no d= efined pattern, also it can be used by other functions too. Hence - moved i= t out of 'pgadmin/static/js/menu' directory.M pgadmin/static/js/tree/tree.j= s >>> - Introduced a function, which returns the ancestor node object, fow wh= ich the condition is true.D regression/javascript/menu/can_create_spec.js >>> D regression/javascript/menu/menu_enabled_spec.js >>> D regression/javascript/schema/can_drop_child_spec.jsC regression/javas= cript/fake_browser/browser.js >>> C regression/javascript/nodes/schema/child_menu_spec.js >>> - Modified the regression to test the new functionalies.M pgadmin/brows= er/server_groups/servers/databases/schemas/**/*.js >>> - Extending the schema child nodes from the 'SchemaChildNode' class def= ined in 'pgadmin/.../schemas/static/js/child.js' script. >>> >>> Let me know if you need more information. >>> >>> >>>> Let's keep in mind that the original intent was simply to introduce >>>> this abstraction into the code base, which is a big enough task. I'd h= ate >>>> for the scope of the changes we're making to expand beyond that. >>>> >>> >>> I have the mutual feeling. >>> >>> -- Thanks, Ashesh >>> >>>> >>>> Thanks >>>> Joao && Anthony >>>> >>>> >>>> On Thu, May 24, 2018 at 2:59 AM Ashesh Vashi < >>>> ashesh.vashi@enterprisedb.com> wrote: >>>> >>>>> Sorry for the late reply. >>>>> On Wed, May 16, 2018 at 8:55 PM, Anthony Emengo >>>>> wrote: >>>>> >>>>>> export function canCreate(pgBrowser, childOfCatalogType) { >>>>>> return canCreateObject.bind({ >>>>>> browser: pgBrowser, >>>>>> childOfCatalogType: childOfCatalogType, >>>>>> }); >>>>>> } >>>>>> >>>>>> With respect to the above code: this bind pattern looks good and >>>>>> seems like the idiomatic way to handle this in JavaScript. On a ligh= ter >>>>>> node, I don=E2=80=99t even see the need for an additional method to = wrap it. The >>>>>> invocation could have easily been like canCreate: >>>>>> canCreateObject.bind({ browser: pgBrowser, childOfCatalogType: >>>>>> childOfCatalogType }), I don=E2=80=99t feel too strongly here. >>>>>> >>>>> I do agree - we can handle the same problem many ways. >>>>> I prefer object oriented pardigm more in general. >>>>> Any way - I have modified the code with some other changes. >>>>> >>>>>> I renamed it as isValidTreeNodeData, because - we were using it in >>>>>> for testing the tree data. Please suggest me the right place, and na= me. >>>>>> >>>>>> We=E2=80=99re not sure; maybe after continued refactoring, we will c= ome >>>>>> across more generic functions. At that point we can revisit this and= create >>>>>> a utils.js file. >>>>>> >>>>> Sure. >>>>> >>>>>> The original patch was separating them in different places, but - >>>>>> still uses some of the functionalities directly from the tree, which= was >>>>>> happening because we have contextual menu. >>>>>> To give a better solution, I can think of putting the menus related >>>>>> code understand =E2=80=98sources/tree/menu=E2=80=99 directory. >>>>>> >>>>>> We=E2=80=99re particularly worried because we=E2=80=99re trying to a= void the coupling >>>>>> that we see in the code base today. We want to decouple *application >>>>>> state* from *business domain* logic as much as we can - because this >>>>>> makes the code much easier to understand. We achieve lower coupling = by have >>>>>> more suitable interfaces to retrieve *application state* like: >>>>>> anyParent (the menu doesn=E2=80=99t care how this happens). This is = the >>>>>> direction that we=E2=80=99re trying to move towards, we just don=E2= =80=99t want the package >>>>>> structure to undermine that developer intent. >>>>>> >>>>> I realized after revisiting the code, menu/can_create.js was only >>>>> applicable to the children of the schema/catalog nodes, same as >>>>> 'can_drop_child'. >>>>> We should have put both scripts in the same directory. >>>>> >>>>> Please find the updated patch for the same. >>>>> >>>>> Please review it, and let me know your concerns. >>>>> >>>>> -- Thanks, Ashesh >>>>> >>>>>> How about nodeMenu.isSupportedNode(=E2=80=A6)? >>>>>> >>>>>> Naming is one of the hardest problems in programming. I don=E2=80=99= t feel >>>>>> too strongly about this one. For now, let=E2=80=99s keep it as is >>>>>> >>>>>> Thanks >>>>>> Anthony && Victoria >>>>>> =E2=80=8B >>>>>> >>>>>> >>>>>> >>>>>> >>>>> >>> --000000000000c906a1056d98ddb7 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
On Fri, Jun 1, 2018 = at 10:09 PM, Victoria Henry <vhenry@pivotal.io> wrote:
Hi Ashesh,

We just attempted= to apply your patch over master but it did not work.=C2=A0 We don't wa= nt to introduce any bugs or break any functionality.=C2=A0 Please update th= e patch to make sure it is synced up with the master branch.
Please find the updated patch.

Sincerely,

=
Victoria

On Fri, Jun 1, 2018 at 11:18 AM Anthony Emengo <aemengo@pivotal.io> wrote:<= br>

Hey Ashesh,

Thanks for the explanation. It = was great and it really helped!

C pgadmin/browser/se=
rver_groups/servers/databases/schemas/static/js/child.js
C pgadmin/browser/server_groups/servers/databases/schemas/static/=
js/schema_child_tree_node.js

It makes sense to = remove duplication by extracting these attributes out and setting the canDrop and canCreate functions = here. But is it possible to combine these two files into one since they ar= e related so we don=E2=80=99t need to import schema_child_= tree_node?

That was the original plan, but 'pgadmin/browser/static/js//node= .js' script has too many dependecies, which are not easily portable.
And - that may lead to change the scope of the patch.
Hence - I decided to use the separate file to make sure we have= enough test coverage (which is more imprortant than changing the scope).= =C2=A0
M pgadmin/static/js/=
tree/tree.js

The creation of th= e ancestorNode function feels like a pre-optimizati= on. That function is not used any where outside of the tre= e.js file, so it=E2=80=99s more confusing to have it defined.

It is being used = in the latest changes. :-)
=C2=A0

On a lighter note, could we avoid the !! syntax when possible? = For example, instead of return !!obj, we could do s= omething like return obj =3D=3D=3D undefined or return _.isUndefined(obj) as this is more intuitive.

https://softwareengine= ering.stackexchange.com/a/80092

=
I am kind of disagree here. But - I have chan= ged it anyway.=C2=A0

In addition, please update this= patch as it is out of sync with the latest commit on the master branch. Ot= herwise, everything looks good!

Here - you go!

-- Thanks, Ash= esh=C2=A0
=E2=80=8B

Thanks
Antho= ny && Victoria

On Fri, Jun 1, 2018 at 7:52 AM Ashesh Vashi <ashesh.vashi@en= terprisedb.com> wrote:
=
On Thu, May 24, 2018 at 8:13 PM, Joao De Almeida Pere= ira <jdealmeidapereira@pivotal.io> wrote:
Hey, Thanks so much for t= he reply.

We've noticed that you've made several= modifications on top of our original patch. Unfortunately, we've found= it very hard to follow. Could we please get a brief synopsis of the change= s you have made - just so we can better understand the rationale behind the= m? Just like we've done for you previously.
Please find the changes from your original patch:
M webpack.shim.js
M webpack.test.config.js
- In order to specify the fake_br= owser in regression tests, we need to use 'pgbrowser/browser' in th= e 'schema_child_= tree_node.js<= /span>' script.
D pgadmin/browser/server_groups/server= s/databases/schemas/static/js/can_drop_child.js
- We don't need this with the new implementation.
C pgadmin/browser/server_groups/servers/databases/schemas/static/js/child.js
- All the chi= ldren of schema node have common properties as 'parent_type', '= canDrop', 'canDropCascase', 'canCreate'.
Hence = - instead of defining them in each node, we have created a base node, which= will have all these properties.
= And, modified all schema children node to inherit from it.
C pgadmin/brows= er/server_groups/servers/databases/schemas/static/js/schema_child= _tree_node.js
- In this script, we'= ;re defining three functions '
chil= dCreateMenuEnabled', '
isTreeItemOfChi= ldOfSchema', & 'i= sTreeNodeOfSchemaChild', which are used by the 'SchemaChildNode' objects.M pgadmin/browser/static/js/collection.js
- Fixed an issue related to wrongly defined 'error' funct= ion for the Collection object.
D pgadmin/static/js/menu/can_cr= eate.js
- It defined the functi= on, which was defining a check for creation of a schema child node, or not = by looking at the parent node (i.e. a schema/catalog node).
The file was not defintely placed under the wrong= directory, because - the similar logic was under 'can_drop_child.js', and it was defined under '= pgadmin/browser/server_groups/servers/databases/schemas/static/js' directory.
D pgadmin/static/js/menu/menu_enabled.jsC pgadmin/static/js/nodes/supported_dat= abase_node.js
- Used by the external tools = for checking whether the 'selected' tree-node is:
+ 'database' node, and it is allowed to c= onnect it.
+ Or, it is one of the schema = child (and, not 'catalog' child).

- Finding the correct location was difficult for this, as th= ere is no defined pattern, also it can be used by other functions too. Henc= e - moved it out of 'pgadmin/static/js/menu' directory.
M pgadmin/static/js/tree/tree.js
- Introduced a function, which returns the ancestor n= ode object, fow which the condition is true.
D regression/javascript/menu/can_create_spec.js= D regression/javascript/menu/menu_enabled_spec.js D regression/javascript/schema/can_drop_child_spec.js C regression/javascript/fake_browser/browser.js
C regression/javascript/nodes/schema/child_menu_spec.js<= /span>

- Modified the regression to = test the new functionalies.
M pgadmin/browser/server_groups/servers/databases/schemas/*= */*.js
- Extending the schema child no= des from the '
SchemaChildNode' class defined in 'pgadmin/.../schemas/static/js/chil= d.js' script.
Let me know i= f you need more information.
=C2=A0
Let's keep i= n mind that the original intent was simply to introduce this abstraction in= to the code base, which is a big enough task. I'd hate for the scope of= the changes we're making to expand beyond that.

I have the mutual feeling.

-= - Thanks, Ashesh=C2=A0

Thanks
Joao && An= thony


On Thu, May 2= 4, 2018 at 2:59 AM Ashesh Vashi <ashesh.vashi@enterprisedb.com> wrot= e:
Sorry for the late reply.
On Wed, May 16, 2018 at 8:55 PM, Anthony Emengo <aemeng= o@pivotal.io> wrote:
export function canCreate(pgBrowser, chi=
ldOfCatalogType) {
  return canCreateObject.bind({
    browser: pgBrowser,
    childOfCatalogType: childOfCatalogType,
  });
}

With respect to the above co= de: this bind pattern looks good and seems like the idiomatic way to handle= this in JavaScript. On a lighter node, I don=E2=80=99t even see the need f= or an additional method to wrap it. The invocation could have easily been l= ike canCreate: canCreateObject.bind({ browser: pgBrowser, = childOfCatalogType: childOfCatalogType }), I don=E2=80=99t feel too = strongly here.

I do agree - we can handle = the same problem many ways.
I prefer object oriented pardigm more= in general.
Any way - I have modified the code with some other c= hanges.

I renamed it as isValidTreeNodeData, beca= use - we were using it in for testing the tree data. Please suggest me the = right place, and name.

We=E2=80=99re not sure; maybe after conti= nued refactoring, we will come across more generic functions. At that poin= t we can revisit this and create a utils.js file.

Sure.=C2=A0

The original patch was separating them in= different places, but - still uses some of the functionalities directly fr= om the tree, which was happening because we have contextual menu.
To giv= e a better solution, I can think of putting the menus related code understa= nd =E2=80=98sources/tree/menu=E2=80=99 directory.

We=E2=80=99re particularly worried= because we=E2=80=99re trying to avoid the coupling that we see in the code= base today. We want to decouple application state from busine= ss domain logic as much as we can - because this makes the code much e= asier to understand. We achieve lower coupling by have more suitable interf= aces to retrieve application state like: anyParen= t (the menu doesn=E2=80=99t care how this happens). This is the dire= ction that we=E2=80=99re trying to move towards, we just don=E2=80=99t want= the package structure to undermine that developer intent.

<= /blockquote>
I realized after revisiting the code, menu/can_create.js w= as only applicable to the children of the schema/catalog nodes, same as = 9;can_drop_child'.
We should have put both scripts in the sam= e directory.

Please find the updated patch for the= same.

Please review it, and let me know your conc= erns.

-- Thanks, Ashesh

How about nodeMenu.isSupportedNode(=E2=80=A6)?

Naming is one of the hardest problems in = programming. I don=E2=80=99t feel too strongly about this one. For now, let= =E2=80=99s keep it as is

Thanks
Anthony && Victoria

=E2=80=8B

=





--000000000000c906a1056d98ddb7-- --000000000000c906a3056d98ddb9 Content-Type: application/octet-stream; name="0001-Extract-test-and-refactor-methods_v2.patch" Content-Disposition: attachment; filename="0001-Extract-test-and-refactor-methods_v2.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_jhwb7fru0 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL2NvbGxhdGlvbnMvc3RhdGljL2pzL2NvbGxhdGlvbi5qcyBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Nv bGxhdGlvbnMvc3RhdGljL2pzL2NvbGxhdGlvbi5qcwppbmRleCA5MDE1ZDhkMi4uN2ZkMjhhN2Mg MTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL2NvbGxhdGlvbnMvc3RhdGljL2pzL2NvbGxhdGlvbi5qcworKysgYi93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy9jb2xsYXRpb25zL3N0YXRpYy9qcy9jb2xsYXRpb24uanMKQEAgLTEsOCArMSw4IEBACiBkZWZp bmUoJ3BnYWRtaW4ubm9kZS5jb2xsYXRpb24nLCBbCiAgICdzb3VyY2VzL2dldHRleHQnLCAnc291 cmNlcy91cmxfZm9yJywgJ2pxdWVyeScsICd1bmRlcnNjb3JlJywKICAgJ3VuZGVyc2NvcmUuc3Ry aW5nJywgJ3NvdXJjZXMvcGdhZG1pbicsICdwZ2FkbWluLmJyb3dzZXInLAotICAncGdhZG1pbi5i cm93c2VyLmNvbGxlY3Rpb24nLAotXSwgZnVuY3Rpb24oZ2V0dGV4dCwgdXJsX2ZvciwgJCwgXywg UywgcGdBZG1pbiwgcGdCcm93c2VyKSB7CisgICdwZ2FkbWluLm5vZGUuc2NoZW1hLmRpci9jaGls ZCcsICdwZ2FkbWluLmJyb3dzZXIuY29sbGVjdGlvbicsCitdLCBmdW5jdGlvbihnZXR0ZXh0LCB1 cmxfZm9yLCAkLCBfLCBTLCBwZ0FkbWluLCBwZ0Jyb3dzZXIsIHNjaGVtYUNoaWxkKSB7CiAKICAg aWYgKCFwZ0Jyb3dzZXIuTm9kZXNbJ2NvbGwtY29sbGF0aW9uJ10pIHsKICAgICBwZ0FkbWluLkJy b3dzZXIuTm9kZXNbJ2NvbGwtY29sbGF0aW9uJ10gPQpAQCAtMTUsNyArMTUsNyBAQCBkZWZpbmUo J3BnYWRtaW4ubm9kZS5jb2xsYXRpb24nLCBbCiAgIH0KIAogICBpZiAoIXBnQnJvd3Nlci5Ob2Rl c1snY29sbGF0aW9uJ10pIHsKLSAgICBwZ0FkbWluLkJyb3dzZXIuTm9kZXNbJ2NvbGxhdGlvbidd ID0gcGdCcm93c2VyLk5vZGUuZXh0ZW5kKHsKKyAgICBwZ0FkbWluLkJyb3dzZXIuTm9kZXNbJ2Nv bGxhdGlvbiddID0gc2NoZW1hQ2hpbGQuU2NoZW1hQ2hpbGROb2RlLmV4dGVuZCh7CiAgICAgICB0 eXBlOiAnY29sbGF0aW9uJywKICAgICAgIHNxbEFsdGVySGVscDogJ3NxbC1hbHRlcmNvbGxhdGlv bi5odG1sJywKICAgICAgIHNxbENyZWF0ZUhlbHA6ICdzcWwtY3JlYXRlY29sbGF0aW9uLmh0bWwn LApAQCAtMjIyLDM0ICsyMjIsNiBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS5jb2xsYXRpb24nLCBb CiAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0sCiAgICAgICB9KSwKLSAgICAgIGNh bkNyZWF0ZTogZnVuY3Rpb24oaXRlbURhdGEsIGl0ZW0sIGRhdGEpIHsKLSAgICAgICAgICAvL0lm IGNoZWNrIGlzIGZhbHNlIHRoZW4gLCB3ZSB3aWxsIGFsbG93IGNyZWF0ZSBtZW51Ci0gICAgICAg IGlmIChkYXRhICYmIGRhdGEuY2hlY2sgPT0gZmFsc2UpCi0gICAgICAgICAgcmV0dXJuIHRydWU7 Ci0KLSAgICAgICAgdmFyIHQgPSBwZ0Jyb3dzZXIudHJlZSwgaSA9IGl0ZW0sIGQgPSBpdGVtRGF0 YTsKLSAgICAgICAgICAvLyBUbyBpdGVyYXRlIG92ZXIgdHJlZSB0byBjaGVjayBwYXJlbnQgbm9k ZQotICAgICAgICB3aGlsZSAoaSkgewotICAgICAgICAgICAgLy8gSWYgaXQgaXMgc2NoZW1hIHRo ZW4gYWxsb3cgdXNlciB0byBjcmVhdGUgY29sbGF0aW9uCi0gICAgICAgICAgaWYgKF8uaW5kZXhP ZihbJ3NjaGVtYSddLCBkLl90eXBlKSA+IC0xKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0K LSAgICAgICAgICBpZiAoJ2NvbGwtY29sbGF0aW9uJyA9PSBkLl90eXBlKSB7Ci0gICAgICAgICAg ICAgIC8vQ2hlY2sgaWYgd2UgYXJlIG5vdCBjaGlsZCBvZiBjYXRhbG9nCi0gICAgICAgICAgICB2 YXIgcHJldl9pID0gdC5oYXNQYXJlbnQoaSkgPyB0LnBhcmVudChpKSA6IG51bGwsCi0gICAgICAg ICAgICAgIHByZXZfZCA9IHByZXZfaSA/IHQuaXRlbURhdGEocHJldl9pKSA6IG51bGw7Ci0gICAg ICAgICAgICBpZiggcHJldl9kLl90eXBlID09ICdjYXRhbG9nJykgewotICAgICAgICAgICAgICBy ZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICByZXR1cm4g dHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgICAgaSA9IHQuaGFzUGFy ZW50KGkpID8gdC5wYXJlbnQoaSkgOiBudWxsOwotICAgICAgICAgIGQgPSBpID8gdC5pdGVtRGF0 YShpKSA6IG51bGw7Ci0gICAgICAgIH0KLSAgICAgICAgICAvLyBieSBkZWZhdWx0IHdlIGRvIG5v dCB3YW50IHRvIGFsbG93IGNyZWF0ZSBtZW51Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgICAg fSwKICAgICB9KTsKIAogICB9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL3N0YXRpYy9qcy9kb21h aW4uanMgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy9kb21haW5zL3N0YXRpYy9qcy9kb21haW4uanMKaW5kZXggNDAzY2E0NzEuLmE5 MWRhYTVmIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL3N0YXRpYy9qcy9kb21haW4uanMKKysrIGIv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvZG9tYWlucy9zdGF0aWMvanMvZG9tYWluLmpzCkBAIC0yLDkgKzIsMTAgQEAKIGRlZmluZSgn cGdhZG1pbi5ub2RlLmRvbWFpbicsIFsKICAgJ3NvdXJjZXMvZ2V0dGV4dCcsICdzb3VyY2VzL3Vy bF9mb3InLCAnanF1ZXJ5JywgJ3VuZGVyc2NvcmUnLCAnYmFja2JvbmUnLAogICAnc291cmNlcy9w Z2FkbWluJywgJ3BnYWRtaW4uYnJvd3NlcicsICdwZ2FkbWluLmJhY2tmb3JtJywgJ3BnYWRtaW4u YmFja2dyaWQnLAotICAncGdhZG1pbi5icm93c2VyLmNvbGxlY3Rpb24nLAorICAncGdhZG1pbi5u b2RlLnNjaGVtYS5kaXIvY2hpbGQnLCAncGdhZG1pbi5icm93c2VyLmNvbGxlY3Rpb24nLAogXSwg ZnVuY3Rpb24oCi0gIGdldHRleHQsIHVybF9mb3IsICQsIF8sIEJhY2tib25lLCBwZ0FkbWluLCBw Z0Jyb3dzZXIsIEJhY2tmb3JtLCBCYWNrZ3JpZAorICBnZXR0ZXh0LCB1cmxfZm9yLCAkLCBfLCBC YWNrYm9uZSwgcGdBZG1pbiwgcGdCcm93c2VyLCBCYWNrZm9ybSwgQmFja2dyaWQsCisgIHNjaGVt YUNoaWxkCiApIHsKIAogICAvLyBEZWZpbmUgRG9tYWluIENvbGxlY3Rpb24gTm9kZQpAQCAtNzks NyArODAsNyBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS5kb21haW4nLCBbCiAKICAgLy8gRG9tYWlu IE5vZGUKICAgaWYgKCFwZ0Jyb3dzZXIuTm9kZXNbJ2RvbWFpbiddKSB7Ci0gICAgcGdCcm93c2Vy Lk5vZGVzWydkb21haW4nXSA9IHBnQnJvd3Nlci5Ob2RlLmV4dGVuZCh7CisgICAgcGdCcm93c2Vy Lk5vZGVzWydkb21haW4nXSA9IHNjaGVtYUNoaWxkLlNjaGVtYUNoaWxkTm9kZS5leHRlbmQoewog ICAgICAgdHlwZTogJ2RvbWFpbicsCiAgICAgICBzcWxBbHRlckhlbHA6ICdzcWwtYWx0ZXJkb21h aW4uaHRtbCcsCiAgICAgICBzcWxDcmVhdGVIZWxwOiAnc3FsLWNyZWF0ZWRvbWFpbi5odG1sJywK QEAgLTg4LDcgKzg5LDYgQEAgZGVmaW5lKCdwZ2FkbWluLm5vZGUuZG9tYWluJywgWwogICAgICAg Y29sbGVjdGlvbl90eXBlOiAnY29sbC1kb21haW4nLAogICAgICAgaGFzU1FMOiB0cnVlLAogICAg ICAgaGFzRGVwZW5kczogdHJ1ZSwKLSAgICAgIHBhcmVudF90eXBlOiBbJ3NjaGVtYScsICdjYXRh bG9nJ10sCiAgICAgICBJbml0OiBmdW5jdGlvbigpIHsKICAgICAgICAgLy8gQXZvaWQgbXVsaXRw bGUgcmVnaXN0cmF0aW9uIG9mIG1lbnVzCiAgICAgICAgIGlmICh0aGlzLmluaXRpYWxpemVkKQpA QCAtMTE4LDggKzExOCw2IEBAIGRlZmluZSgncGdhZG1pbi5ub2RlLmRvbWFpbicsIFsKICAgICAg ICAgXSk7CiAKICAgICAgIH0sCi0gICAgICBjYW5Ecm9wOiBwZ0Jyb3dzZXIuTm9kZXNbJ3NjaGVt YSddLmNhbkNoaWxkRHJvcCwKLSAgICAgIGNhbkRyb3BDYXNjYWRlOiBwZ0Jyb3dzZXIuTm9kZXNb J3NjaGVtYSddLmNhbkNoaWxkRHJvcCwKICAgICAgIC8vIERvbWFpbiBOb2RlIE1vZGVsCiAgICAg ICBtb2RlbDogcGdCcm93c2VyLk5vZGUuTW9kZWwuZXh0ZW5kKHsKICAgICAgICAgaW5pdGlhbGl6 ZTogZnVuY3Rpb24oYXR0cnMsIGFyZ3MpIHsKQEAgLTI5NiwzNCArMjk0LDYgQEAgZGVmaW5lKCdw Z2FkbWluLm5vZGUuZG9tYWluJywgWwogICAgICAgICAgIHJldHVybiBlcnJtc2c7CiAgICAgICAg IH0sCiAgICAgICB9KSwKLSAgICAgIGNhbkNyZWF0ZTogZnVuY3Rpb24oaXRlbURhdGEsIGl0ZW0s IGRhdGEpIHsKLSAgICAgICAgLy9JZiBjaGVjayBpcyBmYWxzZSB0aGVuICwgd2Ugd2lsbCBhbGxv dyBjcmVhdGUgbWVudQotICAgICAgICBpZiAoZGF0YSAmJiBkYXRhLmNoZWNrID09IGZhbHNlKQot ICAgICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgIHZhciB0ID0gcGdCcm93c2VyLnRyZWUs IGkgPSBpdGVtLCBkID0gaXRlbURhdGE7Ci0gICAgICAgIC8vIFRvIGl0ZXJhdGUgb3ZlciB0cmVl IHRvIGNoZWNrIHBhcmVudCBub2RlCi0gICAgICAgIHdoaWxlIChpKSB7Ci0gICAgICAgICAgLy8g SWYgaXQgaXMgc2NoZW1hIHRoZW4gYWxsb3cgdXNlciB0byBjcmVhdGUgZG9tYWluCi0gICAgICAg ICAgaWYgKF8uaW5kZXhPZihbJ3NjaGVtYSddLCBkLl90eXBlKSA+IC0xKQotICAgICAgICAgICAg cmV0dXJuIHRydWU7Ci0KLSAgICAgICAgICBpZiAoJ2NvbGwtZG9tYWluJyA9PSBkLl90eXBlKSB7 Ci0gICAgICAgICAgICAvL0NoZWNrIGlmIHdlIGFyZSBub3QgY2hpbGQgb2YgY2F0YWxvZwotICAg ICAgICAgICAgdmFyIHByZXZfaSA9IHQuaGFzUGFyZW50KGkpID8gdC5wYXJlbnQoaSkgOiBudWxs LAotICAgICAgICAgICAgICBwcmV2X2QgPSBwcmV2X2kgPyB0Lml0ZW1EYXRhKHByZXZfaSkgOiBu dWxsOwotICAgICAgICAgICAgaWYoIHByZXZfZC5fdHlwZSA9PSAnY2F0YWxvZycpIHsKLSAgICAg ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg ICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICAgIGkg PSB0Lmhhc1BhcmVudChpKSA/IHQucGFyZW50KGkpIDogbnVsbDsKLSAgICAgICAgICBkID0gaSA/ IHQuaXRlbURhdGEoaSkgOiBudWxsOwotICAgICAgICB9Ci0gICAgICAgIC8vIGJ5IGRlZmF1bHQg d2UgZG8gbm90IHdhbnQgdG8gYWxsb3cgY3JlYXRlIG1lbnUKLSAgICAgICAgcmV0dXJuIHRydWU7 Ci0gICAgICB9LAogICAgICAgaXNEaXNhYmxlZDogZnVuY3Rpb24obSl7CiAgICAgICAgIGlmICgh bS5pc05ldygpKSB7CiAgICAgICAgICAgdmFyIHNlcnZlciA9IHRoaXMubm9kZV9pbmZvLnNlcnZl cjsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3N0YXRpYy9qcy9mb3JlaWduX3RhYmxl LmpzIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvc3RhdGljL2pzL2ZvcmVpZ25fdGFibGUuanMKaW5kZXgg MTYwZGI4M2YuLjI0ZjVlMWE3IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy9zdGF0aWMv anMvZm9yZWlnbl90YWJsZS5qcworKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy9zdGF0aWMvanMvZm9y ZWlnbl90YWJsZS5qcwpAQCAtMiw5ICsyLDEwIEBACiBkZWZpbmUoJ3BnYWRtaW4ubm9kZS5mb3Jl aWduX3RhYmxlJywgWwogICAnc291cmNlcy9nZXR0ZXh0JywgJ3NvdXJjZXMvdXJsX2ZvcicsICdq cXVlcnknLCAndW5kZXJzY29yZScsICdiYWNrYm9uZScsCiAgICdzb3VyY2VzL3BnYWRtaW4nLCAn cGdhZG1pbi5icm93c2VyJywgJ3BnYWRtaW4uYmFja2Zvcm0nLCAncGdhZG1pbi5iYWNrZ3JpZCcs Ci0gICdwZ2FkbWluLmJyb3dzZXIuY29sbGVjdGlvbicsCisgICdwZ2FkbWluLm5vZGUuc2NoZW1h LmRpci9jaGlsZCcsICdwZ2FkbWluLmJyb3dzZXIuY29sbGVjdGlvbicsCiBdLCBmdW5jdGlvbigK LSAgZ2V0dGV4dCwgdXJsX2ZvciwgJCwgXywgQmFja2JvbmUsIHBnQWRtaW4sIHBnQnJvd3Nlciwg QmFja2Zvcm0sIEJhY2tncmlkCisgIGdldHRleHQsIHVybF9mb3IsICQsIF8sIEJhY2tib25lLCBw Z0FkbWluLCBwZ0Jyb3dzZXIsIEJhY2tmb3JtLCBCYWNrZ3JpZCwKKyAgc2NoZW1hQ2hpbGQKICkg ewogCiAgIGlmICghcGdCcm93c2VyLk5vZGVzWydjb2xsLWZvcmVpZ25fdGFibGUnXSkgewpAQCAt NDY5LDcgKzQ3MCw3IEBAIGRlZmluZSgncGdhZG1pbi5ub2RlLmZvcmVpZ25fdGFibGUnLCBbCiAK IAogICBpZiAoIXBnQnJvd3Nlci5Ob2Rlc1snZm9yZWlnbl90YWJsZSddKSB7Ci0gICAgcGdCcm93 c2VyLk5vZGVzWydmb3JlaWduX3RhYmxlJ10gPSBwZ0Jyb3dzZXIuTm9kZS5leHRlbmQoeworICAg IHBnQnJvd3Nlci5Ob2Rlc1snZm9yZWlnbl90YWJsZSddID0gc2NoZW1hQ2hpbGQuU2NoZW1hQ2hp bGROb2RlLmV4dGVuZCh7CiAgICAgICB0eXBlOiAnZm9yZWlnbl90YWJsZScsCiAgICAgICBzcWxB bHRlckhlbHA6ICdzcWwtYWx0ZXJmb3JlaWdudGFibGUuaHRtbCcsCiAgICAgICBzcWxDcmVhdGVI ZWxwOiAnc3FsLWNyZWF0ZWZvcmVpZ250YWJsZS5odG1sJywKQEAgLTUwOSw4ICs1MTAsNiBAQCBk ZWZpbmUoJ3BnYWRtaW4ubm9kZS5mb3JlaWduX3RhYmxlJywgWwogICAgICAgICBdKTsKIAogICAg ICAgfSwKLSAgICAgIGNhbkRyb3A6IHBnQnJvd3Nlci5Ob2Rlc1snc2NoZW1hJ10uY2FuQ2hpbGRE cm9wLAotICAgICAgY2FuRHJvcENhc2NhZGU6IHBnQnJvd3Nlci5Ob2Rlc1snc2NoZW1hJ10uY2Fu Q2hpbGREcm9wLAogICAgICAgbW9kZWw6IHBnQnJvd3Nlci5Ob2RlLk1vZGVsLmV4dGVuZCh7CiAg ICAgICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKGF0dHJzLCBhcmdzKSB7CiAgICAgICAgICAgdmFy IGlzTmV3ID0gKF8uc2l6ZShhdHRycykgPT09IDApOwpAQCAtNjU5LDM0ICs2NTgsNiBAQCBkZWZp bmUoJ3BnYWRtaW4ubm9kZS5mb3JlaWduX3RhYmxlJywgWwogICAgICAgICAgIHJldHVybiBlcnJt c2c7CiAgICAgICAgIH0sCiAgICAgICB9KSwKLSAgICAgIGNhbkNyZWF0ZTogZnVuY3Rpb24oaXRl bURhdGEsIGl0ZW0sIGRhdGEpIHsKLSAgICAgICAgLy9JZiBjaGVjayBpcyBmYWxzZSB0aGVuICwg d2Ugd2lsbCBhbGxvdyBjcmVhdGUgbWVudQotICAgICAgICBpZiAoZGF0YSAmJiBkYXRhLmNoZWNr ID09IGZhbHNlKQotICAgICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgIHZhciB0ID0gcGdC cm93c2VyLnRyZWUsIGkgPSBpdGVtLCBkID0gaXRlbURhdGE7Ci0gICAgICAgIC8vIFRvIGl0ZXJh dGUgb3ZlciB0cmVlIHRvIGNoZWNrIHBhcmVudCBub2RlCi0gICAgICAgIHdoaWxlIChpKSB7Ci0g ICAgICAgICAgLy8gSWYgaXQgaXMgc2NoZW1hIHRoZW4gYWxsb3cgdXNlciB0byBjcmVhdGUgZm9y ZWlnbiB0YWJsZQotICAgICAgICAgIGlmIChfLmluZGV4T2YoWydzY2hlbWEnXSwgZC5fdHlwZSkg PiAtMSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgICAgaWYgKCdjb2xsLWZv cmVpZ25fdGFibGUnID09IGQuX3R5cGUpIHsKLSAgICAgICAgICAgIC8vQ2hlY2sgaWYgd2UgYXJl IG5vdCBjaGlsZCBvZiBjYXRhbG9nCi0gICAgICAgICAgICB2YXIgcHJldl9pID0gdC5oYXNQYXJl bnQoaSkgPyB0LnBhcmVudChpKSA6IG51bGwsCi0gICAgICAgICAgICAgIHByZXZfZCA9IHByZXZf aSA/IHQuaXRlbURhdGEocHJldl9pKSA6IG51bGw7Ci0gICAgICAgICAgICBpZiggcHJldl9kLl90 eXBlID09ICdjYXRhbG9nJykgewotICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg ICAgICB9IGVsc2UgewotICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0K LSAgICAgICAgICB9Ci0gICAgICAgICAgaSA9IHQuaGFzUGFyZW50KGkpID8gdC5wYXJlbnQoaSkg OiBudWxsOwotICAgICAgICAgIGQgPSBpID8gdC5pdGVtRGF0YShpKSA6IG51bGw7Ci0gICAgICAg IH0KLSAgICAgICAgLy8gYnkgZGVmYXVsdCB3ZSBkbyBub3Qgd2FudCB0byBhbGxvdyBjcmVhdGUg bWVudQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIH0sCiAgICAgfSk7CiAKICAgfQpkaWZm IC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvZnRzX2NvbmZpZ3VyYXRpb25zL3N0YXRpYy9qcy9mdHNfY29uZmlndXJhdGlv bi5qcyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL2Z0c19jb25maWd1cmF0aW9ucy9zdGF0aWMvanMvZnRzX2NvbmZpZ3VyYXRpb24u anMKaW5kZXggODk4MDY2ODEuLmNiYTYyNzg5IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdHNfY29uZmlndXJh dGlvbnMvc3RhdGljL2pzL2Z0c19jb25maWd1cmF0aW9uLmpzCisrKyBiL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z0c19jb25maWd1 cmF0aW9ucy9zdGF0aWMvanMvZnRzX2NvbmZpZ3VyYXRpb24uanMKQEAgLTEsOSArMSwxMCBAQAog ZGVmaW5lKCdwZ2FkbWluLm5vZGUuZnRzX2NvbmZpZ3VyYXRpb24nLCBbCiAgICdzb3VyY2VzL2dl dHRleHQnLCAnc291cmNlcy91cmxfZm9yJywgJ2pxdWVyeScsICd1bmRlcnNjb3JlJywgJ2JhY2ti b25lJywKICAgJ3NvdXJjZXMvcGdhZG1pbicsICdwZ2FkbWluLmJyb3dzZXInLCAncGdhZG1pbi5i YWNrZm9ybScsICdwZ2FkbWluLmJhY2tncmlkJywKLSAgJ3BnYWRtaW4uYnJvd3Nlci5jb2xsZWN0 aW9uJywKKyAgJ3BnYWRtaW4ubm9kZS5zY2hlbWEuZGlyL2NoaWxkJywgJ3BnYWRtaW4uYnJvd3Nl ci5jb2xsZWN0aW9uJywKIF0sIGZ1bmN0aW9uKAotICBnZXR0ZXh0LCB1cmxfZm9yLCAkLCBfLCBC YWNrYm9uZSwgcGdBZG1pbiwgcGdCcm93c2VyLCBCYWNrZm9ybSwgQmFja2dyaWQKKyAgZ2V0dGV4 dCwgdXJsX2ZvciwgJCwgXywgQmFja2JvbmUsIHBnQWRtaW4sIHBnQnJvd3NlciwgQmFja2Zvcm0s IEJhY2tncmlkLAorICBzY2hlbWFDaGlsZAogKSB7CiAKICAgLy8gTW9kZWwgZm9yIHRva2VucyBj b250cm9sCkBAIC00MTAsMTQgKzQxMSwxMSBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS5mdHNfY29u ZmlndXJhdGlvbicsIFsKIAogICAvLyBFeHRlbmQgdGhlIG5vZGUgY2xhc3MgZm9yIEZUUyBDb25m aWd1cmF0aW9uCiAgIGlmICghcGdCcm93c2VyLk5vZGVzWydmdHNfY29uZmlndXJhdGlvbiddKSB7 Ci0gICAgcGdBZG1pbi5Ccm93c2VyLk5vZGVzWydmdHNfY29uZmlndXJhdGlvbiddID0gcGdBZG1p bi5Ccm93c2VyLk5vZGUuZXh0ZW5kKHsKLSAgICAgIHBhcmVudF90eXBlOiBbJ3NjaGVtYScsICdj YXRhbG9nJ10sCisgICAgcGdBZG1pbi5Ccm93c2VyLk5vZGVzWydmdHNfY29uZmlndXJhdGlvbidd ID0gc2NoZW1hQ2hpbGQuU2NoZW1hQ2hpbGROb2RlLmV4dGVuZCh7CiAgICAgICB0eXBlOiAnZnRz X2NvbmZpZ3VyYXRpb24nLAogICAgICAgc3FsQWx0ZXJIZWxwOiAnc3FsLWFsdGVydHNjb25maWcu aHRtbCcsCiAgICAgICBzcWxDcmVhdGVIZWxwOiAnc3FsLWNyZWF0ZXRzY29uZmlnLmh0bWwnLAog ICAgICAgZGlhbG9nSGVscDogdXJsX2ZvcignaGVscC5zdGF0aWMnLCB7J2ZpbGVuYW1lJzogJ2Z0 c19jb25maWd1cmF0aW9uX2RpYWxvZy5odG1sJ30pLAotICAgICAgY2FuRHJvcDogdHJ1ZSwKLSAg ICAgIGNhbkRyb3BDYXNjYWRlOiB0cnVlLAogICAgICAgbGFiZWw6IGdldHRleHQoJ0ZUUyBDb25m aWd1cmF0aW9uJyksCiAgICAgICBoYXNTUUw6IHRydWUsCiAgICAgICBoYXNEZXBlbmRzOiB0cnVl LApAQCAtNTc3LDM0ICs1NzUsNiBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS5mdHNfY29uZmlndXJh dGlvbicsIFsKICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgfSwKICAgICAgIH0pLAot ICAgICAgY2FuQ3JlYXRlOiBmdW5jdGlvbihpdGVtRGF0YSwgaXRlbSwgZGF0YSkgewotICAgICAg ICAvL0lmIGNoZWNrIGlzIGZhbHNlIHRoZW4gLCB3ZSB3aWxsIGFsbG93IGNyZWF0ZSBtZW51Ci0g ICAgICAgIGlmIChkYXRhICYmIGRhdGEuY2hlY2sgPT0gZmFsc2UpCi0gICAgICAgICAgcmV0dXJu IHRydWU7Ci0KLSAgICAgICAgdmFyIHQgPSBwZ0Jyb3dzZXIudHJlZSwgaSA9IGl0ZW0sIGQgPSBp dGVtRGF0YTsKLSAgICAgICAgLy8gVG8gaXRlcmF0ZSBvdmVyIHRyZWUgdG8gY2hlY2sgcGFyZW50 IG5vZGUKLSAgICAgICAgd2hpbGUgKGkpIHsKLSAgICAgICAgICAvLyBJZiBpdCBpcyBzY2hlbWEg dGhlbiBhbGxvdyB1c2VyIHRvIGNyZWF0ZSBmdHMgY29uZmlndXJhdGlvbgotICAgICAgICAgIGlm IChfLmluZGV4T2YoWydzY2hlbWEnXSwgZC5fdHlwZSkgPiAtMSkKLSAgICAgICAgICAgIHJldHVy biB0cnVlOwotCi0gICAgICAgICAgaWYgKCdjb2xsLWZ0c19jb25maWd1cmF0aW9uJyA9PSBkLl90 eXBlKSB7Ci0gICAgICAgICAgICAvL0NoZWNrIGlmIHdlIGFyZSBub3QgY2hpbGQgb2YgY2F0YWxv ZwotICAgICAgICAgICAgdmFyIHByZXZfaSA9IHQuaGFzUGFyZW50KGkpID8gdC5wYXJlbnQoaSkg OiBudWxsLAotICAgICAgICAgICAgICBwcmV2X2QgPSBwcmV2X2kgPyB0Lml0ZW1EYXRhKHByZXZf aSkgOiBudWxsOwotICAgICAgICAgICAgaWYoIHByZXZfZC5fdHlwZSA9PSAnY2F0YWxvZycpIHsK LSAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAg ICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAg ICAgIGkgPSB0Lmhhc1BhcmVudChpKSA/IHQucGFyZW50KGkpIDogbnVsbDsKLSAgICAgICAgICBk ID0gaSA/IHQuaXRlbURhdGEoaSkgOiBudWxsOwotICAgICAgICB9Ci0gICAgICAgIC8vIGJ5IGRl ZmF1bHQgd2UgZG8gbm90IHdhbnQgdG8gYWxsb3cgY3JlYXRlIG1lbnUKLSAgICAgICAgcmV0dXJu IHRydWU7Ci0gICAgICB9LAogICAgIH0pOwogICB9CiAKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z0c19kaWN0 aW9uYXJpZXMvc3RhdGljL2pzL2Z0c19kaWN0aW9uYXJ5LmpzIGIvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnRzX2RpY3Rpb25hcmll cy9zdGF0aWMvanMvZnRzX2RpY3Rpb25hcnkuanMKaW5kZXggZWQ4M2ZlYjEuLmNmNzMzOTIyIDEw MDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy9mdHNfZGljdGlvbmFyaWVzL3N0YXRpYy9qcy9mdHNfZGljdGlvbmFyeS5q cworKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy9mdHNfZGljdGlvbmFyaWVzL3N0YXRpYy9qcy9mdHNfZGljdGlvbmFyeS5qcwpA QCAtMSw4ICsxLDEwIEBACiBkZWZpbmUoJ3BnYWRtaW4ubm9kZS5mdHNfZGljdGlvbmFyeScsIFsK ICAgJ3NvdXJjZXMvZ2V0dGV4dCcsICdzb3VyY2VzL3VybF9mb3InLCAnanF1ZXJ5JywgJ3VuZGVy c2NvcmUnLAogICAndW5kZXJzY29yZS5zdHJpbmcnLCAnc291cmNlcy9wZ2FkbWluJywgJ3BnYWRt aW4uYnJvd3NlcicsICdwZ2FkbWluLmJhY2tmb3JtJywKLSAgJ3BnYWRtaW4uYnJvd3Nlci5jb2xs ZWN0aW9uJywKLV0sIGZ1bmN0aW9uKGdldHRleHQsIHVybF9mb3IsICQsIF8sIFMsIHBnQWRtaW4s IHBnQnJvd3NlciwgQmFja2Zvcm0pIHsKKyAgJ3BnYWRtaW4ubm9kZS5zY2hlbWEuZGlyL2NoaWxk JywgJ3BnYWRtaW4uYnJvd3Nlci5jb2xsZWN0aW9uJywKK10sIGZ1bmN0aW9uKAorICBnZXR0ZXh0 LCB1cmxfZm9yLCAkLCBfLCBTLCBwZ0FkbWluLCBwZ0Jyb3dzZXIsIEJhY2tmb3JtLCBzY2hlbWFD aGlsZAorKSB7CiAKICAgLy8gRXh0ZW5kIHRoZSBicm93c2VyJ3Mgbm9kZSBtb2RlbCBjbGFzcyB0 byBjcmVhdGUgYSBvcHRpb24vdmFsdWUgcGFpcgogICB2YXIgT3B0aW9uTGFiZWxNb2RlbCA9IHBn QWRtaW4uQnJvd3Nlci5Ob2RlLk1vZGVsLmV4dGVuZCh7CkBAIC01NSwxNCArNTcsMTEgQEAgZGVm aW5lKCdwZ2FkbWluLm5vZGUuZnRzX2RpY3Rpb25hcnknLCBbCiAKICAgLy8gRXh0ZW5kIHRoZSBu b2RlIGNsYXNzIGZvciBGVFMgRGljdGlvbmFyeQogICBpZiAoIXBnQnJvd3Nlci5Ob2Rlc1snZnRz X2RpY3Rpb25hcnknXSkgewotICAgIHBnQWRtaW4uQnJvd3Nlci5Ob2Rlc1snZnRzX2RpY3Rpb25h cnknXSA9IHBnQWRtaW4uQnJvd3Nlci5Ob2RlLmV4dGVuZCh7Ci0gICAgICBwYXJlbnRfdHlwZTog WydzY2hlbWEnLCAnY2F0YWxvZyddLAorICAgIHBnQWRtaW4uQnJvd3Nlci5Ob2Rlc1snZnRzX2Rp Y3Rpb25hcnknXSA9IHNjaGVtYUNoaWxkLlNjaGVtYUNoaWxkTm9kZS5leHRlbmQoewogICAgICAg dHlwZTogJ2Z0c19kaWN0aW9uYXJ5JywKICAgICAgIHNxbEFsdGVySGVscDogJ3NxbC1hbHRlcnRz ZGljdGlvbmFyeS5odG1sJywKICAgICAgIHNxbENyZWF0ZUhlbHA6ICdzcWwtY3JlYXRldHNkaWN0 aW9uYXJ5Lmh0bWwnLAogICAgICAgZGlhbG9nSGVscDogdXJsX2ZvcignaGVscC5zdGF0aWMnLCB7 J2ZpbGVuYW1lJzogJ2Z0c19kaWN0aW9uYXJ5X2RpYWxvZy5odG1sJ30pLAotICAgICAgY2FuRHJv cDogdHJ1ZSwKLSAgICAgIGNhbkRyb3BDYXNjYWRlOiB0cnVlLAogICAgICAgbGFiZWw6IGdldHRl eHQoJ0ZUUyBEaWN0aW9uYXJ5JyksCiAgICAgICBoYXNTUUw6IHRydWUsCiAgICAgICBoYXNEZXBl bmRzOiB0cnVlLApAQCAtMTg2LDM0ICsxODUsNiBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS5mdHNf ZGljdGlvbmFyeScsIFsKICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgfSwKICAgICAg IH0pLAotICAgICAgY2FuQ3JlYXRlOiBmdW5jdGlvbihpdGVtRGF0YSwgaXRlbSwgZGF0YSkgewot ICAgICAgICAvL0lmIGNoZWNrIGlzIGZhbHNlIHRoZW4gLCB3ZSB3aWxsIGFsbG93IGNyZWF0ZSBt ZW51Ci0gICAgICAgIGlmIChkYXRhICYmIGRhdGEuY2hlY2sgPT0gZmFsc2UpCi0gICAgICAgICAg cmV0dXJuIHRydWU7Ci0KLSAgICAgICAgdmFyIHQgPSBwZ0Jyb3dzZXIudHJlZSwgaSA9IGl0ZW0s IGQgPSBpdGVtRGF0YTsKLSAgICAgICAgLy8gVG8gaXRlcmF0ZSBvdmVyIHRyZWUgdG8gY2hlY2sg cGFyZW50IG5vZGUKLSAgICAgICAgd2hpbGUgKGkpIHsKLSAgICAgICAgICAvLyBJZiBpdCBpcyBz Y2hlbWEgdGhlbiBhbGxvdyB1c2VyIHRvIGNyZWF0ZSBmdHMgZGljdGlvbmFyeQotICAgICAgICAg IGlmIChfLmluZGV4T2YoWydzY2hlbWEnXSwgZC5fdHlwZSkgPiAtMSkKLSAgICAgICAgICAgIHJl dHVybiB0cnVlOwotCi0gICAgICAgICAgaWYgKCdjb2xsLWZ0c19kaWN0aW9uYXJ5JyA9PSBkLl90 eXBlKSB7Ci0gICAgICAgICAgICAvL0NoZWNrIGlmIHdlIGFyZSBub3QgY2hpbGQgb2YgY2F0YWxv ZwotICAgICAgICAgICAgdmFyIHByZXZfaSA9IHQuaGFzUGFyZW50KGkpID8gdC5wYXJlbnQoaSkg OiBudWxsLAotICAgICAgICAgICAgICBwcmV2X2QgPSBwcmV2X2kgPyB0Lml0ZW1EYXRhKHByZXZf aSkgOiBudWxsOwotICAgICAgICAgICAgaWYoIHByZXZfZC5fdHlwZSA9PSAnY2F0YWxvZycpIHsK LSAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAg ICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAg ICAgIGkgPSB0Lmhhc1BhcmVudChpKSA/IHQucGFyZW50KGkpIDogbnVsbDsKLSAgICAgICAgICBk ID0gaSA/IHQuaXRlbURhdGEoaSkgOiBudWxsOwotICAgICAgICB9Ci0gICAgICAgIC8vIGJ5IGRl ZmF1bHQgd2UgZG8gbm90IHdhbnQgdG8gYWxsb3cgY3JlYXRlIG1lbnUKLSAgICAgICAgcmV0dXJu IHRydWU7Ci0gICAgICB9LAogICAgIH0pOwogICB9CiAKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z0c19wYXJz ZXIvc3RhdGljL2pzL2Z0c19wYXJzZXIuanMgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdHNfcGFyc2VyL3N0YXRpYy9qcy9mdHNf cGFyc2VyLmpzCmluZGV4IDkyYzA3ODZlLi5iZWJjOWRjNSAxMDA2NDQKLS0tIGEvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnRzX3Bh cnNlci9zdGF0aWMvanMvZnRzX3BhcnNlci5qcworKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdHNfcGFyc2VyL3N0YXRpYy9q cy9mdHNfcGFyc2VyLmpzCkBAIC0xLDcgKzEsOCBAQAogZGVmaW5lKCdwZ2FkbWluLm5vZGUuZnRz X3BhcnNlcicsIFsKICAgJ3NvdXJjZXMvZ2V0dGV4dCcsICdzb3VyY2VzL3VybF9mb3InLCAnanF1 ZXJ5JywgJ3VuZGVyc2NvcmUnLAotICAnc291cmNlcy9wZ2FkbWluJywgJ3BnYWRtaW4uYnJvd3Nl cicsICdwZ2FkbWluLmJyb3dzZXIuY29sbGVjdGlvbicsCi1dLCBmdW5jdGlvbihnZXR0ZXh0LCB1 cmxfZm9yLCAkLCBfLCBwZ0FkbWluLCBwZ0Jyb3dzZXIpIHsKKyAgJ3NvdXJjZXMvcGdhZG1pbics ICdwZ2FkbWluLmJyb3dzZXInLCAncGdhZG1pbi5ub2RlLnNjaGVtYS5kaXIvY2hpbGQnLAorICAn cGdhZG1pbi5icm93c2VyLmNvbGxlY3Rpb24nLAorXSwgZnVuY3Rpb24oZ2V0dGV4dCwgdXJsX2Zv ciwgJCwgXywgcGdBZG1pbiwgcGdCcm93c2VyLCBzY2hlbWFDaGlsZCkgewogCiAgIC8vIEV4dGVu ZCB0aGUgY29sbGVjdGlvbiBjbGFzcyBmb3IgZnRzIHBhcnNlcgogICBpZiAoIXBnQnJvd3Nlci5O b2Rlc1snY29sbC1mdHNfcGFyc2VyJ10pIHsKQEAgLTE2LDE0ICsxNywxMSBAQCBkZWZpbmUoJ3Bn YWRtaW4ubm9kZS5mdHNfcGFyc2VyJywgWwogCiAgIC8vIEV4dGVuZCB0aGUgbm9kZSBjbGFzcyBm b3IgZnRzIHBhcnNlcgogICBpZiAoIXBnQnJvd3Nlci5Ob2Rlc1snZnRzX3BhcnNlciddKSB7Ci0g ICAgcGdBZG1pbi5Ccm93c2VyLk5vZGVzWydmdHNfcGFyc2VyJ10gPSBwZ0FkbWluLkJyb3dzZXIu Tm9kZS5leHRlbmQoewotICAgICAgcGFyZW50X3R5cGU6IFsnc2NoZW1hJywgJ2NhdGFsb2cnXSwK KyAgICBwZ0FkbWluLkJyb3dzZXIuTm9kZXNbJ2Z0c19wYXJzZXInXSA9IHNjaGVtYUNoaWxkLlNj aGVtYUNoaWxkTm9kZS5leHRlbmQoewogICAgICAgdHlwZTogJ2Z0c19wYXJzZXInLAogICAgICAg c3FsQWx0ZXJIZWxwOiAnc3FsLWFsdGVydHNwYXJzZXIuaHRtbCcsCiAgICAgICBzcWxDcmVhdGVI ZWxwOiAnc3FsLWNyZWF0ZXRzcGFyc2VyLmh0bWwnLAogICAgICAgZGlhbG9nSGVscDogdXJsX2Zv cignaGVscC5zdGF0aWMnLCB7J2ZpbGVuYW1lJzogJ2Z0c19wYXJzZXJfZGlhbG9nLmh0bWwnfSks Ci0gICAgICBjYW5Ecm9wOiB0cnVlLAotICAgICAgY2FuRHJvcENhc2NhZGU6IHRydWUsCiAgICAg ICBsYWJlbDogZ2V0dGV4dCgnRlRTIFBhcnNlcicpLAogICAgICAgaGFzU1FMOiB0cnVlLAogICAg ICAgaGFzRGVwZW5kczogdHJ1ZSwKQEAgLTE5OSwzNCArMTk3LDYgQEAgZGVmaW5lKCdwZ2FkbWlu Lm5vZGUuZnRzX3BhcnNlcicsIFsKICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgfSwK ICAgICAgIH0pLAotICAgICAgY2FuQ3JlYXRlOiBmdW5jdGlvbihpdGVtRGF0YSwgaXRlbSwgZGF0 YSkgewotICAgICAgICAvL0lmIGNoZWNrIGlzIGZhbHNlIHRoZW4gLCB3ZSB3aWxsIGFsbG93IGNy ZWF0ZSBtZW51Ci0gICAgICAgIGlmIChkYXRhICYmIGRhdGEuY2hlY2sgPT0gZmFsc2UpCi0gICAg ICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAgICAgdmFyIHQgPSBwZ0Jyb3dzZXIudHJlZSwgaSA9 IGl0ZW0sIGQgPSBpdGVtRGF0YTsKLSAgICAgICAgLy8gVG8gaXRlcmF0ZSBvdmVyIHRyZWUgdG8g Y2hlY2sgcGFyZW50IG5vZGUKLSAgICAgICAgd2hpbGUgKGkpIHsKLSAgICAgICAgICAvLyBJZiBp dCBpcyBzY2hlbWEgdGhlbiBhbGxvdyB1c2VyIHRvIGNyZWF0ZSBmdHMgcGFyc2VyCi0gICAgICAg ICAgaWYgKF8uaW5kZXhPZihbJ3NjaGVtYSddLCBkLl90eXBlKSA+IC0xKQotICAgICAgICAgICAg cmV0dXJuIHRydWU7Ci0KLSAgICAgICAgICBpZiAoJ2NvbGwtZnRzX3BhcnNlcicgPT0gZC5fdHlw ZSkgewotICAgICAgICAgICAgLy9DaGVjayBpZiB3ZSBhcmUgbm90IGNoaWxkIG9mIGNhdGFsb2cK LSAgICAgICAgICAgIHZhciBwcmV2X2kgPSB0Lmhhc1BhcmVudChpKSA/IHQucGFyZW50KGkpIDog bnVsbCwKLSAgICAgICAgICAgICAgcHJldl9kID0gcHJldl9pID8gdC5pdGVtRGF0YShwcmV2X2kp IDogbnVsbDsKLSAgICAgICAgICAgIGlmKCBwcmV2X2QuX3R5cGUgPT0gJ2NhdGFsb2cnKSB7Ci0g ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg ICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAg ICBpID0gdC5oYXNQYXJlbnQoaSkgPyB0LnBhcmVudChpKSA6IG51bGw7Ci0gICAgICAgICAgZCA9 IGkgPyB0Lml0ZW1EYXRhKGkpIDogbnVsbDsKLSAgICAgICAgfQotICAgICAgICAvLyBieSBkZWZh dWx0IHdlIGRvIG5vdCB3YW50IHRvIGFsbG93IGNyZWF0ZSBtZW51Ci0gICAgICAgIHJldHVybiB0 cnVlOwotICAgICAgfSwKICAgICB9KTsKICAgfQogCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdHNfdGVtcGxh dGVzL3N0YXRpYy9qcy9mdHNfdGVtcGxhdGUuanMgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdHNfdGVtcGxhdGVzL3N0YXRpYy9q cy9mdHNfdGVtcGxhdGUuanMKaW5kZXggNjA2YTU3YTYuLmNkMDIwN2FiIDEwMDY0NAotLS0gYS93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy9mdHNfdGVtcGxhdGVzL3N0YXRpYy9qcy9mdHNfdGVtcGxhdGUuanMKKysrIGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnRzX3Rl bXBsYXRlcy9zdGF0aWMvanMvZnRzX3RlbXBsYXRlLmpzCkBAIC0xLDcgKzEsOCBAQAogZGVmaW5l KCdwZ2FkbWluLm5vZGUuZnRzX3RlbXBsYXRlJywgWwogICAnc291cmNlcy9nZXR0ZXh0JywgJ3Nv dXJjZXMvdXJsX2ZvcicsICdqcXVlcnknLCAndW5kZXJzY29yZScsCi0gICdzb3VyY2VzL3BnYWRt aW4nLCAncGdhZG1pbi5icm93c2VyJywgJ3BnYWRtaW4uYnJvd3Nlci5jb2xsZWN0aW9uJywKLV0s IGZ1bmN0aW9uKGdldHRleHQsIHVybF9mb3IsICQsIF8sIHBnQWRtaW4sIHBnQnJvd3Nlcikgewor ICAnc291cmNlcy9wZ2FkbWluJywgJ3BnYWRtaW4uYnJvd3NlcicsICdwZ2FkbWluLm5vZGUuc2No ZW1hLmRpci9jaGlsZCcsCisgICdwZ2FkbWluLmJyb3dzZXIuY29sbGVjdGlvbicsCitdLCBmdW5j dGlvbihnZXR0ZXh0LCB1cmxfZm9yLCAkLCBfLCBwZ0FkbWluLCBwZ0Jyb3dzZXIsIHNjaGVtYUNo aWxkKSB7CiAKICAgLy8gRXh0ZW5kIHRoZSBjb2xsZWN0aW9uIGNsYXNzIGZvciBmdHMgdGVtcGxh dGUKICAgaWYgKCFwZ0Jyb3dzZXIuTm9kZXNbJ2NvbGwtZnRzX3RlbXBsYXRlJ10pIHsKQEAgLTE2 LDE0ICsxNywxMSBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS5mdHNfdGVtcGxhdGUnLCBbCiAKICAg Ly8gRXh0ZW5kIHRoZSBub2RlIGNsYXNzIGZvciBmdHMgdGVtcGxhdGUKICAgaWYgKCFwZ0Jyb3dz ZXIuTm9kZXNbJ2Z0c190ZW1wbGF0ZSddKSB7Ci0gICAgcGdBZG1pbi5Ccm93c2VyLk5vZGVzWydm dHNfdGVtcGxhdGUnXSA9IHBnQWRtaW4uQnJvd3Nlci5Ob2RlLmV4dGVuZCh7Ci0gICAgICBwYXJl bnRfdHlwZTogWydzY2hlbWEnLCAnY2F0YWxvZyddLAorICAgIHBnQWRtaW4uQnJvd3Nlci5Ob2Rl c1snZnRzX3RlbXBsYXRlJ10gPSBzY2hlbWFDaGlsZC5TY2hlbWFDaGlsZE5vZGUuZXh0ZW5kKHsK ICAgICAgIHR5cGU6ICdmdHNfdGVtcGxhdGUnLAogICAgICAgc3FsQWx0ZXJIZWxwOiAnc3FsLWFs dGVydHN0ZW1wbGF0ZS5odG1sJywKICAgICAgIHNxbENyZWF0ZUhlbHA6ICdzcWwtY3JlYXRldHN0 ZW1wbGF0ZS5odG1sJywKICAgICAgIGRpYWxvZ0hlbHA6IHVybF9mb3IoJ2hlbHAuc3RhdGljJywg eydmaWxlbmFtZSc6ICdmdHNfdGVtcGxhdGVfZGlhbG9nLmh0bWwnfSksCi0gICAgICBjYW5Ecm9w OiB0cnVlLAotICAgICAgY2FuRHJvcENhc2NhZGU6IHRydWUsCiAgICAgICBsYWJlbDogZ2V0dGV4 dCgnRlRTIFRlbXBsYXRlJyksCiAgICAgICBoYXNTUUw6IHRydWUsCiAgICAgICBoYXNEZXBlbmRz OiB0cnVlLApAQCAtMTM5LDM0ICsxMzcsNiBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS5mdHNfdGVt cGxhdGUnLCBbCiAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgIH0sCiAgICAgICB9KSwK LSAgICAgIGNhbkNyZWF0ZTogZnVuY3Rpb24oaXRlbURhdGEsIGl0ZW0sIGRhdGEpIHsKLSAgICAg ICAgLy9JZiBjaGVjayBpcyBmYWxzZSB0aGVuICwgd2Ugd2lsbCBhbGxvdyBjcmVhdGUgbWVudQot ICAgICAgICBpZiAoZGF0YSAmJiBkYXRhLmNoZWNrID09IGZhbHNlKQotICAgICAgICAgIHJldHVy biB0cnVlOwotCi0gICAgICAgIHZhciB0ID0gcGdCcm93c2VyLnRyZWUsIGkgPSBpdGVtLCBkID0g aXRlbURhdGE7Ci0gICAgICAgIC8vIFRvIGl0ZXJhdGUgb3ZlciB0cmVlIHRvIGNoZWNrIHBhcmVu dCBub2RlCi0gICAgICAgIHdoaWxlIChpKSB7Ci0gICAgICAgICAgLy8gSWYgaXQgaXMgc2NoZW1h IHRoZW4gYWxsb3cgdXNlciB0byBjcmVhdGUgZnRzIGZ0c190ZW1wbGF0ZQotICAgICAgICAgIGlm IChfLmluZGV4T2YoWydzY2hlbWEnXSwgZC5fdHlwZSkgPiAtMSkKLSAgICAgICAgICAgIHJldHVy biB0cnVlOwotCi0gICAgICAgICAgaWYgKCdjb2xsLWZ0c190ZW1wbGF0ZScgPT0gZC5fdHlwZSkg ewotICAgICAgICAgICAgLy9DaGVjayBpZiB3ZSBhcmUgbm90IGNoaWxkIG9mIGNhdGFsb2cKLSAg ICAgICAgICAgIHZhciBwcmV2X2kgPSB0Lmhhc1BhcmVudChpKSA/IHQucGFyZW50KGkpIDogbnVs bCwKLSAgICAgICAgICAgICAgcHJldl9kID0gcHJldl9pID8gdC5pdGVtRGF0YShwcmV2X2kpIDog bnVsbDsKLSAgICAgICAgICAgIGlmKCBwcmV2X2QuX3R5cGUgPT0gJ2NhdGFsb2cnKSB7Ci0gICAg ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg ICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgICBp ID0gdC5oYXNQYXJlbnQoaSkgPyB0LnBhcmVudChpKSA6IG51bGw7Ci0gICAgICAgICAgZCA9IGkg PyB0Lml0ZW1EYXRhKGkpIDogbnVsbDsKLSAgICAgICAgfQotICAgICAgICAvLyBieSBkZWZhdWx0 IHdlIGRvIG5vdCB3YW50IHRvIGFsbG93IGNyZWF0ZSBtZW51Ci0gICAgICAgIHJldHVybiB0cnVl OwotICAgICAgfSwKICAgICB9KTsKICAgfQogCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdW5jdGlvbnMvc3Rh dGljL2pzL2Z1bmN0aW9uLmpzIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnVuY3Rpb25zL3N0YXRpYy9qcy9mdW5jdGlvbi5qcwpp bmRleCA2ZTQwNTE2NS4uYzRjZDkxYWEgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z1bmN0aW9ucy9zdGF0aWMv anMvZnVuY3Rpb24uanMKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnVuY3Rpb25zL3N0YXRpYy9qcy9mdW5jdGlvbi5qcwpA QCAtMiw4ICsyLDExIEBACiBkZWZpbmUoJ3BnYWRtaW4ubm9kZS5mdW5jdGlvbicsIFsKICAgJ3Nv dXJjZXMvZ2V0dGV4dCcsICdzb3VyY2VzL3VybF9mb3InLCAnanF1ZXJ5JywgJ3VuZGVyc2NvcmUn LCAnYmFja2JvbmUnLAogICAnc291cmNlcy9wZ2FkbWluJywgJ3BnYWRtaW4uYnJvd3NlcicsICdw Z2FkbWluLmJhY2tmb3JtJywKLSAgJ3BnYWRtaW4uYnJvd3Nlci5jb2xsZWN0aW9uJywgJ3BnYWRt aW4uYnJvd3Nlci5zZXJ2ZXIucHJpdmlsZWdlJywKLV0sIGZ1bmN0aW9uKGdldHRleHQsIHVybF9m b3IsICQsIF8sIEJhY2tib25lLCBwZ0FkbWluLCBwZ0Jyb3dzZXIsIEJhY2tmb3JtKSB7CisgICdw Z2FkbWluLm5vZGUuc2NoZW1hLmRpci9jaGlsZCcsICdwZ2FkbWluLmJyb3dzZXIuY29sbGVjdGlv bicsCisgICdwZ2FkbWluLmJyb3dzZXIuc2VydmVyLnByaXZpbGVnZScsCitdLCBmdW5jdGlvbigK KyAgZ2V0dGV4dCwgdXJsX2ZvciwgJCwgXywgQmFja2JvbmUsIHBnQWRtaW4sIHBnQnJvd3Nlciwg QmFja2Zvcm0sIHNjaGVtYUNoaWxkCispIHsKIAogICBpZiAoIXBnQnJvd3Nlci5Ob2Rlc1snY29s bC1mdW5jdGlvbiddKSB7CiAgICAgcGdCcm93c2VyLk5vZGVzWydjb2xsLWZ1bmN0aW9uJ10gPQpA QCAtODMsNyArODYsOCBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS5mdW5jdGlvbicsIFsKICAgfSk7 CiAKICAgaWYgKCFwZ0Jyb3dzZXIuTm9kZXNbJ2Z1bmN0aW9uJ10pIHsKLSAgICBwZ0Jyb3dzZXIu Tm9kZXNbJ2Z1bmN0aW9uJ10gPSBwZ0Jyb3dzZXIuTm9kZS5leHRlbmQoeworCisgICAgcGdCcm93 c2VyLk5vZGVzWydmdW5jdGlvbiddID0gc2NoZW1hQ2hpbGQuU2NoZW1hQ2hpbGROb2RlLmV4dGVu ZCh7CiAgICAgICB0eXBlOiAnZnVuY3Rpb24nLAogICAgICAgc3FsQWx0ZXJIZWxwOiAnc3FsLWFs dGVyZnVuY3Rpb24uaHRtbCcsCiAgICAgICBzcWxDcmVhdGVIZWxwOiAnc3FsLWNyZWF0ZWZ1bmN0 aW9uLmh0bWwnLApAQCAtOTYsNyArMTAwLDYgQEAgZGVmaW5lKCdwZ2FkbWluLm5vZGUuZnVuY3Rp b24nLCBbCiAgICAgICAgIHJldHVybiB0cmVlSW5mb3JtYXRpb24uc2VydmVyLnNlcnZlcl90eXBl ICE9PSAnZ3BkYic7CiAgICAgICB9LAogICAgICAgaGFzU2NyaXB0VHlwZXM6IFsnY3JlYXRlJywg J3NlbGVjdCddLAotICAgICAgcGFyZW50X3R5cGU6IFsnc2NoZW1hJywgJ2NhdGFsb2cnXSwKICAg ICAgIEluaXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAvKiBBdm9pZCBtdWxpdHBsZSByZWdpc3Ry YXRpb24gb2YgbWVudXMgKi8KICAgICAgICAgaWYgKHRoaXMuaW5pdGlhbGl6ZWQpCkBAIC0xMjYs OCArMTI5LDYgQEAgZGVmaW5lKCdwZ2FkbWluLm5vZGUuZnVuY3Rpb24nLCBbCiAgICAgICAgIF0p OwogCiAgICAgICB9LAotICAgICAgY2FuRHJvcDogcGdCcm93c2VyLk5vZGVzWydzY2hlbWEnXS5j YW5DaGlsZERyb3AsCi0gICAgICBjYW5Ecm9wQ2FzY2FkZTogcGdCcm93c2VyLk5vZGVzWydzY2hl bWEnXS5jYW5DaGlsZERyb3AsCiAgICAgICBtb2RlbDogcGdCcm93c2VyLk5vZGUuTW9kZWwuZXh0 ZW5kKHsKICAgICAgICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24oYXR0cnMsIGFyZ3MpIHsKICAgICAg ICAgICB2YXIgaXNOZXcgPSAoXy5zaXplKGF0dHJzKSA9PT0gMCk7CkBAIC00MzgsMzQgKzQzOSw2 IEBAIGRlZmluZSgncGdhZG1pbi5ub2RlLmZ1bmN0aW9uJywgWwogICAgICAgICAgIHJldHVybiB0 cnVlOwogICAgICAgICB9LAogICAgICAgfSksCi0gICAgICBjYW5DcmVhdGU6IGZ1bmN0aW9uKGl0 ZW1EYXRhLCBpdGVtLCBkYXRhKSB7Ci0gICAgICAgIC8vSWYgY2hlY2sgaXMgZmFsc2UgdGhlbiAs IHdlIHdpbGwgYWxsb3cgY3JlYXRlIG1lbnUKLSAgICAgICAgaWYgKGRhdGEgJiYgZGF0YS5jaGVj ayA9PSBmYWxzZSkKLSAgICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgICAgICB2YXIgdCA9IHBn QnJvd3Nlci50cmVlLCBpID0gaXRlbSwgZCA9IGl0ZW1EYXRhOwotICAgICAgICAvLyBUbyBpdGVy YXRlIG92ZXIgdHJlZSB0byBjaGVjayBwYXJlbnQgbm9kZQotICAgICAgICB3aGlsZSAoaSkgewot ICAgICAgICAgIC8vIElmIGl0IGlzIHNjaGVtYSB0aGVuIGFsbG93IHVzZXIgdG8gY3JlYXRlIEZ1 bmN0aW9uCi0gICAgICAgICAgaWYgKF8uaW5kZXhPZihbJ3NjaGVtYSddLCBkLl90eXBlKSA+IC0x KQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAgICAgICBpZiAoJ2NvbGwtZnVuY3Rp b24nID09IGQuX3R5cGUpIHsKLSAgICAgICAgICAgIC8vQ2hlY2sgaWYgd2UgYXJlIG5vdCBjaGls ZCBvZiBjYXRhbG9nCi0gICAgICAgICAgICB2YXIgcHJldl9pID0gdC5oYXNQYXJlbnQoaSkgPyB0 LnBhcmVudChpKSA6IG51bGwsCi0gICAgICAgICAgICAgIHByZXZfZCA9IHByZXZfaSA/IHQuaXRl bURhdGEocHJldl9pKSA6IG51bGw7Ci0gICAgICAgICAgICBpZiggcHJldl9kLl90eXBlID09ICdj YXRhbG9nJykgewotICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9IGVs c2UgewotICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg ICB9Ci0gICAgICAgICAgaSA9IHQuaGFzUGFyZW50KGkpID8gdC5wYXJlbnQoaSkgOiBudWxsOwot ICAgICAgICAgIGQgPSBpID8gdC5pdGVtRGF0YShpKSA6IG51bGw7Ci0gICAgICAgIH0KLSAgICAg ICAgLy8gYnkgZGVmYXVsdCB3ZSBkbyBub3Qgd2FudCB0byBhbGxvdyBjcmVhdGUgbWVudQotICAg ICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIH0sCiAgICAgfSk7CiAKICAgfQpkaWZmIC0tZ2l0IGEv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvZnVuY3Rpb25zL3N0YXRpYy9qcy90cmlnZ2VyX2Z1bmN0aW9uLmpzIGIvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnVuY3Rpb25z L3N0YXRpYy9qcy90cmlnZ2VyX2Z1bmN0aW9uLmpzCmluZGV4IGFlYjgyNzFiLi5mY2RmMjhmYiAx MDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvZnVuY3Rpb25zL3N0YXRpYy9qcy90cmlnZ2VyX2Z1bmN0aW9uLmpzCisr KyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL2Z1bmN0aW9ucy9zdGF0aWMvanMvdHJpZ2dlcl9mdW5jdGlvbi5qcwpAQCAtMiw4ICsy LDExIEBACiBkZWZpbmUoJ3BnYWRtaW4ubm9kZS50cmlnZ2VyX2Z1bmN0aW9uJywgWwogICAnc291 cmNlcy9nZXR0ZXh0JywgJ3NvdXJjZXMvdXJsX2ZvcicsICdqcXVlcnknLCAndW5kZXJzY29yZScs CiAgICdzb3VyY2VzL3BnYWRtaW4nLCAncGdhZG1pbi5icm93c2VyJywgJ3BnYWRtaW4uYmFja2Zv cm0nLAotICAncGdhZG1pbi5icm93c2VyLmNvbGxlY3Rpb24nLCAncGdhZG1pbi5icm93c2VyLnNl cnZlci5wcml2aWxlZ2UnLAotXSwgZnVuY3Rpb24oZ2V0dGV4dCwgdXJsX2ZvciwgJCwgXywgcGdB ZG1pbiwgcGdCcm93c2VyLCBCYWNrZm9ybSkgeworICAncGdhZG1pbi5ub2RlLnNjaGVtYS5kaXIv Y2hpbGQnLCAncGdhZG1pbi5icm93c2VyLmNvbGxlY3Rpb24nLAorICAncGdhZG1pbi5icm93c2Vy LnNlcnZlci5wcml2aWxlZ2UnLAorXSwgZnVuY3Rpb24oCisgIGdldHRleHQsIHVybF9mb3IsICQs IF8sIHBnQWRtaW4sIHBnQnJvd3NlciwgQmFja2Zvcm0sIHNjaGVtYUNoaWxkCispIHsKIAogICBp ZiAoIXBnQnJvd3Nlci5Ob2Rlc1snY29sbC10cmlnZ2VyX2Z1bmN0aW9uJ10pIHsKICAgICBwZ0Jy b3dzZXIuTm9kZXNbJ2NvbGwtdHJpZ2dlcl9mdW5jdGlvbiddID0KQEAgLTE3LDcgKzIwLDcgQEAg ZGVmaW5lKCdwZ2FkbWluLm5vZGUudHJpZ2dlcl9mdW5jdGlvbicsIFsKICAgfQogCiAgIGlmICgh cGdCcm93c2VyLk5vZGVzWyd0cmlnZ2VyX2Z1bmN0aW9uJ10pIHsKLSAgICBwZ0Jyb3dzZXIuTm9k ZXNbJ3RyaWdnZXJfZnVuY3Rpb24nXSA9IHBnQnJvd3Nlci5Ob2RlLmV4dGVuZCh7CisgICAgcGdC cm93c2VyLk5vZGVzWyd0cmlnZ2VyX2Z1bmN0aW9uJ10gPSBzY2hlbWFDaGlsZC5TY2hlbWFDaGls ZE5vZGUuZXh0ZW5kKHsKICAgICAgIHR5cGU6ICd0cmlnZ2VyX2Z1bmN0aW9uJywKICAgICAgIHNx bEFsdGVySGVscDogJ3BscGdzcWwtdHJpZ2dlci5odG1sJywKICAgICAgIHNxbENyZWF0ZUhlbHA6 ICdwbHBnc3FsLXRyaWdnZXIuaHRtbCcsCkBAIC0yNyw3ICszMCw2IEBAIGRlZmluZSgncGdhZG1p bi5ub2RlLnRyaWdnZXJfZnVuY3Rpb24nLCBbCiAgICAgICBoYXNTUUw6IHRydWUsCiAgICAgICBo YXNEZXBlbmRzOiB0cnVlLAogICAgICAgaGFzU3RhdGlzdGljczogdHJ1ZSwKLSAgICAgIHBhcmVu dF90eXBlOiBbJ3NjaGVtYScsICdjYXRhbG9nJ10sCiAgICAgICBJbml0OiBmdW5jdGlvbigpIHsK ICAgICAgICAgLyogQXZvaWQgbXVsaXRwbGUgcmVnaXN0cmF0aW9uIG9mIG1lbnVzICovCiAgICAg ICAgIGlmICh0aGlzLmluaXRpYWxpemVkKQpAQCAtNTcsOCArNTksNiBAQCBkZWZpbmUoJ3BnYWRt aW4ubm9kZS50cmlnZ2VyX2Z1bmN0aW9uJywgWwogICAgICAgICBdKTsKIAogICAgICAgfSwKLSAg ICAgIGNhbkRyb3A6IHBnQnJvd3Nlci5Ob2Rlc1snc2NoZW1hJ10uY2FuQ2hpbGREcm9wLAotICAg ICAgY2FuRHJvcENhc2NhZGU6IHBnQnJvd3Nlci5Ob2Rlc1snc2NoZW1hJ10uY2FuQ2hpbGREcm9w LAogICAgICAgbW9kZWw6IHBnQnJvd3Nlci5Ob2RlLk1vZGVsLmV4dGVuZCh7CiAgICAgICAgIGlu aXRpYWxpemU6IGZ1bmN0aW9uKGF0dHJzLCBhcmdzKSB7CiAgICAgICAgICAgdmFyIGlzTmV3ID0g KF8uc2l6ZShhdHRycykgPT09IDApOwpAQCAtMzU3LDM0ICszNTcsNiBAQCBkZWZpbmUoJ3BnYWRt aW4ubm9kZS50cmlnZ2VyX2Z1bmN0aW9uJywgWwogICAgICAgICAgIHJldHVybiAhKHRoaXMubm9k ZV9pbmZvICYmICAnY2F0YWxvZycgaW4gdGhpcy5ub2RlX2luZm8pOwogICAgICAgICB9LAogICAg ICAgfSksCi0gICAgICBjYW5DcmVhdGU6IGZ1bmN0aW9uKGl0ZW1EYXRhLCBpdGVtLCBkYXRhKSB7 Ci0gICAgICAgIC8vSWYgY2hlY2sgaXMgZmFsc2UgdGhlbiAsIHdlIHdpbGwgYWxsb3cgY3JlYXRl IG1lbnUKLSAgICAgICAgaWYgKGRhdGEgJiYgZGF0YS5jaGVjayA9PSBmYWxzZSkKLSAgICAgICAg ICByZXR1cm4gdHJ1ZTsKLQotICAgICAgICB2YXIgdCA9IHBnQnJvd3Nlci50cmVlLCBpID0gaXRl bSwgZCA9IGl0ZW1EYXRhOwotICAgICAgICAvLyBUbyBpdGVyYXRlIG92ZXIgdHJlZSB0byBjaGVj ayBwYXJlbnQgbm9kZQotICAgICAgICB3aGlsZSAoaSkgewotICAgICAgICAgIC8vIElmIGl0IGlz IHNjaGVtYSB0aGVuIGFsbG93IHVzZXIgdG8gY3JlYXRlIEZ1bmN0aW9uCi0gICAgICAgICAgaWYg KF8uaW5kZXhPZihbJ3NjaGVtYSddLCBkLl90eXBlKSA+IC0xKQotICAgICAgICAgICAgcmV0dXJu IHRydWU7Ci0KLSAgICAgICAgICBpZiAoJ2NvbGwtdHJpZ2dlcl9mdW5jdGlvbicgPT0gZC5fdHlw ZSkgewotICAgICAgICAgICAgLy9DaGVjayBpZiB3ZSBhcmUgbm90IGNoaWxkIG9mIGNhdGFsb2cK LSAgICAgICAgICAgIHZhciBwcmV2X2kgPSB0Lmhhc1BhcmVudChpKSA/IHQucGFyZW50KGkpIDog bnVsbCwKLSAgICAgICAgICAgICAgcHJldl9kID0gcHJldl9pID8gdC5pdGVtRGF0YShwcmV2X2kp IDogbnVsbDsKLSAgICAgICAgICAgIGlmKCBwcmV2X2QuX3R5cGUgPT0gJ2NhdGFsb2cnKSB7Ci0g ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg ICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAg ICBpID0gdC5oYXNQYXJlbnQoaSkgPyB0LnBhcmVudChpKSA6IG51bGw7Ci0gICAgICAgICAgZCA9 IGkgPyB0Lml0ZW1EYXRhKGkpIDogbnVsbDsKLSAgICAgICAgfQotICAgICAgICAvLyBieSBkZWZh dWx0IHdlIGRvIG5vdCB3YW50IHRvIGFsbG93IGNyZWF0ZSBtZW51Ci0gICAgICAgIHJldHVybiB0 cnVlOwotICAgICAgfSwKICAgICB9KTsKIAogICB9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9zZXF1ZW5jZXMv c3RhdGljL2pzL3NlcXVlbmNlLmpzIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvc2VxdWVuY2VzL3N0YXRpYy9qcy9zZXF1ZW5jZS5q cwppbmRleCA1N2M5NWFjZC4uMzAwZjBiMTAgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3NlcXVlbmNlcy9zdGF0 aWMvanMvc2VxdWVuY2UuanMKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvc2VxdWVuY2VzL3N0YXRpYy9qcy9zZXF1ZW5jZS5q cwpAQCAtMSw4ICsxLDEwIEBACiBkZWZpbmUoJ3BnYWRtaW4ubm9kZS5zZXF1ZW5jZScsIFsKICAg J3NvdXJjZXMvZ2V0dGV4dCcsICdzb3VyY2VzL3VybF9mb3InLCAnanF1ZXJ5JywgJ3VuZGVyc2Nv cmUnLAogICAndW5kZXJzY29yZS5zdHJpbmcnLCAnc291cmNlcy9wZ2FkbWluJywgJ3BnYWRtaW4u YnJvd3NlcicsICdwZ2FkbWluLmJhY2tmb3JtJywKLSAgJ3BnYWRtaW4uYnJvd3Nlci5jb2xsZWN0 aW9uJywKLV0sIGZ1bmN0aW9uKGdldHRleHQsIHVybF9mb3IsICQsIF8sIFMsIHBnQWRtaW4sIHBn QnJvd3NlciwgQmFja2Zvcm0pIHsKKyAgJ3BnYWRtaW4ubm9kZS5zY2hlbWEuZGlyL2NoaWxkJywg J3BnYWRtaW4uYnJvd3Nlci5jb2xsZWN0aW9uJywKK10sIGZ1bmN0aW9uKAorICBnZXR0ZXh0LCB1 cmxfZm9yLCAkLCBfLCBTLCBwZ0FkbWluLCBwZ0Jyb3dzZXIsIEJhY2tmb3JtLCBzY2hlbWFDaGls ZAorKSB7CiAKICAgLy8gRXh0ZW5kIHRoZSBicm93c2VyJ3MgY29sbGVjdGlvbiBjbGFzcyBmb3Ig c2VxdWVuY2UgY29sbGVjdGlvbgogICBpZiAoIXBnQnJvd3Nlci5Ob2Rlc1snY29sbC1zZXF1ZW5j ZSddKSB7CkBAIC0xOCw3ICsyMCw3IEBAIGRlZmluZSgncGdhZG1pbi5ub2RlLnNlcXVlbmNlJywg WwogCiAgIC8vIEV4dGVuZCB0aGUgYnJvd3NlcidzIG5vZGUgY2xhc3MgZm9yIHNlcXVlbmNlIG5v ZGUKICAgaWYgKCFwZ0Jyb3dzZXIuTm9kZXNbJ3NlcXVlbmNlJ10pIHsKLSAgICBwZ0Jyb3dzZXIu Tm9kZXNbJ3NlcXVlbmNlJ10gPSBwZ0Jyb3dzZXIuTm9kZS5leHRlbmQoeworICAgIHBnQnJvd3Nl ci5Ob2Rlc1snc2VxdWVuY2UnXSA9IHNjaGVtYUNoaWxkLlNjaGVtYUNoaWxkTm9kZS5leHRlbmQo ewogICAgICAgdHlwZTogJ3NlcXVlbmNlJywKICAgICAgIHNxbEFsdGVySGVscDogJ3NxbC1hbHRl cnNlcXVlbmNlLmh0bWwnLAogICAgICAgc3FsQ3JlYXRlSGVscDogJ3NxbC1jcmVhdGVzZXF1ZW5j ZS5odG1sJywKQEAgLTI4LDcgKzMwLDYgQEAgZGVmaW5lKCdwZ2FkbWluLm5vZGUuc2VxdWVuY2Un LCBbCiAgICAgICBoYXNTUUw6IHRydWUsCiAgICAgICBoYXNEZXBlbmRzOiB0cnVlLAogICAgICAg aGFzU3RhdGlzdGljczogdHJ1ZSwKLSAgICAgIHBhcmVudF90eXBlOiBbJ3NjaGVtYScsICdjYXRh bG9nJ10sCiAgICAgICBJbml0OiBmdW5jdGlvbigpIHsKICAgICAgICAgLyogQXZvaWQgbXVsaXRw bGUgcmVnaXN0cmF0aW9uIG9mIG1lbnVzICovCiAgICAgICAgIGlmICh0aGlzLmluaXRpYWxpemVk KQpAQCAtNTgsMzYgKzU5LDYgQEAgZGVmaW5lKCdwZ2FkbWluLm5vZGUuc2VxdWVuY2UnLCBbCiAg ICAgICAgIF0pOwogCiAgICAgICB9LAotICAgICAgY2FuRHJvcDogcGdCcm93c2VyLk5vZGVzWydz Y2hlbWEnXS5jYW5DaGlsZERyb3AsCi0gICAgICBjYW5Ecm9wQ2FzY2FkZTogcGdCcm93c2VyLk5v ZGVzWydzY2hlbWEnXS5jYW5DaGlsZERyb3AsCi0gICAgICBjYW5DcmVhdGU6IGZ1bmN0aW9uKGl0 ZW1EYXRhLCBpdGVtLCBkYXRhKSB7Ci0gICAgICAgICAgLy9JZiBjaGVjayBpcyBmYWxzZSB0aGVu ICwgd2Ugd2lsbCBhbGxvdyBjcmVhdGUgbWVudQotICAgICAgICBpZiAoZGF0YSAmJiBkYXRhLmNo ZWNrID09IGZhbHNlKQotICAgICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgIHZhciB0ID0g cGdCcm93c2VyLnRyZWUsIGkgPSBpdGVtLCBkID0gaXRlbURhdGE7Ci0gICAgICAgICAgLy8gVG8g aXRlcmF0ZSBvdmVyIHRyZWUgdG8gY2hlY2sgcGFyZW50IG5vZGUKLSAgICAgICAgd2hpbGUgKGkp IHsKLSAgICAgICAgICAgIC8vIElmIGl0IGlzIHNjaGVtYSB0aGVuIGFsbG93IHVzZXIgdG8gY3Jl YXRlIGNvbGxhdGlvbgotICAgICAgICAgIGlmIChfLmluZGV4T2YoWydzY2hlbWEnXSwgZC5fdHlw ZSkgPiAtMSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgICAgaWYgKCdjb2xs LXNlcXVlbmNlJyA9PSBkLl90eXBlKSB7Ci0gICAgICAgICAgICAgIC8vQ2hlY2sgaWYgd2UgYXJl IG5vdCBjaGlsZCBvZiBjYXRhbG9nCi0gICAgICAgICAgICB2YXIgcHJldl9pID0gdC5oYXNQYXJl bnQoaSkgPyB0LnBhcmVudChpKSA6IG51bGwsCi0gICAgICAgICAgICAgIHByZXZfZCA9IHByZXZf aSA/IHQuaXRlbURhdGEocHJldl9pKSA6IG51bGw7Ci0gICAgICAgICAgICBpZiggcHJldl9kLl90 eXBlID09ICdjYXRhbG9nJykgewotICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg ICAgICB9IGVsc2UgewotICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0K LSAgICAgICAgICB9Ci0gICAgICAgICAgaSA9IHQuaGFzUGFyZW50KGkpID8gdC5wYXJlbnQoaSkg OiBudWxsOwotICAgICAgICAgIGQgPSBpID8gdC5pdGVtRGF0YShpKSA6IG51bGw7Ci0gICAgICAg IH0KLSAgICAgICAgICAvLyBieSBkZWZhdWx0IHdlIHdhbnQgdG8gYWxsb3cgY3JlYXRlIG1lbnUK LSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICB9LAogICAgICAgLy8gRGVmaW5lIHRoZSBtb2Rl bCBmb3Igc2VxdWVuY2Ugbm9kZS4KICAgICAgIG1vZGVsOiBwZ0Jyb3dzZXIuTm9kZS5Nb2RlbC5l eHRlbmQoewogICAgICAgICBkZWZhdWx0czogewpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvc3RhdGljL2pzL2No aWxkLmpzIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvc3RhdGljL2pzL2NoaWxkLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwLi5mOGU1OTUxYwotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3N0YXRpYy9qcy9jaGls ZC5qcwpAQCAtMCwwICsxLDIyIEBACisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLworLy8gcGdBZG1pbiA0IC0gUG9zdGdyZVNR TCBUb29scworLy8KKy8vIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTgsIFRoZSBwZ0FkbWluIERl dmVsb3BtZW50IFRlYW0KKy8vIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBv c3RncmVTUUwgTGljZW5jZQorLy8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKworaW1wb3J0ICogYXMgTm9kZSBmcm9tICdwZ2Jy b3dzZXIvbm9kZSc7CitpbXBvcnQgeworICBpc1RyZWVJdGVtT2ZDaGlsZE9mU2NoZW1hLCBjaGls ZENyZWF0ZU1lbnVFbmFibGVkLAorfSBmcm9tICcuL3NjaGVtYV9jaGlsZF90cmVlX25vZGUnOwor CitsZXQgU2NoZW1hQ2hpbGROb2RlID0gTm9kZS5leHRlbmQoeworICBwYXJlbnRfdHlwZTogWydz Y2hlbWEnLCAnY2F0YWxvZyddLAorICBjYW5Ecm9wOiBpc1RyZWVJdGVtT2ZDaGlsZE9mU2NoZW1h LAorICBjYW5Ecm9wQ2FzY2FkZTogaXNUcmVlSXRlbU9mQ2hpbGRPZlNjaGVtYSwKKyAgY2FuQ3Jl YXRlOiBjaGlsZENyZWF0ZU1lbnVFbmFibGVkLAorfSwgZmFsc2UpOworCitleHBvcnQge1NjaGVt YUNoaWxkTm9kZX07CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9zdGF0aWMvanMvc2NoZW1hLmpzIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvc3Rh dGljL2pzL3NjaGVtYS5qcwppbmRleCBhN2ZkNGM3Yy4uM2I5YjBmMzUgMTAwNjQ0Ci0tLSBhL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L3N0YXRpYy9qcy9zY2hlbWEuanMKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvc3RhdGljL2pzL3NjaGVtYS5qcwpAQCAtNDI1 LDU0ICs0MjUsMTAgQEAgZGVmaW5lKCdwZ2FkbWluLm5vZGUuc2NoZW1hJywgWwogICAgICAgICAg IHJldHVybiBudWxsOwogICAgICAgICB9LAogICAgICAgfSksCi0gICAgICAvLyBUaGlzIGZ1bmN0 aW9uIHdpbGwgY2hlY2tzIHdoZXRoZXIgd2UgY2FuIGFsbG93IHVzZXIgdG8KLSAgICAgIC8vIGRy b3Agb2JqZWN0IG9yIG5vdCBiYXNlZCBvbiBsb2NhdGlvbiB3aXRoaW4gc2NoZW1hICYgY2F0YWxv ZwotICAgICAgY2FuQ2hpbGREcm9wOiBmdW5jdGlvbihpdGVtRGF0YSwgaXRlbSkgewotICAgICAg ICB2YXIgdCA9IHBnQnJvd3Nlci50cmVlLCBpID0gaXRlbSwgZCA9IGl0ZW1EYXRhOwotICAgICAg ICAvLyBUbyBpdGVyYXRlIG92ZXIgdHJlZSB0byBjaGVjayBwYXJlbnQgbm9kZQotICAgICAgICB3 aGlsZSAoaSkgewotICAgICAgICAgIC8vIElmIGl0IGlzIHNjaGVtYSB0aGVuIGFsbG93IHVzZXIg dG8gY3JlYXRlIGNvbGxhdGlvbgotICAgICAgICAgIGlmIChfLmluZGV4T2YoWydzY2hlbWEnXSwg ZC5fdHlwZSkgPiAtMSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgICAgICAv L0NoZWNrIGlmIHdlIGFyZSBub3QgY2hpbGQgb2YgY2F0YWxvZwotICAgICAgICAgIHZhciBwcmV2 X2kgPSB0Lmhhc1BhcmVudChpKSA/IHQucGFyZW50KGkpIDogbnVsbCwKLSAgICAgICAgICAgIHBy ZXZfZCA9IHByZXZfaSA/IHQuaXRlbURhdGEocHJldl9pKSA6IG51bGw7Ci0gICAgICAgICAgaWYo cHJldl9kICYmIHByZXZfZC5fdHlwZSA9PSAnY2F0YWxvZycpIHsKLSAgICAgICAgICAgIHJldHVy biBmYWxzZTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgaSA9IHQuaGFzUGFyZW50KGkpID8gdC5w YXJlbnQoaSkgOiBudWxsOwotICAgICAgICAgIGQgPSBpID8gdC5pdGVtRGF0YShpKSA6IG51bGw7 Ci0gICAgICAgIH0KLSAgICAgICAgLy8gYnkgZGVmYXVsdCB3ZSBkbyBub3Qgd2FudCB0byBhbGxv dyBjcmVhdGUgbWVudQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIH0sCiAgICAgfSk7CiAK ICAgICBwZ0Jyb3dzZXIudGFibGVDaGlsZFRyZWVOb2RlSGllcmFyY2h5ID0gZnVuY3Rpb24oaSkg ewotICAgICAgdmFyIGlkeCA9IDAsCi0gICAgICAgIHJlcyA9IHt9LAotICAgICAgICB0ID0gcGdC cm93c2VyLnRyZWU7Ci0KLSAgICAgIGRvIHsKLSAgICAgICAgdmFyIGQgPSB0Lml0ZW1EYXRhKGkp OwotICAgICAgICBpZiAoCi0gICAgICAgICAgZC5fdHlwZSBpbiBwZ0Jyb3dzZXIuTm9kZXMgJiYg cGdCcm93c2VyLk5vZGVzW2QuX3R5cGVdLmhhc0lkCi0gICAgICAgICkgewotICAgICAgICAgIGlm IChkLl90eXBlID09PSAncGFydGl0aW9uJyB8fCBkLl90eXBlID09PSAndGFibGUnKSB7Ci0gICAg ICAgICAgICBpZiAoISgndGFibGUnIGluIHJlcykpIHsKLSAgICAgICAgICAgICAgcmVzWyd0YWJs ZSddID0gXy5leHRlbmQoe30sIGQsIHsncHJpb3JpdHknOiBpZHh9KTsKLSAgICAgICAgICAgICAg aWR4IC09IDE7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg IHJlc1tkLl90eXBlXSA9IF8uZXh0ZW5kKHt9LCBkLCB7J3ByaW9yaXR5JzogaWR4fSk7Ci0gICAg ICAgICAgICBpZHggLT0gMTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgaSA9IHQu aGFzUGFyZW50KGkpID8gdC5wYXJlbnQoaSkgOiBudWxsOwotICAgICAgfSB3aGlsZSAoaSk7Ci0K LSAgICAgIHJldHVybiByZXM7CisgICAgICByZXR1cm4gdGhpcy5nZXRUcmVlTm9kZUhpZXJhcmNo eShpKTsKICAgICB9OwogICB9CiAKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3N0YXRpYy9qcy9zY2hlbWFfY2hp bGRfdHJlZV9ub2RlLmpzIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvc3RhdGljL2pzL3NjaGVtYV9jaGlsZF90cmVlX25vZGUuanMK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLjFmNjdkMWFmCi0tLSAvZGV2L251 bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvc3RhdGljL2pzL3NjaGVtYV9jaGlsZF90cmVlX25vZGUuanMKQEAgLTAsMCAr MSw0MSBAQAorLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLworLy8KKy8vIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKy8vCisv LyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE4LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFt CisvLyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2Vu Y2UKKy8vCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vCisKK2ltcG9ydCAqIGFzIHBnQnJvd3NlciBmcm9tICdwZ2Jyb3dzZXIvYnJv d3Nlcic7CisKK2V4cG9ydCBmdW5jdGlvbiBjaGlsZENyZWF0ZU1lbnVFbmFibGVkKGl0ZW1EYXRh LCBpdGVtLCBkYXRhKSB7CisgIC8vIElmIGNoZWNrIGlzIGZhbHNlIHRoZW4gLCB3ZSB3aWxsIGFs bG93IGNyZWF0ZSBtZW51CisgIGlmIChkYXRhICYmIGRhdGEuY2hlY2sgPT09IGZhbHNlKSB7Cisg ICAgcmV0dXJuIHRydWU7CisgIH0KKworICBsZXQgbm9kZSA9IHBnQnJvd3Nlci50cmVlTWVudS5m aW5kTm9kZUJ5RG9tRWxlbWVudChpdGVtKTsKKworICBpZiAobm9kZSkKKyAgICByZXR1cm4gbm9k ZS5hbnlGYW1pbHlNZW1iZXIoCisgICAgICAobm9kZSkgPT4gKG5vZGUuZ2V0RGF0YSgpLl90eXBl ID09PSAnc2NoZW1hJykKKyAgICApOworCisgIHJldHVybiBmYWxzZTsKK30KKworZXhwb3J0IGZ1 bmN0aW9uIGlzVHJlZUl0ZW1PZkNoaWxkT2ZTY2hlbWEoaXRlbURhdGEsIGl0ZW0pIHsKKyAgbGV0 IG5vZGUgPSBwZ0Jyb3dzZXIudHJlZU1lbnUuZmluZE5vZGVCeURvbUVsZW1lbnQoaXRlbSk7CisK KyAgaWYgKG5vZGUpCisgICAgcmV0dXJuIGlzVHJlZU5vZGVPZlNjaGVtYUNoaWxkKG5vZGUpOwor CisgIHJldHVybiBmYWxzZTsKK30KKworZXhwb3J0IGZ1bmN0aW9uIGlzVHJlZU5vZGVPZlNjaGVt YUNoaWxkKG5vZGUpIHsKKyAgcmV0dXJuIG5vZGUuYW55UGFyZW50KAorICAgIChwYXJlbnROb2Rl KSA9PiAocGFyZW50Tm9kZS5nZXREYXRhKCkuX3R5cGUgPT09ICdzY2hlbWEnKQorICApOworfQpk aWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvdGFibGVzL2NvbHVtbi9zdGF0aWMvanMvY29sdW1uLmpzIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFi bGVzL2NvbHVtbi9zdGF0aWMvanMvY29sdW1uLmpzCmluZGV4IDNlYWM1MzBkLi41ODIxNjdhNCAx MDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvdGFibGVzL2NvbHVtbi9zdGF0aWMvanMvY29sdW1uLmpzCisrKyBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L3RhYmxlcy9jb2x1bW4vc3RhdGljL2pzL2NvbHVtbi5qcwpAQCAtODgsNyArODgsNiBAQCBkZWZp bmUoJ3BnYWRtaW4ubm9kZS5jb2x1bW4nLCBbCiAKICAgaWYgKCFwZ0Jyb3dzZXIuTm9kZXNbJ2Nv bHVtbiddKSB7CiAgICAgcGdCcm93c2VyLk5vZGVzWydjb2x1bW4nXSA9IHBnQnJvd3Nlci5Ob2Rl LmV4dGVuZCh7Ci0gICAgICBnZXRUcmVlTm9kZUhpZXJhcmNoeTogcGdCcm93c2VyLnRhYmxlQ2hp bGRUcmVlTm9kZUhpZXJhcmNoeSwKICAgICAgIHBhcmVudF90eXBlOiBbJ3RhYmxlJywgJ3ZpZXcn LCAnbXZpZXcnXSwKICAgICAgIGNvbGxlY3Rpb25fdHlwZTogWydjb2xsLXRhYmxlJywgJ2NvbGwt dmlldycsICdjb2xsLW12aWV3J10sCiAgICAgICB0eXBlOiAnY29sdW1uJywKQEAgLTk3LDI3ICs5 NiwyNCBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS5jb2x1bW4nLCBbCiAgICAgICBzcWxBbHRlckhl bHA6ICdzcWwtYWx0ZXJ0YWJsZS5odG1sJywKICAgICAgIHNxbENyZWF0ZUhlbHA6ICdzcWwtYWx0 ZXJ0YWJsZS5odG1sJywKICAgICAgIGRpYWxvZ0hlbHA6IHVybF9mb3IoJ2hlbHAuc3RhdGljJywg eydmaWxlbmFtZSc6ICdjb2x1bW5fZGlhbG9nLmh0bWwnfSksCi0gICAgICBjYW5Ecm9wOiBmdW5j dGlvbihpdGVtRGF0YSwgaXRlbSwgZGF0YSl7Ci0gICAgICAgIGlmIChwZ0Jyb3dzZXIuTm9kZXNb J3NjaGVtYSddLmNhbkNoaWxkRHJvcC5hcHBseSh0aGlzLCBbaXRlbURhdGEsIGl0ZW0sIGRhdGFd KSkgewotICAgICAgICAgIHZhciB0ID0gcGdCcm93c2VyLnRyZWUsIGkgPSBpdGVtLCBkID0gaXRl bURhdGEsIHBhcmVudHMgPSBbXTsKLSAgICAgICAgICAvLyBUbyBpdGVyYXRlIG92ZXIgdHJlZSB0 byBjaGVjayBwYXJlbnQgbm9kZQotICAgICAgICAgIHdoaWxlIChpKSB7Ci0gICAgICAgICAgICBw YXJlbnRzLnB1c2goZC5fdHlwZSk7Ci0gICAgICAgICAgICBpID0gdC5oYXNQYXJlbnQoaSkgPyB0 LnBhcmVudChpKSA6IG51bGw7Ci0gICAgICAgICAgICBkID0gaSA/IHQuaXRlbURhdGEoaSkgOiBu dWxsOwotICAgICAgICAgIH0KKyAgICAgIGNhbkRyb3A6IGZ1bmN0aW9uKGl0ZW1EYXRhLCBpdGVt KXsKKyAgICAgICAgbGV0IG5vZGUgPSBwZ0Jyb3dzZXIudHJlZU1lbnUuZmluZE5vZGVCeURvbUVs ZW1lbnQoaXRlbSk7CiAKLSAgICAgICAgICAvLyBDaGVjayBpZiBtZW51IGlzIGFsbG93ZWQgPwot ICAgICAgICAgIGlmKF8uaW5kZXhPZihwYXJlbnRzLCAnY2F0YWxvZycpID4gLTEgfHwKLSAgICAg ICAgICAgICBfLmluZGV4T2YocGFyZW50cywgJ3ZpZXcnKSA+IC0xIHx8Ci0gICAgICAgICAgICAg Xy5pbmRleE9mKHBhcmVudHMsICdtdmlldycpID4gLTEpIHsKLSAgICAgICAgICAgIHJldHVybiBm YWxzZTsKLSAgICAgICAgICB9IGVsc2UgaWYoXy5pbmRleE9mKHBhcmVudHMsICd0YWJsZScpID4g LTEpIHsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgIH0KLSAgICAgICAgfSBl bHNlIHsKKyAgICAgICAgaWYgKCFub2RlKQogICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg ICAgfQorCisgICAgICAgIC8vIE9ubHkgYSBjb2x1bW4gb2YgYSB0YWJsZSBjYW4gYmUgZHJvcGVk LCBhbmQgb25seSB3aGVuIGl0IGlzIG5vdCBvZgorICAgICAgICAvLyBjYXRhbG9nLgorICAgICAg ICByZXR1cm4gbm9kZS5hbnlQYXJlbnQoCisgICAgICAgICAgKHBhcmVudE5vZGUpID0+ICgKKyAg ICAgICAgICAgIHBhcmVudE5vZGUuZ2V0RGF0YSgpLl90eXBlID09PSAndGFibGUnICYmCisgICAg ICAgICAgICAgICFwYXJlbnROb2RlLmFueVBhcmVudCgKKyAgICAgICAgICAgICAgICAoZ3JhbmRQ YXJlbnROb2RlKSA9PiAoCisgICAgICAgICAgICAgICAgICBncmFuZFBhcmVudE5vZGUuZ2V0RGF0 YSgpLl90eXBlID09PSAnY2F0YWxvZycKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAg ICkKKyAgICAgICAgICApCisgICAgICAgICk7CiAgICAgICB9LAogICAgICAgaGFzRGVwZW5kczog dHJ1ZSwKICAgICAgIGhhc1N0YXRpc3RpY3M6IHRydWUsCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMv Y29uc3RyYWludHMvY2hlY2tfY29uc3RyYWludC9zdGF0aWMvanMvY2hlY2tfY29uc3RyYWludC5q cyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL3RhYmxlcy9jb25zdHJhaW50cy9jaGVja19jb25zdHJhaW50L3N0YXRpYy9qcy9jaGVj a19jb25zdHJhaW50LmpzCmluZGV4IDg1N2NmNGM0Li5hYjI4YTg2YiAxMDA2NDQKLS0tIGEvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv dGFibGVzL2NvbnN0cmFpbnRzL2NoZWNrX2NvbnN0cmFpbnQvc3RhdGljL2pzL2NoZWNrX2NvbnN0 cmFpbnQuanMKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2NvbnN0cmFpbnRzL2NoZWNrX2NvbnN0cmFpbnQvc3Rh dGljL2pzL2NoZWNrX2NvbnN0cmFpbnQuanMKQEAgLTgsNyArOCw2IEBAIGRlZmluZSgncGdhZG1p bi5ub2RlLmNoZWNrX2NvbnN0cmFpbnQnLCBbCiAgIC8vIENoZWNrIENvbnN0cmFpbnQgTm9kZQog ICBpZiAoIXBnQnJvd3Nlci5Ob2Rlc1snY2hlY2tfY29uc3RyYWludCddKSB7CiAgICAgcGdBZG1p bi5Ccm93c2VyLk5vZGVzWydjaGVja19jb25zdHJhaW50J10gPSBwZ0Jyb3dzZXIuTm9kZS5leHRl bmQoewotICAgICAgZ2V0VHJlZU5vZGVIaWVyYXJjaHk6IHBnQnJvd3Nlci50YWJsZUNoaWxkVHJl ZU5vZGVIaWVyYXJjaHksCiAgICAgICB0eXBlOiAnY2hlY2tfY29uc3RyYWludCcsCiAgICAgICBs YWJlbDogZ2V0dGV4dCgnQ2hlY2snKSwKICAgICAgIGNvbGxlY3Rpb25fdHlwZTogJ2NvbGwtY29u c3RyYWludHMnLApkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2NvbnN0cmFpbnRzL2V4Y2x1c2lvbl9j b25zdHJhaW50L3N0YXRpYy9qcy9leGNsdXNpb25fY29uc3RyYWludC5qcyBiL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9j b25zdHJhaW50cy9leGNsdXNpb25fY29uc3RyYWludC9zdGF0aWMvanMvZXhjbHVzaW9uX2NvbnN0 cmFpbnQuanMKaW5kZXggMGJiZjY2YTEuLmFkY2NmMmU5IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMv Y29uc3RyYWludHMvZXhjbHVzaW9uX2NvbnN0cmFpbnQvc3RhdGljL2pzL2V4Y2x1c2lvbl9jb25z dHJhaW50LmpzCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9jb25zdHJhaW50cy9leGNsdXNpb25fY29uc3RyYWlu dC9zdGF0aWMvanMvZXhjbHVzaW9uX2NvbnN0cmFpbnQuanMKQEAgLTYwNSw3ICs2MDUsNiBAQCBk ZWZpbmUoJ3BnYWRtaW4ubm9kZS5leGNsdXNpb25fY29uc3RyYWludCcsIFsKICAgLy8gRXh0ZW5k IHRoZSBicm93c2VyJ3Mgbm9kZSBjbGFzcyBmb3IgZXhjbHVzaW9uIGNvbnN0cmFpbnQgbm9kZQog ICBpZiAoIXBnQnJvd3Nlci5Ob2Rlc1snZXhjbHVzaW9uX2NvbnN0cmFpbnQnXSkgewogICAgIHBn QWRtaW4uQnJvd3Nlci5Ob2Rlc1snZXhjbHVzaW9uX2NvbnN0cmFpbnQnXSA9IHBnQnJvd3Nlci5O b2RlLmV4dGVuZCh7Ci0gICAgICBnZXRUcmVlTm9kZUhpZXJhcmNoeTogcGdCcm93c2VyLnRhYmxl Q2hpbGRUcmVlTm9kZUhpZXJhcmNoeSwKICAgICAgIHR5cGU6ICdleGNsdXNpb25fY29uc3RyYWlu dCcsCiAgICAgICBsYWJlbDogZ2V0dGV4dCgnRXhjbHVzaW9uIGNvbnN0cmFpbnQnKSwKICAgICAg IGNvbGxlY3Rpb25fdHlwZTogJ2NvbGwtY29uc3RyYWludHMnLApkaWZmIC0tZ2l0IGEvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFi bGVzL2NvbnN0cmFpbnRzL2ZvcmVpZ25fa2V5L3N0YXRpYy9qcy9mb3JlaWduX2tleS5qcyBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L3RhYmxlcy9jb25zdHJhaW50cy9mb3JlaWduX2tleS9zdGF0aWMvanMvZm9yZWlnbl9rZXkuanMK aW5kZXggM2M0Yjg5ZjMuLjk4OTlkZjkyIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29uc3RyYWlu dHMvZm9yZWlnbl9rZXkvc3RhdGljL2pzL2ZvcmVpZ25fa2V5LmpzCisrKyBiL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9j b25zdHJhaW50cy9mb3JlaWduX2tleS9zdGF0aWMvanMvZm9yZWlnbl9rZXkuanMKQEAgLTYwMyw3 ICs2MDMsNiBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS5mb3JlaWduX2tleScsIFsKICAgLy8gRXh0 ZW5kIHRoZSBicm93c2VyJ3Mgbm9kZSBjbGFzcyBmb3IgZm9yZWlnbiBrZXkgbm9kZQogICBpZiAo IXBnQnJvd3Nlci5Ob2Rlc1snZm9yZWlnbl9rZXknXSkgewogICAgIHBnQWRtaW4uQnJvd3Nlci5O b2Rlc1snZm9yZWlnbl9rZXknXSA9IHBnQnJvd3Nlci5Ob2RlLmV4dGVuZCh7Ci0gICAgICBnZXRU cmVlTm9kZUhpZXJhcmNoeTogcGdCcm93c2VyLnRhYmxlQ2hpbGRUcmVlTm9kZUhpZXJhcmNoeSwK ICAgICAgIHR5cGU6ICdmb3JlaWduX2tleScsCiAgICAgICBsYWJlbDogZ2V0dGV4dCgnRm9yZWln biBrZXknKSwKICAgICAgIGNvbGxlY3Rpb25fdHlwZTogJ2NvbGwtY29uc3RyYWludHMnLApkaWZm IC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvdGFibGVzL2NvbnN0cmFpbnRzL2luZGV4X2NvbnN0cmFpbnQvc3RhdGljL2pz L3ByaW1hcnlfa2V5LmpzIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2NvbnN0cmFpbnRzL2luZGV4X2NvbnN0cmFpbnQv c3RhdGljL2pzL3ByaW1hcnlfa2V5LmpzCmluZGV4IGQzYTZjZmY0Li4wYWQwZjA1NCAxMDA2NDQK LS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvdGFibGVzL2NvbnN0cmFpbnRzL2luZGV4X2NvbnN0cmFpbnQvc3RhdGljL2pzL3By aW1hcnlfa2V5LmpzCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9jb25zdHJhaW50cy9pbmRleF9jb25zdHJhaW50 L3N0YXRpYy9qcy9wcmltYXJ5X2tleS5qcwpAQCAtMjAsNyArMjAsNiBAQCBkZWZpbmUoJ3BnYWRt aW4ubm9kZS5wcmltYXJ5X2tleScsIFsKICAgICAgIHBhcmVudF90eXBlOiBbJ3RhYmxlJywncGFy dGl0aW9uJ10sCiAgICAgICBjYW5Ecm9wOiB0cnVlLAogICAgICAgY2FuRHJvcENhc2NhZGU6IHRy dWUsCi0gICAgICBnZXRUcmVlTm9kZUhpZXJhcmNoeTogcGdCcm93c2VyLnRhYmxlQ2hpbGRUcmVl Tm9kZUhpZXJhcmNoeSwKICAgICAgIEluaXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAvKiBBdm9p ZCBtdWx0aXBsZSByZWdpc3RyYXRpb24gb2YgbWVudXMgKi8KICAgICAgICAgaWYgKHRoaXMuaW5p dGlhbGl6ZWQpCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29uc3RyYWludHMvaW5kZXhfY29uc3Ry YWludC9zdGF0aWMvanMvdW5pcXVlX2NvbnN0cmFpbnQuanMgYi93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29uc3RyYWlu dHMvaW5kZXhfY29uc3RyYWludC9zdGF0aWMvanMvdW5pcXVlX2NvbnN0cmFpbnQuanMKaW5kZXgg NzY5MTg1ZDYuLjE4ZDNjYTMzIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29uc3RyYWludHMvaW5k ZXhfY29uc3RyYWludC9zdGF0aWMvanMvdW5pcXVlX2NvbnN0cmFpbnQuanMKKysrIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFi bGVzL2NvbnN0cmFpbnRzL2luZGV4X2NvbnN0cmFpbnQvc3RhdGljL2pzL3VuaXF1ZV9jb25zdHJh aW50LmpzCkBAIC0yMCw3ICsyMCw2IEBAIGRlZmluZSgncGdhZG1pbi5ub2RlLnVuaXF1ZV9jb25z dHJhaW50JywgWwogICAgICAgcGFyZW50X3R5cGU6IFsndGFibGUnLCdwYXJ0aXRpb24nXSwKICAg ICAgIGNhbkRyb3A6IHRydWUsCiAgICAgICBjYW5Ecm9wQ2FzY2FkZTogdHJ1ZSwKLSAgICAgIGdl dFRyZWVOb2RlSGllcmFyY2h5OiBwZ0Jyb3dzZXIudGFibGVDaGlsZFRyZWVOb2RlSGllcmFyY2h5 LAogICAgICAgSW5pdDogZnVuY3Rpb24oKSB7CiAgICAgICAgIC8qIEF2b2lkIG11bHRpcGxlIHJl Z2lzdHJhdGlvbiBvZiBtZW51cyAqLwogICAgICAgICBpZiAodGhpcy5pbml0aWFsaXplZCkKZGlm ZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL3RhYmxlcy9jb25zdHJhaW50cy9zdGF0aWMvanMvY29uc3RyYWludHMuanMg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy90YWJsZXMvY29uc3RyYWludHMvc3RhdGljL2pzL2NvbnN0cmFpbnRzLmpzCmluZGV4IGNi MjQyY2QyLi45YzBlMjRmZSAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2NvbnN0cmFpbnRzL3N0YXRp Yy9qcy9jb25zdHJhaW50cy5qcworKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29uc3RyYWludHMvc3RhdGljL2pz L2NvbnN0cmFpbnRzLmpzCkBAIC0xMiwxNCArMTIsMTIgQEAgZGVmaW5lKCdwZ2FkbWluLm5vZGUu Y29uc3RyYWludHMnLCBbCiAgICAgICAgIG5vZGU6ICdjb25zdHJhaW50cycsCiAgICAgICAgIGxh YmVsOiBnZXR0ZXh0KCdDb25zdHJhaW50cycpLAogICAgICAgICB0eXBlOiAnY29sbC1jb25zdHJh aW50cycsCi0gICAgICAgIGdldFRyZWVOb2RlSGllcmFyY2h5OiBwZ0Jyb3dzZXIudGFibGVDaGls ZFRyZWVOb2RlSGllcmFyY2h5LAogICAgICAgICBjb2x1bW5zOiBbJ25hbWUnLCAnY29tbWVudCdd LAogICAgICAgfSk7CiAgIH0KIAogICBpZiAoIXBnQnJvd3Nlci5Ob2Rlc1snY29uc3RyYWludHMn XSkgewogICAgIHBnQWRtaW4uQnJvd3Nlci5Ob2Rlc1snY29uc3RyYWludHMnXSA9IHBnQnJvd3Nl ci5Ob2RlLmV4dGVuZCh7Ci0gICAgICBnZXRUcmVlTm9kZUhpZXJhcmNoeTogcGdCcm93c2VyLnRh YmxlQ2hpbGRUcmVlTm9kZUhpZXJhcmNoeSwKICAgICAgIHR5cGU6ICdjb25zdHJhaW50cycsCiAg ICAgICBsYWJlbDogZ2V0dGV4dCgnQ29uc3RyYWludHMnKSwKICAgICAgIGNvbGxlY3Rpb25fdHlw ZTogJ2NvbGwtY29uc3RyYWludHMnLApkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2luZGV4ZXMvc3Rh dGljL2pzL2luZGV4LmpzIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2luZGV4ZXMvc3RhdGljL2pzL2luZGV4LmpzCmlu ZGV4IGVjMmI0ZGExLi5lNThiYjQ2MyAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2luZGV4ZXMvc3Rh dGljL2pzL2luZGV4LmpzCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9pbmRleGVzL3N0YXRpYy9qcy9pbmRleC5q cwpAQCAtMSwxMCArMSwxMiBAQAogZGVmaW5lKCdwZ2FkbWluLm5vZGUuaW5kZXgnLCBbCiAgICdz b3VyY2VzL2dldHRleHQnLCAnc291cmNlcy91cmxfZm9yJywgJ2pxdWVyeScsICd1bmRlcnNjb3Jl JywKICAgJ2JhY2tib25lJywgJ3NvdXJjZXMvcGdhZG1pbicsICdwZ2FkbWluLmJyb3dzZXInLCAn cGdhZG1pbi5hbGVydGlmeWpzJywKLSAgJ3BnYWRtaW4uYmFja2Zvcm0nLCAncGdhZG1pbi5iYWNr Z3JpZCcsICdwZ2FkbWluLmJyb3dzZXIuY29sbGVjdGlvbicsCisgICdwZ2FkbWluLmJhY2tmb3Jt JywgJ3BnYWRtaW4uYmFja2dyaWQnLAorICAncGdhZG1pbi5ub2RlLnNjaGVtYS5kaXIvc2NoZW1h X2NoaWxkX3RyZWVfbm9kZScsCisgICdwZ2FkbWluLmJyb3dzZXIuY29sbGVjdGlvbicsCiBdLCBm dW5jdGlvbigKICAgZ2V0dGV4dCwgdXJsX2ZvciwgJCwgXywgQmFja2JvbmUsIHBnQWRtaW4sIHBn QnJvd3NlciwgQWxlcnRpZnksIEJhY2tmb3JtLAotICBCYWNrZ3JpZAorICBCYWNrZ3JpZCwgU2No ZW1hQ2hpbGRUcmVlTm9kZQogKSB7CiAKICAgaWYgKCFwZ0Jyb3dzZXIuTm9kZXNbJ2NvbGwtaW5k ZXgnXSkgewpAQCAtMTMsNyArMTUsNiBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS5pbmRleCcsIFsK ICAgICAgICAgbm9kZTogJ2luZGV4JywKICAgICAgICAgbGFiZWw6IGdldHRleHQoJ0luZGV4ZXMn KSwKICAgICAgICAgdHlwZTogJ2NvbGwtaW5kZXgnLAotICAgICAgICBnZXRUcmVlTm9kZUhpZXJh cmNoeTogcGdCcm93c2VyLnRhYmxlQ2hpbGRUcmVlTm9kZUhpZXJhcmNoeSwKICAgICAgICAgc3Fs QWx0ZXJIZWxwOiAnc3FsLWFsdGVyaW5kZXguaHRtbCcsCiAgICAgICAgIHNxbENyZWF0ZUhlbHA6 ICdzcWwtY3JlYXRlaW5kZXguaHRtbCcsCiAgICAgICAgIGRpYWxvZ0hlbHA6IHVybF9mb3IoJ2hl bHAuc3RhdGljJywgeydmaWxlbmFtZSc6ICdpbmRleF9kaWFsb2cuaHRtbCd9KSwKQEAgLTIxNSw3 ICsyMTYsNiBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS5pbmRleCcsIFsKIAogICBpZiAoIXBnQnJv d3Nlci5Ob2Rlc1snaW5kZXgnXSkgewogICAgIHBnQWRtaW4uQnJvd3Nlci5Ob2Rlc1snaW5kZXgn XSA9IHBnQnJvd3Nlci5Ob2RlLmV4dGVuZCh7Ci0gICAgICBnZXRUcmVlTm9kZUhpZXJhcmNoeTog cGdCcm93c2VyLnRhYmxlQ2hpbGRUcmVlTm9kZUhpZXJhcmNoeSwKICAgICAgIHBhcmVudF90eXBl OiBbJ3RhYmxlJywgJ3ZpZXcnLCAnbXZpZXcnLCAncGFydGl0aW9uJ10sCiAgICAgICBjb2xsZWN0 aW9uX3R5cGU6IFsnY29sbC10YWJsZScsICdjb2xsLXZpZXcnXSwKICAgICAgIHNxbEFsdGVySGVs cDogJ3NxbC1hbHRlcmluZGV4Lmh0bWwnLApAQCAtMjY2LDggKzI2Niw4IEBAIGRlZmluZSgncGdh ZG1pbi5ub2RlLmluZGV4JywgWwogICAgICAgICB9LAogICAgICAgICBdKTsKICAgICAgIH0sCi0g ICAgICBjYW5Ecm9wOiBwZ0Jyb3dzZXIuTm9kZXNbJ3NjaGVtYSddLmNhbkNoaWxkRHJvcCwKLSAg ICAgIGNhbkRyb3BDYXNjYWRlOiBwZ0Jyb3dzZXIuTm9kZXNbJ3NjaGVtYSddLmNhbkNoaWxkRHJv cCwKKyAgICAgIGNhbkRyb3A6IFNjaGVtYUNoaWxkVHJlZU5vZGUuaXNUcmVlSXRlbU9mQ2hpbGRP ZlNjaGVtYSwKKyAgICAgIGNhbkRyb3BDYXNjYWRlOiBTY2hlbWFDaGlsZFRyZWVOb2RlLmlzVHJl ZUl0ZW1PZkNoaWxkT2ZTY2hlbWEsCiAgICAgICBtb2RlbDogcGdBZG1pbi5Ccm93c2VyLk5vZGUu TW9kZWwuZXh0ZW5kKHsKICAgICAgICAgaWRBdHRyaWJ1dGU6ICdvaWQnLAogCmRpZmYgLS1naXQg YS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy90YWJsZXMvcGFydGl0aW9ucy9zdGF0aWMvanMvcGFydGl0aW9uLmpzIGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVz L3BhcnRpdGlvbnMvc3RhdGljL2pzL3BhcnRpdGlvbi5qcwppbmRleCBkODA3MzA0ZS4uNzQ2NDk3 MjEgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9wYXJ0aXRpb25zL3N0YXRpYy9qcy9wYXJ0aXRpb24u anMKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvdGFibGVzL3BhcnRpdGlvbnMvc3RhdGljL2pzL3BhcnRpdGlvbi5qcwpAQCAt MiwxMCArMiwxMiBAQCBkZWZpbmUoWwogICAnc291cmNlcy9nZXR0ZXh0JywgJ3NvdXJjZXMvdXJs X2ZvcicsICdqcXVlcnknLCAndW5kZXJzY29yZScsCiAgICd1bmRlcnNjb3JlLnN0cmluZycsICdz b3VyY2VzL3BnYWRtaW4nLCAncGdhZG1pbi5icm93c2VyJywKICAgJ3BnYWRtaW4uYWxlcnRpZnlq cycsICdwZ2FkbWluLmJhY2tmb3JtJywgJ3BnYWRtaW4uYmFja2dyaWQnLAorICAncGdhZG1pbi5u b2RlLnNjaGVtYS5kaXIvc2NoZW1hX2NoaWxkX3RyZWVfbm9kZScsCiAgICdwZ2FkbWluLmJyb3dz ZXIuY29sbGVjdGlvbicsICdwZ2FkbWluLmJyb3dzZXIudGFibGUucGFydGl0aW9uLnV0aWxzJywK IF0sCiBmdW5jdGlvbigKLSAgZ2V0dGV4dCwgdXJsX2ZvciwgJCwgXywgUywgcGdBZG1pbiwgcGdC cm93c2VyLCBBbGVydGlmeSwgQmFja2Zvcm0sIEJhY2tncmlkCisgIGdldHRleHQsIHVybF9mb3Is ICQsIF8sIFMsIHBnQWRtaW4sIHBnQnJvd3NlciwgQWxlcnRpZnksIEJhY2tmb3JtLCBCYWNrZ3Jp ZCwKKyAgU2NoZW1hQ2hpbGRUcmVlTm9kZQogKSB7CiAKICAgaWYgKCFwZ0Jyb3dzZXIuTm9kZXNb J2NvbGwtcGFydGl0aW9uJ10pIHsKQEAgLTEzLDcgKzE1LDYgQEAgZnVuY3Rpb24oCiAgICAgICBw Z0FkbWluLkJyb3dzZXIuQ29sbGVjdGlvbi5leHRlbmQoewogICAgICAgICBub2RlOiAncGFydGl0 aW9uJywKICAgICAgICAgbGFiZWw6IGdldHRleHQoJ1BhcnRpdGlvbnMnKSwKLSAgICAgICAgZ2V0 VHJlZU5vZGVIaWVyYXJjaHk6IHBnQnJvd3Nlci50YWJsZUNoaWxkVHJlZU5vZGVIaWVyYXJjaHks CiAgICAgICAgIHR5cGU6ICdjb2xsLXBhcnRpdGlvbicsCiAgICAgICAgIGNvbHVtbnM6IFsKICAg ICAgICAgICAnbmFtZScsICdzY2hlbWEnLCAncGFydGl0aW9uX3ZhbHVlJywgJ2lzX3BhcnRpdGlv bmVkJywgJ2Rlc2NyaXB0aW9uJywKQEAgLTgwLDM2ICs4MSw2IEBAIGZ1bmN0aW9uKAogICAgICAg ICB9LAogICAgICAgICBdKTsKICAgICAgIH0sCi0gICAgICBnZXRUcmVlTm9kZUhpZXJhcmNoeTog ZnVuY3Rpb24oaSkgewotICAgICAgICB2YXIgaWR4ID0gMCwKLSAgICAgICAgICByZXMgPSB7fSwK LSAgICAgICAgICB0ID0gcGdCcm93c2VyLnRyZWU7Ci0KLSAgICAgICAgZG8gewotICAgICAgICAg IHZhciBkID0gdC5pdGVtRGF0YShpKTsKLSAgICAgICAgICBpZiAoCi0gICAgICAgICAgICBkLl90 eXBlIGluIHBnQnJvd3Nlci5Ob2RlcyAmJiBwZ0Jyb3dzZXIuTm9kZXNbZC5fdHlwZV0uaGFzSWQK LSAgICAgICAgICApIHsKLSAgICAgICAgICAgIGlmIChkLl90eXBlID09ICdwYXJ0aXRpb24nICYm ICdwYXJ0aXRpb24nIGluIHJlcykgewotICAgICAgICAgICAgICBpZiAoISgndGFibGUnIGluIHJl cykpIHsKLSAgICAgICAgICAgICAgICByZXNbJ3RhYmxlJ10gPSBfLmV4dGVuZCh7fSwgZCwgeydw cmlvcml0eSc6IGlkeH0pOwotICAgICAgICAgICAgICAgIGlkeCAtPSAxOwotICAgICAgICAgICAg ICB9Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGQuX3R5cGUgPT0gJ3RhYmxlJykgewotICAgICAg ICAgICAgICBpZiAoISgndGFibGUnIGluIHJlcykpIHsKLSAgICAgICAgICAgICAgICByZXNbJ3Rh YmxlJ10gPSBfLmV4dGVuZCh7fSwgZCwgeydwcmlvcml0eSc6IGlkeH0pOwotICAgICAgICAgICAg ICAgIGlkeCAtPSAxOwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgewotICAg ICAgICAgICAgICByZXNbZC5fdHlwZV0gPSBfLmV4dGVuZCh7fSwgZCwgeydwcmlvcml0eSc6IGlk eH0pOwotICAgICAgICAgICAgICBpZHggLT0gMTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9 Ci0gICAgICAgICAgaSA9IHQuaGFzUGFyZW50KGkpID8gdC5wYXJlbnQoaSkgOiBudWxsOwotICAg ICAgICB9IHdoaWxlIChpKTsKLQotICAgICAgICByZXR1cm4gcmVzOwotICAgICAgfSwKICAgICAg IGdlbmVyYXRlX3VybDogZnVuY3Rpb24oaXRlbSwgdHlwZSwgZCwgd2l0aF9pZCwgaW5mbykgewog ICAgICAgICBpZiAoXy5pbmRleE9mKFsKICAgICAgICAgICAnc3RhdHMnLCAnc3RhdGlzdGljcycs ICdkZXBlbmRlbmN5JywgJ2RlcGVuZGVudCcsICdyZXNldCcsCkBAIC0xMzMsOCArMTA0LDggQEAg ZnVuY3Rpb24oCiAgICAgICAgICAgICBlbmNvZGVVUklDb21wb25lbnQoaW5mb1sncGFydGl0aW9u J10uX2lkKQogICAgICAgICAgICAgKS52YWx1ZSgpOwogICAgICAgfSwKLSAgICAgIGNhbkRyb3A6 IHBnQnJvd3Nlci5Ob2Rlc1snc2NoZW1hJ10uY2FuQ2hpbGREcm9wLAotICAgICAgY2FuRHJvcENh c2NhZGU6IHBnQnJvd3Nlci5Ob2Rlc1snc2NoZW1hJ10uY2FuQ2hpbGREcm9wLAorICAgICAgY2Fu RHJvcDogU2NoZW1hQ2hpbGRUcmVlTm9kZS5pc1RyZWVJdGVtT2ZDaGlsZE9mU2NoZW1hLAorICAg ICAgY2FuRHJvcENhc2NhZGU6IFNjaGVtYUNoaWxkVHJlZU5vZGUuaXNUcmVlSXRlbU9mQ2hpbGRP ZlNjaGVtYSwKICAgICAgIGNhbGxiYWNrczogewogICAgICAgICAvKiBFbmFibGUgdHJpZ2dlcihz KSBvbiB0YWJsZSAqLwogICAgICAgICBlbmFibGVfdHJpZ2dlcnNfb25fdGFibGU6IGZ1bmN0aW9u KGFyZ3MpIHsKQEAgLTExODksMzQgKzExNjAsNyBAQCBmdW5jdGlvbigKICAgICAgICAgICByZXR1 cm4gZGF0YTsKICAgICAgICAgfSwKICAgICAgIH0pLAotICAgICAgY2FuQ3JlYXRlOiBmdW5jdGlv bihpdGVtRGF0YSwgaXRlbSwgZGF0YSkgewotICAgICAgICAgIC8vSWYgY2hlY2sgaXMgZmFsc2Ug dGhlbiAsIHdlIHdpbGwgYWxsb3cgY3JlYXRlIG1lbnUKLSAgICAgICAgaWYgKGRhdGEgJiYgZGF0 YS5jaGVjayA9PSBmYWxzZSkKLSAgICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgICAgICB2YXIg dCA9IHBnQnJvd3Nlci50cmVlLCBpID0gaXRlbSwgZCA9IGl0ZW1EYXRhOwotICAgICAgICAgIC8v IFRvIGl0ZXJhdGUgb3ZlciB0cmVlIHRvIGNoZWNrIHBhcmVudCBub2RlCi0gICAgICAgIHdoaWxl IChpKSB7Ci0gICAgICAgICAgICAvLyBJZiBpdCBpcyBzY2hlbWEgdGhlbiBhbGxvdyB1c2VyIHRv IGNyZWF0ZSB0YWJsZQotICAgICAgICAgIGlmIChfLmluZGV4T2YoWydzY2hlbWEnXSwgZC5fdHlw ZSkgPiAtMSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgICAgaWYgKCdjb2xs LXRhYmxlJyA9PSBkLl90eXBlKSB7Ci0gICAgICAgICAgICAgIC8vQ2hlY2sgaWYgd2UgYXJlIG5v dCBjaGlsZCBvZiBjYXRhbG9nCi0gICAgICAgICAgICB2YXIgcHJldl9pID0gdC5oYXNQYXJlbnQo aSkgPyB0LnBhcmVudChpKSA6IG51bGw7Ci0gICAgICAgICAgICB2YXIgcHJldl9kID0gcHJldl9p ID8gdC5pdGVtRGF0YShwcmV2X2kpIDogbnVsbDsKLSAgICAgICAgICAgIGlmKCBwcmV2X2QuX3R5 cGUgPT0gJ2NhdGFsb2cnKSB7Ci0gICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQot ICAgICAgICAgIH0KLSAgICAgICAgICBpID0gdC5oYXNQYXJlbnQoaSkgPyB0LnBhcmVudChpKSA6 IG51bGw7Ci0gICAgICAgICAgZCA9IGkgPyB0Lml0ZW1EYXRhKGkpIDogbnVsbDsKLSAgICAgICAg fQotICAgICAgICAgIC8vIGJ5IGRlZmF1bHQgd2UgZG8gbm90IHdhbnQgdG8gYWxsb3cgY3JlYXRl IG1lbnUKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICB9LAorICAgICAgY2FuQ3JlYXRlOiBT Y2hlbWFDaGlsZFRyZWVOb2RlLmlzVHJlZUl0ZW1PZkNoaWxkT2ZTY2hlbWEsCiAgICAgICAvLyBD aGVjayB0byB3aGV0aGVyIHRhYmxlIGhhcyBkaXNhYmxlIHRyaWdnZXIocykKICAgICAgIGNhbkNy ZWF0ZV93aXRoX3RyaWdnZXJfZW5hYmxlOiBmdW5jdGlvbihpdGVtRGF0YSwgaXRlbSwgZGF0YSkg ewogICAgICAgICBpZih0aGlzLmNhbkNyZWF0ZS5hcHBseSh0aGlzLCBbaXRlbURhdGEsIGl0ZW0s IGRhdGFdKSkgewpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3J1bGVzL3N0YXRpYy9qcy9ydWxlLmpz IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvdGFibGVzL3J1bGVzL3N0YXRpYy9qcy9ydWxlLmpzCmluZGV4IDNhZjYxNzU0Li4zNTQ5 MDlmMyAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3J1bGVzL3N0YXRpYy9qcy9ydWxlLmpzCisrKyBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL3RhYmxlcy9ydWxlcy9zdGF0aWMvanMvcnVsZS5qcwpAQCAtMTYsNyArMTYsNiBAQCBkZWZp bmUoJ3BnYWRtaW4ubm9kZS5ydWxlJywgWwogICAgICAgICBub2RlOiAncnVsZScsCiAgICAgICAg IGxhYmVsOiBnZXR0ZXh0KCdSdWxlcycpLAogICAgICAgICB0eXBlOiAnY29sbC1ydWxlJywKLSAg ICAgICAgZ2V0VHJlZU5vZGVIaWVyYXJjaHk6IHBnQnJvd3Nlci50YWJsZUNoaWxkVHJlZU5vZGVI aWVyYXJjaHksCiAgICAgICAgIGNvbHVtbnM6IFsnbmFtZScsICdvd25lcicsICdjb21tZW50J10s CiAgICAgICB9KTsKICAgfQpAQCAtMzUsNyArMzQsNiBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS5y dWxlJywgWwogICAgKi8KICAgaWYgKCFwZ0Jyb3dzZXIuTm9kZXNbJ3J1bGUnXSkgewogICAgIHBn QWRtaW4uQnJvd3Nlci5Ob2Rlc1sncnVsZSddID0gcGdCcm93c2VyLk5vZGUuZXh0ZW5kKHsKLSAg ICAgIGdldFRyZWVOb2RlSGllcmFyY2h5OiBwZ0Jyb3dzZXIudGFibGVDaGlsZFRyZWVOb2RlSGll cmFyY2h5LAogICAgICAgcGFyZW50X3R5cGU6IFsndGFibGUnLCd2aWV3JywgJ3BhcnRpdGlvbidd LAogICAgICAgdHlwZTogJ3J1bGUnLAogICAgICAgc3FsQWx0ZXJIZWxwOiAnc3FsLWFsdGVycnVs ZS5odG1sJywKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9zdGF0aWMvanMvZW5hYmxlX2Rpc2FibGVf dHJpZ2dlcnMuanMgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvc3RhdGljL2pzL2VuYWJsZV9kaXNhYmxlX3RyaWdnZXJz LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi4yZDc5MjA0MwotLS0gL2Rl di9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9zdGF0aWMvanMvZW5hYmxlX2Rpc2FibGVfdHJpZ2dlcnMu anMKQEAgLTAsMCArMSw1MiBAQAorLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8KKy8vIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwg VG9vbHMKKy8vCisvLyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE4LCBUaGUgcGdBZG1pbiBEZXZl bG9wbWVudCBUZWFtCisvLyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0 Z3JlU1FMIExpY2VuY2UKKy8vCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCitpbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnOwor CitleHBvcnQgZnVuY3Rpb24gZGlzYWJsZVRyaWdnZXJzKHRyZWUsIGFsZXJ0aWZ5LCBnZW5lcmF0 ZVVybCwgYXJncykgeworICByZXR1cm4gc2V0VHJpZ2dlcnModHJlZSwgYWxlcnRpZnksIGdlbmVy YXRlVXJsLCBhcmdzLCB7ZW5hYmxlOiAnZmFsc2UnIH0pOworfQorZXhwb3J0IGZ1bmN0aW9uIGVu YWJsZVRyaWdnZXJzKHRyZWUsIGFsZXJ0aWZ5LCBnZW5lcmF0ZVVybCwgYXJncykgeworICByZXR1 cm4gc2V0VHJpZ2dlcnModHJlZSwgYWxlcnRpZnksIGdlbmVyYXRlVXJsLCBhcmdzLCB7ZW5hYmxl OiAndHJ1ZScgfSk7Cit9CisKK2Z1bmN0aW9uIHNldFRyaWdnZXJzKHRyZWUsIGFsZXJ0aWZ5LCBn ZW5lcmF0ZVVybCwgYXJncywgcGFyYW1zKSB7CisgIGNvbnN0IHRyZWVOb2RlID0gcmV0cmlldmVU cmVlTm9kZShhcmdzLCB0cmVlKTsKKworICBpZiAoIXRyZWVOb2RlIHx8IHRyZWVOb2RlLmdldERh dGEoKSA9PT0gbnVsbCB8fCB0cmVlTm9kZS5nZXREYXRhKCkgPT09IHVuZGVmaW5lZCkKKyAgICBy ZXR1cm4gZmFsc2U7CisKKyAgYXhpb3MucHV0KAorICAgIGdlbmVyYXRlVXJsKHRyZWVOb2RlLmdl dEh0bWxJZGVudGlmaWVyKCksICdzZXRfdHJpZ2dlcicsIHRyZWVOb2RlLmdldERhdGEoKSwgdHJ1 ZSksCisgICAgcGFyYW1zCisgICkKKyAgICAudGhlbigocmVzKSA9PiB7CisgICAgICBpZiAocmVz LmRhdGEuc3VjY2VzcyA9PT0gMSkgeworICAgICAgICBhbGVydGlmeS5zdWNjZXNzKHJlcy5kYXRh LmluZm8pOworICAgICAgICB0cmVlTm9kZS5yZWxvYWQodHJlZSk7CisgICAgICB9CisgICAgfSkK KyAgICAuY2F0Y2goKHhocikgPT4geworICAgICAgdHJ5IHsKKyAgICAgICAgY29uc3QgZXJyID0g eGhyLnJlc3BvbnNlLmRhdGE7CisgICAgICAgIGlmIChlcnIuc3VjY2VzcyA9PT0gMCkgeworICAg ICAgICAgIGFsZXJ0aWZ5LmVycm9yKGVyci5lcnJvcm1zZyk7CisgICAgICAgIH0KKyAgICAgIH0g Y2F0Y2ggKGUpIHsKKyAgICAgICAgY29uc29sZS53YXJuKGUuc3RhY2sgfHwgZSk7CisgICAgICB9 CisgICAgICB0cmVlTm9kZS51bmxvYWQodHJlZSk7CisgICAgfSk7Cit9CisKK2Z1bmN0aW9uIHJl dHJpZXZlVHJlZU5vZGUoYXJncywgdHJlZSkgeworICBjb25zdCBpbnB1dCA9IGFyZ3MgfHwge307 CisgIGNvbnN0IGRvbUVsZW1lbnRJZGVudGlmaWVyID0gaW5wdXQuaXRlbSB8fCB0cmVlLnNlbGVj dGVkKCk7CisgIHJldHVybiB0cmVlLmZpbmROb2RlQnlEb21FbGVtZW50KGRvbUVsZW1lbnRJZGVu dGlmaWVyKTsKK30KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9zdGF0aWMvanMvdGFibGUuanMgYi93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy90YWJsZXMvc3RhdGljL2pzL3RhYmxlLmpzCmluZGV4IGQ0NDBiZjA0Li4xZjliY2Y5NyAxMDA2 NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvdGFibGVzL3N0YXRpYy9qcy90YWJsZS5qcworKysgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvc3Rh dGljL2pzL3RhYmxlLmpzCkBAIC0xLDEzICsxLDE2IEBACiBkZWZpbmUoJ3BnYWRtaW4ubm9kZS50 YWJsZScsIFsKKyAgJ3BnYWRtaW4udGFibGVzLmpzL2VuYWJsZV9kaXNhYmxlX3RyaWdnZXJzJywK ICAgJ3NvdXJjZXMvZ2V0dGV4dCcsICdzb3VyY2VzL3VybF9mb3InLCAnanF1ZXJ5JywgJ3VuZGVy c2NvcmUnLAogICAndW5kZXJzY29yZS5zdHJpbmcnLCAnc291cmNlcy9wZ2FkbWluJywgJ3BnYWRt aW4uYnJvd3NlcicsCiAgICdwZ2FkbWluLmFsZXJ0aWZ5anMnLCAncGdhZG1pbi5iYWNrZm9ybScs ICdwZ2FkbWluLmJhY2tncmlkJywKICAgJ3BnYWRtaW4udGFibGVzLmpzL3Nob3dfYWR2YW5jZWRf dGFiJywKLSAgJ3BnYWRtaW4uYnJvd3Nlci5jb2xsZWN0aW9uJywgJ3BnYWRtaW4ubm9kZS5jb2x1 bW4nLAotICAncGdhZG1pbi5ub2RlLmNvbnN0cmFpbnRzJywgJ3BnYWRtaW4uYnJvd3Nlci50YWJs ZS5wYXJ0aXRpb24udXRpbHMnLAorICAncGdhZG1pbi5ub2RlLnNjaGVtYS5kaXIvY2hpbGQnLCAn cGdhZG1pbi5icm93c2VyLmNvbGxlY3Rpb24nLAorICAncGdhZG1pbi5ub2RlLmNvbHVtbicsICdw Z2FkbWluLm5vZGUuY29uc3RyYWludHMnLAorICAncGdhZG1pbi5icm93c2VyLnRhYmxlLnBhcnRp dGlvbi51dGlscycsCiBdLCBmdW5jdGlvbigKKyAgdGFibGVGdW5jdGlvbnMsCiAgIGdldHRleHQs IHVybF9mb3IsICQsIF8sIFMsIHBnQWRtaW4sIHBnQnJvd3NlciwgQWxlcnRpZnksIEJhY2tmb3Jt LCBCYWNrZ3JpZCwKLSAgU2hvd0FkdmFuY2VkVGFiCisgIFNob3dBZHZhbmNlZFRhYiwgU2NoZW1h Q2hpbGQKICkgewogCiAgIGlmICghcGdCcm93c2VyLk5vZGVzWydjb2xsLXRhYmxlJ10pIHsKQEAg LTI1LDggKzI4LDcgQEAgZGVmaW5lKCdwZ2FkbWluLm5vZGUudGFibGUnLCBbCiAgIH0KIAogICBp ZiAoIXBnQnJvd3Nlci5Ob2Rlc1sndGFibGUnXSkgewotICAgIHBnQnJvd3Nlci5Ob2Rlc1sndGFi bGUnXSA9IHBnQnJvd3Nlci5Ob2RlLmV4dGVuZCh7Ci0gICAgICBnZXRUcmVlTm9kZUhpZXJhcmNo eTogcGdCcm93c2VyLnRhYmxlQ2hpbGRUcmVlTm9kZUhpZXJhcmNoeSwKKyAgICBwZ0Jyb3dzZXIu Tm9kZXNbJ3RhYmxlJ10gPSBTY2hlbWFDaGlsZC5TY2hlbWFDaGlsZE5vZGUuZXh0ZW5kKHsKICAg ICAgIHR5cGU6ICd0YWJsZScsCiAgICAgICBsYWJlbDogZ2V0dGV4dCgnVGFibGUnKSwKICAgICAg IGNvbGxlY3Rpb25fdHlwZTogJ2NvbGwtdGFibGUnLApAQCAtMzksNyArNDEsNiBAQCBkZWZpbmUo J3BnYWRtaW4ubm9kZS50YWJsZScsIFsKICAgICAgIHNxbEFsdGVySGVscDogJ3NxbC1hbHRlcnRh YmxlLmh0bWwnLAogICAgICAgc3FsQ3JlYXRlSGVscDogJ3NxbC1jcmVhdGV0YWJsZS5odG1sJywK ICAgICAgIGRpYWxvZ0hlbHA6IHVybF9mb3IoJ2hlbHAuc3RhdGljJywgeydmaWxlbmFtZSc6ICd0 YWJsZV9kaWFsb2cuaHRtbCd9KSwKLSAgICAgIHBhcmVudF90eXBlOiBbJ3NjaGVtYScsICdjYXRh bG9nJ10sCiAgICAgICBoYXNTY3JpcHRUeXBlczogWydjcmVhdGUnLCAnc2VsZWN0JywgJ2luc2Vy dCcsICd1cGRhdGUnLCAnZGVsZXRlJ10sCiAgICAgICBoZWlnaHQ6ICc5NSUnLAogICAgICAgd2lk dGg6ICc4NSUnLApAQCAtMTEzLDUxICsxMTQsMjQgQEAgZGVmaW5lKCdwZ2FkbWluLm5vZGUudGFi bGUnLCBbCiAgICAgICAgICAgdGhpcy5oYW5kbGVfY2FjaGUsIHRoaXMKICAgICAgICAgKTsKICAg ICAgIH0sCi0gICAgICBjYW5Ecm9wOiBwZ0Jyb3dzZXIuTm9kZXNbJ3NjaGVtYSddLmNhbkNoaWxk RHJvcCwKLSAgICAgIGNhbkRyb3BDYXNjYWRlOiBwZ0Jyb3dzZXIuTm9kZXNbJ3NjaGVtYSddLmNh bkNoaWxkRHJvcCwKICAgICAgIGNhbGxiYWNrczogewogICAgICAgICAvKiBFbmFibGUgdHJpZ2dl cihzKSBvbiB0YWJsZSAqLwogICAgICAgICBlbmFibGVfdHJpZ2dlcnNfb25fdGFibGU6IGZ1bmN0 aW9uKGFyZ3MpIHsKLSAgICAgICAgICB2YXIgcGFyYW1zID0geydlbmFibGUnOiB0cnVlIH07Ci0g ICAgICAgICAgdGhpcy5jYWxsYmFja3Muc2V0X3RyaWdnZXJzLmFwcGx5KHRoaXMsIFthcmdzLCBw YXJhbXNdKTsKKyAgICAgICAgICB0YWJsZUZ1bmN0aW9ucy5lbmFibGVUcmlnZ2VycygKKyAgICAg ICAgICAgIHBnQnJvd3Nlci50cmVlTWVudSwKKyAgICAgICAgICAgIEFsZXJ0aWZ5LAorICAgICAg ICAgICAgdGhpcy5nZW5lcmF0ZV91cmwuYmluZCh0aGlzKSwKKyAgICAgICAgICAgIGFyZ3MKKyAg ICAgICAgICApOwogICAgICAgICB9LAogICAgICAgICAvKiBEaXNhYmxlIHRyaWdnZXIocykgb24g dGFibGUgKi8KICAgICAgICAgZGlzYWJsZV90cmlnZ2Vyc19vbl90YWJsZTogZnVuY3Rpb24oYXJn cykgewotICAgICAgICAgIHZhciBwYXJhbXMgPSB7J2VuYWJsZSc6IGZhbHNlIH07Ci0gICAgICAg ICAgdGhpcy5jYWxsYmFja3Muc2V0X3RyaWdnZXJzLmFwcGx5KHRoaXMsIFthcmdzLCBwYXJhbXNd KTsKLSAgICAgICAgfSwKLSAgICAgICAgc2V0X3RyaWdnZXJzOiBmdW5jdGlvbihhcmdzLCBwYXJh bXMpIHsKLSAgICAgICAgICAvLyBUaGlzIGZ1bmN0aW9uIHdpbGwgc2VuZCByZXF1ZXN0IHRvIGVu YWJsZSBvcgotICAgICAgICAgIC8vIGRpc2FibGUgdHJpZ2dlcnMgb24gdGFibGUgbGV2ZWwKLSAg ICAgICAgICB2YXIgaW5wdXQgPSBhcmdzIHx8IHt9LAotICAgICAgICAgICAgb2JqID0gdGhpcywK LSAgICAgICAgICAgIHQgPSBwZ0Jyb3dzZXIudHJlZSwKLSAgICAgICAgICAgIGkgPSBpbnB1dC5p dGVtIHx8IHQuc2VsZWN0ZWQoKSwKLSAgICAgICAgICAgIGQgPSBpICYmIGkubGVuZ3RoID09IDEg PyB0Lml0ZW1EYXRhKGkpIDogdW5kZWZpbmVkOwotICAgICAgICAgIGlmICghZCkKLSAgICAgICAg ICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICAgICQuYWpheCh7Ci0gICAgICAgICAgICB1cmw6 IG9iai5nZW5lcmF0ZV91cmwoaSwgJ3NldF90cmlnZ2VyJyAsIGQsIHRydWUpLAotICAgICAgICAg ICAgdHlwZTonUFVUJywKLSAgICAgICAgICAgIGRhdGE6IHBhcmFtcywKLSAgICAgICAgICAgIGRh dGFUeXBlOiAnanNvbicsCi0gICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbihyZXMpIHsKLSAg ICAgICAgICAgICAgaWYgKHJlcy5zdWNjZXNzID09IDEpIHsKLSAgICAgICAgICAgICAgICBBbGVy dGlmeS5zdWNjZXNzKHJlcy5pbmZvKTsKLSAgICAgICAgICAgICAgICB0LnVubG9hZChpKTsKLSAg ICAgICAgICAgICAgICB0LnNldElub2RlKGkpOwotICAgICAgICAgICAgICAgIHQuZGVzZWxlY3Qo aSk7Ci0gICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKLSAgICAgICAgICAg ICAgICAgIHQuc2VsZWN0KGkpOwotICAgICAgICAgICAgICAgIH0sIDEwKTsKLSAgICAgICAgICAg ICAgfQotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIGVycm9yOiBmdW5jdGlvbih4aHIsIHN0 YXR1cywgZXJyb3IpIHsKLSAgICAgICAgICAgICAgQWxlcnRpZnkucGdSZXNwRXJyb3JOb3RpZnko eGhyLCBlcnJvcik7Ci0gICAgICAgICAgICAgIHQudW5sb2FkKGkpOwotICAgICAgICAgICAgfSwK LSAgICAgICAgICB9KTsKKyAgICAgICAgICB0YWJsZUZ1bmN0aW9ucy5kaXNhYmxlVHJpZ2dlcnMo CisgICAgICAgICAgICBwZ0Jyb3dzZXIudHJlZU1lbnUsCisgICAgICAgICAgICBBbGVydGlmeSwK KyAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVfdXJsLmJpbmQodGhpcyksCisgICAgICAgICAgICBh cmdzCisgICAgICAgICAgKTsKICAgICAgICAgfSwKICAgICAgICAgLyogVHJ1bmNhdGUgdGFibGUg Ki8KICAgICAgICAgdHJ1bmNhdGVfdGFibGU6IGZ1bmN0aW9uKGFyZ3MpIHsKQEAgLTEyOTksNTUg KzEyNzMsMTUgQEAgZGVmaW5lKCdwZ2FkbWluLm5vZGUudGFibGUnLCBbCiAgICAgICAgICAgcmV0 dXJuIGRhdGE7CiAgICAgICAgIH0sCiAgICAgICB9KSwKLSAgICAgIGNhbkNyZWF0ZTogZnVuY3Rp b24oaXRlbURhdGEsIGl0ZW0sIGRhdGEpIHsKLSAgICAgICAgLy9JZiBjaGVjayBpcyBmYWxzZSB0 aGVuICwgd2Ugd2lsbCBhbGxvdyBjcmVhdGUgbWVudQotICAgICAgICBpZiAoZGF0YSAmJiBkYXRh LmNoZWNrID09IGZhbHNlKQotICAgICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgIHZhciB0 ID0gcGdCcm93c2VyLnRyZWUsIGkgPSBpdGVtLCBkID0gaXRlbURhdGE7Ci0gICAgICAgIC8vIFRv IGl0ZXJhdGUgb3ZlciB0cmVlIHRvIGNoZWNrIHBhcmVudCBub2RlCi0gICAgICAgIHdoaWxlIChp KSB7Ci0gICAgICAgICAgLy8gSWYgaXQgaXMgc2NoZW1hIHRoZW4gYWxsb3cgdXNlciB0byBjcmVh dGUgdGFibGUKLSAgICAgICAgICBpZiAoXy5pbmRleE9mKFsnc2NoZW1hJ10sIGQuX3R5cGUpID4g LTEpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgICAgICAgIGlmICgnY29sbC10YWJs ZScgPT0gZC5fdHlwZSkgewotICAgICAgICAgICAgLy9DaGVjayBpZiB3ZSBhcmUgbm90IGNoaWxk IG9mIGNhdGFsb2cKLSAgICAgICAgICAgIHZhciBwcmV2X2kgPSB0Lmhhc1BhcmVudChpKSA/IHQu cGFyZW50KGkpIDogbnVsbCwKLSAgICAgICAgICAgICAgcHJldl9kID0gcHJldl9pID8gdC5pdGVt RGF0YShwcmV2X2kpIDogbnVsbDsKLSAgICAgICAgICAgIGlmKCBwcmV2X2QuX3R5cGUgPT0gJ2Nh dGFsb2cnKSB7Ci0gICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0gZWxz ZSB7Ci0gICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAg IH0KLSAgICAgICAgICBpID0gdC5oYXNQYXJlbnQoaSkgPyB0LnBhcmVudChpKSA6IG51bGw7Ci0g ICAgICAgICAgZCA9IGkgPyB0Lml0ZW1EYXRhKGkpIDogbnVsbDsKLSAgICAgICAgfQotICAgICAg ICAvLyBieSBkZWZhdWx0IHdlIGRvIG5vdCB3YW50IHRvIGFsbG93IGNyZWF0ZSBtZW51Ci0gICAg ICAgIHJldHVybiB0cnVlOwotICAgICAgfSwKICAgICAgIC8vIENoZWNrIHRvIHdoZXRoZXIgdGFi bGUgaGFzIGRpc2FibGUgdHJpZ2dlcihzKQogICAgICAgY2FuQ3JlYXRlX3dpdGhfdHJpZ2dlcl9l bmFibGU6IGZ1bmN0aW9uKGl0ZW1EYXRhLCBpdGVtLCBkYXRhKSB7Ci0gICAgICAgIGlmKHRoaXMu Y2FuQ3JlYXRlLmFwcGx5KHRoaXMsIFtpdGVtRGF0YSwgaXRlbSwgZGF0YV0pKSB7Ci0gICAgICAg ICAgLy8gV2UgYXJlIGhlcmUgbWVhbnMgd2UgY2FuIGNyZWF0ZSBtZW51LCBub3cgbGV0J3MgY2hl Y2sgY29uZGl0aW9uCi0gICAgICAgICAgaWYoaXRlbURhdGEudGlnZ2VyX2NvdW50ID4gMCkgewot ICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg IHJldHVybiBmYWxzZTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGl0 ZW1EYXRhLnRpZ2dlcl9jb3VudCA+IDAgJiYKKyAgICAgICAgICB0aGlzLmNhbkNyZWF0ZS5hcHBs eSh0aGlzLCBbaXRlbURhdGEsIGl0ZW0sIGRhdGFdKTsKICAgICAgIH0sCiAgICAgICAvLyBDaGVj ayB0byB3aGV0aGVyIHRhYmxlIGhhcyBlbmFibGUgdHJpZ2dlcihzKQogICAgICAgY2FuQ3JlYXRl X3dpdGhfdHJpZ2dlcl9kaXNhYmxlOiBmdW5jdGlvbihpdGVtRGF0YSwgaXRlbSwgZGF0YSkgewot ICAgICAgICBpZih0aGlzLmNhbkNyZWF0ZS5hcHBseSh0aGlzLCBbaXRlbURhdGEsIGl0ZW0sIGRh dGFdKSkgewotICAgICAgICAgIC8vIFdlIGFyZSBoZXJlIG1lYW5zIHdlIGNhbiBjcmVhdGUgbWVu dSwgbm93IGxldCdzIGNoZWNrIGNvbmRpdGlvbgotICAgICAgICAgIGlmKGl0ZW1EYXRhLnRpZ2dl cl9jb3VudCA+IDAgJiYgaXRlbURhdGEuaGFzX2VuYWJsZV90cmlnZ2VycyA+IDApIHsKLSAgICAg ICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICByZXR1 cm4gZmFsc2U7Ci0gICAgICAgICAgfQotICAgICAgICB9CisgICAgICAgIHJldHVybiBpdGVtRGF0 YS50aWdnZXJfY291bnQgPiAwICYmIGl0ZW1EYXRhLmhhc19lbmFibGVfdHJpZ2dlcnMgPiAwICYm CisgICAgICAgICAgdGhpcy5jYW5DcmVhdGUuYXBwbHkodGhpcywgW2l0ZW1EYXRhLCBpdGVtLCBk YXRhXSk7CiAgICAgICB9LAogICAgICAgb25UYWJsZVVwZGF0ZWQ6IGZ1bmN0aW9uKF9ub2RlLCBf b2xkTm9kZURhdGEsIF9uZXdOb2RlRGF0YSkgewogICAgICAgICB2YXIga2V5LCBjaGlsZElEczsK ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90cmlnZ2Vycy9zdGF0aWMvanMvdHJpZ2dlci5qcyBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L3RhYmxlcy90cmlnZ2Vycy9zdGF0aWMvanMvdHJpZ2dlci5qcwppbmRleCBhMmMyNzE4OC4uYTZl NzljZTIgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90cmlnZ2Vycy9zdGF0aWMvanMvdHJpZ2dlci5q cworKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy90YWJsZXMvdHJpZ2dlcnMvc3RhdGljL2pzL3RyaWdnZXIuanMKQEAgLTEsOCAr MSwxMyBAQAogZGVmaW5lKCdwZ2FkbWluLm5vZGUudHJpZ2dlcicsIFsKICAgJ3NvdXJjZXMvZ2V0 dGV4dCcsICdzb3VyY2VzL3VybF9mb3InLCAnanF1ZXJ5JywgJ3VuZGVyc2NvcmUnLAotICAndW5k ZXJzY29yZS5zdHJpbmcnLCAnc291cmNlcy9wZ2FkbWluJywgJ3BnYWRtaW4uYnJvd3NlcicsICdi YWNrZm9ybScsICdwZ2FkbWluLmFsZXJ0aWZ5anMnLAorICAndW5kZXJzY29yZS5zdHJpbmcnLCAn c291cmNlcy9wZ2FkbWluJywgJ3BnYWRtaW4uYnJvd3NlcicsCisgICdwZ2FkbWluLmJhY2tmb3Jt JywgJ3BnYWRtaW4uYWxlcnRpZnlqcycsCisgICdwZ2FkbWluLm5vZGUuc2NoZW1hLmRpci9zY2hl bWFfY2hpbGRfdHJlZV9ub2RlJywKICAgJ3BnYWRtaW4uYnJvd3Nlci5jb2xsZWN0aW9uJywKLV0s IGZ1bmN0aW9uKGdldHRleHQsIHVybF9mb3IsICQsIF8sIFMsIHBnQWRtaW4sIHBnQnJvd3Nlciwg QmFja2Zvcm0sIGFsZXJ0aWZ5KSB7CitdLCBmdW5jdGlvbigKKyAgZ2V0dGV4dCwgdXJsX2Zvciwg JCwgXywgUywgcGdBZG1pbiwgcGdCcm93c2VyLCBCYWNrZm9ybSwgYWxlcnRpZnksCisgIFNjaGVt YUNoaWxkVHJlZU5vZGUKKykgewogCiAgIEJhY2tmb3JtLkN1c3RvbVN3aXRjaENvbnRyb2wgPSBC YWNrZm9ybS5Td2l0Y2hDb250cm9sLmV4dGVuZCh7CiAgICAgdGVtcGxhdGU6IF8udGVtcGxhdGUo WwpAQCAtMjksMTQgKzM0LDEyIEBAIGRlZmluZSgncGdhZG1pbi5ub2RlLnRyaWdnZXInLCBbCiAg ICAgICAgIG5vZGU6ICd0cmlnZ2VyJywKICAgICAgICAgbGFiZWw6IGdldHRleHQoJ1RyaWdnZXJz JyksCiAgICAgICAgIHR5cGU6ICdjb2xsLXRyaWdnZXInLAotICAgICAgICBnZXRUcmVlTm9kZUhp ZXJhcmNoeTogcGdCcm93c2VyLnRhYmxlQ2hpbGRUcmVlTm9kZUhpZXJhcmNoeSwKICAgICAgICAg Y29sdW1uczogWyduYW1lJywgJ2Rlc2NyaXB0aW9uJ10sCiAgICAgICB9KTsKICAgfQogCiAgIGlm ICghcGdCcm93c2VyLk5vZGVzWyd0cmlnZ2VyJ10pIHsKICAgICBwZ0FkbWluLkJyb3dzZXIuTm9k ZXNbJ3RyaWdnZXInXSA9IHBnQnJvd3Nlci5Ob2RlLmV4dGVuZCh7Ci0gICAgICBnZXRUcmVlTm9k ZUhpZXJhcmNoeTogcGdCcm93c2VyLnRhYmxlQ2hpbGRUcmVlTm9kZUhpZXJhcmNoeSwKICAgICAg IHBhcmVudF90eXBlOiBbJ3RhYmxlJywgJ3ZpZXcnLCAncGFydGl0aW9uJ10sCiAgICAgICBjb2xs ZWN0aW9uX3R5cGU6IFsnY29sbC10YWJsZScsICdjb2xsLXZpZXcnXSwKICAgICAgIHR5cGU6ICd0 cmlnZ2VyJywKQEAgLTE3NSw4ICsxNzgsOCBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS50cmlnZ2Vy JywgWwogICAgICAgICAgIH0pOwogICAgICAgICB9LAogICAgICAgfSwKLSAgICAgIGNhbkRyb3A6 IHBnQnJvd3Nlci5Ob2Rlc1snc2NoZW1hJ10uY2FuQ2hpbGREcm9wLAotICAgICAgY2FuRHJvcENh c2NhZGU6IHBnQnJvd3Nlci5Ob2Rlc1snc2NoZW1hJ10uY2FuQ2hpbGREcm9wLAorICAgICAgY2Fu RHJvcDogU2NoZW1hQ2hpbGRUcmVlTm9kZS5pc1RyZWVJdGVtT2ZDaGlsZE9mU2NoZW1hLAorICAg ICAgY2FuRHJvcENhc2NhZGU6IFNjaGVtYUNoaWxkVHJlZU5vZGUuaXNUcmVlSXRlbU9mQ2hpbGRP ZlNjaGVtYSwKICAgICAgIG1vZGVsOiBwZ0FkbWluLkJyb3dzZXIuTm9kZS5Nb2RlbC5leHRlbmQo ewogICAgICAgICBkZWZhdWx0czogewogICAgICAgICAgIG5hbWU6IHVuZGVmaW5lZCwKQEAgLTYx OCw1MCArNjIxLDE2IEBAIGRlZmluZSgncGdhZG1pbi5ub2RlLnRyaWdnZXInLCBbCiAgICAgICAg ICAgcmV0dXJuIGZsYWc7CiAgICAgICAgIH0sCiAgICAgICB9KSwKLSAgICAgIC8vIEJlbG93IGZ1 bmN0aW9uIHdpbGwgZW5hYmxlIHJpZ2h0IGNsaWNrIG1lbnUgZm9yIGNyZWF0aW5nIGNvbHVtbgot ICAgICAgY2FuQ3JlYXRlOiBmdW5jdGlvbihpdGVtRGF0YSwgaXRlbSwgZGF0YSkgewotICAgICAg ICAvLyBJZiBjaGVjayBpcyBmYWxzZSB0aGVuICwgd2Ugd2lsbCBhbGxvdyBjcmVhdGUgbWVudQot ICAgICAgICBpZiAoZGF0YSAmJiBkYXRhLmNoZWNrID09IGZhbHNlKQotICAgICAgICAgIHJldHVy biB0cnVlOwotCi0gICAgICAgIHZhciB0ID0gcGdCcm93c2VyLnRyZWUsIGkgPSBpdGVtLCBkID0g aXRlbURhdGEsIHBhcmVudHMgPSBbXTsKLSAgICAgICAgLy8gVG8gaXRlcmF0ZSBvdmVyIHRyZWUg dG8gY2hlY2sgcGFyZW50IG5vZGUKLSAgICAgICAgd2hpbGUgKGkpIHsKLSAgICAgICAgICAvLyBJ ZiBpdCBpcyBzY2hlbWEgdGhlbiBhbGxvdyB1c2VyIHRvIGMgcmVhdGUgdGFibGUKLSAgICAgICAg ICBpZiAoXy5pbmRleE9mKFsnc2NoZW1hJ10sIGQuX3R5cGUpID4gLTEpCi0gICAgICAgICAgICBy ZXR1cm4gdHJ1ZTsKLSAgICAgICAgICBwYXJlbnRzLnB1c2goZC5fdHlwZSk7Ci0gICAgICAgICAg aSA9IHQuaGFzUGFyZW50KGkpID8gdC5wYXJlbnQoaSkgOiBudWxsOwotICAgICAgICAgIGQgPSBp ID8gdC5pdGVtRGF0YShpKSA6IG51bGw7Ci0gICAgICAgIH0KLSAgICAgICAgLy8gSWYgbm9kZSBp cyB1bmRlciBjYXRhbG9nIHRoZW4gZG8gbm90IGFsbG93ICdjcmVhdGUnIG1lbnUKLSAgICAgICAg aWYgKF8uaW5kZXhPZihwYXJlbnRzLCAnY2F0YWxvZycpID4gLTEpIHsKLSAgICAgICAgICByZXR1 cm4gZmFsc2U7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg ICAgIH0KLSAgICAgIH0sCisgICAgICBjYW5DcmVhdGU6IFNjaGVtYUNoaWxkVHJlZU5vZGUuaXNU cmVlSXRlbU9mQ2hpbGRPZlNjaGVtYSwKICAgICAgIC8vIENoZWNrIHRvIHdoZXRoZXIgdHJpZ2dl ciBpcyBkaXNhYmxlID8KICAgICAgIGNhbkNyZWF0ZV93aXRoX3RyaWdnZXJfZW5hYmxlOiBmdW5j dGlvbihpdGVtRGF0YSwgaXRlbSwgZGF0YSkgewotICAgICAgICBpZih0aGlzLmNhbkNyZWF0ZS5h cHBseSh0aGlzLCBbaXRlbURhdGEsIGl0ZW0sIGRhdGFdKSkgewotICAgICAgICAgIC8vIFdlIGFy ZSBoZXJlIG1lYW5zIHdlIGNhbiBjcmVhdGUgbWVudSwgbm93IGxldCdzIGNoZWNrIGNvbmRpdGlv bgotICAgICAgICAgIGlmKGl0ZW1EYXRhLmljb24gPT09ICdpY29uLXRyaWdnZXItYmFkJykgewot ICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg IHJldHVybiBmYWxzZTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGl0 ZW1EYXRhLmljb24gPT09ICdpY29uLXRyaWdnZXItYmFkJyAmJgorICAgICAgICAgIHRoaXMuY2Fu Q3JlYXRlLmFwcGx5KHRoaXMsIFtpdGVtRGF0YSwgaXRlbSwgZGF0YV0pOwogICAgICAgfSwKICAg ICAgIC8vIENoZWNrIHRvIHdoZXRoZXIgdHJpZ2dlciBpcyBlbmFibGUgPwogICAgICAgY2FuQ3Jl YXRlX3dpdGhfdHJpZ2dlcl9kaXNhYmxlOiBmdW5jdGlvbihpdGVtRGF0YSwgaXRlbSwgZGF0YSkg ewotICAgICAgICBpZih0aGlzLmNhbkNyZWF0ZS5hcHBseSh0aGlzLCBbaXRlbURhdGEsIGl0ZW0s IGRhdGFdKSkgewotICAgICAgICAgIC8vIFdlIGFyZSBoZXJlIG1lYW5zIHdlIGNhbiBjcmVhdGUg bWVudSwgbm93IGxldCdzIGNoZWNrIGNvbmRpdGlvbgotICAgICAgICAgIGlmKGl0ZW1EYXRhLmlj b24gPT09ICdpY29uLXRyaWdnZXInKSB7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAg ICAgICB9IGVsc2UgewotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgIH0KLSAg ICAgICAgfQorICAgICAgICByZXR1cm4gaXRlbURhdGEuaWNvbiA9PT0gJ2ljb24tdHJpZ2dlcicg JiYKKyAgICAgICAgICB0aGlzLmNhbkNyZWF0ZS5hcHBseSh0aGlzLCBbaXRlbURhdGEsIGl0ZW0s IGRhdGFdKTsKICAgICAgIH0sCiAgICAgfSk7CiAgIH0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3R5cGVzL3N0 YXRpYy9qcy90eXBlLmpzIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvdHlwZXMvc3RhdGljL2pzL3R5cGUuanMKaW5kZXggYzFjMjQ4 NjEuLjU4NjBhNzUyIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90eXBlcy9zdGF0aWMvanMvdHlwZS5qcworKysg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy90eXBlcy9zdGF0aWMvanMvdHlwZS5qcwpAQCAtMSw4ICsxLDEyIEBACiBkZWZpbmUoJ3Bn YWRtaW4ubm9kZS50eXBlJywgWwogICAnc291cmNlcy9nZXR0ZXh0JywgJ3NvdXJjZXMvdXJsX2Zv cicsICdqcXVlcnknLCAndW5kZXJzY29yZScsCiAgICdzb3VyY2VzL3BnYWRtaW4nLCAncGdhZG1p bi5icm93c2VyJywgJ3BnYWRtaW4uYmFja2Zvcm0nLAotICAncGdhZG1pbi5iYWNrZ3JpZCcsICdw Z2FkbWluLmJyb3dzZXIuY29sbGVjdGlvbicsCi1dLCBmdW5jdGlvbihnZXR0ZXh0LCB1cmxfZm9y LCAkLCBfLCBwZ0FkbWluLCBwZ0Jyb3dzZXIsIEJhY2tmb3JtLCBCYWNrZ3JpZCkgeworICAncGdh ZG1pbi5iYWNrZ3JpZCcsICdwZ2FkbWluLm5vZGUuc2NoZW1hLmRpci9jaGlsZCcsCisgICdwZ2Fk bWluLmJyb3dzZXIuY29sbGVjdGlvbicsCitdLCBmdW5jdGlvbigKKyAgZ2V0dGV4dCwgdXJsX2Zv ciwgJCwgXywgcGdBZG1pbiwgcGdCcm93c2VyLCBCYWNrZm9ybSwgQmFja2dyaWQsCisgIHNjaGVt YUNoaWxkCispIHsKIAogICBpZiAoIXBnQnJvd3Nlci5Ob2Rlc1snY29sbC10eXBlJ10pIHsKICAg ICBwZ0Jyb3dzZXIuTm9kZXNbJ2NvbGwtdHlwZSddID0KQEAgLTI0NSw3ICsyNDksNyBAQCBkZWZp bmUoJ3BnYWRtaW4ubm9kZS50eXBlJywgWwogICB9KTsKIAogICBpZiAoIXBnQnJvd3Nlci5Ob2Rl c1sndHlwZSddKSB7Ci0gICAgcGdCcm93c2VyLk5vZGVzWyd0eXBlJ10gPSBwZ0Jyb3dzZXIuTm9k ZS5leHRlbmQoeworICAgIHBnQnJvd3Nlci5Ob2Rlc1sndHlwZSddID0gc2NoZW1hQ2hpbGQuU2No ZW1hQ2hpbGROb2RlLmV4dGVuZCh7CiAgICAgICB0eXBlOiAndHlwZScsCiAgICAgICBzcWxBbHRl ckhlbHA6ICdzcWwtYWx0ZXJ0eXBlLmh0bWwnLAogICAgICAgc3FsQ3JlYXRlSGVscDogJ3NxbC1j cmVhdGV0eXBlLmh0bWwnLApAQCAtMjU0LDcgKzI1OCw2IEBAIGRlZmluZSgncGdhZG1pbi5ub2Rl LnR5cGUnLCBbCiAgICAgICBjb2xsZWN0aW9uX3R5cGU6ICdjb2xsLXR5cGUnLAogICAgICAgaGFz U1FMOiB0cnVlLAogICAgICAgaGFzRGVwZW5kczogdHJ1ZSwKLSAgICAgIHBhcmVudF90eXBlOiBb J3NjaGVtYScsICdjYXRhbG9nJ10sCiAgICAgICBJbml0OiBmdW5jdGlvbigpIHsKICAgICAgICAg LyogQXZvaWQgbXVsdGlwbGUgcmVnaXN0cmF0aW9uIG9mIG1lbnVzICovCiAgICAgICAgIGlmICh0 aGlzLmluaXRpYWxpemVkKQpAQCAtMjg0LDggKzI4Nyw2IEBAIGRlZmluZSgncGdhZG1pbi5ub2Rl LnR5cGUnLCBbCiAgICAgICAgIF0pOwogCiAgICAgICB9LAotICAgICAgY2FuRHJvcDogcGdCcm93 c2VyLk5vZGVzWydzY2hlbWEnXS5jYW5DaGlsZERyb3AsCi0gICAgICBjYW5Ecm9wQ2FzY2FkZTog cGdCcm93c2VyLk5vZGVzWydzY2hlbWEnXS5jYW5DaGlsZERyb3AsCiAgICAgICBleHRfZnVuY3M6 IHVuZGVmaW5lZCwKICAgICAgIG1vZGVsOiBwZ0Jyb3dzZXIuTm9kZS5Nb2RlbC5leHRlbmQoewog ICAgICAgICBkZWZhdWx0czogewpAQCAtOTExLDM0ICs5MTIsNiBAQCBkZWZpbmUoJ3BnYWRtaW4u bm9kZS50eXBlJywgWwogICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0sCiAgICAg ICB9KSwKLSAgICAgIGNhbkNyZWF0ZTogZnVuY3Rpb24oaXRlbURhdGEsIGl0ZW0sIGRhdGEpIHsK LSAgICAgICAgLy9JZiBjaGVjayBpcyBmYWxzZSB0aGVuICwgd2Ugd2lsbCBhbGxvdyBjcmVhdGUg bWVudQotICAgICAgICBpZiAoZGF0YSAmJiBkYXRhLmNoZWNrID09IGZhbHNlKQotICAgICAgICAg IHJldHVybiB0cnVlOwotCi0gICAgICAgIHZhciB0ID0gcGdCcm93c2VyLnRyZWUsIGkgPSBpdGVt LCBkID0gaXRlbURhdGE7Ci0gICAgICAgIC8vIFRvIGl0ZXJhdGUgb3ZlciB0cmVlIHRvIGNoZWNr IHBhcmVudCBub2RlCi0gICAgICAgIHdoaWxlIChpKSB7Ci0gICAgICAgICAgLy8gSWYgaXQgaXMg c2NoZW1hIHRoZW4gYWxsb3cgdXNlciB0byBjcmVhdGUgdGFibGUKLSAgICAgICAgICBpZiAoXy5p bmRleE9mKFsnc2NoZW1hJ10sIGQuX3R5cGUpID4gLTEpCi0gICAgICAgICAgICByZXR1cm4gdHJ1 ZTsKLQotICAgICAgICAgIGlmICgnY29sbC10eXBlJyA9PSBkLl90eXBlKSB7Ci0gICAgICAgICAg ICAvL0NoZWNrIGlmIHdlIGFyZSBub3QgY2hpbGQgb2YgY2F0YWxvZwotICAgICAgICAgICAgdmFy IHByZXZfaSA9IHQuaGFzUGFyZW50KGkpID8gdC5wYXJlbnQoaSkgOiBudWxsLAotICAgICAgICAg ICAgICBwcmV2X2QgPSBwcmV2X2kgPyB0Lml0ZW1EYXRhKHByZXZfaSkgOiBudWxsOwotICAgICAg ICAgICAgaWYoIHByZXZfZC5fdHlwZSA9PSAnY2F0YWxvZycpIHsKLSAgICAgICAgICAgICAgcmV0 dXJuIGZhbHNlOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgcmV0dXJuIHRy dWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICAgIGkgPSB0Lmhhc1BhcmVu dChpKSA/IHQucGFyZW50KGkpIDogbnVsbDsKLSAgICAgICAgICBkID0gaSA/IHQuaXRlbURhdGEo aSkgOiBudWxsOwotICAgICAgICB9Ci0gICAgICAgIC8vIGJ5IGRlZmF1bHQgd2UgZG8gbm90IHdh bnQgdG8gYWxsb3cgY3JlYXRlIG1lbnUKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICB9LAog ICAgIH0pOwogICB9CiAgIHJldHVybiBwZ0Jyb3dzZXIuTm9kZXNbJ3R5cGUnXTsKZGlmZiAtLWdp dCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL3ZpZXdzL3N0YXRpYy9qcy9tdmlldy5qcyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3N0YXRpYy9qcy9tdmll dy5qcwppbmRleCAwNzNlZjVjYi4uZGNmZGQ1NGIgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3N0YXRp Yy9qcy9tdmlldy5qcworKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy9zdGF0aWMvanMvbXZpZXcuanMKQEAgLTEsOCAr MSwxMiBAQAogZGVmaW5lKCdwZ2FkbWluLm5vZGUubXZpZXcnLCBbCiAgICdzb3VyY2VzL2dldHRl eHQnLCAnc291cmNlcy91cmxfZm9yJywgJ2pxdWVyeScsICd1bmRlcnNjb3JlJywKICAgJ3NvdXJj ZXMvcGdhZG1pbicsICdwZ2FkbWluLmFsZXJ0aWZ5anMnLCAncGdhZG1pbi5icm93c2VyJywKLSAg J3BnYWRtaW4uYmFja2Zvcm0nLCAncGdhZG1pbi5icm93c2VyLnNlcnZlci5wcml2aWxlZ2UnLAot XSwgZnVuY3Rpb24oZ2V0dGV4dCwgdXJsX2ZvciwgJCwgXywgcGdBZG1pbiwgQWxlcnRpZnksIHBn QnJvd3NlciwgQmFja2Zvcm0pIHsKKyAgJ3BnYWRtaW4uYmFja2Zvcm0nLCAncGdhZG1pbi5ub2Rl LnNjaGVtYS5kaXIvY2hpbGQnLAorICAncGdhZG1pbi5icm93c2VyLnNlcnZlci5wcml2aWxlZ2Un LAorXSwgZnVuY3Rpb24oCisgIGdldHRleHQsIHVybF9mb3IsICQsIF8sIHBnQWRtaW4sIEFsZXJ0 aWZ5LCBwZ0Jyb3dzZXIsIEJhY2tmb3JtLAorICBzY2hlbWFDaGlsZAorKSB7CiAKICAgLyoqCiAg ICAgQ3JlYXRlIGFuZCBhZGQgYSB2aWV3IGNvbGxlY3Rpb24gaW50byBub2RlcwpAQCAtMzMsMTkg KzM3LDE2IEBAIGRlZmluZSgncGdhZG1pbi5ub2RlLm12aWV3JywgWwogICAgIHZpZXcgb3B0aW9u IGluIHRoZSBjb250ZXh0IG1lbnUKICAgICovCiAgIGlmICghcGdCcm93c2VyLk5vZGVzWydtdmll dyddKSB7Ci0gICAgcGdCcm93c2VyLk5vZGVzWydtdmlldyddID0gcGdCcm93c2VyLk5vZGUuZXh0 ZW5kKHsKLSAgICAgIHBhcmVudF90eXBlOiBbJ3NjaGVtYScsICdjYXRhbG9nJ10sCisgICAgcGdC cm93c2VyLk5vZGVzWydtdmlldyddID0gc2NoZW1hQ2hpbGQuU2NoZW1hQ2hpbGROb2RlLmV4dGVu ZCh7CiAgICAgICB0eXBlOiAnbXZpZXcnLAogICAgICAgc3FsQWx0ZXJIZWxwOiAnc3FsLWFsdGVy bWF0ZXJpYWxpemVkdmlldy5odG1sJywKICAgICAgIHNxbENyZWF0ZUhlbHA6ICdzcWwtY3JlYXRl bWF0ZXJpYWxpemVkdmlldy5odG1sJywKICAgICAgIGRpYWxvZ0hlbHA6IHVybF9mb3IoJ2hlbHAu c3RhdGljJywgeydmaWxlbmFtZSc6ICdtYXRlcmlhbGl6ZWRfdmlld19kaWFsb2cuaHRtbCd9KSwK ICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdNYXRlcmlhbGl6ZWQgVmlldycpLAotICAgICAgaGFzU1FM OiAgdHJ1ZSwKKyAgICAgIGhhc1NRTDogdHJ1ZSwKICAgICAgIGhhc0RlcGVuZHM6IHRydWUsCiAg ICAgICBoYXNTY3JpcHRUeXBlczogWydjcmVhdGUnLCAnc2VsZWN0J10sCiAgICAgICBjb2xsZWN0 aW9uX3R5cGU6ICdjb2xsLW12aWV3JywKLSAgICAgIGNhbkRyb3A6IHBnQnJvd3Nlci5Ob2Rlc1sn c2NoZW1hJ10uY2FuQ2hpbGREcm9wLAotICAgICAgY2FuRHJvcENhc2NhZGU6IHBnQnJvd3Nlci5O b2Rlc1snc2NoZW1hJ10uY2FuQ2hpbGREcm9wLAogICAgICAgSW5pdDogZnVuY3Rpb24oKSB7CiAK ICAgICAgICAgLy8gQXZvaWQgbXVsaXRwbGUgcmVnaXN0cmF0aW9uIG9mIG1lbnVzCkBAIC0yMzYs NDMgKzIzNyw2IEBAIGRlZmluZSgncGdhZG1pbi5ub2RlLm12aWV3JywgWwogCiAgICAgICB9KSwK IAotICAgICAgLyoqCi0gICAgICAgIFNob3cgb3IgaGlkZSBjcmVhdGUgdmlldyBtZW51IG9wdGlv biBvbiBwYXJlbnQgbm9kZQotICAgICAgICBhbmQgaGlkZSBmb3Igc3lzdGVtIHZpZXcgaW4gY2F0 YWxvZ3MuCi0gICAgICAgKi8KLSAgICAgIGNhbkNyZWF0ZTogZnVuY3Rpb24oaXRlbURhdGEsIGl0 ZW0sIGRhdGEpIHsKLQotICAgICAgICAvLyBJZiBjaGVjayBpcyBmYWxzZSB0aGVuLCB3ZSB3aWxs IGFsbG93IGNyZWF0ZSBtZW51Ci0gICAgICAgIGlmIChkYXRhICYmIGRhdGEuY2hlY2sgPT09IGZh bHNlKQotICAgICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgIHZhciB0ID0gcGdCcm93c2Vy LnRyZWUsIGkgPSBpdGVtLCBkID0gaXRlbURhdGE7Ci0KLSAgICAgICAgLy8gVG8gaXRlcmF0ZSBv dmVyIHRyZWUgdG8gY2hlY2sgcGFyZW50IG5vZGUKLSAgICAgICAgd2hpbGUgKGkpIHsKLQotICAg ICAgICAgIC8vIElmIGl0IGlzIHNjaGVtYSB0aGVuIGFsbG93IHVzZXIgdG8gY3JlYXRlIHZpZXcK LSAgICAgICAgICBpZiAoXy5pbmRleE9mKFsnc2NoZW1hJ10sIGQuX3R5cGUpID4gLTEpCi0gICAg ICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgICAgICAgIGlmICgnY29sbC1tdmlldycgPT0gZC5f dHlwZSkgewotCi0gICAgICAgICAgICAvLyBDaGVjayBpZiB3ZSBhcmUgbm90IGNoaWxkIG9mIHZp ZXcKLSAgICAgICAgICAgIHZhciBwcmV2X2kgPSB0Lmhhc1BhcmVudChpKSA/IHQucGFyZW50KGkp IDogbnVsbCwKLSAgICAgICAgICAgICAgcHJldl9kID0gcHJldl9pID8gdC5pdGVtRGF0YShwcmV2 X2kpIDogbnVsbDsKLSAgICAgICAgICAgIGlmKCBwcmV2X2QuX3R5cGUgPT0gJ2NhdGFsb2cnKSB7 Ci0gICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAg ICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAg ICAgICBpID0gdC5oYXNQYXJlbnQoaSkgPyB0LnBhcmVudChpKSA6IG51bGw7Ci0gICAgICAgICAg ZCA9IGkgPyB0Lml0ZW1EYXRhKGkpIDogbnVsbDsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIGJ5 IGRlZmF1bHQgd2UgZG8gbm90IHdhbnQgdG8gYWxsb3cgY3JlYXRlIG1lbnUKLSAgICAgICAgcmV0 dXJuIHRydWU7Ci0gICAgICB9LAogICAgICAgcmVmcmVzaF9tdmlldzogZnVuY3Rpb24oYXJncykg ewogICAgICAgICB2YXIgaW5wdXQgPSBhcmdzIHx8IHt9LAogICAgICAgICAgIG9iaiA9IHRoaXMs CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy92aWV3cy9zdGF0aWMvanMvdmlldy5qcyBiL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3N0YXRp Yy9qcy92aWV3LmpzCmluZGV4IDU3NTVhNTA5Li5jZDYxZWYyMSAxMDA2NDQKLS0tIGEvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdmll d3Mvc3RhdGljL2pzL3ZpZXcuanMKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdmlld3Mvc3RhdGljL2pzL3ZpZXcuanMKQEAg LTEsOSArMSwxMiBAQAogZGVmaW5lKCdwZ2FkbWluLm5vZGUudmlldycsIFsKLSAgJ3NvdXJjZXMv Z2V0dGV4dCcsCi0gICdzb3VyY2VzL3VybF9mb3InLCAnanF1ZXJ5JywgJ3VuZGVyc2NvcmUnLCAn c291cmNlcy9wZ2FkbWluJywKLSAgJ3BnYWRtaW4uYnJvd3NlcicsICdwZ2FkbWluLmJhY2tmb3Jt JywgJ3BnYWRtaW4uYnJvd3Nlci5zZXJ2ZXIucHJpdmlsZWdlJywKKyAgJ3NvdXJjZXMvZ2V0dGV4 dCcsICdzb3VyY2VzL3VybF9mb3InLCAnanF1ZXJ5JywgJ3VuZGVyc2NvcmUnLAorICAnc291cmNl cy9wZ2FkbWluJywgJ3BnYWRtaW4uYnJvd3NlcicsICdwZ2FkbWluLmJhY2tmb3JtJywKKyAgJ3Bn YWRtaW4ubm9kZS5zY2hlbWEuZGlyL2NoaWxkJywgJ3BnYWRtaW4uYnJvd3Nlci5zZXJ2ZXIucHJp dmlsZWdlJywKICAgJ3BnYWRtaW4ubm9kZS5ydWxlJywKLV0sIGZ1bmN0aW9uKGdldHRleHQsIHVy bF9mb3IsICQsIF8sIHBnQWRtaW4sIHBnQnJvd3NlciwgQmFja2Zvcm0pIHsKK10sIGZ1bmN0aW9u KAorICBnZXR0ZXh0LCB1cmxfZm9yLCAkLCBfLCBwZ0FkbWluLCBwZ0Jyb3dzZXIsIEJhY2tmb3Jt LCBzY2hlbWFDaGlsZAorKSB7CisKIAogICAvKioKICAgICBDcmVhdGUgYW5kIGFkZCBhIHZpZXcg Y29sbGVjdGlvbiBpbnRvIG5vZGVzCkBAIC0yOCwxNCArMzEsOSBAQCBkZWZpbmUoJ3BnYWRtaW4u bm9kZS52aWV3JywgWwogICAgIHVuZGVyIHdoaWNoIHRoaXMgbm9kZSB0byBkaXNwbGF5CiAgICAg QHBhcmFtIHt2YXJpYWJsZX0gdHlwZSAtIFR5cGUgb2YgTm9kZQogICAgIEBwYXJhbSB7dmFyaWFi bGV9IGhhc1NRTCAtIFRvIHNob3cgU1FMIHRhYgotICAgIEBwYXJhbSB7dmFyaWFibGV9IGNhbkRy b3AgLSBBZGRzIGRyb3AgdmlldyBvcHRpb24KLSAgICBpbiB0aGUgY29udGV4dCBtZW51Ci0gICAg QHBhcmFtIHt2YXJpYWJsZX0gY2FuRHJvcENhc2NhZGUgLSBBZGRzIGRyb3AgQ2FzY2FkZQotICAg IHZpZXcgb3B0aW9uIGluIHRoZSBjb250ZXh0IG1lbnUKICAgICovCiAgIGlmICghcGdCcm93c2Vy Lk5vZGVzWyd2aWV3J10pIHsKLSAgICBwZ0Jyb3dzZXIuTm9kZXNbJ3ZpZXcnXSA9IHBnQnJvd3Nl ci5Ob2RlLmV4dGVuZCh7Ci0gICAgICBwYXJlbnRfdHlwZTogWydzY2hlbWEnLCAnY2F0YWxvZydd LAorICAgIHBnQnJvd3Nlci5Ob2Rlc1sndmlldyddID0gc2NoZW1hQ2hpbGQuU2NoZW1hQ2hpbGRO b2RlLmV4dGVuZCh7CiAgICAgICB0eXBlOiAndmlldycsCiAgICAgICBzcWxBbHRlckhlbHA6ICdz cWwtYWx0ZXJ2aWV3Lmh0bWwnLAogICAgICAgc3FsQ3JlYXRlSGVscDogJ3NxbC1jcmVhdGV2aWV3 Lmh0bWwnLApAQCAtNDUsOCArNDMsNiBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS52aWV3JywgWwog ICAgICAgaGFzRGVwZW5kczogdHJ1ZSwKICAgICAgIGhhc1NjcmlwdFR5cGVzOiBbJ2NyZWF0ZScs ICdzZWxlY3QnLCAnaW5zZXJ0J10sCiAgICAgICBjb2xsZWN0aW9uX3R5cGU6ICdjb2xsLXZpZXcn LAotICAgICAgY2FuRHJvcDogcGdCcm93c2VyLk5vZGVzWydzY2hlbWEnXS5jYW5DaGlsZERyb3As Ci0gICAgICBjYW5Ecm9wQ2FzY2FkZTogcGdCcm93c2VyLk5vZGVzWydzY2hlbWEnXS5jYW5DaGls ZERyb3AsCiAgICAgICBJbml0OiBmdW5jdGlvbigpIHsKIAogICAgICAgICAvLyBBdm9pZCBtdWxp dHBsZSByZWdpc3RyYXRpb24gb2YgbWVudXMKQEAgLTE5Nyw0NSArMTkzLDYgQEAgZGVmaW5lKCdw Z2FkbWluLm5vZGUudmlldycsIFsKICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0s CiAgICAgICB9KSwKLQotICAgICAgLyoqCi0gICAgICAgIFNob3cgb3IgaGlkZSBjcmVhdGUgdmll dyBtZW51IG9wdGlvbiBvbiBwYXJlbnQgbm9kZQotICAgICAgICBhbmQgaGlkZSBmb3Igc3lzdGVt IHZpZXcgaW4gY2F0YWxvZ3MuCi0gICAgICAgICovCi0gICAgICBjYW5DcmVhdGU6IGZ1bmN0aW9u KGl0ZW1EYXRhLCBpdGVtLCBkYXRhKSB7Ci0KLSAgICAgICAgLy8gSWYgY2hlY2sgaXMgZmFsc2Ug dGhlbiwgd2Ugd2lsbCBhbGxvdyBjcmVhdGUgbWVudQotICAgICAgICBpZiAoZGF0YSAmJiBkYXRh LmNoZWNrID09IGZhbHNlKQotICAgICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgIHZhciB0 ID0gcGdCcm93c2VyLnRyZWUsIGkgPSBpdGVtLCBkID0gaXRlbURhdGE7Ci0KLSAgICAgICAgLy8g VG8gaXRlcmF0ZSBvdmVyIHRyZWUgdG8gY2hlY2sgcGFyZW50IG5vZGUKLSAgICAgICAgd2hpbGUg KGkpIHsKLQotICAgICAgICAgIC8vIElmIGl0IGlzIHNjaGVtYSB0aGVuIGFsbG93IHVzZXIgdG8g Y3JlYXRlIHZpZXcKLSAgICAgICAgICBpZiAoXy5pbmRleE9mKFsnc2NoZW1hJ10sIGQuX3R5cGUp ID4gLTEpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgICAgICAgIGlmICgnY29sbC12 aWV3JyA9PSBkLl90eXBlKSB7Ci0KLSAgICAgICAgICAgIC8vIENoZWNrIGlmIHdlIGFyZSBub3Qg Y2hpbGQgb2YgdmlldwotICAgICAgICAgICAgdmFyIHByZXZfaSA9IHQuaGFzUGFyZW50KGkpID8g dC5wYXJlbnQoaSkgOiBudWxsLAotICAgICAgICAgICAgICBwcmV2X2QgPSBwcmV2X2kgPyB0Lml0 ZW1EYXRhKHByZXZfaSkgOiBudWxsOwotICAgICAgICAgICAgaWYoIHByZXZfZC5fdHlwZSA9PSAn Y2F0YWxvZycpIHsKLSAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfSBl bHNlIHsKLSAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAg ICAgfQotICAgICAgICAgIGkgPSB0Lmhhc1BhcmVudChpKSA/IHQucGFyZW50KGkpIDogbnVsbDsK LSAgICAgICAgICBkID0gaSA/IHQuaXRlbURhdGEoaSkgOiBudWxsOwotICAgICAgICB9Ci0KLSAg ICAgICAgLy8gYnkgZGVmYXVsdCB3ZSBkbyBub3Qgd2FudCB0byBhbGxvdyBjcmVhdGUgbWVudQot ICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgICAgfSwKICAgICB9KTsKICAgfQogCmRpZmYgLS1n aXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3N0YXRpYy9qcy9jb2xsZWN0aW9uLmpzIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zdGF0aWMvanMvY29sbGVjdGlvbi5qcwppbmRleCAwNWYwZWRkNS4uNjdl NDQyMTQgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc3RhdGljL2pzL2NvbGxlY3Rp b24uanMKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zdGF0aWMvanMvY29sbGVjdGlvbi5qcwpA QCAtMTE1LDE3ICsxMTUsMTcgQEAgZGVmaW5lKFsKICAgICAgICAgLy8gRmV0Y2ggRGF0YQogICAg ICAgICBjb2xsZWN0aW9uLmZldGNoKHsKICAgICAgICAgICByZXNldDogdHJ1ZSwKLSAgICAgICAg ICBlcnJvcjogZnVuY3Rpb24oeGhyLCBlcnJvciwgbWVzc2FnZSkgeworICAgICAgICAgIGVycm9y OiBmdW5jdGlvbihtb2RlbCwgZXJyb3IsIHhocikgewogICAgICAgICAgICAgcGdCcm93c2VyLkV2 ZW50cy50cmlnZ2VyKAogICAgICAgICAgICAgICAncGdhZG1pbjpjb2xsZWN0aW9uOnJldHJpZXZh bDplcnJvcicsICdwcm9wZXJ0aWVzJywgeGhyLCBlcnJvciwKLSAgICAgICAgICAgICAgbWVzc2Fn ZSwgaXRlbSwgdGhhdAorICAgICAgICAgICAgICBlcnJvci5tZXNzYWdlLCBpdGVtLCB0aGF0CiAg ICAgICAgICAgICApOwogICAgICAgICAgICAgaWYgKCFBbGVydGlmeS5wZ0hhbmRsZUl0ZW1FcnJv cigKLSAgICAgICAgICAgICAgeGhyLCBlcnJvciwgbWVzc2FnZSwge2l0ZW06IGl0ZW0sIGluZm86 IGluZm99CisgICAgICAgICAgICAgIHhociwgZXJyb3IsIGVycm9yLm1lc3NhZ2UsIHtpdGVtOiBp dGVtLCBpbmZvOiBpbmZvfQogICAgICAgICAgICAgKSkgewogICAgICAgICAgICAgICBBbGVydGlm eS5wZ05vdGlmaWVyKGVycm9yLCB4aHIsIFMoCiAgICAgICAgICAgICAgICAgZ2V0dGV4dCgnRXJy b3IgcmV0cmlldmluZyBwcm9wZXJ0aWVzIC0gJXMuJykKLSAgICAgICAgICAgICAgKS5zcHJpbnRm KG1lc3NhZ2UgfHwgdGhhdC5sYWJlbCkudmFsdWUoKSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAg ICAgICkuc3ByaW50ZihlcnJvci5tZXNzYWdlIHx8IHRoYXQubGFiZWwpLnZhbHVlKCksIGZ1bmN0 aW9uKCkgewogICAgICAgICAgICAgICAgIGNvbnNvbGUud2Fybihhcmd1bWVudHMpOwogICAgICAg ICAgICAgICB9KTsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc3RhdGljL2pzL25vZGUuanMgYi93ZWIvcGdhZG1pbi9icm93c2VyL3N0YXRpYy9qcy9ub2Rl LmpzCmluZGV4IDQ2MGFiMDNkLi4zNWVjYTI0YiAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJv d3Nlci9zdGF0aWMvanMvbm9kZS5qcworKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3N0YXRpYy9q cy9ub2RlLmpzCkBAIC0xLDkgKzEsMTMgQEAKIGRlZmluZSgncGdhZG1pbi5icm93c2VyLm5vZGUn LCBbCisgICdzb3VyY2VzL3RyZWUvcGdhZG1pbl90cmVlX25vZGUnLAogICAnc291cmNlcy9nZXR0 ZXh0JywgJ2pxdWVyeScsICd1bmRlcnNjb3JlJywgJ3VuZGVyc2NvcmUuc3RyaW5nJywgJ3NvdXJj ZXMvcGdhZG1pbicsCiAgICdwZ2FkbWluLmJyb3dzZXIubWVudScsICdiYWNrYm9uZScsICdwZ2Fk bWluLmFsZXJ0aWZ5anMnLCAncGdhZG1pbi5icm93c2VyLmRhdGFtb2RlbCcsCiAgICdiYWNrZm9y bScsICdzb3VyY2VzL2Jyb3dzZXIvZ2VuZXJhdGVfdXJsJywgJ3NvdXJjZXMvdXRpbHMnLCAncGdh ZG1pbi5icm93c2VyLnV0aWxzJywKICAgJ3BnYWRtaW4uYmFja2Zvcm0nLAotXSwgZnVuY3Rpb24o Z2V0dGV4dCwgJCwgXywgUywgcGdBZG1pbiwgTWVudSwgQmFja2JvbmUsIEFsZXJ0aWZ5LCBwZ0Jy b3dzZXIsIEJhY2tmb3JtLCBnZW5lcmF0ZVVybCwgY29tbW9uVXRpbHMpIHsKK10sIGZ1bmN0aW9u KAorICBwZ2FkbWluVHJlZU5vZGUsCisgIGdldHRleHQsICQsIF8sIFMsIHBnQWRtaW4sIE1lbnUs IEJhY2tib25lLCBBbGVydGlmeSwgcGdCcm93c2VyLCBCYWNrZm9ybSwgZ2VuZXJhdGVVcmwsIGNv bW1vblV0aWxzCispIHsKIAogICB2YXIgd2NEb2NrZXIgPSB3aW5kb3cud2NEb2NrZXIsCiAgICAg a2V5Q29kZSA9IHsKQEAgLTI4LDcgKzMyLDcgQEAgZGVmaW5lKCdwZ2FkbWluLmJyb3dzZXIubm9k ZScsIFsKICAgLy8KICAgLy8gSXQgaXMgdW5saWtlbHkgLSB3ZSB3aWxsIGluc3RhbnRpYXRlIGFu IG9iamVjdCBmb3IgdGhpcyBjbGFzcy4KICAgLy8gKEluc3BpcmVkIGJ5IEJhY2tib25lLmV4dGVu ZCBmdW5jdGlvbikKLSAgcGdCcm93c2VyLk5vZGUuZXh0ZW5kID0gZnVuY3Rpb24ocHJvcHMpIHsK KyAgcGdCcm93c2VyLk5vZGUuZXh0ZW5kID0gZnVuY3Rpb24ocHJvcHMsIGluaXRpYWxpemUpIHsK ICAgICB2YXIgcGFyZW50ID0gdGhpczsKICAgICB2YXIgY2hpbGQ7CiAKQEAgLTQ0LDYgKzQ4LDEw IEBAIGRlZmluZSgncGdhZG1pbi5icm93c2VyLm5vZGUnLCBbCiAgICAgLy8gTWFrZSBzdXJlIC0g YSBjaGlsZCBoYXZlIGFsbCB0aGUgY2FsbGJhY2tzIG9mIHRoZSBwYXJlbnQuCiAgICAgY2hpbGQu Y2FsbGJhY2tzID0gXy5leHRlbmQoe30sIHBhcmVudC5jYWxsYmFja3MsIHByb3BzLmNhbGxiYWNr cyk7CiAKKyAgICAvLyBMZXQncyBub3QgYmluZCB0aGUgY2FsbGJhY2tzLCBvciBpbml0aWFsaXpl IHRoZSBjaGlsZC4KKyAgICBpZiAoaW5pdGlhbGl6ZSA9PT0gZmFsc2UpCisgICAgICByZXR1cm4g Y2hpbGQ7CisKICAgICB2YXIgYmluZFRvQ2hpbGQgPSBmdW5jdGlvbihjYikgewogICAgICAgICBp ZiAodHlwZW9mKGNoaWxkLmNhbGxiYWNrc1tjYl0pID09ICdmdW5jdGlvbicpIHsKICAgICAgICAg ICBjaGlsZC5jYWxsYmFja3NbY2JdID0gY2hpbGQuY2FsbGJhY2tzW2NiXS5iaW5kKGNoaWxkKTsK QEAgLTE1NjYsNyArMTU3NCw2IEBAIGRlZmluZSgncGdhZG1pbi5icm93c2VyLm5vZGUnLCBbCiAg ICAgICogZGVwZW5kcywgc3RhdGlzdGljcwogICAgICAqLwogICAgIGdlbmVyYXRlX3VybDogZnVu Y3Rpb24oaXRlbSwgdHlwZSwgZCwgd2l0aF9pZCwgaW5mbykgewotCiAgICAgICB2YXIgb3BVUkwg PSB7CiAgICAgICAgICAgJ2NyZWF0ZSc6ICdvYmonLAogICAgICAgICAgICdkcm9wJzogJ29iaics CkBAIC0xNjA4LDI0ICsxNjE1LDcgQEAgZGVmaW5lKCdwZ2FkbWluLmJyb3dzZXIubm9kZScsIFsK ICAgICBDb2xsZWN0aW9uOiBwZ0Jyb3dzZXIuRGF0YUNvbGxlY3Rpb24sCiAgICAgLy8gQmFzZSBj bGFzcyBmb3IgTm9kZSBEYXRhIE1vZGVsCiAgICAgTW9kZWw6IHBnQnJvd3Nlci5EYXRhTW9kZWws Ci0gICAgZ2V0VHJlZU5vZGVIaWVyYXJjaHk6IGZ1bmN0aW9uKGkpIHsKLSAgICAgIHZhciBpZHgg PSAwLAotICAgICAgICByZXMgPSB7fSwKLSAgICAgICAgdCA9IHBnQnJvd3Nlci50cmVlLAotICAg ICAgICBkOwotICAgICAgZG8gewotICAgICAgICBkID0gdC5pdGVtRGF0YShpKTsKLSAgICAgICAg aWYgKGQuX3R5cGUgaW4gcGdCcm93c2VyLk5vZGVzICYmIHBnQnJvd3Nlci5Ob2Rlc1tkLl90eXBl XS5oYXNJZCkgewotICAgICAgICAgIHJlc1tkLl90eXBlXSA9IF8uZXh0ZW5kKHt9LCBkLCB7Ci0g ICAgICAgICAgICAncHJpb3JpdHknOiBpZHgsCi0gICAgICAgICAgfSk7Ci0gICAgICAgICAgaWR4 IC09IDE7Ci0gICAgICAgIH0KLSAgICAgICAgaSA9IHQuaGFzUGFyZW50KGkpID8gdC5wYXJlbnQo aSkgOiBudWxsOwotICAgICAgfSB3aGlsZSAoaSk7Ci0KLSAgICAgIHJldHVybiByZXM7Ci0gICAg fSwKKyAgICBnZXRUcmVlTm9kZUhpZXJhcmNoeTogcGdhZG1pblRyZWVOb2RlLmdldFRyZWVOb2Rl SGllcmFyY2h5RnJvbUlkZW50aWZpZXIuYmluZChwZ0Jyb3dzZXIpLAogICAgIGNhY2hlOiBmdW5j dGlvbih1cmwsIG5vZGVfaW5mbywgbGV2ZWwsIGRhdGEpIHsKICAgICAgIHZhciBjYWNoZWQgPSB0 aGlzLmNhY2hlZCA9IHRoaXMuY2FjaGVkIHx8IHt9LAogICAgICAgICBoYXNoID0gdXJsLApkaWZm IC0tZ2l0IGEvd2ViL3BnYWRtaW4vc3RhdGljL2pzL2FsZXJ0aWZ5L2RpYWxvZy5qcyBiL3dlYi9w Z2FkbWluL3N0YXRpYy9qcy9hbGVydGlmeS9kaWFsb2cuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAuLjRhMGExYjg5Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4v c3RhdGljL2pzL2FsZXJ0aWZ5L2RpYWxvZy5qcwpAQCAtMCwwICsxLDE1MCBAQAorLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8K Ky8vIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKy8vCisvLyBDb3B5cmlnaHQgKEMpIDIw MTMgLSAyMDE4LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisvLyBUaGlzIHNvZnR3YXJl IGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKy8vCisvLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCitp bXBvcnQgZ2V0dGV4dCBmcm9tICcuLi9nZXR0ZXh0JzsKK2ltcG9ydCB7c3ByaW50Zn0gZnJvbSAn c3ByaW50Zi1qcyc7CitpbXBvcnQge0RpYWxvZ0ZhY3Rvcnl9IGZyb20gJy4vZGlhbG9nX2ZhY3Rv cnknOworaW1wb3J0IEJhY2tmb3JtIGZyb20gJy4uL2JhY2tmb3JtLnBnYWRtaW4nOworaW1wb3J0 IHtnZXRUcmVlTm9kZUhpZXJhcmNoeUZyb21JZGVudGlmaWVyfSBmcm9tICcuLi90cmVlL3BnYWRt aW5fdHJlZV9ub2RlJzsKKworLyoqCisgKiBUaGlzIGNsYXNzIGNhbiBiZSBleHRlbmRlZCB0byBj cmVhdGUgbmV3IGRpYWxvZyBib3hlcy4KKyAqIEV4YW1wbGVzIG9mIHRoaXMgY2FuIGJlIGZvdW5k IGluOgorICogYHdlYi9wZ2FkbWluL3N0YXRpYy9qcy9iYWNrdXAvYmFja3VwX2RpYWxvZy5qc2AK KyAqCisgKiBEbyBub3QgZm9yZ2V0IHRvIGFkZCB0aGUgbmV3IERpYWxvZyB0eXBlIHRvIHRoZSBg RGlhbG9nRmFjdG9yeWAKKyAqLworZXhwb3J0IGNsYXNzIERpYWxvZyB7CisgIGNvbnN0cnVjdG9y KGVycm9yQWxlcnRUaXRsZSwKKyAgICAgICAgICAgICAgZGlhbG9nQ29udGFpbmVyU2VsZWN0b3Is CisgICAgICAgICAgICAgIHBnQnJvd3NlciwgJCwgYWxlcnRpZnksIERpYWxvZ01vZGVsLAorICAg ICAgICAgICAgICBiYWNrZm9ybSA9IEJhY2tmb3JtKSB7CisgICAgdGhpcy5lcnJvckFsZXJ0VGl0 bGUgPSBlcnJvckFsZXJ0VGl0bGU7CisgICAgdGhpcy5hbGVydGlmeSA9IGFsZXJ0aWZ5OworICAg IHRoaXMucGdCcm93c2VyID0gcGdCcm93c2VyOworICAgIHRoaXMuanF1ZXJ5ID0gJDsKKyAgICB0 aGlzLmRpYWxvZ01vZGVsID0gRGlhbG9nTW9kZWw7CisgICAgdGhpcy5iYWNrZm9ybSA9IGJhY2tm b3JtOworICAgIHRoaXMuZGlhbG9nQ29udGFpbmVyU2VsZWN0b3IgPSBkaWFsb2dDb250YWluZXJT ZWxlY3RvcjsKKyAgfQorCisgIHJldHJpZXZlQW5jZXN0b3JPZlR5cGVTZXJ2ZXIoaXRlbSkgewor ICAgIGxldCBzZXJ2ZXJJbmZvcm1hdGlvbiA9IG51bGw7CisgICAgbGV0IGFjaVRyZWVJdGVtID0g aXRlbSB8fCB0aGlzLnBnQnJvd3Nlci50cmVlTWVudS5zZWxlY3RlZCgpOworICAgIGxldCB0cmVl Tm9kZSA9IHRoaXMucGdCcm93c2VyLnRyZWVNZW51LmZpbmROb2RlQnlEb21FbGVtZW50KGFjaVRy ZWVJdGVtKTsKKworICAgIGlmICh0cmVlTm9kZSkgeworICAgICAgbGV0IG5vZGVEYXRhOworICAg ICAgbGV0IGRhdGFiYXNlTm9kZSA9IHRyZWVOb2RlLmFuY2VzdG9yTm9kZSgKKyAgICAgICAgKG5v ZGUpID0+IHsKKyAgICAgICAgICBub2RlRGF0YSA9IG5vZGUuZ2V0RGF0YSgpOworICAgICAgICAg IHJldHVybiAobm9kZURhdGEuX3R5cGUgPT09ICdkYXRhYmFzZScpOworICAgICAgICB9CisgICAg ICApOworICAgICAgbGV0IGlzU2VydmVyTm9kZSA9IChub2RlKSA9PiB7CisgICAgICAgIG5vZGVE YXRhID0gbm9kZS5nZXREYXRhKCk7CisgICAgICAgIHJldHVybiBub2RlRGF0YS5fdHlwZSA9PT0g J3NlcnZlcic7CisgICAgICB9OworCisgICAgICBpZiAoZGF0YWJhc2VOb2RlICE9PSBudWxsKSB7 CisgICAgICAgIGlmIChub2RlRGF0YS5fbGFiZWwuaW5kZXhPZignPScpID49IDApIHsKKyAgICAg ICAgICB0aGlzLmFsZXJ0aWZ5LmFsZXJ0KAorICAgICAgICAgICAgZ2V0dGV4dCh0aGlzLmVycm9y QWxlcnRUaXRsZSksCisgICAgICAgICAgICBnZXR0ZXh0KAorICAgICAgICAgICAgICAnRGF0YWJh c2VzIHdpdGggPSBzeW1ib2xzIGluIHRoZSBuYW1lIGNhbm5vdCBiZSBiYWNrZWQgdXAgb3IgcmVz dG9yZWQgdXNpbmcgdGhpcyB1dGlsaXR5LicKKyAgICAgICAgICAgICkKKyAgICAgICAgICApOwor ICAgICAgICB9IGVsc2UgeworICAgICAgICAgIGlmIChkYXRhYmFzZU5vZGUuaGFzUGFyZW50KGlz U2VydmVyTm9kZSkpCisgICAgICAgICAgICBzZXJ2ZXJJbmZvcm1hdGlvbiA9IG5vZGVEYXRhOwor ICAgICAgICB9CisgICAgICB9IGVsc2UgeworICAgICAgICBpZiAodHJlZU5vZGUuYW55RmFtaWx5 TWVtYmVyKGlzU2VydmVyTm9kZSkpCisgICAgICAgICAgc2VydmVySW5mb3JtYXRpb24gPSBub2Rl RGF0YTsKKyAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoc2VydmVySW5mb3JtYXRpb24gPT09IG51 bGwpIHsKKyAgICAgIHRoaXMuYWxlcnRpZnkuYWxlcnQoCisgICAgICAgIGdldHRleHQodGhpcy5l cnJvckFsZXJ0VGl0bGUpLAorICAgICAgICBnZXR0ZXh0KCdQbGVhc2Ugc2VsZWN0IHNlcnZlciBv ciBjaGlsZCBub2RlIGZyb20gdGhlIGJyb3dzZXIgdHJlZS4nKQorICAgICAgKTsKKyAgICB9CisK KyAgICByZXR1cm4gc2VydmVySW5mb3JtYXRpb247CisgIH0KKworICBoYXNCaW5hcmllc0NvbmZp Z3VyYXRpb24oc2VydmVySW5mb3JtYXRpb24pIHsKKyAgICBjb25zdCBtb2R1bGUgPSAncGF0aHMn OworICAgIGxldCBwcmVmZXJlbmNlX25hbWUgPSAncGdfYmluX2Rpcic7CisgICAgbGV0IG1zZyA9 IGdldHRleHQoJ1BsZWFzZSBjb25maWd1cmUgdGhlIFBvc3RncmVTUUwgQmluYXJ5IFBhdGggaW4g dGhlIFByZWZlcmVuY2VzIGRpYWxvZy4nKTsKKworICAgIGlmICgoc2VydmVySW5mb3JtYXRpb24u dHlwZSAmJiBzZXJ2ZXJJbmZvcm1hdGlvbi50eXBlID09PSAncHBhcycpIHx8CisgICAgICBzZXJ2 ZXJJbmZvcm1hdGlvbi5zZXJ2ZXJfdHlwZSA9PT0gJ3BwYXMnKSB7CisgICAgICBwcmVmZXJlbmNl X25hbWUgPSAncHBhc19iaW5fZGlyJzsKKyAgICAgIG1zZyA9IGdldHRleHQoJ1BsZWFzZSBjb25m aWd1cmUgdGhlIEVEQiBBZHZhbmNlZCBTZXJ2ZXIgQmluYXJ5IFBhdGggaW4gdGhlIFByZWZlcmVu Y2VzIGRpYWxvZy4nKTsKKyAgICB9CisgICAgY29uc3QgcHJlZmVyZW5jZSA9IHRoaXMucGdCcm93 c2VyLmdldF9wcmVmZXJlbmNlKG1vZHVsZSwgcHJlZmVyZW5jZV9uYW1lKTsKKworICAgIGlmIChw cmVmZXJlbmNlKSB7CisgICAgICBpZiAoIXByZWZlcmVuY2UudmFsdWUpIHsKKyAgICAgICAgdGhp cy5hbGVydGlmeS5hbGVydChnZXR0ZXh0KCdDb25maWd1cmF0aW9uIHJlcXVpcmVkJyksIG1zZyk7 CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgdGhp cy5hbGVydGlmeS5hbGVydCgKKyAgICAgICAgZ2V0dGV4dCh0aGlzLmVycm9yQWxlcnRUaXRsZSks CisgICAgICAgIHNwcmludGYoZ2V0dGV4dCgnRmFpbGVkIHRvIGxvYWQgcHJlZmVyZW5jZSAlcyBv ZiBtb2R1bGUgJXMnKSwgcHJlZmVyZW5jZV9uYW1lLCBtb2R1bGUpCisgICAgICApOworICAgICAg cmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKKyAgfQorCisgIGRpYWxvZ05h bWUoKSB7CisgICAgcmV0dXJuIHVuZGVmaW5lZDsKKyAgfQorCisgIGNyZWF0ZU9yR2V0RGlhbG9n KGRpYWxvZ1RpdGxlLCB0eXBlT2ZEaWFsb2cpIHsKKyAgICBjb25zdCBkaWFsb2dOYW1lID0gdGhp cy5kaWFsb2dOYW1lKHR5cGVPZkRpYWxvZyk7CisKKyAgICBpZiAoIXRoaXMuYWxlcnRpZnlbZGlh bG9nTmFtZV0pIHsKKyAgICAgIGNvbnN0IHNlbGYgPSB0aGlzOworICAgICAgdGhpcy5hbGVydGlm eS5kaWFsb2coZGlhbG9nTmFtZSwgZnVuY3Rpb24gZmFjdG9yeSgpIHsKKyAgICAgICAgcmV0dXJu IHNlbGYuZGlhbG9nRmFjdG9yeShkaWFsb2dUaXRsZSwgdHlwZU9mRGlhbG9nKTsKKyAgICAgIH0p OworICAgIH0KKyAgICByZXR1cm4gdGhpcy5hbGVydGlmeVtkaWFsb2dOYW1lXTsKKyAgfQorCisg IGRpYWxvZ0ZhY3RvcnkoZGlhbG9nVGl0bGUsIHR5cGVPZkRpYWxvZykgeworICAgIGNvbnN0IGZh Y3RvcnkgPSBuZXcgRGlhbG9nRmFjdG9yeSgKKyAgICAgIHRoaXMucGdCcm93c2VyLAorICAgICAg dGhpcy5qcXVlcnksCisgICAgICB0aGlzLmFsZXJ0aWZ5LAorICAgICAgdGhpcy5kaWFsb2dNb2Rl bCwKKyAgICAgIHRoaXMuYmFja2Zvcm0sCisgICAgICB0aGlzLmRpYWxvZ0NvbnRhaW5lclNlbGVj dG9yKTsKKyAgICByZXR1cm4gZmFjdG9yeS5jcmVhdGUoZGlhbG9nVGl0bGUsIHR5cGVPZkRpYWxv Zyk7CisgIH0KKworICBjYW5FeGVjdXRlT25DdXJyZW50RGF0YWJhc2UoYWNpVHJlZUl0ZW0pIHsK KyAgICBjb25zdCB0cmVlSW5mbyA9IGdldFRyZWVOb2RlSGllcmFyY2h5RnJvbUlkZW50aWZpZXIu YXBwbHkodGhpcy5wZ0Jyb3dzZXIsIFthY2lUcmVlSXRlbV0pOworCisgICAgaWYgKHRyZWVJbmZv LmRhdGFiYXNlICYmIHRyZWVJbmZvLmRhdGFiYXNlLl9sYWJlbC5pbmRleE9mKCc9JykgPj0gMCkg eworICAgICAgdGhpcy5hbGVydGlmeS5hbGVydCgKKyAgICAgICAgZ2V0dGV4dCh0aGlzLmVycm9y QWxlcnRUaXRsZSksCisgICAgICAgIGdldHRleHQoJ0RhdGFiYXNlcyB3aXRoID0gc3ltYm9scyBp biB0aGUgbmFtZSBjYW5ub3QgYmUgYmFja2VkIHVwIG9yIHJlc3RvcmVkIHVzaW5nIHRoaXMgdXRp bGl0eS4nKQorICAgICAgKTsKKyAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1 cm4gdHJ1ZTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vc3RhdGljL2pzL2FsZXJ0 aWZ5L2RpYWxvZ19mYWN0b3J5LmpzIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL2FsZXJ0aWZ5L2Rp YWxvZ19mYWN0b3J5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi41MDAx NDBiOAotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9hbGVydGlmeS9k aWFsb2dfZmFjdG9yeS5qcwpAQCAtMCwwICsxLDUyIEBACisvLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLworLy8gcGdBZG1pbiA0 IC0gUG9zdGdyZVNRTCBUb29scworLy8KKy8vIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTgsIFRo ZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KKy8vIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQg dW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorLy8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKK2ltcG9ydCAqIGFzIEJh Y2t1cERpYWxvZyBmcm9tICcuLi8uLi8uLi90b29scy9iYWNrdXAvc3RhdGljL2pzL2JhY2t1cF9k aWFsb2dfd3JhcHBlcic7CitpbXBvcnQge1Jlc3RvcmVEaWFsb2dXcmFwcGVyfSBmcm9tICcuLi8u Li8uLi90b29scy9yZXN0b3JlL3N0YXRpYy9qcy9yZXN0b3JlX2RpYWxvZ193cmFwcGVyJzsKKwor ZXhwb3J0IGNsYXNzIERpYWxvZ0ZhY3RvcnkgeworICBjb25zdHJ1Y3RvcihwZ0Jyb3dzZXIsICQs CisgICAgICAgICAgICAgIGFsZXJ0aWZ5LCBEaWFsb2dNb2RlbCwKKyAgICAgICAgICAgICAgYmFj a2Zvcm0sIGRpYWxvZ0NvbnRhaW5lclNlbGVjdG9yKSB7CisgICAgdGhpcy5wZ0Jyb3dzZXIgPSBw Z0Jyb3dzZXI7CisgICAgdGhpcy5qcXVlcnkgPSAkOworICAgIHRoaXMuYWxlcnRpZnkgPSBhbGVy dGlmeTsKKyAgICB0aGlzLmRpYWxvZ01vZGVsID0gRGlhbG9nTW9kZWw7CisgICAgdGhpcy5iYWNr Zm9ybSA9IGJhY2tmb3JtOworICAgIHRoaXMuZGlhbG9nQ29udGFpbmVyU2VsZWN0b3IgPSBkaWFs b2dDb250YWluZXJTZWxlY3RvcjsKKyAgfQorCisgIGNyZWF0ZShkaWFsb2dUaXRsZSwgdHlwZU9m RGlhbG9nKSB7CisgICAgaWYgKHR5cGVPZkRpYWxvZyA9PT0gJ3Jlc3RvcmUnKSB7CisgICAgICBy ZXR1cm4gdGhpcy5jcmVhdGVSZXN0b3JlRGlhbG9nKGRpYWxvZ1RpdGxlLCB0eXBlT2ZEaWFsb2cp OworICAgIH0gZWxzZSB7CisgICAgICByZXR1cm4gdGhpcy5jcmVhdGVCYWNrdXBEaWFsb2coZGlh bG9nVGl0bGUsIHR5cGVPZkRpYWxvZyk7CisgICAgfQorICB9CisKKyAgY3JlYXRlUmVzdG9yZURp YWxvZyhkaWFsb2dUaXRsZSwgdHlwZU9mRGlhbG9nKSB7CisgICAgcmV0dXJuIG5ldyBSZXN0b3Jl RGlhbG9nV3JhcHBlcigKKyAgICAgIHRoaXMuZGlhbG9nQ29udGFpbmVyU2VsZWN0b3IsIGRpYWxv Z1RpdGxlLCB0eXBlT2ZEaWFsb2csCisgICAgICB0aGlzLmpxdWVyeSwKKyAgICAgIHRoaXMucGdC cm93c2VyLAorICAgICAgdGhpcy5hbGVydGlmeSwKKyAgICAgIHRoaXMuZGlhbG9nTW9kZWwsCisg ICAgICB0aGlzLmJhY2tmb3JtKTsKKyAgfQorCisgIGNyZWF0ZUJhY2t1cERpYWxvZyhkaWFsb2dU aXRsZSwgdHlwZU9mRGlhbG9nKSB7CisgICAgcmV0dXJuIG5ldyBCYWNrdXBEaWFsb2cuQmFja3Vw RGlhbG9nV3JhcHBlcigKKyAgICAgIHRoaXMuZGlhbG9nQ29udGFpbmVyU2VsZWN0b3IsIGRpYWxv Z1RpdGxlLCB0eXBlT2ZEaWFsb2csCisgICAgICB0aGlzLmpxdWVyeSwKKyAgICAgIHRoaXMucGdC cm93c2VyLAorICAgICAgdGhpcy5hbGVydGlmeSwKKyAgICAgIHRoaXMuZGlhbG9nTW9kZWwsCisg ICAgICB0aGlzLmJhY2tmb3JtKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vc3Rh dGljL2pzL2FsZXJ0aWZ5L2RpYWxvZ193cmFwcGVyLmpzIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pz L2FsZXJ0aWZ5L2RpYWxvZ193cmFwcGVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwLi5iNWZmODIwNAotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9q cy9hbGVydGlmeS9kaWFsb2dfd3JhcHBlci5qcwpAQCAtMCwwICsxLDU3IEBACitpbXBvcnQgKiBh cyBjb21tb25VdGlscyBmcm9tICcuLi91dGlscyc7CisKK2V4cG9ydCBjbGFzcyBEaWFsb2dXcmFw cGVyIHsKKyAgY29uc3RydWN0b3IoCisgICAgZGlhbG9nQ29udGFpbmVyU2VsZWN0b3IsIGRpYWxv Z1RpdGxlLCBqcXVlcnksIHBnQnJvd3NlciwKKyAgICBhbGVydGlmeSwgZGlhbG9nTW9kZWwsIGJh Y2tmb3JtKSB7CisgICAgdGhpcy5ob29rcyA9IHsKKyAgICAgIG9uY2xvc2U6IGZ1bmN0aW9uICgp IHsKKyAgICAgICAgaWYgKHRoaXMudmlldykgeworICAgICAgICAgIHRoaXMudmlldy5yZW1vdmUo eworICAgICAgICAgICAgZGF0YTogdHJ1ZSwKKyAgICAgICAgICAgIGludGVybmFsOiB0cnVlLAor ICAgICAgICAgICAgc2lsZW50OiB0cnVlLAorICAgICAgICAgIH0pOworICAgICAgICB9CisgICAg ICB9LAorICAgIH07CisgICAgdGhpcy5kaWFsb2dDb250YWluZXJTZWxlY3RvciA9IGRpYWxvZ0Nv bnRhaW5lclNlbGVjdG9yOworICAgIHRoaXMuZGlhbG9nVGl0bGUgPSBkaWFsb2dUaXRsZTsKKyAg ICB0aGlzLmpxdWVyeSA9IGpxdWVyeTsKKyAgICB0aGlzLnBnQnJvd3NlciA9IHBnQnJvd3NlcjsK KyAgICB0aGlzLmFsZXJ0aWZ5ID0gYWxlcnRpZnk7CisgICAgdGhpcy5kaWFsb2dNb2RlbCA9IGRp YWxvZ01vZGVsOworICAgIHRoaXMuYmFja2Zvcm0gPSBiYWNrZm9ybTsKKyAgfQorCisgIGJ1aWxk KCkgeworICAgIHRoaXMuYWxlcnRpZnkucGdEaWFsb2dCdWlsZC5hcHBseSh0aGlzKTsKKyAgfQor CisgIHdhc0hlbHBCdXR0b25QcmVzc2VkKGUpIHsKKyAgICByZXR1cm4gZS5idXR0b24uZWxlbWVu dC5uYW1lID09PSAnZGlhbG9nX2hlbHAnCisgICAgICB8fCBlLmJ1dHRvbi5lbGVtZW50Lm5hbWUg PT09ICdvYmplY3RfaGVscCc7CisgIH0KKworICBnZXRTZWxlY3RlZE5vZGVEYXRhKHNlbGVjdGVk VHJlZU5vZGUpIHsKKyAgICBpZiAoIXRoaXMuaXNOb2RlU2VsZWN0ZWQoc2VsZWN0ZWRUcmVlTm9k ZSkpIHsKKyAgICAgIHJldHVybiB1bmRlZmluZWQ7CisgICAgfQorICAgIGNvbnN0IHRyZWVOb2Rl RGF0YSA9IHNlbGVjdGVkVHJlZU5vZGUuZ2V0RGF0YSgpOworICAgIGlmICh0cmVlTm9kZURhdGEp IHsKKyAgICAgIHJldHVybiB0cmVlTm9kZURhdGE7CisgICAgfQorICAgIHJldHVybiB1bmRlZmlu ZWQ7CisgIH0KKworICBmb2N1c09uRGlhbG9nKGRpYWxvZykgeworICAgIGRpYWxvZy4kZWwuYXR0 cigndGFiaW5kZXgnLCAtMSk7CisgICAgdGhpcy5wZ0Jyb3dzZXIua2V5Ym9hcmROYXZpZ2F0aW9u LmdldERpYWxvZ1RhYk5hdmlnYXRvcihkaWFsb2cpOworICAgIGNvbnN0IGNvbnRhaW5lciA9IGRp YWxvZy4kZWwuZmluZCgnLnRhYi1jb250ZW50OmZpcnN0ID4gLnRhYi1wYW5lLmFjdGl2ZTpmaXJz dCcpOworICAgIGNvbW1vblV0aWxzLmZpbmRBbmRTZXRGb2N1cyhjb250YWluZXIpOworICB9CisK KyAgaXNOb2RlU2VsZWN0ZWQoc2VsZWN0ZWRUcmVlTm9kZSkgeworICAgIHJldHVybiBzZWxlY3Rl ZFRyZWVOb2RlOworICB9Cit9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9zdGF0aWMvanMvbm9k ZXMvc3VwcG9ydGVkX2RhdGFiYXNlX25vZGUuanMgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvbm9k ZXMvc3VwcG9ydGVkX2RhdGFiYXNlX25vZGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAuLmZkZTFjZjk4Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vc3RhdGlj L2pzL25vZGVzL3N1cHBvcnRlZF9kYXRhYmFzZV9ub2RlLmpzCkBAIC0wLDAgKzEsMzcgQEAKKy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8KKy8vCisvLyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisvLworLy8gQ29weXJpZ2h0 IChDKSAyMDEzIC0gMjAxOCwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorLy8gVGhpcyBz b2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisvLworLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8KKworaW1wb3J0IHtpc1ZhbGlkVHJlZU5vZGVEYXRhfSBmcm9tICdzb3VyY2VzL3RyZWUvdHJl ZSc7CisKK2Z1bmN0aW9uIGNoZWNrQWxsb3dDb25uSWZEYXRhYmFzZU5vZGUodHJlZU5vZGVEYXRh KSB7CisgIHJldHVybiAodHJlZU5vZGVEYXRhLl90eXBlID09PSAnZGF0YWJhc2UnICYmIHRyZWVO b2RlRGF0YS5hbGxvd0Nvbm4pCisgICAgfHwgdHJlZU5vZGVEYXRhLl90eXBlICE9PSAnZGF0YWJh c2UnOworfQorCitmdW5jdGlvbiBhbmNlc3RvcldpdGhUeXBlQ2F0YWxvZyh0cmVlTm9kZSkgewor ICByZXR1cm4gdHJlZU5vZGUuYW55RmFtaWx5TWVtYmVyKChub2RlKSA9PiB7CisgICAgcmV0dXJu IG5vZGUuZ2V0RGF0YSgpLl90eXBlID09PSAnY2F0YWxvZyc7CisgIH0pOworfQorCitleHBvcnQg ZnVuY3Rpb24gZW5hYmxlZCh0cmVlLCBzdXBwb3J0ZWROb2RlcywgdHJlZU5vZGVEYXRhLCBkb21U cmVlTm9kZSkgeworICBpZiAoIWlzVmFsaWRUcmVlTm9kZURhdGEodHJlZU5vZGVEYXRhKSkKKyAg ICByZXR1cm4gZmFsc2U7CisKKyAgbGV0IHRyZWVOb2RlID0gdHJlZS5maW5kTm9kZUJ5RG9tRWxl bWVudChkb21UcmVlTm9kZSk7CisgIGlmICghdHJlZU5vZGUpIHsKKyAgICByZXR1cm4gZmFsc2U7 CisgIH0KKworICByZXR1cm4gY2hlY2tBbGxvd0Nvbm5JZkRhdGFiYXNlTm9kZSh0cmVlTm9kZURh dGEpICYmCisgICAgXy5pbmRleE9mKHN1cHBvcnRlZE5vZGVzLCB0cmVlTm9kZURhdGEuX3R5cGUp ICE9PSAtMSAmJgorICAgICFhbmNlc3RvcldpdGhUeXBlQ2F0YWxvZyh0cmVlTm9kZSk7Cit9CisK KwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vc3RhdGljL2pzL3RyZWUvcGdhZG1pbl90cmVlX25v ZGUuanMgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvdHJlZS9wZ2FkbWluX3RyZWVfbm9kZS5qcwpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMC4uMDBmMTBkMjQKLS0tIC9kZXYvbnVs bAorKysgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvdHJlZS9wZ2FkbWluX3RyZWVfbm9kZS5qcwpA QCAtMCwwICsxLDcyIEBACisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8KKy8vIHBnQWRtaW4gNCAtIFBv c3RncmVTUUwgVG9vbHMKKy8vCisvLyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE4LCBUaGUgcGdB ZG1pbiBEZXZlbG9wbWVudCBUZWFtCisvLyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVy IHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKy8vCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCisvKioKKyAq IFRoaXMgbWV0aG9kIHJlY2VpdmVkIHBnQnJvd3NlciBhbmQgbmV3IFRyZWVOb2RlIG9iamVjdAor ICoKKyAqIFRoaXMgbWV0aG9kIHJldHJpZXZlcyBhbGwgdGhlIGRhdGEgdGhhdCBleGlzdHMgaW4g dGhlIHRyZWUgbm9kZSBhbmQgaW4KKyAqIGBwZ0Jyb3dzZXIuTm9kZXNgIGZvciBhbGwgdGhlIHBh cmVudCBub2RlIG9mIHRoZSBwcm92aWRlZCBub2RlLgorICoKKyAqIFRoZSAyIGNvbmRpdGlvbiB0 byBnZXQgdGhlIGluZm9ybWF0aW9uIGZyb20gcGdCcm93c2VyLk5vZGVzIGFyZToKKyAqICAxIC0g dGhlIHZhcmlhYmxlIF90eXBlIG9mIHRoZSB0cmVlIG5vZGUKKyAqICAyIC0gdGhlIHByZXNlbmNl IG9mIGhhc0lkIGluIHRoZSBwZ0Jyb3dzZXIuTm9kZXMgZm9yIHRoZSBzcGVjaWZpYyBub2RlCisg KgorICogTnVtYmVyIDIgaXMgdXNlZCB0byBpZ25vcmUgY29sbC0qIG5vZGVzIGFzIHRoZXkgZG8g bm90IGFkZCBhbnkgdXNlZnVsCisgKiBpbmZvcm1hdGlvbgorICovCitleHBvcnQgZnVuY3Rpb24g Z2V0VHJlZU5vZGVIaWVyYXJjaHlGcm9tRWxlbWVudChwZ0Jyb3dzZXIsIHRyZWVOb2RlKSB7Cisg IHJldHVybiBnZXRUcmVlTm9kZUhpZXJhcmNoeS5jYWxsKHBnQnJvd3NlciwgdHJlZU5vZGUpOwor fQorCisvKioKKyAqIFRoaXMgbWV0aG9kIHJlY2VpdmVkIGFuIEFDSSBUcmVlIEpRdWVyeSBub2Rl CisgKgorICogTk9URTogdGhpcyBmdW5jdGlvbiBuZWVkIHRvIGJlIGNhbGxlZCBvbiBwZ0Jyb3dz ZXIgaW5zdGFuY2UuCisgKiBnZXRUcmVlTm9kZUhpZXJhcmNoeUZyb21JZGVudGlmaWVyLmFwcGx5 KHBnQnJvd3NlciwgW2FjaVRyZWVOb2RlSWRlbnRpZmllcl0pCisgKgorICogVGhpcyBtZXRob2Qg cmV0cmlldmVzIGFsbCB0aGUgZGF0YSB0aGF0IGV4aXN0cyBpbiB0aGUgdHJlZSBub2RlIGFuZCBp bgorICogYHBnQnJvd3Nlci5Ob2Rlc2AgZm9yIGFsbCB0aGUgcGFyZW50IG5vZGUgb2YgdGhlIHBy b3ZpZGVkIG5vZGUuCisgKgorICogVGhlIDIgY29uZGl0aW9uIHRvIGdldCB0aGUgaW5mb3JtYXRp b24gZnJvbSBwZ0Jyb3dzZXIuTm9kZXMgYXJlOgorICogIDEgLSB0aGUgdmFyaWFibGUgX3R5cGUg b2YgdGhlIHRyZWUgbm9kZQorICogIDIgLSB0aGUgcHJlc2VuY2Ugb2YgaGFzSWQgaW4gdGhlIHBn QnJvd3Nlci5Ob2RlcyBmb3IgdGhlIHNwZWNpZmljIG5vZGUKKyAqCisgKiBOdW1iZXIgMiBpcyB1 c2VkIHRvIGlnbm9yZSBjb2xsLSogbm9kZXMgYXMgdGhleSBkbyBub3QgYWRkIGFueSB1c2VmdWwK KyAqIGluZm9ybWF0aW9uCisgKi8KK2V4cG9ydCBmdW5jdGlvbiBnZXRUcmVlTm9kZUhpZXJhcmNo eUZyb21JZGVudGlmaWVyKGFjaVRyZWVOb2RlSWRlbnRpZmllcikgeworICBsZXQgaWRlbnRpZmll ciA9IHRoaXMudHJlZU1lbnUudHJhbnNsYXRlVHJlZU5vZGVJZEZyb21BQ0lUcmVlKGFjaVRyZWVO b2RlSWRlbnRpZmllcik7CisgIGxldCBjdXJyZW50Tm9kZSA9IHRoaXMudHJlZU1lbnUuZmluZE5v ZGUoaWRlbnRpZmllcik7CisgIHJldHVybiBnZXRUcmVlTm9kZUhpZXJhcmNoeS5jYWxsKHRoaXMs IGN1cnJlbnROb2RlKTsKK30KKworZXhwb3J0IGZ1bmN0aW9uIGdldFRyZWVOb2RlSGllcmFyY2h5 KGN1cnJlbnROb2RlKSB7CisgIGxldCBpZHggPSAwOworICBsZXQgcmVzdWx0ID0ge307CisKKyAg ZG8geworICAgIGNvbnN0IGN1cnJlbnROb2RlRGF0YSA9IGN1cnJlbnROb2RlLmdldERhdGEoKTsK KyAgICBpZiAoY3VycmVudE5vZGVEYXRhLl90eXBlIGluIHRoaXMuTm9kZXMgJiYgdGhpcy5Ob2Rl c1tjdXJyZW50Tm9kZURhdGEuX3R5cGVdLmhhc0lkKSB7CisgICAgICBjb25zdCBub2RlVHlwZSA9 IG1hcFR5cGUoY3VycmVudE5vZGVEYXRhLl90eXBlKTsKKyAgICAgIGlmIChyZXN1bHRbbm9kZVR5 cGVdID09PSB1bmRlZmluZWQpIHsKKyAgICAgICAgcmVzdWx0W25vZGVUeXBlXSA9IF8uZXh0ZW5k KHt9LCBjdXJyZW50Tm9kZURhdGEsIHsKKyAgICAgICAgICAncHJpb3JpdHknOiBpZHgsCisgICAg ICAgIH0pOworICAgICAgICBpZHggLT0gMTsKKyAgICAgIH0KKyAgICB9CisgICAgY3VycmVudE5v ZGUgPSBjdXJyZW50Tm9kZS5oYXNQYXJlbnQoKSA/IGN1cnJlbnROb2RlLnBhcmVudCgpIDogbnVs bDsKKyAgfSB3aGlsZSAoY3VycmVudE5vZGUpOworCisgIHJldHVybiByZXN1bHQ7Cit9CisKK2Z1 bmN0aW9uIG1hcFR5cGUodHlwZSkgeworICByZXR1cm4gdHlwZSA9PT0gJ3BhcnRpdGlvbicgPyAn dGFibGUnIDogdHlwZTsKK30KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy90cmVl L3RyZWUuanMgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvdHJlZS90cmVlLmpzCmluZGV4IDAxZWRi NmMzLi5iNTY1NWE3MCAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vc3RhdGljL2pzL3RyZWUvdHJl ZS5qcworKysgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvdHJlZS90cmVlLmpzCkBAIC01OSwxNyAr NTksMjAgQEAgZXhwb3J0IGNsYXNzIFRyZWVOb2RlIHsKICAgICB0cmVlLmFjaVRyZWVBcGkudW5s b2FkKHRoaXMuZG9tTm9kZSk7CiAgIH0KIAotICBhbnlQYXJlbnQoY29uZGl0aW9uKSB7CisgIC8q CisgICAqIEZpbmQgdGhlIGFuY2VzdG9yIHdpdGggbWF0Y2hlcyB0aGlzIGNvbmRpdGlvbgorICAg Ki8KKyAgYW5jZXN0b3JOb2RlKGNvbmRpdGlvbikgewogICAgIGxldCBub2RlID0gdGhpczsKIAog ICAgIHdoaWxlIChub2RlLmhhc1BhcmVudCgpKSB7CiAgICAgICBub2RlID0gbm9kZS5wYXJlbnQo KTsKICAgICAgIGlmIChjb25kaXRpb24obm9kZSkpIHsKLSAgICAgICAgcmV0dXJuIHRydWU7Cisg ICAgICAgIHJldHVybiBub2RlOwogICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiBmYWxzZTsK KyAgICByZXR1cm4gbnVsbDsKICAgfQogCiAgIC8qKgpAQCAtODEsNyArODQsMTAgQEAgZXhwb3J0 IGNsYXNzIFRyZWVOb2RlIHsKICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIHJldHVy biB0aGlzLmFueVBhcmVudChjb25kaXRpb24pOworICAgIHJldHVybiB0aGlzLmFuY2VzdG9yTm9k ZShjb25kaXRpb24pICE9PSBudWxsOworICB9CisgIGFueVBhcmVudChjb25kaXRpb24pIHsKKyAg ICByZXR1cm4gdGhpcy5hbmNlc3Rvck5vZGUoY29uZGl0aW9uKSAhPT0gbnVsbDsKICAgfQogfQog CkBAIC0yMTAsMyArMjE2LDcgQEAgZnVuY3Rpb24gZmluZEluVHJlZShyb290Tm9kZSwgcGF0aCkg ewogICAgIH0KICAgfSkocm9vdE5vZGUpOwogfQorCitleHBvcnQgZnVuY3Rpb24gaXNWYWxpZFRy ZWVOb2RlRGF0YSh0cmVlTm9kZURhdGEpIHsKKyAgcmV0dXJuICFfLmlzVW5kZWZpbmVkKHRyZWVO b2RlRGF0YSkgJiYgIV8uaXNOdWxsKHRyZWVOb2RlRGF0YSk7Cit9CmRpZmYgLS1naXQgYS93ZWIv cGdhZG1pbi90b29scy9iYWNrdXAvc3RhdGljL2pzL2JhY2t1cC5qcyBiL3dlYi9wZ2FkbWluL3Rv b2xzL2JhY2t1cC9zdGF0aWMvanMvYmFja3VwLmpzCmluZGV4IDk0YWI4Yjc2Li5kNmZkNDhjNSAx MDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vdG9vbHMvYmFja3VwL3N0YXRpYy9qcy9iYWNrdXAuanMK KysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvYmFja3VwL3N0YXRpYy9qcy9iYWNrdXAuanMKQEAgLTMs OSArMywxMiBAQCBkZWZpbmUoWwogICAnc291cmNlcy9nZXR0ZXh0JywgJ3NvdXJjZXMvdXJsX2Zv cicsICdqcXVlcnknLCAndW5kZXJzY29yZScsCiAgICd1bmRlcnNjb3JlLnN0cmluZycsICdwZ2Fk bWluLmFsZXJ0aWZ5anMnLCAnYmFja2JvbmUnLCAncGdhZG1pbi5iYWNrZ3JpZCcsCiAgICdwZ2Fk bWluLmJhY2tmb3JtJywgJ3BnYWRtaW4uYnJvd3NlcicsICdzb3VyY2VzL3V0aWxzJywKKyAgJ3Rv b2xzL2JhY2t1cC9zdGF0aWMvanMvbWVudV91dGlscycsCisgICd0b29scy9iYWNrdXAvc3RhdGlj L2pzL2JhY2t1cF9kaWFsb2cnLAorICAnc291cmNlcy9ub2Rlcy9zdXBwb3J0ZWRfZGF0YWJhc2Vf bm9kZScsCiBdLCBmdW5jdGlvbigKICAgZ2V0dGV4dCwgdXJsX2ZvciwgJCwgXywgUywgYWxlcnRp ZnksIEJhY2tib25lLCBCYWNrZ3JpZCwgQmFja2Zvcm0sIHBnQnJvd3NlciwKLWNvbW1vblV0aWxz CisgIGNvbW1vblV0aWxzLCBtZW51VXRpbHMsIGdsb2JhbEJhY2t1cERpYWxvZywgc3VwcG9ydGVk Tm9kZXMKICkgewogCiAgIC8vIGlmIG1vZHVsZSBpcyBhbHJlYWR5IGluaXRpYWxpemVkLCByZWZl ciB0byB0aGF0LgpAQCAtMzk0LDQ4ICszOTcsNiBAQCBjb21tb25VdGlscwogCiAgICAgICB0aGlz LmluaXRpYWxpemVkID0gdHJ1ZTsKIAotICAgICAgLy8gRGVmaW5lIGxpc3Qgb2Ygbm9kZXMgb24g d2hpY2ggYmFja3VwIGNvbnRleHQgbWVudSBvcHRpb24gYXBwZWFycwotICAgICAgdmFyIGJhY2t1 cF9zdXBwb3J0ZWRfbm9kZXMgPSBbCi0gICAgICAgICdkYXRhYmFzZScsICdzY2hlbWEnLCAndGFi bGUnLCAncGFydGl0aW9uJywKLSAgICAgIF07Ci0KLSAgICAgIC8qKgotICAgICAgICBFbmFibGUv ZGlzYWJsZSBiYWNrdXAgbWVudSBpbiB0b29scyBiYXNlZAotICAgICAgICBvbiBub2RlIHNlbGVj dGVkCi0gICAgICAgIGlmIHNlbGVjdGVkIG5vZGUgaXMgcHJlc2VudCBpbiBzdXBwb3J0ZWRfbm9k ZXMsCi0gICAgICAgIG1lbnUgd2lsbCBiZSBlbmFibGVkIG90aGVyd2lzZSBkaXNhYmxlZC4KLSAg ICAgICAgQWxzbywgaGlkZSBpdCBmb3Igc3lzdGVtIHZpZXcgaW4gY2F0YWxvZ3MKLSAgICAgICov Ci0gICAgICB2YXIgbWVudV9lbmFibGVkID0gZnVuY3Rpb24oaXRlbURhdGEsIGl0ZW0pIHsKLSAg ICAgICAgdmFyIHQgPSBwZ0Jyb3dzZXIudHJlZSwKLSAgICAgICAgICBpID0gaXRlbSwKLSAgICAg ICAgICBkID0gaXRlbURhdGEsCi0gICAgICAgICAgcGFyZW50X2l0ZW0gPSB0Lmhhc1BhcmVudChp KSA/IHQucGFyZW50KGkpIDogbnVsbCwKLSAgICAgICAgICBwYXJlbnRfZGF0YSA9IHBhcmVudF9p dGVtID8gdC5pdGVtRGF0YShwYXJlbnRfaXRlbSkgOiBudWxsOwotCi0gICAgICAgIGlmICghXy5p c1VuZGVmaW5lZChkKSAmJiAhXy5pc051bGwoZCkgJiYgIV8uaXNOdWxsKHBhcmVudF9kYXRhKSkg ewotICAgICAgICAgIGlmIChfLmluZGV4T2YoYmFja3VwX3N1cHBvcnRlZF9ub2RlcywgZC5fdHlw ZSkgIT09IC0xICYmCi0gICAgICAgICAgICBwYXJlbnRfZGF0YS5fdHlwZSAhPSAnY2F0YWxvZycp IHsKLSAgICAgICAgICAgIGlmIChkLl90eXBlID09ICdkYXRhYmFzZScgJiYgZC5hbGxvd0Nvbm4p Ci0gICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgZWxzZSBpZiAoZC5fdHlw ZSAhPSAnZGF0YWJhc2UnKQotICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAg IGVsc2UKLSAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgIH0gZWxzZQotICAg ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICByZXR1cm4g ZmFsc2U7Ci0gICAgICB9OwotCi0gICAgICB2YXIgbWVudV9lbmFibGVkX3NlcnZlciA9IGZ1bmN0 aW9uKGl0ZW1EYXRhKSB7Ci0gICAgICAgIC8vIElmIHNlcnZlciBub2RlIHNlbGVjdGVkICYmIGNv bm5lY3RlZAotICAgICAgICBpZiAoIV8uaXNVbmRlZmluZWQoaXRlbURhdGEpICYmICFfLmlzTnVs bChpdGVtRGF0YSkpCi0gICAgICAgICAgcmV0dXJuICgoJ3NlcnZlcicgPT09IGl0ZW1EYXRhLl90 eXBlKSAmJiBpdGVtRGF0YS5jb25uZWN0ZWQpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgcmV0 dXJuIGZhbHNlOwotICAgICAgfTsKLQogICAgICAgLy8gRGVmaW5lIHRoZSBub2RlcyBvbiB3aGlj aCB0aGUgbWVudXMgdG8gYmUgYXBwZWFyCiAgICAgICB2YXIgbWVudXMgPSBbewogICAgICAgICBu YW1lOiAnYmFja3VwX2dsb2JhbCcsCkBAIC00NDUsNyArNDA2LDcgQEAgY29tbW9uVXRpbHMKICAg ICAgICAgcHJpb3JpdHk6IDEyLAogICAgICAgICBsYWJlbDogZ2V0dGV4dCgnQmFja3VwIEdsb2Jh bHMuLi4nKSwKICAgICAgICAgaWNvbjogJ2ZhIGZhLWZsb3BweS1vJywKLSAgICAgICAgZW5hYmxl OiBtZW51X2VuYWJsZWRfc2VydmVyLAorICAgICAgICBlbmFibGU6IG1lbnVVdGlscy5tZW51RW5h YmxlZFNlcnZlciwKICAgICAgIH0sIHsKICAgICAgICAgbmFtZTogJ2JhY2t1cF9zZXJ2ZXInLAog ICAgICAgICBtb2R1bGU6IHRoaXMsCkBAIC00NTQsNyArNDE1LDcgQEAgY29tbW9uVXRpbHMKICAg ICAgICAgcHJpb3JpdHk6IDEyLAogICAgICAgICBsYWJlbDogZ2V0dGV4dCgnQmFja3VwIFNlcnZl ci4uLicpLAogICAgICAgICBpY29uOiAnZmEgZmEtZmxvcHB5LW8nLAotICAgICAgICBlbmFibGU6 IG1lbnVfZW5hYmxlZF9zZXJ2ZXIsCisgICAgICAgIGVuYWJsZTogbWVudVV0aWxzLm1lbnVFbmFi bGVkU2VydmVyLAogICAgICAgfSwgewogICAgICAgICBuYW1lOiAnYmFja3VwX2dsb2JhbF9jdHgn LAogICAgICAgICBtb2R1bGU6IHRoaXMsCkBAIC00NjQsNyArNDI1LDcgQEAgY29tbW9uVXRpbHMK ICAgICAgICAgcHJpb3JpdHk6IDEyLAogICAgICAgICBsYWJlbDogZ2V0dGV4dCgnQmFja3VwIEds b2JhbHMuLi4nKSwKICAgICAgICAgaWNvbjogJ2ZhIGZhLWZsb3BweS1vJywKLSAgICAgICAgZW5h YmxlOiBtZW51X2VuYWJsZWRfc2VydmVyLAorICAgICAgICBlbmFibGU6IG1lbnVVdGlscy5tZW51 RW5hYmxlZFNlcnZlciwKICAgICAgIH0sIHsKICAgICAgICAgbmFtZTogJ2JhY2t1cF9zZXJ2ZXJf Y3R4JywKICAgICAgICAgbW9kdWxlOiB0aGlzLApAQCAtNDc0LDcgKzQzNSw3IEBAIGNvbW1vblV0 aWxzCiAgICAgICAgIHByaW9yaXR5OiAxMiwKICAgICAgICAgbGFiZWw6IGdldHRleHQoJ0JhY2t1 cCBTZXJ2ZXIuLi4nKSwKICAgICAgICAgaWNvbjogJ2ZhIGZhLWZsb3BweS1vJywKLSAgICAgICAg ZW5hYmxlOiBtZW51X2VuYWJsZWRfc2VydmVyLAorICAgICAgICBlbmFibGU6IG1lbnVVdGlscy5t ZW51RW5hYmxlZFNlcnZlciwKICAgICAgIH0sIHsKICAgICAgICAgbmFtZTogJ2JhY2t1cF9vYmpl Y3QnLAogICAgICAgICBtb2R1bGU6IHRoaXMsCkBAIC00ODMsMjAgKzQ0NCwyNCBAQCBjb21tb25V dGlscwogICAgICAgICBwcmlvcml0eTogMTEsCiAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdCYWNr dXAuLi4nKSwKICAgICAgICAgaWNvbjogJ2ZhIGZhLWZsb3BweS1vJywKLSAgICAgICAgZW5hYmxl OiBtZW51X2VuYWJsZWQsCisgICAgICAgIGVuYWJsZTogc3VwcG9ydGVkTm9kZXMuZW5hYmxlZC5i aW5kKAorICAgICAgICAgIG51bGwsIHBnQnJvd3Nlci50cmVlTWVudSwgbWVudVV0aWxzLmJhY2t1 cFN1cHBvcnRlZE5vZGVzCisgICAgICAgICksCiAgICAgICB9XTsKIAotICAgICAgZm9yICh2YXIg aWR4ID0gMDsgaWR4IDwgYmFja3VwX3N1cHBvcnRlZF9ub2Rlcy5sZW5ndGg7IGlkeCsrKSB7Cisg ICAgICBmb3IgKHZhciBpZHggPSAwOyBpZHggPCBtZW51VXRpbHMuYmFja3VwU3VwcG9ydGVkTm9k ZXMubGVuZ3RoOyBpZHgrKykgewogICAgICAgICBtZW51cy5wdXNoKHsKLSAgICAgICAgICBuYW1l OiAnYmFja3VwXycgKyBiYWNrdXBfc3VwcG9ydGVkX25vZGVzW2lkeF0sCi0gICAgICAgICAgbm9k ZTogYmFja3VwX3N1cHBvcnRlZF9ub2Rlc1tpZHhdLAorICAgICAgICAgIG5hbWU6ICdiYWNrdXBf JyArIG1lbnVVdGlscy5iYWNrdXBTdXBwb3J0ZWROb2Rlc1tpZHhdLAorICAgICAgICAgIG5vZGU6 IG1lbnVVdGlscy5iYWNrdXBTdXBwb3J0ZWROb2Rlc1tpZHhdLAogICAgICAgICAgIG1vZHVsZTog dGhpcywKICAgICAgICAgICBhcHBsaWVzOiBbJ2NvbnRleHQnXSwKICAgICAgICAgICBjYWxsYmFj azogJ2JhY2t1cF9vYmplY3RzJywKICAgICAgICAgICBwcmlvcml0eTogMTEsCiAgICAgICAgICAg bGFiZWw6IGdldHRleHQoJ0JhY2t1cC4uLicpLAogICAgICAgICAgIGljb246ICdmYSBmYS1mbG9w cHktbycsCi0gICAgICAgICAgZW5hYmxlOiBtZW51X2VuYWJsZWQsCisgICAgICAgICAgZW5hYmxl OiBzdXBwb3J0ZWROb2Rlcy5lbmFibGVkLmJpbmQoCisgICAgICAgICAgICBudWxsLCBwZ0Jyb3dz ZXIudHJlZU1lbnUsIG1lbnVVdGlscy5iYWNrdXBTdXBwb3J0ZWROb2RlcworICAgICAgICAgICks CiAgICAgICAgIH0pOwogICAgICAgfQogCkBAIC01MjEsNTQyICs0ODYsMjUgQEAgY29tbW9uVXRp bHMKICAgICB9LAogCiAgICAgLy8gQ2FsbGJhY2sgdG8gZHJhdyBCYWNrdXAgRGlhbG9nIGZvciBn bG9iYWxzL3NlcnZlcgotICAgIHN0YXJ0X2JhY2t1cF9nbG9iYWxfc2VydmVyOiBmdW5jdGlvbihh Y3Rpb24sIGl0ZW0sIHBhcmFtcykgewotICAgICAgdmFyIGkgPSBpdGVtIHx8IHBnQnJvd3Nlci50 cmVlLnNlbGVjdGVkKCksCi0gICAgICAgIHNlcnZlcl9kYXRhID0gbnVsbDsKLQotICAgICAgd2hp bGUgKGkpIHsKLSAgICAgICAgdmFyIG5vZGVfZGF0YSA9IHBnQnJvd3Nlci50cmVlLml0ZW1EYXRh KGkpOwotICAgICAgICBpZiAobm9kZV9kYXRhLl90eXBlID09ICdzZXJ2ZXInKSB7Ci0gICAgICAg ICAgc2VydmVyX2RhdGEgPSBub2RlX2RhdGE7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0K LQotICAgICAgICBpZiAocGdCcm93c2VyLnRyZWUuaGFzUGFyZW50KGkpKSB7Ci0gICAgICAgICAg aSA9ICQocGdCcm93c2VyLnRyZWUucGFyZW50KGkpKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAg ICAgICBhbGVydGlmeS5hbGVydCgKLSAgICAgICAgICAgIGdldHRleHQoJ0JhY2t1cCBFcnJvcicp LAotICAgICAgICAgICAgZ2V0dGV4dCgnUGxlYXNlIHNlbGVjdCBzZXJ2ZXIgb3IgY2hpbGQgbm9k ZSBmcm9tIHRoZSBicm93c2VyIHRyZWUuJykKLSAgICAgICAgICApOwotICAgICAgICAgIGJyZWFr OwotICAgICAgICB9Ci0gICAgICB9Ci0KLSAgICAgIGlmICghc2VydmVyX2RhdGEpIHsKLSAgICAg ICAgcmV0dXJuOwotICAgICAgfQotCi0gICAgICB2YXIgbW9kdWxlID0gJ3BhdGhzJywKLSAgICAg ICAgcHJlZmVyZW5jZV9uYW1lID0gJ3BnX2Jpbl9kaXInLAotICAgICAgICBtc2cgPSBnZXR0ZXh0 KCdQbGVhc2UgY29uZmlndXJlIHRoZSBQb3N0Z3JlU1FMIEJpbmFyeSBQYXRoIGluIHRoZSBQcmVm ZXJlbmNlcyBkaWFsb2cuJyk7Ci0KLSAgICAgIGlmICgoc2VydmVyX2RhdGEudHlwZSAmJiBzZXJ2 ZXJfZGF0YS50eXBlID09ICdwcGFzJykgfHwKLSAgICAgICAgc2VydmVyX2RhdGEuc2VydmVyX3R5 cGUgPT0gJ3BwYXMnKSB7Ci0gICAgICAgIHByZWZlcmVuY2VfbmFtZSA9ICdwcGFzX2Jpbl9kaXIn OwotICAgICAgICBtc2cgPSBnZXR0ZXh0KCdQbGVhc2UgY29uZmlndXJlIHRoZSBFREIgQWR2YW5j ZWQgU2VydmVyIEJpbmFyeSBQYXRoIGluIHRoZSBQcmVmZXJlbmNlcyBkaWFsb2cuJyk7Ci0gICAg ICB9Ci0KLSAgICAgIHZhciBwcmVmZXJlbmNlID0gcGdCcm93c2VyLmdldF9wcmVmZXJlbmNlKG1v ZHVsZSwgcHJlZmVyZW5jZV9uYW1lKTsKLQotICAgICAgaWYgKHByZWZlcmVuY2UpIHsKLSAgICAg ICAgaWYgKCFwcmVmZXJlbmNlLnZhbHVlKSB7Ci0gICAgICAgICAgYWxlcnRpZnkuYWxlcnQoZ2V0 dGV4dCgnQ29uZmlndXJhdGlvbiByZXF1aXJlZCcpLCBtc2cpOwotICAgICAgICAgIHJldHVybjsK LSAgICAgICAgfQotICAgICAgfSBlbHNlIHsKLSAgICAgICAgYWxlcnRpZnkuYWxlcnQoCi0gICAg ICAgICAgZ2V0dGV4dCgnQmFja3VwIEVycm9yJyksCi0gICAgICAgICAgUyhnZXR0ZXh0KCdGYWls ZWQgdG8gbG9hZCBwcmVmZXJlbmNlICVzIG9mIG1vZHVsZSAlcycpKS5zcHJpbnRmKHByZWZlcmVu Y2VfbmFtZSwgbW9kdWxlKS52YWx1ZSgpCi0gICAgICAgICk7Ci0gICAgICAgIHJldHVybjsKLSAg ICAgIH0KLQotICAgICAgdmFyIG9mX3R5cGUgPSB1bmRlZmluZWQ7Ci0KLSAgICAgIC8vIFNldCBO b3RlcyBhY2NvcmRpbmcgdG8gdHlwZSBvZiBiYWNrdXAKLSAgICAgIGlmICghXy5pc1VuZGVmaW5l ZChwYXJhbXNbJ2dsb2JhbHMnXSkgJiYgcGFyYW1zWydnbG9iYWxzJ10pIHsKLSAgICAgICAgb2Zf dHlwZSA9ICdnbG9iYWxzJzsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIG9mX3R5cGUgPSAnc2Vy dmVyJzsKLSAgICAgIH0KLQotICAgICAgdmFyIERpYWxvZ05hbWUgPSAnQmFja3VwRGlhbG9nXycg KyBvZl90eXBlLAotICAgICAgICBEaWFsb2dUaXRsZSA9ICgob2ZfdHlwZSA9PSAnZ2xvYmFscycp ID8KLSAgICAgICAgICBnZXR0ZXh0KCdCYWNrdXAgR2xvYmFscy4uLicpIDoKLSAgICAgICAgICBn ZXR0ZXh0KCdCYWNrdXAgU2VydmVyLi4uJykpOwotCi0gICAgICBpZiAoIWFsZXJ0aWZ5W0RpYWxv Z05hbWVdKSB7Ci0gICAgICAgIGFsZXJ0aWZ5LmRpYWxvZyhEaWFsb2dOYW1lLCBmdW5jdGlvbiBm YWN0b3J5KCkgewotICAgICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICBtYWluOiBmdW5jdGlv bih0aXRsZSkgewotICAgICAgICAgICAgICB0aGlzLnNldCgndGl0bGUnLCB0aXRsZSk7Ci0gICAg ICAgICAgICB9LAotICAgICAgICAgICAgYnVpbGQ6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAg ICBhbGVydGlmeS5wZ0RpYWxvZ0J1aWxkLmFwcGx5KHRoaXMpOwotICAgICAgICAgICAgfSwKLSAg ICAgICAgICAgIHNldHVwOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgcmV0dXJuIHsKLSAg ICAgICAgICAgICAgICBidXR0b25zOiBbewotICAgICAgICAgICAgICAgICAgdGV4dDogJycsCi0g ICAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdidG4gYnRuLWRlZmF1bHQgcHVsbC1sZWZ0IGZh IGZhLWxnIGZhLWluZm8nLAotICAgICAgICAgICAgICAgICAgYXR0cnM6IHsKLSAgICAgICAgICAg ICAgICAgICAgbmFtZTogJ29iamVjdF9oZWxwJywKLSAgICAgICAgICAgICAgICAgICAgdHlwZTog J2J1dHRvbicsCi0gICAgICAgICAgICAgICAgICAgIHVybDogJ2JhY2t1cC5odG1sJywKLSAgICAg ICAgICAgICAgICAgICAgbGFiZWw6IGdldHRleHQoJ0JhY2t1cCcpLAotICAgICAgICAgICAgICAg ICAgfSwKLSAgICAgICAgICAgICAgICB9LCB7Ci0gICAgICAgICAgICAgICAgICB0ZXh0OiAnJywK LSAgICAgICAgICAgICAgICAgIGtleTogMTEyLAotICAgICAgICAgICAgICAgICAgY2xhc3NOYW1l OiAnYnRuIGJ0bi1kZWZhdWx0IHB1bGwtbGVmdCBmYSBmYS1sZyBmYS1xdWVzdGlvbicsCi0gICAg ICAgICAgICAgICAgICBhdHRyczogewotICAgICAgICAgICAgICAgICAgICBuYW1lOiAnZGlhbG9n X2hlbHAnLAotICAgICAgICAgICAgICAgICAgICB0eXBlOiAnYnV0dG9uJywKLSAgICAgICAgICAg ICAgICAgICAgbGFiZWw6IGdldHRleHQoJ0JhY2t1cCcpLAotICAgICAgICAgICAgICAgICAgICB1 cmw6IHVybF9mb3IoJ2hlbHAuc3RhdGljJywgewotICAgICAgICAgICAgICAgICAgICAgICdmaWxl bmFtZSc6ICdiYWNrdXBfZGlhbG9nLmh0bWwnLAotICAgICAgICAgICAgICAgICAgICB9KSwKLSAg ICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgfSwgewotICAgICAgICAgICAgICAg ICAgdGV4dDogZ2V0dGV4dCgnQmFja3VwJyksCi0gICAgICAgICAgICAgICAgICBrZXk6IDEzLAot ICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnYnRuIGJ0bi1wcmltYXJ5IGZhIGZhLWxnIGZh LXNhdmUgcGctYWxlcnRpZnktYnV0dG9uJywKLSAgICAgICAgICAgICAgICAgICdkYXRhLWJ0bi1u YW1lJzogJ2JhY2t1cCcsCi0gICAgICAgICAgICAgICAgfSwgewotICAgICAgICAgICAgICAgICAg dGV4dDogZ2V0dGV4dCgnQ2FuY2VsJyksCi0gICAgICAgICAgICAgICAgICBrZXk6IDI3LAotICAg ICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnYnRuIGJ0bi1kYW5nZXIgZmEgZmEtbGcgZmEtdGlt ZXMgcGctYWxlcnRpZnktYnV0dG9uJywKLSAgICAgICAgICAgICAgICAgICdkYXRhLWJ0bi1uYW1l JzogJ2NhbmNlbCcsCi0gICAgICAgICAgICAgICAgfV0sCi0gICAgICAgICAgICAgICAgLy8gU2V0 IG9wdGlvbnMgZm9yIGRpYWxvZwotICAgICAgICAgICAgICAgIG9wdGlvbnM6IHsKLSAgICAgICAg ICAgICAgICAgIHRpdGxlOiBEaWFsb2dUaXRsZSwKLSAgICAgICAgICAgICAgICAgIC8vZGlzYWJs ZSBib3RoIHBhZGRpbmcgYW5kIG92ZXJmbG93IGNvbnRyb2wuCi0gICAgICAgICAgICAgICAgICBw YWRkaW5nOiAhMSwKLSAgICAgICAgICAgICAgICAgIG92ZXJmbG93OiAhMSwKLSAgICAgICAgICAg ICAgICAgIG1vZGVsOiAwLAotICAgICAgICAgICAgICAgICAgcmVzaXphYmxlOiB0cnVlLAotICAg ICAgICAgICAgICAgICAgbWF4aW1pemFibGU6IHRydWUsCi0gICAgICAgICAgICAgICAgICBwaW5u YWJsZTogZmFsc2UsCi0gICAgICAgICAgICAgICAgICBjbG9zYWJsZUJ5RGltbWVyOiBmYWxzZSwK LSAgICAgICAgICAgICAgICAgIG1vZGFsOiBmYWxzZSwKLSAgICAgICAgICAgICAgICB9LAotICAg ICAgICAgICAgICB9OwotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIGhvb2tzOiB7Ci0gICAg ICAgICAgICAgIC8vIFRyaWdnZXJlZCB3aGVuIHRoZSBkaWFsb2cgaXMgY2xvc2VkCi0gICAgICAg ICAgICAgIG9uY2xvc2U6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIGlmICh0aGlzLnZp ZXcpIHsKLSAgICAgICAgICAgICAgICAgIC8vIGNsZWFyIG91ciBiYWNrZm9ybSBtb2RlbC92aWV3 Ci0gICAgICAgICAgICAgICAgICB0aGlzLnZpZXcucmVtb3ZlKHsKLSAgICAgICAgICAgICAgICAg ICAgZGF0YTogdHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgaW50ZXJuYWw6IHRydWUsCi0gICAg ICAgICAgICAgICAgICAgIHNpbGVudDogdHJ1ZSwKLSAgICAgICAgICAgICAgICAgIH0pOwotICAg ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIH0sCi0gICAgICAg ICAgICBwcmVwYXJlOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgdmFyIHNlbGYgPSB0aGlz OwotICAgICAgICAgICAgICAvLyBEaXNhYmxlIEJhY2t1cCBidXR0b24gdW50aWwgdXNlciBwcm92 aWRlcyBGaWxlbmFtZQotICAgICAgICAgICAgICB0aGlzLl9faW50ZXJuYWwuYnV0dG9uc1syXS5l bGVtZW50LmRpc2FibGVkID0gdHJ1ZTsKLQotICAgICAgICAgICAgICB2YXIgJGNvbnRhaW5lciA9 ICQoJzxkaXYgY2xhc3M9XCdiYWNrdXBfZGlhbG9nXCc+PC9kaXY+Jyk7Ci0gICAgICAgICAgICAg IC8vIEZpbmQgY3VycmVudC9zZWxlY3RlZCBub2RlCi0gICAgICAgICAgICAgIHZhciB0ID0gcGdC cm93c2VyLnRyZWUsCi0gICAgICAgICAgICAgICAgaSA9IHQuc2VsZWN0ZWQoKSwKLSAgICAgICAg ICAgICAgICBkID0gaSAmJiBpLmxlbmd0aCA9PSAxID8gdC5pdGVtRGF0YShpKSA6IHVuZGVmaW5l ZCwKLSAgICAgICAgICAgICAgICBub2RlID0gZCAmJiBwZ0Jyb3dzZXIuTm9kZXNbZC5fdHlwZV07 Ci0KLSAgICAgICAgICAgICAgaWYgKCFkKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAg ICAgICAgICAgLy8gQ3JlYXRlIHRyZWVJbmZvCi0gICAgICAgICAgICAgIHZhciB0cmVlSW5mbyA9 IG5vZGUuZ2V0VHJlZU5vZGVIaWVyYXJjaHkuYXBwbHkobm9kZSwgW2ldKTsKLSAgICAgICAgICAg ICAgLy8gSW5zdGFuY2Ugb2YgYmFja2JvbmUgbW9kZWwKLSAgICAgICAgICAgICAgdmFyIG5ld01v ZGVsID0gbmV3IEJhY2t1cE1vZGVsKHsKLSAgICAgICAgICAgICAgICAgIHR5cGU6IG9mX3R5cGUs Ci0gICAgICAgICAgICAgICAgfSwgewotICAgICAgICAgICAgICAgICAgbm9kZV9pbmZvOiB0cmVl SW5mbywKLSAgICAgICAgICAgICAgICB9KSwKLSAgICAgICAgICAgICAgICBmaWVsZHMgPSBCYWNr Zm9ybS5nZW5lcmF0ZVZpZXdTY2hlbWEoCi0gICAgICAgICAgICAgICAgICB0cmVlSW5mbywgbmV3 TW9kZWwsICdjcmVhdGUnLCBub2RlLCB0cmVlSW5mby5zZXJ2ZXIsIHRydWUKLSAgICAgICAgICAg ICAgICApOwotCi0gICAgICAgICAgICAgIHZhciB2aWV3ID0gdGhpcy52aWV3ID0gbmV3IEJhY2tm b3JtLkRpYWxvZyh7Ci0gICAgICAgICAgICAgICAgZWw6ICRjb250YWluZXIsCi0gICAgICAgICAg ICAgICAgbW9kZWw6IG5ld01vZGVsLAotICAgICAgICAgICAgICAgIHNjaGVtYTogZmllbGRzLAot ICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgLy8gQWRkIG91ciBjbGFzcyB0byBhbGVy dGlmeQotICAgICAgICAgICAgICAkKHRoaXMuZWxlbWVudHMuYm9keS5jaGlsZE5vZGVzWzBdKS5h ZGRDbGFzcygKLSAgICAgICAgICAgICAgICAnYWxlcnRpZnlfdG9vbHNfZGlhbG9nX3Byb3BlcnRp ZXMgb2JqX3Byb3BlcnRpZXMnCi0gICAgICAgICAgICAgICk7Ci0gICAgICAgICAgICAgIC8vIFJl bmRlciBkaWFsb2cKLSAgICAgICAgICAgICAgdmlldy5yZW5kZXIoKTsKLQotICAgICAgICAgICAg ICB0aGlzLmVsZW1lbnRzLmNvbnRlbnQuYXBwZW5kQ2hpbGQoJGNvbnRhaW5lci5nZXQoMCkpOwot Ci0gICAgICAgICAgICAgIHZhciBjb250YWluZXIgPSB2aWV3LiRlbC5maW5kKCcudGFiLWNvbnRl bnQ6Zmlyc3QgPiAudGFiLXBhbmUuYWN0aXZlOmZpcnN0Jyk7Ci0gICAgICAgICAgICAgIGNvbW1v blV0aWxzLmZpbmRBbmRTZXRGb2N1cyhjb250YWluZXIpOwotCi0gICAgICAgICAgICAgIC8vIExp c3RlbiB0byBtb2RlbCAmIGlmIGZpbGVuYW1lIGlzIHByb3ZpZGVkIHRoZW4gZW5hYmxlIEJhY2t1 cCBidXR0b24KLSAgICAgICAgICAgICAgdGhpcy52aWV3Lm1vZGVsLm9uKCdjaGFuZ2UnLCBmdW5j dGlvbigpIHsKLSAgICAgICAgICAgICAgICBpZiAoIV8uaXNVbmRlZmluZWQodGhpcy5nZXQoJ2Zp bGUnKSkgJiYgdGhpcy5nZXQoJ2ZpbGUnKSAhPT0gJycpIHsKLSAgICAgICAgICAgICAgICAgIHRo aXMuZXJyb3JNb2RlbC5jbGVhcigpOwotICAgICAgICAgICAgICAgICAgc2VsZi5fX2ludGVybmFs LmJ1dHRvbnNbMl0uZWxlbWVudC5kaXNhYmxlZCA9IGZhbHNlOwotICAgICAgICAgICAgICAgIH0g ZWxzZSB7Ci0gICAgICAgICAgICAgICAgICBzZWxmLl9faW50ZXJuYWwuYnV0dG9uc1syXS5lbGVt ZW50LmRpc2FibGVkID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC5z ZXQoJ2ZpbGUnLCBnZXR0ZXh0KCdQbGVhc2UgcHJvdmlkZSBhIGZpbGVuYW1lJykpOwotICAgICAg ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICB9LAotICAgICAgICAg ICAgLy8gQ2FsbGJhY2sgZnVuY3Rpb25zIHdoZW4gY2xpY2sgb24gdGhlIGJ1dHRvbnMgb2YgdGhl IEFsZXJ0aWZ5IGRpYWxvZ3MKLSAgICAgICAgICAgIGNhbGxiYWNrOiBmdW5jdGlvbihlKSB7Ci0g ICAgICAgICAgICAgIC8vIEZldGNoIGN1cnJlbnQgc2VydmVyIGlkCi0gICAgICAgICAgICAgIHZh ciB0ID0gcGdCcm93c2VyLnRyZWUsCi0gICAgICAgICAgICAgICAgaSA9IHQuc2VsZWN0ZWQoKSwK LSAgICAgICAgICAgICAgICBkID0gaSAmJiBpLmxlbmd0aCA9PSAxID8gdC5pdGVtRGF0YShpKSA6 IHVuZGVmaW5lZCwKLSAgICAgICAgICAgICAgICBub2RlID0gZCAmJiBwZ0Jyb3dzZXIuTm9kZXNb ZC5fdHlwZV07Ci0KLSAgICAgICAgICAgICAgaWYgKGUuYnV0dG9uLmVsZW1lbnQubmFtZSA9PSAn ZGlhbG9nX2hlbHAnIHx8IGUuYnV0dG9uLmVsZW1lbnQubmFtZSA9PSAnb2JqZWN0X2hlbHAnKSB7 Ci0gICAgICAgICAgICAgICAgZS5jYW5jZWwgPSB0cnVlOwotICAgICAgICAgICAgICAgIHBnQnJv d3Nlci5zaG93SGVscChlLmJ1dHRvbi5lbGVtZW50Lm5hbWUsIGUuYnV0dG9uLmVsZW1lbnQuZ2V0 QXR0cmlidXRlKCd1cmwnKSwKLSAgICAgICAgICAgICAgICAgIG5vZGUsIGksIGUuYnV0dG9uLmVs ZW1lbnQuZ2V0QXR0cmlidXRlKCdsYWJlbCcpKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0g ICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICBpZiAoZS5idXR0b25bJ2RhdGEtYnRuLW5h bWUnXSA9PT0gJ2JhY2t1cCcpIHsKLQotICAgICAgICAgICAgICAgIGlmICghZCkKLSAgICAgICAg ICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgICAgIHZhciB0cmVlSW5mbyA9IG5vZGUu Z2V0VHJlZU5vZGVIaWVyYXJjaHkuYXBwbHkobm9kZSwgW2ldKTsKLQotICAgICAgICAgICAgICAg IHZhciBzZWxmID0gdGhpcywKLSAgICAgICAgICAgICAgICAgIGJhc2VVcmwgPSB1cmxfZm9yKCdi YWNrdXAuY3JlYXRlX3NlcnZlcl9qb2InLCB7Ci0gICAgICAgICAgICAgICAgICAgICdzaWQnOiB0 cmVlSW5mby5zZXJ2ZXIuX2lkLAotICAgICAgICAgICAgICAgICAgfSksCi0gICAgICAgICAgICAg ICAgICBhcmdzID0gdGhpcy52aWV3Lm1vZGVsLnRvSlNPTigpOwotCi0gICAgICAgICAgICAgICAg JC5hamF4KHsKLSAgICAgICAgICAgICAgICAgIHVybDogYmFzZVVybCwKLSAgICAgICAgICAgICAg ICAgIG1ldGhvZDogJ1BPU1QnLAotICAgICAgICAgICAgICAgICAgZGF0YTogewotICAgICAgICAg ICAgICAgICAgICAnZGF0YSc6IEpTT04uc3RyaW5naWZ5KGFyZ3MpLAotICAgICAgICAgICAgICAg ICAgfSwKLSAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uKHJlcykgewotICAgICAg ICAgICAgICAgICAgICBpZiAocmVzLnN1Y2Nlc3MpIHsKLSAgICAgICAgICAgICAgICAgICAgICBh bGVydGlmeS5zdWNjZXNzKGdldHRleHQoJ0JhY2t1cCBqb2IgY3JlYXRlZC4nKSwgNSk7Ci0gICAg ICAgICAgICAgICAgICAgICAgcGdCcm93c2VyLkV2ZW50cy50cmlnZ2VyKCdwZ2FkbWluLWJncHJv Y2VzczpjcmVhdGVkJywgc2VsZik7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAg ICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKHJlcyk7Ci0gICAgICAgICAgICAgICAgICAg IH0KLSAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICBlcnJvcjogZnVuY3Rp b24oeGhyKSB7Ci0gICAgICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAg ICAgdmFyIGVyciA9IEpTT04ucGFyc2UoeGhyLnJlc3BvbnNlVGV4dCk7Ci0gICAgICAgICAgICAg ICAgICAgICAgYWxlcnRpZnkuYWxlcnQoCi0gICAgICAgICAgICAgICAgICAgICAgICBnZXR0ZXh0 KCdCYWNrdXAgam9iIGZhaWxlZC4nKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGVyci5lcnJv cm1zZwotICAgICAgICAgICAgICAgICAgICAgICk7Ci0gICAgICAgICAgICAgICAgICAgIH0gY2F0 Y2ggKGUpIHsKLSAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oZS5zdGFjayB8fCBl KTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAg ICAgICAgICB9KTsKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSwKLSAgICAgICAgICB9 OwotICAgICAgICB9KTsKLSAgICAgIH0KLSAgICAgIGFsZXJ0aWZ5W0RpYWxvZ05hbWVdKHRydWUp LnJlc2l6ZVRvKCc2MCUnLCAnNTAlJyk7CisgICAgc3RhcnRfYmFja3VwX2dsb2JhbF9zZXJ2ZXI6 IGZ1bmN0aW9uKGFjdGlvbiwgdHJlZUl0ZW0sIHBhcmFtcykgeworICAgICAgbGV0IGRpYWxvZyA9 IG5ldyBnbG9iYWxCYWNrdXBEaWFsb2cuQmFja3VwRGlhbG9nKAorICAgICAgICBwZ0Jyb3dzZXIs CisgICAgICAgICQsCisgICAgICAgIGFsZXJ0aWZ5LAorICAgICAgICBCYWNrdXBNb2RlbAorICAg ICAgKTsKKyAgICAgIGRpYWxvZy5kcmF3KGFjdGlvbiwgdHJlZUl0ZW0sIHBhcmFtcyk7CiAgICAg fSwKIAogICAgIC8vIENhbGxiYWNrIHRvIGRyYXcgQmFja3VwIERpYWxvZyBmb3Igb2JqZWN0cwog ICAgIGJhY2t1cF9vYmplY3RzOiBmdW5jdGlvbihhY3Rpb24sIHRyZWVJdGVtKSB7Ci0KLSAgICAg IHZhciBpID0gdHJlZUl0ZW0gfHwgcGdCcm93c2VyLnRyZWUuc2VsZWN0ZWQoKSwKLSAgICAgICAg c2VydmVyX2RhdGEgPSBudWxsOwotCi0gICAgICB3aGlsZSAoaSkgewotICAgICAgICB2YXIgbm9k ZV9kYXRhID0gcGdCcm93c2VyLnRyZWUuaXRlbURhdGEoaSk7Ci0gICAgICAgIGlmIChub2RlX2Rh dGEuX3R5cGUgPT0gJ3NlcnZlcicpIHsKLSAgICAgICAgICBzZXJ2ZXJfZGF0YSA9IG5vZGVfZGF0 YTsKLSAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChwZ0Jyb3dzZXIu dHJlZS5oYXNQYXJlbnQoaSkpIHsKLSAgICAgICAgICBpID0gJChwZ0Jyb3dzZXIudHJlZS5wYXJl bnQoaSkpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgIGFsZXJ0aWZ5LmFsZXJ0KAotICAg ICAgICAgICAgZ2V0dGV4dCgnQmFja3VwIEVycm9yJyksCi0gICAgICAgICAgICBnZXR0ZXh0KCdQ bGVhc2Ugc2VsZWN0IHNlcnZlciBvciBjaGlsZCBub2RlIGZyb20gdHJlZS4nKQotICAgICAgICAg ICk7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgIH0KLQotICAgICAgaWYgKCFz ZXJ2ZXJfZGF0YSkgewotICAgICAgICByZXR1cm47Ci0gICAgICB9Ci0KLSAgICAgIHZhciBtb2R1 bGUgPSAncGF0aHMnLAotICAgICAgICBwcmVmZXJlbmNlX25hbWUgPSAncGdfYmluX2RpcicsCi0g ICAgICAgIG1zZyA9IGdldHRleHQoJ1BsZWFzZSBzZXQgYmluYXJ5IHBhdGggZm9yIFBvc3RncmVT UUwgU2VydmVyIGZyb20gcHJlZmVyZW5jZXMuJyk7Ci0KLSAgICAgIGlmICgoc2VydmVyX2RhdGEu dHlwZSAmJiBzZXJ2ZXJfZGF0YS50eXBlID09ICdwcGFzJykgfHwKLSAgICAgICAgc2VydmVyX2Rh dGEuc2VydmVyX3R5cGUgPT0gJ3BwYXMnKSB7Ci0gICAgICAgIHByZWZlcmVuY2VfbmFtZSA9ICdw cGFzX2Jpbl9kaXInOwotICAgICAgICBtc2cgPSBnZXR0ZXh0KCdQbGVhc2Ugc2V0IGJpbmFyeSBw YXRoIGZvciBFREIgUG9zdGdyZXMgQWR2YW5jZWQgU2VydmVyIGZyb20gcHJlZmVyZW5jZXMuJyk7 Ci0gICAgICB9Ci0KLSAgICAgIHZhciBwcmVmZXJlbmNlID0gcGdCcm93c2VyLmdldF9wcmVmZXJl bmNlKG1vZHVsZSwgcHJlZmVyZW5jZV9uYW1lKTsKLQotICAgICAgaWYgKHByZWZlcmVuY2UpIHsK LSAgICAgICAgaWYgKCFwcmVmZXJlbmNlLnZhbHVlKSB7Ci0gICAgICAgICAgYWxlcnRpZnkuYWxl cnQoZ2V0dGV4dCgnQ29uZmlndXJhdGlvbiByZXF1aXJlZCcpLCBtc2cpOwotICAgICAgICAgIHJl dHVybjsKLSAgICAgICAgfQotICAgICAgfSBlbHNlIHsKLSAgICAgICAgYWxlcnRpZnkuYWxlcnQo Ci0gICAgICAgICAgZ2V0dGV4dCgnQmFja3VwIEVycm9yJyksCi0gICAgICAgICAgUyhnZXR0ZXh0 KCdGYWlsZWQgdG8gbG9hZCBwcmVmZXJlbmNlICVzIG9mIG1vZHVsZSAlcycpKS5zcHJpbnRmKHBy ZWZlcmVuY2VfbmFtZSwgbW9kdWxlKS52YWx1ZSgpCi0gICAgICAgICk7Ci0gICAgICAgIHJldHVy bjsKLSAgICAgIH0KLQotICAgICAgdmFyIHRpdGxlID0gUyhnZXR0ZXh0KCdCYWNrdXAgKCVzOiAl cyknKSksCi0gICAgICAgIHRyZWUgPSBwZ0Jyb3dzZXIudHJlZSwKLSAgICAgICAgaXRlbSA9IHRy ZWVJdGVtIHx8IHRyZWUuc2VsZWN0ZWQoKSwKLSAgICAgICAgZGF0YSA9IGl0ZW0gJiYgaXRlbS5s ZW5ndGggPT0gMSAmJiB0cmVlLml0ZW1EYXRhKGl0ZW0pLAotICAgICAgICBub2RlID0gZGF0YSAm JiBkYXRhLl90eXBlICYmIHBnQnJvd3Nlci5Ob2Rlc1tkYXRhLl90eXBlXTsKLQotICAgICAgaWYg KCFub2RlKQotICAgICAgICByZXR1cm47Ci0KLSAgICAgIHZhciB0cmVlSW5mbyA9IG5vZGUuZ2V0 VHJlZU5vZGVIaWVyYXJjaHkuYXBwbHkobm9kZSwgW2l0ZW1dKTsKLQotICAgICAgaWYgKHRyZWVJ bmZvLmRhdGFiYXNlLl9sYWJlbC5pbmRleE9mKCc9JykgPj0gMCkgewotICAgICAgICBhbGVydGlm eS5hbGVydCgKLSAgICAgICAgICBnZXR0ZXh0KCdCYWNrdXAgZXJyb3InKSwKLSAgICAgICAgICBn ZXR0ZXh0KCdCYWNrdXAgam9iIGNyZWF0aW9uIGZhaWxlZC4gJysKLSAgICAgICAgICAnRGF0YWJh c2VzIHdpdGggPSBzeW1ib2xzIGluIHRoZSBuYW1lIGNhbm5vdCBiZSBiYWNrZWQgdXAgdXNpbmcg dGhpcyB1dGlsaXR5LicpCi0gICAgICAgICk7Ci0gICAgICAgIHJldHVybjsKLSAgICAgIH0KLQot ICAgICAgdGl0bGUgPSB0aXRsZS5zcHJpbnRmKG5vZGUubGFiZWwsIGRhdGEubGFiZWwpLnZhbHVl KCk7Ci0KLSAgICAgIGlmICghYWxlcnRpZnkuYmFja3VwX29iamVjdHMpIHsKLSAgICAgICAgLy8g Q3JlYXRlIERpYWxvZyB0aXRsZSBvbiB0aGUgZmx5IHdpdGggbm9kZSBkZXRhaWxzCi0gICAgICAg IGFsZXJ0aWZ5LmRpYWxvZygnYmFja3VwX29iamVjdHMnLCBmdW5jdGlvbiBmYWN0b3J5KCkgewot ICAgICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICBtYWluOiBmdW5jdGlvbih0aXRsZSkgewot ICAgICAgICAgICAgICB0aGlzLnNldCgndGl0bGUnLCB0aXRsZSk7Ci0gICAgICAgICAgICB9LAot ICAgICAgICAgICAgYnVpbGQ6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICBhbGVydGlmeS5w Z0RpYWxvZ0J1aWxkLmFwcGx5KHRoaXMpOwotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIHNl dHVwOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgICAg ICBidXR0b25zOiBbewotICAgICAgICAgICAgICAgICAgdGV4dDogJycsCi0gICAgICAgICAgICAg ICAgICBjbGFzc05hbWU6ICdidG4gYnRuLWRlZmF1bHQgcHVsbC1sZWZ0IGZhIGZhLWxnIGZhLWlu Zm8nLAotICAgICAgICAgICAgICAgICAgYXR0cnM6IHsKLSAgICAgICAgICAgICAgICAgICAgbmFt ZTogJ29iamVjdF9oZWxwJywKLSAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2J1dHRvbicsCi0g ICAgICAgICAgICAgICAgICAgIHVybDogJ2JhY2t1cC5odG1sJywKLSAgICAgICAgICAgICAgICAg ICAgbGFiZWw6IGdldHRleHQoJ0JhY2t1cCcpLAotICAgICAgICAgICAgICAgICAgfSwKLSAgICAg ICAgICAgICAgICB9LCB7Ci0gICAgICAgICAgICAgICAgICB0ZXh0OiAnJywKLSAgICAgICAgICAg ICAgICAgIGtleTogMTEyLAotICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnYnRuIGJ0bi1k ZWZhdWx0IHB1bGwtbGVmdCBmYSBmYS1sZyBmYS1xdWVzdGlvbicsCi0gICAgICAgICAgICAgICAg ICBhdHRyczogewotICAgICAgICAgICAgICAgICAgICBuYW1lOiAnZGlhbG9nX2hlbHAnLAotICAg ICAgICAgICAgICAgICAgICB0eXBlOiAnYnV0dG9uJywKLSAgICAgICAgICAgICAgICAgICAgbGFi ZWw6IGdldHRleHQoJ0JhY2t1cCcpLAotICAgICAgICAgICAgICAgICAgICB1cmw6IHVybF9mb3Io J2hlbHAuc3RhdGljJywgewotICAgICAgICAgICAgICAgICAgICAgICdmaWxlbmFtZSc6ICdiYWNr dXBfZGlhbG9nLmh0bWwnLAotICAgICAgICAgICAgICAgICAgICB9KSwKLSAgICAgICAgICAgICAg ICAgIH0sCi0gICAgICAgICAgICAgICAgfSwgewotICAgICAgICAgICAgICAgICAgdGV4dDogZ2V0 dGV4dCgnQmFja3VwJyksCi0gICAgICAgICAgICAgICAgICBrZXk6IDEzLAotICAgICAgICAgICAg ICAgICAgY2xhc3NOYW1lOiAnYnRuIGJ0bi1wcmltYXJ5IGZhIGZhLWxnIGZhLXNhdmUgcGctYWxl cnRpZnktYnV0dG9uJywKLSAgICAgICAgICAgICAgICAgICdkYXRhLWJ0bi1uYW1lJzogJ2JhY2t1 cCcsCi0gICAgICAgICAgICAgICAgfSwgewotICAgICAgICAgICAgICAgICAgdGV4dDogZ2V0dGV4 dCgnQ2FuY2VsJyksCi0gICAgICAgICAgICAgICAgICBrZXk6IDI3LAotICAgICAgICAgICAgICAg ICAgY2xhc3NOYW1lOiAnYnRuIGJ0bi1kYW5nZXIgZmEgZmEtbGcgZmEtdGltZXMgcGctYWxlcnRp ZnktYnV0dG9uJywKLSAgICAgICAgICAgICAgICAgICdkYXRhLWJ0bi1uYW1lJzogJ2NhbmNlbCcs Ci0gICAgICAgICAgICAgICAgfV0sCi0gICAgICAgICAgICAgICAgLy8gU2V0IG9wdGlvbnMgZm9y IGRpYWxvZwotICAgICAgICAgICAgICAgIG9wdGlvbnM6IHsKLSAgICAgICAgICAgICAgICAgIHRp dGxlOiB0aXRsZSwKLSAgICAgICAgICAgICAgICAgIC8vZGlzYWJsZSBib3RoIHBhZGRpbmcgYW5k IG92ZXJmbG93IGNvbnRyb2wuCi0gICAgICAgICAgICAgICAgICBwYWRkaW5nOiAhMSwKLSAgICAg ICAgICAgICAgICAgIG92ZXJmbG93OiAhMSwKLSAgICAgICAgICAgICAgICAgIG1vZGVsOiAwLAot ICAgICAgICAgICAgICAgICAgcmVzaXphYmxlOiB0cnVlLAotICAgICAgICAgICAgICAgICAgbWF4 aW1pemFibGU6IHRydWUsCi0gICAgICAgICAgICAgICAgICBwaW5uYWJsZTogZmFsc2UsCi0gICAg ICAgICAgICAgICAgICBjbG9zYWJsZUJ5RGltbWVyOiBmYWxzZSwKLSAgICAgICAgICAgICAgICAg IG1vZGFsOiBmYWxzZSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICB9OwotICAg ICAgICAgICAgfSwKLSAgICAgICAgICAgIGhvb2tzOiB7Ci0gICAgICAgICAgICAgIC8vIHRyaWdn ZXJlZCB3aGVuIHRoZSBkaWFsb2cgaXMgY2xvc2VkCi0gICAgICAgICAgICAgIG9uY2xvc2U6IGZ1 bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIGlmICh0aGlzLnZpZXcpIHsKLSAgICAgICAgICAg ICAgICAgIHRoaXMudmlldy5yZW1vdmUoewotICAgICAgICAgICAgICAgICAgICBkYXRhOiB0cnVl LAotICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbDogdHJ1ZSwKLSAgICAgICAgICAgICAgICAg ICAgc2lsZW50OiB0cnVlLAotICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAg fQotICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIHByZXBhcmU6 IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICB2YXIgc2VsZiA9IHRoaXM7Ci0gICAgICAgICAg ICAgIC8vIERpc2FibGUgQmFja3VwIGJ1dHRvbiB1bnRpbCB1c2VyIHByb3ZpZGVzIEZpbGVuYW1l Ci0gICAgICAgICAgICAgIHRoaXMuX19pbnRlcm5hbC5idXR0b25zWzJdLmVsZW1lbnQuZGlzYWJs ZWQgPSB0cnVlOwotICAgICAgICAgICAgICB2YXIgJGNvbnRhaW5lciA9ICQoJzxkaXYgY2xhc3M9 XCdiYWNrdXBfZGlhbG9nXCc+PC9kaXY+Jyk7Ci0gICAgICAgICAgICAgIHZhciB0ID0gcGdCcm93 c2VyLnRyZWUsCi0gICAgICAgICAgICAgICAgaSA9IHQuc2VsZWN0ZWQoKSwKLSAgICAgICAgICAg ICAgICBkID0gaSAmJiBpLmxlbmd0aCA9PSAxID8gdC5pdGVtRGF0YShpKSA6IHVuZGVmaW5lZCwK LSAgICAgICAgICAgICAgICBub2RlID0gZCAmJiBwZ0Jyb3dzZXIuTm9kZXNbZC5fdHlwZV07Ci0K LSAgICAgICAgICAgICAgaWYgKCFkKQotICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAg ICAgICAgICB2YXIgdHJlZUluZm8gPSBub2RlLmdldFRyZWVOb2RlSGllcmFyY2h5LmFwcGx5KG5v ZGUsIFtpXSk7Ci0KLSAgICAgICAgICAgICAgdmFyIG5ld01vZGVsID0gbmV3IEJhY2t1cE9iamVj dE1vZGVsKHt9LCB7Ci0gICAgICAgICAgICAgICAgICBub2RlX2luZm86IHRyZWVJbmZvLAotICAg ICAgICAgICAgICAgIH0pLAotICAgICAgICAgICAgICAgIGZpZWxkcyA9IEJhY2tmb3JtLmdlbmVy YXRlVmlld1NjaGVtYSgKLSAgICAgICAgICAgICAgICAgIHRyZWVJbmZvLCBuZXdNb2RlbCwgJ2Ny ZWF0ZScsIG5vZGUsIHRyZWVJbmZvLnNlcnZlciwgdHJ1ZQotICAgICAgICAgICAgICAgICk7Ci0K LSAgICAgICAgICAgICAgdmFyIHZpZXcgPSB0aGlzLnZpZXcgPSBuZXcgQmFja2Zvcm0uRGlhbG9n KHsKLSAgICAgICAgICAgICAgICBlbDogJGNvbnRhaW5lciwKLSAgICAgICAgICAgICAgICBtb2Rl bDogbmV3TW9kZWwsCi0gICAgICAgICAgICAgICAgc2NoZW1hOiBmaWVsZHMsCi0gICAgICAgICAg ICAgIH0pOwotCi0gICAgICAgICAgICAgICQodGhpcy5lbGVtZW50cy5ib2R5LmNoaWxkTm9kZXNb MF0pLmFkZENsYXNzKAotICAgICAgICAgICAgICAgICdhbGVydGlmeV90b29sc19kaWFsb2dfcHJv cGVydGllcyBvYmpfcHJvcGVydGllcycKLSAgICAgICAgICAgICAgKTsKLQotICAgICAgICAgICAg ICB2aWV3LnJlbmRlcigpOwotCi0gICAgICAgICAgICAgIHRoaXMuZWxlbWVudHMuY29udGVudC5h cHBlbmRDaGlsZCgkY29udGFpbmVyLmdldCgwKSk7Ci0KLSAgICAgICAgICAgICAgaWYodmlldykg ewotICAgICAgICAgICAgICAgIHZpZXcuJGVsLmF0dHIoJ3RhYmluZGV4JywgLTEpOwotICAgICAg ICAgICAgICAgIC8vIHZhciBkaWFsb2dUYWJOYXZpZ2F0b3IgPSBwZ0Jyb3dzZXIua2V5Ym9hcmRO YXZpZ2F0aW9uLmdldERpYWxvZ1RhYk5hdmlnYXRvcih2aWV3KTsKLSAgICAgICAgICAgICAgICBw Z0Jyb3dzZXIua2V5Ym9hcmROYXZpZ2F0aW9uLmdldERpYWxvZ1RhYk5hdmlnYXRvcih2aWV3KTsK LSAgICAgICAgICAgICAgICB2YXIgY29udGFpbmVyID0gdmlldy4kZWwuZmluZCgnLnRhYi1jb250 ZW50OmZpcnN0ID4gLnRhYi1wYW5lLmFjdGl2ZTpmaXJzdCcpOwotICAgICAgICAgICAgICAgIGNv bW1vblV0aWxzLmZpbmRBbmRTZXRGb2N1cyhjb250YWluZXIpOwotICAgICAgICAgICAgICB9Ci0g ICAgICAgICAgICAgIC8vIExpc3RlbiB0byBtb2RlbCAmIGlmIGZpbGVuYW1lIGlzIHByb3ZpZGVk IHRoZW4gZW5hYmxlIEJhY2t1cCBidXR0b24KLSAgICAgICAgICAgICAgdGhpcy52aWV3Lm1vZGVs Lm9uKCdjaGFuZ2UnLCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICBpZiAoIV8uaXNVbmRl ZmluZWQodGhpcy5nZXQoJ2ZpbGUnKSkgJiYgdGhpcy5nZXQoJ2ZpbGUnKSAhPT0gJycpIHsKLSAg ICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC5jbGVhcigpOwotICAgICAgICAgICAgICAg ICAgc2VsZi5fX2ludGVybmFsLmJ1dHRvbnNbMl0uZWxlbWVudC5kaXNhYmxlZCA9IGZhbHNlOwot ICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICBzZWxmLl9faW50ZXJu YWwuYnV0dG9uc1syXS5lbGVtZW50LmRpc2FibGVkID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAg IHRoaXMuZXJyb3JNb2RlbC5zZXQoJ2ZpbGUnLCBnZXR0ZXh0KCdQbGVhc2UgcHJvdmlkZSBmaWxl bmFtZScpKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgIH0pOwotCi0gICAgICAg ICAgICB9LAotICAgICAgICAgICAgLy8gQ2FsbGJhY2sgZnVuY3Rpb25zIHdoZW4gY2xpY2sgb24g dGhlIGJ1dHRvbnMgb2YgdGhlIEFsZXJ0aWZ5IGRpYWxvZ3MKLSAgICAgICAgICAgIGNhbGxiYWNr OiBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICAgIC8vIEZldGNoIGN1cnJlbnQgc2VydmVyIGlk Ci0gICAgICAgICAgICAgIHZhciB0ID0gcGdCcm93c2VyLnRyZWUsCi0gICAgICAgICAgICAgICAg aSA9IHQuc2VsZWN0ZWQoKSwKLSAgICAgICAgICAgICAgICBkID0gaSAmJiBpLmxlbmd0aCA9PSAx ID8gdC5pdGVtRGF0YShpKSA6IHVuZGVmaW5lZCwKLSAgICAgICAgICAgICAgICBub2RlID0gZCAm JiBwZ0Jyb3dzZXIuTm9kZXNbZC5fdHlwZV07Ci0KLSAgICAgICAgICAgICAgaWYgKGUuYnV0dG9u LmVsZW1lbnQubmFtZSA9PSAnZGlhbG9nX2hlbHAnIHx8IGUuYnV0dG9uLmVsZW1lbnQubmFtZSA9 PSAnb2JqZWN0X2hlbHAnKSB7Ci0gICAgICAgICAgICAgICAgZS5jYW5jZWwgPSB0cnVlOwotICAg ICAgICAgICAgICAgIHBnQnJvd3Nlci5zaG93SGVscChlLmJ1dHRvbi5lbGVtZW50Lm5hbWUsIGUu YnV0dG9uLmVsZW1lbnQuZ2V0QXR0cmlidXRlKCd1cmwnKSwKLSAgICAgICAgICAgICAgICAgIG5v ZGUsIGksIGUuYnV0dG9uLmVsZW1lbnQuZ2V0QXR0cmlidXRlKCdsYWJlbCcpKTsKLSAgICAgICAg ICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICBpZiAoZS5i dXR0b25bJ2RhdGEtYnRuLW5hbWUnXSA9PT0gJ2JhY2t1cCcpIHsKLSAgICAgICAgICAgICAgICBp ZiAoIWQpCi0gICAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgICAgICB2YXIg dHJlZUluZm8gPSBub2RlLmdldFRyZWVOb2RlSGllcmFyY2h5LmFwcGx5KG5vZGUsIFtpXSk7Ci0K LSAgICAgICAgICAgICAgICAvLyBTZXQgY3VycmVudCBkYXRhYmFzZSBpbnRvIG1vZGVsCi0gICAg ICAgICAgICAgICAgdGhpcy52aWV3Lm1vZGVsLnNldCgnZGF0YWJhc2UnLCB0cmVlSW5mby5kYXRh YmFzZS5fbGFiZWwpOwotCi0gICAgICAgICAgICAgICAgLy8gV2Ugd2lsbCByZW1vdmUgb25jZSBv YmplY3QgdHJlZSBpcyBpbXBsZW1lbnRlZAotICAgICAgICAgICAgICAgIC8vIElmIHNlbGVjdGVk IG5vZGUgaXMgU2NoZW1hIHRoZW4gYWRkIGl0IGluIG1vZGVsCi0gICAgICAgICAgICAgICAgaWYg KGQuX3R5cGUgPT0gJ3NjaGVtYScpIHsKLSAgICAgICAgICAgICAgICAgIHZhciBzY2hlbWFzID0g W107Ci0gICAgICAgICAgICAgICAgICBzY2hlbWFzLnB1c2goZC5fbGFiZWwpOwotICAgICAgICAg ICAgICAgICAgdGhpcy52aWV3Lm1vZGVsLnNldCgnc2NoZW1hcycsIHNjaGVtYXMpOwotICAgICAg ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAvLyBJZiBzZWxlY3RlZCBub2RlIGlzIFRhYmxl IHRoZW4gYWRkIGl0IGluIG1vZGVsIGFsb25nIHdpdGgKLSAgICAgICAgICAgICAgICAvLyBpdHMg c2NoZW1hCi0gICAgICAgICAgICAgICAgaWYgKGQuX3R5cGUgPT0gJ3RhYmxlJykgewotICAgICAg ICAgICAgICAgICAgdGhpcy52aWV3Lm1vZGVsLnNldCgKLSAgICAgICAgICAgICAgICAgICAgJ3Rh YmxlcycsIFsKLSAgICAgICAgICAgICAgICAgICAgICBbdHJlZUluZm8uc2NoZW1hLl9sYWJlbCwg ZC5fbGFiZWxdLAotICAgICAgICAgICAgICAgICAgICBdCi0gICAgICAgICAgICAgICAgICApOwot ICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIC8vIFJlbW92ZSByYXRpbyBhdHRy aWJ1dGUgZnJvbSBtb2RlbCBpZiBpdCBoYXMgZW1wdHkgc3RyaW5nLgotICAgICAgICAgICAgICAg IC8vIFRoZSB2YWxpZCB2YWx1ZSBjYW4gYmUgYmV0d2VlbiAwIHRvIDkuCi0gICAgICAgICAgICAg ICAgaWYgKF8uaXNFbXB0eSh0aGlzLnZpZXcubW9kZWwuZ2V0KCdyYXRpbycpKSkgewotICAgICAg ICAgICAgICAgICAgdGhpcy52aWV3Lm1vZGVsLnVuc2V0KCdyYXRpbycpOwotICAgICAgICAgICAg ICAgIH0KLQotICAgICAgICAgICAgICAgIHZhciBzZWxmID0gdGhpcywKLSAgICAgICAgICAgICAg ICAgIGJhc2VVcmwgPSB1cmxfZm9yKCdiYWNrdXAuY3JlYXRlX29iamVjdF9qb2InLCB7Ci0gICAg ICAgICAgICAgICAgICAgICdzaWQnOiB0cmVlSW5mby5zZXJ2ZXIuX2lkLAotICAgICAgICAgICAg ICAgICAgfSksCi0gICAgICAgICAgICAgICAgICBhcmdzID0gdGhpcy52aWV3Lm1vZGVsLnRvSlNP TigpOwotCi0gICAgICAgICAgICAgICAgJC5hamF4KHsKLSAgICAgICAgICAgICAgICAgIHVybDog YmFzZVVybCwKLSAgICAgICAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLAotICAgICAgICAgICAg ICAgICAgZGF0YTogewotICAgICAgICAgICAgICAgICAgICAnZGF0YSc6IEpTT04uc3RyaW5naWZ5 KGFyZ3MpLAotICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M6 IGZ1bmN0aW9uKHJlcykgewotICAgICAgICAgICAgICAgICAgICBpZiAocmVzLnN1Y2Nlc3MpIHsK LSAgICAgICAgICAgICAgICAgICAgICBhbGVydGlmeS5zdWNjZXNzKGdldHRleHQoJ0JhY2t1cCBq b2IgY3JlYXRlZC4nKSwgNSk7Ci0gICAgICAgICAgICAgICAgICAgICAgcGdCcm93c2VyLkV2ZW50 cy50cmlnZ2VyKCdwZ2FkbWluLWJncHJvY2VzczpjcmVhdGVkJywgc2VsZik7Ci0gICAgICAgICAg ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICBlcnJv cjogZnVuY3Rpb24oeGhyKSB7Ci0gICAgICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAg ICAgICAgICAgICAgdmFyIGVyciA9IEpTT04ucGFyc2UoeGhyLnJlc3BvbnNlVGV4dCk7Ci0gICAg ICAgICAgICAgICAgICAgICAgYWxlcnRpZnkuYWxlcnQoCi0gICAgICAgICAgICAgICAgICAgICAg ICBnZXR0ZXh0KCdCYWNrdXAgam9iIGZhaWxlZC4nKSwKLSAgICAgICAgICAgICAgICAgICAgICAg IGVyci5lcnJvcm1zZwotICAgICAgICAgICAgICAgICAgICAgICk7Ci0gICAgICAgICAgICAgICAg ICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oZS5z dGFjayB8fCBlKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgfSwK LSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSwKLSAg ICAgICAgICB9OwotICAgICAgICB9KTsKLSAgICAgIH0KLSAgICAgIGFsZXJ0aWZ5LmJhY2t1cF9v YmplY3RzKHRpdGxlKS5yZXNpemVUbygnNjUlJywgJzYwJScpOworICAgICAgbGV0IGRpYWxvZyA9 IG5ldyBnbG9iYWxCYWNrdXBEaWFsb2cuQmFja3VwRGlhbG9nKAorICAgICAgICBwZ0Jyb3dzZXIs CisgICAgICAgICQsCisgICAgICAgIGFsZXJ0aWZ5LAorICAgICAgICBCYWNrdXBPYmplY3RNb2Rl bAorICAgICAgKTsKKyAgICAgIGRpYWxvZy5kcmF3KGFjdGlvbiwgdHJlZUl0ZW0sIG51bGwpOwog ICAgIH0sCiAgIH07CiAgIHJldHVybiBwZ0Jyb3dzZXIuQmFja3VwOwpkaWZmIC0tZ2l0IGEvd2Vi L3BnYWRtaW4vdG9vbHMvYmFja3VwL3N0YXRpYy9qcy9iYWNrdXBfZGlhbG9nLmpzIGIvd2ViL3Bn YWRtaW4vdG9vbHMvYmFja3VwL3N0YXRpYy9qcy9iYWNrdXBfZGlhbG9nLmpzCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi4yZjUzMGQ4MAotLS0gL2Rldi9udWxsCisrKyBiL3dl Yi9wZ2FkbWluL3Rvb2xzL2JhY2t1cC9zdGF0aWMvanMvYmFja3VwX2RpYWxvZy5qcwpAQCAtMCww ICsxLDcyIEBACisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vCisvLworLy8gcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworLy8K Ky8vIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTgsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRl YW0KKy8vIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGlj ZW5jZQorLy8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vCisKK2ltcG9ydCBnZXR0ZXh0IGZyb20gJy4uLy4uLy4uLy4uL3N0YXRp Yy9qcy9nZXR0ZXh0JzsKK2ltcG9ydCBCYWNrZm9ybSBmcm9tICcuLi8uLi8uLi8uLi9zdGF0aWMv anMvYmFja2Zvcm0ucGdhZG1pbic7CitpbXBvcnQge0RpYWxvZ30gZnJvbSAnLi4vLi4vLi4vLi4v c3RhdGljL2pzL2FsZXJ0aWZ5L2RpYWxvZyc7CisKK2V4cG9ydCBjbGFzcyBCYWNrdXBEaWFsb2cg ZXh0ZW5kcyBEaWFsb2cgeworICBjb25zdHJ1Y3RvcihwZ0Jyb3dzZXIsICQsIGFsZXJ0aWZ5LCBC YWNrdXBNb2RlbCwgYmFja2Zvcm0gPSBCYWNrZm9ybSkgeworICAgIHN1cGVyKCdCYWNrdXAgRXJy b3InLAorICAgICAgJzxkaXYgY2xhc3M9XCdiYWNrdXBfZGlhbG9nXCc+PC9kaXY+JywKKyAgICAg IHBnQnJvd3NlciwgJCwgYWxlcnRpZnksIEJhY2t1cE1vZGVsLCBiYWNrZm9ybQorICAgICk7Cisg IH0KKworICBkcmF3KGFjdGlvbiwgYWNpVHJlZUl0ZW0sIHBhcmFtcykgeworICAgIGNvbnN0IHNl cnZlckluZm9ybWF0aW9uID0gdGhpcy5yZXRyaWV2ZUFuY2VzdG9yT2ZUeXBlU2VydmVyKGFjaVRy ZWVJdGVtKTsKKworICAgIGlmICghc2VydmVySW5mb3JtYXRpb24pIHsKKyAgICAgIHJldHVybjsK KyAgICB9CisKKyAgICBpZiAoIXRoaXMuaGFzQmluYXJpZXNDb25maWd1cmF0aW9uKHNlcnZlcklu Zm9ybWF0aW9uKSkgeworICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNvbnN0IHR5cGVPZkRp YWxvZyA9IEJhY2t1cERpYWxvZy50eXBlT2ZEaWFsb2cocGFyYW1zKTsKKworICAgIGlmICghdGhp cy5jYW5FeGVjdXRlT25DdXJyZW50RGF0YWJhc2UoYWNpVHJlZUl0ZW0pKSB7CisgICAgICByZXR1 cm47CisgICAgfQorCisgICAgY29uc3QgZGlhbG9nID0gdGhpcy5jcmVhdGVPckdldERpYWxvZygK KyAgICAgIEJhY2t1cERpYWxvZy5kaWFsb2dUaXRsZSh0eXBlT2ZEaWFsb2cpLAorICAgICAgdHlw ZU9mRGlhbG9nCisgICAgKTsKKyAgICBkaWFsb2codHJ1ZSkucmVzaXplVG8oJzYwJScsICc1MCUn KTsKKyAgfQorCisgIHN0YXRpYyB0eXBlT2ZEaWFsb2cocGFyYW1zKSB7CisgICAgaWYgKHBhcmFt cyA9PT0gbnVsbCkgeworICAgICAgcmV0dXJuICdiYWNrdXBfb2JqZWN0cyc7CisgICAgfQorICAg IGxldCB0eXBlT2ZEaWFsb2cgPSAnc2VydmVyJzsKKyAgICBpZiAoIV8uaXNVbmRlZmluZWQocGFy YW1zWydnbG9iYWxzJ10pICYmIHBhcmFtc1snZ2xvYmFscyddKSB7CisgICAgICB0eXBlT2ZEaWFs b2cgPSAnZ2xvYmFscyc7CisgICAgfQorICAgIHJldHVybiB0eXBlT2ZEaWFsb2c7CisgIH0KKwor ICBzdGF0aWMgZGlhbG9nVGl0bGUodHlwZU9mRGlhbG9nKSB7CisgICAgaWYgKHR5cGVPZkRpYWxv ZyA9PT0gJ2JhY2t1cF9vYmplY3RzJykgeworICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorICAg IHJldHVybiAoKHR5cGVPZkRpYWxvZyA9PT0gJ2dsb2JhbHMnKSA/CisgICAgICBnZXR0ZXh0KCdC YWNrdXAgR2xvYmFscy4uLicpIDoKKyAgICAgIGdldHRleHQoJ0JhY2t1cCBTZXJ2ZXIuLi4nKSk7 CisgIH0KKworICBkaWFsb2dOYW1lKHR5cGVPZkRpYWxvZykgeworICAgIGlmICh0eXBlT2ZEaWFs b2cgPT09ICdiYWNrdXBfb2JqZWN0cycpIHsKKyAgICAgIHJldHVybiB0eXBlT2ZEaWFsb2c7Cisg ICAgfQorICAgIHJldHVybiAnQmFja3VwRGlhbG9nXycgKyB0eXBlT2ZEaWFsb2c7CisgIH0KK30K ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL2JhY2t1cC9zdGF0aWMvanMvYmFja3VwX2Rp YWxvZ193cmFwcGVyLmpzIGIvd2ViL3BnYWRtaW4vdG9vbHMvYmFja3VwL3N0YXRpYy9qcy9iYWNr dXBfZGlhbG9nX3dyYXBwZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAu LjJjZWJlM2QxCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvYmFja3VwL3N0 YXRpYy9qcy9iYWNrdXBfZGlhbG9nX3dyYXBwZXIuanMKQEAgLTAsMCArMSwyNTggQEAKKy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8K Ky8vCisvLyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisvLworLy8gQ29weXJpZ2h0IChD KSAyMDEzIC0gMjAxOCwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorLy8gVGhpcyBzb2Z0 d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisvLworLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8K KworaW1wb3J0IHtnZXRUcmVlTm9kZUhpZXJhcmNoeUZyb21FbGVtZW50fSBmcm9tICcuLi8uLi8u Li8uLi9zdGF0aWMvanMvdHJlZS9wZ2FkbWluX3RyZWVfbm9kZSc7CitpbXBvcnQgYXhpb3MgZnJv bSAnYXhpb3MvaW5kZXgnOworaW1wb3J0IGdldHRleHQgZnJvbSAnLi4vLi4vLi4vLi4vc3RhdGlj L2pzL2dldHRleHQnOworaW1wb3J0IHVybF9mb3IgZnJvbSAnLi4vLi4vLi4vLi4vc3RhdGljL2pz L3VybF9mb3InOworaW1wb3J0IF8gZnJvbSAndW5kZXJzY29yZSc7CitpbXBvcnQge0RpYWxvZ1dy YXBwZXJ9IGZyb20gJy4uLy4uLy4uLy4uL3N0YXRpYy9qcy9hbGVydGlmeS9kaWFsb2dfd3JhcHBl cic7CisKK2V4cG9ydCBjbGFzcyBCYWNrdXBEaWFsb2dXcmFwcGVyIGV4dGVuZHMgRGlhbG9nV3Jh cHBlciB7CisgIGNvbnN0cnVjdG9yKGRpYWxvZ0NvbnRhaW5lclNlbGVjdG9yLCBkaWFsb2dUaXRs ZSwgdHlwZU9mRGlhbG9nLAorICAgICAgICAgICAgICBqcXVlcnksIHBnQnJvd3NlciwgYWxlcnRp ZnksIGRpYWxvZ01vZGVsLCBiYWNrZm9ybSkgeworICAgIHN1cGVyKGRpYWxvZ0NvbnRhaW5lclNl bGVjdG9yLCBkaWFsb2dUaXRsZSwganF1ZXJ5LAorICAgICAgcGdCcm93c2VyLCBhbGVydGlmeSwg ZGlhbG9nTW9kZWwsIGJhY2tmb3JtKTsKKyAgICB0aGlzLnR5cGVPZkRpYWxvZyA9IHR5cGVPZkRp YWxvZzsKKyAgfQorCisgIG1haW4odGl0bGUpIHsKKyAgICB0aGlzLnNldCgndGl0bGUnLCB0aXRs ZSk7CisgIH0KKworICBzZXR1cCgpIHsKKyAgICByZXR1cm4geworICAgICAgYnV0dG9uczogW3sK KyAgICAgICAgdGV4dDogJycsCisgICAgICAgIGNsYXNzTmFtZTogJ2J0biBidG4tZGVmYXVsdCBw dWxsLWxlZnQgZmEgZmEtbGcgZmEtaW5mbycsCisgICAgICAgIGF0dHJzOiB7CisgICAgICAgICAg bmFtZTogJ29iamVjdF9oZWxwJywKKyAgICAgICAgICB0eXBlOiAnYnV0dG9uJywKKyAgICAgICAg ICB1cmw6ICdiYWNrdXAuaHRtbCcsCisgICAgICAgICAgbGFiZWw6IGdldHRleHQoJ0JhY2t1cCcp LAorICAgICAgICB9LAorICAgICAgfSwgeworICAgICAgICB0ZXh0OiAnJywKKyAgICAgICAga2V5 OiAxMTIsCisgICAgICAgIGNsYXNzTmFtZTogJ2J0biBidG4tZGVmYXVsdCBwdWxsLWxlZnQgZmEg ZmEtbGcgZmEtcXVlc3Rpb24nLAorICAgICAgICBhdHRyczogeworICAgICAgICAgIG5hbWU6ICdk aWFsb2dfaGVscCcsCisgICAgICAgICAgdHlwZTogJ2J1dHRvbicsCisgICAgICAgICAgbGFiZWw6 IGdldHRleHQoJ0JhY2t1cCcpLAorICAgICAgICAgIHVybDogdXJsX2ZvcignaGVscC5zdGF0aWMn LCB7CisgICAgICAgICAgICAnZmlsZW5hbWUnOiAnYmFja3VwX2RpYWxvZy5odG1sJywKKyAgICAg ICAgICB9KSwKKyAgICAgICAgfSwKKyAgICAgIH0sIHsKKyAgICAgICAgdGV4dDogZ2V0dGV4dCgn QmFja3VwJyksCisgICAgICAgIGtleTogMTMsCisgICAgICAgIGNsYXNzTmFtZTogJ2J0biBidG4t cHJpbWFyeSBmYSBmYS1sZyBmYS1zYXZlIHBnLWFsZXJ0aWZ5LWJ1dHRvbicsCisgICAgICAgICdk YXRhLWJ0bi1uYW1lJzogJ2JhY2t1cCcsCisgICAgICB9LCB7CisgICAgICAgIHRleHQ6IGdldHRl eHQoJ0NhbmNlbCcpLAorICAgICAgICBrZXk6IDI3LAorICAgICAgICBjbGFzc05hbWU6ICdidG4g YnRuLWRhbmdlciBmYSBmYS1sZyBmYS10aW1lcyBwZy1hbGVydGlmeS1idXR0b24nLAorICAgICAg ICAnZGF0YS1idG4tbmFtZSc6ICdjYW5jZWwnLAorICAgICAgfV0sCisgICAgICAvLyBTZXQgb3B0 aW9ucyBmb3IgZGlhbG9nCisgICAgICBvcHRpb25zOiB7CisgICAgICAgIHRpdGxlOiB0aGlzLmRp YWxvZ1RpdGxlLAorICAgICAgICAvL2Rpc2FibGUgYm90aCBwYWRkaW5nIGFuZCBvdmVyZmxvdyBj b250cm9sLgorICAgICAgICBwYWRkaW5nOiAhMSwKKyAgICAgICAgb3ZlcmZsb3c6ICExLAorICAg ICAgICBtb2RlbDogMCwKKyAgICAgICAgcmVzaXphYmxlOiB0cnVlLAorICAgICAgICBtYXhpbWl6 YWJsZTogdHJ1ZSwKKyAgICAgICAgcGlubmFibGU6IGZhbHNlLAorICAgICAgICBjbG9zYWJsZUJ5 RGltbWVyOiBmYWxzZSwKKyAgICAgICAgbW9kYWw6IGZhbHNlLAorICAgICAgfSwKKyAgICB9Owor ICB9CisKKyAgcHJlcGFyZSgpIHsKKyAgICB0aGlzLmRpc2FibGVCYWNrdXBCdXR0b24oKTsKKwor ICAgIGNvbnN0ICRjb250YWluZXIgPSB0aGlzLmpxdWVyeSh0aGlzLmRpYWxvZ0NvbnRhaW5lclNl bGVjdG9yKTsKKyAgICBjb25zdCBzZWxlY3RlZFRyZWVOb2RlID0gdGhpcy5nZXRTZWxlY3RlZE5v ZGUoKTsKKyAgICBjb25zdCBzZWxlY3RlZFRyZWVOb2RlRGF0YSA9IHRoaXMuZ2V0U2VsZWN0ZWRO b2RlRGF0YShzZWxlY3RlZFRyZWVOb2RlKTsKKyAgICBpZiAoIXNlbGVjdGVkVHJlZU5vZGVEYXRh KSB7CisgICAgICByZXR1cm47CisgICAgfQorCisgICAgY29uc3Qgbm9kZSA9IHRoaXMucGdCcm93 c2VyLk5vZGVzW3NlbGVjdGVkVHJlZU5vZGVEYXRhLl90eXBlXTsKKyAgICBpZiAodGhpcy5kaWFs b2dUaXRsZSA9PT0gbnVsbCkgeworICAgICAgY29uc3QgdGl0bGUgPSBgQmFja3VwICgke25vZGUu bGFiZWx9OiAke3NlbGVjdGVkVHJlZU5vZGVEYXRhLmxhYmVsfSlgOworICAgICAgdGhpcy5tYWlu KHRpdGxlKTsKKyAgICB9CisKKyAgICBjb25zdCB0cmVlSW5mbyA9IGdldFRyZWVOb2RlSGllcmFy Y2h5RnJvbUVsZW1lbnQodGhpcy5wZ0Jyb3dzZXIsIHNlbGVjdGVkVHJlZU5vZGUpOworICAgIGNv bnN0IGRpYWxvZyA9IHRoaXMuY3JlYXRlRGlhbG9nKG5vZGUsIHRyZWVJbmZvLCB0aGlzLnR5cGVP ZkRpYWxvZywgJGNvbnRhaW5lcik7CisgICAgdGhpcy5hZGRBbGVydGlmeUNsYXNzVG9CYWNrdXBO b2RlQ2hpbGROb2RlcygpOworICAgIGRpYWxvZy5yZW5kZXIoKTsKKworICAgIHRoaXMuZWxlbWVu dHMuY29udGVudC5hcHBlbmRDaGlsZCgkY29udGFpbmVyLmdldCgwKSk7CisKKyAgICB0aGlzLmZv Y3VzT25EaWFsb2coZGlhbG9nKTsKKyAgICB0aGlzLnNldExpc3RlbmVyc0ZvckZpbGVuYW1lQ2hh bmdlcygpOworICB9CisKKyAgY2FsbGJhY2soZXZlbnQpIHsKKyAgICBjb25zdCBzZWxlY3RlZFRy ZWVOb2RlID0gdGhpcy5nZXRTZWxlY3RlZE5vZGUoKTsKKyAgICBjb25zdCBzZWxlY3RlZFRyZWVO b2RlRGF0YSA9IHRoaXMuZ2V0U2VsZWN0ZWROb2RlRGF0YShzZWxlY3RlZFRyZWVOb2RlKTsKKyAg ICBjb25zdCBub2RlID0gc2VsZWN0ZWRUcmVlTm9kZURhdGEgJiYgdGhpcy5wZ0Jyb3dzZXIuTm9k ZXNbc2VsZWN0ZWRUcmVlTm9kZURhdGEuX3R5cGVdOworCisgICAgaWYgKHRoaXMud2FzSGVscEJ1 dHRvblByZXNzZWQoZXZlbnQpKSB7CisgICAgICBldmVudC5jYW5jZWwgPSB0cnVlOworICAgICAg dGhpcy5wZ0Jyb3dzZXIuc2hvd0hlbHAoCisgICAgICAgIGV2ZW50LmJ1dHRvbi5lbGVtZW50Lm5h bWUsCisgICAgICAgIGV2ZW50LmJ1dHRvbi5lbGVtZW50LmdldEF0dHJpYnV0ZSgndXJsJyksCisg ICAgICAgIG5vZGUsCisgICAgICAgIHNlbGVjdGVkVHJlZU5vZGUsCisgICAgICAgIGV2ZW50LmJ1 dHRvbi5lbGVtZW50LmdldEF0dHJpYnV0ZSgnbGFiZWwnKQorICAgICAgKTsKKyAgICAgIHJldHVy bjsKKyAgICB9CisKKyAgICBpZiAodGhpcy53YXNCYWNrdXBCdXR0b25QcmVzc2VkKGV2ZW50KSkg eworCisgICAgICBpZiAoIXNlbGVjdGVkVHJlZU5vZGVEYXRhKQorICAgICAgICByZXR1cm47CisK KyAgICAgIGNvbnN0IHNlcnZlcklkZW50aWZpZXIgPSB0aGlzLnJldHJpZXZlU2VydmVySWRlbnRp Zmllcihub2RlLCBzZWxlY3RlZFRyZWVOb2RlKTsKKworICAgICAgY29uc3QgZGlhbG9nID0gdGhp czsKKyAgICAgIGxldCB1cmxTaG9ydGN1dCA9ICdiYWNrdXAuY3JlYXRlX3NlcnZlcl9qb2InOwor ICAgICAgaWYgKHRoaXMudHlwZU9mRGlhbG9nID09PSAnYmFja3VwX29iamVjdHMnKSB7CisgICAg ICAgIHVybFNob3J0Y3V0ID0gJ2JhY2t1cC5jcmVhdGVfb2JqZWN0X2pvYic7CisgICAgICB9Cisg ICAgICBjb25zdCBiYXNlVXJsID0gdXJsX2Zvcih1cmxTaG9ydGN1dCwgeworICAgICAgICAnc2lk Jzogc2VydmVySWRlbnRpZmllciwKKyAgICAgIH0pOworCisgICAgICBjb25zdCB0cmVlSW5mbyA9 IGdldFRyZWVOb2RlSGllcmFyY2h5RnJvbUVsZW1lbnQoCisgICAgICAgIHRoaXMucGdCcm93c2Vy LAorICAgICAgICBzZWxlY3RlZFRyZWVOb2RlCisgICAgICApOworCisgICAgICB0aGlzLnNldEV4 dHJhUGFyYW1ldGVycyhzZWxlY3RlZFRyZWVOb2RlLCB0cmVlSW5mbyk7CisKKyAgICAgIGxldCBz ZXJ2aWNlID0gYXhpb3MuY3JlYXRlKHt9KTsKKyAgICAgIHNlcnZpY2UucG9zdCgKKyAgICAgICAg YmFzZVVybCwKKyAgICAgICAgdGhpcy52aWV3Lm1vZGVsLnRvSlNPTigpCisgICAgICApLnRoZW4o ZnVuY3Rpb24gKCkgeworICAgICAgICBkaWFsb2cuYWxlcnRpZnkuc3VjY2VzcyhnZXR0ZXh0KCdC YWNrdXAgam9iIGNyZWF0ZWQuJyksIDUpOworICAgICAgICBkaWFsb2cucGdCcm93c2VyLkV2ZW50 cy50cmlnZ2VyKCdwZ2FkbWluLWJncHJvY2VzczpjcmVhdGVkJywgZGlhbG9nKTsKKyAgICAgIH0p LmNhdGNoKGZ1bmN0aW9uIChlcnJvcikgeworICAgICAgICB0cnkgeworICAgICAgICAgIGNvbnN0 IGVyciA9IGVycm9yLnJlc3BvbnNlLmRhdGE7CisgICAgICAgICAgZGlhbG9nLmFsZXJ0aWZ5LmFs ZXJ0KAorICAgICAgICAgICAgZ2V0dGV4dCgnQmFja3VwIGpvYiBmYWlsZWQuJyksCisgICAgICAg ICAgICBlcnIuZXJyb3Jtc2cKKyAgICAgICAgICApOworICAgICAgICB9IGNhdGNoIChlKSB7Cisg ICAgICAgICAgY29uc29sZS53YXJuKGUuc3RhY2sgfHwgZSk7CisgICAgICAgIH0KKyAgICAgIH0p OworICAgIH0KKyAgfQorCisgIGFkZEFsZXJ0aWZ5Q2xhc3NUb0JhY2t1cE5vZGVDaGlsZE5vZGVz KCkgeworICAgIHRoaXMuanF1ZXJ5KHRoaXMuZWxlbWVudHMuYm9keS5jaGlsZE5vZGVzWzBdKS5h ZGRDbGFzcygKKyAgICAgICdhbGVydGlmeV90b29sc19kaWFsb2dfcHJvcGVydGllcyBvYmpfcHJv cGVydGllcycKKyAgICApOworICB9CisKKyAgZ2V0U2VsZWN0ZWROb2RlKCkgeworICAgIGNvbnN0 IHRyZWUgPSB0aGlzLnBnQnJvd3Nlci50cmVlTWVudTsKKyAgICBjb25zdCBzZWxlY3RlZE5vZGUg PSB0cmVlLnNlbGVjdGVkKCk7CisgICAgaWYgKHNlbGVjdGVkTm9kZSkgeworICAgICAgcmV0dXJu IHRyZWUuZmluZE5vZGVCeURvbUVsZW1lbnQoc2VsZWN0ZWROb2RlKTsKKyAgICB9IGVsc2Ugewor ICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKKyAgICB9CisgIH0KKworICBkaXNhYmxlQmFja3VwQnV0 dG9uKCkgeworICAgIHRoaXMuX19pbnRlcm5hbC5idXR0b25zWzJdLmVsZW1lbnQuZGlzYWJsZWQg PSB0cnVlOworICB9CisKKyAgZW5hYmxlQmFja3VwQnV0dG9uKCkgeworICAgIHRoaXMuX19pbnRl cm5hbC5idXR0b25zWzJdLmVsZW1lbnQuZGlzYWJsZWQgPSBmYWxzZTsKKyAgfQorCisgIGNyZWF0 ZURpYWxvZyhub2RlLCB0cmVlSW5mbywgdHlwZU9mRGlhbG9nLCAkY29udGFpbmVyKSB7CisgICAg bGV0IGF0dHJpYnV0ZXMgPSB7fTsKKyAgICBpZiAodHlwZU9mRGlhbG9nICE9PSAnYmFja3VwX29i amVjdHMnKSB7CisgICAgICBhdHRyaWJ1dGVzWyd0eXBlJ10gPSB0eXBlT2ZEaWFsb2c7CisgICAg fQorICAgIC8vIEluc3RhbmNlIG9mIGJhY2tib25lIG1vZGVsCisgICAgY29uc3QgbmV3TW9kZWwg PSBuZXcgdGhpcy5kaWFsb2dNb2RlbChhdHRyaWJ1dGVzLCB7CisgICAgICBub2RlX2luZm86IHRy ZWVJbmZvLAorICAgIH0pOworICAgIGNvbnN0IGZpZWxkcyA9IHRoaXMuYmFja2Zvcm0uZ2VuZXJh dGVWaWV3U2NoZW1hKAorICAgICAgdHJlZUluZm8sIG5ld01vZGVsLCAnY3JlYXRlJywgbm9kZSwg dHJlZUluZm8uc2VydmVyLCB0cnVlCisgICAgKTsKKworICAgIHJldHVybiB0aGlzLnZpZXcgPSBu ZXcgdGhpcy5iYWNrZm9ybS5EaWFsb2coeworICAgICAgZWw6ICRjb250YWluZXIsCisgICAgICBt b2RlbDogbmV3TW9kZWwsCisgICAgICBzY2hlbWE6IGZpZWxkcywKKyAgICB9KTsKKyAgfQorCisg IHJldHJpZXZlU2VydmVySWRlbnRpZmllcihub2RlLCBzZWxlY3RlZFRyZWVOb2RlKSB7CisgICAg Y29uc3QgdHJlZUluZm8gPSBnZXRUcmVlTm9kZUhpZXJhcmNoeUZyb21FbGVtZW50KAorICAgICAg dGhpcy5wZ0Jyb3dzZXIsCisgICAgICBzZWxlY3RlZFRyZWVOb2RlCisgICAgKTsKKyAgICByZXR1 cm4gdHJlZUluZm8uc2VydmVyLl9pZDsKKyAgfQorCisgIHNldExpc3RlbmVyc0ZvckZpbGVuYW1l Q2hhbmdlcygpIHsKKyAgICBjb25zdCBzZWxmID0gdGhpczsKKworICAgIHRoaXMudmlldy5tb2Rl bC5vbignY2hhbmdlJywgZnVuY3Rpb24gKCkgeworICAgICAgaWYgKCFfLmlzVW5kZWZpbmVkKHRo aXMuZ2V0KCdmaWxlJykpICYmIHRoaXMuZ2V0KCdmaWxlJykgIT09ICcnKSB7CisgICAgICAgIHRo aXMuZXJyb3JNb2RlbC5jbGVhcigpOworICAgICAgICBzZWxmLmVuYWJsZUJhY2t1cEJ1dHRvbigp OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgc2VsZi5kaXNhYmxlQmFja3VwQnV0dG9uKCk7Cisg ICAgICAgIHRoaXMuZXJyb3JNb2RlbC5zZXQoJ2ZpbGUnLCBnZXR0ZXh0KCdQbGVhc2UgcHJvdmlk ZSBhIGZpbGVuYW1lJykpOworICAgICAgfQorICAgIH0pOworICB9CisKKyAgc2V0RXh0cmFQYXJh bWV0ZXJzKHNlbGVjdGVkVHJlZU5vZGUsIHRyZWVJbmZvKSB7CisgICAgaWYgKHRoaXMudHlwZU9m RGlhbG9nID09PSAnYmFja3VwX29iamVjdHMnKSB7CisKKyAgICAgIHRoaXMudmlldy5tb2RlbC5z ZXQoJ2RhdGFiYXNlJywgdHJlZUluZm8uZGF0YWJhc2UuX2xhYmVsKTsKKworICAgICAgY29uc3Qg bm9kZURhdGEgPSBzZWxlY3RlZFRyZWVOb2RlLmdldERhdGEoKTsKKyAgICAgIGlmIChub2RlRGF0 YS5fdHlwZSA9PT0gJ3NjaGVtYScpIHsKKyAgICAgICAgdGhpcy52aWV3Lm1vZGVsLnNldCgnc2No ZW1hcycsIFtub2RlRGF0YS5fbGFiZWxdKTsKKyAgICAgIH0KKworICAgICAgaWYgKG5vZGVEYXRh Ll90eXBlID09PSAndGFibGUnKSB7CisgICAgICAgIHRoaXMudmlldy5tb2RlbC5zZXQoJ3RhYmxl cycsIFsKKyAgICAgICAgICBbdHJlZUluZm8uc2NoZW1hLl9sYWJlbCwgbm9kZURhdGEuX2xhYmVs XSwKKyAgICAgICAgXSk7CisgICAgICB9CisKKyAgICAgIGlmIChfLmlzRW1wdHkodGhpcy52aWV3 Lm1vZGVsLmdldCgncmF0aW8nKSkpIHsKKyAgICAgICAgdGhpcy52aWV3Lm1vZGVsLnVuc2V0KCdy YXRpbycpOworICAgICAgfQorICAgIH0KKyAgfQorCisgIHdhc0JhY2t1cEJ1dHRvblByZXNzZWQo ZXZlbnQpIHsKKyAgICByZXR1cm4gZXZlbnQuYnV0dG9uWydkYXRhLWJ0bi1uYW1lJ10gPT09ICdi YWNrdXAnOworICB9Cit9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9iYWNrdXAvc3Rh dGljL2pzL21lbnVfdXRpbHMuanMgYi93ZWIvcGdhZG1pbi90b29scy9iYWNrdXAvc3RhdGljL2pz L21lbnVfdXRpbHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLjQ3YTlm MGQzCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvYmFja3VwL3N0YXRpYy9q cy9tZW51X3V0aWxzLmpzCkBAIC0wLDAgKzEsMjMgQEAKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vCisvLyBwZ0FkbWluIDQg LSBQb3N0Z3JlU1FMIFRvb2xzCisvLworLy8gQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAxOCwgVGhl IHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorLy8gVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1 bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisvLworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKworaW1wb3J0IHtpc1ZhbGlk VHJlZU5vZGVEYXRhfSBmcm9tICcuLi8uLi8uLi8uLi9zdGF0aWMvanMvdHJlZS90cmVlJzsKKwor ZXhwb3J0IGNvbnN0IGJhY2t1cFN1cHBvcnRlZE5vZGVzID0gWworICAnZGF0YWJhc2UnLCAnc2No ZW1hJywgJ3RhYmxlJywgJ3BhcnRpdGlvbicsCitdOworCitmdW5jdGlvbiBpc05vZGVBU2VydmVy QW5kQ29ubmVjdGVkKHRyZWVOb2RlRGF0YSkgeworICByZXR1cm4gKCgnc2VydmVyJyA9PT0gdHJl ZU5vZGVEYXRhLl90eXBlKSAmJiB0cmVlTm9kZURhdGEuY29ubmVjdGVkKTsKK30KKworZXhwb3J0 IGZ1bmN0aW9uIG1lbnVFbmFibGVkU2VydmVyKHRyZWVOb2RlRGF0YSkgeworICByZXR1cm4gaXNW YWxpZFRyZWVOb2RlRGF0YSh0cmVlTm9kZURhdGEpCisgICAgJiYgaXNOb2RlQVNlcnZlckFuZENv bm5lY3RlZCh0cmVlTm9kZURhdGEpOworfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMv ZGF0YWdyaWQvc3RhdGljL2pzL2RhdGFncmlkLmpzIGIvd2ViL3BnYWRtaW4vdG9vbHMvZGF0YWdy aWQvc3RhdGljL2pzL2RhdGFncmlkLmpzCmluZGV4IDQyMTIyZWQ4Li5jNzMwYjE4MCAxMDA2NDQK LS0tIGEvd2ViL3BnYWRtaW4vdG9vbHMvZGF0YWdyaWQvc3RhdGljL2pzL2RhdGFncmlkLmpzCisr KyBiL3dlYi9wZ2FkbWluL3Rvb2xzL2RhdGFncmlkL3N0YXRpYy9qcy9kYXRhZ3JpZC5qcwpAQCAt MSwxMCArMSwxNCBAQAogZGVmaW5lKCdwZ2FkbWluLmRhdGFncmlkJywgWwogICAnc291cmNlcy9n ZXR0ZXh0JywgJ3NvdXJjZXMvdXJsX2ZvcicsICdqcXVlcnknLCAndW5kZXJzY29yZScsCiAgICdw Z2FkbWluLmFsZXJ0aWZ5anMnLCAnc291cmNlcy9wZ2FkbWluJywgJ2J1bmRsZWRfY29kZW1pcnJv cicsCi0gICdzb3VyY2VzL3NxbGVkaXRvcl91dGlscycsICdiYWNrYm9uZScsICd3Y2RvY2tlcics CisgICdzb3VyY2VzL3NxbGVkaXRvcl91dGlscycsICdiYWNrYm9uZScsCisgICd0b29scy9kYXRh Z3JpZC9zdGF0aWMvanMvc2hvd19kYXRhJywKKyAgJ3Rvb2xzL2RhdGFncmlkL3N0YXRpYy9qcy9n ZXRfcGFuZWxfdGl0bGUnLAorICAndG9vbHMvZGF0YWdyaWQvc3RhdGljL2pzL3Nob3dfcXVlcnlf dG9vbCcsCisgICd3Y2RvY2tlcicsCiBdLCBmdW5jdGlvbigKICAgZ2V0dGV4dCwgdXJsX2Zvciwg JCwgXywgYWxlcnRpZnksIHBnQWRtaW4sIGNvZGVtaXJyb3IsIHNxbEVkaXRvclV0aWxzLAotICBC YWNrYm9uZQorICBCYWNrYm9uZSwgc2hvd0RhdGEsIHBhbmVsVGl0bGUsIHNob3dRdWVyeVRvb2wK ICkgewogICAvLyBTb21lIHNjcmlwdHMgZG8gZXhwb3J0IHRoZWlyIG9iamVjdCBpbiB0aGUgd2lu ZG93IG9ubHkuCiAgIC8vIEdlbmVyYWxseSB0aGUgb25lLCB3aGljaCBkbyBubyBoYXZlIEFNRCBz dXBwb3J0LgpAQCAtMTYxLDU1ICsxNjUsNyBAQCBkZWZpbmUoJ3BnYWRtaW4uZGF0YWdyaWQnLCBb CiAKICAgICAgIC8vIFRoaXMgaXMgYSBjYWxsYmFjayBmdW5jdGlvbiB0byBzaG93IGRhdGEgd2hl biB1c2VyIGNsaWNrIG9uIG1lbnUgaXRlbS4KICAgICAgIHNob3dfZGF0YV9ncmlkOiBmdW5jdGlv bihkYXRhLCBpKSB7Ci0gICAgICAgIHZhciBzZWxmID0gdGhpcywKLSAgICAgICAgICBkID0gcGdB ZG1pbi5Ccm93c2VyLnRyZWUuaXRlbURhdGEoaSk7Ci0gICAgICAgIGlmIChkID09PSB1bmRlZmlu ZWQpIHsKLSAgICAgICAgICBhbGVydGlmeS5hbGVydCgKLSAgICAgICAgICAgIGdldHRleHQoJ0Rh dGEgR3JpZCBFcnJvcicpLAotICAgICAgICAgICAgZ2V0dGV4dCgnTm8gb2JqZWN0IHNlbGVjdGVk LicpCi0gICAgICAgICAgKTsKLSAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAg ICAvLyBHZXQgdGhlIHBhcmVudCBkYXRhIGZyb20gdGhlIHRyZWUgbm9kZSBoaWVyYXJjaHkuCi0g ICAgICAgIHZhciBub2RlID0gcGdCcm93c2VyLk5vZGVzW2QuX3R5cGVdLAotICAgICAgICAgIHBh cmVudERhdGEgPSBub2RlLmdldFRyZWVOb2RlSGllcmFyY2h5KGkpOwotCi0gICAgICAgIC8vIElm IHNlcnZlciwgZGF0YWJhc2Ugb3Igc2NoZW1hIGlzIHVuZGVmaW5lZCB0aGVuIHJldHVybiBmcm9t IHRoZSBmdW5jdGlvbi4KLSAgICAgICAgaWYgKHBhcmVudERhdGEuc2VydmVyID09PSB1bmRlZmlu ZWQgfHwgcGFyZW50RGF0YS5kYXRhYmFzZSA9PT0gdW5kZWZpbmVkKSB7Ci0gICAgICAgICAgcmV0 dXJuOwotICAgICAgICB9Ci0gICAgICAgIC8vIElmIHNjaGVtYSwgdmlldywgY2F0YWxvZyBvYmpl Y3QgYWxsIGFyZSB1bmRlZmluZWQgdGhlbiByZXR1cm4gZnJvbSB0aGUgZnVuY3Rpb24uCi0gICAg ICAgIGlmIChwYXJlbnREYXRhLnNjaGVtYSA9PT0gdW5kZWZpbmVkICYmIHBhcmVudERhdGEudmll dyA9PT0gdW5kZWZpbmVkICYmCi0gICAgICAgICAgICAgcGFyZW50RGF0YS5jYXRhbG9nID09PSB1 bmRlZmluZWQpIHsKLSAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICB2YXIg bnNwX25hbWUgPSAnJzsKLQotICAgICAgICBpZiAocGFyZW50RGF0YS5zY2hlbWEgIT0gdW5kZWZp bmVkKSB7Ci0gICAgICAgICAgbnNwX25hbWUgPSBwYXJlbnREYXRhLnNjaGVtYS5sYWJlbDsKLSAg ICAgICAgfQotICAgICAgICBlbHNlIGlmIChwYXJlbnREYXRhLnZpZXcgIT0gdW5kZWZpbmVkKSB7 Ci0gICAgICAgICAgbnNwX25hbWUgPSBwYXJlbnREYXRhLnZpZXcubGFiZWw7Ci0gICAgICAgIH0K LSAgICAgICAgZWxzZSBpZiAocGFyZW50RGF0YS5jYXRhbG9nICE9IHVuZGVmaW5lZCkgewotICAg ICAgICAgIG5zcF9uYW1lID0gcGFyZW50RGF0YS5jYXRhbG9nLmxhYmVsOwotICAgICAgICB9Ci0g ICAgICAgIHZhciB1cmxfcGFyYW1zID0gewotICAgICAgICAgICdjbWRfdHlwZSc6IGRhdGEubW51 aWQsCi0gICAgICAgICAgJ29ial90eXBlJzogZC5fdHlwZSwKLSAgICAgICAgICAnc2dpZCc6IHBh cmVudERhdGEuc2VydmVyX2dyb3VwLl9pZCwKLSAgICAgICAgICAnc2lkJzogcGFyZW50RGF0YS5z ZXJ2ZXIuX2lkLAotICAgICAgICAgICdkaWQnOiBwYXJlbnREYXRhLmRhdGFiYXNlLl9pZCwKLSAg ICAgICAgICAnb2JqX2lkJzogZC5faWQsCi0gICAgICAgIH07Ci0KLSAgICAgICAgdmFyIGJhc2VV cmwgPSB1cmxfZm9yKCdkYXRhZ3JpZC5pbml0aWFsaXplX2RhdGFncmlkJywgdXJsX3BhcmFtcyk7 Ci0gICAgICAgIHZhciBncmlkX3RpdGxlID0gcGFyZW50RGF0YS5zZXJ2ZXIubGFiZWwgKyAnIC0g JyArIHBhcmVudERhdGEuZGF0YWJhc2UubGFiZWwgKyAnIC0gJwotICAgICAgICAgICAgICAgICAg ICAgICAgKyBuc3BfbmFtZSArICcuJyArIGQubGFiZWw7Ci0KLSAgICAgICAgc2VsZi5jcmVhdGVf dHJhbnNhY3Rpb24oYmFzZVVybCwgbnVsbCwgJ2ZhbHNlJywgcGFyZW50RGF0YS5zZXJ2ZXIuc2Vy dmVyX3R5cGUsICcnLCBncmlkX3RpdGxlLCAnJyk7CisgICAgICAgIHNob3dEYXRhLnNob3dEYXRh R3JpZCh0aGlzLCBwZ0Jyb3dzZXIsIGFsZXJ0aWZ5LCBkYXRhLCBpKTsKICAgICAgIH0sCiAKICAg ICAgIC8vIFRoaXMgaXMgYSBjYWxsYmFjayBmdW5jdGlvbiB0byBzaG93IGZpbHRlcmVkIGRhdGEg d2hlbiB1c2VyIGNsaWNrIG9uIG1lbnUgaXRlbS4KQEAgLTM4NCw2MyArMzQwLDEyIEBAIGRlZmlu ZSgncGdhZG1pbi5kYXRhZ3JpZCcsIFsKICAgICAgIH0sCiAKICAgICAgIGdldF9wYW5lbF90aXRs ZTogZnVuY3Rpb24oKSB7Ci0gICAgICAgIC8vIEdldCB0aGUgcGFyZW50IGRhdGEgZnJvbSB0aGUg dHJlZSBub2RlIGhpZXJhcmNoeS4KLSAgICAgICAgdmFyIHRyZWUgPSBwZ0FkbWluLkJyb3dzZXIu dHJlZSwKLSAgICAgICAgICBzZWxlY3RlZF9pdGVtID0gdHJlZS5zZWxlY3RlZCgpLAotICAgICAg ICAgIGl0ZW1fZGF0YSA9IHRyZWUuaXRlbURhdGEoc2VsZWN0ZWRfaXRlbSk7Ci0KLSAgICAgICAg dmFyIG5vZGUgPSBwZ0Jyb3dzZXIuTm9kZXNbaXRlbV9kYXRhLl90eXBlXSwKLSAgICAgICAgICBw YXJlbnREYXRhID0gbm9kZS5nZXRUcmVlTm9kZUhpZXJhcmNoeShzZWxlY3RlZF9pdGVtKTsKLQot ICAgICAgICAvLyBJZiBzZXJ2ZXIsIGRhdGFiYXNlIGlzIHVuZGVmaW5lZCB0aGVuIHJldHVybiBm cm9tIHRoZSBmdW5jdGlvbi4KLSAgICAgICAgaWYgKHBhcmVudERhdGEuc2VydmVyID09PSB1bmRl ZmluZWQpIHsKLSAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgLy8gSWYgRGF0 YWJhc2UgaXMgbm90IGF2YWlsYWJsZSB0aGVuIHVzZSBkZWZhdWx0IGRiCi0gICAgICAgIHZhciBk Yl9sYWJlbCA9IHBhcmVudERhdGEuZGF0YWJhc2UgPyBwYXJlbnREYXRhLmRhdGFiYXNlLmxhYmVs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBwYXJlbnREYXRh LnNlcnZlci5kYjsKLQotICAgICAgICB2YXIgZ3JpZF90aXRsZSA9IGRiX2xhYmVsICsgJyBvbiAn ICsgcGFyZW50RGF0YS5zZXJ2ZXIudXNlci5uYW1lICsgJ0AnICsKLSAgICAgICAgICAgICAgICBw YXJlbnREYXRhLnNlcnZlci5sYWJlbDsKLSAgICAgICAgcmV0dXJuIGdyaWRfdGl0bGU7CisgICAg ICAgIHJldHVybiBwYW5lbFRpdGxlLmdldFBhbmVsVGl0bGUocGdCcm93c2VyKTsKICAgICAgIH0s CiAgICAgICAvLyBUaGlzIGlzIGEgY2FsbGJhY2sgZnVuY3Rpb24gdG8gc2hvdyBxdWVyeSB0b29s IHdoZW4gdXNlciBjbGljayBvbiBtZW51IGl0ZW0uCi0gICAgICBzaG93X3F1ZXJ5X3Rvb2w6IGZ1 bmN0aW9uKHVybCwgaSwgcGFuZWxfdGl0bGUpIHsKLSAgICAgICAgdmFyIHNVUkwgPSB1cmwgfHwg JycsCi0gICAgICAgICAgZCA9IHBnQWRtaW4uQnJvd3Nlci50cmVlLml0ZW1EYXRhKGkpOwotCi0g ICAgICAgIHBhbmVsX3RpdGxlID0gcGFuZWxfdGl0bGUgfHwgJyc7Ci0gICAgICAgIGlmIChkID09 PSB1bmRlZmluZWQpIHsKLSAgICAgICAgICBhbGVydGlmeS5hbGVydCgKLSAgICAgICAgICAgIGdl dHRleHQoJ1F1ZXJ5IFRvb2wgRXJyb3InKSwKLSAgICAgICAgICAgIGdldHRleHQoJ05vIG9iamVj dCBzZWxlY3RlZC4nKQotICAgICAgICAgICk7Ci0gICAgICAgICAgcmV0dXJuOwotICAgICAgICB9 Ci0KLSAgICAgICAgLy8gR2V0IHRoZSBwYXJlbnQgZGF0YSBmcm9tIHRoZSB0cmVlIG5vZGUgaGll cmFyY2h5LgotICAgICAgICB2YXIgbm9kZSA9IHBnQnJvd3Nlci5Ob2Rlc1tkLl90eXBlXSwKLSAg ICAgICAgICBwYXJlbnREYXRhID0gbm9kZS5nZXRUcmVlTm9kZUhpZXJhcmNoeShpKTsKLQotICAg ICAgICAvLyBJZiBzZXJ2ZXIsIGRhdGFiYXNlIGlzIHVuZGVmaW5lZCB0aGVuIHJldHVybiBmcm9t IHRoZSBmdW5jdGlvbi4KLSAgICAgICAgaWYgKHBhcmVudERhdGEuc2VydmVyID09PSB1bmRlZmlu ZWQpIHsKLSAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICB2YXIgdXJsX3Bh cmFtcyA9IHsKLSAgICAgICAgICAgICdzZ2lkJzogcGFyZW50RGF0YS5zZXJ2ZXJfZ3JvdXAuX2lk LAotICAgICAgICAgICAgJ3NpZCc6IHBhcmVudERhdGEuc2VydmVyLl9pZCwKLSAgICAgICAgICB9 LAotICAgICAgICAgIHVybF9lbmRwb2ludCA9ICdkYXRhZ3JpZC5pbml0aWFsaXplX3F1ZXJ5X3Rv b2wnOwotICAgICAgICAvLyBJZiBkYXRhYmFzZSBub3QgcHJlc2VudCB0aGVuIHVzZSBNYWludGVu YW5jZSBkYXRhYmFzZQotICAgICAgICAvLyBXZSB3aWxsIGhhbmRsZSB0aGlzIGF0IHNlcnZlciBz aWRlCi0gICAgICAgIGlmIChwYXJlbnREYXRhLmRhdGFiYXNlKSB7Ci0gICAgICAgICAgdXJsX3Bh cmFtc1snZGlkJ10gPSBwYXJlbnREYXRhLmRhdGFiYXNlLl9pZDsKLSAgICAgICAgICB1cmxfZW5k cG9pbnQgPSAnZGF0YWdyaWQuaW5pdGlhbGl6ZV9xdWVyeV90b29sX3dpdGhfZGlkJzsKLSAgICAg ICAgfQotICAgICAgICB2YXIgYmFzZVVybCA9IHVybF9mb3IodXJsX2VuZHBvaW50LCB1cmxfcGFy YW1zKTsKLQotICAgICAgICB0aGlzLmNyZWF0ZV90cmFuc2FjdGlvbihiYXNlVXJsLCBudWxsLCAn dHJ1ZScsIHBhcmVudERhdGEuc2VydmVyLnNlcnZlcl90eXBlLCBzVVJMLCBwYW5lbF90aXRsZSwg JycsIGZhbHNlKTsKKyAgICAgIHNob3dfcXVlcnlfdG9vbDogZnVuY3Rpb24odXJsLCBhY2lUcmVl SWRlbnRpZmllciwgcGFuZWxUaXRsZSkgeworICAgICAgICBzaG93UXVlcnlUb29sLnNob3dRdWVy eVRvb2wodGhpcywgcGdCcm93c2VyLCBhbGVydGlmeSwgdXJsLAorICAgICAgICAgIGFjaVRyZWVJ ZGVudGlmaWVyLCBwYW5lbFRpdGxlKTsKICAgICAgIH0sCiAgICAgICBjcmVhdGVfdHJhbnNhY3Rp b246IGZ1bmN0aW9uKGJhc2VVcmwsIHRhcmdldCwgaXNfcXVlcnlfdG9vbCwgc2VydmVyX3R5cGUs IHNVUkwsIHBhbmVsX3RpdGxlLCBzcWxfZmlsdGVyLCByZWNyZWF0ZSkgewogICAgICAgICB2YXIg c2VsZiA9IHRoaXM7CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9kYXRhZ3JpZC9zdGF0 aWMvanMvZ2V0X3BhbmVsX3RpdGxlLmpzIGIvd2ViL3BnYWRtaW4vdG9vbHMvZGF0YWdyaWQvc3Rh dGljL2pzL2dldF9wYW5lbF90aXRsZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMC4uNjRiM2EzZDIKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi90b29scy9kYXRh Z3JpZC9zdGF0aWMvanMvZ2V0X3BhbmVsX3RpdGxlLmpzCkBAIC0wLDAgKzEsMzMgQEAKKy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8K Ky8vCisvLyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisvLworLy8gQ29weXJpZ2h0IChD KSAyMDEzIC0gMjAxOCwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorLy8gVGhpcyBzb2Z0 d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisvLworLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8K KworaW1wb3J0IHtnZXRUcmVlTm9kZUhpZXJhcmNoeUZyb21JZGVudGlmaWVyfSBmcm9tICcuLi8u Li8uLi8uLi9zdGF0aWMvanMvdHJlZS9wZ2FkbWluX3RyZWVfbm9kZSc7CisKK2Z1bmN0aW9uIGdl dERhdGFiYXNlTGFiZWwocGFyZW50RGF0YSkgeworICByZXR1cm4gcGFyZW50RGF0YS5kYXRhYmFz ZSA/IHBhcmVudERhdGEuZGF0YWJhc2UubGFiZWwKKyAgICA6IHBhcmVudERhdGEuc2VydmVyLmRi OworfQorCitmdW5jdGlvbiBpc1NlcnZlckluZm9ybWF0aW9uQXZhaWxhYmxlKHBhcmVudERhdGEp IHsKKyAgcmV0dXJuIHBhcmVudERhdGEuc2VydmVyID09PSB1bmRlZmluZWQ7Cit9CisKK2V4cG9y dCBmdW5jdGlvbiBnZXRQYW5lbFRpdGxlKHBnQnJvd3NlcikgeworICBjb25zdCBzZWxlY3RlZF9p dGVtID0gcGdCcm93c2VyLnRyZWVNZW51LnNlbGVjdGVkKCk7CisKKyAgY29uc3QgcGFyZW50RGF0 YSA9IGdldFRyZWVOb2RlSGllcmFyY2h5RnJvbUlkZW50aWZpZXIKKyAgICAuY2FsbChwZ0Jyb3dz ZXIsIHNlbGVjdGVkX2l0ZW0pOworICBpZiAoaXNTZXJ2ZXJJbmZvcm1hdGlvbkF2YWlsYWJsZShw YXJlbnREYXRhKSkgeworICAgIHJldHVybjsKKyAgfQorCisgIGNvbnN0IGRiX2xhYmVsID0gZ2V0 RGF0YWJhc2VMYWJlbChwYXJlbnREYXRhKTsKKworICByZXR1cm4gYCR7ZGJfbGFiZWx9IG9uICR7 cGFyZW50RGF0YS5zZXJ2ZXIudXNlci5uYW1lfUAke3BhcmVudERhdGEuc2VydmVyLmxhYmVsfWA7 Cit9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9kYXRhZ3JpZC9zdGF0aWMvanMvc2hv d19kYXRhLmpzIGIvd2ViL3BnYWRtaW4vdG9vbHMvZGF0YWdyaWQvc3RhdGljL2pzL3Nob3dfZGF0 YS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMC4uMzczYzk3Y2QKLS0tIC9k ZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi90b29scy9kYXRhZ3JpZC9zdGF0aWMvanMvc2hvd19k YXRhLmpzCkBAIC0wLDAgKzEsOTIgQEAKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vCisvLyBwZ0FkbWluIDQgLSBQb3N0Z3Jl U1FMIFRvb2xzCisvLworLy8gQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAxOCwgVGhlIHBnQWRtaW4g RGV2ZWxvcG1lbnQgVGVhbQorLy8gVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUg UG9zdGdyZVNRTCBMaWNlbmNlCisvLworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KK2ltcG9ydCBnZXR0ZXh0IGZyb20gJy4uLy4u Ly4uLy4uL3N0YXRpYy9qcy9nZXR0ZXh0JzsKK2ltcG9ydCB1cmxfZm9yIGZyb20gJy4uLy4uLy4u Ly4uL3N0YXRpYy9qcy91cmxfZm9yJzsKK2ltcG9ydCB7Z2V0VHJlZU5vZGVIaWVyYXJjaHlGcm9t SWRlbnRpZmllcn0gZnJvbSAnLi4vLi4vLi4vLi4vc3RhdGljL2pzL3RyZWUvcGdhZG1pbl90cmVl X25vZGUnOworCitleHBvcnQgZnVuY3Rpb24gc2hvd0RhdGFHcmlkKAorICBkYXRhZ3JpZCwKKyAg cGdCcm93c2VyLAorICBhbGVydGlmeSwKKyAgY29ubmVjdGlvbkRhdGEsCisgIGFjaVRyZWVJZGVu dGlmaWVyCispIHsKKyAgY29uc3Qgbm9kZSA9IHBnQnJvd3Nlci50cmVlTWVudS5maW5kTm9kZUJ5 RG9tRWxlbWVudChhY2lUcmVlSWRlbnRpZmllcik7CisgIGlmIChub2RlID09PSB1bmRlZmluZWQg fHwgIW5vZGUuZ2V0RGF0YSgpKSB7CisgICAgYWxlcnRpZnkuYWxlcnQoCisgICAgICBnZXR0ZXh0 KCdEYXRhIEdyaWQgRXJyb3InKSwKKyAgICAgIGdldHRleHQoJ05vIG9iamVjdCBzZWxlY3RlZC4n KQorICAgICk7CisgICAgcmV0dXJuOworICB9CisKKyAgY29uc3QgcGFyZW50RGF0YSA9IGdldFRy ZWVOb2RlSGllcmFyY2h5RnJvbUlkZW50aWZpZXIuY2FsbCgKKyAgICBwZ0Jyb3dzZXIsCisgICAg YWNpVHJlZUlkZW50aWZpZXIKKyAgKTsKKworICBpZiAoaGFzU2VydmVyT3JEYXRhYmFzZUNvbmZp Z3VyYXRpb24ocGFyZW50RGF0YSkKKyAgICB8fCAhaGFzU2NoZW1hT3JDYXRhbG9nT3JWaWV3SW5m b3JtYXRpb24ocGFyZW50RGF0YSkpIHsKKyAgICByZXR1cm47CisgIH0KKworICBsZXQgbmFtZXNw YWNlTmFtZSA9IHJldHJpZXZlTmFtZVNwYWNlTmFtZShwYXJlbnREYXRhKTsKKyAgY29uc3QgYmFz ZVVybCA9IGdlbmVyYXRlVXJsKGNvbm5lY3Rpb25EYXRhLCBub2RlLmdldERhdGEoKSwgcGFyZW50 RGF0YSk7CisgIGNvbnN0IGdyaWRfdGl0bGUgPSBnZW5lcmF0ZURhdGFncmlkVGl0bGUocGFyZW50 RGF0YSwgbmFtZXNwYWNlTmFtZSwgbm9kZS5nZXREYXRhKCkpOworCisgIGRhdGFncmlkLmNyZWF0 ZV90cmFuc2FjdGlvbigKKyAgICBiYXNlVXJsLAorICAgIG51bGwsCisgICAgJ2ZhbHNlJywKKyAg ICBwYXJlbnREYXRhLnNlcnZlci5zZXJ2ZXJfdHlwZSwKKyAgICAnJywKKyAgICBncmlkX3RpdGxl LAorICAgICcnCisgICk7Cit9CisKKworZnVuY3Rpb24gcmV0cmlldmVOYW1lU3BhY2VOYW1lKHBh cmVudERhdGEpIHsKKyAgaWYgKHBhcmVudERhdGEuc2NoZW1hICE9PSB1bmRlZmluZWQpIHsKKyAg ICByZXR1cm4gcGFyZW50RGF0YS5zY2hlbWEubGFiZWw7CisgIH0KKyAgZWxzZSBpZiAocGFyZW50 RGF0YS52aWV3ICE9PSB1bmRlZmluZWQpIHsKKyAgICByZXR1cm4gcGFyZW50RGF0YS52aWV3Lmxh YmVsOworICB9CisgIGVsc2UgaWYgKHBhcmVudERhdGEuY2F0YWxvZyAhPT0gdW5kZWZpbmVkKSB7 CisgICAgcmV0dXJuIHBhcmVudERhdGEuY2F0YWxvZy5sYWJlbDsKKyAgfQorICByZXR1cm4gJyc7 Cit9CisKK2Z1bmN0aW9uIGdlbmVyYXRlVXJsKGNvbm5lY3Rpb25EYXRhLCBub2RlRGF0YSwgcGFy ZW50RGF0YSkgeworICBjb25zdCB1cmxfcGFyYW1zID0geworICAgICdjbWRfdHlwZSc6IGNvbm5l Y3Rpb25EYXRhLm1udWlkLAorICAgICdvYmpfdHlwZSc6IG5vZGVEYXRhLl90eXBlLAorICAgICdz Z2lkJzogcGFyZW50RGF0YS5zZXJ2ZXJfZ3JvdXAuX2lkLAorICAgICdzaWQnOiBwYXJlbnREYXRh LnNlcnZlci5faWQsCisgICAgJ2RpZCc6IHBhcmVudERhdGEuZGF0YWJhc2UuX2lkLAorICAgICdv YmpfaWQnOiBub2RlRGF0YS5faWQsCisgIH07CisKKyAgcmV0dXJuIHVybF9mb3IoJ2RhdGFncmlk LmluaXRpYWxpemVfZGF0YWdyaWQnLCB1cmxfcGFyYW1zKTsKK30KKworZnVuY3Rpb24gaGFzU2Vy dmVyT3JEYXRhYmFzZUNvbmZpZ3VyYXRpb24ocGFyZW50RGF0YSkgeworICByZXR1cm4gcGFyZW50 RGF0YS5zZXJ2ZXIgPT09IHVuZGVmaW5lZCB8fCBwYXJlbnREYXRhLmRhdGFiYXNlID09PSB1bmRl ZmluZWQ7Cit9CisKK2Z1bmN0aW9uIGhhc1NjaGVtYU9yQ2F0YWxvZ09yVmlld0luZm9ybWF0aW9u KHBhcmVudERhdGEpIHsKKyAgcmV0dXJuIHBhcmVudERhdGEuc2NoZW1hICE9PSB1bmRlZmluZWQg fHwgcGFyZW50RGF0YS52aWV3ICE9PSB1bmRlZmluZWQgfHwKKyAgICBwYXJlbnREYXRhLmNhdGFs b2cgIT09IHVuZGVmaW5lZDsKK30KKworZnVuY3Rpb24gZ2VuZXJhdGVEYXRhZ3JpZFRpdGxlKHBh cmVudERhdGEsIG5hbWVzcGFjZU5hbWUsIG5vZGVEYXRhKSB7CisgIHJldHVybiBgJHtwYXJlbnRE YXRhLnNlcnZlci5sYWJlbH0gLSAke3BhcmVudERhdGEuZGF0YWJhc2UubGFiZWx9IC0gJHtuYW1l c3BhY2VOYW1lfS4ke25vZGVEYXRhLmxhYmVsfWA7Cit9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1p bi90b29scy9kYXRhZ3JpZC9zdGF0aWMvanMvc2hvd19xdWVyeV90b29sLmpzIGIvd2ViL3BnYWRt aW4vdG9vbHMvZGF0YWdyaWQvc3RhdGljL2pzL3Nob3dfcXVlcnlfdG9vbC5qcwpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMC4uMGViMTJiOGIKLS0tIC9kZXYvbnVsbAorKysgYi93 ZWIvcGdhZG1pbi90b29scy9kYXRhZ3JpZC9zdGF0aWMvanMvc2hvd19xdWVyeV90b29sLmpzCkBA IC0wLDAgKzEsNjMgQEAKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vCisvLyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xz CisvLworLy8gQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAxOCwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1l bnQgVGVhbQorLy8gVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNR TCBMaWNlbmNlCisvLworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8KKworaW1wb3J0IGdldHRleHQgZnJvbSAnLi4vLi4vLi4vLi4v c3RhdGljL2pzL2dldHRleHQnOworaW1wb3J0IHVybF9mb3IgZnJvbSAnLi4vLi4vLi4vLi4vc3Rh dGljL2pzL3VybF9mb3InOworaW1wb3J0IHtnZXRUcmVlTm9kZUhpZXJhcmNoeUZyb21JZGVudGlm aWVyfSBmcm9tICcuLi8uLi8uLi8uLi9zdGF0aWMvanMvdHJlZS9wZ2FkbWluX3RyZWVfbm9kZSc7 CisKK2Z1bmN0aW9uIGhhc0RhdGFiYXNlSW5mb3JtYXRpb24ocGFyZW50RGF0YSkgeworICByZXR1 cm4gcGFyZW50RGF0YS5kYXRhYmFzZTsKK30KKworZnVuY3Rpb24gZ2VuZXJhdGVVcmwocGFyZW50 RGF0YSkgeworICBsZXQgdXJsX2VuZHBvaW50ID0gJ2RhdGFncmlkLmluaXRpYWxpemVfcXVlcnlf dG9vbCc7CisgIGxldCB1cmxfcGFyYW1zID0geworICAgICdzZ2lkJzogcGFyZW50RGF0YS5zZXJ2 ZXJfZ3JvdXAuX2lkLAorICAgICdzaWQnOiBwYXJlbnREYXRhLnNlcnZlci5faWQsCisgIH07CisK KyAgaWYgKGhhc0RhdGFiYXNlSW5mb3JtYXRpb24ocGFyZW50RGF0YSkpIHsKKyAgICB1cmxfcGFy YW1zWydkaWQnXSA9IHBhcmVudERhdGEuZGF0YWJhc2UuX2lkOworICAgIHVybF9lbmRwb2ludCA9 ICdkYXRhZ3JpZC5pbml0aWFsaXplX3F1ZXJ5X3Rvb2xfd2l0aF9kaWQnOworICB9CisKKyAgcmV0 dXJuIHVybF9mb3IodXJsX2VuZHBvaW50LCB1cmxfcGFyYW1zKTsKK30KKworZnVuY3Rpb24gaGFz U2VydmVySW5mb3JtYXRpb25zKHBhcmVudERhdGEpIHsKKyAgcmV0dXJuIHBhcmVudERhdGEuc2Vy dmVyID09PSB1bmRlZmluZWQ7Cit9CisKK2V4cG9ydCBmdW5jdGlvbiBzaG93UXVlcnlUb29sKGRh dGFncmlkLCBwZ0Jyb3dzZXIsIGFsZXJ0aWZ5LCB1cmwsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBhY2lUcmVlSWRlbnRpZmllciwgcGFuZWxUaXRsZSkgeworICBjb25zdCBzVVJMID0g dXJsIHx8ICcnOworICBjb25zdCBxdWVyeVRvb2xUaXRsZSA9IHBhbmVsVGl0bGUgfHwgJyc7CisK KyAgY29uc3QgY3VycmVudE5vZGUgPSBwZ0Jyb3dzZXIudHJlZU1lbnUuZmluZE5vZGVCeURvbUVs ZW1lbnQoYWNpVHJlZUlkZW50aWZpZXIpOworICBpZiAoY3VycmVudE5vZGUgPT09IHVuZGVmaW5l ZCkgeworICAgIGFsZXJ0aWZ5LmFsZXJ0KAorICAgICAgZ2V0dGV4dCgnUXVlcnkgVG9vbCBFcnJv cicpLAorICAgICAgZ2V0dGV4dCgnTm8gb2JqZWN0IHNlbGVjdGVkLicpCisgICAgKTsKKyAgICBy ZXR1cm47CisgIH0KKworICBjb25zdCBwYXJlbnREYXRhID0gZ2V0VHJlZU5vZGVIaWVyYXJjaHlG cm9tSWRlbnRpZmllci5jYWxsKAorICAgIHBnQnJvd3NlciwgYWNpVHJlZUlkZW50aWZpZXIpOwor CisgIGlmIChoYXNTZXJ2ZXJJbmZvcm1hdGlvbnMocGFyZW50RGF0YSkpIHsKKyAgICByZXR1cm47 CisgIH0KKworICBjb25zdCBiYXNlVXJsID0gZ2VuZXJhdGVVcmwocGFyZW50RGF0YSk7CisKKyAg ZGF0YWdyaWQuY3JlYXRlX3RyYW5zYWN0aW9uKAorICAgIGJhc2VVcmwsIG51bGwsICd0cnVlJywK KyAgICBwYXJlbnREYXRhLnNlcnZlci5zZXJ2ZXJfdHlwZSwgc1VSTCwgcXVlcnlUb29sVGl0bGUs ICcnLCBmYWxzZSk7Cit9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9ncmFudF93aXph cmQvc3RhdGljL2pzL2dyYW50X3dpemFyZC5qcyBiL3dlYi9wZ2FkbWluL3Rvb2xzL2dyYW50X3dp emFyZC9zdGF0aWMvanMvZ3JhbnRfd2l6YXJkLmpzCmluZGV4IDVjZTBlMmZiLi4yYWNlMDdlNSAx MDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vdG9vbHMvZ3JhbnRfd2l6YXJkL3N0YXRpYy9qcy9ncmFu dF93aXphcmQuanMKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvZ3JhbnRfd2l6YXJkL3N0YXRpYy9q cy9ncmFudF93aXphcmQuanMKQEAgLTIsMTIgKzIsMTUgQEAKIGRlZmluZShbCiAgICdzb3VyY2Vz L2dldHRleHQnLCAnc291cmNlcy91cmxfZm9yJywgJ2pxdWVyeScsICd1bmRlcnNjb3JlJywgJ2Jh Y2tib25lJywKICAgJ3BnYWRtaW4uYWxlcnRpZnlqcycsICdwZ2FkbWluLmJhY2tncmlkJywgJ3Bn YWRtaW4uYmFja2Zvcm0nLAotICAncGdhZG1pbi5icm93c2VyJywgJ3BnYWRtaW4uYnJvd3Nlci5u b2RlJywgJ2JhY2tncmlkLnNlbGVjdC5hbGwnLAorICAncGdhZG1pbi5icm93c2VyJywgJ3BnYWRt aW4uYnJvd3Nlci5ub2RlJywKKyAgJ3Rvb2xzL2dyYW50X3dpemFyZC9zdGF0aWMvanMvbWVudV91 dGlscycsCisgICdzb3VyY2VzL25vZGVzL3N1cHBvcnRlZF9kYXRhYmFzZV9ub2RlJywKKyAgJ2Jh Y2tncmlkLnNlbGVjdC5hbGwnLAogICAnYmFja2dyaWQuZmlsdGVyJywgJ3BnYWRtaW4uYnJvd3Nl ci5zZXJ2ZXIucHJpdmlsZWdlJywKICAgJ3BnYWRtaW4uYnJvd3Nlci53aXphcmQnLAogXSwgZnVu Y3Rpb24oCiAgIGdldHRleHQsIHVybF9mb3IsICQsIF8sIEJhY2tib25lLCBBbGVydGlmeSwgQmFj a2dyaWQsIEJhY2tmb3JtLCBwZ0Jyb3dzZXIsCi0gIHBnTm9kZQorICBwZ05vZGUsIG1lbnVVdGls cywgc3VwcG9ydGVkTm9kZXMKICkgewogCiAgIC8vIGlmIG1vZHVsZSBpcyBhbHJlYWR5IGluaXRp YWxpemVkLCByZWZlciB0byB0aGF0LgpAQCAtMTQzLDQxICsxNDYsNiBAQCBkZWZpbmUoWwogCiAg ICAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTsKIAotICAgICAgLy8gRGVmaW5lIGxpc3Qgb2Yg bm9kZXMgb24gd2hpY2ggZ3JhbnQgd2l6YXJkIGNvbnRleHQgbWVudSBvcHRpb24gYXBwZWFycwot ICAgICAgdmFyIHN1cHBvcnRlZF9ub2RlcyA9IFsKLSAgICAgICAgICAnc2NoZW1hJywgJ2NvbGwt ZnVuY3Rpb24nLCAnY29sbC1zZXF1ZW5jZScsCi0gICAgICAgICAgJ2NvbGwtdGFibGUnLCAnY29s bC12aWV3JywgJ2NvbGwtcHJvY2VkdXJlJywKLSAgICAgICAgICAnY29sbC1tdmlldycsICdkYXRh YmFzZScsICdjb2xsLXRyaWdnZXJfZnVuY3Rpb24nLAotICAgICAgICBdLAotCi0gICAgICAgIC8q KgotICAgICAgICAgIEVuYWJsZS9kaXNhYmxlIGdyYW50d2l6YXJkIG1lbnUgaW4gdG9vbHMgYmFz ZWQKLSAgICAgICAgICBvbiBub2RlIHNlbGVjdGVkCi0gICAgICAgICAgaWYgc2VsZWN0ZWQgbm9k ZSBpcyBwcmVzZW50IGluIHN1cHBvcnRlZF9ub2RlcywKLSAgICAgICAgICBtZW51IHdpbGwgYmUg ZW5hYmxlZCBvdGhlcndpc2UgZGlzYWJsZWQuCi0gICAgICAgICAgQWxzbywgaGlkZSBpdCBmb3Ig c3lzdGVtIHZpZXcgaW4gY2F0YWxvZ3MKLSAgICAgICAgKi8KLSAgICAgICAgbWVudV9lbmFibGVk ID0gZnVuY3Rpb24oaXRlbURhdGEsIGl0ZW0pIHsKLSAgICAgICAgICB2YXIgdCA9IHBnQnJvd3Nl ci50cmVlLAotICAgICAgICAgICAgaSA9IGl0ZW0sCi0gICAgICAgICAgICBkID0gaXRlbURhdGE7 Ci0gICAgICAgICAgdmFyIHBhcmVudF9pdGVtID0gdC5oYXNQYXJlbnQoaSkgPyB0LnBhcmVudChp KSA6IG51bGwsCi0gICAgICAgICAgICBwYXJlbnRfZGF0YSA9IHBhcmVudF9pdGVtID8gdC5pdGVt RGF0YShwYXJlbnRfaXRlbSkgOiBudWxsOwotICAgICAgICAgIGlmICghXy5pc1VuZGVmaW5lZChk KSAmJiAhXy5pc051bGwoZCkgJiYgIV8uaXNOdWxsKHBhcmVudF9kYXRhKSkgewotICAgICAgICAg ICAgaWYgKF8uaW5kZXhPZihzdXBwb3J0ZWRfbm9kZXMsIGQuX3R5cGUpICE9PSAtMSAmJgotICAg ICAgICAgICAgICBwYXJlbnRfZGF0YS5fdHlwZSAhPSAnY2F0YWxvZycpIHsKLSAgICAgICAgICAg ICAgaWYgKGQuX3R5cGUgPT0gJ2RhdGFiYXNlJyAmJiBkLmFsbG93Q29ubikKLSAgICAgICAgICAg ICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgZWxzZSBpZiAoZC5fdHlwZSAhPSAnZGF0 YWJhc2UnKQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgICBlbHNl Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfSBlbHNlCi0gICAg ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHJl dHVybiBmYWxzZTsKLSAgICAgICAgfTsKLQogICAgICAgLy8gRGVmaW5lIHRoZSBub2RlcyBvbiB3 aGljaCB0aGUgbWVudXMgdG8gYmUgYXBwZWFyCiAgICAgICB2YXIgbWVudXMgPSBbewogICAgICAg ICBuYW1lOiAnZ3JhbnRfd2l6YXJkX3NjaGVtYScsCkBAIC0xODcsMjEgKzE1NSwyNSBAQCBkZWZp bmUoWwogICAgICAgICBwcmlvcml0eTogMTQsCiAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdHcmFu dCBXaXphcmQuLi4nKSwKICAgICAgICAgaWNvbjogJ2ZhIGZhLXVubG9jay1hbHQnLAotICAgICAg ICBlbmFibGU6IG1lbnVfZW5hYmxlZCwKKyAgICAgICAgZW5hYmxlOiBzdXBwb3J0ZWROb2Rlcy5l bmFibGVkLmJpbmQoCisgICAgICAgICAgbnVsbCwgcGdCcm93c2VyLnRyZWVNZW51LCBtZW51VXRp bHMuc3VwcG9ydGVkTm9kZXMKKyAgICAgICAgKSwKICAgICAgIH1dOwogCiAgICAgICAvLyBBZGQg c3VwcG9ydGVkIG1lbnVzIGludG8gdGhlIG1lbnVzIGxpc3QKLSAgICAgIGZvciAodmFyIGlkeCA9 IDA7IGlkeCA8IHN1cHBvcnRlZF9ub2Rlcy5sZW5ndGg7IGlkeCsrKSB7CisgICAgICBmb3IgKHZh ciBpZHggPSAwOyBpZHggPCBtZW51VXRpbHMuc3VwcG9ydGVkTm9kZXMubGVuZ3RoOyBpZHgrKykg ewogICAgICAgICBtZW51cy5wdXNoKHsKLSAgICAgICAgICBuYW1lOiAnZ3JhbnRfd2l6YXJkX3Nj aGVtYV9jb250ZXh0XycgKyBzdXBwb3J0ZWRfbm9kZXNbaWR4XSwKLSAgICAgICAgICBub2RlOiBz dXBwb3J0ZWRfbm9kZXNbaWR4XSwKKyAgICAgICAgICBuYW1lOiAnZ3JhbnRfd2l6YXJkX3NjaGVt YV9jb250ZXh0XycgKyBtZW51VXRpbHMuc3VwcG9ydGVkTm9kZXNbaWR4XSwKKyAgICAgICAgICBu b2RlOiBtZW51VXRpbHMuc3VwcG9ydGVkTm9kZXNbaWR4XSwKICAgICAgICAgICBtb2R1bGU6IHRo aXMsCiAgICAgICAgICAgYXBwbGllczogWydjb250ZXh0J10sCiAgICAgICAgICAgY2FsbGJhY2s6 ICdzdGFydF9ncmFudF93aXphcmQnLAogICAgICAgICAgIHByaW9yaXR5OiAxNCwKICAgICAgICAg ICBsYWJlbDogZ2V0dGV4dCgnR3JhbnQgV2l6YXJkLi4uJyksCiAgICAgICAgICAgaWNvbjogJ2Zh IGZhLXVubG9jay1hbHQnLAotICAgICAgICAgIGVuYWJsZTogbWVudV9lbmFibGVkLAorICAgICAg ICAgIGVuYWJsZTogc3VwcG9ydGVkTm9kZXMuZW5hYmxlZC5iaW5kKAorICAgICAgICAgICAgbnVs bCwgcGdCcm93c2VyLnRyZWVNZW51LCBtZW51VXRpbHMuc3VwcG9ydGVkTm9kZXMKKyAgICAgICAg ICApLAogICAgICAgICB9KTsKICAgICAgIH0KICAgICAgIHBnQnJvd3Nlci5hZGRfbWVudXMobWVu dXMpOwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvZ3JhbnRfd2l6YXJkL3N0YXRpYy9q cy9tZW51X3V0aWxzLmpzIGIvd2ViL3BnYWRtaW4vdG9vbHMvZ3JhbnRfd2l6YXJkL3N0YXRpYy9q cy9tZW51X3V0aWxzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi5iNTZj ZTNjZAotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL2dyYW50X3dpemFyZC9z dGF0aWMvanMvbWVudV91dGlscy5qcwpAQCAtMCwwICsxLDE2IEBACisvLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLworLy8gcGdB ZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworLy8KKy8vIENvcHlyaWdodCAoQykgMjAxMyAtIDIw MTgsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KKy8vIFRoaXMgc29mdHdhcmUgaXMgcmVs ZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorLy8KKy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKK2V4cG9ydCBj b25zdCBzdXBwb3J0ZWROb2RlcyA9IFsKKyAgJ3NjaGVtYScsICdjb2xsLWZ1bmN0aW9uJywgJ2Nv bGwtc2VxdWVuY2UnLAorICAnY29sbC10YWJsZScsICdjb2xsLXZpZXcnLCAnY29sbC1wcm9jZWR1 cmUnLAorICAnY29sbC1tdmlldycsICdkYXRhYmFzZScsICdjb2xsLXRyaWdnZXJfZnVuY3Rpb24n LAorXTsKKworCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9pbXBvcnRfZXhwb3J0L3N0 YXRpYy9qcy9pbXBvcnRfZXhwb3J0LmpzIGIvd2ViL3BnYWRtaW4vdG9vbHMvaW1wb3J0X2V4cG9y dC9zdGF0aWMvanMvaW1wb3J0X2V4cG9ydC5qcwppbmRleCBlNjRkM2RlZS4uNWM3MzUzN2UgMTAw NjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3Rvb2xzL2ltcG9ydF9leHBvcnQvc3RhdGljL2pzL2ltcG9y dF9leHBvcnQuanMKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvaW1wb3J0X2V4cG9ydC9zdGF0aWMv anMvaW1wb3J0X2V4cG9ydC5qcwpAQCAtMSwxMCArMSwxMiBAQAogZGVmaW5lKFsKICAgJ3NvdXJj ZXMvZ2V0dGV4dCcsICdzb3VyY2VzL3VybF9mb3InLCAnanF1ZXJ5JywgJ3VuZGVyc2NvcmUnLCAn dW5kZXJzY29yZS5zdHJpbmcnLCAncGdhZG1pbi5hbGVydGlmeWpzJywKICAgJ3NvdXJjZXMvcGdh ZG1pbicsICdwZ2FkbWluLmJyb3dzZXInLCAnYmFja2JvbmUnLCAnYmFja2dyaWQnLCAnYmFja2Zv cm0nLAotICAnc291cmNlcy91dGlscycsICdwZ2FkbWluLmJhY2tmb3JtJywgJ3BnYWRtaW4uYmFj a2dyaWQnLCAncGdhZG1pbi5icm93c2VyLm5vZGUudWknLAorICAnc291cmNlcy91dGlscycsCisg ICdzb3VyY2VzL25vZGVzL3N1cHBvcnRlZF9kYXRhYmFzZV9ub2RlJywKKyAgJ3BnYWRtaW4uYmFj a2Zvcm0nLCAncGdhZG1pbi5iYWNrZ3JpZCcsICdwZ2FkbWluLmJyb3dzZXIubm9kZS51aScsCiBd LCBmdW5jdGlvbigKICAgZ2V0dGV4dCwgdXJsX2ZvciwgJCwgXywgUywgQWxlcnRpZnksIHBnQWRt aW4sIHBnQnJvd3NlciwgQmFja2JvbmUsIEJhY2tncmlkLAotQmFja2Zvcm0sIGNvbW1vblV0aWxz CitCYWNrZm9ybSwgY29tbW9uVXRpbHMsIHN1cHBvcnRlZE5vZGVzCiApIHsKIAogICBwZ0FkbWlu ID0gcGdBZG1pbiB8fCB3aW5kb3cucGdBZG1pbiB8fCB7fTsKQEAgLTM4MywyNSArMzg1LDYgQEAg QmFja2Zvcm0sIGNvbW1vblV0aWxzCiAKICAgICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSB0cnVlOwog Ci0gICAgICAvKgotICAgICAgICogRW5hYmxlL2Rpc2FibGUgaW1wb3J0IG1lbnUgaW4gdG9vbHMg YmFzZWQgb24gbm9kZSBzZWxlY3RlZC4gSW1wb3J0Ci0gICAgICAgKiBtZW51IHdpbGwgYmUgZW5h YmxlZCBvbmx5IHdoZW4gdXNlciBzZWxlY3QgdGFibGUgbm9kZS4KLSAgICAgICAqLwotICAgICAg dmFyIG1lbnVfZW5hYmxlZCA9IGZ1bmN0aW9uKGl0ZW1EYXRhLCBpdGVtKSB7Ci0gICAgICAgIHZh ciB0ID0gcGdCcm93c2VyLnRyZWUsCi0gICAgICAgICAgaSA9IGl0ZW0sCi0gICAgICAgICAgZCA9 IGl0ZW1EYXRhOwotICAgICAgICB2YXIgcGFyZW50X2l0ZW0gPSB0Lmhhc1BhcmVudChpKSA/IHQu cGFyZW50KGkpIDogbnVsbCwKLSAgICAgICAgICBwYXJlbnRfZGF0YSA9IHBhcmVudF9pdGVtID8g dC5pdGVtRGF0YShwYXJlbnRfaXRlbSkgOiBudWxsOwotICAgICAgICBpZiAoIV8uaXNVbmRlZmlu ZWQoZCkgJiYgIV8uaXNOdWxsKGQpICYmICFfLmlzTnVsbChwYXJlbnRfZGF0YSkpCi0gICAgICAg ICAgcmV0dXJuICgKLSAgICAgICAgICAgIChfLmluZGV4T2YoWyd0YWJsZSddLCBkLl90eXBlKSAh PT0gLTEgJiYKLSAgICAgICAgICAgICAgcGFyZW50X2RhdGEuX3R5cGUgIT0gJ2NhdGFsb2cnKSA/ IHRydWUgOiBmYWxzZQotICAgICAgICAgICk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICByZXR1 cm4gZmFsc2U7Ci0gICAgICB9OwotCiAgICAgICAvLyBJbml0aWFsaXplIHRoZSBjb250ZXh0IG1l bnUgdG8gZGlzcGxheSB0aGUgaW1wb3J0IG9wdGlvbnMgd2hlbiB1c2VyIG9wZW4gdGhlIGNvbnRl eHQgbWVudSBmb3IgdGFibGUKICAgICAgIHBnQnJvd3Nlci5hZGRfbWVudXMoW3sKICAgICAgICAg bmFtZTogJ2ltcG9ydCcsCkBAIC00MTMsNyArMzk2LDkgQEAgQmFja2Zvcm0sIGNvbW1vblV0aWxz CiAgICAgICAgIHByaW9yaXR5OiAxMCwKICAgICAgICAgbGFiZWw6IGdldHRleHQoJ0ltcG9ydC9F eHBvcnQuLi4nKSwKICAgICAgICAgaWNvbjogJ2ZhIGZhLXNob3BwaW5nLWNhcnQnLAotICAgICAg ICBlbmFibGU6IG1lbnVfZW5hYmxlZCwKKyAgICAgICAgZW5hYmxlOiBzdXBwb3J0ZWROb2Rlcy5l bmFibGVkLmJpbmQoCisgICAgICAgICAgbnVsbCwgcGdCcm93c2VyLnRyZWVNZW51LCBbJ3RhYmxl J10KKyAgICAgICAgKSwKICAgICAgIH1dKTsKICAgICB9LAogCmRpZmYgLS1naXQgYS93ZWIvcGdh ZG1pbi90b29scy9tYWludGVuYW5jZS9zdGF0aWMvanMvbWFpbnRlbmFuY2UuanMgYi93ZWIvcGdh ZG1pbi90b29scy9tYWludGVuYW5jZS9zdGF0aWMvanMvbWFpbnRlbmFuY2UuanMKaW5kZXggZjIx MDI2MDIuLmRmMDVjM2Q1IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi90b29scy9tYWludGVuYW5j ZS9zdGF0aWMvanMvbWFpbnRlbmFuY2UuanMKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvbWFpbnRl bmFuY2Uvc3RhdGljL2pzL21haW50ZW5hbmNlLmpzCkBAIC0yLDExICsyLDE0IEBAIGRlZmluZShb CiAgICdzb3VyY2VzL2dldHRleHQnLCAnc291cmNlcy91cmxfZm9yJywgJ2pxdWVyeScsICd1bmRl cnNjb3JlJywKICAgJ3VuZGVyc2NvcmUuc3RyaW5nJywgJ3BnYWRtaW4uYWxlcnRpZnlqcycsICdz b3VyY2VzL3BnYWRtaW4nLCAncGdhZG1pbi5icm93c2VyJywgJ2JhY2tib25lJywKICAgJ2JhY2tn cmlkJywgJ2JhY2tmb3JtJywgJ3NvdXJjZXMvdXRpbHMnLAorICAndG9vbHMvbWFpbnRlbmFuY2Uv c3RhdGljL2pzL21lbnVfdXRpbHMnLAorICAnc291cmNlcy9ub2Rlcy9zdXBwb3J0ZWRfZGF0YWJh c2Vfbm9kZScsCiAgICdwZ2FkbWluLmJhY2tmb3JtJywgJ3BnYWRtaW4uYmFja2dyaWQnLAogICAn cGdhZG1pbi5icm93c2VyLm5vZGUudWknLAogXSwgZnVuY3Rpb24oCiAgIGdldHRleHQsIHVybF9m b3IsICQsIF8sIFMsIEFsZXJ0aWZ5LCBwZ0FkbWluLCBwZ0Jyb3dzZXIsIEJhY2tib25lLCBCYWNr Z3JpZCwKLSAgQmFja2Zvcm0sIGNvbW1vblV0aWxzCisgIEJhY2tmb3JtLCBjb21tb25VdGlscywK KyAgbWVudVV0aWxzLCBzdXBwb3J0ZWROb2RlcwogKSB7CiAKICAgcGdBZG1pbiA9IHBnQWRtaW4g fHwgd2luZG93LnBnQWRtaW4gfHwge307CkBAIC0xNjgsMzYgKzE3MSw2IEBAIGRlZmluZShbCiAK ICAgICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSB0cnVlOwogCi0gICAgICB2YXIgbWFpbnRlbmFuY2Vf c3VwcG9ydGVkX25vZGVzID0gWwotICAgICAgICAnZGF0YWJhc2UnLCAndGFibGUnLCAncHJpbWFy eV9rZXknLAotICAgICAgICAndW5pcXVlX2NvbnN0cmFpbnQnLCAnaW5kZXgnLCAncGFydGl0aW9u JywKLSAgICAgIF07Ci0KLSAgICAgIC8qKgotICAgICAgIEVuYWJsZS9kaXNhYmxlIE1haW50ZW5h bmNlIG1lbnUgaW4gdG9vbHMgYmFzZWQgb24gbm9kZSBzZWxlY3RlZC4KLSAgICAgICBNYWludGVu YW5jZSBtZW51IHdpbGwgYmUgZW5hYmxlZCBvbmx5IHdoZW4gdXNlciBzZWxlY3QgdGFibGUgYW5k IGRhdGFiYXNlIG5vZGUuCi0gICAgICAqLwotICAgICAgdmFyIG1lbnVfZW5hYmxlZCA9IGZ1bmN0 aW9uKGl0ZW1EYXRhLCBpdGVtKSB7Ci0gICAgICAgIHZhciB0ID0gcGdCcm93c2VyLnRyZWUsCi0g ICAgICAgICAgaSA9IGl0ZW0sCi0gICAgICAgICAgZCA9IGl0ZW1EYXRhOwotICAgICAgICB2YXIg cGFyZW50X2l0ZW0gPSB0Lmhhc1BhcmVudChpKSA/IHQucGFyZW50KGkpIDogbnVsbCwKLSAgICAg ICAgICBwYXJlbnRfZGF0YSA9IHBhcmVudF9pdGVtID8gdC5pdGVtRGF0YShwYXJlbnRfaXRlbSkg OiBudWxsOwotICAgICAgICBpZiAoIV8uaXNVbmRlZmluZWQoZCkgJiYgIV8uaXNOdWxsKGQpICYm ICFfLmlzTnVsbChwYXJlbnRfZGF0YSkpIHsKLSAgICAgICAgICBpZiAoXy5pbmRleE9mKG1haW50 ZW5hbmNlX3N1cHBvcnRlZF9ub2RlcywgZC5fdHlwZSkgIT09IC0xICYmCi0gICAgICAgICAgICBw YXJlbnRfZGF0YS5fdHlwZSAhPSAnY2F0YWxvZycpIHsKLSAgICAgICAgICAgIGlmIChkLl90eXBl ID09ICdkYXRhYmFzZScgJiYgZC5hbGxvd0Nvbm4pCi0gICAgICAgICAgICAgIHJldHVybiB0cnVl OwotICAgICAgICAgICAgZWxzZSBpZiAoZC5fdHlwZSAhPSAnZGF0YWJhc2UnKQotICAgICAgICAg ICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgcmV0dXJu IGZhbHNlOwotICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg ICAgICB9IGVsc2UKLSAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9OwotCiAgICAgICB2 YXIgbWVudXMgPSBbewogICAgICAgICBuYW1lOiAnbWFpbnRlbmFuY2UnLAogICAgICAgICBtb2R1 bGU6IHRoaXMsCkBAIC0yMDYsMjEgKzE3OSwyNSBAQCBkZWZpbmUoWwogICAgICAgICBwcmlvcml0 eTogMTAsCiAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdNYWludGVuYW5jZS4uLicpLAogICAgICAg ICBpY29uOiAnZmEgZmEtd3JlbmNoJywKLSAgICAgICAgZW5hYmxlOiBtZW51X2VuYWJsZWQsCisg ICAgICAgIGVuYWJsZTogc3VwcG9ydGVkTm9kZXMuZW5hYmxlZC5iaW5kKAorICAgICAgICAgIG51 bGwsIHBnQnJvd3Nlci50cmVlTWVudSwgbWVudVV0aWxzLm1haW50ZW5hbmNlU3VwcG9ydGVkTm9k ZXMKKyAgICAgICAgKSwKICAgICAgIH1dOwogCiAgICAgICAvLyBBZGQgc3VwcG9ydGVkIG1lbnVz IGludG8gdGhlIG1lbnVzIGxpc3QKLSAgICAgIGZvciAodmFyIGlkeCA9IDA7IGlkeCA8IG1haW50 ZW5hbmNlX3N1cHBvcnRlZF9ub2Rlcy5sZW5ndGg7IGlkeCsrKSB7CisgICAgICBmb3IgKHZhciBp ZHggPSAwOyBpZHggPCBtZW51VXRpbHMubWFpbnRlbmFuY2VTdXBwb3J0ZWROb2Rlcy5sZW5ndGg7 IGlkeCsrKSB7CiAgICAgICAgIG1lbnVzLnB1c2goewotICAgICAgICAgIG5hbWU6ICdtYWludGVu YW5jZV9jb250ZXh0XycgKyBtYWludGVuYW5jZV9zdXBwb3J0ZWRfbm9kZXNbaWR4XSwKLSAgICAg ICAgICBub2RlOiBtYWludGVuYW5jZV9zdXBwb3J0ZWRfbm9kZXNbaWR4XSwKKyAgICAgICAgICBu YW1lOiAnbWFpbnRlbmFuY2VfY29udGV4dF8nICsgbWVudVV0aWxzLm1haW50ZW5hbmNlU3VwcG9y dGVkTm9kZXNbaWR4XSwKKyAgICAgICAgICBub2RlOiBtZW51VXRpbHMubWFpbnRlbmFuY2VTdXBw b3J0ZWROb2Rlc1tpZHhdLAogICAgICAgICAgIG1vZHVsZTogdGhpcywKICAgICAgICAgICBhcHBs aWVzOiBbJ2NvbnRleHQnXSwKICAgICAgICAgICBjYWxsYmFjazogJ2NhbGxiYWNrX21haW50ZW5h bmNlJywKICAgICAgICAgICBwcmlvcml0eTogMTAsCiAgICAgICAgICAgbGFiZWw6IGdldHRleHQo J01haW50ZW5hbmNlLi4uJyksCiAgICAgICAgICAgaWNvbjogJ2ZhIGZhLXdyZW5jaCcsCi0gICAg ICAgICAgZW5hYmxlOiBtZW51X2VuYWJsZWQsCisgICAgICAgICAgZW5hYmxlOiBzdXBwb3J0ZWRO b2Rlcy5lbmFibGVkLmJpbmQoCisgICAgICAgICAgICBudWxsLCBwZ0Jyb3dzZXIudHJlZU1lbnUs IG1lbnVVdGlscy5tYWludGVuYW5jZVN1cHBvcnRlZE5vZGVzCisgICAgICAgICAgKSwKICAgICAg ICAgfSk7CiAgICAgICB9CiAgICAgICBwZ0Jyb3dzZXIuYWRkX21lbnVzKG1lbnVzKTsKZGlmZiAt LWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL21haW50ZW5hbmNlL3N0YXRpYy9qcy9tZW51X3V0aWxz LmpzIGIvd2ViL3BnYWRtaW4vdG9vbHMvbWFpbnRlbmFuY2Uvc3RhdGljL2pzL21lbnVfdXRpbHMu anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLjhjZGUxYmFhCi0tLSAvZGV2 L251bGwKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvbWFpbnRlbmFuY2Uvc3RhdGljL2pzL21lbnVf dXRpbHMuanMKQEAgLTAsMCArMSwxMyBAQAorLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8KKy8vIHBnQWRtaW4gNCAtIFBvc3Rn cmVTUUwgVG9vbHMKKy8vCisvLyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE4LCBUaGUgcGdBZG1p biBEZXZlbG9wbWVudCBUZWFtCisvLyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRo ZSBQb3N0Z3JlU1FMIExpY2VuY2UKKy8vCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCitleHBvcnQgY29uc3QgbWFpbnRlbmFu Y2VTdXBwb3J0ZWROb2RlcyA9IFsKKyAgJ2RhdGFiYXNlJywgJ3RhYmxlJywgJ3ByaW1hcnlfa2V5 JywKKyAgJ3VuaXF1ZV9jb25zdHJhaW50JywgJ2luZGV4JywgJ3BhcnRpdGlvbicsCitdOwpkaWZm IC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvcmVzdG9yZS9zdGF0aWMvanMvbWVudV91dGlscy5q cyBiL3dlYi9wZ2FkbWluL3Rvb2xzL3Jlc3RvcmUvc3RhdGljL2pzL21lbnVfdXRpbHMuanMKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLjJkMzVjOTUxCi0tLSAvZGV2L251bGwK KysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvcmVzdG9yZS9zdGF0aWMvanMvbWVudV91dGlscy5qcwpA QCAtMCwwICsxLDE4IEBACisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLworLy8gcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29s cworLy8KKy8vIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTgsIFRoZSBwZ0FkbWluIERldmVsb3Bt ZW50IFRlYW0KKy8vIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVT UUwgTGljZW5jZQorLy8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vCisKK2V4cG9ydCBjb25zdCByZXN0b3JlU3VwcG9ydGVkTm9k ZXMgPSBbCisgICdkYXRhYmFzZScsCisgICdzY2hlbWEnLAorICAndGFibGUnLAorICAnZnVuY3Rp b24nLAorICAndHJpZ2dlcicsCisgICdpbmRleCcsCisgICdwYXJ0aXRpb24nLAorXTsKZGlmZiAt LWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL3Jlc3RvcmUvc3RhdGljL2pzL3Jlc3RvcmUuanMgYi93 ZWIvcGdhZG1pbi90b29scy9yZXN0b3JlL3N0YXRpYy9qcy9yZXN0b3JlLmpzCmluZGV4IDdkYWE3 NjQ1Li5hZWZmNmQzZCAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vdG9vbHMvcmVzdG9yZS9zdGF0 aWMvanMvcmVzdG9yZS5qcworKysgYi93ZWIvcGdhZG1pbi90b29scy9yZXN0b3JlL3N0YXRpYy9q cy9yZXN0b3JlLmpzCkBAIC0xLDExICsxLDEzIEBACi0vLyBSZXN0b3JlIGRpYWxvZwogZGVmaW5l KCd0b29scy5yZXN0b3JlJywgWwogICAnc291cmNlcy9nZXR0ZXh0JywgJ3NvdXJjZXMvdXJsX2Zv cicsICdqcXVlcnknLCAndW5kZXJzY29yZScsICdiYWNrYm9uZScsCiAgICd1bmRlcnNjb3JlLnN0 cmluZycsICdwZ2FkbWluLmFsZXJ0aWZ5anMnLCAncGdhZG1pbi5icm93c2VyJywKICAgJ3BnYWRt aW4uYmFja2dyaWQnLCAncGdhZG1pbi5iYWNrZm9ybScsICdzb3VyY2VzL3V0aWxzJywKKyAgJ3Rv b2xzL3Jlc3RvcmUvc3RhdGljL2pzL21lbnVfdXRpbHMnLAorICAnc291cmNlcy9ub2Rlcy9zdXBw b3J0ZWRfZGF0YWJhc2Vfbm9kZScsCisgICd0b29scy9yZXN0b3JlL3N0YXRpYy9qcy9yZXN0b3Jl X2RpYWxvZycsCiBdLCBmdW5jdGlvbigKICAgZ2V0dGV4dCwgdXJsX2ZvciwgJCwgXywgQmFja2Jv bmUsIFMsIGFsZXJ0aWZ5LCBwZ0Jyb3dzZXIsIEJhY2tncmlkLCBCYWNrZm9ybSwKLWNvbW1vblV0 aWxzCitjb21tb25VdGlscywgbWVudVV0aWxzLCBzdXBwb3J0ZWROb2RlcywgcmVzdG9yZURpYWxv ZwogKSB7CiAKICAgLy8gaWYgbW9kdWxlIGlzIGFscmVhZHkgaW5pdGlhbGl6ZWQsIHJlZmVyIHRv IHRoYXQuCkBAIC0zMDcsNTkgKzMwOSw2IEBAIGNvbW1vblV0aWxzCiAKICAgICAgIHRoaXMuaW5p dGlhbGl6ZWQgPSB0cnVlOwogCi0gICAgICAvLyBEZWZpbmUgbGlzdCBvZiBub2RlcyBvbiB3aGlj aCByZXN0b3JlIGNvbnRleHQgbWVudSBvcHRpb24gYXBwZWFycwotICAgICAgdmFyIHJlc3RvcmVf c3VwcG9ydGVkX25vZGVzID0gWwotICAgICAgICAnZGF0YWJhc2UnLCAnc2NoZW1hJywKLSAgICAg ICAgJ3RhYmxlJywgJ2Z1bmN0aW9uJywKLSAgICAgICAgJ3RyaWdnZXInLCAnaW5kZXgnLAotICAg ICAgICAncGFydGl0aW9uJywKLSAgICAgIF07Ci0KLSAgICAgIC8qKgotICAgICAgICBFbmFibGUv ZGlzYWJsZSByZXN0b3JlIG1lbnUgaW4gdG9vbHMgYmFzZWQKLSAgICAgICAgb24gbm9kZSBzZWxl Y3RlZAotICAgICAgICBpZiBzZWxlY3RlZCBub2RlIGlzIHByZXNlbnQgaW4gc3VwcG9ydGVkX25v ZGVzLAotICAgICAgICBtZW51IHdpbGwgYmUgZW5hYmxlZCBvdGhlcndpc2UgZGlzYWJsZWQuCi0g ICAgICAgIEFsc28sIGhpZGUgaXQgZm9yIHN5c3RlbSB2aWV3IGluIGNhdGFsb2dzCi0gICAgICAq LwotICAgICAgdmFyIG1lbnVfZW5hYmxlZCA9IGZ1bmN0aW9uKGl0ZW1EYXRhLCBpdGVtLCBkYXRh KSB7Ci0gICAgICAgIHZhciB0ID0gcGdCcm93c2VyLnRyZWUsCi0gICAgICAgICAgaSA9IGl0ZW0s Ci0gICAgICAgICAgZCA9IGl0ZW1EYXRhOwotICAgICAgICB2YXIgcGFyZW50X2l0ZW0gPSB0Lmhh c1BhcmVudChpKSA/IHQucGFyZW50KGkpIDogbnVsbCwKLSAgICAgICAgICBwYXJlbnRfZGF0YSA9 IHBhcmVudF9pdGVtID8gdC5pdGVtRGF0YShwYXJlbnRfaXRlbSkgOiBudWxsOwotICAgICAgICBp ZiAoIV8uaXNVbmRlZmluZWQoZCkgJiYgIV8uaXNOdWxsKGQpICYmICFfLmlzTnVsbChwYXJlbnRf ZGF0YSkpIHsKLSAgICAgICAgICBpZiAoXy5pbmRleE9mKHJlc3RvcmVfc3VwcG9ydGVkX25vZGVz LCBkLl90eXBlKSAhPT0gLTEgJiYKLSAgICAgICAgICAgIGlzX3BhcmVudF9jYXRhbG9nKGl0ZW1E YXRhLCBpdGVtLCBkYXRhKSkgewotICAgICAgICAgICAgaWYgKGQuX3R5cGUgPT0gJ2RhdGFiYXNl JyAmJiBkLmFsbG93Q29ubikKLSAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAg ICBlbHNlIGlmIChkLl90eXBlICE9ICdkYXRhYmFzZScpCi0gICAgICAgICAgICAgIHJldHVybiB0 cnVlOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg ICAgICAgfSBlbHNlCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0gZWxzZQot ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIH07Ci0KLSAgICAgIHZhciBpc19wYXJlbnRf Y2F0YWxvZyA9IGZ1bmN0aW9uKGl0ZW1EYXRhLCBpdGVtKSB7Ci0gICAgICAgIHZhciB0ID0gcGdC cm93c2VyLnRyZWUsCi0gICAgICAgICAgaSA9IGl0ZW0sCi0gICAgICAgICAgZCA9IGl0ZW1EYXRh OwotCi0gICAgICAgIC8vIFRvIGl0ZXJhdGUgb3ZlciB0cmVlIHRvIGNoZWNrIHBhcmVudCBub2Rl Ci0gICAgICAgIHdoaWxlIChpKSB7Ci0gICAgICAgICAgLy8gSWYgaXQgaXMgc2NoZW1hIHRoZW4g YWxsb3cgdXNlciB0byByZXN0b3JlCi0gICAgICAgICAgaWYgKF8uaW5kZXhPZihbJ2NhdGFsb2cn XSwgZC5fdHlwZSkgPiAtMSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICBp ID0gdC5oYXNQYXJlbnQoaSkgPyB0LnBhcmVudChpKSA6IG51bGw7Ci0gICAgICAgICAgZCA9IGkg PyB0Lml0ZW1EYXRhKGkpIDogbnVsbDsKLSAgICAgICAgfQotICAgICAgICAvLyBieSBkZWZhdWx0 IHdlIGRvIG5vdCB3YW50IHRvIGFsbG93IGNyZWF0ZSBtZW51Ci0gICAgICAgIHJldHVybiB0cnVl OwotICAgICAgfTsKLQogICAgICAgLy8gRGVmaW5lIHRoZSBub2RlcyBvbiB3aGljaCB0aGUgbWVu dXMgdG8gYmUgYXBwZWFyCiAgICAgICB2YXIgbWVudXMgPSBbewogICAgICAgICBuYW1lOiAncmVz dG9yZV9vYmplY3QnLApAQCAtMzY5LDIwICszMTgsMjQgQEAgY29tbW9uVXRpbHMKICAgICAgICAg cHJpb3JpdHk6IDEzLAogICAgICAgICBsYWJlbDogZ2V0dGV4dCgnUmVzdG9yZS4uLicpLAogICAg ICAgICBpY29uOiAnZmEgZmEtdXBsb2FkJywKLSAgICAgICAgZW5hYmxlOiBtZW51X2VuYWJsZWQs CisgICAgICAgIGVuYWJsZTogc3VwcG9ydGVkTm9kZXMuZW5hYmxlZC5iaW5kKAorICAgICAgICAg IG51bGwsIHBnQnJvd3Nlci50cmVlTWVudSwgbWVudVV0aWxzLnJlc3RvcmVTdXBwb3J0ZWROb2Rl cworICAgICAgICApLAogICAgICAgfV07CiAKLSAgICAgIGZvciAodmFyIGlkeCA9IDA7IGlkeCA8 IHJlc3RvcmVfc3VwcG9ydGVkX25vZGVzLmxlbmd0aDsgaWR4KyspIHsKKyAgICAgIGZvciAodmFy IGlkeCA9IDA7IGlkeCA8IG1lbnVVdGlscy5yZXN0b3JlU3VwcG9ydGVkTm9kZXMubGVuZ3RoOyBp ZHgrKykgewogICAgICAgICBtZW51cy5wdXNoKHsKLSAgICAgICAgICBuYW1lOiAncmVzdG9yZV8n ICsgcmVzdG9yZV9zdXBwb3J0ZWRfbm9kZXNbaWR4XSwKLSAgICAgICAgICBub2RlOiByZXN0b3Jl X3N1cHBvcnRlZF9ub2Rlc1tpZHhdLAorICAgICAgICAgIG5hbWU6ICdyZXN0b3JlXycgKyBtZW51 VXRpbHMucmVzdG9yZVN1cHBvcnRlZE5vZGVzW2lkeF0sCisgICAgICAgICAgbm9kZTogbWVudVV0 aWxzLnJlc3RvcmVTdXBwb3J0ZWROb2Rlc1tpZHhdLAogICAgICAgICAgIG1vZHVsZTogdGhpcywK ICAgICAgICAgICBhcHBsaWVzOiBbJ2NvbnRleHQnXSwKICAgICAgICAgICBjYWxsYmFjazogJ3Jl c3RvcmVfb2JqZWN0cycsCiAgICAgICAgICAgcHJpb3JpdHk6IDEzLAogICAgICAgICAgIGxhYmVs OiBnZXR0ZXh0KCdSZXN0b3JlLi4uJyksCiAgICAgICAgICAgaWNvbjogJ2ZhIGZhLXVwbG9hZCcs Ci0gICAgICAgICAgZW5hYmxlOiBtZW51X2VuYWJsZWQsCisgICAgICAgICAgZW5hYmxlOiBzdXBw b3J0ZWROb2Rlcy5lbmFibGVkLmJpbmQoCisgICAgICAgICAgICBudWxsLCBwZ0Jyb3dzZXIudHJl ZU1lbnUsIG1lbnVVdGlscy5yZXN0b3JlU3VwcG9ydGVkTm9kZXMKKyAgICAgICAgICApLAogICAg ICAgICB9KTsKICAgICAgIH0KIApAQCAtMzkxLDMxOCArMzQ0LDEwIEBAIGNvbW1vblV0aWxzCiAg ICAgfSwKICAgICAvLyBDYWxsYmFjayB0byBkcmF3IEJhY2t1cCBEaWFsb2cgZm9yIG9iamVjdHMK ICAgICByZXN0b3JlX29iamVjdHM6IGZ1bmN0aW9uKGFjdGlvbiwgdHJlZUl0ZW0pIHsKLQotICAg ICAgdmFyIGkgPSB0cmVlSXRlbSB8fCBwZ0Jyb3dzZXIudHJlZS5zZWxlY3RlZCgpLAotICAgICAg ICBzZXJ2ZXJfZGF0YSA9IG51bGw7Ci0KLSAgICAgIHdoaWxlIChpKSB7Ci0gICAgICAgIHZhciBu b2RlX2RhdGEgPSBwZ0Jyb3dzZXIudHJlZS5pdGVtRGF0YShpKTsKLSAgICAgICAgaWYgKG5vZGVf ZGF0YS5fdHlwZSA9PSAnc2VydmVyJykgewotICAgICAgICAgIHNlcnZlcl9kYXRhID0gbm9kZV9k YXRhOwotICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHBnQnJvd3Nl ci50cmVlLmhhc1BhcmVudChpKSkgewotICAgICAgICAgIGkgPSAkKHBnQnJvd3Nlci50cmVlLnBh cmVudChpKSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgYWxlcnRpZnkuYWxlcnQoCi0g ICAgICAgICAgICBnZXR0ZXh0KCdSZXN0b3JlIEVycm9yJyksCi0gICAgICAgICAgICBnZXR0ZXh0 KCdQbGVhc2Ugc2VsZWN0IHNlcnZlciBvciBjaGlsZCBub2RlIGZyb20gdHJlZS4nKQotICAgICAg ICAgICk7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgIH0KLQotICAgICAgaWYg KCFzZXJ2ZXJfZGF0YSkgewotICAgICAgICByZXR1cm47Ci0gICAgICB9Ci0KLSAgICAgIHZhciBt b2R1bGUgPSAncGF0aHMnLAotICAgICAgICBwcmVmZXJlbmNlX25hbWUgPSAncGdfYmluX2Rpcics Ci0gICAgICAgIG1zZyA9IGdldHRleHQoJ1BsZWFzZSBjb25maWd1cmUgdGhlIFBvc3RncmVTUUwg QmluYXJ5IFBhdGggaW4gdGhlIFByZWZlcmVuY2VzIGRpYWxvZy4nKTsKLQotICAgICAgaWYgKChz ZXJ2ZXJfZGF0YS50eXBlICYmIHNlcnZlcl9kYXRhLnR5cGUgPT0gJ3BwYXMnKSB8fAotICAgICAg ICBzZXJ2ZXJfZGF0YS5zZXJ2ZXJfdHlwZSA9PSAncHBhcycpIHsKLSAgICAgICAgcHJlZmVyZW5j ZV9uYW1lID0gJ3BwYXNfYmluX2Rpcic7Ci0gICAgICAgIG1zZyA9IGdldHRleHQoJ1BsZWFzZSBj b25maWd1cmUgdGhlIEVEQiBBZHZhbmNlZCBTZXJ2ZXIgQmluYXJ5IFBhdGggaW4gdGhlIFByZWZl cmVuY2VzIGRpYWxvZy4nKTsKLSAgICAgIH0KLQotICAgICAgdmFyIHByZWZlcmVuY2UgPSBwZ0Jy b3dzZXIuZ2V0X3ByZWZlcmVuY2UobW9kdWxlLCBwcmVmZXJlbmNlX25hbWUpOwotCi0gICAgICBp ZiAocHJlZmVyZW5jZSkgewotICAgICAgICBpZiAoIXByZWZlcmVuY2UudmFsdWUpIHsKLSAgICAg ICAgICBhbGVydGlmeS5hbGVydChnZXR0ZXh0KCdDb25maWd1cmF0aW9uIHJlcXVpcmVkJyksIG1z Zyk7Ci0gICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICB9IGVsc2UgewotICAgICAg ICBhbGVydGlmeS5hbGVydCgKLSAgICAgICAgICBnZXR0ZXh0KCdSZXN0b3JlIEVycm9yJyksCi0g ICAgICAgICAgUyhnZXR0ZXh0KCdGYWlsZWQgdG8gbG9hZCBwcmVmZXJlbmNlICVzIG9mIG1vZHVs ZSAlcycpKS5zcHJpbnRmKHByZWZlcmVuY2VfbmFtZSwgbW9kdWxlKS52YWx1ZSgpCi0gICAgICAg ICk7Ci0gICAgICAgIHJldHVybjsKLSAgICAgIH0KLQotICAgICAgdmFyIHRpdGxlID0gUyhnZXR0 ZXh0KCdSZXN0b3JlICglczogJXMpJykpLAotICAgICAgICB0cmVlID0gcGdCcm93c2VyLnRyZWUs Ci0gICAgICAgIGl0ZW0gPSB0cmVlSXRlbSB8fCB0cmVlLnNlbGVjdGVkKCksCi0gICAgICAgIGRh dGEgPSBpdGVtICYmIGl0ZW0ubGVuZ3RoID09IDEgJiYgdHJlZS5pdGVtRGF0YShpdGVtKSwKLSAg ICAgICAgbm9kZSA9IGRhdGEgJiYgZGF0YS5fdHlwZSAmJiBwZ0Jyb3dzZXIuTm9kZXNbZGF0YS5f dHlwZV07Ci0KLSAgICAgIGlmICghbm9kZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgICB2YXIg dHJlZUluZm8gPSBub2RlLmdldFRyZWVOb2RlSGllcmFyY2h5LmFwcGx5KG5vZGUsIFtpdGVtXSk7 Ci0KLSAgICAgIGlmICh0cmVlSW5mby5kYXRhYmFzZS5fbGFiZWwuaW5kZXhPZignPScpID49IDAp IHsKLSAgICAgICAgYWxlcnRpZnkuYWxlcnQoCi0gICAgICAgICAgZ2V0dGV4dCgnUmVzdG9yZSBl cnJvcicpLAotICAgICAgICAgIGdldHRleHQoJ1Jlc3RvcmUgam9iIGNyZWF0aW9uIGZhaWxlZC4g JysKLSAgICAgICAgICAnRGF0YWJhc2VzIHdpdGggPSBzeW1ib2xzIGluIHRoZSBuYW1lIGNhbm5v dCBiZSByZXN0b3JlZCB1c2luZyB0aGlzIHV0aWxpdHkuJykKLSAgICAgICAgKTsKLSAgICAgICAg cmV0dXJuOwotICAgICAgfQotCi0gICAgICB0aXRsZSA9IHRpdGxlLnNwcmludGYobm9kZS5sYWJl bCwgZGF0YS5sYWJlbCkudmFsdWUoKTsKLQotICAgICAgaWYgKCFhbGVydGlmeS5wZ19yZXN0b3Jl KSB7Ci0gICAgICAgIC8vIENyZWF0ZSBEaWFsb2cgdGl0bGUgb24gdGhlIGZseSB3aXRoIG5vZGUg ZGV0YWlscwotICAgICAgICBhbGVydGlmeS5kaWFsb2coJ3BnX3Jlc3RvcmUnLCBmdW5jdGlvbiBm YWN0b3J5KCkgewotICAgICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICBtYWluOiBmdW5jdGlv bih0aXRsZSwgaXRlbSwgZGF0YSwgbm9kZSkgewotICAgICAgICAgICAgICB0aGlzLnNldCgndGl0 bGUnLCB0aXRsZSk7Ci0gICAgICAgICAgICAgIHRoaXMuc2V0dGluZygncGdfbm9kZScsIG5vZGUp OwotICAgICAgICAgICAgICB0aGlzLnNldHRpbmcoJ3BnX2l0ZW0nLCBpdGVtKTsKLSAgICAgICAg ICAgICAgdGhpcy5zZXR0aW5nKCdwZ19pdGVtX2RhdGEnLCBkYXRhKTsKLSAgICAgICAgICAgIH0s Ci0gICAgICAgICAgICBidWlsZDogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgIGFsZXJ0aWZ5 LnBnRGlhbG9nQnVpbGQuYXBwbHkodGhpcyk7Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAg c2V0dXA6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICByZXR1cm4gewotICAgICAgICAgICAg ICAgIGJ1dHRvbnM6IFt7Ci0gICAgICAgICAgICAgICAgICB0ZXh0OiAnJywKLSAgICAgICAgICAg ICAgICAgIGNsYXNzTmFtZTogJ2J0biBidG4tZGVmYXVsdCBwdWxsLWxlZnQgZmEgZmEtbGcgZmEt aW5mbycsCi0gICAgICAgICAgICAgICAgICBhdHRyczogewotICAgICAgICAgICAgICAgICAgICBu YW1lOiAnb2JqZWN0X2hlbHAnLAotICAgICAgICAgICAgICAgICAgICB0eXBlOiAnYnV0dG9uJywK LSAgICAgICAgICAgICAgICAgICAgdXJsOiAnYmFja3VwLmh0bWwnLAotICAgICAgICAgICAgICAg ICAgICBsYWJlbDogZ2V0dGV4dCgnUmVzdG9yZScpLAotICAgICAgICAgICAgICAgICAgfSwKLSAg ICAgICAgICAgICAgICB9LCB7Ci0gICAgICAgICAgICAgICAgICB0ZXh0OiAnJywKLSAgICAgICAg ICAgICAgICAgIGtleTogMTEyLAotICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnYnRuIGJ0 bi1kZWZhdWx0IHB1bGwtbGVmdCBmYSBmYS1sZyBmYS1xdWVzdGlvbicsCi0gICAgICAgICAgICAg ICAgICBhdHRyczogewotICAgICAgICAgICAgICAgICAgICBuYW1lOiAnZGlhbG9nX2hlbHAnLAot ICAgICAgICAgICAgICAgICAgICB0eXBlOiAnYnV0dG9uJywKLSAgICAgICAgICAgICAgICAgICAg bGFiZWw6IGdldHRleHQoJ1Jlc3RvcmUnKSwKLSAgICAgICAgICAgICAgICAgICAgdXJsOiB1cmxf Zm9yKCdoZWxwLnN0YXRpYycsIHsKLSAgICAgICAgICAgICAgICAgICAgICAnZmlsZW5hbWUnOiAn cmVzdG9yZV9kaWFsb2cuaHRtbCcsCi0gICAgICAgICAgICAgICAgICAgIH0pLAotICAgICAgICAg ICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB9LCB7Ci0gICAgICAgICAgICAgICAgICB0ZXh0 OiBnZXR0ZXh0KCdSZXN0b3JlJyksCi0gICAgICAgICAgICAgICAgICBrZXk6IDEzLAotICAgICAg ICAgICAgICAgICAgY2xhc3NOYW1lOiAnYnRuIGJ0bi1wcmltYXJ5IGZhIGZhLXVwbG9hZCBwZy1h bGVydGlmeS1idXR0b24nLAotICAgICAgICAgICAgICAgICAgcmVzdG9yZTogdHJ1ZSwKLSAgICAg ICAgICAgICAgICAgICdkYXRhLWJ0bi1uYW1lJzogJ3Jlc3RvcmUnLAotICAgICAgICAgICAgICAg IH0sIHsKLSAgICAgICAgICAgICAgICAgIHRleHQ6IGdldHRleHQoJ0NhbmNlbCcpLAotICAgICAg ICAgICAgICAgICAga2V5OiAyNywKLSAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2J0biBi dG4tZGFuZ2VyIGZhIGZhLWxnIGZhLXRpbWVzIHBnLWFsZXJ0aWZ5LWJ1dHRvbicsCi0gICAgICAg ICAgICAgICAgICByZXN0b3JlOiBmYWxzZSwKLSAgICAgICAgICAgICAgICAgICdkYXRhLWJ0bi1u YW1lJzogJ2NhbmNlbCcsCi0gICAgICAgICAgICAgICAgfV0sCi0gICAgICAgICAgICAgICAgLy8g U2V0IG9wdGlvbnMgZm9yIGRpYWxvZwotICAgICAgICAgICAgICAgIG9wdGlvbnM6IHsKLSAgICAg ICAgICAgICAgICAgIHRpdGxlOiB0aXRsZSwKLSAgICAgICAgICAgICAgICAgIC8vZGlzYWJsZSBi b3RoIHBhZGRpbmcgYW5kIG92ZXJmbG93IGNvbnRyb2wuCi0gICAgICAgICAgICAgICAgICBwYWRk aW5nOiAhMSwKLSAgICAgICAgICAgICAgICAgIG92ZXJmbG93OiAhMSwKLSAgICAgICAgICAgICAg ICAgIG1vZGVsOiAwLAotICAgICAgICAgICAgICAgICAgcmVzaXphYmxlOiB0cnVlLAotICAgICAg ICAgICAgICAgICAgbWF4aW1pemFibGU6IHRydWUsCi0gICAgICAgICAgICAgICAgICBwaW5uYWJs ZTogZmFsc2UsCi0gICAgICAgICAgICAgICAgICBjbG9zYWJsZUJ5RGltbWVyOiBmYWxzZSwKLSAg ICAgICAgICAgICAgICAgIG1vZGFsOiBmYWxzZSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAg ICAgICAgICB9OwotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIGhvb2tzOiB7Ci0gICAgICAg ICAgICAgIC8vIHRyaWdnZXJlZCB3aGVuIHRoZSBkaWFsb2cgaXMgY2xvc2VkCi0gICAgICAgICAg ICAgIG9uY2xvc2U6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIGlmICh0aGlzLnZpZXcp IHsKLSAgICAgICAgICAgICAgICAgIHRoaXMudmlldy5yZW1vdmUoewotICAgICAgICAgICAgICAg ICAgICBkYXRhOiB0cnVlLAotICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbDogdHJ1ZSwKLSAg ICAgICAgICAgICAgICAgICAgc2lsZW50OiB0cnVlLAotICAgICAgICAgICAgICAgICAgfSk7Ci0g ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgfSwKLSAgICAg ICAgICAgIHNldHRpbmdzOiB7Ci0gICAgICAgICAgICAgIHBnX25vZGU6IG51bGwsCi0gICAgICAg ICAgICAgIHBnX2l0ZW06IG51bGwsCi0gICAgICAgICAgICAgIHBnX2l0ZW1fZGF0YTogbnVsbCwK LSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBwcmVwYXJlOiBmdW5jdGlvbigpIHsKLQotICAg ICAgICAgICAgICB2YXIgc2VsZiA9IHRoaXM7Ci0gICAgICAgICAgICAgIC8vIERpc2FibGUgQmFj a3VwIGJ1dHRvbiB1bnRpbCB1c2VyIHByb3ZpZGVzIEZpbGVuYW1lCi0gICAgICAgICAgICAgIHRo aXMuX19pbnRlcm5hbC5idXR0b25zWzJdLmVsZW1lbnQuZGlzYWJsZWQgPSB0cnVlOwotICAgICAg ICAgICAgICB2YXIgJGNvbnRhaW5lciA9ICQoJzxkaXYgY2xhc3M9XCdyZXN0b3JlX2RpYWxvZ1wn PjwvZGl2PicpOwotICAgICAgICAgICAgICB2YXIgdCA9IHBnQnJvd3Nlci50cmVlLAotICAgICAg ICAgICAgICAgIGkgPSB0LnNlbGVjdGVkKCksCi0gICAgICAgICAgICAgICAgZCA9IGkgJiYgaS5s ZW5ndGggPT0gMSA/IHQuaXRlbURhdGEoaSkgOiB1bmRlZmluZWQsCi0gICAgICAgICAgICAgICAg bm9kZSA9IGQgJiYgcGdCcm93c2VyLk5vZGVzW2QuX3R5cGVdOwotCi0gICAgICAgICAgICAgIGlm ICghZCkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgICAgdmFyIHRyZWVJ bmZvID0gbm9kZS5nZXRUcmVlTm9kZUhpZXJhcmNoeS5hcHBseShub2RlLCBbaV0pOwotCi0gICAg ICAgICAgICAgIHZhciBuZXdNb2RlbCA9IG5ldyBSZXN0b3JlT2JqZWN0TW9kZWwoewotICAgICAg ICAgICAgICAgICAgbm9kZV9kYXRhOiBub2RlLAotICAgICAgICAgICAgICAgIH0sIHsKLSAgICAg ICAgICAgICAgICAgIG5vZGVfaW5mbzogdHJlZUluZm8sCi0gICAgICAgICAgICAgICAgfSksCi0g ICAgICAgICAgICAgICAgZmllbGRzID0gQmFja2Zvcm0uZ2VuZXJhdGVWaWV3U2NoZW1hKAotICAg ICAgICAgICAgICAgICAgdHJlZUluZm8sIG5ld01vZGVsLCAnY3JlYXRlJywgbm9kZSwgdHJlZUlu Zm8uc2VydmVyLCB0cnVlCi0gICAgICAgICAgICAgICAgKTsKLQotICAgICAgICAgICAgICB2YXIg dmlldyA9IHRoaXMudmlldyA9IG5ldyBCYWNrZm9ybS5EaWFsb2coewotICAgICAgICAgICAgICAg IGVsOiAkY29udGFpbmVyLAotICAgICAgICAgICAgICAgIG1vZGVsOiBuZXdNb2RlbCwKLSAgICAg ICAgICAgICAgICBzY2hlbWE6IGZpZWxkcywKLSAgICAgICAgICAgICAgfSk7Ci0KLSAgICAgICAg ICAgICAgJCh0aGlzLmVsZW1lbnRzLmJvZHkuY2hpbGROb2Rlc1swXSkuYWRkQ2xhc3MoCi0gICAg ICAgICAgICAgICAgJ2FsZXJ0aWZ5X3Rvb2xzX2RpYWxvZ19wcm9wZXJ0aWVzIG9ial9wcm9wZXJ0 aWVzJwotICAgICAgICAgICAgICApOwotCi0gICAgICAgICAgICAgIHZpZXcucmVuZGVyKCk7Ci0K LSAgICAgICAgICAgICAgdGhpcy5lbGVtZW50cy5jb250ZW50LmFwcGVuZENoaWxkKCRjb250YWlu ZXIuZ2V0KDApKTsKLQotICAgICAgICAgICAgICB2aWV3LiRlbC5hdHRyKCd0YWJpbmRleCcsIC0x KTsKLSAgICAgICAgICAgICAgLy8gdmFyIGRpYWxvZ1RhYk5hdmlnYXRvciA9IHBnQnJvd3Nlci5r ZXlib2FyZE5hdmlnYXRpb24uZ2V0RGlhbG9nVGFiTmF2aWdhdG9yKHZpZXcpOwotICAgICAgICAg ICAgICBwZ0Jyb3dzZXIua2V5Ym9hcmROYXZpZ2F0aW9uLmdldERpYWxvZ1RhYk5hdmlnYXRvcih2 aWV3KTsKLSAgICAgICAgICAgICAgdmFyIGNvbnRhaW5lciA9IHZpZXcuJGVsLmZpbmQoJy50YWIt Y29udGVudDpmaXJzdCA+IC50YWItcGFuZS5hY3RpdmU6Zmlyc3QnKTsKLSAgICAgICAgICAgICAg Y29tbW9uVXRpbHMuZmluZEFuZFNldEZvY3VzKGNvbnRhaW5lcik7Ci0KLSAgICAgICAgICAgICAg Ly8gTGlzdGVuIHRvIG1vZGVsICYgaWYgZmlsZW5hbWUgaXMgcHJvdmlkZWQgdGhlbiBlbmFibGUg QmFja3VwIGJ1dHRvbgotICAgICAgICAgICAgICB0aGlzLnZpZXcubW9kZWwub24oJ2NoYW5nZScs IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIGlmICghXy5pc1VuZGVmaW5lZCh0aGlzLmdl dCgnZmlsZScpKSAmJiB0aGlzLmdldCgnZmlsZScpICE9PSAnJykgewotICAgICAgICAgICAgICAg ICAgdGhpcy5lcnJvck1vZGVsLmNsZWFyKCk7Ci0gICAgICAgICAgICAgICAgICBzZWxmLl9faW50 ZXJuYWwuYnV0dG9uc1syXS5lbGVtZW50LmRpc2FibGVkID0gZmFsc2U7Ci0gICAgICAgICAgICAg ICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgIHNlbGYuX19pbnRlcm5hbC5idXR0b25zWzJd LmVsZW1lbnQuZGlzYWJsZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgdGhpcy5lcnJvck1v ZGVsLnNldCgnZmlsZScsIGdldHRleHQoJ1BsZWFzZSBwcm92aWRlIGZpbGVuYW1lJykpOwotICAg ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgfSk7Ci0KLSAgICAgICAgICAgIH0sCi0gICAg ICAgICAgICAvLyBDYWxsYmFjayBmdW5jdGlvbnMgd2hlbiBjbGljayBvbiB0aGUgYnV0dG9ucyBv ZiB0aGUgQWxlcnRpZnkgZGlhbG9ncwotICAgICAgICAgICAgY2FsbGJhY2s6IGZ1bmN0aW9uKGUp IHsKLSAgICAgICAgICAgICAgLy8gRmV0Y2ggY3VycmVudCBzZXJ2ZXIgaWQKLSAgICAgICAgICAg ICAgdmFyIHQgPSBwZ0Jyb3dzZXIudHJlZSwKLSAgICAgICAgICAgICAgICBpID0gdGhpcy5zZXR0 aW5nc1sncGdfaXRlbSddIHx8IHQuc2VsZWN0ZWQoKSwKLSAgICAgICAgICAgICAgICBkID0gdGhp cy5zZXR0aW5nc1sncGdfaXRlbV9kYXRhJ10gfHwgKAotICAgICAgICAgICAgICAgICAgaSAmJiBp Lmxlbmd0aCA9PSAxID8gdC5pdGVtRGF0YShpKSA6IHVuZGVmaW5lZAotICAgICAgICAgICAgICAg ICksCi0gICAgICAgICAgICAgICAgbm9kZSA9IHRoaXMuc2V0dGluZ3NbJ3BnX25vZGUnXSB8fCAo Ci0gICAgICAgICAgICAgICAgICBkICYmIHBnQnJvd3Nlci5Ob2Rlc1tkLl90eXBlXQotICAgICAg ICAgICAgICAgICk7Ci0KLSAgICAgICAgICAgICAgaWYgKGUuYnV0dG9uLmVsZW1lbnQubmFtZSA9 PSAnZGlhbG9nX2hlbHAnIHx8IGUuYnV0dG9uLmVsZW1lbnQubmFtZSA9PSAnb2JqZWN0X2hlbHAn KSB7Ci0gICAgICAgICAgICAgICAgZS5jYW5jZWwgPSB0cnVlOwotICAgICAgICAgICAgICAgIHBn QnJvd3Nlci5zaG93SGVscChlLmJ1dHRvbi5lbGVtZW50Lm5hbWUsIGUuYnV0dG9uLmVsZW1lbnQu Z2V0QXR0cmlidXRlKCd1cmwnKSwKLSAgICAgICAgICAgICAgICAgIG5vZGUsIGksIGUuYnV0dG9u LmVsZW1lbnQuZ2V0QXR0cmlidXRlKCdsYWJlbCcpKTsKLSAgICAgICAgICAgICAgICByZXR1cm47 Ci0gICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICBpZiAoZS5idXR0b25bJ2RhdGEtYnRu LW5hbWUnXSA9PT0gJ3Jlc3RvcmUnKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFkKQotICAgICAg ICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICAgICAgdmFyIGluZm8gPSBub2RlLmdl dFRyZWVOb2RlSGllcmFyY2h5LmFwcGx5KG5vZGUsIFtpXSksCi0gICAgICAgICAgICAgICAgICBt ID0gdGhpcy52aWV3Lm1vZGVsOwotICAgICAgICAgICAgICAgIC8vIFNldCBjdXJyZW50IG5vZGUg aW5mbyBpbnRvIG1vZGVsCi0gICAgICAgICAgICAgICAgbS5zZXQoJ2RhdGFiYXNlJywgaW5mby5k YXRhYmFzZS5fbGFiZWwpOwotICAgICAgICAgICAgICAgIGlmICghbS5nZXQoJ2N1c3RvbScpKSB7 Ci0gICAgICAgICAgICAgICAgICBzd2l0Y2ggKGQuX3R5cGUpIHsKLSAgICAgICAgICAgICAgICAg IGNhc2UgJ3NjaGVtYSc6Ci0gICAgICAgICAgICAgICAgICAgIG0uc2V0KCdzY2hlbWFzJywgW2Qu X2xhYmVsXSk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAg Y2FzZSAndGFibGUnOgotICAgICAgICAgICAgICAgICAgICBtLnNldCgnc2NoZW1hcycsIFtpbmZv LnNjaGVtYS5fbGFiZWxdKTsKLSAgICAgICAgICAgICAgICAgICAgbS5zZXQoJ3RhYmxlcycsIFtk Ll9sYWJlbF0pOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAg IGNhc2UgJ2Z1bmN0aW9uJzoKLSAgICAgICAgICAgICAgICAgICAgbS5zZXQoJ3NjaGVtYXMnLCBb aW5mby5zY2hlbWEuX2xhYmVsXSk7Ci0gICAgICAgICAgICAgICAgICAgIG0uc2V0KCdmdW5jdGlv bnMnLCBbZC5fbGFiZWxdKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg ICAgICAgICBjYXNlICdpbmRleCc6Ci0gICAgICAgICAgICAgICAgICAgIG0uc2V0KCdzY2hlbWFz JywgW2luZm8uc2NoZW1hLl9sYWJlbF0pOwotICAgICAgICAgICAgICAgICAgICBtLnNldCgnaW5k ZXhlcycsIFtkLl9sYWJlbF0pOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg ICAgICAgICAgIGNhc2UgJ3RyaWdnZXInOgotICAgICAgICAgICAgICAgICAgICBtLnNldCgnc2No ZW1hcycsIFtpbmZvLnNjaGVtYS5fbGFiZWxdKTsKLSAgICAgICAgICAgICAgICAgICAgbS5zZXQo J3RyaWdnZXJzJywgW2QuX2xhYmVsXSk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAg ICAgICAgICAgICAgICAgY2FzZSAndHJpZ2dlcl9mdW5jJzoKLSAgICAgICAgICAgICAgICAgICAg bS5zZXQoJ3NjaGVtYXMnLCBbaW5mby5zY2hlbWEuX2xhYmVsXSk7Ci0gICAgICAgICAgICAgICAg ICAgIG0uc2V0KCd0cmlnZ2VyX2Z1bmNzJywgW2QuX2xhYmVsXSk7Ci0gICAgICAgICAgICAgICAg ICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0gZWxzZSB7 Ci0gICAgICAgICAgICAgICAgICAvLyBUT0RPOjoKLSAgICAgICAgICAgICAgICAgIC8vIFdoZW4g d2Ugd2lsbCBpbXBsZW1lbnQgdGhlIG9iamVjdCBzZWxlY3Rpb24gaW4gdGhlCi0gICAgICAgICAg ICAgICAgICAvLyBpbXBvcnQgZGlhbG9nLCB3ZSB3aWxsIG5lZWQgdG8gc2VsZWN0IHRoZSBvYmpl Y3RzIGZyb20KLSAgICAgICAgICAgICAgICAgIC8vIHRoZSB0cmVlIHNlbGVjdGlvbiB0YWIuCi0g ICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgdmFyIHNlbGYgPSB0aGlzLAotICAg ICAgICAgICAgICAgICAgYmFzZVVybCA9IHVybF9mb3IoJ3Jlc3RvcmUuY3JlYXRlX2pvYicsIHsK LSAgICAgICAgICAgICAgICAgICAgJ3NpZCc6IGluZm8uc2VydmVyLl9pZCwKLSAgICAgICAgICAg ICAgICAgIH0pLAotICAgICAgICAgICAgICAgICAgYXJncyA9IHRoaXMudmlldy5tb2RlbC50b0pT T04oKTsKLQotICAgICAgICAgICAgICAgICQuYWpheCh7Ci0gICAgICAgICAgICAgICAgICB1cmw6 IGJhc2VVcmwsCi0gICAgICAgICAgICAgICAgICBtZXRob2Q6ICdQT1NUJywKLSAgICAgICAgICAg ICAgICAgIGRhdGE6IHsKLSAgICAgICAgICAgICAgICAgICAgJ2RhdGEnOiBKU09OLnN0cmluZ2lm eShhcmdzKSwKLSAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICBzdWNjZXNz OiBmdW5jdGlvbihyZXMpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHJlcy5zdWNjZXNzKSB7 Ci0gICAgICAgICAgICAgICAgICAgICAgYWxlcnRpZnkuc3VjY2VzcygKLSAgICAgICAgICAgICAg ICAgICAgICAgIGdldHRleHQoJ1Jlc3RvcmUgam9iIGNyZWF0ZWQuJyksIDUKLSAgICAgICAgICAg ICAgICAgICAgICApOwotICAgICAgICAgICAgICAgICAgICAgIHBnQnJvd3Nlci5FdmVudHMudHJp Z2dlcigncGdhZG1pbi1iZ3Byb2Nlc3M6Y3JlYXRlZCcsIHNlbGYpOwotICAgICAgICAgICAgICAg ICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihyZXMpOwot ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAg ICAgICAgZXJyb3I6IGZ1bmN0aW9uKHhocikgewotICAgICAgICAgICAgICAgICAgICB0cnkgewot ICAgICAgICAgICAgICAgICAgICAgIHZhciBlcnIgPSBKU09OLnBhcnNlKHhoci5yZXNwb25zZVRl eHQpOwotICAgICAgICAgICAgICAgICAgICAgIGFsZXJ0aWZ5LmFsZXJ0KAotICAgICAgICAgICAg ICAgICAgICAgICAgZ2V0dGV4dCgnUmVzdG9yZSBmYWlsZWQuJyksCi0gICAgICAgICAgICAgICAg ICAgICAgICBlcnIuZXJyb3Jtc2cKLSAgICAgICAgICAgICAgICAgICAgICApOwotICAgICAgICAg ICAgICAgICAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgY29uc29sZS53 YXJuKGUuc3RhY2sgfHwgZSk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg ICAgIH0sCi0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAg IH0sCi0gICAgICAgICAgfTsKLSAgICAgICAgfSk7Ci0gICAgICB9Ci0KLSAgICAgIGFsZXJ0aWZ5 LnBnX3Jlc3RvcmUodGl0bGUsIGl0ZW0sIGRhdGEsIG5vZGUpLnJlc2l6ZVRvKCc2NSUnLCAnNjAl Jyk7CisgICAgICBsZXQgZGlhbG9nID0gbmV3IHJlc3RvcmVEaWFsb2cuUmVzdG9yZURpYWxvZygK KyAgICAgICAgcGdCcm93c2VyLCAkLCBhbGVydGlmeSwgUmVzdG9yZU9iamVjdE1vZGVsCisgICAg ICApOworICAgICAgZGlhbG9nLmRyYXcoYWN0aW9uLCB0cmVlSXRlbSk7CiAgICAgfSwKICAgfTsK ICAgcmV0dXJuIHBnQnJvd3Nlci5SZXN0b3JlOwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9v bHMvcmVzdG9yZS9zdGF0aWMvanMvcmVzdG9yZS5qcy5yZWogYi93ZWIvcGdhZG1pbi90b29scy9y ZXN0b3JlL3N0YXRpYy9qcy9yZXN0b3JlLmpzLnJlagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMC4uNDM1NzdmNDIKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi90b29s cy9yZXN0b3JlL3N0YXRpYy9qcy9yZXN0b3JlLmpzLnJlagpAQCAtMCwwICsxLDMyMiBAQAorZGlm ZiBhL3dlYi9wZ2FkbWluL3Rvb2xzL3Jlc3RvcmUvc3RhdGljL2pzL3Jlc3RvcmUuanMgYi93ZWIv cGdhZG1pbi90b29scy9yZXN0b3JlL3N0YXRpYy9qcy9yZXN0b3JlLmpzCShyZWplY3RlZCBodW5r cykKK0BAIC0zOTEsMzE4ICszNDQsOCBAQCBjb21tb25VdGlscworICAgICB9LAorICAgICAvLyBD YWxsYmFjayB0byBkcmF3IEJhY2t1cCBEaWFsb2cgZm9yIG9iamVjdHMKKyAgICAgcmVzdG9yZV9v YmplY3RzOiBmdW5jdGlvbihhY3Rpb24sIHRyZWVJdGVtKSB7CistCistICAgICAgdmFyIGkgPSB0 cmVlSXRlbSB8fCBwZ0Jyb3dzZXIudHJlZS5zZWxlY3RlZCgpLAorLSAgICAgICAgc2VydmVyX2Rh dGEgPSBudWxsOworLQorLSAgICAgIHdoaWxlIChpKSB7CistICAgICAgICB2YXIgbm9kZV9kYXRh ID0gcGdCcm93c2VyLnRyZWUuaXRlbURhdGEoaSk7CistICAgICAgICBpZiAobm9kZV9kYXRhLl90 eXBlID09ICdzZXJ2ZXInKSB7CistICAgICAgICAgIHNlcnZlcl9kYXRhID0gbm9kZV9kYXRhOwor LSAgICAgICAgICBicmVhazsKKy0gICAgICAgIH0KKy0KKy0gICAgICAgIGlmIChwZ0Jyb3dzZXIu dHJlZS5oYXNQYXJlbnQoaSkpIHsKKy0gICAgICAgICAgaSA9ICQocGdCcm93c2VyLnRyZWUucGFy ZW50KGkpKTsKKy0gICAgICAgIH0gZWxzZSB7CistICAgICAgICAgIGFsZXJ0aWZ5LmFsZXJ0KAor LSAgICAgICAgICAgIGdldHRleHQoJ1Jlc3RvcmUgRXJyb3InKSwKKy0gICAgICAgICAgICBnZXR0 ZXh0KCdQbGVhc2Ugc2VsZWN0IHNlcnZlciBvciBjaGlsZCBub2RlIGZyb20gdHJlZS4nKQorLSAg ICAgICAgICApOworLSAgICAgICAgICBicmVhazsKKy0gICAgICAgIH0KKy0gICAgICB9CistCist ICAgICAgaWYgKCFzZXJ2ZXJfZGF0YSkgeworLSAgICAgICAgcmV0dXJuOworLSAgICAgIH0KKy0K Ky0gICAgICB2YXIgbW9kdWxlID0gJ3BhdGhzJywKKy0gICAgICAgIHByZWZlcmVuY2VfbmFtZSA9 ICdwZ19iaW5fZGlyJywKKy0gICAgICAgIG1zZyA9IGdldHRleHQoJ1BsZWFzZSBjb25maWd1cmUg dGhlIFBvc3RncmVTUUwgQmluYXJ5IFBhdGggaW4gdGhlIFByZWZlcmVuY2VzIGRpYWxvZy4nKTsK Ky0KKy0gICAgICBpZiAoKHNlcnZlcl9kYXRhLnR5cGUgJiYgc2VydmVyX2RhdGEudHlwZSA9PSAn cHBhcycpIHx8CistICAgICAgICBzZXJ2ZXJfZGF0YS5zZXJ2ZXJfdHlwZSA9PSAncHBhcycpIHsK Ky0gICAgICAgIHByZWZlcmVuY2VfbmFtZSA9ICdwcGFzX2Jpbl9kaXInOworLSAgICAgICAgbXNn ID0gZ2V0dGV4dCgnUGxlYXNlIGNvbmZpZ3VyZSB0aGUgRURCIEFkdmFuY2VkIFNlcnZlciBCaW5h cnkgUGF0aCBpbiB0aGUgUHJlZmVyZW5jZXMgZGlhbG9nLicpOworLSAgICAgIH0KKy0KKy0gICAg ICB2YXIgcHJlZmVyZW5jZSA9IHBnQnJvd3Nlci5nZXRfcHJlZmVyZW5jZShtb2R1bGUsIHByZWZl cmVuY2VfbmFtZSk7CistCistICAgICAgaWYgKHByZWZlcmVuY2UpIHsKKy0gICAgICAgIGlmICgh cHJlZmVyZW5jZS52YWx1ZSkgeworLSAgICAgICAgICBhbGVydGlmeS5hbGVydChnZXR0ZXh0KCdD b25maWd1cmF0aW9uIHJlcXVpcmVkJyksIG1zZyk7CistICAgICAgICAgIHJldHVybjsKKy0gICAg ICAgIH0KKy0gICAgICB9IGVsc2UgeworLSAgICAgICAgYWxlcnRpZnkuYWxlcnQoCistICAgICAg ICAgIGdldHRleHQoJ1Jlc3RvcmUgRXJyb3InKSwKKy0gICAgICAgICAgUyhnZXR0ZXh0KCdGYWls ZWQgdG8gbG9hZCBwcmVmZXJlbmNlICVzIG9mIG1vZHVsZSAlcycpKS5zcHJpbnRmKHByZWZlcmVu Y2VfbmFtZSwgbW9kdWxlKS52YWx1ZSgpCistICAgICAgICApOworLSAgICAgICAgcmV0dXJuOwor LSAgICAgIH0KKy0KKy0gICAgICB2YXIgdGl0bGUgPSBTKGdldHRleHQoJ1Jlc3RvcmUgKCVzOiAl cyknKSksCistICAgICAgICB0cmVlID0gcGdCcm93c2VyLnRyZWUsCistICAgICAgICBpdGVtID0g dHJlZUl0ZW0gfHwgdHJlZS5zZWxlY3RlZCgpLAorLSAgICAgICAgZGF0YSA9IGl0ZW0gJiYgaXRl bS5sZW5ndGggPT0gMSAmJiB0cmVlLml0ZW1EYXRhKGl0ZW0pLAorLSAgICAgICAgbm9kZSA9IGRh dGEgJiYgZGF0YS5fdHlwZSAmJiBwZ0Jyb3dzZXIuTm9kZXNbZGF0YS5fdHlwZV07CistCistICAg ICAgaWYgKCFub2RlKQorLSAgICAgICAgcmV0dXJuOworLQorLSAgICAgIHZhciB0cmVlSW5mbyA9 IG5vZGUuZ2V0VHJlZU5vZGVIaWVyYXJjaHkuYXBwbHkobm9kZSwgW2l0ZW1dKTsKKy0KKy0gICAg ICBpZiAodHJlZUluZm8uZGF0YWJhc2UuX2xhYmVsLmluZGV4T2YoJz0nKSA+PSAwKSB7CistICAg ICAgICBhbGVydGlmeS5hbGVydCgKKy0gICAgICAgICAgZ2V0dGV4dCgnUmVzdG9yZSBlcnJvcicp LAorLSAgICAgICAgICBnZXR0ZXh0KCdSZXN0b3JlIGpvYiBjcmVhdGlvbiBmYWlsZWQuICcrCist ICAgICAgICAgICdEYXRhYmFzZXMgd2l0aCA9IHN5bWJvbHMgaW4gdGhlIG5hbWUgY2Fubm90IGJl IHJlc3RvcmVkIHVzaW5nIHRoaXMgdXRpbGl0eS4nKQorLSAgICAgICAgKTsKKy0gICAgICAgIHJl dHVybjsKKy0gICAgICB9CistCistICAgICAgdGl0bGUgPSB0aXRsZS5zcHJpbnRmKG5vZGUubGFi ZWwsIGRhdGEubGFiZWwpLnZhbHVlKCk7CistCistICAgICAgaWYgKCFhbGVydGlmeS5wZ19yZXN0 b3JlKSB7CistICAgICAgICAvLyBDcmVhdGUgRGlhbG9nIHRpdGxlIG9uIHRoZSBmbHkgd2l0aCBu b2RlIGRldGFpbHMKKy0gICAgICAgIGFsZXJ0aWZ5LmRpYWxvZygncGdfcmVzdG9yZScsIGZ1bmN0 aW9uIGZhY3RvcnkoKSB7CistICAgICAgICAgIHJldHVybiB7CistICAgICAgICAgICAgbWFpbjog ZnVuY3Rpb24odGl0bGUsIGl0ZW0sIGRhdGEsIG5vZGUpIHsKKy0gICAgICAgICAgICAgIHRoaXMu c2V0KCd0aXRsZScsIHRpdGxlKTsKKy0gICAgICAgICAgICAgIHRoaXMuc2V0dGluZygncGdfbm9k ZScsIG5vZGUpOworLSAgICAgICAgICAgICAgdGhpcy5zZXR0aW5nKCdwZ19pdGVtJywgaXRlbSk7 CistICAgICAgICAgICAgICB0aGlzLnNldHRpbmcoJ3BnX2l0ZW1fZGF0YScsIGRhdGEpOworLSAg ICAgICAgICAgIH0sCistICAgICAgICAgICAgYnVpbGQ6IGZ1bmN0aW9uKCkgeworLSAgICAgICAg ICAgICAgYWxlcnRpZnkucGdEaWFsb2dCdWlsZC5hcHBseSh0aGlzKTsKKy0gICAgICAgICAgICB9 LAorLSAgICAgICAgICAgIHNldHVwOiBmdW5jdGlvbigpIHsKKy0gICAgICAgICAgICAgIHJldHVy biB7CistICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFt7CistICAgICAgICAgICAgICAgICAgdGV4 dDogJycsCistICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnYnRuIGJ0bi1kZWZhdWx0IHB1 bGwtbGVmdCBmYSBmYS1sZyBmYS1pbmZvJywKKy0gICAgICAgICAgICAgICAgICBhdHRyczogewor LSAgICAgICAgICAgICAgICAgICAgbmFtZTogJ29iamVjdF9oZWxwJywKKy0gICAgICAgICAgICAg ICAgICAgIHR5cGU6ICdidXR0b24nLAorLSAgICAgICAgICAgICAgICAgICAgdXJsOiAnYmFja3Vw Lmh0bWwnLAorLSAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGdldHRleHQoJ1Jlc3RvcmUnKSwK Ky0gICAgICAgICAgICAgICAgICB9LAorLSAgICAgICAgICAgICAgICB9LCB7CistICAgICAgICAg ICAgICAgICAgdGV4dDogJycsCistICAgICAgICAgICAgICAgICAga2V5OiAxMTIsCistICAgICAg ICAgICAgICAgICAgY2xhc3NOYW1lOiAnYnRuIGJ0bi1kZWZhdWx0IHB1bGwtbGVmdCBmYSBmYS1s ZyBmYS1xdWVzdGlvbicsCistICAgICAgICAgICAgICAgICAgYXR0cnM6IHsKKy0gICAgICAgICAg ICAgICAgICAgIG5hbWU6ICdkaWFsb2dfaGVscCcsCistICAgICAgICAgICAgICAgICAgICB0eXBl OiAnYnV0dG9uJywKKy0gICAgICAgICAgICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdSZXN0b3Jl JyksCistICAgICAgICAgICAgICAgICAgICB1cmw6IHVybF9mb3IoJ2hlbHAuc3RhdGljJywgewor LSAgICAgICAgICAgICAgICAgICAgICAnZmlsZW5hbWUnOiAncmVzdG9yZV9kaWFsb2cuaHRtbCcs CistICAgICAgICAgICAgICAgICAgICB9KSwKKy0gICAgICAgICAgICAgICAgICB9LAorLSAgICAg ICAgICAgICAgICB9LCB7CistICAgICAgICAgICAgICAgICAgdGV4dDogZ2V0dGV4dCgnUmVzdG9y ZScpLAorLSAgICAgICAgICAgICAgICAgIGtleTogMTMsCistICAgICAgICAgICAgICAgICAgY2xh c3NOYW1lOiAnYnRuIGJ0bi1wcmltYXJ5IGZhIGZhLXVwbG9hZCBwZy1hbGVydGlmeS1idXR0b24n LAorLSAgICAgICAgICAgICAgICAgIHJlc3RvcmU6IHRydWUsCistICAgICAgICAgICAgICAgICAg J2RhdGEtYnRuLW5hbWUnOiAncmVzdG9yZScsCistICAgICAgICAgICAgICAgIH0sIHsKKy0gICAg ICAgICAgICAgICAgICB0ZXh0OiBnZXR0ZXh0KCdDYW5jZWwnKSwKKy0gICAgICAgICAgICAgICAg ICBrZXk6IDI3LAorLSAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2J0biBidG4tZGFuZ2Vy IGZhIGZhLWxnIGZhLXRpbWVzIHBnLWFsZXJ0aWZ5LWJ1dHRvbicsCistICAgICAgICAgICAgICAg ICAgcmVzdG9yZTogZmFsc2UsCistICAgICAgICAgICAgICAgICAgJ2RhdGEtYnRuLW5hbWUnOiAn Y2FuY2VsJywKKy0gICAgICAgICAgICAgICAgfV0sCistICAgICAgICAgICAgICAgIC8vIFNldCBv cHRpb25zIGZvciBkaWFsb2cKKy0gICAgICAgICAgICAgICAgb3B0aW9uczogeworLSAgICAgICAg ICAgICAgICAgIHRpdGxlOiB0aXRsZSwKKy0gICAgICAgICAgICAgICAgICAvL2Rpc2FibGUgYm90 aCBwYWRkaW5nIGFuZCBvdmVyZmxvdyBjb250cm9sLgorLSAgICAgICAgICAgICAgICAgIHBhZGRp bmc6ICExLAorLSAgICAgICAgICAgICAgICAgIG92ZXJmbG93OiAhMSwKKy0gICAgICAgICAgICAg ICAgICBtb2RlbDogMCwKKy0gICAgICAgICAgICAgICAgICByZXNpemFibGU6IHRydWUsCistICAg ICAgICAgICAgICAgICAgbWF4aW1pemFibGU6IHRydWUsCistICAgICAgICAgICAgICAgICAgcGlu bmFibGU6IGZhbHNlLAorLSAgICAgICAgICAgICAgICAgIGNsb3NhYmxlQnlEaW1tZXI6IGZhbHNl LAorLSAgICAgICAgICAgICAgICAgIG1vZGFsOiBmYWxzZSwKKy0gICAgICAgICAgICAgICAgfSwK Ky0gICAgICAgICAgICAgIH07CistICAgICAgICAgICAgfSwKKy0gICAgICAgICAgICBob29rczog eworLSAgICAgICAgICAgICAgLy8gdHJpZ2dlcmVkIHdoZW4gdGhlIGRpYWxvZyBpcyBjbG9zZWQK Ky0gICAgICAgICAgICAgIG9uY2xvc2U6IGZ1bmN0aW9uKCkgeworLSAgICAgICAgICAgICAgICBp ZiAodGhpcy52aWV3KSB7CistICAgICAgICAgICAgICAgICAgdGhpcy52aWV3LnJlbW92ZSh7Cist ICAgICAgICAgICAgICAgICAgICBkYXRhOiB0cnVlLAorLSAgICAgICAgICAgICAgICAgICAgaW50 ZXJuYWw6IHRydWUsCistICAgICAgICAgICAgICAgICAgICBzaWxlbnQ6IHRydWUsCistICAgICAg ICAgICAgICAgICAgfSk7CistICAgICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICAgIH0sCist ICAgICAgICAgICAgfSwKKy0gICAgICAgICAgICBzZXR0aW5nczogeworLSAgICAgICAgICAgICAg cGdfbm9kZTogbnVsbCwKKy0gICAgICAgICAgICAgIHBnX2l0ZW06IG51bGwsCistICAgICAgICAg ICAgICBwZ19pdGVtX2RhdGE6IG51bGwsCistICAgICAgICAgICAgfSwKKy0gICAgICAgICAgICBw cmVwYXJlOiBmdW5jdGlvbigpIHsKKy0KKy0gICAgICAgICAgICAgIHZhciBzZWxmID0gdGhpczsK Ky0gICAgICAgICAgICAgIC8vIERpc2FibGUgQmFja3VwIGJ1dHRvbiB1bnRpbCB1c2VyIHByb3Zp ZGVzIEZpbGVuYW1lCistICAgICAgICAgICAgICB0aGlzLl9faW50ZXJuYWwuYnV0dG9uc1syXS5l bGVtZW50LmRpc2FibGVkID0gdHJ1ZTsKKy0gICAgICAgICAgICAgIHZhciAkY29udGFpbmVyID0g JCgnPGRpdiBjbGFzcz1cJ3Jlc3RvcmVfZGlhbG9nXCc+PC9kaXY+Jyk7CistICAgICAgICAgICAg ICB2YXIgdCA9IHBnQnJvd3Nlci50cmVlLAorLSAgICAgICAgICAgICAgICBpID0gdC5zZWxlY3Rl ZCgpLAorLSAgICAgICAgICAgICAgICBkID0gaSAmJiBpLmxlbmd0aCA9PSAxID8gdC5pdGVtRGF0 YShpKSA6IHVuZGVmaW5lZCwKKy0gICAgICAgICAgICAgICAgbm9kZSA9IGQgJiYgcGdCcm93c2Vy Lk5vZGVzW2QuX3R5cGVdOworLQorLSAgICAgICAgICAgICAgaWYgKCFkKQorLSAgICAgICAgICAg ICAgICByZXR1cm47CistCistICAgICAgICAgICAgICB2YXIgdHJlZUluZm8gPSBub2RlLmdldFRy ZWVOb2RlSGllcmFyY2h5LmFwcGx5KG5vZGUsIFtpXSk7CistCistICAgICAgICAgICAgICB2YXIg bmV3TW9kZWwgPSBuZXcgUmVzdG9yZU9iamVjdE1vZGVsKHsKKy0gICAgICAgICAgICAgICAgICBu b2RlX2RhdGE6IG5vZGUsCistICAgICAgICAgICAgICAgIH0sIHsKKy0gICAgICAgICAgICAgICAg ICBub2RlX2luZm86IHRyZWVJbmZvLAorLSAgICAgICAgICAgICAgICB9KSwKKy0gICAgICAgICAg ICAgICAgZmllbGRzID0gQmFja2Zvcm0uZ2VuZXJhdGVWaWV3U2NoZW1hKAorLSAgICAgICAgICAg ICAgICAgIHRyZWVJbmZvLCBuZXdNb2RlbCwgJ2NyZWF0ZScsIG5vZGUsIHRyZWVJbmZvLnNlcnZl ciwgdHJ1ZQorLSAgICAgICAgICAgICAgICApOworLQorLSAgICAgICAgICAgICAgdmFyIHZpZXcg PSB0aGlzLnZpZXcgPSBuZXcgQmFja2Zvcm0uRGlhbG9nKHsKKy0gICAgICAgICAgICAgICAgZWw6 ICRjb250YWluZXIsCistICAgICAgICAgICAgICAgIG1vZGVsOiBuZXdNb2RlbCwKKy0gICAgICAg ICAgICAgICAgc2NoZW1hOiBmaWVsZHMsCistICAgICAgICAgICAgICB9KTsKKy0KKy0gICAgICAg ICAgICAgICQodGhpcy5lbGVtZW50cy5ib2R5LmNoaWxkTm9kZXNbMF0pLmFkZENsYXNzKAorLSAg ICAgICAgICAgICAgICAnYWxlcnRpZnlfdG9vbHNfZGlhbG9nX3Byb3BlcnRpZXMgb2JqX3Byb3Bl cnRpZXMnCistICAgICAgICAgICAgICApOworLQorLSAgICAgICAgICAgICAgdmlldy5yZW5kZXIo KTsKKy0KKy0gICAgICAgICAgICAgIHRoaXMuZWxlbWVudHMuY29udGVudC5hcHBlbmRDaGlsZCgk Y29udGFpbmVyLmdldCgwKSk7CistCistICAgICAgICAgICAgICB2aWV3LiRlbC5hdHRyKCd0YWJp bmRleCcsIC0xKTsKKy0gICAgICAgICAgICAgIC8vIHZhciBkaWFsb2dUYWJOYXZpZ2F0b3IgPSBw Z0Jyb3dzZXIua2V5Ym9hcmROYXZpZ2F0aW9uLmdldERpYWxvZ1RhYk5hdmlnYXRvcih2aWV3KTsK Ky0gICAgICAgICAgICAgIHBnQnJvd3Nlci5rZXlib2FyZE5hdmlnYXRpb24uZ2V0RGlhbG9nVGFi TmF2aWdhdG9yKHZpZXcpOworLSAgICAgICAgICAgICAgdmFyIGNvbnRhaW5lciA9IHZpZXcuJGVs LmZpbmQoJy50YWItY29udGVudDpmaXJzdCA+IC50YWItcGFuZS5hY3RpdmU6Zmlyc3QnKTsKKy0g ICAgICAgICAgICAgIGNvbW1vblV0aWxzLmZpbmRBbmRTZXRGb2N1cyhjb250YWluZXIpOworLQor LSAgICAgICAgICAgICAgLy8gTGlzdGVuIHRvIG1vZGVsICYgaWYgZmlsZW5hbWUgaXMgcHJvdmlk ZWQgdGhlbiBlbmFibGUgQmFja3VwIGJ1dHRvbgorLSAgICAgICAgICAgICAgdGhpcy52aWV3Lm1v ZGVsLm9uKCdjaGFuZ2UnLCBmdW5jdGlvbigpIHsKKy0gICAgICAgICAgICAgICAgaWYgKCFfLmlz VW5kZWZpbmVkKHRoaXMuZ2V0KCdmaWxlJykpICYmIHRoaXMuZ2V0KCdmaWxlJykgIT09ICcnKSB7 CistICAgICAgICAgICAgICAgICAgdGhpcy5lcnJvck1vZGVsLmNsZWFyKCk7CistICAgICAgICAg ICAgICAgICAgc2VsZi5fX2ludGVybmFsLmJ1dHRvbnNbMl0uZWxlbWVudC5kaXNhYmxlZCA9IGZh bHNlOworLSAgICAgICAgICAgICAgICB9IGVsc2UgeworLSAgICAgICAgICAgICAgICAgIHNlbGYu X19pbnRlcm5hbC5idXR0b25zWzJdLmVsZW1lbnQuZGlzYWJsZWQgPSB0cnVlOworLSAgICAgICAg ICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC5zZXQoJ2ZpbGUnLCBnZXR0ZXh0KCdQbGVhc2UgcHJv dmlkZSBmaWxlbmFtZScpKTsKKy0gICAgICAgICAgICAgICAgfQorLSAgICAgICAgICAgICAgfSk7 CistCistICAgICAgICAgICAgfSwKKy0gICAgICAgICAgICAvLyBDYWxsYmFjayBmdW5jdGlvbnMg d2hlbiBjbGljayBvbiB0aGUgYnV0dG9ucyBvZiB0aGUgQWxlcnRpZnkgZGlhbG9ncworLSAgICAg ICAgICAgIGNhbGxiYWNrOiBmdW5jdGlvbihlKSB7CistICAgICAgICAgICAgICAvLyBGZXRjaCBj dXJyZW50IHNlcnZlciBpZAorLSAgICAgICAgICAgICAgdmFyIHQgPSBwZ0Jyb3dzZXIudHJlZSwK Ky0gICAgICAgICAgICAgICAgaSA9IHRoaXMuc2V0dGluZ3NbJ3BnX2l0ZW0nXSB8fCB0LnNlbGVj dGVkKCksCistICAgICAgICAgICAgICAgIGQgPSB0aGlzLnNldHRpbmdzWydwZ19pdGVtX2RhdGEn XSB8fCAoCistICAgICAgICAgICAgICAgICAgaSAmJiBpLmxlbmd0aCA9PSAxID8gdC5pdGVtRGF0 YShpKSA6IHVuZGVmaW5lZAorLSAgICAgICAgICAgICAgICApLAorLSAgICAgICAgICAgICAgICBu b2RlID0gdGhpcy5zZXR0aW5nc1sncGdfbm9kZSddIHx8ICgKKy0gICAgICAgICAgICAgICAgICBk ICYmIHBnQnJvd3Nlci5Ob2Rlc1tkLl90eXBlXQorLSAgICAgICAgICAgICAgICApOworLQorLSAg ICAgICAgICAgICAgaWYgKGUuYnV0dG9uLmVsZW1lbnQubmFtZSA9PSAnZGlhbG9nX2hlbHAnIHx8 IGUuYnV0dG9uLmVsZW1lbnQubmFtZSA9PSAnb2JqZWN0X2hlbHAnKSB7CistICAgICAgICAgICAg ICAgIGUuY2FuY2VsID0gdHJ1ZTsKKy0gICAgICAgICAgICAgICAgcGdCcm93c2VyLnNob3dIZWxw KGUuYnV0dG9uLmVsZW1lbnQubmFtZSwgZS5idXR0b24uZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ3Vy bCcpLAorLSAgICAgICAgICAgICAgICAgIG5vZGUsIGksIGUuYnV0dG9uLmVsZW1lbnQuZ2V0QXR0 cmlidXRlKCdsYWJlbCcpKTsKKy0gICAgICAgICAgICAgICAgcmV0dXJuOworLSAgICAgICAgICAg ICAgfQorLQorLSAgICAgICAgICAgICAgaWYgKGUuYnV0dG9uWydkYXRhLWJ0bi1uYW1lJ10gPT09 ICdyZXN0b3JlJykgeworLSAgICAgICAgICAgICAgICBpZiAoIWQpCistICAgICAgICAgICAgICAg ICAgcmV0dXJuOworLQorLSAgICAgICAgICAgICAgICB2YXIgaW5mbyA9IG5vZGUuZ2V0VHJlZU5v ZGVIaWVyYXJjaHkuYXBwbHkobm9kZSwgW2ldKSwKKy0gICAgICAgICAgICAgICAgICBtID0gdGhp cy52aWV3Lm1vZGVsOworLSAgICAgICAgICAgICAgICAvLyBTZXQgY3VycmVudCBub2RlIGluZm8g aW50byBtb2RlbAorLSAgICAgICAgICAgICAgICBtLnNldCgnZGF0YWJhc2UnLCBpbmZvLmRhdGFi YXNlLl9sYWJlbCk7CistICAgICAgICAgICAgICAgIGlmICghbS5nZXQoJ2N1c3RvbScpKSB7Cist ICAgICAgICAgICAgICAgICAgc3dpdGNoIChkLl90eXBlKSB7CistICAgICAgICAgICAgICAgICAg Y2FzZSAnc2NoZW1hJzoKKy0gICAgICAgICAgICAgICAgICAgIG0uc2V0KCdzY2hlbWFzJywgW2Qu X2xhYmVsXSk7CistICAgICAgICAgICAgICAgICAgICBicmVhazsKKy0gICAgICAgICAgICAgICAg ICBjYXNlICd0YWJsZSc6CistICAgICAgICAgICAgICAgICAgICBtLnNldCgnc2NoZW1hcycsIFtp bmZvLnNjaGVtYS5fbGFiZWxdKTsKKy0gICAgICAgICAgICAgICAgICAgIG0uc2V0KCd0YWJsZXMn LCBbZC5fbGFiZWxdKTsKKy0gICAgICAgICAgICAgICAgICAgIGJyZWFrOworLSAgICAgICAgICAg ICAgICAgIGNhc2UgJ2Z1bmN0aW9uJzoKKy0gICAgICAgICAgICAgICAgICAgIG0uc2V0KCdzY2hl bWFzJywgW2luZm8uc2NoZW1hLl9sYWJlbF0pOworLSAgICAgICAgICAgICAgICAgICAgbS5zZXQo J2Z1bmN0aW9ucycsIFtkLl9sYWJlbF0pOworLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cist ICAgICAgICAgICAgICAgICAgY2FzZSAnaW5kZXgnOgorLSAgICAgICAgICAgICAgICAgICAgbS5z ZXQoJ3NjaGVtYXMnLCBbaW5mby5zY2hlbWEuX2xhYmVsXSk7CistICAgICAgICAgICAgICAgICAg ICBtLnNldCgnaW5kZXhlcycsIFtkLl9sYWJlbF0pOworLSAgICAgICAgICAgICAgICAgICAgYnJl YWs7CistICAgICAgICAgICAgICAgICAgY2FzZSAndHJpZ2dlcic6CistICAgICAgICAgICAgICAg ICAgICBtLnNldCgnc2NoZW1hcycsIFtpbmZvLnNjaGVtYS5fbGFiZWxdKTsKKy0gICAgICAgICAg ICAgICAgICAgIG0uc2V0KCd0cmlnZ2VycycsIFtkLl9sYWJlbF0pOworLSAgICAgICAgICAgICAg ICAgICAgYnJlYWs7CistICAgICAgICAgICAgICAgICAgY2FzZSAndHJpZ2dlcl9mdW5jJzoKKy0g ICAgICAgICAgICAgICAgICAgIG0uc2V0KCdzY2hlbWFzJywgW2luZm8uc2NoZW1hLl9sYWJlbF0p OworLSAgICAgICAgICAgICAgICAgICAgbS5zZXQoJ3RyaWdnZXJfZnVuY3MnLCBbZC5fbGFiZWxd KTsKKy0gICAgICAgICAgICAgICAgICAgIGJyZWFrOworLSAgICAgICAgICAgICAgICAgIH0KKy0g ICAgICAgICAgICAgICAgfSBlbHNlIHsKKy0gICAgICAgICAgICAgICAgICAvLyBUT0RPOjoKKy0g ICAgICAgICAgICAgICAgICAvLyBXaGVuIHdlIHdpbGwgaW1wbGVtZW50IHRoZSBvYmplY3Qgc2Vs ZWN0aW9uIGluIHRoZQorLSAgICAgICAgICAgICAgICAgIC8vIGltcG9ydCBkaWFsb2csIHdlIHdp bGwgbmVlZCB0byBzZWxlY3QgdGhlIG9iamVjdHMgZnJvbQorLSAgICAgICAgICAgICAgICAgIC8v IHRoZSB0cmVlIHNlbGVjdGlvbiB0YWIuCistICAgICAgICAgICAgICAgIH0KKy0KKy0gICAgICAg ICAgICAgICAgdmFyIHNlbGYgPSB0aGlzLAorLSAgICAgICAgICAgICAgICAgIGJhc2VVcmwgPSB1 cmxfZm9yKCdyZXN0b3JlLmNyZWF0ZV9qb2InLCB7CistICAgICAgICAgICAgICAgICAgICAnc2lk JzogaW5mby5zZXJ2ZXIuX2lkLAorLSAgICAgICAgICAgICAgICAgIH0pLAorLSAgICAgICAgICAg ICAgICAgIGFyZ3MgPSB0aGlzLnZpZXcubW9kZWwudG9KU09OKCk7CistCistICAgICAgICAgICAg ICAgICQuYWpheCh7CistICAgICAgICAgICAgICAgICAgdXJsOiBiYXNlVXJsLAorLSAgICAgICAg ICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLAorLSAgICAgICAgICAgICAgICAgIGRhdGE6IHsKKy0g ICAgICAgICAgICAgICAgICAgICdkYXRhJzogSlNPTi5zdHJpbmdpZnkoYXJncyksCistICAgICAg ICAgICAgICAgICAgfSwKKy0gICAgICAgICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbihyZXMp IHsKKy0gICAgICAgICAgICAgICAgICAgIGlmIChyZXMuc3VjY2VzcykgeworLSAgICAgICAgICAg ICAgICAgICAgICBhbGVydGlmeS5zdWNjZXNzKAorLSAgICAgICAgICAgICAgICAgICAgICAgIGdl dHRleHQoJ1Jlc3RvcmUgam9iIGNyZWF0ZWQuJyksIDUKKy0gICAgICAgICAgICAgICAgICAgICAg KTsKKy0gICAgICAgICAgICAgICAgICAgICAgcGdCcm93c2VyLkV2ZW50cy50cmlnZ2VyKCdwZ2Fk bWluLWJncHJvY2VzczpjcmVhdGVkJywgc2VsZik7CistICAgICAgICAgICAgICAgICAgICB9IGVs c2UgeworLSAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4ocmVzKTsKKy0gICAgICAg ICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICAgICAgICB9LAorLSAgICAgICAgICAgICAgICAg IGVycm9yOiBmdW5jdGlvbih4aHIpIHsKKy0gICAgICAgICAgICAgICAgICAgIHRyeSB7CistICAg ICAgICAgICAgICAgICAgICAgIHZhciBlcnIgPSAkLnBhcnNlSlNPTih4aHIucmVzcG9uc2VUZXh0 KTsKKy0gICAgICAgICAgICAgICAgICAgICAgYWxlcnRpZnkuYWxlcnQoCistICAgICAgICAgICAg ICAgICAgICAgICAgZ2V0dGV4dCgnUmVzdG9yZSBmYWlsZWQuJyksCistICAgICAgICAgICAgICAg ICAgICAgICAgZXJyLmVycm9ybXNnCistICAgICAgICAgICAgICAgICAgICAgICk7CistICAgICAg ICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7CistICAgICAgICAgICAgICAgICAgICAgIGNvbnNv bGUud2FybihlLnN0YWNrIHx8IGUpOworLSAgICAgICAgICAgICAgICAgICAgfQorLSAgICAgICAg ICAgICAgICAgIH0sCistICAgICAgICAgICAgICAgIH0pOworLSAgICAgICAgICAgICAgfQorLSAg ICAgICAgICAgIH0sCistICAgICAgICAgIH07CistICAgICAgICB9KTsKKy0gICAgICB9CistCist ICAgICAgYWxlcnRpZnkucGdfcmVzdG9yZSh0aXRsZSwgaXRlbSwgZGF0YSwgbm9kZSkucmVzaXpl VG8oJzY1JScsICc2MCUnKTsKKysgICAgICBsZXQgZGlhbG9nID0gbmV3IHJlc3RvcmVEaWFsb2cu UmVzdG9yZURpYWxvZyhwZ0Jyb3dzZXIsICQsIGFsZXJ0aWZ5LCBSZXN0b3JlT2JqZWN0TW9kZWwp OworKyAgICAgIGRpYWxvZy5kcmF3KGFjdGlvbiwgdHJlZUl0ZW0pOworICAgICB9LAorICAgfTsK KyAgIHJldHVybiBwZ0Jyb3dzZXIuUmVzdG9yZTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rv b2xzL3Jlc3RvcmUvc3RhdGljL2pzL3Jlc3RvcmVfZGlhbG9nLmpzIGIvd2ViL3BnYWRtaW4vdG9v bHMvcmVzdG9yZS9zdGF0aWMvanMvcmVzdG9yZV9kaWFsb2cuanMKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAuLjQ4ODRkOTAxCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRt aW4vdG9vbHMvcmVzdG9yZS9zdGF0aWMvanMvcmVzdG9yZV9kaWFsb2cuanMKQEAgLTAsMCArMSw1 NyBAQAorLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLworLy8KKy8vIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKy8vCisvLyBD b3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE4LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisv LyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UK Ky8vCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLworCitpbXBvcnQgZ2V0dGV4dCBmcm9tICcuLi8uLi8uLi8uLi9zdGF0aWMvanMv Z2V0dGV4dCc7CitpbXBvcnQge3NwcmludGZ9IGZyb20gJ3NwcmludGYtanMnOworaW1wb3J0IEJh Y2tmb3JtIGZyb20gJy4uLy4uLy4uLy4uL3N0YXRpYy9qcy9iYWNrZm9ybS5wZ2FkbWluJzsKK2lt cG9ydCB7RGlhbG9nfSBmcm9tICcuLi8uLi8uLi8uLi9zdGF0aWMvanMvYWxlcnRpZnkvZGlhbG9n JzsKKworZXhwb3J0IGNsYXNzIFJlc3RvcmVEaWFsb2cgZXh0ZW5kcyBEaWFsb2cgeworICBjb25z dHJ1Y3RvcihwZ0Jyb3dzZXIsICQsIGFsZXJ0aWZ5LCBSZXN0b3JlTW9kZWwsIGJhY2tmb3JtID0g QmFja2Zvcm0pIHsKKyAgICBzdXBlcignUmVzdG9yZSBFcnJvcicsCisgICAgICAnPGRpdiBjbGFz cz1cJ3Jlc3RvcmVfZGlhbG9nXCc+PC9kaXY+JywKKyAgICAgIHBnQnJvd3NlciwgJCwgYWxlcnRp ZnksIFJlc3RvcmVNb2RlbCwgYmFja2Zvcm0pOworICB9CisKKyAgZHJhdyhhY3Rpb24sIGFjaVRy ZWVJdGVtKSB7CisKKyAgICBjb25zdCBzZXJ2ZXJJbmZvcm1hdGlvbiA9IHRoaXMucmV0cmlldmVB bmNlc3Rvck9mVHlwZVNlcnZlcihhY2lUcmVlSXRlbSk7CisKKyAgICBpZiAoIXNlcnZlckluZm9y bWF0aW9uKSB7CisgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCF0aGlzLmhhc0JpbmFy aWVzQ29uZmlndXJhdGlvbihzZXJ2ZXJJbmZvcm1hdGlvbikpIHsKKyAgICAgIHJldHVybjsKKyAg ICB9CisKKyAgICBpZiAoIXRoaXMuY2FuRXhlY3V0ZU9uQ3VycmVudERhdGFiYXNlKGFjaVRyZWVJ dGVtKSkgeworICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGxldCBhY2lUcmVlSXRlbTEgPSBh Y2lUcmVlSXRlbSB8fCB0aGlzLnBnQnJvd3Nlci50cmVlTWVudS5zZWxlY3RlZCgpOworICAgIGxl dCBpdGVtID0gdGhpcy5wZ0Jyb3dzZXIudHJlZU1lbnUuZmluZE5vZGVCeURvbUVsZW1lbnQoYWNp VHJlZUl0ZW0xKTsKKyAgICBjb25zdCBkYXRhID0gaXRlbS5nZXREYXRhKCk7CisgICAgY29uc3Qg bm9kZSA9IHRoaXMucGdCcm93c2VyLk5vZGVzW2RhdGEuX3R5cGVdOworCisgICAgaWYgKCFub2Rl KQorICAgICAgcmV0dXJuOworCisgICAgbGV0IHRpdGxlID0gc3ByaW50ZihnZXR0ZXh0KCdSZXN0 b3JlICglczogJXMpJyksIG5vZGUubGFiZWwsIGRhdGEubGFiZWwpOworCisgICAgdGhpcy5jcmVh dGVPckdldERpYWxvZyh0aXRsZSwgJ3Jlc3RvcmUnKTsKKworICAgIHRoaXMuYWxlcnRpZnkucGdf cmVzdG9yZSh0aXRsZSwgYWNpVHJlZUl0ZW0xLCBkYXRhLCBub2RlKS5yZXNpemVUbygnNjUlJywg JzYwJScpOworICB9CisKKyAgZGlhbG9nTmFtZSgpIHsKKyAgICByZXR1cm4gJ3BnX3Jlc3RvcmUn OworICB9Cit9CisKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL3Jlc3RvcmUvc3RhdGlj L2pzL3Jlc3RvcmVfZGlhbG9nX3dyYXBwZXIuanMgYi93ZWIvcGdhZG1pbi90b29scy9yZXN0b3Jl L3N0YXRpYy9qcy9yZXN0b3JlX2RpYWxvZ193cmFwcGVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwLi44NDVkYTdhMwotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWlu L3Rvb2xzL3Jlc3RvcmUvc3RhdGljL2pzL3Jlc3RvcmVfZGlhbG9nX3dyYXBwZXIuanMKQEAgLTAs MCArMSwyNTUgQEAKK2ltcG9ydCB7Z2V0VHJlZU5vZGVIaWVyYXJjaHlGcm9tRWxlbWVudH0gZnJv bSAnLi4vLi4vLi4vLi4vc3RhdGljL2pzL3RyZWUvcGdhZG1pbl90cmVlX25vZGUnOworaW1wb3J0 IGF4aW9zIGZyb20gJ2F4aW9zL2luZGV4JzsKK2ltcG9ydCBfIGZyb20gJ3VuZGVyc2NvcmUnOwor aW1wb3J0IGdldHRleHQgZnJvbSAnLi4vLi4vLi4vLi4vc3RhdGljL2pzL2dldHRleHQnOworaW1w b3J0IHVybF9mb3IgZnJvbSAnLi4vLi4vLi4vLi4vc3RhdGljL2pzL3VybF9mb3InOworaW1wb3J0 IHtEaWFsb2dXcmFwcGVyfSBmcm9tICcuLi8uLi8uLi8uLi9zdGF0aWMvanMvYWxlcnRpZnkvZGlh bG9nX3dyYXBwZXInOworCitleHBvcnQgY2xhc3MgUmVzdG9yZURpYWxvZ1dyYXBwZXIgZXh0ZW5k cyBEaWFsb2dXcmFwcGVyIHsKKyAgY29uc3RydWN0b3IoZGlhbG9nQ29udGFpbmVyU2VsZWN0b3Is IGRpYWxvZ1RpdGxlLCB0eXBlT2ZEaWFsb2csCisgICAgICAgICAgICAgIGpxdWVyeSwgcGdCcm93 c2VyLCBhbGVydGlmeSwgZGlhbG9nTW9kZWwsIGJhY2tmb3JtKSB7CisgICAgc3VwZXIoZGlhbG9n Q29udGFpbmVyU2VsZWN0b3IsIGRpYWxvZ1RpdGxlLCBqcXVlcnksCisgICAgICBwZ0Jyb3dzZXIs IGFsZXJ0aWZ5LCBkaWFsb2dNb2RlbCwgYmFja2Zvcm0pOworICB9CisKKyAgbWFpbih0aXRsZSwg aXRlbSwgZGF0YSwgbm9kZSkgeworICAgIHRoaXMuc2V0KCd0aXRsZScsIHRpdGxlKTsKKyAgICB0 aGlzLnNldHRpbmcoJ3BnX25vZGUnLCBub2RlKTsKKyAgICB0aGlzLnNldHRpbmcoJ3BnX2l0ZW0n LCBpdGVtKTsKKyAgICB0aGlzLnNldHRpbmcoJ3BnX2l0ZW1fZGF0YScsIGRhdGEpOworICB9CisK KyAgc2V0dXAoKSB7CisgICAgcmV0dXJuIHsKKyAgICAgIGJ1dHRvbnM6IFt7CisgICAgICAgIHRl eHQ6ICcnLAorICAgICAgICBjbGFzc05hbWU6ICdidG4gYnRuLWRlZmF1bHQgcHVsbC1sZWZ0IGZh IGZhLWxnIGZhLWluZm8nLAorICAgICAgICBhdHRyczogeworICAgICAgICAgIG5hbWU6ICdvYmpl Y3RfaGVscCcsCisgICAgICAgICAgdHlwZTogJ2J1dHRvbicsCisgICAgICAgICAgdXJsOiAnYmFj a3VwLmh0bWwnLAorICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdSZXN0b3JlJyksCisgICAgICAg IH0sCisgICAgICB9LCB7CisgICAgICAgIHRleHQ6ICcnLAorICAgICAgICBrZXk6IDExMiwKKyAg ICAgICAgY2xhc3NOYW1lOiAnYnRuIGJ0bi1kZWZhdWx0IHB1bGwtbGVmdCBmYSBmYS1sZyBmYS1x dWVzdGlvbicsCisgICAgICAgIGF0dHJzOiB7CisgICAgICAgICAgbmFtZTogJ2RpYWxvZ19oZWxw JywKKyAgICAgICAgICB0eXBlOiAnYnV0dG9uJywKKyAgICAgICAgICBsYWJlbDogZ2V0dGV4dCgn UmVzdG9yZScpLAorICAgICAgICAgIHVybDogdXJsX2ZvcignaGVscC5zdGF0aWMnLCB7CisgICAg ICAgICAgICAnZmlsZW5hbWUnOiAncmVzdG9yZV9kaWFsb2cuaHRtbCcsCisgICAgICAgICAgfSks CisgICAgICAgIH0sCisgICAgICB9LCB7CisgICAgICAgIHRleHQ6IGdldHRleHQoJ1Jlc3RvcmUn KSwKKyAgICAgICAga2V5OiAxMywKKyAgICAgICAgY2xhc3NOYW1lOiAnYnRuIGJ0bi1wcmltYXJ5 IGZhIGZhLXVwbG9hZCBwZy1hbGVydGlmeS1idXR0b24nLAorICAgICAgICByZXN0b3JlOiB0cnVl LAorICAgICAgICAnZGF0YS1idG4tbmFtZSc6ICdyZXN0b3JlJywKKyAgICAgIH0sIHsKKyAgICAg ICAgdGV4dDogZ2V0dGV4dCgnQ2FuY2VsJyksCisgICAgICAgIGtleTogMjcsCisgICAgICAgIGNs YXNzTmFtZTogJ2J0biBidG4tZGFuZ2VyIGZhIGZhLWxnIGZhLXRpbWVzIHBnLWFsZXJ0aWZ5LWJ1 dHRvbicsCisgICAgICAgIHJlc3RvcmU6IGZhbHNlLAorICAgICAgICAnZGF0YS1idG4tbmFtZSc6 ICdjYW5jZWwnLAorICAgICAgfV0sCisgICAgICAvLyBTZXQgb3B0aW9ucyBmb3IgZGlhbG9nCisg ICAgICBvcHRpb25zOiB7CisgICAgICAgIHRpdGxlOiB0aGlzLmRpYWxvZ1RpdGxlLAorICAgICAg ICAvL2Rpc2FibGUgYm90aCBwYWRkaW5nIGFuZCBvdmVyZmxvdyBjb250cm9sLgorICAgICAgICBw YWRkaW5nOiAhMSwKKyAgICAgICAgb3ZlcmZsb3c6ICExLAorICAgICAgICBtb2RlbDogMCwKKyAg ICAgICAgcmVzaXphYmxlOiB0cnVlLAorICAgICAgICBtYXhpbWl6YWJsZTogdHJ1ZSwKKyAgICAg ICAgcGlubmFibGU6IGZhbHNlLAorICAgICAgICBjbG9zYWJsZUJ5RGltbWVyOiBmYWxzZSwKKyAg ICAgICAgbW9kYWw6IGZhbHNlLAorICAgICAgfSwKKyAgICB9OworICB9CisKKyAgcHJlcGFyZSgp IHsKKyAgICB0aGlzLmRpc2FibGVSZXN0b3JlQnV0dG9uKCk7CisKKyAgICBjb25zdCAkY29udGFp bmVyID0gdGhpcy5qcXVlcnkodGhpcy5kaWFsb2dDb250YWluZXJTZWxlY3Rvcik7CisgICAgY29u c3Qgc2VsZWN0ZWRUcmVlTm9kZSA9IHRoaXMuZ2V0U2VsZWN0ZWROb2RlKCk7CisgICAgY29uc3Qg c2VsZWN0ZWRUcmVlTm9kZURhdGEgPSB0aGlzLmdldFNlbGVjdGVkTm9kZURhdGEoc2VsZWN0ZWRU cmVlTm9kZSk7CisgICAgaWYgKCFzZWxlY3RlZFRyZWVOb2RlRGF0YSkgeworICAgICAgcmV0dXJu OworICAgIH0KKworICAgIGNvbnN0IG5vZGUgPSB0aGlzLnBnQnJvd3Nlci5Ob2Rlc1tzZWxlY3Rl ZFRyZWVOb2RlRGF0YS5fdHlwZV07CisKKyAgICBjb25zdCB0cmVlSW5mbyA9IGdldFRyZWVOb2Rl SGllcmFyY2h5RnJvbUVsZW1lbnQodGhpcy5wZ0Jyb3dzZXIsIHNlbGVjdGVkVHJlZU5vZGUpOwor ICAgIGNvbnN0IGRpYWxvZyA9IHRoaXMuY3JlYXRlRGlhbG9nKG5vZGUsIHRyZWVJbmZvLCAkY29u dGFpbmVyKTsKKyAgICB0aGlzLmFkZEFsZXJ0aWZ5Q2xhc3NUb1Jlc3RvcmVOb2RlQ2hpbGROb2Rl cygpOworICAgIGRpYWxvZy5yZW5kZXIoKTsKKworICAgIHRoaXMuZWxlbWVudHMuY29udGVudC5h cHBlbmRDaGlsZCgkY29udGFpbmVyLmdldCgwKSk7CisKKyAgICB0aGlzLmZvY3VzT25EaWFsb2co ZGlhbG9nKTsKKyAgICB0aGlzLnNldExpc3RlbmVyc0ZvckZpbGVuYW1lQ2hhbmdlcygpOworICB9 CisKKyAgY2FsbGJhY2soZXZlbnQpIHsKKyAgICBjb25zdCBzZWxlY3RlZFRyZWVOb2RlID0gdGhp cy5nZXRTZWxlY3RlZE5vZGUoKTsKKyAgICBjb25zdCBzZWxlY3RlZFRyZWVOb2RlRGF0YSA9IHRo aXMuZ2V0U2VsZWN0ZWROb2RlRGF0YShzZWxlY3RlZFRyZWVOb2RlKTsKKyAgICBjb25zdCBub2Rl ID0gc2VsZWN0ZWRUcmVlTm9kZURhdGEgJiYgdGhpcy5wZ0Jyb3dzZXIuTm9kZXNbc2VsZWN0ZWRU cmVlTm9kZURhdGEuX3R5cGVdOworCisgICAgaWYgKHRoaXMud2FzSGVscEJ1dHRvblByZXNzZWQo ZXZlbnQpKSB7CisgICAgICBldmVudC5jYW5jZWwgPSB0cnVlOworICAgICAgdGhpcy5wZ0Jyb3dz ZXIuc2hvd0hlbHAoCisgICAgICAgIGV2ZW50LmJ1dHRvbi5lbGVtZW50Lm5hbWUsCisgICAgICAg IGV2ZW50LmJ1dHRvbi5lbGVtZW50LmdldEF0dHJpYnV0ZSgndXJsJyksCisgICAgICAgIG5vZGUs CisgICAgICAgIHNlbGVjdGVkVHJlZU5vZGUsCisgICAgICAgIGV2ZW50LmJ1dHRvbi5lbGVtZW50 LmdldEF0dHJpYnV0ZSgnbGFiZWwnKQorICAgICAgKTsKKyAgICAgIHJldHVybjsKKyAgICB9CisK KyAgICBpZiAodGhpcy53YXNSZXN0b3JlQnV0dG9uUHJlc3NlZChldmVudCkpIHsKKworICAgICAg aWYgKCFzZWxlY3RlZFRyZWVOb2RlRGF0YSkKKyAgICAgICAgcmV0dXJuOworCisgICAgICBjb25z dCBzZXJ2ZXJJZGVudGlmaWVyID0gdGhpcy5yZXRyaWV2ZVNlcnZlcklkZW50aWZpZXIobm9kZSwg c2VsZWN0ZWRUcmVlTm9kZSk7CisKKyAgICAgIGNvbnN0IGRpYWxvZ1dyYXBwZXIgPSB0aGlzOwor ICAgICAgbGV0IHVybFNob3J0Y3V0ID0gJ3Jlc3RvcmUuY3JlYXRlX2pvYic7CisKKyAgICAgIGNv bnN0IGJhc2VVcmwgPSB1cmxfZm9yKHVybFNob3J0Y3V0LCB7CisgICAgICAgICdzaWQnOiBzZXJ2 ZXJJZGVudGlmaWVyLAorICAgICAgfSk7CisKKyAgICAgIGNvbnN0IHRyZWVJbmZvID0gZ2V0VHJl ZU5vZGVIaWVyYXJjaHlGcm9tRWxlbWVudCgKKyAgICAgICAgdGhpcy5wZ0Jyb3dzZXIsCisgICAg ICAgIHNlbGVjdGVkVHJlZU5vZGUKKyAgICAgICk7CisKKyAgICAgIHRoaXMuc2V0RXh0cmFQYXJh bWV0ZXJzKHNlbGVjdGVkVHJlZU5vZGUsIHRyZWVJbmZvKTsKKworICAgICAgbGV0IHNlcnZpY2Ug PSBheGlvcy5jcmVhdGUoe30pOworICAgICAgc2VydmljZS5wb3N0KAorICAgICAgICBiYXNlVXJs LAorICAgICAgICB0aGlzLnZpZXcubW9kZWwudG9KU09OKCkKKyAgICAgICkudGhlbihmdW5jdGlv biAoKSB7CisgICAgICAgIGRpYWxvZ1dyYXBwZXIuYWxlcnRpZnkuc3VjY2VzcyhnZXR0ZXh0KCdS ZXN0b3JlIGpvYiBjcmVhdGVkLicpLCA1KTsKKyAgICAgICAgZGlhbG9nV3JhcHBlci5wZ0Jyb3dz ZXIuRXZlbnRzLnRyaWdnZXIoJ3BnYWRtaW4tYmdwcm9jZXNzOmNyZWF0ZWQnLCBkaWFsb2dXcmFw cGVyKTsKKyAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikgeworICAgICAgICB0cnkgewor ICAgICAgICAgIGNvbnN0IGVyciA9IGVycm9yLnJlc3BvbnNlLmRhdGE7CisgICAgICAgICAgZGlh bG9nV3JhcHBlci5hbGVydGlmeS5hbGVydCgKKyAgICAgICAgICAgIGdldHRleHQoJ1Jlc3RvcmUg am9iIGZhaWxlZC4nKSwKKyAgICAgICAgICAgIGVyci5lcnJvcm1zZworICAgICAgICAgICk7Cisg ICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICBjb25zb2xlLndhcm4oZS5zdGFjayB8fCBl KTsKKyAgICAgICAgfQorICAgICAgfSk7CisgICAgfQorICB9CisKKyAgYWRkQWxlcnRpZnlDbGFz c1RvUmVzdG9yZU5vZGVDaGlsZE5vZGVzKCkgeworICAgIHRoaXMuanF1ZXJ5KHRoaXMuZWxlbWVu dHMuYm9keS5jaGlsZE5vZGVzWzBdKS5hZGRDbGFzcygKKyAgICAgICdhbGVydGlmeV90b29sc19k aWFsb2dfcHJvcGVydGllcyBvYmpfcHJvcGVydGllcycKKyAgICApOworICB9CisKKyAgZ2V0U2Vs ZWN0ZWROb2RlKCkgeworICAgIGNvbnN0IHRyZWUgPSB0aGlzLnBnQnJvd3Nlci50cmVlTWVudTsK KyAgICBjb25zdCBzZWxlY3RlZE5vZGUgPSB0cmVlLnNlbGVjdGVkKCk7CisgICAgaWYgKHNlbGVj dGVkTm9kZSkgeworICAgICAgcmV0dXJuIHRyZWUuZmluZE5vZGVCeURvbUVsZW1lbnQoc2VsZWN0 ZWROb2RlKTsKKyAgICB9IGVsc2UgeworICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKKyAgICB9Cisg IH0KKworICBkaXNhYmxlUmVzdG9yZUJ1dHRvbigpIHsKKyAgICB0aGlzLl9faW50ZXJuYWwuYnV0 dG9uc1syXS5lbGVtZW50LmRpc2FibGVkID0gdHJ1ZTsKKyAgfQorCisgIGVuYWJsZVJlc3RvcmVC dXR0b24oKSB7CisgICAgdGhpcy5fX2ludGVybmFsLmJ1dHRvbnNbMl0uZWxlbWVudC5kaXNhYmxl ZCA9IGZhbHNlOworICB9CisKKyAgY3JlYXRlRGlhbG9nKG5vZGUsIHRyZWVJbmZvLCAkY29udGFp bmVyKSB7CisgICAgY29uc3QgbmV3TW9kZWwgPSBuZXcgdGhpcy5kaWFsb2dNb2RlbCh7CisgICAg ICBub2RlX2RhdGE6IG5vZGUsCisgICAgfSwgeworICAgICAgbm9kZV9pbmZvOiB0cmVlSW5mbywK KyAgICB9KTsKKyAgICBjb25zdCBmaWVsZHMgPSB0aGlzLmJhY2tmb3JtLmdlbmVyYXRlVmlld1Nj aGVtYSgKKyAgICAgIHRyZWVJbmZvLCBuZXdNb2RlbCwgJ2NyZWF0ZScsIG5vZGUsIHRyZWVJbmZv LnNlcnZlciwgdHJ1ZQorICAgICk7CisKKyAgICByZXR1cm4gdGhpcy52aWV3ID0gbmV3IHRoaXMu YmFja2Zvcm0uRGlhbG9nKHsKKyAgICAgIGVsOiAkY29udGFpbmVyLAorICAgICAgbW9kZWw6IG5l d01vZGVsLAorICAgICAgc2NoZW1hOiBmaWVsZHMsCisgICAgfSk7CisgIH0KKworICByZXRyaWV2 ZVNlcnZlcklkZW50aWZpZXIobm9kZSwgc2VsZWN0ZWRUcmVlTm9kZSkgeworICAgIGNvbnN0IHRy ZWVJbmZvID0gZ2V0VHJlZU5vZGVIaWVyYXJjaHlGcm9tRWxlbWVudCgKKyAgICAgIHRoaXMucGdC cm93c2VyLAorICAgICAgc2VsZWN0ZWRUcmVlTm9kZQorICAgICk7CisgICAgcmV0dXJuIHRyZWVJ bmZvLnNlcnZlci5faWQ7CisgIH0KKworICBzZXRMaXN0ZW5lcnNGb3JGaWxlbmFtZUNoYW5nZXMo KSB7CisgICAgY29uc3Qgc2VsZiA9IHRoaXM7CisKKyAgICB0aGlzLnZpZXcubW9kZWwub24oJ2No YW5nZScsIGZ1bmN0aW9uICgpIHsKKyAgICAgIGlmICghXy5pc1VuZGVmaW5lZCh0aGlzLmdldCgn ZmlsZScpKSAmJiB0aGlzLmdldCgnZmlsZScpICE9PSAnJykgeworICAgICAgICB0aGlzLmVycm9y TW9kZWwuY2xlYXIoKTsKKyAgICAgICAgc2VsZi5lbmFibGVSZXN0b3JlQnV0dG9uKCk7CisgICAg ICB9IGVsc2UgeworICAgICAgICBzZWxmLmRpc2FibGVSZXN0b3JlQnV0dG9uKCk7CisgICAgICAg IHRoaXMuZXJyb3JNb2RlbC5zZXQoJ2ZpbGUnLCBnZXR0ZXh0KCdQbGVhc2UgcHJvdmlkZSBhIGZp bGVuYW1lJykpOworICAgICAgfQorICAgIH0pOworICB9CisKKyAgc2V0RXh0cmFQYXJhbWV0ZXJz KHNlbGVjdGVkVHJlZU5vZGUsIHRyZWVJbmZvKSB7CisgICAgdGhpcy52aWV3Lm1vZGVsLnNldCgn ZGF0YWJhc2UnLCB0cmVlSW5mby5kYXRhYmFzZS5fbGFiZWwpOworICAgIGlmICghdGhpcy52aWV3 Lm1vZGVsLmdldCgnY3VzdG9tJykpIHsKKyAgICAgIGNvbnN0IG5vZGVEYXRhID0gc2VsZWN0ZWRU cmVlTm9kZS5nZXREYXRhKCk7CisKKyAgICAgIHN3aXRjaCAobm9kZURhdGEuX3R5cGUpIHsKKyAg ICAgIGNhc2UgJ3NjaGVtYSc6CisgICAgICAgIHRoaXMudmlldy5tb2RlbC5zZXQoJ3NjaGVtYXMn LCBbbm9kZURhdGEuX2xhYmVsXSk7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAndGFibGUn OgorICAgICAgICB0aGlzLnZpZXcubW9kZWwuc2V0KCdzY2hlbWFzJywgW3RyZWVJbmZvLnNjaGVt YS5fbGFiZWxdKTsKKyAgICAgICAgdGhpcy52aWV3Lm1vZGVsLnNldCgndGFibGVzJywgW25vZGVE YXRhLl9sYWJlbF0pOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgJ2Z1bmN0aW9uJzoKKyAg ICAgICAgdGhpcy52aWV3Lm1vZGVsLnNldCgnc2NoZW1hcycsIFt0cmVlSW5mby5zY2hlbWEuX2xh YmVsXSk7CisgICAgICAgIHRoaXMudmlldy5tb2RlbC5zZXQoJ2Z1bmN0aW9ucycsIFtub2RlRGF0 YS5fbGFiZWxdKTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlICdpbmRleCc6CisgICAgICAg IHRoaXMudmlldy5tb2RlbC5zZXQoJ3NjaGVtYXMnLCBbdHJlZUluZm8uc2NoZW1hLl9sYWJlbF0p OworICAgICAgICB0aGlzLnZpZXcubW9kZWwuc2V0KCdpbmRleGVzJywgW25vZGVEYXRhLl9sYWJl bF0pOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgJ3RyaWdnZXInOgorICAgICAgICB0aGlz LnZpZXcubW9kZWwuc2V0KCdzY2hlbWFzJywgW3RyZWVJbmZvLnNjaGVtYS5fbGFiZWxdKTsKKyAg ICAgICAgdGhpcy52aWV3Lm1vZGVsLnNldCgndHJpZ2dlcnMnLCBbbm9kZURhdGEuX2xhYmVsXSk7 CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAndHJpZ2dlcl9mdW5jJzoKKyAgICAgICAgdGhp cy52aWV3Lm1vZGVsLnNldCgnc2NoZW1hcycsIFt0cmVlSW5mby5zY2hlbWEuX2xhYmVsXSk7Cisg ICAgICAgIHRoaXMudmlldy5tb2RlbC5zZXQoJ3RyaWdnZXJfZnVuY3MnLCBbbm9kZURhdGEuX2xh YmVsXSk7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgIH0KKyAgfQorCisgIHdhc1Jlc3Rv cmVCdXR0b25QcmVzc2VkKGV2ZW50KSB7CisgICAgcmV0dXJuIGV2ZW50LmJ1dHRvblsnZGF0YS1i dG4tbmFtZSddID09PSAncmVzdG9yZSc7CisgIH0KK30KZGlmZiAtLWdpdCBhL3dlYi9yZWdyZXNz aW9uL2phdmFzY3JpcHQvYmFja3VwL2JhY2t1cF9kaWFsb2dfc3BlYy5qcyBiL3dlYi9yZWdyZXNz aW9uL2phdmFzY3JpcHQvYmFja3VwL2JhY2t1cF9kaWFsb2dfc3BlYy5qcwpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMC4uMjY1NTA1OWQKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIv cmVncmVzc2lvbi9qYXZhc2NyaXB0L2JhY2t1cC9iYWNrdXBfZGlhbG9nX3NwZWMuanMKQEAgLTAs MCArMSwyMDUgQEAKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8KKy8vCisvLyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisv LworLy8gQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAxOCwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQg VGVhbQorLy8gVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBM aWNlbmNlCisvLworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8KK2ltcG9ydCB7QmFja3VwRGlhbG9nfSBmcm9tICcuLi8uLi8uLi9w Z2FkbWluL3Rvb2xzL2JhY2t1cC9zdGF0aWMvanMvYmFja3VwX2RpYWxvZyc7CitpbXBvcnQge1Ry ZWVGYWtlfSBmcm9tICcuLi90cmVlL3RyZWVfZmFrZSc7CisKK2NvbnN0IGNvbnRleHQgPSBkZXNj cmliZTsKKworZGVzY3JpYmUoJ0JhY2t1cERpYWxvZycsICgpID0+IHsKKyAgbGV0IGJhY2t1cERp YWxvZzsKKyAgbGV0IHBnQnJvd3NlcjsKKyAgbGV0IGpxdWVyeVNweTsKKyAgbGV0IGFsZXJ0aWZ5 U3B5OworICBsZXQgYmFja3VwTW9kZWxTcHk7CisKKyAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAg cGdCcm93c2VyID0geworICAgICAgdHJlZU1lbnU6IG5ldyBUcmVlRmFrZSgpLAorICAgICAgTm9k ZXM6IHsKKyAgICAgICAgc2VydmVyOiB7CisgICAgICAgICAgaGFzSWQ6IHRydWUsCisgICAgICAg ICAgbGFiZWw6ICdzZXJ2ZXInLAorICAgICAgICAgIGdldFRyZWVOb2RlSGllcmFyY2h5OiBqYXNt aW5lLmNyZWF0ZVNweSgnc2VydmVyLmdldFRyZWVOb2RlSGllcmFyY2h5JyksCisgICAgICAgIH0s CisgICAgICAgIGRhdGFiYXNlOiB7CisgICAgICAgICAgaGFzSWQ6IHRydWUsCisgICAgICAgICAg bGFiZWw6ICdkYXRhYmFzZScsCisgICAgICAgICAgZ2V0VHJlZU5vZGVIaWVyYXJjaHk6IGphc21p bmUuY3JlYXRlU3B5KCdkYi5nZXRUcmVlTm9kZUhpZXJhcmNoeScpLAorICAgICAgICB9LAorICAg ICAgICBzY2hlbWE6IHsKKyAgICAgICAgICBoYXNJZDogdHJ1ZSwKKyAgICAgICAgICBsYWJlbDog J3NjaGVtYScsCisgICAgICAgICAgZ2V0VHJlZU5vZGVIaWVyYXJjaHk6IGphc21pbmUuY3JlYXRl U3B5KCdkYi5nZXRUcmVlTm9kZUhpZXJhcmNoeScpLAorICAgICAgICB9LAorICAgICAgfSwKKyAg ICB9OworICAgIHBnQnJvd3Nlci5Ob2Rlcy5zZXJ2ZXIuaGFzSWQgPSB0cnVlOworICAgIHBnQnJv d3Nlci5Ob2Rlcy5kYXRhYmFzZS5oYXNJZCA9IHRydWU7CisgICAganF1ZXJ5U3B5ID0gamFzbWlu ZS5jcmVhdGVTcHkoJ2pxdWVyeVNweScpOworICAgIGJhY2t1cE1vZGVsU3B5ID0gamFzbWluZS5j cmVhdGVTcHkoJ2JhY2t1cE1vZGVsU3B5Jyk7CisKKyAgICBjb25zdCBoaWVyYXJjaHkgPSB7Cisg ICAgICBjaGlsZHJlbjogWworICAgICAgICB7CisgICAgICAgICAgaWQ6ICdyb290JywKKyAgICAg ICAgICBjaGlsZHJlbjogWworICAgICAgICAgICAgeworICAgICAgICAgICAgICBpZDogJ3NlcnZl clRyZWVOb2RlJywKKyAgICAgICAgICAgICAgZGF0YTogeworICAgICAgICAgICAgICAgIF9pZDog MTAsCisgICAgICAgICAgICAgICAgX3R5cGU6ICdzZXJ2ZXInLAorICAgICAgICAgICAgICB9LAor ICAgICAgICAgICAgICBjaGlsZHJlbjogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg ICAgICAgIGlkOiAnc29tZV9kYXRhYmFzZScsCisgICAgICAgICAgICAgICAgICBkYXRhOiB7Cisg ICAgICAgICAgICAgICAgICAgIF90eXBlOiAnZGF0YWJhc2UnLAorICAgICAgICAgICAgICAgICAg ICBfaWQ6IDExLAorICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ3NvbWVfZGF0YWJhc2UnLAor ICAgICAgICAgICAgICAgICAgICBfbGFiZWw6ICdzb21lX2RhdGFiYXNlX2xhYmVsJywKKyAgICAg ICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgfSwgeworICAgICAgICAgICAgICAgICAg aWQ6ICdkYXRhYmFzZV93aXRoX2VxdWFsX2luX25hbWUnLAorICAgICAgICAgICAgICAgICAgZGF0 YTogeworICAgICAgICAgICAgICAgICAgICBfdHlwZTogJ2RhdGFiYXNlJywKKyAgICAgICAgICAg ICAgICAgICAgbGFiZWw6ICdzb21lX2RhdGFiYXNlJywKKyAgICAgICAgICAgICAgICAgICAgX2xh YmVsOiAnPXNvbWVfZGF0YWJhc2VfbGFiZWwnLAorICAgICAgICAgICAgICAgICAgfSwKKyAgICAg ICAgICAgICAgICB9LAorICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgfSwKKyAgICAgICAg ICAgIHsKKyAgICAgICAgICAgICAgaWQ6ICdwcGFzU2VydmVyJywKKyAgICAgICAgICAgICAgZGF0 YTogeworICAgICAgICAgICAgICAgIF90eXBlOiAnc2VydmVyJywKKyAgICAgICAgICAgICAgICBz ZXJ2ZXJfdHlwZTogJ3BwYXMnLAorICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBbCisgICAgICAg ICAgICAgICAgICB7aWQ6ICdzb21lTm9kZVVuZGVybmVhdGhQUEFTU2VydmVyJ30sCisgICAgICAg ICAgICAgICAgXSwKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIH0sCisgICAgICAgICAg XSwKKyAgICAgICAgfSwKKyAgICAgIF0sCisgICAgfTsKKworICAgIHBnQnJvd3Nlci50cmVlTWVu dSA9IFRyZWVGYWtlLmJ1aWxkKGhpZXJhcmNoeSk7CisgIH0pOworCisgIGRlc2NyaWJlKCcjZHJh dycsICgpID0+IHsKKyAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgIGFsZXJ0aWZ5U3B5ID0g amFzbWluZS5jcmVhdGVTcHlPYmooJ2FsZXJ0aWZ5JywgWydhbGVydCcsICdkaWFsb2cnXSk7Cisg ICAgICBhbGVydGlmeVNweVsnYmFja3VwX29iamVjdHMnXSA9IGphc21pbmUuY3JlYXRlU3B5KCdi YWNrdXBfb2JqZWN0cycpOworICAgICAgYmFja3VwRGlhbG9nID0gbmV3IEJhY2t1cERpYWxvZygK KyAgICAgICAgcGdCcm93c2VyLAorICAgICAgICBqcXVlcnlTcHksCisgICAgICAgIGFsZXJ0aWZ5 U3B5LAorICAgICAgICBiYWNrdXBNb2RlbFNweQorICAgICAgKTsKKworICAgICAgcGdCcm93c2Vy LmdldF9wcmVmZXJlbmNlID0gamFzbWluZS5jcmVhdGVTcHkoJ2dldF9wcmVmZXJlbmNlcycpOwor ICAgIH0pOworCisgICAgY29udGV4dCgndGhlcmUgYXJlIG5vIGFuY2VzdG9ycyBvZiB0aGUgdHlw ZSBzZXJ2ZXInLCAoKSA9PiB7CisgICAgICBpdCgnZG9lcyBub3QgY3JlYXRlIGEgZGlhbG9nJywg KCkgPT4geworICAgICAgICBwZ0Jyb3dzZXIudHJlZU1lbnUuc2VsZWN0Tm9kZShbe2lkOiAncm9v dCd9XSk7CisgICAgICAgIGJhY2t1cERpYWxvZy5kcmF3KG51bGwsIG51bGwsIG51bGwpOworICAg ICAgICBleHBlY3QoYWxlcnRpZnlTcHlbJ2JhY2t1cF9vYmplY3RzJ10pLm5vdC50b0hhdmVCZWVu Q2FsbGVkKCk7CisgICAgICB9KTsKKworICAgICAgaXQoJ2Rpc3BsYXkgYW4gYWxlcnQgd2l0aCBh IEJhY2t1cCBFcnJvcicsICgpID0+IHsKKyAgICAgICAgYmFja3VwRGlhbG9nLmRyYXcobnVsbCwg W3tpZDogJ3Jvb3QnfV0sIG51bGwpOworICAgICAgICBleHBlY3QoYWxlcnRpZnlTcHkuYWxlcnQp LnRvSGF2ZUJlZW5DYWxsZWRXaXRoKAorICAgICAgICAgICdCYWNrdXAgRXJyb3InLAorICAgICAg ICAgICdQbGVhc2Ugc2VsZWN0IHNlcnZlciBvciBjaGlsZCBub2RlIGZyb20gdGhlIGJyb3dzZXIg dHJlZS4nCisgICAgICAgICk7CisgICAgICB9KTsKKyAgICB9KTsKKworICAgIGNvbnRleHQoJ3Ro ZXJlIGlzIGFuIGFuY2VzdG9yIG9mIHRoZSB0eXBlIHNlcnZlcicsICgpID0+IHsKKyAgICAgIGNv bnRleHQoJ25vIHByZWZlcmVuY2UgY2FuIGJlIGZvdW5kJywgKCkgPT4geworICAgICAgICBiZWZv cmVFYWNoKCgpID0+IHsKKyAgICAgICAgICBwZ0Jyb3dzZXIuZ2V0X3ByZWZlcmVuY2UuYW5kLnJl dHVyblZhbHVlKHVuZGVmaW5lZCk7CisgICAgICAgIH0pOworCisgICAgICAgIGNvbnRleHQoJ3Nl cnZlciBpcyBhIHBwYXMgc2VydmVyJywgKCkgPT4geworICAgICAgICAgIGl0KCdkaXNwbGF5IGFu IGFsZXJ0IHdpdGggIkJhY2t1cCBFcnJvciInLCAoKSA9PiB7CisgICAgICAgICAgICBiYWNrdXBE aWFsb2cuZHJhdyhudWxsLCBbe2lkOiAnc29tZV9kYXRhYmFzZSd9XSwgbnVsbCk7CisgICAgICAg ICAgICBleHBlY3QoYWxlcnRpZnlTcHkuYWxlcnQpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKAorICAg ICAgICAgICAgICAnQmFja3VwIEVycm9yJywKKyAgICAgICAgICAgICAgJ0ZhaWxlZCB0byBsb2Fk IHByZWZlcmVuY2UgcGdfYmluX2RpciBvZiBtb2R1bGUgcGF0aHMnCisgICAgICAgICAgICApOwor ICAgICAgICAgIH0pOworICAgICAgICB9KTsKKworICAgICAgICBjb250ZXh0KCdzZXJ2ZXIgaXMg bm90IGEgcHBhcyBzZXJ2ZXInLCAoKSA9PiB7CisgICAgICAgICAgaXQoJ2Rpc3BsYXkgYW4gYWxl cnQgd2l0aCAiQmFja3VwIEVycm9yIicsICgpID0+IHsKKyAgICAgICAgICAgIGJhY2t1cERpYWxv Zy5kcmF3KG51bGwsIFt7aWQ6ICdwcGFzU2VydmVyJ31dLCBudWxsKTsKKyAgICAgICAgICAgIGV4 cGVjdChhbGVydGlmeVNweS5hbGVydCkudG9IYXZlQmVlbkNhbGxlZFdpdGgoCisgICAgICAgICAg ICAgICdCYWNrdXAgRXJyb3InLAorICAgICAgICAgICAgICAnRmFpbGVkIHRvIGxvYWQgcHJlZmVy ZW5jZSBwcGFzX2Jpbl9kaXIgb2YgbW9kdWxlIHBhdGhzJworICAgICAgICAgICAgKTsKKyAgICAg ICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgICB9KTsKKworICAgICAgY29udGV4dCgncHJlZmVy ZW5jZSBjYW4gYmUgZm91bmQnLCAoKSA9PiB7CisgICAgICAgIGNvbnRleHQoJ2JpbmFyeSBmb2xk ZXIgaXMgbm90IGNvbmZpZ3VyZWQnLCAoKSA9PiB7CisgICAgICAgICAgYmVmb3JlRWFjaCgoKSA9 PiB7CisgICAgICAgICAgICBwZ0Jyb3dzZXIuZ2V0X3ByZWZlcmVuY2UuYW5kLnJldHVyblZhbHVl KHt9KTsKKyAgICAgICAgICB9KTsKKworICAgICAgICAgIGNvbnRleHQoJ3NlcnZlciBpcyBhIHBw YXMgc2VydmVyJywgKCkgPT4geworICAgICAgICAgICAgaXQoJ2Rpc3BsYXkgYW4gYWxlcnQgd2l0 aCAiQ29uZmlndXJhdGlvbiByZXF1aXJlZCInLCAoKSA9PiB7CisgICAgICAgICAgICAgIGJhY2t1 cERpYWxvZy5kcmF3KG51bGwsIFt7aWQ6ICdzZXJ2ZXJUcmVlTm9kZSd9XSwgbnVsbCk7CisgICAg ICAgICAgICAgIGV4cGVjdChhbGVydGlmeVNweS5hbGVydCkudG9IYXZlQmVlbkNhbGxlZFdpdGgo CisgICAgICAgICAgICAgICAgJ0NvbmZpZ3VyYXRpb24gcmVxdWlyZWQnLAorICAgICAgICAgICAg ICAgICdQbGVhc2UgY29uZmlndXJlIHRoZSBQb3N0Z3JlU1FMIEJpbmFyeSBQYXRoIGluIHRoZSBQ cmVmZXJlbmNlcyBkaWFsb2cuJworICAgICAgICAgICAgICApOworICAgICAgICAgICAgfSk7Cisg ICAgICAgICAgfSk7CisKKyAgICAgICAgICBjb250ZXh0KCdzZXJ2ZXIgaXMgbm90IGEgcHBhcyBz ZXJ2ZXInLCAoKSA9PiB7CisgICAgICAgICAgICBpdCgnZGlzcGxheSBhbiBhbGVydCB3aXRoICJD b25maWd1cmF0aW9uIHJlcXVpcmVkIicsICgpID0+IHsKKyAgICAgICAgICAgICAgYmFja3VwRGlh bG9nLmRyYXcobnVsbCwgW3tpZDogJ3BwYXNTZXJ2ZXInfV0sIG51bGwpOworICAgICAgICAgICAg ICBleHBlY3QoYWxlcnRpZnlTcHkuYWxlcnQpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKAorICAgICAg ICAgICAgICAgICdDb25maWd1cmF0aW9uIHJlcXVpcmVkJywKKyAgICAgICAgICAgICAgICAnUGxl YXNlIGNvbmZpZ3VyZSB0aGUgRURCIEFkdmFuY2VkIFNlcnZlciBCaW5hcnkgUGF0aCBpbiB0aGUg UHJlZmVyZW5jZXMgZGlhbG9nLicKKyAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIH0pOwor ICAgICAgICAgIH0pOworICAgICAgICB9KTsKKworICAgICAgICBjb250ZXh0KCdiaW5hcnkgZm9s ZGVyIGlzIGNvbmZpZ3VyZWQnLCAoKSA9PiB7CisgICAgICAgICAgbGV0IGJhY2t1cERpYWxvZ1Jl c2l6ZVRvU3B5OworICAgICAgICAgIGJlZm9yZUVhY2goKCkgPT4geworICAgICAgICAgICAgYmFj a3VwRGlhbG9nUmVzaXplVG9TcHkgPSBqYXNtaW5lLmNyZWF0ZVNweU9iaignYmFja3VwRGlhbG9n UmVzaXplVG9TcHknLCBbJ3Jlc2l6ZVRvJ10pOworICAgICAgICAgICAgYWxlcnRpZnlTcHlbJ2Jh Y2t1cF9vYmplY3RzJ10uYW5kCisgICAgICAgICAgICAgIC5yZXR1cm5WYWx1ZShiYWNrdXBEaWFs b2dSZXNpemVUb1NweSk7CisgICAgICAgICAgICBwZ0Jyb3dzZXIuZ2V0X3ByZWZlcmVuY2UuYW5k LnJldHVyblZhbHVlKHt2YWx1ZTogJy9zb21lL3BhdGgnfSk7CisgICAgICAgICAgfSk7CisKKyAg ICAgICAgICBpdCgnZGlzcGxheXMgdGhlIGRpYWxvZycsICgpID0+IHsKKyAgICAgICAgICAgIGJh Y2t1cERpYWxvZy5kcmF3KG51bGwsIFt7aWQ6ICdzZXJ2ZXJUcmVlTm9kZSd9XSwgbnVsbCk7Cisg ICAgICAgICAgICBleHBlY3QoYWxlcnRpZnlTcHlbJ2JhY2t1cF9vYmplY3RzJ10pLnRvSGF2ZUJl ZW5DYWxsZWRXaXRoKHRydWUpOworICAgICAgICAgICAgZXhwZWN0KGJhY2t1cERpYWxvZ1Jlc2l6 ZVRvU3B5LnJlc2l6ZVRvKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCgnNjAlJywgJzUwJScpOworICAg ICAgICAgIH0pOworCisgICAgICAgICAgY29udGV4dCgnZGF0YWJhc2UgbGFiZWwgY29udGFpbiAi PSInLCAoKSA9PiB7CisgICAgICAgICAgICBpdCgnc2hvdWxkIGNyZWF0ZSBhbGVydCBkaWFsb2cg d2l0aCBiYWNrdXAgZXJyb3InLCAoKSA9PiB7CisgICAgICAgICAgICAgIGJhY2t1cERpYWxvZy5k cmF3KG51bGwsIFt7aWQ6ICdkYXRhYmFzZV93aXRoX2VxdWFsX2luX25hbWUnfV0sIG51bGwpOwor ICAgICAgICAgICAgICBleHBlY3QoYWxlcnRpZnlTcHkuYWxlcnQpLnRvSGF2ZUJlZW5DYWxsZWRX aXRoKCdCYWNrdXAgRXJyb3InLAorICAgICAgICAgICAgICAgICdEYXRhYmFzZXMgd2l0aCA9IHN5 bWJvbHMgaW4gdGhlIG5hbWUgY2Fubm90IGJlIGJhY2tlZCB1cCBvciByZXN0b3JlZCB1c2luZyB0 aGlzIHV0aWxpdHkuJyk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICB9KTsKKyAgICAgICAg fSk7CisgICAgICB9KTsKKyAgICB9KTsKKyAgfSk7Cit9KTsKZGlmZiAtLWdpdCBhL3dlYi9yZWdy ZXNzaW9uL2phdmFzY3JpcHQvYmFja3VwL2JhY2t1cF9kaWFsb2dfd3JhcHBlcl9zcGVjLmpzIGIv d2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9iYWNrdXAvYmFja3VwX2RpYWxvZ193cmFwcGVyX3Nw ZWMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLjU4NzA1MzE4Ci0tLSAv ZGV2L251bGwKKysrIGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9iYWNrdXAvYmFja3VwX2Rp YWxvZ193cmFwcGVyX3NwZWMuanMKQEAgLTAsMCArMSw2NzUgQEAKK2ltcG9ydCB7VHJlZUZha2V9 IGZyb20gJy4uL3RyZWUvdHJlZV9mYWtlJzsKK2ltcG9ydCB7QmFja3VwRGlhbG9nV3JhcHBlcn0g ZnJvbSAnLi4vLi4vLi4vcGdhZG1pbi90b29scy9iYWNrdXAvc3RhdGljL2pzL2JhY2t1cF9kaWFs b2dfd3JhcHBlcic7CitpbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MvaW5kZXgnOworaW1wb3J0IE1v Y2tBZGFwdGVyIGZyb20gJ2F4aW9zLW1vY2stYWRhcHRlcic7CitpbXBvcnQge0Zha2VNb2RlbH0g ZnJvbSAnLi4vZmFrZV9tb2RlbCc7CitpbXBvcnQge1RyZWVOb2RlfSBmcm9tICcuLi8uLi8uLi9w Z2FkbWluL3N0YXRpYy9qcy90cmVlL3RyZWUnOworCitsZXQgY29udGV4dCA9IGRlc2NyaWJlOwor CitkZXNjcmliZSgnQmFja3VwRGlhbG9nV3JhcHBlcicsICgpID0+IHsKKyAgbGV0IGpxdWVyeVNw eTsKKyAgbGV0IHBnQnJvd3NlcjsKKyAgbGV0IGFsZXJ0aWZ5U3B5OworICBsZXQgZGlhbG9nTW9k ZWxLbGFzc1NweTsKKyAgbGV0IGJhY2tmb3JtOworICBsZXQgZ2VuZXJhdGVkQmFja3VwTW9kZWw7 CisgIGxldCBiYWNrdXBEaWFsb2dXcmFwcGVyOworICBsZXQgbm9EYXRhTm9kZTsKKyAgbGV0IHNl cnZlclRyZWVOb2RlOworICBsZXQgZGF0YWJhc2VUcmVlTm9kZTsKKyAgbGV0IHZpZXdTY2hlbWE7 CisgIGxldCBiYWNrdXBKUXVlcnlDb250YWluZXJTcHk7CisgIGxldCBiYWNrdXBOb2RlQ2hpbGRO b2RlU3B5OworICBsZXQgYmFja3VwTm9kZTsKKworICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICBw Z0Jyb3dzZXIgPSB7CisgICAgICB0cmVlTWVudTogbmV3IFRyZWVGYWtlKCksCisgICAgICBOb2Rl czogeworICAgICAgICBzZXJ2ZXI6IHsKKyAgICAgICAgICBoYXNJZDogdHJ1ZSwKKyAgICAgICAg ICBnZXRUcmVlTm9kZUhpZXJhcmNoeTogamFzbWluZS5jcmVhdGVTcHkoJ2dldFRyZWVOb2RlSGll cmFyY2h5JyksCisgICAgICAgIH0sCisgICAgICAgIGRhdGFiYXNlOiB7CisgICAgICAgICAgaGFz SWQ6IHRydWUsCisgICAgICAgIH0sCisgICAgICB9LAorICAgICAga2V5Ym9hcmROYXZpZ2F0aW9u OiBqYXNtaW5lLmNyZWF0ZVNweU9iaigna2V5Ym9hcmROYXZpZ2F0aW9uJywgWydnZXREaWFsb2dU YWJOYXZpZ2F0b3InXSksCisgICAgfTsKKyAgICBub0RhdGFOb2RlID0gcGdCcm93c2VyLnRyZWVN ZW51LmFkZE5ld05vZGUoJ2xldmVsMS4xJywgdW5kZWZpbmVkLCBbe2lkOiAnbGV2ZWwxJ31dKTsK KyAgICBzZXJ2ZXJUcmVlTm9kZSA9IHBnQnJvd3Nlci50cmVlTWVudS5hZGROZXdOb2RlKCdsZXZl bDIuMScsIHsKKyAgICAgIF90eXBlOiAnc2VydmVyJywKKyAgICAgIF9pZDogMTAsCisgICAgICBs YWJlbDogJ3NvbWUtdHJlZS1sYWJlbCcsCisgICAgfSwgW3tpZDogJ2xldmVsMi4xJ31dKTsKKyAg ICBkYXRhYmFzZVRyZWVOb2RlID0gbmV3IFRyZWVOb2RlKCdkYXRhYmFzZS10cmVlLW5vZGUnLCB7 CisgICAgICBfdHlwZTogJ2RhdGFiYXNlJywKKyAgICAgIF9sYWJlbDogJ3NvbWUtZGF0YWJhc2Ut bGFiZWwnLAorICAgIH0sIFt7aWQ6ICdkYXRhYmFzZS10cmVlLW5vZGUnfV0pOworICAgIHBnQnJv d3Nlci50cmVlTWVudS5hZGRDaGlsZChzZXJ2ZXJUcmVlTm9kZSwgZGF0YWJhc2VUcmVlTm9kZSk7 CisKKyAgICBqcXVlcnlTcHkgPSBqYXNtaW5lLmNyZWF0ZVNweSgnanF1ZXJ5U3B5Jyk7CisgICAg YmFja3VwTm9kZSA9IHsKKyAgICAgIF9faW50ZXJuYWw6IHsKKyAgICAgICAgYnV0dG9uczogW3t9 LCB7fSwgeworICAgICAgICAgIGVsZW1lbnQ6IHsKKyAgICAgICAgICAgIGRpc2FibGVkOiBmYWxz ZSwKKyAgICAgICAgICB9LAorICAgICAgICB9XSwKKyAgICAgIH0sCisgICAgICBlbGVtZW50czog eworICAgICAgICBib2R5OiB7CisgICAgICAgICAgY2hpbGROb2RlczogWworICAgICAgICAgICAg e30sCisgICAgICAgICAgXSwKKyAgICAgICAgfSwKKyAgICAgICAgY29udGVudDogamFzbWluZS5j cmVhdGVTcHlPYmooJ2NvbnRlbnQnLCBbJ2FwcGVuZENoaWxkJywgJ2F0dHInXSksCisgICAgICB9 LAorICAgIH07CisKKyAgICBiYWNrdXBKUXVlcnlDb250YWluZXJTcHkgPSBqYXNtaW5lLmNyZWF0 ZVNweU9iaignYmFja3VwSlF1ZXJ5Q29udGFpbmVyJywgWydnZXQnLCAnYXR0ciddKTsKKyAgICBi YWNrdXBKUXVlcnlDb250YWluZXJTcHkuZ2V0LmFuZC5yZXR1cm5WYWx1ZShiYWNrdXBKUXVlcnlD b250YWluZXJTcHkpOworCisgICAgZ2VuZXJhdGVkQmFja3VwTW9kZWwgPSB7fTsKKyAgICBkaWFs b2dNb2RlbEtsYXNzU3B5ID0gamFzbWluZS5jcmVhdGVTcHkoJ2RpYWxvZ01vZGVsS2xhc3MnKTsK KyAgICBkaWFsb2dNb2RlbEtsYXNzU3B5LmFuZC5yZXR1cm5WYWx1ZShnZW5lcmF0ZWRCYWNrdXBN b2RlbCk7CisKKyAgICB2aWV3U2NoZW1hID0ge307CisgICAgYmFja2Zvcm0gPSBqYXNtaW5lLmNy ZWF0ZVNweU9iaignYmFja2Zvcm0nLCBbJ2dlbmVyYXRlVmlld1NjaGVtYScsICdEaWFsb2cnXSk7 CisgICAgYmFja2Zvcm0uZ2VuZXJhdGVWaWV3U2NoZW1hLmFuZC5yZXR1cm5WYWx1ZSh2aWV3U2No ZW1hKTsKKworICAgIGJhY2t1cE5vZGVDaGlsZE5vZGVTcHkgPSBqYXNtaW5lLmNyZWF0ZVNweU9i aignc29tZXRoaW5nJywgWydhZGRDbGFzcyddKTsKKyAgICBqcXVlcnlTcHkuYW5kLmNhbGxGYWtl KChzZWxlY3RvcikgPT4geworICAgICAgaWYgKHNlbGVjdG9yID09PSAnPGRpdiBjbGFzcz1cJ2Jh Y2t1cF9kaWFsb2dcJz48L2Rpdj4nKSB7CisgICAgICAgIHJldHVybiBiYWNrdXBKUXVlcnlDb250 YWluZXJTcHk7CisgICAgICB9IGVsc2UgaWYgKHNlbGVjdG9yID09PSBiYWNrdXBOb2RlLmVsZW1l bnRzLmJvZHkuY2hpbGROb2Rlc1swXSkgeworICAgICAgICByZXR1cm4gYmFja3VwTm9kZUNoaWxk Tm9kZVNweTsKKyAgICAgIH0KKyAgICB9KTsKKworICB9KTsKKworICBkZXNjcmliZSgnI3ByZXBh cmUnLCAoKSA9PiB7CisgICAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgICBhbGVydGlmeVNweSA9 IGphc21pbmUuY3JlYXRlU3B5T2JqKCdhbGVydGlmeScsIFsnYWxlcnQnLCAnZGlhbG9nJ10pOwor ICAgICAgYmFja3VwRGlhbG9nV3JhcHBlciA9IG5ldyBCYWNrdXBEaWFsb2dXcmFwcGVyKAorICAg ICAgICAnPGRpdiBjbGFzcz1cJ2JhY2t1cF9kaWFsb2dcJz48L2Rpdj4nLAorICAgICAgICAnYmFj a3VwRGlhbG9nVGl0bGUnLAorICAgICAgICAnYmFja3VwJywKKyAgICAgICAganF1ZXJ5U3B5LAor ICAgICAgICBwZ0Jyb3dzZXIsCisgICAgICAgIGFsZXJ0aWZ5U3B5LAorICAgICAgICBkaWFsb2dN b2RlbEtsYXNzU3B5LAorICAgICAgICBiYWNrZm9ybQorICAgICAgKTsKKyAgICAgIGJhY2t1cERp YWxvZ1dyYXBwZXIgPSBPYmplY3QuYXNzaWduKGJhY2t1cERpYWxvZ1dyYXBwZXIsIGJhY2t1cE5v ZGUpOworICAgIH0pOworCisgICAgY29udGV4dCgnbm8gdHJlZSBlbGVtZW50IGlzIHNlbGVjdGVk JywgKCkgPT4geworICAgICAgaXQoJ2RvZXMgbm90IGNyZWF0ZSBhIGJhY2tmb3JtIGRpYWxvZycs ICgpID0+IHsKKyAgICAgICAgYmFja3VwRGlhbG9nV3JhcHBlci5wcmVwYXJlKCk7CisgICAgICAg IGV4cGVjdChiYWNrZm9ybS5EaWFsb2cpLm5vdC50b0hhdmVCZWVuQ2FsbGVkKCk7CisgICAgICB9 KTsKKworICAgICAgaXQoJ2Rpc2FibGVzIHRoZSBidXR0b24gInN1Ym1pdCBidXR0b24iIHVudGls IGEgZmlsZW5hbWUgaXMgc2VsZWN0ZWQnLCAoKSA9PiB7CisgICAgICAgIGJhY2t1cERpYWxvZ1dy YXBwZXIucHJlcGFyZSgpOworICAgICAgICBleHBlY3QoYmFja3VwRGlhbG9nV3JhcHBlci5fX2lu dGVybmFsLmJ1dHRvbnNbMl0uZWxlbWVudC5kaXNhYmxlZCkudG9CZSh0cnVlKTsKKyAgICAgIH0p OworICAgIH0pOworCisgICAgY29udGV4dCgnc2VsZWN0ZWQgdHJlZSBub2RlIGhhcyBubyBkYXRh JywgKCkgPT4geworICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgICAgIHBnQnJvd3Nlci50 cmVlTWVudS5zZWxlY3ROb2RlKG5vRGF0YU5vZGUuZG9tTm9kZSk7CisgICAgICB9KTsKKworICAg ICAgaXQoJ2RvZXMgbm90IGNyZWF0ZSBhIGJhY2tmb3JtIGRpYWxvZycsICgpID0+IHsKKyAgICAg ICAgYmFja3VwRGlhbG9nV3JhcHBlci5wcmVwYXJlKCk7CisgICAgICAgIGV4cGVjdChiYWNrZm9y bS5EaWFsb2cpLm5vdC50b0hhdmVCZWVuQ2FsbGVkKCk7CisgICAgICB9KTsKKworICAgICAgaXQo J2Rpc2FibGVzIHRoZSBidXR0b24gInN1Ym1pdCBidXR0b24iIHVudGlsIGEgZmlsZW5hbWUgaXMg c2VsZWN0ZWQnLCAoKSA9PiB7CisgICAgICAgIGJhY2t1cERpYWxvZ1dyYXBwZXIucHJlcGFyZSgp OworICAgICAgICBleHBlY3QoYmFja3VwRGlhbG9nV3JhcHBlci5fX2ludGVybmFsLmJ1dHRvbnNb Ml0uZWxlbWVudC5kaXNhYmxlZCkudG9CZSh0cnVlKTsKKyAgICAgIH0pOworICAgIH0pOworCisg ICAgY29udGV4dCgndHJlZSBlbGVtZW50IGlzIHNlbGVjdGVkJywgKCkgPT4geworICAgICAgbGV0 IHRyZWVIaWVyYXJjaHlJbmZvcm1hdGlvbjsKKyAgICAgIGxldCBkaWFsb2dTcHk7CisKKyAgICAg IGJlZm9yZUVhY2goKCkgPT4geworICAgICAgICB0cmVlSGllcmFyY2h5SW5mb3JtYXRpb24gPSB7 CisgICAgICAgICAgc2VydmVyOiB7CisgICAgICAgICAgICBfdHlwZTogJ3NlcnZlcicsCisgICAg ICAgICAgICBfaWQ6IDEwLAorICAgICAgICAgICAgcHJpb3JpdHk6IDAsCisgICAgICAgICAgICBs YWJlbDogJ3NvbWUtdHJlZS1sYWJlbCcsCisgICAgICAgICAgfSwKKyAgICAgICAgfTsKKyAgICAg ICAgcGdCcm93c2VyLnRyZWVNZW51LnNlbGVjdE5vZGUoc2VydmVyVHJlZU5vZGUuZG9tTm9kZSk7 CisgICAgICAgIHBnQnJvd3Nlci5Ob2Rlc1snc2VydmVyJ10uZ2V0VHJlZU5vZGVIaWVyYXJjaHku YW5kCisgICAgICAgICAgLnJldHVyblZhbHVlKHRyZWVIaWVyYXJjaHlJbmZvcm1hdGlvbik7Cisg ICAgICAgIGRpYWxvZ1NweSA9IGphc21pbmUuY3JlYXRlU3B5T2JqKCduZXdWaWV3JywgWydyZW5k ZXInXSk7CisgICAgICAgIGRpYWxvZ1NweS4kZWwgPSBqYXNtaW5lLmNyZWF0ZVNweU9iaignJGVs JywgWydmaW5kJywgJ2F0dHInXSk7CisgICAgICAgIGRpYWxvZ1NweS5tb2RlbCA9IGphc21pbmUu Y3JlYXRlU3B5T2JqKCdtb2RlbCcsIFsnb24nXSk7CisgICAgICAgIGRpYWxvZ1NweS4kZWwuZmlu ZC5hbmQucmV0dXJuVmFsdWUoW10pOworCisgICAgICAgIGJhY2tmb3JtLkRpYWxvZy5hbmQucmV0 dXJuVmFsdWUoZGlhbG9nU3B5KTsKKyAgICAgIH0pOworCisgICAgICBpdCgnY3JlYXRlcyBhIGJh Y2tmb3JtIGRpYWxvZyBhbmQgZGlzcGxheXMgaXQnLCAoKSA9PiB7CisgICAgICAgIGJhY2t1cERp YWxvZ1dyYXBwZXIucHJlcGFyZSgpOworICAgICAgICBleHBlY3QoYmFja2Zvcm0uRGlhbG9nKS50 b0hhdmVCZWVuQ2FsbGVkV2l0aCh7CisgICAgICAgICAgZWw6IGJhY2t1cEpRdWVyeUNvbnRhaW5l clNweSwKKyAgICAgICAgICBtb2RlbDogZ2VuZXJhdGVkQmFja3VwTW9kZWwsCisgICAgICAgICAg c2NoZW1hOiB2aWV3U2NoZW1hLAorICAgICAgICB9KTsKKworICAgICAgICBleHBlY3QoZGlhbG9n U3B5LnJlbmRlcikudG9IYXZlQmVlbkNhbGxlZCgpOworICAgICAgfSk7CisKKworICAgICAgaXQo J2FkZCBhbGVydGlmeSBjbGFzc2VzIHRvIHJlc3RvcmUgbm9kZSBjaGlsZG5vZGUnLCAoKSA9PiB7 CisgICAgICAgIGJhY2t1cERpYWxvZ1dyYXBwZXIucHJlcGFyZSgpOworICAgICAgICBleHBlY3Qo YmFja3VwTm9kZUNoaWxkTm9kZVNweS5hZGRDbGFzcykKKyAgICAgICAgICAudG9IYXZlQmVlbkNh bGxlZFdpdGgoJ2FsZXJ0aWZ5X3Rvb2xzX2RpYWxvZ19wcm9wZXJ0aWVzIG9ial9wcm9wZXJ0aWVz Jyk7CisgICAgICB9KTsKKworICAgICAgaXQoJ2Rpc2FibGVzIHRoZSBidXR0b24gc3VibWl0IGJ1 dHRvbiB1bnRpbCBhIGZpbGVuYW1lIGlzIHNlbGVjdGVkJywgKCkgPT4geworICAgICAgICBiYWNr dXBEaWFsb2dXcmFwcGVyLnByZXBhcmUoKTsKKyAgICAgICAgZXhwZWN0KGJhY2t1cE5vZGUuX19p bnRlcm5hbC5idXR0b25zWzJdLmVsZW1lbnQuZGlzYWJsZWQpLnRvQmUodHJ1ZSk7CisgICAgICB9 KTsKKworICAgICAgaXQoJ2dlbmVyYXRlcyBhIG5ldyBiYWNrdXAgbW9kZWwnLCAoKSA9PiB7Cisg ICAgICAgIGJhY2t1cERpYWxvZ1dyYXBwZXIucHJlcGFyZSgpOworICAgICAgICBleHBlY3QoZGlh bG9nTW9kZWxLbGFzc1NweSkudG9IYXZlQmVlbkNhbGxlZFdpdGgoCisgICAgICAgICAge3R5cGU6 ICdiYWNrdXAnfSwKKyAgICAgICAgICB7bm9kZV9pbmZvOiB0cmVlSGllcmFyY2h5SW5mb3JtYXRp b259CisgICAgICAgICk7CisgICAgICB9KTsKKworICAgICAgaXQoJ2FkZCB0aGUgbmV3IGRpYWxv ZyB0byB0aGUgYmFja3VwIG5vZGUgSFRNTCcsICgpID0+IHsKKyAgICAgICAgYmFja3VwRGlhbG9n V3JhcHBlci5wcmVwYXJlKCk7CisgICAgICAgIGV4cGVjdChiYWNrdXBOb2RlLmVsZW1lbnRzLmNv bnRlbnQuYXBwZW5kQ2hpbGQpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKGJhY2t1cEpRdWVyeUNvbnRh aW5lclNweSk7CisgICAgICB9KTsKKyAgICB9KTsKKyAgfSk7CisKKyAgZGVzY3JpYmUoJ29uQnV0 dG9uQ2xpY2tlZCcsICgpID0+IHsKKyAgICBsZXQgbmV0d29ya01vY2s7CisgICAgYmVmb3JlRWFj aCgoKSA9PiB7CisgICAgICBuZXR3b3JrTW9jayA9IG5ldyBNb2NrQWRhcHRlcihheGlvcyk7Cisg ICAgICBiYWNrdXBEaWFsb2dXcmFwcGVyID0gbmV3IEJhY2t1cERpYWxvZ1dyYXBwZXIoCisgICAg ICAgICc8ZGl2IGNsYXNzPVwnYmFja3VwX2RpYWxvZ1wnPjwvZGl2PicsCisgICAgICAgICdiYWNr dXBEaWFsb2dUaXRsZScsCisgICAgICAgICdiYWNrdXAnLAorICAgICAgICBqcXVlcnlTcHksCisg ICAgICAgIHBnQnJvd3NlciwKKyAgICAgICAgYWxlcnRpZnlTcHksCisgICAgICAgIGRpYWxvZ01v ZGVsS2xhc3NTcHksCisgICAgICAgIGJhY2tmb3JtCisgICAgICApOworCisgICAgICBiYWNrdXBE aWFsb2dXcmFwcGVyID0gT2JqZWN0LmFzc2lnbihiYWNrdXBEaWFsb2dXcmFwcGVyLCBiYWNrdXBO b2RlKTsKKyAgICB9KTsKKworICAgIGFmdGVyRWFjaCgoKSA9PiB7CisgICAgICBuZXR3b3JrTW9j ay5yZXN0b3JlKCk7CisgICAgfSk7CisKKyAgICBjb250ZXh0KCdkaWFsb2cgaGVscCBidXR0b24g d2FzIHByZXNzZWQnLCAoKSA9PiB7CisgICAgICBsZXQgbmV0d29ya0NhbGxlZDsKKyAgICAgIGJl Zm9yZUVhY2goKCkgPT4geworICAgICAgICBuZXR3b3JrQ2FsbGVkID0gZmFsc2U7CisgICAgICAg IG5ldHdvcmtNb2NrLm9uQW55KC8uKi8pLnJlcGx5KCgpID0+IHsKKyAgICAgICAgICBuZXR3b3Jr Q2FsbGVkID0gdHJ1ZTsKKyAgICAgICAgICByZXR1cm4gWzIwMCwge31dOworICAgICAgICB9KTsK KyAgICAgICAgcGdCcm93c2VyLnRyZWVNZW51LnNlbGVjdE5vZGUoc2VydmVyVHJlZU5vZGUuZG9t Tm9kZSk7CisgICAgICAgIHBnQnJvd3Nlci5zaG93SGVscCA9IGphc21pbmUuY3JlYXRlU3B5KCdz aG93SGVscCcpOworCisgICAgICAgIGNvbnN0IGV2ZW50ID0geworICAgICAgICAgIGJ1dHRvbjog eworICAgICAgICAgICAgZWxlbWVudDogeworICAgICAgICAgICAgICBuYW1lOiAnZGlhbG9nX2hl bHAnLAorICAgICAgICAgICAgICBnZXRBdHRyaWJ1dGU6IChhdHRyaWJ1dGVOYW1lKSA9PiB7Cisg ICAgICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZU5hbWUgPT09ICd1cmwnKSB7CisgICAgICAgICAg ICAgICAgICByZXR1cm4gJ2h0dHA6Ly9zb21ldXJsJzsKKyAgICAgICAgICAgICAgICB9IGVsc2Ug aWYgKGF0dHJpYnV0ZU5hbWUgPT09ICdsYWJlbCcpIHsKKyAgICAgICAgICAgICAgICAgIHJldHVy biAnc29tZSBsYWJlbCc7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9LAorICAg ICAgICAgICAgfSwKKyAgICAgICAgICB9LAorICAgICAgICB9OworICAgICAgICBiYWNrdXBEaWFs b2dXcmFwcGVyLmNhbGxiYWNrKGV2ZW50KTsKKyAgICAgIH0pOworCisgICAgICBpdCgnZGlzcGxh eXMgaGVscCBmb3IgZGlhbG9nJywgKCkgPT4geworICAgICAgICBleHBlY3QocGdCcm93c2VyLnNo b3dIZWxwKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCgKKyAgICAgICAgICAnZGlhbG9nX2hlbHAnLAor ICAgICAgICAgICdodHRwOi8vc29tZXVybCcsCisgICAgICAgICAgcGdCcm93c2VyLk5vZGVzWydz ZXJ2ZXInXSwKKyAgICAgICAgICBzZXJ2ZXJUcmVlTm9kZSwKKyAgICAgICAgICAnc29tZSBsYWJl bCcKKyAgICAgICAgKTsKKyAgICAgIH0pOworCisgICAgICBpdCgnZG9lcyBub3Qgc3RhcnQgdGhl IGJhY2t1cCcsICgpID0+IHsKKyAgICAgICAgZXhwZWN0KG5ldHdvcmtDYWxsZWQpLnRvQmUoZmFs c2UpOworICAgICAgfSk7CisgICAgfSk7CisKKyAgICBjb250ZXh0KCdvYmplY3QgaGVscCBidXR0 b24gd2FzIHByZXNzZWQnLCAoKSA9PiB7CisgICAgICBsZXQgbmV0d29ya0NhbGxlZDsKKyAgICAg IGJlZm9yZUVhY2goKCkgPT4geworICAgICAgICBuZXR3b3JrQ2FsbGVkID0gZmFsc2U7CisgICAg ICAgIG5ldHdvcmtNb2NrLm9uQW55KC8uKi8pLnJlcGx5KCgpID0+IHsKKyAgICAgICAgICBuZXR3 b3JrQ2FsbGVkID0gdHJ1ZTsKKyAgICAgICAgICByZXR1cm4gWzIwMCwge31dOworICAgICAgICB9 KTsKKyAgICAgICAgcGdCcm93c2VyLnRyZWVNZW51LnNlbGVjdE5vZGUoc2VydmVyVHJlZU5vZGUu ZG9tTm9kZSk7CisgICAgICAgIHBnQnJvd3Nlci5zaG93SGVscCA9IGphc21pbmUuY3JlYXRlU3B5 KCdzaG93SGVscCcpOworCisgICAgICAgIGNvbnN0IGV2ZW50ID0geworICAgICAgICAgIGJ1dHRv bjogeworICAgICAgICAgICAgZWxlbWVudDogeworICAgICAgICAgICAgICBuYW1lOiAnb2JqZWN0 X2hlbHAnLAorICAgICAgICAgICAgICBnZXRBdHRyaWJ1dGU6IChhdHRyaWJ1dGVOYW1lKSA9PiB7 CisgICAgICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZU5hbWUgPT09ICd1cmwnKSB7CisgICAgICAg ICAgICAgICAgICByZXR1cm4gJ2h0dHA6Ly9zb21ldXJsJzsKKyAgICAgICAgICAgICAgICB9IGVs c2UgaWYgKGF0dHJpYnV0ZU5hbWUgPT09ICdsYWJlbCcpIHsKKyAgICAgICAgICAgICAgICAgIHJl dHVybiAnc29tZSBsYWJlbCc7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9LAor ICAgICAgICAgICAgfSwKKyAgICAgICAgICB9LAorICAgICAgICB9OworICAgICAgICBiYWNrdXBE aWFsb2dXcmFwcGVyLmNhbGxiYWNrKGV2ZW50KTsKKyAgICAgIH0pOworCisgICAgICBpdCgnZGlz cGxheXMgaGVscCBmb3IgZGlhbG9nJywgKCkgPT4geworICAgICAgICBleHBlY3QocGdCcm93c2Vy LnNob3dIZWxwKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCgKKyAgICAgICAgICAnb2JqZWN0X2hlbHAn LAorICAgICAgICAgICdodHRwOi8vc29tZXVybCcsCisgICAgICAgICAgcGdCcm93c2VyLk5vZGVz WydzZXJ2ZXInXSwKKyAgICAgICAgICBzZXJ2ZXJUcmVlTm9kZSwKKyAgICAgICAgICAnc29tZSBs YWJlbCcKKyAgICAgICAgKTsKKyAgICAgIH0pOworCisgICAgICBpdCgnZG9lcyBub3Qgc3RhcnQg dGhlIGJhY2t1cCcsICgpID0+IHsKKyAgICAgICAgZXhwZWN0KG5ldHdvcmtDYWxsZWQpLnRvQmUo ZmFsc2UpOworICAgICAgfSk7CisgICAgfSk7CisKKyAgICBjb250ZXh0KCdiYWNrdXAgYnV0dG9u IHdhcyBwcmVzc2VkJywgKCkgPT4geworICAgICAgY29udGV4dCgnbm8gdHJlZSBub2RlIGlzIHNl bGVjdGVkJywgKCkgPT4geworICAgICAgICBpdCgnZG9lcyBub3Qgc3RhcnQgdGhlIGJhY2t1cCcs ICgpID0+IHsKKyAgICAgICAgICBsZXQgbmV0d29ya0NhbGxlZCA9IGZhbHNlOworICAgICAgICAg IG5ldHdvcmtNb2NrLm9uQW55KC8uKi8pLnJlcGx5KCgpID0+IHsKKyAgICAgICAgICAgIG5ldHdv cmtDYWxsZWQgPSB0cnVlOworICAgICAgICAgICAgcmV0dXJuIFsyMDAsIHt9XTsKKyAgICAgICAg ICB9KTsKKworICAgICAgICAgIGxldCBldmVudCA9IHsKKyAgICAgICAgICAgIGJ1dHRvbjogewor ICAgICAgICAgICAgICAnZGF0YS1idG4tbmFtZSc6ICdiYWNrdXAnLAorICAgICAgICAgICAgICBl bGVtZW50OiB7CisgICAgICAgICAgICAgICAgZ2V0QXR0cmlidXRlOiAoKSA9PiB7CisgICAgICAg ICAgICAgICAgICByZXR1cm4gJ2h0dHA6Ly9zb21ldXJsJzsKKyAgICAgICAgICAgICAgICB9LAor ICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgfSwKKyAgICAgICAgICB9OworCisgICAgICAg ICAgYmFja3VwRGlhbG9nV3JhcHBlci5jYWxsYmFjayhldmVudCk7CisgICAgICAgICAgZXhwZWN0 KG5ldHdvcmtDYWxsZWQpLnRvQmUoZmFsc2UpOworICAgICAgICB9KTsKKyAgICAgIH0pOworCisg ICAgICBjb250ZXh0KCd0cmVlIG5vZGUgaGFzIG5vIGRhdGEnLCAoKSA9PiB7CisgICAgICAgIGl0 KCdkb2VzIG5vdCBzdGFydCB0aGUgYmFja3VwJywgKCkgPT4geworICAgICAgICAgIHBnQnJvd3Nl ci50cmVlTWVudS5zZWxlY3ROb2RlKG5vRGF0YU5vZGUuZG9tTm9kZSk7CisKKyAgICAgICAgICBs ZXQgbmV0d29ya0NhbGxlZCA9IGZhbHNlOworICAgICAgICAgIG5ldHdvcmtNb2NrLm9uQW55KC8u Ki8pLnJlcGx5KCgpID0+IHsKKyAgICAgICAgICAgIG5ldHdvcmtDYWxsZWQgPSB0cnVlOworICAg ICAgICAgICAgcmV0dXJuIFsyMDAsIHt9XTsKKyAgICAgICAgICB9KTsKKworICAgICAgICAgIGxl dCBldmVudCA9IHsKKyAgICAgICAgICAgIGJ1dHRvbjogeworICAgICAgICAgICAgICAnZGF0YS1i dG4tbmFtZSc6ICdiYWNrdXAnLAorICAgICAgICAgICAgICBlbGVtZW50OiB7CisgICAgICAgICAg ICAgICAgZ2V0QXR0cmlidXRlOiAoKSA9PiB7CisgICAgICAgICAgICAgICAgICByZXR1cm4gJ2h0 dHA6Ly9zb21ldXJsJzsKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICB9LAorICAg ICAgICAgICAgfSwKKyAgICAgICAgICB9OworCisgICAgICAgICAgYmFja3VwRGlhbG9nV3JhcHBl ci5jYWxsYmFjayhldmVudCk7CisgICAgICAgICAgZXhwZWN0KG5ldHdvcmtDYWxsZWQpLnRvQmUo ZmFsc2UpOworICAgICAgICB9KTsKKyAgICAgIH0pOworCisgICAgICBjb250ZXh0KCd0cmVlIG5v ZGUgaGFzIGRhdGEnLCAoKSA9PiB7CisgICAgICAgIGNvbnRleHQoJ3doZW4gZGlhbG9nIHR5cGUg aXMgZ2xvYmFsJywgKCkgPT4geworICAgICAgICAgIGxldCBldmVudDsKKyAgICAgICAgICBiZWZv cmVFYWNoKCgpID0+IHsKKyAgICAgICAgICAgIHBnQnJvd3Nlci50cmVlTWVudS5zZWxlY3ROb2Rl KHNlcnZlclRyZWVOb2RlLmRvbU5vZGUpOworCisgICAgICAgICAgICBiYWNrdXBEaWFsb2dXcmFw cGVyLnZpZXcgPSB7CisgICAgICAgICAgICAgIG1vZGVsOiBuZXcgRmFrZU1vZGVsKCksCisgICAg ICAgICAgICB9OworCisgICAgICAgICAgICBldmVudCA9IHsKKyAgICAgICAgICAgICAgYnV0dG9u OiB7CisgICAgICAgICAgICAgICAgJ2RhdGEtYnRuLW5hbWUnOiAnYmFja3VwJywKKyAgICAgICAg ICAgICAgICBlbGVtZW50OiB7CisgICAgICAgICAgICAgICAgICBnZXRBdHRyaWJ1dGU6ICgpID0+ IHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdodHRwOi8vc29tZXVybCc7CisgICAgICAg ICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgIH0sCisgICAg ICAgICAgICB9OworICAgICAgICAgIH0pOworCisgICAgICAgICAgY29udGV4dCgnd2hlbiB0aGUg YmFja3VwIGpvYiBpcyBjcmVhdGVkIHN1Y2Nlc3NmdWxseScsICgpID0+IHsKKyAgICAgICAgICAg IGxldCBkYXRhU2VudFRvU2VydmVyOworICAgICAgICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7Cisg ICAgICAgICAgICAgIHBnQnJvd3Nlci5FdmVudHMgPSBqYXNtaW5lLmNyZWF0ZVNweU9iaignRXZl bnRzJywgWyd0cmlnZ2VyJ10pOworICAgICAgICAgICAgICBhbGVydGlmeVNweS5zdWNjZXNzID0g amFzbWluZS5jcmVhdGVTcHkoJ3N1Y2Nlc3MnKTsKKworICAgICAgICAgICAgICBuZXR3b3JrTW9j ay5vblBvc3QoJy9iYWNrdXAvam9iLzEwJykucmVwbHkoKHJlcXVlc3QpID0+IHsKKyAgICAgICAg ICAgICAgICBkYXRhU2VudFRvU2VydmVyID0gcmVxdWVzdC5kYXRhOworICAgICAgICAgICAgICAg IHJldHVybiBbMjAwLCB7fV07CisgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7CisK KyAgICAgICAgICAgIGl0KCdjcmVhdGVzIGEgc3VjY2VzcyBhbGVydCBib3gnLCAoZG9uZSkgPT4g eworICAgICAgICAgICAgICBiYWNrdXBEaWFsb2dXcmFwcGVyLmNhbGxiYWNrKGV2ZW50KTsKKyAg ICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7CisgICAgICAgICAgICAgICAgZXhwZWN0KGFs ZXJ0aWZ5U3B5LnN1Y2Nlc3MpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKAorICAgICAgICAgICAgICAg ICAgJ0JhY2t1cCBqb2IgY3JlYXRlZC4nLAorICAgICAgICAgICAgICAgICAgNQorICAgICAgICAg ICAgICAgICk7CisgICAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAgICB9LCAwKTsK KyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBpdCgndHJpZ2dlciBhbiBldmVudCB0byBi YWNrZ3JvdW5kIHByb2Nlc3MnLCAoZG9uZSkgPT4geworICAgICAgICAgICAgICBiYWNrdXBEaWFs b2dXcmFwcGVyLmNhbGxiYWNrKGV2ZW50KTsKKworICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgp ID0+IHsKKyAgICAgICAgICAgICAgICBleHBlY3QocGdCcm93c2VyLkV2ZW50cy50cmlnZ2VyKS50 b0hhdmVCZWVuQ2FsbGVkV2l0aCgKKyAgICAgICAgICAgICAgICAgICdwZ2FkbWluLWJncHJvY2Vz czpjcmVhdGVkJywKKyAgICAgICAgICAgICAgICAgIGJhY2t1cERpYWxvZ1dyYXBwZXIKKyAgICAg ICAgICAgICAgICApOworICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAgICAgfSwg MCk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgaXQoJ3NlbmQgdGhlIGNvcnJlY3Qg cGFyYW1lbnRlcnMgdG8gdGhlIGJhY2tlbmQnLCAoZG9uZSkgPT4geworICAgICAgICAgICAgICBi YWNrdXBEaWFsb2dXcmFwcGVyLmNhbGxiYWNrKGV2ZW50KTsKKyAgICAgICAgICAgICAgc2V0VGlt ZW91dCgoKSA9PiB7CisgICAgICAgICAgICAgICAgZXhwZWN0KEpTT04ucGFyc2UoZGF0YVNlbnRU b1NlcnZlcikpLnRvRXF1YWwoCisgICAgICAgICAgICAgICAgICB7fQorICAgICAgICAgICAgICAg ICk7CisgICAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAgICB9LCAwKTsKKyAgICAg ICAgICAgIH0pOworICAgICAgICAgIH0pOworCisgICAgICAgICAgY29udGV4dCgnd2hlbiBjcmVh dGluZyBiYWNrdXAgam9iIGZhaWxzJywgKCkgPT4geworICAgICAgICAgICAgaXQoJ2NyZWF0ZXMg YW4gYWxlcnQgYm94JywgKGRvbmUpID0+IHsKKyAgICAgICAgICAgICAgYWxlcnRpZnlTcHkuYWxl cnQgPSBqYXNtaW5lLmNyZWF0ZVNweSgnYWxlcnQnKTsKKyAgICAgICAgICAgICAgbmV0d29ya01v Y2sub25Qb3N0KCcvYmFja3VwL2pvYi8xMCcpLnJlcGx5KCgpID0+IHsKKyAgICAgICAgICAgICAg ICByZXR1cm4gWzQwMCwgeworICAgICAgICAgICAgICAgICAgZXJyb3Jtc2c6ICdzb21lLWVycm9y LW1lc3NhZ2UnLAorICAgICAgICAgICAgICAgIH1dOworICAgICAgICAgICAgICB9KTsKKworICAg ICAgICAgICAgICBiYWNrdXBEaWFsb2dXcmFwcGVyLmNhbGxiYWNrKGV2ZW50KTsKKyAgICAgICAg ICAgICAgc2V0VGltZW91dCgoKSA9PiB7CisgICAgICAgICAgICAgICAgZXhwZWN0KGFsZXJ0aWZ5 U3B5LmFsZXJ0KS50b0hhdmVCZWVuQ2FsbGVkV2l0aCgKKyAgICAgICAgICAgICAgICAgICdCYWNr dXAgam9iIGZhaWxlZC4nLAorICAgICAgICAgICAgICAgICAgJ3NvbWUtZXJyb3ItbWVzc2FnZScK KyAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAg ICAgfSwgMCk7CisKKyAgICAgICAgICAgIH0pOworICAgICAgICAgIH0pOworICAgICAgICB9KTsK KworICAgICAgICBjb250ZXh0KCd3aGVuIGRpYWxvZyB0eXBlIGlzIG9iamVjdCcsICgpID0+IHsK KyAgICAgICAgICBsZXQgZXZlbnQ7CisgICAgICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAg ICAgICAgICBiYWNrdXBEaWFsb2dXcmFwcGVyID0gbmV3IEJhY2t1cERpYWxvZ1dyYXBwZXIoCisg ICAgICAgICAgICAgICc8ZGl2IGNsYXNzPVwnYmFja3VwX2RpYWxvZ1wnPjwvZGl2PicsCisgICAg ICAgICAgICAgICdiYWNrdXBEaWFsb2dUaXRsZScsCisgICAgICAgICAgICAgICdiYWNrdXBfb2Jq ZWN0cycsCisgICAgICAgICAgICAgIGpxdWVyeVNweSwKKyAgICAgICAgICAgICAgcGdCcm93c2Vy LAorICAgICAgICAgICAgICBhbGVydGlmeVNweSwKKyAgICAgICAgICAgICAgZGlhbG9nTW9kZWxL bGFzc1NweSwKKyAgICAgICAgICAgICAgYmFja2Zvcm0KKyAgICAgICAgICAgICk7CisKKyAgICAg ICAgICAgIHBnQnJvd3Nlci50cmVlTWVudS5zZWxlY3ROb2RlKGRhdGFiYXNlVHJlZU5vZGUuZG9t Tm9kZSk7CisKKyAgICAgICAgICAgIGJhY2t1cERpYWxvZ1dyYXBwZXIudmlldyA9IHsKKyAgICAg ICAgICAgICAgbW9kZWw6IG5ldyBGYWtlTW9kZWwoKSwKKyAgICAgICAgICAgIH07CisKKyAgICAg ICAgICAgIGV2ZW50ID0geworICAgICAgICAgICAgICBidXR0b246IHsKKyAgICAgICAgICAgICAg ICAnZGF0YS1idG4tbmFtZSc6ICdiYWNrdXAnLAorICAgICAgICAgICAgICAgIGVsZW1lbnQ6IHsK KyAgICAgICAgICAgICAgICAgIGdldEF0dHJpYnV0ZTogKCkgPT4geworICAgICAgICAgICAgICAg ICAgICByZXR1cm4gJ2h0dHA6Ly9zb21ldXJsJzsKKyAgICAgICAgICAgICAgICAgIH0sCisgICAg ICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIH07CisgICAgICAg ICAgfSk7CisKKyAgICAgICAgICBjb250ZXh0KCd3aGVuIHRoZSBiYWNrdXAgam9iIGlzIGNyZWF0 ZWQgc3VjY2Vzc2Z1bGx5JywgKCkgPT4geworICAgICAgICAgICAgbGV0IGRhdGFTZW50VG9TZXJ2 ZXI7CisgICAgICAgICAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgICAgICAgICAgcGdCcm93 c2VyLkV2ZW50cyA9IGphc21pbmUuY3JlYXRlU3B5T2JqKCdFdmVudHMnLCBbJ3RyaWdnZXInXSk7 CisgICAgICAgICAgICAgIGFsZXJ0aWZ5U3B5LnN1Y2Nlc3MgPSBqYXNtaW5lLmNyZWF0ZVNweSgn c3VjY2VzcycpOworCisgICAgICAgICAgICAgIG5ldHdvcmtNb2NrLm9uUG9zdCgnL2JhY2t1cC9q b2IvMTAvb2JqZWN0JykucmVwbHkoKHJlcXVlc3QpID0+IHsKKyAgICAgICAgICAgICAgICBkYXRh U2VudFRvU2VydmVyID0gcmVxdWVzdC5kYXRhOworICAgICAgICAgICAgICAgIHJldHVybiBbMjAw LCB7fV07CisgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAg IGl0KCdjcmVhdGVzIGEgc3VjY2VzcyBhbGVydCBib3gnLCAoZG9uZSkgPT4geworICAgICAgICAg ICAgICBiYWNrdXBEaWFsb2dXcmFwcGVyLmNhbGxiYWNrKGV2ZW50KTsKKyAgICAgICAgICAgICAg c2V0VGltZW91dCgoKSA9PiB7CisgICAgICAgICAgICAgICAgZXhwZWN0KGFsZXJ0aWZ5U3B5LnN1 Y2Nlc3MpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKAorICAgICAgICAgICAgICAgICAgJ0JhY2t1cCBq b2IgY3JlYXRlZC4nLAorICAgICAgICAgICAgICAgICAgNQorICAgICAgICAgICAgICAgICk7Cisg ICAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAgICB9LCAwKTsKKyAgICAgICAgICAg IH0pOworCisgICAgICAgICAgICBpdCgndHJpZ2dlciBhbiBldmVudCB0byBiYWNrZ3JvdW5kIHBy b2Nlc3MnLCAoZG9uZSkgPT4geworICAgICAgICAgICAgICBiYWNrdXBEaWFsb2dXcmFwcGVyLmNh bGxiYWNrKGV2ZW50KTsKKworICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsKKyAgICAg ICAgICAgICAgICBleHBlY3QocGdCcm93c2VyLkV2ZW50cy50cmlnZ2VyKS50b0hhdmVCZWVuQ2Fs bGVkV2l0aCgKKyAgICAgICAgICAgICAgICAgICdwZ2FkbWluLWJncHJvY2VzczpjcmVhdGVkJywK KyAgICAgICAgICAgICAgICAgIGJhY2t1cERpYWxvZ1dyYXBwZXIKKyAgICAgICAgICAgICAgICAp OworICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAgICAgfSwgMCk7CisgICAgICAg ICAgICB9KTsKKworICAgICAgICAgICAgaXQoJ3NlbmQgdGhlIGNvcnJlY3QgcGFyYW1ldGVycyB0 byB0aGUgYmFja2VuZCcsIChkb25lKSA9PiB7CisgICAgICAgICAgICAgIGJhY2t1cERpYWxvZ1dy YXBwZXIuY2FsbGJhY2soZXZlbnQpOworICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsK KyAgICAgICAgICAgICAgICBleHBlY3QoSlNPTi5wYXJzZShkYXRhU2VudFRvU2VydmVyKSkudG9F cXVhbCgKKyAgICAgICAgICAgICAgICAgIHtkYXRhYmFzZTogJ3NvbWUtZGF0YWJhc2UtbGFiZWwn fQorICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAg ICAgICB9LCAwKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgIH0pOworCisgICAgICAgICAg Y29udGV4dCgnd2hlbiBjcmVhdGluZyBiYWNrdXAgam9iIGZhaWxzJywgKCkgPT4geworICAgICAg ICAgICAgaXQoJ2NyZWF0ZXMgYW4gYWxlcnQgYm94JywgKGRvbmUpID0+IHsKKyAgICAgICAgICAg ICAgYWxlcnRpZnlTcHkuYWxlcnQgPSBqYXNtaW5lLmNyZWF0ZVNweSgnYWxlcnQnKTsKKyAgICAg ICAgICAgICAgbmV0d29ya01vY2sub25Qb3N0KCcvYmFja3VwL2pvYi8xMC9vYmplY3QnKS5yZXBs eSgoKSA9PiB7CisgICAgICAgICAgICAgICAgcmV0dXJuIFs0MDAsIHsKKyAgICAgICAgICAgICAg ICAgIGVycm9ybXNnOiAnc29tZS1lcnJvci1tZXNzYWdlJywKKyAgICAgICAgICAgICAgICB9XTsK KyAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgYmFja3VwRGlhbG9nV3JhcHBlci5j YWxsYmFjayhldmVudCk7CisgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4geworICAgICAg ICAgICAgICAgIGV4cGVjdChhbGVydGlmeVNweS5hbGVydCkudG9IYXZlQmVlbkNhbGxlZFdpdGgo CisgICAgICAgICAgICAgICAgICAnQmFja3VwIGpvYiBmYWlsZWQuJywKKyAgICAgICAgICAgICAg ICAgICdzb21lLWVycm9yLW1lc3NhZ2UnCisgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAg ICAgICBkb25lKCk7CisgICAgICAgICAgICAgIH0sIDApOworICAgICAgICAgICAgfSk7CisgICAg ICAgICAgfSk7CisgICAgICAgIH0pOworICAgICAgfSk7CisgICAgfSk7CisgIH0pOworCisgIGRl c2NyaWJlKCcjc2V0RXh0cmFQYXJhbWV0ZXJzJywgKCkgPT4geworICAgIGxldCBzZWxlY3RlZFRy ZWVOb2RlOworICAgIGxldCB0cmVlSW5mbzsKKyAgICBsZXQgbW9kZWw7CisKKyAgICBjb250ZXh0 KCd3aGVuIGRpYWxvZyB0eXBlIGlzIGdsb2JhbCcsICgpID0+IHsKKyAgICAgIGJlZm9yZUVhY2go KCkgPT4geworICAgICAgICBiYWNrdXBEaWFsb2dXcmFwcGVyID0gbmV3IEJhY2t1cERpYWxvZ1dy YXBwZXIoCisgICAgICAgICAgJzxkaXYgY2xhc3M9XCdiYWNrdXBfZGlhbG9nXCc+PC9kaXY+JywK KyAgICAgICAgICAnYmFja3VwRGlhbG9nVGl0bGUnLAorICAgICAgICAgICdiYWNrdXAnLAorICAg ICAgICAgIGpxdWVyeVNweSwKKyAgICAgICAgICBwZ0Jyb3dzZXIsCisgICAgICAgICAgYWxlcnRp ZnlTcHksCisgICAgICAgICAgZGlhbG9nTW9kZWxLbGFzc1NweSwKKyAgICAgICAgICBiYWNrZm9y bQorICAgICAgICApOworCisgICAgICAgIHRyZWVJbmZvID0ge307CisgICAgICAgIG1vZGVsID0g bmV3IEZha2VNb2RlbCgpOworICAgICAgICBiYWNrdXBEaWFsb2dXcmFwcGVyLnZpZXcgPSB7Cisg ICAgICAgICAgbW9kZWw6IG1vZGVsLAorICAgICAgICB9OworICAgICAgfSk7CisKKworICAgICAg aXQoJ3NldHMgbm90aGluZyBvbiB0aGUgdmlldyBtb2RlbCcsICgpID0+IHsKKyAgICAgICAgYmFj a3VwRGlhbG9nV3JhcHBlci5zZXRFeHRyYVBhcmFtZXRlcnMoc2VsZWN0ZWRUcmVlTm9kZSwgdHJl ZUluZm8pOworICAgICAgICBleHBlY3QobW9kZWwudG9KU09OKCkpLnRvRXF1YWwoe30pOworICAg ICAgfSk7CisgICAgfSk7CisKKyAgICBjb250ZXh0KCd3aGVuIGRpYWxvZyB0eXBlIGlzIG9iamVj dCcsICgpID0+IHsKKyAgICAgIGJlZm9yZUVhY2goKCkgPT4geworICAgICAgICBiYWNrdXBEaWFs b2dXcmFwcGVyID0gbmV3IEJhY2t1cERpYWxvZ1dyYXBwZXIoCisgICAgICAgICAgJzxkaXYgY2xh c3M9XCdiYWNrdXBfZGlhbG9nXCc+PC9kaXY+JywKKyAgICAgICAgICAnYmFja3VwRGlhbG9nVGl0 bGUnLAorICAgICAgICAgICdiYWNrdXBfb2JqZWN0cycsCisgICAgICAgICAganF1ZXJ5U3B5LAor ICAgICAgICAgIHBnQnJvd3NlciwKKyAgICAgICAgICBhbGVydGlmeVNweSwKKyAgICAgICAgICBk aWFsb2dNb2RlbEtsYXNzU3B5LAorICAgICAgICAgIGJhY2tmb3JtCisgICAgICAgICk7CisKKyAg ICAgICAgdHJlZUluZm8gPSB7CisgICAgICAgICAgZGF0YWJhc2U6IHsKKyAgICAgICAgICAgIF9s YWJlbDogJ3NvbWUtZGF0YWJhc2UtbGFiZWwnLAorICAgICAgICAgIH0sCisgICAgICAgICAgc2No ZW1hOiB7CisgICAgICAgICAgICBfbGFiZWw6ICdzb21lLXRyZWVpbmZvLWxhYmVsJywKKyAgICAg ICAgICB9LAorICAgICAgICB9OworCisgICAgICAgIG1vZGVsID0gbmV3IEZha2VNb2RlbCgpOwor ICAgICAgICBzZWxlY3RlZFRyZWVOb2RlID0gbmV3IFRyZWVOb2RlKCdzb21lLXNlbGVjdGVkLW5v ZGUnLAorICAgICAgICAgIHtfdHlwZTogJ3NvbWUtdHlwZScsIF9sYWJlbDogJ3NvbWUtc2VsZWN0 ZWQtbGFiZWwnfSwKKyAgICAgICAgICBbXSk7CisgICAgICAgIGJhY2t1cERpYWxvZ1dyYXBwZXIu dmlldyA9IHsKKyAgICAgICAgICBtb2RlbDogbW9kZWwsCisgICAgICAgIH07CisgICAgICB9KTsK KworICAgICAgaXQoJ3NldHMgdGhlIGRhdGFiYXNlIGxhYmVsIG9uIHRoZSBtb2RlbCcsICgpID0+ IHsKKyAgICAgICAgYmFja3VwRGlhbG9nV3JhcHBlci5zZXRFeHRyYVBhcmFtZXRlcnMoc2VsZWN0 ZWRUcmVlTm9kZSwgdHJlZUluZm8pOworICAgICAgICBleHBlY3QobW9kZWwudG9KU09OKCkpLnRv RXF1YWwoeworICAgICAgICAgICdkYXRhYmFzZSc6ICdzb21lLWRhdGFiYXNlLWxhYmVsJywKKyAg ICAgICAgfSk7CisgICAgICB9KTsKKworICAgICAgY29udGV4dCgnd2hlbiB0aGUgc2VsZWN0ZWQg aXMgYSBzY2hlbWEgdHlwZScsICgpID0+IHsKKyAgICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7Cisg ICAgICAgICAgc2VsZWN0ZWRUcmVlTm9kZSA9IG5ldyBUcmVlTm9kZSgnc29tZS1zZWxlY3RlZC1u b2RlJywKKyAgICAgICAgICAgIHtfdHlwZTogJ3NjaGVtYScsIF9sYWJlbDogJ3NvbWUtc2NoZW1h LWxhYmVsJ30sCisgICAgICAgICAgICBbXSk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCdz ZXRzIHRoZSBzY2hlbWEgbGFiZWwgb24gdGhlIG1vZGVsJywgKCkgPT4geworICAgICAgICAgIGJh Y2t1cERpYWxvZ1dyYXBwZXIuc2V0RXh0cmFQYXJhbWV0ZXJzKHNlbGVjdGVkVHJlZU5vZGUsIHRy ZWVJbmZvKTsKKyAgICAgICAgICBleHBlY3QobW9kZWwudG9KU09OKCkpLnRvRXF1YWwoeworICAg ICAgICAgICAgJ2RhdGFiYXNlJzogJ3NvbWUtZGF0YWJhc2UtbGFiZWwnLAorICAgICAgICAgICAg J3NjaGVtYXMnOiBbJ3NvbWUtc2NoZW1hLWxhYmVsJ10sCisgICAgICAgICAgfSk7CisgICAgICAg IH0pOworICAgICAgfSk7CisKKyAgICAgIGNvbnRleHQoJ3doZW4gdGhlIHNlbGVjdGVkIGlzIGEg dGFibGUgdHlwZScsICgpID0+IHsKKyAgICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgICAg ICAgc2VsZWN0ZWRUcmVlTm9kZSA9IG5ldyBUcmVlTm9kZSgnc29tZS1zZWxlY3RlZC1ub2RlJywK KyAgICAgICAgICAgIHtfdHlwZTogJ3RhYmxlJywgX2xhYmVsOiAnc29tZS10YWJsZS1sYWJlbCd9 LAorICAgICAgICAgICAgW10pOworICAgICAgICB9KTsKKworICAgICAgICBpdCgnc2V0cyB0aGUg c2NoZW1hIGxhYmVsIG9uIHRoZSBtb2RlbCcsICgpID0+IHsKKyAgICAgICAgICBiYWNrdXBEaWFs b2dXcmFwcGVyLnNldEV4dHJhUGFyYW1ldGVycyhzZWxlY3RlZFRyZWVOb2RlLCB0cmVlSW5mbyk7 CisgICAgICAgICAgZXhwZWN0KG1vZGVsLnRvSlNPTigpKS50b0VxdWFsKHsKKyAgICAgICAgICAg ICdkYXRhYmFzZSc6ICdzb21lLWRhdGFiYXNlLWxhYmVsJywKKyAgICAgICAgICAgICd0YWJsZXMn OiBbWydzb21lLXRyZWVpbmZvLWxhYmVsJywgJ3NvbWUtdGFibGUtbGFiZWwnXV0sCisgICAgICAg ICAgfSk7CisgICAgICAgIH0pOworICAgICAgfSk7CisKKyAgICAgIGNvbnRleHQoJ3doZW4gdGhl IG1vZGVsIGhhcyBubyByYXRpbyB2YWx1ZScsICgpID0+IHsKKyAgICAgICAgYmVmb3JlRWFjaCgo KSA9PiB7CisgICAgICAgICAgbW9kZWwuc2V0KCdyYXRpbycsICcnKTsKKyAgICAgICAgfSk7CisK KyAgICAgICAgaXQoJ3NldHMgY2xlYXJzIHRoZSByYXRpbyB2YWx1ZScsICgpID0+IHsKKyAgICAg ICAgICBiYWNrdXBEaWFsb2dXcmFwcGVyLnNldEV4dHJhUGFyYW1ldGVycyhzZWxlY3RlZFRyZWVO b2RlLCB0cmVlSW5mbyk7CisgICAgICAgICAgZXhwZWN0KG1vZGVsLmdldCgncmF0aW8nKSkudG9C ZVVuZGVmaW5lZCgpOworICAgICAgICB9KTsKKyAgICAgIH0pOworCisgICAgICBjb250ZXh0KCd3 aGVuIHRoZSBtb2RlbCBoYXMgYSB2YWxpZCByYXRpbyB2YWx1ZScsICgpID0+IHsKKyAgICAgICAg YmVmb3JlRWFjaCgoKSA9PiB7CisgICAgICAgICAgbW9kZWwuc2V0KCdyYXRpbycsICcwLjI1Jyk7 CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCdzZXRzIGNsZWFycyB0aGUgcmF0aW8gdmFsdWUn LCAoKSA9PiB7CisgICAgICAgICAgYmFja3VwRGlhbG9nV3JhcHBlci5zZXRFeHRyYVBhcmFtZXRl cnMoc2VsZWN0ZWRUcmVlTm9kZSwgdHJlZUluZm8pOworICAgICAgICAgIGV4cGVjdChtb2RlbC5n ZXQoJ3JhdGlvJykpLnRvRXF1YWwoJzAuMjUnKTsKKyAgICAgICAgfSk7CisgICAgICB9KTsKKyAg ICB9KTsKKyAgfSk7Cit9KTsKZGlmZiAtLWdpdCBhL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQv YmFja3VwL2dsb2JhbF9zZXJ2ZXJfYmFja3VwX2RpYWxvZ19zcGVjLmpzIGIvd2ViL3JlZ3Jlc3Np b24vamF2YXNjcmlwdC9iYWNrdXAvZ2xvYmFsX3NlcnZlcl9iYWNrdXBfZGlhbG9nX3NwZWMuanMK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLjg2ZGY2NzJlCi0tLSAvZGV2L251 bGwKKysrIGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9iYWNrdXAvZ2xvYmFsX3NlcnZlcl9i YWNrdXBfZGlhbG9nX3NwZWMuanMKQEAgLTAsMCArMSwxNjggQEAKKy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vCisvLyBwZ0Fk bWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisvLworLy8gQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAx OCwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorLy8gVGhpcyBzb2Z0d2FyZSBpcyByZWxl YXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisvLworLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KK2ltcG9ydCB7QmFj a3VwRGlhbG9nfSBmcm9tICcuLi8uLi8uLi9wZ2FkbWluL3Rvb2xzL2JhY2t1cC9zdGF0aWMvanMv YmFja3VwX2RpYWxvZyc7CitpbXBvcnQge1RyZWVGYWtlfSBmcm9tICcuLi90cmVlL3RyZWVfZmFr ZSc7CisKK2NvbnN0IGNvbnRleHQgPSBkZXNjcmliZTsKKworZGVzY3JpYmUoJ0dsb2JhbFNlcnZl ckJhY2t1cERpYWxvZycsICgpID0+IHsKKyAgbGV0IGJhY2t1cERpYWxvZzsKKyAgbGV0IHBnQnJv d3NlcjsKKyAgbGV0IGpxdWVyeVNweTsKKyAgbGV0IGFsZXJ0aWZ5U3B5OworICBsZXQgYmFja3Vw TW9kZWxTcHk7CisKKworICBsZXQgcm9vdE5vZGU7CisgIGxldCBzZXJ2ZXJUcmVlTm9kZTsKKyAg bGV0IHBwYXNTZXJ2ZXJUcmVlTm9kZTsKKworICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICBwZ0Jy b3dzZXIgPSB7CisgICAgICB0cmVlTWVudTogbmV3IFRyZWVGYWtlKCksCisgICAgICBOb2Rlczog eworICAgICAgICBzZXJ2ZXI6IGphc21pbmUuY3JlYXRlU3B5T2JqKCdOb2RlW3NlcnZlcl0nLCBb J2dldFRyZWVOb2RlSGllcmFyY2h5J10pLAorICAgICAgfSwKKyAgICB9OworICAgIHBnQnJvd3Nl ci5Ob2Rlcy5zZXJ2ZXIuaGFzSWQgPSB0cnVlOworICAgIGpxdWVyeVNweSA9IGphc21pbmUuY3Jl YXRlU3B5KCdqcXVlcnlTcHknKTsKKyAgICBiYWNrdXBNb2RlbFNweSA9IGphc21pbmUuY3JlYXRl U3B5KCdiYWNrdXBNb2RlbFNweScpOworCisgICAgcm9vdE5vZGUgPSBwZ0Jyb3dzZXIudHJlZU1l bnUuYWRkTmV3Tm9kZSgnbGV2ZWwxJywge30sIHVuZGVmaW5lZCwgW10pOworICAgIHNlcnZlclRy ZWVOb2RlID0gcGdCcm93c2VyLnRyZWVNZW51LmFkZE5ld05vZGUoJ2xldmVsMS4xJywgeworICAg ICAgX3R5cGU6ICdzZXJ2ZXInLAorICAgICAgX2lkOiAxMCwKKyAgICB9LCB1bmRlZmluZWQsIFsn bGV2ZWwxJ10pOworICAgIHBwYXNTZXJ2ZXJUcmVlTm9kZSA9IHBnQnJvd3Nlci50cmVlTWVudS5h ZGROZXdOb2RlKCdsZXZlbDEuMicsIHsKKyAgICAgIF90eXBlOiAnc2VydmVyJywKKyAgICAgIHNl cnZlcl90eXBlOiAncHBhcycsCisgICAgfSwgdW5kZWZpbmVkLCBbJ2xldmVsMSddKTsKKyAgICBw Z0Jyb3dzZXIudHJlZU1lbnUuYWRkTmV3Tm9kZSgnbGV2ZWwzJywge30sIHVuZGVmaW5lZCwgWyds ZXZlbDEnLCAnbGV2ZWwxLjInXSk7CisgICAgcGdCcm93c2VyLnRyZWVNZW51LmFkZE5ld05vZGUo J2xldmVsMy4xJywgdW5kZWZpbmVkLCB1bmRlZmluZWQsIFsnbGV2ZWwxJywgJ2xldmVsMS4yJywg J2xldmVsMyddKTsKKyAgfSk7CisKKyAgZGVzY3JpYmUoJyNkcmF3JywgKCkgPT4geworICAgIGJl Zm9yZUVhY2goKCkgPT4geworICAgICAgYWxlcnRpZnlTcHkgPSBqYXNtaW5lLmNyZWF0ZVNweU9i aignYWxlcnRpZnknLCBbJ2FsZXJ0JywgJ2RpYWxvZyddKTsKKyAgICAgIGFsZXJ0aWZ5U3B5WydC YWNrdXBEaWFsb2dfZ2xvYmFscyddID0gamFzbWluZS5jcmVhdGVTcHkoJ0JhY2t1cERpYWxvZ19n bG9iYWxzJyk7CisgICAgICBhbGVydGlmeVNweVsnQmFja3VwRGlhbG9nX3NlcnZlciddID0gamFz bWluZS5jcmVhdGVTcHkoJ0JhY2t1cERpYWxvZ19zZXJ2ZXInKTsKKyAgICAgIGJhY2t1cERpYWxv ZyA9IG5ldyBCYWNrdXBEaWFsb2coCisgICAgICAgIHBnQnJvd3NlciwKKyAgICAgICAganF1ZXJ5 U3B5LAorICAgICAgICBhbGVydGlmeVNweSwKKyAgICAgICAgYmFja3VwTW9kZWxTcHkKKyAgICAg ICk7CisKKyAgICAgIHBnQnJvd3Nlci5nZXRfcHJlZmVyZW5jZSA9IGphc21pbmUuY3JlYXRlU3B5 KCdnZXRfcHJlZmVyZW5jZXMnKTsKKyAgICB9KTsKKworICAgIGNvbnRleHQoJ3RoZXJlIGFyZSBu byBhbmNlc3RvcnMgb2YgdGhlIHR5cGUgc2VydmVyJywgKCkgPT4geworICAgICAgaXQoJ2RvZXMg bm90IGNyZWF0ZSBhIGRpYWxvZycsICgpID0+IHsKKyAgICAgICAgcGdCcm93c2VyLnRyZWVNZW51 LnNlbGVjdE5vZGUoW3tpZDogJ2xldmVsMSd9XSk7CisgICAgICAgIGJhY2t1cERpYWxvZy5kcmF3 KG51bGwsIG51bGwsIG51bGwpOworICAgICAgICBleHBlY3QoYWxlcnRpZnlTcHlbJ0JhY2t1cERp YWxvZ19nbG9iYWxzJ10pLm5vdC50b0hhdmVCZWVuQ2FsbGVkKCk7CisgICAgICAgIGV4cGVjdChh bGVydGlmeVNweVsnQmFja3VwRGlhbG9nX3NlcnZlciddKS5ub3QudG9IYXZlQmVlbkNhbGxlZCgp OworICAgICAgfSk7CisKKyAgICAgIGl0KCdkaXNwbGF5IGFuIGFsZXJ0IHdpdGggYSBCYWNrdXAg RXJyb3InLCAoKSA9PiB7CisgICAgICAgIGJhY2t1cERpYWxvZy5kcmF3KG51bGwsIFtyb290Tm9k ZV0sIG51bGwpOworICAgICAgICBleHBlY3QoYWxlcnRpZnlTcHkuYWxlcnQpLnRvSGF2ZUJlZW5D YWxsZWRXaXRoKAorICAgICAgICAgICdCYWNrdXAgRXJyb3InLAorICAgICAgICAgICdQbGVhc2Ug c2VsZWN0IHNlcnZlciBvciBjaGlsZCBub2RlIGZyb20gdGhlIGJyb3dzZXIgdHJlZS4nCisgICAg ICAgICk7CisgICAgICB9KTsKKyAgICB9KTsKKworICAgIGNvbnRleHQoJ3RoZXJlIGlzIGFuIGFu Y2VzdG9yIG9mIHRoZSB0eXBlIHNlcnZlcicsICgpID0+IHsKKyAgICAgIGNvbnRleHQoJ25vIHBy ZWZlcmVuY2UgY2FuIGJlIGZvdW5kJywgKCkgPT4geworICAgICAgICBiZWZvcmVFYWNoKCgpID0+ IHsKKyAgICAgICAgICBwZ0Jyb3dzZXIuZ2V0X3ByZWZlcmVuY2UuYW5kLnJldHVyblZhbHVlKHVu ZGVmaW5lZCk7CisgICAgICAgIH0pOworCisgICAgICAgIGNvbnRleHQoJ3NlcnZlciBpcyBhIHBw YXMgc2VydmVyJywgKCkgPT4geworICAgICAgICAgIGl0KCdkaXNwbGF5IGFuIGFsZXJ0IHdpdGgg IkJhY2t1cCBFcnJvciInLCAoKSA9PiB7CisgICAgICAgICAgICBiYWNrdXBEaWFsb2cuZHJhdyhu dWxsLCBbc2VydmVyVHJlZU5vZGVdLCBudWxsKTsKKyAgICAgICAgICAgIGV4cGVjdChhbGVydGlm eVNweS5hbGVydCkudG9IYXZlQmVlbkNhbGxlZFdpdGgoCisgICAgICAgICAgICAgICdCYWNrdXAg RXJyb3InLAorICAgICAgICAgICAgICAnRmFpbGVkIHRvIGxvYWQgcHJlZmVyZW5jZSBwZ19iaW5f ZGlyIG9mIG1vZHVsZSBwYXRocycKKyAgICAgICAgICAgICk7CisgICAgICAgICAgfSk7CisgICAg ICAgIH0pOworCisgICAgICAgIGNvbnRleHQoJ3NlcnZlciBpcyBub3QgYSBwcGFzIHNlcnZlcics ICgpID0+IHsKKyAgICAgICAgICBpdCgnZGlzcGxheSBhbiBhbGVydCB3aXRoICJCYWNrdXAgRXJy b3IiJywgKCkgPT4geworICAgICAgICAgICAgYmFja3VwRGlhbG9nLmRyYXcobnVsbCwgW3BwYXNT ZXJ2ZXJUcmVlTm9kZV0sIG51bGwpOworICAgICAgICAgICAgZXhwZWN0KGFsZXJ0aWZ5U3B5LmFs ZXJ0KS50b0hhdmVCZWVuQ2FsbGVkV2l0aCgKKyAgICAgICAgICAgICAgJ0JhY2t1cCBFcnJvcics CisgICAgICAgICAgICAgICdGYWlsZWQgdG8gbG9hZCBwcmVmZXJlbmNlIHBwYXNfYmluX2RpciBv ZiBtb2R1bGUgcGF0aHMnCisgICAgICAgICAgICApOworICAgICAgICAgIH0pOworICAgICAgICB9 KTsKKyAgICAgIH0pOworCisgICAgICBjb250ZXh0KCdwcmVmZXJlbmNlIGNhbiBiZSBmb3VuZCcs ICgpID0+IHsKKyAgICAgICAgY29udGV4dCgnYmluYXJ5IGZvbGRlciBpcyBub3QgY29uZmlndXJl ZCcsICgpID0+IHsKKyAgICAgICAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgICAgICAgIHBn QnJvd3Nlci5nZXRfcHJlZmVyZW5jZS5hbmQucmV0dXJuVmFsdWUoe30pOworICAgICAgICAgIH0p OworCisgICAgICAgICAgY29udGV4dCgnc2VydmVyIGlzIGEgcHBhcyBzZXJ2ZXInLCAoKSA9PiB7 CisgICAgICAgICAgICBpdCgnZGlzcGxheSBhbiBhbGVydCB3aXRoICJDb25maWd1cmF0aW9uIHJl cXVpcmVkIicsICgpID0+IHsKKyAgICAgICAgICAgICAgYmFja3VwRGlhbG9nLmRyYXcobnVsbCwg W3NlcnZlclRyZWVOb2RlXSwgbnVsbCk7CisgICAgICAgICAgICAgIGV4cGVjdChhbGVydGlmeVNw eS5hbGVydCkudG9IYXZlQmVlbkNhbGxlZFdpdGgoCisgICAgICAgICAgICAgICAgJ0NvbmZpZ3Vy YXRpb24gcmVxdWlyZWQnLAorICAgICAgICAgICAgICAgICdQbGVhc2UgY29uZmlndXJlIHRoZSBQ b3N0Z3JlU1FMIEJpbmFyeSBQYXRoIGluIHRoZSBQcmVmZXJlbmNlcyBkaWFsb2cuJworICAgICAg ICAgICAgICApOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgfSk7CisKKyAgICAgICAgICBj b250ZXh0KCdzZXJ2ZXIgaXMgbm90IGEgcHBhcyBzZXJ2ZXInLCAoKSA9PiB7CisgICAgICAgICAg ICBpdCgnZGlzcGxheSBhbiBhbGVydCB3aXRoICJDb25maWd1cmF0aW9uIHJlcXVpcmVkIicsICgp ID0+IHsKKyAgICAgICAgICAgICAgYmFja3VwRGlhbG9nLmRyYXcobnVsbCwgW3BwYXNTZXJ2ZXJU cmVlTm9kZV0sIG51bGwpOworICAgICAgICAgICAgICBleHBlY3QoYWxlcnRpZnlTcHkuYWxlcnQp LnRvSGF2ZUJlZW5DYWxsZWRXaXRoKAorICAgICAgICAgICAgICAgICdDb25maWd1cmF0aW9uIHJl cXVpcmVkJywKKyAgICAgICAgICAgICAgICAnUGxlYXNlIGNvbmZpZ3VyZSB0aGUgRURCIEFkdmFu Y2VkIFNlcnZlciBCaW5hcnkgUGF0aCBpbiB0aGUgUHJlZmVyZW5jZXMgZGlhbG9nLicKKyAgICAg ICAgICAgICAgKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgIH0pOworICAgICAgICB9KTsK KworICAgICAgICBjb250ZXh0KCdiaW5hcnkgZm9sZGVyIGlzIGNvbmZpZ3VyZWQnLCAoKSA9PiB7 CisgICAgICAgICAgbGV0IGdsb2JhbFJlc2l6ZVRvU3B5OworICAgICAgICAgIGxldCBzZXJ2ZXJS ZXNpemVUb1NweTsKKyAgICAgICAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgICAgICAgIGds b2JhbFJlc2l6ZVRvU3B5ID0gamFzbWluZS5jcmVhdGVTcHlPYmooJ2dsb2JhbHMnLCBbJ3Jlc2l6 ZVRvJ10pOworICAgICAgICAgICAgYWxlcnRpZnlTcHlbJ0JhY2t1cERpYWxvZ19nbG9iYWxzJ10u YW5kCisgICAgICAgICAgICAgIC5yZXR1cm5WYWx1ZShnbG9iYWxSZXNpemVUb1NweSk7CisgICAg ICAgICAgICBzZXJ2ZXJSZXNpemVUb1NweSA9IGphc21pbmUuY3JlYXRlU3B5T2JqKCdzZXJ2ZXIn LCBbJ3Jlc2l6ZVRvJ10pOworICAgICAgICAgICAgYWxlcnRpZnlTcHlbJ0JhY2t1cERpYWxvZ19z ZXJ2ZXInXS5hbmQKKyAgICAgICAgICAgICAgLnJldHVyblZhbHVlKHNlcnZlclJlc2l6ZVRvU3B5 KTsKKyAgICAgICAgICAgIHBnQnJvd3Nlci5nZXRfcHJlZmVyZW5jZS5hbmQucmV0dXJuVmFsdWUo e3ZhbHVlOiAnL3NvbWUvcGF0aCd9KTsKKyAgICAgICAgICB9KTsKKworICAgICAgICAgIGNvbnRl eHQoJ2RpYWxvZyBmb3IgZ2xvYmFsIGJhY2t1cCcsICgpID0+IHsKKyAgICAgICAgICAgIGl0KCdk aXNwbGF5cyB0aGUgZGlhbG9nJywgKCkgPT4geworICAgICAgICAgICAgICBiYWNrdXBEaWFsb2cu ZHJhdyhudWxsLCBbc2VydmVyVHJlZU5vZGVdLCB7Z2xvYmFsczogdHJ1ZX0pOworICAgICAgICAg ICAgICBleHBlY3QoYWxlcnRpZnlTcHlbJ0JhY2t1cERpYWxvZ19nbG9iYWxzJ10pLnRvSGF2ZUJl ZW5DYWxsZWRXaXRoKHRydWUpOworICAgICAgICAgICAgICBleHBlY3QoZ2xvYmFsUmVzaXplVG9T cHkucmVzaXplVG8pLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKCc2MCUnLCAnNTAlJyk7CisgICAgICAg ICAgICB9KTsKKyAgICAgICAgICB9KTsKKworICAgICAgICAgIGNvbnRleHQoJ2RpYWxvZyBmb3Ig c2VydmVyIGJhY2t1cCcsICgpID0+IHsKKyAgICAgICAgICAgIGl0KCdkaXNwbGF5cyB0aGUgZGlh bG9nJywgKCkgPT4geworICAgICAgICAgICAgICBiYWNrdXBEaWFsb2cuZHJhdyhudWxsLCBbc2Vy dmVyVHJlZU5vZGVdLCB7c2VydmVyOiB0cnVlfSk7CisgICAgICAgICAgICAgIGV4cGVjdChhbGVy dGlmeVNweVsnQmFja3VwRGlhbG9nX3NlcnZlciddKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCh0cnVl KTsKKyAgICAgICAgICAgICAgZXhwZWN0KHNlcnZlclJlc2l6ZVRvU3B5LnJlc2l6ZVRvKS50b0hh dmVCZWVuQ2FsbGVkV2l0aCgnNjAlJywgJzUwJScpOworICAgICAgICAgICAgfSk7CisgICAgICAg ICAgfSk7CisgICAgICAgIH0pOworICAgICAgfSk7CisgICAgfSk7CisgIH0pOworfSk7CmRpZmYg LS1naXQgYS93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L2JhY2t1cC9tZW51X3V0aWxzX3NwZWMu anMgYi93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L2JhY2t1cC9tZW51X3V0aWxzX3NwZWMuanMK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLjk0MzVkNjk5Ci0tLSAvZGV2L251 bGwKKysrIGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9iYWNrdXAvbWVudV91dGlsc19zcGVj LmpzCkBAIC0wLDAgKzEsNTUgQEAKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vCisvLyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FM IFRvb2xzCisvLworLy8gQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAxOCwgVGhlIHBnQWRtaW4gRGV2 ZWxvcG1lbnQgVGVhbQorLy8gVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9z dGdyZVNRTCBMaWNlbmNlCisvLworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKworCitpbXBvcnQge21lbnVFbmFibGVkU2VydmVy fSBmcm9tICcuLi8uLi8uLi9wZ2FkbWluL3Rvb2xzL2JhY2t1cC9zdGF0aWMvanMvbWVudV91dGls cyc7CisKK2NvbnN0IGNvbnRleHQgPSBkZXNjcmliZTsKKworZGVzY3JpYmUoJ2JhY2t1cC5tZW51 VXRpbHMnLCAoKSA9PiB7CisgIGRlc2NyaWJlKCcjbWVudUVuYWJsZWRTZXJ2ZXInLCAoKSA9PiB7 CisgICAgY29udGV4dCgncHJvdmlkZWQgbm9kZSBkYXRhIGlzIHVuZGVmaW5lZCcsICgpID0+IHsK KyAgICAgIGl0KCdyZXR1cm5zIGZhbHNlJywgKCkgPT4geworICAgICAgICBleHBlY3QobWVudUVu YWJsZWRTZXJ2ZXIodW5kZWZpbmVkKSkudG9CZShmYWxzZSk7CisgICAgICB9KTsKKyAgICB9KTsK KworICAgIGNvbnRleHQoJ3Byb3ZpZGVkIG5vZGUgZGF0YSBpcyBudWxsJywgKCkgPT4geworICAg ICAgaXQoJ3JldHVybnMgZmFsc2UnLCAoKSA9PiB7CisgICAgICAgIGV4cGVjdChtZW51RW5hYmxl ZFNlcnZlcihudWxsKSkudG9CZShmYWxzZSk7CisgICAgICB9KTsKKyAgICB9KTsKKworICAgIGNv bnRleHQoJ2N1cnJlbnQgbm9kZSB0eXBlIGlzIG5vdCBvZiB0aGUgdHlwZSBzZXJ2ZXInLCAoKSA9 PiB7CisgICAgICBpdCgncmV0dXJucyBmYWxzZScsICgpID0+IHsKKyAgICAgICAgZXhwZWN0KG1l bnVFbmFibGVkU2VydmVyKHtfdHlwZTogJ3NjaGVtYSd9KSkudG9CZShmYWxzZSk7CisgICAgICB9 KTsKKyAgICB9KTsKKworICAgIGNvbnRleHQoJ2N1cnJlbnQgbm9kZSB0eXBlIGlzIG9mIHRoZSB0 eXBlIHNlcnZlcicsICgpID0+IHsKKyAgICAgIGNvbnRleHQoJ2lzIGNvbm5lY3RlZCcsICgpID0+ IHsKKyAgICAgICAgaXQoJ3JldHVybnMgdHJ1ZScsICgpID0+IHsKKyAgICAgICAgICBleHBlY3Qo bWVudUVuYWJsZWRTZXJ2ZXIoeworICAgICAgICAgICAgX3R5cGU6ICdzZXJ2ZXInLAorICAgICAg ICAgICAgY29ubmVjdGVkOiB0cnVlLAorICAgICAgICAgIH0pKS50b0JlKHRydWUpOworICAgICAg ICB9KTsKKyAgICAgIH0pOworICAgICAgY29udGV4dCgnaXMgbm90IGNvbm5lY3RlZCcsICgpID0+ IHsKKyAgICAgICAgaXQoJ3JldHVybnMgZmFsc2UnLCAoKSA9PiB7CisgICAgICAgICAgZXhwZWN0 KG1lbnVFbmFibGVkU2VydmVyKHsKKyAgICAgICAgICAgIF90eXBlOiAnc2VydmVyJywKKyAgICAg ICAgICAgIGNvbm5lY3RlZDogZmFsc2UsCisgICAgICAgICAgfSkpLnRvQmUoZmFsc2UpOworICAg ICAgICB9KTsKKyAgICAgIH0pOworICAgIH0pOworICB9KTsKK30pOworCmRpZmYgLS1naXQgYS93 ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L2NvbW1vbl9rZXlib2FyZF9zaG9ydGN1dHNfc3BlYy5q cyBiL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvY29tbW9uX2tleWJvYXJkX3Nob3J0Y3V0c19z cGVjLmpzCmluZGV4IDllYTMxZWZkLi5lMjc5MjliZiAxMDA2NDQKLS0tIGEvd2ViL3JlZ3Jlc3Np b24vamF2YXNjcmlwdC9jb21tb25fa2V5Ym9hcmRfc2hvcnRjdXRzX3NwZWMuanMKKysrIGIvd2Vi L3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9jb21tb25fa2V5Ym9hcmRfc2hvcnRjdXRzX3NwZWMuanMK QEAgLTExLDEwICsxMSw2IEBAIGltcG9ydCBrZXlib2FyZFNob3J0Y3V0cyBmcm9tICdzb3VyY2Vz L2tleWJvYXJkX3Nob3J0Y3V0cyc7CiAKIGRlc2NyaWJlKCd0aGUga2V5Ym9hcmQgc2hvcnRjdXRz JywgKCkgPT4gewogICBjb25zdCBGMV9LRVkgPSAxMTI7Ci0gIC8vIGNvbnN0IEVESVRfS0VZID0g NzE7ICAvLyBLZXk6IEcgLT4gR3JpZCB2YWx1ZXMKLSAgLy8gY29uc3QgTEVGVF9BUlJPV19LRVkg PSAzNzsKLSAgLy8gY29uc3QgUklHSFRfQVJST1dfS0VZID0gMzk7Ci0gIC8vIGNvbnN0IE1PVkVf TkVYVCA9ICdyaWdodCc7CiAKICAgbGV0IGRlYnVnZ2VyRWxlbWVudFNweSwgZXZlbnQsIGRlYnVn Z2VyVXNlclNob3J0Y3V0U3B5OwogICBkZWJ1Z2dlclVzZXJTaG9ydGN1dFNweSA9IGphc21pbmUu Y3JlYXRlU3B5T2JqKApkaWZmIC0tZ2l0IGEvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9kYXRh Z3JpZC9nZXRfcGFuZWxfdGl0bGVfc3BlYy5qcyBiL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQv ZGF0YWdyaWQvZ2V0X3BhbmVsX3RpdGxlX3NwZWMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAuLjhhMzQ0YTg0Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3JlZ3Jlc3Npb24v amF2YXNjcmlwdC9kYXRhZ3JpZC9nZXRfcGFuZWxfdGl0bGVfc3BlYy5qcwpAQCAtMCwwICsxLDgy IEBACisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vCisvLworLy8gcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworLy8KKy8vIENv cHlyaWdodCAoQykgMjAxMyAtIDIwMTgsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KKy8v IFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQor Ly8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vCisKK2ltcG9ydCB7Z2V0UGFuZWxUaXRsZX0gZnJvbSAnLi4vLi4vLi4vcGdhZG1p bi90b29scy9kYXRhZ3JpZC9zdGF0aWMvanMvZ2V0X3BhbmVsX3RpdGxlJzsKK2ltcG9ydCB7VHJl ZUZha2V9IGZyb20gJy4uL3RyZWUvdHJlZV9mYWtlJzsKK2ltcG9ydCB7VHJlZU5vZGV9IGZyb20g Jy4uLy4uLy4uL3BnYWRtaW4vc3RhdGljL2pzL3RyZWUvdHJlZSc7CisKK2NvbnN0IGNvbnRleHQg PSBkZXNjcmliZTsKKworZGVzY3JpYmUoJyNnZXRQYW5lbFRpdGxlJywgKCkgPT4geworICBsZXQg cGdCcm93c2VyOworICBsZXQgdHJlZTsKKyAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgdHJlZSA9 IG5ldyBUcmVlRmFrZSgpOworICAgIHBnQnJvd3NlciA9IHsKKyAgICAgIHRyZWVNZW51OiB0cmVl LAorICAgICAgTm9kZXM6IHsKKyAgICAgICAgc2VydmVyOiB7CisgICAgICAgICAgaGFzSWQ6IHRy dWUsCisgICAgICAgICAgX3R5cGU6ICdzZXJ2ZXInLAorICAgICAgICB9LAorICAgICAgICBkYXRh YmFzZTogeworICAgICAgICAgIGhhc0lkOiB0cnVlLAorICAgICAgICAgIF90eXBlOiAnZGF0YWJh c2UnLAorICAgICAgICB9LAorICAgICAgfSwKKyAgICB9OworICB9KTsKKworICBjb250ZXh0KCdz ZWxlY3RlZCBub2RlIGRvZXMgbm90IGJlbG9uZyB0byBhIHNlcnZlcicsICgpID0+IHsKKyAgICBp dCgncmV0dXJucyB1bmRlZmluZWQnLCAoKSA9PiB7CisgICAgICBjb25zdCByb290ID0gdHJlZS5h ZGROZXdOb2RlKCdsZXZlbDEnLCB7X3R5cGU6ICdzZXJ2ZXJfZ3JvdXBzJ30pOworICAgICAgdHJl ZS5hZGRDaGlsZChyb290LCBuZXcgVHJlZU5vZGUoJ2xldmVsMS4xJywge190eXBlOiAnb3RoZXIn fSkpOworICAgICAgdHJlZS5zZWxlY3ROb2RlKFt7aWQ6ICdsZXZlbDEnfV0pOworICAgICAgZXhw ZWN0KGdldFBhbmVsVGl0bGUocGdCcm93c2VyKSkudG9CZVVuZGVmaW5lZCgpOworICAgIH0pOwor ICB9KTsKKworICBjb250ZXh0KCdzZWxlY3RlZCBub2RlIGJlbG9uZyB0byBhIHNlcnZlcicsICgp ID0+IHsKKyAgICBjb250ZXh0KCdzZWxlY3RlZCBub2RlIGRvZXMgbm90IGJlbG9uZyB0byBhIGRh dGFiYXNlJywgKCkgPT4geworICAgICAgaXQoJ3JldHVybnMgdGhlIHNlcnZlciBsYWJlbCBhbmQg dGhlIHVzZXJuYW1lJywgKCkgPT4geworICAgICAgICB0cmVlLmFkZE5ld05vZGUoJ2xldmVsMScs IHsKKyAgICAgICAgICBfdHlwZTogJ3NlcnZlcicsCisgICAgICAgICAgZGI6ICdvdGhlciBkYiBs YWJlbCcsCisgICAgICAgICAgdXNlcjoge25hbWU6ICdzb21lIHVzZXIgbmFtZSd9LAorICAgICAg ICAgIGxhYmVsOiAnc2VydmVyIGxhYmVsJywKKyAgICAgICAgfSwgW10pOworCisgICAgICAgIHRy ZWUuc2VsZWN0Tm9kZShbe2lkOiAnbGV2ZWwxJ31dKTsKKyAgICAgICAgZXhwZWN0KGdldFBhbmVs VGl0bGUocGdCcm93c2VyKSkKKyAgICAgICAgICAudG9CZSgnb3RoZXIgZGIgbGFiZWwgb24gc29t ZSB1c2VyIG5hbWVAc2VydmVyIGxhYmVsJyk7CisgICAgICB9KTsKKyAgICB9KTsKKworICAgIGNv bnRleHQoJ3NlbGVjdGVkIG5vZGUgYmVsb25ncyB0byBhIGRhdGFiYXNlJywgKCkgPT4geworICAg ICAgaXQoJ3JldHVybnMgdGhlIGRhdGFiYXNlIGxhYmVsIGFuZCB0aGUgdXNlcm5hbWUnLCAoKSA9 PiB7CisgICAgICAgIGNvbnN0IHJvb3QgPSB0cmVlLmFkZE5ld05vZGUoJ2xldmVsMScsIHsKKyAg ICAgICAgICBfdHlwZTogJ3NlcnZlcicsCisgICAgICAgICAgZGI6ICdvdGhlciBkYiBsYWJlbCcs CisgICAgICAgICAgdXNlcjoge25hbWU6ICdzb21lIHVzZXIgbmFtZSd9LAorICAgICAgICAgIGxh YmVsOiAnc2VydmVyIGxhYmVsJywKKyAgICAgICAgfSk7CisgICAgICAgIGNvbnN0IGxldmVsMSA9 IG5ldyBUcmVlTm9kZSgnbGV2ZWwxLjEnLCB7CisgICAgICAgICAgX3R5cGU6ICdkYXRhYmFzZScs CisgICAgICAgICAgbGFiZWw6ICdkYiBsYWJlbCcsCisgICAgICAgIH0pOworICAgICAgICB0cmVl LmFkZENoaWxkKHJvb3QsIGxldmVsMSk7CisgICAgICAgIHRyZWUuYWRkQ2hpbGQobGV2ZWwxLAor ICAgICAgICAgIG5ldyBUcmVlTm9kZSgnbGV2ZWwxLjEuMScsIHtfdHlwZTogJ3RhYmxlJ30pKTsK KyAgICAgICAgdHJlZS5zZWxlY3ROb2RlKFt7aWQ6ICdsZXZlbDEuMS4xJ31dKTsKKyAgICAgICAg ZXhwZWN0KGdldFBhbmVsVGl0bGUocGdCcm93c2VyKSkKKyAgICAgICAgICAudG9CZSgnZGIgbGFi ZWwgb24gc29tZSB1c2VyIG5hbWVAc2VydmVyIGxhYmVsJyk7CisgICAgICB9KTsKKyAgICB9KTsK KyAgfSk7Cit9KTsKZGlmZiAtLWdpdCBhL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvZGF0YWdy aWQvc2hvd19kYXRhX3NwZWMuanMgYi93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L2RhdGFncmlk L3Nob3dfZGF0YV9zcGVjLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi44 MGQyNWViMwotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvZGF0 YWdyaWQvc2hvd19kYXRhX3NwZWMuanMKQEAgLTAsMCArMSwxNzEgQEAKKy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vCisvLyBw Z0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisvLworLy8gQ29weXJpZ2h0IChDKSAyMDEzIC0g MjAxOCwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorLy8gVGhpcyBzb2Z0d2FyZSBpcyBy ZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisvLworLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKworaW1wb3J0 IHtzaG93RGF0YUdyaWR9IGZyb20gJy4uLy4uLy4uL3BnYWRtaW4vdG9vbHMvZGF0YWdyaWQvc3Rh dGljL2pzL3Nob3dfZGF0YSc7CitpbXBvcnQge1RyZWVGYWtlfSBmcm9tICcuLi90cmVlL3RyZWVf ZmFrZSc7CitpbXBvcnQge1RyZWVOb2RlfSBmcm9tICcuLi8uLi8uLi9wZ2FkbWluL3N0YXRpYy9q cy90cmVlL3RyZWUnOworCitjb25zdCBjb250ZXh0ID0gZGVzY3JpYmU7CisKK2Rlc2NyaWJlKCcj c2hvd19kYXRhJywgKCkgPT4geworICBsZXQgZGF0YWdyaWQ7CisgIGxldCBwZ0Jyb3dzZXI7Cisg IGxldCBhbGVydGlmeTsKKyAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgYWxlcnRpZnkgPSBqYXNt aW5lLmNyZWF0ZVNweU9iaignYWxlcnRpZnknLCBbJ2FsZXJ0J10pOworICAgIGRhdGFncmlkID0g eworICAgICAgY3JlYXRlX3RyYW5zYWN0aW9uOiBqYXNtaW5lLmNyZWF0ZVNweSgnY3JlYXRlX3Ry YW5zYWN0aW9uJyksCisgICAgfTsKKyAgICBwZ0Jyb3dzZXIgPSB7CisgICAgICB0cmVlTWVudTog bmV3IFRyZWVGYWtlKCksCisgICAgICBOb2RlczogeworICAgICAgICBzZXJ2ZXJfZ3JvdXA6IHsK KyAgICAgICAgICBfdHlwZTogJ3NlcnZlcl9ncm91cCcsCisgICAgICAgICAgaGFzSWQ6IHRydWUs CisgICAgICAgIH0sCisgICAgICAgIHNlcnZlcjogeworICAgICAgICAgIF90eXBlOiAnc2VydmVy JywKKyAgICAgICAgICBoYXNJZDogdHJ1ZSwKKyAgICAgICAgfSwKKyAgICAgICAgZGF0YWJhc2U6 IHsKKyAgICAgICAgICBfdHlwZTogJ2RhdGFiYXNlJywKKyAgICAgICAgICBoYXNJZDogdHJ1ZSwK KyAgICAgICAgfSwKKyAgICAgICAgc2NoZW1hOiB7CisgICAgICAgICAgX3R5cGU6ICdzY2hlbWEn LAorICAgICAgICAgIGhhc0lkOiB0cnVlLAorICAgICAgICB9LAorICAgICAgICB2aWV3OiB7Cisg ICAgICAgICAgX3R5cGU6ICd2aWV3JywKKyAgICAgICAgICBoYXNJZDogdHJ1ZSwKKyAgICAgICAg fSwKKyAgICAgICAgY2F0YWxvZzogeworICAgICAgICAgIF90eXBlOiAnY2F0YWxvZycsCisgICAg ICAgICAgaGFzSWQ6IHRydWUsCisgICAgICAgIH0sCisgICAgICB9LAorICAgIH07CisgICAgY29u c3QgcGFyZW50ID0gcGdCcm93c2VyLnRyZWVNZW51LmFkZE5ld05vZGUoJ3BhcmVudCcsIHtfdHlw ZTogJ3BhcmVudCd9LCBbXSk7CisgICAgY29uc3Qgc2VydmVyR3JvdXAxID0gbmV3IFRyZWVOb2Rl KCdzZXJ2ZXJfZ3JvdXAxJywgeworICAgICAgX3R5cGU6ICdzZXJ2ZXJfZ3JvdXAnLAorICAgICAg X2lkOiAxLAorICAgIH0pOworICAgIHBnQnJvd3Nlci50cmVlTWVudS5hZGRDaGlsZChwYXJlbnQs IHNlcnZlckdyb3VwMSk7CisKKyAgICBjb25zdCBzZXJ2ZXIxID0gbmV3IFRyZWVOb2RlKCdzZXJ2 ZXIxJywgeworICAgICAgX3R5cGU6ICdzZXJ2ZXInLAorICAgICAgbGFiZWw6ICdzZXJ2ZXIxJywK KyAgICAgIHNlcnZlcl90eXBlOiAncGcnLAorICAgICAgX2lkOiAyLAorICAgIH0sIFsncGFyZW50 JywgJ3NlcnZlcl9ncm91cDEnXSk7CisgICAgcGdCcm93c2VyLnRyZWVNZW51LmFkZENoaWxkKHNl cnZlckdyb3VwMSwgc2VydmVyMSk7CisKKyAgICBjb25zdCBkYXRhYmFzZTEgPSBuZXcgVHJlZU5v ZGUoJ2RhdGFiYXNlMScsIHsKKyAgICAgIF90eXBlOiAnZGF0YWJhc2UnLAorICAgICAgbGFiZWw6 ICdkYXRhYmFzZTEnLAorICAgICAgX2lkOiAzLAorICAgIH0sIFsncGFyZW50JywgJ3NlcnZlcl9n cm91cDEnLCAnc2VydmVyMSddKTsKKyAgICBwZ0Jyb3dzZXIudHJlZU1lbnUuYWRkQ2hpbGQoc2Vy dmVyMSwgZGF0YWJhc2UxKTsKKworICAgIGNvbnN0IHNjaGVtYTEgPSBuZXcgVHJlZU5vZGUoJ3Nj aGVtYTEnLCB7CisgICAgICBfdHlwZTogJ3NjaGVtYScsCisgICAgICBsYWJlbDogJ3NjaGVtYTEn LAorICAgICAgX2lkOiA0LAorICAgIH0pOworICAgIHBnQnJvd3Nlci50cmVlTWVudS5hZGRDaGls ZChkYXRhYmFzZTEsIHNjaGVtYTEpOworCisgICAgY29uc3QgdmlldzEgPSBuZXcgVHJlZU5vZGUo J3ZpZXcxJywgeworICAgICAgX3R5cGU6ICd2aWV3JywKKyAgICAgIGxhYmVsOiAndmlldzEnLAor ICAgICAgX2lkOiA1LAorICAgIH0sIFsncGFyZW50JywgJ3NlcnZlcl9ncm91cDEnLCAnc2VydmVy MScsICdkYXRhYmFzZTEnXSk7CisgICAgcGdCcm93c2VyLnRyZWVNZW51LmFkZENoaWxkKGRhdGFi YXNlMSwgdmlldzEpOworCisgICAgY29uc3QgY2F0YWxvZzEgPSBuZXcgVHJlZU5vZGUoJ2NhdGFs b2cxJywgeworICAgICAgX3R5cGU6ICdjYXRhbG9nJywKKyAgICAgIGxhYmVsOiAnY2F0YWxvZzEn LAorICAgICAgX2lkOiA2LAorICAgIH0sIFsncGFyZW50JywgJ3NlcnZlcl9ncm91cDEnLCAnc2Vy dmVyMScsICdkYXRhYmFzZTEnXSk7CisgICAgcGdCcm93c2VyLnRyZWVNZW51LmFkZENoaWxkKGRh dGFiYXNlMSwgY2F0YWxvZzEpOworICB9KTsKKworICBjb250ZXh0KCdjYW5ub3QgZmluZCB0aGUg dHJlZSBub2RlJywgKCkgPT4geworICAgIGl0KCdkb2VzIG5vdCBjcmVhdGUgYSB0cmFuc2FjdGlv bicsICgpID0+IHsKKyAgICAgIHNob3dEYXRhR3JpZChkYXRhZ3JpZCwgcGdCcm93c2VyLCBhbGVy dGlmeSwge30sIFt7aWQ6ICcxMCd9XSk7CisgICAgICBleHBlY3QoZGF0YWdyaWQuY3JlYXRlX3Ry YW5zYWN0aW9uKS5ub3QudG9IYXZlQmVlbkNhbGxlZCgpOworICAgIH0pOworCisgICAgaXQoJ2Rp c3BsYXkgYWxlcnQnLCAoKSA9PiB7CisgICAgICBzaG93RGF0YUdyaWQoZGF0YWdyaWQsIHBnQnJv d3NlciwgYWxlcnRpZnksIHt9LCBbe2lkOiAnMTAnfV0pOworICAgICAgZXhwZWN0KGFsZXJ0aWZ5 LmFsZXJ0KS50b0hhdmVCZWVuQ2FsbGVkV2l0aCgKKyAgICAgICAgJ0RhdGEgR3JpZCBFcnJvcics CisgICAgICAgICdObyBvYmplY3Qgc2VsZWN0ZWQuJworICAgICAgKTsKKyAgICB9KTsKKyAgfSk7 CisKKyAgY29udGV4dCgnY3VycmVudCBub2RlIGlzIG5vdCB1bmRlcm5lYXRoIGEgc2VydmVyJywg KCkgPT4geworICAgIGl0KCdkb2VzIG5vdCBjcmVhdGUgYSB0cmFuc2FjdGlvbicsICgpID0+IHsK KyAgICAgIHNob3dEYXRhR3JpZChkYXRhZ3JpZCwgcGdCcm93c2VyLCBhbGVydGlmeSwge30sIFt7 aWQ6ICdwYXJlbnQnfV0pOworICAgICAgZXhwZWN0KGRhdGFncmlkLmNyZWF0ZV90cmFuc2FjdGlv bikubm90LnRvSGF2ZUJlZW5DYWxsZWQoKTsKKyAgICB9KTsKKyAgfSk7CisKKyAgY29udGV4dCgn Y3VycmVudCBub2RlIGlzIG5vdCB1bmRlcm5lYXRoIGEgc2NoZW1hIG9yIHZpZXcgb3IgY2F0YWxv ZycsICgpID0+IHsKKyAgICBpdCgnZG9lcyBub3QgY3JlYXRlIGEgdHJhbnNhY3Rpb24nLCAoKSA9 PiB7CisgICAgICBzaG93RGF0YUdyaWQoZGF0YWdyaWQsIHBnQnJvd3NlciwgYWxlcnRpZnksIHt9 LCBbe2lkOiAnZGF0YWJhc2UxJ31dKTsKKyAgICAgIGV4cGVjdChkYXRhZ3JpZC5jcmVhdGVfdHJh bnNhY3Rpb24pLm5vdC50b0hhdmVCZWVuQ2FsbGVkKCk7CisgICAgfSk7CisgIH0pOworCisgIGNv bnRleHQoJ2N1cnJlbnQgbm9kZSBpcyB1bmRlcm5lYXRoIGEgc2NoZW1hJywgKCkgPT4geworICAg IGl0KCdkb2VzIG5vdCBjcmVhdGUgYSB0cmFuc2FjdGlvbicsICgpID0+IHsKKyAgICAgIHNob3dE YXRhR3JpZChkYXRhZ3JpZCwgcGdCcm93c2VyLCBhbGVydGlmeSwge21udWlkOiAxMX0sIFt7aWQ6 ICdzY2hlbWExJ31dKTsKKyAgICAgIGV4cGVjdChkYXRhZ3JpZC5jcmVhdGVfdHJhbnNhY3Rpb24p LnRvSGF2ZUJlZW5DYWxsZWRXaXRoKAorICAgICAgICAnL2luaXRpYWxpemUvZGF0YWdyaWQvMTEv c2NoZW1hLzEvMi8zLzQnLAorICAgICAgICBudWxsLAorICAgICAgICAnZmFsc2UnLAorICAgICAg ICAncGcnLAorICAgICAgICAnJywKKyAgICAgICAgJ3NlcnZlcjEgLSBkYXRhYmFzZTEgLSBzY2hl bWExLnNjaGVtYTEnLAorICAgICAgICAnJworICAgICAgKTsKKyAgICB9KTsKKyAgfSk7CisKKyAg Y29udGV4dCgnY3VycmVudCBub2RlIGlzIHVuZGVybmVhdGggYSB2aWV3JywgKCkgPT4geworICAg IGl0KCdkb2VzIG5vdCBjcmVhdGUgYSB0cmFuc2FjdGlvbicsICgpID0+IHsKKyAgICAgIHNob3dE YXRhR3JpZChkYXRhZ3JpZCwgcGdCcm93c2VyLCBhbGVydGlmeSwge21udWlkOiAxMX0sIFt7aWQ6 ICd2aWV3MSd9XSk7CisgICAgICBleHBlY3QoZGF0YWdyaWQuY3JlYXRlX3RyYW5zYWN0aW9uKS50 b0hhdmVCZWVuQ2FsbGVkV2l0aCgKKyAgICAgICAgJy9pbml0aWFsaXplL2RhdGFncmlkLzExL3Zp ZXcvMS8yLzMvNScsCisgICAgICAgIG51bGwsCisgICAgICAgICdmYWxzZScsCisgICAgICAgICdw ZycsCisgICAgICAgICcnLAorICAgICAgICAnc2VydmVyMSAtIGRhdGFiYXNlMSAtIHZpZXcxLnZp ZXcxJywKKyAgICAgICAgJycKKyAgICAgICk7CisgICAgfSk7CisgIH0pOworCisgIGNvbnRleHQo J2N1cnJlbnQgbm9kZSBpcyB1bmRlcm5lYXRoIGEgY2F0YWxvZycsICgpID0+IHsKKyAgICBpdCgn ZG9lcyBub3QgY3JlYXRlIGEgdHJhbnNhY3Rpb24nLCAoKSA9PiB7CisgICAgICBzaG93RGF0YUdy aWQoZGF0YWdyaWQsIHBnQnJvd3NlciwgYWxlcnRpZnksIHttbnVpZDogMTF9LCBbe2lkOiAnY2F0 YWxvZzEnfV0pOworICAgICAgZXhwZWN0KGRhdGFncmlkLmNyZWF0ZV90cmFuc2FjdGlvbikudG9I YXZlQmVlbkNhbGxlZFdpdGgoCisgICAgICAgICcvaW5pdGlhbGl6ZS9kYXRhZ3JpZC8xMS9jYXRh bG9nLzEvMi8zLzYnLAorICAgICAgICBudWxsLAorICAgICAgICAnZmFsc2UnLAorICAgICAgICAn cGcnLAorICAgICAgICAnJywKKyAgICAgICAgJ3NlcnZlcjEgLSBkYXRhYmFzZTEgLSBjYXRhbG9n MS5jYXRhbG9nMScsCisgICAgICAgICcnCisgICAgICApOworICAgIH0pOworICB9KTsKK30pOwpk aWZmIC0tZ2l0IGEvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9kYXRhZ3JpZC9zaG93X3F1ZXJ5 X3Rvb2xfc3BlYy5qcyBiL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvZGF0YWdyaWQvc2hvd19x dWVyeV90b29sX3NwZWMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLjY2 YmQzN2NlCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9kYXRh Z3JpZC9zaG93X3F1ZXJ5X3Rvb2xfc3BlYy5qcwpAQCAtMCwwICsxLDEyNSBAQAorLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8K Ky8vIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKy8vCisvLyBDb3B5cmlnaHQgKEMpIDIw MTMgLSAyMDE4LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisvLyBUaGlzIHNvZnR3YXJl IGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKy8vCisvLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCitp bXBvcnQge1RyZWVGYWtlfSBmcm9tICcuLi90cmVlL3RyZWVfZmFrZSc7CitpbXBvcnQge3Nob3dR dWVyeVRvb2x9IGZyb20gJy4uLy4uLy4uL3BnYWRtaW4vdG9vbHMvZGF0YWdyaWQvc3RhdGljL2pz L3Nob3dfcXVlcnlfdG9vbCc7CitpbXBvcnQge1RyZWVOb2RlfSBmcm9tICcuLi8uLi8uLi9wZ2Fk bWluL3N0YXRpYy9qcy90cmVlL3RyZWUnOworCitjb25zdCBjb250ZXh0ID0gZGVzY3JpYmU7CisK K2Rlc2NyaWJlKCcjc2hvd1F1ZXJ5VG9vbCcsICgpID0+IHsKKyAgbGV0IHF1ZXJ5VG9vbDsKKyAg bGV0IHBnQnJvd3NlcjsKKyAgbGV0IGFsZXJ0aWZ5OworICBiZWZvcmVFYWNoKCgpID0+IHsKKyAg ICBhbGVydGlmeSA9IGphc21pbmUuY3JlYXRlU3B5T2JqKCdhbGVydGlmeScsIFsnYWxlcnQnXSk7 CisgICAgcXVlcnlUb29sID0geworICAgICAgY3JlYXRlX3RyYW5zYWN0aW9uOiBqYXNtaW5lLmNy ZWF0ZVNweSgnY3JlYXRlX3RyYW5zYWN0aW9uJyksCisgICAgfTsKKyAgICBwZ0Jyb3dzZXIgPSB7 CisgICAgICB0cmVlTWVudTogbmV3IFRyZWVGYWtlKCksCisgICAgICBOb2RlczogeworICAgICAg ICBzZXJ2ZXJfZ3JvdXA6IHsKKyAgICAgICAgICBfdHlwZTogJ3NlcnZlcl9ncm91cCcsCisgICAg ICAgICAgaGFzSWQ6IHRydWUsCisgICAgICAgIH0sCisgICAgICAgIHNlcnZlcjogeworICAgICAg ICAgIF90eXBlOiAnc2VydmVyJywKKyAgICAgICAgICBoYXNJZDogdHJ1ZSwKKyAgICAgICAgfSwK KyAgICAgICAgZGF0YWJhc2U6IHsKKyAgICAgICAgICBfdHlwZTogJ2RhdGFiYXNlJywKKyAgICAg ICAgICBoYXNJZDogdHJ1ZSwKKyAgICAgICAgfSwKKyAgICAgIH0sCisgICAgfTsKKyAgICBjb25z dCBwYXJlbnQgPSBwZ0Jyb3dzZXIudHJlZU1lbnUuYWRkTmV3Tm9kZSgncGFyZW50Jywge190eXBl OiAncGFyZW50J30pOworICAgIGNvbnN0IHNlcnZlckdyb3VwMSA9ICBuZXcgVHJlZU5vZGUoJ3Nl cnZlcl9ncm91cDEnLCB7CisgICAgICBfdHlwZTogJ3NlcnZlcl9ncm91cCcsCisgICAgICBfaWQ6 IDEsCisgICAgfSwgWydwYXJlbnQnXSk7CisgICAgcGdCcm93c2VyLnRyZWVNZW51LmFkZENoaWxk KHBhcmVudCwgc2VydmVyR3JvdXAxKTsKKworICAgIGNvbnN0IHNlcnZlcjEgPSBuZXcgVHJlZU5v ZGUoJ3NlcnZlcjEnLCB7CisgICAgICBfdHlwZTogJ3NlcnZlcicsCisgICAgICBsYWJlbDogJ3Nl cnZlcjEnLAorICAgICAgc2VydmVyX3R5cGU6ICdwZycsCisgICAgICBfaWQ6IDIsCisgICAgfSk7 CisgICAgcGdCcm93c2VyLnRyZWVNZW51LmFkZENoaWxkKHNlcnZlckdyb3VwMSwgc2VydmVyMSk7 CisKKyAgICBjb25zdCBkYXRhYmFzZTEgPSBuZXcgIFRyZWVOb2RlKCdkYXRhYmFzZTEnLCB7Cisg ICAgICBfdHlwZTogJ2RhdGFiYXNlJywKKyAgICAgIGxhYmVsOiAnZGF0YWJhc2UxJywKKyAgICAg IF9pZDogMywKKyAgICB9KTsKKyAgICBwZ0Jyb3dzZXIudHJlZU1lbnUuYWRkQ2hpbGQoc2VydmVy MSwgZGF0YWJhc2UxKTsKKyAgfSk7CisKKyAgY29udGV4dCgnY2Fubm90IGZpbmQgdGhlIHRyZWUg bm9kZScsICgpID0+IHsKKyAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgIHNob3dRdWVyeVRv b2wocXVlcnlUb29sLCBwZ0Jyb3dzZXIsIGFsZXJ0aWZ5LCAnJywgW3tpZDogJzEwJ31dLCAndGl0 bGUnKTsKKyAgICB9KTsKKyAgICBpdCgnZG9lcyBub3QgY3JlYXRlIGEgdHJhbnNhY3Rpb24nLCAo KSA9PiB7CisgICAgICBleHBlY3QocXVlcnlUb29sLmNyZWF0ZV90cmFuc2FjdGlvbikubm90LnRv SGF2ZUJlZW5DYWxsZWQoKTsKKyAgICB9KTsKKworICAgIGl0KCdkaXNwbGF5IGFsZXJ0JywgKCkg PT4geworICAgICAgZXhwZWN0KGFsZXJ0aWZ5LmFsZXJ0KS50b0hhdmVCZWVuQ2FsbGVkV2l0aCgK KyAgICAgICAgJ1F1ZXJ5IFRvb2wgRXJyb3InLAorICAgICAgICAnTm8gb2JqZWN0IHNlbGVjdGVk LicKKyAgICAgICk7CisgICAgfSk7CisgIH0pOworCisgIGNvbnRleHQoJ2N1cnJlbnQgbm9kZSBp cyBub3QgdW5kZXJuZWF0aCBhIHNlcnZlcicsICgpID0+IHsKKyAgICBpdCgnZG9lcyBub3QgY3Jl YXRlIGEgdHJhbnNhY3Rpb24nLCAoKSA9PiB7CisgICAgICBzaG93UXVlcnlUb29sKHF1ZXJ5VG9v bCwgcGdCcm93c2VyLCBhbGVydGlmeSwgJycsIFt7aWQ6ICdwYXJlbnQnfV0sICd0aXRsZScpOwor ICAgICAgZXhwZWN0KHF1ZXJ5VG9vbC5jcmVhdGVfdHJhbnNhY3Rpb24pLm5vdC50b0hhdmVCZWVu Q2FsbGVkKCk7CisgICAgfSk7CisKKyAgICBpdCgnbm8gYWxlcnQgaXMgZGlzcGxheWVkJywgKCkg PT4geworICAgICAgZXhwZWN0KGFsZXJ0aWZ5LmFsZXJ0KS5ub3QudG9IYXZlQmVlbkNhbGxlZCgp OworICAgIH0pOworICB9KTsKKworICBjb250ZXh0KCdjdXJyZW50IG5vZGUgaXMgdW5kZXJuZWF0 aCBhIHNlcnZlcicsICgpID0+IHsKKyAgICBjb250ZXh0KCdjdXJyZW50IG5vZGUgaXMgbm90IHVu ZGVybmVhdGggYSBkYXRhYmFzZScsICgpID0+IHsKKyAgICAgIGl0KCdjcmVhdGVzIGEgdHJhbnNh Y3Rpb24nLCAoKSA9PiB7CisgICAgICAgIHNob3dRdWVyeVRvb2wocXVlcnlUb29sLCBwZ0Jyb3dz ZXIsIGFsZXJ0aWZ5LCAnaHR0cDovL3NvbWV1cmwnLCBbe2lkOiAnc2VydmVyMSd9XSwgJ3RpdGxl Jyk7CisgICAgICAgIGV4cGVjdChxdWVyeVRvb2wuY3JlYXRlX3RyYW5zYWN0aW9uKS50b0hhdmVC ZWVuQ2FsbGVkV2l0aCgKKyAgICAgICAgICAnL2luaXRpYWxpemUvcXVlcnlfdG9vbC8xLzInLAor ICAgICAgICAgIG51bGwsCisgICAgICAgICAgJ3RydWUnLAorICAgICAgICAgICdwZycsCisgICAg ICAgICAgJ2h0dHA6Ly9zb21ldXJsJywKKyAgICAgICAgICAndGl0bGUnLAorICAgICAgICAgICcn LAorICAgICAgICAgIGZhbHNlCisgICAgICAgICk7CisgICAgICB9KTsKKyAgICB9KTsKKworICAg IGNvbnRleHQoJ2N1cnJlbnQgbm9kZSBpcyB1bmRlcm5lYXRoIGEgZGF0YWJhc2UnLCAoKSA9PiB7 CisgICAgICBpdCgnY3JlYXRlcyBhIHRyYW5zYWN0aW9uJywgKCkgPT4geworICAgICAgICBzaG93 UXVlcnlUb29sKHF1ZXJ5VG9vbCwgcGdCcm93c2VyLCBhbGVydGlmeSwgJ2h0dHA6Ly9zb21ldXJs JywgW3tpZDogJ2RhdGFiYXNlMSd9XSwgJ3RpdGxlJyk7CisgICAgICAgIGV4cGVjdChxdWVyeVRv b2wuY3JlYXRlX3RyYW5zYWN0aW9uKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCgKKyAgICAgICAgICAn L2luaXRpYWxpemUvcXVlcnlfdG9vbC8xLzIvMycsCisgICAgICAgICAgbnVsbCwKKyAgICAgICAg ICAndHJ1ZScsCisgICAgICAgICAgJ3BnJywKKyAgICAgICAgICAnaHR0cDovL3NvbWV1cmwnLAor ICAgICAgICAgICd0aXRsZScsCisgICAgICAgICAgJycsCisgICAgICAgICAgZmFsc2UKKyAgICAg ICAgKTsKKyAgICAgIH0pOworICAgIH0pOworICB9KTsKK30pOwpkaWZmIC0tZ2l0IGEvd2ViL3Jl Z3Jlc3Npb24vamF2YXNjcmlwdC9mYWtlX2Jyb3dzZXIvYnJvd3Nlci5qcyBiL3dlYi9yZWdyZXNz aW9uL2phdmFzY3JpcHQvZmFrZV9icm93c2VyL2Jyb3dzZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAuLjE5NWU1YzUxCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3JlZ3Jl c3Npb24vamF2YXNjcmlwdC9mYWtlX2Jyb3dzZXIvYnJvd3Nlci5qcwpAQCAtMCwwICsxLDEyIEBA CisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLworLy8KKy8vIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMK Ky8vCisvLyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE4LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVu dCBUZWFtCisvLyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FM IExpY2VuY2UKKy8vCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCitsZXQgdHJlZU1lbnUgPSBudWxsOwor CitleHBvcnQge3RyZWVNZW51fTsKZGlmZiAtLWdpdCBhL3dlYi9yZWdyZXNzaW9uL2phdmFzY3Jp cHQvZmFrZV9lbmRwb2ludHMuanMgYi93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L2Zha2VfZW5k cG9pbnRzLmpzCmluZGV4IDU0Yjg2YTk0Li5jMDYwYmE3OCAxMDA2NDQKLS0tIGEvd2ViL3JlZ3Jl c3Npb24vamF2YXNjcmlwdC9mYWtlX2VuZHBvaW50cy5qcworKysgYi93ZWIvcmVncmVzc2lvbi9q YXZhc2NyaXB0L2Zha2VfZW5kcG9pbnRzLmpzCkBAIC0xMiw1ICsxMiwxMSBAQCBkZWZpbmUoZnVu Y3Rpb24gKCkgewogICAgICdzdGF0aWMnOiAnL2Jhc2UvcGdhZG1pbi9zdGF0aWMvPHBhdGg6Zmls ZW5hbWU+JywKICAgICAnc3FsZWRpdG9yLnBvbGwnOiAnL3NxbGVkaXRvci9xdWVyeV90b29sL3Bv bGwvPHBhdGg6dHJhbnNfaWQ+JywKICAgICAnc3FsZWRpdG9yLnF1ZXJ5X3Rvb2xfc3RhcnQnOiAn L3NxbGVkaXRvci9xdWVyeV90b29sL3N0YXJ0LzxwYXRoOnRyYW5zX2lkPicsCisgICAgJ2JhY2t1 cC5jcmVhdGVfc2VydmVyX2pvYic6ICAnL2JhY2t1cC9qb2IvPGludDpzaWQ+JywKKyAgICAnYmFj a3VwLmNyZWF0ZV9vYmplY3Rfam9iJzogICcvYmFja3VwL2pvYi88aW50OnNpZD4vb2JqZWN0JywK KyAgICAnZGF0YWdyaWQuaW5pdGlhbGl6ZV9kYXRhZ3JpZCc6ICcvaW5pdGlhbGl6ZS9kYXRhZ3Jp ZC88aW50OmNtZF90eXBlPi88b2JqX3R5cGU+LzxpbnQ6c2dpZD4vPGludDpzaWQ+LzxpbnQ6ZGlk Pi88aW50Om9ial9pZD4nLAorICAgICdkYXRhZ3JpZC5pbml0aWFsaXplX3F1ZXJ5X3Rvb2wnOiAn L2luaXRpYWxpemUvcXVlcnlfdG9vbC88aW50OnNnaWQ+LzxpbnQ6c2lkPicsCisgICAgJ2RhdGFn cmlkLmluaXRpYWxpemVfcXVlcnlfdG9vbF93aXRoX2RpZCc6ICcvaW5pdGlhbGl6ZS9xdWVyeV90 b29sLzxpbnQ6c2dpZD4vPGludDpzaWQ+LzxpbnQ6ZGlkPicsCisgICAgJ3Jlc3RvcmUuY3JlYXRl X2pvYic6ICcvcmVzdG9yZS9qb2IvPGludDpzaWQ+JywKICAgfTsKIH0pOwpkaWZmIC0tZ2l0IGEv d2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9mYWtlX21vZGVsLmpzIGIvd2ViL3JlZ3Jlc3Npb24v amF2YXNjcmlwdC9mYWtlX21vZGVsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwLi5hY2ZhYTUzMgotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9yZWdyZXNzaW9uL2phdmFzY3Jp cHQvZmFrZV9tb2RlbC5qcwpAQCAtMCwwICsxLDIxIEBACitleHBvcnQgY2xhc3MgRmFrZU1vZGVs IHsKKyAgY29uc3RydWN0b3IoKSB7CisgICAgdGhpcy52YWx1ZXMgPSB7fTsKKyAgfQorCisgIHNl dChrZXksIHZhbHVlKSB7CisgICAgdGhpcy52YWx1ZXNba2V5XSA9IHZhbHVlOworICB9CisKKyAg Z2V0KGtleSkgeworICAgIHJldHVybiB0aGlzLnZhbHVlc1trZXldOworICB9CisKKyAgdW5zZXQo a2V5KSB7CisgICAgZGVsZXRlIHRoaXMudmFsdWVzW2tleV07CisgIH0KKworICB0b0pTT04oKSB7 CisgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIHRoaXMudmFsdWVzKTsKKyAgfQorfQpkaWZm IC0tZ2l0IGEvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9ub2Rlcy9zY2hlbWEvY2hpbGRfbWVu dV9zcGVjLmpzIGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9ub2Rlcy9zY2hlbWEvY2hpbGRf bWVudV9zcGVjLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi4zZDNkYzU1 ZQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvbm9kZXMvc2No ZW1hL2NoaWxkX21lbnVfc3BlYy5qcwpAQCAtMCwwICsxLDI1MyBAQAorLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8KKy8vIHBn QWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKy8vCisvLyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAy MDE4LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisvLyBUaGlzIHNvZnR3YXJlIGlzIHJl bGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKy8vCisvLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKK2ltcG9ydCB7 CisgIGlzVHJlZUl0ZW1PZkNoaWxkT2ZTY2hlbWEsIGNoaWxkQ3JlYXRlTWVudUVuYWJsZWQsCit9 IGZyb20gJ3BnYWRtaW4uc2NoZW1hLmRpci9zY2hlbWFfY2hpbGRfdHJlZV9ub2RlJzsKKworaW1w b3J0ICogYXMgcGdCcm93c2VyIGZyb20gJ3BnYnJvd3Nlci9icm93c2VyJzsKK2ltcG9ydCB7VHJl ZUZha2V9IGZyb20gJy4uLy4uL3RyZWUvdHJlZV9mYWtlJzsKKworZGVzY3JpYmUoJyNjaGlsZENy ZWF0ZU1lbnVFbmFibGVkJywgKCkgPT4geworICBsZXQgZGF0YTsKKyAgbGV0IHRyZWU7CisKKyAg ZGVzY3JpYmUoJyAtIHdoZW4gZGF0YSBpcyBub3QgbnVsbCcsICgpID0+IHsKKyAgICBiZWZvcmVF YWNoKCgpID0+IHsKKyAgICAgIGRhdGEgPSB7fTsKKyAgICB9KTsKKyAgICBkZXNjcmliZSgnIGFu ZCBjaGVjayBpcyBmYWxzZScsICgpID0+IHsKKyAgICAgIGJlZm9yZUVhY2goKCkgPT4geworICAg ICAgICBkYXRhID0ge2NoZWNrOiBmYWxzZX07CisgICAgICB9KTsKKyAgICAgIGl0KCcsIHRoZW4g aXQgcmV0dXJucyB0cnVlJywgKCkgPT4geworICAgICAgICBleHBlY3QoY2hpbGRDcmVhdGVNZW51 RW5hYmxlZCh7fSwge30sIGRhdGEpKS50b0JlKHRydWUpOworICAgICAgfSk7CisgICAgfSk7CisK KyAgICBkZXNjcmliZSgnIGFuZCBjaGVjaycsICgpID0+IHsKKyAgICAgIGRlc2NyaWJlKCcgaXMg dHJ1ZScsICgpID0+IHsKKyAgICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgICAgICAgZGF0 YSA9IHtjaGVjazogdHJ1ZX07CisgICAgICAgIH0pOworCisgICAgICAgIGRlc2NyaWJlKCcsIG9u IHNjaGVtYSBub2RlJywgKCkgPT4geworICAgICAgICAgIGJlZm9yZUVhY2goKCkgPT4geworICAg ICAgICAgICAgbGV0IGhpZXJhcmNoeSA9IHsKKyAgICAgICAgICAgICAgaWQ6ICdyb290JywKKyAg ICAgICAgICAgICAgY2hpbGRyZW46IFt7CisgICAgICAgICAgICAgICAgaWQ6ICdsZXZlbDInLAor ICAgICAgICAgICAgICAgIGRhdGE6IHtfdHlwZTogJ3NjaGVtYSd9LAorICAgICAgICAgICAgICB9 XSwKKyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgIHRyZWUgPSBUcmVlRmFrZS5idWlsZCho aWVyYXJjaHkpOworICAgICAgICAgICAgcGdCcm93c2VyLnRyZWVNZW51ID0gdHJlZTsKKyAgICAg ICAgICB9KTsKKyAgICAgICAgICBpdCgnIGl0IGlzIHRydWUnLCAoKSA9PiB7CisgICAgICAgICAg ICBleHBlY3QoY2hpbGRDcmVhdGVNZW51RW5hYmxlZCgKKyAgICAgICAgICAgICAge30sIFt7aWQ6 ICdsZXZlbDInfV0sIGRhdGEKKyAgICAgICAgICAgICkpLnRvQmUodHJ1ZSk7CisKKyAgICAgICAg ICB9KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgZGVzY3JpYmUoJywgb24gY2hpbGQgY29sbGVj dGlvbiBub2RlIHVuZGVyIHNjaGVtYSBub2RlICcsICgpID0+IHsKKyAgICAgICAgICBiZWZvcmVF YWNoKCgpID0+IHsKKyAgICAgICAgICAgIGxldCBoaWVyYXJjaHkgPSB7CisgICAgICAgICAgICAg IGlkOiAncm9vdCcsCisgICAgICAgICAgICAgIGNoaWxkcmVuOiBbeworICAgICAgICAgICAgICAg IGlkOiAnbGV2ZWwyJywKKyAgICAgICAgICAgICAgICBkYXRhOiB7X3R5cGU6ICdzY2hlbWEnfSwK KyAgICAgICAgICAgICAgICBjaGlsZHJlbjogW3sKKyAgICAgICAgICAgICAgICAgIGlkOiAnY29s bC10YWJsZScsCisgICAgICAgICAgICAgICAgICBkYXRhOiB7X3R5cGU6ICdjb2xsLXRhYmxlJ30s CisgICAgICAgICAgICAgICAgfV0sCisgICAgICAgICAgICAgIH1dLAorICAgICAgICAgICAgfTsK KworICAgICAgICAgICAgdHJlZSA9IFRyZWVGYWtlLmJ1aWxkKGhpZXJhcmNoeSk7CisgICAgICAg ICAgICBwZ0Jyb3dzZXIudHJlZU1lbnUgPSB0cmVlOworICAgICAgICAgIH0pOworCisgICAgICAg ICAgaXQoJyBpdCBpcyB0cnVlJywgKCkgPT4geworICAgICAgICAgICAgZXhwZWN0KGNoaWxkQ3Jl YXRlTWVudUVuYWJsZWQoCisgICAgICAgICAgICAgIHt9LCBbe2lkOiAnY29sbC10YWJsZSd9XSwg ZGF0YQorICAgICAgICAgICAgKSkudG9CZSh0cnVlKTsKKyAgICAgICAgICB9KTsKKyAgICAgICAg fSk7CisKKyAgICAgICAgZGVzY3JpYmUoJywgb24gb25lIG9mIHRoZSBjaGlsZCBub2RlIHVuZGVy IHNjaGVtYSBub2RlICcsICgpID0+IHsKKyAgICAgICAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAg ICAgICAgICAgIGxldCBoaWVyYXJjaHkgPSB7CisgICAgICAgICAgICAgIGlkOiAncm9vdCcsCisg ICAgICAgICAgICAgIGNoaWxkcmVuOiBbeworICAgICAgICAgICAgICAgIGlkOiAnbGV2ZWwyJywK KyAgICAgICAgICAgICAgICBkYXRhOiB7X3R5cGU6ICdzY2hlbWEnfSwKKyAgICAgICAgICAgICAg ICBjaGlsZHJlbjogW3sKKyAgICAgICAgICAgICAgICAgIGlkOiAnY29sbC10YWJsZScsCisgICAg ICAgICAgICAgICAgICBkYXRhOiB7X3R5cGU6ICdjb2xsLXRhYmxlJ30sCisgICAgICAgICAgICAg ICAgICBjaGlsZHJlbjogW3sKKyAgICAgICAgICAgICAgICAgICAgaWQ6ICd0YWJsZS8xJywKKyAg ICAgICAgICAgICAgICAgICAgZGF0YToge190eXBlOiAndGFibGUnfSwKKyAgICAgICAgICAgICAg ICAgIH1dLAorICAgICAgICAgICAgICAgIH1dLAorICAgICAgICAgICAgICB9XSwKKyAgICAgICAg ICAgIH07CisKKyAgICAgICAgICAgIHRyZWUgPSBUcmVlRmFrZS5idWlsZChoaWVyYXJjaHkpOwor ICAgICAgICAgICAgcGdCcm93c2VyLnRyZWVNZW51ID0gdHJlZTsKKyAgICAgICAgICB9KTsKKwor ICAgICAgICAgIGl0KCcgaXQgaXMgdHJ1ZScsICgpID0+IHsKKyAgICAgICAgICAgIGV4cGVjdChj aGlsZENyZWF0ZU1lbnVFbmFibGVkKAorICAgICAgICAgICAgICB7fSwgW3tpZDogJ3RhYmxlLzEn fV0sIGRhdGEKKyAgICAgICAgICAgICkpLnRvQmUodHJ1ZSk7CisgICAgICAgICAgfSk7CisgICAg ICAgIH0pOworCisgICAgICAgIGRlc2NyaWJlKCcsIG9uIGNhdGFsb2cgbm9kZScsICgpID0+IHsK KyAgICAgICAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgICAgICAgIGxldCBoaWVyYXJjaHkg PSB7CisgICAgICAgICAgICAgIGlkOiAncm9vdCcsCisgICAgICAgICAgICAgIGNoaWxkcmVuOiBb eworICAgICAgICAgICAgICAgIGlkOiAnbGV2ZWwyJywKKyAgICAgICAgICAgICAgICBkYXRhOiB7 X3R5cGU6ICdjYXRhbG9nJ30sCisgICAgICAgICAgICAgIH1dLAorICAgICAgICAgICAgfTsKKwor ICAgICAgICAgICAgdHJlZSA9IFRyZWVGYWtlLmJ1aWxkKGhpZXJhcmNoeSk7CisgICAgICAgICAg ICBwZ0Jyb3dzZXIudHJlZU1lbnUgPSB0cmVlOworICAgICAgICAgIH0pOworICAgICAgICAgIGl0 KCcgaXQgaXMgZmFsc2UnLCAoKSA9PiB7CisgICAgICAgICAgICBleHBlY3QoCisgICAgICAgICAg ICAgIGNoaWxkQ3JlYXRlTWVudUVuYWJsZWQoe30sIFt7aWQ6ICdsZXZlbDInfV0sIGRhdGEpCisg ICAgICAgICAgICApLnRvQmUoZmFsc2UpOworICAgICAgICAgIH0pOworICAgICAgICB9KTsKKwor ICAgICAgICBkZXNjcmliZSgnLCBvbiBjaGlsZCBjb2xsZWN0aW9uIG5vZGUgdW5kZXIgY2F0YWxv ZyBub2RlICcsICgpID0+IHsKKyAgICAgICAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgICAg ICAgIGxldCBoaWVyYXJjaHkgPSB7CisgICAgICAgICAgICAgIGlkOiAncm9vdCcsCisgICAgICAg ICAgICAgIGNoaWxkcmVuOiBbeworICAgICAgICAgICAgICAgIGlkOiAnbGV2ZWwyJywKKyAgICAg ICAgICAgICAgICBkYXRhOiB7X3R5cGU6ICdjYXRhbG9nJ30sCisgICAgICAgICAgICAgICAgY2hp bGRyZW46IFt7CisgICAgICAgICAgICAgICAgICBpZDogJ2NvbGwtdGFibGUnLAorICAgICAgICAg ICAgICAgICAgZGF0YToge190eXBlOiAnY29sbC10YWJsZSd9LAorICAgICAgICAgICAgICAgIH1d LAorICAgICAgICAgICAgICB9XSwKKyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgIHRyZWUg PSBUcmVlRmFrZS5idWlsZChoaWVyYXJjaHkpOworICAgICAgICAgICAgcGdCcm93c2VyLnRyZWVN ZW51ID0gdHJlZTsKKyAgICAgICAgICB9KTsKKworICAgICAgICAgIGl0KCcgaXQgaXMgZmFsc2Un LCAoKSA9PiB7CisgICAgICAgICAgICBleHBlY3QoY2hpbGRDcmVhdGVNZW51RW5hYmxlZCgKKyAg ICAgICAgICAgICAge30sIFt7aWQ6ICdjb2xsLXRhYmxlJ31dLCBkYXRhCisgICAgICAgICAgICAp KS50b0JlKGZhbHNlKTsKKyAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgZGVz Y3JpYmUoJywgb24gb25lIG9mIHRoZSBjaGlsZCBub2RlIHVuZGVyIGNhdGFsb2cgbm9kZSAnLCAo KSA9PiB7CisgICAgICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgICAgICAgICBsZXQgaGll cmFyY2h5ID0geworICAgICAgICAgICAgICBpZDogJ3Jvb3QnLAorICAgICAgICAgICAgICBjaGls ZHJlbjogW3sKKyAgICAgICAgICAgICAgICBpZDogJ2xldmVsMicsCisgICAgICAgICAgICAgICAg ZGF0YToge190eXBlOiAnY2F0YWxvZyd9LAorICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBbewor ICAgICAgICAgICAgICAgICAgaWQ6ICdjb2xsLXRhYmxlJywKKyAgICAgICAgICAgICAgICAgIGRh dGE6IHtfdHlwZTogJ2NvbGwtdGFibGUnfSwKKyAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBb eworICAgICAgICAgICAgICAgICAgICBpZDogJ3RhYmxlLzEnLAorICAgICAgICAgICAgICAgICAg ICBkYXRhOiB7X3R5cGU6ICd0YWJsZSd9LAorICAgICAgICAgICAgICAgICAgfV0sCisgICAgICAg ICAgICAgICAgfV0sCisgICAgICAgICAgICAgIH1dLAorICAgICAgICAgICAgfTsKKworICAgICAg ICAgICAgdHJlZSA9IFRyZWVGYWtlLmJ1aWxkKGhpZXJhcmNoeSk7CisgICAgICAgICAgICBwZ0Jy b3dzZXIudHJlZU1lbnUgPSB0cmVlOworICAgICAgICAgIH0pOworCisgICAgICAgICAgaXQoJyBp dCBpcyBmYWxzZScsICgpID0+IHsKKyAgICAgICAgICAgIGV4cGVjdChjaGlsZENyZWF0ZU1lbnVF bmFibGVkKAorICAgICAgICAgICAgICB7fSwgW3tpZDogJ3RhYmxlLzEnfV0sIGRhdGEKKyAgICAg ICAgICAgICkpLnRvQmUoZmFsc2UpOworICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICAg IH0pOworICAgIH0pOworICB9KTsKK30pOworCitkZXNjcmliZSgnI2NoaWxkRHJvcE1lbnVFbmFi bGVkJywgKCkgPT4geworICBsZXQgdHJlZTsKKworICBkZXNjcmliZSgnIC0gdGhlIGNoaWxkIG5v ZGUgdW5kZXIgc2NoZW1hIG5vZGUgJywgKCkgPT4geworICAgIGJlZm9yZUVhY2goKCkgPT4gewor ICAgICAgbGV0IGhpZXJhcmNoeSA9IHsKKyAgICAgICAgaWQ6ICdyb290JywKKyAgICAgICAgY2hp bGRyZW46IFt7CisgICAgICAgICAgaWQ6ICdsZXZlbDInLAorICAgICAgICAgIGRhdGE6IHtfdHlw ZTogJ3NjaGVtYSd9LAorICAgICAgICAgIGNoaWxkcmVuOiBbeworICAgICAgICAgICAgaWQ6ICdj b2xsLXRhYmxlJywKKyAgICAgICAgICAgIGRhdGE6IHtfdHlwZTogJ2NvbGwtdGFibGUnfSwKKyAg ICAgICAgICAgIGNoaWxkcmVuOiBbeworICAgICAgICAgICAgICBpZDogJ3RhYmxlLzEnLAorICAg ICAgICAgICAgICBkYXRhOiB7X3R5cGU6ICd0YWJsZSd9LAorICAgICAgICAgICAgfV0sCisgICAg ICAgICAgfV0sCisgICAgICAgIH1dLAorICAgICAgfTsKKworICAgICAgdHJlZSA9IFRyZWVGYWtl LmJ1aWxkKGhpZXJhcmNoeSk7CisgICAgICBwZ0Jyb3dzZXIudHJlZU1lbnUgPSB0cmVlOworICAg IH0pOworCisgICAgaXQoJyBpdCBpcyB0cnVlJywgKCkgPT4geworICAgICAgZXhwZWN0KGlzVHJl ZUl0ZW1PZkNoaWxkT2ZTY2hlbWEoCisgICAgICAgIHt9LCBbe2lkOiAndGFibGUvMSd9XQorICAg ICAgKSkudG9CZSh0cnVlKTsKKyAgICB9KTsKKyAgfSk7CisKKyAgZGVzY3JpYmUoJy0gdGhlIGNo aWxkIG5vZGUgdW5kZXIgdGhlIGNhdGFsb2cgbm9kZSAnLCAoKSA9PiB7CisgICAgYmVmb3JlRWFj aCgoKSA9PiB7CisgICAgICBsZXQgaGllcmFyY2h5ID0geworICAgICAgICBpZDogJ3Jvb3QnLAor ICAgICAgICBjaGlsZHJlbjogW3sKKyAgICAgICAgICBpZDogJ2xldmVsMicsCisgICAgICAgICAg ZGF0YToge190eXBlOiAnY2F0YWxvZyd9LAorICAgICAgICAgIGNoaWxkcmVuOiBbeworICAgICAg ICAgICAgaWQ6ICdjb2xsLXRhYmxlJywKKyAgICAgICAgICAgIGRhdGE6IHtfdHlwZTogJ2NvbGwt dGFibGUnfSwKKyAgICAgICAgICAgIGNoaWxkcmVuOiBbeworICAgICAgICAgICAgICBpZDogJ3Rh YmxlLzEnLAorICAgICAgICAgICAgICBkYXRhOiB7X3R5cGU6ICd0YWJsZSd9LAorICAgICAgICAg ICAgfV0sCisgICAgICAgICAgfV0sCisgICAgICAgIH1dLAorICAgICAgfTsKKworICAgICAgdHJl ZSA9IFRyZWVGYWtlLmJ1aWxkKGhpZXJhcmNoeSk7CisgICAgICBwZ0Jyb3dzZXIudHJlZU1lbnUg PSB0cmVlOworICAgIH0pOworCisgICAgaXQoJyBpdCBpcyBmYWxzZScsICgpID0+IHsKKyAgICAg IGV4cGVjdChpc1RyZWVJdGVtT2ZDaGlsZE9mU2NoZW1hKAorICAgICAgICB7fSwgW3tpZDogJ3Rh YmxlLzEnfV0KKyAgICAgICkpLnRvQmUoZmFsc2UpOworICAgIH0pOworICB9KTsKK30pOwpkaWZm IC0tZ2l0IGEvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9yZXN0b3JlL3Jlc3RvcmVfZGlhbG9n X3NwZWMuanMgYi93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L3Jlc3RvcmUvcmVzdG9yZV9kaWFs b2dfc3BlYy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMC4uMTU2ZjU2YmIK LS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L3Jlc3RvcmUvcmVz dG9yZV9kaWFsb2dfc3BlYy5qcwpAQCAtMCwwICsxLDIwMyBAQAorLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8KKy8vIHBnQWRt aW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKy8vCisvLyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE4 LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisvLyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVh c2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKy8vCisvLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworaW1wb3J0IHtUcmVl RmFrZX0gZnJvbSAnLi4vdHJlZS90cmVlX2Zha2UnOworaW1wb3J0IHtSZXN0b3JlRGlhbG9nfSBm cm9tICcuLi8uLi8uLi9wZ2FkbWluL3Rvb2xzL3Jlc3RvcmUvc3RhdGljL2pzL3Jlc3RvcmVfZGlh bG9nJzsKKworY29uc3QgY29udGV4dCA9IGRlc2NyaWJlOworCitkZXNjcmliZSgnUmVzdG9yZURp YWxvZycsICgpID0+IHsKKyAgbGV0IHJlc3RvcmVEaWFsb2c7CisgIGxldCBwZ0Jyb3dzZXI7Cisg IGxldCBqcXVlcnlTcHk7CisgIGxldCBhbGVydGlmeVNweTsKKyAgbGV0IHJlc3RvcmVNb2RlbFNw eTsKKworICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICBwZ0Jyb3dzZXIgPSB7CisgICAgICB0cmVl TWVudTogbmV3IFRyZWVGYWtlKCksCisgICAgICBOb2RlczogeworICAgICAgICBzZXJ2ZXI6IGph c21pbmUuY3JlYXRlU3B5T2JqKCdOb2RlW3NlcnZlcl0nLCBbJ2dldFRyZWVOb2RlSGllcmFyY2h5 J10pLAorICAgICAgICBkYXRhYmFzZTogamFzbWluZS5jcmVhdGVTcHlPYmooJ05vZGVbZGF0YWJh c2VdJywgWydnZXRUcmVlTm9kZUhpZXJhcmNoeSddKSwKKyAgICAgIH0sCisgICAgfTsKKyAgICBw Z0Jyb3dzZXIuTm9kZXMuc2VydmVyLmhhc0lkID0gdHJ1ZTsKKyAgICBwZ0Jyb3dzZXIuTm9kZXMu ZGF0YWJhc2UuaGFzSWQgPSB0cnVlOworICAgIGpxdWVyeVNweSA9IGphc21pbmUuY3JlYXRlU3B5 KCdqcXVlcnlTcHknKTsKKyAgICByZXN0b3JlTW9kZWxTcHkgPSBqYXNtaW5lLmNyZWF0ZVNweSgn cmVzdG9yZU1vZGVsU3B5Jyk7CisKKyAgICBjb25zdCBoaWVyYXJjaHkgPSB7CisgICAgICBjaGls ZHJlbjogWworICAgICAgICB7CisgICAgICAgICAgaWQ6ICdyb290JywKKyAgICAgICAgICBjaGls ZHJlbjogWworICAgICAgICAgICAgeworICAgICAgICAgICAgICBpZDogJ3NlcnZlclRyZWVOb2Rl JywKKyAgICAgICAgICAgICAgZGF0YTogeworICAgICAgICAgICAgICAgIF9pZDogMTAsCisgICAg ICAgICAgICAgICAgX3R5cGU6ICdzZXJ2ZXInLAorICAgICAgICAgICAgICAgIGxhYmVsOiAnc29t ZS10cmVlLWxhYmVsJywKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgY2hpbGRyZW46 IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICBpZDogJ3NvbWVfZGF0YWJh c2UnLAorICAgICAgICAgICAgICAgICAgZGF0YTogeworICAgICAgICAgICAgICAgICAgICBfdHlw ZTogJ2RhdGFiYXNlJywKKyAgICAgICAgICAgICAgICAgICAgX2lkOiAxMSwKKyAgICAgICAgICAg ICAgICAgICAgbGFiZWw6ICdzb21lX2RhdGFiYXNlJywKKyAgICAgICAgICAgICAgICAgICAgX2xh YmVsOiAnc29tZV9kYXRhYmFzZV9sYWJlbCcsCisgICAgICAgICAgICAgICAgICB9LAorICAgICAg ICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICAgICAgIGlkOiAnZGF0YWJhc2Vfd2l0aF9lcXVh bF9pbl9uYW1lJywKKyAgICAgICAgICAgICAgICAgIGRhdGE6IHsKKyAgICAgICAgICAgICAgICAg ICAgX3R5cGU6ICdkYXRhYmFzZScsCisgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnc29tZV9k YXRhYmFzZScsCisgICAgICAgICAgICAgICAgICAgIF9sYWJlbDogJz1zb21lX2RhdGFiYXNlX2xh YmVsJywKKyAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAg ICAgICAgXSwKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGlk OiAncHBhc1NlcnZlcicsCisgICAgICAgICAgICAgIGRhdGE6IHsKKyAgICAgICAgICAgICAgICBf dHlwZTogJ3NlcnZlcicsCisgICAgICAgICAgICAgICAgc2VydmVyX3R5cGU6ICdwcGFzJywKKyAg ICAgICAgICAgICAgICBjaGlsZHJlbjogWworICAgICAgICAgICAgICAgICAge2lkOiAnc29tZU5v ZGVVbmRlcm5lYXRoUFBBU1NlcnZlcid9LAorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAg ICAgIH0sCisgICAgICAgICAgICB9LAorICAgICAgICAgIF0sCisgICAgICAgIH0sCisgICAgICBd LAorICAgIH07CisKKyAgICBwZ0Jyb3dzZXIudHJlZU1lbnUgPSBUcmVlRmFrZS5idWlsZChoaWVy YXJjaHkpOworICB9KTsKKworICBkZXNjcmliZSgnI2RyYXcnLCAoKSA9PiB7CisgICAgYmVmb3Jl RWFjaCgoKSA9PiB7CisgICAgICBhbGVydGlmeVNweSA9IGphc21pbmUuY3JlYXRlU3B5T2JqKCdh bGVydGlmeScsIFsnYWxlcnQnLCAnZGlhbG9nJ10pOworICAgICAgYWxlcnRpZnlTcHlbJ3BnX3Jl c3RvcmUnXSA9IGphc21pbmUuY3JlYXRlU3B5KCdwZ19yZXN0b3JlJyk7CisgICAgICByZXN0b3Jl RGlhbG9nID0gbmV3IFJlc3RvcmVEaWFsb2coCisgICAgICAgIHBnQnJvd3NlciwKKyAgICAgICAg anF1ZXJ5U3B5LAorICAgICAgICBhbGVydGlmeVNweSwKKyAgICAgICAgcmVzdG9yZU1vZGVsU3B5 CisgICAgICApOworCisgICAgICBwZ0Jyb3dzZXIuZ2V0X3ByZWZlcmVuY2UgPSBqYXNtaW5lLmNy ZWF0ZVNweSgnZ2V0X3ByZWZlcmVuY2VzJyk7CisgICAgfSk7CisKKyAgICBjb250ZXh0KCd0aGVy ZSBhcmUgbm8gYW5jZXN0b3JzIG9mIHRoZSB0eXBlIHNlcnZlcicsICgpID0+IHsKKyAgICAgIGl0 KCdkb2VzIG5vdCBjcmVhdGUgYSBkaWFsb2cnLCAoKSA9PiB7CisgICAgICAgIHBnQnJvd3Nlci50 cmVlTWVudS5zZWxlY3ROb2RlKFt7aWQ6ICdyb290J31dKTsKKyAgICAgICAgcmVzdG9yZURpYWxv Zy5kcmF3KG51bGwsIG51bGwsIG51bGwpOworICAgICAgICBleHBlY3QoYWxlcnRpZnlTcHlbJ3Bn X3Jlc3RvcmUnXSkubm90LnRvSGF2ZUJlZW5DYWxsZWQoKTsKKyAgICAgIH0pOworCisgICAgICBp dCgnZGlzcGxheSBhbiBhbGVydCB3aXRoIGEgUmVzdG9yZSBFcnJvcicsICgpID0+IHsKKyAgICAg ICAgcmVzdG9yZURpYWxvZy5kcmF3KG51bGwsIFt7aWQ6ICdyb290J31dLCBudWxsKTsKKyAgICAg ICAgZXhwZWN0KGFsZXJ0aWZ5U3B5LmFsZXJ0KS50b0hhdmVCZWVuQ2FsbGVkV2l0aCgKKyAgICAg ICAgICAnUmVzdG9yZSBFcnJvcicsCisgICAgICAgICAgJ1BsZWFzZSBzZWxlY3Qgc2VydmVyIG9y IGNoaWxkIG5vZGUgZnJvbSB0aGUgYnJvd3NlciB0cmVlLicKKyAgICAgICAgKTsKKyAgICAgIH0p OworICAgIH0pOworCisgICAgY29udGV4dCgndGhlcmUgaXMgYW4gYW5jZXN0b3Igb2YgdGhlIHR5 cGUgc2VydmVyJywgKCkgPT4geworICAgICAgY29udGV4dCgnbm8gcHJlZmVyZW5jZSBjYW4gYmUg Zm91bmQnLCAoKSA9PiB7CisgICAgICAgIGJlZm9yZUVhY2goKCkgPT4geworICAgICAgICAgIHBn QnJvd3Nlci5nZXRfcHJlZmVyZW5jZS5hbmQucmV0dXJuVmFsdWUodW5kZWZpbmVkKTsKKyAgICAg ICAgfSk7CisKKyAgICAgICAgY29udGV4dCgnc2VydmVyIGlzIGEgcHBhcyBzZXJ2ZXInLCAoKSA9 PiB7CisgICAgICAgICAgaXQoJ2Rpc3BsYXkgYW4gYWxlcnQgd2l0aCAiUmVzdG9yZSBFcnJvciIn LCAoKSA9PiB7CisgICAgICAgICAgICByZXN0b3JlRGlhbG9nLmRyYXcobnVsbCwgW3tpZDogJ3Nl cnZlclRyZWVOb2RlJ31dLCBudWxsKTsKKyAgICAgICAgICAgIGV4cGVjdChhbGVydGlmeVNweS5h bGVydCkudG9IYXZlQmVlbkNhbGxlZFdpdGgoCisgICAgICAgICAgICAgICdSZXN0b3JlIEVycm9y JywKKyAgICAgICAgICAgICAgJ0ZhaWxlZCB0byBsb2FkIHByZWZlcmVuY2UgcGdfYmluX2RpciBv ZiBtb2R1bGUgcGF0aHMnCisgICAgICAgICAgICApOworICAgICAgICAgIH0pOworICAgICAgICB9 KTsKKworICAgICAgICBjb250ZXh0KCdzZXJ2ZXIgaXMgbm90IGEgcHBhcyBzZXJ2ZXInLCAoKSA9 PiB7CisgICAgICAgICAgaXQoJ2Rpc3BsYXkgYW4gYWxlcnQgd2l0aCAiUmVzdG9yZSBFcnJvciIn LCAoKSA9PiB7CisgICAgICAgICAgICByZXN0b3JlRGlhbG9nLmRyYXcobnVsbCwgW3tpZDogJ3Bw YXNTZXJ2ZXInfV0sIG51bGwpOworICAgICAgICAgICAgZXhwZWN0KGFsZXJ0aWZ5U3B5LmFsZXJ0 KS50b0hhdmVCZWVuQ2FsbGVkV2l0aCgKKyAgICAgICAgICAgICAgJ1Jlc3RvcmUgRXJyb3InLAor ICAgICAgICAgICAgICAnRmFpbGVkIHRvIGxvYWQgcHJlZmVyZW5jZSBwcGFzX2Jpbl9kaXIgb2Yg bW9kdWxlIHBhdGhzJworICAgICAgICAgICAgKTsKKyAgICAgICAgICB9KTsKKyAgICAgICAgfSk7 CisgICAgICB9KTsKKworICAgICAgY29udGV4dCgncHJlZmVyZW5jZSBjYW4gYmUgZm91bmQnLCAo KSA9PiB7CisgICAgICAgIGNvbnRleHQoJ2JpbmFyeSBmb2xkZXIgaXMgbm90IGNvbmZpZ3VyZWQn LCAoKSA9PiB7CisgICAgICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgICAgICAgICBwZ0Jy b3dzZXIuZ2V0X3ByZWZlcmVuY2UuYW5kLnJldHVyblZhbHVlKHt9KTsKKyAgICAgICAgICB9KTsK KworICAgICAgICAgIGNvbnRleHQoJ3NlcnZlciBpcyBhIHBwYXMgc2VydmVyJywgKCkgPT4gewor ICAgICAgICAgICAgaXQoJ2Rpc3BsYXkgYW4gYWxlcnQgd2l0aCAiQ29uZmlndXJhdGlvbiByZXF1 aXJlZCInLCAoKSA9PiB7CisgICAgICAgICAgICAgIHJlc3RvcmVEaWFsb2cuZHJhdyhudWxsLCBb e2lkOiAnc2VydmVyVHJlZU5vZGUnfV0sIG51bGwpOworICAgICAgICAgICAgICBleHBlY3QoYWxl cnRpZnlTcHkuYWxlcnQpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKAorICAgICAgICAgICAgICAgICdD b25maWd1cmF0aW9uIHJlcXVpcmVkJywKKyAgICAgICAgICAgICAgICAnUGxlYXNlIGNvbmZpZ3Vy ZSB0aGUgUG9zdGdyZVNRTCBCaW5hcnkgUGF0aCBpbiB0aGUgUHJlZmVyZW5jZXMgZGlhbG9nLicK KyAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgIH0pOworCisgICAg ICAgICAgY29udGV4dCgnc2VydmVyIGlzIG5vdCBhIHBwYXMgc2VydmVyJywgKCkgPT4geworICAg ICAgICAgICAgaXQoJ2Rpc3BsYXkgYW4gYWxlcnQgd2l0aCAiQ29uZmlndXJhdGlvbiByZXF1aXJl ZCInLCAoKSA9PiB7CisgICAgICAgICAgICAgIHJlc3RvcmVEaWFsb2cuZHJhdyhudWxsLCBbe2lk OiAncHBhc1NlcnZlcid9XSwgbnVsbCk7CisgICAgICAgICAgICAgIGV4cGVjdChhbGVydGlmeVNw eS5hbGVydCkudG9IYXZlQmVlbkNhbGxlZFdpdGgoCisgICAgICAgICAgICAgICAgJ0NvbmZpZ3Vy YXRpb24gcmVxdWlyZWQnLAorICAgICAgICAgICAgICAgICdQbGVhc2UgY29uZmlndXJlIHRoZSBF REIgQWR2YW5jZWQgU2VydmVyIEJpbmFyeSBQYXRoIGluIHRoZSBQcmVmZXJlbmNlcyBkaWFsb2cu JworICAgICAgICAgICAgICApOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgfSk7CisgICAg ICAgIH0pOworCisgICAgICAgIGNvbnRleHQoJ2JpbmFyeSBmb2xkZXIgaXMgY29uZmlndXJlZCcs ICgpID0+IHsKKyAgICAgICAgICBsZXQgc3B5OworICAgICAgICAgIGJlZm9yZUVhY2goKCkgPT4g eworICAgICAgICAgICAgc3B5ID0gamFzbWluZS5jcmVhdGVTcHlPYmooJ2dsb2JhbHMnLCBbJ3Jl c2l6ZVRvJ10pOworICAgICAgICAgICAgYWxlcnRpZnlTcHlbJ3BnX3Jlc3RvcmUnXS5hbmQKKyAg ICAgICAgICAgICAgLnJldHVyblZhbHVlKHNweSk7CisgICAgICAgICAgICBwZ0Jyb3dzZXIuZ2V0 X3ByZWZlcmVuY2UuYW5kLnJldHVyblZhbHVlKHt2YWx1ZTogJy9zb21lL3BhdGgnfSk7CisgICAg ICAgICAgICBwZ0Jyb3dzZXIuTm9kZXMuc2VydmVyLmxhYmVsID0gJ3NvbWUtc2VydmVyLWxhYmVs JzsKKyAgICAgICAgICB9KTsKKworICAgICAgICAgIGl0KCdkaXNwbGF5cyB0aGUgZGlhbG9nJywg KCkgPT4geworICAgICAgICAgICAgcmVzdG9yZURpYWxvZy5kcmF3KG51bGwsIFt7aWQ6ICdzZXJ2 ZXJUcmVlTm9kZSd9XSwge3NlcnZlcjogdHJ1ZX0pOworICAgICAgICAgICAgZXhwZWN0KGFsZXJ0 aWZ5U3B5WydwZ19yZXN0b3JlJ10pLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKAorICAgICAgICAgICAg ICAnUmVzdG9yZSAoc29tZS1zZXJ2ZXItbGFiZWw6IHNvbWUtdHJlZS1sYWJlbCknLAorICAgICAg ICAgICAgICBbe2lkOiAnc2VydmVyVHJlZU5vZGUnfV0sCisgICAgICAgICAgICAgIHsKKyAgICAg ICAgICAgICAgICBfaWQ6IDEwLAorICAgICAgICAgICAgICAgIF90eXBlOiAnc2VydmVyJywKKyAg ICAgICAgICAgICAgICBsYWJlbDogJ3NvbWUtdHJlZS1sYWJlbCcsCisgICAgICAgICAgICAgIH0s CisgICAgICAgICAgICAgIHBnQnJvd3Nlci5Ob2Rlcy5zZXJ2ZXIKKyAgICAgICAgICAgICk7Cisg ICAgICAgICAgICBleHBlY3Qoc3B5LnJlc2l6ZVRvKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCgnNjUl JywgJzYwJScpOworICAgICAgICAgIH0pOworCisgICAgICAgICAgY29udGV4dCgnZGF0YWJhc2Ug bGFiZWwgY29udGFpbiAiPSInLCAoKSA9PiB7CisgICAgICAgICAgICBpdCgnc2hvdWxkIGNyZWF0 ZSBhbGVydCBkaWFsb2cgd2l0aCByZXN0b3JlIGVycm9yJywgKCkgPT4geworICAgICAgICAgICAg ICByZXN0b3JlRGlhbG9nLmRyYXcobnVsbCwgW3tpZDogJ2RhdGFiYXNlX3dpdGhfZXF1YWxfaW5f bmFtZSd9XSwgbnVsbCk7CisgICAgICAgICAgICAgIGV4cGVjdChhbGVydGlmeVNweS5hbGVydCku dG9IYXZlQmVlbkNhbGxlZFdpdGgoJ1Jlc3RvcmUgRXJyb3InLAorICAgICAgICAgICAgICAgICdE YXRhYmFzZXMgd2l0aCA9IHN5bWJvbHMgaW4gdGhlIG5hbWUgY2Fubm90IGJlIGJhY2tlZCB1cCBv ciByZXN0b3JlZCB1c2luZyB0aGlzIHV0aWxpdHkuJyk7CisgICAgICAgICAgICB9KTsKKyAgICAg ICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgICB9KTsKKyAgICB9KTsKKyAgfSk7Cit9KTsKZGlm ZiAtLWdpdCBhL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvcmVzdG9yZS9yZXN0b3JlX2RpYWxv Z193cmFwcGVyX3NwZWMuanMgYi93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L3Jlc3RvcmUvcmVz dG9yZV9kaWFsb2dfd3JhcHBlcl9zcGVjLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwLi5jMmEzMWQ1NQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9yZWdyZXNzaW9uL2phdmFz Y3JpcHQvcmVzdG9yZS9yZXN0b3JlX2RpYWxvZ193cmFwcGVyX3NwZWMuanMKQEAgLTAsMCArMSw1 OTMgQEAKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8KKy8vCisvLyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisvLworLy8g Q29weXJpZ2h0IChDKSAyMDEzIC0gMjAxOCwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQor Ly8gVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNl CisvLworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8KK2ltcG9ydCB7VHJlZUZha2V9IGZyb20gJy4uL3RyZWUvdHJlZV9mYWtlJzsK K2ltcG9ydCB7UmVzdG9yZURpYWxvZ1dyYXBwZXJ9IGZyb20gJy4uLy4uLy4uL3BnYWRtaW4vdG9v bHMvcmVzdG9yZS9zdGF0aWMvanMvcmVzdG9yZV9kaWFsb2dfd3JhcHBlcic7CitpbXBvcnQgTW9j a0FkYXB0ZXIgZnJvbSAnYXhpb3MtbW9jay1hZGFwdGVyJzsKK2ltcG9ydCBheGlvcyBmcm9tICdh eGlvcy9pbmRleCc7CitpbXBvcnQge0Zha2VNb2RlbH0gZnJvbSAnLi4vZmFrZV9tb2RlbCc7Citp bXBvcnQge1RyZWVOb2RlfSBmcm9tICcuLi8uLi8uLi9wZ2FkbWluL3N0YXRpYy9qcy90cmVlL3Ry ZWUnOworCitsZXQgY29udGV4dCA9IGRlc2NyaWJlOworCitkZXNjcmliZSgnUmVzdG9yZURpYWxv Z1dyYXBwZXInLCAoKSA9PiB7CisgIGxldCBqcXVlcnlTcHk7CisgIGxldCBwZ0Jyb3dzZXI7Cisg IGxldCBhbGVydGlmeVNweTsKKyAgbGV0IGRpYWxvZ01vZGVsS2xhc3NTcHk7CisgIGxldCBiYWNr Zm9ybTsKKyAgbGV0IGdlbmVyYXRlZFJlc3RvcmVNb2RlbDsKKyAgbGV0IHJlc3RvcmVEaWFsb2dX cmFwcGVyOworICBsZXQgbm9EYXRhTm9kZTsKKyAgbGV0IHNlcnZlclRyZWVOb2RlOworICBsZXQg dmlld1NjaGVtYTsKKyAgbGV0IHJlc3RvcmVKUXVlcnlDb250YWluZXJTcHk7CisgIGxldCByZXN0 b3JlTm9kZUNoaWxkTm9kZVNweTsKKyAgbGV0IHJlc3RvcmVOb2RlOworCisgIGJlZm9yZUVhY2go KCkgPT4geworICAgIHBnQnJvd3NlciA9IHsKKyAgICAgIHRyZWVNZW51OiBuZXcgVHJlZUZha2Uo KSwKKyAgICAgIE5vZGVzOiB7CisgICAgICAgIHNlcnZlcjogeworICAgICAgICAgIGhhc0lkOiB0 cnVlLAorICAgICAgICAgIGdldFRyZWVOb2RlSGllcmFyY2h5OiBqYXNtaW5lLmNyZWF0ZVNweSgn Z2V0VHJlZU5vZGVIaWVyYXJjaHknKSwKKyAgICAgICAgfSwKKyAgICAgIH0sCisgICAgICBrZXli b2FyZE5hdmlnYXRpb246IGphc21pbmUuY3JlYXRlU3B5T2JqKCdrZXlib2FyZE5hdmlnYXRpb24n LCBbJ2dldERpYWxvZ1RhYk5hdmlnYXRvciddKSwKKyAgICB9OworCisgICAgbm9EYXRhTm9kZSA9 IHBnQnJvd3Nlci50cmVlTWVudS5hZGROZXdOb2RlKCdsZXZlbDEuMScsIHVuZGVmaW5lZCwgW3tp ZDogJ2xldmVsMSd9XSk7CisgICAgc2VydmVyVHJlZU5vZGUgPSBwZ0Jyb3dzZXIudHJlZU1lbnUu YWRkTmV3Tm9kZSgnbGV2ZWwyLjEnLCB7CisgICAgICBfdHlwZTogJ3NlcnZlcicsCisgICAgICBf aWQ6IDEwLAorICAgICAgbGFiZWw6ICdzb21lLXRyZWUtbGFiZWwnLAorICAgIH0sIFt7aWQ6ICds ZXZlbDIuMSd9XSk7CisgICAganF1ZXJ5U3B5ID0gamFzbWluZS5jcmVhdGVTcHkoJ2pxdWVyeVNw eScpOworICAgIGRpYWxvZ01vZGVsS2xhc3NTcHkgPSBqYXNtaW5lLmNyZWF0ZVNweSgnZGlhbG9n TW9kZWxLbGFzcycpOworICAgIGdlbmVyYXRlZFJlc3RvcmVNb2RlbCA9IHt9OworICAgIHZpZXdT Y2hlbWEgPSB7fTsKKyAgICBiYWNrZm9ybSA9IGphc21pbmUuY3JlYXRlU3B5T2JqKCdiYWNrZm9y bScsIFsnZ2VuZXJhdGVWaWV3U2NoZW1hJywgJ0RpYWxvZyddKTsKKyAgICBiYWNrZm9ybS5nZW5l cmF0ZVZpZXdTY2hlbWEuYW5kLnJldHVyblZhbHVlKHZpZXdTY2hlbWEpOworICAgIGRpYWxvZ01v ZGVsS2xhc3NTcHkuYW5kLnJldHVyblZhbHVlKGdlbmVyYXRlZFJlc3RvcmVNb2RlbCk7CisgICAg cmVzdG9yZUpRdWVyeUNvbnRhaW5lclNweSA9IGphc21pbmUuY3JlYXRlU3B5T2JqKCdyZXN0b3Jl SlF1ZXJ5Q29udGFpbmVyJywgWydnZXQnLCAnYXR0ciddKTsKKyAgICByZXN0b3JlSlF1ZXJ5Q29u dGFpbmVyU3B5LmdldC5hbmQucmV0dXJuVmFsdWUocmVzdG9yZUpRdWVyeUNvbnRhaW5lclNweSk7 CisKKyAgICByZXN0b3JlTm9kZSA9IHsKKyAgICAgIF9faW50ZXJuYWw6IHsKKyAgICAgICAgYnV0 dG9uczogWworICAgICAgICAgIHt9LCB7fSwKKyAgICAgICAgICB7CisgICAgICAgICAgICBlbGVt ZW50OiB7CisgICAgICAgICAgICAgIGRpc2FibGVkOiBmYWxzZSwKKyAgICAgICAgICAgIH0sCisg ICAgICAgICAgfSwKKyAgICAgICAgXSwKKyAgICAgIH0sCisgICAgICBlbGVtZW50czogeworICAg ICAgICBib2R5OiB7CisgICAgICAgICAgY2hpbGROb2RlczogWworICAgICAgICAgICAge30sCisg ICAgICAgICAgXSwKKyAgICAgICAgfSwKKyAgICAgICAgY29udGVudDogamFzbWluZS5jcmVhdGVT cHlPYmooJ2NvbnRlbnQnLCBbJ2FwcGVuZENoaWxkJywgJ2F0dHInXSksCisgICAgICB9LAorICAg IH07CisKKworICAgIHJlc3RvcmVOb2RlQ2hpbGROb2RlU3B5ID0gamFzbWluZS5jcmVhdGVTcHlP YmooJ3NvbWV0aGluZycsIFsnYWRkQ2xhc3MnXSk7CisKKyAgICBqcXVlcnlTcHkuYW5kLmNhbGxG YWtlKChzZWxlY3RvcikgPT4geworICAgICAgaWYgKHNlbGVjdG9yID09PSAnPGRpdiBjbGFzcz1c J3Jlc3RvcmVfZGlhbG9nXCc+PC9kaXY+JykgeworICAgICAgICByZXR1cm4gcmVzdG9yZUpRdWVy eUNvbnRhaW5lclNweTsKKyAgICAgIH0gZWxzZSBpZiAoc2VsZWN0b3IgPT09IHJlc3RvcmVOb2Rl LmVsZW1lbnRzLmJvZHkuY2hpbGROb2Rlc1swXSkgeworICAgICAgICByZXR1cm4gcmVzdG9yZU5v ZGVDaGlsZE5vZGVTcHk7CisgICAgICB9CisgICAgfSk7CisgIH0pOworCisgIGRlc2NyaWJlKCcj cHJlcGFyZScsICgpID0+IHsKKworICAgIGJlZm9yZUVhY2goKCkgPT4geworICAgICAgYWxlcnRp ZnlTcHkgPSBqYXNtaW5lLmNyZWF0ZVNweU9iaignYWxlcnRpZnknLCBbJ2FsZXJ0JywgJ2RpYWxv ZyddKTsKKyAgICAgIHJlc3RvcmVEaWFsb2dXcmFwcGVyID0gbmV3IFJlc3RvcmVEaWFsb2dXcmFw cGVyKAorICAgICAgICAnPGRpdiBjbGFzcz1cJ3Jlc3RvcmVfZGlhbG9nXCc+PC9kaXY+JywKKyAg ICAgICAgJ3Jlc3RvcmVEaWFsb2dUaXRsZScsCisgICAgICAgICdyZXN0b3JlJywKKyAgICAgICAg anF1ZXJ5U3B5LAorICAgICAgICBwZ0Jyb3dzZXIsCisgICAgICAgIGFsZXJ0aWZ5U3B5LAorICAg ICAgICBkaWFsb2dNb2RlbEtsYXNzU3B5LAorICAgICAgICBiYWNrZm9ybQorICAgICAgKTsKKyAg ICAgIHJlc3RvcmVEaWFsb2dXcmFwcGVyID0gT2JqZWN0LmFzc2lnbihyZXN0b3JlRGlhbG9nV3Jh cHBlciwgcmVzdG9yZU5vZGUpOworICAgIH0pOworICAgIGNvbnRleHQoJ25vIHRyZWUgZWxlbWVu dCBpcyBzZWxlY3RlZCcsICgpID0+IHsKKyAgICAgIGl0KCdkb2VzIG5vdCBjcmVhdGUgYSBiYWNr Zm9ybSBkaWFsb2cnLCAoKSA9PiB7CisgICAgICAgIHJlc3RvcmVEaWFsb2dXcmFwcGVyLnByZXBh cmUoKTsKKyAgICAgICAgZXhwZWN0KGJhY2tmb3JtLkRpYWxvZykubm90LnRvSGF2ZUJlZW5DYWxs ZWQoKTsKKyAgICAgIH0pOworCisgICAgICBpdCgnZGlzYWJsZXMgdGhlIGJ1dHRvbiAic3VibWl0 IGJ1dHRvbiIgdW50aWwgYSBmaWxlbmFtZSBpcyBzZWxlY3RlZCcsICgpID0+IHsKKyAgICAgICAg cmVzdG9yZURpYWxvZ1dyYXBwZXIucHJlcGFyZSgpOworICAgICAgICBleHBlY3QocmVzdG9yZURp YWxvZ1dyYXBwZXIuX19pbnRlcm5hbC5idXR0b25zWzJdLmVsZW1lbnQuZGlzYWJsZWQpLnRvQmUo dHJ1ZSk7CisgICAgICB9KTsKKyAgICB9KTsKKworICAgIGNvbnRleHQoJ3NlbGVjdGVkIHRyZWUg bm9kZSBoYXMgbm8gZGF0YScsICgpID0+IHsKKyAgICAgIGJlZm9yZUVhY2goKCkgPT4geworICAg ICAgICBwZ0Jyb3dzZXIudHJlZU1lbnUuc2VsZWN0Tm9kZShub0RhdGFOb2RlLmRvbU5vZGUpOwor ICAgICAgfSk7CisKKyAgICAgIGl0KCdkb2VzIG5vdCBjcmVhdGUgYSBiYWNrZm9ybSBkaWFsb2cn LCAoKSA9PiB7CisgICAgICAgIHJlc3RvcmVEaWFsb2dXcmFwcGVyLnByZXBhcmUoKTsKKyAgICAg ICAgZXhwZWN0KGJhY2tmb3JtLkRpYWxvZykubm90LnRvSGF2ZUJlZW5DYWxsZWQoKTsKKyAgICAg IH0pOworCisgICAgICBpdCgnZGlzYWJsZXMgdGhlIGJ1dHRvbiAic3VibWl0IGJ1dHRvbiIgdW50 aWwgYSBmaWxlbmFtZSBpcyBzZWxlY3RlZCcsICgpID0+IHsKKyAgICAgICAgcmVzdG9yZURpYWxv Z1dyYXBwZXIucHJlcGFyZSgpOworICAgICAgICBleHBlY3QocmVzdG9yZURpYWxvZ1dyYXBwZXIu X19pbnRlcm5hbC5idXR0b25zWzJdLmVsZW1lbnQuZGlzYWJsZWQpLnRvQmUodHJ1ZSk7CisgICAg ICB9KTsKKyAgICB9KTsKKworICAgIGNvbnRleHQoJ3RyZWUgZWxlbWVudCBpcyBzZWxlY3RlZCcs ICgpID0+IHsKKyAgICAgIGxldCB0cmVlSGllcmFyY2h5SW5mb3JtYXRpb247CisgICAgICBsZXQg ZGlhbG9nU3B5OworICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgICAgIHRyZWVIaWVyYXJj aHlJbmZvcm1hdGlvbiA9IHsKKyAgICAgICAgICBzZXJ2ZXI6IHsKKyAgICAgICAgICAgIF90eXBl OiAnc2VydmVyJywKKyAgICAgICAgICAgIF9pZDogMTAsCisgICAgICAgICAgICBwcmlvcml0eTog MCwKKyAgICAgICAgICAgIGxhYmVsOiAnc29tZS10cmVlLWxhYmVsJywKKyAgICAgICAgICB9LAor ICAgICAgICB9OworICAgICAgICBwZ0Jyb3dzZXIudHJlZU1lbnUuc2VsZWN0Tm9kZShzZXJ2ZXJU cmVlTm9kZS5kb21Ob2RlKTsKKyAgICAgICAgcGdCcm93c2VyLk5vZGVzWydzZXJ2ZXInXS5nZXRU cmVlTm9kZUhpZXJhcmNoeS5hbmQKKyAgICAgICAgICAucmV0dXJuVmFsdWUodHJlZUhpZXJhcmNo eUluZm9ybWF0aW9uKTsKKyAgICAgICAgZGlhbG9nU3B5ID0gamFzbWluZS5jcmVhdGVTcHlPYmoo J25ld1ZpZXcnLCBbJ3JlbmRlciddKTsKKyAgICAgICAgZGlhbG9nU3B5LiRlbCA9IGphc21pbmUu Y3JlYXRlU3B5T2JqKCckZWwnLCBbJ2ZpbmQnLCAnYXR0ciddKTsKKyAgICAgICAgZGlhbG9nU3B5 Lm1vZGVsID0gamFzbWluZS5jcmVhdGVTcHlPYmooJ21vZGVsJywgWydvbiddKTsKKyAgICAgICAg ZGlhbG9nU3B5LiRlbC5maW5kLmFuZC5yZXR1cm5WYWx1ZShbXSk7CisKKyAgICAgICAgYmFja2Zv cm0uRGlhbG9nLmFuZC5yZXR1cm5WYWx1ZShkaWFsb2dTcHkpOworICAgICAgfSk7CisKKyAgICAg IGl0KCdjcmVhdGVzIGEgYmFja2Zvcm0gZGlhbG9nIGFuZCBkaXNwbGF5cyBpdCcsICgpID0+IHsK KyAgICAgICAgcmVzdG9yZURpYWxvZ1dyYXBwZXIucHJlcGFyZSgpOworICAgICAgICBleHBlY3Qo YmFja2Zvcm0uRGlhbG9nKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCh7CisgICAgICAgICAgZWw6IHJl c3RvcmVKUXVlcnlDb250YWluZXJTcHksCisgICAgICAgICAgbW9kZWw6IGdlbmVyYXRlZFJlc3Rv cmVNb2RlbCwKKyAgICAgICAgICBzY2hlbWE6IHZpZXdTY2hlbWEsCisgICAgICAgIH0pOworCisg ICAgICAgIGV4cGVjdChkaWFsb2dTcHkucmVuZGVyKS50b0hhdmVCZWVuQ2FsbGVkKCk7CisgICAg ICB9KTsKKworICAgICAgaXQoJ2FkZCBhbGVydGlmeSBjbGFzc2VzIHRvIHJlc3RvcmUgbm9kZSBj aGlsZG5vZGUnLCAoKSA9PiB7CisgICAgICAgIHJlc3RvcmVEaWFsb2dXcmFwcGVyLnByZXBhcmUo KTsKKyAgICAgICAgZXhwZWN0KHJlc3RvcmVOb2RlQ2hpbGROb2RlU3B5LmFkZENsYXNzKQorICAg ICAgICAgIC50b0hhdmVCZWVuQ2FsbGVkV2l0aCgnYWxlcnRpZnlfdG9vbHNfZGlhbG9nX3Byb3Bl cnRpZXMgb2JqX3Byb3BlcnRpZXMnKTsKKyAgICAgIH0pOworCisgICAgICBpdCgnZGlzYWJsZXMg dGhlIGJ1dHRvbiBzdWJtaXQgYnV0dG9uIHVudGlsIGEgZmlsZW5hbWUgaXMgc2VsZWN0ZWQnLCAo KSA9PiB7CisgICAgICAgIHJlc3RvcmVEaWFsb2dXcmFwcGVyLnByZXBhcmUoKTsKKyAgICAgICAg ZXhwZWN0KHJlc3RvcmVOb2RlLl9faW50ZXJuYWwuYnV0dG9uc1syXS5lbGVtZW50LmRpc2FibGVk KS50b0JlKHRydWUpOworICAgICAgfSk7CisKKyAgICAgIGl0KCdnZW5lcmF0ZXMgYSBuZXcgcmVz dG9yZSBtb2RlbCcsICgpID0+IHsKKyAgICAgICAgcmVzdG9yZURpYWxvZ1dyYXBwZXIucHJlcGFy ZSgpOworICAgICAgICBleHBlY3QoZGlhbG9nTW9kZWxLbGFzc1NweSkudG9IYXZlQmVlbkNhbGxl ZFdpdGgoCisgICAgICAgICAge25vZGVfZGF0YTogcGdCcm93c2VyLk5vZGVzWydzZXJ2ZXInXX0s CisgICAgICAgICAge25vZGVfaW5mbzogdHJlZUhpZXJhcmNoeUluZm9ybWF0aW9ufQorICAgICAg ICApOworICAgICAgfSk7CisKKyAgICAgIGl0KCdhZGQgdGhlIG5ldyBkaWFsb2cgdG8gdGhlIHJl c3RvcmUgbm9kZSBIVE1MJywgKCkgPT4geworICAgICAgICByZXN0b3JlRGlhbG9nV3JhcHBlci5w cmVwYXJlKCk7CisgICAgICAgIGV4cGVjdChyZXN0b3JlTm9kZS5lbGVtZW50cy5jb250ZW50LmFw cGVuZENoaWxkKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChyZXN0b3JlSlF1ZXJ5Q29udGFpbmVyU3B5 KTsKKyAgICAgIH0pOworICAgIH0pOworICB9KTsKKworICBkZXNjcmliZSgnb25CdXR0b25DbGlj a2VkJywgKCkgPT4geworICAgIGxldCBuZXR3b3JrTW9jazsKKworICAgIGJlZm9yZUVhY2goKCkg PT4geworICAgICAgcGdCcm93c2VyLnNob3dIZWxwID0gamFzbWluZS5jcmVhdGVTcHkoJ3Nob3dI ZWxwJyk7CisgICAgICBuZXR3b3JrTW9jayA9IG5ldyBNb2NrQWRhcHRlcihheGlvcyk7CisgICAg ICBhbGVydGlmeVNweSA9IGphc21pbmUuY3JlYXRlU3B5T2JqKCdhbGVydGlmeScsIFsnc3VjY2Vz cycsICdhbGVydCddKTsKKyAgICAgIHJlc3RvcmVEaWFsb2dXcmFwcGVyID0gbmV3IFJlc3RvcmVE aWFsb2dXcmFwcGVyKAorICAgICAgICAnPGRpdiBjbGFzcz1cJ3Jlc3RvcmVfZGlhbG9nXCc+PC9k aXY+JywKKyAgICAgICAgJ3Jlc3RvcmVEaWFsb2dUaXRsZScsCisgICAgICAgICdyZXN0b3JlJywK KyAgICAgICAganF1ZXJ5U3B5LAorICAgICAgICBwZ0Jyb3dzZXIsCisgICAgICAgIGFsZXJ0aWZ5 U3B5LAorICAgICAgICBkaWFsb2dNb2RlbEtsYXNzU3B5LAorICAgICAgICBiYWNrZm9ybQorICAg ICAgKTsKKyAgICAgIHJlc3RvcmVEaWFsb2dXcmFwcGVyID0gT2JqZWN0LmFzc2lnbihyZXN0b3Jl RGlhbG9nV3JhcHBlciwgcmVzdG9yZU5vZGUpOworCisgICAgfSk7CisKKyAgICBhZnRlckVhY2go ZnVuY3Rpb24gKCkgeworICAgICAgbmV0d29ya01vY2sucmVzdG9yZSgpOworICAgIH0pOworCisg ICAgY29udGV4dCgnZGlhbG9nIGhlbHAgYnV0dG9uIHdhcyBwcmVzc2VkJywgKCkgPT4geworICAg ICAgbGV0IG5ldHdvcmtDYWxsZWQ7CisgICAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgICAg bmV0d29ya0NhbGxlZCA9IGZhbHNlOworICAgICAgICBwZ0Jyb3dzZXIudHJlZU1lbnUuc2VsZWN0 Tm9kZShzZXJ2ZXJUcmVlTm9kZS5kb21Ob2RlKTsKKyAgICAgICAgbmV0d29ya01vY2sub25Bbnko Ly4rLykucmVwbHkoKCkgPT4geworICAgICAgICAgIG5ldHdvcmtDYWxsZWQgPSB0cnVlOworICAg ICAgICAgIHJldHVybiBbMjAwLCB7fV07CisgICAgICAgIH0pOworCisgICAgICAgIGNvbnN0IGV2 ZW50ID0geworICAgICAgICAgIGJ1dHRvbjogeworICAgICAgICAgICAgZWxlbWVudDogeworICAg ICAgICAgICAgICBuYW1lOiAnZGlhbG9nX2hlbHAnLAorICAgICAgICAgICAgICBnZXRBdHRyaWJ1 dGU6IChhdHRyaWJ1dGVOYW1lKSA9PiB7CisgICAgICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZU5h bWUgPT09ICd1cmwnKSB7CisgICAgICAgICAgICAgICAgICByZXR1cm4gJ2h0dHA6Ly9zb21ldXJs JzsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGF0dHJpYnV0ZU5hbWUgPT09ICdsYWJlbCcp IHsKKyAgICAgICAgICAgICAgICAgIHJldHVybiAnc29tZSBsYWJlbCc7CisgICAgICAgICAgICAg ICAgfQorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgfSwKKyAgICAgICAgICB9LAorICAg ICAgICB9OworICAgICAgICByZXN0b3JlRGlhbG9nV3JhcHBlci5jYWxsYmFjayhldmVudCk7Cisg ICAgICB9KTsKKworICAgICAgaXQoJ2Rpc3BsYXlzIGhlbHAgZm9yIGRpYWxvZycsICgpID0+IHsK KyAgICAgICAgZXhwZWN0KHBnQnJvd3Nlci5zaG93SGVscCkudG9IYXZlQmVlbkNhbGxlZFdpdGgo CisgICAgICAgICAgJ2RpYWxvZ19oZWxwJywKKyAgICAgICAgICAnaHR0cDovL3NvbWV1cmwnLAor ICAgICAgICAgIHBnQnJvd3Nlci5Ob2Rlc1snc2VydmVyJ10sCisgICAgICAgICAgc2VydmVyVHJl ZU5vZGUsCisgICAgICAgICAgJ3NvbWUgbGFiZWwnCisgICAgICAgICk7CisgICAgICB9KTsKKwor ICAgICAgaXQoJ2RvZXMgbm90IHN0YXJ0IHRoZSByZXN0b3JlJywgKCkgPT4geworICAgICAgICBl eHBlY3QobmV0d29ya0NhbGxlZCkudG9CZShmYWxzZSk7CisgICAgICB9KTsKKyAgICB9KTsKKwor ICAgIGNvbnRleHQoJ29iamVjdCBoZWxwIGJ1dHRvbiB3YXMgcHJlc3NlZCcsICgpID0+IHsKKyAg ICAgIGxldCBuZXR3b3JrQ2FsbGVkOworICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgICAg IG5ldHdvcmtDYWxsZWQgPSBmYWxzZTsKKyAgICAgICAgcGdCcm93c2VyLnRyZWVNZW51LnNlbGVj dE5vZGUoc2VydmVyVHJlZU5vZGUuZG9tTm9kZSk7CisgICAgICAgIG5ldHdvcmtNb2NrLm9uQW55 KC8uKy8pLnJlcGx5KCgpID0+IHsKKyAgICAgICAgICBuZXR3b3JrQ2FsbGVkID0gdHJ1ZTsKKyAg ICAgICAgICByZXR1cm4gWzIwMCwge31dOworICAgICAgICB9KTsKKworICAgICAgICBjb25zdCBl dmVudCA9IHsKKyAgICAgICAgICBidXR0b246IHsKKyAgICAgICAgICAgIGVsZW1lbnQ6IHsKKyAg ICAgICAgICAgICAgbmFtZTogJ29iamVjdF9oZWxwJywKKyAgICAgICAgICAgICAgZ2V0QXR0cmli dXRlOiAoYXR0cmlidXRlTmFtZSkgPT4geworICAgICAgICAgICAgICAgIGlmIChhdHRyaWJ1dGVO YW1lID09PSAndXJsJykgeworICAgICAgICAgICAgICAgICAgcmV0dXJuICdodHRwOi8vc29tZXVy bCc7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChhdHRyaWJ1dGVOYW1lID09PSAnbGFiZWwn KSB7CisgICAgICAgICAgICAgICAgICByZXR1cm4gJ3NvbWUgbGFiZWwnOworICAgICAgICAgICAg ICAgIH0KKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgfSwKKyAg ICAgICAgfTsKKyAgICAgICAgcmVzdG9yZURpYWxvZ1dyYXBwZXIuY2FsbGJhY2soZXZlbnQpOwor ICAgICAgfSk7CisKKyAgICAgIGl0KCdkaXNwbGF5cyBoZWxwIGZvciBkaWFsb2cnLCAoKSA9PiB7 CisgICAgICAgIGV4cGVjdChwZ0Jyb3dzZXIuc2hvd0hlbHApLnRvSGF2ZUJlZW5DYWxsZWRXaXRo KAorICAgICAgICAgICdvYmplY3RfaGVscCcsCisgICAgICAgICAgJ2h0dHA6Ly9zb21ldXJsJywK KyAgICAgICAgICBwZ0Jyb3dzZXIuTm9kZXNbJ3NlcnZlciddLAorICAgICAgICAgIHNlcnZlclRy ZWVOb2RlLAorICAgICAgICAgICdzb21lIGxhYmVsJworICAgICAgICApOworICAgICAgfSk7CisK KyAgICAgIGl0KCdkb2VzIG5vdCBzdGFydCB0aGUgcmVzdG9yZScsICgpID0+IHsKKyAgICAgICAg ZXhwZWN0KG5ldHdvcmtDYWxsZWQpLnRvQmUoZmFsc2UpOworICAgICAgfSk7CisgICAgfSk7CisK KyAgICBjb250ZXh0KCdyZXN0b3JlIGJ1dHRvbiB3YXMgcHJlc3NlZCcsICgpID0+IHsKKyAgICAg IGxldCBuZXR3b3JrQ2FsbGVkOworICAgICAgbGV0IGV2ZW50OworCisgICAgICBjb250ZXh0KCdu byB0cmVlIG5vZGUgaXMgc2VsZWN0ZWQnLCAoKSA9PiB7CisgICAgICAgIGJlZm9yZUVhY2goKCkg PT4geworICAgICAgICAgIG5ldHdvcmtDYWxsZWQgPSBmYWxzZTsKKyAgICAgICAgICBuZXR3b3Jr TW9jay5vbkFueSgvLisvKS5yZXBseSgoKSA9PiB7CisgICAgICAgICAgICBuZXR3b3JrQ2FsbGVk ID0gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiBbMjAwLCB7fV07CisgICAgICAgICAgfSk7Cisg ICAgICAgICAgZXZlbnQgPSB7CisgICAgICAgICAgICBidXR0b246IHsKKyAgICAgICAgICAgICAg J2RhdGEtYnRuLW5hbWUnOiAncmVzdG9yZScsCisgICAgICAgICAgICAgIGVsZW1lbnQ6IHsKKyAg ICAgICAgICAgICAgICBnZXRBdHRyaWJ1dGU6ICgpID0+IHsKKyAgICAgICAgICAgICAgICAgIHJl dHVybiAnaHR0cDovL3NvbWV1cmwnOworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAg IH0sCisgICAgICAgICAgICB9LAorICAgICAgICAgIH07CisgICAgICAgIH0pOworCisgICAgICAg IGl0KCdkb2VzIG5vdCBzdGFydCB0aGUgcmVzdG9yZScsICgpID0+IHsKKyAgICAgICAgICByZXN0 b3JlRGlhbG9nV3JhcHBlci5jYWxsYmFjayhldmVudCk7CisgICAgICAgICAgZXhwZWN0KG5ldHdv cmtDYWxsZWQpLnRvQmUoZmFsc2UpOworICAgICAgICB9KTsKKyAgICAgIH0pOworCisgICAgICBj b250ZXh0KCd0cmVlIG5vZGUgc2VsZWN0ZWQgaGFzIG5vIGRhdGEnLCAoKSA9PiB7CisgICAgICAg IGJlZm9yZUVhY2goKCkgPT4geworICAgICAgICAgIG5ldHdvcmtDYWxsZWQgPSBmYWxzZTsKKyAg ICAgICAgICBuZXR3b3JrTW9jay5vbkFueSgvLisvKS5yZXBseSgoKSA9PiB7CisgICAgICAgICAg ICBuZXR3b3JrQ2FsbGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiBbMjAwLCB7fV07Cisg ICAgICAgICAgfSk7CisgICAgICAgICAgZXZlbnQgPSB7CisgICAgICAgICAgICBidXR0b246IHsK KyAgICAgICAgICAgICAgJ2RhdGEtYnRuLW5hbWUnOiAncmVzdG9yZScsCisgICAgICAgICAgICAg IGVsZW1lbnQ6IHsKKyAgICAgICAgICAgICAgICBnZXRBdHRyaWJ1dGU6ICgpID0+IHsKKyAgICAg ICAgICAgICAgICAgIHJldHVybiAnaHR0cDovL3NvbWV1cmwnOworICAgICAgICAgICAgICAgIH0s CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICB9LAorICAgICAgICAgIH07CisgICAgICAg ICAgcGdCcm93c2VyLnRyZWVNZW51LnNlbGVjdE5vZGUobm9EYXRhTm9kZS5kb21Ob2RlKTsKKyAg ICAgICAgfSk7CisKKyAgICAgICAgaXQoJ2RvZXMgbm90IHN0YXJ0IHRoZSByZXN0b3JlJywgKCkg PT4geworICAgICAgICAgIHJlc3RvcmVEaWFsb2dXcmFwcGVyLmNhbGxiYWNrKGV2ZW50KTsKKyAg ICAgICAgICBleHBlY3QobmV0d29ya0NhbGxlZCkudG9CZShmYWxzZSk7CisgICAgICAgIH0pOwor ICAgICAgfSk7CisKKyAgICAgIGNvbnRleHQoJ3RyZWUgbm9kZSBzZWxlY3QgaGFzIGRhdGEnLCAo KSA9PiB7CisKKyAgICAgICAgbGV0IGRhdGFiYXNlVHJlZU5vZGU7CisKKyAgICAgICAgYmVmb3Jl RWFjaCgoKSA9PiB7CisgICAgICAgICAgZGF0YWJhc2VUcmVlTm9kZSA9IHBnQnJvd3Nlci50cmVl TWVudS5hZGROZXdOb2RlKCdsZXZlbDMuMScsIHsKKyAgICAgICAgICAgIF90eXBlOiAnZGF0YWJh c2UnLAorICAgICAgICAgICAgX2lkOiAxMCwKKyAgICAgICAgICAgIF9sYWJlbDogJ3NvbWUtZGF0 YWJhc2UtbGFiZWwnLAorICAgICAgICAgIH0sIFt7aWQ6ICdsZXZlbDMuMSd9XSk7CisgICAgICAg ICAgcGdCcm93c2VyLnRyZWVNZW51LmFkZENoaWxkKHNlcnZlclRyZWVOb2RlLCBkYXRhYmFzZVRy ZWVOb2RlKTsKKyAgICAgICAgICBwZ0Jyb3dzZXIuTm9kZXMuZGF0YWJhc2UgPSB7CisgICAgICAg ICAgICBoYXNJZDogdHJ1ZSwKKyAgICAgICAgICAgIF9sYWJlbDogJ3NvbWUtZGF0YWJhc2UtbGFi ZWwnLAorICAgICAgICAgIH07CisgICAgICAgICAgbGV0IGZha2VNb2RlbCA9IG5ldyBGYWtlTW9k ZWwoKTsKKyAgICAgICAgICBmYWtlTW9kZWwuc2V0KCdzb21lLWtleScsICdzb21lLXZhbHVlJyk7 CisgICAgICAgICAgcmVzdG9yZURpYWxvZ1dyYXBwZXIudmlldyA9IHsKKyAgICAgICAgICAgIG1v ZGVsOiBmYWtlTW9kZWwsCisgICAgICAgICAgfTsKKyAgICAgICAgICBwZ0Jyb3dzZXIudHJlZU1l bnUuc2VsZWN0Tm9kZShkYXRhYmFzZVRyZWVOb2RlLmRvbU5vZGUpOworICAgICAgICAgIHBnQnJv d3Nlci5FdmVudHMgPSBqYXNtaW5lLmNyZWF0ZVNweU9iaigncGdCcm93c2VyRXZlbnRzU3B5Jywg Wyd0cmlnZ2VyJ10pOworICAgICAgICAgIGV2ZW50ID0geworICAgICAgICAgICAgYnV0dG9uOiB7 CisgICAgICAgICAgICAgICdkYXRhLWJ0bi1uYW1lJzogJ3Jlc3RvcmUnLAorICAgICAgICAgICAg ICBlbGVtZW50OiB7CisgICAgICAgICAgICAgICAgZ2V0QXR0cmlidXRlOiAoKSA9PiB7CisgICAg ICAgICAgICAgICAgICByZXR1cm4gJ2h0dHA6Ly9zb21ldXJsJzsKKyAgICAgICAgICAgICAgICB9 LAorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgfSwKKyAgICAgICAgICB9OworICAgICAg ICB9KTsKKyAgICAgICAgY29udGV4dCgncmVzdG9yZSBqb2IgY3JlYXRlZCBzdWNjZXNzZnVsbHkn LCAoKSA9PiB7CisgICAgICAgICAgbGV0IGRhdGFTZW50VG9TZXJ2ZXI7CisgICAgICAgICAgYmVm b3JlRWFjaCgoKSA9PiB7CisgICAgICAgICAgICBuZXR3b3JrTW9jay5vblBvc3QoJy9yZXN0b3Jl L2pvYi8xMCcpLnJlcGx5KChyZXF1ZXN0KSA9PiB7CisgICAgICAgICAgICAgIGRhdGFTZW50VG9T ZXJ2ZXIgPSByZXF1ZXN0LmRhdGE7CisgICAgICAgICAgICAgIHJldHVybiBbMjAwLCB7fV07Cisg ICAgICAgICAgICB9KTsKKyAgICAgICAgICB9KTsKKworICAgICAgICAgIGl0KCdjcmVhdGUgYW4g c3VjY2VzcyBhbGVydCBib3gnLCAoZG9uZSkgPT4geworICAgICAgICAgICAgcmVzdG9yZURpYWxv Z1dyYXBwZXIuY2FsbGJhY2soZXZlbnQpOworICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7 CisgICAgICAgICAgICAgIGV4cGVjdChhbGVydGlmeVNweS5zdWNjZXNzKS50b0hhdmVCZWVuQ2Fs bGVkV2l0aCgKKyAgICAgICAgICAgICAgICAnUmVzdG9yZSBqb2IgY3JlYXRlZC4nLAorICAgICAg ICAgICAgICAgIDUKKyAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgZG9uZSgpOworICAg ICAgICAgICAgfSwgMCk7CisgICAgICAgICAgfSk7CisKKyAgICAgICAgICBpdCgndHJpZ2dlciBi YWNrZ3JvdW5kIHByb2Nlc3MnLCAoZG9uZSkgPT4geworICAgICAgICAgICAgcmVzdG9yZURpYWxv Z1dyYXBwZXIuY2FsbGJhY2soZXZlbnQpOworICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7 CisgICAgICAgICAgICAgIGV4cGVjdChwZ0Jyb3dzZXIuRXZlbnRzLnRyaWdnZXIpLnRvSGF2ZUJl ZW5DYWxsZWRXaXRoKAorICAgICAgICAgICAgICAgICdwZ2FkbWluLWJncHJvY2VzczpjcmVhdGVk JywKKyAgICAgICAgICAgICAgICByZXN0b3JlRGlhbG9nV3JhcHBlcgorICAgICAgICAgICAgICAp OworICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICB9LCAwKTsKKyAgICAgICAgICB9 KTsKKworICAgICAgICAgIGl0KCdzZW5kIGNvcnJlY3QgZGF0YSB0byBzZXJ2ZXInLCAoZG9uZSkg PT4geworICAgICAgICAgICAgcmVzdG9yZURpYWxvZ1dyYXBwZXIuY2FsbGJhY2soZXZlbnQpOwor ICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7CisgICAgICAgICAgICAgIGV4cGVjdChKU09O LnBhcnNlKGRhdGFTZW50VG9TZXJ2ZXIpKS50b0VxdWFsKHsKKyAgICAgICAgICAgICAgICAnc29t ZS1rZXknOiAnc29tZS12YWx1ZScsCisgICAgICAgICAgICAgICAgJ2RhdGFiYXNlJzogJ3NvbWUt ZGF0YWJhc2UtbGFiZWwnLAorICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgZG9uZSgp OworICAgICAgICAgICAgfSwgMCk7CisgICAgICAgICAgfSk7CisgICAgICAgIH0pOworCisgICAg ICAgIGNvbnRleHQoJ2Vycm9yIGNyZWF0aW5nIHJlc3RvcmUgam9iJywgKCkgPT4geworICAgICAg ICAgIGJlZm9yZUVhY2goKCkgPT4geworICAgICAgICAgICAgbmV0d29ya01vY2sub25Qb3N0KCcv cmVzdG9yZS9qb2IvMTAnKS5yZXBseSgoKSA9PiB7CisgICAgICAgICAgICAgIHJldHVybiBbNDAw LCB7fV07CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICB9KTsKKworICAgICAgICAgIGl0KCdj cmVhdGVzIGFuIGFsZXJ0IGJveCcsIChkb25lKSA9PiB7CisgICAgICAgICAgICByZXN0b3JlRGlh bG9nV3JhcHBlci5jYWxsYmFjayhldmVudCk7CisgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+ IHsKKyAgICAgICAgICAgICAgZXhwZWN0KGFsZXJ0aWZ5U3B5LmFsZXJ0KS50b0hhdmVCZWVuQ2Fs bGVkV2l0aCgKKyAgICAgICAgICAgICAgICAnUmVzdG9yZSBqb2IgZmFpbGVkLicsCisgICAgICAg ICAgICAgICAgdW5kZWZpbmVkCisgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgIGRvbmUo KTsKKyAgICAgICAgICAgIH0sIDApOworICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICAg IH0pOworICAgIH0pOworICB9KTsKKworICBkZXNjcmliZSgnc2V0RXh0cmFQYXJhbWV0ZXJzJywg KCkgPT4geworICAgIGxldCBzZWxlY3RlZE5vZGU7CisgICAgbGV0IHRyZWVJbmZvOworICAgIGxl dCBtb2RlbDsKKworICAgIGJlZm9yZUVhY2goKCkgPT4geworICAgICAgcmVzdG9yZURpYWxvZ1dy YXBwZXIgPSBuZXcgUmVzdG9yZURpYWxvZ1dyYXBwZXIoCisgICAgICAgICc8ZGl2IGNsYXNzPVwn cmVzdG9yZV9kaWFsb2dcJz48L2Rpdj4nLAorICAgICAgICAncmVzdG9yZURpYWxvZ1RpdGxlJywK KyAgICAgICAgJ3Jlc3RvcmUnLAorICAgICAgICBqcXVlcnlTcHksCisgICAgICAgIHBnQnJvd3Nl ciwKKyAgICAgICAgYWxlcnRpZnlTcHksCisgICAgICAgIGRpYWxvZ01vZGVsS2xhc3NTcHksCisg ICAgICAgIGJhY2tmb3JtCisgICAgICApOworCisgICAgICBtb2RlbCA9IG5ldyBGYWtlTW9kZWwo KTsKKyAgICAgIHJlc3RvcmVEaWFsb2dXcmFwcGVyLnZpZXcgPSB7CisgICAgICAgIG1vZGVsOiBt b2RlbCwKKyAgICAgIH07CisgICAgfSk7CisKKyAgICBjb250ZXh0KCd3aGVuIGl0IGlzIGEgY3Vz dG9tIG1vZGVsJywgKCkgPT4geworICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgICAgIG1v ZGVsLnNldCgnY3VzdG9tJywgdHJ1ZSk7CisgICAgICAgIHRyZWVJbmZvID0geworICAgICAgICAg ICdkYXRhYmFzZSc6IHsKKyAgICAgICAgICAgICdfbGFiZWwnOiAnc29tZS1kYXRhYmFzZS1sYWJl bCcsCisgICAgICAgICAgfSwKKyAgICAgICAgfTsKKyAgICAgIH0pOworCisgICAgICBpdCgnb25s eSBzZXRzIHRoZSBkYXRhYmFzZScsICgpID0+IHsKKyAgICAgICAgcmVzdG9yZURpYWxvZ1dyYXBw ZXIuc2V0RXh0cmFQYXJhbWV0ZXJzKHNlbGVjdGVkTm9kZSwgdHJlZUluZm8pOworICAgICAgICBl eHBlY3QobW9kZWwudG9KU09OKCkpLnRvRXF1YWwoeworICAgICAgICAgICdjdXN0b20nOiB0cnVl LAorICAgICAgICAgICdkYXRhYmFzZSc6ICdzb21lLWRhdGFiYXNlLWxhYmVsJywKKyAgICAgICAg fSk7CisgICAgICB9KTsKKyAgICB9KTsKKworICAgIGNvbnRleHQoJ3doZW4gaXQgaXMgbm90IGEg Y3VzdG9tIG1vZGVsJywgKCkgPT4geworICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgICAg IG1vZGVsLnNldCgnY3VzdG9tJywgZmFsc2UpOworICAgICAgICB0cmVlSW5mbyA9IHsKKyAgICAg ICAgICAnZGF0YWJhc2UnOiB7CisgICAgICAgICAgICAnX2xhYmVsJzogJ3NvbWUtZGF0YWJhc2Ut bGFiZWwnLAorICAgICAgICAgIH0sCisgICAgICAgICAgJ3NjaGVtYSc6IHsKKyAgICAgICAgICAg ICdfbGFiZWwnOiAnc29tZS1zY2hlbWEtbGFiZWwnLAorICAgICAgICAgIH0sCisgICAgICAgIH07 CisgICAgICB9KTsKKworICAgICAgY29udGV4dCgnd2hlbiBzZWxlY3RlZCBub2RlIGlzIGEgc2No ZW1hJywgKCkgPT4geworICAgICAgICBpdCgnc2V0cyBzY2hlbWFzIG9uIHRoZSBtb2RlbCcsICgp ID0+IHsKKyAgICAgICAgICBzZWxlY3RlZE5vZGUgPSBuZXcgVHJlZU5vZGUoJ3NjaGVtYScsIHtf dHlwZTogJ3NjaGVtYScsIF9sYWJlbDogJ3NvbWUtc2NoZW1hLWxhYmVsJ30sICcnKTsKKyAgICAg ICAgICByZXN0b3JlRGlhbG9nV3JhcHBlci5zZXRFeHRyYVBhcmFtZXRlcnMoc2VsZWN0ZWROb2Rl LCB0cmVlSW5mbyk7CisgICAgICAgICAgZXhwZWN0KG1vZGVsLnRvSlNPTigpKS50b0VxdWFsKHsK KyAgICAgICAgICAgIGN1c3RvbTogZmFsc2UsCisgICAgICAgICAgICBkYXRhYmFzZTogJ3NvbWUt ZGF0YWJhc2UtbGFiZWwnLAorICAgICAgICAgICAgc2NoZW1hczogWydzb21lLXNjaGVtYS1sYWJl bCddLAorICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICAgIH0pOworCisgICAgICBjb250 ZXh0KCd3aGVuIHNlbGVjdGVkIG5vZGUgaXMgYSB0YWJsZScsICgpID0+IHsKKyAgICAgICAgaXQo J3NldHMgc2NoZW1hcyBhbmQgdGFibGUgb24gdGhlIG1vZGVsJywgKCkgPT4geworICAgICAgICAg IHNlbGVjdGVkTm9kZSA9IG5ldyBUcmVlTm9kZSgndGFibGUnLCB7X3R5cGU6ICd0YWJsZScsIF9s YWJlbDogJ3NvbWUtdGFibGUtbGFiZWwnfSwgJycpOworICAgICAgICAgIHJlc3RvcmVEaWFsb2dX cmFwcGVyLnNldEV4dHJhUGFyYW1ldGVycyhzZWxlY3RlZE5vZGUsIHRyZWVJbmZvKTsKKyAgICAg ICAgICBleHBlY3QobW9kZWwudG9KU09OKCkpLnRvRXF1YWwoeworICAgICAgICAgICAgY3VzdG9t OiBmYWxzZSwKKyAgICAgICAgICAgIGRhdGFiYXNlOiAnc29tZS1kYXRhYmFzZS1sYWJlbCcsCisg ICAgICAgICAgICBzY2hlbWFzOiBbJ3NvbWUtc2NoZW1hLWxhYmVsJ10sCisgICAgICAgICAgICB0 YWJsZXM6IFsnc29tZS10YWJsZS1sYWJlbCddLAorICAgICAgICAgIH0pOworICAgICAgICB9KTsK KyAgICAgIH0pOworCisgICAgICBjb250ZXh0KCd3aGVuIHNlbGVjdGVkIG5vZGUgaXMgYSBmdW5j dGlvbicsICgpID0+IHsKKyAgICAgICAgaXQoJ3NldHMgc2NoZW1hcyBhbmQgZnVuY3Rpb24gb24g dGhlIG1vZGVsJywgKCkgPT4geworICAgICAgICAgIHNlbGVjdGVkTm9kZSA9IG5ldyBUcmVlTm9k ZSgnZnVuY3Rpb24nLCB7X3R5cGU6ICdmdW5jdGlvbicsIF9sYWJlbDogJ3NvbWUtZnVuY3Rpb24t bGFiZWwnfSwgJycpOworICAgICAgICAgIHJlc3RvcmVEaWFsb2dXcmFwcGVyLnNldEV4dHJhUGFy YW1ldGVycyhzZWxlY3RlZE5vZGUsIHRyZWVJbmZvKTsKKyAgICAgICAgICBleHBlY3QobW9kZWwu dG9KU09OKCkpLnRvRXF1YWwoeworICAgICAgICAgICAgY3VzdG9tOiBmYWxzZSwKKyAgICAgICAg ICAgIGRhdGFiYXNlOiAnc29tZS1kYXRhYmFzZS1sYWJlbCcsCisgICAgICAgICAgICBzY2hlbWFz OiBbJ3NvbWUtc2NoZW1hLWxhYmVsJ10sCisgICAgICAgICAgICBmdW5jdGlvbnM6IFsnc29tZS1m dW5jdGlvbi1sYWJlbCddLAorICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICAgIH0pOwor CisgICAgICBjb250ZXh0KCd3aGVuIHNlbGVjdGVkIG5vZGUgaXMgYW4gaW5kZXgnLCAoKSA9PiB7 CisgICAgICAgIGl0KCdzZXRzIHNjaGVtYXMgYW5kIGluZGV4IG9uIHRoZSBtb2RlbCcsICgpID0+ IHsKKyAgICAgICAgICBzZWxlY3RlZE5vZGUgPSBuZXcgVHJlZU5vZGUoJ2luZGV4Jywge190eXBl OiAnaW5kZXgnLCBfbGFiZWw6ICdzb21lLWluZGV4LWxhYmVsJ30sICcnKTsKKyAgICAgICAgICBy ZXN0b3JlRGlhbG9nV3JhcHBlci5zZXRFeHRyYVBhcmFtZXRlcnMoc2VsZWN0ZWROb2RlLCB0cmVl SW5mbyk7CisgICAgICAgICAgZXhwZWN0KG1vZGVsLnRvSlNPTigpKS50b0VxdWFsKHsKKyAgICAg ICAgICAgIGN1c3RvbTogZmFsc2UsCisgICAgICAgICAgICBkYXRhYmFzZTogJ3NvbWUtZGF0YWJh c2UtbGFiZWwnLAorICAgICAgICAgICAgc2NoZW1hczogWydzb21lLXNjaGVtYS1sYWJlbCddLAor ICAgICAgICAgICAgaW5kZXhlczogWydzb21lLWluZGV4LWxhYmVsJ10sCisgICAgICAgICAgfSk7 CisgICAgICAgIH0pOworICAgICAgfSk7CisKKyAgICAgIGNvbnRleHQoJ3doZW4gc2VsZWN0ZWQg bm9kZSBpcyBhIHRyaWdnZXInLCAoKSA9PiB7CisgICAgICAgIGl0KCdzZXRzIHNjaGVtYXMgYW5k IHRyaWdnZXIgb24gdGhlIG1vZGVsJywgKCkgPT4geworICAgICAgICAgIHNlbGVjdGVkTm9kZSA9 IG5ldyBUcmVlTm9kZSgndHJpZ2dlcicsIHtfdHlwZTogJ3RyaWdnZXInLCBfbGFiZWw6ICdzb21l LXRyaWdnZXItbGFiZWwnfSwgJycpOworICAgICAgICAgIHJlc3RvcmVEaWFsb2dXcmFwcGVyLnNl dEV4dHJhUGFyYW1ldGVycyhzZWxlY3RlZE5vZGUsIHRyZWVJbmZvKTsKKyAgICAgICAgICBleHBl Y3QobW9kZWwudG9KU09OKCkpLnRvRXF1YWwoeworICAgICAgICAgICAgY3VzdG9tOiBmYWxzZSwK KyAgICAgICAgICAgIGRhdGFiYXNlOiAnc29tZS1kYXRhYmFzZS1sYWJlbCcsCisgICAgICAgICAg ICBzY2hlbWFzOiBbJ3NvbWUtc2NoZW1hLWxhYmVsJ10sCisgICAgICAgICAgICB0cmlnZ2Vyczog Wydzb21lLXRyaWdnZXItbGFiZWwnXSwKKyAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAg ICB9KTsKKworICAgICAgY29udGV4dCgnd2hlbiBzZWxlY3RlZCBub2RlIGlzIGEgdHJpZ2dlcl9m dW5jJywgKCkgPT4geworICAgICAgICBpdCgnc2V0cyBzY2hlbWFzIGFuZCB0cmlnZ2VyX2Z1bmMg b24gdGhlIG1vZGVsJywgKCkgPT4geworICAgICAgICAgIHNlbGVjdGVkTm9kZSA9IG5ldyBUcmVl Tm9kZSgndHJpZ2dlcl9mdW5jJywge190eXBlOiAndHJpZ2dlcl9mdW5jJywgX2xhYmVsOiAnc29t ZS10cmlnZ2VyX2Z1bmMtbGFiZWwnfSwgJycpOworICAgICAgICAgIHJlc3RvcmVEaWFsb2dXcmFw cGVyLnNldEV4dHJhUGFyYW1ldGVycyhzZWxlY3RlZE5vZGUsIHRyZWVJbmZvKTsKKyAgICAgICAg ICBleHBlY3QobW9kZWwudG9KU09OKCkpLnRvRXF1YWwoeworICAgICAgICAgICAgY3VzdG9tOiBm YWxzZSwKKyAgICAgICAgICAgIGRhdGFiYXNlOiAnc29tZS1kYXRhYmFzZS1sYWJlbCcsCisgICAg ICAgICAgICBzY2hlbWFzOiBbJ3NvbWUtc2NoZW1hLWxhYmVsJ10sCisgICAgICAgICAgICB0cmln Z2VyX2Z1bmNzOiBbJ3NvbWUtdHJpZ2dlcl9mdW5jLWxhYmVsJ10sCisgICAgICAgICAgfSk7Cisg ICAgICAgIH0pOworICAgICAgfSk7CisgICAgfSk7CisgIH0pOworfSk7CmRpZmYgLS1naXQgYS93 ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L3NxbGVkaXRvci9maWx0ZXJfZGlhbG9nX3NwZWNzLmpz IGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9zcWxlZGl0b3IvZmlsdGVyX2RpYWxvZ19zcGVj cy5qcwppbmRleCBlZDc3ZGZmNS4uY2VhNzVlNmIgMTAwNjQ0Ci0tLSBhL3dlYi9yZWdyZXNzaW9u L2phdmFzY3JpcHQvc3FsZWRpdG9yL2ZpbHRlcl9kaWFsb2dfc3BlY3MuanMKKysrIGIvd2ViL3Jl Z3Jlc3Npb24vamF2YXNjcmlwdC9zcWxlZGl0b3IvZmlsdGVyX2RpYWxvZ19zcGVjcy5qcwpAQCAt NywxMCArNyw4IEBACiAvLwogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KIGltcG9ydCBmaWx0ZXJEaWFsb2cg ZnJvbSAnc291cmNlcy9zcWxlZGl0b3IvZmlsdGVyX2RpYWxvZyc7Ci0vLyBpbXBvcnQgZmlsdGVy RGlhbG9nTW9kZWwgZnJvbSAnc291cmNlcy9zcWxlZGl0b3IvZmlsdGVyX2RpYWxvZ19tb2RlbCc7 CiAKIGRlc2NyaWJlKCdmaWx0ZXJEaWFsb2cnLCAoKSA9PiB7Ci0gIGphc21pbmUuY3JlYXRlU3B5 KCdzcWxFZGl0b3JDb250cm9sbGVyJyk7CiAgIGRlc2NyaWJlKCdmaWx0ZXJEaWFsb2cnLCAoKSA9 PiB7CiAgICAgZGVzY3JpYmUoJ3doZW4gdXNpbmcgZmlsdGVyIGRpYWxvZycsICgpID0+IHsKICAg ICAgIGJlZm9yZUVhY2goKCkgPT4gewpkaWZmIC0tZ2l0IGEvd2ViL3JlZ3Jlc3Npb24vamF2YXNj cmlwdC90YWJsZS9lbmFibGVfZGlzYWJsZV90cmlnZ2Vyc19zcGVjLmpzIGIvd2ViL3JlZ3Jlc3Np b24vamF2YXNjcmlwdC90YWJsZS9lbmFibGVfZGlzYWJsZV90cmlnZ2Vyc19zcGVjLmpzCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi43YmRkMjg0ZQotLS0gL2Rldi9udWxsCisr KyBiL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvdGFibGUvZW5hYmxlX2Rpc2FibGVfdHJpZ2dl cnNfc3BlYy5qcwpAQCAtMCwwICsxLDI3MSBAQAorLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8KKy8vIHBnQWRtaW4gNCAtIFBv c3RncmVTUUwgVG9vbHMKKy8vCisvLyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE4LCBUaGUgcGdB ZG1pbiBEZXZlbG9wbWVudCBUZWFtCisvLyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVy IHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKy8vCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCitpbXBvcnQgTW9ja0FkYXB0ZXIg ZnJvbSAnYXhpb3MtbW9jay1hZGFwdGVyJzsKK2ltcG9ydCBheGlvcyBmcm9tICdheGlvcy9pbmRl eCc7CitpbXBvcnQgeworICBlbmFibGVUcmlnZ2VycywKKyAgZGlzYWJsZVRyaWdnZXJzLAorfSBm cm9tICcuLi8uLi8uLi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL3RhYmxlcy9zdGF0aWMvanMvZW5hYmxlX2Rpc2FibGVfdHJpZ2dlcnMnOwor aW1wb3J0IHtUcmVlRmFrZX0gZnJvbSAnLi4vdHJlZS90cmVlX2Zha2UnOworaW1wb3J0IHtUcmVl Tm9kZX0gZnJvbSAnLi4vLi4vLi4vcGdhZG1pbi9zdGF0aWMvanMvdHJlZS90cmVlJzsKKworZGVz Y3JpYmUoJyNlbmFibGVUcmlnZ2VycycsICgpID0+IHsKKyAgbGV0IG5ldHdvcmtNb2NrOworICBs ZXQgdHJlZTsKKyAgbGV0IGFsZXJ0aWZ5OworICBsZXQgZ2VuZXJhdGVVcmxTcHk7CisgIGJlZm9y ZUVhY2goKCkgPT4geworICAgIG5ldHdvcmtNb2NrID0gbmV3IE1vY2tBZGFwdGVyKGF4aW9zKTsK KyAgICB0cmVlID0gbmV3IFRyZWVGYWtlKCk7CisgICAgY29uc3Qgc2VydmVyMSA9IHRyZWUuYWRk TmV3Tm9kZSgnc2VydmVyMScsIHtfaWQ6IDF9LCBbJzxsaT5zZXJ2ZXIxPC9saT4nXSk7CisgICAg Y29uc3QgZGF0YWJhc2UxID0gdHJlZS5hZGROZXdOb2RlKCdkYXRhYmFzZTEnLCB7X3R5cGU6ICdk YXRhYmFzZSd9LCBbJzxsaT5kYXRhYmFzZTE8L2xpPiddKTsKKyAgICB0cmVlLmFkZENoaWxkKHNl cnZlcjEsIGRhdGFiYXNlMSk7CisKKyAgICBjb25zdCBzY2hlbWExID0gdHJlZS5hZGROZXdOb2Rl KCdzY2hlbWExJywge190eXBlOiAnc2NoZW1hJ30sIFsnPGxpPnNjaGVtYTE8L2xpPiddKTsKKyAg ICB0cmVlLmFkZENoaWxkKGRhdGFiYXNlMSwgc2NoZW1hMSk7CisKKyAgICBjb25zdCB0YWJsZTEg PSB0cmVlLmFkZE5ld05vZGUoJ3RhYmxlMScsIHtfdHlwZTogJ3RhYmxlJ30sIFsnPGxpPnRhYmxl MTwvbGk+J10pOworICAgIHRyZWUuYWRkQ2hpbGQoc2NoZW1hMSwgdGFibGUxKTsKKworICAgIGNv bnN0IGNvbHVtbjEgPSB0cmVlLmFkZE5ld05vZGUoJ2NvbHVtbjEnLCB7X3R5cGU6ICdjb2x1bW4n fSwgWyc8bGk+Y29sdW1uMTwvbGk+J10pOworICAgIHRyZWUuYWRkQ2hpbGQodGFibGUxLCBjb2x1 bW4xKTsKKworICAgIGNvbnN0IHRhYmxlTm9EYXRhID0gdHJlZS5hZGROZXdOb2RlKCd0YWJsZS1u by1kYXRhJywgdW5kZWZpbmVkLCBbJzxsaT50YWJsZS1uby1kYXRhPC9saT4nXSk7CisgICAgdHJl ZS5hZGRDaGlsZChzY2hlbWExLCB0YWJsZU5vRGF0YSk7CisKKyAgICBhbGVydGlmeSA9IGphc21p bmUuY3JlYXRlU3B5T2JqKCdhbGVydGlmeScsIFsnc3VjY2VzcycsICdlcnJvciddKTsKKyAgICBn ZW5lcmF0ZVVybFNweSA9IGphc21pbmUuY3JlYXRlU3B5KCdnZW5lcmF0ZVVybCcpOworICAgIGdl bmVyYXRlVXJsU3B5LmFuZC5yZXR1cm5WYWx1ZSgnL3NvbWUvcGxhY2UnKTsKKyAgfSk7CisKKyAg ZGVzY3JpYmUoJ25vIG5vZGUgaXMgc2VsZWN0ZWQnLCAoKSA9PiB7CisgICAgaXQoJ2RvZXMgbm90 IHNlbmQgdGhlIHJlcXVlc3QgdG8gdGhlIGJhY2tlbmQnLCAoZG9uZSkgPT4geworICAgICAgbmV0 d29ya01vY2sub25BbnkoJy4qJykucmVwbHkoMjAwLCAoKSA9PiB7CisgICAgICB9KTsKKworICAg ICAgc2V0VGltZW91dCgoKSA9PiB7CisgICAgICAgIGV4cGVjdChlbmFibGVUcmlnZ2Vycyh0cmVl LCBhbGVydGlmeSwgZ2VuZXJhdGVVcmxTcHksIHt9KSkudG9CZShmYWxzZSk7CisgICAgICAgIGRv bmUoKTsKKyAgICAgIH0sIDApOworICAgIH0pOworICB9KTsKKworICBkZXNjcmliZSgnYSBub2Rl IGlzIHNlbGVjdGVkJywgKCkgPT4geworICAgIGRlc2NyaWJlKCdub2RlIGFzIG5vIGRhdGEnLCAo KSA9PiB7CisgICAgICBpdCgnZG9lcyBub3Qgc2VuZCB0aGUgcmVxdWVzdCB0byB0aGUgYmFja2Vu ZCcsICgpID0+IHsKKyAgICAgICAgdHJlZS5zZWxlY3ROb2RlKFt7aWQ6ICd0YWJsZS1uby1kYXRh J31dKTsKKworICAgICAgICBuZXR3b3JrTW9jay5vbkFueSgnLionKS5yZXBseSgyMDAsICgpID0+ IHsKKyAgICAgICAgfSk7CisKKyAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7CisgICAgICAgICAg ZXhwZWN0KGVuYWJsZVRyaWdnZXJzKHRyZWUsIGFsZXJ0aWZ5LCBnZW5lcmF0ZVVybFNweSwge30p KS50b0JlKGZhbHNlKTsKKyAgICAgICAgfSwgMCk7CisgICAgICB9KTsKKyAgICB9KTsKKworICAg IGRlc2NyaWJlKCdub2RlIGFzICBkYXRhJywgKCkgPT4geworICAgICAgZGVzY3JpYmUoJ2JhY2tl bmQgcmVzcG9uZHMgd2l0aCBzdWNjZXNzJywgKCkgPT4geworICAgICAgICBsZXQgbmV0d29ya01v Y2tDYWxsZWRXaXRoOworICAgICAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgICAgICBuZXR3 b3JrTW9ja0NhbGxlZFdpdGggPSBmYWxzZTsKKyAgICAgICAgICBuZXR3b3JrTW9jay5vblB1dCgv LiovKS5yZXBseSgoY29uZmlndXJhdGlvbikgPT4geworICAgICAgICAgICAgbmV0d29ya01vY2tD YWxsZWRXaXRoID0gY29uZmlndXJhdGlvbjsKKyAgICAgICAgICAgIHJldHVybiBbMjAwLCB7Cisg ICAgICAgICAgICAgIHN1Y2Nlc3M6IDEsCisgICAgICAgICAgICAgIGluZm86ICdzb21lIGluZm9y bWF0aW9uJywKKyAgICAgICAgICAgIH1dOworICAgICAgICAgIH0pOworICAgICAgICB9KTsKKwor ICAgICAgICBpdCgnZGlzcGxheXMgYW4gYWxlcnQgYm94IHdpdGggc3VjY2VzcycsIChkb25lKSA9 PiB7CisgICAgICAgICAgdHJlZS5zZWxlY3ROb2RlKFt7aWQ6ICd0YWJsZTEnfV0pOworICAgICAg ICAgIGVuYWJsZVRyaWdnZXJzKHRyZWUsIGFsZXJ0aWZ5LCBnZW5lcmF0ZVVybFNweSwge30pOwor ICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICAgICAgZXhwZWN0KGFsZXJ0aWZ5 LnN1Y2Nlc3MpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKCdzb21lIGluZm9ybWF0aW9uJyk7CisgICAg ICAgICAgICBkb25lKCk7CisgICAgICAgICAgfSwgMCk7CisgICAgICAgIH0pOworCisgICAgICAg IGl0KCdyZWxvYWRzIHRoZSBub2RlJywgKGRvbmUpID0+IHsKKyAgICAgICAgICBlbmFibGVUcmln Z2Vycyh0cmVlLCBhbGVydGlmeSwgZ2VuZXJhdGVVcmxTcHksIHtpdGVtOiBbe2lkOiAndGFibGUx J31dfSk7CisgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7CisgICAgICAgICAgICBleHBlY3Qo dHJlZS5zZWxlY3RlZCgpKS50b0VxdWFsKFsnPGxpPnRhYmxlMTwvbGk+J10pOworICAgICAgICAg ICAgZG9uZSgpOworICAgICAgICAgIH0sIDIwKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaXQo J2NhbGwgYmFja2VuZCB3aXRoIHRoZSBjb3JyZWN0IHBhcmFtZXRlcnMnLCAoZG9uZSkgPT4gewor ICAgICAgICAgIGVuYWJsZVRyaWdnZXJzKHRyZWUsIGFsZXJ0aWZ5LCBnZW5lcmF0ZVVybFNweSwg e2l0ZW06IFt7aWQ6ICd0YWJsZTEnfV19KTsKKyAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsK KyAgICAgICAgICAgIGV4cGVjdChuZXR3b3JrTW9ja0NhbGxlZFdpdGguZGF0YSkudG9FcXVhbChK U09OLnN0cmluZ2lmeSh7ZW5hYmxlOiAndHJ1ZSd9KSk7CisgICAgICAgICAgICBkb25lKCk7Cisg ICAgICAgICAgfSwgMCk7CisgICAgICAgIH0pOworICAgICAgfSk7CisKKyAgICAgIGRlc2NyaWJl KCdiYWNrZW5kIHJlc3BvbmRzIHdpdGggZXJyb3InLCAoKSA9PiB7CisgICAgICAgIGJlZm9yZUVh Y2goKCkgPT4geworICAgICAgICAgIG5ldHdvcmtNb2NrLm9uUHV0KC8uKi8pLnJlcGx5KCgpID0+ IHsKKyAgICAgICAgICAgIHJldHVybiBbNTAwLCB7CisgICAgICAgICAgICAgIHN1Y2Nlc3M6IDAs CisgICAgICAgICAgICAgIGVycm9ybXNnOiAnc29tZSBlcnJvciBtZXNzYWdlJywKKyAgICAgICAg ICAgIH1dOworICAgICAgICAgIH0pOworICAgICAgICB9KTsKKworICAgICAgICBpdCgnZGlzcGxh eXMgYW4gZXJyb3IgYWxlcnQnLCAoZG9uZSkgPT4geworICAgICAgICAgIHRyZWUuc2VsZWN0Tm9k ZShbe2lkOiAndGFibGUxJ31dKTsKKyAgICAgICAgICBlbmFibGVUcmlnZ2Vycyh0cmVlLCBhbGVy dGlmeSwgZ2VuZXJhdGVVcmxTcHksIHt9KTsKKyAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsK KyAgICAgICAgICAgIGV4cGVjdChhbGVydGlmeS5lcnJvcikudG9IYXZlQmVlbkNhbGxlZFdpdGgo J3NvbWUgZXJyb3IgbWVzc2FnZScpOworICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgIH0s IDApOworICAgICAgICB9KTsKKworICAgICAgICBpdCgndW5sb2FkIHRoZSBub2RlJywgKGRvbmUp ID0+IHsKKyAgICAgICAgICBlbmFibGVUcmlnZ2Vycyh0cmVlLCBhbGVydGlmeSwgZ2VuZXJhdGVV cmxTcHksIHtpdGVtOiBbe2lkOiAndGFibGUxJ31dfSk7CisKKyAgICAgICAgICBzZXRUaW1lb3V0 KCgpID0+IHsKKyAgICAgICAgICAgIGV4cGVjdCh0cmVlLmZpbmROb2RlQnlEb21FbGVtZW50KFt7 aWQ6ICd0YWJsZTEnfV0pLmNoaWxkcmVuLmxlbmd0aCkudG9CZSgwKTsKKyAgICAgICAgICAgIGRv bmUoKTsKKyAgICAgICAgICB9LCAyMCk7CisgICAgICAgIH0pOworICAgICAgfSk7CisgICAgfSk7 CisgIH0pOworfSk7CisKK2Rlc2NyaWJlKCcjZGlzYWJsZVRyaWdnZXJzJywgKCkgPT4geworICBs ZXQgbmV0d29ya01vY2s7CisgIGxldCB0cmVlOworICBsZXQgYWxlcnRpZnk7CisgIGxldCBnZW5l cmF0ZVVybFNweTsKKyAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgbmV0d29ya01vY2sgPSBuZXcg TW9ja0FkYXB0ZXIoYXhpb3MpOworICAgIHRyZWUgPSBuZXcgVHJlZUZha2UoKTsKKyAgICBjb25z dCBzZXJ2ZXIxID0gdHJlZS5hZGROZXdOb2RlKCdzZXJ2ZXIxJywge19pZDogMX0sIFsnPGxpPnNl cnZlcjE8L2xpPiddKTsKKyAgICBjb25zdCBkYXRhYmFzZTEgPSBuZXcgVHJlZU5vZGUoJ2RhdGFi YXNlMScsIHtfdHlwZTogJ2RhdGFiYXNlJ30sIFsnPGxpPmRhdGFiYXNlMTwvbGk+J10pOworICAg IHRyZWUuYWRkQ2hpbGQoc2VydmVyMSwgZGF0YWJhc2UxKTsKKworICAgIGNvbnN0IHNjaGVtYTEg PSBuZXcgVHJlZU5vZGUoJ3NjaGVtYTEnLCB7X3R5cGU6ICdzY2hlbWEnfSwgWyc8bGk+c2NoZW1h MTwvbGk+J10pOworICAgIHRyZWUuYWRkQ2hpbGQoZGF0YWJhc2UxLCBzY2hlbWExKTsKKworICAg IGNvbnN0IHRhYmxlMSA9IG5ldyBUcmVlTm9kZSgndGFibGUxJywge190eXBlOiAndGFibGUnfSwg Wyc8bGk+dGFibGUxPC9saT4nXSk7CisgICAgdHJlZS5hZGRDaGlsZChzY2hlbWExLCB0YWJsZTEp OworCisgICAgY29uc3QgY29sdW1uMSA9IG5ldyBUcmVlTm9kZSgnY29sdW1uMScsIHtfdHlwZTog J2NvbHVtbid9LCBbJzxsaT5jb2x1bW4xPC9saT4nXSk7CisgICAgdHJlZS5hZGRDaGlsZCh0YWJs ZTEsIGNvbHVtbjEpOworCisgICAgY29uc3QgdGFibGVOb0RhdGEgPSBuZXcgVHJlZU5vZGUoJ3Rh YmxlLW5vLWRhdGEnLCB1bmRlZmluZWQsIFsnPGxpPnRhYmxlLW5vLWRhdGE8L2xpPiddKTsKKyAg ICB0cmVlLmFkZENoaWxkKHNjaGVtYTEsIHRhYmxlTm9EYXRhKTsKKworICAgIGFsZXJ0aWZ5ID0g amFzbWluZS5jcmVhdGVTcHlPYmooJ2FsZXJ0aWZ5JywgWydzdWNjZXNzJywgJ2Vycm9yJ10pOwor ICAgIGdlbmVyYXRlVXJsU3B5ID0gamFzbWluZS5jcmVhdGVTcHkoJ2dlbmVyYXRlVXJsJyk7Cisg ICAgZ2VuZXJhdGVVcmxTcHkuYW5kLnJldHVyblZhbHVlKCcvc29tZS9wbGFjZScpOworICB9KTsK KworICBkZXNjcmliZSgnbm8gbm9kZSBpcyBzZWxlY3RlZCcsICgpID0+IHsKKyAgICBpdCgnZG9l cyBub3Qgc2VuZCB0aGUgcmVxdWVzdCB0byB0aGUgYmFja2VuZCcsIChkb25lKSA9PiB7CisgICAg ICBuZXR3b3JrTW9jay5vbkFueSgnLionKS5yZXBseSgyMDAsICgpID0+IHsKKyAgICAgIH0pOwor CisgICAgICBzZXRUaW1lb3V0KCgpID0+IHsKKyAgICAgICAgZXhwZWN0KGRpc2FibGVUcmlnZ2Vy cyh0cmVlLCBhbGVydGlmeSwgZ2VuZXJhdGVVcmxTcHksIHt9KSkudG9CZShmYWxzZSk7CisgICAg ICAgIGRvbmUoKTsKKyAgICAgIH0sIDApOworICAgIH0pOworICB9KTsKKworICBkZXNjcmliZSgn YSBub2RlIGlzIHNlbGVjdGVkJywgKCkgPT4geworICAgIGRlc2NyaWJlKCdub2RlIGFzIG5vIGRh dGEnLCAoKSA9PiB7CisgICAgICBpdCgnZG9lcyBub3Qgc2VuZCB0aGUgcmVxdWVzdCB0byB0aGUg YmFja2VuZCcsICgpID0+IHsKKyAgICAgICAgdHJlZS5zZWxlY3ROb2RlKFt7aWQ6ICd0YWJsZS1u by1kYXRhJ31dKTsKKworICAgICAgICBuZXR3b3JrTW9jay5vbkFueSgnLionKS5yZXBseSgyMDAs ICgpID0+IHsKKyAgICAgICAgfSk7CisKKyAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7CisgICAg ICAgICAgZXhwZWN0KGRpc2FibGVUcmlnZ2Vycyh0cmVlLCBhbGVydGlmeSwgZ2VuZXJhdGVVcmxT cHksIHt9KSkudG9CZShmYWxzZSk7CisgICAgICAgIH0sIDApOworICAgICAgfSk7CisgICAgfSk7 CisKKyAgICBkZXNjcmliZSgnbm9kZSBhcyAgZGF0YScsICgpID0+IHsKKyAgICAgIGRlc2NyaWJl KCdiYWNrZW5kIHJlc3BvbmRzIHdpdGggc3VjY2VzcycsICgpID0+IHsKKyAgICAgICAgbGV0IG5l dHdvcmtNb2NrQ2FsbGVkV2l0aDsKKyAgICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgICAg ICAgbmV0d29ya01vY2tDYWxsZWRXaXRoID0gZmFsc2U7CisgICAgICAgICAgbmV0d29ya01vY2su b25QdXQoLy4qLykucmVwbHkoKGNvbmZpZ3VyYXRpb24pID0+IHsKKyAgICAgICAgICAgIG5ldHdv cmtNb2NrQ2FsbGVkV2l0aCA9IGNvbmZpZ3VyYXRpb247CisgICAgICAgICAgICByZXR1cm4gWzIw MCwgeworICAgICAgICAgICAgICBzdWNjZXNzOiAxLAorICAgICAgICAgICAgICBpbmZvOiAnc29t ZSBpbmZvcm1hdGlvbicsCisgICAgICAgICAgICB9XTsKKyAgICAgICAgICB9KTsKKyAgICAgICAg fSk7CisKKyAgICAgICAgaXQoJ2Rpc3BsYXlzIGFuIGFsZXJ0IGJveCB3aXRoIHN1Y2Nlc3MnLCAo ZG9uZSkgPT4geworICAgICAgICAgIHRyZWUuc2VsZWN0Tm9kZShbe2lkOiAndGFibGUxJ31dKTsK KyAgICAgICAgICBkaXNhYmxlVHJpZ2dlcnModHJlZSwgYWxlcnRpZnksIGdlbmVyYXRlVXJsU3B5 LCB7fSk7CisgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7CisgICAgICAgICAgICBleHBlY3Qo YWxlcnRpZnkuc3VjY2VzcykudG9IYXZlQmVlbkNhbGxlZFdpdGgoJ3NvbWUgaW5mb3JtYXRpb24n KTsKKyAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICB9LCAwKTsKKyAgICAgICAgfSk7CisK KyAgICAgICAgaXQoJ3JlbG9hZHMgdGhlIG5vZGUnLCAoZG9uZSkgPT4geworICAgICAgICAgIGRp c2FibGVUcmlnZ2Vycyh0cmVlLCBhbGVydGlmeSwgZ2VuZXJhdGVVcmxTcHksIHtpdGVtOiBbe2lk OiAndGFibGUxJ31dfSk7CisgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7CisgICAgICAgICAg ICBleHBlY3QodHJlZS5zZWxlY3RlZCgpKS50b0VxdWFsKFsnPGxpPnRhYmxlMTwvbGk+J10pOwor ICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgIH0sIDIwKTsKKyAgICAgICAgfSk7CisKKyAg ICAgICAgaXQoJ2NhbGwgYmFja2VuZCB3aXRoIHRoZSBjb3JyZWN0IHBhcmFtZXRlcnMnLCAoZG9u ZSkgPT4geworICAgICAgICAgIGRpc2FibGVUcmlnZ2Vycyh0cmVlLCBhbGVydGlmeSwgZ2VuZXJh dGVVcmxTcHksIHtpdGVtOiBbe2lkOiAndGFibGUxJ31dfSk7CisgICAgICAgICAgc2V0VGltZW91 dCgoKSA9PiB7CisgICAgICAgICAgICBleHBlY3QobmV0d29ya01vY2tDYWxsZWRXaXRoLmRhdGEp LnRvRXF1YWwoSlNPTi5zdHJpbmdpZnkoe2VuYWJsZTogJ2ZhbHNlJ30pKTsKKyAgICAgICAgICAg IGRvbmUoKTsKKyAgICAgICAgICB9LCAwKTsKKyAgICAgICAgfSk7CisgICAgICB9KTsKKworICAg ICAgZGVzY3JpYmUoJ2JhY2tlbmQgcmVzcG9uZHMgd2l0aCBlcnJvcicsICgpID0+IHsKKyAgICAg ICAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgICAgICAgbmV0d29ya01vY2sub25QdXQoLy4qLyku cmVwbHkoKCkgPT4geworICAgICAgICAgICAgcmV0dXJuIFs1MDAsIHsKKyAgICAgICAgICAgICAg c3VjY2VzczogMCwKKyAgICAgICAgICAgICAgZXJyb3Jtc2c6ICdzb21lIGVycm9yIG1lc3NhZ2Un LAorICAgICAgICAgICAgfV07CisgICAgICAgICAgfSk7CisgICAgICAgIH0pOworCisgICAgICAg IGl0KCdkaXNwbGF5cyBhbiBlcnJvciBhbGVydCcsIChkb25lKSA9PiB7CisgICAgICAgICAgdHJl ZS5zZWxlY3ROb2RlKFt7aWQ6ICd0YWJsZTEnfV0pOworICAgICAgICAgIGRpc2FibGVUcmlnZ2Vy cyh0cmVlLCBhbGVydGlmeSwgZ2VuZXJhdGVVcmxTcHksIHt9KTsKKyAgICAgICAgICBzZXRUaW1l b3V0KCgpID0+IHsKKyAgICAgICAgICAgIGV4cGVjdChhbGVydGlmeS5lcnJvcikudG9IYXZlQmVl bkNhbGxlZFdpdGgoJ3NvbWUgZXJyb3IgbWVzc2FnZScpOworICAgICAgICAgICAgZG9uZSgpOwor ICAgICAgICAgIH0sIDApOworICAgICAgICB9KTsKKworICAgICAgICBpdCgndW5sb2FkIHRoZSBu b2RlJywgKGRvbmUpID0+IHsKKyAgICAgICAgICBkaXNhYmxlVHJpZ2dlcnModHJlZSwgYWxlcnRp ZnksIGdlbmVyYXRlVXJsU3B5LCB7aXRlbTogW3tpZDogJ3RhYmxlMSd9XX0pOworCisgICAgICAg ICAgc2V0VGltZW91dCgoKSA9PiB7CisgICAgICAgICAgICBleHBlY3QodHJlZS5maW5kTm9kZUJ5 RG9tRWxlbWVudChbe2lkOiAndGFibGUxJ31dKS5jaGlsZHJlbi5sZW5ndGgpLnRvQmUoMCk7Cisg ICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgfSwgMjApOworICAgICAgICB9KTsKKyAgICAg IH0pOworICAgIH0pOworICB9KTsKK30pOwpkaWZmIC0tZ2l0IGEvd2ViL3JlZ3Jlc3Npb24vamF2 YXNjcmlwdC90cmVlL3BnYWRtaW5fdHJlZV9ub2RlX3NwZWMuanMgYi93ZWIvcmVncmVzc2lvbi9q YXZhc2NyaXB0L3RyZWUvcGdhZG1pbl90cmVlX25vZGVfc3BlYy5qcwpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMC4uNDc5ZTUxNWMKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcmVn cmVzc2lvbi9qYXZhc2NyaXB0L3RyZWUvcGdhZG1pbl90cmVlX25vZGVfc3BlYy5qcwpAQCAtMCww ICsxLDM1MyBAQAorLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vCisvLyBwZ0FkbWluIDQgLSBQb3N0Z3Jl U1FMIFRvb2xzCisvLworLy8gQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAxOCwgVGhlIHBnQWRtaW4g RGV2ZWxvcG1lbnQgVGVhbQorLy8gVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUg UG9zdGdyZVNRTCBMaWNlbmNlCisvLworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKworaW1wb3J0IHsKKyAg Z2V0VHJlZU5vZGVIaWVyYXJjaHlGcm9tRWxlbWVudCwKKyAgZ2V0VHJlZU5vZGVIaWVyYXJjaHlG cm9tSWRlbnRpZmllciwKK30gZnJvbSAnLi4vLi4vLi4vcGdhZG1pbi9zdGF0aWMvanMvdHJlZS9w Z2FkbWluX3RyZWVfbm9kZSc7CitpbXBvcnQge1RyZWVOb2RlfSBmcm9tICcuLi8uLi8uLi9wZ2Fk bWluL3N0YXRpYy9qcy90cmVlL3RyZWUnOworaW1wb3J0IHtUcmVlRmFrZX0gZnJvbSAnLi90cmVl X2Zha2UnOworCitjb25zdCBjb250ZXh0ID0gZGVzY3JpYmU7CisKK2Rlc2NyaWJlKCd0cmVlI25v ZGUjZ2V0VHJlZU5vZGVIaWVyYXJjaHknLCAoKSA9PiB7CisgIGxldCBicm93c2VyOworICBsZXQg bmV3VHJlZTsKKyAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgbmV3VHJlZSA9IG5ldyBUcmVlRmFr ZSgpOworICAgIGJyb3dzZXIgPSB7CisgICAgICBOb2RlczogeworICAgICAgICAnc3BlY2lhbCBv bmUnOiB7aGFzSWQ6IHRydWV9LAorICAgICAgICAnY2hpbGQgc3BlY2lhbCc6IHtoYXNJZDogdHJ1 ZX0sCisgICAgICAgICdvdGhlciB0eXBlJzoge2hhc0lkOiB0cnVlfSwKKyAgICAgICAgJ3RhYmxl Jzoge2hhc0lkOiB0cnVlfSwKKyAgICAgICAgJ3BhcnRpdGlvbic6IHtoYXNJZDogdHJ1ZX0sCisg ICAgICAgICdubyBpZCc6IHtoYXNJZDogZmFsc2V9LAorICAgICAgfSwKKyAgICB9OworICAgIGJy b3dzZXIudHJlZU1lbnUgPSBuZXdUcmVlOworICB9KTsKKworICBjb250ZXh0KCdnZXRUcmVlTm9k ZUhpZXJhcmNoeSBpcyBjYWxsZWQgd2l0aCBhY2lUcmVlTm9kZSBvYmplY3QnLCAoKSA9PiB7Cisg ICAgZGVzY3JpYmUoJ1doZW4gdGhlIGN1cnJlbnQgbm9kZSBpcyByb290IGVsZW1lbnQnLCAoKSA9 PiB7CisgICAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgICAgbmV3VHJlZS5hZGROZXdOb2Rl KCdyb290JywgeworICAgICAgICAgICdzb21lIGtleSc6ICdzb21lIHZhbHVlJywKKyAgICAgICAg ICAnX3R5cGUnOiAnc3BlY2lhbCBvbmUnLAorICAgICAgICB9KTsKKyAgICAgIH0pOworCisgICAg ICBpdCgncmV0dXJucyBhIG9iamVjdCB3aXRoIHRoZSBlbGVtZW50IHR5cGUgcGFzc2VkIGRhdGEg YW5kIHByaW9yaXR5ID09IDAnLCAoKSA9PiB7CisgICAgICAgIGNvbnN0IHJlc3VsdCA9IGdldFRy ZWVOb2RlSGllcmFyY2h5RnJvbUlkZW50aWZpZXIuYmluZChicm93c2VyKShbe2lkOiAncm9vdCd9 XSk7CisgICAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoeworICAgICAgICAgICdzcGVjaWFs IG9uZSc6IHsKKyAgICAgICAgICAgICdzb21lIGtleSc6ICdzb21lIHZhbHVlJywKKyAgICAgICAg ICAgICdfdHlwZSc6ICdzcGVjaWFsIG9uZScsCisgICAgICAgICAgICAncHJpb3JpdHknOiAwLAor ICAgICAgICAgIH0sCisgICAgICAgIH0pOworICAgICAgfSk7CisgICAgfSk7CisKKyAgICBkZXNj cmliZSgnV2hlbiB0aGUgY3VycmVudCBub2RlIGlzIG5vdCBvZiBhIGtub3duIHR5cGUnLCAoKSA9 PiB7CisgICAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgICAgbmV3VHJlZS5hZGROZXdOb2Rl KCdyb290JywgeworICAgICAgICAgICdzb21lIGtleSc6ICdzb21lIHZhbHVlJywKKyAgICAgICAg ICAnX3R5cGUnOiAnZG8gbm90IGV4aXN0JywKKyAgICAgICAgfSwgW10pOworICAgICAgfSk7CisK KyAgICAgIGl0KCdyZXR1cm5zIGEgZW1wdHkgb2JqZWN0JywgKCkgPT4geworICAgICAgICBjb25z dCByZXN1bHQgPSBnZXRUcmVlTm9kZUhpZXJhcmNoeUZyb21JZGVudGlmaWVyLmJpbmQoYnJvd3Nl cikoJ3Jvb3QnKTsKKyAgICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbCh7fSk7CisgICAgICB9 KTsKKyAgICB9KTsKKworICAgIGRlc2NyaWJlKCdXaGVuIHRoZSBjdXJyZW50IG5vZGUgdHlwZSBo YXMgbm8gaWQnLCAoKSA9PiB7CisgICAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgICAgbmV3 VHJlZS5hZGROZXdOb2RlKCdyb290JywgeworICAgICAgICAgICdzb21lIGtleSc6ICdzb21lIHZh bHVlJywKKyAgICAgICAgICAnX3R5cGUnOiAnbm8gaWQnLAorICAgICAgICB9LCBbXSk7CisgICAg ICB9KTsKKworICAgICAgaXQoJ3JldHVybnMgYSBlbXB0eSBvYmplY3QnLCAoKSA9PiB7CisgICAg ICAgIGNvbnN0IHJlc3VsdCA9IGdldFRyZWVOb2RlSGllcmFyY2h5RnJvbUlkZW50aWZpZXIuYmlu ZChicm93c2VyKSgncm9vdCcpOworICAgICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKHt9KTsK KyAgICAgIH0pOworICAgIH0pOworCisgICAgZGVzY3JpYmUoJ1doZW4gdGhlIGN1cnJlbnQgbm9k ZSBpcyBhdCB0aGUgc2Vjb25kIGxldmVsJywgKCkgPT4geworICAgICAgYmVmb3JlRWFjaCgoKSA9 PiB7CisgICAgICAgIGNvbnN0IHJvb3QgPSBuZXdUcmVlLmFkZE5ld05vZGUoJ3Jvb3QnLCB7Cisg ICAgICAgICAgJ3NvbWUga2V5JzogJ3NvbWUgdmFsdWUnLAorICAgICAgICAgICdfdHlwZSc6ICdz cGVjaWFsIG9uZScsCisgICAgICAgIH0pOworICAgICAgICBjb25zdCBmaXJzdENoaWxkID0gbmV3 IFRyZWVOb2RlKCdmaXJzdCBjaGlsZCcsIHsKKyAgICAgICAgICAnc29tZSBrZXknOiAnc29tZSBv dGhlciB2YWx1ZScsCisgICAgICAgICAgJ190eXBlJzogJ2NoaWxkIHNwZWNpYWwnLAorICAgICAg ICB9LCBbJ3Jvb3QnXSk7CisgICAgICAgIG5ld1RyZWUuYWRkQ2hpbGQocm9vdCwgZmlyc3RDaGls ZCk7CisgICAgICB9KTsKKworICAgICAgaXQoJ3JldHVybnMgYSBlbXB0eSBvYmplY3QnLCAoKSA9 PiB7CisgICAgICAgIGNvbnN0IHJlc3VsdCA9IGdldFRyZWVOb2RlSGllcmFyY2h5RnJvbUlkZW50 aWZpZXIuYmluZChicm93c2VyKShbe2lkOiAnZmlyc3QgY2hpbGQnfV0pOworICAgICAgICBleHBl Y3QocmVzdWx0KS50b0VxdWFsKHsKKyAgICAgICAgICAnY2hpbGQgc3BlY2lhbCc6IHsKKyAgICAg ICAgICAgICdzb21lIGtleSc6ICdzb21lIG90aGVyIHZhbHVlJywKKyAgICAgICAgICAgICdfdHlw ZSc6ICdjaGlsZCBzcGVjaWFsJywKKyAgICAgICAgICAgICdwcmlvcml0eSc6IDAsCisgICAgICAg ICAgfSwKKyAgICAgICAgICAnc3BlY2lhbCBvbmUnOiB7CisgICAgICAgICAgICAnc29tZSBrZXkn OiAnc29tZSB2YWx1ZScsCisgICAgICAgICAgICAnX3R5cGUnOiAnc3BlY2lhbCBvbmUnLAorICAg ICAgICAgICAgJ3ByaW9yaXR5JzogLTEsCisgICAgICAgICAgfSwKKyAgICAgICAgfSk7CisgICAg ICB9KTsKKyAgICB9KTsKKworICAgIGNvbnRleHQoJ1doZW4gdHJlZSBhcyAic3BlY2lhbCB0eXBl IicsICgpID0+IHsKKyAgICAgIGNvbnRleHQoJ1doZW4gInNwZWNpYWwgdHlwZSIgaGF2ZSAib3Ro ZXIgdHlwZSInLCAoKSA9PiB7CisgICAgICAgIGNvbnRleHQoJ1doZW4gIm90aGVyIHR5cGUiIGhh dmUgInNwZWNpYWwgdHlwZSInLCAoKSA9PiB7CisgICAgICAgICAgZGVzY3JpYmUoJ1doZW4gcmV0 cmlldmluZyBsZWFkIG5vZGUnLCAoKSA9PiB7CisgICAgICAgICAgICBpdCgnZG9lcyBub3Qgb3Zl cnJpZGUgcHJldmlvdXMgbm9kZSB0eXBlIGRhdGEnLCAoKSA9PiB7CisgICAgICAgICAgICAgIGNv bnN0IHJvb3ROb2RlID0gbmV3VHJlZS5hZGROZXdOb2RlKCdyb290JywgeworICAgICAgICAgICAg ICAgICdzb21lIGtleSc6ICdzb21lIHZhbHVlJywKKyAgICAgICAgICAgICAgICAnX3R5cGUnOiAn c3BlY2lhbCBvbmUnLAorICAgICAgICAgICAgICB9LCBbXSk7CisKKyAgICAgICAgICAgICAgY29u c3QgbGV2ZWwxID0gbmV3IFRyZWVOb2RlKCdsZXZlbCAxJywgeworICAgICAgICAgICAgICAgICdz b21lIGtleSc6ICdzb21lIHZhbHVlJywKKyAgICAgICAgICAgICAgICAnX3R5cGUnOiAnb3RoZXIg dHlwZScsCisgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICBuZXdUcmVlLmFkZENoaWxk KHJvb3ROb2RlLCBsZXZlbDEpOworCisgICAgICAgICAgICAgIG5ld1RyZWUuYWRkQ2hpbGQobGV2 ZWwxLCBuZXcgVHJlZU5vZGUoJ2xldmVsIDInLCB7CisgICAgICAgICAgICAgICAgJ3NvbWUga2V5 JzogJ2V4cGVjdGVkIHZhbHVlJywKKyAgICAgICAgICAgICAgICAnX3R5cGUnOiAnc3BlY2lhbCBv bmUnLAorICAgICAgICAgICAgICAgICdzb21lIG90aGVyIGtleSc6ICdzb21lIG90aGVyIHZhbHVl JywKKyAgICAgICAgICAgICAgfSkpOworCisgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGdl dFRyZWVOb2RlSGllcmFyY2h5RnJvbUlkZW50aWZpZXIuYmluZChicm93c2VyKShbe2lkOiAnbGV2 ZWwgMid9XSk7CisgICAgICAgICAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoeworICAgICAg ICAgICAgICAgICdzcGVjaWFsIG9uZSc6IHsKKyAgICAgICAgICAgICAgICAgICdzb21lIGtleSc6 ICdleHBlY3RlZCB2YWx1ZScsCisgICAgICAgICAgICAgICAgICAnX3R5cGUnOiAnc3BlY2lhbCBv bmUnLAorICAgICAgICAgICAgICAgICAgJ3NvbWUgb3RoZXIga2V5JzogJ3NvbWUgb3RoZXIgdmFs dWUnLAorICAgICAgICAgICAgICAgICAgJ3ByaW9yaXR5JzogMCwKKyAgICAgICAgICAgICAgICB9 LAorICAgICAgICAgICAgICAgICdvdGhlciB0eXBlJzogeworICAgICAgICAgICAgICAgICAgJ3Nv bWUga2V5JzogJ3NvbWUgdmFsdWUnLAorICAgICAgICAgICAgICAgICAgJ190eXBlJzogJ290aGVy IHR5cGUnLAorICAgICAgICAgICAgICAgICAgJ3ByaW9yaXR5JzogLTEsCisgICAgICAgICAgICAg ICAgfSwKKyAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICB9KTsK KyAgICAgICAgfSk7CisgICAgICB9KTsKKyAgICB9KTsKKworICAgIGNvbnRleHQoJ1doZW4gdHJl ZSBoYXMgdGFibGUnLCAoKSA9PiB7CisgICAgICBjb250ZXh0KCd3aGVuIHRhYmxlIGhhcyBwYXJ0 aXRpb24nLCAoKSA9PiB7CisgICAgICAgIGl0KCdyZXR1cm5zIHRhYmxlIHdpdGggcGFydGl0aW9u IHBhcmFtZXRlcnMnLCAoKSA9PiB7CisgICAgICAgICAgY29uc3Qgcm9vdCA9IG5ld1RyZWUuYWRk TmV3Tm9kZSgncm9vdCcsIHsKKyAgICAgICAgICAgICdzb21lIGtleSc6ICdzb21lIHZhbHVlJywK KyAgICAgICAgICAgICdfdHlwZSc6ICdzcGVjaWFsIG9uZScsCisgICAgICAgICAgfSwgW10pOwor ICAgICAgICAgIGNvbnN0IGxldmVsMSA9IG5ldyBUcmVlTm9kZSgnbGV2ZWwgMScsIHsKKyAgICAg ICAgICAgICdzb21lIGtleSc6ICdzb21lIHZhbHVlJywKKyAgICAgICAgICAgICdfdHlwZSc6ICd0 YWJsZScsCisgICAgICAgICAgfSk7CisgICAgICAgICAgbmV3VHJlZS5hZGRDaGlsZChyb290LCBs ZXZlbDEpOworICAgICAgICAgIG5ld1RyZWUuYWRkQ2hpbGQobGV2ZWwxLCBuZXcgVHJlZU5vZGUo J2xldmVsIDInLCB7CisgICAgICAgICAgICAnc29tZSBrZXknOiAnZXhwZWN0ZWQgdmFsdWUnLAor ICAgICAgICAgICAgJ190eXBlJzogJ3BhcnRpdGlvbicsCisgICAgICAgICAgICAnc29tZSBvdGhl ciBrZXknOiAnc29tZSBvdGhlciB2YWx1ZScsCisgICAgICAgICAgfSkpOworCisgICAgICAgICAg Y29uc3QgcmVzdWx0ID0gZ2V0VHJlZU5vZGVIaWVyYXJjaHlGcm9tSWRlbnRpZmllci5iaW5kKGJy b3dzZXIpKFt7aWQ6J2xldmVsIDInfV0pOworICAgICAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1 YWwoeworICAgICAgICAgICAgJ3NwZWNpYWwgb25lJzogeworICAgICAgICAgICAgICAnc29tZSBr ZXknOiAnc29tZSB2YWx1ZScsCisgICAgICAgICAgICAgICdfdHlwZSc6ICdzcGVjaWFsIG9uZScs CisgICAgICAgICAgICAgICdwcmlvcml0eSc6IC0xLAorICAgICAgICAgICAgfSwKKyAgICAgICAg ICAgICd0YWJsZSc6IHsKKyAgICAgICAgICAgICAgJ3NvbWUga2V5JzogJ2V4cGVjdGVkIHZhbHVl JywKKyAgICAgICAgICAgICAgJ3NvbWUgb3RoZXIga2V5JzogJ3NvbWUgb3RoZXIgdmFsdWUnLAor ICAgICAgICAgICAgICAnX3R5cGUnOiAncGFydGl0aW9uJywKKyAgICAgICAgICAgICAgJ3ByaW9y aXR5JzogMCwKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAg ICAgfSk7CisgICAgfSk7CisgIH0pOworCisgIGNvbnRleHQoJ2dldFRyZWVOb2RlSGllcmFyY2h5 IGlzIGNhbGxlZCB3aXRoIFRyZWVOb2RlIG9iamVjdCcsICgpID0+IHsKKyAgICBsZXQgdHJlZU5v ZGU7CisgICAgZGVzY3JpYmUoJ1doZW4gdGhlIGN1cnJlbnQgbm9kZSBpcyByb290IGVsZW1lbnQn LCAoKSA9PiB7CisgICAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgICAgdHJlZU5vZGUgPSBu ZXdUcmVlLmFkZE5ld05vZGUoJ3Jvb3QnLCB7CisgICAgICAgICAgJ3NvbWUga2V5JzogJ3NvbWUg dmFsdWUnLAorICAgICAgICAgICdfdHlwZSc6ICdzcGVjaWFsIG9uZScsCisgICAgICAgIH0sIFtd KTsKKyAgICAgIH0pOworCisgICAgICBpdCgncmV0dXJucyBhIG9iamVjdCB3aXRoIHRoZSBlbGVt ZW50IHR5cGUgcGFzc2VkIGRhdGEgYW5kIHByaW9yaXR5ID09IDAnLCAoKSA9PiB7CisgICAgICAg IGNvbnN0IHJlc3VsdCA9IGdldFRyZWVOb2RlSGllcmFyY2h5RnJvbUVsZW1lbnQoYnJvd3Nlciwg dHJlZU5vZGUpOworICAgICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKHsKKyAgICAgICAgICAn c3BlY2lhbCBvbmUnOiB7CisgICAgICAgICAgICAnc29tZSBrZXknOiAnc29tZSB2YWx1ZScsCisg ICAgICAgICAgICAnX3R5cGUnOiAnc3BlY2lhbCBvbmUnLAorICAgICAgICAgICAgJ3ByaW9yaXR5 JzogMCwKKyAgICAgICAgICB9LAorICAgICAgICB9KTsKKyAgICAgIH0pOworICAgIH0pOworCisg ICAgZGVzY3JpYmUoJ1doZW4gdGhlIGN1cnJlbnQgbm9kZSBpcyBub3Qgb2YgYSBrbm93biB0eXBl JywgKCkgPT4geworICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgICAgIHRyZWVOb2RlID0g bmV3VHJlZS5hZGROZXdOb2RlKCdyb290JywgeworICAgICAgICAgICdzb21lIGtleSc6ICdzb21l IHZhbHVlJywKKyAgICAgICAgICAnX3R5cGUnOiAnZG8gbm90IGV4aXN0JywKKyAgICAgICAgfSwg W10pOworICAgICAgfSk7CisKKyAgICAgIGl0KCdyZXR1cm5zIGEgZW1wdHkgb2JqZWN0JywgKCkg PT4geworICAgICAgICBjb25zdCByZXN1bHQgPSBnZXRUcmVlTm9kZUhpZXJhcmNoeUZyb21FbGVt ZW50KGJyb3dzZXIsIHRyZWVOb2RlKTsKKyAgICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbCh7 fSk7CisgICAgICB9KTsKKyAgICB9KTsKKworICAgIGRlc2NyaWJlKCdXaGVuIHRoZSBjdXJyZW50 IG5vZGUgdHlwZSBoYXMgbm8gaWQnLCAoKSA9PiB7CisgICAgICBiZWZvcmVFYWNoKCgpID0+IHsK KyAgICAgICAgdHJlZU5vZGUgPSBuZXdUcmVlLmFkZE5ld05vZGUoJ3Jvb3QnLCB7CisgICAgICAg ICAgJ3NvbWUga2V5JzogJ3NvbWUgdmFsdWUnLAorICAgICAgICAgICdfdHlwZSc6ICdubyBpZCcs CisgICAgICAgIH0sIFtdKTsKKyAgICAgIH0pOworCisgICAgICBpdCgncmV0dXJucyBhIGVtcHR5 IG9iamVjdCcsICgpID0+IHsKKyAgICAgICAgY29uc3QgcmVzdWx0ID0gZ2V0VHJlZU5vZGVIaWVy YXJjaHlGcm9tRWxlbWVudChicm93c2VyLCB0cmVlTm9kZSk7CisgICAgICAgIGV4cGVjdChyZXN1 bHQpLnRvRXF1YWwoe30pOworICAgICAgfSk7CisgICAgfSk7CisKKyAgICBkZXNjcmliZSgnV2hl biB0aGUgY3VycmVudCBub2RlIGlzIGF0IHRoZSBzZWNvbmQgbGV2ZWwnLCAoKSA9PiB7CisgICAg ICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgICAgY29uc3Qgcm9vdCA9IG5ld1RyZWUuYWRkTmV3 Tm9kZSgncm9vdCcsIHsKKyAgICAgICAgICAnc29tZSBrZXknOiAnc29tZSB2YWx1ZScsCisgICAg ICAgICAgJ190eXBlJzogJ3NwZWNpYWwgb25lJywKKyAgICAgICAgfSwgW10pOworICAgICAgICB0 cmVlTm9kZSA9IG5ldyBUcmVlTm9kZSgnZmlyc3QgY2hpbGQnLCB7CisgICAgICAgICAgJ3NvbWUg a2V5JzogJ3NvbWUgb3RoZXIgdmFsdWUnLAorICAgICAgICAgICdfdHlwZSc6ICdjaGlsZCBzcGVj aWFsJywKKyAgICAgICAgfSk7CisgICAgICAgIG5ld1RyZWUuYWRkQ2hpbGQocm9vdCwgdHJlZU5v ZGUpOworICAgICAgfSk7CisKKyAgICAgIGl0KCdyZXR1cm5zIGEgZW1wdHkgb2JqZWN0JywgKCkg PT4geworICAgICAgICBjb25zdCByZXN1bHQgPSBnZXRUcmVlTm9kZUhpZXJhcmNoeUZyb21FbGVt ZW50KGJyb3dzZXIsIHRyZWVOb2RlKTsKKyAgICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbCh7 CisgICAgICAgICAgJ2NoaWxkIHNwZWNpYWwnOiB7CisgICAgICAgICAgICAnc29tZSBrZXknOiAn c29tZSBvdGhlciB2YWx1ZScsCisgICAgICAgICAgICAnX3R5cGUnOiAnY2hpbGQgc3BlY2lhbCcs CisgICAgICAgICAgICAncHJpb3JpdHknOiAwLAorICAgICAgICAgIH0sCisgICAgICAgICAgJ3Nw ZWNpYWwgb25lJzogeworICAgICAgICAgICAgJ3NvbWUga2V5JzogJ3NvbWUgdmFsdWUnLAorICAg ICAgICAgICAgJ190eXBlJzogJ3NwZWNpYWwgb25lJywKKyAgICAgICAgICAgICdwcmlvcml0eSc6 IC0xLAorICAgICAgICAgIH0sCisgICAgICAgIH0pOworICAgICAgfSk7CisgICAgfSk7CisKKyAg ICBjb250ZXh0KCdXaGVuIHRyZWUgYXMgInNwZWNpYWwgdHlwZSInLCAoKSA9PiB7CisgICAgICBj b250ZXh0KCdXaGVuICJzcGVjaWFsIHR5cGUiIGhhdmUgIm90aGVyIHR5cGUiJywgKCkgPT4gewor ICAgICAgICBjb250ZXh0KCdXaGVuICJvdGhlciB0eXBlIiBoYXZlICJzcGVjaWFsIHR5cGUiJywg KCkgPT4geworICAgICAgICAgIGRlc2NyaWJlKCdXaGVuIHJldHJpZXZpbmcgbGVhZCBub2RlJywg KCkgPT4geworICAgICAgICAgICAgaXQoJ2RvZXMgbm90IG92ZXJyaWRlIHByZXZpb3VzIG5vZGUg dHlwZSBkYXRhJywgKCkgPT4geworICAgICAgICAgICAgICBjb25zdCByb290ID0gbmV3VHJlZS5h ZGROZXdOb2RlKCdyb290JywgeworICAgICAgICAgICAgICAgICdzb21lIGtleSc6ICdzb21lIHZh bHVlJywKKyAgICAgICAgICAgICAgICAnX3R5cGUnOiAnc3BlY2lhbCBvbmUnLAorICAgICAgICAg ICAgICB9LCBbXSk7CisgICAgICAgICAgICAgIGNvbnN0IGxldmVsMSA9IG5ldyBUcmVlTm9kZSgn bGV2ZWwgMScsIHsKKyAgICAgICAgICAgICAgICAnc29tZSBrZXknOiAnc29tZSB2YWx1ZScsCisg ICAgICAgICAgICAgICAgJ190eXBlJzogJ290aGVyIHR5cGUnLAorICAgICAgICAgICAgICB9KTsK KyAgICAgICAgICAgICAgbmV3VHJlZS5hZGRDaGlsZChyb290LCBsZXZlbDEpOworICAgICAgICAg ICAgICB0cmVlTm9kZSA9IG5ldyBUcmVlTm9kZSgnbGV2ZWwgMicsIHsKKyAgICAgICAgICAgICAg ICAnc29tZSBrZXknOiAnZXhwZWN0ZWQgdmFsdWUnLAorICAgICAgICAgICAgICAgICdfdHlwZSc6 ICdzcGVjaWFsIG9uZScsCisgICAgICAgICAgICAgICAgJ3NvbWUgb3RoZXIga2V5JzogJ3NvbWUg b3RoZXIgdmFsdWUnLAorICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgbmV3VHJlZS5h ZGRDaGlsZChsZXZlbDEsIHRyZWVOb2RlKTsKKworICAgICAgICAgICAgICBjb25zdCByZXN1bHQg PSBnZXRUcmVlTm9kZUhpZXJhcmNoeUZyb21FbGVtZW50KGJyb3dzZXIsIHRyZWVOb2RlKTsKKyAg ICAgICAgICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbCh7CisgICAgICAgICAgICAgICAgJ3Nw ZWNpYWwgb25lJzogeworICAgICAgICAgICAgICAgICAgJ3NvbWUga2V5JzogJ2V4cGVjdGVkIHZh bHVlJywKKyAgICAgICAgICAgICAgICAgICdfdHlwZSc6ICdzcGVjaWFsIG9uZScsCisgICAgICAg ICAgICAgICAgICAnc29tZSBvdGhlciBrZXknOiAnc29tZSBvdGhlciB2YWx1ZScsCisgICAgICAg ICAgICAgICAgICAncHJpb3JpdHknOiAwLAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAg ICAgICAgJ290aGVyIHR5cGUnOiB7CisgICAgICAgICAgICAgICAgICAnc29tZSBrZXknOiAnc29t ZSB2YWx1ZScsCisgICAgICAgICAgICAgICAgICAnX3R5cGUnOiAnb3RoZXIgdHlwZScsCisgICAg ICAgICAgICAgICAgICAncHJpb3JpdHknOiAtMSwKKyAgICAgICAgICAgICAgICB9LAorICAgICAg ICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgIH0pOworICAgICAgICB9KTsK KyAgICAgIH0pOworICAgIH0pOworCisgICAgY29udGV4dCgnV2hlbiB0cmVlIGhhcyB0YWJsZScs ICgpID0+IHsKKyAgICAgIGNvbnRleHQoJ3doZW4gdGFibGUgaGFzIHBhcnRpdGlvbicsICgpID0+ IHsKKyAgICAgICAgaXQoJ3JldHVybnMgdGFibGUgd2l0aCBwYXJ0aXRpb24gcGFyYW1ldGVycycs ICgpID0+IHsKKyAgICAgICAgICBjb25zdCByb290ID0gbmV3VHJlZS5hZGROZXdOb2RlKCdyb290 JywgeworICAgICAgICAgICAgJ3NvbWUga2V5JzogJ3NvbWUgdmFsdWUnLAorICAgICAgICAgICAg J190eXBlJzogJ3NwZWNpYWwgb25lJywKKyAgICAgICAgICB9KTsKKyAgICAgICAgICBjb25zdCBs ZXZlbDEgPSBuZXdUcmVlLmFkZE5ld05vZGUoJ2xldmVsIDEnLCB7CisgICAgICAgICAgICAnc29t ZSBrZXknOiAnc29tZSB2YWx1ZScsCisgICAgICAgICAgICAnX3R5cGUnOiAndGFibGUnLAorICAg ICAgICAgIH0pOworICAgICAgICAgIG5ld1RyZWUuYWRkQ2hpbGQocm9vdCwgbGV2ZWwxKTsKKyAg ICAgICAgICB0cmVlTm9kZSA9IG5ldyBUcmVlTm9kZSgnbGV2ZWwgMicsIHsKKyAgICAgICAgICAg ICdzb21lIGtleSc6ICdleHBlY3RlZCB2YWx1ZScsCisgICAgICAgICAgICAnX3R5cGUnOiAncGFy dGl0aW9uJywKKyAgICAgICAgICAgICdzb21lIG90aGVyIGtleSc6ICdzb21lIG90aGVyIHZhbHVl JywKKyAgICAgICAgICB9KTsKKyAgICAgICAgICBuZXdUcmVlLmFkZENoaWxkKGxldmVsMSwgdHJl ZU5vZGUpOworCisgICAgICAgICAgY29uc3QgcmVzdWx0ID0gZ2V0VHJlZU5vZGVIaWVyYXJjaHlG cm9tRWxlbWVudChicm93c2VyLCB0cmVlTm9kZSk7CisgICAgICAgICAgZXhwZWN0KHJlc3VsdCku dG9FcXVhbCh7CisgICAgICAgICAgICAnc3BlY2lhbCBvbmUnOiB7CisgICAgICAgICAgICAgICdz b21lIGtleSc6ICdzb21lIHZhbHVlJywKKyAgICAgICAgICAgICAgJ190eXBlJzogJ3NwZWNpYWwg b25lJywKKyAgICAgICAgICAgICAgJ3ByaW9yaXR5JzogLTEsCisgICAgICAgICAgICB9LAorICAg ICAgICAgICAgJ3RhYmxlJzogeworICAgICAgICAgICAgICAnc29tZSBrZXknOiAnZXhwZWN0ZWQg dmFsdWUnLAorICAgICAgICAgICAgICAnc29tZSBvdGhlciBrZXknOiAnc29tZSBvdGhlciB2YWx1 ZScsCisgICAgICAgICAgICAgICdfdHlwZSc6ICdwYXJ0aXRpb24nLAorICAgICAgICAgICAgICAn cHJpb3JpdHknOiAwLAorICAgICAgICAgICAgfSwKKyAgICAgICAgICB9KTsKKyAgICAgICAgfSk7 CisgICAgICB9KTsKKyAgICB9KTsKKyAgfSk7Cit9KTsKZGlmZiAtLWdpdCBhL3dlYi9yZWdyZXNz aW9uL2phdmFzY3JpcHQvdHJlZS90cmVlX2Zha2UuanMgYi93ZWIvcmVncmVzc2lvbi9qYXZhc2Ny aXB0L3RyZWUvdHJlZV9mYWtlLmpzCmluZGV4IGIyODVhNDVmLi5lMDNkNzFmYiAxMDA2NDQKLS0t IGEvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC90cmVlL3RyZWVfZmFrZS5qcworKysgYi93ZWIv cmVncmVzc2lvbi9qYXZhc2NyaXB0L3RyZWUvdHJlZV9mYWtlLmpzCkBAIC0xMCw2ICsxMCwzMiBA QAogaW1wb3J0IHtUcmVlfSBmcm9tICcuLi8uLi8uLi9wZ2FkbWluL3N0YXRpYy9qcy90cmVlL3Ry ZWUnOwogCiBleHBvcnQgY2xhc3MgVHJlZUZha2UgZXh0ZW5kcyBUcmVlIHsKKyAgc3RhdGljIGJ1 aWxkKHN0cnVjdHVyZSkgeworICAgIGxldCB0cmVlID0gbmV3IFRyZWVGYWtlKCk7CisgICAgbGV0 IHJvb3ROb2RlID0gdHJlZS5yb290Tm9kZTsKKworICAgIGlmIChzdHJ1Y3R1cmUuY2hpbGRyZW4g IT09IHVuZGVmaW5lZCkgeworICAgICAgc3RydWN0dXJlLmNoaWxkcmVuLmZvckVhY2goKGNoaWxk KSA9PiB7CisgICAgICAgIFRyZWVGYWtlLnJlY3Vyc2l2ZWx5QWRkTm9kZXModHJlZSwgY2hpbGQs IHJvb3ROb2RlKTsKKyAgICAgIH0pOworICAgIH0KKworICAgIHJldHVybiB0cmVlOworICB9CisK KyAgc3RhdGljIHJlY3Vyc2l2ZWx5QWRkTm9kZXModHJlZSwgbmV3Tm9kZSwgcGFyZW50KSB7Cisg ICAgbGV0IGlkID0gbmV3Tm9kZS5pZDsKKyAgICBsZXQgZGF0YSA9IG5ld05vZGUuZGF0YSA/IG5l d05vZGUuZGF0YSA6IHt9OworICAgIGxldCBkb21Ob2RlID0gbmV3Tm9kZS5kb21Ob2RlID8gbmV3 Tm9kZS5kb21Ob2RlIDogW3tpZDogaWR9XTsKKyAgICB0cmVlLmFkZE5ld05vZGUoaWQsIGRhdGEs IGRvbU5vZGUsIHRyZWUudHJhbnNsYXRlVHJlZU5vZGVJZEZyb21BQ0lUcmVlKFtwYXJlbnRdKSk7 CisKKyAgICBpZiAobmV3Tm9kZS5jaGlsZHJlbiAhPT0gdW5kZWZpbmVkKSB7CisgICAgICBuZXdO b2RlLmNoaWxkcmVuLmZvckVhY2goKGNoaWxkKSA9PiB7CisgICAgICAgIFRyZWVGYWtlLnJlY3Vy c2l2ZWx5QWRkTm9kZXModHJlZSwgY2hpbGQsIG5ld05vZGUpOworICAgICAgfSk7CisgICAgfQor ICB9CisKICAgY29uc3RydWN0b3IoKSB7CiAgICAgc3VwZXIoKTsKICAgICB0aGlzLmFjaVRyZWVU b091clRyZWVUcmFuc2xhdG9yID0ge307CkBAIC00NSw3ICs3MSw3IEBAIGV4cG9ydCBjbGFzcyBU cmVlRmFrZSBleHRlbmRzIFRyZWUgewogICB9CiAKICAgdHJhbnNsYXRlVHJlZU5vZGVJZEZyb21B Q0lUcmVlKGFjaVRyZWVOb2RlKSB7Ci0gICAgaWYoYWNpVHJlZU5vZGUgPT09IHVuZGVmaW5lZCB8 fCBhY2lUcmVlTm9kZVswXSA9PT0gdW5kZWZpbmVkKSB7CisgICAgaWYgKGFjaVRyZWVOb2RlID09 PSB1bmRlZmluZWQgfHwgYWNpVHJlZU5vZGVbMF0gPT09IHVuZGVmaW5lZCkgewogICAgICAgcmV0 dXJuIG51bGw7CiAgICAgfQogICAgIHJldHVybiB0aGlzLmFjaVRyZWVUb091clRyZWVUcmFuc2xh dG9yW2FjaVRyZWVOb2RlWzBdLmlkXTsKZGlmZiAtLWdpdCBhL3dlYi93ZWJwYWNrLnNoaW0uanMg Yi93ZWIvd2VicGFjay5zaGltLmpzCmluZGV4IDY0ZjI0MzM2Li5jMTJlN2YzYiAxMDA2NDQKLS0t IGEvd2ViL3dlYnBhY2suc2hpbS5qcworKysgYi93ZWIvd2VicGFjay5zaGltLmpzCkBAIC0xMzAs NiArMTMwLDcgQEAgdmFyIHdlYnBhY2tTaGltQ29uZmlnID0gewogICAgICdzb3VyY2VzL3V0aWxz JzogcGF0aC5qb2luKF9fZGlybmFtZSwgJy4vcGdhZG1pbi9zdGF0aWMvanMvdXRpbHMnKSwKICAg ICAnYmFiZWwtcG9seWZpbGwnOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9ub2RlX21vZHVsZXMv YmFiZWwtcG9seWZpbGwvZGlzdC9wb2x5ZmlsbCcpLAogICAgICd0b29scyc6IHBhdGguam9pbihf X2Rpcm5hbWUsICcuL3BnYWRtaW4vdG9vbHMvJyksCisgICAgJ3BnYnJvd3Nlcic6IHBhdGguam9p bihfX2Rpcm5hbWUsICcuL3BnYWRtaW4vYnJvd3Nlci9zdGF0aWMvanMvJyksCiAKICAgICAvLyBW ZW5kb3IgSlMKICAgICAnanF1ZXJ5JzogcGF0aC5qb2luKF9fZGlybmFtZSwgJy4vbm9kZV9tb2R1 bGVzL2pxdWVyeS9kaXN0L2pxdWVyeScpLApkaWZmIC0tZ2l0IGEvd2ViL3dlYnBhY2sudGVzdC5j b25maWcuanMgYi93ZWIvd2VicGFjay50ZXN0LmNvbmZpZy5qcwppbmRleCBhMWZjNjgyNC4uZWY4 OTNlMGIgMTAwNjQ0Ci0tLSBhL3dlYi93ZWJwYWNrLnRlc3QuY29uZmlnLmpzCisrKyBiL3dlYi93 ZWJwYWNrLnRlc3QuY29uZmlnLmpzCkBAIC04MSw2ICs4MSw4IEBAIG1vZHVsZS5leHBvcnRzID0g ewogICAgICAgJ3BnYWRtaW4uYWxlcnRpZnlqcyc6IHNvdXJjZXNEaXIgKyAnL2pzL2FsZXJ0aWZ5 LnBnYWRtaW4uZGVmYXVsdHMnLAogICAgICAgJ3BnYWRtaW4uYmFja2dyaWQnOiBzb3VyY2VzRGly ICsgJy9qcy9iYWNrZ3JpZC5wZ2FkbWluJywKICAgICAgICdwZ2FkbWluLmJhY2tmb3JtJzogc291 cmNlc0RpciArICcvanMvYmFja2Zvcm0ucGdhZG1pbicsCisgICAgICAncGdicm93c2VyJzogcGF0 aC5yZXNvbHZlKF9fZGlybmFtZSwgJ3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9mYWtlX2Jyb3dzZXIn KSwKKyAgICAgICdwZ2FkbWluLnNjaGVtYS5kaXInOiBwYXRoLnJlc29sdmUoX19kaXJuYW1lLCAn cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9z dGF0aWMvanMnKSwKICAgICB9LAogICB9LAogfTsK --000000000000c906a3056d98ddb9--