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 1ldUlB-0006FK-C8 for pgadmin-hackers@arkaria.postgresql.org; Mon, 03 May 2021 09:21:02 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1ldUlA-00036C-8H for pgadmin-hackers@arkaria.postgresql.org; Mon, 03 May 2021 09:21:00 +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 1ldUl9-000363-DO for pgadmin-hackers@lists.postgresql.org; Mon, 03 May 2021 09:21:00 +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 1ldUl3-00014g-Qg for pgadmin-hackers@postgresql.org; Mon, 03 May 2021 09:20:57 +0000 Received: by mail-lj1-x234.google.com with SMTP id l22so5943261ljc.9 for ; Mon, 03 May 2021 02:20:53 -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=z7r+vpLRkOP4+KyiInigekIO90JHAUJTWpEhSpgjvuI=; b=gqc0zKwEH3/Nb0b70DKG/Ppi6TYMgwZsKxW8rhHRM5y+TJtrmjoF4nx76M5ROzXtNp toD37mKZuXYIgwnoeIzyCZ6fwXb0s99aogIlKOOhcsBMlkohrdRFSRBewsqWkT8KcM/c XAmBBsL8UKzqbLwnShbvw5khF7m8yKPDFt3fg36zd+MTW9aEkgiQr5L1O6BBKgK/ppB8 VmCcq8u43ZjTIzzuOEU5gE35IU0OmHPOE6AU2M7awJ0Swvzbkz3b/H4H/IXMJYauro/+ kha6kLYxBdj+C0vQd0WDCWTxDGwmqL6ZgBYXu+mVMednWMzRfqaGsauCUxnR8yIH67D2 4pdA== 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=z7r+vpLRkOP4+KyiInigekIO90JHAUJTWpEhSpgjvuI=; b=ZZwnw5joKhAqVimNIm9dTltPtqYE7vSaaoDMfS5VbwRL72Mc9EBaFfmw39auox5KK1 I4fjkeXke9IvAuAtAD+YUuavAz/V1udAsGzlcOHJggY3K9+6xuxjOejONJ3d3ZTYqygj sKfygyL8EHi+nHTWCYIZesxl2gALbt4uKdGQMNLfSLhBk31aHAbd+1INdRstTyXTUrEU Xq7ve12AXu/Ye0o0l7KU6alCzmNVLQFY37CwbznEHvWnq42o/G+ZWJTu6lnZ77iOHCe1 nj2G+rohm4CHSzaJSIPtyos1uI5p53B0+wcuqMwy3vUdTn2wF8GSRq9/FyWjzwttaSop qBmQ== X-Gm-Message-State: AOAM533vzrWUyP1F4MUuSt0r7jZdSw/hWUOtfQaBtFTTuF+E3Ec7/FtK W1rNogbeMp64OshKg2qIO2C1S83ugJGgJHidSNOUPo/BeaIc17yEkSlHiiyzWFUcUuqjooDOOOk hlKrBcFtrp0dObv2Uwbe6D8s519LalG5yh5D/7TjNRq8IQbbGcMbfWaDrPVHNtOzVtkiDAKsYhl t1r/k09qHDld/oC+Gax9c6yFxGl7DAMwi7AXU78zRDn76ElnU6T7J/ayvmok6YxUM= X-Google-Smtp-Source: ABdhPJxfYqUepYMHtLjbynwmTMXfe/z/lZDZvp2YA/xSXsNR9lHf1FRF/dPgzR6IXZUEtOqgj0zwT1BVUMNwUeP3z9A= X-Received: by 2002:a2e:8eca:: with SMTP id e10mr7621195ljl.345.1620033651664; Mon, 03 May 2021 02:20:51 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Khushboo Vashi Date: Mon, 3 May 2021 14:50:56 +0530 Message-ID: Subject: Re: [pgAdmin4][Patch] - RM 6158 - Logging into PostgreSQL servers with Kerberos Authentication To: Akshay Joshi Cc: pgadmin-hackers Content-Type: multipart/mixed; boundary="00000000000055c64f05c1697a8c" 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: Archived-At: Precedence: bulk --00000000000055c64f05c1697a8c Content-Type: multipart/alternative; boundary="00000000000055c64d05c1697a8a" --00000000000055c64d05c1697a8a Content-Type: text/plain; charset="UTF-8" Hi Akshay, Please find the attached updated patch. Thanks, Khushboo On Mon, Apr 26, 2021 at 12:42 PM Akshay Joshi wrote: > Hi Khushboo > > I have applied your patch and started testing it in different scenarios. Following > are the GUI review comments: > > - Update the comments about Kerberos support for AUTHENTICATION_SOURCES > in config.py. > > Done. > > - You will have to create a migration file again. Getting "Error: > Multiple head revisions are present for given argument" > > Done. > > - Increase the height of the server dialog as after adding "Kerberos > Authentication?" switch Connection tab showing scroll bars. > > This is the default behaviour of all the dialogues, for example: Table Advanced tab > > - Desktop/Server mode Getting No such file or directory: > '/var/lib/pgadmin/krbccache'. KERBEROS_CCACHE_DIR should only be > created in Server Mode and AUTHENTICATION_SOURCES is 'kerberos'. > > Done > > - Server Dialog "Kerberos Authentication?" switch control should be > enabled only in Server Mode and AUTHENTICATION_SOURCES is 'kerberos'. > > Done > > - "Kerberos Authentication?" switch should be disabled when the server > is connected. > > Even if the user changes the setting when the server is connected, the effect will take place only on reconnection, so I think we can leave it as it is. > > - In Desktop mode AUTHENTICATION_SOURCES must be '*internal*' doesn't > matter what mode is provided in *config.py *or* config_local.py*. In > fact, we should create a flag '*authentication_mode*' which will be > set after the valid authentication source has been detected/connected. *For > example,* the user has provided AUTHENTICATION_SOURCES = ['kerberos', > 'internal'], it is unable to connect using kerberos and then the user has > provided a valid email and password so we will set ' > *authentication_mode*' to 'internal' and the rest of the logic will be > based on that flag. > > This was already taken care of. > > - > > > - Connect to any database server and check backend logs following > error is visible: > - KeyError: 'KRB5CCNAME' *Solution*: It should not call > "kerberos_validate_ticket()" function until AUTHENTICATION_SOURCES is > 'kerberos' and Server Mode is true. > > Fixed. > *AUTHENTICATION_SOURCES = ['kerberos']:* > > - Kerberos is not set up: Open pgAdmin page, enter email and password > two message box popped up one with valid Kerberos error and the second one > with "None" as a string. > > Fixed > > - Similarly, if AUTHENTICATION_SOURCES = ['kerberos', 'internal'] and > it is failed to connect using kerberos, then provide an email, and the > wrong password two message boxes popped up one with Kerberos error and > another with Password error. > > Somehow, I couldn't find the fix for this issue, for now we can ignore this as this will not affect the login process. > > - In the User Management dialog 'kerberos' should not be visible in > the authentication source dropdown. As there is no point creating kerberos > user from there. > > We have provided an option to add manual users for Kerberos also the same as LDAP. > > - Add local server(without kerberos) to the browser tree, set > "Kerberos Authentication?" to True, try to connect by providing the > password it always returns "fe_sendauth: no password supplied" error. If > possible can we identify and change the error message? > > Fixed > > - Add database server where kerberos authentication is ON, make > changes in pg_hba.conf with the wrong user name, then try to connect to the > database server. The server tries to connect and the spinner is visible and > never stops. It should raise a proper error message. There are some other > scenarios where entries in pg_hba.conf is wrong. > > Fixed > > - *Suggestion 1*: As per current implementation even if "Kerberos > Authentication?" is set to false the user can connect to the database > server by providing any password or blank password. It is difficult for the > user to identify it is connected using GSSAPI. I would suggest providing > the control in the properties dialog which tells the database server is > connected using GSSAPI. > > I have removed the old implementation in which the user was able to connect the PostgresQL even if a user has not selected "Kerberos Authentication" but we have a valid kerberos ticket and pg_hba is configured to support it. So, now users can get the idea about the connection through The "Kerberos authentication" flag displayed on the properties tab. > > - *Suggestion 2*: If it is possible to detect that the database server > is connected using Kerberos then we should disable the 'Username' control > as for Kerberos both the users (pgadmin user and database user ) must be > the same. > > > *Note:- *pgAdmin on OSX not working with Kerberos authentication. Failed > with error "Your GSSAPI implementation does not have support for > manipulating credential stores directly" Need to document this behavior. > Thanks, khushboo > > *Code review still remains, which I'll be started after the above fixes.* > > On Wed, Apr 14, 2021 at 2:06 PM Khushboo Vashi < > khushboo.vashi@enterprisedb.com> wrote: > >> Hi, >> >> Please find the attached patch with some minor improvements. >> >> Thanks, >> Khushboo >> >> On Wed, Apr 7, 2021 at 11:50 PM Khushboo Vashi < >> khushboo.vashi@enterprisedb.com> wrote: >> >>> Hi, >>> >>> Please find the attached patch for RM 6158: Support Kerberos >>> Authentication - Phase 2. >>> This patch includes the support for logging into PostgreSQL servers with >>> Kerberos authentication. >>> >>> Thanks, >>> Khushboo >>> >>> > > -- > *Thanks & Regards* > *Akshay Joshi* > *pgAdmin Hacker | Principal Software Architect* > *EDB Postgres * > > *Mobile: +91 976-788-8246* > --00000000000055c64d05c1697a8a Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi Akshay,

Please find= the attached updated patch.

Thanks,
Khu= shboo

On Mon, Apr 26, 2021 at 12:42 PM Akshay Joshi <akshay.joshi@enterprisedb.com> wr= ote:
Hi Khushboo

I have applied your patch and started testing it in different sc= enarios.=C2=A0Following= are the GUI review comments:
  • Update the comments about Kerberos support for=C2=A0AUTHENTICATION_SOURCES in=C2=A0config.py.
Done.=C2=A0
  • You will have to create a migration=C2=A0file again.= Getting "Error: Multiple head revisions are present for given = argument"
Done.=C2=A0
    Increase the height of the server dialog as after adding=C2=A0"Kerber= os Authentication?" switch Connection tab showing scroll bars.
This is the default behaviour of all the di= alogues, for example: Table Advanced tab=C2=A0
  • Desktop/Server mode Getting= No such file or directory: '/var/lib/pgadmin/krbccache'.=C2=A0KERBEROS_CCACHE_DIR should only be crea= ted in Server Mode and AUTHENTICATION_SOURCES is 'kerberos'.=
Done=C2=A0
  • Server Dialog &q= uot;Kerberos Authentication?" switch control should be enabled only in= Server Mode and=C2=A0AUTHENTICATION_SOURCES is 'kerberos= '.
Done=C2=A0
  • "Ke= rberos Authentication?" switch should be disabled when the server is c= onnected.
Even if the user changes t= he setting when the server is connected, the effect will take place only on= reconnection, so I think we can leave it as it is.=C2=A0
  • In Desktop mode=C2= =A0AUTHENTICATION_SOURCES must be 'internal' doesn= 9;t matter what mode is provided in config.py or config_local.py<= /b>. In fact, we should create a flag 'authentication_mode' = which will be set after the valid authentication source has been detected/c= onnected. For example,=C2=A0the user has provided=C2=A0 AUTHENTICATI= ON_SOURCES =3D ['kerberos', 'internal'], it is unable to co= nnect using kerberos and then the user has provided a valid email and passw= ord so we will set 'authentication_mode'=C2=A0to 'intern= al' and the rest of the logic will be based on that flag.
=
This was already taken care of.=C2=A0
    <= li>
  • Connect to any database server and check backend logs fol= lowing error is visible:
    • KeyError: 'KRB5CCNAME'=C2=A0=C2=A0Solution:=C2=A0It= should not call &qu= ot;kerberos_validate_ticket()" function until=C2=A0AUTHENTICATION_SOUR= CES is 'kerberos' and Server Mode is true.
Fixed.=C2=A0
=C2=A0
AUTHENTICATI= ON_SOURCES =3D ['kerberos']:
  • Kerbero= s is not set up: Open pgAdmin page, enter email and password two message bo= x popped up one with valid Kerberos error and the second one with "Non= e" as a string.
Fixed=C2= =A0
  • Similarly, if=C2=A0AUTHENTICATION_SOURCES =3D ['kerb= eros', 'internal'] and it is failed to connect using kerberos, = then provide an email, and the wrong password two message boxes popped up o= ne with Kerberos error and another with Password error.
Somehow, I couldn't find the fix for this iss= ue, for now we can ignore this as this will not affect the login process.= =C2=A0
  • In the User Management dialog 'kerberos' shou= ld not be visible in the authentication source dropdown. As there is no poi= nt creating kerberos user from there.
We have provided an option to add manual users for Kerberos also th= e same as LDAP.
  • Add local server(without kerberos) to the br= owser tree, set "Kerberos Authentication?" to True, try to connec= t by providing the password it always returns "fe_sendauth: no passwor= d supplied" error. If possible can we identify and change the error me= ssage?
Fixed=C2=A0
    =
  • Add database server where kerberos authentication is ON, make changes i= n pg_hba.conf with the wrong user name, then try to connect to the database= server. The server tries to connect and the spinner is visible and never s= tops. It should raise a proper error message. There=C2=A0are some other sce= narios where entries in pg_hba.conf is wrong.
Fixed=C2=A0
  • Suggestion 1: As per curr= ent implementation even if=C2=A0=C2=A0"Kerberos Authentication?" = is set to false the user can connect to the database server by providing an= y password or blank password. It is difficult for the user to identify it i= s connected using GSSAPI. I would suggest providing the control in the prop= erties dialog which=C2=A0tells the database server is connected using GSSAP= I.
I have removed the old impl= ementation in which the user was able to connect the PostgresQL even if a u= ser has not selected "Kerberos Authentication" but we=C2=A0have a= valid kerberos ticket and pg_hba is configured to support it. So, now user= s=C2=A0can get the idea about the connection through The "Kerberos aut= hentication" flag displayed on the properties=C2=A0tab.
    Suggestion 2: If it is possible to detect that the database server = is connected using Kerberos then we should disable the 'Username' c= ontrol as for Kerberos both the users (pgadmin user and database user ) mus= t be the same.=C2=A0

Note:- pgAdm= in on=C2=A0OSX not working with Kerberos authentication. Failed with error = "Your GSSAPI implementation does not have support for manipulating cre= dential stores directly" Need to document this behavior.

Thanks,
khushboo=C2=A0
=
Code review still remains, which I'll be started after t= he above fixes.

On Wed, Apr 14, 2021 at 2:06 PM Khushboo Vash= i <= khushboo.vashi@enterprisedb.com> wrote:
Hi,

Please find the attached patch with some minor improvements.
=

Thanks,
Khushboo

On Wed, Apr 7, 2021= at 11:50 PM Khushboo Vashi <khushboo.vashi@enterprisedb.com> wrote:
H= i,

Please find the attached=C2=A0patch for RM 6158: Supp= ort Kerberos Authentication - Phase 2.
This patch includes the su= pport for logging into PostgreSQL servers with Kerberos authentication.

Thanks,
Khushboo



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

--00000000000055c64d05c1697a8a-- --00000000000055c64f05c1697a8c Content-Type: application/octet-stream; name="RM_6158_v2.patch" Content-Disposition: attachment; filename="RM_6158_v2.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ko8e63lp0 ZGlmZiAtLWdpdCBhL3dlYi9jb25maWcucHkgYi93ZWIvY29uZmlnLnB5CmluZGV4IGE0NGZkZGMy ZS4uMjY0M2VmMTllIDEwMDY0NAotLS0gYS93ZWIvY29uZmlnLnB5CisrKyBiL3dlYi9jb25maWcu cHkKQEAgLTYzNCw2ICs2MzQsOSBAQCBLUkJfS1ROQU1FID0gJzxLUkI1X0tFWVRBQl9GSUxFPicK IAogS1JCX0FVVE9fQ1JFQVRFX1VTRVIgPSBUcnVlCiAKK0tFUkJFUk9TX0NDQUNIRV9ESVIgPSBv cy5wYXRoLmpvaW4oREFUQV9ESVIsICdrcmJjY2FjaGUnKQorCisKICMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj CiAjIExvY2FsIGNvbmZpZyBzZXR0aW5ncwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKZGlmZiAtLWdpdCBh L3dlYi9taWdyYXRpb25zL3ZlcnNpb25zL2QwYmM5ZjMyYjJiOV8ucHkgYi93ZWIvbWlncmF0aW9u cy92ZXJzaW9ucy9kMGJjOWYzMmIyYjlfLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMC4uMjY2YjZkODk5Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL21pZ3JhdGlvbnMvdmVy c2lvbnMvZDBiYzlmMzJiMmI5Xy5weQpAQCAtMCwwICsxLDI4IEBACisKKyIiImVtcHR5IG1lc3Nh Z2UKKworUmV2aXNpb24gSUQ6IGQwYmM5ZjMyYjJiOQorUmV2aXNlczogYzY5NzRmNjRkZjA4CitD cmVhdGUgRGF0ZTogMjAyMS0wNC0yNyAxMjo0MDowOC44OTk3MTIKKworIiIiCitmcm9tIGFsZW1i aWMgaW1wb3J0IG9wCitpbXBvcnQgc3FsYWxjaGVteSBhcyBzYQorZnJvbSBwZ2FkbWluLm1vZGVs IGltcG9ydCBkYgorCisjIHJldmlzaW9uIGlkZW50aWZpZXJzLCB1c2VkIGJ5IEFsZW1iaWMuCity ZXZpc2lvbiA9ICdkMGJjOWYzMmIyYjknCitkb3duX3JldmlzaW9uID0gJ2M2OTc0ZjY0ZGYwOCcK K2JyYW5jaF9sYWJlbHMgPSBOb25lCitkZXBlbmRzX29uID0gTm9uZQorCisKK2RlZiB1cGdyYWRl KCk6CisgICAgZGIuZW5naW5lLmV4ZWN1dGUoCisgICAgICAgICdBTFRFUiBUQUJMRSBzZXJ2ZXIg QUREIENPTFVNTiBrZXJiZXJvc19jb25uIElOVEVHRVIgREVGQVVMVCAwJworICAgICkKKworCitk ZWYgZG93bmdyYWRlKCk6CisgICAgIyBwZ0FkbWluIG9ubHkgdXBncmFkZXMsIGRvd25ncmFkZSBu b3QgaW1wbGVtZW50ZWQuCisgICAgcGFzcwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYXV0aGVu dGljYXRlL19faW5pdF9fLnB5IGIvd2ViL3BnYWRtaW4vYXV0aGVudGljYXRlL19faW5pdF9fLnB5 CmluZGV4IDkxNjZjMmZmZC4uNDBjNzZiMmIzIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9hdXRo ZW50aWNhdGUvX19pbml0X18ucHkKKysrIGIvd2ViL3BnYWRtaW4vYXV0aGVudGljYXRlL19faW5p dF9fLnB5CkBAIC0xMywxMCArMTMsMTMgQEAgaW1wb3J0IGZsYXNrCiBpbXBvcnQgcGlja2xlCiBm cm9tIGZsYXNrIGltcG9ydCBjdXJyZW50X2FwcCwgZmxhc2gsIFJlc3BvbnNlLCByZXF1ZXN0LCB1 cmxfZm9yLFwKICAgICByZW5kZXJfdGVtcGxhdGUKLWZyb20gZmxhc2tfc2VjdXJpdHkgaW1wb3J0 IGN1cnJlbnRfdXNlcgorZnJvbSBmbGFza19iYWJlbGV4IGltcG9ydCBnZXR0ZXh0Citmcm9tIGZs YXNrX3NlY3VyaXR5IGltcG9ydCBjdXJyZW50X3VzZXIsIGxvZ2luX3JlcXVpcmVkCiBmcm9tIGZs YXNrX3NlY3VyaXR5LnZpZXdzIGltcG9ydCBfc2VjdXJpdHksIF9jdHgKIGZyb20gZmxhc2tfc2Vj dXJpdHkudXRpbHMgaW1wb3J0IGNvbmZpZ192YWx1ZSwgZ2V0X3Bvc3RfbG9nb3V0X3JlZGlyZWN0 LCBcCiAgICAgZ2V0X3Bvc3RfbG9naW5fcmVkaXJlY3QsIGxvZ291dF91c2VyCitmcm9tIHBnYWRt aW4udXRpbHMuYWpheCBpbXBvcnQgbWFrZV9qc29uX3Jlc3BvbnNlLCBpbnRlcm5hbF9zZXJ2ZXJf ZXJyb3IKK2ltcG9ydCBvcwogCiBmcm9tIGZsYXNrIGltcG9ydCBzZXNzaW9uCiAKQEAgLTM0LDcg KzM3LDkgQEAgY2xhc3MgQXV0aGVudGljYXRlTW9kdWxlKFBnQWRtaW5Nb2R1bGUpOgogICAgIGRl ZiBnZXRfZXhwb3NlZF91cmxfZW5kcG9pbnRzKHNlbGYpOgogICAgICAgICByZXR1cm4gWydhdXRo ZW50aWNhdGUubG9naW4nLAogICAgICAgICAgICAgICAgICdhdXRoZW50aWNhdGUua2VyYmVyb3Nf bG9naW4nLAotICAgICAgICAgICAgICAgICdhdXRoZW50aWNhdGUua2VyYmVyb3NfbG9nb3V0J10K KyAgICAgICAgICAgICAgICAnYXV0aGVudGljYXRlLmtlcmJlcm9zX2xvZ291dCcsCisgICAgICAg ICAgICAgICAgJ2F1dGhlbnRpY2F0ZS5rZXJiZXJvc191cGRhdGVfdGlja2V0JywKKyAgICAgICAg ICAgICAgICAnYXV0aGVudGljYXRlLmtlcmJlcm9zX3ZhbGlkYXRlX3RpY2tldCddCiAKIAogYmx1 ZXByaW50ID0gQXV0aGVudGljYXRlTW9kdWxlKE1PRFVMRV9OQU1FLCBfX25hbWVfXywgc3RhdGlj X3VybF9wYXRoPScnKQpAQCAtNTUsNiArNjAsMTIgQEAgZGVmIGtlcmJlcm9zX2xvZ2luKCk6CiBA cGdDU1JGUHJvdGVjdC5leGVtcHQKIGRlZiBrZXJiZXJvc19sb2dvdXQoKToKICAgICBsb2dvdXRf dXNlcigpCisgICAgaWYgJ0tSQjVDQ05BTUUnIGluIHNlc3Npb246CisgICAgICAgICMgUmVtb3Zl IHRoZSBjcmVkZW50aWFsIGNhY2hlCisgICAgICAgIGNhY2hlX2ZpbGVfcGF0aCA9IHNlc3Npb25b J0tSQjVDQ05BTUUnXS5zcGxpdCgiOiIpWzFdCisgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGNh Y2hlX2ZpbGVfcGF0aCk6CisgICAgICAgICAgICBvcy5yZW1vdmUoY2FjaGVfZmlsZV9wYXRoKQor CiAgICAgcmV0dXJuIFJlc3BvbnNlKHJlbmRlcl90ZW1wbGF0ZSgiYnJvd3Nlci9rZXJiZXJvc19s b2dvdXQuaHRtbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dpbl91 cmw9dXJsX2Zvcignc2VjdXJpdHkubG9naW4nKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICkpCkBAIC0xNjUsNiArMTc2LDggQEAgY2xhc3MgQXV0aFNvdXJjZU1hbmFnZXIo KToKIAogICAgICAgICAgICAgaWYgc2VsZi5mb3JtLmRhdGFbJ2VtYWlsJ10gYW5kIHNlbGYuZm9y bS5kYXRhWydwYXNzd29yZCddIGFuZCBcCiAgICAgICAgICAgICAgICAgICAgIHNvdXJjZS5nZXRf c291cmNlX25hbWUoKSA9PSBLRVJCRVJPUzoKKyAgICAgICAgICAgICAgICBtc2cgPSBnZXR0ZXh0 KCdwZ0FkbWluIGludGVybmFsIHVzZXIgYXV0aGVudGljYXRpb24nCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAnIGlzIG5vdCBlbmFibGVkLCBwbGVhc2UgY29udGFjdCBhZG1pbmlzdHJh dG9yLicpCiAgICAgICAgICAgICAgICAgY29udGludWUKIAogICAgICAgICAgICAgc3RhdHVzLCBt c2cgPSBzb3VyY2UuYXV0aGVudGljYXRlKHNlbGYuZm9ybSkKQEAgLTE3MywxMSArMTg2LDEzIEBA IGNsYXNzIEF1dGhTb3VyY2VNYW5hZ2VyKCk6CiAgICAgICAgICAgICAjIE9SIFdoZW4ga2VyYmVy b3MgYXV0aGVudGljYXRpb24gZmFpbGVkIHdoaWxlIGFjY2Vzc2luZyBwZ2FkbWluLAogICAgICAg ICAgICAgIyB3ZSBuZWVkIHRvIGJyZWFrIHRoZSBsb29wIGFzIG5vIG5lZWQgdG8gYXV0aGVudGlj YXRlIGZ1cnRoZXIKICAgICAgICAgICAgICMgZXZlbiBpZiB0aGUgYXV0aGVudGljYXRpb24gc291 cmNlcyBzZXQgdG8gbXVsdGlwbGUKLSAgICAgICAgICAgIGlmIG5vdCBzdGF0dXMgYW5kIChoYXNh dHRyKG1zZywgJ3N0YXR1cycpIGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1z Zy5zdGF0dXMgPT0gJzQwMSBVTkFVVEhPUklaRUQnKSBvciBcCi0gICAgICAgICAgICAgICAgKHNv dXJjZS5nZXRfc291cmNlX25hbWUoKSA9PSBLRVJCRVJPUyBhbmQKLSAgICAgICAgICAgICAgICAg cmVxdWVzdC5tZXRob2QgPT0gJ0dFVCcpOgotICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAg ICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgIGlmIChoYXNhdHRyKG1zZywgJ3N0 YXR1cycpIGFuZAorICAgICAgICAgICAgICAgICAgICBtc2cuc3RhdHVzID09ICc0MDEgVU5BVVRI T1JJWkVEJykgb3JcCisgICAgICAgICAgICAgICAgICAgICAgICAoc291cmNlLmdldF9zb3VyY2Vf bmFtZSgpID09CisgICAgICAgICAgICAgICAgICAgICAgICAgS0VSQkVST1MgYW5kCisgICAgICAg ICAgICAgICAgICAgICAgICAgcmVxdWVzdC5tZXRob2QgPT0gJ0dFVCcpOgorICAgICAgICAgICAg ICAgICAgICBicmVhawogCiAgICAgICAgICAgICBpZiBzdGF0dXM6CiAgICAgICAgICAgICAgICAg c2VsZi5zZXRfc291cmNlKHNvdXJjZSkKQEAgLTIyNCwzICsyMzksNTggQEAgZGVmIGluaXRfYXBw KGFwcCk6CiAgICAgQXV0aFNvdXJjZVJlZ2lzdHJ5LmxvYWRfYXV0aF9zb3VyY2VzKCkKIAogICAg IHJldHVybiBhdXRoX3NvdXJjZXMKKworCitAYmx1ZXByaW50LnJvdXRlKCIva2VyYmVyb3MvdXBk YXRlX3RpY2tldCIsCisgICAgICAgICAgICAgICAgIGVuZHBvaW50PSJrZXJiZXJvc191cGRhdGVf dGlja2V0IiwgbWV0aG9kcz1bIkdFVCJdKQorQHBnQ1NSRlByb3RlY3QuZXhlbXB0CitAbG9naW5f cmVxdWlyZWQKK2RlZiBrZXJiZXJvc191cGRhdGVfdGlja2V0KCk6CisgICAgIiIiCisgICAgVXBk YXRlIHRoZSBrZXJiZXJvcyB0aWNrZXQuCisgICAgIiIiCisgICAgZnJvbSB3ZXJremV1Zy5kYXRh c3RydWN0dXJlcyBpbXBvcnQgSGVhZGVycworICAgIGhlYWRlcnMgPSBIZWFkZXJzKCkKKworICAg IGF1dGhvcml6YXRpb24gPSByZXF1ZXN0LmhlYWRlcnMuZ2V0KCJBdXRob3JpemF0aW9uIiwgTm9u ZSkKKworICAgIGlmIGF1dGhvcml6YXRpb24gaXMgTm9uZToKKyAgICAgICAgIyBTZW5kIHRoZSBO ZWdvdGlhdGUgaGVhZGVyIHRvIHRoZSBjbGllbnQKKyAgICAgICAgIyBpZiBLZXJiZXJvcyB0aWNr ZXQgaXMgbm90IGZvdW5kLgorICAgICAgICBoZWFkZXJzLmFkZCgnV1dXLUF1dGhlbnRpY2F0ZScs ICdOZWdvdGlhdGUnKQorICAgICAgICByZXR1cm4gUmVzcG9uc2UoIlVuYXV0aG9yaXNlZCIsIDQw MSwgaGVhZGVycykKKyAgICBlbHNlOgorICAgICAgICBzb3VyY2UgPSBnZXRfYXV0aF9zb3VyY2Vz KEtFUkJFUk9TKQorICAgICAgICBhdXRoX2hlYWRlciA9IGF1dGhvcml6YXRpb24uc3BsaXQoKQor ICAgICAgICBpbl90b2tlbiA9IGF1dGhfaGVhZGVyWzFdCisKKyAgICAgICAgIyBWYWxpZGF0ZSB0 aGUgS2VyYmVyb3MgdGlja2V0CisgICAgICAgIHN0YXR1cywgY29udGV4dCA9IHNvdXJjZS5uZWdv dGlhdGVfc3RhcnQoaW5fdG9rZW4pCisgICAgICAgIGlmIHN0YXR1czoKKyAgICAgICAgICAgIHJl dHVybiBSZXNwb25zZSgiVGlja2V0IHVwZGF0ZWQgc3VjY2Vzc2Z1bGx5LiIpCisKKyAgICAgICAg cmV0dXJuIFJlc3BvbnNlKGNvbnRleHQsIDUwMCkKKworCitAYmx1ZXByaW50LnJvdXRlKCIva2Vy YmVyb3MvdmFsaWRhdGVfdGlja2V0IiwKKyAgICAgICAgICAgICAgICAgZW5kcG9pbnQ9ImtlcmJl cm9zX3ZhbGlkYXRlX3RpY2tldCIsIG1ldGhvZHM9WyJHRVQiXSkKK0BwZ0NTUkZQcm90ZWN0LmV4 ZW1wdAorQGxvZ2luX3JlcXVpcmVkCitkZWYga2VyYmVyb3NfdmFsaWRhdGVfdGlja2V0KCk6Cisg ICAgIiIiCisgICAgUmV0dXJuIHRoZSBrZXJiZXJvcyB0aWNrZXQgbGlmZXRpbWUgbGVmdCBhZnRl ciBnZXR0aW5nIHRoZQorICAgIHRpY2tldCBmcm9tIHRoZSBjcmVkZW50aWFsIGNhY2hlCisgICAg IiIiCisgICAgaW1wb3J0IGdzc2FwaQorCisgICAgdHJ5OgorICAgICAgICBkZWxfY3JlZHMgPSBn c3NhcGkuQ3JlZGVudGlhbHMoc3RvcmU9eydjY2FjaGUnOiBzZXNzaW9uWydLUkI1Q0NOQU1FJ119 KQorICAgICAgICBjcmVkcyA9IGRlbF9jcmVkcy5hY3F1aXJlKHN0b3JlPXsnY2NhY2hlJzogc2Vz c2lvblsnS1JCNUNDTkFNRSddfSkKKyAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAg IGN1cnJlbnRfYXBwLmxvZ2dlci5leGNlcHRpb24oZSkKKyAgICAgICAgcmV0dXJuIGludGVybmFs X3NlcnZlcl9lcnJvcihlcnJvcm1zZz1zdHIoZSkpCisKKyAgICByZXR1cm4gbWFrZV9qc29uX3Jl c3BvbnNlKAorICAgICAgICBkYXRhPXsndGlja2V0X2xpZmV0aW1lJzogY3JlZHMubGlmZXRpbWV9 LAorICAgICAgICBzdGF0dXM9MjAwCisgICAgKQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYXV0 aGVudGljYXRlL2tlcmJlcm9zLnB5IGIvd2ViL3BnYWRtaW4vYXV0aGVudGljYXRlL2tlcmJlcm9z LnB5CmluZGV4IDU3YWExZTBmMC4uMmY4ZmQwZDZlIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9h dXRoZW50aWNhdGUva2VyYmVyb3MucHkKKysrIGIvd2ViL3BnYWRtaW4vYXV0aGVudGljYXRlL2tl cmJlcm9zLnB5CkBAIC0xMCw3ICsxMCw3IEBACiAiIiJBIGJsdWVwcmludCBtb2R1bGUgaW1wbGVt ZW50aW5nIHRoZSBTcG5lZ28vS2VyYmVyb3MgYXV0aGVudGljYXRpb24uIiIiCiAKIGltcG9ydCBi YXNlNjQKLWZyb20gb3MgaW1wb3J0IGVudmlyb24KK2Zyb20gb3MgaW1wb3J0IGVudmlyb24sIHBh dGgKIAogZnJvbSB3ZXJremV1Zy5kYXRhc3RydWN0dXJlcyBpbXBvcnQgSGVhZGVycwogZnJvbSBm bGFza19iYWJlbGV4IGltcG9ydCBnZXR0ZXh0CkBAIC0xMjgsMTkgKzEyOCwzNyBAQCBjbGFzcyBL ZXJiZXJvc0F1dGhlbnRpY2F0aW9uKEJhc2VBdXRoZW50aWNhdGlvbik6CiAgICAgICAgIGlmIG91 dF90b2tlbiBhbmQgbm90IGNvbnRleHQuY29tcGxldGU6CiAgICAgICAgICAgICByZXR1cm4gRmFs c2UsIG91dF90b2tlbgogICAgICAgICBpZiBjb250ZXh0LmNvbXBsZXRlOgorICAgICAgICAgICAg ZGVsZWdfY3JlZHMgPSBjb250ZXh0LmRlbGVnYXRlZF9jcmVkcworICAgICAgICAgICAgaWYgbm90 IGhhc2F0dHIoZGVsZWdfY3JlZHMsICduYW1lJyk6CisgICAgICAgICAgICAgICAgZXJyb3JfbXNn ID0gZ2V0dGV4dCgnRGVsZWdhdGVkIGNyZWRlbnRpYWxzIG5vdCBzdXBwbGllZC4nKQorICAgICAg ICAgICAgICAgIGN1cnJlbnRfYXBwLmxvZ2dlci5lcnJvcihlcnJvcl9tc2cpCisgICAgICAgICAg ICAgICAgcmV0dXJuIEZhbHNlLCBFeGNlcHRpb24oZXJyb3JfbXNnKQorICAgICAgICAgICAgdHJ5 OgorICAgICAgICAgICAgICAgIGNhY2hlX2ZpbGVfcGF0aCA9IHBhdGguam9pbigKKyAgICAgICAg ICAgICAgICAgICAgY29uZmlnLktFUkJFUk9TX0NDQUNIRV9ESVIsICdwZ2FkbWluX2NhY2hlX3sw fScuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICAgICAgZGVsZWdfY3JlZHMubmFtZSkKKyAg ICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgQ0NBQ0hFID0gJ0ZJTEU6ezB9Jy5mb3Jt YXQoY2FjaGVfZmlsZV9wYXRoKQorICAgICAgICAgICAgICAgIHN0b3JlID0geydjY2FjaGUnOiBD Q0FDSEV9CisgICAgICAgICAgICAgICAgZGVsZWdfY3JlZHMuc3RvcmUoc3RvcmUsIG92ZXJ3cml0 ZT1UcnVlLCBzZXRfZGVmYXVsdD1UcnVlKQorICAgICAgICAgICAgICAgIHNlc3Npb25bJ0tSQjVD Q05BTUUnXSA9IENDQUNIRQorICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAg ICAgICAgICAgICAgIGN1cnJlbnRfYXBwLmxvZ2dlci5leGNlcHRpb24oZSkKKyAgICAgICAgICAg ICAgICByZXR1cm4gRmFsc2UsIGUKKwogICAgICAgICAgICAgcmV0dXJuIFRydWUsIGNvbnRleHQK ICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJldHVybiBGYWxzZSwgTm9uZQogCiAgICAgZGVm IG5lZ290aWF0ZV9lbmQoc2VsZiwgY29udGV4dCk6Ci0gICAgICAgICMgRnJlZSBnc3NfY3JlZF9p ZF90CisgICAgICAgICMgRnJlZSBEZWxlZ2F0ZWQgQ3JlZGVudGlhbHMKICAgICAgICAgZGVsX2Ny ZWRzID0gZ2V0YXR0cihjb250ZXh0LCAnZGVsZWdhdGVkX2NyZWRzJywgTm9uZSkKICAgICAgICAg aWYgZGVsX2NyZWRzOgogICAgICAgICAgICAgZGVsZWdfY3JlZHMgPSBjb250ZXh0LmRlbGVnYXRl ZF9jcmVkcwogICAgICAgICAgICAgZGVsKGRlbGVnX2NyZWRzKQogCiAgICAgZGVmIF9fYXV0b19j cmVhdGVfdXNlcihzZWxmLCB1c2VybmFtZSk6Ci0gICAgICAgICIiIkFkZCB0aGUgbGRhcCB1c2Vy IHRvIHRoZSBpbnRlcm5hbCBTUUxpdGUgZGF0YWJhc2UuIiIiCisgICAgICAgICIiIkFkZCB0aGUg a2VyYmVyb3MgdXNlciB0byB0aGUgaW50ZXJuYWwgU1FMaXRlIGRhdGFiYXNlLiIiIgogICAgICAg ICB1c2VybmFtZSA9IHN0cih1c2VybmFtZSkKICAgICAgICAgaWYgY29uZmlnLktSQl9BVVRPX0NS RUFURV9VU0VSOgogICAgICAgICAgICAgdXNlciA9IFVzZXIucXVlcnkuZmlsdGVyX2J5KApkaWZm IC0tZ2l0IGEvd2ViL3BnYWRtaW4vYXV0aGVudGljYXRlL3N0YXRpYy9qcy9rZXJiZXJvcy5qcyBi L3dlYi9wZ2FkbWluL2F1dGhlbnRpY2F0ZS9zdGF0aWMvanMva2VyYmVyb3MuanMKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwLi42NDM3MzM2OWMKLS0tIC9kZXYvbnVsbAorKysg Yi93ZWIvcGdhZG1pbi9hdXRoZW50aWNhdGUvc3RhdGljL2pzL2tlcmJlcm9zLmpzCkBAIC0wLDAg KzEsNTkgQEAKK2ltcG9ydCB1cmxfZm9yIGZyb20gJ3NvdXJjZXMvdXJsX2Zvcic7CitpbXBvcnQg dXNlckluZm8gZnJvbSAncGdhZG1pbi51c2VyX21hbmFnZW1lbnQuY3VycmVudF91c2VyJzsKK2lt cG9ydCBwZ0NvbnN0IGZyb20gJ3BnYWRtaW4uYnJvd3Nlci5jb25zdGFudHMnOworCitmdW5jdGlv biBmZXRjaF90aWNrZXQoKSB7CisgIC8vIEZldGNoIHRoZSBLZXJiZXJvcyBVcGRhdGVkIHRpY2tl dCB0aHJvdWdoIFNQTkVHTworICByZXR1cm4gZmV0Y2godXJsX2ZvcignYXV0aGVudGljYXRlLmtl cmJlcm9zX3VwZGF0ZV90aWNrZXQnKQorICApCisgICAgLnRoZW4oZnVuY3Rpb24ocmVzcG9uc2Up eworICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA+PSAyMDAgJiYgcmVzcG9uc2Uuc3RhdHVzIDwg MzAwKSB7CisgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVzcG9uc2UpOworICAgICAg fSBlbHNlIHsKKyAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcihyZXNwb25z ZS5zdGF0dXNUZXh0KSk7CisgICAgICB9CisgICAgfSk7Cit9CisKK2Z1bmN0aW9uIGZldGNoX3Rp Y2tldF9saWZldGltZSAoKSB7CisgIC8vIEZldGNoIHRoZSBLZXJiZXJvcyB0aWNrZXQgbGlmZXRp bWUgbGVmdAorCisgIHJldHVybiBmZXRjaCh1cmxfZm9yKCdhdXRoZW50aWNhdGUua2VyYmVyb3Nf dmFsaWRhdGVfdGlja2V0JykKKyAgKQorICAgIC50aGVuKAorICAgICAgZnVuY3Rpb24ocmVzcG9u c2UpeworICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID49IDIwMCAmJiByZXNwb25zZS5zdGF0 dXMgPCAzMDApIHsKKyAgICAgICAgICByZXR1cm4gcmVzcG9uc2UuanNvbigpOworICAgICAgICB9 IGVsc2UgeworICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IocmVzcG9u c2Uuc3RhdHVzVGV4dCkpOworICAgICAgICB9CisgICAgICB9CisgICAgKQorICAgIC50aGVuKGZ1 bmN0aW9uKHJlc3BvbnNlKXsKKyAgICAgIGxldCB0aWNrZXRfbGlmZXRpbWUgPSByZXNwb25zZS5k YXRhLnRpY2tldF9saWZldGltZTsKKyAgICAgIGlmICh0aWNrZXRfbGlmZXRpbWUgPiAwKSB7Cisg ICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodGlja2V0X2xpZmV0aW1lKTsKKyAgICAgIH0g ZWxzZSB7CisgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgpOworICAgICAgfQorICAgIH0p OworCit9CisKK2Z1bmN0aW9uIHZhbGlkYXRlX2tlcmJlcm9zX3RpY2tldCgpIHsKKyAgLy8gUGlu ZyBwZ0FkbWluIHNlcnZlciBldmVyeSAxMCBzZWNvbmRzCisgIC8vIHRvIGZldGNoIHRoZSBLZXJi ZXJvcyB0aWNrZXQgbGlmZXRpbWUgbGVmdAorICBpZiAodXNlckluZm9bJ2N1cnJlbnRfYXV0aF9z b3VyY2UnXSAhPSBwZ0NvbnN0WydLRVJCRVJPUyddKSByZXR1cm47CisKKyAgcmV0dXJuIHNldElu dGVydmFsKGZ1bmN0aW9uKCkgeworICAgIGxldCBuZXdQcm9taXNlID0gZmV0Y2hfdGlja2V0X2xp ZmV0aW1lKCk7CisgICAgbmV3UHJvbWlzZS50aGVuKAorICAgICAgZnVuY3Rpb24oKSB7CisgICAg ICAgIHJldHVybjsKKyAgICAgIH0sCisgICAgICBmZXRjaF90aWNrZXQKKyAgICApOworICB9LCAx MDAwMCk7Cit9CisKK2V4cG9ydCB7ZmV0Y2hfdGlja2V0LCB2YWxpZGF0ZV9rZXJiZXJvc190aWNr ZXQsIGZldGNoX3RpY2tldF9saWZldGltZX07CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93 c2VyL19faW5pdF9fLnB5IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9fX2luaXRfXy5weQppbmRleCA1 ZmM3ZGU2NGYuLjMwMDYyNWM1ZSAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9fX2lu aXRfXy5weQorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL19faW5pdF9fLnB5CkBAIC01MCw3ICs1 MCw3IEBAIGZyb20gcGdhZG1pbi51dGlscy5tYXN0ZXJfcGFzc3dvcmQgaW1wb3J0IHZhbGlkYXRl X21hc3Rlcl9wYXNzd29yZCwgXAogICAgIHNldF9jcnlwdF9rZXksIHByb2Nlc3NfbWFzdGVycGFz c19kaXNhYmxlZAogZnJvbSBwZ2FkbWluLm1vZGVsIGltcG9ydCBVc2VyCiBmcm9tIHBnYWRtaW4u dXRpbHMuY29uc3RhbnRzIGltcG9ydCBNSU1FVFlQRV9BUFBfSlMsIFBHQURNSU5fTk9ERSxcCi0g ICAgSU5URVJOQUwsIEtFUkJFUk9TCisgICAgSU5URVJOQUwsIEtFUkJFUk9TLCBMREFQCiAKIHRy eToKICAgICBmcm9tIGZsYXNrX3NlY3VyaXR5LnZpZXdzIGltcG9ydCBkZWZhdWx0X3JlbmRlcl9q c29uCkBAIC0xOTcsNyArMTk3LDggQEAgY2xhc3MgQnJvd3Nlck1vZHVsZShQZ0FkbWluTW9kdWxl KToKICAgICAgICAgZm9yIG5hbWUsIHNjcmlwdCBpbiBbCiAgICAgICAgICAgICBbUEdBRE1JTl9C Uk9XU0VSLCAnanMvYnJvd3NlciddLAogICAgICAgICAgICAgWydwZ2FkbWluLmJyb3dzZXIuZW5k cG9pbnRzJywgJ2pzL2VuZHBvaW50cyddLAotICAgICAgICAgICAgWydwZ2FkbWluLmJyb3dzZXIu ZXJyb3InLCAnanMvZXJyb3InXQorICAgICAgICAgICAgWydwZ2FkbWluLmJyb3dzZXIuZXJyb3In LCAnanMvZXJyb3InXSwKKyAgICAgICAgICAgIFsncGdhZG1pbi5icm93c2VyLmNvbnN0YW50cycs ICdqcy9jb25zdGFudHMnXQogICAgICAgICBdOgogICAgICAgICAgICAgc2NyaXB0cy5hcHBlbmQo ewogICAgICAgICAgICAgICAgICduYW1lJzogbmFtZSwKQEAgLTg2NCw2ICs4NjUsMTggQEAgZGVm IGV4cG9zZWRfdXJscygpOgogICAgICkKIAogCitAYmx1ZXByaW50LnJvdXRlKCIvanMvY29uc3Rh bnRzLmpzIikKK0BwZ0NTUkZQcm90ZWN0LmV4ZW1wdAorZGVmIGFwcF9jb25zdGFudHMoKToKKyAg ICByZXR1cm4gbWFrZV9yZXNwb25zZSgKKyAgICAgICAgcmVuZGVyX3RlbXBsYXRlKCdicm93c2Vy L2pzL2NvbnN0YW50cy5qcycsCisgICAgICAgICAgICAgICAgICAgICAgICBJTlRFUk5BTD1JTlRF Uk5BTCwKKyAgICAgICAgICAgICAgICAgICAgICAgIExEQVA9TERBUCwKKyAgICAgICAgICAgICAg ICAgICAgICAgIEtFUkJFUk9TPUtFUkJFUk9TKSwKKyAgICAgICAgMjAwLCB7J0NvbnRlbnQtVHlw ZSc6IE1JTUVUWVBFX0FQUF9KU30KKyAgICApCisKKwogQGJsdWVwcmludC5yb3V0ZSgiL2pzL2Vy cm9yLmpzIikKIEBwZ0NTUkZQcm90ZWN0LmV4ZW1wdAogQGxvZ2luX3JlcXVpcmVkCmRpZmYgLS1n aXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9fX2luaXRfXy5w eSBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL19faW5pdF9fLnB5 CmluZGV4IDEwNWU5MGM4ZC4uZGMxNmE1ZGU4IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9fX2luaXRfXy5weQorKysgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9fX2luaXRfXy5weQpAQCAtMjUzLDcgKzI1Myw4 IEBAIGNsYXNzIFNlcnZlck1vZHVsZShzZy5TZXJ2ZXJHcm91cFBsdWdpbk1vZHVsZSk6CiAgICAg ICAgICAgICAgICAgZXJybXNnPWVycm1zZywKICAgICAgICAgICAgICAgICB1c2VyX2lkPXNlcnZl ci51c2VyX2lkLAogICAgICAgICAgICAgICAgIHVzZXJfbmFtZT1zZXJ2ZXIudXNlcm5hbWUsCi0g ICAgICAgICAgICAgICAgc2hhcmVkPXNlcnZlci5zaGFyZWQKKyAgICAgICAgICAgICAgICBzaGFy ZWQ9c2VydmVyLnNoYXJlZCwKKyAgICAgICAgICAgICAgICBpc19rZXJiZXJvc19jb25uPWJvb2wo c2VydmVyLmtlcmJlcm9zX2Nvbm4pLAogICAgICAgICAgICAgKQogCiAgICAgQHByb3BlcnR5CkBA IC01NDcsNyArNTQ4LDggQEAgY2xhc3MgU2VydmVyTm9kZShQR0NoaWxkTm9kZVZpZXcpOgogICAg ICAgICAgICAgICAgICAgICBpZiBzZXJ2ZXIudHVubmVsX3Bhc3N3b3JkIGlzIG5vdCBOb25lIGVs c2UgRmFsc2UsCiAgICAgICAgICAgICAgICAgICAgIGVycm1zZz1lcnJtc2csCiAgICAgICAgICAg ICAgICAgICAgIHVzZXJfbmFtZT1zZXJ2ZXIudXNlcm5hbWUsCi0gICAgICAgICAgICAgICAgICAg IHNoYXJlZD1zZXJ2ZXIuc2hhcmVkCisgICAgICAgICAgICAgICAgICAgIHNoYXJlZD1zZXJ2ZXIu c2hhcmVkLAorICAgICAgICAgICAgICAgICAgICBpc19rZXJiZXJvc19jb25uPWJvb2woc2VydmVy LmtlcmJlcm9zX2Nvbm4pCiAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgKQogCkBAIC02 MTQsNyArNjE2LDggQEAgY2xhc3MgU2VydmVyTm9kZShQR0NoaWxkTm9kZVZpZXcpOgogICAgICAg ICAgICAgICAgIGlmIHNlcnZlci50dW5uZWxfcGFzc3dvcmQgaXMgbm90IE5vbmUgZWxzZSBGYWxz ZSwKICAgICAgICAgICAgICAgICBlcnJtc2c9ZXJybXNnLAogICAgICAgICAgICAgICAgIHNoYXJl ZD1zZXJ2ZXIuc2hhcmVkLAotICAgICAgICAgICAgICAgIHVzZXJfbmFtZT1zZXJ2ZXIudXNlcm5h bWUKKyAgICAgICAgICAgICAgICB1c2VyX25hbWU9c2VydmVyLnVzZXJuYW1lLAorICAgICAgICAg ICAgICAgIGlzX2tlcmJlcm9zX2Nvbm49Ym9vbChzZXJ2ZXIua2VyYmVyb3NfY29ubikKICAgICAg ICAgICAgICksCiAgICAgICAgICkKIApAQCAtNzIxLDcgKzcyNCw4IEBAIGNsYXNzIFNlcnZlck5v ZGUoUEdDaGlsZE5vZGVWaWV3KToKICAgICAgICAgICAgICd0dW5uZWxfdXNlcm5hbWUnOiAndHVu bmVsX3VzZXJuYW1lJywKICAgICAgICAgICAgICd0dW5uZWxfYXV0aGVudGljYXRpb24nOiAndHVu bmVsX2F1dGhlbnRpY2F0aW9uJywKICAgICAgICAgICAgICd0dW5uZWxfaWRlbnRpdHlfZmlsZSc6 ICd0dW5uZWxfaWRlbnRpdHlfZmlsZScsCi0gICAgICAgICAgICAnc2hhcmVkJzogJ3NoYXJlZCcK KyAgICAgICAgICAgICdzaGFyZWQnOiAnc2hhcmVkJywKKyAgICAgICAgICAgICdrZXJiZXJvc19j b25uJzogJ2tlcmJlcm9zX2Nvbm4nLAogICAgICAgICB9CiAKICAgICAgICAgZGlzcF9sYmwgPSB7 CkBAIC05ODUsNyArOTg5LDggQEAgY2xhc3MgU2VydmVyTm9kZShQR0NoaWxkTm9kZVZpZXcpOgog ICAgICAgICAgICAgJ3R1bm5lbF91c2VybmFtZSc6IHR1bm5lbF91c2VybmFtZSwKICAgICAgICAg ICAgICd0dW5uZWxfaWRlbnRpdHlfZmlsZSc6IHNlcnZlci50dW5uZWxfaWRlbnRpdHlfZmlsZQog ICAgICAgICAgICAgaWYgc2VydmVyLnR1bm5lbF9pZGVudGl0eV9maWxlIGVsc2UgTm9uZSwKLSAg ICAgICAgICAgICd0dW5uZWxfYXV0aGVudGljYXRpb24nOiB0dW5uZWxfYXV0aGVudGljYXRpb24K KyAgICAgICAgICAgICd0dW5uZWxfYXV0aGVudGljYXRpb24nOiB0dW5uZWxfYXV0aGVudGljYXRp b24sCisgICAgICAgICAgICAna2VyYmVyb3NfY29ubic6IGJvb2woc2VydmVyLmtlcmJlcm9zX2Nv bm4pLAogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIGFqYXhfcmVzcG9uc2UocmVzcG9uc2Up CkBAIC0xMDcyLDcgKzEwNzcsOCBAQCBjbGFzcyBTZXJ2ZXJOb2RlKFBHQ2hpbGROb2RlVmlldyk6 CiAgICAgICAgICAgICAgICAgdHVubmVsX2F1dGhlbnRpY2F0aW9uPWRhdGEuZ2V0KCd0dW5uZWxf YXV0aGVudGljYXRpb24nLCAwKSwKICAgICAgICAgICAgICAgICB0dW5uZWxfaWRlbnRpdHlfZmls ZT1kYXRhLmdldCgndHVubmVsX2lkZW50aXR5X2ZpbGUnLCBOb25lKSwKICAgICAgICAgICAgICAg ICBzaGFyZWQ9ZGF0YS5nZXQoJ3NoYXJlZCcsIE5vbmUpLAotICAgICAgICAgICAgICAgIHBhc3Nm aWxlPWRhdGEuZ2V0KCdwYXNzZmlsZScsIE5vbmUpCisgICAgICAgICAgICAgICAgcGFzc2ZpbGU9 ZGF0YS5nZXQoJ3Bhc3NmaWxlJywgTm9uZSksCisgICAgICAgICAgICAgICAga2VyYmVyb3NfY29u bj0xIGlmIGRhdGEuZ2V0KCdrZXJiZXJvc19jb25uJywgRmFsc2UpIGVsc2UgMCwKICAgICAgICAg ICAgICkKICAgICAgICAgICAgIGRiLnNlc3Npb24uYWRkKHNlcnZlcikKICAgICAgICAgICAgIGRi LnNlc3Npb24uY29tbWl0KCkKQEAgLTExNTQsNyArMTE2MCw4IEBAIGNsYXNzIFNlcnZlck5vZGUo UEdDaGlsZE5vZGVWaWV3KToKICAgICAgICAgICAgICAgICAgICAgZWxzZSAncGcnLAogICAgICAg ICAgICAgICAgICAgICB2ZXJzaW9uPW1hbmFnZXIudmVyc2lvbgogICAgICAgICAgICAgICAgICAg ICBpZiBtYW5hZ2VyIGFuZCBtYW5hZ2VyLnZlcnNpb24KLSAgICAgICAgICAgICAgICAgICAgZWxz ZSBOb25lCisgICAgICAgICAgICAgICAgICAgIGVsc2UgTm9uZSwKKyAgICAgICAgICAgICAgICAg ICAgaXNfa2VyYmVyb3NfY29ubj1ib29sKHNlcnZlci5rZXJiZXJvc19jb25uKSwKICAgICAgICAg ICAgICAgICApCiAgICAgICAgICAgICApCiAKQEAgLTEzNDgsNyArMTM1NSw3IEBAIGNsYXNzIFNl cnZlck5vZGUoUEdDaGlsZE5vZGVWaWV3KToKICAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0 aW9uIGFzIGU6CiAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfYXBwLmxvZ2dlci5leGNlcHRp b24oZSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihl cnJvcm1zZz1zdHIoZSkpCi0gICAgICAgIGlmICdwYXNzd29yZCcgbm90IGluIGRhdGE6CisgICAg ICAgIGlmICdwYXNzd29yZCcgbm90IGluIGRhdGEgYW5kIHNlcnZlci5rZXJiZXJvc19jb25uIGlz IEZhbHNlOgogICAgICAgICAgICAgY29ubl9wYXNzd2QgPSBnZXRhdHRyKGNvbm4sICdwYXNzd29y ZCcsIE5vbmUpCiAgICAgICAgICAgICBpZiBjb25uX3Bhc3N3ZCBpcyBOb25lIGFuZCBub3Qgc2Vy dmVyLnNhdmVfcGFzc3dvcmQgYW5kIFwKICAgICAgICAgICAgICAgICAgICAgc2VydmVyLnBhc3Nm aWxlIGlzIE5vbmUgYW5kIHNlcnZlci5zZXJ2aWNlIGlzIE5vbmU6CkBAIC0xNDAwLDYgKzE0MDcs OSBAQCBjbGFzcyBTZXJ2ZXJOb2RlKFBHQ2hpbGROb2RlVmlldyk6CiAgICAgICAgICAgICAgICAg IkNvdWxkIG5vdCBjb25uZWN0IHRvIHNlcnZlcigjezB9KSAtICd7MX0nLlxuRXJyb3I6IHsyfSIK ICAgICAgICAgICAgICAgICAuZm9ybWF0KHNlcnZlci5pZCwgc2VydmVyLm5hbWUsIGVycm1zZykK ICAgICAgICAgICAgICkKKyAgICAgICAgICAgIGlmIGVycm1zZy5maW5kKCdUaWNrZXQgZXhwaXJl ZCcpICE9IC0xOgorICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3Io ZXJybXNnKQorCiAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRfcmVzcG9uc2VfZm9yX3Bhc3N3 b3JkKHNlcnZlciwgNDAxLCBUcnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBUcnVlLCBlcnJtc2cpCiAgICAgICAgIGVsc2U6CkBAIC0xNDY3LDYg KzE0NzcsNyBAQCBjbGFzcyBTZXJ2ZXJOb2RlKFBHQ2hpbGROb2RlVmlldyk6CiAgICAgICAgICAg ICAgICAgICAgICdpc19wYXNzd29yZF9zYXZlZCc6IGJvb2woc2VydmVyLnNhdmVfcGFzc3dvcmQp LAogICAgICAgICAgICAgICAgICAgICAnaXNfdHVubmVsX3Bhc3N3b3JkX3NhdmVkJzogVHJ1ZQog ICAgICAgICAgICAgICAgICAgICBpZiBzZXJ2ZXIudHVubmVsX3Bhc3N3b3JkIGlzIG5vdCBOb25l IGVsc2UgRmFsc2UsCisgICAgICAgICAgICAgICAgICAgICdpc19rZXJiZXJvc19jb25uJzogYm9v bChzZXJ2ZXIua2VyYmVyb3NfY29ubiksCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg KQogCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvX19pbml0X18ucHkgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvX19pbml0X18ucHkKaW5kZXggNjBhZjFkZTQyLi40YjFkNzMw OGQgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9fX2luaXRfXy5weQorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvX19pbml0X18ucHkKQEAgLTQ5MCw2ICs0OTAsNyBAQCBj bGFzcyBEYXRhYmFzZVZpZXcoUEdDaGlsZE5vZGVWaWV3KToKICAgICAgICAgICAgICAgICAgICAg ICAgIGRpZCwgZXJybXNnCiAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAp CisKICAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm1zZykK ICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgY3VycmVudF9hcHAubG9nZ2VyLmlu Zm8oCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc3RhdGljL2pzL2RhdGFiYXNlLmpzIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3N0YXRpYy9qcy9kYXRhYmFzZS5qcwppbmRl eCBjNTNmMDQ0MjkuLjAxYWI4OWM1MCAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3N0YXRpYy9qcy9kYXRhYmFzZS5qcworKysg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc3Rh dGljL2pzL2RhdGFiYXNlLmpzCkBAIC0xMCw5ICsxMCwxMCBAQAogZGVmaW5lKCdwZ2FkbWluLm5v ZGUuZGF0YWJhc2UnLCBbCiAgICdzb3VyY2VzL2dldHRleHQnLCAnc291cmNlcy91cmxfZm9yJywg J2pxdWVyeScsICd1bmRlcnNjb3JlJywKICAgJ3NvdXJjZXMvdXRpbHMnLCAnc291cmNlcy9wZ2Fk bWluJywgJ3BnYWRtaW4uYnJvd3Nlci51dGlscycsCi0gICdwZ2FkbWluLmFsZXJ0aWZ5anMnLCAn cGdhZG1pbi5iYWNrZm9ybScsICdwZ2FkbWluLmJyb3dzZXIuY29sbGVjdGlvbicsCisgICdwZ2Fk bWluLmFsZXJ0aWZ5anMnLCAncGdhZG1pbi5iYWNrZm9ybScsCisgICdwZ2FkbWluLmF1dGhlbnRp Y2F0ZS5rZXJiZXJvcycsICdwZ2FkbWluLmJyb3dzZXIuY29sbGVjdGlvbicsCiAgICdwZ2FkbWlu LmJyb3dzZXIuc2VydmVyLnByaXZpbGVnZScsICdwZ2FkbWluLmJyb3dzZXIuc2VydmVyLnZhcmlh YmxlJywKLV0sIGZ1bmN0aW9uKGdldHRleHQsIHVybF9mb3IsICQsIF8sIHBnYWRtaW5VdGlscywg cGdBZG1pbiwgcGdCcm93c2VyLCBBbGVydGlmeSwgQmFja2Zvcm0pIHsKK10sIGZ1bmN0aW9uKGdl dHRleHQsIHVybF9mb3IsICQsIF8sIHBnYWRtaW5VdGlscywgcGdBZG1pbiwgcGdCcm93c2VyLCBB bGVydGlmeSwgQmFja2Zvcm0sIEtlcmJlcm9zKSB7CiAKICAgaWYgKCFwZ0Jyb3dzZXIuTm9kZXNb J2NvbGwtZGF0YWJhc2UnXSkgewogICAgIHBnQnJvd3Nlci5Ob2Rlc1snY29sbC1kYXRhYmFzZSdd ID0KQEAgLTU1NiwyNCArNTU3LDM5IEBAIGRlZmluZSgncGdhZG1pbi5ub2RlLmRhdGFiYXNlJywg WwogICAgICAgICAgIG9uRmFpbHVyZSA9IGZ1bmN0aW9uKAogICAgICAgICAgICAgeGhyLCBzdGF0 dXMsIGVycm9yLCBfbW9kZWwsIF9kYXRhLCBfdHJlZSwgX2l0ZW0sIF9zdGF0dXMKICAgICAgICAg ICApIHsKLSAgICAgICAgICAgIGlmICghX3N0YXR1cykgewotICAgICAgICAgICAgICB0cmVlLnNl dElub2RlKF9pdGVtKTsKLSAgICAgICAgICAgICAgdHJlZS5hZGRJY29uKF9pdGVtLCB7aWNvbjog J2ljb24tZGF0YWJhc2Utbm90LWNvbm5lY3RlZCd9KTsKLSAgICAgICAgICAgIH0KLQotICAgICAg ICAgICAgQWxlcnRpZnkucGdOb3RpZmllcignZXJyb3InLCB4aHIsIGVycm9yLCBmdW5jdGlvbiht c2cpIHsKLSAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKLSAgICAgICAgICAg ICAgICBpZiAobXNnID09ICdDUllQVEtFWV9TRVQnKSB7CisgICAgICAgICAgICBpZiAoeGhyLnN0 YXR1cyAhPSAyMDAgJiYgeGhyLnJlc3BvbnNlVGV4dC5zZWFyY2goJ1RpY2tldCBleHBpcmVkJykg IT09IC0xKSB7CisgICAgICAgICAgICAgIHRyZWUuYWRkSWNvbihfaXRlbSwge2ljb246ICdpY29u LXNlcnZlci1jb25uZWN0aW5nJ30pOworICAgICAgICAgICAgICBsZXQgZmV0Y2hUaWNrZXQgPSBL ZXJiZXJvcy5mZXRjaF90aWNrZXQoKTsKKyAgICAgICAgICAgICAgZmV0Y2hUaWNrZXQudGhlbigK KyAgICAgICAgICAgICAgICBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rf dG9fZGF0YWJhc2UoX21vZGVsLCBfZGF0YSwgX3RyZWUsIF9pdGVtLCBfd2FzQ29ubmVjdGVkKTsK LSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgQWxlcnRpZnkuZGxn U2VydmVyUGFzcygKLSAgICAgICAgICAgICAgICAgICAgZ2V0dGV4dCgnQ29ubmVjdCB0byBkYXRh YmFzZScpLAotICAgICAgICAgICAgICAgICAgICBtc2csIF9tb2RlbCwgX2RhdGEsIF90cmVlLCBf aXRlbSwgX3N0YXR1cywKLSAgICAgICAgICAgICAgICAgICAgb25TdWNjZXNzLCBvbkZhaWx1cmUs IG9uQ2FuY2VsCi0gICAgICAgICAgICAgICAgICApLnJlc2l6ZVRvKCk7CisgICAgICAgICAgICAg ICAgfSwKKyAgICAgICAgICAgICAgICBmdW5jdGlvbihlcnJvcikgeworICAgICAgICAgICAgICAg ICAgdHJlZS5zZXRJbm9kZShfaXRlbSk7CisgICAgICAgICAgICAgICAgICB0cmVlLmFkZEljb24o X2l0ZW0sIHtpY29uOiAnaWNvbi1kYXRhYmFzZS1ub3QtY29ubmVjdGVkJ30pOworICAgICAgICAg ICAgICAgICAgQWxlcnRpZnkucGdOb3RpZmllcihlcnJvciwgeGhyLCBnZXR0ZXh0KCdDb25uZWN0 ICB0byBkYXRhYmFzZS4nKSk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICB9LCAx MDApOwotICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICk7CisgICAgICAgICAgICB9IGVs c2UgeworICAgICAgICAgICAgICBpZiAoIV9zdGF0dXMpIHsKKyAgICAgICAgICAgICAgICB0cmVl LnNldElub2RlKF9pdGVtKTsKKyAgICAgICAgICAgICAgICB0cmVlLmFkZEljb24oX2l0ZW0sIHtp Y29uOiAnaWNvbi1kYXRhYmFzZS1ub3QtY29ubmVjdGVkJ30pOworICAgICAgICAgICAgICB9CisK KyAgICAgICAgICAgICAgQWxlcnRpZnkucGdOb3RpZmllcignZXJyb3InLCB4aHIsIGVycm9yLCBm dW5jdGlvbihtc2cpIHsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewor ICAgICAgICAgICAgICAgICAgaWYgKG1zZyA9PSAnQ1JZUFRLRVlfU0VUJykgeworICAgICAgICAg ICAgICAgICAgICBjb25uZWN0X3RvX2RhdGFiYXNlKF9tb2RlbCwgX2RhdGEsIF90cmVlLCBfaXRl bSwgX3dhc0Nvbm5lY3RlZCk7CisgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg ICAgICAgICAgICBBbGVydGlmeS5kbGdTZXJ2ZXJQYXNzKAorICAgICAgICAgICAgICAgICAgICAg IGdldHRleHQoJ0Nvbm5lY3QgdG8gZGF0YWJhc2UnKSwKKyAgICAgICAgICAgICAgICAgICAgICBt c2csIF9tb2RlbCwgX2RhdGEsIF90cmVlLCBfaXRlbSwgX3N0YXR1cywKKyAgICAgICAgICAgICAg ICAgICAgICBvblN1Y2Nlc3MsIG9uRmFpbHVyZSwgb25DYW5jZWwKKyAgICAgICAgICAgICAgICAg ICAgKS5yZXNpemVUbygpOworICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0s IDEwMCk7CisgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfQogICAgICAgICAgIH0sCiAg ICAgICAgICAgb25TdWNjZXNzID0gZnVuY3Rpb24oCiAgICAgICAgICAgICByZXMsIG1vZGVsLCBf ZGF0YSwgX3RyZWUsIF9pdGVtLCBfY29ubmVjdGVkCkBAIC02NDAsNiArNjU2LDcgQEAgZGVmaW5l KCdwZ2FkbWluLm5vZGUuZGF0YWJhc2UnLCBbCiAgICAgICAgICAgaWYgKHhoci5zdGF0dXMgPT09 IDQxMCkgewogICAgICAgICAgICAgZXJyb3IgPSBnZXR0ZXh0KCdFcnJvcjogT2JqZWN0IG5vdCBm b3VuZCAtICVzLicsIGVycm9yKTsKICAgICAgICAgICB9CisKICAgICAgICAgICByZXR1cm4gb25G YWlsdXJlKAogICAgICAgICAgICAgeGhyLCBzdGF0dXMsIGVycm9yLCBvYmosIGRhdGEsIHRyZWUs IGl0ZW0sIHdhc0Nvbm5lY3RlZAogICAgICAgICAgICk7CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9zdGF0aWMvanMvc2VydmVyLmpzIGIvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvc3RhdGljL2pzL3NlcnZlci5q cwppbmRleCBhYjk1ZDZkODkuLmZkNTI1ZDc2MyAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvc3RhdGljL2pzL3NlcnZlci5qcworKysgYi93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9zdGF0aWMvanMvc2VydmVyLmpz CkBAIC0xMywxMSArMTMsMTMgQEAgZGVmaW5lKCdwZ2FkbWluLm5vZGUuc2VydmVyJywgWwogICAn cGdhZG1pbi5zZXJ2ZXIuc3VwcG9ydGVkX3NlcnZlcnMnLCAncGdhZG1pbi51c2VyX21hbmFnZW1l bnQuY3VycmVudF91c2VyJywKICAgJ3BnYWRtaW4uYWxlcnRpZnlqcycsICdwZ2FkbWluLmJhY2tm b3JtJywKICAgJ3NvdXJjZXMvYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvbW9kZWxfdmFs aWRhdGlvbicsCisgICdwZ2FkbWluLmF1dGhlbnRpY2F0ZS5rZXJiZXJvcycsCisgICdwZ2FkbWlu LmJyb3dzZXIuY29uc3RhbnRzJywKICAgJ3BnYWRtaW4uYnJvd3Nlci5zZXJ2ZXIucHJpdmlsZWdl JywKIF0sIGZ1bmN0aW9uKAogICBnZXR0ZXh0LCB1cmxfZm9yLCAkLCBfLCBCYWNrYm9uZSwgcGdB ZG1pbiwgcGdCcm93c2VyLAogICBzdXBwb3J0ZWRfc2VydmVycywgY3VycmVudF91c2VyLCBBbGVy dGlmeSwgQmFja2Zvcm0sCi0gIG1vZGVsVmFsaWRhdGlvbgorICBtb2RlbFZhbGlkYXRpb24sIEtl cmJlcm9zLCBwZ0NvbnN0LAogKSB7CiAKICAgaWYgKCFwZ0Jyb3dzZXIuTm9kZXNbJ3NlcnZlcidd KSB7CkBAIC05MDQsMjAgKzkwNiwzNiBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS5zZXJ2ZXInLCBb CiAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0sCiAgICAgICAgICAgfSksCisgICAgICAg IH0seworICAgICAgICAgIGlkOiAna2VyYmVyb3NfY29ubicsIGxhYmVsOiBnZXR0ZXh0KCdLZXJi ZXJvcyBhdXRoZW50aWNhdGlvbj8nKSwgdHlwZTogJ3N3aXRjaCcsCisgICAgICAgICAgZ3JvdXA6 IGdldHRleHQoJ0Nvbm5lY3Rpb24nKSwgJ29wdGlvbnMnOiB7CisgICAgICAgICAgICAnb25UZXh0 JzogIGdldHRleHQoJ1RydWUnKSwgJ29mZlRleHQnOiAgZ2V0dGV4dCgnRmFsc2UnKSwgJ3NpemUn OiAnbWluaScsCisgICAgICAgICAgfSwgZGlzYWJsZWQ6IGZ1bmN0aW9uKCkgeworICAgICAgICAg ICAgaWYgKGN1cnJlbnRfdXNlclsnY3VycmVudF9hdXRoX3NvdXJjZSddICE9IHBnQ29uc3RbJ0tF UkJFUk9TJ10pCisgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgcmV0dXJu IGZhbHNlOworICAgICAgICAgIH0sCiAgICAgICAgIH0sewogICAgICAgICAgIGlkOiAncGFzc3dv cmQnLCBsYWJlbDogZ2V0dGV4dCgnUGFzc3dvcmQnKSwgdHlwZTogJ3Bhc3N3b3JkJywgbWF4bGVu Z3RoOiBudWxsLAotICAgICAgICAgIGdyb3VwOiBnZXR0ZXh0KCdDb25uZWN0aW9uJyksIGNvbnRy b2w6ICdpbnB1dCcsIG1vZGU6IFsnY3JlYXRlJ10sIGRlcHM6IFsnY29ubmVjdF9ub3cnXSwKKyAg ICAgICAgICBncm91cDogZ2V0dGV4dCgnQ29ubmVjdGlvbicpLCBjb250cm9sOiAnaW5wdXQnLCBt b2RlOiBbJ2NyZWF0ZSddLAorICAgICAgICAgIGRlcHM6IFsnY29ubmVjdF9ub3cnLCAna2VyYmVy b3NfY29ubiddLAogICAgICAgICAgIHZpc2libGU6IGZ1bmN0aW9uKG1vZGVsKSB7CiAgICAgICAg ICAgICByZXR1cm4gbW9kZWwuZ2V0KCdjb25uZWN0X25vdycpICYmIG1vZGVsLmlzTmV3KCk7CiAg ICAgICAgICAgfSwKKyAgICAgICAgICBkaXNhYmxlZDogZnVuY3Rpb24obW9kZWwpIHsKKyAgICAg ICAgICAgIGlmIChtb2RlbC5nZXQoJ2tlcmJlcm9zX2Nvbm4nKSkKKyAgICAgICAgICAgICAgcmV0 dXJuIHRydWU7CisKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICB9LAogICAg ICAgICB9LHsKICAgICAgICAgICBpZDogJ3NhdmVfcGFzc3dvcmQnLCBjb250cm9sTGFiZWw6IGdl dHRleHQoJ1NhdmUgcGFzc3dvcmQ/JyksCiAgICAgICAgICAgdHlwZTogJ2NoZWNrYm94JywgZ3Jv dXA6IGdldHRleHQoJ0Nvbm5lY3Rpb24nKSwgbW9kZTogWydjcmVhdGUnXSwKLSAgICAgICAgICBk ZXBzOiBbJ2Nvbm5lY3Rfbm93J10sIHZpc2libGU6IGZ1bmN0aW9uKG1vZGVsKSB7CisgICAgICAg ICAgZGVwczogWydjb25uZWN0X25vdycsICdrZXJiZXJvc19jb25uJ10sIHZpc2libGU6IGZ1bmN0 aW9uKG1vZGVsKSB7CiAgICAgICAgICAgICByZXR1cm4gbW9kZWwuZ2V0KCdjb25uZWN0X25vdycp ICYmIG1vZGVsLmlzTmV3KCk7CiAgICAgICAgICAgfSwKLSAgICAgICAgICBkaXNhYmxlZDogZnVu Y3Rpb24oKSB7Ci0gICAgICAgICAgICBpZiAoIWN1cnJlbnRfdXNlci5hbGxvd19zYXZlX3Bhc3N3 b3JkKQorICAgICAgICAgIGRpc2FibGVkOiBmdW5jdGlvbihtb2RlbCkgeworICAgICAgICAgICAg aWYgKCFjdXJyZW50X3VzZXIuYWxsb3dfc2F2ZV9wYXNzd29yZCB8fCBtb2RlbC5nZXQoJ2tlcmJl cm9zX2Nvbm4nKSkKICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAgICAgICAgIHJl dHVybiBmYWxzZTsKQEAgLTEyNzksMTkgKzEyOTcsMzIgQEAgZGVmaW5lKCdwZ2FkbWluLm5vZGUu c2VydmVyJywgWwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgfQotCi0gICAgICAgICAgQWxl cnRpZnkucGdOb3RpZmllcignZXJyb3InLCB4aHIsIGVycm9yLCBmdW5jdGlvbihtc2cpIHsKLSAg ICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgIGlmIChtc2cg PT0gJ0NSWVBUS0VZX1NFVCcpIHsKKyAgICAgICAgICBpZiAoeGhyLnN0YXR1cyAhPSAyMDAgJiYg eGhyLnJlc3BvbnNlVGV4dC5zZWFyY2goJ1RpY2tldCBleHBpcmVkJykgIT09IC0xKSB7CisgICAg ICAgICAgICB0cmVlLmFkZEljb24oX2l0ZW0sIHtpY29uOiAnaWNvbi1zZXJ2ZXItY29ubmVjdGlu Zyd9KTsKKyAgICAgICAgICAgIGxldCBmZXRjaFRpY2tldCA9IEtlcmJlcm9zLmZldGNoX3RpY2tl dCgpOworICAgICAgICAgICAgZmV0Y2hUaWNrZXQudGhlbigKKyAgICAgICAgICAgICAgZnVuY3Rp b24oKSB7CiAgICAgICAgICAgICAgICAgY29ubmVjdF90b19zZXJ2ZXIoX25vZGUsIF9kYXRhLCBf dHJlZSwgX2l0ZW0sIF93YXNDb25uZWN0ZWQpOwotICAgICAgICAgICAgICB9IGVsc2UgewotICAg ICAgICAgICAgICAgIEFsZXJ0aWZ5LmRsZ1NlcnZlclBhc3MoCi0gICAgICAgICAgICAgICAgICBn ZXR0ZXh0KCdDb25uZWN0IHRvIFNlcnZlcicpLAotICAgICAgICAgICAgICAgICAgbXNnLCBfbm9k ZSwgX2RhdGEsIF90cmVlLCBfaXRlbSwgX3dhc0Nvbm5lY3RlZAotICAgICAgICAgICAgICAgICku cmVzaXplVG8oKTsKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7 CisgICAgICAgICAgICAgICAgdHJlZS5hZGRJY29uKF9pdGVtLCB7aWNvbjogJ2ljb24tc2VydmVy LW5vdC1jb25uZWN0ZWQnfSk7CisgICAgICAgICAgICAgICAgQWxlcnRpZnkucGdOb3RpZmllcign Q29ubmVjdGlvbiBlcnJvcicsIHhociwgZ2V0dGV4dCgnQ29ubmVjdCB0byBzZXJ2ZXIuJykpOwog ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9LCAxMDApOwotICAgICAgICAgIH0pOworICAg ICAgICAgICAgKTsKKyAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgQWxlcnRpZnkucGdO b3RpZmllcignZXJyb3InLCB4aHIsIGVycm9yLCBmdW5jdGlvbihtc2cpIHsKKyAgICAgICAgICAg ICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBpZiAobXNnID09ICdD UllQVEtFWV9TRVQnKSB7CisgICAgICAgICAgICAgICAgICBjb25uZWN0X3RvX3NlcnZlcihfbm9k ZSwgX2RhdGEsIF90cmVlLCBfaXRlbSwgX3dhc0Nvbm5lY3RlZCk7CisgICAgICAgICAgICAgICAg fSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgIEFsZXJ0aWZ5LmRsZ1NlcnZlclBhc3MoCisgICAg ICAgICAgICAgICAgICAgIGdldHRleHQoJ0Nvbm5lY3QgdG8gU2VydmVyJyksCisgICAgICAgICAg ICAgICAgICAgIG1zZywgX25vZGUsIF9kYXRhLCBfdHJlZSwgX2l0ZW0sIF93YXNDb25uZWN0ZWQK KyAgICAgICAgICAgICAgICAgICkucmVzaXplVG8oKTsKKyAgICAgICAgICAgICAgICB9CisgICAg ICAgICAgICAgIH0sIDEwMCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICB9CiAgICAgICAg IH0sCiAgICAgICAgIG9uU3VjY2VzcyA9IGZ1bmN0aW9uKHJlcywgbm9kZSwgX2RhdGEsIF90cmVl LCBfaXRlbSwgX3dhc0Nvbm5lY3RlZCkgewogICAgICAgICAgIGlmIChyZXMgJiYgcmVzLmRhdGEp IHsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc3RhdGljL2pzL2Jyb3dzZXIuanMg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3N0YXRpYy9qcy9icm93c2VyLmpzCmluZGV4IDRmZmI1ZWU1 YS4uYmY0NGFhNmY0IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3N0YXRpYy9qcy9i cm93c2VyLmpzCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc3RhdGljL2pzL2Jyb3dzZXIuanMK QEAgLTEyLDE5ICsxMiwyMiBAQCBkZWZpbmUoJ3BnYWRtaW4uYnJvd3NlcicsIFsKICAgJ3NvdXJj ZXMvZ2V0dGV4dCcsICdzb3VyY2VzL3VybF9mb3InLCAncmVxdWlyZScsICdqcXVlcnknLCAndW5k ZXJzY29yZScsCiAgICdib290c3RyYXAnLCAnc291cmNlcy9wZ2FkbWluJywgJ3BnYWRtaW4uYWxl cnRpZnlqcycsICdidW5kbGVkX2NvZGVtaXJyb3InLAogICAnc291cmNlcy9jaGVja19ub2RlX3Zp c2liaWxpdHknLCAnLi90b29sYmFyJywgJ3BnYWRtaW4uaGVscCcsCi0gICdzb3VyY2VzL2NzcmYn LCAnc291cmNlcy91dGlscycsICdzb3VyY2VzL3dpbmRvdycsICdwZ2FkbWluLmJyb3dzZXIudXRp bHMnLAotICAnd2Nkb2NrZXInLCAnanF1ZXJ5LmNvbnRleHRtZW51JywgJ2pxdWVyeS5hY2lwbHVn aW4nLCAnanF1ZXJ5LmFjaXRyZWUnLAorICAnc291cmNlcy9jc3JmJywgJ3NvdXJjZXMvdXRpbHMn LCAnc291cmNlcy93aW5kb3cnLCAncGdhZG1pbi5hdXRoZW50aWNhdGUua2VyYmVyb3MnLAorICAn cGdhZG1pbi5icm93c2VyLnV0aWxzJywgJ3djZG9ja2VyJywgJ2pxdWVyeS5jb250ZXh0bWVudScs ICdqcXVlcnkuYWNpcGx1Z2luJywKKyAgJ2pxdWVyeS5hY2l0cmVlJywKICAgJ3BnYWRtaW4uYnJv d3Nlci5wcmVmZXJlbmNlcycsICdwZ2FkbWluLmJyb3dzZXIubWVzc2FnZXMnLAogICAncGdhZG1p bi5icm93c2VyLm1lbnUnLCAncGdhZG1pbi5icm93c2VyLnBhbmVsJywgJ3BnYWRtaW4uYnJvd3Nl ci5sYXlvdXQnLAogICAncGdhZG1pbi5icm93c2VyLnJ1bnRpbWUnLCAncGdhZG1pbi5icm93c2Vy LmVycm9yJywgJ3BnYWRtaW4uYnJvd3Nlci5mcmFtZScsCiAgICdwZ2FkbWluLmJyb3dzZXIubm9k ZScsICdwZ2FkbWluLmJyb3dzZXIuY29sbGVjdGlvbicsICdwZ2FkbWluLmJyb3dzZXIuYWN0aXZp dHknLAogICAnc291cmNlcy9jb2RlbWlycm9yL2FkZG9uL2ZvbGQvcGdhZG1pbi1zcWxmb2xkY29k ZScsCi0gICdwZ2FkbWluLmJyb3dzZXIua2V5Ym9hcmQnLCAnc291cmNlcy90cmVlL3BnYWRtaW5f dHJlZV9zYXZlX3N0YXRlJywnanF1ZXJ5LmFjaXNvcnRhYmxlJywgJ2pxdWVyeS5hY2lmcmFnbWVu dCcsCisgICdwZ2FkbWluLmJyb3dzZXIua2V5Ym9hcmQnLCAnc291cmNlcy90cmVlL3BnYWRtaW5f dHJlZV9zYXZlX3N0YXRlJywnanF1ZXJ5LmFjaXNvcnRhYmxlJywKKyAgJ2pxdWVyeS5hY2lmcmFn bWVudCcsCiBdLCBmdW5jdGlvbigKICAgdHJlZSwKICAgZ2V0dGV4dCwgdXJsX2ZvciwgcmVxdWly ZSwgJCwgXywKICAgQm9vdHN0cmFwLCBwZ0FkbWluLCBBbGVydGlmeSwgY29kZW1pcnJvciwKLSAg Y2hlY2tOb2RlVmlzaWJpbGl0eSwgdG9vbEJhciwgaGVscCwgY3NyZlRva2VuLCBwZ2FkbWluVXRp bHMsIHBnV2luZG93CisgIGNoZWNrTm9kZVZpc2liaWxpdHksIHRvb2xCYXIsIGhlbHAsIGNzcmZU b2tlbiwgcGdhZG1pblV0aWxzLCBwZ1dpbmRvdywKKyAgS2VyYmVyb3MKICkgewogICB3aW5kb3cu alF1ZXJ5ID0gd2luZG93LiQgPSAkOwogICAvLyBTb21lIHNjcmlwdHMgZG8gZXhwb3J0IHRoZWly IG9iamVjdCBpbiB0aGUgd2luZG93IG9ubHkuCkBAIC0zOCw2ICs0MSw4IEBAIGRlZmluZSgncGdh ZG1pbi5icm93c2VyJywgWwogCiAgIGNzcmZUb2tlbi5zZXRQR0NTUkZUb2tlbihwZ0FkbWluLmNz cmZfdG9rZW5faGVhZGVyLCBwZ0FkbWluLmNzcmZfdG9rZW4pOwogCisgIEtlcmJlcm9zLnZhbGlk YXRlX2tlcmJlcm9zX3RpY2tldCgpOworCiAgIHZhciBwYW5lbEV2ZW50cyA9IHt9OwogICBwYW5l bEV2ZW50c1t3Y0RvY2tlci5FVkVOVC5WSVNJQklMSVRZX0NIQU5HRURdID0gZnVuY3Rpb24oKSB7 CiAgICAgaWYgKHRoaXMuaXNWaXNpYmxlKCkpIHsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jy b3dzZXIvdGVtcGxhdGVzL2Jyb3dzZXIvanMvY29uc3RhbnRzLmpzIGIvd2ViL3BnYWRtaW4vYnJv d3Nlci90ZW1wbGF0ZXMvYnJvd3Nlci9qcy9jb25zdGFudHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwLi42YTYzZDZlZDkKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdh ZG1pbi9icm93c2VyL3RlbXBsYXRlcy9icm93c2VyL2pzL2NvbnN0YW50cy5qcwpAQCAtMCwwICsx LDE3IEBACisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vCisvLworLy8gcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworLy8KKy8v IENvcHlyaWdodCAoQykgMjAxMyAtIDIwMjEsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0K Ky8vIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5j ZQorLy8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vCisKKworZGVmaW5lKCdwZ2FkbWluLmJyb3dzZXIuY29uc3RhbnRzJywgW10s IGZ1bmN0aW9uKCkgeworICByZXR1cm4geworICAgICdJTlRFUk5BTCc6ICd7eyBJTlRFUk5BTCB9 fScsCisgICAgJ0xEQVAnOiAne3sgTERBUCB9fScsCisgICAgJ0tFUkJFUk9TJzogJ3t7IEtFUkJF Uk9TIH19JworICB9Cit9KTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvdGVzdHMv dGVzdF9rZXJiZXJvc193aXRoX21vY2tpbmcucHkgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Rlc3Rz L3Rlc3Rfa2VyYmVyb3Nfd2l0aF9tb2NraW5nLnB5CmluZGV4IGYzMWU5ODNmZi4uNmI2MWRjMWQw IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3Rlc3RzL3Rlc3Rfa2VyYmVyb3Nfd2l0 aF9tb2NraW5nLnB5CisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvdGVzdHMvdGVzdF9rZXJiZXJv c193aXRoX21vY2tpbmcucHkKQEAgLTEyLDYgKzEyLDcgQEAgZnJvbSBwZ2FkbWluLnV0aWxzLnJv dXRlIGltcG9ydCBCYXNlVGVzdEdlbmVyYXRvcgogZnJvbSByZWdyZXNzaW9uLnB5dGhvbl90ZXN0 X3V0aWxzIGltcG9ydCB0ZXN0X3V0aWxzIGFzIHV0aWxzCiBmcm9tIHBnYWRtaW4uYXV0aGVudGlj YXRlLnJlZ2lzdHJ5IGltcG9ydCBBdXRoU291cmNlUmVnaXN0cnkKIGZyb20gdW5pdHRlc3QubW9j ayBpbXBvcnQgcGF0Y2gsIE1hZ2ljTW9jaworZnJvbSB3ZXJremV1Zy5kYXRhc3RydWN0dXJlcyBp bXBvcnQgSGVhZGVycwogCiAKIGNsYXNzIEtlcmJlcm9zTG9naW5Nb2NrVGVzdENhc2UoQmFzZVRl c3RHZW5lcmF0b3IpOgpAQCAtMzAsNiArMzEsMTEgQEAgY2xhc3MgS2VyYmVyb3NMb2dpbk1vY2tU ZXN0Q2FzZShCYXNlVGVzdEdlbmVyYXRvcik6CiAgICAgICAgICAgICBhdXRoX3NvdXJjZT1bJ2tl cmJlcm9zJ10sCiAgICAgICAgICAgICBhdXRvX2NyZWF0ZV91c2VyPVRydWUsCiAgICAgICAgICAg ICBmbGFnPTIKKyAgICAgICAgKSksCisgICAgICAgICgnU3BuZWdvL0tlcmJlcm9zIFVwZGF0ZSBU aWNrZXQnLCBkaWN0KAorICAgICAgICAgICAgYXV0aF9zb3VyY2U9WydrZXJiZXJvcyddLAorICAg ICAgICAgICAgYXV0b19jcmVhdGVfdXNlcj1UcnVlLAorICAgICAgICAgICAgZmxhZz0zCiAgICAg ICAgICkpCiAgICAgXQogCkBAIC01NCw4ICs2MCwxMyBAQCBjbGFzcyBLZXJiZXJvc0xvZ2luTW9j a1Rlc3RDYXNlKEJhc2VUZXN0R2VuZXJhdG9yKToKICAgICAgICAgICAgICAgICBzZWxmLnNraXBU ZXN0KAogICAgICAgICAgICAgICAgICAgICAiQ2FuIG5vdCBydW4gS2VyYmVyb3MgQXV0aGVudGlj YXRpb24gaW4gdGhlIERlc2t0b3AgbW9kZS4iCiAgICAgICAgICAgICAgICAgKQotCiAgICAgICAg ICAgICBzZWxmLnRlc3RfYXV0aG9yaXplZCgpCisgICAgICAgIGVsaWYgc2VsZi5mbGFnID09IDM6 CisgICAgICAgICAgICBpZiBhcHBfY29uZmlnLlNFUlZFUl9NT0RFIGlzIEZhbHNlOgorICAgICAg ICAgICAgICAgIHNlbGYuc2tpcFRlc3QoCisgICAgICAgICAgICAgICAgICAgICJDYW4gbm90IHJ1 biBLZXJiZXJvcyBBdXRoZW50aWNhdGlvbiBpbiB0aGUgRGVza3RvcCBtb2RlLiIKKyAgICAgICAg ICAgICAgICApCisgICAgICAgICAgICBzZWxmLnRlc3RfdXBkYXRlX3RpY2tldCgpCiAKICAgICBk ZWYgdGVzdF91bmF1dGhvcml6ZWQoc2VsZik6CiAgICAgICAgICIiIgpAQCAtNzMsMTMgKzg0LDcg QEAgY2xhc3MgS2VyYmVyb3NMb2dpbk1vY2tUZXN0Q2FzZShCYXNlVGVzdEdlbmVyYXRvcik6CiAg ICAgICAgIHBhc3NlZCBvbiB0byB0aGUgcm91dGVkIG1ldGhvZC4KICAgICAgICAgIiIiCiAKLSAg ICAgICAgY2xhc3MgZGVsQ3JhZHM6Ci0gICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZik6Ci0g ICAgICAgICAgICAgICAgc2VsZi5pbml0aWF0b3JfbmFtZSA9ICd1c2VyQFBHQURNSU4uT1JHJwot ICAgICAgICBkZWxfY3JhZHMgPSBkZWxDcmFkcygpCi0KLSAgICAgICAgQXV0aFNvdXJjZVJlZ2lz dHJ5LnJlZ2lzdHJ5WydrZXJiZXJvcyddLm5lZ290aWF0ZV9zdGFydCA9IE1hZ2ljTW9jaygKLSAg ICAgICAgICAgIHJldHVybl92YWx1ZT1bVHJ1ZSwgZGVsX2NyYWRzXSkKKyAgICAgICAgZGVsX2Ny YWRzID0gc2VsZi5tb2NrX25lZ290aWF0ZV9zdGFydCgpCiAgICAgICAgIHJlcyA9IHNlbGYudGVz dGVyLmxvZ2luKE5vbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vbmUsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRydWUsCkBAIC04OSw2ICs5NCwzMyBAQCBj bGFzcyBLZXJiZXJvc0xvZ2luTW9ja1Rlc3RDYXNlKEJhc2VUZXN0R2VuZXJhdG9yKToKICAgICAg ICAgcmVzcGRhdGEgPSAnR3JhdmF0YXIgaW1hZ2UgZm9yICVzJyAlIGRlbF9jcmFkcy5pbml0aWF0 b3JfbmFtZQogICAgICAgICBzZWxmLmFzc2VydFRydWUocmVzcGRhdGEgaW4gcmVzLmRhdGEuZGVj b2RlKCd1dGY4JykpCiAKKyAgICBkZWYgbW9ja19uZWdvdGlhdGVfc3RhcnQoc2VsZik6CisgICAg ICAgIGNsYXNzIGRlbENyYWRzOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAg ICAgICAgICAgICAgIHNlbGYuaW5pdGlhdG9yX25hbWUgPSAndXNlckBQR0FETUlOLk9SRycKKwor ICAgICAgICBkZWxfY3JhZHMgPSBkZWxDcmFkcygpCisKKyAgICAgICAgQXV0aFNvdXJjZVJlZ2lz dHJ5LnJlZ2lzdHJ5WydrZXJiZXJvcyddLm5lZ290aWF0ZV9zdGFydCA9IE1hZ2ljTW9jaygKKyAg ICAgICAgICAgIHJldHVybl92YWx1ZT1bVHJ1ZSwgZGVsX2NyYWRzXSkKKyAgICAgICAgcmV0dXJu IGRlbF9jcmFkcworCisgICAgZGVmIHRlc3RfdXBkYXRlX3RpY2tldChzZWxmKToKKyAgICAgICAg IyBSZXNwb25zZSBoZWFkZXIgc2hvdWxkIGluY2x1ZGUgdGhlIE5lZ290aWF0ZSBoZWFkZXIgaW4g dGhlIGZpcnN0IGNhbGwKKyAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnRlc3Rlci5nZXQoJy9hdXRo ZW50aWNhdGUva2VyYmVyb3MvdXBkYXRlX3RpY2tldCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1 YWwocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDQwMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChy ZXNwb25zZS5oZWFkZXJzLmdldCgnd3d3LWF1dGhlbnRpY2F0ZScpLCAnTmVnb3RpYXRlJykKKwor ICAgICAgICAjIFdoZW4gd2Ugc2VuZCB0aGUgS2VyYmVyb3MgVGlja2V0LCBpdCBzaG91bGQgcmV0 dXJuICBzdWNjZXNzCisgICAgICAgIGRlbF9jcmFkcyA9IHNlbGYubW9ja19uZWdvdGlhdGVfc3Rh cnQoKQorCisgICAgICAgIGtyYl90b2tlbiA9IEhlYWRlcnMoe30pCisgICAgICAgIGtyYl90b2tl blsnQXV0aG9yaXphdGlvbiddID0gJ05lZ290aWF0ZSBDVE9LRU4nCisKKyAgICAgICAgcmVzcG9u c2UgPSBzZWxmLnRlc3Rlci5nZXQoJy9hdXRoZW50aWNhdGUva2VyYmVyb3MvdXBkYXRlX3RpY2tl dCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9a3JiX3Rva2Vu KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCisK ICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIHNlbGYuYXBwLlBHQURNSU5fRVhURVJO QUxfQVVUSF9TT1VSQ0UgPSAnbGRhcCcKIApkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vbWlzYy9i Z3Byb2Nlc3MvcHJvY2Vzc2VzLnB5IGIvd2ViL3BnYWRtaW4vbWlzYy9iZ3Byb2Nlc3MvcHJvY2Vz c2VzLnB5CmluZGV4IGVmNmNmYzNmMi4uMjVlMGEyYTllIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1p bi9taXNjL2JncHJvY2Vzcy9wcm9jZXNzZXMucHkKKysrIGIvd2ViL3BnYWRtaW4vbWlzYy9iZ3By b2Nlc3MvcHJvY2Vzc2VzLnB5CkBAIC0yNCwxMCArMjQsMTEgQEAgaW1wb3J0IGxvZ2dpbmcKIGZy b20gcGdhZG1pbi51dGlscyBpbXBvcnQgdV9lbmNvZGUsIGZpbGVfcXVvdGUsIGZzX2VuY29kaW5n LCBcCiAgICAgZ2V0X2NvbXBsZXRlX2ZpbGVfcGF0aCwgZ2V0X3N0b3JhZ2VfZGlyZWN0b3J5LCBJ U19XSU4KIGZyb20gcGdhZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy51dGlscyBp bXBvcnQgZG9lc19zZXJ2ZXJfZXhpc3RzCitmcm9tIHBnYWRtaW4udXRpbHMuY29uc3RhbnRzIGlt cG9ydCBLRVJCRVJPUwogCiBpbXBvcnQgcHl0egogZnJvbSBkYXRldXRpbCBpbXBvcnQgcGFyc2Vy Ci1mcm9tIGZsYXNrIGltcG9ydCBjdXJyZW50X2FwcAorZnJvbSBmbGFzayBpbXBvcnQgY3VycmVu dF9hcHAsIHNlc3Npb24KIGZyb20gZmxhc2tfYmFiZWxleCBpbXBvcnQgZ2V0dGV4dCBhcyBfCiBm cm9tIGZsYXNrX3NlY3VyaXR5IGltcG9ydCBjdXJyZW50X3VzZXIKIApAQCAtMjc4LDEzICsyNzks MTYgQEAgY2xhc3MgQmF0Y2hQcm9jZXNzKG9iamVjdCk6CiAgICAgICAgIGVudlsnUFJPQ0lEJ10g PSBzZWxmLmlkCiAgICAgICAgIGVudlsnT1VURElSJ10gPSBzZWxmLmxvZ19kaXIKICAgICAgICAg ZW52WydQR0FfQkdQX0ZPUkVHUk9VTkQnXSA9ICIxIgorICAgICAgICBpZiBjb25maWcuU0VSVkVS X01PREUgYW5kIHNlc3Npb24gYW5kIFwKKyAgICAgICAgICAgICAgICBzZXNzaW9uWydfYXV0aF9z b3VyY2VfbWFuYWdlcl9vYmonXVsnY3VycmVudF9zb3VyY2UnXSA9PSBcCisgICAgICAgICAgICAg ICAgS0VSQkVST1M6CisgICAgICAgICAgICBlbnZbJ0tSQjVDQ05BTUUnXSA9IHNlc3Npb25bJ0tS QjVDQ05BTUUnXQogCiAgICAgICAgIGlmIHNlbGYuZW52OgogICAgICAgICAgICAgZW52LnVwZGF0 ZShzZWxmLmVudikKIAogICAgICAgICBpZiBjYiBpcyBub3QgTm9uZToKICAgICAgICAgICAgIGNi KGVudikKLQogICAgICAgICBpZiBvcy5uYW1lID09ICdudCc6CiAgICAgICAgICAgICBERVRBQ0hF RF9QUk9DRVNTID0gMHgwMDAwMDAwOAogICAgICAgICAgICAgZnJvbSBzdWJwcm9jZXNzIGltcG9y dCBDUkVBVEVfTkVXX1BST0NFU1NfR1JPVVAKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL21vZGVs L19faW5pdF9fLnB5IGIvd2ViL3BnYWRtaW4vbW9kZWwvX19pbml0X18ucHkKaW5kZXggZDg0OWI4 YzI2Li5lZGZhN2E0OWYgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL21vZGVsL19faW5pdF9fLnB5 CisrKyBiL3dlYi9wZ2FkbWluL21vZGVsL19faW5pdF9fLnB5CkBAIC0yOSw3ICsyOSw3IEBAIGZy b20gZmxhc2tfc3FsYWxjaGVteSBpbXBvcnQgU1FMQWxjaGVteQogIwogIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMKIAotU0NIRU1BX1ZFUlNJT04gPSAyOAorU0NIRU1BX1ZFUlNJT04gPSAyOQogCiAjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIwogIwpAQCAtMTg0LDYgKzE4NCw3IEBAIGNsYXNzIFNlcnZlcihkYi5Nb2RlbCk6 CiAgICAgdHVubmVsX2lkZW50aXR5X2ZpbGUgPSBkYi5Db2x1bW4oZGIuU3RyaW5nKDY0KSwgbnVs bGFibGU9VHJ1ZSkKICAgICB0dW5uZWxfcGFzc3dvcmQgPSBkYi5Db2x1bW4oZGIuU3RyaW5nKDY0 KSwgbnVsbGFibGU9VHJ1ZSkKICAgICBzaGFyZWQgPSBkYi5Db2x1bW4oZGIuQm9vbGVhbigpLCBu dWxsYWJsZT1GYWxzZSkKKyAgICBrZXJiZXJvc19jb25uID0gZGIuQ29sdW1uKGRiLkJvb2xlYW4o KSwgbnVsbGFibGU9RmFsc2UpCiAKICAgICBAcHJvcGVydHkKICAgICBkZWYgc2VyaWFsaXplKHNl bGYpOgpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vc2V0dXAvZGF0YV9kaXJlY3RvcnkucHkgYi93 ZWIvcGdhZG1pbi9zZXR1cC9kYXRhX2RpcmVjdG9yeS5weQppbmRleCAyMzM1YjA3OTAuLmM1Nzc4 ODg5ZiAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vc2V0dXAvZGF0YV9kaXJlY3RvcnkucHkKKysr IGIvd2ViL3BnYWRtaW4vc2V0dXAvZGF0YV9kaXJlY3RvcnkucHkKQEAgLTksNiArOSw4IEBACiAK IGltcG9ydCBvcwogaW1wb3J0IGdldHBhc3MKK2Zyb20gZmxhc2sgaW1wb3J0IGN1cnJlbnRfYXBw Citmcm9tIHBnYWRtaW4udXRpbHMuY29uc3RhbnRzIGltcG9ydCBLRVJCRVJPUwogCiBGQUlMRURf Q1JFQVRFX0RJUiA9IFwKICAgICAiRVJST1IgIDogRmFpbGVkIHRvIGNyZWF0ZSB0aGUgZGlyZWN0 b3J5IHt9OlxuICAgICAgICAgICB7fSIKQEAgLTEwNCwzICsxMDYsMjAgQEAgZGVmIGNyZWF0ZV9h cHBfZGF0YV9kaXJlY3RvcnkoY29uZmlnKToKICAgICAgICAgICAgICAgICBnZXRwYXNzLmdldHVz ZXIoKSwKICAgICAgICAgICAgICAgICBjb25maWcuQVBQX1ZFUlNJT04pKQogICAgICAgICBleGl0 KDEpCisKKyAgICAjIENyZWF0ZSBLZXJiZXJvcyBDcmVkZW50aWFsIENhY2hlIGRpcmVjdG9yeSAo aWYgbm90IHByZXNlbnQpLgorICAgIGlmIGNvbmZpZy5TRVJWRVJfTU9ERSBhbmQgS0VSQkVST1Mg aW4gY29uZmlnLkFVVEhFTlRJQ0FUSU9OX1NPVVJDRVM6CisgICAgICAgIHRyeToKKyAgICAgICAg ICAgIF9jcmVhdGVfZGlyZWN0b3J5X2lmX25vdF9leGlzdHMoY29uZmlnLktFUkJFUk9TX0NDQUNI RV9ESVIpCisgICAgICAgIGV4Y2VwdCBQZXJtaXNzaW9uRXJyb3IgYXMgZToKKyAgICAgICAgICAg IHByaW50KEZBSUxFRF9DUkVBVEVfRElSLmZvcm1hdChjb25maWcuS0VSQkVST1NfQ0NBQ0hFX0RJ UiwgZSkpCisgICAgICAgICAgICBwcmludCgKKyAgICAgICAgICAgICAgICAiSElOVCAgIDogQ3Jl YXRlIHRoZSBkaXJlY3Rvcnkge30sIGVuc3VyZSBpdCBpcyB3cml0YWJsZSBieVxuIgorICAgICAg ICAgICAgICAgICIne30nLCBhbmQgdHJ5IGFnYWluLCBvciwgY3JlYXRlIGEgY29uZmlnX2xvY2Fs LnB5IGZpbGVcbiIKKyAgICAgICAgICAgICAgICAiIGFuZCBvdmVycmlkZSB0aGUgS0VSQkVST1Nf Q0NBQ0hFX0RJUiBzZXR0aW5nIHBlclxuIgorICAgICAgICAgICAgICAgICIgaHR0cHM6Ly93d3cu cGdhZG1pbi5vcmcvZG9jcy9wZ2FkbWluNC97fS9jb25maWdfcHkuaHRtbCIuCisgICAgICAgICAg ICAgICAgZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICBjb25maWcuS0VSQkVST1NfQ0NBQ0hF X0RJUiwKKyAgICAgICAgICAgICAgICAgICAgZ2V0cGFzcy5nZXR1c2VyKCksCisgICAgICAgICAg ICAgICAgICAgIGNvbmZpZy5BUFBfVkVSU0lPTikpCisgICAgICAgICAgICBleGl0KDEpCmRpZmYg LS1naXQgYS93ZWIvcGdhZG1pbi90ZW1wbGF0ZXMvYmFzZS5odG1sIGIvd2ViL3BnYWRtaW4vdGVt cGxhdGVzL2Jhc2UuaHRtbAppbmRleCA3ZDM3NDM1NDMuLmNlMzc1ZWM0NCAxMDA2NDQKLS0tIGEv d2ViL3BnYWRtaW4vdGVtcGxhdGVzL2Jhc2UuaHRtbAorKysgYi93ZWIvcGdhZG1pbi90ZW1wbGF0 ZXMvYmFzZS5odG1sCkBAIC00OCw2ICs0OCw3IEBACiAgICAgICAgICAgICAgICAgICAgICdwZ2Fk bWluLmJyb3dzZXIudXRpbHMnOiAie3sgdXJsX2ZvcignYnJvd3Nlci5pbmRleCcpIH19IiArICJq cy91dGlscyIsCiAgICAgICAgICAgICAgICAgICAgICdwZ2FkbWluLmJyb3dzZXIuZW5kcG9pbnRz JzogInt7IHVybF9mb3IoJ2Jyb3dzZXIuaW5kZXgnKSB9fSIgKyAianMvZW5kcG9pbnRzIiwKICAg ICAgICAgICAgICAgICAgICAgJ3BnYWRtaW4uYnJvd3Nlci5tZXNzYWdlcyc6ICJ7eyB1cmxfZm9y KCdicm93c2VyLmluZGV4JykgfX0iICsgImpzL21lc3NhZ2VzIiwKKyAgICAgICAgICAgICAgICAg ICAgJ3BnYWRtaW4uYnJvd3Nlci5jb25zdGFudHMnOiAie3sgdXJsX2ZvcignYnJvd3Nlci5pbmRl eCcpIH19IiArICJqcy9jb25zdGFudHMiLAogICAgICAgICAgICAgICAgICAgICAncGdhZG1pbi5z ZXJ2ZXIuc3VwcG9ydGVkX3NlcnZlcnMnOiAie3sgdXJsX2ZvcignYnJvd3Nlci5pbmRleCcpIH19 IiArICJzZXJ2ZXIvc3VwcG9ydGVkX3NlcnZlcnMiLAogICAgICAgICAgICAgICAgICAgICAncGdh ZG1pbi51c2VyX21hbmFnZW1lbnQuY3VycmVudF91c2VyJzogInt7IHVybF9mb3IoJ3VzZXJfbWFu YWdlbWVudC5pbmRleCcpIH19IiArICJjdXJyZW50X3VzZXIiLAogICAgICAgICAgICAgICAgICAg ICAndHJhbnNsYXRpb25zJzogInt7IHVybF9mb3IoJ3Rvb2xzLmluZGV4JykgfX0iICsgInRyYW5z bGF0aW9ucyIKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL2JhY2t1cC9zdGF0aWMvanMv YmFja3VwX2RpYWxvZ193cmFwcGVyLmpzIGIvd2ViL3BnYWRtaW4vdG9vbHMvYmFja3VwL3N0YXRp Yy9qcy9iYWNrdXBfZGlhbG9nX3dyYXBwZXIuanMKaW5kZXggNGY4OWU1YmI3Li43ZTBkZGQ2M2Yg MTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3Rvb2xzL2JhY2t1cC9zdGF0aWMvanMvYmFja3VwX2Rp YWxvZ193cmFwcGVyLmpzCisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL2JhY2t1cC9zdGF0aWMvanMv YmFja3VwX2RpYWxvZ193cmFwcGVyLmpzCkBAIC0xMyw2ICsxMyw4IEBAIGltcG9ydCBnZXR0ZXh0 IGZyb20gJy4uLy4uLy4uLy4uL3N0YXRpYy9qcy9nZXR0ZXh0JzsKIGltcG9ydCB1cmxfZm9yIGZy b20gJy4uLy4uLy4uLy4uL3N0YXRpYy9qcy91cmxfZm9yJzsKIGltcG9ydCBfIGZyb20gJ3VuZGVy c2NvcmUnOwogaW1wb3J0IHtEaWFsb2dXcmFwcGVyfSBmcm9tICcuLi8uLi8uLi8uLi9zdGF0aWMv anMvYWxlcnRpZnkvZGlhbG9nX3dyYXBwZXInOworaW1wb3J0IHtmZXRjaF90aWNrZXRfbGlmZXRp bWV9IGZyb20gICcuLi8uLi8uLi8uLi9hdXRoZW50aWNhdGUvc3RhdGljL2pzL2tlcmJlcm9zJzsK K2ltcG9ydCB1c2VySW5mbyBmcm9tICdwZ2FkbWluLnVzZXJfbWFuYWdlbWVudC5jdXJyZW50X3Vz ZXInOwogCiBleHBvcnQgY2xhc3MgQmFja3VwRGlhbG9nV3JhcHBlciBleHRlbmRzIERpYWxvZ1dy YXBwZXIgewogICBjb25zdHJ1Y3RvcihkaWFsb2dDb250YWluZXJTZWxlY3RvciwgZGlhbG9nVGl0 bGUsIHR5cGVPZkRpYWxvZywKQEAgLTE2NSwxMCArMTY3LDI5IEBAIGV4cG9ydCBjbGFzcyBCYWNr dXBEaWFsb2dXcmFwcGVyIGV4dGVuZHMgRGlhbG9nV3JhcHBlciB7CiAgICAgICApOwogCiAgICAg ICB0aGlzLnNldEV4dHJhUGFyYW1ldGVycyhzZWxlY3RlZFRyZWVOb2RlLCB0cmVlSW5mbyk7Cisg ICAgICBsZXQgYmFja3VwRGF0ZSA9IHRoaXMudmlldy5tb2RlbC50b0pTT04oKTsKKworICAgICAg aWYodXNlckluZm9bJ2F1dGhfc291cmNlcyddID09ICdLRVJCRVJPUycgJiYgKGJhY2t1cERhdGUu dHlwZSA9PSAnZ2xvYmFscycgfHwgYmFja3VwRGF0ZS50eXBlID09ICdzZXJ2ZXInKSkgeworICAg ICAgICBsZXQgbmV3UHJvbWlzZSA9IGZldGNoX3RpY2tldF9saWZldGltZSgpOworICAgICAgICBu ZXdQcm9taXNlLnRoZW4oCisgICAgICAgICAgZnVuY3Rpb24obGlmZXRpbWUpIHsKKyAgICAgICAg ICAgIGlmIChsaWZldGltZSA8IDE4MDAgJiYgbGlmZXRpbWUgID4gMCkgeworICAgICAgICAgICAg ICBkaWFsb2cuYWxlcnRpZnkud2FybmluZygKKyAgICAgICAgICAgICAgICAnWW91IGhhdmUgJysg KE1hdGgucm91bmQocGFyc2VJbnQobGlmZXRpbWUpLzYwKSkudG9TdHJpbmcoKSArJyBtaW51dGVz IGxlZnQgb24geW91ciB0aWNrZXQgLSBpZiB0aGUgZHVtcCB0YWtlcyBsb25nZXIgdGhhbiB0aGF0 LCBpdCBtYXkgZmFpbC4iJworICAgICAgICAgICAgICApOworICAgICAgICAgICAgfQorICAgICAg ICAgIH0sCisgICAgICAgICAgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBkaWFsb2cuYWxlcnRp Znkud2FybmluZygKKyAgICAgICAgICAgICAgZ2V0dGV4dCgnUGxlYXNlIHJlbmV3IHlvdXIga2Vy YmVyb3MgdGlja2V0LCBpdCBoYXMgYmVlbiBleHBpcmVkLicpCisgICAgICAgICAgICApOworICAg ICAgICAgIH0KKyAgICAgICAgKTsKKyAgICAgIH0KIAogICAgICAgYXhpb3MucG9zdCgKICAgICAg ICAgYmFzZVVybCwKLSAgICAgICAgdGhpcy52aWV3Lm1vZGVsLnRvSlNPTigpCisgICAgICAgIGJh Y2t1cERhdGUKICAgICAgICkudGhlbihmdW5jdGlvbiAocmVzKSB7CiAgICAgICAgIGlmIChyZXMu ZGF0YS5zdWNjZXNzKSB7CiAgICAgICAgICAgZGlhbG9nLmFsZXJ0aWZ5LnN1Y2Nlc3MoZ2V0dGV4 dCgnQmFja3VwIGpvYiBjcmVhdGVkLicpLCA1KTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rv b2xzL2RlYnVnZ2VyL3N0YXRpYy9qcy9kZWJ1Z2dlci5qcyBiL3dlYi9wZ2FkbWluL3Rvb2xzL2Rl YnVnZ2VyL3N0YXRpYy9qcy9kZWJ1Z2dlci5qcwppbmRleCBmMzFhMGZjMDAuLjQ2MGEyMDBiYiAx MDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vdG9vbHMvZGVidWdnZXIvc3RhdGljL2pzL2RlYnVnZ2Vy LmpzCisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL2RlYnVnZ2VyL3N0YXRpYy9qcy9kZWJ1Z2dlci5q cwpAQCAtMTMsMTEgKzEzLDExIEBAIGRlZmluZShbCiAgICdiYWNrYm9uZScsICdwZ2FkbWluLmJh Y2tncmlkJywgJ2NvZGVtaXJyb3InLCAncGdhZG1pbi5iYWNrZm9ybScsCiAgICdwZ2FkbWluLnRv b2xzLmRlYnVnZ2VyLnVpJywgJ3BnYWRtaW4udG9vbHMuZGVidWdnZXIudXRpbHMnLAogICAndG9v bHMvZGF0YWdyaWQvc3RhdGljL2pzL3Nob3dfcXVlcnlfdG9vbCcsICdzb3VyY2VzL3V0aWxzJywK LSAgJ3djZG9ja2VyJywgJ3BnYWRtaW4uYnJvd3Nlci5mcmFtZScsCisgICdwZ2FkbWluLmF1dGhl bnRpY2F0ZS5rZXJiZXJvcycsICd3Y2RvY2tlcicsICdwZ2FkbWluLmJyb3dzZXIuZnJhbWUnLAog XSwgZnVuY3Rpb24oCiAgIGdldHRleHQsIHVybF9mb3IsICQsIF8sIEFsZXJ0aWZ5LCBwZ0FkbWlu LCBwZ0Jyb3dzZXIsIEJhY2tib25lLCBCYWNrZ3JpZCwKICAgQ29kZU1pcnJvciwgQmFja2Zvcm0s IGdldF9mdW5jdGlvbl9hcmd1bWVudHMsIGRlYnVnZ2VyVXRpbHMsIHNob3dRdWVyeVRvb2wsCi0g IHBnYWRtaW5VdGlscywKKyAgcGdhZG1pblV0aWxzLCBLZXJiZXJvcwogKSB7CiAgIHZhciBwZ1Rv b2xzID0gcGdBZG1pbi5Ub29scyA9IHBnQWRtaW4uVG9vbHMgfHwge30sCiAgICAgd2NEb2NrZXIg PSB3aW5kb3cud2NEb2NrZXI7CkBAIC00NzIsOCArNDcyLDIwIEBAIGRlZmluZShbCiAgICAgICAg IC5mYWlsKGZ1bmN0aW9uKHhocikgewogICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICB2YXIg ZXJyID0gSlNPTi5wYXJzZSh4aHIucmVzcG9uc2VUZXh0KTsKLSAgICAgICAgICAgIGlmIChlcnIu c3VjY2VzcyA9PSAwKSB7Ci0gICAgICAgICAgICAgIEFsZXJ0aWZ5LmFsZXJ0KGdldHRleHQoJ0Rl YnVnZ2VyIEVycm9yJyksIGVyci5lcnJvcm1zZyk7CisgICAgICAgICAgICBpZiAoZXJyLmVycm9y bXNnLnNlYXJjaCgnVGlja2V0IGV4cGlyZWQnKSAhPT0gLTEpIHsKKyAgICAgICAgICAgICAgbGV0 IGZldGNoVGlja2V0ID0gS2VyYmVyb3MuZmV0Y2hfdGlja2V0KCk7CisgICAgICAgICAgICAgIGZl dGNoVGlja2V0LnRoZW4oCisgICAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7CisgICAgICAgICAg ICAgICAgICBzZWxmLnN0YXJ0X2dsb2JhbF9kZWJ1Z2dlcigpOworICAgICAgICAgICAgICAgIH0s CisgICAgICAgICAgICAgICAgZnVuY3Rpb24oZXJyb3IpIHsKKyAgICAgICAgICAgICAgICAgIEFs ZXJ0aWZ5LmFsZXJ0KGdldHRleHQoJ0RlYnVnZ2VyIEVycm9yJyksIGVycm9yKTsKKyAgICAgICAg ICAgICAgICB9CisgICAgICAgICAgICAgICk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg ICAgICAgICBpZiAoZXJyLnN1Y2Nlc3MgPT0gMCkgeworICAgICAgICAgICAgICAgIEFsZXJ0aWZ5 LmFsZXJ0KGdldHRleHQoJ0RlYnVnZ2VyIEVycm9yJyksIGVyci5lcnJvcm1zZyk7CisgICAgICAg ICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAg ICAgICBjb25zb2xlLndhcm4oZS5zdGFjayB8fCBlKTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWlu L3Rvb2xzL3NxbGVkaXRvci9zdGF0aWMvanMvc3FsZWRpdG9yLmpzIGIvd2ViL3BnYWRtaW4vdG9v bHMvc3FsZWRpdG9yL3N0YXRpYy9qcy9zcWxlZGl0b3IuanMKaW5kZXggMjhkOTg5ZjQ3Li44NTYx NWM3NWMgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci9zdGF0aWMvanMv c3FsZWRpdG9yLmpzCisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci9zdGF0aWMvanMv c3FsZWRpdG9yLmpzCkBAIC01MSw2ICs1MSw3IEBAIGRlZmluZSgndG9vbHMucXVlcnl0b29sJywg WwogICAnc291cmNlcy93aW5kb3cnLAogICAnc291cmNlcy9pc19uYXRpdmUnLAogICAnc291cmNl cy9zcWxlZGl0b3IvbWFjcm8nLAorICAncGdhZG1pbi5hdXRoZW50aWNhdGUua2VyYmVyb3MnLAog ICAnc291cmNlcy8uLi9idW5kbGUvc2xpY2tncmlkJywKICAgJ3BnYWRtaW4uZmlsZV9tYW5hZ2Vy JywKICAgJ3NsaWNrLnBnYWRtaW4uZm9ybWF0dGVycycsCkBAIC02NSw3ICs2Niw3IEBAIGRlZmlu ZSgndG9vbHMucXVlcnl0b29sJywgWwogICBHZW9tZXRyeVZpZXdlciwgaGlzdG9yeUNvbGwsIHF1 ZXJ5SGlzdCwgcXVlcnlTb3VyY2VzLAogICBrZXlib2FyZFNob3J0Y3V0cywgcXVlcnlUb29sQWN0 aW9ucywgcXVlcnlUb29sTm90aWZpY2F0aW9ucywgRGF0YWdyaWQsCiAgIG1vZGlmeUFuaW1hdGlv biwgY2FsY3VsYXRlUXVlcnlSdW5UaW1lLCBjYWxsUmVuZGVyQWZ0ZXJQb2xsLCBxdWVyeVRvb2xQ cmVmLCBxdWVyeVR4blN0YXR1cywgY3NyZlRva2VuLCBwYW5lbFRpdGxlRnVuYywKLSAgcGdXaW5k b3csIGlzTmF0aXZlLCBNYWNyb0hhbmRsZXIpIHsKKyAgcGdXaW5kb3csIGlzTmF0aXZlLCBNYWNy b0hhbmRsZXIsIEtlcmJlcm9zKSB7CiAgIC8qIFJldHVybiBiYWNrLCB0aGlzIGhhcyBiZWVuIGNh bGxlZCBtb3JlIHRoYW4gb25jZSAqLwogICBpZiAocGdBZG1pbi5TcWxFZGl0b3IpCiAgICAgcmV0 dXJuIHBnQWRtaW4uU3FsRWRpdG9yOwpAQCAtMjQ1MSw5ICsyNDUyLDIzIEBAIGRlZmluZSgndG9v bHMucXVlcnl0b29sJywgWwogICAgICAgICAgICAgICBwZ0Jyb3dzZXIucmVwb3J0X2Vycm9yKGdl dHRleHQoJ0Vycm9yIGZldGNoaW5nIHJvd3MgLSAlcy4nLCB4aHIuc3RhdHVzVGV4dCksIHhoci5y ZXNwb25zZUpTT04uZXJyb3Jtc2csIHVuZGVmaW5lZCwgc2VsZi5jbG9zZS5iaW5kKHNlbGYpKTsK ICAgICAgICAgICAgIH0KICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcGdCcm93c2Vy LkV2ZW50cy50cmlnZ2VyKAotICAgICAgICAgICAgICAncGdhZG1pbjpxdWVyeV90b29sOmNvbm5l Y3RlZF9mYWlsOicgKyBzZWxmLnRyYW5zSWQsIHhociwgZXJyb3IKLSAgICAgICAgICAgICk7Cisg ICAgICAgICAgICBpZiAoeGhyLnJlc3BvbnNlVGV4dC5zZWFyY2goJ1RpY2tldCBleHBpcmVkJykg IT09IC0xKSB7CisgICAgICAgICAgICAgIGxldCBmZXRjaFRpY2tldCA9IEtlcmJlcm9zLmZldGNo X3RpY2tldCgpOworICAgICAgICAgICAgICBmZXRjaFRpY2tldC50aGVuKAorICAgICAgICAgICAg ICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgc2VsZi5pbml0VHJhbnNhY3Rpb24o KTsKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIGZ1bmN0aW9uKGVycm9yKSB7 CisgICAgICAgICAgICAgICAgICBwZ0Jyb3dzZXIuRXZlbnRzLnRyaWdnZXIoCisgICAgICAgICAg ICAgICAgICAgICdwZ2FkbWluOnF1ZXJ5X3Rvb2w6Y29ubmVjdGVkX2ZhaWw6JyArIHNlbGYudHJh bnNJZCwgeGhyLCBlcnJvcgorICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgICB9 CisgICAgICAgICAgICAgICk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICBw Z0Jyb3dzZXIuRXZlbnRzLnRyaWdnZXIoCisgICAgICAgICAgICAgICAgJ3BnYWRtaW46cXVlcnlf dG9vbDpjb25uZWN0ZWRfZmFpbDonICsgc2VsZi50cmFuc0lkLCB4aHIsIGVycm9yCisgICAgICAg ICAgICAgICk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgfQogICAgICAgICB9KTsKICAgICAg IH0sCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy91c2VyX21hbmFnZW1lbnQvX19pbml0 X18ucHkgYi93ZWIvcGdhZG1pbi90b29scy91c2VyX21hbmFnZW1lbnQvX19pbml0X18ucHkKaW5k ZXggZWJmYmE1NDBiLi41ZDU2MDgxYmEgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3Rvb2xzL3Vz ZXJfbWFuYWdlbWVudC9fX2luaXRfXy5weQorKysgYi93ZWIvcGdhZG1pbi90b29scy91c2VyX21h bmFnZW1lbnQvX19pbml0X18ucHkKQEAgLTI1LDcgKzI1LDcgQEAgZnJvbSBwZ2FkbWluLnV0aWxz LmFqYXggaW1wb3J0IG1ha2VfcmVzcG9uc2UgYXMgYWpheF9yZXNwb25zZSwgXAogICAgIG1ha2Vf anNvbl9yZXNwb25zZSwgYmFkX3JlcXVlc3QsIGludGVybmFsX3NlcnZlcl9lcnJvciwgZm9yYmlk ZGVuCiBmcm9tIHBnYWRtaW4udXRpbHMuY3NyZiBpbXBvcnQgcGdDU1JGUHJvdGVjdAogZnJvbSBw Z2FkbWluLnV0aWxzLmNvbnN0YW50cyBpbXBvcnQgTUlNRVRZUEVfQVBQX0pTLCBJTlRFUk5BTCxc Ci0gICAgU1VQUE9SVEVEX0FVVEhfU09VUkNFUywgS0VSQkVST1MKKyAgICBTVVBQT1JURURfQVVU SF9TT1VSQ0VTLCBLRVJCRVJPUywgTERBUAogZnJvbSBwZ2FkbWluLnV0aWxzLnZhbGlkYXRpb25f dXRpbHMgaW1wb3J0IHZhbGlkYXRlX2VtYWlsCiBmcm9tIHBnYWRtaW4ubW9kZWwgaW1wb3J0IGRi LCBSb2xlLCBVc2VyLCBVc2VyUHJlZmVyZW5jZSwgU2VydmVyLCBcCiAgICAgU2VydmVyR3JvdXAs IFByb2Nlc3MsIFNldHRpbmcsIHJvbGVzX3VzZXJzLCBTaGFyZWRTZXJ2ZXIKQEAgLTE1Nyw3ICsx NTcsNiBAQCBkZWYgc2NyaXB0KCk6CiBAcGdDU1JGUHJvdGVjdC5leGVtcHQKIEBsb2dpbl9yZXF1 aXJlZAogZGVmIGN1cnJlbnRfdXNlcl9pbmZvKCk6Ci0KICAgICByZXR1cm4gUmVzcG9uc2UoCiAg ICAgICAgIHJlc3BvbnNlPXJlbmRlcl90ZW1wbGF0ZSgKICAgICAgICAgICAgICJ1c2VyX21hbmFn ZW1lbnQvanMvY3VycmVudF91c2VyLmpzIiwKQEAgLTE3Niw3ICsxNzUsOSBAQCBkZWYgY3VycmVu dF91c2VyX2luZm8oKToKICAgICAgICAgICAgIGFsbG93X3NhdmVfdHVubmVsX3Bhc3N3b3JkPSd0 cnVlJyBpZgogICAgICAgICAgICAgY29uZmlnLkFMTE9XX1NBVkVfVFVOTkVMX1BBU1NXT1JEIGFu ZCBzZXNzaW9uWwogICAgICAgICAgICAgICAgICdhbGxvd19zYXZlX3Bhc3N3b3JkJ10gZWxzZSAn ZmFsc2UnLAotICAgICAgICAgICAgYXV0aF9zb3VyY2VzPWNvbmZpZy5BVVRIRU5USUNBVElPTl9T T1VSQ0VTCisgICAgICAgICAgICBhdXRoX3NvdXJjZXM9Y29uZmlnLkFVVEhFTlRJQ0FUSU9OX1NP VVJDRVMsCisgICAgICAgICAgICBjdXJyZW50X2F1dGhfc291cmNlPXNlc3Npb25bJ19hdXRoX3Nv dXJjZV9tYW5hZ2VyX29iaiddWworICAgICAgICAgICAgICAgICdjdXJyZW50X3NvdXJjZSddIGlm IGNvbmZpZy5TRVJWRVJfTU9ERSBpcyBUcnVlIGVsc2UgSU5URVJOQUwKICAgICAgICAgKSwKICAg ICAgICAgc3RhdHVzPTIwMCwKICAgICAgICAgbWltZXR5cGU9TUlNRVRZUEVfQVBQX0pTCmRpZmYg LS1naXQgYS93ZWIvcGdhZG1pbi90b29scy91c2VyX21hbmFnZW1lbnQvc3RhdGljL2pzL3VzZXJf bWFuYWdlbWVudC5qcyBiL3dlYi9wZ2FkbWluL3Rvb2xzL3VzZXJfbWFuYWdlbWVudC9zdGF0aWMv anMvdXNlcl9tYW5hZ2VtZW50LmpzCmluZGV4IGNmYTZlNWEyNi4uZTQzNmY0OTQ4IDEwMDY0NAot LS0gYS93ZWIvcGdhZG1pbi90b29scy91c2VyX21hbmFnZW1lbnQvc3RhdGljL2pzL3VzZXJfbWFu YWdlbWVudC5qcworKysgYi93ZWIvcGdhZG1pbi90b29scy91c2VyX21hbmFnZW1lbnQvc3RhdGlj L2pzL3VzZXJfbWFuYWdlbWVudC5qcwpAQCAtMTAsMTEgKzEwLDExIEBACiBkZWZpbmUoWwogICAn c291cmNlcy9nZXR0ZXh0JywgJ3NvdXJjZXMvdXJsX2ZvcicsICdqcXVlcnknLCAndW5kZXJzY29y ZScsICdwZ2FkbWluLmFsZXJ0aWZ5anMnLAogICAncGdhZG1pbi5icm93c2VyJywgJ2JhY2tib25l JywgJ2JhY2tncmlkJywgJ2JhY2tmb3JtJywgJ3BnYWRtaW4uYnJvd3Nlci5ub2RlJywgJ3BnYWRt aW4uYmFja2Zvcm0nLAotICAncGdhZG1pbi51c2VyX21hbmFnZW1lbnQuY3VycmVudF91c2VyJywg J3NvdXJjZXMvdXRpbHMnLAorICAncGdhZG1pbi51c2VyX21hbmFnZW1lbnQuY3VycmVudF91c2Vy JywgJ3NvdXJjZXMvdXRpbHMnLCAncGdhZG1pbi5icm93c2VyLmNvbnN0YW50cycsCiAgICdiYWNr Z3JpZC5zZWxlY3QuYWxsJywgJ2JhY2tncmlkLmZpbHRlcicsCiBdLCBmdW5jdGlvbigKICAgZ2V0 dGV4dCwgdXJsX2ZvciwgJCwgXywgYWxlcnRpZnksIHBnQnJvd3NlciwgQmFja2JvbmUsIEJhY2tn cmlkLCBCYWNrZm9ybSwKLSAgcGdOb2RlLCBwZ0JhY2tmb3JtLCB1c2VySW5mbywgY29tbW9uVXRp bHMsCisgIHBnTm9kZSwgcGdCYWNrZm9ybSwgdXNlckluZm8sIGNvbW1vblV0aWxzLCBwZ0NvbnN0 LAogKSB7CiAKICAgLy8gaWYgbW9kdWxlIGlzIGFscmVhZHkgaW5pdGlhbGl6ZWQsIHJlZmVyIHRv IHRoYXQuCkBAIC0yNSw3ICsyNSw5IEBAIGRlZmluZShbCiAgIHZhciBVU0VSVVJMID0gdXJsX2Zv cigndXNlcl9tYW5hZ2VtZW50LnVzZXJzJyksCiAgICAgUk9MRVVSTCA9IHVybF9mb3IoJ3VzZXJf bWFuYWdlbWVudC5yb2xlcycpLAogICAgIFNPVVJDRVVSTCA9IHVybF9mb3IoJ3VzZXJfbWFuYWdl bWVudC5hdXRoX3NvdXJjZXMnKSwKLSAgICBERUZBVUxUX0FVVEhfU09VUkNFID0gJ2ludGVybmFs JywKKyAgICBERUZBVUxUX0FVVEhfU09VUkNFID0gcGdDb25zdFsnSU5URVJOQUwnXSwKKyAgICBM REFQID0gcGdDb25zdFsnTERBUCddLAorICAgIEtFUkJFUk9TID0gcGdDb25zdFsnS0VSQkVST1Mn XSwKICAgICBBVVRIX09OTFlfSU5URVJOQUwgPSAodXNlckluZm9bJ2F1dGhfc291cmNlcyddLmxl bmd0aCAgPT0gMSAmJiB1c2VySW5mb1snYXV0aF9zb3VyY2VzJ10uaW5jbHVkZXMoREVGQVVMVF9B VVRIX1NPVVJDRSkpID8gdHJ1ZSA6IGZhbHNlLAogICAgIHVzZXJGaWx0ZXIgPSBmdW5jdGlvbihj b2xsZWN0aW9uKSB7CiAgICAgICByZXR1cm4gKG5ldyBCYWNrZ3JpZC5FeHRlbnNpb24uQ2xpZW50 U2lkZUZpbHRlcih7CkBAIC01ODksNyArNTkxLDE3IEBAIGRlZmluZShbCiAgICAgICAgICAgICAg IH0KICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgIGlmICghIXRoaXMuZ2V0KCd1 c2VybmFtZScpICYmIHRoaXMuY29sbGVjdGlvbi5ub25GaWx0ZXIud2hlcmUoewotICAgICAgICAg ICAgICAgICd1c2VybmFtZSc6IHRoaXMuZ2V0KCd1c2VybmFtZScpLCAnYXV0aF9zb3VyY2UnOiAn bGRhcCcsCisgICAgICAgICAgICAgICAgJ3VzZXJuYW1lJzogdGhpcy5nZXQoJ3VzZXJuYW1lJyks ICdhdXRoX3NvdXJjZSc6IExEQVAsCisgICAgICAgICAgICAgIH0pLmxlbmd0aCA+IDEpIHsKKyAg ICAgICAgICAgICAgICBlcnJtc2cgPSBnZXR0ZXh0KCdUaGUgdXNlcm5hbWUgJXMgYWxyZWFkeSBl eGlzdHMuJywKKyAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0KCd1c2VybmFtZScpCisgICAgICAg ICAgICAgICAgKTsKKworICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC5zZXQoJ3VzZXJu YW1lJywgZXJybXNnKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZXJybXNnOworICAgICAgICAg ICAgICB9CisgICAgICAgICAgICAgIGVsc2UgaWYgKCEhdGhpcy5nZXQoJ3VzZXJuYW1lJykgJiYg dGhpcy5jb2xsZWN0aW9uLm5vbkZpbHRlci53aGVyZSh7CisgICAgICAgICAgICAgICAgJ3VzZXJu YW1lJzogdGhpcy5nZXQoJ3VzZXJuYW1lJyksICdhdXRoX3NvdXJjZSc6IEtFUkJFUk9TLAogICAg ICAgICAgICAgICB9KS5sZW5ndGggPiAxKSB7CiAgICAgICAgICAgICAgICAgZXJybXNnID0gZ2V0 dGV4dCgnVGhlIHVzZXJuYW1lICVzIGFscmVhZHkgZXhpc3RzLicsCiAgICAgICAgICAgICAgICAg ICB0aGlzLmdldCgndXNlcm5hbWUnKQpAQCAtMTA0MSw3ICsxMDUzLDcgQEAgZGVmaW5lKFsKICAg ICAgICAgICAgICAgICAgIHNhdmVVc2VyOiBmdW5jdGlvbihtKSB7CiAgICAgICAgICAgICAgICAg ICAgIHZhciBkID0gbS50b0pTT04odHJ1ZSk7CiAKLSAgICAgICAgICAgICAgICAgICAgaWYoKG0u aXNOZXcoKSAmJiBtLmdldCgnYXV0aF9zb3VyY2UnKSA9PSAnbGRhcCcgJiYgKCFtLmdldCgndXNl cm5hbWUnKSB8fCAhbS5nZXQoJ2F1dGhfc291cmNlJykgfHwgIW0uZ2V0KCdyb2xlJykpKQorICAg ICAgICAgICAgICAgICAgICBpZigobS5pc05ldygpICYmIChtLmdldCgnYXV0aF9zb3VyY2UnKSA9 PSBMREFQIHx8IG0uZ2V0KCdhdXRoX3NvdXJjZScpID09IEtFUkJFUk9TKSAmJiAoIW0uZ2V0KCd1 c2VybmFtZScpIHx8ICFtLmdldCgnYXV0aF9zb3VyY2UnKSB8fCAhbS5nZXQoJ3JvbGUnKSkpCiAg ICAgICAgICAgICAgICAgICAgICAgfHwgKG0uaXNOZXcoKSAmJiBtLmdldCgnYXV0aF9zb3VyY2Un KSA9PSBERUZBVUxUX0FVVEhfU09VUkNFICYmICAoIW0uZ2V0KCdlbWFpbCcpIHx8ICFtLmdldCgn cm9sZScpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICFtLmdldCgnbmV3UGFzc3dvcmQn KSB8fCAhbS5nZXQoJ2NvbmZpcm1QYXNzd29yZCcpIHx8IG0uZ2V0KCduZXdQYXNzd29yZCcpICE9 IG0uZ2V0KCdjb25maXJtUGFzc3dvcmQnKSkpCiAgICAgICAgICAgICAgICAgICAgICAgfHwgKCFt LmlzTmV3KCkgJiYgbS5nZXQoJ25ld1Bhc3N3b3JkJykgIT0gbS5nZXQoJ2NvbmZpcm1QYXNzd29y ZCcpKSkgewpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvdXNlcl9tYW5hZ2VtZW50L3Rl bXBsYXRlcy91c2VyX21hbmFnZW1lbnQvanMvY3VycmVudF91c2VyLmpzIGIvd2ViL3BnYWRtaW4v dG9vbHMvdXNlcl9tYW5hZ2VtZW50L3RlbXBsYXRlcy91c2VyX21hbmFnZW1lbnQvanMvY3VycmVu dF91c2VyLmpzCmluZGV4IDI1MTZkYzQyNS4uYmNiMDJmMWFiIDEwMDY0NAotLS0gYS93ZWIvcGdh ZG1pbi90b29scy91c2VyX21hbmFnZW1lbnQvdGVtcGxhdGVzL3VzZXJfbWFuYWdlbWVudC9qcy9j dXJyZW50X3VzZXIuanMKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvdXNlcl9tYW5hZ2VtZW50L3Rl bXBsYXRlcy91c2VyX21hbmFnZW1lbnQvanMvY3VycmVudF91c2VyLmpzCkBAIC0xNSw2ICsxNSw3 IEBAIGRlZmluZSgncGdhZG1pbi51c2VyX21hbmFnZW1lbnQuY3VycmVudF91c2VyJywgW10sIGZ1 bmN0aW9uKCkgewogICAgICAgICAnbmFtZSc6ICd7eyBuYW1lIH19JywKICAgICAgICAgJ2FsbG93 X3NhdmVfcGFzc3dvcmQnOiB7eyBhbGxvd19zYXZlX3Bhc3N3b3JkIH19LAogICAgICAgICAnYWxs b3dfc2F2ZV90dW5uZWxfcGFzc3dvcmQnOiB7eyBhbGxvd19zYXZlX3R1bm5lbF9wYXNzd29yZCB9 fSwKLSAgICAgICAgJ2F1dGhfc291cmNlcyc6IHt7IGF1dGhfc291cmNlcyB9fQorICAgICAgICAn YXV0aF9zb3VyY2VzJzoge3sgYXV0aF9zb3VyY2VzIH19LAorICAgICAgICAnY3VycmVudF9hdXRo X3NvdXJjZSc6ICd7eyBjdXJyZW50X2F1dGhfc291cmNlIH19JwogICAgIH0KIH0pOwpkaWZmIC0t Z2l0IGEvd2ViL3BnYWRtaW4vdXRpbHMvZHJpdmVyL3BzeWNvcGcyL2Nvbm5lY3Rpb24ucHkgYi93 ZWIvcGdhZG1pbi91dGlscy9kcml2ZXIvcHN5Y29wZzIvY29ubmVjdGlvbi5weQppbmRleCBiZTgy NGRhMWUuLjNiYWE2MWZhYyAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vdXRpbHMvZHJpdmVyL3Bz eWNvcGcyL2Nvbm5lY3Rpb24ucHkKKysrIGIvd2ViL3BnYWRtaW4vdXRpbHMvZHJpdmVyL3BzeWNv cGcyL2Nvbm5lY3Rpb24ucHkKQEAgLTE4LDExICsxOCwxMyBAQCBpbXBvcnQgc2VsZWN0CiBpbXBv cnQgZGF0ZXRpbWUKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlcXVlCiBpbXBvcnQgcHN5Y29w ZzIKLWZyb20gZmxhc2sgaW1wb3J0IGcsIGN1cnJlbnRfYXBwCitpbXBvcnQgdGhyZWFkaW5nCitm cm9tIGZsYXNrIGltcG9ydCBnLCBjdXJyZW50X2FwcCwgc2Vzc2lvbgogZnJvbSBmbGFza19iYWJl bGV4IGltcG9ydCBnZXR0ZXh0CiBmcm9tIGZsYXNrX3NlY3VyaXR5IGltcG9ydCBjdXJyZW50X3Vz ZXIKIGZyb20gcGdhZG1pbi51dGlscy5jcnlwdG8gaW1wb3J0IGRlY3J5cHQsIGVuY3J5cHQKIGZy b20gcHN5Y29wZzIuZXh0ZW5zaW9ucyBpbXBvcnQgZW5jb2RpbmdzCitmcm9tIG9zIGltcG9ydCBl bnZpcm9uCiAKIGltcG9ydCBjb25maWcKIGZyb20gcGdhZG1pbi5tb2RlbCBpbXBvcnQgVXNlcgpA QCAtMzgsNiArNDAsOSBAQCBmcm9tIC5lbmNvZGluZyBpbXBvcnQgZ2V0X2VuY29kaW5nLCBjb25m aWd1cmVfZHJpdmVyX2VuY29kaW5ncwogZnJvbSBwZ2FkbWluLnV0aWxzIGltcG9ydCBjc3YKIGZy b20gcGdhZG1pbi51dGlscy5tYXN0ZXJfcGFzc3dvcmQgaW1wb3J0IGdldF9jcnlwdF9rZXkKIGZy b20gaW8gaW1wb3J0IFN0cmluZ0lPCitmcm9tIHBnYWRtaW4udXRpbHMuY29uc3RhbnRzIGltcG9y dCBLRVJCRVJPUworCitsb2NrID0gdGhyZWFkaW5nLkxvY2soKQogCiBfID0gZ2V0dGV4dAogCkBA IC0zMTMsNiArMzE4LDEzIEBAIGNsYXNzIENvbm5lY3Rpb24oQmFzZUNvbm5lY3Rpb24pOgogICAg ICAgICAgICAgb3MuZW52aXJvblsnUEdBUFBOQU1FJ10gPSAnezB9IC0gezF9Jy5mb3JtYXQoCiAg ICAgICAgICAgICAgICAgY29uZmlnLkFQUF9OQU1FLCBjb25uX2lkKQogCisgICAgICAgICAgICBp ZiBjb25maWcuU0VSVkVSX01PREUgYW5kIFwKKyAgICAgICAgICAgICAgICAgICAgc2Vzc2lvblsn X2F1dGhfc291cmNlX21hbmFnZXJfb2JqJ11bJ2N1cnJlbnRfc291cmNlJ10gPT0gXAorICAgICAg ICAgICAgICAgICAgICBLRVJCRVJPUyBhbmQgJ0tSQjVDQ05BTUUnIGluIHNlc3Npb25cCisgICAg ICAgICAgICAgICAgICAgIGFuZCBtYW5hZ2VyLmtlcmJlcm9zX2Nvbm46CisgICAgICAgICAgICAg ICAgbG9jay5hY3F1aXJlKCkKKyAgICAgICAgICAgICAgICBlbnZpcm9uWydLUkI1Q0NOQU1FJ10g PSBzZXNzaW9uWydLUkI1Q0NOQU1FJ10KKwogICAgICAgICAgICAgcGdfY29ubiA9IHBzeWNvcGcy LmNvbm5lY3QoCiAgICAgICAgICAgICAgICAgaG9zdD1tYW5hZ2VyLmxvY2FsX2JpbmRfaG9zdCBp ZiBtYW5hZ2VyLnVzZV9zc2hfdHVubmVsCiAgICAgICAgICAgICAgICAgZWxzZSBtYW5hZ2VyLmhv c3QsCkBAIC0zNDAsNyArMzUyLDEzIEBAIGNsYXNzIENvbm5lY3Rpb24oQmFzZUNvbm5lY3Rpb24p OgogICAgICAgICAgICAgaWYgc2VsZi5hc3luY18gPT0gMToKICAgICAgICAgICAgICAgICBzZWxm Ll93YWl0KHBnX2Nvbm4pCiAKKyAgICAgICAgICAgIGlmIGNvbmZpZy5TRVJWRVJfTU9ERSBhbmQg XAorICAgICAgICAgICAgICAgICAgICBzZXNzaW9uWydfYXV0aF9zb3VyY2VfbWFuYWdlcl9vYmon XVsnY3VycmVudF9zb3VyY2UnXSA9PSBcCisgICAgICAgICAgICAgICAgICAgIEtFUkJFUk9TOgor ICAgICAgICAgICAgICAgIGVudmlyb25bJ0tSQjVDQ05BTUUnXSA9ICcnCisKICAgICAgICAgZXhj ZXB0IHBzeWNvcGcyLkVycm9yIGFzIGU6CisgICAgICAgICAgICBlbnZpcm9uWydLUkI1Q0NOQU1F J10gPSAnJwogICAgICAgICAgICAgbWFuYWdlci5zdG9wX3NzaF90dW5uZWwoKQogICAgICAgICAg ICAgaWYgZS5wZ2Vycm9yOgogICAgICAgICAgICAgICAgIG1zZyA9IGUucGdlcnJvcgpAQCAtMzU4 LDYgKzM3NiwxMSBAQCBjbGFzcyBDb25uZWN0aW9uKEJhc2VDb25uZWN0aW9uKToKICAgICAgICAg ICAgICAgICApCiAgICAgICAgICAgICApCiAgICAgICAgICAgICByZXR1cm4gRmFsc2UsIG1zZwor ICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgaWYgY29uZmlnLlNFUlZFUl9NT0RFIGFuZCBc CisgICAgICAgICAgICAgICAgICAgIHNlc3Npb25bJ19hdXRoX3NvdXJjZV9tYW5hZ2VyX29iaidd WydjdXJyZW50X3NvdXJjZSddID09IFwKKyAgICAgICAgICAgICAgICAgICAgS0VSQkVST1MgYW5k IGxvY2subG9ja2VkKCk6CisgICAgICAgICAgICAgICAgbG9jay5yZWxlYXNlKCkKIAogICAgICAg ICAjIE92ZXJ3cml0ZSBjb25uZWN0aW9uIG5vdGljZSBhdHRyIHRvIHN1cHBvcnQKICAgICAgICAg IyBtb3JlIHRoYW4gNTAgbm90aWNlcyBhdCBhIHRpbWUKQEAgLTE0MzgsNyArMTQ2MSw2IEBAIEZh aWxlZCB0byByZXNldCB0aGUgY29ubmVjdGlvbiB0byB0aGUgc2VydmVyIGR1ZSB0byBmb2xsb3dp bmcgZXJyb3I6CiAgICAgICAgIEFyZ3M6CiAgICAgICAgICAgICBjb25uOiBjb25uZWN0aW9uIG9i amVjdAogICAgICAgICAiIiIKLQogICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICAgc3Rh dGUgPSBjb25uLnBvbGwoKQogICAgICAgICAgICAgaWYgc3RhdGUgPT0gcHN5Y29wZzIuZXh0ZW5z aW9ucy5QT0xMX09LOgpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdXRpbHMvZHJpdmVyL3BzeWNv cGcyL3NlcnZlcl9tYW5hZ2VyLnB5IGIvd2ViL3BnYWRtaW4vdXRpbHMvZHJpdmVyL3BzeWNvcGcy L3NlcnZlcl9tYW5hZ2VyLnB5CmluZGV4IDdlMTE5OWE3ZC4uOGMxNmM4ZWMzIDEwMDY0NAotLS0g YS93ZWIvcGdhZG1pbi91dGlscy9kcml2ZXIvcHN5Y29wZzIvc2VydmVyX21hbmFnZXIucHkKKysr IGIvd2ViL3BnYWRtaW4vdXRpbHMvZHJpdmVyL3BzeWNvcGcyL3NlcnZlcl9tYW5hZ2VyLnB5CkBA IC0xMDUsNiArMTA1LDcgQEAgY2xhc3MgU2VydmVyTWFuYWdlcihvYmplY3QpOgogICAgICAgICAg ICAgc2VsZi50dW5uZWxfaWRlbnRpdHlfZmlsZSA9IE5vbmUKICAgICAgICAgICAgIHNlbGYudHVu bmVsX3Bhc3N3b3JkID0gTm9uZQogCisgICAgICAgIHNlbGYua2VyYmVyb3NfY29ubiA9IHNlcnZl ci5rZXJiZXJvc19jb25uCiAgICAgICAgIGZvciBjb24gaW4gc2VsZi5jb25uZWN0aW9uczoKICAg ICAgICAgICAgIHNlbGYuY29ubmVjdGlvbnNbY29uXS5fcmVsZWFzZSgpCiAKZGlmZiAtLWdpdCBh L3dlYi9wZ2FkbWluL3V0aWxzL21hc3Rlcl9wYXNzd29yZC5weSBiL3dlYi9wZ2FkbWluL3V0aWxz L21hc3Rlcl9wYXNzd29yZC5weQppbmRleCA2MjllZWM5NDEuLmY5NjI2ODRmZiAxMDA2NDQKLS0t IGEvd2ViL3BnYWRtaW4vdXRpbHMvbWFzdGVyX3Bhc3N3b3JkLnB5CisrKyBiL3dlYi9wZ2FkbWlu L3V0aWxzL21hc3Rlcl9wYXNzd29yZC5weQpAQCAtMzQsNyArMzQsNyBAQCBkZWYgZ2V0X2NyeXB0 X2tleSgpOgogICAgICAgICAgICAgYW5kIG5vdCBjb25maWcuU0VSVkVSX01PREUgYW5kIGVuY19r ZXkgaXMgTm9uZToKICAgICAgICAgcmV0dXJuIEZhbHNlLCBOb25lCiAgICAgZWxpZiBjb25maWcu U0VSVkVSX01PREUgYW5kIFwKLSAgICAgICAgICAgIHNlc3Npb25bJ19hdXRoX3NvdXJjZV9tYW5h Z2VyX29iaiddWydzb3VyY2VfZnJpZW5kbHlfbmFtZSddXAorICAgICAgICAgICAgc2Vzc2lvblsn X2F1dGhfc291cmNlX21hbmFnZXJfb2JqJ11bJ2N1cnJlbnRfc291cmNlJ11cCiAgICAgICAgICAg ICA9PSBLRVJCRVJPUzoKICAgICAgICAgcmV0dXJuIFRydWUsIHNlc3Npb25bJ2tlcmJlcm9zX2tl eSddIGlmICdrZXJiZXJvc19rZXknIGluIHNlc3Npb24gXAogICAgICAgICAgICAgZWxzZSBOb25l CmRpZmYgLS1naXQgYS93ZWIvd2VicGFjay5zaGltLmpzIGIvd2ViL3dlYnBhY2suc2hpbS5qcwpp bmRleCA5NmQ1YjI3ZjYuLjA3NGIyNTgwNiAxMDA2NDQKLS0tIGEvd2ViL3dlYnBhY2suc2hpbS5q cworKysgYi93ZWIvd2VicGFjay5zaGltLmpzCkBAIC0xNzQsMTEgKzE3NCwxMyBAQCB2YXIgd2Vi cGFja1NoaW1Db25maWcgPSB7CiAgICAgJ3BnYWRtaW4uYmFja2dyaWQnOiBwYXRoLmpvaW4oX19k aXJuYW1lLCAnLi9wZ2FkbWluL3N0YXRpYy9qcy9iYWNrZ3JpZC5wZ2FkbWluJyksCiAKICAgICAn cGdhZG1pbi5hYm91dCc6IHBhdGguam9pbihfX2Rpcm5hbWUsICcuL3BnYWRtaW4vYWJvdXQvc3Rh dGljL2pzL2Fib3V0JyksCisgICAgJ3BnYWRtaW4uYXV0aGVudGljYXRlLmtlcmJlcm9zJzogcGF0 aC5qb2luKF9fZGlybmFtZSwgJy4vcGdhZG1pbi9hdXRoZW50aWNhdGUvc3RhdGljL2pzL2tlcmJl cm9zJyksCiAgICAgJ3BnYWRtaW4uYnJvd3Nlcic6IHBhdGguam9pbihfX2Rpcm5hbWUsICcuL3Bn YWRtaW4vYnJvd3Nlci9zdGF0aWMvanMvYnJvd3NlcicpLAogICAgICdwZ2FkbWluLmJyb3dzZXIu Ymdwcm9jZXNzJzogcGF0aC5qb2luKF9fZGlybmFtZSwgJy4vcGdhZG1pbi9taXNjL2JncHJvY2Vz cy9zdGF0aWMvanMvYmdwcm9jZXNzJyksCiAgICAgJ3BnYWRtaW4uYnJvd3Nlci5jb2xsZWN0aW9u JzogcGF0aC5qb2luKF9fZGlybmFtZSwgJy4vcGdhZG1pbi9icm93c2VyL3N0YXRpYy9qcy9jb2xs ZWN0aW9uJyksCiAgICAgJ3BnYWRtaW4uYnJvd3Nlci5kYXRhbW9kZWwnOiBwYXRoLmpvaW4oX19k aXJuYW1lLCAnLi9wZ2FkbWluL2Jyb3dzZXIvc3RhdGljL2pzL2RhdGFtb2RlbCcpLAogICAgICdw Z2FkbWluLmJyb3dzZXIuZW5kcG9pbnRzJzogJy9icm93c2VyL2pzL2VuZHBvaW50cycsCisgICAg J3BnYWRtaW4uYnJvd3Nlci5jb25zdGFudHMnOiAnL2Jyb3dzZXIvanMvY29uc3RhbnRzJywKICAg ICAncGdhZG1pbi5icm93c2VyLmVycm9yJzogcGF0aC5qb2luKF9fZGlybmFtZSwgJy4vcGdhZG1p bi9icm93c2VyL3N0YXRpYy9qcy9lcnJvcicpLAogICAgICdwZ2FkbWluLmJyb3dzZXIuZnJhbWUn OiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL2Jyb3dzZXIvc3RhdGljL2pzL2ZyYW1l JyksCiAgICAgJ3BnYWRtaW4uYnJvd3Nlci5rZXlib2FyZCc6IHBhdGguam9pbihfX2Rpcm5hbWUs ICcuL3BnYWRtaW4vYnJvd3Nlci9zdGF0aWMvanMva2V5Ym9hcmQnKSwKQEAgLTMwMCw2ICszMDIs NyBAQCB2YXIgd2VicGFja1NoaW1Db25maWcgPSB7CiAgICAgJ3BnYWRtaW4uYnJvd3Nlci5tZXNz YWdlcycsCiAgICAgJ3BnYWRtaW4uYnJvd3Nlci51dGlscycsCiAgICAgJ3BnYWRtaW4uc2VydmVy LnN1cHBvcnRlZF9zZXJ2ZXJzJywKKyAgICAncGdhZG1pbi5icm93c2VyLmNvbnN0YW50cycsCiAg IF0sCiAgIC8vIERlZmluZSBsaXN0IG9mIHBnQWRtaW4gY29tbW9uIGxpYnJhcmllcyB0byBidW5k bGUgdGhlbSBzZXBhcmF0ZWx5CiAgIC8vIGludG8gY29tbW9ucyBKUyBmcm9tIGFwcC5idW5kbGUu anMK --00000000000055c64f05c1697a8c--