Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1jWyUI-0006eO-Te for pgadmin-hackers@arkaria.postgresql.org; Fri, 08 May 2020 08:36:07 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1jWyUF-0005lJ-UV for pgadmin-hackers@arkaria.postgresql.org; Fri, 08 May 2020 08:36:03 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1jWyUF-0005k5-1h for pgadmin-hackers@lists.postgresql.org; Fri, 08 May 2020 08:36:03 +0000 Received: from mail-oi1-x235.google.com ([2607:f8b0:4864:20::235]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1jWyU7-0000hz-9i for pgadmin-hackers@postgresql.org; Fri, 08 May 2020 08:36:01 +0000 Received: by mail-oi1-x235.google.com with SMTP id 19so7822146oiy.8 for ; Fri, 08 May 2020 01:35:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb-com.20150623.gappssmtp.com; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=P6+I5UA5cUDZdlSWu2o+mhSm+deB3VTun9BcOoORBSU=; b=dX1D+9NZcnffCtUOpi/N5JE5Nad9ISb1QNdmViMg6hUmtHAMgvWTK/TUZnhLISDfeY O9ACI1mCkU63P5vH9vu9+/05UZxpaR0jcHjBiU6n/xQJFGrLHEP9vLMBEpQkTULEqPUl yrxUI9b/CUIFf1ImaJom7dBHJ/FzAmuUvipmE52aDLCW/4qh/0Pod8lKacip9Stmrho6 iIEmwjg1d8K+rcZzoob2th6SPteqtg/ErJ9SBgcN4M4gu6X/sSwZojdyz6W6sL5adATe 6wKpxpuQ+QOejOB1X6RGtD09Oslj4N/WuL29yh4zJE0FXDsocoxEMGdmpE/4C8kTo2sy 46LQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=P6+I5UA5cUDZdlSWu2o+mhSm+deB3VTun9BcOoORBSU=; b=ek90VZPxm6alunGO8kfc+gonUfx159qTD/dPahKGQbCKigfQd/9npl2zM9wIkOneZ0 mN0m39s+GFNHTfJaCUOPqP2jqdRg5iKTv1qdhuYSFxByZfieia4jq1g+Km+79R0pBvHJ dvgFVQfhgEoQkgoou7r5Qh/tQtYlXKcuCFMVICMlFFL8z292mUjvG34F/JVIXJP0A4Ew vrwQ3VCncvhhTWae9+IDmX3Fj5xKwJEBwpo/ALIdjNcXmRns2VUfg35U+xrm3rFmC3lr eXT4OG2tUbj795bNH9oGMbdyciVsgATI3YuY6O4e61LQtOUu6XdrtSq+iNg9zZT+EzkA XUpg== X-Gm-Message-State: AGi0PuZp0fN/Ivaeb6Bhwa2oaJfI8q7aaK72j9DrYB5WwlvQTS2ZUGEM 5KNNDVA4XRNndszy8naODEbqAxLMXUL3QjbPLnUPFGGBoWLy1wwEmW+lfiDb4IgvvfBdGEdcnjG ao/DN40OyLX/mbi+pEtg/od48lD8QU0kajUxRJB1GTahwvazMS7KtePS6Tosc5ziYxT2shvHSx9 JkMeBV+TihqmwiOPmwY1N+vsn/96G0oOaCBT7/Z4A4jO7y0vOEV8GnX/p4gYlP38M= X-Google-Smtp-Source: APiQypJsgrXkVUnC+cDfxGW6uZKmrJaoMOso+vIuqQyfMen5O0OPukkW+8lLaqF4kVMU+wK4z/IMrgzieMIi0Eq7Hbg= X-Received: by 2002:aca:ad13:: with SMTP id w19mr9201719oie.83.1588926954433; Fri, 08 May 2020 01:35:54 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Yogesh Mahajan Date: Fri, 8 May 2020 14:05:18 +0530 Message-ID: Subject: Re: [pgAdmin 4 - Housekeeping #5255] Implement Selenium Grid using multi-threading & solenoid using current test framework To: Akshay Joshi , pgadmin-hackers Cc: Shubham Agarwal , navnath gadakh Content-Type: multipart/mixed; boundary="000000000000b1b17f05a51ee23c" X-CLOUD-SEC-AV-Info: enterprisedb,google_mail,monitor X-CLOUD-SEC-AV-Sent: true X-Gm-Spam: 0 X-Gm-Phishy: 0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --000000000000b1b17f05a51ee23c Content-Type: multipart/alternative; boundary="000000000000b1b17c05a51ee23a" --000000000000b1b17c05a51ee23a Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Attaching patch Thanks, Yogesh Mahajan QA - Team EnterpriseDB Corporation Phone: +91-9741705709 On Fri, May 8, 2020 at 1:57 PM Akshay Joshi wrote: > Hi Yogesh > > You forgot to attach patch :) > > On Fri, May 8, 2020 at 1:35 PM Yogesh Mahajan < > yogesh.mahajan@enterprisedb.com> wrote: > >> Hi, >> >> Please find the updates patch with above review comments. >> Patch adds below functionality to existing framework - >> 1.Ability to run features in parallel using solenoid(selenium + docker). >> a.Selenoid setup steps are included in /regression/README >> b.'python runtests.py --pkg feature_tests --parallel' will trigger >> parallel feature tests. >> 2.Removes dependency for pyperclip python module. >> 3.New script in ../tools/update_selenoid_browsers.py updates browser >> images at local selneoid server setup. >> >> >> Thanks, >> Yogesh Mahajan >> QA - Team >> EnterpriseDB Corporation >> >> Phone: +91-9741705709 >> >> >> On Tue, May 5, 2020 at 3:58 PM Akshay Joshi < >> akshay.joshi@enterprisedb.com> wrote: >> >>> Hi Yogesh >>> >>> Following are the review comments: >>> >>> - *pyjq* package is not required as we used it only in one place. A >>> result is a normal dictionary that can be easily looped through. >>> - Remove "*if (SUPPORT_SSH_TUNNEL is True and ...*" logic from >>> config.py, we have already removed that. >>> - Remove yarn.lock file. >>> - Remove *pyperclip *from the regression/requirements.txt as we are >>> not using it. >>> - Please mentioned the value of *pgAdmin_default_server *should not >>> be '*127.0.0.1*' in the README file even though everything runs on >>> the same machine. >>> - Please mentioned that if we set the value of the browser version >>> is *null* then selenoid will take the latest available browser >>> version. >>> - Got the below error if selenoid_url is not provided: >>> - list index out of range >>> Unable to find Selenoid Status >>> >>> *test_config.json.in *: >>> >>> - "selenoid_info" should be renamed to "selenoid_config". Proper >>> alignment is required. >>> - "cross_Browsers" should be renamed to "cross_browsers" or >>> "run_on_browsers" or "run_tests_on_browsers". Provide entries for su= pported >>> browsers with version set to null so that it will run on the latest = browser >>> version. >>> - "selenoid_url": "Selenoid Url" should be changed >>> to "selenoid_url": "http://>> machine>:4444/wd/hub". >>> >>> If you change the names in test_config.json.in then please update the >>> same in README as well. >>> >>> >>> On Mon, May 4, 2020 at 4:27 PM Yogesh Mahajan < >>> yogesh.mahajan@enterprisedb.com> wrote: >>> >>>> Hi Akshay, >>>> >>>> Please find the updated patch. >>>> >>>> Thanks, >>>> Yogesh Mahajan >>>> QA - Team >>>> EnterpriseDB Corporation >>>> >>>> Phone: +91-9741705709 >>>> >>>> >>>> On Mon, May 4, 2020 at 2:51 PM Akshay Joshi < >>>> akshay.joshi@enterprisedb.com> wrote: >>>> >>>>> Hi Yogesh >>>>> >>>>> The patch is not applied to the master branch. Can you please rebase >>>>> and send the patch again. >>>>> >>>>> On Fri, May 1, 2020 at 12:28 PM Yogesh Mahajan < >>>>> yogesh.mahajan@enterprisedb.com> wrote: >>>>> >>>>>> Hi, >>>>>> >>>>>> Please find updated patch modified according to review comments - >>>>>> Patch implements below things - >>>>>> 1.Enable the current framework to provide option to execute Feature >>>>>> tests in parallel on selenium grid set up. >>>>>> - Addition of new switch to start parallel features tests. >>>>>> - New parameters with respect to selenoid in test_config.json.in >>>>>> - Addition of new script to check solenoid updates. >>>>>> >>>>>> >>>>>> >>>>>> Thanks, >>>>>> Yogesh Mahajan >>>>>> QA - Team >>>>>> EnterpriseDB Corporation >>>>>> >>>>>> Phone: +91-9741705709 >>>>>> >>>>>> >>>>>> On Tue, Apr 21, 2020 at 1:18 PM Shubham Agarwal < >>>>>> shubham.agarwal@enterprisedb.com> wrote: >>>>>> >>>>>>> Hi Yogesh, >>>>>>> Below are the review comments- >>>>>>> >>>>>>> 1. runtests.py >>>>>>> a. The exception traceback logic at line number 653 in >>>>>>> runtests.py is not correct since it is particular to the thread >>>>>>> but there is much more code in that block which can throw some >>>>>>> exception. >>>>>>> b. line number 447 -> The drop_database function will only try to >>>>>>> drop the database with the name which is newly created >>>>>>> at 431 line number, its probability is 1% instead of this you can >>>>>>> write a logic so that it will drop all the database which starts wi= th name >>>>>>> =E2=80=98acceptance_test_db'. >>>>>>> c. line 584 - Why we are including resql test case execution in >>>>>>> GUI execution logic. >>>>>>> d. Change the function name run_test as script name is also >>>>>>> runtests.py >>>>>>> >>>>>>> 2. test_utils.py >>>>>>> a. Remove the headless chrome code from get_remote_webdriver() >>>>>>> in test_utils.py since we are using solenoid and it is not required >>>>>>> anymore. >>>>>>> b. Create separate functions to instantiate the firefox driver >>>>>>> and chrome driver logic since the same code is used in multiple fil= es. >>>>>>> c. launch_url_in_browser() -> you can simplify the definition of >>>>>>> the function like: >>>>>>> retry =3D 60 >>>>>>> =EF=BB=BF *while *retry > 0: >>>>>>> try: >>>>>>> driver.get(url) >>>>>>> except WebDriverException: >>>>>>> retry -=3D 1 >>>>>>> 3. Execution logs are not printing as per the logic some time, I ra= n >>>>>>> the suite for two servers and attached are the execution logs. >>>>>>> 4. Readme - >>>>>>> Please provide the Valid selenoid URL to be provided in the >>>>>>> test_config.json, with all the steps mentioned in the readme it is = not >>>>>>> clear. >>>>>>> Revisit the readme and write the missing steps. >>>>>>> 5. copy_selected_query_results_feature_tests.py- >>>>>>> Create the function to avoid duplicate code. The code for pasting >>>>>>> the values is repeating 8 times in the test code. >>>>>>> 6. Provide the valid docstring in newly introduced functions and >>>>>>> also valid comments while calling it. for ex.- _update_preference() >>>>>>> function is >>>>>>> introduced in pg_utilities_backup_restrore_test.py but from the >>>>>>> function name, it is not clear what preferences are going to update= in it. >>>>>>> 7. test_index_constraint_add test case is failing due to the latest >>>>>>> change, please merge and update this test case >>>>>>> >>>>>>> On Thu, Apr 16, 2020 at 2:41 PM navnath gadakh < >>>>>>> navnath.gadakh@enterprisedb.com> wrote: >>>>>>> >>>>>>>> Hi, >>>>>>>> I think I am not the right person to review this patch now as I >>>>>>>> already reviewed this code offline in the last week. I know the ap= proached >>>>>>>> Yogesh has followed, also given some review comments on it. >>>>>>>> Someone else please review it. >>>>>>>> >>>>>>>> Thanks! >>>>>>>> >>>>>>>> On Mon, Apr 13, 2020 at 2:49 PM Akshay Joshi < >>>>>>>> akshay.joshi@enterprisedb.com> wrote: >>>>>>>> >>>>>>>>> Hi Navnath >>>>>>>>> >>>>>>>>> Can you please review it? >>>>>>>>> >>>>>>>>> On Mon, Apr 13, 2020 at 2:40 PM Yogesh Mahajan < >>>>>>>>> yogesh.mahajan@enterprisedb.com> wrote: >>>>>>>>> >>>>>>>>>> Hi, >>>>>>>>>> >>>>>>>>>> Please find the attached patch for running *features tests* >>>>>>>>>> using solenoid(selenium grid + docker). >>>>>>>>>> KIndly review. >>>>>>>>>> To sun feature tests in parallel, required prerequisites can be >>>>>>>>>> checked in '~/web/regression/README' file. >>>>>>>>>> Also detailed instructions are added in the same file. >>>>>>>>>> After applying the patch, any existing process for execution of >>>>>>>>>> API/Features tests remains the same. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Thanks, >>>>>>>>>> Yogesh Mahajan >>>>>>>>>> QA - Team >>>>>>>>>> EnterpriseDB Corporation >>>>>>>>>> >>>>>>>>>> Phone: +91-9741705709 >>>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> -- >>>>>>>>> *Thanks & Regards* >>>>>>>>> *Akshay Joshi* >>>>>>>>> >>>>>>>>> *Sr. Software Architect* >>>>>>>>> *EnterpriseDB Software India Private Limited* >>>>>>>>> *Mobile: +91 976-788-8246* >>>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> -- >>>>>>>> Regards, >>>>>>>> Navnath Gadakh >>>>>>>> >>>>>>> >>>>>>> >>>>>>> -- >>>>>>> Thanks & Regards, >>>>>>> Shubham Agarwal >>>>>>> EnterpriseDB Corporation >>>>>>> >>>>>>> The Postgres Database Company >>>>>>> >>>>>> >>>>> >>>>> -- >>>>> *Thanks & Regards* >>>>> *Akshay Joshi* >>>>> >>>>> *Sr. Software Architect* >>>>> *EnterpriseDB Software India Private Limited* >>>>> *Mobile: +91 976-788-8246* >>>>> >>>> >>> >>> -- >>> *Thanks & Regards* >>> *Akshay Joshi* >>> >>> *Sr. Software Architect* >>> *EnterpriseDB Software India Private Limited* >>> *Mobile: +91 976-788-8246* >>> >> > > -- > *Thanks & Regards* > *Akshay Joshi* > > *Sr. Software Architect* > *EnterpriseDB Software India Private Limited* > *Mobile: +91 976-788-8246* > --000000000000b1b17c05a51ee23a Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Attaching patch=C2=A0

Thanks,
Yogesh Mahajan
QA - Team
E= nterpriseDB Corporation

Phone: +91-9741705709


On Fri, May 8, 2020 at 1:57 PM Akshay Joshi <akshay.joshi@enterprisedb.com>= ; wrote:
Hi=C2=A0Yogesh

=
You forgot to attach patch :)

On Fri, May 8, 2020 at 1:35 P= M Yogesh Mahajan <yogesh.mahajan@enterprisedb.com> wrote:
Hi,

Pleas= e find the updates patch with above review comments.
Patch adds b= elow functionality to existing framework -=C2=A0
1.Ability to run= features in parallel using solenoid(selenium + docker).
=C2=A0 = =C2=A0 =C2=A0a.Selenoid=C2=A0setup steps are included in /regression/README=
=C2=A0 =C2=A0 =C2=A0b.'python runtests.py =C2=A0--pkg featur= e_tests --parallel' will trigger parallel feature tests.
2.Re= moves dependency for pyperclip python=C2=A0module.
3.New script i= n ../tools/update_selenoid_browsers.py updates=C2=A0browser images=C2=A0at = local selneoid server setup.


Thanks,
Yogesh Mahajan
QA= - Team
EnterpriseDB Corporation

Phone: +91-974170570= 9


On Tue, May 5, 2020 at 3:58 = PM Akshay Joshi <akshay.joshi@enterprisedb.com> wrote:
Hi=C2=A0Yogesh

Following are th= e review comments:
  • pyjq package is not requir= ed as we used it only in one place. A result is a normal dictionary that ca= n be easily looped=C2=A0through.
  • Remove "if (SUPPORT_SSH_TU= NNEL is True and ..." logic from config.py, we have already remove= d that.
  • Remove yarn.lock file.
  • Remove=C2=A0pyperclip from the regression/requirements.txt as we are not using it.
  • Pleas= e mentioned the value of=C2=A0pgAdmin_default_server should not be &= #39;127.0.0.1' in the README file even though everything runs on= the same machine.
  • Please mentioned that if we set the value of the= browser version is null then selenoid=C2=A0will take the latest ava= ilable browser version.
  • Got the below error if selenoid_url is not = provided:
    • list index out of range
      Unable to find Selenoid St= atus
  • "selenoi= d_info" should be renamed to "selenoid_config". Proper align= ment is required.
  • "cross_Browsers" should be renamed to &= quot;cross_browsers" or "run_on_browsers" or "run_tests= _on_browsers". Provide entries for supported browsers with version set= to null so that it will run on the latest browser version.
  • "s= elenoid_url": "Selenoid Url" should be changed to=C2=A0"= ;selenoid_url": "http://<IP address of Selenoid Installed mach= ine>:4444/wd/hub".
If you change the names in test_config.json.in = then please update the same in README as well.

On M= on, May 4, 2020 at 4:27 PM Yogesh Mahajan <yogesh.mahajan@enterprisedb.com= > wrote:
Hi Akshay,

<= /div>
Please find the updated patch.

Thanks,
Yogesh Mahajan
QA - Team
EnterpriseDB Corporation

Phone: +91-9741705709


<= div dir=3D"ltr" class=3D"gmail_attr">On Mon, May 4, 2020 at 2:51 PM Akshay = Joshi <akshay.joshi@enterprisedb.com> wrote:
=
Hi=C2=A0Yogesh

The patch is not applied= to the master branch. Can you please rebase and send the patch again.

On Fri, May 1, 2020 at 12:28 PM Yogesh Mahajan <yogesh.mahajan@enterprisedb.c= om> wrote:
Hi,

Please find updated patch modified according to review comments=C2= =A0-=C2=A0
Patch implements below things=C2=A0-=C2=A0
1= .Enable the current framework to provide option to execute Feature tests in= parallel =C2=A0on selenium grid set up.
=C2=A0 =C2=A0- Addition = of new switch to start parallel features tests.
=C2=A0 =C2=A0- Ne= w parameters with respect to selenoid in test_config.json.in
=C2=A0 =C2=A0- Add= ition of new script to check solenoid=C2=A0updates.



T= hanks,
Yogesh Mahajan
QA - Team
EnterpriseDB C= orporation

Phone: +91-9741705709


On Tue, Apr 21, 2020 at 1:18 PM Shubham Agarwal <shubham.agarwal@enterpri= sedb.com> wrote:
Hi Yogesh,
Below are the review comments-

1. runtests.py
= =C2=A0 =C2=A0 a. The = exception traceback logic at line number 653 in runtests.py is not correct = since it is particular to the thread
but there is much more code in that block which can throw some exc= eption.
b. line number 447 -> The drop_databas= e function will only try to drop the database with the name which is newly = created
at 431 line number, it= s probability is 1% instead of this you can write a logic so that it will d= rop all the database which starts with name =E2=80=98acceptance_test_db'= ;.
=C2=A0 c. lin= e 584 -=C2=A0Why we are including resql test case execution in GUI executio= n logic.
=C2=A0 =C2=A0 d.= =C2=A0Change the function na= me run_test as script name is also runtests.py

2. test_utils.py
Remove the headl= ess chrome code from get_remote_webdriver() in test_utils.py since we are u= sing solenoid and it is not required anymore.=
=C2=A0 =C2=A0 b. Create separate functions to instantiate the firefox driver a= nd chrome driver logic since the same code is used in multiple files.
c. launch_url_in_browser() -> you can simplify the definit= ion of the function like:
=C2=A0 =C2=A0=C2=A0<= /span>retry =3D 60
=EF=BB=BF=C2=A0 =C2=A0 =C2=A0 =C2=A0 while=C2=A0retry > 0:
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 try:
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 driver.get(url)=C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 except WebDriverException:
=C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0retry -=3D 1
3. Execution logs are not printing as per the logic some ti= me, I ran the suite for two servers and attached are the execution logs.
4. Readme -<= /div>
Please provide the Valid selenoid U= RL to be provided in the test_config.json, with all the steps mentioned in = the readme it is not clear.
Revisit the readme and write the missing steps.
<= div>5. copy_selected_query_results_feature_tests= .py-
Create the funct= ion to avoid duplicate code. The code for pasting the values is repeating 8= times in the test code.
6. Provide the valid docstring in newly introduced functions and also vali= d comments while calling it. for ex.- _update_preference() function is
introduced in pg_utilitie= s_backup_restrore_test.py but from the function name, it is not clear what = preferences are going to update in it.
7. test_index_constraint_add test case is failing due to the latest change, p= lease merge and update this test case

On Thu, Apr 16, 2020 at 2:41 PM navn= ath gadakh <navnath.gadakh@enterprisedb.com> wrote:
Hi,
I think I am not the right = person to review this patch now as I already reviewed this code offline in = the last week. I know the=C2=A0approached Yogesh has followed, also given s= ome review comments on it.

Thanks= !

On Mon, Apr 13, 2020 at 2:49 PM Akshay Joshi <akshay.joshi@enterpri= sedb.com> wrote:
<= font face=3D"arial, sans-serif">Hi Navnath

Can you = please review it?

On Mon, Apr 13, 2020 at 2:40 PM Yogesh Mahajan = <yo= gesh.mahajan@enterprisedb.com> wrote:
Hi,

Please find the attached=C2=A0patch for running f= eatures tests using solenoid(selenium=C2=A0grid + docker).
=
KIndly review.
To sun feature tests in parallel, required prer= equisites can be checked in '~/web/regression/README' file.<= /div>
Also detailed=C2=A0instructions = are added in the same=C2=A0file.
After applying the patch, any existing process for execution of API= /Features=C2=A0tests remains the same.

Thanks,
Yog= esh Mahajan
QA - Team
EnterpriseDB Corporatio= n

Phone: +91-9741705709


--
Thanks & Regards=
A= kshay Joshi
Sr. Software Architect
EnterpriseDB Software India Private Limited
Mobile: +91 976-788-8246


--
Regards,
Navnath = Gadakh


--
Thanks & Regards,
Shubham Agarwal
EnterpriseDB Corporation

The Postgres Database Company


--
Thanks & Regards
Akshay Joshi
<= font color=3D"#3333FF">Sr. Software Architect=
<= font color=3D"#000000" face=3D"arial, sans-serif">EnterpriseDB Software = India Private Limited
Mobile: +91 976-788-8246=


--
Thanks & Regards
Akshay Joshi
<= font color=3D"#3333FF">Sr. Software Architect=
<= font color=3D"#000000" face=3D"arial, sans-serif">EnterpriseDB Software = India Private Limited
Mobile: +91 976-788-8246=


--
Thanks & Regards
Akshay Joshi
<= font color=3D"#3333FF">Sr. Software Architect=
<= font color=3D"#000000" face=3D"arial, sans-serif">EnterpriseDB Software = India Private Limited
Mobile: +91 976-788-8246=
--000000000000b1b17c05a51ee23a-- --000000000000b1b17f05a51ee23c Content-Type: application/octet-stream; name="Selenium_Grid_Implementation_ver4.0.patch" Content-Disposition: attachment; filename="Selenium_Grid_Implementation_ver4.0.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_k9xy225x0 ZGlmZiAtLWdpdCBhL3Rvb2xzL3VwZGF0ZV9zZWxlbm9pZF9icm93c2Vycy5weSBiL3Rvb2xzL3Vw ZGF0ZV9zZWxlbm9pZF9icm93c2Vycy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwLi5jMDY3NjIxCi0tLSAvZGV2L251bGwKKysrIGIvdG9vbHMvdXBkYXRlX3NlbGVub2lkX2Jy b3dzZXJzLnB5CkBAIC0wLDAgKzEsMjc3IEBACisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIworIyBwZ0Fk bWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisjCisjIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMjAs IFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KKyMgVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNl ZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisjCisjICMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMg VXBkYXRlcyBicm93c2VyIGltYWdlcyhzZWxlbm9pZC1kb2NrZXIpIGRlcGVuZGluZyBvbiBhcmd1 bWVudHMgcGFzc2VkIHdoaWxlCisjIHJ1bm5pbmcgdGhpcyBzY3JpcHQuCisjIGUuZy4gLS1jaHJv bWUgL3Vzci9iaW4vZ29vZ2xlLWNocm9tZSAtLWZpcmVmb3ggL3Vzci9iaW4vZmlyZWZveAorIyBB Y2Nlc3MgZGV0YWlscyBhYm91dCBzd2l0Y2hlcyB1c2luZyBoZWxwCisjIGUuZy4gLS1oZWxwCisK K2ltcG9ydCBhcmdwYXJzZQoraW1wb3J0IG9zCitpbXBvcnQgc3VicHJvY2VzcworaW1wb3J0IHN5 cworaW1wb3J0IHRyYWNlYmFjaworaW1wb3J0IHJlcXVlc3RzCitpbXBvcnQganNvbgorCisKK2Rl ZiByZWFkX2NvbW1hbmRfbGluZSgpOgorICAgICIiIlJlYWQgdGhlIGNvbW1hbmQgbGluZSBhcmd1 bWVudHMuCisgICAgUmV0dXJuczoKKyAgICAgICAgQXJndW1lbnRQYXJzZXI6IFRoZSBwYXJzZWQg YXJndW1lbnRzIG9iamVjdAorCisgICAgIiIiCisgICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1l bnRQYXJzZXIoCisgICAgICAgIGRlc2NyaXB0aW9uPSdHZXQgbGF0ZXN0IGJyb3dzZXIgaW1hZ2Vz KGNocm9tZSAmIGZpcmVmb3gpIGZvciBzZWxlbm9pZC4nCisgICAgICAgICAgICAgICAgICAgICdl LmcuIC0gLS1jaHJvbWUgL3Vzci9iaW4vZ29vZ2xlLWNocm9tZSAtLWZpcmVmb3ggJworICAgICAg ICAgICAgICAgICAgICAnL3Vzci9iaW4vZmlyZWZveCcpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVu dCgiLS1jaHJvbWUiLCBtZXRhdmFyPSJDSFJPTUUiLAorICAgICAgICAgICAgICAgICAgICAgICAg aGVscD0idGhlIENocm9tZSBleGVjdXRhYmxlIHBhdGgiKQorICAgIHBhcnNlci5hZGRfYXJndW1l bnQoIi0tZmlyZWZveCIsIG1ldGF2YXI9IkZJUkVGT1giLAorICAgICAgICAgICAgICAgICAgICAg ICAgaGVscD0idGhlIGZpcmVmb3ggZXhlY3V0YWJsZSBwYXRoIikKKyAgICBhcmdzX3ZhbCA9IHBh cnNlci5wYXJzZV9hcmdzKCkKKyAgICByZXR1cm4gYXJnc192YWwKKworCitkZWYgZ2V0X2Jyb3dz ZXJfdmVyc2lvbihicm93c2VyX25hbWUsIGV4ZWN1dGFibGVfcGF0aCk6CisgICAgIiIiCisgICAg RnVuY3Rpb24gcmV0dXJucyBicm93c2VyIHZlcnNpb24gZm9yIHNwZWNpZmllZCBicm93c2VyIHVz aW5nIGV4ZWN1dGFibGUKKyAgICBwYXRoIHBhc3NlZCBpbiBhcmd1bWVudHMuCisgICAgOnBhcmFt IGJyb3dzZXJfbmFtZToKKyAgICA6cGFyYW0gZXhlY3V0YWJsZV9wYXRoOiBlLmcuIC91c3IvYmlu L2ZpcmVmb3gKKyAgICA6cmV0dXJuOiBicm93c2VyIHZlcnNpb24KKyAgICAiIiIKKyAgICAjIE9u IExpbnV4L01hYyB3ZSBydW4gdGhlIGJyb3dzZXIgZXhlY3V0YWJsZSB3aXRoIHRoZSAtLXZlcnNp b24gZmxhZywKKyAgICAjIHRoZW4gcGFyc2UgdGhlIG91dHB1dC4KKyAgICBicm93c2VyX3ZlcnNp b25fdmFsID0gTm9uZQorICAgIHRyeToKKyAgICAgICAgcmVzdWx0ID0gc3VicHJvY2Vzcy5Qb3Bl bihbZXhlY3V0YWJsZV9wYXRoLCAnLS12ZXJzaW9uJ10sCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSkKKyAgICBleGNlcHQgRmlsZU5vdEZv dW5kRXJyb3I6CisgICAgICAgIHByaW50KCdUaGUgc3BlY2lmaWVkIGJyb3dzZXIgZXhlY3V0YWJs ZSBjb3VsZCBub3QgYmUgZm91bmQuJykKKyAgICAgICAgc3lzLmV4aXQoMSkKKworICAgIHZlcnNp b25fc3RyID0gcmVzdWx0LnN0ZG91dC5yZWFkKCkuZGVjb2RlKCJ1dGYtOCIpCisKKyAgICBpZiBi cm93c2VyX25hbWUubG93ZXIoKSA9PSAiY2hyb21lIjoKKyAgICAgICAgIyBDaGVjayBmb3IgJ0No cm9tJyBub3QgJ0Nocm9tZScgaW4gY2FzZSB0aGUgdXNlciBpcyB1c2luZyBDaHJvbWl1bS4KKyAg ICAgICAgaWYgIkNocm9tIiBub3QgaW4gdmVyc2lvbl9zdHI6CisgICAgICAgICAgICBwcmludCgn VGhlIHNwZWNpZmllZCBDaHJvbWUgZXhlY3V0YWJsZSBvdXRwdXQgYW4gdW5leHBlY3RlZCAnCisg ICAgICAgICAgICAgICAgICAndmVyc2lvbiBzdHJpbmc6IHt9LicuZm9ybWF0KHZlcnNpb25fc3Ry KSkKKyAgICAgICAgICAgIHN5cy5leGl0KDEpCisgICAgICAgICMgT24gc29tZSBsaW51eCBkaXN0 cm8gYGNocm9tZS0tdmVyc2lvbmAgZ2l2ZXMgb3V0cHV0IGxpa2UKKyAgICAgICAgIyAnR29vZ2xl IENocm9tZSA4MC4wLjM5ODcuMTMyIHVua25vd25cbicKKyAgICAgICAgIyBzbyB3ZSBuZWVkIHRv IGNoZWNrIGFuZCByZW1vdmUgdGhlIHVua25vd24gc3RyaW5nIGZyb20gdGhlIHZlcnNpb24KKyAg ICAgICAgaWYgdmVyc2lvbl9zdHIuZW5kc3dpdGgoInVua25vd25cbiIpOgorICAgICAgICAgICAg dmVyc2lvbl9zdHIgPSB2ZXJzaW9uX3N0ci5zdHJpcCgidW5rbm93blxuIikuc3RyaXAoKQorCisg ICAgICAgIGNocm9tZV92ZXJzaW9uID0gJy4nLmpvaW4odmVyc2lvbl9zdHIuc3BsaXQoKVstMV0u c3BsaXQoJy4nKVs6LTJdKQorCisgICAgICAgICMgTWFrZSBzdXJlIGJyb3dzZXIgdmVyc2lvbiBo YXMgb25seSAxIGRlY2ltYWwgcG9pbnQKKyAgICAgICAgaWYgY2hyb21lX3ZlcnNpb24uY291bnQo Jy4nKSAhPSAxOgorICAgICAgICAgICAgcHJpbnQoJ1RoZSBzcGVjaWZpZWQgQ2hyb21lIGV4ZWN1 dGFibGUgb3V0cHV0IGFuIHVuZXhwZWN0ZWQgJworICAgICAgICAgICAgICAgICAgJ3ZlcnNpb24g c3RyaW5nOiB7fS4nLmZvcm1hdCh2ZXJzaW9uX3N0cikpCisgICAgICAgICAgICBzeXMuZXhpdCgx KQorICAgICAgICBicm93c2VyX3ZlcnNpb25fdmFsID0gY2hyb21lX3ZlcnNpb24KKyAgICBlbGlm IGJyb3dzZXJfbmFtZS5sb3dlcigpID09ICJmaXJlZm94IjoKKyAgICAgICAgaWYgIkZpcmVmb3gi IG5vdCBpbiB2ZXJzaW9uX3N0cjoKKyAgICAgICAgICAgIHByaW50KCdUaGUgc3BlY2lmaWVkIEZp cmVmb3ggZXhlY3V0YWJsZSBvdXRwdXQgYW4gdW5leHBlY3RlZCAnCisgICAgICAgICAgICAgICAg ICAndmVyc2lvbiBzdHJpbmc6IHt9LicuZm9ybWF0KHZlcnNpb25fc3RyKSkKKyAgICAgICAgICAg IHN5cy5leGl0KDEpCisKKyAgICAgICAgIyBTb21lIHRpbWUgZmlyZWZveCAtLXZlcnNpb24gZ2l2 ZXMgb3V0cHV0IGxpa2UKKyAgICAgICAgIyAnUnVubmluZyB3aXRob3V0IGExMXkgc3VwcG9ydCEK KyAgICAgICAgIyBNb3ppbGxhIEZpcmVmb3ggNjguNy4wZXNyJworICAgICAgICAjIE90aGVyIG91 dHB1dCAtIFtyb290QGxvY2FsaG9zdCBsb2NhbF0jIC91c3IvYmluL2ZpcmVmb3ggLS12ZXJzaW9u CisgICAgICAgICMgTW96aWxsYSBGaXJlZm94IDc1LjAKKyAgICAgICAgaWYgJ2VzcicgaW4gdmVy c2lvbl9zdHI6CisgICAgICAgICAgICBmaXJlZm94X3ZlcnNpb24gPSAnLicuam9pbigKKyAgICAg ICAgICAgICAgICB2ZXJzaW9uX3N0ci5zcGxpdCgpWy0xXS5zcGxpdCgnLicpWzotMl0pICsgJy4w JworICAgICAgICBlbHNlOgorICAgICAgICAgICAgZmlyZWZveF92ZXJzaW9uID0gJy4nLmpvaW4o CisgICAgICAgICAgICAgICAgdmVyc2lvbl9zdHIuc3BsaXQoKVstMV0uc3BsaXQoJy4nKVs6LTFd KSArICcuMCcKKworICAgICAgICAjIE1ha2Ugc3VyZSBicm93c2VyIHZlcnNpb24gaGFzIG9ubHkg MSBkZWNpbWFsIHBvaW50CisgICAgICAgIGlmIGZpcmVmb3hfdmVyc2lvbi5jb3VudCgnLicpICE9 IDE6CisgICAgICAgICAgICBwcmludCgnVGhlIHNwZWNpZmllZCBDaHJvbWUgZXhlY3V0YWJsZSBv dXRwdXQgYW4gdW5leHBlY3RlZCAnCisgICAgICAgICAgICAgICAgICAndmVyc2lvbiBzdHJpbmc6 IHt9LicuZm9ybWF0KHZlcnNpb25fc3RyKSkKKyAgICAgICAgICAgIHN5cy5leGl0KDEpCisgICAg ICAgIGJyb3dzZXJfdmVyc2lvbl92YWwgPSBmaXJlZm94X3ZlcnNpb24KKyAgICBlbHNlOgorICAg ICAgICBwcmludCgiezB9IGlzIG5vdCByZWNvZ25pc2VkICIuZm9ybWF0KGJyb3dzZXJfbmFtZSkp CisgICAgICAgIHN5cy5leGl0KDEpCisgICAgcmV0dXJuIGJyb3dzZXJfdmVyc2lvbl92YWwKKwor CitkZWYgY2hlY2tfYW5kX2Rvd25sb2FkX3ZuY19icm93c2VyX2ltYWdlKGJyb3dzZXJfbmFtZSwg YnJvd3Nlcl92ZXJzaW9uKToKKyAgICAiIiIKKyAgICBGdW5jdGlvbiBjaGVja3MgcHJlc2VuY2Ug Zm9yIHZuYyBpbWFnZXMgZm9yIHBhc3NlZCBicm93c2VyCisgICAgYXQgZG9ja2VyLmlvL3NlbGVu b2lkLyByZWdpc3RyeQorICAgIDpwYXJhbSBicm93c2VyX25hbWU6CisgICAgOnBhcmFtIGJyb3dz ZXJfdmVyc2lvbjoKKyAgICA6cmV0dXJuOnRydWUgaWYgYnJvd3NlciBpbWFnZSBpcyBhdmFpbGFi bGUgJiBkb3dubG9hZGVkIGVsc2UgZmFsc2UKKyAgICAiIiIKKyAgICByZXMgPSByZXF1ZXN0cy5n ZXQoCisgICAgICAgICdodHRwczovL3JlZ2lzdHJ5Lmh1Yi5kb2NrZXIuY29tL3YyL3JlcG9zaXRv cmllcy9zZWxlbm9pZC92bmNfJyArCisgICAgICAgIGJyb3dzZXJfbmFtZSArICcvdGFncy8nKQor ICAgIHJlcyA9IHJlcy5qc29uKCkKKyAgICB2ZXJzaW9uX3RhZyA9IFtdCisgICAgaWYgbGVuKHJl c1sncmVzdWx0cyddKSA+IDA6CisgICAgICAgIGZvciByZXN1bHQgaW4gcmVzWydyZXN1bHRzJ106 CisgICAgICAgICAgICBpZiAnbmFtZScgaW4gcmVzdWx0OgorICAgICAgICAgICAgICAgIHZlcnNp b25fdGFnLmFwcGVuZChyZXN1bHRbJ25hbWUnXSkKKyAgICB2bmNfaW1hZ2VfYXZhaWxhYmxlID0g RmFsc2UKKyAgICBpbWFnZV9uYW1lID0gJ3ZuY18nICsgYnJvd3Nlcl9uYW1lICsgJzonICsgYnJv d3Nlcl92ZXJzaW9uCisKKyAgICBmb3IgaWR4LCB0YWcgaW4gZW51bWVyYXRlKHZlcnNpb25fdGFn KToKKyAgICAgICAgaWYgYnJvd3Nlcl92ZXJzaW9uID09IHRhZzoKKyAgICAgICAgICAgIGNvbW1h bmQgPSAnZG9ja2VyIHB1bGwgc2VsZW5vaWQvdm5jXycgKyBicm93c2VyX25hbWUgKyAnOicgXAor ICAgICAgICAgICAgICAgICAgICAgICsgYnJvd3Nlcl92ZXJzaW9uCisgICAgICAgICAgICBwcmlu dCgnIFZOQyBpbWFnZSBpcyBhdmFpbGFibGUgJiBkb3dubG9hZGluZyBub3cuLi4gezB9Jy5mb3Jt YXQoCisgICAgICAgICAgICAgICAgY29tbWFuZCkpCisgICAgICAgICAgICB0cnk6CisgICAgICAg ICAgICAgICAgc3VicHJvY2Vzcy5jYWxsKFtjb21tYW5kXSwgc2hlbGw9VHJ1ZSwgc3Rkb3V0PXN1 YnByb2Nlc3MuUElQRSkKKyAgICAgICAgICAgICAgICB2bmNfaW1hZ2VfYXZhaWxhYmxlID0gVHJ1 ZQorICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgICAgICAgICB0cmFjZWJh Y2sucHJpbnRfZXhjKGZpbGU9c3lzLnN0ZGVycikKKyAgICAgICAgICAgICAgICBwcmludCgKKyAg ICAgICAgICAgICAgICAgICAgJ3swfX0gSW1hZ2UgZm91bmQgYnV0IGNvdWxkIG5vdCBkb3dubG9h ZC4nLmZvcm1hdChjb21tYW5kKSkKKyAgICAgICAgICAgICAgICBzeXMuZXhpdCgxKQorICAgICAg ICAgICAgYnJlYWsKKyAgICAgICAgZWxpZiBpZHggPT0gbGVuKHZlcnNpb25fdGFnKToKKyAgICAg ICAgICAgIHByaW50KCJ7MH0gSW1hZ2UgaXMgbm90IGF2YWlsYWJsZS4iLmZvcm1hdChpbWFnZV9u YW1lKSkKKyAgICAgICAgICAgIHZuY19pbWFnZV9hdmFpbGFibGUgPSBGYWxzZQorICAgICAgICBl bHNlOgorICAgICAgICAgICAgcGFzcworICAgIHJldHVybiB2bmNfaW1hZ2VfYXZhaWxhYmxlCisK KworZGVmIHJlbG9hZF9zZWxlbm9pZF9jb25maWcoKToKKyAgICAiIiIKKyAgICBGdW5jdGlvbiBy dW5zIGNvbW1hbmQgdG8gcmVmcmVzaCBzZWxlbm9pZCBjb25maWd1cmF0aW9uCisgICAgOnJldHVy bjogdHJ1ZSBpZiBjb21tYW5kIGV4ZWN1dGlvbiBmb3Igc2VsZW5vaWQgcmVsb2FkIGlzIHN1Y2Nl c3NmdWwKKyAgICBlbHNlIGZhbHNlCisgICAgIiIiCisgICAgY29tbWFuZCA9ICdkb2NrZXIga2ls bCAtcyBIVVAgc2VsZW5vaWQnCisgICAgcmVsb2FkX3N1Y2Nlc3NmdWwgPSBGYWxzZQorICAgIHRy eToKKyAgICAgICAgc3VicHJvY2Vzcy5jYWxsKFtjb21tYW5kXSwgc2hlbGw9VHJ1ZSwgc3Rkb3V0 PXN1YnByb2Nlc3MuUElQRSkKKyAgICAgICAgcHJpbnQoIiBTZWxlbm9pZCBDb25maWd1cmF0aW9u IGlzIHJlbG9hZGVkLiIpCisgICAgICAgIHJlbG9hZF9zdWNjZXNzZnVsID0gVHJ1ZQorICAgIGV4 Y2VwdCBFeGNlcHRpb246CisgICAgICAgIHRyYWNlYmFjay5wcmludF9leGMoZmlsZT1zeXMuc3Rk ZXJyKQorICAgICAgICBwcmludCgnRXJyb3Igd2hpbGUgcmVsb2FkaW5nIHNlbGVub2lkIGNvbmZp Z3VyYXRpb24uJykKKyAgICAgICAgc3lzLmV4aXQoMSkKKyAgICByZXR1cm4gcmVsb2FkX3N1Y2Nl c3NmdWwKKworCitkZWYgZWRpdF9icm93c2Vyc19qc29uKGJyb3dzZXJfbmFtZSwgYnJvd3Nlcl92 ZXJzaW9uKToKKyAgICAiIiIKKyAgICBGdW5jdGlvbiBlZGl0cyBicm93c2Vycy5qc29uIHdoaWNo IGlzIHVzZWQgYnkgc2VsZW5vaWQgdG8KKyAgICBsb2FkIGJyb3dzZXIgY29uZmlndXJhdGlvbi4K KyAgICBEZWZhdWx0IHBhdGggZm9yIHRoaXMgZmlsZSBpcworICAgICJ1c2VyX2hvbWVfZGlyICsg Jy8uYWVyb2t1YmUvc2VsZW5vaWQvYnJvd3NlcnMuanNvbiciCisgICAgQ3VycmVudGx5IHRoaXMg aXMgaGFyZGNvZGVkLCBtaWdodCBuZWVkIHRvIG1vZGlmeQorICAgIGlmIHdlIHdhbnQgdG8gcGFz cyBjdXN0b21pemUgYnJvd3NlcnMuanNvbgorICAgIDpwYXJhbSBicm93c2VyX25hbWU6CisgICAg OnBhcmFtIGJyb3dzZXJfdmVyc2lvbjoKKyAgICA6cmV0dXJuOgorICAgICIiIgorICAgIGZpbGVf ZWRpdGVkID0gVHJ1ZQorICAgICMgUmVhZCBleGlzdGluZyBicm93c2Vycy5qc29uCisgICAganNv bl9maWxlID0gb3BlbihmaWxlX3BhdGgsICdyJykKKyAgICBleGlzdGluZ19kYXRhID0ganNvbi5s b2FkKGpzb25fZmlsZSkKKyAgICB1cGRhdGVkX2RhdGEgPSBOb25lCisKKyAgICAjIFVwZGF0ZSBk YXRhIGZvciBuZXcgYnJvd3NlciBpbWFnZXMKKyAgICBpZiBicm93c2VyX25hbWUubG93ZXIoKSA9 PSAnY2hyb21lJzoKKyAgICAgICAgdmVyc2lvbl9kYXRhID0gZXhpc3RpbmdfZGF0YVsnY2hyb21l J11bJ3ZlcnNpb25zJ10KKyAgICAgICAgaWYgYnJvd3Nlcl92ZXJzaW9uIGluIHZlcnNpb25fZGF0 YS5rZXlzKCk6CisgICAgICAgICAgICBwcmludCgiIHswfTp7MX0gaXMgYWxyZWFkeSB1cGRhdGVk IGluIGJyb3dzZXJzLmpzb24uIi5mb3JtYXQoCisgICAgICAgICAgICAgICAgYnJvd3Nlcl9uYW1l LCBicm93c2VyX3ZlcnNpb24pKQorICAgICAgICAgICAgZmlsZV9lZGl0ZWQgPSBUcnVlCisgICAg ICAgIGVsc2U6CisgICAgICAgICAgICBkYXRhX3RvX2luc2VydCA9IGRpY3QoCisgICAgICAgICAg ICAgICAge2Jyb3dzZXJfdmVyc2lvbjogeworICAgICAgICAgICAgICAgICAgICAnaW1hZ2UnOiAn c2VsZW5vaWQvdm5jX2Nocm9tZTonICsgYnJvd3Nlcl92ZXJzaW9uLAorICAgICAgICAgICAgICAg ICAgICAncG9ydCc6ICc0NDQ0JywgJ3BhdGgnOiAnLyd9fSkKKyAgICAgICAgICAgIChleGlzdGlu Z19kYXRhWydjaHJvbWUnXVsndmVyc2lvbnMnXSkudXBkYXRlKGRhdGFfdG9faW5zZXJ0KQorICAg ICAgICAgICAgdXBkYXRlZF9kYXRhID0gZXhpc3RpbmdfZGF0YQorICAgICAgICAgICAgcHJpbnQo dXBkYXRlZF9kYXRhKQorCisgICAgZWxpZiBicm93c2VyX25hbWUubG93ZXIoKSA9PSAnZmlyZWZv eCc6CisgICAgICAgIHZlcnNpb25fZGF0YSA9IGV4aXN0aW5nX2RhdGFbJ2ZpcmVmb3gnXVsndmVy c2lvbnMnXQorICAgICAgICBpZiBicm93c2VyX3ZlcnNpb24gaW4gdmVyc2lvbl9kYXRhLmtleXMo KToKKyAgICAgICAgICAgIHByaW50KCIgezB9OnsxfSBpcyBhbHJlYWR5IHVwZGF0ZWQgaW4gYnJv d3NlcnMuanNvbi4iLmZvcm1hdCgKKyAgICAgICAgICAgICAgICBicm93c2VyX25hbWUsIGJyb3dz ZXJfdmVyc2lvbikpCisgICAgICAgICAgICBmaWxlX2VkaXRlZCA9IFRydWUKKyAgICAgICAgZWxz ZToKKyAgICAgICAgICAgIGRhdGFfdG9faW5zZXJ0ID0gZGljdCgKKyAgICAgICAgICAgICAgICB7 YnJvd3Nlcl92ZXJzaW9uOiB7CisgICAgICAgICAgICAgICAgICAgICdpbWFnZSc6ICdzZWxlbm9p ZC92bmNfZmlyZWZveDonICsgYnJvd3Nlcl92ZXJzaW9uLAorICAgICAgICAgICAgICAgICAgICAn cG9ydCc6ICc0NDQ0JywgJ3BhdGgnOiAnLyd9fSkKKyAgICAgICAgICAgIChleGlzdGluZ19kYXRh WydmaXJlZm94J11bJ3ZlcnNpb25zJ10pLnVwZGF0ZShkYXRhX3RvX2luc2VydCkKKyAgICAgICAg ICAgIHVwZGF0ZWRfZGF0YSA9IGV4aXN0aW5nX2RhdGEKKyAgICBlbHNlOgorICAgICAgICBwcmlu dCgiQnJvd3NlciB2ZXJzaW9uIG5vdCBtYXRjaGVkIikKKyAgICAgICAgZmlsZV9lZGl0ZWQgPSBG YWxzZQorCisgICAgIyBXcml0ZSB1cGRhdGVkIGRhdGEgaW4gYnJvd3NlcnMuanNvbgorICAgIGlm IHVwZGF0ZWRfZGF0YSBpcyBub3QgTm9uZToKKyAgICAgICAganNvbl9maWxlID0gb3BlbihmaWxl X3BhdGgsICd3JykKKyAgICAgICAganNvbi5kdW1wKHVwZGF0ZWRfZGF0YSwganNvbl9maWxlKQor ICAgICAgICBwcmludCgiICdicm93c2Vycy5qc29uJyBpcyB1cGRhdGVkIGZvciB7MH0gezF9Ii5m b3JtYXQoCisgICAgICAgICAgICBicm93c2VyX25hbWUsIGJyb3dzZXJfdmVyc2lvbikpCisKKyAg ICAgICAgZmlsZV9lZGl0ZWQgPSBUcnVlCisgICAgcmV0dXJuIGZpbGVfZWRpdGVkCisKKworIyBN YWluIFByb2dyYW0gc3RhcnRzIGhlcmUKKyMgUmVhZCBjb21tYW5kIGxpbmUgYXJndW1lbnRzICYg Z2V0IGxpc3Qgb2YgYnJvd3Nlcl9uYW1lLCBleGVjdXRhYmxlIHBhdGguCithcmdzID0gdmFycyhy ZWFkX2NvbW1hbmRfbGluZSgpKQorCisjIEdldCBwYXRoIHBhdGggZm9yIGJyb3dzZXJzLmpzb24K K3VzZXJfaG9tZV9kaXIgPSBvcy5nZXRlbnYoIkhPTUUiKQorZmlsZV9wYXRoID0gdXNlcl9ob21l X2RpciArICcvLmFlcm9rdWJlL3NlbGVub2lkL2Jyb3dzZXJzLmpzb24nCitwcmludCgiKioqKiog VXBkYXRpbmcgJ3swfScgZm9yIG5ldyBicm93c2VyIHZlcnNpb25zLioqKioqIi5mb3JtYXQoZmls ZV9wYXRoKSkKKworIyBJdGVyYXRlIG92ZXIgYXJndW1lbnRzIHBhc3NlZAorZm9yIGJyb3dzZXIs IGV4ZWN1dGFibGVfcGF0aCBpbiBhcmdzLml0ZW1zKCk6CisgICAgaWYgZXhlY3V0YWJsZV9wYXRo IGlzIG5vdCBOb25lOgorICAgICAgICAjIEdldCBicm93c2VyIG5hbWUKKyAgICAgICAgYnJvd3Nl cl9uYW1lID0gYnJvd3NlcgorICAgICAgICAjIEdldCBicm93c2VyIHZlcnNpb24KKyAgICAgICAg YnJvd3Nlcl92ZXJzaW9uID0gZ2V0X2Jyb3dzZXJfdmVyc2lvbihicm93c2VyLCBleGVjdXRhYmxl X3BhdGgpCisgICAgICAgIHByaW50KAorICAgICAgICAgICAgIiBCcm93c2VyIHZlcnNpb24gZm9y IHswfSBpcyB7MX0gaW4gY3VycmVudCBleGVjdXRhYmxlIHBhdGggIi4KKyAgICAgICAgICAgIGZv cm1hdChicm93c2VyX25hbWUsIGJyb3dzZXJfdmVyc2lvbikpCisKKyAgICAgICAgIyBEb3dubG9h ZCB2bmMgYnJvd3NlciBpbWFnZS4KKyAgICAgICAgZG93bmxvYWRfbmV3X2ltYWdlID0gY2hlY2tf YW5kX2Rvd25sb2FkX3ZuY19icm93c2VyX2ltYWdlKAorICAgICAgICAgICAgYnJvd3Nlcl9uYW1l LCBicm93c2VyX3ZlcnNpb24pCisKKyAgICAgICAgIyBJZiBicm93c2VyIHZuYyBpbWFnZSBpcyBh dmFpbGFibGUsIHRoZW4gZWRpdCBicm93c2Vycy5qc29uCisgICAgICAgIGlmIGRvd25sb2FkX25l d19pbWFnZToKKyAgICAgICAgICAgIGlmIGVkaXRfYnJvd3NlcnNfanNvbihicm93c2VyX25hbWUs IGJyb3dzZXJfdmVyc2lvbik6CisgICAgICAgICAgICAgICAgcHJpbnQoCisgICAgICAgICAgICAg ICAgICAgICIgRmlsZSAnYnJvd3NlcnMuanNvbicgaXMgdXBkYXRlZCBmb3IgezB9IC0gezF9IFxu Ii5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgICAgICBicm93c2VyX25hbWUsIGJyb3dzZXJf dmVyc2lvbikpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHByaW50KAorICAg ICAgICAgICAgICAgICAgICAiIEZpbGUgJ2Jyb3dzZXJzLmpzb24nIGNhbiBOT1QgYmUgdXBkYXRl ZCBmb3IgezB9IC0gezF9IFxuIgorICAgICAgICAgICAgICAgICAgICAuZm9ybWF0KGJyb3dzZXJf bmFtZSwgYnJvd3Nlcl92ZXJzaW9uKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHByaW50 KCIgQnJvd3NlciBpbWFnZSBpcyBub3QgYXZhaWxhYmxlIGZvciB7MH0sIHsxfSIuZm9ybWF0KAor ICAgICAgICAgICAgICAgIGJyb3dzZXJfbmFtZSwgYnJvd3Nlcl92ZXJzaW9uKSkKKworIyBSZWxv YWQgc2VsZW5vaWQgY29uZmlndXJhdGlvbgoraWYgcmVsb2FkX3NlbGVub2lkX2NvbmZpZygpOgor ICAgIHByaW50KAorICAgICAgICAiKioqKiogVXBkYXRlZCAnezB9JyBmb3IgbmV3IGJyb3dzZXIg dmVyc2lvbnMuKioqKioiLmZvcm1hdChmaWxlX3BhdGgpKQpkaWZmIC0tZ2l0IGEvd2ViL2NvbmZp Zy5weSBiL3dlYi9jb25maWcucHkKaW5kZXggN2Y3NGE3ZC4uZDA1YWEwNCAxMDA2NDQKLS0tIGEv d2ViL2NvbmZpZy5weQorKysgYi93ZWIvY29uZmlnLnB5CkBAIC01NjIsNiArNTYyLDEwIEBAIHRy eToKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICBwYXNzCiAKKyMgT3ZlcnJpZGUgREVGQVVMVF9T RVJWRSB2YWx1ZSBmcm9tIGVudmlyb25tZW50IHZhcmlhYmxlLgoraWYgJ1BHQURNSU5fQ09ORklH X0RFRkFVTFRfU0VSVkVSJyBpbiBvcy5lbnZpcm9uOgorICAgIERFRkFVTFRfU0VSVkVSID0gb3Mu ZW52aXJvblsnUEdBRE1JTl9DT05GSUdfREVGQVVMVF9TRVJWRVInXQorCiAjIERpc2FibGUgVVNF Ul9JTkFDVElWSVRZX1RJTUVPVVQgd2hlbiBTRVJWRVJfTU9ERT1GYWxzZQogaWYgbm90IFNFUlZF Ul9NT0RFOgogICAgIFVTRVJfSU5BQ1RJVklUWV9USU1FT1VUID0gMApkaWZmIC0tZ2l0IGEvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv dGFibGVzL2NvbnN0cmFpbnRzL2luZGV4X2NvbnN0cmFpbnQvdGVzdHMvdGVzdF9pbmRleF9jb25z dHJhaW50X2FkZC5weSBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9jb25zdHJhaW50cy9pbmRleF9jb25zdHJhaW50L3Rl c3RzL3Rlc3RfaW5kZXhfY29uc3RyYWludF9hZGQucHkKaW5kZXggZjEyNzA2My4uODg1MjZjYSAx MDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvdGFibGVzL2NvbnN0cmFpbnRzL2luZGV4X2NvbnN0cmFpbnQvdGVzdHMv dGVzdF9pbmRleF9jb25zdHJhaW50X2FkZC5weQorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29uc3RyYWludHMv aW5kZXhfY29uc3RyYWludC90ZXN0cy90ZXN0X2luZGV4X2NvbnN0cmFpbnRfYWRkLnB5CkBAIC00 NCwzMSArNDQsMzAgQEAgY2xhc3MgSW5kZXhDb25zdHJhaW50QWRkVGVzdENhc2UoQmFzZVRlc3RH ZW5lcmF0b3IpOgogICAgICAgICAgZGljdCh1cmw9Jy9icm93c2VyL3VuaXF1ZV9jb25zdHJhaW50 L29iai8nLCBkYXRhPXVuaXF1ZV9rZXlfZGF0YSkpCiAgICAgXQogCi0gICAgQGNsYXNzbWV0aG9k Ci0gICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKLSAgICAgICAgY2xzLmRiX25hbWUgPSBwYXJlbnRf bm9kZV9kaWN0WyJkYXRhYmFzZSJdWy0xXVsiZGJfbmFtZSJdCisgICAgZGVmIHNldFVwKHNlbGYp OgorICAgICAgICBzZWxmLmRiX25hbWUgPSBwYXJlbnRfbm9kZV9kaWN0WyJkYXRhYmFzZSJdWy0x XVsiZGJfbmFtZSJdCiAgICAgICAgIHNjaGVtYV9pbmZvID0gcGFyZW50X25vZGVfZGljdFsic2No ZW1hIl1bLTFdCi0gICAgICAgIGNscy5zZXJ2ZXJfaWQgPSBzY2hlbWFfaW5mb1sic2VydmVyX2lk Il0KLSAgICAgICAgY2xzLmRiX2lkID0gc2NoZW1hX2luZm9bImRiX2lkIl0KLSAgICAgICAgZGJf Y29uID0gZGF0YWJhc2VfdXRpbHMuY29ubmVjdF9kYXRhYmFzZShjbHMsIHV0aWxzLlNFUlZFUl9H Uk9VUCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj bHMuc2VydmVyX2lkLCBjbHMuZGJfaWQpCisgICAgICAgIHNlbGYuc2VydmVyX2lkID0gc2NoZW1h X2luZm9bInNlcnZlcl9pZCJdCisgICAgICAgIHNlbGYuZGJfaWQgPSBzY2hlbWFfaW5mb1siZGJf aWQiXQorICAgICAgICBkYl9jb24gPSBkYXRhYmFzZV91dGlscy5jb25uZWN0X2RhdGFiYXNlKHNl bGYsIHV0aWxzLlNFUlZFUl9HUk9VUCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlcl9pZCwgc2VsZi5kYl9pZCkKICAgICAgICAgaWYg bm90IGRiX2NvblsnZGF0YSddWyJjb25uZWN0ZWQiXToKICAgICAgICAgICAgIHJhaXNlIEV4Y2Vw dGlvbigiQ291bGQgbm90IGNvbm5lY3QgdG8gZGF0YWJhc2UgdG8gYWRkIGEgIgogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICJpbmRleCBjb25zdHJhaW50KHByaW1hcnkga2V5IG9yIHVuaXF1 ZSBrZXkpLiIpCi0gICAgICAgIGNscy5zY2hlbWFfaWQgPSBzY2hlbWFfaW5mb1sic2NoZW1hX2lk Il0KLSAgICAgICAgY2xzLnNjaGVtYV9uYW1lID0gc2NoZW1hX2luZm9bInNjaGVtYV9uYW1lIl0K LSAgICAgICAgc2NoZW1hX3Jlc3BvbnNlID0gc2NoZW1hX3V0aWxzLnZlcmlmeV9zY2hlbWFzKGNs cy5zZXJ2ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjbHMuZGJfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNscy5zY2hlbWFfbmFtZSkKKyAgICAgICAgc2VsZi5zY2hlbWFf aWQgPSBzY2hlbWFfaW5mb1sic2NoZW1hX2lkIl0KKyAgICAgICAgc2VsZi5zY2hlbWFfbmFtZSA9 IHNjaGVtYV9pbmZvWyJzY2hlbWFfbmFtZSJdCisgICAgICAgIHNjaGVtYV9yZXNwb25zZSA9IHNj aGVtYV91dGlscy52ZXJpZnlfc2NoZW1hcyhzZWxmLnNlcnZlciwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZGJfbmFtZSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2No ZW1hX25hbWUpCiAgICAgICAgIGlmIG5vdCBzY2hlbWFfcmVzcG9uc2U6CiAgICAgICAgICAgICBy YWlzZSBFeGNlcHRpb24oIkNvdWxkIG5vdCBmaW5kIHRoZSBzY2hlbWEgdG8gYWRkIGEgaW5kZXgg IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb25zdHJhaW50KHByaW1hcnkga2V5IG9y IHVuaXF1ZSBrZXkpLiIpCi0gICAgICAgIGNscy50YWJsZV9uYW1lID0gInRhYmxlX2luZGV4Y29u c3RyYWludF8lcyIgJSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgKHN0cih1dWlkLnV1aWQ0 KCkpWzE6OF0pCi0gICAgICAgIGNscy50YWJsZV9pZCA9IHRhYmxlc191dGlscy5jcmVhdGVfdGFi bGUoY2xzLnNlcnZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjbHMuZGJfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjbHMuc2NoZW1hX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY2xzLnRhYmxlX25hbWUpCisgICAgICAgIHNlbGYudGFi bGVfbmFtZSA9ICJ0YWJsZV9pbmRleGNvbnN0cmFpbnRfJXMiICUgXAorICAgICAgICAgICAgICAg ICAgICAgICAgICAoc3RyKHV1aWQudXVpZDQoKSlbMTo4XSkKKyAgICAgICAgc2VsZi50YWJsZV9p ZCA9IHRhYmxlc191dGlscy5jcmVhdGVfdGFibGUoc2VsZi5zZXJ2ZXIsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZGJfbmFtZSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zY2hlbWFf bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c2VsZi50YWJsZV9uYW1lKQogCiAgICAgZGVmIHJ1blRlc3Qoc2VsZik6CiAgICAgICAgICIiIlRo aXMgZnVuY3Rpb24gd2lsbCBhZGQgaW5kZXggY29uc3RyYWludChwcmltYXJ5IGtleSBvciB1bmlx dWUga2V5KQpAQCAtODEsMTAgKzgwLDkgQEAgY2xhc3MgSW5kZXhDb25zdHJhaW50QWRkVGVzdENh c2UoQmFzZVRlc3RHZW5lcmF0b3IpOgogICAgICAgICAgICAgY29udGVudF90eXBlPSdodG1sL2pz b24nKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhyZXNwb25zZS5zdGF0dXNfY29kZSwgMjAw KQogCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKKyAgICBk ZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgICMgRGlzY29ubmVjdCB0aGUgZGF0YWJhc2UKLSAg ICAgICAgZGF0YWJhc2VfdXRpbHMuZGlzY29ubmVjdF9kYXRhYmFzZShjbHMsIGNscy5zZXJ2ZXJf aWQsIGNscy5kYl9pZCkKKyAgICAgICAgZGF0YWJhc2VfdXRpbHMuZGlzY29ubmVjdF9kYXRhYmFz ZShzZWxmLCBzZWxmLnNlcnZlcl9pZCwgc2VsZi5kYl9pZCkKIAogCiBjbGFzcyBDb25zdHJhaW50 c1VzaW5nSW5kZXhBZGRUZXN0Q2FzZShCYXNlVGVzdEdlbmVyYXRvcik6CkBAIC0xMTcsMzAgKzEx NSwyOCBAQCBjbGFzcyBDb25zdHJhaW50c1VzaW5nSW5kZXhBZGRUZXN0Q2FzZShCYXNlVGVzdEdl bmVyYXRvcik6CiAgICAgICAgICBkaWN0KHVybD0nL2Jyb3dzZXIvdW5pcXVlX2NvbnN0cmFpbnQv b2JqLycsIGRhdGE9dW5pcXVlX2tleV9kYXRhKSkKICAgICBdCiAKLSAgICBAY2xhc3NtZXRob2QK LSAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgotICAgICAgICBjbHMuZGJfbmFtZSA9IHBhcmVudF9u b2RlX2RpY3RbImRhdGFiYXNlIl1bLTFdWyJkYl9uYW1lIl0KKyAgICBkZWYgc2V0VXAoc2VsZik6 CisgICAgICAgIHNlbGYuZGJfbmFtZSA9IHBhcmVudF9ub2RlX2RpY3RbImRhdGFiYXNlIl1bLTFd WyJkYl9uYW1lIl0KICAgICAgICAgc2NoZW1hX2luZm8gPSBwYXJlbnRfbm9kZV9kaWN0WyJzY2hl bWEiXVstMV0KLSAgICAgICAgY2xzLnNlcnZlcl9pZCA9IHNjaGVtYV9pbmZvWyJzZXJ2ZXJfaWQi XQotICAgICAgICBjbHMuZGJfaWQgPSBzY2hlbWFfaW5mb1siZGJfaWQiXQotICAgICAgICBkYl9j b24gPSBkYXRhYmFzZV91dGlscy5jb25uZWN0X2RhdGFiYXNlKGNscywgdXRpbHMuU0VSVkVSX0dS T1VQLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNs cy5zZXJ2ZXJfaWQsIGNscy5kYl9pZCkKKyAgICAgICAgc2VsZi5zZXJ2ZXJfaWQgPSBzY2hlbWFf aW5mb1sic2VydmVyX2lkIl0KKyAgICAgICAgc2VsZi5kYl9pZCA9IHNjaGVtYV9pbmZvWyJkYl9p ZCJdCisgICAgICAgIGRiX2NvbiA9IGRhdGFiYXNlX3V0aWxzLmNvbm5lY3RfZGF0YWJhc2Uoc2Vs ZiwgdXRpbHMuU0VSVkVSX0dST1VQLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyX2lkLCBzZWxmLmRiX2lkKQogICAgICAgICBpZiBu b3QgZGJfY29uWydkYXRhJ11bImNvbm5lY3RlZCJdOgogICAgICAgICAgICAgcmFpc2UgRXhjZXB0 aW9uKCJDb3VsZCBub3QgY29ubmVjdCB0byBkYXRhYmFzZSB0byBhZGQgYSAiCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgImNvbnN0cmFpbnQgdXNpbmcgaW5kZXguIikKLSAgICAgICAgY2xz LnNjaGVtYV9pZCA9IHNjaGVtYV9pbmZvWyJzY2hlbWFfaWQiXQotICAgICAgICBjbHMuc2NoZW1h X25hbWUgPSBzY2hlbWFfaW5mb1sic2NoZW1hX25hbWUiXQotICAgICAgICBzY2hlbWFfcmVzcG9u c2UgPSBzY2hlbWFfdXRpbHMudmVyaWZ5X3NjaGVtYXMoY2xzLnNlcnZlciwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNscy5kYl9uYW1lLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xz LnNjaGVtYV9uYW1lKQorICAgICAgICBzZWxmLnNjaGVtYV9pZCA9IHNjaGVtYV9pbmZvWyJzY2hl bWFfaWQiXQorICAgICAgICBzZWxmLnNjaGVtYV9uYW1lID0gc2NoZW1hX2luZm9bInNjaGVtYV9u YW1lIl0KKyAgICAgICAgc2NoZW1hX3Jlc3BvbnNlID0gc2NoZW1hX3V0aWxzLnZlcmlmeV9zY2hl bWFzKHNlbGYuc2VydmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2VsZi5kYl9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zY2hlbWFfbmFtZSkKICAgICAgICAgaWYg bm90IHNjaGVtYV9yZXNwb25zZToKICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiQ291bGQg bm90IGZpbmQgdGhlIHNjaGVtYSB0byBhZGQgYSBpbmRleCAiCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgImNvbnN0cmFpbnQocHJpbWFyeSBrZXkgb3IgdW5pcXVlIGtleSkuIikKLSAgICAg ICAgY2xzLnRhYmxlX25hbWUgPSAidGFibGVfY29uc3RyYWludF8lcyIgJSAoc3RyKHV1aWQudXVp ZDQoKSlbMTo4XSkKLSAgICAgICAgY2xzLnRhYmxlX2lkID0gdGFibGVzX3V0aWxzLmNyZWF0ZV90 YWJsZShjbHMuc2VydmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNscy5kYl9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNscy5zY2hlbWFfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjbHMudGFibGVfbmFtZSkKKyAgICAgICAgc2VsZi50 YWJsZV9uYW1lID0gInRhYmxlX2NvbnN0cmFpbnRfJXMiICUgKHN0cih1dWlkLnV1aWQ0KCkpWzE6 OF0pCisgICAgICAgIHNlbGYudGFibGVfaWQgPSB0YWJsZXNfdXRpbHMuY3JlYXRlX3RhYmxlKHNl bGYuc2VydmVyLCBzZWxmLmRiX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHNlbGYuc2NoZW1hX25hbWUsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudGFibGVfbmFtZSkKIAogICAgIGRl ZiBydW5UZXN0KHNlbGYpOgogICAgICAgICAiIiJUaGlzIGZ1bmN0aW9uIHdpbGwgYWRkIGluZGV4 IGNvbnN0cmFpbnQocHJpbWFyeSBrZXkgb3IgdW5pcXVlIGtleSkKQEAgLTE1OCw3ICsxNTQsNiBA QCBjbGFzcyBDb25zdHJhaW50c1VzaW5nSW5kZXhBZGRUZXN0Q2FzZShCYXNlVGVzdEdlbmVyYXRv cik6CiAgICAgICAgICAgICBjb250ZW50X3R5cGU9J2h0bWwvanNvbicpCiAgICAgICAgIHNlbGYu YXNzZXJ0RXF1YWxzKHJlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCiAKLSAgICBAY2xhc3NtZXRo b2QKLSAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgorICAgIGRlZiB0ZWFyRG93bihzZWxmKToK ICAgICAgICAgIyBEaXNjb25uZWN0IHRoZSBkYXRhYmFzZQotICAgICAgICBkYXRhYmFzZV91dGls cy5kaXNjb25uZWN0X2RhdGFiYXNlKGNscywgY2xzLnNlcnZlcl9pZCwgY2xzLmRiX2lkKQorICAg ICAgICBkYXRhYmFzZV91dGlscy5kaXNjb25uZWN0X2RhdGFiYXNlKHNlbGYsIHNlbGYuc2VydmVy X2lkLCBzZWxmLmRiX2lkKQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2NvbnN0cmFpbnRzL2luZGV4 X2NvbnN0cmFpbnQvdGVzdHMvdGVzdF9pbmRleF9jb25zdHJhaW50X2RlbGV0ZS5weSBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3Rh Ymxlcy9jb25zdHJhaW50cy9pbmRleF9jb25zdHJhaW50L3Rlc3RzL3Rlc3RfaW5kZXhfY29uc3Ry YWludF9kZWxldGUucHkKaW5kZXggN2VlYTVlOS4uZjM1YTAwYiAxMDA2NDQKLS0tIGEvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFi bGVzL2NvbnN0cmFpbnRzL2luZGV4X2NvbnN0cmFpbnQvdGVzdHMvdGVzdF9pbmRleF9jb25zdHJh aW50X2RlbGV0ZS5weQorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29uc3RyYWludHMvaW5kZXhfY29uc3RyYWlu dC90ZXN0cy90ZXN0X2luZGV4X2NvbnN0cmFpbnRfZGVsZXRlLnB5CkBAIC0zOCwzMSArMzgsMzAg QEAgY2xhc3MgSW5kZXhDb25zdHJhaW50RGVsZXRlVGVzdENhc2UoQmFzZVRlc3RHZW5lcmF0b3Ip OgogICAgICAgICAgICAgICB0eXBlPSJVTklRVUUiKSkKICAgICBdCiAKLSAgICBAY2xhc3NtZXRo b2QKLSAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgotICAgICAgICBjbHMuZGJfbmFtZSA9IHBhcmVu dF9ub2RlX2RpY3RbImRhdGFiYXNlIl1bLTFdWyJkYl9uYW1lIl0KKyAgICBkZWYgc2V0VXAoc2Vs Zik6CisgICAgICAgIHNlbGYuZGJfbmFtZSA9IHBhcmVudF9ub2RlX2RpY3RbImRhdGFiYXNlIl1b LTFdWyJkYl9uYW1lIl0KICAgICAgICAgc2NoZW1hX2luZm8gPSBwYXJlbnRfbm9kZV9kaWN0WyJz Y2hlbWEiXVstMV0KLSAgICAgICAgY2xzLnNlcnZlcl9pZCA9IHNjaGVtYV9pbmZvWyJzZXJ2ZXJf aWQiXQotICAgICAgICBjbHMuZGJfaWQgPSBzY2hlbWFfaW5mb1siZGJfaWQiXQotICAgICAgICBk Yl9jb24gPSBkYXRhYmFzZV91dGlscy5jb25uZWN0X2RhdGFiYXNlKGNscywgdXRpbHMuU0VSVkVS X0dST1VQLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNscy5zZXJ2ZXJfaWQsIGNscy5kYl9pZCkKKyAgICAgICAgc2VsZi5zZXJ2ZXJfaWQgPSBzY2hl bWFfaW5mb1sic2VydmVyX2lkIl0KKyAgICAgICAgc2VsZi5kYl9pZCA9IHNjaGVtYV9pbmZvWyJk Yl9pZCJdCisgICAgICAgIGRiX2NvbiA9IGRhdGFiYXNlX3V0aWxzLmNvbm5lY3RfZGF0YWJhc2Uo c2VsZiwgdXRpbHMuU0VSVkVSX0dST1VQLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyX2lkLCBzZWxmLmRiX2lkKQogICAgICAgICBp ZiBub3QgZGJfY29uWydkYXRhJ11bImNvbm5lY3RlZCJdOgogICAgICAgICAgICAgcmFpc2UgRXhj ZXB0aW9uKCJDb3VsZCBub3QgY29ubmVjdCB0byBkYXRhYmFzZSB0byBhZGQgYSAiCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgImluZGV4IGNvbnN0cmFpbnQocHJpbWFyeSBrZXkgb3IgdW5p cXVlIGtleSkuIikKLSAgICAgICAgY2xzLnNjaGVtYV9pZCA9IHNjaGVtYV9pbmZvWyJzY2hlbWFf aWQiXQotICAgICAgICBjbHMuc2NoZW1hX25hbWUgPSBzY2hlbWFfaW5mb1sic2NoZW1hX25hbWUi XQotICAgICAgICBzY2hlbWFfcmVzcG9uc2UgPSBzY2hlbWFfdXRpbHMudmVyaWZ5X3NjaGVtYXMo Y2xzLnNlcnZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNscy5kYl9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY2xzLnNjaGVtYV9uYW1lKQorICAgICAgICBzZWxmLnNjaGVt YV9pZCA9IHNjaGVtYV9pbmZvWyJzY2hlbWFfaWQiXQorICAgICAgICBzZWxmLnNjaGVtYV9uYW1l ID0gc2NoZW1hX2luZm9bInNjaGVtYV9uYW1lIl0KKyAgICAgICAgc2NoZW1hX3Jlc3BvbnNlID0g c2NoZW1hX3V0aWxzLnZlcmlmeV9zY2hlbWFzKHNlbGYuc2VydmVyLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kYl9uYW1lLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5z Y2hlbWFfbmFtZSkKICAgICAgICAgaWYgbm90IHNjaGVtYV9yZXNwb25zZToKICAgICAgICAgICAg IHJhaXNlIEV4Y2VwdGlvbigiQ291bGQgbm90IGZpbmQgdGhlIHNjaGVtYSB0byBhZGQgYSBpbmRl eCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbnN0cmFpbnQocHJpbWFyeSBrZXkg b3IgdW5pcXVlIGtleSkuIikKLSAgICAgICAgY2xzLnRhYmxlX25hbWUgPSAidGFibGVfaW5kZXhj b25zdHJhaW50XyVzIiAlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAoc3RyKHV1aWQudXVp ZDQoKSlbMTo4XSkKLSAgICAgICAgY2xzLnRhYmxlX2lkID0gdGFibGVzX3V0aWxzLmNyZWF0ZV90 YWJsZShjbHMuc2VydmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNscy5kYl9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNscy5zY2hlbWFfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjbHMudGFibGVfbmFtZSkKKyAgICAgICAgc2VsZi50 YWJsZV9uYW1lID0gInRhYmxlX2luZGV4Y29uc3RyYWludF8lcyIgJSBcCisgICAgICAgICAgICAg ICAgICAgICAgICAgIChzdHIodXVpZC51dWlkNCgpKVsxOjhdKQorICAgICAgICBzZWxmLnRhYmxl X2lkID0gdGFibGVzX3V0aWxzLmNyZWF0ZV90YWJsZShzZWxmLnNlcnZlciwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kYl9uYW1lLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNjaGVt YV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzZWxmLnRhYmxlX25hbWUpCiAKICAgICBkZWYgcnVuVGVzdChzZWxmKToKICAgICAgICAgIiIi VGhpcyBmdW5jdGlvbiB3aWxsIGRlbGV0ZSBpbmRleCBjb25zdHJhaW50KHByaW1hcnkga2V5IG9y CkBAIC04MSw3ICs4MCw2IEBAIGNsYXNzIEluZGV4Q29uc3RyYWludERlbGV0ZVRlc3RDYXNlKEJh c2VUZXN0R2VuZXJhdG9yKToKICAgICAgICAgKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhy ZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQogCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHRl YXJEb3duQ2xhc3MoY2xzKToKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgICMgRGlz Y29ubmVjdCB0aGUgZGF0YWJhc2UKLSAgICAgICAgZGF0YWJhc2VfdXRpbHMuZGlzY29ubmVjdF9k YXRhYmFzZShjbHMsIGNscy5zZXJ2ZXJfaWQsIGNscy5kYl9pZCkKKyAgICAgICAgZGF0YWJhc2Vf dXRpbHMuZGlzY29ubmVjdF9kYXRhYmFzZShzZWxmLCBzZWxmLnNlcnZlcl9pZCwgc2VsZi5kYl9p ZCkKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9jb25zdHJhaW50cy9pbmRleF9jb25zdHJhaW50L3Rl c3RzL3Rlc3RfaW5kZXhfY29uc3RyYWludF9nZXQucHkgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29uc3RyYWludHMv aW5kZXhfY29uc3RyYWludC90ZXN0cy90ZXN0X2luZGV4X2NvbnN0cmFpbnRfZ2V0LnB5CmluZGV4 IGMwOGMyYWMuLmY4MzhhMmYgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9jb25zdHJhaW50cy9pbmRl eF9jb25zdHJhaW50L3Rlc3RzL3Rlc3RfaW5kZXhfY29uc3RyYWludF9nZXQucHkKKysrIGIvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv dGFibGVzL2NvbnN0cmFpbnRzL2luZGV4X2NvbnN0cmFpbnQvdGVzdHMvdGVzdF9pbmRleF9jb25z dHJhaW50X2dldC5weQpAQCAtMzgsMzEgKzM4LDMwIEBAIGNsYXNzIEluZGV4Q29uc3RyYWludEdl dFRlc3RDYXNlKEJhc2VUZXN0R2VuZXJhdG9yKToKICAgICAgICAgICAgICAgdHlwZT0iVU5JUVVF IikpCiAgICAgXQogCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHNldFVwQ2xhc3MoY2xzKToK LSAgICAgICAgY2xzLmRiX25hbWUgPSBwYXJlbnRfbm9kZV9kaWN0WyJkYXRhYmFzZSJdWy0xXVsi ZGJfbmFtZSJdCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLmRiX25hbWUgPSBw YXJlbnRfbm9kZV9kaWN0WyJkYXRhYmFzZSJdWy0xXVsiZGJfbmFtZSJdCiAgICAgICAgIHNjaGVt YV9pbmZvID0gcGFyZW50X25vZGVfZGljdFsic2NoZW1hIl1bLTFdCi0gICAgICAgIGNscy5zZXJ2 ZXJfaWQgPSBzY2hlbWFfaW5mb1sic2VydmVyX2lkIl0KLSAgICAgICAgY2xzLmRiX2lkID0gc2No ZW1hX2luZm9bImRiX2lkIl0KLSAgICAgICAgZGJfY29uID0gZGF0YWJhc2VfdXRpbHMuY29ubmVj dF9kYXRhYmFzZShjbHMsIHV0aWxzLlNFUlZFUl9HUk9VUCwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbHMuc2VydmVyX2lkLCBjbHMuZGJfaWQpCisg ICAgICAgIHNlbGYuc2VydmVyX2lkID0gc2NoZW1hX2luZm9bInNlcnZlcl9pZCJdCisgICAgICAg IHNlbGYuZGJfaWQgPSBzY2hlbWFfaW5mb1siZGJfaWQiXQorICAgICAgICBkYl9jb24gPSBkYXRh YmFzZV91dGlscy5jb25uZWN0X2RhdGFiYXNlKHNlbGYsIHV0aWxzLlNFUlZFUl9HUk9VUCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNlcnZl cl9pZCwgc2VsZi5kYl9pZCkKICAgICAgICAgaWYgbm90IGRiX2NvblsnZGF0YSddWyJjb25uZWN0 ZWQiXToKICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiQ291bGQgbm90IGNvbm5lY3QgdG8g ZGF0YWJhc2UgdG8gYWRkIGEgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbmRleCBj b25zdHJhaW50KHByaW1hcnkga2V5IG9yIHVuaXF1ZSBrZXkpLiIpCi0gICAgICAgIGNscy5zY2hl bWFfaWQgPSBzY2hlbWFfaW5mb1sic2NoZW1hX2lkIl0KLSAgICAgICAgY2xzLnNjaGVtYV9uYW1l ID0gc2NoZW1hX2luZm9bInNjaGVtYV9uYW1lIl0KLSAgICAgICAgc2NoZW1hX3Jlc3BvbnNlID0g c2NoZW1hX3V0aWxzLnZlcmlmeV9zY2hlbWFzKGNscy5zZXJ2ZXIsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbHMuZGJfbmFtZSwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNscy5zY2hl bWFfbmFtZSkKKyAgICAgICAgc2VsZi5zY2hlbWFfaWQgPSBzY2hlbWFfaW5mb1sic2NoZW1hX2lk Il0KKyAgICAgICAgc2VsZi5zY2hlbWFfbmFtZSA9IHNjaGVtYV9pbmZvWyJzY2hlbWFfbmFtZSJd CisgICAgICAgIHNjaGVtYV9yZXNwb25zZSA9IHNjaGVtYV91dGlscy52ZXJpZnlfc2NoZW1hcyhz ZWxmLnNlcnZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHNlbGYuZGJfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2NoZW1hX25hbWUpCiAgICAgICAgIGlmIG5vdCBz Y2hlbWFfcmVzcG9uc2U6CiAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIkNvdWxkIG5vdCBm aW5kIHRoZSBzY2hlbWEgdG8gYWRkIGEgaW5kZXggIgogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICJjb25zdHJhaW50KHByaW1hcnkga2V5IG9yIHVuaXF1ZSBrZXkpLiIpCi0gICAgICAgIGNs cy50YWJsZV9uYW1lID0gInRhYmxlX2luZGV4Y29uc3RyYWludF8lcyIgJSBcCi0gICAgICAgICAg ICAgICAgICAgICAgICAgKHN0cih1dWlkLnV1aWQ0KCkpWzE6OF0pCi0gICAgICAgIGNscy50YWJs ZV9pZCA9IHRhYmxlc191dGlscy5jcmVhdGVfdGFibGUoY2xzLnNlcnZlciwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbHMuZGJfbmFtZSwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbHMuc2NoZW1hX25h bWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xz LnRhYmxlX25hbWUpCisgICAgICAgIHNlbGYudGFibGVfbmFtZSA9ICJ0YWJsZV9pbmRleGNvbnN0 cmFpbnRfJXMiICUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RyKHV1aWQudXVpZDQo KSlbMTo4XSkKKyAgICAgICAgc2VsZi50YWJsZV9pZCA9IHRhYmxlc191dGlscy5jcmVhdGVfdGFi bGUoc2VsZi5zZXJ2ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHNlbGYuZGJfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc2VsZi5zY2hlbWFfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi50YWJsZV9uYW1lKQogCiAgICAgZGVm IHJ1blRlc3Qoc2VsZik6CiAgICAgICAgICIiIlRoaXMgZnVuY3Rpb24gd2lsbCBmZXRjaCB0aGUg aW5kZXggY29uc3RyYWludChwcmltYXJ5IGtleSBvcgpAQCAtODEsNyArODAsNiBAQCBjbGFzcyBJ bmRleENvbnN0cmFpbnRHZXRUZXN0Q2FzZShCYXNlVGVzdEdlbmVyYXRvcik6CiAgICAgICAgICkK ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkKIAot ICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6CisgICAgZGVmIHRl YXJEb3duKHNlbGYpOgogICAgICAgICAjIERpc2Nvbm5lY3QgdGhlIGRhdGFiYXNlCi0gICAgICAg IGRhdGFiYXNlX3V0aWxzLmRpc2Nvbm5lY3RfZGF0YWJhc2UoY2xzLCBjbHMuc2VydmVyX2lkLCBj bHMuZGJfaWQpCisgICAgICAgIGRhdGFiYXNlX3V0aWxzLmRpc2Nvbm5lY3RfZGF0YWJhc2Uoc2Vs Ziwgc2VsZi5zZXJ2ZXJfaWQsIHNlbGYuZGJfaWQpCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29u c3RyYWludHMvaW5kZXhfY29uc3RyYWludC90ZXN0cy90ZXN0X2luZGV4X2NvbnN0cmFpbnRfcHV0 LnB5IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvdGFibGVzL2NvbnN0cmFpbnRzL2luZGV4X2NvbnN0cmFpbnQvdGVzdHMvdGVzdF9p bmRleF9jb25zdHJhaW50X3B1dC5weQppbmRleCA4NzI4OWE2Li42YmRmNzAzIDEwMDY0NAotLS0g YS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy90YWJsZXMvY29uc3RyYWludHMvaW5kZXhfY29uc3RyYWludC90ZXN0cy90ZXN0X2luZGV4 X2NvbnN0cmFpbnRfcHV0LnB5CisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9jb25zdHJhaW50cy9pbmRleF9jb25z dHJhaW50L3Rlc3RzL3Rlc3RfaW5kZXhfY29uc3RyYWludF9wdXQucHkKQEAgLTQwLDMxICs0MCwz MCBAQCBjbGFzcyBJbmRleENvbnN0cmFpbnRVcGRhdGVUZXN0Q2FzZShCYXNlVGVzdEdlbmVyYXRv cik6CiAgICAgICAgICAgICAgIHR5cGU9IlVOSVFVRSIsIGRhdGE9ZGF0YSkpCiAgICAgXQogCi0g ICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKLSAgICAgICAgY2xzLmRi X25hbWUgPSBwYXJlbnRfbm9kZV9kaWN0WyJkYXRhYmFzZSJdWy0xXVsiZGJfbmFtZSJdCisgICAg ZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLmRiX25hbWUgPSBwYXJlbnRfbm9kZV9kaWN0 WyJkYXRhYmFzZSJdWy0xXVsiZGJfbmFtZSJdCiAgICAgICAgIHNjaGVtYV9pbmZvID0gcGFyZW50 X25vZGVfZGljdFsic2NoZW1hIl1bLTFdCi0gICAgICAgIGNscy5zZXJ2ZXJfaWQgPSBzY2hlbWFf aW5mb1sic2VydmVyX2lkIl0KLSAgICAgICAgY2xzLmRiX2lkID0gc2NoZW1hX2luZm9bImRiX2lk Il0KLSAgICAgICAgZGJfY29uID0gZGF0YWJhc2VfdXRpbHMuY29ubmVjdF9kYXRhYmFzZShjbHMs IHV0aWxzLlNFUlZFUl9HUk9VUCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjbHMuc2VydmVyX2lkLCBjbHMuZGJfaWQpCisgICAgICAgIHNlbGYuc2Vy dmVyX2lkID0gc2NoZW1hX2luZm9bInNlcnZlcl9pZCJdCisgICAgICAgIHNlbGYuZGJfaWQgPSBz Y2hlbWFfaW5mb1siZGJfaWQiXQorICAgICAgICBkYl9jb24gPSBkYXRhYmFzZV91dGlscy5jb25u ZWN0X2RhdGFiYXNlKHNlbGYsIHV0aWxzLlNFUlZFUl9HUk9VUCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlcl9pZCwgc2VsZi5kYl9p ZCkKICAgICAgICAgaWYgbm90IGRiX2NvblsnZGF0YSddWyJjb25uZWN0ZWQiXToKICAgICAgICAg ICAgIHJhaXNlIEV4Y2VwdGlvbigiQ291bGQgbm90IGNvbm5lY3QgdG8gZGF0YWJhc2UgdG8gYWRk IGEgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbmRleCBjb25zdHJhaW50KHByaW1h cnkga2V5IG9yIHVuaXF1ZSBrZXkpLiIpCi0gICAgICAgIGNscy5zY2hlbWFfaWQgPSBzY2hlbWFf aW5mb1sic2NoZW1hX2lkIl0KLSAgICAgICAgY2xzLnNjaGVtYV9uYW1lID0gc2NoZW1hX2luZm9b InNjaGVtYV9uYW1lIl0KLSAgICAgICAgc2NoZW1hX3Jlc3BvbnNlID0gc2NoZW1hX3V0aWxzLnZl cmlmeV9zY2hlbWFzKGNscy5zZXJ2ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjbHMuZGJfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNscy5zY2hlbWFfbmFtZSkKKyAgICAg ICAgc2VsZi5zY2hlbWFfaWQgPSBzY2hlbWFfaW5mb1sic2NoZW1hX2lkIl0KKyAgICAgICAgc2Vs Zi5zY2hlbWFfbmFtZSA9IHNjaGVtYV9pbmZvWyJzY2hlbWFfbmFtZSJdCisgICAgICAgIHNjaGVt YV9yZXNwb25zZSA9IHNjaGVtYV91dGlscy52ZXJpZnlfc2NoZW1hcyhzZWxmLnNlcnZlciwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYu ZGJfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHNlbGYuc2NoZW1hX25hbWUpCiAgICAgICAgIGlmIG5vdCBzY2hlbWFfcmVzcG9uc2U6 CiAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIkNvdWxkIG5vdCBmaW5kIHRoZSBzY2hlbWEg dG8gYWRkIGEgaW5kZXggIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb25zdHJhaW50 KHByaW1hcnkga2V5IG9yIHVuaXF1ZSBrZXkpLiIpCi0gICAgICAgIGNscy50YWJsZV9uYW1lID0g InRhYmxlX2luZGV4Y29uc3RyYWludF8lcyIgJSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAg KHN0cih1dWlkLnV1aWQ0KCkpWzE6OF0pCi0gICAgICAgIGNscy50YWJsZV9pZCA9IHRhYmxlc191 dGlscy5jcmVhdGVfdGFibGUoY2xzLnNlcnZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjbHMuZGJfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbHMuc2NoZW1hX25hbWUsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xzLnRhYmxlX25hbWUpCisg ICAgICAgIHNlbGYudGFibGVfbmFtZSA9ICJ0YWJsZV9pbmRleGNvbnN0cmFpbnRfJXMiICUgXAor ICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RyKHV1aWQudXVpZDQoKSlbMTo4XSkKKyAgICAg ICAgc2VsZi50YWJsZV9pZCA9IHRhYmxlc191dGlscy5jcmVhdGVfdGFibGUoc2VsZi5zZXJ2ZXIs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYu ZGJfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc2VsZi5zY2hlbWFfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2VsZi50YWJsZV9uYW1lKQogCiAgICAgZGVmIHJ1blRlc3Qoc2VsZik6 CiAgICAgICAgICIiIlRoaXMgZnVuY3Rpb24gd2lsbCB1cGRhdGUgaW5kZXggY29uc3RyYWludChw cmltYXJ5IGtleSBvcgpAQCAtODQsNyArODMsNiBAQCBjbGFzcyBJbmRleENvbnN0cmFpbnRVcGRh dGVUZXN0Q2FzZShCYXNlVGVzdEdlbmVyYXRvcik6CiAgICAgICAgICAgICBmb2xsb3dfcmVkaXJl Y3RzPVRydWUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHJlc3BvbnNlLnN0YXR1c19jb2Rl LCAyMDApCiAKLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgor ICAgIGRlZiB0ZWFyRG93bihzZWxmKToKICAgICAgICAgIyBEaXNjb25uZWN0IHRoZSBkYXRhYmFz ZQotICAgICAgICBkYXRhYmFzZV91dGlscy5kaXNjb25uZWN0X2RhdGFiYXNlKGNscywgY2xzLnNl cnZlcl9pZCwgY2xzLmRiX2lkKQorICAgICAgICBkYXRhYmFzZV91dGlscy5kaXNjb25uZWN0X2Rh dGFiYXNlKHNlbGYsIHNlbGYuc2VydmVyX2lkLCBzZWxmLmRiX2lkKQpkaWZmIC0tZ2l0IGEvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv dGFibGVzL3Rlc3RzL3Rlc3RfdGFibGVfcGFyYW1ldGVycy5weSBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZXN0cy90 ZXN0X3RhYmxlX3BhcmFtZXRlcnMucHkKaW5kZXggYmJlZDI2OS4uMDIyMDNkMiAxMDA2NDQKLS0t IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvdGFibGVzL3Rlc3RzL3Rlc3RfdGFibGVfcGFyYW1ldGVycy5weQorKysgYi93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJs ZXMvdGVzdHMvdGVzdF90YWJsZV9wYXJhbWV0ZXJzLnB5CkBAIC00Niw4ICs0Niw5IEBAIGNsYXNz IFRhYmxlVXBkYXRlUGFyYW1ldGVyVGVzdENhc2UoQmFzZVRlc3RHZW5lcmF0b3IpOgogICAgICAg ICAgKQogICAgIF0KIAotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBzZXRVcENsYXNzKHNlbGYp OgorICAgIHRhYmxlX25hbWUgPSAidGVzdF90YWJsZV9wYXJhbWV0ZXJzXyVzIiAlIChzdHIodXVp ZC51dWlkNCgpKVsxOjhdKQorCisgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBzZWxmLmRi X25hbWUgPSBwYXJlbnRfbm9kZV9kaWN0WyJkYXRhYmFzZSJdWy0xXVsiZGJfbmFtZSJdCiAgICAg ICAgIHNjaGVtYV9pbmZvID0gcGFyZW50X25vZGVfZGljdFsic2NoZW1hIl1bLTFdCiAgICAgICAg IHNlbGYuc2VydmVyX2lkID0gc2NoZW1hX2luZm9bInNlcnZlcl9pZCJdCkBAIC02MywxMiArNjQs MTQgQEAgY2xhc3MgVGFibGVVcGRhdGVQYXJhbWV0ZXJUZXN0Q2FzZShCYXNlVGVzdEdlbmVyYXRv cik6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzZWxmLnNjaGVtYV9uYW1lKQogICAgICAgICBpZiBub3Qgc2NoZW1hX3Jlc3BvbnNlOgogICAg ICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJDb3VsZCBub3QgZmluZCB0aGUgc2NoZW1hIHRvIGFk ZCBhIHRhYmxlLiIpCi0gICAgICAgIHNlbGYudGFibGVfbmFtZSA9ICJ0ZXN0X3RhYmxlX3BhcmFt ZXRlcnNfJXMiICUgKHN0cih1dWlkLnV1aWQ0KCkpWzE6OF0pCiAKLSAgICAgICAgc2VsZi50YWJs ZV9pZCA9IHRhYmxlc191dGlscy5jcmVhdGVfdGFibGUoCi0gICAgICAgICAgICBzZWxmLnNlcnZl ciwgc2VsZi5kYl9uYW1lLAotICAgICAgICAgICAgc2VsZi5zY2hlbWFfbmFtZSwKLSAgICAgICAg ICAgIHNlbGYudGFibGVfbmFtZSkKKyAgICAgICAgc2VsZi50YWJsZV9pZCA9IHRhYmxlc191dGls cy5nZXRfdGFibGVfaWQoc2VsZi5zZXJ2ZXIsIHNlbGYuZGJfbmFtZSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi50YWJsZV9uYW1lKQorICAg ICAgICBpZiBzZWxmLnRhYmxlX2lkIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLnRhYmxlX2lk ID0gdGFibGVzX3V0aWxzLmNyZWF0ZV90YWJsZSgKKyAgICAgICAgICAgICAgICBzZWxmLnNlcnZl ciwgc2VsZi5kYl9uYW1lLAorICAgICAgICAgICAgICAgIHNlbGYuc2NoZW1hX25hbWUsCisgICAg ICAgICAgICAgICAgc2VsZi50YWJsZV9uYW1lKQogCiAgICAgZGVmIHJ1blRlc3Qoc2VsZik6CiAg ICAgICAgICIiIlRoaXMgZnVuY3Rpb24gd2lsbCBmZXRjaCBhZGRlZCB0YWJsZSB1bmRlciBzY2hl bWEgbm9kZS4iIiIKQEAgLTEzMCw3ICsxMzMsNiBAQCBjbGFzcyBUYWJsZVVwZGF0ZVBhcmFtZXRl clRlc3RDYXNlKEJhc2VUZXN0R2VuZXJhdG9yKToKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZm9sbG93X3JlZGlyZWN0cz1UcnVlKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFs cyhyZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQogCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVm IHRlYXJEb3duQ2xhc3Moc2VsZik6CisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgogICAgICAgICAj IERpc2Nvbm5lY3QgdGhlIGRhdGFiYXNlCiAgICAgICAgIGRhdGFiYXNlX3V0aWxzLmRpc2Nvbm5l Y3RfZGF0YWJhc2Uoc2VsZiwgc2VsZi5zZXJ2ZXJfaWQsIHNlbGYuZGJfaWQpCmRpZmYgLS1naXQg YS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy90YWJsZXMvdGVzdHMvdXRpbHMucHkgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVzdHMvdXRpbHMucHkKaW5k ZXggMGEyOTYzYS4uOGU1ZjY2NSAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3Rlc3RzL3V0aWxzLnB5 CisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL3RhYmxlcy90ZXN0cy91dGlscy5weQpAQCAtNDgzLDMgKzQ4MywyNiBAQCBkZWYg Z2V0X2hhc2hfcGFydGl0aW9uc19kYXRhKGRhdGEpOgogICAgICAgICAgIH1dCiAgICAgZGF0YVsn cGFydGl0aW9uX2tleXMnXSA9IFwKICAgICAgICAgW3sna2V5X3R5cGUnOiAnY29sdW1uJywgJ3B0 X2NvbHVtbic6ICdlbXBubyd9XQorCisKK2RlZiBnZXRfdGFibGVfaWQoc2VydmVyLCBkYl9uYW1l LCB0YWJsZV9uYW1lKToKKyAgICB0cnk6CisgICAgICAgIGNvbm5lY3Rpb24gPSB1dGlscy5nZXRf ZGJfY29ubmVjdGlvbihkYl9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc2VydmVyWyd1c2VybmFtZSddLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc2VydmVyWydkYl9wYXNzd29yZCddLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyWydob3N0J10sCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJbJ3BvcnQnXSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlclsnc3NsbW9k ZSddKQorICAgICAgICBwZ19jdXJzb3IgPSBjb25uZWN0aW9uLmN1cnNvcigpCisgICAgICAgIHBn X2N1cnNvci5leGVjdXRlKCJzZWxlY3Qgb2lkIGZyb20gcGdfY2xhc3Mgd2hlcmUgcmVsbmFtZT0n JXMnIiAlCisgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlX25hbWUpCisgICAgICAgIHRh YmxlID0gcGdfY3Vyc29yLmZldGNob25lKCkKKyAgICAgICAgaWYgdGFibGU6CisgICAgICAgICAg ICB0YWJsZV9pZCA9IHRhYmxlWzBdCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB0YWJsZV9p ZCA9IE5vbmUKKyAgICAgICAgY29ubmVjdGlvbi5jbG9zZSgpCisgICAgICAgIHJldHVybiB0YWJs ZV9pZAorICAgIGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgIHRyYWNlYmFjay5wcmludF9leGMo ZmlsZT1zeXMuc3RkZXJyKQorICAgICAgICByYWlzZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdmlld3MvdGVz dHMvdGVzdF9tdmlld3NfcGFyYW1ldGVycy5weSBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3Rlc3RzL3Rlc3RfbXZpZXdz X3BhcmFtZXRlcnMucHkKaW5kZXggYzg0Mjc2ZS4uMWY2M2VmNSAxMDA2NDQKLS0tIGEvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdmll d3MvdGVzdHMvdGVzdF9tdmlld3NfcGFyYW1ldGVycy5weQorKysgYi93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy90ZXN0cy90 ZXN0X212aWV3c19wYXJhbWV0ZXJzLnB5CkBAIC00NSw4ICs0NSw5IEBAIGNsYXNzIE1WaWV3c1Vw ZGF0ZVBhcmFtZXRlclRlc3RDYXNlKEJhc2VUZXN0R2VuZXJhdG9yKToKICAgICAgICAgICkKICAg ICBdCiAKLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgc2V0VXBDbGFzcyhzZWxmKToKKyAgICBt X3ZpZXdfbmFtZSA9ICJ0ZXN0X212aWV3X3B1dF8lcyIgJSAoc3RyKHV1aWQudXVpZDQoKSlbMTo4 XSkKKworICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgc2VsZi5kYl9uYW1lID0gcGFyZW50 X25vZGVfZGljdFsiZGF0YWJhc2UiXVstMV1bImRiX25hbWUiXQogICAgICAgICBzY2hlbWFfaW5m byA9IHBhcmVudF9ub2RlX2RpY3RbInNjaGVtYSJdWy0xXQogICAgICAgICBzZWxmLnNlcnZlcl9p ZCA9IHNjaGVtYV9pbmZvWyJzZXJ2ZXJfaWQiXQpAQCAtNzAsMTcgKzcxLDE5IEBAIGNsYXNzIE1W aWV3c1VwZGF0ZVBhcmFtZXRlclRlc3RDYXNlKEJhc2VUZXN0R2VuZXJhdG9yKToKICAgICAgICAg aWYgbm90IHNjaGVtYV9yZXNwb25zZToKICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiQ291 bGQgbm90IGZpbmQgdGhlIHNjaGVtYSB0byB1cGRhdGUgYSBtdmlldy4iKQogCi0gICAgICAgIHNl bGYubV92aWV3X25hbWUgPSAidGVzdF9tdmlld19wdXRfJXMiICUgKHN0cih1dWlkLnV1aWQ0KCkp WzE6OF0pCi0gICAgICAgIG1fdmlld19zcWwgPSAiQ1JFQVRFIE1BVEVSSUFMSVpFRCBWSUVXICVz LiVzIFRBQkxFU1BBQ0UgcGdfZGVmYXVsdCAiIFwKLSAgICAgICAgICAgICAgICAgICAgICJBUyBT RUxFQ1QgJ3Rlc3RfcGdhZG1pbicgV0lUSCBOTyBEQVRBO0FMVEVSIFRBQkxFICIgXAotICAgICAg ICAgICAgICAgICAgICAgIiVzLiVzIE9XTkVSIFRPICVzIgotCi0gICAgICAgIHNlbGYubV92aWV3 X2lkID0gdmlld3NfdXRpbHMuY3JlYXRlX3ZpZXcoc2VsZi5zZXJ2ZXIsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kYl9uYW1lLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2NoZW1hX25h bWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV92 aWV3X3NxbCwKKyAgICAgICAgc2VsZi5tX3ZpZXdfaWQgPSB2aWV3c191dGlscy5nZXRfdmlld19p ZChzZWxmLnNlcnZlciwgc2VsZi5kYl9uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHNlbGYubV92aWV3X25hbWUpCiAKKyAgICAgICAgaWYgc2Vs Zi5tX3ZpZXdfaWQgaXMgTm9uZToKKyAgICAgICAgICAgIG1fdmlld19zcWwgPSAiQ1JFQVRFIE1B VEVSSUFMSVpFRCBWSUVXICVzLiVzIFRBQkxFU1BBQ0UgIiBcCisgICAgICAgICAgICAgICAgICAg ICAgICAgInBnX2RlZmF1bHQgQVMgU0VMRUNUICd0ZXN0X3BnYWRtaW4nIFdJVEggTk8gIiBcCisg ICAgICAgICAgICAgICAgICAgICAgICAgIkRBVEE7QUxURVIgVEFCTEUgJXMuJXMgT1dORVIgVE8g JXMiCisgICAgICAgICAgICBzZWxmLm1fdmlld19pZCA9IHZpZXdzX3V0aWxzLmNyZWF0ZV92aWV3 KHNlbGYuc2VydmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzZWxmLmRiX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2NoZW1hX25hbWUsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdmlld19zcWwsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubV92aWV3 X25hbWUpCisKICAgICBkZWYgcnVuVGVzdChzZWxmKToKICAgICAgICAgIiIiVGhpcyBmdW5jdGlv biB3aWxsIHVwZGF0ZSB0aGUgdmlldy9tdmlldyB1bmRlciBzY2hlbWEgbm9kZS4iIiIKICAgICAg ICAgbXZpZXdfcmVzcG9uc2UgPSB2aWV3c191dGlscy52ZXJpZnlfdmlldyhzZWxmLnNlcnZlciwg c2VsZi5kYl9uYW1lLApAQCAtMTQxLDcgKzE0NCw2IEBAIGNsYXNzIE1WaWV3c1VwZGF0ZVBhcmFt ZXRlclRlc3RDYXNlKEJhc2VUZXN0R2VuZXJhdG9yKToKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZm9sbG93X3JlZGlyZWN0cz1UcnVlKQogICAgICAgICBzZWxmLmFzc2VydEVx dWFscyhyZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQogCi0gICAgQGNsYXNzbWV0aG9kCi0gICAg ZGVmIHRlYXJEb3duQ2xhc3Moc2VsZik6CisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgogICAgICAg ICAjIERpc2Nvbm5lY3QgdGhlIGRhdGFiYXNlCiAgICAgICAgIGRhdGFiYXNlX3V0aWxzLmRpc2Nv bm5lY3RfZGF0YWJhc2Uoc2VsZiwgc2VsZi5zZXJ2ZXJfaWQsIHNlbGYuZGJfaWQpCmRpZmYgLS1n aXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy92aWV3cy90ZXN0cy90ZXN0X212aWV3c19yZWZyZXNoLnB5IGIvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdmlld3MvdGVz dHMvdGVzdF9tdmlld3NfcmVmcmVzaC5weQppbmRleCBiNmMwYmFkLi4zYjQwNTVmIDEwMDY0NAot LS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy92aWV3cy90ZXN0cy90ZXN0X212aWV3c19yZWZyZXNoLnB5CisrKyBiL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdz L3Rlc3RzL3Rlc3RfbXZpZXdzX3JlZnJlc2gucHkKQEAgLTQ4LDggKzQ4LDcgQEAgY2xhc3MgTVZp ZXdzVXBkYXRlUGFyYW1ldGVyVGVzdENhc2UoQmFzZVRlc3RHZW5lcmF0b3IpOgogICAgICAgICAg KSwKICAgICBdCiAKLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgc2V0VXBDbGFzcyhzZWxmKToK KyAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHNlbGYuZGJfbmFtZSA9IHBhcmVudF9ub2Rl X2RpY3RbImRhdGFiYXNlIl1bLTFdWyJkYl9uYW1lIl0KICAgICAgICAgc2NoZW1hX2luZm8gPSBw YXJlbnRfbm9kZV9kaWN0WyJzY2hlbWEiXVstMV0KICAgICAgICAgc2VsZi5zZXJ2ZXJfaWQgPSBz Y2hlbWFfaW5mb1sic2VydmVyX2lkIl0KQEAgLTE0Myw3ICsxNDIsNiBAQCBjbGFzcyBNVmlld3NV cGRhdGVQYXJhbWV0ZXJUZXN0Q2FzZShCYXNlVGVzdEdlbmVyYXRvcik6CiAgICAgICAgICAgICAg ICAgIyBPbiBzdWNjZXNzIHdlIGdldCBqb2JfaWQgZnJvbSBzZXJ2ZXIKICAgICAgICAgICAgICAg ICBzZWxmLmFzc2VydFRydWUoJ2pvYl9pZCcgaW4gcmVzcG9uc2UuanNvblsnZGF0YSddKQogCi0g ICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHRlYXJEb3duQ2xhc3Moc2VsZik6CisgICAgZGVmIHRl YXJEb3duKHNlbGYpOgogICAgICAgICAjIERpc2Nvbm5lY3QgdGhlIGRhdGFiYXNlCiAgICAgICAg IGRhdGFiYXNlX3V0aWxzLmRpc2Nvbm5lY3RfZGF0YWJhc2Uoc2VsZiwgc2VsZi5zZXJ2ZXJfaWQs IHNlbGYuZGJfaWQpCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy90ZXN0cy91dGlscy5weSBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3Zp ZXdzL3Rlc3RzL3V0aWxzLnB5CmluZGV4IGQ2MTgwYzQuLjc2MTllZTYgMTAwNjQ0Ci0tLSBhL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L3ZpZXdzL3Rlc3RzL3V0aWxzLnB5CisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3Rlc3RzL3V0aWxzLnB5CkBAIC04 NiwzICs4NiwyOCBAQCBkZWYgdmVyaWZ5X3ZpZXcoc2VydmVyLCBkYl9uYW1lLCB2aWV3X25hbWUp OgogICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAgICAgIHRyYWNlYmFjay5wcmludF9leGMoZmls ZT1zeXMuc3RkZXJyKQogICAgICAgICByYWlzZQorCisKK2RlZiBnZXRfdmlld19pZChzZXJ2ZXIs IGRiX25hbWUsIHZpZXdfbmFtZSk6CisgICAgdHJ5OgorICAgICAgICBjb25uZWN0aW9uID0gdXRp bHMuZ2V0X2RiX2Nvbm5lY3Rpb24oZGJfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHNlcnZlclsndXNlcm5hbWUnXSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlclsnZGJfcGFzc3dvcmQnXSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlclsnaG9zdCddLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyWydwb3J0 J10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJb J3NzbG1vZGUnXSkKKyAgICAgICAgb2xkX2lzb2xhdGlvbl9sZXZlbCA9IGNvbm5lY3Rpb24uaXNv bGF0aW9uX2xldmVsCisgICAgICAgIGNvbm5lY3Rpb24uc2V0X2lzb2xhdGlvbl9sZXZlbCgwKQor ICAgICAgICBwZ19jdXJzb3IgPSBjb25uZWN0aW9uLmN1cnNvcigpCisgICAgICAgICMgR2V0ICdv aWQnIGZyb20gbmV3bHkgY3JlYXRlZCB2aWV3CisgICAgICAgIHBnX2N1cnNvci5leGVjdXRlKCJz ZWxlY3Qgb2lkIGZyb20gcGdfY2xhc3Mgd2hlcmUgcmVsbmFtZT0nJXMnIiAlCisgICAgICAgICAg ICAgICAgICAgICAgICAgIHZpZXdfbmFtZSkKKyAgICAgICAgdmlldyA9IHBnX2N1cnNvci5mZXRj aG9uZSgpCisgICAgICAgIHZpZXdfaWQgPSBOb25lCisgICAgICAgIGlmIHZpZXc6CisgICAgICAg ICAgICB2aWV3X2lkID0gdmlld1swXQorICAgICAgICBjb25uZWN0aW9uLmNsb3NlKCkKKyAgICAg ICAgcmV0dXJuIHZpZXdfaWQKKyAgICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAgICB0cmFjZWJh Y2sucHJpbnRfZXhjKGZpbGU9c3lzLnN0ZGVycikKKyAgICAgICAgcmFpc2UKZGlmZiAtLWdpdCBh L3dlYi9wZ2FkbWluL2ZlYXR1cmVfdGVzdHMvY29weV9zZWxlY3RlZF9xdWVyeV9yZXN1bHRzX2Zl YXR1cmVfdGVzdC5weSBiL3dlYi9wZ2FkbWluL2ZlYXR1cmVfdGVzdHMvY29weV9zZWxlY3RlZF9x dWVyeV9yZXN1bHRzX2ZlYXR1cmVfdGVzdC5weQppbmRleCA3MDkxZmZhLi4xZjNiZDY1IDEwMDY0 NAotLS0gYS93ZWIvcGdhZG1pbi9mZWF0dXJlX3Rlc3RzL2NvcHlfc2VsZWN0ZWRfcXVlcnlfcmVz dWx0c19mZWF0dXJlX3Rlc3QucHkKKysrIGIvd2ViL3BnYWRtaW4vZmVhdHVyZV90ZXN0cy9jb3B5 X3NlbGVjdGVkX3F1ZXJ5X3Jlc3VsdHNfZmVhdHVyZV90ZXN0LnB5CkBAIC04LDcgKzgsNiBAQAog IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMKIAogZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBwcmludF9mdW5jdGlv bgotaW1wb3J0IHB5cGVyY2xpcAogaW1wb3J0IHJhbmRvbQogCiBmcm9tIHNlbGVuaXVtLndlYmRy aXZlciBpbXBvcnQgQWN0aW9uQ2hhaW5zCkBAIC02MCw4ICs1OSwxOCBAQCBjbGFzcyBDb3B5U2Vs ZWN0ZWRRdWVyeVJlc3VsdHNGZWF0dXJlVGVzdChCYXNlRmVhdHVyZVRlc3QpOgogICAgICAgICBz ZWxmLl9tb3VzZXVwX291dHNpZGVfZ3JpZF9zdGlsbF9tYWtlc19hX3NlbGVjdGlvbigpCiAgICAg ICAgIHNlbGYuX2NvcGllc19yb3dzX3dpdGhfaGVhZGVyKCkKIAorICAgIGRlZiBwYXN0ZV92YWx1 ZXNfdG9fc2NyYXRjaF9wYWQoc2VsZik6CisgICAgICAgIHNlbGYucGFnZS5kcml2ZXIuc3dpdGNo X3RvLmRlZmF1bHRfY29udGVudCgpCisgICAgICAgIHNlbGYucGFnZS5kcml2ZXIuc3dpdGNoX3Rv X2ZyYW1lKAorICAgICAgICAgICAgc2VsZi5wYWdlLmRyaXZlci5maW5kX2VsZW1lbnRfYnlfdGFn X25hbWUoImlmcmFtZSIpKQorICAgICAgICBzY3JhdGNoX3BhZF9lbGUgPSBzZWxmLnBhZ2UuZmlu ZF9ieV9jc3Nfc2VsZWN0b3IoCisgICAgICAgICAgICBRdWVyeVRvb2xMb2NhdG9ycy5zY3JhdGNo X3BhZF9jc3MpCisgICAgICAgIHNlbGYucGFnZS5wYXN0ZV92YWx1ZXMoc2NyYXRjaF9wYWRfZWxl KQorICAgICAgICBjbGlwYm9hcmRfdGV4dCA9IHNjcmF0Y2hfcGFkX2VsZS5nZXRfYXR0cmlidXRl KCJ2YWx1ZSIpCisgICAgICAgIHNjcmF0Y2hfcGFkX2VsZS5jbGVhcigpCisgICAgICAgIHJldHVy biBjbGlwYm9hcmRfdGV4dAorCiAgICAgZGVmIF9jb3BpZXNfcm93cyhzZWxmKToKLSAgICAgICAg cHlwZXJjbGlwLmNvcHkoIm9sZCBjbGlwYm9hcmQgY29udGVudHMiKQogICAgICAgICBmaXJzdF9y b3cgPSBzZWxmLnBhZ2UuZmluZF9ieV94cGF0aCgKICAgICAgICAgICAgIFF1ZXJ5VG9vbExvY2F0 b3JzLm91dHB1dF9yb3dfeHBhdGguZm9ybWF0KDEpKQogICAgICAgICBmaXJzdF9yb3cuY2xpY2so KQpAQCAtNzAsMTQgKzc5LDE0IEBAIGNsYXNzIENvcHlTZWxlY3RlZFF1ZXJ5UmVzdWx0c0ZlYXR1 cmVUZXN0KEJhc2VGZWF0dXJlVGVzdCk6CiAgICAgICAgICAgICBRdWVyeVRvb2xMb2NhdG9ycy5j b3B5X2J1dHRvbl9jc3MpCiAgICAgICAgIGNvcHlfYnV0dG9uLmNsaWNrKCkKIAorICAgICAgICBj bGlwYm9hcmRfdGV4dCA9IHNlbGYucGFzdGVfdmFsdWVzX3RvX3NjcmF0Y2hfcGFkKCkKICAgICAg ICAgc2VsZi5hc3NlcnRFcXVhbCgnIlNvbWUtTmFtZSJcdDZcdCJzb21lIGluZm8iJywKLSAgICAg ICAgICAgICAgICAgICAgICAgICBweXBlcmNsaXAucGFzdGUoKSkKKyAgICAgICAgICAgICAgICAg ICAgICAgICBjbGlwYm9hcmRfdGV4dCkKIAogICAgIGRlZiBfY29waWVzX3Jvd3Nfd2l0aF9oZWFk ZXIoc2VsZik6CiAgICAgICAgIHNlbGYucGFnZS5maW5kX2J5X2Nzc19zZWxlY3RvcignI2J0bi1j b3B5LXJvdy1kcm9wZG93bicpLmNsaWNrKCkKICAgICAgICAgc2VsZi5wYWdlLmZpbmRfYnlfY3Nz X3NlbGVjdG9yKCdhI2J0bi1jb3B5LXdpdGgtaGVhZGVyJykuY2xpY2soKQogCi0gICAgICAgIHB5 cGVyY2xpcC5jb3B5KCJvbGQgY2xpcGJvYXJkIGNvbnRlbnRzIikKICAgICAgICAgc2VsZWN0X2Fs bCA9IHNlbGYucGFnZS5maW5kX2J5X3hwYXRoKAogICAgICAgICAgICAgUXVlcnlUb29sTG9jYXRv cnMuc2VsZWN0X2FsbF9jb2x1bW4pCiAgICAgICAgIHNlbGVjdF9hbGwuY2xpY2soKQpAQCAtODYs MTMgKzk1LDE0IEBAIGNsYXNzIENvcHlTZWxlY3RlZFF1ZXJ5UmVzdWx0c0ZlYXR1cmVUZXN0KEJh c2VGZWF0dXJlVGVzdCk6CiAgICAgICAgICAgICBRdWVyeVRvb2xMb2NhdG9ycy5jb3B5X2J1dHRv bl9jc3MpCiAgICAgICAgIGNvcHlfYnV0dG9uLmNsaWNrKCkKIAorICAgICAgICBjbGlwYm9hcmRf dGV4dCA9IHNlbGYucGFzdGVfdmFsdWVzX3RvX3NjcmF0Y2hfcGFkKCkKKwogICAgICAgICBzZWxm LmFzc2VydEVxdWFsKCIiIlwic29tZV9jb2x1bW4iXHQidmFsdWUiXHQiZGV0YWlscyIKIFwiU29t ZS1OYW1lIlx0Nlx0InNvbWUgaW5mbyIKIFwiU29tZS1PdGhlci1OYW1lIlx0MjJcdCJzb21lIG90 aGVyIGluZm8iCi1cIllldC1Bbm90aGVyLU5hbWUiXHQxNFx0ImNvb2wgaW5mb1wiIiIiLCBweXBl cmNsaXAucGFzdGUoKSkKK1wiWWV0LUFub3RoZXItTmFtZSJcdDE0XHQiY29vbCBpbmZvXCIiIiIs IGNsaXBib2FyZF90ZXh0KQogCiAgICAgZGVmIF9jb3BpZXNfY29sdW1ucyhzZWxmKToKLSAgICAg ICAgcHlwZXJjbGlwLmNvcHkoIm9sZCBjbGlwYm9hcmQgY29udGVudHMiKQogICAgICAgICBjb2x1 bW4gPSBzZWxmLnBhZ2UuZmluZF9ieV9jc3Nfc2VsZWN0b3IoCiAgICAgICAgICAgICBRdWVyeVRv b2xMb2NhdG9ycy5vdXRwdXRfY29sdW1uX2hlYWRlcl9jc3MuZm9ybWF0KCdzb21lX2NvbHVtbicp KQogICAgICAgICBjb2x1bW4uY2xpY2soKQpAQCAtMTAxLDE0ICsxMTEsMTUgQEAgY2xhc3MgQ29w eVNlbGVjdGVkUXVlcnlSZXN1bHRzRmVhdHVyZVRlc3QoQmFzZUZlYXR1cmVUZXN0KToKICAgICAg ICAgICAgIFF1ZXJ5VG9vbExvY2F0b3JzLmNvcHlfYnV0dG9uX2NzcykKICAgICAgICAgY29weV9i dXR0b24uY2xpY2soKQogCisgICAgICAgIGNsaXBib2FyZF90ZXh0ID0gc2VsZi5wYXN0ZV92YWx1 ZXNfdG9fc2NyYXRjaF9wYWQoKQorCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCiAgICAgICAg ICAgICAiIiJcIlNvbWUtTmFtZSIKICJTb21lLU90aGVyLU5hbWUiCiAiWWV0LUFub3RoZXItTmFt ZVwiIiIiLAotICAgICAgICAgICAgcHlwZXJjbGlwLnBhc3RlKCkpCisgICAgICAgICAgICBjbGlw Ym9hcmRfdGV4dCkKIAogICAgIGRlZiBfY29waWVzX3Jvd191c2luZ19rZXlib2FyZF9zaG9ydGN1 dChzZWxmKToKLSAgICAgICAgcHlwZXJjbGlwLmNvcHkoIm9sZCBjbGlwYm9hcmQgY29udGVudHMi KQogICAgICAgICBmaXJzdF9yb3cgPSBzZWxmLnBhZ2UuZmluZF9ieV94cGF0aCgKICAgICAgICAg ICAgIFF1ZXJ5VG9vbExvY2F0b3JzLm91dHB1dF9yb3dfeHBhdGguZm9ybWF0KDEpKQogICAgICAg ICBmaXJzdF9yb3cuY2xpY2soKQpAQCAtMTE2LDExICsxMjcsMTIgQEAgY2xhc3MgQ29weVNlbGVj dGVkUXVlcnlSZXN1bHRzRmVhdHVyZVRlc3QoQmFzZUZlYXR1cmVUZXN0KToKICAgICAgICAgQWN0 aW9uQ2hhaW5zKHNlbGYucGFnZS5kcml2ZXIpLmtleV9kb3duKAogICAgICAgICAgICAgS2V5cy5D T05UUk9MKS5zZW5kX2tleXMoJ2MnKS5rZXlfdXAoS2V5cy5DT05UUk9MKS5wZXJmb3JtKCkKIAor ICAgICAgICBjbGlwYm9hcmRfdGV4dCA9IHNlbGYucGFzdGVfdmFsdWVzX3RvX3NjcmF0Y2hfcGFk KCkKKwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCciU29tZS1OYW1lIlx0Nlx0InNvbWUgaW5m byInLAotICAgICAgICAgICAgICAgICAgICAgICAgIHB5cGVyY2xpcC5wYXN0ZSgpKQorICAgICAg ICAgICAgICAgICAgICAgICAgIGNsaXBib2FyZF90ZXh0KQogCiAgICAgZGVmIF9jb3BpZXNfY29s dW1uX3VzaW5nX2tleWJvYXJkX3Nob3J0Y3V0KHNlbGYpOgotICAgICAgICBweXBlcmNsaXAuY29w eSgib2xkIGNsaXBib2FyZCBjb250ZW50cyIpCiAgICAgICAgIGNvbHVtbiA9IHNlbGYucGFnZS5m aW5kX2J5X2Nzc19zZWxlY3RvcigKICAgICAgICAgICAgIFF1ZXJ5VG9vbExvY2F0b3JzLm91dHB1 dF9jb2x1bW5faGVhZGVyX2Nzcy5mb3JtYXQoJ3NvbWVfY29sdW1uJykpCiAgICAgICAgIGNvbHVt bi5jbGljaygpCkBAIC0xMjgsMTUgKzE0MCwxNSBAQCBjbGFzcyBDb3B5U2VsZWN0ZWRRdWVyeVJl c3VsdHNGZWF0dXJlVGVzdChCYXNlRmVhdHVyZVRlc3QpOgogICAgICAgICBBY3Rpb25DaGFpbnMo c2VsZi5wYWdlLmRyaXZlcikua2V5X2Rvd24oCiAgICAgICAgICAgICBLZXlzLkNPTlRST0wpLnNl bmRfa2V5cygnYycpLmtleV91cChLZXlzLkNPTlRST0wpLnBlcmZvcm0oKQogCisgICAgICAgIGNs aXBib2FyZF90ZXh0ID0gc2VsZi5wYXN0ZV92YWx1ZXNfdG9fc2NyYXRjaF9wYWQoKQorCiAgICAg ICAgIHNlbGYuYXNzZXJ0RXF1YWwoCiAgICAgICAgICAgICAiIiJcIlNvbWUtTmFtZSIKICJTb21l LU90aGVyLU5hbWUiCiAiWWV0LUFub3RoZXItTmFtZVwiIiIiLAotICAgICAgICAgICAgcHlwZXJj bGlwLnBhc3RlKCkpCisgICAgICAgICAgICBjbGlwYm9hcmRfdGV4dCkKIAogICAgIGRlZiBfY29w aWVzX3JlY3Rhbmd1bGFyX3NlbGVjdGlvbihzZWxmKToKLSAgICAgICAgcHlwZXJjbGlwLmNvcHko Im9sZCBjbGlwYm9hcmQgY29udGVudHMiKQotCiAgICAgICAgIHRvcF9sZWZ0X2NlbGwgPSBcCiAg ICAgICAgICAgICBzZWxmLnBhZ2UuZmluZF9ieV94cGF0aCgKICAgICAgICAgICAgICAgICBRdWVy eVRvb2xMb2NhdG9ycy5vdXRwdXRfY29sdW1uX2RhdGFfeHBhdGguCkBAIC0xNTQsMTIgKzE2Niwx MiBAQCBjbGFzcyBDb3B5U2VsZWN0ZWRRdWVyeVJlc3VsdHNGZWF0dXJlVGVzdChCYXNlRmVhdHVy ZVRlc3QpOgogICAgICAgICAgICAgc2VsZi5wYWdlLmRyaXZlcgogICAgICAgICApLmtleV9kb3du KEtleXMuQ09OVFJPTCkuc2VuZF9rZXlzKCdjJykua2V5X3VwKEtleXMuQ09OVFJPTCkucGVyZm9y bSgpCiAKKyAgICAgICAgY2xpcGJvYXJkX3RleHQgPSBzZWxmLnBhc3RlX3ZhbHVlc190b19zY3Jh dGNoX3BhZCgpCisKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgICciU29t ZS1PdGhlci1OYW1lIlx0MjJcbiJZZXQtQW5vdGhlci1OYW1lIlx0MTQnLCBweXBlcmNsaXAucGFz dGUoKSkKKyAgICAgICAgICAgICciU29tZS1PdGhlci1OYW1lIlx0MjJcbiJZZXQtQW5vdGhlci1O YW1lIlx0MTQnLCBjbGlwYm9hcmRfdGV4dCkKIAogICAgIGRlZiBfc2hpZnRfcmVzaXplc19yZWN0 YW5ndWxhcl9zZWxlY3Rpb24oc2VsZik6Ci0gICAgICAgIHB5cGVyY2xpcC5jb3B5KCJvbGQgY2xp cGJvYXJkIGNvbnRlbnRzIikKLQogICAgICAgICB0b3BfbGVmdF9jZWxsID0gc2VsZi5wYWdlLmZp bmRfYnlfeHBhdGgoCiAgICAgICAgICAgICBRdWVyeVRvb2xMb2NhdG9ycy5vdXRwdXRfY29sdW1u X2RhdGFfeHBhdGguCiAgICAgICAgICAgICBmb3JtYXQoJ1NvbWUtT3RoZXItTmFtZScpCkBAIC0x ODAsMTIgKzE5MiwxMiBAQCBjbGFzcyBDb3B5U2VsZWN0ZWRRdWVyeVJlc3VsdHNGZWF0dXJlVGVz dChCYXNlRmVhdHVyZVRlc3QpOgogICAgICAgICAgICAgS2V5cy5DT05UUk9MCiAgICAgICAgICku c2VuZF9rZXlzKCdjJykua2V5X3VwKEtleXMuQ09OVFJPTCkucGVyZm9ybSgpCiAKKyAgICAgICAg Y2xpcGJvYXJkX3RleHQgPSBzZWxmLnBhc3RlX3ZhbHVlc190b19zY3JhdGNoX3BhZCgpCisKICAg ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiIiJcIlNvbWUtT3RoZXItTmFtZSJcdDIyXHQic29tZSBv dGhlciBpbmZvIgotIllldC1Bbm90aGVyLU5hbWUiXHQxNFx0ImNvb2wgaW5mb1wiIiIiLCBweXBl cmNsaXAucGFzdGUoKSkKKyJZZXQtQW5vdGhlci1OYW1lIlx0MTRcdCJjb29sIGluZm9cIiIiIiwg Y2xpcGJvYXJkX3RleHQpCiAKICAgICBkZWYgX3NoaWZ0X3Jlc2l6ZXNfY29sdW1uX3NlbGVjdGlv bihzZWxmKToKLSAgICAgICAgcHlwZXJjbGlwLmNvcHkoIm9sZCBjbGlwYm9hcmQgY29udGVudHMi KQotCiAgICAgICAgIGNvbHVtbiA9IHNlbGYucGFnZS5maW5kX2J5X2Nzc19zZWxlY3RvcigKICAg ICAgICAgICAgIFF1ZXJ5VG9vbExvY2F0b3JzLm91dHB1dF9jb2x1bW5faGVhZGVyX2Nzcy5mb3Jt YXQoJ3ZhbHVlJykKICAgICAgICAgKQpAQCAtMTk3LDEzICsyMDksMTMgQEAgY2xhc3MgQ29weVNl bGVjdGVkUXVlcnlSZXN1bHRzRmVhdHVyZVRlc3QoQmFzZUZlYXR1cmVUZXN0KToKICAgICAgICAg QWN0aW9uQ2hhaW5zKHNlbGYucGFnZS5kcml2ZXIpLmtleV9kb3duKAogICAgICAgICAgICAgS2V5 cy5DT05UUk9MKS5zZW5kX2tleXMoJ2MnKS5rZXlfdXAoS2V5cy5DT05UUk9MKS5wZXJmb3JtKCkK IAorICAgICAgICBjbGlwYm9hcmRfdGV4dCA9IHNlbGYucGFzdGVfdmFsdWVzX3RvX3NjcmF0Y2hf cGFkKCkKKwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAogICAgICAgICAgICAgJyJTb21lLU5h bWUiXHQ2XG4iU29tZS1PdGhlci1OYW1lIlx0MjJcbiJZZXQtQW5vdGhlci1OYW1lIlx0MTQnLAot ICAgICAgICAgICAgcHlwZXJjbGlwLnBhc3RlKCkpCisgICAgICAgICAgICBjbGlwYm9hcmRfdGV4 dCkKIAogICAgIGRlZiBfbW91c2V1cF9vdXRzaWRlX2dyaWRfc3RpbGxfbWFrZXNfYV9zZWxlY3Rp b24oc2VsZik6Ci0gICAgICAgIHB5cGVyY2xpcC5jb3B5KCJvbGQgY2xpcGJvYXJkIGNvbnRlbnRz IikKLQogICAgICAgICBib3R0b21fcmlnaHRfY2VsbCA9IHNlbGYucGFnZS5maW5kX2J5X3hwYXRo KAogICAgICAgICAgICAgUXVlcnlUb29sTG9jYXRvcnMub3V0cHV0X2NvbHVtbl9kYXRhX3hwYXRo LmZvcm1hdCgnY29vbCBpbmZvJykKICAgICAgICAgKQpAQCAtMjE4LDcgKzIzMCw5IEBAIGNsYXNz IENvcHlTZWxlY3RlZFF1ZXJ5UmVzdWx0c0ZlYXR1cmVUZXN0KEJhc2VGZWF0dXJlVGVzdCk6CiAg ICAgICAgIEFjdGlvbkNoYWlucyhzZWxmLnBhZ2UuZHJpdmVyKS5rZXlfZG93bigKICAgICAgICAg ICAgIEtleXMuQ09OVFJPTCkuc2VuZF9rZXlzKCdjJykua2V5X3VwKEtleXMuQ09OVFJPTCkucGVy Zm9ybSgpCiAKLSAgICAgICAgc2VsZi5hc3NlcnRJbignImNvb2wgaW5mbyInLCBweXBlcmNsaXAu cGFzdGUoKSkKKyAgICAgICAgY2xpcGJvYXJkX3RleHQgPSBzZWxmLnBhc3RlX3ZhbHVlc190b19z Y3JhdGNoX3BhZCgpCisKKyAgICAgICAgc2VsZi5hc3NlcnRJbignImNvb2wgaW5mbyInLCBjbGlw Ym9hcmRfdGV4dCkKIAogICAgIGRlZiBhZnRlcihzZWxmKToKICAgICAgICAgc2VsZi5wYWdlLmNs b3NlX3F1ZXJ5X3Rvb2woKQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vZmVhdHVyZV90ZXN0cy9m aWxlX21hbmFnZXJfdGVzdC5weSBiL3dlYi9wZ2FkbWluL2ZlYXR1cmVfdGVzdHMvZmlsZV9tYW5h Z2VyX3Rlc3QucHkKaW5kZXggNmQwMTI4Ni4uMzNmODZhZCAxMDA2NDQKLS0tIGEvd2ViL3BnYWRt aW4vZmVhdHVyZV90ZXN0cy9maWxlX21hbmFnZXJfdGVzdC5weQorKysgYi93ZWIvcGdhZG1pbi9m ZWF0dXJlX3Rlc3RzL2ZpbGVfbWFuYWdlcl90ZXN0LnB5CkBAIC0zOCw3ICszOCw4IEBAIGNsYXNz IENoZWNrRmlsZU1hbmFnZXJGZWF0dXJlVGVzdChCYXNlRmVhdHVyZVRlc3QpOgogCiAgICAgICAg IHNlbGYucGFnZS5hZGRfc2VydmVyKHNlbGYuc2VydmVyKQogICAgICAgICBzZWxmLndhaXQgPSBX ZWJEcml2ZXJXYWl0KHNlbGYucGFnZS5kcml2ZXIsIDEwKQotICAgICAgICBzZWxmLlhTU19GSUxF ID0gJy90bXAvPGltZyBzcmM9eCBvbm1vdXNlb3Zlcj1hbGVydCgiMSIpPi5zcWwnCisgICAgICAg IHNlbGYuWFNTX0ZJTEUgPSAnL3RtcC88aW1nIHNyYz14ICcgKyBzZWxmLnNlcnZlclsnbmFtZSdd WzoxM10gXAorICAgICAgICAgICAgICAgICAgICAgICAgKyAnPWFsZXJ0KCIxIik+LnNxbCcKICAg ICAgICAgIyBSZW1vdmUgYW55IHByZXZpb3VzIGZpbGUKICAgICAgICAgaWYgb3MucGF0aC5pc2Zp bGUoc2VsZi5YU1NfRklMRSk6CiAgICAgICAgICAgICBvcy5yZW1vdmUoc2VsZi5YU1NfRklMRSkK QEAgLTY3LDcgKzY4LDcgQEAgY2xhc3MgQ2hlY2tGaWxlTWFuYWdlckZlYXR1cmVUZXN0KEJhc2VG ZWF0dXJlVGVzdCk6CiAgICAgICAgIHNlbGYucGFnZS5vcGVuX3F1ZXJ5X3Rvb2woKQogCiAgICAg ZGVmIF9jcmVhdGVfbmV3X2ZpbGUoc2VsZik6Ci0gICAgICAgIHNlbGYucGFnZS5maW5kX2J5X2Nz c19zZWxlY3RvcihRdWVyeVRvb2xMb2NhdG9ycy5idG5fc2F2ZV9maWxlKVwKKyAgICAgICAgc2Vs Zi5wYWdlLmZpbmRfYnlfY3NzX3NlbGVjdG9yKFF1ZXJ5VG9vbExvY2F0b3JzLmJ0bl9zYXZlX2Zp bGUpIFwKICAgICAgICAgICAgIC5jbGljaygpCiAgICAgICAgICMgU2V0IHRoZSBYU1MgdmFsdWUg aW4gaW5wdXQKICAgICAgICAgc2VsZi5wYWdlLmZpbmRfYnlfY3NzX3NlbGVjdG9yKCcuY2hhbmdl X2ZpbGVfdHlwZXMnKQpAQCAtMTEyLDggKzExMyw4IEBAIGNsYXNzIENoZWNrRmlsZU1hbmFnZXJG ZWF0dXJlVGVzdChCYXNlRmVhdHVyZVRlc3QpOgogICAgICAgICBzZWxmLnBhZ2Uud2FpdF9mb3Jf cXVlcnlfdG9vbF9sb2FkaW5nX2luZGljYXRvcl90b19kaXNhcHBlYXIoKQogICAgICAgICBzZWxm Ll9jaGVja19lc2NhcGVkX2NoYXJhY3RlcnMoCiAgICAgICAgICAgICBjb250ZW50cywKLSAgICAg ICAgICAgICcmbHQ7aW1nIHNyYz14IG9ubW91c2VvdmVyPWFsZXJ0KCIxIikmZ3Q7LnNxbCcsCi0g ICAgICAgICAgICAnRmlsZSBtYW5hZ2VyJworICAgICAgICAgICAgJyZsdDtpbWcgc3JjPXggJyAr IHNlbGYuc2VydmVyWyduYW1lJ11bOjEzXSArCisgICAgICAgICAgICAnPWFsZXJ0KCIxIikmZ3Q7 LnNxbCcsICdGaWxlIG1hbmFnZXInCiAgICAgICAgICkKIAogICAgIGRlZiBfY2hlY2tfZXNjYXBl ZF9jaGFyYWN0ZXJzKHNlbGYsIHNvdXJjZV9jb2RlLCBzdHJpbmdfdG9fZmluZCwgc291cmNlKToK ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2ZlYXR1cmVfdGVzdHMva2V5Ym9hcmRfc2hvcnRjdXRf dGVzdC5weSBiL3dlYi9wZ2FkbWluL2ZlYXR1cmVfdGVzdHMva2V5Ym9hcmRfc2hvcnRjdXRfdGVz dC5weQppbmRleCBlYTM4MWI0Li5mNjhlNTMwIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9mZWF0 dXJlX3Rlc3RzL2tleWJvYXJkX3Nob3J0Y3V0X3Rlc3QucHkKKysrIGIvd2ViL3BnYWRtaW4vZmVh dHVyZV90ZXN0cy9rZXlib2FyZF9zaG9ydGN1dF90ZXN0LnB5CkBAIC05NCwyNCArOTQsMzMgQEAg Y2xhc3MgS2V5Ym9hcmRTaG9ydGN1dEZlYXR1cmVUZXN0KEJhc2VGZWF0dXJlVGVzdCk6CiAgICAg ICAgICAgICBOYXZNZW51TG9jYXRvcnMucHJlZmVyZW5jZV9tZW51X2l0ZW1fY3NzKQogICAgICAg ICBwcmVmX21lbnVfaXRlbS5jbGljaygpCiAKLSAgICAgICAgIyBXYWl0IHRpbGwgdGhlIHByZWZl cmVuY2UgZGlhbG9ndWUgYm94IGlzIGRpc3BsYXllZCBieSBjaGVja2luZyB0aGUKLSAgICAgICAg IyB2aXNpYmlsaXR5IG9mIFNob3cgU3lzdGVtIE9iamVjdCBsYWJlbAotICAgICAgICBzZWxmLndh aXQudW50aWwoRUMucHJlc2VuY2Vfb2ZfZWxlbWVudF9sb2NhdGVkKAotICAgICAgICAgICAgKEJ5 LlhQQVRILCBOYXZNZW51TG9jYXRvcnMuc2hvd19zeXN0ZW1fb2JqZWN0c19wcmVmX2xhYmVsX3hw YXRoKSkKLSAgICAgICAgKQotCi0gICAgICAgIG1heGltaXplX2J1dHRvbiA9IHNlbGYucGFnZS5m aW5kX2J5X2Nzc19zZWxlY3RvcigKLSAgICAgICAgICAgIE5hdk1lbnVMb2NhdG9ycy5tYXhpbWl6 ZV9wcmVmX2RpYWxvZ3VlX2NzcykKLSAgICAgICAgbWF4aW1pemVfYnV0dG9uLmNsaWNrKCkKLQog ICAgICAgICBicm93c2VyX25vZGUgPSBzZWxmLnBhZ2UuZmluZF9ieV94cGF0aCgKICAgICAgICAg ICAgIE5hdk1lbnVMb2NhdG9ycy5zcGVjaWZpZWRfcHJlZmVyZW5jZV90cmVlX25vZGUuZm9ybWF0 KCdCcm93c2VyJykpCiAgICAgICAgIGlmIHNlbGYucGFnZS5maW5kX2J5X3hwYXRoKAogICAgICAg ICAgICAgTmF2TWVudUxvY2F0b3JzLnNwZWNpZmllZF9wcmVmX25vZGVfZXhwX3N0YXR1cy4KICAg ICAgICAgICAgICAgICBmb3JtYXQoJ0Jyb3dzZXInKSkuZ2V0X2F0dHJpYnV0ZSgnYXJpYS1leHBh bmRlZCcpID09ICdmYWxzZSc6Ci0KICAgICAgICAgICAgIEFjdGlvbkNoYWlucyhzZWxmLmRyaXZl cikuZG91YmxlX2NsaWNrKGJyb3dzZXJfbm9kZSkucGVyZm9ybSgpCiAKKyAgICAgICAgZGlzcGxh eV9ub2RlID0gc2VsZi5wYWdlLmZpbmRfYnlfeHBhdGgoCisgICAgICAgICAgICBOYXZNZW51TG9j YXRvcnMuc3BlY2lmaWVkX3N1Yl9ub2RlX29mX3ByZWZfdHJlZV9ub2RlLmZvcm1hdCgKKyAgICAg ICAgICAgICAgICAnQnJvd3NlcicsICdEaXNwbGF5JykpCisgICAgICAgIGF0dGVtcHQgPSA1Cisg ICAgICAgIHdoaWxlIGF0dGVtcHQgPiAwOgorICAgICAgICAgICAgZGlzcGxheV9ub2RlLmNsaWNr KCkKKyAgICAgICAgICAgICMgQWZ0ZXIgY2xpY2tpbmcgdGhlIGVsZW1lbnQgZ2V0cyBsb2FkZWQg aW4gdG8gdGhlIGRvbSBidXQgc3RpbGwKKyAgICAgICAgICAgICMgbm90IHZpc2libGUsIGhlbmNl IHNsZWVwaW5nIGZvciBhIHNlYy4KKyAgICAgICAgICAgIHRpbWUuc2xlZXAoMSkKKyAgICAgICAg ICAgIGlmIHNlbGYucGFnZS53YWl0X2Zvcl9lbGVtZW50X3RvX2JlX3Zpc2libGUoCisgICAgICAg ICAgICAgICAgc2VsZi5kcml2ZXIsCisgICAgICAgICAgICAgICAgICAgIE5hdk1lbnVMb2NhdG9y cy5zaG93X3N5c3RlbV9vYmplY3RzX3ByZWZfbGFiZWxfeHBhdGgsIDMpOgorICAgICAgICAgICAg ICAgIGJyZWFrCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGF0dGVtcHQgLT0g MQorCisgICAgICAgIG1heGltaXplX2J1dHRvbiA9IHNlbGYucGFnZS5maW5kX2J5X2Nzc19zZWxl Y3RvcigKKyAgICAgICAgICAgIE5hdk1lbnVMb2NhdG9ycy5tYXhpbWl6ZV9wcmVmX2RpYWxvZ3Vl X2NzcykKKyAgICAgICAgbWF4aW1pemVfYnV0dG9uLmNsaWNrKCkKKwogICAgICAgICBrZXlib2Fy ZF9ub2RlID0gc2VsZi5wYWdlLmZpbmRfYnlfeHBhdGgoCiAgICAgICAgICAgICBOYXZNZW51TG9j YXRvcnMuc3BlY2lmaWVkX3N1Yl9ub2RlX29mX3ByZWZfdHJlZV9ub2RlLmZvcm1hdCgKICAgICAg ICAgICAgICAgICAnQnJvd3NlcicsICdLZXlib2FyZCBzaG9ydGN1dHMnKSkKZGlmZiAtLWdpdCBh L3dlYi9wZ2FkbWluL2ZlYXR1cmVfdGVzdHMvcGdfZGF0YXR5cGVfdmFsaWRhdGlvbl90ZXN0LnB5 IGIvd2ViL3BnYWRtaW4vZmVhdHVyZV90ZXN0cy9wZ19kYXRhdHlwZV92YWxpZGF0aW9uX3Rlc3Qu cHkKaW5kZXggZGJhNGVhZC4uYmFjY2M3MCAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vZmVhdHVy ZV90ZXN0cy9wZ19kYXRhdHlwZV92YWxpZGF0aW9uX3Rlc3QucHkKKysrIGIvd2ViL3BnYWRtaW4v ZmVhdHVyZV90ZXN0cy9wZ19kYXRhdHlwZV92YWxpZGF0aW9uX3Rlc3QucHkKQEAgLTkyLDYgKzky LDE4IEBAIGNsYXNzIFBHRGF0YXlwZUZlYXR1cmVUZXN0KEJhc2VGZWF0dXJlVGVzdCk6CiAKICAg ICAgICAgd2FpdCA9IFdlYkRyaXZlcldhaXQoc2VsZi5wYWdlLmRyaXZlciwgMTApCiAKKyAgICAg ICAgYnJvd3Nlcl9ub2RlID0gc2VsZi5wYWdlLmZpbmRfYnlfeHBhdGgoCisgICAgICAgICAgICBO YXZNZW51TG9jYXRvcnMuc3BlY2lmaWVkX3ByZWZlcmVuY2VfdHJlZV9ub2RlLmZvcm1hdCgnQnJv d3NlcicpKQorICAgICAgICBpZiBzZWxmLnBhZ2UuZmluZF9ieV94cGF0aCgKKyAgICAgICAgICAg IE5hdk1lbnVMb2NhdG9ycy5zcGVjaWZpZWRfcHJlZl9ub2RlX2V4cF9zdGF0dXMuCisgICAgICAg ICAgICAgICAgZm9ybWF0KCdCcm93c2VyJykpLmdldF9hdHRyaWJ1dGUoJ2FyaWEtZXhwYW5kZWQn KSA9PSAnZmFsc2UnOgorICAgICAgICAgICAgQWN0aW9uQ2hhaW5zKHNlbGYuZHJpdmVyKS5kb3Vi bGVfY2xpY2soYnJvd3Nlcl9ub2RlKS5wZXJmb3JtKCkKKworICAgICAgICBzZWxmLnBhZ2UucmV0 cnlfY2xpY2soCisgICAgICAgICAgICAoQnkuWFBBVEgsIE5hdk1lbnVMb2NhdG9ycy5zcGVjaWZp ZWRfc3ViX25vZGVfb2ZfcHJlZl90cmVlX25vZGUuCisgICAgICAgICAgICAgZm9ybWF0KCdCcm93 c2VyJywgJ0Rpc3BsYXknKSksCisgICAgICAgICAgICAoQnkuWFBBVEgsIE5hdk1lbnVMb2NhdG9y cy5zaG93X3N5c3RlbV9vYmplY3RzX3ByZWZfbGFiZWxfeHBhdGgpKQorCiAgICAgICAgICMgV2Fp dCB0aWxsIHRoZSBwcmVmZXJlbmNlIGRpYWxvZ3VlIGJveCBpcyBkaXNwbGF5ZWQgYnkgY2hlY2tp bmcgdGhlCiAgICAgICAgICMgdmlzaWJpbGl0eSBvZiBTaG93IFN5c3RlbSBPYmplY3QgbGFiZWwK ICAgICAgICAgd2FpdC51bnRpbChFQy5wcmVzZW5jZV9vZl9lbGVtZW50X2xvY2F0ZWQoCmRpZmYg LS1naXQgYS93ZWIvcGdhZG1pbi9mZWF0dXJlX3Rlc3RzL3BnX3V0aWxpdGllc19iYWNrdXBfcmVz dG9yZV90ZXN0LnB5IGIvd2ViL3BnYWRtaW4vZmVhdHVyZV90ZXN0cy9wZ191dGlsaXRpZXNfYmFj a3VwX3Jlc3RvcmVfdGVzdC5weQppbmRleCAxZDZkN2E0Li40Y2Y5MjgyIDEwMDY0NAotLS0gYS93 ZWIvcGdhZG1pbi9mZWF0dXJlX3Rlc3RzL3BnX3V0aWxpdGllc19iYWNrdXBfcmVzdG9yZV90ZXN0 LnB5CisrKyBiL3dlYi9wZ2FkbWluL2ZlYXR1cmVfdGVzdHMvcGdfdXRpbGl0aWVzX2JhY2t1cF9y ZXN0b3JlX3Rlc3QucHkKQEAgLTE4LDYgKzE4LDcgQEAgZnJvbSByZWdyZXNzaW9uLnB5dGhvbl90 ZXN0X3V0aWxzIGltcG9ydCB0ZXN0X3V0aWxzCiBmcm9tIHJlZ3Jlc3Npb24ucHl0aG9uX3Rlc3Rf dXRpbHMgaW1wb3J0IHRlc3RfZ3VpX2hlbHBlcgogZnJvbSByZWdyZXNzaW9uLmZlYXR1cmVfdXRp bHMubG9jYXRvcnMgaW1wb3J0IE5hdk1lbnVMb2NhdG9ycwogZnJvbSByZWdyZXNzaW9uLmZlYXR1 cmVfdXRpbHMudHJlZV9hcmVhX2xvY2F0b3JzIGltcG9ydCBUcmVlQXJlYUxvY2F0b3JzCitmcm9t IHNlbGVuaXVtLndlYmRyaXZlciBpbXBvcnQgQWN0aW9uQ2hhaW5zCiAKIAogY2xhc3MgUEdVdGls aXRpZXNCYWNrdXBGZWF0dXJlVGVzdChCYXNlRmVhdHVyZVRlc3QpOgpAQCAtNTYsNiArNTcsNyBA QCBjbGFzcyBQR1V0aWxpdGllc0JhY2t1cEZlYXR1cmVUZXN0KEJhc2VGZWF0dXJlVGVzdCk6CiAg ICAgICAgICAgICBzZWxmLnNlcnZlclsnc3NsbW9kZSddCiAgICAgICAgICkKICAgICAgICAgdGVz dF91dGlscy5kcm9wX2RhdGFiYXNlKGNvbm5lY3Rpb24sIHNlbGYuZGF0YWJhc2VfbmFtZSkKKyAg ICAgICAgc2VsZi5fdXBkYXRlX3ByZWZlcmVuY2VzKCkKICAgICAgICAgZGJfaWQgPSB0ZXN0X3V0 aWxzLmNyZWF0ZV9kYXRhYmFzZShzZWxmLnNlcnZlciwgc2VsZi5kYXRhYmFzZV9uYW1lKQogICAg ICAgICBpZiBub3QgZGJfaWQ6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoRmFsc2UsICJE YXRhYmFzZSB7fSBpcyBub3QgIgpAQCAtMTMwLDcgKzEzMiw3IEBAIGNsYXNzIFBHVXRpbGl0aWVz QmFja3VwRmVhdHVyZVRlc3QoQmFzZUZlYXR1cmVUZXN0KToKICAgICAgICAgICAgIHNlbGYuX2No ZWNrX2RldGFpbGVkX3dpbmRvd19mb3JfeHNzKCdCYWNrdXAnKQogICAgICAgICBlbHNlOgogICAg ICAgICAgICAgY29tbWFuZCA9IHNlbGYucGFnZS5maW5kX2J5X2Nzc19zZWxlY3RvcigKLSAgICAg ICAgICAgICAgICBOYXZNZW51TG9jYXRvcnMucHJvY2Vzc193YXRjaGVyX2RldGFpbGVkX2NvbW1h bmRfY2FudmFzX2NzcykuXAorICAgICAgICAgICAgICAgIE5hdk1lbnVMb2NhdG9ycy5wcm9jZXNz X3dhdGNoZXJfZGV0YWlsZWRfY29tbWFuZF9jYW52YXNfY3NzKS4gXAogICAgICAgICAgICAgICAg IHRleHQKIAogICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihzZWxmLnNlcnZlclsnbmFtZSddLCBz dHIoY29tbWFuZCkpCkBAIC0xOTksNyArMjAxLDcgQEAgY2xhc3MgUEdVdGlsaXRpZXNCYWNrdXBG ZWF0dXJlVGVzdChCYXNlRmVhdHVyZVRlc3QpOgogICAgICAgICAgICAgc2VsZi5fY2hlY2tfZGV0 YWlsZWRfd2luZG93X2Zvcl94c3MoJ1Jlc3RvcmUnKQogICAgICAgICBlbHNlOgogICAgICAgICAg ICAgY29tbWFuZCA9IHNlbGYucGFnZS5maW5kX2J5X2Nzc19zZWxlY3RvcigKLSAgICAgICAgICAg ICAgICBOYXZNZW51TG9jYXRvcnMucHJvY2Vzc193YXRjaGVyX2RldGFpbGVkX2NvbW1hbmRfY2Fu dmFzX2NzcykuXAorICAgICAgICAgICAgICAgIE5hdk1lbnVMb2NhdG9ycy5wcm9jZXNzX3dhdGNo ZXJfZGV0YWlsZWRfY29tbWFuZF9jYW52YXNfY3NzKS4gXAogICAgICAgICAgICAgICAgIHRleHQK IAogICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihzZWxmLnNlcnZlclsnbmFtZSddLCBzdHIoY29t bWFuZCkpCkBAIC0yNDIsMyArMjQ0LDc0IEBAIGNsYXNzIFBHVXRpbGl0aWVzQmFja3VwRmVhdHVy ZVRlc3QoQmFzZUZlYXR1cmVUZXN0KToKICAgICAgICAgIyBGb3IgWFNTIHdlIG5lZWQgdG8gc2Vh cmNoIGFnYWluc3QgZWxlbWVudCdzIGh0bWwgY29kZQogICAgICAgICBhc3NlcnQgc291cmNlX2Nv ZGUuZmluZChzdHJpbmdfdG9fZmluZCkgIT0gLSBcCiAgICAgICAgICAgICAxLCAiezB9IG1pZ2h0 IGJlIHZ1bG5lcmFibGUgdG8gWFNTICIuZm9ybWF0KHNvdXJjZSkKKworICAgIGRlZiBfdXBkYXRl X3ByZWZlcmVuY2VzKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgRnVuY3Rpb24gdXBkYXRl cyBwcmVmZXJlbmNlcyBmb3IgYmluYXJ5IHBhdGguCisgICAgICAgICIiIgorICAgICAgICBmaWxl X21lbnUgPSBzZWxmLnBhZ2UuZmluZF9ieV9jc3Nfc2VsZWN0b3IoCisgICAgICAgICAgICBOYXZN ZW51TG9jYXRvcnMuZmlsZV9tZW51X2NzcykKKyAgICAgICAgZmlsZV9tZW51LmNsaWNrKCkKKwor ICAgICAgICBwcmVmX21lbnVfaXRlbSA9IHNlbGYucGFnZS5maW5kX2J5X2Nzc19zZWxlY3RvcigK KyAgICAgICAgICAgIE5hdk1lbnVMb2NhdG9ycy5wcmVmZXJlbmNlX21lbnVfaXRlbV9jc3MpCisg ICAgICAgIHByZWZfbWVudV9pdGVtLmNsaWNrKCkKKworICAgICAgICB3YWl0ID0gV2ViRHJpdmVy V2FpdChzZWxmLnBhZ2UuZHJpdmVyLCAxMCkKKworICAgICAgICAjIFdhaXQgdGlsbCB0aGUgcHJl ZmVyZW5jZSBkaWFsb2d1ZSBib3ggaXMgZGlzcGxheWVkIGJ5IGNoZWNraW5nIHRoZQorICAgICAg ICAjIHZpc2liaWxpdHkgb2YgU2hvdyBTeXN0ZW0gT2JqZWN0IGxhYmVsCisgICAgICAgIHdhaXQu dW50aWwoRUMucHJlc2VuY2Vfb2ZfZWxlbWVudF9sb2NhdGVkKAorICAgICAgICAgICAgKEJ5LlhQ QVRILCBOYXZNZW51TG9jYXRvcnMuc2hvd19zeXN0ZW1fb2JqZWN0c19wcmVmX2xhYmVsX3hwYXRo KSkKKyAgICAgICAgKQorCisgICAgICAgIG1heGltaXplX2J1dHRvbiA9IHNlbGYucGFnZS5maW5k X2J5X2Nzc19zZWxlY3RvcigKKyAgICAgICAgICAgIE5hdk1lbnVMb2NhdG9ycy5tYXhpbWl6ZV9w cmVmX2RpYWxvZ3VlX2NzcykKKyAgICAgICAgbWF4aW1pemVfYnV0dG9uLmNsaWNrKCkKKworICAg ICAgICBwYXRoID0gc2VsZi5wYWdlLmZpbmRfYnlfeHBhdGgoCisgICAgICAgICAgICBOYXZNZW51 TG9jYXRvcnMuc3BlY2lmaWVkX3ByZWZlcmVuY2VfdHJlZV9ub2RlLmZvcm1hdCgnUGF0aHMnKSkK KyAgICAgICAgaWYgc2VsZi5wYWdlLmZpbmRfYnlfeHBhdGgoCisgICAgICAgICAgICBOYXZNZW51 TG9jYXRvcnMuc3BlY2lmaWVkX3ByZWZfbm9kZV9leHBfc3RhdHVzLmZvcm1hdCgnUGF0aHMnKSku IFwKKyAgICAgICAgICAgICAgICBnZXRfYXR0cmlidXRlKCdhcmlhLWV4cGFuZGVkJykgPT0gJ2Zh bHNlJzoKKyAgICAgICAgICAgIEFjdGlvbkNoYWlucyhzZWxmLmRyaXZlcikuZG91YmxlX2NsaWNr KHBhdGgpLnBlcmZvcm0oKQorCisgICAgICAgIGJpbmFyeV9wYXRoID0gc2VsZi5wYWdlLmZpbmRf YnlfeHBhdGgoCisgICAgICAgICAgICBOYXZNZW51TG9jYXRvcnMuc3BlY2lmaWVkX3N1Yl9ub2Rl X29mX3ByZWZfdHJlZV9ub2RlLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAnUGF0aHMnLCAnQmlu YXJ5IHBhdGhzJykpCisgICAgICAgIGJpbmFyeV9wYXRoLmNsaWNrKCkKKworICAgICAgICBkZWZh dWx0X2JpbmFyeV9wYXRoID0gc2VsZi5zZXJ2ZXJbJ2RlZmF1bHRfYmluYXJ5X3BhdGhzJ10KKyAg ICAgICAgaWYgZGVmYXVsdF9iaW5hcnlfcGF0aCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNl cnZlcl90eXBlcyA9IGRlZmF1bHRfYmluYXJ5X3BhdGgua2V5cygpCisgICAgICAgICAgICBmb3Ig c2VydiBpbiBzZXJ2ZXJfdHlwZXM6CisgICAgICAgICAgICAgICAgaWYgc2VydiA9PSAncGcnOgor ICAgICAgICAgICAgICAgICAgICBwYXRoX2lucHV0ID0gc2VsZi5wYWdlLmZpbmRfYnlfeHBhdGgo CisgICAgICAgICAgICAgICAgICAgICAgICAiLy9sYWJlbFt0ZXh0KCk9J1Bvc3RncmVTUUwgQmlu YXJ5ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJQYXRoJ10vZm9sbG93aW5nLXNpYmxpbmc6 OmRpdi8vaW5wdXQiKQorICAgICAgICAgICAgICAgICAgICBwYXRoX2lucHV0LmNsZWFyKCkKKyAg ICAgICAgICAgICAgICAgICAgcGF0aF9pbnB1dC5jbGljaygpCisgICAgICAgICAgICAgICAgICAg IHBhdGhfaW5wdXQuc2VuZF9rZXlzKGRlZmF1bHRfYmluYXJ5X3BhdGhbJ3BnJ10pCisgICAgICAg ICAgICAgICAgZWxpZiBzZXJ2ID09ICdncGRiJzoKKyAgICAgICAgICAgICAgICAgICAgcGF0aF9p bnB1dCA9IHNlbGYucGFnZS5maW5kX2J5X3hwYXRoKAorICAgICAgICAgICAgICAgICAgICAgICAg Ii8vbGFiZWxbdGV4dCgpPSdHcmVlbnBsdW0gRGF0YWJhc2UgQmluYXJ5ICIKKyAgICAgICAgICAg ICAgICAgICAgICAgICJQYXRoJ10vZm9sbG93aW5nLXNpYmxpbmc6OmRpdi8vaW5wdXQiKQorICAg ICAgICAgICAgICAgICAgICBwYXRoX2lucHV0LmNsZWFyKCkKKyAgICAgICAgICAgICAgICAgICAg cGF0aF9pbnB1dC5jbGljaygpCisgICAgICAgICAgICAgICAgICAgIHBhdGhfaW5wdXQuc2VuZF9r ZXlzKGRlZmF1bHRfYmluYXJ5X3BhdGhbJ2dwZGInXSkKKyAgICAgICAgICAgICAgICBlbGlmIHNl cnYgPT0gJ3BwYXMnOgorICAgICAgICAgICAgICAgICAgICBwYXRoX2lucHV0ID0gc2VsZi5wYWdl LmZpbmRfYnlfeHBhdGgoCisgICAgICAgICAgICAgICAgICAgICAgICAiLy9sYWJlbFt0ZXh0KCk9 J0VEQiBBZHZhbmNlZCBTZXJ2ZXIgQmluYXJ5ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJQ YXRoJ10vZm9sbG93aW5nLXNpYmxpbmc6OmRpdi8vaW5wdXQiKQorICAgICAgICAgICAgICAgICAg ICBwYXRoX2lucHV0LmNsZWFyKCkKKyAgICAgICAgICAgICAgICAgICAgcGF0aF9pbnB1dC5jbGlj aygpCisgICAgICAgICAgICAgICAgICAgIHBhdGhfaW5wdXQuc2VuZF9rZXlzKGRlZmF1bHRfYmlu YXJ5X3BhdGhbJ3BwYXMnXSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAg ICAgICBwcmludCgnQmluYXJ5IHBhdGggS2V5IGlzIEluY29ycmVjdCcpCisKKyAgICAgICAgIyBz YXZlIGFuZCBjbG9zZSB0aGUgcHJlZmVyZW5jZSBkaWFsb2cuCisgICAgICAgIHNlbGYucGFnZS5j bGlja19tb2RhbCgnU2F2ZScpCisKKyAgICAgICAgc2VsZi5wYWdlLndhaXRfZm9yX2VsZW1lbnRf dG9fZGlzYXBwZWFyKAorICAgICAgICAgICAgbGFtYmRhIGRyaXZlcjogZHJpdmVyLmZpbmRfZWxl bWVudF9ieV9jc3Nfc2VsZWN0b3IoIi5hanMtbW9kYWwiKQorICAgICAgICApCmRpZmYgLS1naXQg YS93ZWIvcGdhZG1pbi9mZWF0dXJlX3Rlc3RzL3F1ZXJ5X3Rvb2xfam91cm5leV90ZXN0LnB5IGIv d2ViL3BnYWRtaW4vZmVhdHVyZV90ZXN0cy9xdWVyeV90b29sX2pvdXJuZXlfdGVzdC5weQppbmRl eCAyZDdjNGVmLi5kZGI0ZTNjIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9mZWF0dXJlX3Rlc3Rz L3F1ZXJ5X3Rvb2xfam91cm5leV90ZXN0LnB5CisrKyBiL3dlYi9wZ2FkbWluL2ZlYXR1cmVfdGVz dHMvcXVlcnlfdG9vbF9qb3VybmV5X3Rlc3QucHkKQEAgLTksNyArOSw2IEBACiAKIGZyb20gX19m dXR1cmVfXyBpbXBvcnQgcHJpbnRfZnVuY3Rpb24KIGltcG9ydCBzeXMKLWltcG9ydCBweXBlcmNs aXAKIGltcG9ydCByYW5kb20KIAogZnJvbSBzZWxlbml1bS53ZWJkcml2ZXIgaW1wb3J0IEFjdGlv bkNoYWlucwpAQCAtOTAsNyArODksNiBAQCBjbGFzcyBRdWVyeVRvb2xKb3VybmV5VGVzdChCYXNl RmVhdHVyZVRlc3QpOgogICAgICAgICBwcmludCgiIE9LLiIsIGZpbGU9c3lzLnN0ZGVycikKIAog ICAgIGRlZiBfdGVzdF9jb3BpZXNfcm93cyhzZWxmKToKLSAgICAgICAgcHlwZXJjbGlwLmNvcHko Im9sZCBjbGlwYm9hcmQgY29udGVudHMiKQogICAgICAgICBzZWxmLnBhZ2UuZHJpdmVyLnN3aXRj aF90by5kZWZhdWx0X2NvbnRlbnQoKQogICAgICAgICBzZWxmLnBhZ2UuZHJpdmVyLnN3aXRjaF90 b19mcmFtZSgKICAgICAgICAgICAgIHNlbGYucGFnZS5kcml2ZXIuZmluZF9lbGVtZW50X2J5X3Rh Z19uYW1lKCJpZnJhbWUiKSkKQEAgLTEwMywxMiArMTAxLDIxIEBAIGNsYXNzIFF1ZXJ5VG9vbEpv dXJuZXlUZXN0KEJhc2VGZWF0dXJlVGVzdCk6CiAgICAgICAgICAgICBRdWVyeVRvb2xMb2NhdG9y cy5jb3B5X2J1dHRvbl9jc3MpCiAgICAgICAgIGNvcHlfcm93LmNsaWNrKCkKIAorICAgICAgICBz ZWxmLnBhZ2UuZHJpdmVyLnN3aXRjaF90by5kZWZhdWx0X2NvbnRlbnQoKQorICAgICAgICBzZWxm LnBhZ2UuZHJpdmVyLnN3aXRjaF90b19mcmFtZSgKKyAgICAgICAgICAgIHNlbGYucGFnZS5kcml2 ZXIuZmluZF9lbGVtZW50X2J5X3RhZ19uYW1lKCJpZnJhbWUiKSkKKworICAgICAgICBzY3JhdGNo X3BhZF9lbGUgPSBzZWxmLnBhZ2UuZmluZF9ieV9jc3Nfc2VsZWN0b3IoCisgICAgICAgICAgICBR dWVyeVRvb2xMb2NhdG9ycy5zY3JhdGNoX3BhZF9jc3MpCisgICAgICAgIHNlbGYucGFnZS5wYXN0 ZV92YWx1ZXMoc2NyYXRjaF9wYWRfZWxlKQorICAgICAgICBjbGlwYm9hcmRfdGV4dCA9IHNjcmF0 Y2hfcGFkX2VsZS5nZXRfYXR0cmlidXRlKCJ2YWx1ZSIpCisKICAgICAgICAgc2VsZi5hc3NlcnRF cXVhbCgnIlNvbWUtTmFtZSJcdDZcdCJzb21lIGluZm8iJywKLSAgICAgICAgICAgICAgICAgICAg ICAgICBweXBlcmNsaXAucGFzdGUoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICBjbGlwYm9h cmRfdGV4dCkKIAotICAgIGRlZiBfdGVzdF9jb3BpZXNfY29sdW1ucyhzZWxmKToKLSAgICAgICAg cHlwZXJjbGlwLmNvcHkoIm9sZCBjbGlwYm9hcmQgY29udGVudHMiKQorICAgICAgICBzY3JhdGNo X3BhZF9lbGUuY2xlYXIoKQogCisgICAgZGVmIF90ZXN0X2NvcGllc19jb2x1bW5zKHNlbGYpOgog ICAgICAgICBzZWxmLnBhZ2UuZHJpdmVyLnN3aXRjaF90by5kZWZhdWx0X2NvbnRlbnQoKQogICAg ICAgICBzZWxmLnBhZ2UuZHJpdmVyLnN3aXRjaF90b19mcmFtZSgKICAgICAgICAgICAgIHNlbGYu cGFnZS5kcml2ZXIuZmluZF9lbGVtZW50X2J5X3RhZ19uYW1lKCJpZnJhbWUiKSkKQEAgLTEyMSw5 ICsxMjgsMjAgQEAgY2xhc3MgUXVlcnlUb29sSm91cm5leVRlc3QoQmFzZUZlYXR1cmVUZXN0KToK ICAgICAgICAgICAgIFF1ZXJ5VG9vbExvY2F0b3JzLmNvcHlfYnV0dG9uX2NzcykKICAgICAgICAg Y29weV9idG4uY2xpY2soKQogCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnIlNvbWUtTmFtZSIn IGluIHB5cGVyY2xpcC5wYXN0ZSgpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoJyJTb21lLU90 aGVyLU5hbWUiJyBpbiBweXBlcmNsaXAucGFzdGUoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVl KCciWWV0LUFub3RoZXItTmFtZSInIGluIHB5cGVyY2xpcC5wYXN0ZSgpKQorICAgICAgICBzZWxm LnBhZ2UuZHJpdmVyLnN3aXRjaF90by5kZWZhdWx0X2NvbnRlbnQoKQorICAgICAgICBzZWxmLnBh Z2UuZHJpdmVyLnN3aXRjaF90b19mcmFtZSgKKyAgICAgICAgICAgIHNlbGYucGFnZS5kcml2ZXIu ZmluZF9lbGVtZW50X2J5X3RhZ19uYW1lKCJpZnJhbWUiKSkKKworICAgICAgICBzY3JhdGNoX3Bh ZF9lbGUgPSBzZWxmLnBhZ2UuZmluZF9ieV9jc3Nfc2VsZWN0b3IoCisgICAgICAgICAgICBRdWVy eVRvb2xMb2NhdG9ycy5zY3JhdGNoX3BhZF9jc3MpCisgICAgICAgIHNlbGYucGFnZS5wYXN0ZV92 YWx1ZXMoc2NyYXRjaF9wYWRfZWxlKQorCisgICAgICAgIGNsaXBib2FyZF90ZXh0ID0gc2NyYXRj aF9wYWRfZWxlLmdldF9hdHRyaWJ1dGUoInZhbHVlIikKKworICAgICAgICBzZWxmLmFzc2VydFRy dWUoJyJTb21lLU5hbWUiJyBpbiBjbGlwYm9hcmRfdGV4dCkKKyAgICAgICAgc2VsZi5hc3NlcnRU cnVlKCciU29tZS1PdGhlci1OYW1lIicgaW4gY2xpcGJvYXJkX3RleHQpCisgICAgICAgIHNlbGYu YXNzZXJ0VHJ1ZSgnIllldC1Bbm90aGVyLU5hbWUiJyBpbiBjbGlwYm9hcmRfdGV4dCkKKyAgICAg ICAgc2NyYXRjaF9wYWRfZWxlLmNsZWFyKCkKIAogICAgIGRlZiBfdGVzdF9oaXN0b3J5X3RhYihz ZWxmKToKICAgICAgICAgc2VsZi5wYWdlLmNsZWFyX3F1ZXJ5X3Rvb2woKQpAQCAtMzcwLDEwICsz ODgsMTAgQEAgY2xhc3MgUXVlcnlUb29sSm91cm5leVRlc3QoQmFzZUZlYXR1cmVUZXN0KToKICAg ICAgICAgICAgIHNlbGYucGFnZS5maW5kX2J5X2Nzc19zZWxlY3RvcigKICAgICAgICAgICAgICAg ICBRdWVyeVRvb2xMb2NhdG9ycy5idG5fY2xlYXJfZHJvcGRvd24pCiAgICAgICAgICkKLSAgICAg ICAgQWN0aW9uQ2hhaW5zKHNlbGYuZHJpdmVyKVwKKyAgICAgICAgQWN0aW9uQ2hhaW5zKHNlbGYu ZHJpdmVyKSBcCiAgICAgICAgICAgICAubW92ZV90b19lbGVtZW50KAotICAgICAgICAgICAgICAg IHNlbGYucGFnZS5maW5kX2J5X2Nzc19zZWxlY3RvcigKLSAgICAgICAgICAgICAgICAgICAgUXVl cnlUb29sTG9jYXRvcnMuYnRuX2NsZWFyX2hpc3RvcnkpKS5wZXJmb3JtKCkKKyAgICAgICAgICAg IHNlbGYucGFnZS5maW5kX2J5X2Nzc19zZWxlY3RvcigKKyAgICAgICAgICAgICAgICBRdWVyeVRv b2xMb2NhdG9ycy5idG5fY2xlYXJfaGlzdG9yeSkpLnBlcmZvcm0oKQogICAgICAgICBzZWxmLnBh Z2UuY2xpY2tfZWxlbWVudCgKICAgICAgICAgICAgIHNlbGYucGFnZS5maW5kX2J5X2Nzc19zZWxl Y3RvcihRdWVyeVRvb2xMb2NhdG9ycy5idG5fY2xlYXJfaGlzdG9yeSkKICAgICAgICAgKQpkaWZm IC0tZ2l0IGEvd2ViL3BnYWRtaW4vZmVhdHVyZV90ZXN0cy92aWV3X2RhdGFfZG1sX3F1ZXJpZXMu cHkgYi93ZWIvcGdhZG1pbi9mZWF0dXJlX3Rlc3RzL3ZpZXdfZGF0YV9kbWxfcXVlcmllcy5weQpp bmRleCAzZjUzZDg2Li4yMTkyMWNjIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9mZWF0dXJlX3Rl c3RzL3ZpZXdfZGF0YV9kbWxfcXVlcmllcy5weQorKysgYi93ZWIvcGdhZG1pbi9mZWF0dXJlX3Rl c3RzL3ZpZXdfZGF0YV9kbWxfcXVlcmllcy5weQpAQCAtMTMxLDEzICsxMzEsMTUgQEAgQ1JFQVRF IFRBQkxFIHB1YmxpYy5ub25pbnRwa2V5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzZWxmLnRlc3RfZGIsICdwdWJsaWMnKQogCiAgICAgICAgIHNlbGYuX2xvYWRf Y29uZmlnX2RhdGEoJ3RhYmxlX2luc2VydF91cGRhdGVfY2FzZXMnKQorICAgICAgICBkYXRhX2xv Y2FsID0gY29uZmlnX2RhdGEKICAgICAgICAgIyBpdGVyYXRlIG9uIGJvdGggdGFibGVzCiAgICAg ICAgIGZvciBjbnQgaW4gKDEsIDIpOgotICAgICAgICAgICAgc2VsZi5fcGVyZm9ybV90ZXN0X2Zv cl90YWJsZSgnZGVmYXVsdHNfezB9Jy5mb3JtYXQoc3RyKGNudCkpKQotCisgICAgICAgICAgICBz ZWxmLl9wZXJmb3JtX3Rlc3RfZm9yX3RhYmxlKCdkZWZhdWx0c197MH0nLmZvcm1hdChzdHIoY250 KSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFfbG9jYWwp CiAgICAgICAgICMgdGVzdCBub25pbnQgcGtleSB0YWJsZQogICAgICAgICBzZWxmLl9sb2FkX2Nv bmZpZ19kYXRhKCd0YWJsZV9pbnNlcnRfdXBkYXRlX25vbmludCcpCi0gICAgICAgIHNlbGYuX3Bl cmZvcm1fdGVzdF9mb3JfdGFibGUoJ25vbmludHBrZXknKQorICAgICAgICBkYXRhX2xvY2FsID0g Y29uZmlnX2RhdGEKKyAgICAgICAgc2VsZi5fcGVyZm9ybV90ZXN0X2Zvcl90YWJsZSgnbm9uaW50 cGtleScsIGRhdGFfbG9jYWwpCiAKICAgICBkZWYgYWZ0ZXIoc2VsZik6CiAgICAgICAgIHNlbGYu cGFnZS5yZW1vdmVfc2VydmVyKHNlbGYuc2VydmVyKQpAQCAtMTY3LDcgKzE2OSw3IEBAIENSRUFU RSBUQUJMRSBwdWJsaWMubm9uaW50cGtleQogICAgICAgICBnbG9iYWwgY29uZmlnX2RhdGEKICAg ICAgICAgY29uZmlnX2RhdGEgPSBjb25maWdfZGF0YV9qc29uW2NvbmZpZ19rZXldCiAKLSAgICBk ZWYgX3BlcmZvcm1fdGVzdF9mb3JfdGFibGUoc2VsZiwgdGFibGVfbmFtZSk6CisgICAgZGVmIF9w ZXJmb3JtX3Rlc3RfZm9yX3RhYmxlKHNlbGYsIHRhYmxlX25hbWUsIGNvbmZpZ19kYXRhX2xvY2Fs KToKICAgICAgICAgc2VsZi5wYWdlLmNsaWNrX2FfdHJlZV9ub2RlKAogICAgICAgICAgICAgdGFi bGVfbmFtZSwKICAgICAgICAgICAgIFRyZWVBcmVhTG9jYXRvcnMuc3ViX25vZGVzX29mX3RhYmxl c19ub2RlKQpAQCAtMTc2LDIwICsxNzgsMjEgQEAgQ1JFQVRFIFRBQkxFIHB1YmxpYy5ub25pbnRw a2V5CiAKICAgICAgICAgc2VsZi5wYWdlLndhaXRfZm9yX3F1ZXJ5X3Rvb2xfbG9hZGluZ19pbmRp Y2F0b3JfdG9fZGlzYXBwZWFyKCkKICAgICAgICAgIyBSdW4gdGVzdCB0byBpbnNlcnQgYSBuZXcg cm93IGluIHRhYmxlIHdpdGggZGVmYXVsdCB2YWx1ZXMKLSAgICAgICAgc2VsZi5fYWRkX3Jvdygp CisgICAgICAgIHNlbGYuX2FkZF9yb3coY29uZmlnX2RhdGFfbG9jYWwpCiAgICAgICAgIHNlbGYu X3ZlcmlmeV9yb3dfZGF0YShyb3dfaGVpZ2h0PTAsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb25maWdfY2hlY2tfZGF0YT1jb25maWdfZGF0YVsnYWRkJ10pCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjb25maWdfY2hlY2tfZGF0YT1jb25maWdfZGF0YV9sb2NhbFsnYWRk J10pCiAKICAgICAgICAgIyBSdW4gdGVzdCB0byBjb3B5L3Bhc3RlIGEgcm93Ci0gICAgICAgIHNl bGYuX2NvcHlfcGFzdGVfcm93KCkKKyAgICAgICAgc2VsZi5fY29weV9wYXN0ZV9yb3coY29uZmln X2RhdGFfbG9jYWwpCiAKLSAgICAgICAgc2VsZi5fdXBkYXRlX3JvdygpCisgICAgICAgIHNlbGYu X3VwZGF0ZV9yb3coY29uZmlnX2RhdGFfbG9jYWwpCiAgICAgICAgIHNlbGYucGFnZS5jbGlja190 YWIoIk1lc3NhZ2VzIikKICAgICAgICAgc2VsZi5fdmVyaWZ5X21lc3NzYWdlcygiIikKICAgICAg ICAgc2VsZi5wYWdlLmNsaWNrX3RhYigiRGF0YSBPdXRwdXQiKQogICAgICAgICB1cGRhdGVkX3Jv d19kYXRhID0gewotICAgICAgICAgICAgaTogY29uZmlnX2RhdGFbJ3VwZGF0ZSddW2ldIGlmIGkg aW4gY29uZmlnX2RhdGFbJ3VwZGF0ZSddIGVsc2UgdmFsCi0gICAgICAgICAgICBmb3IgaSwgdmFs IGluIGNvbmZpZ19kYXRhWydhZGQnXS5pdGVtcygpCisgICAgICAgICAgICBpOiBjb25maWdfZGF0 YV9sb2NhbFsndXBkYXRlJ11baV0gaWYgaSBpbiBjb25maWdfZGF0YV9sb2NhbFsKKyAgICAgICAg ICAgICAgICAndXBkYXRlJ10gZWxzZSB2YWwKKyAgICAgICAgICAgIGZvciBpLCB2YWwgaW4gY29u ZmlnX2RhdGFfbG9jYWxbJ2FkZCddLml0ZW1zKCkKICAgICAgICAgfQogICAgICAgICBzZWxmLl92 ZXJpZnlfcm93X2RhdGEocm93X2hlaWdodD0wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29uZmlnX2NoZWNrX2RhdGE9dXBkYXRlZF9yb3dfZGF0YSkKQEAgLTIyMSw3ICsyMjQsNiBA QCBDUkVBVEUgVEFCTEUgcHVibGljLm5vbmludHBrZXkKICAgICAgICAgUmV0dXJuczogTm9uZQog CiAgICAgICAgICIiIgotCiAgICAgICAgIHNlbGYud2FpdC51bnRpbChFQy52aXNpYmlsaXR5X29m X2VsZW1lbnRfbG9jYXRlZCgKICAgICAgICAgICAgIChCeS5YUEFUSCwgeHBhdGgpKSwgQ2hlY2tG b3JWaWV3RGF0YVRlc3QuVElNRU9VVF9TVFJJTkcKICAgICAgICAgKQpAQCAtMjM4LDcgKzI0MCw3 IEBAIENSRUFURSBUQUJMRSBwdWJsaWMubm9uaW50cGtleQogICAgICAgICAgICAgaWYgdmFsdWUg PT0gJ2NsZWFyJzoKICAgICAgICAgICAgICAgICBjZWxsX2VsLmZpbmRfZWxlbWVudF9ieV9jc3Nf c2VsZWN0b3IoJ2lucHV0JykuY2xlYXIoKQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAg ICAgICBBY3Rpb25DaGFpbnMoc2VsZi5kcml2ZXIpLnNlbmRfa2V5cyh2YWx1ZSkuXAorICAgICAg ICAgICAgICAgIEFjdGlvbkNoYWlucyhzZWxmLmRyaXZlcikuc2VuZF9rZXlzKHZhbHVlKS4gXAog ICAgICAgICAgICAgICAgICAgICBzZW5kX2tleXMoS2V5cy5FTlRFUikucGVyZm9ybSgpCiAgICAg ICAgIGVsaWYgY2VsbF90eXBlIGluIFsndGV4dCcsICdqc29uJywgJ3RleHRbXScsICdib29sZWFu W10nXToKICAgICAgICAgICAgIHRleHRfYXJlYV9lbGUgPSBzZWxmLnBhZ2UuZmluZF9ieV9jc3Nf c2VsZWN0b3IoCkBAIC0yOTAsNyArMjkyLDcgQEAgQ1JFQVRFIFRBQkxFIHB1YmxpYy5ub25pbnRw a2V5CiAgICAgICAgICAgICBzZWxmLnBhZ2UuZHJpdmVyLmZpbmRfZWxlbWVudF9ieV90YWdfbmFt ZSgnaWZyYW1lJykKICAgICAgICAgKQogCi0gICAgZGVmIF9jb3B5X3Bhc3RlX3JvdyhzZWxmKToK KyAgICBkZWYgX2NvcHlfcGFzdGVfcm93KHNlbGYsIGNvbmZpZ19kYXRhX2wpOgogICAgICAgICBy b3cwX2NlbGwwX3hwYXRoID0gQ2hlY2tGb3JWaWV3RGF0YVRlc3QuX2dldF9jZWxsX3hwYXRoKCJy MCIsIDEpCiAKICAgICAgICAgc2VsZi5wYWdlLmZpbmRfYnlfeHBhdGgocm93MF9jZWxsMF94cGF0 aCkuY2xpY2soKQpAQCAtMzAwLDEyICszMDIsMTIgQEAgQ1JFQVRFIFRBQkxFIHB1YmxpYy5ub25p bnRwa2V5CiAgICAgICAgICAgICBRdWVyeVRvb2xMb2NhdG9ycy5wYXN0ZV9idXR0b25fY3NzKS5j bGljaygpCiAKICAgICAgICAgIyBVcGRhdGUgcHJpbWFyeSBrZXkgb2YgY29waWVkIGNlbGwKLSAg ICAgICAgc2VsZi5fYWRkX3VwZGF0ZV9zYXZlX3Jvdyhjb25maWdfZGF0YVsnY29weSddLCByb3c9 MikKKyAgICAgICAgc2VsZi5fYWRkX3VwZGF0ZV9zYXZlX3Jvdyhjb25maWdfZGF0YV9sWydjb3B5 J10sIHJvdz0yKQogCiAgICAgICAgICMgVmVyaWZ5IHJvdyAxIGFuZCByb3cgMiBkYXRhCiAgICAg ICAgIHVwZGF0ZWRfcm93X2RhdGEgPSB7Ci0gICAgICAgICAgICBpOiBjb25maWdfZGF0YVsnY29w eSddW2ldIGlmIGkgaW4gY29uZmlnX2RhdGFbJ2NvcHknXSBlbHNlIHZhbAotICAgICAgICAgICAg Zm9yIGksIHZhbCBpbiBjb25maWdfZGF0YVsnYWRkJ10uaXRlbXMoKQorICAgICAgICAgICAgaTog Y29uZmlnX2RhdGFfbFsnY29weSddW2ldIGlmIGkgaW4gY29uZmlnX2RhdGFfbFsnY29weSddIGVs c2UgdmFsCisgICAgICAgICAgICBmb3IgaSwgdmFsIGluIGNvbmZpZ19kYXRhX2xbJ2FkZCddLml0 ZW1zKCkKICAgICAgICAgfQogICAgICAgICBzZWxmLl92ZXJpZnlfcm93X2RhdGEocm93X2hlaWdo dD0yNSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ19jaGVja19kYXRhPXVw ZGF0ZWRfcm93X2RhdGEpCkBAIC0zMjksMTEgKzMzMSwxMSBAQCBDUkVBVEUgVEFCTEUgcHVibGlj Lm5vbmludHBrZXkKICAgICAgICAgIyBzYXZlIGFqYXggaXMgY29tcGxldGVkLgogICAgICAgICB0 aW1lLnNsZWVwKDIpCiAKLSAgICBkZWYgX2FkZF9yb3coc2VsZik6Ci0gICAgICAgIHNlbGYuX2Fk ZF91cGRhdGVfc2F2ZV9yb3coY29uZmlnX2RhdGFbJ2FkZCddLCAxKQorICAgIGRlZiBfYWRkX3Jv dyhzZWxmLCBjb25maWdfZGF0YV9sKToKKyAgICAgICAgc2VsZi5fYWRkX3VwZGF0ZV9zYXZlX3Jv dyhjb25maWdfZGF0YV9sWydhZGQnXSwgMSkKIAotICAgIGRlZiBfdXBkYXRlX3JvdyhzZWxmKToK LSAgICAgICAgc2VsZi5fYWRkX3VwZGF0ZV9zYXZlX3Jvdyhjb25maWdfZGF0YVsndXBkYXRlJ10s IDEpCisgICAgZGVmIF91cGRhdGVfcm93KHNlbGYsIGNvbmZpZ19kYXRhX2wpOgorICAgICAgICBz ZWxmLl9hZGRfdXBkYXRlX3NhdmVfcm93KGNvbmZpZ19kYXRhX2xbJ3VwZGF0ZSddLCAxKQogCiAg ICAgZGVmIF92ZXJpZnlfbWVzc3NhZ2VzKHNlbGYsIHRleHQpOgogICAgICAgICBtZXNzYWdlc19l bGUgPSBzZWxmLnBhZ2UuZmluZF9ieV9jc3Nfc2VsZWN0b3IoCmRpZmYgLS1naXQgYS93ZWIvcGdh ZG1pbi9mZWF0dXJlX3Rlc3RzL3hzc19jaGVja3NfcGFuZWxzX2FuZF9xdWVyeV90b29sX3Rlc3Qu cHkgYi93ZWIvcGdhZG1pbi9mZWF0dXJlX3Rlc3RzL3hzc19jaGVja3NfcGFuZWxzX2FuZF9xdWVy eV90b29sX3Rlc3QucHkKaW5kZXggOWVmYWQ4YS4uNjljM2NiYSAxMDA2NDQKLS0tIGEvd2ViL3Bn YWRtaW4vZmVhdHVyZV90ZXN0cy94c3NfY2hlY2tzX3BhbmVsc19hbmRfcXVlcnlfdG9vbF90ZXN0 LnB5CisrKyBiL3dlYi9wZ2FkbWluL2ZlYXR1cmVfdGVzdHMveHNzX2NoZWNrc19wYW5lbHNfYW5k X3F1ZXJ5X3Rvb2xfdGVzdC5weQpAQCAtMjExLDE3ICsyMTEsMjMgQEAgY2xhc3MgQ2hlY2tGb3JY c3NGZWF0dXJlVGVzdChCYXNlRmVhdHVyZVRlc3QpOgogICAgICAgICAgICAgIlF1ZXJ5IHRvb2wg KEhpc3RvcnkgRW50cnkpIgogICAgICAgICApCiAKLSAgICAgICAgIyBDaGVjayBmb3IgaGlzdG9y eSBkZXRhaWxzIG1lc3NhZ2UKLSAgICAgICAgaGlzdG9yeV9lbGUgPSBzZWxmLmRyaXZlclwKLSAg ICAgICAgICAgIC5maW5kX2VsZW1lbnRfYnlfY3NzX3NlbGVjdG9yKCIucXVlcnktZGV0YWlsIC5j b250ZW50LXZhbHVlIikKLQotICAgICAgICBzb3VyY2VfY29kZSA9IGhpc3RvcnlfZWxlLmdldF9h dHRyaWJ1dGUoJ2lubmVySFRNTCcpCisgICAgICAgIHJldHJ5ID0gMgorICAgICAgICB3aGlsZSBy ZXRyeSA+IDA6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgaGlzdG9yeV9lbGUg PSBzZWxmLmRyaXZlciBcCisgICAgICAgICAgICAgICAgICAgIC5maW5kX2VsZW1lbnRfYnlfY3Nz X3NlbGVjdG9yKAorICAgICAgICAgICAgICAgICAgICAgICAgIi5xdWVyeS1kZXRhaWwgLmNvbnRl bnQtdmFsdWUiKQorICAgICAgICAgICAgICAgIHNvdXJjZV9jb2RlID0gaGlzdG9yeV9lbGUuZ2V0 X2F0dHJpYnV0ZSgnaW5uZXJIVE1MJykKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAg ICAgZXhjZXB0IFN0YWxlRWxlbWVudFJlZmVyZW5jZUV4Y2VwdGlvbjoKKyAgICAgICAgICAgICAg ICByZXRyeSAtPSAxCiAKICAgICAgICAgc2VsZi5fY2hlY2tfZXNjYXBlZF9jaGFyYWN0ZXJzKAog ICAgICAgICAgICAgc291cmNlX2NvZGUsCiAgICAgICAgICAgICAnJmx0O3NjcmlwdCZndDthbGVy dCgxKSZsdDsvc2NyaXB0Jmd0OycsCiAgICAgICAgICAgICAiUXVlcnkgdG9vbCAoSGlzdG9yeSBE ZXRhaWxzLU1lc3NhZ2UpIgogICAgICAgICApCisKICAgICAgICAgcmV0cnkgPSAyCiAgICAgICAg IHdoaWxlIHJldHJ5ID4gMDoKICAgICAgICAgICAgIHRyeToKZGlmZiAtLWdpdCBhL3dlYi9wZ2Fk bWluL3V0aWxzL3JvdXRlLnB5IGIvd2ViL3BnYWRtaW4vdXRpbHMvcm91dGUucHkKaW5kZXggYTgw MzEwZS4uZmFmZjUyYSAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vdXRpbHMvcm91dGUucHkKKysr IGIvd2ViL3BnYWRtaW4vdXRpbHMvcm91dGUucHkKQEAgLTEyMCw5ICsxMjAsOCBAQCBjbGFzcyBC YXNlVGVzdEdlbmVyYXRvcih1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICAgICAgICAgICAg IHNlbGYuc2tpcFRlc3QoJ2Nhbm5vdCBydW4gaW46ICVzJyAlCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2VydmVyX2NvblsnZGF0YSddWyd0eXBlJ10pCiAKLSAgICBAY2xhc3Nt ZXRob2QKLSAgICBkZWYgc2V0VGVzdFNlcnZlcihjbHMsIHNlcnZlcik6Ci0gICAgICAgIGNscy5z ZXJ2ZXIgPSBzZXJ2ZXIKKyAgICBkZWYgc2V0VGVzdFNlcnZlcihzZWxmLCBzZXJ2ZXIpOgorICAg ICAgICBzZWxmLnNlcnZlciA9IHNlcnZlcgogCiAgICAgQGFic3RyYWN0bWV0aG9kCiAgICAgZGVm IHJ1blRlc3Qoc2VsZik6CkBAIC0xMzcsMTcgKzEzNiwxNCBAQCBjbGFzcyBCYXNlVGVzdEdlbmVy YXRvcih1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHNldFRlc3RDbGllbnQoY2xzLCB0ZXN0 X2NsaWVudCk6CiAgICAgICAgIGNscy50ZXN0ZXIgPSB0ZXN0X2NsaWVudAogCi0gICAgQGNsYXNz bWV0aG9kCi0gICAgZGVmIHNldERyaXZlcihjbHMsIGRyaXZlcik6Ci0gICAgICAgIGNscy5kcml2 ZXIgPSBkcml2ZXIKKyAgICBkZWYgc2V0RHJpdmVyKHNlbGYsIGRyaXZlcik6CisgICAgICAgIHNl bGYuZHJpdmVyID0gZHJpdmVyCiAKLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgc2V0U2VydmVy SW5mb3JtYXRpb24oY2xzLCBzZXJ2ZXJfaW5mb3JtYXRpb24pOgotICAgICAgICBjbHMuc2VydmVy X2luZm9ybWF0aW9uID0gc2VydmVyX2luZm9ybWF0aW9uCisgICAgZGVmIHNldFNlcnZlckluZm9y bWF0aW9uKHNlbGYsIHNlcnZlcl9pbmZvcm1hdGlvbik6CisgICAgICAgIHNlbGYuc2VydmVyX2lu Zm9ybWF0aW9uID0gc2VydmVyX2luZm9ybWF0aW9uCiAKLSAgICBAY2xhc3NtZXRob2QKLSAgICBk ZWYgc2V0VGVzdERhdGFiYXNlTmFtZShjbHMsIGRhdGFiYXNlX25hbWUpOgotICAgICAgICBjbHMu dGVzdF9kYiA9IGRhdGFiYXNlX25hbWUKKyAgICBkZWYgc2V0VGVzdERhdGFiYXNlTmFtZShzZWxm LCBkYXRhYmFzZV9uYW1lKToKKyAgICAgICAgc2VsZi50ZXN0X2RiID0gZGF0YWJhc2VfbmFtZQog CiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIHNldFJlU1FMTW9kdWxlTGlzdChjbHMsIG1vZHVs ZV9saXN0KToKZGlmZiAtLWdpdCBhL3dlYi9yZWdyZXNzaW9uL1JFQURNRSBiL3dlYi9yZWdyZXNz aW9uL1JFQURNRQppbmRleCA0NmFkZmNjLi4zYTc0NzJlIDEwMDY0NAotLS0gYS93ZWIvcmVncmVz c2lvbi9SRUFETUUKKysrIGIvd2ViL3JlZ3Jlc3Npb24vUkVBRE1FCkBAIC0xNDEsNiArMTQxLDYx IEBAIFB5dGhvbiBUZXN0czoKICAgYW5kIHJlZ2lzdGVyZWQgYXV0b21hdGljYWxseSBieSBpdHMg bW9kdWxlIG5hbWUgaW4KICAgJ3BnYWRtaW40L3dlYi9wZ2FkbWluL3V0aWxzL3Rlc3QucHknIGZp bGUuCiAKKy0gVG8gcnVuIEZlYXR1cmUgVGVzdHMgaW4gcGFyYWxsZWwgdXNpbmcgc2VsZW5vaWQo Z3JpZCArIGRvY2tlciksIHNlbGVub2lkCisgIG5lZWQgdG8gYmUgaW5zdGFsbGVkLiBTdGVwcyB0 byBpbnN0YWxsIHNlbGVub2lkIC0KKworICAtIEluc3RhbGwgJiBTdGFydCBkb2NrZXIKKyAgICAk eXVtIC15IGluc3RhbGwgZG9ja2VyIGRvY2tlci1yZWdpc3RyeQorICAgICR2aSAvZXRjL3N5c2Nv bmZpZy9kb2NrZXIgICAjIGluIE9QVElPTlMgYWRkIOKAmC0tc2VsaW51eC1lbmFibGVkPWZhbHNl 4oCZCisgICAgJHN5c3RlbWN0bCBlbmFibGUgZG9ja2VyLnNlcnZpY2UKKyAgICAkc3lzdGVtY3Rs IHN0YXJ0IGRvY2tlci5zZXJ2aWNlCisgICAgJHN5c3RlbWN0bCBzdGF0dXMgZG9ja2VyLnNlcnZp Y2UKKworICAtIEluc3RhbGwgJiBTdGFydCBTZWxlbm9pZAorICAgICRjdXJsIC1zIGh0dHBzOi8v YWVyb2t1YmUuY29tL2NtL2Jhc2ggfCBiYXNoCisgICAgJC4vY20gc2VsZW5vaWQgc3RhcnQgLS12 bmMgLS1hcmdzICItbGltaXQgMyAtY3B1IDEuNSAtbWVtIDEuNWciCisgICAgJC4vY20gc2VsZW5v aWQtdWkgc3RhcnQKKyAgICBDaGVjayBzZWxlbm9pZCBzdGF0dXMgLQorICAgIGh0dHA6Ly88SVAg YWRkcmVzcyBvZiBTZWxlbm9pZCBJbnN0YWxsZWQgbWFjaGluZT46NDQ0NC9zdGF0dXMKKyAgICAg ICAgICAgIC0gU2hvdWxkIHNob3cganNvbiB3aXRoIGJyb3dzZXJzIGRldGFpbHMKKyAgICBodHRw Oi8vPElQIGFkZHJlc3Mgb2YgU2VsZW5vaWQgSW5zdGFsbGVkIG1hY2hpbmU+OjgwODAvIy8KKyAg ICAgICAgICAgIC0gQ2FwYWJpbGl0aWVzIHNob3dzIGF2YWlsYWJsZSBicm93c2VyCisgICAgTm90 ZSA6IEluIC0tYXJncyAiLWxpbWl0IDMgLWNwdSAxLjUgLW1lbSAxLjVnIgorICAgICAgICAgICAg ICAgIC1saW1pdCAzIDpsaW1pdHMgbWF4aW11bSBwYXJhbGxlbCBzZXNzaW9ucyhkb2NrZXJzKSBp biBzZWxlbm9pZCwKKyAgICAgICAgICAgICAgICAtY3B1IDpsaW1pdCBtZW1vcnkgYW5kIENQVSB1 c2FnZSwKKyAgICAgICAgICAgICAgICAtbWVtIDpsaW1pdCBtZW1vcnkgcGVyIHNlc3Npb24uCisg ICAgICAgICAgIEdlbmVyYWxseSBtYXggcGFyYWxsZWwgc2Vzc2lvbiBpcyB0aGUgbnVtYmVyIG9m IGNvcmVzICogMS41IOKAkyAyCisgICAgICAgICAgIFlvdSBjYW4gbGlzdCBhdmFpbGFibGUgZmxh Z3MgYnkgdXNpbmcgLi9jbSBzZWxlbm9pZCBhcmdzCisgICAgQWRkaXRpb25hbCBJbmZvcm1hdGlv biBhYm91dCB0b29sCisgICAgICAgICAgICAtIGh0dHBzOi8vYWVyb2t1YmUuY29tL3NlbGVub2lk L2xhdGVzdC8KKworICAtIFVwZGF0ZSAndGVzdF9jb25maWcuanNvbicgd2l0aCBzZWxlbm9pZCBj b25maWcgaW5mb3JtYXRpb24KKyAgICBwZ0FkbWluX2RlZmF1bHRfc2VydmVyIC0KKyAgICAgICAg SXQgaXMgdGhlIElQIGFkZHJlc3MgZm9yIHRoZSBtYWNoaW5lIHdoZXJlIHBnYWRtaW4gc291cmNl IGNvZGUgaXMKKyAgICAgICAgcHJlc2VudC5WYWx1ZSBzaG91bGQgTk9UIGJlICcxMjcuMC4wLjEn IGV2ZW4gdGhvdWdoIGV2ZXJ5dGhpbmcgcnVucworICAgICAgICBvbiB0aGUgc2FtZSBtYWNoaW5l LgorICAgICAgICBZb3UgY2FuIGdldCBpdCBvbiBsaW51eCBydW5uaW5nIGNvbW1hbmQgICdpZmNv bmZpZyB8IGdyZXAgaW5ldCcKKyAgICAgICAgZS5nLiAtIDE5Mi4xNjguMTQzLjEyMQorICAgIG1h eF9wYXJhbGxlbF9zZXNzaW9ucyAtCisgICAgICAgIFRoaXMgaXMgb3RoZXIgd2F5IHRvIGNvbnRy b2wgbnVtYmVyIG9mIHRlc3RzIHRvIGJlIHJ1biBpbiBwYXJhbGxlbC4KKyAgICAgICAgVGhpcyBz aG91bGQgYmUgZXF1YWwgb3IgbGVzcyB0aGFuIGxpbWl0IHNwZWNpZmllZCB3aGlsZSBzZXR0aW5n IHVwCisgICAgICAgIHNlbGVub2lkCisgICAgc2VsZW5vaWRfdXJsIC0KKyAgICAgICAgVXJsIHNo b3VsZCBiZSBmb3JtZWQgYXMgYmVsb3cgLQorICAgICAgICBodHRwOi8vPElQIGFkZHJlc3Mgb2Yg U2VsZW5vaWQgSW5zdGFsbGVkIG1hY2hpbmU+OjQ0NDQvd2QvaHViLworICAgICAgICBlLmcuIC0g c2VsZW5vaWRfdXJsIjogImh0dHA6Ly8xOTIuMTY4LjE0My4xMjE6NDQ0NC93ZC9odWIiCisgICAg ICAgIElmIHNvdXJjZSBjb2RlICYgc2VsZW5vaWQgc2VydmVycyBhcmUgb24gc2FtZSBtYWNoaW5l IHRoZW4KKyAgICAgICAgc2VsZW5vaWQgdXJsIHZhbHVlIGNhbiBiZSAtICJodHRwOi8vbG9jYWxo b3N0OjQ0NDQvd2QvaHViIgorICAgIGJyb3dzZXJzX2xpc3QgLQorICAgICAgICBMaXN0IG9mIGJy b3dzZXIgbmFtZSAmIHZlcnNpb24gZW5jbG9zZWQgaW4ge30gb24gd2hpY2ggdGVzdHMgdG8gYmUK KyAgICAgICAgZXhlY3V0ZWQuCisgICAgICAgIE1ha2Ugc3VyZSBsaXN0IGNvbnRhaW5zIHRob3Nl IGJyb3dzZXJzICYgdmVyc2lvbnMgb25seSB3aGljaCBhcmUgc2hvd24KKyAgICAgICAgaW4gY2Fw YWJpbGl0aWVzIHRhYiB3aGlsZSBpbiBzZWxlbm9pZCBzdGF0dXMgd2ViLXBhZ2UuCisgICAgICAg IElmIHZlcnNpb24gaXMgbWVudGlvbiBhcyBudWxsLCB0aGVuIGxhdGVzdCB2ZXJzaW9uIGF2YWls YWJsZSBpbgorICAgICAgICBzZWxlbm9pZCBzZXJ2ZXIgd2lsbCBiZSB1c2VkIGZvciBleGVjdXRp b24uCisgICAgICAgIGUuZy4gLSBbIHsibmFtZSI6ICJDaHJvbWUiLCJ2ZXJzaW9uIjogIjgwLjAi fSwKKyAgICAgICAgICAgICAgICAgeyJuYW1lIjogIkZpcmVmb3giLCJ2ZXJzaW9uIjogIjc0LjAi fV0KKwogLSBDaGFuZ2UgdG8gdGhlIHJlZ3Jlc3Npb24gdGVzdCBkaXJlY3Rvcnk6CiAgICAgIHJ1 biAnY2Qgd2ViL3JlZ3Jlc3Npb24nCiAKQEAgLTE5MCw5ICsyNDUsMTQgQEAgUHl0aG9uIFRlc3Rz OgogICAgICBFeGFtcGxlIDIpICBFeGVjdXRlIG9ubHkgcmV2ZXJzZSBlbmdpbmVlcmVkIFNRTCB0 ZXN0IGZyYW1ld29yayBmb3Igc29tZSBtb2R1bGVzCiAgICAgICAgICBydW4gJ3B5dGhvbiBydW50 ZXN0cy5weSAtLXBrZyByZXNxbCAtLW1vZHVsZXMgc2VxdWVuY2VzLGZ1bmN0aW9ucycKIAorCiAg ICAgIEV4YW1wbGUgMykgRXhjbHVkZSByZXZlcnNlIGVuZ2luZWVyZWQgU1FMIHRlc3QgZnJhbWV3 b3JrIGZvciBhbGwgbW9kdWxlcwogICAgICAgICAgcnVuICdweXRob24gcnVudGVzdHMucHkgLS1l eGNsdWRlIHJlc3FsJwogCistIEV4ZWN1dGUgdWkgc2VsZW5pdW0gdGVzdHMgaW4gcGFyYWxsZWwg dXNpbmcgc2VsZW5vaWQoc2VsZW5pdW0gZ3JpZCArIGRvY2tlcikKKyAgICAgRXhhbXBsZSA6IC0t cGtnIGZlYXR1cmVfdGVzdHMgLS1wYXJhbGxlbAorCisKIENvZGUgQ292ZXJhZ2U6CiAtLS0tLS0t LS0tLS0tLS0KIApkaWZmIC0tZ2l0IGEvd2ViL3JlZ3Jlc3Npb24vZmVhdHVyZV91dGlscy9hcHBf c3RhcnRlci5weSBiL3dlYi9yZWdyZXNzaW9uL2ZlYXR1cmVfdXRpbHMvYXBwX3N0YXJ0ZXIucHkK aW5kZXggZmU0YzQ0MS4uN2RlMTBiMiAxMDA2NDQKLS0tIGEvd2ViL3JlZ3Jlc3Npb24vZmVhdHVy ZV91dGlscy9hcHBfc3RhcnRlci5weQorKysgYi93ZWIvcmVncmVzc2lvbi9mZWF0dXJlX3V0aWxz L2FwcF9zdGFydGVyLnB5CkBAIC02MSwxMSArNjEsMTYgQEAgY2xhc3MgQXBwU3RhcnRlcjoKICAg ICAgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdVbmFibGUgdG8gc3RhcnQgcHl0aG9u IHNlcnZlciBldmVuIGFmdGVyICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICdyZXRyeWluZyA2MCB0aW1lcy4nKQogCi0gICAgICAgIGxhdW5jaF9icm93c2VyKDApCisgICAg ICAgIGlmIHNlbGYuZHJpdmVyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgbGF1bmNoX2Jyb3dz ZXIoMCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiAiaHR0cDovLyIgKyBzZWxm LmFwcF9jb25maWcuREVGQVVMVF9TRVJWRVIgKyAiOiIgXAorICAgICAgICAgICAgICAgICAgICsg cmFuZG9tX3NlcnZlcl9wb3J0CiAKICAgICBkZWYgc3RvcF9hcHAoc2VsZik6CiAgICAgICAgICIi IiBUaGlzIGZ1bmN0aW9uIHN0b3AgdGhlIHN0YXJ0ZWQgYXBwIGJ5IGtpbGxpbmcgcHJvY2VzcyAi IiIKLSAgICAgICAgc2VsZi5kcml2ZXIucXVpdCgpCisgICAgICAgIGlmIHNlbGYuZHJpdmVyIGlz IG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5kcml2ZXIucXVpdCgpCiAgICAgICAgICMgb3Mu a2lsbHBnIHN1cHBvcnRlZCBpbiBNYWMgYW5kIFVuaXggYXMgdGhpcyBmdW5jdGlvbiBub3Qgc3Vw cG9ydGVkIGluCiAgICAgICAgICMgV2luZG93cwogICAgICAgICB0cnk6CmRpZmYgLS1naXQgYS93 ZWIvcmVncmVzc2lvbi9mZWF0dXJlX3V0aWxzL2xvY2F0b3JzLnB5IGIvd2ViL3JlZ3Jlc3Npb24v ZmVhdHVyZV91dGlscy9sb2NhdG9ycy5weQppbmRleCBiODE2OWZhLi40NzU2MjMxIDEwMDY0NAot LS0gYS93ZWIvcmVncmVzc2lvbi9mZWF0dXJlX3V0aWxzL2xvY2F0b3JzLnB5CisrKyBiL3dlYi9y ZWdyZXNzaW9uL2ZlYXR1cmVfdXRpbHMvbG9jYXRvcnMucHkKQEAgLTE3Miw2ICsxNzIsOCBAQCBj bGFzcyBRdWVyeVRvb2xMb2NhdG9yczoKIAogICAgIG5ld19yb3dfeHBhdGggPSAiLy9kaXZbY29u dGFpbnMoQGNsYXNzLCAnbmV3LXJvdycpXSIKIAorICAgIHNjcmF0Y2hfcGFkX2NzcyA9ICIuc3Fs LXNjcmF0Y2ggPiB0ZXh0YXJlYSIKKwogICAgIGNvcHlfYnV0dG9uX2NzcyA9ICIjYnRuLWNvcHkt cm93IgogCiAgICAgcGFzdGVfYnV0dG9uX2NzcyA9ICIjYnRuLXBhc3RlLXJvdyIKQEAgLTIxNyw5 ICsyMTksOSBAQCBjbGFzcyBRdWVyeVRvb2xMb2NhdG9yczoKICAgICBidG5fY29tbWl0ID0gIiNi dG4tY29tbWl0IgogCiAgICAgc2hvd19xdWVyeV9pbnRlcm5hbGx5X2J0biA9IFwKLSAgICAgICAg Ii8vZGl2W2xhYmVsW25vcm1hbGl6ZS1zcGFjZSgiIFwKLSAgICAgICAgInRleHQoKSk9J1Nob3cg cXVlcmllcyBnZW5lcmF0ZWQgaW50ZXJuYWxseSBieSBwZ0FkbWluPyddXSIgXAotICAgICAgICAi Ly9kaXZbY29udGFpbnMoQGNsYXNzLCd0b2dnbGUgYnRuJyldIgorICAgICAgICAiLy9kaXZbbGFi ZWxbY29udGFpbnMobm9ybWFsaXplLXNwYWNlKHRleHQoKSksIiBcCisgICAgICAgICInU2hvdyBx dWVyaWVzIGdlbmVyYXRlZCBpbnRlcm5hbGx5IGJ5JyldXS8vIiBcCisgICAgICAgICJkaXZbY29u dGFpbnMoQGNsYXNzLCd0b2dnbGUgYnRuJyldIgogCiAgICAgZWRpdGFibGVfY29sdW1uX2ljb25f eHBhdGggPSAiLy9kaXZbY29udGFpbnMoQGNsYXNzLCIgXAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIiAnZWRpdGFibGUtY29sdW1uLWhlYWRlci1pY29uJyldIiBcCmRpZmYgLS1n aXQgYS93ZWIvcmVncmVzc2lvbi9mZWF0dXJlX3V0aWxzL3BnYWRtaW5fcGFnZS5weSBiL3dlYi9y ZWdyZXNzaW9uL2ZlYXR1cmVfdXRpbHMvcGdhZG1pbl9wYWdlLnB5CmluZGV4IGQ3ZThmZTMuLjMy ZWE4NWYgMTAwNjQ0Ci0tLSBhL3dlYi9yZWdyZXNzaW9uL2ZlYXR1cmVfdXRpbHMvcGdhZG1pbl9w YWdlLnB5CisrKyBiL3dlYi9yZWdyZXNzaW9uL2ZlYXR1cmVfdXRpbHMvcGdhZG1pbl9wYWdlLnB5 CkBAIC04OCwxMSArODgsMTcgQEAgY2xhc3MgUGdhZG1pblBhZ2U6CiAgICAgICAgICAgICAoQnku Q1NTX1NFTEVDVE9SLCAiYnV0dG9uW3R5cGU9J3NhdmUnXS5idG4uYnRuLXByaW1hcnkiKSkpCiAg ICAgICAgIHNlbGYuZmluZF9ieV9jc3Nfc2VsZWN0b3IoImJ1dHRvblt0eXBlPSdzYXZlJ10uYnRu LmJ0bi1wcmltYXJ5IikuXAogICAgICAgICAgICAgY2xpY2soKQotCi0gICAgICAgIFdlYkRyaXZl cldhaXQoc2VsZi5kcml2ZXIsIDEwKS51bnRpbCgKLSAgICAgICAgICAgIEVDLnZpc2liaWxpdHlf b2ZfZWxlbWVudF9sb2NhdGVkKAotICAgICAgICAgICAgICAgIChCeS5YUEFUSCwKLSAgICAgICAg ICAgICAgICAgIi8vKltAaWQ9J3RyZWUnXS8vKlsuPSciICsgc2VydmVyX2NvbmZpZ1snbmFtZSdd ICsgIiddIikpKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBXZWJEcml2ZXJXYWl0KHNlbGYu ZHJpdmVyLCAxMCkudW50aWwoCisgICAgICAgICAgICAgICAgRUMudmlzaWJpbGl0eV9vZl9lbGVt ZW50X2xvY2F0ZWQoCisgICAgICAgICAgICAgICAgICAgIChCeS5YUEFUSCwKKyAgICAgICAgICAg ICAgICAgICAgICIvLypbQGlkPSd0cmVlJ10vLypbLj0nIiArIHNlcnZlcl9jb25maWdbJ25hbWUn XSArICInXSIpKSkKKyAgICAgICAgZXhjZXB0IFRpbWVvdXRFeGNlcHRpb246CisgICAgICAgICAg ICBzZWxmLnRvZ2dsZV9vcGVuX3NlcnZlcnNfZ3JvdXAoKQorICAgICAgICAgICAgV2ViRHJpdmVy V2FpdChzZWxmLmRyaXZlciwgMTApLnVudGlsKAorICAgICAgICAgICAgICAgIEVDLnZpc2liaWxp dHlfb2ZfZWxlbWVudF9sb2NhdGVkKAorICAgICAgICAgICAgICAgICAgICAoQnkuWFBBVEgsCisg ICAgICAgICAgICAgICAgICAgICAiLy8qW0BpZD0ndHJlZSddLy8qWy49JyIgKyBzZXJ2ZXJfY29u ZmlnWyduYW1lJ10gKyAiJ10iKSkpCiAKICAgICBkZWYgb3Blbl9xdWVyeV90b29sKHNlbGYpOgog ICAgICAgICBzZWxmLmRyaXZlci5maW5kX2VsZW1lbnRfYnlfbGlua190ZXh0KCJUb29scyIpLmNs aWNrKCkKQEAgLTkxMCw3ICs5MTYsMTEgQEAgY2xhc3MgUGdhZG1pblBhZ2U6CiAgICAgICAgICAg ICAgICAgICAgIHJldHVybiBlbGVtZW50CiAgICAgICAgICAgICBleGNlcHQgKE5vU3VjaEVsZW1l bnRFeGNlcHRpb24sIFdlYkRyaXZlckV4Y2VwdGlvbik6CiAgICAgICAgICAgICAgICAgcmV0dXJu IEZhbHNlCi0KKyAgICAgICAgdGltZS5zbGVlcCgxKQorICAgICAgICBzZWxmLmRyaXZlci5zd2l0 Y2hfdG8uZGVmYXVsdF9jb250ZW50KCkKKyAgICAgICAgc2VsZi5kcml2ZXIuc3dpdGNoX3RvX2Zy YW1lKAorICAgICAgICAgICAgc2VsZi5kcml2ZXIuZmluZF9lbGVtZW50X2J5X3RhZ19uYW1lKCJp ZnJhbWUiKSkKKyAgICAgICAgc2VsZi5maW5kX2J5X3hwYXRoKCIvL2FbdGV4dCgpPSdRdWVyeSBF ZGl0b3InXSIpLmNsaWNrKCkKICAgICAgICAgY29kZW1pcnJvcl9lbGUgPSBXZWJEcml2ZXJXYWl0 KAogICAgICAgICAgICAgc2VsZi5kcml2ZXIsIHRpbWVvdXQ9c2VsZi50aW1lb3V0LCBwb2xsX2Zy ZXF1ZW5jeT0wLjAxKVwKICAgICAgICAgICAgIC51bnRpbChmaW5kX2NvZGVtaXJyb3IsCkBAIC0x MTYxLDMgKzExNzEsMzQgQEAgY2xhc3MgUGdhZG1pblBhZ2U6CiAgICAgICAgICAgICBleGNlcHQg RXhjZXB0aW9uOgogICAgICAgICAgICAgICAgIGF0dGVtcHQgKz0gMQogICAgICAgICByZXR1cm4g Y2xpY2tfc3RhdHVzCisKKyAgICBkZWYgcGFzdGVfdmFsdWVzKHNlbGYsIGVsPU5vbmUpOgorICAg ICAgICAiIiIKKyAgICAgICAgRnVuY3Rpb24gcGFzdGUgdmFsdWVzIGluIHNjcmF0Y2ggcGFkCisg ICAgICAgIDpwYXJhbSBlbDoKKyAgICAgICAgIiIiCisgICAgICAgIGFjdGlvbnMgPSBBY3Rpb25D aGFpbnMoc2VsZi5kcml2ZXIpCisgICAgICAgIGlmIGVsOgorICAgICAgICAgICAgIyBNdXN0IHN0 ZXAKKyAgICAgICAgICAgIGVsLmNsaWNrKCkKKyAgICAgICAgICAgIGlmIHNlbGYuZHJpdmVyLmNh cGFiaWxpdGllc1sicGxhdGZvcm1OYW1lIl0gPT0gJ21hYyc6CisgICAgICAgICAgICAgICAgIyBG RiBzdGVwCisgICAgICAgICAgICAgICAgZWwuc2VuZF9rZXlzKEtleXMuQ09NTUFORCArICJ2IikK KyAgICAgICAgICAgICAgICAjIENocm9tZSBTdGVwCisgICAgICAgICAgICAgICAgYWN0aW9ucy5r ZXlfZG93bihLZXlzLlNISUZUKQorICAgICAgICAgICAgICAgIGFjdGlvbnMuc2VuZF9rZXlzKEtl eXMuSU5TRVJUKQorICAgICAgICAgICAgICAgIGFjdGlvbnMua2V5X3VwKEtleXMuU0hJRlQpCisg ICAgICAgICAgICAgICAgYWN0aW9ucy5wZXJmb3JtKCkKKyAgICAgICAgICAgIGVsc2U6CisgICAg ICAgICAgICAgICAgZWwuc2VuZF9rZXlzKEtleXMuQ09OVFJPTCArICJ2IikKKworICAgIGRlZiB3 YWl0X2Zvcl9lbGVtZW50X3RvX2JlX3Zpc2libGUoc2VsZiwgZHJpdmVyLCB4cGF0aCwgdGltZV92 YWx1ZT0yMCk6CisgICAgICAgICIiIlRoaXMgd2lsbCB3YWl0IHVudGlsIGFuIGVsZW1lbnQgaXMg dmlzaWJsZSBvbiBwYWdlIiIiCisgICAgICAgIGVsZW1lbnRfbG9jYXRlZF9zdGF0dXMgPSBGYWxz ZQorICAgICAgICB0cnk6CisgICAgICAgICAgICBpZiBXZWJEcml2ZXJXYWl0KGRyaXZlciwgdGlt ZV92YWx1ZSkudW50aWwoCisgICAgICAgICAgICAgICAgICAgIEVDLnZpc2liaWxpdHlfb2ZfZWxl bWVudF9sb2NhdGVkKChCeS5YUEFUSCwgeHBhdGgpKSk6CisgICAgICAgICAgICAgICAgZWxlbWVu dF9sb2NhdGVkX3N0YXR1cyA9IFRydWUKKyAgICAgICAgZXhjZXB0IFRpbWVvdXRFeGNlcHRpb246 CisgICAgICAgICAgICBlbGVtZW50X2xvY2F0ZWRfc3RhdHVzID0gRmFsc2UKKyAgICAgICAgcmV0 dXJuIGVsZW1lbnRfbG9jYXRlZF9zdGF0dXMKZGlmZiAtLWdpdCBhL3dlYi9yZWdyZXNzaW9uL3B5 dGhvbl90ZXN0X3V0aWxzL3Rlc3RfdXRpbHMucHkgYi93ZWIvcmVncmVzc2lvbi9weXRob25fdGVz dF91dGlscy90ZXN0X3V0aWxzLnB5CmluZGV4IDk3MWZjMjQuLmIyOTI0NzIgMTAwNjQ0Ci0tLSBh L3dlYi9yZWdyZXNzaW9uL3B5dGhvbl90ZXN0X3V0aWxzL3Rlc3RfdXRpbHMucHkKKysrIGIvd2Vi L3JlZ3Jlc3Npb24vcHl0aG9uX3Rlc3RfdXRpbHMvdGVzdF91dGlscy5weQpAQCAtOCw2ICs4LDgg QEAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgcHJpbnRfZnVu Y3Rpb24KKworaW1wb3J0IGZpbGVpbnB1dAogaW1wb3J0IHRyYWNlYmFjawogaW1wb3J0IG9zCiBp bXBvcnQgc3lzCkBAIC0xNiw3ICsxOCwxNyBAQCBpbXBvcnQgcHN5Y29wZzIKIGltcG9ydCBzcWxp dGUzCiBpbXBvcnQgc2h1dGlsCiBmcm9tIGZ1bmN0b29scyBpbXBvcnQgcGFydGlhbAorCitmcm9t IHNlbGVuaXVtLndlYmRyaXZlci5zdXBwb3J0LndhaXQgaW1wb3J0IFdlYkRyaXZlcldhaXQKIGZy b20gdGVzdHRvb2xzLnRlc3RjYXNlIGltcG9ydCBjbG9uZV90ZXN0X3dpdGhfbmV3X2lkCitpbXBv cnQgcmUKK2ltcG9ydCB0aW1lCitmcm9tIHNlbGVuaXVtLmNvbW1vbi5leGNlcHRpb25zIGltcG9y dCBXZWJEcml2ZXJFeGNlcHRpb24KK2ltcG9ydCB1cmxsaWIucmVxdWVzdCBhcyB1cmxsaWIKK2lt cG9ydCBqc29uCitmcm9tIHNlbGVuaXVtIGltcG9ydCB3ZWJkcml2ZXIKK2Zyb20gc2VsZW5pdW0u d2ViZHJpdmVyLmNocm9tZS5vcHRpb25zIGltcG9ydCBPcHRpb25zCitmcm9tIHNlbGVuaXVtLndl YmRyaXZlci5zdXBwb3J0IGltcG9ydCBleHBlY3RlZF9jb25kaXRpb25zIGFzIGVjCiAKIGltcG9y dCBjb25maWcKIGltcG9ydCByZWdyZXNzaW9uCkBAIC0xMjE2LDMgKzEyMjgsMjQyIEBAIGRlZiBj cmVhdGVfZXhwZWN0ZWRfb3V0cHV0KHBhcmFtZXRlcnMsIGFjdHVhbF9kYXRhKToKICAgICAgICAg ICAgIGFjdHVhbF9kYXRhLnJlbW92ZSh2YWx1ZSkKICAgICAgICAgICAgIGJyZWFrCiAgICAgcmV0 dXJuIGV4cGVjdGVkX291dHB1dAorCisKK2RlZiBpc19wYXJhbGxlbF91aV90ZXN0cyhhcmdzKToK KyAgICAiIiIKKyAgICBUaGlzIGZ1bmN0aW9uIGNoZWNrcyBmb3IgY292ZXJhZ2UgYXJncyBleGlz dHMgaW4gY29tbWFuZCBsaW5lIGFyZ3MKKyAgICA6cmV0dXJuOiBib29sZWFuCisgICAgIiIiCisg ICAgaWYgInBhcmFsbGVsIiBpbiBhcmdzIGFuZCBhcmdzWyJwYXJhbGxlbCJdOgorICAgICAgICBy ZXR1cm4gVHJ1ZQorICAgIHJldHVybiBGYWxzZQorCisKK2RlZiBnZXRfc2VsZW5pdW1fZ3JpZF9z dGF0dXNfYW5kX2Jyb3dzZXJfbGlzdChzZWxlbm9pZF91cmwpOgorICAgICIiIgorICAgIFRoaXMg ZnVuY3Rpb24gY2hlY2tzIHNlbGVub2lkIHN0YXR1cyBmb3IgZ2l2ZW4gdXJsCisgICAgOnBhcmFt IHNlbHJub2lkX3VybDoKKyAgICA6cmV0dXJuOiBzdGF0dXMgb2Ygc2VsZW5vaWQgJiBsaXN0IG9m IGJyb3dzZXJzIGF2YWlsYWJsZSB3aXRoIHNlbGVub2lkIGlmCisgICAgc3RhdHVzIGlzIHVwCisg ICAgIiIiCisgICAgc2VsZW5vaWRfc3RhdHVzID0gRmFsc2UKKyAgICBicm93c2VyX2xpc3QgPSBb XQorICAgIHRyeToKKyAgICAgICAgc2VsZW5vaWRfc3RhdHVzID0gZ2V0X3NlbGVuaXVtX2dyaWRf c3RhdHVzX2pzb24oc2VsZW5vaWRfdXJsKQorICAgICAgICBpZiBzZWxlbm9pZF9zdGF0dXM6Cisg ICAgICAgICAgICBhdmFpbGFibGVfYnJvd3NlcnMgPSBzZWxlbm9pZF9zdGF0dXNbImJyb3dzZXJz Il0KKyAgICAgICAgICAgIGxpc3Rfb2ZfYnJvd3NlcnMgPSB0ZXN0X3NldHVwLmNvbmZpZ19kYXRh WydzZWxlbm9pZF9jb25maWcnXVsKKyAgICAgICAgICAgICAgICAnYnJvd3NlcnNfbGlzdCddCisK KyAgICAgICAgICAgIGZvciBicm93c2VyIGluIGxpc3Rfb2ZfYnJvd3NlcnM6CisgICAgICAgICAg ICAgICAgaWYgYnJvd3NlclsibmFtZSJdLmxvd2VyKCkgaW4gYXZhaWxhYmxlX2Jyb3dzZXJzLmtl eXMoKToKKyAgICAgICAgICAgICAgICAgICAgdmVyc2lvbnMgPSBhdmFpbGFibGVfYnJvd3NlcnNb KGJyb3dzZXJbIm5hbWUiXS5sb3dlcigpKV0KKyAgICAgICAgICAgICAgICAgICAgaWYgYnJvd3Nl clsidmVyc2lvbiJdIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgICAgICBwcmludCgiU3Bl Y2lmaWVkIHZlcnNpb24gb2YgYnJvd3NlciBpcyBOb25lLiBIZW5jZSAiCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAibGF0ZXN0IHZlcnNpb24gb2YgezB9IGF2YWlsYWJsZSB3aXRoIHNl bGVub2lkICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZXJ2ZXIgd2lsbCBiZSB1 c2VkLlxuIi5mb3JtYXQoYnJvd3NlclsibmFtZSJdKSkKKyAgICAgICAgICAgICAgICAgICAgICAg IGJyb3dzZXJfbGlzdC5hcHBlbmQoYnJvd3NlcikKKyAgICAgICAgICAgICAgICAgICAgZWxpZiBi cm93c2VyWyJ2ZXJzaW9uIl0gaW4gdmVyc2lvbnMua2V5cygpOgorICAgICAgICAgICAgICAgICAg ICAgICAgYnJvd3Nlcl9saXN0LmFwcGVuZChicm93c2VyKQorICAgICAgICAgICAgICAgICAgICBl bHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIkF2YWlsYWJsZSB7MH0gdmVyc2lvbnMgezF9Ii5mb3JtYXQoCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGJyb3dzZXJbIm5hbWUiXSwgdmVyc2lvbnMua2V5cygpKSkK KyAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCJTcGVjaWZpZWQgVmVyc2lvbiA9IHswfSIu Zm9ybWF0KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyb3dzZXJbInZlcnNpb24iXSkp CisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcHJpbnQoInswfSBp cyBOT1QgYXZhaWxhYmxlIi5mb3JtYXQoYnJvd3NlclsibmFtZSJdKSkKKyAgICBleGNlcHQgRXhj ZXB0aW9uIGFzIGU6CisgICAgICAgIChzdHIoZSkpCisgICAgICAgIHByaW50KCJVbmFibGUgdG8g ZmluZCBTZWxlbm9pZCBTdGF0dXMiKQorCisgICAgcmV0dXJuIHNlbGVub2lkX3N0YXR1cywgYnJv d3Nlcl9saXN0CisKKworZGVmIGlzX2ZlYXR1cmVfdGVzdF9pbmNsdWRlZChhcmd1bWVudHMpOgor ICAgICIiIgorICAgIDpwYXJhbSBhcmd1bWVudHM6IGhpcyBpcyBjb21tYW5kIGxpbmUgYXJndW1l bnRzIGZvciBtb2R1bGUgbmFtZSB0bworICAgIHdoaWNoIHRlc3Qgc3VpdGUgd2lsbCBydW4KKyAg ICA6cmV0dXJuOiBib29sZWFuIHZhbHVlIHdoZXRoZXIgdG8gZXhlY3V0ZSBmZWF0dXJlIHRlc3Rz IG9yIE5PVCAmCisgICAgYnJvd3NlciBuYW1lIGlmIGZlYXR1cmVfdGVzdF90b2JlX2luY2x1ZGVk ID0gVHJ1ZQorICAgICIiIgorICAgIGV4Y2x1ZGVfcGtncyA9IFtdCisgICAgaWYgYXJndW1lbnRz WydleGNsdWRlJ10gaXMgbm90IE5vbmU6CisgICAgICAgIGV4Y2x1ZGVfcGtncyArPSBhcmd1bWVu dHNbJ2V4Y2x1ZGUnXS5zcGxpdCgnLCcpCisKKyAgICBmZWF0dXJlX3Rlc3RfdG9iZV9pbmNsdWRl ZCA9ICdmZWF0dXJlX3Rlc3RzJyBub3QgaW4gZXhjbHVkZV9wa2dzIGFuZCBcCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoYXJndW1lbnRzWydwa2cnXSBpcyBOb25lIG9yIGFyZ3Vt ZW50c1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGtnJ10gPT0gImFs bCIgb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmd1bWVudHNbJ3BrZydd ID09ICJmZWF0dXJlX3Rlc3RzIikKKyAgICByZXR1cm4gZmVhdHVyZV90ZXN0X3RvYmVfaW5jbHVk ZWQKKworCitkZWYgbGF1bmNoX3VybF9pbl9icm93c2VyKGRyaXZlcl9pbnN0YW5jZSwgdXJsLCB0 aXRsZT0ncGdBZG1pbiA0JywgdGltZW91dD00MCk6CisgICAgIiIiCisgICAgRnVuY3Rpb24gbGF1 bmNoZXMgdXJscyBpbiBzcGVjaWZpZWQgZHJpdmVyIGluc3RhbmNlCisgICAgOnBhcmFtIGRyaXZl cl9pbnN0YW5jZTpicm93c2VyIGluc3RhbmNlCisgICAgOnBhcmFtIHVybDp1cmwgdG8gYmUgbGF1 bmNoZWQKKyAgICA6cGFyYW0gdGl0bGU6d2ViLXBhZ2UgdGlsZSBvbiBzdWNjZXNzZnVsIGxhdW5j aCBkZWZhdWx0IGlzICdwZ0FkbWluIDQnCisgICAgOnBhcmFtIHRpbWVvdXQ6aW4gc2Vjb25kcyBm b3IgZ2V0dGluZyBzcGVjaWZpZWQgdGl0bGUgZGVmYXVsdCBpcyAyMHNlYworICAgIDpyZXR1cm46 CisgICAgIiIiCisgICAgY291bnQgPSB0aW1lb3V0IC8gNQorICAgIHdoaWxlIGNvdW50ID4gMDoK KyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZHJpdmVyX2luc3RhbmNlLmdldCh1cmwpCisgICAg ICAgICAgICB3YWl0ID0gV2ViRHJpdmVyV2FpdChkcml2ZXJfaW5zdGFuY2UsIDEwKQorICAgICAg ICAgICAgd2FpdC51bnRpbChlYy50aXRsZV9pcyh0aXRsZSkpCisgICAgICAgICAgICBicmVhawor ICAgICAgICBleGNlcHQgV2ViRHJpdmVyRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICB0aW1l LnNsZWVwKDYpCisgICAgICAgICAgICBjb3VudCAtPSAxCisgICAgICAgICAgICBpZiBjb3VudCA9 PSAwOgorICAgICAgICAgICAgICAgIGV4Y2VwdGlvbl9tc2cgPSAnV2ViLXBhZ2UgdGl0bGUgZGlk IG5vdCBtYXRjaCB0byB7MH0uICcgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn UGxlYXNlIGNoZWNrIHVybCB7MX0gYWNjZXNzaWJsZSBvbiAnIFwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJ2ludGVybmV0LicuZm9ybWF0KHRpdGxlLCB1cmwpCisgICAgICAgICAg ICAgICAgcmFpc2UgRXhjZXB0aW9uKGV4Y2VwdGlvbl9tc2cpCisKKworZGVmIGdldF9yZW1vdGVf d2ViZHJpdmVyKGh1Yl91cmwsIGJyb3dzZXIsIGJyb3dzZXJfdmVyLCB0ZXN0X25hbWUpOgorICAg ICIiIgorICAgIFRoaXMgZnVuY3Rpb25zIHJldHVybnMgcmVtb3RlIHdlYi1kcml2ZXIgaW5zdGFu Y2UgY3JlYXRlZCBpbiBzZWxlbm9pZAorICAgIG1hY2hpbmUuCisgICAgOnBhcmFtIGh1Yl91cmwK KyAgICA6cGFyYW0gYnJvd3NlcjogYnJvd3NlciBuYW1lCisgICAgOnBhcmFtIGJyb3dzZXJfdmVy OiB2ZXJzaW9uIGZvciBicm93c2VyCisgICAgOnBhcmFtIHRlc3RfbmFtZTogdGVzdCBuYW1lCisg ICAgOnJldHVybjogcmVtb3RlIHdlYi1kcml2ZXIgaW5zdGFuY2UgZm9yIHNwZWNpZmllZCBicm93 c2VyCisgICAgIiIiCisgICAgdGVzdF9uYW1lID0gYnJvd3NlciArIGJyb3dzZXJfdmVyICsgIl8i ICsgdGVzdF9uYW1lICsgIi0iICsgdGltZS5zdHJmdGltZSgKKyAgICAgICAgIiVtXyVkXyV5XyVI XyVNXyVTIiwgdGltZS5sb2NhbHRpbWUoKSkKKyAgICBkcml2ZXJfbG9jYWwgPSBOb25lCisKKyAg ICBkZXNpcmVkX2NhcGFiaWxpdGllcyA9IHsKKyAgICAgICAgInZlcnNpb24iOiBicm93c2VyX3Zl ciwKKyAgICAgICAgImVuYWJsZVZOQyI6IFRydWUsCisgICAgICAgICJlbmFibGVWaWRlbyI6IFRy dWUsCisgICAgICAgICJlbmFibGVMb2ciOiBUcnVlLAorICAgICAgICAidmlkZW9OYW1lIjogdGVz dF9uYW1lICsgIi5tcDQiLAorICAgICAgICAibG9nTmFtZSI6IHRlc3RfbmFtZSArICIubG9nIiwK KyAgICAgICAgIm5hbWUiOiB0ZXN0X25hbWUsCisgICAgICAgICJ0aW1lWm9uZSI6ICJBc2lhL0tv bGthdGEiCisgICAgfQorCisgICAgaWYgYnJvd3NlciA9PSAnZmlyZWZveCc6CisgICAgICAgIHBy b2ZpbGUgPSB3ZWJkcml2ZXIuRmlyZWZveFByb2ZpbGUoKQorICAgICAgICBwcm9maWxlLnNldF9w cmVmZXJlbmNlKCJkb20uZGlzYWJsZV9iZWZvcmV1bmxvYWQiLCBUcnVlKQorICAgICAgICBkZXNp cmVkX2NhcGFiaWxpdGllc1siYnJvd3Nlck5hbWUiXSA9ICJmaXJlZm94IgorICAgICAgICBkZXNp cmVkX2NhcGFiaWxpdGllc1sicmVxdWlyZVdpbmRvd0ZvY3VzIl0gPSBUcnVlCisgICAgICAgIGRl c2lyZWRfY2FwYWJpbGl0aWVzWyJlbmFibGVQZXJzaXN0ZW50SG92ZXIiXSA9IEZhbHNlCisgICAg ICAgIGRyaXZlcl9sb2NhbCA9IHdlYmRyaXZlci5SZW1vdGUoCisgICAgICAgICAgICBjb21tYW5k X2V4ZWN1dG9yPWh1Yl91cmwsCisgICAgICAgICAgICBkZXNpcmVkX2NhcGFiaWxpdGllcz1kZXNp cmVkX2NhcGFiaWxpdGllcywgYnJvd3Nlcl9wcm9maWxlPXByb2ZpbGUpCisgICAgZWxpZiBicm93 c2VyID09ICdjaHJvbWUnOgorICAgICAgICBvcHRpb25zID0gT3B0aW9ucygpCisgICAgICAgIG9w dGlvbnMuYWRkX2FyZ3VtZW50KCItLXdpbmRvdy1zaXplPTEyODAsMTAyNCIpCisgICAgICAgIGRl c2lyZWRfY2FwYWJpbGl0aWVzWyJicm93c2VyTmFtZSJdID0gImNocm9tZSIKKyAgICAgICAgZHJp dmVyX2xvY2FsID0gd2ViZHJpdmVyLlJlbW90ZSgKKyAgICAgICAgICAgIGNvbW1hbmRfZXhlY3V0 b3I9aHViX3VybCwKKyAgICAgICAgICAgIGRlc2lyZWRfY2FwYWJpbGl0aWVzPWRlc2lyZWRfY2Fw YWJpbGl0aWVzLCBvcHRpb25zPW9wdGlvbnMpCisgICAgZWxzZToKKyAgICAgICAgcHJpbnQoIlNw ZWNpZmllZCBicm93c2VyIGRvZXMgbm90IGV4aXN0LiIpCisKKyAgICAjIG1heGltaXplIGJyb3dz ZXIgd2luZG93CisgICAgZHJpdmVyX2xvY2FsLm1heGltaXplX3dpbmRvdygpCisKKyAgICAjIGRy aXZlcl9sb2NhbC5pbXBsaWNpdGx5X3dhaXQoMikKKyAgICByZXR1cm4gZHJpdmVyX2xvY2FsCisK KworZGVmIGdldF9wYXJhbGxlbF9zZXF1ZW50aWFsX21vZHVsZV9saXN0KG1vZHVsZV9saXN0KToK KyAgICAiIiIKKyAgICBGdW5jdGlvbnMgc2VncmVnYXRlIHBhcmFsbGVsICYgc2VxdWVudGlhbCBt b2R1bGVzCisgICAgOnBhcmFtIG1vZHVsZV9saXN0OiBDb21wbGV0ZSBsaXN0IG9mIG1vZHVsZXMK KyAgICA6cmV0dXJuOiBwYXJhbGxlbCAmIHNlcXVlbnRpYWwgbW9kdWxlIGxpc3RzCisgICAgIiIi CisgICAgIyBsaXN0IG9mIGZpbGVzIGNvbnNpc3RpbmcgdGVzdHMgdGhhdCBuZWVkcyB0byBiZQor ICAgICMgZXhlY3V0ZWQgc2VxdWVudGlhbGx5CisgICAgc2VxdWVudGlhbF90ZXN0c19maWxlID0g WworICAgICAgICAncGdhZG1pbi5mZWF0dXJlX3Rlc3RzLnBnX3V0aWxpdGllc19iYWNrdXBfcmVz dG9yZV90ZXN0JywKKyAgICAgICAgJ3BnYWRtaW4uZmVhdHVyZV90ZXN0cy5wZ191dGlsaXRpZXNf bWFpbnRlbmFuY2VfdGVzdCcsCisgICAgICAgICdwZ2FkbWluLmZlYXR1cmVfdGVzdHMua2V5Ym9h cmRfc2hvcnRjdXRfdGVzdCddCisKKyAgICAjICBsaXN0IG9mIHRlc3RzIGNhbiBiZSBleGVjdXRl ZCBpbiBwYXJhbGxlbAorICAgIHBhcmFsbGVsX3Rlc3RzID0gbGlzdChtb2R1bGVfbGlzdCkKKyAg ICBmb3IgbW9kdWxlIGluIG1vZHVsZV9saXN0OgorICAgICAgICBpZiBzdHIobW9kdWxlWzBdKSBp biBzZXF1ZW50aWFsX3Rlc3RzX2ZpbGU6CisgICAgICAgICAgICBwYXJhbGxlbF90ZXN0cy5yZW1v dmUobW9kdWxlKQorCisgICAgIyAgbGlzdCBvZiB0ZXN0cyBjYW4gYmUgZXhlY3V0ZWQgaW4gc2Vx dWVudGlhbGx5CisgICAgc2VxdWVudGlhbF90ZXN0cyA9IGxpc3QoCisgICAgICAgIGZpbHRlcihs YW1iZGEgaTogaSBub3QgaW4gcGFyYWxsZWxfdGVzdHMsCisgICAgICAgICAgICAgICBtb2R1bGVf bGlzdCkpCisKKyAgICAjIHJldHVybiBwYXJhbGxlbCAmIHNlcXVlbnRpYWwgbGlzdHMKKyAgICBy ZXR1cm4gcGFyYWxsZWxfdGVzdHMsIHNlcXVlbnRpYWxfdGVzdHMKKworCitkZWYgZ2V0X2Jyb3dz ZXJfZGV0YWlscyhicm93c2VyX2luZm9fZGljdCwgdXJsKToKKyAgICAiIiIKKyAgICBGdW5jdGlv biBleHRyYWN0cyBicm93c2VyIG5hbWUgJiB2ZXJzaW9uIGZyb20gYnJvd3NlciBpbmZvIGRpY3QK KyAgICBpbiB0ZXN0X2NvbmZpZy5qc29uCisgICAgOnBhcmFtIGJyb3dzZXJfaW5mb19kaWN0Ogor ICAgIDpyZXR1cm46IGJyb3dzZXIgbmFtZSAmIHZlcnNpb24KKyAgICAiIiIKKyAgICBicm93c2Vy X25hbWUgPSBicm93c2VyX2luZm9fZGljdFsibmFtZSJdLmxvd2VyKCkKKyAgICBicm93c2VyX3Zl cnNpb24gPSBicm93c2VyX2luZm9fZGljdFsidmVyc2lvbiJdCisgICAgaWYgYnJvd3Nlcl92ZXJz aW9uIGlzIE5vbmU6CisgICAgICAgIHNlbGVub2lkX3N0YXR1cyA9IGdldF9zZWxlbml1bV9ncmlk X3N0YXR1c19qc29uKHVybCkKKyAgICAgICAgdmVyc2lvbnMgPSBzZWxlbm9pZF9zdGF0dXNbImJy b3dzZXJzIl1bYnJvd3Nlcl9uYW1lXQorICAgICAgICBicm93c2VyX3ZlcnNpb24gPSBtYXgodmVy c2lvbnMpCisgICAgcmV0dXJuIGJyb3dzZXJfbmFtZSwgYnJvd3Nlcl92ZXJzaW9uCisKKworZGVm IHByaW50X3Rlc3Rfc3VtbWFyeShjb21wbGV0ZV9tb2R1bGVfbGlzdCwgcGFyYWxsZWxfdGVzdGxp c3QsCisgICAgICAgICAgICAgICAgICAgICAgIHNlcXVlbnRpYWxfdGVzdHNfbGlzdCwgYnJvd3Nl cl9uYW1lLCBicm93c2VyX3ZlcnNpb24pOgorICAgICIiIgorICAgIFByaW50cyB0ZXN0IHN1bW1h cnkgYWJvdXQgdG90YWwsIHBhcmFsbGVsLCBzZXF1ZW50aWFsLCBicm93c2VyIG5hbWUsCisgICAg YnJvd3NlciB2ZXJzaW9uIGluZm9ybWF0aW9uCisgICAgOnBhcmFtIGNvbXBsZXRlX21vZHVsZV9s aXN0OgorICAgIDpwYXJhbSBwYXJhbGxlbF90ZXN0bGlzdDoKKyAgICA6cGFyYW0gc2VxdWVudGlh bF90ZXN0c19saXN0OgorICAgIDpwYXJhbSBicm93c2VyX25hbWU6CisgICAgOnBhcmFtIGJyb3dz ZXJfdmVyc2lvbjoKKyAgICAiIiIKKyAgICBwcmludCgKKyAgICAgICAgIj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IiwKKyAg ICAgICAgZmlsZT1zeXMuc3RkZXJyCisgICAgKQorICAgIHByaW50KAorICAgICAgICAiVG90YWwg VGVzdHMgIyB7MH1cblBhcmFsbGVsIFRlc3RzICMgezF9LCAiCisgICAgICAgICJTZXF1ZW50aWFs IFRlc3RzICMgezJ9Ii5mb3JtYXQoCisgICAgICAgICAgICBsZW4oY29tcGxldGVfbW9kdWxlX2xp c3QpLCBsZW4ocGFyYWxsZWxfdGVzdGxpc3QpLAorICAgICAgICAgICAgbGVuKHNlcXVlbnRpYWxf dGVzdHNfbGlzdCkpLAorICAgICAgICBmaWxlPXN5cy5zdGRlcnIpCisgICAgcHJpbnQoIkJyb3dz ZXI6IFtOYW1lOnswfSwgVmVyc2lvbjogezF9XSIuZm9ybWF0KAorICAgICAgICBicm93c2VyX25h bWUuY2FwaXRhbGl6ZSgpLCBicm93c2VyX3ZlcnNpb24pLAorICAgICAgICBmaWxlPXN5cy5zdGRl cnIpCisgICAgcHJpbnQoCisgICAgICAgICI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuIiwKKyAgICAgICAgZmlsZT1zeXMu c3RkZXJyCisgICAgKQorCisKK2RlZiBnZXRfc2VsZW5pdW1fZ3JpZF9zdGF0dXNfanNvbihzZWxl bm9pZF91cmwpOgorICAgICIiIgorICAgIEZ1bmN0aW9ucyByZXR1cm5zIGpzb24gcmVzcG9uc2Ug cmVjZWl2ZWQgZnJvbSBzZWxlbm9pZCBzZXJ2ZXIKKyAgICA6cGFyYW0gc2VsZW5vaWRfdXJsOgor ICAgIDpyZXR1cm46CisgICAgIiIiCisgICAgdHJ5OgorICAgICAgICBzZWxlbm9pZF9zdGF0dXMg PSB1cmxsaWIudXJsb3BlbigKKyAgICAgICAgICAgICJodHRwOi8vIiArIHJlLnNwbGl0KCcvJywg KHJlLnNwbGl0KCcvLycsIHNlbGVub2lkX3VybCwgMSlbMV0pKVsKKyAgICAgICAgICAgICAgICAw XSArICIvc3RhdHVzIiwgdGltZW91dD0xMCkKKyAgICAgICAgc2VsZW5vaWRfc3RhdHVzID0ganNv bi5sb2FkKHNlbGVub2lkX3N0YXR1cykKKyAgICAgICAgaWYgaXNpbnN0YW5jZShzZWxlbm9pZF9z dGF0dXMsIGRpY3QpOgorICAgICAgICAgICAgcmV0dXJuIHNlbGVub2lkX3N0YXR1cworICAgIGV4 Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgcHJpbnQoIlVuYWJsZSB0byBmaW5kIFNlbGVu b2lkIFN0YXR1cy5LaW5kbHkgY2hlY2sgdXJsIHBhc3NlZCAtJ3swfSciLgorICAgICAgICAgICAg ICBmb3JtYXQoc2VsZW5vaWRfdXJsKSkKKyAgICAgICAgcmV0dXJuIE5vbmUKZGlmZiAtLWdpdCBh L3dlYi9yZWdyZXNzaW9uL3JlcXVpcmVtZW50cy50eHQgYi93ZWIvcmVncmVzc2lvbi9yZXF1aXJl bWVudHMudHh0CmluZGV4IDFlYjkyMmIuLjIzNjdmMmEgMTAwNjQ0Ci0tLSBhL3dlYi9yZWdyZXNz aW9uL3JlcXVpcmVtZW50cy50eHQKKysrIGIvd2ViL3JlZ3Jlc3Npb24vcmVxdWlyZW1lbnRzLnR4 dApAQCAtMjEsNyArMjEsNiBAQCBmaXh0dXJlcz09My4wLjAKIGxpbmVjYWNoZTI9PTEuMC4wCiBw YnI9PTMuMS4xCiBweWNvZGVzdHlsZT49Mi41LjAKLXB5cGVyY2xpcH49MS42LjAKIHB5dGhvbi1t aW1lcGFyc2U9PTEuNi4wCiB0ZXN0c2NlbmFyaW9zPT0wLjUuMAogdGVzdHRvb2xzPT0yLjMuMApk aWZmIC0tZ2l0IGEvd2ViL3JlZ3Jlc3Npb24vcnVudGVzdHMucHkgYi93ZWIvcmVncmVzc2lvbi9y dW50ZXN0cy5weQppbmRleCA0ODBhYWFkLi44NzU5YmUzIDEwMDY0NAotLS0gYS93ZWIvcmVncmVz c2lvbi9ydW50ZXN0cy5weQorKysgYi93ZWIvcmVncmVzc2lvbi9ydW50ZXN0cy5weQpAQCAtMjEs NyArMjEsOCBAQCBpbXBvcnQgdHJhY2ViYWNrCiBpbXBvcnQganNvbgogaW1wb3J0IHJhbmRvbQog aW1wb3J0IGNvdmVyYWdlCi0KK2ltcG9ydCB0aHJlYWRpbmcKK2ltcG9ydCB0aW1lCiBpbXBvcnQg dW5pdHRlc3QKIAogaWYgc3lzLnZlcnNpb25faW5mbyA8ICgzLCA0KToKQEAgLTEzNiw3ICsxMzcs NyBAQCBzY2VuYXJpb3MuYXBwbHlfc2NlbmFyaW8gPSB0ZXN0X3V0aWxzLmFwcGx5X3NjZW5hcmlv CiAKIAogZGVmIGdldF9zdWl0ZShtb2R1bGVfbGlzdCwgdGVzdF9zZXJ2ZXIsIHRlc3RfYXBwX2Ns aWVudCwgc2VydmVyX2luZm9ybWF0aW9uLAotICAgICAgICAgICAgICB0ZXN0X2RiX25hbWUpOgor ICAgICAgICAgICAgICB0ZXN0X2RiX25hbWUsIGRyaXZlcl9wYXNzZWQpOgogICAgICIiIgogICAg ICBUaGlzIGZ1bmN0aW9uIGFkZCB0aGUgdGVzdHMgdG8gdGVzdCBzdWl0ZSBhbmQgcmV0dXJuIG1v ZGlmaWVkIHRlc3Qgc3VpdGUKICAgICAgIHZhcmlhYmxlLgpAQCAtMTY2LDcgKzE2Nyw3IEBAIGRl ZiBnZXRfc3VpdGUobW9kdWxlX2xpc3QsIHRlc3Rfc2VydmVyLCB0ZXN0X2FwcF9jbGllbnQsIHNl cnZlcl9pbmZvcm1hdGlvbiwKICAgICAgICAgb2JqLnNldEFwcChhcHApCiAgICAgICAgIG9iai5z ZXRUZXN0Q2xpZW50KHRlc3RfYXBwX2NsaWVudCkKICAgICAgICAgb2JqLnNldFRlc3RTZXJ2ZXIo dGVzdF9zZXJ2ZXIpCi0gICAgICAgIG9iai5zZXREcml2ZXIoZHJpdmVyKQorICAgICAgICBvYmou c2V0RHJpdmVyKGRyaXZlcl9wYXNzZWQpCiAgICAgICAgIG9iai5zZXRTZXJ2ZXJJbmZvcm1hdGlv bihzZXJ2ZXJfaW5mb3JtYXRpb24pCiAgICAgICAgIG9iai5zZXRUZXN0RGF0YWJhc2VOYW1lKHRl c3RfZGJfbmFtZSkKICAgICAgICAgc2NlbmFyaW8gPSBzY2VuYXJpb3MuZ2VuZXJhdGVfc2NlbmFy aW9zKG9iaikKQEAgLTIwNyw1NyArMjA4LDYyIEBAIGRlZiBnZXRfdGVzdF9tb2R1bGVzKGFyZ3Vt ZW50cyk6CiAgICAgICAgIGV4Y2x1ZGVfcGtncyArPSBhcmd1bWVudHNbJ2V4Y2x1ZGUnXS5zcGxp dCgnLCcpCiAKICAgICBpZiAnZmVhdHVyZV90ZXN0cycgbm90IGluIGV4Y2x1ZGVfcGtncyBhbmQg XAotICAgICAgICAgICAgKGFyZ3VtZW50c1sncGtnJ10gaXMgTm9uZSBvciBhcmd1bWVudHNbJ3Br ZyddID09ICJhbGwiIG9yCi0gICAgICAgICAgICAgYXJndW1lbnRzWydwa2cnXSA9PSAiZmVhdHVy ZV90ZXN0cyIpOgotCi0gICAgICAgIGZyb20gc2VsZW5pdW0gaW1wb3J0IHdlYmRyaXZlcgotICAg ICAgICBmcm9tIHNlbGVuaXVtLndlYmRyaXZlci5jaHJvbWUub3B0aW9ucyBpbXBvcnQgT3B0aW9u cwotICAgICAgICBmcm9tIHNlbGVuaXVtLndlYmRyaXZlci5jb21tb24uZGVzaXJlZF9jYXBhYmls aXRpZXMgaW1wb3J0IFwKLSAgICAgICAgICAgIERlc2lyZWRDYXBhYmlsaXRpZXMKLQotICAgICAg ICBkZWZhdWx0X2Jyb3dzZXIgPSAnY2hyb21lJwotCi0gICAgICAgICMgQ2hlY2sgZGVmYXVsdCBi cm93c2VyIHByb3ZpZGVkIHRocm91Z2ggY29tbWFuZCBsaW5lLiBJZiBwcm92aWRlZAotICAgICAg ICAjIHRoZW4gdXNlIHRoYXQgYnJvd3NlciBhcyBkZWZhdWx0IGJyb3dzZXIgZWxzZSBjaGVjayBm b3IgdGhlIHNldHRpbmcKLSAgICAgICAgIyBwcm92aWRlZCBpbiB0ZXN0X2NvbmZpZy5qc29uIGZp bGUuCi0gICAgICAgIGlmICgKLSAgICAgICAgICAgICdkZWZhdWx0X2Jyb3dzZXInIGluIGFyZ3Vt ZW50cyBhbmQKLSAgICAgICAgICAgIGFyZ3VtZW50c1snZGVmYXVsdF9icm93c2VyJ10gaXMgbm90 IE5vbmUKLSAgICAgICAgKToKLSAgICAgICAgICAgIGRlZmF1bHRfYnJvd3NlciA9IGFyZ3VtZW50 c1snZGVmYXVsdF9icm93c2VyJ10ubG93ZXIoKQotICAgICAgICBlbGlmICgKLSAgICAgICAgICAg IHRlc3Rfc2V0dXAuY29uZmlnX2RhdGEgYW5kCi0gICAgICAgICAgICAiZGVmYXVsdF9icm93c2Vy IiBpbiB0ZXN0X3NldHVwLmNvbmZpZ19kYXRhCi0gICAgICAgICk6Ci0gICAgICAgICAgICBkZWZh dWx0X2Jyb3dzZXIgPSB0ZXN0X3NldHVwLmNvbmZpZ19kYXRhWydkZWZhdWx0X2Jyb3dzZXInXS5s b3dlcigpCi0KLSAgICAgICAgaWYgZGVmYXVsdF9icm93c2VyID09ICdmaXJlZm94JzoKLSAgICAg ICAgICAgIGNhcCA9IERlc2lyZWRDYXBhYmlsaXRpZXMuRklSRUZPWAotICAgICAgICAgICAgY2Fw WydyZXF1aXJlV2luZG93Rm9jdXMnXSA9IFRydWUKLSAgICAgICAgICAgIGNhcFsnZW5hYmxlUGVy c2lzdGVudEhvdmVyJ10gPSBGYWxzZQotICAgICAgICAgICAgcHJvZmlsZSA9IHdlYmRyaXZlci5G aXJlZm94UHJvZmlsZSgpCi0gICAgICAgICAgICBwcm9maWxlLnNldF9wcmVmZXJlbmNlKCJkb20u ZGlzYWJsZV9iZWZvcmV1bmxvYWQiLCBUcnVlKQotICAgICAgICAgICAgZHJpdmVyID0gd2ViZHJp dmVyLkZpcmVmb3goY2FwYWJpbGl0aWVzPWNhcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGZpcmVmb3hfcHJvZmlsZT1wcm9maWxlKQotICAgICAgICAgICAgZHJpdmVy LmltcGxpY2l0bHlfd2FpdCgxKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgb3B0aW9ucyA9 IE9wdGlvbnMoKQotICAgICAgICAgICAgaWYgdGVzdF9zZXR1cC5jb25maWdfZGF0YToKLSAgICAg ICAgICAgICAgICBpZiAnaGVhZGxlc3NfY2hyb21lJyBpbiB0ZXN0X3NldHVwLmNvbmZpZ19kYXRh OgotICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0X3NldHVwLmNvbmZpZ19kYXRhWydoZWFkbGVz c19jaHJvbWUnXToKLSAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuYWRkX2FyZ3VtZW50 KCItLWhlYWRsZXNzIikKLSAgICAgICAgICAgIG9wdGlvbnMuYWRkX2FyZ3VtZW50KCItLW5vLXNh bmRib3giKQotICAgICAgICAgICAgb3B0aW9ucy5hZGRfYXJndW1lbnQoIi0tZGlzYWJsZS1zZXR1 aWQtc2FuZGJveCIpCi0gICAgICAgICAgICBvcHRpb25zLmFkZF9hcmd1bWVudCgiLS13aW5kb3ct c2l6ZT0xMjgwLDEwMjQiKQotICAgICAgICAgICAgb3B0aW9ucy5hZGRfYXJndW1lbnQoIi0tZGlz YWJsZS1pbmZvYmFycyIpCi0gICAgICAgICAgICBvcHRpb25zLmFkZF9leHBlcmltZW50YWxfb3B0 aW9uKCd3M2MnLCBGYWxzZSkKLSAgICAgICAgICAgIGRyaXZlciA9IHdlYmRyaXZlci5DaHJvbWUo Y2hyb21lX29wdGlvbnM9b3B0aW9ucykKLQotICAgICAgICAjIG1heGltaXplIGJyb3dzZXIgd2lu ZG93Ci0gICAgICAgIGRyaXZlci5tYXhpbWl6ZV93aW5kb3coKQotCi0gICAgICAgIGFwcF9zdGFy dGVyID0gQXBwU3RhcnRlcihkcml2ZXIsIGNvbmZpZykKLSAgICAgICAgYXBwX3N0YXJ0ZXIuc3Rh cnRfYXBwKCkKKyAgICAgICAgKGFyZ3VtZW50c1sncGtnJ10gaXMgTm9uZSBvciBhcmd1bWVudHNb J3BrZyddID09ICJhbGwiIG9yCisgICAgICAgICBhcmd1bWVudHNbJ3BrZyddID09ICJmZWF0dXJl X3Rlc3RzIik6CisKKyAgICAgICAgaWYgYXJndW1lbnRzWydwa2cnXSA9PSAiZmVhdHVyZV90ZXN0 cyI6CisgICAgICAgICAgICBleGNsdWRlX3BrZ3MuZXh0ZW5kKFsncmVzcWwnXSkKKworICAgICAg ICBpZiBub3QgdGVzdF91dGlscy5pc19wYXJhbGxlbF91aV90ZXN0cyhhcmdzKToKKyAgICAgICAg ICAgIGZyb20gc2VsZW5pdW0gaW1wb3J0IHdlYmRyaXZlcgorICAgICAgICAgICAgZnJvbSBzZWxl bml1bS53ZWJkcml2ZXIuY2hyb21lLm9wdGlvbnMgaW1wb3J0IE9wdGlvbnMKKyAgICAgICAgICAg IGZyb20gc2VsZW5pdW0ud2ViZHJpdmVyLmNvbW1vbi5kZXNpcmVkX2NhcGFiaWxpdGllcyBpbXBv cnQgXAorICAgICAgICAgICAgICAgIERlc2lyZWRDYXBhYmlsaXRpZXMKKworICAgICAgICAgICAg ZGVmYXVsdF9icm93c2VyID0gJ2Nocm9tZScKKworICAgICAgICAgICAgIyBDaGVjayBkZWZhdWx0 IGJyb3dzZXIgcHJvdmlkZWQgdGhyb3VnaCBjb21tYW5kIGxpbmUuIElmIHByb3ZpZGVkCisgICAg ICAgICAgICAjIHRoZW4gdXNlIHRoYXQgYnJvd3NlciBhcyBkZWZhdWx0IGJyb3dzZXIgZWxzZSBj aGVjayBmb3IgdGhlCisgICAgICAgICAgICAjIHNldHRpbmcgcHJvdmlkZWQgaW4gdGVzdF9jb25m aWcuanNvbiBmaWxlLgorICAgICAgICAgICAgaWYgKAorICAgICAgICAgICAgICAgICdkZWZhdWx0 X2Jyb3dzZXInIGluIGFyZ3VtZW50cyBhbmQKKyAgICAgICAgICAgICAgICBhcmd1bWVudHNbJ2Rl ZmF1bHRfYnJvd3NlciddIGlzIG5vdCBOb25lCisgICAgICAgICAgICApOgorICAgICAgICAgICAg ICAgIGRlZmF1bHRfYnJvd3NlciA9IGFyZ3VtZW50c1snZGVmYXVsdF9icm93c2VyJ10ubG93ZXIo KQorICAgICAgICAgICAgZWxpZiAoCisgICAgICAgICAgICAgICAgdGVzdF9zZXR1cC5jb25maWdf ZGF0YSBhbmQKKyAgICAgICAgICAgICAgICAiZGVmYXVsdF9icm93c2VyIiBpbiB0ZXN0X3NldHVw LmNvbmZpZ19kYXRhCisgICAgICAgICAgICApOgorICAgICAgICAgICAgICAgIGRlZmF1bHRfYnJv d3NlciA9IHRlc3Rfc2V0dXAuY29uZmlnX2RhdGFbCisgICAgICAgICAgICAgICAgICAgICdkZWZh dWx0X2Jyb3dzZXInXS5sb3dlcigpCisKKyAgICAgICAgICAgIGlmIGRlZmF1bHRfYnJvd3NlciA9 PSAnZmlyZWZveCc6CisgICAgICAgICAgICAgICAgY2FwID0gRGVzaXJlZENhcGFiaWxpdGllcy5G SVJFRk9YCisgICAgICAgICAgICAgICAgY2FwWydyZXF1aXJlV2luZG93Rm9jdXMnXSA9IFRydWUK KyAgICAgICAgICAgICAgICBjYXBbJ2VuYWJsZVBlcnNpc3RlbnRIb3ZlciddID0gRmFsc2UKKyAg ICAgICAgICAgICAgICBwcm9maWxlID0gd2ViZHJpdmVyLkZpcmVmb3hQcm9maWxlKCkKKyAgICAg ICAgICAgICAgICBwcm9maWxlLnNldF9wcmVmZXJlbmNlKCJkb20uZGlzYWJsZV9iZWZvcmV1bmxv YWQiLCBUcnVlKQorICAgICAgICAgICAgICAgIGRyaXZlciA9IHdlYmRyaXZlci5GaXJlZm94KGNh cGFiaWxpdGllcz1jYXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZmlyZWZveF9wcm9maWxlPXByb2ZpbGUpCisgICAgICAgICAgICAgICAgZHJpdmVyLmltcGxp Y2l0bHlfd2FpdCgxKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBvcHRpb25z ID0gT3B0aW9ucygpCisgICAgICAgICAgICAgICAgaWYgdGVzdF9zZXR1cC5jb25maWdfZGF0YToK KyAgICAgICAgICAgICAgICAgICAgaWYgJ2hlYWRsZXNzX2Nocm9tZScgaW4gdGVzdF9zZXR1cC5j b25maWdfZGF0YToKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3Rfc2V0dXAuY29uZmln X2RhdGFbJ2hlYWRsZXNzX2Nocm9tZSddOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9w dGlvbnMuYWRkX2FyZ3VtZW50KCItLWhlYWRsZXNzIikKKyAgICAgICAgICAgICAgICBvcHRpb25z LmFkZF9hcmd1bWVudCgiLS1uby1zYW5kYm94IikKKyAgICAgICAgICAgICAgICBvcHRpb25zLmFk ZF9hcmd1bWVudCgiLS1kaXNhYmxlLXNldHVpZC1zYW5kYm94IikKKyAgICAgICAgICAgICAgICBv cHRpb25zLmFkZF9hcmd1bWVudCgiLS13aW5kb3ctc2l6ZT0xMjgwLDEwMjQiKQorICAgICAgICAg ICAgICAgIG9wdGlvbnMuYWRkX2FyZ3VtZW50KCItLWRpc2FibGUtaW5mb2JhcnMiKQorICAgICAg ICAgICAgICAgIG9wdGlvbnMuYWRkX2V4cGVyaW1lbnRhbF9vcHRpb24oJ3czYycsIEZhbHNlKQor ICAgICAgICAgICAgICAgIGRyaXZlciA9IHdlYmRyaXZlci5DaHJvbWUoY2hyb21lX29wdGlvbnM9 b3B0aW9ucykKKworICAgICAgICAgICAgIyBtYXhpbWl6ZSBicm93c2VyIHdpbmRvdworICAgICAg ICAgICAgZHJpdmVyLm1heGltaXplX3dpbmRvdygpCisKKyAgICAgICAgICAgIGFwcF9zdGFydGVy ID0gQXBwU3RhcnRlcihkcml2ZXIsIGNvbmZpZykKKyAgICAgICAgICAgIGFwcF9zdGFydGVyLnN0 YXJ0X2FwcCgpCiAKICAgICBoYW5kbGVfY2xlYW51cCA9IHRlc3RfdXRpbHMuZ2V0X2NsZWFudXBf aGFuZGxlcih0ZXN0X2NsaWVudCwgYXBwX3N0YXJ0ZXIpCiAgICAgIyBSZWdpc3RlciBjbGVhbnVw IGZ1bmN0aW9uIHRvIGNsZWFudXAgb24gZXhpdApAQCAtMzE5LDYgKzMyNSw5IEBAIGRlZiBhZGRf YXJndW1lbnRzKCk6CiAgICAgICAgICctLW1vZHVsZXMnLAogICAgICAgICBoZWxwPSdFeGVjdXRl cyB0aGUgZmVhdHVyZSB0ZXN0IGZvciBzcGVjaWZpYyBtb2R1bGVzIGluIHBrZycKICAgICApCisg ICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1wYXJhbGxlbCcsIG5hcmdzPSc/JywgY29uc3Q9VHJ1 ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9Ym9vbCwgZGVmYXVsdD1GYWxzZSwKKyAg ICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J0VuYWJsZSBwYXJhbGxlbCBGZWF0dXJlIFRlc3Rz JykKICAgICBhcmcgPSBwYXJzZXIucGFyc2VfYXJncygpCiAKICAgICByZXR1cm4gYXJnCkBAIC00 MDQsMTE3ICs0MTMsMjEzIEBAIGNsYXNzIFN0cmVhbVRvTG9nZ2VyKG9iamVjdCk6CiAgICAgICAg IHBhc3MKIAogCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgICMgRmFpbHVyZSBkZXRl Y3RlZD8KLSAgICBmYWlsdXJlID0gRmFsc2UKLSAgICB0ZXN0X3Jlc3VsdCA9IGRpY3QoKQotICAg IGNvdiA9IE5vbmUKK2RlZiBleGVjdXRlX3Rlc3QodGVzdF9tb2R1bGVfbGlzdF9wYXNzZWQsIHNl cnZlcl9wYXNzZWQsIGRyaXZlcl9wYXNzZWQpOgorICAgICIiIgorICAgIEZ1bmN0aW9uIGV4ZWN1 dGVzIGFjdHVhbGx5IHRlc3QKKyAgICA6cGFyYW0gdGVzdF9tb2R1bGVfbGlzdF9wYXNzZWQ6Cisg ICAgOnBhcmFtIHNlcnZlcl9wYXNzZWQ6CisgICAgOnBhcmFtIGRyaXZlcl9wYXNzZWQ6CisgICAg OnJldHVybjoKKyAgICAiIiIKKyAgICB0cnk6CisgICAgICAgIHByaW50KCJcbj09PT09PT09PT09 PT1SdW5uaW5nIHRoZSB0ZXN0IGNhc2VzIGZvciAnJXMnID09PT09PT09PT09PT0iCisgICAgICAg ICAgICAgICUgc2VydmVyX3Bhc3NlZFsnbmFtZSddLCBmaWxlPXN5cy5zdGRlcnIpCisgICAgICAg ICMgQ3JlYXRlIHRlc3Qgc2VydmVyCisgICAgICAgIHNlcnZlcl9pbmZvcm1hdGlvbiA9IFwKKyAg ICAgICAgICAgIHRlc3RfdXRpbHMuY3JlYXRlX3BhcmVudF9zZXJ2ZXJfbm9kZShzZXJ2ZXJfcGFz c2VkKQorCisgICAgICAgICMgQ3JlYXRlIHRlc3QgZGF0YWJhc2Ugd2l0aCByYW5kb20gbnVtYmVy IHRvIGF2b2lkIGNvbmZsaWN0IGluCisgICAgICAgICMgcGFyYWxsZWwgZXhlY3V0aW9uIG9uIGRp ZmZlcmVudCBwbGF0Zm9ybXMuIFRoaXMgZGF0YWJhc2Ugd2lsbCBiZQorICAgICAgICAjIHVzZWQg YWNyb3NzIGFsbCBmZWF0dXJlIHRlc3RzLgorICAgICAgICB0ZXN0X2RiX25hbWUgPSAiYWNjZXB0 YW5jZV90ZXN0X2RiIiArIFwKKyAgICAgICAgICAgICAgICAgICAgICAgc3RyKHJhbmRvbS5yYW5k aW50KDEwMDAwLCA2NTUzNSkpCisgICAgICAgIGNvbm5lY3Rpb24gPSB0ZXN0X3V0aWxzLmdldF9k Yl9jb25uZWN0aW9uKAorICAgICAgICAgICAgc2VydmVyX3Bhc3NlZFsnZGInXSwKKyAgICAgICAg ICAgIHNlcnZlcl9wYXNzZWRbJ3VzZXJuYW1lJ10sCisgICAgICAgICAgICBzZXJ2ZXJfcGFzc2Vk WydkYl9wYXNzd29yZCddLAorICAgICAgICAgICAgc2VydmVyX3Bhc3NlZFsnaG9zdCddLAorICAg ICAgICAgICAgc2VydmVyX3Bhc3NlZFsncG9ydCddLAorICAgICAgICAgICAgc2VydmVyX3Bhc3Nl ZFsnc3NsbW9kZSddCisgICAgICAgICkKIAotICAgICMgU2V0IHNpZ25hbCBoYW5kbGVyIGZvciBj bGVhbnVwCi0gICAgc2lnbmFsX2xpc3QgPSBkaXIoc2lnbmFsKQotICAgIHJlcXVpcmVkX3NpZ25h bF9saXN0ID0gWydTSUdURVJNJywgJ1NJR0FCUlQnLCAnU0lHUVVJVCcsICdTSUdJTlQnXQotICAg ICMgR2V0IHRoZSBPUyB3aXNlIHN1cHBvcnRlZCBzaWduYWxzCi0gICAgc3VwcG9ydGVkX3NpZ25h bF9saXN0ID0gW3NpZyBmb3Igc2lnIGluIHJlcXVpcmVkX3NpZ25hbF9saXN0IGlmCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHNpZyBpbiBzaWduYWxfbGlzdF0KLSAgICBmb3Igc2lnIGlu IHN1cHBvcnRlZF9zaWduYWxfbGlzdDoKLSAgICAgICAgc2lnbmFsLnNpZ25hbChnZXRhdHRyKHNp Z25hbCwgc2lnKSwgc2lnX2hhbmRsZXIpCisgICAgICAgICMgQWRkIHRoZSBzZXJ2ZXIgdmVyc2lv biBpbiBzZXJ2ZXIgaW5mb3JtYXRpb24KKyAgICAgICAgc2VydmVyX2luZm9ybWF0aW9uWydzZXJ2 ZXJfdmVyc2lvbiddID0gY29ubmVjdGlvbi5zZXJ2ZXJfdmVyc2lvbgorICAgICAgICBzZXJ2ZXJf aW5mb3JtYXRpb25bJ3R5cGUnXSA9IHNlcnZlcl9wYXNzZWRbJ3R5cGUnXQorCisgICAgICAgICMg RHJvcCB0aGUgZGF0YWJhc2UgaWYgYWxyZWFkeSBleGlzdHMuCisgICAgICAgIHRlc3RfdXRpbHMu ZHJvcF9kYXRhYmFzZShjb25uZWN0aW9uLCB0ZXN0X2RiX25hbWUpCisKKyAgICAgICAgIyBDcmVh dGUgZGF0YWJhc2UKKyAgICAgICAgdGVzdF91dGlscy5jcmVhdGVfZGF0YWJhc2Uoc2VydmVyX3Bh c3NlZCwgdGVzdF9kYl9uYW1lKQorCisgICAgICAgICMgQ29uZmlndXJlIHByZWZlcmVuY2VzIGZv ciB0aGUgdGVzdCBjYXNlcworICAgICAgICB0ZXN0X3V0aWxzLmNvbmZpZ3VyZV9wcmVmZXJlbmNl cygKKyAgICAgICAgICAgIGRlZmF1bHRfYmluYXJ5X3BhdGg9c2VydmVyX3Bhc3NlZFsnZGVmYXVs dF9iaW5hcnlfcGF0aHMnXSkKKworICAgICAgICAjIEdldCB1bml0IHRlc3Qgc3VpdAorICAgICAg ICBzdWl0ZSA9IGdldF9zdWl0ZSh0ZXN0X21vZHVsZV9saXN0X3Bhc3NlZCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgc2VydmVyX3Bhc3NlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg dGVzdF9jbGllbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9pbmZvcm1hdGlv biwgdGVzdF9kYl9uYW1lLCBkcml2ZXJfcGFzc2VkKQorCisgICAgICAgICMgUnVuIHVuaXQgdGVz dCBzdWl0IGNyZWF0ZWQKKyAgICAgICAgdGVzdHMgPSB1bml0dGVzdC5UZXh0VGVzdFJ1bm5lcihz dHJlYW09c3lzLnN0ZGVyciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBkZXNjcmlwdGlvbnM9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB2ZXJib3NpdHk9MikucnVuKHN1aXRlKQorCisgICAgICAgICMgcHJvY2Vzc2luZyByZXN1 bHRzCisgICAgICAgIHJhbl90ZXN0cywgZmFpbGVkX2Nhc2VzLCBza2lwcGVkX2Nhc2VzLCBwYXNz ZWRfY2FzZXMgPSBcCisgICAgICAgICAgICBnZXRfdGVzdHNfcmVzdWx0KHRlc3RzKQorCisgICAg ICAgICMgVGhpcyBpcyByZXF1aXJlZCB3aGVuIHNvbWUgdGVzdHMgYXJlIHJ1bm5pbmcgcGFyYWxs ZWwKKyAgICAgICAgIyAmIHNvbWUgc2VxdWVudGlhbCBpbiBjYXNlIG9mIHBhcmFsbGVsIHVpIHRl c3RzCisgICAgICAgIGlmIHRocmVhZGluZy5jdXJyZW50X3RocmVhZCgpLmdldE5hbWUoKSA9PSAi c2VxdWVudGlhbF90ZXN0cyI6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgaWYg dGVzdF9yZXN1bHRbc2VydmVyX3Bhc3NlZFsnbmFtZSddXVswXSBpcyBub3QgTm9uZToKKyAgICAg ICAgICAgICAgICAgICAgcmFuX3Rlc3RzID0gdGVzdF9yZXN1bHRbc2VydmVyX3Bhc3NlZFsnbmFt ZSddXVswXSArIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhbl90ZXN0cworICAgICAgICAg ICAgICAgICAgICBmYWlsZWRfY2FzZXMudXBkYXRlKHRlc3RfcmVzdWx0W3NlcnZlcl9wYXNzZWRb J25hbWUnXV1bMV0pCisgICAgICAgICAgICAgICAgICAgIHNraXBwZWRfY2FzZXMudXBkYXRlKHRl c3RfcmVzdWx0W3NlcnZlcl9wYXNzZWRbJ25hbWUnXV1bMl0pCisgICAgICAgICAgICAgICAgICAg IHBhc3NlZF9jYXNlcy51cGRhdGUodGVzdF9yZXN1bHRbc2VydmVyX3Bhc3NlZFsnbmFtZSddXVsz XSkKKyAgICAgICAgICAgICAgICB0ZXN0X3Jlc3VsdFtzZXJ2ZXJfcGFzc2VkWyduYW1lJ11dID0g W3Jhbl90ZXN0cywgZmFpbGVkX2Nhc2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc2tpcHBlZF9jYXNlcywKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NlZF9jYXNlc10KKyAgICAg ICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAg IyBBZGQgZmluYWwgcmVzdWx0cyBzZXJ2ZXIgd2lzZSBpbiB0ZXN0X3Jlc3VsdCBkaWN0CisgICAg ICAgIHRlc3RfcmVzdWx0W3NlcnZlcl9wYXNzZWRbJ25hbWUnXV0gPSBbcmFuX3Rlc3RzLCBmYWls ZWRfY2FzZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c2tpcHBlZF9jYXNlcywgcGFzc2VkX2Nhc2VzXQorCisgICAgICAgICMgU2V0IGVtcHR5IGxpc3Qg Zm9yICdwYXNzZWQnIHBhcmFtZXRlciBmb3IgZWFjaCB0ZXN0UnVuLgorICAgICAgICAjIFNvIHRo YXQgaXQgd2lsbCBub3QgYXBwZW5kIHNhbWUgdGVzdCBjYXNlIG5hbWUKKyAgICAgICAgIyB1bml0 dGVzdC5yZXN1bHQuVGVzdFJlc3VsdC5wYXNzZWQgPSBbXQorCisgICAgICAgICMgRHJvcCB0aGUg dGVzdGluZyBkYXRhYmFzZSBjcmVhdGVkIGluaXRpYWxseQorICAgICAgICBpZiBjb25uZWN0aW9u OgorICAgICAgICAgICAgdGVzdF91dGlscy5kcm9wX2RhdGFiYXNlKGNvbm5lY3Rpb24sIHRlc3Rf ZGJfbmFtZSkKKyAgICAgICAgICAgIGNvbm5lY3Rpb24uY2xvc2UoKQogCi0gICAgIyBTZXQgYmFz aWMgbG9nZ2luZyBjb25maWd1cmF0aW9uIGZvciBsb2cgZmlsZQotICAgIGZoID0gbG9nZ2luZy5G aWxlSGFuZGxlcihDVVJSRU5UX1BBVEggKyAnLycgKwotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAncmVncmVzc2lvbi5sb2cnLCAndycsICd1dGYtOCcpCi0gICAgZmguc2V0TGV2ZWwobG9n Z2luZy5ERUJVRykKLSAgICBmaC5zZXRGb3JtYXR0ZXIobG9nZ2luZy5Gb3JtYXR0ZXIoY29uZmln LkZJTEVfTE9HX0ZPUk1BVCkpCisgICAgICAgICMgRGVsZXRlIHRlc3Qgc2VydmVyCisgICAgICAg IHRlc3RfdXRpbHMuZGVsZXRlX3Rlc3Rfc2VydmVyKHRlc3RfY2xpZW50KQorICAgIGV4Y2VwdCBF eGNlcHRpb24gYXMgZXhjOgorICAgICAgICB0cmFjZWJhY2sucHJpbnRfZXhjKGZpbGU9c3lzLnN0 ZGVycikKKyAgICAgICAgcHJpbnQoc3RyKGV4YykpCisgICAgICAgIHByaW50KCJFeGNlcHRpb24g aW4gezB9Ii5mb3JtYXQodGhyZWFkaW5nLmN1cnJlbnRfdGhyZWFkKCkuaWRlbnQpKQorICAgIGZp bmFsbHk6CisgICAgICAgICMgRGVsZXRlIHdlYi1kcml2ZXIgaW5zdGFuY2UKKyAgICAgICAgdGhy ZWFkX25hbWUgPSAicGFyYWxsZWxfdGVzdHMiICsgc2VydmVyX3Bhc3NlZFsnbmFtZSddCisgICAg ICAgIGlmIHRocmVhZGluZy5jdXJyZW50VGhyZWFkKCkuZ2V0TmFtZSgpID09IHRocmVhZF9uYW1l OgorICAgICAgICAgICAgZHJpdmVyX3Bhc3NlZC5xdWl0KCkKKyAgICAgICAgICAgIHRpbWUuc2xl ZXAoMjApCisKKyAgICAgICAgIyBQcmludCBpbmZvIGFib3V0IGNvbXBsZXRlZCB0ZXN0cworICAg ICAgICBwcmludCgKKyAgICAgICAgICAgICJcbj09PT09PT09PT09PT1Db21wbGV0ZWQgdGhlIHRl c3QgY2FzZXMgZm9yICclcyc9PT09PT09PT09PT09IgorICAgICAgICAgICAgJSBzZXJ2ZXJfcGFz c2VkWyduYW1lJ10sIGZpbGU9c3lzLnN0ZGVycikKIAotICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0 TG9nZ2VyKCkKLSAgICBsb2dnZXIuYWRkSGFuZGxlcihmaCkKIAotICAgICMgQ3JlYXRlIGxvZ2dl ciB0byB3cml0ZSBsb2cgaW4gdGhlIGxvZ2dlciBmaWxlIGFzIHdlbGwgYXMgb24gY29uc29sZQot ICAgIHN0ZGVycl9sb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcignU1RERVJSJykKLSAgICBzeXMu c3RkZXJyID0gU3RyZWFtVG9Mb2dnZXIoc3RkZXJyX2xvZ2dlciwgbG9nZ2luZy5FUlJPUikKLSAg ICBhcmdzID0gdmFycyhhZGRfYXJndW1lbnRzKCkpCi0gICAgIyBHZXQgdGVzdCBtb2R1bGUgbGlz dAorZGVmIHJ1bl9wYXJhbGxlbF90ZXN0cyh1cmxfY2xpZW50LCBzZXJ2ZXJzX2RldGFpbHMsIHBh cmFsbGVsX3Rlc3RzX2xpc3RzLAorICAgICAgICAgICAgICAgICAgICAgICBuYW1lX29mX2Jyb3dz ZXIsIHZlcnNpb25fb2ZfYnJvd3NlciwgbWF4X3RocmVhZF9jb3VudCk6CisgICAgIiIiCisgICAg RnVuY3Rpb24gdXNlZCB0byBydW4gdGVzdHMgaW4gcGFyYWxsZWwKKyAgICA6cGFyYW0gdXJsX2Ns aWVudDoKKyAgICA6cGFyYW0gc2VydmVyc19kZXRhaWxzOgorICAgIDpwYXJhbSBwYXJhbGxlbF90 ZXN0c19saXN0czoKKyAgICA6cGFyYW0gbmFtZV9vZl9icm93c2VyOgorICAgIDpwYXJhbSB2ZXJz aW9uX29mX2Jyb3dzZXI6CisgICAgOnBhcmFtIG1heF90aHJlYWRfY291bnQ6CisgICAgIiIiCisg ICAgZHJpdmVyX29iamVjdCA9IE5vbmUKICAgICB0cnk6Ci0gICAgICAgIHRlc3RfbW9kdWxlX2xp c3QgPSBnZXRfdGVzdF9tb2R1bGVzKGFyZ3MpCi0gICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgot ICAgICAgICBwcmludChzdHIoZSkpCi0gICAgICAgIHN5cy5leGl0KDEpCi0gICAgIyBMb2dpbiB0 aGUgdGVzdCBjbGllbnQKLSAgICB0ZXN0X3V0aWxzLmxvZ2luX3Rlc3Rlcl9hY2NvdW50KHRlc3Rf Y2xpZW50KQorICAgICAgICAjIFRocmVhZCBsaXN0CisgICAgICAgIHRocmVhZHNfbGlzdCA9IFtd CisgICAgICAgICMgQ3JlYXRlIHRocmVhZCBmb3IgZWFjaCBzZXJ2ZXIKKyAgICAgICAgZm9yIHNl ciBpbiBzZXJ2ZXJzX2RldGFpbHM6CisgICAgICAgICAgICAjIExvZ2ljIHRvIGFkZCBuZXcgdGhy ZWFkcworICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICAjIElmIGFjdGl2 ZSB0aHJlYWQgY291bnQgPD0gbWF4X3RocmVhZF9jb3VudCwgYWRkIG5ldyB0aHJlYWQKKyAgICAg ICAgICAgICAgICBpZiB0aHJlYWRpbmcuYWN0aXZlQ291bnQoKSA8PSBtYXhfdGhyZWFkX2NvdW50 OgorICAgICAgICAgICAgICAgICAgICAjIEdldCByZW1vdGUgd2ViLWRyaXZlciBpbnN0YW5jZSBh dCBzZXJ2ZXIgbGV2ZWwKKyAgICAgICAgICAgICAgICAgICAgZHJpdmVyX29iamVjdCA9IFwKKyAg ICAgICAgICAgICAgICAgICAgICAgIHRlc3RfdXRpbHMuZ2V0X3JlbW90ZV93ZWJkcml2ZXIoaHVi X3VybCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbmFtZV9vZl9icm93c2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uX29mX2Jyb3dzZXIsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlclsnbmFtZSddKQor ICAgICAgICAgICAgICAgICAgICAjIExhdW5jaCBjbGllbnQgdXJsIGluIGJyb3dzZXIKKyAgICAg ICAgICAgICAgICAgICAgdGVzdF91dGlscy5sYXVuY2hfdXJsX2luX2Jyb3dzZXIoZHJpdmVyX29i amVjdCwgdXJsX2NsaWVudCkKKworICAgICAgICAgICAgICAgICAgICAjIEFkZCBuYW1lIGZvciB0 aHJlYWQKKyAgICAgICAgICAgICAgICAgICAgdGhyZWFkX25hbWUgPSAicGFyYWxsZWxfdGVzdHMi ICsgc2VyWyduYW1lJ10KKworICAgICAgICAgICAgICAgICAgICAjIFN0YXJ0IHRocmVhZAorICAg ICAgICAgICAgICAgICAgICB0ID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9ZXhlY3V0ZV90ZXN0 LCBuYW1lPXRocmVhZF9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBhcmdzPShwYXJhbGxlbF90ZXN0c19saXN0cywgc2VyLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcml2ZXJfb2JqZWN0KSkKKyAgICAgICAgICAg ICAgICAgICAgdGhyZWFkc19saXN0LmFwcGVuZCh0KQorICAgICAgICAgICAgICAgICAgICB0LnN0 YXJ0KCkKKyAgICAgICAgICAgICAgICAgICAgdGltZS5zbGVlcCgzKQorICAgICAgICAgICAgICAg ICAgICBicmVhaworICAgICAgICAgICAgICAgICMgZWxzZSBzbGVlcCBmb3IgMTAgc2Vjb25kcwor ICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHRpbWUuc2xlZXAoMTAp CisKKyAgICAgICAgIyBTdGFydCB0aHJlYWRzIGluIHBhcmFsbGVsCisgICAgICAgIGZvciB0IGlu IHRocmVhZHNfbGlzdDoKKyAgICAgICAgICAgIHQuam9pbigpCisgICAgZXhjZXB0IEV4Y2VwdGlv biBhcyBleGM6CisgICAgICAgICMgUHJpbnQgZXhjZXB0aW9uIHN0YWNrIHRyYWNlCisgICAgICAg IHRyYWNlYmFjay5wcmludF9leGMoZmlsZT1zeXMuc3RkZXJyKQorICAgICAgICBwcmludChzdHIo ZXhjKSkKKyAgICAgICAgIyBDbGVhbiBkcml2ZXIgb2JqZWN0IGNyZWF0ZWQKKyAgICAgICAgaWYg ZHJpdmVyX29iamVjdCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGRyaXZlcl9vYmplY3QucXVp dCgpCiAKLSAgICBzZXJ2ZXJzX2luZm8gPSB0ZXN0X3V0aWxzLmdldF9jb25maWdfZGF0YSgpCi0g ICAgbm9kZV9uYW1lID0gImFsbCIKLSAgICBpZiBhcmdzWydwa2cnXSBpcyBub3QgTm9uZToKLSAg ICAgICAgbm9kZV9uYW1lID0gYXJnc1sncGtnJ10uc3BsaXQoJy4nKVstMV0KLQotICAgICMgU3Rh cnQgY292ZXJhZ2UKLSAgICBpZiB0ZXN0X3V0aWxzLmlzX2NvdmVyYWdlX2VuYWJsZWQoYXJncyk6 Ci0gICAgICAgIGNvdiA9IGNvdmVyYWdlLkNvdmVyYWdlKGNvbmZpZ19maWxlPUNPVkVSQUdFX0NP TkZJR19GSUxFKQotICAgICAgICBjb3Yuc3RhcnQoKQogCitkZWYgcnVuX3NlcXVlbnRpYWxfdGVz dHModXJsX2NsaWVudCwgc2VydmVyc19kZXRhaWxzLCBzZXF1ZW50aWFsX3Rlc3RzX2xpc3RzLAor ICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVfb2ZfYnJvd3NlciwgdmVyc2lvbl9vZl9icm93 c2VyKToKKyAgICAiIiIKKyAgICBGdW5jdGlvbiBpcyB1c2VkIHRvIGV4ZWN1dGUgdGVzdHMgdGhh dCBuZWVkcyB0byBiZSBydW4gaW4gc2VxdWVudGlhbAorICAgIG1hbm5lci4KKyAgICA6cGFyYW0g dXJsX2NsaWVudDoKKyAgICA6cGFyYW0gc2VydmVyc19kZXRhaWxzOgorICAgIDpwYXJhbSBzZXF1 ZW50aWFsX3Rlc3RzX2xpc3RzOgorICAgIDpwYXJhbSBuYW1lX29mX2Jyb3dzZXI6CisgICAgOnBh cmFtIHZlcnNpb25fb2ZfYnJvd3NlcjoKKyAgICA6cmV0dXJuOgorICAgICIiIgorICAgIGRyaXZl cl9vYmplY3QgPSBOb25lCiAgICAgdHJ5OgotICAgICAgICBmb3Igc2VydmVyIGluIHNlcnZlcnNf aW5mbzoKLSAgICAgICAgICAgIHByaW50KCJcbj09PT09PT09PT09PT1SdW5uaW5nIHRoZSB0ZXN0 IGNhc2VzIGZvciAnJXMnPT09PT09PT09PT09PSIKLSAgICAgICAgICAgICAgICAgICUgc2VydmVy WyduYW1lJ10sIGZpbGU9c3lzLnN0ZGVycikKLSAgICAgICAgICAgICMgQ3JlYXRlIHRlc3Qgc2Vy dmVyCi0gICAgICAgICAgICBzZXJ2ZXJfaW5mb3JtYXRpb24gPSB0ZXN0X3V0aWxzLmNyZWF0ZV9w YXJlbnRfc2VydmVyX25vZGUoc2VydmVyKQotCi0gICAgICAgICAgICAjIENyZWF0ZSB0ZXN0IGRh dGFiYXNlIHdpdGggcmFuZG9tIG51bWJlciB0byBhdm9pZCBjb25mbGljdCBpbgotICAgICAgICAg ICAgIyBwYXJhbGxlbCBleGVjdXRpb24gb24gZGlmZmVyZW50IHBsYXRmb3Jtcy4gVGhpcyBkYXRh YmFzZSB3aWxsIGJlCi0gICAgICAgICAgICAjIHVzZWQgYWNyb3NzIGFsbCBmZWF0dXJlIHRlc3Rz LgotICAgICAgICAgICAgdGVzdF9kYl9uYW1lID0gImFjY2VwdGFuY2VfdGVzdF9kYiIgKyBcCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIocmFuZG9tLnJhbmRpbnQoMTAwMDAsIDY1NTM1 KSkKLSAgICAgICAgICAgIGNvbm5lY3Rpb24gPSB0ZXN0X3V0aWxzLmdldF9kYl9jb25uZWN0aW9u KAotICAgICAgICAgICAgICAgIHNlcnZlclsnZGInXSwKLSAgICAgICAgICAgICAgICBzZXJ2ZXJb J3VzZXJuYW1lJ10sCi0gICAgICAgICAgICAgICAgc2VydmVyWydkYl9wYXNzd29yZCddLAotICAg ICAgICAgICAgICAgIHNlcnZlclsnaG9zdCddLAotICAgICAgICAgICAgICAgIHNlcnZlclsncG9y dCddLAotICAgICAgICAgICAgICAgIHNlcnZlclsnc3NsbW9kZSddCi0gICAgICAgICAgICApCi0K LSAgICAgICAgICAgICMgQWRkIHRoZSBzZXJ2ZXIgdmVyc2lvbiBpbiBzZXJ2ZXIgaW5mb3JtYXRp b24KLSAgICAgICAgICAgIHNlcnZlcl9pbmZvcm1hdGlvblsnc2VydmVyX3ZlcnNpb24nXSA9IGNv bm5lY3Rpb24uc2VydmVyX3ZlcnNpb24KLSAgICAgICAgICAgIHNlcnZlcl9pbmZvcm1hdGlvblsn dHlwZSddID0gc2VydmVyWyd0eXBlJ10KLQotICAgICAgICAgICAgIyBEcm9wIHRoZSBkYXRhYmFz ZSBpZiBhbHJlYWR5IGV4aXN0cy4KLSAgICAgICAgICAgIHRlc3RfdXRpbHMuZHJvcF9kYXRhYmFz ZShjb25uZWN0aW9uLCB0ZXN0X2RiX25hbWUpCi0gICAgICAgICAgICAjIENyZWF0ZSBkYXRhYmFz ZQotICAgICAgICAgICAgdGVzdF91dGlscy5jcmVhdGVfZGF0YWJhc2Uoc2VydmVyLCB0ZXN0X2Ri X25hbWUpCi0gICAgICAgICAgICAjIENvbmZpZ3VyZSBwcmVmZXJlbmNlcyBmb3IgdGhlIHRlc3Qg Y2FzZXMKLSAgICAgICAgICAgIHRlc3RfdXRpbHMuY29uZmlndXJlX3ByZWZlcmVuY2VzKAotICAg ICAgICAgICAgICAgIGRlZmF1bHRfYmluYXJ5X3BhdGg9c2VydmVyWydkZWZhdWx0X2JpbmFyeV9w YXRocyddKQotCi0gICAgICAgICAgICBzdWl0ZSA9IGdldF9zdWl0ZSh0ZXN0X21vZHVsZV9saXN0 LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdGVzdF9jbGllbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzZXJ2ZXJfaW5mb3JtYXRpb24sIHRlc3RfZGJfbmFtZSkKLSAgICAgICAgICAgIHRlc3RzID0g dW5pdHRlc3QuVGV4dFRlc3RSdW5uZXIoc3RyZWFtPXN5cy5zdGRlcnIsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9ucz1UcnVlLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJib3NpdHk9MikucnVuKHN1 aXRlKQotCi0gICAgICAgICAgICByYW5fdGVzdHMsIGZhaWxlZF9jYXNlcywgc2tpcHBlZF9jYXNl cywgcGFzc2VkX2Nhc2VzID0gXAotICAgICAgICAgICAgICAgIGdldF90ZXN0c19yZXN1bHQodGVz dHMpCi0gICAgICAgICAgICB0ZXN0X3Jlc3VsdFtzZXJ2ZXJbJ25hbWUnXV0gPSBbcmFuX3Rlc3Rz LCBmYWlsZWRfY2FzZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc2tpcHBlZF9jYXNlcywgcGFzc2VkX2Nhc2VzXQotCi0gICAgICAgICAgICAjIFNldCBlbXB0 eSBsaXN0IGZvciAncGFzc2VkJyBwYXJhbWV0ZXIgZm9yIGVhY2ggdGVzdFJ1bi4KLSAgICAgICAg ICAgICMgU28gdGhhdCBpdCB3aWxsIG5vdCBhcHBlbmQgc2FtZSB0ZXN0IGNhc2UgbmFtZQotICAg ICAgICAgICAgdW5pdHRlc3QucmVzdWx0LlRlc3RSZXN1bHQucGFzc2VkID0gW10KLQotICAgICAg ICAgICAgaWYgbGVuKGZhaWxlZF9jYXNlcykgPiAwOgotICAgICAgICAgICAgICAgIGZhaWx1cmUg PSBUcnVlCi0KLSAgICAgICAgICAgICMgRHJvcCB0aGUgdGVzdGluZyBkYXRhYmFzZSBjcmVhdGVk IGluaXRpYWxseQotICAgICAgICAgICAgaWYgY29ubmVjdGlvbjoKLSAgICAgICAgICAgICAgICB0 ZXN0X3V0aWxzLmRyb3BfZGF0YWJhc2UoY29ubmVjdGlvbiwgdGVzdF9kYl9uYW1lKQotICAgICAg ICAgICAgICAgIGNvbm5lY3Rpb24uY2xvc2UoKQotCi0gICAgICAgICAgICAjIERlbGV0ZSB0ZXN0 IHNlcnZlcgotICAgICAgICAgICAgdGVzdF91dGlscy5kZWxldGVfdGVzdF9zZXJ2ZXIodGVzdF9j bGllbnQpCi0gICAgZXhjZXB0IFN5c3RlbUV4aXQ6Ci0gICAgICAgIGlmIGhhbmRsZV9jbGVhbnVw OgotICAgICAgICAgICAgaGFuZGxlX2NsZWFudXAoKQorICAgICAgICAjIEdldCByZW1vdGUgd2Vi LWRyaXZlciBpbnN0YW5jZQorICAgICAgICBkcml2ZXJfb2JqZWN0ID0gdGVzdF91dGlscy5nZXRf cmVtb3RlX3dlYmRyaXZlcihodWJfdXJsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lX29mX2Jyb3dzZXIsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb25fb2ZfYnJv d3NlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIlNlcXVlbnRpYWxfVGVzdHMiKQorCisgICAgICAgICMgTGF1bmNoIGNsaWVudCB1cmwg aW4gYnJvd3NlcgorICAgICAgICB0ZXN0X3V0aWxzLmxhdW5jaF91cmxfaW5fYnJvd3Nlcihkcml2 ZXJfb2JqZWN0LCB1cmxfY2xpZW50KQorCisgICAgICAgICMgQWRkIG5hbWUgZm9yIHRocmVhZAor ICAgICAgICB0aHJlYWRfbmFtZSA9ICJzZXF1ZW50aWFsX3Rlc3RzIgorCisgICAgICAgICMgU3Rh cnQgdGhyZWFkCisgICAgICAgIGZvciBzZXIgaW4gc2VydmVyc19kZXRhaWxzOgorICAgICAgICAg ICAgdCA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PWV4ZWN1dGVfdGVzdCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIG5hbWU9dGhyZWFkX25hbWUsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBhcmdzPShzZXF1ZW50aWFsX3Rlc3RzX2xpc3RzLCBzZXIsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcml2ZXJfb2JqZWN0KSkKKyAgICAg ICAgICAgIHQuc3RhcnQoKQorICAgICAgICAgICAgdC5qb2luKCkKKyAgICBleGNlcHQgRXhjZXB0 aW9uIGFzIGV4YzoKKyAgICAgICAgIyBQcmludCBleGNlcHRpb24gc3RhY2sgdHJhY2UKKyAgICAg ICAgdHJhY2ViYWNrLnByaW50X2V4YyhmaWxlPXN5cy5zdGRlcnIpCisgICAgICAgIHByaW50KHN0 cihleGMpKQorICAgIGZpbmFsbHk6CisgICAgICAgICMgQ2xlYW4gZHJpdmVyIG9iamVjdCBjcmVh dGVkCisgICAgICAgIGRyaXZlcl9vYmplY3QucXVpdCgpCiAKKworZGVmIHByaW50X3Rlc3RfcmVz dWx0cygpOgogICAgIHByaW50KAogICAgICAgICAiXG49PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iCiAgICAgICAgICI9PT09PT09 IiwKQEAgLTU0Myw2ICs2NDgsMTAgQEAgaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICAg ICAgdG90YWxfcGFzc2VkX2Nhc2VzID0gaW50KAogICAgICAgICAgICAgdGVzdF9yZXN1bHRbc2Vy dmVyX3Jlc11bMF0pIC0gdG90YWxfZmFpbGVkIC0gdG90YWxfc2tpcHBlZAogCisgICAgICAgIGlm IGxlbihmYWlsZWRfY2FzZXMpID4gMDoKKyAgICAgICAgICAgIGdsb2JhbCBmYWlsdXJlCisgICAg ICAgICAgICBmYWlsdXJlID0gVHJ1ZQorCiAgICAgICAgIHByaW50KAogICAgICAgICAgICAgIiVz OlxuXG5cdCVzIHRlc3QlcyBwYXNzZWRcblx0JXMgdGVzdCVzIGZhaWxlZCVzJXMiCiAgICAgICAg ICAgICAiXG5cdCVzIHRlc3QlcyBza2lwcGVkJXMlc1xuIiAlCkBAIC01NzgsMTIgKzY4NywxNjIg QEAgaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICAgICAgZmlsZT1zeXMuc3RkZXJyCiAg ICAgKQogCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgIyBGYWlsdXJlIGRldGVj dGVkPworICAgIGZhaWx1cmUgPSBGYWxzZQorICAgIHRlc3RfcmVzdWx0ID0gZGljdCgpCisgICAg Y292ID0gTm9uZQorCisgICAgIyBTZXQgc2lnbmFsIGhhbmRsZXIgZm9yIGNsZWFudXAKKyAgICBz aWduYWxfbGlzdCA9IGRpcihzaWduYWwpCisgICAgcmVxdWlyZWRfc2lnbmFsX2xpc3QgPSBbJ1NJ R1RFUk0nLCAnU0lHQUJSVCcsICdTSUdRVUlUJywgJ1NJR0lOVCddCisgICAgIyBHZXQgdGhlIE9T IHdpc2Ugc3VwcG9ydGVkIHNpZ25hbHMKKyAgICBzdXBwb3J0ZWRfc2lnbmFsX2xpc3QgPSBbc2ln IGZvciBzaWcgaW4gcmVxdWlyZWRfc2lnbmFsX2xpc3QgaWYKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc2lnIGluIHNpZ25hbF9saXN0XQorICAgIGZvciBzaWcgaW4gc3VwcG9ydGVkX3Np Z25hbF9saXN0OgorICAgICAgICBzaWduYWwuc2lnbmFsKGdldGF0dHIoc2lnbmFsLCBzaWcpLCBz aWdfaGFuZGxlcikKKworICAgICMgU2V0IGJhc2ljIGxvZ2dpbmcgY29uZmlndXJhdGlvbiBmb3Ig bG9nIGZpbGUKKyAgICBmaCA9IGxvZ2dpbmcuRmlsZUhhbmRsZXIoQ1VSUkVOVF9QQVRIICsgJy8n ICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlZ3Jlc3Npb24ubG9nJywgJ3cnLCAn dXRmLTgnKQorICAgIGZoLnNldExldmVsKGxvZ2dpbmcuREVCVUcpCisgICAgZmguc2V0Rm9ybWF0 dGVyKGxvZ2dpbmcuRm9ybWF0dGVyKCdbJSh0aHJlYWQpZF0gJyArCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy5GSUxFX0xPR19GT1JNQVQpKQorCisgICAgbG9n Z2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoKQorICAgIGxvZ2dlci5hZGRIYW5kbGVyKGZoKQorCisg ICAgIyBDcmVhdGUgbG9nZ2VyIHRvIHdyaXRlIGxvZyBpbiB0aGUgbG9nZ2VyIGZpbGUgYXMgd2Vs bCBhcyBvbiBjb25zb2xlCisgICAgc3RkZXJyX2xvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCdT VERFUlInKQorICAgIHN5cy5zdGRlcnIgPSBTdHJlYW1Ub0xvZ2dlcihzdGRlcnJfbG9nZ2VyLCBs b2dnaW5nLkVSUk9SKQorICAgIGFyZ3MgPSB2YXJzKGFkZF9hcmd1bWVudHMoKSkKKyAgICAjIEdl dCB0ZXN0IG1vZHVsZSBsaXN0CisgICAgdHJ5OgorICAgICAgICB0ZXN0X21vZHVsZV9saXN0ID0g Z2V0X3Rlc3RfbW9kdWxlcyhhcmdzKQorICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAg ICAgcHJpbnQoc3RyKGUpKQorICAgICAgICBzeXMuZXhpdCgxKQorICAgICMgTG9naW4gdGhlIHRl c3QgY2xpZW50CisgICAgdGVzdF91dGlscy5sb2dpbl90ZXN0ZXJfYWNjb3VudCh0ZXN0X2NsaWVu dCkKKworICAgIHNlcnZlcnNfaW5mbyA9IHRlc3RfdXRpbHMuZ2V0X2NvbmZpZ19kYXRhKCkKKyAg ICBub2RlX25hbWUgPSAiYWxsIgorICAgIGlmIGFyZ3NbJ3BrZyddIGlzIG5vdCBOb25lOgorICAg ICAgICBub2RlX25hbWUgPSBhcmdzWydwa2cnXS5zcGxpdCgnLicpWy0xXQorCisgICAgIyBTdGFy dCBjb3ZlcmFnZQorICAgIGlmIHRlc3RfdXRpbHMuaXNfY292ZXJhZ2VfZW5hYmxlZChhcmdzKToK KyAgICAgICAgY292ID0gY292ZXJhZ2UuQ292ZXJhZ2UoY29uZmlnX2ZpbGU9Q09WRVJBR0VfQ09O RklHX0ZJTEUpCisgICAgICAgIGNvdi5zdGFydCgpCisKKyAgICAjIENoZWNrIGlmIGZlYXR1cmUg dGVzdHMgaW5jbHVkZWQgJiBwYXJhbGxlbCB0ZXN0cyBzd2l0Y2ggcGFzc2VkCisgICAgaWYgdGVz dF91dGlscy5pc19mZWF0dXJlX3Rlc3RfaW5jbHVkZWQoYXJncykgYW5kIFwKKyAgICAgICAgICAg IHRlc3RfdXRpbHMuaXNfcGFyYWxsZWxfdWlfdGVzdHMoYXJncyk6CisKKyAgICAgICAgIyBHZXQg c2VsZW5pdW0gY29uZmlnIGRpY3QKKyAgICAgICAgc2VsZW5vaWRfY29uZmlnID0gdGVzdF9zZXR1 cC5jb25maWdfZGF0YVsnc2VsZW5vaWRfY29uZmlnJ10KKworICAgICAgICAjIFNldCBERUZBVUxU X1NFUlZFUiB2YWx1ZQorICAgICAgICBkZWZhdWx0X3NlcnZlciA9IHNlbGVub2lkX2NvbmZpZ1sn cGdBZG1pbl9kZWZhdWx0X3NlcnZlciddCisgICAgICAgIG9zLmVudmlyb25bIlBHQURNSU5fQ09O RklHX0RFRkFVTFRfU0VSVkVSIl0gPSBzdHIoZGVmYXVsdF9zZXJ2ZXIpCisgICAgICAgIGNvbmZp Zy5ERUZBVUxUX1NFUlZFUiA9IHN0cihkZWZhdWx0X3NlcnZlcikKKworICAgICAgICAjIEdldCBo dWIgdXJsCisgICAgICAgIGh1Yl91cmwgPSBzZWxlbm9pZF9jb25maWdbJ3NlbGVub2lkX3VybCdd CisKKyAgICAgICAgIyBHZXQgc2VsZW5pdW0gZ3JpZCBzdGF0dXMgJiBsaXN0IG9mIGF2YWlsYWJs ZSBicm93c2VyIG91dCBwYXNzZWQKKyAgICAgICAgc2VsZW5pdW1fZ3JpZF9zdGF0dXMsIGxpc3Rf b2ZfYnJvd3NlcnMgXAorICAgICAgICAgICAgPSB0ZXN0X3V0aWxzLmdldF9zZWxlbml1bV9ncmlk X3N0YXR1c19hbmRfYnJvd3Nlcl9saXN0KGh1Yl91cmwpCisKKyAgICAgICAgIyBFeGVjdXRlIHRl c3RzIGlmIHNlbGVuaXVtLWdyaWQgaXMgdXAKKyAgICAgICAgaWYgc2VsZW5pdW1fZ3JpZF9zdGF0 dXMgYW5kIGxlbihsaXN0X29mX2Jyb3dzZXJzKSA+IDA6CisgICAgICAgICAgICBhcHBfc3RhcnRl cl9sb2NhbCA9IE5vbmUKKyAgICAgICAgICAgICMgcnVuIGFjcm9zcyBicm93c2VycworICAgICAg ICAgICAgZm9yIGJyb3dzZXJfaW5mbyBpbiBsaXN0X29mX2Jyb3dzZXJzOgorICAgICAgICAgICAg ICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgIyBicm93c2VyIGluZm8KKyAgICAgICAgICAg ICAgICAgICAgYnJvd3Nlcl9uYW1lLCBicm93c2VyX3ZlcnNpb24gPSBcCisgICAgICAgICAgICAg ICAgICAgICAgICB0ZXN0X3V0aWxzLmdldF9icm93c2VyX2RldGFpbHMoYnJvd3Nlcl9pbmZvLCBo dWJfdXJsKQorCisgICAgICAgICAgICAgICAgICAgICMgdGVzdHMgbGlzdHMgY2FuIGJlIGV4ZWN1 dGVkIGluIHBhcmFsbGVsICYgc2VxdWVudGlhbGx5CisgICAgICAgICAgICAgICAgICAgIHBhcmFs bGVsX3Rlc3RzLCBzZXF1ZW50aWFsX3Rlc3RzID0gXAorICAgICAgICAgICAgICAgICAgICAgICAg dGVzdF91dGlscy5nZXRfcGFyYWxsZWxfc2VxdWVudGlhbF9tb2R1bGVfbGlzdCgKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICB0ZXN0X21vZHVsZV9saXN0KQorCisgICAgICAgICAgICAgICAg ICAgICMgUHJpbnQgdGVzdCBzdW1tYXJ5CisgICAgICAgICAgICAgICAgICAgIHRlc3RfdXRpbHMu cHJpbnRfdGVzdF9zdW1tYXJ5KHRlc3RfbW9kdWxlX2xpc3QsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFsbGVsX3Rlc3RzLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXF1ZW50aWFsX3Rlc3Rz LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicm93 c2VyX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGJyb3dzZXJfdmVyc2lvbikKKworICAgICAgICAgICAgICAgICAgICAjIENyZWF0ZSBhcHAg Zm9ybSBzb3VyY2UgY29kZQorICAgICAgICAgICAgICAgICAgICBhcHBfc3RhcnRlcl9sb2NhbCA9 IEFwcFN0YXJ0ZXIoTm9uZSwgY29uZmlnKQorICAgICAgICAgICAgICAgICAgICBjbGllbnRfdXJs ID0gYXBwX3N0YXJ0ZXJfbG9jYWwuc3RhcnRfYXBwKCkKKworICAgICAgICAgICAgICAgICAgICAj IFJ1bm5pbmcgUGFyYWxsZWwgdGVzdHMKKyAgICAgICAgICAgICAgICAgICAgaWYgbGVuKHBhcmFs bGVsX3Rlc3RzKSA+IDA6CisgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbGxlbF9zZXNzaW9u cyA9IGludChzZWxlbm9pZF9jb25maWdbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAnbWF4X3BhcmFsbGVsX3Nlc3Npb25zJ10pCisKKyAgICAgICAgICAg ICAgICAgICAgICAgIHJ1bl9wYXJhbGxlbF90ZXN0cyhjbGllbnRfdXJsLCBzZXJ2ZXJzX2luZm8s CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYWxsZWxfdGVz dHMsIGJyb3dzZXJfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBicm93c2VyX3ZlcnNpb24sIHBhcmFsbGVsX3Nlc3Npb25zKQorCisgICAgICAgICAgICAg ICAgICAgICMgV2FpdCB0aWxsIGFsbCB0aHJlYWRzIHN0YXJ0ZWQgaW4gcGFyYWxsZWwgYXJlIGZp bmlzaGVkCisgICAgICAgICAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAg ICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGhyZWFkaW5nLmFj dGl2ZUNvdW50KCkgPD0gMToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB0aW1lLnNsZWVwKDEwKQorICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0 IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNlYmFjay5w cmludF9leGMoZmlsZT1zeXMuc3RkZXJyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBy aW50KHN0cihlKSkKKworICAgICAgICAgICAgICAgICAgICAjIFNlcXVlbnRpYWwgVGVzdHMKKyAg ICAgICAgICAgICAgICAgICAgaWYgbGVuKHNlcXVlbnRpYWxfdGVzdHMpID4gMDoKKyAgICAgICAg ICAgICAgICAgICAgICAgIHJ1bl9zZXF1ZW50aWFsX3Rlc3RzKGNsaWVudF91cmwsIHNlcnZlcnNf aW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcXVl bnRpYWxfdGVzdHMsIGJyb3dzZXJfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGJyb3dzZXJfdmVyc2lvbikKKworICAgICAgICAgICAgICAgICAgICAj IENsZWFuIHVwIGVudmlyb25tZW50CisgICAgICAgICAgICAgICAgICAgIGlmIGFwcF9zdGFydGVy X2xvY2FsOgorICAgICAgICAgICAgICAgICAgICAgICAgYXBwX3N0YXJ0ZXJfbG9jYWwuc3RvcF9h cHAoKQorCisgICAgICAgICAgICAgICAgZXhjZXB0IFN5c3RlbUV4aXQ6CisgICAgICAgICAgICAg ICAgICAgIGlmIGFwcF9zdGFydGVyX2xvY2FsOgorICAgICAgICAgICAgICAgICAgICAgICAgYXBw X3N0YXJ0ZXJfbG9jYWwuc3RvcF9hcHAoKQorICAgICAgICAgICAgICAgICAgICBpZiBoYW5kbGVf Y2xlYW51cDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9jbGVhbnVwKCkKKyAgICAg ICAgICAgICAgICAjIFBhdXNlIGJlZm9yZSBwcmludGluZyByZXN1bHQgaW4gb3JkZXIgbm90IHRv IG1peCBvdXRwdXQKKyAgICAgICAgICAgICAgICB0aW1lLnNsZWVwKDUpCisgICAgICAgICAgICAg ICAgIyBQcmludCBub3RlIGZvciBjb21wbGV0aW9uIG9mIGV4ZWN1dGlvbiBpbiBhIGJyb3dzZXIu CisgICAgICAgICAgICAgICAgcHJpbnQoCisgICAgICAgICAgICAgICAgICAgICJcbj09PT09PT09 PT09PT0gVGVzdCBleGVjdXRpb24gd2l0aCB7MH0gaXMgIgorICAgICAgICAgICAgICAgICAgICAi Y29tcGxldGVkLj09PT09PT09PT09PT0iLmZvcm1hdChicm93c2VyX25hbWUpLAorICAgICAgICAg ICAgICAgICAgICBmaWxlPXN5cy5zdGRlcnIpCisgICAgICAgICAgICAgICAgcHJpbnRfdGVzdF9y ZXN1bHRzKCkKKyAgICAgICAgZGVsIG9zLmVudmlyb25bIlBHQURNSU5fQ09ORklHX0RFRkFVTFRf U0VSVkVSIl0KKyAgICBlbHNlOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBmb3Igc2VydmVy IGluIHNlcnZlcnNfaW5mbzoKKyAgICAgICAgICAgICAgICB0aHJlYWQgPSB0aHJlYWRpbmcuVGhy ZWFkKHRhcmdldD1leGVjdXRlX3Rlc3QsIGFyZ3M9KAorICAgICAgICAgICAgICAgICAgICB0ZXN0 X21vZHVsZV9saXN0LCBzZXJ2ZXIsIGRyaXZlcikpCisgICAgICAgICAgICAgICAgdGhyZWFkLnN0 YXJ0KCkKKyAgICAgICAgICAgICAgICB0aHJlYWQuam9pbigpCisgICAgICAgIGV4Y2VwdCBTeXN0 ZW1FeGl0OgorICAgICAgICAgICAgaWYgaGFuZGxlX2NsZWFudXA6CisgICAgICAgICAgICAgICAg aGFuZGxlX2NsZWFudXAoKQorICAgICAgICBwcmludF90ZXN0X3Jlc3VsdHMoKQorCiAgICAgIyBT dG9wIGNvZGUgY292ZXJhZ2UKICAgICBpZiB0ZXN0X3V0aWxzLmlzX2NvdmVyYWdlX2VuYWJsZWQo YXJncyk6CiAgICAgICAgIGNvdi5zdG9wKCkKICAgICAgICAgY292LnNhdmUoKQogCi0gICAgIyAj IFByaW50IGNvdmVyYWdlIG9ubHkgaWYgY292ZXJhZ2UgYXJncyBnaXZlbiBpbiBjb21tYW5kIGxp bmUKKyAgICAjIFByaW50IGNvdmVyYWdlIG9ubHkgaWYgY292ZXJhZ2UgYXJncyBnaXZlbiBpbiBj b21tYW5kIGxpbmUKICAgICBpZiB0ZXN0X3V0aWxzLmlzX2NvdmVyYWdlX2VuYWJsZWQoYXJncyk6 CiAgICAgICAgIHRlc3RfdXRpbHMucHJpbnRfYW5kX3N0b3JlX2NvdmVyYWdlX3JlcG9ydChjb3Yp CiAKZGlmZiAtLWdpdCBhL3dlYi9yZWdyZXNzaW9uL3Rlc3RfY29uZmlnLmpzb24uaW4gYi93ZWIv cmVncmVzc2lvbi90ZXN0X2NvbmZpZy5qc29uLmluCmluZGV4IGFmMDYxYjkuLjgyMDc3MTEgMTAw NjQ0Ci0tLSBhL3dlYi9yZWdyZXNzaW9uL3Rlc3RfY29uZmlnLmpzb24uaW4KKysrIGIvd2ViL3Jl Z3Jlc3Npb24vdGVzdF9jb25maWcuanNvbi5pbgpAQCAtMSw2ICsxLDE0IEBACiB7CiAgICJoZWFk bGVzc19jaHJvbWUiOiBmYWxzZSwKICAgImRlZmF1bHRfYnJvd3NlciI6ICJDaHJvbWUiLAorICAi c2VsZW5vaWRfY29uZmlnIjp7CisgICAgICAgICJwZ0FkbWluX2RlZmF1bHRfc2VydmVyIjoiSVAg YWRkcmVzcyBvZiBtYWNoaW5lIHdoZXJlIHNvdXJjZSBjb2RlIGlzIGdvaW5nIHRvIGJlIGV4ZWN1 dGVkIiwKKyAgICAgICAgIm1heF9wYXJhbGxlbF9zZXNzaW9ucyI6ICIzIiwKKyAgICAgICAgInNl bGVub2lkX3VybCI6ICIiaHR0cDovLzxJUCBhZGRyZXNzIG9mIFNlbGVub2lkIEluc3RhbGxlZCBt YWNoaW5lPjo0NDQ0L3dkL2h1YiIsCisgICAgICAgICJicm93c2Vyc19saXN0IjogWworICAgICAg ICAgICAgeyJuYW1lIjogIkNocm9tZSIsInZlcnNpb24iOm51bGx9LAorICAgICAgICAgICAgeyJu YW1lIjogIkZpcmVmb3giLCJ2ZXJzaW9uIjpudWxsfSBdCisgIH0sCiAgICJwZ0FkbWluNF9sb2dp bl9jcmVkZW50aWFscyI6IHsKICAgICAibmV3X3Bhc3N3b3JkIjogIk5FV1BBU1NXT1JEIiwKICAg ICAibG9naW5fcGFzc3dvcmQiOiAiUEFTU1dPUkQiLAo= --000000000000b1b17f05a51ee23c--