Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.92) (envelope-from ) id 1jGbfX-0003wc-ES for pgadmin-hackers@arkaria.postgresql.org; Tue, 24 Mar 2020 05:00:03 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1jGbfW-0004zA-60 for pgadmin-hackers@arkaria.postgresql.org; Tue, 24 Mar 2020 05:00:02 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1jGbfV-0004y0-R5 for pgadmin-hackers@lists.postgresql.org; Tue, 24 Mar 2020 05:00:01 +0000 Received: from mail-lj1-x242.google.com ([2a00:1450:4864:20::242]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1jGbfM-0008Ho-PQ for pgadmin-hackers@postgresql.org; Tue, 24 Mar 2020 05:00:01 +0000 Received: by mail-lj1-x242.google.com with SMTP id g12so17196952ljj.3 for ; Mon, 23 Mar 2020 21:59:52 -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=FW15YmM2IInMeqKZtjbU0TVKsHZkb3aeVCS7Rw1K8kk=; b=n34CU3tXru5Uxz/hSXWccZMKZsjyBAs2fDPDca/VVHjVcfGV7LwDWRPDM20TE8BYbH q92BIZJ6mSeUhpghd//t53+oEuXkwBcyezXTR9uglrB00JDK7eX0SKbAQr5m8w822KTH VAQ4YzT2ekaE0e4TblB7jTkokrgv2icNvh3mQhMIH5GPVlfvazG5oyzqHzkImf41kqUO qgpz9K7lCX+CMaSVVEVK+avgH5gtSLOpb0jSzL/IInk07pVSfS+ooN8aRoDDUkxk6R1O pU+sQB6XUy7cEUCZAyhOWe+CqwCD0fmkjy+AWwRTAAzflgjS65uvqZsnj3CKALRDHrve TtDQ== 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=FW15YmM2IInMeqKZtjbU0TVKsHZkb3aeVCS7Rw1K8kk=; b=twOlf23FsFyTpabid4vOCLpU1ntw5Wo9QHx9fOmskYyXURQdPuNH1h4WeyxPWhXiuX Jj9Ka+wpRj3swJnv50YkUIdHwmErhPO1jmqgvz2OAVk3TFjtUulYDkxfIIfpm02Pm7vt kck/DKyKTE/GXZ8rdR58ixLqa7rxFUtnnRq05n0udpe5UKrfULhMhz2Qjx+du/TmWuLS 5w9H8VzHbwMrOzm5obkrYABdzxs1h9Gwn/k/ZfkzGFv06Gbb6x7RWFJ10Nq9MDKn4NmE tZrjnhO/UAUydazJbnrFrVbuvbUcvZszeyjdzYIncENNCXeXbX1IFls+FHMsKna3s91X 0Rug== X-Gm-Message-State: ANhLgQ1RFYtAil48NtYGR6Yltp3FuOiunUjX1ZXx73LWk+t5a7kn0iLf onxaoLqFyg+2eFepZBr8RH8yLkYIOrvtWVmgMLARPr7b3WArTAWoNVzFVTuTwFI5Kif7CPfIT/0 W91OUmAXy9Z2xvqqrBmOCQA+K7L+G0sm/T73ZrBERO72+/tgcWdmhzQ9PFQC94lrkalfNfT6iFr 3EOlgsSu/3k3ppxO+Lzcv9z5GZkX2FZAEgtX8NucFzvZ1bTzpkG2c= X-Google-Smtp-Source: ADFU+vtOTDINklQb61YqC/Fwu8Df9BjxHyYZrmGI/HlGIgMpwaKEpt7YhueHxWjFY6MBi+6KLvW4BQS4CiaNyzo/ZYA= X-Received: by 2002:a2e:9681:: with SMTP id q1mr16674559lji.179.1585025990422; Mon, 23 Mar 2020 21:59:50 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Khushboo Vashi Date: Tue, 24 Mar 2020 10:29:42 +0530 Message-ID: Subject: Re: [pgAdmin4][Patch] - RM 2186 - Support external authentication sources [LDAP] To: Dave Page Cc: pgadmin-hackers Content-Type: multipart/mixed; boundary="0000000000001eb8db05a1929f58" X-CLOUD-SEC-AV-Info: edb,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 --0000000000001eb8db05a1929f58 Content-Type: multipart/alternative; boundary="0000000000001eb8d905a1929f56" --0000000000001eb8d905a1929f56 Content-Type: text/plain; charset="UTF-8" Hi, Please find the attached updated patch. On Tue, Mar 17, 2020 at 4:11 PM Dave Page wrote: > Hi > > On Tue, Mar 17, 2020 at 10:24 AM Khushboo Vashi < > khushboo.vashi@enterprisedb.com> wrote: > >> Hi Dave, >> >> Thanks for the review. >> >> On Tue, Mar 17, 2020 at 3:42 PM Dave Page wrote: >> >>> Hi >>> >>> 30 second read of the first version of the patch... >>> >>> - Please move the configuration into config.py. Users should never have >>> to modify a distributed file (it messes up packaging). I don't see any >>> reason to use a different file just for auth config. >>> >>> There are many settings for the LDAP, and in the future we will add >> other external sources also, so I thought it would be better if we have >> different file for the authentication. >> > > Sure, but our config file is small compared to many. Splitting things out > is more confusing for users. If they want to do that themselves of course, > they can add a config_local.py file which includes other files as needed. > Fixed. > > >> - I think all config options should be prefixed with LDAP_ as we may have >>> things like CERT_FILE for other purposes too. >>> >>> Sure. >> > Done. > - I don't see any test cases. >>> >>> I will think about this, as right now no idea how to write test cases >> for this. >> > > It should be fairly straightforward to write tests for some of the > functions in the auth classes. For testing the actual LDAP stuff, we > probably need to add LDAP config options to test_config.json, and only if > present, run the tests. That would probably need to support a list of LDAP > servers, so we can test with different configurations (LDAP, LDAPS, > LDAP_STARTTLS, AD etc). > > Done. Thanks, Khushboo > Thanks. >>> >>> Thanks, >> Khushboo >> >>> >>> On Tue, Mar 17, 2020 at 8:55 AM Khushboo Vashi < >>> khushboo.vashi@enterprisedb.com> wrote: >>> >>>> Hi, >>>> >>>> Please find the attached patch to support LDAP Authentication in Server >>>> mode. >>>> To test the patch, config_auth.py needs to be configured for LDAP >>>> configurations. The config settings are explained in this file in detail. >>>> After configuring the parameters, start the pgadmin server in Server mode >>>> and connect with LDAP server with the valid user via login page. >>>> >>>> I have tested this patch with ldap and ldap + ssl/tls. With the TLS, I >>>> have used the default config of ldap3 without certificates. >>>> >>>> @Dave, can you please review this patch, as you have a better >>>> understanding of LDAP and you can easily pointed out if I have missed >>>> anything. >>>> >>>> Note: For the document update I will create the task and assign to >>>> Nidhi for the same. >>>> >>>> Thanks, >>>> Khushboo >>>> >>> >>> >>> -- >>> Dave Page >>> Blog: http://pgsnake.blogspot.com >>> Twitter: @pgsnake >>> >>> EnterpriseDB UK: http://www.enterprisedb.com >>> The Enterprise PostgreSQL Company >>> >> > > -- > Dave Page > Blog: http://pgsnake.blogspot.com > Twitter: @pgsnake > > EnterpriseDB UK: http://www.enterprisedb.com > The Enterprise PostgreSQL Company > --0000000000001eb8d905a1929f56 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi,

Please find the at= tached updated patch.


On Tue, Mar 17, 2020 at 4:11 PM D= ave Page <dpage@pgadmin.org>= wrote:
Hi

On Tue, Mar 17, 2020 at 10:24 AM Khushboo Vashi <khushboo.vash= i@enterprisedb.com> wrote:
Hi Dave,

T= hanks for the review.

On Tue, Mar 17, 2020 at 3:42 PM Dave Page <dpage@pgadmin.org> w= rote:
Hi

30 second read of the first version of the p= atch...

- Please move the configuration into confi= g.py. Users should never have to modify a distributed file (it messes up pa= ckaging). I don't see any reason to use a different file just for auth = config.

There are many settings= for the LDAP, and in the future we will add other external sources also, s= o I thought it would be better if we have different file for the authentica= tion.

Sure, but our confi= g file is small compared to many. Splitting things out is more confusing fo= r users. If they want to do that themselves of course, they can add a confi= g_local.py file which includes other files as needed.
Fixed.=C2=A0
=C2=A0
- I think all config options should be prefi= xed with LDAP_ as we may have things like CERT_FILE for other purposes too.=

Sure.=C2=A0
<= /blockquote>
Done.=C2=A0
- I don't see any test cases.
<= br>
I will think about this, as right now no i= dea how to write test cases for this.=C2=A0
<= div>
It should be fairly straightforward to write tests for s= ome of the functions in the auth classes. For testing the actual LDAP stuff= , we probably need to add LDAP config options to test_config.json, and only= if present, run the tests. That would probably need to support a list of L= DAP servers, so we can test with different configurations (LDAP, LDAPS, LDA= P_STARTTLS, AD etc).
=C2=A0
Do= ne.

Thanks,
Khushboo
<= div dir=3D"ltr">
Thanks.

Thanks,
Khushboo=C2=A0

On Tue, Mar 17, 2020 at 8= :55 AM Khushboo Vashi <khushboo.vashi@enterprisedb.com> wrote:
Hi,
Please find the attached patch to support LDAP Authenticati= on in Server mode.
To test the patch, config_auth.py needs to be = configured for LDAP configurations. The config settings are explained in th= is file in detail. After configuring the parameters, start the pgadmin serv= er in Server mode and connect with LDAP server with the valid user via logi= n page.

I have tested this patch with ldap and lda= p=C2=A0+ ssl/tls. With the TLS, I have used the default config of ldap3 wit= hout certificates.

@Dave, can you please review th= is patch, as you have a better understanding of LDAP and you can easily poi= nted out if I have missed anything.

Note: For the = document update I will create the task and assign to Nidhi for the same.

Thanks,
Khushboo


--
Dave Page
Blog: http://pgsnake.blogspot.com
Twitter: @pgsnake

EnterpriseDB= UK: http://www.e= nterprisedb.com
The Enterprise PostgreSQL Company


--
Dave Page
Blog: http://pgsnake.blogspot.com
Twitter: @pgsnake

EnterpriseDB= UK: http://www.e= nterprisedb.com
The Enterprise PostgreSQL Company
--0000000000001eb8d905a1929f56-- --0000000000001eb8db05a1929f58 Content-Type: application/octet-stream; name="RM_2186_v1.patch" Content-Disposition: attachment; filename="RM_2186_v1.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_k85fjchq0 ZGlmZiAtLWdpdCBhL3JlcXVpcmVtZW50cy50eHQgYi9yZXF1aXJlbWVudHMudHh0CmluZGV4IGM1 ZDFjNTZlYi4uMWJlMTY5NjBhIDEwMDY0NAotLS0gYS9yZXF1aXJlbWVudHMudHh0CisrKyBiL3Jl cXVpcmVtZW50cy50eHQKQEAgLTM5LDMgKzM5LDQgQEAgcHl0aG9uLWRhdGV1dGlsPj0yLjguMAog U1FMQWxjaGVteT49MS4zLjEzCiBGbGFzay1TZWN1cml0eS1Ub28+PTMuMC4wCiBzc2h0dW5uZWw+ PTAuMS40CitsZGFwMz09Mi41LjEKZGlmZiAtLWdpdCBhL3dlYi9jb25maWcucHkgYi93ZWIvY29u ZmlnLnB5CmluZGV4IGMyNjkwMzMxMC4uNTViZWQ1NTVmIDEwMDY0NAotLS0gYS93ZWIvY29uZmln LnB5CisrKyBiL3dlYi9jb25maWcucHkKQEAgLTQ4OCw2ICs0ODgsNjUgQEAgTUFTVEVSX1BBU1NX T1JEX1JFUVVJUkVEID0gVHJ1ZQogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIEVOSEFOQ0VEX0NPT0tJRV9Q Uk9URUNUSU9OID0gVHJ1ZQogCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBFeHRlcm5hbCBBdXRoZW50 aWNhdGlvbiBTb3VyY2VzCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisjIERlZmF1bHQgc2V0dGluZyBp cyBpbnRlcm5hbAorIyBFeHRlcm5hbCBTdXBwb3J0ZWQgU291cmNlczogbGRhcAorIyBNdWx0aXBs ZSBhdXRoZW50aWNhdGlvbiBjYW4gYmUgYWNoaWV2ZWQgYnkgc2V0dGluZyB0aGlzIHBhcmFtZXRl ciB0bworIyBbJ2xkYXAnLCAnaW50ZXJuYWwnXS4gcGdBZG1pbiB3aWxsIGF1dGhlbnRpY2F0ZSB0 aGUgdXNlciB3aXRoIGxkYXAgZmlyc3QsCisjIGluIGNhc2Ugb2YgZmFpbHVyZSBpbnRlcm5hbCBh dXRoZW50aWNhdGlvbiB3aWxsIGJlIGRvbmUuCisKK0FVVEhFTlRJQ0FUSU9OX1NPVVJDRVMgPSBb J2ludGVybmFsJ10KKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgTERBUCBDb25maWd1cmF0aW9uCisj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIworCisjIEFmdGVyIGxkYXAgYXV0aGVudGljYXRpb24sIHVzZXIgd2ls bCBiZSBhZGRlZCBpbnRvIHRoZSBTUUxpdGUgZGF0YWJhc2UKKyMgYXV0b21hdGljYWxseSwgaWYg c2V0IHRvIFRydWUuCisjIFNldCBpdCB0byBGYWxzZSwgaWYgdXNlciBzaG91bGQgbm90IGJlIGFk ZGVkIGF1dG9tYXRpY2FsbHksCisjIGluIHRoaXMgY2FzZSBBZG1pbiBoYXMgdG8gYWRkIHRoZSB1 c2VyIG1hbnVhbGx5IGluIHRoZSBTUUxpdGUgZGF0YWJhc2UuCisKK0xEQVBfQVVUT19DUkVBVEVf VVNFUiA9IFRydWUKKworIyBDb25uZWN0aW9uIHRpbWVvdXQKK0xEQVBfQ09OTkVDVElPTl9USU1F T1VUID0gMTAKKworIyBTZXJ2ZXIgY29ubmVjdGlvbiBkZXRhaWxzIChSRVFVSVJFRCkKKyMgZXhh bXBsZTogbGRhcDovLzxpcC1hZGRyZXNzPjo8cG9ydD4gb3IgbGRhcDovLzxob3N0bmFtZT46PHBv cnQ+CitMREFQX1NFUlZFUl9VUkkgPSAnbGRhcDovLzxpcC1hZGRyZXNzPjo8cG9ydD4nCisKKyMg QmFzZUROIChSRVFVSVJFRCkKKyMgQUQgZXhhbXBsZToKKyMgKCYob2JqZWN0Q2xhc3M9dXNlciko bWVtYmVyb2Y9Q049TVlHUk9VUCxDTj1Vc2VycyxkYz1leGFtcGxlLGRjPWNvbSkpCisjIE9wZW5M REFQIGV4YW1wbGU6IENOPVVzZXJzLGRjPWV4YW1wbGUsZGM9Y29tCitMREFQX0JBU0VfRE4gPSAn PEJhc2UtRE4+JworCisjIFRoZSBMREFQIGF0dHJpYnV0ZSBjb250YWluaW5nIHVzZXIgbmFtZXMu IEluIE9wZW5MREFQLCB0aGlzIG1heSBiZSAndWlkJworIyB3aGlsc3QgaW4gQUQsICdzQU1BY2Nv dW50TmFtZScgbWlnaHQgYmUgYXBwcm9wcmlhdGUuIChSRVFVSVJFRCkKK0xEQVBfVVNFUk5BTUVf QVRUUklCVVRFID0gJzxVc2VyLWlkPicKKworIyBTZWFyY2ggbGRhcCBmb3IgZnVydGhlciBhdXRo ZW50aWNhdGlvbgorTERBUF9TRUFSQ0hfQkFTRV9ETiA9ICc8U2VhcmNoLUJhc2UtRE4+JworCisj IEZpbHRlciBzdHJpbmcgZm9yIHRoZSB1c2VyIHNlYXJjaC4KKyMgRm9yIE9wZW5MREFQLCAnKGNu PSopJyBtYXkgd2VsbCBiZSBlbm91Z2guCisjIEZvciBBRCwgeW91IG1pZ2h0IHVzZSAnKG9iamVj dENsYXNzPXVzZXIpJyAoUkVRVUlSRUQpCitMREFQX1NFQVJDSF9GSUxURVIgPSAnKG9iamVjdGNs YXNzPSopJworCisjIFNlYXJjaCBzY29wZSBmb3IgdXNlcnMgKG9uZSBvZiBCQVNFLCBMRVZFTCBv ciBTVUJUUkVFKQorTERBUF9TRUFSQ0hfU0NPUEUgPSAnU1VCVFJFRScKKworIyBVc2UgVExTPyBJ ZiB0aGUgVVJJIHNjaGVtZSBpcyBsZGFwczovLywgdGhpcyBpcyBpZ25vcmVkLgorTERBUF9VU0Vf U1RBUlRUTFMgPSBGYWxzZQorCisjIFRMUy9TU0wgY2VydGlmaWNhdGVzLiBTcGVjaWZ5IGlmIHJl cXVpcmVkLCBvdGhlcndpc2UgbGVhdmUgZW1wdHkKK0xEQVBfQ0FfQ0VSVF9GSUxFID0gJycKK0xE QVBfQ0VSVF9GSUxFID0gJycKK0xEQVBfS0VZX0ZJTEUgPSAnJworCiAjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IwogIyBMb2NhbCBjb25maWcgc2V0dGluZ3MKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmRpZmYgLS1naXQg YS93ZWIvbWlncmF0aW9ucy92ZXJzaW9ucy83ZmVkZjg1MzE4MDJfLnB5IGIvd2ViL21pZ3JhdGlv bnMvdmVyc2lvbnMvN2ZlZGY4NTMxODAyXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAuLjJiNDZhNDllNgotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9taWdyYXRpb25zL3Zl cnNpb25zLzdmZWRmODUzMTgwMl8ucHkKQEAgLTAsMCArMSw1MSBAQAorCisiIiJlbXB0eSBtZXNz YWdlCisKK1JldmlzaW9uIElEOiA3ZmVkZjg1MzE4MDIKK1JldmlzZXM6IGFmZjE0MzZlM2M4Ywor Q3JlYXRlIERhdGU6IDIwMjAtMDItMjYgMTE6MjQ6NTQuMzUzMjg4CisKKyIiIgorZnJvbSBhbGVt YmljIGltcG9ydCBvcAoraW1wb3J0IHNxbGFsY2hlbXkgYXMgc2EKK2Zyb20gcGdhZG1pbi5tb2Rl bCBpbXBvcnQgZGIKKworIyByZXZpc2lvbiBpZGVudGlmaWVycywgdXNlZCBieSBBbGVtYmljLgor cmV2aXNpb24gPSAnN2ZlZGY4NTMxODAyJworZG93bl9yZXZpc2lvbiA9ICdhZmYxNDM2ZTNjOGMn CiticmFuY2hfbGFiZWxzID0gTm9uZQorZGVwZW5kc19vbiA9IE5vbmUKKworCitkZWYgdXBncmFk ZSgpOgorCisgICAgZGIuZW5naW5lLmV4ZWN1dGUoIkFMVEVSIFRBQkxFIHVzZXIgUkVOQU1FIFRP IHVzZXJfb2xkIikKKworICAgIGRiLmVuZ2luZS5leGVjdXRlKCIiIgorICAgICAgICBDUkVBVEUg VEFCTEUgdXNlciAoCisgICAgICAgICAgICBpZCBJTlRFR0VSIE5PVCBOVUxMLAorICAgICAgICAg ICAgdXNlcm5hbWUgVkFSQ0hBUigyNTYpIE5PVCBOVUxMLAorICAgICAgICAgICAgZW1haWwgVkFS Q0hBUigyNTYpLAorICAgICAgICAgICAgcGFzc3dvcmQgVkFSQ0hBUigyNTYpLAorICAgICAgICAg ICAgYWN0aXZlIEJPT0xFQU4gTk9UIE5VTEwsCisgICAgICAgICAgICBjb25maXJtZWRfYXQgREFU RVRJTUUsCisgICAgICAgICAgICBtYXN0ZXJwYXNzX2NoZWNrIFZBUkNIQVIoMjU2KSwKKyAgICAg ICAgICAgIGF1dGhfc291cmNlIFZBUkNIQVIoMjU2KSBOT1QgTlVMTCBERUZBVUxUICdJTlRFUk5B TCcsCisgICAgICAgICAgICBQUklNQVJZIEtFWSAoaWQpLAorICAgICAgICAgICAgVU5JUVVFICh1 c2VybmFtZSwgYXV0aF9zb3VyY2UpLAorICAgICAgICAgICAgQ0hFQ0sgKGFjdGl2ZSBJTiAoMCwg MSkpCisgICAgICAgICk7CisgICAgICAgICIiIikKKworICAgIGRiLmVuZ2luZS5leGVjdXRlKCIi IgorICAgICAgICBJTlNFUlQgSU5UTyB1c2VyICgKKyAgICAgICAgICAgIGlkLCB1c2VybmFtZSwg ZW1haWwsIHBhc3N3b3JkLCBhY3RpdmUsIGNvbmZpcm1lZF9hdCwgbWFzdGVycGFzc19jaGVjawor ICAgICAgICApIFNFTEVDVAorICAgICAgICAgICAgaWQsIGVtYWlsLCBlbWFpbCwgcGFzc3dvcmQs IGFjdGl2ZSwgY29uZmlybWVkX2F0LCBtYXN0ZXJwYXNzX2NoZWNrCisgICAgICAgIEZST00gdXNl cl9vbGQiIiIpCisKKyAgICBkYi5lbmdpbmUuZXhlY3V0ZSgiRFJPUCBUQUJMRSB1c2VyX29sZCIp CisKKworZGVmIGRvd25ncmFkZSgpOgorICAgIHBhc3MKZGlmZiAtLWdpdCBhL3dlYi9wZ0FkbWlu NC5weSBiL3dlYi9wZ0FkbWluNC5weQppbmRleCA4MWVmNmMzOTYuLmI5M2I3Y2ZkNCAxMDA2NDQK LS0tIGEvd2ViL3BnQWRtaW40LnB5CisrKyBiL3dlYi9wZ0FkbWluNC5weQpAQCAtMTYwLDYgKzE2 MCwxNiBAQCBpZiAnUEdBRE1JTl9JTlRfS0VZJyBpbiBnbG9iYWxzKCk6CiBlbHNlOgogICAgIGFw cC5QR0FETUlOX0lOVF9LRVkgPSAnJwogCisjIEF1dGhlbnRpY2F0aW9uIHNvdXJjZXMKK2FwcC5Q R0FETUlOX0RFRkFVTFRfQVVUSF9TT1VSQ0UgPSAnaW50ZXJuYWwnCitpZiBsZW4oY29uZmlnLkFV VEhFTlRJQ0FUSU9OX1NPVVJDRVMpID4gMDoKKyAgICBhcHAuUEdBRE1JTl9FWFRFUk5BTF9BVVRI X1NPVVJDRSA9IGNvbmZpZy5BVVRIRU5USUNBVElPTl9TT1VSQ0VTWzBdCitlbHNlOgorICAgIGFw cC5QR0FETUlOX0VYVEVSTkFMX0FVVEhfU09VUkNFID0gYXBwLlBHQURNSU5fREVGQVVMVF9BVVRI X1NPVVJDRQorCithcHAubG9nZ2VyLmRlYnVnKAorICAgICJBdXRoZW50aWNhdGlvbiBTb3VyY2U6 ICVzIiAlIGFwcC5QR0FETUlOX0RFRkFVTFRfQVVUSF9TT1VSQ0UpCisKICMgT3V0cHV0IGEgc3Rh cnR1cCBtZXNzYWdlIGlmIHdlJ3JlIG5vdCB1bmRlciB0aGUgcnVudGltZSBhbmQgc3RhcnR1cC4K ICMgSWYgd2UncmUgdW5kZXIgV1NHSSwgd2UgZG9uJ3QgbmVlZCB0byB3b3JyeSBhYm91dCB0aGlz CiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vX19p bml0X18ucHkgYi93ZWIvcGdhZG1pbi9fX2luaXRfXy5weQppbmRleCA4MjBjODAxNWEuLjVjYTJh ZTY3YSAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vX19pbml0X18ucHkKKysrIGIvd2ViL3BnYWRt aW4vX19pbml0X18ucHkKQEAgLTM4LDcgKzM4LDcgQEAgZnJvbSBkYXRldGltZSBpbXBvcnQgdGlt ZWRlbHRhCiBmcm9tIHBnYWRtaW4uc2V0dXAgaW1wb3J0IGdldF92ZXJzaW9uLCBzZXRfdmVyc2lv bgogZnJvbSBwZ2FkbWluLnV0aWxzLmFqYXggaW1wb3J0IGludGVybmFsX3NlcnZlcl9lcnJvcgog ZnJvbSBwZ2FkbWluLnV0aWxzLmNzcmYgaW1wb3J0IHBnQ1NSRlByb3RlY3QKLQorZnJvbSBwZ2Fk bWluIGltcG9ydCBhdXRoZW50aWNhdGUKIAogIyBJZiBzY3JpcHQgaXMgcnVubmluZyB1bmRlciBw eXRob24zLCBpdCB3aWxsIG5vdCBoYXZlIHRoZSB4cmFuZ2UgZnVuY3Rpb24KICMgZGVmaW5lZApA QCAtMzk4LDYgKzM5OCw3IEBAIGRlZiBjcmVhdGVfYXBwKGFwcF9uYW1lPU5vbmUpOgogICAgICMg TG9hZCBhbGwgYXZhaWxhYmxlIHNlcnZlciBkcml2ZXJzCiAgICAgIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK ICAgICBkcml2ZXIuaW5pdF9hcHAoYXBwKQorICAgIGF1dGhlbnRpY2F0ZS5pbml0X2FwcChhcHAp CiAKICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgICMgUmVnaXN0ZXIgbGFuZ3VhZ2UgdG8gdGhl IHByZWZlcmVuY2VzIGFmdGVyIGxvZ2luCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9hdXRoZW50 aWNhdGUvX19pbml0X18ucHkgYi93ZWIvcGdhZG1pbi9hdXRoZW50aWNhdGUvX19pbml0X18ucHkK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwLi5lNzE4OTBjZTAKLS0tIC9kZXYv bnVsbAorKysgYi93ZWIvcGdhZG1pbi9hdXRoZW50aWNhdGUvX19pbml0X18ucHkKQEAgLTAsMCAr MSw5NiBAQAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMKKyMgcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBU b29scworIworIyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDIwLCBUaGUgcGdBZG1pbiBEZXZlbG9w bWVudCBUZWFtCisjIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVT UUwgTGljZW5jZQorIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIiIiQSBibHVlcHJpbnQgbW9kdWxl IGltcGxlbWVudGluZyB0aGUgQXV0aGVudGljYXRpb24uIiIiCisKK2ltcG9ydCBmbGFzaworZnJv bSBmbGFzayBpbXBvcnQgY3VycmVudF9hcHAsIGZsYXNoCitmcm9tIGZsYXNrX2JhYmVsZXggaW1w b3J0IGdldHRleHQKK2Zyb20gZmxhc2tfc2VjdXJpdHkudmlld3MgaW1wb3J0IF9zZWN1cml0eSwg X2N0eAorZnJvbSBmbGFza19zZWN1cml0eS51dGlscyBpbXBvcnQgY29uZmlnX3ZhbHVlLCBnZXRf cG9zdF9sb2dvdXRfcmVkaXJlY3QKKworaW1wb3J0IGNvbmZpZworZnJvbSBwZ2FkbWluLnV0aWxz IGltcG9ydCBQZ0FkbWluTW9kdWxlCitmcm9tIC5yZWdpc3RyeSBpbXBvcnQgQXV0aFNvdXJjZVJl Z2lzdHJ5CisKK01PRFVMRV9OQU1FID0gJ2F1dGhlbnRpY2F0ZScKKworCitjbGFzcyBBdXRoZW50 aWNhdGVNb2R1bGUoUGdBZG1pbk1vZHVsZSk6CisgICAgZGVmIGdldF9leHBvc2VkX3VybF9lbmRw b2ludHMoc2VsZik6CisgICAgICAgIHJldHVybiBbJ2F1dGhlbnRpY2F0ZS5sb2dpbiddCisKKwor Ymx1ZXByaW50ID0gQXV0aGVudGljYXRlTW9kdWxlKE1PRFVMRV9OQU1FLCBfX25hbWVfXywgc3Rh dGljX3VybF9wYXRoPScnKQorCisKK0BibHVlcHJpbnQucm91dGUoJy9sb2dpbicsIGVuZHBvaW50 PSdsb2dpbicsIG1ldGhvZHM9WydHRVQnLCAnUE9TVCddKQorZGVmIGxvZ2luKCk6CisgICAgIiIi CisgICAgRW50cnkgcG9pbnQgZm9yIGFsbCB0aGUgYXV0aGVudGljYXRpb24gc291cmNlcy4KKyAg ICBUaGUgdXNlciBpbnB1dCBkYXRhIHdpbGwgYmUgdmFsaWRhdGVkIGFuZCBhdXRoZW50aWNhdGVk LgorICAgICIiIgorICAgIGZvcm0gPSBfc2VjdXJpdHkubG9naW5fZm9ybSgpCisKKyAgICAjIExv b3AgdGhyb3VnaCBhbGwgdGhlIHNvdXJjZXMKKyAgICBmb3Igc3JjIGluIGNvbmZpZy5BVVRIRU5U SUNBVElPTl9TT1VSQ0VTOgorICAgICAgICBzb3VyY2UgPSBnZXRfYXV0aF9zb3VyY2VzKHNyYykK KworICAgICAgICAjIFZhbGlkYXRlIHRoZSB1c2VyCisgICAgICAgIGlmIG5vdCBzb3VyY2UudmFs aWRhdGUoZm9ybSk6CisgICAgICAgICAgICBmb3IgZmllbGQgaW4gZm9ybS5lcnJvcnM6CisgICAg ICAgICAgICAgICAgZm9yIGVycm9yIGluIGZvcm0uZXJyb3JzW2ZpZWxkXToKKyAgICAgICAgICAg ICAgICAgICAgZmxhc2goZXJyb3IsICd3YXJuaW5nJykKKyAgICAgICAgICAgIHJldHVybiBmbGFz ay5yZWRpcmVjdChnZXRfcG9zdF9sb2dvdXRfcmVkaXJlY3QoKSkKKworICAgICAgICAjIEF1dGhl bnRpY2F0ZSB0aGUgdXNlcgorICAgICAgICBzdGF0dXMsIG1zZyA9IHNvdXJjZS5hdXRoZW50aWNh dGUoKQorCisgICAgICAgICMgTG9naW4gdGhlIHVzZXIgaWYgYXV0aGVudGljYXRlZCBlbHNlIGxv b2sgZm9yIHRoZQorICAgICAgICAjIG90aGVyIGF1dGhlbnRpY2F0aW9uIHNvdXJjZXMgaWYgc2V0 IGluIHRoZSBjb25maWcKKyAgICAgICAgaWYgc3RhdHVzOgorICAgICAgICAgICAgIyBMb2dpbiB0 aGUgdXNlcgorICAgICAgICAgICAgc3RhdHVzLCBtc2cgPSBzb3VyY2UubG9naW4oKQorICAgICAg ICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICBmbGFzaChnZXR0ZXh0KG1zZyks ICdkYW5nZXInKQorICAgICAgICAgICAgICAgIHJldHVybiBmbGFzay5yZWRpcmVjdChnZXRfcG9z dF9sb2dvdXRfcmVkaXJlY3QoKSkKKworICAgICAgICAgICAgcmV0dXJuIGZsYXNrLnJlZGlyZWN0 KCcvJykKKworICAgIGZsYXNoKGdldHRleHQobXNnKSwgJ2RhbmdlcicpCisgICAgcmV0dXJuIGZs YXNrLnJlZGlyZWN0KGdldF9wb3N0X2xvZ291dF9yZWRpcmVjdCgpKQorCisKK2RlZiBnZXRfYXV0 aF9zb3VyY2VzKHR5cGUpOgorICAgICIiIkdldCB0aGUgYXV0aGVudGljYXRlZCBzb3VyY2Ugb2Jq ZWN0IGZyb20gdGhlIHJlZ2lzdHJ5IiIiCisKKyAgICBhdXRoX3NvdXJjZXMgPSBnZXRhdHRyKGN1 cnJlbnRfYXBwLCAnX3BnYWRtaW5fYXV0aF9zb3VyY2VzJywgTm9uZSkKKworICAgIGlmIGF1dGhf c291cmNlcyBpcyBOb25lIG9yIG5vdCBpc2luc3RhbmNlKGF1dGhfc291cmNlcywgZGljdCk6Cisg ICAgICAgIGF1dGhfc291cmNlcyA9IGRpY3QoKQorCisgICAgaWYgdHlwZSBpbiBhdXRoX3NvdXJj ZXM6CisgICAgICAgIHJldHVybiBhdXRoX3NvdXJjZXNbdHlwZV0KKworICAgIGF1dGhfc291cmNl ID0gQXV0aFNvdXJjZVJlZ2lzdHJ5LmNyZWF0ZSh0eXBlKQorCisgICAgaWYgYXV0aF9zb3VyY2Ug aXMgbm90IE5vbmU6CisgICAgICAgIGF1dGhfc291cmNlc1t0eXBlXSA9IGF1dGhfc291cmNlCisg ICAgICAgIHNldGF0dHIoY3VycmVudF9hcHAsICdfcGdhZG1pbl9hdXRoX3NvdXJjZXMnLCBhdXRo X3NvdXJjZXMpCisKKyAgICByZXR1cm4gYXV0aF9zb3VyY2UKKworCitkZWYgaW5pdF9hcHAoYXBw KToKKyAgICBhdXRoX3NvdXJjZXMgPSBkaWN0KCkKKworICAgIHNldGF0dHIoYXBwLCAnX3BnYWRt aW5fYXV0aF9zb3VyY2VzJywgYXV0aF9zb3VyY2VzKQorICAgIEF1dGhTb3VyY2VSZWdpc3RyeS5s b2FkX2F1dGhfc291cmNlcygpCisKKyAgICByZXR1cm4gYXV0aF9zb3VyY2VzCmRpZmYgLS1naXQg YS93ZWIvcGdhZG1pbi9hdXRoZW50aWNhdGUvaW50ZXJuYWwucHkgYi93ZWIvcGdhZG1pbi9hdXRo ZW50aWNhdGUvaW50ZXJuYWwucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw Li4xOGEzNzZjYWYKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9hdXRoZW50aWNhdGUv aW50ZXJuYWwucHkKQEAgLTAsMCArMSw5MSBAQAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMKKyMgcGdB ZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworIworIyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDIw LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisjIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFz ZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorIworIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKwor IiIiSW1wbGVtZW50cyBJbnRlcm5hbCBBdXRoZW50aWNhdGlvbiIiIgorCitpbXBvcnQgc2l4Citm cm9tIGZsYXNrIGltcG9ydCBjdXJyZW50X2FwcAorZnJvbSBmbGFza19zZWN1cml0eSBpbXBvcnQg bG9naW5fdXNlcgorZnJvbSBhYmMgaW1wb3J0IGFic3RyYWN0bWV0aG9kCitmcm9tIGZsYXNrX2Jh YmVsZXggaW1wb3J0IGdldHRleHQKKworZnJvbSAucmVnaXN0cnkgaW1wb3J0IEF1dGhTb3VyY2VS ZWdpc3RyeQorZnJvbSBwZ2FkbWluLm1vZGVsIGltcG9ydCBVc2VyCisKKworQHNpeC5hZGRfbWV0 YWNsYXNzKEF1dGhTb3VyY2VSZWdpc3RyeSkKK2NsYXNzIEJhc2VBdXRoZW50aWNhdGlvbihvYmpl Y3QpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgc2VsZi5mb3JtID0gTm9uZQor ICAgICAgICBzZWxmLnVzZXJuYW1lID0gTm9uZQorICAgICAgICBzZWxmLnBhc3N3b3JkID0gTm9u ZQorCisgICAgZGVmIHZhbGlkYXRlKHNlbGYsIGZvcm0pOgorICAgICAgICB1c2VybmFtZSA9IGZv cm0uZGF0YVsnZW1haWwnXQorICAgICAgICBwYXNzd29yZCA9IGZvcm0uZGF0YVsncGFzc3dvcmQn XQorCisgICAgICAgIGlmIHVzZXJuYW1lIGlzIE5vbmUgb3IgdXNlcm5hbWUgPT0gJyc6CisgICAg ICAgICAgICBmb3JtLmVtYWlsLmVycm9ycyA9IGxpc3QoZm9ybS5lbWFpbC5lcnJvcnMpCisgICAg ICAgICAgICBmb3JtLmVtYWlsLmVycm9ycy5hcHBlbmQoZ2V0dGV4dCgKKyAgICAgICAgICAgICAg ICBzZWxmLm1lc3NhZ2VzKCdFTUFJTF9OT1RfUFJPVklERUQnKSkpCisgICAgICAgICAgICByZXR1 cm4gRmFsc2UKKyAgICAgICAgaWYgcGFzc3dvcmQgaXMgTm9uZSBvciBwYXNzd29yZCA9PSAnJzoK KyAgICAgICAgICAgIGZvcm0ucGFzc3dvcmQuZXJyb3JzID0gbGlzdChmb3JtLnBhc3N3b3JkLmVy cm9ycykKKyAgICAgICAgICAgIGZvcm0ucGFzc3dvcmQuZXJyb3JzLmFwcGVuZCgKKyAgICAgICAg ICAgICAgICBzZWxmLm1lc3NhZ2VzKCdQQVNTV09SRF9OT1RfUFJPVklERUQnKSkKKyAgICAgICAg ICAgIHJldHVybiBGYWxzZQorCisgICAgICAgIHNlbGYuZm9ybSA9IGZvcm0KKyAgICAgICAgc2Vs Zi51c2VybmFtZSA9IGZvcm0uZGF0YVsnZW1haWwnXQorICAgICAgICBzZWxmLnBhc3N3b3JkID0g Zm9ybS5kYXRhWydwYXNzd29yZCddCisgICAgICAgIHJldHVybiBUcnVlCisKKyAgICBkZWYgbG9n aW4oc2VsZik6CisgICAgICAgIHVzZXIgPSBnZXRhdHRyKHNlbGYuZm9ybSwgJ3VzZXInLAorICAg ICAgICAgICAgICAgICAgICAgICBVc2VyLnF1ZXJ5LmZpbHRlcl9ieSh1c2VybmFtZT1zZWxmLnVz ZXJuYW1lKS5maXJzdCgpKQorCisgICAgICAgIGlmIHVzZXIgaXMgTm9uZToKKyAgICAgICAgICAg IGN1cnJlbnRfYXBwLmxvZ2dlci5leGNlcHRpb24oc2VsZi5tZXNzYWdlcygnVVNFUl9ET0VTX05P VF9FWElTVCcpKQorICAgICAgICAgICAgcmV0dXJuIEZhbHNlLCBzZWxmLm1lc3NhZ2VzKCdVU0VS X0RPRVNfTk9UX0VYSVNUJykKKworICAgICAgICAjIExvZ2luIHVzZXIgdGhyb3VnaCBmbGFza19z ZWN1cml0eQorICAgICAgICBzdGF0dXMgPSBsb2dpbl91c2VyKHVzZXIpCisgICAgICAgIGlmIG5v dCBzdGF0dXM6CisgICAgICAgICAgICBjdXJyZW50X2FwcC5sb2dnZXIuZXhjZXB0aW9uKHNlbGYu bWVzc2FnZXMoJ0xPR0lOX0ZBSUxFRCcpKQorICAgICAgICAgICAgcmV0dXJuIEZhbHNlLCBzZWxm Lm1lc3NhZ2VzKCdMT0dJTl9GQUlMRUQnKQorICAgICAgICByZXR1cm4gVHJ1ZSwgTm9uZQorCisg ICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBtZXNzYWdlcyhtc2dfa2V5KToKKyAgICAgICAgX2Rl ZmF1bHRfbXNnID0geworICAgICAgICAgICAgJ1VTRVJfRE9FU19OT1RfRVhJU1QnOiAnU3BlY2lm aWVkIHVzZXIgZG9lcyBub3QgZXhpc3QnLAorICAgICAgICAgICAgJ0xPR0lOX0ZBSUxFRCc6ICdM b2dpbiBmYWlsZWQnLAorICAgICAgICAgICAgJ0VNQUlMX05PVF9QUk9WSURFRCc6ICdFbWFpbC9V c2VybmFtZSBub3QgcHJvdmlkZWQnLAorICAgICAgICAgICAgJ1BBU1NXT1JEX05PVF9QUk9WSURF RCc6ICdQYXNzd29yZCBub3QgcHJvdmlkZWQnCisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIF9k ZWZhdWx0X21zZ1ttc2dfa2V5XSBpZiBtc2dfa2V5IGluIF9kZWZhdWx0X21zZyBlbHNlIE5vbmUK KworICAgIEBhYnN0cmFjdG1ldGhvZAorICAgIGRlZiBhdXRoZW50aWNhdGUoY2xzKToKKyAgICAg ICAgcGFzcworCisKK2NsYXNzIEludGVybmFsQXV0aGVudGljYXRpb24oQmFzZUF1dGhlbnRpY2F0 aW9uKToKKworICAgIGRlZiB2YWxpZGF0ZShzZWxmLCBmb3JtKToKKyAgICAgICAgIiIiVXNlciB2 YWxpZGF0aW9uIiIiCisgICAgICAgIHNlbGYuZm9ybSA9IGZvcm0KKyAgICAgICAgc2VsZi51c2Vy bmFtZSA9IGZvcm0uZGF0YVsnZW1haWwnXQorICAgICAgICBzZWxmLnBhc3N3b3JkID0gZm9ybS5k YXRhWydwYXNzd29yZCddCisKKyAgICAgICAgIyBGbGFzayBzZWN1cml0eSB2YWxpZGF0aW9uCisg ICAgICAgIHJldHVybiBzZWxmLmZvcm0udmFsaWRhdGVfb25fc3VibWl0KCkKKworICAgIGRlZiBh dXRoZW50aWNhdGUoc2VsZik6CisgICAgICAgIHJldHVybiBUcnVlLCBOb25lCmRpZmYgLS1naXQg YS93ZWIvcGdhZG1pbi9hdXRoZW50aWNhdGUvbGRhcC5weSBiL3dlYi9wZ2FkbWluL2F1dGhlbnRp Y2F0ZS9sZGFwLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uZjJjMGNh N2JjCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYXV0aGVudGljYXRlL2xkYXAucHkK QEAgLTAsMCArMSwxNjQgQEAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjCisjIHBnQWRtaW4gNCAtIFBv c3RncmVTUUwgVG9vbHMKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAyMCwgVGhlIHBnQWRt aW4gRGV2ZWxvcG1lbnQgVGVhbQorIyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRo ZSBQb3N0Z3JlU1FMIExpY2VuY2UKKyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyIiIkEgYmx1ZXBy aW50IG1vZHVsZSBpbXBsZW1lbnRpbmcgdGhlIGxkYXAgYXV0aGVudGljYXRpb24uIiIiCisKK2lt cG9ydCBzc2wKK2ltcG9ydCBjb25maWcKK2Zyb20gbGRhcDMgaW1wb3J0IENvbm5lY3Rpb24sIFNl cnZlciwgVGxzLCBBTEwsIEFMTF9BVFRSSUJVVEVTCitmcm9tIGxkYXAzLmNvcmUuZXhjZXB0aW9u cyBpbXBvcnQgTERBUFNvY2tldE9wZW5FcnJvciwgTERBUEJpbmRFcnJvcixcCisgICAgTERBUElu dmFsaWRTY29wZUVycm9yLCBMREFQQXR0cmlidXRlRXJyb3IsIExEQVBJbnZhbGlkRmlsdGVyRXJy b3IsXAorICAgIExEQVBTdGFydFRMU0Vycm9yCitmcm9tIGZsYXNrX2JhYmVsZXggaW1wb3J0IGdl dHRleHQKKworZnJvbSAuaW50ZXJuYWwgaW1wb3J0IEJhc2VBdXRoZW50aWNhdGlvbgorZnJvbSBw Z2FkbWluLm1vZGVsIGltcG9ydCBVc2VyLCBTZXJ2ZXJHcm91cCwgZGIsIFJvbGUKK2Zyb20gZmxh c2tfc2VjdXJpdHkgaW1wb3J0IGxvZ2luX3VzZXIKK2Zyb20gZmxhc2sgaW1wb3J0IGN1cnJlbnRf YXBwCitmcm9tIHBnYWRtaW4udG9vbHMudXNlcl9tYW5hZ2VtZW50IGltcG9ydCBjcmVhdGVfdXNl cgorCit0cnk6CisgICAgZnJvbSB1cmxsaWIucGFyc2UgaW1wb3J0IHVybHBhcnNlCitleGNlcHQg SW1wb3J0RXJyb3I6CisgICAgZnJvbSB1cmxwYXJzZSBpbXBvcnQgdXJscGFyc2UKKworCitjbGFz cyBMREFQQXV0aGVudGljYXRpb24oQmFzZUF1dGhlbnRpY2F0aW9uKToKKworICAgIGRlZiBhdXRo ZW50aWNhdGUoc2VsZik6CisgICAgICAgIHN0YXR1cywgbXNnID0gc2VsZi5jb25uZWN0KCkKKwor ICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIHN0YXR1cywgbXNnCisK KyAgICAgICAgc3RhdHVzLCBtc2cgPSBzZWxmLnNlYXJjaF9sZGFwX3VzZXIoKQorCisgICAgICAg IGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICByZXR1cm4gc3RhdHVzLCBtc2cKKworICAgICAg ICByZXR1cm4gc2VsZi5fX2F1dG9fY3JlYXRlX3VzZXIoKQorCisgICAgZGVmIGNvbm5lY3Qoc2Vs Zik6CisgICAgICAgICIiIlNldHVwIHRoZSBjb25uZWN0aW9uIHRvIHRoZSBMREFQIHNlcnZlciBh bmQgYXV0aGVudGljYXRlIHRoZSB1c2VyLgorICAgICAgICAiIiIKKworICAgICAgICAjIFBhcnNl IHRoZSBzZXJ2ZXIgVVJJCisgICAgICAgIHVyaSA9IGdldGF0dHIoY29uZmlnLCAnTERBUF9TRVJW RVJfVVJJJywgTm9uZSkKKworICAgICAgICBpZiB1cmk6CisgICAgICAgICAgICB1cmkgPSB1cmxw YXJzZSh1cmkpCisKKyAgICAgICAgIyBDcmVhdGUgdGhlIFRMUyBjb25maWd1cmF0aW9uIG9iamVj dCBpZiByZXF1aXJlZAorICAgICAgICB0bHMgPSBOb25lCisgICAgICAgIGlmIHVyaS5zY2hlbWUg PT0gJ2xkYXBzJyBvciBjb25maWcuTERBUF9VU0VfU1RBUlRUTFM6CisKKyAgICAgICAgICAgIGNh X2NlcnRfZmlsZSA9IGdldGF0dHIoY29uZmlnLCAnTERBUF9DQV9DRVJUX0ZJTEUnLCBOb25lKQor ICAgICAgICAgICAgY2VydF9maWxlID0gZ2V0YXR0cihjb25maWcsICdMREFQX0NFUlRfRklMRScs IE5vbmUpCisgICAgICAgICAgICBrZXlfZmlsZSA9IGdldGF0dHIoY29uZmlnLCAnTERBUF9LRVlf RklMRScsIE5vbmUpCisgICAgICAgICAgICBjZXJ0X3ZhbGlkYXRlID0gc3NsLkNFUlRfTk9ORQor CisgICAgICAgICAgICBpZiBjYV9jZXJ0X2ZpbGUgYW5kIGNlcnRfZmlsZSBhbmQga2V5X2ZpbGU6 CisgICAgICAgICAgICAgICAgY2VydF92YWxpZGF0ZSA9IHNzbC5DRVJUX1JFUVVJUkVECisKKyAg ICAgICAgICAgIHRscyA9IFRscygKKyAgICAgICAgICAgICAgICBsb2NhbF9wcml2YXRlX2tleV9m aWxlPWtleV9maWxlLAorICAgICAgICAgICAgICAgIGxvY2FsX2NlcnRpZmljYXRlX2ZpbGU9Y2Vy dF9maWxlLAorICAgICAgICAgICAgICAgIHZhbGlkYXRlPWNlcnRfdmFsaWRhdGUsCisgICAgICAg ICAgICAgICAgdmVyc2lvbj1zc2wuUFJPVE9DT0xfVExTdjEsCisgICAgICAgICAgICAgICAgY2Ff Y2VydHNfZmlsZT1jYV9jZXJ0X2ZpbGUpCisKKyAgICAgICAgIyBDcmVhdGUgdGhlIHNlcnZlciBv YmplY3QKKyAgICAgICAgc2VydmVyID0gU2VydmVyKHVyaS5ob3N0bmFtZSwKKyAgICAgICAgICAg ICAgICAgICAgICAgIHBvcnQ9dXJpLnBvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICB1c2Vf c3NsPSh1cmkuc2NoZW1lID09ICdsZGFwcycpLAorICAgICAgICAgICAgICAgICAgICAgICAgZ2V0 X2luZm89QUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgdGxzPXRscywKKyAgICAgICAgICAg ICAgICAgICAgICAgIGNvbm5lY3RfdGltZW91dD1jb25maWcuTERBUF9DT05ORUNUSU9OX1RJTUVP VVQpCisKKyAgICAgICAgIyBDcmVhdGUgdGhlIGNvbm5lY3Rpb24KKyAgICAgICAgdHJ5OgorICAg ICAgICAgICAgdXNlcl9kbiA9ICJ7MH09ezF9LHsyfSIuZm9ybWF0KGNvbmZpZy5MREFQX1VTRVJO QU1FX0FUVFJJQlVURSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzZWxmLnVzZXJuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbmZpZy5MREFQX0JBU0VfRE4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICApCisgICAgICAgICAgICBzZWxmLmNvbm4gPSBDb25uZWN0aW9uKHNlcnZlciwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcj11c2VyX2RuLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzd29yZD1zZWxmLnBhc3N3b3JkLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvX2JpbmQ9VHJ1ZQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICApCisKKyAgICAgICAgZXhjZXB0IExEQVBTb2NrZXRP cGVuRXJyb3IgYXMgZToKKyAgICAgICAgICAgIGN1cnJlbnRfYXBwLmxvZ2dlci5leGNlcHRpb24o CisgICAgICAgICAgICAgICAgIkVycm9yIGNvbm5lY3RpbmcgdG8gdGhlIExEQVAgc2VydmVyOiAl c1xuIiAlIGUpCisgICAgICAgICAgICByZXR1cm4gRmFsc2UsICJFcnJvciBjb25uZWN0aW5nIHRv IHRoZSBMREFQIHNlcnZlcjoiIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIiAlc1xuIiAl IGUuYXJnc1swXQorICAgICAgICBleGNlcHQgTERBUEJpbmRFcnJvciBhcyBlOgorCisgICAgICAg ICAgICBjdXJyZW50X2FwcC5sb2dnZXIuZXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICJFcnJv ciBiaW5kaW5nIHRvIHRoZSBMREFQIHNlcnZlcjogJXNcbiIgJSBlKQorICAgICAgICAgICAgcmV0 dXJuIEZhbHNlLCAiRXJyb3IgYmluZGluZyB0byB0aGUgTERBUCBzZXJ2ZXI6IiBcCisgICAgICAg ICAgICAgICAgICAgICAgICAgICIgJXNcbiIgJSBlLmFyZ3NbMF0KKworICAgICAgICAjIEVuYWJs ZSBUTFMgaWYgU1RBUlRUTFMgaXMgY29uZmlndXJlZAorICAgICAgICBpZiBub3QgdXJpLnNjaGVt ZSA9PSAnbGRhcHMnIGFuZCBjb25maWcuTERBUF9VU0VfU1RBUlRUTFM6CisgICAgICAgICAgICB0 cnk6CisgICAgICAgICAgICAgICAgc2VsZi5jb25uLnN0YXJ0X3RscygpCisgICAgICAgICAgICBl eGNlcHQgTERBUFN0YXJ0VExTRXJyb3IgYXMgZToKKyAgICAgICAgICAgICAgICBjdXJyZW50X2Fw cC5sb2dnZXIuZXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICAgICAiRXJyb3Igc3RhcnRpbmcg VExTOiAlc1xuIiAlIGUpCisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlLCAiRXJyb3Igc3Rh cnRpbmcgVExTOiAlc1xuIiAlIGUuYXJnc1swXQorCisgICAgZGVmIF9fYXV0b19jcmVhdGVfdXNl cihzZWxmKToKKyAgICAgICAgaWYgY29uZmlnLkxEQVBfQVVUT19DUkVBVEVfVVNFUjoKKyAgICAg ICAgICAgIHVzZXIgPSBVc2VyLnF1ZXJ5LmZpbHRlcl9ieSgKKyAgICAgICAgICAgICAgICB1c2Vy bmFtZT1zZWxmLnVzZXJuYW1lKS5maXJzdCgpCisgICAgICAgICAgICBpZiB1c2VyIGlzIE5vbmU6 CisgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZV91c2VyKHsKKyAgICAgICAgICAgICAgICAg ICAgJ3VzZXJuYW1lJzogc2VsZi51c2VybmFtZSwKKyAgICAgICAgICAgICAgICAgICAgJ2VtYWls JzogJycsCisgICAgICAgICAgICAgICAgICAgICdyb2xlJzogMiwKKyAgICAgICAgICAgICAgICAg ICAgJ2FjdGl2ZSc6IFRydWUsCisgICAgICAgICAgICAgICAgICAgICduZXdQYXNzd29yZCc6IHNl bGYucGFzc3dvcmQsCisgICAgICAgICAgICAgICAgICAgICdjb25maXJtUGFzc3dvcmQnOiBzZWxm LnBhc3N3b3JkCisgICAgICAgICAgICAgICAgfSkKKworICAgICAgICByZXR1cm4gVHJ1ZSwgTm9u ZQorCisgICAgZGVmIHNlYXJjaF9sZGFwX3VzZXIoc2VsZik6CisgICAgICAgICIiIkdldCBhIGxp c3Qgb2YgdXNlcnMgZnJvbSB0aGUgTERBUCBzZXJ2ZXIgYmFzZWQgb24gY29uZmlnCisgICAgICAg ICBzZWFyY2ggY3JpdGVyaWEuIiIiCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuY29u bi5zZWFyY2goc2VhcmNoX2Jhc2U9Y29uZmlnLkxEQVBfU0VBUkNIX0JBU0VfRE4sCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaF9maWx0ZXI9Y29uZmlnLkxEQVBfU0VBUkNIX0ZJ TFRFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoX3Njb3BlPWNvbmZpZy5M REFQX1NFQVJDSF9TQ09QRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRl cz1BTExfQVRUUklCVVRFUworICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCisKKyAgICAg ICAgZXhjZXB0IExEQVBJbnZhbGlkU2NvcGVFcnJvciBhcyBlOgorICAgICAgICAgICAgY3VycmVu dF9hcHAubG9nZ2VyLmV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAiRXJyb3Igc2VhcmNoaW5n IHRoZSBMREFQIGRpcmVjdG9yeTogJXNcbiIgJSBlKQorICAgICAgICAgICAgcmV0dXJuIEZhbHNl LCAiRXJyb3Igc2VhcmNoaW5nIHRoZSBMREFQIGRpcmVjdG9yeToiIFwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgIiAlc1xuIiAlIGUuYXJnc1swXQorICAgICAgICBleGNlcHQgTERBUEF0dHJp YnV0ZUVycm9yIGFzIGU6CisgICAgICAgICAgICBjdXJyZW50X2FwcC5sb2dnZXIuZXhjZXB0aW9u KCJFcnJvciBzZWFyY2hpbmcgdGhlIExEQVAgZGlyZWN0b3J5OiIKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIiAlc1xuIiAlIGUpCisgICAgICAgICAgICByZXR1cm4g RmFsc2UsICJFcnJvciBzZWFyY2hpbmcgdGhlIExEQVAgZGlyZWN0b3J5OiIgXAorICAgICAgICAg ICAgICAgICAgICAgICAgICAiICVzXG4iICUgZS5hcmdzWzBdCisgICAgICAgIGV4Y2VwdCBMREFQ SW52YWxpZEZpbHRlckVycm9yIGFzIGU6CisgICAgICAgICAgICBjdXJyZW50X2FwcC5sb2dnZXIu ZXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICJFcnJvciBzZWFyY2hpbmcgdGhlIExEQVAgZGly ZWN0b3J5OiAlc1xuIiAlIGUpCisgICAgICAgICAgICByZXR1cm4gRmFsc2UsICJFcnJvciBzZWFy Y2hpbmcgdGhlIExEQVAgZGlyZWN0b3J5OiIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAi ICVzXG4iICUgZS5hcmdzWzBdCisKKyAgICAgICAgdXNlcnMgPSBbXQorICAgICAgICBmb3IgZW50 cnkgaW4gc2VsZi5jb25uLmVudHJpZXM6CisgICAgICAgICAgICBpZiBjb25maWcuTERBUF9VU0VS TkFNRV9BVFRSSUJVVEUgaW4gZW50cnkgYW5kIHNlbGYudXNlcm5hbWUgPT0gXAorICAgICAgICAg ICAgICAgICAgICBlbnRyeVtjb25maWcuTERBUF9VU0VSTkFNRV9BVFRSSUJVVEVdLnZhbHVlOgor ICAgICAgICAgICAgICAgIHJldHVybiBUcnVlLCBOb25lCisgICAgICAgIHJldHVybiBGYWxzZSwg Tm9uZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYXV0aGVudGljYXRlL3JlZ2lzdHJ5LnB5IGIv d2ViL3BnYWRtaW4vYXV0aGVudGljYXRlL3JlZ2lzdHJ5LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMC4uOTA1ZjU1NjQzCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRt aW4vYXV0aGVudGljYXRlL3JlZ2lzdHJ5LnB5CkBAIC0wLDAgKzEsNjUgQEAKKyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjCisjCisjIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKyMKKyMgQ29weXJpZ2h0 IChDKSAyMDEzIC0gMjAyMCwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorIyBUaGlzIHNv ZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKyMKKyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjCisKKyIiIkV4dGVybmFsIEF1dGhlbnRpY2F0aW9uIFJlZ2lzdHJ5LiIiIgor CisKK2Zyb20gZmxhc2tfYmFiZWxleCBpbXBvcnQgZ2V0dGV4dAorZnJvbSBhYmMgaW1wb3J0IEFC Q01ldGEKKworCitkZWYgX2RlY29yYXRlX2Nsc19uYW1lKG1vZHVsZV9uYW1lKToKKyAgICBsZW5n dGggPSBsZW4oX19wYWNrYWdlX18pICsgMQorCisgICAgaWYgbGVuKG1vZHVsZV9uYW1lKSA+IGxl bmd0aCBhbmQgbW9kdWxlX25hbWUuc3RhcnRzd2l0aChfX3BhY2thZ2VfXyk6CisgICAgICAgIHJl dHVybiBtb2R1bGVfbmFtZVtsZW5ndGg6XQorCisgICAgcmV0dXJuIG1vZHVsZV9uYW1lCisKKwor Y2xhc3MgQXV0aFNvdXJjZVJlZ2lzdHJ5KEFCQ01ldGEpOgorICAgIHJlZ2lzdHJ5ID0gTm9uZQor ICAgIGF1dGhfc291cmNlcyA9IGRpY3QoKQorCisgICAgZGVmIF9faW5pdF9fKGNscywgbmFtZSwg YmFzZXMsIGQpOgorCisgICAgICAgICMgUmVnaXN0ZXIgdGhpcyB0eXBlIG9mIGF1dGhfc291cmNl cywgYmFzZWQgb24gdGhlIG1vZHVsZSBuYW1lCisgICAgICAgICMgQXZvaWQgcmVnaXN0ZXJpbmcg dGhlIEJhc2VBdXRoZW50aWNhdGlvbiBpdHNlbGYKKworICAgICAgICBBdXRoU291cmNlUmVnaXN0 cnkucmVnaXN0cnlbX2RlY29yYXRlX2Nsc19uYW1lKGRbJ19fbW9kdWxlX18nXSldID0gY2xzCisg ICAgICAgIEFCQ01ldGEuX19pbml0X18oY2xzLCBuYW1lLCBiYXNlcywgZCkKKworICAgIEBjbGFz c21ldGhvZAorICAgIGRlZiBjcmVhdGUoY2xzLCBuYW1lLCAqKmt3YXJncyk6CisKKyAgICAgICAg aWYgbmFtZSBpbiBBdXRoU291cmNlUmVnaXN0cnkuYXV0aF9zb3VyY2VzOgorICAgICAgICAgICAg cmV0dXJuIEF1dGhTb3VyY2VSZWdpc3RyeS5hdXRoX3NvdXJjZXNbbmFtZV0KKworICAgICAgICBp ZiBuYW1lIGluIEF1dGhTb3VyY2VSZWdpc3RyeS5yZWdpc3RyeToKKyAgICAgICAgICAgIEF1dGhT b3VyY2VSZWdpc3RyeS5hdXRoX3NvdXJjZXNbbmFtZV0gPSBcCisgICAgICAgICAgICAgICAgKEF1 dGhTb3VyY2VSZWdpc3RyeS5yZWdpc3RyeVtuYW1lXSkoKiprd2FyZ3MpCisgICAgICAgICAgICBy ZXR1cm4gQXV0aFNvdXJjZVJlZ2lzdHJ5LmF1dGhfc291cmNlc1tuYW1lXQorCisgICAgICAgIHJh aXNlIE5vdEltcGxlbWVudGVkRXJyb3IoCisgICAgICAgICAgICBnZXR0ZXh0KAorICAgICAgICAg ICAgICAgICJBdXRoZW50aWNhdGlvbiBzb3VyY2UgJ3swfScgaGFzIG5vdCBiZWVuIGltcGxlbWVu dGVkLiIKKyAgICAgICAgICAgICkuZm9ybWF0KG5hbWUpCisgICAgICAgICkKKworICAgIEBjbGFz c21ldGhvZAorICAgIGRlZiBsb2FkX2F1dGhfc291cmNlcyhjbHMpOgorICAgICAgICAjIEluaXRp YWxpemUgdGhlIHJlZ2lzdHJ5IG9ubHkgaWYgaXQgaGFzIG5vdCB5ZXQgYmVlbiBpbml0aWFsaXpl ZAorICAgICAgICBpZiBBdXRoU291cmNlUmVnaXN0cnkucmVnaXN0cnkgaXMgTm9uZToKKyAgICAg ICAgICAgIEF1dGhTb3VyY2VSZWdpc3RyeS5yZWdpc3RyeSA9IGRpY3QoKQorCisgICAgICAgIGZy b20gaW1wb3J0bGliIGltcG9ydCBpbXBvcnRfbW9kdWxlCisgICAgICAgIGZyb20gd2Vya3pldWcu dXRpbHMgaW1wb3J0IGZpbmRfbW9kdWxlcworCisgICAgICAgIGZvciBtb2R1bGVfbmFtZSBpbiBm aW5kX21vZHVsZXMoX19wYWNrYWdlX18sIFRydWUpOgorICAgICAgICAgICAgbW9kdWxlID0gaW1w b3J0X21vZHVsZShtb2R1bGVfbmFtZSkKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2F1dGhlbnRp Y2F0ZS90ZXN0cy9fX2luaXRfXy5weSBiL3dlYi9wZ2FkbWluL2F1dGhlbnRpY2F0ZS90ZXN0cy9f X2luaXRfXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAuLjdhZjQ1YjFi NQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2F1dGhlbnRpY2F0ZS90ZXN0cy9fX2lu aXRfXy5weQpAQCAtMCwwICsxLDggQEAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjCisjIHBnQWRtaW4g NCAtIFBvc3RncmVTUUwgVG9vbHMKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAyMCwgVGhl IHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorIyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVu ZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmRpZmYgLS1n aXQgYS93ZWIvcGdhZG1pbi9hdXRoZW50aWNhdGUvdGVzdHMvdGVzdF9sZGFwLnB5IGIvd2ViL3Bn YWRtaW4vYXV0aGVudGljYXRlL3Rlc3RzL3Rlc3RfbGRhcC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAuLjAwMGYyZDBiNgotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2Fk bWluL2F1dGhlbnRpY2F0ZS90ZXN0cy90ZXN0X2xkYXAucHkKQEAgLTAsMCArMSw2OCBAQAorIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMKKyMKKyMgcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworIworIyBD b3B5cmlnaHQgKEMpIDIwMTMgLSAyMDIwLCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisj IFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQor IworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZnJvbSBwZ2FkbWluLnV0aWxzLnJvdXRlIGltcG9ydCBC YXNlVGVzdEdlbmVyYXRvcgorZnJvbSBwZ2FkbWluLnV0aWxzIGltcG9ydCBzZXJ2ZXJfdXRpbHMg YXMgc2VydmVyX3V0aWxzCitmcm9tIHJlZ3Jlc3Npb24gaW1wb3J0IHBhcmVudF9ub2RlX2RpY3QK K2ltcG9ydCBzaW1wbGVqc29uIGFzIGpzb24KKworCitjbGFzcyBEYXNoYm9hcmRHcmFwaHNUZXN0 Q2FzZShCYXNlVGVzdEdlbmVyYXRvcik6CisgICAgIiIiCisgICAgVGhpcyBjbGFzcyB2YWxpZGF0 ZXMgdGhlIHZlcnNpb24gaW4gcmFuZ2UgZnVuY3Rpb25hbGl0eQorICAgIGJ5IGRlZmluaW5nIGRp ZmZlcmVudCB2ZXJzaW9uIHNjZW5hcmlvczsgd2hlcmUgZGljdCBvZgorICAgIHBhcmFtZXRlcnMg ZGVzY3JpYmVzIHRoZSBzY2VuYXJpbyBhcHBlbmRlZCBieSB0ZXN0IG5hbWUuCisgICAgIiIiCisK KyAgICBzY2VuYXJpb3MgPSBbKAorICAgICAgICAnVGVzdENhc2UgZm9yIHNlc3Npb25fc3RhdHMg Z3JhcGgnLCBkaWN0KAorICAgICAgICAgICAgZGlkPS0xLAorICAgICAgICAgICAgY2hhcnRfZGF0 YT17CisgICAgICAgICAgICAgICAgJ3Nlc3Npb25fc3RhdHMnOiBbJ1RvdGFsJywgJ0FjdGl2ZScs ICdJZGxlJ10sCisgICAgICAgICAgICB9CisgICAgICAgICkpCisgICAgXQorCisgICAgZGVmIHNl dFVwKHNlbGYpOgorICAgICAgICBwYXNzCisKKyAgICBkZWYgZ2V0U3RhdHNVcmwoc2VsZiwgc2lk PS0xLCBkaWQ9LTEsIGNoYXJ0X25hbWVzPScnKToKKyAgICAgICAgYmFzZV91cmwgPSAnL2Rhc2hi b2FyZC9kYXNoYm9hcmRfc3RhdHMnCisgICAgICAgIGJhc2VfdXJsID0gYmFzZV91cmwgKyAnLycg KyBzdHIoc2lkKQorICAgICAgICBiYXNlX3VybCArPSAnLycgKyBzdHIoZGlkKSBpZiBkaWQgPiAw IGVsc2UgJycKKyAgICAgICAgYmFzZV91cmwgKz0gJz9jaGFydF9uYW1lcz0nICsgY2hhcnRfbmFt ZXMKKyAgICAgICAgcmV0dXJuIGJhc2VfdXJsCisKKyAgICBkZWYgcnVuVGVzdChzZWxmKToKKyAg ICAgICAgc2VsZi5zZXJ2ZXJfaWQgPSBwYXJlbnRfbm9kZV9kaWN0WyJzZXJ2ZXIiXVstMV1bInNl cnZlcl9pZCJdCisgICAgICAgIHNlcnZlcl9yZXNwb25zZSA9IHNlcnZlcl91dGlscy5jb25uZWN0 X3NlcnZlcihzZWxmLCBzZWxmLnNlcnZlcl9pZCkKKyAgICAgICAgaWYgc2VydmVyX3Jlc3BvbnNl WyJpbmZvIl0gPT0gIlNlcnZlciBjb25uZWN0ZWQuIjoKKworICAgICAgICAgICAgdXJsID0gc2Vs Zi5nZXRTdGF0c1VybChzZWxmLnNlcnZlcl9pZCwgc2VsZi5kaWQsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICIsIi5qb2luKHNlbGYuY2hhcnRfZGF0YS5rZXlzKCkpKQorICAg ICAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnRlc3Rlci5nZXQodXJsKQorICAgICAgICAgICAgc2Vs Zi5hc3NlcnRFcXVhbHMocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkKKworICAgICAgICAgICAg cmVzcF9kYXRhID0ganNvbi5sb2FkcyhyZXNwb25zZS5kYXRhKQorCisgICAgICAgICAgICAjIEFs bCByZXF1ZXN0ZWQgY2hhcnRzIHJlY2VpdmVkCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs cyhsZW4ocmVzcF9kYXRhLmtleXMoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBs ZW4oc2VsZi5jaGFydF9kYXRhLmtleXMoKSkpCisKKyAgICAgICAgICAgICMgQWxsIHJlcXVlc3Rl ZCBjaGFydHMgZGF0YSByZWNlaXZlZAorICAgICAgICAgICAgZm9yIGNoYXJ0X25hbWUsIGNoYXJ0 X3ZhbHMgaW4gc2VsZi5jaGFydF9kYXRhLml0ZW1zKCk6CisgICAgICAgICAgICAgICAgc2VsZi5h c3NlcnRFcXVhbHMoc2V0KHJlc3BfZGF0YVtjaGFydF9uYW1lXS5rZXlzKCkpLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHNldChjaGFydF92YWxzKSkKKworICAgICAgICBlbHNl OgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJFcnJvciB3aGlsZSBjb25uZWN0aW5nIHNl cnZlciB0byBhZGQgdGhlIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgZGF0YWJhc2Uu IikKKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgcGFzcwpkaWZmIC0tZ2l0IGEv d2ViL3BnYWRtaW4vYnJvd3Nlci9fX2luaXRfXy5weSBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvX19p bml0X18ucHkKaW5kZXggMzBhZjNlMTFiLi5mYzQwMDVlZDAgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvX19pbml0X18ucHkKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9fX2luaXRf Xy5weQpAQCAtNTgwLDEyICs1ODAsMTggQEAgZGVmIGluZGV4KCk6CiAKICAgICAgICAgICAgICAg ICBmbGFzaChtc2csICd3YXJuaW5nJykKIAorICAgIGF1dGhfb25seV9pbnRlcm5hbCA9IEZhbHNl CisgICAgaWYgbGVuKGNvbmZpZy5BVVRIRU5USUNBVElPTl9TT1VSQ0VTKSA9PSAxXAorICAgICAg ICAgICAgYW5kICdpbnRlcm5hbCcgaW4gY29uZmlnLkFVVEhFTlRJQ0FUSU9OX1NPVVJDRVM6Cisg ICAgICAgIGF1dGhfb25seV9pbnRlcm5hbCA9IFRydWUKKwogICAgIHJlc3BvbnNlID0gUmVzcG9u c2UocmVuZGVyX3RlbXBsYXRlKAogICAgICAgICBNT0RVTEVfTkFNRSArICIvaW5kZXguaHRtbCIs Ci0gICAgICAgIHVzZXJuYW1lPWN1cnJlbnRfdXNlci5lbWFpbCwKKyAgICAgICAgdXNlcm5hbWU9 Y3VycmVudF91c2VyLnVzZXJuYW1lLAogICAgICAgICBpc19hZG1pbj1jdXJyZW50X3VzZXIuaGFz X3JvbGUoIkFkbWluaXN0cmF0b3IiKSwKICAgICAgICAgbG9nb3V0X3VybD1fZ2V0X2xvZ291dF91 cmwoKSwKLSAgICAgICAgXz1nZXR0ZXh0CisgICAgICAgIF89Z2V0dGV4dCwKKyAgICAgICAgYXV0 aF9vbmx5X2ludGVybmFsPWF1dGhfb25seV9pbnRlcm5hbAogICAgICkpCiAKICAgICAjIFNldCB0 aGUgbGFuZ3VhZ2UgY29va2llIGFmdGVyIGxvZ2luLCBzbyBuZXh0IHRpbWUgdGhlIHVzZXIgd2ls bCBoYXZlIHRoYXQKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvdGVtcGxhdGVzL2Jy b3dzZXIvaW5kZXguaHRtbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvdGVtcGxhdGVzL2Jyb3dzZXIv aW5kZXguaHRtbAppbmRleCA2ODJjMjNkNjUuLmY4OTQ2MjNlMyAxMDA2NDQKLS0tIGEvd2ViL3Bn YWRtaW4vYnJvd3Nlci90ZW1wbGF0ZXMvYnJvd3Nlci9pbmRleC5odG1sCisrKyBiL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvdGVtcGxhdGVzL2Jyb3dzZXIvaW5kZXguaHRtbApAQCAtMTQyLDYgKzE0Miw3 IEBAIHdpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbihlKXsKICAgICAgICAgICAgICAgICA8YSBocmVm PSIjIiBjbGFzcz0ibmF2LWxpbmsgZHJvcGRvd24tdG9nZ2xlIiBkYXRhLXRvZ2dsZT0iZHJvcGRv d24iCiAgICAgICAgICAgICAgICAgICAgcm9sZT0iYnV0dG9uIiBhcmlhLWV4cGFuZGVkPSJmYWxz ZSIgaWQ9Im5hdmJhci11c2VyIj48L2E+CiAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJkcm9w ZG93bi1tZW51IGRyb3Bkb3duLW1lbnUtcmlnaHQiIHJvbGU9Im1lbnUiPgorICAgICAgICAgICAg ICAgICAgICB7JSBpZiBhdXRoX29ubHlfaW50ZXJuYWwgJX0KICAgICAgICAgICAgICAgICAgICAg PGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImRyb3Bkb3duLWl0ZW0iIGhy ZWY9IiMiIG9uY2xpY2s9InBnQWRtaW4uQnJvd3Nlci5Vc2VyTWFuYWdlbWVudC5jaGFuZ2VfcGFz c3dvcmQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICd7eyB1cmxfZm9yKCdicm93c2VyLmNo YW5nZV9wYXNzd29yZCcpIH19JwpAQCAtMTQ5LDYgKzE1MCw3IEBAIHdpbmRvdy5vbmxvYWQgPSBm dW5jdGlvbihlKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBfKCdDaGFuZ2UgUGFz c3dvcmQnKSB9fQogICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAg ICAgICA8L2xpPgorICAgICAgICAgICAgICAgICAgICB7JSBlbmRpZiAlfQogICAgICAgICAgICAg ICAgICAgICA8bGkgY2xhc3M9ImRyb3Bkb3duLWRpdmlkZXIiPjwvbGk+CiAgICAgICAgICAgICAg ICAgICAgIHslIGlmIGlzX2FkbWluICV9CiAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBjbGFz cz0iZHJvcGRvd24taXRlbSIgaHJlZj0iIyIgb25jbGljaz0icGdBZG1pbi5Ccm93c2VyLlVzZXJN YW5hZ2VtZW50LnNob3dfdXNlcnMoKSI+e3sgXygnVXNlcnMnKSB9fTwvYT48L2xpPgpkaWZmIC0t Z2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci90ZXN0cy90ZXN0X2NoYW5nZV9wYXNzd29yZC5weSBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvdGVzdHMvdGVzdF9jaGFuZ2VfcGFzc3dvcmQucHkKaW5kZXgg MDRjNDlhMjNlLi5mYjg2ZTRkZmQgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvdGVz dHMvdGVzdF9jaGFuZ2VfcGFzc3dvcmQucHkKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci90ZXN0 cy90ZXN0X2NoYW5nZV9wYXNzd29yZC5weQpAQCAtOTUsNiArOTUsNyBAQCBjbGFzcyBDaGFuZ2VQ YXNzd29yZFRlc3RDYXNlKEJhc2VUZXN0R2VuZXJhdG9yKToKICAgICAgICAgICAgIHJlc3BvbnNl ID0gc2VsZi50ZXN0ZXIucG9zdCgKICAgICAgICAgICAgICAgICAnL3VzZXJfbWFuYWdlbWVudC91 c2VyLycsCiAgICAgICAgICAgICAgICAgZGF0YT1qc29uLmR1bXBzKGRpY3QoCisgICAgICAgICAg ICAgICAgICAgIHVzZXJuYW1lPXNlbGYudXNlcm5hbWUsCiAgICAgICAgICAgICAgICAgICAgIGVt YWlsPXNlbGYudXNlcm5hbWUsCiAgICAgICAgICAgICAgICAgICAgIG5ld1Bhc3N3b3JkPXNlbGYu cGFzc3dvcmQsCiAgICAgICAgICAgICAgICAgICAgIGNvbmZpcm1QYXNzd29yZD1zZWxmLnBhc3N3 b3JkLApkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci90ZXN0cy90ZXN0X2xkYXBfbG9n aW4ucHkgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Rlc3RzL3Rlc3RfbGRhcF9sb2dpbi5weQpuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAuLjJmNTlkZmZmNgotLS0gL2Rldi9udWxs CisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvdGVzdHMvdGVzdF9sZGFwX2xvZ2luLnB5CkBAIC0w LDAgKzEsODggQEAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjCisjIHBnQWRtaW4gNCAtIFBvc3RncmVT UUwgVG9vbHMKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAyMCwgVGhlIHBnQWRtaW4gRGV2 ZWxvcG1lbnQgVGVhbQorIyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0 Z3JlU1FMIExpY2VuY2UKKyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2ltcG9ydCBjb25maWcgYXMg YXBwX2NvbmZpZworZnJvbSBwZ2FkbWluLnV0aWxzLnJvdXRlIGltcG9ydCBCYXNlVGVzdEdlbmVy YXRvcgorZnJvbSByZWdyZXNzaW9uLnB5dGhvbl90ZXN0X3V0aWxzIGltcG9ydCB0ZXN0X3V0aWxz IGFzIHV0aWxzCitmcm9tIHJlZ3Jlc3Npb24udGVzdF9zZXR1cCBpbXBvcnQgY29uZmlnX2RhdGEK KworCitjbGFzcyBMREFQTG9naW5UZXN0Q2FzZShCYXNlVGVzdEdlbmVyYXRvcik6CisgICAgIiIi CisgICAgVGhpcyBjbGFzcyBjaGVja3MgbGRhcCBsb2dpbiBmdW5jdGlvbmFsaXR5CisgICAgYnkg dmFsaWRhdGluZyBkaWZmZXJlbnQgc2NlbmFyaW9zLgorICAgICIiIgorCisgICAgc2NlbmFyaW9z ID0gWworICAgICAgICAoJ0xEQVAgQXV0aGVudGljYXRpb24nLCBkaWN0KAorICAgICAgICAgICAg Y29uZmlnX2tleV9wYXJhbT0nbGRhcCcsCisgICAgICAgICAgICBpc19ncmF2dGFyX2ltYWdlX2No ZWNrPUZhbHNlKSksCisgICAgICAgICgnTERBUCBXaXRoIFNTTCBBdXRoZW50aWNhdGlvbicsIGRp Y3QoCisgICAgICAgICAgICBjb25maWdfa2V5X3BhcmFtPSdsZGFwX3dpdGhfc3NsJywKKyAgICAg ICAgICAgIGlzX2dyYXZ0YXJfaW1hZ2VfY2hlY2s9RmFsc2UpKSwKKyAgICAgICAgKCdMREFQIFdp dGggVExTIEF1dGhlbnRpY2F0aW9uJywgZGljdCgKKyAgICAgICAgICAgIGNvbmZpZ19rZXlfcGFy YW09J2xkYXBfd2l0aF90bHMnLAorICAgICAgICAgICAgaXNfZ3JhdnRhcl9pbWFnZV9jaGVjaz1G YWxzZSkpLAorICAgIF0KKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKGNs cyk6CisgICAgICAgICIiIgorICAgICAgICBXZSBuZWVkIHRvIGxvZ291dCB0aGUgdGVzdCBjbGll bnQKKyAgICAgICAgYXMgd2UgYXJlIHRlc3RpbmcgbGRhcCBsb2dpbiBzY2VuYXJpb3MuCisgICAg ICAgICIiIgorICAgICAgICBjbHMudGVzdGVyLmxvZ291dCgpCisKKyAgICBkZWYgc2V0VXAoc2Vs Zik6CisgICAgICAgIGlmIHR5cGUoY29uZmlnX2RhdGFbJ2xkYXBfY29uZmlnJ10pIGlzIGxpc3Qg YW5kXAorICAgICAgICAgICAgICAgIGxlbihjb25maWdfZGF0YVsnbGRhcF9jb25maWcnXSkgPiAw IGFuZFwKKyAgICAgICAgICAgICAgICBzZWxmLmNvbmZpZ19rZXlfcGFyYW0gaW4gY29uZmlnX2Rh dGFbJ2xkYXBfY29uZmlnJ11bMF06CisgICAgICAgICAgICBsZGFwX2NvbmZpZyA9IGNvbmZpZ19k YXRhWydsZGFwX2NvbmZpZyddWzBdW3NlbGYuY29uZmlnX2tleV9wYXJhbV0KKworICAgICAgICAg ICAgYXBwX2NvbmZpZy5BVVRIRU5USUNBVElPTl9TT1VSQ0VTID0gWydsZGFwJ10KKyAgICAgICAg ICAgIGFwcF9jb25maWcuTERBUF9BVVRPX0NSRUFURV9VU0VSID0gVHJ1ZQorICAgICAgICAgICAg YXBwX2NvbmZpZy5MREFQX1NFUlZFUl9VUkkgPSBsZGFwX2NvbmZpZ1sndXJpJ10KKyAgICAgICAg ICAgIGFwcF9jb25maWcuTERBUF9CQVNFX0ROID0gbGRhcF9jb25maWdbJ2Jhc2VfZG4nXQorICAg ICAgICAgICAgYXBwX2NvbmZpZy5MREFQX1VTRVJOQU1FX0FUVFJJQlVURSA9IGxkYXBfY29uZmln WworICAgICAgICAgICAgICAgICd1c2VybmFtZV9hdHInXQorICAgICAgICAgICAgYXBwX2NvbmZp Zy5MREFQX1NFQVJDSF9CQVNFX0ROID0gbGRhcF9jb25maWdbCisgICAgICAgICAgICAgICAgJ3Nl YXJjaF9iYXNlX2RuJ10KKyAgICAgICAgICAgIGFwcF9jb25maWcuTERBUF9TRUFSQ0hfRklMVEVS ID0gbGRhcF9jb25maWdbJ3NlYXJjaF9maWx0ZXInXQorICAgICAgICAgICAgYXBwX2NvbmZpZy5M REFQX1VTRV9TVEFSVFRMUyA9IGxkYXBfY29uZmlnWyd1c2Vfc3RhcnR0bHMnXQorICAgICAgICAg ICAgYXBwX2NvbmZpZy5MREFQX0NBX0NFUlRfRklMRSA9IGxkYXBfY29uZmlnWydjYV9jZXJ0X2Zp bGUnXQorICAgICAgICAgICAgYXBwX2NvbmZpZy5MREFQX0NFUlRfRklMRSA9IGxkYXBfY29uZmln WydjZXJ0X2ZpbGUnXQorICAgICAgICAgICAgYXBwX2NvbmZpZy5MREFQX0tFWV9GSUxFID0gbGRh cF9jb25maWdbJ2tleV9maWxlJ10KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuc2tp cFRlc3QoCisgICAgICAgICAgICAgICAgIkxEQVAgY29uZmlnIG5vdCBzZXQuIgorICAgICAgICAg ICAgKQorCisgICAgZGVmIHJ1blRlc3Qoc2VsZik6CisgICAgICAgICIiIlRoaXMgZnVuY3Rpb24g Y2hlY2tzIGxvZ2luIGZ1bmN0aW9uYWxpdHkuIiIiCisgICAgICAgIHVzZXJuYW1lID0gY29uZmln X2RhdGFbJ3BnQWRtaW40X2xkYXBfY3JlZGVudGlhbHMnXVsnbG9naW5fdXNlcm5hbWUnXQorICAg ICAgICBwYXNzd29yZCA9IGNvbmZpZ19kYXRhWydwZ0FkbWluNF9sZGFwX2NyZWRlbnRpYWxzJ11b J2xvZ2luX3Bhc3N3b3JkJ10KKworICAgICAgICByZXMgPSBzZWxmLnRlc3Rlci5sb2dpbih1c2Vy bmFtZSwgcGFzc3dvcmQsIFRydWUpCisKKyAgICAgICAgcmVzcGRhdGEgPSAnR3JhdmF0YXIgaW1h Z2UgZm9yICVzJyAlXAorICAgICAgICAgICAgICAgICAgIGNvbmZpZ19kYXRhWydwZ0FkbWluNF9s ZGFwX2NyZWRlbnRpYWxzJ11bJ2xvZ2luX3VzZXJuYW1lJ10KKyAgICAgICAgc2VsZi5hc3NlcnRU cnVlKHJlc3BkYXRhIGluIHJlcy5kYXRhLmRlY29kZSgndXRmOCcpKQorCisgICAgZGVmIHRlYXJE b3duKHNlbGYpOgorICAgICAgICBzZWxmLnRlc3Rlci5sb2dvdXQoKQorCisgICAgQGNsYXNzbWV0 aG9kCisgICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKKyAgICAgICAgIiIiCisgICAgICAgIFdl IG5lZWQgdG8gYWdhaW4gbG9naW4gdGhlIHRlc3QgY2xpZW50IGFzIHNvb24gYXMgdGVzdCBzY2Vu YXJpb3MKKyAgICAgICAgZmluaXNoZXMuCisgICAgICAgICIiIgorICAgICAgICBjbHMudGVzdGVy LmxvZ291dCgpCisgICAgICAgIGFwcF9jb25maWcuQVVUSEVOVElDQVRJT05fU09VUkNFUyA9IFsn aW50ZXJuYWwnXQorICAgICAgICB1dGlscy5sb2dpbl90ZXN0ZXJfYWNjb3VudChjbHMudGVzdGVy KQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci90ZXN0cy90ZXN0X2xkYXBfd2l0aF9t b2NraW5nLnB5IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci90ZXN0cy90ZXN0X2xkYXBfd2l0aF9tb2Nr aW5nLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uMWFhOGY3YzMzCi0t LSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci90ZXN0cy90ZXN0X2xkYXBfd2l0 aF9tb2NraW5nLnB5CkBAIC0wLDAgKzEsODQgQEAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjCisjIHBn QWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAy MCwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorIyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVh c2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisK K2ltcG9ydCBzeXMKK2ltcG9ydCBjb25maWcgYXMgYXBwX2NvbmZpZworZnJvbSBwZ2FkbWluLnV0 aWxzLnJvdXRlIGltcG9ydCBCYXNlVGVzdEdlbmVyYXRvcgorZnJvbSByZWdyZXNzaW9uLnB5dGhv bl90ZXN0X3V0aWxzIGltcG9ydCB0ZXN0X3V0aWxzIGFzIHV0aWxzCitmcm9tIHJlZ3Jlc3Npb24u dGVzdF9zZXR1cCBpbXBvcnQgY29uZmlnX2RhdGEKK2Zyb20gcGdhZG1pbi5hdXRoZW50aWNhdGUu cmVnaXN0cnkgaW1wb3J0IEF1dGhTb3VyY2VSZWdpc3RyeQorCitpZiBzeXMudmVyc2lvbl9pbmZv IDwgKDMsIDMpOgorICAgIGZyb20gbW9jayBpbXBvcnQgcGF0Y2gKK2Vsc2U6CisgICAgZnJvbSB1 bml0dGVzdC5tb2NrIGltcG9ydCBwYXRjaAorCisKK2NsYXNzIExEQVBMb2dpbk1vY2tUZXN0Q2Fz ZShCYXNlVGVzdEdlbmVyYXRvcik6CisgICAgIiIiCisgICAgVGhpcyBjbGFzcyBjaGVja3MgbGRh cCBsb2dpbiBmdW5jdGlvbmFsaXR5IGJ5IG1vY2tpbmcKKyAgICBsZGFwIGNvbm5lY3Rpb24gYW5k IGxkYXAgc2VhcmNoIGZ1bmN0aW9uYWxpdHkuCisgICAgIiIiCisKKyAgICBzY2VuYXJpb3MgPSBb CisgICAgICAgICgnTERBUCBBdXRoZW50aWNhdGlvbiB3aXRoIEF1dG8gQ3JlYXRlIFVzZXInLCBk aWN0KAorICAgICAgICAgICAgYXV0aF9zb3VyY2U9WydsZGFwJ10sCisgICAgICAgICAgICBhdXRv X2NyZWF0ZV91c2VyPVRydWUsCisgICAgICAgICAgICB1c2VybmFtZT0nbGRhcF91c2VyJywKKyAg ICAgICAgICAgIHBhc3N3b3JkPSdsZGFwX3Bhc3MnKSksCisgICAgICAgICgnTERBUCBBdXRoZW50 aWNhdGlvbiB3aXRob3V0IEF1dG8gQ3JlYXRlIFVzZXInLCBkaWN0KAorICAgICAgICAgICAgYXV0 aF9zb3VyY2U9WydsZGFwJ10sCisgICAgICAgICAgICBhdXRvX2NyZWF0ZV91c2VyPUZhbHNlLAor ICAgICAgICAgICAgdXNlcm5hbWU9J2xkYXBfdXNlcicsCisgICAgICAgICAgICBwYXNzd29yZD0n bGRhcF9wYXNzJykpLAorICAgICAgICAoJ0xEQVAgKyBJbnRlcm5hbCBBdXRoZW50aWNhdGlvbics IGRpY3QoCisgICAgICAgICAgICBhdXRoX3NvdXJjZT1bJ2xkYXAnLCAnaW50ZXJuYWwnXSwKKyAg ICAgICAgICAgIGF1dG9fY3JlYXRlX3VzZXI9RmFsc2UsCisgICAgICAgICAgICB1c2VybmFtZT1j b25maWdfZGF0YVsKKyAgICAgICAgICAgICAgICAncGdBZG1pbjRfbG9naW5fY3JlZGVudGlhbHMn XVsnbG9naW5fdXNlcm5hbWUnXSwKKyAgICAgICAgICAgIHBhc3N3b3JkPWNvbmZpZ19kYXRhWwor ICAgICAgICAgICAgICAgICdwZ0FkbWluNF9sb2dpbl9jcmVkZW50aWFscyddWydsb2dpbl9wYXNz d29yZCddCisgICAgICAgICkpCisgICAgXQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNl dFVwQ2xhc3MoY2xzKToKKyAgICAgICAgIiIiCisgICAgICAgIFdlIG5lZWQgdG8gbG9nb3V0IHRo ZSB0ZXN0IGNsaWVudCBhcyB3ZSBhcmUgdGVzdGluZworICAgICAgICBsZGFwIGxvZ2luIHNjZW5h cmlvcy4KKyAgICAgICAgIiIiCisgICAgICAgIGNscy50ZXN0ZXIubG9nb3V0KCkKKworICAgIGRl ZiBzZXRVcChzZWxmKToKKyAgICAgICAgYXBwX2NvbmZpZy5BVVRIRU5USUNBVElPTl9TT1VSQ0VT ID0gc2VsZi5hdXRoX3NvdXJjZQorICAgICAgICBhcHBfY29uZmlnLkxEQVBfQVVUT19DUkVBVEVf VVNFUiA9IHNlbGYuYXV0b19jcmVhdGVfdXNlcgorCisgICAgQHBhdGNoLm9iamVjdChBdXRoU291 cmNlUmVnaXN0cnkucmVnaXN0cnlbJ2xkYXAnXSwgJ2Nvbm5lY3QnLAorICAgICAgICAgICAgICAg ICAgcmV0dXJuX3ZhbHVlPVtUcnVlLCAiRG9uZSJdKQorICAgIEBwYXRjaC5vYmplY3QoQXV0aFNv dXJjZVJlZ2lzdHJ5LnJlZ2lzdHJ5WydsZGFwJ10sICdzZWFyY2hfbGRhcF91c2VyJywKKyAgICAg ICAgICAgICAgICAgIHJldHVybl92YWx1ZT1bVHJ1ZSwgIkRvbmUiXSkKKyAgICBkZWYgcnVuVGVz dChzZWxmLCBjb25uX21vY2tfb2JqLCBzZWFyY2hfbW9ja19vYmopOgorICAgICAgICAiIiJUaGlz IGZ1bmN0aW9uIGNoZWNrcyBsZGFwIGxvZ2luIGZ1bmN0aW9uYWxpdHkuIiIiCisKKyAgICAgICAg cmVzID0gc2VsZi50ZXN0ZXIubG9naW4oc2VsZi51c2VybmFtZSwgc2VsZi5wYXNzd29yZCwgVHJ1 ZSkKKyAgICAgICAgcmVzcGRhdGEgPSAnR3JhdmF0YXIgaW1hZ2UgZm9yICVzJyAlIHNlbGYudXNl cm5hbWUKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlc3BkYXRhIGluIHJlcy5kYXRhLmRlY29k ZSgndXRmOCcpKQorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICBzZWxmLnRlc3Rl ci5sb2dvdXQoKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xz KToKKyAgICAgICAgIiIiCisgICAgICAgIFdlIG5lZWQgdG8gYWdhaW4gbG9naW4gdGhlIHRlc3Qg Y2xpZW50IGFzIHNvb24gYXMgdGVzdCBzY2VuYXJpb3MKKyAgICAgICAgZmluaXNoZXMuCisgICAg ICAgICIiIgorICAgICAgICBjbHMudGVzdGVyLmxvZ291dCgpCisgICAgICAgIGFwcF9jb25maWcu QVVUSEVOVElDQVRJT05fU09VUkNFUyA9IFsnaW50ZXJuYWwnXQorICAgICAgICB1dGlscy5sb2dp bl90ZXN0ZXJfYWNjb3VudChjbHMudGVzdGVyKQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vbW9k ZWwvX19pbml0X18ucHkgYi93ZWIvcGdhZG1pbi9tb2RlbC9fX2luaXRfXy5weQppbmRleCBmNTg4 ZTQwMWMuLmUzYWY2NjBiMCAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vbW9kZWwvX19pbml0X18u cHkKKysrIGIvd2ViL3BnYWRtaW4vbW9kZWwvX19pbml0X18ucHkKQEAgLTI5LDcgKzI5LDcgQEAg ZnJvbSBmbGFza19zcWxhbGNoZW15IGltcG9ydCBTUUxBbGNoZW15CiAjCiAjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIwogCi1TQ0hFTUFfVkVSU0lPTiA9IDI0CitTQ0hFTUFfVkVSU0lPTiA9IDI1CiAKICMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjCiAjCkBAIC02NiwxMyArNjYsMTUgQEAgY2xhc3MgVXNlcihkYi5Nb2RlbCwg VXNlck1peGluKToKICAgICAiIiJEZWZpbmUgYSB1c2VyIG9iamVjdCIiIgogICAgIF9fdGFibGVu YW1lX18gPSAndXNlcicKICAgICBpZCA9IGRiLkNvbHVtbihkYi5JbnRlZ2VyLCBwcmltYXJ5X2tl eT1UcnVlKQotICAgIGVtYWlsID0gZGIuQ29sdW1uKGRiLlN0cmluZygyNTYpLCB1bmlxdWU9VHJ1 ZSwgbnVsbGFibGU9RmFsc2UpCisgICAgZW1haWwgPSBkYi5Db2x1bW4oZGIuU3RyaW5nKDI1Niks IG51bGxhYmxlPVRydWUpCisgICAgdXNlcm5hbWUgPSBkYi5Db2x1bW4oZGIuU3RyaW5nKDY0KSwg dW5pcXVlPVRydWUsIG51bGxhYmxlPUZhbHNlKQogICAgIHBhc3N3b3JkID0gZGIuQ29sdW1uKGRi LlN0cmluZygyNTYpKQogICAgIGFjdGl2ZSA9IGRiLkNvbHVtbihkYi5Cb29sZWFuKCksIG51bGxh YmxlPUZhbHNlKQogICAgIGNvbmZpcm1lZF9hdCA9IGRiLkNvbHVtbihkYi5EYXRlVGltZSgpKQog ICAgIG1hc3RlcnBhc3NfY2hlY2sgPSBkYi5Db2x1bW4oZGIuU3RyaW5nKDI1NikpCiAgICAgcm9s ZXMgPSBkYi5yZWxhdGlvbnNoaXAoJ1JvbGUnLCBzZWNvbmRhcnk9cm9sZXNfdXNlcnMsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgYmFja3JlZj1kYi5iYWNrcmVmKCd1c2VycycsIGxhenk9 J2R5bmFtaWMnKSkKKyAgICBhdXRoX3NvdXJjZSA9IGRiLkNvbHVtbihkYi5TdHJpbmcoMTYpLCB1 bmlxdWU9VHJ1ZSwgbnVsbGFibGU9RmFsc2UpCiAKIAogY2xhc3MgU2V0dGluZyhkYi5Nb2RlbCk6 CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90ZW1wbGF0ZXMvc2VjdXJpdHkvZmllbGRzLmh0bWwg Yi93ZWIvcGdhZG1pbi90ZW1wbGF0ZXMvc2VjdXJpdHkvZmllbGRzLmh0bWwKaW5kZXggZWZiMTI2 YjJlLi5jNTA1ZGEzNjYgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3RlbXBsYXRlcy9zZWN1cml0 eS9maWVsZHMuaHRtbAorKysgYi93ZWIvcGdhZG1pbi90ZW1wbGF0ZXMvc2VjdXJpdHkvZmllbGRz Lmh0bWwKQEAgLTksMyArOSwxNCBAQAogICAgIHslIGVuZGlmICV9CiA8L2Rpdj4KIHslIGVuZG1h Y3JvICV9Cit7JSBtYWNybyByZW5kZXJfdXNlcm5hbWVfd2l0aF9lcnJvcnMoZmllbGQsIHR5cGUp ICV9Cis8ZGl2IGNsYXNzPSJmb3JtLWdyb3VwIG1iLTMgeyUgaWYgZmllbGQuZXJyb3JzICV9IGhh cy1lcnJvcnslIGVuZGlmICV9Ij4KKyAgICA8aW5wdXQgY2xhc3M9ImZvcm0tY29udHJvbCIgcGxh Y2Vob2xkZXI9Int7IGZpZWxkLmxhYmVsLnRleHQgfX0gLyBVc2VybmFtZSIgbmFtZT0ie3sgZmll bGQubmFtZSB9fSIKKyAgICAgICAgICAgdHlwZT0ieyUgaWYgdHlwZSAlfXt7IHR5cGUgfX17JSBl bHNlICV9e3sgZmllbGQudHlwZSB9fXslIGVuZGlmICV9IiBhdXRvZm9jdXM+CisgICAgeyUgaWYg ZmllbGQuZXJyb3JzICV9CisgICAgeyUgZm9yIGVycm9yIGluIGZpZWxkLmVycm9ycyAlfQorICAg IDxzcGFuIGNsYXNzPSJmb3JtLXRleHQiPnt7IGVycm9yIH19PC9zcGFuPgorICAgIHslIGVuZGZv ciAlfQorICAgIHslIGVuZGlmICV9Cis8L2Rpdj4KK3slIGVuZG1hY3JvICV9CmRpZmYgLS1naXQg YS93ZWIvcGdhZG1pbi90ZW1wbGF0ZXMvc2VjdXJpdHkvbG9naW5fdXNlci5odG1sIGIvd2ViL3Bn YWRtaW4vdGVtcGxhdGVzL3NlY3VyaXR5L2xvZ2luX3VzZXIuaHRtbAppbmRleCA3NTE1YzJjMmEu LjJlOTJkN2IxMiAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vdGVtcGxhdGVzL3NlY3VyaXR5L2xv Z2luX3VzZXIuaHRtbAorKysgYi93ZWIvcGdhZG1pbi90ZW1wbGF0ZXMvc2VjdXJpdHkvbG9naW5f dXNlci5odG1sCkBAIC03LDEwICs3LDEwIEBACiB7JSBibG9jayBwYW5lbF90aXRsZSAlfXt7IF8o J0xvZ2luJykgfX17JSBlbmRibG9jayAlfQogeyUgYmxvY2sgcGFuZWxfYm9keSAlfQogeyUgaWYg Y29uZmlnLlNFUlZFUl9NT0RFICV9Ci08Zm9ybSBhY3Rpb249Int7IHVybF9mb3Jfc2VjdXJpdHko J2xvZ2luJykgfX0iIG1ldGhvZD0iUE9TVCIgbmFtZT0ibG9naW5fdXNlcl9mb3JtIj4KKzxmb3Jt IGFjdGlvbj0ie3sgdXJsX2ZvcignYXV0aGVudGljYXRlLmxvZ2luJykgfX0iIG1ldGhvZD0iUE9T VCIgbmFtZT0ibG9naW5fdXNlcl9mb3JtIj4KICAgICB7eyBsb2dpbl91c2VyX2Zvcm0uaGlkZGVu X3RhZygpIH19CiAgICAgeyUgc2V0IHVzZXJfbGFuZ3VhZ2UgPSByZXF1ZXN0LmNvb2tpZXMuZ2V0 KCdQR0FETUlOX0xBTkdVQUdFJykgb3IgJ2VuJyAlfQotICAgIHt7IHJlbmRlcl9maWVsZF93aXRo X2Vycm9ycyhsb2dpbl91c2VyX2Zvcm0uZW1haWwsICJ0ZXh0IikgfX0KKyAgICB7eyByZW5kZXJf dXNlcm5hbWVfd2l0aF9lcnJvcnMobG9naW5fdXNlcl9mb3JtLmVtYWlsLCAidGV4dCIpIH19CiAg ICAge3sgcmVuZGVyX2ZpZWxkX3dpdGhfZXJyb3JzKGxvZ2luX3VzZXJfZm9ybS5wYXNzd29yZCwg InBhc3N3b3JkIikgfX0KICAgICA8YnV0dG9uIGNsYXNzPSJidG4gYnRuLXByaW1hcnkgYnRuLWJs b2NrIGJ0bi1sb2dpbiIgdHlwZT0ic3VibWl0IiB2YWx1ZT0ie3sgXygnTG9naW4nKSB9fSI+e3sg XygnTG9naW4nKSB9fTwvYnV0dG9uPgogICAgIDxkaXYgY2xhc3M9ImZvcm0tZ3JvdXAgcm93IG1i LTMgYyB1c2VyLWxhbmd1YWdlIj4KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3RlbXBsYXRlcy9z ZWN1cml0eS9wYW5lbC5odG1sIGIvd2ViL3BnYWRtaW4vdGVtcGxhdGVzL3NlY3VyaXR5L3BhbmVs Lmh0bWwKaW5kZXggN2RlMWQ5ZDkwLi4xNDUyZGU4Y2EgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWlu L3RlbXBsYXRlcy9zZWN1cml0eS9wYW5lbC5odG1sCisrKyBiL3dlYi9wZ2FkbWluL3RlbXBsYXRl cy9zZWN1cml0eS9wYW5lbC5odG1sCkBAIC0xLDUgKzEsNSBAQAogeyUgZXh0ZW5kcyAiYmFzZS5o dG1sIiAlfQoteyUgZnJvbSAic2VjdXJpdHkvZmllbGRzLmh0bWwiIGltcG9ydCByZW5kZXJfZmll bGRfd2l0aF9lcnJvcnMgJX0KK3slIGZyb20gInNlY3VyaXR5L2ZpZWxkcy5odG1sIiBpbXBvcnQg cmVuZGVyX2ZpZWxkX3dpdGhfZXJyb3JzLCByZW5kZXJfdXNlcm5hbWVfd2l0aF9lcnJvcnMgJX0K IHslIGJsb2NrIGJvZHkgJX0KIDxkaXYgY2xhc3M9ImNvbnRhaW5lci1mbHVpZCBoLTEwMCBsb2dp bl9wYWdlIj4KICAgICB7JSBpZiBjb25maWcuTE9HSU5fQkFOTkVSIGlzIGRlZmluZWQgYW5kIGNv bmZpZy5MT0dJTl9CQU5ORVIgIT0gIiIgJX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xz L3NjaGVtYV9kaWZmL3Rlc3RzL3BnLzEwX3BsdXMvZGlmZl8yMjQ4NS5zcWwgYi93ZWIvcGdhZG1p bi90b29scy9zY2hlbWFfZGlmZi90ZXN0cy9wZy8xMF9wbHVzL2RpZmZfMjI0ODUuc3FsCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uZTY5ZGUyOWJiCmRpZmYgLS1naXQgYS93 ZWIvcGdhZG1pbi90b29scy91c2VyX21hbmFnZW1lbnQvX19pbml0X18ucHkgYi93ZWIvcGdhZG1p bi90b29scy91c2VyX21hbmFnZW1lbnQvX19pbml0X18ucHkKaW5kZXggNTUzNjUxNzNmLi44NzNl OGM2NTggMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3Rvb2xzL3VzZXJfbWFuYWdlbWVudC9fX2lu aXRfXy5weQorKysgYi93ZWIvcGdhZG1pbi90b29scy91c2VyX21hbmFnZW1lbnQvX19pbml0X18u cHkKQEAgLTE3NiwxMyArMTc2LDIwIEBAIGRlZiB1c2VyKHVpZCk6CiAKICAgICAiIiIKIAorICAg IGF1dGhfb25seV9pbnRlcm5hbCA9IEZhbHNlCisgICAgaWYgY3VycmVudF9hcHAuUEdBRE1JTl9E RUZBVUxUX0FVVEhfU09VUkNFID09IFwKKyAgICAgICAgICAgIGN1cnJlbnRfYXBwLlBHQURNSU5f RVhURVJOQUxfQVVUSF9TT1VSQ0U6CisgICAgICAgIGF1dGhfb25seV9pbnRlcm5hbCA9IFRydWUK KwogICAgIGlmIHVpZDoKICAgICAgICAgdSA9IFVzZXIucXVlcnkuZ2V0KHVpZCkKIAogICAgICAg ICByZXMgPSB7J2lkJzogdS5pZCwKKyAgICAgICAgICAgICAgICd1c2VybmFtZSc6IHUudXNlcm5h bWUsCiAgICAgICAgICAgICAgICAnZW1haWwnOiB1LmVtYWlsLAogICAgICAgICAgICAgICAgJ2Fj dGl2ZSc6IHUuYWN0aXZlLAotICAgICAgICAgICAgICAgJ3JvbGUnOiB1LnJvbGVzWzBdLmlkCisg ICAgICAgICAgICAgICAncm9sZSc6IHUucm9sZXNbMF0uaWQsCisgICAgICAgICAgICAgICAnYXV0 aF9vbmx5X2ludGVybmFsJzogYXV0aF9vbmx5X2ludGVybmFsLAogICAgICAgICAgICAgICAgfQog ICAgIGVsc2U6CiAgICAgICAgIHVzZXJzID0gVXNlci5xdWVyeS5hbGwoKQpAQCAtMTkwLDkgKzE5 NywxMSBAQCBkZWYgdXNlcih1aWQpOgogICAgICAgICB1c2Vyc19kYXRhID0gW10KICAgICAgICAg Zm9yIHUgaW4gdXNlcnM6CiAgICAgICAgICAgICB1c2Vyc19kYXRhLmFwcGVuZCh7J2lkJzogdS5p ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndXNlcm5hbWUnOiB1LnVzZXJuYW1l LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlbWFpbCc6IHUuZW1haWwsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FjdGl2ZSc6IHUuYWN0aXZlLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICdyb2xlJzogdS5yb2xlc1swXS5pZAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICdyb2xlJzogdS5yb2xlc1swXS5pZCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAnYXV0aF9vbmx5X2ludGVybmFsJzogYXV0aF9vbmx5X2ludGVybmFs LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAKICAgICAgICAgcmVzID0gdXNl cnNfZGF0YQpAQCAtMjE1LDExICsyMjQsMzEgQEAgZGVmIGNyZWF0ZSgpOgogICAgICAgICByZXF1 ZXN0LmRhdGEsIGVuY29kaW5nPSd1dGYtOCcKICAgICApCiAKLSAgICBmb3IgZiBpbiAoJ2VtYWls JywgJ3JvbGUnLCAnYWN0aXZlJywgJ25ld1Bhc3N3b3JkJywgJ2NvbmZpcm1QYXNzd29yZCcpOgor ICAgIHN0YXR1cywgcmVzID0gY3JlYXRlX3VzZXIoZGF0YSkKKworICAgIGlmIG5vdCBzdGF0dXM6 CisgICAgICAgIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICByZXR1 cm4gYWpheF9yZXNwb25zZSgKKyAgICAgICAgcmVzcG9uc2U9cmVzLAorICAgICAgICBzdGF0dXM9 MjAwCisgICAgKQorCisKK2RlZiBjcmVhdGVfdXNlcihkYXRhKToKKyAgICBpZiBjdXJyZW50X2Fw cC5QR0FETUlOX0RFRkFVTFRfQVVUSF9TT1VSQ0UgPT0gXAorICAgICAgICAgICAgY3VycmVudF9h cHAuUEdBRE1JTl9FWFRFUk5BTF9BVVRIX1NPVVJDRToKKyAgICAgICAgcmVxX3BhcmFtcyA9ICgn ZW1haWwnLCAncm9sZScsICdhY3RpdmUnLCAnbmV3UGFzc3dvcmQnLAorICAgICAgICAgICAgICAg ICAgICAgICdjb25maXJtUGFzc3dvcmQnKQorICAgIGVsc2U6CisgICAgICAgIHJlcV9wYXJhbXMg PSAoJ3VzZXJuYW1lJywgJ3JvbGUnLCAnYWN0aXZlJywgJ25ld1Bhc3N3b3JkJywKKyAgICAgICAg ICAgICAgICAgICAgICAnY29uZmlybVBhc3N3b3JkJykKKworICAgIGZvciBmIGluIHJlcV9wYXJh bXM6CiAgICAgICAgIGlmIGYgaW4gZGF0YSBhbmQgZGF0YVtmXSAhPSAnJzoKICAgICAgICAgICAg IGNvbnRpbnVlCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gYmFkX3JlcXVlc3Qo ZXJyb3Jtc2c9XygiTWlzc2luZyBmaWVsZDogJ3swfSciLmZvcm1hdChmKSkpCisgICAgICAgICAg ICByZXR1cm4gRmFsc2UsIF8oIk1pc3NpbmcgZmllbGQ6ICd7MH0nIi5mb3JtYXQoZikpCiAKICAg ICB0cnk6CiAgICAgICAgIG5ld19kYXRhID0gdmFsaWRhdGVfdXNlcihkYXRhKQpAQCAtMjI4LDEz ICsyNTcsMjMgQEAgZGVmIGNyZWF0ZSgpOgogICAgICAgICAgICAgbmV3X2RhdGFbJ3JvbGVzJ10g PSBbUm9sZS5xdWVyeS5nZXQobmV3X2RhdGFbJ3JvbGVzJ10pXQogCiAgICAgZXhjZXB0IEV4Y2Vw dGlvbiBhcyBlOgotICAgICAgICByZXR1cm4gYmFkX3JlcXVlc3QoZXJyb3Jtc2c9XyhzdHIoZSkp KQorICAgICAgICByZXR1cm4gRmFsc2UsIHN0cihlKQogCiAgICAgdHJ5OgotICAgICAgICB1c3Ig PSBVc2VyKGVtYWlsPW5ld19kYXRhWydlbWFpbCddLAorICAgICAgICBpZiBjdXJyZW50X2FwcC5Q R0FETUlOX0RFRkFVTFRfQVVUSF9TT1VSQ0UgPT0gXAorICAgICAgICAgICAgICAgIGN1cnJlbnRf YXBwLlBHQURNSU5fRVhURVJOQUxfQVVUSF9TT1VSQ0U6CisgICAgICAgICAgICB1c2VybmFtZSA9 IG5ld19kYXRhWydlbWFpbCddCisgICAgICAgICAgICBlbWFpbCA9IG5ld19kYXRhWydlbWFpbCdd CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB1c2VybmFtZSA9IGRhdGFbJ3VzZXJuYW1lJ10K KyAgICAgICAgICAgIGVtYWlsID0gZ2V0YXR0cihuZXdfZGF0YSwgJ2VtYWlsJywgJycpCisKKyAg ICAgICAgdXNyID0gVXNlcih1c2VybmFtZT11c2VybmFtZSwKKyAgICAgICAgICAgICAgICAgICBl bWFpbD1lbWFpbCwKICAgICAgICAgICAgICAgICAgICByb2xlcz1uZXdfZGF0YVsncm9sZXMnXSwK ICAgICAgICAgICAgICAgICAgICBhY3RpdmU9bmV3X2RhdGFbJ2FjdGl2ZSddLAotICAgICAgICAg ICAgICAgICAgIHBhc3N3b3JkPW5ld19kYXRhWydwYXNzd29yZCddKQorICAgICAgICAgICAgICAg ICAgIHBhc3N3b3JkPW5ld19kYXRhWydwYXNzd29yZCddLAorICAgICAgICAgICAgICAgICAgIGF1 dGhfc291cmNlPWN1cnJlbnRfYXBwLlBHQURNSU5fRVhURVJOQUxfQVVUSF9TT1VSQ0UpCiAgICAg ICAgIGRiLnNlc3Npb24uYWRkKHVzcikKICAgICAgICAgZGIuc2Vzc2lvbi5jb21taXQoKQogICAg ICAgICAjIEFkZCBkZWZhdWx0IHNlcnZlciBncm91cCBmb3IgbmV3IHVzZXIuCkBAIC0yNDIsMTgg KzI4MSwxNSBAQCBkZWYgY3JlYXRlKCk6CiAgICAgICAgIGRiLnNlc3Npb24uYWRkKHNlcnZlcl9n cm91cCkKICAgICAgICAgZGIuc2Vzc2lvbi5jb21taXQoKQogICAgIGV4Y2VwdCBFeGNlcHRpb24g YXMgZToKLSAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1zdHIo ZSkpCisgICAgICAgIHJldHVybiBGYWxzZSwgc3RyKGUpCiAKLSAgICByZXMgPSB7J2lkJzogdXNy LmlkLAotICAgICAgICAgICAnZW1haWwnOiB1c3IuZW1haWwsCi0gICAgICAgICAgICdhY3RpdmUn OiB1c3IuYWN0aXZlLAotICAgICAgICAgICAncm9sZSc6IHVzci5yb2xlc1swXS5pZAotICAgICAg ICAgICB9Ci0KLSAgICByZXR1cm4gYWpheF9yZXNwb25zZSgKLSAgICAgICAgcmVzcG9uc2U9cmVz LAotICAgICAgICBzdGF0dXM9MjAwCi0gICAgKQorICAgIHJldHVybiBUcnVlLCB7CisgICAgICAg ICdpZCc6IHVzci5pZCwKKyAgICAgICAgJ3VzZXJuYW1lJzogdXNyLnVzZXJuYW1lLAorICAgICAg ICAnZW1haWwnOiB1c3IuZW1haWwsCisgICAgICAgICdhY3RpdmUnOiB1c3IuYWN0aXZlLAorICAg ICAgICAncm9sZSc6IHVzci5yb2xlc1swXS5pZAorICAgIH0KIAogCiBAYmx1ZXByaW50LnJvdXRl KApAQCAtMzM3LDYgKzM3Myw3IEBAIGRlZiB1cGRhdGUodWlkKToKICAgICAgICAgZGIuc2Vzc2lv bi5jb21taXQoKQogCiAgICAgICAgIHJlcyA9IHsnaWQnOiB1c3IuaWQsCisgICAgICAgICAgICAg ICAndXNlcm5hbWUnOiB1c3IudXNlcm5hbWUsCiAgICAgICAgICAgICAgICAnZW1haWwnOiB1c3Iu ZW1haWwsCiAgICAgICAgICAgICAgICAnYWN0aXZlJzogdXNyLmFjdGl2ZSwKICAgICAgICAgICAg ICAgICdyb2xlJzogdXNyLnJvbGVzWzBdLmlkCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29s cy91c2VyX21hbmFnZW1lbnQvc3RhdGljL2pzL3VzZXJfbWFuYWdlbWVudC5qcyBiL3dlYi9wZ2Fk bWluL3Rvb2xzL3VzZXJfbWFuYWdlbWVudC9zdGF0aWMvanMvdXNlcl9tYW5hZ2VtZW50LmpzCmlu ZGV4IDY0MDE0ODYzZi4uNTcyNzVlZWY5IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi90b29scy91 c2VyX21hbmFnZW1lbnQvc3RhdGljL2pzL3VzZXJfbWFuYWdlbWVudC5qcworKysgYi93ZWIvcGdh ZG1pbi90b29scy91c2VyX21hbmFnZW1lbnQvc3RhdGljL2pzL3VzZXJfbWFuYWdlbWVudC5qcwpA QCAtMjQyLDEzICsyNDIsMjcgQEAgZGVmaW5lKFsKICAgICAgICAgICB1cmxSb290OiBVU0VSVVJM LAogICAgICAgICAgIGRlZmF1bHRzOiB7CiAgICAgICAgICAgICBpZDogdW5kZWZpbmVkLAorICAg ICAgICAgICAgdXNlcm5hbWU6IHVuZGVmaW5lZCwKICAgICAgICAgICAgIGVtYWlsOiB1bmRlZmlu ZWQsCiAgICAgICAgICAgICBhY3RpdmU6IHRydWUsCiAgICAgICAgICAgICByb2xlOiB1bmRlZmlu ZWQsCiAgICAgICAgICAgICBuZXdQYXNzd29yZDogdW5kZWZpbmVkLAogICAgICAgICAgICAgY29u ZmlybVBhc3N3b3JkOiB1bmRlZmluZWQsCisgICAgICAgICAgICBhdXRoX29ubHlfaW50ZXJuYWw6 IHRydWUsCiAgICAgICAgICAgfSwKICAgICAgICAgICBzY2hlbWE6IFt7CisgICAgICAgICAgICBp ZDogJ3VzZXJuYW1lJywKKyAgICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdVc2VybmFtZScpLAor ICAgICAgICAgICAgdHlwZTogJ3RleHQnLAorICAgICAgICAgICAgY2VsbDogQmFja2dyaWQuRXh0 ZW5zaW9uLlN0cmluZ0RlcENlbGwsCisgICAgICAgICAgICBjZWxsSGVhZGVyQ2xhc3NlczogJ3dp ZHRoX3BlcmNlbnRfMzAnLAorICAgICAgICAgICAgZGVwczogWydpZCddLAorICAgICAgICAgICAg dmlzaWJsZTogZnVuY3Rpb24obSkgeworICAgICAgICAgICAgICBpZiAobS5nZXQoJ2F1dGhfb25s eV9pbnRlcm5hbCcpKSByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgIHJldHVybiB0cnVlOwor ICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIGRpc2FibGVkOiBmYWxzZSwKKyAgICAgICAgICB9 LHsKICAgICAgICAgICAgIGlkOiAnZW1haWwnLAogICAgICAgICAgICAgbGFiZWw6IGdldHRleHQo J0VtYWlsJyksCiAgICAgICAgICAgICB0eXBlOiAndGV4dCcsCkBAIC0yNTYsNiArMjcwLDggQEAg ZGVmaW5lKFsKICAgICAgICAgICAgIGNlbGxIZWFkZXJDbGFzc2VzOiAnd2lkdGhfcGVyY2VudF8z MCcsCiAgICAgICAgICAgICBkZXBzOiBbJ2lkJ10sCiAgICAgICAgICAgICBlZGl0YWJsZTogZnVu Y3Rpb24obSkgeworICAgICAgICAgICAgICBpZiAoIW0uZ2V0KCdhdXRoX29ubHlfaW50ZXJuYWwn KSkgcmV0dXJuIHRydWU7CisKICAgICAgICAgICAgICAgaWYgKG0gaW5zdGFuY2VvZiBCYWNrYm9u ZS5Db2xsZWN0aW9uKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAg ICAgICB9CkBAIC0zNDQsNyArMzYwLDcgQEAgZGVmaW5lKFsKICAgICAgICAgICAgICAgY2hhbmdl ZEF0dHJzID0gdGhpcy5jaGFuZ2VkIHx8IHt9LAogICAgICAgICAgICAgICBlbWFpbF9maWx0ZXIg PSAvXlthLXpBLVowLTkuISMkJSYnKitcLz0/Xl9ge3x9fi1dK0BbYS16QS1aMC05XSg/OlthLXpB LVowLTktXXswLDYxfVthLXpBLVowLTldKT8oPzpcLlthLXpBLVowLTldKD86W2EtekEtWjAtOS1d ezAsNjF9W2EtekEtWjAtOV0pPykqJC87CiAKLSAgICAgICAgICAgIGlmICgoJ2VtYWlsJyBpbiBj aGFuZ2VkQXR0cnMgfHwgIXRoaXMuaXNOZXcoKSkgJiYgKF8uaXNVbmRlZmluZWQodGhpcy5nZXQo J2VtYWlsJykpIHx8CisgICAgICAgICAgICBpZiAodGhpcy5nZXQoJ2F1dGhfb25seV9pbnRlcm5h bCcpID09PSB0cnVlICYmICgnZW1haWwnIGluIGNoYW5nZWRBdHRycyB8fCAhdGhpcy5pc05ldygp KSAmJiAoXy5pc1VuZGVmaW5lZCh0aGlzLmdldCgnZW1haWwnKSkgfHwKICAgICAgICAgICAgICAg ICBfLmlzTnVsbCh0aGlzLmdldCgnZW1haWwnKSkgfHwKICAgICAgICAgICAgICAgICBTdHJpbmco dGhpcy5nZXQoJ2VtYWlsJykpLnJlcGxhY2UoL15ccyt8XHMrJC9nLCAnJykgPT0gJycpKSB7CiAg ICAgICAgICAgICAgIGVycm1zZyA9IGdldHRleHQoJ0VtYWlsIGFkZHJlc3MgY2Fubm90IGJlIGVt cHR5LicpOwpkaWZmIC0tZ2l0IGEvd2ViL3JlZ3Jlc3Npb24vcHl0aG9uX3Rlc3RfdXRpbHMvY3Ny Zl90ZXN0X2NsaWVudC5weSBiL3dlYi9yZWdyZXNzaW9uL3B5dGhvbl90ZXN0X3V0aWxzL2NzcmZf dGVzdF9jbGllbnQucHkKaW5kZXggYmIzZjdkYTcwLi40MmFlNTEwYjUgMTAwNjQ0Ci0tLSBhL3dl Yi9yZWdyZXNzaW9uL3B5dGhvbl90ZXN0X3V0aWxzL2NzcmZfdGVzdF9jbGllbnQucHkKKysrIGIv d2ViL3JlZ3Jlc3Npb24vcHl0aG9uX3Rlc3RfdXRpbHMvY3NyZl90ZXN0X2NsaWVudC5weQpAQCAt MTA5LDcgKzEwOSw3IEBAIGNsYXNzIFRlc3RDbGllbnQodGVzdGluZy5GbGFza0NsaWVudCk6CiAg ICAgICAgICAgICBjc3JmX3Rva2VuID0gc2VsZi5nZW5lcmF0ZV9jc3JmX3Rva2VuKCkKIAogICAg ICAgICByZXMgPSBzZWxmLnBvc3QoCi0gICAgICAgICAgICAnL2xvZ2luJywgZGF0YT1kaWN0KAor ICAgICAgICAgICAgJy9hdXRoZW50aWNhdGUvbG9naW4nLCBkYXRhPWRpY3QoCiAgICAgICAgICAg ICAgICAgZW1haWw9ZW1haWwsIHBhc3N3b3JkPXBhc3N3b3JkLAogICAgICAgICAgICAgICAgIGNz cmZfdG9rZW49Y3NyZl90b2tlbiwKICAgICAgICAgICAgICksCkBAIC0xMjAsNSArMTIwLDUgQEAg Y2xhc3MgVGVzdENsaWVudCh0ZXN0aW5nLkZsYXNrQ2xpZW50KToKICAgICAgICAgcmV0dXJuIHJl cwogCiAgICAgZGVmIGxvZ291dChzZWxmKToKLSAgICAgICAgcmVzID0gc2VsZi5nZXQoJy9sb2dv dXQnLCBmb2xsb3dfcmVkaXJlY3RzPUZhbHNlKQorICAgICAgICByZXMgPSBzZWxmLmdldCgnL2xv Z291dD9uZXh0PS9icm93c2VyLycsIGZvbGxvd19yZWRpcmVjdHM9RmFsc2UpCiAgICAgICAgIHNl bGYuY3NyZl90b2tlbiA9IE5vbmUKZGlmZiAtLWdpdCBhL3dlYi9yZWdyZXNzaW9uL3J1bnRlc3Rz LnB5IGIvd2ViL3JlZ3Jlc3Npb24vcnVudGVzdHMucHkKaW5kZXggZWY1YjQ2MzI4Li5mY2Y3M2E4 ODYgMTAwNjQ0Ci0tLSBhL3dlYi9yZWdyZXNzaW9uL3J1bnRlc3RzLnB5CisrKyBiL3dlYi9yZWdy ZXNzaW9uL3J1bnRlc3RzLnB5CkBAIC0xMTgsNiArMTE4LDExIEBAIGFwcC5QR0FETUlOX1JVTlRJ TUUgPSBUcnVlCiBpZiBjb25maWcuU0VSVkVSX01PREUgaXMgVHJ1ZToKICAgICBhcHAuUEdBRE1J Tl9SVU5USU1FID0gRmFsc2UKIGFwcC5jb25maWdbJ1dURl9DU1JGX0VOQUJMRUQnXSA9IFRydWUK KworIyBBdXRoZW50aWNhdGlvbiBzb3VyY2VzCithcHAuUEdBRE1JTl9ERUZBVUxUX0FVVEhfU09V UkNFID0gJ2ludGVybmFsJworYXBwLlBHQURNSU5fRVhURVJOQUxfQVVUSF9TT1VSQ0UgPSAnbGRh cCcKKwogYXBwLnRlc3RfY2xpZW50X2NsYXNzID0gVGVzdENsaWVudAogdGVzdF9jbGllbnQgPSBh cHAudGVzdF9jbGllbnQoKQogdGVzdF9jbGllbnQuc2V0QXBwKGFwcCkKQEAgLTE5NSw2ICsyMDAs OCBAQCBkZWYgZ2V0X3Rlc3RfbW9kdWxlcyhhcmd1bWVudHMpOgogICAgICAgICAgICAgImJyb3dz ZXIudGVzdHMudGVzdF9sb2dpbiIsCiAgICAgICAgICAgICAiYnJvd3Nlci50ZXN0cy50ZXN0X2xv Z291dCIsCiAgICAgICAgICAgICAiYnJvd3Nlci50ZXN0cy50ZXN0X3Jlc2V0X3Bhc3N3b3JkIiwK KyAgICAgICAgICAgICJicm93c2VyLnRlc3RzLnRlc3RfbGRhcF9sb2dpbiIsCisgICAgICAgICAg ICAiYnJvd3Nlci50ZXN0cy50ZXN0X2xkYXBfd2l0aF9tb2NraW5nIiwKICAgICAgICAgXSkKICAg ICBpZiBhcmd1bWVudHNbJ2V4Y2x1ZGUnXSBpcyBub3QgTm9uZToKICAgICAgICAgZXhjbHVkZV9w a2dzICs9IGFyZ3VtZW50c1snZXhjbHVkZSddLnNwbGl0KCcsJykKZGlmZiAtLWdpdCBhL3dlYi9y ZWdyZXNzaW9uL3Rlc3RfY29uZmlnLmpzb24uaW4gYi93ZWIvcmVncmVzc2lvbi90ZXN0X2NvbmZp Zy5qc29uLmluCmluZGV4IDE1YjEzM2ExOS4uMGExNTFlNjMzIDEwMDY0NAotLS0gYS93ZWIvcmVn cmVzc2lvbi90ZXN0X2NvbmZpZy5qc29uLmluCisrKyBiL3dlYi9yZWdyZXNzaW9uL3Rlc3RfY29u ZmlnLmpzb24uaW4KQEAgLTExLDYgKzExLDQ5IEBACiAgICAgImxvZ2luX3Bhc3N3b3JkIjogIlBB U1NXT1JEIiwKICAgICAibG9naW5fdXNlcm5hbWUiOiAiVVNFUkBFWEFNUExFLkNPTSIKICAgfSwK KyAgInBnQWRtaW40X2xkYXBfY3JlZGVudGlhbHMiOiB7CisgICAgImxvZ2luX3Bhc3N3b3JkIjog IlBBU1NXT1JEIiwKKyAgICAibG9naW5fdXNlcm5hbWUiOiAiVVNFUk5BTUUiCisgIH0sCisgICJs ZGFwX2NvbmZpZyI6IFsKKyAgICB7CisgICAgImxkYXAiOiB7CisgICAgICAibmFtZSI6ICJMZGFw IHNjZW5hcmlvIG5hbWUiCisgICAgICAidXJpIjogImxkYXA6Ly9JUC1BRERSRVNTL0hPU1ROQU1F OjM4OSIsCisgICAgICAiYmFzZV9kbiI6ICJCQVNFLUROIiwKKyAgICAgICJzZWFyY2hfYmFzZV9k biI6ICJTRUFSQ0gtQkFTRS1ETiIsCisgICAgICAidXNlcm5hbWVfYXRyIjogIlVJRCIsCisgICAg ICAic2VhcmNoX2ZpbHRlciI6ICIob2JqZWN0Y2xhc3M9KikiLAorICAgICAgInVzZV9zdGFydHRs cyI6IGZhbHNlLAorICAgICAgImNhX2NlcnRfZmlsZSI6ICIiLAorICAgICAgImNlcnRfZmlsZSI6 ICIiLAorICAgICAgImtleV9maWxlIjogIiIKKyAgICB9LAorICAgICJsZGFwX3dpdGhfc3NsIjog eworICAgICAgIm5hbWUiOiAiTGRhcCBzY2VuYXJpbyBuYW1lIgorICAgICAgInVyaSI6ICJsZGFw czovL0lQLUFERFJFU1MvSE9TVE5BTUU6NjM2IiwKKyAgICAgICJiYXNlX2RuIjogIkJBU0UtRE4i LAorICAgICAgInNlYXJjaF9iYXNlX2RuIjogIlNFQVJDSC1CQVNFLUROIiwKKyAgICAgICJ1c2Vy bmFtZV9hdHIiOiAiVUlEIiwKKyAgICAgICJzZWFyY2hfZmlsdGVyIjogIihvYmplY3RjbGFzcz0q KSIsCisgICAgICAidXNlX3N0YXJ0dGxzIjogZmFsc2UsCisgICAgICAiY2FfY2VydF9maWxlIjog IiIsCisgICAgICAiY2VydF9maWxlIjogIiIsCisgICAgICAia2V5X2ZpbGUiOiAiIgorICAgIH0s CisgICAgImxkYXBfd2l0aF90bHMiOiB7CisgICAgICAibmFtZSI6ICJMZGFwIHNjZW5hcmlvIG5h bWUiCisgICAgICAidXJpIjogImxkYXA6Ly9JUC1BRERSRVNTL0hPU1ROQU1FOjM4OSIsCisgICAg ICAiYmFzZV9kbiI6ICJCQVNFLUROIiwKKyAgICAgICJzZWFyY2hfYmFzZV9kbiI6ICJTRUFSQ0gt QkFTRS1ETiIsCisgICAgICAidXNlcm5hbWVfYXRyIjogIlVJRCIsCisgICAgICAic2VhcmNoX2Zp bHRlciI6ICIob2JqZWN0Y2xhc3M9KikiLAorICAgICAgInVzZV9zdGFydHRscyI6IHRydWUsCisg ICAgICAiY2FfY2VydF9maWxlIjogIiIsCisgICAgICAiY2VydF9maWxlIjogIiIsCisgICAgICAi a2V5X2ZpbGUiOiAiIgorICAgIH0KKyAgfV0sCiAgICJzZXJ2ZXJfZ3JvdXAiOiAxLAogICAic2Vy dmVyX2NyZWRlbnRpYWxzIjogWwogICAgIHsK --0000000000001eb8db05a1929f58--