<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>231821</bug_id>
          
          <creation_ts>2021-10-15 11:12:34 -0700</creation_ts>
          <short_desc>[git-webkit] Add land command</short_desc>
          <delta_ts>2021-11-04 11:46:54 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jonathan Bedard">jbedard</reporter>
          <assigned_to name="Jonathan Bedard">jbedard</assigned_to>
          <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1804914</commentid>
    <comment_count>0</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-10-15 11:12:34 -0700</bug_when>
    <thetext>git-webkit should have a &quot;land&quot; command that automates the process of landing a pull-request.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804915</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-10-15 11:12:48 -0700</bug_when>
    <thetext>&lt;rdar://problem/84309339&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804918</commentid>
    <comment_count>2</comment_count>
      <attachid>441406</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-10-15 11:19:03 -0700</bug_when>
    <thetext>Created attachment 441406
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1811581</commentid>
    <comment_count>3</comment_count>
      <attachid>443222</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-11-03 12:17:26 -0700</bug_when>
    <thetext>Created attachment 443222
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1811715</commentid>
    <comment_count>4</comment_count>
      <attachid>443256</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-11-03 17:02:49 -0700</bug_when>
    <thetext>Created attachment 443256
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1811919</commentid>
    <comment_count>5</comment_count>
      <attachid>443327</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-11-04 11:34:28 -0700</bug_when>
    <thetext>Created attachment 443327
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1811920</commentid>
    <comment_count>6</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-11-04 11:46:54 -0700</bug_when>
    <thetext>Landed https://commits.webkit.org/243883@main (r285272)!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441406</attachid>
            <date>2021-10-15 11:19:03 -0700</date>
            <delta_ts>2021-11-03 12:17:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231821-20211015111902.patch</filename>
            <type>text/plain</type>
            <size>3703</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0MjU1CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggODFmYTIzMTVjMjc5NjBlZmJiYWUyYWFkYTQ1MWZhNDNm
NzBhYWE4OS4uYzlmNDYyMTA0N2E3YzFmZDUyMWY3ZWQxZDUyMDBhM2M2MDQ2ZGI5ZCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1
IEBACisyMDIxLTEwLTE1ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbZ2l0LXdlYmtpdF0gQWRkIGxhbmQgY29tbWFuZCAoUGFydCAxKQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxODIxCisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS84NDMwOTMzOT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNj
bXB5L3Byb2dyYW0vcHVsbF9yZXF1ZXN0LnB5OgorICAgICAgICAoUHVsbFJlcXVlc3QudGl0bGVf
Zm9yKTogQ29tcHV0ZSBwdWxsLXJlcXVlc3QgdGl0bGUgZm9yIGEgc2V0IG9mIGNvbW1pdHMuCisg
ICAgICAgIChQdWxsUmVxdWVzdC5tYWluKTogR2VuZXJhbGl6ZSBwdWxsLXJlcXVlc3QgdGl0bGUg
Z2VuZXJhdGlvbi4KKwogMjAyMS0xMC0xNCAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVyQGFwcGxl
LmNvbT4KIAogICAgICAgICBUZXN0V2ViS2l0QVBJLlByaXZhdGVDbGlja01lYXN1cmVtZW50LkZy
YXVkUHJldmVudGlvbiBpcyBhIGNvbnN0YW50IHRpbWVvdXQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Nj
cmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Byb2dyYW0vcHVsbF9yZXF1
ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkv
cHJvZ3JhbS9wdWxsX3JlcXVlc3QucHkKaW5kZXggN2M5YWQyNGUzYjM0MjY2YjY3M2Q1NTVhOGZm
OWIzNmJmMDlkMWQ5OS4uZWQ0ZjYzOTY2NDBmOGYyYmJjNTc1NDgxMjZkMDQ1NzdhYWFjN2RlYSAx
MDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2Nt
cHkvcHJvZ3JhbS9wdWxsX3JlcXVlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMv
d2Via2l0c2NtcHkvd2Via2l0c2NtcHkvcHJvZ3JhbS9wdWxsX3JlcXVlc3QucHkKQEAgLTgxLDYg
KzgxLDE4IEBAIGNsYXNzIFB1bGxSZXF1ZXN0KENvbW1hbmQpOgogCiAgICAgICAgIHJldHVybiAw
CiAKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgdGl0bGVfZm9yKGNscywgY29tbWl0cyk6Cisg
ICAgICAgIHRpdGxlID0gY29tbWl0c1swXS5tZXNzYWdlLnNwbGl0bGluZXMoKVswXQorICAgICAg
ICBmb3IgY29tbWl0IGluIGNvbW1pdHNbMTpdOgorICAgICAgICAgICAgdGl0bGVfY2FuZGlkYXRl
ID0gY29tbWl0Lm1lc3NhZ2Uuc3BsaXRsaW5lcygpWzBdCisgICAgICAgICAgICB3aGlsZSB0aXRs
ZSBhbmQgbm90IHRpdGxlX2NhbmRpZGF0ZS5zdGFydHN3aXRoKHRpdGxlKToKKyAgICAgICAgICAg
ICAgICB0aXRsZSA9IHRpdGxlWzotMV0KKyAgICAgICAgaWYgbm90IHRpdGxlOgorICAgICAgICAg
ICAgdGl0bGUgPSBjb21taXRzWzBdLm1lc3NhZ2Uuc3BsaXRsaW5lcygpWzBdCisgICAgICAgIHRp
dGxlID0gdGl0bGUucnN0cmlwKCkubHN0cmlwKCkKKyAgICAgICAgcmV0dXJuIHRpdGxlWzotNV0u
cnN0cmlwKCkgaWYgdGl0bGUuZW5kc3dpdGgoJyhQYXJ0JykgZWxzZSB0aXRsZQorCiAgICAgQGNs
YXNzbWV0aG9kCiAgICAgZGVmIG1haW4oY2xzLCBhcmdzLCByZXBvc2l0b3J5LCAqKmt3YXJncyk6
CiAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHJlcG9zaXRvcnksIGxvY2FsLkdpdCk6CkBAIC0x
MjAsMjYgKzEzMiwxNCBAQCBjbGFzcyBQdWxsUmVxdWVzdChDb21tYW5kKToKICAgICAgICAgaWYg
bm90IHJtdC5wdWxsX3JlcXVlc3RzOgogICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgiJ3t9
JyBjYW5ub3QgZ2VuZXJhdGUgcHVsbC1yZXF1ZXN0c1xuIi5mb3JtYXQocm10LnVybCkpCiAgICAg
ICAgICAgICByZXR1cm4gMQotICAgICAgICB1c2VyLCBfID0gcm10LmNyZWRlbnRpYWxzKHJlcXVp
cmVkPVRydWUpIGlmIGlzaW5zdGFuY2Uocm10LCByZW1vdGUuR2l0SHViKSBlbHNlIChyZXBvc2l0
b3J5LmNvbmZpZygpWyd1c2VyLmVtYWlsJ10sIE5vbmUpCiAgICAgICAgIGNhbmRpZGF0ZXMgPSBs
aXN0KHJtdC5wdWxsX3JlcXVlc3RzLmZpbmQob3BlbmVkPU5vbmUsIGhlYWQ9cmVwb3NpdG9yeS5i
cmFuY2gpKQogICAgICAgICBjb21taXRzID0gbGlzdChyZXBvc2l0b3J5LmNvbW1pdHMoYmVnaW49
ZGljdChoYXNoPWJyYW5jaF9wb2ludC5oYXNoKSwgZW5kPWRpY3QoYnJhbmNoPXJlcG9zaXRvcnku
YnJhbmNoKSkpCiAKLSAgICAgICAgdGl0bGUgPSBjb21taXRzWzBdLm1lc3NhZ2Uuc3BsaXRsaW5l
cygpWzBdCi0gICAgICAgIGZvciBjb21taXQgaW4gY29tbWl0c1sxOl06Ci0gICAgICAgICAgICB0
aXRsZV9jYW5kaWRhdGUgPSBjb21taXQubWVzc2FnZS5zcGxpdGxpbmVzKClbMF0KLSAgICAgICAg
ICAgIHdoaWxlIHRpdGxlIGFuZCBub3QgdGl0bGVfY2FuZGlkYXRlLnN0YXJ0c3dpdGgodGl0bGUp
OgotICAgICAgICAgICAgICAgIHRpdGxlID0gdGl0bGVbOi0xXQotICAgICAgICBpZiBub3QgdGl0
bGU6Ci0gICAgICAgICAgICB0aXRsZSA9IGNvbW1pdHNbMF0ubWVzc2FnZS5zcGxpdGxpbmVzKClb
MF0KLSAgICAgICAgdGl0bGUgPSB0aXRsZS5yc3RyaXAoKS5sc3RyaXAoKQotICAgICAgICBpZiB0
aXRsZS5lbmRzd2l0aCgnKFBhcnQnKToKLSAgICAgICAgICAgIHRpdGxlID0gdGl0bGVbOi01XS5y
c3RyaXAoKQotCiAgICAgICAgIGlmIGNhbmRpZGF0ZXM6CiAgICAgICAgICAgICBsb2cud2Fybmlu
ZygiVXBkYXRpbmcgcHVsbC1yZXF1ZXN0IGZvciAne30nLi4uIi5mb3JtYXQocmVwb3NpdG9yeS5i
cmFuY2gpKQogICAgICAgICAgICAgcHIgPSBybXQucHVsbF9yZXF1ZXN0cy51cGRhdGUoCiAgICAg
ICAgICAgICAgICAgcHVsbF9yZXF1ZXN0PWNhbmRpZGF0ZXNbMF0sCi0gICAgICAgICAgICAgICAg
dGl0bGU9dGl0bGUsCisgICAgICAgICAgICAgICAgdGl0bGU9Y2xzLnRpdGxlX2Zvcihjb21taXRz
KSwKICAgICAgICAgICAgICAgICBjb21taXRzPWNvbW1pdHMsCiAgICAgICAgICAgICAgICAgYmFz
ZT1icmFuY2hfcG9pbnQuYnJhbmNoLAogICAgICAgICAgICAgICAgIGhlYWQ9cmVwb3NpdG9yeS5i
cmFuY2gsCkBAIC0xNTEsNyArMTUxLDcgQEAgY2xhc3MgUHVsbFJlcXVlc3QoQ29tbWFuZCk6CiAg
ICAgICAgIGVsc2U6CiAgICAgICAgICAgICBsb2cud2FybmluZygiQ3JlYXRpbmcgcHVsbC1yZXF1
ZXN0IGZvciAne30nLi4uIi5mb3JtYXQocmVwb3NpdG9yeS5icmFuY2gpKQogICAgICAgICAgICAg
cHIgPSBybXQucHVsbF9yZXF1ZXN0cy5jcmVhdGUoCi0gICAgICAgICAgICAgICAgdGl0bGU9dGl0
bGUsCisgICAgICAgICAgICAgICAgdGl0bGU9Y2xzLnRpdGxlX2Zvcihjb21taXRzKSwKICAgICAg
ICAgICAgICAgICBjb21taXRzPWNvbW1pdHMsCiAgICAgICAgICAgICAgICAgYmFzZT1icmFuY2hf
cG9pbnQuYnJhbmNoLAogICAgICAgICAgICAgICAgIGhlYWQ9cmVwb3NpdG9yeS5icmFuY2gsCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443222</attachid>
            <date>2021-11-03 12:17:26 -0700</date>
            <delta_ts>2021-11-03 17:02:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231821-20211103121724.patch</filename>
            <type>text/plain</type>
            <size>50905</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1MjE4CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNGIxZjQwY2Q2M2FhY2I2NWZlN2Y2YjgxNTliNTQyN2Ni
ODIwOWIxMC4uN2QzMTk1NWMwZGZhYzMyZjM5NDAwNDEwYzI3NjEzMjk3ZmRkMjkxMCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQx
IEBACisyMDIxLTExLTAzICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbZ2l0LXdlYmtpdF0gQWRkIGxhbmQgY29tbWFuZAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxODIxCisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS84NDMwOTMzOT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFNjcmlwdHMvZ2l0LXdlYmtpdDogV2ViS2l0IHN0aWxsIHVzZXMgU3ZuIGFzIGl0
J3MgY2Fub25pY2FsIHNvdXJjZSBvZiB0cnV0aC4KKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmll
cy93ZWJraXRzY21weS93ZWJraXRzY21weS9sb2NhbC9naXQucHk6CisgICAgICAgIChHaXQuX3Rv
X2dpdF9yZWYpOiBDb252ZXJ0IGlkZW50aWZpZXJzIG9yIHJldmlzaW9ucyB0byBnaXQgcmVmcy4K
KyAgICAgICAgKEdpdC5jaGVja291dCk6IFVzZSBzaGFyZWQgX3RvX2dpdF9yZWYgZnVuY3Rpb24u
CisgICAgICAgIChHaXQucmViYXNlKTogU3VwcG9ydCByZWJhc2luZyBpZGVudGlmaWVycy4KKyAg
ICAgICAgKEdpdC5wdWxsKTogR2VuZXJhbGl6ZSBjb21wdXRhdGlvbiBvZiB0aGUgZ210b2Zmc2V0
LgorICAgICAgICAoR2l0LmRpZmZfbGluZXMpOiBPdXRwdXQgZGlmZiBiZXR3ZWVuIHR3byByZWZz
LgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L21v
Y2tzL2xvY2FsL2dpdC5weToKKyAgICAgICAgKEdpdC5fX2luaXRfXyk6IEFkZCBicmFuY2gsIHB1
c2ggYW5kIGRpZmYgY29tbWFuZHMuCisgICAgICAgIChHaXQuZmlsdGVyX2JyYW5jaCk6IFN1cHBv
cnQgc2VkLgorICAgICAgICAoR2l0Lm1vdmVfYnJhbmNoKTogTW9jayByZWJhc2luZy4KKyAgICAg
ICAgKEdpdC5wdXNoKTogTW9jayBwdXNoaW5nLgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVz
L3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Byb2dyYW0vX19pbml0X18ucHk6CisgICAgICAgICht
YWluKTogQWRkIGxhbmQgY29tbWFuZC4KKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy93ZWJr
aXRzY21weS93ZWJraXRzY21weS9wcm9ncmFtL2xhbmQucHk6IEFkZGVkLgorICAgICAgICAoTGFu
ZC5wYXJzZXIpOgorICAgICAgICAoTGFuZC5tYWluKTogUmViYXNlIHRoZSBjdXJyZW50IGJyYW5j
aCBhZ2FpbnN0IGl0J3Mgcm9vdCwgYXNzaWduIHRoZSByZXZpZXdlciwgY2hlY2sgZm9yICdPT1BT
JyBtZXNzYWdlcywKKyAgICAgICAgcmViYXNlIGFnYWluc3QgdGFyZ2V0IGJyYW5jaCwgdXBkYXRl
IHRhcmdldCBicmFuY2ggcmVmLCBvcHRpb25hbGx5IGNhbm9uaWNhbGl6ZSwgcHVzaCAob3Igc3Zu
IGRjb21taXQpIGFuZAorICAgICAgICB1cGRhdGUgYW5kIGNsb3NlIHB1bGwtcmVxdWVzdCB3aXRo
IGluZm9ybWF0aW9uIG9uIHRoZSBsYW5kZWQgY29tbWl0LgorICAgICAgICAqIFNjcmlwdHMvbGli
cmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3NjbV9iYXNlLnB5OgorICAgICAgICAoU2Nt
QmFzZS5nbXRvZmZzZXQpOiBBZGQgc2hhcmVkIGNvbXB1dGF0aW9uIG9mIEdNVCBvZmZzZXQuCisg
ICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvdGVzdC9n
aXRfdW5pdHRlc3QucHk6CisgICAgICAgIChUZXN0R2l0LnRlc3RfY29tbWl0cyk6IGBnaXQgbG9n
YCBzaG91bGQgZXhjbHVkZSBiYXNlIHJlZi4KKyAgICAgICAgKFRlc3RHaXQudGVzdF9jb21taXRz
X2JyYW5jaCk6IERpdHRvLgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5
L3dlYmtpdHNjbXB5L3Rlc3QvbGFuZF91bml0dGVzdC5weTogQWRkZWQuCisgICAgICAgIChyZXBv
c2l0b3J5KToKKyAgICAgICAgKFRlc3RMYW5kKToKKyAgICAgICAgKFRlc3RMYW5kR2l0SHViKToK
KyAgICAgICAgKFRlc3RMYW5kQml0QnVja2V0KToKKwogMjAyMS0xMS0wMyAgU2ltb24gRnJhc2Vy
ICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBFeHBvc2UgZnV6enkgbWF0Y2gg
ZGF0YSBpbiBsYXlvdXQgdGVzdCByZXN1bHRzCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL2dp
dC13ZWJraXQgYi9Ub29scy9TY3JpcHRzL2dpdC13ZWJraXQKaW5kZXggMGQyYzIyZmJhYzFmOWZk
ZDRjYmJiODM1YTY0MmQxZTFhNGIxMWQ5MC4uNGI3MjcwN2Y4OTEyOGNlMTE5YjJlMzFlZTJlOTg1
MjhmZTJhMTI3ZSAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy9naXQtd2Via2l0CisrKyBiL1Rv
b2xzL1NjcmlwdHMvZ2l0LXdlYmtpdApAQCAtNzIsNSArNzIsNiBAQCBpZiAnX19tYWluX18nID09
IF9fbmFtZV9fOgogICAgICAgICBzdWJ2ZXJzaW9uPWlzX3dlYmtpdF9maWx0ZXIoJ2h0dHBzOi8v
c3ZuLndlYmtpdC5vcmcvcmVwb3NpdG9yeS93ZWJraXQnKSwKICAgICAgICAgYWRkaXRpb25hbF9z
ZXR1cD1pc193ZWJraXRfZmlsdGVyKGFkZGl0aW9uYWxfc2V0dXApLAogICAgICAgICBob29rcz1v
cy5wYXRoLmpvaW4ob3MucGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUo
X19maWxlX18pKSksICdob29rcycpLAorICAgICAgICBjYW5vbmljYWxfc3ZuPWlzX3dlYmtpdF9m
aWx0ZXIoVHJ1ZSksCiAgICAgKSkKIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9saWJyYXJp
ZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbG9jYWwvZ2l0LnB5IGIvVG9vbHMvU2NyaXB0cy9s
aWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbG9jYWwvZ2l0LnB5CmluZGV4IGMyZmFi
MmM1Y2I4YjdlYTM2MTA2ZTFhMWQ5MjIwYmU5MmZhYTlhMWMuLjMwMzRlZWU5OGI1YzUwMGFiM2Yy
MjMyMmFjMmE4MWRiY2ZjYTlkODkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVz
L3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L2xvY2FsL2dpdC5weQorKysgYi9Ub29scy9TY3JpcHRz
L2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9sb2NhbC9naXQucHkKQEAgLTM1LDgg
KzM1LDcgQEAgZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVmYXVsdGRpY3QKIAogZnJvbSB3ZWJr
aXRjb3JlcHkgaW1wb3J0IHJ1biwgZGVjb3JhdG9ycywgTmVzdGVkRnV6enlEaWN0CiBmcm9tIHdl
YmtpdHNjbXB5LmxvY2FsIGltcG9ydCBTY20KLWZyb20gd2Via2l0c2NtcHkgaW1wb3J0IHJlbW90
ZQotZnJvbSB3ZWJraXRzY21weSBpbXBvcnQgQ29tbWl0LCBDb250cmlidXRvciwgbG9nCitmcm9t
IHdlYmtpdHNjbXB5IGltcG9ydCByZW1vdGUsIENvbW1pdCwgQ29udHJpYnV0b3IsIGxvZwogCiAK
IGNsYXNzIEdpdChTY20pOgpAQCAtNzk0LDEwICs3OTMsMjQgQEAgY2xhc3MgR2l0KFNjbSk6CiAg
ICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCIne30nIGlzIG5vdCBhbiBhcmd1bWVudCByZWNv
Z25pemVkIGJ5IGdpdCIuZm9ybWF0KGFyZ3VtZW50KSkKICAgICAgICAgcmV0dXJuIHNlbGYuY29t
bWl0KGhhc2g9b3V0cHV0LnN0ZG91dC5yc3RyaXAoKSwgaW5jbHVkZV9sb2c9aW5jbHVkZV9sb2cs
IGluY2x1ZGVfaWRlbnRpZmllcj1pbmNsdWRlX2lkZW50aWZpZXIpCiAKLSAgICBkZWYgY2hlY2tv
dXQoc2VsZiwgYXJndW1lbnQpOgorICAgIGRlZiBfdG9fZ2l0X3JlZihzZWxmLCBhcmd1bWVudCk6
CisgICAgICAgIGlmIG5vdCBhcmd1bWVudDoKKyAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAg
ICAgIGlmIG5vdCBpc2luc3RhbmNlKGFyZ3VtZW50LCBzaXguc3RyaW5nX3R5cGVzKToKICAgICAg
ICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkV4cGVjdGVkICdhcmd1bWVudCcgdG8gYmUgYSBzdHJp
bmcsIG5vdCAne30nIi5mb3JtYXQodHlwZShhcmd1bWVudCkpKQorICAgICAgICBwYXJzZWRfY29t
bWl0ID0gQ29tbWl0LnBhcnNlKGFyZ3VtZW50LCBkb19hc3NlcnQ9RmFsc2UpCisgICAgICAgIGlm
IHBhcnNlZF9jb21taXQgYW5kIG5vdCBwYXJzZWRfY29tbWl0Lmhhc2g6CisgICAgICAgICAgICBy
ZXR1cm4gc2VsZi5jb21taXQoCisgICAgICAgICAgICAgICAgaGFzaD1wYXJzZWRfY29tbWl0Lmhh
c2gsCisgICAgICAgICAgICAgICAgcmV2aXNpb249cGFyc2VkX2NvbW1pdC5yZXZpc2lvbiwKKyAg
ICAgICAgICAgICAgICBpZGVudGlmaWVyPXBhcnNlZF9jb21taXQuaWRlbnRpZmllciwKKyAgICAg
ICAgICAgICAgICBicmFuY2g9cGFyc2VkX2NvbW1pdC5icmFuY2gsCisgICAgICAgICAgICAgICAg
aW5jbHVkZV9sb2c9RmFsc2UsCisgICAgICAgICAgICAgICAgaW5jbHVkZV9pZGVudGlmaWVyPUZh
bHNlLAorICAgICAgICAgICAgKS5oYXNoCisgICAgICAgIHJldHVybiBhcmd1bWVudAogCisgICAg
ZGVmIGNoZWNrb3V0KHNlbGYsIGFyZ3VtZW50KToKICAgICAgICAgc2VsZi5fYnJhbmNoID0gTm9u
ZQogCiAgICAgICAgIGlmIGxvZy5sZXZlbCA+IGxvZ2dpbmcuV0FSTklORzoKQEAgLTgwNywyMSAr
ODIwLDggQEAgY2xhc3MgR2l0KFNjbSk6CiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBsb2df
YXJnID0gW10KIAotICAgICAgICBwYXJzZWRfY29tbWl0ID0gQ29tbWl0LnBhcnNlKGFyZ3VtZW50
LCBkb19hc3NlcnQ9RmFsc2UpCi0gICAgICAgIGlmIHBhcnNlZF9jb21taXQ6Ci0gICAgICAgICAg
ICBjb21taXQgPSBzZWxmLmNvbW1pdCgKLSAgICAgICAgICAgICAgICBoYXNoPXBhcnNlZF9jb21t
aXQuaGFzaCwKLSAgICAgICAgICAgICAgICByZXZpc2lvbj1wYXJzZWRfY29tbWl0LnJldmlzaW9u
LAotICAgICAgICAgICAgICAgIGlkZW50aWZpZXI9cGFyc2VkX2NvbW1pdC5pZGVudGlmaWVyLAot
ICAgICAgICAgICAgICAgIGJyYW5jaD1wYXJzZWRfY29tbWl0LmJyYW5jaCwKLSAgICAgICAgICAg
ICkKLSAgICAgICAgICAgIHJldHVybiBOb25lIGlmIHJ1bigKLSAgICAgICAgICAgICAgICBbc2Vs
Zi5leGVjdXRhYmxlKCksICdjaGVja291dCddICsgW2NvbW1pdC5oYXNoXSArIGxvZ19hcmcsCi0g
ICAgICAgICAgICAgICAgY3dkPXNlbGYucm9vdF9wYXRoLAotICAgICAgICAgICAgKS5yZXR1cm5j
b2RlIGVsc2UgY29tbWl0Ci0KICAgICAgICAgcmV0dXJuIE5vbmUgaWYgcnVuKAotICAgICAgICAg
ICAgW3NlbGYuZXhlY3V0YWJsZSgpLCAnY2hlY2tvdXQnXSArIFthcmd1bWVudF0gKyBsb2dfYXJn
LAorICAgICAgICAgICAgW3NlbGYuZXhlY3V0YWJsZSgpLCAnY2hlY2tvdXQnXSArIFtzZWxmLl90
b19naXRfcmVmKGFyZ3VtZW50KV0gKyBsb2dfYXJnLAogICAgICAgICAgICAgY3dkPXNlbGYucm9v
dF9wYXRoLAogICAgICAgICApLnJldHVybmNvZGUgZWxzZSBzZWxmLmNvbW1pdCgpCiAKQEAgLTgy
OSw2ICs4MjksMTAgQEAgY2xhc3MgR2l0KFNjbSk6CiAgICAgICAgIGlmIGhlYWQgPT0gc2VsZi5k
ZWZhdWx0X2JyYW5jaCBvciBzZWxmLnByb2RfYnJhbmNoZXMubWF0Y2goaGVhZCk6CiAgICAgICAg
ICAgICByYWlzZSBSdW50aW1lRXJyb3IoIlJlYmFzaW5nIHByb2R1Y3Rpb24gYnJhbmNoICd7fScg
YmFubmVkIGluIHRvb2xpbmchIi5mb3JtYXQoaGVhZCkpCiAKKyAgICAgICAgdGFyZ2V0ID0gc2Vs
Zi5fdG9fZ2l0X3JlZih0YXJnZXQpCisgICAgICAgIGJhc2UgPSBzZWxmLl90b19naXRfcmVmKGJh
c2UpCisgICAgICAgIGhlYWQgPSBzZWxmLl90b19naXRfcmVmKGhlYWQpCisKICAgICAgICAgY29k
ZSA9IHJ1bihbc2VsZi5leGVjdXRhYmxlKCksICdyZWJhc2UnLCAnLS1vbnRvJywgdGFyZ2V0LCBi
YXNlIG9yIHRhcmdldCwgaGVhZF0sIGN3ZD1zZWxmLnJvb3RfcGF0aCkucmV0dXJuY29kZQogICAg
ICAgICBpZiBzZWxmLmNhY2hlOgogICAgICAgICAgICAgc2VsZi5jYWNoZS5jbGVhcihoZWFkIGlm
IGhlYWQgIT0gJ0hFQUQnIGVsc2Ugc2VsZi5icmFuY2gpCkBAIC04MzcsNyArODQxLDcgQEAgY2xh
c3MgR2l0KFNjbSk6CiAgICAgICAgIHJldHVybiBydW4oWwogICAgICAgICAgICAgc2VsZi5leGVj
dXRhYmxlKCksICdmaWx0ZXItYnJhbmNoJywgJy1mJywKICAgICAgICAgICAgICctLWVudi1maWx0
ZXInLCAiR0lUX0FVVEhPUl9EQVRFPSd7ZGF0ZX0nO0dJVF9DT01NSVRURVJfREFURT0ne2RhdGV9
JyIuZm9ybWF0KAotICAgICAgICAgICAgICAgIGRhdGU9J3t9IC17fScuZm9ybWF0KGludCh0aW1l
LnRpbWUoKSksIGludCh0aW1lLmxvY2FsdGltZSgpLnRtX2dtdG9mZiAqIDEwMCAvICg2MCAqIDYw
KSkpCisgICAgICAgICAgICAgICAgZGF0ZT0ne30gLXt9Jy5mb3JtYXQoaW50KHRpbWUudGltZSgp
KSwgc2VsZi5nbXRvZmZzZXQoKSkKICAgICAgICAgICAgICksICd7fS4uLnt9Jy5mb3JtYXQodGFy
Z2V0LCBoZWFkKSwKICAgICAgICAgXSwgY3dkPXNlbGYucm9vdF9wYXRoLCBlbnY9eydGSUxURVJf
QlJBTkNIX1NRVUVMQ0hfV0FSTklORyc6ICcxJ30sIGNhcHR1cmVfb3V0cHV0PVRydWUpLnJldHVy
bmNvZGUKIApAQCAtODY5LDcgKzg3Myw3IEBAIGNsYXNzIEdpdChTY20pOgogICAgICAgICAgICAg
ICAgICAgICBzZWxmLmV4ZWN1dGFibGUoKSwKICAgICAgICAgICAgICAgICAgICAgJ2ZpbHRlci1i
cmFuY2gnLCAnLWYnLAogICAgICAgICAgICAgICAgICAgICAnLS1lbnYtZmlsdGVyJywgIkdJVF9B
VVRIT1JfREFURT0ne2RhdGV9JztHSVRfQ09NTUlUVEVSX0RBVEU9J3tkYXRlfSciLmZvcm1hdCgK
LSAgICAgICAgICAgICAgICAgICAgICAgIGRhdGU9J3t9IC17fScuZm9ybWF0KGludCh0aW1lLnRp
bWUoKSksIGludCh0aW1lLmxvY2FsdGltZSgpLnRtX2dtdG9mZiAqIDEwMCAvICg2MCAqIDYwKSkp
CisgICAgICAgICAgICAgICAgICAgICAgICBkYXRlPSd7fSAte30nLmZvcm1hdChpbnQodGltZS50
aW1lKCkpLCBzZWxmLmdtdG9mZnNldCgpKQogICAgICAgICAgICAgICAgICAgICApLCAnSEVBRC4u
Lnt9Jy5mb3JtYXQoJ3t9L3t9Jy5mb3JtYXQocmVtb3RlLCBicmFuY2gpKSwKICAgICAgICAgICAg
ICAgICBdLCBjd2Q9c2VsZi5yb290X3BhdGgsIGVudj17J0ZJTFRFUl9CUkFOQ0hfU1FVRUxDSF9X
QVJOSU5HJzogJzEnfSkucmV0dXJuY29kZQogCkBAIC05MTIsMyArOTE2LDI3IEBAIGNsYXNzIEdp
dChTY20pOgogICAgICAgICBpZiBzZXQoc3RhZ2VkKSAtIGFkZGVkOgogICAgICAgICAgICAgcmV0
dXJuIHN0YWdlZAogICAgICAgICByZXR1cm4gc3RhZ2VkICsgc2VsZi5tb2RpZmllZChzdGFnZWQ9
RmFsc2UpCisKKyAgICBkZWYgZGlmZl9saW5lcyhzZWxmLCBiYXNlLCBoZWFkPU5vbmUpOgorICAg
ICAgICBiYXNlID0gc2VsZi5fdG9fZ2l0X3JlZihiYXNlKQorICAgICAgICBoZWFkID0gc2VsZi5f
dG9fZ2l0X3JlZihoZWFkKQorCisgICAgICAgIGt3YXJncyA9IGRpY3QoKQorICAgICAgICBpZiBz
eXMudmVyc2lvbl9pbmZvID49ICgzLCAwKToKKyAgICAgICAgICAgIGt3YXJncyA9IGRpY3QoZW5j
b2Rpbmc9J3V0Zi04JykKKyAgICAgICAgdGFyZ2V0ID0gJ3t9Li57fScuZm9ybWF0KGJhc2UsIGhl
YWQpIGlmIGhlYWQgZWxzZSBiYXNlCisgICAgICAgIHByb2MgPSBzdWJwcm9jZXNzLlBvcGVuKAor
ICAgICAgICAgICAgW3NlbGYuZXhlY3V0YWJsZSgpLCAnZGlmZicsIHRhcmdldF0sCisgICAgICAg
ICAgICBjd2Q9c2VsZi5yb290X3BhdGgsCisgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5Q
SVBFLAorICAgICAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSwKKyAgICAgICAgICAgICoq
IGt3YXJncworICAgICAgICApCisKKyAgICAgICAgaWYgcHJvYy5wb2xsKCk6CisgICAgICAgICAg
ICBzeXMuc3RkZXJyLndyaXRlKCJGYWlsZWQgdG8gZ2VuZXJhdGUgZGlmZiBmb3IgJ3t9J1xuIi5m
b3JtYXQodGFyZ2V0KSkKKworICAgICAgICBsaW5lID0gcHJvYy5zdGRvdXQucmVhZGxpbmUoKQor
ICAgICAgICB3aGlsZSBsaW5lOgorICAgICAgICAgICAgeWllbGQgbGluZS5yc3RyaXAoKQorICAg
ICAgICAgICAgbGluZSA9IHByb2Muc3Rkb3V0LnJlYWRsaW5lKCkKZGlmZiAtLWdpdCBhL1Rvb2xz
L1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L21vY2tzL2xvY2FsL2dp
dC5weSBiL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L21v
Y2tzL2xvY2FsL2dpdC5weQppbmRleCBiZTA0ZjFjZWZmZmQxNTU3OTU1OTE1NTRlNmY3YzJiMjk0
NjQ1YTE5Li5mMDcxZjM5MjA0MTYzZWUxMDBkYzMzNjMxMWIyNzVlMTJhZjdmMGMyIDEwMDY0NAot
LS0gYS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9tb2Nr
cy9sb2NhbC9naXQucHkKKysrIGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkv
d2Via2l0c2NtcHkvbW9ja3MvbG9jYWwvZ2l0LnB5CkBAIC0yODcsNyArMjg3LDcgQEAgbm90aGlu
ZyB0byBjb21taXQsIHdvcmtpbmcgdHJlZSBjbGVhbgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgb3MucGF0aC5iYXNlbmFtZShwYXRoKSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29tbWl0LnJldmlzaW9uLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICldIGlmIGdpdF9zdm4gZWxzZSBbXSksCi0gICAgICAgICAgICAgICAgICAgICAgICApKSBm
b3IgY29tbWl0IGluIHNlbGYuY29tbWl0c19pbl9yYW5nZShhcmdzWzNdLnNwbGl0KCcuLi4nKVst
MV0sIGFyZ3NbM10uc3BsaXQoJy4uLicpWzBdKQorICAgICAgICAgICAgICAgICAgICAgICAgKSkg
Zm9yIGNvbW1pdCBpbiBsaXN0KHNlbGYuY29tbWl0c19pbl9yYW5nZShhcmdzWzNdLnNwbGl0KCcu
Li4nKVstMV0sIGFyZ3NbM10uc3BsaXQoJy4uLicpWzBdKSlbOi0xXQogICAgICAgICAgICAgICAg
ICAgICBdKQogICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICksIG1vY2tzLlN1YnByb2Nl
c3MuUm91dGUoCkBAIC0zNDksMTMgKzM0OSwyNSBAQCBub3RoaW5nIHRvIGNvbW1pdCwgd29ya2lu
ZyB0cmVlIGNsZWFuCiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yPWxhbWJkYSAqYXJncywgKipr
d2FyZ3M6CiAgICAgICAgICAgICAgICAgICAgIG1vY2tzLlByb2Nlc3NDb21wbGV0aW9uKHJldHVy
bmNvZGU9MCkgaWYgc2VsZi5jaGVja291dChhcmdzWzJdLCBjcmVhdGU9RmFsc2UpIGVsc2UgbW9j
a3MuUHJvY2Vzc0NvbXBsZXRpb24ocmV0dXJuY29kZT0xKQogICAgICAgICAgICAgKSwgbW9ja3Mu
U3VicHJvY2Vzcy5Sb3V0ZSgKLSAgICAgICAgICAgICAgICBzZWxmLmV4ZWN1dGFibGUsICdmaWx0
ZXItYnJhbmNoJywgJy1mJywKKyAgICAgICAgICAgICAgICBzZWxmLmV4ZWN1dGFibGUsICdmaWx0
ZXItYnJhbmNoJywgJy1mJywgJy0tZW52LWZpbHRlcicsIHJlLmNvbXBpbGUocicuKicpLCAnLS1t
c2ctZmlsdGVyJywKICAgICAgICAgICAgICAgICBjd2Q9c2VsZi5wYXRoLAogICAgICAgICAgICAg
ICAgIGdlbmVyYXRvcj1sYW1iZGEgKmFyZ3MsICoqa3dhcmdzOiBzZWxmLmZpbHRlcl9icmFuY2go
CiAgICAgICAgICAgICAgICAgICAgIGFyZ3NbLTFdLAogICAgICAgICAgICAgICAgICAgICBpZGVu
dGlmaWVyX3RlbXBsYXRlPWFyZ3NbLTJdLnNwbGl0KCInIilbLTJdIGlmIGFyZ3NbLTNdID09ICct
LW1zZy1maWx0ZXInIGVsc2UgTm9uZSwKICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnRf
c2hlbGw9YXJnc1s0XSBpZiBhcmdzWzNdID09ICctLWVudi1maWx0ZXInIGFuZCBhcmdzWzRdIGVs
c2UgTm9uZSwKICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICApLCBtb2Nrcy5TdWJwcm9j
ZXNzLlJvdXRlKAorICAgICAgICAgICAgICAgIHNlbGYuZXhlY3V0YWJsZSwgJ2ZpbHRlci1icmFu
Y2gnLCAnLWYnLCAnLS1lbnYtZmlsdGVyJywgcmUuY29tcGlsZShyJy4qJyksICctLW1zZy1maWx0
ZXInLCByZS5jb21waWxlKHInc2VkIC4qJyksCisgICAgICAgICAgICAgICAgY3dkPXNlbGYucGF0
aCwKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3I9bGFtYmRhICphcmdzLCAqKmt3YXJnczogc2Vs
Zi5maWx0ZXJfYnJhbmNoKAorICAgICAgICAgICAgICAgICAgICBhcmdzWy0xXSwKKyAgICAgICAg
ICAgICAgICAgICAgZW52aXJvbm1lbnRfc2hlbGw9YXJnc1s0XSBpZiBhcmdzWzNdID09ICctLWVu
di1maWx0ZXInIGFuZCBhcmdzWzRdIGVsc2UgTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgc2Vk
PWFyZ3NbNl0uc3BsaXQoJ3NlZCAnKVstMV0gaWYgYXJnc1s1XSA9PSAnLS1tc2ctZmlsdGVyJyBl
bHNlIE5vbmUsCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKSwgbW9ja3MuU3VicHJv
Y2Vzcy5Sb3V0ZSgKKyAgICAgICAgICAgICAgICBzZWxmLmV4ZWN1dGFibGUsICdmaWx0ZXItYnJh
bmNoJywgJy1mJywKKyAgICAgICAgICAgICAgICBjd2Q9c2VsZi5wYXRoLAorICAgICAgICAgICAg
ICAgIGNvbXBsZXRpb249bW9ja3MuUHJvY2Vzc0NvbXBsZXRpb24ocmV0dXJuY29kZT0wKSwKICAg
ICAgICAgICAgICksIG1vY2tzLlN1YnByb2Nlc3MuUm91dGUoCiAgICAgICAgICAgICAgICAgc2Vs
Zi5leGVjdXRhYmxlLCAnc3ZuJywgJ2ZldGNoJywgJy0tbG9nLXdpbmRvdy1zaXplPTUwMDAnLCAn
LXInLCByZS5jb21waWxlKHInXGQrOkhFQUQnKSwKICAgICAgICAgICAgICAgICBjd2Q9c2VsZi5w
YXRoLApAQCAtNDM4LDYgKzQ1MCwyOCBAQCBub3RoaW5nIHRvIGNvbW1pdCwgd29ya2luZyB0cmVl
IGNsZWFuCiAgICAgICAgICAgICAgICAgc2VsZi5leGVjdXRhYmxlLCAncmViYXNlJywgJy0tb250
bycsIHJlLmNvbXBpbGUocicuKycpLCByZS5jb21waWxlKHInLisnKSwgcmUuY29tcGlsZShyJy4r
JyksCiAgICAgICAgICAgICAgICAgY3dkPXNlbGYucGF0aCwKICAgICAgICAgICAgICAgICBnZW5l
cmF0b3I9bGFtYmRhICphcmdzLCAqKmt3YXJnczogc2VsZi5yZWJhc2UoYXJnc1szXSwgYXJnc1s0
XSwgYXJnc1s1XSksCisgICAgICAgICAgICApLCBtb2Nrcy5TdWJwcm9jZXNzLlJvdXRlKAorICAg
ICAgICAgICAgICAgIHNlbGYuZXhlY3V0YWJsZSwgJ2JyYW5jaCcsICctZicsIHJlLmNvbXBpbGUo
cicuKycpLCByZS5jb21waWxlKHInLisnKSwKKyAgICAgICAgICAgICAgICBjd2Q9c2VsZi5wYXRo
LAorICAgICAgICAgICAgICAgIGdlbmVyYXRvcj1sYW1iZGEgKmFyZ3MsICoqa3dhcmdzOiBzZWxm
Lm1vdmVfYnJhbmNoKGFyZ3NbM10sIGFyZ3NbNF0pLAorICAgICAgICAgICAgKSwgbW9ja3MuU3Vi
cHJvY2Vzcy5Sb3V0ZSgKKyAgICAgICAgICAgICAgICBzZWxmLmV4ZWN1dGFibGUsICdwdXNoJywg
J29yaWdpbicsIHJlLmNvbXBpbGUocicuKycpLAorICAgICAgICAgICAgICAgIGN3ZD1zZWxmLnBh
dGgsCisgICAgICAgICAgICAgICAgZ2VuZXJhdG9yPWxhbWJkYSAqYXJncywgKiprd2FyZ3M6IHNl
bGYucHVzaChhcmdzWzJdLCBhcmdzWzNdKSwKKyAgICAgICAgICAgICksIG1vY2tzLlN1YnByb2Nl
c3MuUm91dGUoCisgICAgICAgICAgICAgICAgc2VsZi5leGVjdXRhYmxlLCAnZGlmZicsIHJlLmNv
bXBpbGUocicuKycpLAorICAgICAgICAgICAgICAgIGN3ZD1zZWxmLnBhdGgsCisgICAgICAgICAg
ICAgICAgZ2VuZXJhdG9yPWxhbWJkYSAqYXJncywgKiprd2FyZ3M6IG1vY2tzLlByb2Nlc3NDb21w
bGV0aW9uKAorICAgICAgICAgICAgICAgICAgICByZXR1cm5jb2RlPTAsCisgICAgICAgICAgICAg
ICAgICAgIHN0ZG91dD0nXG4nLmpvaW4oWworICAgICAgICAgICAgICAgICAgICAgICAgJy0tLSBh
L0NoYW5nZUxvZ1xuKysrIGIvQ2hhbmdlTG9nXG5AQCAtMSwwICsxLDAgQEBcbnt9Jy5mb3JtYXQo
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJy5qb2luKFsnKyB7fScuZm9ybWF0KGxp
bmUpIGZvciBsaW5lIGluIGNvbW1pdC5tZXNzYWdlLnNwbGl0bGluZXMoKV0pCisgICAgICAgICAg
ICAgICAgICAgICAgICApIGZvciBjb21taXQgaW4gbGlzdChzZWxmLmNvbW1pdHNfaW5fcmFuZ2Uo
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnc1syXS5zcGxpdCgnLi4nKVswXSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzWzJdLnNwbGl0KCcuLicpWy0xXSBpZiAnLi4n
IGluIGFyZ3NbMl0gZWxzZSBzZWxmLmNvbW1pdHNbc2VsZi5kZWZhdWx0X2JyYW5jaF1bLTFdLmhh
c2gsCisgICAgICAgICAgICAgICAgICAgICAgICApKVs6LTFdCisgICAgICAgICAgICAgICAgICAg
IF0pCisgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgKSwgbW9ja3MuU3VicHJvY2Vzcy5S
b3V0ZSgKICAgICAgICAgICAgICAgICBzZWxmLmV4ZWN1dGFibGUsCiAgICAgICAgICAgICAgICAg
Y3dkPXNlbGYucGF0aCwKQEAgLTU2Nyw3ICs2MDEsNyBAQCBub3RoaW5nIHRvIGNvbW1pdCwgd29y
a2luZyB0cmVlIGNsZWFuCiAgICAgICAgICAgICBzZWxmLmRldGFjaGVkID0gc29tZXRoaW5nIG5v
dCBpbiBzZWxmLmNvbW1pdHMua2V5cygpCiAgICAgICAgIHJldHVybiBUcnVlIGlmIGNvbW1pdCBl
bHNlIEZhbHNlCiAKLSAgICBkZWYgZmlsdGVyX2JyYW5jaChzZWxmLCByYW5nZSwgaWRlbnRpZmll
cl90ZW1wbGF0ZT1Ob25lLCBlbnZpcm9ubWVudF9zaGVsbD1Ob25lKToKKyAgICBkZWYgZmlsdGVy
X2JyYW5jaChzZWxmLCByYW5nZSwgaWRlbnRpZmllcl90ZW1wbGF0ZT1Ob25lLCBlbnZpcm9ubWVu
dF9zaGVsbD1Ob25lLCBzZWQ9Tm9uZSk6CiAgICAgICAgICMgV2UgY2FuJ3QgZWZmZWN0aXZlbHkg
bW9jayB0aGUgYmFzaCBzY3JpcHQgaW4gdGhlIGNvbW1hbmQsIGJ1dCB3ZSBjYW4gbW9jayB0aGUg
cHl0aG9uIGNvZGUgdGhhdAogICAgICAgICAjIHNjcmlwdCBjYWxscywgd2hpY2ggaXMgd2hlcmUg
dGhlIHByb2dyYW0gbG9naWMgaXMuCiAgICAgICAgIGhlYWQsIHN0YXJ0ID0gcmFuZ2Uuc3BsaXQo
Jy4uLicpCkBAIC02MjEsNiArNjU1LDE0IEBAIG5vdGhpbmcgdG8gY29tbWl0LCB3b3JraW5nIHRy
ZWUgY2xlYW4KICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVzLnBvcCgtMSkKICAgICAgICAg
ICAgICAgICAgICAgY29tbWl0Lm1lc3NhZ2UgPSAnXG4nLmpvaW4obGluZXMpCiAKKyAgICAgICAg
ICAgICAgICBpZiBzZWQ6CisgICAgICAgICAgICAgICAgICAgIG1hdGNoID0gcmUubWF0Y2gocici
cy8oP1A8cmU+LispLyg/UDx2YWx1ZT4uKykvZyInLCBzZWQpCisgICAgICAgICAgICAgICAgICAg
IGlmIG1hdGNoOgorICAgICAgICAgICAgICAgICAgICAgICAgY29tbWl0Lm1lc3NhZ2UgPSByZS5z
dWIoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2guZ3JvdXAoJ3JlJykucmVwbGFj
ZSgnKCcsICdcXCgnKS5yZXBsYWNlKCcpJywgJ1xcKScpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1hdGNoLmdyb3VwKCd2YWx1ZScpLCBjb21taXQubWVzc2FnZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICkKKwogICAgICAgICAgICAgICAgIGlmIG5vdCBlbnZpcm9ubWVudF9zaGVs
bDoKICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICBpZiByZS5z
ZWFyY2gocidlY2hvICJPdmVyd3JpdGluZycsIGVudmlyb25tZW50X3NoZWxsKToKQEAgLTc5MSwz
ICs4MzMsMjYgQEAgbm90aGluZyB0byBjb21taXQsIHdvcmtpbmcgdHJlZSBjbGVhbgogICAgICAg
ICAgICAgaWYgc2VsZi5jb21taXRzW3RhcmdldF1bLTFdLmJyYW5jaF9wb2ludDoKICAgICAgICAg
ICAgICAgICBjb21taXQuaWRlbnRpZmllciArPSBzZWxmLmNvbW1pdHNbdGFyZ2V0XVstMV0uaWRl
bnRpZmllcgogICAgICAgICByZXR1cm4gbW9ja3MuUHJvY2Vzc0NvbXBsZXRpb24ocmV0dXJuY29k
ZT0wKQorCisgICAgZGVmIG1vdmVfYnJhbmNoKHNlbGYsIHRvX2JlX21vdmVkLCBtb3ZlZF90byk6
CisgICAgICAgIGlmIG1vdmVkX3RvID09IHNlbGYuZGVmYXVsdF9icmFuY2g6CisgICAgICAgICAg
ICByZXR1cm4gbW9ja3MuUHJvY2Vzc0NvbXBsZXRpb24ocmV0dXJuY29kZT0wKQorICAgICAgICBp
ZiB0b19iZV9tb3ZlZCAhPSBzZWxmLmRlZmF1bHRfYnJhbmNoOgorICAgICAgICAgICAgc2VsZi5j
b21taXRzW3RvX2JlX21vdmVkXSA9IHNlbGYuY29tbWl0c1ttb3ZlZF90b10KKyAgICAgICAgICAg
IHNlbGYuaGVhZCA9IHNlbGYuY29tbWl0c1t0b19iZV9tb3ZlZF1bLTFdCisgICAgICAgICAgICBy
ZXR1cm4gbW9ja3MuUHJvY2Vzc0NvbXBsZXRpb24ocmV0dXJuY29kZT0wKQorICAgICAgICBzZWxm
LmNvbW1pdHNbdG9fYmVfbW92ZWRdICs9IFsKKyAgICAgICAgICAgIENvbW1pdCgKKyAgICAgICAg
ICAgICAgICBicmFuY2g9dG9fYmVfbW92ZWQsIHJlcG9zaXRvcnlfaWQ9Y29tbWl0LnJlcG9zaXRv
cnlfaWQsCisgICAgICAgICAgICAgICAgdGltZXN0YW1wPWNvbW1pdC50aW1lc3RhbXAsCisgICAg
ICAgICAgICAgICAgaWRlbnRpZmllcj1jb21taXQuaWRlbnRpZmllciArIChjb21taXQuYnJhbmNo
X3BvaW50IG9yIDApLCBicmFuY2hfcG9pbnQ9Tm9uZSwKKyAgICAgICAgICAgICAgICBoYXNoPWNv
bW1pdC5oYXNoLCByZXZpc2lvbj1jb21taXQucmV2aXNpb24sCisgICAgICAgICAgICAgICAgYXV0
aG9yPWNvbW1pdC5hdXRob3IsIG1lc3NhZ2U9Y29tbWl0Lm1lc3NhZ2UsCisgICAgICAgICAgICAp
IGZvciBjb21taXQgaW4gc2VsZi5jb21taXRzW21vdmVkX3RvXQorICAgICAgICBdCisgICAgICAg
IHNlbGYuaGVhZCA9IHNlbGYuY29tbWl0c1t0b19iZV9tb3ZlZF1bLTFdCisgICAgICAgIHJldHVy
biBtb2Nrcy5Qcm9jZXNzQ29tcGxldGlvbihyZXR1cm5jb2RlPTApCisKKyAgICBkZWYgcHVzaChz
ZWxmLCByZW1vdGUsIGJyYW5jaCk6CisgICAgICAgIHNlbGYucmVtb3Rlc1sne30ve30nLmZvcm1h
dChyZW1vdGUsIGJyYW5jaCldID0gc2VsZi5jb21taXRzW2JyYW5jaF1bLTFdCisgICAgICAgIHJl
dHVybiBtb2Nrcy5Qcm9jZXNzQ29tcGxldGlvbihyZXR1cm5jb2RlPTApCmRpZmYgLS1naXQgYS9U
b29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9wcm9ncmFtL19f
aW5pdF9fLnB5IGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2Nt
cHkvcHJvZ3JhbS9fX2luaXRfXy5weQppbmRleCBhODBlOTg1M2NjZTQ5MzlhZTQ0MGE5ZmQ1MjQy
NGZkNDE2NDc3ZjMwLi41OWEwYzM3ODlhZDAxNGIwMzBjYWEzMzgzNmNhYWM5OTY1YWFlOWE2IDEw
MDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21w
eS9wcm9ncmFtL19faW5pdF9fLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtp
dHNjbXB5L3dlYmtpdHNjbXB5L3Byb2dyYW0vX19pbml0X18ucHkKQEAgLTMyLDYgKzMyLDcgQEAg
ZnJvbSAuY2xlYW4gaW1wb3J0IENsZWFuCiBmcm9tIC5jb21tYW5kIGltcG9ydCBDb21tYW5kCiBm
cm9tIC5jaGVja291dCBpbXBvcnQgQ2hlY2tvdXQKIGZyb20gLmZpbmQgaW1wb3J0IEZpbmQsIElu
Zm8KK2Zyb20gLmxhbmQgaW1wb3J0IExhbmQKIGZyb20gLmxvZyBpbXBvcnQgTG9nCiBmcm9tIC5w
dWxsIGltcG9ydCBQdWxsCiBmcm9tIC5wdWxsX3JlcXVlc3QgaW1wb3J0IFB1bGxSZXF1ZXN0CkBA
IC00NSw2ICs0Niw3IEBAIGZyb20gd2Via2l0c2NtcHkgaW1wb3J0IGxvY2FsLCBsb2csIHJlbW90
ZQogZGVmIG1haW4oCiAgICAgYXJncz1Ob25lLCBwYXRoPU5vbmUsIGxvZ2dlcnM9Tm9uZSwgY29u
dHJpYnV0b3JzPU5vbmUsCiAgICAgaWRlbnRpZmllcl90ZW1wbGF0ZT1Ob25lLCBzdWJ2ZXJzaW9u
PU5vbmUsIGFkZGl0aW9uYWxfc2V0dXA9Tm9uZSwgaG9va3M9Tm9uZSwKKyAgICBjYW5vbmljYWxf
c3ZuPUZhbHNlLAogKToKICAgICBsb2dnaW5nLmJhc2ljQ29uZmlnKGxldmVsPWxvZ2dpbmcuV0FS
TklORykKIApAQCAtNjksNyArNzEsNyBAQCBkZWYgbWFpbigKICAgICApCiAKICAgICBzdWJwYXJz
ZXJzID0gcGFyc2VyLmFkZF9zdWJwYXJzZXJzKGhlbHA9J3N1Yi1jb21tYW5kIGhlbHAnKQotICAg
IHByb2dyYW1zID0gW0JsYW1lLCBCcmFuY2gsIENhbm9uaWNhbGl6ZSwgQ2hlY2tvdXQsIENsZWFu
LCBGaW5kLCBJbmZvLCBMb2csIFB1bGwsIFB1bGxSZXF1ZXN0LCBTZXR1cF0KKyAgICBwcm9ncmFt
cyA9IFtCbGFtZSwgQnJhbmNoLCBDYW5vbmljYWxpemUsIENoZWNrb3V0LCBDbGVhbiwgRmluZCwg
SW5mbywgTGFuZCwgTG9nLCBQdWxsLCBQdWxsUmVxdWVzdCwgU2V0dXBdCiAgICAgaWYgc3VidmVy
c2lvbjoKICAgICAgICAgcHJvZ3JhbXMuYXBwZW5kKFNldHVwR2l0U3ZuKQogCkBAIC0xMjIsNiAr
MTI0LDkgQEAgZGVmIG1haW4oCiAgICAgaWYgY2FsbGFibGUoYWRkaXRpb25hbF9zZXR1cCkgYW5k
IGxpc3QoaW5zcGVjdC5zaWduYXR1cmUoYWRkaXRpb25hbF9zZXR1cCkucGFyYW1ldGVycy5rZXlz
KCkpID09IFsncmVwb3NpdG9yeSddOgogICAgICAgICBhZGRpdGlvbmFsX3NldHVwID0gYWRkaXRp
b25hbF9zZXR1cChyZXBvc2l0b3J5KQogCisgICAgaWYgY2FsbGFibGUoY2Fub25pY2FsX3N2bik6
CisgICAgICAgIGNhbm9uaWNhbF9zdm4gPSBjYW5vbmljYWxfc3ZuKHJlcG9zaXRvcnkpCisKICAg
ICBpZiBub3QgZ2V0YXR0cihwYXJzZWQsICdtYWluJywgTm9uZSk6CiAgICAgICAgIHBhcnNlci5w
cmludF9oZWxwKCkKICAgICAgICAgcmV0dXJuIC0xCkBAIC0xMzMsNCArMTM4LDUgQEAgZGVmIG1h
aW4oCiAgICAgICAgIHN1YnZlcnNpb249c3VidmVyc2lvbiwKICAgICAgICAgYWRkaXRpb25hbF9z
ZXR1cD1hZGRpdGlvbmFsX3NldHVwLAogICAgICAgICBob29rcz1ob29rcywKKyAgICAgICAgY2Fu
b25pY2FsX3N2bj1jYW5vbmljYWxfc3ZuLAogICAgICkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Njcmlw
dHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Byb2dyYW0vbGFuZC5weSBiL1Rv
b2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Byb2dyYW0vbGFu
ZC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5iMzBiODNhZmEwMWIxZjczYzEyODk2ZGM4OTI2YzdmYWNjYTBhYTI3
Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkv
d2Via2l0c2NtcHkvcHJvZ3JhbS9sYW5kLnB5CkBAIC0wLDAgKzEsMjA3IEBACisjIENvcHlyaWdo
dCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgor
IyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgcmUKK2ltcG9ydCBzeXMKK2ltcG9y
dCB0aW1lCisKK2Zyb20gLmNhbm9uaWNhbGl6ZSBpbXBvcnQgQ2Fub25pY2FsaXplCitmcm9tIC5j
b21tYW5kIGltcG9ydCBDb21tYW5kCitmcm9tIC5icmFuY2ggaW1wb3J0IEJyYW5jaAorZnJvbSBh
cmdwYXJzZSBpbXBvcnQgTmFtZXNwYWNlCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgYXJndW1l
bnRzLCBydW4sIHN0cmluZ191dGlscywgVGVybWluYWwKK2Zyb20gd2Via2l0c2NtcHkgaW1wb3J0
IGxvY2FsLCBsb2cKKworCitjbGFzcyBMYW5kKENvbW1hbmQpOgorICAgIG5hbWUgPSAnbGFuZCcK
KyAgICBoZWxwID0gJ0lmIG9uIGEgcHVsbC1yZXF1ZXN0IG9yIGNvbW1pdC1xdWV1ZSBicmFuY2gs
IHJlYmFzZSB0aGUgJyBcCisgICAgICAgICAgICdjdXJyZW50IGJyYW5jaCBvbnRvIHRoZSB0YXJn
ZXQgcHJvZHVjdGlvbiBicmFuY2ggYW5kIHB1c2guJworCisgICAgT09QU19SRSA9IHJlLmNvbXBp
bGUocidcKE8rUCtTISpcKScpCisgICAgUkVWSUVXRURfQllfUkUgPSByZS5jb21waWxlKCdSZXZp
ZXdlZCBieSAoP1A8YXBwcm92ZXI+LispJykKKyAgICBSRU1PVEUgPSAnb3JpZ2luJworICAgIE1J
UlJPUl9USU1FT1VUID0gNjAKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBwYXJzZXIoY2xz
LCBwYXJzZXIsIGxvZ2dlcnM9Tm9uZSk6CisgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCisg
ICAgICAgICAgICAnLS1uby1mb3JjZS1yZXZpZXcnLCAnLS1mb3JjZS1yZXZpZXcnLCAnLS1uby1y
ZXZpZXcnLAorICAgICAgICAgICAgZGVzdD0ncmV2aWV3JywgZGVmYXVsdD1UcnVlLAorICAgICAg
ICAgICAgaGVscD0nQ2hlY2sgaWYgdGhlIGNoYW5nZSBoYXMgYmVlbiBhcHByb3ZlZCBvciBibG9j
a2VkIGJ5IHJldmlld2VycycsCisgICAgICAgICAgICBhY3Rpb249YXJndW1lbnRzLk5vQWN0aW9u
LAorICAgICAgICApCisgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICAgICAn
LS1uby1vb3BzJywgJy0tbm8tYWxsb3ctb29wcycsICctLWFsbG93LW9vcHMnLAorICAgICAgICAg
ICAgZGVzdD0nb29wcycsIGRlZmF1bHQ9RmFsc2UsCisgICAgICAgICAgICBoZWxwPSJBbGxvdyAo
T09QUyEpIGluIGNvbW1pdCBtZXNzYWdlcyIsCisgICAgICAgICAgICBhY3Rpb249YXJndW1lbnRz
Lk5vQWN0aW9uLAorICAgICAgICApCisgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCisgICAg
ICAgICAgICAnLS1kZWZhdWx0cycsICctLW5vLWRlZmF1bHRzJywgYWN0aW9uPWFyZ3VtZW50cy5O
b0FjdGlvbiwgZGVmYXVsdD1Ob25lLAorICAgICAgICAgICAgaGVscD0nRG8gbm90IHByb21wdCB0
aGUgdXNlciBmb3IgZGVmYXVsdHMsIGFsd2F5cyB1c2UgKG9yIGRvIG5vdCB1c2UpIHRoZW0nLAor
ICAgICAgICApCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgbWFpbihjbHMsIGFyZ3MsIHJl
cG9zaXRvcnksIGlkZW50aWZpZXJfdGVtcGxhdGU9Tm9uZSwgY2Fub25pY2FsX3N2bj1GYWxzZSwg
Kiprd2FyZ3MpOgorICAgICAgICBpZiBub3QgcmVwb3NpdG9yeS5wYXRoOgorICAgICAgICAgICAg
c3lzLnN0ZGVyci53cml0ZSgiQ2Fubm90ICdsYW5kJyBjaGFuZ2UgaW4gcmVtb3RlIHJlcG9zaXRv
cnlcbiIpCisgICAgICAgICAgICByZXR1cm4gMQorCisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNl
KHJlcG9zaXRvcnksIGxvY2FsLkdpdCk6CisgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCIn
bGFuZCcgb25seSBzdXBwb3J0ZWQgYnkgbG9jYWwgZ2l0IHJlcG9zaXRvcmllc1xuIikKKyAgICAg
ICAgICAgIHJldHVybiAxCisKKyAgICAgICAgaWYgY2Fub25pY2FsX3N2biBhbmQgbm90IHJlcG9z
aXRvcnkuaXNfc3ZuOgorICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgiQ2Fubm90ICdsYW5k
JyBvbiBhIGNhbm9uaWNhbCBTVk4gcmVwb3NpdG9yeSB0aGF0IGlzIG5vdCBjb25maWd1cmVkIGFz
IGdpdC1zdm5cbiIpCisgICAgICAgICAgICByZXR1cm4gMQorCisgICAgICAgIGlmIG5vdCBCcmFu
Y2guZWRpdGFibGUocmVwb3NpdG9yeS5icmFuY2gsIHJlcG9zaXRvcnk9cmVwb3NpdG9yeSk6Cisg
ICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCJDYW4gb25seSAnbGFuZCcgZWRpdGFibGUgYnJh
bmNoZXNcbiIpCisgICAgICAgICAgICByZXR1cm4gMQorICAgICAgICBicmFuY2hfcG9pbnQgPSBC
cmFuY2guYnJhbmNoX3BvaW50KHJlcG9zaXRvcnkpCisgICAgICAgIGNvbW1pdHMgPSBsaXN0KHJl
cG9zaXRvcnkuY29tbWl0cyhiZWdpbj1kaWN0KGhhc2g9YnJhbmNoX3BvaW50Lmhhc2gpLCBlbmQ9
ZGljdChicmFuY2g9cmVwb3NpdG9yeS5icmFuY2gpKSkKKyAgICAgICAgaWYgbm90IGNvbW1pdHM6
CisgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCdGYWlsZWQgdG8gZmluZCBjb21taXRzIHRv
IGxhbmRcbicpCisgICAgICAgICAgICByZXR1cm4gMQorCisgICAgICAgIHB1bGxfcmVxdWVzdCA9
IE5vbmUKKyAgICAgICAgcm10ID0gcmVwb3NpdG9yeS5yZW1vdGUoKQorICAgICAgICBpZiBybXQg
YW5kIHJtdC5wdWxsX3JlcXVlc3RzOgorICAgICAgICAgICAgY2FuZGlkYXRlcyA9IGxpc3Qocm10
LnB1bGxfcmVxdWVzdHMuZmluZChvcGVuZWQ9VHJ1ZSwgaGVhZD1yZXBvc2l0b3J5LmJyYW5jaCkp
CisgICAgICAgICAgICBpZiBsZW4oY2FuZGlkYXRlcykgPT0gMToKKyAgICAgICAgICAgICAgICBw
dWxsX3JlcXVlc3QgPSBjYW5kaWRhdGVzWzBdCisgICAgICAgICAgICBlbGlmIGNhbmRpZGF0ZXM6
CisgICAgICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgiTXVsdGlwbGUgcHVsbC1yZXF1ZXN0
IG1hdGNoICd7fSdcbiIuZm9ybWF0KHJlcG9zaXRvcnkuYnJhbmNoKSkKKworICAgICAgICBpZiBw
dWxsX3JlcXVlc3QgYW5kIGFyZ3MucmV2aWV3OgorICAgICAgICAgICAgaWYgcHVsbF9yZXF1ZXN0
LmJsb2NrZXJzOgorICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoInt9IHt9IGJsb2Nr
aW5nIGxhbmRpbmcgJ3t9J1xuIi5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgIHN0cmluZ191
dGlscy5qb2luKFtwLm5hbWUgZm9yIHAgaW4gcHVsbF9yZXF1ZXN0LmJsb2NrZXJzXSksCisgICAg
ICAgICAgICAgICAgICAgICdhcmUnIGlmIGxlbihwdWxsX3JlcXVlc3QuYmxvY2tlcnMpID4gMSBl
bHNlICdpcycsCisgICAgICAgICAgICAgICAgICAgIHB1bGxfcmVxdWVzdCwKKyAgICAgICAgICAg
ICAgICApKQorICAgICAgICAgICAgICAgIHJldHVybiAxCisgICAgICAgICAgICBuZWVkX3Jldmll
dyA9IEZhbHNlCisgICAgICAgICAgICBpZiBwdWxsX3JlcXVlc3QuYXBwcm92ZXJzOgorICAgICAg
ICAgICAgICAgIHJldmlld19saW5lcyA9IFtjbHMuUkVWSUVXRURfQllfUkUuc2VhcmNoKGNvbW1p
dC5tZXNzYWdlKSBmb3IgY29tbWl0IGluIGNvbW1pdHNdCisgICAgICAgICAgICAgICAgbmVlZF9y
ZXZpZXcgPSBhbnkoW2Nscy5PT1BTX1JFLnNlYXJjaChtYXRjaC5ncm91cCgnYXBwcm92ZXInKSkg
Zm9yIG1hdGNoIGluIHJldmlld19saW5lcyBpZiBtYXRjaF0pCisgICAgICAgICAgICBpZiBuZWVk
X3JldmlldyBhbmQgKGFyZ3MuZGVmYXVsdHMgb3IgVGVybWluYWwuY2hvb3NlKCJTZXQgJ3t9JyBh
cyB5b3VyIHJldmlld2Vye30/Ii5mb3JtYXQoCisgICAgICAgICAgICAgICAgc3RyaW5nX3V0aWxz
LmpvaW4oW3AubmFtZSBmb3IgcCBpbiBwdWxsX3JlcXVlc3QuYXBwcm92ZXJzXSksCisgICAgICAg
ICAgICAgICAgJ3MnIGlmIGxlbihwdWxsX3JlcXVlc3QuYXBwcm92ZXJzKSA+IDEgZWxzZSAnJywK
KyAgICAgICAgICAgICksIGRlZmF1bHQ9J1llcycpID09ICdZZXMnKToKKyAgICAgICAgICAgICAg
ICBsb2cud2FybmluZygiU2V0dGluZyB7fSBhcyByZXZpZXdlcnt9Ii5mb3JtYXQoCisgICAgICAg
ICAgICAgICAgICAgIHN0cmluZ191dGlscy5qb2luKFtwLm5hbWUgZm9yIHAgaW4gcHVsbF9yZXF1
ZXN0LmFwcHJvdmVyc10pLAorICAgICAgICAgICAgICAgICAgICAncycgaWYgbGVuKHB1bGxfcmVx
dWVzdC5hcHByb3ZlcnMpID4gMSBlbHNlICcnLAorICAgICAgICAgICAgICAgICkpCisgICAgICAg
ICAgICAgICAgaWYgcnVuKFsKKyAgICAgICAgICAgICAgICAgICAgcmVwb3NpdG9yeS5leGVjdXRh
YmxlKCksICdmaWx0ZXItYnJhbmNoJywgJy1mJywKKyAgICAgICAgICAgICAgICAgICAgJy0tZW52
LWZpbHRlcicsICJHSVRfQVVUSE9SX0RBVEU9J3tkYXRlfSc7R0lUX0NPTU1JVFRFUl9EQVRFPSd7
ZGF0ZX0nIi5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgICAgICBkYXRlPSd7fSAte30nLmZv
cm1hdChpbnQodGltZS50aW1lKCkpLCByZXBvc2l0b3J5LmdtdG9mZnNldCgpKQorICAgICAgICAg
ICAgICAgICAgICApLCAnLS1tc2ctZmlsdGVyJywgJ3NlZCAicy9OT0JPRFkgKE9PKlBQKlMhKikv
e30vZyInLmZvcm1hdChzdHJpbmdfdXRpbHMuam9pbihbcC5uYW1lIGZvciBwIGluIHB1bGxfcmVx
dWVzdC5hcHByb3ZlcnNdKSksCisgICAgICAgICAgICAgICAgICAgICd7fS4uLnt9Jy5mb3JtYXQo
cmVwb3NpdG9yeS5icmFuY2gsIGJyYW5jaF9wb2ludC5oYXNoKSwKKyAgICAgICAgICAgICAgICBd
LCBjd2Q9cmVwb3NpdG9yeS5yb290X3BhdGgsIGVudj17J0ZJTFRFUl9CUkFOQ0hfU1FVRUxDSF9X
QVJOSU5HJzogJzEnfSwgY2FwdHVyZV9vdXRwdXQ9VHJ1ZSkucmV0dXJuY29kZToKKyAgICAgICAg
ICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgnRmFpbGVkIHRvIHNldCByZXZpZXdlcnNcbicp
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAxCisgICAgICAgICAgICAgICAgY29tbWl0cyA9
IGxpc3QocmVwb3NpdG9yeS5jb21taXRzKGJlZ2luPWRpY3QoaGFzaD1icmFuY2hfcG9pbnQuaGFz
aCksIGVuZD1kaWN0KGJyYW5jaD1yZXBvc2l0b3J5LmJyYW5jaCkpKQorICAgICAgICAgICAgICAg
IGlmIG5vdCBjb21taXRzOgorICAgICAgICAgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCdG
YWlsZWQgdG8gZmluZCBjb21taXRzIGFmdGVyIHNldHRpbmcgcmV2aWV3ZXJzXG4nKQorICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gMQorCisgICAgICAgIGVsaWYgbm90IHB1bGxfcmVxdWVzdDoK
KyAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoIkZhaWxlZCB0byBmaW5kIHB1bGwtcmVxdWVz
dCBhc3NvY2lhdGVkIHdpdGggJ3t9J1xuIi5mb3JtYXQocmVwb3NpdG9yeS5icmFuY2gpKQorCisg
ICAgICAgIGlmIG5vdCBhcmdzLm9vcHMgYW5kIGFueShbY2xzLk9PUFNfUkUuc2VhcmNoKGNvbW1p
dC5tZXNzYWdlKSBmb3IgY29tbWl0IGluIGNvbW1pdHNdKToKKyAgICAgICAgICAgIHN5cy5zdGRl
cnIud3JpdGUoIkZvdW5kICcoT09QUyEpJyBtZXNzYWdlIGluIGNvbW1pdCBtZXNzYWdlcywgcGxl
YXNlIHJlc29sdmUgYmVmb3JlIGNvbW1pdHRpbmdcbiIpCisgICAgICAgICAgICByZXR1cm4gMQor
CisgICAgICAgIGlmIG5vdCBhcmdzLm9vcHM6CisgICAgICAgICAgICBmb3IgbGluZSBpbiByZXBv
c2l0b3J5LmRpZmZfbGluZXMoYnJhbmNoX3BvaW50Lmhhc2gsIHJlcG9zaXRvcnkuYnJhbmNoKToK
KyAgICAgICAgICAgICAgICBpZiBjbHMuT09QU19SRS5zZWFyY2gobGluZSk6CisgICAgICAgICAg
ICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoIkZvdW5kICcoT09QUyEpJyBpbiBjb21taXQgZGlm
ZiwgcGxlYXNlIHJlc29sdmUgYmVmb3JlIGNvbW1pdHRpbmdcbiIpCisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiAxCisKKyAgICAgICAgdGFyZ2V0ID0gcHVsbF9yZXF1ZXN0LmJhc2UgaWYgcHVs
bF9yZXF1ZXN0IGVsc2UgYnJhbmNoX3BvaW50LmJyYW5jaAorICAgICAgICBsb2cud2FybmluZygi
UmViYXNpbmcgJ3t9JyBmcm9tICd7fScgdG8gJ3t9Jy4uLiIuZm9ybWF0KHJlcG9zaXRvcnkuYnJh
bmNoLCBicmFuY2hfcG9pbnQuYnJhbmNoLCB0YXJnZXQpKQorICAgICAgICBpZiByZXBvc2l0b3J5
LmZldGNoKGJyYW5jaD10YXJnZXQsIHJlbW90ZT1jbHMuUkVNT1RFKToKKyAgICAgICAgICAgIHN5
cy5zdGRlcnIud3JpdGUoIkZhaWxlZCB0byBmZXRjaCAne30nIGZyb20gJ3t9J1xuIi5mb3JtYXQo
dGFyZ2V0LCBjbHMuUkVNT1RFKSkKKyAgICAgICAgICAgIHJldHVybiAxCisgICAgICAgIGlmIHJl
cG9zaXRvcnkucmViYXNlKHRhcmdldD10YXJnZXQsIGJhc2U9YnJhbmNoX3BvaW50LmJyYW5jaCwg
aGVhZD1yZXBvc2l0b3J5LmJyYW5jaCk6CisgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCJG
YWlsZWQgdG8gcmViYXNlICd7fScgb250byAne30nLCBwbGVhc2UgcmVzb2x2ZSBjb25mbGljdHNc
biIuZm9ybWF0KHJlcG9zaXRvcnkuYnJhbmNoLCB0YXJnZXQpKQorICAgICAgICAgICAgcmV0dXJu
IDEKKyAgICAgICAgbG9nLndhcm5pbmcoIlJlYmFzZWQgJ3t9JyBmcm9tICd7fScgdG8gJ3t9JyEi
LmZvcm1hdChyZXBvc2l0b3J5LmJyYW5jaCwgYnJhbmNoX3BvaW50LmJyYW5jaCwgdGFyZ2V0KSkK
KworICAgICAgICBpZiBydW4oW3JlcG9zaXRvcnkuZXhlY3V0YWJsZSgpLCAnYnJhbmNoJywgJy1m
JywgdGFyZ2V0LCByZXBvc2l0b3J5LmJyYW5jaF0sIGN3ZD1yZXBvc2l0b3J5LnJvb3RfcGF0aCku
cmV0dXJuY29kZToKKyAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoIkZhaWxlZCB0byBtb3Zl
ICd7fScgcmVmXG4iLmZvcm1hdCh0YXJnZXQpKQorICAgICAgICAgICAgcmV0dXJuIDEKKworICAg
ICAgICBpZiBpZGVudGlmaWVyX3RlbXBsYXRlOgorICAgICAgICAgICAgc291cmNlID0gcmVwb3Np
dG9yeS5icmFuY2gKKyAgICAgICAgICAgIHJlcG9zaXRvcnkuY2hlY2tvdXQodGFyZ2V0KQorICAg
ICAgICAgICAgaWYgQ2Fub25pY2FsaXplLm1haW4oTmFtZXNwYWNlKAorICAgICAgICAgICAgICAg
IGlkZW50aWZpZXI9VHJ1ZSwgcmVtb3RlPWNscy5SRU1PVEUsIG51bWJlcj1sZW4oY29tbWl0cyks
CisgICAgICAgICAgICApLCByZXBvc2l0b3J5LCBpZGVudGlmaWVyX3RlbXBsYXRlPWlkZW50aWZp
ZXJfdGVtcGxhdGUpOgorICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoIkZhaWxlZCB0
byBlbWJlZCBpZGVudGlmaWVycyB0byAne30nXG4iLmZvcm1hdCh0YXJnZXQpKQorICAgICAgICAg
ICAgICAgIHJldHVybiAxCisgICAgICAgICAgICBpZiBydW4oW3JlcG9zaXRvcnkuZXhlY3V0YWJs
ZSgpLCAnYnJhbmNoJywgJy1mJywgc291cmNlLCB0YXJnZXRdLCBjd2Q9cmVwb3NpdG9yeS5yb290
X3BhdGgpLnJldHVybmNvZGU6CisgICAgICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgiRmFp
bGVkIHRvIG1vdmUgJ3t9JyByZWYgdG8gdGhlIGNhbm9uaWNhbGl6ZWQgaGVhZCBvZiAne30nXG4i
LmZvcm1hdChzb3VyY2UsIHRhcmdldCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xCisKKyAg
ICAgICAgaWYgY2Fub25pY2FsX3N2bjoKKyAgICAgICAgICAgIGlmIHJ1bihbcmVwb3NpdG9yeS5l
eGVjdXRhYmxlKCksICdzdm4nLCAnZmV0Y2gnXSwgY3dkPXJlcG9zaXRvcnkucm9vdF9wYXRoKS5y
ZXR1cm5jb2RlOgorICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoIkZhaWxlZCB0byB1
cGRhdGUgc3VidmVyc2lvbiByZWZzXG4iLmZvcm1hdCh0YXJnZXQpKQorICAgICAgICAgICAgICAg
IHJldHVybiAxCisgICAgICAgICAgICBpZiBydW4oW3JlcG9zaXRvcnkuZXhlY3V0YWJsZSgpLCAn
c3ZuJywgJ2Rjb21taXQnXSwgY3dkPXJlcG9zaXRvcnkucm9vdF9wYXRoKS5yZXR1cm5jb2RlOgor
ICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoIkZhaWxlZCB0byBjb21taXQgJ3t9JyB0
byBTdWJ2ZXJzaW9uIHJlbW90ZVxuIi5mb3JtYXQodGFyZ2V0KSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gMQorICAgICAgICAgICAgcnVuKFtyZXBvc2l0b3J5LmV4ZWN1dGFibGUoKSwgJ3Jlc2V0
JywgJ0hFQUR+e30nLmZvcm1hdChsZW4oY29tbWl0cykpLCAnLS1oYXJkJ10sIGN3ZD1yZXBvc2l0
b3J5LnJvb3RfcGF0aCkKKworICAgICAgICAgICAgIyBWZXJpZnkgdGhlIG1pcnJvciBwcm9jZXNz
ZWQgb3VyIGNoYW5nZQorICAgICAgICAgICAgc3RhcnRlZCA9IHRpbWUudGltZSgpCisgICAgICAg
ICAgICBvcmlnaW5hbCA9IHJlcG9zaXRvcnkuY29tbWl0KGJyYW5jaD10YXJnZXQsIGluY2x1ZGVf
bG9nPUZhbHNlLCBpbmNsdWRlX2lkZW50aWZpZXI9RmFsc2UpCisgICAgICAgICAgICBsYXRlc3Qg
PSBvcmlnaW5hbAorICAgICAgICAgICAgd2hpbGUgb3JpZ2luYWwuaGFzaCA9PSBsYXRlc3QuaGFz
aDoKKyAgICAgICAgICAgICAgICBpZiB0aW1lLnRpbWUoKSAtIHN0YXJ0ZWQgPiBjbHMuTUlSUk9S
X1RJTUVPVVQ6CisgICAgICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoIlRpbWVkIG91
dCB3YWl0aW5nIGZvciB0aGUgZ2l0LXN2biBtaXJyb3IsICd7fScgbGFuZGVkIGJ1dCBub3QgY2xv
c2VkXG4iLmZvcm1hdChwdWxsX3JlcXVlc3Qgb3IgcmVwb3NpdG9yeS5icmFuY2gpKQorICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gMQorICAgICAgICAgICAgICAgIGxvZy53YXJuaW5nKCcgICAg
VmVyaWZ5aW5nIG1pcnJvciBwcm9jZXNzZXNlZCBjaGFuZ2UnKQorICAgICAgICAgICAgICAgIHRp
bWUuc2xlZXAoNSkKKyAgICAgICAgICAgICAgICBydW4oW3JlcG9zaXRvcnkuZXhlY3V0YWJsZSgp
LCAncHVsbCddLCBjd2Q9cmVwb3NpdG9yeS5yb290X3BhdGgpCisgICAgICAgICAgICAgICAgb3Jp
Z2luYWwgPSByZXBvc2l0b3J5LmNvbW1pdChicmFuY2g9dGFyZ2V0LCBpbmNsdWRlX2xvZz1GYWxz
ZSwgaW5jbHVkZV9pZGVudGlmaWVyPUZhbHNlKQorCisgICAgICAgIGVsc2U6CisgICAgICAgICAg
ICBpZiBydW4oW3JlcG9zaXRvcnkuZXhlY3V0YWJsZSgpLCAncHVzaCcsIGNscy5SRU1PVEUsIHRh
cmdldF0sIGN3ZD1yZXBvc2l0b3J5LnJvb3RfcGF0aCkucmV0dXJuY29kZToKKyAgICAgICAgICAg
ICAgICBzeXMuc3RkZXJyLndyaXRlKCJGYWlsZWQgdG8gcHVzaCAne30nIHRvICd7fSdcbiIuZm9y
bWF0KHRhcmdldCwgY2xzLlJFTU9URSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIDEKKworICAg
ICAgICBjb21taXQgPSByZXBvc2l0b3J5LmNvbW1pdChicmFuY2g9dGFyZ2V0LCBpbmNsdWRlX2xv
Zz1GYWxzZSkKKyAgICAgICAgaWYgaWRlbnRpZmllcl90ZW1wbGF0ZSBhbmQgY29tbWl0LmlkZW50
aWZpZXI6CisgICAgICAgICAgICBsYW5kX21lc3NhZ2UgPSAnTGFuZGVkIHt9ICh7fSkhJy5mb3Jt
YXQoaWRlbnRpZmllcl90ZW1wbGF0ZS5mb3JtYXQoY29tbWl0KS5zcGxpdCgnOiAnKVstMV0sIGNv
bW1pdC5oYXNoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbGFuZF9tZXNzYWdlID0gJ0xh
bmRlZCB7fSEnLmZvcm1hdChjb21taXQuaGFzaCkKKyAgICAgICAgcHJpbnQobGFuZF9tZXNzYWdl
KQorCisgICAgICAgIGlmIHB1bGxfcmVxdWVzdDoKKyAgICAgICAgICAgIHB1bGxfcmVxdWVzdC5j
b21tZW50KGxhbmRfbWVzc2FnZSkKKyAgICAgICAgICAgIHB1bGxfcmVxdWVzdC5jbG9zZSgpCisK
KyAgICAgICAgcmV0dXJuIDAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dl
YmtpdHNjbXB5L3dlYmtpdHNjbXB5L3NjbV9iYXNlLnB5IGIvVG9vbHMvU2NyaXB0cy9saWJyYXJp
ZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvc2NtX2Jhc2UucHkKaW5kZXggZTMzOWZmOGZjZDI3
OTQ5NTA1NzNmYmVjZTM0OTMyZDQ2YjI3YWExMy4uYjU4ZjJlNTRkOTEzMGU0YmU5ZTJlMTM1OTk1
ODA3MWIyOTBjOGRjYyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0
c2NtcHkvd2Via2l0c2NtcHkvc2NtX2Jhc2UucHkKKysrIGIvVG9vbHMvU2NyaXB0cy9saWJyYXJp
ZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvc2NtX2Jhc2UucHkKQEAgLTI0LDcgKzI0LDkgQEAg
aW1wb3J0IGxvZ2dpbmcKIGltcG9ydCByZQogaW1wb3J0IHNpeAogaW1wb3J0IHN5cworaW1wb3J0
IHRpbWUKIAorZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUKIGZyb20gbG9nZ2luZyBpbXBv
cnQgTnVsbEhhbmRsZXIKIGZyb20gd2Via2l0c2NtcHkgaW1wb3J0IENvbW1pdCwgQ29udHJpYnV0
b3IsIGxvZwogCkBAIC00MCw2ICs0MiwxNCBAQCBjbGFzcyBTY21CYXNlKG9iamVjdCk6CiAgICAg
R0lUX1NWTl9SRVZJU0lPTiA9IHJlLmNvbXBpbGUocideZ2l0LXN2bi1pZDogXFMrOlwvXC8uK0Ao
P1A8cmV2aXNpb24+XGQrKSAuKy0uKy0uKy0uKycsIGZsYWdzPXJlLk1VTFRJTElORSkKICAgICBE
RUZBVUxUX0JSQU5DSEVTID0gWydtYWluJywgJ21hc3RlcicsICd0cnVuayddCiAKKyAgICBAY2xh
c3NtZXRob2QKKyAgICBkZWYgZ210b2Zmc2V0KGNscyk6CisgICAgICAgIGlmIHN5cy52ZXJzaW9u
X2luZm8gPj0gKDMsIDApOgorICAgICAgICAgICAgcmV0dXJuIGludCh0aW1lLmxvY2FsdGltZSgp
LnRtX2dtdG9mZiAqIDEwMCAvICg2MCAqIDYwKSkKKworICAgICAgICB0cyA9IHRpbWUudGltZSgp
CisgICAgICAgIHJldHVybiBpbnQoKGRhdGV0aW1lLmZyb210aW1lc3RhbXAodHMpIC0gZGF0ZXRp
bWUudXRjZnJvbXRpbWVzdGFtcCh0cykpLnRvdGFsX3NlY29uZHMoKSAqIDEwMCAvICg2MCAqIDYw
KSkKKwogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkZXZfYnJhbmNoZXM9Tm9uZSwgcHJvZF9icmFu
Y2hlcz1Ob25lLCBjb250cmlidXRvcnM9Tm9uZSwgaWQ9Tm9uZSk6CiAgICAgICAgIHNlbGYuZGV2
X2JyYW5jaGVzID0gZGV2X2JyYW5jaGVzIG9yIHNlbGYuREVWX0JSQU5DSEVTCiAgICAgICAgIHNl
bGYucHJvZF9icmFuY2hlcyA9IHByb2RfYnJhbmNoZXMgb3Igc2VsZi5QUk9EX0JSQU5DSEVTCmRp
ZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21w
eS90ZXN0L2dpdF91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNj
bXB5L3dlYmtpdHNjbXB5L3Rlc3QvZ2l0X3VuaXR0ZXN0LnB5CmluZGV4IDZlNDEwZjZkMzM1MTM3
NTRmODFlN2YyNzUwNzMyMzBiYzlmOTFkY2EuLjkyMzVjMGE2ZTA5ZTU5ZDU0NzdjMjQyNDY0NjQw
YWQ3MDU3ODEwY2MgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNj
bXB5L3dlYmtpdHNjbXB5L3Rlc3QvZ2l0X3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMv
bGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Rlc3QvZ2l0X3VuaXR0ZXN0LnB5CkBA
IC0yOTYsNyArMjk2LDYgQEAgY2xhc3MgVGVzdEdpdCh0ZXN0aW5nLlBhdGhUZXN0Q2FzZSk6CiAg
ICAgICAgICAgICAgICAgICAgIGdpdC5jb21taXQoaGFzaD0nYmFlNWQxZTknKSwKICAgICAgICAg
ICAgICAgICAgICAgZ2l0LmNvbW1pdChoYXNoPScxYWJlMjViNCcpLAogICAgICAgICAgICAgICAg
ICAgICBnaXQuY29tbWl0KGhhc2g9J2ZmZjgzYmIyJyksCi0gICAgICAgICAgICAgICAgICAgIGdp
dC5jb21taXQoaGFzaD0nOWI4MzExZjInKSwKICAgICAgICAgICAgICAgICBdKSwgQ29tbWl0LkVu
Y29kZXIoKS5kZWZhdWx0KGxpc3QoZ2l0LmNvbW1pdHMoYmVnaW49ZGljdChoYXNoPSc5YjgzMTFm
MicpLCBlbmQ9ZGljdChoYXNoPSdiYWU1ZDFlOScpKSkpKQogCiAgICAgZGVmIHRlc3RfY29tbWl0
c19icmFuY2goc2VsZik6CkBAIC0zMDcsNyArMzA2LDYgQEAgY2xhc3MgVGVzdEdpdCh0ZXN0aW5n
LlBhdGhUZXN0Q2FzZSk6CiAgICAgICAgICAgICAgICAgICAgIGdpdC5jb21taXQoaGFzaD0nNjIx
NjUyYWQnKSwKICAgICAgICAgICAgICAgICAgICAgZ2l0LmNvbW1pdChoYXNoPSdhMzBjZTg0OScp
LAogICAgICAgICAgICAgICAgICAgICBnaXQuY29tbWl0KGhhc2g9J2ZmZjgzYmIyJyksCi0gICAg
ICAgICAgICAgICAgICAgIGdpdC5jb21taXQoaGFzaD0nOWI4MzExZjInKSwKICAgICAgICAgICAg
ICAgICBdKSwgQ29tbWl0LkVuY29kZXIoKS5kZWZhdWx0KGxpc3QoZ2l0LmNvbW1pdHMoYmVnaW49
ZGljdChhcmd1bWVudD0nOWI4MzExZjInKSwgZW5kPWRpY3QoYXJndW1lbnQ9JzYyMTY1MmFkJykp
KSkpCiAKICAgICBkZWYgdGVzdF9sb2coc2VsZik6CkBAIC0zMzMsMTUgKzMzMSw2IEBAIENvbW1p
dERhdGU6IHt0aW1lX2F9CiAKICAgICA4dGggY29tbWl0CiAgICAgZ2l0LXN2bi1pZDogaHR0cHM6
Ly9zdm4uZXhhbXBsZS5vcmcvcmVwb3NpdG9yeS9yZXBvc2l0b3J5L3RydW5rQDggMjY4ZjQ1Y2Mt
Y2QwOS0wNDEwLWFiM2MtZDUyNjkxYjRkYmZjCi0KLWNvbW1pdCAxYWJlMjViNDQzZTk4NWY5M2I5
MGQ4MzBlNGE3ZTM3MzEzMzZhZjRkCi1BdXRob3I6ICAgICBKb25hdGhhbiBCZWRhcmQgPGpiZWRh
cmRAYXBwbGUuY29tPgotQXV0aG9yRGF0ZToge3RpbWVfYn0KLUNvbW1pdDogICAgIEpvbmF0aGFu
IEJlZGFyZCA8amJlZGFyZEBhcHBsZS5jb20+Ci1Db21taXREYXRlOiB7dGltZV9ifQotCi0gICAg
NHRoIGNvbW1pdAotICAgIGdpdC1zdm4taWQ6IGh0dHBzOi8vc3ZuLmV4YW1wbGUub3JnL3JlcG9z
aXRvcnkvcmVwb3NpdG9yeS90cnVua0A0IDI2OGY0NWNjLWNkMDktMDQxMC1hYjNjLWQ1MjY5MWI0
ZGJmYwogJycnLmZvcm1hdCgKICAgICAgICAgICAgICAgICB0aW1lX2E9ZGF0ZXRpbWUudXRjZnJv
bXRpbWVzdGFtcCgxNjAxNjY4MDAwICsgdGltZS50aW1lem9uZSkuc3RyZnRpbWUoJyVhICViICVk
ICVIOiVNOiVTICVZICswMDAwJyksCiAgICAgICAgICAgICAgICAgdGltZV9iPWRhdGV0aW1lLnV0
Y2Zyb210aW1lc3RhbXAoMTYwMTY2MzAwMCArIHRpbWUudGltZXpvbmUpLnN0cmZ0aW1lKCclYSAl
YiAlZCAlSDolTTolUyAlWSArMDAwMCcpLApAQCAtMzcyLDE1ICszNjEsNiBAQCBDb21taXREYXRl
OiB7dGltZV9ifQogICAgICAgICBDaGVycnkgcGljawogICAgICAgICBnaXQtc3ZuLWlkOiBodHRw
czovL3N2bi53ZWJraXQub3JnL3JlcG9zaXRvcnkvd2Via2l0L3RydW5rQDYgMjY4ZjQ1Y2MtY2Qw
OS0wNDEwLWFiM2MtZDUyNjkxYjRkYmZjCiAgICAgZ2l0LXN2bi1pZDogaHR0cHM6Ly9zdm4uZXhh
bXBsZS5vcmcvcmVwb3NpdG9yeS9yZXBvc2l0b3J5L3RydW5rQDUgMjY4ZjQ1Y2MtY2QwOS0wNDEw
LWFiM2MtZDUyNjkxYjRkYmZjCi0KLWNvbW1pdCBhMzBjZTg0OTRiZjFhYzI4MDdhNjk4NDRmNzI2
YmU0YTk4NDNjYTU1Ci1BdXRob3I6ICAgICBKb25hdGhhbiBCZWRhcmQgPGpiZWRhcmRAYXBwbGUu
Y29tPgotQXV0aG9yRGF0ZToge3RpbWVfY30KLUNvbW1pdDogICAgIEpvbmF0aGFuIEJlZGFyZCA8
amJlZGFyZEBhcHBsZS5jb20+Ci1Db21taXREYXRlOiB7dGltZV9jfQotCi0gICAgM3JkIGNvbW1p
dAotICAgIGdpdC1zdm4taWQ6IGh0dHBzOi8vc3ZuLmV4YW1wbGUub3JnL3JlcG9zaXRvcnkvcmVw
b3NpdG9yeS90cnVua0AzIDI2OGY0NWNjLWNkMDktMDQxMC1hYjNjLWQ1MjY5MWI0ZGJmYwogJycn
LmZvcm1hdCgKICAgICAgICAgICAgICAgICB0aW1lX2E9ZGF0ZXRpbWUudXRjZnJvbXRpbWVzdGFt
cCgxNjAxNjY3MDAwICsgdGltZS50aW1lem9uZSkuc3RyZnRpbWUoJyVhICViICVkICVIOiVNOiVT
ICVZICswMDAwJyksCiAgICAgICAgICAgICAgICAgdGltZV9iPWRhdGV0aW1lLnV0Y2Zyb210aW1l
c3RhbXAoMTYwMTY2NDAwMCArIHRpbWUudGltZXpvbmUpLnN0cmZ0aW1lKCclYSAlYiAlZCAlSDol
TTolUyAlWSArMDAwMCcpLApAQCAtNDc3LDEyICs0NTcsMjggQEAgQ29tbWl0RGF0ZToge3RpbWVf
Y30KICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwby5tb2RpZmllZChzdGFnZWQ9VHJ1
ZSksIFsnYWRkZWQudHh0JywgJ21vZGlmaWVkLnR4dCddKQogCiAgICAgZGVmIHRlc3RfcmViYXNl
KHNlbGYpOgotICAgICAgICB3aXRoIG1vY2tzLmxvY2FsLkdpdChzZWxmLnBhdGgpOgorICAgICAg
ICB3aXRoIG1vY2tzLmxvY2FsLkdpdChzZWxmLnBhdGgpLCBPdXRwdXRDYXB0dXJlKCk6CiAgICAg
ICAgICAgICByZXBvID0gbG9jYWwuR2l0KHNlbGYucGF0aCkKICAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoc3RyKHJlcG8uY29tbWl0KGJyYW5jaD0nYnJhbmNoLWEnKSksICcyLjJAYnJhbmNo
LWEnKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXBvLnJlYmFzZSh0YXJnZXQ9J21h
aW4nLCBiYXNlPSdtYWluJywgaGVhZD0nYnJhbmNoLWEnLCByZWNvbW1pdD1GYWxzZSksIDApCiAg
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihyZXBvLmNvbW1pdChicmFuY2g9J2JyYW5j
aC1hJykpLCAnNS4yQGJyYW5jaC1hJykKIAorICAgIGRlZiB0ZXN0X2RpZmZfbGluZXMoc2VsZik6
CisgICAgICAgIHdpdGggbW9ja3MubG9jYWwuR2l0KHNlbGYucGF0aCksIE91dHB1dENhcHR1cmUo
KToKKyAgICAgICAgICAgIHJlcG8gPSBsb2NhbC5HaXQoc2VsZi5wYXRoKQorICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBbJy0tLSBhL0NoYW5nZUxvZycsICcr
KysgYi9DaGFuZ2VMb2cnLCAnQEAgLTEsMCArMSwwIEBAJywgJysgUGF0Y2ggU2VyaWVzJ10sCisg
ICAgICAgICAgICAgICAgbGlzdChyZXBvLmRpZmZfbGluZXMoYmFzZT0nYmFlNWQxZTkwOTk5ZDRm
OTE2YThhMTU4MTBjY2ZhNDNmMzdhMmZkNicpKQorICAgICAgICAgICAgKQorCisgICAgZGVmIHRl
c3RfZGlmZl9saW5lc19pZGVudGlmaWVyKHNlbGYpOgorICAgICAgICB3aXRoIG1vY2tzLmxvY2Fs
LkdpdChzZWxmLnBhdGgpLCBPdXRwdXRDYXB0dXJlKCk6CisgICAgICAgICAgICByZXBvID0gbG9j
YWwuR2l0KHNlbGYucGF0aCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAg
ICAgICAgICAgWyctLS0gYS9DaGFuZ2VMb2cnLCAnKysrIGIvQ2hhbmdlTG9nJywgJ0BAIC0xLDAg
KzEsMCBAQCcsICcrIDh0aCBjb21taXQnXSwKKyAgICAgICAgICAgICAgICBsaXN0KHJlcG8uZGlm
Zl9saW5lcyhiYXNlPSczQG1haW4nLCBoZWFkPSc0QG1haW4nKSkKKyAgICAgICAgICAgICkKKwog
CiBjbGFzcyBUZXN0R2l0SHViKHRlc3RpbmcuVGVzdENhc2UpOgogICAgIHJlbW90ZSA9ICdodHRw
czovL2dpdGh1Yi5leGFtcGxlLmNvbS9XZWJLaXQvV2ViS2l0JwpkaWZmIC0tZ2l0IGEvVG9vbHMv
U2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvdGVzdC9sYW5kX3VuaXR0
ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkv
dGVzdC9sYW5kX3VuaXR0ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJhNWFmNDZlNThlNGUxMWMzNTJiY2Ey
MzlmMTA3ZjM1YTJjYTJlNmYKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL2xpYnJh
cmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS90ZXN0L2xhbmRfdW5pdHRlc3QucHkKQEAgLTAs
MCArMSw0MTIgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyMgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorIyBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUworIyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisjIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgor
IyBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworIyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0
IG9zCitpbXBvcnQgdGltZQorCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgT3V0cHV0Q2FwdHVy
ZSwgdGVzdGluZworZnJvbSB3ZWJraXRjb3JlcHkubW9ja3MgaW1wb3J0IFRlcm1pbmFsIGFzIE1v
Y2tUZXJtaW5hbAorZnJvbSB3ZWJraXRzY21weSBpbXBvcnQgQ29udHJpYnV0b3IsIENvbW1pdCwg
bG9jYWwsIHByb2dyYW0sIG1vY2tzCisKKworZGVmIHJlcG9zaXRvcnkocGF0aCwgaGFzX29vcHM9
VHJ1ZSwgcmVtb3RlPU5vbmUpOgorICAgIGJyYW5jaCA9ICdlbmcvZXhhbXBsZScKKyAgICByZXN1
bHQgPSBtb2Nrcy5sb2NhbC5HaXQocGF0aCwgcmVtb3RlPXJlbW90ZSkKKyAgICByZXN1bHQuY29t
bWl0c1ticmFuY2hdID0gW0NvbW1pdCgKKyAgICAgICAgaGFzaD0nYTVmZThhZmU5YmY3ZDA3MTU4
ZmNkOWU5NzMyZmYwMmE3MTJkYjJmZCcsCisgICAgICAgIGlkZW50aWZpZXI9JzMuMUB7fScuZm9y
bWF0KGJyYW5jaCksCisgICAgICAgIHRpbWVzdGFtcD1pbnQodGltZS50aW1lKCkpIC0gNjAsCisg
ICAgICAgIGF1dGhvcj1Db250cmlidXRvcignVGltIENvbW1pdHRlcicsIFsndGNvbW1pdHRlckB3
ZWJraXQub3JnJ10pLAorICAgICAgICBtZXNzYWdlPSdUbyBCZSBDb21taXR0ZWRcblxuUmV2aWV3
ZWQgYnkge30uXG4nLmZvcm1hdCgKKyAgICAgICAgICAgICdOT0JPRFkgKE9PUFMhKScgaWYgaGFz
X29vcHMgZWxzZSAnUmlja3kgUmV2aWV3ZXInLAorICAgICAgICApLAorICAgICldCisgICAgcmVz
dWx0LmhlYWQgPSByZXN1bHQuY29tbWl0c1ticmFuY2hdWzBdCisgICAgcmV0dXJuIHJlc3VsdAor
CisKK2NsYXNzIFRlc3RMYW5kKHRlc3RpbmcuUGF0aFRlc3RDYXNlKToKKyAgICBiYXNlcGF0aCA9
ICdtb2NrL3JlcG9zaXRvcnknCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHN1cGVy
KFRlc3RMYW5kLCBzZWxmKS5zZXRVcCgpCisgICAgICAgIG9zLm1rZGlyKG9zLnBhdGguam9pbihz
ZWxmLnBhdGgsICcuZ2l0JykpCisgICAgICAgIG9zLm1rZGlyKG9zLnBhdGguam9pbihzZWxmLnBh
dGgsICcuc3ZuJykpCisKKyAgICBkZWYgdGVzdF9ub25fZWRpdGFibGUoc2VsZik6CisgICAgICAg
IHdpdGggT3V0cHV0Q2FwdHVyZSgpIGFzIGNhcHR1cmVkLCBtb2Nrcy5sb2NhbC5HaXQoc2VsZi5w
YXRoKSwgbW9ja3MubG9jYWwuU3ZuKCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEs
IHByb2dyYW0ubWFpbigKKyAgICAgICAgICAgICAgICBhcmdzPSgnbGFuZCcsKSwKKyAgICAgICAg
ICAgICAgICBwYXRoPXNlbGYucGF0aCwKKyAgICAgICAgICAgICkpCisgICAgICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHN0cihsb2NhbC5HaXQoc2VsZi5wYXRoKS5jb21taXQoKSksICc1QG1haW4n
KQorCisgICAgICAgIGxvZyA9IGNhcHR1cmVkLnJvb3QubG9nLmdldHZhbHVlKCkuc3BsaXRsaW5l
cygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW2xpbmUgZm9yIGxpbmUgaW4gbG9nIGlmICdN
b2NrIHByb2Nlc3MnIG5vdCBpbiBsaW5lXSwgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
CisgICAgICAgICAgICBjYXB0dXJlZC5zdGRlcnIuZ2V0dmFsdWUoKSwKKyAgICAgICAgICAgICJD
YW4gb25seSAnbGFuZCcgZWRpdGFibGUgYnJhbmNoZXNcbiIsCisgICAgICAgICkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChjYXB0dXJlZC5zdGRvdXQuZ2V0dmFsdWUoKSwgJycpCisKKyAgICBk
ZWYgdGVzdF93aXRoX29vcHMoc2VsZik6CisgICAgICAgIHdpdGggT3V0cHV0Q2FwdHVyZSgpIGFz
IGNhcHR1cmVkLCByZXBvc2l0b3J5KHNlbGYucGF0aCksIG1vY2tzLmxvY2FsLlN2bigpOgorICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBwcm9ncmFtLm1haW4oCisgICAgICAgICAgICAg
ICAgYXJncz0oJ2xhbmQnLCksCisgICAgICAgICAgICAgICAgcGF0aD1zZWxmLnBhdGgsCisgICAg
ICAgICAgICApKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIobG9jYWwuR2l0KHNl
bGYucGF0aCkuY29tbWl0KCkpLCAnMy4xQGVuZy9leGFtcGxlJykKKworICAgICAgICBsb2cgPSBj
YXB0dXJlZC5yb290LmxvZy5nZXR2YWx1ZSgpLnNwbGl0bGluZXMoKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKAorICAgICAgICAgICAgW2xpbmUgZm9yIGxpbmUgaW4gbG9nIGlmICdNb2NrIHBy
b2Nlc3MnIG5vdCBpbiBsaW5lXSwgWworICAgICAgICAgICAgICAgICcgICAgRm91bmQgMSBjb21t
aXQuLi4nLAorICAgICAgICAgICAgXSwKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKAorICAgICAgICAgICAgY2FwdHVyZWQuc3RkZXJyLmdldHZhbHVlKCksCisgICAgICAgICAg
ICAiRmFpbGVkIHRvIGZpbmQgcHVsbC1yZXF1ZXN0IGFzc29jaWF0ZWQgd2l0aCAnZW5nL2V4YW1w
bGUnXG4iCisgICAgICAgICAgICAiRm91bmQgJyhPT1BTISknIG1lc3NhZ2UgaW4gY29tbWl0IG1l
c3NhZ2VzLCBwbGVhc2UgcmVzb2x2ZSBiZWZvcmUgY29tbWl0dGluZ1xuIiwKKyAgICAgICAgKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhcHR1cmVkLnN0ZG91dC5nZXR2YWx1ZSgpLCAnJykK
KworICAgIGRlZiB0ZXN0X2RlZmF1bHQoc2VsZik6CisgICAgICAgIHdpdGggT3V0cHV0Q2FwdHVy
ZSgpIGFzIGNhcHR1cmVkLCByZXBvc2l0b3J5KHNlbGYucGF0aCwgaGFzX29vcHM9RmFsc2UpLCBt
b2Nrcy5sb2NhbC5Tdm4oKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcHJvZ3Jh
bS5tYWluKAorICAgICAgICAgICAgICAgIGFyZ3M9KCdsYW5kJywpLAorICAgICAgICAgICAgICAg
IHBhdGg9c2VsZi5wYXRoLAorICAgICAgICAgICAgKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoc3RyKGxvY2FsLkdpdChzZWxmLnBhdGgpLmNvbW1pdCgpKSwgJzZAbWFpbicpCisKKyAg
ICAgICAgbG9nID0gY2FwdHVyZWQucm9vdC5sb2cuZ2V0dmFsdWUoKS5zcGxpdGxpbmVzKCkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIFtsaW5lIGZvciBsaW5lIGluIGxv
ZyBpZiAnTW9jayBwcm9jZXNzJyBub3QgaW4gbGluZV0sIFsKKyAgICAgICAgICAgICAgICAnICAg
IEZvdW5kIDEgY29tbWl0Li4uJywKKyAgICAgICAgICAgICAgICAiUmViYXNpbmcgJ2VuZy9leGFt
cGxlJyBmcm9tICdtYWluJyB0byAnbWFpbicuLi4iLAorICAgICAgICAgICAgICAgICJSZWJhc2Vk
ICdlbmcvZXhhbXBsZScgZnJvbSAnbWFpbicgdG8gJ21haW4nISIsCisgICAgICAgICAgICBdLAor
ICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBjYXB0dXJl
ZC5zdGRlcnIuZ2V0dmFsdWUoKSwKKyAgICAgICAgICAgICJGYWlsZWQgdG8gZmluZCBwdWxsLXJl
cXVlc3QgYXNzb2NpYXRlZCB3aXRoICdlbmcvZXhhbXBsZSdcbiIsCisgICAgICAgICkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChjYXB0dXJlZC5zdGRvdXQuZ2V0dmFsdWUoKSwgJ0xhbmRlZCBh
NWZlOGFmZTliZjdkMDcxNThmY2Q5ZTk3MzJmZjAyYTcxMmRiMmZkIVxuJykKKworICAgIGRlZiB0
ZXN0X2Nhbm9uaWNhbGl6ZShzZWxmKToKKyAgICAgICAgd2l0aCBPdXRwdXRDYXB0dXJlKCkgYXMg
Y2FwdHVyZWQsIHJlcG9zaXRvcnkoc2VsZi5wYXRoLCBoYXNfb29wcz1GYWxzZSksIG1vY2tzLmxv
Y2FsLlN2bigpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBwcm9ncmFtLm1haW4o
CisgICAgICAgICAgICAgICAgYXJncz0oJ2xhbmQnLCksCisgICAgICAgICAgICAgICAgcGF0aD1z
ZWxmLnBhdGgsCisgICAgICAgICAgICAgICAgaWRlbnRpZmllcl90ZW1wbGF0ZT0nQ2Fub25pY2Fs
IGxpbms6IGh0dHBzOi8vY29tbWl0cy53ZWJraXQub3JnL3t9JywKKyAgICAgICAgICAgICkpCisK
KyAgICAgICAgICAgIGNvbW1pdCA9IGxvY2FsLkdpdChzZWxmLnBhdGgpLmNvbW1pdChicmFuY2g9
J21haW4nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoY29tbWl0KSwgJzZAbWFp
bicpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIGNvbW1p
dC5tZXNzYWdlLAorICAgICAgICAgICAgICAgICdUbyBCZSBDb21taXR0ZWRcblxuJworICAgICAg
ICAgICAgICAgICdSZXZpZXdlZCBieSBSaWNreSBSZXZpZXdlci5cblxuJworICAgICAgICAgICAg
ICAgICdDYW5vbmljYWwgbGluazogaHR0cHM6Ly9jb21taXRzLndlYmtpdC5vcmcvNkBtYWluJywK
KyAgICAgICAgICAgICkKKworICAgICAgICBsb2cgPSBjYXB0dXJlZC5yb290LmxvZy5nZXR2YWx1
ZSgpLnNwbGl0bGluZXMoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAg
W2xpbmUgZm9yIGxpbmUgaW4gbG9nIGlmICdNb2NrIHByb2Nlc3MnIG5vdCBpbiBsaW5lXSwgWwor
ICAgICAgICAgICAgICAgICcgICAgRm91bmQgMSBjb21taXQuLi4nLAorICAgICAgICAgICAgICAg
ICJSZWJhc2luZyAnZW5nL2V4YW1wbGUnIGZyb20gJ21haW4nIHRvICdtYWluJy4uLiIsCisgICAg
ICAgICAgICAgICAgIlJlYmFzZWQgJ2VuZy9leGFtcGxlJyBmcm9tICdtYWluJyB0byAnbWFpbich
IiwKKyAgICAgICAgICAgICAgICAnMSBjb21taXQgdG8gYmUgZWRpdHRlZC4uLicsCisgICAgICAg
ICAgICBdLAorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAg
ICBjYXB0dXJlZC5zdGRlcnIuZ2V0dmFsdWUoKSwKKyAgICAgICAgICAgICJGYWlsZWQgdG8gZmlu
ZCBwdWxsLXJlcXVlc3QgYXNzb2NpYXRlZCB3aXRoICdlbmcvZXhhbXBsZSdcbiIsCisgICAgICAg
ICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGNhcHR1cmVkLnN0ZG91
dC5nZXR2YWx1ZSgpLAorICAgICAgICAgICAgJ1Jld3JpdGUgYTVmZThhZmU5YmY3ZDA3MTU4ZmNk
OWU5NzMyZmYwMmE3MTJkYjJmZCAoMS8xKSAoLS0tIHNlY29uZHMgcGFzc2VkLCByZW1haW5pbmcg
LS0tIHByZWRpY3RlZClcbicKKyAgICAgICAgICAgICcxIGNvbW1pdCBzdWNjZXNzZnVsbHkgY2Fu
b25pY2FsaXplZCFcbicKKyAgICAgICAgICAgICdMYW5kZWQgaHR0cHM6Ly9jb21taXRzLndlYmtp
dC5vcmcvNkBtYWluIChhNWZlOGFmZTliZjdkMDcxNThmY2Q5ZTk3MzJmZjAyYTcxMmRiMmZkKSFc
bicsCisgICAgICAgICkKKworICAgIGRlZiB0ZXN0X25vX3N2bl9jYW5vbmljYWxfc3ZuKHNlbGYp
OgorICAgICAgICB3aXRoIE91dHB1dENhcHR1cmUoKSBhcyBjYXB0dXJlZCwgcmVwb3NpdG9yeShz
ZWxmLnBhdGgsIGhhc19vb3BzPUZhbHNlKSwgbW9ja3MubG9jYWwuU3ZuKCk6CisgICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKDEsIHByb2dyYW0ubWFpbigKKyAgICAgICAgICAgICAgICBhcmdz
PSgnbGFuZCcsKSwKKyAgICAgICAgICAgICAgICBwYXRoPXNlbGYucGF0aCwgY2Fub25pY2FsX3N2
bj1UcnVlLAorICAgICAgICAgICAgKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Ry
KGxvY2FsLkdpdChzZWxmLnBhdGgpLmNvbW1pdCgpKSwgJzMuMUBlbmcvZXhhbXBsZScpCisKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGNhcHR1cmVkLnN0ZGVyci5nZXR2
YWx1ZSgpLAorICAgICAgICAgICAgIkNhbm5vdCAnbGFuZCcgb24gYSBjYW5vbmljYWwgU1ZOIHJl
cG9zaXRvcnkgdGhhdCBpcyBub3QgY29uZmlndXJlZCBhcyBnaXQtc3ZuXG4iLAorICAgICAgICAp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FwdHVyZWQuc3Rkb3V0LmdldHZhbHVlKCksICcn
KQorCisKK2NsYXNzIFRlc3RMYW5kR2l0SHViKHRlc3RpbmcuUGF0aFRlc3RDYXNlKToKKyAgICBi
YXNlcGF0aCA9ICdtb2NrL3JlcG9zaXRvcnknCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAg
ICAgIHN1cGVyKFRlc3RMYW5kR2l0SHViLCBzZWxmKS5zZXRVcCgpCisgICAgICAgIG9zLm1rZGly
KG9zLnBhdGguam9pbihzZWxmLnBhdGgsICcuZ2l0JykpCisgICAgICAgIG9zLm1rZGlyKG9zLnBh
dGguam9pbihzZWxmLnBhdGgsICcuc3ZuJykpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYg
d2Vic2VydmVyKGNscywgYXBwcm92ZWQ9Tm9uZSk6CisgICAgICAgIHJlc3VsdCA9IG1vY2tzLnJl
bW90ZS5HaXRIdWIoKQorICAgICAgICByZXN1bHQudXNlcnMgPSBkaWN0KAorICAgICAgICAgICAg
cnJldmlld2VyPUNvbnRyaWJ1dG9yKCdSaWNreSBSZXZpZXdlcicsIFsncnJldmlld2VyQHdlYmtp
dC5vcmcnXSwgZ2l0aHViPSdycmV2aWV3ZXInKSwKKyAgICAgICAgICAgIHRjb250cmlidXRvcj1D
b250cmlidXRvcignVGltIENvbnRyaWJ1dG9yJywgWyd0Y29udHJpYnV0b3JAd2Via2l0Lm9yZydd
LCBnaXRodWI9J3Rjb250cmlidXRvcicpLAorICAgICAgICApCisgICAgICAgIHJlc3VsdC5pc3N1
ZXMgPSB7CisgICAgICAgICAgICAxOiBkaWN0KAorICAgICAgICAgICAgICAgIGNvbW1lbnRzPVtd
LAorICAgICAgICAgICAgICAgIGFzc2lnbmVlcz1bXSwKKyAgICAgICAgICAgICkKKyAgICAgICAg
fQorICAgICAgICByZXN1bHQucHVsbF9yZXF1ZXN0cyA9IFtkaWN0KAorICAgICAgICAgICAgbnVt
YmVyPTEsCisgICAgICAgICAgICBzdGF0ZT0nb3BlbicsCisgICAgICAgICAgICB0aXRsZT0nRXhh
bXBsZSBDaGFuZ2UnLAorICAgICAgICAgICAgdXNlcj1kaWN0KGxvZ2luPSd0Y29udHJpYnV0b3In
KSwKKyAgICAgICAgICAgIGJvZHk9JycnIyMjIyBhNWZlOGFmZTliZjdkMDcxNThmY2Q5ZTk3MzJm
ZjAyYTcxMmRiMmZkCisgICAgPHByZT4KKyAgICBUbyBCZSBDb21taXR0ZWQKKworICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgIDwvcHJlPgorICAgICcnJywKKyAgICAgICAgICAg
IGhlYWQ9ZGljdChyZWY9J3VzZXJuYW1lOmVuZy9leGFtcGxlJyksCisgICAgICAgICAgICBiYXNl
PWRpY3QocmVmPSdtYWluJyksCisgICAgICAgICAgICByZXF1ZXN0ZWRfcmV2aWV3cz1bZGljdChs
b2dpbj0ncnJldmlld2VyJyldLAorICAgICAgICAgICAgcmV2aWV3cz1bCisgICAgICAgICAgICAg
ICAgZGljdCh1c2VyPWRpY3QobG9naW49J3JyZXZpZXdlcicpLCBzdGF0ZT0nQVBQUk9WRUQnKQor
ICAgICAgICAgICAgXSBpZiBhcHByb3ZlZCBlbHNlIFtdICsgWworICAgICAgICAgICAgICAgIGRp
Y3QodXNlcj1kaWN0KGxvZ2luPSdycmV2aWV3ZXInKSwgc3RhdGU9J0NIQU5HRVNfUkVRVUVTVEVE
JykKKyAgICAgICAgICAgIF0gaWYgYXBwcm92ZWQgaXMgbm90IE5vbmUgZWxzZSBbXSwgX2xpbmtz
PWRpY3QoCisgICAgICAgICAgICAgICAgaXNzdWU9ZGljdChocmVmPSdodHRwczovL3t9L2lzc3Vl
cy8xJy5mb3JtYXQocmVzdWx0LmFwaV9yZW1vdGUpKSwKKyAgICAgICAgICAgICksCisgICAgICAg
ICldCisgICAgICAgIHJldHVybiByZXN1bHQKKworICAgIGRlZiB0ZXN0X25vX3Jldmlld2VyKHNl
bGYpOgorICAgICAgICB3aXRoIE91dHB1dENhcHR1cmUoKSBhcyBjYXB0dXJlZCwgc2VsZi53ZWJz
ZXJ2ZXIoKSBhcyByZW1vdGUsIFwKKyAgICAgICAgICAgICAgICByZXBvc2l0b3J5KHNlbGYucGF0
aCwgcmVtb3RlPSdodHRwczovL3t9Jy5mb3JtYXQocmVtb3RlLnJlbW90ZSkpLCBtb2Nrcy5sb2Nh
bC5Tdm4oKToKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBwcm9ncmFtLm1haW4o
CisgICAgICAgICAgICAgICAgYXJncz0oJ2xhbmQnLCksCisgICAgICAgICAgICAgICAgcGF0aD1z
ZWxmLnBhdGgsCisgICAgICAgICAgICApKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChz
dHIobG9jYWwuR2l0KHNlbGYucGF0aCkuY29tbWl0KCkpLCAnMy4xQGVuZy9leGFtcGxlJykKKwor
ICAgICAgICBsb2cgPSBjYXB0dXJlZC5yb290LmxvZy5nZXR2YWx1ZSgpLnNwbGl0bGluZXMoKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgW2xpbmUgZm9yIGxpbmUgaW4g
bG9nIGlmICdNb2NrIHByb2Nlc3MnIG5vdCBpbiBsaW5lXSwgWworICAgICAgICAgICAgICAgICcg
ICAgRm91bmQgMSBjb21taXQuLi4nLAorICAgICAgICAgICAgXSwKKyAgICAgICAgKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgY2FwdHVyZWQuc3RkZXJyLmdldHZhbHVl
KCksCisgICAgICAgICAgICAiRm91bmQgJyhPT1BTISknIG1lc3NhZ2UgaW4gY29tbWl0IG1lc3Nh
Z2VzLCBwbGVhc2UgcmVzb2x2ZSBiZWZvcmUgY29tbWl0dGluZ1xuIiwKKyAgICAgICAgKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGNhcHR1cmVkLnN0ZG91dC5nZXR2YWx1ZSgpLCAnJykKKwor
ICAgIGRlZiB0ZXN0X2Jsb2NraW5nX3Jldmlld2VyKHNlbGYpOgorICAgICAgICB3aXRoIE91dHB1
dENhcHR1cmUoKSBhcyBjYXB0dXJlZCwgc2VsZi53ZWJzZXJ2ZXIoYXBwcm92ZWQ9RmFsc2UpIGFz
IHJlbW90ZSwgXAorICAgICAgICAgICAgICAgIHJlcG9zaXRvcnkoc2VsZi5wYXRoLCBoYXNfb29w
cz1GYWxzZSwgcmVtb3RlPSdodHRwczovL3t9Jy5mb3JtYXQocmVtb3RlLnJlbW90ZSkpLCBtb2Nr
cy5sb2NhbC5Tdm4oKToKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBwcm9ncmFt
Lm1haW4oCisgICAgICAgICAgICAgICAgYXJncz0oJ2xhbmQnLCksCisgICAgICAgICAgICAgICAg
cGF0aD1zZWxmLnBhdGgsCisgICAgICAgICAgICApKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChzdHIobG9jYWwuR2l0KHNlbGYucGF0aCkuY29tbWl0KCkpLCAnMy4xQGVuZy9leGFtcGxl
JykKKworICAgICAgICBsb2cgPSBjYXB0dXJlZC5yb290LmxvZy5nZXR2YWx1ZSgpLnNwbGl0bGlu
ZXMoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgW2xpbmUgZm9yIGxp
bmUgaW4gbG9nIGlmICdNb2NrIHByb2Nlc3MnIG5vdCBpbiBsaW5lXSwgWworICAgICAgICAgICAg
ICAgICcgICAgRm91bmQgMSBjb21taXQuLi4nLAorICAgICAgICAgICAgXSwKKyAgICAgICAgKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgY2FwdHVyZWQuc3RkZXJyLmdl
dHZhbHVlKCksCisgICAgICAgICAgICAiUmlja3kgUmV2aWV3ZXIgaXMgYmxvY2tpbmcgbGFuZGlu
ZyAnUFIgMSB8IEV4YW1wbGUgQ2hhbmdlJ1xuIiwKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGNhcHR1cmVkLnN0ZG91dC5nZXR2YWx1ZSgpLCAnJykKKworICAgIGRlZiB0ZXN0
X2luc2VydF9yZXZpZXcoc2VsZik6CisgICAgICAgIHdpdGggT3V0cHV0Q2FwdHVyZSgpIGFzIGNh
cHR1cmVkLCBNb2NrVGVybWluYWwuaW5wdXQoJ3knKSwgc2VsZi53ZWJzZXJ2ZXIoYXBwcm92ZWQ9
VHJ1ZSkgYXMgcmVtb3RlLCBcCisgICAgICAgICAgICAgICAgcmVwb3NpdG9yeShzZWxmLnBhdGgs
IGhhc19vb3BzPVRydWUsIHJlbW90ZT0naHR0cHM6Ly97fScuZm9ybWF0KHJlbW90ZS5yZW1vdGUp
KSwgbW9ja3MubG9jYWwuU3ZuKCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHBy
b2dyYW0ubWFpbigKKyAgICAgICAgICAgICAgICBhcmdzPSgnbGFuZCcsKSwKKyAgICAgICAgICAg
ICAgICBwYXRoPXNlbGYucGF0aCwKKyAgICAgICAgICAgICkpCisKKyAgICAgICAgICAgIHJlcG8g
PSBsb2NhbC5HaXQoc2VsZi5wYXRoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIo
cmVwby5jb21taXQoKSksICc2QG1haW4nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgK
KyAgICAgICAgICAgICAgICBbY29tbWVudC5jb250ZW50IGZvciBjb21tZW50IGluIHJlcG8ucmVt
b3RlKCkucHVsbF9yZXF1ZXN0cy5nZXQoMSkuY29tbWVudHNdLAorICAgICAgICAgICAgICAgIFsn
TGFuZGVkIGE1ZmU4YWZlOWJmN2QwNzE1OGZjZDllOTczMmZmMDJhNzEyZGIyZmQhJ10sCisgICAg
ICAgICAgICApCisKKyAgICAgICAgbG9nID0gY2FwdHVyZWQucm9vdC5sb2cuZ2V0dmFsdWUoKS5z
cGxpdGxpbmVzKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIFtsaW5l
IGZvciBsaW5lIGluIGxvZyBpZiAnTW9jayBwcm9jZXNzJyBub3QgaW4gbGluZV0sIFsKKyAgICAg
ICAgICAgICAgICAnICAgIEZvdW5kIDEgY29tbWl0Li4uJywKKyAgICAgICAgICAgICAgICAnU2V0
dGluZyBSaWNreSBSZXZpZXdlciBhcyByZXZpZXdlcicsCisgICAgICAgICAgICAgICAgIlJlYmFz
aW5nICdlbmcvZXhhbXBsZScgZnJvbSAnbWFpbicgdG8gJ21haW4nLi4uIiwKKyAgICAgICAgICAg
ICAgICAiUmViYXNlZCAnZW5nL2V4YW1wbGUnIGZyb20gJ21haW4nIHRvICdtYWluJyEiLAorICAg
ICAgICAgICAgXSwKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhcHR1cmVk
LnN0ZGVyci5nZXR2YWx1ZSgpLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAg
ICAgICAgIGNhcHR1cmVkLnN0ZG91dC5nZXR2YWx1ZSgpLAorICAgICAgICAgICAgIlNldCAnUmlj
a3kgUmV2aWV3ZXInIGFzIHlvdXIgcmV2aWV3ZXI/IChZZXMvTm8pOiBcbiIKKyAgICAgICAgICAg
ICdMYW5kZWQgYTVmZThhZmU5YmY3ZDA3MTU4ZmNkOWU5NzMyZmYwMmE3MTJkYjJmZCFcbicsCisg
ICAgICAgICkKKworCitjbGFzcyBUZXN0TGFuZEJpdEJ1Y2tldCh0ZXN0aW5nLlBhdGhUZXN0Q2Fz
ZSk6CisgICAgYmFzZXBhdGggPSAnbW9jay9yZXBvc2l0b3J5JworCisgICAgZGVmIHNldFVwKHNl
bGYpOgorICAgICAgICBzdXBlcihUZXN0TGFuZEJpdEJ1Y2tldCwgc2VsZikuc2V0VXAoKQorICAg
ICAgICBvcy5ta2Rpcihvcy5wYXRoLmpvaW4oc2VsZi5wYXRoLCAnLmdpdCcpKQorICAgICAgICBv
cy5ta2Rpcihvcy5wYXRoLmpvaW4oc2VsZi5wYXRoLCAnLnN2bicpKQorCisgICAgQGNsYXNzbWV0
aG9kCisgICAgZGVmIHdlYnNlcnZlcihjbHMsIGFwcHJvdmVkPU5vbmUpOgorICAgICAgICByZXN1
bHQgPSBtb2Nrcy5yZW1vdGUuQml0QnVja2V0KCkKKyAgICAgICAgcmVzdWx0LnB1bGxfcmVxdWVz
dHMgPSBbZGljdCgKKyAgICAgICAgICAgIGlkPTEsCisgICAgICAgICAgICBzdGF0ZT0nT1BFTics
CisgICAgICAgICAgICBvcGVuPVRydWUsCisgICAgICAgICAgICBjbG9zZWQ9RmFsc2UsCisgICAg
ICAgICAgICBhY3Rpdml0aWVzPVtdLAorICAgICAgICAgICAgdGl0bGU9J0V4YW1wbGUgQ2hhbmdl
JywKKyAgICAgICAgICAgIGF1dGhvcj1kaWN0KAorICAgICAgICAgICAgICAgIHVzZXI9ZGljdCgK
KyAgICAgICAgICAgICAgICAgICAgbmFtZT0ndGNvbnRyaWJ1dG9yJywKKyAgICAgICAgICAgICAg
ICAgICAgZW1haWxBZGRyZXNzPSd0Y29udHJpYnV0b3JAYXBwbGUuY29tJywKKyAgICAgICAgICAg
ICAgICAgICAgZGlzcGxheU5hbWU9J1RpbSBDb250cmlidXRvcicsCisgICAgICAgICAgICAgICAg
KSwKKyAgICAgICAgICAgICksIGJvZHk9JycnIyMjIyBhNWZlOGFmZTliZjdkMDcxNThmY2Q5ZTk3
MzJmZjAyYTcxMmRiMmZkCisgICAgYGBgCisgICAgVG8gQmUgQ29tbWl0dGVkCisKKyAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICBgYGAKKyAgICAnJycsCisgICAgICAgICAgICBm
cm9tUmVmPWRpY3QoZGlzcGxheUlkPSdlbmcvZXhhbXBsZScsIGlkPSdyZWZzL2hlYWRzL2VuZy9l
eGFtcGxlJyksCisgICAgICAgICAgICB0b1JlZj1kaWN0KGRpc3BsYXlJZD0nbWFpbicsIGlkPSdy
ZWZzL2hlYWRzL21haW4nKSwKKyAgICAgICAgICAgIHJldmlld2Vycz1bCisgICAgICAgICAgICAg
ICAgZGljdCgKKyAgICAgICAgICAgICAgICAgICAgdXNlcj1kaWN0KAorICAgICAgICAgICAgICAg
ICAgICAgICAgZGlzcGxheU5hbWU9J1JpY2t5IFJldmlld2VyJywKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGVtYWlsQWRkcmVzcz0ncnJldmlld2VyQHdlYmtpdC5vcmcnLAorICAgICAgICAgICAg
ICAgICAgICApLCBhcHByb3ZlZD1UcnVlIGlmIGFwcHJvdmVkIGVsc2UgRmFsc2UsCisgICAgICAg
ICAgICAgICAgICAgIHN0YXR1cz0nTkVFRFNfV09SSycgaWYgYXBwcm92ZWQgaXMgRmFsc2UgZWxz
ZSBOb25lLAorICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICBdLAorICAgICAgICApXQor
ICAgICAgICByZXR1cm4gcmVzdWx0CisKKyAgICBkZWYgdGVzdF9ub19yZXZpZXdlcihzZWxmKToK
KyAgICAgICAgd2l0aCBPdXRwdXRDYXB0dXJlKCkgYXMgY2FwdHVyZWQsIHNlbGYud2Vic2VydmVy
KCkgYXMgcmVtb3RlLCByZXBvc2l0b3J5KAorICAgICAgICAgICAgICAgIHNlbGYucGF0aCwgcmVt
b3RlPSdzc2g6Ly9naXRAe30ve30ve30uZ2l0Jy5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAg
IHJlbW90ZS5ob3N0c1swXSwgcmVtb3RlLnByb2plY3Quc3BsaXQoJy8nKVsxXSwgcmVtb3RlLnBy
b2plY3Quc3BsaXQoJy8nKVszXSwKKyAgICAgICAgICAgICAgICApKSwgbW9ja3MubG9jYWwuU3Zu
KCk6CisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgcHJvZ3JhbS5tYWluKAorICAg
ICAgICAgICAgICAgIGFyZ3M9KCdsYW5kJywpLAorICAgICAgICAgICAgICAgIHBhdGg9c2VsZi5w
YXRoLAorICAgICAgICAgICAgKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGxv
Y2FsLkdpdChzZWxmLnBhdGgpLmNvbW1pdCgpKSwgJzMuMUBlbmcvZXhhbXBsZScpCisKKyAgICAg
ICAgbG9nID0gY2FwdHVyZWQucm9vdC5sb2cuZ2V0dmFsdWUoKS5zcGxpdGxpbmVzKCkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIFtsaW5lIGZvciBsaW5lIGluIGxvZyBp
ZiAnTW9jayBwcm9jZXNzJyBub3QgaW4gbGluZV0sIFsKKyAgICAgICAgICAgICAgICAnICAgIEZv
dW5kIDEgY29tbWl0Li4uJywKKyAgICAgICAgICAgIF0sCisgICAgICAgICkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGNhcHR1cmVkLnN0ZGVyci5nZXR2YWx1ZSgpLAor
ICAgICAgICAgICAgIkZvdW5kICcoT09QUyEpJyBtZXNzYWdlIGluIGNvbW1pdCBtZXNzYWdlcywg
cGxlYXNlIHJlc29sdmUgYmVmb3JlIGNvbW1pdHRpbmdcbiIsCisgICAgICAgICkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChjYXB0dXJlZC5zdGRvdXQuZ2V0dmFsdWUoKSwgJycpCisKKyAgICBk
ZWYgdGVzdF9ibG9ja2luZ19yZXZpZXdlcihzZWxmKToKKyAgICAgICAgd2l0aCBPdXRwdXRDYXB0
dXJlKCkgYXMgY2FwdHVyZWQsIHNlbGYud2Vic2VydmVyKGFwcHJvdmVkPUZhbHNlKSBhcyByZW1v
dGUsIHJlcG9zaXRvcnkoCisgICAgICAgICAgICAgICAgc2VsZi5wYXRoLCBoYXNfb29wcz1GYWxz
ZSwgcmVtb3RlPSdzc2g6Ly9naXRAe30ve30ve30uZ2l0Jy5mb3JtYXQoCisgICAgICAgICAgICAg
ICAgICAgIHJlbW90ZS5ob3N0c1swXSwgcmVtb3RlLnByb2plY3Quc3BsaXQoJy8nKVsxXSwgcmVt
b3RlLnByb2plY3Quc3BsaXQoJy8nKVszXSwKKyAgICAgICAgICAgICAgICApKSwgbW9ja3MubG9j
YWwuU3ZuKCk6CisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgcHJvZ3JhbS5tYWlu
KAorICAgICAgICAgICAgICAgIGFyZ3M9KCdsYW5kJywpLAorICAgICAgICAgICAgICAgIHBhdGg9
c2VsZi5wYXRoLAorICAgICAgICAgICAgKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
c3RyKGxvY2FsLkdpdChzZWxmLnBhdGgpLmNvbW1pdCgpKSwgJzMuMUBlbmcvZXhhbXBsZScpCisK
KyAgICAgICAgbG9nID0gY2FwdHVyZWQucm9vdC5sb2cuZ2V0dmFsdWUoKS5zcGxpdGxpbmVzKCkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIFtsaW5lIGZvciBsaW5lIGlu
IGxvZyBpZiAnTW9jayBwcm9jZXNzJyBub3QgaW4gbGluZV0sIFsKKyAgICAgICAgICAgICAgICAn
ICAgIEZvdW5kIDEgY29tbWl0Li4uJywKKyAgICAgICAgICAgIF0sCisgICAgICAgICkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGNhcHR1cmVkLnN0ZGVyci5nZXR2YWx1
ZSgpLAorICAgICAgICAgICAgIlJpY2t5IFJldmlld2VyIGlzIGJsb2NraW5nIGxhbmRpbmcgJ1BS
IDEgfCBFeGFtcGxlIENoYW5nZSdcbiIsCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChjYXB0dXJlZC5zdGRvdXQuZ2V0dmFsdWUoKSwgJycpCisKKyAgICBkZWYgdGVzdF9pbnNl
cnRfcmV2aWV3KHNlbGYpOgorICAgICAgICB3aXRoIE91dHB1dENhcHR1cmUoKSBhcyBjYXB0dXJl
ZCwgTW9ja1Rlcm1pbmFsLmlucHV0KCd5JyksIHNlbGYud2Vic2VydmVyKGFwcHJvdmVkPVRydWUp
IGFzIHJlbW90ZSwgcmVwb3NpdG9yeSgKKyAgICAgICAgICAgICAgICBzZWxmLnBhdGgsIGhhc19v
b3BzPVRydWUsIHJlbW90ZT0nc3NoOi8vZ2l0QHt9L3t9L3t9LmdpdCcuZm9ybWF0KAorICAgICAg
ICAgICAgICAgICAgICByZW1vdGUuaG9zdHNbMF0sIHJlbW90ZS5wcm9qZWN0LnNwbGl0KCcvJylb
MV0sIHJlbW90ZS5wcm9qZWN0LnNwbGl0KCcvJylbM10sCisgICAgICAgICAgICAgICAgKSksIG1v
Y2tzLmxvY2FsLlN2bigpOgorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHByb2dy
YW0ubWFpbigKKyAgICAgICAgICAgICAgICBhcmdzPSgnbGFuZCcsKSwKKyAgICAgICAgICAgICAg
ICBwYXRoPXNlbGYucGF0aCwKKyAgICAgICAgICAgICkpCisgICAgICAgICAgICByZXBvID0gbG9j
YWwuR2l0KHNlbGYucGF0aCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHJlcG8u
Y29tbWl0KCkpLCAnNkBtYWluJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAg
ICAgICAgICAgICAgW2NvbW1lbnQuY29udGVudCBmb3IgY29tbWVudCBpbiByZXBvLnJlbW90ZSgp
LnB1bGxfcmVxdWVzdHMuZ2V0KDEpLmNvbW1lbnRzXSwKKyAgICAgICAgICAgICAgICBbJ0xhbmRl
ZCBhNWZlOGFmZTliZjdkMDcxNThmY2Q5ZTk3MzJmZjAyYTcxMmRiMmZkISddLAorICAgICAgICAg
ICAgKQorCisgICAgICAgIGxvZyA9IGNhcHR1cmVkLnJvb3QubG9nLmdldHZhbHVlKCkuc3BsaXRs
aW5lcygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBbbGluZSBmb3Ig
bGluZSBpbiBsb2cgaWYgJ01vY2sgcHJvY2Vzcycgbm90IGluIGxpbmVdLCBbCisgICAgICAgICAg
ICAgICAgJyAgICBGb3VuZCAxIGNvbW1pdC4uLicsCisgICAgICAgICAgICAgICAgJ1NldHRpbmcg
Umlja3kgUmV2aWV3ZXIgYXMgcmV2aWV3ZXInLAorICAgICAgICAgICAgICAgICJSZWJhc2luZyAn
ZW5nL2V4YW1wbGUnIGZyb20gJ21haW4nIHRvICdtYWluJy4uLiIsCisgICAgICAgICAgICAgICAg
IlJlYmFzZWQgJ2VuZy9leGFtcGxlJyBmcm9tICdtYWluJyB0byAnbWFpbichIiwKKyAgICAgICAg
ICAgIF0sCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjYXB0dXJlZC5zdGRl
cnIuZ2V0dmFsdWUoKSwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAg
ICBjYXB0dXJlZC5zdGRvdXQuZ2V0dmFsdWUoKSwKKyAgICAgICAgICAgICJTZXQgJ1JpY2t5IFJl
dmlld2VyJyBhcyB5b3VyIHJldmlld2VyPyAoWWVzL05vKTogXG4iCisgICAgICAgICAgICAnTGFu
ZGVkIGE1ZmU4YWZlOWJmN2QwNzE1OGZjZDllOTczMmZmMDJhNzEyZGIyZmQhXG4nLAorICAgICAg
ICApCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443256</attachid>
            <date>2021-11-03 17:02:49 -0700</date>
            <delta_ts>2021-11-04 11:34:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231821-20211103170248.patch</filename>
            <type>text/plain</type>
            <size>53811</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1MjQyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggY2YzYjRjNzJjMjMyODRhMDUxMjc2MGQ5NWRiMzdhNWFj
YmY1ZjBjMC4uY2NkMTA0ZmQyNjExNWE5YTM4OWFhNjYxZWEyZTU1YzljYTY1MGI1MyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQz
IEBACisyMDIxLTExLTAzICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbZ2l0LXdlYmtpdF0gQWRkIGxhbmQgY29tbWFuZAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxODIxCisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS84NDMwOTMzOT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFNjcmlwdHMvZ2l0LXdlYmtpdDogV2ViS2l0IHN0aWxsIHVzZXMgU3ZuIGFzIGl0
J3MgY2Fub25pY2FsIHNvdXJjZSBvZiB0cnV0aC4KKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmll
cy93ZWJraXRzY21weS93ZWJraXRzY21weS9sb2NhbC9naXQucHk6CisgICAgICAgIChHaXQuX3Rv
X2dpdF9yZWYpOiBDb252ZXJ0IGlkZW50aWZpZXJzIG9yIHJldmlzaW9ucyB0byBnaXQgcmVmcy4K
KyAgICAgICAgKEdpdC5jaGVja291dCk6IFVzZSBzaGFyZWQgX3RvX2dpdF9yZWYgZnVuY3Rpb24u
CisgICAgICAgIChHaXQucmViYXNlKTogU3VwcG9ydCByZWJhc2luZyBpZGVudGlmaWVycy4KKyAg
ICAgICAgKEdpdC5wdWxsKTogR2VuZXJhbGl6ZSBjb21wdXRhdGlvbiBvZiB0aGUgZ210b2Zmc2V0
LgorICAgICAgICAoR2l0LmRpZmZfbGluZXMpOiBPdXRwdXQgZGlmZiBiZXR3ZWVuIHR3byByZWZz
LgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L21v
Y2tzL2xvY2FsL2dpdC5weToKKyAgICAgICAgKEdpdC5fX2luaXRfXyk6IEFkZCBicmFuY2gsIHB1
c2ggYW5kIGRpZmYgY29tbWFuZHMuCisgICAgICAgIChHaXQuZmlsdGVyX2JyYW5jaCk6IFN1cHBv
cnQgc2VkLgorICAgICAgICAoR2l0LnB1bGwpOiBNb2NrIGBnaXQgcHVsbGAKKyAgICAgICAgKEdp
dC5tb3ZlX2JyYW5jaCk6IE1vY2sgYGdpdCByZWJhc2VgLgorICAgICAgICAoR2l0LnB1c2gpOiBN
b2NrIGBnaXQgcHVzaGAuCisgICAgICAgIChHaXQucmVzZXQpOiBNb2NrIGBnaXQgcmVzZXQgSEVB
RH4jYC4KKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21w
eS9wcm9ncmFtL19faW5pdF9fLnB5OgorICAgICAgICAobWFpbik6IEFkZCBsYW5kIGNvbW1hbmQu
CisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvcHJv
Z3JhbS9sYW5kLnB5OiBBZGRlZC4KKyAgICAgICAgKExhbmQucGFyc2VyKToKKyAgICAgICAgKExh
bmQubWFpbik6IFJlYmFzZSB0aGUgY3VycmVudCBicmFuY2ggYWdhaW5zdCBpdCdzIHJvb3QsIGFz
c2lnbiB0aGUgcmV2aWV3ZXIsIGNoZWNrIGZvciAnT09QUycgbWVzc2FnZXMsCisgICAgICAgIHJl
YmFzZSBhZ2FpbnN0IHRhcmdldCBicmFuY2gsIHVwZGF0ZSB0YXJnZXQgYnJhbmNoIHJlZiwgb3B0
aW9uYWxseSBjYW5vbmljYWxpemUsIHB1c2ggKG9yIHN2biBkY29tbWl0KSBhbmQKKyAgICAgICAg
dXBkYXRlIGFuZCBjbG9zZSBwdWxsLXJlcXVlc3Qgd2l0aCBpbmZvcm1hdGlvbiBvbiB0aGUgbGFu
ZGVkIGNvbW1pdC4KKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJr
aXRzY21weS9zY21fYmFzZS5weToKKyAgICAgICAgKFNjbUJhc2UuZ210b2Zmc2V0KTogQWRkIHNo
YXJlZCBjb21wdXRhdGlvbiBvZiBHTVQgb2Zmc2V0LgorICAgICAgICAqIFNjcmlwdHMvbGlicmFy
aWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Rlc3QvZ2l0X3VuaXR0ZXN0LnB5OgorICAgICAg
ICAoVGVzdEdpdC50ZXN0X2NvbW1pdHMpOiBgZ2l0IGxvZ2Agc2hvdWxkIGV4Y2x1ZGUgYmFzZSBy
ZWYuCisgICAgICAgIChUZXN0R2l0LnRlc3RfY29tbWl0c19icmFuY2gpOiBEaXR0by4KKyAgICAg
ICAgKiBTY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS90ZXN0L2xhbmRf
dW5pdHRlc3QucHk6IEFkZGVkLgorICAgICAgICAocmVwb3NpdG9yeSk6CisgICAgICAgIChUZXN0
TGFuZCk6CisgICAgICAgIChUZXN0TGFuZEdpdEh1Yik6CisgICAgICAgIChUZXN0TGFuZEJpdEJ1
Y2tldCk6CisKIDIwMjEtMTEtMDMgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Vi
a2l0Lm9yZz4KIAogICAgICAgICBbIGlPUyBEZWJ1ZyBdIFRlc3RXZWJLaXRBUEkuUmVzb3VyY2VM
b2FkU3RhdGlzdGljcy5HcmFuZGZhdGhlckNhbGxiYWNrIGlzIGZhaWxpbmcKZGlmZiAtLWdpdCBh
L1Rvb2xzL1NjcmlwdHMvZ2l0LXdlYmtpdCBiL1Rvb2xzL1NjcmlwdHMvZ2l0LXdlYmtpdAppbmRl
eCAwZDJjMjJmYmFjMWY5ZmRkNGNiYmI4MzVhNjQyZDFlMWE0YjExZDkwLi40YjcyNzA3Zjg5MTI4
Y2UxMTliMmUzMWVlMmU5ODUyOGZlMmExMjdlIDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL2dp
dC13ZWJraXQKKysrIGIvVG9vbHMvU2NyaXB0cy9naXQtd2Via2l0CkBAIC03Miw1ICs3Miw2IEBA
IGlmICdfX21haW5fXycgPT0gX19uYW1lX186CiAgICAgICAgIHN1YnZlcnNpb249aXNfd2Via2l0
X2ZpbHRlcignaHR0cHM6Ly9zdm4ud2Via2l0Lm9yZy9yZXBvc2l0b3J5L3dlYmtpdCcpLAogICAg
ICAgICBhZGRpdGlvbmFsX3NldHVwPWlzX3dlYmtpdF9maWx0ZXIoYWRkaXRpb25hbF9zZXR1cCks
CiAgICAgICAgIGhvb2tzPW9zLnBhdGguam9pbihvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2lu
KG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykpKSwgJ2hvb2tzJyksCisgICAgICAgIGNhbm9uaWNh
bF9zdm49aXNfd2Via2l0X2ZpbHRlcihUcnVlKSwKICAgICApKQogCmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9sb2NhbC9naXQucHkg
Yi9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9sb2NhbC9n
aXQucHkKaW5kZXggYzJmYWIyYzVjYjhiN2VhMzYxMDZlMWExZDkyMjBiZTkyZmFhOWExYy4uMzAz
NGVlZTk4YjVjNTAwYWIzZjIyMzIyYWMyYTgxZGJjZmNhOWQ4OSAxMDA2NDQKLS0tIGEvVG9vbHMv
U2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbG9jYWwvZ2l0LnB5Cisr
KyBiL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L2xvY2Fs
L2dpdC5weQpAQCAtMzUsOCArMzUsNyBAQCBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZWZhdWx0
ZGljdAogCiBmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgcnVuLCBkZWNvcmF0b3JzLCBOZXN0ZWRG
dXp6eURpY3QKIGZyb20gd2Via2l0c2NtcHkubG9jYWwgaW1wb3J0IFNjbQotZnJvbSB3ZWJraXRz
Y21weSBpbXBvcnQgcmVtb3RlCi1mcm9tIHdlYmtpdHNjbXB5IGltcG9ydCBDb21taXQsIENvbnRy
aWJ1dG9yLCBsb2cKK2Zyb20gd2Via2l0c2NtcHkgaW1wb3J0IHJlbW90ZSwgQ29tbWl0LCBDb250
cmlidXRvciwgbG9nCiAKIAogY2xhc3MgR2l0KFNjbSk6CkBAIC03OTQsMTAgKzc5MywyNCBAQCBj
bGFzcyBHaXQoU2NtKToKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIid7fScgaXMgbm90
IGFuIGFyZ3VtZW50IHJlY29nbml6ZWQgYnkgZ2l0Ii5mb3JtYXQoYXJndW1lbnQpKQogICAgICAg
ICByZXR1cm4gc2VsZi5jb21taXQoaGFzaD1vdXRwdXQuc3Rkb3V0LnJzdHJpcCgpLCBpbmNsdWRl
X2xvZz1pbmNsdWRlX2xvZywgaW5jbHVkZV9pZGVudGlmaWVyPWluY2x1ZGVfaWRlbnRpZmllcikK
IAotICAgIGRlZiBjaGVja291dChzZWxmLCBhcmd1bWVudCk6CisgICAgZGVmIF90b19naXRfcmVm
KHNlbGYsIGFyZ3VtZW50KToKKyAgICAgICAgaWYgbm90IGFyZ3VtZW50OgorICAgICAgICAgICAg
cmV0dXJuIE5vbmUKICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoYXJndW1lbnQsIHNpeC5zdHJp
bmdfdHlwZXMpOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiRXhwZWN0ZWQgJ2FyZ3Vt
ZW50JyB0byBiZSBhIHN0cmluZywgbm90ICd7fSciLmZvcm1hdCh0eXBlKGFyZ3VtZW50KSkpCisg
ICAgICAgIHBhcnNlZF9jb21taXQgPSBDb21taXQucGFyc2UoYXJndW1lbnQsIGRvX2Fzc2VydD1G
YWxzZSkKKyAgICAgICAgaWYgcGFyc2VkX2NvbW1pdCBhbmQgbm90IHBhcnNlZF9jb21taXQuaGFz
aDoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLmNvbW1pdCgKKyAgICAgICAgICAgICAgICBoYXNo
PXBhcnNlZF9jb21taXQuaGFzaCwKKyAgICAgICAgICAgICAgICByZXZpc2lvbj1wYXJzZWRfY29t
bWl0LnJldmlzaW9uLAorICAgICAgICAgICAgICAgIGlkZW50aWZpZXI9cGFyc2VkX2NvbW1pdC5p
ZGVudGlmaWVyLAorICAgICAgICAgICAgICAgIGJyYW5jaD1wYXJzZWRfY29tbWl0LmJyYW5jaCwK
KyAgICAgICAgICAgICAgICBpbmNsdWRlX2xvZz1GYWxzZSwKKyAgICAgICAgICAgICAgICBpbmNs
dWRlX2lkZW50aWZpZXI9RmFsc2UsCisgICAgICAgICAgICApLmhhc2gKKyAgICAgICAgcmV0dXJu
IGFyZ3VtZW50CiAKKyAgICBkZWYgY2hlY2tvdXQoc2VsZiwgYXJndW1lbnQpOgogICAgICAgICBz
ZWxmLl9icmFuY2ggPSBOb25lCiAKICAgICAgICAgaWYgbG9nLmxldmVsID4gbG9nZ2luZy5XQVJO
SU5HOgpAQCAtODA3LDIxICs4MjAsOCBAQCBjbGFzcyBHaXQoU2NtKToKICAgICAgICAgZWxzZToK
ICAgICAgICAgICAgIGxvZ19hcmcgPSBbXQogCi0gICAgICAgIHBhcnNlZF9jb21taXQgPSBDb21t
aXQucGFyc2UoYXJndW1lbnQsIGRvX2Fzc2VydD1GYWxzZSkKLSAgICAgICAgaWYgcGFyc2VkX2Nv
bW1pdDoKLSAgICAgICAgICAgIGNvbW1pdCA9IHNlbGYuY29tbWl0KAotICAgICAgICAgICAgICAg
IGhhc2g9cGFyc2VkX2NvbW1pdC5oYXNoLAotICAgICAgICAgICAgICAgIHJldmlzaW9uPXBhcnNl
ZF9jb21taXQucmV2aXNpb24sCi0gICAgICAgICAgICAgICAgaWRlbnRpZmllcj1wYXJzZWRfY29t
bWl0LmlkZW50aWZpZXIsCi0gICAgICAgICAgICAgICAgYnJhbmNoPXBhcnNlZF9jb21taXQuYnJh
bmNoLAotICAgICAgICAgICAgKQotICAgICAgICAgICAgcmV0dXJuIE5vbmUgaWYgcnVuKAotICAg
ICAgICAgICAgICAgIFtzZWxmLmV4ZWN1dGFibGUoKSwgJ2NoZWNrb3V0J10gKyBbY29tbWl0Lmhh
c2hdICsgbG9nX2FyZywKLSAgICAgICAgICAgICAgICBjd2Q9c2VsZi5yb290X3BhdGgsCi0gICAg
ICAgICAgICApLnJldHVybmNvZGUgZWxzZSBjb21taXQKLQogICAgICAgICByZXR1cm4gTm9uZSBp
ZiBydW4oCi0gICAgICAgICAgICBbc2VsZi5leGVjdXRhYmxlKCksICdjaGVja291dCddICsgW2Fy
Z3VtZW50XSArIGxvZ19hcmcsCisgICAgICAgICAgICBbc2VsZi5leGVjdXRhYmxlKCksICdjaGVj
a291dCddICsgW3NlbGYuX3RvX2dpdF9yZWYoYXJndW1lbnQpXSArIGxvZ19hcmcsCiAgICAgICAg
ICAgICBjd2Q9c2VsZi5yb290X3BhdGgsCiAgICAgICAgICkucmV0dXJuY29kZSBlbHNlIHNlbGYu
Y29tbWl0KCkKIApAQCAtODI5LDYgKzgyOSwxMCBAQCBjbGFzcyBHaXQoU2NtKToKICAgICAgICAg
aWYgaGVhZCA9PSBzZWxmLmRlZmF1bHRfYnJhbmNoIG9yIHNlbGYucHJvZF9icmFuY2hlcy5tYXRj
aChoZWFkKToKICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiUmViYXNpbmcgcHJvZHVj
dGlvbiBicmFuY2ggJ3t9JyBiYW5uZWQgaW4gdG9vbGluZyEiLmZvcm1hdChoZWFkKSkKIAorICAg
ICAgICB0YXJnZXQgPSBzZWxmLl90b19naXRfcmVmKHRhcmdldCkKKyAgICAgICAgYmFzZSA9IHNl
bGYuX3RvX2dpdF9yZWYoYmFzZSkKKyAgICAgICAgaGVhZCA9IHNlbGYuX3RvX2dpdF9yZWYoaGVh
ZCkKKwogICAgICAgICBjb2RlID0gcnVuKFtzZWxmLmV4ZWN1dGFibGUoKSwgJ3JlYmFzZScsICct
LW9udG8nLCB0YXJnZXQsIGJhc2Ugb3IgdGFyZ2V0LCBoZWFkXSwgY3dkPXNlbGYucm9vdF9wYXRo
KS5yZXR1cm5jb2RlCiAgICAgICAgIGlmIHNlbGYuY2FjaGU6CiAgICAgICAgICAgICBzZWxmLmNh
Y2hlLmNsZWFyKGhlYWQgaWYgaGVhZCAhPSAnSEVBRCcgZWxzZSBzZWxmLmJyYW5jaCkKQEAgLTgz
Nyw3ICs4NDEsNyBAQCBjbGFzcyBHaXQoU2NtKToKICAgICAgICAgcmV0dXJuIHJ1bihbCiAgICAg
ICAgICAgICBzZWxmLmV4ZWN1dGFibGUoKSwgJ2ZpbHRlci1icmFuY2gnLCAnLWYnLAogICAgICAg
ICAgICAgJy0tZW52LWZpbHRlcicsICJHSVRfQVVUSE9SX0RBVEU9J3tkYXRlfSc7R0lUX0NPTU1J
VFRFUl9EQVRFPSd7ZGF0ZX0nIi5mb3JtYXQoCi0gICAgICAgICAgICAgICAgZGF0ZT0ne30gLXt9
Jy5mb3JtYXQoaW50KHRpbWUudGltZSgpKSwgaW50KHRpbWUubG9jYWx0aW1lKCkudG1fZ210b2Zm
ICogMTAwIC8gKDYwICogNjApKSkKKyAgICAgICAgICAgICAgICBkYXRlPSd7fSAte30nLmZvcm1h
dChpbnQodGltZS50aW1lKCkpLCBzZWxmLmdtdG9mZnNldCgpKQogICAgICAgICAgICAgKSwgJ3t9
Li4ue30nLmZvcm1hdCh0YXJnZXQsIGhlYWQpLAogICAgICAgICBdLCBjd2Q9c2VsZi5yb290X3Bh
dGgsIGVudj17J0ZJTFRFUl9CUkFOQ0hfU1FVRUxDSF9XQVJOSU5HJzogJzEnfSwgY2FwdHVyZV9v
dXRwdXQ9VHJ1ZSkucmV0dXJuY29kZQogCkBAIC04NjksNyArODczLDcgQEAgY2xhc3MgR2l0KFNj
bSk6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuZXhlY3V0YWJsZSgpLAogICAgICAgICAgICAg
ICAgICAgICAnZmlsdGVyLWJyYW5jaCcsICctZicsCiAgICAgICAgICAgICAgICAgICAgICctLWVu
di1maWx0ZXInLCAiR0lUX0FVVEhPUl9EQVRFPSd7ZGF0ZX0nO0dJVF9DT01NSVRURVJfREFURT0n
e2RhdGV9JyIuZm9ybWF0KAotICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZT0ne30gLXt9Jy5m
b3JtYXQoaW50KHRpbWUudGltZSgpKSwgaW50KHRpbWUubG9jYWx0aW1lKCkudG1fZ210b2ZmICog
MTAwIC8gKDYwICogNjApKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGU9J3t9IC17fScu
Zm9ybWF0KGludCh0aW1lLnRpbWUoKSksIHNlbGYuZ210b2Zmc2V0KCkpCiAgICAgICAgICAgICAg
ICAgICAgICksICdIRUFELi4ue30nLmZvcm1hdCgne30ve30nLmZvcm1hdChyZW1vdGUsIGJyYW5j
aCkpLAogICAgICAgICAgICAgICAgIF0sIGN3ZD1zZWxmLnJvb3RfcGF0aCwgZW52PXsnRklMVEVS
X0JSQU5DSF9TUVVFTENIX1dBUk5JTkcnOiAnMSd9KS5yZXR1cm5jb2RlCiAKQEAgLTkxMiwzICs5
MTYsMjcgQEAgY2xhc3MgR2l0KFNjbSk6CiAgICAgICAgIGlmIHNldChzdGFnZWQpIC0gYWRkZWQ6
CiAgICAgICAgICAgICByZXR1cm4gc3RhZ2VkCiAgICAgICAgIHJldHVybiBzdGFnZWQgKyBzZWxm
Lm1vZGlmaWVkKHN0YWdlZD1GYWxzZSkKKworICAgIGRlZiBkaWZmX2xpbmVzKHNlbGYsIGJhc2Us
IGhlYWQ9Tm9uZSk6CisgICAgICAgIGJhc2UgPSBzZWxmLl90b19naXRfcmVmKGJhc2UpCisgICAg
ICAgIGhlYWQgPSBzZWxmLl90b19naXRfcmVmKGhlYWQpCisKKyAgICAgICAga3dhcmdzID0gZGlj
dCgpCisgICAgICAgIGlmIHN5cy52ZXJzaW9uX2luZm8gPj0gKDMsIDApOgorICAgICAgICAgICAg
a3dhcmdzID0gZGljdChlbmNvZGluZz0ndXRmLTgnKQorICAgICAgICB0YXJnZXQgPSAne30uLnt9
Jy5mb3JtYXQoYmFzZSwgaGVhZCkgaWYgaGVhZCBlbHNlIGJhc2UKKyAgICAgICAgcHJvYyA9IHN1
YnByb2Nlc3MuUG9wZW4oCisgICAgICAgICAgICBbc2VsZi5leGVjdXRhYmxlKCksICdkaWZmJywg
dGFyZ2V0XSwKKyAgICAgICAgICAgIGN3ZD1zZWxmLnJvb3RfcGF0aCwKKyAgICAgICAgICAgIHN0
ZG91dD1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5QSVBF
LAorICAgICAgICAgICAgKioga3dhcmdzCisgICAgICAgICkKKworICAgICAgICBpZiBwcm9jLnBv
bGwoKToKKyAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoIkZhaWxlZCB0byBnZW5lcmF0ZSBk
aWZmIGZvciAne30nXG4iLmZvcm1hdCh0YXJnZXQpKQorCisgICAgICAgIGxpbmUgPSBwcm9jLnN0
ZG91dC5yZWFkbGluZSgpCisgICAgICAgIHdoaWxlIGxpbmU6CisgICAgICAgICAgICB5aWVsZCBs
aW5lLnJzdHJpcCgpCisgICAgICAgICAgICBsaW5lID0gcHJvYy5zdGRvdXQucmVhZGxpbmUoKQpk
aWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2Nt
cHkvbW9ja3MvbG9jYWwvZ2l0LnB5IGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2Nt
cHkvd2Via2l0c2NtcHkvbW9ja3MvbG9jYWwvZ2l0LnB5CmluZGV4IGJlMDRmMWNlZmZmZDE1NTc5
NTU5MTU1NGU2ZjdjMmIyOTQ2NDVhMTkuLmI0YjlkMTI0ZTUxYTBlNjM5MThiM2JkYmE1ZmU4ZThm
NTdjNDk0N2YgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5
L3dlYmtpdHNjbXB5L21vY2tzL2xvY2FsL2dpdC5weQorKysgYi9Ub29scy9TY3JpcHRzL2xpYnJh
cmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9tb2Nrcy9sb2NhbC9naXQucHkKQEAgLTE1Myw2
ICsxNTMsMTQgQEAgY2xhc3MgR2l0KG1vY2tzLlN1YnByb2Nlc3MpOgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGF0ZT1kYXRldGltZS5mcm9tdGltZXN0YW1wKHNlbGYuaGVh
ZC50aW1lc3RhbXApLnN0cmZ0aW1lKCclWS0lbS0lZCAlSDolTTolUycpLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgICAgICAgICAgKSwKKyAgICAg
ICAgICAgICAgICApLCBtb2Nrcy5TdWJwcm9jZXNzLlJvdXRlKAorICAgICAgICAgICAgICAgICAg
ICBzZWxmLmV4ZWN1dGFibGUsICdzdm4nLCAnZmV0Y2gnLAorICAgICAgICAgICAgICAgICAgICBj
d2Q9c2VsZi5wYXRoLAorICAgICAgICAgICAgICAgICAgICBjb21wbGV0aW9uPW1vY2tzLlByb2Nl
c3NDb21wbGV0aW9uKHJldHVybmNvZGU9MCkKKyAgICAgICAgICAgICAgICApLCBtb2Nrcy5TdWJw
cm9jZXNzLlJvdXRlKAorICAgICAgICAgICAgICAgICAgICBzZWxmLmV4ZWN1dGFibGUsICdzdm4n
LCAnZGNvbW1pdCcsCisgICAgICAgICAgICAgICAgICAgIGN3ZD1zZWxmLnBhdGgsCisgICAgICAg
ICAgICAgICAgICAgIGNvbXBsZXRpb249bW9ja3MuUHJvY2Vzc0NvbXBsZXRpb24ocmV0dXJuY29k
ZT0wKQogICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICBdCiAKQEAgLTI4Nyw3ICsyOTUs
NyBAQCBub3RoaW5nIHRvIGNvbW1pdCwgd29ya2luZyB0cmVlIGNsZWFuCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmJhc2VuYW1lKHBhdGgpLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb21taXQucmV2aXNpb24sCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKV0gaWYgZ2l0X3N2biBlbHNlIFtdKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICkpIGZvciBjb21taXQgaW4gc2VsZi5jb21taXRzX2luX3JhbmdlKGFyZ3NbM10uc3Bs
aXQoJy4uLicpWy0xXSwgYXJnc1szXS5zcGxpdCgnLi4uJylbMF0pCisgICAgICAgICAgICAgICAg
ICAgICAgICApKSBmb3IgY29tbWl0IGluIGxpc3Qoc2VsZi5jb21taXRzX2luX3JhbmdlKGFyZ3Nb
M10uc3BsaXQoJy4uLicpWy0xXSwgYXJnc1szXS5zcGxpdCgnLi4uJylbMF0pKVs6LTFdCiAgICAg
ICAgICAgICAgICAgICAgIF0pCiAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgKSwgbW9j
a3MuU3VicHJvY2Vzcy5Sb3V0ZSgKQEAgLTM0OSwxMyArMzU3LDI1IEBAIG5vdGhpbmcgdG8gY29t
bWl0LCB3b3JraW5nIHRyZWUgY2xlYW4KICAgICAgICAgICAgICAgICBnZW5lcmF0b3I9bGFtYmRh
ICphcmdzLCAqKmt3YXJnczoKICAgICAgICAgICAgICAgICAgICAgbW9ja3MuUHJvY2Vzc0NvbXBs
ZXRpb24ocmV0dXJuY29kZT0wKSBpZiBzZWxmLmNoZWNrb3V0KGFyZ3NbMl0sIGNyZWF0ZT1GYWxz
ZSkgZWxzZSBtb2Nrcy5Qcm9jZXNzQ29tcGxldGlvbihyZXR1cm5jb2RlPTEpCiAgICAgICAgICAg
ICApLCBtb2Nrcy5TdWJwcm9jZXNzLlJvdXRlKAotICAgICAgICAgICAgICAgIHNlbGYuZXhlY3V0
YWJsZSwgJ2ZpbHRlci1icmFuY2gnLCAnLWYnLAorICAgICAgICAgICAgICAgIHNlbGYuZXhlY3V0
YWJsZSwgJ2ZpbHRlci1icmFuY2gnLCAnLWYnLCAnLS1lbnYtZmlsdGVyJywgcmUuY29tcGlsZShy
Jy4qJyksICctLW1zZy1maWx0ZXInLAogICAgICAgICAgICAgICAgIGN3ZD1zZWxmLnBhdGgsCiAg
ICAgICAgICAgICAgICAgZ2VuZXJhdG9yPWxhbWJkYSAqYXJncywgKiprd2FyZ3M6IHNlbGYuZmls
dGVyX2JyYW5jaCgKICAgICAgICAgICAgICAgICAgICAgYXJnc1stMV0sCiAgICAgICAgICAgICAg
ICAgICAgIGlkZW50aWZpZXJfdGVtcGxhdGU9YXJnc1stMl0uc3BsaXQoIiciKVstMl0gaWYgYXJn
c1stM10gPT0gJy0tbXNnLWZpbHRlcicgZWxzZSBOb25lLAogICAgICAgICAgICAgICAgICAgICBl
bnZpcm9ubWVudF9zaGVsbD1hcmdzWzRdIGlmIGFyZ3NbM10gPT0gJy0tZW52LWZpbHRlcicgYW5k
IGFyZ3NbNF0gZWxzZSBOb25lLAogICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICksIG1v
Y2tzLlN1YnByb2Nlc3MuUm91dGUoCisgICAgICAgICAgICAgICAgc2VsZi5leGVjdXRhYmxlLCAn
ZmlsdGVyLWJyYW5jaCcsICctZicsICctLWVudi1maWx0ZXInLCByZS5jb21waWxlKHInLionKSwg
Jy0tbXNnLWZpbHRlcicsIHJlLmNvbXBpbGUocidzZWQgLionKSwKKyAgICAgICAgICAgICAgICBj
d2Q9c2VsZi5wYXRoLAorICAgICAgICAgICAgICAgIGdlbmVyYXRvcj1sYW1iZGEgKmFyZ3MsICoq
a3dhcmdzOiBzZWxmLmZpbHRlcl9icmFuY2goCisgICAgICAgICAgICAgICAgICAgIGFyZ3NbLTFd
LAorICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudF9zaGVsbD1hcmdzWzRdIGlmIGFyZ3Nb
M10gPT0gJy0tZW52LWZpbHRlcicgYW5kIGFyZ3NbNF0gZWxzZSBOb25lLAorICAgICAgICAgICAg
ICAgICAgICBzZWQ9YXJnc1s2XS5zcGxpdCgnc2VkICcpWy0xXSBpZiBhcmdzWzVdID09ICctLW1z
Zy1maWx0ZXInIGVsc2UgTm9uZSwKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICApLCBt
b2Nrcy5TdWJwcm9jZXNzLlJvdXRlKAorICAgICAgICAgICAgICAgIHNlbGYuZXhlY3V0YWJsZSwg
J2ZpbHRlci1icmFuY2gnLCAnLWYnLAorICAgICAgICAgICAgICAgIGN3ZD1zZWxmLnBhdGgsCisg
ICAgICAgICAgICAgICAgY29tcGxldGlvbj1tb2Nrcy5Qcm9jZXNzQ29tcGxldGlvbihyZXR1cm5j
b2RlPTApLAogICAgICAgICAgICAgKSwgbW9ja3MuU3VicHJvY2Vzcy5Sb3V0ZSgKICAgICAgICAg
ICAgICAgICBzZWxmLmV4ZWN1dGFibGUsICdzdm4nLCAnZmV0Y2gnLCAnLS1sb2ctd2luZG93LXNp
emU9NTAwMCcsICctcicsIHJlLmNvbXBpbGUocidcZCs6SEVBRCcpLAogICAgICAgICAgICAgICAg
IGN3ZD1zZWxmLnBhdGgsCkBAIC0zNjQsNyArMzg0LDcgQEAgbm90aGluZyB0byBjb21taXQsIHdv
cmtpbmcgdHJlZSBjbGVhbgogICAgICAgICAgICAgKSwgbW9ja3MuU3VicHJvY2Vzcy5Sb3V0ZSgK
ICAgICAgICAgICAgICAgICBzZWxmLmV4ZWN1dGFibGUsICdwdWxsJywKICAgICAgICAgICAgICAg
ICBjd2Q9c2VsZi5wYXRoLAotICAgICAgICAgICAgICAgIGNvbXBsZXRpb249bW9ja3MuUHJvY2Vz
c0NvbXBsZXRpb24ocmV0dXJuY29kZT0wKSwKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3I9bGFt
YmRhICphcmdzLCAqKmt3YXJnczogc2VsZi5wdWxsKCksCiAgICAgICAgICAgICApLCBtb2Nrcy5T
dWJwcm9jZXNzLlJvdXRlKAogICAgICAgICAgICAgICAgIHNlbGYuZXhlY3V0YWJsZSwgJ2NvbmZp
ZycsICctbCcsCiAgICAgICAgICAgICAgICAgY3dkPXNlbGYucGF0aCwKQEAgLTQzOCw2ICs0NTgs
MzIgQEAgbm90aGluZyB0byBjb21taXQsIHdvcmtpbmcgdHJlZSBjbGVhbgogICAgICAgICAgICAg
ICAgIHNlbGYuZXhlY3V0YWJsZSwgJ3JlYmFzZScsICctLW9udG8nLCByZS5jb21waWxlKHInLisn
KSwgcmUuY29tcGlsZShyJy4rJyksIHJlLmNvbXBpbGUocicuKycpLAogICAgICAgICAgICAgICAg
IGN3ZD1zZWxmLnBhdGgsCiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yPWxhbWJkYSAqYXJncywg
Kiprd2FyZ3M6IHNlbGYucmViYXNlKGFyZ3NbM10sIGFyZ3NbNF0sIGFyZ3NbNV0pLAorICAgICAg
ICAgICAgKSwgbW9ja3MuU3VicHJvY2Vzcy5Sb3V0ZSgKKyAgICAgICAgICAgICAgICBzZWxmLmV4
ZWN1dGFibGUsICdicmFuY2gnLCAnLWYnLCByZS5jb21waWxlKHInLisnKSwgcmUuY29tcGlsZShy
Jy4rJyksCisgICAgICAgICAgICAgICAgY3dkPXNlbGYucGF0aCwKKyAgICAgICAgICAgICAgICBn
ZW5lcmF0b3I9bGFtYmRhICphcmdzLCAqKmt3YXJnczogc2VsZi5tb3ZlX2JyYW5jaChhcmdzWzNd
LCBhcmdzWzRdKSwKKyAgICAgICAgICAgICksIG1vY2tzLlN1YnByb2Nlc3MuUm91dGUoCisgICAg
ICAgICAgICAgICAgc2VsZi5leGVjdXRhYmxlLCAncHVzaCcsICdvcmlnaW4nLCByZS5jb21waWxl
KHInLisnKSwKKyAgICAgICAgICAgICAgICBjd2Q9c2VsZi5wYXRoLAorICAgICAgICAgICAgICAg
IGdlbmVyYXRvcj1sYW1iZGEgKmFyZ3MsICoqa3dhcmdzOiBzZWxmLnB1c2goYXJnc1syXSwgYXJn
c1szXSksCisgICAgICAgICAgICApLCBtb2Nrcy5TdWJwcm9jZXNzLlJvdXRlKAorICAgICAgICAg
ICAgICAgIHNlbGYuZXhlY3V0YWJsZSwgJ2RpZmYnLCByZS5jb21waWxlKHInLisnKSwKKyAgICAg
ICAgICAgICAgICBjd2Q9c2VsZi5wYXRoLAorICAgICAgICAgICAgICAgIGdlbmVyYXRvcj1sYW1i
ZGEgKmFyZ3MsICoqa3dhcmdzOiBtb2Nrcy5Qcm9jZXNzQ29tcGxldGlvbigKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuY29kZT0wLAorICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9J1xuJy5q
b2luKFsKKyAgICAgICAgICAgICAgICAgICAgICAgICctLS0gYS9DaGFuZ2VMb2dcbisrKyBiL0No
YW5nZUxvZ1xuQEAgLTEsMCArMSwwIEBAXG57fScuZm9ybWF0KAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICdcbicuam9pbihbJysge30nLmZvcm1hdChsaW5lKSBmb3IgbGluZSBpbiBjb21t
aXQubWVzc2FnZS5zcGxpdGxpbmVzKCldKQorICAgICAgICAgICAgICAgICAgICAgICAgKSBmb3Ig
Y29tbWl0IGluIGxpc3Qoc2VsZi5jb21taXRzX2luX3JhbmdlKAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGFyZ3NbMl0uc3BsaXQoJy4uJylbMF0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYXJnc1syXS5zcGxpdCgnLi4nKVstMV0gaWYgJy4uJyBpbiBhcmdzWzJdIGVsc2Ugc2Vs
Zi5jb21taXRzW3NlbGYuZGVmYXVsdF9icmFuY2hdWy0xXS5oYXNoLAorICAgICAgICAgICAgICAg
ICAgICAgICAgKSlbOi0xXQorICAgICAgICAgICAgICAgICAgICBdKQorICAgICAgICAgICAgICAg
ICkKKyAgICAgICAgICAgICksIG1vY2tzLlN1YnByb2Nlc3MuUm91dGUoCisgICAgICAgICAgICAg
ICAgc2VsZi5leGVjdXRhYmxlLCAncmVzZXQnLCByZS5jb21waWxlKHInSEVBRH5cZCsnKSwKKyAg
ICAgICAgICAgICAgICBjd2Q9c2VsZi5wYXRoLAorICAgICAgICAgICAgICAgIGdlbmVyYXRvcj1s
YW1iZGEgKmFyZ3MsICoqa3dhcmdzOiBzZWxmLnJlc2V0KGludChhcmdzWzJdLnNwbGl0KCd+Jylb
LTFdKSksCiAgICAgICAgICAgICApLCBtb2Nrcy5TdWJwcm9jZXNzLlJvdXRlKAogICAgICAgICAg
ICAgICAgIHNlbGYuZXhlY3V0YWJsZSwKICAgICAgICAgICAgICAgICBjd2Q9c2VsZi5wYXRoLApA
QCAtNTY3LDcgKzYxMyw3IEBAIG5vdGhpbmcgdG8gY29tbWl0LCB3b3JraW5nIHRyZWUgY2xlYW4K
ICAgICAgICAgICAgIHNlbGYuZGV0YWNoZWQgPSBzb21ldGhpbmcgbm90IGluIHNlbGYuY29tbWl0
cy5rZXlzKCkKICAgICAgICAgcmV0dXJuIFRydWUgaWYgY29tbWl0IGVsc2UgRmFsc2UKIAotICAg
IGRlZiBmaWx0ZXJfYnJhbmNoKHNlbGYsIHJhbmdlLCBpZGVudGlmaWVyX3RlbXBsYXRlPU5vbmUs
IGVudmlyb25tZW50X3NoZWxsPU5vbmUpOgorICAgIGRlZiBmaWx0ZXJfYnJhbmNoKHNlbGYsIHJh
bmdlLCBpZGVudGlmaWVyX3RlbXBsYXRlPU5vbmUsIGVudmlyb25tZW50X3NoZWxsPU5vbmUsIHNl
ZD1Ob25lKToKICAgICAgICAgIyBXZSBjYW4ndCBlZmZlY3RpdmVseSBtb2NrIHRoZSBiYXNoIHNj
cmlwdCBpbiB0aGUgY29tbWFuZCwgYnV0IHdlIGNhbiBtb2NrIHRoZSBweXRob24gY29kZSB0aGF0
CiAgICAgICAgICMgc2NyaXB0IGNhbGxzLCB3aGljaCBpcyB3aGVyZSB0aGUgcHJvZ3JhbSBsb2dp
YyBpcy4KICAgICAgICAgaGVhZCwgc3RhcnQgPSByYW5nZS5zcGxpdCgnLi4uJykKQEAgLTYyMSw2
ICs2NjcsMTQgQEAgbm90aGluZyB0byBjb21taXQsIHdvcmtpbmcgdHJlZSBjbGVhbgogICAgICAg
ICAgICAgICAgICAgICAgICAgbGluZXMucG9wKC0xKQogICAgICAgICAgICAgICAgICAgICBjb21t
aXQubWVzc2FnZSA9ICdcbicuam9pbihsaW5lcykKIAorICAgICAgICAgICAgICAgIGlmIHNlZDoK
KyAgICAgICAgICAgICAgICAgICAgbWF0Y2ggPSByZS5tYXRjaChyJyJzLyg/UDxyZT4uKykvKD9Q
PHZhbHVlPi4rKS9nIicsIHNlZCkKKyAgICAgICAgICAgICAgICAgICAgaWYgbWF0Y2g6CisgICAg
ICAgICAgICAgICAgICAgICAgICBjb21taXQubWVzc2FnZSA9IHJlLnN1YigKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtYXRjaC5ncm91cCgncmUnKS5yZXBsYWNlKCcoJywgJ1xcKCcpLnJl
cGxhY2UoJyknLCAnXFwpJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2guZ3Jv
dXAoJ3ZhbHVlJyksIGNvbW1pdC5tZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgKQor
CiAgICAgICAgICAgICAgICAgaWYgbm90IGVudmlyb25tZW50X3NoZWxsOgogICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgIGlmIHJlLnNlYXJjaChyJ2VjaG8gIk92
ZXJ3cml0aW5nJywgZW52aXJvbm1lbnRfc2hlbGwpOgpAQCAtNzkxLDMgKzg0NSwzNCBAQCBub3Ro
aW5nIHRvIGNvbW1pdCwgd29ya2luZyB0cmVlIGNsZWFuCiAgICAgICAgICAgICBpZiBzZWxmLmNv
bW1pdHNbdGFyZ2V0XVstMV0uYnJhbmNoX3BvaW50OgogICAgICAgICAgICAgICAgIGNvbW1pdC5p
ZGVudGlmaWVyICs9IHNlbGYuY29tbWl0c1t0YXJnZXRdWy0xXS5pZGVudGlmaWVyCiAgICAgICAg
IHJldHVybiBtb2Nrcy5Qcm9jZXNzQ29tcGxldGlvbihyZXR1cm5jb2RlPTApCisKKyAgICBkZWYg
cHVsbChzZWxmKToKKyAgICAgICAgc2VsZi5oZWFkID0gc2VsZi5jb21taXRzW3NlbGYuaGVhZC5i
cmFuY2hdWy0xXQorICAgICAgICByZXR1cm4gbW9ja3MuUHJvY2Vzc0NvbXBsZXRpb24ocmV0dXJu
Y29kZT0wKQorCisgICAgZGVmIG1vdmVfYnJhbmNoKHNlbGYsIHRvX2JlX21vdmVkLCBtb3ZlZF90
byk6CisgICAgICAgIGlmIG1vdmVkX3RvID09IHNlbGYuZGVmYXVsdF9icmFuY2g6CisgICAgICAg
ICAgICByZXR1cm4gbW9ja3MuUHJvY2Vzc0NvbXBsZXRpb24ocmV0dXJuY29kZT0wKQorICAgICAg
ICBpZiB0b19iZV9tb3ZlZCAhPSBzZWxmLmRlZmF1bHRfYnJhbmNoOgorICAgICAgICAgICAgc2Vs
Zi5jb21taXRzW3RvX2JlX21vdmVkXSA9IHNlbGYuY29tbWl0c1ttb3ZlZF90b10KKyAgICAgICAg
ICAgIHNlbGYuaGVhZCA9IHNlbGYuY29tbWl0c1t0b19iZV9tb3ZlZF1bLTFdCisgICAgICAgICAg
ICByZXR1cm4gbW9ja3MuUHJvY2Vzc0NvbXBsZXRpb24ocmV0dXJuY29kZT0wKQorICAgICAgICBz
ZWxmLmNvbW1pdHNbdG9fYmVfbW92ZWRdICs9IFsKKyAgICAgICAgICAgIENvbW1pdCgKKyAgICAg
ICAgICAgICAgICBicmFuY2g9dG9fYmVfbW92ZWQsIHJlcG9zaXRvcnlfaWQ9Y29tbWl0LnJlcG9z
aXRvcnlfaWQsCisgICAgICAgICAgICAgICAgdGltZXN0YW1wPWNvbW1pdC50aW1lc3RhbXAsCisg
ICAgICAgICAgICAgICAgaWRlbnRpZmllcj1jb21taXQuaWRlbnRpZmllciArIChjb21taXQuYnJh
bmNoX3BvaW50IG9yIDApLCBicmFuY2hfcG9pbnQ9Tm9uZSwKKyAgICAgICAgICAgICAgICBoYXNo
PWNvbW1pdC5oYXNoLCByZXZpc2lvbj1jb21taXQucmV2aXNpb24sCisgICAgICAgICAgICAgICAg
YXV0aG9yPWNvbW1pdC5hdXRob3IsIG1lc3NhZ2U9Y29tbWl0Lm1lc3NhZ2UsCisgICAgICAgICAg
ICApIGZvciBjb21taXQgaW4gc2VsZi5jb21taXRzW21vdmVkX3RvXQorICAgICAgICBdCisgICAg
ICAgIHNlbGYuaGVhZCA9IHNlbGYuY29tbWl0c1t0b19iZV9tb3ZlZF1bLTFdCisgICAgICAgIHJl
dHVybiBtb2Nrcy5Qcm9jZXNzQ29tcGxldGlvbihyZXR1cm5jb2RlPTApCisKKyAgICBkZWYgcHVz
aChzZWxmLCByZW1vdGUsIGJyYW5jaCk6CisgICAgICAgIHNlbGYucmVtb3Rlc1sne30ve30nLmZv
cm1hdChyZW1vdGUsIGJyYW5jaCldID0gc2VsZi5jb21taXRzW2JyYW5jaF1bLTFdCisgICAgICAg
IHJldHVybiBtb2Nrcy5Qcm9jZXNzQ29tcGxldGlvbihyZXR1cm5jb2RlPTApCisKKyAgICBkZWYg
cmVzZXQoc2VsZiwgaW5kZXgpOgorICAgICAgICBzZWxmLmhlYWQgPSBzZWxmLmNvbW1pdHNbc2Vs
Zi5oZWFkLmJyYW5jaF1bLShpbmRleCArIDEpXQorICAgICAgICByZXR1cm4gbW9ja3MuUHJvY2Vz
c0NvbXBsZXRpb24ocmV0dXJuY29kZT0wKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9saWJy
YXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvcHJvZ3JhbS9fX2luaXRfXy5weSBiL1Rvb2xz
L1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Byb2dyYW0vX19pbml0
X18ucHkKaW5kZXggYTgwZTk4NTNjY2U0OTM5YWU0NDBhOWZkNTI0MjRmZDQxNjQ3N2YzMC4uNTlh
MGMzNzg5YWQwMTRiMDMwY2FhMzM4MzZjYWFjOTk2NWFhZTlhNiAxMDA2NDQKLS0tIGEvVG9vbHMv
U2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvcHJvZ3JhbS9fX2luaXRf
Xy5weQorKysgYi9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21w
eS9wcm9ncmFtL19faW5pdF9fLnB5CkBAIC0zMiw2ICszMiw3IEBAIGZyb20gLmNsZWFuIGltcG9y
dCBDbGVhbgogZnJvbSAuY29tbWFuZCBpbXBvcnQgQ29tbWFuZAogZnJvbSAuY2hlY2tvdXQgaW1w
b3J0IENoZWNrb3V0CiBmcm9tIC5maW5kIGltcG9ydCBGaW5kLCBJbmZvCitmcm9tIC5sYW5kIGlt
cG9ydCBMYW5kCiBmcm9tIC5sb2cgaW1wb3J0IExvZwogZnJvbSAucHVsbCBpbXBvcnQgUHVsbAog
ZnJvbSAucHVsbF9yZXF1ZXN0IGltcG9ydCBQdWxsUmVxdWVzdApAQCAtNDUsNiArNDYsNyBAQCBm
cm9tIHdlYmtpdHNjbXB5IGltcG9ydCBsb2NhbCwgbG9nLCByZW1vdGUKIGRlZiBtYWluKAogICAg
IGFyZ3M9Tm9uZSwgcGF0aD1Ob25lLCBsb2dnZXJzPU5vbmUsIGNvbnRyaWJ1dG9ycz1Ob25lLAog
ICAgIGlkZW50aWZpZXJfdGVtcGxhdGU9Tm9uZSwgc3VidmVyc2lvbj1Ob25lLCBhZGRpdGlvbmFs
X3NldHVwPU5vbmUsIGhvb2tzPU5vbmUsCisgICAgY2Fub25pY2FsX3N2bj1GYWxzZSwKICk6CiAg
ICAgbG9nZ2luZy5iYXNpY0NvbmZpZyhsZXZlbD1sb2dnaW5nLldBUk5JTkcpCiAKQEAgLTY5LDcg
KzcxLDcgQEAgZGVmIG1haW4oCiAgICAgKQogCiAgICAgc3VicGFyc2VycyA9IHBhcnNlci5hZGRf
c3VicGFyc2VycyhoZWxwPSdzdWItY29tbWFuZCBoZWxwJykKLSAgICBwcm9ncmFtcyA9IFtCbGFt
ZSwgQnJhbmNoLCBDYW5vbmljYWxpemUsIENoZWNrb3V0LCBDbGVhbiwgRmluZCwgSW5mbywgTG9n
LCBQdWxsLCBQdWxsUmVxdWVzdCwgU2V0dXBdCisgICAgcHJvZ3JhbXMgPSBbQmxhbWUsIEJyYW5j
aCwgQ2Fub25pY2FsaXplLCBDaGVja291dCwgQ2xlYW4sIEZpbmQsIEluZm8sIExhbmQsIExvZywg
UHVsbCwgUHVsbFJlcXVlc3QsIFNldHVwXQogICAgIGlmIHN1YnZlcnNpb246CiAgICAgICAgIHBy
b2dyYW1zLmFwcGVuZChTZXR1cEdpdFN2bikKIApAQCAtMTIyLDYgKzEyNCw5IEBAIGRlZiBtYWlu
KAogICAgIGlmIGNhbGxhYmxlKGFkZGl0aW9uYWxfc2V0dXApIGFuZCBsaXN0KGluc3BlY3Quc2ln
bmF0dXJlKGFkZGl0aW9uYWxfc2V0dXApLnBhcmFtZXRlcnMua2V5cygpKSA9PSBbJ3JlcG9zaXRv
cnknXToKICAgICAgICAgYWRkaXRpb25hbF9zZXR1cCA9IGFkZGl0aW9uYWxfc2V0dXAocmVwb3Np
dG9yeSkKIAorICAgIGlmIGNhbGxhYmxlKGNhbm9uaWNhbF9zdm4pOgorICAgICAgICBjYW5vbmlj
YWxfc3ZuID0gY2Fub25pY2FsX3N2bihyZXBvc2l0b3J5KQorCiAgICAgaWYgbm90IGdldGF0dHIo
cGFyc2VkLCAnbWFpbicsIE5vbmUpOgogICAgICAgICBwYXJzZXIucHJpbnRfaGVscCgpCiAgICAg
ICAgIHJldHVybiAtMQpAQCAtMTMzLDQgKzEzOCw1IEBAIGRlZiBtYWluKAogICAgICAgICBzdWJ2
ZXJzaW9uPXN1YnZlcnNpb24sCiAgICAgICAgIGFkZGl0aW9uYWxfc2V0dXA9YWRkaXRpb25hbF9z
ZXR1cCwKICAgICAgICAgaG9va3M9aG9va3MsCisgICAgICAgIGNhbm9uaWNhbF9zdm49Y2Fub25p
Y2FsX3N2biwKICAgICApCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJr
aXRzY21weS93ZWJraXRzY21weS9wcm9ncmFtL2xhbmQucHkgYi9Ub29scy9TY3JpcHRzL2xpYnJh
cmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9wcm9ncmFtL2xhbmQucHkKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MDQ3ZmJhMTAyOTNjNzI3MTRhY2I4YTEzNjlhYjZhNmNhMzk1ZGQ3NgotLS0gL2Rldi9udWxsCisr
KyBiL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Byb2dy
YW0vbGFuZC5weQpAQCAtMCwwICsxLDIwNyBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisj
IGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorIyBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
CisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKworaW1wb3J0IHJlCitpbXBvcnQgc3lzCitpbXBvcnQgdGltZQorCitmcm9tIC5j
YW5vbmljYWxpemUgaW1wb3J0IENhbm9uaWNhbGl6ZQorZnJvbSAuY29tbWFuZCBpbXBvcnQgQ29t
bWFuZAorZnJvbSAuYnJhbmNoIGltcG9ydCBCcmFuY2gKK2Zyb20gYXJncGFyc2UgaW1wb3J0IE5h
bWVzcGFjZQorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IGFyZ3VtZW50cywgcnVuLCBzdHJpbmdf
dXRpbHMsIFRlcm1pbmFsCitmcm9tIHdlYmtpdHNjbXB5IGltcG9ydCBsb2NhbCwgbG9nCisKKwor
Y2xhc3MgTGFuZChDb21tYW5kKToKKyAgICBuYW1lID0gJ2xhbmQnCisgICAgaGVscCA9ICdJZiBv
biBhIHB1bGwtcmVxdWVzdCBvciBjb21taXQtcXVldWUgYnJhbmNoLCByZWJhc2UgdGhlICcgXAor
ICAgICAgICAgICAnY3VycmVudCBicmFuY2ggb250byB0aGUgdGFyZ2V0IHByb2R1Y3Rpb24gYnJh
bmNoIGFuZCBwdXNoLicKKworICAgIE9PUFNfUkUgPSByZS5jb21waWxlKHInXChPK1ArUyEqXCkn
KQorICAgIFJFVklFV0VEX0JZX1JFID0gcmUuY29tcGlsZSgnUmV2aWV3ZWQgYnkgKD9QPGFwcHJv
dmVyPi4rKScpCisgICAgUkVNT1RFID0gJ29yaWdpbicKKyAgICBNSVJST1JfVElNRU9VVCA9IDYw
CisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgcGFyc2VyKGNscywgcGFyc2VyLCBsb2dnZXJz
PU5vbmUpOgorICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAgICAgJy0tbm8t
Zm9yY2UtcmV2aWV3JywgJy0tZm9yY2UtcmV2aWV3JywgJy0tbm8tcmV2aWV3JywKKyAgICAgICAg
ICAgIGRlc3Q9J3JldmlldycsIGRlZmF1bHQ9VHJ1ZSwKKyAgICAgICAgICAgIGhlbHA9J0NoZWNr
IGlmIHRoZSBjaGFuZ2UgaGFzIGJlZW4gYXBwcm92ZWQgb3IgYmxvY2tlZCBieSByZXZpZXdlcnMn
LAorICAgICAgICAgICAgYWN0aW9uPWFyZ3VtZW50cy5Ob0FjdGlvbiwKKyAgICAgICAgKQorICAg
ICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAgICAgJy0tbm8tb29wcycsICctLW5v
LWFsbG93LW9vcHMnLCAnLS1hbGxvdy1vb3BzJywKKyAgICAgICAgICAgIGRlc3Q9J29vcHMnLCBk
ZWZhdWx0PUZhbHNlLAorICAgICAgICAgICAgaGVscD0iQWxsb3cgKE9PUFMhKSBpbiBjb21taXQg
bWVzc2FnZXMiLAorICAgICAgICAgICAgYWN0aW9uPWFyZ3VtZW50cy5Ob0FjdGlvbiwKKyAgICAg
ICAgKQorICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAgICAgJy0tZGVmYXVs
dHMnLCAnLS1uby1kZWZhdWx0cycsIGFjdGlvbj1hcmd1bWVudHMuTm9BY3Rpb24sIGRlZmF1bHQ9
Tm9uZSwKKyAgICAgICAgICAgIGhlbHA9J0RvIG5vdCBwcm9tcHQgdGhlIHVzZXIgZm9yIGRlZmF1
bHRzLCBhbHdheXMgdXNlIChvciBkbyBub3QgdXNlKSB0aGVtJywKKyAgICAgICAgKQorCisgICAg
QGNsYXNzbWV0aG9kCisgICAgZGVmIG1haW4oY2xzLCBhcmdzLCByZXBvc2l0b3J5LCBpZGVudGlm
aWVyX3RlbXBsYXRlPU5vbmUsIGNhbm9uaWNhbF9zdm49RmFsc2UsICoqa3dhcmdzKToKKyAgICAg
ICAgaWYgbm90IHJlcG9zaXRvcnkucGF0aDoKKyAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUo
IkNhbm5vdCAnbGFuZCcgY2hhbmdlIGluIHJlbW90ZSByZXBvc2l0b3J5XG4iKQorICAgICAgICAg
ICAgcmV0dXJuIDEKKworICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShyZXBvc2l0b3J5LCBsb2Nh
bC5HaXQpOgorICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgiJ2xhbmQnIG9ubHkgc3VwcG9y
dGVkIGJ5IGxvY2FsIGdpdCByZXBvc2l0b3JpZXNcbiIpCisgICAgICAgICAgICByZXR1cm4gMQor
CisgICAgICAgIGlmIGNhbm9uaWNhbF9zdm4gYW5kIG5vdCByZXBvc2l0b3J5LmlzX3N2bjoKKyAg
ICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoIkNhbm5vdCAnbGFuZCcgb24gYSBjYW5vbmljYWwg
U1ZOIHJlcG9zaXRvcnkgdGhhdCBpcyBub3QgY29uZmlndXJlZCBhcyBnaXQtc3ZuXG4iKQorICAg
ICAgICAgICAgcmV0dXJuIDEKKworICAgICAgICBpZiBub3QgQnJhbmNoLmVkaXRhYmxlKHJlcG9z
aXRvcnkuYnJhbmNoLCByZXBvc2l0b3J5PXJlcG9zaXRvcnkpOgorICAgICAgICAgICAgc3lzLnN0
ZGVyci53cml0ZSgiQ2FuIG9ubHkgJ2xhbmQnIGVkaXRhYmxlIGJyYW5jaGVzXG4iKQorICAgICAg
ICAgICAgcmV0dXJuIDEKKyAgICAgICAgYnJhbmNoX3BvaW50ID0gQnJhbmNoLmJyYW5jaF9wb2lu
dChyZXBvc2l0b3J5KQorICAgICAgICBjb21taXRzID0gbGlzdChyZXBvc2l0b3J5LmNvbW1pdHMo
YmVnaW49ZGljdChoYXNoPWJyYW5jaF9wb2ludC5oYXNoKSwgZW5kPWRpY3QoYnJhbmNoPXJlcG9z
aXRvcnkuYnJhbmNoKSkpCisgICAgICAgIGlmIG5vdCBjb21taXRzOgorICAgICAgICAgICAgc3lz
LnN0ZGVyci53cml0ZSgnRmFpbGVkIHRvIGZpbmQgY29tbWl0cyB0byBsYW5kXG4nKQorICAgICAg
ICAgICAgcmV0dXJuIDEKKworICAgICAgICBwdWxsX3JlcXVlc3QgPSBOb25lCisgICAgICAgIHJt
dCA9IHJlcG9zaXRvcnkucmVtb3RlKCkKKyAgICAgICAgaWYgcm10IGFuZCBybXQucHVsbF9yZXF1
ZXN0czoKKyAgICAgICAgICAgIGNhbmRpZGF0ZXMgPSBsaXN0KHJtdC5wdWxsX3JlcXVlc3RzLmZp
bmQob3BlbmVkPVRydWUsIGhlYWQ9cmVwb3NpdG9yeS5icmFuY2gpKQorICAgICAgICAgICAgaWYg
bGVuKGNhbmRpZGF0ZXMpID09IDE6CisgICAgICAgICAgICAgICAgcHVsbF9yZXF1ZXN0ID0gY2Fu
ZGlkYXRlc1swXQorICAgICAgICAgICAgZWxpZiBjYW5kaWRhdGVzOgorICAgICAgICAgICAgICAg
IHN5cy5zdGRlcnIud3JpdGUoIk11bHRpcGxlIHB1bGwtcmVxdWVzdCBtYXRjaCAne30nXG4iLmZv
cm1hdChyZXBvc2l0b3J5LmJyYW5jaCkpCisKKyAgICAgICAgaWYgcHVsbF9yZXF1ZXN0IGFuZCBh
cmdzLnJldmlldzoKKyAgICAgICAgICAgIGlmIHB1bGxfcmVxdWVzdC5ibG9ja2VyczoKKyAgICAg
ICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCJ7fSB7fSBibG9ja2luZyBsYW5kaW5nICd7fSdc
biIuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICBzdHJpbmdfdXRpbHMuam9pbihbcC5uYW1l
IGZvciBwIGluIHB1bGxfcmVxdWVzdC5ibG9ja2Vyc10pLAorICAgICAgICAgICAgICAgICAgICAn
YXJlJyBpZiBsZW4ocHVsbF9yZXF1ZXN0LmJsb2NrZXJzKSA+IDEgZWxzZSAnaXMnLAorICAgICAg
ICAgICAgICAgICAgICBwdWxsX3JlcXVlc3QsCisgICAgICAgICAgICAgICAgKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gMQorICAgICAgICAgICAgbmVlZF9yZXZpZXcgPSBGYWxzZQorICAgICAg
ICAgICAgaWYgcHVsbF9yZXF1ZXN0LmFwcHJvdmVyczoKKyAgICAgICAgICAgICAgICByZXZpZXdf
bGluZXMgPSBbY2xzLlJFVklFV0VEX0JZX1JFLnNlYXJjaChjb21taXQubWVzc2FnZSkgZm9yIGNv
bW1pdCBpbiBjb21taXRzXQorICAgICAgICAgICAgICAgIG5lZWRfcmV2aWV3ID0gYW55KFtjbHMu
T09QU19SRS5zZWFyY2gobWF0Y2guZ3JvdXAoJ2FwcHJvdmVyJykpIGZvciBtYXRjaCBpbiByZXZp
ZXdfbGluZXMgaWYgbWF0Y2hdKQorICAgICAgICAgICAgaWYgbmVlZF9yZXZpZXcgYW5kIChhcmdz
LmRlZmF1bHRzIG9yIFRlcm1pbmFsLmNob29zZSgiU2V0ICd7fScgYXMgeW91ciByZXZpZXdlcnt9
PyIuZm9ybWF0KAorICAgICAgICAgICAgICAgIHN0cmluZ191dGlscy5qb2luKFtwLm5hbWUgZm9y
IHAgaW4gcHVsbF9yZXF1ZXN0LmFwcHJvdmVyc10pLAorICAgICAgICAgICAgICAgICdzJyBpZiBs
ZW4ocHVsbF9yZXF1ZXN0LmFwcHJvdmVycykgPiAxIGVsc2UgJycsCisgICAgICAgICAgICApLCBk
ZWZhdWx0PSdZZXMnKSA9PSAnWWVzJyk6CisgICAgICAgICAgICAgICAgbG9nLndhcm5pbmcoIlNl
dHRpbmcge30gYXMgcmV2aWV3ZXJ7fSIuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICBzdHJp
bmdfdXRpbHMuam9pbihbcC5uYW1lIGZvciBwIGluIHB1bGxfcmVxdWVzdC5hcHByb3ZlcnNdKSwK
KyAgICAgICAgICAgICAgICAgICAgJ3MnIGlmIGxlbihwdWxsX3JlcXVlc3QuYXBwcm92ZXJzKSA+
IDEgZWxzZSAnJywKKyAgICAgICAgICAgICAgICApKQorICAgICAgICAgICAgICAgIGlmIHJ1bihb
CisgICAgICAgICAgICAgICAgICAgIHJlcG9zaXRvcnkuZXhlY3V0YWJsZSgpLCAnZmlsdGVyLWJy
YW5jaCcsICctZicsCisgICAgICAgICAgICAgICAgICAgICctLWVudi1maWx0ZXInLCAiR0lUX0FV
VEhPUl9EQVRFPSd7ZGF0ZX0nO0dJVF9DT01NSVRURVJfREFURT0ne2RhdGV9JyIuZm9ybWF0KAor
ICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZT0ne30gLXt9Jy5mb3JtYXQoaW50KHRpbWUudGlt
ZSgpKSwgcmVwb3NpdG9yeS5nbXRvZmZzZXQoKSkKKyAgICAgICAgICAgICAgICAgICAgKSwgJy0t
bXNnLWZpbHRlcicsICdzZWQgInMvTk9CT0RZIChPTypQUCpTISopL3t9L2ciJy5mb3JtYXQoc3Ry
aW5nX3V0aWxzLmpvaW4oW3AubmFtZSBmb3IgcCBpbiBwdWxsX3JlcXVlc3QuYXBwcm92ZXJzXSkp
LAorICAgICAgICAgICAgICAgICAgICAne30uLi57fScuZm9ybWF0KHJlcG9zaXRvcnkuYnJhbmNo
LCBicmFuY2hfcG9pbnQuaGFzaCksCisgICAgICAgICAgICAgICAgXSwgY3dkPXJlcG9zaXRvcnku
cm9vdF9wYXRoLCBlbnY9eydGSUxURVJfQlJBTkNIX1NRVUVMQ0hfV0FSTklORyc6ICcxJ30sIGNh
cHR1cmVfb3V0cHV0PVRydWUpLnJldHVybmNvZGU6CisgICAgICAgICAgICAgICAgICAgIHN5cy5z
dGRlcnIud3JpdGUoJ0ZhaWxlZCB0byBzZXQgcmV2aWV3ZXJzXG4nKQorICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gMQorICAgICAgICAgICAgICAgIGNvbW1pdHMgPSBsaXN0KHJlcG9zaXRvcnku
Y29tbWl0cyhiZWdpbj1kaWN0KGhhc2g9YnJhbmNoX3BvaW50Lmhhc2gpLCBlbmQ9ZGljdChicmFu
Y2g9cmVwb3NpdG9yeS5icmFuY2gpKSkKKyAgICAgICAgICAgICAgICBpZiBub3QgY29tbWl0czoK
KyAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgnRmFpbGVkIHRvIGZpbmQgY29t
bWl0cyBhZnRlciBzZXR0aW5nIHJldmlld2Vyc1xuJykKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIDEKKworICAgICAgICBlbGlmIG5vdCBwdWxsX3JlcXVlc3Q6CisgICAgICAgICAgICBzeXMu
c3RkZXJyLndyaXRlKCJGYWlsZWQgdG8gZmluZCBwdWxsLXJlcXVlc3QgYXNzb2NpYXRlZCB3aXRo
ICd7fSdcbiIuZm9ybWF0KHJlcG9zaXRvcnkuYnJhbmNoKSkKKworICAgICAgICBpZiBub3QgYXJn
cy5vb3BzIGFuZCBhbnkoW2Nscy5PT1BTX1JFLnNlYXJjaChjb21taXQubWVzc2FnZSkgZm9yIGNv
bW1pdCBpbiBjb21taXRzXSk6CisgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCJGb3VuZCAn
KE9PUFMhKScgbWVzc2FnZSBpbiBjb21taXQgbWVzc2FnZXMsIHBsZWFzZSByZXNvbHZlIGJlZm9y
ZSBjb21taXR0aW5nXG4iKQorICAgICAgICAgICAgcmV0dXJuIDEKKworICAgICAgICBpZiBub3Qg
YXJncy5vb3BzOgorICAgICAgICAgICAgZm9yIGxpbmUgaW4gcmVwb3NpdG9yeS5kaWZmX2xpbmVz
KGJyYW5jaF9wb2ludC5oYXNoLCByZXBvc2l0b3J5LmJyYW5jaCk6CisgICAgICAgICAgICAgICAg
aWYgY2xzLk9PUFNfUkUuc2VhcmNoKGxpbmUpOgorICAgICAgICAgICAgICAgICAgICBzeXMuc3Rk
ZXJyLndyaXRlKCJGb3VuZCAnKE9PUFMhKScgaW4gY29tbWl0IGRpZmYsIHBsZWFzZSByZXNvbHZl
IGJlZm9yZSBjb21taXR0aW5nXG4iKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gMQorCisg
ICAgICAgIHRhcmdldCA9IHB1bGxfcmVxdWVzdC5iYXNlIGlmIHB1bGxfcmVxdWVzdCBlbHNlIGJy
YW5jaF9wb2ludC5icmFuY2gKKyAgICAgICAgbG9nLndhcm5pbmcoIlJlYmFzaW5nICd7fScgZnJv
bSAne30nIHRvICd7fScuLi4iLmZvcm1hdChyZXBvc2l0b3J5LmJyYW5jaCwgYnJhbmNoX3BvaW50
LmJyYW5jaCwgdGFyZ2V0KSkKKyAgICAgICAgaWYgcmVwb3NpdG9yeS5mZXRjaChicmFuY2g9dGFy
Z2V0LCByZW1vdGU9Y2xzLlJFTU9URSk6CisgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCJG
YWlsZWQgdG8gZmV0Y2ggJ3t9JyBmcm9tICd7fSdcbiIuZm9ybWF0KHRhcmdldCwgY2xzLlJFTU9U
RSkpCisgICAgICAgICAgICByZXR1cm4gMQorICAgICAgICBpZiByZXBvc2l0b3J5LnJlYmFzZSh0
YXJnZXQ9dGFyZ2V0LCBiYXNlPWJyYW5jaF9wb2ludC5icmFuY2gsIGhlYWQ9cmVwb3NpdG9yeS5i
cmFuY2gpOgorICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgiRmFpbGVkIHRvIHJlYmFzZSAn
e30nIG9udG8gJ3t9JywgcGxlYXNlIHJlc29sdmUgY29uZmxpY3RzXG4iLmZvcm1hdChyZXBvc2l0
b3J5LmJyYW5jaCwgdGFyZ2V0KSkKKyAgICAgICAgICAgIHJldHVybiAxCisgICAgICAgIGxvZy53
YXJuaW5nKCJSZWJhc2VkICd7fScgZnJvbSAne30nIHRvICd7fSchIi5mb3JtYXQocmVwb3NpdG9y
eS5icmFuY2gsIGJyYW5jaF9wb2ludC5icmFuY2gsIHRhcmdldCkpCisKKyAgICAgICAgaWYgcnVu
KFtyZXBvc2l0b3J5LmV4ZWN1dGFibGUoKSwgJ2JyYW5jaCcsICctZicsIHRhcmdldCwgcmVwb3Np
dG9yeS5icmFuY2hdLCBjd2Q9cmVwb3NpdG9yeS5yb290X3BhdGgpLnJldHVybmNvZGU6CisgICAg
ICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCJGYWlsZWQgdG8gbW92ZSAne30nIHJlZlxuIi5mb3Jt
YXQodGFyZ2V0KSkKKyAgICAgICAgICAgIHJldHVybiAxCisKKyAgICAgICAgaWYgaWRlbnRpZmll
cl90ZW1wbGF0ZToKKyAgICAgICAgICAgIHNvdXJjZSA9IHJlcG9zaXRvcnkuYnJhbmNoCisgICAg
ICAgICAgICByZXBvc2l0b3J5LmNoZWNrb3V0KHRhcmdldCkKKyAgICAgICAgICAgIGlmIENhbm9u
aWNhbGl6ZS5tYWluKE5hbWVzcGFjZSgKKyAgICAgICAgICAgICAgICBpZGVudGlmaWVyPVRydWUs
IHJlbW90ZT1jbHMuUkVNT1RFLCBudW1iZXI9bGVuKGNvbW1pdHMpLAorICAgICAgICAgICAgKSwg
cmVwb3NpdG9yeSwgaWRlbnRpZmllcl90ZW1wbGF0ZT1pZGVudGlmaWVyX3RlbXBsYXRlKToKKyAg
ICAgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCJGYWlsZWQgdG8gZW1iZWQgaWRlbnRpZmll
cnMgdG8gJ3t9J1xuIi5mb3JtYXQodGFyZ2V0KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gMQor
ICAgICAgICAgICAgaWYgcnVuKFtyZXBvc2l0b3J5LmV4ZWN1dGFibGUoKSwgJ2JyYW5jaCcsICct
ZicsIHNvdXJjZSwgdGFyZ2V0XSwgY3dkPXJlcG9zaXRvcnkucm9vdF9wYXRoKS5yZXR1cm5jb2Rl
OgorICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoIkZhaWxlZCB0byBtb3ZlICd7fScg
cmVmIHRvIHRoZSBjYW5vbmljYWxpemVkIGhlYWQgb2YgJ3t9J1xuIi5mb3JtYXQoc291cmNlLCB0
YXJnZXQpKQorICAgICAgICAgICAgICAgIHJldHVybiAtMQorCisgICAgICAgIGlmIGNhbm9uaWNh
bF9zdm46CisgICAgICAgICAgICBpZiBydW4oW3JlcG9zaXRvcnkuZXhlY3V0YWJsZSgpLCAnc3Zu
JywgJ2ZldGNoJ10sIGN3ZD1yZXBvc2l0b3J5LnJvb3RfcGF0aCkucmV0dXJuY29kZToKKyAgICAg
ICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCJGYWlsZWQgdG8gdXBkYXRlIHN1YnZlcnNpb24g
cmVmc1xuIi5mb3JtYXQodGFyZ2V0KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gMQorICAgICAg
ICAgICAgaWYgcnVuKFtyZXBvc2l0b3J5LmV4ZWN1dGFibGUoKSwgJ3N2bicsICdkY29tbWl0J10s
IGN3ZD1yZXBvc2l0b3J5LnJvb3RfcGF0aCkucmV0dXJuY29kZToKKyAgICAgICAgICAgICAgICBz
eXMuc3RkZXJyLndyaXRlKCJGYWlsZWQgdG8gY29tbWl0ICd7fScgdG8gU3VidmVyc2lvbiByZW1v
dGVcbiIuZm9ybWF0KHRhcmdldCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIDEKKyAgICAgICAg
ICAgIHJ1bihbcmVwb3NpdG9yeS5leGVjdXRhYmxlKCksICdyZXNldCcsICdIRUFEfnt9Jy5mb3Jt
YXQobGVuKGNvbW1pdHMpKSwgJy0taGFyZCddLCBjd2Q9cmVwb3NpdG9yeS5yb290X3BhdGgpCisK
KyAgICAgICAgICAgICMgVmVyaWZ5IHRoZSBtaXJyb3IgcHJvY2Vzc2VkIG91ciBjaGFuZ2UKKyAg
ICAgICAgICAgIHN0YXJ0ZWQgPSB0aW1lLnRpbWUoKQorICAgICAgICAgICAgb3JpZ2luYWwgPSBy
ZXBvc2l0b3J5LmZpbmQoJ0hFQUQnLCBpbmNsdWRlX2xvZz1GYWxzZSwgaW5jbHVkZV9pZGVudGlm
aWVyPUZhbHNlKQorICAgICAgICAgICAgbGF0ZXN0ID0gb3JpZ2luYWwKKyAgICAgICAgICAgIHdo
aWxlIG9yaWdpbmFsLmhhc2ggPT0gbGF0ZXN0Lmhhc2g6CisgICAgICAgICAgICAgICAgaWYgdGlt
ZS50aW1lKCkgLSBzdGFydGVkID4gY2xzLk1JUlJPUl9USU1FT1VUOgorICAgICAgICAgICAgICAg
ICAgICBzeXMuc3RkZXJyLndyaXRlKCJUaW1lZCBvdXQgd2FpdGluZyBmb3IgdGhlIGdpdC1zdm4g
bWlycm9yLCAne30nIGxhbmRlZCBidXQgbm90IGNsb3NlZFxuIi5mb3JtYXQocHVsbF9yZXF1ZXN0
IG9yIHJlcG9zaXRvcnkuYnJhbmNoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDEKKyAg
ICAgICAgICAgICAgICBsb2cud2FybmluZygnICAgIFZlcmlmeWluZyBtaXJyb3IgcHJvY2Vzc2Vz
ZWQgY2hhbmdlJykKKyAgICAgICAgICAgICAgICB0aW1lLnNsZWVwKDUpCisgICAgICAgICAgICAg
ICAgcnVuKFtyZXBvc2l0b3J5LmV4ZWN1dGFibGUoKSwgJ3B1bGwnXSwgY3dkPXJlcG9zaXRvcnku
cm9vdF9wYXRoKQorICAgICAgICAgICAgICAgIG9yaWdpbmFsID0gcmVwb3NpdG9yeS5maW5kKCdI
RUFEJywgaW5jbHVkZV9sb2c9RmFsc2UsIGluY2x1ZGVfaWRlbnRpZmllcj1GYWxzZSkKKworICAg
ICAgICBlbHNlOgorICAgICAgICAgICAgaWYgcnVuKFtyZXBvc2l0b3J5LmV4ZWN1dGFibGUoKSwg
J3B1c2gnLCBjbHMuUkVNT1RFLCB0YXJnZXRdLCBjd2Q9cmVwb3NpdG9yeS5yb290X3BhdGgpLnJl
dHVybmNvZGU6CisgICAgICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgiRmFpbGVkIHRvIHB1
c2ggJ3t9JyB0byAne30nXG4iLmZvcm1hdCh0YXJnZXQsIGNscy5SRU1PVEUpKQorICAgICAgICAg
ICAgICAgIHJldHVybiAxCisKKyAgICAgICAgY29tbWl0ID0gcmVwb3NpdG9yeS5jb21taXQoYnJh
bmNoPXRhcmdldCwgaW5jbHVkZV9sb2c9RmFsc2UpCisgICAgICAgIGlmIGlkZW50aWZpZXJfdGVt
cGxhdGUgYW5kIGNvbW1pdC5pZGVudGlmaWVyOgorICAgICAgICAgICAgbGFuZF9tZXNzYWdlID0g
J0xhbmRlZCB7fSAoe30pIScuZm9ybWF0KGlkZW50aWZpZXJfdGVtcGxhdGUuZm9ybWF0KGNvbW1p
dCkuc3BsaXQoJzogJylbLTFdLCBjb21taXQuaGFzaCkKKyAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgIGxhbmRfbWVzc2FnZSA9ICdMYW5kZWQge30hJy5mb3JtYXQoY29tbWl0Lmhhc2gpCisgICAg
ICAgIHByaW50KGxhbmRfbWVzc2FnZSkKKworICAgICAgICBpZiBwdWxsX3JlcXVlc3Q6CisgICAg
ICAgICAgICBwdWxsX3JlcXVlc3QuY29tbWVudChsYW5kX21lc3NhZ2UpCisgICAgICAgICAgICBw
dWxsX3JlcXVlc3QuY2xvc2UoKQorCisgICAgICAgIHJldHVybiAwCmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9zY21fYmFzZS5weSBi
L1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3NjbV9iYXNl
LnB5CmluZGV4IGUzMzlmZjhmY2QyNzk0OTUwNTczZmJlY2UzNDkzMmQ0NmIyN2FhMTMuLmI1OGYy
ZTU0ZDkxMzBlNGJlOWUyZTEzNTk5NTgwNzFiMjkwYzhkY2MgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Nj
cmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3NjbV9iYXNlLnB5CisrKyBi
L1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3NjbV9iYXNl
LnB5CkBAIC0yNCw3ICsyNCw5IEBAIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgcmUKIGltcG9ydCBz
aXgKIGltcG9ydCBzeXMKK2ltcG9ydCB0aW1lCiAKK2Zyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0
aW1lCiBmcm9tIGxvZ2dpbmcgaW1wb3J0IE51bGxIYW5kbGVyCiBmcm9tIHdlYmtpdHNjbXB5IGlt
cG9ydCBDb21taXQsIENvbnRyaWJ1dG9yLCBsb2cKIApAQCAtNDAsNiArNDIsMTQgQEAgY2xhc3Mg
U2NtQmFzZShvYmplY3QpOgogICAgIEdJVF9TVk5fUkVWSVNJT04gPSByZS5jb21waWxlKHInXmdp
dC1zdm4taWQ6IFxTKzpcL1wvLitAKD9QPHJldmlzaW9uPlxkKykgListListListLisnLCBmbGFn
cz1yZS5NVUxUSUxJTkUpCiAgICAgREVGQVVMVF9CUkFOQ0hFUyA9IFsnbWFpbicsICdtYXN0ZXIn
LCAndHJ1bmsnXQogCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGdtdG9mZnNldChjbHMpOgor
ICAgICAgICBpZiBzeXMudmVyc2lvbl9pbmZvID49ICgzLCAwKToKKyAgICAgICAgICAgIHJldHVy
biBpbnQodGltZS5sb2NhbHRpbWUoKS50bV9nbXRvZmYgKiAxMDAgLyAoNjAgKiA2MCkpCisKKyAg
ICAgICAgdHMgPSB0aW1lLnRpbWUoKQorICAgICAgICByZXR1cm4gaW50KChkYXRldGltZS5mcm9t
dGltZXN0YW1wKHRzKSAtIGRhdGV0aW1lLnV0Y2Zyb210aW1lc3RhbXAodHMpKS50b3RhbF9zZWNv
bmRzKCkgKiAxMDAgLyAoNjAgKiA2MCkpCisKICAgICBkZWYgX19pbml0X18oc2VsZiwgZGV2X2Jy
YW5jaGVzPU5vbmUsIHByb2RfYnJhbmNoZXM9Tm9uZSwgY29udHJpYnV0b3JzPU5vbmUsIGlkPU5v
bmUpOgogICAgICAgICBzZWxmLmRldl9icmFuY2hlcyA9IGRldl9icmFuY2hlcyBvciBzZWxmLkRF
Vl9CUkFOQ0hFUwogICAgICAgICBzZWxmLnByb2RfYnJhbmNoZXMgPSBwcm9kX2JyYW5jaGVzIG9y
IHNlbGYuUFJPRF9CUkFOQ0hFUwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMv
d2Via2l0c2NtcHkvd2Via2l0c2NtcHkvdGVzdC9naXRfdW5pdHRlc3QucHkgYi9Ub29scy9TY3Jp
cHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS90ZXN0L2dpdF91bml0dGVzdC5w
eQppbmRleCA2ZTQxMGY2ZDMzNTEzNzU0ZjgxZTdmMjc1MDczMjMwYmM5ZjkxZGNhLi45MjM1YzBh
NmUwOWU1OWQ1NDc3YzI0MjQ2NDY0MGFkNzA1NzgxMGNjIDEwMDY0NAotLS0gYS9Ub29scy9TY3Jp
cHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS90ZXN0L2dpdF91bml0dGVzdC5w
eQorKysgYi9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS90
ZXN0L2dpdF91bml0dGVzdC5weQpAQCAtMjk2LDcgKzI5Niw2IEBAIGNsYXNzIFRlc3RHaXQodGVz
dGluZy5QYXRoVGVzdENhc2UpOgogICAgICAgICAgICAgICAgICAgICBnaXQuY29tbWl0KGhhc2g9
J2JhZTVkMWU5JyksCiAgICAgICAgICAgICAgICAgICAgIGdpdC5jb21taXQoaGFzaD0nMWFiZTI1
YjQnKSwKICAgICAgICAgICAgICAgICAgICAgZ2l0LmNvbW1pdChoYXNoPSdmZmY4M2JiMicpLAot
ICAgICAgICAgICAgICAgICAgICBnaXQuY29tbWl0KGhhc2g9JzliODMxMWYyJyksCiAgICAgICAg
ICAgICAgICAgXSksIENvbW1pdC5FbmNvZGVyKCkuZGVmYXVsdChsaXN0KGdpdC5jb21taXRzKGJl
Z2luPWRpY3QoaGFzaD0nOWI4MzExZjInKSwgZW5kPWRpY3QoaGFzaD0nYmFlNWQxZTknKSkpKSkK
IAogICAgIGRlZiB0ZXN0X2NvbW1pdHNfYnJhbmNoKHNlbGYpOgpAQCAtMzA3LDcgKzMwNiw2IEBA
IGNsYXNzIFRlc3RHaXQodGVzdGluZy5QYXRoVGVzdENhc2UpOgogICAgICAgICAgICAgICAgICAg
ICBnaXQuY29tbWl0KGhhc2g9JzYyMTY1MmFkJyksCiAgICAgICAgICAgICAgICAgICAgIGdpdC5j
b21taXQoaGFzaD0nYTMwY2U4NDknKSwKICAgICAgICAgICAgICAgICAgICAgZ2l0LmNvbW1pdCho
YXNoPSdmZmY4M2JiMicpLAotICAgICAgICAgICAgICAgICAgICBnaXQuY29tbWl0KGhhc2g9Jzli
ODMxMWYyJyksCiAgICAgICAgICAgICAgICAgXSksIENvbW1pdC5FbmNvZGVyKCkuZGVmYXVsdChs
aXN0KGdpdC5jb21taXRzKGJlZ2luPWRpY3QoYXJndW1lbnQ9JzliODMxMWYyJyksIGVuZD1kaWN0
KGFyZ3VtZW50PSc2MjE2NTJhZCcpKSkpKQogCiAgICAgZGVmIHRlc3RfbG9nKHNlbGYpOgpAQCAt
MzMzLDE1ICszMzEsNiBAQCBDb21taXREYXRlOiB7dGltZV9hfQogCiAgICAgOHRoIGNvbW1pdAog
ICAgIGdpdC1zdm4taWQ6IGh0dHBzOi8vc3ZuLmV4YW1wbGUub3JnL3JlcG9zaXRvcnkvcmVwb3Np
dG9yeS90cnVua0A4IDI2OGY0NWNjLWNkMDktMDQxMC1hYjNjLWQ1MjY5MWI0ZGJmYwotCi1jb21t
aXQgMWFiZTI1YjQ0M2U5ODVmOTNiOTBkODMwZTRhN2UzNzMxMzM2YWY0ZAotQXV0aG9yOiAgICAg
Sm9uYXRoYW4gQmVkYXJkIDxqYmVkYXJkQGFwcGxlLmNvbT4KLUF1dGhvckRhdGU6IHt0aW1lX2J9
Ci1Db21taXQ6ICAgICBKb25hdGhhbiBCZWRhcmQgPGpiZWRhcmRAYXBwbGUuY29tPgotQ29tbWl0
RGF0ZToge3RpbWVfYn0KLQotICAgIDR0aCBjb21taXQKLSAgICBnaXQtc3ZuLWlkOiBodHRwczov
L3N2bi5leGFtcGxlLm9yZy9yZXBvc2l0b3J5L3JlcG9zaXRvcnkvdHJ1bmtANCAyNjhmNDVjYy1j
ZDA5LTA0MTAtYWIzYy1kNTI2OTFiNGRiZmMKICcnJy5mb3JtYXQoCiAgICAgICAgICAgICAgICAg
dGltZV9hPWRhdGV0aW1lLnV0Y2Zyb210aW1lc3RhbXAoMTYwMTY2ODAwMCArIHRpbWUudGltZXpv
bmUpLnN0cmZ0aW1lKCclYSAlYiAlZCAlSDolTTolUyAlWSArMDAwMCcpLAogICAgICAgICAgICAg
ICAgIHRpbWVfYj1kYXRldGltZS51dGNmcm9tdGltZXN0YW1wKDE2MDE2NjMwMDAgKyB0aW1lLnRp
bWV6b25lKS5zdHJmdGltZSgnJWEgJWIgJWQgJUg6JU06JVMgJVkgKzAwMDAnKSwKQEAgLTM3Miwx
NSArMzYxLDYgQEAgQ29tbWl0RGF0ZToge3RpbWVfYn0KICAgICAgICAgQ2hlcnJ5IHBpY2sKICAg
ICAgICAgZ2l0LXN2bi1pZDogaHR0cHM6Ly9zdm4ud2Via2l0Lm9yZy9yZXBvc2l0b3J5L3dlYmtp
dC90cnVua0A2IDI2OGY0NWNjLWNkMDktMDQxMC1hYjNjLWQ1MjY5MWI0ZGJmYwogICAgIGdpdC1z
dm4taWQ6IGh0dHBzOi8vc3ZuLmV4YW1wbGUub3JnL3JlcG9zaXRvcnkvcmVwb3NpdG9yeS90cnVu
a0A1IDI2OGY0NWNjLWNkMDktMDQxMC1hYjNjLWQ1MjY5MWI0ZGJmYwotCi1jb21taXQgYTMwY2U4
NDk0YmYxYWMyODA3YTY5ODQ0ZjcyNmJlNGE5ODQzY2E1NQotQXV0aG9yOiAgICAgSm9uYXRoYW4g
QmVkYXJkIDxqYmVkYXJkQGFwcGxlLmNvbT4KLUF1dGhvckRhdGU6IHt0aW1lX2N9Ci1Db21taXQ6
ICAgICBKb25hdGhhbiBCZWRhcmQgPGpiZWRhcmRAYXBwbGUuY29tPgotQ29tbWl0RGF0ZToge3Rp
bWVfY30KLQotICAgIDNyZCBjb21taXQKLSAgICBnaXQtc3ZuLWlkOiBodHRwczovL3N2bi5leGFt
cGxlLm9yZy9yZXBvc2l0b3J5L3JlcG9zaXRvcnkvdHJ1bmtAMyAyNjhmNDVjYy1jZDA5LTA0MTAt
YWIzYy1kNTI2OTFiNGRiZmMKICcnJy5mb3JtYXQoCiAgICAgICAgICAgICAgICAgdGltZV9hPWRh
dGV0aW1lLnV0Y2Zyb210aW1lc3RhbXAoMTYwMTY2NzAwMCArIHRpbWUudGltZXpvbmUpLnN0cmZ0
aW1lKCclYSAlYiAlZCAlSDolTTolUyAlWSArMDAwMCcpLAogICAgICAgICAgICAgICAgIHRpbWVf
Yj1kYXRldGltZS51dGNmcm9tdGltZXN0YW1wKDE2MDE2NjQwMDAgKyB0aW1lLnRpbWV6b25lKS5z
dHJmdGltZSgnJWEgJWIgJWQgJUg6JU06JVMgJVkgKzAwMDAnKSwKQEAgLTQ3NywxMiArNDU3LDI4
IEBAIENvbW1pdERhdGU6IHt0aW1lX2N9CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJl
cG8ubW9kaWZpZWQoc3RhZ2VkPVRydWUpLCBbJ2FkZGVkLnR4dCcsICdtb2RpZmllZC50eHQnXSkK
IAogICAgIGRlZiB0ZXN0X3JlYmFzZShzZWxmKToKLSAgICAgICAgd2l0aCBtb2Nrcy5sb2NhbC5H
aXQoc2VsZi5wYXRoKToKKyAgICAgICAgd2l0aCBtb2Nrcy5sb2NhbC5HaXQoc2VsZi5wYXRoKSwg
T3V0cHV0Q2FwdHVyZSgpOgogICAgICAgICAgICAgcmVwbyA9IGxvY2FsLkdpdChzZWxmLnBhdGgp
CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihyZXBvLmNvbW1pdChicmFuY2g9J2Jy
YW5jaC1hJykpLCAnMi4yQGJyYW5jaC1hJykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
cmVwby5yZWJhc2UodGFyZ2V0PSdtYWluJywgYmFzZT0nbWFpbicsIGhlYWQ9J2JyYW5jaC1hJywg
cmVjb21taXQ9RmFsc2UpLCAwKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIocmVw
by5jb21taXQoYnJhbmNoPSdicmFuY2gtYScpKSwgJzUuMkBicmFuY2gtYScpCiAKKyAgICBkZWYg
dGVzdF9kaWZmX2xpbmVzKHNlbGYpOgorICAgICAgICB3aXRoIG1vY2tzLmxvY2FsLkdpdChzZWxm
LnBhdGgpLCBPdXRwdXRDYXB0dXJlKCk6CisgICAgICAgICAgICByZXBvID0gbG9jYWwuR2l0KHNl
bGYucGF0aCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAg
WyctLS0gYS9DaGFuZ2VMb2cnLCAnKysrIGIvQ2hhbmdlTG9nJywgJ0BAIC0xLDAgKzEsMCBAQCcs
ICcrIFBhdGNoIFNlcmllcyddLAorICAgICAgICAgICAgICAgIGxpc3QocmVwby5kaWZmX2xpbmVz
KGJhc2U9J2JhZTVkMWU5MDk5OWQ0ZjkxNmE4YTE1ODEwY2NmYTQzZjM3YTJmZDYnKSkKKyAgICAg
ICAgICAgICkKKworICAgIGRlZiB0ZXN0X2RpZmZfbGluZXNfaWRlbnRpZmllcihzZWxmKToKKyAg
ICAgICAgd2l0aCBtb2Nrcy5sb2NhbC5HaXQoc2VsZi5wYXRoKSwgT3V0cHV0Q2FwdHVyZSgpOgor
ICAgICAgICAgICAgcmVwbyA9IGxvY2FsLkdpdChzZWxmLnBhdGgpCisgICAgICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIFsnLS0tIGEvQ2hhbmdlTG9nJywgJysrKyBi
L0NoYW5nZUxvZycsICdAQCAtMSwwICsxLDAgQEAnLCAnKyA4dGggY29tbWl0J10sCisgICAgICAg
ICAgICAgICAgbGlzdChyZXBvLmRpZmZfbGluZXMoYmFzZT0nM0BtYWluJywgaGVhZD0nNEBtYWlu
JykpCisgICAgICAgICAgICApCisKIAogY2xhc3MgVGVzdEdpdEh1Yih0ZXN0aW5nLlRlc3RDYXNl
KToKICAgICByZW1vdGUgPSAnaHR0cHM6Ly9naXRodWIuZXhhbXBsZS5jb20vV2ViS2l0L1dlYktp
dCcKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtp
dHNjbXB5L3Rlc3QvbGFuZF91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dl
YmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Rlc3QvbGFuZF91bml0dGVzdC5weQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5i
Njk0NDZiNmE2NzM1YzE5OWQyOGYzYjkyYWI1MTFkYjQ0N2RiYzUzCi0tLSAvZGV2L251bGwKKysr
IGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvdGVzdC9s
YW5kX3VuaXR0ZXN0LnB5CkBAIC0wLDAgKzEsNDM5IEBACisjIENvcHlyaWdodCAoQykgMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQg
QU5ZCisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyMgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworIyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04KKyMgQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMKKyMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisKK2ltcG9ydCBvcworaW1wb3J0IHRpbWUKKworZnJvbSB3ZWJraXRjb3Jl
cHkgaW1wb3J0IE91dHB1dENhcHR1cmUsIHRlc3RpbmcKK2Zyb20gd2Via2l0Y29yZXB5Lm1vY2tz
IGltcG9ydCBUZXJtaW5hbCBhcyBNb2NrVGVybWluYWwsIFRpbWUgYXMgTW9ja1RpbWUKK2Zyb20g
d2Via2l0c2NtcHkgaW1wb3J0IENvbnRyaWJ1dG9yLCBDb21taXQsIGxvY2FsLCBwcm9ncmFtLCBt
b2NrcworCisKK2RlZiByZXBvc2l0b3J5KHBhdGgsIGhhc19vb3BzPVRydWUsIHJlbW90ZT1Ob25l
LCBnaXRfc3ZuPUZhbHNlKToKKyAgICBicmFuY2ggPSAnZW5nL2V4YW1wbGUnCisgICAgcmVzdWx0
ID0gbW9ja3MubG9jYWwuR2l0KHBhdGgsIHJlbW90ZT1yZW1vdGUsIGdpdF9zdm49Z2l0X3N2bikK
KyAgICByZXN1bHQuY29tbWl0c1ticmFuY2hdID0gW0NvbW1pdCgKKyAgICAgICAgaGFzaD0nYTVm
ZThhZmU5YmY3ZDA3MTU4ZmNkOWU5NzMyZmYwMmE3MTJkYjJmZCcsCisgICAgICAgIGlkZW50aWZp
ZXI9JzMuMUB7fScuZm9ybWF0KGJyYW5jaCksCisgICAgICAgIHRpbWVzdGFtcD1pbnQodGltZS50
aW1lKCkpIC0gNjAsCisgICAgICAgIGF1dGhvcj1Db250cmlidXRvcignVGltIENvbW1pdHRlcics
IFsndGNvbW1pdHRlckB3ZWJraXQub3JnJ10pLAorICAgICAgICBtZXNzYWdlPSdUbyBCZSBDb21t
aXR0ZWRcblxuUmV2aWV3ZWQgYnkge30uXG4nLmZvcm1hdCgKKyAgICAgICAgICAgICdOT0JPRFkg
KE9PUFMhKScgaWYgaGFzX29vcHMgZWxzZSAnUmlja3kgUmV2aWV3ZXInLAorICAgICAgICApLAor
ICAgICldCisgICAgcmVzdWx0LmhlYWQgPSByZXN1bHQuY29tbWl0c1ticmFuY2hdWzBdCisgICAg
cmV0dXJuIHJlc3VsdAorCisKK2NsYXNzIFRlc3RMYW5kKHRlc3RpbmcuUGF0aFRlc3RDYXNlKToK
KyAgICBiYXNlcGF0aCA9ICdtb2NrL3JlcG9zaXRvcnknCisKKyAgICBkZWYgc2V0VXAoc2VsZik6
CisgICAgICAgIHN1cGVyKFRlc3RMYW5kLCBzZWxmKS5zZXRVcCgpCisgICAgICAgIG9zLm1rZGly
KG9zLnBhdGguam9pbihzZWxmLnBhdGgsICcuZ2l0JykpCisgICAgICAgIG9zLm1rZGlyKG9zLnBh
dGguam9pbihzZWxmLnBhdGgsICcuc3ZuJykpCisKKyAgICBkZWYgdGVzdF9ub25fZWRpdGFibGUo
c2VsZik6CisgICAgICAgIHdpdGggT3V0cHV0Q2FwdHVyZSgpIGFzIGNhcHR1cmVkLCBtb2Nrcy5s
b2NhbC5HaXQoc2VsZi5wYXRoKSwgbW9ja3MubG9jYWwuU3ZuKCk6CisgICAgICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKDEsIHByb2dyYW0ubWFpbigKKyAgICAgICAgICAgICAgICBhcmdzPSgnbGFu
ZCcsKSwKKyAgICAgICAgICAgICAgICBwYXRoPXNlbGYucGF0aCwKKyAgICAgICAgICAgICkpCisg
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihsb2NhbC5HaXQoc2VsZi5wYXRoKS5jb21t
aXQoKSksICc1QG1haW4nKQorCisgICAgICAgIGxvZyA9IGNhcHR1cmVkLnJvb3QubG9nLmdldHZh
bHVlKCkuc3BsaXRsaW5lcygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW2xpbmUgZm9yIGxp
bmUgaW4gbG9nIGlmICdNb2NrIHByb2Nlc3MnIG5vdCBpbiBsaW5lXSwgW10pCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBjYXB0dXJlZC5zdGRlcnIuZ2V0dmFsdWUoKSwK
KyAgICAgICAgICAgICJDYW4gb25seSAnbGFuZCcgZWRpdGFibGUgYnJhbmNoZXNcbiIsCisgICAg
ICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjYXB0dXJlZC5zdGRvdXQuZ2V0dmFsdWUo
KSwgJycpCisKKyAgICBkZWYgdGVzdF93aXRoX29vcHMoc2VsZik6CisgICAgICAgIHdpdGggT3V0
cHV0Q2FwdHVyZSgpIGFzIGNhcHR1cmVkLCByZXBvc2l0b3J5KHNlbGYucGF0aCksIG1vY2tzLmxv
Y2FsLlN2bigpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBwcm9ncmFtLm1haW4o
CisgICAgICAgICAgICAgICAgYXJncz0oJ2xhbmQnLCksCisgICAgICAgICAgICAgICAgcGF0aD1z
ZWxmLnBhdGgsCisgICAgICAgICAgICApKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChz
dHIobG9jYWwuR2l0KHNlbGYucGF0aCkuY29tbWl0KCkpLCAnMy4xQGVuZy9leGFtcGxlJykKKwor
ICAgICAgICBsb2cgPSBjYXB0dXJlZC5yb290LmxvZy5nZXR2YWx1ZSgpLnNwbGl0bGluZXMoKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgW2xpbmUgZm9yIGxpbmUgaW4g
bG9nIGlmICdNb2NrIHByb2Nlc3MnIG5vdCBpbiBsaW5lXSwgWworICAgICAgICAgICAgICAgICcg
ICAgRm91bmQgMSBjb21taXQuLi4nLAorICAgICAgICAgICAgXSwKKyAgICAgICAgKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgY2FwdHVyZWQuc3RkZXJyLmdldHZhbHVl
KCksCisgICAgICAgICAgICAiRmFpbGVkIHRvIGZpbmQgcHVsbC1yZXF1ZXN0IGFzc29jaWF0ZWQg
d2l0aCAnZW5nL2V4YW1wbGUnXG4iCisgICAgICAgICAgICAiRm91bmQgJyhPT1BTISknIG1lc3Nh
Z2UgaW4gY29tbWl0IG1lc3NhZ2VzLCBwbGVhc2UgcmVzb2x2ZSBiZWZvcmUgY29tbWl0dGluZ1xu
IiwKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhcHR1cmVkLnN0ZG91dC5n
ZXR2YWx1ZSgpLCAnJykKKworICAgIGRlZiB0ZXN0X2RlZmF1bHQoc2VsZik6CisgICAgICAgIHdp
dGggT3V0cHV0Q2FwdHVyZSgpIGFzIGNhcHR1cmVkLCByZXBvc2l0b3J5KHNlbGYucGF0aCwgaGFz
X29vcHM9RmFsc2UpLCBtb2Nrcy5sb2NhbC5Tdm4oKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoMCwgcHJvZ3JhbS5tYWluKAorICAgICAgICAgICAgICAgIGFyZ3M9KCdsYW5kJywpLAor
ICAgICAgICAgICAgICAgIHBhdGg9c2VsZi5wYXRoLAorICAgICAgICAgICAgKSkKKyAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGxvY2FsLkdpdChzZWxmLnBhdGgpLmNvbW1pdCgpKSwg
JzZAbWFpbicpCisKKyAgICAgICAgbG9nID0gY2FwdHVyZWQucm9vdC5sb2cuZ2V0dmFsdWUoKS5z
cGxpdGxpbmVzKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIFtsaW5l
IGZvciBsaW5lIGluIGxvZyBpZiAnTW9jayBwcm9jZXNzJyBub3QgaW4gbGluZV0sIFsKKyAgICAg
ICAgICAgICAgICAnICAgIEZvdW5kIDEgY29tbWl0Li4uJywKKyAgICAgICAgICAgICAgICAiUmVi
YXNpbmcgJ2VuZy9leGFtcGxlJyBmcm9tICdtYWluJyB0byAnbWFpbicuLi4iLAorICAgICAgICAg
ICAgICAgICJSZWJhc2VkICdlbmcvZXhhbXBsZScgZnJvbSAnbWFpbicgdG8gJ21haW4nISIsCisg
ICAgICAgICAgICBdLAorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAg
ICAgICAgICBjYXB0dXJlZC5zdGRlcnIuZ2V0dmFsdWUoKSwKKyAgICAgICAgICAgICJGYWlsZWQg
dG8gZmluZCBwdWxsLXJlcXVlc3QgYXNzb2NpYXRlZCB3aXRoICdlbmcvZXhhbXBsZSdcbiIsCisg
ICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjYXB0dXJlZC5zdGRvdXQuZ2V0dmFs
dWUoKSwgJ0xhbmRlZCBhNWZlOGFmZTliZjdkMDcxNThmY2Q5ZTk3MzJmZjAyYTcxMmRiMmZkIVxu
JykKKworICAgIGRlZiB0ZXN0X2Nhbm9uaWNhbGl6ZShzZWxmKToKKyAgICAgICAgd2l0aCBPdXRw
dXRDYXB0dXJlKCkgYXMgY2FwdHVyZWQsIHJlcG9zaXRvcnkoc2VsZi5wYXRoLCBoYXNfb29wcz1G
YWxzZSksIG1vY2tzLmxvY2FsLlN2bigpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgw
LCBwcm9ncmFtLm1haW4oCisgICAgICAgICAgICAgICAgYXJncz0oJ2xhbmQnLCksCisgICAgICAg
ICAgICAgICAgcGF0aD1zZWxmLnBhdGgsCisgICAgICAgICAgICAgICAgaWRlbnRpZmllcl90ZW1w
bGF0ZT0nQ2Fub25pY2FsIGxpbms6IGh0dHBzOi8vY29tbWl0cy53ZWJraXQub3JnL3t9JywKKyAg
ICAgICAgICAgICkpCisKKyAgICAgICAgICAgIGNvbW1pdCA9IGxvY2FsLkdpdChzZWxmLnBhdGgp
LmNvbW1pdChicmFuY2g9J21haW4nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIo
Y29tbWl0KSwgJzZAbWFpbicpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAg
ICAgICAgICAgIGNvbW1pdC5tZXNzYWdlLAorICAgICAgICAgICAgICAgICdUbyBCZSBDb21taXR0
ZWRcblxuJworICAgICAgICAgICAgICAgICdSZXZpZXdlZCBieSBSaWNreSBSZXZpZXdlci5cblxu
JworICAgICAgICAgICAgICAgICdDYW5vbmljYWwgbGluazogaHR0cHM6Ly9jb21taXRzLndlYmtp
dC5vcmcvNkBtYWluJywKKyAgICAgICAgICAgICkKKworICAgICAgICBsb2cgPSBjYXB0dXJlZC5y
b290LmxvZy5nZXR2YWx1ZSgpLnNwbGl0bGluZXMoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KAorICAgICAgICAgICAgW2xpbmUgZm9yIGxpbmUgaW4gbG9nIGlmICdNb2NrIHByb2Nlc3MnIG5v
dCBpbiBsaW5lXSwgWworICAgICAgICAgICAgICAgICcgICAgRm91bmQgMSBjb21taXQuLi4nLAor
ICAgICAgICAgICAgICAgICJSZWJhc2luZyAnZW5nL2V4YW1wbGUnIGZyb20gJ21haW4nIHRvICdt
YWluJy4uLiIsCisgICAgICAgICAgICAgICAgIlJlYmFzZWQgJ2VuZy9leGFtcGxlJyBmcm9tICdt
YWluJyB0byAnbWFpbichIiwKKyAgICAgICAgICAgICAgICAnMSBjb21taXQgdG8gYmUgZWRpdHRl
ZC4uLicsCisgICAgICAgICAgICBdLAorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoCisgICAgICAgICAgICBjYXB0dXJlZC5zdGRlcnIuZ2V0dmFsdWUoKSwKKyAgICAgICAgICAg
ICJGYWlsZWQgdG8gZmluZCBwdWxsLXJlcXVlc3QgYXNzb2NpYXRlZCB3aXRoICdlbmcvZXhhbXBs
ZSdcbiIsCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAg
IGNhcHR1cmVkLnN0ZG91dC5nZXR2YWx1ZSgpLAorICAgICAgICAgICAgJ1Jld3JpdGUgYTVmZThh
ZmU5YmY3ZDA3MTU4ZmNkOWU5NzMyZmYwMmE3MTJkYjJmZCAoMS8xKSAoLS0tIHNlY29uZHMgcGFz
c2VkLCByZW1haW5pbmcgLS0tIHByZWRpY3RlZClcbicKKyAgICAgICAgICAgICcxIGNvbW1pdCBz
dWNjZXNzZnVsbHkgY2Fub25pY2FsaXplZCFcbicKKyAgICAgICAgICAgICdMYW5kZWQgaHR0cHM6
Ly9jb21taXRzLndlYmtpdC5vcmcvNkBtYWluIChhNWZlOGFmZTliZjdkMDcxNThmY2Q5ZTk3MzJm
ZjAyYTcxMmRiMmZkKSFcbicsCisgICAgICAgICkKKworICAgIGRlZiB0ZXN0X25vX3N2bl9jYW5v
bmljYWxfc3ZuKHNlbGYpOgorICAgICAgICB3aXRoIE91dHB1dENhcHR1cmUoKSBhcyBjYXB0dXJl
ZCwgcmVwb3NpdG9yeShzZWxmLnBhdGgsIGhhc19vb3BzPUZhbHNlKSwgbW9ja3MubG9jYWwuU3Zu
KCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIHByb2dyYW0ubWFpbigKKyAgICAg
ICAgICAgICAgICBhcmdzPSgnbGFuZCcsKSwKKyAgICAgICAgICAgICAgICBwYXRoPXNlbGYucGF0
aCwgY2Fub25pY2FsX3N2bj1UcnVlLAorICAgICAgICAgICAgKSkKKyAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoc3RyKGxvY2FsLkdpdChzZWxmLnBhdGgpLmNvbW1pdCgpKSwgJzMuMUBlbmcv
ZXhhbXBsZScpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGNhcHR1
cmVkLnN0ZGVyci5nZXR2YWx1ZSgpLAorICAgICAgICAgICAgIkNhbm5vdCAnbGFuZCcgb24gYSBj
YW5vbmljYWwgU1ZOIHJlcG9zaXRvcnkgdGhhdCBpcyBub3QgY29uZmlndXJlZCBhcyBnaXQtc3Zu
XG4iLAorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FwdHVyZWQuc3Rkb3V0
LmdldHZhbHVlKCksICcnKQorCisgICAgZGVmIHRlc3Rfc3ZuKHNlbGYpOgorICAgICAgICBzZWxm
Lm1heERpZmYgPSBOb25lCisgICAgICAgIHdpdGggTW9ja1RpbWUsIE91dHB1dENhcHR1cmUoKSBh
cyBjYXB0dXJlZCwgcmVwb3NpdG9yeShzZWxmLnBhdGgsIGhhc19vb3BzPUZhbHNlLCBnaXRfc3Zu
PVRydWUpLCBtb2Nrcy5sb2NhbC5Tdm4oKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
MCwgcHJvZ3JhbS5tYWluKAorICAgICAgICAgICAgICAgIGFyZ3M9KCdsYW5kJywpLAorICAgICAg
ICAgICAgICAgIHBhdGg9c2VsZi5wYXRoLCBjYW5vbmljYWxfc3ZuPVRydWUsCisgICAgICAgICAg
ICApKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIobG9jYWwuR2l0KHNlbGYucGF0
aCkuY29tbWl0KCkpLCAnNkBtYWluJykKKworICAgICAgICBsb2cgPSBjYXB0dXJlZC5yb290Lmxv
Zy5nZXR2YWx1ZSgpLnNwbGl0bGluZXMoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAg
ICAgICAgICAgW2xpbmUgZm9yIGxpbmUgaW4gbG9nIGlmICdNb2NrIHByb2Nlc3MnIG5vdCBpbiBs
aW5lXSwgWworICAgICAgICAgICAgICAgICcgICAgRm91bmQgMSBjb21taXQuLi4nLAorICAgICAg
ICAgICAgICAgICJSZWJhc2luZyAnZW5nL2V4YW1wbGUnIGZyb20gJ21haW4nIHRvICdtYWluJy4u
LiIsCisgICAgICAgICAgICAgICAgIlJlYmFzZWQgJ2VuZy9leGFtcGxlJyBmcm9tICdtYWluJyB0
byAnbWFpbichIiwKKyAgICAgICAgICAgICAgICAnICAgIFZlcmlmeWluZyBtaXJyb3IgcHJvY2Vz
c2VzZWQgY2hhbmdlJywKKyAgICAgICAgICAgIF0sCisgICAgICAgICkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGNhcHR1cmVkLnN0ZGVyci5nZXR2YWx1ZSgpLAorICAg
ICAgICAgICAgIkZhaWxlZCB0byBmaW5kIHB1bGwtcmVxdWVzdCBhc3NvY2lhdGVkIHdpdGggJ2Vu
Zy9leGFtcGxlJ1xuIiwKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAg
ICAgICAgICAgY2FwdHVyZWQuc3Rkb3V0LmdldHZhbHVlKCksCisgICAgICAgICAgICAnTGFuZGVk
IGE1ZmU4YWZlOWJmN2QwNzE1OGZjZDllOTczMmZmMDJhNzEyZGIyZmQhXG4nLAorICAgICAgICAp
CisKKworY2xhc3MgVGVzdExhbmRHaXRIdWIodGVzdGluZy5QYXRoVGVzdENhc2UpOgorICAgIGJh
c2VwYXRoID0gJ21vY2svcmVwb3NpdG9yeScKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAg
ICAgc3VwZXIoVGVzdExhbmRHaXRIdWIsIHNlbGYpLnNldFVwKCkKKyAgICAgICAgb3MubWtkaXIo
b3MucGF0aC5qb2luKHNlbGYucGF0aCwgJy5naXQnKSkKKyAgICAgICAgb3MubWtkaXIob3MucGF0
aC5qb2luKHNlbGYucGF0aCwgJy5zdm4nKSkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiB3
ZWJzZXJ2ZXIoY2xzLCBhcHByb3ZlZD1Ob25lKToKKyAgICAgICAgcmVzdWx0ID0gbW9ja3MucmVt
b3RlLkdpdEh1YigpCisgICAgICAgIHJlc3VsdC51c2VycyA9IGRpY3QoCisgICAgICAgICAgICBy
cmV2aWV3ZXI9Q29udHJpYnV0b3IoJ1JpY2t5IFJldmlld2VyJywgWydycmV2aWV3ZXJAd2Via2l0
Lm9yZyddLCBnaXRodWI9J3JyZXZpZXdlcicpLAorICAgICAgICAgICAgdGNvbnRyaWJ1dG9yPUNv
bnRyaWJ1dG9yKCdUaW0gQ29udHJpYnV0b3InLCBbJ3Rjb250cmlidXRvckB3ZWJraXQub3JnJ10s
IGdpdGh1Yj0ndGNvbnRyaWJ1dG9yJyksCisgICAgICAgICkKKyAgICAgICAgcmVzdWx0Lmlzc3Vl
cyA9IHsKKyAgICAgICAgICAgIDE6IGRpY3QoCisgICAgICAgICAgICAgICAgY29tbWVudHM9W10s
CisgICAgICAgICAgICAgICAgYXNzaWduZWVzPVtdLAorICAgICAgICAgICAgKQorICAgICAgICB9
CisgICAgICAgIHJlc3VsdC5wdWxsX3JlcXVlc3RzID0gW2RpY3QoCisgICAgICAgICAgICBudW1i
ZXI9MSwKKyAgICAgICAgICAgIHN0YXRlPSdvcGVuJywKKyAgICAgICAgICAgIHRpdGxlPSdFeGFt
cGxlIENoYW5nZScsCisgICAgICAgICAgICB1c2VyPWRpY3QobG9naW49J3Rjb250cmlidXRvcicp
LAorICAgICAgICAgICAgYm9keT0nJycjIyMjIGE1ZmU4YWZlOWJmN2QwNzE1OGZjZDllOTczMmZm
MDJhNzEyZGIyZmQKKyAgICA8cHJlPgorICAgIFRvIEJlIENvbW1pdHRlZAorCisgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgPC9wcmU+CisgICAgJycnLAorICAgICAgICAgICAg
aGVhZD1kaWN0KHJlZj0ndXNlcm5hbWU6ZW5nL2V4YW1wbGUnKSwKKyAgICAgICAgICAgIGJhc2U9
ZGljdChyZWY9J21haW4nKSwKKyAgICAgICAgICAgIHJlcXVlc3RlZF9yZXZpZXdzPVtkaWN0KGxv
Z2luPSdycmV2aWV3ZXInKV0sCisgICAgICAgICAgICByZXZpZXdzPVsKKyAgICAgICAgICAgICAg
ICBkaWN0KHVzZXI9ZGljdChsb2dpbj0ncnJldmlld2VyJyksIHN0YXRlPSdBUFBST1ZFRCcpCisg
ICAgICAgICAgICBdIGlmIGFwcHJvdmVkIGVsc2UgW10gKyBbCisgICAgICAgICAgICAgICAgZGlj
dCh1c2VyPWRpY3QobG9naW49J3JyZXZpZXdlcicpLCBzdGF0ZT0nQ0hBTkdFU19SRVFVRVNURUQn
KQorICAgICAgICAgICAgXSBpZiBhcHByb3ZlZCBpcyBub3QgTm9uZSBlbHNlIFtdLCBfbGlua3M9
ZGljdCgKKyAgICAgICAgICAgICAgICBpc3N1ZT1kaWN0KGhyZWY9J2h0dHBzOi8ve30vaXNzdWVz
LzEnLmZvcm1hdChyZXN1bHQuYXBpX3JlbW90ZSkpLAorICAgICAgICAgICAgKSwKKyAgICAgICAg
KV0KKyAgICAgICAgcmV0dXJuIHJlc3VsdAorCisgICAgZGVmIHRlc3Rfbm9fcmV2aWV3ZXIoc2Vs
Zik6CisgICAgICAgIHdpdGggT3V0cHV0Q2FwdHVyZSgpIGFzIGNhcHR1cmVkLCBzZWxmLndlYnNl
cnZlcigpIGFzIHJlbW90ZSwgXAorICAgICAgICAgICAgICAgIHJlcG9zaXRvcnkoc2VsZi5wYXRo
LCByZW1vdGU9J2h0dHBzOi8ve30nLmZvcm1hdChyZW1vdGUucmVtb3RlKSksIG1vY2tzLmxvY2Fs
LlN2bigpOgorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIHByb2dyYW0ubWFpbigK
KyAgICAgICAgICAgICAgICBhcmdzPSgnbGFuZCcsKSwKKyAgICAgICAgICAgICAgICBwYXRoPXNl
bGYucGF0aCwKKyAgICAgICAgICAgICkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0
cihsb2NhbC5HaXQoc2VsZi5wYXRoKS5jb21taXQoKSksICczLjFAZW5nL2V4YW1wbGUnKQorCisg
ICAgICAgIGxvZyA9IGNhcHR1cmVkLnJvb3QubG9nLmdldHZhbHVlKCkuc3BsaXRsaW5lcygpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBbbGluZSBmb3IgbGluZSBpbiBs
b2cgaWYgJ01vY2sgcHJvY2Vzcycgbm90IGluIGxpbmVdLCBbCisgICAgICAgICAgICAgICAgJyAg
ICBGb3VuZCAxIGNvbW1pdC4uLicsCisgICAgICAgICAgICBdLAorICAgICAgICApCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBjYXB0dXJlZC5zdGRlcnIuZ2V0dmFsdWUo
KSwKKyAgICAgICAgICAgICJGb3VuZCAnKE9PUFMhKScgbWVzc2FnZSBpbiBjb21taXQgbWVzc2Fn
ZXMsIHBsZWFzZSByZXNvbHZlIGJlZm9yZSBjb21taXR0aW5nXG4iLAorICAgICAgICApCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FwdHVyZWQuc3Rkb3V0LmdldHZhbHVlKCksICcnKQorCisg
ICAgZGVmIHRlc3RfYmxvY2tpbmdfcmV2aWV3ZXIoc2VsZik6CisgICAgICAgIHdpdGggT3V0cHV0
Q2FwdHVyZSgpIGFzIGNhcHR1cmVkLCBzZWxmLndlYnNlcnZlcihhcHByb3ZlZD1GYWxzZSkgYXMg
cmVtb3RlLCBcCisgICAgICAgICAgICAgICAgcmVwb3NpdG9yeShzZWxmLnBhdGgsIGhhc19vb3Bz
PUZhbHNlLCByZW1vdGU9J2h0dHBzOi8ve30nLmZvcm1hdChyZW1vdGUucmVtb3RlKSksIG1vY2tz
LmxvY2FsLlN2bigpOgorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIHByb2dyYW0u
bWFpbigKKyAgICAgICAgICAgICAgICBhcmdzPSgnbGFuZCcsKSwKKyAgICAgICAgICAgICAgICBw
YXRoPXNlbGYucGF0aCwKKyAgICAgICAgICAgICkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHN0cihsb2NhbC5HaXQoc2VsZi5wYXRoKS5jb21taXQoKSksICczLjFAZW5nL2V4YW1wbGUn
KQorCisgICAgICAgIGxvZyA9IGNhcHR1cmVkLnJvb3QubG9nLmdldHZhbHVlKCkuc3BsaXRsaW5l
cygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBbbGluZSBmb3IgbGlu
ZSBpbiBsb2cgaWYgJ01vY2sgcHJvY2Vzcycgbm90IGluIGxpbmVdLCBbCisgICAgICAgICAgICAg
ICAgJyAgICBGb3VuZCAxIGNvbW1pdC4uLicsCisgICAgICAgICAgICBdLAorICAgICAgICApCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBjYXB0dXJlZC5zdGRlcnIuZ2V0
dmFsdWUoKSwKKyAgICAgICAgICAgICJSaWNreSBSZXZpZXdlciBpcyBibG9ja2luZyBsYW5kaW5n
ICdQUiAxIHwgRXhhbXBsZSBDaGFuZ2UnXG4iLAorICAgICAgICApCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoY2FwdHVyZWQuc3Rkb3V0LmdldHZhbHVlKCksICcnKQorCisgICAgZGVmIHRlc3Rf
aW5zZXJ0X3JldmlldyhzZWxmKToKKyAgICAgICAgd2l0aCBPdXRwdXRDYXB0dXJlKCkgYXMgY2Fw
dHVyZWQsIE1vY2tUZXJtaW5hbC5pbnB1dCgneScpLCBzZWxmLndlYnNlcnZlcihhcHByb3ZlZD1U
cnVlKSBhcyByZW1vdGUsIFwKKyAgICAgICAgICAgICAgICByZXBvc2l0b3J5KHNlbGYucGF0aCwg
aGFzX29vcHM9VHJ1ZSwgcmVtb3RlPSdodHRwczovL3t9Jy5mb3JtYXQocmVtb3RlLnJlbW90ZSkp
LCBtb2Nrcy5sb2NhbC5Tdm4oKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcHJv
Z3JhbS5tYWluKAorICAgICAgICAgICAgICAgIGFyZ3M9KCdsYW5kJywpLAorICAgICAgICAgICAg
ICAgIHBhdGg9c2VsZi5wYXRoLAorICAgICAgICAgICAgKSkKKworICAgICAgICAgICAgcmVwbyA9
IGxvY2FsLkdpdChzZWxmLnBhdGgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihy
ZXBvLmNvbW1pdCgpKSwgJzZAbWFpbicpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAor
ICAgICAgICAgICAgICAgIFtjb21tZW50LmNvbnRlbnQgZm9yIGNvbW1lbnQgaW4gcmVwby5yZW1v
dGUoKS5wdWxsX3JlcXVlc3RzLmdldCgxKS5jb21tZW50c10sCisgICAgICAgICAgICAgICAgWydM
YW5kZWQgYTVmZThhZmU5YmY3ZDA3MTU4ZmNkOWU5NzMyZmYwMmE3MTJkYjJmZCEnXSwKKyAgICAg
ICAgICAgICkKKworICAgICAgICBsb2cgPSBjYXB0dXJlZC5yb290LmxvZy5nZXR2YWx1ZSgpLnNw
bGl0bGluZXMoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgW2xpbmUg
Zm9yIGxpbmUgaW4gbG9nIGlmICdNb2NrIHByb2Nlc3MnIG5vdCBpbiBsaW5lXSwgWworICAgICAg
ICAgICAgICAgICcgICAgRm91bmQgMSBjb21taXQuLi4nLAorICAgICAgICAgICAgICAgICdTZXR0
aW5nIFJpY2t5IFJldmlld2VyIGFzIHJldmlld2VyJywKKyAgICAgICAgICAgICAgICAiUmViYXNp
bmcgJ2VuZy9leGFtcGxlJyBmcm9tICdtYWluJyB0byAnbWFpbicuLi4iLAorICAgICAgICAgICAg
ICAgICJSZWJhc2VkICdlbmcvZXhhbXBsZScgZnJvbSAnbWFpbicgdG8gJ21haW4nISIsCisgICAg
ICAgICAgICBdLAorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FwdHVyZWQu
c3RkZXJyLmdldHZhbHVlKCksICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAg
ICAgICAgY2FwdHVyZWQuc3Rkb3V0LmdldHZhbHVlKCksCisgICAgICAgICAgICAiU2V0ICdSaWNr
eSBSZXZpZXdlcicgYXMgeW91ciByZXZpZXdlcj8gKFllcy9Obyk6IFxuIgorICAgICAgICAgICAg
J0xhbmRlZCBhNWZlOGFmZTliZjdkMDcxNThmY2Q5ZTk3MzJmZjAyYTcxMmRiMmZkIVxuJywKKyAg
ICAgICAgKQorCisKK2NsYXNzIFRlc3RMYW5kQml0QnVja2V0KHRlc3RpbmcuUGF0aFRlc3RDYXNl
KToKKyAgICBiYXNlcGF0aCA9ICdtb2NrL3JlcG9zaXRvcnknCisKKyAgICBkZWYgc2V0VXAoc2Vs
Zik6CisgICAgICAgIHN1cGVyKFRlc3RMYW5kQml0QnVja2V0LCBzZWxmKS5zZXRVcCgpCisgICAg
ICAgIG9zLm1rZGlyKG9zLnBhdGguam9pbihzZWxmLnBhdGgsICcuZ2l0JykpCisgICAgICAgIG9z
Lm1rZGlyKG9zLnBhdGguam9pbihzZWxmLnBhdGgsICcuc3ZuJykpCisKKyAgICBAY2xhc3NtZXRo
b2QKKyAgICBkZWYgd2Vic2VydmVyKGNscywgYXBwcm92ZWQ9Tm9uZSk6CisgICAgICAgIHJlc3Vs
dCA9IG1vY2tzLnJlbW90ZS5CaXRCdWNrZXQoKQorICAgICAgICByZXN1bHQucHVsbF9yZXF1ZXN0
cyA9IFtkaWN0KAorICAgICAgICAgICAgaWQ9MSwKKyAgICAgICAgICAgIHN0YXRlPSdPUEVOJywK
KyAgICAgICAgICAgIG9wZW49VHJ1ZSwKKyAgICAgICAgICAgIGNsb3NlZD1GYWxzZSwKKyAgICAg
ICAgICAgIGFjdGl2aXRpZXM9W10sCisgICAgICAgICAgICB0aXRsZT0nRXhhbXBsZSBDaGFuZ2Un
LAorICAgICAgICAgICAgYXV0aG9yPWRpY3QoCisgICAgICAgICAgICAgICAgdXNlcj1kaWN0KAor
ICAgICAgICAgICAgICAgICAgICBuYW1lPSd0Y29udHJpYnV0b3InLAorICAgICAgICAgICAgICAg
ICAgICBlbWFpbEFkZHJlc3M9J3Rjb250cmlidXRvckBhcHBsZS5jb20nLAorICAgICAgICAgICAg
ICAgICAgICBkaXNwbGF5TmFtZT0nVGltIENvbnRyaWJ1dG9yJywKKyAgICAgICAgICAgICAgICAp
LAorICAgICAgICAgICAgKSwgYm9keT0nJycjIyMjIGE1ZmU4YWZlOWJmN2QwNzE1OGZjZDllOTcz
MmZmMDJhNzEyZGIyZmQKKyAgICBgYGAKKyAgICBUbyBCZSBDb21taXR0ZWQKKworICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgIGBgYAorICAgICcnJywKKyAgICAgICAgICAgIGZy
b21SZWY9ZGljdChkaXNwbGF5SWQ9J2VuZy9leGFtcGxlJywgaWQ9J3JlZnMvaGVhZHMvZW5nL2V4
YW1wbGUnKSwKKyAgICAgICAgICAgIHRvUmVmPWRpY3QoZGlzcGxheUlkPSdtYWluJywgaWQ9J3Jl
ZnMvaGVhZHMvbWFpbicpLAorICAgICAgICAgICAgcmV2aWV3ZXJzPVsKKyAgICAgICAgICAgICAg
ICBkaWN0KAorICAgICAgICAgICAgICAgICAgICB1c2VyPWRpY3QoCisgICAgICAgICAgICAgICAg
ICAgICAgICBkaXNwbGF5TmFtZT0nUmlja3kgUmV2aWV3ZXInLAorICAgICAgICAgICAgICAgICAg
ICAgICAgZW1haWxBZGRyZXNzPSdycmV2aWV3ZXJAd2Via2l0Lm9yZycsCisgICAgICAgICAgICAg
ICAgICAgICksIGFwcHJvdmVkPVRydWUgaWYgYXBwcm92ZWQgZWxzZSBGYWxzZSwKKyAgICAgICAg
ICAgICAgICAgICAgc3RhdHVzPSdORUVEU19XT1JLJyBpZiBhcHByb3ZlZCBpcyBGYWxzZSBlbHNl
IE5vbmUsCisgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIF0sCisgICAgICAgICldCisg
ICAgICAgIHJldHVybiByZXN1bHQKKworICAgIGRlZiB0ZXN0X25vX3Jldmlld2VyKHNlbGYpOgor
ICAgICAgICB3aXRoIE91dHB1dENhcHR1cmUoKSBhcyBjYXB0dXJlZCwgc2VsZi53ZWJzZXJ2ZXIo
KSBhcyByZW1vdGUsIHJlcG9zaXRvcnkoCisgICAgICAgICAgICAgICAgc2VsZi5wYXRoLCByZW1v
dGU9J3NzaDovL2dpdEB7fS97fS97fS5naXQnLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAg
cmVtb3RlLmhvc3RzWzBdLCByZW1vdGUucHJvamVjdC5zcGxpdCgnLycpWzFdLCByZW1vdGUucHJv
amVjdC5zcGxpdCgnLycpWzNdLAorICAgICAgICAgICAgICAgICkpLCBtb2Nrcy5sb2NhbC5Tdm4o
KToKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBwcm9ncmFtLm1haW4oCisgICAg
ICAgICAgICAgICAgYXJncz0oJ2xhbmQnLCksCisgICAgICAgICAgICAgICAgcGF0aD1zZWxmLnBh
dGgsCisgICAgICAgICAgICApKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIobG9j
YWwuR2l0KHNlbGYucGF0aCkuY29tbWl0KCkpLCAnMy4xQGVuZy9leGFtcGxlJykKKworICAgICAg
ICBsb2cgPSBjYXB0dXJlZC5yb290LmxvZy5nZXR2YWx1ZSgpLnNwbGl0bGluZXMoKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgW2xpbmUgZm9yIGxpbmUgaW4gbG9nIGlm
ICdNb2NrIHByb2Nlc3MnIG5vdCBpbiBsaW5lXSwgWworICAgICAgICAgICAgICAgICcgICAgRm91
bmQgMSBjb21taXQuLi4nLAorICAgICAgICAgICAgXSwKKyAgICAgICAgKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKAorICAgICAgICAgICAgY2FwdHVyZWQuc3RkZXJyLmdldHZhbHVlKCksCisg
ICAgICAgICAgICAiRm91bmQgJyhPT1BTISknIG1lc3NhZ2UgaW4gY29tbWl0IG1lc3NhZ2VzLCBw
bGVhc2UgcmVzb2x2ZSBiZWZvcmUgY29tbWl0dGluZ1xuIiwKKyAgICAgICAgKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGNhcHR1cmVkLnN0ZG91dC5nZXR2YWx1ZSgpLCAnJykKKworICAgIGRl
ZiB0ZXN0X2Jsb2NraW5nX3Jldmlld2VyKHNlbGYpOgorICAgICAgICB3aXRoIE91dHB1dENhcHR1
cmUoKSBhcyBjYXB0dXJlZCwgc2VsZi53ZWJzZXJ2ZXIoYXBwcm92ZWQ9RmFsc2UpIGFzIHJlbW90
ZSwgcmVwb3NpdG9yeSgKKyAgICAgICAgICAgICAgICBzZWxmLnBhdGgsIGhhc19vb3BzPUZhbHNl
LCByZW1vdGU9J3NzaDovL2dpdEB7fS97fS97fS5naXQnLmZvcm1hdCgKKyAgICAgICAgICAgICAg
ICAgICAgcmVtb3RlLmhvc3RzWzBdLCByZW1vdGUucHJvamVjdC5zcGxpdCgnLycpWzFdLCByZW1v
dGUucHJvamVjdC5zcGxpdCgnLycpWzNdLAorICAgICAgICAgICAgICAgICkpLCBtb2Nrcy5sb2Nh
bC5Tdm4oKToKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBwcm9ncmFtLm1haW4o
CisgICAgICAgICAgICAgICAgYXJncz0oJ2xhbmQnLCksCisgICAgICAgICAgICAgICAgcGF0aD1z
ZWxmLnBhdGgsCisgICAgICAgICAgICApKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChz
dHIobG9jYWwuR2l0KHNlbGYucGF0aCkuY29tbWl0KCkpLCAnMy4xQGVuZy9leGFtcGxlJykKKwor
ICAgICAgICBsb2cgPSBjYXB0dXJlZC5yb290LmxvZy5nZXR2YWx1ZSgpLnNwbGl0bGluZXMoKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgW2xpbmUgZm9yIGxpbmUgaW4g
bG9nIGlmICdNb2NrIHByb2Nlc3MnIG5vdCBpbiBsaW5lXSwgWworICAgICAgICAgICAgICAgICcg
ICAgRm91bmQgMSBjb21taXQuLi4nLAorICAgICAgICAgICAgXSwKKyAgICAgICAgKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgY2FwdHVyZWQuc3RkZXJyLmdldHZhbHVl
KCksCisgICAgICAgICAgICAiUmlja3kgUmV2aWV3ZXIgaXMgYmxvY2tpbmcgbGFuZGluZyAnUFIg
MSB8IEV4YW1wbGUgQ2hhbmdlJ1xuIiwKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGNhcHR1cmVkLnN0ZG91dC5nZXR2YWx1ZSgpLCAnJykKKworICAgIGRlZiB0ZXN0X2luc2Vy
dF9yZXZpZXcoc2VsZik6CisgICAgICAgIHdpdGggT3V0cHV0Q2FwdHVyZSgpIGFzIGNhcHR1cmVk
LCBNb2NrVGVybWluYWwuaW5wdXQoJ3knKSwgc2VsZi53ZWJzZXJ2ZXIoYXBwcm92ZWQ9VHJ1ZSkg
YXMgcmVtb3RlLCByZXBvc2l0b3J5KAorICAgICAgICAgICAgICAgIHNlbGYucGF0aCwgaGFzX29v
cHM9VHJ1ZSwgcmVtb3RlPSdzc2g6Ly9naXRAe30ve30ve30uZ2l0Jy5mb3JtYXQoCisgICAgICAg
ICAgICAgICAgICAgIHJlbW90ZS5ob3N0c1swXSwgcmVtb3RlLnByb2plY3Quc3BsaXQoJy8nKVsx
XSwgcmVtb3RlLnByb2plY3Quc3BsaXQoJy8nKVszXSwKKyAgICAgICAgICAgICAgICApKSwgbW9j
a3MubG9jYWwuU3ZuKCk6CisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcHJvZ3Jh
bS5tYWluKAorICAgICAgICAgICAgICAgIGFyZ3M9KCdsYW5kJywpLAorICAgICAgICAgICAgICAg
IHBhdGg9c2VsZi5wYXRoLAorICAgICAgICAgICAgKSkKKyAgICAgICAgICAgIHJlcG8gPSBsb2Nh
bC5HaXQoc2VsZi5wYXRoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIocmVwby5j
b21taXQoKSksICc2QG1haW4nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAg
ICAgICAgICAgICBbY29tbWVudC5jb250ZW50IGZvciBjb21tZW50IGluIHJlcG8ucmVtb3RlKCku
cHVsbF9yZXF1ZXN0cy5nZXQoMSkuY29tbWVudHNdLAorICAgICAgICAgICAgICAgIFsnTGFuZGVk
IGE1ZmU4YWZlOWJmN2QwNzE1OGZjZDllOTczMmZmMDJhNzEyZGIyZmQhJ10sCisgICAgICAgICAg
ICApCisKKyAgICAgICAgbG9nID0gY2FwdHVyZWQucm9vdC5sb2cuZ2V0dmFsdWUoKS5zcGxpdGxp
bmVzKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIFtsaW5lIGZvciBs
aW5lIGluIGxvZyBpZiAnTW9jayBwcm9jZXNzJyBub3QgaW4gbGluZV0sIFsKKyAgICAgICAgICAg
ICAgICAnICAgIEZvdW5kIDEgY29tbWl0Li4uJywKKyAgICAgICAgICAgICAgICAnU2V0dGluZyBS
aWNreSBSZXZpZXdlciBhcyByZXZpZXdlcicsCisgICAgICAgICAgICAgICAgIlJlYmFzaW5nICdl
bmcvZXhhbXBsZScgZnJvbSAnbWFpbicgdG8gJ21haW4nLi4uIiwKKyAgICAgICAgICAgICAgICAi
UmViYXNlZCAnZW5nL2V4YW1wbGUnIGZyb20gJ21haW4nIHRvICdtYWluJyEiLAorICAgICAgICAg
ICAgXSwKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhcHR1cmVkLnN0ZGVy
ci5nZXR2YWx1ZSgpLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAg
IGNhcHR1cmVkLnN0ZG91dC5nZXR2YWx1ZSgpLAorICAgICAgICAgICAgIlNldCAnUmlja3kgUmV2
aWV3ZXInIGFzIHlvdXIgcmV2aWV3ZXI/IChZZXMvTm8pOiBcbiIKKyAgICAgICAgICAgICdMYW5k
ZWQgYTVmZThhZmU5YmY3ZDA3MTU4ZmNkOWU5NzMyZmYwMmE3MTJkYjJmZCFcbicsCisgICAgICAg
ICkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443327</attachid>
            <date>2021-11-04 11:34:28 -0700</date>
            <delta_ts>2021-11-04 11:34:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231821-20211104113427.patch</filename>
            <type>text/plain</type>
            <size>56374</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1MjcxCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNjgwNDk2MzI4YTg5Y2M0NDE3N2E2MDcyYjViMGM1YTg2
MWM2ZDVjNy4uMDZkZTc0MzA3ZjRkM2JhNmFhNmQ1M2IzODY3MjhlOTI3MDZmM2MxMyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1
IEBACisyMDIxLTExLTAzICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbZ2l0LXdlYmtpdF0gQWRkIGxhbmQgY29tbWFuZAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxODIxCisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS84NDMwOTMzOT4KKworICAgICAgICBSZXZpZXdlZCBieSBEZXdlaSBaaHUuCisKKyAgICAg
ICAgKiBTY3JpcHRzL2dpdC13ZWJraXQ6IFdlYktpdCBzdGlsbCB1c2VzIFN2biBhcyBpdCdzIGNh
bm9uaWNhbCBzb3VyY2Ugb2YgdHJ1dGguCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Vi
a2l0c2NtcHkvc2V0dXAucHk6IEJ1bXAgdmVyc2lvbi4KKyAgICAgICAgKiBTY3JpcHRzL2xpYnJh
cmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9fX2luaXRfXy5weTogRGl0dG8uCisgICAgICAg
ICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbG9jYWwvZ2l0LnB5
OgorICAgICAgICAoR2l0Ll90b19naXRfcmVmKTogQ29udmVydCBpZGVudGlmaWVycyBvciByZXZp
c2lvbnMgdG8gZ2l0IHJlZnMuCisgICAgICAgIChHaXQuY2hlY2tvdXQpOiBVc2Ugc2hhcmVkIF90
b19naXRfcmVmIGZ1bmN0aW9uLgorICAgICAgICAoR2l0LnJlYmFzZSk6IFN1cHBvcnQgcmViYXNp
bmcgaWRlbnRpZmllcnMuCisgICAgICAgIChHaXQucHVsbCk6IEdlbmVyYWxpemUgY29tcHV0YXRp
b24gb2YgdGhlIGdtdG9mZnNldC4KKyAgICAgICAgKEdpdC5kaWZmX2xpbmVzKTogT3V0cHV0IGRp
ZmYgYmV0d2VlbiB0d28gcmVmcy4KKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy93ZWJraXRz
Y21weS93ZWJraXRzY21weS9tb2Nrcy9sb2NhbC9naXQucHk6CisgICAgICAgIChHaXQuX19pbml0
X18pOiBBZGQgYnJhbmNoLCBwdXNoIGFuZCBkaWZmIGNvbW1hbmRzLgorICAgICAgICAoR2l0LmZp
bHRlcl9icmFuY2gpOiBTdXBwb3J0IHNlZC4KKyAgICAgICAgKEdpdC5wdWxsKTogTW9jayBgZ2l0
IHB1bGxgCisgICAgICAgIChHaXQubW92ZV9icmFuY2gpOiBNb2NrIGBnaXQgcmViYXNlYC4KKyAg
ICAgICAgKEdpdC5wdXNoKTogTW9jayBgZ2l0IHB1c2hgLgorICAgICAgICAoR2l0LnJlc2V0KTog
TW9jayBgZ2l0IHJlc2V0IEhFQUR+I2AuCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Vi
a2l0c2NtcHkvd2Via2l0c2NtcHkvcHJvZ3JhbS9fX2luaXRfXy5weToKKyAgICAgICAgKG1haW4p
OiBBZGQgbGFuZCBjb21tYW5kLgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNj
bXB5L3dlYmtpdHNjbXB5L3Byb2dyYW0vbGFuZC5weTogQWRkZWQuCisgICAgICAgIChMYW5kLnBh
cnNlcik6CisgICAgICAgIChMYW5kLm1haW4pOiBSZWJhc2UgdGhlIGN1cnJlbnQgYnJhbmNoIGFn
YWluc3QgaXQncyByb290LCBhc3NpZ24gdGhlIHJldmlld2VyLCBjaGVjayBmb3IgJ09PUFMnIG1l
c3NhZ2VzLAorICAgICAgICByZWJhc2UgYWdhaW5zdCB0YXJnZXQgYnJhbmNoLCB1cGRhdGUgdGFy
Z2V0IGJyYW5jaCByZWYsIG9wdGlvbmFsbHkgY2Fub25pY2FsaXplLCBwdXNoIChvciBzdm4gZGNv
bW1pdCkgYW5kCisgICAgICAgIHVwZGF0ZSBhbmQgY2xvc2UgcHVsbC1yZXF1ZXN0IHdpdGggaW5m
b3JtYXRpb24gb24gdGhlIGxhbmRlZCBjb21taXQuCisgICAgICAgICogU2NyaXB0cy9saWJyYXJp
ZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvc2NtX2Jhc2UucHk6CisgICAgICAgIChTY21CYXNl
LmdtdG9mZnNldCk6IEFkZCBzaGFyZWQgY29tcHV0YXRpb24gb2YgR01UIG9mZnNldC4KKyAgICAg
ICAgKiBTY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS90ZXN0L2dpdF91
bml0dGVzdC5weToKKyAgICAgICAgKFRlc3RHaXQudGVzdF9jb21taXRzKTogYGdpdCBsb2dgIHNo
b3VsZCBleGNsdWRlIGJhc2UgcmVmLgorICAgICAgICAoVGVzdEdpdC50ZXN0X2NvbW1pdHNfYnJh
bmNoKTogRGl0dG8uCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Vi
a2l0c2NtcHkvdGVzdC9sYW5kX3VuaXR0ZXN0LnB5OiBBZGRlZC4KKyAgICAgICAgKHJlcG9zaXRv
cnkpOgorICAgICAgICAoVGVzdExhbmQpOgorICAgICAgICAoVGVzdExhbmRHaXRIdWIpOgorICAg
ICAgICAoVGVzdExhbmRCaXRCdWNrZXQpOgorCiAyMDIxLTExLTA0ICBKb25hdGhhbiBCZWRhcmQg
IDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICBbZ2VuZXJhdGUtd2Via2l0LWNzcy1kb2Nz
XSBDaGFuZ2Ugc2hlYmFuZyB0byBQeXRob24gMwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9n
aXQtd2Via2l0IGIvVG9vbHMvU2NyaXB0cy9naXQtd2Via2l0CmluZGV4IDBkMmMyMmZiYWMxZjlm
ZGQ0Y2JiYjgzNWE2NDJkMWUxYTRiMTFkOTAuLjRiNzI3MDdmODkxMjhjZTExOWIyZTMxZWUyZTk4
NTI4ZmUyYTEyN2UgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvZ2l0LXdlYmtpdAorKysgYi9U
b29scy9TY3JpcHRzL2dpdC13ZWJraXQKQEAgLTcyLDUgKzcyLDYgQEAgaWYgJ19fbWFpbl9fJyA9
PSBfX25hbWVfXzoKICAgICAgICAgc3VidmVyc2lvbj1pc193ZWJraXRfZmlsdGVyKCdodHRwczov
L3N2bi53ZWJraXQub3JnL3JlcG9zaXRvcnkvd2Via2l0JyksCiAgICAgICAgIGFkZGl0aW9uYWxf
c2V0dXA9aXNfd2Via2l0X2ZpbHRlcihhZGRpdGlvbmFsX3NldHVwKSwKICAgICAgICAgaG9va3M9
b3MucGF0aC5qb2luKG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1l
KF9fZmlsZV9fKSkpLCAnaG9va3MnKSwKKyAgICAgICAgY2Fub25pY2FsX3N2bj1pc193ZWJraXRf
ZmlsdGVyKFRydWUpLAogICAgICkpCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvbGlicmFy
aWVzL3dlYmtpdHNjbXB5L3NldHVwLnB5IGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0
c2NtcHkvc2V0dXAucHkKaW5kZXggMjViMGRjNmYwYWM0NDEzYjkzNDFlNzgxNzgxODE0MjUzM2Yw
ODM4Yi4uNDNiODJkNjE4ZjUyZTRiZjVjMzY5YTBiNzk3MTQxNDNjMDRkNmQ1NCAxMDA2NDQKLS0t
IGEvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvc2V0dXAucHkKKysrIGIvVG9v
bHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvc2V0dXAucHkKQEAgLTI5LDcgKzI5LDcg
QEAgZGVmIHJlYWRtZSgpOgogCiBzZXR1cCgKICAgICBuYW1lPSd3ZWJraXRzY21weScsCi0gICAg
dmVyc2lvbj0nMi4yLjIzJywKKyAgICB2ZXJzaW9uPSczLjAuMCcsCiAgICAgZGVzY3JpcHRpb249
J0xpYnJhcnkgZGVzaWduZWQgdG8gaW50ZXJhY3Qgd2l0aCBnaXQgYW5kIHN2biByZXBvc2l0b3Jp
ZXMuJywKICAgICBsb25nX2Rlc2NyaXB0aW9uPXJlYWRtZSgpLAogICAgIGNsYXNzaWZpZXJzPVsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNj
bXB5L19faW5pdF9fLnB5IGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Vi
a2l0c2NtcHkvX19pbml0X18ucHkKaW5kZXggYzk3MTYwMDgzZTc0MTk2NDY2YTUwNDU2MWJmZDQy
ZmY2YmUxNTNmYS4uNWUxMWEyNmFmZDBjYmJhZjkxN2U0NWI4ODhjZTZhNDI5MGQ5M2U0NiAxMDA2
NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkv
X19pbml0X18ucHkKKysrIGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Vi
a2l0c2NtcHkvX19pbml0X18ucHkKQEAgLTQ2LDcgKzQ2LDcgQEAgZXhjZXB0IEltcG9ydEVycm9y
OgogICAgICAgICAiUGxlYXNlIGluc3RhbGwgd2Via2l0Y29yZXB5IHdpdGggYHBpcCBpbnN0YWxs
IHdlYmtpdGNvcmVweSAtLWV4dHJhLWluZGV4LXVybCA8cGFja2FnZSBpbmRleCBVUkw+YCIKICAg
ICApCiAKLXZlcnNpb24gPSBWZXJzaW9uKDIsIDIsIDIzKQordmVyc2lvbiA9IFZlcnNpb24oMywg
MCwgMCkKIAogQXV0b0luc3RhbGwucmVnaXN0ZXIoUGFja2FnZSgnZmFzdGVuZXJzJywgVmVyc2lv
bigwLCAxNSwgMCkpKQogQXV0b0luc3RhbGwucmVnaXN0ZXIoUGFja2FnZSgnamluamEyJywgVmVy
c2lvbigyLCAxMSwgMykpKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Vi
a2l0c2NtcHkvd2Via2l0c2NtcHkvbG9jYWwvZ2l0LnB5IGIvVG9vbHMvU2NyaXB0cy9saWJyYXJp
ZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbG9jYWwvZ2l0LnB5CmluZGV4IGMyZmFiMmM1Y2I4
YjdlYTM2MTA2ZTFhMWQ5MjIwYmU5MmZhYTlhMWMuLjRiNzAwNTc3NmViZjRlMmU2MzEzMzI3NTdj
M2YxYWZlZWUyMDkyNTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtp
dHNjbXB5L3dlYmtpdHNjbXB5L2xvY2FsL2dpdC5weQorKysgYi9Ub29scy9TY3JpcHRzL2xpYnJh
cmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9sb2NhbC9naXQucHkKQEAgLTM1LDggKzM1LDcg
QEAgZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVmYXVsdGRpY3QKIAogZnJvbSB3ZWJraXRjb3Jl
cHkgaW1wb3J0IHJ1biwgZGVjb3JhdG9ycywgTmVzdGVkRnV6enlEaWN0CiBmcm9tIHdlYmtpdHNj
bXB5LmxvY2FsIGltcG9ydCBTY20KLWZyb20gd2Via2l0c2NtcHkgaW1wb3J0IHJlbW90ZQotZnJv
bSB3ZWJraXRzY21weSBpbXBvcnQgQ29tbWl0LCBDb250cmlidXRvciwgbG9nCitmcm9tIHdlYmtp
dHNjbXB5IGltcG9ydCByZW1vdGUsIENvbW1pdCwgQ29udHJpYnV0b3IsIGxvZwogCiAKIGNsYXNz
IEdpdChTY20pOgpAQCAtMTI3LDcgKzEyNiw3IEBAIGNsYXNzIEdpdChTY20pOgogICAgICAgICAg
ICAgbG9nID0gTm9uZQogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIGt3YXJncyA9
IGRpY3QoKQotICAgICAgICAgICAgICAgIGlmIHN5cy52ZXJzaW9uX2luZm8gPj0gKDMsIDApOgor
ICAgICAgICAgICAgICAgIGlmIHN5cy52ZXJzaW9uX2luZm8gPj0gKDMsIDYpOgogICAgICAgICAg
ICAgICAgICAgICBrd2FyZ3MgPSBkaWN0KGVuY29kaW5nPSd1dGYtOCcpCiAgICAgICAgICAgICAg
ICAgc2VsZi5fbGFzdF9wb3B1bGF0ZWRbYnJhbmNoXSA9IHRpbWUudGltZSgpCiAgICAgICAgICAg
ICAgICAgbG9nID0gc3VicHJvY2Vzcy5Qb3BlbigKQEAgLTEzNSw3ICsxMzQsNyBAQCBjbGFzcyBH
aXQoU2NtKToKICAgICAgICAgICAgICAgICAgICAgY3dkPXNlbGYucmVwby5yb290X3BhdGgsCiAg
ICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCiAgICAgICAgICAgICAg
ICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUsCi0gICAgICAgICAgICAgICAgICAgICoqIGt3
YXJncworICAgICAgICAgICAgICAgICAgICAqKmt3YXJncwogICAgICAgICAgICAgICAgICkKICAg
ICAgICAgICAgICAgICBpZiBsb2cucG9sbCgpOgogICAgICAgICAgICAgICAgICAgICByYWlzZSBz
ZWxmLnJlcG8uRXhjZXB0aW9uKCJGYWlsZWQgdG8gY29uc3RydWN0IGJyYW5jaCBoaXN0b3J5IGZv
ciAne30nIi5mb3JtYXQoYnJhbmNoKSkKQEAgLTcwMSw3ICs3MDAsNyBAQCBjbGFzcyBHaXQoU2Nt
KToKICAgICAgICAgICAgICAgICBjd2Q9c2VsZi5yb290X3BhdGgsCiAgICAgICAgICAgICAgICAg
c3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vz
cy5QSVBFLAotICAgICAgICAgICAgICAgICoqKGRpY3QoZW5jb2Rpbmc9J3V0Zi04JykgaWYgc3lz
LnZlcnNpb25faW5mbyA+ICgzLCAwKSBlbHNlIGRpY3QoKSkKKyAgICAgICAgICAgICAgICAqKihk
aWN0KGVuY29kaW5nPSd1dGYtOCcpIGlmIHN5cy52ZXJzaW9uX2luZm8gPiAoMywgNikgZWxzZSBk
aWN0KCkpCiAgICAgICAgICAgICApCiAgICAgICAgICAgICBpZiBsb2cucG9sbCgpOgogICAgICAg
ICAgICAgICAgIHJhaXNlIHNlbGYuRXhjZXB0aW9uKCJGYWlsZWQgdG8gY29uc3RydWN0IGhpc3Rv
cnkgZm9yICd7fSciLmZvcm1hdChlbmQuYnJhbmNoKSkKQEAgLTc5NCwxMCArNzkzLDI0IEBAIGNs
YXNzIEdpdChTY20pOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiJ3t9JyBpcyBub3Qg
YW4gYXJndW1lbnQgcmVjb2duaXplZCBieSBnaXQiLmZvcm1hdChhcmd1bWVudCkpCiAgICAgICAg
IHJldHVybiBzZWxmLmNvbW1pdChoYXNoPW91dHB1dC5zdGRvdXQucnN0cmlwKCksIGluY2x1ZGVf
bG9nPWluY2x1ZGVfbG9nLCBpbmNsdWRlX2lkZW50aWZpZXI9aW5jbHVkZV9pZGVudGlmaWVyKQog
Ci0gICAgZGVmIGNoZWNrb3V0KHNlbGYsIGFyZ3VtZW50KToKKyAgICBkZWYgX3RvX2dpdF9yZWYo
c2VsZiwgYXJndW1lbnQpOgorICAgICAgICBpZiBub3QgYXJndW1lbnQ6CisgICAgICAgICAgICBy
ZXR1cm4gTm9uZQogICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShhcmd1bWVudCwgc2l4LnN0cmlu
Z190eXBlcyk6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJFeHBlY3RlZCAnYXJndW1l
bnQnIHRvIGJlIGEgc3RyaW5nLCBub3QgJ3t9JyIuZm9ybWF0KHR5cGUoYXJndW1lbnQpKSkKKyAg
ICAgICAgcGFyc2VkX2NvbW1pdCA9IENvbW1pdC5wYXJzZShhcmd1bWVudCwgZG9fYXNzZXJ0PUZh
bHNlKQorICAgICAgICBpZiBwYXJzZWRfY29tbWl0IGFuZCBub3QgcGFyc2VkX2NvbW1pdC5oYXNo
OgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuY29tbWl0KAorICAgICAgICAgICAgICAgIGhhc2g9
cGFyc2VkX2NvbW1pdC5oYXNoLAorICAgICAgICAgICAgICAgIHJldmlzaW9uPXBhcnNlZF9jb21t
aXQucmV2aXNpb24sCisgICAgICAgICAgICAgICAgaWRlbnRpZmllcj1wYXJzZWRfY29tbWl0Lmlk
ZW50aWZpZXIsCisgICAgICAgICAgICAgICAgYnJhbmNoPXBhcnNlZF9jb21taXQuYnJhbmNoLAor
ICAgICAgICAgICAgICAgIGluY2x1ZGVfbG9nPUZhbHNlLAorICAgICAgICAgICAgICAgIGluY2x1
ZGVfaWRlbnRpZmllcj1GYWxzZSwKKyAgICAgICAgICAgICkuaGFzaAorICAgICAgICByZXR1cm4g
YXJndW1lbnQKIAorICAgIGRlZiBjaGVja291dChzZWxmLCBhcmd1bWVudCk6CiAgICAgICAgIHNl
bGYuX2JyYW5jaCA9IE5vbmUKIAogICAgICAgICBpZiBsb2cubGV2ZWwgPiBsb2dnaW5nLldBUk5J
Tkc6CkBAIC04MDcsMjEgKzgyMCw4IEBAIGNsYXNzIEdpdChTY20pOgogICAgICAgICBlbHNlOgog
ICAgICAgICAgICAgbG9nX2FyZyA9IFtdCiAKLSAgICAgICAgcGFyc2VkX2NvbW1pdCA9IENvbW1p
dC5wYXJzZShhcmd1bWVudCwgZG9fYXNzZXJ0PUZhbHNlKQotICAgICAgICBpZiBwYXJzZWRfY29t
bWl0OgotICAgICAgICAgICAgY29tbWl0ID0gc2VsZi5jb21taXQoCi0gICAgICAgICAgICAgICAg
aGFzaD1wYXJzZWRfY29tbWl0Lmhhc2gsCi0gICAgICAgICAgICAgICAgcmV2aXNpb249cGFyc2Vk
X2NvbW1pdC5yZXZpc2lvbiwKLSAgICAgICAgICAgICAgICBpZGVudGlmaWVyPXBhcnNlZF9jb21t
aXQuaWRlbnRpZmllciwKLSAgICAgICAgICAgICAgICBicmFuY2g9cGFyc2VkX2NvbW1pdC5icmFu
Y2gsCi0gICAgICAgICAgICApCi0gICAgICAgICAgICByZXR1cm4gTm9uZSBpZiBydW4oCi0gICAg
ICAgICAgICAgICAgW3NlbGYuZXhlY3V0YWJsZSgpLCAnY2hlY2tvdXQnXSArIFtjb21taXQuaGFz
aF0gKyBsb2dfYXJnLAotICAgICAgICAgICAgICAgIGN3ZD1zZWxmLnJvb3RfcGF0aCwKLSAgICAg
ICAgICAgICkucmV0dXJuY29kZSBlbHNlIGNvbW1pdAotCiAgICAgICAgIHJldHVybiBOb25lIGlm
IHJ1bigKLSAgICAgICAgICAgIFtzZWxmLmV4ZWN1dGFibGUoKSwgJ2NoZWNrb3V0J10gKyBbYXJn
dW1lbnRdICsgbG9nX2FyZywKKyAgICAgICAgICAgIFtzZWxmLmV4ZWN1dGFibGUoKSwgJ2NoZWNr
b3V0J10gKyBbc2VsZi5fdG9fZ2l0X3JlZihhcmd1bWVudCldICsgbG9nX2FyZywKICAgICAgICAg
ICAgIGN3ZD1zZWxmLnJvb3RfcGF0aCwKICAgICAgICAgKS5yZXR1cm5jb2RlIGVsc2Ugc2VsZi5j
b21taXQoKQogCkBAIC04MjksNiArODI5LDEwIEBAIGNsYXNzIEdpdChTY20pOgogICAgICAgICBp
ZiBoZWFkID09IHNlbGYuZGVmYXVsdF9icmFuY2ggb3Igc2VsZi5wcm9kX2JyYW5jaGVzLm1hdGNo
KGhlYWQpOgogICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJSZWJhc2luZyBwcm9kdWN0
aW9uIGJyYW5jaCAne30nIGJhbm5lZCBpbiB0b29saW5nISIuZm9ybWF0KGhlYWQpKQogCisgICAg
ICAgIHRhcmdldCA9IHNlbGYuX3RvX2dpdF9yZWYodGFyZ2V0KQorICAgICAgICBiYXNlID0gc2Vs
Zi5fdG9fZ2l0X3JlZihiYXNlKQorICAgICAgICBoZWFkID0gc2VsZi5fdG9fZ2l0X3JlZihoZWFk
KQorCiAgICAgICAgIGNvZGUgPSBydW4oW3NlbGYuZXhlY3V0YWJsZSgpLCAncmViYXNlJywgJy0t
b250bycsIHRhcmdldCwgYmFzZSBvciB0YXJnZXQsIGhlYWRdLCBjd2Q9c2VsZi5yb290X3BhdGgp
LnJldHVybmNvZGUKICAgICAgICAgaWYgc2VsZi5jYWNoZToKICAgICAgICAgICAgIHNlbGYuY2Fj
aGUuY2xlYXIoaGVhZCBpZiBoZWFkICE9ICdIRUFEJyBlbHNlIHNlbGYuYnJhbmNoKQpAQCAtODM3
LDcgKzg0MSw3IEBAIGNsYXNzIEdpdChTY20pOgogICAgICAgICByZXR1cm4gcnVuKFsKICAgICAg
ICAgICAgIHNlbGYuZXhlY3V0YWJsZSgpLCAnZmlsdGVyLWJyYW5jaCcsICctZicsCiAgICAgICAg
ICAgICAnLS1lbnYtZmlsdGVyJywgIkdJVF9BVVRIT1JfREFURT0ne2RhdGV9JztHSVRfQ09NTUlU
VEVSX0RBVEU9J3tkYXRlfSciLmZvcm1hdCgKLSAgICAgICAgICAgICAgICBkYXRlPSd7fSAte30n
LmZvcm1hdChpbnQodGltZS50aW1lKCkpLCBpbnQodGltZS5sb2NhbHRpbWUoKS50bV9nbXRvZmYg
KiAxMDAgLyAoNjAgKiA2MCkpKQorICAgICAgICAgICAgICAgIGRhdGU9J3t9IC17fScuZm9ybWF0
KGludCh0aW1lLnRpbWUoKSksIHNlbGYuZ210b2Zmc2V0KCkpCiAgICAgICAgICAgICApLCAne30u
Li57fScuZm9ybWF0KHRhcmdldCwgaGVhZCksCiAgICAgICAgIF0sIGN3ZD1zZWxmLnJvb3RfcGF0
aCwgZW52PXsnRklMVEVSX0JSQU5DSF9TUVVFTENIX1dBUk5JTkcnOiAnMSd9LCBjYXB0dXJlX291
dHB1dD1UcnVlKS5yZXR1cm5jb2RlCiAKQEAgLTg2OSw3ICs4NzMsNyBAQCBjbGFzcyBHaXQoU2Nt
KToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5leGVjdXRhYmxlKCksCiAgICAgICAgICAgICAg
ICAgICAgICdmaWx0ZXItYnJhbmNoJywgJy1mJywKICAgICAgICAgICAgICAgICAgICAgJy0tZW52
LWZpbHRlcicsICJHSVRfQVVUSE9SX0RBVEU9J3tkYXRlfSc7R0lUX0NPTU1JVFRFUl9EQVRFPSd7
ZGF0ZX0nIi5mb3JtYXQoCi0gICAgICAgICAgICAgICAgICAgICAgICBkYXRlPSd7fSAte30nLmZv
cm1hdChpbnQodGltZS50aW1lKCkpLCBpbnQodGltZS5sb2NhbHRpbWUoKS50bV9nbXRvZmYgKiAx
MDAgLyAoNjAgKiA2MCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZT0ne30gLXt9Jy5m
b3JtYXQoaW50KHRpbWUudGltZSgpKSwgc2VsZi5nbXRvZmZzZXQoKSkKICAgICAgICAgICAgICAg
ICAgICAgKSwgJ0hFQUQuLi57fScuZm9ybWF0KCd7fS97fScuZm9ybWF0KHJlbW90ZSwgYnJhbmNo
KSksCiAgICAgICAgICAgICAgICAgXSwgY3dkPXNlbGYucm9vdF9wYXRoLCBlbnY9eydGSUxURVJf
QlJBTkNIX1NRVUVMQ0hfV0FSTklORyc6ICcxJ30pLnJldHVybmNvZGUKIApAQCAtOTEyLDMgKzkx
NiwyNyBAQCBjbGFzcyBHaXQoU2NtKToKICAgICAgICAgaWYgc2V0KHN0YWdlZCkgLSBhZGRlZDoK
ICAgICAgICAgICAgIHJldHVybiBzdGFnZWQKICAgICAgICAgcmV0dXJuIHN0YWdlZCArIHNlbGYu
bW9kaWZpZWQoc3RhZ2VkPUZhbHNlKQorCisgICAgZGVmIGRpZmZfbGluZXMoc2VsZiwgYmFzZSwg
aGVhZD1Ob25lKToKKyAgICAgICAgYmFzZSA9IHNlbGYuX3RvX2dpdF9yZWYoYmFzZSkKKyAgICAg
ICAgaGVhZCA9IHNlbGYuX3RvX2dpdF9yZWYoaGVhZCkKKworICAgICAgICBrd2FyZ3MgPSBkaWN0
KCkKKyAgICAgICAgaWYgc3lzLnZlcnNpb25faW5mbyA+PSAoMywgNik6CisgICAgICAgICAgICBr
d2FyZ3MgPSBkaWN0KGVuY29kaW5nPSd1dGYtOCcpCisgICAgICAgIHRhcmdldCA9ICd7fS4ue30n
LmZvcm1hdChiYXNlLCBoZWFkKSBpZiBoZWFkIGVsc2UgYmFzZQorICAgICAgICBwcm9jID0gc3Vi
cHJvY2Vzcy5Qb3BlbigKKyAgICAgICAgICAgIFtzZWxmLmV4ZWN1dGFibGUoKSwgJ2RpZmYnLCB0
YXJnZXRdLAorICAgICAgICAgICAgY3dkPXNlbGYucm9vdF9wYXRoLAorICAgICAgICAgICAgc3Rk
b3V0PXN1YnByb2Nlc3MuUElQRSwKKyAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUs
CisgICAgICAgICAgICAqKmt3YXJncworICAgICAgICApCisKKyAgICAgICAgaWYgcHJvYy5wb2xs
KCk6CisgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCJGYWlsZWQgdG8gZ2VuZXJhdGUgZGlm
ZiBmb3IgJ3t9J1xuIi5mb3JtYXQodGFyZ2V0KSkKKworICAgICAgICBsaW5lID0gcHJvYy5zdGRv
dXQucmVhZGxpbmUoKQorICAgICAgICB3aGlsZSBsaW5lOgorICAgICAgICAgICAgeWllbGQgbGlu
ZS5yc3RyaXAoKQorICAgICAgICAgICAgbGluZSA9IHByb2Muc3Rkb3V0LnJlYWRsaW5lKCkKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5
L21vY2tzL2xvY2FsL2dpdC5weSBiL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5
L3dlYmtpdHNjbXB5L21vY2tzL2xvY2FsL2dpdC5weQppbmRleCBiZTA0ZjFjZWZmZmQxNTU3OTU1
OTE1NTRlNmY3YzJiMjk0NjQ1YTE5Li5iNGI5ZDEyNGU1MWEwZTYzOTE4YjNiZGJhNWZlOGU4ZjU3
YzQ5NDdmIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93
ZWJraXRzY21weS9tb2Nrcy9sb2NhbC9naXQucHkKKysrIGIvVG9vbHMvU2NyaXB0cy9saWJyYXJp
ZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbW9ja3MvbG9jYWwvZ2l0LnB5CkBAIC0xNTMsNiAr
MTUzLDE0IEBAIGNsYXNzIEdpdChtb2Nrcy5TdWJwcm9jZXNzKToKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRhdGU9ZGF0ZXRpbWUuZnJvbXRpbWVzdGFtcChzZWxmLmhlYWQu
dGltZXN0YW1wKS5zdHJmdGltZSgnJVktJW0tJWQgJUg6JU06JVMnKSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICAgICAgICksCisgICAgICAg
ICAgICAgICAgKSwgbW9ja3MuU3VicHJvY2Vzcy5Sb3V0ZSgKKyAgICAgICAgICAgICAgICAgICAg
c2VsZi5leGVjdXRhYmxlLCAnc3ZuJywgJ2ZldGNoJywKKyAgICAgICAgICAgICAgICAgICAgY3dk
PXNlbGYucGF0aCwKKyAgICAgICAgICAgICAgICAgICAgY29tcGxldGlvbj1tb2Nrcy5Qcm9jZXNz
Q29tcGxldGlvbihyZXR1cm5jb2RlPTApCisgICAgICAgICAgICAgICAgKSwgbW9ja3MuU3VicHJv
Y2Vzcy5Sb3V0ZSgKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5leGVjdXRhYmxlLCAnc3ZuJywg
J2Rjb21taXQnLAorICAgICAgICAgICAgICAgICAgICBjd2Q9c2VsZi5wYXRoLAorICAgICAgICAg
ICAgICAgICAgICBjb21wbGV0aW9uPW1vY2tzLlByb2Nlc3NDb21wbGV0aW9uKHJldHVybmNvZGU9
MCkKICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgXQogCkBAIC0yODcsNyArMjk1LDcg
QEAgbm90aGluZyB0byBjb21taXQsIHdvcmtpbmcgdHJlZSBjbGVhbgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5iYXNlbmFtZShwYXRoKSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29tbWl0LnJldmlzaW9uLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICldIGlmIGdpdF9zdm4gZWxzZSBbXSksCi0gICAgICAgICAgICAgICAgICAg
ICAgICApKSBmb3IgY29tbWl0IGluIHNlbGYuY29tbWl0c19pbl9yYW5nZShhcmdzWzNdLnNwbGl0
KCcuLi4nKVstMV0sIGFyZ3NbM10uc3BsaXQoJy4uLicpWzBdKQorICAgICAgICAgICAgICAgICAg
ICAgICAgKSkgZm9yIGNvbW1pdCBpbiBsaXN0KHNlbGYuY29tbWl0c19pbl9yYW5nZShhcmdzWzNd
LnNwbGl0KCcuLi4nKVstMV0sIGFyZ3NbM10uc3BsaXQoJy4uLicpWzBdKSlbOi0xXQogICAgICAg
ICAgICAgICAgICAgICBdKQogICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICksIG1vY2tz
LlN1YnByb2Nlc3MuUm91dGUoCkBAIC0zNDksMTMgKzM1NywyNSBAQCBub3RoaW5nIHRvIGNvbW1p
dCwgd29ya2luZyB0cmVlIGNsZWFuCiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yPWxhbWJkYSAq
YXJncywgKiprd2FyZ3M6CiAgICAgICAgICAgICAgICAgICAgIG1vY2tzLlByb2Nlc3NDb21wbGV0
aW9uKHJldHVybmNvZGU9MCkgaWYgc2VsZi5jaGVja291dChhcmdzWzJdLCBjcmVhdGU9RmFsc2Up
IGVsc2UgbW9ja3MuUHJvY2Vzc0NvbXBsZXRpb24ocmV0dXJuY29kZT0xKQogICAgICAgICAgICAg
KSwgbW9ja3MuU3VicHJvY2Vzcy5Sb3V0ZSgKLSAgICAgICAgICAgICAgICBzZWxmLmV4ZWN1dGFi
bGUsICdmaWx0ZXItYnJhbmNoJywgJy1mJywKKyAgICAgICAgICAgICAgICBzZWxmLmV4ZWN1dGFi
bGUsICdmaWx0ZXItYnJhbmNoJywgJy1mJywgJy0tZW52LWZpbHRlcicsIHJlLmNvbXBpbGUocicu
KicpLCAnLS1tc2ctZmlsdGVyJywKICAgICAgICAgICAgICAgICBjd2Q9c2VsZi5wYXRoLAogICAg
ICAgICAgICAgICAgIGdlbmVyYXRvcj1sYW1iZGEgKmFyZ3MsICoqa3dhcmdzOiBzZWxmLmZpbHRl
cl9icmFuY2goCiAgICAgICAgICAgICAgICAgICAgIGFyZ3NbLTFdLAogICAgICAgICAgICAgICAg
ICAgICBpZGVudGlmaWVyX3RlbXBsYXRlPWFyZ3NbLTJdLnNwbGl0KCInIilbLTJdIGlmIGFyZ3Nb
LTNdID09ICctLW1zZy1maWx0ZXInIGVsc2UgTm9uZSwKICAgICAgICAgICAgICAgICAgICAgZW52
aXJvbm1lbnRfc2hlbGw9YXJnc1s0XSBpZiBhcmdzWzNdID09ICctLWVudi1maWx0ZXInIGFuZCBh
cmdzWzRdIGVsc2UgTm9uZSwKICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICApLCBtb2Nr
cy5TdWJwcm9jZXNzLlJvdXRlKAorICAgICAgICAgICAgICAgIHNlbGYuZXhlY3V0YWJsZSwgJ2Zp
bHRlci1icmFuY2gnLCAnLWYnLCAnLS1lbnYtZmlsdGVyJywgcmUuY29tcGlsZShyJy4qJyksICct
LW1zZy1maWx0ZXInLCByZS5jb21waWxlKHInc2VkIC4qJyksCisgICAgICAgICAgICAgICAgY3dk
PXNlbGYucGF0aCwKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3I9bGFtYmRhICphcmdzLCAqKmt3
YXJnczogc2VsZi5maWx0ZXJfYnJhbmNoKAorICAgICAgICAgICAgICAgICAgICBhcmdzWy0xXSwK
KyAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnRfc2hlbGw9YXJnc1s0XSBpZiBhcmdzWzNd
ID09ICctLWVudi1maWx0ZXInIGFuZCBhcmdzWzRdIGVsc2UgTm9uZSwKKyAgICAgICAgICAgICAg
ICAgICAgc2VkPWFyZ3NbNl0uc3BsaXQoJ3NlZCAnKVstMV0gaWYgYXJnc1s1XSA9PSAnLS1tc2ct
ZmlsdGVyJyBlbHNlIE5vbmUsCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKSwgbW9j
a3MuU3VicHJvY2Vzcy5Sb3V0ZSgKKyAgICAgICAgICAgICAgICBzZWxmLmV4ZWN1dGFibGUsICdm
aWx0ZXItYnJhbmNoJywgJy1mJywKKyAgICAgICAgICAgICAgICBjd2Q9c2VsZi5wYXRoLAorICAg
ICAgICAgICAgICAgIGNvbXBsZXRpb249bW9ja3MuUHJvY2Vzc0NvbXBsZXRpb24ocmV0dXJuY29k
ZT0wKSwKICAgICAgICAgICAgICksIG1vY2tzLlN1YnByb2Nlc3MuUm91dGUoCiAgICAgICAgICAg
ICAgICAgc2VsZi5leGVjdXRhYmxlLCAnc3ZuJywgJ2ZldGNoJywgJy0tbG9nLXdpbmRvdy1zaXpl
PTUwMDAnLCAnLXInLCByZS5jb21waWxlKHInXGQrOkhFQUQnKSwKICAgICAgICAgICAgICAgICBj
d2Q9c2VsZi5wYXRoLApAQCAtMzY0LDcgKzM4NCw3IEBAIG5vdGhpbmcgdG8gY29tbWl0LCB3b3Jr
aW5nIHRyZWUgY2xlYW4KICAgICAgICAgICAgICksIG1vY2tzLlN1YnByb2Nlc3MuUm91dGUoCiAg
ICAgICAgICAgICAgICAgc2VsZi5leGVjdXRhYmxlLCAncHVsbCcsCiAgICAgICAgICAgICAgICAg
Y3dkPXNlbGYucGF0aCwKLSAgICAgICAgICAgICAgICBjb21wbGV0aW9uPW1vY2tzLlByb2Nlc3ND
b21wbGV0aW9uKHJldHVybmNvZGU9MCksCisgICAgICAgICAgICAgICAgZ2VuZXJhdG9yPWxhbWJk
YSAqYXJncywgKiprd2FyZ3M6IHNlbGYucHVsbCgpLAogICAgICAgICAgICAgKSwgbW9ja3MuU3Vi
cHJvY2Vzcy5Sb3V0ZSgKICAgICAgICAgICAgICAgICBzZWxmLmV4ZWN1dGFibGUsICdjb25maWcn
LCAnLWwnLAogICAgICAgICAgICAgICAgIGN3ZD1zZWxmLnBhdGgsCkBAIC00MzgsNiArNDU4LDMy
IEBAIG5vdGhpbmcgdG8gY29tbWl0LCB3b3JraW5nIHRyZWUgY2xlYW4KICAgICAgICAgICAgICAg
ICBzZWxmLmV4ZWN1dGFibGUsICdyZWJhc2UnLCAnLS1vbnRvJywgcmUuY29tcGlsZShyJy4rJyks
IHJlLmNvbXBpbGUocicuKycpLCByZS5jb21waWxlKHInLisnKSwKICAgICAgICAgICAgICAgICBj
d2Q9c2VsZi5wYXRoLAogICAgICAgICAgICAgICAgIGdlbmVyYXRvcj1sYW1iZGEgKmFyZ3MsICoq
a3dhcmdzOiBzZWxmLnJlYmFzZShhcmdzWzNdLCBhcmdzWzRdLCBhcmdzWzVdKSwKKyAgICAgICAg
ICAgICksIG1vY2tzLlN1YnByb2Nlc3MuUm91dGUoCisgICAgICAgICAgICAgICAgc2VsZi5leGVj
dXRhYmxlLCAnYnJhbmNoJywgJy1mJywgcmUuY29tcGlsZShyJy4rJyksIHJlLmNvbXBpbGUocicu
KycpLAorICAgICAgICAgICAgICAgIGN3ZD1zZWxmLnBhdGgsCisgICAgICAgICAgICAgICAgZ2Vu
ZXJhdG9yPWxhbWJkYSAqYXJncywgKiprd2FyZ3M6IHNlbGYubW92ZV9icmFuY2goYXJnc1szXSwg
YXJnc1s0XSksCisgICAgICAgICAgICApLCBtb2Nrcy5TdWJwcm9jZXNzLlJvdXRlKAorICAgICAg
ICAgICAgICAgIHNlbGYuZXhlY3V0YWJsZSwgJ3B1c2gnLCAnb3JpZ2luJywgcmUuY29tcGlsZShy
Jy4rJyksCisgICAgICAgICAgICAgICAgY3dkPXNlbGYucGF0aCwKKyAgICAgICAgICAgICAgICBn
ZW5lcmF0b3I9bGFtYmRhICphcmdzLCAqKmt3YXJnczogc2VsZi5wdXNoKGFyZ3NbMl0sIGFyZ3Nb
M10pLAorICAgICAgICAgICAgKSwgbW9ja3MuU3VicHJvY2Vzcy5Sb3V0ZSgKKyAgICAgICAgICAg
ICAgICBzZWxmLmV4ZWN1dGFibGUsICdkaWZmJywgcmUuY29tcGlsZShyJy4rJyksCisgICAgICAg
ICAgICAgICAgY3dkPXNlbGYucGF0aCwKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3I9bGFtYmRh
ICphcmdzLCAqKmt3YXJnczogbW9ja3MuUHJvY2Vzc0NvbXBsZXRpb24oCisgICAgICAgICAgICAg
ICAgICAgIHJldHVybmNvZGU9MCwKKyAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PSdcbicuam9p
bihbCisgICAgICAgICAgICAgICAgICAgICAgICAnLS0tIGEvQ2hhbmdlTG9nXG4rKysgYi9DaGFu
Z2VMb2dcbkBAIC0xLDAgKzEsMCBAQFxue30nLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnXG4nLmpvaW4oWycrIHt9Jy5mb3JtYXQobGluZSkgZm9yIGxpbmUgaW4gY29tbWl0
Lm1lc3NhZ2Uuc3BsaXRsaW5lcygpXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICkgZm9yIGNv
bW1pdCBpbiBsaXN0KHNlbGYuY29tbWl0c19pbl9yYW5nZSgKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhcmdzWzJdLnNwbGl0KCcuLicpWzBdLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGFyZ3NbMl0uc3BsaXQoJy4uJylbLTFdIGlmICcuLicgaW4gYXJnc1syXSBlbHNlIHNlbGYu
Y29tbWl0c1tzZWxmLmRlZmF1bHRfYnJhbmNoXVstMV0uaGFzaCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICkpWzotMV0KKyAgICAgICAgICAgICAgICAgICAgXSkKKyAgICAgICAgICAgICAgICAp
CisgICAgICAgICAgICApLCBtb2Nrcy5TdWJwcm9jZXNzLlJvdXRlKAorICAgICAgICAgICAgICAg
IHNlbGYuZXhlY3V0YWJsZSwgJ3Jlc2V0JywgcmUuY29tcGlsZShyJ0hFQUR+XGQrJyksCisgICAg
ICAgICAgICAgICAgY3dkPXNlbGYucGF0aCwKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3I9bGFt
YmRhICphcmdzLCAqKmt3YXJnczogc2VsZi5yZXNldChpbnQoYXJnc1syXS5zcGxpdCgnficpWy0x
XSkpLAogICAgICAgICAgICAgKSwgbW9ja3MuU3VicHJvY2Vzcy5Sb3V0ZSgKICAgICAgICAgICAg
ICAgICBzZWxmLmV4ZWN1dGFibGUsCiAgICAgICAgICAgICAgICAgY3dkPXNlbGYucGF0aCwKQEAg
LTU2Nyw3ICs2MTMsNyBAQCBub3RoaW5nIHRvIGNvbW1pdCwgd29ya2luZyB0cmVlIGNsZWFuCiAg
ICAgICAgICAgICBzZWxmLmRldGFjaGVkID0gc29tZXRoaW5nIG5vdCBpbiBzZWxmLmNvbW1pdHMu
a2V5cygpCiAgICAgICAgIHJldHVybiBUcnVlIGlmIGNvbW1pdCBlbHNlIEZhbHNlCiAKLSAgICBk
ZWYgZmlsdGVyX2JyYW5jaChzZWxmLCByYW5nZSwgaWRlbnRpZmllcl90ZW1wbGF0ZT1Ob25lLCBl
bnZpcm9ubWVudF9zaGVsbD1Ob25lKToKKyAgICBkZWYgZmlsdGVyX2JyYW5jaChzZWxmLCByYW5n
ZSwgaWRlbnRpZmllcl90ZW1wbGF0ZT1Ob25lLCBlbnZpcm9ubWVudF9zaGVsbD1Ob25lLCBzZWQ9
Tm9uZSk6CiAgICAgICAgICMgV2UgY2FuJ3QgZWZmZWN0aXZlbHkgbW9jayB0aGUgYmFzaCBzY3Jp
cHQgaW4gdGhlIGNvbW1hbmQsIGJ1dCB3ZSBjYW4gbW9jayB0aGUgcHl0aG9uIGNvZGUgdGhhdAog
ICAgICAgICAjIHNjcmlwdCBjYWxscywgd2hpY2ggaXMgd2hlcmUgdGhlIHByb2dyYW0gbG9naWMg
aXMuCiAgICAgICAgIGhlYWQsIHN0YXJ0ID0gcmFuZ2Uuc3BsaXQoJy4uLicpCkBAIC02MjEsNiAr
NjY3LDE0IEBAIG5vdGhpbmcgdG8gY29tbWl0LCB3b3JraW5nIHRyZWUgY2xlYW4KICAgICAgICAg
ICAgICAgICAgICAgICAgIGxpbmVzLnBvcCgtMSkKICAgICAgICAgICAgICAgICAgICAgY29tbWl0
Lm1lc3NhZ2UgPSAnXG4nLmpvaW4obGluZXMpCiAKKyAgICAgICAgICAgICAgICBpZiBzZWQ6Cisg
ICAgICAgICAgICAgICAgICAgIG1hdGNoID0gcmUubWF0Y2gocicicy8oP1A8cmU+LispLyg/UDx2
YWx1ZT4uKykvZyInLCBzZWQpCisgICAgICAgICAgICAgICAgICAgIGlmIG1hdGNoOgorICAgICAg
ICAgICAgICAgICAgICAgICAgY29tbWl0Lm1lc3NhZ2UgPSByZS5zdWIoCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbWF0Y2guZ3JvdXAoJ3JlJykucmVwbGFjZSgnKCcsICdcXCgnKS5yZXBs
YWNlKCcpJywgJ1xcKScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoLmdyb3Vw
KCd2YWx1ZScpLCBjb21taXQubWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICkKKwog
ICAgICAgICAgICAgICAgIGlmIG5vdCBlbnZpcm9ubWVudF9zaGVsbDoKICAgICAgICAgICAgICAg
ICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICBpZiByZS5zZWFyY2gocidlY2hvICJPdmVy
d3JpdGluZycsIGVudmlyb25tZW50X3NoZWxsKToKQEAgLTc5MSwzICs4NDUsMzQgQEAgbm90aGlu
ZyB0byBjb21taXQsIHdvcmtpbmcgdHJlZSBjbGVhbgogICAgICAgICAgICAgaWYgc2VsZi5jb21t
aXRzW3RhcmdldF1bLTFdLmJyYW5jaF9wb2ludDoKICAgICAgICAgICAgICAgICBjb21taXQuaWRl
bnRpZmllciArPSBzZWxmLmNvbW1pdHNbdGFyZ2V0XVstMV0uaWRlbnRpZmllcgogICAgICAgICBy
ZXR1cm4gbW9ja3MuUHJvY2Vzc0NvbXBsZXRpb24ocmV0dXJuY29kZT0wKQorCisgICAgZGVmIHB1
bGwoc2VsZik6CisgICAgICAgIHNlbGYuaGVhZCA9IHNlbGYuY29tbWl0c1tzZWxmLmhlYWQuYnJh
bmNoXVstMV0KKyAgICAgICAgcmV0dXJuIG1vY2tzLlByb2Nlc3NDb21wbGV0aW9uKHJldHVybmNv
ZGU9MCkKKworICAgIGRlZiBtb3ZlX2JyYW5jaChzZWxmLCB0b19iZV9tb3ZlZCwgbW92ZWRfdG8p
OgorICAgICAgICBpZiBtb3ZlZF90byA9PSBzZWxmLmRlZmF1bHRfYnJhbmNoOgorICAgICAgICAg
ICAgcmV0dXJuIG1vY2tzLlByb2Nlc3NDb21wbGV0aW9uKHJldHVybmNvZGU9MCkKKyAgICAgICAg
aWYgdG9fYmVfbW92ZWQgIT0gc2VsZi5kZWZhdWx0X2JyYW5jaDoKKyAgICAgICAgICAgIHNlbGYu
Y29tbWl0c1t0b19iZV9tb3ZlZF0gPSBzZWxmLmNvbW1pdHNbbW92ZWRfdG9dCisgICAgICAgICAg
ICBzZWxmLmhlYWQgPSBzZWxmLmNvbW1pdHNbdG9fYmVfbW92ZWRdWy0xXQorICAgICAgICAgICAg
cmV0dXJuIG1vY2tzLlByb2Nlc3NDb21wbGV0aW9uKHJldHVybmNvZGU9MCkKKyAgICAgICAgc2Vs
Zi5jb21taXRzW3RvX2JlX21vdmVkXSArPSBbCisgICAgICAgICAgICBDb21taXQoCisgICAgICAg
ICAgICAgICAgYnJhbmNoPXRvX2JlX21vdmVkLCByZXBvc2l0b3J5X2lkPWNvbW1pdC5yZXBvc2l0
b3J5X2lkLAorICAgICAgICAgICAgICAgIHRpbWVzdGFtcD1jb21taXQudGltZXN0YW1wLAorICAg
ICAgICAgICAgICAgIGlkZW50aWZpZXI9Y29tbWl0LmlkZW50aWZpZXIgKyAoY29tbWl0LmJyYW5j
aF9wb2ludCBvciAwKSwgYnJhbmNoX3BvaW50PU5vbmUsCisgICAgICAgICAgICAgICAgaGFzaD1j
b21taXQuaGFzaCwgcmV2aXNpb249Y29tbWl0LnJldmlzaW9uLAorICAgICAgICAgICAgICAgIGF1
dGhvcj1jb21taXQuYXV0aG9yLCBtZXNzYWdlPWNvbW1pdC5tZXNzYWdlLAorICAgICAgICAgICAg
KSBmb3IgY29tbWl0IGluIHNlbGYuY29tbWl0c1ttb3ZlZF90b10KKyAgICAgICAgXQorICAgICAg
ICBzZWxmLmhlYWQgPSBzZWxmLmNvbW1pdHNbdG9fYmVfbW92ZWRdWy0xXQorICAgICAgICByZXR1
cm4gbW9ja3MuUHJvY2Vzc0NvbXBsZXRpb24ocmV0dXJuY29kZT0wKQorCisgICAgZGVmIHB1c2go
c2VsZiwgcmVtb3RlLCBicmFuY2gpOgorICAgICAgICBzZWxmLnJlbW90ZXNbJ3t9L3t9Jy5mb3Jt
YXQocmVtb3RlLCBicmFuY2gpXSA9IHNlbGYuY29tbWl0c1ticmFuY2hdWy0xXQorICAgICAgICBy
ZXR1cm4gbW9ja3MuUHJvY2Vzc0NvbXBsZXRpb24ocmV0dXJuY29kZT0wKQorCisgICAgZGVmIHJl
c2V0KHNlbGYsIGluZGV4KToKKyAgICAgICAgc2VsZi5oZWFkID0gc2VsZi5jb21taXRzW3NlbGYu
aGVhZC5icmFuY2hdWy0oaW5kZXggKyAxKV0KKyAgICAgICAgcmV0dXJuIG1vY2tzLlByb2Nlc3ND
b21wbGV0aW9uKHJldHVybmNvZGU9MCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvbGlicmFy
aWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Byb2dyYW0vX19pbml0X18ucHkgYi9Ub29scy9T
Y3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9wcm9ncmFtL19faW5pdF9f
LnB5CmluZGV4IGE4MGU5ODUzY2NlNDkzOWFlNDQwYTlmZDUyNDI0ZmQ0MTY0NzdmMzAuLjU5YTBj
Mzc4OWFkMDE0YjAzMGNhYTMzODM2Y2FhYzk5NjVhYWU5YTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Nj
cmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Byb2dyYW0vX19pbml0X18u
cHkKKysrIGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkv
cHJvZ3JhbS9fX2luaXRfXy5weQpAQCAtMzIsNiArMzIsNyBAQCBmcm9tIC5jbGVhbiBpbXBvcnQg
Q2xlYW4KIGZyb20gLmNvbW1hbmQgaW1wb3J0IENvbW1hbmQKIGZyb20gLmNoZWNrb3V0IGltcG9y
dCBDaGVja291dAogZnJvbSAuZmluZCBpbXBvcnQgRmluZCwgSW5mbworZnJvbSAubGFuZCBpbXBv
cnQgTGFuZAogZnJvbSAubG9nIGltcG9ydCBMb2cKIGZyb20gLnB1bGwgaW1wb3J0IFB1bGwKIGZy
b20gLnB1bGxfcmVxdWVzdCBpbXBvcnQgUHVsbFJlcXVlc3QKQEAgLTQ1LDYgKzQ2LDcgQEAgZnJv
bSB3ZWJraXRzY21weSBpbXBvcnQgbG9jYWwsIGxvZywgcmVtb3RlCiBkZWYgbWFpbigKICAgICBh
cmdzPU5vbmUsIHBhdGg9Tm9uZSwgbG9nZ2Vycz1Ob25lLCBjb250cmlidXRvcnM9Tm9uZSwKICAg
ICBpZGVudGlmaWVyX3RlbXBsYXRlPU5vbmUsIHN1YnZlcnNpb249Tm9uZSwgYWRkaXRpb25hbF9z
ZXR1cD1Ob25lLCBob29rcz1Ob25lLAorICAgIGNhbm9uaWNhbF9zdm49RmFsc2UsCiApOgogICAg
IGxvZ2dpbmcuYmFzaWNDb25maWcobGV2ZWw9bG9nZ2luZy5XQVJOSU5HKQogCkBAIC02OSw3ICs3
MSw3IEBAIGRlZiBtYWluKAogICAgICkKIAogICAgIHN1YnBhcnNlcnMgPSBwYXJzZXIuYWRkX3N1
YnBhcnNlcnMoaGVscD0nc3ViLWNvbW1hbmQgaGVscCcpCi0gICAgcHJvZ3JhbXMgPSBbQmxhbWUs
IEJyYW5jaCwgQ2Fub25pY2FsaXplLCBDaGVja291dCwgQ2xlYW4sIEZpbmQsIEluZm8sIExvZywg
UHVsbCwgUHVsbFJlcXVlc3QsIFNldHVwXQorICAgIHByb2dyYW1zID0gW0JsYW1lLCBCcmFuY2gs
IENhbm9uaWNhbGl6ZSwgQ2hlY2tvdXQsIENsZWFuLCBGaW5kLCBJbmZvLCBMYW5kLCBMb2csIFB1
bGwsIFB1bGxSZXF1ZXN0LCBTZXR1cF0KICAgICBpZiBzdWJ2ZXJzaW9uOgogICAgICAgICBwcm9n
cmFtcy5hcHBlbmQoU2V0dXBHaXRTdm4pCiAKQEAgLTEyMiw2ICsxMjQsOSBAQCBkZWYgbWFpbigK
ICAgICBpZiBjYWxsYWJsZShhZGRpdGlvbmFsX3NldHVwKSBhbmQgbGlzdChpbnNwZWN0LnNpZ25h
dHVyZShhZGRpdGlvbmFsX3NldHVwKS5wYXJhbWV0ZXJzLmtleXMoKSkgPT0gWydyZXBvc2l0b3J5
J106CiAgICAgICAgIGFkZGl0aW9uYWxfc2V0dXAgPSBhZGRpdGlvbmFsX3NldHVwKHJlcG9zaXRv
cnkpCiAKKyAgICBpZiBjYWxsYWJsZShjYW5vbmljYWxfc3ZuKToKKyAgICAgICAgY2Fub25pY2Fs
X3N2biA9IGNhbm9uaWNhbF9zdm4ocmVwb3NpdG9yeSkKKwogICAgIGlmIG5vdCBnZXRhdHRyKHBh
cnNlZCwgJ21haW4nLCBOb25lKToKICAgICAgICAgcGFyc2VyLnByaW50X2hlbHAoKQogICAgICAg
ICByZXR1cm4gLTEKQEAgLTEzMyw0ICsxMzgsNSBAQCBkZWYgbWFpbigKICAgICAgICAgc3VidmVy
c2lvbj1zdWJ2ZXJzaW9uLAogICAgICAgICBhZGRpdGlvbmFsX3NldHVwPWFkZGl0aW9uYWxfc2V0
dXAsCiAgICAgICAgIGhvb2tzPWhvb2tzLAorICAgICAgICBjYW5vbmljYWxfc3ZuPWNhbm9uaWNh
bF9zdm4sCiAgICAgKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0
c2NtcHkvd2Via2l0c2NtcHkvcHJvZ3JhbS9sYW5kLnB5IGIvVG9vbHMvU2NyaXB0cy9saWJyYXJp
ZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvcHJvZ3JhbS9sYW5kLnB5Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA0
N2ZiYTEwMjkzYzcyNzE0YWNiOGExMzY5YWI2YTZjYTM5NWRkNzYKLS0tIC9kZXYvbnVsbAorKysg
Yi9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9wcm9ncmFt
L2xhbmQucHkKQEAgLTAsMCArMSwyMDcgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBh
cmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyMgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgor
IyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
CisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisKK2ltcG9ydCByZQoraW1wb3J0IHN5cworaW1wb3J0IHRpbWUKKworZnJvbSAuY2Fu
b25pY2FsaXplIGltcG9ydCBDYW5vbmljYWxpemUKK2Zyb20gLmNvbW1hbmQgaW1wb3J0IENvbW1h
bmQKK2Zyb20gLmJyYW5jaCBpbXBvcnQgQnJhbmNoCitmcm9tIGFyZ3BhcnNlIGltcG9ydCBOYW1l
c3BhY2UKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBhcmd1bWVudHMsIHJ1biwgc3RyaW5nX3V0
aWxzLCBUZXJtaW5hbAorZnJvbSB3ZWJraXRzY21weSBpbXBvcnQgbG9jYWwsIGxvZworCisKK2Ns
YXNzIExhbmQoQ29tbWFuZCk6CisgICAgbmFtZSA9ICdsYW5kJworICAgIGhlbHAgPSAnSWYgb24g
YSBwdWxsLXJlcXVlc3Qgb3IgY29tbWl0LXF1ZXVlIGJyYW5jaCwgcmViYXNlIHRoZSAnIFwKKyAg
ICAgICAgICAgJ2N1cnJlbnQgYnJhbmNoIG9udG8gdGhlIHRhcmdldCBwcm9kdWN0aW9uIGJyYW5j
aCBhbmQgcHVzaC4nCisKKyAgICBPT1BTX1JFID0gcmUuY29tcGlsZShyJ1woTytQK1MhKlwpJykK
KyAgICBSRVZJRVdFRF9CWV9SRSA9IHJlLmNvbXBpbGUoJ1Jldmlld2VkIGJ5ICg/UDxhcHByb3Zl
cj4uKyknKQorICAgIFJFTU9URSA9ICdvcmlnaW4nCisgICAgTUlSUk9SX1RJTUVPVVQgPSA2MAor
CisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHBhcnNlcihjbHMsIHBhcnNlciwgbG9nZ2Vycz1O
b25lKToKKyAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgICAgICctLW5vLWZv
cmNlLXJldmlldycsICctLWZvcmNlLXJldmlldycsICctLW5vLXJldmlldycsCisgICAgICAgICAg
ICBkZXN0PSdyZXZpZXcnLCBkZWZhdWx0PVRydWUsCisgICAgICAgICAgICBoZWxwPSdDaGVjayBp
ZiB0aGUgY2hhbmdlIGhhcyBiZWVuIGFwcHJvdmVkIG9yIGJsb2NrZWQgYnkgcmV2aWV3ZXJzJywK
KyAgICAgICAgICAgIGFjdGlvbj1hcmd1bWVudHMuTm9BY3Rpb24sCisgICAgICAgICkKKyAgICAg
ICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgICAgICctLW5vLW9vcHMnLCAnLS1uby1h
bGxvdy1vb3BzJywgJy0tYWxsb3ctb29wcycsCisgICAgICAgICAgICBkZXN0PSdvb3BzJywgZGVm
YXVsdD1GYWxzZSwKKyAgICAgICAgICAgIGhlbHA9IkFsbG93IChPT1BTISkgaW4gY29tbWl0IG1l
c3NhZ2VzIiwKKyAgICAgICAgICAgIGFjdGlvbj1hcmd1bWVudHMuTm9BY3Rpb24sCisgICAgICAg
ICkKKyAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgICAgICctLWRlZmF1bHRz
JywgJy0tbm8tZGVmYXVsdHMnLCBhY3Rpb249YXJndW1lbnRzLk5vQWN0aW9uLCBkZWZhdWx0PU5v
bmUsCisgICAgICAgICAgICBoZWxwPSdEbyBub3QgcHJvbXB0IHRoZSB1c2VyIGZvciBkZWZhdWx0
cywgYWx3YXlzIHVzZSAob3IgZG8gbm90IHVzZSkgdGhlbScsCisgICAgICAgICkKKworICAgIEBj
bGFzc21ldGhvZAorICAgIGRlZiBtYWluKGNscywgYXJncywgcmVwb3NpdG9yeSwgaWRlbnRpZmll
cl90ZW1wbGF0ZT1Ob25lLCBjYW5vbmljYWxfc3ZuPUZhbHNlLCAqKmt3YXJncyk6CisgICAgICAg
IGlmIG5vdCByZXBvc2l0b3J5LnBhdGg6CisgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCJD
YW5ub3QgJ2xhbmQnIGNoYW5nZSBpbiByZW1vdGUgcmVwb3NpdG9yeVxuIikKKyAgICAgICAgICAg
IHJldHVybiAxCisKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UocmVwb3NpdG9yeSwgbG9jYWwu
R2l0KToKKyAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoIidsYW5kJyBvbmx5IHN1cHBvcnRl
ZCBieSBsb2NhbCBnaXQgcmVwb3NpdG9yaWVzXG4iKQorICAgICAgICAgICAgcmV0dXJuIDEKKwor
ICAgICAgICBpZiBjYW5vbmljYWxfc3ZuIGFuZCBub3QgcmVwb3NpdG9yeS5pc19zdm46CisgICAg
ICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCJDYW5ub3QgJ2xhbmQnIG9uIGEgY2Fub25pY2FsIFNW
TiByZXBvc2l0b3J5IHRoYXQgaXMgbm90IGNvbmZpZ3VyZWQgYXMgZ2l0LXN2blxuIikKKyAgICAg
ICAgICAgIHJldHVybiAxCisKKyAgICAgICAgaWYgbm90IEJyYW5jaC5lZGl0YWJsZShyZXBvc2l0
b3J5LmJyYW5jaCwgcmVwb3NpdG9yeT1yZXBvc2l0b3J5KToKKyAgICAgICAgICAgIHN5cy5zdGRl
cnIud3JpdGUoIkNhbiBvbmx5ICdsYW5kJyBlZGl0YWJsZSBicmFuY2hlc1xuIikKKyAgICAgICAg
ICAgIHJldHVybiAxCisgICAgICAgIGJyYW5jaF9wb2ludCA9IEJyYW5jaC5icmFuY2hfcG9pbnQo
cmVwb3NpdG9yeSkKKyAgICAgICAgY29tbWl0cyA9IGxpc3QocmVwb3NpdG9yeS5jb21taXRzKGJl
Z2luPWRpY3QoaGFzaD1icmFuY2hfcG9pbnQuaGFzaCksIGVuZD1kaWN0KGJyYW5jaD1yZXBvc2l0
b3J5LmJyYW5jaCkpKQorICAgICAgICBpZiBub3QgY29tbWl0czoKKyAgICAgICAgICAgIHN5cy5z
dGRlcnIud3JpdGUoJ0ZhaWxlZCB0byBmaW5kIGNvbW1pdHMgdG8gbGFuZFxuJykKKyAgICAgICAg
ICAgIHJldHVybiAxCisKKyAgICAgICAgcHVsbF9yZXF1ZXN0ID0gTm9uZQorICAgICAgICBybXQg
PSByZXBvc2l0b3J5LnJlbW90ZSgpCisgICAgICAgIGlmIHJtdCBhbmQgcm10LnB1bGxfcmVxdWVz
dHM6CisgICAgICAgICAgICBjYW5kaWRhdGVzID0gbGlzdChybXQucHVsbF9yZXF1ZXN0cy5maW5k
KG9wZW5lZD1UcnVlLCBoZWFkPXJlcG9zaXRvcnkuYnJhbmNoKSkKKyAgICAgICAgICAgIGlmIGxl
bihjYW5kaWRhdGVzKSA9PSAxOgorICAgICAgICAgICAgICAgIHB1bGxfcmVxdWVzdCA9IGNhbmRp
ZGF0ZXNbMF0KKyAgICAgICAgICAgIGVsaWYgY2FuZGlkYXRlczoKKyAgICAgICAgICAgICAgICBz
eXMuc3RkZXJyLndyaXRlKCJNdWx0aXBsZSBwdWxsLXJlcXVlc3QgbWF0Y2ggJ3t9J1xuIi5mb3Jt
YXQocmVwb3NpdG9yeS5icmFuY2gpKQorCisgICAgICAgIGlmIHB1bGxfcmVxdWVzdCBhbmQgYXJn
cy5yZXZpZXc6CisgICAgICAgICAgICBpZiBwdWxsX3JlcXVlc3QuYmxvY2tlcnM6CisgICAgICAg
ICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgie30ge30gYmxvY2tpbmcgbGFuZGluZyAne30nXG4i
LmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgc3RyaW5nX3V0aWxzLmpvaW4oW3AubmFtZSBm
b3IgcCBpbiBwdWxsX3JlcXVlc3QuYmxvY2tlcnNdKSwKKyAgICAgICAgICAgICAgICAgICAgJ2Fy
ZScgaWYgbGVuKHB1bGxfcmVxdWVzdC5ibG9ja2VycykgPiAxIGVsc2UgJ2lzJywKKyAgICAgICAg
ICAgICAgICAgICAgcHVsbF9yZXF1ZXN0LAorICAgICAgICAgICAgICAgICkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIDEKKyAgICAgICAgICAgIG5lZWRfcmV2aWV3ID0gRmFsc2UKKyAgICAgICAg
ICAgIGlmIHB1bGxfcmVxdWVzdC5hcHByb3ZlcnM6CisgICAgICAgICAgICAgICAgcmV2aWV3X2xp
bmVzID0gW2Nscy5SRVZJRVdFRF9CWV9SRS5zZWFyY2goY29tbWl0Lm1lc3NhZ2UpIGZvciBjb21t
aXQgaW4gY29tbWl0c10KKyAgICAgICAgICAgICAgICBuZWVkX3JldmlldyA9IGFueShbY2xzLk9P
UFNfUkUuc2VhcmNoKG1hdGNoLmdyb3VwKCdhcHByb3ZlcicpKSBmb3IgbWF0Y2ggaW4gcmV2aWV3
X2xpbmVzIGlmIG1hdGNoXSkKKyAgICAgICAgICAgIGlmIG5lZWRfcmV2aWV3IGFuZCAoYXJncy5k
ZWZhdWx0cyBvciBUZXJtaW5hbC5jaG9vc2UoIlNldCAne30nIGFzIHlvdXIgcmV2aWV3ZXJ7fT8i
LmZvcm1hdCgKKyAgICAgICAgICAgICAgICBzdHJpbmdfdXRpbHMuam9pbihbcC5uYW1lIGZvciBw
IGluIHB1bGxfcmVxdWVzdC5hcHByb3ZlcnNdKSwKKyAgICAgICAgICAgICAgICAncycgaWYgbGVu
KHB1bGxfcmVxdWVzdC5hcHByb3ZlcnMpID4gMSBlbHNlICcnLAorICAgICAgICAgICAgKSwgZGVm
YXVsdD0nWWVzJykgPT0gJ1llcycpOgorICAgICAgICAgICAgICAgIGxvZy53YXJuaW5nKCJTZXR0
aW5nIHt9IGFzIHJldmlld2Vye30iLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgc3RyaW5n
X3V0aWxzLmpvaW4oW3AubmFtZSBmb3IgcCBpbiBwdWxsX3JlcXVlc3QuYXBwcm92ZXJzXSksCisg
ICAgICAgICAgICAgICAgICAgICdzJyBpZiBsZW4ocHVsbF9yZXF1ZXN0LmFwcHJvdmVycykgPiAx
IGVsc2UgJycsCisgICAgICAgICAgICAgICAgKSkKKyAgICAgICAgICAgICAgICBpZiBydW4oWwor
ICAgICAgICAgICAgICAgICAgICByZXBvc2l0b3J5LmV4ZWN1dGFibGUoKSwgJ2ZpbHRlci1icmFu
Y2gnLCAnLWYnLAorICAgICAgICAgICAgICAgICAgICAnLS1lbnYtZmlsdGVyJywgIkdJVF9BVVRI
T1JfREFURT0ne2RhdGV9JztHSVRfQ09NTUlUVEVSX0RBVEU9J3tkYXRlfSciLmZvcm1hdCgKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGRhdGU9J3t9IC17fScuZm9ybWF0KGludCh0aW1lLnRpbWUo
KSksIHJlcG9zaXRvcnkuZ210b2Zmc2V0KCkpCisgICAgICAgICAgICAgICAgICAgICksICctLW1z
Zy1maWx0ZXInLCAnc2VkICJzL05PQk9EWSAoT08qUFAqUyEqKS97fS9nIicuZm9ybWF0KHN0cmlu
Z191dGlscy5qb2luKFtwLm5hbWUgZm9yIHAgaW4gcHVsbF9yZXF1ZXN0LmFwcHJvdmVyc10pKSwK
KyAgICAgICAgICAgICAgICAgICAgJ3t9Li4ue30nLmZvcm1hdChyZXBvc2l0b3J5LmJyYW5jaCwg
YnJhbmNoX3BvaW50Lmhhc2gpLAorICAgICAgICAgICAgICAgIF0sIGN3ZD1yZXBvc2l0b3J5LnJv
b3RfcGF0aCwgZW52PXsnRklMVEVSX0JSQU5DSF9TUVVFTENIX1dBUk5JTkcnOiAnMSd9LCBjYXB0
dXJlX291dHB1dD1UcnVlKS5yZXR1cm5jb2RlOgorICAgICAgICAgICAgICAgICAgICBzeXMuc3Rk
ZXJyLndyaXRlKCdGYWlsZWQgdG8gc2V0IHJldmlld2Vyc1xuJykKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIDEKKyAgICAgICAgICAgICAgICBjb21taXRzID0gbGlzdChyZXBvc2l0b3J5LmNv
bW1pdHMoYmVnaW49ZGljdChoYXNoPWJyYW5jaF9wb2ludC5oYXNoKSwgZW5kPWRpY3QoYnJhbmNo
PXJlcG9zaXRvcnkuYnJhbmNoKSkpCisgICAgICAgICAgICAgICAgaWYgbm90IGNvbW1pdHM6Cisg
ICAgICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoJ0ZhaWxlZCB0byBmaW5kIGNvbW1p
dHMgYWZ0ZXIgc2V0dGluZyByZXZpZXdlcnNcbicpCisgICAgICAgICAgICAgICAgICAgIHJldHVy
biAxCisKKyAgICAgICAgZWxpZiBub3QgcHVsbF9yZXF1ZXN0OgorICAgICAgICAgICAgc3lzLnN0
ZGVyci53cml0ZSgiRmFpbGVkIHRvIGZpbmQgcHVsbC1yZXF1ZXN0IGFzc29jaWF0ZWQgd2l0aCAn
e30nXG4iLmZvcm1hdChyZXBvc2l0b3J5LmJyYW5jaCkpCisKKyAgICAgICAgaWYgbm90IGFyZ3Mu
b29wcyBhbmQgYW55KFtjbHMuT09QU19SRS5zZWFyY2goY29tbWl0Lm1lc3NhZ2UpIGZvciBjb21t
aXQgaW4gY29tbWl0c10pOgorICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgiRm91bmQgJyhP
T1BTISknIG1lc3NhZ2UgaW4gY29tbWl0IG1lc3NhZ2VzLCBwbGVhc2UgcmVzb2x2ZSBiZWZvcmUg
Y29tbWl0dGluZ1xuIikKKyAgICAgICAgICAgIHJldHVybiAxCisKKyAgICAgICAgaWYgbm90IGFy
Z3Mub29wczoKKyAgICAgICAgICAgIGZvciBsaW5lIGluIHJlcG9zaXRvcnkuZGlmZl9saW5lcyhi
cmFuY2hfcG9pbnQuaGFzaCwgcmVwb3NpdG9yeS5icmFuY2gpOgorICAgICAgICAgICAgICAgIGlm
IGNscy5PT1BTX1JFLnNlYXJjaChsaW5lKToKKyAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZGVy
ci53cml0ZSgiRm91bmQgJyhPT1BTISknIGluIGNvbW1pdCBkaWZmLCBwbGVhc2UgcmVzb2x2ZSBi
ZWZvcmUgY29tbWl0dGluZ1xuIikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDEKKworICAg
ICAgICB0YXJnZXQgPSBwdWxsX3JlcXVlc3QuYmFzZSBpZiBwdWxsX3JlcXVlc3QgZWxzZSBicmFu
Y2hfcG9pbnQuYnJhbmNoCisgICAgICAgIGxvZy53YXJuaW5nKCJSZWJhc2luZyAne30nIGZyb20g
J3t9JyB0byAne30nLi4uIi5mb3JtYXQocmVwb3NpdG9yeS5icmFuY2gsIGJyYW5jaF9wb2ludC5i
cmFuY2gsIHRhcmdldCkpCisgICAgICAgIGlmIHJlcG9zaXRvcnkuZmV0Y2goYnJhbmNoPXRhcmdl
dCwgcmVtb3RlPWNscy5SRU1PVEUpOgorICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgiRmFp
bGVkIHRvIGZldGNoICd7fScgZnJvbSAne30nXG4iLmZvcm1hdCh0YXJnZXQsIGNscy5SRU1PVEUp
KQorICAgICAgICAgICAgcmV0dXJuIDEKKyAgICAgICAgaWYgcmVwb3NpdG9yeS5yZWJhc2UodGFy
Z2V0PXRhcmdldCwgYmFzZT1icmFuY2hfcG9pbnQuYnJhbmNoLCBoZWFkPXJlcG9zaXRvcnkuYnJh
bmNoKToKKyAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoIkZhaWxlZCB0byByZWJhc2UgJ3t9
JyBvbnRvICd7fScsIHBsZWFzZSByZXNvbHZlIGNvbmZsaWN0c1xuIi5mb3JtYXQocmVwb3NpdG9y
eS5icmFuY2gsIHRhcmdldCkpCisgICAgICAgICAgICByZXR1cm4gMQorICAgICAgICBsb2cud2Fy
bmluZygiUmViYXNlZCAne30nIGZyb20gJ3t9JyB0byAne30nISIuZm9ybWF0KHJlcG9zaXRvcnku
YnJhbmNoLCBicmFuY2hfcG9pbnQuYnJhbmNoLCB0YXJnZXQpKQorCisgICAgICAgIGlmIHJ1bihb
cmVwb3NpdG9yeS5leGVjdXRhYmxlKCksICdicmFuY2gnLCAnLWYnLCB0YXJnZXQsIHJlcG9zaXRv
cnkuYnJhbmNoXSwgY3dkPXJlcG9zaXRvcnkucm9vdF9wYXRoKS5yZXR1cm5jb2RlOgorICAgICAg
ICAgICAgc3lzLnN0ZGVyci53cml0ZSgiRmFpbGVkIHRvIG1vdmUgJ3t9JyByZWZcbiIuZm9ybWF0
KHRhcmdldCkpCisgICAgICAgICAgICByZXR1cm4gMQorCisgICAgICAgIGlmIGlkZW50aWZpZXJf
dGVtcGxhdGU6CisgICAgICAgICAgICBzb3VyY2UgPSByZXBvc2l0b3J5LmJyYW5jaAorICAgICAg
ICAgICAgcmVwb3NpdG9yeS5jaGVja291dCh0YXJnZXQpCisgICAgICAgICAgICBpZiBDYW5vbmlj
YWxpemUubWFpbihOYW1lc3BhY2UoCisgICAgICAgICAgICAgICAgaWRlbnRpZmllcj1UcnVlLCBy
ZW1vdGU9Y2xzLlJFTU9URSwgbnVtYmVyPWxlbihjb21taXRzKSwKKyAgICAgICAgICAgICksIHJl
cG9zaXRvcnksIGlkZW50aWZpZXJfdGVtcGxhdGU9aWRlbnRpZmllcl90ZW1wbGF0ZSk6CisgICAg
ICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgiRmFpbGVkIHRvIGVtYmVkIGlkZW50aWZpZXJz
IHRvICd7fSdcbiIuZm9ybWF0KHRhcmdldCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIDEKKyAg
ICAgICAgICAgIGlmIHJ1bihbcmVwb3NpdG9yeS5leGVjdXRhYmxlKCksICdicmFuY2gnLCAnLWYn
LCBzb3VyY2UsIHRhcmdldF0sIGN3ZD1yZXBvc2l0b3J5LnJvb3RfcGF0aCkucmV0dXJuY29kZToK
KyAgICAgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCJGYWlsZWQgdG8gbW92ZSAne30nIHJl
ZiB0byB0aGUgY2Fub25pY2FsaXplZCBoZWFkIG9mICd7fSdcbiIuZm9ybWF0KHNvdXJjZSwgdGFy
Z2V0KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gLTEKKworICAgICAgICBpZiBjYW5vbmljYWxf
c3ZuOgorICAgICAgICAgICAgaWYgcnVuKFtyZXBvc2l0b3J5LmV4ZWN1dGFibGUoKSwgJ3N2bics
ICdmZXRjaCddLCBjd2Q9cmVwb3NpdG9yeS5yb290X3BhdGgpLnJldHVybmNvZGU6CisgICAgICAg
ICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgiRmFpbGVkIHRvIHVwZGF0ZSBzdWJ2ZXJzaW9uIHJl
ZnNcbiIuZm9ybWF0KHRhcmdldCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIDEKKyAgICAgICAg
ICAgIGlmIHJ1bihbcmVwb3NpdG9yeS5leGVjdXRhYmxlKCksICdzdm4nLCAnZGNvbW1pdCddLCBj
d2Q9cmVwb3NpdG9yeS5yb290X3BhdGgpLnJldHVybmNvZGU6CisgICAgICAgICAgICAgICAgc3lz
LnN0ZGVyci53cml0ZSgiRmFpbGVkIHRvIGNvbW1pdCAne30nIHRvIFN1YnZlcnNpb24gcmVtb3Rl
XG4iLmZvcm1hdCh0YXJnZXQpKQorICAgICAgICAgICAgICAgIHJldHVybiAxCisgICAgICAgICAg
ICBydW4oW3JlcG9zaXRvcnkuZXhlY3V0YWJsZSgpLCAncmVzZXQnLCAnSEVBRH57fScuZm9ybWF0
KGxlbihjb21taXRzKSksICctLWhhcmQnXSwgY3dkPXJlcG9zaXRvcnkucm9vdF9wYXRoKQorCisg
ICAgICAgICAgICAjIFZlcmlmeSB0aGUgbWlycm9yIHByb2Nlc3NlZCBvdXIgY2hhbmdlCisgICAg
ICAgICAgICBzdGFydGVkID0gdGltZS50aW1lKCkKKyAgICAgICAgICAgIG9yaWdpbmFsID0gcmVw
b3NpdG9yeS5maW5kKCdIRUFEJywgaW5jbHVkZV9sb2c9RmFsc2UsIGluY2x1ZGVfaWRlbnRpZmll
cj1GYWxzZSkKKyAgICAgICAgICAgIGxhdGVzdCA9IG9yaWdpbmFsCisgICAgICAgICAgICB3aGls
ZSBvcmlnaW5hbC5oYXNoID09IGxhdGVzdC5oYXNoOgorICAgICAgICAgICAgICAgIGlmIHRpbWUu
dGltZSgpIC0gc3RhcnRlZCA+IGNscy5NSVJST1JfVElNRU9VVDoKKyAgICAgICAgICAgICAgICAg
ICAgc3lzLnN0ZGVyci53cml0ZSgiVGltZWQgb3V0IHdhaXRpbmcgZm9yIHRoZSBnaXQtc3ZuIG1p
cnJvciwgJ3t9JyBsYW5kZWQgYnV0IG5vdCBjbG9zZWRcbiIuZm9ybWF0KHB1bGxfcmVxdWVzdCBv
ciByZXBvc2l0b3J5LmJyYW5jaCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAxCisgICAg
ICAgICAgICAgICAgbG9nLndhcm5pbmcoJyAgICBWZXJpZnlpbmcgbWlycm9yIHByb2Nlc3Nlc2Vk
IGNoYW5nZScpCisgICAgICAgICAgICAgICAgdGltZS5zbGVlcCg1KQorICAgICAgICAgICAgICAg
IHJ1bihbcmVwb3NpdG9yeS5leGVjdXRhYmxlKCksICdwdWxsJ10sIGN3ZD1yZXBvc2l0b3J5LnJv
b3RfcGF0aCkKKyAgICAgICAgICAgICAgICBvcmlnaW5hbCA9IHJlcG9zaXRvcnkuZmluZCgnSEVB
RCcsIGluY2x1ZGVfbG9nPUZhbHNlLCBpbmNsdWRlX2lkZW50aWZpZXI9RmFsc2UpCisKKyAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgIGlmIHJ1bihbcmVwb3NpdG9yeS5leGVjdXRhYmxlKCksICdw
dXNoJywgY2xzLlJFTU9URSwgdGFyZ2V0XSwgY3dkPXJlcG9zaXRvcnkucm9vdF9wYXRoKS5yZXR1
cm5jb2RlOgorICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoIkZhaWxlZCB0byBwdXNo
ICd7fScgdG8gJ3t9J1xuIi5mb3JtYXQodGFyZ2V0LCBjbHMuUkVNT1RFKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gMQorCisgICAgICAgIGNvbW1pdCA9IHJlcG9zaXRvcnkuY29tbWl0KGJyYW5j
aD10YXJnZXQsIGluY2x1ZGVfbG9nPUZhbHNlKQorICAgICAgICBpZiBpZGVudGlmaWVyX3RlbXBs
YXRlIGFuZCBjb21taXQuaWRlbnRpZmllcjoKKyAgICAgICAgICAgIGxhbmRfbWVzc2FnZSA9ICdM
YW5kZWQge30gKHt9KSEnLmZvcm1hdChpZGVudGlmaWVyX3RlbXBsYXRlLmZvcm1hdChjb21taXQp
LnNwbGl0KCc6ICcpWy0xXSwgY29tbWl0Lmhhc2gpCisgICAgICAgIGVsc2U6CisgICAgICAgICAg
ICBsYW5kX21lc3NhZ2UgPSAnTGFuZGVkIHt9IScuZm9ybWF0KGNvbW1pdC5oYXNoKQorICAgICAg
ICBwcmludChsYW5kX21lc3NhZ2UpCisKKyAgICAgICAgaWYgcHVsbF9yZXF1ZXN0OgorICAgICAg
ICAgICAgcHVsbF9yZXF1ZXN0LmNvbW1lbnQobGFuZF9tZXNzYWdlKQorICAgICAgICAgICAgcHVs
bF9yZXF1ZXN0LmNsb3NlKCkKKworICAgICAgICByZXR1cm4gMApkaWZmIC0tZ2l0IGEvVG9vbHMv
U2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvc2NtX2Jhc2UucHkgYi9U
b29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9zY21fYmFzZS5w
eQppbmRleCBlMzM5ZmY4ZmNkMjc5NDk1MDU3M2ZiZWNlMzQ5MzJkNDZiMjdhYTEzLi5iNThmMmU1
NGQ5MTMwZTRiZTllMmUxMzU5OTU4MDcxYjI5MGM4ZGNjIDEwMDY0NAotLS0gYS9Ub29scy9TY3Jp
cHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9zY21fYmFzZS5weQorKysgYi9U
b29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9zY21fYmFzZS5w
eQpAQCAtMjQsNyArMjQsOSBAQCBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IHJlCiBpbXBvcnQgc2l4
CiBpbXBvcnQgc3lzCitpbXBvcnQgdGltZQogCitmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRldGlt
ZQogZnJvbSBsb2dnaW5nIGltcG9ydCBOdWxsSGFuZGxlcgogZnJvbSB3ZWJraXRzY21weSBpbXBv
cnQgQ29tbWl0LCBDb250cmlidXRvciwgbG9nCiAKQEAgLTQwLDYgKzQyLDE0IEBAIGNsYXNzIFNj
bUJhc2Uob2JqZWN0KToKICAgICBHSVRfU1ZOX1JFVklTSU9OID0gcmUuY29tcGlsZShyJ15naXQt
c3ZuLWlkOiBcUys6XC9cLy4rQCg/UDxyZXZpc2lvbj5cZCspIC4rLS4rLS4rLS4rJywgZmxhZ3M9
cmUuTVVMVElMSU5FKQogICAgIERFRkFVTFRfQlJBTkNIRVMgPSBbJ21haW4nLCAnbWFzdGVyJywg
J3RydW5rJ10KIAorICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBnbXRvZmZzZXQoY2xzKToKKyAg
ICAgICAgaWYgc3lzLnZlcnNpb25faW5mbyA+PSAoMywgMCk6CisgICAgICAgICAgICByZXR1cm4g
aW50KHRpbWUubG9jYWx0aW1lKCkudG1fZ210b2ZmICogMTAwIC8gKDYwICogNjApKQorCisgICAg
ICAgIHRzID0gdGltZS50aW1lKCkKKyAgICAgICAgcmV0dXJuIGludCgoZGF0ZXRpbWUuZnJvbXRp
bWVzdGFtcCh0cykgLSBkYXRldGltZS51dGNmcm9tdGltZXN0YW1wKHRzKSkudG90YWxfc2Vjb25k
cygpICogMTAwIC8gKDYwICogNjApKQorCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGRldl9icmFu
Y2hlcz1Ob25lLCBwcm9kX2JyYW5jaGVzPU5vbmUsIGNvbnRyaWJ1dG9ycz1Ob25lLCBpZD1Ob25l
KToKICAgICAgICAgc2VsZi5kZXZfYnJhbmNoZXMgPSBkZXZfYnJhbmNoZXMgb3Igc2VsZi5ERVZf
QlJBTkNIRVMKICAgICAgICAgc2VsZi5wcm9kX2JyYW5jaGVzID0gcHJvZF9icmFuY2hlcyBvciBz
ZWxmLlBST0RfQlJBTkNIRVMKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dl
YmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Rlc3QvZ2l0X3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0
cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvdGVzdC9naXRfdW5pdHRlc3QucHkK
aW5kZXggNmU0MTBmNmQzMzUxMzc1NGY4MWU3ZjI3NTA3MzIzMGJjOWY5MWRjYS4uOTIzNWMwYTZl
MDllNTlkNTQ3N2MyNDI0NjQ2NDBhZDcwNTc4MTBjYyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0
cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvdGVzdC9naXRfdW5pdHRlc3QucHkK
KysrIGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvdGVz
dC9naXRfdW5pdHRlc3QucHkKQEAgLTI5Niw3ICsyOTYsNiBAQCBjbGFzcyBUZXN0R2l0KHRlc3Rp
bmcuUGF0aFRlc3RDYXNlKToKICAgICAgICAgICAgICAgICAgICAgZ2l0LmNvbW1pdChoYXNoPSdi
YWU1ZDFlOScpLAogICAgICAgICAgICAgICAgICAgICBnaXQuY29tbWl0KGhhc2g9JzFhYmUyNWI0
JyksCiAgICAgICAgICAgICAgICAgICAgIGdpdC5jb21taXQoaGFzaD0nZmZmODNiYjInKSwKLSAg
ICAgICAgICAgICAgICAgICAgZ2l0LmNvbW1pdChoYXNoPSc5YjgzMTFmMicpLAogICAgICAgICAg
ICAgICAgIF0pLCBDb21taXQuRW5jb2RlcigpLmRlZmF1bHQobGlzdChnaXQuY29tbWl0cyhiZWdp
bj1kaWN0KGhhc2g9JzliODMxMWYyJyksIGVuZD1kaWN0KGhhc2g9J2JhZTVkMWU5JykpKSkpCiAK
ICAgICBkZWYgdGVzdF9jb21taXRzX2JyYW5jaChzZWxmKToKQEAgLTMwNyw3ICszMDYsNiBAQCBj
bGFzcyBUZXN0R2l0KHRlc3RpbmcuUGF0aFRlc3RDYXNlKToKICAgICAgICAgICAgICAgICAgICAg
Z2l0LmNvbW1pdChoYXNoPSc2MjE2NTJhZCcpLAogICAgICAgICAgICAgICAgICAgICBnaXQuY29t
bWl0KGhhc2g9J2EzMGNlODQ5JyksCiAgICAgICAgICAgICAgICAgICAgIGdpdC5jb21taXQoaGFz
aD0nZmZmODNiYjInKSwKLSAgICAgICAgICAgICAgICAgICAgZ2l0LmNvbW1pdChoYXNoPSc5Yjgz
MTFmMicpLAogICAgICAgICAgICAgICAgIF0pLCBDb21taXQuRW5jb2RlcigpLmRlZmF1bHQobGlz
dChnaXQuY29tbWl0cyhiZWdpbj1kaWN0KGFyZ3VtZW50PSc5YjgzMTFmMicpLCBlbmQ9ZGljdChh
cmd1bWVudD0nNjIxNjUyYWQnKSkpKSkKIAogICAgIGRlZiB0ZXN0X2xvZyhzZWxmKToKQEAgLTMz
MywxNSArMzMxLDYgQEAgQ29tbWl0RGF0ZToge3RpbWVfYX0KIAogICAgIDh0aCBjb21taXQKICAg
ICBnaXQtc3ZuLWlkOiBodHRwczovL3N2bi5leGFtcGxlLm9yZy9yZXBvc2l0b3J5L3JlcG9zaXRv
cnkvdHJ1bmtAOCAyNjhmNDVjYy1jZDA5LTA0MTAtYWIzYy1kNTI2OTFiNGRiZmMKLQotY29tbWl0
IDFhYmUyNWI0NDNlOTg1ZjkzYjkwZDgzMGU0YTdlMzczMTMzNmFmNGQKLUF1dGhvcjogICAgIEpv
bmF0aGFuIEJlZGFyZCA8amJlZGFyZEBhcHBsZS5jb20+Ci1BdXRob3JEYXRlOiB7dGltZV9ifQot
Q29tbWl0OiAgICAgSm9uYXRoYW4gQmVkYXJkIDxqYmVkYXJkQGFwcGxlLmNvbT4KLUNvbW1pdERh
dGU6IHt0aW1lX2J9Ci0KLSAgICA0dGggY29tbWl0Ci0gICAgZ2l0LXN2bi1pZDogaHR0cHM6Ly9z
dm4uZXhhbXBsZS5vcmcvcmVwb3NpdG9yeS9yZXBvc2l0b3J5L3RydW5rQDQgMjY4ZjQ1Y2MtY2Qw
OS0wNDEwLWFiM2MtZDUyNjkxYjRkYmZjCiAnJycuZm9ybWF0KAogICAgICAgICAgICAgICAgIHRp
bWVfYT1kYXRldGltZS51dGNmcm9tdGltZXN0YW1wKDE2MDE2NjgwMDAgKyB0aW1lLnRpbWV6b25l
KS5zdHJmdGltZSgnJWEgJWIgJWQgJUg6JU06JVMgJVkgKzAwMDAnKSwKICAgICAgICAgICAgICAg
ICB0aW1lX2I9ZGF0ZXRpbWUudXRjZnJvbXRpbWVzdGFtcCgxNjAxNjYzMDAwICsgdGltZS50aW1l
em9uZSkuc3RyZnRpbWUoJyVhICViICVkICVIOiVNOiVTICVZICswMDAwJyksCkBAIC0zNzIsMTUg
KzM2MSw2IEBAIENvbW1pdERhdGU6IHt0aW1lX2J9CiAgICAgICAgIENoZXJyeSBwaWNrCiAgICAg
ICAgIGdpdC1zdm4taWQ6IGh0dHBzOi8vc3ZuLndlYmtpdC5vcmcvcmVwb3NpdG9yeS93ZWJraXQv
dHJ1bmtANiAyNjhmNDVjYy1jZDA5LTA0MTAtYWIzYy1kNTI2OTFiNGRiZmMKICAgICBnaXQtc3Zu
LWlkOiBodHRwczovL3N2bi5leGFtcGxlLm9yZy9yZXBvc2l0b3J5L3JlcG9zaXRvcnkvdHJ1bmtA
NSAyNjhmNDVjYy1jZDA5LTA0MTAtYWIzYy1kNTI2OTFiNGRiZmMKLQotY29tbWl0IGEzMGNlODQ5
NGJmMWFjMjgwN2E2OTg0NGY3MjZiZTRhOTg0M2NhNTUKLUF1dGhvcjogICAgIEpvbmF0aGFuIEJl
ZGFyZCA8amJlZGFyZEBhcHBsZS5jb20+Ci1BdXRob3JEYXRlOiB7dGltZV9jfQotQ29tbWl0OiAg
ICAgSm9uYXRoYW4gQmVkYXJkIDxqYmVkYXJkQGFwcGxlLmNvbT4KLUNvbW1pdERhdGU6IHt0aW1l
X2N9Ci0KLSAgICAzcmQgY29tbWl0Ci0gICAgZ2l0LXN2bi1pZDogaHR0cHM6Ly9zdm4uZXhhbXBs
ZS5vcmcvcmVwb3NpdG9yeS9yZXBvc2l0b3J5L3RydW5rQDMgMjY4ZjQ1Y2MtY2QwOS0wNDEwLWFi
M2MtZDUyNjkxYjRkYmZjCiAnJycuZm9ybWF0KAogICAgICAgICAgICAgICAgIHRpbWVfYT1kYXRl
dGltZS51dGNmcm9tdGltZXN0YW1wKDE2MDE2NjcwMDAgKyB0aW1lLnRpbWV6b25lKS5zdHJmdGlt
ZSgnJWEgJWIgJWQgJUg6JU06JVMgJVkgKzAwMDAnKSwKICAgICAgICAgICAgICAgICB0aW1lX2I9
ZGF0ZXRpbWUudXRjZnJvbXRpbWVzdGFtcCgxNjAxNjY0MDAwICsgdGltZS50aW1lem9uZSkuc3Ry
ZnRpbWUoJyVhICViICVkICVIOiVNOiVTICVZICswMDAwJyksCkBAIC00NzcsMTIgKzQ1NywyOCBA
QCBDb21taXREYXRlOiB7dGltZV9jfQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXBv
Lm1vZGlmaWVkKHN0YWdlZD1UcnVlKSwgWydhZGRlZC50eHQnLCAnbW9kaWZpZWQudHh0J10pCiAK
ICAgICBkZWYgdGVzdF9yZWJhc2Uoc2VsZik6Ci0gICAgICAgIHdpdGggbW9ja3MubG9jYWwuR2l0
KHNlbGYucGF0aCk6CisgICAgICAgIHdpdGggbW9ja3MubG9jYWwuR2l0KHNlbGYucGF0aCksIE91
dHB1dENhcHR1cmUoKToKICAgICAgICAgICAgIHJlcG8gPSBsb2NhbC5HaXQoc2VsZi5wYXRoKQog
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIocmVwby5jb21taXQoYnJhbmNoPSdicmFu
Y2gtYScpKSwgJzIuMkBicmFuY2gtYScpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJl
cG8ucmViYXNlKHRhcmdldD0nbWFpbicsIGJhc2U9J21haW4nLCBoZWFkPSdicmFuY2gtYScsIHJl
Y29tbWl0PUZhbHNlKSwgMCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHJlcG8u
Y29tbWl0KGJyYW5jaD0nYnJhbmNoLWEnKSksICc1LjJAYnJhbmNoLWEnKQogCisgICAgZGVmIHRl
c3RfZGlmZl9saW5lcyhzZWxmKToKKyAgICAgICAgd2l0aCBtb2Nrcy5sb2NhbC5HaXQoc2VsZi5w
YXRoKSwgT3V0cHV0Q2FwdHVyZSgpOgorICAgICAgICAgICAgcmVwbyA9IGxvY2FsLkdpdChzZWxm
LnBhdGgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIFsn
LS0tIGEvQ2hhbmdlTG9nJywgJysrKyBiL0NoYW5nZUxvZycsICdAQCAtMSwwICsxLDAgQEAnLCAn
KyBQYXRjaCBTZXJpZXMnXSwKKyAgICAgICAgICAgICAgICBsaXN0KHJlcG8uZGlmZl9saW5lcyhi
YXNlPSdiYWU1ZDFlOTA5OTlkNGY5MTZhOGExNTgxMGNjZmE0M2YzN2EyZmQ2JykpCisgICAgICAg
ICAgICApCisKKyAgICBkZWYgdGVzdF9kaWZmX2xpbmVzX2lkZW50aWZpZXIoc2VsZik6CisgICAg
ICAgIHdpdGggbW9ja3MubG9jYWwuR2l0KHNlbGYucGF0aCksIE91dHB1dENhcHR1cmUoKToKKyAg
ICAgICAgICAgIHJlcG8gPSBsb2NhbC5HaXQoc2VsZi5wYXRoKQorICAgICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBbJy0tLSBhL0NoYW5nZUxvZycsICcrKysgYi9D
aGFuZ2VMb2cnLCAnQEAgLTEsMCArMSwwIEBAJywgJysgOHRoIGNvbW1pdCddLAorICAgICAgICAg
ICAgICAgIGxpc3QocmVwby5kaWZmX2xpbmVzKGJhc2U9JzNAbWFpbicsIGhlYWQ9JzRAbWFpbicp
KQorICAgICAgICAgICAgKQorCiAKIGNsYXNzIFRlc3RHaXRIdWIodGVzdGluZy5UZXN0Q2FzZSk6
CiAgICAgcmVtb3RlID0gJ2h0dHBzOi8vZ2l0aHViLmV4YW1wbGUuY29tL1dlYktpdC9XZWJLaXQn
CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRz
Y21weS90ZXN0L2xhbmRfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJr
aXRzY21weS93ZWJraXRzY21weS90ZXN0L2xhbmRfdW5pdHRlc3QucHkKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjY5
NDQ2YjZhNjczNWMxOTlkMjhmM2I5MmFiNTExZGI0NDdkYmM1MwotLS0gL2Rldi9udWxsCisrKyBi
L1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Rlc3QvbGFu
ZF91bml0dGVzdC5weQpAQCAtMCwwICsxLDQzOSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFO
WQorIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCisjIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisjIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyMgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OCisjIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTCisjIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorCitpbXBvcnQgb3MKK2ltcG9ydCB0aW1lCisKK2Zyb20gd2Via2l0Y29yZXB5
IGltcG9ydCBPdXRwdXRDYXB0dXJlLCB0ZXN0aW5nCitmcm9tIHdlYmtpdGNvcmVweS5tb2NrcyBp
bXBvcnQgVGVybWluYWwgYXMgTW9ja1Rlcm1pbmFsLCBUaW1lIGFzIE1vY2tUaW1lCitmcm9tIHdl
YmtpdHNjbXB5IGltcG9ydCBDb250cmlidXRvciwgQ29tbWl0LCBsb2NhbCwgcHJvZ3JhbSwgbW9j
a3MKKworCitkZWYgcmVwb3NpdG9yeShwYXRoLCBoYXNfb29wcz1UcnVlLCByZW1vdGU9Tm9uZSwg
Z2l0X3N2bj1GYWxzZSk6CisgICAgYnJhbmNoID0gJ2VuZy9leGFtcGxlJworICAgIHJlc3VsdCA9
IG1vY2tzLmxvY2FsLkdpdChwYXRoLCByZW1vdGU9cmVtb3RlLCBnaXRfc3ZuPWdpdF9zdm4pCisg
ICAgcmVzdWx0LmNvbW1pdHNbYnJhbmNoXSA9IFtDb21taXQoCisgICAgICAgIGhhc2g9J2E1ZmU4
YWZlOWJmN2QwNzE1OGZjZDllOTczMmZmMDJhNzEyZGIyZmQnLAorICAgICAgICBpZGVudGlmaWVy
PSczLjFAe30nLmZvcm1hdChicmFuY2gpLAorICAgICAgICB0aW1lc3RhbXA9aW50KHRpbWUudGlt
ZSgpKSAtIDYwLAorICAgICAgICBhdXRob3I9Q29udHJpYnV0b3IoJ1RpbSBDb21taXR0ZXInLCBb
J3Rjb21taXR0ZXJAd2Via2l0Lm9yZyddKSwKKyAgICAgICAgbWVzc2FnZT0nVG8gQmUgQ29tbWl0
dGVkXG5cblJldmlld2VkIGJ5IHt9LlxuJy5mb3JtYXQoCisgICAgICAgICAgICAnTk9CT0RZIChP
T1BTISknIGlmIGhhc19vb3BzIGVsc2UgJ1JpY2t5IFJldmlld2VyJywKKyAgICAgICAgKSwKKyAg
ICApXQorICAgIHJlc3VsdC5oZWFkID0gcmVzdWx0LmNvbW1pdHNbYnJhbmNoXVswXQorICAgIHJl
dHVybiByZXN1bHQKKworCitjbGFzcyBUZXN0TGFuZCh0ZXN0aW5nLlBhdGhUZXN0Q2FzZSk6Cisg
ICAgYmFzZXBhdGggPSAnbW9jay9yZXBvc2l0b3J5JworCisgICAgZGVmIHNldFVwKHNlbGYpOgor
ICAgICAgICBzdXBlcihUZXN0TGFuZCwgc2VsZikuc2V0VXAoKQorICAgICAgICBvcy5ta2Rpcihv
cy5wYXRoLmpvaW4oc2VsZi5wYXRoLCAnLmdpdCcpKQorICAgICAgICBvcy5ta2Rpcihvcy5wYXRo
LmpvaW4oc2VsZi5wYXRoLCAnLnN2bicpKQorCisgICAgZGVmIHRlc3Rfbm9uX2VkaXRhYmxlKHNl
bGYpOgorICAgICAgICB3aXRoIE91dHB1dENhcHR1cmUoKSBhcyBjYXB0dXJlZCwgbW9ja3MubG9j
YWwuR2l0KHNlbGYucGF0aCksIG1vY2tzLmxvY2FsLlN2bigpOgorICAgICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgxLCBwcm9ncmFtLm1haW4oCisgICAgICAgICAgICAgICAgYXJncz0oJ2xhbmQn
LCksCisgICAgICAgICAgICAgICAgcGF0aD1zZWxmLnBhdGgsCisgICAgICAgICAgICApKQorICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIobG9jYWwuR2l0KHNlbGYucGF0aCkuY29tbWl0
KCkpLCAnNUBtYWluJykKKworICAgICAgICBsb2cgPSBjYXB0dXJlZC5yb290LmxvZy5nZXR2YWx1
ZSgpLnNwbGl0bGluZXMoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFtsaW5lIGZvciBsaW5l
IGluIGxvZyBpZiAnTW9jayBwcm9jZXNzJyBub3QgaW4gbGluZV0sIFtdKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKAorICAgICAgICAgICAgY2FwdHVyZWQuc3RkZXJyLmdldHZhbHVlKCksCisg
ICAgICAgICAgICAiQ2FuIG9ubHkgJ2xhbmQnIGVkaXRhYmxlIGJyYW5jaGVzXG4iLAorICAgICAg
ICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FwdHVyZWQuc3Rkb3V0LmdldHZhbHVlKCks
ICcnKQorCisgICAgZGVmIHRlc3Rfd2l0aF9vb3BzKHNlbGYpOgorICAgICAgICB3aXRoIE91dHB1
dENhcHR1cmUoKSBhcyBjYXB0dXJlZCwgcmVwb3NpdG9yeShzZWxmLnBhdGgpLCBtb2Nrcy5sb2Nh
bC5Tdm4oKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgcHJvZ3JhbS5tYWluKAor
ICAgICAgICAgICAgICAgIGFyZ3M9KCdsYW5kJywpLAorICAgICAgICAgICAgICAgIHBhdGg9c2Vs
Zi5wYXRoLAorICAgICAgICAgICAgKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Ry
KGxvY2FsLkdpdChzZWxmLnBhdGgpLmNvbW1pdCgpKSwgJzMuMUBlbmcvZXhhbXBsZScpCisKKyAg
ICAgICAgbG9nID0gY2FwdHVyZWQucm9vdC5sb2cuZ2V0dmFsdWUoKS5zcGxpdGxpbmVzKCkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIFtsaW5lIGZvciBsaW5lIGluIGxv
ZyBpZiAnTW9jayBwcm9jZXNzJyBub3QgaW4gbGluZV0sIFsKKyAgICAgICAgICAgICAgICAnICAg
IEZvdW5kIDEgY29tbWl0Li4uJywKKyAgICAgICAgICAgIF0sCisgICAgICAgICkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGNhcHR1cmVkLnN0ZGVyci5nZXR2YWx1ZSgp
LAorICAgICAgICAgICAgIkZhaWxlZCB0byBmaW5kIHB1bGwtcmVxdWVzdCBhc3NvY2lhdGVkIHdp
dGggJ2VuZy9leGFtcGxlJ1xuIgorICAgICAgICAgICAgIkZvdW5kICcoT09QUyEpJyBtZXNzYWdl
IGluIGNvbW1pdCBtZXNzYWdlcywgcGxlYXNlIHJlc29sdmUgYmVmb3JlIGNvbW1pdHRpbmdcbiIs
CisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjYXB0dXJlZC5zdGRvdXQuZ2V0
dmFsdWUoKSwgJycpCisKKyAgICBkZWYgdGVzdF9kZWZhdWx0KHNlbGYpOgorICAgICAgICB3aXRo
IE91dHB1dENhcHR1cmUoKSBhcyBjYXB0dXJlZCwgcmVwb3NpdG9yeShzZWxmLnBhdGgsIGhhc19v
b3BzPUZhbHNlKSwgbW9ja3MubG9jYWwuU3ZuKCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKDAsIHByb2dyYW0ubWFpbigKKyAgICAgICAgICAgICAgICBhcmdzPSgnbGFuZCcsKSwKKyAg
ICAgICAgICAgICAgICBwYXRoPXNlbGYucGF0aCwKKyAgICAgICAgICAgICkpCisgICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHN0cihsb2NhbC5HaXQoc2VsZi5wYXRoKS5jb21taXQoKSksICc2
QG1haW4nKQorCisgICAgICAgIGxvZyA9IGNhcHR1cmVkLnJvb3QubG9nLmdldHZhbHVlKCkuc3Bs
aXRsaW5lcygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBbbGluZSBm
b3IgbGluZSBpbiBsb2cgaWYgJ01vY2sgcHJvY2Vzcycgbm90IGluIGxpbmVdLCBbCisgICAgICAg
ICAgICAgICAgJyAgICBGb3VuZCAxIGNvbW1pdC4uLicsCisgICAgICAgICAgICAgICAgIlJlYmFz
aW5nICdlbmcvZXhhbXBsZScgZnJvbSAnbWFpbicgdG8gJ21haW4nLi4uIiwKKyAgICAgICAgICAg
ICAgICAiUmViYXNlZCAnZW5nL2V4YW1wbGUnIGZyb20gJ21haW4nIHRvICdtYWluJyEiLAorICAg
ICAgICAgICAgXSwKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAg
ICAgICAgY2FwdHVyZWQuc3RkZXJyLmdldHZhbHVlKCksCisgICAgICAgICAgICAiRmFpbGVkIHRv
IGZpbmQgcHVsbC1yZXF1ZXN0IGFzc29jaWF0ZWQgd2l0aCAnZW5nL2V4YW1wbGUnXG4iLAorICAg
ICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FwdHVyZWQuc3Rkb3V0LmdldHZhbHVl
KCksICdMYW5kZWQgYTVmZThhZmU5YmY3ZDA3MTU4ZmNkOWU5NzMyZmYwMmE3MTJkYjJmZCFcbicp
CisKKyAgICBkZWYgdGVzdF9jYW5vbmljYWxpemUoc2VsZik6CisgICAgICAgIHdpdGggT3V0cHV0
Q2FwdHVyZSgpIGFzIGNhcHR1cmVkLCByZXBvc2l0b3J5KHNlbGYucGF0aCwgaGFzX29vcHM9RmFs
c2UpLCBtb2Nrcy5sb2NhbC5Tdm4oKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwg
cHJvZ3JhbS5tYWluKAorICAgICAgICAgICAgICAgIGFyZ3M9KCdsYW5kJywpLAorICAgICAgICAg
ICAgICAgIHBhdGg9c2VsZi5wYXRoLAorICAgICAgICAgICAgICAgIGlkZW50aWZpZXJfdGVtcGxh
dGU9J0Nhbm9uaWNhbCBsaW5rOiBodHRwczovL2NvbW1pdHMud2Via2l0Lm9yZy97fScsCisgICAg
ICAgICAgICApKQorCisgICAgICAgICAgICBjb21taXQgPSBsb2NhbC5HaXQoc2VsZi5wYXRoKS5j
b21taXQoYnJhbmNoPSdtYWluJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGNv
bW1pdCksICc2QG1haW4nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAg
ICAgICAgICBjb21taXQubWVzc2FnZSwKKyAgICAgICAgICAgICAgICAnVG8gQmUgQ29tbWl0dGVk
XG5cbicKKyAgICAgICAgICAgICAgICAnUmV2aWV3ZWQgYnkgUmlja3kgUmV2aWV3ZXIuXG5cbicK
KyAgICAgICAgICAgICAgICAnQ2Fub25pY2FsIGxpbms6IGh0dHBzOi8vY29tbWl0cy53ZWJraXQu
b3JnLzZAbWFpbicsCisgICAgICAgICAgICApCisKKyAgICAgICAgbG9nID0gY2FwdHVyZWQucm9v
dC5sb2cuZ2V0dmFsdWUoKS5zcGxpdGxpbmVzKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgK
KyAgICAgICAgICAgIFtsaW5lIGZvciBsaW5lIGluIGxvZyBpZiAnTW9jayBwcm9jZXNzJyBub3Qg
aW4gbGluZV0sIFsKKyAgICAgICAgICAgICAgICAnICAgIEZvdW5kIDEgY29tbWl0Li4uJywKKyAg
ICAgICAgICAgICAgICAiUmViYXNpbmcgJ2VuZy9leGFtcGxlJyBmcm9tICdtYWluJyB0byAnbWFp
bicuLi4iLAorICAgICAgICAgICAgICAgICJSZWJhc2VkICdlbmcvZXhhbXBsZScgZnJvbSAnbWFp
bicgdG8gJ21haW4nISIsCisgICAgICAgICAgICAgICAgJzEgY29tbWl0IHRvIGJlIGVkaXR0ZWQu
Li4nLAorICAgICAgICAgICAgXSwKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KAorICAgICAgICAgICAgY2FwdHVyZWQuc3RkZXJyLmdldHZhbHVlKCksCisgICAgICAgICAgICAi
RmFpbGVkIHRvIGZpbmQgcHVsbC1yZXF1ZXN0IGFzc29jaWF0ZWQgd2l0aCAnZW5nL2V4YW1wbGUn
XG4iLAorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBj
YXB0dXJlZC5zdGRvdXQuZ2V0dmFsdWUoKSwKKyAgICAgICAgICAgICdSZXdyaXRlIGE1ZmU4YWZl
OWJmN2QwNzE1OGZjZDllOTczMmZmMDJhNzEyZGIyZmQgKDEvMSkgKC0tLSBzZWNvbmRzIHBhc3Nl
ZCwgcmVtYWluaW5nIC0tLSBwcmVkaWN0ZWQpXG4nCisgICAgICAgICAgICAnMSBjb21taXQgc3Vj
Y2Vzc2Z1bGx5IGNhbm9uaWNhbGl6ZWQhXG4nCisgICAgICAgICAgICAnTGFuZGVkIGh0dHBzOi8v
Y29tbWl0cy53ZWJraXQub3JnLzZAbWFpbiAoYTVmZThhZmU5YmY3ZDA3MTU4ZmNkOWU5NzMyZmYw
MmE3MTJkYjJmZCkhXG4nLAorICAgICAgICApCisKKyAgICBkZWYgdGVzdF9ub19zdm5fY2Fub25p
Y2FsX3N2bihzZWxmKToKKyAgICAgICAgd2l0aCBPdXRwdXRDYXB0dXJlKCkgYXMgY2FwdHVyZWQs
IHJlcG9zaXRvcnkoc2VsZi5wYXRoLCBoYXNfb29wcz1GYWxzZSksIG1vY2tzLmxvY2FsLlN2bigp
OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBwcm9ncmFtLm1haW4oCisgICAgICAg
ICAgICAgICAgYXJncz0oJ2xhbmQnLCksCisgICAgICAgICAgICAgICAgcGF0aD1zZWxmLnBhdGgs
IGNhbm9uaWNhbF9zdm49VHJ1ZSwKKyAgICAgICAgICAgICkpCisgICAgICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHN0cihsb2NhbC5HaXQoc2VsZi5wYXRoKS5jb21taXQoKSksICczLjFAZW5nL2V4
YW1wbGUnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBjYXB0dXJl
ZC5zdGRlcnIuZ2V0dmFsdWUoKSwKKyAgICAgICAgICAgICJDYW5ub3QgJ2xhbmQnIG9uIGEgY2Fu
b25pY2FsIFNWTiByZXBvc2l0b3J5IHRoYXQgaXMgbm90IGNvbmZpZ3VyZWQgYXMgZ2l0LXN2blxu
IiwKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhcHR1cmVkLnN0ZG91dC5n
ZXR2YWx1ZSgpLCAnJykKKworICAgIGRlZiB0ZXN0X3N2bihzZWxmKToKKyAgICAgICAgc2VsZi5t
YXhEaWZmID0gTm9uZQorICAgICAgICB3aXRoIE1vY2tUaW1lLCBPdXRwdXRDYXB0dXJlKCkgYXMg
Y2FwdHVyZWQsIHJlcG9zaXRvcnkoc2VsZi5wYXRoLCBoYXNfb29wcz1GYWxzZSwgZ2l0X3N2bj1U
cnVlKSwgbW9ja3MubG9jYWwuU3ZuKCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAs
IHByb2dyYW0ubWFpbigKKyAgICAgICAgICAgICAgICBhcmdzPSgnbGFuZCcsKSwKKyAgICAgICAg
ICAgICAgICBwYXRoPXNlbGYucGF0aCwgY2Fub25pY2FsX3N2bj1UcnVlLAorICAgICAgICAgICAg
KSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGxvY2FsLkdpdChzZWxmLnBhdGgp
LmNvbW1pdCgpKSwgJzZAbWFpbicpCisKKyAgICAgICAgbG9nID0gY2FwdHVyZWQucm9vdC5sb2cu
Z2V0dmFsdWUoKS5zcGxpdGxpbmVzKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAg
ICAgICAgIFtsaW5lIGZvciBsaW5lIGluIGxvZyBpZiAnTW9jayBwcm9jZXNzJyBub3QgaW4gbGlu
ZV0sIFsKKyAgICAgICAgICAgICAgICAnICAgIEZvdW5kIDEgY29tbWl0Li4uJywKKyAgICAgICAg
ICAgICAgICAiUmViYXNpbmcgJ2VuZy9leGFtcGxlJyBmcm9tICdtYWluJyB0byAnbWFpbicuLi4i
LAorICAgICAgICAgICAgICAgICJSZWJhc2VkICdlbmcvZXhhbXBsZScgZnJvbSAnbWFpbicgdG8g
J21haW4nISIsCisgICAgICAgICAgICAgICAgJyAgICBWZXJpZnlpbmcgbWlycm9yIHByb2Nlc3Nl
c2VkIGNoYW5nZScsCisgICAgICAgICAgICBdLAorICAgICAgICApCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoCisgICAgICAgICAgICBjYXB0dXJlZC5zdGRlcnIuZ2V0dmFsdWUoKSwKKyAgICAg
ICAgICAgICJGYWlsZWQgdG8gZmluZCBwdWxsLXJlcXVlc3QgYXNzb2NpYXRlZCB3aXRoICdlbmcv
ZXhhbXBsZSdcbiIsCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAg
ICAgICAgIGNhcHR1cmVkLnN0ZG91dC5nZXR2YWx1ZSgpLAorICAgICAgICAgICAgJ0xhbmRlZCBh
NWZlOGFmZTliZjdkMDcxNThmY2Q5ZTk3MzJmZjAyYTcxMmRiMmZkIVxuJywKKyAgICAgICAgKQor
CisKK2NsYXNzIFRlc3RMYW5kR2l0SHViKHRlc3RpbmcuUGF0aFRlc3RDYXNlKToKKyAgICBiYXNl
cGF0aCA9ICdtb2NrL3JlcG9zaXRvcnknCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAg
IHN1cGVyKFRlc3RMYW5kR2l0SHViLCBzZWxmKS5zZXRVcCgpCisgICAgICAgIG9zLm1rZGlyKG9z
LnBhdGguam9pbihzZWxmLnBhdGgsICcuZ2l0JykpCisgICAgICAgIG9zLm1rZGlyKG9zLnBhdGgu
am9pbihzZWxmLnBhdGgsICcuc3ZuJykpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgd2Vi
c2VydmVyKGNscywgYXBwcm92ZWQ9Tm9uZSk6CisgICAgICAgIHJlc3VsdCA9IG1vY2tzLnJlbW90
ZS5HaXRIdWIoKQorICAgICAgICByZXN1bHQudXNlcnMgPSBkaWN0KAorICAgICAgICAgICAgcnJl
dmlld2VyPUNvbnRyaWJ1dG9yKCdSaWNreSBSZXZpZXdlcicsIFsncnJldmlld2VyQHdlYmtpdC5v
cmcnXSwgZ2l0aHViPSdycmV2aWV3ZXInKSwKKyAgICAgICAgICAgIHRjb250cmlidXRvcj1Db250
cmlidXRvcignVGltIENvbnRyaWJ1dG9yJywgWyd0Y29udHJpYnV0b3JAd2Via2l0Lm9yZyddLCBn
aXRodWI9J3Rjb250cmlidXRvcicpLAorICAgICAgICApCisgICAgICAgIHJlc3VsdC5pc3N1ZXMg
PSB7CisgICAgICAgICAgICAxOiBkaWN0KAorICAgICAgICAgICAgICAgIGNvbW1lbnRzPVtdLAor
ICAgICAgICAgICAgICAgIGFzc2lnbmVlcz1bXSwKKyAgICAgICAgICAgICkKKyAgICAgICAgfQor
ICAgICAgICByZXN1bHQucHVsbF9yZXF1ZXN0cyA9IFtkaWN0KAorICAgICAgICAgICAgbnVtYmVy
PTEsCisgICAgICAgICAgICBzdGF0ZT0nb3BlbicsCisgICAgICAgICAgICB0aXRsZT0nRXhhbXBs
ZSBDaGFuZ2UnLAorICAgICAgICAgICAgdXNlcj1kaWN0KGxvZ2luPSd0Y29udHJpYnV0b3InKSwK
KyAgICAgICAgICAgIGJvZHk9JycnIyMjIyBhNWZlOGFmZTliZjdkMDcxNThmY2Q5ZTk3MzJmZjAy
YTcxMmRiMmZkCisgICAgPHByZT4KKyAgICBUbyBCZSBDb21taXR0ZWQKKworICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorICAgIDwvcHJlPgorICAgICcnJywKKyAgICAgICAgICAgIGhl
YWQ9ZGljdChyZWY9J3VzZXJuYW1lOmVuZy9leGFtcGxlJyksCisgICAgICAgICAgICBiYXNlPWRp
Y3QocmVmPSdtYWluJyksCisgICAgICAgICAgICByZXF1ZXN0ZWRfcmV2aWV3cz1bZGljdChsb2dp
bj0ncnJldmlld2VyJyldLAorICAgICAgICAgICAgcmV2aWV3cz1bCisgICAgICAgICAgICAgICAg
ZGljdCh1c2VyPWRpY3QobG9naW49J3JyZXZpZXdlcicpLCBzdGF0ZT0nQVBQUk9WRUQnKQorICAg
ICAgICAgICAgXSBpZiBhcHByb3ZlZCBlbHNlIFtdICsgWworICAgICAgICAgICAgICAgIGRpY3Qo
dXNlcj1kaWN0KGxvZ2luPSdycmV2aWV3ZXInKSwgc3RhdGU9J0NIQU5HRVNfUkVRVUVTVEVEJykK
KyAgICAgICAgICAgIF0gaWYgYXBwcm92ZWQgaXMgbm90IE5vbmUgZWxzZSBbXSwgX2xpbmtzPWRp
Y3QoCisgICAgICAgICAgICAgICAgaXNzdWU9ZGljdChocmVmPSdodHRwczovL3t9L2lzc3Vlcy8x
Jy5mb3JtYXQocmVzdWx0LmFwaV9yZW1vdGUpKSwKKyAgICAgICAgICAgICksCisgICAgICAgICld
CisgICAgICAgIHJldHVybiByZXN1bHQKKworICAgIGRlZiB0ZXN0X25vX3Jldmlld2VyKHNlbGYp
OgorICAgICAgICB3aXRoIE91dHB1dENhcHR1cmUoKSBhcyBjYXB0dXJlZCwgc2VsZi53ZWJzZXJ2
ZXIoKSBhcyByZW1vdGUsIFwKKyAgICAgICAgICAgICAgICByZXBvc2l0b3J5KHNlbGYucGF0aCwg
cmVtb3RlPSdodHRwczovL3t9Jy5mb3JtYXQocmVtb3RlLnJlbW90ZSkpLCBtb2Nrcy5sb2NhbC5T
dm4oKToKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBwcm9ncmFtLm1haW4oCisg
ICAgICAgICAgICAgICAgYXJncz0oJ2xhbmQnLCksCisgICAgICAgICAgICAgICAgcGF0aD1zZWxm
LnBhdGgsCisgICAgICAgICAgICApKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIo
bG9jYWwuR2l0KHNlbGYucGF0aCkuY29tbWl0KCkpLCAnMy4xQGVuZy9leGFtcGxlJykKKworICAg
ICAgICBsb2cgPSBjYXB0dXJlZC5yb290LmxvZy5nZXR2YWx1ZSgpLnNwbGl0bGluZXMoKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgW2xpbmUgZm9yIGxpbmUgaW4gbG9n
IGlmICdNb2NrIHByb2Nlc3MnIG5vdCBpbiBsaW5lXSwgWworICAgICAgICAgICAgICAgICcgICAg
Rm91bmQgMSBjb21taXQuLi4nLAorICAgICAgICAgICAgXSwKKyAgICAgICAgKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgY2FwdHVyZWQuc3RkZXJyLmdldHZhbHVlKCks
CisgICAgICAgICAgICAiRm91bmQgJyhPT1BTISknIG1lc3NhZ2UgaW4gY29tbWl0IG1lc3NhZ2Vz
LCBwbGVhc2UgcmVzb2x2ZSBiZWZvcmUgY29tbWl0dGluZ1xuIiwKKyAgICAgICAgKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGNhcHR1cmVkLnN0ZG91dC5nZXR2YWx1ZSgpLCAnJykKKworICAg
IGRlZiB0ZXN0X2Jsb2NraW5nX3Jldmlld2VyKHNlbGYpOgorICAgICAgICB3aXRoIE91dHB1dENh
cHR1cmUoKSBhcyBjYXB0dXJlZCwgc2VsZi53ZWJzZXJ2ZXIoYXBwcm92ZWQ9RmFsc2UpIGFzIHJl
bW90ZSwgXAorICAgICAgICAgICAgICAgIHJlcG9zaXRvcnkoc2VsZi5wYXRoLCBoYXNfb29wcz1G
YWxzZSwgcmVtb3RlPSdodHRwczovL3t9Jy5mb3JtYXQocmVtb3RlLnJlbW90ZSkpLCBtb2Nrcy5s
b2NhbC5Tdm4oKToKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBwcm9ncmFtLm1h
aW4oCisgICAgICAgICAgICAgICAgYXJncz0oJ2xhbmQnLCksCisgICAgICAgICAgICAgICAgcGF0
aD1zZWxmLnBhdGgsCisgICAgICAgICAgICApKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChzdHIobG9jYWwuR2l0KHNlbGYucGF0aCkuY29tbWl0KCkpLCAnMy4xQGVuZy9leGFtcGxlJykK
KworICAgICAgICBsb2cgPSBjYXB0dXJlZC5yb290LmxvZy5nZXR2YWx1ZSgpLnNwbGl0bGluZXMo
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgW2xpbmUgZm9yIGxpbmUg
aW4gbG9nIGlmICdNb2NrIHByb2Nlc3MnIG5vdCBpbiBsaW5lXSwgWworICAgICAgICAgICAgICAg
ICcgICAgRm91bmQgMSBjb21taXQuLi4nLAorICAgICAgICAgICAgXSwKKyAgICAgICAgKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgY2FwdHVyZWQuc3RkZXJyLmdldHZh
bHVlKCksCisgICAgICAgICAgICAiUmlja3kgUmV2aWV3ZXIgaXMgYmxvY2tpbmcgbGFuZGluZyAn
UFIgMSB8IEV4YW1wbGUgQ2hhbmdlJ1xuIiwKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGNhcHR1cmVkLnN0ZG91dC5nZXR2YWx1ZSgpLCAnJykKKworICAgIGRlZiB0ZXN0X2lu
c2VydF9yZXZpZXcoc2VsZik6CisgICAgICAgIHdpdGggT3V0cHV0Q2FwdHVyZSgpIGFzIGNhcHR1
cmVkLCBNb2NrVGVybWluYWwuaW5wdXQoJ3knKSwgc2VsZi53ZWJzZXJ2ZXIoYXBwcm92ZWQ9VHJ1
ZSkgYXMgcmVtb3RlLCBcCisgICAgICAgICAgICAgICAgcmVwb3NpdG9yeShzZWxmLnBhdGgsIGhh
c19vb3BzPVRydWUsIHJlbW90ZT0naHR0cHM6Ly97fScuZm9ybWF0KHJlbW90ZS5yZW1vdGUpKSwg
bW9ja3MubG9jYWwuU3ZuKCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHByb2dy
YW0ubWFpbigKKyAgICAgICAgICAgICAgICBhcmdzPSgnbGFuZCcsKSwKKyAgICAgICAgICAgICAg
ICBwYXRoPXNlbGYucGF0aCwKKyAgICAgICAgICAgICkpCisKKyAgICAgICAgICAgIHJlcG8gPSBs
b2NhbC5HaXQoc2VsZi5wYXRoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIocmVw
by5jb21taXQoKSksICc2QG1haW4nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAg
ICAgICAgICAgICAgICBbY29tbWVudC5jb250ZW50IGZvciBjb21tZW50IGluIHJlcG8ucmVtb3Rl
KCkucHVsbF9yZXF1ZXN0cy5nZXQoMSkuY29tbWVudHNdLAorICAgICAgICAgICAgICAgIFsnTGFu
ZGVkIGE1ZmU4YWZlOWJmN2QwNzE1OGZjZDllOTczMmZmMDJhNzEyZGIyZmQhJ10sCisgICAgICAg
ICAgICApCisKKyAgICAgICAgbG9nID0gY2FwdHVyZWQucm9vdC5sb2cuZ2V0dmFsdWUoKS5zcGxp
dGxpbmVzKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIFtsaW5lIGZv
ciBsaW5lIGluIGxvZyBpZiAnTW9jayBwcm9jZXNzJyBub3QgaW4gbGluZV0sIFsKKyAgICAgICAg
ICAgICAgICAnICAgIEZvdW5kIDEgY29tbWl0Li4uJywKKyAgICAgICAgICAgICAgICAnU2V0dGlu
ZyBSaWNreSBSZXZpZXdlciBhcyByZXZpZXdlcicsCisgICAgICAgICAgICAgICAgIlJlYmFzaW5n
ICdlbmcvZXhhbXBsZScgZnJvbSAnbWFpbicgdG8gJ21haW4nLi4uIiwKKyAgICAgICAgICAgICAg
ICAiUmViYXNlZCAnZW5nL2V4YW1wbGUnIGZyb20gJ21haW4nIHRvICdtYWluJyEiLAorICAgICAg
ICAgICAgXSwKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhcHR1cmVkLnN0
ZGVyci5nZXR2YWx1ZSgpLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAg
ICAgIGNhcHR1cmVkLnN0ZG91dC5nZXR2YWx1ZSgpLAorICAgICAgICAgICAgIlNldCAnUmlja3kg
UmV2aWV3ZXInIGFzIHlvdXIgcmV2aWV3ZXI/IChZZXMvTm8pOiBcbiIKKyAgICAgICAgICAgICdM
YW5kZWQgYTVmZThhZmU5YmY3ZDA3MTU4ZmNkOWU5NzMyZmYwMmE3MTJkYjJmZCFcbicsCisgICAg
ICAgICkKKworCitjbGFzcyBUZXN0TGFuZEJpdEJ1Y2tldCh0ZXN0aW5nLlBhdGhUZXN0Q2FzZSk6
CisgICAgYmFzZXBhdGggPSAnbW9jay9yZXBvc2l0b3J5JworCisgICAgZGVmIHNldFVwKHNlbGYp
OgorICAgICAgICBzdXBlcihUZXN0TGFuZEJpdEJ1Y2tldCwgc2VsZikuc2V0VXAoKQorICAgICAg
ICBvcy5ta2Rpcihvcy5wYXRoLmpvaW4oc2VsZi5wYXRoLCAnLmdpdCcpKQorICAgICAgICBvcy5t
a2Rpcihvcy5wYXRoLmpvaW4oc2VsZi5wYXRoLCAnLnN2bicpKQorCisgICAgQGNsYXNzbWV0aG9k
CisgICAgZGVmIHdlYnNlcnZlcihjbHMsIGFwcHJvdmVkPU5vbmUpOgorICAgICAgICByZXN1bHQg
PSBtb2Nrcy5yZW1vdGUuQml0QnVja2V0KCkKKyAgICAgICAgcmVzdWx0LnB1bGxfcmVxdWVzdHMg
PSBbZGljdCgKKyAgICAgICAgICAgIGlkPTEsCisgICAgICAgICAgICBzdGF0ZT0nT1BFTicsCisg
ICAgICAgICAgICBvcGVuPVRydWUsCisgICAgICAgICAgICBjbG9zZWQ9RmFsc2UsCisgICAgICAg
ICAgICBhY3Rpdml0aWVzPVtdLAorICAgICAgICAgICAgdGl0bGU9J0V4YW1wbGUgQ2hhbmdlJywK
KyAgICAgICAgICAgIGF1dGhvcj1kaWN0KAorICAgICAgICAgICAgICAgIHVzZXI9ZGljdCgKKyAg
ICAgICAgICAgICAgICAgICAgbmFtZT0ndGNvbnRyaWJ1dG9yJywKKyAgICAgICAgICAgICAgICAg
ICAgZW1haWxBZGRyZXNzPSd0Y29udHJpYnV0b3JAYXBwbGUuY29tJywKKyAgICAgICAgICAgICAg
ICAgICAgZGlzcGxheU5hbWU9J1RpbSBDb250cmlidXRvcicsCisgICAgICAgICAgICAgICAgKSwK
KyAgICAgICAgICAgICksIGJvZHk9JycnIyMjIyBhNWZlOGFmZTliZjdkMDcxNThmY2Q5ZTk3MzJm
ZjAyYTcxMmRiMmZkCisgICAgYGBgCisgICAgVG8gQmUgQ29tbWl0dGVkCisKKyAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICBgYGAKKyAgICAnJycsCisgICAgICAgICAgICBmcm9t
UmVmPWRpY3QoZGlzcGxheUlkPSdlbmcvZXhhbXBsZScsIGlkPSdyZWZzL2hlYWRzL2VuZy9leGFt
cGxlJyksCisgICAgICAgICAgICB0b1JlZj1kaWN0KGRpc3BsYXlJZD0nbWFpbicsIGlkPSdyZWZz
L2hlYWRzL21haW4nKSwKKyAgICAgICAgICAgIHJldmlld2Vycz1bCisgICAgICAgICAgICAgICAg
ZGljdCgKKyAgICAgICAgICAgICAgICAgICAgdXNlcj1kaWN0KAorICAgICAgICAgICAgICAgICAg
ICAgICAgZGlzcGxheU5hbWU9J1JpY2t5IFJldmlld2VyJywKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGVtYWlsQWRkcmVzcz0ncnJldmlld2VyQHdlYmtpdC5vcmcnLAorICAgICAgICAgICAgICAg
ICAgICApLCBhcHByb3ZlZD1UcnVlIGlmIGFwcHJvdmVkIGVsc2UgRmFsc2UsCisgICAgICAgICAg
ICAgICAgICAgIHN0YXR1cz0nTkVFRFNfV09SSycgaWYgYXBwcm92ZWQgaXMgRmFsc2UgZWxzZSBO
b25lLAorICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICBdLAorICAgICAgICApXQorICAg
ICAgICByZXR1cm4gcmVzdWx0CisKKyAgICBkZWYgdGVzdF9ub19yZXZpZXdlcihzZWxmKToKKyAg
ICAgICAgd2l0aCBPdXRwdXRDYXB0dXJlKCkgYXMgY2FwdHVyZWQsIHNlbGYud2Vic2VydmVyKCkg
YXMgcmVtb3RlLCByZXBvc2l0b3J5KAorICAgICAgICAgICAgICAgIHNlbGYucGF0aCwgcmVtb3Rl
PSdzc2g6Ly9naXRAe30ve30ve30uZ2l0Jy5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgIHJl
bW90ZS5ob3N0c1swXSwgcmVtb3RlLnByb2plY3Quc3BsaXQoJy8nKVsxXSwgcmVtb3RlLnByb2pl
Y3Quc3BsaXQoJy8nKVszXSwKKyAgICAgICAgICAgICAgICApKSwgbW9ja3MubG9jYWwuU3ZuKCk6
CisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgcHJvZ3JhbS5tYWluKAorICAgICAg
ICAgICAgICAgIGFyZ3M9KCdsYW5kJywpLAorICAgICAgICAgICAgICAgIHBhdGg9c2VsZi5wYXRo
LAorICAgICAgICAgICAgKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGxvY2Fs
LkdpdChzZWxmLnBhdGgpLmNvbW1pdCgpKSwgJzMuMUBlbmcvZXhhbXBsZScpCisKKyAgICAgICAg
bG9nID0gY2FwdHVyZWQucm9vdC5sb2cuZ2V0dmFsdWUoKS5zcGxpdGxpbmVzKCkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIFtsaW5lIGZvciBsaW5lIGluIGxvZyBpZiAn
TW9jayBwcm9jZXNzJyBub3QgaW4gbGluZV0sIFsKKyAgICAgICAgICAgICAgICAnICAgIEZvdW5k
IDEgY29tbWl0Li4uJywKKyAgICAgICAgICAgIF0sCisgICAgICAgICkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGNhcHR1cmVkLnN0ZGVyci5nZXR2YWx1ZSgpLAorICAg
ICAgICAgICAgIkZvdW5kICcoT09QUyEpJyBtZXNzYWdlIGluIGNvbW1pdCBtZXNzYWdlcywgcGxl
YXNlIHJlc29sdmUgYmVmb3JlIGNvbW1pdHRpbmdcbiIsCisgICAgICAgICkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChjYXB0dXJlZC5zdGRvdXQuZ2V0dmFsdWUoKSwgJycpCisKKyAgICBkZWYg
dGVzdF9ibG9ja2luZ19yZXZpZXdlcihzZWxmKToKKyAgICAgICAgd2l0aCBPdXRwdXRDYXB0dXJl
KCkgYXMgY2FwdHVyZWQsIHNlbGYud2Vic2VydmVyKGFwcHJvdmVkPUZhbHNlKSBhcyByZW1vdGUs
IHJlcG9zaXRvcnkoCisgICAgICAgICAgICAgICAgc2VsZi5wYXRoLCBoYXNfb29wcz1GYWxzZSwg
cmVtb3RlPSdzc2g6Ly9naXRAe30ve30ve30uZ2l0Jy5mb3JtYXQoCisgICAgICAgICAgICAgICAg
ICAgIHJlbW90ZS5ob3N0c1swXSwgcmVtb3RlLnByb2plY3Quc3BsaXQoJy8nKVsxXSwgcmVtb3Rl
LnByb2plY3Quc3BsaXQoJy8nKVszXSwKKyAgICAgICAgICAgICAgICApKSwgbW9ja3MubG9jYWwu
U3ZuKCk6CisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgcHJvZ3JhbS5tYWluKAor
ICAgICAgICAgICAgICAgIGFyZ3M9KCdsYW5kJywpLAorICAgICAgICAgICAgICAgIHBhdGg9c2Vs
Zi5wYXRoLAorICAgICAgICAgICAgKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Ry
KGxvY2FsLkdpdChzZWxmLnBhdGgpLmNvbW1pdCgpKSwgJzMuMUBlbmcvZXhhbXBsZScpCisKKyAg
ICAgICAgbG9nID0gY2FwdHVyZWQucm9vdC5sb2cuZ2V0dmFsdWUoKS5zcGxpdGxpbmVzKCkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIFtsaW5lIGZvciBsaW5lIGluIGxv
ZyBpZiAnTW9jayBwcm9jZXNzJyBub3QgaW4gbGluZV0sIFsKKyAgICAgICAgICAgICAgICAnICAg
IEZvdW5kIDEgY29tbWl0Li4uJywKKyAgICAgICAgICAgIF0sCisgICAgICAgICkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGNhcHR1cmVkLnN0ZGVyci5nZXR2YWx1ZSgp
LAorICAgICAgICAgICAgIlJpY2t5IFJldmlld2VyIGlzIGJsb2NraW5nIGxhbmRpbmcgJ1BSIDEg
fCBFeGFtcGxlIENoYW5nZSdcbiIsCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChjYXB0dXJlZC5zdGRvdXQuZ2V0dmFsdWUoKSwgJycpCisKKyAgICBkZWYgdGVzdF9pbnNlcnRf
cmV2aWV3KHNlbGYpOgorICAgICAgICB3aXRoIE91dHB1dENhcHR1cmUoKSBhcyBjYXB0dXJlZCwg
TW9ja1Rlcm1pbmFsLmlucHV0KCd5JyksIHNlbGYud2Vic2VydmVyKGFwcHJvdmVkPVRydWUpIGFz
IHJlbW90ZSwgcmVwb3NpdG9yeSgKKyAgICAgICAgICAgICAgICBzZWxmLnBhdGgsIGhhc19vb3Bz
PVRydWUsIHJlbW90ZT0nc3NoOi8vZ2l0QHt9L3t9L3t9LmdpdCcuZm9ybWF0KAorICAgICAgICAg
ICAgICAgICAgICByZW1vdGUuaG9zdHNbMF0sIHJlbW90ZS5wcm9qZWN0LnNwbGl0KCcvJylbMV0s
IHJlbW90ZS5wcm9qZWN0LnNwbGl0KCcvJylbM10sCisgICAgICAgICAgICAgICAgKSksIG1vY2tz
LmxvY2FsLlN2bigpOgorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHByb2dyYW0u
bWFpbigKKyAgICAgICAgICAgICAgICBhcmdzPSgnbGFuZCcsKSwKKyAgICAgICAgICAgICAgICBw
YXRoPXNlbGYucGF0aCwKKyAgICAgICAgICAgICkpCisgICAgICAgICAgICByZXBvID0gbG9jYWwu
R2l0KHNlbGYucGF0aCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHJlcG8uY29t
bWl0KCkpLCAnNkBtYWluJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAg
ICAgICAgICAgW2NvbW1lbnQuY29udGVudCBmb3IgY29tbWVudCBpbiByZXBvLnJlbW90ZSgpLnB1
bGxfcmVxdWVzdHMuZ2V0KDEpLmNvbW1lbnRzXSwKKyAgICAgICAgICAgICAgICBbJ0xhbmRlZCBh
NWZlOGFmZTliZjdkMDcxNThmY2Q5ZTk3MzJmZjAyYTcxMmRiMmZkISddLAorICAgICAgICAgICAg
KQorCisgICAgICAgIGxvZyA9IGNhcHR1cmVkLnJvb3QubG9nLmdldHZhbHVlKCkuc3BsaXRsaW5l
cygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBbbGluZSBmb3IgbGlu
ZSBpbiBsb2cgaWYgJ01vY2sgcHJvY2Vzcycgbm90IGluIGxpbmVdLCBbCisgICAgICAgICAgICAg
ICAgJyAgICBGb3VuZCAxIGNvbW1pdC4uLicsCisgICAgICAgICAgICAgICAgJ1NldHRpbmcgUmlj
a3kgUmV2aWV3ZXIgYXMgcmV2aWV3ZXInLAorICAgICAgICAgICAgICAgICJSZWJhc2luZyAnZW5n
L2V4YW1wbGUnIGZyb20gJ21haW4nIHRvICdtYWluJy4uLiIsCisgICAgICAgICAgICAgICAgIlJl
YmFzZWQgJ2VuZy9leGFtcGxlJyBmcm9tICdtYWluJyB0byAnbWFpbichIiwKKyAgICAgICAgICAg
IF0sCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjYXB0dXJlZC5zdGRlcnIu
Z2V0dmFsdWUoKSwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBj
YXB0dXJlZC5zdGRvdXQuZ2V0dmFsdWUoKSwKKyAgICAgICAgICAgICJTZXQgJ1JpY2t5IFJldmll
d2VyJyBhcyB5b3VyIHJldmlld2VyPyAoWWVzL05vKTogXG4iCisgICAgICAgICAgICAnTGFuZGVk
IGE1ZmU4YWZlOWJmN2QwNzE1OGZjZDllOTczMmZmMDJhNzEyZGIyZmQhXG4nLAorICAgICAgICAp
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>