Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dLbPK-0008S7-OJ for pgadmin-hackers@arkaria.postgresql.org; Thu, 15 Jun 2017 20:30:23 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84_2) (envelope-from ) id 1dLbPK-0004Ei-7m for pgadmin-hackers@arkaria.postgresql.org; Thu, 15 Jun 2017 20:30:22 +0000 Received: from makus.postgresql.org ([2001:4800:1501:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1dLbPD-0003xm-LU for pgadmin-hackers@postgresql.org; Thu, 15 Jun 2017 20:30:16 +0000 Received: from mail-it0-x231.google.com ([2607:f8b0:4001:c0b::231]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.84_2) (envelope-from ) id 1dLbP6-0007Ev-EW for pgadmin-hackers@postgresql.org; Thu, 15 Jun 2017 20:30:14 +0000 Received: by mail-it0-x231.google.com with SMTP id m62so24470523itc.0 for ; Thu, 15 Jun 2017 13:30:08 -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=oWDl8h3F8D9PUp97mfhllfVK5aRXiz2upni16B4NuDo=; b=wji964lui38LXayuecrymO8wFITFB+sBrdC9Y5kni7PQXQBbuPcbDZ7HC08epGL4ka GhSPKLdlT9W4lqFmO9OHK4bZWqe5aWnZtL7NiPGubkiX1Dx8o365Fv5DuGGrxVpFiV9h dfsaqL8acRX/Xf6/5xdDsF8yRz5i/hrptC9AdmNZF52N32zvl4qzIbM2ZN0YIdF27mJC AhouOhZLpNhlo3SHFTRGFkXaX8RsxNFL3Ylhu8QJHr4mFZCVEr5RiZNRNfGxXD6PDbcz s58rd6iziSidS/KBTyq+R8TIGbRUfVeexDegIVHr/9TczDPT95h/4RZMFIP4g/ojJDyL LV3A== 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=oWDl8h3F8D9PUp97mfhllfVK5aRXiz2upni16B4NuDo=; b=U8T+ynMset+nfFd9J/Vp1IdeNKpGCttckziJwB/E7qHS35NoROceWc12RgTad3HlDp K6afb4V1iLFodS6/u39pfhPMAz4GSxlPpA17C5YScXLxaKMIH3aQVu2NKFZG11V2mUPr elJnmaJs1ptQVhh2GotrQ16KcNBTri3UNB8R0qD0Xr1DE3oW7GeQ1CkzQcATmgtuP0yx fgo9Dw7WeL1NGrX8/8xCs8kNEXlYWN94eph6ULzA6gXfd0LRQ4TKBzInhn7iexDPu4e4 ASuBY/UqunLmeHm3lJowBBbzOTY5ZDX4wdx3tx9RyKhbRxLuBAmaBZfcIeJXFFUogSHh m7/A== X-Gm-Message-State: AKS2vOycvIS1BYVaHZZhXM2+jBigNPe1xxXKUsorar9b1mWDc4lfEcBX DvDbNjG5tW+ptUVdI6IP14IqxMTgaII2 X-Received: by 10.36.141.134 with SMTP id w128mr7019276itd.84.1497558607342; Thu, 15 Jun 2017 13:30:07 -0700 (PDT) MIME-Version: 1.0 Received: by 10.79.147.23 with HTTP; Thu, 15 Jun 2017 13:30:06 -0700 (PDT) In-Reply-To: References: From: Harshal Dhumal Date: Fri, 16 Jun 2017 02:00:06 +0530 Message-ID: Subject: Re: Re: Server side cursor limitations for on demand loading of data in query tool [RM2137] [pgAdmin4] To: Dave Page Cc: Harshal Dhumal , Ashesh Vashi , pgadmin-hackers Content-Type: multipart/mixed; boundary="94eb2c07ed70d2761005520588fd" List-Archive: List-Help: List-ID: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-Mailing-List: pgadmin-hackers Precedence: bulk Sender: pgadmin-hackers-owner@postgresql.org --94eb2c07ed70d2761005520588fd Content-Type: multipart/alternative; boundary="94eb2c07ed70d2760c05520588fb" --94eb2c07ed70d2760c05520588fb Content-Type: text/plain; charset="UTF-8" Hi Dave, Please find attached updated patch. On Thu, Jun 15, 2017 at 3:58 PM, Dave Page wrote: > Hi > > On Wed, Jun 14, 2017 at 11:36 PM, Harshal Dhumal < > harshal.dhumal@enterprisedb.com> wrote: > >> Hi Dave, >> >> Please find rebased patch for RM2137. >> > > Looking very good. The only issues I see are: > > - The row headers should auto-size such that they can display the row > numbers if the last row was displayed. E.g. if there are 12345 rows in > total, then the row header should be sized to display 5 digits. > > Fixed. > - The tests are comprehensive, which is awesome. However, every time I ran > them, at least one of the feature tests failed. Unfortunately, it was a > different one each time. In the last two runs, I got: > > ====================================================================== > ERROR: runTest (pgadmin.feature_tests.query_tool_tests. > QueryToolFeatureTest) > Query tool feature test > ---------------------------------------------------------------------- > Traceback (most recent call last): > File "/Users/dpage/git/pgadmin4/web/regression/feature_utils/base_feature_test.py", > line 40, in setUp > self.before() > File "/Users/dpage/git/pgadmin4/web/pgadmin/feature_tests/query_tool_tests.py", > line 40, in before > self._connects_to_server() > File "/Users/dpage/git/pgadmin4/web/pgadmin/feature_tests/query_tool_tests.py", > line 144, in _connects_to_server > self.page.driver.find_element_by_link_text("Create"))\ > File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site- > packages/selenium/webdriver/remote/webdriver.py", line 319, in > find_element_by_link_text > return self.find_element(by=By.LINK_TEXT, value=link_text) > File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site- > packages/selenium/webdriver/remote/webdriver.py", line 756, in > find_element > 'value': value})['value'] > File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site- > packages/selenium/webdriver/remote/webdriver.py", line 238, in execute > self.error_handler.check_response(response) > File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site- > packages/selenium/webdriver/remote/errorhandler.py", line 193, in > check_response > raise exception_class(message, screen, stacktrace) > NoSuchElementException: Message: no such element: Unable to locate > element: {"method":"link text","selector":"Create"} > (Session info: chrome=58.0.3029.110) > (Driver info: chromedriver=2.29.461585 (0be2cd95f834e9ee7c46bcc7cf405b483f5ae83b),platform=Mac > OS X 10.12.3 x86_64) > > I checked code from *_connects_to_server* function which is common in all features test cases. I didn't find anything wrong with this. If there is a bug in this function then all feature test must fail. Let me know if you are getting failure consistently in *_connects_to_server* function. > and > > > ====================================================================== > ERROR: runTest (pgadmin.feature_tests.query_tool_tests. > QueryToolFeatureTest) > Query tool feature test > ---------------------------------------------------------------------- > Traceback (most recent call last): > File "/Users/dpage/git/pgadmin4/web/pgadmin/feature_tests/query_tool_tests.py", > line 119, in runTest > self._query_tool_auto_rollback_enabled() > File "/Users/dpage/git/pgadmin4/web/pgadmin/feature_tests/query_tool_tests.py", > line 697, in _query_tool_auto_rollback_enabled > '//div[contains(@class, "sql-editor-message") and contains(string(), > "COMMIT")]' > File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site- > packages/selenium/webdriver/remote/webdriver.py", line 295, in > find_element_by_xpath > return self.find_element(by=By.XPATH, value=xpath) > File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site- > packages/selenium/webdriver/remote/webdriver.py", line 756, in > find_element > 'value': value})['value'] > File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site- > packages/selenium/webdriver/remote/webdriver.py", line 238, in execute > self.error_handler.check_response(response) > File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site- > packages/selenium/webdriver/remote/errorhandler.py", line 193, in > check_response > raise exception_class(message, screen, stacktrace) > NoSuchElementException: Message: no such element: Unable to locate > element: {"method":"xpath","selector":"//div[contains(@class, > "sql-editor-message") and contains(string(), "COMMIT")]"} > (Session info: chrome=58.0.3029.110) > (Driver info: chromedriver=2.29.461585 (0be2cd95f834e9ee7c46bcc7cf405b483f5ae83b),platform=Mac > OS X 10.12.3 x86_64) > > I have updated Auto rollback enabled test in this patch. > Relevant screenshots attached. > > - Can you tidy up the regression output a little please? Instead of: > > ------- > runTest (pgadmin.feature_tests.query_tool_tests.QueryToolFeatureTest) > Query tool feature test ... On demand result set on scrolling... > OK. > > On demand result set on grid select all... > OK. > > On demand result set on column select all... > OK. > > Explain query... > OK. > > Explain query with verbose... > OK. > > Explain query with costs... > OK. > > Explain analyze query... > OK. > > Explain analyze query with buffers... > OK. > > Explain analyze query with timing... > OK. > > Auto commit disabled... > OK. > > Auto commit enabled... > OK. > > Auto rollback enabled... > ERROR > ------- > > Something like: > > ------- > runTest (pgadmin.feature_tests.query_tool_tests.QueryToolFeatureTest) > Query tool feature test ... > On demand result set on scrolling... OK. > On demand result set on grid select all... OK. > On demand result set on column select all... OK. > Explain query... OK. > Explain query with verbose... OK. > Explain query with costs... OK. > Explain analyze query... OK. > Explain analyze query with buffers... OK. > Explain analyze query with timing... OK. > Auto commit disabled... OK. > Auto commit enabled... OK. > Auto rollback enabled... ERROR > -------- > > Fixed. > Thanks! > > -- > Dave Page > Blog: http://pgsnake.blogspot.com > Twitter: @pgsnake > > EnterpriseDB UK: http://www.enterprisedb.com > The Enterprise PostgreSQL Company > --94eb2c07ed70d2760c05520588fb Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi Dave,

Please find attached updated p= atch.
<= div dir=3D"ltr">
=

=
On Thu, Jun 15, 20= 17 at 3:58 PM, Dave Page <dpage@pgadmin.org> wrote:
Hi

O= n Wed, Jun 14, 2017 at 11:36 PM, Harshal Dhumal <harshal.dhu= mal@enterprisedb.com> wrote:
Hi Dave,

Plea= se find rebased patch for RM2137.

Looking very good. The only issues I see are:

- The row headers should auto-size such that they can display the row= numbers if the last row was displayed. E.g. if there are 12345 rows in tot= al, then the row header should be sized to display 5 digits.

=
Fixed.

= =C2=A0
-= The tests are comprehensive, which is awesome. However, every time I ran t= hem, at least one of the feature tests failed. Unfortunately, it was a diff= erent one each time. In the last two runs, I got:

= =C2=A0=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D
ERROR: runTest (pgadmin.feature_tests.query_tool_tests.<= wbr>QueryToolFeatureTest)
Query tool feature test
-----= -----------------------------------------------------------------=
Traceback (most recent call last):
=C2=A0 File "/= Users/dpage/git/pgadmin4/web/regression/feature_utils/base_featur= e_test.py", line 40, in setUp
=C2=A0 =C2=A0 self.before()
=C2=A0 File "/Users/dpage/git/pgadmin4/web/pgadmin/featur= e_tests/query_tool_tests.py", line 40, in before
=C2=A0= =C2=A0 self._connects_to_server()
=C2=A0 File "/Users/dpage= /git/pgadmin4/web/pgadmin/feature_tests/query_tool_tests.py"= , line 144, in _connects_to_server
=C2=A0 =C2=A0 self.page.driver= .find_element_by_link_text("Create"))\
=C2=A0 File= "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-pack= ages/selenium/webdriver/remote/webdriver.py", line 319, in find_e= lement_by_link_text
=C2=A0 =C2=A0 return self.find_element(by=3DB= y.LINK_TEXT, value=3Dlink_text)
=C2=A0 File "/Users/dpa= ge/.virtualenvs/pgadmin4/lib/python2.7/site-packages/selenium/web= driver/remote/webdriver.py", line 756, in find_element
= =C2=A0 =C2=A0 'value': value})['value']
=C2=A0 Fi= le "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-pa= ckages/selenium/webdriver/remote/webdriver.py", line 238, in exec= ute
=C2=A0 =C2=A0 self.error_handler.check_response(response= )
=C2=A0 File "/Users/dpage/.virtualenvs/pgadmin4/lib/p= ython2.7/site-packages/selenium/webdriver/remote/errorhandler.py&= quot;, line 193, in check_response
=C2=A0 =C2=A0 raise exception_= class(message, screen, stacktrace)
NoSuchElementException: Messag= e: no such element: Unable to locate element: {"method":"lin= k text","selector":"Create"}
=C2=A0 (Ses= sion info: chrome=3D58.0.3029.110)
=C2=A0 (Driver info: chromedri= ver=3D2.29.461585 (0be2cd95f834e9ee7c46bcc7cf405b483f5ae83b),plat= form=3DMac OS X 10.12.3 x86_64)

I checked code from _connects_to_server function which = is common in all features test cases. I didn't find anything wrong with= this. If there is a bug in this function then all feature test must fail.<= /div>
Let me know if you are getting failure consistently in _connec= ts_to_server function.
=C2=A0
and


=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D
ERROR: runTest (pgadmin.feature_tests.query_tool_tests.<= wbr>QueryToolFeatureTest)
Query tool feature test
-----= -----------------------------------------------------------------=
Traceback (most recent call last):
=C2=A0 File "/= Users/dpage/git/pgadmin4/web/pgadmin/feature_tests/query_tool_tes= ts.py", line 119, in runTest
=C2=A0 =C2=A0 self._query_tool_= auto_rollback_enabled()
=C2=A0 File "/Users/dpage/git/p= gadmin4/web/pgadmin/feature_tests/query_tool_tests.py", line= 697, in _query_tool_auto_rollback_enabled
=C2=A0 =C2=A0 = 9;//div[contains(@class, "sql-editor-message") and contains(strin= g(), "COMMIT")]'
=C2=A0 File "/Users/dpage/.vi= rtualenvs/pgadmin4/lib/python2.7/site-packages/selenium/webdriver= /remote/webdriver.py", line 295, in find_element_by_xpath
=C2=A0 =C2=A0 return self.find_element(by=3DBy.XPATH, value=3Dxpath)
=C2=A0 File "/Users/dpage/.virtualenvs/pgadmin4/lib/python= 2.7/site-packages/selenium/webdriver/remote/webdriver.py", l= ine 756, in find_element
=C2=A0 =C2=A0 'value': value})[&= #39;value']
=C2=A0 File "/Users/dpage/.virtualenvs/= pgadmin4/lib/python2.7/site-packages/selenium/webdriver/remote/we= bdriver.py", line 238, in execute
=C2=A0 =C2=A0 self.error_h= andler.check_response(response)
=C2=A0 File "/Users/dpa= ge/.virtualenvs/pgadmin4/lib/python2.7/site-packages/selenium/web= driver/remote/errorhandler.py", line 193, in check_response
=
=C2=A0 =C2=A0 raise exception_class(message, screen, stacktrace)
=
NoSuchElementException: Message: no such element: Unable to locate ele= ment: {"method":"xpath","selector":"//div[contains(@class, "sql-editor-message") and contains(string= (), "COMMIT")]"}
=C2=A0 (Session info: chrome=3D58= .0.3029.110)
=C2=A0 (Driver info: chromedriver=3D2.29.461585 (0be2cd95f834e9ee7c46bcc7cf405b483f5ae83b),platform=3DMac OS X 10.12.= 3 x86_64)

I have up= dated Auto rollback enabled test in this patch.
=C2=A0
Relevant screensho= ts attached.

- Can you tidy up the regression outp= ut a little please? Instead of:

-------
= runTest (pgadmin.feature_tests.query_tool_tests.QueryToolFeatureT= est)
Query tool feature test ... On demand result set on scrollin= g...
OK.

On demand result set on grid se= lect all...
OK.

On demand result set on = column select all...
OK.

Explain query..= .
OK.

Explain query with verbose...
OK.

Explain query with costs...
OK= .

Explain analyze query...
OK.

Explain analyze query with buffers...
OK.

Explain analyze query with timing...
OK.
<= div>
Auto commit disabled...
OK.

Auto commit enabled...
OK.

Auto r= ollback enabled...
ERROR
-------

Something like:

-------
runT= est (pgadmin.feature_tests.query_tool_tests.QueryToolFeatureTest)=
Query tool feature test ...=C2=A0
On demand result set= on scrolling... OK.
On demand result set on grid select all... O= K.
On demand result set on column select all... OK.
Exp= lain query... OK.
Explain query with verbose... OK.
Exp= lain query with costs... OK.
Explain analyze query... OK.
Explain analyze query with buffers... OK.
Explain analyze quer= y with timing... OK.
Auto commit disabled... OK.
Auto c= ommit enabled... OK.
Auto rollback enabled... ERROR
--------

Fixed.<= /div>

=C2=A0
Thanks!

--=C2=A0
Dave Page
Blog: http://pgsnake.blogspot.com
Twitter: @pgsnake
EnterpriseDB UK: http://www.enterprisedb.com
The Enterprise PostgreSQL Company
<= /div>

--94eb2c07ed70d2760c05520588fb-- --94eb2c07ed70d2761005520588fd Content-Type: text/x-patch; charset="US-ASCII"; name="RM2137_query_tool_on_demand_result_V7.patch" Content-Disposition: attachment; filename="RM2137_query_tool_on_demand_result_V7.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_j3yvcdva2 ZGlmZiAtLWdpdCBhL3dlYi9jb25maWcucHkgYi93ZWIvY29uZmlnLnB5Cmlu ZGV4IGQ0NWM0M2MuLmMxNzdjYWIgMTAwNjQ0Ci0tLSBhL3dlYi9jb25maWcu cHkKKysrIGIvd2ViL2NvbmZpZy5weQpAQCAtMzI0LDYgKzMyNCwxMiBAQCBU SFJFQURFRF9NT0RFID0gVHJ1ZQogU1FMQUxDSEVNWV9UUkFDS19NT0RJRklD QVRJT05TID0gRmFsc2UKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMKKyMgTnVtYmVyIG9mIHJlY29yZHMgdG8gZmV0Y2ggaW4gb25lIGJhdGNo IGluIHF1ZXJ5IHRvb2wgd2hlbiBxdWVyeSByZXN1bHQKKyMgc2V0IGlzIGxh cmdlLgorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK09OX0RFTUFO RF9SRUNPUkRfQ09VTlQgPSAxMDAwCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjCiAjIExvY2FsIGNvbmZpZyBzZXR0aW5ncwogIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMKIApkaWZmIC0tZ2l0IGEvd2ViL3BnYWRt aW4vZmVhdHVyZV90ZXN0cy9wZ19kYXRhdHlwZV92YWxpZGF0aW9uX3Rlc3Qu cHkgYi93ZWIvcGdhZG1pbi9mZWF0dXJlX3Rlc3RzL3BnX2RhdGF0eXBlX3Zh bGlkYXRpb25fdGVzdC5weQppbmRleCBiODgzYWFjLi5iNzJmNzI3IDEwMDY0 NAotLS0gYS93ZWIvcGdhZG1pbi9mZWF0dXJlX3Rlc3RzL3BnX2RhdGF0eXBl X3ZhbGlkYXRpb25fdGVzdC5weQorKysgYi93ZWIvcGdhZG1pbi9mZWF0dXJl X3Rlc3RzL3BnX2RhdGF0eXBlX3ZhbGlkYXRpb25fdGVzdC5weQpAQCAtMTA2 LDM5ICsxMDYsMTkgQEAgY2xhc3MgUEdEYXRheXBlRmVhdHVyZVRlc3QoQmFz ZUZlYXR1cmVUZXN0KToKICAgICAgICAgc2VsZi5wYWdlLmZpbGxfY29kZW1p cnJvcl9hcmVhX3dpdGgocXVlcnkpCiAgICAgICAgIHNlbGYucGFnZS5maW5k X2J5X2lkKCJidG4tZmxhc2giKS5jbGljaygpCiAgICAgICAgIHdhaXQgPSBX ZWJEcml2ZXJXYWl0KHNlbGYucGFnZS5kcml2ZXIsIDUpCi0gICAgICAgIHdh aXQudW50aWwoRUMucHJlc2VuY2Vfb2ZfZWxlbWVudF9sb2NhdGVkKAotICAg ICAgICAgICAgKEJ5LlhQQVRILCAiLy8qW0BpZD0nMCddLy8qW0BpZD0nZGF0 YWdyaWQnXS9kaXZbNV0vZGl2L2RpdlsxXS8iCi0gICAgICAgICAgICAgICAg ICAgICAgICJkaXZbMl0vc3BhbiIpKSkKKworICAgICAgICBjYW52YXMgPSB3 YWl0LnVudGlsKEVDLnByZXNlbmNlX29mX2VsZW1lbnRfbG9jYXRlZCgKKyAg ICAgICAgICAgIChCeS5DU1NfU0VMRUNUT1IsICIjZGF0YWdyaWQgLnNsaWNr LXZpZXdwb3J0IC5ncmlkLWNhbnZhcyIpKQorICAgICAgICApCiAKICAgICAg ICAgIyBGb3IgZXZlcnkgc2FtcGxlIGRhdGEtdHlwZSB2YWx1ZSwgY2hlY2sg dGhlIGV4cGVjdGVkIG91dHB1dC4KICAgICAgICAgY250ID0gMgotICAgICAg ICBmb3IgdmFsIGluIGV4cGVjdGVkX291dHB1dFs6MTBdOgorICAgICAgICBj ZWxscyA9IGNhbnZhcy5maW5kX2VsZW1lbnRzX2J5X3RhZ19uYW1lKCdzcGFu JykKKyAgICAgICAgIyByZW1vdmUgZmlyc3QgZWxlbWVudCBhcyBpdCBpcyBy b3cgbnVtYmVyLgorICAgICAgICBjZWxscy5wb3AoMCkKKyAgICAgICAgZm9y IHZhbCwgY2VsbCBpbiB6aXAoZXhwZWN0ZWRfb3V0cHV0LCBjZWxscyk6CiAg ICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc291cmNlX2NvZGUg PSBzZWxmLnBhZ2UuZmluZF9ieV94cGF0aCgKLSAgICAgICAgICAgICAgICAg ICAgIi8vKltAaWQ9JzAnXS8vKltAaWQ9J2RhdGFncmlkJ10vZGl2WzVdL2Rp di9kaXZbMV0vZGl2WyIKLSAgICAgICAgICAgICAgICAgICAgKyBzdHIoY250 KQotICAgICAgICAgICAgICAgICAgICArICJdL3NwYW4iCi0gICAgICAgICAg ICAgICAgKS5nZXRfYXR0cmlidXRlKCdpbm5lckhUTUwnKQotCi0gICAgICAg ICAgICAgICAgUEdEYXRheXBlRmVhdHVyZVRlc3QuY2hlY2tfcmVzdWx0KAot ICAgICAgICAgICAgICAgICAgICBzb3VyY2VfY29kZSwKLSAgICAgICAgICAg ICAgICAgICAgZXhwZWN0ZWRfb3V0cHV0W2NudCAtIDJdCi0gICAgICAgICAg ICAgICAgKQotICAgICAgICAgICAgICAgIGNudCArPSAxCi0gICAgICAgICAg ICBleGNlcHQgVGltZW91dEV4Y2VwdGlvbjoKLSAgICAgICAgICAgICAgICBh c3NlcnQgRmFsc2UsICJ7MH0gZG9lcyBub3QgbWF0Y2ggd2l0aCB7MX0iLmZv cm1hdCgKLSAgICAgICAgICAgICAgICAgICAgdmFsLCBleHBlY3RlZF9vdXRw dXRbY250XQotICAgICAgICAgICAgICAgICkKLQotICAgICAgICBjbnQgPSAx MgotICAgICAgICBmb3IgdmFsIGluIGV4cGVjdGVkX291dHB1dFsxMDpdOgot ICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHNvdXJjZV9jb2Rl ID0gc2VsZi5wYWdlLmZpbmRfYnlfeHBhdGgoCi0gICAgICAgICAgICAgICAg ICAgICIvLypbQGlkPScwJ10vLypbQGlkPSdkYXRhZ3JpZCddL2Rpdls1XS9k aXYvZGl2L2RpdlsiCi0gICAgICAgICAgICAgICAgICAgICsgc3RyKGNudCkK LSAgICAgICAgICAgICAgICAgICAgKyAiXSIKLSAgICAgICAgICAgICAgICAp LmdldF9hdHRyaWJ1dGUoJ2lubmVySFRNTCcpCi0KKyAgICAgICAgICAgICAg ICBzb3VyY2VfY29kZSA9IGNlbGwuZ2V0X2F0dHJpYnV0ZSgnaW5uZXJIVE1M JykKICAgICAgICAgICAgICAgICBQR0RhdGF5cGVGZWF0dXJlVGVzdC5jaGVj a19yZXN1bHQoCiAgICAgICAgICAgICAgICAgICAgIHNvdXJjZV9jb2RlLAog ICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9vdXRwdXRbY250IC0gMl0K ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2ZlYXR1cmVfdGVzdHMvcXVlcnlf dG9vbF90ZXN0cy5weSBiL3dlYi9wZ2FkbWluL2ZlYXR1cmVfdGVzdHMvcXVl cnlfdG9vbF90ZXN0cy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi4xODYxNTk5Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRt aW4vZmVhdHVyZV90ZXN0cy9xdWVyeV90b29sX3Rlc3RzLnB5CkBAIC0wLDAg KzEsNzYxIEBACisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIwor IyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisjCisjIENvcHlyaWdo dCAoQykgMjAxMyAtIDIwMTcsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRl YW0KKyMgVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9z dGdyZVNRTCBMaWNlbmNlCisjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIworCitmcm9tIF9fZnV0dXJlX18gaW1wb3J0IHByaW50X2Z1bmN0aW9u CitpbXBvcnQgdGltZQoraW1wb3J0IHN5cworaW1wb3J0IGNvbmZpZworZnJv bSBzZWxlbml1bS53ZWJkcml2ZXIgaW1wb3J0IEFjdGlvbkNoYWlucworZnJv bSBzZWxlbml1bS53ZWJkcml2ZXIuc3VwcG9ydC51aSBpbXBvcnQgV2ViRHJp dmVyV2FpdAorZnJvbSBzZWxlbml1bS53ZWJkcml2ZXIuc3VwcG9ydCBpbXBv cnQgZXhwZWN0ZWRfY29uZGl0aW9ucyBhcyBFQworZnJvbSBzZWxlbml1bS53 ZWJkcml2ZXIuY29tbW9uLmJ5IGltcG9ydCBCeQorZnJvbSByZWdyZXNzaW9u LnB5dGhvbl90ZXN0X3V0aWxzIGltcG9ydCB0ZXN0X3V0aWxzCitmcm9tIHJl Z3Jlc3Npb24uZmVhdHVyZV91dGlscy5iYXNlX2ZlYXR1cmVfdGVzdCBpbXBv cnQgQmFzZUZlYXR1cmVUZXN0CisKKworY2xhc3MgUXVlcnlUb29sRmVhdHVy ZVRlc3QoQmFzZUZlYXR1cmVUZXN0KToKKyAgICAiIiIKKyAgICAgICAgVGhp cyBmZWF0dXJlIHRlc3Qgd2lsbCB0ZXN0IHRoZSBkaWZmZXJlbnQgcXVlcnkg dG9vbCBmZWF0dXJlcy4KKyAgICAiIiIKKworICAgIHNjZW5hcmlvcyA9IFsK KyAgICAgICAgKCJRdWVyeSB0b29sIGZlYXR1cmUgdGVzdCIsIGRpY3QoKSkK KyAgICBdCisKKyAgICBkZWYgYmVmb3JlKHNlbGYpOgorICAgICAgICBjb25u ZWN0aW9uID0gdGVzdF91dGlscy5nZXRfZGJfY29ubmVjdGlvbihzZWxmLnNl cnZlclsnZGInXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXJbJ3VzZXJuYW1lJ10sCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHNlbGYuc2VydmVyWydkYl9wYXNzd29yZCddLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNl cnZlclsnaG9zdCddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlclsncG9ydCddKQorICAg ICAgICB0ZXN0X3V0aWxzLmRyb3BfZGF0YWJhc2UoY29ubmVjdGlvbiwgImFj Y2VwdGFuY2VfdGVzdF9kYiIpCisgICAgICAgIHRlc3RfdXRpbHMuY3JlYXRl X2RhdGFiYXNlKHNlbGYuc2VydmVyLCAiYWNjZXB0YW5jZV90ZXN0X2RiIikK KyAgICAgICAgc2VsZi5wYWdlLndhaXRfZm9yX3NwaW5uZXJfdG9fZGlzYXBw ZWFyKCkKKyAgICAgICAgc2VsZi5fY29ubmVjdHNfdG9fc2VydmVyKCkKKyAg ICAgICAgc2VsZi5fbG9jYXRlX2RhdGFiYXNlX3RyZWVfbm9kZSgpCisgICAg ICAgIHNlbGYuX29wZW5fcXVlcnlfdG9vbCgpCisKKyAgICBkZWYgcnVuVGVz dChzZWxmKToKKyAgICAgICAgIyBvbiBkZW1hbmQgcmVzdWx0IHNldCBvbiBz Y3JvbGxpbmcuCisgICAgICAgIHByaW50KCJcbk9uIGRlbWFuZCByZXN1bHQg c2V0IG9uIHNjcm9sbGluZy4uLiAiLAorICAgICAgICAgICAgICBmaWxlPXN5 cy5zdGRlcnIsIGVuZD0iIikKKyAgICAgICAgc2VsZi5fb25fZGVtYW5kX3Jl c3VsdCgpCisgICAgICAgIHByaW50KCJPSy4iLAorICAgICAgICAgICAgICBm aWxlPXN5cy5zdGRlcnIpCisgICAgICAgIHNlbGYuX2NsZWFyX3F1ZXJ5X3Rv b2woKQorCisgICAgICAgICMgb24gZGVtYW5kIHJlc3VsdCBzZXQgb24gZ3Jp ZCBzZWxlY3QgYWxsLgorICAgICAgICBwcmludCgiT24gZGVtYW5kIHJlc3Vs dCBzZXQgb24gZ3JpZCBzZWxlY3QgYWxsLi4uICIsCisgICAgICAgICAgICAg IGZpbGU9c3lzLnN0ZGVyciwgZW5kPSIiKQorICAgICAgICBzZWxmLl9vbl9k ZW1hbmRfcmVzdWx0X3NlbGVjdF9hbGxfZ3JpZCgpCisgICAgICAgIHByaW50 KCJPSy4iLAorICAgICAgICAgICAgICBmaWxlPXN5cy5zdGRlcnIpCisgICAg ICAgIHNlbGYuX2NsZWFyX3F1ZXJ5X3Rvb2woKQorCisgICAgICAgICMgb24g ZGVtYW5kIHJlc3VsdCBzZXQgb24gY29sdW1uIHNlbGVjdCBhbGwuCisgICAg ICAgIHByaW50KCJPbiBkZW1hbmQgcmVzdWx0IHNldCBvbiBjb2x1bW4gc2Vs ZWN0IGFsbC4uLiAiLAorICAgICAgICAgICAgICBmaWxlPXN5cy5zdGRlcnIs IGVuZD0iIikKKyAgICAgICAgc2VsZi5fb25fZGVtYW5kX3Jlc3VsdF9zZWxl Y3RfYWxsX2NvbHVtbigpCisgICAgICAgIHByaW50KCJPSy4iLAorICAgICAg ICAgICAgICBmaWxlPXN5cy5zdGRlcnIpCisgICAgICAgIHNlbGYuX2NsZWFy X3F1ZXJ5X3Rvb2woKQorCisgICAgICAgICMgZXhwbGFpbiBxdWVyeQorICAg ICAgICBwcmludCgiRXhwbGFpbiBxdWVyeS4uLiAiLCBmaWxlPXN5cy5zdGRl cnIsIGVuZD0iIikKKyAgICAgICAgc2VsZi5fcXVlcnlfdG9vbF9leHBsYWlu KCkKKyAgICAgICAgcHJpbnQoIk9LLiIsIGZpbGU9c3lzLnN0ZGVycikKKyAg ICAgICAgc2VsZi5fY2xlYXJfcXVlcnlfdG9vbCgpCisKKyAgICAgICAgIyBl eHBsYWluIHF1ZXJ5IHdpdGggdmVyYm9zZQorICAgICAgICBwcmludCgiRXhw bGFpbiBxdWVyeSB3aXRoIHZlcmJvc2UuLi4gIiwgZmlsZT1zeXMuc3RkZXJy LCBlbmQ9IiIpCisgICAgICAgIHNlbGYuX3F1ZXJ5X3Rvb2xfZXhwbGFpbl92 ZXJib3NlKCkKKyAgICAgICAgcHJpbnQoIk9LLiIsIGZpbGU9c3lzLnN0ZGVy cikKKyAgICAgICAgc2VsZi5fY2xlYXJfcXVlcnlfdG9vbCgpCisKKyAgICAg ICAgIyBleHBsYWluIHF1ZXJ5IHdpdGggY29zdHMKKyAgICAgICAgcHJpbnQo IkV4cGxhaW4gcXVlcnkgd2l0aCBjb3N0cy4uLiAiLCBmaWxlPXN5cy5zdGRl cnIsIGVuZD0iIikKKyAgICAgICAgc2VsZi5fcXVlcnlfdG9vbF9leHBsYWlu X2Nvc3QoKQorICAgICAgICBwcmludCgiT0suIiwgZmlsZT1zeXMuc3RkZXJy KQorICAgICAgICBzZWxmLl9jbGVhcl9xdWVyeV90b29sKCkKKworICAgICAg ICAjIGV4cGxhaW4gYW5hbHl6ZSBxdWVyeQorICAgICAgICBwcmludCgiRXhw bGFpbiBhbmFseXplIHF1ZXJ5Li4uICIsIGZpbGU9c3lzLnN0ZGVyciwgZW5k PSIiKQorICAgICAgICBzZWxmLl9xdWVyeV90b29sX2V4cGxhaW5fYW5hbHl6 ZSgpCisgICAgICAgIHByaW50KCJPSy4iLCBmaWxlPXN5cy5zdGRlcnIpCisg ICAgICAgIHNlbGYuX2NsZWFyX3F1ZXJ5X3Rvb2woKQorCisgICAgICAgICMg ZXhwbGFpbiBhbmFseXplIHF1ZXJ5IHdpdGggYnVmZmVycworICAgICAgICBw cmludCgiRXhwbGFpbiBhbmFseXplIHF1ZXJ5IHdpdGggYnVmZmVycy4uLiAi LCBmaWxlPXN5cy5zdGRlcnIsIGVuZD0iIikKKyAgICAgICAgc2VsZi5fcXVl cnlfdG9vbF9leHBsYWluX2FuYWx5emVfYnVmZmVycygpCisgICAgICAgIHBy aW50KCJPSy4iLCBmaWxlPXN5cy5zdGRlcnIpCisgICAgICAgIHNlbGYuX2Ns ZWFyX3F1ZXJ5X3Rvb2woKQorCisgICAgICAgICMgZXhwbGFpbiBhbmFseXpl IHF1ZXJ5IHdpdGggdGltaW5nCisgICAgICAgIHByaW50KCJFeHBsYWluIGFu YWx5emUgcXVlcnkgd2l0aCB0aW1pbmcuLi4gIiwgZmlsZT1zeXMuc3RkZXJy LCBlbmQ9IiIpCisgICAgICAgIHNlbGYuX3F1ZXJ5X3Rvb2xfZXhwbGFpbl9h bmFseXplX3RpbWluZygpCisgICAgICAgIHByaW50KCJPSy4iLCBmaWxlPXN5 cy5zdGRlcnIpCisgICAgICAgIHNlbGYuX2NsZWFyX3F1ZXJ5X3Rvb2woKQor CisgICAgICAgICMgYXV0byBjb21taXQgZGlzYWJsZWQuCisgICAgICAgIHBy aW50KCJBdXRvIGNvbW1pdCBkaXNhYmxlZC4uLiAiLCBmaWxlPXN5cy5zdGRl cnIsIGVuZD0iIikKKyAgICAgICAgc2VsZi5fcXVlcnlfdG9vbF9hdXRvX2Nv bW1pdF9kaXNhYmxlZCgpCisgICAgICAgIHByaW50KCJPSy4iLCBmaWxlPXN5 cy5zdGRlcnIpCisgICAgICAgIHNlbGYuX2NsZWFyX3F1ZXJ5X3Rvb2woKQor CisgICAgICAgICMgYXV0byBjb21taXQgZW5hYmxlZC4KKyAgICAgICAgcHJp bnQoIkF1dG8gY29tbWl0IGVuYWJsZWQuLi4gIiwgZmlsZT1zeXMuc3RkZXJy LCBlbmQ9IiIpCisgICAgICAgIHNlbGYuX3F1ZXJ5X3Rvb2xfYXV0b19jb21t aXRfZW5hYmxlZCgpCisgICAgICAgIHByaW50KCJPSy4iLCBmaWxlPXN5cy5z dGRlcnIpCisgICAgICAgIHNlbGYuX2NsZWFyX3F1ZXJ5X3Rvb2woKQorCisg ICAgICAgICMgYXV0byByb2xsYmFjayBlbmFibGVkLgorICAgICAgICBwcmlu dCgiQXV0byByb2xsYmFjayBlbmFibGVkLi4uIiwgZmlsZT1zeXMuc3RkZXJy LCBlbmQ9IiIpCisgICAgICAgIHNlbGYuX3F1ZXJ5X3Rvb2xfYXV0b19yb2xs YmFja19lbmFibGVkKCkKKyAgICAgICAgcHJpbnQoIiBPSy4iLCBmaWxlPXN5 cy5zdGRlcnIpCisgICAgICAgIHNlbGYuX2NsZWFyX3F1ZXJ5X3Rvb2woKQor CisgICAgICAgICMgY2FuY2VsIHF1ZXJ5LgorICAgICAgICBwcmludCgiQ2Fu Y2VsIHF1ZXJ5Li4uICIsIGZpbGU9c3lzLnN0ZGVyciwgZW5kPSIiKQorICAg ICAgICBzZWxmLl9xdWVyeV90b29sX2NhbmNlbF9xdWVyeSgpCisgICAgICAg IHByaW50KCJPSy4iLCBmaWxlPXN5cy5zdGRlcnIpCisgICAgICAgIHNlbGYu X2NsZWFyX3F1ZXJ5X3Rvb2woKQorCisgICAgZGVmIGFmdGVyKHNlbGYpOgor ICAgICAgICBzZWxmLnBhZ2UucmVtb3ZlX3NlcnZlcihzZWxmLnNlcnZlcikK KyAgICAgICAgY29ubmVjdGlvbiA9IHRlc3RfdXRpbHMuZ2V0X2RiX2Nvbm5l Y3Rpb24oc2VsZi5zZXJ2ZXJbJ2RiJ10sCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyWyd1 c2VybmFtZSddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlclsnZGJfcGFzc3dvcmQnXSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc2VsZi5zZXJ2ZXJbJ2hvc3QnXSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXJb J3BvcnQnXSkKKyAgICAgICAgdGVzdF91dGlscy5kcm9wX2RhdGFiYXNlKGNv bm5lY3Rpb24sICJhY2NlcHRhbmNlX3Rlc3RfZGIiKQorCisgICAgZGVmIF9j b25uZWN0c190b19zZXJ2ZXIoc2VsZik6CisgICAgICAgIHNlbGYucGFnZS5m aW5kX2J5X3hwYXRoKAorICAgICAgICAgICAgIi8vKltAY2xhc3M9J2FjaVRy ZWVUZXh0JyBhbmQgLj0nU2VydmVycyddIikuY2xpY2soKQorICAgICAgICBz ZWxmLnBhZ2UuZHJpdmVyLmZpbmRfZWxlbWVudF9ieV9saW5rX3RleHQoIk9i amVjdCIpLmNsaWNrKCkKKyAgICAgICAgQWN0aW9uQ2hhaW5zKHNlbGYucGFn ZS5kcml2ZXIpIFwKKyAgICAgICAgICAgIC5tb3ZlX3RvX2VsZW1lbnQoCisg ICAgICAgICAgICBzZWxmLnBhZ2UuZHJpdmVyLmZpbmRfZWxlbWVudF9ieV9s aW5rX3RleHQoIkNyZWF0ZSIpKVwKKyAgICAgICAgICAgIC5wZXJmb3JtKCkK KyAgICAgICAgc2VsZi5wYWdlLmZpbmRfYnlfcGFydGlhbF9saW5rX3RleHQo IlNlcnZlci4uLiIpLmNsaWNrKCkKKworICAgICAgICBzZXJ2ZXJfY29uZmln ID0gc2VsZi5zZXJ2ZXIKKyAgICAgICAgc2VsZi5wYWdlLmZpbGxfaW5wdXRf YnlfZmllbGRfbmFtZSgibmFtZSIsIHNlcnZlcl9jb25maWdbJ25hbWUnXSkK KyAgICAgICAgc2VsZi5wYWdlLmZpbmRfYnlfcGFydGlhbF9saW5rX3RleHQo IkNvbm5lY3Rpb24iKS5jbGljaygpCisgICAgICAgIHNlbGYucGFnZS5maWxs X2lucHV0X2J5X2ZpZWxkX25hbWUoImhvc3QiLCBzZXJ2ZXJfY29uZmlnWydo b3N0J10pCisgICAgICAgIHNlbGYucGFnZS5maWxsX2lucHV0X2J5X2ZpZWxk X25hbWUoInBvcnQiLCBzZXJ2ZXJfY29uZmlnWydwb3J0J10pCisgICAgICAg IHNlbGYucGFnZS5maWxsX2lucHV0X2J5X2ZpZWxkX25hbWUoCisgICAgICAg ICAgICAidXNlcm5hbWUiLAorICAgICAgICAgICAgc2VydmVyX2NvbmZpZ1sn dXNlcm5hbWUnXQorICAgICAgICApCisgICAgICAgIHNlbGYucGFnZS5maWxs X2lucHV0X2J5X2ZpZWxkX25hbWUoCisgICAgICAgICAgICAicGFzc3dvcmQi LAorICAgICAgICAgICAgc2VydmVyX2NvbmZpZ1snZGJfcGFzc3dvcmQnXQor ICAgICAgICApCisgICAgICAgIHNlbGYucGFnZS5maW5kX2J5X3hwYXRoKCIv L2J1dHRvbltjb250YWlucyguLCdTYXZlJyldIikuY2xpY2soKQorCisgICAg ZGVmIF9sb2NhdGVfZGF0YWJhc2VfdHJlZV9ub2RlKHNlbGYpOgorICAgICAg ICBzZWxmLnBhZ2UudG9nZ2xlX29wZW5fdHJlZV9pdGVtKHNlbGYuc2VydmVy WyduYW1lJ10pCisgICAgICAgIHNlbGYucGFnZS50b2dnbGVfb3Blbl90cmVl X2l0ZW0oJ0RhdGFiYXNlcycpCisgICAgICAgIHNlbGYucGFnZS50b2dnbGVf b3Blbl90cmVlX2l0ZW0oJ2FjY2VwdGFuY2VfdGVzdF9kYicpCisKKyAgICBk ZWYgX29wZW5fcXVlcnlfdG9vbChzZWxmKToKKyAgICAgICAgc2VsZi5wYWdl LmRyaXZlci5maW5kX2VsZW1lbnRfYnlfbGlua190ZXh0KCJUb29scyIpLmNs aWNrKCkKKworICAgICAgICB0b29sc19tZW51ID0gc2VsZi5wYWdlLmRyaXZl ci5maW5kX2VsZW1lbnRfYnlfaWQoJ21udV90b29scycpCisKKyAgICAgICAg IyBRdWVyeSBUb29sIGlzIGZpcnN0IGxpCisgICAgICAgIHF1ZXJ5X3Rvb2wg PSB0b29sc19tZW51LmZpbmRfZWxlbWVudF9ieV90YWdfbmFtZSgnbGknKQor CisgICAgICAgIHQgPSB0aW1lLnRpbWUoKQorICAgICAgICAjIHdhaXQgdW50 aWwgUXVlcnkgVG9vbCBtZW51IGJlY29tZXMgZW5hYmxlZC4KKyAgICAgICAg d2hpbGUgdGltZS50aW1lKCkgLSB0IDwgMjA6ICAjIDIwIHNlY29uZHMKKyAg ICAgICAgICAgICMgaWYgbWVudSBpcyBkaXNhYmxlZCB0aGVuIGl0IHdpbGwg aGF2ZQorICAgICAgICAgICAgIyB0d28gY2xhc3NlcyAnbWVudS1pdGVtIGRp c2FibGVkJy4KKyAgICAgICAgICAgICMgQW5kIGlmIG1lbnUgaXMgZW5hYmxl ZCB0aGUgaXQgd2lsbCBoYXZlCisgICAgICAgICAgICAjIG9ubHkgb25lIGNs YXNzICdtZW51LWl0ZW0nLgorICAgICAgICAgICAgaWYgJ21lbnUtaXRlbScg PT0gc3RyKHF1ZXJ5X3Rvb2wuZ2V0X2F0dHJpYnV0ZSgnY2xhc3MnKSk6Cisg ICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIHRpbWUuc2xlZXAo MC4xKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYXNzZXJ0IEZhbHNl LCAiJ1Rvb2xzIC0+IFF1ZXJ5IFRvb2wnIG1lbnUgZGlkIG5vdCBlbmFibGUu IgorCisgICAgICAgIHNlbGYucGFnZS5maW5kX2J5X3BhcnRpYWxfbGlua190 ZXh0KCJRdWVyeSBUb29sIikuY2xpY2soKQorICAgICAgICBzZWxmLnBhZ2Uu Y2xpY2tfdGFiKCdRdWVyeSAtJykKKworICAgICAgICBzZWxmLnBhZ2UuZHJp dmVyLnN3aXRjaF90b19mcmFtZSgKKyAgICAgICAgICAgIHNlbGYucGFnZS5k cml2ZXIuZmluZF9lbGVtZW50X2J5X3RhZ19uYW1lKCJpZnJhbWUiKQorICAg ICAgICApCisKKyAgICBkZWYgX2NsZWFyX3F1ZXJ5X3Rvb2woc2VsZik6Cisg ICAgICAgICMgY2xlYXIgY29kZW1pcnJvci4KKyAgICAgICAgc2VsZi5wYWdl LmZpbmRfYnlfaWQoImJ0bi1lZGl0IikuY2xpY2soKQorICAgICAgICAjIHdh aXQgZm9yIGFsZXJ0aWZ5IGRpYWxvZyBvcGVuIGFuaW1hdGlvbiB0byBjb21w bGV0ZS4KKyAgICAgICAgdGltZS5zbGVlcCgxKQorCisgICAgICAgIHNlbGYu cGFnZS5jbGlja19lbGVtZW50KHNlbGYucGFnZS5maW5kX2J5X3hwYXRoKCIv L2J1dHRvbltjb250YWlucyguLCdZZXMnKV0iKSkKKyAgICAgICAgIyB3YWl0 IGZvciBhbGVydGlmeSBkaWFsb2cgY2xvc2UgYW5pbWF0aW9uIHRvIGNvbXBs ZXRlLgorICAgICAgICB0aW1lLnNsZWVwKDEpCisKKyAgICBkZWYgX29uX2Rl bWFuZF9yZXN1bHQoc2VsZik6CisgICAgICAgIE9OX0RFTUFORF9DSFVOS1Mg PSAyCisgICAgICAgIHF1ZXJ5ID0gIiIiLS0gT24gZGVtYW5kIHF1ZXJ5IHJl c3VsdCBvbiBzY3JvbGwKK1NFTEVDVCBnZW5lcmF0ZV9zZXJpZXMoMSwge30p IGFzIGlkIiIiLmZvcm1hdCgKKyAgICAgICAgICAgIGNvbmZpZy5PTl9ERU1B TkRfUkVDT1JEX0NPVU5UICogT05fREVNQU5EX0NIVU5LUykKKworICAgICAg ICB3YWl0ID0gV2ViRHJpdmVyV2FpdChzZWxmLnBhZ2UuZHJpdmVyLCAxMCkK KyAgICAgICAgc2VsZi5wYWdlLmZpbGxfY29kZW1pcnJvcl9hcmVhX3dpdGgo cXVlcnkpCisKKyAgICAgICAgc2VsZi5wYWdlLmZpbmRfYnlfaWQoImJ0bi1m bGFzaCIpLmNsaWNrKCkKKworICAgICAgICBzZWxmLnBhZ2Uud2FpdF9mb3Jf cXVlcnlfdG9vbF9sb2FkaW5nX2luZGljYXRvcl90b19kaXNhcHBlYXIoKQor CisgICAgICAgIGNhbnZhcyA9IHdhaXQudW50aWwoRUMucHJlc2VuY2Vfb2Zf ZWxlbWVudF9sb2NhdGVkKAorICAgICAgICAgICAgKEJ5LkNTU19TRUxFQ1RP UiwgIiNkYXRhZ3JpZCAuc2xpY2stdmlld3BvcnQgLmdyaWQtY2FudmFzIikp KQorCisgICAgICAgICMgc2Nyb2xsIHRvIGJvdHRvbSB0byBmZXRjaCBuZXh0 IGNodW5rIG9mIHJlc3VsdCBzZXQuCisgICAgICAgIHNlbGYuZHJpdmVyLmV4 ZWN1dGVfc2NyaXB0KAorICAgICAgICAgICAgIiQoJy5zbGljay12aWV3cG9y dCcpLnNjcm9sbFRvcCgkKCcuZ3JpZC1jYW52YXMnKS5oZWlnaHQoKSk7Igor ICAgICAgICApCisKKyAgICAgICAgIyB3YWl0IGZvciBhamF4IHRvIGNvbXBs ZXRlLgorICAgICAgICB0aW1lLnNsZWVwKDEpCisKKyAgICAgICAgIyBhZ2Fp biBzY3JvbGwgdG8gYm90dG9tIHRvIGJyaW5nIGxhc3Qgcm93IG9mIG5leHQg Y2h1bmsgaW4KKyAgICAgICAgIyB2aWV3cG9ydC4KKyAgICAgICAgc2VsZi5k cml2ZXIuZXhlY3V0ZV9zY3JpcHQoCisgICAgICAgICAgICAiJCgnLnNsaWNr LXZpZXdwb3J0Jykuc2Nyb2xsVG9wKCQoJy5ncmlkLWNhbnZhcycpLmhlaWdo dCgpKTsiCisgICAgICAgICkKKworICAgICAgICByb3dfaWRfdG9fZmluZCA9 IGNvbmZpZy5PTl9ERU1BTkRfUkVDT1JEX0NPVU5UICogT05fREVNQU5EX0NI VU5LUworCisgICAgICAgIGNhbnZhcy5maW5kX2VsZW1lbnRfYnlfeHBhdGgo CisgICAgICAgICAgICAnLy9zcGFuW3RleHQoKT0ie30iXScuZm9ybWF0KHJv d19pZF90b19maW5kKQorICAgICAgICApCisKKyAgICBkZWYgX29uX2RlbWFu ZF9yZXN1bHRfc2VsZWN0X2FsbF9ncmlkKHNlbGYpOgorICAgICAgICBPTl9E RU1BTkRfQ0hVTktTID0gMworICAgICAgICBxdWVyeSA9ICIiIi0tIE9uIGRl bWFuZCBxdWVyeSByZXN1bHQgb24gZ3JpZCBzZWxlY3QgYWxsCitTRUxFQ1Qg Z2VuZXJhdGVfc2VyaWVzKDEsIHt9KSBhcyBpZCIiIi5mb3JtYXQoCisgICAg ICAgICAgICBjb25maWcuT05fREVNQU5EX1JFQ09SRF9DT1VOVCAqIE9OX0RF TUFORF9DSFVOS1MpCisKKyAgICAgICAgd2FpdCA9IFdlYkRyaXZlcldhaXQo c2VsZi5wYWdlLmRyaXZlciwgMTApCisKKyAgICAgICAgc2VsZi5wYWdlLmZp bGxfY29kZW1pcnJvcl9hcmVhX3dpdGgocXVlcnkpCisKKyAgICAgICAgc2Vs Zi5wYWdlLmZpbmRfYnlfaWQoImJ0bi1mbGFzaCIpLmNsaWNrKCkKKworICAg ICAgICBzZWxmLnBhZ2Uud2FpdF9mb3JfcXVlcnlfdG9vbF9sb2FkaW5nX2lu ZGljYXRvcl90b19kaXNhcHBlYXIoKQorCisgICAgICAgIHdhaXQudW50aWwo RUMucHJlc2VuY2Vfb2ZfZWxlbWVudF9sb2NhdGVkKAorICAgICAgICAgICAg KEJ5LkNTU19TRUxFQ1RPUiwgIi5zbGljay1oZWFkZXItY29sdW1uIikpKS5j bGljaygpCisKKyAgICAgICAgIyB3YWl0IGZvciB1bnRpbCBhbGwgcmVjb3Jk cyBhcmUgZmV0Y2hlZCBhbmQgc2VsZWN0ZWQuCisgICAgICAgIHRpbWUuc2xl ZXAoMSkKKyAgICAgICAgIyBzY3JvbGwgdG8gYm90dG9tIHRvIGJyaW5nIGxh c3Qgcm93IG9mIG5leHQgY2h1bmsgaW4KKyAgICAgICAgIyB2aWV3cG9ydC4K KyAgICAgICAgc2VsZi5kcml2ZXIuZXhlY3V0ZV9zY3JpcHQoCisgICAgICAg ICAgICAiJCgnLnNsaWNrLXZpZXdwb3J0Jykuc2Nyb2xsVG9wKCQoJy5ncmlk LWNhbnZhcycpLmhlaWdodCgpKTsiCisgICAgICAgICkKKworICAgICAgICBj YW52YXMgPSB3YWl0LnVudGlsKEVDLnByZXNlbmNlX29mX2VsZW1lbnRfbG9j YXRlZCgKKyAgICAgICAgICAgIChCeS5DU1NfU0VMRUNUT1IsICIjZGF0YWdy aWQgLnNsaWNrLXZpZXdwb3J0IC5ncmlkLWNhbnZhcyIpKQorICAgICAgICAp CisKKyAgICAgICAgcm93X2lkX3RvX2ZpbmQgPSBjb25maWcuT05fREVNQU5E X1JFQ09SRF9DT1VOVCAqIE9OX0RFTUFORF9DSFVOS1MKKworICAgICAgICBj YW52YXMuZmluZF9lbGVtZW50X2J5X3hwYXRoKAorICAgICAgICAgICAgJy8v c3Bhblt0ZXh0KCk9Int9Il0nLmZvcm1hdChyb3dfaWRfdG9fZmluZCkKKyAg ICAgICAgKQorCisgICAgZGVmIF9vbl9kZW1hbmRfcmVzdWx0X3NlbGVjdF9h bGxfY29sdW1uKHNlbGYpOgorICAgICAgICBPTl9ERU1BTkRfQ0hVTktTID0g NAorICAgICAgICBxdWVyeSA9ICIiIi0tIE9uIGRlbWFuZCBxdWVyeSByZXN1 bHQgb24gY29sdW1uIHNlbGVjdCBhbGwKK1NFTEVDVCBnZW5lcmF0ZV9zZXJp ZXMoMSwge30pIGFzIGlkMSwgJ2R1bW15JyBhcyBpZDIiIiIuZm9ybWF0KAor ICAgICAgICAgICAgY29uZmlnLk9OX0RFTUFORF9SRUNPUkRfQ09VTlQgKiBP Tl9ERU1BTkRfQ0hVTktTKQorCisgICAgICAgIHdhaXQgPSBXZWJEcml2ZXJX YWl0KHNlbGYucGFnZS5kcml2ZXIsIDEwKQorCisgICAgICAgIHNlbGYucGFn ZS5maWxsX2NvZGVtaXJyb3JfYXJlYV93aXRoKHF1ZXJ5KQorCisgICAgICAg IHNlbGYucGFnZS5maW5kX2J5X2lkKCJidG4tZmxhc2giKS5jbGljaygpCisK KyAgICAgICAgc2VsZi5wYWdlLndhaXRfZm9yX3F1ZXJ5X3Rvb2xfbG9hZGlu Z19pbmRpY2F0b3JfdG9fZGlzYXBwZWFyKCkKKworICAgICAgICAjIGNsaWNr IG9uIGZpcnN0IGRhdGEgY29sdW1uIHRvIHNlbGVjdCBhbGwgY29sdW1uLgor CisgICAgICAgIHdhaXQudW50aWwoRUMucHJlc2VuY2Vfb2ZfZWxlbWVudF9s b2NhdGVkKAorICAgICAgICAgICgKKyAgICAgICAgICAgIEJ5LlhQQVRILAor ICAgICAgICAgICAgIi8vc3Bhbltjb250YWlucyhAY2xhc3MsICdjb2x1bW4t bmFtZScpIGFuZCBjb250YWlucyguLCAnaWQxJyldIikpCisgICAgICAgICku Y2xpY2soKQorCisgICAgICAgICMgd2FpdCBmb3IgdW50aWwgYWxsIHJlY29y ZHMgYXJlIGZldGNoZWQgYW5kIHNlbGVjdGVkLgorICAgICAgICB0aW1lLnNs ZWVwKDEpCisgICAgICAgICMgc2Nyb2xsIHRvIGJvdHRvbSB0byBicmluZyBs YXN0IHJvdyBvZiBuZXh0IGNodW5rIGluCisgICAgICAgICMgdmlld3BvcnQu CisgICAgICAgIHNlbGYuZHJpdmVyLmV4ZWN1dGVfc2NyaXB0KAorICAgICAg ICAgICAgIiQoJy5zbGljay12aWV3cG9ydCcpLnNjcm9sbFRvcCgkKCcuZ3Jp ZC1jYW52YXMnKS5oZWlnaHQoKSk7IgorICAgICAgICApCisKKyAgICAgICAg Y2FudmFzID0gd2FpdC51bnRpbChFQy5wcmVzZW5jZV9vZl9lbGVtZW50X2xv Y2F0ZWQoCisgICAgICAgICAgICAoQnkuQ1NTX1NFTEVDVE9SLCAiI2RhdGFn cmlkIC5zbGljay12aWV3cG9ydCAuZ3JpZC1jYW52YXMiKSkKKyAgICAgICAg KQorCisgICAgICAgIHJvd19pZF90b19maW5kID0gY29uZmlnLk9OX0RFTUFO RF9SRUNPUkRfQ09VTlQgKiBPTl9ERU1BTkRfQ0hVTktTCisKKyAgICAgICAg Y2FudmFzLmZpbmRfZWxlbWVudF9ieV94cGF0aCgKKyAgICAgICAgICAgICcv L3NwYW5bdGV4dCgpPSJ7fSJdJy5mb3JtYXQocm93X2lkX3RvX2ZpbmQpCisg ICAgICAgICkKKworICAgIGRlZiBfcXVlcnlfdG9vbF9leHBsYWluKHNlbGYp OgorICAgICAgICBxdWVyeSA9ICIiIi0tIEV4cGxhaW4gcXVlcnkKK1NFTEVD VCBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwMCkgYXMgaWQgb3JkZXIgYnkgaWQg ZGVzYyIiIgorCisgICAgICAgIHdhaXQgPSBXZWJEcml2ZXJXYWl0KHNlbGYu cGFnZS5kcml2ZXIsIDEwKQorCisgICAgICAgIHNlbGYucGFnZS5maWxsX2Nv ZGVtaXJyb3JfYXJlYV93aXRoKHF1ZXJ5KQorICAgICAgICBzZWxmLnBhZ2Uu ZmluZF9ieV9pZCgiYnRuLXF1ZXJ5LWRyb3Bkb3duIikuY2xpY2soKQorICAg ICAgICBzZWxmLnBhZ2UuZmluZF9ieV9pZCgiYnRuLWV4cGxhaW4iKS5jbGlj aygpCisKKyAgICAgICAgc2VsZi5wYWdlLndhaXRfZm9yX3F1ZXJ5X3Rvb2xf bG9hZGluZ19pbmRpY2F0b3JfdG9fZGlzYXBwZWFyKCkKKworICAgICAgICBz ZWxmLnBhZ2UuY2xpY2tfdGFiKCdEYXRhIE91dHB1dCcpCisKKyAgICAgICAg Y2FudmFzID0gd2FpdC51bnRpbChFQy5wcmVzZW5jZV9vZl9lbGVtZW50X2xv Y2F0ZWQoCisgICAgICAgICAgICAoQnkuQ1NTX1NFTEVDVE9SLCAiI2RhdGFn cmlkIC5zbGljay12aWV3cG9ydCAuZ3JpZC1jYW52YXMiKSkKKyAgICAgICAg KQorICAgICAgICAjIFNlYXJjaCBmb3IgUGxhbiB3b3JkIGluIHJlc3VsdAor ICAgICAgICBjYW52YXMuZmluZF9lbGVtZW50X2J5X3hwYXRoKCIvLypbY29u dGFpbnMoc3RyaW5nKCksJ1BsYW4nKV0iKQorCisgICAgZGVmIF9xdWVyeV90 b29sX2V4cGxhaW5fdmVyYm9zZShzZWxmKToKKyAgICAgICAgcXVlcnkgPSAi IiItLSBFeHBsYWluIHF1ZXJ5IHdpdGggdmVyYm9zZQorU0VMRUNUIGdlbmVy YXRlX3NlcmllcygxLCAxMDAwKSBhcyBpZCBvcmRlciBieSBpZCBkZXNjIiIi CisKKyAgICAgICAgd2FpdCA9IFdlYkRyaXZlcldhaXQoc2VsZi5wYWdlLmRy aXZlciwgMTApCisKKyAgICAgICAgc2VsZi5wYWdlLmZpbGxfY29kZW1pcnJv cl9hcmVhX3dpdGgocXVlcnkpCisKKyAgICAgICAgcXVlcnlfb3AgPSBzZWxm LnBhZ2UuZmluZF9ieV9pZCgiYnRuLXF1ZXJ5LWRyb3Bkb3duIikKKyAgICAg ICAgcXVlcnlfb3AuY2xpY2soKQorCisgICAgICAgIEFjdGlvbkNoYWlucyhz ZWxmLmRyaXZlcikubW92ZV90b19lbGVtZW50KAorICAgICAgICAgICAgcXVl cnlfb3AuZmluZF9lbGVtZW50X2J5X3hwYXRoKAorICAgICAgICAgICAgICAg ICIvL2xpW2NvbnRhaW5zKC4sJ0V4cGxhaW4gT3B0aW9ucycpXSIpKS5wZXJm b3JtKCkKKworICAgICAgICBzZWxmLnBhZ2UuZmluZF9ieV9pZCgiYnRuLWV4 cGxhaW4tdmVyYm9zZSIpLmNsaWNrKCkKKworICAgICAgICBzZWxmLnBhZ2Uu ZmluZF9ieV9pZCgiYnRuLWV4cGxhaW4iKS5jbGljaygpCisKKyAgICAgICAg c2VsZi5wYWdlLndhaXRfZm9yX3F1ZXJ5X3Rvb2xfbG9hZGluZ19pbmRpY2F0 b3JfdG9fZGlzYXBwZWFyKCkKKworICAgICAgICBzZWxmLnBhZ2UuY2xpY2tf dGFiKCdEYXRhIE91dHB1dCcpCisKKyAgICAgICAgY2FudmFzID0gd2FpdC51 bnRpbChFQy5wcmVzZW5jZV9vZl9lbGVtZW50X2xvY2F0ZWQoCisgICAgICAg ICAgICAoQnkuQ1NTX1NFTEVDVE9SLCAiI2RhdGFncmlkIC5zbGljay12aWV3 cG9ydCAuZ3JpZC1jYW52YXMiKSkKKyAgICAgICAgKQorICAgICAgICAjIFNl YXJjaCBmb3IgJ091dHB1dCcgd29yZCBpbiByZXN1bHQKKyAgICAgICAgY2Fu dmFzLmZpbmRfZWxlbWVudF9ieV94cGF0aCgiLy8qW2NvbnRhaW5zKHN0cmlu ZygpLCAnT3V0cHV0JyldIikKKworICAgIGRlZiBfcXVlcnlfdG9vbF9leHBs YWluX2Nvc3Qoc2VsZik6CisgICAgICAgIHF1ZXJ5ID0gIiIiLS0gRXhwbGFp biBxdWVyeSB3aXRoIGNvc3RzCitTRUxFQ1QgZ2VuZXJhdGVfc2VyaWVzKDEs IDEwMDApIGFzIGlkIG9yZGVyIGJ5IGlkIGRlc2MiIiIKKworICAgICAgICB3 YWl0ID0gV2ViRHJpdmVyV2FpdChzZWxmLnBhZ2UuZHJpdmVyLCAxMCkKKwor ICAgICAgICBzZWxmLnBhZ2UuZmlsbF9jb2RlbWlycm9yX2FyZWFfd2l0aChx dWVyeSkKKyAgICAgICAgcXVlcnlfb3AgPSBzZWxmLnBhZ2UuZmluZF9ieV9p ZCgiYnRuLXF1ZXJ5LWRyb3Bkb3duIikKKyAgICAgICAgcXVlcnlfb3AuY2xp Y2soKQorCisgICAgICAgIEFjdGlvbkNoYWlucyhzZWxmLmRyaXZlcikubW92 ZV90b19lbGVtZW50KAorICAgICAgICAgICAgcXVlcnlfb3AuZmluZF9lbGVt ZW50X2J5X3hwYXRoKAorICAgICAgICAgICAgICAgICIvL2xpW2NvbnRhaW5z KC4sJ0V4cGxhaW4gT3B0aW9ucycpXSIpKS5wZXJmb3JtKCkKKworICAgICAg ICBzZWxmLnBhZ2UuZmluZF9ieV9pZCgiYnRuLWV4cGxhaW4tY29zdHMiKS5j bGljaygpCisKKyAgICAgICAgc2VsZi5wYWdlLmZpbmRfYnlfaWQoImJ0bi1l eHBsYWluIikuY2xpY2soKQorCisgICAgICAgIHNlbGYucGFnZS53YWl0X2Zv cl9xdWVyeV90b29sX2xvYWRpbmdfaW5kaWNhdG9yX3RvX2Rpc2FwcGVhcigp CisKKyAgICAgICAgc2VsZi5wYWdlLmNsaWNrX3RhYignRGF0YSBPdXRwdXQn KQorCisgICAgICAgIGNhbnZhcyA9IHdhaXQudW50aWwoRUMucHJlc2VuY2Vf b2ZfZWxlbWVudF9sb2NhdGVkKAorICAgICAgICAgICAgKEJ5LkNTU19TRUxF Q1RPUiwgIiNkYXRhZ3JpZCAuc2xpY2stdmlld3BvcnQgLmdyaWQtY2FudmFz IikpCisgICAgICAgICkKKyAgICAgICAgIyBTZWFyY2ggZm9yICdUb3RhbCBD b3N0IHdvcmQgaW4gcmVzdWx0CisgICAgICAgIGNhbnZhcy5maW5kX2VsZW1l bnRfYnlfeHBhdGgoIi8vKltjb250YWlucyhzdHJpbmcoKSwnVG90YWwgQ29z dCcpXSIpCisKKyAgICBkZWYgX3F1ZXJ5X3Rvb2xfZXhwbGFpbl9hbmFseXpl KHNlbGYpOgorICAgICAgICBxdWVyeSA9ICIiIi0tIEV4cGxhaW4gYW5hbHl6 ZSBxdWVyeQorU0VMRUNUIGdlbmVyYXRlX3NlcmllcygxLCAxMDAwKSBhcyBp ZCBvcmRlciBieSBpZCBkZXNjIiIiCisKKyAgICAgICAgd2FpdCA9IFdlYkRy aXZlcldhaXQoc2VsZi5wYWdlLmRyaXZlciwgMTApCisKKyAgICAgICAgc2Vs Zi5wYWdlLmZpbGxfY29kZW1pcnJvcl9hcmVhX3dpdGgocXVlcnkpCisKKyAg ICAgICAgc2VsZi5wYWdlLmZpbmRfYnlfaWQoImJ0bi1xdWVyeS1kcm9wZG93 biIpLmNsaWNrKCkKKyAgICAgICAgc2VsZi5wYWdlLmZpbmRfYnlfaWQoImJ0 bi1leHBsYWluLWFuYWx5emUiKS5jbGljaygpCisKKyAgICAgICAgc2VsZi5w YWdlLndhaXRfZm9yX3F1ZXJ5X3Rvb2xfbG9hZGluZ19pbmRpY2F0b3JfdG9f ZGlzYXBwZWFyKCkKKworICAgICAgICBzZWxmLnBhZ2UuY2xpY2tfdGFiKCdE YXRhIE91dHB1dCcpCisKKyAgICAgICAgY2FudmFzID0gd2FpdC51bnRpbChF Qy5wcmVzZW5jZV9vZl9lbGVtZW50X2xvY2F0ZWQoCisgICAgICAgICAgICAo QnkuQ1NTX1NFTEVDVE9SLCAiI2RhdGFncmlkIC5zbGljay12aWV3cG9ydCAu Z3JpZC1jYW52YXMiKSkKKyAgICAgICAgKQorICAgICAgICAjIFNlYXJjaCBm b3IgQWN0dWFsIFJvd3Mgd29yZCBpbiByZXN1bHQKKyAgICAgICAgY2FudmFz LmZpbmRfZWxlbWVudF9ieV94cGF0aCgiLy8qW2NvbnRhaW5zKHN0cmluZygp LCdBY3R1YWwgUm93cycpXSIpCisKKyAgICBkZWYgX3F1ZXJ5X3Rvb2xfZXhw bGFpbl9hbmFseXplX2J1ZmZlcnMoc2VsZik6CisgICAgICAgIHF1ZXJ5ID0g IiIiLS0gRXhwbGFpbiBhbmFseXplIHF1ZXJ5IHdpdGggYnVmZmVycworU0VM RUNUIGdlbmVyYXRlX3NlcmllcygxLCAxMDAwKSBhcyBpZCBvcmRlciBieSBp ZCBkZXNjIiIiCisKKyAgICAgICAgd2FpdCA9IFdlYkRyaXZlcldhaXQoc2Vs Zi5wYWdlLmRyaXZlciwgMTApCisKKyAgICAgICAgc2VsZi5wYWdlLmZpbGxf Y29kZW1pcnJvcl9hcmVhX3dpdGgocXVlcnkpCisKKyAgICAgICAgcXVlcnlf b3AgPSBzZWxmLnBhZ2UuZmluZF9ieV9pZCgiYnRuLXF1ZXJ5LWRyb3Bkb3du IikKKyAgICAgICAgcXVlcnlfb3AuY2xpY2soKQorCisgICAgICAgIEFjdGlv bkNoYWlucyhzZWxmLmRyaXZlcikubW92ZV90b19lbGVtZW50KAorICAgICAg ICAgICAgcXVlcnlfb3AuZmluZF9lbGVtZW50X2J5X3hwYXRoKAorICAgICAg ICAgICAgICAgICIvL2xpW2NvbnRhaW5zKC4sJ0V4cGxhaW4gT3B0aW9ucycp XSIpKS5wZXJmb3JtKCkKKworICAgICAgICBzZWxmLnBhZ2UuZmluZF9ieV9p ZCgiYnRuLWV4cGxhaW4tYnVmZmVycyIpLmNsaWNrKCkKKworICAgICAgICBz ZWxmLnBhZ2UuZmluZF9ieV9pZCgiYnRuLWV4cGxhaW4tYW5hbHl6ZSIpLmNs aWNrKCkKKworICAgICAgICBzZWxmLnBhZ2Uud2FpdF9mb3JfcXVlcnlfdG9v bF9sb2FkaW5nX2luZGljYXRvcl90b19kaXNhcHBlYXIoKQorCisgICAgICAg IHNlbGYucGFnZS5jbGlja190YWIoJ0RhdGEgT3V0cHV0JykKKworICAgICAg ICBjYW52YXMgPSB3YWl0LnVudGlsKEVDLnByZXNlbmNlX29mX2VsZW1lbnRf bG9jYXRlZCgKKyAgICAgICAgICAgIChCeS5DU1NfU0VMRUNUT1IsICIjZGF0 YWdyaWQgLnNsaWNrLXZpZXdwb3J0IC5ncmlkLWNhbnZhcyIpKQorICAgICAg ICApCisgICAgICAgICMgU2VhcmNoIGZvciAnU2hhcmVkIFJlYWQgQmxvY2tz JyB3b3JkIGluIHJlc3VsdAorICAgICAgICBjYW52YXMuZmluZF9lbGVtZW50 X2J5X3hwYXRoKCIvLypbY29udGFpbnMoc3RyaW5nKCksICdTaGFyZWQgUmVh ZCBCbG9ja3MnKV0iKQorCisgICAgZGVmIF9xdWVyeV90b29sX2V4cGxhaW5f YW5hbHl6ZV90aW1pbmcoc2VsZik6CisgICAgICAgIHF1ZXJ5ID0gIiIiLS0g RXhwbGFpbiBhbmFseXplIHF1ZXJ5IHdpdGggdGltaW5nCitTRUxFQ1QgZ2Vu ZXJhdGVfc2VyaWVzKDEsIDEwMDApIGFzIGlkIG9yZGVyIGJ5IGlkIGRlc2Mi IiIKKworICAgICAgICB3YWl0ID0gV2ViRHJpdmVyV2FpdChzZWxmLnBhZ2Uu ZHJpdmVyLCAxMCkKKworICAgICAgICBzZWxmLnBhZ2UuZmlsbF9jb2RlbWly cm9yX2FyZWFfd2l0aChxdWVyeSkKKyAgICAgICAgcXVlcnlfb3AgPSBzZWxm LnBhZ2UuZmluZF9ieV9pZCgiYnRuLXF1ZXJ5LWRyb3Bkb3duIikKKyAgICAg ICAgcXVlcnlfb3AuY2xpY2soKQorCisgICAgICAgIEFjdGlvbkNoYWlucyhz ZWxmLmRyaXZlcikubW92ZV90b19lbGVtZW50KAorICAgICAgICAgICAgcXVl cnlfb3AuZmluZF9lbGVtZW50X2J5X3hwYXRoKAorICAgICAgICAgICAgICAg ICIvL2xpW2NvbnRhaW5zKC4sJ0V4cGxhaW4gT3B0aW9ucycpXSIpKS5wZXJm b3JtKCkKKworICAgICAgICBzZWxmLnBhZ2UuZmluZF9ieV9pZCgiYnRuLWV4 cGxhaW4tdGltaW5nIikuY2xpY2soKQorCisgICAgICAgIHNlbGYucGFnZS5m aW5kX2J5X2lkKCJidG4tZXhwbGFpbi1hbmFseXplIikuY2xpY2soKQorCisg ICAgICAgIHNlbGYucGFnZS53YWl0X2Zvcl9xdWVyeV90b29sX2xvYWRpbmdf aW5kaWNhdG9yX3RvX2Rpc2FwcGVhcigpCisKKyAgICAgICAgc2VsZi5wYWdl LmNsaWNrX3RhYignRGF0YSBPdXRwdXQnKQorCisgICAgICAgIGNhbnZhcyA9 IHdhaXQudW50aWwoRUMucHJlc2VuY2Vfb2ZfZWxlbWVudF9sb2NhdGVkKAor ICAgICAgICAgICAgKEJ5LkNTU19TRUxFQ1RPUiwgIiNkYXRhZ3JpZCAuc2xp Y2stdmlld3BvcnQgLmdyaWQtY2FudmFzIikpCisgICAgICAgICkKKyAgICAg ICAgIyBTZWFyY2ggZm9yICdBY3R1YWwgVG90YWwgVGltZScgd29yZCBpbiBy ZXN1bHQKKyAgICAgICAgY2FudmFzLmZpbmRfZWxlbWVudF9ieV94cGF0aCgi Ly8qW2NvbnRhaW5zKHN0cmluZygpLCAnQWN0dWFsIFRvdGFsIFRpbWUnKV0i KQorCisgICAgZGVmIF9xdWVyeV90b29sX2F1dG9fY29tbWl0X2Rpc2FibGVk KHNlbGYpOgorICAgICAgICB0YWJsZV9uYW1lID0gJ3F1ZXJ5X3Rvb2xfYXV0 b19jb21taXRfZGlzYWJsZWRfdGFibGUnCisgICAgICAgIHF1ZXJ5ID0gIiIi LS0gMS4gRGlzYWJsZSBhdXRvIGNvbW1pdC4KKy0tIDIuIENyZWF0ZSB0YWJs ZSBpbiBwdWJsaWMgc2NoZW1hLgorLS0gMy4gUk9MTEJBQ0sgdHJhbnNhY3Rp b24uCistLSA0LiBDaGVjayBpZiB0YWJsZSBpcyAqTk9UKiBjcmVhdGVkLgor Q1JFQVRFIFRBQkxFIHB1YmxpYy57fSgpOyIiIi5mb3JtYXQodGFibGVfbmFt ZSkKKyAgICAgICAgd2FpdCA9IFdlYkRyaXZlcldhaXQoc2VsZi5wYWdlLmRy aXZlciwgMTApCisKKyAgICAgICAgc2VsZi5wYWdlLmZpbGxfY29kZW1pcnJv cl9hcmVhX3dpdGgocXVlcnkpCisKKyAgICAgICAgc2VsZi5wYWdlLmZpbmRf YnlfaWQoImJ0bi1xdWVyeS1kcm9wZG93biIpLmNsaWNrKCkKKworICAgICAg ICBhdXRvX2NvbW1pdF9idG4gPSBzZWxmLnBhZ2UuZmluZF9ieV9pZCgiYnRu LWF1dG8tY29tbWl0IikKKworICAgICAgICBhdXRvX2NvbW1pdF9jaGVjayA9 IGF1dG9fY29tbWl0X2J0bi5maW5kX2VsZW1lbnRfYnlfdGFnX25hbWUoImki KQorCisgICAgICAgICMgaWYgYXV0byBjb21taXQgaXMgZW5hYmxlZCB0aGVu ICdpJyBlbGVtZW50IHdpbGwKKyAgICAgICAgIyBoYXZlICdhdXRvLWNvbW1p dCBmYSBmYS1jaGVjaycgY2xhc3NlcworICAgICAgICAjIGlmIGF1dG8gY29t bWl0IGlzIGRpc2FibGVkIHRoZW4gJ2knIGVsZW1lbnQgd2lsbAorICAgICAg ICAjIGhhdmUgJ2F1dG8tY29tbWl0IGZhIGZhLWNoZWNrIHZpc2liaWxpdHkt aGlkZGVuJyBjbGFzc2VzCisKKyAgICAgICAgaWYgJ2F1dG8tY29tbWl0IGZh IGZhLWNoZWNrJyA9PSBzdHIoYXV0b19jb21taXRfY2hlY2suZ2V0X2F0dHJp YnV0ZSgKKyAgICAgICAgICAgICAgICAnY2xhc3MnKSk6CisgICAgICAgICAg ICBhdXRvX2NvbW1pdF9idG4uY2xpY2soKQorCisgICAgICAgIHNlbGYucGFn ZS5maW5kX2J5X2lkKCJidG4tZmxhc2giKS5jbGljaygpCisgICAgICAgIHNl bGYucGFnZS53YWl0X2Zvcl9xdWVyeV90b29sX2xvYWRpbmdfaW5kaWNhdG9y X3RvX2Rpc2FwcGVhcigpCisgICAgICAgIHNlbGYucGFnZS5jbGlja190YWIo J01lc3NhZ2VzJykKKyAgICAgICAgc2VsZi5kcml2ZXIuZmluZF9lbGVtZW50 X2J5X3hwYXRoKAorICAgICAgICAgICAgJy8vZGl2W2NvbnRhaW5zKEBjbGFz cywgInNxbC1lZGl0b3ItbWVzc2FnZSIpIGFuZCBjb250YWlucyhzdHJpbmco KSwgIkNSRUFURSBUQUJMRSIpXScKKyAgICAgICAgKQorCisgICAgICAgIHNl bGYuX2NsZWFyX3F1ZXJ5X3Rvb2woKQorICAgICAgICBxdWVyeSA9ICIiIi0t IDEuIChEb25lKSBEaXNhYmxlIGF1dG8gY29tbWl0LgorLS0gMi4gKERvbmUp IENyZWF0ZSB0YWJsZSBpbiBwdWJsaWMgc2NoZW1hLgorLS0gMy4gUk9MTEJB Q0sgdHJhbnNhY3Rpb24uCistLSA0LiBDaGVjayBpZiB0YWJsZSBpcyAqTk9U KiBjcmVhdGVkLgorUk9MTEJBQ0s7IiIiCisgICAgICAgIHNlbGYucGFnZS5m aWxsX2NvZGVtaXJyb3JfYXJlYV93aXRoKHF1ZXJ5KQorICAgICAgICBzZWxm LnBhZ2UuZmluZF9ieV9pZCgiYnRuLWZsYXNoIikuY2xpY2soKQorICAgICAg ICBzZWxmLnBhZ2Uud2FpdF9mb3JfcXVlcnlfdG9vbF9sb2FkaW5nX2luZGlj YXRvcl90b19kaXNhcHBlYXIoKQorICAgICAgICBzZWxmLnBhZ2UuY2xpY2tf dGFiKCdNZXNzYWdlcycpCisgICAgICAgIHNlbGYuZHJpdmVyLmZpbmRfZWxl bWVudF9ieV94cGF0aCgKKyAgICAgICAgICAgICcvL2Rpdltjb250YWlucyhA Y2xhc3MsICJzcWwtZWRpdG9yLW1lc3NhZ2UiKSBhbmQgY29udGFpbnMoc3Ry aW5nKCksICJST0xMQkFDSyIpXScKKyAgICAgICAgKQorCisgICAgICAgIHNl bGYuX2NsZWFyX3F1ZXJ5X3Rvb2woKQorICAgICAgICBxdWVyeSA9ICIiIi0t IDEuIChEb25lKSBEaXNhYmxlIGF1dG8gY29tbWl0LgorLS0gMi4gKERvbmUp IENyZWF0ZSB0YWJsZSBpbiBwdWJsaWMgc2NoZW1hLgorLS0gMy4gKERvbmUp IFJPTExCQUNLIHRyYW5zYWN0aW9uLgorLS0gNC4gQ2hlY2sgaWYgdGFibGUg aXMgKk5PVCogY3JlYXRlZC4KK1NFTEVDVCByZWxuYW1lIEZST00gcGdfY2xh c3MgV0hFUkUgcmVsa2luZCBJTiAoJ3InLCdzJywndCcpIGFuZCByZWxuYW1l c3BhY2UgPSAyMjAwOjpvaWQ7IiIiCisgICAgICAgIHNlbGYucGFnZS5maWxs X2NvZGVtaXJyb3JfYXJlYV93aXRoKHF1ZXJ5KQorICAgICAgICBzZWxmLnBh Z2UuZmluZF9ieV9pZCgiYnRuLWZsYXNoIikuY2xpY2soKQorICAgICAgICBz ZWxmLnBhZ2Uud2FpdF9mb3JfcXVlcnlfdG9vbF9sb2FkaW5nX2luZGljYXRv cl90b19kaXNhcHBlYXIoKQorICAgICAgICBzZWxmLnBhZ2UuY2xpY2tfdGFi KCdEYXRhIE91dHB1dCcpCisgICAgICAgIGNhbnZhcyA9IHdhaXQudW50aWwo RUMucHJlc2VuY2Vfb2ZfZWxlbWVudF9sb2NhdGVkKAorICAgICAgICAgICAg KEJ5LkNTU19TRUxFQ1RPUiwgIiNkYXRhZ3JpZCAuc2xpY2stdmlld3BvcnQg LmdyaWQtY2FudmFzIikpKQorCisgICAgICAgIGVsID0gY2FudmFzLmZpbmRf ZWxlbWVudHNfYnlfeHBhdGgoIi8vZGl2W2NvbnRhaW5zKEBjbGFzcywgJ3Ns aWNrLWNlbGwnKSBhbmQgY29udGFpbnModGV4dCgpLCAne30nKV0iLmZvcm1h dCh0YWJsZV9uYW1lKSkKKworICAgICAgICBhc3NlcnQgbGVuKGVsKSA9PSAw LCAiVGFibGUgJ3t9JyBjcmVhdGVkIHdpdGggYXV0byBjb21taXQgZGlzYWJs ZWQgYW5kIHdpdGhvdXQgYW55IGV4cGxpY2l0IGNvbW1pdC4iLmZvcm1hdCh0 YWJsZV9uYW1lKQorCisgICAgZGVmIF9xdWVyeV90b29sX2F1dG9fY29tbWl0 X2VuYWJsZWQoc2VsZik6CisgICAgICAgIHRhYmxlX25hbWUgPSAncXVlcnlf dG9vbF9hdXRvX2NvbW1pdF9lbmFibGVkX3RhYmxlJworICAgICAgICBxdWVy eSA9ICIiIi0tIDEuIEVORCBhbnkgb3BlbiB0cmFuc2FjdGlvbi4KKy0tIDIu IEVuYWJsZSBhdXRvIGNvbW1pdC4KKy0tIDMuIENyZWF0ZSB0YWJsZSBpbiBw dWJsaWMgc2NoZW1hLgorLS0gNC4gUk9MTEJBQ0sgdHJhbnNhY3Rpb24KKy0t IDUuIENoZWNrIGlmIHRhYmxlIGlzIGNyZWF0ZWQgZXZlbnQgYWZ0ZXIgUk9M TEJBQ0suCitFTkQ7CitDUkVBVEUgVEFCTEUgcHVibGljLnt9KCk7IiIiLmZv cm1hdCh0YWJsZV9uYW1lKQorICAgICAgICB3YWl0ID0gV2ViRHJpdmVyV2Fp dChzZWxmLnBhZ2UuZHJpdmVyLCAxMCkKKworICAgICAgICBzZWxmLnBhZ2Uu ZmlsbF9jb2RlbWlycm9yX2FyZWFfd2l0aChxdWVyeSkKKworICAgICAgICBz ZWxmLnBhZ2UuZmluZF9ieV9pZCgiYnRuLXF1ZXJ5LWRyb3Bkb3duIikuY2xp Y2soKQorCisgICAgICAgIGF1dG9fY29tbWl0X2J0biA9IHNlbGYucGFnZS5m aW5kX2J5X2lkKCJidG4tYXV0by1jb21taXQiKQorCisgICAgICAgIGF1dG9f Y29tbWl0X2NoZWNrID0gYXV0b19jb21taXRfYnRuLmZpbmRfZWxlbWVudF9i eV90YWdfbmFtZSgiaSIpCisKKyAgICAgICAgIyBpZiBhdXRvIGNvbW1pdCBp cyBlbmFibGVkIHRoZW4gJ2knIGVsZW1lbnQgd2lsbAorICAgICAgICAjIGhh dmUgJ2F1dG8tY29tbWl0IGZhIGZhLWNoZWNrJyBjbGFzc2VzCisgICAgICAg ICMgaWYgYXV0byBjb21taXQgaXMgZGlzYWJsZWQgdGhlbiAnaScgZWxlbWVu dCB3aWxsCisgICAgICAgICMgaGF2ZSAnYXV0by1jb21taXQgZmEgZmEtY2hl Y2sgdmlzaWJpbGl0eS1oaWRkZW4nIGNsYXNzZXMKKworICAgICAgICBpZiAn YXV0by1jb21taXQgZmEgZmEtY2hlY2sgdmlzaWJpbGl0eS1oaWRkZW4nID09 IHN0cihhdXRvX2NvbW1pdF9jaGVjay5nZXRfYXR0cmlidXRlKAorICAgICAg ICAgICAgICAgICdjbGFzcycpKToKKyAgICAgICAgICAgIGF1dG9fY29tbWl0 X2J0bi5jbGljaygpCisgICAgICAgIHNlbGYucGFnZS5maW5kX2J5X2lkKCJi dG4tZmxhc2giKS5jbGljaygpCisgICAgICAgIHNlbGYucGFnZS53YWl0X2Zv cl9xdWVyeV90b29sX2xvYWRpbmdfaW5kaWNhdG9yX3RvX2Rpc2FwcGVhcigp CisgICAgICAgIHNlbGYucGFnZS5jbGlja190YWIoJ01lc3NhZ2VzJykKKyAg ICAgICAgc2VsZi5kcml2ZXIuZmluZF9lbGVtZW50X2J5X3hwYXRoKAorICAg ICAgICAgICAgJy8vZGl2W2NvbnRhaW5zKEBjbGFzcywgInNxbC1lZGl0b3It bWVzc2FnZSIpIGFuZCBjb250YWlucyhzdHJpbmcoKSwgIkNSRUFURSBUQUJM RSIpXScKKyAgICAgICAgKQorCisgICAgICAgIHNlbGYuX2NsZWFyX3F1ZXJ5 X3Rvb2woKQorICAgICAgICBxdWVyeSA9ICIiIi0tIDEuIChEb25lKSBFTkQg YW55IG9wZW4gdHJhbnNhY3Rpb24gaWYgYW55LgorLS0gMi4gKERvbmUpIEVu YWJsZSBhdXRvIGNvbW1pdC4KKy0tIDMuIChEb25lKSBDcmVhdGUgdGFibGUg aW4gcHVibGljIHNjaGVtYS4KKy0tIDQuIFJPTExCQUNLIHRyYW5zYWN0aW9u CistLSA1LiBDaGVjayBpZiB0YWJsZSBpcyBjcmVhdGVkIGV2ZW50IGFmdGVy IFJPTExCQUNLLgorUk9MTEJBQ0s7IiIiCisgICAgICAgIHNlbGYucGFnZS5m aWxsX2NvZGVtaXJyb3JfYXJlYV93aXRoKHF1ZXJ5KQorICAgICAgICBzZWxm LnBhZ2UuZmluZF9ieV9pZCgiYnRuLWZsYXNoIikuY2xpY2soKQorICAgICAg ICBzZWxmLnBhZ2Uud2FpdF9mb3JfcXVlcnlfdG9vbF9sb2FkaW5nX2luZGlj YXRvcl90b19kaXNhcHBlYXIoKQorICAgICAgICBzZWxmLnBhZ2UuY2xpY2tf dGFiKCdNZXNzYWdlcycpCisgICAgICAgIHNlbGYuZHJpdmVyLmZpbmRfZWxl bWVudF9ieV94cGF0aCgKKyAgICAgICAgICAgICcvL2Rpdltjb250YWlucyhA Y2xhc3MsICJzcWwtZWRpdG9yLW1lc3NhZ2UiKSBhbmQgY29udGFpbnMoc3Ry aW5nKCksICJST0xMQkFDSyIpXScKKyAgICAgICAgKQorCisgICAgICAgIHNl bGYuX2NsZWFyX3F1ZXJ5X3Rvb2woKQorICAgICAgICBxdWVyeSA9ICIiIi0t IDEuIChEb25lKSBFTkQgYW55IG9wZW4gdHJhbnNhY3Rpb24gaWYgYW55Lgor LS0gMi4gKERvbmUpIEVuYWJsZSBhdXRvIGNvbW1pdC4KKy0tIDMuIChEb25l KSBDcmVhdGUgdGFibGUgaW4gcHVibGljIHNjaGVtYS4KKy0tIDQuIChEb25l KSBST0xMQkFDSyB0cmFuc2FjdGlvbgorLS0gNS4gQ2hlY2sgaWYgdGFibGUg aXMgY3JlYXRlZCBldmVudCBhZnRlciBST0xMQkFDSy4KK1NFTEVDVCByZWxu YW1lIEZST00gcGdfY2xhc3MgV0hFUkUgcmVsa2luZCBJTiAoJ3InLCdzJywn dCcpIGFuZCByZWxuYW1lc3BhY2UgPSAyMjAwOjpvaWQ7IiIiCisgICAgICAg IHNlbGYucGFnZS5maWxsX2NvZGVtaXJyb3JfYXJlYV93aXRoKHF1ZXJ5KQor ICAgICAgICBzZWxmLnBhZ2UuZmluZF9ieV9pZCgiYnRuLWZsYXNoIikuY2xp Y2soKQorICAgICAgICBzZWxmLnBhZ2UuY2xpY2tfdGFiKCdEYXRhIE91dHB1 dCcpCisgICAgICAgIHNlbGYucGFnZS53YWl0X2Zvcl9xdWVyeV90b29sX2xv YWRpbmdfaW5kaWNhdG9yX3RvX2Rpc2FwcGVhcigpCisKKyAgICAgICAgY2Fu dmFzID0gd2FpdC51bnRpbChFQy5wcmVzZW5jZV9vZl9lbGVtZW50X2xvY2F0 ZWQoCisgICAgICAgICAgICAoQnkuQ1NTX1NFTEVDVE9SLCAiI2RhdGFncmlk IC5zbGljay12aWV3cG9ydCAuZ3JpZC1jYW52YXMiKSkpCisKKyAgICAgICAg ZWwgPSBjYW52YXMuZmluZF9lbGVtZW50c19ieV94cGF0aCgiLy9kaXZbY29u dGFpbnMoQGNsYXNzLCAnc2xpY2stY2VsbCcpIGFuZCBjb250YWlucyh0ZXh0 KCksICd7fScpXSIuZm9ybWF0KHRhYmxlX25hbWUpKQorCisgICAgICAgIGFz c2VydCBsZW4oZWwpICE9IDAsICJUYWJsZSAne30nIGlzIG5vdCBjcmVhdGVk IHdpdGggYXV0byBjb21taXQgZW5hYmxlZC4iLmZvcm1hdCh0YWJsZV9uYW1l KQorCisgICAgZGVmIF9xdWVyeV90b29sX2F1dG9fcm9sbGJhY2tfZW5hYmxl ZChzZWxmKToKKyAgICAgICAgdGFibGVfbmFtZSA9ICdxdWVyeV90b29sX2F1 dG9fcm9sbGJhY2tfZW5hYmxlZF90YWJsZScKKyAgICAgICAgcXVlcnkgPSAi IiItLSAxLiBFTkQgYW55IG9wZW4gdHJhbnNhY3Rpb24uCistLSAyLiBFbmFi bGUgYXV0byByb2xsYmFjayBhbmQgZGlzYWJsZSBhdXRvIGNvbW1pdC4KKy0t IDMuIENyZWF0ZSB0YWJsZSBpbiBwdWJsaWMgc2NoZW1hLgorLS0gNC4gR2Vu ZXJhdGUgZXJyb3IgaW4gdHJhbnNhY3Rpb24uCistLSA1LiBFTkQgdHJhbnNh Y3Rpb24uCistLSA2LiBDaGVjayBpZiB0YWJsZSBpcyAqTk9UKiBjcmVhdGVk IGFmdGVyIGVuZGluZyB0cmFuc2FjdGlvbi4KK0VORDsiIiIKKyAgICAgICAg c2VsZi5wYWdlLmZpbGxfY29kZW1pcnJvcl9hcmVhX3dpdGgocXVlcnkpCisK KyAgICAgICAgc2VsZi5wYWdlLmZpbmRfYnlfaWQoImJ0bi1mbGFzaCIpLmNs aWNrKCkKKyAgICAgICAgc2VsZi5wYWdlLndhaXRfZm9yX3F1ZXJ5X3Rvb2xf bG9hZGluZ19pbmRpY2F0b3JfdG9fZGlzYXBwZWFyKCkKKyAgICAgICAgc2Vs Zi5fY2xlYXJfcXVlcnlfdG9vbCgpCisKKyAgICAgICAgcXVlcnkgPSAiIiIt LSAxLiAoRG9uZSkgRU5EIGFueSBvcGVuIHRyYW5zYWN0aW9uLgorLS0gMi4g RW5hYmxlIGF1dG8gcm9sbGJhY2sgYW5kIGRpc2FibGUgYXV0byBjb21taXQu CistLSAzLiBDcmVhdGUgdGFibGUgaW4gcHVibGljIHNjaGVtYS4KKy0tIDQu IEdlbmVyYXRlIGVycm9yIGluIHRyYW5zYWN0aW9uLgorLS0gNS4gRU5EIHRy YW5zYWN0aW9uLgorLS0gNi4gQ2hlY2sgaWYgdGFibGUgaXMgKk5PVCogY3Jl YXRlZCBhZnRlciBlbmRpbmcgdHJhbnNhY3Rpb24uCitDUkVBVEUgVEFCTEUg cHVibGljLnt9KCk7IiIiLmZvcm1hdCh0YWJsZV9uYW1lKQorICAgICAgICB3 YWl0ID0gV2ViRHJpdmVyV2FpdChzZWxmLnBhZ2UuZHJpdmVyLCAxMCkKKwor ICAgICAgICBzZWxmLnBhZ2UuZmlsbF9jb2RlbWlycm9yX2FyZWFfd2l0aChx dWVyeSkKKworICAgICAgICBzZWxmLnBhZ2UuZmluZF9ieV9pZCgiYnRuLXF1 ZXJ5LWRyb3Bkb3duIikuY2xpY2soKQorCisgICAgICAgIGF1dG9fcm9sbGJh Y2tfYnRuID0gc2VsZi5wYWdlLmZpbmRfYnlfaWQoImJ0bi1hdXRvLXJvbGxi YWNrIikKKworICAgICAgICBhdXRvX3JvbGxiYWNrX2NoZWNrID0gYXV0b19y b2xsYmFja19idG4uZmluZF9lbGVtZW50X2J5X3RhZ19uYW1lKCJpIikKKwor ICAgICAgICAjIGlmIGF1dG8gcm9sbGJhY2sgaXMgZW5hYmxlZCB0aGVuICdp JyBlbGVtZW50IHdpbGwKKyAgICAgICAgIyBoYXZlICdhdXRvLXJvbGxiYWNr IGZhIGZhLWNoZWNrJyBjbGFzc2VzCisgICAgICAgICMgaWYgYXV0byByb2xs YmFjayBpcyBkaXNhYmxlZCB0aGVuICdpJyBlbGVtZW50IHdpbGwKKyAgICAg ICAgIyBoYXZlICdhdXRvLXJvbGxiYWNrIGZhIGZhLWNoZWNrIHZpc2liaWxp dHktaGlkZGVuJyBjbGFzc2VzCisKKyAgICAgICAgaWYgJ2F1dG8tcm9sbGJh Y2sgZmEgZmEtY2hlY2sgdmlzaWJpbGl0eS1oaWRkZW4nID09IHN0cihhdXRv X3JvbGxiYWNrX2NoZWNrLmdldF9hdHRyaWJ1dGUoCisgICAgICAgICAgICAg ICAgJ2NsYXNzJykpOgorICAgICAgICAgICAgYXV0b19yb2xsYmFja19idG4u Y2xpY2soKQorCisgICAgICAgIGF1dG9fY29tbWl0X2J0biA9IHNlbGYucGFn ZS5maW5kX2J5X2lkKCJidG4tYXV0by1jb21taXQiKQorCisgICAgICAgIGF1 dG9fY29tbWl0X2NoZWNrID0gYXV0b19jb21taXRfYnRuLmZpbmRfZWxlbWVu dF9ieV90YWdfbmFtZSgiaSIpCisKKyAgICAgICAgIyBpZiBhdXRvIGNvbW1p dCBpcyBlbmFibGVkIHRoZW4gJ2knIGVsZW1lbnQgd2lsbAorICAgICAgICAj IGhhdmUgJ2F1dG8tY29tbWl0IGZhIGZhLWNoZWNrJyBjbGFzc2VzCisgICAg ICAgICMgaWYgYXV0byBjb21taXQgaXMgZGlzYWJsZWQgdGhlbiAnaScgZWxl bWVudCB3aWxsCisgICAgICAgICMgaGF2ZSAnYXV0by1jb21taXQgZmEgZmEt Y2hlY2sgdmlzaWJpbGl0eS1oaWRkZW4nIGNsYXNzZXMKKworICAgICAgICBp ZiAnYXV0by1jb21taXQgZmEgZmEtY2hlY2snID09IHN0cihhdXRvX2NvbW1p dF9jaGVjay5nZXRfYXR0cmlidXRlKAorICAgICAgICAgICAgICAgICdjbGFz cycpKToKKyAgICAgICAgICAgIGF1dG9fY29tbWl0X2J0bi5jbGljaygpCisK KyAgICAgICAgc2VsZi5wYWdlLmZpbmRfYnlfaWQoImJ0bi1mbGFzaCIpLmNs aWNrKCkKKyAgICAgICAgc2VsZi5wYWdlLndhaXRfZm9yX3F1ZXJ5X3Rvb2xf bG9hZGluZ19pbmRpY2F0b3JfdG9fZGlzYXBwZWFyKCkKKyAgICAgICAgc2Vs Zi5wYWdlLmNsaWNrX3RhYignTWVzc2FnZXMnKQorICAgICAgICBzZWxmLmRy aXZlci5maW5kX2VsZW1lbnRfYnlfeHBhdGgoCisgICAgICAgICAgICAnLy9k aXZbY29udGFpbnMoQGNsYXNzLCAic3FsLWVkaXRvci1tZXNzYWdlIikgYW5k IGNvbnRhaW5zKHN0cmluZygpLCAiQ1JFQVRFIFRBQkxFIildJworICAgICAg ICApCisKKyAgICAgICAgc2VsZi5fY2xlYXJfcXVlcnlfdG9vbCgpCisgICAg ICAgIHF1ZXJ5ID0gIiIiLS0gMS4gKERvbmUpIEVORCBhbnkgb3BlbiB0cmFu c2FjdGlvbi4KKy0tIDIuIChEb25lKSBFbmFibGUgYXV0byByb2xsYmFjayBh bmQgZGlzYWJsZSBhdXRvIGNvbW1pdC4KKy0tIDMuIChEb25lKSBDcmVhdGUg dGFibGUgaW4gcHVibGljIHNjaGVtYS4KKy0tIDQuIEdlbmVyYXRlIGVycm9y IGluIHRyYW5zYWN0aW9uLgorLS0gNS4gRU5EIHRyYW5zYWN0aW9uLgorLS0g Ni4gQ2hlY2sgaWYgdGFibGUgaXMgKk5PVCogY3JlYXRlZCBhZnRlciBlbmRp bmcgdHJhbnNhY3Rpb24uCitTRUxFQ1QgMS8wOyIiIgorICAgICAgICBzZWxm LnBhZ2UuZmlsbF9jb2RlbWlycm9yX2FyZWFfd2l0aChxdWVyeSkKKyAgICAg ICAgc2VsZi5wYWdlLmZpbmRfYnlfaWQoImJ0bi1mbGFzaCIpLmNsaWNrKCkK KyAgICAgICAgc2VsZi5wYWdlLndhaXRfZm9yX3F1ZXJ5X3Rvb2xfbG9hZGlu Z19pbmRpY2F0b3JfdG9fZGlzYXBwZWFyKCkKKyAgICAgICAgc2VsZi5wYWdl LmNsaWNrX3RhYignTWVzc2FnZXMnKQorICAgICAgICBzZWxmLmRyaXZlci5m aW5kX2VsZW1lbnRfYnlfeHBhdGgoCisgICAgICAgICAgICAnLy9kaXZbY29u dGFpbnMoQGNsYXNzLCAic3FsLWVkaXRvci1tZXNzYWdlIikgYW5kIGNvbnRh aW5zKHN0cmluZygpLCAiZGl2aXNpb24gYnkgemVybyIpXScKKyAgICAgICAg KQorCisgICAgICAgIHNlbGYuX2NsZWFyX3F1ZXJ5X3Rvb2woKQorICAgICAg ICBxdWVyeSA9ICIiIi0tIDEuIChEb25lKSBFTkQgYW55IG9wZW4gdHJhbnNh Y3Rpb24uCistLSAyLiAoRG9uZSkgRW5hYmxlIGF1dG8gcm9sbGJhY2sgYW5k IGRpc2FibGUgYXV0byBjb21taXQuCistLSAzLiAoRG9uZSkgQ3JlYXRlIHRh YmxlIGluIHB1YmxpYyBzY2hlbWEuCistLSA0LiAoRG9uZSkgR2VuZXJhdGUg ZXJyb3IgaW4gdHJhbnNhY3Rpb24uCistLSA1LiBFTkQgdHJhbnNhY3Rpb24u CistLSA2LiBDaGVjayBpZiB0YWJsZSBpcyAqTk9UKiBjcmVhdGVkIGFmdGVy IGVuZGluZyB0cmFuc2FjdGlvbi4KK0VORDsiIiIKKworICAgICAgICBzZWxm LnBhZ2UuZmlsbF9jb2RlbWlycm9yX2FyZWFfd2l0aChxdWVyeSkKKyAgICAg ICAgc2VsZi5wYWdlLmZpbmRfYnlfaWQoImJ0bi1mbGFzaCIpLmNsaWNrKCkK KyAgICAgICAgc2VsZi5wYWdlLndhaXRfZm9yX3F1ZXJ5X3Rvb2xfbG9hZGlu Z19pbmRpY2F0b3JfdG9fZGlzYXBwZWFyKCkKKyAgICAgICAgc2VsZi5wYWdl LmNsaWNrX3RhYignTWVzc2FnZXMnKQorICAgICAgICBzZWxmLmRyaXZlci5m aW5kX2VsZW1lbnRfYnlfeHBhdGgoCisgICAgICAgICAgICAnLy9kaXZbY29u dGFpbnMoQGNsYXNzLCAic3FsLWVkaXRvci1tZXNzYWdlIikgYW5kIGNvbnRh aW5zKHN0cmluZygpLCAiUXVlcnkgcmV0dXJuZWQgc3VjY2Vzc2Z1bGx5Iild JworICAgICAgICApCisKKyAgICAgICAgc2VsZi5fY2xlYXJfcXVlcnlfdG9v bCgpCisgICAgICAgIHF1ZXJ5ID0gIiIiLS0gMS4gKERvbmUpIEVORCBhbnkg b3BlbiB0cmFuc2FjdGlvbi4KKy0tIDIuIChEb25lKSBFbmFibGUgYXV0byBy b2xsYmFjayBhbmQgZGlzYWJsZSBhdXRvIGNvbW1pdC4KKy0tIDMuIChEb25l KSBDcmVhdGUgdGFibGUgaW4gcHVibGljIHNjaGVtYS4KKy0tIDQuIChEb25l KSBHZW5lcmF0ZSBlcnJvciBpbiB0cmFuc2FjdGlvbi4KKy0tIDUuIChEb25l KSBFTkQgdHJhbnNhY3Rpb24uCistLSA2LiBDaGVjayBpZiB0YWJsZSBpcyAq Tk9UKiBjcmVhdGVkIGFmdGVyIGVuZGluZyB0cmFuc2FjdGlvbi4KK1NFTEVD VCByZWxuYW1lIEZST00gcGdfY2xhc3MgV0hFUkUgcmVsa2luZCBJTiAoJ3In LCdzJywndCcpIGFuZCByZWxuYW1lc3BhY2UgPSAyMjAwOjpvaWQ7IiIiCisg ICAgICAgIHNlbGYucGFnZS5maWxsX2NvZGVtaXJyb3JfYXJlYV93aXRoKHF1 ZXJ5KQorICAgICAgICBzZWxmLnBhZ2UuZmluZF9ieV9pZCgiYnRuLWZsYXNo IikuY2xpY2soKQorICAgICAgICBzZWxmLnBhZ2Uud2FpdF9mb3JfcXVlcnlf dG9vbF9sb2FkaW5nX2luZGljYXRvcl90b19kaXNhcHBlYXIoKQorICAgICAg ICBzZWxmLnBhZ2UuY2xpY2tfdGFiKCdEYXRhIE91dHB1dCcpCisgICAgICAg IGNhbnZhcyA9IHdhaXQudW50aWwoRUMucHJlc2VuY2Vfb2ZfZWxlbWVudF9s b2NhdGVkKAorICAgICAgICAgICAgKEJ5LkNTU19TRUxFQ1RPUiwgIiNkYXRh Z3JpZCAuc2xpY2stdmlld3BvcnQgLmdyaWQtY2FudmFzIikpKQorCisgICAg ICAgIGVsID0gY2FudmFzLmZpbmRfZWxlbWVudHNfYnlfeHBhdGgoIi8vZGl2 W2NvbnRhaW5zKEBjbGFzcywgJ3NsaWNrLWNlbGwnKSBhbmQgY29udGFpbnMo dGV4dCgpLCAne30nKV0iLmZvcm1hdCh0YWJsZV9uYW1lKSkKKworICAgICAg ICBhc3NlcnQgbGVuKGVsKSA9PSAwLCAiVGFibGUgJ3t9JyBjcmVhdGVkIGV2 ZW4gYWZ0ZXIgUk9MTEJBQ0sgZHVlIHRvIHNxbCBlcnJvci4iLmZvcm1hdCh0 YWJsZV9uYW1lKQorCisgICAgZGVmIF9xdWVyeV90b29sX2NhbmNlbF9xdWVy eShzZWxmKToKKyAgICAgICAgcXVlcnkgPSAiIiItLSAxLiBFTkQgYW55IG9w ZW4gdHJhbnNhY3Rpb24uCistLSAyLiBFbmFibGUgYXV0byBjb21taXQgYW5k IERpc2FibGUgYXV0byByb2xsYmFjay4KKy0tIDMuIEV4ZWN1dGUgbG9uZyBy dW5uaW5nIHF1ZXJ5LgorLS0gNC4gQ2FuY2VsIGxvbmcgcnVubmluZyBxdWVy eSBleGVjdXRpb24uCitFTkQ7CitTRUxFQ1QgMSwgcGdfc2xlZXAoMTApIiIi CisgICAgICAgIHNlbGYucGFnZS5maWxsX2NvZGVtaXJyb3JfYXJlYV93aXRo KHF1ZXJ5KQorCisgICAgICAgIHNlbGYucGFnZS5maW5kX2J5X2lkKCJidG4t cXVlcnktZHJvcGRvd24iKS5jbGljaygpCisKKyAgICAgICAgYXV0b19yb2xs YmFja19idG4gPSBzZWxmLnBhZ2UuZmluZF9ieV9pZCgiYnRuLWF1dG8tcm9s bGJhY2siKQorCisgICAgICAgIGF1dG9fcm9sbGJhY2tfY2hlY2sgPSBhdXRv X3JvbGxiYWNrX2J0bi5maW5kX2VsZW1lbnRfYnlfdGFnX25hbWUoImkiKQor CisgICAgICAgICMgaWYgYXV0byByb2xsYmFjayBpcyBlbmFibGVkIHRoZW4g J2knIGVsZW1lbnQgd2lsbAorICAgICAgICAjIGhhdmUgJ2F1dG8tcm9sbGJh Y2sgZmEgZmEtY2hlY2snIGNsYXNzZXMKKyAgICAgICAgIyBpZiBhdXRvIHJv bGxiYWNrIGlzIGRpc2FibGVkIHRoZW4gJ2knIGVsZW1lbnQgd2lsbAorICAg ICAgICAjIGhhdmUgJ2F1dG8tcm9sbGJhY2sgZmEgZmEtY2hlY2sgdmlzaWJp bGl0eS1oaWRkZW4nIGNsYXNzZXMKKworICAgICAgICBpZiAnYXV0by1yb2xs YmFjayBmYSBmYS1jaGVjaycgPT0gc3RyKGF1dG9fcm9sbGJhY2tfY2hlY2su Z2V0X2F0dHJpYnV0ZSgKKyAgICAgICAgICAgICAgICAnY2xhc3MnKSk6Cisg ICAgICAgICAgICBhdXRvX3JvbGxiYWNrX2J0bi5jbGljaygpCisKKyAgICAg ICAgYXV0b19jb21taXRfYnRuID0gc2VsZi5wYWdlLmZpbmRfYnlfaWQoImJ0 bi1hdXRvLWNvbW1pdCIpCisKKyAgICAgICAgYXV0b19jb21taXRfY2hlY2sg PSBhdXRvX2NvbW1pdF9idG4uZmluZF9lbGVtZW50X2J5X3RhZ19uYW1lKCJp IikKKworICAgICAgICAjIGlmIGF1dG8gY29tbWl0IGlzIGVuYWJsZWQgdGhl biAnaScgZWxlbWVudCB3aWxsCisgICAgICAgICMgaGF2ZSAnYXV0by1jb21t aXQgZmEgZmEtY2hlY2snIGNsYXNzZXMKKyAgICAgICAgIyBpZiBhdXRvIGNv bW1pdCBpcyBkaXNhYmxlZCB0aGVuICdpJyBlbGVtZW50IHdpbGwKKyAgICAg ICAgIyBoYXZlICdhdXRvLWNvbW1pdCBmYSBmYS1jaGVjayB2aXNpYmlsaXR5 LWhpZGRlbicgY2xhc3NlcworCisgICAgICAgIGlmICdhdXRvLWNvbW1pdCBm YSBmYS1jaGVjayB2aXNpYmlsaXR5LWhpZGRlbicgPT0gc3RyKGF1dG9fY29t bWl0X2NoZWNrLmdldF9hdHRyaWJ1dGUoCisgICAgICAgICAgICAgICAgJ2Ns YXNzJykpOgorICAgICAgICAgICAgYXV0b19jb21taXRfYnRuLmNsaWNrKCkK KworICAgICAgICBzZWxmLnBhZ2UuZmluZF9ieV9pZCgiYnRuLWZsYXNoIiku Y2xpY2soKQorICAgICAgICBzZWxmLmRyaXZlci5maW5kX2VsZW1lbnRfYnlf eHBhdGgoIi8vKltAaWQ9J2ZldGNoaW5nX2RhdGEnXSIpCisgICAgICAgIHNl bGYucGFnZS5maW5kX2J5X2lkKCJidG4tY2FuY2VsLXF1ZXJ5IikuY2xpY2so KQorICAgICAgICBzZWxmLnBhZ2Uud2FpdF9mb3JfcXVlcnlfdG9vbF9sb2Fk aW5nX2luZGljYXRvcl90b19kaXNhcHBlYXIoKQorICAgICAgICBzZWxmLnBh Z2UuY2xpY2tfdGFiKCdNZXNzYWdlcycpCisgICAgICAgIHNlbGYuZHJpdmVy LmZpbmRfZWxlbWVudF9ieV94cGF0aCgKKyAgICAgICAgICAgICcvL2Rpdltj b250YWlucyhAY2xhc3MsICJzcWwtZWRpdG9yLW1lc3NhZ2UiKSBhbmQgY29u dGFpbnMoc3RyaW5nKCksICJjYW5jZWxpbmcgc3RhdGVtZW50IGR1ZSB0byB1 c2VyIHJlcXVlc3QiKV0nCisgICAgICAgICkKZGlmZiAtLWdpdCBhL3dlYi9w Z2FkbWluL2ZlYXR1cmVfdGVzdHMveHNzX2NoZWNrc19wYW5lbHNfYW5kX3F1 ZXJ5X3Rvb2xfdGVzdC5weSBiL3dlYi9wZ2FkbWluL2ZlYXR1cmVfdGVzdHMv eHNzX2NoZWNrc19wYW5lbHNfYW5kX3F1ZXJ5X3Rvb2xfdGVzdC5weQppbmRl eCA0ZmQwNzgzLi5hMGRmNDRlIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9m ZWF0dXJlX3Rlc3RzL3hzc19jaGVja3NfcGFuZWxzX2FuZF9xdWVyeV90b29s X3Rlc3QucHkKKysrIGIvd2ViL3BnYWRtaW4vZmVhdHVyZV90ZXN0cy94c3Nf Y2hlY2tzX3BhbmVsc19hbmRfcXVlcnlfdG9vbF90ZXN0LnB5CkBAIC0xMCw2 ICsxMCw5IEBACiBmcm9tIHNlbGVuaXVtLndlYmRyaXZlciBpbXBvcnQgQWN0 aW9uQ2hhaW5zCiBmcm9tIHJlZ3Jlc3Npb24ucHl0aG9uX3Rlc3RfdXRpbHMg aW1wb3J0IHRlc3RfdXRpbHMKIGZyb20gcmVncmVzc2lvbi5mZWF0dXJlX3V0 aWxzLmJhc2VfZmVhdHVyZV90ZXN0IGltcG9ydCBCYXNlRmVhdHVyZVRlc3QK K2Zyb20gc2VsZW5pdW0ud2ViZHJpdmVyLnN1cHBvcnQudWkgaW1wb3J0IFdl YkRyaXZlcldhaXQKK2Zyb20gc2VsZW5pdW0ud2ViZHJpdmVyLnN1cHBvcnQg aW1wb3J0IGV4cGVjdGVkX2NvbmRpdGlvbnMgYXMgRUMKK2Zyb20gc2VsZW5p dW0ud2ViZHJpdmVyLmNvbW1vbi5ieSBpbXBvcnQgQnkKIGltcG9ydCB0aW1l CiAKIGNsYXNzIENoZWNrRm9yWHNzRmVhdHVyZVRlc3QoQmFzZUZlYXR1cmVU ZXN0KToKQEAgLTE1MiwxMSArMTU1LDE2IEBAIGNsYXNzIENoZWNrRm9yWHNz RmVhdHVyZVRlc3QoQmFzZUZlYXR1cmVUZXN0KToKICAgICAgICAgc2VsZi5w YWdlLmZpbGxfY29kZW1pcnJvcl9hcmVhX3dpdGgoInNlbGVjdCAnPGltZyBz cmM9XCJ4XCIgb25lcnJvcj1cImNvbnNvbGUubG9nKDEpXCI+JyIpCiAgICAg ICAgIHRpbWUuc2xlZXAoMSkKICAgICAgICAgc2VsZi5wYWdlLmZpbmRfYnlf aWQoImJ0bi1mbGFzaCIpLmNsaWNrKCkKLSAgICAgICAgdGltZS5zbGVlcCgy KQorICAgICAgICB3YWl0ID0gV2ViRHJpdmVyV2FpdChzZWxmLnBhZ2UuZHJp dmVyLCA1KQogCi0gICAgICAgIHNvdXJjZV9jb2RlID0gc2VsZi5wYWdlLmZp bmRfYnlfeHBhdGgoCi0gICAgICAgICAgICAiLy8qW0BpZD0nMCddLy8qW0Bp ZD0nZGF0YWdyaWQnXS9kaXZbNV0vZGl2L2RpdlsxXS9kaXZbMl0iCi0gICAg ICAgICkuZ2V0X2F0dHJpYnV0ZSgnaW5uZXJIVE1MJykKKyAgICAgICAgcmVz dWx0X3JvdyA9IHNlbGYucGFnZS5maW5kX2J5X3hwYXRoKAorICAgICAgICAg ICAgIi8vKltjb250YWlucyhAY2xhc3MsICd1aS13aWRnZXQtY29udGVudCcp IGFuZCBjb250YWlucyhAc3R5bGUsICd0b3A6MHB4JyldIgorICAgICAgICAp CisKKyAgICAgICAgY2VsbHMgPSByZXN1bHRfcm93LmZpbmRfZWxlbWVudHNf YnlfdGFnX25hbWUoJ2RpdicpCisKKyAgICAgICAgIyByZW1vdmUgZmlyc3Qg ZWxlbWVudCBhcyBpdCBpcyByb3cgbnVtYmVyLgorICAgICAgICBzb3VyY2Vf Y29kZSA9IGNlbGxzWzFdLmdldF9hdHRyaWJ1dGUoJ2lubmVySFRNTCcpCiAK ICAgICAgICAgc2VsZi5fY2hlY2tfZXNjYXBlZF9jaGFyYWN0ZXJzKAogICAg ICAgICAgICAgc291cmNlX2NvZGUsCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1p bi9zdGF0aWMvanMvc2VsZWN0aW9uL2NvbHVtbl9zZWxlY3Rvci5qcyBiL3dl Yi9wZ2FkbWluL3N0YXRpYy9qcy9zZWxlY3Rpb24vY29sdW1uX3NlbGVjdG9y LmpzCmluZGV4IDMwNWI0MzguLmYzY2I3MjcgMTAwNjQ0Ci0tLSBhL3dlYi9w Z2FkbWluL3N0YXRpYy9qcy9zZWxlY3Rpb24vY29sdW1uX3NlbGVjdG9yLmpz CisrKyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9zZWxlY3Rpb24vY29sdW1u X3NlbGVjdG9yLmpzCkBAIC00LDEzICs0LDE4IEBAIGRlZmluZShbCiAgICdz bGlja2dyaWQnLAogXSwgZnVuY3Rpb24gKCQsIFJhbmdlU2VsZWN0aW9uSGVs cGVyKSB7CiAgIHZhciBDb2x1bW5TZWxlY3RvciA9IGZ1bmN0aW9uICgpIHsK LSAgICB2YXIgU2xpY2sgPSB3aW5kb3cuU2xpY2s7Ci0gICAgdmFyIGdyaWRF dmVudEJ1cyA9IG5ldyBTbGljay5FdmVudEhhbmRsZXIoKTsKKyAgICB2YXIg U2xpY2sgPSB3aW5kb3cuU2xpY2ssCisgICAgICBncmlkRXZlbnRCdXMgPSBu ZXcgU2xpY2suRXZlbnRIYW5kbGVyKCksCisgICAgICBvbkJlZm9yZUNvbHVt blNlbGVjdEFsbCA9IG5ldyBTbGljay5FdmVudCgpLAorICAgICAgb25Db2x1 bW5TZWxlY3RBbGwgPSBuZXcgU2xpY2suRXZlbnQoKTsKIAogICAgIHZhciBp bml0ID0gZnVuY3Rpb24gKGdyaWQpIHsKICAgICAgIGdyaWRFdmVudEJ1cy5z dWJzY3JpYmUoZ3JpZC5vbkhlYWRlckNsaWNrLCBoYW5kbGVIZWFkZXJDbGlj ay5iaW5kKG51bGwsIGdyaWQpKTsKICAgICAgIGdyaWQuZ2V0U2VsZWN0aW9u TW9kZWwoKS5vblNlbGVjdGVkUmFuZ2VzQ2hhbmdlZAogICAgICAgICAuc3Vi c2NyaWJlKGhhbmRsZVNlbGVjdGVkUmFuZ2VzQ2hhbmdlZC5iaW5kKG51bGws IGdyaWQpKTsKKyAgICAgIG9uQ29sdW1uU2VsZWN0QWxsLnN1YnNjcmliZShm dW5jdGlvbihlLCBhcmdzKSB7CisgICAgICAgIHVwZGF0ZVJhbmdlcyhhcmdz LmdyaWQsIGFyZ3MuY29sdW1uLmlkKTsKKyAgICAgIH0pOwogICAgIH07CiAK ICAgICB2YXIgaGFuZGxlSGVhZGVyQ2xpY2sgPSBmdW5jdGlvbiAoZ3JpZCwg ZXZlbnQsIGFyZ3MpIHsKQEAgLTIxLDExICsyNiwyMCBAQCBkZWZpbmUoWwog ICAgICAgaWYgKGlzQ29sdW1uU2VsZWN0YWJsZShjb2x1bW5EZWZpbml0aW9u KSkgewogICAgICAgICB2YXIgJGNvbHVtbkhlYWRlciA9ICQoZXZlbnQudGFy Z2V0KTsKICAgICAgICAgaWYgKGhhc0NsaWNrZWRDaGlsZE9mQ29sdW1uSGVh ZGVyKGV2ZW50KSkgeworICAgICAgICAgIGlmICgkKGV2ZW50LnRhcmdldCku aGFzQ2xhc3MoJ3NsaWNrLXJlc2l6YWJsZS1oYW5kbGUnKSkgeworICAgICAg ICAgICAgcmV0dXJuOworICAgICAgICAgIH0KICAgICAgICAgICAkY29sdW1u SGVhZGVyID0gJChldmVudC50YXJnZXQpLnBhcmVudHMoJy5zbGljay1oZWFk ZXItY29sdW1uJyk7CiAgICAgICAgIH0KICAgICAgICAgJGNvbHVtbkhlYWRl ci50b2dnbGVDbGFzcygnc2VsZWN0ZWQnKTsKIAotICAgICAgICB1cGRhdGVS YW5nZXMoZ3JpZCwgY29sdW1uRGVmaW5pdGlvbi5pZCk7CisgICAgICAgIGlm ICgkY29sdW1uSGVhZGVyLmhhc0NsYXNzKCdzZWxlY3RlZCcpKSB7CisgICAg ICAgICAgb25CZWZvcmVDb2x1bW5TZWxlY3RBbGwubm90aWZ5KGFyZ3MsIGV2 ZW50KTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghKGV2ZW50LmlzUHJv cGFnYXRpb25TdG9wcGVkKCkgfHwgZXZlbnQuaXNJbW1lZGlhdGVQcm9wYWdh dGlvblN0b3BwZWQoKSkpIHsKKyAgICAgICAgICB1cGRhdGVSYW5nZXMoZ3Jp ZCwgY29sdW1uRGVmaW5pdGlvbi5pZCk7CisgICAgICAgIH0KICAgICAgIH0K ICAgICB9OwogCkBAIC0xMDcsNiArMTIxLDggQEAgZGVmaW5lKFsKICAgICAk LmV4dGVuZCh0aGlzLCB7CiAgICAgICAnaW5pdCc6IGluaXQsCiAgICAgICAn Z2V0Q29sdW1uRGVmaW5pdGlvbnMnOiBnZXRDb2x1bW5EZWZpbml0aW9ucywK KyAgICAgICdvbkJlZm9yZUNvbHVtblNlbGVjdEFsbCc6IG9uQmVmb3JlQ29s dW1uU2VsZWN0QWxsLAorICAgICAgJ29uQ29sdW1uU2VsZWN0QWxsJzogb25D b2x1bW5TZWxlY3RBbGwsCiAgICAgfSk7CiAgIH07CiAgIHJldHVybiBDb2x1 bW5TZWxlY3RvcjsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3N0YXRpYy9q cy9zZWxlY3Rpb24vY29weV9kYXRhLmpzIGIvd2ViL3BnYWRtaW4vc3RhdGlj L2pzL3NlbGVjdGlvbi9jb3B5X2RhdGEuanMKaW5kZXggYzIyNjMyMy4uMzUy NTk2NiAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vc3RhdGljL2pzL3NlbGVj dGlvbi9jb3B5X2RhdGEuanMKKysrIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pz L3NlbGVjdGlvbi9jb3B5X2RhdGEuanMKQEAgLTEyLDE5ICsxMiwxOSBAQCBm dW5jdGlvbiAoJCwgXywgY2xpcGJvYXJkLCBSYW5nZVNlbGVjdGlvbkhlbHBl ciwgcmFuZ2VCb3VuZGFyeU5hdmlnYXRvcikgewogICAgIHZhciBncmlkID0g c2VsZi5zbGlja2dyaWQ7CiAgICAgdmFyIGNvbHVtbkRlZmluaXRpb25zID0g Z3JpZC5nZXRDb2x1bW5zKCk7CiAgICAgdmFyIHNlbGVjdGVkUmFuZ2VzID0g Z3JpZC5nZXRTZWxlY3Rpb25Nb2RlbCgpLmdldFNlbGVjdGVkUmFuZ2VzKCk7 Ci0gICAgdmFyIGRhdGEgPSBncmlkLmdldERhdGEoKTsKKyAgICB2YXIgZGF0 YVZpZXcgPSBncmlkLmdldERhdGEoKTsKICAgICB2YXIgcm93cyA9IGdyaWQu Z2V0U2VsZWN0ZWRSb3dzKCk7CiAKICAgICBpZiAoUmFuZ2VTZWxlY3Rpb25I ZWxwZXIuYXJlQWxsUmFuZ2VzQ29tcGxldGVSb3dzKGdyaWQsIHNlbGVjdGVk UmFuZ2VzKSkgewogICAgICAgc2VsZi5jb3BpZWRfcm93cyA9IHJvd3MubWFw KGZ1bmN0aW9uIChyb3dJbmRleCkgewotICAgICAgICByZXR1cm4gZGF0YVty b3dJbmRleF07CisgICAgICAgIHJldHVybiBncmlkLmdldERhdGFJdGVtKHJv d0luZGV4KTsKICAgICAgIH0pOwogICAgICAgc2V0UGFzdGVSb3dCdXR0b25F bmFibGVtZW50KHNlbGYuY2FuX2VkaXQsIHRydWUpOwogICAgIH0gZWxzZSB7 CiAgICAgICBzZWxmLmNvcGllZF9yb3dzID0gW107CiAgICAgICBzZXRQYXN0 ZVJvd0J1dHRvbkVuYWJsZW1lbnQoc2VsZi5jYW5fZWRpdCwgZmFsc2UpOwog ICAgIH0KLSAgICB2YXIgY3N2VGV4dCA9IHJhbmdlQm91bmRhcnlOYXZpZ2F0 b3IucmFuZ2VzVG9Dc3YoZGF0YSwgY29sdW1uRGVmaW5pdGlvbnMsIHNlbGVj dGVkUmFuZ2VzKTsKKyAgICB2YXIgY3N2VGV4dCA9IHJhbmdlQm91bmRhcnlO YXZpZ2F0b3IucmFuZ2VzVG9Dc3YoZGF0YVZpZXcuZ2V0SXRlbXMoKSwgY29s dW1uRGVmaW5pdGlvbnMsIHNlbGVjdGVkUmFuZ2VzKTsKICAgICBpZiAoY3N2 VGV4dCkgewogICAgICAgY2xpcGJvYXJkLmNvcHlUZXh0VG9DbGlwYm9hcmQo Y3N2VGV4dCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vc3Rh dGljL2pzL3NlbGVjdGlvbi9ncmlkX3NlbGVjdG9yLmpzIGIvd2ViL3BnYWRt aW4vc3RhdGljL2pzL3NlbGVjdGlvbi9ncmlkX3NlbGVjdG9yLmpzCmluZGV4 IDI0ZmQ5ZDYuLmRkYmJlMjMgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3N0 YXRpYy9qcy9zZWxlY3Rpb24vZ3JpZF9zZWxlY3Rvci5qcworKysgYi93ZWIv cGdhZG1pbi9zdGF0aWMvanMvc2VsZWN0aW9uL2dyaWRfc2VsZWN0b3IuanMK QEAgLTYsMjEgKzYsMzEgQEAgZGVmaW5lKFsnanF1ZXJ5JywKICAgJ3NvdXJj ZXMvdXJsX2ZvcicsCiBdLCBmdW5jdGlvbiAoJCwgZ2V0dGV4dCwgQ29sdW1u U2VsZWN0b3IsIFJvd1NlbGVjdG9yLCBSYW5nZVNlbGVjdGlvbkhlbHBlciwg dXJsX2ZvcikgewogICB2YXIgR3JpZFNlbGVjdG9yID0gZnVuY3Rpb24gKGNv bHVtbkRlZmluaXRpb25zKSB7Ci0gICAgdmFyIHJvd1NlbGVjdG9yID0gbmV3 IFJvd1NlbGVjdG9yKGNvbHVtbkRlZmluaXRpb25zKTsKLSAgICB2YXIgY29s dW1uU2VsZWN0b3IgPSBuZXcgQ29sdW1uU2VsZWN0b3IoY29sdW1uRGVmaW5p dGlvbnMpOworICAgIHZhciBTbGljayA9IHdpbmRvdy5TbGljaywKKyAgICAg IHJvd1NlbGVjdG9yID0gbmV3IFJvd1NlbGVjdG9yKGNvbHVtbkRlZmluaXRp b25zKSwKKyAgICAgIGNvbHVtblNlbGVjdG9yID0gbmV3IENvbHVtblNlbGVj dG9yKGNvbHVtbkRlZmluaXRpb25zKSwKKyAgICAgIG9uQmVmb3JlR3JpZFNl bGVjdEFsbCA9IG5ldyBTbGljay5FdmVudCgpLAorICAgICAgb25HcmlkU2Vs ZWN0QWxsID0gbmV3IFNsaWNrLkV2ZW50KCksCisgICAgICBvbkJlZm9yZUdy aWRDb2x1bW5TZWxlY3RBbGwgPSBjb2x1bW5TZWxlY3Rvci5vbkJlZm9yZUNv bHVtblNlbGVjdEFsbCwKKyAgICAgIG9uR3JpZENvbHVtblNlbGVjdEFsbCA9 IGNvbHVtblNlbGVjdG9yLm9uQ29sdW1uU2VsZWN0QWxsOwogCiAgICAgdmFy IGluaXQgPSBmdW5jdGlvbiAoZ3JpZCkgewogICAgICAgdGhpcy5ncmlkID0g Z3JpZDsKICAgICAgIGdyaWQub25IZWFkZXJDbGljay5zdWJzY3JpYmUoZnVu Y3Rpb24gKGV2ZW50LCBldmVudEFyZ3VtZW50cykgewotICAgICAgICBpZiAo ZXZlbnRBcmd1bWVudHMuY29sdW1uLnNlbGVjdEFsbE9uQ2xpY2spIHsKLSAg ICAgICAgICB0b2dnbGVTZWxlY3RBbGwoZ3JpZCk7CisgICAgICAgIGlmIChl dmVudEFyZ3VtZW50cy5jb2x1bW4uc2VsZWN0QWxsT25DbGljayAmJiAhJChl dmVudC50YXJnZXQpLmhhc0NsYXNzKCdzbGljay1yZXNpemFibGUtaGFuZGxl JykpIHsKKyAgICAgICAgICB0b2dnbGVTZWxlY3RBbGwoZ3JpZCwgZXZlbnQs IGV2ZW50QXJndW1lbnRzKTsKICAgICAgICAgfQogICAgICAgfSk7CiAKICAg ICAgIGdyaWQuZ2V0U2VsZWN0aW9uTW9kZWwoKS5vblNlbGVjdGVkUmFuZ2Vz Q2hhbmdlZAotICAgICAgICAgIC5zdWJzY3JpYmUoaGFuZGxlU2VsZWN0ZWRS YW5nZXNDaGFuZ2VkLmJpbmQobnVsbCwgZ3JpZCkpOworICAgICAgICAuc3Vi c2NyaWJlKGhhbmRsZVNlbGVjdGVkUmFuZ2VzQ2hhbmdlZC5iaW5kKG51bGws IGdyaWQpKTsKKwogICAgICAgZ3JpZC5yZWdpc3RlclBsdWdpbihyb3dTZWxl Y3Rvcik7CiAgICAgICBncmlkLnJlZ2lzdGVyUGx1Z2luKGNvbHVtblNlbGVj dG9yKTsKKworICAgICAgb25HcmlkU2VsZWN0QWxsLnN1YnNjcmliZShmdW5j dGlvbihlLCBhcmdzKSB7CisgICAgICAgIFJhbmdlU2VsZWN0aW9uSGVscGVy LnNlbGVjdEFsbChhcmdzLmdyaWQpOworICAgICAgfSk7CiAgICAgfTsKIAog ICAgIHZhciBnZXRDb2x1bW5EZWZpbml0aW9ucyA9IGZ1bmN0aW9uIChjb2x1 bW5EZWZpbml0aW9ucykgewpAQCAtNDUsMTEgKzU1LDE0IEBAIGRlZmluZShb J2pxdWVyeScsCiAgICAgICB9CiAgICAgfQogCi0gICAgZnVuY3Rpb24gdG9n Z2xlU2VsZWN0QWxsKGdyaWQpIHsKKyAgICBmdW5jdGlvbiB0b2dnbGVTZWxl Y3RBbGwoZ3JpZCwgZXZlbnQsIGV2ZW50QXJndW1lbnRzKSB7CiAgICAgICBp ZiAoUmFuZ2VTZWxlY3Rpb25IZWxwZXIuaXNFbnRpcmVHcmlkU2VsZWN0ZWQo Z3JpZCkpIHsKICAgICAgICAgc2VsZWN0Tm9uZShncmlkKTsKICAgICAgIH0g ZWxzZSB7Ci0gICAgICAgIFJhbmdlU2VsZWN0aW9uSGVscGVyLnNlbGVjdEFs bChncmlkKTsKKyAgICAgICAgb25CZWZvcmVHcmlkU2VsZWN0QWxsLm5vdGlm eShldmVudEFyZ3VtZW50cywgZXZlbnQpOworICAgICAgICBpZiAoIShldmVu dC5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpIHx8IGV2ZW50LmlzSW1tZWRpYXRl UHJvcGFnYXRpb25TdG9wcGVkKCkpKSB7CisgICAgICAgICAgUmFuZ2VTZWxl Y3Rpb25IZWxwZXIuc2VsZWN0QWxsKGdyaWQpOworICAgICAgICB9CiAgICAg ICB9CiAgICAgfQogCkBAIC02MSw2ICs3NCwxMCBAQCBkZWZpbmUoWydqcXVl cnknLAogICAgICQuZXh0ZW5kKHRoaXMsIHsKICAgICAgICdpbml0JzogaW5p dCwKICAgICAgICdnZXRDb2x1bW5EZWZpbml0aW9ucyc6IGdldENvbHVtbkRl ZmluaXRpb25zLAorICAgICAgJ29uQmVmb3JlR3JpZFNlbGVjdEFsbCc6IG9u QmVmb3JlR3JpZFNlbGVjdEFsbCwKKyAgICAgICdvbkdyaWRTZWxlY3RBbGwn OiBvbkdyaWRTZWxlY3RBbGwsCisgICAgICAnb25CZWZvcmVHcmlkQ29sdW1u U2VsZWN0QWxsJzogb25CZWZvcmVHcmlkQ29sdW1uU2VsZWN0QWxsLAorICAg ICAgJ29uR3JpZENvbHVtblNlbGVjdEFsbCc6IG9uR3JpZENvbHVtblNlbGVj dEFsbCwKICAgICB9KTsKICAgfTsKIApkaWZmIC0tZ2l0IGEvd2ViL3BnYWRt aW4vc3RhdGljL2pzL3NlbGVjdGlvbi9yYW5nZV9ib3VuZGFyeV9uYXZpZ2F0 b3IuanMgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvc2VsZWN0aW9uL3Jhbmdl X2JvdW5kYXJ5X25hdmlnYXRvci5qcwppbmRleCA4MDNmNzVhLi4yNzRiNjIx IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9zdGF0aWMvanMvc2VsZWN0aW9u L3JhbmdlX2JvdW5kYXJ5X25hdmlnYXRvci5qcworKysgYi93ZWIvcGdhZG1p bi9zdGF0aWMvanMvc2VsZWN0aW9uL3JhbmdlX2JvdW5kYXJ5X25hdmlnYXRv ci5qcwpAQCAtNTgsNiArNTgsNyBAQCBmdW5jdGlvbiAoUmFuZ2VTZWxlY3Rp b25IZWxwZXIpIHsKICAgICB9LAogCiAgICAgcmFuZ2VzVG9Dc3Y6IGZ1bmN0 aW9uIChkYXRhLCBjb2x1bW5EZWZpbml0aW9ucywgc2VsZWN0ZWRSYW5nZXMp IHsKKwogICAgICAgdmFyIHJvd1JhbmdlQm91bmRzID0gc2VsZWN0ZWRSYW5n ZXMubWFwKGZ1bmN0aW9uIChyYW5nZSkgewogICAgICAgICByZXR1cm4gW3Jh bmdlLmZyb21Sb3csIHJhbmdlLnRvUm93XTsKICAgICAgIH0pOwpAQCAtNzIs NiArNzMsNyBAQCBmdW5jdGlvbiAoUmFuZ2VTZWxlY3Rpb25IZWxwZXIpIHsK ICAgICAgIHZhciBjc3ZSb3dzID0gdGhpcy5tYXBPdmVyMkRBcnJheShyb3dS YW5nZUJvdW5kcywgY29sUmFuZ2VCb3VuZHMsIHRoaXMuY3N2Q2VsbC5iaW5k KHRoaXMsIGRhdGEsIGNvbHVtbkRlZmluaXRpb25zKSwgZnVuY3Rpb24gKHJv d0RhdGEpIHsKICAgICAgICAgcmV0dXJuIHJvd0RhdGEuam9pbignLCcpOwog ICAgICAgfSk7CisKICAgICAgIHJldHVybiBjc3ZSb3dzLmpvaW4oJ1xuJyk7 CiAgICAgfSwKIApAQCAtMTAxLDcgKzEwMyw3IEBAIGZ1bmN0aW9uIChSYW5n ZVNlbGVjdGlvbkhlbHBlcikgewogICAgIH0sCiAKICAgICBjc3ZDZWxsOiBm dW5jdGlvbiAoZGF0YSwgY29sdW1uRGVmaW5pdGlvbnMsIHJvd0lkLCBjb2xJ ZCkgewotICAgICAgdmFyIHZhbCA9IGRhdGFbcm93SWRdW2NvbHVtbkRlZmlu aXRpb25zW2NvbElkXS5wb3NdOworICAgICAgdmFyIHZhbCA9IGRhdGFbcm93 SWRdW2NvbHVtbkRlZmluaXRpb25zW2NvbElkXS5maWVsZF07CiAKICAgICAg IGlmICh2YWwgJiYgXy5pc09iamVjdCh2YWwpKSB7CiAgICAgICAgIHZhbCA9 ICdcJycgKyBKU09OLnN0cmluZ2lmeSh2YWwpICsgJ1wnJzsKZGlmZiAtLWdp dCBhL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9zZWxlY3Rpb24vcm93X3NlbGVj dG9yLmpzIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL3NlbGVjdGlvbi9yb3df c2VsZWN0b3IuanMKaW5kZXggMjM2ZWQ2Mi4uNTlkMmZhMiAxMDA2NDQKLS0t IGEvd2ViL3BnYWRtaW4vc3RhdGljL2pzL3NlbGVjdGlvbi9yb3dfc2VsZWN0 b3IuanMKKysrIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL3NlbGVjdGlvbi9y b3dfc2VsZWN0b3IuanMKQEAgLTgyLDcgKzgyLDggQEAgZGVmaW5lKFsKICAg ICAgICAgZm9ybWF0dGVyOiBmdW5jdGlvbiAocm93SW5kZXgpIHsKICAgICAg ICAgICByZXR1cm4gJzxzcGFuICcgKwogICAgICAgICAgICAgJ2RhdGEtcm93 PSInICsgcm93SW5kZXggKyAnIiAnICsKLSAgICAgICAgICAgICdkYXRhLWNl bGwtdHlwZT0icm93LWhlYWRlci1zZWxlY3RvciIvPic7CisgICAgICAgICAg ICAnZGF0YS1jZWxsLXR5cGU9InJvdy1oZWFkZXItc2VsZWN0b3IiPicgKwor ICAgICAgICAgICAgKHJvd0luZGV4KzEpICsgJzwvc3Bhbj4nOwogICAgICAg ICB9LAogICAgICAgICB3aWR0aDogMzAsCiAgICAgICB9KTsKZGlmZiAtLWdp dCBhL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9zZWxlY3Rpb24vc2V0X3N0YWdl ZF9yb3dzLmpzIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL3NlbGVjdGlvbi9z ZXRfc3RhZ2VkX3Jvd3MuanMKaW5kZXggNDY5NzdlMy4uZTdhNTI5YyAxMDA2 NDQKLS0tIGEvd2ViL3BnYWRtaW4vc3RhdGljL2pzL3NlbGVjdGlvbi9zZXRf c3RhZ2VkX3Jvd3MuanMKKysrIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL3Nl bGVjdGlvbi9zZXRfc3RhZ2VkX3Jvd3MuanMKQEAgLTIyLDUzICsyMiw0NCBA QCBkZWZpbmUoCiAgICAgICAkKHNlbGVjdG9yKS5wcm9wKCdkaXNhYmxlZCcs IGZhbHNlKTsKICAgICB9CiAKLSAgICBmdW5jdGlvbiBnZXRSb3dQcmltYXJ5 S2V5VmFsdWVzVG9TdGFnZShzZWxlY3RlZFJvd3MsIHByaW1hcnlLZXlDb2x1 bW5JbmRpY2VzLCBncmlkRGF0YSkgeworICAgIGZ1bmN0aW9uIGdldFJvd1By aW1hcnlLZXlWYWx1ZXNUb1N0YWdlKHNlbGVjdGVkUm93cywgcHJpbWFyeUtl eXMsIGRhdGFWaWV3LCBjbGllbnRfcHJpbWFyeV9rZXkpIHsKICAgICAgIHJl dHVybiBfLnJlZHVjZShzZWxlY3RlZFJvd3MsIGZ1bmN0aW9uIChwcmltYXJ5 S2V5VmFsdWVzVG9TdGFnZSwgZGF0YUdyaWRSb3dJbmRleCkgewotICAgICAg ICB2YXIgZ3JpZFJvdyA9IGdyaWREYXRhW2RhdGFHcmlkUm93SW5kZXhdOwot Ci0gICAgICAgIGlmIChpc1Jvd01pc3NpbmdQcmltYXJ5S2V5cyhncmlkUm93 LCBwcmltYXJ5S2V5Q29sdW1uSW5kaWNlcykpIHsKKyAgICAgICAgdmFyIGdy aWRSb3cgPSBkYXRhVmlldy5nZXRJdGVtKGRhdGFHcmlkUm93SW5kZXgpOwor ICAgICAgICBpZiAoaXNSb3dNaXNzaW5nUHJpbWFyeUtleXMoZ3JpZFJvdywg cHJpbWFyeUtleXMpKSB7CiAgICAgICAgICAgcmV0dXJuIHByaW1hcnlLZXlW YWx1ZXNUb1N0YWdlOwogICAgICAgICB9Ci0KLSAgICAgICAgdmFyIHRlbXBQ SyA9IGdyaWRSb3cuX190ZW1wX1BLOwotICAgICAgICBwcmltYXJ5S2V5VmFs dWVzVG9TdGFnZVt0ZW1wUEtdID0gZ2V0U2luZ2xlUm93UHJpbWFyeUtleVZh bHVlVG9TdGFnZShwcmltYXJ5S2V5Q29sdW1uSW5kaWNlcywgZ3JpZFJvdyk7 Ci0KKyAgICAgICAgdmFyIHRlbXBQSyA9IGdyaWRSb3dbY2xpZW50X3ByaW1h cnlfa2V5XTsKKyAgICAgICAgcHJpbWFyeUtleVZhbHVlc1RvU3RhZ2VbdGVt cFBLXSA9IGdldFNpbmdsZVJvd1ByaW1hcnlLZXlWYWx1ZVRvU3RhZ2UocHJp bWFyeUtleXMsIGdyaWRSb3cpOwogICAgICAgICByZXR1cm4gcHJpbWFyeUtl eVZhbHVlc1RvU3RhZ2U7CiAgICAgICB9LCB7fSk7CiAgICAgfQogCi0gICAg ZnVuY3Rpb24gaXNSb3dNaXNzaW5nUHJpbWFyeUtleXMoZ3JpZFJvdywgcHJp bWFyeUtleUNvbHVtbkluZGljZXMpIHsKKyAgICBmdW5jdGlvbiBpc1Jvd01p c3NpbmdQcmltYXJ5S2V5cyhncmlkUm93LCBwcmltYXJ5S2V5cykgewogICAg ICAgaWYgKF8uaXNVbmRlZmluZWQoZ3JpZFJvdykpIHsKICAgICAgICAgcmV0 dXJuIHRydWU7CiAgICAgICB9CiAKICAgICAgIHJldHVybiAhXy5pc1VuZGVm aW5lZCgKLSAgICAgICAgXy5maW5kKHByaW1hcnlLZXlDb2x1bW5JbmRpY2Vz LCBmdW5jdGlvbiAocGtJbmRleCkgewotICAgICAgICAgIHJldHVybiBfLmlz VW5kZWZpbmVkKGdyaWRSb3dbcGtJbmRleF0pOworICAgICAgICBfLmZpbmQo cHJpbWFyeUtleXMgLCBmdW5jdGlvbiAocGspIHsKKyAgICAgICAgICByZXR1 cm4gXy5pc1VuZGVmaW5lZChncmlkUm93W3BrXSk7CiAgICAgICAgIH0pCiAg ICAgICApOwogICAgIH0KIAotICAgIGZ1bmN0aW9uIGdldFNpbmdsZVJvd1By aW1hcnlLZXlWYWx1ZVRvU3RhZ2UocHJpbWFyeUtleUNvbHVtbkluZGljZXMs IGdyaWRSb3cpIHsKKyAgICBmdW5jdGlvbiBnZXRTaW5nbGVSb3dQcmltYXJ5 S2V5VmFsdWVUb1N0YWdlKHByaW1hcnlLZXlzLCBncmlkUm93KSB7CiAgICAg ICB2YXIgcm93VG9TdGFnZSA9IHt9OwotICAgICAgaWYgKHByaW1hcnlLZXlD b2x1bW5JbmRpY2VzLmxlbmd0aCkgewotICAgICAgICBfLmVhY2goXy5rZXlz KGdyaWRSb3cpLCBmdW5jdGlvbiAoY29sdW1uUG9zKSB7Ci0gICAgICAgICAg aWYgKF8uY29udGFpbnMocHJpbWFyeUtleUNvbHVtbkluZGljZXMsIE51bWJl cihjb2x1bW5Qb3MpKSkKLSAgICAgICAgICAgIHJvd1RvU3RhZ2VbY29sdW1u UG9zXSA9IGdyaWRSb3dbY29sdW1uUG9zXTsKKyAgICAgIGlmIChwcmltYXJ5 S2V5cyAmJiBwcmltYXJ5S2V5cy5sZW5ndGgpIHsKKyAgICAgICAgXy5lYWNo KF8ua2V5cyhncmlkUm93KSwgZnVuY3Rpb24gKGNvbHVtbk5hbWVzKSB7Cisg ICAgICAgICAgaWYgKF8uY29udGFpbnMocHJpbWFyeUtleXMsIGNvbHVtbk5h bWVzKSkKKyAgICAgICAgICAgIHJvd1RvU3RhZ2VbY29sdW1uTmFtZXNdID0g Z3JpZFJvd1tjb2x1bW5OYW1lc107CiAgICAgICAgIH0pOwogICAgICAgfQog ICAgICAgcmV0dXJuIHJvd1RvU3RhZ2U7CiAgICAgfQogCiAgICAgZnVuY3Rp b24gZ2V0UHJpbWFyeUtleXNGb3JTZWxlY3RlZFJvd3Moc2VsZiwgc2VsZWN0 ZWRSb3dzKSB7Ci0gICAgICB2YXIgcHJpbWFyeUtleUNvbHVtbkluZGljZXMg PSBfLm1hcChfLmtleXMoc2VsZi5rZXlzKSwgZnVuY3Rpb24gKGNvbHVtbk5h bWUpIHsKLSAgICAgICAgdmFyIGNvbHVtbkluZm8gPSBfLmZpbmRXaGVyZShz ZWxmLmNvbHVtbnMsIHtuYW1lOiBjb2x1bW5OYW1lfSk7Ci0gICAgICAgIHJl dHVybiBjb2x1bW5JbmZvWydwb3MnXTsKLSAgICAgIH0pOwotCi0gICAgICB2 YXIgZ3JpZERhdGEgPSBzZWxmLmdyaWQuZ2V0RGF0YSgpOwotICAgICAgdmFy IHN0YWdlZFJvd3MgPSBnZXRSb3dQcmltYXJ5S2V5VmFsdWVzVG9TdGFnZShz ZWxlY3RlZFJvd3MsIHByaW1hcnlLZXlDb2x1bW5JbmRpY2VzLCBncmlkRGF0 YSk7Ci0KKyAgICAgIHZhciBkYXRhVmlldyA9IHNlbGYuZ3JpZC5nZXREYXRh KCk7CisgICAgICB2YXIgc3RhZ2VkUm93cyA9IGdldFJvd1ByaW1hcnlLZXlW YWx1ZXNUb1N0YWdlKHNlbGVjdGVkUm93cywgXy5rZXlzKHNlbGYua2V5cyks IGRhdGFWaWV3LCBzZWxmLmNsaWVudF9wcmltYXJ5X2tleSk7CiAgICAgICBy ZXR1cm4gc3RhZ2VkUm93czsKICAgICB9CiAKZGlmZiAtLWdpdCBhL3dlYi9w Z2FkbWluL3N0YXRpYy9qcy9zbGlja2dyaWQvc2xpY2sucGdhZG1pbi5lZGl0 b3JzLmpzIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL3NsaWNrZ3JpZC9zbGlj ay5wZ2FkbWluLmVkaXRvcnMuanMKaW5kZXggZjJkYWJlMC4uMTViNWZlOSAx MDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vc3RhdGljL2pzL3NsaWNrZ3JpZC9z bGljay5wZ2FkbWluLmVkaXRvcnMuanMKKysrIGIvd2ViL3BnYWRtaW4vc3Rh dGljL2pzL3NsaWNrZ3JpZC9zbGljay5wZ2FkbWluLmVkaXRvcnMuanMKQEAg LTc2LDE4ICs3NiwxOCBAQAogICAgICAgICAgIGxhc3RfdmFsdWUgPSAoY29s dW1uX3R5cGUgPT09ICdudW1iZXInKSA/CiAgICAgICAgICAgICAgICAgICAg ICAgICAoXy5pc0VtcHR5KGxhc3RfdmFsdWUpIHx8IGxhc3RfdmFsdWUpIDog bGFzdF92YWx1ZTsKIAotICAgICAgaXRlbVthcmdzLmNvbHVtbi5wb3NdID0g c3RhdGU7CisgICAgICBpdGVtW2FyZ3MuY29sdW1uLmZpZWxkXSA9IHN0YXRl OwogICAgICAgaWYgKGxhc3RfdmFsdWUgJiYgXy5pc051bGwoc3RhdGUpICYm CiAgICAgICAgICAgKF8uaXNVbmRlZmluZWQoZ3JpZC5jb3BpZWRfcm93c1ty b3ddKSB8fAogICAgICAgICAgIF8uaXNVbmRlZmluZWQoZ3JpZC5jb3BpZWRf cm93c1tyb3ddW2NlbGxdKSkKICAgICAgICkgewotICAgICAgICBpdGVtW2Fy Z3MuY29sdW1uLnBvc10gPSB1bmRlZmluZWQ7CisgICAgICAgIGl0ZW1bYXJn cy5jb2x1bW4uZmllbGRdID0gdW5kZWZpbmVkOwogICAgICAgICBpZiAoZ3Jp ZC5jb3BpZWRfcm93c1tyb3ddID09IHVuZGVmaW5lZCkgZ3JpZC5jb3BpZWRf cm93c1tyb3ddID0gW107CiAgICAgICAgIGdyaWQuY29waWVkX3Jvd3Nbcm93 XVtjZWxsXSA9IDE7CiAgICAgICB9CiAgICAgfQogICAgIGVsc2UgewotICAg ICAgaXRlbVthcmdzLmNvbHVtbi5wb3NdID0gc3RhdGU7CisgICAgICBpdGVt W2FyZ3MuY29sdW1uLmZpZWxkXSA9IHN0YXRlOwogICAgIH0KICAgfQogCkBA IC0xODksMTQgKzE4OSwxNCBAQAogICAgIHRoaXMubG9hZFZhbHVlID0gZnVu Y3Rpb24gKGl0ZW0pIHsKICAgICAgIHZhciBjb2wgPSBhcmdzLmNvbHVtbjsK IAotICAgICAgaWYgKF8uaXNVbmRlZmluZWQoaXRlbVthcmdzLmNvbHVtbi5w b3NdKSAmJiBjb2wuaGFzX2RlZmF1bHRfdmFsKSB7CisgICAgICBpZiAoXy5p c1VuZGVmaW5lZChpdGVtW2FyZ3MuY29sdW1uLmZpZWxkXSkgJiYgY29sLmhh c19kZWZhdWx0X3ZhbCkgewogICAgICAgICAkaW5wdXQudmFsKGRlZmF1bHRW YWx1ZSA9ICIiKTsKICAgICAgIH0KLSAgICAgIGVsc2UgaWYgKGl0ZW1bYXJn cy5jb2x1bW4ucG9zXSA9PT0gIiIpIHsKKyAgICAgIGVsc2UgaWYgKGl0ZW1b YXJncy5jb2x1bW4uZmllbGRdID09PSAiIikgewogICAgICAgICAkaW5wdXQu dmFsKGRlZmF1bHRWYWx1ZSA9ICInJyIpOwogICAgICAgfQogICAgICAgZWxz ZSB7Ci0gICAgICAgICRpbnB1dC52YWwoZGVmYXVsdFZhbHVlID0gaXRlbVth cmdzLmNvbHVtbi5wb3NdKTsKKyAgICAgICAgJGlucHV0LnZhbChkZWZhdWx0 VmFsdWUgPSBpdGVtW2FyZ3MuY29sdW1uLmZpZWxkXSk7CiAgICAgICAgICRp bnB1dC5zZWxlY3QoKTsKICAgICAgIH0KICAgICB9OwpAQCAtMzIzLDcgKzMy Myw3IEBACiAgICAgfTsKIAogICAgIHRoaXMubG9hZFZhbHVlID0gZnVuY3Rp b24gKGl0ZW0pIHsKLSAgICAgIHZhciBkYXRhID0gZGVmYXVsdFZhbHVlID0g aXRlbVthcmdzLmNvbHVtbi5wb3NdOworICAgICAgdmFyIGRhdGEgPSBkZWZh dWx0VmFsdWUgPSBpdGVtW2FyZ3MuY29sdW1uLmZpZWxkXTsKICAgICAgIGlm IChkYXRhICYmIHR5cGVvZiBkYXRhID09PSAib2JqZWN0IiAmJiAhQXJyYXku aXNBcnJheShkYXRhKSkgewogICAgICAgICBkYXRhID0gSlNPTi5zdHJpbmdp ZnkoZGF0YSk7CiAgICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoZGF0 YSkpIHsKQEAgLTQ0Myw3ICs0NDMsNyBAQAogICAgIH07CiAKICAgICB0aGlz LmxvYWRWYWx1ZSA9IGZ1bmN0aW9uIChpdGVtKSB7Ci0gICAgICAkaW5wdXQu dmFsKGRlZmF1bHRWYWx1ZSA9IGl0ZW1bYXJncy5jb2x1bW4ucG9zXSk7Cisg ICAgICAkaW5wdXQudmFsKGRlZmF1bHRWYWx1ZSA9IGl0ZW1bYXJncy5jb2x1 bW4uZmllbGRdKTsKICAgICAgICRpbnB1dC5zZWxlY3QoKTsKICAgICB9Owog CkBAIC00NTIsNyArNDUyLDcgQEAKICAgICB9OwogCiAgICAgdGhpcy5hcHBs eVZhbHVlID0gZnVuY3Rpb24gKGl0ZW0sIHN0YXRlKSB7Ci0gICAgICBpdGVt W2FyZ3MuY29sdW1uLnBvc10gPSBzdGF0ZTsKKyAgICAgIGl0ZW1bYXJncy5j b2x1bW4uZmllbGRdID0gc3RhdGU7CiAgICAgfTsKIAogICAgIHRoaXMuaXNW YWx1ZUNoYW5nZWQgPSBmdW5jdGlvbiAoKSB7CkBAIC01MzEsMTMgKzUzMSwx MyBAQAogICAgIH07CiAKICAgICB0aGlzLmxvYWRWYWx1ZSA9IGZ1bmN0aW9u IChpdGVtKSB7Ci0gICAgICBkZWZhdWx0VmFsdWUgPSBpdGVtW2FyZ3MuY29s dW1uLnBvc107Ci0gICAgICBpZiAoXy5pc051bGwoZGVmYXVsdFZhbHVlKXx8 IF8uaXNVbmRlZmluZWQoZGVmYXVsdFZhbHVlKSkgeworICAgICAgZGVmYXVs dFZhbHVlID0gaXRlbVthcmdzLmNvbHVtbi5maWVsZF07CisgICAgICBpZiAo Xy5pc051bGwoZGVmYXVsdFZhbHVlKXx8Xy5pc1VuZGVmaW5lZChkZWZhdWx0 VmFsdWUpKSB7CiAgICAgICAgICRzZWxlY3QucHJvcCgnaW5kZXRlcm1pbmF0 ZScsIHRydWUpOwogICAgICAgICAkc2VsZWN0LmRhdGEoJ2NoZWNrZWQnLCAy KTsKICAgICAgIH0KICAgICAgIGVsc2UgewotICAgICAgICBkZWZhdWx0VmFs dWUgPSAhIWl0ZW1bYXJncy5jb2x1bW4ucG9zXTsKKyAgICAgICAgZGVmYXVs dFZhbHVlID0gISFpdGVtW2FyZ3MuY29sdW1uLmZpZWxkXTsKICAgICAgICAg aWYgKGRlZmF1bHRWYWx1ZSkgewogICAgICAgICAgICRzZWxlY3QucHJvcCgn Y2hlY2tlZCcsIHRydWUpOwogICAgICAgICAgICRzZWxlY3QuZGF0YSgnY2hl Y2tlZCcsIDApOwpAQCAtNTU2LDcgKzU1Niw3IEBACiAgICAgfTsKIAogICAg IHRoaXMuYXBwbHlWYWx1ZSA9IGZ1bmN0aW9uIChpdGVtLCBzdGF0ZSkgewot ICAgICAgaXRlbVthcmdzLmNvbHVtbi5wb3NdID0gc3RhdGU7CisgICAgICBp dGVtW2FyZ3MuY29sdW1uLmZpZWxkXSA9IHN0YXRlOwogICAgIH07CiAKICAg ICB0aGlzLmlzVmFsdWVDaGFuZ2VkID0gZnVuY3Rpb24gKCkgewpAQCAtNjQ4 LDcgKzY0OCw3IEBACiAgICAgfTsKIAogICAgIHRoaXMubG9hZFZhbHVlID0g ZnVuY3Rpb24gKGl0ZW0pIHsKLSAgICAgIHZhciBkYXRhID0gZGVmYXVsdFZh bHVlID0gaXRlbVthcmdzLmNvbHVtbi5wb3NdOworICAgICAgdmFyIGRhdGEg PSBkZWZhdWx0VmFsdWUgPSBpdGVtW2FyZ3MuY29sdW1uLmZpZWxkXTsKICAg ICAgIGlmICh0eXBlb2YgZGF0YSA9PT0gIm9iamVjdCIgJiYgIUFycmF5Lmlz QXJyYXkoZGF0YSkpIHsKICAgICAgICAgZGF0YSA9IEpTT04uc3RyaW5naWZ5 KGRhdGEpOwogICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGRhdGEp KSB7CkBAIC02NzEsNyArNjcxLDcgQEAKICAgICB9OwogCiAgICAgdGhpcy5h cHBseVZhbHVlID0gZnVuY3Rpb24gKGl0ZW0sIHN0YXRlKSB7Ci0gICAgICBp dGVtW2FyZ3MuY29sdW1uLnBvc10gPSBzdGF0ZTsKKyAgICAgIGl0ZW1bYXJn cy5jb2x1bW4uZmllbGRdID0gc3RhdGU7CiAgICAgfTsKIAogICAgIHRoaXMu aXNWYWx1ZUNoYW5nZWQgPSBmdW5jdGlvbiAoKSB7CkBAIC03MjUsNyArNzI1 LDcgQEAKICAgICB9OwogCiAgICAgdGhpcy5sb2FkVmFsdWUgPSBmdW5jdGlv biAoaXRlbSkgewotICAgICAgdmFyIHZhbHVlID0gaXRlbVthcmdzLmNvbHVt bi5wb3NdOworICAgICAgdmFyIHZhbHVlID0gaXRlbVthcmdzLmNvbHVtbi5m aWVsZF07CiAKICAgICAgIC8vIENoZWNrIGlmIHZhbHVlIGlzIG51bGwgb3Ig dW5kZWZpbmVkCiAgICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCAmJiB0 eXBlb2YgdmFsdWUgPT09ICJ1bmRlZmluZWQiKSB7CkBAIC04NTgsNyArODU4 LDcgQEAKICAgICB9OwogCiAgICAgdGhpcy5sb2FkVmFsdWUgPSBmdW5jdGlv biAoaXRlbSkgewotICAgICAgZGVmYXVsdFZhbHVlID0gaXRlbVthcmdzLmNv bHVtbi5wb3NdOworICAgICAgZGVmYXVsdFZhbHVlID0gaXRlbVthcmdzLmNv bHVtbi5maWVsZF07CiAgICAgICAkaW5wdXQudmFsKGRlZmF1bHRWYWx1ZSk7 CiAgICAgICAkaW5wdXRbMF0uZGVmYXVsdFZhbHVlID0gZGVmYXVsdFZhbHVl OwogICAgICAgJGlucHV0LnNlbGVjdCgpOwpkaWZmIC0tZ2l0IGEvd2ViL3Bn YWRtaW4vdGVtcGxhdGVzL2Jhc2UuaHRtbCBiL3dlYi9wZ2FkbWluL3RlbXBs YXRlcy9iYXNlLmh0bWwKaW5kZXggODI5YzE5NS4uNzYxNmVhYyAxMDA3NTUK LS0tIGEvd2ViL3BnYWRtaW4vdGVtcGxhdGVzL2Jhc2UuaHRtbAorKysgYi93 ZWIvcGdhZG1pbi90ZW1wbGF0ZXMvYmFzZS5odG1sCkBAIC0xNDYsNiArMTQ2 LDEyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAg ICAgICAgICAgICAgICAgImV4cG9ydHMiOiAnU2xpY2suR3JpZCcKICAgICAg ICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgInNsaWNr Z3JpZC9zbGljay5kYXRhdmlldyI6IHsKKyAgICAgICAgICAgICAgICAgICAg ICAgICJkZXBzIjogWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICJz bGlja2dyaWQiCisgICAgICAgICAgICAgICAgICAgICAgICBdLAorICAgICAg ICAgICAgICAgICAgICAgICAgImV4cG9ydHMiOiAnU2xpY2suRGF0YS5EYXRh VmlldycKKyAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAg ICAgICAgImZsb3RyMiI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgIGRl cHM6IFsnYmVhbiddLAogICAgICAgICAgICAgICAgICAgICAgICAgZXhwb3J0 czogZnVuY3Rpb24oYmVhbikgewpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4v dG9vbHMvc3FsZWRpdG9yL19faW5pdF9fLnB5IGIvd2ViL3BnYWRtaW4vdG9v bHMvc3FsZWRpdG9yL19faW5pdF9fLnB5CmluZGV4IDgyOGNiOTkuLjcwOTMz MmMgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci9f X2luaXRfXy5weQorKysgYi93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3Iv X19pbml0X18ucHkKQEAgLTI3LDcgKzI3LDcgQEAgZnJvbSBwZ2FkbWluLnV0 aWxzLnNxbGF1dG9jb21wbGV0ZS5hdXRvY29tcGxldGUgaW1wb3J0IFNRTEF1 dG9Db21wbGV0ZQogZnJvbSBwZ2FkbWluLm1pc2MuZmlsZV9tYW5hZ2VyIGlt cG9ydCBGaWxlbWFuYWdlcgogCiAKLWZyb20gY29uZmlnIGltcG9ydCBQR19E RUZBVUxUX0RSSVZFUgorZnJvbSBjb25maWcgaW1wb3J0IFBHX0RFRkFVTFRf RFJJVkVSLCBPTl9ERU1BTkRfUkVDT1JEX0NPVU5UCiAKIE1PRFVMRV9OQU1F ID0gJ3NxbGVkaXRvcicKIApAQCAtMjI5LDEzICsyMjksMzIgQEAgZGVmIHN0 YXJ0X3ZpZXdfZGF0YSh0cmFuc19pZCk6CiAKICAgICAjIENoZWNrIHRoZSB0 cmFuc2FjdGlvbiBhbmQgY29ubmVjdGlvbiBzdGF0dXMKICAgICBzdGF0dXMs IGVycm9yX21zZywgY29ubiwgdHJhbnNfb2JqLCBzZXNzaW9uX29iaiA9IGNo ZWNrX3RyYW5zYWN0aW9uX3N0YXR1cyh0cmFuc19pZCkKKworICAgICMgZ2V0 IHRoZSBkZWZhdWx0IGNvbm5lY3Rpb24gYXMgY3VycmVudCBjb25uZWN0aW9u IHdoaWNoIGlzIGF0dGFjaGVkIHRvCisgICAgIyB0cmFucyBpZCBob2xkcyB0 aGUgY3Vyc29yIHdoaWNoIGhhcyBxdWVyeSByZXN1bHQgc28gd2UgY2Fubm90 IHVzZSB0aGF0CisgICAgIyBjb25uZWN0aW9uIHRvIGV4ZWN1dGUgYW5vdGhl ciBxdWVyeSBvdGhlcndpc2Ugd2UnbGwgbG9zZSBxdWVyeSByZXN1bHQuCisK KyAgICBtYW5hZ2VyID0gZ2V0X2RyaXZlcihQR19ERUZBVUxUX0RSSVZFUiku Y29ubmVjdGlvbl9tYW5hZ2VyKHRyYW5zX29iai5zaWQpCisgICAgZGVmYXVs dF9jb25uID0gbWFuYWdlci5jb25uZWN0aW9uKGRpZD10cmFuc19vYmouZGlk KQorCisgICAgIyBDb25uZWN0IHRvIHRoZSBTZXJ2ZXIgaWYgbm90IGNvbm5l Y3RlZC4KKyAgICBpZiBub3QgZGVmYXVsdF9jb25uLmNvbm5lY3RlZCgpOgor ICAgICAgICBzdGF0dXMsIG1zZyA9IGRlZmF1bHRfY29ubi5jb25uZWN0KCkK KyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBt YWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAgICAgICAgICAgZGF0YT17J3N0 YXR1cyc6IHN0YXR1cywgJ3Jlc3VsdCc6IHUie30iLmZvcm1hdChtc2cpfQor ICAgICAgICAgICAgKQorCiAgICAgaWYgc3RhdHVzIGFuZCBjb25uIGlzIG5v dCBOb25lIFwKICAgICAgICAgICAgIGFuZCB0cmFuc19vYmogaXMgbm90IE5v bmUgYW5kIHNlc3Npb25fb2JqIGlzIG5vdCBOb25lOgogICAgICAgICB0cnk6 CisgICAgICAgICAgICAjIHNldCBmZXRjaGVkIHJvdyBjb3VudCB0byAwIGFz IHdlIGFyZSBleGVjdXRpbmcgcXVlcnkgYWdhaW4uCisgICAgICAgICAgICB0 cmFuc19vYmoudXBkYXRlX2ZldGNoZWRfcm93X2NudCgwKQorICAgICAgICAg ICAgc2Vzc2lvbl9vYmpbJ2NvbW1hbmRfb2JqJ10gPSBwaWNrbGUuZHVtcHMo dHJhbnNfb2JqLCAtMSkKIAogICAgICAgICAgICAgIyBGZXRjaCB0aGUgc3Fs IGFuZCBwcmltYXJ5X2tleXMgZnJvbSB0aGUgb2JqZWN0CiAgICAgICAgICAg ICBzcWwgPSB0cmFuc19vYmouZ2V0X3NxbCgpCi0gICAgICAgICAgICBwa19u YW1lcywgcHJpbWFyeV9rZXlzID0gdHJhbnNfb2JqLmdldF9wcmltYXJ5X2tl eXMoKQorICAgICAgICAgICAgcGtfbmFtZXMsIHByaW1hcnlfa2V5cyA9IHRy YW5zX29iai5nZXRfcHJpbWFyeV9rZXlzKGRlZmF1bHRfY29ubikKIAogICAg ICAgICAgICAgIyBGZXRjaCB0aGUgYXBwbGllZCBmaWx0ZXIuCiAgICAgICAg ICAgICBmaWx0ZXJfYXBwbGllZCA9IHRyYW5zX29iai5pc19maWx0ZXJfYXBw bGllZCgpCkBAIC0zMDMsNiArMzIyLDggQEAgZGVmIHN0YXJ0X3F1ZXJ5X3Rv b2wodHJhbnNfaWQpOgogICAgICMgVXNlIHBpY2tsZS5sb2FkcyBmdW5jdGlv biB0byBnZXQgdGhlIGNvbW1hbmQgb2JqZWN0CiAgICAgc2Vzc2lvbl9vYmog PSBncmlkX2RhdGFbc3RyKHRyYW5zX2lkKV0KICAgICB0cmFuc19vYmogPSBw aWNrbGUubG9hZHMoc2Vzc2lvbl9vYmpbJ2NvbW1hbmRfb2JqJ10pCisgICAg IyBzZXQgZmV0Y2hlZCByb3cgY291bnQgdG8gMCBhcyB3ZSBhcmUgZXhlY3V0 aW5nIHF1ZXJ5IGFnYWluLgorICAgIHRyYW5zX29iai51cGRhdGVfZmV0Y2hl ZF9yb3dfY250KDApCiAKICAgICBjYW5fZWRpdCA9IEZhbHNlCiAgICAgY2Fu X2ZpbHRlciA9IEZhbHNlCkBAIC00MjksNjUgKzQ1MCw2IEBAIGRlZiBwcmVm ZXJlbmNlcyh0cmFuc19pZCk6CiAgICAgICAgIHJldHVybiBzdWNjZXNzX3Jl dHVybigpCiAKIAotQGJsdWVwcmludC5yb3V0ZSgnL2NvbHVtbnMvPGludDp0 cmFuc19pZD4nLCBtZXRob2RzPVsiR0VUIl0pCi1AbG9naW5fcmVxdWlyZWQK LWRlZiBnZXRfY29sdW1ucyh0cmFuc19pZCk6Ci0gICAgIiIiCi0gICAgVGhp cyBtZXRob2Qgd2lsbCByZXR1cm5zIGxpc3Qgb2YgY29sdW1ucyBvZiBsYXN0 IGFzeW5jIHF1ZXJ5LgotCi0gICAgQXJnczoKLSAgICAgICAgdHJhbnNfaWQ6 IHVuaXF1ZSB0cmFuc2FjdGlvbiBpZAotICAgICIiIgotICAgIGNvbHVtbnMg PSBkaWN0KCkKLSAgICBjb2x1bW5zX2luZm8gPSBOb25lCi0gICAgcHJpbWFy eV9rZXlzID0gTm9uZQotICAgIHJzZXQgPSBOb25lCi0gICAgc3RhdHVzLCBl cnJvcl9tc2csIGNvbm4sIHRyYW5zX29iaiwgc2Vzc2lvbl9vYmogPSBjaGVj a190cmFuc2FjdGlvbl9zdGF0dXModHJhbnNfaWQpCi0gICAgaWYgc3RhdHVz IGFuZCBjb25uIGlzIG5vdCBOb25lIGFuZCBzZXNzaW9uX29iaiBpcyBub3Qg Tm9uZToKLQotICAgICAgICB2ZXIgPSBjb25uLm1hbmFnZXIudmVyc2lvbgot ICAgICAgICAjIEdldCB0aGUgdGVtcGxhdGUgcGF0aCBmb3IgdGhlIGNvbHVt bgotICAgICAgICB0ZW1wbGF0ZV9wYXRoID0gJ2NvbHVtbi9zcWwvI3swfSMn LmZvcm1hdCh2ZXIpCi0gICAgICAgIGNvbW1hbmRfb2JqID0gcGlja2xlLmxv YWRzKHNlc3Npb25fb2JqWydjb21tYW5kX29iaiddKQotICAgICAgICBpZiBo YXNhdHRyKGNvbW1hbmRfb2JqLCAnb2JqX2lkJyk6Ci0gICAgICAgICAgICBT UUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3RlbXBsYXRlX3BhdGgs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICdub2Rlcy5zcWwnXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdGlkPWNvbW1hbmRfb2JqLm9ial9pZCkKLSAgICAgICAgICAgICMg cm93cyB3aXRoIGF0dHJpYnV0ZSBub3RfbnVsbAotICAgICAgICAgICAgc3Rh dHVzLCByc2V0ID0gY29ubi5leGVjdXRlXzJkYXJyYXkoU1FMKQotICAgICAg ICAgICAgaWYgbm90IHN0YXR1czoKLSAgICAgICAgICAgICAgICByZXR1cm4g aW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJzZXQpCi0KLSAgICAg ICAgIyBDaGVjayBQSyBjb2x1bW4gaW5mbyBpcyBhdmFpbGFibGUgb3Igbm90 Ci0gICAgICAgIGlmICdwcmltYXJ5X2tleXMnIGluIHNlc3Npb25fb2JqOgot ICAgICAgICAgICAgcHJpbWFyeV9rZXlzID0gc2Vzc2lvbl9vYmpbJ3ByaW1h cnlfa2V5cyddCi0KLSAgICAgICAgIyBGZXRjaCBjb2x1bW4gaW5mb3JtYXRp b24KLSAgICAgICAgY29sdW1uc19pbmZvID0gY29ubi5nZXRfY29sdW1uX2lu Zm8oKQotICAgICAgICBpZiBjb2x1bW5zX2luZm8gaXMgbm90IE5vbmU6Ci0g ICAgICAgICAgICBmb3Iga2V5LCBjb2wgaW4gZW51bWVyYXRlKGNvbHVtbnNf aW5mbyk6Ci0gICAgICAgICAgICAgICAgY29sX3R5cGUgPSBkaWN0KCkKLSAg ICAgICAgICAgICAgICBjb2xfdHlwZVsndHlwZV9jb2RlJ10gPSBjb2xbJ3R5 cGVfY29kZSddCi0gICAgICAgICAgICAgICAgY29sX3R5cGVbJ3R5cGVfbmFt ZSddID0gTm9uZQotICAgICAgICAgICAgICAgIGlmIHJzZXQ6Ci0gICAgICAg ICAgICAgICAgICAgIGNvbF90eXBlWydub3RfbnVsbCddID0gY29sWydub3Rf bnVsbCddID0gXAotICAgICAgICAgICAgICAgICAgICAgICAgcnNldFsncm93 cyddW2tleV1bJ25vdF9udWxsJ10KLQotICAgICAgICAgICAgICAgICAgICBj b2xfdHlwZVsnaGFzX2RlZmF1bHRfdmFsJ10gPSBjb2xbJ2hhc19kZWZhdWx0 X3ZhbCddID0gXAotICAgICAgICAgICAgICAgICAgICAgICAgcnNldFsncm93 cyddW2tleV1bJ2hhc19kZWZhdWx0X3ZhbCddCi0KLSAgICAgICAgICAgICAg ICBjb2x1bW5zW2NvbFsnbmFtZSddXSA9IGNvbF90eXBlCi0KLSAgICAgICAg IyBBcyB3ZSBjaGFuZ2VkIHRoZSB0cmFuc2FjdGlvbiBvYmplY3Qgd2UgbmVl ZCB0bwotICAgICAgICAjIHJlc3RvcmUgaXQgYW5kIHVwZGF0ZSB0aGUgc2Vz c2lvbiB2YXJpYWJsZS4KLSAgICAgICAgc2Vzc2lvbl9vYmpbJ2NvbHVtbnNf aW5mbyddID0gY29sdW1ucwotICAgICAgICB1cGRhdGVfc2Vzc2lvbl9ncmlk X3RyYW5zYWN0aW9uKHRyYW5zX2lkLCBzZXNzaW9uX29iaikKLQotICAgIHJl dHVybiBtYWtlX2pzb25fcmVzcG9uc2UoZGF0YT17J3N0YXR1cyc6IFRydWUs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29sdW1u cyc6IGNvbHVtbnNfaW5mbywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICdwcmltYXJ5X2tleXMnOiBwcmltYXJ5X2tleXN9KQotCi0K IEBibHVlcHJpbnQucm91dGUoJy9wb2xsLzxpbnQ6dHJhbnNfaWQ+JywgbWV0 aG9kcz1bIkdFVCJdKQogQGxvZ2luX3JlcXVpcmVkCiBkZWYgcG9sbCh0cmFu c19pZCk6CkBAIC00OTksMTIgKzQ2MSwyMSBAQCBkZWYgcG9sbCh0cmFuc19p ZCk6CiAgICAgIiIiCiAgICAgcmVzdWx0ID0gTm9uZQogICAgIHJvd3NfYWZm ZWN0ZWQgPSAwCisgICAgcm93c19mZXRjaGVkX2Zyb20gPSAwCisgICAgcm93 c19mZXRjaGVkX3RvID0gMAorICAgIGhhc19tb3JlX3Jvd3MgPSBGYWxzZQog ICAgIGFkZGl0aW9uYWxfcmVzdWx0ID0gW10KKyAgICBjb2x1bW5zID0gZGlj dCgpCisgICAgY29sdW1uc19pbmZvID0gTm9uZQorICAgIHByaW1hcnlfa2V5 cyA9IE5vbmUKKyAgICB0eXBlcyA9IHt9CisgICAgY2xpZW50X3ByaW1hcnlf a2V5ID0gTm9uZQorICAgIHJzZXQgPSBOb25lCiAKICAgICAjIENoZWNrIHRo ZSB0cmFuc2FjdGlvbiBhbmQgY29ubmVjdGlvbiBzdGF0dXMKICAgICBzdGF0 dXMsIGVycm9yX21zZywgY29ubiwgdHJhbnNfb2JqLCBzZXNzaW9uX29iaiA9 IGNoZWNrX3RyYW5zYWN0aW9uX3N0YXR1cyh0cmFuc19pZCkKICAgICBpZiBz dGF0dXMgYW5kIGNvbm4gaXMgbm90IE5vbmUgYW5kIHNlc3Npb25fb2JqIGlz IG5vdCBOb25lOgotICAgICAgICBzdGF0dXMsIHJlc3VsdCA9IGNvbm4ucG9s bChmb3JtYXR0ZWRfZXhjZXB0aW9uX21zZz1UcnVlKQorICAgICAgICBzdGF0 dXMsIHJlc3VsdCA9IGNvbm4ucG9sbChmb3JtYXR0ZWRfZXhjZXB0aW9uX21z Zz1UcnVlLCBub19yZXN1bHQ9VHJ1ZSkKICAgICAgICAgaWYgbm90IHN0YXR1 czoKICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3Io cmVzdWx0KQogICAgICAgICBlbGlmIHN0YXR1cyA9PSBBU1lOQ19PSzoKQEAg LTUxOSw2ICs0OTAsODAgQEAgZGVmIHBvbGwodHJhbnNfaWQpOgogICAgICAg ICAgICAgICAgIGlmICh0cmFuc19zdGF0dXMgPT0gVFhfU1RBVFVTX0lORVJS T1IgYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc19vYmouYXV0 b19yb2xsYmFjayk6CiAgICAgICAgICAgICAgICAgICAgIGNvbm4uZXhlY3V0 ZV92b2lkKCJST0xMQkFDSzsiKQorCisgICAgICAgICAgICBzdCwgcmVzdWx0 ID0gY29ubi5hc3luY19mZXRjaG1hbnlfMmRhcnJheShPTl9ERU1BTkRfUkVD T1JEX0NPVU5UKQorICAgICAgICAgICAgaWYgc3Q6CisgICAgICAgICAgICAg ICAgaWYgJ3ByaW1hcnlfa2V5cycgaW4gc2Vzc2lvbl9vYmo6CisgICAgICAg ICAgICAgICAgICAgIHByaW1hcnlfa2V5cyA9IHNlc3Npb25fb2JqWydwcmlt YXJ5X2tleXMnXQorCisgICAgICAgICAgICAgICAgIyBGZXRjaCBjb2x1bW4g aW5mb3JtYXRpb24KKyAgICAgICAgICAgICAgICBjb2x1bW5zX2luZm8gPSBj b25uLmdldF9jb2x1bW5faW5mbygpCisgICAgICAgICAgICAgICAgY2xpZW50 X3ByaW1hcnlfa2V5ID0gZ2VuZXJhdGVfY2xpZW50X3ByaW1hcnlfa2V5X25h bWUoCisgICAgICAgICAgICAgICAgICAgIGNvbHVtbnNfaW5mbworICAgICAg ICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBzZXNzaW9uX29ialsnY2xp ZW50X3ByaW1hcnlfa2V5J10gPSBjbGllbnRfcHJpbWFyeV9rZXkKKworICAg ICAgICAgICAgICAgIGlmIGNvbHVtbnNfaW5mbyBpcyBub3QgTm9uZToKKwor ICAgICAgICAgICAgICAgICAgICBjb21tYW5kX29iaiA9IHBpY2tsZS5sb2Fk cyhzZXNzaW9uX29ialsnY29tbWFuZF9vYmonXSkKKyAgICAgICAgICAgICAg ICAgICAgaWYgaGFzYXR0cihjb21tYW5kX29iaiwgJ29ial9pZCcpOgorICAg ICAgICAgICAgICAgICAgICAgICAgIyBHZXQgdGhlIHRlbXBsYXRlIHBhdGgg Zm9yIHRoZSBjb2x1bW4KKyAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBs YXRlX3BhdGggPSAnY29sdW1uL3NxbC8jezB9IycuZm9ybWF0KAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbm4ubWFuYWdlci52ZXJzaW9uCisg ICAgICAgICAgICAgICAgICAgICAgICApCisKKyAgICAgICAgICAgICAgICAg ICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbdGVtcGxh dGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJ25vZGVzLnNxbCddKSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWQ9Y29t bWFuZF9vYmoub2JqX2lkKQorICAgICAgICAgICAgICAgICAgICAgICAgIyBy b3dzIHdpdGggYXR0cmlidXRlIG5vdF9udWxsCisgICAgICAgICAgICAgICAg ICAgICAgICBjb2xzdCwgcnNldCA9IGNvbm4uZXhlY3V0ZV8yZGFycmF5KFNR TCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBjb2xzdDoKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2Vy dmVyX2Vycm9yKGVycm9ybXNnPXJzZXQpCisKKyAgICAgICAgICAgICAgICAg ICAgZm9yIGtleSwgY29sIGluIGVudW1lcmF0ZShjb2x1bW5zX2luZm8pOgor ICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGUgPSBkaWN0KCkKKyAg ICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlWyd0eXBlX2NvZGUnXSA9 IGNvbFsndHlwZV9jb2RlJ10KKyAgICAgICAgICAgICAgICAgICAgICAgIGNv bF90eXBlWyd0eXBlX25hbWUnXSA9IE5vbmUKKyAgICAgICAgICAgICAgICAg ICAgICAgIGNvbHVtbnNbY29sWyduYW1lJ11dID0gY29sX3R5cGUKKworICAg ICAgICAgICAgICAgICAgICAgICAgaWYgcnNldDoKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjb2xfdHlwZVsnbm90X251bGwnXSA9IGNvbFsnbm90 X251bGwnXSA9IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cnNldFsncm93cyddW2tleV1bJ25vdF9udWxsJ10KKworICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbF90eXBlWydoYXNfZGVmYXVsdF92YWwnXSA9 IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sWydoYXNf ZGVmYXVsdF92YWwnXSA9IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcnNldFsncm93cyddW2tleV1bJ2hhc19kZWZhdWx0X3ZhbCddCisK KyAgICAgICAgICAgICAgICBpZiBjb2x1bW5zOgorICAgICAgICAgICAgICAg ICAgICBzdCwgdHlwZXMgPSBmZXRjaF9wZ190eXBlcyhjb2x1bW5zLCB0cmFu c19vYmopCisKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IHN0OgorICAg ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9l cnJvcih0eXBlcykKKworICAgICAgICAgICAgICAgICAgICBmb3IgY29sX2lu Zm8gaW4gY29sdW1ucy52YWx1ZXMoKToKKyAgICAgICAgICAgICAgICAgICAg ICAgIGZvciBjb2xfdHlwZSBpbiB0eXBlczoKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICBpZiBjb2xfdHlwZVsnb2lkJ10gPT0gY29sX2luZm9bJ3R5 cGVfY29kZSddOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj b2xfaW5mb1sndHlwZV9uYW1lJ10gPSBjb2xfdHlwZVsndHlwbmFtZSddCisK KyAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbl9vYmpbJ2NvbHVtbnNfaW5m byddID0gY29sdW1ucworICAgICAgICAgICAgICAgICMgc3RhdHVzIG9mIGFz eW5jX2ZldGNobWFueV8yZGFycmF5IGlzIFRydWUgYW5kIHJlc3VsdCBpcyBu b25lCisgICAgICAgICAgICAgICAgIyBtZWFucyBub3RoaW5nIHRvIGZldGNo CisgICAgICAgICAgICAgICAgaWYgcmVzdWx0IGFuZCByb3dzX2FmZmVjdGVk ID4gLTE6CisgICAgICAgICAgICAgICAgICAgIHJlc19sZW4gPSBsZW4ocmVz dWx0KQorICAgICAgICAgICAgICAgICAgICBpZiByZXNfbGVuID09IE9OX0RF TUFORF9SRUNPUkRfQ09VTlQ6CisgICAgICAgICAgICAgICAgICAgICAgICBo YXNfbW9yZV9yb3dzID0gVHJ1ZQorCisgICAgICAgICAgICAgICAgICAgIGlm IHJlc19sZW4gPiAwOgorICAgICAgICAgICAgICAgICAgICAgICAgcm93c19m ZXRjaGVkX2Zyb20gPSB0cmFuc19vYmouZ2V0X2ZldGNoZWRfcm93X2NudCgp CisgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc19vYmoudXBkYXRlX2Zl dGNoZWRfcm93X2NudChyb3dzX2ZldGNoZWRfZnJvbSArIHJlc19sZW4pCisg ICAgICAgICAgICAgICAgICAgICAgICByb3dzX2ZldGNoZWRfZnJvbSArPSAx CisgICAgICAgICAgICAgICAgICAgICAgICByb3dzX2ZldGNoZWRfdG8gPSB0 cmFuc19vYmouZ2V0X2ZldGNoZWRfcm93X2NudCgpCisgICAgICAgICAgICAg ICAgICAgICAgICBzZXNzaW9uX29ialsnY29tbWFuZF9vYmonXSA9IHBpY2ts ZS5kdW1wcyh0cmFuc19vYmosIC0xKQorCisgICAgICAgICAgICAgICAgIyBB cyB3ZSBjaGFuZ2VkIHRoZSB0cmFuc2FjdGlvbiBvYmplY3Qgd2UgbmVlZCB0 bworICAgICAgICAgICAgICAgICMgcmVzdG9yZSBpdCBhbmQgdXBkYXRlIHRo ZSBzZXNzaW9uIHZhcmlhYmxlLgorICAgICAgICAgICAgICAgIHVwZGF0ZV9z ZXNzaW9uX2dyaWRfdHJhbnNhY3Rpb24odHJhbnNfaWQsIHNlc3Npb25fb2Jq KQorCiAgICAgICAgIGVsaWYgc3RhdHVzID09IEFTWU5DX0VYRUNVVElPTl9B Qk9SVEVEOgogICAgICAgICAgICAgc3RhdHVzID0gJ0NhbmNlbCcKICAgICAg ICAgZWxzZToKQEAgLTU1OSw1MSArNjA0LDEyMyBAQCBkZWYgcG9sbCh0cmFu c19pZCk6CiAgICAgICAgIGRhdGE9ewogICAgICAgICAgICAgJ3N0YXR1cyc6 IHN0YXR1cywgJ3Jlc3VsdCc6IHJlc3VsdCwKICAgICAgICAgICAgICdyb3dz X2FmZmVjdGVkJzogcm93c19hZmZlY3RlZCwKLSAgICAgICAgICAgICdhZGRp dGlvbmFsX21lc3NhZ2VzJzogYWRkaXRpb25hbF9tZXNzYWdlcworICAgICAg ICAgICAgJ3Jvd3NfZmV0Y2hlZF9mcm9tJzogcm93c19mZXRjaGVkX2Zyb20s CisgICAgICAgICAgICAncm93c19mZXRjaGVkX3RvJzogcm93c19mZXRjaGVk X3RvLAorICAgICAgICAgICAgJ2FkZGl0aW9uYWxfbWVzc2FnZXMnOiBhZGRp dGlvbmFsX21lc3NhZ2VzLAorICAgICAgICAgICAgJ2hhc19tb3JlX3Jvd3Mn OiBoYXNfbW9yZV9yb3dzLAorICAgICAgICAgICAgJ2NvbGluZm8nOiBjb2x1 bW5zX2luZm8sCisgICAgICAgICAgICAncHJpbWFyeV9rZXlzJzogcHJpbWFy eV9rZXlzLAorICAgICAgICAgICAgJ3R5cGVzJzogdHlwZXMsCisgICAgICAg ICAgICAnY2xpZW50X3ByaW1hcnlfa2V5JzogY2xpZW50X3ByaW1hcnlfa2V5 CiAgICAgICAgIH0KICAgICApCiAKIAotQGJsdWVwcmludC5yb3V0ZSgnL2Zl dGNoL3R5cGVzLzxpbnQ6dHJhbnNfaWQ+JywgbWV0aG9kcz1bIkdFVCJdKQor QGJsdWVwcmludC5yb3V0ZSgnL2ZldGNoLzxpbnQ6dHJhbnNfaWQ+JywgbWV0 aG9kcz1bIkdFVCJdKQorQGJsdWVwcmludC5yb3V0ZSgnL2ZldGNoLzxpbnQ6 dHJhbnNfaWQ+LzxpbnQ6ZmV0Y2hfYWxsPicsIG1ldGhvZHM9WyJHRVQiXSkK IEBsb2dpbl9yZXF1aXJlZAotZGVmIGZldGNoX3BnX3R5cGVzKHRyYW5zX2lk KToKK2RlZiBmZXRjaCh0cmFuc19pZCwgZmV0Y2hfYWxsPU5vbmUpOgorICAg IHJlc3VsdCA9IE5vbmUKKyAgICBoYXNfbW9yZV9yb3dzID0gRmFsc2UKKyAg ICByb3dzX2ZldGNoZWRfZnJvbSA9IDAKKyAgICByb3dzX2ZldGNoZWRfdG8g PSAwCisgICAgZmV0Y2hfcm93X2NudCA9IC0xIGlmIGZldGNoX2FsbCA9PSAx IGVsc2UgT05fREVNQU5EX1JFQ09SRF9DT1VOVAorCisgICAgIyBDaGVjayB0 aGUgdHJhbnNhY3Rpb24gYW5kIGNvbm5lY3Rpb24gc3RhdHVzCisgICAgc3Rh dHVzLCBlcnJvcl9tc2csIGNvbm4sIHRyYW5zX29iaiwgc2Vzc2lvbl9vYmog PSBjaGVja190cmFuc2FjdGlvbl9zdGF0dXModHJhbnNfaWQpCisgICAgaWYg c3RhdHVzIGFuZCBjb25uIGlzIG5vdCBOb25lIGFuZCBzZXNzaW9uX29iaiBp cyBub3QgTm9uZToKKyAgICAgICAgc3RhdHVzLCByZXN1bHQgPSBjb25uLmFz eW5jX2ZldGNobWFueV8yZGFycmF5KGZldGNoX3Jvd19jbnQpCisgICAgICAg IGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICBzdGF0dXMgPSAnRXJyb3In CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzdGF0dXMgPSAnU3VjY2Vz cycKKyAgICAgICAgICAgIHJlc19sZW4gPSBsZW4ocmVzdWx0KQorICAgICAg ICAgICAgaWYgZmV0Y2hfcm93X2NudCAhPSAtMSBhbmQgcmVzX2xlbiA9PSBP Tl9ERU1BTkRfUkVDT1JEX0NPVU5UOgorICAgICAgICAgICAgICAgIGhhc19t b3JlX3Jvd3MgPSBUcnVlCisKKyAgICAgICAgICAgIGlmIHJlc19sZW46Cisg ICAgICAgICAgICAgICAgcm93c19mZXRjaGVkX2Zyb20gPSB0cmFuc19vYmou Z2V0X2ZldGNoZWRfcm93X2NudCgpCisgICAgICAgICAgICAgICAgdHJhbnNf b2JqLnVwZGF0ZV9mZXRjaGVkX3Jvd19jbnQocm93c19mZXRjaGVkX2Zyb20g KyByZXNfbGVuKQorICAgICAgICAgICAgICAgIHJvd3NfZmV0Y2hlZF9mcm9t ICs9IDEKKyAgICAgICAgICAgICAgICByb3dzX2ZldGNoZWRfdG8gPSB0cmFu c19vYmouZ2V0X2ZldGNoZWRfcm93X2NudCgpCisgICAgICAgICAgICAgICAg c2Vzc2lvbl9vYmpbJ2NvbW1hbmRfb2JqJ10gPSBwaWNrbGUuZHVtcHModHJh bnNfb2JqLCAtMSkKKyAgICAgICAgICAgICAgICB1cGRhdGVfc2Vzc2lvbl9n cmlkX3RyYW5zYWN0aW9uKHRyYW5zX2lkLCBzZXNzaW9uX29iaikKKyAgICBl bHNlOgorICAgICAgICBzdGF0dXMgPSAnTm90Q29ubmVjdGVkJworICAgICAg ICByZXN1bHQgPSBlcnJvcl9tc2cKKworICAgIHJldHVybiBtYWtlX2pzb25f cmVzcG9uc2UoCisgICAgICAgIGRhdGE9eworICAgICAgICAgICAgJ3N0YXR1 cyc6IHN0YXR1cywgJ3Jlc3VsdCc6IHJlc3VsdCwKKyAgICAgICAgICAgICdo YXNfbW9yZV9yb3dzJzogaGFzX21vcmVfcm93cywKKyAgICAgICAgICAgICdy b3dzX2ZldGNoZWRfZnJvbSc6IHJvd3NfZmV0Y2hlZF9mcm9tLAorICAgICAg ICAgICAgJ3Jvd3NfZmV0Y2hlZF90byc6IHJvd3NfZmV0Y2hlZF90bworICAg ICAgICB9CisgICAgKQorCisKK2RlZiBmZXRjaF9wZ190eXBlcyhjb2x1bW5z X2luZm8sIHRyYW5zX29iaik6CiAgICAgIiIiCiAgICAgVGhpcyBtZXRob2Qg aXMgdXNlZCB0byBmZXRjaCB0aGUgcGcgdHlwZXMsIHdoaWNoIGlzIHJlcXVp cmVkCiAgICAgdG8gbWFwIHRoZSBkYXRhIHR5cGUgY29tZXMgYXMgYSByZXN1 bHQgb2YgdGhlIHF1ZXJ5LgogCiAgICAgQXJnczoKLSAgICAgICAgdHJhbnNf aWQ6IHVuaXF1ZSB0cmFuc2FjdGlvbiBpZAorICAgICAgICBjb2x1bW5zX2lu Zm86CiAgICAgIiIiCiAKLSAgICAjIENoZWNrIHRoZSB0cmFuc2FjdGlvbiBh bmQgY29ubmVjdGlvbiBzdGF0dXMKLSAgICBzdGF0dXMsIGVycm9yX21zZywg Y29ubiwgdHJhbnNfb2JqLCBzZXNzaW9uX29iaiA9IGNoZWNrX3RyYW5zYWN0 aW9uX3N0YXR1cyh0cmFuc19pZCkKLSAgICBpZiBzdGF0dXMgYW5kIGNvbm4g aXMgbm90IE5vbmUgXAotICAgICAgICAgICAgYW5kIHRyYW5zX29iaiBpcyBu b3QgTm9uZSBhbmQgc2Vzc2lvbl9vYmogaXMgbm90IE5vbmU6Ci0gICAgICAg IHJlcyA9IHt9Ci0gICAgICAgIGlmICdjb2x1bW5zX2luZm8nIGluIHNlc3Np b25fb2JqIFwKLSAgICAgICAgICAgICAgICBhbmQgc2Vzc2lvbl9vYmpbJ2Nv bHVtbnNfaW5mbyddIGlzIG5vdCBOb25lOgorICAgICMgZ2V0IHRoZSBkZWZh dWx0IGNvbm5lY3Rpb24gYXMgY3VycmVudCBjb25uZWN0aW9uIGF0dGFjaGVk IHRvIHRyYW5zIGlkCisgICAgIyBob2xkcyB0aGUgY3Vyc29yIHdoaWNoIGhh cyBxdWVyeSByZXN1bHQgc28gd2UgY2Fubm90IHVzZSB0aGF0IGNvbm5lY3Rp b24KKyAgICAjIHRvIGV4ZWN1dGUgYW5vdGhlciBxdWVyeSBvdGhlcndpc2Ug d2UnbGwgbG9zZSBxdWVyeSByZXN1bHQuCisKKyAgICBtYW5hZ2VyID0gZ2V0 X2RyaXZlcihQR19ERUZBVUxUX0RSSVZFUikuY29ubmVjdGlvbl9tYW5hZ2Vy KHRyYW5zX29iai5zaWQpCisgICAgZGVmYXVsdF9jb25uID0gbWFuYWdlci5j b25uZWN0aW9uKGRpZD10cmFuc19vYmouZGlkKQorCisgICAgIyBDb25uZWN0 IHRvIHRoZSBTZXJ2ZXIgaWYgbm90IGNvbm5lY3RlZC4KKyAgICByZXMgPSBb XQorICAgIGlmIG5vdCBkZWZhdWx0X2Nvbm4uY29ubmVjdGVkKCk6CisgICAg ICAgIHN0YXR1cywgbXNnID0gZGVmYXVsdF9jb25uLmNvbm5lY3QoKQorICAg ICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIHN0YXR1 cywgbXNnCiAKLSAgICAgICAgICAgIG9pZHMgPSBbc2Vzc2lvbl9vYmpbJ2Nv bHVtbnNfaW5mbyddW2NvbF1bJ3R5cGVfY29kZSddIGZvciBjb2wgaW4gc2Vz c2lvbl9vYmpbJ2NvbHVtbnNfaW5mbyddXQorICAgIG9pZHMgPSBbY29sdW1u c19pbmZvW2NvbF1bJ3R5cGVfY29kZSddIGZvciBjb2wgaW4gY29sdW1uc19p bmZvXQogCi0gICAgICAgICAgICBpZiBvaWRzOgotICAgICAgICAgICAgICAg IHN0YXR1cywgcmVzID0gY29ubi5leGVjdXRlX2RpY3QoCi0gICAgICAgICAg ICAgICAgICAgIHUiIiJTRUxFQ1Qgb2lkLCBmb3JtYXRfdHlwZShvaWQsbnVs bCkgYXMgdHlwbmFtZSBGUk9NIHBnX3R5cGUgV0hFUkUgb2lkIElOICVzIE9S REVSIEJZIG9pZDsKKyAgICBpZiBvaWRzOgorICAgICAgICBzdGF0dXMsIHJl cyA9IGRlZmF1bHRfY29ubi5leGVjdXRlX2RpY3QoCisgICAgICAgICAgICB1 IiIiU0VMRUNUIG9pZCwgZm9ybWF0X3R5cGUob2lkLG51bGwpIGFzIHR5cG5h bWUgRlJPTSBwZ190eXBlIFdIRVJFIG9pZCBJTiAlcyBPUkRFUiBCWSBvaWQ7 CiAiIiIsIFt0dXBsZShvaWRzKV0pCiAKLSAgICAgICAgICAgICAgICBpZiBz dGF0dXM6Ci0gICAgICAgICAgICAgICAgICAgICMgaXRlcmF0ZSB0aHJvdWdo IHBnX3R5cGVzIGFuZCB1cGRhdGUgdGhlIHR5cGUgbmFtZSBpbiBzZXNzaW9u IG9iamVjdAotICAgICAgICAgICAgICAgICAgICBmb3IgcmVjb3JkIGluIHJl c1sncm93cyddOgotICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGNvbCBp biBzZXNzaW9uX29ialsnY29sdW1uc19pbmZvJ106Ci0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgdHlwZV9vYmogPSBzZXNzaW9uX29ialsnY29sdW1u c19pbmZvJ11bY29sXQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm IHR5cGVfb2JqWyd0eXBlX2NvZGUnXSA9PSByZWNvcmRbJ29pZCddOgotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlX29ialsndHlwZV9u YW1lJ10gPSByZWNvcmRbJ3R5cG5hbWUnXQorICAgICAgICBpZiBub3Qgc3Rh dHVzOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlLCByZXMKIAotICAgICAg ICAgICAgICAgICAgICB1cGRhdGVfc2Vzc2lvbl9ncmlkX3RyYW5zYWN0aW9u KHRyYW5zX2lkLCBzZXNzaW9uX29iaikKKyAgICAgICAgcmV0dXJuIHN0YXR1 cywgcmVzWydyb3dzJ10KICAgICBlbHNlOgotICAgICAgICBzdGF0dXMgPSBG YWxzZQotICAgICAgICByZXMgPSBlcnJvcl9tc2cKLQotICAgIHJldHVybiBt YWtlX2pzb25fcmVzcG9uc2UoZGF0YT17J3N0YXR1cyc6IHN0YXR1cywgJ3Jl c3VsdCc6IHJlc30pCisgICAgICAgIHJldHVybiBUcnVlLCBbXQorCisKK2Rl ZiBnZW5lcmF0ZV9jbGllbnRfcHJpbWFyeV9rZXlfbmFtZShjb2x1bW5zX2lu Zm8pOgorICAgIHRlbXBfa2V5ID0gJ19fdGVtcF9QSycKKyAgICBpZiBub3Qg Y29sdW1uc19pbmZvOgorICAgICAgICByZXR1cm4gdGVtcF9rZXkKKworICAg IGluaXRpYWxfdGVtcF9rZXlfbGVuID0gbGVuKHRlbXBfa2V5KQorICAgIGR1 cGxpY2F0ZSA9IEZhbHNlCisgICAgc3VmZml4ID0gMQorICAgIHdoaWxlIDE6 CisgICAgICAgIGZvciBjb2wgaW4gY29sdW1uc19pbmZvOgorICAgICAgICAg ICAgaWYgY29sWyduYW1lJ10gPT0gdGVtcF9rZXk6CisgICAgICAgICAgICAg ICAgZHVwbGljYXRlID0gVHJ1ZQorICAgICAgICAgICAgICAgIGJyZWFrCisg ICAgICAgIGlmIGR1cGxpY2F0ZToKKyAgICAgICAgICAgIGlmIGluaXRpYWxf dGVtcF9rZXlfbGVuID09IGxlbih0ZW1wX2tleSk6CisgICAgICAgICAgICAg ICAgdGVtcF9rZXkgKz0gc3RyKHN1ZmZpeCkKKyAgICAgICAgICAgICAgICBz dWZmaXggKz0gMQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAg ICB0ZW1wX2tleSA9IHRlbXBfa2V5WzotMV0gKyBzdHIoc3VmZml4KQorICAg ICAgICAgICAgICAgIHN1ZmZpeCArPSAxCisgICAgICAgICAgICBkdXBsaWNh dGUgPSBGYWxzZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYnJlYWsK KyAgICByZXR1cm4gdGVtcF9rZXkKIAogCiBAYmx1ZXByaW50LnJvdXRlKCcv c2F2ZS88aW50OnRyYW5zX2lkPicsIG1ldGhvZHM9WyJQVVQiLCAiUE9TVCJd KQpAQCAtNjE1LDcgKzczMiw2IEBAIGRlZiBzYXZlKHRyYW5zX2lkKToKICAg ICBBcmdzOgogICAgICAgICB0cmFuc19pZDogdW5pcXVlIHRyYW5zYWN0aW9u IGlkCiAgICAgIiIiCi0KICAgICBpZiByZXF1ZXN0LmRhdGE6CiAgICAgICAg IGNoYW5nZWRfZGF0YSA9IGpzb24ubG9hZHMocmVxdWVzdC5kYXRhLCBlbmNv ZGluZz0ndXRmLTgnKQogICAgIGVsc2U6CkBAIC02MjUsNyArNzQxLDYgQEAg ZGVmIHNhdmUodHJhbnNfaWQpOgogICAgIHN0YXR1cywgZXJyb3JfbXNnLCBj b25uLCB0cmFuc19vYmosIHNlc3Npb25fb2JqID0gY2hlY2tfdHJhbnNhY3Rp b25fc3RhdHVzKHRyYW5zX2lkKQogICAgIGlmIHN0YXR1cyBhbmQgY29ubiBp cyBub3QgTm9uZSBcCiAgICAgICAgICAgICBhbmQgdHJhbnNfb2JqIGlzIG5v dCBOb25lIGFuZCBzZXNzaW9uX29iaiBpcyBub3QgTm9uZToKLSAgICAgICAg c2V0YXR0cih0cmFuc19vYmosICdjb2x1bW5zX2luZm8nLCBzZXNzaW9uX29i alsnY29sdW1uc19pbmZvJ10pCiAKICAgICAgICAgIyBJZiB0aGVyZSBpcyBu byBwcmltYXJ5IGtleSBmb3VuZCB0aGVuIHJldHVybiBmcm9tIHRoZSBmdW5j dGlvbi4KICAgICAgICAgaWYgbGVuKHNlc3Npb25fb2JqWydwcmltYXJ5X2tl eXMnXSkgPD0gMCBvciBsZW4oY2hhbmdlZF9kYXRhKSA8PSAwOgpAQCAtNjM2 LDcgKzc1MSwyMiBAQCBkZWYgc2F2ZSh0cmFuc19pZCk6CiAgICAgICAgICAg ICAgICAgfQogICAgICAgICAgICAgKQogCi0gICAgICAgIHN0YXR1cywgcmVz LCBxdWVyeV9yZXMsIF9yb3dpZCA9IHRyYW5zX29iai5zYXZlKGNoYW5nZWRf ZGF0YSkKKyAgICAgICAgbWFuYWdlciA9IGdldF9kcml2ZXIoUEdfREVGQVVM VF9EUklWRVIpLmNvbm5lY3Rpb25fbWFuYWdlcih0cmFuc19vYmouc2lkKQor ICAgICAgICBkZWZhdWx0X2Nvbm4gPSBtYW5hZ2VyLmNvbm5lY3Rpb24oZGlk PXRyYW5zX29iai5kaWQpCisKKyAgICAgICAgIyBDb25uZWN0IHRvIHRoZSBT ZXJ2ZXIgaWYgbm90IGNvbm5lY3RlZC4KKyAgICAgICAgaWYgbm90IGRlZmF1 bHRfY29ubi5jb25uZWN0ZWQoKToKKyAgICAgICAgICAgIHN0YXR1cywgbXNn ID0gZGVmYXVsdF9jb25uLmNvbm5lY3QoKQorICAgICAgICAgICAgaWYgbm90 IHN0YXR1czoKKyAgICAgICAgICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jl c3BvbnNlKAorICAgICAgICAgICAgICAgICAgICBkYXRhPXsnc3RhdHVzJzog c3RhdHVzLCAncmVzdWx0JzogdSJ7fSIuZm9ybWF0KG1zZyl9CisgICAgICAg ICAgICAgICAgKQorCisgICAgICAgIHN0YXR1cywgcmVzLCBxdWVyeV9yZXMs IF9yb3dpZCA9IHRyYW5zX29iai5zYXZlKAorICAgICAgICAgICAgY2hhbmdl ZF9kYXRhLAorICAgICAgICAgICAgc2Vzc2lvbl9vYmpbJ2NvbHVtbnNfaW5m byddLAorICAgICAgICAgICAgc2Vzc2lvbl9vYmpbJ2NsaWVudF9wcmltYXJ5 X2tleSddLAorICAgICAgICAgICAgZGVmYXVsdF9jb25uKQogICAgIGVsc2U6 CiAgICAgICAgIHN0YXR1cyA9IEZhbHNlCiAgICAgICAgIHJlcyA9IGVycm9y X21zZwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9y L2NvbW1hbmQucHkgYi93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3IvY29t bWFuZC5weQppbmRleCBiN2Q4YTc4Li41MWIxZjU2IDEwMDY0NAotLS0gYS93 ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3IvY29tbWFuZC5weQorKysgYi93 ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3IvY29tbWFuZC5weQpAQCAtMjU4 LDcgKzI1OCwyMSBAQCBjbGFzcyBTUUxGaWx0ZXIob2JqZWN0KToKICAgICAg ICAgcmV0dXJuIHN0YXR1cywgcmVzdWx0CiAKIAotY2xhc3MgR3JpZENvbW1h bmQoQmFzZUNvbW1hbmQsIFNRTEZpbHRlcik6CitjbGFzcyBGZXRjaGVkUm93 VHJhY2tlcihvYmplY3QpOgorICAgICIiIgorICAgIEtlZXBzIHRyYWNrIG9m IGZldGNoZWQgcm93IGNvdW50LgorICAgICIiIgorICAgIGRlZiBfX2luaXRf XyhzZWxmLCAqKmt3YXJncyk6CisgICAgICAgIHNlbGYuZmV0Y2hlZF9yb3dz ID0gMAorCisgICAgZGVmIGdldF9mZXRjaGVkX3Jvd19jbnQoc2VsZik6Cisg ICAgICAgIHJldHVybiBzZWxmLmZldGNoZWRfcm93cworCisgICAgZGVmIHVw ZGF0ZV9mZXRjaGVkX3Jvd19jbnQoc2VsZiwgcm93c19jbnQpOgorICAgICAg ICBzZWxmLmZldGNoZWRfcm93cyA9IHJvd3NfY250CisKKworY2xhc3MgR3Jp ZENvbW1hbmQoQmFzZUNvbW1hbmQsIFNRTEZpbHRlciwgRmV0Y2hlZFJvd1Ry YWNrZXIpOgogICAgICIiIgogICAgIGNsYXNzIEdyaWRDb21tYW5kKG9iamVj dCkKIApAQCAtMjkwLDYgKzMwNCw3IEBAIGNsYXNzIEdyaWRDb21tYW5kKEJh c2VDb21tYW5kLCBTUUxGaWx0ZXIpOgogICAgICAgICAiIiIKICAgICAgICAg QmFzZUNvbW1hbmQuX19pbml0X18oc2VsZiwgKiprd2FyZ3MpCiAgICAgICAg IFNRTEZpbHRlci5fX2luaXRfXyhzZWxmLCAqKmt3YXJncykKKyAgICAgICAg RmV0Y2hlZFJvd1RyYWNrZXIuX19pbml0X18oc2VsZiwgKiprd2FyZ3MpCiAK ICAgICAgICAgIyBTYXZlIHRoZSBjb25uZWN0aW9uIGlkLCBjb21tYW5kIHR5 cGUKICAgICAgICAgc2VsZi5jb25uX2lkID0ga3dhcmdzWydjb25uX2lkJ10g aWYgJ2Nvbm5faWQnIGluIGt3YXJncyBlbHNlIE5vbmUKQEAgLTI5OSwxMCAr MzE0LDEwIEBAIGNsYXNzIEdyaWRDb21tYW5kKEJhc2VDb21tYW5kLCBTUUxG aWx0ZXIpOgogICAgICAgICBpZiBzZWxmLmNtZF90eXBlID09IFZJRVdfRklS U1RfMTAwX1JPV1Mgb3Igc2VsZi5jbWRfdHlwZSA9PSBWSUVXX0xBU1RfMTAw X1JPV1M6CiAgICAgICAgICAgICBzZWxmLmxpbWl0ID0gMTAwCiAKLSAgICBk ZWYgZ2V0X3ByaW1hcnlfa2V5cyhzZWxmKToKKyAgICBkZWYgZ2V0X3ByaW1h cnlfa2V5cyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgogICAgICAgICByZXR1 cm4gTm9uZSwgTm9uZQogCi0gICAgZGVmIHNhdmUoc2VsZiwgY2hhbmdlZF9k YXRhKToKKyAgICBkZWYgc2F2ZShzZWxmLCBjaGFuZ2VkX2RhdGEsIGRlZmF1 bHRfY29ubj1Ob25lKToKICAgICAgICAgcmV0dXJuIGZvcmJpZGRlbihlcnJt c2c9Z2V0dGV4dCgiRGF0YSBjYW5ub3QgYmUgc2F2ZWQgZm9yIHRoZSBjdXJy ZW50IG9iamVjdC4iKSkKIAogICAgIGRlZiBnZXRfbGltaXQoc2VsZik6CkBA IC0zNDAsMTQgKzM1NSwxNCBAQCBjbGFzcyBUYWJsZUNvbW1hbmQoR3JpZENv bW1hbmQpOgogICAgICAgICAjIGNhbGwgYmFzZSBjbGFzcyBpbml0IHRvIGZl dGNoIHRoZSB0YWJsZSBuYW1lCiAgICAgICAgIHN1cGVyKFRhYmxlQ29tbWFu ZCwgc2VsZikuX19pbml0X18oKiprd2FyZ3MpCiAKLSAgICBkZWYgZ2V0X3Nx bChzZWxmKToKKyAgICBkZWYgZ2V0X3NxbChzZWxmLCBkZWZhdWx0X2Nvbm49 Tm9uZSk6CiAgICAgICAgICIiIgogICAgICAgICBUaGlzIG1ldGhvZCBpcyB1 c2VkIHRvIGNyZWF0ZSBhIHByb3BlciBTUUwgcXVlcnkKICAgICAgICAgdG8g ZmV0Y2ggdGhlIGRhdGEgZm9yIHRoZSBzcGVjaWZpZWQgdGFibGUKICAgICAg ICAgIiIiCiAKICAgICAgICAgIyBGZXRjaCB0aGUgcHJpbWFyeSBrZXlzIGZv ciB0aGUgdGFibGUKLSAgICAgICAgcGtfbmFtZXMsIHByaW1hcnlfa2V5cyA9 IHNlbGYuZ2V0X3ByaW1hcnlfa2V5cygpCisgICAgICAgIHBrX25hbWVzLCBw cmltYXJ5X2tleXMgPSBzZWxmLmdldF9wcmltYXJ5X2tleXMoZGVmYXVsdF9j b25uKQogCiAgICAgICAgIHNxbF9maWx0ZXIgPSBzZWxmLmdldF9maWx0ZXIo KQogCkBAIC0zNjIsMTMgKzM3NywxNiBAQCBjbGFzcyBUYWJsZUNvbW1hbmQo R3JpZENvbW1hbmQpOgogCiAgICAgICAgIHJldHVybiBzcWwKIAotICAgIGRl ZiBnZXRfcHJpbWFyeV9rZXlzKHNlbGYpOgorICAgIGRlZiBnZXRfcHJpbWFy eV9rZXlzKHNlbGYsIGRlZmF1bHRfY29ubj1Ob25lKToKICAgICAgICAgIiIi CiAgICAgICAgIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBmZXRjaCB0aGUg cHJpbWFyeSBrZXkgY29sdW1ucy4KICAgICAgICAgIiIiCiAgICAgICAgIGRy aXZlciA9IGdldF9kcml2ZXIoUEdfREVGQVVMVF9EUklWRVIpCi0gICAgICAg IG1hbmFnZXIgPSBkcml2ZXIuY29ubmVjdGlvbl9tYW5hZ2VyKHNlbGYuc2lk KQotICAgICAgICBjb25uID0gbWFuYWdlci5jb25uZWN0aW9uKGRpZD1zZWxm LmRpZCwgY29ubl9pZD1zZWxmLmNvbm5faWQpCisgICAgICAgIGlmIGRlZmF1 bHRfY29ubiBpcyBOb25lOgorICAgICAgICAgICAgbWFuYWdlciA9IGRyaXZl ci5jb25uZWN0aW9uX21hbmFnZXIoc2VsZi5zaWQpCisgICAgICAgICAgICBj b25uID0gbWFuYWdlci5jb25uZWN0aW9uKGRpZD1zZWxmLmRpZCwgY29ubl9p ZD1zZWxmLmNvbm5faWQpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBj b25uID0gZGVmYXVsdF9jb25uCiAKICAgICAgICAgcGtfbmFtZXMgPSAnJwog ICAgICAgICBwcmltYXJ5X2tleXMgPSBPcmRlcmVkRGljdCgpCkBAIC00MDAs NyArNDE4LDExIEBAIGNsYXNzIFRhYmxlQ29tbWFuZChHcmlkQ29tbWFuZCk6 CiAgICAgZGVmIGNhbl9maWx0ZXIoc2VsZik6CiAgICAgICAgIHJldHVybiBU cnVlCiAKLSAgICBkZWYgc2F2ZShzZWxmLCBjaGFuZ2VkX2RhdGEpOgorICAg IGRlZiBzYXZlKHNlbGYsCisgICAgICAgICAgICAgY2hhbmdlZF9kYXRhLAor ICAgICAgICAgICAgIGNvbHVtbnNfaW5mbywKKyAgICAgICAgICAgICBjbGll bnRfcHJpbWFyeV9rZXk9J19fdGVtcF9QSycsCisgICAgICAgICAgICAgZGVm YXVsdF9jb25uPU5vbmUpOgogICAgICAgICAiIiIKICAgICAgICAgVGhpcyBm dW5jdGlvbiBpcyB1c2VkIHRvIHNhdmUgdGhlIGRhdGEgaW50byB0aGUgZGF0 YWJhc2UuCiAgICAgICAgIERlcGVuZGluZyBvbiBjb25kaXRpb24gaXQgd2ls bCBlaXRoZXIgdXBkYXRlIG9yIGluc2VydCB0aGUKQEAgLTQwOCwxMCArNDMw LDE2IEBAIGNsYXNzIFRhYmxlQ29tbWFuZChHcmlkQ29tbWFuZCk6CiAKICAg ICAgICAgQXJnczoKICAgICAgICAgICAgIGNoYW5nZWRfZGF0YTogQ29udGFp bnMgZGF0YSB0byBiZSBzYXZlZAorICAgICAgICAgICAgY29sdW1uc19pbmZv OgorICAgICAgICAgICAgZGVmYXVsdF9jb25uOgorICAgICAgICAgICAgY2xp ZW50X3ByaW1hcnlfa2V5OgogICAgICAgICAiIiIKLQotICAgICAgICBtYW5h Z2VyID0gZ2V0X2RyaXZlcihQR19ERUZBVUxUX0RSSVZFUikuY29ubmVjdGlv bl9tYW5hZ2VyKHNlbGYuc2lkKQotICAgICAgICBjb25uID0gbWFuYWdlci5j b25uZWN0aW9uKGRpZD1zZWxmLmRpZCwgY29ubl9pZD1zZWxmLmNvbm5faWQp CisgICAgICAgIGRyaXZlciA9IGdldF9kcml2ZXIoUEdfREVGQVVMVF9EUklW RVIpCisgICAgICAgIGlmIGRlZmF1bHRfY29ubiBpcyBOb25lOgorICAgICAg ICAgICAgbWFuYWdlciA9IGRyaXZlci5jb25uZWN0aW9uX21hbmFnZXIoc2Vs Zi5zaWQpCisgICAgICAgICAgICBjb25uID0gbWFuYWdlci5jb25uZWN0aW9u KGRpZD1zZWxmLmRpZCwgY29ubl9pZD1zZWxmLmNvbm5faWQpCisgICAgICAg IGVsc2U6CisgICAgICAgICAgICBjb25uID0gZGVmYXVsdF9jb25uCiAKICAg ICAgICAgc3RhdHVzID0gRmFsc2UKICAgICAgICAgcmVzID0gTm9uZQpAQCAt NDIxLDE0ICs0NDksNiBAQCBjbGFzcyBUYWJsZUNvbW1hbmQoR3JpZENvbW1h bmQpOgogICAgICAgICBsaXN0X29mX3NxbCA9IFtdCiAgICAgICAgIF9yb3dp ZCA9IE5vbmUKIAotICAgICAgICAjIFJlcGxhY2UgY29sdW1uIHBvc2l0aW9u cyB3aXRoIG5hbWVzCi0gICAgICAgIGRlZiBzZXRfY29sdW1uX25hbWVzKGRh dGEpOgotICAgICAgICAgICAgbmV3X2RhdGEgPSB7fQotICAgICAgICAgICAg Zm9yIGtleSBpbiBkYXRhOgotICAgICAgICAgICAgICAgIG5ld19kYXRhW2No YW5nZWRfZGF0YVsnY29sdW1ucyddW2ludChrZXkpXVsnbmFtZSddXSA9IGRh dGFba2V5XQotCi0gICAgICAgICAgICByZXR1cm4gbmV3X2RhdGEKLQogICAg ICAgICBpZiBjb25uLmNvbm5lY3RlZCgpOgogCiAgICAgICAgICAgICAjIFN0 YXJ0IHRoZSB0cmFuc2FjdGlvbgpAQCAtNDU0LDI4ICs0NzQsMjYgQEAgY2xh c3MgVGFibGVDb21tYW5kKEdyaWRDb21tYW5kKToKICAgICAgICAgICAgICAg ICAgICAgY29sdW1uX3R5cGUgPSB7fQogICAgICAgICAgICAgICAgICAgICBw a19uYW1lcywgcHJpbWFyeV9rZXlzID0gc2VsZi5nZXRfcHJpbWFyeV9rZXlz KCkKIAotICAgICAgICAgICAgICAgICAgICBmb3IgZWFjaF9jb2wgaW4gc2Vs Zi5jb2x1bW5zX2luZm86CisgICAgICAgICAgICAgICAgICAgIGZvciBlYWNo X2NvbCBpbiBjb2x1bW5zX2luZm86CiAgICAgICAgICAgICAgICAgICAgICAg ICBpZiAoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jb2x1 bW5zX2luZm9bZWFjaF9jb2xdWydub3RfbnVsbCddIGFuZAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgIG5vdCBzZWxmLmNvbHVtbnNfaW5mb1tlYWNo X2NvbF1bCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uc19p bmZvW2VhY2hfY29sXVsnbm90X251bGwnXSBhbmQKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICBub3QgY29sdW1uc19pbmZvW2VhY2hfY29sXVsKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hhc19kZWZhdWx0X3Zh bCddCiAgICAgICAgICAgICAgICAgICAgICAgICApOgogICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbHVtbl9kYXRhW2VhY2hfY29sXSA9IE5vbmUK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5fdHlwZVtlYWNo X2NvbF0gPVwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vs Zi5jb2x1bW5zX2luZm9bZWFjaF9jb2xdWyd0eXBlX25hbWUnXQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zX2luZm9bZWFjaF9j b2xdWyd0eXBlX25hbWUnXQogICAgICAgICAgICAgICAgICAgICAgICAgZWxz ZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5fdHlwZVtl YWNoX2NvbF0gPSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHNlbGYuY29sdW1uc19pbmZvW2VhY2hfY29sXVsndHlwZV9uYW1lJ10KLQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zX2luZm9b ZWFjaF9jb2xdWyd0eXBlX25hbWUnXQogCiAgICAgICAgICAgICAgICAgICAg IGZvciBlYWNoX3JvdyBpbiBjaGFuZ2VkX2RhdGFbb2ZfdHlwZV06CiAgICAg ICAgICAgICAgICAgICAgICAgICBkYXRhID0gY2hhbmdlZF9kYXRhW29mX3R5 cGVdW2VhY2hfcm93XVsnZGF0YSddCiAgICAgICAgICAgICAgICAgICAgICAg ICAjIFJlbW92ZSBvdXIgdW5pcXVlIHRyYWNraW5nIGtleQotICAgICAgICAg ICAgICAgICAgICAgICAgZGF0YS5wb3AoJ19fdGVtcF9QSycsIE5vbmUpCisg ICAgICAgICAgICAgICAgICAgICAgICBkYXRhLnBvcChjbGllbnRfcHJpbWFy eV9rZXksIE5vbmUpCiAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLnBv cCgnaXNfcm93X2NvcGllZCcsIE5vbmUpCi0gICAgICAgICAgICAgICAgICAg ICAgICBkYXRhID0gc2V0X2NvbHVtbl9uYW1lcyhkYXRhKQotICAgICAgICAg ICAgICAgICAgICAgICAgZGF0YV90eXBlID0gc2V0X2NvbHVtbl9uYW1lcyhj aGFuZ2VkX2RhdGFbb2ZfdHlwZV1bZWFjaF9yb3ddWydkYXRhX3R5cGUnXSkK LSAgICAgICAgICAgICAgICAgICAgICAgIGxpc3Rfb2Zfcm93aWQuYXBwZW5k KGRhdGEuZ2V0KCdfX3RlbXBfUEsnKSkKKyAgICAgICAgICAgICAgICAgICAg ICAgIGRhdGFfdHlwZSA9IGNoYW5nZWRfZGF0YVtvZl90eXBlXVtlYWNoX3Jv d11bJ2RhdGFfdHlwZSddCisgICAgICAgICAgICAgICAgICAgICAgICBsaXN0 X29mX3Jvd2lkLmFwcGVuZChkYXRhLmdldChjbGllbnRfcHJpbWFyeV9rZXkp KQogCiAgICAgICAgICAgICAgICAgICAgICAgICAjIFVwZGF0ZSBjb2x1bW5z IHZhbHVlIGFuZCBkYXRhIHR5cGUKICAgICAgICAgICAgICAgICAgICAgICAg ICMgd2l0aCBjb2x1bW5zIGhhdmluZyBub3RfbnVsbD1GYWxzZSBhbmQgaGFz CkBAIC00OTcsOSArNTE1LDkgQEAgY2xhc3MgVGFibGVDb21tYW5kKEdyaWRD b21tYW5kKToKICAgICAgICAgICAgICAgICAjIEZvciB1cGRhdGVkIHJvd3MK ICAgICAgICAgICAgICAgICBlbGlmIG9mX3R5cGUgPT0gJ3VwZGF0ZWQnOgog ICAgICAgICAgICAgICAgICAgICBmb3IgZWFjaF9yb3cgaW4gY2hhbmdlZF9k YXRhW29mX3R5cGVdOgotICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSA9 IHNldF9jb2x1bW5fbmFtZXMoY2hhbmdlZF9kYXRhW29mX3R5cGVdW2VhY2hf cm93XVsnZGF0YSddKQotICAgICAgICAgICAgICAgICAgICAgICAgcGsgPSBz ZXRfY29sdW1uX25hbWVzKGNoYW5nZWRfZGF0YVtvZl90eXBlXVtlYWNoX3Jv d11bJ3ByaW1hcnlfa2V5cyddKQotICAgICAgICAgICAgICAgICAgICAgICAg ZGF0YV90eXBlID0gc2V0X2NvbHVtbl9uYW1lcyhjaGFuZ2VkX2RhdGFbb2Zf dHlwZV1bZWFjaF9yb3ddWydkYXRhX3R5cGUnXSkKKyAgICAgICAgICAgICAg ICAgICAgICAgIGRhdGEgPSBjaGFuZ2VkX2RhdGFbb2ZfdHlwZV1bZWFjaF9y b3ddWydkYXRhJ10KKyAgICAgICAgICAgICAgICAgICAgICAgIHBrID0gY2hh bmdlZF9kYXRhW29mX3R5cGVdW2VhY2hfcm93XVsncHJpbWFyeV9rZXlzJ10K KyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFfdHlwZSA9IGNoYW5nZWRf ZGF0YVtvZl90eXBlXVtlYWNoX3Jvd11bJ2RhdGFfdHlwZSddCiAgICAgICAg ICAgICAgICAgICAgICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpv aW4oW3NlbGYuc3FsX3BhdGgsICd1cGRhdGUuc3FsJ10pLAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFfdG9f YmVfc2F2ZWQ9ZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBwcmltYXJ5X2tleXM9cGssCkBAIC01MTksMTgg KzUzNywxOSBAQCBjbGFzcyBUYWJsZUNvbW1hbmQoR3JpZENvbW1hbmQpOgog ICAgICAgICAgICAgICAgICAgICAgICAgcm93c190b19kZWxldGUuYXBwZW5k KGNoYW5nZWRfZGF0YVtvZl90eXBlXVtlYWNoX3Jvd10pCiAgICAgICAgICAg ICAgICAgICAgICAgICAjIEZldGNoIHRoZSBrZXlzIGZvciBTUUwgZ2VuZXJh dGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgaWYgaXNfZmlyc3Q6Ci0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBXZSBuZWVkIHRvIGNvdmVy dCBkaWN0X2tleXMgdG8gbm9ybWFsIGxpc3QgaW4gUHl0aG9uMwotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICMgSW4gUHl0aG9uMiwgaXQncyBhbHJl YWR5IGEgbGlzdCAmIFdlIHdpbGwgYWxzbyBmZXRjaCBjb2x1bW4gbmFtZXMg dXNpbmcgaW5kZXgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXlz ID0gWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2Vk X2RhdGFbJ2NvbHVtbnMnXVtpbnQoayldWyduYW1lJ10KLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBrIGluIGxpc3QoY2hh bmdlZF9kYXRhW29mX3R5cGVdW2VhY2hfcm93XS5rZXlzKCkpCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICMgV2UgbmVlZCB0byBjb3ZlcnQgZGljdF9rZXlzIHRvIG5vcm1h bCBsaXN0IGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBQeXRo b24zCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBJbiBQeXRob24y LCBpdCdzIGFscmVhZHkgYSBsaXN0ICYgV2Ugd2lsbCBhbHNvCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIyBmZXRjaCBjb2x1bW4gbmFtZXMgdXNp bmcgaW5kZXgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXlzID0g bGlzdChjaGFuZ2VkX2RhdGFbb2ZfdHlwZV1bZWFjaF9yb3ddLmtleXMoKSkK KwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vX29mX2tleXMgPSBs ZW4oa2V5cykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc19maXJz dCA9IEZhbHNlCiAgICAgICAgICAgICAgICAgICAgICMgTWFwIGluZGV4IHdp dGggY29sdW1uIG5hbWUgZm9yIGVhY2ggcm93CiAgICAgICAgICAgICAgICAg ICAgIGZvciByb3cgaW4gcm93c190b19kZWxldGU6CiAgICAgICAgICAgICAg ICAgICAgICAgICBmb3IgaywgdiBpbiByb3cuaXRlbXMoKToKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAjIFNldCBwcmltYXJ5IGtleSB3aXRoIGxh YmVsICYgZGVsZXRlIGluZGV4IGJhc2VkIG1hcHBlZCBrZXkKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAjIFNldCBwcmltYXJ5IGtleSB3aXRoIGxh YmVsICYgZGVsZXRlIGluZGV4IGJhc2VkCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIyBtYXBwZWQga2V5CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy b3dbY2hhbmdlZF9kYXRhWydjb2x1bW5zJ11baW50KGspXVsnbmFtZSddXSA9 IHYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHQgVmFsdWVF cnJvcjoKQEAgLTU5Nyw3ICs2MTYsNyBAQCBjbGFzcyBWaWV3Q29tbWFuZChH cmlkQ29tbWFuZCk6CiAgICAgICAgICMgY2FsbCBiYXNlIGNsYXNzIGluaXQg dG8gZmV0Y2ggdGhlIHRhYmxlIG5hbWUKICAgICAgICAgc3VwZXIoVmlld0Nv bW1hbmQsIHNlbGYpLl9faW5pdF9fKCoqa3dhcmdzKQogCi0gICAgZGVmIGdl dF9zcWwoc2VsZik6CisgICAgZGVmIGdldF9zcWwoc2VsZiwgZGVmYXVsdF9j b25uPU5vbmUpOgogICAgICAgICAiIiIKICAgICAgICAgVGhpcyBtZXRob2Qg aXMgdXNlZCB0byBjcmVhdGUgYSBwcm9wZXIgU1FMIHF1ZXJ5CiAgICAgICAg IHRvIGZldGNoIHRoZSBkYXRhIGZvciB0aGUgc3BlY2lmaWVkIHZpZXcKQEAg LTY1Miw3ICs2NzEsNyBAQCBjbGFzcyBGb3JlaWduVGFibGVDb21tYW5kKEdy aWRDb21tYW5kKToKICAgICAgICAgIyBjYWxsIGJhc2UgY2xhc3MgaW5pdCB0 byBmZXRjaCB0aGUgdGFibGUgbmFtZQogICAgICAgICBzdXBlcihGb3JlaWdu VGFibGVDb21tYW5kLCBzZWxmKS5fX2luaXRfXygqKmt3YXJncykKIAotICAg IGRlZiBnZXRfc3FsKHNlbGYpOgorICAgIGRlZiBnZXRfc3FsKHNlbGYsIGRl ZmF1bHRfY29ubj1Ob25lKToKICAgICAgICAgIiIiCiAgICAgICAgIFRoaXMg bWV0aG9kIGlzIHVzZWQgdG8gY3JlYXRlIGEgcHJvcGVyIFNRTCBxdWVyeQog ICAgICAgICB0byBmZXRjaCB0aGUgZGF0YSBmb3IgdGhlIHNwZWNpZmllZCBm b3JlaWduIHRhYmxlCkBAIC02OTcsNyArNzE2LDcgQEAgY2xhc3MgQ2F0YWxv Z0NvbW1hbmQoR3JpZENvbW1hbmQpOgogICAgICAgICAjIGNhbGwgYmFzZSBj bGFzcyBpbml0IHRvIGZldGNoIHRoZSB0YWJsZSBuYW1lCiAgICAgICAgIHN1 cGVyKENhdGFsb2dDb21tYW5kLCBzZWxmKS5fX2luaXRfXygqKmt3YXJncykK IAotICAgIGRlZiBnZXRfc3FsKHNlbGYpOgorICAgIGRlZiBnZXRfc3FsKHNl bGYsIGRlZmF1bHRfY29ubj1Ob25lKToKICAgICAgICAgIiIiCiAgICAgICAg IFRoaXMgbWV0aG9kIGlzIHVzZWQgdG8gY3JlYXRlIGEgcHJvcGVyIFNRTCBx dWVyeQogICAgICAgICB0byBmZXRjaCB0aGUgZGF0YSBmb3IgdGhlIHNwZWNp ZmllZCBjYXRhbG9nIG9iamVjdApAQCAtNzIyLDcgKzc0MSw3IEBAIGNsYXNz IENhdGFsb2dDb21tYW5kKEdyaWRDb21tYW5kKToKICAgICAgICAgcmV0dXJu IFRydWUKIAogCi1jbGFzcyBRdWVyeVRvb2xDb21tYW5kKEJhc2VDb21tYW5k KToKK2NsYXNzIFF1ZXJ5VG9vbENvbW1hbmQoQmFzZUNvbW1hbmQsIEZldGNo ZWRSb3dUcmFja2VyKToKICAgICAiIiIKICAgICBjbGFzcyBRdWVyeVRvb2xD b21tYW5kKEJhc2VDb21tYW5kKQogCkBAIC03MzIsMTMgKzc1MSwxNSBAQCBj bGFzcyBRdWVyeVRvb2xDb21tYW5kKEJhc2VDb21tYW5kKToKIAogICAgIGRl ZiBfX2luaXRfXyhzZWxmLCAqKmt3YXJncyk6CiAgICAgICAgICMgY2FsbCBi YXNlIGNsYXNzIGluaXQgdG8gZmV0Y2ggdGhlIHRhYmxlIG5hbWUKLSAgICAg ICAgc3VwZXIoUXVlcnlUb29sQ29tbWFuZCwgc2VsZikuX19pbml0X18oKipr d2FyZ3MpCisKKyAgICAgICAgQmFzZUNvbW1hbmQuX19pbml0X18oc2VsZiwg Kiprd2FyZ3MpCisgICAgICAgIEZldGNoZWRSb3dUcmFja2VyLl9faW5pdF9f KHNlbGYsICoqa3dhcmdzKQogCiAgICAgICAgIHNlbGYuY29ubl9pZCA9IE5v bmUKICAgICAgICAgc2VsZi5hdXRvX3JvbGxiYWNrID0gRmFsc2UKICAgICAg ICAgc2VsZi5hdXRvX2NvbW1pdCA9IFRydWUKIAotICAgIGRlZiBnZXRfc3Fs KHNlbGYpOgorICAgIGRlZiBnZXRfc3FsKHNlbGYsIGRlZmF1bHRfY29ubj1O b25lKToKICAgICAgICAgcmV0dXJuIE5vbmUKIAogICAgIGRlZiBjYW5fZWRp dChzZWxmKToKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVk aXRvci9zdGF0aWMvY3NzL3NxbGVkaXRvci5jc3MgYi93ZWIvcGdhZG1pbi90 b29scy9zcWxlZGl0b3Ivc3RhdGljL2Nzcy9zcWxlZGl0b3IuY3NzCmluZGV4 IDcyNjZiMzQuLjhlZDUwMzMgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3Rv b2xzL3NxbGVkaXRvci9zdGF0aWMvY3NzL3NxbGVkaXRvci5jc3MKKysrIGIv d2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL3N0YXRpYy9jc3Mvc3FsZWRp dG9yLmNzcwpAQCAtNDYwLDYgKzQ2MCwxMSBAQCBpbnB1dC5lZGl0b3ItY2hl Y2tib3g6Zm9jdXMgewogICBiYWNrZ3JvdW5kLWNvbG9yOiAjMkM3NkI0Owog fQogCisuc2xpY2stY2VsbCBzcGFuW2RhdGEtY2VsbC10eXBlPSJyb3ctaGVh ZGVyLXNlbGVjdG9yIl0geworICBkaXNwbGF5OiBibG9jazsKKyAgdGV4dC1h bGlnbjogcmlnaHQ7Cit9CisKICNkYXRhZ3JpZCBkaXYuc2xpY2staGVhZGVy LnVpLXN0YXRlLWRlZmF1bHQgewogICBiYWNrZ3JvdW5kOiAjZmZmZmZmOwog ICBib3JkZXItYm90dG9tOiBub25lOwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRt aW4vdG9vbHMvc3FsZWRpdG9yL3RlbXBsYXRlcy9zcWxlZGl0b3IvanMvc3Fs ZWRpdG9yLmpzIGIvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL3RlbXBs YXRlcy9zcWxlZGl0b3IvanMvc3FsZWRpdG9yLmpzCmluZGV4IGI5ZjAxN2Uu LjViNmJiY2MgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVk aXRvci90ZW1wbGF0ZXMvc3FsZWRpdG9yL2pzL3NxbGVkaXRvci5qcworKysg Yi93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3IvdGVtcGxhdGVzL3NxbGVk aXRvci9qcy9zcWxlZGl0b3IuanMKQEAgLTMzLDcgKzMzLDggQEAgZGVmaW5l KFsKICAgICAnc2xpY2tncmlkL3BsdWdpbnMvc2xpY2suY2VsbHNlbGVjdGlv bm1vZGVsJywKICAgICAnc2xpY2tncmlkL3BsdWdpbnMvc2xpY2suY2VsbGNv cHltYW5hZ2VyJywKICAgICAnc2xpY2tncmlkL3BsdWdpbnMvc2xpY2sucm93 c2VsZWN0aW9ubW9kZWwnLAotICAgICdzbGlja2dyaWQvc2xpY2suZ3JpZCcK KyAgICAnc2xpY2tncmlkL3NsaWNrLmdyaWQnLAorICAgICdzbGlja2dyaWQv c2xpY2suZGF0YXZpZXcnCiBdLCBmdW5jdGlvbigKICAgJCwgXywgUywgYWxl cnRpZnksIHBnQWRtaW4sIEJhY2tib25lLCBCYWNrZ3JpZCwgQ29kZU1pcnJv ciwKICAgcGdFeHBsYWluLCBHcmlkU2VsZWN0b3IsIEFjdGl2ZUNlbGxDYXB0 dXJlLCBjbGlwYm9hcmQsIGNvcHlEYXRhLCBSYW5nZVNlbGVjdGlvbkhlbHBl ciwgaGFuZGxlUXVlcnlPdXRwdXRLZXlib2FyZEV2ZW50LApAQCAtNDcwLDcg KzQ3MSw3IEBAIGRlZmluZShbCiAgICAgICAgICAtIHN0YWdlZF9yb3dzOgog ICAgICAgICAgICBUaGlzIHdpbGwgaG9sZCBhbGwgdGhlIGRhdGEgd2hpY2gg dXNlciBjb3BpZXMvcGFzdGVzL2RlbGV0ZXMgaW4gZ3JpZAogICAgICAgICAg LSBkZWxldGVkOgotICAgICAgICAgICBUaGlzIHdpbGwgaG9sZCBhbGwgdGhl IGRhdGEgd2hpY2ggdXNlciBkZWxldHMgaW4gZ3JpZAorICAgICAgICAgICBU aGlzIHdpbGwgaG9sZCBhbGwgdGhlIGRhdGEgd2hpY2ggdXNlciBkZWxldGVz IGluIGdyaWQKIAogICAgICAgIEV2ZW50cyBoYW5kbGluZzoKICAgICAgICAt LS0tLS0tLS0tLS0tLS0tCkBAIC00ODYsMzQgKzQ4NywxMCBAQCBkZWZpbmUo WwogICAgICAgICAgICAtIFdlIGFyZSB1c2luZyB0aGlzIGV2ZW50IGZvciBD b3B5IG9wZXJhdGlvbiBvbiBncmlkCiAgICAgICAgKi8KIAotICAgICAgLy8g R2V0IHRoZSBpdGVtIGNvbHVtbiB2YWx1ZSB1c2luZyBhIGN1c3RvbSAnZmll bGRJZHgnIGNvbHVtbiBwYXJhbQotICAgICAgZ2V0X2l0ZW1fY29sdW1uX3Zh bHVlOiBmdW5jdGlvbiAoaXRlbSwgY29sdW1uKSB7Ci0gICAgICAgIGlmIChj b2x1bW4ucG9zICE9PSB1bmRlZmluZWQpIHsKLSAgICAgICAgICByZXR1cm4g aXRlbVtjb2x1bW4ucG9zXTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg ICByZXR1cm4gbnVsbDsKLSAgICAgICAgfQotICAgICAgfSwKLQogICAgICAg Ly8gVGhpcyBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSB0byBjcmVhdGUgYW5k IHJlbmRlciB0aGUgU2xpY2tHcmlkLgotICAgICAgcmVuZGVyX2dyaWQ6IGZ1 bmN0aW9uKGNvbGxlY3Rpb24sIGNvbHVtbnMsIGlzX2VkaXRhYmxlKSB7Cisg ICAgICByZW5kZXJfZ3JpZDogZnVuY3Rpb24oY29sbGVjdGlvbiwgY29sdW1u cywgaXNfZWRpdGFibGUsIGNsaWVudF9wcmltYXJ5X2tleSwgcm93c19hZmZl Y3RlZCkgewogICAgICAgICB2YXIgc2VsZiA9IHRoaXM7CiAKLSAgICAgICAg Ly8gcmV0dXJucyBwcmltYXJ5IGtleXMKLSAgICAgICAgc2VsZi5oYW5kbGVy LmdldF9yb3dfcHJpbWFyeV9rZXkgPSBmdW5jdGlvbigpIHsKLSAgICAgICAg ICB2YXIgc2VsZiA9IHRoaXMsCi0gICAgICAgICAgICB0bXBfa2V5cyA9IFtd OwotICAgICAgICAgIF8uZWFjaChzZWxmLnByaW1hcnlfa2V5cywgZnVuY3Rp b24ocCwgaWR4KSB7Ci0gICAgICAgICAgICAvLyBGb3IgZWFjaCBjb2x1bW5z IHNlYXJjaCBwcmltYXJ5IGtleSBwb3NpdGlvbgotICAgICAgICAgICAgXy5l YWNoKHNlbGYuY29sdW1ucywgZnVuY3Rpb24oYykgewotICAgICAgICAgICAg ICAgaWYoYy5uYW1lID09IGlkeCkgewotICAgICAgICAgICAgICAgICB0bXBf a2V5cy5wdXNoKGMucG9zKTsKLSAgICAgICAgICAgICAgIH0KLSAgICAgICAg ICAgIH0pOwotICAgICAgICAgIH0pOwotICAgICAgICAgIHJldHVybiB0bXBf a2V5czsKLSAgICAgICAgfTsKLQogICAgICAgICAvLyBUaGlzIHdpbGwgd29y ayBhcyBkYXRhIHN0b3JlIGFuZCBob2xkcyBhbGwgdGhlCiAgICAgICAgIC8v IGluc2VydGVkL3VwZGF0ZWQvZGVsZXRlZCBkYXRhIGZyb20gZ3JpZAogICAg ICAgICBzZWxmLmhhbmRsZXIuZGF0YV9zdG9yZSA9IHsKQEAgLTUyOCw4ICs1 MDUsOSBAQCBkZWZpbmUoWwogICAgICAgICAvLyBUbyBzdG9yZSBwcmltYXJ5 IGtleXMgYmVmb3JlIHRoZXkgZ2V0cyBjaGFuZ2VkCiAgICAgICAgIHNlbGYu aGFuZGxlci5wcmltYXJ5X2tleXNfZGF0YSA9IHt9OwogCi0gICAgICAgIC8v IEFkZCBnZXRJdGVtTWV0YWRhdGEgaW50byBoYW5kbGVyIGZvciBsYXRlciB1 c2UKLSAgICAgICAgc2VsZi5oYW5kbGVyLmRhdGFfdmlldyA9IGNvbGxlY3Rp b247CisgICAgICAgIHNlbGYuY2xpZW50X3ByaW1hcnlfa2V5ID0gY2xpZW50 X3ByaW1hcnlfa2V5OworCisgICAgICAgIHNlbGYuY2xpZW50X3ByaW1hcnlf a2V5X2NvdW50ZXIgPSAwOwogCiAgICAgICAgIC8vIFJlbW92ZSBhbnkgZXhp c3RpbmcgZ3JpZCBmaXJzdAogICAgICAgICBpZiAoc2VsZi5oYW5kbGVyLnNs aWNrZ3JpZCkgewpAQCAtNjA3LDcgKzU4NSwxMiBAQCBkZWZpbmUoWwogICAg ICAgICB9KTsKIAogICAgICAgICB2YXIgZ3JpZFNlbGVjdG9yID0gbmV3IEdy aWRTZWxlY3RvcigpOwotICAgICAgICBncmlkX2NvbHVtbnMgPSBncmlkU2Vs ZWN0b3IuZ2V0Q29sdW1uRGVmaW5pdGlvbnMoZ3JpZF9jb2x1bW5zKTsKKyAg ICAgICAgZ3JpZF9jb2x1bW5zID0gc2VsZi5ncmlkX2NvbHVtbnMgPSBncmlk U2VsZWN0b3IuZ2V0Q29sdW1uRGVmaW5pdGlvbnMoZ3JpZF9jb2x1bW5zKTsK KworICAgICAgICBpZiAocm93c19hZmZlY3RlZCkgeworICAgICAgICAgIC8v IGNhbGN1bGF0ZSB3aXRoIGZvciBoZWFkZXIgcm93IGNvbHVtbi4KKyAgICAg ICAgZ3JpZF9jb2x1bW5zWzBdWyd3aWR0aCddID0gU3FsRWRpdG9yVXRpbHMu Y2FsY3VsYXRlQ29sdW1uV2lkdGgocm93c19hZmZlY3RlZCk7CisgICAgICAg IH0KIAogICAgICAgICB2YXIgZ3JpZF9vcHRpb25zID0gewogICAgICAgICAg IGVkaXRhYmxlOiB0cnVlLApAQCAtNjE1LDggKzU5OCw3IEBAIGRlZmluZShb CiAgICAgICAgICAgZW5hYmxlQ2VsbE5hdmlnYXRpb246IHRydWUsCiAgICAg ICAgICAgZW5hYmxlQ29sdW1uUmVvcmRlcjogZmFsc2UsCiAgICAgICAgICAg YXN5bmNFZGl0b3JMb2FkaW5nOiBmYWxzZSwKLSAgICAgICAgICBhdXRvRWRp dDogZmFsc2UsCi0gICAgICAgICAgZGF0YUl0ZW1Db2x1bW5WYWx1ZUV4dHJh Y3RvcjogdGhpcy5nZXRfaXRlbV9jb2x1bW5fdmFsdWUKKyAgICAgICAgICBh dXRvRWRpdDogZmFsc2UKICAgICAgICAgfTsKIAogICAgICAgICB2YXIgJGRh dGFfZ3JpZCA9IHNlbGYuJGVsLmZpbmQoJyNkYXRhZ3JpZCcpOwpAQCAtNjI0 LDE3ICs2MDYsMTUgQEAgZGVmaW5lKFsKICAgICAgICAgdmFyIGdyaWRfaGVp Z2h0ID0gJCgkKCcjZWRpdG9yLXBhbmVsJykuZmluZCgnLndjRnJhbWUnKVsx XSkuaGVpZ2h0KCkgLSAzNTsKICAgICAgICAgJGRhdGFfZ3JpZC5oZWlnaHQo Z3JpZF9oZWlnaHQpOwogCi0gICAgICAgIC8vIEFkZCBvdXIgb3duIGN1c3Rv bSBwcmltYXJ5IGtleSB0byBrZWVwIHRyYWNrIG9mIGNoYW5nZXMKLSAgICAg ICAgXy5lYWNoKGNvbGxlY3Rpb24sIGZ1bmN0aW9uKHJvdyl7Ci0gICAgICAg ICAgcm93WydfX3RlbXBfUEsnXSA9IFNxbEVkaXRvclV0aWxzLmVwaWNSYW5k b21TdHJpbmcoMTUpOwotICAgICAgICB9KTsKKyAgICAgICAgdmFyIGRhdGFW aWV3ID0gc2VsZi5kYXRhVmlldyA9IG5ldyBTbGljay5EYXRhLkRhdGFWaWV3 KCksCisgICAgICAgICAgICBncmlkID0gc2VsZi5ncmlkID0gbmV3IFNsaWNr LkdyaWQoJGRhdGFfZ3JpZCwgZGF0YVZpZXcsIGdyaWRfY29sdW1ucywgZ3Jp ZF9vcHRpb25zKTsKIAogICAgICAgICAvLyBBZGQtb24gZnVuY3Rpb24gd2hp Y2ggYWxsb3cgdXMgdG8gaWRlbnRpZnkgdGhlIGZhdWx0eSByb3cgYWZ0ZXIg aW5zZXJ0L3VwZGF0ZQogICAgICAgICAvLyBhbmQgYXBwbHkgY3NzIGFjY29y ZGluZ2x5Ci0gICAgICAgIGNvbGxlY3Rpb24uZ2V0SXRlbU1ldGFkYXRhID0g ZnVuY3Rpb24oaSkgewotICAgICAgICAgIHZhciByZXMgPSB7fSwKLSAgICAg ICAgICAgIGNzc0NsYXNzID0gJycsCi0gICAgICAgICAgICBkYXRhX3N0b3Jl ID0gc2VsZi5oYW5kbGVyLmRhdGFfc3RvcmU7CisKKyAgICAgICAgZGF0YVZp ZXcuZ2V0SXRlbU1ldGFkYXRhID0gZnVuY3Rpb24oaSkgeworICAgICAgICAg IHZhciByZXMgPSB7fSwgY3NzQ2xhc3MgPSAnJywKKyAgICAgICAgICAgICAg ZGF0YV9zdG9yZSA9IHNlbGYuaGFuZGxlci5kYXRhX3N0b3JlOwogCiAgICAg ICAgICAgaWYgKF8uaGFzKHNlbGYuaGFuZGxlciwgJ2RhdGFfc3RvcmUnKSkg ewogICAgICAgICAgICAgaWYgKGkgaW4gZGF0YV9zdG9yZS5hZGRlZF9pbmRl eCAmJgpAQCAtNjU3LDkgKzYzNyw4IEBAIGRlZmluZShbCiAgICAgICAgICAg ICBjc3NDbGFzcyArPSAnIGRpc2FibGVkX3Jvdyc7CiAgICAgICAgICAgfQog ICAgICAgICAgIHJldHVybiB7J2Nzc0NsYXNzZXMnOiBjc3NDbGFzc307Ci0g ICAgICAgIH0KKyAgICAgICAgfTsKIAotICAgICAgICB2YXIgZ3JpZCA9IG5l dyBTbGljay5HcmlkKCRkYXRhX2dyaWQsIGNvbGxlY3Rpb24sIGdyaWRfY29s dW1ucywgZ3JpZF9vcHRpb25zKTsKICAgICAgICAgZ3JpZC5yZWdpc3RlclBs dWdpbiggbmV3IFNsaWNrLkF1dG9Ub29sdGlwcyh7IGVuYWJsZUZvckhlYWRl ckNlbGxzOiBmYWxzZSB9KSApOwogICAgICAgICBncmlkLnJlZ2lzdGVyUGx1 Z2luKG5ldyBBY3RpdmVDZWxsQ2FwdHVyZSgpKTsKICAgICAgICAgZ3JpZC5z ZXRTZWxlY3Rpb25Nb2RlbChuZXcgWENlbGxTZWxlY3Rpb25Nb2RlbCgpKTsK QEAgLTY3MSw3ICs2NTAsOCBAQCBkZWZpbmUoWwogICAgICAgICAgIGNvbHVt bnM6IGNvbHVtbnMsCiAgICAgICAgICAgZ3JpZDogZ3JpZCwKICAgICAgICAg ICBzZWxlY3Rpb246IGdyaWQuZ2V0U2VsZWN0aW9uTW9kZWwoKSwKLSAgICAg ICAgICBlZGl0b3I6IHNlbGYKKyAgICAgICAgICBlZGl0b3I6IHNlbGYsCisg ICAgICAgICAgY2xpZW50X3ByaW1hcnlfa2V5OiBzZWxmLmNsaWVudF9wcmlt YXJ5X2tleQogICAgICAgICB9OwogCiAgICAgICAgIHNlbGYuaGFuZGxlci5z bGlja2dyaWQgPSBncmlkOwpAQCAtNjkwLDYgKzY3MCw0MiBAQCBkZWZpbmUo WwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwogCisgICAgICAgIGdy aWRTZWxlY3Rvci5vbkJlZm9yZUdyaWRTZWxlY3RBbGwuc3Vic2NyaWJlKGZ1 bmN0aW9uKGUsIGFyZ3MpIHsKKyAgICAgICAgICBpZiAoc2VsZi5oYW5kbGVy Lmhhc19tb3JlX3Jvd3MpIHsKKyAgICAgICAgICAgIC8vIHRoaXMgd2lsbCBw cmV2ZW50IHNlbGVjdGlvbiB1bi10aWxsIHdlIGxvYWQgYWxsIGRhdGEKKyAg ICAgICAgICAgIGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7CisgICAg ICAgICAgICBzZWxmLmZldGNoX25leHRfYWxsKGZ1bmN0aW9uKCkgeworICAg ICAgICAgICAgICAvLyBzaW5jZSB3ZSd2ZSBzdG9wcGVkIGV2ZW50IHByb3Bh Z2F0aW9uIHdlIG5lZWQgdG8KKyAgICAgICAgICAgICAgLy8gdHJpZ2dlciBv bkdyaWRTZWxlY3RBbGwgbWFudWFsbHkgd2l0aCBuZXcgZXZlbnQgZGF0YS4K KyAgICAgICAgICAgICAgZ3JpZFNlbGVjdG9yLm9uR3JpZFNlbGVjdEFsbC5u b3RpZnkoYXJncywgbmV3IFNsaWNrLkV2ZW50RGF0YSgpKTsKKyAgICAgICAg ICAgIH0pOworICAgICAgICAgIH0KKyAgICAgICAgfSk7CisKKyAgICAgICAg Z3JpZFNlbGVjdG9yLm9uQmVmb3JlR3JpZENvbHVtblNlbGVjdEFsbC5zdWJz Y3JpYmUoZnVuY3Rpb24oZSwgYXJncykgeworICAgICAgICAgIGlmIChzZWxm LmhhbmRsZXIuaGFzX21vcmVfcm93cykgeworICAgICAgICAgICAgLy8gdGhp cyB3aWxsIHByZXZlbnQgc2VsZWN0aW9uIHVuLXRpbGwgd2UgbG9hZCBhbGwg ZGF0YQorICAgICAgICAgICAgZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24o KTsKKyAgICAgICAgICAgIHNlbGYuZmV0Y2hfbmV4dF9hbGwoZnVuY3Rpb24o KSB7CisgICAgICAgICAgICAgIC8vIHNpbmNlIHdlJ3ZlIHN0b3BwZWQgZXZl bnQgcHJvcGFnYXRpb24gd2UgbmVlZCB0bworICAgICAgICAgICAgICAvLyB0 cmlnZ2VyIG9uR3JpZENvbHVtblNlbGVjdEFsbCBtYW51YWxseSB3aXRoIG5l dyBldmVudCBkYXRhLgorICAgICAgICAgICAgICBncmlkU2VsZWN0b3Iub25H cmlkQ29sdW1uU2VsZWN0QWxsLm5vdGlmeShhcmdzLCBuZXcgU2xpY2suRXZl bnREYXRhKCkpOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgfQorICAg ICAgICB9KTsKKworICAgICAgICAvLyBsaXN0ZW4gZm9yIHJvdyBjb3VudCBj aGFuZ2UuCisgICAgICAgIGRhdGFWaWV3Lm9uUm93Q291bnRDaGFuZ2VkLnN1 YnNjcmliZShmdW5jdGlvbiAoZSwgYXJncykgeworICAgICAgICAgIGdyaWQu dXBkYXRlUm93Q291bnQoKTsKKyAgICAgICAgICBncmlkLnJlbmRlcigpOwor ICAgICAgICB9KTsKKworICAgICAgICAvLyBsaXN0ZW4gZm9yIHJvd3MgY2hh bmdlLgorICAgICAgICBkYXRhVmlldy5vblJvd3NDaGFuZ2VkLnN1YnNjcmli ZShmdW5jdGlvbiAoZSwgYXJncykgeworICAgICAgICAgIGdyaWQuaW52YWxp ZGF0ZVJvd3MoYXJncy5yb3dzKTsKKyAgICAgICAgICBncmlkLnJlbmRlcigp OworICAgICAgICB9KTsKKwogICAgICAgICAvLyBMaXN0ZW5lciBmdW5jdGlv biB3aGljaCB3aWxsIGJlIGNhbGxlZCBiZWZvcmUgdXNlciB1cGRhdGVzIGV4 aXN0aW5nIGNlbGwKICAgICAgICAgLy8gVGhpcyB3aWxsIGJlIHVzZWQgdG8g Y29sbGVjdCBwcmltYXJ5IGtleSBmb3IgdGhhdCByb3cKICAgICAgICAgZ3Jp ZC5vbkJlZm9yZUVkaXRDZWxsLnN1YnNjcmliZShmdW5jdGlvbiAoZSwgYXJn cykgewpAQCAtNzAyLDggKzcxOCw4IEBAIGRlZmluZShbCiAgICAgICAgICAg ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAg ICAgaWYoc2VsZi5oYW5kbGVyLmNhbl9lZGl0ICYmIGJlZm9yZV9kYXRhICYm ICdfX3RlbXBfUEsnIGluIGJlZm9yZV9kYXRhKSB7Ci0gICAgICAgICAgICAg IHZhciBfcGsgPSBiZWZvcmVfZGF0YS5fX3RlbXBfUEssCisgICAgICAgICAg ICBpZihzZWxmLmhhbmRsZXIuY2FuX2VkaXQgJiYgYmVmb3JlX2RhdGEgJiYg c2VsZi5jbGllbnRfcHJpbWFyeV9rZXkgaW4gYmVmb3JlX2RhdGEpIHsKKyAg ICAgICAgICAgICAgdmFyIF9wayA9IGJlZm9yZV9kYXRhW3NlbGYuY2xpZW50 X3ByaW1hcnlfa2V5XSwKICAgICAgICAgICAgICAgICBfa2V5cyA9IHNlbGYu aGFuZGxlci5wcmltYXJ5X2tleXMsCiAgICAgICAgICAgICAgICAgY3VycmVu dF9wayA9IHt9LCBlYWNoX3BrX2tleSA9IHt9OwogCkBAIC03MTUsMjIgKzcz MSwzNCBAQCBkZWZpbmUoWwogICAgICAgICAgICAgICAvLyBGZXRjaCBwcmlt YXJ5IGtleXMgZm9yIHRoZSByb3cgYmVmb3JlIHRoZXkgZ2V0cyBtb2RpZmll ZAogICAgICAgICAgICAgICB2YXIgX2NvbHVtbnMgPSBzZWxmLmhhbmRsZXIu Y29sdW1uczsKICAgICAgICAgICAgICAgXy5lYWNoKF9rZXlzLCBmdW5jdGlv bih2YWx1ZSwga2V5KSB7Ci0gICAgICAgICAgICAgICAgcG9zID0gXy53aGVy ZShfY29sdW1ucywge25hbWU6IGtleX0pWzBdWydwb3MnXQotICAgICAgICAg ICAgICAgIGN1cnJlbnRfcGtbcG9zXSA9IGJlZm9yZV9kYXRhW3Bvc107Cisg ICAgICAgICAgICAgICAgY3VycmVudF9wa1trZXldID0gYmVmb3JlX2RhdGFb a2V5XTsKICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgIC8vIFBs YWNlIGl0IGluIG1haW4gdmFyaWFibGUgZm9yIGxhdGVyIHVzZQogICAgICAg ICAgICAgICBzZWxmLmhhbmRsZXIucHJpbWFyeV9rZXlzX2RhdGFbX3BrXSA9 IGN1cnJlbnRfcGsKICAgICAgICAgICAgIH0KICAgICAgICAgfSk7CiAKLSAg ICAgICAgZ3JpZC5vbktleURvd24uc3Vic2NyaWJlKGhhbmRsZVF1ZXJ5T3V0 cHV0S2V5Ym9hcmRFdmVudCk7CisgICAgICAgIGdyaWQub25LZXlEb3duLnN1 YnNjcmliZShmdW5jdGlvbihldmVudCwgYXJncykgeworICAgICAgICAgIHZh ciBLRVlfQSA9IDY1OworICAgICAgICAgIHZhciBtb2RpZmllZEtleSA9IGV2 ZW50LmtleUNvZGU7CisgICAgICAgICAgdmFyIGlzTW9kaWZpZXJEb3duID0g ZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5OworICAgICAgICAgIC8v IEludGVyY2VwdCBDdHJsL0NtZCArIEEga2V5IGJvYXJkIGV2ZW50LgorICAg ICAgICAgIC8vIEFzIHdlIG1pZ2h0IHdhbnQgdG8gbG9hZCBhbGwgcm93cyBi ZWZvcmUgc2VsZWN0aW5nIGFsbC4KKyAgICAgICAgICBpZiAoaXNNb2RpZmll ckRvd24gJiYgbW9kaWZpZWRLZXkgPT0gS0VZX0EgJiYgc2VsZi5oYW5kbGVy Lmhhc19tb3JlX3Jvd3MpIHsKKyAgICAgICAgICAgIHNlbGYuZmV0Y2hfbmV4 dF9hbGwoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgIGhhbmRsZVF1ZXJ5 T3V0cHV0S2V5Ym9hcmRFdmVudChldmVudCwgYXJncyk7CisgICAgICAgICAg ICB9KTsKKyAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaGFuZGxl UXVlcnlPdXRwdXRLZXlib2FyZEV2ZW50KGV2ZW50LCBhcmdzKTsKKyAgICAg ICAgICB9CisgICAgICAgIH0pOwogCiAgICAgICAgIC8vIExpc3RlbmVyIGZ1 bmN0aW9uIHdoaWNoIHdpbGwgYmUgY2FsbGVkIHdoZW4gdXNlciB1cGRhdGVz IGV4aXN0aW5nIHJvd3MKICAgICAgICAgZ3JpZC5vbkNlbGxDaGFuZ2Uuc3Vi c2NyaWJlKGZ1bmN0aW9uIChlLCBhcmdzKSB7CiAgICAgICAgICAgLy8gc2Vs Zi5oYW5kbGVyLmRhdGFfc3RvcmUudXBkYXRlZCB3aWxsIGhvbGRzIGFsbCB0 aGUgdXBkYXRlZCBkYXRhCi0gICAgICAgICAgdmFyIGNoYW5nZWRfY29sdW1u ID0gYXJncy5ncmlkLmdldENvbHVtbnMoKVthcmdzLmNlbGxdLnBvcywgLy8g Q3VycmVudCBmaWVsZCBwb3MKKyAgICAgICAgICB2YXIgY2hhbmdlZF9jb2x1 bW4gPSBhcmdzLmdyaWQuZ2V0Q29sdW1ucygpW2FyZ3MuY2VsbF0uZmllbGQs CiAgICAgICAgICAgICB1cGRhdGVkX2RhdGEgPSBhcmdzLml0ZW1bY2hhbmdl ZF9jb2x1bW5dLCAgICAgICAgICAgICAgICAgICAvLyBOZXcgdmFsdWUgZm9y IGN1cnJlbnQgZmllbGQKLSAgICAgICAgICAgIF9wayA9IGFyZ3MuaXRlbS5f X3RlbXBfUEsgfHwgbnVsbCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8v IFVuaXF1ZSBrZXkgdG8gaWRlbnRpZnkgcm93CisgICAgICAgICAgICBfcGsg PSBhcmdzLml0ZW1bc2VsZi5jbGllbnRfcHJpbWFyeV9rZXldIHx8IG51bGws ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBVbmlxdWUga2V5IHRvIGlk ZW50aWZ5IHJvdwogICAgICAgICAgICAgY29sdW1uX2RhdGEgPSB7fSwKICAg ICAgICAgICAgIF90eXBlOwogCkBAIC03NDAsMTEgKzc2OCwxNiBAQCBkZWZp bmUoWwogICAgICAgICAgIC8vIHNvIHRoYXQgY2VsbCBlZGl0IGlzIGVuYWJs ZWQgZm9yIHRoYXQgcm93LgogICAgICAgICAgIHZhciBncmlkID0gYXJncy5n cmlkLAogICAgICAgICAgICAgcm93X2RhdGEgPSBncmlkLmdldERhdGFJdGVt KGFyZ3Mucm93KSwKLSAgICAgICAgICAgIHBfa2V5c19saXN0ID0gXy5waWNr KAotICAgICAgICAgICAgICByb3dfZGF0YSwgc2VsZi5oYW5kbGVyLmdldF9y b3dfcHJpbWFyeV9rZXkoKQotICAgICAgICAgICAgKSwKLSAgICAgICAgICAg IGlzX3ByaW1hcnlfa2V5ID0gT2JqZWN0LmtleXMocF9rZXlzX2xpc3QpLmxl bmd0aCA/Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBfa2V5c19s aXN0WzBdIDogdW5kZWZpbmVkOworICAgICAgICAgICAgaXNfcHJpbWFyeV9r ZXkgPSBfLmFsbCgKKyAgICAgICAgICAgICAgICBfLnZhbHVlcygKKyAgICAg ICAgICAgICAgICAgIF8ucGljaygKKyAgICAgICAgICAgICAgICAgICAgICBy b3dfZGF0YSwgc2VsZi5wcmltYXJ5X2tleXMKKyAgICAgICAgICAgICAgICAg ICkKKyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgIGZ1bmN0 aW9uKHZhbCkgeworICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbCAhPSB1 bmRlZmluZWQKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICk7 CiAKICAgICAgICAgICAvLyB0ZW1wX25ld19yb3dzIGlzIGF2YWlsYWJsZSBv bmx5IGZvciB2aWV3IGRhdGEuCiAgICAgICAgICAgaWYgKGlzX3ByaW1hcnlf a2V5ICYmIHNlbGYuaGFuZGxlci50ZW1wX25ld19yb3dzKSB7CkBAIC03NjQs NyArNzk3LDcgQEAgZGVmaW5lKFsKICAgICAgICAgICAgICAgICAgIGNvbHVt bl9kYXRhKTsKICAgICAgICAgICAgICAgLy9GaW5kIHR5cGUgZm9yIGN1cnJl bnQgY29sdW1uCiAgICAgICAgICAgICAgIHNlbGYuaGFuZGxlci5kYXRhX3N0 b3JlLmFkZGVkW19wa11bJ2VyciddID0gZmFsc2UKLSAgICAgICAgICAgICAg c2VsZi5oYW5kbGVyLmRhdGFfc3RvcmUuYWRkZWRbX3BrXVsnZGF0YV90eXBl J11bY2hhbmdlZF9jb2x1bW5dID0gXy53aGVyZSh0aGlzLmNvbHVtbnMsIHtw b3M6IGNoYW5nZWRfY29sdW1ufSlbMF1bJ3R5cGUnXTsKKyAgICAgICAgICAg ICAgc2VsZi5oYW5kbGVyLmRhdGFfc3RvcmUuYWRkZWRbX3BrXVsnZGF0YV90 eXBlJ11bY2hhbmdlZF9jb2x1bW5dID0gXy53aGVyZSh0aGlzLmNvbHVtbnMs IHtuYW1lOiBjaGFuZ2VkX2NvbHVtbn0pWzBdWyd0eXBlJ107CiAgICAgICAg ICAgICAvLyBDaGVjayBpZiBpdCBpcyB1cGRhdGVkIGRhdGEgZnJvbSBleGlz dGluZyByb3dzPwogICAgICAgICAgICAgfSBlbHNlIGlmKF9wayBpbiBzZWxm LmhhbmRsZXIuZGF0YV9zdG9yZS51cGRhdGVkKSB7CiAgICAgICAgICAgICAg IF8uZXh0ZW5kKApAQCAtNzc0LDcgKzgwNyw3IEBAIGRlZmluZShbCiAgICAg ICAgICAgICAgIHNlbGYuaGFuZGxlci5kYXRhX3N0b3JlLnVwZGF0ZWRbX3Br XVsnZXJyJ10gPSBmYWxzZQogCiAgICAgICAgICAgICAgLy9GaW5kIHR5cGUg Zm9yIGN1cnJlbnQgY29sdW1uCi0gICAgICAgICAgICAgc2VsZi5oYW5kbGVy LmRhdGFfc3RvcmUudXBkYXRlZFtfcGtdWydkYXRhX3R5cGUnXVtjaGFuZ2Vk X2NvbHVtbl0gPSBfLndoZXJlKHRoaXMuY29sdW1ucywge3BvczogY2hhbmdl ZF9jb2x1bW59KVswXVsndHlwZSddOworICAgICAgICAgICAgIHNlbGYuaGFu ZGxlci5kYXRhX3N0b3JlLnVwZGF0ZWRbX3BrXVsnZGF0YV90eXBlJ11bY2hh bmdlZF9jb2x1bW5dID0gXy53aGVyZSh0aGlzLmNvbHVtbnMsIHtuYW1lOiBj aGFuZ2VkX2NvbHVtbn0pWzBdWyd0eXBlJ107CiAgICAgICAgICAgICB9IGVs c2UgewogICAgICAgICAgICAgICAvLyBGaXJzdCB1cGRhdGVkIGRhdGEgZm9y IHRoaXMgcHJpbWFyeSBrZXkKICAgICAgICAgICAgICAgc2VsZi5oYW5kbGVy LmRhdGFfc3RvcmUudXBkYXRlZFtfcGtdID0gewpAQCAtNzg0LDcgKzgxNyw3 IEBAIGRlZmluZShbCiAgICAgICAgICAgICAgIHNlbGYuaGFuZGxlci5kYXRh X3N0b3JlLnVwZGF0ZWRfaW5kZXhbYXJncy5yb3ddID0gX3BrOwogICAgICAg ICAgICAgICAvLyBGaW5kICYgYWRkIGNvbHVtbiBkYXRhIHR5cGUgZm9yIGN1 cnJlbnQgY2hhbmdlZCBjb2x1bW4KICAgICAgICAgICAgICAgdmFyIHRlbXAg PSB7fTsKLSAgICAgICAgICAgICAgdGVtcFtjaGFuZ2VkX2NvbHVtbl0gPSBf LndoZXJlKHRoaXMuY29sdW1ucywge3BvczogY2hhbmdlZF9jb2x1bW59KVsw XVsndHlwZSddOworICAgICAgICAgICAgICB0ZW1wW2NoYW5nZWRfY29sdW1u XSA9IF8ud2hlcmUodGhpcy5jb2x1bW5zLCB7bmFtZTogY2hhbmdlZF9jb2x1 bW59KVswXVsndHlwZSddOwogICAgICAgICAgICAgICBzZWxmLmhhbmRsZXIu ZGF0YV9zdG9yZS51cGRhdGVkW19wa11bJ2RhdGFfdHlwZSddID0gdGVtcDsK ICAgICAgICAgICAgIH0KICAgICAgICAgICB9CkBAIC04MDMsMTEgKzgzNiwx MCBAQCBkZWZpbmUoWwogICAgICAgICAvLyBMaXN0ZW5lciBmdW5jdGlvbiB3 aGljaCB3aWxsIGJlIGNhbGxlZCB3aGVuIHVzZXIgYWRkcyBuZXcgcm93cwog ICAgICAgICBncmlkLm9uQWRkTmV3Um93LnN1YnNjcmliZShmdW5jdGlvbiAo ZSwgYXJncykgewogICAgICAgICAgIC8vIHNlbGYuaGFuZGxlci5kYXRhX3N0 b3JlLmFkZGVkIHdpbGwgaG9sZHMgYWxsIHRoZSBuZXdseSBhZGRlZCByb3dz L2RhdGEKLSAgICAgICAgICB2YXIgX2tleSA9IFNxbEVkaXRvclV0aWxzLmVw aWNSYW5kb21TdHJpbmcoMTApLAotICAgICAgICAgICAgY29sdW1uID0gYXJn cy5jb2x1bW4sCi0gICAgICAgICAgICBpdGVtID0gYXJncy5pdGVtLAotICAg ICAgICAgICAgZGF0YV9sZW5ndGggPSB0aGlzLmdyaWQuZ2V0RGF0YUxlbmd0 aCgpLAotICAgICAgICAgICAgbmV3X2NvbGxlY3Rpb24gPSBhcmdzLmdyaWQu Z2V0RGF0YSgpOworICAgICAgICAgIHZhciBjb2x1bW4gPSBhcmdzLmNvbHVt biwKKyAgICAgICAgICAgIGl0ZW0gPSBhcmdzLml0ZW0sIGRhdGFfbGVuZ3Ro ID0gdGhpcy5ncmlkLmdldERhdGFMZW5ndGgoKSwKKyAgICAgICAgICAgIF9r ZXkgPSAoc2VsZi5jbGllbnRfcHJpbWFyeV9rZXlfY291bnRlcisrKS50b1N0 cmluZygpLAorICAgICAgICAgICAgZGF0YVZpZXcgPSB0aGlzLmdyaWQuZ2V0 RGF0YSgpOwogCiAgICAgICAgICAgLy8gQWRkIG5ldyByb3cgaW4gbGlzdCB0 byBrZWVwIHRyYWNrIG9mIGl0CiAgICAgICAgICAgaWYgKF8uaXNVbmRlZmlu ZWQoaXRlbVswXSkpIHsKQEAgLTgxNiwxNyArODQ4LDE2IEBAIGRlZmluZShb CiAKICAgICAgICAgICAvLyBJZiBjb3BpZWQgaXRlbSBoYXMgYWxyZWFkeSBw cmltYXJ5IGtleSwgdXNlIGl0LgogICAgICAgICAgIGlmKGl0ZW0pIHsKLSAg ICAgICAgICAgIGl0ZW0uX190ZW1wX1BLID0gX2tleTsKKyAgICAgICAgICAg IGl0ZW1bc2VsZi5jbGllbnRfcHJpbWFyeV9rZXldID0gX2tleTsKICAgICAg ICAgICB9Ci0gICAgICAgICAgbmV3X2NvbGxlY3Rpb24ucHVzaChpdGVtKTsK IAorICAgICAgICAgIGRhdGFWaWV3LmFkZEl0ZW0oaXRlbSk7CiAgICAgICAg ICAgc2VsZi5oYW5kbGVyLmRhdGFfc3RvcmUuYWRkZWRbX2tleV0gPSB7J2Vy cic6IGZhbHNlLCAnZGF0YSc6IGl0ZW19OwogICAgICAgICAgIHNlbGYuaGFu ZGxlci5kYXRhX3N0b3JlLmFkZGVkX2luZGV4W2RhdGFfbGVuZ3RoXSA9IF9r ZXk7CiAgICAgICAgICAgLy8gRmV0Y2ggZGF0YSB0eXBlICYgYWRkIGl0IGZv ciB0aGUgY29sdW1uCiAgICAgICAgICAgdmFyIHRlbXAgPSB7fTsKLSAgICAg ICAgICB0ZW1wW2NvbHVtbi5wb3NdID0gXy53aGVyZSh0aGlzLmNvbHVtbnMs IHtwb3M6IGNvbHVtbi5wb3N9KVswXVsndHlwZSddOworICAgICAgICAgIHRl bXBbY29sdW1uLm5hbWVdID0gXy53aGVyZSh0aGlzLmNvbHVtbnMsIHtwb3M6 IGNvbHVtbi5wb3N9KVswXVsndHlwZSddOwogICAgICAgICAgIHNlbGYuaGFu ZGxlci5kYXRhX3N0b3JlLmFkZGVkW19rZXldWydkYXRhX3R5cGUnXSA9ICB0 ZW1wOwotICAgICAgICAgIGdyaWQuaW52YWxpZGF0ZVJvd3MoW25ld19jb2xs ZWN0aW9uLmxlbmd0aCAtIDFdKTsKICAgICAgICAgICBncmlkLnVwZGF0ZVJv d0NvdW50KCk7CiAgICAgICAgICAgZ3JpZC5yZW5kZXIoKTsKIApAQCAtODM5 LDYgKzg3MCwxNiBAQCBkZWZpbmUoWwogICAgICAgICAgICQoIiNidG4tc2F2 ZSIpLnByb3AoJ2Rpc2FibGVkJywgZmFsc2UpOwogICAgICAgICB9LmJpbmQo ZWRpdG9yX2RhdGEpKTsKIAorICAgICAgICAvLyBMaXN0ZW4gZ3JpZCB2aWV3 cG9ydENoYW5nZWQgZXZlbnQgdG8gbG9hZCBuZXh0IGNodW5rIG9mIGRhdGEu CisgICAgICAgIGdyaWQub25WaWV3cG9ydENoYW5nZWQuc3Vic2NyaWJlKGZ1 bmN0aW9uKGUsIGFyZ3MpIHsKKyAgICAgICAgICB2YXIgcmVuZGVyZWRfcmFu Z2UgPSBhcmdzLmdyaWQuZ2V0UmVuZGVyZWRSYW5nZSgpLAorICAgICAgICAg ICAgICBkYXRhX2xlbiA9IGFyZ3MuZ3JpZC5nZXREYXRhTGVuZ3RoKCk7Cisg ICAgICAgICAgLy8gc3RhcnQgZmV0Y2hpbmcgbmV4dCBiYXRjaCBvZiByZWNv cmRzIGJlZm9yZSByZWFjaGluZyB0byBib3R0b20uCisgICAgICAgICAgaWYg KHNlbGYuaGFuZGxlci5oYXNfbW9yZV9yb3dzICYmICFzZWxmLmhhbmRsZXIu ZmV0Y2hpbmdfcm93cyAmJiByZW5kZXJlZF9yYW5nZS5ib3R0b20gPiBkYXRh X2xlbiAtIDEwMCkgeworICAgICAgICAgICAgLy8gZmV0Y2ggYXN5bmNocm9u b3VzCisgICAgICAgICAgICBzZXRUaW1lb3V0KHNlbGYuZmV0Y2hfbmV4dC5i aW5kKHNlbGYpKTsKKyAgICAgICAgICB9CisgICAgICAgIH0pCiAgICAgICAg IC8vIFJlc2l6ZSBTbGlja0dyaWQgd2hlbiB3aW5kb3cgcmVzaXplCiAgICAg ICAgICQoIHdpbmRvdyApLnJlc2l6ZSggZnVuY3Rpb24oKSB7CiAgICAgICAg ICAgLy8gUmVzaXplIGdyaWQgb25seSB3aGVuICdEYXRhIE91dHB1dCcgcGFu ZWwgaXMgdmlzaWJsZS4KQEAgLTg2MSw2ICs5MDIsODQgQEAgZGVmaW5lKFsK ICAgICAgICAgICBpZihzZWxmLmRhdGFfb3V0cHV0X3BhbmVsLmlzVmlzaWJs ZSgpKQogICAgICAgICAgICAgc2VsZi5ncmlkX3Jlc2l6ZShncmlkKTsKICAg ICAgICAgfSk7CisKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb2xs ZWN0aW9uLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgLy8gQ29udmVydCB0 byBkaWN0IGZyb20gMmRhcnJheQorICAgICAgICAgIHZhciBpdGVtID0ge307 CisgICAgICAgICAgZm9yICh2YXIgaiA9IDE7IGogPCBncmlkX2NvbHVtbnMu bGVuZ3RoOyBqKyspIHsKKyAgICAgICAgICAgIGl0ZW1bZ3JpZF9jb2x1bW5z W2pdWydmaWVsZCddXSA9IGNvbGxlY3Rpb25baV1bZ3JpZF9jb2x1bW5zW2pd Wydwb3MnXV0KKyAgICAgICAgICB9CisKKyAgICAgICAgICBpdGVtW3NlbGYu Y2xpZW50X3ByaW1hcnlfa2V5XSA9IChzZWxmLmNsaWVudF9wcmltYXJ5X2tl eV9jb3VudGVyKyspLnRvU3RyaW5nKCk7CisgICAgICAgICAgY29sbGVjdGlv bltpXSA9IGl0ZW07CisgICAgICAgIH0KKyAgICAgICAgZGF0YVZpZXcuc2V0 SXRlbXMoY29sbGVjdGlvbiwgc2VsZi5jbGllbnRfcHJpbWFyeV9rZXkpOwor ICAgICAgfSwKKyAgICAgIGZldGNoX25leHRfYWxsKGNiKSB7CisgICAgICAg IHRoaXMuZmV0Y2hfbmV4dCh0cnVlLCBjYik7CisgICAgICB9LAorICAgICAg ZmV0Y2hfbmV4dDogZnVuY3Rpb24oZmV0Y2hfYWxsLCBjYikgeworICAgICAg ICB2YXIgc2VsZiA9IHRoaXM7CisKKyAgICAgICAgLy8gVGhpcyB3aWxsIHBy ZXZlbnQgZmV0Y2ggb3BlcmF0aW9uIGlmIHByZXZpb3VzIGZldGNoIG9wZXJh dGlvbiBpcworICAgICAgICAvLyBhbHJlYWR5IGluIHByb2dyZXNzLgorICAg ICAgICBzZWxmLmZldGNoaW5nX3Jvd3MgPSB0cnVlOworCisgICAgICAgICQo IiNidG4tZmxhc2giKS5wcm9wKCdkaXNhYmxlZCcsIHRydWUpOworCisgICAg ICAgIGlmIChmZXRjaF9hbGwpIHsKKyAgICAgICAgICBzZWxmLmhhbmRsZXIu dHJpZ2dlcigKKyAgICAgICAgICAgICdwZ2FkbWluLXNxbGVkaXRvcjpsb2Fk aW5nLWljb246c2hvdycsCisgICAgICAgICAgICBnZXR0ZXh0KCdGZXRjaGlu ZyBhbGwgcmVjb3Jkcy4uLicpCisgICAgICAgICAgKTsKKyAgICAgICAgfQor CisgICAgICAgICQuYWpheCh7CisgICAgICAgICAgdXJsOiAie3sgdXJsX2Zv cignc3FsZWRpdG9yLmluZGV4JykgfX0iICsgImZldGNoLyIgKyBzZWxmLnRy YW5zSWQgKyAoZmV0Y2hfYWxsID8gIi8xIjogIiIpLAorICAgICAgICAgIG1l dGhvZDogJ0dFVCcsCisgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24ocmVz KSB7CisgICAgICAgICAgICBzZWxmLmhhbmRsZXIuaGFzX21vcmVfcm93cyA9 IHJlcy5kYXRhLmhhc19tb3JlX3Jvd3M7CisgICAgICAgICAgICAkKCIjYnRu LWZsYXNoIikucHJvcCgnZGlzYWJsZWQnLCBmYWxzZSk7CisgICAgICAgICAg ICBzZWxmLmhhbmRsZXIudHJpZ2dlcigncGdhZG1pbi1zcWxlZGl0b3I6bG9h ZGluZy1pY29uOmhpZGUnKTsKKyAgICAgICAgICAgIHNlbGYudXBkYXRlX2dy aWRfZGF0YShyZXMuZGF0YS5yZXN1bHQpOworICAgICAgICAgICAgaWYgKHR5 cGVvZiBjYiA9PSAiZnVuY3Rpb24iKSB7CisgICAgICAgICAgICAgIGNiKCk7 CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwKKyAgICAgICAgICBlcnJv cjogZnVuY3Rpb24oZSkgeworICAgICAgICAgICAgJCgiI2J0bi1mbGFzaCIp LnByb3AoJ2Rpc2FibGVkJywgZmFsc2UpOworICAgICAgICAgICAgc2VsZi5o YW5kbGVyLnRyaWdnZXIoJ3BnYWRtaW4tc3FsZWRpdG9yOmxvYWRpbmctaWNv bjpoaWRlJyk7CisgICAgICAgICAgICBzZWxmLmhhbmRsZXIuaGFzX21vcmVf cm93cyA9IGZhbHNlOworICAgICAgICAgICAgc2VsZi5oYW5kbGVyLmZldGNo aW5nX3Jvd3MgPSBmYWxzZTsKKyAgICAgICAgICAgIGlmICh0eXBlb2YgY2Ig PT0gImZ1bmN0aW9uIikgeworICAgICAgICAgICAgICBjYigpOworICAgICAg ICAgICAgfQorICAgICAgICAgICAgaWYgKGUucmVhZHlTdGF0ZSA9PSAwKSB7 CisgICAgICAgICAgICAgIHNlbGYudXBkYXRlX21zZ19oaXN0b3J5KGZhbHNl LAorICAgICAgICAgICAgICAgIGdldHRleHQoJ05vdCBjb25uZWN0ZWQgdG8g dGhlIHNlcnZlciBvciB0aGUgY29ubmVjdGlvbiB0byB0aGUgc2VydmVyIGhh cyBiZWVuIGNsb3NlZC4nKQorICAgICAgICAgICAgICApOworICAgICAgICAg ICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAg ICAgICB9KTsKKyAgICAgIH0sCisKKyAgICAgIHVwZGF0ZV9ncmlkX2RhdGE6 IGZ1bmN0aW9uKGRhdGEpIHsKKyAgICAgICAgdGhpcy5kYXRhVmlldy5iZWdp blVwZGF0ZSgpOworCisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGF0 YS5sZW5ndGg7IGkrKykgeworICAgICAgICAgIC8vIENvbnZlcnQgMmRhcnJh eSB0byBkaWN0LgorICAgICAgICAgIHZhciBpdGVtID0ge307CisgICAgICAg ICAgZm9yICh2YXIgaiA9IDE7IGogPCB0aGlzLmdyaWRfY29sdW1ucy5sZW5n dGg7IGorKykgeworICAgICAgICAgICAgaXRlbVt0aGlzLmdyaWRfY29sdW1u c1tqXVsnZmllbGQnXV0gPSBkYXRhW2ldW3RoaXMuZ3JpZF9jb2x1bW5zW2pd Wydwb3MnXV0KKyAgICAgICAgICB9CisKKyAgICAgICAgICBpdGVtW3RoaXMu Y2xpZW50X3ByaW1hcnlfa2V5XSA9ICh0aGlzLmNsaWVudF9wcmltYXJ5X2tl eV9jb3VudGVyKyspLnRvU3RyaW5nKCk7CisgICAgICAgICAgdGhpcy5kYXRh Vmlldy5hZGRJdGVtKGl0ZW0pOworICAgICAgICB9CisKKyAgICAgICAgdGhp cy5kYXRhVmlldy5lbmRVcGRhdGUoKTsKKyAgICAgICAgdGhpcy5oYW5kbGVy LmZldGNoaW5nX3Jvd3MgPSBmYWxzZTsKICAgICAgIH0sCiAKICAgICAgIC8q IFRoaXMgZnVuY3Rpb24gaXMgcmVzcG9uc2libGUgdG8gcmVuZGVyIG91dHB1 dCBncmlkICovCkBAIC0xNDAyLDYgKzE1MjEsOCBAQCBkZWZpbmUoWwogICAg ICAgICAgIHNlbGYuZXhwbGFpbl9idWZmZXJzID0gZmFsc2U7CiAgICAgICAg ICAgc2VsZi5leHBsYWluX3RpbWluZyA9IGZhbHNlOwogICAgICAgICAgIHNl bGYuaXNfbmV3X2Jyb3dzZXJfdGFiID0gaXNfbmV3X2Jyb3dzZXJfdGFiOwor ICAgICAgICAgIHNlbGYuaGFzX21vcmVfcm93cyA9IGZhbHNlOworICAgICAg ICAgIHNlbGYuZmV0Y2hpbmdfcm93cyA9IGZhbHNlOwogCiAgICAgICAgICAg Ly8gV2UgZG8gbm90IGFsbG93IHRvIGNhbGwgdGhlIHN0YXJ0IG11bHRpcGxl IHRpbWVzLgogICAgICAgICAgIGlmIChzZWxmLmdyaWRWaWV3KQpAQCAtMTUw OSw2ICsxNjMwLDggQEAgZGVmaW5lKFsKICAgICAgICAgICBzZWxmLnJvd3Nf dG9fZGlzYWJsZSA9IG5ldyBBcnJheSgpOwogICAgICAgICAgIC8vIFRlbXBv cmFyaWx5IGhvbGQgbmV3IHJvd3MgYWRkZWQKICAgICAgICAgICBzZWxmLnRl bXBfbmV3X3Jvd3MgPSBuZXcgQXJyYXkoKTsKKyAgICAgICAgICBzZWxmLmhh c19tb3JlX3Jvd3MgPSBmYWxzZTsKKyAgICAgICAgICBzZWxmLmZldGNoaW5n X3Jvd3MgPSBmYWxzZTsKIAogICAgICAgICAgIHNlbGYudHJpZ2dlcigKICAg ICAgICAgICAgICdwZ2FkbWluLXNxbGVkaXRvcjpsb2FkaW5nLWljb246c2hv dycsCkBAIC0xNTg3LDQ1ICsxNzEwLDE0IEBAIGRlZmluZShbCiAgICAgICAg ICAgfSk7CiAgICAgICAgIH0sCiAKLSAgICAgICAgLy8gVGhpcyBmdW5jdGlv biBtYWtlcyB0aGUgYWpheCBjYWxsIHRvIGZldGNoIGNvbHVtbnMgZm9yIGxh c3QgYXN5bmMgcXVlcnksCi0gICAgICAgIGdldF9jb2x1bW5zOiBmdW5jdGlv bihwb2xsX3Jlc3VsdCkgewotICAgICAgICAgIHZhciBzZWxmID0gdGhpczsK LSAgICAgICAgICAvLyBDaGVjayB0aGUgZmxhZyBhbmQgZGVjaWRlIGlmIHdl IG5lZWQgdG8gZmV0Y2ggY29sdW1ucyBmcm9tIHNlcnZlcgotICAgICAgICAg IC8vIG9yIHVzZSB0aGUgY29sdW1ucyBkYXRhIHN0b3JlZCBsb2NhbGx5IGZy b20gcHJldmlvdXMgY2FsbD8KLSAgICAgICAgICBpZiAoc2VsZi5GRVRDSF9D T0xVTU5TX0ZST01fU0VSVkVSKSB7Ci0gICAgICAgICAgICAkLmFqYXgoewot ICAgICAgICAgICAgICB1cmw6ICJ7eyB1cmxfZm9yKCdzcWxlZGl0b3IuaW5k ZXgnKSB9fSIgKyAiY29sdW1ucy8iICsgc2VsZi50cmFuc0lkLAotICAgICAg ICAgICAgICBtZXRob2Q6ICdHRVQnLAotICAgICAgICAgICAgICBzdWNjZXNz OiBmdW5jdGlvbihyZXMpIHsKLSAgICAgICAgICAgICAgICBwb2xsX3Jlc3Vs dC5jb2xpbmZvID0gcmVzLmRhdGEuY29sdW1uczsKLSAgICAgICAgICAgICAg ICBwb2xsX3Jlc3VsdC5wcmltYXJ5X2tleXMgPSByZXMuZGF0YS5wcmltYXJ5 X2tleXM7Ci0gICAgICAgICAgICAgICAgc2VsZi5jYWxsX3JlbmRlcl9hZnRl cl9wb2xsKHBvbGxfcmVzdWx0KTsKLSAgICAgICAgICAgICAgICAvLyBTZXQg YSBmbGFnIHRvIGdldCBjb2x1bW5zIHRvIGZhbHNlICYgc2V0IHRoZSB2YWx1 ZSBmb3IgZnV0dXJlIHVzZQotICAgICAgICAgICAgICAgIHNlbGYuRkVUQ0hf Q09MVU1OU19GUk9NX1NFUlZFUiA9IGZhbHNlOwotICAgICAgICAgICAgICAg IHNlbGYuQ09MVU1OU19EQVRBID0gcmVzOwotICAgICAgICAgICAgICB9LAot ICAgICAgICAgICAgICBlcnJvcjogZnVuY3Rpb24oZSkgewotICAgICAgICAg ICAgICAgIHZhciBtc2cgPSBlLnJlc3BvbnNlVGV4dDsKLSAgICAgICAgICAg ICAgICBpZiAoZS5yZXNwb25zZUpTT04gIT0gdW5kZWZpbmVkICYmIGUucmVz cG9uc2VKU09OLmVycm9ybXNnICE9IHVuZGVmaW5lZCkKLSAgICAgICAgICAg ICAgICAgIG1zZyA9IGUucmVzcG9uc2VKU09OLmVycm9ybXNnOwotICAgICAg ICAgICAgICAgICAgYWxlcnRpZnkuZXJyb3IobXNnLCA1KTsKLSAgICAgICAg ICAgICAgfQotICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgfSBlbHNlIHsK LSAgICAgICAgICAgIC8vIFVzZSB0aGUgcHJldmlvdXNseSBzYXZlZCBjb2x1 bW5zIGRhdGEKLSAgICAgICAgICAgIHBvbGxfcmVzdWx0LmNvbGluZm8gPSBz ZWxmLkNPTFVNTlNfREFUQS5kYXRhLmNvbHVtbnM7Ci0gICAgICAgICAgICBw b2xsX3Jlc3VsdC5wcmltYXJ5X2tleXMgPSBzZWxmLkNPTFVNTlNfREFUQS5k YXRhLnByaW1hcnlfa2V5czsKLSAgICAgICAgICAgIHNlbGYuY2FsbF9yZW5k ZXJfYWZ0ZXJfcG9sbChwb2xsX3Jlc3VsdCk7Ci0gICAgICAgICAgfQotICAg ICAgICB9LAotCiAgICAgICAgIC8vIFRoaXMgaXMgYSB3cmFwcGVyIHRvIGNh bGwgX3JlbmRlciBmdW5jdGlvbgogICAgICAgICAvLyBXZSBuZWVkIHRoaXMg YmVjYXVzZSB3ZSBoYXZlIHNlcGFyYXRlZCBjb2x1bW5zIHJvdXRlICYgcmVz dWx0IHJvdXRlCiAgICAgICAgIC8vIFdlIG5lZWQgdG8gY29tYmluZSBib3Ro IHJlc3VsdCBoZXJlIGluIHdyYXBwZXIgYmVmb3JlIHJlbmRlcmluZyBncmlk CiAgICAgICAgIGNhbGxfcmVuZGVyX2FmdGVyX3BvbGw6IGZ1bmN0aW9uKHJl cykgewogICAgICAgICAgIHZhciBzZWxmID0gdGhpczsKICAgICAgICAgICBz ZWxmLnF1ZXJ5X2VuZF90aW1lID0gbmV3IERhdGUoKTsKLSAgICAgICAgICBz ZWxmLnJvd3NfYWZmZWN0ZWQgPSByZXMucm93c19hZmZlY3RlZDsKKyAgICAg ICAgICBzZWxmLnJvd3NfYWZmZWN0ZWQgPSByZXMucm93c19hZmZlY3RlZCwK KyAgICAgICAgICBzZWxmLmhhc19tb3JlX3Jvd3MgPSByZXMuaGFzX21vcmVf cm93czsKIAogICAgICAgICAgIC8qIElmIG5vIGNvbHVtbiBpbmZvcm1hdGlv biBpcyBhdmFpbGFibGUgaXQgbWVhbnMgcXVlcnkKICAgICAgICAgICAgICBy dW5zIHN1Y2Nlc3NmdWxseSB3aXRoIG5vIHJlc3VsdCB0byBkaXNwbGF5LiBJ biB0aGlzCkBAIC0xNjc0LDcgKzE3NjYsOCBAQCBkZWZpbmUoWwogICAgICAg ICAgICAgICAgICAgICAgICdwZ2FkbWluLXNxbGVkaXRvcjpsb2FkaW5nLWlj b246bWVzc2FnZScsCiAgICAgICAgICAgICAgICAgICAgICAgZ2V0dGV4dCgi TG9hZGluZyBkYXRhIGZyb20gdGhlIGRhdGFiYXNlIHNlcnZlciBhbmQgcmVu ZGVyaW5nLi4uIikKICAgICAgICAgICAgICAgICAgICAgKTsKLSAgICAgICAg ICAgICAgICAgICAgc2VsZi5nZXRfY29sdW1ucyhyZXMuZGF0YSk7CisKKyAg ICAgICAgICAgICAgICAgICAgc2VsZi5jYWxsX3JlbmRlcl9hZnRlcl9wb2xs KHJlcy5kYXRhKTsKICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg ICAgICAgIGVsc2UgaWYgKHJlcy5kYXRhLnN0YXR1cyA9PT0gJ0J1c3knKSB7 CiAgICAgICAgICAgICAgICAgICAgIC8vIElmIHN0YXR1cyBpcyBCdXN5IHRo ZW4gcG9sbCB0aGUgcmVzdWx0IGJ5IHJlY3Vyc2l2ZSBjYWxsIHRvIHRoZSBw b2xsIGZ1bmN0aW9uCkBAIC0xNzM0LDYgKzE4MjcsNyBAQCBkZWZpbmUoWwog ICAgICAgICAgIHZhciBzZWxmID0gdGhpczsKICAgICAgICAgICBzZWxmLmNv bGluZm8gPSBkYXRhLmNvbF9pbmZvOwogICAgICAgICAgIHNlbGYucHJpbWFy eV9rZXlzID0gZGF0YS5wcmltYXJ5X2tleXM7CisgICAgICAgICAgc2VsZi5j bGllbnRfcHJpbWFyeV9rZXkgPSBkYXRhLmNsaWVudF9wcmltYXJ5X2tleTsK ICAgICAgICAgICBzZWxmLmNlbGxfc2VsZWN0ZWQgPSBmYWxzZTsKICAgICAg ICAgICBzZWxmLnNlbGVjdGVkX21vZGVsID0gbnVsbDsKICAgICAgICAgICBz ZWxmLmNoYW5nZWRNb2RlbHMgPSBbXTsKQEAgLTE3ODYsNyArMTg4MCw3IEBA IGRlZmluZShbCiAgICAgICAgICAgICAgIHNlbGYudG90YWxfdGltZSA9IHNl bGYuZ2V0X3F1ZXJ5X3J1bl90aW1lKHNlbGYucXVlcnlfc3RhcnRfdGltZSwg c2VsZi5xdWVyeV9lbmRfdGltZSk7CiAgICAgICAgICAgICAgIHNlbGYudXBk YXRlX21zZ19oaXN0b3J5KHRydWUsICIiLCBmYWxzZSk7CiAgICAgICAgICAg ICAgIHZhciBtc2cxID0gUyhnZXR0ZXh0KCJUb3RhbCBxdWVyeSBydW50aW1l OiAlcy4iKSkuc3ByaW50ZihzZWxmLnRvdGFsX3RpbWUpLnZhbHVlKCk7Ci0g ICAgICAgICAgICAgIHZhciBtc2cyID0gUyhnZXR0ZXh0KCIlcyByb3dzIHJl dHJpZXZlZC4iKSkuc3ByaW50ZihzZWxmLnJvd3NfYWZmZWN0ZWQpLnZhbHVl KCk7CisgICAgICAgICAgICAgIHZhciBtc2cyID0gUyhnZXR0ZXh0KCIlcyBy b3dzIGFmZmVjdGVkLiIpKS5zcHJpbnRmKHNlbGYucm93c19hZmZlY3RlZCku dmFsdWUoKTsKIAogICAgICAgICAgICAgICAvLyBEaXNwbGF5IHRoZSBub3Rp ZmllciBpZiB0aGUgdGltZW91dCBpcyBzZXQgdG8gPj0gMAogICAgICAgICAg ICAgICBpZiAoc2VsZi5pbmZvX25vdGlmaWVyX3RpbWVvdXQgPj0gMCkgewpA QCAtMTgyMiw3ICsxOTE2LDggQEAgZGVmaW5lKFsKICAgICAgICAgICAgICAg ICBzZXRUaW1lb3V0KAogICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7 CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuZ3JpZFZpZXcucmVuZGVyX2dy aWQoCi0gICAgICAgICAgICAgICAgICAgICAgZXhwbGFpbl9kYXRhX2FycmF5 LCBzZWxmLmNvbHVtbnMsIHNlbGYuY2FuX2VkaXQKKyAgICAgICAgICAgICAg ICAgICAgICBleHBsYWluX2RhdGFfYXJyYXksIHNlbGYuY29sdW1ucywgc2Vs Zi5jYW5fZWRpdCwKKyAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNsaWVu dF9wcmltYXJ5X2tleQogICAgICAgICAgICAgICAgICAgICApOwogICAgICAg ICAgICAgICAgICAgICAvLyBNYWtlIHN1cmUgLSB0aGUgJ0V4cGxhaW4nIHBh bmVsIGlzIHZpc2libGUsIGJlZm9yZSAtIHdlCiAgICAgICAgICAgICAgICAg ICAgIC8vIHN0YXJ0IHJlbmRlcmluZyB0aGUgZ3JpZC4KQEAgLTE4MzgsNyAr MTkzMyw4IEBAIGRlZmluZShbCiAgICAgICAgICAgICAgICAgc2VsZi5ncmlk Vmlldy5kYXRhX291dHB1dF9wYW5lbC5mb2N1cygpOwogICAgICAgICAgICAg ICAgIHNldFRpbWVvdXQoCiAgICAgICAgICAgICAgICAgICBmdW5jdGlvbigp IHsKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5ncmlkVmlldy5yZW5kZXJf Z3JpZChkYXRhLnJlc3VsdCwgc2VsZi5jb2x1bW5zLCBzZWxmLmNhbl9lZGl0 KTsKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5ncmlkVmlldy5yZW5kZXJf Z3JpZChkYXRhLnJlc3VsdCwgc2VsZi5jb2x1bW5zLAorICAgICAgICAgICAg ICAgICAgICBzZWxmLmNhbl9lZGl0LCBzZWxmLmNsaWVudF9wcmltYXJ5X2tl eSwgZGF0YS5yb3dzX2FmZmVjdGVkKTsKICAgICAgICAgICAgICAgICAgIH0s IDEwCiAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgfQpAQCAt MTg0NiwxMzYgKzE5NDIsMTE0IEBAIGRlZmluZShbCiAgICAgICAgICAgICAg IC8vIEhpZGUgdGhlIGxvYWRpbmcgaWNvbgogICAgICAgICAgICAgICBzZWxm LnRyaWdnZXIoJ3BnYWRtaW4tc3FsZWRpdG9yOmxvYWRpbmctaWNvbjpoaWRl Jyk7CiAgICAgICAgICAgICAgICQoIiNidG4tZmxhc2giKS5wcm9wKCdkaXNh YmxlZCcsIGZhbHNlKTsKLSAgICAgICAgICAgIH0uYmluZChzZWxmKSwKLSAg ICAgICAgICAgIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICB0aGlzLnRy aWdnZXIoJ3BnYWRtaW4tc3FsZWRpdG9yOmxvYWRpbmctaWNvbjpoaWRlJyk7 Ci0gICAgICAgICAgICAgICQoIiNidG4tZmxhc2giKS5wcm9wKCdkaXNhYmxl ZCcsIGZhbHNlKTsKICAgICAgICAgICAgIH0uYmluZChzZWxmKQogICAgICAg ICAgICk7CiAgICAgICAgIH0sCiAKICAgICAgICAgLy8gVGhpcyBmdW5jdGlv biBjcmVhdGVzIHRoZSBjb2x1bW5zIGFzIHJlcXVpcmVkIGJ5IHRoZSBiYWNr Z3JpZAotICAgICAgICBfZmV0Y2hfY29sdW1uX21ldGFkYXRhOiBmdW5jdGlv bihkYXRhLCBjYiwgX2ZhaWwpIHsKKyAgICAgICAgX2ZldGNoX2NvbHVtbl9t ZXRhZGF0YTogZnVuY3Rpb24oZGF0YSwgY2IpIHsKICAgICAgICAgICB2YXIg Y29saW5mbyA9IGRhdGEuY29saW5mbywKICAgICAgICAgICAgICAgcHJpbWFy eV9rZXlzID0gZGF0YS5wcmltYXJ5X2tleXMsCiAgICAgICAgICAgICAgIHJl c3VsdCA9IGRhdGEucmVzdWx0LAogICAgICAgICAgICAgICBjb2x1bW5zID0g W10sCiAgICAgICAgICAgICAgIHNlbGYgPSB0aGlzOworICAgICAgICAgIC8v IFN0b3JlIHBnX3R5cGVzIGluIGFuIGFycmF5CisgICAgICAgICAgdmFyIHBn X3R5cGVzID0gbmV3IEFycmF5KCk7CisgICAgICAgICAgXy5lYWNoKGRhdGEu dHlwZXMsIGZ1bmN0aW9uKHIpIHsKKyAgICAgICAgICAgIHBnX3R5cGVzW3Iu b2lkXSA9IFtyLnR5cG5hbWVdOworICAgICAgICAgIH0pOwogCi0gICAgICAg ICAgc2VsZi50cmlnZ2VyKAotICAgICAgICAgICAgJ3BnYWRtaW4tc3FsZWRp dG9yOmxvYWRpbmctaWNvbjptZXNzYWdlJywKLSAgICAgICAgICAgIGdldHRl eHQoIlJldHJpZXZpbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGNvbHVtbnMg cmV0dXJuZWQuLi4iKQotICAgICAgICAgICk7Ci0KLSAgICAgICAgICAvLyBN YWtlIGFqYXggY2FsbCB0byBmZXRjaCB0aGUgcGcgdHlwZXMgdG8gbWFwIG51 bWVyaWMgZGF0YSB0eXBlCi0gICAgICAgICAgJC5hamF4KHsKLSAgICAgICAg ICAgIHVybDogInt7IHVybF9mb3IoJ3NxbGVkaXRvci5pbmRleCcpIH19IiAr ICJmZXRjaC90eXBlcy8iICsgc2VsZi50cmFuc0lkLAotICAgICAgICAgICAg bWV0aG9kOiAnR0VUJywKLSAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9u KHJlcykgewotICAgICAgICAgICAgICBpZiAocmVzLmRhdGEuc3RhdHVzKSB7 Ci0gICAgICAgICAgICAgICAgLy8gU3RvcmUgcGdfdHlwZXMgaW4gYW4gYXJy YXkKLSAgICAgICAgICAgICAgICB2YXIgcGdfdHlwZXMgPSBuZXcgQXJyYXko KTsKLSAgICAgICAgICAgICAgICBfLmVhY2gocmVzLmRhdGEucmVzdWx0LnJv d3MsIGZ1bmN0aW9uKHIpIHsKLSAgICAgICAgICAgICAgICAgIHBnX3R5cGVz W3Iub2lkXSA9IFtyLnR5cG5hbWVdOwotICAgICAgICAgICAgICAgIH0pOwot Ci0gICAgICAgICAgICAgICAgLy8gQ3JlYXRlIGNvbHVtbnMgcmVxdWlyZWQg YnkgYmFja2dyaWQgdG8gcmVuZGVyCi0gICAgICAgICAgICAgICAgXy5lYWNo KGNvbGluZm8sIGZ1bmN0aW9uKGMpIHsKLSAgICAgICAgICAgICAgICAgIHZh ciBpc19wcmltYXJ5X2tleSA9IGZhbHNlOworICAgICAgICAgIC8vIENyZWF0 ZSBjb2x1bW5zIHJlcXVpcmVkIGJ5IHNsaWNrIGdyaWQgdG8gcmVuZGVyCisg ICAgICAgICAgXy5lYWNoKGNvbGluZm8sIGZ1bmN0aW9uKGMpIHsKKyAgICAg ICAgICAgIHZhciBpc19wcmltYXJ5X2tleSA9IGZhbHNlOwogCi0gICAgICAg ICAgICAgICAgICAvLyBDaGVjayB3aGV0aGVyIHRhYmxlIGhhdmUgcHJpbWFy eSBrZXkKLSAgICAgICAgICAgICAgICAgIGlmIChfLnNpemUocHJpbWFyeV9r ZXlzKSA+IDApIHsKLSAgICAgICAgICAgICAgICAgICAgXy5lYWNoKHByaW1h cnlfa2V5cywgZnVuY3Rpb24gKHZhbHVlLCBrZXkpIHsKLSAgICAgICAgICAg ICAgICAgICAgICBpZiAoa2V5ID09PSBjLm5hbWUpCi0gICAgICAgICAgICAg ICAgICAgICAgICBpc19wcmltYXJ5X2tleSA9IHRydWU7Ci0gICAgICAgICAg ICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg ICAgLy8gQ2hlY2sgd2hldGhlciB0YWJsZSBoYXZlIHByaW1hcnkga2V5Cisg ICAgICAgICAgICBpZiAoXy5zaXplKHByaW1hcnlfa2V5cykgPiAwKSB7Cisg ICAgICAgICAgICAgIF8uZWFjaChwcmltYXJ5X2tleXMsIGZ1bmN0aW9uICh2 YWx1ZSwga2V5KSB7CisgICAgICAgICAgICAgICAgaWYgKGtleSA9PT0gYy5u YW1lKQorICAgICAgICAgICAgICAgICAgaXNfcHJpbWFyeV9rZXkgPSB0cnVl OworICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0KIAotICAgICAg ICAgICAgICAgICAgLy8gVG8gc2hvdyBjb2x1bW4gbGFiZWwgYW5kIGRhdGEg dHlwZSBpbiBtdWx0aWxpbmUsCi0gICAgICAgICAgICAgICAgICAvLyBUaGUg ZWxlbWVudHMgc2hvdWxkIGJlIHB1dCBpbnNpZGUgdGhlIGRpdi4KLSAgICAg ICAgICAgICAgICAgIC8vIENyZWF0ZSBjb2x1bW4gbGFiZWwgYW5kIHR5cGUu Ci0gICAgICAgICAgICAgICAgICB2YXIgY29sX3R5cGUgPSBjb2x1bW5fbGFi ZWwgPSAnJzsKLSAgICAgICAgICAgICAgICAgIHZhciB0eXBlID0gcGdfdHlw ZXNbYy50eXBlX2NvZGVdID8KLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBwZ190eXBlc1tjLnR5cGVfY29kZV1bMF0gOgotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGNhc2Ugd2hlcmUg dXNlciBtaWdodAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v IGhhdmUgdXNlIGNhc3Rpbmcgc28gd2Ugd2lsbCB1c2UgdHlwZQotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJldHVybmVkIGJ5IGNhc3Qg ZnVuY3Rpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZ190 eXBlc1twZ190eXBlcy5sZW5ndGggLSAxXVswXSA/Ci0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBwZ190eXBlc1twZ190eXBlcy5sZW5ndGgg LSAxXVswXSA6ICd1bmtub3duJzsKLQotICAgICAgICAgICAgICAgICAgaWYg KCFpc19wcmltYXJ5X2tleSkKLSAgICAgICAgICAgICAgICAgICAgY29sX3R5 cGUgKz0gJyAnICsgdHlwZTsKLSAgICAgICAgICAgICAgICAgIGVsc2UKLSAg ICAgICAgICAgICAgICAgICAgY29sX3R5cGUgKz0gJyBbUEtdICcgKyB0eXBl OworICAgICAgICAgICAgLy8gVG8gc2hvdyBjb2x1bW4gbGFiZWwgYW5kIGRh dGEgdHlwZSBpbiBtdWx0aWxpbmUsCisgICAgICAgICAgICAvLyBUaGUgZWxl bWVudHMgc2hvdWxkIGJlIHB1dCBpbnNpZGUgdGhlIGRpdi4KKyAgICAgICAg ICAgIC8vIENyZWF0ZSBjb2x1bW4gbGFiZWwgYW5kIHR5cGUuCisgICAgICAg ICAgICB2YXIgY29sX3R5cGUgPSBjb2x1bW5fbGFiZWwgPSAnJzsKKyAgICAg ICAgICAgIHZhciB0eXBlID0gcGdfdHlwZXNbYy50eXBlX2NvZGVdID8KKyAg ICAgICAgICAgICAgICAgICAgICAgICBwZ190eXBlc1tjLnR5cGVfY29kZV1b MF0gOgorICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhl IGNhc2Ugd2hlcmUgdXNlciBtaWdodAorICAgICAgICAgICAgICAgICAgICAg ICAgIC8vIGhhdmUgdXNlIGNhc3Rpbmcgc28gd2Ugd2lsbCB1c2UgdHlwZQor ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJldHVybmVkIGJ5IGNhc3Qg ZnVuY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICBwZ190eXBlc1tw Z190eXBlcy5sZW5ndGggLSAxXVswXSA/CisgICAgICAgICAgICAgICAgICAg ICAgICAgICBwZ190eXBlc1twZ190eXBlcy5sZW5ndGggLSAxXVswXSA6ICd1 bmtub3duJzsKKworICAgICAgICAgICAgaWYgKCFpc19wcmltYXJ5X2tleSkK KyAgICAgICAgICAgICAgY29sX3R5cGUgKz0gJyAnICsgdHlwZTsKKyAgICAg ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgY29sX3R5cGUgKz0gJyBbUEtd ICcgKyB0eXBlOwogCi0gICAgICAgICAgICAgICAgICBpZiAoYy5wcmVjaXNp b24gJiYgYy5wcmVjaXNpb24gPj0gMCAmJiBjLnByZWNpc2lvbiAhPSA2NTUz NSkgewotICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZSArPSAnICgnICsg Yy5wcmVjaXNpb247Ci0gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlICs9 IGMuc2NhbGUgJiYgYy5zY2FsZSAhPSA2NTUzNSA/Ci0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICcsJyArIGMuc2NhbGUgKyAnKSc6Ci0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICcpJzsKLSAgICAgICAgICAg ICAgICAgIH0KKyAgICAgICAgICAgIGlmIChjLnByZWNpc2lvbiAmJiBjLnBy ZWNpc2lvbiA+PSAwICYmIGMucHJlY2lzaW9uICE9IDY1NTM1KSB7CisgICAg ICAgICAgICAgIGNvbF90eXBlICs9ICcgKCcgKyBjLnByZWNpc2lvbjsKKyAg ICAgICAgICAgICAgY29sX3R5cGUgKz0gYy5zY2FsZSAmJiBjLnNjYWxlICE9 IDY1NTM1ID8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgJywnICsgYy5z Y2FsZSArICcpJzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJyknOwor ICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgICAvLyBJZGVudGlm eSBjZWxsIHR5cGUgb2YgY29sdW1uLgotICAgICAgICAgICAgICAgICAgc3dp dGNoKHR5cGUpIHsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAianNvbiI6 Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgImpzb25bXSI6Ci0gICAgICAg ICAgICAgICAgICAgIGNhc2UgImpzb25iIjoKLSAgICAgICAgICAgICAgICAg ICAgY2FzZSAianNvbmJbXSI6Ci0gICAgICAgICAgICAgICAgICAgICAgY29s X2NlbGwgPSAnSnNvbic7Ci0gICAgICAgICAgICAgICAgICAgICAgYnJlYWs7 Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgInNtYWxsaW50IjoKLSAgICAg ICAgICAgICAgICAgICAgY2FzZSAiaW50ZWdlciI6Ci0gICAgICAgICAgICAg ICAgICAgIGNhc2UgImJpZ2ludCI6Ci0gICAgICAgICAgICAgICAgICAgIGNh c2UgImRlY2ltYWwiOgotICAgICAgICAgICAgICAgICAgICBjYXNlICJudW1l cmljIjoKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAicmVhbCI6Ci0gICAg ICAgICAgICAgICAgICAgIGNhc2UgImRvdWJsZSBwcmVjaXNpb24iOgotICAg ICAgICAgICAgICAgICAgICAgIGNvbF9jZWxsID0gJ251bWJlcic7Ci0gICAg ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAg IGNhc2UgImJvb2xlYW4iOgotICAgICAgICAgICAgICAgICAgICAgIGNvbF9j ZWxsID0gJ2Jvb2xlYW4nOwotICAgICAgICAgICAgICAgICAgICAgIGJyZWFr OwotICAgICAgICAgICAgICAgICAgICBjYXNlICJjaGFyYWN0ZXIiOgotICAg ICAgICAgICAgICAgICAgICBjYXNlICJjaGFyYWN0ZXJbXSI6Ci0gICAgICAg ICAgICAgICAgICAgIGNhc2UgImNoYXJhY3RlciB2YXJ5aW5nIjoKLSAgICAg ICAgICAgICAgICAgICAgY2FzZSAiY2hhcmFjdGVyIHZhcnlpbmdbXSI6Ci0g ICAgICAgICAgICAgICAgICAgICAgaWYgKGMuaW50ZXJuYWxfc2l6ZSAmJiBj LmludGVybmFsX3NpemUgPj0gMCAmJiBjLmludGVybmFsX3NpemUgIT0gNjU1 MzUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIFVwZGF0ZSBjb2x1 bW4gdHlwZSB0byBkaXNwbGF5IGxlbmd0aCBvbiBjb2x1bW4gaGVhZGVyCi0g ICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZSArPSAnICgnICsgYy5p bnRlcm5hbF9zaXplICsgJyknOwotICAgICAgICAgICAgICAgICAgICAgIH0K LSAgICAgICAgICAgICAgICAgICAgICBjb2xfY2VsbCA9ICdzdHJpbmcnOwot ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg ICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICAgIGNvbF9jZWxs ID0gJ3N0cmluZyc7Ci0gICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg ICAvLyBJZGVudGlmeSBjZWxsIHR5cGUgb2YgY29sdW1uLgorICAgICAgICAg ICAgc3dpdGNoKHR5cGUpIHsKKyAgICAgICAgICAgICAgY2FzZSAianNvbiI6 CisgICAgICAgICAgICAgIGNhc2UgImpzb25bXSI6CisgICAgICAgICAgICAg IGNhc2UgImpzb25iIjoKKyAgICAgICAgICAgICAgY2FzZSAianNvbmJbXSI6 CisgICAgICAgICAgICAgICAgY29sX2NlbGwgPSAnSnNvbic7CisgICAgICAg ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgInNtYWxsaW50 IjoKKyAgICAgICAgICAgICAgY2FzZSAiaW50ZWdlciI6CisgICAgICAgICAg ICAgIGNhc2UgImJpZ2ludCI6CisgICAgICAgICAgICAgIGNhc2UgImRlY2lt YWwiOgorICAgICAgICAgICAgICBjYXNlICJudW1lcmljIjoKKyAgICAgICAg ICAgICAgY2FzZSAicmVhbCI6CisgICAgICAgICAgICAgIGNhc2UgImRvdWJs ZSBwcmVjaXNpb24iOgorICAgICAgICAgICAgICAgIGNvbF9jZWxsID0gJ251 bWJlcic7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg IGNhc2UgImJvb2xlYW4iOgorICAgICAgICAgICAgICAgIGNvbF9jZWxsID0g J2Jvb2xlYW4nOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg ICAgICBjYXNlICJjaGFyYWN0ZXIiOgorICAgICAgICAgICAgICBjYXNlICJj aGFyYWN0ZXJbXSI6CisgICAgICAgICAgICAgIGNhc2UgImNoYXJhY3RlciB2 YXJ5aW5nIjoKKyAgICAgICAgICAgICAgY2FzZSAiY2hhcmFjdGVyIHZhcnlp bmdbXSI6CisgICAgICAgICAgICAgICAgaWYgKGMuaW50ZXJuYWxfc2l6ZSAm JiBjLmludGVybmFsX3NpemUgPj0gMCAmJiBjLmludGVybmFsX3NpemUgIT0g NjU1MzUpIHsKKyAgICAgICAgICAgICAgICAgIC8vIFVwZGF0ZSBjb2x1bW4g dHlwZSB0byBkaXNwbGF5IGxlbmd0aCBvbiBjb2x1bW4gaGVhZGVyCisgICAg ICAgICAgICAgICAgICBjb2xfdHlwZSArPSAnICgnICsgYy5pbnRlcm5hbF9z aXplICsgJyknOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg ICBjb2xfY2VsbCA9ICdzdHJpbmcnOworICAgICAgICAgICAgICAgIGJyZWFr OworICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIGNv bF9jZWxsID0gJ3N0cmluZyc7CisgICAgICAgICAgICB9CiAKLSAgICAgICAg ICAgICAgICAgIGNvbHVtbl9sYWJlbCA9IGMuZGlzcGxheV9uYW1lICsgJzxi cj4nICsgY29sX3R5cGU7Ci0KLSAgICAgICAgICAgICAgICAgIHZhciBjb2wg PSB7Ci0gICAgICAgICAgICAgICAgICAgICduYW1lJzogYy5uYW1lLAotICAg ICAgICAgICAgICAgICAgICAncG9zJzogYy5wb3MsCi0gICAgICAgICAgICAg ICAgICAgICdsYWJlbCc6IGNvbHVtbl9sYWJlbCwKLSAgICAgICAgICAgICAg ICAgICAgJ2NlbGwnOiBjb2xfY2VsbCwKLSAgICAgICAgICAgICAgICAgICAg J2Nhbl9lZGl0Jzogc2VsZi5jYW5fZWRpdCwKLSAgICAgICAgICAgICAgICAg ICAgJ3R5cGUnOiB0eXBlLAotICAgICAgICAgICAgICAgICAgICAnZGlzcGxh eV9uYW1lJzogYy5kaXNwbGF5X25hbWUsCi0gICAgICAgICAgICAgICAgICAg ICdjb2x1bW5fdHlwZSc6IGNvbF90eXBlLAotICAgICAgICAgICAgICAgICAg ICAnbm90X251bGwnOiBjLm5vdF9udWxsLAotICAgICAgICAgICAgICAgICAg ICAnaGFzX2RlZmF1bHRfdmFsJzogYy5oYXNfZGVmYXVsdF92YWwKLSAgICAg ICAgICAgICAgICAgIH07Ci0gICAgICAgICAgICAgICAgICBjb2x1bW5zLnB1 c2goY29sKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAg fQotICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgIGFsZXJ0 aWZ5LmFsZXJ0KCdGZXRjaGluZyBUeXBlIEVycm9yJywgcmVzLmRhdGEucmVz dWx0KTsKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICBzZWxmLmNv bHVtbnMgPSBjb2x1bW5zOwotICAgICAgICAgICAgICBpZiAoY2IgJiYgdHlw ZW9mKGNiKSA9PSAnZnVuY3Rpb24nKSB7Ci0gICAgICAgICAgICAgICAgY2Io KTsKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSwKLSAgICAgICAg ICAgIGZhaWw6IF9mYWlsCisgICAgICAgICAgICBjb2x1bW5fbGFiZWwgPSBj LmRpc3BsYXlfbmFtZSArICc8YnI+JyArIGNvbF90eXBlOworCisgICAgICAg ICAgICB2YXIgY29sID0geworICAgICAgICAgICAgICAnbmFtZSc6IGMubmFt ZSwKKyAgICAgICAgICAgICAgJ2Rpc3BsYXlfbmFtZSc6IGMuZGlzcGxheV9u YW1lLAorICAgICAgICAgICAgICAnY29sdW1uX3R5cGUnOiBjb2xfdHlwZSwK KyAgICAgICAgICAgICAgJ3Bvcyc6IGMucG9zLAorICAgICAgICAgICAgICAn bGFiZWwnOiBjb2x1bW5fbGFiZWwsCisgICAgICAgICAgICAgICdjZWxsJzog Y29sX2NlbGwsCisgICAgICAgICAgICAgICdjYW5fZWRpdCc6IHNlbGYuY2Fu X2VkaXQsCisgICAgICAgICAgICAgICd0eXBlJzogdHlwZSwKKyAgICAgICAg ICAgICAgJ25vdF9udWxsJzogYy5ub3RfbnVsbCwKKyAgICAgICAgICAgICAg J2hhc19kZWZhdWx0X3ZhbCc6IGMuaGFzX2RlZmF1bHRfdmFsCisgICAgICAg ICAgICB9OworICAgICAgICAgICAgY29sdW1ucy5wdXNoKGNvbCk7CiAgICAg ICAgICAgfSk7CisKKyAgICAgICAgICBzZWxmLmNvbHVtbnMgPSBjb2x1bW5z OworICAgICAgICAgIGlmIChjYiAmJiB0eXBlb2YoY2IpID09ICdmdW5jdGlv bicpIHsKKyAgICAgICAgICAgIGNiKCk7CisgICAgICAgICAgfQogICAgICAg ICB9LAogCiAgICAgICAgIC8vIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBy YWlzZSBhcHByb3ByaWF0ZSBtZXNzYWdlLgpAQCAtMTk4NiwyMiArMjA2MCwy MSBAQCBkZWZpbmUoWwogCiAgICAgICAgICAgc2VsZi5ncmlkVmlldy5tZXNz YWdlc19wYW5lbC5mb2N1cygpOwogCi0gICAgICAgICAgaWYgKHNlbGYuaXNf cXVlcnlfdG9vbCkgewotICAgICAgICAgICAgaWYgKGNsZWFyX2dyaWQpIHsK LSAgICAgICAgICAgICAgLy8gRGVsZXRlIGdyaWQKLSAgICAgICAgICAgICAg aWYgKHNlbGYuZ3JpZFZpZXcuaGFuZGxlci5zbGlja2dyaWQpIHsKLSAgICAg ICAgICAgICAgICBzZWxmLmdyaWRWaWV3LmhhbmRsZXIuc2xpY2tncmlkLmRl c3Ryb3koKTsKKyAgICAgICAgICBpZiAoY2xlYXJfZ3JpZCkgeworICAgICAg ICAgICAgLy8gRGVsZXRlIGdyaWQKKyAgICAgICAgICAgIGlmIChzZWxmLmdy aWRWaWV3LmhhbmRsZXIuc2xpY2tncmlkKSB7CisgICAgICAgICAgICAgIHNl bGYuZ3JpZFZpZXcuaGFuZGxlci5zbGlja2dyaWQuZGVzdHJveSgpOwogCi0g ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgLy8gTWlzYyBjbGVhbmlu ZwotICAgICAgICAgICAgICBzZWxmLmNvbHVtbnMgPSB1bmRlZmluZWQ7Ci0g ICAgICAgICAgICAgIHNlbGYuY29sbGVjdGlvbiA9IHVuZGVmaW5lZDsKLQot ICAgICAgICAgICAgICAkKCcuc3FsLWVkaXRvci1tZXNzYWdlJykudGV4dCht c2cpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgJCgn LnNxbC1lZGl0b3ItbWVzc2FnZScpLmFwcGVuZChtc2cpOwogICAgICAgICAg ICAgfQorICAgICAgICAgICAgLy8gTWlzYyBjbGVhbmluZworICAgICAgICAg ICAgc2VsZi5jb2x1bW5zID0gdW5kZWZpbmVkOworICAgICAgICAgICAgc2Vs Zi5jb2xsZWN0aW9uID0gdW5kZWZpbmVkOworCisgICAgICAgICAgICAkKCcu c3FsLWVkaXRvci1tZXNzYWdlJykudGV4dChtc2cpOworICAgICAgICAgIH0g ZWxzZSB7CisgICAgICAgICAgICAkKCcuc3FsLWVkaXRvci1tZXNzYWdlJyku YXBwZW5kKG1zZyk7CiAgICAgICAgICAgfQorCiAgICAgICAgICAgLy8gU2Ny b2xsIGF1dG9tYXRpY2FsbHkgd2hlbiBtc2dzIGFwcGVuZHMgdG8gZWxlbWVu dAogICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKXsKICAgICAgICAg ICAgICQoIi5zcWwtZWRpdG9yLW1lc3NhZ2UiKS5zY3JvbGxUb3AoJCgiLnNx bC1lZGl0b3ItbWVzc2FnZSIpWzBdLnNjcm9sbEhlaWdodCk7OwpAQCAtMjA1 NSw3ICsyMTI4LDcgQEAgZGVmaW5lKFsKIAogICAgICAgICByb3dzX3RvX2Rl bGV0ZTogZnVuY3Rpb24oZGF0YSkgewogICAgICAgICAgIHZhciBzZWxmID0g dGhpcywKLSAgICAgICAgICAgIHRtcF9rZXlzID0gc2VsZi5nZXRfcm93X3By aW1hcnlfa2V5LmNhbGwoc2VsZik7CisgICAgICAgICAgICB0bXBfa2V5cyA9 IHNlbGYucHJpbWFyeV9rZXlzOwogCiAgICAgICAgICAgLy8gcmUtY2FsY3Vs YXRlIHJvd3Mgd2l0aCBubyBwcmltYXJ5IGtleXMKICAgICAgICAgICBzZWxm LnRlbXBfbmV3X3Jvd3MgPSBbXTsKQEAgLTIwNjgsNyArMjE0MSw2IEBAIGRl ZmluZShbCiAgICAgICAgICAgICAgIHNlbGYudGVtcF9uZXdfcm93cy5wdXNo KGlkeCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgfSk7Ci0gICAgICAg ICAgZGF0YS5nZXRJdGVtTWV0YWRhdGEgPSBzZWxmLmRhdGFfdmlldy5nZXRJ dGVtTWV0YWRhdGE7CiAgICAgICAgICAgc2VsZi5yb3dzX3RvX2Rpc2FibGUg PSBfLmNsb25lKHNlbGYudGVtcF9uZXdfcm93cyk7CiAgICAgICAgIH0sCiAK QEAgLTIwNzksNjkgKzIxNTEsNzMgQEAgZGVmaW5lKFsKICAgICAgICAgICAg ICAgaXNfYWRkZWQgPSBfLnNpemUoc2VsZi5kYXRhX3N0b3JlLmFkZGVkKSwK ICAgICAgICAgICAgICAgaXNfdXBkYXRlZCA9IF8uc2l6ZShzZWxmLmRhdGFf c3RvcmUudXBkYXRlZCk7CiAKLSAgICAgICAgICAgICAgLy8gUmVtb3ZlIG5l d2x5IGFkZGVkIHJvd3MgZnJvbSBzdGFnZWQgcm93cyBhcyB3ZSBkb24ndCB3 YW50IHRvIHNlbmQgdGhlbSBvbiBzZXJ2ZXIKLSAgICAgICAgICAgICAgaWYo aXNfYWRkZWQpIHsKLSAgICAgICAgICAgICAgICAgIF8uZWFjaChzZWxmLmRh dGFfc3RvcmUuYWRkZWQsIGZ1bmN0aW9uKHZhbCwga2V5KSB7Ci0gICAgICAg ICAgICAgICAgICAgIGlmKGtleSBpbiBzZWxmLmRhdGFfc3RvcmUuc3RhZ2Vk X3Jvd3MpIHsKLSAgICAgICAgICAgICAgICAgICAgICAvLyBSZW1vdmUgdGhl IHJvdyBmcm9tIGRhdGEgc3RvcmUgc28gdGhhdCB3ZSBkbyBub3Qgc2VuZCBp dCBvbiBzZXJ2ZXIKLSAgICAgICAgICAgICAgICAgICAgICBkZWxldGVkX2tl eXMucHVzaChrZXkpOwotICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBz ZWxmLmRhdGFfc3RvcmUuc3RhZ2VkX3Jvd3Nba2V5XTsKLSAgICAgICAgICAg ICAgICAgICAgICBkZWxldGUgc2VsZi5kYXRhX3N0b3JlLmFkZGVkW2tleV0K LSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgfSk7 CisgICAgICAgICAgLy8gUmVtb3ZlIG5ld2x5IGFkZGVkIHJvd3MgZnJvbSBz dGFnZWQgcm93cyBhcyB3ZSBkb24ndCB3YW50IHRvIHNlbmQgdGhlbSBvbiBz ZXJ2ZXIKKyAgICAgICAgICBpZihpc19hZGRlZCkgeworICAgICAgICAgICAg Xy5lYWNoKHNlbGYuZGF0YV9zdG9yZS5hZGRlZCwgZnVuY3Rpb24odmFsLCBr ZXkpIHsKKyAgICAgICAgICAgICAgaWYoa2V5IGluIHNlbGYuZGF0YV9zdG9y ZS5zdGFnZWRfcm93cykgeworICAgICAgICAgICAgICAgIC8vIFJlbW92ZSB0 aGUgcm93IGZyb20gZGF0YSBzdG9yZSBzbyB0aGF0IHdlIGRvIG5vdCBzZW5k IGl0IG9uIHNlcnZlcgorICAgICAgICAgICAgICAgIGRlbGV0ZWRfa2V5cy5w dXNoKGtleSk7CisgICAgICAgICAgICAgICAgZGVsZXRlIHNlbGYuZGF0YV9z dG9yZS5zdGFnZWRfcm93c1trZXldOworICAgICAgICAgICAgICAgIGRlbGV0 ZSBzZWxmLmRhdGFfc3RvcmUuYWRkZWRba2V5XTsKKyAgICAgICAgICAgICAg ICBkZWxldGUgc2VsZi5kYXRhX3N0b3JlLmFkZGVkX2luZGV4W2tleV07CiAg ICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAvLyBJZiBvbmx5IG5l d2x5IHJvd3MgdG8gZGVsZXRlIGFuZCBubyBkYXRhIGlzIHRoZXJlIHRvIHNl bmQgb24gc2VydmVyCi0gICAgICAgICAgICAgIC8vIHRoZW4ganVzdCByZS1y ZW5kZXIgdGhlIGdyaWQKLSAgICAgICAgICAgICAgaWYoXy5zaXplKHNlbGYu ZGF0YV9zdG9yZS5zdGFnZWRfcm93cykgPT0gMCkgewotICAgICAgICAgICAg ICAgIHZhciBncmlkID0gc2VsZi5zbGlja2dyaWQsIGRhdGEgPSBncmlkLmdl dERhdGEoKSwgaWR4ID0gMDsKLSAgICAgICAgICAgICAgICAgIGlmKGRlbGV0 ZWRfa2V5cy5sZW5ndGgpewotICAgICAgICAgICAgICAgICAgICAvLyBSZW1v dmUgbmV3IHJvd3MgZnJvbSBncmlkIGRhdGEgdXNpbmcgZGVsZXRlZCBrZXlz Ci0gICAgICAgICAgICAgICAgICAgZGF0YSA9IF8ucmVqZWN0KGRhdGEsIGZ1 bmN0aW9uKGQpewotICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChkICYm IF8uaW5kZXhPZihkZWxldGVkX2tleXMsIGQuX190ZW1wX1BLKSA+IC0xKQot ICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgICAgfQot ICAgICAgICAgICAgICAgICAgc2VsZi5yb3dzX3RvX2RlbGV0ZS5hcHBseShz ZWxmLCBbZGF0YV0pOwotICAgICAgICAgICAgICAgICAgZ3JpZC5yZXNldEFj dGl2ZUNlbGwoKTsKLSAgICAgICAgICAgICAgICAgIGdyaWQuc2V0RGF0YShk YXRhLCB0cnVlKTsKLSAgICAgICAgICAgICAgICAgIGdyaWQuc2V0U2VsZWN0 ZWRSb3dzKFtdKTsKLSAgICAgICAgICAgICAgICAgIGdyaWQuaW52YWxpZGF0 ZSgpOwotICAgICAgICAgICAgICAgICAgLy8gTm90aGluZyB0byBjb3B5IG9y IGRlbGV0ZSBoZXJlCi0gICAgICAgICAgICAgICAgICAkKCIjYnRuLWRlbGV0 ZS1yb3ciKS5wcm9wKCdkaXNhYmxlZCcsIHRydWUpOwotICAgICAgICAgICAg ICAgICAgJCgiI2J0bi1jb3B5LXJvdyIpLnByb3AoJ2Rpc2FibGVkJywgdHJ1 ZSk7Ci0gICAgICAgICAgICAgICAgICBpZihfLnNpemUoc2VsZi5kYXRhX3N0 b3JlLmFkZGVkKSB8fCBpc191cGRhdGVkKSB7Ci0gICAgICAgICAgICAgICAg ICAgIC8vIERvIG5vdCBkaXNhYmxlIHNhdmUgYnV0dG9uIGlmIHRoZXJlIGFy ZQotICAgICAgICAgICAgICAgICAgICAvLyBhbnkgb3RoZXIgY2hhbmdlcyBw cmVzZW50IGluIGdyaWQgZGF0YQotICAgICAgICAgICAgICAgICAgICAkKCIj YnRuLXNhdmUiKS5wcm9wKCdkaXNhYmxlZCcsIGZhbHNlKTsKLSAgICAgICAg ICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICQoIiNi dG4tc2F2ZSIpLnByb3AoJ2Rpc2FibGVkJywgdHJ1ZSk7Ci0gICAgICAgICAg ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICBhbGVydGlmeS5zdWNjZXNz KGdldHRleHQoIlJvdyhzKSBkZWxldGVkIikpOworICAgICAgICAgICAgfSk7 CisgICAgICAgICAgfQorICAgICAgICAgIC8vIElmIG9ubHkgbmV3bHkgcm93 cyB0byBkZWxldGUgYW5kIG5vIGRhdGEgaXMgdGhlcmUgdG8gc2VuZCBvbiBz ZXJ2ZXIKKyAgICAgICAgICAvLyB0aGVuIGp1c3QgcmUtcmVuZGVyIHRoZSBn cmlkCisgICAgICAgICAgaWYoXy5zaXplKHNlbGYuZGF0YV9zdG9yZS5zdGFn ZWRfcm93cykgPT0gMCkgeworICAgICAgICAgICAgICB2YXIgZ3JpZCA9IHNl bGYuc2xpY2tncmlkLAorICAgICAgICAgICAgICBkYXRhVmlldyA9IGdyaWQu Z2V0RGF0YSgpLAorICAgICAgICAgICAgICBkYXRhID0gZGF0YVZpZXcuZ2V0 SXRlbXMoKSwKKyAgICAgICAgICAgICAgaWR4ID0gMDsKKworICAgICAgICAg ICAgICBncmlkLnJlc2V0QWN0aXZlQ2VsbCgpOworCisgICAgICAgICAgICAg IGRhdGFWaWV3LmJlZ2luVXBkYXRlKCk7CisgICAgICAgICAgICAgIGZvciAo dmFyIGkgPSAwOyBpIDwgZGVsZXRlZF9rZXlzLmxlbmd0aDsgaSsrKSB7Cisg ICAgICAgICAgICAgICAgZGF0YVZpZXcuZGVsZXRlSXRlbShkZWxldGVkX2tl eXNbaV0pOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIGRhdGFW aWV3LmVuZFVwZGF0ZSgpOworICAgICAgICAgICAgICBzZWxmLnJvd3NfdG9f ZGVsZXRlLmFwcGx5KHNlbGYsIFtkYXRhVmlldy5nZXRJdGVtcygpXSk7Cisg ICAgICAgICAgICAgIGdyaWQucmVzZXRBY3RpdmVDZWxsKCk7CisgICAgICAg ICAgICAgIGdyaWQuc2V0U2VsZWN0ZWRSb3dzKFtdKTsKKyAgICAgICAgICAg ICAgZ3JpZC5pbnZhbGlkYXRlKCk7CisKKyAgICAgICAgICAgICAgLy8gTm90 aGluZyB0byBjb3B5IG9yIGRlbGV0ZSBoZXJlCisgICAgICAgICAgICAgICQo IiNidG4tZGVsZXRlLXJvdyIpLnByb3AoJ2Rpc2FibGVkJywgdHJ1ZSk7Cisg ICAgICAgICAgICAgICQoIiNidG4tY29weS1yb3ciKS5wcm9wKCdkaXNhYmxl ZCcsIHRydWUpOworICAgICAgICAgICAgICBpZihfLnNpemUoc2VsZi5kYXRh X3N0b3JlLmFkZGVkKSB8fCBpc191cGRhdGVkKSB7CisgICAgICAgICAgICAg ICAgLy8gRG8gbm90IGRpc2FibGUgc2F2ZSBidXR0b24gaWYgdGhlcmUgYXJl CisgICAgICAgICAgICAgICAgLy8gYW55IG90aGVyIGNoYW5nZXMgcHJlc2Vu dCBpbiBncmlkIGRhdGEKKyAgICAgICAgICAgICAgICAkKCIjYnRuLXNhdmUi KS5wcm9wKCdkaXNhYmxlZCcsIGZhbHNlKTsKICAgICAgICAgICAgICAgfSBl bHNlIHsKLSAgICAgICAgICAgICAgICAvLyBUaGVyZSBhcmUgb3RoZXIgZGF0 YSB0byBuZWVkcyB0byBiZSB1cGRhdGVkIG9uIHNlcnZlcgotICAgICAgICAg ICAgICAgIGlmKGlzX3VwZGF0ZWQpIHsKLSAgICAgICAgICAgICAgICAgIGFs ZXJ0aWZ5LmFsZXJ0KGdldHRleHQoIk9wZXJhdGlvbiBmYWlsZWQiKSwKKyAg ICAgICAgICAgICAgICAkKCIjYnRuLXNhdmUiKS5wcm9wKCdkaXNhYmxlZCcs IHRydWUpOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIGFsZXJ0 aWZ5LnN1Y2Nlc3MoZ2V0dGV4dCgiUm93KHMpIGRlbGV0ZWQiKSk7CisgICAg ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIFRoZXJlIGFyZSBvdGhl ciBkYXRhIHRvIG5lZWRzIHRvIGJlIHVwZGF0ZWQgb24gc2VydmVyCisgICAg ICAgICAgICBpZihpc191cGRhdGVkKSB7CisgICAgICAgICAgICAgIGFsZXJ0 aWZ5LmFsZXJ0KGdldHRleHQoIk9wZXJhdGlvbiBmYWlsZWQiKSwKICAgICAg ICAgICAgICAgICAgICAgZ2V0dGV4dCgiVGhlcmUgYXJlIHVuc2F2ZWQgY2hh bmdlcyBpbiBncmlkLCBQbGVhc2Ugc2F2ZSB0aGVtIGZpcnN0IHRvIGF2b2lk IGluY29uc2lzdGVuY3kgaW4gZGF0YSIpCiAgICAgICAgICAgICAgICAgICAp OwotICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAg IH0KLSAgICAgICAgICAgICAgICBhbGVydGlmeS5jb25maXJtKGdldHRleHQo IkRlbGV0ZSBSb3cocykiKSwKKyAgICAgICAgICAgICAgcmV0dXJuOworICAg ICAgICAgICAgfQorICAgICAgICAgICAgYWxlcnRpZnkuY29uZmlybShnZXR0 ZXh0KCJEZWxldGUgUm93KHMpIiksCiAgICAgICAgICAgICAgICAgICBnZXR0 ZXh0KCJBcmUgeW91IHN1cmUgeW91IHdpc2ggdG8gZGVsZXRlIHNlbGVjdGVk IHJvdyhzKT8iKSwKLSAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgewot ICAgICAgICAgICAgICAgICAgICAkKCIjYnRuLWRlbGV0ZS1yb3ciKS5wcm9w KCdkaXNhYmxlZCcsIHRydWUpOwotICAgICAgICAgICAgICAgICAgICAkKCIj YnRuLWNvcHktcm93IikucHJvcCgnZGlzYWJsZWQnLCB0cnVlKTsKLSAgICAg ICAgICAgICAgICAgICAgLy8gQ2hhbmdlIHRoZSBzdGF0ZQotICAgICAgICAg ICAgICAgICAgICBzZWxmLmRhdGFfc3RvcmUuZGVsZXRlZCA9IHNlbGYuZGF0 YV9zdG9yZS5zdGFnZWRfcm93czsKLSAgICAgICAgICAgICAgICAgICAgc2Vs Zi5kYXRhX3N0b3JlLnN0YWdlZF9yb3dzID0ge307Ci0gICAgICAgICAgICAg ICAgICAgIC8vIFNhdmUgdGhlIGNoYW5nZXMgb24gc2VydmVyCi0gICAgICAg ICAgICAgICAgICAgIHNlbGYuX3NhdmUoKTsKLSAgICAgICAgICAgICAgICAg IH0sCi0gICAgICAgICAgICAgICAgICBmdW5jdGlvbigpIHsKLSAgICAgICAg ICAgICAgICAgICAgLy8gRG8gbm90aGluZyBhcyB1c2VyIGNhbmNlbGVkIHRo ZSBvcGVyYXRpb24uCi0gICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg ICAgICAgKS5zZXQoJ2xhYmVscycsIHtvazonWWVzJywgY2FuY2VsOidObyd9 KTsKKyAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAg ICAgJCgiI2J0bi1kZWxldGUtcm93IikucHJvcCgnZGlzYWJsZWQnLCB0cnVl KTsKKyAgICAgICAgICAgICAgICAkKCIjYnRuLWNvcHktcm93IikucHJvcCgn ZGlzYWJsZWQnLCB0cnVlKTsKKyAgICAgICAgICAgICAgICAvLyBDaGFuZ2Ug dGhlIHN0YXRlCisgICAgICAgICAgICAgICAgc2VsZi5kYXRhX3N0b3JlLmRl bGV0ZWQgPSBzZWxmLmRhdGFfc3RvcmUuc3RhZ2VkX3Jvd3M7CisgICAgICAg ICAgICAgICAgc2VsZi5kYXRhX3N0b3JlLnN0YWdlZF9yb3dzID0ge307Cisg ICAgICAgICAgICAgICAgLy8gU2F2ZSB0aGUgY2hhbmdlcyBvbiBzZXJ2ZXIK KyAgICAgICAgICAgICAgICBzZWxmLl9zYXZlKCk7CisgICAgICAgICAgICAg IH0sCisgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg ICAgIC8vIERvIG5vdGhpbmcgYXMgdXNlciBjYW5jZWxlZCB0aGUgb3BlcmF0 aW9uLgogICAgICAgICAgICAgICB9Ci0KKyAgICAgICAgICAgICkuc2V0KCds YWJlbHMnLCB7b2s6IGdldHRleHQoIlllcyIpLCBjYW5jZWw6Z2V0dGV4dCgi Tm8iKX0pOworICAgICAgICAgIH0KICAgICAgICAgfSwKIAogICAgICAgICAv KiBUaGlzIGZ1bmN0aW9uIHdpbGwgZmV0Y2ggdGhlIGxpc3Qgb2YgY2hhbmdl ZCBtb2RlbHMgYW5kIG1ha2UKQEAgLTIyMDMsNyArMjI3OSw5IEBAIGRlZmlu ZShbCiAgICAgICAgICAgICAgIGRhdGE6IEpTT04uc3RyaW5naWZ5KHJlcV9k YXRhKSwKICAgICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24ocmVzKSB7 CiAgICAgICAgICAgICAgICAgdmFyIGdyaWQgPSBzZWxmLnNsaWNrZ3JpZCwK LSAgICAgICAgICAgICAgICAgIGRhdGEgPSBncmlkLmdldERhdGEoKTsKKyAg ICAgICAgICAgICAgICAgICAgZGF0YVZpZXcgPSBncmlkLmdldERhdGEoKSwK KyAgICAgICAgICAgICAgICAgICAgZGF0YV9sZW5ndGggPSBkYXRhVmlldy5n ZXRMZW5ndGgoKSwKKyAgICAgICAgICAgICAgICAgICAgZGF0YSA9IFtdOwog ICAgICAgICAgICAgICAgIGlmIChyZXMuZGF0YS5zdGF0dXMpIHsKICAgICAg ICAgICAgICAgICAgICAgLy8gUmVtb3ZlIGZsYWcgaXNfcm93X2NvcGllZCBm cm9tIGNvcGllZCByb3dzCiAgICAgICAgICAgICAgICAgICAgIF8uZWFjaChk YXRhLCBmdW5jdGlvbihyb3csIGlkeCkgewpAQCAtMjIyMCwyMiArMjI5OCwy MCBAQCBkZWZpbmUoWwogICAgICAgICAgICAgICAgICAgICAvLyBSZW1vdmUg ZGVsZXRlZCByb3dzIGZyb20gY2xpZW50IGFzIHdlbGwKICAgICAgICAgICAg ICAgICAgICAgaWYoaXNfZGVsZXRlZCkgewogICAgICAgICAgICAgICAgICAg ICAgIHZhciByb3dzID0gZ3JpZC5nZXRTZWxlY3RlZFJvd3MoKTsKLSAgICAg ICAgICAgICAgICAgICAgICAvKiBJbiBKYXZhU2NyaXB0IHNvcnRpbmcgYnkg ZGVmYXVsdCBpcyBsZXhpY2FsLAotICAgICAgICAgICAgICAgICAgICAgICAq IFRvIG1ha2Ugc29ydGluZyBudW1lcmljYWwgd2UgbmVlZCB0byBwYXNzIGZ1 bmN0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICogQWZ0ZXIgdGhhdCB3 ZSB3aWxsIFJldmVyc2UgdGhlIG9yZGVyIG9mIHNvcnRlZCBhcnJheQotICAg ICAgICAgICAgICAgICAgICAgICAqIHNvIHRoYXQgd2hlbiB3ZSByZW1vdmUg aXQgZG9lcyBub3QgYWZmZWN0IGFycmF5IGluZGV4Ci0gICAgICAgICAgICAg ICAgICAgICAgICovCi0gICAgICAgICAgICAgICAgICAgICAgaWYoZGF0YS5s ZW5ndGggPT0gcm93cy5sZW5ndGgpIHsKKyAgICAgICAgICAgICAgICAgICAg ICBpZihkYXRhX2xlbmd0aCA9PSByb3dzLmxlbmd0aCkgewogICAgICAgICAg ICAgICAgICAgICAgICAgLy8gVGhpcyBtZWFucyBhbGwgdGhlIHJvd3MgYXJl IHNlbGVjdGVkLCBjbGVhciBhbGwgZGF0YQogICAgICAgICAgICAgICAgICAg ICAgICAgZGF0YSA9IFtdOworICAgICAgICAgICAgICAgICAgICAgICAgZGF0 YVZpZXcuc2V0SXRlbXMoZGF0YSwgc2VsZi5jbGllbnRfcHJpbWFyeV9rZXkp OwogICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg ICAgICAgICAgICAgICByb3dzID0gcm93cy5zb3J0KGZ1bmN0aW9uKGEsYil7 cmV0dXJuIGEgLSBifSkucmV2ZXJzZSgpOwotICAgICAgICAgICAgICAgICAg ICAgICAgcm93cy5mb3JFYWNoKGZ1bmN0aW9uKGlkeCkgewotICAgICAgICAg ICAgICAgICAgICAgICAgICBkYXRhLnNwbGljZShpZHgsIDEpOwotICAgICAg ICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgICAgICAg ICBkYXRhVmlldy5iZWdpblVwZGF0ZSgpOworICAgICAgICAgICAgICAgICAg ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByb3dzLmxlbmd0aDsgaSsrKSB7 CisgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0gPSBncmlkLmdldERh dGFJdGVtKHJvd3NbaV0pOworICAgICAgICAgICAgICAgICAgICAgICAgICBk YXRhLnB1c2goaXRlbSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIGRh dGFWaWV3LmRlbGV0ZUl0ZW0oaXRlbVtzZWxmLmNsaWVudF9wcmltYXJ5X2tl eV0pOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg ICAgICAgICAgICAgZGF0YVZpZXcuZW5kVXBkYXRlKCk7CiAgICAgICAgICAg ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgIHNlbGYucm93 c190b19kZWxldGUuYXBwbHkoc2VsZiwgW2RhdGFdKTsKLSAgICAgICAgICAg ICAgICAgICAgICBncmlkLnNldERhdGEoZGF0YSwgdHJ1ZSk7CiAgICAgICAg ICAgICAgICAgICAgICAgZ3JpZC5zZXRTZWxlY3RlZFJvd3MoW10pOwogICAg ICAgICAgICAgICAgICAgICB9CiAKQEAgLTIyNDgsNiArMjMyNCw3IEBAIGRl ZmluZShbCiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucm93c190b19k aXNhYmxlID0gXy5jbG9uZShzZWxmLnRlbXBfbmV3X3Jvd3MpOwogICAgICAg ICAgICAgICAgICAgICB9CiAKKyAgICAgICAgICAgICAgICAgICAgZ3JpZC5z ZXRTZWxlY3RlZFJvd3MoW10pOwogICAgICAgICAgICAgICAgICAgICAvLyBS ZXNldCBkYXRhIHN0b3JlCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuZGF0 YV9zdG9yZSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAnYWRkZWQnOiB7 fSwKQEAgLTIyNjgsNyArMjM0NSw3IEBAIGRlZmluZShbCiAgICAgICAgICAg ICAgICAgICAkKCcuc3FsLWVkaXRvci1tZXNzYWdlJykudGV4dChyZXMuZGF0 YS5yZXN1bHQpOwogICAgICAgICAgICAgICAgICAgdmFyIGVycl9tc2cgPSBT KGdldHRleHQoIiVzLiIpKS5zcHJpbnRmKHJlcy5kYXRhLnJlc3VsdCkudmFs dWUoKTsKICAgICAgICAgICAgICAgICAgIGFsZXJ0aWZ5Lm5vdGlmeShlcnJf bXNnLCAnZXJyb3InLCAyMCk7Ci0KKyAgICAgICAgICAgICAgICAgIGdyaWQu c2V0U2VsZWN0ZWRSb3dzKFtdKTsKICAgICAgICAgICAgICAgICAgIC8vIFRv IGhpZ2hsaWdodCB0aGUgcm93IGF0IGZhdWx0CiAgICAgICAgICAgICAgICAg ICBpZihfLmhhcyhyZXMuZGF0YSwgJ19yb3dpZCcpICYmCiAgICAgICAgICAg ICAgICAgICAgICAgKCFfLmlzVW5kZWZpbmVkKHJlcy5kYXRhLl9yb3dpZCl8 fCAhXy5pc051bGwocmVzLmRhdGEuX3Jvd2lkKSkpIHsKQEAgLTIzMjQsMTQg KzI0MDEsMjEgQEAgZGVmaW5lKFsKIAogICAgICAgICAvLyBGaW5kIGluZGV4 IG9mIHJvdyBhdCBmYXVsdCBmcm9tIGdyaWQgZGF0YQogICAgICAgICBfZmlu ZF9yb3dpbmRleDogZnVuY3Rpb24ocm93aWQpIHsKLSAgICAgICAgICB2YXIg c2VsZiA9IHRoaXM7Ci0gICAgICAgICAgdmFyIGdyaWQgPSBzZWxmLnNsaWNr Z3JpZCwKLSAgICAgICAgICAgIGRhdGEgPSBncmlkLmdldERhdGEoKSwgX3Jv d2lkLCBjb3VudCA9IDAsIF9pZHggPSAtMTsKKyAgICAgICAgICB2YXIgc2Vs ZiA9IHRoaXMsCisgICAgICAgICAgICBncmlkID0gc2VsZi5zbGlja2dyaWQs CisgICAgICAgICAgICBkYXRhVmlldyA9IGdyaWQuZ2V0RGF0YSgpLAorICAg ICAgICAgICAgZGF0YSA9IGRhdGFWaWV3LmdldEl0ZW1zKCksCisgICAgICAg ICAgICBfcm93aWQsCisgICAgICAgICAgICBjb3VudCA9IDAsCisgICAgICAg ICAgICBfaWR4ID0gLTE7CisKICAgICAgICAgICAvLyBJZiBfcm93aWQgaXMg b2JqZWN0IHRoZW4gaXQncyB1cGRhdGUvZGVsZXRlIG9wZXJhdGlvbgogICAg ICAgICAgIGlmKF8uaXNPYmplY3Qocm93aWQpKSB7CiAgICAgICAgICAgICAg IF9yb3dpZCA9IHJvd2lkOwotICAgICAgICAgIH0gZWxzZSBpZiAoXy5pc1N0 cmluZyhyb3dpZCkpIHsgLy8gSW5zZXJ0IG9wcmF0aW9uCi0gICAgICAgICAg ICBfcm93aWQgPSB7ICdfX3RlbXBfUEsnOiByb3dpZCB9OworICAgICAgICAg IH0gZWxzZSBpZiAoXy5pc1N0cmluZyhyb3dpZCkpIHsgLy8gSW5zZXJ0IG9w ZXJhdGlvbgorICAgICAgICAgICAgdmFyIHJvd2lkID0ge307CisgICAgICAg ICAgICByb3dpZFtzZWxmLmNsaWVudF9wcmltYXJ5X2tleV09IHJvd2lkOwor ICAgICAgICAgICAgX3Jvd2lkID0gcm93aWQ7CiAgICAgICAgICAgfSBlbHNl IHsKICAgICAgICAgICAgIC8vIFNvbWV0aGluZyBpcyB3cm9uZyB3aXRoIHVu aXF1ZSBpZAogICAgICAgICAgICAgcmV0dXJuIF9pZHg7CkBAIC0yNTUzLDEx ICsyNjM3LDYgQEAgZGVmaW5lKFsKICAgICAgICAgLy8gVGhpcyBmdW5jdGlv biB3aWxsIHNldCB0aGUgcmVxdWlyZWQgZmxhZyBmb3IgcG9sbGluZyByZXNw b25zZSBkYXRhCiAgICAgICAgIF9pbml0X3BvbGxpbmdfZmxhZ3M6IGZ1bmN0 aW9uKCkgewogICAgICAgICAgIHZhciBzZWxmID0gdGhpczsKLSAgICAgICAg ICAvLyBTZXQgYSBmbGFnIHRvIGdldCBjb2x1bW5zCi0gICAgICAgICAgc2Vs Zi5GRVRDSF9DT0xVTU5TX0ZST01fU0VSVkVSID0gdHJ1ZTsKLSAgICAgICAg ICAvLyBXZSB3aWxsIHNldCBjb2x1bW5zIGRhdGEgaW4gdGhpcyB2YXJpYWJs ZSBmb3IgZnV0dXJlIHVzZSBvbmNlIHdlIGZldGNoIGl0Ci0gICAgICAgICAg Ly8gZnJvbSBzZXJ2ZXIKLSAgICAgICAgICBzZWxmLkNPTFVNTlNfREFUQSA9 IHt9OwogCiAgICAgICAgICAgLy8gVG8gZ2V0IGEgdGltZW91dCBmb3IgcG9s bGluZyBmYWxsYmFjayB0aW1lciBpbiBzZWNvbmRzIGluCiAgICAgICAgICAg Ly8gcmVnYXJkcyB0byBlbGFwc2VkIHRpbWUKQEAgLTI2NTMsNyArMjczMiw3 IEBAIGRlZmluZShbCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAg ICAvLyBBZGQgY29sdW1uIHBvc2l0aW9uIGFuZCBpdCdzIHZhbHVlIHRvIGRh dGEKLSAgICAgICAgICBkYXRhW2NvbHVtbl9pbmZvLmZpZWxkXSA9IF92YWx1 ZXNbY29sdW1uX2luZm8ucG9zXSB8fCAnJzsKKyAgICAgICAgICBkYXRhW2Nv bHVtbl9pbmZvLmZpZWxkXSA9IF92YWx1ZXNbY29sdW1uX2luZm8uZmllbGRd IHx8ICcnOwogCiAgICAgICAgICAgc2VsZi50cmlnZ2VyKAogICAgICAgICAg ICAgJ3BnYWRtaW4tc3FsZWRpdG9yOmxvYWRpbmctaWNvbjpzaG93JywKQEAg LTI3MjMsNyArMjgwMiw3IEBAIGRlZmluZShbCiAgICAgICAgICAgICByZXR1 cm47CiAKICAgICAgICAgICAvLyBBZGQgY29sdW1uIHBvc2l0aW9uIGFuZCBp dCdzIHZhbHVlIHRvIGRhdGEKLSAgICAgICAgICBkYXRhW2NvbHVtbl9pbmZv LmZpZWxkXSA9IF92YWx1ZXNbY29sdW1uX2luZm8ucG9zXSB8fCAnJzsKKyAg ICAgICAgICBkYXRhW2NvbHVtbl9pbmZvLmZpZWxkXSA9IF92YWx1ZXNbY29s dW1uX2luZm8uZmllbGRdIHx8ICcnOwogCiAgICAgICAgICAgc2VsZi50cmln Z2VyKAogICAgICAgICAgICAgJ3BnYWRtaW4tc3FsZWRpdG9yOmxvYWRpbmct aWNvbjpzaG93JywKQEAgLTI4ODYsMTYgKzI5NjUsMTggQEAgZGVmaW5lKFsK ICAgICAgICAgX3Bhc3RlX3JvdzogZnVuY3Rpb24oKSB7CiAgICAgICAgICAg dmFyIHNlbGYgPSB0aGlzLCBjb2xfaW5mbyA9IHt9LAogICAgICAgICAgICAg Z3JpZCA9IHNlbGYuc2xpY2tncmlkLAotICAgICAgICAgICAgZGF0YSA9IGdy aWQuZ2V0RGF0YSgpLAotICAgICAgICAgICAgY291bnQgPSBPYmplY3Qua2V5 cyhkYXRhKS5sZW5ndGgtMTsKLQotICAgICAgICAgIHZhciByb3dzID0gZ3Jp ZC5nZXRTZWxlY3RlZFJvd3MoKS5zb3J0KAorICAgICAgICAgICAgZGF0YVZp ZXcgPSBncmlkLmdldERhdGEoKSwKKyAgICAgICAgICAgIGRhdGEgPSBkYXRh Vmlldy5nZXRJdGVtcygpLAorICAgICAgICAgICAgY291bnQgPSBkYXRhVmll dy5nZXRMZW5ndGgoKSwKKyAgICAgICAgICAgIHJvd3MgPSBncmlkLmdldFNl bGVjdGVkUm93cygpLnNvcnQoCiAgICAgICAgICAgICAgIGZ1bmN0aW9uIChh LCBiKSB7IHJldHVybiBhIC0gYjsgfQogICAgICAgICAgICAgKSwKLSAgICAg ICAgICAgIHJvd3MgPSByb3dzLmxlbmd0aCA9PSAwID8gc2VsZi5sYXN0X2Nv cGllZF9yb3dzIDogcm93cywKICAgICAgICAgICAgIGNvcGllZF9yb3dzID0g cm93cy5tYXAoZnVuY3Rpb24gKHJvd0luZGV4KSB7CiAgICAgICAgICAgICAg IHJldHVybiBkYXRhW3Jvd0luZGV4XTsKICAgICAgICAgICAgIH0pOworCisg ICAgICAgICAgICByb3dzID0gcm93cy5sZW5ndGggPT0gMCA/IHNlbGYubGFz dF9jb3BpZWRfcm93cyA6IHJvd3MKKwogICAgICAgICAgICAgc2VsZi5sYXN0 X2NvcGllZF9yb3dzID0gcm93czsKIAogICAgICAgICAgICAgLy8gSWYgdGhl cmUgYXJlIHJvd3MgdG8gcGFzdGU/CkBAIC0zMDE1LDYgKzMwOTYsOSBAQCBk ZWZpbmUoWwogICAgICAgICAgICAgICBzcWwgPSAnJywKICAgICAgICAgICAg ICAgaGlzdG9yeV9tc2cgPSAnJzsKIAorICAgICAgICAgIHNlbGYuaGFzX21v cmVfcm93cyA9IGZhbHNlOworICAgICAgICAgIHNlbGYuZmV0Y2hpbmdfcm93 cyA9IGZhbHNlOworCiAgICAgICAgICAgLyogSWYgY29kZSBpcyBzZWxlY3Rl ZCBpbiB0aGUgY29kZSBtaXJyb3IgdGhlbiBleGVjdXRlCiAgICAgICAgICAg ICogdGhlIHNlbGVjdGVkIHBhcnQgZWxzZSBleGVjdXRlIHRoZSBjb21wbGV0 ZSBjb2RlLgogICAgICAgICAgICAqLwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRt aW4vdXRpbHMvZHJpdmVyL2Fic3RyYWN0LnB5IGIvd2ViL3BnYWRtaW4vdXRp bHMvZHJpdmVyL2Fic3RyYWN0LnB5CmluZGV4IDliMjM2M2MuLjdkYjNlMzcg MTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3V0aWxzL2RyaXZlci9hYnN0cmFj dC5weQorKysgYi93ZWIvcGdhZG1pbi91dGlscy9kcml2ZXIvYWJzdHJhY3Qu cHkKQEAgLTEwMSw2ICsxMDEsMTIgQEAgY2xhc3MgQmFzZUNvbm5lY3Rpb24o b2JqZWN0KToKICAgICAgIC0gSW1wbGVtZW50IHRoaXMgbWV0aG9kIHRvIGV4 ZWN1dGUgdGhlIGdpdmVuIHF1ZXJ5IGFuZCByZXR1cm5zIHRoZSByZXN1bHQK ICAgICAgICAgYXMgYW4gYXJyYXkgb2YgZGljdCAoY29sdW1uIG5hbWUgLT4g dmFsdWUpIGZvcm1hdC4KIAorICAgICogZGVmIGFzeW5jX2ZldGNobWFueV8y ZGFycmF5KHJlY29yZHM9LTEsIGZvcm1hdHRlZF9leGNlcHRpb25fbXNnPUZh bHNlKToKKyAgICAgIC0gSW1wbGVtZW50IHRoaXMgbWV0aG9kIHRvIHJldHJp ZXZlIHJlc3VsdCBvZiBhc3luY2hyb25vdXMgY29ubmVjdGlvbiBhbmQKKyAg ICAgICAgcG9sbGluZyB3aXRoIG5vX3Jlc3VsdCBmbGFnIHNldCB0byBUcnVl LgorICAgICAgICBUaGlzIHJldHVybnMgdGhlIHJlc3VsdCBhcyBhIDIgZGlt ZW5zaW9uYWwgYXJyYXkuCisgICAgICAgIElmIHJlY29yZHMgaXMgLTEgdGhl biBmZXRjaG1hbnkgd2lsbCBiZWhhdmUgYXMgZmV0Y2hhbGwuCisKICAgICAq IGNvbm5lY3RlZCgpCiAgICAgICAtIEltcGxlbWVudCB0aGlzIG1ldGhvZCB0 byBnZXQgdGhlIHN0YXR1cyBvZiB0aGUgY29ubmVjdGlvbi4gSXQgc2hvdWxk CiAgICAgICAgIHJldHVybiBUcnVlIGZvciBjb25uZWN0ZWQsIG90aGVyd2lz ZSBGYWxzZQpAQCAtMTMzLDcgKzEzOSw3IEBAIGNsYXNzIEJhc2VDb25uZWN0 aW9uKG9iamVjdCk6CiAgICAgICAtIEltcGxlbWVudCB0aGlzIG1ldGhvZCB0 byB3YWl0IGZvciBhc3luY2hyb25vdXMgY29ubmVjdGlvbiB3aXRoIHRpbWVv dXQuCiAgICAgICAgIFRoaXMgbXVzdCBiZSBhIG5vbiBibG9ja2luZyBjYWxs LgogCi0gICAgKiBwb2xsKGZvcm1hdHRlZF9leGNlcHRpb25fbXNnKQorICAg ICogcG9sbChmb3JtYXR0ZWRfZXhjZXB0aW9uX21zZywgbm9fcmVzdWx0KQog ICAgICAgLSBJbXBsZW1lbnQgdGhpcyBtZXRob2QgdG8gcG9sbCB0aGUgZGF0 YSBvZiBxdWVyeSBydW5uaW5nIG9uIGFzeW5jaHJvbm91cwogICAgICAgICBj b25uZWN0aW9uLgogCkBAIC0xODAsNiArMTg2LDEwIEBAIGNsYXNzIEJhc2VD b25uZWN0aW9uKG9iamVjdCk6CiAgICAgICAgIHBhc3MKIAogICAgIEBhYnN0 cmFjdG1ldGhvZAorICAgIGRlZiBhc3luY19mZXRjaG1hbnlfMmRhcnJheShz ZWxmLCByZWNvcmRzPS0xLCBmb3JtYXR0ZWRfZXhjZXB0aW9uX21zZz1GYWxz ZSk6CisgICAgICAgIHBhc3MKKworICAgIEBhYnN0cmFjdG1ldGhvZAogICAg IGRlZiBjb25uZWN0ZWQoc2VsZik6CiAgICAgICAgIHBhc3MKIApAQCAtMjA4 LDcgKzIxOCw3IEBAIGNsYXNzIEJhc2VDb25uZWN0aW9uKG9iamVjdCk6CiAg ICAgICAgIHBhc3MKIAogICAgIEBhYnN0cmFjdG1ldGhvZAotICAgIGRlZiBw b2xsKHNlbGYsIGZvcm1hdHRlZF9leGNlcHRpb25fbXNnPVRydWUpOgorICAg IGRlZiBwb2xsKHNlbGYsIGZvcm1hdHRlZF9leGNlcHRpb25fbXNnPVRydWUs IG5vX3Jlc3VsdD1GYWxzZSk6CiAgICAgICAgIHBhc3MKIAogICAgIEBhYnN0 cmFjdG1ldGhvZApkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdXRpbHMvZHJp dmVyL3BzeWNvcGcyL19faW5pdF9fLnB5IGIvd2ViL3BnYWRtaW4vdXRpbHMv ZHJpdmVyL3BzeWNvcGcyL19faW5pdF9fLnB5CmluZGV4IDkyNTYyYmMuLmQz ZGM1YzUgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3V0aWxzL2RyaXZlci9w c3ljb3BnMi9fX2luaXRfXy5weQorKysgYi93ZWIvcGdhZG1pbi91dGlscy9k cml2ZXIvcHN5Y29wZzIvX19pbml0X18ucHkKQEAgLTEwNzgsNiArMTA3OCw1 NSBAQCBGYWlsZWQgdG8gZXhlY3V0ZSBxdWVyeSAoZXhlY3V0ZV92b2lkKSBm b3IgdGhlIHNlcnZlciAje3NlcnZlcl9pZH0gLSB7Y29ubl9pZH0KIAogICAg ICAgICByZXR1cm4gVHJ1ZSwgeydjb2x1bW5zJzogY29sdW1ucywgJ3Jvd3Mn OiByb3dzfQogCisgICAgZGVmIGFzeW5jX2ZldGNobWFueV8yZGFycmF5KHNl bGYsIHJlY29yZHM9MjAwMCwgZm9ybWF0dGVkX2V4Y2VwdGlvbl9tc2c9RmFs c2UpOgorICAgICAgICAiIiIKKyAgICAgICAgVXNlciBzaG91bGQgcG9sbCBh bmQgY2hlY2sgaWYgc3RhdHVzIGlzIEFTWU5DX09LIGJlZm9yZSBjYWxsaW5n IHRoaXMKKyAgICAgICAgZnVuY3Rpb24KKyAgICAgICAgQXJnczoKKyAgICAg ICAgICByZWNvcmRzOiBubyBvZiByZWNvcmRzIHRvIGZldGNoLiB1c2UgLTEg dG8gZmV0Y2hhbGwuCisgICAgICAgICAgZm9ybWF0dGVkX2V4Y2VwdGlvbl9t c2c6CisKKyAgICAgICAgUmV0dXJuczoKKworICAgICAgICAiIiIKKyAgICAg ICAgY3VyID0gc2VsZi5fX2FzeW5jX2N1cnNvcgorICAgICAgICBpZiBub3Qg Y3VyOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlLCBnZXR0ZXh0KAorICAg ICAgICAgICAgICAgICJDdXJzb3IgY291bGQgbm90IGJlIGZvdW5kIGZvciB0 aGUgYXN5bmMgY29ubmVjdGlvbi4iCisgICAgICAgICAgICApCisKKyAgICAg ICAgaWYgc2VsZi5jb25uLmlzZXhlY3V0aW5nKCk6CisgICAgICAgICAgICBy ZXR1cm4gRmFsc2UsIGdldHRleHQoCisgICAgICAgICAgICAgICAgIkFzeW5j aHJvbm91cyBxdWVyeSBleGVjdXRpb24vb3BlcmF0aW9uIHVuZGVyd2F5LiIK KyAgICAgICAgICAgICkKKworICAgICAgICBpZiBzZWxmLnJvd19jb3VudCA+ IDA6CisgICAgICAgICAgICByZXN1bHQgPSBbXQorICAgICAgICAgICAgIyBG b3IgRERMIG9wZXJhdGlvbiwgd2UgbWF5IG5vdCBoYXZlIHJlc3VsdC4KKyAg ICAgICAgICAgICMKKyAgICAgICAgICAgICMgQmVjYXVzZSAtIHRoZXJlIGlz IG5vdCBkaXJlY3Qgd2F5IHRvIGRpZmZlcmVudGlhdGUgRE1MIGFuZAorICAg ICAgICAgICAgIyBEREwgb3BlcmF0aW9ucywgd2UgbmVlZCB0byByZWx5IG9u IGV4Y2VwdGlvbiB0byBmaWd1cmUKKyAgICAgICAgICAgICMgdGhhdCBvdXQg YXQgdGhlIG1vbWVudC4KKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAg ICAgICBpZiByZWNvcmRzID09IC0xOgorICAgICAgICAgICAgICAgICAgICBy ZXMgPSBjdXIuZmV0Y2hhbGwoKQorICAgICAgICAgICAgICAgIGVsc2U6Cisg ICAgICAgICAgICAgICAgICAgIHJlcyA9IGN1ci5mZXRjaG1hbnkocmVjb3Jk cykKKyAgICAgICAgICAgICAgICBmb3Igcm93IGluIHJlczoKKyAgICAgICAg ICAgICAgICAgICAgbmV3X3JvdyA9IFtdCisgICAgICAgICAgICAgICAgICAg IGZvciBjb2wgaW4gc2VsZi5jb2x1bW5faW5mbzoKKyAgICAgICAgICAgICAg ICAgICAgICAgIG5ld19yb3cuYXBwZW5kKHJvd1tjb2xbJ25hbWUnXV0pCisg ICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQobmV3X3JvdykKKyAg ICAgICAgICAgIGV4Y2VwdCBwc3ljb3BnMi5Qcm9ncmFtbWluZ0Vycm9yIGFz IGU6CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gTm9uZQorICAgICAgICBl bHNlOgorICAgICAgICAgICAgIyBVc2VyIHBlcmZvcm1lZCBvcGVyYXRpb24g d2hpY2ggZG9zZSBub3QgcHJvZHVjZSByZWNvcmQvcyBhcworICAgICAgICAg ICAgIyByZXN1bHQuCisgICAgICAgICAgICAjIGZvciBlZy4gRERMIG9wZXJh dGlvbnMuCisgICAgICAgICAgICByZXR1cm4gVHJ1ZSwgTm9uZQorCisgICAg ICAgIHJldHVybiBUcnVlLCByZXN1bHQKKwogICAgIGRlZiBjb25uZWN0ZWQo c2VsZik6CiAgICAgICAgIGlmIHNlbGYuY29ubjoKICAgICAgICAgICAgIGlm IG5vdCBzZWxmLmNvbm4uY2xvc2VkOgpAQCAtMTIyNCw3ICsxMjczLDcgQEAg RmFpbGVkIHRvIHJlc2V0IHRoZSBjb25uZWN0aW9uIHRvIHRoZSBzZXJ2ZXIg ZHVlIHRvIGZvbGxvd2luZyBlcnJvcjoKICAgICAgICAgICAgICAgICAicG9s bCgpIHJldHVybmVkICVzIGZyb20gX3dhaXRfdGltZW91dCBmdW5jdGlvbiIg JSBzdGF0ZQogICAgICAgICAgICAgKQogCi0gICAgZGVmIHBvbGwoc2VsZiwg Zm9ybWF0dGVkX2V4Y2VwdGlvbl9tc2c9RmFsc2UpOgorICAgIGRlZiBwb2xs KHNlbGYsIGZvcm1hdHRlZF9leGNlcHRpb25fbXNnPUZhbHNlLCBub19yZXN1 bHQ9RmFsc2UpOgogICAgICAgICAiIiIKICAgICAgICAgVGhpcyBmdW5jdGlv biBpcyBhIHdyYXBwZXIgYXJvdW5kIGNvbm5lY3Rpb24ncyBwb2xsIGZ1bmN0 aW9uLgogICAgICAgICBJdCBpbnRlcm5hbGx5IHVzZXMgdGhlIF93YWl0X3Rp bWVvdXQgbWV0aG9kIHRvIHBvbGwgdGhlCkBAIC0xMjM0LDYgKzEyODMsNyBA QCBGYWlsZWQgdG8gcmVzZXQgdGhlIGNvbm5lY3Rpb24gdG8gdGhlIHNlcnZl ciBkdWUgdG8gZm9sbG93aW5nIGVycm9yOgogICAgICAgICBBcmdzOgogICAg ICAgICAgICAgZm9ybWF0dGVkX2V4Y2VwdGlvbl9tc2c6IGlmIFRydWUgdGhl biBmdW5jdGlvbiByZXR1cm4gdGhlIGZvcm1hdHRlZAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbiBtZXNzYWdlLCBv dGhlcndpc2UgZXJyb3Igc3RyaW5nLgorICAgICAgICAgICAgbm9fcmVzdWx0 OiBJZiBUcnVlIHRoZW4gb25seSBwb2xsIHN0YXR1cyB3aWxsIGJlIHJldHVy bmVkLgogICAgICAgICAiIiIKIAogICAgICAgICBjdXIgPSBzZWxmLl9fYXN5 bmNfY3Vyc29yCkBAIC0xMjg5LDIzICsxMzM5LDIzIEBAIEZhaWxlZCB0byBy ZXNldCB0aGUgY29ubmVjdGlvbiB0byB0aGUgc2VydmVyIGR1ZSB0byBmb2xs b3dpbmcgZXJyb3I6CiAgICAgICAgICAgICAgICAgICAgIHBvcyArPSAxCiAK ICAgICAgICAgICAgIHNlbGYucm93X2NvdW50ID0gY3VyLnJvd2NvdW50Ci0K LSAgICAgICAgICAgIGlmIGN1ci5yb3djb3VudCA+IDA6Ci0gICAgICAgICAg ICAgICAgcmVzdWx0ID0gW10KLSAgICAgICAgICAgICAgICAjIEZvciBEREwg b3BlcmF0aW9uLCB3ZSBtYXkgbm90IGhhdmUgcmVzdWx0LgotICAgICAgICAg ICAgICAgICMKLSAgICAgICAgICAgICAgICAjIEJlY2F1c2UgLSB0aGVyZSBp cyBub3QgZGlyZWN0IHdheSB0byBkaWZmZXJlbnRpYXRlIERNTCBhbmQKLSAg ICAgICAgICAgICAgICAjIERETCBvcGVyYXRpb25zLCB3ZSBuZWVkIHRvIHJl bHkgb24gZXhjZXB0aW9uIHRvIGZpZ3VyZSB0aGF0Ci0gICAgICAgICAgICAg ICAgIyBvdXQgYXQgdGhlIG1vbWVudC4KLSAgICAgICAgICAgICAgICB0cnk6 Ci0gICAgICAgICAgICAgICAgICAgIGZvciByb3cgaW4gY3VyOgotICAgICAg ICAgICAgICAgICAgICAgICAgbmV3X3JvdyA9IFtdCi0gICAgICAgICAgICAg ICAgICAgICAgICBmb3IgY29sIGluIHNlbGYuY29sdW1uX2luZm86Ci0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgbmV3X3Jvdy5hcHBlbmQocm93W2Nv bFsnbmFtZSddXSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5h cHBlbmQobmV3X3JvdykKLQotICAgICAgICAgICAgICAgIGV4Y2VwdCBwc3lj b3BnMi5Qcm9ncmFtbWluZ0Vycm9yOgotICAgICAgICAgICAgICAgICAgICBy ZXN1bHQgPSBOb25lCisgICAgICAgICAgICBpZiBub3Qgbm9fcmVzdWx0Ogor ICAgICAgICAgICAgICAgIGlmIGN1ci5yb3djb3VudCA+IDA6CisgICAgICAg ICAgICAgICAgICAgIHJlc3VsdCA9IFtdCisgICAgICAgICAgICAgICAgICAg ICMgRm9yIERETCBvcGVyYXRpb24sIHdlIG1heSBub3QgaGF2ZSByZXN1bHQu CisgICAgICAgICAgICAgICAgICAgICMKKyAgICAgICAgICAgICAgICAgICAg IyBCZWNhdXNlIC0gdGhlcmUgaXMgbm90IGRpcmVjdCB3YXkgdG8gZGlmZmVy ZW50aWF0ZSBETUwgYW5kCisgICAgICAgICAgICAgICAgICAgICMgRERMIG9w ZXJhdGlvbnMsIHdlIG5lZWQgdG8gcmVseSBvbiBleGNlcHRpb24gdG8gZmln dXJlCisgICAgICAgICAgICAgICAgICAgICMgdGhhdCBvdXQgYXQgdGhlIG1v bWVudC4KKyAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAg ICAgICAgICAgICAgZm9yIHJvdyBpbiBjdXI6CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbmV3X3JvdyA9IFtdCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZm9yIGNvbCBpbiBzZWxmLmNvbHVtbl9pbmZvOgorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdfcm93LmFwcGVuZChyb3db Y29sWyduYW1lJ11dKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl c3VsdC5hcHBlbmQobmV3X3JvdykKKworICAgICAgICAgICAgICAgICAgICBl eGNlcHQgcHN5Y29wZzIuUHJvZ3JhbW1pbmdFcnJvcjoKKyAgICAgICAgICAg ICAgICAgICAgICAgIHJlc3VsdCA9IE5vbmUKIAogICAgICAgICByZXR1cm4g c3RhdHVzLCByZXN1bHQKIApkaWZmIC0tZ2l0IGEvd2ViL3JlZ3Jlc3Npb24v ZmVhdHVyZV91dGlscy9wZ2FkbWluX3BhZ2UucHkgYi93ZWIvcmVncmVzc2lv bi9mZWF0dXJlX3V0aWxzL3BnYWRtaW5fcGFnZS5weQppbmRleCBiYjExMWEx Li4xZjEyYTgwIDEwMDY0NAotLS0gYS93ZWIvcmVncmVzc2lvbi9mZWF0dXJl X3V0aWxzL3BnYWRtaW5fcGFnZS5weQorKysgYi93ZWIvcmVncmVzc2lvbi9m ZWF0dXJlX3V0aWxzL3BnYWRtaW5fcGFnZS5weQpAQCAtMjI0LDYgKzIyNCwy MCBAQCBjbGFzcyBQZ2FkbWluUGFnZToKIAogICAgICAgICBzZWxmLl93YWl0 X2Zvcigic3Bpbm5lciB0byBkaXNhcHBlYXIiLCBzcGlubmVyX2hhc19kaXNh cHBlYXJlZCkKIAorICAgIGRlZiB3YWl0X2Zvcl9xdWVyeV90b29sX2xvYWRp bmdfaW5kaWNhdG9yX3RvX2Rpc2FwcGVhcihzZWxmKToKKyAgICAgICAgZGVm IHNwaW5uZXJfaGFzX2Rpc2FwcGVhcmVkKGRyaXZlcik6CisgICAgICAgICAg ICB0cnk6CisgICAgICAgICAgICAgICAgZHJpdmVyLmZpbmRfZWxlbWVudF9i eV94cGF0aCgKKyAgICAgICAgICAgICAgICAgICAgIi8vKltAaWQ9J2ZldGNo aW5nX2RhdGEnIGFuZCBAY2xhc3M9J2hpZGUnXSIKKyAgICAgICAgICAgICAg ICApCisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgICAg ICBleGNlcHQgTm9TdWNoRWxlbWVudEV4Y2VwdGlvbjoKKyAgICAgICAgICAg ICAgICAjIHdhaXQgZm9yIGxvYWRpbmcgaW5kaWNhdG9yIGRpc2FwcGVhciBh bmltYXRpb24gdG8gY29tcGxldGUuCisgICAgICAgICAgICAgICAgdGltZS5z bGVlcCgwLjUpCisgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKworICAg ICAgICBzZWxmLl93YWl0X2Zvcigic3Bpbm5lciB0byBkaXNhcHBlYXIiLCBz cGlubmVyX2hhc19kaXNhcHBlYXJlZCkKKwogICAgIGRlZiB3YWl0X2Zvcl9h cHAoc2VsZik6CiAgICAgICAgIGRlZiBwYWdlX3Nob3dzX2FwcChkcml2ZXIp OgogICAgICAgICAgICAgaWYgZHJpdmVyLnRpdGxlID09IHNlbGYuYXBwX2Nv bmZpZy5BUFBfTkFNRToKZGlmZiAtLWdpdCBhL3dlYi9yZWdyZXNzaW9uL2ph dmFzY3JpcHQvc2VsZWN0aW9uL2NvcHlfZGF0YV9zcGVjLmpzIGIvd2ViL3Jl Z3Jlc3Npb24vamF2YXNjcmlwdC9zZWxlY3Rpb24vY29weV9kYXRhX3NwZWMu anMKaW5kZXggOWUwNWU4NC4uMmI2MjNiMyAxMDA2NDQKLS0tIGEvd2ViL3Jl Z3Jlc3Npb24vamF2YXNjcmlwdC9zZWxlY3Rpb24vY29weV9kYXRhX3NwZWMu anMKKysrIGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9zZWxlY3Rpb24v Y29weV9kYXRhX3NwZWMuanMKQEAgLTE2LDE2ICsxNiwxNiBAQCBpbXBvcnQg Y2xpcGJvYXJkIGZyb20gJy4uLy4uLy4uL3BnYWRtaW4vc3RhdGljL2pzL3Nl bGVjdGlvbi9jbGlwYm9hcmQnOwogaW1wb3J0IGNvcHlEYXRhIGZyb20gJy4u Ly4uLy4uL3BnYWRtaW4vc3RhdGljL2pzL3NlbGVjdGlvbi9jb3B5X2RhdGEn OwogaW1wb3J0IFJhbmdlU2VsZWN0aW9uSGVscGVyIGZyb20gJ3NvdXJjZXMv c2VsZWN0aW9uL3JhbmdlX3NlbGVjdGlvbl9oZWxwZXInOwogaW1wb3J0IFhD ZWxsU2VsZWN0aW9uTW9kZWwgZnJvbSAnc291cmNlcy9zZWxlY3Rpb24veGNl bGxfc2VsZWN0aW9uX21vZGVsJzsKLQogZGVzY3JpYmUoJ2NvcHlEYXRhJywg ZnVuY3Rpb24gKCkgewogICB2YXIgZ3JpZCwgc3FsRWRpdG9yLCBncmlkQ29u dGFpbmVyLCBidXR0b25QYXN0ZVJvdzsKICAgdmFyIFNsaWNrR3JpZDsKIAog ICBiZWZvcmVFYWNoKGZ1bmN0aW9uICgpIHsKICAgICBTbGlja0dyaWQgPSBT bGljay5HcmlkOwotICAgIHZhciBkYXRhID0gW1sxLCAnbGVvcG9yZCcsICcx MiddLAotICAgICAgWzIsICdsaW9uJywgJzEzJ10sCi0gICAgICBbMywgJ3B1 bWEnLCAnOSddXTsKKyAgICB2YXIgZGF0YSA9IFt7J2lkJzogMSwgJ2JyYW5k JzonbGVvcG9yZCcsICdzaXplJzonMTInLCAnX190ZW1wX1BLJzogJzEyMyd9 LAorICAgICAgICAgICAgICAgIHsnaWQnOiAyLCAnYnJhbmQnOidsaW9uJywg J3NpemUnOicxMycsICdfX3RlbXBfUEsnOiAnNDU2J30sCisgICAgICAgICAg ICAgICAgeydpZCc6IDMsICdicmFuZCc6J3B1bWEnLCAnc2l6ZSc6JzknLCAn X190ZW1wX1BLJzogJzc4OSd9XSwKKyAgICAgIGRhdGFWaWV3ID0gbmV3IFNs aWNrLkRhdGEuRGF0YVZpZXcoKTsKIAogICAgIHZhciBjb2x1bW5zID0gWwog ICAgICAgewpAQCAtMzcsNiArMzcsNyBAQCBkZXNjcmliZSgnY29weURhdGEn LCBmdW5jdGlvbiAoKSB7CiAgICAgICB9LAogICAgICAgewogICAgICAgICBu YW1lOiAnaWQnLAorICAgICAgICBmaWVsZDogJ2lkJywKICAgICAgICAgcG9z OiAwLAogICAgICAgICBsYWJlbDogJ2lkPGJyPiBudW1lcmljJywKICAgICAg ICAgY2VsbDogJ251bWJlcicsCkBAIC00NCw2ICs0NSw3IEBAIGRlc2NyaWJl KCdjb3B5RGF0YScsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgdHlwZTogJ251 bWVyaWMnLAogICAgICAgfSwgewogICAgICAgICBuYW1lOiAnYnJhbmQnLAor ICAgICAgICBmaWVsZDogJ2JyYW5kJywKICAgICAgICAgcG9zOiAxLAogICAg ICAgICBsYWJlbDogJ2ZsYXZvcjxicj4gY2hhcmFjdGVyIHZhcnlpbmcnLAog ICAgICAgICBjZWxsOiAnc3RyaW5nJywKQEAgLTUxLDI0ICs1MywyNiBAQCBk ZXNjcmliZSgnY29weURhdGEnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgIHR5 cGU6ICdjaGFyYWN0ZXIgdmFyeWluZycsCiAgICAgICB9LCB7CiAgICAgICAg IG5hbWU6ICdzaXplJywKKyAgICAgICAgZmllbGQ6ICdzaXplJywKICAgICAg ICAgcG9zOiAyLAogICAgICAgICBsYWJlbDogJ3NpemU8YnI+IG51bWVyaWMn LAogICAgICAgICBjZWxsOiAnbnVtYmVyJywKICAgICAgICAgY2FuX2VkaXQ6 IGZhbHNlLAogICAgICAgICB0eXBlOiAnbnVtZXJpYycsCiAgICAgICB9LAot ICAgIF0KLSAgICA7Ci0gICAgZ3JpZENvbnRhaW5lciA9ICQoJzxkaXYgaWQ9 XCdncmlkXCc+PC9kaXY+Jyk7CisgICAgXTsKKyAgICBncmlkQ29udGFpbmVy ID0gJCgnPGRpdiBpZD0iZ3JpZCI+PC9kaXY+Jyk7CiAgICAgJCgnYm9keScp LmFwcGVuZChncmlkQ29udGFpbmVyKTsKLSAgICBidXR0b25QYXN0ZVJvdyA9 ICQoJzxidXR0b24gaWQ9XCdidG4tcGFzdGUtcm93XCcgZGlzYWJsZWQ+PC9i dXR0b24+Jyk7CisgICAgYnV0dG9uUGFzdGVSb3cgPSAkKCc8YnV0dG9uIGlk PSJidG4tcGFzdGUtcm93IiBkaXNhYmxlZD48L2J1dHRvbj4nKTsKICAgICAk KCdib2R5JykuYXBwZW5kKGJ1dHRvblBhc3RlUm93KTsKLSAgICBncmlkID0g bmV3IFNsaWNrR3JpZCgnI2dyaWQnLCBkYXRhLCBjb2x1bW5zLCB7fSk7Cisg ICAgZ3JpZCA9IG5ldyBTbGlja0dyaWQoJyNncmlkJywgZGF0YVZpZXcsIGNv bHVtbnMsIHt9KTsKKyAgICBkYXRhVmlldy5zZXRJdGVtcyhkYXRhLCAnX190 ZW1wX1BLJyk7CiAgICAgZ3JpZC5zZXRTZWxlY3Rpb25Nb2RlbChuZXcgWENl bGxTZWxlY3Rpb25Nb2RlbCgpKTsKICAgICBzcWxFZGl0b3IgPSB7c2xpY2tn cmlkOiBncmlkfTsKICAgfSk7CiAKLSAgYWZ0ZXJFYWNoKGZ1bmN0aW9uICgp IHsKKyAgYWZ0ZXJFYWNoKGZ1bmN0aW9uKCkgeworICAgIGdyaWQuZGVzdHJv eSgpOwogICAgIGdyaWRDb250YWluZXIucmVtb3ZlKCk7CiAgICAgYnV0dG9u UGFzdGVSb3cucmVtb3ZlKCk7CiAgIH0pOwpkaWZmIC0tZ2l0IGEvd2ViL3Jl Z3Jlc3Npb24vamF2YXNjcmlwdC9zZWxlY3Rpb24vcmFuZ2VfYm91bmRhcnlf bmF2aWdhdG9yX3NwZWMuanMgYi93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0 L3NlbGVjdGlvbi9yYW5nZV9ib3VuZGFyeV9uYXZpZ2F0b3Jfc3BlYy5qcwpp bmRleCAxZGU2ZDgxLi4yZDU2YjA1IDEwMDY0NAotLS0gYS93ZWIvcmVncmVz c2lvbi9qYXZhc2NyaXB0L3NlbGVjdGlvbi9yYW5nZV9ib3VuZGFyeV9uYXZp Z2F0b3Jfc3BlYy5qcworKysgYi93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0 L3NlbGVjdGlvbi9yYW5nZV9ib3VuZGFyeV9uYXZpZ2F0b3Jfc3BlYy5qcwpA QCAtMTM0LDE3ICsxMzQsMTkgQEAgZGVzY3JpYmUoJ1JhbmdlQm91bmRhcnlO YXZpZ2F0b3InLCBmdW5jdGlvbiAoKSB7CiAgIGRlc2NyaWJlKCcjcmFuZ2Vz VG9Dc3YnLCBmdW5jdGlvbiAoKSB7CiAgICAgdmFyIGRhdGEsIGNvbHVtbkRl ZmluaXRpb25zLCByYW5nZXM7CiAgICAgYmVmb3JlRWFjaChmdW5jdGlvbiAo KSB7Ci0gICAgICBkYXRhID0gW1sxLCAnbGVvcGFyZCcsICcxMiddLAotICAg ICAgICBbMiwgJ2xpb24nLCAnMTMnXSwKLSAgICAgICAgWzMsICdjb3VnYXIn LCAnOSddLAotICAgICAgICBbNCwgJ3RpZ2VyJywgJzEwJ11dOwotICAgICAg Y29sdW1uRGVmaW5pdGlvbnMgPSBbe25hbWU6ICdpZCcsIHBvczogMH0sIHtu YW1lOiAnYW5pbWFsJywgcG9zOiAxfSwge25hbWU6ICdzaXplJywgcG9zOiAy fV07CisgICAgICBkYXRhID0gW3snaWQnOjEsICdhbmltYWwnOidsZW9wYXJk JywgJ3NpemUnOicxMid9LAorICAgICAgICAgICAgICB7J2lkJzoyLCAnYW5p bWFsJzonbGlvbicsICdzaXplJzonMTMnfSwKKyAgICAgICAgICAgICAgeydp ZCc6MywgJ2FuaW1hbCc6J2NvdWdhcicsICdzaXplJzonOSd9LAorICAgICAg ICAgICAgICB7J2lkJzo0LCAnYW5pbWFsJzondGlnZXInLCAnc2l6ZSc6JzEw J31dOworCisgICAgICBjb2x1bW5EZWZpbml0aW9ucyA9IFt7bmFtZTogJ2lk JywgZmllbGQ6ICdpZCcsIHBvczogMH0sCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAge25hbWU6ICdhbmltYWwnLCBmaWVsZDogJ2FuaW1hbCcsIHBv czogMX0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAge25hbWU6ICdz aXplJywgZmllbGQ6ICdzaXplJywgcG9zOiAyfV07CiAgICAgICByYW5nZXMg PSBbbmV3IFNsaWNrLlJhbmdlKDAsIDAsIDAsIDIpLCBuZXcgU2xpY2suUmFu Z2UoMywgMCwgMywgMildOwogICAgIH0pOwogCiAgICAgaXQoJ3JldHVybnMg Y3N2IGZvciB0aGUgcHJvdmlkZWQgcmFuZ2VzJywgZnVuY3Rpb24gKCkgewog ICAgICAgdmFyIGNzdlJlc3VsdCA9IHJhbmdlQm91bmRhcnlOYXZpZ2F0b3Iu cmFuZ2VzVG9Dc3YoZGF0YSwgY29sdW1uRGVmaW5pdGlvbnMsIHJhbmdlcyk7 Ci0KICAgICAgIGV4cGVjdChjc3ZSZXN1bHQpLnRvRXF1YWwoJzEsXCdsZW9w YXJkXCcsXCcxMlwnXG40LFwndGlnZXJcJyxcJzEwXCcnKTsKICAgICB9KTsK IApAQCAtMTU4LDEwICsxNjAsMTAgQEAgZGVzY3JpYmUoJ1JhbmdlQm91bmRh cnlOYXZpZ2F0b3InLCBmdW5jdGlvbiAoKSB7CiAKICAgICBkZXNjcmliZSgn d2hlbiB0aGVyZSBpcyBhbiBleHRyYSBjb2x1bW4gd2l0aCBjaGVja2JveGVz JywgZnVuY3Rpb24gKCkgewogICAgICAgYmVmb3JlRWFjaChmdW5jdGlvbiAo KSB7Ci0gICAgICAgIGNvbHVtbkRlZmluaXRpb25zID0gW3tuYW1lOiAnbm90 LWEtZGF0YS1jb2x1bW4nfSwge25hbWU6ICdpZCcsIHBvczogMH0sIHtuYW1l OiAnYW5pbWFsJywgcG9zOiAxfSwgewotICAgICAgICAgIG5hbWU6ICdzaXpl JywKLSAgICAgICAgICBwb3M6IDIsCi0gICAgICAgIH1dOworICAgICAgICBj b2x1bW5EZWZpbml0aW9ucyA9IFt7bmFtZTogJ25vdC1hLWRhdGEtY29sdW1u J30sCisgICAgICAgICAge25hbWU6ICdpZCcsIGZpZWxkOiAnaWQnLCBwb3M6 IDB9LAorICAgICAgICAgIHtuYW1lOiAnYW5pbWFsJywgZmllbGQ6ICdhbmlt YWwnLCBwb3M6IDF9LAorICAgICAgICAgIHtuYW1lOiAnc2l6ZScsIGZpZWxk OiAnc2l6ZScscG9zOiAyfV07CiAgICAgICAgIHJhbmdlcyA9IFtuZXcgU2xp Y2suUmFuZ2UoMCwgMCwgMCwgMyksIG5ldyBTbGljay5SYW5nZSgzLCAwLCAz LCAzKV07CiAgICAgICB9KTsKIApkaWZmIC0tZ2l0IGEvd2ViL3JlZ3Jlc3Np b24vamF2YXNjcmlwdC9zZWxlY3Rpb24vcm93X3NlbGVjdG9yX3NwZWMuanMg Yi93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L3NlbGVjdGlvbi9yb3dfc2Vs ZWN0b3Jfc3BlYy5qcwppbmRleCBkYjNjMGI0Li5kNDE1MmY4IDEwMDY0NAot LS0gYS93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L3NlbGVjdGlvbi9yb3df c2VsZWN0b3Jfc3BlYy5qcworKysgYi93ZWIvcmVncmVzc2lvbi9qYXZhc2Ny aXB0L3NlbGVjdGlvbi9yb3dfc2VsZWN0b3Jfc3BlYy5qcwpAQCAtNiwxMSAr NiwxMSBAQAogLy8gVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0 aGUgUG9zdGdyZVNRTCBMaWNlbmNlCiAvLwogLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8KLQogaW1wb3J0ICQgZnJvbSAnanF1ZXJ5JzsKIAogaW1w b3J0IFNsaWNrIGZyb20gJ3NsaWNrZ3JpZCc7CiBpbXBvcnQgJ3NsaWNrZ3Jp ZC5ncmlkJzsKK2ltcG9ydCAnc2xpY2suZGF0YXZpZXcnOwogCiBpbXBvcnQg Um93U2VsZWN0b3IgZnJvbSAnc291cmNlcy9zZWxlY3Rpb24vcm93X3NlbGVj dG9yJzsKIGltcG9ydCBBY3RpdmVDZWxsQ2FwdHVyZSBmcm9tICdzb3VyY2Vz L3NlbGVjdGlvbi9hY3RpdmVfY2VsbF9jYXB0dXJlJzsKQEAgLTIzLDcgKzIz LDcgQEAgZGVzY3JpYmUoJ1Jvd1NlbGVjdG9yJywgZnVuY3Rpb24gKCkgewog ICAgIFVQOiAzOCwKICAgICBET1dOOiA0MCwKICAgfTsKLSAgdmFyIGNvbnRh aW5lciwgZGF0YSwgY29sdW1uRGVmaW5pdGlvbnMsIGdyaWQsIGNlbGxTZWxl Y3Rpb25Nb2RlbDsKKyAgdmFyIGNvbnRhaW5lciwgZGF0YVZpZXcsIGNvbHVt bkRlZmluaXRpb25zLCBncmlkLCBjZWxsU2VsZWN0aW9uTW9kZWw7CiAgIHZh ciBTbGlja0dyaWQgPSBTbGljay5HcmlkOwogCiAgIGJlZm9yZUVhY2goZnVu Y3Rpb24gKCkgewpAQCAtNDMsMTQgKzQzLDE1IEBAIGRlc2NyaWJlKCdSb3dT ZWxlY3RvcicsIGZ1bmN0aW9uICgpIHsKICAgICAgIHBvczogMSwKICAgICB9 XTsKIAorICAgIGRhdGFWaWV3ID0gbmV3IFNsaWNrLkRhdGEuRGF0YVZpZXco KTsKICAgICB2YXIgcm93U2VsZWN0b3IgPSBuZXcgUm93U2VsZWN0b3IoKTsK LSAgICBkYXRhID0gW107CisgICAgdmFyIGRhdGEgPSBbXTsKICAgICBmb3Ig KHZhciBpID0gMDsgaSA8IDEwOyBpKyspIHsKLSAgICAgIGRhdGEucHVzaChb J3NvbWUtdmFsdWUtJyArIGksICdzZWNvbmQgdmFsdWUgJyArIGldKTsKKyAg ICAgIGRhdGEucHVzaCh7J3NvbWUtY29sdW1uLW5hbWUnOidzb21lLXZhbHVl LScgKyBpLCAnc2Vjb25kIGNvbHVtbic6J3NlY29uZCB2YWx1ZSAnICsgaX0p OwogICAgIH0KICAgICBjb2x1bW5EZWZpbml0aW9ucyA9IHJvd1NlbGVjdG9y LmdldENvbHVtbkRlZmluaXRpb25zKGNvbHVtbkRlZmluaXRpb25zKTsKLSAg ICBncmlkID0gbmV3IFNsaWNrR3JpZChjb250YWluZXIsIGRhdGEsIGNvbHVt bkRlZmluaXRpb25zKTsKLQorICAgIGRhdGFWaWV3LnNldEl0ZW1zKGRhdGEs ICdzb21lLWNvbHVtbi1uYW1lJyk7CisgICAgZ3JpZCA9IG5ldyBTbGlja0dy aWQoY29udGFpbmVyLCBkYXRhVmlldywgY29sdW1uRGVmaW5pdGlvbnMpOwog ICAgIGdyaWQucmVnaXN0ZXJQbHVnaW4obmV3IEFjdGl2ZUNlbGxDYXB0dXJl KCkpOwogICAgIGNlbGxTZWxlY3Rpb25Nb2RlbCA9IG5ldyBYQ2VsbFNlbGVj dGlvbk1vZGVsKCk7CiAgICAgZ3JpZC5zZXRTZWxlY3Rpb25Nb2RlbChjZWxs U2VsZWN0aW9uTW9kZWwpOwpkaWZmIC0tZ2l0IGEvd2ViL3JlZ3Jlc3Npb24v amF2YXNjcmlwdC9zZWxlY3Rpb24vc2V0X3N0YWdlZF9yb3dzX3NwZWMuanMg Yi93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L3NlbGVjdGlvbi9zZXRfc3Rh Z2VkX3Jvd3Nfc3BlYy5qcwppbmRleCA2NzM1MzE0Li5jZjIwMWM0IDEwMDY0 NAotLS0gYS93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L3NlbGVjdGlvbi9z ZXRfc3RhZ2VkX3Jvd3Nfc3BlYy5qcworKysgYi93ZWIvcmVncmVzc2lvbi9q YXZhc2NyaXB0L3NlbGVjdGlvbi9zZXRfc3RhZ2VkX3Jvd3Nfc3BlYy5qcwpA QCAtNywyMzYgKzcsMjQ4IEBACiAvLwogLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KIAot ZGVmaW5lKFsKLSAgJ2pxdWVyeScsCi0gICd1bmRlcnNjb3JlJywKLSAgJ3Nv dXJjZXMvc2VsZWN0aW9uL3NldF9zdGFnZWRfcm93cycsCi1dLCBmdW5jdGlv biAoJCwgXywgU2V0U3RhZ2VkUm93cykgewotICBkZXNjcmliZSgnc2V0X3N0 YWdlZF9yb3dzJywgZnVuY3Rpb24gKCkgewotICAgIHZhciBzcWxFZGl0b3JP YmosIGdyaWRTcHksIGRlbGV0ZUJ1dHRvbiwgY29weUJ1dHRvbiwgc2VsZWN0 aW9uU3B5OwotICAgIGJlZm9yZUVhY2goZnVuY3Rpb24gKCkgewotICAgICAg Z3JpZFNweSA9IGphc21pbmUuY3JlYXRlU3B5T2JqKCdncmlkU3B5JywgWydn ZXREYXRhJywgJ2dldENlbGxOb2RlJywgJ2dldENvbHVtbnMnXSk7Ci0gICAg ICBncmlkU3B5LmdldERhdGEuYW5kLnJldHVyblZhbHVlKFsKLSAgICAgICAg ezA6ICdvbmUnLCAxOiAndHdvJywgX190ZW1wX1BLOiAnMTIzJ30sCi0gICAg ICAgIHswOiAndGhyZWUnLCAxOiAnZm91cicsIF9fdGVtcF9QSzogJzQ1Nid9 LAotICAgICAgICB7MDogJ2ZpdmUnLCAxOiAnc2l4JywgX190ZW1wX1BLOiAn Nzg5J30sCi0gICAgICAgIHswOiAnc2V2ZW4nLCAxOiAnZWlnaHQnLCBfX3Rl bXBfUEs6ICc0MzInfSwKLSAgICAgIF0pOwotICAgICAgZ3JpZFNweS5nZXRD b2x1bW5zLmFuZC5yZXR1cm5WYWx1ZShbCitpbXBvcnQgJCBmcm9tICdqcXVl cnknOworaW1wb3J0ICdzbGlja2dyaWQuZ3JpZCc7CitpbXBvcnQgU2xpY2sg ZnJvbSAnc2xpY2tncmlkJzsKK2ltcG9ydCAnc2xpY2suZGF0YXZpZXcnOwor aW1wb3J0IFNldFN0YWdlZFJvd3MgZnJvbSAnc291cmNlcy9zZWxlY3Rpb24v c2V0X3N0YWdlZF9yb3dzJzsKKworZGVzY3JpYmUoJ3NldF9zdGFnZWRfcm93 cycsIGZ1bmN0aW9uICgpIHsKKyAgdmFyIHNxbEVkaXRvck9iaiwgZ3JpZFNw eSwgZGVsZXRlQnV0dG9uLCBjb3B5QnV0dG9uLCBzZWxlY3Rpb25TcHk7Cisg IGJlZm9yZUVhY2goZnVuY3Rpb24gKCkgeworICAgIHZhciBkYXRhID0gW3sn YSBwayBjb2x1bW4nOiAnb25lJywgJ3NvbWUgY29sdW1uJzogJ3R3bycsICdf X3RlbXBfUEsnOiAnMTIzJ30sCisgICAgICAgIHsnYSBwayBjb2x1bW4nOiAn dGhyZWUnLCAnc29tZSBjb2x1bW4nOiAnZm91cicsICdfX3RlbXBfUEsnOiAn NDU2J30sCisgICAgICAgIHsnYSBwayBjb2x1bW4nOiAnZml2ZScsICdzb21l IGNvbHVtbic6ICdzaXgnLCAnX190ZW1wX1BLJzogJzc4OSd9LAorICAgICAg ICB7J2EgcGsgY29sdW1uJzogJ3NldmVuJywgJ3NvbWUgY29sdW1uJzogJ2Vp Z2h0JywgJ19fdGVtcF9QSyc6ICc0MzInfV0sCisgICAgICBkYXRhVmlldyA9 IG5ldyBTbGljay5EYXRhLkRhdGFWaWV3KCk7CisKKyAgICBkYXRhVmlldy5z ZXRJdGVtcyhkYXRhLCAnX190ZW1wX1BLJyk7CisKKyAgICBncmlkU3B5ID0g amFzbWluZS5jcmVhdGVTcHlPYmooJ2dyaWRTcHknLCBbJ2dldERhdGEnLCAn Z2V0Q2VsbE5vZGUnLCAnZ2V0Q29sdW1ucyddKTsKKyAgICBncmlkU3B5Lmdl dERhdGEuYW5kLnJldHVyblZhbHVlKGRhdGFWaWV3KTsKKyAgICBncmlkU3B5 LmdldENvbHVtbnMuYW5kLnJldHVyblZhbHVlKFsKKyAgICAgIHsKKyAgICAg ICAgbmFtZTogJ2EgcGsgY29sdW1uJywKKyAgICAgICAgZmllbGQ6ICdhIHBr IGNvbHVtbicsCisgICAgICAgIHBvczogMCwKKyAgICAgICAgc2VsZWN0YWJs ZTogdHJ1ZSwKKyAgICAgIH0sIHsKKyAgICAgICAgbmFtZTogJ3NvbWUgY29s dW1uJywKKyAgICAgICAgZmllbGQ6ICdzb21lIGNvbHVtbicsCisgICAgICAg IHBvczogMSwKKyAgICAgICAgc2VsZWN0YWJsZTogdHJ1ZSwKKyAgICAgIH0s CisgICAgXSk7CisgICAgc2VsZWN0aW9uU3B5ID0gamFzbWluZS5jcmVhdGVT cHlPYmooJ3NlbGVjdGlvblNweScsIFsnc2V0U2VsZWN0ZWRSb3dzJywgJ2dl dFNlbGVjdGVkUmFuZ2VzJ10pOworICAgIGRlbGV0ZUJ1dHRvbiA9ICQoJzxi dXR0b24gaWQ9ImJ0bi1kZWxldGUtcm93Ij48L2J1dHRvbj4nKTsKKyAgICBj b3B5QnV0dG9uID0gJCgnPGJ1dHRvbiBpZD0iYnRuLWNvcHktcm93Ij48L2J1 dHRvbj4nKTsKKworICAgIHNxbEVkaXRvck9iaiA9IHsKKyAgICAgIGdyaWQ6 IGdyaWRTcHksCisgICAgICBlZGl0b3I6IHsKKyAgICAgICAgaGFuZGxlcjog eworICAgICAgICAgIGRhdGFfc3RvcmU6IHsKKyAgICAgICAgICAgIHN0YWdl ZF9yb3dzOiB7JzQ1Nic6IHt9fSwKKyAgICAgICAgICB9LAorICAgICAgICAg IGNhbl9lZGl0OiBmYWxzZSwKKyAgICAgICAgfSwKKyAgICAgIH0sCisgICAg ICBrZXlzOiBudWxsLAorICAgICAgc2VsZWN0aW9uOiBzZWxlY3Rpb25TcHks CisgICAgICBjb2x1bW5zOiBbCiAgICAgICAgIHsKKyAgICAgICAgICBuYW1l OiAnYSBwayBjb2x1bW4nLAorICAgICAgICAgIGZpZWxkOiAnYSBwayBjb2x1 bW4nLAogICAgICAgICAgIHBvczogMCwKLSAgICAgICAgICBzZWxlY3RhYmxl OiB0cnVlLAotICAgICAgICB9LCB7CisgICAgICAgIH0sCisgICAgICAgIHsK KyAgICAgICAgICBuYW1lOiAnc29tZSBjb2x1bW4nLAorICAgICAgICAgIGZp ZWxkOiAnc29tZSBjb2x1bW4nLAogICAgICAgICAgIHBvczogMSwKLSAgICAg ICAgICBzZWxlY3RhYmxlOiB0cnVlLAogICAgICAgICB9LAotICAgICAgXSk7 CisgICAgICBdLAorICAgICAgY2xpZW50X3ByaW1hcnlfa2V5OiAnX190ZW1w X1BLJywKKyAgICB9OwogCi0gICAgICBzZWxlY3Rpb25TcHkgPSBqYXNtaW5l LmNyZWF0ZVNweU9iaignc2VsZWN0aW9uU3B5JywgWydzZXRTZWxlY3RlZFJv d3MnLCAnZ2V0U2VsZWN0ZWRSYW5nZXMnXSk7CisgICAgJCgnYm9keScpLmFw cGVuZChkZWxldGVCdXR0b24pOworICAgICQoJ2JvZHknKS5hcHBlbmQoY29w eUJ1dHRvbik7CiAKLSAgICAgIGRlbGV0ZUJ1dHRvbiA9ICQoJzxidXR0b24g aWQ9ImJ0bi1kZWxldGUtcm93Ij48L2J1dHRvbj4nKTsKLSAgICAgIGNvcHlC dXR0b24gPSAkKCc8YnV0dG9uIGlkPSJidG4tY29weS1yb3ciPjwvYnV0dG9u PicpOworICAgIGRlbGV0ZUJ1dHRvbi5wcm9wKCdkaXNhYmxlZCcsIHRydWUp OworICAgIGNvcHlCdXR0b24ucHJvcCgnZGlzYWJsZWQnLCB0cnVlKTsKIAot ICAgICAgc3FsRWRpdG9yT2JqID0gewotICAgICAgICBncmlkOiBncmlkU3B5 LAotICAgICAgICBlZGl0b3I6IHsKLSAgICAgICAgICBoYW5kbGVyOiB7Ci0g ICAgICAgICAgICBkYXRhX3N0b3JlOiB7Ci0gICAgICAgICAgICAgIHN0YWdl ZF9yb3dzOiB7JzQ1Nic6IHt9fSwKLSAgICAgICAgICAgIH0sCi0gICAgICAg ICAgICBjYW5fZWRpdDogZmFsc2UsCi0gICAgICAgICAgfSwKLSAgICAgICAg fSwKLSAgICAgICAga2V5czogbnVsbCwKLSAgICAgICAgc2VsZWN0aW9uOiBz ZWxlY3Rpb25TcHksCi0gICAgICAgIGNvbHVtbnM6IFsKLSAgICAgICAgICB7 Ci0gICAgICAgICAgICBuYW1lOiAnYSBwayBjb2x1bW4nLAotICAgICAgICAg ICAgcG9zOiAwLAotICAgICAgICAgIH0sCi0gICAgICAgICAgewotICAgICAg ICAgICAgbmFtZTogJ3NvbWUgY29sdW1uJywKLSAgICAgICAgICAgIHBvczog MSwKLSAgICAgICAgICB9LAotICAgICAgICBdLAotICAgICAgfTsKKyAgICBz ZWxlY3Rpb25TcHkgPSBqYXNtaW5lLmNyZWF0ZVNweU9iaignc2VsZWN0aW9u U3B5JywgWworICAgICAgJ3NldFNlbGVjdGVkUm93cycsCisgICAgICAnZ2V0 U2VsZWN0ZWRSYW5nZXMnLAorICAgIF0pOworICB9KTsKIAotICAgICAgJCgn Ym9keScpLmFwcGVuZChkZWxldGVCdXR0b24pOwotICAgICAgJCgnYm9keScp LmFwcGVuZChjb3B5QnV0dG9uKTsKKyAgYWZ0ZXJFYWNoKGZ1bmN0aW9uICgp IHsKKyAgICBjb3B5QnV0dG9uLnJlbW92ZSgpOworICAgIGRlbGV0ZUJ1dHRv bi5yZW1vdmUoKTsKKyAgfSk7CisgIGRlc2NyaWJlKCd3aGVuIG5vIGZ1bGwg cm93cyBhcmUgc2VsZWN0ZWQnLCBmdW5jdGlvbiAoKSB7CisgICAgZGVzY3Jp YmUoJ3doZW4gbm90aGluZyBpcyBzZWxlY3RlZCcsIGZ1bmN0aW9uICgpIHsK KyAgICAgIGJlZm9yZUVhY2goZnVuY3Rpb24gKCkgeworICAgICAgICBzZWxl Y3Rpb25TcHkuZ2V0U2VsZWN0ZWRSYW5nZXMuYW5kLnJldHVyblZhbHVlKFtd KTsKKyAgICAgICAgc3FsRWRpdG9yT2JqLnNlbGVjdGlvbiA9IHNlbGVjdGlv blNweTsKKyAgICAgICAgU2V0U3RhZ2VkUm93cy5jYWxsKHNxbEVkaXRvck9i aiwge30sIHt9KTsKKyAgICAgIH0pOwogCi0gICAgICBkZWxldGVCdXR0b24u cHJvcCgnZGlzYWJsZWQnLCB0cnVlKTsKLSAgICAgIGNvcHlCdXR0b24ucHJv cCgnZGlzYWJsZWQnLCB0cnVlKTsKKyAgICAgIGl0KCdzaG91bGQgZGlzYWJs ZSB0aGUgZGVsZXRlIHJvdyBidXR0b24nLCBmdW5jdGlvbiAoKSB7CisgICAg ICAgIGV4cGVjdCgkKCcjYnRuLWRlbGV0ZS1yb3cnKS5wcm9wKCdkaXNhYmxl ZCcpKS50b0JlVHJ1dGh5KCk7CisgICAgICB9KTsKIAotICAgICAgc2VsZWN0 aW9uU3B5ID0gamFzbWluZS5jcmVhdGVTcHlPYmooJ3NlbGVjdGlvblNweScs IFsKLSAgICAgICAgJ3NldFNlbGVjdGVkUm93cycsCi0gICAgICAgICdnZXRT ZWxlY3RlZFJhbmdlcycsCi0gICAgICBdKTsKLSAgICB9KTsKKyAgICAgIGl0 KCdzaG91bGQgZGlzYWJsZSB0aGUgY29weSByb3cgYnV0dG9uJywgZnVuY3Rp b24gKCkgeworICAgICAgICBleHBlY3QoJCgnI2J0bi1jb3B5LXJvdycpLnBy b3AoJ2Rpc2FibGVkJykpLnRvQmVUcnV0aHkoKTsKKyAgICAgIH0pOwogCi0g ICAgYWZ0ZXJFYWNoKGZ1bmN0aW9uICgpIHsKLSAgICAgIGNvcHlCdXR0b24u cmVtb3ZlKCk7Ci0gICAgICBkZWxldGVCdXR0b24ucmVtb3ZlKCk7CisgICAg ICBpdCgnc2hvdWxkIGNsZWFyIHN0YWdlZCByb3dzJywgZnVuY3Rpb24gKCkg eworICAgICAgICBleHBlY3Qoc3FsRWRpdG9yT2JqLmVkaXRvci5oYW5kbGVy LmRhdGFfc3RvcmUuc3RhZ2VkX3Jvd3MpLnRvRXF1YWwoe30pOworICAgICAg fSk7CiAgICAgfSk7Ci0gICAgZGVzY3JpYmUoJ3doZW4gbm8gZnVsbCByb3dz IGFyZSBzZWxlY3RlZCcsIGZ1bmN0aW9uICgpIHsKLSAgICAgIGRlc2NyaWJl KCd3aGVuIG5vdGhpbmcgaXMgc2VsZWN0ZWQnLCBmdW5jdGlvbiAoKSB7Ci0g ICAgICAgIGJlZm9yZUVhY2goZnVuY3Rpb24gKCkgewotICAgICAgICAgIHNl bGVjdGlvblNweS5nZXRTZWxlY3RlZFJhbmdlcy5hbmQucmV0dXJuVmFsdWUo W10pOwotICAgICAgICAgIHNxbEVkaXRvck9iai5zZWxlY3Rpb24gPSBzZWxl Y3Rpb25TcHk7Ci0gICAgICAgICAgU2V0U3RhZ2VkUm93cy5jYWxsKHNxbEVk aXRvck9iaiwge30sIHt9KTsKLSAgICAgICAgfSk7CiAKLSAgICAgICAgaXQo J3Nob3VsZCBkaXNhYmxlIHRoZSBkZWxldGUgcm93IGJ1dHRvbicsIGZ1bmN0 aW9uICgpIHsKLSAgICAgICAgICBleHBlY3QoJCgnI2J0bi1kZWxldGUtcm93 JykucHJvcCgnZGlzYWJsZWQnKSkudG9CZVRydXRoeSgpOwotICAgICAgICB9 KTsKKyAgICBkZXNjcmliZSgnd2hlbiB0aGVyZSBpcyBhIHNlbGVjdGlvbics IGZ1bmN0aW9uICgpIHsKKyAgICAgIGJlZm9yZUVhY2goZnVuY3Rpb24gKCkg eworICAgICAgICB2YXIgcmFuZ2UgPSB7CisgICAgICAgICAgZnJvbUNlbGw6 IDAsCisgICAgICAgICAgdG9DZWxsOiAwLAorICAgICAgICAgIGZyb21Sb3c6 IDEsCisgICAgICAgICAgdG9Sb3c6IDEsCisgICAgICAgIH07CiAKLSAgICAg ICAgaXQoJ3Nob3VsZCBkaXNhYmxlIHRoZSBjb3B5IHJvdyBidXR0b24nLCBm dW5jdGlvbiAoKSB7Ci0gICAgICAgICAgZXhwZWN0KCQoJyNidG4tY29weS1y b3cnKS5wcm9wKCdkaXNhYmxlZCcpKS50b0JlVHJ1dGh5KCk7Ci0gICAgICAg IH0pOworICAgICAgICBzZWxlY3Rpb25TcHkuZ2V0U2VsZWN0ZWRSYW5nZXMu YW5kLnJldHVyblZhbHVlKFtyYW5nZV0pOworICAgICAgICBzcWxFZGl0b3JP Ymouc2VsZWN0aW9uID0gc2VsZWN0aW9uU3B5OworICAgICAgICBTZXRTdGFn ZWRSb3dzLmNhbGwoc3FsRWRpdG9yT2JqLCB7fSwge30pOworICAgICAgfSk7 CiAKLSAgICAgICAgaXQoJ3Nob3VsZCBjbGVhciBzdGFnZWQgcm93cycsIGZ1 bmN0aW9uICgpIHsKLSAgICAgICAgICBleHBlY3Qoc3FsRWRpdG9yT2JqLmVk aXRvci5oYW5kbGVyLmRhdGFfc3RvcmUuc3RhZ2VkX3Jvd3MpLnRvRXF1YWwo e30pOwotICAgICAgICB9KTsKKyAgICAgIGl0KCdzaG91bGQgZGlzYWJsZSB0 aGUgZGVsZXRlIHJvdyBidXR0b24nLCBmdW5jdGlvbiAoKSB7CisgICAgICAg IGV4cGVjdCgkKCcjYnRuLWRlbGV0ZS1yb3cnKS5wcm9wKCdkaXNhYmxlZCcp KS50b0JlVHJ1dGh5KCk7CiAgICAgICB9KTsKIAotICAgICAgZGVzY3JpYmUo J3doZW4gdGhlcmUgaXMgYSBzZWxlY3Rpb24nLCBmdW5jdGlvbiAoKSB7Ci0g ICAgICAgIGJlZm9yZUVhY2goZnVuY3Rpb24gKCkgewotICAgICAgICAgIHZh ciByYW5nZSA9IHsKLSAgICAgICAgICAgIGZyb21DZWxsOiAwLAotICAgICAg ICAgICAgdG9DZWxsOiAwLAotICAgICAgICAgICAgZnJvbVJvdzogMSwKLSAg ICAgICAgICAgIHRvUm93OiAxLAotICAgICAgICAgIH07Ci0KLSAgICAgICAg ICBzZWxlY3Rpb25TcHkuZ2V0U2VsZWN0ZWRSYW5nZXMuYW5kLnJldHVyblZh bHVlKFtyYW5nZV0pOwotICAgICAgICAgIHNxbEVkaXRvck9iai5zZWxlY3Rp b24gPSBzZWxlY3Rpb25TcHk7Ci0gICAgICAgICAgU2V0U3RhZ2VkUm93cy5j YWxsKHNxbEVkaXRvck9iaiwge30sIHt9KTsKLSAgICAgICAgfSk7CisgICAg ICBpdCgnc2hvdWxkIGRpc2FibGUgdGhlIGNvcHkgcm93IGJ1dHRvbicsIGZ1 bmN0aW9uICgpIHsKKyAgICAgICAgZXhwZWN0KCQoJyNidG4tY29weS1yb3cn KS5wcm9wKCdkaXNhYmxlZCcpKS50b0JlRmFsc3koKTsKKyAgICAgIH0pOwog Ci0gICAgICAgIGl0KCdzaG91bGQgZGlzYWJsZSB0aGUgZGVsZXRlIHJvdyBi dXR0b24nLCBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgZXhwZWN0KCQoJyNi dG4tZGVsZXRlLXJvdycpLnByb3AoJ2Rpc2FibGVkJykpLnRvQmVUcnV0aHko KTsKLSAgICAgICAgfSk7CisgICAgICBpdCgnc2hvdWxkIGNsZWFyIHN0YWdl ZCByb3dzJywgZnVuY3Rpb24gKCkgeworICAgICAgICBleHBlY3Qoc3FsRWRp dG9yT2JqLmVkaXRvci5oYW5kbGVyLmRhdGFfc3RvcmUuc3RhZ2VkX3Jvd3Mp LnRvRXF1YWwoe30pOworICAgICAgfSk7CisgICAgfSk7CisgIH0pOwogCi0g ICAgICAgIGl0KCdzaG91bGQgZGlzYWJsZSB0aGUgY29weSByb3cgYnV0dG9u JywgZnVuY3Rpb24gKCkgewotICAgICAgICAgIGV4cGVjdCgkKCcjYnRuLWNv cHktcm93JykucHJvcCgnZGlzYWJsZWQnKSkudG9CZUZhbHN5KCk7Ci0gICAg ICAgIH0pOworICBkZXNjcmliZSgnd2hlbiAyIGZ1bGwgcm93cyBhcmUgc2Vs ZWN0ZWQnLCBmdW5jdGlvbiAoKSB7CisgICAgYmVmb3JlRWFjaChmdW5jdGlv biAoKSB7CisgICAgICB2YXIgcmFuZ2UxID0geworICAgICAgICBmcm9tQ2Vs bDogMCwKKyAgICAgICAgdG9DZWxsOiAxLAorICAgICAgICBmcm9tUm93OiAx LAorICAgICAgICB0b1JvdzogMSwKKyAgICAgIH07CisgICAgICB2YXIgcmFu Z2UyID0geworICAgICAgICBmcm9tQ2VsbDogMCwKKyAgICAgICAgdG9DZWxs OiAxLAorICAgICAgICBmcm9tUm93OiAyLAorICAgICAgICB0b1JvdzogMiwK KyAgICAgIH07CiAKLSAgICAgICAgaXQoJ3Nob3VsZCBjbGVhciBzdGFnZWQg cm93cycsIGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICBleHBlY3Qoc3FsRWRp dG9yT2JqLmVkaXRvci5oYW5kbGVyLmRhdGFfc3RvcmUuc3RhZ2VkX3Jvd3Mp LnRvRXF1YWwoe30pOwotICAgICAgICB9KTsKLSAgICAgIH0pOworICAgICAg c2VsZWN0aW9uU3B5LmdldFNlbGVjdGVkUmFuZ2VzLmFuZC5yZXR1cm5WYWx1 ZShbcmFuZ2UxLCByYW5nZTJdKTsKKyAgICAgIHNxbEVkaXRvck9iai5zZWxl Y3Rpb24gPSBzZWxlY3Rpb25TcHk7CiAgICAgfSk7CiAKLSAgICBkZXNjcmli ZSgnd2hlbiAyIGZ1bGwgcm93cyBhcmUgc2VsZWN0ZWQnLCBmdW5jdGlvbiAo KSB7Ci0gICAgICBiZWZvcmVFYWNoKGZ1bmN0aW9uICgpIHsKLSAgICAgICAg dmFyIHJhbmdlMSA9IHsKLSAgICAgICAgICBmcm9tQ2VsbDogMCwKLSAgICAg ICAgICB0b0NlbGw6IDEsCi0gICAgICAgICAgZnJvbVJvdzogMSwKLSAgICAg ICAgICB0b1JvdzogMSwKLSAgICAgICAgfTsKLSAgICAgICAgdmFyIHJhbmdl MiA9IHsKLSAgICAgICAgICBmcm9tQ2VsbDogMCwKLSAgICAgICAgICB0b0Nl bGw6IDEsCi0gICAgICAgICAgZnJvbVJvdzogMiwKLSAgICAgICAgICB0b1Jv dzogMiwKLSAgICAgICAgfTsKKyAgICBkZXNjcmliZSgnd2hlbiB0YWJsZSBk b2VzIG5vdCBoYXZlIHByaW1hcnkga2V5cycsIGZ1bmN0aW9uICgpIHsKKyAg ICAgIGl0KCdzaG91bGQgZW5hYmxlIHRoZSBjb3B5IHJvdyBidXR0b24nLCBm dW5jdGlvbiAoKSB7CisgICAgICAgIFNldFN0YWdlZFJvd3MuY2FsbChzcWxF ZGl0b3JPYmosIHt9LCB7fSk7CisgICAgICAgIGV4cGVjdCgkKCcjYnRuLWNv cHktcm93JykucHJvcCgnZGlzYWJsZWQnKSkudG9CZUZhbHN5KCk7CisgICAg ICB9KTsKIAotICAgICAgICBzZWxlY3Rpb25TcHkuZ2V0U2VsZWN0ZWRSYW5n ZXMuYW5kLnJldHVyblZhbHVlKFtyYW5nZTEsIHJhbmdlMl0pOwotICAgICAg ICBzcWxFZGl0b3JPYmouc2VsZWN0aW9uID0gc2VsZWN0aW9uU3B5OworICAg ICAgaXQoJ3Nob3VsZCBub3QgZW5hYmxlIHRoZSBkZWxldGUgcm93IGJ1dHRv bicsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgU2V0U3RhZ2VkUm93cy5jYWxs KHNxbEVkaXRvck9iaiwge30sIHt9KTsKKyAgICAgICAgZXhwZWN0KCQoJyNi dG4tZGVsZXRlLXJvdycpLnByb3AoJ2Rpc2FibGVkJykpLnRvQmVUcnV0aHko KTsKICAgICAgIH0pOwogCi0gICAgICBkZXNjcmliZSgnd2hlbiB0YWJsZSBk b2VzIG5vdCBoYXZlIHByaW1hcnkga2V5cycsIGZ1bmN0aW9uICgpIHsKLSAg ICAgICAgaXQoJ3Nob3VsZCBlbmFibGUgdGhlIGNvcHkgcm93IGJ1dHRvbics IGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICBTZXRTdGFnZWRSb3dzLmNhbGwo c3FsRWRpdG9yT2JqLCB7fSwge30pOwotICAgICAgICAgIGV4cGVjdCgkKCcj YnRuLWNvcHktcm93JykucHJvcCgnZGlzYWJsZWQnKSkudG9CZUZhbHN5KCk7 Ci0gICAgICAgIH0pOworICAgICAgaXQoJ3Nob3VsZCB1cGRhdGUgc3RhZ2Vk IHJvd3Mgd2l0aCB0aGUgX190ZW1wX1BLIHZhbHVlIG9mIHRoZSBuZXcgU2Vs ZWN0ZWQgUm93cycsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgU2V0U3RhZ2Vk Um93cy5jYWxsKHNxbEVkaXRvck9iaiwge30sIHt9KTsKKyAgICAgICAgZXhw ZWN0KHNxbEVkaXRvck9iai5lZGl0b3IuaGFuZGxlci5kYXRhX3N0b3JlLnN0 YWdlZF9yb3dzKS50b0VxdWFsKHsnNDU2Jzoge30sICc3ODknOiB7fX0pOwor ICAgICAgfSk7CiAKLSAgICAgICAgaXQoJ3Nob3VsZCBub3QgZW5hYmxlIHRo ZSBkZWxldGUgcm93IGJ1dHRvbicsIGZ1bmN0aW9uICgpIHsKKyAgICAgIGRl c2NyaWJlKCd0aGUgdXNlciBjYW4gZWRpdCcsIGZ1bmN0aW9uICgpIHsKKyAg ICAgICAgaXQoJ3Nob3VsZCBlbmFibGUgdGhlIGRlbGV0ZSByb3cgYnV0dG9u JywgZnVuY3Rpb24gKCkgeworICAgICAgICAgIHNxbEVkaXRvck9iai5lZGl0 b3IuaGFuZGxlci5jYW5fZWRpdCA9IHRydWU7CiAgICAgICAgICAgU2V0U3Rh Z2VkUm93cy5jYWxsKHNxbEVkaXRvck9iaiwge30sIHt9KTsKLSAgICAgICAg ICBleHBlY3QoJCgnI2J0bi1kZWxldGUtcm93JykucHJvcCgnZGlzYWJsZWQn KSkudG9CZVRydXRoeSgpOworICAgICAgICAgIGV4cGVjdCgkKCcjYnRuLWRl bGV0ZS1yb3cnKS5wcm9wKCdkaXNhYmxlZCcpKS50b0JlRmFsc3koKTsKICAg ICAgICAgfSk7CisgICAgICB9KTsKKyAgICB9KTsKIAotICAgICAgICBpdCgn c2hvdWxkIHVwZGF0ZSBzdGFnZWQgcm93cyB3aXRoIHRoZSBfX3RlbXBfUEsg dmFsdWUgb2YgdGhlIG5ldyBTZWxlY3RlZCBSb3dzJywgZnVuY3Rpb24gKCkg eworICAgIGRlc2NyaWJlKCd3aGVuIHRhYmxlIGhhcyBwcmltYXJ5IGtleXMn LCBmdW5jdGlvbiAoKSB7CisgICAgICBiZWZvcmVFYWNoKGZ1bmN0aW9uICgp IHsKKyAgICAgICAgc3FsRWRpdG9yT2JqLmtleXMgPSB7J2EgcGsgY29sdW1u JzogJ3ZhcmNoYXInfTsKKyAgICAgICAgc3FsRWRpdG9yT2JqLmVkaXRvci5o YW5kbGVyLmRhdGFfc3RvcmUuc3RhZ2VkX3Jvd3MgPSB7JzQ1Nic6IHsnYSBw ayBjb2x1bW4nOiAndGhyZWUnfX07CisgICAgICB9KTsKKworICAgICAgZGVz Y3JpYmUoJ3NlbGVjdGVkIHJvd3MgaGF2ZSBwcmltYXJ5IGtleScsIGZ1bmN0 aW9uICgpIHsKKyAgICAgICAgaXQoJ3Nob3VsZCBzZXQgdGhlIHN0YWdlZCBy b3dzIGNvcnJlY3RseScsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICBTZXRT dGFnZWRSb3dzLmNhbGwoc3FsRWRpdG9yT2JqLCB7fSwge30pOwotICAgICAg ICAgIGV4cGVjdChzcWxFZGl0b3JPYmouZWRpdG9yLmhhbmRsZXIuZGF0YV9z dG9yZS5zdGFnZWRfcm93cykudG9FcXVhbCh7JzQ1Nic6IHt9LCAnNzg5Jzog e319KTsKKyAgICAgICAgICBleHBlY3Qoc3FsRWRpdG9yT2JqLmVkaXRvci5o YW5kbGVyLmRhdGFfc3RvcmUuc3RhZ2VkX3Jvd3MpLnRvRXF1YWwoCisgICAg ICAgICAgICB7JzQ1Nic6IHsnYSBwayBjb2x1bW4nOiAndGhyZWUnfSwgJzc4 OSc6IHsnYSBwayBjb2x1bW4nOiAnZml2ZSd9fSk7CiAgICAgICAgIH0pOwog Ci0gICAgICAgIGRlc2NyaWJlKCd0aGUgdXNlciBjYW4gZWRpdCcsIGZ1bmN0 aW9uICgpIHsKLSAgICAgICAgICBpdCgnc2hvdWxkIGVuYWJsZSB0aGUgZGVs ZXRlIHJvdyBidXR0b24nLCBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICBz cWxFZGl0b3JPYmouZWRpdG9yLmhhbmRsZXIuY2FuX2VkaXQgPSB0cnVlOwot ICAgICAgICAgICAgU2V0U3RhZ2VkUm93cy5jYWxsKHNxbEVkaXRvck9iaiwg e30sIHt9KTsKLSAgICAgICAgICAgIGV4cGVjdCgkKCcjYnRuLWRlbGV0ZS1y b3cnKS5wcm9wKCdkaXNhYmxlZCcpKS50b0JlRmFsc3koKTsKLSAgICAgICAg ICB9KTsKKyAgICAgICAgaXQoJ3Nob3VsZCBub3QgY2xlYXIgc2VsZWN0ZWQg cm93cyBpbiBDZWxsIFNlbGVjdGlvbiBNb2RlbCcsIGZ1bmN0aW9uICgpIHsK KyAgICAgICAgICBTZXRTdGFnZWRSb3dzLmNhbGwoc3FsRWRpdG9yT2JqLCB7 fSwge30pOworICAgICAgICAgIGV4cGVjdChzcWxFZGl0b3JPYmouc2VsZWN0 aW9uLnNldFNlbGVjdGVkUm93cykubm90LnRvSGF2ZUJlZW5DYWxsZWRXaXRo KCk7CiAgICAgICAgIH0pOwogICAgICAgfSk7CiAKLSAgICAgIGRlc2NyaWJl KCd3aGVuIHRhYmxlIGhhcyBwcmltYXJ5IGtleXMnLCBmdW5jdGlvbiAoKSB7 CisgICAgICBkZXNjcmliZSgnc2VsZWN0ZWQgcm93cyBtaXNzaW5nIHByaW1h cnkga2V5JywgZnVuY3Rpb24gKCkgewogICAgICAgICBiZWZvcmVFYWNoKGZ1 bmN0aW9uICgpIHsKLSAgICAgICAgICBzcWxFZGl0b3JPYmoua2V5cyA9IHsn YSBwayBjb2x1bW4nOiAndmFyY2hhcid9OwotICAgICAgICAgIHNxbEVkaXRv ck9iai5lZGl0b3IuaGFuZGxlci5kYXRhX3N0b3JlLnN0YWdlZF9yb3dzID0g eyc0NTYnOiB7MDogJ3RocmVlJ319OwotICAgICAgICB9KTsKKyAgICAgICAg ICB2YXIgZGF0YSA9IFt7J2EgcGsgY29sdW1uJzogJ29uZScsICdzb21lIGNv bHVtbic6ICd0d28nLCAnX190ZW1wX1BLJzogJzEyMyd9LAorICAgICAgICAg ICAgICAgIHsnc29tZSBjb2x1bW4nOiAnZm91cicsICdfX3RlbXBfUEsnOiAn NDU2J30sCisgICAgICAgICAgICAgICAgeydzb21lIGNvbHVtbic6ICdzaXgn LCAnX190ZW1wX1BLJzogJzc4OSd9LAorICAgICAgICAgICAgICAgIHsnYSBw ayBjb2x1bW4nOiAnc2V2ZW4nLCAnc29tZSBjb2x1bW4nOiAnZWlnaHQnLCAn X190ZW1wX1BLJzogJzQzMid9XSwKKyAgICAgICAgICAgIGRhdGFWaWV3ID0g bmV3IFNsaWNrLkRhdGEuRGF0YVZpZXcoKTsKIAotICAgICAgICBkZXNjcmli ZSgnc2VsZWN0ZWQgcm93cyBoYXZlIHByaW1hcnkga2V5JywgZnVuY3Rpb24g KCkgewotICAgICAgICAgIGl0KCdzaG91bGQgc2V0IHRoZSBzdGFnZWQgcm93 cyBjb3JyZWN0bHknLCBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICBTZXRT dGFnZWRSb3dzLmNhbGwoc3FsRWRpdG9yT2JqLCB7fSwge30pOwotICAgICAg ICAgICAgZXhwZWN0KHNxbEVkaXRvck9iai5lZGl0b3IuaGFuZGxlci5kYXRh X3N0b3JlLnN0YWdlZF9yb3dzKS50b0VxdWFsKAotICAgICAgICAgICAgICB7 JzQ1Nic6IHswOiAndGhyZWUnfSwgJzc4OSc6IHswOiAnZml2ZSd9fSk7Ci0g ICAgICAgICAgfSk7CisgICAgICAgICAgZGF0YVZpZXcuc2V0SXRlbXMoZGF0 YSwgJ19fdGVtcF9QSycpOwogCi0gICAgICAgICAgaXQoJ3Nob3VsZCBub3Qg Y2xlYXIgc2VsZWN0ZWQgcm93cyBpbiBDZWxsIFNlbGVjdGlvbiBNb2RlbCcs IGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgIFNldFN0YWdlZFJvd3MuY2Fs bChzcWxFZGl0b3JPYmosIHt9LCB7fSk7Ci0gICAgICAgICAgICBleHBlY3Qo c3FsRWRpdG9yT2JqLnNlbGVjdGlvbi5zZXRTZWxlY3RlZFJvd3MpLm5vdC50 b0hhdmVCZWVuQ2FsbGVkV2l0aCgpOwotICAgICAgICAgIH0pOworICAgICAg ICAgIGdyaWRTcHkuZ2V0RGF0YS5hbmQucmV0dXJuVmFsdWUoZGF0YVZpZXcp OwogICAgICAgICB9KTsKIAotICAgICAgICBkZXNjcmliZSgnc2VsZWN0ZWQg cm93cyBtaXNzaW5nIHByaW1hcnkga2V5JywgZnVuY3Rpb24gKCkgewotICAg ICAgICAgIGJlZm9yZUVhY2goZnVuY3Rpb24gKCkgewotICAgICAgICAgICAg Z3JpZFNweS5nZXREYXRhLmFuZC5yZXR1cm5WYWx1ZShbCi0gICAgICAgICAg ICAgIHswOiAnb25lJywgMTogJ3R3bycsIF9fdGVtcF9QSzogJzEyMyd9LAot ICAgICAgICAgICAgICB7MTogJ2ZvdXInLCBfX3RlbXBfUEs6ICc0NTYnfSwK LSAgICAgICAgICAgICAgezE6ICdzaXgnLCBfX3RlbXBfUEs6ICc3ODknfSwK LSAgICAgICAgICAgICAgezA6ICdzZXZlbicsIDE6ICdlaWdodCcsIF9fdGVt cF9QSzogJzQzMid9LAotICAgICAgICAgICAgXSk7Ci0gICAgICAgICAgfSk7 Ci0KLSAgICAgICAgICBpdCgnc2hvdWxkIGNsZWFyIHRoZSBzdGFnZWQgcm93 cycsIGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgIFNldFN0YWdlZFJvd3Mu Y2FsbChzcWxFZGl0b3JPYmosIHt9LCB7fSk7Ci0gICAgICAgICAgICBleHBl Y3Qoc3FsRWRpdG9yT2JqLmVkaXRvci5oYW5kbGVyLmRhdGFfc3RvcmUuc3Rh Z2VkX3Jvd3MpLnRvRXF1YWwoe30pOwotICAgICAgICAgIH0pOworICAgICAg ICBpdCgnc2hvdWxkIGNsZWFyIHRoZSBzdGFnZWQgcm93cycsIGZ1bmN0aW9u ICgpIHsKKyAgICAgICAgICBTZXRTdGFnZWRSb3dzLmNhbGwoc3FsRWRpdG9y T2JqLCB7fSwge30pOworICAgICAgICAgIGV4cGVjdChzcWxFZGl0b3JPYmou ZWRpdG9yLmhhbmRsZXIuZGF0YV9zdG9yZS5zdGFnZWRfcm93cykudG9FcXVh bCh7fSk7CisgICAgICAgIH0pOwogCi0gICAgICAgICAgaXQoJ3Nob3VsZCBj bGVhciBzZWxlY3RlZCByb3dzIGluIENlbGwgU2VsZWN0aW9uIE1vZGVsJywg ZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgU2V0U3RhZ2VkUm93cy5jYWxs KHNxbEVkaXRvck9iaiwge30sIHt9KTsKLSAgICAgICAgICAgIGV4cGVjdChz cWxFZGl0b3JPYmouc2VsZWN0aW9uLnNldFNlbGVjdGVkUm93cykudG9IYXZl QmVlbkNhbGxlZFdpdGgoW10pOwotICAgICAgICAgIH0pOworICAgICAgICBp dCgnc2hvdWxkIGNsZWFyIHNlbGVjdGVkIHJvd3MgaW4gQ2VsbCBTZWxlY3Rp b24gTW9kZWwnLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgU2V0U3RhZ2Vk Um93cy5jYWxsKHNxbEVkaXRvck9iaiwge30sIHt9KTsKKyAgICAgICAgICBl eHBlY3Qoc3FsRWRpdG9yT2JqLnNlbGVjdGlvbi5zZXRTZWxlY3RlZFJvd3Mp LnRvSGF2ZUJlZW5DYWxsZWRXaXRoKFtdKTsKICAgICAgICAgfSk7CisgICAg ICB9KTsKIAotICAgICAgICBkZXNjcmliZSgnd2hlbiB0aGUgc2VsZWN0ZWQg cm93IGlzIGEgbmV3IHJvdycsIGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICB2 YXIgcGFyZW50RGl2OwotICAgICAgICAgIGJlZm9yZUVhY2goZnVuY3Rpb24g KCkgewotICAgICAgICAgICAgdmFyIGNoaWxkRGl2ID0gJCgnPGRpdj48L2Rp dj4nKTsKLSAgICAgICAgICAgIHBhcmVudERpdiA9ICQoJzxkaXYgY2xhc3M9 Im5ld19yb3ciPjwvZGl2PicpOwotICAgICAgICAgICAgcGFyZW50RGl2LmFw cGVuZChjaGlsZERpdik7Ci0gICAgICAgICAgICAkKCdib2R5JykuYXBwZW5k KHBhcmVudERpdik7Ci0gICAgICAgICAgICBncmlkU3B5LmdldENlbGxOb2Rl LmFuZC5yZXR1cm5WYWx1ZShjaGlsZERpdik7Ci0gICAgICAgICAgICBTZXRT dGFnZWRSb3dzLmNhbGwoc3FsRWRpdG9yT2JqLCB7fSwge30pOwotICAgICAg ICAgIH0pOworICAgICAgZGVzY3JpYmUoJ3doZW4gdGhlIHNlbGVjdGVkIHJv dyBpcyBhIG5ldyByb3cnLCBmdW5jdGlvbiAoKSB7CisgICAgICAgIHZhciBw YXJlbnREaXY7CisgICAgICAgIGJlZm9yZUVhY2goZnVuY3Rpb24gKCkgewor ICAgICAgICAgIHZhciBjaGlsZERpdiA9ICQoJzxkaXY+PC9kaXY+Jyk7Cisg ICAgICAgICAgcGFyZW50RGl2ID0gJCgnPGRpdiBjbGFzcz0ibmV3X3JvdyI+ PC9kaXY+Jyk7CisgICAgICAgICAgcGFyZW50RGl2LmFwcGVuZChjaGlsZERp dik7CisgICAgICAgICAgJCgnYm9keScpLmFwcGVuZChwYXJlbnREaXYpOwor ICAgICAgICAgIGdyaWRTcHkuZ2V0Q2VsbE5vZGUuYW5kLnJldHVyblZhbHVl KGNoaWxkRGl2KTsKKyAgICAgICAgICBTZXRTdGFnZWRSb3dzLmNhbGwoc3Fs RWRpdG9yT2JqLCB7fSwge30pOworICAgICAgICB9KTsKIAotICAgICAgICAg IGFmdGVyRWFjaChmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICBwYXJlbnRE aXYucmVtb3ZlKCk7Ci0gICAgICAgICAgfSk7CisgICAgICAgIGFmdGVyRWFj aChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgcGFyZW50RGl2LnJlbW92ZSgp OworICAgICAgICB9KTsKIAotICAgICAgICAgIGl0KCdzaG91bGQgbm90IGNs ZWFyIHRoZSBzdGFnZWQgcm93cycsIGZ1bmN0aW9uICgpIHsKLSAgICAgICAg ICAgIGV4cGVjdChzcWxFZGl0b3JPYmouZWRpdG9yLmhhbmRsZXIuZGF0YV9z dG9yZS5zdGFnZWRfcm93cykudG9FcXVhbCh7Ci0gICAgICAgICAgICAgICc0 NTYnOiB7MDogJ3RocmVlJ30sCi0gICAgICAgICAgICAgICc3ODknOiB7MDog J2ZpdmUnfSwKLSAgICAgICAgICAgIH0pOworICAgICAgICBpdCgnc2hvdWxk IG5vdCBjbGVhciB0aGUgc3RhZ2VkIHJvd3MnLCBmdW5jdGlvbiAoKSB7Cisg ICAgICAgICAgZXhwZWN0KHNxbEVkaXRvck9iai5lZGl0b3IuaGFuZGxlci5k YXRhX3N0b3JlLnN0YWdlZF9yb3dzKS50b0VxdWFsKHsKKyAgICAgICAgICAg ICc0NTYnOiB7J2EgcGsgY29sdW1uJzogJ3RocmVlJ30sCisgICAgICAgICAg ICAnNzg5JzogeydhIHBrIGNvbHVtbic6ICdmaXZlJ30sCiAgICAgICAgICAg fSk7CisgICAgICAgIH0pOwogCi0gICAgICAgICAgaXQoJ3Nob3VsZCBub3Qg Y2xlYXIgc2VsZWN0ZWQgcm93cyBpbiBDZWxsIFNlbGVjdGlvbiBNb2RlbCcs IGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgIGV4cGVjdChzcWxFZGl0b3JP Ymouc2VsZWN0aW9uLnNldFNlbGVjdGVkUm93cykubm90LnRvSGF2ZUJlZW5D YWxsZWQoKTsKLSAgICAgICAgICB9KTsKKyAgICAgICAgaXQoJ3Nob3VsZCBu b3QgY2xlYXIgc2VsZWN0ZWQgcm93cyBpbiBDZWxsIFNlbGVjdGlvbiBNb2Rl bCcsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICBleHBlY3Qoc3FsRWRpdG9y T2JqLnNlbGVjdGlvbi5zZXRTZWxlY3RlZFJvd3MpLm5vdC50b0hhdmVCZWVu Q2FsbGVkKCk7CiAgICAgICAgIH0pOwogICAgICAgfSk7CiAgICAgfSk7CiAg IH0pOwogfSk7CisKZGlmZiAtLWdpdCBhL3dlYi9yZWdyZXNzaW9uL2phdmFz Y3JpcHQvc2VsZWN0aW9uL3hjZWxsX3NlbGVjdGlvbl9tb2RlbF9zcGVjLmpz IGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9zZWxlY3Rpb24veGNlbGxf c2VsZWN0aW9uX21vZGVsX3NwZWMuanMKaW5kZXggZGIzZjZkNi4uMjg4MmU0 OSAxMDA2NDQKLS0tIGEvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9zZWxl Y3Rpb24veGNlbGxfc2VsZWN0aW9uX21vZGVsX3NwZWMuanMKKysrIGIvd2Vi L3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9zZWxlY3Rpb24veGNlbGxfc2VsZWN0 aW9uX21vZGVsX3NwZWMuanMKQEAgLTMyLDE0ICszMiwxNyBAQCBkZXNjcmli ZSgnWENlbGxTZWxlY3Rpb25Nb2RlbCcsIGZ1bmN0aW9uICgpIHsKICAgICB9 LCB7CiAgICAgICBpZDogJzEnLAogICAgICAgbmFtZTogJ3NvbWUtY29sdW1u LW5hbWUnLAorICAgICAgZmllbGQ6ICdzb21lLWNvbHVtbi1uYW1lJywKICAg ICAgIHBvczogMCwKICAgICB9LCB7CiAgICAgICBpZDogJ3NlY29uZC1jb2x1 bW4taWQnLAogICAgICAgbmFtZTogJ3NlY29uZCBjb2x1bW4nLAorICAgICAg ZmllbGQ6ICdzZWNvbmQgY29sdW1uJywKICAgICAgIHBvczogMSwKICAgICB9 LCB7CiAgICAgICBpZDogJ3RoaXJkLWNvbHVtbi1pZCcsCiAgICAgICBuYW1l OiAndGhpcmQgY29sdW1uJywKKyAgICAgIGZpZWxkOiAndGhpcmQgY29sdW1u JywKICAgICAgIHBvczogMiwKICAgICB9LAogICAgIF07CkBAIC01MSwxMyAr NTQsMTUgQEAgZGVzY3JpYmUoJ1hDZWxsU2VsZWN0aW9uTW9kZWwnLCBmdW5j dGlvbiAoKSB7CiAgICAgICAgICdzZWNvbmQgY29sdW1uJzogJ3NlY29uZCB2 YWx1ZSAnICsgaSwKICAgICAgICAgJ3RoaXJkIGNvbHVtbic6ICd0aGlyZCB2 YWx1ZSAnICsgaSwKICAgICAgICAgJ2ZvdXJ0aCBjb2x1bW4nOiAnZm91cnRo IHZhbHVlICcgKyBpLAorICAgICAgICAnX190ZW1wX1BLJzogJzEyMycgKyBp LAogICAgICAgfSk7CiAgICAgfQogICAgIGNvbnRhaW5lciA9ICQoJzxkaXY+ PC9kaXY+Jyk7CisgICAgdmFyIGRhdGFWaWV3ID0gbmV3IFNsaWNrLkRhdGEu RGF0YVZpZXcoKTsKICAgICBjb250YWluZXIuaGVpZ2h0KDk5OTkpOwogICAg IGNvbnRhaW5lci53aWR0aCg5OTk5KTsKLQotICAgIGdyaWQgPSBuZXcgU2xp Y2tHcmlkKGNvbnRhaW5lciwgZGF0YSwgY29sdW1ucyk7CisgICAgZGF0YVZp ZXcuc2V0SXRlbXMoZGF0YSwgJ19fdGVtcF9QSycpOworICAgIGdyaWQgPSBu ZXcgU2xpY2tHcmlkKGNvbnRhaW5lciwgZGF0YVZpZXcsIGNvbHVtbnMpOwog ICAgIGdyaWQuc2V0U2VsZWN0aW9uTW9kZWwobmV3IFhDZWxsU2VsZWN0aW9u TW9kZWwoKSk7CiAgICAgJCgnYm9keScpLmFwcGVuZChjb250YWluZXIpOwog ICB9KTsKZGlmZiAtLWdpdCBhL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQv c2xpY2tncmlkL2V2ZW50X2hhbmRsZXJzL2hhbmRsZV9xdWVyeV9vdXRwdXRf a2V5Ym9hcmRfZXZlbnRfc3BlYy5qcyBiL3dlYi9yZWdyZXNzaW9uL2phdmFz Y3JpcHQvc2xpY2tncmlkL2V2ZW50X2hhbmRsZXJzL2hhbmRsZV9xdWVyeV9v dXRwdXRfa2V5Ym9hcmRfZXZlbnRfc3BlYy5qcwppbmRleCBlYjQ0MTFkLi5l NzkwYThmIDEwMDY0NAotLS0gYS93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0 L3NsaWNrZ3JpZC9ldmVudF9oYW5kbGVycy9oYW5kbGVfcXVlcnlfb3V0cHV0 X2tleWJvYXJkX2V2ZW50X3NwZWMuanMKKysrIGIvd2ViL3JlZ3Jlc3Npb24v amF2YXNjcmlwdC9zbGlja2dyaWQvZXZlbnRfaGFuZGxlcnMvaGFuZGxlX3F1 ZXJ5X291dHB1dF9rZXlib2FyZF9ldmVudF9zcGVjLmpzCkBAIC0yNywyMSAr MjcsMjIgQEAgZGVzY3JpYmUoJyNoYW5kbGVRdWVyeU91dHB1dEtleWJvYXJk RXZlbnQnLCBmdW5jdGlvbiAoKSB7CiAgICAgICBtZXRhS2V5OiBmYWxzZSwK ICAgICAgIHdoaWNoOiAtMSwKICAgICAgIGtleUNvZGU6IC0xLAotICAgICAg cHJldmVudERlZmF1bHQ6IGphc21pbmUuY3JlYXRlU3B5KCdwcmV2ZW50RGVm YXVsdCcpLAorICAgICAgcHJldmVudERlZmF1bHQ6IGphc21pbmUuY3JlYXRl U3B5KCdwcmV2ZW50RGVmYXVsdCcpCiAgICAgfTsKIAotICAgIHZhciBkYXRh ID0gW1snJywgJzAsMC1jZWxsLWNvbnRlbnQnLCAnMCwxLWNlbGwtY29udGVu dCddLAotICAgICAgWycnLCAnMSwwLWNlbGwtY29udGVudCcsICcxLDEtY2Vs bC1jb250ZW50J10sCi0gICAgICBbJycsICcyLDAtY2VsbC1jb250ZW50Jywg JzIsMS1jZWxsLWNvbnRlbnQnXV07Ci0gICAgdmFyIGNvbHVtbkRlZmluaXRp b25zID0gW3tuYW1lOiAnY2hlY2tib3hDb2x1bW4nfSwge3BvczogMSwgbmFt ZTogJ2ZpcnN0Q29sdW1uJ30sIHsKLSAgICAgIHBvczogMiwKLSAgICAgIG5h bWU6ICdzZWNvbmRDb2x1bW4nLAotICAgIH1dOwotICAgIGdyaWQgPSBuZXcg U2xpY2tHcmlkKCQoJzxkaXY+PC9kaXY+JyksIGRhdGEsIGNvbHVtbkRlZmlu aXRpb25zKTsKLSAgICBncmlkLnNldFNlbGVjdGlvbk1vZGVsKG5ldyBYQ2Vs bFNlbGVjdGlvbk1vZGVsKCkpOworICAgIHZhciBkYXRhID0gW3snY2hlY2ti b3hDb2x1bW4nOiAnJywgJ2ZpcnN0Q29sdW1uJzogJzAsMC1jZWxsLWNvbnRl bnQnLCAnc2Vjb25kQ29sdW1uJzogJzAsMS1jZWxsLWNvbnRlbnQnLCAnX190 ZW1wX1BLJzogJzEyMyd9LAorICAgICAgICB7J2NoZWNrYm94Q29sdW1uJzog JycsICdmaXJzdENvbHVtbic6ICcxLDAtY2VsbC1jb250ZW50JywgJ3NlY29u ZENvbHVtbic6ICcxLDEtY2VsbC1jb250ZW50JywgJ19fdGVtcF9QSyc6ICc0 NTYnfSwKKyAgICAgICAgeydjaGVja2JveENvbHVtbic6ICcnLCAnZmlyc3RD b2x1bW4nOiAnMiwwLWNlbGwtY29udGVudCcsICdzZWNvbmRDb2x1bW4nOiAn MiwxLWNlbGwtY29udGVudCcsICdfX3RlbXBfUEsnOiAnNzg5J31dLAorICAg ICAgY29sdW1uRGVmaW5pdGlvbnMgPSBbe25hbWU6ICdjaGVja2JveENvbHVt bid9LAorICAgICAgICB7cG9zOiAxLCBuYW1lOiAnZmlyc3RDb2x1bW4nLCBm aWVsZDogJ2ZpcnN0Q29sdW1uJ30sCisgICAgICAgIHsgcG9zOiAyLCBuYW1l OiAnc2Vjb25kQ29sdW1uJywgZmllbGQ6ICdzZWNvbmRDb2x1bW4nfV0sCisg ICAgICBkYXRhVmlldyA9IG5ldyBTbGljay5EYXRhLkRhdGFWaWV3KCk7CiAK KyAgICBncmlkID0gbmV3IFNsaWNrLkdyaWQoJCgnPGRpdj48L2Rpdj4nKSwg ZGF0YVZpZXcsIGNvbHVtbkRlZmluaXRpb25zKTsKKyAgICBncmlkLnNldFNl bGVjdGlvbk1vZGVsKG5ldyBYQ2VsbFNlbGVjdGlvbk1vZGVsKCkpOworICAg IGRhdGFWaWV3LnNldEl0ZW1zKGRhdGEsICdfX3RlbXBfUEsnKTsKICAgICBz bGlja0V2ZW50ID0gewotICAgICAgZ3JpZDogZ3JpZCwKKyAgICAgIGdyaWQ6 IGdyaWQKICAgICB9OwogCiAgICAgc3B5T24oY2xpcGJvYXJkLCAnY29weVRl eHRUb0NsaXBib2FyZCcpOwpkaWZmIC0tZ2l0IGEvd2ViL3dlYnBhY2sudGVz dC5jb25maWcuanMgYi93ZWIvd2VicGFjay50ZXN0LmNvbmZpZy5qcwppbmRl eCA2NzU0ZjA0Li44ZDNlOWU5IDEwMDY0NAotLS0gYS93ZWIvd2VicGFjay50 ZXN0LmNvbmZpZy5qcworKysgYi93ZWIvd2VicGFjay50ZXN0LmNvbmZpZy5q cwpAQCAtNjMsNiArNjMsNyBAQCBtb2R1bGUuZXhwb3J0cyA9IHsKICAgICAg ICdwZ2FkbWluLmJyb3dzZXIuZW5kcG9pbnRzJzogcmVncmVzc2lvbkRpciAr ICcvamF2YXNjcmlwdC9mYWtlX2VuZHBvaW50cycsCiAgICAgICAnc2xpY2tn cmlkJzogc291cmNlc0RpciArICcvdmVuZG9yL3NsaWNrZ3JpZC9zbGljay5j b3JlJywKICAgICAgICdzbGlja2dyaWQuZ3JpZCc6IHNvdXJjZXNEaXIgKyAn L3ZlbmRvci9zbGlja2dyaWQvc2xpY2suZ3JpZCcsCisgICAgICAnc2xpY2su ZGF0YXZpZXcnOiBzb3VyY2VzRGlyICsgJy92ZW5kb3Ivc2xpY2tncmlkL3Ns aWNrLmRhdGF2aWV3JywKICAgICAgICdzbGlja2dyaWQucm93c2VsZWN0aW9u bW9kZWwnOiBzb3VyY2VzRGlyICsgJy92ZW5kb3Ivc2xpY2tncmlkL3BsdWdp bnMvc2xpY2sucm93c2VsZWN0aW9ubW9kZWwnLAogICAgICAgJ2Jyb3dzZXIn OiBwYXRoLnJlc29sdmUoX19kaXJuYW1lLCAncGdhZG1pbi9icm93c2VyL3N0 YXRpYy9qcycpLAogICAgICAgJ3BnYWRtaW4nOiBzb3VyY2VzRGlyICsgJy9q cy9wZ2FkbWluJywK --94eb2c07ed70d2761005520588fd Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 8bit MIME-Version: 1.0 -- Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgadmin-hackers --94eb2c07ed70d2761005520588fd--