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 1jGbi2-0004Cb-Rr for pgadmin-hackers@arkaria.postgresql.org; Tue, 24 Mar 2020 05:02:39 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1jGbi1-00067P-Nl for pgadmin-hackers@arkaria.postgresql.org; Tue, 24 Mar 2020 05:02:37 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1jGbi1-00064x-2m for pgadmin-hackers@lists.postgresql.org; Tue, 24 Mar 2020 05:02:37 +0000 Received: from mail-lf1-x12d.google.com ([2a00:1450:4864:20::12d]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1jGbhx-00008x-Mz for pgadmin-hackers@postgresql.org; Tue, 24 Mar 2020 05:02:35 +0000 Received: by mail-lf1-x12d.google.com with SMTP id j17so12122088lfe.7 for ; Mon, 23 Mar 2020 22:02:33 -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=3b3Nhf2606udYXlfPPiwkTUuwCl7vi2H7TT8ZJowkos=; b=IT5BvIiWqrzUO6CujhbIQinWWK3BRxw20JI/Xv0VBBfNH3pSnoqnN/2ajbvlsqj6XT AomNuRVVBQ6diZ77TAgqyHNuOw85tn7X1K3p1XYhP4aKIrhFXrOYLcpOBtKhovzsUYr0 gaK29aUsZTjIQ7I2Tv59yagtfOekWGhX021n8Ka1V4I0dLnvfporjL8tGivM6M3IQyM/ R4a6wD3gHvhh5tht91e4qqz9IRqSdp82DfF9/XUqXzACOt96mn6LamFk52H2sAjaYqJZ RQuwOUgliaRboBFyFuOco4yHKEB2XI0Vh/m4E3hnHd5cRO9XRI1oWM5CbVeGqnox3dR8 hhUA== 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=3b3Nhf2606udYXlfPPiwkTUuwCl7vi2H7TT8ZJowkos=; b=lEI4YHvscPwo7PYMY32qWEe6YBjZXe6dwHmGSEuD3VlspzRqrT8Uvie1d4DXT0aJEj g/U5UNWoox9IJzyl1gvGklaW4iWV88VbJglEtnxNGYzM//KrGnidf6vuMxMSOXQxEYHW +NyHVUud5PE4vE6lO4uat3BSbd+puJQ4m37mOA2dfB4/qkvjSQpelk6HdfG6W5kN3FuU sLCkZiHX+0c150eTQlnTqUwvc6t7Arw07Qyr3ZgLXvb1QjhZhIHZf+x4qJbIAJKPszD+ ytGYZgSZb1pLBUMPCnwb5D8lRtUmwy73nTY4xJVb3WHZDE9ubnzE/a87EtIFSl3ovjVf Jpug== X-Gm-Message-State: ANhLgQ3ajtYRfqMHH/YSk9hmOHrTxfsM8oUCEaQ7oTy/YNzCfYg4Wh2U K1ILA632KCKXz+BmIlfDdQ/9IS1kkLNCvq7pzLCosGp7RVsodegFLJ7H6Jek14pUSt7B0rlaE50 jDtjY2Aik6azTLDle/0UEoHUkqc8eZDI5jaUlJwsHWolu+hGiRCu/YNaS2RgL/1pkCLbVgqC7I3 DzsAJWaVZPI1x3lXTQHNgH1G/BFnm4maZReJ0JdWiih9pe8FbkN/TW2g== X-Google-Smtp-Source: ADFU+vuVRuw4d59Aw52cBU/Tm7WvnBwK3lKlXGgHH5JfmJazCuOcATxtbPUEIzG+0iIhe79CbuW0tgQgELRE2ytEFrc= X-Received: by 2002:a19:ed14:: with SMTP id y20mr7455126lfy.179.1585026151794; Mon, 23 Mar 2020 22:02:31 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Khushboo Vashi Date: Tue, 24 Mar 2020 10:32:23 +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="000000000000bd2e1605a192a823" 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 --000000000000bd2e1605a192a823 Content-Type: multipart/alternative; boundary="000000000000bd2e1305a192a821" --000000000000bd2e1305a192a821 Content-Type: text/plain; charset="UTF-8" Please disregard my previous patch, attached the updated patch. On Tue, Mar 24, 2020 at 10:29 AM Khushboo Vashi < khushboo.vashi@enterprisedb.com> wrote: > 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 >> > --000000000000bd2e1305a192a821 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Please disregard my previous patch, attached the updated p= atch.

- I don't see any test cases.

I will think about this, as right = now no idea how to write test cases for this.=C2=A0

It should be fairly straightforward to write tes= ts for some of the functions in the auth classes. For testing the actual LD= AP 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 l= ist of LDAP servers, so we can test with different configurations (LDAP, LD= APS, LDAP_STARTTLS, AD etc).
=C2=A0
Done.

Thanks,
Khushboo


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

EnterpriseDB= UK: http://www.e= nterprisedb.com
The Enterprise PostgreSQL Company
--000000000000bd2e1305a192a821-- --000000000000bd2e1605a192a823 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_k85fmwm70 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 L3VzZXJfbWFuYWdlbWVudC9fX2luaXRfXy5weSBiL3dlYi9wZ2FkbWluL3Rvb2xzL3VzZXJfbWFu YWdlbWVudC9fX2luaXRfXy5weQppbmRleCA1NTM2NTE3M2YuLjg3M2U4YzY1OCAxMDA2NDQKLS0t IGEvd2ViL3BnYWRtaW4vdG9vbHMvdXNlcl9tYW5hZ2VtZW50L19faW5pdF9fLnB5CisrKyBiL3dl Yi9wZ2FkbWluL3Rvb2xzL3VzZXJfbWFuYWdlbWVudC9fX2luaXRfXy5weQpAQCAtMTc2LDEzICsx NzYsMjAgQEAgZGVmIHVzZXIodWlkKToKIAogICAgICIiIgogCisgICAgYXV0aF9vbmx5X2ludGVy bmFsID0gRmFsc2UKKyAgICBpZiBjdXJyZW50X2FwcC5QR0FETUlOX0RFRkFVTFRfQVVUSF9TT1VS Q0UgPT0gXAorICAgICAgICAgICAgY3VycmVudF9hcHAuUEdBRE1JTl9FWFRFUk5BTF9BVVRIX1NP VVJDRToKKyAgICAgICAgYXV0aF9vbmx5X2ludGVybmFsID0gVHJ1ZQorCiAgICAgaWYgdWlkOgog ICAgICAgICB1ID0gVXNlci5xdWVyeS5nZXQodWlkKQogCiAgICAgICAgIHJlcyA9IHsnaWQnOiB1 LmlkLAorICAgICAgICAgICAgICAgJ3VzZXJuYW1lJzogdS51c2VybmFtZSwKICAgICAgICAgICAg ICAgICdlbWFpbCc6IHUuZW1haWwsCiAgICAgICAgICAgICAgICAnYWN0aXZlJzogdS5hY3RpdmUs Ci0gICAgICAgICAgICAgICAncm9sZSc6IHUucm9sZXNbMF0uaWQKKyAgICAgICAgICAgICAgICdy b2xlJzogdS5yb2xlc1swXS5pZCwKKyAgICAgICAgICAgICAgICdhdXRoX29ubHlfaW50ZXJuYWwn OiBhdXRoX29ubHlfaW50ZXJuYWwsCiAgICAgICAgICAgICAgICB9CiAgICAgZWxzZToKICAgICAg ICAgdXNlcnMgPSBVc2VyLnF1ZXJ5LmFsbCgpCkBAIC0xOTAsOSArMTk3LDExIEBAIGRlZiB1c2Vy KHVpZCk6CiAgICAgICAgIHVzZXJzX2RhdGEgPSBbXQogICAgICAgICBmb3IgdSBpbiB1c2VyczoK ICAgICAgICAgICAgIHVzZXJzX2RhdGEuYXBwZW5kKHsnaWQnOiB1LmlkLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICd1c2VybmFtZSc6IHUudXNlcm5hbWUsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJ2VtYWlsJzogdS5lbWFpbCwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAnYWN0aXZlJzogdS5hY3RpdmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJ3JvbGUnOiB1LnJvbGVzWzBdLmlkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJ3JvbGUnOiB1LnJvbGVzWzBdLmlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICdhdXRoX29ubHlfaW50ZXJuYWwnOiBhdXRoX29ubHlfaW50ZXJuYWwsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfSkKIAogICAgICAgICByZXMgPSB1c2Vyc19kYXRhCkBAIC0yMTUs MTEgKzIyNCwzMSBAQCBkZWYgY3JlYXRlKCk6CiAgICAgICAgIHJlcXVlc3QuZGF0YSwgZW5jb2Rp bmc9J3V0Zi04JwogICAgICkKIAotICAgIGZvciBmIGluICgnZW1haWwnLCAncm9sZScsICdhY3Rp dmUnLCAnbmV3UGFzc3dvcmQnLCAnY29uZmlybVBhc3N3b3JkJyk6CisgICAgc3RhdHVzLCByZXMg PSBjcmVhdGVfdXNlcihkYXRhKQorCisgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgaW50ZXJu YWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKworICAgIHJldHVybiBhamF4X3Jlc3BvbnNl KAorICAgICAgICByZXNwb25zZT1yZXMsCisgICAgICAgIHN0YXR1cz0yMDAKKyAgICApCisKKwor ZGVmIGNyZWF0ZV91c2VyKGRhdGEpOgorICAgIGlmIGN1cnJlbnRfYXBwLlBHQURNSU5fREVGQVVM VF9BVVRIX1NPVVJDRSA9PSBcCisgICAgICAgICAgICBjdXJyZW50X2FwcC5QR0FETUlOX0VYVEVS TkFMX0FVVEhfU09VUkNFOgorICAgICAgICByZXFfcGFyYW1zID0gKCdlbWFpbCcsICdyb2xlJywg J2FjdGl2ZScsICduZXdQYXNzd29yZCcsCisgICAgICAgICAgICAgICAgICAgICAgJ2NvbmZpcm1Q YXNzd29yZCcpCisgICAgZWxzZToKKyAgICAgICAgcmVxX3BhcmFtcyA9ICgndXNlcm5hbWUnLCAn cm9sZScsICdhY3RpdmUnLCAnbmV3UGFzc3dvcmQnLAorICAgICAgICAgICAgICAgICAgICAgICdj b25maXJtUGFzc3dvcmQnKQorCisgICAgZm9yIGYgaW4gcmVxX3BhcmFtczoKICAgICAgICAgaWYg ZiBpbiBkYXRhIGFuZCBkYXRhW2ZdICE9ICcnOgogICAgICAgICAgICAgY29udGludWUKICAgICAg ICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiBiYWRfcmVxdWVzdChlcnJvcm1zZz1fKCJNaXNz aW5nIGZpZWxkOiAnezB9JyIuZm9ybWF0KGYpKSkKKyAgICAgICAgICAgIHJldHVybiBGYWxzZSwg XygiTWlzc2luZyBmaWVsZDogJ3swfSciLmZvcm1hdChmKSkKIAogICAgIHRyeToKICAgICAgICAg bmV3X2RhdGEgPSB2YWxpZGF0ZV91c2VyKGRhdGEpCkBAIC0yMjgsMTMgKzI1NywyMyBAQCBkZWYg Y3JlYXRlKCk6CiAgICAgICAgICAgICBuZXdfZGF0YVsncm9sZXMnXSA9IFtSb2xlLnF1ZXJ5Lmdl dChuZXdfZGF0YVsncm9sZXMnXSldCiAKICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6Ci0gICAg ICAgIHJldHVybiBiYWRfcmVxdWVzdChlcnJvcm1zZz1fKHN0cihlKSkpCisgICAgICAgIHJldHVy biBGYWxzZSwgc3RyKGUpCiAKICAgICB0cnk6Ci0gICAgICAgIHVzciA9IFVzZXIoZW1haWw9bmV3 X2RhdGFbJ2VtYWlsJ10sCisgICAgICAgIGlmIGN1cnJlbnRfYXBwLlBHQURNSU5fREVGQVVMVF9B VVRIX1NPVVJDRSA9PSBcCisgICAgICAgICAgICAgICAgY3VycmVudF9hcHAuUEdBRE1JTl9FWFRF Uk5BTF9BVVRIX1NPVVJDRToKKyAgICAgICAgICAgIHVzZXJuYW1lID0gbmV3X2RhdGFbJ2VtYWls J10KKyAgICAgICAgICAgIGVtYWlsID0gbmV3X2RhdGFbJ2VtYWlsJ10KKyAgICAgICAgZWxzZToK KyAgICAgICAgICAgIHVzZXJuYW1lID0gZGF0YVsndXNlcm5hbWUnXQorICAgICAgICAgICAgZW1h aWwgPSBnZXRhdHRyKG5ld19kYXRhLCAnZW1haWwnLCAnJykKKworICAgICAgICB1c3IgPSBVc2Vy KHVzZXJuYW1lPXVzZXJuYW1lLAorICAgICAgICAgICAgICAgICAgIGVtYWlsPWVtYWlsLAogICAg ICAgICAgICAgICAgICAgIHJvbGVzPW5ld19kYXRhWydyb2xlcyddLAogICAgICAgICAgICAgICAg ICAgIGFjdGl2ZT1uZXdfZGF0YVsnYWN0aXZlJ10sCi0gICAgICAgICAgICAgICAgICAgcGFzc3dv cmQ9bmV3X2RhdGFbJ3Bhc3N3b3JkJ10pCisgICAgICAgICAgICAgICAgICAgcGFzc3dvcmQ9bmV3 X2RhdGFbJ3Bhc3N3b3JkJ10sCisgICAgICAgICAgICAgICAgICAgYXV0aF9zb3VyY2U9Y3VycmVu dF9hcHAuUEdBRE1JTl9FWFRFUk5BTF9BVVRIX1NPVVJDRSkKICAgICAgICAgZGIuc2Vzc2lvbi5h ZGQodXNyKQogICAgICAgICBkYi5zZXNzaW9uLmNvbW1pdCgpCiAgICAgICAgICMgQWRkIGRlZmF1 bHQgc2VydmVyIGdyb3VwIGZvciBuZXcgdXNlci4KQEAgLTI0MiwxOCArMjgxLDE1IEBAIGRlZiBj cmVhdGUoKToKICAgICAgICAgZGIuc2Vzc2lvbi5hZGQoc2VydmVyX2dyb3VwKQogICAgICAgICBk Yi5zZXNzaW9uLmNvbW1pdCgpCiAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgotICAgICAgICBy ZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXN0cihlKSkKKyAgICAgICAgcmV0 dXJuIEZhbHNlLCBzdHIoZSkKIAotICAgIHJlcyA9IHsnaWQnOiB1c3IuaWQsCi0gICAgICAgICAg ICdlbWFpbCc6IHVzci5lbWFpbCwKLSAgICAgICAgICAgJ2FjdGl2ZSc6IHVzci5hY3RpdmUsCi0g ICAgICAgICAgICdyb2xlJzogdXNyLnJvbGVzWzBdLmlkCi0gICAgICAgICAgIH0KLQotICAgIHJl dHVybiBhamF4X3Jlc3BvbnNlKAotICAgICAgICByZXNwb25zZT1yZXMsCi0gICAgICAgIHN0YXR1 cz0yMDAKLSAgICApCisgICAgcmV0dXJuIFRydWUsIHsKKyAgICAgICAgJ2lkJzogdXNyLmlkLAor ICAgICAgICAndXNlcm5hbWUnOiB1c3IudXNlcm5hbWUsCisgICAgICAgICdlbWFpbCc6IHVzci5l bWFpbCwKKyAgICAgICAgJ2FjdGl2ZSc6IHVzci5hY3RpdmUsCisgICAgICAgICdyb2xlJzogdXNy LnJvbGVzWzBdLmlkCisgICAgfQogCiAKIEBibHVlcHJpbnQucm91dGUoCkBAIC0zMzcsNiArMzcz LDcgQEAgZGVmIHVwZGF0ZSh1aWQpOgogICAgICAgICBkYi5zZXNzaW9uLmNvbW1pdCgpCiAKICAg ICAgICAgcmVzID0geydpZCc6IHVzci5pZCwKKyAgICAgICAgICAgICAgICd1c2VybmFtZSc6IHVz ci51c2VybmFtZSwKICAgICAgICAgICAgICAgICdlbWFpbCc6IHVzci5lbWFpbCwKICAgICAgICAg ICAgICAgICdhY3RpdmUnOiB1c3IuYWN0aXZlLAogICAgICAgICAgICAgICAgJ3JvbGUnOiB1c3Iu cm9sZXNbMF0uaWQKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL3VzZXJfbWFuYWdlbWVu dC9zdGF0aWMvanMvdXNlcl9tYW5hZ2VtZW50LmpzIGIvd2ViL3BnYWRtaW4vdG9vbHMvdXNlcl9t YW5hZ2VtZW50L3N0YXRpYy9qcy91c2VyX21hbmFnZW1lbnQuanMKaW5kZXggNjQwMTQ4NjNmLi41 NzI3NWVlZjkgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3Rvb2xzL3VzZXJfbWFuYWdlbWVudC9z dGF0aWMvanMvdXNlcl9tYW5hZ2VtZW50LmpzCisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL3VzZXJf bWFuYWdlbWVudC9zdGF0aWMvanMvdXNlcl9tYW5hZ2VtZW50LmpzCkBAIC0yNDIsMTMgKzI0Miwy NyBAQCBkZWZpbmUoWwogICAgICAgICAgIHVybFJvb3Q6IFVTRVJVUkwsCiAgICAgICAgICAgZGVm YXVsdHM6IHsKICAgICAgICAgICAgIGlkOiB1bmRlZmluZWQsCisgICAgICAgICAgICB1c2VybmFt ZTogdW5kZWZpbmVkLAogICAgICAgICAgICAgZW1haWw6IHVuZGVmaW5lZCwKICAgICAgICAgICAg IGFjdGl2ZTogdHJ1ZSwKICAgICAgICAgICAgIHJvbGU6IHVuZGVmaW5lZCwKICAgICAgICAgICAg IG5ld1Bhc3N3b3JkOiB1bmRlZmluZWQsCiAgICAgICAgICAgICBjb25maXJtUGFzc3dvcmQ6IHVu ZGVmaW5lZCwKKyAgICAgICAgICAgIGF1dGhfb25seV9pbnRlcm5hbDogdHJ1ZSwKICAgICAgICAg ICB9LAogICAgICAgICAgIHNjaGVtYTogW3sKKyAgICAgICAgICAgIGlkOiAndXNlcm5hbWUnLAor ICAgICAgICAgICAgbGFiZWw6IGdldHRleHQoJ1VzZXJuYW1lJyksCisgICAgICAgICAgICB0eXBl OiAndGV4dCcsCisgICAgICAgICAgICBjZWxsOiBCYWNrZ3JpZC5FeHRlbnNpb24uU3RyaW5nRGVw Q2VsbCwKKyAgICAgICAgICAgIGNlbGxIZWFkZXJDbGFzc2VzOiAnd2lkdGhfcGVyY2VudF8zMCcs CisgICAgICAgICAgICBkZXBzOiBbJ2lkJ10sCisgICAgICAgICAgICB2aXNpYmxlOiBmdW5jdGlv bihtKSB7CisgICAgICAgICAgICAgIGlmIChtLmdldCgnYXV0aF9vbmx5X2ludGVybmFsJykpIHJl dHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9LAor ICAgICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLAorICAgICAgICAgIH0sewogICAgICAgICAgICAg aWQ6ICdlbWFpbCcsCiAgICAgICAgICAgICBsYWJlbDogZ2V0dGV4dCgnRW1haWwnKSwKICAgICAg ICAgICAgIHR5cGU6ICd0ZXh0JywKQEAgLTI1Niw2ICsyNzAsOCBAQCBkZWZpbmUoWwogICAgICAg ICAgICAgY2VsbEhlYWRlckNsYXNzZXM6ICd3aWR0aF9wZXJjZW50XzMwJywKICAgICAgICAgICAg IGRlcHM6IFsnaWQnXSwKICAgICAgICAgICAgIGVkaXRhYmxlOiBmdW5jdGlvbihtKSB7CisgICAg ICAgICAgICAgIGlmICghbS5nZXQoJ2F1dGhfb25seV9pbnRlcm5hbCcpKSByZXR1cm4gdHJ1ZTsK KwogICAgICAgICAgICAgICBpZiAobSBpbnN0YW5jZW9mIEJhY2tib25lLkNvbGxlY3Rpb24pIHsK ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgIH0KQEAgLTM0NCw3 ICszNjAsNyBAQCBkZWZpbmUoWwogICAgICAgICAgICAgICBjaGFuZ2VkQXR0cnMgPSB0aGlzLmNo YW5nZWQgfHwge30sCiAgICAgICAgICAgICAgIGVtYWlsX2ZpbHRlciA9IC9eW2EtekEtWjAtOS4h IyQlJicqK1wvPT9eX2B7fH1+LV0rQFthLXpBLVowLTldKD86W2EtekEtWjAtOS1dezAsNjF9W2Et ekEtWjAtOV0pPyg/OlwuW2EtekEtWjAtOV0oPzpbYS16QS1aMC05LV17MCw2MX1bYS16QS1aMC05 XSk/KSokLzsKIAotICAgICAgICAgICAgaWYgKCgnZW1haWwnIGluIGNoYW5nZWRBdHRycyB8fCAh dGhpcy5pc05ldygpKSAmJiAoXy5pc1VuZGVmaW5lZCh0aGlzLmdldCgnZW1haWwnKSkgfHwKKyAg ICAgICAgICAgIGlmICh0aGlzLmdldCgnYXV0aF9vbmx5X2ludGVybmFsJykgPT09IHRydWUgJiYg KCdlbWFpbCcgaW4gY2hhbmdlZEF0dHJzIHx8ICF0aGlzLmlzTmV3KCkpICYmIChfLmlzVW5kZWZp bmVkKHRoaXMuZ2V0KCdlbWFpbCcpKSB8fAogICAgICAgICAgICAgICAgIF8uaXNOdWxsKHRoaXMu Z2V0KCdlbWFpbCcpKSB8fAogICAgICAgICAgICAgICAgIFN0cmluZyh0aGlzLmdldCgnZW1haWwn KSkucmVwbGFjZSgvXlxzK3xccyskL2csICcnKSA9PSAnJykpIHsKICAgICAgICAgICAgICAgZXJy bXNnID0gZ2V0dGV4dCgnRW1haWwgYWRkcmVzcyBjYW5ub3QgYmUgZW1wdHkuJyk7CmRpZmYgLS1n aXQgYS93ZWIvcmVncmVzc2lvbi9weXRob25fdGVzdF91dGlscy9jc3JmX3Rlc3RfY2xpZW50LnB5 IGIvd2ViL3JlZ3Jlc3Npb24vcHl0aG9uX3Rlc3RfdXRpbHMvY3NyZl90ZXN0X2NsaWVudC5weQpp bmRleCBiYjNmN2RhNzAuLjQyYWU1MTBiNSAxMDA2NDQKLS0tIGEvd2ViL3JlZ3Jlc3Npb24vcHl0 aG9uX3Rlc3RfdXRpbHMvY3NyZl90ZXN0X2NsaWVudC5weQorKysgYi93ZWIvcmVncmVzc2lvbi9w eXRob25fdGVzdF91dGlscy9jc3JmX3Rlc3RfY2xpZW50LnB5CkBAIC0xMDksNyArMTA5LDcgQEAg Y2xhc3MgVGVzdENsaWVudCh0ZXN0aW5nLkZsYXNrQ2xpZW50KToKICAgICAgICAgICAgIGNzcmZf dG9rZW4gPSBzZWxmLmdlbmVyYXRlX2NzcmZfdG9rZW4oKQogCiAgICAgICAgIHJlcyA9IHNlbGYu cG9zdCgKLSAgICAgICAgICAgICcvbG9naW4nLCBkYXRhPWRpY3QoCisgICAgICAgICAgICAnL2F1 dGhlbnRpY2F0ZS9sb2dpbicsIGRhdGE9ZGljdCgKICAgICAgICAgICAgICAgICBlbWFpbD1lbWFp bCwgcGFzc3dvcmQ9cGFzc3dvcmQsCiAgICAgICAgICAgICAgICAgY3NyZl90b2tlbj1jc3JmX3Rv a2VuLAogICAgICAgICAgICAgKSwKQEAgLTEyMCw1ICsxMjAsNSBAQCBjbGFzcyBUZXN0Q2xpZW50 KHRlc3RpbmcuRmxhc2tDbGllbnQpOgogICAgICAgICByZXR1cm4gcmVzCiAKICAgICBkZWYgbG9n b3V0KHNlbGYpOgotICAgICAgICByZXMgPSBzZWxmLmdldCgnL2xvZ291dCcsIGZvbGxvd19yZWRp cmVjdHM9RmFsc2UpCisgICAgICAgIHJlcyA9IHNlbGYuZ2V0KCcvbG9nb3V0P25leHQ9L2Jyb3dz ZXIvJywgZm9sbG93X3JlZGlyZWN0cz1GYWxzZSkKICAgICAgICAgc2VsZi5jc3JmX3Rva2VuID0g Tm9uZQpkaWZmIC0tZ2l0IGEvd2ViL3JlZ3Jlc3Npb24vcnVudGVzdHMucHkgYi93ZWIvcmVncmVz c2lvbi9ydW50ZXN0cy5weQppbmRleCBlZjViNDYzMjguLmZjZjczYTg4NiAxMDA2NDQKLS0tIGEv d2ViL3JlZ3Jlc3Npb24vcnVudGVzdHMucHkKKysrIGIvd2ViL3JlZ3Jlc3Npb24vcnVudGVzdHMu cHkKQEAgLTExOCw2ICsxMTgsMTEgQEAgYXBwLlBHQURNSU5fUlVOVElNRSA9IFRydWUKIGlmIGNv bmZpZy5TRVJWRVJfTU9ERSBpcyBUcnVlOgogICAgIGFwcC5QR0FETUlOX1JVTlRJTUUgPSBGYWxz ZQogYXBwLmNvbmZpZ1snV1RGX0NTUkZfRU5BQkxFRCddID0gVHJ1ZQorCisjIEF1dGhlbnRpY2F0 aW9uIHNvdXJjZXMKK2FwcC5QR0FETUlOX0RFRkFVTFRfQVVUSF9TT1VSQ0UgPSAnaW50ZXJuYWwn CithcHAuUEdBRE1JTl9FWFRFUk5BTF9BVVRIX1NPVVJDRSA9ICdsZGFwJworCiBhcHAudGVzdF9j bGllbnRfY2xhc3MgPSBUZXN0Q2xpZW50CiB0ZXN0X2NsaWVudCA9IGFwcC50ZXN0X2NsaWVudCgp CiB0ZXN0X2NsaWVudC5zZXRBcHAoYXBwKQpAQCAtMTk1LDYgKzIwMCw4IEBAIGRlZiBnZXRfdGVz dF9tb2R1bGVzKGFyZ3VtZW50cyk6CiAgICAgICAgICAgICAiYnJvd3Nlci50ZXN0cy50ZXN0X2xv Z2luIiwKICAgICAgICAgICAgICJicm93c2VyLnRlc3RzLnRlc3RfbG9nb3V0IiwKICAgICAgICAg ICAgICJicm93c2VyLnRlc3RzLnRlc3RfcmVzZXRfcGFzc3dvcmQiLAorICAgICAgICAgICAgImJy b3dzZXIudGVzdHMudGVzdF9sZGFwX2xvZ2luIiwKKyAgICAgICAgICAgICJicm93c2VyLnRlc3Rz LnRlc3RfbGRhcF93aXRoX21vY2tpbmciLAogICAgICAgICBdKQogICAgIGlmIGFyZ3VtZW50c1sn ZXhjbHVkZSddIGlzIG5vdCBOb25lOgogICAgICAgICBleGNsdWRlX3BrZ3MgKz0gYXJndW1lbnRz WydleGNsdWRlJ10uc3BsaXQoJywnKQpkaWZmIC0tZ2l0IGEvd2ViL3JlZ3Jlc3Npb24vdGVzdF9j b25maWcuanNvbi5pbiBiL3dlYi9yZWdyZXNzaW9uL3Rlc3RfY29uZmlnLmpzb24uaW4KaW5kZXgg MTViMTMzYTE5Li4wYTE1MWU2MzMgMTAwNjQ0Ci0tLSBhL3dlYi9yZWdyZXNzaW9uL3Rlc3RfY29u ZmlnLmpzb24uaW4KKysrIGIvd2ViL3JlZ3Jlc3Npb24vdGVzdF9jb25maWcuanNvbi5pbgpAQCAt MTEsNiArMTEsNDkgQEAKICAgICAibG9naW5fcGFzc3dvcmQiOiAiUEFTU1dPUkQiLAogICAgICJs b2dpbl91c2VybmFtZSI6ICJVU0VSQEVYQU1QTEUuQ09NIgogICB9LAorICAicGdBZG1pbjRfbGRh cF9jcmVkZW50aWFscyI6IHsKKyAgICAibG9naW5fcGFzc3dvcmQiOiAiUEFTU1dPUkQiLAorICAg ICJsb2dpbl91c2VybmFtZSI6ICJVU0VSTkFNRSIKKyAgfSwKKyAgImxkYXBfY29uZmlnIjogWwor ICAgIHsKKyAgICAibGRhcCI6IHsKKyAgICAgICJuYW1lIjogIkxkYXAgc2NlbmFyaW8gbmFtZSIK KyAgICAgICJ1cmkiOiAibGRhcDovL0lQLUFERFJFU1MvSE9TVE5BTUU6Mzg5IiwKKyAgICAgICJi YXNlX2RuIjogIkJBU0UtRE4iLAorICAgICAgInNlYXJjaF9iYXNlX2RuIjogIlNFQVJDSC1CQVNF LUROIiwKKyAgICAgICJ1c2VybmFtZV9hdHIiOiAiVUlEIiwKKyAgICAgICJzZWFyY2hfZmlsdGVy IjogIihvYmplY3RjbGFzcz0qKSIsCisgICAgICAidXNlX3N0YXJ0dGxzIjogZmFsc2UsCisgICAg ICAiY2FfY2VydF9maWxlIjogIiIsCisgICAgICAiY2VydF9maWxlIjogIiIsCisgICAgICAia2V5 X2ZpbGUiOiAiIgorICAgIH0sCisgICAgImxkYXBfd2l0aF9zc2wiOiB7CisgICAgICAibmFtZSI6 ICJMZGFwIHNjZW5hcmlvIG5hbWUiCisgICAgICAidXJpIjogImxkYXBzOi8vSVAtQUREUkVTUy9I T1NUTkFNRTo2MzYiLAorICAgICAgImJhc2VfZG4iOiAiQkFTRS1ETiIsCisgICAgICAic2VhcmNo X2Jhc2VfZG4iOiAiU0VBUkNILUJBU0UtRE4iLAorICAgICAgInVzZXJuYW1lX2F0ciI6ICJVSUQi LAorICAgICAgInNlYXJjaF9maWx0ZXIiOiAiKG9iamVjdGNsYXNzPSopIiwKKyAgICAgICJ1c2Vf c3RhcnR0bHMiOiBmYWxzZSwKKyAgICAgICJjYV9jZXJ0X2ZpbGUiOiAiIiwKKyAgICAgICJjZXJ0 X2ZpbGUiOiAiIiwKKyAgICAgICJrZXlfZmlsZSI6ICIiCisgICAgfSwKKyAgICAibGRhcF93aXRo X3RscyI6IHsKKyAgICAgICJuYW1lIjogIkxkYXAgc2NlbmFyaW8gbmFtZSIKKyAgICAgICJ1cmki OiAibGRhcDovL0lQLUFERFJFU1MvSE9TVE5BTUU6Mzg5IiwKKyAgICAgICJiYXNlX2RuIjogIkJB U0UtRE4iLAorICAgICAgInNlYXJjaF9iYXNlX2RuIjogIlNFQVJDSC1CQVNFLUROIiwKKyAgICAg ICJ1c2VybmFtZV9hdHIiOiAiVUlEIiwKKyAgICAgICJzZWFyY2hfZmlsdGVyIjogIihvYmplY3Rj bGFzcz0qKSIsCisgICAgICAidXNlX3N0YXJ0dGxzIjogdHJ1ZSwKKyAgICAgICJjYV9jZXJ0X2Zp bGUiOiAiIiwKKyAgICAgICJjZXJ0X2ZpbGUiOiAiIiwKKyAgICAgICJrZXlfZmlsZSI6ICIiCisg ICAgfQorICB9XSwKICAgInNlcnZlcl9ncm91cCI6IDEsCiAgICJzZXJ2ZXJfY3JlZGVudGlhbHMi OiBbCiAgICAgewo= --000000000000bd2e1605a192a823--