Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1kzxkS-0001yA-V0 for pgadmin-hackers@arkaria.postgresql.org; Thu, 14 Jan 2021 08:12:53 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1kzxkR-0001IN-7N for pgadmin-hackers@arkaria.postgresql.org; Thu, 14 Jan 2021 08:12:51 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1kzxkQ-0001I5-Cc for pgadmin-hackers@lists.postgresql.org; Thu, 14 Jan 2021 08:12:50 +0000 Received: from mail-lj1-x234.google.com ([2a00:1450:4864:20::234]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1kzxkH-0002uQ-Nm for pgadmin-hackers@postgresql.org; Thu, 14 Jan 2021 08:12:48 +0000 Received: by mail-lj1-x234.google.com with SMTP id u11so5415994ljo.13 for ; Thu, 14 Jan 2021 00:12:41 -0800 (PST) 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=jIM4JbGNOBWuQAZC1W/AxDDRnhxm7Z9OsV5el+VMMYk=; b=KnypizJmzRSeRLQALaM3YhGQbvCfqp/iPHLugNSIuEbAQ0o8DM/fQ9i6pOzJ7sAmll /EL6UMmZq+4CgcyZJY5AYfYLakB+R5z2GPLFG+ID1Zq6O8yQentCUCfUuFQs868FPyJq 7Wt64k5gyhkLZEANwUTl0IPpgXp/bcDud5X5Eo7TL7vx6t3P2KK+0X02yWLoLTv393HA 6MxDgFLMbQ5llr/uELgqraKovuZ1uk2yrqH1vViQvq5bQobd5uuzAg6nRPqNyzTumeV7 alI9RrfWRxSuJRna5syQhkOY7++bcgI2pyIeCtjrC43ArohNjXy1ZJmKGPLPjNprxZiN M3KQ== 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=jIM4JbGNOBWuQAZC1W/AxDDRnhxm7Z9OsV5el+VMMYk=; b=hjYw2qavOwN2PtAI5rt0LZLyReiyzwn7BPmN3d0aotFb+qmcjAijiv0rs7OvXt1JJe x5Wh5ylLp9ApBE9hIsMgH6+zpjx7TKXSqgNhZWKkuE9oD2vN3YY2Cfhp84SS8V6BNzD0 A9o9lKx3ZAAuzThEAloEewr3X2oro68BGfF8456Cd/4RKoAacW056OSgthE97rLnbvUW GUFF8XqsSfhTOhiDwcvK+n7hOWiXnm9sO4rw6OiZ8hEJMr+2mEQTqEJMVsznGSaAcHMV iklvBots+NwuRGV/Y+QJRDHAtcM6WaHu4GHyMAG5BAsoWaApkd6ND8AcQcfonHACjewT fpYQ== X-Gm-Message-State: AOAM531A1b8UiWXYKcIxW8TRCQQ4W7l/Brvplzn138Hy1kJLEBCFvrTQ VgH6YHZT0wgEQGZ9hr4qc1jCZrY7Xds9IdPtEWjX0/rocrULRt+UHJ42ywCwDgZBxNmSnq21+AV 3o7hAX/qjMzESW7VtTS5muKiyHciju9F8JtD6PG9ByawmbJUCJWLOxYys+e/AVW+65PNi6E8FUr tdotU9tCYNRaSua12CG80GHGQOovLe8lzIijTQRtybNlzrdfSkhn01RKJXlQ== X-Google-Smtp-Source: ABdhPJyRWD5Vg1srK5KeaTnJR/sVmZjD+RvzFG2A08pJP/+41NpfgjwvhPDKRGr9G1JXJhuNziB/LcWXFjdDgzNCKRQ= X-Received: by 2002:a05:651c:1254:: with SMTP id h20mr2593246ljh.211.1610611958846; Thu, 14 Jan 2021 00:12:38 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Khushboo Vashi Date: Thu, 14 Jan 2021 13:42:36 +0530 Message-ID: Subject: Re: [pgAdmin4][Patch] - RM 5457 - Kerberos Authentication - Phase 1 To: Akshay Joshi Cc: Aditya Toshniwal , pgadmin-hackers Content-Type: multipart/mixed; boundary="000000000000adcfbe05b8d7d1cb" X-CLOUD-SEC-AV-Info: enterprisedb,google_mail,monitor X-CLOUD-SEC-AV-Sent: true X-Gm-Spam: 0 X-Gm-Phishy: 0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --000000000000adcfbe05b8d7d1cb Content-Type: multipart/alternative; boundary="000000000000adcfbb05b8d7d1c9" --000000000000adcfbb05b8d7d1c9 Content-Type: text/plain; charset="UTF-8" Hi, Please ignore my previous patch, attached the updated one. Thanks, Khushboo On Thu, Jan 14, 2021 at 12:17 PM Khushboo Vashi < khushboo.vashi@enterprisedb.com> wrote: > Hi, > > Please find the attached updated patch. > > Thanks, > Khushboo > > On Thu, Jan 14, 2021 at 12:00 PM Akshay Joshi < > akshay.joshi@enterprisedb.com> wrote: > >> Hi Khushboo >> >> Seems you have attached the wrong patch. Please send the updated patch. >> >> On Wed, Jan 13, 2021 at 2:35 PM Khushboo Vashi < >> khushboo.vashi@enterprisedb.com> wrote: >> >>> Hi, >>> >>> Please find the attached updated patch. >>> >>> Thanks, >>> Khushboo >>> >>> On Fri, Jan 1, 2021 at 1:07 PM Aditya Toshniwal < >>> aditya.toshniwal@enterprisedb.com> wrote: >>> >>>> Hi Khushboo, >>>> >>>> I've just done the code review. Apart from below, the patch looks good >>>> to me: >>>> >>>> 1) Move the auth source constants -ldap, kerberos out of app object. >>>> They don't belong there. You can create the constants somewhere else and >>>> import them. >>>> >>>> +app.PGADMIN_LDAP_AUTH_SOURCE = 'ldap' >>>> >>>> +app.PGADMIN_KERBEROS_AUTH_SOURCE = 'kerberos' >>>> >>>> >>>> Done >>> >>>> 2) Are we going to make kerberos default for wsgi ? >>>> >>>> *--- a/web/pgAdmin4.wsgi* >>>> >>>> *+++ b/web/pgAdmin4.wsgi* >>>> >>>> @@ -24,6 +24,10 @@ builtins.SERVER_MODE = True >>>> >>>> >>>> >>>> import config >>>> >>>> >>>> >>>> + >>>> >>>> +config.AUTHENTICATION_SOURCES = ['kerberos'] >>>> >>>> +config.KERBEROS_AUTO_CREATE_USER = True >>>> >>>> + >>>> >>>> >>>> Removed, it was only for testing. >>> >>>> 3) Remove the commented code. >>>> >>>> + # if self.form.data['email'] and >>>> self.form.data['password'] and \ >>>> >>>> + # source.get_source_name() ==\ >>>> >>>> + # current_app.PGADMIN_KERBEROS_AUTH_SOURCE: >>>> >>>> + # continue >>>> >>>> >>>> Removed the comment, it is actually the part of the code. >>> >>>> 4) KERBEROSAuthentication could be KerberosAuthentication >>>> >>>> class KERBEROSAuthentication(BaseAuthentication): >>>> >>>> >>>> Done. >>> >>>> 5) You can use the constants (ldap, kerberos) you had defined when >>>> creating a user. >>>> >>>> + 'auth_source': 'kerberos' >>>> >>>> >>>> Done. >>> >>>> 6) The below URLs belong to the authenticate module. Currently they are >>>> in the browser module. I would also suggest rephrasing the URL from >>>> /kerberos_login to /login/kerberos. Same for logout. >>>> >>> Done the rephrasing as well as moved to the authentication module. >>> >>> >>>> Also, even though the method GET works, we should use the POST method >>>> for login and DELETE for logout. >>>> >>> Kerberos_login just redirects the page to the actual login, so no need >>> for the POST method. >>> I followed the same method for the Logout user we have used for the >>> normal user. >>> >>> >>>> +@blueprint.route("/kerberos_login", >>>> >>>> + endpoint="kerberos_login", methods=["GET"]) >>>> >>>> >>>> +@blueprint.route("/kerberos_logout", >>>> >>>> + endpoint="kerberos_logout", methods=["GET"]) >>>> >>>> >>>> >>>> >>> >>>> On Tue, Dec 22, 2020 at 6:07 PM Akshay Joshi < >>>> akshay.joshi@enterprisedb.com> wrote: >>>> >>>>> Hi Aditya >>>>> >>>>> Can you please do the code review? >>>>> >>>>> On Tue, Dec 22, 2020 at 3:44 PM Khushboo Vashi < >>>>> khushboo.vashi@enterprisedb.com> wrote: >>>>> >>>>>> Hi, >>>>>> >>>>>> Please find the attached patch to support Kerberos Authentication in >>>>>> pgAdmin RM 5457. >>>>>> >>>>>> The patch introduces a new pluggable option for Kerberos >>>>>> authentication, using SPNEGO to forward kerberos tickets through a browser >>>>>> which will bypass the login page entirely if the Kerberos Authentication >>>>>> succeeds. >>>>>> >>>>>> The complete setup of the Kerberos Server + pgAdmin Server + Client >>>>>> is documented in a separate file and attached. >>>>>> >>>>>> This patch also includes the small fix related to logging #5829 >>>>>> >>>>>> Thanks, >>>>>> Khushboo >>>>>> >>>>> >>>>> >>>>> -- >>>>> *Thanks & Regards* >>>>> *Akshay Joshi* >>>>> *pgAdmin Hacker | Principal Software Architect* >>>>> *EDB Postgres * >>>>> >>>>> *Mobile: +91 976-788-8246* >>>>> >>>> >>>> >>>> -- >>>> Thanks, >>>> Aditya Toshniwal >>>> pgAdmin hacker | Sr. Software Engineer | *edbpostgres.com* >>>> >>>> "Don't Complain about Heat, Plant a TREE" >>>> >>> >> >> -- >> *Thanks & Regards* >> *Akshay Joshi* >> *pgAdmin Hacker | Principal Software Architect* >> *EDB Postgres * >> >> *Mobile: +91 976-788-8246* >> > --000000000000adcfbb05b8d7d1c9 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi,=C2=A0

Please ignore my previous pat= ch, attached the updated one.

Thanks,
Kh= ushboo

On Thu, Jan 14, 2021 at 12:17 PM Khushboo Vashi <khushboo.vashi@enterprisedb.com= > wrote:
Hi,

Please find the attached upd= ated patch.

Thanks,
Khushboo

On Thu, Jan = 14, 2021 at 12:00 PM Akshay Joshi <akshay.joshi@enterprisedb.com> wrote:<= br>
Hi=C2=A0Khushboo

Seems you have attached the wrong patc= h. Please send the updated patch.

On Wed, Jan 13, 2021 at 2:35 PM Khus= hboo Vashi <khushboo.vashi@enterprisedb.com> wrote:
H= i,

Please find the attached updated patch.
Thanks,
Khushboo

On Fri, Jan 1, 2021 at 1:07 PM = Aditya Toshniwal <aditya.toshniwal@enterprisedb.com> wrote:
=
Hi Khushboo,

I've just done the code review. Apart from below, the patch loo= ks good to me:

1) Move the auth source cons= tants -ldap, kerberos out of app object. They don't belong there. You c= an create the constants somewhere=C2=A0else and import them.

+app.PGADMIN_LDAP_AUTH_SOURCE =3D 'ldap'

+app.PGADMIN_KERBEROS_AUTH_SOURCE =3D 'kerberos'


Done=C2= =A0

2) A= re we going to make kerberos default for wsgi ?

--- a/web/pgAdmin4.wsgi

+++ b/web/pgAdmin4.wsgi

@@ -24,6 +24,10 @@<= /span> builtins.= SERVER_MODE =3D True

=C2=A0

=C2=A0import config

=C2=A0

+

+config.AUTHENTICATION_SOURCES =3D ['kerberos']

+config.KERBEROS_AUTO_C= REATE_USER =3D True

+


Removed, it was only for testing.=C2=A0

3) Remove the commented code.

+=C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 # if self.form.data['email'] and self.form= .data['password'] and \

+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 # =C2=A0 =C2=A0 =C2=A0 =C2=A0 source.get_source_name() =3D=3D\=

+=C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 # =C2=A0 =C2=A0 =C2=A0 =C2=A0 = current_app.PGADMIN_KERBEROS_AUTH_SOURCE:

+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 # =C2=A0 =C2=A0 continue


=
Removed the comment, it is actually the part = of the code.=C2=A0
<= div dir=3D"ltr">

class KERBEROSAuthentication(BaseAuthentication):


Done.=C2=A0
=

5) You can use the = constants (ldap, kerberos) you had defined when creating a user.

+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 'auth_source': 'kerberos'


Done.=C2=A0=

6) The below URL= s belong to the authenticate module. Currently they are in the browser modu= le. I would also suggest rephrasing the URL from /kerberos_login to /login/= kerberos. Same for logout.
Done the re= phrasing as well as moved to the authentication module.
=C2=A0
= Also, even though the method GET works, = we should use the POST method for login and DELETE for logout.
=
Kerberos_login just redirects the page to the actua= l login, so no need for the POST method.
I followed the same meth= od for the Logout user we have used for the normal user.
=C2=A0

+@blueprint.route("/ke= rberos_login",

+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 endpoint=3D"kerberos_login", methods=3D["G= ET"])


+@blueprint.route("/kerberos_logout",

<= p style=3D"font-family:Menlo;margin:0px;font-variant-numeric:normal;font-va= riant-east-asian:normal;font-stretch:normal;font-size:16px;line-height:norm= al;color:rgb(57,192,38)">

+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 endpoint=3D"kerberos_logout", methods=3D["= GET"])



=C2=A0
On Tue, = Dec 22, 2020 at 6:07 PM Akshay Joshi <akshay.joshi@enterprisedb.com> wrot= e:
Hi Aditya

Can you please do the code review?



--


--
Thanks,
Aditya Toshniwal=
pgAdmin hacker=C2=A0| Sr. Software Engineer | edbpostgres.com
&quo= t;Don't Complain about Heat, Plant a TREE"


--
Thank= s & Regards
Akshay Joshi
pgAdmin Hacker | Principal Softw= are Architect
EDB Po= stgres
Mobile: +91 976-788-8246

--000000000000adcfbb05b8d7d1c9-- --000000000000adcfbe05b8d7d1cb Content-Type: application/octet-stream; name="RM_5457_v3.patch" Content-Disposition: attachment; filename="RM_5457_v3.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kjwko6si0 ZGlmZiAtLWdpdCBhL3JlcXVpcmVtZW50cy50eHQgYi9yZXF1aXJlbWVudHMudHh0CmluZGV4IGYz OTFjMDhkZi4uMjVhY2I1MzMyIDEwMDY0NAotLS0gYS9yZXF1aXJlbWVudHMudHh0CisrKyBiL3Jl cXVpcmVtZW50cy50eHQKQEAgLTQzLDMgKzQzLDQgQEAgY3J5cHRvZ3JhcGh5PD0zLjA7CiBzc2h0 dW5uZWw+PTAuMS41CiBsZGFwMz49Mi41LjEKIEZsYXNrLUJhYmVsRXg+PTAuOS40Citnc3NhcGk+ PTEuNi4xMQpkaWZmIC0tZ2l0IGEvd2ViL2NvbmZpZy5weSBiL3dlYi9jb25maWcucHkKaW5kZXgg MmIzMTRmZTY5Li5kMDJhOTEzODAgMTAwNjQ0Ci0tLSBhL3dlYi9jb25maWcucHkKKysrIGIvd2Vi L2NvbmZpZy5weQpAQCAtNTM1LDcgKzUzNSw3IEBAIEVOSEFOQ0VEX0NPT0tJRV9QUk9URUNUSU9O ID0gVHJ1ZQogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIAogIyBEZWZhdWx0IHNldHRpbmcgaXMgaW50ZXJu YWwKLSMgRXh0ZXJuYWwgU3VwcG9ydGVkIFNvdXJjZXM6IGxkYXAKKyMgRXh0ZXJuYWwgU3VwcG9y dGVkIFNvdXJjZXM6IGxkYXAsIGtlcmJlcm9zCiAjIE11bHRpcGxlIGF1dGhlbnRpY2F0aW9uIGNh biBiZSBhY2hpZXZlZCBieSBzZXR0aW5nIHRoaXMgcGFyYW1ldGVyIHRvCiAjIFsnbGRhcCcsICdp bnRlcm5hbCddLiBwZ0FkbWluIHdpbGwgYXV0aGVudGljYXRlIHRoZSB1c2VyIHdpdGggbGRhcCBm aXJzdCwKICMgaW4gY2FzZSBvZiBmYWlsdXJlIGludGVybmFsIGF1dGhlbnRpY2F0aW9uIHdpbGwg YmUgZG9uZS4KQEAgLTYxOCw2ICs2MTgsMjYgQEAgTERBUF9DQV9DRVJUX0ZJTEUgPSAnJwogTERB UF9DRVJUX0ZJTEUgPSAnJwogTERBUF9LRVlfRklMRSA9ICcnCiAKKworIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMKKyMgS2VyYmVyb3MgQ29uZmlndXJhdGlvbgorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworS1JCX0FQ UF9IT1NUX05BTUUgPSBERUZBVUxUX1NFUlZFUgorCisjIElmIHRoZSBkZWZhdWx0X2tleXRhYl9u YW1lIGlzIG5vdCBzZXQgaW4ga3JiNS5jb25mIG9yCisjIHRoZSBLUkJfS1ROQU1FIGVudmlyb25t ZW50IHZhcmlhYmxlIGlzIG5vdCBzZXQgdGhlbiwgZXhwbGljaXRseSBzZXQKKyMgdGhlIEtleXRh YiBmaWxlCisKK0tSQl9LVE5BTUUgPSAnPEtSQjVfS0VZVEFCX0ZJTEU+JworCisjIEFmdGVyIGtl cmJlcm9zIGF1dGhlbnRpY2F0aW9uLCB1c2VyIHdpbGwgYmUgYWRkZWQgaW50byB0aGUgU1FMaXRl IGRhdGFiYXNlCisjIGF1dG9tYXRpY2FsbHksIGlmIHNldCB0byBUcnVlLgorIyBTZXQgaXQgdG8g RmFsc2UsIGlmIHVzZXIgc2hvdWxkIG5vdCBiZSBhZGRlZCBhdXRvbWF0aWNhbGx5LAorIyBpbiB0 aGlzIGNhc2UgQWRtaW4gaGFzIHRvIGFkZCB0aGUgdXNlciBtYW51YWxseSBpbiB0aGUgU1FMaXRl IGRhdGFiYXNlLgorCitLUkJfQVVUT19DUkVBVEVfVVNFUiA9IFRydWUKKwogIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKICMgTG9jYWwgY29uZmlnIHNldHRpbmdzCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpkaWZmIC0t Z2l0IGEvd2ViL3BnQWRtaW40LnB5IGIvd2ViL3BnQWRtaW40LnB5CmluZGV4IGZmOWMwMGY1MC4u MTRhZmU3ZGMxIDEwMDY0NAotLS0gYS93ZWIvcGdBZG1pbjQucHkKKysrIGIvd2ViL3BnQWRtaW40 LnB5CkBAIC0zNSw2ICszNSw5IEBAIGVsc2U6CiBpbXBvcnQgY29uZmlnCiBmcm9tIHBnYWRtaW4g aW1wb3J0IGNyZWF0ZV9hcHAKIGZyb20gcGdhZG1pbi51dGlscyBpbXBvcnQgdV9lbmNvZGUsIGZz X2VuY29kaW5nLCBmaWxlX3F1b3RlCitmcm9tIHBnYWRtaW4udXRpbHMuY29uc3RhbnRzIGltcG9y dCBJTlRFUk5BTCwgTERBUCxcCisgICAgS0VSQkVST1MsIFNVUFBPUlRFRF9BVVRIX1NPVVJDRVMK KwogIyBHZXQgdGhlIGNvbmZpZyBkYXRhYmFzZSBzY2hlbWEgdmVyc2lvbi4gV2Ugc3RvcmUgdGhp cyBpbiBwZ2FkbWluLm1vZGVsCiAjIGFzIGl0IHR1cm5zIG91dCB0aGF0IHB1dHRpbmcgaXQgaW4g dGhlIGNvbmZpZyBmaWxlcyBpc24ndCBhIGdyZWF0IGlkZWEKIGZyb20gcGdhZG1pbi5tb2RlbCBp bXBvcnQgU0NIRU1BX1ZFUlNJT04KQEAgLTk2LDE1ICs5OSwxMSBAQCBpZiBjb25maWcuU0VSVkVS X01PREU6CiAgICAgYXBwLndzZ2lfYXBwID0gUmV2ZXJzZVByb3hpZWQoYXBwLndzZ2lfYXBwKQog CiAjIEF1dGhlbnRpY2F0aW9uIHNvdXJjZXMKLWFwcC5QR0FETUlOX0RFRkFVTFRfQVVUSF9TT1VS Q0UgPSAnaW50ZXJuYWwnCi1hcHAuUEdBRE1JTl9TVVBQT1JURURfQVVUSF9TT1VSQ0UgPSBbJ2lu dGVybmFsJywgJ2xkYXAnXQorCiBpZiBsZW4oY29uZmlnLkFVVEhFTlRJQ0FUSU9OX1NPVVJDRVMp ID4gMDoKICAgICBhcHAuUEdBRE1JTl9FWFRFUk5BTF9BVVRIX1NPVVJDRSA9IGNvbmZpZy5BVVRI RU5USUNBVElPTl9TT1VSQ0VTWzBdCiBlbHNlOgotICAgIGFwcC5QR0FETUlOX0VYVEVSTkFMX0FV VEhfU09VUkNFID0gYXBwLlBHQURNSU5fREVGQVVMVF9BVVRIX1NPVVJDRQotCi1hcHAubG9nZ2Vy LmRlYnVnKAotICAgICJBdXRoZW50aWNhdGlvbiBTb3VyY2U6ICVzIiAlIGFwcC5QR0FETUlOX0RF RkFVTFRfQVVUSF9TT1VSQ0UpCisgICAgYXBwLlBHQURNSU5fRVhURVJOQUxfQVVUSF9TT1VSQ0Ug PSBJTlRFUk5BTAogCiAjIFN0YXJ0IHRoZSB3ZWIgc2VydmVyLiBUaGUgcG9ydCBudW1iZXIgc2hv dWxkIGhhdmUgYWxyZWFkeSBiZWVuIHNldCBieSB0aGUKICMgcnVudGltZSBpZiB3ZSdyZSBydW5u aW5nIGluIGRlc2t0b3AgbW9kZSwgb3RoZXJ3aXNlIHdlJ2xsIGp1c3QgdXNlIHRoZQpkaWZmIC0t Z2l0IGEvd2ViL3BnYWRtaW4vX19pbml0X18ucHkgYi93ZWIvcGdhZG1pbi9fX2luaXRfXy5weQpp bmRleCBkYWUwYjhjZDIuLmE3MzMzNTM3MSAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vX19pbml0 X18ucHkKKysrIGIvd2ViL3BnYWRtaW4vX19pbml0X18ucHkKQEAgLTQzLDYgKzQzLDcgQEAgZnJv bSBwZ2FkbWluLnV0aWxzLmFqYXggaW1wb3J0IGludGVybmFsX3NlcnZlcl9lcnJvciwgbWFrZV9q c29uX3Jlc3BvbnNlCiBmcm9tIHBnYWRtaW4udXRpbHMuY3NyZiBpbXBvcnQgcGdDU1JGUHJvdGVj dAogZnJvbSBwZ2FkbWluIGltcG9ydCBhdXRoZW50aWNhdGUKIGZyb20gcGdhZG1pbi51dGlscy5z ZWN1cml0eV9oZWFkZXJzIGltcG9ydCBTZWN1cml0eUhlYWRlcnMKK2Zyb20gcGdhZG1pbi51dGls cy5jb25zdGFudHMgaW1wb3J0IEtFUkJFUk9TCiAKICMgRXhwbGljaXRseSBzZXQgdGhlIG1pbWUt dHlwZXMgc28gdGhhdCBhIGNvcnJ1cHRlZCB3aW5kb3dzIHJlZ2lzdHJ5IHdpbGwgbm90CiAjIGFm ZmVjdCBwZ0FkbWluIDQgdG8gYmUgbG9hZCBwcm9wZXJseS4gVGhpcyB3aWxsIGF2b2lkIHRoZSBp c3N1ZXMgdGhhdCBtYXkKQEAgLTY3NCw2ICs2NzUsNyBAQCBkZWYgY3JlYXRlX2FwcChhcHBfbmFt ZT1Ob25lKToKIAogICAgICAgICAjIENoZWNrIHRoZSBhdXRoIGtleSBpcyB2YWxpZCwgaWYgaXQn cyBzZXQsIGFuZCB3ZSdyZSBub3QgaW4gc2VydmVyCiAgICAgICAgICMgbW9kZSwgYW5kIGl0J3Mg bm90IGEgaGVscCBmaWxlIHJlcXVlc3QuCisKICAgICAgICAgaWYgbm90IGNvbmZpZy5TRVJWRVJf TU9ERSBhbmQgYXBwLlBHQURNSU5fSU5UX0tFWSAhPSAnJyBhbmQgKCgKICAgICAgICAgICAgICdr ZXknIG5vdCBpbiByZXF1ZXN0LmFyZ3Mgb3IKICAgICAgICAgICAgIHJlcXVlc3QuYXJnc1sna2V5 J10gIT0gYXBwLlBHQURNSU5fSU5UX0tFWSkgYW5kCkBAIC02OTUsMTEgKzY5NywxOSBAQCBkZWYg Y3JlYXRlX2FwcChhcHBfbmFtZT1Ob25lKToKICAgICAgICAgICAgICAgICApCiAgICAgICAgICAg ICAgICAgYWJvcnQoNDAxKQogICAgICAgICAgICAgbG9naW5fdXNlcih1c2VyKQorICAgICAgICBl bGlmIGNvbmZpZy5TRVJWRVJfTU9ERSBhbmRcCisgICAgICAgICAgICAgICAgYXBwLlBHQURNSU5f RVhURVJOQUxfQVVUSF9TT1VSQ0UgPT1cCisgICAgICAgICAgICAgICAgS0VSQkVST1MgYW5kIFwK KyAgICAgICAgICAgICAgICBub3QgY3VycmVudF91c2VyLmlzX2F1dGhlbnRpY2F0ZWQgYW5kIFwK KyAgICAgICAgICAgICAgICByZXF1ZXN0LmVuZHBvaW50IGluICgncmVkaXJlY3RzLmluZGV4Jywg J3NlY3VyaXR5LmxvZ2luJyk6CisgICAgICAgICAgICByZXR1cm4gYXV0aGVudGljYXRlLmxvZ2lu KCkKIAogICAgICAgICAjIGlmIHRoZSBzZXJ2ZXIgaXMgcmVzdGFydGVkIHRoZSBpbiBtZW1vcnkg a2V5IHdpbGwgYmUgbG9zdAogICAgICAgICAjIGJ1dCB0aGUgdXNlciBzZXNzaW9uIG1heSBzdGls bCBiZSBhY3RpdmUuIExvZ291dCB0aGUgdXNlcgogICAgICAgICAjIHRvIGdldCB0aGUga2V5IGFn YWluIHdoZW4gbG9naW4KICAgICAgICAgaWYgY29uZmlnLlNFUlZFUl9NT0RFIGFuZCBjdXJyZW50 X3VzZXIuaXNfYXV0aGVudGljYXRlZCBhbmQgXAorICAgICAgICAgICAgICAgIGFwcC5QR0FETUlO X0VYVEVSTkFMX0FVVEhfU09VUkNFICE9IFwKKyAgICAgICAgICAgICAgICBLRVJCRVJPUyBhbmQg XAogICAgICAgICAgICAgICAgIGN1cnJlbnRfYXBwLmtleU1hbmFnZXIuZ2V0KCkgaXMgTm9uZSBh bmQgXAogICAgICAgICAgICAgICAgIHJlcXVlc3QuZW5kcG9pbnQgbm90IGluICgnc2VjdXJpdHku bG9naW4nLCAnc2VjdXJpdHkubG9nb3V0Jyk6CiAgICAgICAgICAgICBsb2dvdXRfdXNlcigpCmRp ZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9hdXRoZW50aWNhdGUvX19pbml0X18ucHkgYi93ZWIvcGdh ZG1pbi9hdXRoZW50aWNhdGUvX19pbml0X18ucHkKaW5kZXggN2VkZTczY2Q4Li4xZmRiNjZjZjcg MTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2F1dGhlbnRpY2F0ZS9fX2luaXRfXy5weQorKysgYi93 ZWIvcGdhZG1pbi9hdXRoZW50aWNhdGUvX19pbml0X18ucHkKQEAgLTExLDE2ICsxMSwyMSBAQAog CiBpbXBvcnQgZmxhc2sKIGltcG9ydCBwaWNrbGUKLWZyb20gZmxhc2sgaW1wb3J0IGN1cnJlbnRf YXBwLCBmbGFzaAorZnJvbSBmbGFzayBpbXBvcnQgY3VycmVudF9hcHAsIGZsYXNoLCBSZXNwb25z ZSwgcmVxdWVzdCwgdXJsX2ZvcixcCisgICAgcmVuZGVyX3RlbXBsYXRlCiBmcm9tIGZsYXNrX2Jh YmVsZXggaW1wb3J0IGdldHRleHQKIGZyb20gZmxhc2tfc2VjdXJpdHkgaW1wb3J0IGN1cnJlbnRf dXNlcgogZnJvbSBmbGFza19zZWN1cml0eS52aWV3cyBpbXBvcnQgX3NlY3VyaXR5LCBfY3R4CiBm cm9tIGZsYXNrX3NlY3VyaXR5LnV0aWxzIGltcG9ydCBjb25maWdfdmFsdWUsIGdldF9wb3N0X2xv Z291dF9yZWRpcmVjdCwgXAotICAgIGdldF9wb3N0X2xvZ2luX3JlZGlyZWN0CisgICAgZ2V0X3Bv c3RfbG9naW5fcmVkaXJlY3QsIGxvZ291dF91c2VyCisKIGZyb20gZmxhc2sgaW1wb3J0IHNlc3Np b24KIAogaW1wb3J0IGNvbmZpZwogZnJvbSBwZ2FkbWluLnV0aWxzIGltcG9ydCBQZ0FkbWluTW9k dWxlCitmcm9tIHBnYWRtaW4udXRpbHMuY29uc3RhbnRzIGltcG9ydCBLRVJCRVJPUworZnJvbSBw Z2FkbWluLnV0aWxzLmNzcmYgaW1wb3J0IHBnQ1NSRlByb3RlY3QKKwogZnJvbSAucmVnaXN0cnkg aW1wb3J0IEF1dGhTb3VyY2VSZWdpc3RyeQogCiBNT0RVTEVfTkFNRSA9ICdhdXRoZW50aWNhdGUn CkBAIC0yOCwxMiArMzMsMzQgQEAgTU9EVUxFX05BTUUgPSAnYXV0aGVudGljYXRlJwogCiBjbGFz cyBBdXRoZW50aWNhdGVNb2R1bGUoUGdBZG1pbk1vZHVsZSk6CiAgICAgZGVmIGdldF9leHBvc2Vk X3VybF9lbmRwb2ludHMoc2VsZik6Ci0gICAgICAgIHJldHVybiBbJ2F1dGhlbnRpY2F0ZS5sb2dp biddCisgICAgICAgIHJldHVybiBbJ2F1dGhlbnRpY2F0ZS5sb2dpbicsCisgICAgICAgICAgICAg ICAgJ2F1dGhlbnRpY2F0ZS5rZXJiZXJvc19sb2dpbicsCisgICAgICAgICAgICAgICAgJ2F1dGhl bnRpY2F0ZS5rZXJiZXJvc19sb2dvdXQnXQogCiAKIGJsdWVwcmludCA9IEF1dGhlbnRpY2F0ZU1v ZHVsZShNT0RVTEVfTkFNRSwgX19uYW1lX18sIHN0YXRpY191cmxfcGF0aD0nJykKIAogCitAYmx1 ZXByaW50LnJvdXRlKCIvbG9naW4va2VyYmVyb3MiLAorICAgICAgICAgICAgICAgICBlbmRwb2lu dD0ia2VyYmVyb3NfbG9naW4iLCBtZXRob2RzPVsiR0VUIl0pCitAcGdDU1JGUHJvdGVjdC5leGVt cHQKK2RlZiBrZXJiZXJvc19sb2dpbigpOgorICAgIGxvZ291dF91c2VyKCkKKyAgICByZXR1cm4g UmVzcG9uc2UocmVuZGVyX3RlbXBsYXRlKCJicm93c2VyL2tlcmJlcm9zX2xvZ2luLmh0bWwiLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9naW5fdXJsPXVybF9mb3IoJ3Nl Y3VyaXR5LmxvZ2luJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApKQor CisKK0BibHVlcHJpbnQucm91dGUoIi9sb2dvdXQva2VyYmVyb3MiLAorICAgICAgICAgICAgICAg ICBlbmRwb2ludD0ia2VyYmVyb3NfbG9nb3V0IiwgbWV0aG9kcz1bIkdFVCJdKQorQHBnQ1NSRlBy b3RlY3QuZXhlbXB0CitkZWYga2VyYmVyb3NfbG9nb3V0KCk6CisgICAgbG9nb3V0X3VzZXIoKQor ICAgIHJldHVybiBSZXNwb25zZShyZW5kZXJfdGVtcGxhdGUoImJyb3dzZXIva2VyYmVyb3NfbG9n b3V0Lmh0bWwiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9naW5fdXJs PXVybF9mb3IoJ3NlY3VyaXR5LmxvZ2luJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICApKQorCisKIEBibHVlcHJpbnQucm91dGUoJy9sb2dpbicsIGVuZHBvaW50PSdsb2dp bicsIG1ldGhvZHM9WydHRVQnLCAnUE9TVCddKQogZGVmIGxvZ2luKCk6CiAgICAgIiIiCkBAIC01 NiwxNSArODMsMjQgQEAgZGVmIGxvZ2luKCk6CiAgICAgaWYgc3RhdHVzOgogICAgICAgICAjIExv Z2luIHRoZSB1c2VyCiAgICAgICAgIHN0YXR1cywgbXNnID0gYXV0aF9vYmoubG9naW4oKQorICAg ICAgICBjdXJyZW50X2F1dGhfb2JqID0gYXV0aF9vYmouYXNfZGljdCgpCiAgICAgICAgIGlmIG5v dCBzdGF0dXM6CisgICAgICAgICAgICBpZiBjdXJyZW50X2F1dGhfb2JqWydjdXJyZW50X3NvdXJj ZSddID09XAorICAgICAgICAgICAgICAgICAgICBLRVJCRVJPUzoKKyAgICAgICAgICAgICAgICBy ZXR1cm4gZmxhc2sucmVkaXJlY3QoJ3swfT9uZXh0PXsxfScuZm9ybWF0KHVybF9mb3IoCisgICAg ICAgICAgICAgICAgICAgICdhdXRoZW50aWNhdGUua2VyYmVyb3NfbG9naW4nKSwgdXJsX2Zvcign YnJvd3Nlci5pbmRleCcpKSkKKwogICAgICAgICAgICAgZmxhc2goZ2V0dGV4dChtc2cpLCAnZGFu Z2VyJykKICAgICAgICAgICAgIHJldHVybiBmbGFzay5yZWRpcmVjdChnZXRfcG9zdF9sb2dvdXRf cmVkaXJlY3QoKSkKIAotICAgICAgICBzZXNzaW9uWydfYXV0aF9zb3VyY2VfbWFuYWdlcl9vYmon XSA9IGF1dGhfb2JqLmFzX2RpY3QoKQorICAgICAgICBzZXNzaW9uWydfYXV0aF9zb3VyY2VfbWFu YWdlcl9vYmonXSA9IGN1cnJlbnRfYXV0aF9vYmoKICAgICAgICAgcmV0dXJuIGZsYXNrLnJlZGly ZWN0KGdldF9wb3N0X2xvZ2luX3JlZGlyZWN0KCkpCiAKKyAgICBlbGlmIGlzaW5zdGFuY2UobXNn LCBSZXNwb25zZSk6CisgICAgICAgIHJldHVybiBtc2cKICAgICBmbGFzaChnZXR0ZXh0KG1zZyks ICdkYW5nZXInKQotICAgIHJldHVybiBmbGFzay5yZWRpcmVjdChnZXRfcG9zdF9sb2dvdXRfcmVk aXJlY3QoKSkKKyAgICByZXNwb25zZSA9IGZsYXNrLnJlZGlyZWN0KGdldF9wb3N0X2xvZ291dF9y ZWRpcmVjdCgpKQorICAgIHJldHVybiByZXNwb25zZQogCiAKIGNsYXNzIEF1dGhTb3VyY2VNYW5h Z2VyKCk6CkBAIC03NSw2ICsxMTEsNyBAQCBjbGFzcyBBdXRoU291cmNlTWFuYWdlcigpOgogICAg ICAgICBzZWxmLmF1dGhfc291cmNlcyA9IHNvdXJjZXMKICAgICAgICAgc2VsZi5zb3VyY2UgPSBO b25lCiAgICAgICAgIHNlbGYuc291cmNlX2ZyaWVuZGx5X25hbWUgPSBOb25lCisgICAgICAgIHNl bGYuY3VycmVudF9zb3VyY2UgPSBOb25lCiAKICAgICBkZWYgYXNfZGljdChzZWxmKToKICAgICAg ICAgIiIiCkBAIC04NCw5ICsxMjEsMTcgQEAgY2xhc3MgQXV0aFNvdXJjZU1hbmFnZXIoKToKICAg ICAgICAgcmVzID0gZGljdCgpCiAgICAgICAgIHJlc1snc291cmNlX2ZyaWVuZGx5X25hbWUnXSA9 IHNlbGYuc291cmNlX2ZyaWVuZGx5X25hbWUKICAgICAgICAgcmVzWydhdXRoX3NvdXJjZXMnXSA9 IHNlbGYuYXV0aF9zb3VyY2VzCisgICAgICAgIHJlc1snY3VycmVudF9zb3VyY2UnXSA9IHNlbGYu Y3VycmVudF9zb3VyY2UKIAogICAgICAgICByZXR1cm4gcmVzCiAKKyAgICBkZWYgc2V0X2N1cnJl bnRfc291cmNlKHNlbGYsIHNvdXJjZSk6CisgICAgICAgIHNlbGYuY3VycmVudF9zb3VyY2UgPSBz b3VyY2UKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBnZXRfY3VycmVudF9zb3VyY2Uoc2VsZiwg c291cmNlKToKKyAgICAgICAgcmV0dXJuIHNlbGYuY3VycmVudF9zb3VyY2UKKwogICAgIGRlZiBz ZXRfc291cmNlKHNlbGYsIHNvdXJjZSk6CiAgICAgICAgIHNlbGYuc291cmNlID0gc291cmNlCiAK QEAgLTExNSw5ICsxNjAsMzMgQEAgY2xhc3MgQXV0aFNvdXJjZU1hbmFnZXIoKToKICAgICAgICAg bXNnID0gTm9uZQogICAgICAgICBmb3Igc3JjIGluIHNlbGYuYXV0aF9zb3VyY2VzOgogICAgICAg ICAgICAgc291cmNlID0gZ2V0X2F1dGhfc291cmNlcyhzcmMpCisgICAgICAgICAgICBjdXJyZW50 X2FwcC5sb2dnZXIuZGVidWcoCisgICAgICAgICAgICAgICAgIkF1dGhlbnRpY2F0aW9uIGluaXRp YXRlZCB2aWEgc291cmNlOiAlcyIgJQorICAgICAgICAgICAgICAgIHNvdXJjZS5nZXRfc291cmNl X25hbWUoKSkKKworICAgICAgICAgICAgaWYgc2VsZi5mb3JtLmRhdGFbJ2VtYWlsJ10gYW5kIHNl bGYuZm9ybS5kYXRhWydwYXNzd29yZCddIGFuZCBcCisgICAgICAgICAgICAgICAgICAgIHNvdXJj ZS5nZXRfc291cmNlX25hbWUoKSA9PSBLRVJCRVJPUzoKKyAgICAgICAgICAgICAgICBjb250aW51 ZQorCiAgICAgICAgICAgICBzdGF0dXMsIG1zZyA9IHNvdXJjZS5hdXRoZW50aWNhdGUoc2VsZi5m b3JtKQorCisgICAgICAgICAgICAjIFdoZW4gc2VydmVyIHNlbmRzIFVuYXV0aG9yaXplZCBoZWFk ZXIgdG8gZ2V0IHRoZSB0aWNrZXQgb3ZlciBIVFRQCisgICAgICAgICAgICAjIE9SIFdoZW4ga2Vy YmVyb3MgYXV0aGVudGljYXRpb24gZmFpbGVkIHdoaWxlIGFjY2Vzc2luZyBwZ2FkbWluLAorICAg ICAgICAgICAgIyB3ZSBuZWVkIHRvIGJyZWFrIHRoZSBsb29wIGFzIG5vIG5lZWQgdG8gYXV0aGVu dGljYXRlIGZ1cnRoZXIKKyAgICAgICAgICAgICMgZXZlbiBpZiB0aGUgYXV0aGVudGljYXRpb24g c291cmNlcyBzZXQgdG8gbXVsdGlwbGUKKyAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAg ICAgICAgICAgICAgaWYgKGhhc2F0dHIobXNnLCAnc3RhdHVzJykgYW5kCisgICAgICAgICAgICAg ICAgICAgIG1zZy5zdGF0dXMgPT0gJzQwMSBVTkFVVEhPUklaRUQnKSBvclwKKyAgICAgICAgICAg ICAgICAgICAgICAgIChzb3VyY2UuZ2V0X3NvdXJjZV9uYW1lKCkgPT0KKyAgICAgICAgICAgICAg ICAgICAgICAgICBLRVJCRVJPUyBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0 Lm1ldGhvZCA9PSAnR0VUJyk6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisKICAgICAgICAg ICAgIGlmIHN0YXR1czoKICAgICAgICAgICAgICAgICBzZWxmLnNldF9zb3VyY2Uoc291cmNlKQor ICAgICAgICAgICAgICAgIHNlbGYuc2V0X2N1cnJlbnRfc291cmNlKHNvdXJjZS5nZXRfc291cmNl X25hbWUoKSkKKyAgICAgICAgICAgICAgICBpZiBtc2cgaXMgbm90IE5vbmUgYW5kICd1c2VybmFt ZScgaW4gbXNnOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmZvcm0uX2ZpZWxkc1snZW1haWwn XS5kYXRhID0gbXNnWyd1c2VybmFtZSddCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXR1cywg bXNnCiAgICAgICAgIHJldHVybiBzdGF0dXMsIG1zZwogCkBAIC0xMjUsNiArMTk0LDkgQEAgY2xh c3MgQXV0aFNvdXJjZU1hbmFnZXIoKToKICAgICAgICAgc3RhdHVzLCBtc2cgPSBzZWxmLnNvdXJj ZS5sb2dpbihzZWxmLmZvcm0pCiAgICAgICAgIGlmIHN0YXR1czoKICAgICAgICAgICAgIHNlbGYu c2V0X3NvdXJjZV9mcmllbmRseV9uYW1lKHNlbGYuc291cmNlLmdldF9mcmllbmRseV9uYW1lKCkp CisgICAgICAgICAgICBjdXJyZW50X2FwcC5sb2dnZXIuZGVidWcoCisgICAgICAgICAgICAgICAg IkF1dGhlbnRpY2F0aW9uIGFuZCBMb2dpbiBzdWNjZXNzZnVsbHkgZG9uZSB2aWEgc291cmNlIDog JXMiICUKKyAgICAgICAgICAgICAgICBzZWxmLnNvdXJjZS5nZXRfc291cmNlX25hbWUoKSkKICAg ICAgICAgcmV0dXJuIHN0YXR1cywgbXNnCiAKIApkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYXV0 aGVudGljYXRlL2ludGVybmFsLnB5IGIvd2ViL3BnYWRtaW4vYXV0aGVudGljYXRlL2ludGVybmFs LnB5CmluZGV4IDgwNGE0ODdjNy4uNDg0YTdmZGNhIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9h dXRoZW50aWNhdGUvaW50ZXJuYWwucHkKKysrIGIvd2ViL3BnYWRtaW4vYXV0aGVudGljYXRlL2lu dGVybmFsLnB5CkBAIC0xOCw2ICsxOCw3IEBAIGZyb20gZmxhc2tfYmFiZWxleCBpbXBvcnQgZ2V0 dGV4dAogZnJvbSAucmVnaXN0cnkgaW1wb3J0IEF1dGhTb3VyY2VSZWdpc3RyeQogZnJvbSBwZ2Fk bWluLm1vZGVsIGltcG9ydCBVc2VyCiBmcm9tIHBnYWRtaW4udXRpbHMudmFsaWRhdGlvbl91dGls cyBpbXBvcnQgdmFsaWRhdGVfZW1haWwKK2Zyb20gcGdhZG1pbi51dGlscy5jb25zdGFudHMgaW1w b3J0IElOVEVSTkFMCiAKIAogQHNpeC5hZGRfbWV0YWNsYXNzKEF1dGhTb3VyY2VSZWdpc3RyeSkK QEAgLTMxLDcgKzMyLDExIEBAIGNsYXNzIEJhc2VBdXRoZW50aWNhdGlvbihvYmplY3QpOgogICAg ICAgICAnSU5WQUxJRF9FTUFJTCc6IGdldHRleHQoJ0VtYWlsL1VzZXJuYW1lIGlzIG5vdCB2YWxp ZCcpCiAgICAgfQogCi0gICAgQGFic3RyYWN0cHJvcGVydHkKKyAgICBAYWJzdHJhY3RtZXRob2QK KyAgICBkZWYgZ2V0X3NvdXJjZV9uYW1lKHNlbGYpOgorICAgICAgICBwYXNzCisKKyAgICBAYWJz dHJhY3RtZXRob2QKICAgICBkZWYgZ2V0X2ZyaWVuZGx5X25hbWUoc2VsZik6CiAgICAgICAgIHBh c3MKIApAQCAtODIsNiArODcsOSBAQCBjbGFzcyBCYXNlQXV0aGVudGljYXRpb24ob2JqZWN0KToK IAogY2xhc3MgSW50ZXJuYWxBdXRoZW50aWNhdGlvbihCYXNlQXV0aGVudGljYXRpb24pOgogCisg ICAgZGVmIGdldF9zb3VyY2VfbmFtZShzZWxmKToKKyAgICAgICAgcmV0dXJuIElOVEVSTkFMCisK ICAgICBkZWYgZ2V0X2ZyaWVuZGx5X25hbWUoc2VsZik6CiAgICAgICAgIHJldHVybiBnZXR0ZXh0 KCJpbnRlcm5hbCIpCiAKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2F1dGhlbnRpY2F0ZS9rZXJi ZXJvcy5weSBiL3dlYi9wZ2FkbWluL2F1dGhlbnRpY2F0ZS9rZXJiZXJvcy5weQpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAuLjYyOWZjN2JmNwotLS0gL2Rldi9udWxsCisrKyBi L3dlYi9wZ2FkbWluL2F1dGhlbnRpY2F0ZS9rZXJiZXJvcy5weQpAQCAtMCwwICsxLDEzOCBAQAor IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMKKyMKKyMgcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworIwor IyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDIwLCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFt CisjIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5j ZQorIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIiIiQSBibHVlcHJpbnQgbW9kdWxlIGltcGxlbWVu dGluZyB0aGUgU3BuZWdvL0tlcmJlcm9zIGF1dGhlbnRpY2F0aW9uLiIiIgorCitpbXBvcnQgYmFz ZTY0CitpbXBvcnQgZ3NzYXBpCitmcm9tIG9zIGltcG9ydCBlbnZpcm9uCisKK2Zyb20gd2Vya3pl dWcuZGF0YXN0cnVjdHVyZXMgaW1wb3J0IEhlYWRlcnMKK2Zyb20gZmxhc2tfYmFiZWxleCBpbXBv cnQgZ2V0dGV4dAorZnJvbSBmbGFzayBpbXBvcnQgRmxhc2ssIHJlcXVlc3QsIFJlc3BvbnNlLCBz ZXNzaW9uLFwKKyAgICBjdXJyZW50X2FwcCwgcmVuZGVyX3RlbXBsYXRlLCBmbGFzaAorCitpbXBv cnQgY29uZmlnCitmcm9tIHBnYWRtaW4ubW9kZWwgaW1wb3J0IFVzZXIsIFNlcnZlckdyb3VwLCBk YiwgUm9sZQorZnJvbSBwZ2FkbWluLnRvb2xzLnVzZXJfbWFuYWdlbWVudCBpbXBvcnQgY3JlYXRl X3VzZXIKK2Zyb20gcGdhZG1pbi51dGlscy5jb25zdGFudHMgaW1wb3J0IEtFUkJFUk9TCisKK2Zy b20gZmxhc2tfc2VjdXJpdHkudmlld3MgaW1wb3J0IF9zZWN1cml0eSwgX2NvbW1pdCwgX2N0eAor ZnJvbSB3ZXJremV1Zy5kYXRhc3RydWN0dXJlcyBpbXBvcnQgTXVsdGlEaWN0CisKK2Zyb20gLmlu dGVybmFsIGltcG9ydCBCYXNlQXV0aGVudGljYXRpb24KKworCisjIFNldCB0aGUgS2VyYmVyb3Mg Y29uZmlnIGZpbGUKK2lmIGNvbmZpZy5LUkJfS1ROQU1FIGFuZCBjb25maWcuS1JCX0tUTkFNRSAh PSAnPEtSQjVfS0VZVEFCX0ZJTEU+JzoKKyAgICBlbnZpcm9uWydLUkI1X0tUTkFNRSddID0gY29u ZmlnLktSQl9LVE5BTUUKKworCitjbGFzcyBLZXJiZXJvc0F1dGhlbnRpY2F0aW9uKEJhc2VBdXRo ZW50aWNhdGlvbik6CisKKyAgICBkZWYgZ2V0X3NvdXJjZV9uYW1lKHNlbGYpOgorICAgICAgICBy ZXR1cm4gS0VSQkVST1MKKworICAgIGRlZiBnZXRfZnJpZW5kbHlfbmFtZShzZWxmKToKKyAgICAg ICAgcmV0dXJuIGdldHRleHQoImtlcmJlcm9zIikKKworICAgIGRlZiB2YWxpZGF0ZShzZWxmLCBm b3JtKToKKyAgICAgICAgcmV0dXJuIFRydWUKKworICAgIGRlZiBhdXRoZW50aWNhdGUoc2VsZiwg ZnJtKToKKyAgICAgICAgcmV0dmFsID0gW1RydWUsIE5vbmVdCisgICAgICAgIG5lZ290aWF0ZSA9 IEZhbHNlCisgICAgICAgIGhlYWRlcnMgPSBIZWFkZXJzKCkKKyAgICAgICAgYXV0aG9yaXphdGlv biA9IHJlcXVlc3QuaGVhZGVycy5nZXQoIkF1dGhvcml6YXRpb24iLCBOb25lKQorICAgICAgICBm b3JtX2NsYXNzID0gX3NlY3VyaXR5LmxvZ2luX2Zvcm0KKworICAgICAgICBpZiByZXF1ZXN0Lmpz b246CisgICAgICAgICAgICBmb3JtID0gZm9ybV9jbGFzcyhNdWx0aURpY3QocmVxdWVzdC5qc29u KSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGZvcm0gPSBmb3JtX2NsYXNzKCkKKworICAg ICAgICB0cnk6CisgICAgICAgICAgICBpZiBhdXRob3JpemF0aW9uIGlzIG5vdCBOb25lOgorICAg ICAgICAgICAgICAgIGF1dGhfaGVhZGVyID0gYXV0aG9yaXphdGlvbi5zcGxpdCgpCisgICAgICAg ICAgICAgICAgaWYgYXV0aF9oZWFkZXJbMF0gPT0gJ05lZ290aWF0ZSc6CisgICAgICAgICAgICAg ICAgICAgIHN0YXR1cywgbmVnb3RpYXRlID0gc2VsZi5uZWdvdGlhdGVfc3RhcnQoYXV0aF9oZWFk ZXJbMV0pCisKKyAgICAgICAgICAgICAgICAgICAgaWYgc3RhdHVzOgorICAgICAgICAgICAgICAg ICAgICAgICAgIyBTYXZpbmcgdGhlIGZpcnN0IDE1IGNoYXJhY3RlcnMgb2YgdGhlIGtlcmJlcm9z IGtleQorICAgICAgICAgICAgICAgICAgICAgICAgIyB0byBlbmNyeXB0L2RlY3J5cHQgZGF0YWJh c2UgcGFzc3dvcmQKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb25bJ2tlcmJlcm9zX2tl eSddID0gYXV0aF9oZWFkZXJbMV1bMDoxNV0KKyAgICAgICAgICAgICAgICAgICAgICAgICMgQ3Jl YXRlIHVzZXIKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHZhbCA9IHNlbGYuX19hdXRvX2Ny ZWF0ZV91c2VyKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cihuZWdvdGlhdGUuaW5p dGlhdG9yX25hbWUpKQorICAgICAgICAgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UobmVnb3Rp YXRlLCBFeGNlcHRpb24pOgorICAgICAgICAgICAgICAgICAgICAgICAgZmxhc2goZ2V0dGV4dChu ZWdvdGlhdGUpLCAnZGFuZ2VyJykKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHZhbCA9IFtz dGF0dXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzcG9uc2UocmVuZGVy X3RlbXBsYXRlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2VjdXJp dHkvbG9naW5fdXNlci5odG1sIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgbG9naW5fdXNlcl9mb3JtPWZvcm0pKV0KKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAg ICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnMuYWRkKCdXV1ctQXV0aGVudGljYXRlJywgJ05l Z290aWF0ZSAnICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cihiYXNl NjQuYjY0ZW5jb2RlKG5lZ290aWF0ZSksICd1dGYtOCcpKQorICAgICAgICAgICAgICAgICAgICAg ICAgcmV0dXJuIEZhbHNlLCBSZXNwb25zZSgiU3VjY2VzcyIsIDIwMCwgaGVhZGVycykKKyAgICAg ICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZmxhc2goZ2V0dGV4dCgiS2VyYmVyb3MgYXV0 aGVudGljYXRpb24gZmFpbGVkLiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgQ291 bGRuJ3QgZmluZCBrZXJiZXJvcyB0aWNrZXQuIiksICdkYW5nZXInKQorICAgICAgICAgICAgICAg IGhlYWRlcnMuYWRkKCdXV1ctQXV0aGVudGljYXRlJywgJ05lZ290aWF0ZScpCisgICAgICAgICAg ICAgICAgcmV0dmFsID0gW0ZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBSZXNwb25z ZShyZW5kZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2VjdXJp dHkvbG9naW5fdXNlci5odG1sIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2lu X3VzZXJfZm9ybT1mb3JtKSwgNDAxLCBoZWFkZXJzKV0KKyAgICAgICAgZmluYWxseToKKyAgICAg ICAgICAgIGlmIG5lZ290aWF0ZSBpcyBub3QgRmFsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5u ZWdvdGlhdGVfZW5kKG5lZ290aWF0ZSkKKyAgICAgICAgcmV0dXJuIHJldHZhbAorCisgICAgZGVm IG5lZ290aWF0ZV9zdGFydChzZWxmLCBpbl90b2tlbik6CisgICAgICAgIHN2Y19wcmluYyA9IGdz c2FwaS5OYW1lKCdIVFRQQCVzJyAlIGNvbmZpZy5LUkJfQVBQX0hPU1RfTkFNRSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbmFtZV90eXBlPWdzc2FwaS5OYW1lVHlwZS5ob3N0YmFz ZWRfc2VydmljZSkKKyAgICAgICAgY25hbWUgPSBzdmNfcHJpbmMuY2Fub25pY2FsaXplKGdzc2Fw aS5NZWNoVHlwZS5rZXJiZXJvcykKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBzZXJ2ZXJf Y3JlZHMgPSBnc3NhcGkuQ3JlZGVudGlhbHModXNhZ2U9J2FjY2VwdCcsIG5hbWU9Y25hbWUpCisg ICAgICAgICAgICBjb250ZXh0ID0gZ3NzYXBpLlNlY3VyaXR5Q29udGV4dChjcmVkcz1zZXJ2ZXJf Y3JlZHMpCisgICAgICAgICAgICBvdXRfdG9rZW4gPSBjb250ZXh0LnN0ZXAoYmFzZTY0LmI2NGRl Y29kZShpbl90b2tlbikpCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAg ICAgIGN1cnJlbnRfYXBwLmxvZ2dlci5leGNlcHRpb24oZSkKKyAgICAgICAgICAgIHJldHVybiBG YWxzZSwgZQorCisgICAgICAgIGlmIG91dF90b2tlbiBhbmQgbm90IGNvbnRleHQuY29tcGxldGU6 CisgICAgICAgICAgICByZXR1cm4gRmFsc2UsIG91dF90b2tlbgorICAgICAgICBpZiBjb250ZXh0 LmNvbXBsZXRlOgorICAgICAgICAgICAgcmV0dXJuIFRydWUsIGNvbnRleHQKKyAgICAgICAgZWxz ZToKKyAgICAgICAgICAgIHJldHVybiBGYWxzZSwgTm9uZQorCisgICAgZGVmIG5lZ290aWF0ZV9l bmQoc2VsZiwgY29udGV4dCk6CisgICAgICAgICMgRnJlZSBnc3NfY3JlZF9pZF90CisgICAgICAg IGRlbF9jcmVkcyA9IGdldGF0dHIoY29udGV4dCwgJ2RlbGVnYXRlZF9jcmVkcycsIE5vbmUpCisg ICAgICAgIGlmIGRlbF9jcmVkczoKKyAgICAgICAgICAgIGRlbGVnX2NyZWRzID0gY29udGV4dC5k ZWxlZ2F0ZWRfY3JlZHMKKyAgICAgICAgICAgIGRlbChkZWxlZ19jcmVkcykKKworICAgIGRlZiBf X2F1dG9fY3JlYXRlX3VzZXIoc2VsZiwgdXNlcm5hbWUpOgorICAgICAgICAiIiJBZGQgdGhlIGxk YXAgdXNlciB0byB0aGUgaW50ZXJuYWwgU1FMaXRlIGRhdGFiYXNlLiIiIgorICAgICAgICB1c2Vy bmFtZSA9IHN0cih1c2VybmFtZSkKKyAgICAgICAgaWYgY29uZmlnLktSQl9BVVRPX0NSRUFURV9V U0VSOgorICAgICAgICAgICAgdXNlciA9IFVzZXIucXVlcnkuZmlsdGVyX2J5KAorICAgICAgICAg ICAgICAgIHVzZXJuYW1lPXVzZXJuYW1lKS5maXJzdCgpCisgICAgICAgICAgICBpZiB1c2VyIGlz IE5vbmU6CisgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZV91c2VyKHsKKyAgICAgICAgICAg ICAgICAgICAgJ3VzZXJuYW1lJzogdXNlcm5hbWUsCisgICAgICAgICAgICAgICAgICAgICdlbWFp bCc6IHVzZXJuYW1lLAorICAgICAgICAgICAgICAgICAgICAncm9sZSc6IDIsCisgICAgICAgICAg ICAgICAgICAgICdhY3RpdmUnOiBUcnVlLAorICAgICAgICAgICAgICAgICAgICAnYXV0aF9zb3Vy Y2UnOiBLRVJCRVJPUworICAgICAgICAgICAgICAgIH0pCisKKyAgICAgICAgcmV0dXJuIFRydWUs IHsndXNlcm5hbWUnOiB1c2VybmFtZX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2F1dGhlbnRp Y2F0ZS9sZGFwLnB5IGIvd2ViL3BnYWRtaW4vYXV0aGVudGljYXRlL2xkYXAucHkKaW5kZXggYTll Y2ExMTBmLi4yZjBmNjFiN2MgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2F1dGhlbnRpY2F0ZS9s ZGFwLnB5CisrKyBiL3dlYi9wZ2FkbWluL2F1dGhlbnRpY2F0ZS9sZGFwLnB5CkBAIC0yMyw2ICsy Myw3IEBAIGZyb20gLmludGVybmFsIGltcG9ydCBCYXNlQXV0aGVudGljYXRpb24KIGZyb20gcGdh ZG1pbi5tb2RlbCBpbXBvcnQgVXNlciwgU2VydmVyR3JvdXAsIGRiLCBSb2xlCiBmcm9tIGZsYXNr IGltcG9ydCBjdXJyZW50X2FwcAogZnJvbSBwZ2FkbWluLnRvb2xzLnVzZXJfbWFuYWdlbWVudCBp bXBvcnQgY3JlYXRlX3VzZXIKK2Zyb20gcGdhZG1pbi51dGlscy5jb25zdGFudHMgaW1wb3J0IExE QVAKIAogCiBFUlJPUl9TRUFSQ0hJTkdfTERBUF9ESVJFQ1RPUlkgPSAiRXJyb3Igc2VhcmNoaW5n IHRoZSBMREFQIGRpcmVjdG9yeToge30iCkBAIC0zMSw2ICszMiw5IEBAIEVSUk9SX1NFQVJDSElO R19MREFQX0RJUkVDVE9SWSA9ICJFcnJvciBzZWFyY2hpbmcgdGhlIExEQVAgZGlyZWN0b3J5OiB7 fSIKIGNsYXNzIExEQVBBdXRoZW50aWNhdGlvbihCYXNlQXV0aGVudGljYXRpb24pOgogICAgICIi IkxkYXAgQXV0aGVudGljYXRpb24gQ2xhc3MiIiIKIAorICAgIGRlZiBnZXRfc291cmNlX25hbWUo c2VsZik6CisgICAgICAgIHJldHVybiBMREFQCisKICAgICBkZWYgZ2V0X2ZyaWVuZGx5X25hbWUo c2VsZik6CiAgICAgICAgIHJldHVybiBnZXR0ZXh0KCJsZGFwIikKIApAQCAtMTUxLDcgKzE1NSw3 IEBAIGNsYXNzIExEQVBBdXRoZW50aWNhdGlvbihCYXNlQXV0aGVudGljYXRpb24pOgogICAgICAg ICAgICAgICAgICAgICAnZW1haWwnOiB1c2VyX2VtYWlsLAogICAgICAgICAgICAgICAgICAgICAn cm9sZSc6IDIsCiAgICAgICAgICAgICAgICAgICAgICdhY3RpdmUnOiBUcnVlLAotICAgICAgICAg ICAgICAgICAgICAnYXV0aF9zb3VyY2UnOiAnbGRhcCcKKyAgICAgICAgICAgICAgICAgICAgJ2F1 dGhfc291cmNlJzogTERBUAogICAgICAgICAgICAgICAgIH0pCiAKICAgICAgICAgcmV0dXJuIFRy dWUsIE5vbmUKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvX19pbml0X18ucHkgYi93 ZWIvcGdhZG1pbi9icm93c2VyL19faW5pdF9fLnB5CmluZGV4IDFiYWUyOGY5Yy4uYzBhZDg2OWEx IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL19faW5pdF9fLnB5CisrKyBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvX19pbml0X18ucHkKQEAgLTI5LDcgKzI5LDcgQEAgZnJvbSBmbGFza19z ZWN1cml0eS5yZWNvdmVyYWJsZSBpbXBvcnQgcmVzZXRfcGFzc3dvcmRfdG9rZW5fc3RhdHVzLCBc CiAgICAgZ2VuZXJhdGVfcmVzZXRfcGFzc3dvcmRfdG9rZW4sIHVwZGF0ZV9wYXNzd29yZAogZnJv bSBmbGFza19zZWN1cml0eS5zaWduYWxzIGltcG9ydCByZXNldF9wYXNzd29yZF9pbnN0cnVjdGlv bnNfc2VudAogZnJvbSBmbGFza19zZWN1cml0eS51dGlscyBpbXBvcnQgY29uZmlnX3ZhbHVlLCBk b19mbGFzaCwgZ2V0X3VybCwgXAotICAgIGdldF9tZXNzYWdlLCBzbGFzaF91cmxfc3VmZml4LCBs b2dpbl91c2VyLCBzZW5kX21haWwKKyAgICBnZXRfbWVzc2FnZSwgc2xhc2hfdXJsX3N1ZmZpeCwg bG9naW5fdXNlciwgc2VuZF9tYWlsLCBsb2dvdXRfdXNlcgogZnJvbSBmbGFza19zZWN1cml0eS52 aWV3cyBpbXBvcnQgX3NlY3VyaXR5LCBfY29tbWl0LCBfY3R4CiBmcm9tIHdlcmt6ZXVnLmRhdGFz dHJ1Y3R1cmVzIGltcG9ydCBNdWx0aURpY3QKIApAQCAtNDcsNyArNDcsOCBAQCBmcm9tIHBnYWRt aW4udXRpbHMubWFzdGVyX3Bhc3N3b3JkIGltcG9ydCB2YWxpZGF0ZV9tYXN0ZXJfcGFzc3dvcmQs IFwKICAgICBzZXRfbWFzdGVycGFzc19jaGVja190ZXh0LCBjbGVhbnVwX21hc3Rlcl9wYXNzd29y ZCwgZ2V0X2NyeXB0X2tleSwgXAogICAgIHNldF9jcnlwdF9rZXksIHByb2Nlc3NfbWFzdGVycGFz c19kaXNhYmxlZAogZnJvbSBwZ2FkbWluLm1vZGVsIGltcG9ydCBVc2VyCi1mcm9tIHBnYWRtaW4u dXRpbHMuY29uc3RhbnRzIGltcG9ydCBNSU1FVFlQRV9BUFBfSlMsIFBHQURNSU5fTk9ERQorZnJv bSBwZ2FkbWluLnV0aWxzLmNvbnN0YW50cyBpbXBvcnQgTUlNRVRZUEVfQVBQX0pTLCBQR0FETUlO X05PREUsXAorICAgIElOVEVSTkFMLCBLRVJCRVJPUwogCiB0cnk6CiAgICAgZnJvbSBmbGFza19z ZWN1cml0eS52aWV3cyBpbXBvcnQgZGVmYXVsdF9yZW5kZXJfanNvbgpAQCAtMjgwLDcgKzI4MSw4 IEBAIGNsYXNzIEJyb3dzZXJNb2R1bGUoUGdBZG1pbk1vZHVsZSk6CiAgICAgICAgICAgICAgICAg J2Jyb3dzZXIuY2hlY2tfbWFzdGVyX3Bhc3N3b3JkJywKICAgICAgICAgICAgICAgICAnYnJvd3Nl ci5zZXRfbWFzdGVyX3Bhc3N3b3JkJywKICAgICAgICAgICAgICAgICAnYnJvd3Nlci5yZXNldF9t YXN0ZXJfcGFzc3dvcmQnLAotICAgICAgICAgICAgICAgICdicm93c2VyLmxvY2tfbGF5b3V0J10K KyAgICAgICAgICAgICAgICAnYnJvd3Nlci5sb2NrX2xheW91dCcKKyAgICAgICAgICAgICAgICBd CiAKIAogYmx1ZXByaW50ID0gQnJvd3Nlck1vZHVsZShNT0RVTEVfTkFNRSwgX19uYW1lX18pCkBA IC01MzksNiArNTQxLDEyIEBAIGNsYXNzIEJyb3dzZXJQbHVnaW5Nb2R1bGUoUGdBZG1pbk1vZHVs ZSk6CiAKIAogZGVmIF9nZXRfbG9nb3V0X3VybCgpOgorICAgIGlmIGNvbmZpZy5TRVJWRVJfTU9E RSBhbmRcCisgICAgICAgICAgICBzZXNzaW9uWydfYXV0aF9zb3VyY2VfbWFuYWdlcl9vYmonXVsn Y3VycmVudF9zb3VyY2UnXSA9PSBcCisgICAgICAgICAgICBLRVJCRVJPUzoKKyAgICAgICAgcmV0 dXJuICd7MH0/bmV4dD17MX0nLmZvcm1hdCh1cmxfZm9yKAorICAgICAgICAgICAgJ2F1dGhlbnRp Y2F0ZS5rZXJiZXJvc19sb2dvdXQnKSwgdXJsX2ZvcihCUk9XU0VSX0lOREVYKSkKKwogICAgIHJl dHVybiAnezB9P25leHQ9ezF9Jy5mb3JtYXQoCiAgICAgICAgIHVybF9mb3IoJ3NlY3VyaXR5Lmxv Z291dCcpLCB1cmxfZm9yKEJST1dTRVJfSU5ERVgpKQogCkBAIC02NjQsMTMgKzY3MiwxOCBAQCBk ZWYgaW5kZXgoKToKICAgICBhdXRoX29ubHlfaW50ZXJuYWwgPSBGYWxzZQogICAgIGF1dGhfc291 cmNlID0gW10KIAorICAgIHNlc3Npb25bJ2FsbG93X3NhdmVfcGFzc3dvcmQnXSA9IFRydWUKKwog ICAgIGlmIGNvbmZpZy5TRVJWRVJfTU9ERToKICAgICAgICAgaWYgbGVuKGNvbmZpZy5BVVRIRU5U SUNBVElPTl9TT1VSQ0VTKSA9PSAxXAotICAgICAgICAgICAgICAgIGFuZCAnaW50ZXJuYWwnIGlu IGNvbmZpZy5BVVRIRU5USUNBVElPTl9TT1VSQ0VTOgorICAgICAgICAgICAgICAgIGFuZCBJTlRF Uk5BTCBpbiBjb25maWcuQVVUSEVOVElDQVRJT05fU09VUkNFUzoKICAgICAgICAgICAgIGF1dGhf b25seV9pbnRlcm5hbCA9IFRydWUKICAgICAgICAgYXV0aF9zb3VyY2UgPSBzZXNzaW9uWydfYXV0 aF9zb3VyY2VfbWFuYWdlcl9vYmonXVsKICAgICAgICAgICAgICdzb3VyY2VfZnJpZW5kbHlfbmFt ZSddCiAKKyAgICAgICAgaWYgc2Vzc2lvblsnX2F1dGhfc291cmNlX21hbmFnZXJfb2JqJ11bJ2N1 cnJlbnRfc291cmNlJ10gPT0gS0VSQkVST1M6CisgICAgICAgICAgICBzZXNzaW9uWydhbGxvd19z YXZlX3Bhc3N3b3JkJ10gPSBGYWxzZQorCiAgICAgcmVzcG9uc2UgPSBSZXNwb25zZShyZW5kZXJf dGVtcGxhdGUoCiAgICAgICAgIE1PRFVMRV9OQU1FICsgIi9pbmRleC5odG1sIiwKICAgICAgICAg dXNlcm5hbWU9Y3VycmVudF91c2VyLnVzZXJuYW1lLApAQCAtMTA4Niw3ICsxMDk5LDcgQEAgaWYg aGFzYXR0cihjb25maWcsICdTRUNVUklUWV9SRUNPVkVSQUJMRScpIGFuZCBjb25maWcuU0VDVVJJ VFlfUkVDT1ZFUkFCTEU6CiAgICAgICAgICAgICAjIENoZWNrIHRoZSBBdXRoZW50aWNhdGlvbiBz b3VyY2Ugb2YgdGhlIFVzZXIKICAgICAgICAgICAgIHVzZXIgPSBVc2VyLnF1ZXJ5LmZpbHRlcl9i eSgKICAgICAgICAgICAgICAgICBlbWFpbD1mb3JtLmRhdGFbJ2VtYWlsJ10sCi0gICAgICAgICAg ICAgICAgYXV0aF9zb3VyY2U9Y3VycmVudF9hcHAuUEdBRE1JTl9ERUZBVUxUX0FVVEhfU09VUkNF CisgICAgICAgICAgICAgICAgYXV0aF9zb3VyY2U9SU5URVJOQUwKICAgICAgICAgICAgICkuZmly c3QoKQogCiAgICAgICAgICAgICBpZiB1c2VyIGlzIE5vbmU6CmRpZmYgLS1naXQgYS93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9fX2luaXRfXy5weSBiL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL19faW5pdF9fLnB5CmluZGV4IGVjYzEy ODFhMi4uNWRhZWY4MTIwIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9fX2luaXRfXy5weQorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9fX2luaXRfXy5weQpAQCAtMTAsNyArMTAsNyBAQAogaW1wb3J0IHNp bXBsZWpzb24gYXMganNvbgogaW1wb3J0IHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzIGFz IHNnCiBmcm9tIGZsYXNrIGltcG9ydCByZW5kZXJfdGVtcGxhdGUsIHJlcXVlc3QsIG1ha2VfcmVz cG9uc2UsIGpzb25pZnksIFwKLSAgICBjdXJyZW50X2FwcCwgdXJsX2ZvcgorICAgIGN1cnJlbnRf YXBwLCB1cmxfZm9yLCBzZXNzaW9uCiBmcm9tIGZsYXNrX2JhYmVsZXggaW1wb3J0IGdldHRleHQK IGZyb20gZmxhc2tfc2VjdXJpdHkgaW1wb3J0IGN1cnJlbnRfdXNlciwgbG9naW5fcmVxdWlyZWQK IGZyb20gcGdhZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy50eXBlcyBpbXBvcnQg U2VydmVyVHlwZQpAQCAtMTgyMiw3ICsxODIyLDEzIEBAIGNsYXNzIFNlcnZlck5vZGUoUEdDaGls ZE5vZGVWaWV3KToKICAgICAgICAgICAgICAgICAgICAgXz1nZXR0ZXh0LAogICAgICAgICAgICAg ICAgICAgICBzZXJ2aWNlPXNlcnZlci5zZXJ2aWNlLAogICAgICAgICAgICAgICAgICAgICBwcm9t cHRfdHVubmVsX3Bhc3N3b3JkPXByb21wdF90dW5uZWxfcGFzc3dvcmQsCi0gICAgICAgICAgICAg ICAgICAgIHByb21wdF9wYXNzd29yZD1wcm9tcHRfcGFzc3dvcmQKKyAgICAgICAgICAgICAgICAg ICAgcHJvbXB0X3Bhc3N3b3JkPXByb21wdF9wYXNzd29yZCwKKyAgICAgICAgICAgICAgICAgICAg YWxsb3dfc2F2ZV9wYXNzd29yZD1UcnVlIGlmCisgICAgICAgICAgICAgICAgICAgIGNvbmZpZy5B TExPV19TQVZFX1BBU1NXT1JEIGFuZAorICAgICAgICAgICAgICAgICAgICBzZXNzaW9uWydhbGxv d19zYXZlX3Bhc3N3b3JkJ10gZWxzZSBGYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgYWxsb3df c2F2ZV90dW5uZWxfcGFzc3dvcmQ9VHJ1ZSBpZgorICAgICAgICAgICAgICAgICAgICBjb25maWcu QUxMT1dfU0FWRV9UVU5ORUxfUEFTU1dPUkQgYW5kCisgICAgICAgICAgICAgICAgICAgIHNlc3Np b25bJ2FsbG93X3NhdmVfcGFzc3dvcmQnXSBlbHNlIEZhbHNlCiAgICAgICAgICAgICAgICAgKQog ICAgICAgICAgICAgKQogICAgICAgICBlbHNlOgpAQCAtMTgzNiw2ICsxODQyLDkgQEAgY2xhc3Mg U2VydmVyTm9kZShQR0NoaWxkTm9kZVZpZXcpOgogICAgICAgICAgICAgICAgICAgICBlcnJtc2c9 ZXJybXNnLAogICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlPXNlcnZlci5zZXJ2aWNlLAogICAg ICAgICAgICAgICAgICAgICBfPWdldHRleHQsCisgICAgICAgICAgICAgICAgICAgIGFsbG93X3Nh dmVfcGFzc3dvcmQ9VHJ1ZSBpZgorICAgICAgICAgICAgICAgICAgICBjb25maWcuQUxMT1dfU0FW RV9QQVNTV09SRCBhbmQKKyAgICAgICAgICAgICAgICAgICAgc2Vzc2lvblsnYWxsb3dfc2F2ZV9w YXNzd29yZCddIGVsc2UgRmFsc2UsCiAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgKQog CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy90 ZW1wbGF0ZXMvc2VydmVycy9wYXNzd29yZC5odG1sIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvdGVtcGxhdGVzL3NlcnZlcnMvcGFzc3dvcmQuaHRtbAppbmRleCA5 YjJjNDI1ZTMuLjM1ZjRlMmExNiAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvdGVtcGxhdGVzL3NlcnZlcnMvcGFzc3dvcmQuaHRtbAorKysgYi93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy90ZW1wbGF0ZXMvc2VydmVy cy9wYXNzd29yZC5odG1sCkBAIC0xOSw3ICsxOSw3IEBACiAgICAgICAgICAgICA8ZGl2IGNsYXNz PSJjb2wtc20tMTAiPgogICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImN1c3RvbS1jb250cm9s IGN1c3RvbS1jaGVja2JveCI+CiAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz0iY3Vz dG9tLWNvbnRyb2wtaW5wdXQiIGlkPSJzYXZlX3Bhc3N3b3JkIiBuYW1lPSJzYXZlX3Bhc3N3b3Jk IiB0eXBlPSJjaGVja2JveCIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHslIGlmIG5vdCBj b25maWcuQUxMT1dfU0FWRV9QQVNTV09SRCAgJX1kaXNhYmxlZHslIGVuZGlmICV9CisgICAgICAg ICAgICAgICAgICAgICAgICAgICB7JSBpZiBub3QgYWxsb3dfc2F2ZV9wYXNzd29yZCAlfWRpc2Fi bGVkeyUgZW5kaWYgJX0KICAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAg ICA8bGFiZWwgY2xhc3M9ImN1c3RvbS1jb250cm9sLWxhYmVsIiBmb3I9InNhdmVfcGFzc3dvcmQi Pnt7IF8oJ1NhdmUgUGFzc3dvcmQnKSB9fTwvbGFiZWw+CiAgICAgICAgICAgICAgICAgPC9kaXY+ CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy90 ZW1wbGF0ZXMvc2VydmVycy90dW5uZWxfcGFzc3dvcmQuaHRtbCBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3RlbXBsYXRlcy9zZXJ2ZXJzL3R1bm5lbF9wYXNzd29y ZC5odG1sCmluZGV4IDVkZTY0MmY4NS4uZTM0YTI1N2YyIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy90ZW1wbGF0ZXMvc2VydmVycy90dW5uZWxf cGFzc3dvcmQuaHRtbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy90ZW1wbGF0ZXMvc2VydmVycy90dW5uZWxfcGFzc3dvcmQuaHRtbApAQCAtMTUsNyArMTUs NyBAQAogICAgICAgICAgICAgPGRpdiBjbGFzcz0idy0xMDAiPgogICAgICAgICAgICAgICAgIDxk aXYgY2xhc3M9ImN1c3RvbS1jb250cm9sIGN1c3RvbS1jaGVja2JveCI+CiAgICAgICAgICAgICAg ICAgICAgIDxpbnB1dCBjbGFzcz0iY3VzdG9tLWNvbnRyb2wtaW5wdXQiIGlkPSJzYXZlX3R1bm5l bF9wYXNzd29yZCIgbmFtZT0ic2F2ZV90dW5uZWxfcGFzc3dvcmQiIHR5cGU9ImNoZWNrYm94Igot ICAgICAgICAgICAgICAgICAgICAgICAgICAgeyUgaWYgbm90IGNvbmZpZy5BTExPV19TQVZFX1RV Tk5FTF9QQVNTV09SRCAgJX1kaXNhYmxlZHslIGVuZGlmICV9CisgICAgICAgICAgICAgICAgICAg ICAgICAgICB7JSBpZiBub3QgYWxsb3dfc2F2ZV90dW5uZWxfcGFzc3dvcmQgICV9ZGlzYWJsZWR7 JSBlbmRpZiAlfQogICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgIDxs YWJlbCBjbGFzcz0iY3VzdG9tLWNvbnRyb2wtbGFiZWwiIGZvcj0ic2F2ZV90dW5uZWxfcGFzc3dv cmQiIGNsYXNzPSJtbC0xIj57eyBfKCdTYXZlIFBhc3N3b3JkJykgfX08L2xhYmVsPgogICAgICAg ICAgICAgICAgIDwvZGl2PgpAQCAtMzksNyArMzksNyBAQAogICAgICAgICAgICAgPGRpdiBjbGFz cz0idy0xMDAiPgogICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImN1c3RvbS1jb250cm9sIGN1 c3RvbS1jaGVja2JveCI+CiAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz0iY3VzdG9t LWNvbnRyb2wtaW5wdXQiIGlkPSJzYXZlX3Bhc3N3b3JkIiBuYW1lPSJzYXZlX3Bhc3N3b3JkIiB0 eXBlPSJjaGVja2JveCIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHslIGlmIG5vdCBjb25m aWcuQUxMT1dfU0FWRV9QQVNTV09SRCAgJX1kaXNhYmxlZHslIGVuZGlmICV9CisgICAgICAgICAg ICAgICAgICAgICAgICAgICB7JSBpZiBub3QgYWxsb3dfc2F2ZV9wYXNzd29yZCAgJX1kaXNhYmxl ZHslIGVuZGlmICV9CiAgICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAg PGxhYmVsIGNsYXNzPSJjdXN0b20tY29udHJvbC1sYWJlbCIgZm9yPSJzYXZlX3Bhc3N3b3JkIiBj bGFzcz0ibWwtMSI+e3sgXygnU2F2ZSBQYXNzd29yZCcpIH19PC9sYWJlbD4KICAgICAgICAgICAg ICAgICA8L2Rpdj4KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvdGVtcGxhdGVzL2Jy b3dzZXIva2VyYmVyb3NfbG9naW4uaHRtbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvdGVtcGxhdGVz L2Jyb3dzZXIva2VyYmVyb3NfbG9naW4uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAuLmMxMTJlMzE5NgotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvdGVtcGxhdGVzL2Jyb3dzZXIva2VyYmVyb3NfbG9naW4uaHRtbApAQCAtMCwwICsxLDE2IEBA Cit7JSBleHRlbmRzICJiYXNlLmh0bWwiICV9Cit7JSBibG9jayBib2R5ICV9Cis8ZGl2IGNsYXNz PSJjb250YWluZXItZmx1aWQgY2hhbmdlX3Bhc3MiPgorICAgIDxkaXYgY2xhc3M9InJvdyBhbGln bi1pdGVtcy1jZW50ZXIgaC0xMDAiPgorICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtbWQtNSI+PC9k aXY+CisgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1tZC01Ij4KKyAgICAgICAgICAgIDxkaXYgY2xh c3M9InBhbmVsLWhlYWRlciBoNCI+PGkgY2xhc3M9ImFwcC1pY29uIHBnLWljb24tYmx1ZSIgYXJp YS1oaWRkZW49InRydWUiPjwvaT4ge3sgXygnJShhcHBuYW1lKXMnLCBhcHBuYW1lPWNvbmZpZy5B UFBfTkFNRSkgfX08L2Rpdj4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9InBhbmVsLWJvZHkiPgor ICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImQtYmxvY2sgdGV4dC1jb2xvciBwYi0zIGg1Ij57 eyBfKCdMb2dpbiBGYWlsZWQuJykgfX08L2Rpdj4KKyAgICAgICAgICAgICAgICA8ZGl2PjxhIGhy ZWY9Int7IGxvZ2luX3VybCB9fSI+Q2xpY2sgaGVyZTwvYT4gdG8gTG9naW4gYWdhaW4uPC9kaXY+ CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgICAgIDxkaXYgY2xhc3M9 ImNvbC1tZC00Ij48L2Rpdj4KKyAgICA8L2Rpdj4KKzwvZGl2PgoreyUgZW5kYmxvY2sgJX0KZGlm ZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvdGVtcGxhdGVzL2Jyb3dzZXIva2VyYmVyb3Nf bG9nb3V0Lmh0bWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3RlbXBsYXRlcy9icm93c2VyL2tlcmJl cm9zX2xvZ291dC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uNDMw ZGM2ZjI1Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci90ZW1wbGF0ZXMv YnJvd3Nlci9rZXJiZXJvc19sb2dvdXQuaHRtbApAQCAtMCwwICsxLDE2IEBACit7JSBleHRlbmRz ICJiYXNlLmh0bWwiICV9Cit7JSBibG9jayBib2R5ICV9Cis8ZGl2IGNsYXNzPSJjb250YWluZXIt Zmx1aWQgY2hhbmdlX3Bhc3MiPgorICAgIDxkaXYgY2xhc3M9InJvdyBhbGlnbi1pdGVtcy1jZW50 ZXIgaC0xMDAiPgorICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtbWQtNSI+PC9kaXY+CisgICAgICAg IDxkaXYgY2xhc3M9ImNvbC1tZC01Ij4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9InBhbmVsLWhl YWRlciBoNCI+PGkgY2xhc3M9ImFwcC1pY29uIHBnLWljb24tYmx1ZSIgYXJpYS1oaWRkZW49InRy dWUiPjwvaT4ge3sgXygnJShhcHBuYW1lKXMnLCBhcHBuYW1lPWNvbmZpZy5BUFBfTkFNRSkgfX08 L2Rpdj4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9InBhbmVsLWJvZHkiPgorICAgICAgICAgICAg ICAgIDxkaXYgY2xhc3M9ImQtYmxvY2sgdGV4dC1jb2xvciBwYi0zIGg1Ij57eyBfKCdMb2dnZWQg b3V0IHN1Y2Nlc3NmdWxseS4nKSB9fTwvZGl2PgorICAgICAgICAgICAgICAgIDxkaXY+PGEgaHJl Zj0ie3sgbG9naW5fdXJsIH19Ij5DbGljayBoZXJlPC9hPiB0byBMb2dpbiBhZ2Fpbi48L2Rpdj4K KyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICAgICAgPGRpdiBjbGFzcz0i Y29sLW1kLTQiPjwvZGl2PgorICAgIDwvZGl2PgorPC9kaXY+Cit7JSBlbmRibG9jayAlfQpkaWZm IC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci90ZXN0cy90ZXN0X2tlcmJlcm9zX3dpdGhfbW9j a2luZy5weSBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvdGVzdHMvdGVzdF9rZXJiZXJvc193aXRoX21v Y2tpbmcucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwLi5mODdjZTU1MjEK LS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Rlc3RzL3Rlc3Rfa2VyYmVy b3Nfd2l0aF9tb2NraW5nLnB5CkBAIC0wLDAgKzEsMTA0IEBACisjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwor IworIyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisjCisjIENvcHlyaWdodCAoQykgMjAx MyAtIDIwMjAsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KKyMgVGhpcyBzb2Z0d2FyZSBp cyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisjCisjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIworCitpbXBvcnQgY29uZmlnIGFzIGFwcF9jb25maWcKK2Zyb20gcGdhZG1pbi51dGlscy5y b3V0ZSBpbXBvcnQgQmFzZVRlc3RHZW5lcmF0b3IKK2Zyb20gcmVncmVzc2lvbi5weXRob25fdGVz dF91dGlscyBpbXBvcnQgdGVzdF91dGlscyBhcyB1dGlscworZnJvbSBwZ2FkbWluLmF1dGhlbnRp Y2F0ZS5yZWdpc3RyeSBpbXBvcnQgQXV0aFNvdXJjZVJlZ2lzdHJ5Citmcm9tIHVuaXR0ZXN0Lm1v Y2sgaW1wb3J0IHBhdGNoLCBNYWdpY01vY2sKKworCitjbGFzcyBLZXJiZXJvc0xvZ2luTW9ja1Rl c3RDYXNlKEJhc2VUZXN0R2VuZXJhdG9yKToKKyAgICAiIiIKKyAgICBUaGlzIGNsYXNzIGNoZWNr cyBTcG5lZ28vS2VyYmVyb3MgbG9naW4gZnVuY3Rpb25hbGl0eSBieSBtb2NraW5nCisgICAgSFRU UCBuZWdvdGlhdGUgYXV0aGVudGljYXRpb24uCisgICAgIiIiCisKKyAgICBzY2VuYXJpb3MgPSBb CisgICAgICAgICgnU3BuZWdvL0tlcmJlcm9zIEF1dGhlbnRpY2F0aW9uOiBUZXN0IFVuYXV0aG9y aXplZCcsIGRpY3QoCisgICAgICAgICAgICBhdXRoX3NvdXJjZT1bJ2tlcmJlcm9zJ10sCisgICAg ICAgICAgICBhdXRvX2NyZWF0ZV91c2VyPVRydWUsCisgICAgICAgICAgICBmbGFnPTEKKyAgICAg ICAgKSksCisgICAgICAgICgnU3BuZWdvL0tlcmJlcm9zIEF1dGhlbnRpY2F0aW9uOiBUZXN0IEF1 dGhvcml6ZWQnLCBkaWN0KAorICAgICAgICAgICAgYXV0aF9zb3VyY2U9WydrZXJiZXJvcyddLAor ICAgICAgICAgICAgYXV0b19jcmVhdGVfdXNlcj1UcnVlLAorICAgICAgICAgICAgZmxhZz0yCisg ICAgICAgICkpCisgICAgXQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3Mo Y2xzKToKKyAgICAgICAgIiIiCisgICAgICAgIFdlIG5lZWQgdG8gbG9nb3V0IHRoZSB0ZXN0IGNs aWVudCBhcyB3ZSBhcmUgdGVzdGluZworICAgICAgICBzcG5lZ28va2VyYmVyb3MgbG9naW4gc2Nl bmFyaW9zLgorICAgICAgICAiIiIKKyAgICAgICAgY2xzLnRlc3Rlci5sb2dvdXQoKQorCisgICAg ZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBhcHBfY29uZmlnLkFVVEhFTlRJQ0FUSU9OX1NPVVJD RVMgPSBzZWxmLmF1dGhfc291cmNlCisgICAgICAgIHNlbGYuYXBwLlBHQURNSU5fRVhURVJOQUxf QVVUSF9TT1VSQ0UgPSAna2VyYmVyb3MnCisKKyAgICBkZWYgcnVuVGVzdChzZWxmKToKKyAgICAg ICAgIiIiVGhpcyBmdW5jdGlvbiBjaGVja3Mgc3BuZWdvL2tlcmJlcm9zIGxvZ2luIGZ1bmN0aW9u YWxpdHkuIiIiCisgICAgICAgIGlmIHNlbGYuZmxhZyA9PSAxOgorICAgICAgICAgICAgc2VsZi50 ZXN0X3VuYXV0aG9yaXplZCgpCisgICAgICAgIGVsaWYgc2VsZi5mbGFnID09IDI6CisgICAgICAg ICAgICBpZiBhcHBfY29uZmlnLlNFUlZFUl9NT0RFIGlzIEZhbHNlOgorICAgICAgICAgICAgICAg IHNlbGYuc2tpcFRlc3QoCisgICAgICAgICAgICAgICAgICAgICJDYW4gbm90IHJ1biBLZXJiZXJv cyBBdXRoZW50aWNhdGlvbiBpbiB0aGUgRGVza3RvcCBtb2RlLiIKKyAgICAgICAgICAgICAgICAp CisKKyAgICAgICAgICAgIHNlbGYudGVzdF9hdXRob3JpemVkKCkKKworICAgIGRlZiB0ZXN0X3Vu YXV0aG9yaXplZChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIEVuc3VyZSB0aGF0IHdoZW4g Y2xpZW50IHNlbmRzIHRoZSBmaXJzdCByZXF1ZXN0LAorICAgICAgICB0aGUgTmVnb3RpYXRlIHJl cXVlc3QgaXMgc2VudC4KKyAgICAgICAgIiIiCisgICAgICAgIHJlcyA9IHNlbGYudGVzdGVyLmxv Z2luKE5vbmUsIE5vbmUsIFRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLnN0YXR1 c19jb2RlLCA0MDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLmhlYWRlcnMuZ2V0KCd3 d3ctYXV0aGVudGljYXRlJyksICdOZWdvdGlhdGUnKQorCisgICAgZGVmIHRlc3RfYXV0aG9yaXpl ZChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIEVuc3VyZSB0aGF0IHdoZW4gdGhlIGNsaWVu dCBzZW5kcyBhbiBjb3JyZWN0IGF1dGhvcml6YXRpb24gdG9rZW4sCisgICAgICAgIHRoZXkgcmVj ZWl2ZSBhIDIwMCBPSyByZXNwb25zZSBhbmQgdGhlIHVzZXIgcHJpbmNpcGFsIGlzIGV4dHJhY3Rl ZCBhbmQKKyAgICAgICAgcGFzc2VkIG9uIHRvIHRoZSByb3V0ZWQgbWV0aG9kLgorICAgICAgICAi IiIKKworICAgICAgICBjbGFzcyBkZWxDcmFkczoKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhz ZWxmKToKKyAgICAgICAgICAgICAgICBzZWxmLmluaXRpYXRvcl9uYW1lID0gJ3VzZXJAUEdBRE1J Ti5PUkcnCisgICAgICAgIGRlbF9jcmFkcyA9IGRlbENyYWRzKCkKKworICAgICAgICBBdXRoU291 cmNlUmVnaXN0cnkucmVnaXN0cnlbJ2tlcmJlcm9zJ10ubmVnb3RpYXRlX3N0YXJ0ID0gTWFnaWNN b2NrKAorICAgICAgICAgICAgcmV0dXJuX3ZhbHVlPVtUcnVlLCBkZWxfY3JhZHNdKQorICAgICAg ICByZXMgPSBzZWxmLnRlc3Rlci5sb2dpbihOb25lLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBOb25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcnVlLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzPXsnQXV0aG9yaXphdGlvbic6ICdO ZWdvdGlhdGUgQ1RPS0VOJ30KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQorICAg ICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcy5zdGF0dXNfY29kZSwgMjAwKQorICAgICAgICByZXNw ZGF0YSA9ICdHcmF2YXRhciBpbWFnZSBmb3IgJXMnICUgZGVsX2NyYWRzLmluaXRpYXRvcl9uYW1l CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZXNwZGF0YSBpbiByZXMuZGF0YS5kZWNvZGUoJ3V0 ZjgnKSkKKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgc2VsZi5hcHAuUEdBRE1J Tl9FWFRFUk5BTF9BVVRIX1NPVVJDRSA9ICdsZGFwJworICAgICAgICBzZWxmLnRlc3Rlci5sb2dv dXQoKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKKyAg ICAgICAgIiIiCisgICAgICAgIFdlIG5lZWQgdG8gYWdhaW4gbG9naW4gdGhlIHRlc3QgY2xpZW50 IGFzIHNvb24gYXMgdGVzdCBzY2VuYXJpb3MKKyAgICAgICAgZmluaXNoZXMuCisgICAgICAgICIi IgorICAgICAgICBjbHMudGVzdGVyLmxvZ291dCgpCisgICAgICAgIGFwcF9jb25maWcuQVVUSEVO VElDQVRJT05fU09VUkNFUyA9IFsnaW50ZXJuYWwnXQorICAgICAgICB1dGlscy5sb2dpbl90ZXN0 ZXJfYWNjb3VudChjbHMudGVzdGVyKQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvZGF0 YWdyaWQvX19pbml0X18ucHkgYi93ZWIvcGdhZG1pbi90b29scy9kYXRhZ3JpZC9fX2luaXRfXy5w eQppbmRleCAyNDA1YTQ5OGQuLjA1ZWQ5OThjNiAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vdG9v bHMvZGF0YWdyaWQvX19pbml0X18ucHkKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvZGF0YWdyaWQv X19pbml0X18ucHkKQEAgLTI1LDcgKzI1LDcgQEAgZnJvbSBwZ2FkbWluLnV0aWxzIGltcG9ydCBQ Z0FkbWluTW9kdWxlCiBmcm9tIHBnYWRtaW4udXRpbHMuYWpheCBpbXBvcnQgbWFrZV9qc29uX3Jl c3BvbnNlLCBiYWRfcmVxdWVzdCwgXAogICAgIGludGVybmFsX3NlcnZlcl9lcnJvciwgdW5hdXRo b3JpemVkCiAKLWZyb20gY29uZmlnIGltcG9ydCBQR19ERUZBVUxUX0RSSVZFUgorZnJvbSBjb25m aWcgaW1wb3J0IFBHX0RFRkFVTFRfRFJJVkVSLCBBTExPV19TQVZFX1BBU1NXT1JECiBmcm9tIHBn YWRtaW4ubW9kZWwgaW1wb3J0IFNlcnZlciwgVXNlcgogZnJvbSBwZ2FkbWluLnV0aWxzLmRyaXZl ciBpbXBvcnQgZ2V0X2RyaXZlcgogZnJvbSBwZ2FkbWluLnV0aWxzLmV4Y2VwdGlvbiBpbXBvcnQg Q29ubmVjdGlvbkxvc3QsIFNTSFR1bm5lbENvbm5lY3Rpb25Mb3N0CkBAIC00MDIsNiArNDAyLDkg QEAgZGVmIF9pbml0X3F1ZXJ5X3Rvb2wodHJhbnNfaWQsIGNvbm5lY3QsIHNnaWQsIHNpZCwgZGlk LCAqKmt3YXJncyk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcm5hbWU9dXNlciwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJtc2c9bXNnLAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgIF89Z2V0dGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxv d19zYXZlX3Bhc3N3b3JkPVRydWUgaWYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTExP V19TQVZFX1BBU1NXT1JEIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb25b J2FsbG93X3NhdmVfcGFzc3dvcmQnXSBlbHNlIEZhbHNlLAogICAgICAgICAgICAgICAgICAgICAg ICAgKQogICAgICAgICAgICAgICAgICAgICApLCAnJywgJycKICAgICAgICAgICAgICAgICBlbHNl OgpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvdXNlcl9tYW5hZ2VtZW50L19faW5pdF9f LnB5IGIvd2ViL3BnYWRtaW4vdG9vbHMvdXNlcl9tYW5hZ2VtZW50L19faW5pdF9fLnB5CmluZGV4 IDg2NDExMzBjNC4uY2UyODBhM2QyIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi90b29scy91c2Vy X21hbmFnZW1lbnQvX19pbml0X18ucHkKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvdXNlcl9tYW5h Z2VtZW50L19faW5pdF9fLnB5CkBAIC0xMyw3ICsxMyw3IEBAIGltcG9ydCBzaW1wbGVqc29uIGFz IGpzb24KIGltcG9ydCByZQogCiBmcm9tIGZsYXNrIGltcG9ydCByZW5kZXJfdGVtcGxhdGUsIHJl cXVlc3QsIFwKLSAgICB1cmxfZm9yLCBSZXNwb25zZSwgYWJvcnQsIGN1cnJlbnRfYXBwCisgICAg dXJsX2ZvciwgUmVzcG9uc2UsIGFib3J0LCBjdXJyZW50X2FwcCwgc2Vzc2lvbgogZnJvbSBmbGFz a19iYWJlbGV4IGltcG9ydCBnZXR0ZXh0IGFzIF8KIGZyb20gZmxhc2tfc2VjdXJpdHkgaW1wb3J0 IGxvZ2luX3JlcXVpcmVkLCByb2xlc19yZXF1aXJlZCwgY3VycmVudF91c2VyCiBmcm9tIGZsYXNr X3NlY3VyaXR5LnV0aWxzIGltcG9ydCBlbmNyeXB0X3Bhc3N3b3JkCkBAIC0yNCw3ICsyNCw4IEBA IGZyb20gcGdhZG1pbi51dGlscyBpbXBvcnQgUGdBZG1pbk1vZHVsZQogZnJvbSBwZ2FkbWluLnV0 aWxzLmFqYXggaW1wb3J0IG1ha2VfcmVzcG9uc2UgYXMgYWpheF9yZXNwb25zZSwgXAogICAgIG1h a2VfanNvbl9yZXNwb25zZSwgYmFkX3JlcXVlc3QsIGludGVybmFsX3NlcnZlcl9lcnJvciwgZm9y YmlkZGVuCiBmcm9tIHBnYWRtaW4udXRpbHMuY3NyZiBpbXBvcnQgcGdDU1JGUHJvdGVjdAotZnJv bSBwZ2FkbWluLnV0aWxzLmNvbnN0YW50cyBpbXBvcnQgTUlNRVRZUEVfQVBQX0pTCitmcm9tIHBn YWRtaW4udXRpbHMuY29uc3RhbnRzIGltcG9ydCBNSU1FVFlQRV9BUFBfSlMsIElOVEVSTkFMLFwK KyAgICBTVVBQT1JURURfQVVUSF9TT1VSQ0VTLCBLRVJCRVJPUwogZnJvbSBwZ2FkbWluLnV0aWxz LnZhbGlkYXRpb25fdXRpbHMgaW1wb3J0IHZhbGlkYXRlX2VtYWlsCiBmcm9tIHBnYWRtaW4ubW9k ZWwgaW1wb3J0IGRiLCBSb2xlLCBVc2VyLCBVc2VyUHJlZmVyZW5jZSwgU2VydmVyLCBcCiAgICAg U2VydmVyR3JvdXAsIFByb2Nlc3MsIFNldHRpbmcKQEAgLTE2NywxMSArMTY4LDEzIEBAIGRlZiBj dXJyZW50X3VzZXJfaW5mbygpOgogICAgICAgICAgICAgICAgIGNvbmZpZy5TRVJWRVJfTU9ERSBp cyBUcnVlCiAgICAgICAgICAgICAgICAgZWxzZSAncG9zdGdyZXMnCiAgICAgICAgICAgICApLAot ICAgICAgICAgICAgYWxsb3dfc2F2ZV9wYXNzd29yZD0ndHJ1ZScgaWYgY29uZmlnLkFMTE9XX1NB VkVfUEFTU1dPUkQKKyAgICAgICAgICAgIGFsbG93X3NhdmVfcGFzc3dvcmQ9J3RydWUnIGlmCisg ICAgICAgICAgICBjb25maWcuQUxMT1dfU0FWRV9QQVNTV09SRCBhbmQgc2Vzc2lvblsnYWxsb3df c2F2ZV9wYXNzd29yZCddCiAgICAgICAgICAgICBlbHNlICdmYWxzZScsCi0gICAgICAgICAgICBh bGxvd19zYXZlX3R1bm5lbF9wYXNzd29yZD0ndHJ1ZScKLSAgICAgICAgICAgIGlmIGNvbmZpZy5B TExPV19TQVZFX1RVTk5FTF9QQVNTV09SRCBlbHNlICdmYWxzZScsCi0gICAgICAgICAgICBhdXRo X3NvdXJjZXM9Y29uZmlnLkFVVEhFTlRJQ0FUSU9OX1NPVVJDRVMsCisgICAgICAgICAgICBhbGxv d19zYXZlX3R1bm5lbF9wYXNzd29yZD0ndHJ1ZScgaWYKKyAgICAgICAgICAgIGNvbmZpZy5BTExP V19TQVZFX1RVTk5FTF9QQVNTV09SRCBhbmQgc2Vzc2lvblsKKyAgICAgICAgICAgICAgICAnYWxs b3dfc2F2ZV9wYXNzd29yZCddIGVsc2UgJ2ZhbHNlJywKKyAgICAgICAgICAgIGF1dGhfc291cmNl cz1jb25maWcuQVVUSEVOVElDQVRJT05fU09VUkNFUwogICAgICAgICApLAogICAgICAgICBzdGF0 dXM9MjAwLAogICAgICAgICBtaW1ldHlwZT1NSU1FVFlQRV9BUFBfSlMKQEAgLTI1NCwxMCArMjU3 LDEwIEBAIGRlZiBfY3JlYXRlX25ld191c2VyKG5ld19kYXRhKToKICAgICA6cmV0dXJuOiBSZXR1 cm4gbmV3IGNyZWF0ZWQgdXNlci4KICAgICAiIiIKICAgICBhdXRoX3NvdXJjZSA9IG5ld19kYXRh WydhdXRoX3NvdXJjZSddIGlmICdhdXRoX3NvdXJjZScgaW4gbmV3X2RhdGEgXAotICAgICAgICBl bHNlIGN1cnJlbnRfYXBwLlBHQURNSU5fREVGQVVMVF9BVVRIX1NPVVJDRQorICAgICAgICBlbHNl IElOVEVSTkFMCiAgICAgdXNlcm5hbWUgPSBuZXdfZGF0YVsndXNlcm5hbWUnXSBpZiBcCiAgICAg ICAgICd1c2VybmFtZScgaW4gbmV3X2RhdGEgYW5kIGF1dGhfc291cmNlICE9IFwKLSAgICAgICAg Y3VycmVudF9hcHAuUEdBRE1JTl9ERUZBVUxUX0FVVEhfU09VUkNFIGVsc2UgbmV3X2RhdGFbJ2Vt YWlsJ10KKyAgICAgICAgSU5URVJOQUwgZWxzZSBuZXdfZGF0YVsnZW1haWwnXQogICAgIGVtYWls ID0gbmV3X2RhdGFbJ2VtYWlsJ10gaWYgJ2VtYWlsJyBpbiBuZXdfZGF0YSBlbHNlIE5vbmUKICAg ICBwYXNzd29yZCA9IG5ld19kYXRhWydwYXNzd29yZCddIGlmICdwYXNzd29yZCcgaW4gbmV3X2Rh dGEgZWxzZSBOb25lCiAKQEAgLTI3OSw3ICsyODIsNyBAQCBkZWYgX2NyZWF0ZV9uZXdfdXNlcihu ZXdfZGF0YSk6CiAKIGRlZiBjcmVhdGVfdXNlcihkYXRhKToKICAgICBpZiAnYXV0aF9zb3VyY2Un IGluIGRhdGEgYW5kIGRhdGFbJ2F1dGhfc291cmNlJ10gIT0gXAotICAgICAgICAgICAgY3VycmVu dF9hcHAuUEdBRE1JTl9ERUZBVUxUX0FVVEhfU09VUkNFOgorICAgICAgICAgICAgSU5URVJOQUw6 CiAgICAgICAgIHJlcV9wYXJhbXMgPSAoJ3VzZXJuYW1lJywgJ3JvbGUnLCAnYWN0aXZlJywgJ2F1 dGhfc291cmNlJykKICAgICBlbHNlOgogICAgICAgICByZXFfcGFyYW1zID0gKCdlbWFpbCcsICdy b2xlJywgJ2FjdGl2ZScsICduZXdQYXNzd29yZCcsCkBAIC0zODAsNyArMzgzLDcgQEAgZGVmIHVw ZGF0ZSh1aWQpOgogICAgICkKIAogICAgICMgVXNlcm5hbWUgYW5kIGVtYWlsIGNhbiBub3QgYmUg Y2hhbmdlZCBmb3IgaW50ZXJuYWwgdXNlcnMKLSAgICBpZiB1c3IuYXV0aF9zb3VyY2UgPT0gY3Vy cmVudF9hcHAuUEdBRE1JTl9ERUZBVUxUX0FVVEhfU09VUkNFOgorICAgIGlmIHVzci5hdXRoX3Nv dXJjZSA9PSBJTlRFUk5BTDoKICAgICAgICAgbm9uX2VkaXRhYmxlX3BhcmFtcyA9ICgndXNlcm5h bWUnLCAnZW1haWwnKQogCiAgICAgICAgIGZvciBmIGluIG5vbl9lZGl0YWJsZV9wYXJhbXM6CkBA IC00NjMsNyArNDY2LDcgQEAgZGVmIHJvbGUocmlkKToKICkKIGRlZiBhdXRoX3NvdXJjZXMoKToK ICAgICBzb3VyY2VzID0gW10KLSAgICBmb3Igc291cmNlIGluIGN1cnJlbnRfYXBwLlBHQURNSU5f U1VQUE9SVEVEX0FVVEhfU09VUkNFOgorICAgIGZvciBzb3VyY2UgaW4gU1VQUE9SVEVEX0FVVEhf U09VUkNFUzoKICAgICAgICAgc291cmNlcy5hcHBlbmQoeydsYWJlbCc6IHNvdXJjZSwgJ3ZhbHVl Jzogc291cmNlfSkKIAogICAgIHJldHVybiBhamF4X3Jlc3BvbnNlKApkaWZmIC0tZ2l0IGEvd2Vi L3BnYWRtaW4vdXRpbHMvY29uc3RhbnRzLnB5IGIvd2ViL3BnYWRtaW4vdXRpbHMvY29uc3RhbnRz LnB5CmluZGV4IDBhMjI2MWYwNS4uNWZkOTQyMzA0IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi91 dGlscy9jb25zdGFudHMucHkKKysrIGIvd2ViL3BnYWRtaW4vdXRpbHMvY29uc3RhbnRzLnB5CkBA IC00NywzICs0NywxMiBAQCBFUlJPUl9GRVRDSElOR19ST0xFX0lORk9STUFUSU9OID0gZ2V0dGV4 dCgKICAgICAnRXJyb3IgZmV0Y2hpbmcgcm9sZSBpbmZvcm1hdGlvbiBmcm9tIHRoZSBkYXRhYmFz ZSBzZXJ2ZXIuJykKIAogRVJST1JfRkVUQ0hJTkdfREFUQSA9IGdldHRleHQoJ1VuYWJsZSB0byBm ZXRjaCBkYXRhLicpCisKKyMgQXV0aGVudGljYXRpb24gU291cmNlcworSU5URVJOQUwgPSAnaW50 ZXJuYWwnCitMREFQID0gJ2xkYXAnCitLRVJCRVJPUyA9ICdrZXJiZXJvcycKKworU1VQUE9SVEVE X0FVVEhfU09VUkNFUyA9IFtJTlRFUk5BTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgTERB UCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgS0VSQkVST1NdCmRpZmYgLS1naXQgYS93ZWIv cGdhZG1pbi91dGlscy9tYXN0ZXJfcGFzc3dvcmQucHkgYi93ZWIvcGdhZG1pbi91dGlscy9tYXN0 ZXJfcGFzc3dvcmQucHkKaW5kZXggNzU5YmYzNmUwLi42MjllZWM5NDEgMTAwNjQ0Ci0tLSBhL3dl Yi9wZ2FkbWluL3V0aWxzL21hc3Rlcl9wYXNzd29yZC5weQorKysgYi93ZWIvcGdhZG1pbi91dGls cy9tYXN0ZXJfcGFzc3dvcmQucHkKQEAgLTEsOCArMSw5IEBACiBpbXBvcnQgY29uZmlnCi1mcm9t IGZsYXNrIGltcG9ydCBjdXJyZW50X2FwcAorZnJvbSBmbGFzayBpbXBvcnQgY3VycmVudF9hcHAs IHNlc3Npb24KIGZyb20gZmxhc2tfbG9naW4gaW1wb3J0IGN1cnJlbnRfdXNlcgogZnJvbSBwZ2Fk bWluLm1vZGVsIGltcG9ydCBkYiwgVXNlciwgU2VydmVyCiBmcm9tIHBnYWRtaW4udXRpbHMuY3J5 cHRvIGltcG9ydCBlbmNyeXB0LCBkZWNyeXB0Citmcm9tIHBnYWRtaW4udXRpbHMuY29uc3RhbnRz IGltcG9ydCBLRVJCRVJPUwogCiAKIE1BU1RFUlBBU1NfQ0hFQ0tfVEVYVCA9ICdpZGVhcyBhcmUg YnVsbGV0cHJvb2YnCkBAIC0zMiw2ICszMywxMSBAQCBkZWYgZ2V0X2NyeXB0X2tleSgpOgogICAg IGVsaWYgY29uZmlnLk1BU1RFUl9QQVNTV09SRF9SRVFVSVJFRCBcCiAgICAgICAgICAgICBhbmQg bm90IGNvbmZpZy5TRVJWRVJfTU9ERSBhbmQgZW5jX2tleSBpcyBOb25lOgogICAgICAgICByZXR1 cm4gRmFsc2UsIE5vbmUKKyAgICBlbGlmIGNvbmZpZy5TRVJWRVJfTU9ERSBhbmQgXAorICAgICAg ICAgICAgc2Vzc2lvblsnX2F1dGhfc291cmNlX21hbmFnZXJfb2JqJ11bJ3NvdXJjZV9mcmllbmRs eV9uYW1lJ11cCisgICAgICAgICAgICA9PSBLRVJCRVJPUzoKKyAgICAgICAgcmV0dXJuIFRydWUs IHNlc3Npb25bJ2tlcmJlcm9zX2tleSddIGlmICdrZXJiZXJvc19rZXknIGluIHNlc3Npb24gXAor ICAgICAgICAgICAgZWxzZSBOb25lCiAgICAgZWxzZToKICAgICAgICAgcmV0dXJuIFRydWUsIGVu Y19rZXkKIApkaWZmIC0tZ2l0IGEvd2ViL3JlZ3Jlc3Npb24vcHl0aG9uX3Rlc3RfdXRpbHMvY3Ny Zl90ZXN0X2NsaWVudC5weSBiL3dlYi9yZWdyZXNzaW9uL3B5dGhvbl90ZXN0X3V0aWxzL2NzcmZf dGVzdF9jbGllbnQucHkKaW5kZXggMTFkMmNmY2E1Li5jYTQxMjBlMTggMTAwNjQ0Ci0tLSBhL3dl Yi9yZWdyZXNzaW9uL3B5dGhvbl90ZXN0X3V0aWxzL2NzcmZfdGVzdF9jbGllbnQucHkKKysrIGIv d2ViL3JlZ3Jlc3Npb24vcHl0aG9uX3Rlc3RfdXRpbHMvY3NyZl90ZXN0X2NsaWVudC5weQpAQCAt MTAxLDcgKzEwMSw4IEBAIGNsYXNzIFRlc3RDbGllbnQodGVzdGluZy5GbGFza0NsaWVudCk6CiAK ICAgICAgICAgICAgIHJldHVybiBjc3JmX3Rva2VuCiAKLSAgICBkZWYgbG9naW4oc2VsZiwgZW1h aWwsIHBhc3N3b3JkLCBfZm9sbG93X3JlZGlyZWN0cz1GYWxzZSk6CisgICAgZGVmIGxvZ2luKHNl bGYsIGVtYWlsLCBwYXNzd29yZCwgX2ZvbGxvd19yZWRpcmVjdHM9RmFsc2UsCisgICAgICAgICAg ICAgIGhlYWRlcnM9Tm9uZSk6CiAgICAgICAgIGlmIGNvbmZpZy5TRVJWRVJfTU9ERSBpcyBUcnVl OgogICAgICAgICAgICAgcmVzID0gc2VsZi5nZXQoJy9sb2dpbicsIGZvbGxvd19yZWRpcmVjdHM9 VHJ1ZSkKICAgICAgICAgICAgIGNzcmZfdG9rZW4gPSBzZWxmLmZldGNoX2NzcmYocmVzKQpAQCAt MTEzLDcgKzExNCw4IEBAIGNsYXNzIFRlc3RDbGllbnQodGVzdGluZy5GbGFza0NsaWVudCk6CiAg ICAgICAgICAgICAgICAgZW1haWw9ZW1haWwsIHBhc3N3b3JkPXBhc3N3b3JkLAogICAgICAgICAg ICAgICAgIGNzcmZfdG9rZW49Y3NyZl90b2tlbiwKICAgICAgICAgICAgICksCi0gICAgICAgICAg ICBmb2xsb3dfcmVkaXJlY3RzPV9mb2xsb3dfcmVkaXJlY3RzCisgICAgICAgICAgICBmb2xsb3df cmVkaXJlY3RzPV9mb2xsb3dfcmVkaXJlY3RzLAorICAgICAgICAgICAgaGVhZGVycz1oZWFkZXJz CiAgICAgICAgICkKICAgICAgICAgc2VsZi5jc3JmX3Rva2VuID0gY3NyZl90b2tlbgogCmRpZmYg LS1naXQgYS93ZWIvcmVncmVzc2lvbi9ydW50ZXN0cy5weSBiL3dlYi9yZWdyZXNzaW9uL3J1bnRl c3RzLnB5CmluZGV4IDMzMjhlZDNmNi4uOWI3OTRlNDFmIDEwMDY0NAotLS0gYS93ZWIvcmVncmVz c2lvbi9ydW50ZXN0cy5weQorKysgYi93ZWIvcmVncmVzc2lvbi9ydW50ZXN0cy5weQpAQCAtMTE3 LDkgKzExNyw5IEBAIGlmIGNvbmZpZy5TRVJWRVJfTU9ERSBpcyBUcnVlOgogYXBwLmNvbmZpZ1sn V1RGX0NTUkZfRU5BQkxFRCddID0gVHJ1ZQogCiAjIEF1dGhlbnRpY2F0aW9uIHNvdXJjZXMKLWFw cC5QR0FETUlOX0RFRkFVTFRfQVVUSF9TT1VSQ0UgPSAnaW50ZXJuYWwnCiBhcHAuUEdBRE1JTl9F WFRFUk5BTF9BVVRIX1NPVVJDRSA9ICdsZGFwJwogCisKIGFwcC50ZXN0X2NsaWVudF9jbGFzcyA9 IFRlc3RDbGllbnQKIHRlc3RfY2xpZW50ID0gYXBwLnRlc3RfY2xpZW50KCkKIHRlc3RfY2xpZW50 LnNldEFwcChhcHApCg== --000000000000adcfbe05b8d7d1cb--