<?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>215266</bug_id>
          
          <creation_ts>2020-08-07 07:12:34 -0700</creation_ts>
          <short_desc>[GTK][WPE] Add a script for generating MiniBrowser bundles</short_desc>
          <delta_ts>2022-04-07 18:01:40 -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>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=215623</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=238976</see_also>
          <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="Carlos Alberto Lopez Perez">clopez</reporter>
          <assigned_to name="Carlos Alberto Lopez Perez">clopez</assigned_to>
          <cc>aakash_jain</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>cgarcia</cc>
    
    <cc>clopez</cc>
    
    <cc>jbedard</cc>
    
    <cc>pnormand</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1678572</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2020-08-07 07:12:34 -0700</bug_when>
    <thetext>We have a script for generating jsc bundles (jsc-cli). Those bundles are uploaded to https://webkitgtk.org/jsc-built-products for consumption on other projects like jsvu or esvu
We need now to generate MiniBrowser bundles for making easier for external projects to test WebKit on their CI (for example, like the WPT project)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1678578</commentid>
    <comment_count>1</comment_count>
      <attachid>406171</attachid>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2020-08-07 07:27:52 -0700</bug_when>
    <thetext>Created attachment 406171
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1678580</commentid>
    <comment_count>2</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2020-08-07 07:30:54 -0700</bug_when>
    <thetext>I have currently 4 test bots for this at https://build-webkit.igalia.com/waterfall:

- GTK Linux 64-bit Release Packaging Nightly (Ubuntu 18.04)
- GTK Linux 64-bit Release Packaging Nightly (Ubuntu 20.04)
- WPE Linux 64-bit Release Packaging Nightly (Ubuntu 18.04)
- WPE Linux 64-bit Release Packaging Nightly (Ubuntu 20.04)

Running nightly. You can check the bundles they generate and upload at https://webkitgtk.org/built-products/x86_64 and https://wpewebkit.org/built-products/x86_64

Ideally I would move this bots to build.webkit.org after this patch lands and if there is no issue with the idea of running them on a timer (once per day)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1678590</commentid>
    <comment_count>3</comment_count>
      <attachid>406175</attachid>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2020-08-07 08:13:39 -0700</bug_when>
    <thetext>Created attachment 406175
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1679984</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-08-13 08:35:22 -0700</bug_when>
    <thetext>Committed r265606: &lt;https://trac.webkit.org/changeset/265606&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 406175.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1679986</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-08-13 08:36:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/66992725&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682843</commentid>
    <comment_count>6</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2020-08-25 16:38:19 -0700</bug_when>
    <thetext>Re-opening to land follow-up fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682845</commentid>
    <comment_count>7</comment_count>
      <attachid>407248</attachid>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2020-08-25 16:39:46 -0700</bug_when>
    <thetext>Created attachment 407248
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682855</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-08-25 17:08:42 -0700</bug_when>
    <thetext>Committed r266154: &lt;https://trac.webkit.org/changeset/266154&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 407248.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>406171</attachid>
            <date>2020-08-07 07:27:52 -0700</date>
            <delta_ts>2020-08-07 08:13:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215266-20200807162751.patch</filename>
            <type>text/plain</type>
            <size>52224</size>
            <attacher name="Carlos Alberto Lopez Perez">clopez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1MzY5CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZWQ2YTQ3MTc2YWM1NmRmZDA2YWY2MjExNzI5ZTAxNGIz
M2RlMzE4ZC4uYzdjNDBjZDg2ZDFkNDIwYWU5OGE3NmNiMGQxYzJkOTIzN2NmYmJkYSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMy
IEBACisyMDIwLTA4LTA3ICBDYXJsb3MgQWxiZXJ0byBMb3BleiBQZXJleiAgPGNsb3BlekBpZ2Fs
aWEuY29tPgorCisgICAgICAgIFtHVEtdW1dQRV0gQWRkIGEgc2NyaXB0IGZvciBnZW5lcmF0aW5n
IE1pbmlCcm93c2VyIGJ1bmRsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxNTI2NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoaXMgY29udmVydHMgdGhlIHByZXZpb3VzIGdlbmVyYXRlLWpzYy1idW5k
bGUgaW50byBhIG5ldyBzY3JpcHQKKyAgICAgICAgdGhhdCBpcyBub3cgYWJsZSB0byBkbyB0aGUg
Zm9sbG93aW5nOgorICAgICAgICAgLSBnZW5lcmF0ZSBhIGpzYyBidW5kbGUKKyAgICAgICAgIC0g
Z2VuZXJhdGUgYSBNaW5pQnJvd3NlIGJ1bmRsZQorICAgICAgICAgLSBnZW5lcmF0ZSBhbiBhbGwg
YnVuZGxlIChqc2MrTWluaUJyb3dzZXIpCisgICAgICAgIFRoZSBidW5kbGUgY2FuIGluY2x1ZGUg
YWxsIHRoZSBzeXN0ZW0tbGlicmFyaWVzIGZyb20gdGhlIHN5c3RlbSwKKyAgICAgICAgc28gdGhh
dCB3YXkgKGluIHRoZW9yeSkgdGhlIGJ1bmRsZSB3b3VsZCBydW4gb24gYW55IG90aGVyIGRpc3Ry
aWJ1dGlvbgorICAgICAgICBvciBpdCBjYW4gZ2VuZXJhdGUgYW4gaW5zdGFsbC1kZXBlbmRlbmNp
ZXMgc2NyaXB0IHNvIGl0IGdlbmVyYXRlcworICAgICAgICBhIGxpZ2h0d2VpZ2h0IGJ1bmRsZSB3
aXRoIG9ubHkgdGhlIG1pbmltdW0gbGlicmFyaWVzIGluY2x1ZGVkIHRoYXQKKyAgICAgICAgd291
bGQgcnVuIG9ubHkgb24gdGhlIGRpc3RyaWJ1dGlvbiB3aGVyZSBpdCBoYXMgYmVlbiBjcmVhdGVk
CisgICAgICAgIChhZnRlciBydW5uaW5nIHRoZSBpbnN0YWxsLWRlcGVuZGVuY2llcyBzY3JpcHQp
CisKKyAgICAgICAgV2UgYWxyZWFkeSBoYXZlIGEgYm90IGdlbmVyYXRpbmcgdGhlIGpzYyBidW5k
bGUgYW5kIHdlIHBsYW4gdG8gYWxzbworICAgICAgICBoYXZlIGJvdHMgZm9yIGdlbmVyYXRpbmcg
dGhlIE1pbmlCcm93c2VyIGJ1bmRsZXMgYXMgd2VsbC4KKworICAgICAgICAqIEJ1aWxkU2xhdmVT
dXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3N0ZXBzLnB5OiBVcGRhdGUgdGhlIHN0ZXAg
Zm9yIHRoZSBuZXcgY29tbWFuZC4KKyAgICAgICAgKEdlbmVyYXRlSlNDQnVuZGxlKToKKyAgICAg
ICAgKiBTY3JpcHRzL2dlbmVyYXRlLWJ1bmRsZTogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy9n
ZW5lcmF0ZS1qc2MtYnVuZGxlOiBSZW1vdmVkLgorICAgICAgICAqIGpoYnVpbGQvamhidWlsZHV0
aWxzLnB5OgorICAgICAgICAoZW50ZXJfamhidWlsZF9lbnZpcm9ubWVudF9pZl9hdmFpbGFibGUp
OiBVbmljb2RlIGFyZ3VtZW50IG5vdCBsb25nZXIgYXZhaWxhYmxlIG9uIHB5dGhvbjMncyBnZXR0
ZXh0Lmluc3RhbGwoKQorCiAyMDIwLTA4LTA3ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxl
LmNvbT4KIAogICAgICAgICBJbnRyb2R1Y2UgYSBWZWN0b3I6Omlzb2xhdGVkQ29weSgpICYmCmRp
ZmYgLS1naXQgYS9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9zdGVwcy5weSBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29u
ZmlnL3N0ZXBzLnB5CmluZGV4IDZjODllM2M2NDZmZWViMDFkZDlkYTk1Mzk0ZGFlNTM0ZTNiOTcy
ZWIuLjA3OTUyZmYwYWE4MmFiZTg4MjZiNjM1ZTNkYTZjMjg3NjM1ZGQyZGUgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3N0ZXBzLnB5
CisrKyBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3N0
ZXBzLnB5CkBAIC0zMDEsOSArMzAxLDEwIEBAIGNsYXNzIEFyY2hpdmVNaW5pZmllZEJ1aWx0UHJv
ZHVjdChBcmNoaXZlQnVpbHRQcm9kdWN0KToKIAogCiBjbGFzcyBHZW5lcmF0ZUpTQ0J1bmRsZShz
aGVsbC5TaGVsbENvbW1hbmQpOgotICAgIGNvbW1hbmQgPSBbInB5dGhvbiIsICIuL1Rvb2xzL1Nj
cmlwdHMvZ2VuZXJhdGUtanNjLWJ1bmRsZSIsICItLWJ1aWxkZXItbmFtZSIsIFdpdGhQcm9wZXJ0
aWVzKCIlKGJ1aWxkZXJuYW1lKXMiKSwKLSAgICAgICAgICAgICAgIFdpdGhQcm9wZXJ0aWVzKCIt
LXBsYXRmb3JtPSUoZnVsbFBsYXRmb3JtKXMiKSwgV2l0aFByb3BlcnRpZXMoIi0tJShjb25maWd1
cmF0aW9uKXMiKSwKLSAgICAgICAgICAgICAgIFdpdGhQcm9wZXJ0aWVzKCItLXJldmlzaW9uPSUo
Z290X3JldmlzaW9uKXMiKSwgIi0tcmVtb3RlLWNvbmZpZy1maWxlIiwgIi4uLy4uL3JlbW90ZS1q
c2MtYnVuZGxlLXVwbG9hZC1jb25maWcuanNvbiJdCisgICAgY29tbWFuZCA9IFsiLi9Ub29scy9T
Y3JpcHRzL2dlbmVyYXRlLWJ1bmRsZSIsICItLWJ1aWxkZXItbmFtZSIsIFdpdGhQcm9wZXJ0aWVz
KCIlKGJ1aWxkZXJuYW1lKXMiKSwKKyAgICAgICAgICAgICAgICItLWJ1bmRsZT1qc2MiLCAiLS1z
eXNsaWJzPWJ1bmRsZS1hbGwiLCBXaXRoUHJvcGVydGllcygiLS1wbGF0Zm9ybT0lKGZ1bGxQbGF0
Zm9ybSlzIiksCisgICAgICAgICAgICAgICBXaXRoUHJvcGVydGllcygiLS0lKGNvbmZpZ3VyYXRp
b24pcyIpLCBXaXRoUHJvcGVydGllcygiLS1yZXZpc2lvbj0lKGdvdF9yZXZpc2lvbilzIiksCisg
ICAgICAgICAgICAgICAiLS1yZW1vdGUtY29uZmlnLWZpbGUiLCAiLi4vLi4vcmVtb3RlLWpzYy1i
dW5kbGUtdXBsb2FkLWNvbmZpZy5qc29uIl0KICAgICBuYW1lID0gImdlbmVyYXRlLWpzYy1idW5k
bGUiCiAgICAgZGVzY3JpcHRpb24gPSBbImdlbmVyYXRpbmcganNjIGJ1bmRsZSJdCiAgICAgZGVz
Y3JpcHRpb25Eb25lID0gWyJnZW5lcmF0ZWQganNjIGJ1bmRsZSJdCmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL2dlbmVyYXRlLWJ1bmRsZSBiL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtYnVuZGxl
Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmM3MTU4MmRmNjJkYWE2MWVkMWM0MTYzZjNkMTQwNTQ0YjllZTA1MjQKLS0t
IC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL2dlbmVyYXRlLWJ1bmRsZQpAQCAtMCwwICsx
LDY1MCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworIworIyBDb3B5cmlnaHQgKEMpIDIwMTgs
IDIwMjAgSWdhbGlhIFMuTC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0Ogor
IworIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodCBub3RpY2UsIHRoaXMKKyMgICAgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKKyMgICAgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUg
ZG9jdW1lbnRhdGlvbgorIyAgICBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorIyBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IK
KyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisjIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyMgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5ECisjIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
CisjIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorCitpbXBvcnQgYXJncGFyc2UKK2ltcG9ydCBiYXNlNjQKK2ltcG9ydCBkYXRldGlt
ZQoraW1wb3J0IGhhc2hsaWIKK2ltcG9ydCBqc29uCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IG9z
CitpbXBvcnQgc2h1dGlsCitpbXBvcnQgc3VicHJvY2VzcworaW1wb3J0IHN5cworaW1wb3J0IHRl
bXBmaWxlCitpbXBvcnQgemlwZmlsZQorCit0b3BfbGV2ZWxfZGlyZWN0b3J5ID0gb3MucGF0aC5u
b3JtcGF0aChvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgJy4uJywgJy4u
JykpCitzeXMucGF0aC5pbnNlcnQoMCwgb3MucGF0aC5qb2luKHRvcF9sZXZlbF9kaXJlY3Rvcnks
ICdUb29scycsICdmbGF0cGFrJykpCitzeXMucGF0aC5pbnNlcnQoMCwgb3MucGF0aC5qb2luKHRv
cF9sZXZlbF9kaXJlY3RvcnksICdUb29scycsICdqaGJ1aWxkJykpCitpbXBvcnQgamhidWlsZHV0
aWxzCitpbXBvcnQgZmxhdHBha3V0aWxzCisKKworSU5TVEFMTF9ERVBTX1NDUklQVF9URU1QTEFU
RSA9ICIiIlwKKyMhL2Jpbi9iYXNoCitzZXQgLWV1IC1vIHBpcGVmYWlsCisKK1JFUVVJUkVEUEFD
S0FHRVM9IiUocGFja2FnZXNfbmVlZGVkKXMiCisKK2lmICEgd2hpY2ggYXB0LWdldCA+L2Rldi9u
dWxsOyB0aGVuCisgICAgZWNobyAiVGhpcyBzY3JpcHQgb25seSBzdXBwb3J0cyBhcHQtZ2V0IGJh
c2VkIGRpc3RyaWJ1dGlvbnMgbGlrZSBEZWJpYW4gb3IgVWJ1bnR1LiIKKyAgICBleGl0IDEKK2Zp
CisKKyMgQ2FsbGluZyBkcGtnLXF1ZXJ5IGlzIHNsb3csIHNvIGNhbGwgaXQgb25seSBvbmNlIGFu
ZCBjYWNoZSB0aGUgcmVzdWx0cworVE1QQ0hFQ0tQQUNLQUdFUz0iJChta3RlbXApIgorZHBrZy1x
dWVyeSAtLXNob3cgLS1zaG93Zm9ybWF0PScke2JpbmFyeTpQYWNrYWdlfSAke2RiOlN0YXR1cy1T
dGF0dXN9XFxuJyA+ICIke1RNUENIRUNLUEFDS0FHRVN9IgorVE9JTlNUQUxMPSIiCitmb3IgUEFD
S0FHRSBpbiAke1JFUVVJUkVEUEFDS0FHRVN9OyBkbworICAgIGlmICEgZ3JlcCAtcXhGICIke1BB
Q0tBR0V9IGluc3RhbGxlZCIgIiR7VE1QQ0hFQ0tQQUNLQUdFU30iOyB0aGVuCisgICAgICAgIFRP
SU5TVEFMTD0iJHtUT0lOU1RBTEx9ICR7UEFDS0FHRX0iCisgICAgZmkKK2RvbmUKK3JtIC1mICIk
e1RNUENIRUNLUEFDS0FHRVN9IgorCitpZiBbWyAteiAiJHtUT0lOU1RBTEx9IiBdXTsgdGhlbgor
ICAgIGVjaG8gIkFsbCByZXF1aXJlZCBkZXBlbmRlbmNpZXMgYXJlIGFscmVhZHkgaW5zdGFsbGVk
IgorZWxzZQorICAgIEFVVE9JTlNUQUxMPSIiCisgICAgW1sgJHsjfSAtZ3QgMCBdXSAmJiBbWyAi
JHsxfSIgPT0gIi0tYXV0b2luc3RhbGwiIF1dICYmIEFVVE9JTlNUQUxMPSIteSIgJiYgZXhwb3J0
IERFQklBTl9GUk9OVEVORD0ibm9uaW50ZXJhY3RpdmUiCisgICAgU1VETz0iIgorICAgIFtbICR7
VUlEfSAtbmUgMCBdXSAmJiBTVURPPSJzdWRvIC0tcHJlc2VydmUtZW52PURFQklBTl9GUk9OVEVO
RCIKKworICAgIGVjaG8gIk5lZWQgdG8gaW5zdGFsbCB0aGUgZm9sbG93aW5nIGV4dHJhIHBhY2th
Z2VzOiAke1RPSU5TVEFMTH0iCisgICAgc2V0IC14CisgICAgJHtTVURPfSBhcHQtZ2V0IGluc3Rh
bGwgLS1uby1pbnN0YWxsLXJlY29tbWVuZHMgJHtBVVRPSU5TVEFMTH0gJHtUT0lOU1RBTEx9Citm
aQorIiIiCisKK19sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKK0xPR19NRVNTQUdF
ID0gMjUKKworY2xhc3MgQnVuZGxlQ3JlYXRvcihvYmplY3QpOgorCisgICAgZGVmIF9faW5pdF9f
KHNlbGYsIGNvbmZpZ3VyYXRpb24sIHBsYXRmb3JtLCBidW5kbGVfdHlwZSwgc3lzbGlicywgc2hv
dWxkX3N0cmlwX29iamVjdHMsIGNvbXByZXNzaW9uX3R5cGUsIGRlc3RpbmF0aW9uID0gTm9uZSwg
cmV2aXNpb24gPSBOb25lLCBidWlsZGVyX25hbWUgPSBOb25lKToKKyAgICAgICAgc2VsZi5fY29u
ZmlndXJhdGlvbiA9IGNvbmZpZ3VyYXRpb24KKyAgICAgICAgc2VsZi5fcGxhdGZvcm0gPSBwbGF0
Zm9ybS5sb3dlcigpCisgICAgICAgIHNlbGYuX3JldmlzaW9uID0gcmV2aXNpb24KKyAgICAgICAg
c2VsZi5fYnVuZGxlX2JpbmFyaWVzID0gWydqc2MnLCAnTWluaUJyb3dzZXInXSBpZiBidW5kbGVf
dHlwZSA9PSAnYWxsJyBlbHNlIFsgYnVuZGxlX3R5cGUgXQorICAgICAgICBzZWxmLl9idW5kbGVf
dHlwZSA9IGJ1bmRsZV90eXBlCisgICAgICAgIHNlbGYuX2J1aWxkZXJuYW1lID0gYnVpbGRlcl9u
YW1lCisgICAgICAgIHNlbGYuX3N5c2xpYnMgPSBzeXNsaWJzCisgICAgICAgIHNlbGYuX3Nob3Vs
ZF9zdHJpcF9vYmplY3RzID0gc2hvdWxkX3N0cmlwX29iamVjdHMKKyAgICAgICAgc2VsZi5fY29t
cHJlc3Npb25fdHlwZSA9IGNvbXByZXNzaW9uX3R5cGUKKyAgICAgICAgc2VsZi5fdG1wZGlyID0g
Tm9uZQorICAgICAgICBzZWxmLl93cmFwcGVyX3NjcmlwdHMgPSBbXQorICAgICAgICBzZWxmLl9w
b3J0X2JpbmFyeV9wcmVmZml4ID0gJ1dlYktpdCcgaWYgc2VsZi5fcGxhdGZvcm0gPT0gJ2d0aycg
ZWxzZSAnV1BFJworICAgICAgICB3a19idWlsZF9wYXRoID0gb3MuZW52aXJvblsnV0VCS0lUX09V
VFBVVERJUiddIGlmICdXRUJLSVRfT1VUUFVURElSJyBpbiBvcy5lbnZpcm9uIGVsc2UgXAorICAg
ICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbihvcy5wYXRo
LmRpcm5hbWUoX19maWxlX18pLCAnLi4nLCAnLi4nLCAnV2ViS2l0QnVpbGQnKSkKKyAgICAgICAg
c2VsZi5fYnVpbGRwYXRoID0gb3MucGF0aC5qb2luKHdrX2J1aWxkX3BhdGgsIHNlbGYuX2NvbmZp
Z3VyYXRpb24uY2FwaXRhbGl6ZSgpKQorCisgICAgICAgIGRlZmF1bHRfYnVuZGxlX25hbWUgPSBi
dW5kbGVfdHlwZSAgKyAnXycgKyBzZWxmLl9wbGF0Zm9ybSArICdfJyArIHNlbGYuX2NvbmZpZ3Vy
YXRpb24gKyAnLicgKyBzZWxmLl9jb21wcmVzc2lvbl90eXBlCisgICAgICAgIGlmIGRlc3RpbmF0
aW9uIGFuZCAgb3MucGF0aC5pc2RpcihkZXN0aW5hdGlvbik6CisgICAgICAgICAgICBzZWxmLl9i
dW5kbGVfZmlsZV9wYXRoID0gb3MucGF0aC5qb2luKGRlc3RpbmF0aW9uLCBkZWZhdWx0X2J1bmRs
ZV9uYW1lKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5fYnVuZGxlX2ZpbGVfcGF0
aCA9IG9zLnBhdGguam9pbih3a19idWlsZF9wYXRoLCBkZWZhdWx0X2J1bmRsZV9uYW1lKQorCisK
KyAgICBkZWYgX2NyZWF0ZV90ZW1wZGlyKHNlbGYsIGJhc2VkaXIgPSBOb25lKToKKyAgICAgICAg
aWYgYmFzZWRpciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzZGly
KGJhc2VkaXIpOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJyVzIGlzIG5vdCBh
IGRpcmVjdG9yeScgJSBiYXNlZGlyKQorICAgICAgICAgICAgcmV0dXJuIHRlbXBmaWxlLm1rZHRl
bXAocHJlZml4PW9zLnBhdGguam9pbihvcy5wYXRoLmFic3BhdGgoYmFzZWRpciksICd0bXAnKSkK
KyAgICAgICAgcmV0dXJuIHRlbXBmaWxlLm1rZHRlbXAoKQorCisgICAgZGVmIF9ydW5fY21kX2Fu
ZF9nZXRfb3V0cHV0KHNlbGYsIGNvbW1hbmQpOgorICAgICAgICBjb21tYW5kX3Byb2Nlc3MgPSBz
dWJwcm9jZXNzLlBvcGVuKGNvbW1hbmQsIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsIHN0ZGVycj1z
dWJwcm9jZXNzLlNURE9VVCwgZW5jb2Rpbmc9J3V0Zi04JykKKyAgICAgICAgc3Rkb3V0LCBzdGRl
cnIgPSBjb21tYW5kX3Byb2Nlc3MuY29tbXVuaWNhdGUoKQorICAgICAgICByZXR1cm4gY29tbWFu
ZF9wcm9jZXNzLnJldHVybmNvZGUsIHN0ZG91dCwgc3RkZXJyCisKKworICAgIGRlZiBfbGRkX2dl
dF9saWJzX2FuZF9pbnRlcnByZXRlcihzZWxmLCBvYmplY3QpOgorICAgICAgICBpbnRlcnByZXRl
ciA9IE5vbmUKKyAgICAgICAgcmV0Y29kZSwgc3Rkb3V0LCBzdGRlcnIgPSBzZWxmLl9ydW5fY21k
X2FuZF9nZXRfb3V0cHV0KFsnbGRkJywgb2JqZWN0XSkKKyAgICAgICAgaWYgcmV0Y29kZSAhPSAw
OgorICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdUaGUgbGRkIGNvbW1hbmQgcmV0dXJu
ZWQgbm9uLXplcm8gc3RhdHVzIGZvciBvYmplY3QgJXMnICUgb2JqZWN0KQorICAgICAgICBsaWJz
ID0gW10KKyAgICAgICAgZm9yIGxpbmUgaW4gc3Rkb3V0LnNwbGl0bGluZXMoKToKKyAgICAgICAg
ICAgIGxpbmUgPSBsaW5lLnN0cmlwKCkKKyAgICAgICAgICAgIGlmICc9PicgaW4gbGluZToKKyAg
ICAgICAgICAgICAgICBsaW5lID0gbGluZS5zcGxpdCgnPT4nKVsxXS5zdHJpcCgpCisgICAgICAg
ICAgICAgICAgaWYgJ25vdCBmb3VuZCcgaW4gbGluZToKKyAgICAgICAgICAgICAgICAgICAgcmFp
c2UgUnVudGltZUVycm9yKCdsZGQgY2FuIG5vdCByZXNvbHZlIGFsbCBkZXBlbmRlbmNpZXMgZm9y
IG9iamVjdCAlcy4nICUgb2JqZWN0KQorICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lLnNwbGl0
KCcgJylbMF0uc3RyaXAoKQorICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKGxpbmUp
OgorICAgICAgICAgICAgICAgICAgICBsaWJzLmFwcGVuZChsaW5lKQorICAgICAgICAgICAgZWxz
ZToKKyAgICAgICAgICAgICAgICBsaW5lID0gbGluZS5zcGxpdCgnICcpWzBdLnN0cmlwKCkKKyAg
ICAgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShsaW5lKToKKyAgICAgICAgICAgICAgICAg
ICAgaW50ZXJwcmV0ZXIgPSBsaW5lCisgICAgICAgIHJldHVybiBsaWJzLCBpbnRlcnByZXRlcgor
CisKKyAgICBkZWYgX2xkZF9yZWN1cnNpdmVfZ2V0X2xpYnNfYW5kX2ludGVycHJldGVyKHNlbGYs
IG9iamVjdCwgYWxyZWFkeV9jaGVja2VkX2xpYnMgPSBbXSk6CisgICAgICAgIGxpYnMsIGludGVy
cHJldGVyID0gc2VsZi5fbGRkX2dldF9saWJzX2FuZF9pbnRlcnByZXRlcihvYmplY3QpCisgICAg
ICAgIGlmIGxpYnM6CisgICAgICAgICAgICBmb3IgbGliIGluIGxpYnM6CisgICAgICAgICAgICAg
ICAgaWYgbGliIGluIGFscmVhZHlfY2hlY2tlZF9saWJzOgorICAgICAgICAgICAgICAgICAgICBj
b250aW51ZQorICAgICAgICAgICAgICAgICMgYXZvaWQgcmVjdXJzaW9uIGxvb3BzIChsaWJmcmVl
dHlwZS5zby42IDwtPiBsaWJoYXJmYnV6ei5zby4wKQorICAgICAgICAgICAgICAgIGFscmVhZHlf
Y2hlY2tlZF9saWJzLmFwcGVuZChsaWIpCisgICAgICAgICAgICAgICAgc3ViX2xpYnMsIHN1Yl9p
bnRlcnByZXRlciA9IHNlbGYuX2xkZF9yZWN1cnNpdmVfZ2V0X2xpYnNfYW5kX2ludGVycHJldGVy
KGxpYiwgYWxyZWFkeV9jaGVja2VkX2xpYnMpCisgICAgICAgICAgICAgICAgbGlicy5leHRlbmQo
c3ViX2xpYnMpCisgICAgICAgICAgICAgICAgaWYgc3ViX2ludGVycHJldGVyIGFuZCBpbnRlcnBy
ZXRlciBhbmQgc3ViX2ludGVycHJldGVyICE9IGludGVycHJldGVyOgorICAgICAgICAgICAgICAg
ICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ2xpYnJhcnkgJXMgaGFzIGludGVycHJldGVyICVzIGJ1
dCBvYmplY3QgJXMgaGFzIGludGVycHJldGVyICVzJyAlIChsaWIsIHN1Yl9pbnRlcnByZXRlciwg
b2JqZWN0LCBpbnRlcnByZXRlcikpCisgICAgICAgIHJldHVybiBsaXN0KHNldChsaWJzKSksIGlu
dGVycHJldGVyCisKKworICAgIGRlZiBfZ2V0X29zcHJldHR5bmFtZShzZWxmKToKKyAgICAgICAg
d2l0aCBvcGVuKCcvZXRjL29zLXJlbGVhc2UnLCAncicpIGFzIG9zcmVsZWFzZV9oYW5kbGU6Cisg
ICAgICAgICAgICBmb3IgbGluZSBpbiBvc3JlbGVhc2VfaGFuZGxlLnJlYWRsaW5lcygpOgorICAg
ICAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgnUFJFVFRZX05BTUU9Jyk6CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBsaW5lLnNwbGl0KCc9JylbMV0uc3RyaXAoKS5zdHJpcCgnIicp
CisgICAgICAgIHJldHVybiBOb25lCisKKworICAgIGRlZiBfZ2VuZXJhdGVfcmVhZG1lKHNlbGYp
OgorICAgICAgICBfbG9nLmluZm8oJ0dlbmVyYXRlIFJFQURNRS50eHQgZmlsZScpCisgICAgICAg
IHJlYWRtZV9maWxlID0gb3MucGF0aC5qb2luKHNlbGYuX3RtcGRpciwgJ1JFQURNRS50eHQnKQor
ICAgICAgICB3aXRoIG9wZW4ocmVhZG1lX2ZpbGUsICd3JykgYXMgcmVhZG1lX2hhbmRsZToKKyAg
ICAgICAgICAgIHJlYWRtZV9oYW5kbGUud3JpdGUoJ0J1bmRsZSBkZXRhaWxzOlxuJykKKyAgICAg
ICAgICAgIHJlYWRtZV9oYW5kbGUud3JpdGUoJyAgLSBXZWJLaXQgUGxhdGZvcm06ICVzXG4nICUg
c2VsZi5fcGxhdGZvcm0udXBwZXIoKSkKKyAgICAgICAgICAgIHJlYWRtZV9oYW5kbGUud3JpdGUo
JyAgLSBDb25maWd1cmF0aW9uOiAlc1xuJyAlIHNlbGYuX2NvbmZpZ3VyYXRpb24uY2FwaXRhbGl6
ZSgpKQorICAgICAgICAgICAgaWYgc2VsZi5fcmV2aXNpb246CisgICAgICAgICAgICAgICAgcmVh
ZG1lX2hhbmRsZS53cml0ZSgnICAtIFdlYktpdCBSZXZpc2lvbjogJXNcbicgJSBzZWxmLl9yZXZp
c2lvbikKKyAgICAgICAgICAgIHJlYWRtZV9oYW5kbGUud3JpdGUoJyAgLSBCdW5kbGUgdHlwZTog
JXNcbicgJSBzZWxmLl9idW5kbGVfdHlwZSkKKyAgICAgICAgICAgIGlmIHNlbGYuX2J1aWxkZXJu
YW1lOgorICAgICAgICAgICAgICAgIHJlYWRtZV9oYW5kbGUud3JpdGUoJyAgLSBCdWlsZGVyIG5h
bWU6ICVzXG4nICUgc2VsZi5fYnVpbGRlcm5hbWUpCisgICAgICAgICAgICByZWFkbWVfaGFuZGxl
LndyaXRlKCcgIC0gQnVpbGRlciBkYXRlOiAlc1xuJyAlIGRhdGV0aW1lLmRhdGV0aW1lLm5vdygp
Lmlzb2Zvcm1hdCgpKQorICAgICAgICAgICAgcmVhZG1lX2hhbmRsZS53cml0ZSgnICAtIEJ1aWxk
ZXIgT1M6ICVzXG4nICUgc2VsZi5fZ2V0X29zcHJldHR5bmFtZSgpKQorICAgICAgICAgICAgaWYg
c2VsZi5fc3lzbGlicyA9PSAnZ2VuZXJhdGUtaW5zdGFsbC1zY3JpcHQnOgorICAgICAgICAgICAg
ICAgIHJlYWRtZV9oYW5kbGUud3JpdGUoJ1xuUmVxdWlyZWQgZGVwZW5kZW5jaWVzOlxuJykKKyAg
ICAgICAgICAgICAgICByZWFkbWVfaGFuZGxlLndyaXRlKCcgIC0gVGhpcyBidW5kbGUgZGVwZW5k
cyBvbiBzZXZlcmFsIHN5c3RlbSBsaWJyYXJpZXMgdGhhdCBhcmUgYXNzdW1lZCB0byBiZSBpbnN0
YWxsZWQuXG4nKQorICAgICAgICAgICAgICAgIHJlYWRtZV9oYW5kbGUud3JpdGUoJyAgLSBUbyBl
bnN1cmUgYWxsIHRoZSByZXF1aXJlZCBsaWJyYXJpZXMgYXJlIGluc3RhbGxlZCBleGVjdXRlIHRo
ZSBzY3JpcHQ6IGluc3RhbGwtZGVwZW5kZW5jaWVzLnNoXG4nKQorICAgICAgICAgICAgICAgIHJl
YWRtZV9oYW5kbGUud3JpdGUoJyAgLSBZb3UgY2FuIHBhc3MgdGhlIGZsYWcgIi0tYXV0b2luc3Rh
bGwiIHRvIHRoaXMgc2NyaXB0IHRvIGF1dG9tYXRpY2FsbHkgaW5zdGFsbCB0aGUgZGVwZW5kZW5j
aWVzIGlmIG5lZWRlZC5cbicpCisgICAgICAgICAgICByZWFkbWVfaGFuZGxlLndyaXRlKCdcblJ1
biBpbnN0cnVjdGlvbnM6XG4nKQorICAgICAgICAgICAgc2NyaXB0cyA9ICJzY3JpcHQiIGlmIGxl
bihzZWxmLl93cmFwcGVyX3NjcmlwdHMpID09IDEgZWxzZSAic2NyaXB0cyIKKyAgICAgICAgICAg
IHJlYWRtZV9oYW5kbGUud3JpdGUoJyAgLSBFeGVjdXRlIHRoZSB3cmFwcGVyICVzIGluIHRoaXMg
ZGlyZWN0b3J5OlxuJyAlIHNjcmlwdHMpCisgICAgICAgICAgICBmb3Igd3JhcHBlcl9zY3JpcHQg
aW4gc2VsZi5fd3JhcHBlcl9zY3JpcHRzOgorICAgICAgICAgICAgICAgIHJlYWRtZV9oYW5kbGUu
d3JpdGUoJyAgICAqICVzXG4nICV3cmFwcGVyX3NjcmlwdCkKKyAgICAgICAgcmV0dXJuIFRydWUK
KworCisgICAgZGVmIF9nZW5lcmF0ZV93cmFwcGVyX3NjcmlwdChzZWxmLCBpbnRlcnByZXRlciwg
YmluYXJ5X3RvX3dyYXApOgorICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2ZpbGUob3MucGF0aC5q
b2luKHNlbGYuX3RtcGRpciwgJ2JpbicsIGJpbmFyeV90b193cmFwKSk6CisgICAgICAgICAgICBy
YWlzZSBSdW50aW1lRXJyb3IoJ0NhbiBub3QgZmluZCBiaW5hcnkgdG8gd3JhcCBmb3IgJXMnICUg
YmluYXJ5X3RvX3dyYXApCisgICAgICAgIHNlbGYuX3dyYXBwZXJfc2NyaXB0cy5hcHBlbmQoYmlu
YXJ5X3RvX3dyYXApCisgICAgICAgIF9sb2cuaW5mbygnR2VuZXJhdGUgd3JhcHBlciBzY3JpcHQg
JXMnICUgYmluYXJ5X3RvX3dyYXApCisgICAgICAgIHNjcmlwdF9maWxlID0gb3MucGF0aC5qb2lu
KHNlbGYuX3RtcGRpciwgYmluYXJ5X3RvX3dyYXApCisKKyAgICAgICAgd2l0aCBvcGVuKHNjcmlw
dF9maWxlLCAndycpIGFzIHNjcmlwdF9oYW5kbGU6CisgICAgICAgICAgICBzY3JpcHRfaGFuZGxl
LndyaXRlKCcjIS9iaW4vc2hcbicpCisgICAgICAgICAgICBzY3JpcHRfaGFuZGxlLndyaXRlKCdN
WURJUj0iJChkaXJuYW1lICQocmVhZGxpbmsgLWYgJDApKSJcbicpCisgICAgICAgICAgICBzY3Jp
cHRfaGFuZGxlLndyaXRlKCdleHBvcnQgTERfTElCUkFSWV9QQVRIPSIke01ZRElSfS9saWIiXG4n
KQorICAgICAgICAgICAgaWYgb3MucGF0aC5pc2Rpcihvcy5wYXRoLmpvaW4oc2VsZi5fdG1wZGly
LCAnZ2lvJykpOgorICAgICAgICAgICAgICAgIGdpb192YXIgPSAnR0lPX01PRFVMRV9ESVInIGlm
IHNlbGYuX3N5c2xpYnMgPT0gJ2J1bmRsZS1hbGwnIGVsc2UgJ0dJT19FWFRSQV9NT0RVTEVTJwor
ICAgICAgICAgICAgICAgIHNjcmlwdF9oYW5kbGUud3JpdGUoJ2V4cG9ydCAlcz0iJHtNWURJUn0v
Z2lvIlxuJyAlIGdpb192YXIpCisgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKG9zLnBhdGgu
am9pbihzZWxmLl90bXBkaXIsICdnc3QnKSk6CisgICAgICAgICAgICAgICAgZ3N0X3ZhciA9ICdH
U1RfUExVR0lOX1NZU1RFTV9QQVRIXzFfMCcgaWYgc2VsZi5fc3lzbGlicyA9PSAnYnVuZGxlLWFs
bCcgZWxzZSAnR1NUX1BMVUdJTl9QQVRIXzFfMCcKKyAgICAgICAgICAgICAgICBzY3JpcHRfaGFu
ZGxlLndyaXRlKCdleHBvcnQgJXM9IiR7TVlESVJ9L2dzdCJcbicgJSBnc3RfdmFyKQorICAgICAg
ICAgICAgICAgIHNjcmlwdF9oYW5kbGUud3JpdGUoJ2V4cG9ydCBHU1RfUkVHSVNUUllfMV8wPSIk
e01ZRElSfS9nc3QvZ3N0cmVhbWVyLTEuMC5yZWdpc3RyeSJcbicpCisgICAgICAgICAgICBpZiBi
aW5hcnlfdG9fd3JhcCAhPSAianNjIjoKKyAgICAgICAgICAgICAgICBzY3JpcHRfaGFuZGxlLndy
aXRlKCdleHBvcnQgV0VCS0lUX0VYRUNfUEFUSD0iJHtNWURJUn0vYmluIlxuJykKKyAgICAgICAg
ICAgICAgICBzY3JpcHRfaGFuZGxlLndyaXRlKCdleHBvcnQgV0VCS0lUX0lOSkVDVEVEX0JVTkRM
RV9QQVRIPSIke01ZRElSfS9saWIiXG4nKQorICAgICAgICAgICAgaWYgc2VsZi5fc3lzbGlicyA9
PSAnYnVuZGxlLWFsbCc6CisgICAgICAgICAgICAgICAgc2NyaXB0X2hhbmRsZS53cml0ZSgnSU5U
RVJQUkVURVI9IiR7TVlESVJ9L2xpYi8lcyJcbicgJSBvcy5wYXRoLmJhc2VuYW1lKGludGVycHJl
dGVyKSkKKyAgICAgICAgICAgICAgICBpZiBiaW5hcnlfdG9fd3JhcCAhPSAianNjIjoKKyAgICAg
ICAgICAgICAgICAgICAgc2NyaXB0X2hhbmRsZS53cml0ZSgnZXhwb3J0IFdFQl9QUk9DRVNTX0NN
RF9QUkVGSVg9IiR7SU5URVJQUkVURVJ9IlxuJykKKyAgICAgICAgICAgICAgICAgICAgc2NyaXB0
X2hhbmRsZS53cml0ZSgnZXhwb3J0IFBMVUdJTl9QUk9DRVNTX0NNRF9QUkVGSVg9IiR7SU5URVJQ
UkVURVJ9IlxuJykKKyAgICAgICAgICAgICAgICAgICAgc2NyaXB0X2hhbmRsZS53cml0ZSgnZXhw
b3J0IE5FVFdPUktfUFJPQ0VTU19DTURfUFJFRklYPSIke0lOVEVSUFJFVEVSfSJcbicpCisgICAg
ICAgICAgICAgICAgICAgIHNjcmlwdF9oYW5kbGUud3JpdGUoJ2V4cG9ydCBHUFVfUFJPQ0VTU19D
TURfUFJFRklYPSIke0lOVEVSUFJFVEVSfSJcbicpCisgICAgICAgICAgICAgICAgc2NyaXB0X2hh
bmRsZS53cml0ZSgnZXhlYyAiJHtJTlRFUlBSRVRFUn0iICIke01ZRElSfS9iaW4vJXMiICIkQCJc
bicgJSBiaW5hcnlfdG9fd3JhcCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAg
c2NyaXB0X2hhbmRsZS53cml0ZSgnZXhlYyAiJHtNWURJUn0vYmluLyVzIiAiJEAiXG4nICUgYmlu
YXJ5X3RvX3dyYXApCisgICAgICAgIG9zLmNobW9kKHNjcmlwdF9maWxlLCAwbzc1NSkKKworICAg
IGRlZiBfZ2VuZXJhdGVfaW5zdGFsbF9kZXBzX3NjcmlwdChzZWxmLCBzeXN0ZW1fcGFja2FnZXNf
bmVlZGVkKToKKyAgICAgICAgaWYgbm90IHN5c3RlbV9wYWNrYWdlc19uZWVkZWQ6CisgICAgICAg
ICAgICByZXR1cm4KKyAgICAgICAgaWYgJ01pbmlCcm93c2VyJyBpbiBzZWxmLl9idW5kbGVfYmlu
YXJpZXM6CisgICAgICAgICAgICAjIEFkZCBzb21lIGV4dHJhIHBhY2thZ2VzIHRoYXQgYXJlIG5l
ZWRlZCBidXQgdGhlIHNjcmlwdCBjYW4ndCBhdXRvbWF0aWNhbGx5IGRldGVjdAorICAgICAgICAg
ICAgZm9yIGV4dHJhX25lZWRlZF9wa2cgaW4gWydjYS1jZXJ0aWZpY2F0ZXMnLCAnc2hhcmVkLW1p
bWUtaW5mbyddOgorICAgICAgICAgICAgICAgIHN5c3RlbV9wYWNrYWdlc19uZWVkZWQuYWRkKGV4
dHJhX25lZWRlZF9wa2cpCisgICAgICAgICAgICAjIEFuZCByZW1vdmUgc29tZSBwYWNrYWdlcyB0
aGF0IG1heSBiZSBkZXRlY3RlZCBkdWUgdG8gaW5kaXJlY3QgZGVwcyAoZ3N0cmVhbWVyL2dpbykg
YnV0IGFyZSByZWFsbHkgbm90IG5lZWRlZAorICAgICAgICAgICAgZm9yIG5vdF9uZWVkZWRfcGtn
IGluIFsnZGNvbmYtZ3NldHRpbmdzLWJhY2tlbmQnLCAnZ3ZmcycsICdwaXRpdmknLCAnZ3N0cmVh
bWVyMS4wLWNvbnZvbHZlci1wdWxzZWVmZmVjdHMnLCAnZ3N0cmVhbWVyMS4wLXgnLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ3N0cmVhbWVyMS4wLWFkYXB0ZXItcHVsc2Vl
ZmZlY3RzJywgJ2dzdHJlYW1lcjEuMC1hdXRvZ2Fpbi1wdWxzZWVmZmVjdHMnLCAnZ3N0cmVhbWVy
MS4wLWFsc2EnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ3N0cmVhbWVy
MS4wLWNsdXR0ZXItMy4wJywgJ2dzdHJlYW1lcjEuMC1jcnlzdGFsaXplci1wdWxzZWVmZmVjdHMn
LCAnZ3N0cmVhbWVyMS4wLWd0azMnLCAnZ3N0cmVhbWVyMS4wLW5pY2UnXToKKyAgICAgICAgICAg
ICAgICBpZiBub3RfbmVlZGVkX3BrZyBpbiBzeXN0ZW1fcGFja2FnZXNfbmVlZGVkOgorICAgICAg
ICAgICAgICAgICAgICBzeXN0ZW1fcGFja2FnZXNfbmVlZGVkLnJlbW92ZShub3RfbmVlZGVkX3Br
ZykKKyAgICAgICAgICAgICAgICAjIFNvbWV0aW1lcyB0aGUgcGFja2FnZSBpcyBpZGVudGlmaWVk
IHdpdGggYW4gYXJjaCBzdWZmaXgsIGJ1dCBub3QgYWx3YXlzCisgICAgICAgICAgICAgICAgbm90
X25lZWRlZF9wa2dfYXJjaCA9IG5vdF9uZWVkZWRfcGtnICsgJzphbWQ2NCcKKyAgICAgICAgICAg
ICAgICBpZiBub3RfbmVlZGVkX3BrZ19hcmNoIGluIHN5c3RlbV9wYWNrYWdlc19uZWVkZWQ6Cisg
ICAgICAgICAgICAgICAgICAgIHN5c3RlbV9wYWNrYWdlc19uZWVkZWQucmVtb3ZlKG5vdF9uZWVk
ZWRfcGtnX2FyY2gpCisgICAgICAgIGluc3RhbGxkZXBzX2ZpbGUgPSBvcy5wYXRoLmpvaW4oc2Vs
Zi5fdG1wZGlyLCAnaW5zdGFsbC1kZXBlbmRlbmNpZXMuc2gnKQorICAgICAgICB3aXRoIG9wZW4o
aW5zdGFsbGRlcHNfZmlsZSwgJ3cnKSBhcyBpbnN0YWxsZGVwc19oYW5kbGU6CisgICAgICAgICAg
ICBpbnN0YWxsZGVwc19oYW5kbGUud3JpdGUoSU5TVEFMTF9ERVBTX1NDUklQVF9URU1QTEFURSAl
IHsncGFja2FnZXNfbmVlZGVkJyA6ICcgJy5qb2luKHN5c3RlbV9wYWNrYWdlc19uZWVkZWQpfSAp
CisgICAgICAgIG9zLmNobW9kKGluc3RhbGxkZXBzX2ZpbGUsIDBvNzU1KQorCisKKyAgICBkZWYg
X2NvcHlfYW5kX3JlbW92ZV9ycGF0aChzZWxmLCBvcmlnX2ZpbGUsIHR5cGU9J2JpbicsIGRlc3Rp
bmF0aW9uX2Rpcj1Ob25lKToKKyAgICAgICAgaWYgbm90IGRlc3RpbmF0aW9uX2RpcjoKKyAgICAg
ICAgICAgIGRpcl9zdWZmaXggPSAnbGliJyBpZiB0eXBlID09ICdpbnRlcnByZXRlcicgZWxzZSB0
eXBlCisgICAgICAgICAgICBkZXN0aW5hdGlvbl9kaXIgPSBvcy5wYXRoLmpvaW4oc2VsZi5fdG1w
ZGlyLCBkaXJfc3VmZml4KQorICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2RpcihkZXN0aW5hdGlv
bl9kaXIpOgorICAgICAgICAgICAgb3MubWFrZWRpcnMoZGVzdGluYXRpb25fZGlyKQorCisgICAg
ICAgIGlmIG5vdCBvcy5wYXRoLmlzZmlsZShvcmlnX2ZpbGUpOgorICAgICAgICAgICAgcmFpc2Ug
VmFsdWVFcnJvcignQ2FuIG5vdCBmaW5kIGZpbGUgJXMnICUgb3JpZ19maWxlKQorCisgICAgICAg
IF9sb2cuaW5mbygnQWRkIHRvIGJ1bmRsZSBbJXNdOiAlcycgJSAodHlwZSwgb3JpZ19maWxlKSkK
KyAgICAgICAgc2h1dGlsLmNvcHkob3JpZ19maWxlLCBkZXN0aW5hdGlvbl9kaXIpCisKKyAgICAg
ICAgaWYgc2h1dGlsLndoaWNoKCdwYXRjaGVsZicpOgorICAgICAgICAgICAgcGF0Y2hfZWxmX2Nv
bW1hbmQgPSBbJ3BhdGNoZWxmJywgJy0tcmVtb3ZlLXJwYXRoJywgb3MucGF0aC5qb2luKGRlc3Rp
bmF0aW9uX2Rpciwgb3MucGF0aC5iYXNlbmFtZShvcmlnX2ZpbGUpKV0KKyAgICAgICAgICAgIGlm
IHN1YnByb2Nlc3MuY2FsbChwYXRjaF9lbGZfY29tbWFuZCkgIT0gMDoKKyAgICAgICAgICAgICAg
ICBfbG9nLndhcm5pbmcoJ1RoZSBwYXRjaGVsZiBjb21tYW5kIHJldHVybmVkIG5vbi16ZXJvIHN0
YXR1cycpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgX2xvZy53YXJuaW5nKCdwYXRj
aGVsZiBub3QgZm91bmQuIE5vdCBtb2RpZnlpbmcgcnBhdGgnKQorCisgICAgICAgIGlmIHNodXRp
bC53aGljaCgnc3RyaXAnKToKKyAgICAgICAgICAgIHN0cmlwX2NvbW1hbmQgPSBbJ3N0cmlwJywg
Jy0tc3RyaXAtdW5uZWVkZWQnLCBvcy5wYXRoLmpvaW4oZGVzdGluYXRpb25fZGlyLCBvcy5wYXRo
LmJhc2VuYW1lKG9yaWdfZmlsZSkpXQorICAgICAgICAgICAgaWYgc3VicHJvY2Vzcy5jYWxsKHN0
cmlwX2NvbW1hbmQpICE9IDA6CisgICAgICAgICAgICAgICAgX2xvZy53YXJuaW5nKCdUaGUgc3Ry
aXAgY29tbWFuZCByZXR1cm5lZCBub24temVybyBzdGF0dXMnKQorICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgX2xvZy53YXJuaW5nKCdzdHJpcCBub3QgZm91bmQuIE5vdCBzdHJpcHBpbmcgb2Jq
ZWN0JykKKworICAgIGRlZiBfcmVtb3ZlX3RlbXBkaXIoc2VsZik6CisgICAgICAgIGlmIG5vdCBz
ZWxmLl90bXBkaXI6CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgaWYgb3MucGF0aC5pc2Rp
cihzZWxmLl90bXBkaXIpOgorICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShzZWxmLl90bXBkaXIp
CisKKyAgICBkZWYgY3JlYXRlKHNlbGYpOgorICAgICAgICBzZWxmLl90bXBkaXIgPSBzZWxmLl9j
cmVhdGVfdGVtcGRpcihzZWxmLl9idWlsZHBhdGgpCisKKyAgICAgICAgaWYgb3MucGF0aC5pc2Zp
bGUoc2VsZi5fYnVuZGxlX2ZpbGVfcGF0aCk6CisgICAgICAgICAgICBfbG9nLmluZm8oJ1JlbW92
aW5nIHByZXZpb3VzIGJ1bmRsZSAlcycgJSBzZWxmLl9idW5kbGVfZmlsZV9wYXRoKQorICAgICAg
ICAgICAgb3MucmVtb3ZlKHNlbGYuX2J1bmRsZV9maWxlX3BhdGgpCisKKyAgICAgICAgZm9yIGJ1
bmRsZV9iaW5hcnkgaW4gc2VsZi5fYnVuZGxlX2JpbmFyaWVzOgorICAgICAgICAgICAgc2VsZi5f
Y3JlYXRlX2J1bmRsZShidW5kbGVfYmluYXJ5KQorICAgICAgICBzZWxmLl9nZW5lcmF0ZV9yZWFk
bWUoKQorICAgICAgICBpZiBzZWxmLl9jb21wcmVzc2lvbl90eXBlID09ICd6aXAnOgorICAgICAg
ICAgICAgc2VsZi5fY3JlYXRlX3ppcCgpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByYWlz
ZSBOb3RJbXBsZW1lbnRlZEVycm9yKCdTdXBwb3J0IGZvciBjb21wcmVzc2lvbiB0eXBlICVzIG5v
dCBpbXBsZW1lbnRlZCcgJSBzZWxmLl9jb21wcmVzc2lvbl90eXBlKQorICAgICAgICBzZWxmLl9y
ZW1vdmVfdGVtcGRpcigpCisgICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzZmlsZShzZWxmLl9idW5k
bGVfZmlsZV9wYXRoKToKKyAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignVW5hYmxlIHRv
IGNyZWF0ZSB0aGUgZmlsZSAlcycgJSBzZWxmLl9idW5kbGVfZmlsZV9wYXRoKQorICAgICAgICBf
bG9nLmxvZyhMT0dfTUVTU0FHRSwgJ0J1bmRsZSBmaWxlIGNyZWF0ZWQgYXQ6ICVzJyAlIHNlbGYu
X2J1bmRsZV9maWxlX3BhdGgpCisgICAgICAgIHJldHVybiBzZWxmLl9idW5kbGVfZmlsZV9wYXRo
CisKKworICAgIGRlZiBfZ2V0X3dlYmtpdF9iaW5hcmllcyhzZWxmKToKKyAgICAgICAgd2Via2l0
X2JpbmFyaWVzID0gW10KKyAgICAgICAgYmluX2RpciA9IG9zLnBhdGguam9pbihzZWxmLl9idWls
ZHBhdGgsICdiaW4nKQorICAgICAgICBmb3IgZW50cnkgaW4gb3MubGlzdGRpcihiaW5fZGlyKToK
KyAgICAgICAgICAgIGlmIGVudHJ5LnN0YXJ0c3dpdGgoc2VsZi5fcG9ydF9iaW5hcnlfcHJlZmZp
eCkgYW5kIChlbnRyeS5lbmRzd2l0aCgnUHJvY2VzcycpIG9yIGVudHJ5LmVuZHN3aXRoKCdEcml2
ZXInKSk6CisgICAgICAgICAgICAgICAgYmluYXJ5ID0gb3MucGF0aC5qb2luKGJpbl9kaXIsIGVu
dHJ5KQorICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKGJpbmFyeSkgYW5kIG9zLmFj
Y2VzcyhiaW5hcnksIG9zLlhfT0spOgorICAgICAgICAgICAgICAgICAgICB3ZWJraXRfYmluYXJp
ZXMuYXBwZW5kKGJpbmFyeSkKKyAgICAgICAgaWYgbGVuKHdlYmtpdF9iaW5hcmllcykgPCAyOgor
ICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdDb3VsZCBub3QgZmluZCByZXF1aXJlZCBX
ZWJLaXQgUHJvY2VzcyBiaW5hcmllcy4gQ2hlY2sgaWYgeW91IGFyZSBwYXNzaW5nIHRoZSByaWdo
dCBwbGF0Zm9ybSB2YWx1ZS4nKQorICAgICAgICByZXR1cm4gd2Via2l0X2JpbmFyaWVzCisKKwor
ICAgIGRlZiBfZ2V0X3dlYmtpdF9idW5kbGVsaWIoc2VsZik6CisgICAgICAgIGxpYl9kaXIgPSBv
cy5wYXRoLmpvaW4oc2VsZi5fYnVpbGRwYXRoLCAnbGliJykKKyAgICAgICAgYnVuZGxlX2xpYiA9
IE5vbmUKKyAgICAgICAgZm9yIGVudHJ5IGluIG9zLmxpc3RkaXIobGliX2Rpcik6CisgICAgICAg
ICAgICBpZiBlbnRyeS5lbmRzd2l0aCgnLnNvJykgYW5kICdpbmplY3RlZGJ1bmRsZScgaW4gZW50
cnkubG93ZXIoKSBhbmQgJ3Rlc3QnIG5vdCBpbiBlbnRyeS5sb3dlcigpOgorICAgICAgICAgICAg
ICAgIGFzc2VydChidW5kbGVfbGliID09IE5vbmUpCisgICAgICAgICAgICAgICAgYnVuZGxlX2xp
YiA9IG9zLnBhdGguam9pbihsaWJfZGlyLCBlbnRyeSkKKyAgICAgICAgICAgICAgICBicmVhawor
ICAgICAgICBhc3NlcnQoYnVuZGxlX2xpYikKKyAgICAgICAgcmV0dXJuIGJ1bmRsZV9saWIKKwor
CisgICAgZGVmIF9jcmVhdGVfemlwKHNlbGYpOgorICAgICAgICBfbG9nLmluZm8oJ0NyZWF0ZSBa
SVAgZmlsZScpCisgICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKHNlbGYuX2J1bmRsZV9maWxl
X3BhdGgsICd3JywgY29tcHJlc3Npb249emlwZmlsZS5aSVBfREVGTEFURUQpIGFzIHppcEhhbmRs
ZToKKyAgICAgICAgICAgIGZvciBkaXJuYW1lLCBzdWJkaXJzLCBmaWxlcyBpbiBvcy53YWxrKHNl
bGYuX3RtcGRpcik6CisgICAgICAgICAgICAgICAgZm9yIGZpbGVuYW1lIGluIGZpbGVzOgorICAg
ICAgICAgICAgICAgICAgICBzeXN0ZW1fZmlsZV9wYXRoID0gb3MucGF0aC5qb2luKGRpcm5hbWUs
IGZpbGVuYW1lKQorICAgICAgICAgICAgICAgICAgICB6aXBfZmlsZV9wYXRoID0gc3lzdGVtX2Zp
bGVfcGF0aC5yZXBsYWNlKHNlbGYuX3RtcGRpciwgJycsIDEpLmxzdHJpcCgnLycpCisgICAgICAg
ICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNsaW5rKHN5c3RlbV9maWxlX3BhdGgpOgorICAgICAg
ICAgICAgICAgICAgICAgICAgc3ltbGlua196aXBfaW5mbyA9IHppcGZpbGUuWmlwSW5mbyh6aXBf
ZmlsZV9wYXRoKQorICAgICAgICAgICAgICAgICAgICAgICAgc3ltbGlua196aXBfaW5mby5jcmVh
dGVfc3lzdGVtID0gMyAjIFVuaXggKGZvciBzeW1saW5rIHN1cHBvcnQpCisgICAgICAgICAgICAg
ICAgICAgICAgICBzeW1saW5rX3ppcF9pbmZvLmV4dGVybmFsX2F0dHIgPSAweEExRUQwMDAwICMg
WmlwIHNvZnRsaW5rIG1hZ2ljIG51bWJlcgorICAgICAgICAgICAgICAgICAgICAgICAgemlwSGFu
ZGxlLndyaXRlc3RyKHN5bWxpbmtfemlwX2luZm8sIG9zLnJlYWRsaW5rKHN5c3RlbV9maWxlX3Bh
dGgpKQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAg
emlwSGFuZGxlLndyaXRlKHN5c3RlbV9maWxlX3BhdGgsIHppcF9maWxlX3BhdGgpCisKKworICAg
IGRlZiBfZ2V0X3N5c3RlbV9wYWNrYWdlX25hbWUoc2VsZiwgb2JqZWN0KToKKyAgICAgICAgaWYg
bm90IHNodXRpbC53aGljaCgnZHBrZycpOgorICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9y
KCdBZGRpbmcgc3lzdGVtIGRlcGVuZGVuY2llcyBvbmx5IHN1cHBvcnRlZCBmb3IgZHBrZy1iYXNl
ZCBkaXN0cm9zLiBUcnkgcGFzc2luZyAtLXN5c2xpYnM9YnVuZGxlLWFsbCcpCisgICAgICAgIHJl
dGNvZGUsIHN0ZG91dCwgc3RkZXJyID0gc2VsZi5fcnVuX2NtZF9hbmRfZ2V0X291dHB1dChbJ2Rw
a2cnLCAnLVMnLCBvYmplY3RdKQorICAgICAgICBpZiByZXRjb2RlICE9IDA6CisgICAgICAgICAg
ICAjIEdpdmUgYSBzZWNvbmQtdHJ5IHdpdGggdGhlIHJlYWxwYXRoIG9mIHRoZSBvYmplY3QuCisg
ICAgICAgICAgICAjIFRoaXMgZml4ZXMgaXNzdWUgb24gVWJ1bnR1LTIwLjA0IHRoYXQgaGFzIGEg
L2xpYiBzeW1saW5rIHRvIC91c3IvbGliCisgICAgICAgICAgICAjIGFuZCBvYmplY3RzIHBvaW50
IHRvIC9saWIsIGJ1dCBkcGtnIG9ubHkgcmVjb2duaXplcyB0aGUgZmlsZXMgb24gL3Vzci9saWIK
KyAgICAgICAgICAgIG9iamVjdF9yZWFscGF0aCA9IG9zLnBhdGgucmVhbHBhdGgob2JqZWN0KQor
ICAgICAgICAgICAgaWYgb2JqZWN0X3JlYWxwYXRoICE9IG9iamVjdDoKKyAgICAgICAgICAgICAg
ICByZXRjb2RlLCBzdGRvdXQsIHN0ZGVyciA9IHNlbGYuX3J1bl9jbWRfYW5kX2dldF9vdXRwdXQo
WydkcGtnJywgJy1TJywgb2JqZWN0X3JlYWxwYXRoXSkKKyAgICAgICAgaWYgcmV0Y29kZSAhPSAw
OgorICAgICAgICAgICAgIyBQYWNrYWdlIG5vdCBmb3VuZAorICAgICAgICAgICAgcmV0dXJuIE5v
bmUKKyAgICAgICAgcGFja2FnZSA9IHN0ZG91dC5zcGxpdCgnICcpWzBdLnJzdHJpcCgnOicpCisg
ICAgICAgIF9sb2cuaW5mbygnQWRkIGRlcGVuZGVuY3kgb24gc3lzdGVtIHBhY2thZ2UgWyVzXTog
JXMnICUocGFja2FnZSwgb2JqZWN0KSkKKyAgICAgICAgcmV0dXJuIHBhY2thZ2UKKworCisgICAg
ZGVmIF9nZXRfZ2lvX21vZHVsZXMoc2VsZik6CisgICAgICAgIGdpb19tb2R1bGVzID0gW10KKyAg
ICAgICAgcmV0Y29kZSwgc3Rkb3V0LCBzdGRlcnIgPSBzZWxmLl9ydW5fY21kX2FuZF9nZXRfb3V0
cHV0KFsncGtnLWNvbmZpZycsICctLXZhcmlhYmxlPWdpb21vZHVsZWRpcicsICdnaW8tMi4wJ10p
CisgICAgICAgIGlmIHJldGNvZGUgIT0gMDoKKyAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJv
cignVGhlIHBrZy1jb25maWcgY29tbWFuZCByZXR1cm5lZCBzdGF0dXMgJWQnICUgcmV0Y29kZSkK
KyAgICAgICAgZ2lvX21vZHVsZV9kaXIgPSBzdGRvdXQuc3RyaXAoKQorICAgICAgICBpZiBub3Qg
b3MucGF0aC5pc2RpcihnaW9fbW9kdWxlX2Rpcik6CisgICAgICAgICAgICByYWlzZSBSdW50aW1l
RXJyb3IoJ1RoZSBwa2ctY29uZmlnIGVudHJ5IGZvciBnaW9tb2R1bGVkaXIgaXMgbm90IGEgZGly
ZWN0b3J5OiAlcycgJSBnaW9fbW9kdWxlX2RpcikKKyAgICAgICAgZm9yIGVudHJ5IGluIG9zLmxp
c3RkaXIoZ2lvX21vZHVsZV9kaXIpOgorICAgICAgICAgICAgaWYgZW50cnkuZW5kc3dpdGgoJy5z
bycpOgorICAgICAgICAgICAgICAgIGdpb19tb2R1bGVzLmFwcGVuZChvcy5wYXRoLmpvaW4oZ2lv
X21vZHVsZV9kaXIsIGVudHJ5KSkKKyAgICAgICAgcmV0dXJuIGdpb19tb2R1bGVzCisKKyAgICBk
ZWYgX2dldF9nc3RyZWFtZXJfbW9kdWxlcyhzZWxmKToKKyAgICAgICAgZ3N0cmVhbWVyX3BsdWdp
bnMgPSBbXQorICAgICAgICByZXRjb2RlLCBzdGRvdXQsIHN0ZGVyciA9IHNlbGYuX3J1bl9jbWRf
YW5kX2dldF9vdXRwdXQoWydwa2ctY29uZmlnJywgJy0tdmFyaWFibGU9cGx1Z2luc2RpcicsICdn
c3RyZWFtZXItMS4wJ10pCisgICAgICAgIGlmIHJldGNvZGUgIT0gMDoKKyAgICAgICAgICAgIHJh
aXNlIFJ1bnRpbWVFcnJvcignVGhlIHBrZy1jb25maWcgY29tbWFuZCByZXR1cm5lZCBzdGF0dXMg
JWQnICUgcmV0Y29kZSkKKyAgICAgICAgZ3N0cmFtZXJfcGx1Z2luc19kaXIgPSBzdGRvdXQuc3Ry
aXAoKQorICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2Rpcihnc3RyYW1lcl9wbHVnaW5zX2Rpcik6
CisgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ1RoZSBwa2ctY29uZmlnIGVudHJ5IGZv
ciBwbHVnaW5zZGlyIGlzIG5vdCBhIGRpcmVjdG9yeTogJXMnICUgZ3N0cmFtZXJfcGx1Z2luc19k
aXIpCisgICAgICAgIGZvciBlbnRyeSBpbiBvcy5saXN0ZGlyKGdzdHJhbWVyX3BsdWdpbnNfZGly
KToKKyAgICAgICAgICAgIGlmIGVudHJ5LmVuZHN3aXRoKCcuc28nKToKKyAgICAgICAgICAgICAg
ICBnc3RyZWFtZXJfcGx1Z2lucy5hcHBlbmQob3MucGF0aC5qb2luKGdzdHJhbWVyX3BsdWdpbnNf
ZGlyLCBlbnRyeSkpCisgICAgICAgIHJldHVybiBnc3RyZWFtZXJfcGx1Z2lucworCisKKyAgICBk
ZWYgX2FkZF9vYmplY3Rfb3JfZ2V0X3N5c2RlcChzZWxmLCBvYmplY3QsIG9iamVjdF90eXBlKToK
KyAgICAgICAgcHJvdmlkZWRfYnlfc3lzdGVtX3BhY2thZ2UgPSBOb25lCisgICAgICAgIGlmIHNl
bGYuX3N5c2xpYnMgPT0gJ2J1bmRsZS1hbGwnOgorICAgICAgICAgICAgc2VsZi5fY29weV9hbmRf
cmVtb3ZlX3JwYXRoKG9iamVjdCwgdHlwZT1vYmplY3RfdHlwZSkKKyAgICAgICAgZWxzZToKKyAg
ICAgICAgICAgIHByb3ZpZGVkX2J5X3N5c3RlbV9wYWNrYWdlID0gc2VsZi5fZ2V0X3N5c3RlbV9w
YWNrYWdlX25hbWUob2JqZWN0KQorICAgICAgICAgICAgaWYgbm90IHByb3ZpZGVkX2J5X3N5c3Rl
bV9wYWNrYWdlOgorICAgICAgICAgICAgICAgIHNlbGYuX2NvcHlfYW5kX3JlbW92ZV9ycGF0aChv
YmplY3QsIHR5cGU9b2JqZWN0X3R5cGUpCisgICAgICAgIHJldHVybiBwcm92aWRlZF9ieV9zeXN0
ZW1fcGFja2FnZQorCisgICAgZGVmIF9lbnN1cmVfd3BlX2JhY2tlbmRfc3ltbGluayhzZWxmKToK
KyAgICAgICAgIyBXUEUvV1BFUmVuZGVyZXIgZGxvcGVucyB0aGlzIGxpYnJhcnkgd2l0aG91dCBh
IHZlcnNpb24gc3VmZml4LAorICAgICAgICAjIHNvIHdlIG5lZWQgdG8gZW5zdXJlIHRoZXJlIGlz
IGEgcHJvcGVyIHN5bWxpbmsKKyAgICAgICAgYnVuZGxlX2xpYl9kaXIgPSBvcy5wYXRoLmpvaW4o
c2VsZi5fdG1wZGlyLCAnbGliJykKKyAgICAgICAgd3BlX2JhY2tlbmRfc29uYW1lID0gJ2xpYldQ
RUJhY2tlbmQtZmRvLTEuMC5zbycKKyAgICAgICAgcHJldmlvdXNfZGlyID0gb3MuZ2V0Y3dkKCkK
KyAgICAgICAgZm9yIGVudHJ5IGluIG9zLmxpc3RkaXIoYnVuZGxlX2xpYl9kaXIpOgorICAgICAg
ICAgICAgaWYgZW50cnkuc3RhcnRzd2l0aCh3cGVfYmFja2VuZF9zb25hbWUgKyAnLicpOgorICAg
ICAgICAgICAgICAgIG9zLmNoZGlyKGJ1bmRsZV9saWJfZGlyKQorICAgICAgICAgICAgICAgIGlm
IG5vdCBvcy5wYXRoLmV4aXN0cyh3cGVfYmFja2VuZF9zb25hbWUpOgorICAgICAgICAgICAgICAg
ICAgICBvcy5zeW1saW5rKGVudHJ5LCB3cGVfYmFja2VuZF9zb25hbWUpCisgICAgICAgICAgICAg
ICAgb3MuY2hkaXIocHJldmlvdXNfZGlyKQorICAgICAgICAgICAgICAgIGJyZWFrCisKKyAgICBk
ZWYgX2NyZWF0ZV9idW5kbGUoc2VsZiwgYnVuZGxlX2JpbmFyeSk6CisgICAgICAgIG1haW5fYmlu
YXJ5X3BhdGggPSBvcy5wYXRoLmpvaW4oc2VsZi5fYnVpbGRwYXRoLCAnYmluJywgYnVuZGxlX2Jp
bmFyeSkKKyAgICAgICAgaWYgbm90IG9zLnBhdGguaXNmaWxlKG1haW5fYmluYXJ5X3BhdGgpIG9y
IG5vdCBvcy5hY2Nlc3MobWFpbl9iaW5hcnlfcGF0aCwgb3MuWF9PSyk6CisgICAgICAgICAgICBy
YWlzZSBWYWx1ZUVycm9yKCdDYW5ub3QgZmluZCBiaW5hcnkgZm9yICVzIGF0ICVzJyAlIChidW5k
bGVfYmluYXJ5LCBtYWluX2JpbmFyeV9wYXRoKSApCisKKyAgICAgICAgY29waWVkX2ludGVycHJl
dGVyID0gTm9uZQorICAgICAgICBnaW9fbW9kdWxlcyA9IFtdCisgICAgICAgIGdzdHJlYW1lcl9t
b2R1bGVzID0gW10KKyAgICAgICAgbGlicmFyaWVzX2NoZWNrZWQgPSBzZXQoKQorICAgICAgICBz
eXN0ZW1fcGFja2FnZXNfbmVlZGVkID0gc2V0KCkKKyAgICAgICAgb2JqZWN0c190b19jb3B5ID0g
WyBtYWluX2JpbmFyeV9wYXRoIF0KKyAgICAgICAgaWYgYnVuZGxlX2JpbmFyeSA9PSAnTWluaUJy
b3dzZXInOgorICAgICAgICAgICAgZ2lvX21vZHVsZXMgPSBzZWxmLl9nZXRfZ2lvX21vZHVsZXMo
KQorICAgICAgICAgICAgZ3N0cmVhbWVyX21vZHVsZXMgPSBzZWxmLl9nZXRfZ3N0cmVhbWVyX21v
ZHVsZXMoKQorICAgICAgICAgICAgb2JqZWN0c190b19jb3B5LmV4dGVuZChzZWxmLl9nZXRfd2Vi
a2l0X2JpbmFyaWVzKCkpCisgICAgICAgICAgICBvYmplY3RzX3RvX2NvcHkuYXBwZW5kKHNlbGYu
X2dldF93ZWJraXRfYnVuZGxlbGliKCkpCisgICAgICAgICAgICBvYmplY3RzX3RvX2NvcHkuZXh0
ZW5kKGdpb19tb2R1bGVzKQorICAgICAgICAgICAgb2JqZWN0c190b19jb3B5LmV4dGVuZChnc3Ry
ZWFtZXJfbW9kdWxlcykKKyAgICAgICAgZm9yIG9iamVjdCBpbiBvYmplY3RzX3RvX2NvcHk6Cisg
ICAgICAgICAgICBzeXN0ZW1fcGFja2FnZSA9IE5vbmUKKyAgICAgICAgICAgIGlmIG9iamVjdCBp
biBnaW9fbW9kdWxlczoKKyAgICAgICAgICAgICAgICBzeXN0ZW1fcGFja2FnZSA9IHNlbGYuX2Fk
ZF9vYmplY3Rfb3JfZ2V0X3N5c2RlcChvYmplY3QsICdnaW8nKQorICAgICAgICAgICAgICAgIGlm
IHN5c3RlbV9wYWNrYWdlOgorICAgICAgICAgICAgICAgICAgICBzeXN0ZW1fcGFja2FnZXNfbmVl
ZGVkLmFkZChzeXN0ZW1fcGFja2FnZSkKKyAgICAgICAgICAgIGVsaWYgb2JqZWN0IGluIGdzdHJl
YW1lcl9tb2R1bGVzOgorICAgICAgICAgICAgICAgIHN5c3RlbV9wYWNrYWdlID0gc2VsZi5fYWRk
X29iamVjdF9vcl9nZXRfc3lzZGVwKG9iamVjdCwgJ2dzdCcpCisgICAgICAgICAgICAgICAgaWYg
c3lzdGVtX3BhY2thZ2U6CisgICAgICAgICAgICAgICAgICAgIHN5c3RlbV9wYWNrYWdlc19uZWVk
ZWQuYWRkKHN5c3RlbV9wYWNrYWdlKQorICAgICAgICAgICAgZWxpZiBvYmplY3QuZW5kc3dpdGgo
Jy5zbycpOgorICAgICAgICAgICAgICAgIHNlbGYuX2NvcHlfYW5kX3JlbW92ZV9ycGF0aChvYmpl
Y3QsIHR5cGU9J2xpYicpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYu
X2NvcHlfYW5kX3JlbW92ZV9ycGF0aChvYmplY3QsIHR5cGU9J2JpbicpCisgICAgICAgICAgICAj
IFRoZXJlIGlzIG5vIG5lZWQgdG8gZXhhbWluZSB0aGUgbGlicmFyaWVzIGxpbmtlZCB3aXRoIG9i
amVjdHMgY29taW5nIGZyb20gYSBzeXN0ZW0gcGFja2FnZSwKKyAgICAgICAgICAgICMgYmVjYXVz
ZSBzeXN0ZW0gcGFja2FnZXMgYWxyZWFkeSBkZWNsYXJlIGRlcGVuZGVuY2llcyBiZXR3ZWVuIHRo
ZW0uCisgICAgICAgICAgICAjIEhvd2V2ZXIsIGlmIHdlIGFyZSBydW5uaW5nIHdpdGggc2VsZi5f
c3lzbGlicyA9PSAnYnVuZGxlLWFsbCcgdGhlbiBzeXN0ZW1fcGFja2FnZSB3aWxsIGJlIE5vbmUs
CisgICAgICAgICAgICAjIGFuZCBldmVyeXRoaW5nIHdpbGwgYmUgZXhhbWluZWQgYW5kIGJ1bmRs
ZWQgYXMgd2UgZG9uJ3QgYWNjb3VudCBmb3Igc3lzdGVtIHBhY2thZ2VzIGluIHRoYXQgY2FzZS4K
KyAgICAgICAgICAgIGlmIG5vdCBzeXN0ZW1fcGFja2FnZToKKyAgICAgICAgICAgICAgICBsaWJy
YXJpZXMsIGludGVycHJldGVyID0gc2VsZi5fbGRkX3JlY3Vyc2l2ZV9nZXRfbGlic19hbmRfaW50
ZXJwcmV0ZXIob2JqZWN0KQorICAgICAgICAgICAgICAgIGlmIGNvcGllZF9pbnRlcnByZXRlciBp
cyBOb25lOgorICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLl9zeXNsaWJzID09ICdidW5kbGUt
YWxsJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2NvcHlfYW5kX3JlbW92ZV9ycGF0
aChpbnRlcnByZXRlciwgdHlwZT0naW50ZXJwcmV0ZXInKQorICAgICAgICAgICAgICAgICAgICBj
b3BpZWRfaW50ZXJwcmV0ZXIgPSBpbnRlcnByZXRlcgorICAgICAgICAgICAgICAgIGVsaWYgY29w
aWVkX2ludGVycHJldGVyICE9IGludGVycHJldGVyOgorICAgICAgICAgICAgICAgICAgICByYWlz
ZSBSdW50aW1lRXJyb3IoJ0RldGVjdGVkIGJpbmFyaWVzIHdpdGggZGlmZmVyZW50IGludGVycHJl
dGVyczogJXMgIT0gJXMnICUoY29waWVkX2ludGVycHJldGVyLCBpbnRlcnByZXRlcikpCisgICAg
ICAgICAgICAgICAgIyBGSVhNRTogZm9yIC0tc3lzbGlicz1idW5kbGUtYWxsIHdlIHdvdWxkIGhh
dmUgdG8gY29weSB0aGUgbGlibnNzXypzbyogbGlicmFyaWVzIHdoaWNoIGFyZSBkbG9wZW4nZWQg
PGh0dHBzOi8vYnVncy5kZWJpYW4ub3JnLzIwMzAxND4KKyAgICAgICAgICAgICAgICAjIEFsc28g
d2Ugc2hvdWxkIGluY2x1ZGUgY29uZmlnIGZpbGVzIGxpa2UgZm9udGNvbmZpZyBzdHVmZiBvciBz
dXBwb3J0IGZpbGVzIGxpa2UgaWNvbnMuCisgICAgICAgICAgICAgICAgZm9yIGxpYnJhcnkgaW4g
bGlicmFyaWVzOgorICAgICAgICAgICAgICAgICAgICBpZiBsaWJyYXJ5IGluIGxpYnJhcmllc19j
aGVja2VkOgorICAgICAgICAgICAgICAgICAgICAgICAgX2xvZy5kZWJ1ZygnU2tpcCBhbHJlYWR5
IGNoZWNrZWQgW2xpYl06ICVzJyAlIGxpYnJhcnkpCisgICAgICAgICAgICAgICAgICAgICAgICBj
b250aW51ZQorICAgICAgICAgICAgICAgICAgICBsaWJyYXJpZXNfY2hlY2tlZC5hZGQobGlicmFy
eSkKKyAgICAgICAgICAgICAgICAgICAgc3lzdGVtX3BhY2thZ2UgPSBzZWxmLl9hZGRfb2JqZWN0
X29yX2dldF9zeXNkZXAobGlicmFyeSwgJ2xpYicpCisgICAgICAgICAgICAgICAgICAgIGlmIHN5
c3RlbV9wYWNrYWdlOgorICAgICAgICAgICAgICAgICAgICAgICAgc3lzdGVtX3BhY2thZ2VzX25l
ZWRlZC5hZGQoc3lzdGVtX3BhY2thZ2UpCisKKyAgICAgICAgc2VsZi5fZW5zdXJlX3dwZV9iYWNr
ZW5kX3N5bWxpbmsoKQorICAgICAgICBzZWxmLl9nZW5lcmF0ZV93cmFwcGVyX3NjcmlwdChpbnRl
cnByZXRlciwgYnVuZGxlX2JpbmFyeSkKKyAgICAgICAgaWYgYnVuZGxlX2JpbmFyeSA9PSAiTWlu
aUJyb3dzZXIiOgorICAgICAgICAgICAgc2VsZi5fZ2VuZXJhdGVfd3JhcHBlcl9zY3JpcHQoaW50
ZXJwcmV0ZXIsIHNlbGYuX3BvcnRfYmluYXJ5X3ByZWZmaXggKyAnV2ViRHJpdmVyJykKKyAgICAg
ICAgc2VsZi5fZ2VuZXJhdGVfaW5zdGFsbF9kZXBzX3NjcmlwdChzeXN0ZW1fcGFja2FnZXNfbmVl
ZGVkKQorCisKK2NsYXNzIEJ1bmRsZVVwbG9hZGVyKG9iamVjdCk6CisKKyAgICBkZWYgX19pbml0
X18oc2VsZiwgYnVuZGxlX2ZpbGVfcGF0aCwgcmVtb3RlX2NvbmZpZ19maWxlLCBidW5kbGVfdHlw
ZSwgcGxhdGZvcm0sIGNvbmZpZ3VyYXRpb24sIGNvbXByZXNzaW9uX3R5cGUsIHJldmlzaW9uLCBs
b2dfbGV2ZWwpOgorICAgICAgICBzZWxmLl9idW5kbGVfZmlsZV9wYXRoID0gYnVuZGxlX2ZpbGVf
cGF0aAorICAgICAgICBzZWxmLl9yZW1vdGVfY29uZmlnX2ZpbGUgPSByZW1vdGVfY29uZmlnX2Zp
bGUKKyAgICAgICAgc2VsZi5fY29uZmlndXJhdGlvbiA9IGNvbmZpZ3VyYXRpb24KKyAgICAgICAg
c2VsZi5fcmV2aXNpb24gPSByZXZpc2lvbgorICAgICAgICBzZWxmLl9idW5kbGVfdHlwZSA9IGJ1
bmRsZV90eXBlCisgICAgICAgIHNlbGYuX3BsYXRmb3JtID0gcGxhdGZvcm0KKyAgICAgICAgc2Vs
Zi5fY29tcHJlc3Npb25fdHlwZSA9IGNvbXByZXNzaW9uX3R5cGUKKyAgICAgICAgc2VsZi5fc2Z0
cF9xdWlldCA9IGxvZ19sZXZlbCA9PSAncXVpZXQnIG9yIGxvZ19sZXZlbCA9PSAnbWluaW1hbCcK
KyAgICAgICAgaWYgbm90IG9zLnBhdGguaXNmaWxlKHNlbGYuX3JlbW90ZV9jb25maWdfZmlsZSk6
CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdDYW4gbm90IGZpbmQgcmVtb3RlIGNvbmZp
ZyBmaWxlIGZvciB1cGxvYWQgYXQgcGF0aCAlcycgJSBzZWxmLl9yZW1vdGVfY29uZmlnX2ZpbGUp
CisKKyAgICBkZWYgX3NoYTI1NnN1bShzZWxmLCBmaWxlKToKKyAgICAgICAgaGFzaCA9IGhhc2hs
aWIuc2hhMjU2KCkKKyAgICAgICAgd2l0aCBvcGVuKGZpbGUsICdyYicpIGFzIGY6CisgICAgICAg
ICAgICBmb3IgY2h1bmsgaW4gaXRlcihsYW1iZGE6IGYucmVhZCg0MDk2KSwgYicnKToKKyAgICAg
ICAgICAgICAgICBoYXNoLnVwZGF0ZShjaHVuaykKKyAgICAgICAgcmV0dXJuIGhhc2guaGV4ZGln
ZXN0KCkKKworICAgIGRlZiBfZ2V0X29zaWR2ZXJzaW9uKHNlbGYpOgorICAgICAgICB3aXRoIG9w
ZW4oJy9ldGMvb3MtcmVsZWFzZScsICdyJykgYXMgb3NyZWxlYXNlX2hhbmRsZToKKyAgICAgICAg
ICAgIGZvciBsaW5lIGluIG9zcmVsZWFzZV9oYW5kbGUucmVhZGxpbmVzKCk6CisgICAgICAgICAg
ICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCdJRD0nKToKKyAgICAgICAgICAgICAgICAgICAgb3Nf
aWQgPSBsaW5lLnNwbGl0KCc9JylbMV0uc3RyaXAoKS5zdHJpcCgnIicpCisgICAgICAgICAgICAg
ICAgaWYgbGluZS5zdGFydHN3aXRoKCdWRVJTSU9OX0lEPScpOgorICAgICAgICAgICAgICAgICAg
ICB2ZXJzaW9uX2lkID0gbGluZS5zcGxpdCgnPScpWzFdLnN0cmlwKCkuc3RyaXAoJyInKQorICAg
ICAgICBhc3NlcnQob3NfaWQpCisgICAgICAgIGFzc2VydCh2ZXJzaW9uX2lkKQorICAgICAgICBv
c2lkdmVyc2lvbiA9IG9zX2lkICsgJy0nICsgdmVyc2lvbl9pZAorICAgICAgICBhc3NlcnQoJyAn
IG5vdCBpbiBvc2lkdmVyc2lvbikKKyAgICAgICAgYXNzZXJ0KGxlbihvc2lkdmVyc2lvbikgPiAz
KQorICAgICAgICByZXR1cm4gb3NpZHZlcnNpb24KKworICAgICMgVGhlIGV4cGVjdGVkIGZvcm1h
dCBmb3IgLS1yZW1vdGUtY29uZmlnLWZpbGUgaXMgc29tZXRoaW5nIGxpa2U6CisgICAgIyB7Cisg
ICAgIyAic2VydmVybmFtZSI6ICJ3ZWJraXRndGsub3JnIiwKKyAgICAjICJzZXJ2ZXJhZGRyZXNz
IjogIndlYmtpdGd0ay5pbnRyYW5ldC1hZGRyZXNzLmxvY2FsIiwKKyAgICAjICJzZXJ2ZXJwb3J0
IjogIjIzIiwKKyAgICAjICJ1c2VybmFtZSI6ICJ1cGxvYWQtYm90LTY0IiwKKyAgICAjICJiYXNl
dXJsIjogImh0dHBzOi8vd2Via2l0Z3RrLm9yZy9idWlsdC1wcm9kdWN0cyIsCisgICAgIyAicmVt
b3RlcGF0aCIgOiAieDg2XzY0L25pZ2h0bHkvJShidW5kbGV0eXBlKXMvJShkaXN0cm9faWRfdmVy
KXMvJShidW5kbGV0eXBlKXNfJShwbGF0Zm9ybSlzXyUoY29uZmlndXJhdGlvbilzX3IlKHZlcnNp
b24pcy4lKGNvbXByZXNzaW9uX3R5cGUpcyIsCisgICAgIyAic3Noa2V5IjogIm91dHB1dCBvZiB0
aGUgcHJpdiBrZXkgaW4gYmFzZTY0LiBFLmcuIGNhdCB+Ly5zc2gvaWRfcnNhfGJhc2U2NCAtdzAi
CisgICAgIyB9CisgICAgZGVmIHVwbG9hZChzZWxmKToKKyAgICAgICAgIyBGSVhNRTogc2VuZCBQ
UiAvIG9wZW4gaXNzdWUgdG8gaHR0cHM6Ly9naXRodWIuY29tL2RldnNuZWsvZXN2dSBhbmQgaHR0
cHM6Ly9naXRodWIuY29tL0dvb2dsZUNocm9tZUxhYnMvanN2dSB3aXRoIG5ldyBVUkwgY29uZmln
IGlmIG5lZWRlZAorICAgICAgICAjIGh0dHBzOi8vd2Via2l0Z3RrLm9yZy9qc2MtYnVpbHQtcHJv
ZHVjdHMveDg2XzY0L3JlbGVhc2UvMjY0MzkyLnppcCBtYXkgYmVjb21lcworICAgICAgICAjIGh0
dHBzOi8vd2Via2l0Z3RrLm9yZy9idWlsdC1wcm9kdWN0cy94ODZfNjQvbmlnaHRseS9qc2MvanNj
X2d0a19yZWxlYXNlX2J1aWxkX3IyNjQzOTIuemlwCisgICAgICAgICMgaHR0cHM6Ly93ZWJraXRn
dGsub3JnL2J1aWx0LXByb2R1Y3RzL3g4Nl82NC9uaWdodGx5L21pbmlicm93c2VyL3VidW50dS0y
MC4wNC9NaW5pQnJvd3Nlcl9ndGtfcmVsZWFzZV9idWlsZF9yMjY0MzkyLnppcAorICAgICAgICAj
IGh0dHBzOi8vd2Via2l0Z3RrLm9yZy9idWlsdC1wcm9kdWN0cy94ODZfNjQvc3RhYmxlL2pzYy9q
c2NfZ3RrX3JlbGVhc2VfYnVpbGRfMi4yOC4yLnppcAorICAgICAgICAjIGh0dHBzOi8vd2Via2l0
Z3RrLm9yZy9idWlsdC1wcm9kdWN0cy94ODZfNjQvc3RhYmxlL21pbmlicm93c2VyL21pbmlicm93
c2VyX2d0a19yZWxlYXNlX2J1aWxkXzIuMjguMi56aXAKKyAgICAgICAgIyBodHRwczovL3dlYmtp
dGd0ay5vcmcvYnVpbHQtcHJvZHVjdHMveDg2XzY0L2JldGEvanNjL2pzY19ndGtfcmVsZWFzZV9i
dWlsZF8yLjI5LjMuemlwCisgICAgICAgICMgaHR0cHM6Ly93ZWJraXRndGsub3JnL2J1aWx0LXBy
b2R1Y3RzL3g4Nl82NC9iZXRhL21pbmlicm93c2VyL21pbmlicm93c2VyX2d0a19yZWxlYXNlX2J1
aWxkXzIuMjkuMy56aXAKKyAgICAgICAgcmVtb3RlX2RhdGEgPSBqc29uLmxvYWQob3BlbihzZWxm
Ll9yZW1vdGVfY29uZmlnX2ZpbGUpKQorICAgICAgICByZW1vdGVfZmlsZV9idW5kbGVfcGF0aCA9
IHJlbW90ZV9kYXRhWydyZW1vdGVwYXRoJ10gJSB7ICdidW5kbGV0eXBlJyA6IHNlbGYuX2J1bmRs
ZV90eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICdjb25maWd1cmF0aW9uJyA6IHNlbGYuX2NvbmZpZ3VyYXRpb24sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ2NvbXByZXNzaW9uX3R5cGUnIDogc2VsZi5fY29tcHJlc3Npb25fdHlwZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnZGlzdHJvX2lkX3ZlcicgOiBzZWxmLl9nZXRfb3NpZHZlcnNpb24oKS5jYXBpdGFsaXplKCks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ3BsYXRmb3JtJyA6IHNlbGYuX3BsYXRmb3JtLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2ZXJzaW9uJyA6
IHNlbGYuX3JldmlzaW9uIH0KKyAgICAgICAgd2l0aCB0ZW1wZmlsZS5OYW1lZFRlbXBvcmFyeUZp
bGUobW9kZT0ndytiJykgYXMgc3Noa2V5ZmlsZSwgdGVtcGZpbGUuTmFtZWRUZW1wb3JhcnlGaWxl
KG1vZGU9J3crJykgYXMgaGFzaGNoZWNrZmlsZSwgXAorICAgICAgICAgICAgIHRlbXBmaWxlLk5h
bWVkVGVtcG9yYXJ5RmlsZShtb2RlPSd3KycpIGFzIGxhc3Rpc2ZpbGUsIHRlbXBmaWxlLk5hbWVk
VGVtcG9yYXJ5RmlsZShtb2RlPSd3KycpIGFzIHVwbG9hZGluc3RydWN0aW9uc2ZpbGU6CisKKyAg
ICAgICAgICAgICMgSW4gdGhlb3J5IE5hbWVkVGVtcG9yYXJ5RmlsZSgpIGlzIGFscmVhZHkgY3Jl
YXRlZCAwNjAwLiBCdXQgaXQgZG9uJ3QgaHVydHMgZW5zdXJpbmcgdGhpcyBhZ2FpbiBoZXJlLgor
ICAgICAgICAgICAgb3MuY2htb2Qoc3Noa2V5ZmlsZS5uYW1lLCAwbzYwMCkKKyAgICAgICAgICAg
IHNzaGtleWZpbGUud3JpdGUoYmFzZTY0LmI2NGRlY29kZShyZW1vdGVfZGF0YVsnc3Noa2V5J10p
KQorICAgICAgICAgICAgc3Noa2V5ZmlsZS5mbHVzaCgpCisgICAgICAgICAgICAjIEdlbmVyYXRl
IGFuZCB1cGxvYWQgYWxzbyBhIHNoYTI1NiBoYXNoCisgICAgICAgICAgICBoYXNoZm9yYnVuZGxl
ID0gc2VsZi5fc2hhMjU2c3VtKHNlbGYuX2J1bmRsZV9maWxlX3BhdGgpCisgICAgICAgICAgICBv
cy5jaG1vZChoYXNoY2hlY2tmaWxlLm5hbWUsIDBvNjQ0KQorICAgICAgICAgICAgaGFzaGNoZWNr
ZmlsZS53cml0ZSgnJXMgJXNcbicgJSAoaGFzaGZvcmJ1bmRsZSwgb3MucGF0aC5iYXNlbmFtZShy
ZW1vdGVfZmlsZV9idW5kbGVfcGF0aCkpKQorICAgICAgICAgICAgaGFzaGNoZWNrZmlsZS5mbHVz
aCgpCisgICAgICAgICAgICAjIEEgTEFTVC1JUyBmaWxlIGZvciBjb252ZW5pZW5jZQorICAgICAg
ICAgICAgb3MuY2htb2QobGFzdGlzZmlsZS5uYW1lLCAwbzY0NCkKKyAgICAgICAgICAgIGxhc3Rp
c2ZpbGUud3JpdGUoJyVzXG4nICUgb3MucGF0aC5iYXNlbmFtZShyZW1vdGVfZmlsZV9idW5kbGVf
cGF0aCkpCisgICAgICAgICAgICBsYXN0aXNmaWxlLmZsdXNoKCkKKyAgICAgICAgICAgICMgU0ZU
UCB1cGxvYWQgaW5zdHJ1Y3Rpb25zIGZpbGUKKyAgICAgICAgICAgIHVwbG9hZGluc3RydWN0aW9u
c2ZpbGUud3JpdGUoJ3Byb2dyZXNzXG4nKQorICAgICAgICAgICAgdXBsb2FkaW5zdHJ1Y3Rpb25z
ZmlsZS53cml0ZSgncHV0ICVzICVzXG4nICUgKHNlbGYuX2J1bmRsZV9maWxlX3BhdGgsIHJlbW90
ZV9maWxlX2J1bmRsZV9wYXRoKSkKKyAgICAgICAgICAgIHVwbG9hZGluc3RydWN0aW9uc2ZpbGUu
d3JpdGUoJ3B1dCAlcyAlc1xuJyAlIChoYXNoY2hlY2tmaWxlLm5hbWUsIHJlbW90ZV9maWxlX2J1
bmRsZV9wYXRoICsgJy5zaGEyNTZzdW0nKSkKKyAgICAgICAgICAgIHVwbG9hZGluc3RydWN0aW9u
c2ZpbGUud3JpdGUoJ3B1dCAlcyAlc1xuJyAlIChsYXN0aXNmaWxlLm5hbWUsIG9zLnBhdGguam9p
bihvcy5wYXRoLmRpcm5hbWUocmVtb3RlX2ZpbGVfYnVuZGxlX3BhdGgpLCAnTEFTVC1JUycpKSkK
KyAgICAgICAgICAgIHVwbG9hZGluc3RydWN0aW9uc2ZpbGUud3JpdGUoJ3F1aXRcbicpCisgICAg
ICAgICAgICB1cGxvYWRpbnN0cnVjdGlvbnNmaWxlLmZsdXNoKCkKKyAgICAgICAgICAgICMgVGhl
IGlkZWEgb2YgdGhpcyBpcyB0byBlbnN1cmUgc2NwIGRvZXNuJ3QgYXNrIGFueSBxdWVzdGlvbiAo
bm90IGV2ZW4gb24gdGhlIGZpcnN0IHJ1bikuCisgICAgICAgICAgICAjIFRoaXMgc2hvdWxkIGJl
IHNlY3VyZSBlbm91Z2ggYWNjb3JkaW5nIHRvIGh0dHBzOi8vd3d3LmdyZW13ZWxsLmNvbS9zc2gt
bWl0bS1wdWJsaWMta2V5LWF1dGhlbnRpY2F0aW9uCisgICAgICAgICAgICBzZnRwQ29tbWFuZCA9
IFsnc2Z0cCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAnLW8nLCAnU3RyaWN0SG9zdEtl
eUNoZWNraW5nPW5vJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICctbycsICdVc2VyS25v
d25Ib3N0c0ZpbGU9L2Rldi9udWxsJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICctbycs
ICdMb2dMZXZlbD1FUlJPUicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAnLVAnLCByZW1v
dGVfZGF0YVsnc2VydmVycG9ydCddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJy1pJywg
c3Noa2V5ZmlsZS5uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJy1iJywgdXBsb2Fk
aW5zdHJ1Y3Rpb25zZmlsZS5uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJyVzQCVz
JyAlIChyZW1vdGVfZGF0YVsndXNlcm5hbWUnXSwgcmVtb3RlX2RhdGFbJ3NlcnZlcmFkZHJlc3Mn
XSldCisgICAgICAgICAgICBfbG9nLmluZm8oJ1VwbG9hZGluZyBidW5kbGUgdG8gJXMgYXMgJXMg
d2l0aCBzaGEyNTYgaGFzaCAlcycgJSAocmVtb3RlX2RhdGFbJ3NlcnZlcm5hbWUnXSwgcmVtb3Rl
X2ZpbGVfYnVuZGxlX3BhdGgsIGhhc2hmb3JidW5kbGUpKQorICAgICAgICAgICAgc2Z0cF9vdXQg
PSBzdWJwcm9jZXNzLkRFVk5VTEwgaWYgc2VsZi5fc2Z0cF9xdWlldCBlbHNlIHN5cy5zdGRvdXQK
KyAgICAgICAgICAgIGlmIHN1YnByb2Nlc3MuY2FsbChzZnRwQ29tbWFuZCwgc3Rkb3V0PXNmdHBf
b3V0LCBzdGRlcnI9c2Z0cF9vdXQpICE9IDA6CisgICAgICAgICAgICAgICAgcmFpc2UgUnVudGlt
ZUVycm9yKCdUaGUgc2Z0cCBjb21tYW5kIHJldHVybmVkIG5vbi16ZXJvIHN0YXR1cycpCisKKyAg
ICAgICAgX2xvZy5sb2coTE9HX01FU1NBR0UsICdEb25lOiBhcmNoaXZlIHN1Y2VzZnVsbHkgdXBs
b2FkZWQgdG8gJXMvJXMnICUgKHJlbW90ZV9kYXRhWydiYXNldXJsJ10sIHJlbW90ZV9maWxlX2J1
bmRsZV9wYXRoKSkKKyAgICAgICAgcmV0dXJuIDAKKworCitkZWYgY29uZmlndXJlX2xvZ2dpbmco
c2VsZWN0ZWRfbG9nX2xldmVsPSdpbmZvJyk6CisKKyAgICBjbGFzcyBMb2dIYW5kbGVyKGxvZ2dp
bmcuU3RyZWFtSGFuZGxlcik6CisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzdHJlYW0pOgor
ICAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18oc3RyZWFtKQorCisgICAgICAgIGRlZiBmb3Jt
YXQoc2VsZiwgcmVjb3JkKToKKyAgICAgICAgICAgIGlmIHJlY29yZC5sZXZlbG5vID4gTE9HX01F
U1NBR0U6CisgICAgICAgICAgICAgICAgcmV0dXJuICclczogJXMnICUgKHJlY29yZC5sZXZlbG5h
bWUsIHJlY29yZC5nZXRNZXNzYWdlKCkpCisgICAgICAgICAgICByZXR1cm4gcmVjb3JkLmdldE1l
c3NhZ2UoKQorCisgICAgbG9nZ2luZy5hZGRMZXZlbE5hbWUoTE9HX01FU1NBR0UsICdNRVNTQUdF
JykKKyAgICBpZiBzZWxlY3RlZF9sb2dfbGV2ZWwgPT0gJ2RlYnVnJzoKKyAgICAgICAgbG9nX2xl
dmVsID0gbG9nZ2luZy5ERUJVRworICAgIGVsaWYgc2VsZWN0ZWRfbG9nX2xldmVsID09ICdpbmZv
JzoKKyAgICAgICAgbG9nX2xldmVsID0gbG9nZ2luZy5JTkZPCisgICAgZWxpZiBzZWxlY3RlZF9s
b2dfbGV2ZWwgPT0gJ3F1aWV0JzoKKyAgICAgICAgbG9nX2xldmVsID0gbG9nZ2luZy5OT1RTRVQK
KyAgICBlbGlmIHNlbGVjdGVkX2xvZ19sZXZlbCA9PSAnbWluaW1hbCc6CisgICAgICAgIGxvZ19s
ZXZlbCA9IGxvZ2dpbmcuZ2V0TGV2ZWxOYW1lKExPR19NRVNTQUdFKQorCisgICAgaGFuZGxlciA9
IExvZ0hhbmRsZXIoc3lzLnN0ZG91dCkKKyAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcihf
X25hbWVfXykKKyAgICBsb2dnZXIuYWRkSGFuZGxlcihoYW5kbGVyKQorICAgIGxvZ2dlci5zZXRM
ZXZlbChsb2dfbGV2ZWwpCisgICAgcmV0dXJuIGhhbmRsZXIKKworCitkZWYgbWFpbigpOgorICAg
IHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKCd1c2FnZTogJXByb2cgW29wdGlvbnNd
JykKKyAgICBjb25maWd1cmF0aW9uID0gcGFyc2VyLmFkZF9tdXR1YWxseV9leGNsdXNpdmVfZ3Jv
dXAocmVxdWlyZWQ9VHJ1ZSkKKyAgICBjb25maWd1cmF0aW9uLmFkZF9hcmd1bWVudCgnLS1kZWJ1
ZycsIGFjdGlvbj0nc3RvcmVfY29uc3QnLCBjb25zdD0nZGVidWcnLCBkZXN0PSdjb25maWd1cmF0
aW9uJykKKyAgICBjb25maWd1cmF0aW9uLmFkZF9hcmd1bWVudCgnLS1yZWxlYXNlJywgYWN0aW9u
PSdzdG9yZV9jb25zdCcsIGNvbnN0PSdyZWxlYXNlJywgZGVzdD0nY29uZmlndXJhdGlvbicpCisg
ICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1wbGF0Zm9ybScsIGRlc3Q9J3BsYXRmb3JtJywgY2hv
aWNlcz1bJ2d0aycsICd3cGUnXSwgcmVxdWlyZWQ9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGhlbHA9J1RoZSBXZWJLaXQgcG9ydCB0byBnZW5lcmF0ZSB0aGUgYnVuZGxlJykKKyAgICBw
YXJzZXIuYWRkX2FyZ3VtZW50KCctLWJ1bmRsZScsIGRlc3Q9J2J1bmRsZV9iaW5hcnknLCBjaG9p
Y2VzPVsnanNjJywgJ01pbmlCcm93c2VyJywgJ2FsbCddLCByZXF1aXJlZD1UcnVlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgaGVscD0nU2VsZWN0IHdoYXQgbWFpbiBiaW5hcnkgc2hvdWxkIGJl
IGluY2x1ZGVkIGluIHRoZSBidW5kbGUnKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tc3lz
bGlicycsIGRlc3Q9J3N5c2xpYnMnLCBjaG9pY2VzPVsnYnVuZGxlLWFsbCcsICdnZW5lcmF0ZS1p
bnN0YWxsLXNjcmlwdCddLCBkZWZhdWx0PSdnZW5lcmF0ZS1pbnN0YWxsLXNjcmlwdCcsCisgICAg
ICAgICAgICAgICAgICAgICAgICBoZWxwPSdJZiB2YWx1ZSBpcyAiYnVuZGxlLWFsbCIsIHRoZSBi
dW5kbGUgd2lsbCBpbmNsdWRlIF9hbGxfIHRoZSBzeXN0ZW0gbGlicmFyaWVzIGluc3RlYWQgb2Yg
YSBpbnN0YWxsLWRlcGVuZGVuY2llcyBzY3JpcHQuXG4nCisgICAgICAgICAgICAgICAgICAgICAg
ICAnSWYgdmFsdWUgaXMgImdlbmVyYXRlLWluc3RhbGwtc2NyaXB0IiwgdGhlIHN5c3RlbSBsaWJy
YXJpZXMgd2lsbCBub3QgYmUgYnVuZGxlZCBhbmQgYSBpbnN0YWxsLWRlcGVuZGVuY2llcyBzY3Jp
cHQgd2lsbCBiZSBnZW5lcmF0ZWQgZm9yIHRoaXMgZGlzdHJpYnV0aW9uLicpCisgICAgcGFyc2Vy
LmFkZF9hcmd1bWVudCgnLS1jb21wcmVzc2lvbicsIGRlc3Q9J2NvbXByZXNzaW9uJywgY2hvaWNl
cz1bJ3ppcCcsICd0YXIueHonXSwgZGVmYXVsdD0nemlwJykKKyAgICBwYXJzZXIuYWRkX2FyZ3Vt
ZW50KCctLWRlc3RpbmF0aW9uJywgYWN0aW9uPSdzdG9yZScsIGRlc3Q9J2Rlc3RpbmF0aW9uJywK
KyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J09wdGlvbmFsIHBhdGggd2VyZSB0byBzdG9y
ZSB0aGUgYnVuZGxlJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLW5vLXN0cmlwJywgYWN0
aW9uPSdzdG9yZV90cnVlJywgZGVzdD0nbm9fc3RyaXAnLAorICAgICAgICAgICAgICAgICAgICAg
ICAgaGVscD0nRG8gbm90IHN0cmlwIHRoZSBiaW5hcmllcyBhbmQgbGlicmFyaWVzIGluc2lkZSB0
aGUgYnVuZGxlJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWxvZy1sZXZlbCcsIGRlc3Q9
J2xvZ19sZXZlbCcsIGNob2ljZXM9WydxdWlldCcsICdtaW5pbWFsJywgJ2luZm8nLCAnZGVidWcn
XSwgZGVmYXVsdD0naW5mbycpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1yZXZpc2lvbics
IGFjdGlvbj0nc3RvcmUnLCBkZXN0PSd3ZWJraXRfdmVyc2lvbicpCisgICAgcGFyc2VyLmFkZF9h
cmd1bWVudCgnLS1idWlsZGVyLW5hbWUnLCBhY3Rpb249J3N0b3JlJywgZGVzdD0nYnVpbGRlcl9u
YW1lJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLXJlbW90ZS1jb25maWctZmlsZScsIGFj
dGlvbj0nc3RvcmUnLCBkZXN0PSdyZW1vdGVfY29uZmlnX2ZpbGUnLAorICAgICAgICAgICAgICAg
ICAgICAgICAgaGVscD0nT3B0aW9uYWwgY29uZmlndXJhdGlvbiBmaWxlIHdpdGggdGhlIGNvbmZp
Z3VyYXRpb24gbmVlZGVkIHRvIHVwbG9hZCB0aGUgZ2VuZXJhdGVkIHRoZSBidW5kbGUgdG8gYSBy
ZW1vdGUgc2VydmVyIHZpYSBzZnRwL3NzaC4nKQorICAgIG9wdGlvbnMgPSBwYXJzZXIucGFyc2Vf
YXJncygpCisKKyAgICBmbGF0cGFrdXRpbHMucnVuX2luX3NhbmRib3hfaWZfYXZhaWxhYmxlKFtz
eXMuYXJndlswXSwgJy0tZmxhdHBhay0nICsgb3B0aW9ucy5wbGF0Zm9ybV0gKyBzeXMuYXJndlsx
Ol0pCisgICAgaWYgbm90IGZsYXRwYWt1dGlscy5pc19zYW5kYm94ZWQoKToKKyAgICAgICAgamhi
dWlsZHV0aWxzLmVudGVyX2poYnVpbGRfZW52aXJvbm1lbnRfaWZfYXZhaWxhYmxlKG9wdGlvbnMu
cGxhdGZvcm0pCisKKyAgICBjb25maWd1cmVfbG9nZ2luZyhvcHRpb25zLmxvZ19sZXZlbCkKKyAg
ICBidW5kbGVfY3JlYXRvciA9IEJ1bmRsZUNyZWF0b3Iob3B0aW9ucy5jb25maWd1cmF0aW9uLCBv
cHRpb25zLnBsYXRmb3JtLCBvcHRpb25zLmJ1bmRsZV9iaW5hcnksIG9wdGlvbnMuc3lzbGlicywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90IG9wdGlvbnMubm9fc3RyaXAs
IG9wdGlvbnMuY29tcHJlc3Npb24sIG9wdGlvbnMuZGVzdGluYXRpb24sIG9wdGlvbnMud2Via2l0
X3ZlcnNpb24sIG9wdGlvbnMuYnVpbGRlcl9uYW1lKQorICAgIGJ1bmRsZV9maWxlX3BhdGggPSBi
dW5kbGVfY3JlYXRvci5jcmVhdGUoKQorCisgICAgaWYgb3B0aW9ucy5yZW1vdGVfY29uZmlnX2Zp
bGUgaXMgbm90IE5vbmU6CisgICAgICAgIGJ1bmRsZV91cGxvYWRlciA9IEJ1bmRsZVVwbG9hZGVy
KGJ1bmRsZV9maWxlX3BhdGgsIG9wdGlvbnMucmVtb3RlX2NvbmZpZ19maWxlLCBvcHRpb25zLmJ1
bmRsZV9iaW5hcnksIG9wdGlvbnMucGxhdGZvcm0sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG9wdGlvbnMuY29uZmlndXJhdGlvbiwgb3B0aW9ucy5jb21wcmVzc2lv
biwgb3B0aW9ucy53ZWJraXRfdmVyc2lvbiwgb3B0aW9ucy5sb2dfbGV2ZWwpCisgICAgICAgIHJl
dHVybiBidW5kbGVfdXBsb2FkZXIudXBsb2FkKCkKKyAgICByZXR1cm4gMAorCisKK2lmIF9fbmFt
ZV9fID09ICdfX21haW5fXyc6CisgICAgc3lzLmV4aXQobWFpbigpKQpkaWZmIC0tZ2l0IGEvVG9v
bHMvU2NyaXB0cy9nZW5lcmF0ZS1qc2MtYnVuZGxlIGIvVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1q
c2MtYnVuZGxlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAxMjNjODZmYzM2NGNjOGY4
OTVlMmE5NjgyZmYwOGUwZGI1N2Y3MGZhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtanNjLWJ1bmRsZQorKysgL2Rl
di9udWxsCkBAIC0xLDI1MCArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMKLSMgQ29w
eXJpZ2h0IChDKSAyMDE4IElnYWxpYSBTLkwuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlIG1ldDoKLSMKLSMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzCi0jICAgIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2Us
Ci0jICAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlIGRvY3VtZW50YXRpb24KLSMgICAgYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQK
LSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SCi0jIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotIyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
Ci0jIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORAotIyBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUwotIyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLQotaW1wb3J0IGJhc2U2NAotaW1wb3J0IGRhdGV0aW1lCi1pbXBv
cnQgaGFzaGxpYgotaW1wb3J0IGpzb24KLWltcG9ydCBvcHRwYXJzZQotaW1wb3J0IG9zCi1pbXBv
cnQgc2h1dGlsCi1pbXBvcnQgc3VicHJvY2VzcwotaW1wb3J0IHN5cwotaW1wb3J0IHRlbXBmaWxl
Ci1pbXBvcnQgemlwZmlsZQotCi10b3BfbGV2ZWxfZGlyZWN0b3J5ID0gb3MucGF0aC5ub3JtcGF0
aChvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgJy4uJywgJy4uJykpCi1z
eXMucGF0aC5pbnNlcnQoMCwgb3MucGF0aC5qb2luKHRvcF9sZXZlbF9kaXJlY3RvcnksICdUb29s
cycsICdmbGF0cGFrJykpCi1zeXMucGF0aC5pbnNlcnQoMCwgb3MucGF0aC5qb2luKHRvcF9sZXZl
bF9kaXJlY3RvcnksICdUb29scycsICdqaGJ1aWxkJykpCi1pbXBvcnQgamhidWlsZHV0aWxzCi1p
bXBvcnQgZmxhdHBha3V0aWxzCi0KLQotIyBJZGVhbGx5IHdlIHNob3VsZCB1c2Ugc29tZXRoaW5n
IGxpa2UgbGRkdHJlZSBvciBjcmVhdGUgb3VyIG93biB2ZXJzaW9uIG9mIHRoYXQKLSMgQnV0IGlu
IHByYWN0aWNlIGZvciBqc2MgYnVuZGxlcyB0aGVyZSBpc24ndCByZWN1cnNpdmUgbGlicmFyeSBl
bnRyaWVzLCBzbyB3ZQotIyB1c2Ugc3RhbmRhcmQgbGRkIGhlcmUganVzdCB0byBhdm9pZCBoYXZp
bmcgdG8gcmVxdWlyZSBsZGR0cmVlLgotZGVmIGxkZF9nZXRfbGlic19hbmRfaW50ZXJwcmV0ZXIo
YmluYXJ5KToKLSAgICBsZGRDb21tYW5kID0gWydsZGQnLCBiaW5hcnldCi0gICAgbGRkUHJvY2Vz
cyA9IHN1YnByb2Nlc3MuUG9wZW4obGRkQ29tbWFuZCwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwg
c3RkZXJyPXN1YnByb2Nlc3MuU1RET1VUKQotICAgIHN0ZG91dCwgc3RkZXJyID0gbGRkUHJvY2Vz
cy5jb21tdW5pY2F0ZSgpCi0gICAgaWYgbGRkUHJvY2Vzcy5yZXR1cm5jb2RlICE9IDA6Ci0gICAg
ICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignVGhlIGxkZCBjb21tYW5kIHJldHVybmVkIG5vbi16ZXJv
IHN0YXR1cycpCi0gICAgbGlicyA9IFtdCi0gICAgZm9yIGxpbmUgaW4gc3Rkb3V0LnNwbGl0bGlu
ZXMoKToKLSAgICAgICAgbGluZSA9IGxpbmUuc3RyaXAoKQotICAgICAgICBpZiAnPT4nIGluIGxp
bmU6Ci0gICAgICAgICAgICBsaW5lID0gbGluZS5zcGxpdCgnPT4nKVsxXS5zdHJpcCgpCi0gICAg
ICAgICAgICBpZiAnbm90IGZvdW5kJyBpbiBsaW5lOgotICAgICAgICAgICAgICAgIHJhaXNlIFJ1
bnRpbWVFcnJvcignU29tZSBkZXBlbmRlbmNpZXMgY2FuIG5vdCBiZSBmb3VuZCB3aXRoIGxkZC4n
KQotICAgICAgICAgICAgbGluZSA9IGxpbmUuc3BsaXQoJyAnKVswXS5zdHJpcCgpCi0gICAgICAg
ICAgICBpZiBvcy5wYXRoLmlzZmlsZShsaW5lKToKLSAgICAgICAgICAgICAgICBsaWJzLmFwcGVu
ZChsaW5lKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgbGluZSA9IGxpbmUuc3BsaXQoJyAn
KVswXS5zdHJpcCgpCi0gICAgICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShsaW5lKToKLSAgICAg
ICAgICAgICAgICBpbnRlcnByZXRlciA9IGxpbmUKLSAgICByZXR1cm4gbGlicywgaW50ZXJwcmV0
ZXIKLQotCi1kZWYgZ2VuZXJhdGVfcmVhZG1lKGJ1bmRsZVRtcERpciwgYnVpbGRlck5hbWUsIGNv
bmZpZ3VyYXRpb24sIHBsYXRmb3JtLCByZXZpc2lvbik6Ci0gICAgcHJpbnQoJ0dlbmVyYXRlIFJF
QURNRS50eHQgZmlsZScpCi0gICAgcmVhZG1lRmlsZSA9IG9zLnBhdGguam9pbihidW5kbGVUbXBE
aXIsICdSRUFETUUudHh0JykKLSAgICB3aXRoIG9wZW4ocmVhZG1lRmlsZSwgJ3cnKSBhcyByZWFk
bWVIYW5kbGU6Ci0gICAgICAgIHJlYWRtZUhhbmRsZS53cml0ZSgnSlNDIGJ1bmRsZSBkZXRhaWxz
XG4nKQotICAgICAgICByZWFkbWVIYW5kbGUud3JpdGUoJyBCdWlsZGVyIG5hbWU6ICVzXG4nICUg
YnVpbGRlck5hbWUpCi0gICAgICAgIHJlYWRtZUhhbmRsZS53cml0ZSgnIEJ1aWxkZXIgZGF0ZTog
JXNcbicgJSBkYXRldGltZS5kYXRldGltZS5ub3coKS5pc29mb3JtYXQoKSkKLSAgICAgICAgcmVh
ZG1lSGFuZGxlLndyaXRlKCcgQ29uZmlndXJhdGlvbjogJXNcbicgJSBjb25maWd1cmF0aW9uKQot
ICAgICAgICByZWFkbWVIYW5kbGUud3JpdGUoJyBXZWJLaXQgUGxhdGZvcm06ICVzXG4nICUgcGxh
dGZvcm0pCi0gICAgICAgIHJlYWRtZUhhbmRsZS53cml0ZSgnIFdlYktpdCBSZXZpc2lvbjogJXNc
bicgJSByZXZpc2lvbikKLSAgICAgICAgcmVhZG1lSGFuZGxlLndyaXRlKCdcbkluc3RydWN0aW9u
czogRXhlY3V0ZSB0aGUgcnVuLWpzYyB3cmFwcGVyIHNjcmlwdC5cbicpCi0gICAgcmV0dXJuIFRy
dWUKLQotCi1kZWYgZ2VuZXJhdGVfd3JhcHBlcl9zY3JpcHQoYnVuZGxlVG1wRGlyLCBpbnRlcnBy
ZXRlcik6Ci0gICAgcHJpbnQoJ0dlbmVyYXRlIHdyYXBwZXIgc2NyaXB0IHJ1bi1qc2MnKQotICAg
IHNjcmlwdEZpbGUgPSBvcy5wYXRoLmpvaW4oYnVuZGxlVG1wRGlyLCAncnVuLWpzYycpCi0gICAg
d2l0aCBvcGVuKHNjcmlwdEZpbGUsICd3JykgYXMgc2NyaXB0SGFuZGxlOgotICAgICAgICBzY3Jp
cHRIYW5kbGUud3JpdGUoJyMhL2Jpbi9zaFxuJykKLSAgICAgICAgc2NyaXB0SGFuZGxlLndyaXRl
KCdNWURJUj0iJChkaXJuYW1lICQocmVhZGxpbmsgLWYgJDApKSJcbicpCi0gICAgICAgIHNjcmlw
dEhhbmRsZS53cml0ZSgnZXhwb3J0IExEX0xJQlJBUllfUEFUSD0iJHtNWURJUn0vbGliIlxuJykK
LSAgICAgICAgc2NyaXB0SGFuZGxlLndyaXRlKCdleGVjICIke01ZRElSfS9saWIvJXMiICIke01Z
RElSfS9iaW4vanNjIiAiJEAiXG4nICUgb3MucGF0aC5iYXNlbmFtZShpbnRlcnByZXRlcikpCi0g
ICAgb3MuY2htb2Qoc2NyaXB0RmlsZSwgMDc1NSkKLQotCi1kZWYgY29weV9hbmRfcmVtb3ZlX3Jw
YXRoKG9yaWdGaWxlLCBkZXN0aW5hdGlvbkRpciwgdHlwZT0nYmluJyk6Ci0gICAgaWYgbm90IG9z
LnBhdGguaXNmaWxlKG9yaWdGaWxlKToKLSAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignQ2FuIG5v
dCBmaW5kIGZpbGUgJXMnICUgb3JpZ0ZpbGUpCi0gICAgcHJpbnQoJ0NvcHkgdG8gYnVuZGxlIFsl
c106ICVzJyAlICh0eXBlLCBvcmlnRmlsZSkpCi0gICAgc2h1dGlsLmNvcHkob3JpZ0ZpbGUsIGRl
c3RpbmF0aW9uRGlyKQotICAgIHRyeToKLSAgICAgICAgcGF0Y2hFbGZDb21tYW5kID0gWydwYXRj
aGVsZicsICctLXJlbW92ZS1ycGF0aCcsIG9zLnBhdGguam9pbihkZXN0aW5hdGlvbkRpciwgb3Mu
cGF0aC5iYXNlbmFtZShvcmlnRmlsZSkpXQotICAgICAgICBpZiBzdWJwcm9jZXNzLmNhbGwocGF0
Y2hFbGZDb21tYW5kKSAhPSAwOgotICAgICAgICAgICAgcHJpbnQoJ1dBUk5JTkc6IFRoZSBwYXRj
aGVsZiBjb21tYW5kIHJldHVybmVkIG5vbi16ZXJvIHN0YXR1cycpCi0gICAgZXhjZXB0IE9TRXJy
b3IgYXMgZToKLSAgICAgICAgaWYgZS5lcnJubyA9PSBvcy5lcnJuby5FTk9FTlQ6Ci0gICAgICAg
ICAgICBwcmludCgnV0FSTklORzogcGF0Y2hlbGYgbm90IGZvdW5kLiBOb3QgbW9kaWZ5aW5nIHJw
YXRoJykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJhaXNlCi0KLQotZGVmIGNyZWF0ZUpT
Q0J1bmRsZShjb25maWd1cmF0aW9uLCByZXZpc2lvbj1Ob25lLCBidWlsZGVyTmFtZT1Ob25lLCBw
bGF0Zm9ybT1Ob25lKToKLSAgICBidWlsZERpciA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpv
aW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgJy4uJywgJy4uJywgJ1dlYktpdEJ1aWxkJykp
Ci0gICAgYmluRGlyID0gb3MucGF0aC5qb2luKGJ1aWxkRGlyLCBjb25maWd1cmF0aW9uLmNhcGl0
YWxpemUoKSwgJ2JpbicpCi0gICAgbGliRGlyID0gb3MucGF0aC5qb2luKGJ1aWxkRGlyLCBjb25m
aWd1cmF0aW9uLmNhcGl0YWxpemUoKSwgJ2xpYicpCi0gICAganNjQmluYXJ5ID0gb3MucGF0aC5q
b2luKGJpbkRpciwgJ2pzYycpCi0gICAgaWYgbm90IG9zLnBhdGguaXNmaWxlKGpzY0JpbmFyeSkg
b3Igbm90IG9zLmFjY2Vzcyhqc2NCaW5hcnksIG9zLlhfT0spOgotICAgICAgICByYWlzZSBWYWx1
ZUVycm9yKCdDYW5ub3QgZmluZCBqc2MgYXQgJXMnICUganNjQmluYXJ5KQotCi0gICAgIyBEZWZp
bmUgbmFtZXMgYW5kIHBhdGhzIGZvciB0aGUgZ2VuZXJhdGlvbiBvZiB0aGUgYnVuZGxlLgotICAg
IGJ1bmRsZVRtcERpciA9IG9zLnBhdGguam9pbihidWlsZERpciwgJ2pzY190bXAnKQotICAgIGJ1
bmRsZVRtcExpYkRpciA9IG9zLnBhdGguam9pbihidW5kbGVUbXBEaXIsICdsaWInKQotICAgIGJ1
bmRsZVRtcEJpbkRpciA9IG9zLnBhdGguam9pbihidW5kbGVUbXBEaXIsICdiaW4nKQotICAgIGJ1
bmRsZUZpbGVOYW1lID0gJ2pzY18nICsgY29uZmlndXJhdGlvbgotICAgIGJ1bmRsZUZpbGVDb21w
cmVzc2VkID0gb3MucGF0aC5qb2luKGJ1aWxkRGlyLCBidW5kbGVGaWxlTmFtZSArICcuemlwJykK
LQotICAgICMgQ2xlYW4gZXZlcnl0aGluZyBmcm9tIHByZXZpb3VzIHJ1bnMKLSAgICBpZiBvcy5w
YXRoLmlzZGlyKGJ1bmRsZVRtcERpcik6Ci0gICAgICAgIHNodXRpbC5ybXRyZWUoYnVuZGxlVG1w
RGlyKQotICAgIGlmIG9zLnBhdGguaXNmaWxlKGJ1bmRsZUZpbGVDb21wcmVzc2VkKToKLSAgICAg
ICAgb3MucmVtb3ZlKGJ1bmRsZUZpbGVDb21wcmVzc2VkKQotCi0gICAgIyBDcmVhdGUgYnVuZGxl
VG1wRGlyIGFuZCBwdXQgdGhlcmUgZXZlcnl0aGluZyBuZWVkZWQuCi0gICAgb3MubWFrZWRpcnMo
YnVuZGxlVG1wRGlyKQotICAgIG9zLm1ha2VkaXJzKGJ1bmRsZVRtcExpYkRpcikKLSAgICBvcy5t
YWtlZGlycyhidW5kbGVUbXBCaW5EaXIpCi0gICAgY29weV9hbmRfcmVtb3ZlX3JwYXRoKGpzY0Jp
bmFyeSwgYnVuZGxlVG1wQmluRGlyLCB0eXBlPSdiaW4nKQotICAgIGxpYnJhcmllcywgaW50ZXJw
cmV0ZXIgPSBsZGRfZ2V0X2xpYnNfYW5kX2ludGVycHJldGVyKGpzY0JpbmFyeSkKLSAgICBjb3B5
X2FuZF9yZW1vdmVfcnBhdGgoaW50ZXJwcmV0ZXIsIGJ1bmRsZVRtcExpYkRpciwgdHlwZT0naW50
ZXJwcmV0ZXInKQotICAgIGZvciBsaWJyYXJ5IGluIGxpYnJhcmllczoKLSAgICAgICAgY29weV9h
bmRfcmVtb3ZlX3JwYXRoKGxpYnJhcnksIGJ1bmRsZVRtcExpYkRpciwgdHlwZT0nbGliJykKLSAg
ICBnZW5lcmF0ZV9yZWFkbWUoYnVuZGxlVG1wRGlyLCBidWlsZGVyTmFtZSwgY29uZmlndXJhdGlv
biwgcGxhdGZvcm0sIHJldmlzaW9uKQotICAgIGdlbmVyYXRlX3dyYXBwZXJfc2NyaXB0KGJ1bmRs
ZVRtcERpciwgaW50ZXJwcmV0ZXIpCi0KLSAgICAjIGpzdnUgcHJvamVjdCBwcmVmZXJzIC56aXAg
cmF0aGVyIHRoYW4gLnRhci54egotICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKGJ1bmRsZUZpbGVD
b21wcmVzc2VkLCAndycsIGNvbXByZXNzaW9uPXppcGZpbGUuWklQX0RFRkxBVEVEKSBhcyB6aXBI
YW5kbGU6Ci0gICAgICAgIGZvciBkaXJuYW1lLCBzdWJkaXJzLCBmaWxlcyBpbiBvcy53YWxrKGJ1
bmRsZVRtcERpcik6Ci0gICAgICAgICAgICBmb3IgZmlsZW5hbWUgaW4gZmlsZXM6Ci0gICAgICAg
ICAgICAgICAgc3lzdGVtRmlsZVBhdGggPSBvcy5wYXRoLmpvaW4oZGlybmFtZSwgZmlsZW5hbWUp
Ci0gICAgICAgICAgICAgICAgemlwRmlsZVBhdGggPSBzeXN0ZW1GaWxlUGF0aC5yZXBsYWNlKGJ1
bmRsZVRtcERpciwgJycsIDEpLmxzdHJpcCgnLycpCi0gICAgICAgICAgICAgICAgemlwSGFuZGxl
LndyaXRlKHN5c3RlbUZpbGVQYXRoLCB6aXBGaWxlUGF0aCkKLQotICAgIGlmIG5vdCBvcy5wYXRo
LmlzZmlsZShidW5kbGVGaWxlQ29tcHJlc3NlZCk6Ci0gICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJv
cignVW5hYmxlIHRvIGNyZWF0ZSB0aGUgZmlsZSAlcycgJSBidW5kbGVGaWxlQ29tcHJlc3NlZCkK
LSAgICByZXR1cm4gYnVuZGxlRmlsZUNvbXByZXNzZWQKLQotCi1kZWYgc2hhMjU2c3VtKGJ1bmRs
ZUZpbGVQYXRoKToKLSAgICBoYXNoID0gaGFzaGxpYi5zaGEyNTYoKQotICAgIHdpdGggb3Blbihi
dW5kbGVGaWxlUGF0aCwgJ3JiJykgYXMgZjoKLSAgICAgICAgZm9yIGNodW5rIGluIGl0ZXIobGFt
YmRhOiBmLnJlYWQoNDA5NiksIGInJyk6Ci0gICAgICAgICAgICBoYXNoLnVwZGF0ZShjaHVuaykK
LSAgICByZXR1cm4gaGFzaC5oZXhkaWdlc3QoKQotCi0KLSMgVGhlIGV4cGVjdGVkIGZvcm1hdCBm
b3IgLS1yZW1vdGUtY29uZmlnLWZpbGUgaXMgc29tZXRoaW5nIGxpa2U6Ci0jIHsKLSMgInNlcnZl
cm5hbWUiOiAid2Via2l0Z3RrLm9yZyIsCi0jICJzZXJ2ZXJhZGRyZXNzIjogIndlYmtpdGd0ay5p
bnRyYW5ldC1hZGRyZXNzLmxvY2FsIiwKLSMgInNlcnZlcnBvcnQiOiAiMjMiLAotIyAidXNlcm5h
bWUiOiAidXBsb2FkLWJvdC02NCIsCi0jICJiYXNldXJsIjogImh0dHBzOi8vd2Via2l0Z3RrLm9y
Zy9qc2MtYnVpbHQtcHJvZHVjdHMveDg2XzY0IiwKLSMgInNzaGtleSI6ICJvdXRwdXQgb2YgdGhl
IHByaXYga2V5IGluIGJhc2U2NC4gRS5nLiBjYXQgfi8uc3NoL2lkX3JzYXxiYXNlNjQgLXcwIgot
IyB9Ci1kZWYgdXBsb2FkSlNDQnVuZGxlKGJ1bmRsZUZpbGVQYXRoLCByZW1vdGVDb25maWdGaWxl
LCBjb25maWd1cmF0aW9uLCByZXZpc2lvbik6Ci0gICAgcmVtb3RlRGF0YSA9IGpzb24ubG9hZChv
cGVuKHJlbW90ZUNvbmZpZ0ZpbGUpKQotICAgIHJlbW90ZUZpbGVOYW1lID0gc3RyKHJldmlzaW9u
KSArICcuemlwJwotICAgIHJlbW90ZUZpbGVCdW5kbGVQYXRoTmFtZSA9IG9zLnBhdGguam9pbihj
b25maWd1cmF0aW9uLCByZW1vdGVGaWxlTmFtZSkKLSAgICByZW1vdGVGaWxlSGFzaFBhdGhOYW1l
ID0gb3MucGF0aC5qb2luKGNvbmZpZ3VyYXRpb24sIHN0cihyZXZpc2lvbikgKyAnLnNoYTI1NnN1
bScpCi0gICAgd2l0aCB0ZW1wZmlsZS5OYW1lZFRlbXBvcmFyeUZpbGUoKSBhcyBzc2hrZXlmaWxl
OgotICAgICAgICAjIEluIHRoZW9yeSBOYW1lZFRlbXBvcmFyeUZpbGUoKSBpcyBhbHJlYWR5IGNy
ZWF0ZWQgMDYwMC4gQnV0IGl0IGRvbid0IGh1cnRzIGVuc3VyaW5nIHRoaXMgYWdhaW4gaGVyZS4K
LSAgICAgICAgb3MuY2htb2Qoc3Noa2V5ZmlsZS5uYW1lLCAwNjAwKQotICAgICAgICBzc2hrZXlm
aWxlLndyaXRlKGJhc2U2NC5iNjRkZWNvZGUocmVtb3RlRGF0YVsnc3Noa2V5J10pKQotICAgICAg
ICBzc2hrZXlmaWxlLmZsdXNoKCkKLSAgICAgICAgIyBHZW5lcmF0ZSBhbmQgdXBsb2FkIGFsc28g
YSBzaGEyNTYgaGFzaAotICAgICAgICB3aXRoIHRlbXBmaWxlLk5hbWVkVGVtcG9yYXJ5RmlsZSgp
IGFzIGhhc2hjaGVja2ZpbGU6Ci0gICAgICAgICAgICBoYXNoZm9yYnVuZGxlID0gc2hhMjU2c3Vt
KGJ1bmRsZUZpbGVQYXRoKQotICAgICAgICAgICAgb3MuY2htb2QoaGFzaGNoZWNrZmlsZS5uYW1l
LCAwNjQ0KQotICAgICAgICAgICAgaGFzaGNoZWNrZmlsZS53cml0ZSgnJXMgJXNcbicgJSAoaGFz
aGZvcmJ1bmRsZSwgcmVtb3RlRmlsZU5hbWUpKQotICAgICAgICAgICAgaGFzaGNoZWNrZmlsZS5m
bHVzaCgpCi0gICAgICAgICAgICB3aXRoIHRlbXBmaWxlLk5hbWVkVGVtcG9yYXJ5RmlsZSgpIGFz
IHVwbG9hZGluc3RydWN0aW9uc2ZpbGU6Ci0gICAgICAgICAgICAgICAgdXBsb2FkaW5zdHJ1Y3Rp
b25zZmlsZS53cml0ZSgncHJvZ3Jlc3NcbicpCi0gICAgICAgICAgICAgICAgdXBsb2FkaW5zdHJ1
Y3Rpb25zZmlsZS53cml0ZSgncHV0ICVzICVzXG4nICUgKGJ1bmRsZUZpbGVQYXRoLCByZW1vdGVG
aWxlQnVuZGxlUGF0aE5hbWUpKQotICAgICAgICAgICAgICAgIHVwbG9hZGluc3RydWN0aW9uc2Zp
bGUud3JpdGUoJ3B1dCAlcyAlc1xuJyAlIChoYXNoY2hlY2tmaWxlLm5hbWUsIHJlbW90ZUZpbGVI
YXNoUGF0aE5hbWUpKQotICAgICAgICAgICAgICAgIHVwbG9hZGluc3RydWN0aW9uc2ZpbGUud3Jp
dGUoJ3F1aXRcbicpCi0gICAgICAgICAgICAgICAgdXBsb2FkaW5zdHJ1Y3Rpb25zZmlsZS5mbHVz
aCgpCi0gICAgICAgICAgICAgICAgIyBUaGUgaWRlYSBvZiB0aGlzIGlzIHRvIGVuc3VyZSBzY3Ag
ZG9lc24ndCBhc2sgYW55IHF1ZXN0aW9uIChub3QgZXZlbiBvbiB0aGUgZmlyc3QgcnVuKS4KLSAg
ICAgICAgICAgICAgICAjIFRoaXMgc2hvdWxkIGJlIHNlY3VyZSBlbm91Z2ggYWNjb3JkaW5nIHRv
IGh0dHBzOi8vd3d3LmdyZW13ZWxsLmNvbS9zc2gtbWl0bS1wdWJsaWMta2V5LWF1dGhlbnRpY2F0
aW9uCi0gICAgICAgICAgICAgICAgc2Z0cENvbW1hbmQgPSBbJ3NmdHAnLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICctbycsICdTdHJpY3RIb3N0S2V5Q2hlY2tpbmc9bm8nLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICctbycsICdVc2VyS25vd25Ib3N0c0ZpbGU9L2Rl
di9udWxsJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLW8nLCAnTG9nTGV2ZWw9
RVJST1InLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctUCcsIHJlbW90ZURhdGFb
J3NlcnZlcnBvcnQnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLWknLCBzc2hr
ZXlmaWxlLm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy1iJywgdXBsb2Fk
aW5zdHJ1Y3Rpb25zZmlsZS5uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcl
c0AlcycgJSAocmVtb3RlRGF0YVsndXNlcm5hbWUnXSwgcmVtb3RlRGF0YVsnc2VydmVyYWRkcmVz
cyddKV0KLSAgICAgICAgICAgICAgICBwcmludCgnVXBsb2FkaW5nIGJ1bmRsZSB0byAlcyBhcyAl
cyB3aXRoIHNoYTI1NiBoYXNoICVzJyAlIChyZW1vdGVEYXRhWydzZXJ2ZXJuYW1lJ10sIHJlbW90
ZUZpbGVCdW5kbGVQYXRoTmFtZSwgaGFzaGZvcmJ1bmRsZSkpCi0gICAgICAgICAgICAgICAgaWYg
c3VicHJvY2Vzcy5jYWxsKHNmdHBDb21tYW5kKSAhPSAwOgotICAgICAgICAgICAgICAgICAgICBy
YWlzZSBSdW50aW1lRXJyb3IoJ1RoZSBzZnRwIGNvbW1hbmQgcmV0dXJuZWQgbm9uLXplcm8gc3Rh
dHVzJykKLQotICAgIHByaW50KCdEb25lOiBhcmNoaXZlIHN1Y2VzZnVsbHkgdXBsb2FkZWQgdG8g
JXMvJXMnICUgKHJlbW90ZURhdGFbJ2Jhc2V1cmwnXSwgcmVtb3RlRmlsZUJ1bmRsZVBhdGhOYW1l
KSkKLSAgICByZXR1cm4gMAotCi0KLWRlZiBtYWluKCk6Ci0gICAgcGFyc2VyID0gb3B0cGFyc2Uu
T3B0aW9uUGFyc2VyKCd1c2FnZTogJXByb2cgW29wdGlvbnNdJykKLSAgICBwYXJzZXIuYWRkX29w
dGlvbignLS1wbGF0Zm9ybScsIGRlc3Q9J3BsYXRmb3JtJykKLSAgICBwYXJzZXIuYWRkX29wdGlv
bignLS1kZWJ1ZycsIGFjdGlvbj0nc3RvcmVfY29uc3QnLCBjb25zdD0nZGVidWcnLCBkZXN0PSdj
b25maWd1cmF0aW9uJykKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLS1yZWxlYXNlJywgYWN0aW9u
PSdzdG9yZV9jb25zdCcsIGNvbnN0PSdyZWxlYXNlJywgZGVzdD0nY29uZmlndXJhdGlvbicpCi0g
ICAgcGFyc2VyLmFkZF9vcHRpb24oJy0tcmV2aXNpb24nLCBhY3Rpb249J3N0b3JlJywgdHlwZT0n
c3RyaW5nJywgZGVzdD0ncmV2aXNpb24nKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCctLWJ1aWxk
ZXItbmFtZScsIGFjdGlvbj0nc3RvcmUnLCB0eXBlPSdzdHJpbmcnLCBkZXN0PSdidWlsZGVybmFt
ZScpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy0tcmVtb3RlLWNvbmZpZy1maWxlJywgYWN0aW9u
PSdzdG9yZScsICB0eXBlPSdzdHJpbmcnLCBkZXN0PSdyZW1vdGVDb25maWdGaWxlJykKLSAgICBv
cHRpb25zLCBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQotCi0gICAgaWYgbm90IG9wdGlvbnMu
cGxhdGZvcm06Ci0gICAgICAgIHBhcnNlci5lcnJvcignUGxhdGZvcm0gaXMgcmVxdWlyZWQnKQot
ICAgICAgICByZXR1cm4gMQotICAgIGlmIG5vdCBvcHRpb25zLmNvbmZpZ3VyYXRpb246Ci0gICAg
ICAgIHBhcnNlci5lcnJvcignQ29uZmlndXJhdGlvbiBpcyByZXF1aXJlZCcpCi0gICAgICAgIHJl
dHVybiAxCi0KLSAgICBwbGF0Zm9ybSA9IG9wdGlvbnMucGxhdGZvcm0ubG93ZXIoKQotICAgIGNv
bmZpZ3VyYXRpb24gPSBvcHRpb25zLmNvbmZpZ3VyYXRpb24ubG93ZXIoKQotICAgIGlmIHBsYXRm
b3JtID09ICdndGsnOgotICAgICAgICBmbGF0cGFrdXRpbHMucnVuX2luX3NhbmRib3hfaWZfYXZh
aWxhYmxlKHN5cy5hcmd2KQotICAgICAgICBpZiBub3QgZmxhdHBha3V0aWxzLmlzX3NhbmRib3hl
ZCgpOgotICAgICAgICAgICAgamhidWlsZHV0aWxzLmVudGVyX2poYnVpbGRfZW52aXJvbm1lbnRf
aWZfYXZhaWxhYmxlKCJndGsiKQotICAgIGVsc2U6Ci0gICAgICAgIHJhaXNlIE5vdEltcGxlbWVu
dGVkRXJyb3IoJ1Vuc3VwcG9ydGVkIHBsYXRmb3JtJykKLQotICAgIGJ1bmRsZUZpbGVQYXRoID0g
Y3JlYXRlSlNDQnVuZGxlKGNvbmZpZ3VyYXRpb24sIG9wdGlvbnMucmV2aXNpb24sIG9wdGlvbnMu
YnVpbGRlcm5hbWUsIHBsYXRmb3JtKQotICAgIHByaW50KCdCdW5kbGUgZmlsZSBjcmVhdGVkIGF0
OiAlcycgJSBidW5kbGVGaWxlUGF0aCkKLSAgICBpZiBvcHRpb25zLnJlbW90ZUNvbmZpZ0ZpbGUg
aXMgbm90IE5vbmU6Ci0gICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzZmlsZShvcHRpb25zLnJlbW90
ZUNvbmZpZ0ZpbGUpOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQ2FuJ3QgZmluZCBy
ZW1vdGUgY29uZmlnIGZpbGUgZm9yIHVwbG9hZCBhdCBwYXRoICVzIiAlIG9wdGlvbnMucmVtb3Rl
Q29uZmlnRmlsZSkKLSAgICAgICAgcmV0dXJuIHVwbG9hZEpTQ0J1bmRsZShidW5kbGVGaWxlUGF0
aCwgb3B0aW9ucy5yZW1vdGVDb25maWdGaWxlLCBvcHRpb25zLmNvbmZpZ3VyYXRpb24sIG9wdGlv
bnMucmV2aXNpb24pCi0gICAgcmV0dXJuIDAKLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18n
OgotICAgIHN5cy5leGl0KG1haW4oKSkKZGlmZiAtLWdpdCBhL1Rvb2xzL2poYnVpbGQvamhidWls
ZHV0aWxzLnB5IGIvVG9vbHMvamhidWlsZC9qaGJ1aWxkdXRpbHMucHkKaW5kZXggYzJlMDgxODVh
MmUyODBmZjc5YTQxNDY0NjI1MDAxNTMyNjQ2NTFjNS4uNzYxZTM2NGQ1NWMzNzdiOTNmZWNlZjg2
MDM5NzNjNzBhZjI5MTI1YSAxMDA2NDQKLS0tIGEvVG9vbHMvamhidWlsZC9qaGJ1aWxkdXRpbHMu
cHkKKysrIGIvVG9vbHMvamhidWlsZC9qaGJ1aWxkdXRpbHMucHkKQEAgLTUzLDcgKzUzLDcgQEAg
ZGVmIGVudGVyX2poYnVpbGRfZW52aXJvbm1lbnRfaWZfYXZhaWxhYmxlKHBsYXRmb3JtKToKICAg
ICB0cnk6CiAgICAgICAgIGltcG9ydCBqaGJ1aWxkLmNvbmZpZwogICAgICAgICBmcm9tIGpoYnVp
bGQuZXJyb3JzIGltcG9ydCBGYXRhbEVycm9yCi0gICAgICAgIGdldHRleHQuaW5zdGFsbCgnamhi
dWlsZCcsIGxvY2FsZWRpcj1vcy5wYXRoLmpvaW4oc291cmNlX3BhdGgsICdtbycpLCB1bmljb2Rl
PVRydWUpCisgICAgICAgIGdldHRleHQuaW5zdGFsbCgnamhidWlsZCcsIGxvY2FsZWRpcj1vcy5w
YXRoLmpvaW4oc291cmNlX3BhdGgsICdtbycpKQogICAgICAgICBjb25maWcgPSBqaGJ1aWxkLmNv
bmZpZy5Db25maWcoZ2V0X2NvbmZpZ19maWxlX2Zvcl9wbGF0Zm9ybShwbGF0Zm9ybSksIFtdKQog
ICAgIGV4Y2VwdCBGYXRhbEVycm9yIGFzIGV4Y2VwdGlvbjoKICAgICAgICAgc3lzLnN0ZGVyci53
cml0ZSgnQ291bGQgbm90IGxvYWQgamhidWlsZCBjb25maWcgZmlsZTogJXNcbicgJSBleGNlcHRp
b24uYXJnc1swXSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>406175</attachid>
            <date>2020-08-07 08:13:39 -0700</date>
            <delta_ts>2020-08-25 16:39:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215266-20200807171337.patch</filename>
            <type>text/plain</type>
            <size>51330</size>
            <attacher name="Carlos Alberto Lopez Perez">clopez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1MzY5CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZWQ2YTQ3MTc2YWM1NmRmZDA2YWY2MjExNzI5ZTAxNGIz
M2RlMzE4ZC4uYzdjNDBjZDg2ZDFkNDIwYWU5OGE3NmNiMGQxYzJkOTIzN2NmYmJkYSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMy
IEBACisyMDIwLTA4LTA3ICBDYXJsb3MgQWxiZXJ0byBMb3BleiBQZXJleiAgPGNsb3BlekBpZ2Fs
aWEuY29tPgorCisgICAgICAgIFtHVEtdW1dQRV0gQWRkIGEgc2NyaXB0IGZvciBnZW5lcmF0aW5n
IE1pbmlCcm93c2VyIGJ1bmRsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxNTI2NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoaXMgY29udmVydHMgdGhlIHByZXZpb3VzIGdlbmVyYXRlLWpzYy1idW5k
bGUgaW50byBhIG5ldyBzY3JpcHQKKyAgICAgICAgdGhhdCBpcyBub3cgYWJsZSB0byBkbyB0aGUg
Zm9sbG93aW5nOgorICAgICAgICAgLSBnZW5lcmF0ZSBhIGpzYyBidW5kbGUKKyAgICAgICAgIC0g
Z2VuZXJhdGUgYSBNaW5pQnJvd3NlIGJ1bmRsZQorICAgICAgICAgLSBnZW5lcmF0ZSBhbiBhbGwg
YnVuZGxlIChqc2MrTWluaUJyb3dzZXIpCisgICAgICAgIFRoZSBidW5kbGUgY2FuIGluY2x1ZGUg
YWxsIHRoZSBzeXN0ZW0tbGlicmFyaWVzIGZyb20gdGhlIHN5c3RlbSwKKyAgICAgICAgc28gdGhh
dCB3YXkgKGluIHRoZW9yeSkgdGhlIGJ1bmRsZSB3b3VsZCBydW4gb24gYW55IG90aGVyIGRpc3Ry
aWJ1dGlvbgorICAgICAgICBvciBpdCBjYW4gZ2VuZXJhdGUgYW4gaW5zdGFsbC1kZXBlbmRlbmNp
ZXMgc2NyaXB0IHNvIGl0IGdlbmVyYXRlcworICAgICAgICBhIGxpZ2h0d2VpZ2h0IGJ1bmRsZSB3
aXRoIG9ubHkgdGhlIG1pbmltdW0gbGlicmFyaWVzIGluY2x1ZGVkIHRoYXQKKyAgICAgICAgd291
bGQgcnVuIG9ubHkgb24gdGhlIGRpc3RyaWJ1dGlvbiB3aGVyZSBpdCBoYXMgYmVlbiBjcmVhdGVk
CisgICAgICAgIChhZnRlciBydW5uaW5nIHRoZSBpbnN0YWxsLWRlcGVuZGVuY2llcyBzY3JpcHQp
CisKKyAgICAgICAgV2UgYWxyZWFkeSBoYXZlIGEgYm90IGdlbmVyYXRpbmcgdGhlIGpzYyBidW5k
bGUgYW5kIHdlIHBsYW4gdG8gYWxzbworICAgICAgICBoYXZlIGJvdHMgZm9yIGdlbmVyYXRpbmcg
dGhlIE1pbmlCcm93c2VyIGJ1bmRsZXMgYXMgd2VsbC4KKworICAgICAgICAqIEJ1aWxkU2xhdmVT
dXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3N0ZXBzLnB5OiBVcGRhdGUgdGhlIHN0ZXAg
Zm9yIHRoZSBuZXcgY29tbWFuZC4KKyAgICAgICAgKEdlbmVyYXRlSlNDQnVuZGxlKToKKyAgICAg
ICAgKiBTY3JpcHRzL2dlbmVyYXRlLWJ1bmRsZTogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy9n
ZW5lcmF0ZS1qc2MtYnVuZGxlOiBSZW1vdmVkLgorICAgICAgICAqIGpoYnVpbGQvamhidWlsZHV0
aWxzLnB5OgorICAgICAgICAoZW50ZXJfamhidWlsZF9lbnZpcm9ubWVudF9pZl9hdmFpbGFibGUp
OiBVbmljb2RlIGFyZ3VtZW50IG5vdCBsb25nZXIgYXZhaWxhYmxlIG9uIHB5dGhvbjMncyBnZXR0
ZXh0Lmluc3RhbGwoKQorCiAyMDIwLTA4LTA3ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxl
LmNvbT4KIAogICAgICAgICBJbnRyb2R1Y2UgYSBWZWN0b3I6Omlzb2xhdGVkQ29weSgpICYmCmRp
ZmYgLS1naXQgYS9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9zdGVwcy5weSBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29u
ZmlnL3N0ZXBzLnB5CmluZGV4IDZjODllM2M2NDZmZWViMDFkZDlkYTk1Mzk0ZGFlNTM0ZTNiOTcy
ZWIuLjA3OTUyZmYwYWE4MmFiZTg4MjZiNjM1ZTNkYTZjMjg3NjM1ZGQyZGUgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3N0ZXBzLnB5
CisrKyBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3N0
ZXBzLnB5CkBAIC0zMDEsOSArMzAxLDEwIEBAIGNsYXNzIEFyY2hpdmVNaW5pZmllZEJ1aWx0UHJv
ZHVjdChBcmNoaXZlQnVpbHRQcm9kdWN0KToKIAogCiBjbGFzcyBHZW5lcmF0ZUpTQ0J1bmRsZShz
aGVsbC5TaGVsbENvbW1hbmQpOgotICAgIGNvbW1hbmQgPSBbInB5dGhvbiIsICIuL1Rvb2xzL1Nj
cmlwdHMvZ2VuZXJhdGUtanNjLWJ1bmRsZSIsICItLWJ1aWxkZXItbmFtZSIsIFdpdGhQcm9wZXJ0
aWVzKCIlKGJ1aWxkZXJuYW1lKXMiKSwKLSAgICAgICAgICAgICAgIFdpdGhQcm9wZXJ0aWVzKCIt
LXBsYXRmb3JtPSUoZnVsbFBsYXRmb3JtKXMiKSwgV2l0aFByb3BlcnRpZXMoIi0tJShjb25maWd1
cmF0aW9uKXMiKSwKLSAgICAgICAgICAgICAgIFdpdGhQcm9wZXJ0aWVzKCItLXJldmlzaW9uPSUo
Z290X3JldmlzaW9uKXMiKSwgIi0tcmVtb3RlLWNvbmZpZy1maWxlIiwgIi4uLy4uL3JlbW90ZS1q
c2MtYnVuZGxlLXVwbG9hZC1jb25maWcuanNvbiJdCisgICAgY29tbWFuZCA9IFsiLi9Ub29scy9T
Y3JpcHRzL2dlbmVyYXRlLWJ1bmRsZSIsICItLWJ1aWxkZXItbmFtZSIsIFdpdGhQcm9wZXJ0aWVz
KCIlKGJ1aWxkZXJuYW1lKXMiKSwKKyAgICAgICAgICAgICAgICItLWJ1bmRsZT1qc2MiLCAiLS1z
eXNsaWJzPWJ1bmRsZS1hbGwiLCBXaXRoUHJvcGVydGllcygiLS1wbGF0Zm9ybT0lKGZ1bGxQbGF0
Zm9ybSlzIiksCisgICAgICAgICAgICAgICBXaXRoUHJvcGVydGllcygiLS0lKGNvbmZpZ3VyYXRp
b24pcyIpLCBXaXRoUHJvcGVydGllcygiLS1yZXZpc2lvbj0lKGdvdF9yZXZpc2lvbilzIiksCisg
ICAgICAgICAgICAgICAiLS1yZW1vdGUtY29uZmlnLWZpbGUiLCAiLi4vLi4vcmVtb3RlLWpzYy1i
dW5kbGUtdXBsb2FkLWNvbmZpZy5qc29uIl0KICAgICBuYW1lID0gImdlbmVyYXRlLWpzYy1idW5k
bGUiCiAgICAgZGVzY3JpcHRpb24gPSBbImdlbmVyYXRpbmcganNjIGJ1bmRsZSJdCiAgICAgZGVz
Y3JpcHRpb25Eb25lID0gWyJnZW5lcmF0ZWQganNjIGJ1bmRsZSJdCmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL2dlbmVyYXRlLWJ1bmRsZSBiL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtYnVuZGxl
Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmQ2N2NhMWFjOWNiNzgxOGU1ZWQ2NzUzODQ4N2U3Mzc5YWJhOWUzZmUKLS0t
IC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL2dlbmVyYXRlLWJ1bmRsZQpAQCAtMCwwICsx
LDY0MiBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworIworIyBDb3B5cmlnaHQgKEMpIDIwMTgs
IDIwMjAgSWdhbGlhIFMuTC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0Ogor
IworIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodCBub3RpY2UsIHRoaXMKKyMgICAgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKKyMgICAgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUg
ZG9jdW1lbnRhdGlvbgorIyAgICBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorIyBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IK
KyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisjIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyMgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5ECisjIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
CisjIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorCitpbXBvcnQgYXJncGFyc2UKK2ltcG9ydCBiYXNlNjQKK2ltcG9ydCBkYXRldGlt
ZQoraW1wb3J0IGhhc2hsaWIKK2ltcG9ydCBqc29uCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IG9z
CitpbXBvcnQgc2h1dGlsCitpbXBvcnQgc3VicHJvY2VzcworaW1wb3J0IHN5cworaW1wb3J0IHRl
bXBmaWxlCitpbXBvcnQgemlwZmlsZQorCit0b3BfbGV2ZWxfZGlyZWN0b3J5ID0gb3MucGF0aC5u
b3JtcGF0aChvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgJy4uJywgJy4u
JykpCitzeXMucGF0aC5pbnNlcnQoMCwgb3MucGF0aC5qb2luKHRvcF9sZXZlbF9kaXJlY3Rvcnks
ICdUb29scycsICdmbGF0cGFrJykpCitzeXMucGF0aC5pbnNlcnQoMCwgb3MucGF0aC5qb2luKHRv
cF9sZXZlbF9kaXJlY3RvcnksICdUb29scycsICdqaGJ1aWxkJykpCitpbXBvcnQgamhidWlsZHV0
aWxzCitpbXBvcnQgZmxhdHBha3V0aWxzCisKKworSU5TVEFMTF9ERVBTX1NDUklQVF9URU1QTEFU
RSA9ICIiIlwKKyMhL2Jpbi9iYXNoCitzZXQgLWV1IC1vIHBpcGVmYWlsCisKK1JFUVVJUkVEUEFD
S0FHRVM9IiUocGFja2FnZXNfbmVlZGVkKXMiCisKK2lmICEgd2hpY2ggYXB0LWdldCA+L2Rldi9u
dWxsOyB0aGVuCisgICAgZWNobyAiVGhpcyBzY3JpcHQgb25seSBzdXBwb3J0cyBhcHQtZ2V0IGJh
c2VkIGRpc3RyaWJ1dGlvbnMgbGlrZSBEZWJpYW4gb3IgVWJ1bnR1LiIKKyAgICBleGl0IDEKK2Zp
CisKKyMgQ2FsbGluZyBkcGtnLXF1ZXJ5IGlzIHNsb3csIHNvIGNhbGwgaXQgb25seSBvbmNlIGFu
ZCBjYWNoZSB0aGUgcmVzdWx0cworVE1QQ0hFQ0tQQUNLQUdFUz0iJChta3RlbXApIgorZHBrZy1x
dWVyeSAtLXNob3cgLS1zaG93Zm9ybWF0PScke2JpbmFyeTpQYWNrYWdlfSAke2RiOlN0YXR1cy1T
dGF0dXN9XFxuJyA+ICIke1RNUENIRUNLUEFDS0FHRVN9IgorVE9JTlNUQUxMPSIiCitmb3IgUEFD
S0FHRSBpbiAke1JFUVVJUkVEUEFDS0FHRVN9OyBkbworICAgIGlmICEgZ3JlcCAtcXhGICIke1BB
Q0tBR0V9IGluc3RhbGxlZCIgIiR7VE1QQ0hFQ0tQQUNLQUdFU30iOyB0aGVuCisgICAgICAgIFRP
SU5TVEFMTD0iJHtUT0lOU1RBTEx9ICR7UEFDS0FHRX0iCisgICAgZmkKK2RvbmUKK3JtIC1mICIk
e1RNUENIRUNLUEFDS0FHRVN9IgorCitpZiBbWyAteiAiJHtUT0lOU1RBTEx9IiBdXTsgdGhlbgor
ICAgIGVjaG8gIkFsbCByZXF1aXJlZCBkZXBlbmRlbmNpZXMgYXJlIGFscmVhZHkgaW5zdGFsbGVk
IgorZWxzZQorICAgIEFVVE9JTlNUQUxMPSIiCisgICAgW1sgJHsjfSAtZ3QgMCBdXSAmJiBbWyAi
JHsxfSIgPT0gIi0tYXV0b2luc3RhbGwiIF1dICYmIEFVVE9JTlNUQUxMPSIteSIgJiYgZXhwb3J0
IERFQklBTl9GUk9OVEVORD0ibm9uaW50ZXJhY3RpdmUiCisgICAgU1VETz0iIgorICAgIFtbICR7
VUlEfSAtbmUgMCBdXSAmJiBTVURPPSJzdWRvIC0tcHJlc2VydmUtZW52PURFQklBTl9GUk9OVEVO
RCIKKworICAgIGVjaG8gIk5lZWQgdG8gaW5zdGFsbCB0aGUgZm9sbG93aW5nIGV4dHJhIHBhY2th
Z2VzOiAke1RPSU5TVEFMTH0iCisgICAgc2V0IC14CisgICAgJHtTVURPfSBhcHQtZ2V0IGluc3Rh
bGwgLS1uby1pbnN0YWxsLXJlY29tbWVuZHMgJHtBVVRPSU5TVEFMTH0gJHtUT0lOU1RBTEx9Citm
aQorIiIiCisKK19sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKK0xPR19NRVNTQUdF
ID0gMjUKKworY2xhc3MgQnVuZGxlQ3JlYXRvcihvYmplY3QpOgorCisgICAgZGVmIF9faW5pdF9f
KHNlbGYsIGNvbmZpZ3VyYXRpb24sIHBsYXRmb3JtLCBidW5kbGVfdHlwZSwgc3lzbGlicywgc2hv
dWxkX3N0cmlwX29iamVjdHMsIGNvbXByZXNzaW9uX3R5cGUsIGRlc3RpbmF0aW9uID0gTm9uZSwg
cmV2aXNpb24gPSBOb25lLCBidWlsZGVyX25hbWUgPSBOb25lKToKKyAgICAgICAgc2VsZi5fY29u
ZmlndXJhdGlvbiA9IGNvbmZpZ3VyYXRpb24KKyAgICAgICAgc2VsZi5fcGxhdGZvcm0gPSBwbGF0
Zm9ybS5sb3dlcigpCisgICAgICAgIHNlbGYuX3JldmlzaW9uID0gcmV2aXNpb24KKyAgICAgICAg
c2VsZi5fYnVuZGxlX2JpbmFyaWVzID0gWydqc2MnLCAnTWluaUJyb3dzZXInXSBpZiBidW5kbGVf
dHlwZSA9PSAnYWxsJyBlbHNlIFsgYnVuZGxlX3R5cGUgXQorICAgICAgICBzZWxmLl9idW5kbGVf
dHlwZSA9IGJ1bmRsZV90eXBlCisgICAgICAgIHNlbGYuX2J1aWxkZXJuYW1lID0gYnVpbGRlcl9u
YW1lCisgICAgICAgIHNlbGYuX3N5c2xpYnMgPSBzeXNsaWJzCisgICAgICAgIHNlbGYuX3Nob3Vs
ZF9zdHJpcF9vYmplY3RzID0gc2hvdWxkX3N0cmlwX29iamVjdHMKKyAgICAgICAgc2VsZi5fY29t
cHJlc3Npb25fdHlwZSA9IGNvbXByZXNzaW9uX3R5cGUKKyAgICAgICAgc2VsZi5fdG1wZGlyID0g
Tm9uZQorICAgICAgICBzZWxmLl93cmFwcGVyX3NjcmlwdHMgPSBbXQorICAgICAgICBzZWxmLl9w
b3J0X2JpbmFyeV9wcmVmZml4ID0gJ1dlYktpdCcgaWYgc2VsZi5fcGxhdGZvcm0gPT0gJ2d0aycg
ZWxzZSAnV1BFJworICAgICAgICB3a19idWlsZF9wYXRoID0gb3MuZW52aXJvblsnV0VCS0lUX09V
VFBVVERJUiddIGlmICdXRUJLSVRfT1VUUFVURElSJyBpbiBvcy5lbnZpcm9uIGVsc2UgXAorICAg
ICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbihvcy5wYXRo
LmRpcm5hbWUoX19maWxlX18pLCAnLi4nLCAnLi4nLCAnV2ViS2l0QnVpbGQnKSkKKyAgICAgICAg
c2VsZi5fYnVpbGRwYXRoID0gb3MucGF0aC5qb2luKHdrX2J1aWxkX3BhdGgsIHNlbGYuX2NvbmZp
Z3VyYXRpb24uY2FwaXRhbGl6ZSgpKQorCisgICAgICAgIGRlZmF1bHRfYnVuZGxlX25hbWUgPSBi
dW5kbGVfdHlwZSAgKyAnXycgKyBzZWxmLl9wbGF0Zm9ybSArICdfJyArIHNlbGYuX2NvbmZpZ3Vy
YXRpb24gKyAnLicgKyBzZWxmLl9jb21wcmVzc2lvbl90eXBlCisgICAgICAgIGlmIGRlc3RpbmF0
aW9uIGFuZCAgb3MucGF0aC5pc2RpcihkZXN0aW5hdGlvbik6CisgICAgICAgICAgICBzZWxmLl9i
dW5kbGVfZmlsZV9wYXRoID0gb3MucGF0aC5qb2luKGRlc3RpbmF0aW9uLCBkZWZhdWx0X2J1bmRs
ZV9uYW1lKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5fYnVuZGxlX2ZpbGVfcGF0
aCA9IG9zLnBhdGguam9pbih3a19idWlsZF9wYXRoLCBkZWZhdWx0X2J1bmRsZV9uYW1lKQorCisK
KyAgICBkZWYgX2NyZWF0ZV90ZW1wZGlyKHNlbGYsIGJhc2VkaXIgPSBOb25lKToKKyAgICAgICAg
aWYgYmFzZWRpciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzZGly
KGJhc2VkaXIpOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJyVzIGlzIG5vdCBh
IGRpcmVjdG9yeScgJSBiYXNlZGlyKQorICAgICAgICAgICAgcmV0dXJuIHRlbXBmaWxlLm1rZHRl
bXAocHJlZml4PW9zLnBhdGguam9pbihvcy5wYXRoLmFic3BhdGgoYmFzZWRpciksICd0bXAnKSkK
KyAgICAgICAgcmV0dXJuIHRlbXBmaWxlLm1rZHRlbXAoKQorCisgICAgZGVmIF9ydW5fY21kX2Fu
ZF9nZXRfb3V0cHV0KHNlbGYsIGNvbW1hbmQpOgorICAgICAgICBjb21tYW5kX3Byb2Nlc3MgPSBz
dWJwcm9jZXNzLlBvcGVuKGNvbW1hbmQsIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsIHN0ZGVycj1z
dWJwcm9jZXNzLlNURE9VVCwgZW5jb2Rpbmc9J3V0Zi04JykKKyAgICAgICAgc3Rkb3V0LCBzdGRl
cnIgPSBjb21tYW5kX3Byb2Nlc3MuY29tbXVuaWNhdGUoKQorICAgICAgICByZXR1cm4gY29tbWFu
ZF9wcm9jZXNzLnJldHVybmNvZGUsIHN0ZG91dCwgc3RkZXJyCisKKworICAgIGRlZiBfbGRkX2dl
dF9saWJzX2FuZF9pbnRlcnByZXRlcihzZWxmLCBvYmplY3QpOgorICAgICAgICBpbnRlcnByZXRl
ciA9IE5vbmUKKyAgICAgICAgcmV0Y29kZSwgc3Rkb3V0LCBzdGRlcnIgPSBzZWxmLl9ydW5fY21k
X2FuZF9nZXRfb3V0cHV0KFsnbGRkJywgb2JqZWN0XSkKKyAgICAgICAgaWYgcmV0Y29kZSAhPSAw
OgorICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdUaGUgbGRkIGNvbW1hbmQgcmV0dXJu
ZWQgbm9uLXplcm8gc3RhdHVzIGZvciBvYmplY3QgJXMnICUgb2JqZWN0KQorICAgICAgICBsaWJz
ID0gW10KKyAgICAgICAgZm9yIGxpbmUgaW4gc3Rkb3V0LnNwbGl0bGluZXMoKToKKyAgICAgICAg
ICAgIGxpbmUgPSBsaW5lLnN0cmlwKCkKKyAgICAgICAgICAgIGlmICc9PicgaW4gbGluZToKKyAg
ICAgICAgICAgICAgICBsaW5lID0gbGluZS5zcGxpdCgnPT4nKVsxXS5zdHJpcCgpCisgICAgICAg
ICAgICAgICAgaWYgJ25vdCBmb3VuZCcgaW4gbGluZToKKyAgICAgICAgICAgICAgICAgICAgcmFp
c2UgUnVudGltZUVycm9yKCdsZGQgY2FuIG5vdCByZXNvbHZlIGFsbCBkZXBlbmRlbmNpZXMgZm9y
IG9iamVjdCAlcy4nICUgb2JqZWN0KQorICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lLnNwbGl0
KCcgJylbMF0uc3RyaXAoKQorICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKGxpbmUp
OgorICAgICAgICAgICAgICAgICAgICBsaWJzLmFwcGVuZChsaW5lKQorICAgICAgICAgICAgZWxz
ZToKKyAgICAgICAgICAgICAgICBsaW5lID0gbGluZS5zcGxpdCgnICcpWzBdLnN0cmlwKCkKKyAg
ICAgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShsaW5lKToKKyAgICAgICAgICAgICAgICAg
ICAgaW50ZXJwcmV0ZXIgPSBsaW5lCisgICAgICAgIHJldHVybiBsaWJzLCBpbnRlcnByZXRlcgor
CisKKyAgICBkZWYgX2xkZF9yZWN1cnNpdmVfZ2V0X2xpYnNfYW5kX2ludGVycHJldGVyKHNlbGYs
IG9iamVjdCwgYWxyZWFkeV9jaGVja2VkX2xpYnMgPSBbXSk6CisgICAgICAgIGxpYnMsIGludGVy
cHJldGVyID0gc2VsZi5fbGRkX2dldF9saWJzX2FuZF9pbnRlcnByZXRlcihvYmplY3QpCisgICAg
ICAgIGlmIGxpYnM6CisgICAgICAgICAgICBmb3IgbGliIGluIGxpYnM6CisgICAgICAgICAgICAg
ICAgaWYgbGliIGluIGFscmVhZHlfY2hlY2tlZF9saWJzOgorICAgICAgICAgICAgICAgICAgICBj
b250aW51ZQorICAgICAgICAgICAgICAgICMgYXZvaWQgcmVjdXJzaW9uIGxvb3BzIChsaWJmcmVl
dHlwZS5zby42IDwtPiBsaWJoYXJmYnV6ei5zby4wKQorICAgICAgICAgICAgICAgIGFscmVhZHlf
Y2hlY2tlZF9saWJzLmFwcGVuZChsaWIpCisgICAgICAgICAgICAgICAgc3ViX2xpYnMsIHN1Yl9p
bnRlcnByZXRlciA9IHNlbGYuX2xkZF9yZWN1cnNpdmVfZ2V0X2xpYnNfYW5kX2ludGVycHJldGVy
KGxpYiwgYWxyZWFkeV9jaGVja2VkX2xpYnMpCisgICAgICAgICAgICAgICAgbGlicy5leHRlbmQo
c3ViX2xpYnMpCisgICAgICAgICAgICAgICAgaWYgc3ViX2ludGVycHJldGVyIGFuZCBpbnRlcnBy
ZXRlciBhbmQgc3ViX2ludGVycHJldGVyICE9IGludGVycHJldGVyOgorICAgICAgICAgICAgICAg
ICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ2xpYnJhcnkgJXMgaGFzIGludGVycHJldGVyICVzIGJ1
dCBvYmplY3QgJXMgaGFzIGludGVycHJldGVyICVzJyAlIChsaWIsIHN1Yl9pbnRlcnByZXRlciwg
b2JqZWN0LCBpbnRlcnByZXRlcikpCisgICAgICAgIHJldHVybiBsaXN0KHNldChsaWJzKSksIGlu
dGVycHJldGVyCisKKworICAgIGRlZiBfZ2V0X29zcHJldHR5bmFtZShzZWxmKToKKyAgICAgICAg
d2l0aCBvcGVuKCcvZXRjL29zLXJlbGVhc2UnLCAncicpIGFzIG9zcmVsZWFzZV9oYW5kbGU6Cisg
ICAgICAgICAgICBmb3IgbGluZSBpbiBvc3JlbGVhc2VfaGFuZGxlLnJlYWRsaW5lcygpOgorICAg
ICAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgnUFJFVFRZX05BTUU9Jyk6CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBsaW5lLnNwbGl0KCc9JylbMV0uc3RyaXAoKS5zdHJpcCgnIicp
CisgICAgICAgIHJldHVybiBOb25lCisKKworICAgIGRlZiBfZ2VuZXJhdGVfcmVhZG1lKHNlbGYp
OgorICAgICAgICBfbG9nLmluZm8oJ0dlbmVyYXRlIFJFQURNRS50eHQgZmlsZScpCisgICAgICAg
IHJlYWRtZV9maWxlID0gb3MucGF0aC5qb2luKHNlbGYuX3RtcGRpciwgJ1JFQURNRS50eHQnKQor
ICAgICAgICB3aXRoIG9wZW4ocmVhZG1lX2ZpbGUsICd3JykgYXMgcmVhZG1lX2hhbmRsZToKKyAg
ICAgICAgICAgIHJlYWRtZV9oYW5kbGUud3JpdGUoJ0J1bmRsZSBkZXRhaWxzOlxuJykKKyAgICAg
ICAgICAgIHJlYWRtZV9oYW5kbGUud3JpdGUoJyAgLSBXZWJLaXQgUGxhdGZvcm06ICVzXG4nICUg
c2VsZi5fcGxhdGZvcm0udXBwZXIoKSkKKyAgICAgICAgICAgIHJlYWRtZV9oYW5kbGUud3JpdGUo
JyAgLSBDb25maWd1cmF0aW9uOiAlc1xuJyAlIHNlbGYuX2NvbmZpZ3VyYXRpb24uY2FwaXRhbGl6
ZSgpKQorICAgICAgICAgICAgaWYgc2VsZi5fcmV2aXNpb246CisgICAgICAgICAgICAgICAgcmVh
ZG1lX2hhbmRsZS53cml0ZSgnICAtIFdlYktpdCBSZXZpc2lvbjogJXNcbicgJSBzZWxmLl9yZXZp
c2lvbikKKyAgICAgICAgICAgIHJlYWRtZV9oYW5kbGUud3JpdGUoJyAgLSBCdW5kbGUgdHlwZTog
JXNcbicgJSBzZWxmLl9idW5kbGVfdHlwZSkKKyAgICAgICAgICAgIGlmIHNlbGYuX2J1aWxkZXJu
YW1lOgorICAgICAgICAgICAgICAgIHJlYWRtZV9oYW5kbGUud3JpdGUoJyAgLSBCdWlsZGVyIG5h
bWU6ICVzXG4nICUgc2VsZi5fYnVpbGRlcm5hbWUpCisgICAgICAgICAgICByZWFkbWVfaGFuZGxl
LndyaXRlKCcgIC0gQnVpbGRlciBkYXRlOiAlc1xuJyAlIGRhdGV0aW1lLmRhdGV0aW1lLm5vdygp
Lmlzb2Zvcm1hdCgpKQorICAgICAgICAgICAgcmVhZG1lX2hhbmRsZS53cml0ZSgnICAtIEJ1aWxk
ZXIgT1M6ICVzXG4nICUgc2VsZi5fZ2V0X29zcHJldHR5bmFtZSgpKQorICAgICAgICAgICAgaWYg
c2VsZi5fc3lzbGlicyA9PSAnZ2VuZXJhdGUtaW5zdGFsbC1zY3JpcHQnOgorICAgICAgICAgICAg
ICAgIHJlYWRtZV9oYW5kbGUud3JpdGUoJ1xuUmVxdWlyZWQgZGVwZW5kZW5jaWVzOlxuJykKKyAg
ICAgICAgICAgICAgICByZWFkbWVfaGFuZGxlLndyaXRlKCcgIC0gVGhpcyBidW5kbGUgZGVwZW5k
cyBvbiBzZXZlcmFsIHN5c3RlbSBsaWJyYXJpZXMgdGhhdCBhcmUgYXNzdW1lZCB0byBiZSBpbnN0
YWxsZWQuXG4nKQorICAgICAgICAgICAgICAgIHJlYWRtZV9oYW5kbGUud3JpdGUoJyAgLSBUbyBl
bnN1cmUgYWxsIHRoZSByZXF1aXJlZCBsaWJyYXJpZXMgYXJlIGluc3RhbGxlZCBleGVjdXRlIHRo
ZSBzY3JpcHQ6IGluc3RhbGwtZGVwZW5kZW5jaWVzLnNoXG4nKQorICAgICAgICAgICAgICAgIHJl
YWRtZV9oYW5kbGUud3JpdGUoJyAgLSBZb3UgY2FuIHBhc3MgdGhlIGZsYWcgIi0tYXV0b2luc3Rh
bGwiIHRvIHRoaXMgc2NyaXB0IHRvIGF1dG9tYXRpY2FsbHkgaW5zdGFsbCB0aGUgZGVwZW5kZW5j
aWVzIGlmIG5lZWRlZC5cbicpCisgICAgICAgICAgICByZWFkbWVfaGFuZGxlLndyaXRlKCdcblJ1
biBpbnN0cnVjdGlvbnM6XG4nKQorICAgICAgICAgICAgc2NyaXB0cyA9ICJzY3JpcHQiIGlmIGxl
bihzZWxmLl93cmFwcGVyX3NjcmlwdHMpID09IDEgZWxzZSAic2NyaXB0cyIKKyAgICAgICAgICAg
IHJlYWRtZV9oYW5kbGUud3JpdGUoJyAgLSBFeGVjdXRlIHRoZSB3cmFwcGVyICVzIGluIHRoaXMg
ZGlyZWN0b3J5OlxuJyAlIHNjcmlwdHMpCisgICAgICAgICAgICBmb3Igd3JhcHBlcl9zY3JpcHQg
aW4gc2VsZi5fd3JhcHBlcl9zY3JpcHRzOgorICAgICAgICAgICAgICAgIHJlYWRtZV9oYW5kbGUu
d3JpdGUoJyAgICAqICVzXG4nICV3cmFwcGVyX3NjcmlwdCkKKyAgICAgICAgcmV0dXJuIFRydWUK
KworCisgICAgZGVmIF9nZW5lcmF0ZV93cmFwcGVyX3NjcmlwdChzZWxmLCBpbnRlcnByZXRlciwg
YmluYXJ5X3RvX3dyYXApOgorICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2ZpbGUob3MucGF0aC5q
b2luKHNlbGYuX3RtcGRpciwgJ2JpbicsIGJpbmFyeV90b193cmFwKSk6CisgICAgICAgICAgICBy
YWlzZSBSdW50aW1lRXJyb3IoJ0NhbiBub3QgZmluZCBiaW5hcnkgdG8gd3JhcCBmb3IgJXMnICUg
YmluYXJ5X3RvX3dyYXApCisgICAgICAgIHNlbGYuX3dyYXBwZXJfc2NyaXB0cy5hcHBlbmQoYmlu
YXJ5X3RvX3dyYXApCisgICAgICAgIF9sb2cuaW5mbygnR2VuZXJhdGUgd3JhcHBlciBzY3JpcHQg
JXMnICUgYmluYXJ5X3RvX3dyYXApCisgICAgICAgIHNjcmlwdF9maWxlID0gb3MucGF0aC5qb2lu
KHNlbGYuX3RtcGRpciwgYmluYXJ5X3RvX3dyYXApCisKKyAgICAgICAgd2l0aCBvcGVuKHNjcmlw
dF9maWxlLCAndycpIGFzIHNjcmlwdF9oYW5kbGU6CisgICAgICAgICAgICBzY3JpcHRfaGFuZGxl
LndyaXRlKCcjIS9iaW4vc2hcbicpCisgICAgICAgICAgICBzY3JpcHRfaGFuZGxlLndyaXRlKCdN
WURJUj0iJChkaXJuYW1lICQocmVhZGxpbmsgLWYgJDApKSJcbicpCisgICAgICAgICAgICBzY3Jp
cHRfaGFuZGxlLndyaXRlKCdleHBvcnQgTERfTElCUkFSWV9QQVRIPSIke01ZRElSfS9saWIiXG4n
KQorICAgICAgICAgICAgaWYgb3MucGF0aC5pc2Rpcihvcy5wYXRoLmpvaW4oc2VsZi5fdG1wZGly
LCAnZ2lvJykpOgorICAgICAgICAgICAgICAgIGdpb192YXIgPSAnR0lPX01PRFVMRV9ESVInIGlm
IHNlbGYuX3N5c2xpYnMgPT0gJ2J1bmRsZS1hbGwnIGVsc2UgJ0dJT19FWFRSQV9NT0RVTEVTJwor
ICAgICAgICAgICAgICAgIHNjcmlwdF9oYW5kbGUud3JpdGUoJ2V4cG9ydCAlcz0iJHtNWURJUn0v
Z2lvIlxuJyAlIGdpb192YXIpCisgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKG9zLnBhdGgu
am9pbihzZWxmLl90bXBkaXIsICdnc3QnKSk6CisgICAgICAgICAgICAgICAgZ3N0X3ZhciA9ICdH
U1RfUExVR0lOX1NZU1RFTV9QQVRIXzFfMCcgaWYgc2VsZi5fc3lzbGlicyA9PSAnYnVuZGxlLWFs
bCcgZWxzZSAnR1NUX1BMVUdJTl9QQVRIXzFfMCcKKyAgICAgICAgICAgICAgICBzY3JpcHRfaGFu
ZGxlLndyaXRlKCdleHBvcnQgJXM9IiR7TVlESVJ9L2dzdCJcbicgJSBnc3RfdmFyKQorICAgICAg
ICAgICAgICAgIHNjcmlwdF9oYW5kbGUud3JpdGUoJ2V4cG9ydCBHU1RfUkVHSVNUUllfMV8wPSIk
e01ZRElSfS9nc3QvZ3N0cmVhbWVyLTEuMC5yZWdpc3RyeSJcbicpCisgICAgICAgICAgICBpZiBi
aW5hcnlfdG9fd3JhcCAhPSAianNjIjoKKyAgICAgICAgICAgICAgICBzY3JpcHRfaGFuZGxlLndy
aXRlKCdleHBvcnQgV0VCS0lUX0VYRUNfUEFUSD0iJHtNWURJUn0vYmluIlxuJykKKyAgICAgICAg
ICAgICAgICBzY3JpcHRfaGFuZGxlLndyaXRlKCdleHBvcnQgV0VCS0lUX0lOSkVDVEVEX0JVTkRM
RV9QQVRIPSIke01ZRElSfS9saWIiXG4nKQorICAgICAgICAgICAgaWYgc2VsZi5fc3lzbGlicyA9
PSAnYnVuZGxlLWFsbCc6CisgICAgICAgICAgICAgICAgc2NyaXB0X2hhbmRsZS53cml0ZSgnSU5U
RVJQUkVURVI9IiR7TVlESVJ9L2xpYi8lcyJcbicgJSBvcy5wYXRoLmJhc2VuYW1lKGludGVycHJl
dGVyKSkKKyAgICAgICAgICAgICAgICBpZiBiaW5hcnlfdG9fd3JhcCAhPSAianNjIjoKKyAgICAg
ICAgICAgICAgICAgICAgc2NyaXB0X2hhbmRsZS53cml0ZSgnZXhwb3J0IFdFQl9QUk9DRVNTX0NN
RF9QUkVGSVg9IiR7SU5URVJQUkVURVJ9IlxuJykKKyAgICAgICAgICAgICAgICAgICAgc2NyaXB0
X2hhbmRsZS53cml0ZSgnZXhwb3J0IFBMVUdJTl9QUk9DRVNTX0NNRF9QUkVGSVg9IiR7SU5URVJQ
UkVURVJ9IlxuJykKKyAgICAgICAgICAgICAgICAgICAgc2NyaXB0X2hhbmRsZS53cml0ZSgnZXhw
b3J0IE5FVFdPUktfUFJPQ0VTU19DTURfUFJFRklYPSIke0lOVEVSUFJFVEVSfSJcbicpCisgICAg
ICAgICAgICAgICAgICAgIHNjcmlwdF9oYW5kbGUud3JpdGUoJ2V4cG9ydCBHUFVfUFJPQ0VTU19D
TURfUFJFRklYPSIke0lOVEVSUFJFVEVSfSJcbicpCisgICAgICAgICAgICAgICAgc2NyaXB0X2hh
bmRsZS53cml0ZSgnZXhlYyAiJHtJTlRFUlBSRVRFUn0iICIke01ZRElSfS9iaW4vJXMiICIkQCJc
bicgJSBiaW5hcnlfdG9fd3JhcCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAg
c2NyaXB0X2hhbmRsZS53cml0ZSgnZXhlYyAiJHtNWURJUn0vYmluLyVzIiAiJEAiXG4nICUgYmlu
YXJ5X3RvX3dyYXApCisgICAgICAgIG9zLmNobW9kKHNjcmlwdF9maWxlLCAwbzc1NSkKKworICAg
IGRlZiBfZ2VuZXJhdGVfaW5zdGFsbF9kZXBzX3NjcmlwdChzZWxmLCBzeXN0ZW1fcGFja2FnZXNf
bmVlZGVkKToKKyAgICAgICAgaWYgbm90IHN5c3RlbV9wYWNrYWdlc19uZWVkZWQ6CisgICAgICAg
ICAgICByZXR1cm4KKyAgICAgICAgaWYgJ01pbmlCcm93c2VyJyBpbiBzZWxmLl9idW5kbGVfYmlu
YXJpZXM6CisgICAgICAgICAgICAjIEFkZCBzb21lIGV4dHJhIHBhY2thZ2VzIHRoYXQgYXJlIG5l
ZWRlZCBidXQgdGhlIHNjcmlwdCBjYW4ndCBhdXRvbWF0aWNhbGx5IGRldGVjdAorICAgICAgICAg
ICAgZm9yIGV4dHJhX25lZWRlZF9wa2cgaW4gWydjYS1jZXJ0aWZpY2F0ZXMnLCAnc2hhcmVkLW1p
bWUtaW5mbyddOgorICAgICAgICAgICAgICAgIHN5c3RlbV9wYWNrYWdlc19uZWVkZWQuYWRkKGV4
dHJhX25lZWRlZF9wa2cpCisgICAgICAgICAgICAjIEFuZCByZW1vdmUgc29tZSBwYWNrYWdlcyB0
aGF0IG1heSBiZSBkZXRlY3RlZCBkdWUgdG8gaW5kaXJlY3QgZGVwcyAoZ3N0cmVhbWVyL2dpbykg
YnV0IGFyZSByZWFsbHkgbm90IG5lZWRlZAorICAgICAgICAgICAgZm9yIG5vdF9uZWVkZWRfcGtn
IGluIFsnZGNvbmYtZ3NldHRpbmdzLWJhY2tlbmQnLCAnZ3ZmcycsICdwaXRpdmknLCAnZ3N0cmVh
bWVyMS4wLWNvbnZvbHZlci1wdWxzZWVmZmVjdHMnLCAnZ3N0cmVhbWVyMS4wLXgnLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ3N0cmVhbWVyMS4wLWFkYXB0ZXItcHVsc2Vl
ZmZlY3RzJywgJ2dzdHJlYW1lcjEuMC1hdXRvZ2Fpbi1wdWxzZWVmZmVjdHMnLCAnZ3N0cmVhbWVy
MS4wLWFsc2EnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ3N0cmVhbWVy
MS4wLWNsdXR0ZXItMy4wJywgJ2dzdHJlYW1lcjEuMC1jcnlzdGFsaXplci1wdWxzZWVmZmVjdHMn
LCAnZ3N0cmVhbWVyMS4wLWd0azMnLCAnZ3N0cmVhbWVyMS4wLW5pY2UnXToKKyAgICAgICAgICAg
ICAgICBpZiBub3RfbmVlZGVkX3BrZyBpbiBzeXN0ZW1fcGFja2FnZXNfbmVlZGVkOgorICAgICAg
ICAgICAgICAgICAgICBzeXN0ZW1fcGFja2FnZXNfbmVlZGVkLnJlbW92ZShub3RfbmVlZGVkX3Br
ZykKKyAgICAgICAgICAgICAgICAjIFNvbWV0aW1lcyB0aGUgcGFja2FnZSBpcyBpZGVudGlmaWVk
IHdpdGggYW4gYXJjaCBzdWZmaXgsIGJ1dCBub3QgYWx3YXlzCisgICAgICAgICAgICAgICAgbm90
X25lZWRlZF9wa2dfYXJjaCA9IG5vdF9uZWVkZWRfcGtnICsgJzphbWQ2NCcKKyAgICAgICAgICAg
ICAgICBpZiBub3RfbmVlZGVkX3BrZ19hcmNoIGluIHN5c3RlbV9wYWNrYWdlc19uZWVkZWQ6Cisg
ICAgICAgICAgICAgICAgICAgIHN5c3RlbV9wYWNrYWdlc19uZWVkZWQucmVtb3ZlKG5vdF9uZWVk
ZWRfcGtnX2FyY2gpCisgICAgICAgIGluc3RhbGxkZXBzX2ZpbGUgPSBvcy5wYXRoLmpvaW4oc2Vs
Zi5fdG1wZGlyLCAnaW5zdGFsbC1kZXBlbmRlbmNpZXMuc2gnKQorICAgICAgICB3aXRoIG9wZW4o
aW5zdGFsbGRlcHNfZmlsZSwgJ3cnKSBhcyBpbnN0YWxsZGVwc19oYW5kbGU6CisgICAgICAgICAg
ICBpbnN0YWxsZGVwc19oYW5kbGUud3JpdGUoSU5TVEFMTF9ERVBTX1NDUklQVF9URU1QTEFURSAl
IHsncGFja2FnZXNfbmVlZGVkJyA6ICcgJy5qb2luKHN5c3RlbV9wYWNrYWdlc19uZWVkZWQpfSAp
CisgICAgICAgIG9zLmNobW9kKGluc3RhbGxkZXBzX2ZpbGUsIDBvNzU1KQorCisKKyAgICBkZWYg
X2NvcHlfYW5kX3JlbW92ZV9ycGF0aChzZWxmLCBvcmlnX2ZpbGUsIHR5cGU9J2JpbicsIGRlc3Rp
bmF0aW9uX2Rpcj1Ob25lKToKKyAgICAgICAgaWYgbm90IGRlc3RpbmF0aW9uX2RpcjoKKyAgICAg
ICAgICAgIGRpcl9zdWZmaXggPSAnbGliJyBpZiB0eXBlID09ICdpbnRlcnByZXRlcicgZWxzZSB0
eXBlCisgICAgICAgICAgICBkZXN0aW5hdGlvbl9kaXIgPSBvcy5wYXRoLmpvaW4oc2VsZi5fdG1w
ZGlyLCBkaXJfc3VmZml4KQorICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2RpcihkZXN0aW5hdGlv
bl9kaXIpOgorICAgICAgICAgICAgb3MubWFrZWRpcnMoZGVzdGluYXRpb25fZGlyKQorCisgICAg
ICAgIGlmIG5vdCBvcy5wYXRoLmlzZmlsZShvcmlnX2ZpbGUpOgorICAgICAgICAgICAgcmFpc2Ug
VmFsdWVFcnJvcignQ2FuIG5vdCBmaW5kIGZpbGUgJXMnICUgb3JpZ19maWxlKQorCisgICAgICAg
IF9sb2cuaW5mbygnQWRkIHRvIGJ1bmRsZSBbJXNdOiAlcycgJSAodHlwZSwgb3JpZ19maWxlKSkK
KyAgICAgICAgc2h1dGlsLmNvcHkob3JpZ19maWxlLCBkZXN0aW5hdGlvbl9kaXIpCisKKyAgICAg
ICAgaWYgc2h1dGlsLndoaWNoKCdwYXRjaGVsZicpOgorICAgICAgICAgICAgcGF0Y2hfZWxmX2Nv
bW1hbmQgPSBbJ3BhdGNoZWxmJywgJy0tcmVtb3ZlLXJwYXRoJywgb3MucGF0aC5qb2luKGRlc3Rp
bmF0aW9uX2Rpciwgb3MucGF0aC5iYXNlbmFtZShvcmlnX2ZpbGUpKV0KKyAgICAgICAgICAgIGlm
IHN1YnByb2Nlc3MuY2FsbChwYXRjaF9lbGZfY29tbWFuZCkgIT0gMDoKKyAgICAgICAgICAgICAg
ICBfbG9nLndhcm5pbmcoJ1RoZSBwYXRjaGVsZiBjb21tYW5kIHJldHVybmVkIG5vbi16ZXJvIHN0
YXR1cycpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgX2xvZy53YXJuaW5nKCdwYXRj
aGVsZiBub3QgZm91bmQuIE5vdCBtb2RpZnlpbmcgcnBhdGgnKQorCisgICAgICAgIGlmIHNodXRp
bC53aGljaCgnc3RyaXAnKToKKyAgICAgICAgICAgIHN0cmlwX2NvbW1hbmQgPSBbJ3N0cmlwJywg
Jy0tc3RyaXAtdW5uZWVkZWQnLCBvcy5wYXRoLmpvaW4oZGVzdGluYXRpb25fZGlyLCBvcy5wYXRo
LmJhc2VuYW1lKG9yaWdfZmlsZSkpXQorICAgICAgICAgICAgaWYgc3VicHJvY2Vzcy5jYWxsKHN0
cmlwX2NvbW1hbmQpICE9IDA6CisgICAgICAgICAgICAgICAgX2xvZy53YXJuaW5nKCdUaGUgc3Ry
aXAgY29tbWFuZCByZXR1cm5lZCBub24temVybyBzdGF0dXMnKQorICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgX2xvZy53YXJuaW5nKCdzdHJpcCBub3QgZm91bmQuIE5vdCBzdHJpcHBpbmcgb2Jq
ZWN0JykKKworICAgIGRlZiBfcmVtb3ZlX3RlbXBkaXIoc2VsZik6CisgICAgICAgIGlmIG5vdCBz
ZWxmLl90bXBkaXI6CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgaWYgb3MucGF0aC5pc2Rp
cihzZWxmLl90bXBkaXIpOgorICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShzZWxmLl90bXBkaXIp
CisKKyAgICBkZWYgY3JlYXRlKHNlbGYpOgorICAgICAgICBzZWxmLl90bXBkaXIgPSBzZWxmLl9j
cmVhdGVfdGVtcGRpcihzZWxmLl9idWlsZHBhdGgpCisKKyAgICAgICAgaWYgb3MucGF0aC5pc2Zp
bGUoc2VsZi5fYnVuZGxlX2ZpbGVfcGF0aCk6CisgICAgICAgICAgICBfbG9nLmluZm8oJ1JlbW92
aW5nIHByZXZpb3VzIGJ1bmRsZSAlcycgJSBzZWxmLl9idW5kbGVfZmlsZV9wYXRoKQorICAgICAg
ICAgICAgb3MucmVtb3ZlKHNlbGYuX2J1bmRsZV9maWxlX3BhdGgpCisKKyAgICAgICAgZm9yIGJ1
bmRsZV9iaW5hcnkgaW4gc2VsZi5fYnVuZGxlX2JpbmFyaWVzOgorICAgICAgICAgICAgc2VsZi5f
Y3JlYXRlX2J1bmRsZShidW5kbGVfYmluYXJ5KQorICAgICAgICBzZWxmLl9nZW5lcmF0ZV9yZWFk
bWUoKQorICAgICAgICBpZiBzZWxmLl9jb21wcmVzc2lvbl90eXBlID09ICd6aXAnOgorICAgICAg
ICAgICAgc2VsZi5fY3JlYXRlX3ppcCgpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByYWlz
ZSBOb3RJbXBsZW1lbnRlZEVycm9yKCdTdXBwb3J0IGZvciBjb21wcmVzc2lvbiB0eXBlICVzIG5v
dCBpbXBsZW1lbnRlZCcgJSBzZWxmLl9jb21wcmVzc2lvbl90eXBlKQorICAgICAgICBzZWxmLl9y
ZW1vdmVfdGVtcGRpcigpCisgICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzZmlsZShzZWxmLl9idW5k
bGVfZmlsZV9wYXRoKToKKyAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignVW5hYmxlIHRv
IGNyZWF0ZSB0aGUgZmlsZSAlcycgJSBzZWxmLl9idW5kbGVfZmlsZV9wYXRoKQorICAgICAgICBf
bG9nLmxvZyhMT0dfTUVTU0FHRSwgJ0J1bmRsZSBmaWxlIGNyZWF0ZWQgYXQ6ICVzJyAlIHNlbGYu
X2J1bmRsZV9maWxlX3BhdGgpCisgICAgICAgIHJldHVybiBzZWxmLl9idW5kbGVfZmlsZV9wYXRo
CisKKworICAgIGRlZiBfZ2V0X3dlYmtpdF9iaW5hcmllcyhzZWxmKToKKyAgICAgICAgd2Via2l0
X2JpbmFyaWVzID0gW10KKyAgICAgICAgYmluX2RpciA9IG9zLnBhdGguam9pbihzZWxmLl9idWls
ZHBhdGgsICdiaW4nKQorICAgICAgICBmb3IgZW50cnkgaW4gb3MubGlzdGRpcihiaW5fZGlyKToK
KyAgICAgICAgICAgIGlmIGVudHJ5LnN0YXJ0c3dpdGgoc2VsZi5fcG9ydF9iaW5hcnlfcHJlZmZp
eCkgYW5kIChlbnRyeS5lbmRzd2l0aCgnUHJvY2VzcycpIG9yIGVudHJ5LmVuZHN3aXRoKCdEcml2
ZXInKSk6CisgICAgICAgICAgICAgICAgYmluYXJ5ID0gb3MucGF0aC5qb2luKGJpbl9kaXIsIGVu
dHJ5KQorICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKGJpbmFyeSkgYW5kIG9zLmFj
Y2VzcyhiaW5hcnksIG9zLlhfT0spOgorICAgICAgICAgICAgICAgICAgICB3ZWJraXRfYmluYXJp
ZXMuYXBwZW5kKGJpbmFyeSkKKyAgICAgICAgaWYgbGVuKHdlYmtpdF9iaW5hcmllcykgPCAyOgor
ICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdDb3VsZCBub3QgZmluZCByZXF1aXJlZCBX
ZWJLaXQgUHJvY2VzcyBiaW5hcmllcy4gQ2hlY2sgaWYgeW91IGFyZSBwYXNzaW5nIHRoZSByaWdo
dCBwbGF0Zm9ybSB2YWx1ZS4nKQorICAgICAgICByZXR1cm4gd2Via2l0X2JpbmFyaWVzCisKKwor
ICAgIGRlZiBfZ2V0X3dlYmtpdF9idW5kbGVsaWIoc2VsZik6CisgICAgICAgIGxpYl9kaXIgPSBv
cy5wYXRoLmpvaW4oc2VsZi5fYnVpbGRwYXRoLCAnbGliJykKKyAgICAgICAgYnVuZGxlX2xpYiA9
IE5vbmUKKyAgICAgICAgZm9yIGVudHJ5IGluIG9zLmxpc3RkaXIobGliX2Rpcik6CisgICAgICAg
ICAgICBpZiBlbnRyeS5lbmRzd2l0aCgnLnNvJykgYW5kICdpbmplY3RlZGJ1bmRsZScgaW4gZW50
cnkubG93ZXIoKSBhbmQgJ3Rlc3QnIG5vdCBpbiBlbnRyeS5sb3dlcigpOgorICAgICAgICAgICAg
ICAgIGFzc2VydChidW5kbGVfbGliID09IE5vbmUpCisgICAgICAgICAgICAgICAgYnVuZGxlX2xp
YiA9IG9zLnBhdGguam9pbihsaWJfZGlyLCBlbnRyeSkKKyAgICAgICAgICAgICAgICBicmVhawor
ICAgICAgICBhc3NlcnQoYnVuZGxlX2xpYikKKyAgICAgICAgcmV0dXJuIGJ1bmRsZV9saWIKKwor
CisgICAgZGVmIF9jcmVhdGVfemlwKHNlbGYpOgorICAgICAgICBfbG9nLmluZm8oJ0NyZWF0ZSBa
SVAgZmlsZScpCisgICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKHNlbGYuX2J1bmRsZV9maWxl
X3BhdGgsICd3JywgY29tcHJlc3Npb249emlwZmlsZS5aSVBfREVGTEFURUQpIGFzIHppcEhhbmRs
ZToKKyAgICAgICAgICAgIGZvciBkaXJuYW1lLCBzdWJkaXJzLCBmaWxlcyBpbiBvcy53YWxrKHNl
bGYuX3RtcGRpcik6CisgICAgICAgICAgICAgICAgZm9yIGZpbGVuYW1lIGluIGZpbGVzOgorICAg
ICAgICAgICAgICAgICAgICBzeXN0ZW1fZmlsZV9wYXRoID0gb3MucGF0aC5qb2luKGRpcm5hbWUs
IGZpbGVuYW1lKQorICAgICAgICAgICAgICAgICAgICB6aXBfZmlsZV9wYXRoID0gc3lzdGVtX2Zp
bGVfcGF0aC5yZXBsYWNlKHNlbGYuX3RtcGRpciwgJycsIDEpLmxzdHJpcCgnLycpCisgICAgICAg
ICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNsaW5rKHN5c3RlbV9maWxlX3BhdGgpOgorICAgICAg
ICAgICAgICAgICAgICAgICAgc3ltbGlua196aXBfaW5mbyA9IHppcGZpbGUuWmlwSW5mbyh6aXBf
ZmlsZV9wYXRoKQorICAgICAgICAgICAgICAgICAgICAgICAgc3ltbGlua196aXBfaW5mby5jcmVh
dGVfc3lzdGVtID0gMyAjIFVuaXggKGZvciBzeW1saW5rIHN1cHBvcnQpCisgICAgICAgICAgICAg
ICAgICAgICAgICBzeW1saW5rX3ppcF9pbmZvLmV4dGVybmFsX2F0dHIgPSAweEExRUQwMDAwICMg
WmlwIHNvZnRsaW5rIG1hZ2ljIG51bWJlcgorICAgICAgICAgICAgICAgICAgICAgICAgemlwSGFu
ZGxlLndyaXRlc3RyKHN5bWxpbmtfemlwX2luZm8sIG9zLnJlYWRsaW5rKHN5c3RlbV9maWxlX3Bh
dGgpKQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAg
emlwSGFuZGxlLndyaXRlKHN5c3RlbV9maWxlX3BhdGgsIHppcF9maWxlX3BhdGgpCisKKworICAg
IGRlZiBfZ2V0X3N5c3RlbV9wYWNrYWdlX25hbWUoc2VsZiwgb2JqZWN0KToKKyAgICAgICAgaWYg
bm90IHNodXRpbC53aGljaCgnZHBrZycpOgorICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9y
KCdBZGRpbmcgc3lzdGVtIGRlcGVuZGVuY2llcyBvbmx5IHN1cHBvcnRlZCBmb3IgZHBrZy1iYXNl
ZCBkaXN0cm9zLiBUcnkgcGFzc2luZyAtLXN5c2xpYnM9YnVuZGxlLWFsbCcpCisgICAgICAgIHJl
dGNvZGUsIHN0ZG91dCwgc3RkZXJyID0gc2VsZi5fcnVuX2NtZF9hbmRfZ2V0X291dHB1dChbJ2Rw
a2cnLCAnLVMnLCBvYmplY3RdKQorICAgICAgICBpZiByZXRjb2RlICE9IDA6CisgICAgICAgICAg
ICAjIEdpdmUgYSBzZWNvbmQtdHJ5IHdpdGggdGhlIHJlYWxwYXRoIG9mIHRoZSBvYmplY3QuCisg
ICAgICAgICAgICAjIFRoaXMgZml4ZXMgaXNzdWUgb24gVWJ1bnR1LTIwLjA0IHRoYXQgaGFzIGEg
L2xpYiBzeW1saW5rIHRvIC91c3IvbGliCisgICAgICAgICAgICAjIGFuZCBvYmplY3RzIHBvaW50
IHRvIC9saWIsIGJ1dCBkcGtnIG9ubHkgcmVjb2duaXplcyB0aGUgZmlsZXMgb24gL3Vzci9saWIK
KyAgICAgICAgICAgIG9iamVjdF9yZWFscGF0aCA9IG9zLnBhdGgucmVhbHBhdGgob2JqZWN0KQor
ICAgICAgICAgICAgaWYgb2JqZWN0X3JlYWxwYXRoICE9IG9iamVjdDoKKyAgICAgICAgICAgICAg
ICByZXRjb2RlLCBzdGRvdXQsIHN0ZGVyciA9IHNlbGYuX3J1bl9jbWRfYW5kX2dldF9vdXRwdXQo
WydkcGtnJywgJy1TJywgb2JqZWN0X3JlYWxwYXRoXSkKKyAgICAgICAgaWYgcmV0Y29kZSAhPSAw
OgorICAgICAgICAgICAgIyBQYWNrYWdlIG5vdCBmb3VuZAorICAgICAgICAgICAgcmV0dXJuIE5v
bmUKKyAgICAgICAgcGFja2FnZSA9IHN0ZG91dC5zcGxpdCgnICcpWzBdLnJzdHJpcCgnOicpCisg
ICAgICAgIF9sb2cuaW5mbygnQWRkIGRlcGVuZGVuY3kgb24gc3lzdGVtIHBhY2thZ2UgWyVzXTog
JXMnICUocGFja2FnZSwgb2JqZWN0KSkKKyAgICAgICAgcmV0dXJuIHBhY2thZ2UKKworCisgICAg
ZGVmIF9nZXRfZ2lvX21vZHVsZXMoc2VsZik6CisgICAgICAgIGdpb19tb2R1bGVzID0gW10KKyAg
ICAgICAgcmV0Y29kZSwgc3Rkb3V0LCBzdGRlcnIgPSBzZWxmLl9ydW5fY21kX2FuZF9nZXRfb3V0
cHV0KFsncGtnLWNvbmZpZycsICctLXZhcmlhYmxlPWdpb21vZHVsZWRpcicsICdnaW8tMi4wJ10p
CisgICAgICAgIGlmIHJldGNvZGUgIT0gMDoKKyAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJv
cignVGhlIHBrZy1jb25maWcgY29tbWFuZCByZXR1cm5lZCBzdGF0dXMgJWQnICUgcmV0Y29kZSkK
KyAgICAgICAgZ2lvX21vZHVsZV9kaXIgPSBzdGRvdXQuc3RyaXAoKQorICAgICAgICBpZiBub3Qg
b3MucGF0aC5pc2RpcihnaW9fbW9kdWxlX2Rpcik6CisgICAgICAgICAgICByYWlzZSBSdW50aW1l
RXJyb3IoJ1RoZSBwa2ctY29uZmlnIGVudHJ5IGZvciBnaW9tb2R1bGVkaXIgaXMgbm90IGEgZGly
ZWN0b3J5OiAlcycgJSBnaW9fbW9kdWxlX2RpcikKKyAgICAgICAgZm9yIGVudHJ5IGluIG9zLmxp
c3RkaXIoZ2lvX21vZHVsZV9kaXIpOgorICAgICAgICAgICAgaWYgZW50cnkuZW5kc3dpdGgoJy5z
bycpOgorICAgICAgICAgICAgICAgIGdpb19tb2R1bGVzLmFwcGVuZChvcy5wYXRoLmpvaW4oZ2lv
X21vZHVsZV9kaXIsIGVudHJ5KSkKKyAgICAgICAgcmV0dXJuIGdpb19tb2R1bGVzCisKKyAgICBk
ZWYgX2dldF9nc3RyZWFtZXJfbW9kdWxlcyhzZWxmKToKKyAgICAgICAgZ3N0cmVhbWVyX3BsdWdp
bnMgPSBbXQorICAgICAgICByZXRjb2RlLCBzdGRvdXQsIHN0ZGVyciA9IHNlbGYuX3J1bl9jbWRf
YW5kX2dldF9vdXRwdXQoWydwa2ctY29uZmlnJywgJy0tdmFyaWFibGU9cGx1Z2luc2RpcicsICdn
c3RyZWFtZXItMS4wJ10pCisgICAgICAgIGlmIHJldGNvZGUgIT0gMDoKKyAgICAgICAgICAgIHJh
aXNlIFJ1bnRpbWVFcnJvcignVGhlIHBrZy1jb25maWcgY29tbWFuZCByZXR1cm5lZCBzdGF0dXMg
JWQnICUgcmV0Y29kZSkKKyAgICAgICAgZ3N0cmFtZXJfcGx1Z2luc19kaXIgPSBzdGRvdXQuc3Ry
aXAoKQorICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2Rpcihnc3RyYW1lcl9wbHVnaW5zX2Rpcik6
CisgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ1RoZSBwa2ctY29uZmlnIGVudHJ5IGZv
ciBwbHVnaW5zZGlyIGlzIG5vdCBhIGRpcmVjdG9yeTogJXMnICUgZ3N0cmFtZXJfcGx1Z2luc19k
aXIpCisgICAgICAgIGZvciBlbnRyeSBpbiBvcy5saXN0ZGlyKGdzdHJhbWVyX3BsdWdpbnNfZGly
KToKKyAgICAgICAgICAgIGlmIGVudHJ5LmVuZHN3aXRoKCcuc28nKToKKyAgICAgICAgICAgICAg
ICBnc3RyZWFtZXJfcGx1Z2lucy5hcHBlbmQob3MucGF0aC5qb2luKGdzdHJhbWVyX3BsdWdpbnNf
ZGlyLCBlbnRyeSkpCisgICAgICAgIHJldHVybiBnc3RyZWFtZXJfcGx1Z2lucworCisKKyAgICBk
ZWYgX2FkZF9vYmplY3Rfb3JfZ2V0X3N5c2RlcChzZWxmLCBvYmplY3QsIG9iamVjdF90eXBlKToK
KyAgICAgICAgcHJvdmlkZWRfYnlfc3lzdGVtX3BhY2thZ2UgPSBOb25lCisgICAgICAgIGlmIHNl
bGYuX3N5c2xpYnMgPT0gJ2J1bmRsZS1hbGwnOgorICAgICAgICAgICAgc2VsZi5fY29weV9hbmRf
cmVtb3ZlX3JwYXRoKG9iamVjdCwgdHlwZT1vYmplY3RfdHlwZSkKKyAgICAgICAgZWxzZToKKyAg
ICAgICAgICAgIHByb3ZpZGVkX2J5X3N5c3RlbV9wYWNrYWdlID0gc2VsZi5fZ2V0X3N5c3RlbV9w
YWNrYWdlX25hbWUob2JqZWN0KQorICAgICAgICAgICAgaWYgbm90IHByb3ZpZGVkX2J5X3N5c3Rl
bV9wYWNrYWdlOgorICAgICAgICAgICAgICAgIHNlbGYuX2NvcHlfYW5kX3JlbW92ZV9ycGF0aChv
YmplY3QsIHR5cGU9b2JqZWN0X3R5cGUpCisgICAgICAgIHJldHVybiBwcm92aWRlZF9ieV9zeXN0
ZW1fcGFja2FnZQorCisgICAgZGVmIF9lbnN1cmVfd3BlX2JhY2tlbmRfc3ltbGluayhzZWxmKToK
KyAgICAgICAgIyBXUEUvV1BFUmVuZGVyZXIgZGxvcGVucyB0aGlzIGxpYnJhcnkgd2l0aG91dCBh
IHZlcnNpb24gc3VmZml4LAorICAgICAgICAjIHNvIHdlIG5lZWQgdG8gZW5zdXJlIHRoZXJlIGlz
IGEgcHJvcGVyIHN5bWxpbmsKKyAgICAgICAgYnVuZGxlX2xpYl9kaXIgPSBvcy5wYXRoLmpvaW4o
c2VsZi5fdG1wZGlyLCAnbGliJykKKyAgICAgICAgd3BlX2JhY2tlbmRfc29uYW1lID0gJ2xpYldQ
RUJhY2tlbmQtZmRvLTEuMC5zbycKKyAgICAgICAgcHJldmlvdXNfZGlyID0gb3MuZ2V0Y3dkKCkK
KyAgICAgICAgZm9yIGVudHJ5IGluIG9zLmxpc3RkaXIoYnVuZGxlX2xpYl9kaXIpOgorICAgICAg
ICAgICAgaWYgZW50cnkuc3RhcnRzd2l0aCh3cGVfYmFja2VuZF9zb25hbWUgKyAnLicpOgorICAg
ICAgICAgICAgICAgIG9zLmNoZGlyKGJ1bmRsZV9saWJfZGlyKQorICAgICAgICAgICAgICAgIGlm
IG5vdCBvcy5wYXRoLmV4aXN0cyh3cGVfYmFja2VuZF9zb25hbWUpOgorICAgICAgICAgICAgICAg
ICAgICBvcy5zeW1saW5rKGVudHJ5LCB3cGVfYmFja2VuZF9zb25hbWUpCisgICAgICAgICAgICAg
ICAgb3MuY2hkaXIocHJldmlvdXNfZGlyKQorICAgICAgICAgICAgICAgIGJyZWFrCisKKyAgICBk
ZWYgX2NyZWF0ZV9idW5kbGUoc2VsZiwgYnVuZGxlX2JpbmFyeSk6CisgICAgICAgIG1haW5fYmlu
YXJ5X3BhdGggPSBvcy5wYXRoLmpvaW4oc2VsZi5fYnVpbGRwYXRoLCAnYmluJywgYnVuZGxlX2Jp
bmFyeSkKKyAgICAgICAgaWYgbm90IG9zLnBhdGguaXNmaWxlKG1haW5fYmluYXJ5X3BhdGgpIG9y
IG5vdCBvcy5hY2Nlc3MobWFpbl9iaW5hcnlfcGF0aCwgb3MuWF9PSyk6CisgICAgICAgICAgICBy
YWlzZSBWYWx1ZUVycm9yKCdDYW5ub3QgZmluZCBiaW5hcnkgZm9yICVzIGF0ICVzJyAlIChidW5k
bGVfYmluYXJ5LCBtYWluX2JpbmFyeV9wYXRoKSApCisKKyAgICAgICAgY29waWVkX2ludGVycHJl
dGVyID0gTm9uZQorICAgICAgICBnaW9fbW9kdWxlcyA9IFtdCisgICAgICAgIGdzdHJlYW1lcl9t
b2R1bGVzID0gW10KKyAgICAgICAgbGlicmFyaWVzX2NoZWNrZWQgPSBzZXQoKQorICAgICAgICBz
eXN0ZW1fcGFja2FnZXNfbmVlZGVkID0gc2V0KCkKKyAgICAgICAgb2JqZWN0c190b19jb3B5ID0g
WyBtYWluX2JpbmFyeV9wYXRoIF0KKyAgICAgICAgaWYgYnVuZGxlX2JpbmFyeSA9PSAnTWluaUJy
b3dzZXInOgorICAgICAgICAgICAgZ2lvX21vZHVsZXMgPSBzZWxmLl9nZXRfZ2lvX21vZHVsZXMo
KQorICAgICAgICAgICAgZ3N0cmVhbWVyX21vZHVsZXMgPSBzZWxmLl9nZXRfZ3N0cmVhbWVyX21v
ZHVsZXMoKQorICAgICAgICAgICAgb2JqZWN0c190b19jb3B5LmV4dGVuZChzZWxmLl9nZXRfd2Vi
a2l0X2JpbmFyaWVzKCkpCisgICAgICAgICAgICBvYmplY3RzX3RvX2NvcHkuYXBwZW5kKHNlbGYu
X2dldF93ZWJraXRfYnVuZGxlbGliKCkpCisgICAgICAgICAgICBvYmplY3RzX3RvX2NvcHkuZXh0
ZW5kKGdpb19tb2R1bGVzKQorICAgICAgICAgICAgb2JqZWN0c190b19jb3B5LmV4dGVuZChnc3Ry
ZWFtZXJfbW9kdWxlcykKKyAgICAgICAgZm9yIG9iamVjdCBpbiBvYmplY3RzX3RvX2NvcHk6Cisg
ICAgICAgICAgICBzeXN0ZW1fcGFja2FnZSA9IE5vbmUKKyAgICAgICAgICAgIGlmIG9iamVjdCBp
biBnaW9fbW9kdWxlczoKKyAgICAgICAgICAgICAgICBzeXN0ZW1fcGFja2FnZSA9IHNlbGYuX2Fk
ZF9vYmplY3Rfb3JfZ2V0X3N5c2RlcChvYmplY3QsICdnaW8nKQorICAgICAgICAgICAgICAgIGlm
IHN5c3RlbV9wYWNrYWdlOgorICAgICAgICAgICAgICAgICAgICBzeXN0ZW1fcGFja2FnZXNfbmVl
ZGVkLmFkZChzeXN0ZW1fcGFja2FnZSkKKyAgICAgICAgICAgIGVsaWYgb2JqZWN0IGluIGdzdHJl
YW1lcl9tb2R1bGVzOgorICAgICAgICAgICAgICAgIHN5c3RlbV9wYWNrYWdlID0gc2VsZi5fYWRk
X29iamVjdF9vcl9nZXRfc3lzZGVwKG9iamVjdCwgJ2dzdCcpCisgICAgICAgICAgICAgICAgaWYg
c3lzdGVtX3BhY2thZ2U6CisgICAgICAgICAgICAgICAgICAgIHN5c3RlbV9wYWNrYWdlc19uZWVk
ZWQuYWRkKHN5c3RlbV9wYWNrYWdlKQorICAgICAgICAgICAgZWxpZiBvYmplY3QuZW5kc3dpdGgo
Jy5zbycpOgorICAgICAgICAgICAgICAgIHNlbGYuX2NvcHlfYW5kX3JlbW92ZV9ycGF0aChvYmpl
Y3QsIHR5cGU9J2xpYicpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYu
X2NvcHlfYW5kX3JlbW92ZV9ycGF0aChvYmplY3QsIHR5cGU9J2JpbicpCisgICAgICAgICAgICAj
IFRoZXJlIGlzIG5vIG5lZWQgdG8gZXhhbWluZSB0aGUgbGlicmFyaWVzIGxpbmtlZCB3aXRoIG9i
amVjdHMgY29taW5nIGZyb20gYSBzeXN0ZW0gcGFja2FnZSwKKyAgICAgICAgICAgICMgYmVjYXVz
ZSBzeXN0ZW0gcGFja2FnZXMgYWxyZWFkeSBkZWNsYXJlIGRlcGVuZGVuY2llcyBiZXR3ZWVuIHRo
ZW0uCisgICAgICAgICAgICAjIEhvd2V2ZXIsIGlmIHdlIGFyZSBydW5uaW5nIHdpdGggc2VsZi5f
c3lzbGlicyA9PSAnYnVuZGxlLWFsbCcgdGhlbiBzeXN0ZW1fcGFja2FnZSB3aWxsIGJlIE5vbmUs
CisgICAgICAgICAgICAjIGFuZCBldmVyeXRoaW5nIHdpbGwgYmUgZXhhbWluZWQgYW5kIGJ1bmRs
ZWQgYXMgd2UgZG9uJ3QgYWNjb3VudCBmb3Igc3lzdGVtIHBhY2thZ2VzIGluIHRoYXQgY2FzZS4K
KyAgICAgICAgICAgIGlmIG5vdCBzeXN0ZW1fcGFja2FnZToKKyAgICAgICAgICAgICAgICBsaWJy
YXJpZXMsIGludGVycHJldGVyID0gc2VsZi5fbGRkX3JlY3Vyc2l2ZV9nZXRfbGlic19hbmRfaW50
ZXJwcmV0ZXIob2JqZWN0KQorICAgICAgICAgICAgICAgIGlmIGNvcGllZF9pbnRlcnByZXRlciBp
cyBOb25lOgorICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLl9zeXNsaWJzID09ICdidW5kbGUt
YWxsJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2NvcHlfYW5kX3JlbW92ZV9ycGF0
aChpbnRlcnByZXRlciwgdHlwZT0naW50ZXJwcmV0ZXInKQorICAgICAgICAgICAgICAgICAgICBj
b3BpZWRfaW50ZXJwcmV0ZXIgPSBpbnRlcnByZXRlcgorICAgICAgICAgICAgICAgIGVsaWYgY29w
aWVkX2ludGVycHJldGVyICE9IGludGVycHJldGVyOgorICAgICAgICAgICAgICAgICAgICByYWlz
ZSBSdW50aW1lRXJyb3IoJ0RldGVjdGVkIGJpbmFyaWVzIHdpdGggZGlmZmVyZW50IGludGVycHJl
dGVyczogJXMgIT0gJXMnICUoY29waWVkX2ludGVycHJldGVyLCBpbnRlcnByZXRlcikpCisgICAg
ICAgICAgICAgICAgIyBGSVhNRTogZm9yIC0tc3lzbGlicz1idW5kbGUtYWxsIHdlIHdvdWxkIGhh
dmUgdG8gY29weSB0aGUgbGlibnNzXypzbyogbGlicmFyaWVzIHdoaWNoIGFyZSBkbG9wZW4nZWQg
PGh0dHBzOi8vYnVncy5kZWJpYW4ub3JnLzIwMzAxND4KKyAgICAgICAgICAgICAgICAjIEFsc28g
d2Ugc2hvdWxkIGluY2x1ZGUgY29uZmlnIGZpbGVzIGxpa2UgZm9udGNvbmZpZyBzdHVmZiBvciBz
dXBwb3J0IGZpbGVzIGxpa2UgaWNvbnMuCisgICAgICAgICAgICAgICAgZm9yIGxpYnJhcnkgaW4g
bGlicmFyaWVzOgorICAgICAgICAgICAgICAgICAgICBpZiBsaWJyYXJ5IGluIGxpYnJhcmllc19j
aGVja2VkOgorICAgICAgICAgICAgICAgICAgICAgICAgX2xvZy5kZWJ1ZygnU2tpcCBhbHJlYWR5
IGNoZWNrZWQgW2xpYl06ICVzJyAlIGxpYnJhcnkpCisgICAgICAgICAgICAgICAgICAgICAgICBj
b250aW51ZQorICAgICAgICAgICAgICAgICAgICBsaWJyYXJpZXNfY2hlY2tlZC5hZGQobGlicmFy
eSkKKyAgICAgICAgICAgICAgICAgICAgc3lzdGVtX3BhY2thZ2UgPSBzZWxmLl9hZGRfb2JqZWN0
X29yX2dldF9zeXNkZXAobGlicmFyeSwgJ2xpYicpCisgICAgICAgICAgICAgICAgICAgIGlmIHN5
c3RlbV9wYWNrYWdlOgorICAgICAgICAgICAgICAgICAgICAgICAgc3lzdGVtX3BhY2thZ2VzX25l
ZWRlZC5hZGQoc3lzdGVtX3BhY2thZ2UpCisKKyAgICAgICAgc2VsZi5fZW5zdXJlX3dwZV9iYWNr
ZW5kX3N5bWxpbmsoKQorICAgICAgICBzZWxmLl9nZW5lcmF0ZV93cmFwcGVyX3NjcmlwdChpbnRl
cnByZXRlciwgYnVuZGxlX2JpbmFyeSkKKyAgICAgICAgaWYgYnVuZGxlX2JpbmFyeSA9PSAiTWlu
aUJyb3dzZXIiOgorICAgICAgICAgICAgc2VsZi5fZ2VuZXJhdGVfd3JhcHBlcl9zY3JpcHQoaW50
ZXJwcmV0ZXIsIHNlbGYuX3BvcnRfYmluYXJ5X3ByZWZmaXggKyAnV2ViRHJpdmVyJykKKyAgICAg
ICAgc2VsZi5fZ2VuZXJhdGVfaW5zdGFsbF9kZXBzX3NjcmlwdChzeXN0ZW1fcGFja2FnZXNfbmVl
ZGVkKQorCisKK2NsYXNzIEJ1bmRsZVVwbG9hZGVyKG9iamVjdCk6CisKKyAgICBkZWYgX19pbml0
X18oc2VsZiwgYnVuZGxlX2ZpbGVfcGF0aCwgcmVtb3RlX2NvbmZpZ19maWxlLCBidW5kbGVfdHlw
ZSwgcGxhdGZvcm0sIGNvbmZpZ3VyYXRpb24sIGNvbXByZXNzaW9uX3R5cGUsIHJldmlzaW9uLCBs
b2dfbGV2ZWwpOgorICAgICAgICBzZWxmLl9idW5kbGVfZmlsZV9wYXRoID0gYnVuZGxlX2ZpbGVf
cGF0aAorICAgICAgICBzZWxmLl9yZW1vdGVfY29uZmlnX2ZpbGUgPSByZW1vdGVfY29uZmlnX2Zp
bGUKKyAgICAgICAgc2VsZi5fY29uZmlndXJhdGlvbiA9IGNvbmZpZ3VyYXRpb24KKyAgICAgICAg
c2VsZi5fcmV2aXNpb24gPSByZXZpc2lvbgorICAgICAgICBzZWxmLl9idW5kbGVfdHlwZSA9IGJ1
bmRsZV90eXBlCisgICAgICAgIHNlbGYuX3BsYXRmb3JtID0gcGxhdGZvcm0KKyAgICAgICAgc2Vs
Zi5fY29tcHJlc3Npb25fdHlwZSA9IGNvbXByZXNzaW9uX3R5cGUKKyAgICAgICAgc2VsZi5fc2Z0
cF9xdWlldCA9IGxvZ19sZXZlbCA9PSAncXVpZXQnIG9yIGxvZ19sZXZlbCA9PSAnbWluaW1hbCcK
KyAgICAgICAgaWYgbm90IG9zLnBhdGguaXNmaWxlKHNlbGYuX3JlbW90ZV9jb25maWdfZmlsZSk6
CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdDYW4gbm90IGZpbmQgcmVtb3RlIGNvbmZp
ZyBmaWxlIGZvciB1cGxvYWQgYXQgcGF0aCAlcycgJSBzZWxmLl9yZW1vdGVfY29uZmlnX2ZpbGUp
CisKKyAgICBkZWYgX3NoYTI1NnN1bShzZWxmLCBmaWxlKToKKyAgICAgICAgaGFzaCA9IGhhc2hs
aWIuc2hhMjU2KCkKKyAgICAgICAgd2l0aCBvcGVuKGZpbGUsICdyYicpIGFzIGY6CisgICAgICAg
ICAgICBmb3IgY2h1bmsgaW4gaXRlcihsYW1iZGE6IGYucmVhZCg0MDk2KSwgYicnKToKKyAgICAg
ICAgICAgICAgICBoYXNoLnVwZGF0ZShjaHVuaykKKyAgICAgICAgcmV0dXJuIGhhc2guaGV4ZGln
ZXN0KCkKKworICAgIGRlZiBfZ2V0X29zaWR2ZXJzaW9uKHNlbGYpOgorICAgICAgICB3aXRoIG9w
ZW4oJy9ldGMvb3MtcmVsZWFzZScsICdyJykgYXMgb3NyZWxlYXNlX2hhbmRsZToKKyAgICAgICAg
ICAgIGZvciBsaW5lIGluIG9zcmVsZWFzZV9oYW5kbGUucmVhZGxpbmVzKCk6CisgICAgICAgICAg
ICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCdJRD0nKToKKyAgICAgICAgICAgICAgICAgICAgb3Nf
aWQgPSBsaW5lLnNwbGl0KCc9JylbMV0uc3RyaXAoKS5zdHJpcCgnIicpCisgICAgICAgICAgICAg
ICAgaWYgbGluZS5zdGFydHN3aXRoKCdWRVJTSU9OX0lEPScpOgorICAgICAgICAgICAgICAgICAg
ICB2ZXJzaW9uX2lkID0gbGluZS5zcGxpdCgnPScpWzFdLnN0cmlwKCkuc3RyaXAoJyInKQorICAg
ICAgICBhc3NlcnQob3NfaWQpCisgICAgICAgIGFzc2VydCh2ZXJzaW9uX2lkKQorICAgICAgICBv
c2lkdmVyc2lvbiA9IG9zX2lkICsgJy0nICsgdmVyc2lvbl9pZAorICAgICAgICBhc3NlcnQoJyAn
IG5vdCBpbiBvc2lkdmVyc2lvbikKKyAgICAgICAgYXNzZXJ0KGxlbihvc2lkdmVyc2lvbikgPiAz
KQorICAgICAgICByZXR1cm4gb3NpZHZlcnNpb24KKworICAgICMgVGhlIGV4cGVjdGVkIGZvcm1h
dCBmb3IgLS1yZW1vdGUtY29uZmlnLWZpbGUgaXMgc29tZXRoaW5nIGxpa2U6CisgICAgIyB7Cisg
ICAgIyAic2VydmVybmFtZSI6ICJ3ZWJraXRndGsub3JnIiwKKyAgICAjICJzZXJ2ZXJhZGRyZXNz
IjogIndlYmtpdGd0ay5pbnRyYW5ldC1hZGRyZXNzLmxvY2FsIiwKKyAgICAjICJzZXJ2ZXJwb3J0
IjogIjIzIiwKKyAgICAjICJ1c2VybmFtZSI6ICJ1cGxvYWQtYm90LTY0IiwKKyAgICAjICJiYXNl
dXJsIjogImh0dHBzOi8vd2Via2l0Z3RrLm9yZy9idWlsdC1wcm9kdWN0cyIsCisgICAgIyAicmVt
b3RlcGF0aCIgOiAieDg2XzY0L25pZ2h0bHkvJShidW5kbGV0eXBlKXMvJShkaXN0cm9faWRfdmVy
KXMvJShidW5kbGV0eXBlKXNfJShwbGF0Zm9ybSlzXyUoY29uZmlndXJhdGlvbilzX3IlKHZlcnNp
b24pcy4lKGNvbXByZXNzaW9uX3R5cGUpcyIsCisgICAgIyAic3Noa2V5IjogIm91dHB1dCBvZiB0
aGUgcHJpdiBrZXkgaW4gYmFzZTY0LiBFLmcuIGNhdCB+Ly5zc2gvaWRfcnNhfGJhc2U2NCAtdzAi
CisgICAgIyB9CisgICAgZGVmIHVwbG9hZChzZWxmKToKKyAgICAgICAgcmVtb3RlX2RhdGEgPSBq
c29uLmxvYWQob3BlbihzZWxmLl9yZW1vdGVfY29uZmlnX2ZpbGUpKQorICAgICAgICByZW1vdGVf
ZmlsZV9idW5kbGVfcGF0aCA9IHJlbW90ZV9kYXRhWydyZW1vdGVwYXRoJ10gJSB7ICdidW5kbGV0
eXBlJyA6IHNlbGYuX2J1bmRsZV90eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb25maWd1cmF0aW9uJyA6IHNlbGYu
X2NvbmZpZ3VyYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbXByZXNzaW9uX3R5cGUnIDogc2VsZi5fY29tcHJl
c3Npb25fdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnZGlzdHJvX2lkX3ZlcicgOiBzZWxmLl9nZXRfb3NpZHZlcnNp
b24oKS5jYXBpdGFsaXplKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BsYXRmb3JtJyA6IHNlbGYuX3BsYXRmb3JtLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICd2ZXJzaW9uJyA6IHNlbGYuX3JldmlzaW9uIH0KKyAgICAgICAgd2l0aCB0ZW1wZmls
ZS5OYW1lZFRlbXBvcmFyeUZpbGUobW9kZT0ndytiJykgYXMgc3Noa2V5ZmlsZSwgdGVtcGZpbGUu
TmFtZWRUZW1wb3JhcnlGaWxlKG1vZGU9J3crJykgYXMgaGFzaGNoZWNrZmlsZSwgXAorICAgICAg
ICAgICAgIHRlbXBmaWxlLk5hbWVkVGVtcG9yYXJ5RmlsZShtb2RlPSd3KycpIGFzIGxhc3Rpc2Zp
bGUsIHRlbXBmaWxlLk5hbWVkVGVtcG9yYXJ5RmlsZShtb2RlPSd3KycpIGFzIHVwbG9hZGluc3Ry
dWN0aW9uc2ZpbGU6CisKKyAgICAgICAgICAgICMgSW4gdGhlb3J5IE5hbWVkVGVtcG9yYXJ5Rmls
ZSgpIGlzIGFscmVhZHkgY3JlYXRlZCAwNjAwLiBCdXQgaXQgZG9uJ3QgaHVydHMgZW5zdXJpbmcg
dGhpcyBhZ2FpbiBoZXJlLgorICAgICAgICAgICAgb3MuY2htb2Qoc3Noa2V5ZmlsZS5uYW1lLCAw
bzYwMCkKKyAgICAgICAgICAgIHNzaGtleWZpbGUud3JpdGUoYmFzZTY0LmI2NGRlY29kZShyZW1v
dGVfZGF0YVsnc3Noa2V5J10pKQorICAgICAgICAgICAgc3Noa2V5ZmlsZS5mbHVzaCgpCisgICAg
ICAgICAgICAjIEdlbmVyYXRlIGFuZCB1cGxvYWQgYWxzbyBhIHNoYTI1NiBoYXNoCisgICAgICAg
ICAgICBoYXNoZm9yYnVuZGxlID0gc2VsZi5fc2hhMjU2c3VtKHNlbGYuX2J1bmRsZV9maWxlX3Bh
dGgpCisgICAgICAgICAgICBvcy5jaG1vZChoYXNoY2hlY2tmaWxlLm5hbWUsIDBvNjQ0KQorICAg
ICAgICAgICAgaGFzaGNoZWNrZmlsZS53cml0ZSgnJXMgJXNcbicgJSAoaGFzaGZvcmJ1bmRsZSwg
b3MucGF0aC5iYXNlbmFtZShyZW1vdGVfZmlsZV9idW5kbGVfcGF0aCkpKQorICAgICAgICAgICAg
aGFzaGNoZWNrZmlsZS5mbHVzaCgpCisgICAgICAgICAgICAjIEEgTEFTVC1JUyBmaWxlIGZvciBj
b252ZW5pZW5jZQorICAgICAgICAgICAgb3MuY2htb2QobGFzdGlzZmlsZS5uYW1lLCAwbzY0NCkK
KyAgICAgICAgICAgIGxhc3Rpc2ZpbGUud3JpdGUoJyVzXG4nICUgb3MucGF0aC5iYXNlbmFtZShy
ZW1vdGVfZmlsZV9idW5kbGVfcGF0aCkpCisgICAgICAgICAgICBsYXN0aXNmaWxlLmZsdXNoKCkK
KyAgICAgICAgICAgICMgU0ZUUCB1cGxvYWQgaW5zdHJ1Y3Rpb25zIGZpbGUKKyAgICAgICAgICAg
IHVwbG9hZGluc3RydWN0aW9uc2ZpbGUud3JpdGUoJ3Byb2dyZXNzXG4nKQorICAgICAgICAgICAg
dXBsb2FkaW5zdHJ1Y3Rpb25zZmlsZS53cml0ZSgncHV0ICVzICVzXG4nICUgKHNlbGYuX2J1bmRs
ZV9maWxlX3BhdGgsIHJlbW90ZV9maWxlX2J1bmRsZV9wYXRoKSkKKyAgICAgICAgICAgIHVwbG9h
ZGluc3RydWN0aW9uc2ZpbGUud3JpdGUoJ3B1dCAlcyAlc1xuJyAlIChoYXNoY2hlY2tmaWxlLm5h
bWUsIHJlbW90ZV9maWxlX2J1bmRsZV9wYXRoICsgJy5zaGEyNTZzdW0nKSkKKyAgICAgICAgICAg
IHVwbG9hZGluc3RydWN0aW9uc2ZpbGUud3JpdGUoJ3B1dCAlcyAlc1xuJyAlIChsYXN0aXNmaWxl
Lm5hbWUsIG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUocmVtb3RlX2ZpbGVfYnVuZGxlX3Bh
dGgpLCAnTEFTVC1JUycpKSkKKyAgICAgICAgICAgIHVwbG9hZGluc3RydWN0aW9uc2ZpbGUud3Jp
dGUoJ3F1aXRcbicpCisgICAgICAgICAgICB1cGxvYWRpbnN0cnVjdGlvbnNmaWxlLmZsdXNoKCkK
KyAgICAgICAgICAgICMgVGhlIGlkZWEgb2YgdGhpcyBpcyB0byBlbnN1cmUgc2NwIGRvZXNuJ3Qg
YXNrIGFueSBxdWVzdGlvbiAobm90IGV2ZW4gb24gdGhlIGZpcnN0IHJ1bikuCisgICAgICAgICAg
ICAjIFRoaXMgc2hvdWxkIGJlIHNlY3VyZSBlbm91Z2ggYWNjb3JkaW5nIHRvIGh0dHBzOi8vd3d3
LmdyZW13ZWxsLmNvbS9zc2gtbWl0bS1wdWJsaWMta2V5LWF1dGhlbnRpY2F0aW9uCisgICAgICAg
ICAgICBzZnRwQ29tbWFuZCA9IFsnc2Z0cCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAn
LW8nLCAnU3RyaWN0SG9zdEtleUNoZWNraW5nPW5vJywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICctbycsICdVc2VyS25vd25Ib3N0c0ZpbGU9L2Rldi9udWxsJywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICctbycsICdMb2dMZXZlbD1FUlJPUicsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnLVAnLCByZW1vdGVfZGF0YVsnc2VydmVycG9ydCddLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJy1pJywgc3Noa2V5ZmlsZS5uYW1lLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJy1iJywgdXBsb2FkaW5zdHJ1Y3Rpb25zZmlsZS5uYW1lLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJyVzQCVzJyAlIChyZW1vdGVfZGF0YVsndXNlcm5hbWUnXSwgcmVtb3RlX2Rh
dGFbJ3NlcnZlcmFkZHJlc3MnXSldCisgICAgICAgICAgICBfbG9nLmluZm8oJ1VwbG9hZGluZyBi
dW5kbGUgdG8gJXMgYXMgJXMgd2l0aCBzaGEyNTYgaGFzaCAlcycgJSAocmVtb3RlX2RhdGFbJ3Nl
cnZlcm5hbWUnXSwgcmVtb3RlX2ZpbGVfYnVuZGxlX3BhdGgsIGhhc2hmb3JidW5kbGUpKQorICAg
ICAgICAgICAgc2Z0cF9vdXQgPSBzdWJwcm9jZXNzLkRFVk5VTEwgaWYgc2VsZi5fc2Z0cF9xdWll
dCBlbHNlIHN5cy5zdGRvdXQKKyAgICAgICAgICAgIGlmIHN1YnByb2Nlc3MuY2FsbChzZnRwQ29t
bWFuZCwgc3Rkb3V0PXNmdHBfb3V0LCBzdGRlcnI9c2Z0cF9vdXQpICE9IDA6CisgICAgICAgICAg
ICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdUaGUgc2Z0cCBjb21tYW5kIHJldHVybmVkIG5vbi16
ZXJvIHN0YXR1cycpCisKKyAgICAgICAgX2xvZy5sb2coTE9HX01FU1NBR0UsICdEb25lOiBhcmNo
aXZlIHN1Y2VzZnVsbHkgdXBsb2FkZWQgdG8gJXMvJXMnICUgKHJlbW90ZV9kYXRhWydiYXNldXJs
J10sIHJlbW90ZV9maWxlX2J1bmRsZV9wYXRoKSkKKyAgICAgICAgcmV0dXJuIDAKKworCitkZWYg
Y29uZmlndXJlX2xvZ2dpbmcoc2VsZWN0ZWRfbG9nX2xldmVsPSdpbmZvJyk6CisKKyAgICBjbGFz
cyBMb2dIYW5kbGVyKGxvZ2dpbmcuU3RyZWFtSGFuZGxlcik6CisgICAgICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBzdHJlYW0pOgorICAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18oc3RyZWFtKQor
CisgICAgICAgIGRlZiBmb3JtYXQoc2VsZiwgcmVjb3JkKToKKyAgICAgICAgICAgIGlmIHJlY29y
ZC5sZXZlbG5vID4gTE9HX01FU1NBR0U6CisgICAgICAgICAgICAgICAgcmV0dXJuICclczogJXMn
ICUgKHJlY29yZC5sZXZlbG5hbWUsIHJlY29yZC5nZXRNZXNzYWdlKCkpCisgICAgICAgICAgICBy
ZXR1cm4gcmVjb3JkLmdldE1lc3NhZ2UoKQorCisgICAgbG9nZ2luZy5hZGRMZXZlbE5hbWUoTE9H
X01FU1NBR0UsICdNRVNTQUdFJykKKyAgICBpZiBzZWxlY3RlZF9sb2dfbGV2ZWwgPT0gJ2RlYnVn
JzoKKyAgICAgICAgbG9nX2xldmVsID0gbG9nZ2luZy5ERUJVRworICAgIGVsaWYgc2VsZWN0ZWRf
bG9nX2xldmVsID09ICdpbmZvJzoKKyAgICAgICAgbG9nX2xldmVsID0gbG9nZ2luZy5JTkZPCisg
ICAgZWxpZiBzZWxlY3RlZF9sb2dfbGV2ZWwgPT0gJ3F1aWV0JzoKKyAgICAgICAgbG9nX2xldmVs
ID0gbG9nZ2luZy5OT1RTRVQKKyAgICBlbGlmIHNlbGVjdGVkX2xvZ19sZXZlbCA9PSAnbWluaW1h
bCc6CisgICAgICAgIGxvZ19sZXZlbCA9IGxvZ2dpbmcuZ2V0TGV2ZWxOYW1lKExPR19NRVNTQUdF
KQorCisgICAgaGFuZGxlciA9IExvZ0hhbmRsZXIoc3lzLnN0ZG91dCkKKyAgICBsb2dnZXIgPSBs
b2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKKyAgICBsb2dnZXIuYWRkSGFuZGxlcihoYW5kbGVy
KQorICAgIGxvZ2dlci5zZXRMZXZlbChsb2dfbGV2ZWwpCisgICAgcmV0dXJuIGhhbmRsZXIKKwor
CitkZWYgbWFpbigpOgorICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKCd1c2Fn
ZTogJXByb2cgW29wdGlvbnNdJykKKyAgICBjb25maWd1cmF0aW9uID0gcGFyc2VyLmFkZF9tdXR1
YWxseV9leGNsdXNpdmVfZ3JvdXAocmVxdWlyZWQ9VHJ1ZSkKKyAgICBjb25maWd1cmF0aW9uLmFk
ZF9hcmd1bWVudCgnLS1kZWJ1ZycsIGFjdGlvbj0nc3RvcmVfY29uc3QnLCBjb25zdD0nZGVidWcn
LCBkZXN0PSdjb25maWd1cmF0aW9uJykKKyAgICBjb25maWd1cmF0aW9uLmFkZF9hcmd1bWVudCgn
LS1yZWxlYXNlJywgYWN0aW9uPSdzdG9yZV9jb25zdCcsIGNvbnN0PSdyZWxlYXNlJywgZGVzdD0n
Y29uZmlndXJhdGlvbicpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1wbGF0Zm9ybScsIGRl
c3Q9J3BsYXRmb3JtJywgY2hvaWNlcz1bJ2d0aycsICd3cGUnXSwgcmVxdWlyZWQ9VHJ1ZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J1RoZSBXZWJLaXQgcG9ydCB0byBnZW5lcmF0ZSB0
aGUgYnVuZGxlJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWJ1bmRsZScsIGRlc3Q9J2J1
bmRsZV9iaW5hcnknLCBjaG9pY2VzPVsnanNjJywgJ01pbmlCcm93c2VyJywgJ2FsbCddLCByZXF1
aXJlZD1UcnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nU2VsZWN0IHdoYXQgbWFp
biBiaW5hcnkgc2hvdWxkIGJlIGluY2x1ZGVkIGluIHRoZSBidW5kbGUnKQorICAgIHBhcnNlci5h
ZGRfYXJndW1lbnQoJy0tc3lzbGlicycsIGRlc3Q9J3N5c2xpYnMnLCBjaG9pY2VzPVsnYnVuZGxl
LWFsbCcsICdnZW5lcmF0ZS1pbnN0YWxsLXNjcmlwdCddLCBkZWZhdWx0PSdnZW5lcmF0ZS1pbnN0
YWxsLXNjcmlwdCcsCisgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdJZiB2YWx1ZSBpcyAi
YnVuZGxlLWFsbCIsIHRoZSBidW5kbGUgd2lsbCBpbmNsdWRlIF9hbGxfIHRoZSBzeXN0ZW0gbGli
cmFyaWVzIGluc3RlYWQgb2YgYSBpbnN0YWxsLWRlcGVuZGVuY2llcyBzY3JpcHQuXG4nCisgICAg
ICAgICAgICAgICAgICAgICAgICAnSWYgdmFsdWUgaXMgImdlbmVyYXRlLWluc3RhbGwtc2NyaXB0
IiwgdGhlIHN5c3RlbSBsaWJyYXJpZXMgd2lsbCBub3QgYmUgYnVuZGxlZCBhbmQgYSBpbnN0YWxs
LWRlcGVuZGVuY2llcyBzY3JpcHQgd2lsbCBiZSBnZW5lcmF0ZWQgZm9yIHRoaXMgZGlzdHJpYnV0
aW9uLicpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1jb21wcmVzc2lvbicsIGRlc3Q9J2Nv
bXByZXNzaW9uJywgY2hvaWNlcz1bJ3ppcCcsICd0YXIueHonXSwgZGVmYXVsdD0nemlwJykKKyAg
ICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWRlc3RpbmF0aW9uJywgYWN0aW9uPSdzdG9yZScsIGRl
c3Q9J2Rlc3RpbmF0aW9uJywKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J09wdGlvbmFs
IHBhdGggd2VyZSB0byBzdG9yZSB0aGUgYnVuZGxlJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50
KCctLW5vLXN0cmlwJywgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVzdD0nbm9fc3RyaXAnLAorICAg
ICAgICAgICAgICAgICAgICAgICAgaGVscD0nRG8gbm90IHN0cmlwIHRoZSBiaW5hcmllcyBhbmQg
bGlicmFyaWVzIGluc2lkZSB0aGUgYnVuZGxlJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCct
LWxvZy1sZXZlbCcsIGRlc3Q9J2xvZ19sZXZlbCcsIGNob2ljZXM9WydxdWlldCcsICdtaW5pbWFs
JywgJ2luZm8nLCAnZGVidWcnXSwgZGVmYXVsdD0naW5mbycpCisgICAgcGFyc2VyLmFkZF9hcmd1
bWVudCgnLS1yZXZpc2lvbicsIGFjdGlvbj0nc3RvcmUnLCBkZXN0PSd3ZWJraXRfdmVyc2lvbicp
CisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1idWlsZGVyLW5hbWUnLCBhY3Rpb249J3N0b3Jl
JywgZGVzdD0nYnVpbGRlcl9uYW1lJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLXJlbW90
ZS1jb25maWctZmlsZScsIGFjdGlvbj0nc3RvcmUnLCBkZXN0PSdyZW1vdGVfY29uZmlnX2ZpbGUn
LAorICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nT3B0aW9uYWwgY29uZmlndXJhdGlvbiBm
aWxlIHdpdGggdGhlIGNvbmZpZ3VyYXRpb24gbmVlZGVkIHRvIHVwbG9hZCB0aGUgZ2VuZXJhdGVk
IHRoZSBidW5kbGUgdG8gYSByZW1vdGUgc2VydmVyIHZpYSBzZnRwL3NzaC4nKQorICAgIG9wdGlv
bnMgPSBwYXJzZXIucGFyc2VfYXJncygpCisKKyAgICBmbGF0cGFrdXRpbHMucnVuX2luX3NhbmRi
b3hfaWZfYXZhaWxhYmxlKFtzeXMuYXJndlswXSwgJy0tZmxhdHBhay0nICsgb3B0aW9ucy5wbGF0
Zm9ybV0gKyBzeXMuYXJndlsxOl0pCisgICAgaWYgbm90IGZsYXRwYWt1dGlscy5pc19zYW5kYm94
ZWQoKToKKyAgICAgICAgamhidWlsZHV0aWxzLmVudGVyX2poYnVpbGRfZW52aXJvbm1lbnRfaWZf
YXZhaWxhYmxlKG9wdGlvbnMucGxhdGZvcm0pCisKKyAgICBjb25maWd1cmVfbG9nZ2luZyhvcHRp
b25zLmxvZ19sZXZlbCkKKyAgICBidW5kbGVfY3JlYXRvciA9IEJ1bmRsZUNyZWF0b3Iob3B0aW9u
cy5jb25maWd1cmF0aW9uLCBvcHRpb25zLnBsYXRmb3JtLCBvcHRpb25zLmJ1bmRsZV9iaW5hcnks
IG9wdGlvbnMuc3lzbGlicywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90
IG9wdGlvbnMubm9fc3RyaXAsIG9wdGlvbnMuY29tcHJlc3Npb24sIG9wdGlvbnMuZGVzdGluYXRp
b24sIG9wdGlvbnMud2Via2l0X3ZlcnNpb24sIG9wdGlvbnMuYnVpbGRlcl9uYW1lKQorICAgIGJ1
bmRsZV9maWxlX3BhdGggPSBidW5kbGVfY3JlYXRvci5jcmVhdGUoKQorCisgICAgaWYgb3B0aW9u
cy5yZW1vdGVfY29uZmlnX2ZpbGUgaXMgbm90IE5vbmU6CisgICAgICAgIGJ1bmRsZV91cGxvYWRl
ciA9IEJ1bmRsZVVwbG9hZGVyKGJ1bmRsZV9maWxlX3BhdGgsIG9wdGlvbnMucmVtb3RlX2NvbmZp
Z19maWxlLCBvcHRpb25zLmJ1bmRsZV9iaW5hcnksIG9wdGlvbnMucGxhdGZvcm0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuY29uZmlndXJhdGlvbiwg
b3B0aW9ucy5jb21wcmVzc2lvbiwgb3B0aW9ucy53ZWJraXRfdmVyc2lvbiwgb3B0aW9ucy5sb2df
bGV2ZWwpCisgICAgICAgIHJldHVybiBidW5kbGVfdXBsb2FkZXIudXBsb2FkKCkKKyAgICByZXR1
cm4gMAorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgc3lzLmV4aXQobWFpbigp
KQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1qc2MtYnVuZGxlIGIvVG9vbHMv
U2NyaXB0cy9nZW5lcmF0ZS1qc2MtYnVuZGxlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRl
eCAxMjNjODZmYzM2NGNjOGY4OTVlMmE5NjgyZmYwOGUwZGI1N2Y3MGZhLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUt
anNjLWJ1bmRsZQorKysgL2Rldi9udWxsCkBAIC0xLDI1MCArMCwwIEBACi0jIS91c3IvYmluL2Vu
diBweXRob24KLSMKLSMgQ29weXJpZ2h0IChDKSAyMDE4IElnYWxpYSBTLkwuCi0jCi0jIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKLSMKLSMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzCi0j
ICAgIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodCBub3RpY2UsCi0jICAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24KLSMgICAgYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jCi0jIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMgIkFTIElTIiBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQotIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0jIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotIyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7Ci0jIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotIyBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotIyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotaW1wb3J0IGJhc2U2NAotaW1w
b3J0IGRhdGV0aW1lCi1pbXBvcnQgaGFzaGxpYgotaW1wb3J0IGpzb24KLWltcG9ydCBvcHRwYXJz
ZQotaW1wb3J0IG9zCi1pbXBvcnQgc2h1dGlsCi1pbXBvcnQgc3VicHJvY2VzcwotaW1wb3J0IHN5
cwotaW1wb3J0IHRlbXBmaWxlCi1pbXBvcnQgemlwZmlsZQotCi10b3BfbGV2ZWxfZGlyZWN0b3J5
ID0gb3MucGF0aC5ub3JtcGF0aChvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9f
KSwgJy4uJywgJy4uJykpCi1zeXMucGF0aC5pbnNlcnQoMCwgb3MucGF0aC5qb2luKHRvcF9sZXZl
bF9kaXJlY3RvcnksICdUb29scycsICdmbGF0cGFrJykpCi1zeXMucGF0aC5pbnNlcnQoMCwgb3Mu
cGF0aC5qb2luKHRvcF9sZXZlbF9kaXJlY3RvcnksICdUb29scycsICdqaGJ1aWxkJykpCi1pbXBv
cnQgamhidWlsZHV0aWxzCi1pbXBvcnQgZmxhdHBha3V0aWxzCi0KLQotIyBJZGVhbGx5IHdlIHNo
b3VsZCB1c2Ugc29tZXRoaW5nIGxpa2UgbGRkdHJlZSBvciBjcmVhdGUgb3VyIG93biB2ZXJzaW9u
IG9mIHRoYXQKLSMgQnV0IGluIHByYWN0aWNlIGZvciBqc2MgYnVuZGxlcyB0aGVyZSBpc24ndCBy
ZWN1cnNpdmUgbGlicmFyeSBlbnRyaWVzLCBzbyB3ZQotIyB1c2Ugc3RhbmRhcmQgbGRkIGhlcmUg
anVzdCB0byBhdm9pZCBoYXZpbmcgdG8gcmVxdWlyZSBsZGR0cmVlLgotZGVmIGxkZF9nZXRfbGli
c19hbmRfaW50ZXJwcmV0ZXIoYmluYXJ5KToKLSAgICBsZGRDb21tYW5kID0gWydsZGQnLCBiaW5h
cnldCi0gICAgbGRkUHJvY2VzcyA9IHN1YnByb2Nlc3MuUG9wZW4obGRkQ29tbWFuZCwgc3Rkb3V0
PXN1YnByb2Nlc3MuUElQRSwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VUKQotICAgIHN0ZG91dCwg
c3RkZXJyID0gbGRkUHJvY2Vzcy5jb21tdW5pY2F0ZSgpCi0gICAgaWYgbGRkUHJvY2Vzcy5yZXR1
cm5jb2RlICE9IDA6Ci0gICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignVGhlIGxkZCBjb21tYW5k
IHJldHVybmVkIG5vbi16ZXJvIHN0YXR1cycpCi0gICAgbGlicyA9IFtdCi0gICAgZm9yIGxpbmUg
aW4gc3Rkb3V0LnNwbGl0bGluZXMoKToKLSAgICAgICAgbGluZSA9IGxpbmUuc3RyaXAoKQotICAg
ICAgICBpZiAnPT4nIGluIGxpbmU6Ci0gICAgICAgICAgICBsaW5lID0gbGluZS5zcGxpdCgnPT4n
KVsxXS5zdHJpcCgpCi0gICAgICAgICAgICBpZiAnbm90IGZvdW5kJyBpbiBsaW5lOgotICAgICAg
ICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignU29tZSBkZXBlbmRlbmNpZXMgY2FuIG5vdCBi
ZSBmb3VuZCB3aXRoIGxkZC4nKQotICAgICAgICAgICAgbGluZSA9IGxpbmUuc3BsaXQoJyAnKVsw
XS5zdHJpcCgpCi0gICAgICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShsaW5lKToKLSAgICAgICAg
ICAgICAgICBsaWJzLmFwcGVuZChsaW5lKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgbGlu
ZSA9IGxpbmUuc3BsaXQoJyAnKVswXS5zdHJpcCgpCi0gICAgICAgICAgICBpZiBvcy5wYXRoLmlz
ZmlsZShsaW5lKToKLSAgICAgICAgICAgICAgICBpbnRlcnByZXRlciA9IGxpbmUKLSAgICByZXR1
cm4gbGlicywgaW50ZXJwcmV0ZXIKLQotCi1kZWYgZ2VuZXJhdGVfcmVhZG1lKGJ1bmRsZVRtcERp
ciwgYnVpbGRlck5hbWUsIGNvbmZpZ3VyYXRpb24sIHBsYXRmb3JtLCByZXZpc2lvbik6Ci0gICAg
cHJpbnQoJ0dlbmVyYXRlIFJFQURNRS50eHQgZmlsZScpCi0gICAgcmVhZG1lRmlsZSA9IG9zLnBh
dGguam9pbihidW5kbGVUbXBEaXIsICdSRUFETUUudHh0JykKLSAgICB3aXRoIG9wZW4ocmVhZG1l
RmlsZSwgJ3cnKSBhcyByZWFkbWVIYW5kbGU6Ci0gICAgICAgIHJlYWRtZUhhbmRsZS53cml0ZSgn
SlNDIGJ1bmRsZSBkZXRhaWxzXG4nKQotICAgICAgICByZWFkbWVIYW5kbGUud3JpdGUoJyBCdWls
ZGVyIG5hbWU6ICVzXG4nICUgYnVpbGRlck5hbWUpCi0gICAgICAgIHJlYWRtZUhhbmRsZS53cml0
ZSgnIEJ1aWxkZXIgZGF0ZTogJXNcbicgJSBkYXRldGltZS5kYXRldGltZS5ub3coKS5pc29mb3Jt
YXQoKSkKLSAgICAgICAgcmVhZG1lSGFuZGxlLndyaXRlKCcgQ29uZmlndXJhdGlvbjogJXNcbicg
JSBjb25maWd1cmF0aW9uKQotICAgICAgICByZWFkbWVIYW5kbGUud3JpdGUoJyBXZWJLaXQgUGxh
dGZvcm06ICVzXG4nICUgcGxhdGZvcm0pCi0gICAgICAgIHJlYWRtZUhhbmRsZS53cml0ZSgnIFdl
YktpdCBSZXZpc2lvbjogJXNcbicgJSByZXZpc2lvbikKLSAgICAgICAgcmVhZG1lSGFuZGxlLndy
aXRlKCdcbkluc3RydWN0aW9uczogRXhlY3V0ZSB0aGUgcnVuLWpzYyB3cmFwcGVyIHNjcmlwdC5c
bicpCi0gICAgcmV0dXJuIFRydWUKLQotCi1kZWYgZ2VuZXJhdGVfd3JhcHBlcl9zY3JpcHQoYnVu
ZGxlVG1wRGlyLCBpbnRlcnByZXRlcik6Ci0gICAgcHJpbnQoJ0dlbmVyYXRlIHdyYXBwZXIgc2Ny
aXB0IHJ1bi1qc2MnKQotICAgIHNjcmlwdEZpbGUgPSBvcy5wYXRoLmpvaW4oYnVuZGxlVG1wRGly
LCAncnVuLWpzYycpCi0gICAgd2l0aCBvcGVuKHNjcmlwdEZpbGUsICd3JykgYXMgc2NyaXB0SGFu
ZGxlOgotICAgICAgICBzY3JpcHRIYW5kbGUud3JpdGUoJyMhL2Jpbi9zaFxuJykKLSAgICAgICAg
c2NyaXB0SGFuZGxlLndyaXRlKCdNWURJUj0iJChkaXJuYW1lICQocmVhZGxpbmsgLWYgJDApKSJc
bicpCi0gICAgICAgIHNjcmlwdEhhbmRsZS53cml0ZSgnZXhwb3J0IExEX0xJQlJBUllfUEFUSD0i
JHtNWURJUn0vbGliIlxuJykKLSAgICAgICAgc2NyaXB0SGFuZGxlLndyaXRlKCdleGVjICIke01Z
RElSfS9saWIvJXMiICIke01ZRElSfS9iaW4vanNjIiAiJEAiXG4nICUgb3MucGF0aC5iYXNlbmFt
ZShpbnRlcnByZXRlcikpCi0gICAgb3MuY2htb2Qoc2NyaXB0RmlsZSwgMDc1NSkKLQotCi1kZWYg
Y29weV9hbmRfcmVtb3ZlX3JwYXRoKG9yaWdGaWxlLCBkZXN0aW5hdGlvbkRpciwgdHlwZT0nYmlu
Jyk6Ci0gICAgaWYgbm90IG9zLnBhdGguaXNmaWxlKG9yaWdGaWxlKToKLSAgICAgICAgcmFpc2Ug
VmFsdWVFcnJvcignQ2FuIG5vdCBmaW5kIGZpbGUgJXMnICUgb3JpZ0ZpbGUpCi0gICAgcHJpbnQo
J0NvcHkgdG8gYnVuZGxlIFslc106ICVzJyAlICh0eXBlLCBvcmlnRmlsZSkpCi0gICAgc2h1dGls
LmNvcHkob3JpZ0ZpbGUsIGRlc3RpbmF0aW9uRGlyKQotICAgIHRyeToKLSAgICAgICAgcGF0Y2hF
bGZDb21tYW5kID0gWydwYXRjaGVsZicsICctLXJlbW92ZS1ycGF0aCcsIG9zLnBhdGguam9pbihk
ZXN0aW5hdGlvbkRpciwgb3MucGF0aC5iYXNlbmFtZShvcmlnRmlsZSkpXQotICAgICAgICBpZiBz
dWJwcm9jZXNzLmNhbGwocGF0Y2hFbGZDb21tYW5kKSAhPSAwOgotICAgICAgICAgICAgcHJpbnQo
J1dBUk5JTkc6IFRoZSBwYXRjaGVsZiBjb21tYW5kIHJldHVybmVkIG5vbi16ZXJvIHN0YXR1cycp
Ci0gICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKLSAgICAgICAgaWYgZS5lcnJubyA9PSBvcy5lcnJu
by5FTk9FTlQ6Ci0gICAgICAgICAgICBwcmludCgnV0FSTklORzogcGF0Y2hlbGYgbm90IGZvdW5k
LiBOb3QgbW9kaWZ5aW5nIHJwYXRoJykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJhaXNl
Ci0KLQotZGVmIGNyZWF0ZUpTQ0J1bmRsZShjb25maWd1cmF0aW9uLCByZXZpc2lvbj1Ob25lLCBi
dWlsZGVyTmFtZT1Ob25lLCBwbGF0Zm9ybT1Ob25lKToKLSAgICBidWlsZERpciA9IG9zLnBhdGgu
YWJzcGF0aChvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgJy4uJywgJy4u
JywgJ1dlYktpdEJ1aWxkJykpCi0gICAgYmluRGlyID0gb3MucGF0aC5qb2luKGJ1aWxkRGlyLCBj
b25maWd1cmF0aW9uLmNhcGl0YWxpemUoKSwgJ2JpbicpCi0gICAgbGliRGlyID0gb3MucGF0aC5q
b2luKGJ1aWxkRGlyLCBjb25maWd1cmF0aW9uLmNhcGl0YWxpemUoKSwgJ2xpYicpCi0gICAganNj
QmluYXJ5ID0gb3MucGF0aC5qb2luKGJpbkRpciwgJ2pzYycpCi0gICAgaWYgbm90IG9zLnBhdGgu
aXNmaWxlKGpzY0JpbmFyeSkgb3Igbm90IG9zLmFjY2Vzcyhqc2NCaW5hcnksIG9zLlhfT0spOgot
ICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdDYW5ub3QgZmluZCBqc2MgYXQgJXMnICUganNjQmlu
YXJ5KQotCi0gICAgIyBEZWZpbmUgbmFtZXMgYW5kIHBhdGhzIGZvciB0aGUgZ2VuZXJhdGlvbiBv
ZiB0aGUgYnVuZGxlLgotICAgIGJ1bmRsZVRtcERpciA9IG9zLnBhdGguam9pbihidWlsZERpciwg
J2pzY190bXAnKQotICAgIGJ1bmRsZVRtcExpYkRpciA9IG9zLnBhdGguam9pbihidW5kbGVUbXBE
aXIsICdsaWInKQotICAgIGJ1bmRsZVRtcEJpbkRpciA9IG9zLnBhdGguam9pbihidW5kbGVUbXBE
aXIsICdiaW4nKQotICAgIGJ1bmRsZUZpbGVOYW1lID0gJ2pzY18nICsgY29uZmlndXJhdGlvbgot
ICAgIGJ1bmRsZUZpbGVDb21wcmVzc2VkID0gb3MucGF0aC5qb2luKGJ1aWxkRGlyLCBidW5kbGVG
aWxlTmFtZSArICcuemlwJykKLQotICAgICMgQ2xlYW4gZXZlcnl0aGluZyBmcm9tIHByZXZpb3Vz
IHJ1bnMKLSAgICBpZiBvcy5wYXRoLmlzZGlyKGJ1bmRsZVRtcERpcik6Ci0gICAgICAgIHNodXRp
bC5ybXRyZWUoYnVuZGxlVG1wRGlyKQotICAgIGlmIG9zLnBhdGguaXNmaWxlKGJ1bmRsZUZpbGVD
b21wcmVzc2VkKToKLSAgICAgICAgb3MucmVtb3ZlKGJ1bmRsZUZpbGVDb21wcmVzc2VkKQotCi0g
ICAgIyBDcmVhdGUgYnVuZGxlVG1wRGlyIGFuZCBwdXQgdGhlcmUgZXZlcnl0aGluZyBuZWVkZWQu
Ci0gICAgb3MubWFrZWRpcnMoYnVuZGxlVG1wRGlyKQotICAgIG9zLm1ha2VkaXJzKGJ1bmRsZVRt
cExpYkRpcikKLSAgICBvcy5tYWtlZGlycyhidW5kbGVUbXBCaW5EaXIpCi0gICAgY29weV9hbmRf
cmVtb3ZlX3JwYXRoKGpzY0JpbmFyeSwgYnVuZGxlVG1wQmluRGlyLCB0eXBlPSdiaW4nKQotICAg
IGxpYnJhcmllcywgaW50ZXJwcmV0ZXIgPSBsZGRfZ2V0X2xpYnNfYW5kX2ludGVycHJldGVyKGpz
Y0JpbmFyeSkKLSAgICBjb3B5X2FuZF9yZW1vdmVfcnBhdGgoaW50ZXJwcmV0ZXIsIGJ1bmRsZVRt
cExpYkRpciwgdHlwZT0naW50ZXJwcmV0ZXInKQotICAgIGZvciBsaWJyYXJ5IGluIGxpYnJhcmll
czoKLSAgICAgICAgY29weV9hbmRfcmVtb3ZlX3JwYXRoKGxpYnJhcnksIGJ1bmRsZVRtcExpYkRp
ciwgdHlwZT0nbGliJykKLSAgICBnZW5lcmF0ZV9yZWFkbWUoYnVuZGxlVG1wRGlyLCBidWlsZGVy
TmFtZSwgY29uZmlndXJhdGlvbiwgcGxhdGZvcm0sIHJldmlzaW9uKQotICAgIGdlbmVyYXRlX3dy
YXBwZXJfc2NyaXB0KGJ1bmRsZVRtcERpciwgaW50ZXJwcmV0ZXIpCi0KLSAgICAjIGpzdnUgcHJv
amVjdCBwcmVmZXJzIC56aXAgcmF0aGVyIHRoYW4gLnRhci54egotICAgIHdpdGggemlwZmlsZS5a
aXBGaWxlKGJ1bmRsZUZpbGVDb21wcmVzc2VkLCAndycsIGNvbXByZXNzaW9uPXppcGZpbGUuWklQ
X0RFRkxBVEVEKSBhcyB6aXBIYW5kbGU6Ci0gICAgICAgIGZvciBkaXJuYW1lLCBzdWJkaXJzLCBm
aWxlcyBpbiBvcy53YWxrKGJ1bmRsZVRtcERpcik6Ci0gICAgICAgICAgICBmb3IgZmlsZW5hbWUg
aW4gZmlsZXM6Ci0gICAgICAgICAgICAgICAgc3lzdGVtRmlsZVBhdGggPSBvcy5wYXRoLmpvaW4o
ZGlybmFtZSwgZmlsZW5hbWUpCi0gICAgICAgICAgICAgICAgemlwRmlsZVBhdGggPSBzeXN0ZW1G
aWxlUGF0aC5yZXBsYWNlKGJ1bmRsZVRtcERpciwgJycsIDEpLmxzdHJpcCgnLycpCi0gICAgICAg
ICAgICAgICAgemlwSGFuZGxlLndyaXRlKHN5c3RlbUZpbGVQYXRoLCB6aXBGaWxlUGF0aCkKLQot
ICAgIGlmIG5vdCBvcy5wYXRoLmlzZmlsZShidW5kbGVGaWxlQ29tcHJlc3NlZCk6Ci0gICAgICAg
IHJhaXNlIFJ1bnRpbWVFcnJvcignVW5hYmxlIHRvIGNyZWF0ZSB0aGUgZmlsZSAlcycgJSBidW5k
bGVGaWxlQ29tcHJlc3NlZCkKLSAgICByZXR1cm4gYnVuZGxlRmlsZUNvbXByZXNzZWQKLQotCi1k
ZWYgc2hhMjU2c3VtKGJ1bmRsZUZpbGVQYXRoKToKLSAgICBoYXNoID0gaGFzaGxpYi5zaGEyNTYo
KQotICAgIHdpdGggb3BlbihidW5kbGVGaWxlUGF0aCwgJ3JiJykgYXMgZjoKLSAgICAgICAgZm9y
IGNodW5rIGluIGl0ZXIobGFtYmRhOiBmLnJlYWQoNDA5NiksIGInJyk6Ci0gICAgICAgICAgICBo
YXNoLnVwZGF0ZShjaHVuaykKLSAgICByZXR1cm4gaGFzaC5oZXhkaWdlc3QoKQotCi0KLSMgVGhl
IGV4cGVjdGVkIGZvcm1hdCBmb3IgLS1yZW1vdGUtY29uZmlnLWZpbGUgaXMgc29tZXRoaW5nIGxp
a2U6Ci0jIHsKLSMgInNlcnZlcm5hbWUiOiAid2Via2l0Z3RrLm9yZyIsCi0jICJzZXJ2ZXJhZGRy
ZXNzIjogIndlYmtpdGd0ay5pbnRyYW5ldC1hZGRyZXNzLmxvY2FsIiwKLSMgInNlcnZlcnBvcnQi
OiAiMjMiLAotIyAidXNlcm5hbWUiOiAidXBsb2FkLWJvdC02NCIsCi0jICJiYXNldXJsIjogImh0
dHBzOi8vd2Via2l0Z3RrLm9yZy9qc2MtYnVpbHQtcHJvZHVjdHMveDg2XzY0IiwKLSMgInNzaGtl
eSI6ICJvdXRwdXQgb2YgdGhlIHByaXYga2V5IGluIGJhc2U2NC4gRS5nLiBjYXQgfi8uc3NoL2lk
X3JzYXxiYXNlNjQgLXcwIgotIyB9Ci1kZWYgdXBsb2FkSlNDQnVuZGxlKGJ1bmRsZUZpbGVQYXRo
LCByZW1vdGVDb25maWdGaWxlLCBjb25maWd1cmF0aW9uLCByZXZpc2lvbik6Ci0gICAgcmVtb3Rl
RGF0YSA9IGpzb24ubG9hZChvcGVuKHJlbW90ZUNvbmZpZ0ZpbGUpKQotICAgIHJlbW90ZUZpbGVO
YW1lID0gc3RyKHJldmlzaW9uKSArICcuemlwJwotICAgIHJlbW90ZUZpbGVCdW5kbGVQYXRoTmFt
ZSA9IG9zLnBhdGguam9pbihjb25maWd1cmF0aW9uLCByZW1vdGVGaWxlTmFtZSkKLSAgICByZW1v
dGVGaWxlSGFzaFBhdGhOYW1lID0gb3MucGF0aC5qb2luKGNvbmZpZ3VyYXRpb24sIHN0cihyZXZp
c2lvbikgKyAnLnNoYTI1NnN1bScpCi0gICAgd2l0aCB0ZW1wZmlsZS5OYW1lZFRlbXBvcmFyeUZp
bGUoKSBhcyBzc2hrZXlmaWxlOgotICAgICAgICAjIEluIHRoZW9yeSBOYW1lZFRlbXBvcmFyeUZp
bGUoKSBpcyBhbHJlYWR5IGNyZWF0ZWQgMDYwMC4gQnV0IGl0IGRvbid0IGh1cnRzIGVuc3VyaW5n
IHRoaXMgYWdhaW4gaGVyZS4KLSAgICAgICAgb3MuY2htb2Qoc3Noa2V5ZmlsZS5uYW1lLCAwNjAw
KQotICAgICAgICBzc2hrZXlmaWxlLndyaXRlKGJhc2U2NC5iNjRkZWNvZGUocmVtb3RlRGF0YVsn
c3Noa2V5J10pKQotICAgICAgICBzc2hrZXlmaWxlLmZsdXNoKCkKLSAgICAgICAgIyBHZW5lcmF0
ZSBhbmQgdXBsb2FkIGFsc28gYSBzaGEyNTYgaGFzaAotICAgICAgICB3aXRoIHRlbXBmaWxlLk5h
bWVkVGVtcG9yYXJ5RmlsZSgpIGFzIGhhc2hjaGVja2ZpbGU6Ci0gICAgICAgICAgICBoYXNoZm9y
YnVuZGxlID0gc2hhMjU2c3VtKGJ1bmRsZUZpbGVQYXRoKQotICAgICAgICAgICAgb3MuY2htb2Qo
aGFzaGNoZWNrZmlsZS5uYW1lLCAwNjQ0KQotICAgICAgICAgICAgaGFzaGNoZWNrZmlsZS53cml0
ZSgnJXMgJXNcbicgJSAoaGFzaGZvcmJ1bmRsZSwgcmVtb3RlRmlsZU5hbWUpKQotICAgICAgICAg
ICAgaGFzaGNoZWNrZmlsZS5mbHVzaCgpCi0gICAgICAgICAgICB3aXRoIHRlbXBmaWxlLk5hbWVk
VGVtcG9yYXJ5RmlsZSgpIGFzIHVwbG9hZGluc3RydWN0aW9uc2ZpbGU6Ci0gICAgICAgICAgICAg
ICAgdXBsb2FkaW5zdHJ1Y3Rpb25zZmlsZS53cml0ZSgncHJvZ3Jlc3NcbicpCi0gICAgICAgICAg
ICAgICAgdXBsb2FkaW5zdHJ1Y3Rpb25zZmlsZS53cml0ZSgncHV0ICVzICVzXG4nICUgKGJ1bmRs
ZUZpbGVQYXRoLCByZW1vdGVGaWxlQnVuZGxlUGF0aE5hbWUpKQotICAgICAgICAgICAgICAgIHVw
bG9hZGluc3RydWN0aW9uc2ZpbGUud3JpdGUoJ3B1dCAlcyAlc1xuJyAlIChoYXNoY2hlY2tmaWxl
Lm5hbWUsIHJlbW90ZUZpbGVIYXNoUGF0aE5hbWUpKQotICAgICAgICAgICAgICAgIHVwbG9hZGlu
c3RydWN0aW9uc2ZpbGUud3JpdGUoJ3F1aXRcbicpCi0gICAgICAgICAgICAgICAgdXBsb2FkaW5z
dHJ1Y3Rpb25zZmlsZS5mbHVzaCgpCi0gICAgICAgICAgICAgICAgIyBUaGUgaWRlYSBvZiB0aGlz
IGlzIHRvIGVuc3VyZSBzY3AgZG9lc24ndCBhc2sgYW55IHF1ZXN0aW9uIChub3QgZXZlbiBvbiB0
aGUgZmlyc3QgcnVuKS4KLSAgICAgICAgICAgICAgICAjIFRoaXMgc2hvdWxkIGJlIHNlY3VyZSBl
bm91Z2ggYWNjb3JkaW5nIHRvIGh0dHBzOi8vd3d3LmdyZW13ZWxsLmNvbS9zc2gtbWl0bS1wdWJs
aWMta2V5LWF1dGhlbnRpY2F0aW9uCi0gICAgICAgICAgICAgICAgc2Z0cENvbW1hbmQgPSBbJ3Nm
dHAnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctbycsICdTdHJpY3RIb3N0S2V5
Q2hlY2tpbmc9bm8nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctbycsICdVc2Vy
S25vd25Ib3N0c0ZpbGU9L2Rldi9udWxsJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnLW8nLCAnTG9nTGV2ZWw9RVJST1InLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICctUCcsIHJlbW90ZURhdGFbJ3NlcnZlcnBvcnQnXSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnLWknLCBzc2hrZXlmaWxlLm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJy1iJywgdXBsb2FkaW5zdHJ1Y3Rpb25zZmlsZS5uYW1lLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICclc0AlcycgJSAocmVtb3RlRGF0YVsndXNlcm5hbWUnXSwgcmVtb3Rl
RGF0YVsnc2VydmVyYWRkcmVzcyddKV0KLSAgICAgICAgICAgICAgICBwcmludCgnVXBsb2FkaW5n
IGJ1bmRsZSB0byAlcyBhcyAlcyB3aXRoIHNoYTI1NiBoYXNoICVzJyAlIChyZW1vdGVEYXRhWydz
ZXJ2ZXJuYW1lJ10sIHJlbW90ZUZpbGVCdW5kbGVQYXRoTmFtZSwgaGFzaGZvcmJ1bmRsZSkpCi0g
ICAgICAgICAgICAgICAgaWYgc3VicHJvY2Vzcy5jYWxsKHNmdHBDb21tYW5kKSAhPSAwOgotICAg
ICAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ1RoZSBzZnRwIGNvbW1hbmQgcmV0
dXJuZWQgbm9uLXplcm8gc3RhdHVzJykKLQotICAgIHByaW50KCdEb25lOiBhcmNoaXZlIHN1Y2Vz
ZnVsbHkgdXBsb2FkZWQgdG8gJXMvJXMnICUgKHJlbW90ZURhdGFbJ2Jhc2V1cmwnXSwgcmVtb3Rl
RmlsZUJ1bmRsZVBhdGhOYW1lKSkKLSAgICByZXR1cm4gMAotCi0KLWRlZiBtYWluKCk6Ci0gICAg
cGFyc2VyID0gb3B0cGFyc2UuT3B0aW9uUGFyc2VyKCd1c2FnZTogJXByb2cgW29wdGlvbnNdJykK
LSAgICBwYXJzZXIuYWRkX29wdGlvbignLS1wbGF0Zm9ybScsIGRlc3Q9J3BsYXRmb3JtJykKLSAg
ICBwYXJzZXIuYWRkX29wdGlvbignLS1kZWJ1ZycsIGFjdGlvbj0nc3RvcmVfY29uc3QnLCBjb25z
dD0nZGVidWcnLCBkZXN0PSdjb25maWd1cmF0aW9uJykKLSAgICBwYXJzZXIuYWRkX29wdGlvbign
LS1yZWxlYXNlJywgYWN0aW9uPSdzdG9yZV9jb25zdCcsIGNvbnN0PSdyZWxlYXNlJywgZGVzdD0n
Y29uZmlndXJhdGlvbicpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy0tcmV2aXNpb24nLCBhY3Rp
b249J3N0b3JlJywgdHlwZT0nc3RyaW5nJywgZGVzdD0ncmV2aXNpb24nKQotICAgIHBhcnNlci5h
ZGRfb3B0aW9uKCctLWJ1aWxkZXItbmFtZScsIGFjdGlvbj0nc3RvcmUnLCB0eXBlPSdzdHJpbmcn
LCBkZXN0PSdidWlsZGVybmFtZScpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy0tcmVtb3RlLWNv
bmZpZy1maWxlJywgYWN0aW9uPSdzdG9yZScsICB0eXBlPSdzdHJpbmcnLCBkZXN0PSdyZW1vdGVD
b25maWdGaWxlJykKLSAgICBvcHRpb25zLCBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQotCi0g
ICAgaWYgbm90IG9wdGlvbnMucGxhdGZvcm06Ci0gICAgICAgIHBhcnNlci5lcnJvcignUGxhdGZv
cm0gaXMgcmVxdWlyZWQnKQotICAgICAgICByZXR1cm4gMQotICAgIGlmIG5vdCBvcHRpb25zLmNv
bmZpZ3VyYXRpb246Ci0gICAgICAgIHBhcnNlci5lcnJvcignQ29uZmlndXJhdGlvbiBpcyByZXF1
aXJlZCcpCi0gICAgICAgIHJldHVybiAxCi0KLSAgICBwbGF0Zm9ybSA9IG9wdGlvbnMucGxhdGZv
cm0ubG93ZXIoKQotICAgIGNvbmZpZ3VyYXRpb24gPSBvcHRpb25zLmNvbmZpZ3VyYXRpb24ubG93
ZXIoKQotICAgIGlmIHBsYXRmb3JtID09ICdndGsnOgotICAgICAgICBmbGF0cGFrdXRpbHMucnVu
X2luX3NhbmRib3hfaWZfYXZhaWxhYmxlKHN5cy5hcmd2KQotICAgICAgICBpZiBub3QgZmxhdHBh
a3V0aWxzLmlzX3NhbmRib3hlZCgpOgotICAgICAgICAgICAgamhidWlsZHV0aWxzLmVudGVyX2po
YnVpbGRfZW52aXJvbm1lbnRfaWZfYXZhaWxhYmxlKCJndGsiKQotICAgIGVsc2U6Ci0gICAgICAg
IHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoJ1Vuc3VwcG9ydGVkIHBsYXRmb3JtJykKLQotICAg
IGJ1bmRsZUZpbGVQYXRoID0gY3JlYXRlSlNDQnVuZGxlKGNvbmZpZ3VyYXRpb24sIG9wdGlvbnMu
cmV2aXNpb24sIG9wdGlvbnMuYnVpbGRlcm5hbWUsIHBsYXRmb3JtKQotICAgIHByaW50KCdCdW5k
bGUgZmlsZSBjcmVhdGVkIGF0OiAlcycgJSBidW5kbGVGaWxlUGF0aCkKLSAgICBpZiBvcHRpb25z
LnJlbW90ZUNvbmZpZ0ZpbGUgaXMgbm90IE5vbmU6Ci0gICAgICAgIGlmIG5vdCBvcy5wYXRoLmlz
ZmlsZShvcHRpb25zLnJlbW90ZUNvbmZpZ0ZpbGUpOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVF
cnJvcigiQ2FuJ3QgZmluZCByZW1vdGUgY29uZmlnIGZpbGUgZm9yIHVwbG9hZCBhdCBwYXRoICVz
IiAlIG9wdGlvbnMucmVtb3RlQ29uZmlnRmlsZSkKLSAgICAgICAgcmV0dXJuIHVwbG9hZEpTQ0J1
bmRsZShidW5kbGVGaWxlUGF0aCwgb3B0aW9ucy5yZW1vdGVDb25maWdGaWxlLCBvcHRpb25zLmNv
bmZpZ3VyYXRpb24sIG9wdGlvbnMucmV2aXNpb24pCi0gICAgcmV0dXJuIDAKLQotCi1pZiBfX25h
bWVfXyA9PSAnX19tYWluX18nOgotICAgIHN5cy5leGl0KG1haW4oKSkKZGlmZiAtLWdpdCBhL1Rv
b2xzL2poYnVpbGQvamhidWlsZHV0aWxzLnB5IGIvVG9vbHMvamhidWlsZC9qaGJ1aWxkdXRpbHMu
cHkKaW5kZXggYzJlMDgxODVhMmUyODBmZjc5YTQxNDY0NjI1MDAxNTMyNjQ2NTFjNS4uNzYxZTM2
NGQ1NWMzNzdiOTNmZWNlZjg2MDM5NzNjNzBhZjI5MTI1YSAxMDA2NDQKLS0tIGEvVG9vbHMvamhi
dWlsZC9qaGJ1aWxkdXRpbHMucHkKKysrIGIvVG9vbHMvamhidWlsZC9qaGJ1aWxkdXRpbHMucHkK
QEAgLTUzLDcgKzUzLDcgQEAgZGVmIGVudGVyX2poYnVpbGRfZW52aXJvbm1lbnRfaWZfYXZhaWxh
YmxlKHBsYXRmb3JtKToKICAgICB0cnk6CiAgICAgICAgIGltcG9ydCBqaGJ1aWxkLmNvbmZpZwog
ICAgICAgICBmcm9tIGpoYnVpbGQuZXJyb3JzIGltcG9ydCBGYXRhbEVycm9yCi0gICAgICAgIGdl
dHRleHQuaW5zdGFsbCgnamhidWlsZCcsIGxvY2FsZWRpcj1vcy5wYXRoLmpvaW4oc291cmNlX3Bh
dGgsICdtbycpLCB1bmljb2RlPVRydWUpCisgICAgICAgIGdldHRleHQuaW5zdGFsbCgnamhidWls
ZCcsIGxvY2FsZWRpcj1vcy5wYXRoLmpvaW4oc291cmNlX3BhdGgsICdtbycpKQogICAgICAgICBj
b25maWcgPSBqaGJ1aWxkLmNvbmZpZy5Db25maWcoZ2V0X2NvbmZpZ19maWxlX2Zvcl9wbGF0Zm9y
bShwbGF0Zm9ybSksIFtdKQogICAgIGV4Y2VwdCBGYXRhbEVycm9yIGFzIGV4Y2VwdGlvbjoKICAg
ICAgICAgc3lzLnN0ZGVyci53cml0ZSgnQ291bGQgbm90IGxvYWQgamhidWlsZCBjb25maWcgZmls
ZTogJXNcbicgJSBleGNlcHRpb24uYXJnc1swXSkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407248</attachid>
            <date>2020-08-25 16:39:46 -0700</date>
            <delta_ts>2020-08-25 17:08:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215266-20200826013945.patch</filename>
            <type>text/plain</type>
            <size>1971</size>
            <attacher name="Carlos Alberto Lopez Perez">clopez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2MTUxCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMWY2NTk1NWQ5ODA3ZjA2ZmJiNGJhMDViNTE1MzY5Njcz
Y2EzYzc5ZS4uMzU2YjgwNWJlMDY3YWE2Mzg0YzcxMDUzMTRhODEwNzA4NGU2Nzc0NSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1
IEBACisyMDIwLTA4LTI2ICBDYXJsb3MgQWxiZXJ0byBMb3BleiBQZXJleiAgPGNsb3BlekBpZ2Fs
aWEuY29tPgorCisgICAgICAgIFtHVEtdW1dQRV0gQWRkIGEgc2NyaXB0IGZvciBnZW5lcmF0aW5n
IE1pbmlCcm93c2VyIGJ1bmRsZXMgKGZvbGxvdy11cCBmaXgpCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTUyNjYKKworICAgICAgICBVbnJldmlld2Vk
IGZvbGxvdy11cCBmaXguCisKKyAgICAgICAgRW5zdXJlIHRoZSBpbnN0YWxsLWRlcGVuZGVuY2ll
cyBzY3JpcHQgb2YgdGhlIGJ1bmRsZSBjYWxscyBhcHQtZ2V0IHVwZGF0ZQorICAgICAgICBiZWZv
cmUgdHJ5aW5nIHRvIGluc3RhbGwgdGhlIHN5c3RlbSBwYWNrYWdlcyB3aGVuIC0tYXV0b2luc3Rh
bGwgaXMgcGFzc2VkLgorCisgICAgICAgICogU2NyaXB0cy9nZW5lcmF0ZS1idW5kbGU6CisKIDIw
MjAtMDgtMjUgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAog
ICAgICAgICBSZW1vdmUgdW5uZWVkZWQgSEFWRShORVRXT1JLX0ZSQU1FV09SSykgbWFjcm8KZGlm
ZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtYnVuZGxlIGIvVG9vbHMvU2NyaXB0cy9n
ZW5lcmF0ZS1idW5kbGUKaW5kZXggZDY3Y2ExYWM5Y2I3ODE4ZTVlZDY3NTM4NDg3ZTczNzlhYmE5
ZTNmZS4uM2I0MzJkMTkzMzFkM2I5YTYyZmRmZGUyNDc2NjdiYjdhODcyMTIzMSAxMDA3NTUKLS0t
IGEvVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1idW5kbGUKKysrIGIvVG9vbHMvU2NyaXB0cy9nZW5l
cmF0ZS1idW5kbGUKQEAgLTY3LDEyICs2NywxNyBAQCBybSAtZiAiJHtUTVBDSEVDS1BBQ0tBR0VT
fSIKIGlmIFtbIC16ICIke1RPSU5TVEFMTH0iIF1dOyB0aGVuCiAgICAgZWNobyAiQWxsIHJlcXVp
cmVkIGRlcGVuZGVuY2llcyBhcmUgYWxyZWFkeSBpbnN0YWxsZWQiCiBlbHNlCi0gICAgQVVUT0lO
U1RBTEw9IiIKLSAgICBbWyAkeyN9IC1ndCAwIF1dICYmIFtbICIkezF9IiA9PSAiLS1hdXRvaW5z
dGFsbCIgXV0gJiYgQVVUT0lOU1RBTEw9Ii15IiAmJiBleHBvcnQgREVCSUFOX0ZST05URU5EPSJu
b25pbnRlcmFjdGl2ZSIKLSAgICBTVURPPSIiCi0gICAgW1sgJHtVSUR9IC1uZSAwIF1dICYmIFNV
RE89InN1ZG8gLS1wcmVzZXJ2ZS1lbnY9REVCSUFOX0ZST05URU5EIgotCiAgICAgZWNobyAiTmVl
ZCB0byBpbnN0YWxsIHRoZSBmb2xsb3dpbmcgZXh0cmEgcGFja2FnZXM6ICR7VE9JTlNUQUxMfSIK
KyAgICBbWyAkeyN9IC1ndCAwIF1dICYmIFtbICIkezF9IiA9PSAiLS1wcmludG9ubHkiIF1dICYm
IGV4aXQgMAorICAgIFNVRE89IiIKKyAgICBbWyAke1VJRH0gLW5lIDAgXV0gJiYgU1VETz0ic3Vk
byIKKyAgICBBVVRPSU5TVEFMTD0iIgorICAgIGlmIFtbICR7I30gLWd0IDAgXV0gJiYgW1sgIiR7
MX0iID09ICItLWF1dG9pbnN0YWxsIiBdXTsgdGhlbgorICAgICAgICBBVVRPSU5TVEFMTD0iLXki
CisgICAgICAgIGV4cG9ydCBERUJJQU5fRlJPTlRFTkQ9Im5vbmludGVyYWN0aXZlIgorICAgICAg
ICBbWyAke1VJRH0gLW5lIDAgXV0gJiYgU1VETz0ic3VkbyAtLXByZXNlcnZlLWVudj1ERUJJQU5f
RlJPTlRFTkQiCisgICAgICAgICR7U1VET30gYXB0LWdldCB1cGRhdGUKKyAgICBmaQogICAgIHNl
dCAteAogICAgICR7U1VET30gYXB0LWdldCBpbnN0YWxsIC0tbm8taW5zdGFsbC1yZWNvbW1lbmRz
ICR7QVVUT0lOU1RBTEx9ICR7VE9JTlNUQUxMfQogZmkK
</data>

          </attachment>
      

    </bug>

</bugzilla>