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 1jQneH-0007Gq-R0 for pgadmin-hackers@arkaria.postgresql.org; Tue, 21 Apr 2020 07:48:54 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1jQneG-0004IT-Ni for pgadmin-hackers@arkaria.postgresql.org; Tue, 21 Apr 2020 07:48:52 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1jQneG-0004IL-A9 for pgadmin-hackers@lists.postgresql.org; Tue, 21 Apr 2020 07:48:52 +0000 Received: from mail-lf1-x133.google.com ([2a00:1450:4864:20::133]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1jQne5-00085N-Ux for pgadmin-hackers@postgresql.org; Tue, 21 Apr 2020 07:48:49 +0000 Received: by mail-lf1-x133.google.com with SMTP id h6so10341343lfc.0 for ; Tue, 21 Apr 2020 00:48:41 -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=9J1VQVOtBk29BZCNX11LMYYn+xmnoPRaQiVG2tuNz4U=; b=BKJeT+IDttq6t5nqfSxc3QdoqKEnBXY2y703HTI02i6kPkFmFGeJn0XE28k81lQBlZ u/zG+MhOYGuXe9EXdAgmo/H0SbzLA1CsnHe829l8FGHg1TVxyxYwDrv0UZXW7PTUabfx D/9OH8HY4z/yLM974VzXgxH8aNNlrPVUQuXtcAtXluZzytkaYksfpkl8838TqSadFiGt ItJvwMDoX0hu6kKI/TvMZjSPlF0RceUsUr+qlqvTRLv43HVr5av7GS7+v6J/6Kzi0PYo tGAvClqRiiYcomcugZ1EwuvMjT+fLDYZORpfUDEpcaLPz+/hVqzjNiifh+a3xNPdG39o sppQ== 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=9J1VQVOtBk29BZCNX11LMYYn+xmnoPRaQiVG2tuNz4U=; b=SLxL2/ckCIlccnhC9nVsXS5UprKlMqjTm2s+bmqQ3WDUkXys4Z6A/gs+Xoxypm4BMD c6LOkqKaX5Dg3IyQsffha24cZo1EqVDNKeXfG54+rAr1/7O1R4SXOL/4194q3BkkXpLU JqevmOu7wP4xzvLRbq2FzR2DLtWtAYjAUGcp2HqgnNy3kRNUqPvgLDJXuQRfTo/Ape+c n6e+MDCIp0VhFi2HW4w7VOjcaxeL0OoHlbbBm9dZnSmSsXDsvkD1EYCrR+Klskw1sQGt jycv1xKLme6O0hg1APQpg/6sk3hi5oSrG47ST0L/i+1rJsCHjpPUO9adqNZUbDidX0Ia QUZg== X-Gm-Message-State: AGi0PuYimEl87RyMbswFEZx2kj3DaoEJATvWkPRdllOtrb4QzC2AdUYT Hb+fSK+FL6a63HIpZkITFZrDdY2/FPpTq+JreLQHYjjcUBSb+lPaffI0b0Vnctm1NcwlDRTsPlU ixYF5VdjQKEugG6aP9UWwpPJLtYB6R/gC/ljNSJT+2akV8sPrJnCjmP5pBjDtINMWIgf3J+AvB/ c6VJi8KjGyyg3vRcEQQPntKU/r8DQEp++FNoTBeImdTOuvqcQtLxpu1GYTwA== X-Google-Smtp-Source: APiQypJx86c7jgUUzMrcgezDUJ0lPadloQgVELs0poijAHXF2ZtDZfvUllqTvCCV6C3pisFN3jdlF9MCnDU+D54T8XY= X-Received: by 2002:ac2:52b9:: with SMTP id r25mr1691204lfm.156.1587455320690; Tue, 21 Apr 2020 00:48:40 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Shubham Agarwal Date: Tue, 21 Apr 2020 13:18:29 +0530 Message-ID: Subject: Re: [pgAdmin 4 - Housekeeping #5255] Implement Selenium Grid using multi-threading & solenoid using current test framework To: navnath gadakh Cc: Akshay Joshi , pgadmin-hackers , Yogesh Mahajan Content-Type: multipart/mixed; boundary="0000000000007cc10705a3c83ee2" 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 --0000000000007cc10705a3c83ee2 Content-Type: multipart/alternative; boundary="0000000000007cc10405a3c83ee0" --0000000000007cc10405a3c83ee0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable 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 with 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 files. 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 ran 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 approached 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 > --=20 Thanks & Regards, Shubham Agarwal EnterpriseDB Corporation The Postgres Database Company --0000000000007cc10405a3c83ee0 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi Yoges= h,
Below are the review comment= s-

= 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 thr= ow some exception.
b. line number 447 -> The drop_databa= se function will only try to drop the database with the name which is newly= created
at 431 line number, its pr= obability is 1% instead of this you can write a logic so that it will drop = all the database which starts with name =E2=80=98acceptance_test_db'.
=C2=A0 c. line 584 -= =C2=A0Why we are including resql test case execution in GUI execution logic= .
=C2=A0 =C2=A0 d.=C2=A0<= span style=3D"color:rgb(0,0,0);font-size:9pt">Change the function name run_= test as script name is also runtests.py

2. test_utils.py
=C2= =A0 =C2=A0 a.=C2=A0Remove the headless chrome code from get_remote_web= driver() in test_utils.py since we are using solenoid and it is not required anymo= re.
=C2=A0 = =C2=A0 b. Create se= parate functions to instantiate the firefox driver and chrome driver logic = since the same code is used in multiple files.
c. launch_url_= in_browser() -> you can simplify the definition of the function like:
=C2=A0 =C2=A0=C2=A0retry =3D 60
=EF=BB=BF=C2=A0 =C2=A0 =C2=A0 =C2=A0 whi= le=C2=A0retry > 0:<= /font>
=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 drive= r.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 lo= gs are not printing as per the logic some time, I ran the suite for two ser= vers and attached are the execution logs.
4. Readme -
Please provide the Valid selenoid URL to be provided in the test_c= onfig.json, with all the steps mentioned in the readme it is not clear.
Revisit the readme and w= rite the missing steps.
= 5. copy_selected_query_results_feature_tests.py-
Create the function to avoid duplicate code. Th= e 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. fo= r ex.- _update_preference() function is
introduced in pg_utilities_backup_restrore_test.py but f= rom the function name, it is not clear what preferences are going to update= in it.
7. test_index_constraint_add test c= ase is failing due to the latest change, please merge and update this test = case
<= /span>

On Thu, Apr 16, 2020 at 2:41 PM navnath gadakh <navnath.gadakh@enterprisedb.com> wrot= e:
Hi,
I think I am not the righ= t person to review this patch now as I already reviewed this code offline i= n the last week. I know the=C2=A0approached Yogesh has followed, also given= some review comments on it.
Someone else please review it.=C2=A0

Thanks!

On Mon, Apr 13, 2020 at 2:= 49 PM Akshay Joshi <akshay.joshi@enterprisedb.com> wrote:
Hi Navnath

Can you please= review it?

<= div class=3D"gmail_quote">
On Mon, Apr 13, 2020 at 2:40 PM Yogesh Mahajan <<= a href=3D"mailto:yogesh.mahajan@enterprisedb.com" target=3D"_blank">yogesh.= mahajan@enterprisedb.com> wrote:
Hi,
Please find the attach= ed=C2=A0patch for running features tests using solenoid(selenium=C2= =A0grid + docker).
KIndly= review.
To sun feature t= ests in parallel, required prerequisites can be checked in '~/web/regre= ssion/README' file.
A= lso detailed=C2=A0instructions are added in the same=C2=A0file.
After applying the patch, any existi= ng process for execution of API/Features=C2=A0tests remains the same.


Thanks,
Yogesh Mahajan
QA - Team
EnterpriseDB Corporation

Phone: +91-9741705709
<= /div>


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


--
Regards,
Navnath Gadakh


--
Thanks & Regards,
Shubh= am Agarwal
Enterpri= seDB Corporation

The Postgres Database Compa= ny
--0000000000007cc10405a3c83ee0-- --0000000000007cc10705a3c83ee2 Content-Type: application/octet-stream; name="regression.log" Content-Disposition: attachment; filename="regression.log" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_k99jh9xr0 WzQ1NzY5NzIyMjRdIDIwMjAtMDQtMjEgMTA6Mzc6NTcsMDk4OiBFUlJPUglTVERFUlI6CT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KWzQ1NzY5NzIyMjRdIDIwMjAtMDQtMjEgMTA6Mzc6NTcsMDk5OiBFUlJPUglTVERF UlI6CVRvdGFsIFRlc3RzICMgMTYKWzQ1NzY5NzIyMjRdIDIwMjAtMDQtMjEgMTA6Mzc6NTcsMDk5 OiBFUlJPUglTVERFUlI6CVBhcmFsbGVsIFRlc3RzICMgMTIsIFNlcXVlbnRpYWwgVGVzdHMgIyA0 Cls0NTc2OTcyMjI0XSAyMDIwLTA0LTIxIDEwOjM3OjU3LDA5OTogRVJST1IJU1RERVJSOglCcm93 c2VyOiBbTmFtZTpDaHJvbWUsIFZlcnNpb246IDgwLjBdCls0NTc2OTcyMjI0XSAyMDIwLTA0LTIx IDEwOjM3OjU3LDA5OTogRVJST1IJU1RERVJSOgk9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClsxMjMxNDUzMjIzNzcy MTZdIDIwMjAtMDQtMjEgMTA6Mzg6MDEsOTc4OiBFUlJPUglTVERFUlI6CQpbMTIzMTQ1MzIyMzc3 MjE2XSAyMDIwLTA0LTIxIDEwOjM4OjAxLDk3OTogRVJST1IJU1RERVJSOgk9PT09PT09PT09PT09 UnVubmluZyB0aGUgdGVzdCBjYXNlcyBmb3IgJ0VQQVMgOS40JyA9PT09PT09PT09PT09ClsxMjMx NDUzMjIzNzcyMTZdIDIwMjAtMDQtMjEgMTA6Mzg6MDQsNzEzOiBFUlJPUglTVERFUlI6CXJ1blRl c3QgKHBnYWRtaW4uZmVhdHVyZV90ZXN0cy5icm93c2VyX3Rvb2xfYmFyX3Rlc3QuQnJvd3NlclRv b2xCYXJGZWF0dXJlVGVzdCkKWzEyMzE0NTMyMjM3NzIxNl0gMjAyMC0wNC0yMSAxMDozODowNCw3 MTM6IEVSUk9SCVNUREVSUjoJQnJvd3NlciB0b29sIGJhciBmZWF0dXJlIHRlc3QKWzEyMzE0NTMy MjM3NzIxNl0gMjAyMC0wNC0yMSAxMDozODowNCw3MTM6IEVSUk9SCVNUREVSUjoJIC4uLgpbMTIz MTQ1MzI3NjMyMzg0XSAyMDIwLTA0LTIxIDEwOjM4OjEwLDM3OTogRVJST1IJU1RERVJSOgkKWzEy MzE0NTMyNzYzMjM4NF0gMjAyMC0wNC0yMSAxMDozODoxMCwzNzk6IEVSUk9SCVNUREVSUjoJPT09 PT09PT09PT09PVJ1bm5pbmcgdGhlIHRlc3QgY2FzZXMgZm9yICdQRyA5LjQnID09PT09PT09PT09 PT0KWzEyMzE0NTMyMjM3NzIxNl0gMjAyMC0wNC0yMSAxMDozODoyMSwwODM6IEVSUk9SCVNUREVS UjoJClsxMjMxNDUzMjIzNzcyMTZdIDIwMjAtMDQtMjEgMTA6Mzg6MjEsMDgzOiBFUlJPUglTVERF UlI6CVF1ZXJ5IFRvb2wgVG9vbEJhciBCdXR0b24KWzEyMzE0NTMyNzYzMjM4NF0gMjAyMC0wNC0y MSAxMDozODoyNCwyMDM6IEVSUk9SCVNUREVSUjoJcnVuVGVzdCAocGdhZG1pbi5mZWF0dXJlX3Rl c3RzLmJyb3dzZXJfdG9vbF9iYXJfdGVzdC5Ccm93c2VyVG9vbEJhckZlYXR1cmVUZXN0KQpbMTIz MTQ1MzI3NjMyMzg0XSAyMDIwLTA0LTIxIDEwOjM4OjI0LDIwNDogRVJST1IJU1RERVJSOglCcm93 c2VyIHRvb2wgYmFyIGZlYXR1cmUgdGVzdApbMTIzMTQ1MzI3NjMyMzg0XSAyMDIwLTA0LTIxIDEw OjM4OjI0LDIwNDogRVJST1IJU1RERVJSOgkgLi4uClsxMjMxNDUzMjc2MzIzODRdIDIwMjAtMDQt MjEgMTA6Mzg6NDIsMjIzOiBFUlJPUglTVERFUlI6CQpbMTIzMTQ1MzI3NjMyMzg0XSAyMDIwLTA0 LTIxIDEwOjM4OjQyLDIyNDogRVJST1IJU1RERVJSOglRdWVyeSBUb29sIFRvb2xCYXIgQnV0dG9u ClsxMjMxNDUzMjIzNzcyMTZdIDIwMjAtMDQtMjEgMTA6NDA6MjAsNzAxOiBFUlJPUglTVERFUlI6 CU9LLgpbMTIzMTQ1MzIyMzc3MjE2XSAyMDIwLTA0LTIxIDEwOjQwOjIwLDcwMTogRVJST1IJU1RE RVJSOgkKWzEyMzE0NTMyMjM3NzIxNl0gMjAyMC0wNC0yMSAxMDo0MDoyMCw3MDE6IEVSUk9SCVNU REVSUjoJVmlldyBEYXRhIFRvb2xCYXIgQnV0dG9uClsxMjMxNDUzMjc2MzIzODRdIDIwMjAtMDQt MjEgMTA6NDA6NDEsMjc4OiBFUlJPUglTVERFUlI6CU9LLgpbMTIzMTQ1MzI3NjMyMzg0XSAyMDIw LTA0LTIxIDEwOjQwOjQxLDI3ODogRVJST1IJU1RERVJSOgkKWzEyMzE0NTMyNzYzMjM4NF0gMjAy MC0wNC0yMSAxMDo0MDo0MSwyNzk6IEVSUk9SCVNUREVSUjoJVmlldyBEYXRhIFRvb2xCYXIgQnV0 dG9uClsxMjMxNDUzMjIzNzcyMTZdIDIwMjAtMDQtMjEgMTA6NDI6MzIsNTAyOiBFUlJPUglTVERF UlI6CU9LLgpbMTIzMTQ1MzIyMzc3MjE2XSAyMDIwLTA0LTIxIDEwOjQyOjMyLDUwMzogRVJST1IJ U1RERVJSOgkKWzEyMzE0NTMyMjM3NzIxNl0gMjAyMC0wNC0yMSAxMDo0MjozMiw1MDM6IEVSUk9S CVNUREVSUjoJRmlsdGVyZWQgUm93cyBUb29sQmFyIEJ1dHRvbgpbMTIzMTQ1MzIyMzc3MjE2XSAy MDIwLTA0LTIxIDEwOjQyOjM4LDE2MTogRVJST1IJU1RERVJSOglPSy4KWzEyMzE0NTMyMjM3NzIx Nl0gMjAyMC0wNC0yMSAxMDo0Mjo0Myw3MDY6IEVSUk9SCVNUREVSUjoJb2sKWzEyMzE0NTMyMjM3 NzIxNl0gMjAyMC0wNC0yMSAxMDo0Mjo0Myw3MDc6IEVSUk9SCVNUREVSUjoJcnVuVGVzdCAocGdh ZG1pbi5mZWF0dXJlX3Rlc3RzLmNvcHlfc2VsZWN0ZWRfcXVlcnlfcmVzdWx0c19mZWF0dXJlX3Rl c3QuQ29weVNlbGVjdGVkUXVlcnlSZXN1bHRzRmVhdHVyZVRlc3QpClsxMjMxNDUzMjIzNzcyMTZd IDIwMjAtMDQtMjEgMTA6NDI6NDMsNzA3OiBFUlJPUglTVERFUlI6CUNvcHkgcm93cywgY29sdW1u IHVzaW5nIGJ1dHRvbiBhbmQga2V5Ym9hcmQgc2hvcnRjdXQKWzEyMzE0NTMyMjM3NzIxNl0gMjAy MC0wNC0yMSAxMDo0Mjo0Myw3MDc6IEVSUk9SCVNUREVSUjoJIC4uLgpbMTIzMTQ1MzI3NjMyMzg0 XSAyMDIwLTA0LTIxIDEwOjQzOjAzLDkxNzogRVJST1IJU1RERVJSOglPSy4KWzEyMzE0NTMyNzYz MjM4NF0gMjAyMC0wNC0yMSAxMDo0MzowMyw5MTc6IEVSUk9SCVNUREVSUjoJClsxMjMxNDUzMjc2 MzIzODRdIDIwMjAtMDQtMjEgMTA6NDM6MDMsOTE3OiBFUlJPUglTVERFUlI6CUZpbHRlcmVkIFJv d3MgVG9vbEJhciBCdXR0b24KWzEyMzE0NTMyNzYzMjM4NF0gMjAyMC0wNC0yMSAxMDo0MzowNSw3 MjA6IEVSUk9SCVNUREVSUjoJT0suClsxMjMxNDUzMjc2MzIzODRdIDIwMjAtMDQtMjEgMTA6NDM6 MTEsMzU3OiBFUlJPUglTVERFUlI6CW9rClsxMjMxNDUzMjc2MzIzODRdIDIwMjAtMDQtMjEgMTA6 NDM6MTEsMzU4OiBFUlJPUglTVERFUlI6CXJ1blRlc3QgKHBnYWRtaW4uZmVhdHVyZV90ZXN0cy5j b3B5X3NlbGVjdGVkX3F1ZXJ5X3Jlc3VsdHNfZmVhdHVyZV90ZXN0LkNvcHlTZWxlY3RlZFF1ZXJ5 UmVzdWx0c0ZlYXR1cmVUZXN0KQpbMTIzMTQ1MzI3NjMyMzg0XSAyMDIwLTA0LTIxIDEwOjQzOjEx LDM1ODogRVJST1IJU1RERVJSOglDb3B5IHJvd3MsIGNvbHVtbiB1c2luZyBidXR0b24gYW5kIGtl eWJvYXJkIHNob3J0Y3V0ClsxMjMxNDUzMjc2MzIzODRdIDIwMjAtMDQtMjEgMTA6NDM6MTEsMzU4 OiBFUlJPUglTVERFUlI6CSAuLi4KWzEyMzE0NTMyMjM3NzIxNl0gMjAyMC0wNC0yMSAxMDo0Mzo0 NSw2MTk6IEVSUk9SCVNUREVSUjoJb2sKWzEyMzE0NTMyMjM3NzIxNl0gMjAyMC0wNC0yMSAxMDo0 Mzo0NSw2MjA6IEVSUk9SCVNUREVSUjoJcnVuVGVzdCAocGdhZG1pbi5mZWF0dXJlX3Rlc3RzLmZp bGVfbWFuYWdlcl90ZXN0LkNoZWNrRmlsZU1hbmFnZXJGZWF0dXJlVGVzdCkKWzEyMzE0NTMyMjM3 NzIxNl0gMjAyMC0wNC0yMSAxMDo0Mzo0NSw2MjA6IEVSUk9SCVNUREVSUjoJRmlsZSBtYW5hZ2Vy IGZlYXR1cmUgdGVzdApbMTIzMTQ1MzIyMzc3MjE2XSAyMDIwLTA0LTIxIDEwOjQzOjQ1LDYyMDog RVJST1IJU1RERVJSOgkgLi4uClsxMjMxNDUzMjIzNzcyMTZdIDIwMjAtMDQtMjEgMTA6NDM6NTks MzQxOiBFUlJPUglTVERFUlI6CVRlc3RzIHRvIGNoZWNrIGlmIEZpbGUgbWFuYWdlciBpcyB2dWxu ZXJhYmxlIHRvIFhTUy4uLgpbMTIzMTQ1MzI3NjMyMzg0XSAyMDIwLTA0LTIxIDEwOjQ0OjA5LDcw NTogRVJST1IJU1RERVJSOglFUlJPUgpbMTIzMTQ1MzI3NjMyMzg0XSAyMDIwLTA0LTIxIDEwOjQ0 OjA5LDcwNjogRVJST1IJU1RERVJSOglydW5UZXN0IChwZ2FkbWluLmZlYXR1cmVfdGVzdHMuZmls ZV9tYW5hZ2VyX3Rlc3QuQ2hlY2tGaWxlTWFuYWdlckZlYXR1cmVUZXN0KQpbMTIzMTQ1MzI3NjMy Mzg0XSAyMDIwLTA0LTIxIDEwOjQ0OjA5LDcwNjogRVJST1IJU1RERVJSOglGaWxlIG1hbmFnZXIg ZmVhdHVyZSB0ZXN0ClsxMjMxNDUzMjc2MzIzODRdIDIwMjAtMDQtMjEgMTA6NDQ6MDksNzA2OiBF UlJPUglTVERFUlI6CSAuLi4KWzEyMzE0NTMyNzYzMjM4NF0gMjAyMC0wNC0yMSAxMDo0NDoyNyww Mzk6IEVSUk9SCVNUREVSUjoJVGVzdHMgdG8gY2hlY2sgaWYgRmlsZSBtYW5hZ2VyIGlzIHZ1bG5l cmFibGUgdG8gWFNTLi4uClsxMjMxNDUzMjIzNzcyMTZdIDIwMjAtMDQtMjEgMTA6NDQ6MjcsNTA2 OiBFUlJPUglTVERFUlI6CU9LLgpbMTIzMTQ1MzIyMzc3MjE2XSAyMDIwLTA0LTIxIDEwOjQ0OjI3 LDUwNjogRVJST1IJU1RERVJSOglGaWxlIG1hbmFnZXIgc29ydGluZyBvZiBkYXRhClsxMjMxNDUz MjIzNzcyMTZdIDIwMjAtMDQtMjEgMTA6NDQ6MzEsMTMyOiBFUlJPUglTVERFUlI6CU9LLgpbMTIz MTQ1MzIyMzc3MjE2XSAyMDIwLTA0LTIxIDEwOjQ0OjM2LDY4NzogRVJST1IJU1RERVJSOglvawpb MTIzMTQ1MzIyMzc3MjE2XSAyMDIwLTA0LTIxIDEwOjQ0OjM2LDY4ODogRVJST1IJU1RERVJSOgly dW5UZXN0IChwZ2FkbWluLmZlYXR1cmVfdGVzdHMucGdfZGF0YXR5cGVfdmFsaWRhdGlvbl90ZXN0 LlBHRGF0YXlwZUZlYXR1cmVUZXN0KQpbMTIzMTQ1MzIyMzc3MjE2XSAyMDIwLTA0LTIxIDEwOjQ0 OjM2LDY4ODogRVJST1IJU1RERVJSOglUZXN0IGNoZWNrcyBmb3IgUEcgZGF0YS10eXBlcyBvdXRw dXQKWzEyMzE0NTMyMjM3NzIxNl0gMjAyMC0wNC0yMSAxMDo0NDozNiw2ODk6IEVSUk9SCVNUREVS UjoJIC4uLgpbMTIzMTQ1MzIyMzc3MjE2XSAyMDIwLTA0LTIxIDEwOjQ1OjAwLDY4NjogRVJST1IJ U1RERVJSOglFUlJPUgpbMTIzMTQ1MzIyMzc3MjE2XSAyMDIwLTA0LTIxIDEwOjQ1OjAwLDY4ODog RVJST1IJU1RERVJSOglydW5UZXN0IChwZ2FkbWluLmZlYXR1cmVfdGVzdHMucXVlcnlfdG9vbF9h dXRvX2NvbXBsZXRlX3Rlc3RzLlF1ZXJ5VG9vbEF1dG9Db21wbGV0ZUZlYXR1cmVUZXN0KQpbMTIz MTQ1MzIyMzc3MjE2XSAyMDIwLTA0LTIxIDEwOjQ1OjAwLDY4ODogRVJST1IJU1RERVJSOglRdWVy eSB0b29sIGF1dG8gY29tcGxldGUgZmVhdHVyZSB0ZXN0ClsxMjMxNDUzMjIzNzcyMTZdIDIwMjAt MDQtMjEgMTA6NDU6MDAsNjg5OiBFUlJPUglTVERFUlI6CSAuLi4KWzEyMzE0NTMyNzYzMjM4NF0g MjAyMC0wNC0yMSAxMDo0NToxMywwMzc6IEVSUk9SCVNUREVSUjoJT0suClsxMjMxNDUzMjc2MzIz ODRdIDIwMjAtMDQtMjEgMTA6NDU6MTMsMDM3OiBFUlJPUglTVERFUlI6CUZpbGUgbWFuYWdlciBz b3J0aW5nIG9mIGRhdGEKWzEyMzE0NTMyNzYzMjM4NF0gMjAyMC0wNC0yMSAxMDo0NToxNiwyMDM6 IEVSUk9SCVNUREVSUjoJT0suClsxMjMxNDUzMjc2MzIzODRdIDIwMjAtMDQtMjEgMTA6NDU6MjAs MDQ4OiBFUlJPUglTVERFUlI6CW9rClsxMjMxNDUzMjc2MzIzODRdIDIwMjAtMDQtMjEgMTA6NDU6 MjAsMDQ4OiBFUlJPUglTVERFUlI6CXJ1blRlc3QgKHBnYWRtaW4uZmVhdHVyZV90ZXN0cy5wZ19k YXRhdHlwZV92YWxpZGF0aW9uX3Rlc3QuUEdEYXRheXBlRmVhdHVyZVRlc3QpClsxMjMxNDUzMjc2 MzIzODRdIDIwMjAtMDQtMjEgMTA6NDU6MjAsMDQ5OiBFUlJPUglTVERFUlI6CVRlc3QgY2hlY2tz IGZvciBQRyBkYXRhLXR5cGVzIG91dHB1dApbMTIzMTQ1MzI3NjMyMzg0XSAyMDIwLTA0LTIxIDEw OjQ1OjIwLDA0OTogRVJST1IJU1RERVJSOgkgLi4uClsxMjMxNDUzMjIzNzcyMTZdIDIwMjAtMDQt MjEgMTA6NDU6MzcsODc3OiBFUlJPUglTVERFUlI6CQpbMTIzMTQ1MzIyMzc3MjE2XSAyMDIwLTA0 LTIxIDEwOjQ1OjM3LDg3NzogRVJST1IJU1RERVJSOglBdXRvIGNvbXBsZXRlIEFMVEVSIGtleXdv cmQuLi4KWzEyMzE0NTMyNzYzMjM4NF0gMjAyMC0wNC0yMSAxMDo0NTo0MywxMjk6IEVSUk9SCVNU REVSUjoJRVJST1IKWzEyMzE0NTMyNzYzMjM4NF0gMjAyMC0wNC0yMSAxMDo0NTo0MywxMzI6IEVS Uk9SCVNUREVSUjoJcnVuVGVzdCAocGdhZG1pbi5mZWF0dXJlX3Rlc3RzLnF1ZXJ5X3Rvb2xfYXV0 b19jb21wbGV0ZV90ZXN0cy5RdWVyeVRvb2xBdXRvQ29tcGxldGVGZWF0dXJlVGVzdCkKWzEyMzE0 NTMyNzYzMjM4NF0gMjAyMC0wNC0yMSAxMDo0NTo0MywxMzI6IEVSUk9SCVNUREVSUjoJUXVlcnkg dG9vbCBhdXRvIGNvbXBsZXRlIGZlYXR1cmUgdGVzdApbMTIzMTQ1MzI3NjMyMzg0XSAyMDIwLTA0 LTIxIDEwOjQ1OjQzLDEzMzogRVJST1IJU1RERVJSOgkgLi4uClsxMjMxNDUzMjIzNzcyMTZdIDIw MjAtMDQtMjEgMTA6NDU6NDUsMzEwOiBFUlJPUglTVERFUlI6CU9LLgpbMTIzMTQ1MzIyMzc3MjE2 XSAyMDIwLTA0LTIxIDEwOjQ1OjQ4LDcwNTogRVJST1IJU1RERVJSOglBdXRvIGNvbXBsZXRlIEJF R0lOIGtleXdvcmQuLi4KWzEyMzE0NTMyMjM3NzIxNl0gMjAyMC0wNC0yMSAxMDo0NTo1Miw2MzY6 IEVSUk9SCVNUREVSUjoJT0suClsxMjMxNDUzMjIzNzcyMTZdIDIwMjAtMDQtMjEgMTA6NDU6NTYs NDY2OiBFUlJPUglTVERFUlI6CUF1dG8gY29tcGxldGUgQ0FTQ0FERUQga2V5d29yZC4uLgpbMTIz MTQ1MzIyMzc3MjE2XSAyMDIwLTA0LTIxIDEwOjQ2OjAwLDU4NTogRVJST1IJU1RERVJSOglPSy4K WzEyMzE0NTMyMjM3NzIxNl0gMjAyMC0wNC0yMSAxMDo0NjowMiw2MTU6IEVSUk9SCVNUREVSUjoJ QXV0byBjb21wbGV0ZSBTRUxFQ1Qga2V5d29yZC4uLgpbMTIzMTQ1MzIyMzc3MjE2XSAyMDIwLTA0 LTIxIDEwOjQ2OjA3LDUxNjogRVJST1IJU1RERVJSOglPSy4KWzEyMzE0NTMyMjM3NzIxNl0gMjAy MC0wNC0yMSAxMDo0NjoxMSwxMjU6IEVSUk9SCVNUREVSUjoJQXV0byBjb21wbGV0ZSBwZ19iYWNr ZW5kX3BpZCgpIGZ1bmN0aW9uIC4uLgpbMTIzMTQ1MzIyMzc3MjE2XSAyMDIwLTA0LTIxIDEwOjQ2 OjE4LDI4MTogRVJST1IJU1RERVJSOglPSy4KWzEyMzE0NTMyMjM3NzIxNl0gMjAyMC0wNC0yMSAx MDo0NjoyMiw3NDg6IEVSUk9SCVNUREVSUjoJQXV0byBjb21wbGV0ZSBjdXJyZW50X3F1ZXJ5KCkg ZnVuY3Rpb24gLi4uClsxMjMxNDUzMjIzNzcyMTZdIDIwMjAtMDQtMjEgMTA6NDY6MjcsMzQxOiBF UlJPUglTVERFUlI6CU9LLgpbMTIzMTQ1MzIyMzc3MjE2XSAyMDIwLTA0LTIxIDEwOjQ2OjMwLDMy OTogRVJST1IJU1RERVJSOglBdXRvIGNvbXBsZXRlIGZ1bmN0aW9uIHdpdGggYXJndW1lbnQgLi4u ClsxMjMxNDUzMjIzNzcyMTZdIDIwMjAtMDQtMjEgMTA6NDY6MzksMzIwOiBFUlJPUglTVERFUlI6 CU9LLgpbMTIzMTQ1MzIyMzc3MjE2XSAyMDIwLTA0LTIxIDEwOjQ2OjQzLDQ1NjogRVJST1IJU1RE RVJSOglBdXRvIGNvbXBsZXRlIHNjaGVtYSBvdGhlciB0aGFuIGRlZmF1bHQgc3RhcnQgd2l0aCB0 ZXN0XyAuLi4KWzEyMzE0NTMyMjM3NzIxNl0gMjAyMC0wNC0yMSAxMDo0Njo0OSwyNDM6IEVSUk9S CVNUREVSUjoJT0suClsxMjMxNDUzMjIzNzcyMTZdIDIwMjAtMDQtMjEgMTA6NDY6NTIsMzUzOiBF UlJPUglTVERFUlI6CUF1dG8gY29tcGxldGUgc2NoZW1hIG90aGVyIHRoYW4gZGVmYXVsdCBzdGFy dHMgd2l0aCBjb21wXyAuLi4KWzEyMzE0NTMyNzYzMjM4NF0gMjAyMC0wNC0yMSAxMDo0Njo1NCw1 Mzg6IEVSUk9SCVNUREVSUjoJVGhlIHNlcnZlci9wcmV2aW91cyBub2RlcyBub3QgZXhwYW5kZWQK WzEyMzE0NTMyNzYzMjM4NF0gMjAyMC0wNC0yMSAxMDo0Njo1NCw1Mzk6IEVSUk9SCVNUREVSUjoJ VGhlIGRhdGFiYXNlcy9wcmV2aW91cyBub2RlcyBub3QgZXhwYW5kZWQKWzEyMzE0NTMyMjM3NzIx Nl0gMjAyMC0wNC0yMSAxMDo0NzowMCwxMDk6IEVSUk9SCVNUREVSUjoJT0suClsxMjMxNDUzMjIz NzcyMTZdIDIwMjAtMDQtMjEgMTA6NDc6MDQsNjIwOiBFUlJPUglTVERFUlI6CUF1dG8gY29tcGxl dGUgZmlyc3QgdGFibGUgaW4gcHVibGljIHNjaGVtYSAuLi4KWzEyMzE0NTMyNzYzMjM4NF0gMjAy MC0wNC0yMSAxMDo0NzowNiwwMTI6IEVSUk9SCVNUREVSUjoJRkFJTApbMTIzMTQ1MzI3NjMyMzg0 XSAyMDIwLTA0LTIxIDEwOjQ3OjA2LDAxMjogRVJST1IJU1RERVJSOglydW5UZXN0IChwZ2FkbWlu LmZlYXR1cmVfdGVzdHMucXVlcnlfdG9vbF9qb3VybmV5X3Rlc3QuUXVlcnlUb29sSm91cm5leVRl c3QpClsxMjMxNDUzMjc2MzIzODRdIDIwMjAtMDQtMjEgMTA6NDc6MDYsMDEyOiBFUlJPUglTVERF UlI6CVRlc3RzIHRoZSBwYXRoIHRocm91Z2ggdGhlIHF1ZXJ5IHRvb2wKWzEyMzE0NTMyNzYzMjM4 NF0gMjAyMC0wNC0yMSAxMDo0NzowNiwwMTM6IEVSUk9SCVNUREVSUjoJIC4uLgpbMTIzMTQ1MzIy Mzc3MjE2XSAyMDIwLTA0LTIxIDEwOjQ3OjA4LDY4MjogRVJST1IJU1RERVJSOglPSy4KWzEyMzE0 NTMyMjM3NzIxNl0gMjAyMC0wNC0yMSAxMDo0NzoxMiwzOTY6IEVSUk9SCVNUREVSUjoJQXV0byBj b21wbGV0ZSBzZWNvbmQgdGFibGUgaW4gcHVibGljIHNjaGVtYSAuLi4KWzEyMzE0NTMyMjM3NzIx Nl0gMjAyMC0wNC0yMSAxMDo0NzoxNiw2ODk6IEVSUk9SCVNUREVSUjoJT0suClsxMjMxNDUzMjIz NzcyMTZdIDIwMjAtMDQtMjEgMTA6NDc6MTgsOTA2OiBFUlJPUglTVERFUlI6CUF1dG8gY29tcGxl dGUgSk9JTiBzZWNvbmQgdGFibGUgd2l0aCBhZnRlciBzY2hlbWEgbmFtZSAuLi4KWzEyMzE0NTMy MjM3NzIxNl0gMjAyMC0wNC0yMSAxMDo0NzoyMiw2MTI6IEVSUk9SCVNUREVSUjoJT0suClsxMjMx NDUzMjIzNzcyMTZdIDIwMjAtMDQtMjEgMTA6NDc6MjQsOTk3OiBFUlJPUglTVERFUlI6CUF1dG8g Y29tcGxldGUgSk9JTiBPTiBzb21lIGNvbHVtbnMgLi4uClsxMjMxNDUzMjIzNzcyMTZdIDIwMjAt MDQtMjEgMTA6NDc6MjgsNjQxOiBFUlJPUglTVERFUlI6CU9LLgpbMTIzMTQ1MzIyMzc3MjE2XSAy MDIwLTA0LTIxIDEwOjQ3OjMwLDgyMDogRVJST1IJU1RERVJSOglBdXRvIGNvbXBsZXRlIEpPSU4g T04gc29tZSBjb2x1bW5zIHVzaW5nIHRhYmxlIGFsaWFzIC4uLgpbMTIzMTQ1MzIyMzc3MjE2XSAy MDIwLTA0LTIxIDEwOjQ3OjM0LDAyMzogRVJST1IJU1RERVJSOglPSy4KWzEyMzE0NTMyMjM3NzIx Nl0gMjAyMC0wNC0yMSAxMDo0NzozOCwzMTE6IEVSUk9SCVNUREVSUjoJb2sKWzEyMzE0NTMyMjM3 NzIxNl0gMjAyMC0wNC0yMSAxMDo0NzozOCwzMTE6IEVSUk9SCVNUREVSUjoJcnVuVGVzdCAocGdh ZG1pbi5mZWF0dXJlX3Rlc3RzLnF1ZXJ5X3Rvb2xfam91cm5leV90ZXN0LlF1ZXJ5VG9vbEpvdXJu ZXlUZXN0KQpbMTIzMTQ1MzIyMzc3MjE2XSAyMDIwLTA0LTIxIDEwOjQ3OjM4LDMxMTogRVJST1IJ U1RERVJSOglUZXN0cyB0aGUgcGF0aCB0aHJvdWdoIHRoZSBxdWVyeSB0b29sClsxMjMxNDUzMjIz NzcyMTZdIDIwMjAtMDQtMjEgMTA6NDc6MzgsMzExOiBFUlJPUglTVERFUlI6CSAuLi4KWzEyMzE0 NTMyNzYzMjM4NF0gMjAyMC0wNC0yMSAxMDo0ODowMCw4NDQ6IEVSUk9SCVNUREVSUjoJQ29weSBy b3dzLi4uClsxMjMxNDUzMjc2MzIzODRdIDIwMjAtMDQtMjEgMTA6NDg6MDIsOTc0OiBFUlJPUglT VERFUlI6CSBPSy4KWzEyMzE0NTMyNzYzMjM4NF0gMjAyMC0wNC0yMSAxMDo0ODowMiw5NzQ6IEVS Uk9SCVNUREVSUjoJQ29weSBjb2x1bW5zLi4uClsxMjMxNDUzMjc2MzIzODRdIDIwMjAtMDQtMjEg MTA6NDg6MDYsMTk0OiBFUlJPUglTVERFUlI6CSBPSy4KWzEyMzE0NTMyNzYzMjM4NF0gMjAyMC0w NC0yMSAxMDo0ODowNiwxOTU6IEVSUk9SCVNUREVSUjoJSGlzdG9yeSB0YWIuLi4KWzEyMzE0NTMy MjM3NzIxNl0gMjAyMC0wNC0yMSAxMDo0ODoyNiw2OTg6IEVSUk9SCVNUREVSUjoJVGhlIHNlcnZl ci9wcmV2aW91cyBub2RlcyBub3QgZXhwYW5kZWQKWzEyMzE0NTMyMjM3NzIxNl0gMjAyMC0wNC0y MSAxMDo0ODoyNiw2OTk6IEVSUk9SCVNUREVSUjoJVGhlIGRhdGFiYXNlcy9wcmV2aW91cyBub2Rl cyBub3QgZXhwYW5kZWQKWzEyMzE0NTMyNzYzMjM4NF0gMjAyMC0wNC0yMSAxMDo0ODo0MiwwNzE6 IEVSUk9SCVNUREVSUjoJIE9LLgpbMTIzMTQ1MzIyMzc3MjE2XSAyMDIwLTA0LTIxIDEwOjQ4OjQ1 LDI1NzogRVJST1IJU1RERVJSOglGQUlMClsxMjMxNDUzMjIzNzcyMTZdIDIwMjAtMDQtMjEgMTA6 NDg6NDUsMjU4OiBFUlJPUglTVERFUlI6CUVSUk9SClsxMjMxNDUzMjIzNzcyMTZdIDIwMjAtMDQt MjEgMTA6NDg6NDUsMjU4OiBFUlJPUglTVERFUlI6CXJ1blRlc3QgKHBnYWRtaW4uZmVhdHVyZV90 ZXN0cy5xdWVyeV90b29sX3Rlc3RzLlF1ZXJ5VG9vbEZlYXR1cmVUZXN0KQpbMTIzMTQ1MzIyMzc3 MjE2XSAyMDIwLTA0LTIxIDEwOjQ4OjQ1LDI1ODogRVJST1IJU1RERVJSOglRdWVyeSB0b29sIGZl YXR1cmUgdGVzdApbMTIzMTQ1MzIyMzc3MjE2XSAyMDIwLTA0LTIxIDEwOjQ4OjQ1LDI1ODogRVJS T1IJU1RERVJSOgkgLi4uClsxMjMxNDUzMjc2MzIzODRdIDIwMjAtMDQtMjEgMTA6NDg6NDksNzk0 OiBFUlJPUglTVERFUlI6CUhpc3RvcnkgcXVlcnkgc291cmNlIGljb25zIGFuZCBnZW5lcmF0ZWQg cXVlcmllcyB0b2dnbGUuLi4KWzEyMzE0NTMyMjM3NzIxNl0gMjAyMC0wNC0yMSAxMDo0OToxOSwy MjM6IEVSUk9SCVNUREVSUjoJClsxMjMxNDUzMjIzNzcyMTZdIDIwMjAtMDQtMjEgMTA6NDk6MTks MjI0OiBFUlJPUglTVERFUlI6CU9uIGRlbWFuZCBxdWVyeSByZXN1bHQuLi4KWzEyMzE0NTMyMjM3 NzIxNl0gMjAyMC0wNC0yMSAxMDo0OToxOSwyMjQ6IEVSUk9SCVNUREVSUjoJClsxMjMxNDUzMjIz NzcyMTZdIDIwMjAtMDQtMjEgMTA6NDk6MTksMjI0OiBFUlJPUglTVERFUlI6CU9uIGRlbWFuZCBy ZXN1bHQgc2V0IG9uIHNjcm9sbGluZy4uLgpbMTIzMTQ1MzIyMzc3MjE2XSAyMDIwLTA0LTIxIDEw OjQ5OjI5LDM4MTogRVJST1IJU1RERVJSOglPSy4KWzEyMzE0NTMyMjM3NzIxNl0gMjAyMC0wNC0y MSAxMDo0OToyOSwzODE6IEVSUk9SCVNUREVSUjoJT24gZGVtYW5kIHJlc3VsdCBzZXQgb24gZ3Jp ZCBzZWxlY3QgYWxsLi4uClsxMjMxNDUzMjIzNzcyMTZdIDIwMjAtMDQtMjEgMTA6NDk6MzUsNjUz OiBFUlJPUglTVERFUlI6CU9LLgpbMTIzMTQ1MzIyMzc3MjE2XSAyMDIwLTA0LTIxIDEwOjQ5OjM1 LDY1NDogRVJST1IJU1RERVJSOglPbiBkZW1hbmQgcmVzdWx0IHNldCBvbiBjb2x1bW4gc2VsZWN0 IGFsbC4uLgpbMTIzMTQ1MzIyMzc3MjE2XSAyMDIwLTA0LTIxIDEwOjQ5OjQxLDc0NjogRVJST1IJ U1RERVJSOglPSy4KWzEyMzE0NTMyMjM3NzIxNl0gMjAyMC0wNC0yMSAxMDo0OTo0NCwxNDM6IEVS Uk9SCVNUREVSUjoJRXhwbGFpbiBxdWVyeSB3aXRoIHZlcmJvc2UgYW5kIGNvc3QuLi4KWzEyMzE0 NTMyMjM3NzIxNl0gMjAyMC0wNC0yMSAxMDo0OTo1MCw0MTg6IEVSUk9SCVNUREVSUjoJT0suClsx MjMxNDUzMjIzNzcyMTZdIDIwMjAtMDQtMjEgMTA6NDk6NTIsNzA3OiBFUlJPUglTVERFUlI6CUV4 cGxhaW4gYW5hbHl6ZSBxdWVyeSB3aXRoIGJ1ZmZlcnMgYW5kIHRpbWluZy4uLgpbMTIzMTQ1MzIy Mzc3MjE2XSAyMDIwLTA0LTIxIDEwOjQ5OjU5LDM2MjogRVJST1IJU1RERVJSOglPSy4KWzEyMzE0 NTMyMjM3NzIxNl0gMjAyMC0wNC0yMSAxMDo1MDowMSw1NjU6IEVSUk9SCVNUREVSUjoJQXV0byBj b21taXQgZGlzYWJsZWQuLi4KWzEyMzE0NTMyMjM3NzIxNl0gMjAyMC0wNC0yMSAxMDo1MDozNywx ODU6IEVSUk9SCVNUREVSUjoJT0suClsxMjMxNDUzMjIzNzcyMTZdIDIwMjAtMDQtMjEgMTA6NTA6 MzgsNzE5OiBFUlJPUglTVERFUlI6CUF1dG8gY29tbWl0IGVuYWJsZWQuLi4KWzEyMzE0NTMyMjM3 NzIxNl0gMjAyMC0wNC0yMSAxMDo1MToxMSwxODU6IEVSUk9SCVNUREVSUjoJT0suClsxMjMxNDUz MjIzNzcyMTZdIDIwMjAtMDQtMjEgMTA6NTE6MTMsMDkyOiBFUlJPUglTVERFUlI6CUF1dG8gcm9s bGJhY2sgZW5hYmxlZC4uLgpbMTIzMTQ1MzIyMzc3MjE2XSAyMDIwLTA0LTIxIDEwOjUxOjU4LDIy NTogRVJST1IJU1RERVJSOgkgT0suClsxMjMxNDUzMjIzNzcyMTZdIDIwMjAtMDQtMjEgMTA6NTE6 NTksOTQzOiBFUlJPUglTVERFUlI6CUNhbmNlbCBxdWVyeS4uLgpbMTIzMTQ1MzIyMzc3MjE2XSAy MDIwLTA0LTIxIDEwOjUyOjA4LDg4OTogRVJST1IJU1RERVJSOglPSy4KWzEyMzE0NTMyMjM3NzIx Nl0gMjAyMC0wNC0yMSAxMDo1MjoxMSwwOTQ6IEVSUk9SCVNUREVSUjoJQ2FwdHVyZSBOb3RpZnkg U3RhdGVtZW50cy4uLgpbMTIzMTQ1MzIyMzc3MjE2XSAyMDIwLTA0LTIxIDEwOjUyOjExLDA5NDog RVJST1IJU1RERVJSOgkKWzEyMzE0NTMyMjM3NzIxNl0gMjAyMC0wNC0yMSAxMDo1MjoxMSwwOTU6 IEVSUk9SCVNUREVSUjoJCUxpc3RlbiBvbiBhbiBldmVudC4uLgpbMTIzMTQ1MzIyMzc3MjE2XSAy MDIwLTA0LTIxIDEwOjUyOjE3LDE3NTogRVJST1IJU1RERVJSOglPSy4KWzEyMzE0NTMyMjM3NzIx Nl0gMjAyMC0wNC0yMSAxMDo1MjoxOSwwNzA6IEVSUk9SCVNUREVSUjoJCU5vdGlmeSBldmVudCB3 aXRob3V0IGRhdGEuLi4KWzEyMzE0NTMyMjM3NzIxNl0gMjAyMC0wNC0yMSAxMDo1MjoyNSw0MTU6 IEVSUk9SCVNUREVSUjoJT0suClsxMjMxNDUzMjIzNzcyMTZdIDIwMjAtMDQtMjEgMTA6NTI6Mjcs MjcyOiBFUlJPUglTVERFUlI6CQlOb3RpZnkgZXZlbnQgd2l0aCBkYXRhLi4uClsxMjMxNDUzMjIz NzcyMTZdIDIwMjAtMDQtMjEgMTA6NTI6MzQsNzI0OiBFUlJPUglTVERFUlI6CU9LLgpbMTIzMTQ1 MzIyMzc3MjE2XSAyMDIwLTA0LTIxIDEwOjUyOjM5LDY2MTogRVJST1IJU1RERVJSOglFeHBsYWlu IHF1ZXJ5IHdpdGggSklUIHN0YXRzLi4uClsxMjMxNDUzMjIzNzcyMTZdIDIwMjAtMDQtMjEgMTA6 NTI6MzksNzIyOiBFUlJPUglTVERFUlI6CVNraXBwZWQuClsxMjMxNDUzMjIzNzcyMTZdIDIwMjAt MDQtMjEgMTA6NTI6NDIsODc5OiBFUlJPUglTVERFUlI6CW9rClsxMjMxNDUzMjIzNzcyMTZdIDIw MjAtMDQtMjEgMTA6NTI6NDIsODgwOiBFUlJPUglTVERFUlI6CXJ1blRlc3QgKHBnYWRtaW4uZmVh dHVyZV90ZXN0cy50YWJsZV9kZGxfZmVhdHVyZV90ZXN0LlRhYmxlRGRsRmVhdHVyZVRlc3QpClsx MjMxNDUzMjIzNzcyMTZdIDIwMjAtMDQtMjEgMTA6NTI6NDIsODgwOiBFUlJPUglTVERFUlI6CVRl c3QgdGFibGUgRERMIGdlbmVyYXRpb24KWzEyMzE0NTMyMjM3NzIxNl0gMjAyMC0wNC0yMSAxMDo1 Mjo0Miw4ODA6IEVSUk9SCVNUREVSUjoJIC4uLgpbMTIzMTQ1MzIyMzc3MjE2XSAyMDIwLTA0LTIx IDEwOjUzOjM1LDU0MjogRVJST1IJU1RERVJSOglvawpbMTIzMTQ1MzIyMzc3MjE2XSAyMDIwLTA0 LTIxIDEwOjUzOjM1LDU0MzogRVJST1IJU1RERVJSOglydW5UZXN0IChwZ2FkbWluLmZlYXR1cmVf dGVzdHMudmlld19kYXRhX2RtbF9xdWVyaWVzLkNoZWNrRm9yVmlld0RhdGFUZXN0KQpbMTIzMTQ1 MzIyMzc3MjE2XSAyMDIwLTA0LTIxIDEwOjUzOjM1LDU0MzogRVJST1IJU1RERVJSOglWYWxpZGF0 ZSBJbnNlcnQsIFVwZGF0ZSBvcGVyYXRpb25zIGluIFZpZXcvRWRpdCBkYXRhIHdpdGggZ2l2ZW4g dGVzdCBkYXRhClsxMjMxNDUzMjIzNzcyMTZdIDIwMjAtMDQtMjEgMTA6NTM6MzUsNTQ0OiBFUlJP UglTVERFUlI6CSAuLi4KWzEyMzE0NTMyMjM3NzIxNl0gMjAyMC0wNC0yMSAxMDo1OToxMywzNjQ6 IEVSUk9SCVNUREVSUjoJb2sKWzEyMzE0NTMyMjM3NzIxNl0gMjAyMC0wNC0yMSAxMDo1OToxMywz NjU6IEVSUk9SCVNUREVSUjoJcnVuVGVzdCAocGdhZG1pbi5mZWF0dXJlX3Rlc3RzLnhzc19jaGVj a3NfcGFuZWxzX2FuZF9xdWVyeV90b29sX3Rlc3QuQ2hlY2tGb3JYc3NGZWF0dXJlVGVzdCkKWzEy MzE0NTMyMjM3NzIxNl0gMjAyMC0wNC0yMSAxMDo1OToxMywzNjU6IEVSUk9SCVNUREVSUjoJVGVz dCBYU1MgY2hlY2sgZm9yIHBhbmVscyBhbmQgcXVlcnkgdG9vbApbMTIzMTQ1MzIyMzc3MjE2XSAy MDIwLTA0LTIxIDEwOjU5OjEzLDM2NjogRVJST1IJU1RERVJSOgkgLi4uClsxMjMxNDUzMjIzNzcy MTZdIDIwMjAtMDQtMjEgMTA6NTk6NDUsNjk2OiBFUlJPUglTVERFUlI6CQpbMTIzMTQ1MzIyMzc3 MjE2XSAyMDIwLTA0LTIxIDEwOjU5OjQ1LDY5NjogRVJST1IJU1RERVJSOgkJQ2hlY2tpbmcgdGhl IEJyb3dzZXIgdHJlZSBmb3IgWFNTIHZ1bG5lcmFiaWxpdGllcwpbMTIzMTQ1MzIyMzc3MjE2XSAy MDIwLTA0LTIxIDEwOjU5OjQ1LDgxMDogRVJST1IJU1RERVJSOgkKWzEyMzE0NTMyMjM3NzIxNl0g MjAyMC0wNC0yMSAxMDo1OTo0NSw4MTA6IEVSUk9SCVNUREVSUjoJCUNoZWNraW5nIHRoZSBTUUwg dGFiIGZvciBmb3IgWFNTIHZ1bG5lcmFiaWxpdGllcwpbMTIzMTQ1MzIyMzc3MjE2XSAyMDIwLTA0 LTIxIDExOjAwOjExLDEwODogRVJST1IJU1RERVJSOgkKWzEyMzE0NTMyMjM3NzIxNl0gMjAyMC0w NC0yMSAxMTowMDoxMSwxMTA6IEVSUk9SCVNUREVSUjoJCUNoZWNraW5nIHRoZSBEZXBlbmRlbnRz IHRhYiBmb3IgWFNTIHZ1bG5lcmFiaWxpdGllcwpbMTIzMTQ1MzIyMzc3MjE2XSAyMDIwLTA0LTIx IDExOjAwOjE1LDgwMjogRVJST1IJU1RERVJSOgkKWzEyMzE0NTMyMjM3NzIxNl0gMjAyMC0wNC0y MSAxMTowMDoxNSw4MDQ6IEVSUk9SCVNUREVSUjoJCUNoZWNraW5nIHRoZSBTbGlja0dyaWQgY2Vs bCBmb3IgWFNTIHZ1bG5lcmFiaWxpdGllcwpbMTIzMTQ1MzIyMzc3MjE2XSAyMDIwLTA0LTIxIDEx OjAwOjI3LDU5MjogRVJST1IJU1RERVJSOgkKWzEyMzE0NTMyMjM3NzIxNl0gMjAyMC0wNC0yMSAx MTowMDoyNyw1OTM6IEVSUk9SCVNUREVSUjoJCUNoZWNraW5nIHRoZSBRdWVyeSBUb29sIGhpc3Rv cnkgZm9yIFhTUyB2dWxuZXJhYmlsaXRpZXMuLi4KWzEyMzE0NTMyMjM3NzIxNl0gMjAyMC0wNC0y MSAxMTowMDo0MywyNjI6IEVSUk9SCVNUREVSUjoJClsxMjMxNDUzMjIzNzcyMTZdIDIwMjAtMDQt MjEgMTE6MDA6NDMsMjYyOiBFUlJPUglTVERFUlI6CQlDaGVja2luZyB0aGUgU2xpY2tHcmlkIGNl bGwgZm9yIFhTUyB2dWxuZXJhYmlsaXRpZXMKWzEyMzE0NTMyMjM3NzIxNl0gMjAyMC0wNC0yMSAx MTowMDo0NSw0MzE6IEVSUk9SCVNUREVSUjoJClsxMjMxNDUzMjIzNzcyMTZdIDIwMjAtMDQtMjEg MTE6MDA6NDUsNDMxOiBFUlJPUglTVERFUlI6CQlDaGVja2luZyB0aGUgR3JhcGhpY2FsIEV4cGxh aW4gcGxhbiBmb3IgWFNTIHZ1bG5lcmFiaWxpdGllcwpbMTIzMTQ1MzIyMzc3MjE2XSAyMDIwLTA0 LTIxIDExOjAxOjAxLDEyMjogRVJST1IJU1RERVJSOglvawpbMTIzMTQ1MzIyMzc3MjE2XSAyMDIw LTA0LTIxIDExOjAxOjAxLDEyMzogRVJST1IJU1RERVJSOglydW5UZXN0IChwZ2FkbWluLmZlYXR1 cmVfdGVzdHMueHNzX2NoZWNrc19wZ2FkbWluX2RlYnVnZ2VyX3Rlc3QuQ2hlY2tEZWJ1Z2dlckZv clhzc0ZlYXR1cmVUZXN0KQpbMTIzMTQ1MzIyMzc3MjE2XSAyMDIwLTA0LTIxIDExOjAxOjAxLDEy NDogRVJST1IJU1RERVJSOglUZXN0cyB0byBjaGVjayBpZiBEZWJ1Z2dlciBpcyB2dWxuZXJhYmxl IHRvIFhTUwpbMTIzMTQ1MzIyMzc3MjE2XSAyMDIwLTA0LTIxIDExOjAxOjAxLDEyNDogRVJST1IJ U1RERVJSOgkgLi4uClsxMjMxNDUzMjIzNzcyMTZdIDIwMjAtMDQtMjEgMTE6MDE6NTMsMDYyOiBF UlJPUglTVERFUlI6CXNraXBwZWQgJ1BsZWFzZSBtYWtlIHN1cmUgdGhhdCBkZWJ1Z2dlciBwbHVn aW4gaXMgcHJvcGVybHkgY29uZmlndXJlZCcKWzEyMzE0NTMyMjM3NzIxNl0gMjAyMC0wNC0yMSAx MTowMTo1MywwNjM6IEVSUk9SCVNUREVSUjoJcnVuVGVzdCAocGdhZG1pbi5mZWF0dXJlX3Rlc3Rz Lnhzc19jaGVja3Nfcm9sZXNfY29udHJvbF90ZXN0LkNoZWNrUm9sZU1lbWJlcnNoaXBDb250cm9s RmVhdHVyZVRlc3QpClsxMjMxNDUzMjIzNzcyMTZdIDIwMjAtMDQtMjEgMTE6MDE6NTMsMDYzOiBF UlJPUglTVERFUlI6CVRlc3RzIHRvIGNoZWNrIGlmIFJvbGUgbWVtYmVyc2hpcCBjb250cm9sIGlz IHZ1bG5lcmFibGUgdG8gWFNTClsxMjMxNDUzMjIzNzcyMTZdIDIwMjAtMDQtMjEgMTE6MDE6NTMs MDYzOiBFUlJPUglTVERFUlI6CSAuLi4KWzEyMzE0NTMyMjM3NzIxNl0gMjAyMC0wNC0yMSAxMTow MjoxNyw4NjI6IEVSUk9SCVNUREVSUjoJb2sKWzEyMzE0NTMyMjM3NzIxNl0gMjAyMC0wNC0yMSAx MTowMjoxNyw4NjM6IEVSUk9SCVNUREVSUjoJPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpbMTIzMTQ1MzIyMzc3MjE2 XSAyMDIwLTA0LTIxIDExOjAyOjE3LDg2MzogRVJST1IJU1RERVJSOglFUlJPUjogcnVuVGVzdCAo cGdhZG1pbi5mZWF0dXJlX3Rlc3RzLnBnX2RhdGF0eXBlX3ZhbGlkYXRpb25fdGVzdC5QR0RhdGF5 cGVGZWF0dXJlVGVzdCkKWzEyMzE0NTMyMjM3NzIxNl0gMjAyMC0wNC0yMSAxMTowMjoxNyw4NjM6 IEVSUk9SCVNUREVSUjoJVGVzdCBjaGVja3MgZm9yIFBHIGRhdGEtdHlwZXMgb3V0cHV0ClsxMjMx NDUzMjIzNzcyMTZdIDIwMjAtMDQtMjEgMTE6MDI6MTcsODY0OiBFUlJPUglTVERFUlI6CS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KWzEyMzE0NTMyMjM3NzIxNl0gMjAyMC0wNC0yMSAxMTowMjoxNyw4NjQ6IEVSUk9S CVNUREVSUjoJVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgpbMTIzMTQ1MzIyMzc3 MjE2XSAyMDIwLTA0LTIxIDExOjAyOjE3LDg2NDogRVJST1IJU1RERVJSOgkgIEZpbGUgIi9Vc2Vy cy9zaHViaGFtYWdhcndhbC9Eb2N1bWVudHMvcGdhZG1pbjQvd2ViL3JlZ3Jlc3Npb24vZmVhdHVy ZV91dGlscy9iYXNlX2ZlYXR1cmVfdGVzdC5weSIsIGxpbmUgNDUsIGluIHNldFVwClsxMjMxNDUz MjIzNzcyMTZdIDIwMjAtMDQtMjEgMTE6MDI6MTcsODY0OiBFUlJPUglTVERFUlI6CSAgICBzZWxm LmJlZm9yZSgpClsxMjMxNDUzMjIzNzcyMTZdIDIwMjAtMDQtMjEgMTE6MDI6MTcsODY0OiBFUlJP UglTVERFUlI6CSAgRmlsZSAiL1VzZXJzL3NodWJoYW1hZ2Fyd2FsL0RvY3VtZW50cy9wZ2FkbWlu NC93ZWIvcGdhZG1pbi9mZWF0dXJlX3Rlc3RzL3BnX2RhdGF0eXBlX3ZhbGlkYXRpb25fdGVzdC5w eSIsIGxpbmUgNzksIGluIGJlZm9yZQpbMTIzMTQ1MzIyMzc3MjE2XSAyMDIwLTA0LTIxIDExOjAy OjE3LDg2NTogRVJST1IJU1RERVJSOgkgICAgc2VsZi5fdXBkYXRlX3ByZWZlcmVuY2VzKCkKWzEy MzE0NTMyMjM3NzIxNl0gMjAyMC0wNC0yMSAxMTowMjoxNyw4NjU6IEVSUk9SCVNUREVSUjoJICBG aWxlICIvVXNlcnMvc2h1YmhhbWFnYXJ3YWwvRG9jdW1lbnRzL3BnYWRtaW40L3dlYi9wZ2FkbWlu L2ZlYXR1cmVfdGVzdHMvcGdfZGF0YXR5cGVfdmFsaWRhdGlvbl90ZXN0LnB5IiwgbGluZSAxMjAs IGluIF91cGRhdGVfcHJlZmVyZW5jZXMKWzEyMzE0NTMyMjM3NzIxNl0gMjAyMC0wNC0yMSAxMTow MjoxNyw4NjU6IEVSUk9SCVNUREVSUjoJICAgIE5hdk1lbnVMb2NhdG9ycy5pbnNlcnRfYnJhY2tl dF9wYWlyX3N3aXRjaF9idG4sICdObycpClsxMjMxNDUzMjIzNzcyMTZdIDIwMjAtMDQtMjEgMTE6 MDI6MTcsODY1OiBFUlJPUglTVERFUlI6CSAgRmlsZSAiL1VzZXJzL3NodWJoYW1hZ2Fyd2FsL0Rv Y3VtZW50cy9wZ2FkbWluNC93ZWIvcmVncmVzc2lvbi9mZWF0dXJlX3V0aWxzL3BnYWRtaW5fcGFn ZS5weSIsIGxpbmUgMTEzMCwgaW4gc2V0X3N3aXRjaF9ib3hfc3RhdHVzClsxMjMxNDUzMjIzNzcy MTZdIDIwMjAtMDQtMjEgMTE6MDI6MTcsODY1OiBFUlJPUglTVERFUlI6CSAgICBzd2l0Y2hfYm94 X2VsZW1lbnQgPSBzZWxmLmZpbmRfYnlfeHBhdGgoc3dpdGNoX2JveCkKWzEyMzE0NTMyMjM3NzIx Nl0gMjAyMC0wNC0yMSAxMTowMjoxNyw4NjY6IEVSUk9SCVNUREVSUjoJICBGaWxlICIvVXNlcnMv c2h1YmhhbWFnYXJ3YWwvRG9jdW1lbnRzL3BnYWRtaW40L3dlYi9yZWdyZXNzaW9uL2ZlYXR1cmVf dXRpbHMvcGdhZG1pbl9wYWdlLnB5IiwgbGluZSA4MDIsIGluIGZpbmRfYnlfeHBhdGgKWzEyMzE0 NTMyMjM3NzIxNl0gMjAyMC0wNC0yMSAxMTowMjoxNyw4NjY6IEVSUk9SCVNUREVSUjoJICAgIGxh bWJkYSBkcml2ZXI6IGRyaXZlci5maW5kX2VsZW1lbnRfYnlfeHBhdGgoeHBhdGgpClsxMjMxNDUz MjIzNzcyMTZdIDIwMjAtMDQtMjEgMTE6MDI6MTcsODY2OiBFUlJPUglTVERFUlI6CSAgRmlsZSAi L1VzZXJzL3NodWJoYW1hZ2Fyd2FsL0RvY3VtZW50cy9wZ2FkbWluNC93ZWIvcmVncmVzc2lvbi9m ZWF0dXJlX3V0aWxzL3BnYWRtaW5fcGFnZS5weSIsIGxpbmUgOTk1LCBpbiB3YWl0X2Zvcl9lbGVt ZW50ClsxMjMxNDUzMjIzNzcyMTZdIDIwMjAtMDQtMjEgMTE6MDI6MTcsODY2OiBFUlJPUglTVERF UlI6CSAgICBzZWxmLl93YWl0X2ZvcigiZWxlbWVudCB0byBleGlzdCIsIGVsZW1lbnRfaWZfaXRf ZXhpc3RzKQpbMTIzMTQ1MzIyMzc3MjE2XSAyMDIwLTA0LTIxIDExOjAyOjE3LDg2NjogRVJST1IJ U1RERVJSOgkgIEZpbGUgIi9Vc2Vycy9zaHViaGFtYWdhcndhbC9Eb2N1bWVudHMvcGdhZG1pbjQv d2ViL3JlZ3Jlc3Npb24vZmVhdHVyZV91dGlscy9wZ2FkbWluX3BhZ2UucHkiLCBsaW5lIDEwNzgs IGluIF93YWl0X2ZvcgpbMTIzMTQ1MzIyMzc3MjE2XSAyMDIwLTA0LTIxIDExOjAyOjE3LDg2Njog RVJST1IJU1RERVJSOgkgICAgIlRpbWVkIG91dCB3YWl0aW5nIGZvciAiICsgd2FpdGluZ19mb3Jf bWVzc2FnZQpbMTIzMTQ1MzIyMzc3MjE2XSAyMDIwLTA0LTIxIDExOjAyOjE3LDg2NzogRVJST1IJ U1RERVJSOgkgIEZpbGUgIi9Vc2Vycy9zaHViaGFtYWdhcndhbC9Eb2N1bWVudHMvcGdhZG1pbmRl di9saWIvcHl0aG9uMy43L3NpdGUtcGFja2FnZXMvc2VsZW5pdW0vd2ViZHJpdmVyL3N1cHBvcnQv d2FpdC5weSIsIGxpbmUgODAsIGluIHVudGlsClsxMjMxNDUzMjIzNzcyMTZdIDIwMjAtMDQtMjEg MTE6MDI6MTcsODY3OiBFUlJPUglTVERFUlI6CSAgICByYWlzZSBUaW1lb3V0RXhjZXB0aW9uKG1l c3NhZ2UsIHNjcmVlbiwgc3RhY2t0cmFjZSkKWzEyMzE0NTMyMjM3NzIxNl0gMjAyMC0wNC0yMSAx MTowMjoxNyw4Njc6IEVSUk9SCVNUREVSUjoJc2VsZW5pdW0uY29tbW9uLmV4Y2VwdGlvbnMuVGlt ZW91dEV4Y2VwdGlvbjogTWVzc2FnZTogVGltZWQgb3V0IHdhaXRpbmcgZm9yIGVsZW1lbnQgdG8g ZXhpc3QKWzEyMzE0NTMyMjM3NzIxNl0gMjAyMC0wNC0yMSAxMTowMjoxNyw4Njc6IEVSUk9SCVNU REVSUjoJPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQpbMTIzMTQ1MzIyMzc3MjE2XSAyMDIwLTA0LTIxIDExOjAyOjE3 LDg2NzogRVJST1IJU1RERVJSOglFUlJPUjogcnVuVGVzdCAocGdhZG1pbi5mZWF0dXJlX3Rlc3Rz LnF1ZXJ5X3Rvb2xfam91cm5leV90ZXN0LlF1ZXJ5VG9vbEpvdXJuZXlUZXN0KQpbMTIzMTQ1MzIy Mzc3MjE2XSAyMDIwLTA0LTIxIDExOjAyOjE3LDg2NzogRVJST1IJU1RERVJSOglUZXN0cyB0aGUg cGF0aCB0aHJvdWdoIHRoZSBxdWVyeSB0b29sClsxMjMxNDUzMjIzNzcyMTZdIDIwMjAtMDQtMjEg MTE6MDI6MTcsODY3OiBFUlJPUglTVERFUlI6CS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KWzEyMzE0NTMyMjM3NzIx Nl0gMjAyMC0wNC0yMSAxMTowMjoxNyw4Njc6IEVSUk9SCVNUREVSUjoJVHJhY2ViYWNrIChtb3N0 IHJlY2VudCBjYWxsIGxhc3QpOgpbMTIzMTQ1MzIyMzc3MjE2XSAyMDIwLTA0LTIxIDExOjAyOjE3 LDg2NzogRVJST1IJU1RERVJSOgkgIEZpbGUgIi9Vc2Vycy9zaHViaGFtYWdhcndhbC9Eb2N1bWVu dHMvcGdhZG1pbjQvd2ViL3JlZ3Jlc3Npb24vZmVhdHVyZV91dGlscy9iYXNlX2ZlYXR1cmVfdGVz dC5weSIsIGxpbmUgNjgsIGluIHRlYXJEb3duClsxMjMxNDUzMjIzNzcyMTZdIDIwMjAtMDQtMjEg MTE6MDI6MTcsODY3OiBFUlJPUglTVERFUlI6CSAgICBzZWxmLmFmdGVyKCkKWzEyMzE0NTMyMjM3 NzIxNl0gMjAyMC0wNC0yMSAxMTowMjoxNyw4Njg6IEVSUk9SCVNUREVSUjoJICBGaWxlICIvVXNl cnMvc2h1YmhhbWFnYXJ3YWwvRG9jdW1lbnRzL3BnYWRtaW40L3dlYi9wZ2FkbWluL2ZlYXR1cmVf dGVzdHMvcXVlcnlfdG9vbF9qb3VybmV5X3Rlc3QucHkiLCBsaW5lIDQ2MywgaW4gYWZ0ZXIKWzEy MzE0NTMyMjM3NzIxNl0gMjAyMC0wNC0yMSAxMTowMjoxNyw4Njg6IEVSUk9SCVNUREVSUjoJICAg IHNlbGYucGFnZS5jbG9zZV9xdWVyeV90b29sKCkKWzEyMzE0NTMyMjM3NzIxNl0gMjAyMC0wNC0y MSAxMTowMjoxNyw4Njg6IEVSUk9SCVNUREVSUjoJICBGaWxlICIvVXNlcnMvc2h1YmhhbWFnYXJ3 YWwvRG9jdW1lbnRzL3BnYWRtaW40L3dlYi9yZWdyZXNzaW9uL2ZlYXR1cmVfdXRpbHMvcGdhZG1p bl9wYWdlLnB5IiwgbGluZSAxNTYsIGluIGNsb3NlX3F1ZXJ5X3Rvb2wKWzEyMzE0NTMyMjM3NzIx Nl0gMjAyMC0wNC0yMSAxMTowMjoxNyw4Njg6IEVSUk9SCVNUREVSUjoJICAgICIvL2xpW2NvbnRh aW5zKEBjbGFzcywgJ2NvbnRleHQtbWVudS1pdGVtJyldL3NwYW5bY29udGFpbnModGV4dCgpLCIK WzEyMzE0NTMyMjM3NzIxNl0gMjAyMC0wNC0yMSAxMTowMjoxNyw4Njg6IEVSUk9SCVNUREVSUjoJ ICBGaWxlICIvVXNlcnMvc2h1YmhhbWFnYXJ3YWwvRG9jdW1lbnRzL3BnYWRtaW40L3dlYi9yZWdy ZXNzaW9uL2ZlYXR1cmVfdXRpbHMvcGdhZG1pbl9wYWdlLnB5IiwgbGluZSA4MDIsIGluIGZpbmRf YnlfeHBhdGgKWzEyMzE0NTMyMjM3NzIxNl0gMjAyMC0wNC0yMSAxMTowMjoxNyw4Njg6IEVSUk9S CVNUREVSUjoJICAgIGxhbWJkYSBkcml2ZXI6IGRyaXZlci5maW5kX2VsZW1lbnRfYnlfeHBhdGgo eHBhdGgpClsxMjMxNDUzMjIzNzcyMTZdIDIwMjAtMDQtMjEgMTE6MDI6MTcsODY4OiBFUlJPUglT VERFUlI6CSAgRmlsZSAiL1VzZXJzL3NodWJoYW1hZ2Fyd2FsL0RvY3VtZW50cy9wZ2FkbWluNC93 ZWIvcmVncmVzc2lvbi9mZWF0dXJlX3V0aWxzL3BnYWRtaW5fcGFnZS5weSIsIGxpbmUgOTk1LCBp biB3YWl0X2Zvcl9lbGVtZW50ClsxMjMxNDUzMjIzNzcyMTZdIDIwMjAtMDQtMjEgMTE6MDI6MTcs ODY4OiBFUlJPUglTVERFUlI6CSAgICBzZWxmLl93YWl0X2ZvcigiZWxlbWVudCB0byBleGlzdCIs IGVsZW1lbnRfaWZfaXRfZXhpc3RzKQpbMTIzMTQ1MzIyMzc3MjE2XSAyMDIwLTA0LTIxIDExOjAy OjE3LDg2ODogRVJST1IJU1RERVJSOgkgIEZpbGUgIi9Vc2Vycy9zaHViaGFtYWdhcndhbC9Eb2N1 bWVudHMvcGdhZG1pbjQvd2ViL3JlZ3Jlc3Npb24vZmVhdHVyZV91dGlscy9wZ2FkbWluX3BhZ2Uu cHkiLCBsaW5lIDEwNzgsIGluIF93YWl0X2ZvcgpbMTIzMTQ1MzIyMzc3MjE2XSAyMDIwLTA0LTIx IDExOjAyOjE3LDg2ODogRVJST1IJU1RERVJSOgkgICAgIlRpbWVkIG91dCB3YWl0aW5nIGZvciAi ICsgd2FpdGluZ19mb3JfbWVzc2FnZQpbMTIzMTQ1MzIyMzc3MjE2XSAyMDIwLTA0LTIxIDExOjAy OjE3LDg2ODogRVJST1IJU1RERVJSOgkgIEZpbGUgIi9Vc2Vycy9zaHViaGFtYWdhcndhbC9Eb2N1 bWVudHMvcGdhZG1pbmRldi9saWIvcHl0aG9uMy43L3NpdGUtcGFja2FnZXMvc2VsZW5pdW0vd2Vi ZHJpdmVyL3N1cHBvcnQvd2FpdC5weSIsIGxpbmUgODAsIGluIHVudGlsClsxMjMxNDUzMjIzNzcy MTZdIDIwMjAtMDQtMjEgMTE6MDI6MTcsODY4OiBFUlJPUglTVERFUlI6CSAgICByYWlzZSBUaW1l b3V0RXhjZXB0aW9uKG1lc3NhZ2UsIHNjcmVlbiwgc3RhY2t0cmFjZSkKWzEyMzE0NTMyMjM3NzIx Nl0gMjAyMC0wNC0yMSAxMTowMjoxNyw4Njg6IEVSUk9SCVNUREVSUjoJc2VsZW5pdW0uY29tbW9u LmV4Y2VwdGlvbnMuVGltZW91dEV4Y2VwdGlvbjogTWVzc2FnZTogVGltZWQgb3V0IHdhaXRpbmcg Zm9yIGVsZW1lbnQgdG8gZXhpc3QKWzEyMzE0NTMyMjM3NzIxNl0gMjAyMC0wNC0yMSAxMTowMjox Nyw4Njk6IEVSUk9SCVNUREVSUjoJPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpbMTIzMTQ1MzIyMzc3MjE2XSAyMDIw LTA0LTIxIDExOjAyOjE3LDg2OTogRVJST1IJU1RERVJSOglGQUlMOiBydW5UZXN0IChwZ2FkbWlu LmZlYXR1cmVfdGVzdHMucXVlcnlfdG9vbF9qb3VybmV5X3Rlc3QuUXVlcnlUb29sSm91cm5leVRl c3QpClsxMjMxNDUzMjIzNzcyMTZdIDIwMjAtMDQtMjEgMTE6MDI6MTcsODY5OiBFUlJPUglTVERF UlI6CVRlc3RzIHRoZSBwYXRoIHRocm91Z2ggdGhlIHF1ZXJ5IHRvb2wKWzEyMzE0NTMyMjM3NzIx Nl0gMjAyMC0wNC0yMSAxMTowMjoxNyw4Njk6IEVSUk9SCVNUREVSUjoJLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpb MTIzMTQ1MzIyMzc3MjE2XSAyMDIwLTA0LTIxIDExOjAyOjE3LDg2OTogRVJST1IJU1RERVJSOglU cmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6ClsxMjMxNDUzMjIzNzcyMTZdIDIwMjAt MDQtMjEgMTE6MDI6MTcsODY5OiBFUlJPUglTVERFUlI6CSAgRmlsZSAiL1VzZXJzL3NodWJoYW1h Z2Fyd2FsL0RvY3VtZW50cy9wZ2FkbWluNC93ZWIvcGdhZG1pbi9mZWF0dXJlX3Rlc3RzL3F1ZXJ5 X3Rvb2xfam91cm5leV90ZXN0LnB5IiwgbGluZSA2MCwgaW4gcnVuVGVzdApbMTIzMTQ1MzIyMzc3 MjE2XSAyMDIwLTA0LTIxIDExOjAyOjE3LDg2OTogRVJST1IJU1RERVJSOgkgICAgc2VsZi5fbmF2 aWdhdGVfdG9fcXVlcnlfdG9vbCgpClsxMjMxNDUzMjIzNzcyMTZdIDIwMjAtMDQtMjEgMTE6MDI6 MTcsODY5OiBFUlJPUglTVERFUlI6CSAgRmlsZSAiL1VzZXJzL3NodWJoYW1hZ2Fyd2FsL0RvY3Vt ZW50cy9wZ2FkbWluNC93ZWIvcGdhZG1pbi9mZWF0dXJlX3Rlc3RzL3F1ZXJ5X3Rvb2xfam91cm5l eV90ZXN0LnB5IiwgbGluZSA0MDQsIGluIF9uYXZpZ2F0ZV90b19xdWVyeV90b29sClsxMjMxNDUz MjIzNzcyMTZdIDIwMjAtMDQtMjEgMTE6MDI6MTcsODY5OiBFUlJPUglTVERFUlI6CSAgICBzZWxm LnBhZ2Uub3Blbl9xdWVyeV90b29sKCkKWzEyMzE0NTMyMjM3NzIxNl0gMjAyMC0wNC0yMSAxMTow MjoxNyw4Njk6IEVSUk9SCVNUREVSUjoJICBGaWxlICIvVXNlcnMvc2h1YmhhbWFnYXJ3YWwvRG9j dW1lbnRzL3BnYWRtaW40L3dlYi9yZWdyZXNzaW9uL2ZlYXR1cmVfdXRpbHMvcGdhZG1pbl9wYWdl LnB5IiwgbGluZSAxMDksIGluIG9wZW5fcXVlcnlfdG9vbApbMTIzMTQ1MzIyMzc3MjE2XSAyMDIw LTA0LTIxIDExOjAyOjE3LDg2OTogRVJST1IJU1RERVJSOgkgICAgc2VsZi5lbmFibGVfbWVudV9p dGVtKHF1ZXJ5X3Rvb2wsIDEwKQpbMTIzMTQ1MzIyMzc3MjE2XSAyMDIwLTA0LTIxIDExOjAyOjE3 LDg3MDogRVJST1IJU1RERVJSOgkgIEZpbGUgIi9Vc2Vycy9zaHViaGFtYWdhcndhbC9Eb2N1bWVu dHMvcGdhZG1pbjQvd2ViL3JlZ3Jlc3Npb24vZmVhdHVyZV91dGlscy9wZ2FkbWluX3BhZ2UucHki LCBsaW5lIDE0OCwgaW4gZW5hYmxlX21lbnVfaXRlbQpbMTIzMTQ1MzIyMzc3MjE2XSAyMDIwLTA0 LTIxIDExOjAyOjE3LDg3MDogRVJST1IJU1RERVJSOgkgICAgYXNzZXJ0IEZhbHNlLCAiJ1Rvb2xz IC0+IFF1ZXJ5IFRvb2wnIG1lbnUgZGlkIG5vdCBlbmFibGUuIgpbMTIzMTQ1MzIyMzc3MjE2XSAy MDIwLTA0LTIxIDExOjAyOjE3LDg3MDogRVJST1IJU1RERVJSOglBc3NlcnRpb25FcnJvcjogJ1Rv b2xzIC0+IFF1ZXJ5IFRvb2wnIG1lbnUgZGlkIG5vdCBlbmFibGUuClsxMjMxNDUzMjIzNzcyMTZd IDIwMjAtMDQtMjEgMTE6MDI6MTcsODcwOiBFUlJPUglTVERFUlI6CS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KWzEy MzE0NTMyMjM3NzIxNl0gMjAyMC0wNC0yMSAxMTowMjoxNyw4NzA6IEVSUk9SCVNUREVSUjoJUmFu IDEyIHRlc3RzIGluIDE0NTMuMTk4cwpbMTIzMTQ1MzIyMzc3MjE2XSAyMDIwLTA0LTIxIDExOjAy OjE3LDg3MDogRVJST1IJU1RERVJSOglGQUlMRUQKWzEyMzE0NTMyMjM3NzIxNl0gMjAyMC0wNC0y MSAxMTowMjoxNyw4NzA6IEVSUk9SCVNUREVSUjoJIChmYWlsdXJlcz0xLCBlcnJvcnM9Miwgc2tp cHBlZD0xKQpbMTIzMTQ1MzIyMzc3MjE2XSAyMDIwLTA0LTIxIDExOjAyOjI4LDYzMTogRVJST1IJ U1RERVJSOgkKWzEyMzE0NTMyMjM3NzIxNl0gMjAyMC0wNC0yMSAxMTowMjoyOCw2MzI6IEVSUk9S CVNUREVSUjoJPT09PT09PT09PT09PUNvbXBsZXRlZCB0aGUgdGVzdCBjYXNlcyBmb3IgJ0VQQVMg OS40Jz09PT09PT09PT09PT0K --0000000000007cc10705a3c83ee2--