<?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>227579</bug_id>
          
          <creation_ts>2021-07-01 04:13:55 -0700</creation_ts>
          <short_desc>Bundle libraries for remote execution in run-jsc-benchmarks</short_desc>
          <delta_ts>2022-12-23 04:30:19 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Angelos Oikonomopoulos">angelos</reporter>
          <assigned_to name="Angelos Oikonomopoulos">angelos</assigned_to>
          <cc>ap</cc>
    
    <cc>clopez</cc>
    
    <cc>dominik.infuehr</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jbedard</cc>
    
    <cc>mark.lam</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
    
    <cc>zhifei_fang</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1774068</commentid>
    <comment_count>0</comment_count>
    <who name="Angelos Oikonomopoulos">angelos</who>
    <bug_when>2021-07-01 04:13:55 -0700</bug_when>
    <thetext>Bundle libraries for remote execution in run-jsc-benchmarks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1774069</commentid>
    <comment_count>1</comment_count>
      <attachid>432676</attachid>
    <who name="Angelos Oikonomopoulos">angelos</who>
    <bug_when>2021-07-01 04:17:46 -0700</bug_when>
    <thetext>Created attachment 432676
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1774420</commentid>
    <comment_count>2</comment_count>
      <attachid>432779</attachid>
    <who name="Angelos Oikonomopoulos">angelos</who>
    <bug_when>2021-07-02 04:22:06 -0700</bug_when>
    <thetext>Created attachment 432779
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1774451</commentid>
    <comment_count>3</comment_count>
      <attachid>432792</attachid>
    <who name="Angelos Oikonomopoulos">angelos</who>
    <bug_when>2021-07-02 07:29:46 -0700</bug_when>
    <thetext>Created attachment 432792
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775645</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-07-08 04:14:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/80316541&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775804</commentid>
    <comment_count>5</comment_count>
      <attachid>432792</attachid>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2021-07-08 14:19:55 -0700</bug_when>
    <thetext>Comment on attachment 432792
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=432792&amp;action=review

The code looks fine, however when I tested it I found unexpected errors.. that is why I&apos;m setting r-

It seems that generating the MiniBrowser bundle with generate-bundle is broken after this patch

$ Tools/Scripts/generate-bundle --platform wpe --release --bundle MiniBrowser 
Traceback (most recent call last):
  File &quot;Tools/Scripts/generate-bundle&quot;, line 606, in &lt;module&gt;
    sys.exit(main())
  File &quot;Tools/Scripts/generate-bundle&quot;, line 596, in main
    bundle_file_path = bundle_creator.create()
  File &quot;Tools/Scripts/generate-bundle&quot;, line 254, in create
    self._create_bundle(bundle_binary)
  File &quot;Tools/Scripts/generate-bundle&quot;, line 388, in _create_bundle
    gio_modules = self._get_gio_modules()
  File &quot;Tools/Scripts/generate-bundle&quot;, line 327, in _get_gio_modules
    retcode, stdout, stderr = self._run_cmd_and_get_output([&apos;pkg-config&apos;, &apos;--variable=giomoduledir&apos;, &apos;gio-2.0&apos;])
AttributeError: &apos;BundleCreator&apos; object has no attribute &apos;_run_cmd_and_get_output&apos;

&gt; Tools/Scripts/bundle-binary:1
&gt; +#!/usr/bin/env python3

Please add the usual copyright boilerplate at the top of each new code file, is the policy of the project to do that.

&gt; Tools/Scripts/webkitpy/binary_bundling/bundle.py:1
&gt; +import logging

Missing copyright boilerplate also here

&gt; Tools/Scripts/webkitpy/binary_bundling/ldd.py:1
&gt; +import logging

Also missing copyright</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1776317</commentid>
    <comment_count>6</comment_count>
      <attachid>433317</attachid>
    <who name="Angelos Oikonomopoulos">angelos</who>
    <bug_when>2021-07-12 07:57:26 -0700</bug_when>
    <thetext>Created attachment 433317
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1776320</commentid>
    <comment_count>7</comment_count>
      <attachid>433319</attachid>
    <who name="Angelos Oikonomopoulos">angelos</who>
    <bug_when>2021-07-12 08:06:59 -0700</bug_when>
    <thetext>Created attachment 433319
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1776597</commentid>
    <comment_count>8</comment_count>
    <who name="Angelos Oikonomopoulos">angelos</who>
    <bug_when>2021-07-13 05:25:01 -0700</bug_when>
    <thetext>(In reply to Carlos Alberto Lopez Perez from comment #5)
&gt; Comment on attachment 432792 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=432792&amp;action=review
&gt; 
&gt; The code looks fine, however when I tested it I found unexpected errors..
&gt; that is why I&apos;m setting r-
&gt; 
&gt; It seems that generating the MiniBrowser bundle with generate-bundle is
&gt; broken after this patch
&gt; 
&gt; $ Tools/Scripts/generate-bundle --platform wpe --release --bundle
&gt; MiniBrowser 
&gt; Traceback (most recent call last):
&gt;   File &quot;Tools/Scripts/generate-bundle&quot;, line 606, in &lt;module&gt;
&gt;     sys.exit(main())
&gt;   File &quot;Tools/Scripts/generate-bundle&quot;, line 596, in main
&gt;     bundle_file_path = bundle_creator.create()
&gt;   File &quot;Tools/Scripts/generate-bundle&quot;, line 254, in create
&gt;     self._create_bundle(bundle_binary)
&gt;   File &quot;Tools/Scripts/generate-bundle&quot;, line 388, in _create_bundle
&gt;     gio_modules = self._get_gio_modules()
&gt;   File &quot;Tools/Scripts/generate-bundle&quot;, line 327, in _get_gio_modules
&gt;     retcode, stdout, stderr = self._run_cmd_and_get_output([&apos;pkg-config&apos;,
&gt; &apos;--variable=giomoduledir&apos;, &apos;gio-2.0&apos;])
&gt; AttributeError: &apos;BundleCreator&apos; object has no attribute
&gt; &apos;_run_cmd_and_get_output&apos;

Oops. Did some more testing of the bundling code after fixing this. AFAICT the only difference that diff -Nur finds is the INTERPRETER= line being moved earlier in the generated script. Tested with the flatpak build with/without generate-install-script and with the jhbuild.

&gt; &gt; Tools/Scripts/bundle-binary:1
&gt; &gt; +#!/usr/bin/env python3
&gt; 
&gt; Please add the usual copyright boilerplate at the top of each new code file,
&gt; is the policy of the project to do that.

Thanks, should be there now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1776759</commentid>
    <comment_count>9</comment_count>
      <attachid>433319</attachid>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2021-07-13 14:33:20 -0700</bug_when>
    <thetext>Comment on attachment 433319
Patch

Patch looks fine! thanks!
BTW, a suggestion to make the bundle-binary script jhbuild/flatpak aware is this diff over your patch: http://sprunge.us/BB3T7i
It adds an optional platform parameter, that when enabled will try to detect jhbuild/flatpak detection on gtk/wpe ports.
So it looks for libraries inside the flatpak container or the jhbuild directories.
If platform is not passed (like when called from the run-jsc-benchmark script then it behaves like now.. doesn&apos;t try to detect jhbuild/flatpak which is not used on javascriptonly builds)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777505</commentid>
    <comment_count>10</comment_count>
    <who name="Angelos Oikonomopoulos">angelos</who>
    <bug_when>2021-07-16 07:20:59 -0700</bug_when>
    <thetext>(In reply to Carlos Alberto Lopez Perez from comment #9)
&gt; Comment on attachment 433319 [details]
&gt; Patch
&gt; 
&gt; Patch looks fine! thanks!
&gt; BTW, a suggestion to make the bundle-binary script jhbuild/flatpak aware is
&gt; this diff over your patch: http://sprunge.us/BB3T7i
&gt; It adds an optional platform parameter, that when enabled will try to detect
&gt; jhbuild/flatpak detection on gtk/wpe ports.
&gt; So it looks for libraries inside the flatpak container or the jhbuild
&gt; directories.
&gt; If platform is not passed (like when called from the run-jsc-benchmark
&gt; script then it behaves like now.. doesn&apos;t try to detect jhbuild/flatpak
&gt; which is not used on javascriptonly builds)

Thanks for the suggestion! ATM (in this patch), `bundle-binary` is only used non-interactively from run-jsc-stress-tests and run-jsc-benchmarks. IIUC, it will work for e.g. a flatpak setup as long as it&apos;s run from within the flatpak container (as for most other scripts). So not sure that explicitly adding flatpak/jhbuild support is needed at this point. But open to adding such if there&apos;s some interactive use I&apos;m unaware of.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777506</commentid>
    <comment_count>11</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-07-16 07:25:33 -0700</bug_when>
    <thetext>Committed r279984 (239727@main): &lt;https://commits.webkit.org/239727@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 433319.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1921655</commentid>
    <comment_count>12</comment_count>
    <who name="Angelos Oikonomopoulos">angelos</who>
    <bug_when>2022-12-23 04:30:19 -0800</bug_when>
    <thetext>*** Bug 189404 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>432676</attachid>
            <date>2021-07-01 04:17:46 -0700</date>
            <delta_ts>2021-07-02 04:17:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227579-20210701111745.patch</filename>
            <type>text/plain</type>
            <size>30134</size>
            <attacher name="Angelos Oikonomopoulos">angelos</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5NDEyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZWVjMjgwYWRmZDU2MGQ5YWY4MmY5MDAxNjkxZWZiMTFk
MDAyNDMwMC4uMzE3OWIzN2RjZDljZWRmN2EzNDUzOGU3MDM4N2Y5MDNmZDFkN2MzMCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1
IEBACisyMDIxLTA3LTAxICBBbmdlbG9zIE9pa29ub21vcG91bG9zICA8YW5nZWxvc0BpZ2FsaWEu
Y29tPgorCisgICAgICAgIEJ1bmRsZSBsaWJyYXJpZXMgZm9yIHJlbW90ZSBleGVjdXRpb24gaW4g
cnVuLWpzYy1iZW5jaG1hcmtzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjc1NzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBTaW1pbGFybHkgdG8gcnVuLWpzYy1zdHJlc3MtdGVzdHMsIGludHJvZHVjZSBh
IGJ1bmRsaW5nIHN0ZXAgdGhhdAorICAgICAgICBzaGlwcyBhbGwgbGlicmFyeSBkZXBlbmRlbmNp
ZXMgdG8gdGhlIHJlbW90ZSBzeXN0ZW0gd2hlbiB1c2luZworICAgICAgICBydW4tanNjLWJlbmNo
bWFya3MgLS1yZW1vdGUuCisKKyAgICAgICAgVGhpcyBwYXRjaCBmYWN0b3JzIG91dCB0aGUgY29k
ZSB0bworICAgICAgICAtIGxvb2t1cCB0aGUgRUxGIGludGVycHJldGVyL2xpYnJhcmllcyBhbmQg
dG8KKyAgICAgICAgLSBzdHJpcCB0aGUgcnBhdGggYW5kIGNyZWF0ZSBhIHdyYXBwZXIgc2NyaXB0
CisgICAgICAgIGZyb20gZ2VuZXJhdGUtYnVuZGxlIGFuZCBwbGFjZXMgaXQgd2Via2l0cHkvYmlu
YXJ5X2J1bmRsaW5nLgorCisgICAgICAgIEl0IGFsc28gaW50cm9kdWNlcyBhIHNpbXBsZXIgc2Ny
aXB0IHRoYXQgb25seSBidW5kbGVzIGEgc2luZ2xlCisgICAgICAgIGJpbmFyeSAoYnVuZGxlLWJp
bmFyeSkgYW5kIHN3aXRjaGVzIHJ1bi1qc2MtYmVuY2htYXJrcyBhbmQKKyAgICAgICAgcnVuLWpz
Yy1zdHJlc3MtdGVzdHMgdG8gdXNlIGl0LgorCisgICAgICAgIEl0IGFsc28gdXBkYXRlcyBydW4t
anNjLWJlbmNobWFyayB0byBwcm9wYWdhdGUgYW55IGVudmlyb25tZW50CisgICAgICAgIHZhcmlh
YmxlcyBpbnRlbmRlZCBmb3IgY29uc3VtcHRpb24gYnkgdGhlIEpTQyBiaW5hcnkuCisKKyAgICAg
ICAgKiBTY3JpcHRzL2dlbmVyYXRlLWJ1bmRsZTogRmFjdG9yIG91dCByZXVzYWJsZSBidW5kbGlu
ZyBjb2RlLgorICAgICAgICAqIFNjcmlwdHMvcnVuLWpzYy1iZW5jaG1hcmtzOiBEbyBidW5kbGlu
ZyBhbmQgdmFyaWFibGUgcHJvcGFnYXRpb24uCisgICAgICAgICogU2NyaXB0cy9ydW4tanNjLXN0
cmVzcy10ZXN0czogU3dpdGNoIHRvIGJ1bmRsZS1iaW5hcnkuCisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9iaW5hcnlfYnVuZGxpbmcvX19pbml0X18ucHk6IEFkZGVkLgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvYmluYXJ5X2J1bmRsaW5nL2J1bmRsZS5weTogQWRkZWQuCisgICAgICAg
IChCaW5hcnlCdW5kbGVyKToKKyAgICAgICAgKEJpbmFyeUJ1bmRsZXIuX19pbml0X18pOgorICAg
ICAgICAoQmluYXJ5QnVuZGxlci5kZXN0aW5hdGlvbl9kaXIpOgorICAgICAgICAoQmluYXJ5QnVu
ZGxlci5jb3B5X2FuZF9yZW1vdmVfcnBhdGgpOgorICAgICAgICAoQmluYXJ5QnVuZGxlci5nZW5l
cmF0ZV93cmFwcGVyX3NjcmlwdCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9iaW5hcnlf
YnVuZGxpbmcvbGRkLnB5OiBBZGRlZC4KKyAgICAgICAgKFNoYXJlZE9iamVjdFJlc29sdmVyKToK
KyAgICAgICAgKFNoYXJlZE9iamVjdFJlc29sdmVyLl9faW5pdF9fKToKKyAgICAgICAgKFNoYXJl
ZE9iamVjdFJlc29sdmVyLl9ydW5fY21kX2FuZF9nZXRfb3V0cHV0KToKKyAgICAgICAgKFNoYXJl
ZE9iamVjdFJlc29sdmVyLl9nZXRfaW50ZXJwcmV0ZXJfb2JqbmFtZSk6CisgICAgICAgIChTaGFy
ZWRPYmplY3RSZXNvbHZlci5fZ2V0X2xpYnNfYW5kX2ludGVycHJldGVyKToKKyAgICAgICAgKFNo
YXJlZE9iamVjdFJlc29sdmVyLl9sZGRfcmVjdXJzaXZlX2dldF9saWJzX2FuZF9pbnRlcnByZXRl
cik6CisgICAgICAgIChTaGFyZWRPYmplY3RSZXNvbHZlci5nZXRfbGlic19hbmRfaW50ZXJwcmV0
ZXIpOgorCiAyMDIxLTA2LTI5ICBaaGlmZWkgRmFuZyAgPHpoaWZlaV9mYW5nQGFwcGxlLmNvbT4K
IAogICAgICAgICBBZGQgbmV3IGFyZ3VtZW50IG9mIGRldmljZSBvcyB2ZXJzaW9uIGZvciByZXBv
cnRpbmcgSmF2YVNjcmlwdENvcmUgdGVzdCByZXN1bHQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Njcmlw
dHMvZ2VuZXJhdGUtYnVuZGxlIGIvVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1idW5kbGUKaW5kZXgg
NzgxYTcwYjljZTRlNzlkY2FmMTk4M2Y4Y2M2YzVhZWIyMzZiZGZlZi4uNWNmZDZhZjJhZDE0NDAz
OTQ4MGY5NDdlZjUyNTE1ZWJjZmEyM2MzNCAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy9nZW5l
cmF0ZS1idW5kbGUKKysrIGIvVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1idW5kbGUKQEAgLTQwLDkg
KzQwLDExIEBAIGltcG9ydCB6aXBmaWxlCiB0b3BfbGV2ZWxfZGlyZWN0b3J5ID0gb3MucGF0aC5u
b3JtcGF0aChvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgJy4uJywgJy4u
JykpCiBzeXMucGF0aC5pbnNlcnQoMCwgb3MucGF0aC5qb2luKHRvcF9sZXZlbF9kaXJlY3Rvcnks
ICdUb29scycsICdmbGF0cGFrJykpCiBzeXMucGF0aC5pbnNlcnQoMCwgb3MucGF0aC5qb2luKHRv
cF9sZXZlbF9kaXJlY3RvcnksICdUb29scycsICdqaGJ1aWxkJykpCitzeXMucGF0aC5pbnNlcnQo
MCwgb3MucGF0aC5qb2luKHRvcF9sZXZlbF9kaXJlY3RvcnksICdUb29scycsICdTY3JpcHRzJywg
J3dlYmtpdHB5JykpCiBpbXBvcnQgamhidWlsZHV0aWxzCiBpbXBvcnQgZmxhdHBha3V0aWxzCi0K
K2Zyb20gYmluYXJ5X2J1bmRsaW5nLmxkZCBpbXBvcnQgU2hhcmVkT2JqZWN0UmVzb2x2ZXIKK2Zy
b20gYmluYXJ5X2J1bmRsaW5nLmJ1bmRsZSBpbXBvcnQgQmluYXJ5QnVuZGxlcgogCiBJTlNUQUxM
X0RFUFNfU0NSSVBUX1RFTVBMQVRFID0gIiIiXAogIyEvYmluL2Jhc2gKQEAgLTEyNyw3ICsxMjks
NyBAQCBjbGFzcyBCdW5kbGVDcmVhdG9yKG9iamVjdCk6CiAgICAgICAgIHNlbGYuX2J1bmRsZV90
eXBlID0gYnVuZGxlX3R5cGUKICAgICAgICAgc2VsZi5fYnVpbGRlcm5hbWUgPSBidWlsZGVyX25h
bWUKICAgICAgICAgc2VsZi5fc3lzbGlicyA9IHN5c2xpYnMKLSAgICAgICAgc2VsZi5fbGRkID0g
bGRkCisgICAgICAgIHNlbGYuX3NoYXJlZF9vYmplY3RfcmVzb2x2ZXIgPSBTaGFyZWRPYmplY3RS
ZXNvbHZlcihsZGQpCiAgICAgICAgIHNlbGYuX3Nob3VsZF9zdHJpcF9vYmplY3RzID0gc2hvdWxk
X3N0cmlwX29iamVjdHMKICAgICAgICAgc2VsZi5fY29tcHJlc3Npb25fdHlwZSA9IGNvbXByZXNz
aW9uX3R5cGUKICAgICAgICAgc2VsZi5fdG1wZGlyID0gTm9uZQpAQCAtMTUxLDc2ICsxNTMsNiBA
QCBjbGFzcyBCdW5kbGVDcmVhdG9yKG9iamVjdCk6CiAgICAgICAgICAgICByZXR1cm4gdGVtcGZp
bGUubWtkdGVtcChwcmVmaXg9b3MucGF0aC5qb2luKG9zLnBhdGguYWJzcGF0aChiYXNlZGlyKSwg
J3RtcCcpKQogICAgICAgICByZXR1cm4gdGVtcGZpbGUubWtkdGVtcCgpCiAKLSAgICBkZWYgX3J1
bl9jbWRfYW5kX2dldF9vdXRwdXQoc2VsZiwgY29tbWFuZCk6Ci0gICAgICAgIGNvbW1hbmRfcHJv
Y2VzcyA9IHN1YnByb2Nlc3MuUG9wZW4oY29tbWFuZCwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwg
c3RkZXJyPXN1YnByb2Nlc3MuU1RET1VULCBlbmNvZGluZz0ndXRmLTgnKQotICAgICAgICBzdGRv
dXQsIHN0ZGVyciA9IGNvbW1hbmRfcHJvY2Vzcy5jb21tdW5pY2F0ZSgpCi0gICAgICAgIHJldHVy
biBjb21tYW5kX3Byb2Nlc3MucmV0dXJuY29kZSwgc3Rkb3V0LCBzdGRlcnIKLQotCi0gICAgZGVm
IF9nZXRfaW50ZXJwcmV0ZXJfb2JqbmFtZShzZWxmLCBvYmplY3QpOgotICAgICAgICAjIE5vdGU6
IHdlIHVzZSBwYXRjaGVsZiB0byBnZXQgdGhlIG9iamVjdCBuYW1lIChub3QgdGhlIHBhdGghKQot
ICAgICAgICAjIG9mIHRoZSBpbnRlcnByZXRlciBiZWNhdXNlIHRoaXMgd29ya3MgcmVnYXJkbGVz
cyBvZiB0aGUKLSAgICAgICAgIyBhcmNoaXRlY3R1cmUgb2YgdGhlIEVMRiBmaWxlLgotICAgICAg
ICByZXRjb2RlLCBzdGRvdXQsIHN0ZGVyciA9IHNlbGYuX3J1bl9jbWRfYW5kX2dldF9vdXRwdXQo
WydwYXRjaGVsZicsICctLXByaW50LWludGVycHJldGVyJywgb2JqZWN0XSkKLSAgICAgICAgaWYg
cmV0Y29kZSAhPSAwOgotICAgICAgICAgICAgX2xvZy5kZWJ1ZygicGF0Y2hlbGYgc3Rkb3V0Olxu
JXNcblBhdGNoZWxmIHN0ZGVycjpcbiVzIiAlIChzdGRvdXQsIHN0ZGVycikpCi0gICAgICAgICAg
ICBpZiAnY2Fubm90IGZpbmQgc2VjdGlvbicgaW4gc3Rkb3V0OgotICAgICAgICAgICAgICAgICMg
VGhpcyBpcyBmaW5lOyB3ZSBvbmx5IGV4cGVjdCBhbiBpbnRlcnByZXRlciBpbiB0aGUgbWFpbiBi
aW5hcnkuCi0gICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgICAgIHJhaXNlIFJ1
bnRpbWVFcnJvcignVGhlIHBhdGNoZWxmIGNvbW1hbmQgcmV0dXJuZWQgbm9uLXplcm8gc3RhdHVz
IGZvciBvYmplY3QgJXMnICUgb2JqZWN0KQotICAgICAgICBpbnRlcnByZXRlcl9wYXRoID0gUHVy
ZVBhdGgoc3Rkb3V0LnN0cmlwKCkpCi0gICAgICAgIHJldHVybiBpbnRlcnByZXRlcl9wYXRoLm5h
bWUKLQotICAgIGRlZiBfZ2V0X2xpYnNfYW5kX2ludGVycHJldGVyKHNlbGYsIG9iamVjdCk6Ci0g
ICAgICAgIGludGVycHJldGVyID0gTm9uZQotICAgICAgICByZXRjb2RlLCBzdGRvdXQsIHN0ZGVy
ciA9IHNlbGYuX3J1bl9jbWRfYW5kX2dldF9vdXRwdXQoW3NlbGYuX2xkZCwgb2JqZWN0XSkKLSAg
ICAgICAgX2xvZy5kZWJ1ZygibGRkIHN0ZG91dDpcbiVzIiAlIHN0ZG91dCkKLSAgICAgICAgaWYg
cmV0Y29kZSAhPSAwOgotICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdUaGUgJXMgY29t
bWFuZCByZXR1cm5lZCBub24temVybyBzdGF0dXMgZm9yIG9iamVjdCAlcycgJSAoc2VsZi5fbGRk
LCBvYmplY3QpKQotICAgICAgICBsaWJzID0gW10KLSAgICAgICAgZm9yIGxpbmUgaW4gc3Rkb3V0
LnNwbGl0bGluZXMoKToKLSAgICAgICAgICAgIGxpbmUgPSBsaW5lLnN0cmlwKCkKLSAgICAgICAg
ICAgIGlmICc9PicgaW4gbGluZToKLSAgICAgICAgICAgICAgICBsaW5lID0gbGluZS5zcGxpdCgn
PT4nKVsxXS5zdHJpcCgpCi0gICAgICAgICAgICAgICAgaWYgJ25vdCBmb3VuZCcgaW4gbGluZToK
LSAgICAgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdsZGQgY2FuIG5vdCByZXNv
bHZlIGFsbCBkZXBlbmRlbmNpZXMgZm9yIG9iamVjdCAlcy4nICUgb2JqZWN0KQotICAgICAgICAg
ICAgICAgIGxpbmUgPSBsaW5lLnNwbGl0KCcgJylbMF0uc3RyaXAoKQotICAgICAgICAgICAgICAg
IGlmIG9zLnBhdGguaXNmaWxlKGxpbmUpOgotICAgICAgICAgICAgICAgICAgICBsaWJzLmFwcGVu
ZChsaW5lKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBsaW5lID0gbGluZS5z
cGxpdCgnICcpWzBdLnN0cmlwKCkKLSAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShs
aW5lKToKLSAgICAgICAgICAgICAgICAgICAgaW50ZXJwcmV0ZXIgPSBsaW5lCi0gICAgICAgIGlm
IGludGVycHJldGVyIGlzIE5vbmU6Ci0gICAgICAgICAgICAjIFRoaXMgaXMgdGhlIGNhc2UgZm9y
IG5vbi1uYXRpdmUgYmluYXJpZXMuIEZvciB0aG9zZSwgd2UKLSAgICAgICAgICAgICMgY2FuIHVz
ZSBhIGNyb3NzLWxkZCAoeGxkZCksIGJ1dCB0aGVuIHRoZSBpbnRlcnByZXRlcgotICAgICAgICAg
ICAgIyBsb29rcyBsaWtlIGFueSBvdGhlciBzaGFyZWQgb2JqZWN0IGluIHRoZSBvdXRwdXQgb2YK
LSAgICAgICAgICAgICMgbGRkLiBUcnkgdG8gaWRlbnRpZnkgaXQgYnkgbG9va2luZyBhdCB0aGUg
b2JqZWN0IG5hbWUKLSAgICAgICAgICAgICMgZnJvbSB0aGUgaW50ZXJwcmV0ZXIgc3RyaW5nLgot
ICAgICAgICAgICAgaW50ZXJwcmV0ZXJfb2JqbmFtZSA9IHNlbGYuX2dldF9pbnRlcnByZXRlcl9v
YmpuYW1lKG9iamVjdCkKLSAgICAgICAgICAgIGZvciBsaWIgaW4gbGliczoKLSAgICAgICAgICAg
ICAgICBpZiBQdXJlUGF0aChsaWIpLm5hbWUgPT0gaW50ZXJwcmV0ZXJfb2JqbmFtZToKLSAgICAg
ICAgICAgICAgICAgICAgaW50ZXJwcmV0ZXIgPSBsaWIKLSAgICAgICAgICAgICAgICAgICAgYnJl
YWsKLSAgICAgICAgICAgICMgSWYgd2UgZm91bmQgYW4gaW50ZXJwcmV0ZXIsIHJlbW92ZSBpdCBm
cm9tIHRoZSBsaWJzLgotICAgICAgICAgICAgbGlicyA9IFtsaWIgZm9yIGxpYiBpbiBsaWJzIGlm
IGxpYiAhPSBpbnRlcnByZXRlcl0KLSAgICAgICAgcmV0dXJuIGxpYnMsIGludGVycHJldGVyCi0K
LQotICAgIGRlZiBfbGRkX3JlY3Vyc2l2ZV9nZXRfbGlic19hbmRfaW50ZXJwcmV0ZXIoc2VsZiwg
b2JqZWN0LCBhbHJlYWR5X2NoZWNrZWRfbGlicyA9IFtdKToKLSAgICAgICAgbGlicywgaW50ZXJw
cmV0ZXIgPSBzZWxmLl9nZXRfbGlic19hbmRfaW50ZXJwcmV0ZXIob2JqZWN0KQotICAgICAgICBp
ZiBsaWJzOgotICAgICAgICAgICAgZm9yIGxpYiBpbiBsaWJzOgotICAgICAgICAgICAgICAgIGlm
IGxpYiBpbiBhbHJlYWR5X2NoZWNrZWRfbGliczoKLSAgICAgICAgICAgICAgICAgICAgY29udGlu
dWUKLSAgICAgICAgICAgICAgICAjIGF2b2lkIHJlY3Vyc2lvbiBsb29wcyAobGliZnJlZXR5cGUu
c28uNiA8LT4gbGliaGFyZmJ1enouc28uMCkKLSAgICAgICAgICAgICAgICBhbHJlYWR5X2NoZWNr
ZWRfbGlicy5hcHBlbmQobGliKQotICAgICAgICAgICAgICAgIHN1Yl9saWJzLCBzdWJfaW50ZXJw
cmV0ZXIgPSBzZWxmLl9sZGRfcmVjdXJzaXZlX2dldF9saWJzX2FuZF9pbnRlcnByZXRlcihsaWIs
IGFscmVhZHlfY2hlY2tlZF9saWJzKQotICAgICAgICAgICAgICAgIGxpYnMuZXh0ZW5kKHN1Yl9s
aWJzKQotICAgICAgICAgICAgICAgIGlmIHN1Yl9pbnRlcnByZXRlciBhbmQgaW50ZXJwcmV0ZXIg
YW5kIHN1Yl9pbnRlcnByZXRlciAhPSBpbnRlcnByZXRlcjoKLSAgICAgICAgICAgICAgICAgICAg
cmFpc2UgUnVudGltZUVycm9yKCdsaWJyYXJ5ICVzIGhhcyBpbnRlcnByZXRlciAlcyBidXQgb2Jq
ZWN0ICVzIGhhcyBpbnRlcnByZXRlciAlcycgJSAobGliLCBzdWJfaW50ZXJwcmV0ZXIsIG9iamVj
dCwgaW50ZXJwcmV0ZXIpKQotICAgICAgICByZXR1cm4gbGlzdChzZXQobGlicykpLCBpbnRlcnBy
ZXRlcgotCiAKICAgICBkZWYgX2dldF9vc3ByZXR0eW5hbWUoc2VsZik6CiAgICAgICAgIHdpdGgg
b3BlbignL2V0Yy9vcy1yZWxlYXNlJywgJ3InKSBhcyBvc3JlbGVhc2VfaGFuZGxlOgpAQCAtMjU4
LDM3ICsxOTAsMjkgQEAgY2xhc3MgQnVuZGxlQ3JlYXRvcihvYmplY3QpOgogCiAKICAgICBkZWYg
X2dlbmVyYXRlX3dyYXBwZXJfc2NyaXB0KHNlbGYsIGludGVycHJldGVyLCBiaW5hcnlfdG9fd3Jh
cCk6Ci0gICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4oc2VsZi5fdG1w
ZGlyLCAnYmluJywgYmluYXJ5X3RvX3dyYXApKToKLSAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVF
cnJvcignQ2FuIG5vdCBmaW5kIGJpbmFyeSB0byB3cmFwIGZvciAlcycgJSBiaW5hcnlfdG9fd3Jh
cCkKLSAgICAgICAgc2VsZi5fd3JhcHBlcl9zY3JpcHRzLmFwcGVuZChiaW5hcnlfdG9fd3JhcCkK
LSAgICAgICAgX2xvZy5pbmZvKCdHZW5lcmF0ZSB3cmFwcGVyIHNjcmlwdCAlcycgJSBiaW5hcnlf
dG9fd3JhcCkKLSAgICAgICAgc2NyaXB0X2ZpbGUgPSBvcy5wYXRoLmpvaW4oc2VsZi5fdG1wZGly
LCBiaW5hcnlfdG9fd3JhcCkKLQotICAgICAgICB3aXRoIG9wZW4oc2NyaXB0X2ZpbGUsICd3Jykg
YXMgc2NyaXB0X2hhbmRsZToKLSAgICAgICAgICAgIHNjcmlwdF9oYW5kbGUud3JpdGUoJyMhL2Jp
bi9zaFxuJykKLSAgICAgICAgICAgIHNjcmlwdF9oYW5kbGUud3JpdGUoJ01ZRElSPSIkKGRpcm5h
bWUgJChyZWFkbGluayAtZiAkMCkpIlxuJykKLSAgICAgICAgICAgIHNjcmlwdF9oYW5kbGUud3Jp
dGUoJ2V4cG9ydCBMRF9MSUJSQVJZX1BBVEg9IiR7TVlESVJ9L2xpYiJcbicpCi0gICAgICAgICAg
ICBpZiBvcy5wYXRoLmlzZGlyKG9zLnBhdGguam9pbihzZWxmLl90bXBkaXIsICdnaW8nKSk6Ci0g
ICAgICAgICAgICAgICAgZ2lvX3ZhciA9ICdHSU9fTU9EVUxFX0RJUicgaWYgc2VsZi5fc3lzbGli
cyA9PSAnYnVuZGxlLWFsbCcgZWxzZSAnR0lPX0VYVFJBX01PRFVMRVMnCi0gICAgICAgICAgICAg
ICAgc2NyaXB0X2hhbmRsZS53cml0ZSgnZXhwb3J0ICVzPSIke01ZRElSfS9naW8iXG4nICUgZ2lv
X3ZhcikKLSAgICAgICAgICAgIGlmIG9zLnBhdGguaXNkaXIob3MucGF0aC5qb2luKHNlbGYuX3Rt
cGRpciwgJ2dzdCcpKToKLSAgICAgICAgICAgICAgICBnc3RfdmFyID0gJ0dTVF9QTFVHSU5fU1lT
VEVNX1BBVEhfMV8wJyBpZiBzZWxmLl9zeXNsaWJzID09ICdidW5kbGUtYWxsJyBlbHNlICdHU1Rf
UExVR0lOX1BBVEhfMV8wJwotICAgICAgICAgICAgICAgIHNjcmlwdF9oYW5kbGUud3JpdGUoJ2V4
cG9ydCAlcz0iJHtNWURJUn0vZ3N0IlxuJyAlIGdzdF92YXIpCi0gICAgICAgICAgICAgICAgc2Ny
aXB0X2hhbmRsZS53cml0ZSgnZXhwb3J0IEdTVF9SRUdJU1RSWV8xXzA9IiR7TVlESVJ9L2dzdC9n
c3RyZWFtZXItMS4wLnJlZ2lzdHJ5IlxuJykKKyAgICAgICAgdmFyaWFibGVzID0gZGljdCgpCisg
ICAgICAgIG15ZGlyID0gc2VsZi5fYnVuZGxlci5WQVJfTVlESVIKKyAgICAgICAgaWYgb3MucGF0
aC5pc2Rpcihvcy5wYXRoLmpvaW4oc2VsZi5fYnVuZGxlci5kZXN0aW5hdGlvbl9kaXIoKSwgJ2dp
bycpKToKKyAgICAgICAgICAgIGdpb192YXIgPSAnR0lPX01PRFVMRV9ESVInIGlmIHNlbGYuX3N5
c2xpYnMgPT0gJ2J1bmRsZS1hbGwnIGVsc2UgJ0dJT19FWFRSQV9NT0RVTEVTJworICAgICAgICAg
ICAgdmFyaWFibGVzW2dpb192YXJdID0gIiR7JXN9L2dpbyIgJSBteWRpcgorCisgICAgICAgIGlm
IG9zLnBhdGguaXNkaXIob3MucGF0aC5qb2luKHNlbGYuX2J1bmRsZXIuZGVzdGluYXRpb25fZGly
KCksICdnc3QnKSk6CisgICAgICAgICAgICBnc3RfdmFyID0gJ0dTVF9QTFVHSU5fU1lTVEVNX1BB
VEhfMV8wJyBpZiBzZWxmLl9zeXNsaWJzID09ICdidW5kbGUtYWxsJyBlbHNlICdHU1RfUExVR0lO
X1BBVEhfMV8wJworICAgICAgICAgICAgdmFyaWFibGVzW2dzdF92YXJdID0gIiR7JXN9L2dzdCIg
JSBteWRpcgorICAgICAgICBpZiBiaW5hcnlfdG9fd3JhcCAhPSAianNjIjoKKyAgICAgICAgICAg
IHZhcmlhYmxlc1snV0VCS0lUX0VYRUNfUEFUSCddID0gIiR7JXN9L2JpbiIgJSBteWRpcgorICAg
ICAgICAgICAgdmFyaWFibGVzWydXRUJLSVRfSU5KRUNURURfQlVORExFX1BBVEgnXSA9ICIkeyVz
fS9saWIiICUgbXlkaXIKKyAgICAgICAgaWYgc2VsZi5fc3lzbGlicyA9PSAnYnVuZGxlLWFsbCc6
CiAgICAgICAgICAgICBpZiBiaW5hcnlfdG9fd3JhcCAhPSAianNjIjoKLSAgICAgICAgICAgICAg
ICBzY3JpcHRfaGFuZGxlLndyaXRlKCdleHBvcnQgV0VCS0lUX0VYRUNfUEFUSD0iJHtNWURJUn0v
YmluIlxuJykKLSAgICAgICAgICAgICAgICBzY3JpcHRfaGFuZGxlLndyaXRlKCdleHBvcnQgV0VC
S0lUX0lOSkVDVEVEX0JVTkRMRV9QQVRIPSIke01ZRElSfS9saWIiXG4nKQotICAgICAgICAgICAg
aWYgc2VsZi5fc3lzbGlicyA9PSAnYnVuZGxlLWFsbCc6Ci0gICAgICAgICAgICAgICAgc2NyaXB0
X2hhbmRsZS53cml0ZSgnSU5URVJQUkVURVI9IiR7TVlESVJ9L2xpYi8lcyJcbicgJSBvcy5wYXRo
LmJhc2VuYW1lKGludGVycHJldGVyKSkKLSAgICAgICAgICAgICAgICBpZiBiaW5hcnlfdG9fd3Jh
cCAhPSAianNjIjoKLSAgICAgICAgICAgICAgICAgICAgc2NyaXB0X2hhbmRsZS53cml0ZSgnZXhw
b3J0IFdFQl9QUk9DRVNTX0NNRF9QUkVGSVg9IiR7SU5URVJQUkVURVJ9IlxuJykKLSAgICAgICAg
ICAgICAgICAgICAgc2NyaXB0X2hhbmRsZS53cml0ZSgnZXhwb3J0IFBMVUdJTl9QUk9DRVNTX0NN
RF9QUkVGSVg9IiR7SU5URVJQUkVURVJ9IlxuJykKLSAgICAgICAgICAgICAgICAgICAgc2NyaXB0
X2hhbmRsZS53cml0ZSgnZXhwb3J0IE5FVFdPUktfUFJPQ0VTU19DTURfUFJFRklYPSIke0lOVEVS
UFJFVEVSfSJcbicpCi0gICAgICAgICAgICAgICAgICAgIHNjcmlwdF9oYW5kbGUud3JpdGUoJ2V4
cG9ydCBHUFVfUFJPQ0VTU19DTURfUFJFRklYPSIke0lOVEVSUFJFVEVSfSJcbicpCi0gICAgICAg
ICAgICAgICAgc2NyaXB0X2hhbmRsZS53cml0ZSgnZXhlYyAiJHtJTlRFUlBSRVRFUn0iICIke01Z
RElSfS9iaW4vJXMiICIkQCJcbicgJSBiaW5hcnlfdG9fd3JhcCkKLSAgICAgICAgICAgIGVsc2U6
Ci0gICAgICAgICAgICAgICAgc2NyaXB0X2hhbmRsZS53cml0ZSgnZXhlYyAiJHtNWURJUn0vYmlu
LyVzIiAiJEAiXG4nICUgYmluYXJ5X3RvX3dyYXApCi0gICAgICAgIG9zLmNobW9kKHNjcmlwdF9m
aWxlLCAwbzc1NSkKKyAgICAgICAgICAgICAgICBmb3IgdmFyIGluIFsnV0VCX1BST0NFU1NfQ01E
X1BSRUZJWCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1BMVUdJTl9QUk9DRVNTX0NN
RF9QUkVGSVgnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdORVRXT1JLX1BST0NFU1Nf
Q01EX1BSRUZJWCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0dQVV9QUk9DRVNTX0NN
RF9QUkVGSVgnXToKKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzW3Zhcl0gPSAiJHslc30i
ICUgc2VsZi5fYnVuZGxlci5WQVJfSU5URVJQUkVURVIKKyAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgIGludGVycHJldGVyID0gTm9uZQorICAgICAgICBzZWxmLl9idW5kbGVyLmdlbmVyYXRlX3dy
YXBwZXJfc2NyaXB0KGludGVycHJldGVyLCBiaW5hcnlfdG9fd3JhcCwgdmFyaWFibGVzKQorICAg
ICAgICBzZWxmLl93cmFwcGVyX3NjcmlwdHMuYXBwZW5kKGJpbmFyeV90b193cmFwKQogCiAgICAg
ZGVmIF9nZW5lcmF0ZV9pbnN0YWxsX2RlcHNfc2NyaXB0KHNlbGYsIHN5c3RlbV9wYWNrYWdlc19u
ZWVkZWQpOgogICAgICAgICBpZiBub3Qgc3lzdGVtX3BhY2thZ2VzX25lZWRlZDoKQEAgLTMxMiwz
NSArMjM2LDYgQEAgY2xhc3MgQnVuZGxlQ3JlYXRvcihvYmplY3QpOgogICAgICAgICAgICAgaW5z
dGFsbGRlcHNfaGFuZGxlLndyaXRlKElOU1RBTExfREVQU19TQ1JJUFRfVEVNUExBVEUgJSB7J3Bh
Y2thZ2VzX25lZWRlZCcgOiAnICcuam9pbihzeXN0ZW1fcGFja2FnZXNfbmVlZGVkKX0gKQogICAg
ICAgICBvcy5jaG1vZChpbnN0YWxsZGVwc19maWxlLCAwbzc1NSkKIAotCi0gICAgZGVmIF9jb3B5
X2FuZF9yZW1vdmVfcnBhdGgoc2VsZiwgb3JpZ19maWxlLCB0eXBlPSdiaW4nLCBkZXN0aW5hdGlv
bl9kaXI9Tm9uZSk6Ci0gICAgICAgIGlmIG5vdCBkZXN0aW5hdGlvbl9kaXI6Ci0gICAgICAgICAg
ICBkaXJfc3VmZml4ID0gJ2xpYicgaWYgdHlwZSA9PSAnaW50ZXJwcmV0ZXInIGVsc2UgdHlwZQot
ICAgICAgICAgICAgZGVzdGluYXRpb25fZGlyID0gb3MucGF0aC5qb2luKHNlbGYuX3RtcGRpciwg
ZGlyX3N1ZmZpeCkKLSAgICAgICAgaWYgbm90IG9zLnBhdGguaXNkaXIoZGVzdGluYXRpb25fZGly
KToKLSAgICAgICAgICAgIG9zLm1ha2VkaXJzKGRlc3RpbmF0aW9uX2RpcikKLQotICAgICAgICBp
ZiBub3Qgb3MucGF0aC5pc2ZpbGUob3JpZ19maWxlKToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVl
RXJyb3IoJ0NhbiBub3QgZmluZCBmaWxlICVzJyAlIG9yaWdfZmlsZSkKLQotICAgICAgICBfbG9n
LmluZm8oJ0FkZCB0byBidW5kbGUgWyVzXTogJXMnICUgKHR5cGUsIG9yaWdfZmlsZSkpCi0gICAg
ICAgIHNodXRpbC5jb3B5KG9yaWdfZmlsZSwgZGVzdGluYXRpb25fZGlyKQotCi0gICAgICAgIGlm
IHNodXRpbC53aGljaCgncGF0Y2hlbGYnKToKLSAgICAgICAgICAgIHBhdGNoX2VsZl9jb21tYW5k
ID0gWydwYXRjaGVsZicsICctLXJlbW92ZS1ycGF0aCcsIG9zLnBhdGguam9pbihkZXN0aW5hdGlv
bl9kaXIsIG9zLnBhdGguYmFzZW5hbWUob3JpZ19maWxlKSldCi0gICAgICAgICAgICBpZiBzdWJw
cm9jZXNzLmNhbGwocGF0Y2hfZWxmX2NvbW1hbmQpICE9IDA6Ci0gICAgICAgICAgICAgICAgX2xv
Zy53YXJuaW5nKCdUaGUgcGF0Y2hlbGYgY29tbWFuZCByZXR1cm5lZCBub24temVybyBzdGF0dXMn
KQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIF9sb2cud2FybmluZygncGF0Y2hlbGYg
bm90IGZvdW5kLiBOb3QgbW9kaWZ5aW5nIHJwYXRoJykKLQotICAgICAgICBpZiBzZWxmLl9zaG91
bGRfc3RyaXBfb2JqZWN0czoKLSAgICAgICAgICAgIGlmIHNodXRpbC53aGljaCgnc3RyaXAnKToK
LSAgICAgICAgICAgICAgICBzdHJpcF9jb21tYW5kID0gWydzdHJpcCcsICctLXN0cmlwLXVubmVl
ZGVkJywgb3MucGF0aC5qb2luKGRlc3RpbmF0aW9uX2Rpciwgb3MucGF0aC5iYXNlbmFtZShvcmln
X2ZpbGUpKV0KLSAgICAgICAgICAgICAgICBpZiBzdWJwcm9jZXNzLmNhbGwoc3RyaXBfY29tbWFu
ZCkgIT0gMDoKLSAgICAgICAgICAgICAgICAgICAgX2xvZy53YXJuaW5nKCdUaGUgc3RyaXAgY29t
bWFuZCByZXR1cm5lZCBub24temVybyBzdGF0dXMnKQotICAgICAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgICAgICBfbG9nLndhcm5pbmcoJ3N0cmlwIG5vdCBmb3VuZC4gTm90IHN0cmlwcGluZyBv
YmplY3QnKQotCiAgICAgZGVmIF9yZW1vdmVfdGVtcGRpcihzZWxmKToKICAgICAgICAgaWYgbm90
IHNlbGYuX3RtcGRpcjoKICAgICAgICAgICAgIHJldHVybgpAQCAtMzQ5LDYgKzI0NCw3IEBAIGNs
YXNzIEJ1bmRsZUNyZWF0b3Iob2JqZWN0KToKIAogICAgIGRlZiBjcmVhdGUoc2VsZik6CiAgICAg
ICAgIHNlbGYuX3RtcGRpciA9IHNlbGYuX2NyZWF0ZV90ZW1wZGlyKHNlbGYuX2J1aWxkcGF0aCkK
KyAgICAgICAgc2VsZi5fYnVuZGxlciA9IEJpbmFyeUJ1bmRsZXIoc2VsZi5fdG1wZGlyLCBzZWxm
Ll9zaG91bGRfc3RyaXBfb2JqZWN0cykKIAogICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShzZWxm
Ll9idW5kbGVfZmlsZV9wYXRoKToKICAgICAgICAgICAgIF9sb2cuaW5mbygnUmVtb3ZpbmcgcHJl
dmlvdXMgYnVuZGxlICVzJyAlIHNlbGYuX2J1bmRsZV9maWxlX3BhdGgpCkBAIC00NTYsMTEgKzM1
MiwxMSBAQCBjbGFzcyBCdW5kbGVDcmVhdG9yKG9iamVjdCk6CiAgICAgZGVmIF9hZGRfb2JqZWN0
X29yX2dldF9zeXNkZXAoc2VsZiwgb2JqZWN0LCBvYmplY3RfdHlwZSk6CiAgICAgICAgIHByb3Zp
ZGVkX2J5X3N5c3RlbV9wYWNrYWdlID0gTm9uZQogICAgICAgICBpZiBzZWxmLl9zeXNsaWJzID09
ICdidW5kbGUtYWxsJzoKLSAgICAgICAgICAgIHNlbGYuX2NvcHlfYW5kX3JlbW92ZV9ycGF0aChv
YmplY3QsIHR5cGU9b2JqZWN0X3R5cGUpCisgICAgICAgICAgICBzZWxmLl9idW5kbGVyLmNvcHlf
YW5kX3JlbW92ZV9ycGF0aChvYmplY3QsIHR5cGU9b2JqZWN0X3R5cGUpCiAgICAgICAgIGVsc2U6
CiAgICAgICAgICAgICBwcm92aWRlZF9ieV9zeXN0ZW1fcGFja2FnZSA9IHNlbGYuX2dldF9zeXN0
ZW1fcGFja2FnZV9uYW1lKG9iamVjdCkKICAgICAgICAgICAgIGlmIG5vdCBwcm92aWRlZF9ieV9z
eXN0ZW1fcGFja2FnZToKLSAgICAgICAgICAgICAgICBzZWxmLl9jb3B5X2FuZF9yZW1vdmVfcnBh
dGgob2JqZWN0LCB0eXBlPW9iamVjdF90eXBlKQorICAgICAgICAgICAgICAgIHNlbGYuX2J1bmRs
ZXIuY29weV9hbmRfcmVtb3ZlX3JwYXRoKG9iamVjdCwgdHlwZT1vYmplY3RfdHlwZSkKICAgICAg
ICAgcmV0dXJuIHByb3ZpZGVkX2J5X3N5c3RlbV9wYWNrYWdlCiAKICAgICBkZWYgX2Vuc3VyZV93
cGVfYmFja2VuZF9zeW1saW5rKHNlbGYpOgpAQCAtNTA2LDIwICs0MDIsMjAgQEAgY2xhc3MgQnVu
ZGxlQ3JlYXRvcihvYmplY3QpOgogICAgICAgICAgICAgICAgIGlmIHN5c3RlbV9wYWNrYWdlOgog
ICAgICAgICAgICAgICAgICAgICBzeXN0ZW1fcGFja2FnZXNfbmVlZGVkLmFkZChzeXN0ZW1fcGFj
a2FnZSkKICAgICAgICAgICAgIGVsaWYgb2JqZWN0LmVuZHN3aXRoKCcuc28nKToKLSAgICAgICAg
ICAgICAgICBzZWxmLl9jb3B5X2FuZF9yZW1vdmVfcnBhdGgob2JqZWN0LCB0eXBlPSdsaWInKQor
ICAgICAgICAgICAgICAgIHNlbGYuX2J1bmRsZXIuY29weV9hbmRfcmVtb3ZlX3JwYXRoKG9iamVj
dCwgdHlwZT0nbGliJykKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc2VsZi5f
Y29weV9hbmRfcmVtb3ZlX3JwYXRoKG9iamVjdCwgdHlwZT0nYmluJykKKyAgICAgICAgICAgICAg
ICBzZWxmLl9idW5kbGVyLmNvcHlfYW5kX3JlbW92ZV9ycGF0aChvYmplY3QsIHR5cGU9J2Jpbicp
CiAgICAgICAgICAgICAjIFRoZXJlIGlzIG5vIG5lZWQgdG8gZXhhbWluZSB0aGUgbGlicmFyaWVz
IGxpbmtlZCB3aXRoIG9iamVjdHMgY29taW5nIGZyb20gYSBzeXN0ZW0gcGFja2FnZSwKICAgICAg
ICAgICAgICMgYmVjYXVzZSBzeXN0ZW0gcGFja2FnZXMgYWxyZWFkeSBkZWNsYXJlIGRlcGVuZGVu
Y2llcyBiZXR3ZWVuIHRoZW0uCiAgICAgICAgICAgICAjIEhvd2V2ZXIsIGlmIHdlIGFyZSBydW5u
aW5nIHdpdGggc2VsZi5fc3lzbGlicyA9PSAnYnVuZGxlLWFsbCcgdGhlbiBzeXN0ZW1fcGFja2Fn
ZSB3aWxsIGJlIE5vbmUsCiAgICAgICAgICAgICAjIGFuZCBldmVyeXRoaW5nIHdpbGwgYmUgZXhh
bWluZWQgYW5kIGJ1bmRsZWQgYXMgd2UgZG9uJ3QgYWNjb3VudCBmb3Igc3lzdGVtIHBhY2thZ2Vz
IGluIHRoYXQgY2FzZS4KICAgICAgICAgICAgIGlmIG5vdCBzeXN0ZW1fcGFja2FnZToKLSAgICAg
ICAgICAgICAgICBsaWJyYXJpZXMsIGludGVycHJldGVyID0gc2VsZi5fbGRkX3JlY3Vyc2l2ZV9n
ZXRfbGlic19hbmRfaW50ZXJwcmV0ZXIob2JqZWN0KQorICAgICAgICAgICAgICAgIGxpYnJhcmll
cywgaW50ZXJwcmV0ZXIgPSBzZWxmLl9zaGFyZWRfb2JqZWN0X3Jlc29sdmVyLmdldF9saWJzX2Fu
ZF9pbnRlcnByZXRlcihvYmplY3QpCiAgICAgICAgICAgICAgICAgaWYgaW50ZXJwcmV0ZXIgaXMg
Tm9uZToKICAgICAgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJDb3VsZCBub3Qg
ZGV0ZXJtaW5lIGludGVycHJldGVyIGZvciBiaW5hcnkgJXMiICUgb2JqZWN0KQogICAgICAgICAg
ICAgICAgIGlmIGNvcGllZF9pbnRlcnByZXRlciBpcyBOb25lOgogICAgICAgICAgICAgICAgICAg
ICBpZiBzZWxmLl9zeXNsaWJzID09ICdidW5kbGUtYWxsJzoKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHNlbGYuX2NvcHlfYW5kX3JlbW92ZV9ycGF0aChpbnRlcnByZXRlciwgdHlwZT0naW50ZXJw
cmV0ZXInKQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fYnVuZGxlci5jb3B5X2FuZF9y
ZW1vdmVfcnBhdGgoaW50ZXJwcmV0ZXIsIHR5cGU9J2ludGVycHJldGVyJykKICAgICAgICAgICAg
ICAgICAgICAgY29waWVkX2ludGVycHJldGVyID0gaW50ZXJwcmV0ZXIKICAgICAgICAgICAgICAg
ICBlbGlmIGNvcGllZF9pbnRlcnByZXRlciAhPSBpbnRlcnByZXRlcjoKICAgICAgICAgICAgICAg
ICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdEZXRlY3RlZCBiaW5hcmllcyB3aXRoIGRpZmZlcmVu
dCBpbnRlcnByZXRlcnM6ICVzICE9ICVzJyAlKGNvcGllZF9pbnRlcnByZXRlciwgaW50ZXJwcmV0
ZXIpKQpAQCAtNjU5LDcgKzU1NSw3IEBAIGRlZiBjb25maWd1cmVfbG9nZ2luZyhzZWxlY3RlZF9s
b2dfbGV2ZWw9J2luZm8nKToKICAgICAgICAgbG9nX2xldmVsID0gbG9nZ2luZy5nZXRMZXZlbE5h
bWUoTE9HX01FU1NBR0UpCiAKICAgICBoYW5kbGVyID0gTG9nSGFuZGxlcihzeXMuc3Rkb3V0KQot
ICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQorICAgIGxvZ2dlciA9IGxv
Z2dpbmcuZ2V0TG9nZ2VyKCkKICAgICBsb2dnZXIuYWRkSGFuZGxlcihoYW5kbGVyKQogICAgIGxv
Z2dlci5zZXRMZXZlbChsb2dfbGV2ZWwpCiAgICAgcmV0dXJuIGhhbmRsZXIKZGlmZiAtLWdpdCBh
L1Rvb2xzL1NjcmlwdHMvcnVuLWpzYy1iZW5jaG1hcmtzIGIvVG9vbHMvU2NyaXB0cy9ydW4tanNj
LWJlbmNobWFya3MKaW5kZXggMDQwMDQzNDdhYmRmOGFiZjA0ODMwODk0NmU0OTE5MGMwZTRhMmNk
NC4uNWUwMTc4ZTBkOGQ2ZWFlNzhhNTM0MGU4OWMxMDViMmZjOTVhN2FkYyAxMDA3NTUKLS0tIGEv
VG9vbHMvU2NyaXB0cy9ydW4tanNjLWJlbmNobWFya3MKKysrIGIvVG9vbHMvU2NyaXB0cy9ydW4t
anNjLWJlbmNobWFya3MKQEAgLTIzNyw2ICsyMzcsNyBAQCAkaW5jbHVkZVNpeFNwZWVkID0gZmFs
c2UKICRpbmNsdWRlVGFpbEJlbmNoID0gdHJ1ZQogJGluY2x1ZGVCaWdJbnRCZW5jaCA9IGZhbHNl
CiAkaW5jbHVkZVByaXZhdGVGaWVsZHNCZW5jaCA9IGZhbHNlCiskbGRkPW5pbAogJG1lYXN1cmVH
Qz1mYWxzZQogJGJlbmNobWFya1BhdHRlcm49bmlsCiAkdmVyYm9zaXR5PTAKQEAgLTE0MTMsMTgg
KzE0MTQsMzggQEAgY2xhc3MgVk0KICAgICBAZXh0cmFFbnZba2V5XSA9IHZhbAogICAgIEBAZXh0
cmFFbnZTZXRba2V5XSA9IHRydWUKICAgZW5kCi0gIAorCisgIGRlZiBjb3B5SW50b0JlbmNoUGF0
aEJ1bmRsZShiYXNlbmFtZSwgb3V0cHV0ZGlyKQorICAgIGJ1bmRsZV9iaW5hcnkgPSAoU0NSSVBU
X1BBVEguZGlybmFtZSArICdidW5kbGUtYmluYXJ5JykucmVhbHBhdGgKKyAgICBjbWQgPSBTaGVs
bHdvcmRzLmpvaW4oWworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1bmRsZV9iaW5hcnks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tZGVzdC1kaXInLCBvdXRwdXRkaXIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQHBhdGgKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgXSkKKyAgICAkc3RkZXJyLnB1dHMgIj4+ICN7Y21kfSIgaWYgJHZlcmJvc2l0eT49MgorICAg
IHJhaXNlIHVubGVzcyBzeXN0ZW0oY21kKQorICAgIEBwYXRoID0gIiN7YmFzZW5hbWV9L2pzYyIK
KyAgZW5kCisKICAgZGVmIGNvcHlJbnRvQmVuY2hQYXRoCiAgICAgcmFpc2UgdW5sZXNzIGNhbkNv
cHlJbnRvQmVuY2hQYXRoCiAgICAgYmFzZW5hbWUsIGZpbGVuYW1lID0gQmVuY2hmaWxlLnVuaXF1
ZUZpbGVuYW1lKCJ2bSIpCiAgICAgcmFpc2UgdW5sZXNzIERpci5ta2RpcihmaWxlbmFtZSkKKyAg
ICBpZiBub3QgJHJlbW90ZUhvc3RzLmVtcHR5PyBhbmQgYHVuYW1lYCA9PSAnTGludXgnCisgICAg
ICBjb3B5SW50b0JlbmNoUGF0aEJ1bmRsZShiYXNlbmFtZSwgU2hlbGx3b3Jkcy5zaGVsbGVzY2Fw
ZShmaWxlbmFtZS50b19zKSkKKyAgICAgIHJldHVybgorICAgIGVuZAorCiAgICAgQGxpYlBhdGgu
ZWFjaCB7CiAgICAgICB8IGxpYlBhdGhQYXJ0IHwKICAgICAgIGNtZCA9ICJjcCAtYSAje1NoZWxs
d29yZHMuc2hlbGxlc2NhcGUobGliUGF0aFBhcnQpfS8qICN7U2hlbGx3b3Jkcy5zaGVsbGVzY2Fw
ZShmaWxlbmFtZS50b19zKX0iCiAgICAgICAkc3RkZXJyLnB1dHMgIj4+ICN7Y21kfSIgaWYgJHZl
cmJvc2l0eT49MgogICAgICAgcmFpc2UgdW5sZXNzIHN5c3RlbShjbWQpCiAgICAgfQotICAgIEBw
YXRoID0gIiN7YmFzZW5hbWV9LyN7QHJlbGF0aXZlQmluUGF0aH0iCisgICAgY21kID0gImNwIC1h
ICN7QHBhdGh9ICN7U2hlbGx3b3Jkcy5zaGVsbGVzY2FwZShmaWxlbmFtZS50b19zKX0iCisgICAg
JHN0ZGVyci5wdXRzICI+PiAje2NtZH0iIGlmICR2ZXJib3NpdHk+PTIKKyAgICByYWlzZSB1bmxl
c3Mgc3lzdGVtKGNtZCkKKyAgICBAcGF0aCA9ICIje2Jhc2VuYW1lfS9qc2MiCiAgICAgQGxpYlBh
dGggPSBbYmFzZW5hbWVdCiAgIGVuZAogICAKQEAgLTIzODksNyArMjQxMCwxNyBAQCBkZWYgd3Jh
cChzdHIsIGNvbHVtbnMpCiAgIH0KICAgcmVzdWx0ICsgY3VyTGluZSArICJcbiIKIGVuZAotICAK
KworZGVmIGV4cG9ydEpTQ0Vudmlyb25tZW50VmFyaWFibGVzCisgIGJ1ZiA9ICIiCisgIEVOVi5l
YWNoIHsKKyAgICB8IG5hbWUsIHZhbHVlIHwKKyAgICBuZXh0IHVubGVzcyBuYW1lLnN0YXJ0X3dp
dGg/KCJKU0NfIikKKyAgICBidWYgPDwgImV4cG9ydCAje25hbWV9PSN7U2hlbGx3b3Jkcy5zaGVs
bGVzY2FwZSh2YWx1ZSl9XG4iCisgIH0KKyAgYnVmCitlbmQKKwogZGVmIHJ1bkFuZEdldFJlc3Vs
dHMKICAgcmVzdWx0cyA9IG5pbAogICBEaXIuY2hkaXIoQkVOQ0hfREFUQV9QQVRIKSB7CkBAIC0z
MDU1LDYgKzMwODYsOCBAQCBiZWdpbgogICAgICAgJGRlcGVuZGVuY2llcy5wdXNoKFBhdGhuYW1l
Lm5ldyhhcmcpLnJlYWxwYXRoKQogICAgIHdoZW4gJy0tY29uZmlnJwogICAgICAgJGNvbmZpZ1Bh
dGggPSBQYXRobmFtZS5uZXcoYXJnKQorICAgIHdoZW4gJy0tbGRkJworICAgICAgJGxkZCA9IGFy
ZwogICAgIHdoZW4gJy0taGVscCcKICAgICAgIHVzYWdlCiAgICAgZWxzZQpAQCAtMzYxMSw2ICsz
NjQ0LDcgQEAgYmVnaW4KICAgaWYgJHByZXBhcmUKICAgICBGaWxlLm9wZW4oIiN7QkVOQ0hfREFU
QV9QQVRIfS9ydW5zY3JpcHQiLCAidyIpIHsKICAgICAgIHwgZmlsZSB8CisgICAgICBmaWxlLnB1
dHMgZXhwb3J0SlNDRW52aXJvbm1lbnRWYXJpYWJsZXMKICAgICAgIGZpbGUucHV0cyAiZWNobyAt
ZSBcIkhPU1ROQU1FOlxcY1wiIgogICAgICAgZmlsZS5wdXRzICJob3N0bmFtZSIKICAgICAgIGZp
bGUucHV0cyAiZWNobyIKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3Mt
dGVzdHMgYi9Ub29scy9TY3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzCmluZGV4IGM5MmEzOTA5
OTYwMGJjYTJjMzVkZWZjMmUzYThkMjNlMzEwZWZjZDMuLmNmMDdkMjNlOGM2MjI3ZmM5NGU3MzQ5
MjZkYmEwODRlNzY3N2VhNGMgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJl
c3MtdGVzdHMKKysrIGIvVG9vbHMvU2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0cwpAQCAtMTkx
OSwzNyArMTkxOSwyMiBAQCBkZWYgcHJlcGFyZUJ1bmRsZQogICAgICAgICAgICAgZW5kCiAKICAg
ICAgICAgICAgIGlmICRyZW1vdGUgYW5kICRob3N0T1MgPT0gImxpbnV4IgotICAgICAgICAgICAg
ICAgIGdlbmVyYXRlX2J1bmRsZSA9IChQYXRobmFtZS5uZXcoVEhJU19TQ1JJUFRfUEFUSCkuZGly
bmFtZSArICdnZW5lcmF0ZS1idW5kbGUnKS5yZWFscGF0aAorICAgICAgICAgICAgICAgIGJ1bmRs
ZV9iaW5hcnkgPSAoUGF0aG5hbWUubmV3KFRISVNfU0NSSVBUX1BBVEgpLmRpcm5hbWUgKyAnYnVu
ZGxlLWJpbmFyeScpLnJlYWxwYXRoCiAgICAgICAgICAgICAgICAgRGlyLm1rdG1wZGlyIHsKICAg
ICAgICAgICAgICAgICAgICAgfCB0bXBkaXIgfAogICAgICAgICAgICAgICAgICAgICAjIEdlbmVy
YXRlIGJ1bmRsZSBpbiBhIHRlbXBvcmFyeSBkaXJlY3Rvcnkgc28gdGhhdAogICAgICAgICAgICAg
ICAgICAgICAjIHdlIGNhbiBzYWZlbHkgcGljayBpdCB1cCByZWdhcmRsZXNzIG9mIGl0cyBuYW1l
CiAgICAgICAgICAgICAgICAgICAgICMgKGl0J3MgdGhlIG9ubHkgemlwIGZpbGUgdGhlcmUpLgog
ICAgICAgICAgICAgICAgICAgICBjbWRsaW5lID0gWwotICAgICAgICAgICAgICAgICAgICAgICAg
Z2VuZXJhdGVfYnVuZGxlLnRvX3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAiLS1wbGF0Zm9y
bT1ndGsiLAotICAgICAgICAgICAgICAgICAgICAgICAgIi0tYnVuZGxlPWpzYyIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAiLS1zeXNsaWJzPWJ1bmRsZS1hbGwiLAotICAgICAgICAgICAgICAg
ICAgICAgICAgIi0tbm8tc3RyaXAiLAotICAgICAgICAgICAgICAgICAgICAgICAgIi0tY29tcHJl
c3Npb249dGFyLnh6IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICgkYnVpbGRUeXBlID09ICJy
ZWxlYXNlIikgPyAiLS1yZWxlYXNlIiA6ICItLWRlYnVnIiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICItLWRlc3RpbmF0aW9uPSN7dG1wZGlyfSIKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1
bmRsZV9iaW5hcnkudG9fcywKKyAgICAgICAgICAgICAgICAgICAgICAgICItLWRlc3QtZGlyPSN7
JGpzY1BhdGguZGlybmFtZX0iLAorICAgICAgICAgICAgICAgICAgICAgICAgIi0tbG9nLWxldmVs
PWRlYnVnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICRqc2NQYXRoLnRvX3MKICAgICAgICAg
ICAgICAgICAgICAgXQogICAgICAgICAgICAgICAgICAgICBpZiBub3QgJGxkZC5uaWw/CiAgICAg
ICAgICAgICAgICAgICAgICAgICBjbWRsaW5lIDw8ICItLWxkZD0jeyRsZGR9IgogICAgICAgICAg
ICAgICAgICAgICBlbmQKICAgICAgICAgICAgICAgICAgICAgbXlzeXMoY21kbGluZSkKLSAgICAg
ICAgICAgICAgICAgICAgYXJjaGl2ZXMgPSBEaXIuZ2xvYigiI3t0bXBkaXJ9LyoudGFyLnh6IikK
LSAgICAgICAgICAgICAgICAgICAgaWYgYXJjaGl2ZXMuc2l6ZSAhPSAxCi0gICAgICAgICAgICAg
ICAgICAgICAgICByYWlzZSAiRXhwZWN0ZWQgZXhhY3RseSBvbmUgZW50cnkgaW4gdG1wZGlyLCBu
b3QgI3thcmNoaXZlc30iCi0gICAgICAgICAgICAgICAgICAgIGVuZAotICAgICAgICAgICAgICAg
ICAgICAjIE5vdGU6IHdlIG92ZXJ3cml0ZSAnanNjJy4gVGhpcyBvYnZpb3VzbHkgY29uZmxpY3Rz
IHdpdGgKLSAgICAgICAgICAgICAgICAgICAgIyAhY29weVZNIGJ1dCwgdGhlbiBnYWluLCBzbyBk
b2VzICRyZW1vdGUuCi0gICAgICAgICAgICAgICAgICAgIG15c3lzKFsidGFyIiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICItQyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAkanNj
UGF0aC5kaXJuYW1lLnRvX3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiLXhmIiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGFyY2hpdmVzWzBdXSkKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBlbmQKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9iaW5hcnlfYnVuZGxpbmcvX19pbml0X18ucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2JpbmFyeV9idW5kbGluZy9fX2luaXRfXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMzc2YmYyYmVhMmI2
YWY1Y2U3OWQzZTNkMzNjNzNhZGVjNDM0ZjE4Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9iaW5hcnlfYnVuZGxpbmcvX19pbml0X18ucHkKQEAgLTAsMCArMSwxMyBA
QAorIyBSZXF1aXJlZCBmb3IgUHl0aG9uIHRvIHNlYXJjaCB0aGlzIGRpcmVjdG9yeSBmb3IgbW9k
dWxlIGZpbGVzCisKKyMgS2VlcCB0aGlzIGZpbGUgZnJlZSBvZiBhbnkgY29kZSBvciBpbXBvcnQg
c3RhdGVtZW50cyB0aGF0IGNvdWxkCisjIGNhdXNlIGVpdGhlciBhbiBlcnJvciB0byBvY2N1ciBv
ciBhIGxvZyBtZXNzYWdlIHRvIGJlIGxvZ2dlZC4KKyMgVGhpcyBlbnN1cmVzIHRoYXQgY2FsbGlu
ZyBjb2RlIGNhbiBpbXBvcnQgaW5pdGlhbGl6YXRpb24gY29kZSBmcm9tCisjIHdlYmtpdHB5IGJl
Zm9yZSBhbnkgZXJyb3JzIG9yIGxvZyBtZXNzYWdlcyBkdWUgdG8gY29kZSBpbiB0aGlzIGZpbGUu
CisjIEluaXRpYWxpemF0aW9uIGNvZGUgY2FuIGluY2x1ZGUgdGhpbmdzIGxpa2UgdmVyc2lvbi1j
aGVja2luZyBjb2RlIGFuZAorIyBsb2dnaW5nIGNvbmZpZ3VyYXRpb24gY29kZS4KKyMKKyMgV2Ug
ZG8gbm90IGV4ZWN1dGUgYW55IHZlcnNpb24tY2hlY2tpbmcgY29kZSBvciBsb2dnaW5nIGNvbmZp
Z3VyYXRpb24KKyMgY29kZSBpbiB0aGlzIGZpbGUgc28gdGhhdCBjYWxsZXJzIGNhbiBvcHQtaW4g
YXMgdGhleSB3YW50LiAgVGhpcyBhbHNvCisjIGFsbG93cyBkaWZmZXJlbnQgY2FsbGVycyB0byBj
aG9vc2UgZGlmZmVyZW50IGluaXRpYWxpemF0aW9uIGNvZGUsCisjIGFzIG5lY2Vzc2FyeS4KZGlm
ZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvYmluYXJ5X2J1bmRsaW5nL2J1bmRsZS5w
eSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvYmluYXJ5X2J1bmRsaW5nL2J1bmRsZS5weQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5iZjkzOTM5MWRkMWZiODkzYjcwMGU1YzQxZTJmZGMyNWVkOGVjNTNjCi0tLSAvZGV2
L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9iaW5hcnlfYnVuZGxpbmcvYnVuZGxl
LnB5CkBAIC0wLDAgKzEsNzAgQEAKK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQgb3MKK2ltcG9ydCBz
aHV0aWwKK2ltcG9ydCBzdWJwcm9jZXNzCisKK19sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25h
bWVfXykKKworCitjbGFzcyBCaW5hcnlCdW5kbGVyOgorICAgIFZBUl9NWURJUiA9ICdNWURJUicK
KyAgICBWQVJfSU5URVJQUkVURVIgPSAnSU5URVJQUkVURVInCisKKyAgICBkZWYgX19pbml0X18o
c2VsZiwgZGVzdGluYXRpb25fZGlyLCBzaG91bGRfc3RyaXBfb2JqZWN0cyk6CisgICAgICAgIGlm
IHNodXRpbC53aGljaCgncGF0Y2hlbGYnKSBpcyBOb25lOgorICAgICAgICAgICAgX2xvZy5lcnJv
cigiQ291bGQgbm90IGZpbmQgYHBhdGNoZWxmYCBpbiAkUEFUSCIpCisgICAgICAgICAgICByYWlz
ZSBFeGNlcHRpb24oIk1pc3NpbmcgcmVxdWlyZWQgYmluYXJ5IGBwYXRjaGVsZmAiKQorICAgICAg
ICBzZWxmLl9kZXN0aW5hdGlvbl9kaXIgPSBkZXN0aW5hdGlvbl9kaXIKKyAgICAgICAgc2VsZi5f
c2hvdWxkX3N0cmlwX29iamVjdHMgPSBzaG91bGRfc3RyaXBfb2JqZWN0cworCisgICAgZGVmIGRl
c3RpbmF0aW9uX2RpcihzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2Rlc3RpbmF0aW9uX2Rp
cgorCisgICAgZGVmIGNvcHlfYW5kX3JlbW92ZV9ycGF0aChzZWxmLCBvcmlnX2ZpbGUsIHR5cGU9
J2JpbicsIGRlc3RpbmF0aW9uX2Rpcj1Ob25lKToKKyAgICAgICAgZGlyX3N1ZmZpeCA9ICdsaWIn
IGlmIHR5cGUgPT0gJ2ludGVycHJldGVyJyBlbHNlIHR5cGUKKyAgICAgICAgZGVzdGluYXRpb25f
ZGlyID0gb3MucGF0aC5qb2luKHNlbGYuX2Rlc3RpbmF0aW9uX2RpciwgZGlyX3N1ZmZpeCkKKyAg
ICAgICAgaWYgbm90IG9zLnBhdGguaXNkaXIoZGVzdGluYXRpb25fZGlyKToKKyAgICAgICAgICAg
IG9zLm1ha2VkaXJzKGRlc3RpbmF0aW9uX2RpcikKKworICAgICAgICBpZiBub3Qgb3MucGF0aC5p
c2ZpbGUob3JpZ19maWxlKToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0NhbiBub3Qg
ZmluZCBmaWxlICVzJyAlIG9yaWdfZmlsZSkKKworICAgICAgICBfbG9nLmluZm8oJ0FkZCB0byBi
dW5kbGUgWyVzXTogJXMnICUgKHR5cGUsIG9yaWdfZmlsZSkpCisgICAgICAgIHRyeToKKyAgICAg
ICAgICAgIHNodXRpbC5jb3B5KG9yaWdfZmlsZSwgZGVzdGluYXRpb25fZGlyKQorICAgICAgICBl
eGNlcHQgc2h1dGlsLlNhbWVGaWxlRXJyb3I6CisgICAgICAgICAgICAjIE1heSByZWFzb25hYmx5
IGhhcHBlbiBpZiB0aGUgY2FsbGVyIHRyaWVzIHRvIGJ1bmRsZSB0aGUgZmlsZXMgJ2luIHBsYWNl
Jy4KKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBwYXRjaF9lbGZfY29tbWFuZCA9IFsncGF0
Y2hlbGYnLCAnLS1yZW1vdmUtcnBhdGgnLCBvcy5wYXRoLmpvaW4oZGVzdGluYXRpb25fZGlyLCBv
cy5wYXRoLmJhc2VuYW1lKG9yaWdfZmlsZSkpXQorICAgICAgICBpZiBzdWJwcm9jZXNzLmNhbGwo
cGF0Y2hfZWxmX2NvbW1hbmQpICE9IDA6CisgICAgICAgICAgICBfbG9nLmVycm9yKCdUaGUgcGF0
Y2hlbGYgY29tbWFuZCByZXR1cm5lZCBub24temVybyBzdGF0dXMnKQorCisgICAgICAgIGlmIHNl
bGYuX3Nob3VsZF9zdHJpcF9vYmplY3RzOgorICAgICAgICAgICAgaWYgc2h1dGlsLndoaWNoKCdz
dHJpcCcpOgorICAgICAgICAgICAgICAgIHN0cmlwX2NvbW1hbmQgPSBbJ3N0cmlwJywgJy0tc3Ry
aXAtdW5uZWVkZWQnLCBvcy5wYXRoLmpvaW4oZGVzdGluYXRpb25fZGlyLCBvcy5wYXRoLmJhc2Vu
YW1lKG9yaWdfZmlsZSkpXQorICAgICAgICAgICAgICAgIGlmIHN1YnByb2Nlc3MuY2FsbChzdHJp
cF9jb21tYW5kKSAhPSAwOgorICAgICAgICAgICAgICAgICAgICBfbG9nLmVycm9yKCdUaGUgc3Ry
aXAgY29tbWFuZCByZXR1cm5lZCBub24temVybyBzdGF0dXMnKQorICAgICAgICAgICAgZWxzZToK
KyAgICAgICAgICAgICAgICBfbG9nLndhcm5pbmcoJ3N0cmlwIG5vdCBmb3VuZC4gTm90IHN0cmlw
cGluZyBvYmplY3QnKQorCisgICAgZGVmIGdlbmVyYXRlX3dyYXBwZXJfc2NyaXB0KHNlbGYsIGlu
dGVycHJldGVyLCBiaW5hcnlfdG9fd3JhcCwgZXh0cmFfZW52aXJvbm1lbnRfdmFyaWFibGVzPXt9
KToKKyAgICAgICAgaWYgbm90IG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihzZWxmLl9kZXN0
aW5hdGlvbl9kaXIsICdiaW4nLCBiaW5hcnlfdG9fd3JhcCkpOgorICAgICAgICAgICAgcmFpc2Ug
UnVudGltZUVycm9yKCdDYW5ub3QgZmluZCBiaW5hcnkgdG8gd3JhcCBmb3IgJXMnICUgYmluYXJ5
X3RvX3dyYXApCisgICAgICAgIF9sb2cuaW5mbygnR2VuZXJhdGUgd3JhcHBlciBzY3JpcHQgJXMn
ICUgYmluYXJ5X3RvX3dyYXApCisgICAgICAgIHNjcmlwdF9maWxlID0gb3MucGF0aC5qb2luKHNl
bGYuX2Rlc3RpbmF0aW9uX2RpciwgYmluYXJ5X3RvX3dyYXApCisKKyAgICAgICAgd2l0aCBvcGVu
KHNjcmlwdF9maWxlLCAndycpIGFzIHNjcmlwdF9oYW5kbGU6CisgICAgICAgICAgICBzY3JpcHRf
aGFuZGxlLndyaXRlKCcjIS9iaW4vc2hcbicpCisgICAgICAgICAgICBzY3JpcHRfaGFuZGxlLndy
aXRlKCclcz0iJChkaXJuYW1lICQocmVhZGxpbmsgLWYgJDApKSJcbicgJSBzZWxmLlZBUl9NWURJ
UikKKyAgICAgICAgICAgIHNjcmlwdF9oYW5kbGUud3JpdGUoJ2V4cG9ydCBMRF9MSUJSQVJZX1BB
VEg9IiR7JXN9L2xpYiJcbicgJSBzZWxmLlZBUl9NWURJUikKKworICAgICAgICAgICAgZm9yIHZh
ciwgdmFsdWUgaW4gZXh0cmFfZW52aXJvbm1lbnRfdmFyaWFibGVzLml0ZW1zKCk6CisgICAgICAg
ICAgICAgICAgc2NyaXB0X2hhbmRsZS53cml0ZSgnZXhwb3J0ICVzPVwiJXNcIlxuJyAlICh2YXIs
IHZhbHVlKSkKKworICAgICAgICAgICAgaWYgaW50ZXJwcmV0ZXIgaXMgbm90IE5vbmU6CisgICAg
ICAgICAgICAgICAgc2NyaXB0X2hhbmRsZS53cml0ZSgnSU5URVJQUkVURVI9IiR7JXN9L2xpYi8l
cyJcbicgJSAoc2VsZi5WQVJfTVlESVIsIG9zLnBhdGguYmFzZW5hbWUoaW50ZXJwcmV0ZXIpKSkK
KyAgICAgICAgICAgICAgICBzY3JpcHRfaGFuZGxlLndyaXRlKCdleGVjICIke0lOVEVSUFJFVEVS
fSIgIiR7JXN9L2Jpbi8lcyIgIiRAIlxuJyAlIChzZWxmLlZBUl9NWURJUiwgYmluYXJ5X3RvX3dy
YXApKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzY3JpcHRfaGFuZGxlLndy
aXRlKCdleGVjICIkeyVzfS9iaW4vJXMiICIkQCJcbicgJSAoc2VsZi5WQVJfTVlESVIsIGJpbmFy
eV90b193cmFwKSkKKyAgICAgICAgb3MuY2htb2Qoc2NyaXB0X2ZpbGUsIDBvNzU1KQpkaWZmIC0t
Z2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9iaW5hcnlfYnVuZGxpbmcvbGRkLnB5IGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9iaW5hcnlfYnVuZGxpbmcvbGRkLnB5Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI4
Y2M5N2Y5ZGViNjY1NjFhZDc0MWQ5NGRiN2FmY2I2YjQyMWZlODQKLS0tIC9kZXYvbnVsbAorKysg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2JpbmFyeV9idW5kbGluZy9sZGQucHkKQEAgLTAsMCAr
MSw4NiBAQAoraW1wb3J0IGxvZ2dpbmcKK2Zyb20gcGF0aGxpYiBpbXBvcnQgUHVyZVBhdGgKK2lt
cG9ydCBvcworaW1wb3J0IHN1YnByb2Nlc3MKKworX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9f
bmFtZV9fKQorCisKK2NsYXNzIFNoYXJlZE9iamVjdFJlc29sdmVyKCk6CisgICAgZGVmIF9faW5p
dF9fKHNlbGYsIGxkZCk6CisgICAgICAgIHNlbGYuX2xkZCA9IGxkZAorICAgICAgICBpZiBzaHV0
aWwud2hpY2goJ3BhdGNoZWxmJykgaXMgTm9uZToKKyAgICAgICAgICAgIF9sb2cuZXJyb3IoIkNv
dWxkIG5vdCBmaW5kIGBwYXRjaGVsZmAgaW4gJFBBVEgiKQorICAgICAgICAgICAgcmFpc2UgRXhj
ZXB0aW9uKCJNaXNzaW5nIHJlcXVpcmVkIGJpbmFyeSBgcGF0Y2hlbGZgIikKKworICAgIGRlZiBf
cnVuX2NtZF9hbmRfZ2V0X291dHB1dChzZWxmLCBjb21tYW5kKToKKyAgICAgICAgX2xvZy5kZWJ1
ZygiRVhFQyAlcyIgJSBjb21tYW5kKQorICAgICAgICBjb21tYW5kX3Byb2Nlc3MgPSBzdWJwcm9j
ZXNzLlBvcGVuKGNvbW1hbmQsIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsIHN0ZGVycj1zdWJwcm9j
ZXNzLlNURE9VVCwgZW5jb2Rpbmc9J3V0Zi04JykKKyAgICAgICAgc3Rkb3V0LCBzdGRlcnIgPSBj
b21tYW5kX3Byb2Nlc3MuY29tbXVuaWNhdGUoKQorICAgICAgICByZXR1cm4gY29tbWFuZF9wcm9j
ZXNzLnJldHVybmNvZGUsIHN0ZG91dCwgc3RkZXJyCisKKyAgICBkZWYgX2dldF9pbnRlcnByZXRl
cl9vYmpuYW1lKHNlbGYsIG9iamVjdCk6CisgICAgICAgICMgTm90ZTogd2UgdXNlIHBhdGNoZWxm
IHRvIGdldCB0aGUgb2JqZWN0IG5hbWUgKG5vdCB0aGUgcGF0aCEpCisgICAgICAgICMgb2YgdGhl
IGludGVycHJldGVyIGJlY2F1c2UgdGhpcyB3b3JrcyByZWdhcmRsZXNzIG9mIHRoZQorICAgICAg
ICAjIGFyY2hpdGVjdHVyZSBvZiB0aGUgRUxGIGZpbGUuCisgICAgICAgIHJldGNvZGUsIHN0ZG91
dCwgc3RkZXJyID0gc2VsZi5fcnVuX2NtZF9hbmRfZ2V0X291dHB1dChbJ3BhdGNoZWxmJywgJy0t
cHJpbnQtaW50ZXJwcmV0ZXInLCBvYmplY3RdKQorICAgICAgICBpZiByZXRjb2RlICE9IDA6Cisg
ICAgICAgICAgICBfbG9nLmRlYnVnKCJwYXRjaGVsZiBzdGRvdXQ6XG4lc1xuUGF0Y2hlbGYgc3Rk
ZXJyOlxuJXMiICUgKHN0ZG91dCwgc3RkZXJyKSkKKyAgICAgICAgICAgIGlmICdjYW5ub3QgZmlu
ZCBzZWN0aW9uJyBpbiBzdGRvdXQ6CisgICAgICAgICAgICAgICAgIyBUaGlzIGlzIGZpbmU7IHdl
IG9ubHkgZXhwZWN0IGFuIGludGVycHJldGVyIGluIHRoZSBtYWluIGJpbmFyeS4KKyAgICAgICAg
ICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdUaGUg
cGF0Y2hlbGYgY29tbWFuZCByZXR1cm5lZCBub24temVybyBzdGF0dXMgZm9yIG9iamVjdCAlcycg
JSBvYmplY3QpCisgICAgICAgIGludGVycHJldGVyX3BhdGggPSBQdXJlUGF0aChzdGRvdXQuc3Ry
aXAoKSkKKyAgICAgICAgcmV0dXJuIGludGVycHJldGVyX3BhdGgubmFtZQorCisgICAgZGVmIF9n
ZXRfbGlic19hbmRfaW50ZXJwcmV0ZXIoc2VsZiwgb2JqZWN0KToKKyAgICAgICAgaW50ZXJwcmV0
ZXIgPSBOb25lCisgICAgICAgIHJldGNvZGUsIHN0ZG91dCwgc3RkZXJyID0gc2VsZi5fcnVuX2Nt
ZF9hbmRfZ2V0X291dHB1dChbc2VsZi5fbGRkLCBvYmplY3RdKQorICAgICAgICBfbG9nLmRlYnVn
KCJsZGQgc3Rkb3V0OlxuJXMiICUgc3Rkb3V0KQorICAgICAgICBpZiByZXRjb2RlICE9IDA6Cisg
ICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ1RoZSAlcyBjb21tYW5kIHJldHVybmVkIG5v
bi16ZXJvIHN0YXR1cyBmb3Igb2JqZWN0ICVzJyAlIChzZWxmLl9sZGQsIG9iamVjdCkpCisgICAg
ICAgIGxpYnMgPSBbXQorICAgICAgICBmb3IgbGluZSBpbiBzdGRvdXQuc3BsaXRsaW5lcygpOgor
ICAgICAgICAgICAgbGluZSA9IGxpbmUuc3RyaXAoKQorICAgICAgICAgICAgaWYgJz0+JyBpbiBs
aW5lOgorICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lLnNwbGl0KCc9PicpWzFdLnN0cmlwKCkK
KyAgICAgICAgICAgICAgICBpZiAnbm90IGZvdW5kJyBpbiBsaW5lOgorICAgICAgICAgICAgICAg
ICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ2xkZCBjYW4gbm90IHJlc29sdmUgYWxsIGRlcGVuZGVu
Y2llcyBmb3Igb2JqZWN0ICVzLicgJSBvYmplY3QpCisgICAgICAgICAgICAgICAgbGluZSA9IGxp
bmUuc3BsaXQoJyAnKVswXS5zdHJpcCgpCisgICAgICAgICAgICAgICAgaWYgb3MucGF0aC5pc2Zp
bGUobGluZSk6CisgICAgICAgICAgICAgICAgICAgIGxpYnMuYXBwZW5kKGxpbmUpCisgICAgICAg
ICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lLnNwbGl0KCcgJylbMF0uc3Ry
aXAoKQorICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKGxpbmUpOgorICAgICAgICAg
ICAgICAgICAgICBpbnRlcnByZXRlciA9IGxpbmUKKyAgICAgICAgaWYgaW50ZXJwcmV0ZXIgaXMg
Tm9uZToKKyAgICAgICAgICAgICMgVGhpcyBpcyB0aGUgY2FzZSBmb3Igbm9uLW5hdGl2ZSBiaW5h
cmllcy4gRm9yIHRob3NlLCB3ZQorICAgICAgICAgICAgIyBjYW4gdXNlIGEgY3Jvc3MtbGRkICh4
bGRkKSwgYnV0IHRoZW4gdGhlIGludGVycHJldGVyCisgICAgICAgICAgICAjIGxvb2tzIGxpa2Ug
YW55IG90aGVyIHNoYXJlZCBvYmplY3QgaW4gdGhlIG91dHB1dCBvZgorICAgICAgICAgICAgIyBs
ZGQuIFRyeSB0byBpZGVudGlmeSBpdCBieSBsb29raW5nIGF0IHRoZSBvYmplY3QgbmFtZQorICAg
ICAgICAgICAgIyBmcm9tIHRoZSBpbnRlcnByZXRlciBzdHJpbmcuCisgICAgICAgICAgICBpbnRl
cnByZXRlcl9vYmpuYW1lID0gc2VsZi5fZ2V0X2ludGVycHJldGVyX29iam5hbWUob2JqZWN0KQor
ICAgICAgICAgICAgZm9yIGxpYiBpbiBsaWJzOgorICAgICAgICAgICAgICAgIGlmIFB1cmVQYXRo
KGxpYikubmFtZSA9PSBpbnRlcnByZXRlcl9vYmpuYW1lOgorICAgICAgICAgICAgICAgICAgICBp
bnRlcnByZXRlciA9IGxpYgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAg
IyBJZiB3ZSBmb3VuZCBhbiBpbnRlcnByZXRlciwgcmVtb3ZlIGl0IGZyb20gdGhlIGxpYnMuCisg
ICAgICAgICAgICBsaWJzID0gW2xpYiBmb3IgbGliIGluIGxpYnMgaWYgbGliICE9IGludGVycHJl
dGVyXQorICAgICAgICByZXR1cm4gbGlicywgaW50ZXJwcmV0ZXIKKworICAgIGRlZiBfbGRkX3Jl
Y3Vyc2l2ZV9nZXRfbGlic19hbmRfaW50ZXJwcmV0ZXIoc2VsZiwgb2JqZWN0LCBhbHJlYWR5X2No
ZWNrZWRfbGlicz1bXSk6CisgICAgICAgIGxpYnMsIGludGVycHJldGVyID0gc2VsZi5fZ2V0X2xp
YnNfYW5kX2ludGVycHJldGVyKG9iamVjdCkKKyAgICAgICAgaWYgbGliczoKKyAgICAgICAgICAg
IGZvciBsaWIgaW4gbGliczoKKyAgICAgICAgICAgICAgICBpZiBsaWIgaW4gYWxyZWFkeV9jaGVj
a2VkX2xpYnM6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAg
IyBhdm9pZCByZWN1cnNpb24gbG9vcHMgKGxpYmZyZWV0eXBlLnNvLjYgPC0+IGxpYmhhcmZidXp6
LnNvLjApCisgICAgICAgICAgICAgICAgYWxyZWFkeV9jaGVja2VkX2xpYnMuYXBwZW5kKGxpYikK
KyAgICAgICAgICAgICAgICBzdWJfbGlicywgc3ViX2ludGVycHJldGVyID0gc2VsZi5fbGRkX3Jl
Y3Vyc2l2ZV9nZXRfbGlic19hbmRfaW50ZXJwcmV0ZXIobGliLCBhbHJlYWR5X2NoZWNrZWRfbGli
cykKKyAgICAgICAgICAgICAgICBsaWJzLmV4dGVuZChzdWJfbGlicykKKyAgICAgICAgICAgICAg
ICBpZiBzdWJfaW50ZXJwcmV0ZXIgYW5kIGludGVycHJldGVyIGFuZCBzdWJfaW50ZXJwcmV0ZXIg
IT0gaW50ZXJwcmV0ZXI6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcign
bGlicmFyeSAlcyBoYXMgaW50ZXJwcmV0ZXIgJXMgYnV0IG9iamVjdCAlcyBoYXMgaW50ZXJwcmV0
ZXIgJXMnICUgKGxpYiwgc3ViX2ludGVycHJldGVyLCBvYmplY3QsIGludGVycHJldGVyKSkKKyAg
ICAgICAgcmV0dXJuIGxpc3Qoc2V0KGxpYnMpKSwgaW50ZXJwcmV0ZXIKKworICAgIGRlZiBnZXRf
bGlic19hbmRfaW50ZXJwcmV0ZXIoc2VsZiwgb2JqZWN0LCBhbHJlYWR5X2NoZWNrZWRfbGlicz1b
XSk6CisgICAgICAgIHJldHVybiBzZWxmLl9sZGRfcmVjdXJzaXZlX2dldF9saWJzX2FuZF9pbnRl
cnByZXRlcihvYmplY3QsIGFscmVhZHlfY2hlY2tlZF9saWJzKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>432779</attachid>
            <date>2021-07-02 04:22:06 -0700</date>
            <delta_ts>2021-07-02 07:29:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227579-20210702112204.patch</filename>
            <type>text/plain</type>
            <size>32891</size>
            <attacher name="Angelos Oikonomopoulos">angelos</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5NDEyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZWVjMjgwYWRmZDU2MGQ5YWY4MmY5MDAxNjkxZWZiMTFk
MDAyNDMwMC4uNGRhOGM1MWQ5Mjk3ZWU3MThiNmY4MTUxNjIyNWYyZTc5YWMzNjFiZiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1
IEBACisyMDIxLTA3LTAyICBBbmdlbG9zIE9pa29ub21vcG91bG9zICA8YW5nZWxvc0BpZ2FsaWEu
Y29tPgorCisgICAgICAgIEJ1bmRsZSBsaWJyYXJpZXMgZm9yIHJlbW90ZSBleGVjdXRpb24gaW4g
cnVuLWpzYy1iZW5jaG1hcmtzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjc1NzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBTaW1pbGFybHkgdG8gcnVuLWpzYy1zdHJlc3MtdGVzdHMsIGludHJvZHVjZSBh
IGJ1bmRsaW5nIHN0ZXAgdGhhdAorICAgICAgICBzaGlwcyBhbGwgbGlicmFyeSBkZXBlbmRlbmNp
ZXMgdG8gdGhlIHJlbW90ZSBzeXN0ZW0gd2hlbiB1c2luZworICAgICAgICBydW4tanNjLWJlbmNo
bWFya3MgLS1yZW1vdGUuCisKKyAgICAgICAgVGhpcyBwYXRjaCBmYWN0b3JzIG91dCB0aGUgY29k
ZSB0bworICAgICAgICAtIGxvb2t1cCB0aGUgRUxGIGludGVycHJldGVyL2xpYnJhcmllcyBhbmQg
dG8KKyAgICAgICAgLSBzdHJpcCB0aGUgcnBhdGggYW5kIGNyZWF0ZSBhIHdyYXBwZXIgc2NyaXB0
CisgICAgICAgIGZyb20gZ2VuZXJhdGUtYnVuZGxlIGFuZCBwbGFjZXMgaXQgd2Via2l0cHkvYmlu
YXJ5X2J1bmRsaW5nLgorCisgICAgICAgIEl0IGFsc28gaW50cm9kdWNlcyBhIHNpbXBsZXIgc2Ny
aXB0IHRoYXQgb25seSBidW5kbGVzIGEgc2luZ2xlCisgICAgICAgIGJpbmFyeSAoYnVuZGxlLWJp
bmFyeSkgYW5kIHN3aXRjaGVzIHJ1bi1qc2MtYmVuY2htYXJrcyBhbmQKKyAgICAgICAgcnVuLWpz
Yy1zdHJlc3MtdGVzdHMgdG8gdXNlIGl0LgorCisgICAgICAgIEl0IGFsc28gdXBkYXRlcyBydW4t
anNjLWJlbmNobWFyayB0byBwcm9wYWdhdGUgYW55IGVudmlyb25tZW50CisgICAgICAgIHZhcmlh
YmxlcyBpbnRlbmRlZCBmb3IgY29uc3VtcHRpb24gYnkgdGhlIEpTQyBiaW5hcnkuCisKKyAgICAg
ICAgKiBTY3JpcHRzL2dlbmVyYXRlLWJ1bmRsZTogRmFjdG9yIG91dCByZXVzYWJsZSBidW5kbGlu
ZyBjb2RlLgorICAgICAgICAqIFNjcmlwdHMvcnVuLWpzYy1iZW5jaG1hcmtzOiBEbyBidW5kbGlu
ZyBhbmQgdmFyaWFibGUgcHJvcGFnYXRpb24uCisgICAgICAgICogU2NyaXB0cy9ydW4tanNjLXN0
cmVzcy10ZXN0czogU3dpdGNoIHRvIGJ1bmRsZS1iaW5hcnkuCisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9iaW5hcnlfYnVuZGxpbmcvX19pbml0X18ucHk6IEFkZGVkLgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvYmluYXJ5X2J1bmRsaW5nL2J1bmRsZS5weTogQWRkZWQuCisgICAgICAg
IChCaW5hcnlCdW5kbGVyKToKKyAgICAgICAgKEJpbmFyeUJ1bmRsZXIuX19pbml0X18pOgorICAg
ICAgICAoQmluYXJ5QnVuZGxlci5kZXN0aW5hdGlvbl9kaXIpOgorICAgICAgICAoQmluYXJ5QnVu
ZGxlci5jb3B5X2FuZF9yZW1vdmVfcnBhdGgpOgorICAgICAgICAoQmluYXJ5QnVuZGxlci5nZW5l
cmF0ZV93cmFwcGVyX3NjcmlwdCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9iaW5hcnlf
YnVuZGxpbmcvbGRkLnB5OiBBZGRlZC4KKyAgICAgICAgKFNoYXJlZE9iamVjdFJlc29sdmVyKToK
KyAgICAgICAgKFNoYXJlZE9iamVjdFJlc29sdmVyLl9faW5pdF9fKToKKyAgICAgICAgKFNoYXJl
ZE9iamVjdFJlc29sdmVyLl9ydW5fY21kX2FuZF9nZXRfb3V0cHV0KToKKyAgICAgICAgKFNoYXJl
ZE9iamVjdFJlc29sdmVyLl9nZXRfaW50ZXJwcmV0ZXJfb2JqbmFtZSk6CisgICAgICAgIChTaGFy
ZWRPYmplY3RSZXNvbHZlci5fZ2V0X2xpYnNfYW5kX2ludGVycHJldGVyKToKKyAgICAgICAgKFNo
YXJlZE9iamVjdFJlc29sdmVyLl9sZGRfcmVjdXJzaXZlX2dldF9saWJzX2FuZF9pbnRlcnByZXRl
cik6CisgICAgICAgIChTaGFyZWRPYmplY3RSZXNvbHZlci5nZXRfbGlic19hbmRfaW50ZXJwcmV0
ZXIpOgorCisgICAgICAgICogU2NyaXB0cy9idW5kbGUtYmluYXJ5OiBBZGRlZC4KKyAgICAgICAg
KiBTY3JpcHRzL2dlbmVyYXRlLWJ1bmRsZToKKyAgICAgICAgKiBTY3JpcHRzL3J1bi1qc2MtYmVu
Y2htYXJrczoKKyAgICAgICAgKiBTY3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzOgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvYmluYXJ5X2J1bmRsaW5nL19faW5pdF9fLnB5OiBBZGRlZC4K
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2JpbmFyeV9idW5kbGluZy9idW5kbGUucHk6IEFk
ZGVkLgorICAgICAgICAoQmluYXJ5QnVuZGxlcik6CisgICAgICAgIChCaW5hcnlCdW5kbGVyLl9f
aW5pdF9fKToKKyAgICAgICAgKEJpbmFyeUJ1bmRsZXIuZGVzdGluYXRpb25fZGlyKToKKyAgICAg
ICAgKEJpbmFyeUJ1bmRsZXIuY29weV9hbmRfcmVtb3ZlX3JwYXRoKToKKyAgICAgICAgKEJpbmFy
eUJ1bmRsZXIuZ2VuZXJhdGVfd3JhcHBlcl9zY3JpcHQpOgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvYmluYXJ5X2J1bmRsaW5nL2xkZC5weTogQWRkZWQuCisgICAgICAgIChTaGFyZWRPYmpl
Y3RSZXNvbHZlcik6CisgICAgICAgIChTaGFyZWRPYmplY3RSZXNvbHZlci5fX2luaXRfXyk6Cisg
ICAgICAgIChTaGFyZWRPYmplY3RSZXNvbHZlci5fcnVuX2NtZF9hbmRfZ2V0X291dHB1dCk6Cisg
ICAgICAgIChTaGFyZWRPYmplY3RSZXNvbHZlci5fZ2V0X2ludGVycHJldGVyX29iam5hbWUpOgor
ICAgICAgICAoU2hhcmVkT2JqZWN0UmVzb2x2ZXIuX2dldF9saWJzX2FuZF9pbnRlcnByZXRlcik6
CisgICAgICAgIChTaGFyZWRPYmplY3RSZXNvbHZlci5fbGRkX3JlY3Vyc2l2ZV9nZXRfbGlic19h
bmRfaW50ZXJwcmV0ZXIpOgorICAgICAgICAoU2hhcmVkT2JqZWN0UmVzb2x2ZXIuZ2V0X2xpYnNf
YW5kX2ludGVycHJldGVyKToKKwogMjAyMS0wNi0yOSAgWmhpZmVpIEZhbmcgIDx6aGlmZWlfZmFu
Z0BhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIG5ldyBhcmd1bWVudCBvZiBkZXZpY2Ugb3MgdmVy
c2lvbiBmb3IgcmVwb3J0aW5nIEphdmFTY3JpcHRDb3JlIHRlc3QgcmVzdWx0CmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL2J1bmRsZS1iaW5hcnkgYi9Ub29scy9TY3JpcHRzL2J1bmRsZS1iaW5h
cnkKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNzQ1Mzc5OTdjZTFlYzM5NTljZjZhM2JlZDBlNjlhMGVmNzEwZTZmYgot
LS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvYnVuZGxlLWJpbmFyeQpAQCAtMCwwICsx
LDM3IEBACisjIS91c3IvYmluL2VudiBweXRob24zCisKK2ltcG9ydCBhcmdwYXJzZQoraW1wb3J0
IGxvZ2dpbmcKK2ltcG9ydCBvcworaW1wb3J0IHN5cworCit0b3BfbGV2ZWxfZGlyZWN0b3J5ID0g
b3MucGF0aC5ub3JtcGF0aChvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwg
Jy4uJywgJy4uJykpCitzeXMucGF0aC5pbnNlcnQoMCwgb3MucGF0aC5qb2luKHRvcF9sZXZlbF9k
aXJlY3RvcnksICdUb29scycsICdTY3JpcHRzJywgJ3dlYmtpdHB5JykpCisKK2Zyb20gYmluYXJ5
X2J1bmRsaW5nLmxkZCBpbXBvcnQgU2hhcmVkT2JqZWN0UmVzb2x2ZXIKK2Zyb20gYmluYXJ5X2J1
bmRsaW5nLmJ1bmRsZSBpbXBvcnQgQmluYXJ5QnVuZGxlcgorCitkZWYgbWFpbigpOgorICAgIHBh
cnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKCd1c2FnZSAlcHJvZyBbb3B0aW9uc10nKQor
ICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tbGRkJywgZGVzdD0nbGRkJywgZGVmYXVsdD0nbGRk
JywgaGVscD0nVXNlIGFsdGVybmF0aXZlIGxkZCAodXNlZnVsIGZvciBub24tbmF0aXZlIGJpbmFy
aWVzJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWxvZy1sZXZlbCcsIGRlc3Q9J2xvZ19s
ZXZlbCcsIGNob2ljZXM9WydkZWJ1ZycsICdpbmZvJywgJ3dhcm5pbmcnLCAnZXJyb3InLCAnY3Jp
dGljYWwnXSwgZGVmYXVsdD0naW5mbycpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1kZXN0
LWRpcicsIGRlc3Q9J2Rlc3RfZGlyJywgcmVxdWlyZWQ9VHJ1ZSkKKyAgICBwYXJzZXIuYWRkX2Fy
Z3VtZW50KCdiaW5hcnknKQorICAgIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncygpCisKKyAgICBs
b2dnaW5nLmdldExvZ2dlcigpLnNldExldmVsKGFyZ3MubG9nX2xldmVsLnVwcGVyKCkpCisgICAg
bG9nZ2luZy5nZXRMb2dnZXIoKS5hZGRIYW5kbGVyKGxvZ2dpbmcuU3RyZWFtSGFuZGxlcigpKQor
ICAgIGxpYnJhcmllcywgaW50ZXJwcmV0ZXIgPSBTaGFyZWRPYmplY3RSZXNvbHZlcihhcmdzLmxk
ZCkuZ2V0X2xpYnNfYW5kX2ludGVycHJldGVyKGFyZ3MuYmluYXJ5KQorCisgICAgaWYgaW50ZXJw
cmV0ZXIgaXMgTm9uZToKKyAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJDb3VsZCBub3QgZGV0
ZXJtaW5lIGludGVycHJldGVyIGZvciBiaW5hcnkgJXMiICUgb2JqZWN0KQorICAgIGJ1bmRsZXIg
PSBCaW5hcnlCdW5kbGVyKGFyZ3MuZGVzdF9kaXIsIEZhbHNlKQorICAgIGJ1bmRsZXIuY29weV9h
bmRfcmVtb3ZlX3JwYXRoKGludGVycHJldGVyLCB0eXBlPSdpbnRlcnByZXRlcicpCisgICAgYnVu
ZGxlci5jb3B5X2FuZF9yZW1vdmVfcnBhdGgoYXJncy5iaW5hcnksIHR5cGU9J2JpbicpCisgICAg
Zm9yIGxpYiBpbiBsaWJyYXJpZXM6CisgICAgICAgIGJ1bmRsZXIuY29weV9hbmRfcmVtb3ZlX3Jw
YXRoKGxpYiwgdHlwZT0nbGliJykKKyAgICBidW5kbGVyLmdlbmVyYXRlX3dyYXBwZXJfc2NyaXB0
KGludGVycHJldGVyLCBvcy5wYXRoLmJhc2VuYW1lKGFyZ3MuYmluYXJ5KSkKKyAgICByZXR1cm4g
MAorCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHN5cy5leGl0KG1haW4oKSkKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtYnVuZGxlIGIvVG9vbHMvU2NyaXB0cy9n
ZW5lcmF0ZS1idW5kbGUKaW5kZXggNzgxYTcwYjljZTRlNzlkY2FmMTk4M2Y4Y2M2YzVhZWIyMzZi
ZGZlZi4uNWNmZDZhZjJhZDE0NDAzOTQ4MGY5NDdlZjUyNTE1ZWJjZmEyM2MzNCAxMDA3NTUKLS0t
IGEvVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1idW5kbGUKKysrIGIvVG9vbHMvU2NyaXB0cy9nZW5l
cmF0ZS1idW5kbGUKQEAgLTQwLDkgKzQwLDExIEBAIGltcG9ydCB6aXBmaWxlCiB0b3BfbGV2ZWxf
ZGlyZWN0b3J5ID0gb3MucGF0aC5ub3JtcGF0aChvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1l
KF9fZmlsZV9fKSwgJy4uJywgJy4uJykpCiBzeXMucGF0aC5pbnNlcnQoMCwgb3MucGF0aC5qb2lu
KHRvcF9sZXZlbF9kaXJlY3RvcnksICdUb29scycsICdmbGF0cGFrJykpCiBzeXMucGF0aC5pbnNl
cnQoMCwgb3MucGF0aC5qb2luKHRvcF9sZXZlbF9kaXJlY3RvcnksICdUb29scycsICdqaGJ1aWxk
JykpCitzeXMucGF0aC5pbnNlcnQoMCwgb3MucGF0aC5qb2luKHRvcF9sZXZlbF9kaXJlY3Rvcnks
ICdUb29scycsICdTY3JpcHRzJywgJ3dlYmtpdHB5JykpCiBpbXBvcnQgamhidWlsZHV0aWxzCiBp
bXBvcnQgZmxhdHBha3V0aWxzCi0KK2Zyb20gYmluYXJ5X2J1bmRsaW5nLmxkZCBpbXBvcnQgU2hh
cmVkT2JqZWN0UmVzb2x2ZXIKK2Zyb20gYmluYXJ5X2J1bmRsaW5nLmJ1bmRsZSBpbXBvcnQgQmlu
YXJ5QnVuZGxlcgogCiBJTlNUQUxMX0RFUFNfU0NSSVBUX1RFTVBMQVRFID0gIiIiXAogIyEvYmlu
L2Jhc2gKQEAgLTEyNyw3ICsxMjksNyBAQCBjbGFzcyBCdW5kbGVDcmVhdG9yKG9iamVjdCk6CiAg
ICAgICAgIHNlbGYuX2J1bmRsZV90eXBlID0gYnVuZGxlX3R5cGUKICAgICAgICAgc2VsZi5fYnVp
bGRlcm5hbWUgPSBidWlsZGVyX25hbWUKICAgICAgICAgc2VsZi5fc3lzbGlicyA9IHN5c2xpYnMK
LSAgICAgICAgc2VsZi5fbGRkID0gbGRkCisgICAgICAgIHNlbGYuX3NoYXJlZF9vYmplY3RfcmVz
b2x2ZXIgPSBTaGFyZWRPYmplY3RSZXNvbHZlcihsZGQpCiAgICAgICAgIHNlbGYuX3Nob3VsZF9z
dHJpcF9vYmplY3RzID0gc2hvdWxkX3N0cmlwX29iamVjdHMKICAgICAgICAgc2VsZi5fY29tcHJl
c3Npb25fdHlwZSA9IGNvbXByZXNzaW9uX3R5cGUKICAgICAgICAgc2VsZi5fdG1wZGlyID0gTm9u
ZQpAQCAtMTUxLDc2ICsxNTMsNiBAQCBjbGFzcyBCdW5kbGVDcmVhdG9yKG9iamVjdCk6CiAgICAg
ICAgICAgICByZXR1cm4gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9b3MucGF0aC5qb2luKG9zLnBh
dGguYWJzcGF0aChiYXNlZGlyKSwgJ3RtcCcpKQogICAgICAgICByZXR1cm4gdGVtcGZpbGUubWtk
dGVtcCgpCiAKLSAgICBkZWYgX3J1bl9jbWRfYW5kX2dldF9vdXRwdXQoc2VsZiwgY29tbWFuZCk6
Ci0gICAgICAgIGNvbW1hbmRfcHJvY2VzcyA9IHN1YnByb2Nlc3MuUG9wZW4oY29tbWFuZCwgc3Rk
b3V0PXN1YnByb2Nlc3MuUElQRSwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VULCBlbmNvZGluZz0n
dXRmLTgnKQotICAgICAgICBzdGRvdXQsIHN0ZGVyciA9IGNvbW1hbmRfcHJvY2Vzcy5jb21tdW5p
Y2F0ZSgpCi0gICAgICAgIHJldHVybiBjb21tYW5kX3Byb2Nlc3MucmV0dXJuY29kZSwgc3Rkb3V0
LCBzdGRlcnIKLQotCi0gICAgZGVmIF9nZXRfaW50ZXJwcmV0ZXJfb2JqbmFtZShzZWxmLCBvYmpl
Y3QpOgotICAgICAgICAjIE5vdGU6IHdlIHVzZSBwYXRjaGVsZiB0byBnZXQgdGhlIG9iamVjdCBu
YW1lIChub3QgdGhlIHBhdGghKQotICAgICAgICAjIG9mIHRoZSBpbnRlcnByZXRlciBiZWNhdXNl
IHRoaXMgd29ya3MgcmVnYXJkbGVzcyBvZiB0aGUKLSAgICAgICAgIyBhcmNoaXRlY3R1cmUgb2Yg
dGhlIEVMRiBmaWxlLgotICAgICAgICByZXRjb2RlLCBzdGRvdXQsIHN0ZGVyciA9IHNlbGYuX3J1
bl9jbWRfYW5kX2dldF9vdXRwdXQoWydwYXRjaGVsZicsICctLXByaW50LWludGVycHJldGVyJywg
b2JqZWN0XSkKLSAgICAgICAgaWYgcmV0Y29kZSAhPSAwOgotICAgICAgICAgICAgX2xvZy5kZWJ1
ZygicGF0Y2hlbGYgc3Rkb3V0OlxuJXNcblBhdGNoZWxmIHN0ZGVycjpcbiVzIiAlIChzdGRvdXQs
IHN0ZGVycikpCi0gICAgICAgICAgICBpZiAnY2Fubm90IGZpbmQgc2VjdGlvbicgaW4gc3Rkb3V0
OgotICAgICAgICAgICAgICAgICMgVGhpcyBpcyBmaW5lOyB3ZSBvbmx5IGV4cGVjdCBhbiBpbnRl
cnByZXRlciBpbiB0aGUgbWFpbiBiaW5hcnkuCi0gICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUK
LSAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignVGhlIHBhdGNoZWxmIGNvbW1hbmQgcmV0
dXJuZWQgbm9uLXplcm8gc3RhdHVzIGZvciBvYmplY3QgJXMnICUgb2JqZWN0KQotICAgICAgICBp
bnRlcnByZXRlcl9wYXRoID0gUHVyZVBhdGgoc3Rkb3V0LnN0cmlwKCkpCi0gICAgICAgIHJldHVy
biBpbnRlcnByZXRlcl9wYXRoLm5hbWUKLQotICAgIGRlZiBfZ2V0X2xpYnNfYW5kX2ludGVycHJl
dGVyKHNlbGYsIG9iamVjdCk6Ci0gICAgICAgIGludGVycHJldGVyID0gTm9uZQotICAgICAgICBy
ZXRjb2RlLCBzdGRvdXQsIHN0ZGVyciA9IHNlbGYuX3J1bl9jbWRfYW5kX2dldF9vdXRwdXQoW3Nl
bGYuX2xkZCwgb2JqZWN0XSkKLSAgICAgICAgX2xvZy5kZWJ1ZygibGRkIHN0ZG91dDpcbiVzIiAl
IHN0ZG91dCkKLSAgICAgICAgaWYgcmV0Y29kZSAhPSAwOgotICAgICAgICAgICAgcmFpc2UgUnVu
dGltZUVycm9yKCdUaGUgJXMgY29tbWFuZCByZXR1cm5lZCBub24temVybyBzdGF0dXMgZm9yIG9i
amVjdCAlcycgJSAoc2VsZi5fbGRkLCBvYmplY3QpKQotICAgICAgICBsaWJzID0gW10KLSAgICAg
ICAgZm9yIGxpbmUgaW4gc3Rkb3V0LnNwbGl0bGluZXMoKToKLSAgICAgICAgICAgIGxpbmUgPSBs
aW5lLnN0cmlwKCkKLSAgICAgICAgICAgIGlmICc9PicgaW4gbGluZToKLSAgICAgICAgICAgICAg
ICBsaW5lID0gbGluZS5zcGxpdCgnPT4nKVsxXS5zdHJpcCgpCi0gICAgICAgICAgICAgICAgaWYg
J25vdCBmb3VuZCcgaW4gbGluZToKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVy
cm9yKCdsZGQgY2FuIG5vdCByZXNvbHZlIGFsbCBkZXBlbmRlbmNpZXMgZm9yIG9iamVjdCAlcy4n
ICUgb2JqZWN0KQotICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lLnNwbGl0KCcgJylbMF0uc3Ry
aXAoKQotICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKGxpbmUpOgotICAgICAgICAg
ICAgICAgICAgICBsaWJzLmFwcGVuZChsaW5lKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAg
ICAgICAgICBsaW5lID0gbGluZS5zcGxpdCgnICcpWzBdLnN0cmlwKCkKLSAgICAgICAgICAgICAg
ICBpZiBvcy5wYXRoLmlzZmlsZShsaW5lKToKLSAgICAgICAgICAgICAgICAgICAgaW50ZXJwcmV0
ZXIgPSBsaW5lCi0gICAgICAgIGlmIGludGVycHJldGVyIGlzIE5vbmU6Ci0gICAgICAgICAgICAj
IFRoaXMgaXMgdGhlIGNhc2UgZm9yIG5vbi1uYXRpdmUgYmluYXJpZXMuIEZvciB0aG9zZSwgd2UK
LSAgICAgICAgICAgICMgY2FuIHVzZSBhIGNyb3NzLWxkZCAoeGxkZCksIGJ1dCB0aGVuIHRoZSBp
bnRlcnByZXRlcgotICAgICAgICAgICAgIyBsb29rcyBsaWtlIGFueSBvdGhlciBzaGFyZWQgb2Jq
ZWN0IGluIHRoZSBvdXRwdXQgb2YKLSAgICAgICAgICAgICMgbGRkLiBUcnkgdG8gaWRlbnRpZnkg
aXQgYnkgbG9va2luZyBhdCB0aGUgb2JqZWN0IG5hbWUKLSAgICAgICAgICAgICMgZnJvbSB0aGUg
aW50ZXJwcmV0ZXIgc3RyaW5nLgotICAgICAgICAgICAgaW50ZXJwcmV0ZXJfb2JqbmFtZSA9IHNl
bGYuX2dldF9pbnRlcnByZXRlcl9vYmpuYW1lKG9iamVjdCkKLSAgICAgICAgICAgIGZvciBsaWIg
aW4gbGliczoKLSAgICAgICAgICAgICAgICBpZiBQdXJlUGF0aChsaWIpLm5hbWUgPT0gaW50ZXJw
cmV0ZXJfb2JqbmFtZToKLSAgICAgICAgICAgICAgICAgICAgaW50ZXJwcmV0ZXIgPSBsaWIKLSAg
ICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICMgSWYgd2UgZm91bmQgYW4gaW50
ZXJwcmV0ZXIsIHJlbW92ZSBpdCBmcm9tIHRoZSBsaWJzLgotICAgICAgICAgICAgbGlicyA9IFts
aWIgZm9yIGxpYiBpbiBsaWJzIGlmIGxpYiAhPSBpbnRlcnByZXRlcl0KLSAgICAgICAgcmV0dXJu
IGxpYnMsIGludGVycHJldGVyCi0KLQotICAgIGRlZiBfbGRkX3JlY3Vyc2l2ZV9nZXRfbGlic19h
bmRfaW50ZXJwcmV0ZXIoc2VsZiwgb2JqZWN0LCBhbHJlYWR5X2NoZWNrZWRfbGlicyA9IFtdKToK
LSAgICAgICAgbGlicywgaW50ZXJwcmV0ZXIgPSBzZWxmLl9nZXRfbGlic19hbmRfaW50ZXJwcmV0
ZXIob2JqZWN0KQotICAgICAgICBpZiBsaWJzOgotICAgICAgICAgICAgZm9yIGxpYiBpbiBsaWJz
OgotICAgICAgICAgICAgICAgIGlmIGxpYiBpbiBhbHJlYWR5X2NoZWNrZWRfbGliczoKLSAgICAg
ICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICAjIGF2b2lkIHJlY3Vyc2lv
biBsb29wcyAobGliZnJlZXR5cGUuc28uNiA8LT4gbGliaGFyZmJ1enouc28uMCkKLSAgICAgICAg
ICAgICAgICBhbHJlYWR5X2NoZWNrZWRfbGlicy5hcHBlbmQobGliKQotICAgICAgICAgICAgICAg
IHN1Yl9saWJzLCBzdWJfaW50ZXJwcmV0ZXIgPSBzZWxmLl9sZGRfcmVjdXJzaXZlX2dldF9saWJz
X2FuZF9pbnRlcnByZXRlcihsaWIsIGFscmVhZHlfY2hlY2tlZF9saWJzKQotICAgICAgICAgICAg
ICAgIGxpYnMuZXh0ZW5kKHN1Yl9saWJzKQotICAgICAgICAgICAgICAgIGlmIHN1Yl9pbnRlcnBy
ZXRlciBhbmQgaW50ZXJwcmV0ZXIgYW5kIHN1Yl9pbnRlcnByZXRlciAhPSBpbnRlcnByZXRlcjoK
LSAgICAgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdsaWJyYXJ5ICVzIGhhcyBp
bnRlcnByZXRlciAlcyBidXQgb2JqZWN0ICVzIGhhcyBpbnRlcnByZXRlciAlcycgJSAobGliLCBz
dWJfaW50ZXJwcmV0ZXIsIG9iamVjdCwgaW50ZXJwcmV0ZXIpKQotICAgICAgICByZXR1cm4gbGlz
dChzZXQobGlicykpLCBpbnRlcnByZXRlcgotCiAKICAgICBkZWYgX2dldF9vc3ByZXR0eW5hbWUo
c2VsZik6CiAgICAgICAgIHdpdGggb3BlbignL2V0Yy9vcy1yZWxlYXNlJywgJ3InKSBhcyBvc3Jl
bGVhc2VfaGFuZGxlOgpAQCAtMjU4LDM3ICsxOTAsMjkgQEAgY2xhc3MgQnVuZGxlQ3JlYXRvcihv
YmplY3QpOgogCiAKICAgICBkZWYgX2dlbmVyYXRlX3dyYXBwZXJfc2NyaXB0KHNlbGYsIGludGVy
cHJldGVyLCBiaW5hcnlfdG9fd3JhcCk6Ci0gICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzZmlsZShv
cy5wYXRoLmpvaW4oc2VsZi5fdG1wZGlyLCAnYmluJywgYmluYXJ5X3RvX3dyYXApKToKLSAgICAg
ICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignQ2FuIG5vdCBmaW5kIGJpbmFyeSB0byB3cmFwIGZv
ciAlcycgJSBiaW5hcnlfdG9fd3JhcCkKLSAgICAgICAgc2VsZi5fd3JhcHBlcl9zY3JpcHRzLmFw
cGVuZChiaW5hcnlfdG9fd3JhcCkKLSAgICAgICAgX2xvZy5pbmZvKCdHZW5lcmF0ZSB3cmFwcGVy
IHNjcmlwdCAlcycgJSBiaW5hcnlfdG9fd3JhcCkKLSAgICAgICAgc2NyaXB0X2ZpbGUgPSBvcy5w
YXRoLmpvaW4oc2VsZi5fdG1wZGlyLCBiaW5hcnlfdG9fd3JhcCkKLQotICAgICAgICB3aXRoIG9w
ZW4oc2NyaXB0X2ZpbGUsICd3JykgYXMgc2NyaXB0X2hhbmRsZToKLSAgICAgICAgICAgIHNjcmlw
dF9oYW5kbGUud3JpdGUoJyMhL2Jpbi9zaFxuJykKLSAgICAgICAgICAgIHNjcmlwdF9oYW5kbGUu
d3JpdGUoJ01ZRElSPSIkKGRpcm5hbWUgJChyZWFkbGluayAtZiAkMCkpIlxuJykKLSAgICAgICAg
ICAgIHNjcmlwdF9oYW5kbGUud3JpdGUoJ2V4cG9ydCBMRF9MSUJSQVJZX1BBVEg9IiR7TVlESVJ9
L2xpYiJcbicpCi0gICAgICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKG9zLnBhdGguam9pbihzZWxm
Ll90bXBkaXIsICdnaW8nKSk6Ci0gICAgICAgICAgICAgICAgZ2lvX3ZhciA9ICdHSU9fTU9EVUxF
X0RJUicgaWYgc2VsZi5fc3lzbGlicyA9PSAnYnVuZGxlLWFsbCcgZWxzZSAnR0lPX0VYVFJBX01P
RFVMRVMnCi0gICAgICAgICAgICAgICAgc2NyaXB0X2hhbmRsZS53cml0ZSgnZXhwb3J0ICVzPSIk
e01ZRElSfS9naW8iXG4nICUgZ2lvX3ZhcikKLSAgICAgICAgICAgIGlmIG9zLnBhdGguaXNkaXIo
b3MucGF0aC5qb2luKHNlbGYuX3RtcGRpciwgJ2dzdCcpKToKLSAgICAgICAgICAgICAgICBnc3Rf
dmFyID0gJ0dTVF9QTFVHSU5fU1lTVEVNX1BBVEhfMV8wJyBpZiBzZWxmLl9zeXNsaWJzID09ICdi
dW5kbGUtYWxsJyBlbHNlICdHU1RfUExVR0lOX1BBVEhfMV8wJwotICAgICAgICAgICAgICAgIHNj
cmlwdF9oYW5kbGUud3JpdGUoJ2V4cG9ydCAlcz0iJHtNWURJUn0vZ3N0IlxuJyAlIGdzdF92YXIp
Ci0gICAgICAgICAgICAgICAgc2NyaXB0X2hhbmRsZS53cml0ZSgnZXhwb3J0IEdTVF9SRUdJU1RS
WV8xXzA9IiR7TVlESVJ9L2dzdC9nc3RyZWFtZXItMS4wLnJlZ2lzdHJ5IlxuJykKKyAgICAgICAg
dmFyaWFibGVzID0gZGljdCgpCisgICAgICAgIG15ZGlyID0gc2VsZi5fYnVuZGxlci5WQVJfTVlE
SVIKKyAgICAgICAgaWYgb3MucGF0aC5pc2Rpcihvcy5wYXRoLmpvaW4oc2VsZi5fYnVuZGxlci5k
ZXN0aW5hdGlvbl9kaXIoKSwgJ2dpbycpKToKKyAgICAgICAgICAgIGdpb192YXIgPSAnR0lPX01P
RFVMRV9ESVInIGlmIHNlbGYuX3N5c2xpYnMgPT0gJ2J1bmRsZS1hbGwnIGVsc2UgJ0dJT19FWFRS
QV9NT0RVTEVTJworICAgICAgICAgICAgdmFyaWFibGVzW2dpb192YXJdID0gIiR7JXN9L2dpbyIg
JSBteWRpcgorCisgICAgICAgIGlmIG9zLnBhdGguaXNkaXIob3MucGF0aC5qb2luKHNlbGYuX2J1
bmRsZXIuZGVzdGluYXRpb25fZGlyKCksICdnc3QnKSk6CisgICAgICAgICAgICBnc3RfdmFyID0g
J0dTVF9QTFVHSU5fU1lTVEVNX1BBVEhfMV8wJyBpZiBzZWxmLl9zeXNsaWJzID09ICdidW5kbGUt
YWxsJyBlbHNlICdHU1RfUExVR0lOX1BBVEhfMV8wJworICAgICAgICAgICAgdmFyaWFibGVzW2dz
dF92YXJdID0gIiR7JXN9L2dzdCIgJSBteWRpcgorICAgICAgICBpZiBiaW5hcnlfdG9fd3JhcCAh
PSAianNjIjoKKyAgICAgICAgICAgIHZhcmlhYmxlc1snV0VCS0lUX0VYRUNfUEFUSCddID0gIiR7
JXN9L2JpbiIgJSBteWRpcgorICAgICAgICAgICAgdmFyaWFibGVzWydXRUJLSVRfSU5KRUNURURf
QlVORExFX1BBVEgnXSA9ICIkeyVzfS9saWIiICUgbXlkaXIKKyAgICAgICAgaWYgc2VsZi5fc3lz
bGlicyA9PSAnYnVuZGxlLWFsbCc6CiAgICAgICAgICAgICBpZiBiaW5hcnlfdG9fd3JhcCAhPSAi
anNjIjoKLSAgICAgICAgICAgICAgICBzY3JpcHRfaGFuZGxlLndyaXRlKCdleHBvcnQgV0VCS0lU
X0VYRUNfUEFUSD0iJHtNWURJUn0vYmluIlxuJykKLSAgICAgICAgICAgICAgICBzY3JpcHRfaGFu
ZGxlLndyaXRlKCdleHBvcnQgV0VCS0lUX0lOSkVDVEVEX0JVTkRMRV9QQVRIPSIke01ZRElSfS9s
aWIiXG4nKQotICAgICAgICAgICAgaWYgc2VsZi5fc3lzbGlicyA9PSAnYnVuZGxlLWFsbCc6Ci0g
ICAgICAgICAgICAgICAgc2NyaXB0X2hhbmRsZS53cml0ZSgnSU5URVJQUkVURVI9IiR7TVlESVJ9
L2xpYi8lcyJcbicgJSBvcy5wYXRoLmJhc2VuYW1lKGludGVycHJldGVyKSkKLSAgICAgICAgICAg
ICAgICBpZiBiaW5hcnlfdG9fd3JhcCAhPSAianNjIjoKLSAgICAgICAgICAgICAgICAgICAgc2Ny
aXB0X2hhbmRsZS53cml0ZSgnZXhwb3J0IFdFQl9QUk9DRVNTX0NNRF9QUkVGSVg9IiR7SU5URVJQ
UkVURVJ9IlxuJykKLSAgICAgICAgICAgICAgICAgICAgc2NyaXB0X2hhbmRsZS53cml0ZSgnZXhw
b3J0IFBMVUdJTl9QUk9DRVNTX0NNRF9QUkVGSVg9IiR7SU5URVJQUkVURVJ9IlxuJykKLSAgICAg
ICAgICAgICAgICAgICAgc2NyaXB0X2hhbmRsZS53cml0ZSgnZXhwb3J0IE5FVFdPUktfUFJPQ0VT
U19DTURfUFJFRklYPSIke0lOVEVSUFJFVEVSfSJcbicpCi0gICAgICAgICAgICAgICAgICAgIHNj
cmlwdF9oYW5kbGUud3JpdGUoJ2V4cG9ydCBHUFVfUFJPQ0VTU19DTURfUFJFRklYPSIke0lOVEVS
UFJFVEVSfSJcbicpCi0gICAgICAgICAgICAgICAgc2NyaXB0X2hhbmRsZS53cml0ZSgnZXhlYyAi
JHtJTlRFUlBSRVRFUn0iICIke01ZRElSfS9iaW4vJXMiICIkQCJcbicgJSBiaW5hcnlfdG9fd3Jh
cCkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc2NyaXB0X2hhbmRsZS53cml0
ZSgnZXhlYyAiJHtNWURJUn0vYmluLyVzIiAiJEAiXG4nICUgYmluYXJ5X3RvX3dyYXApCi0gICAg
ICAgIG9zLmNobW9kKHNjcmlwdF9maWxlLCAwbzc1NSkKKyAgICAgICAgICAgICAgICBmb3IgdmFy
IGluIFsnV0VCX1BST0NFU1NfQ01EX1BSRUZJWCcsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ1BMVUdJTl9QUk9DRVNTX0NNRF9QUkVGSVgnLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICdORVRXT1JLX1BST0NFU1NfQ01EX1BSRUZJWCcsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ0dQVV9QUk9DRVNTX0NNRF9QUkVGSVgnXToKKyAgICAgICAgICAgICAgICAgICAgdmFy
aWFibGVzW3Zhcl0gPSAiJHslc30iICUgc2VsZi5fYnVuZGxlci5WQVJfSU5URVJQUkVURVIKKyAg
ICAgICAgZWxzZToKKyAgICAgICAgICAgIGludGVycHJldGVyID0gTm9uZQorICAgICAgICBzZWxm
Ll9idW5kbGVyLmdlbmVyYXRlX3dyYXBwZXJfc2NyaXB0KGludGVycHJldGVyLCBiaW5hcnlfdG9f
d3JhcCwgdmFyaWFibGVzKQorICAgICAgICBzZWxmLl93cmFwcGVyX3NjcmlwdHMuYXBwZW5kKGJp
bmFyeV90b193cmFwKQogCiAgICAgZGVmIF9nZW5lcmF0ZV9pbnN0YWxsX2RlcHNfc2NyaXB0KHNl
bGYsIHN5c3RlbV9wYWNrYWdlc19uZWVkZWQpOgogICAgICAgICBpZiBub3Qgc3lzdGVtX3BhY2th
Z2VzX25lZWRlZDoKQEAgLTMxMiwzNSArMjM2LDYgQEAgY2xhc3MgQnVuZGxlQ3JlYXRvcihvYmpl
Y3QpOgogICAgICAgICAgICAgaW5zdGFsbGRlcHNfaGFuZGxlLndyaXRlKElOU1RBTExfREVQU19T
Q1JJUFRfVEVNUExBVEUgJSB7J3BhY2thZ2VzX25lZWRlZCcgOiAnICcuam9pbihzeXN0ZW1fcGFj
a2FnZXNfbmVlZGVkKX0gKQogICAgICAgICBvcy5jaG1vZChpbnN0YWxsZGVwc19maWxlLCAwbzc1
NSkKIAotCi0gICAgZGVmIF9jb3B5X2FuZF9yZW1vdmVfcnBhdGgoc2VsZiwgb3JpZ19maWxlLCB0
eXBlPSdiaW4nLCBkZXN0aW5hdGlvbl9kaXI9Tm9uZSk6Ci0gICAgICAgIGlmIG5vdCBkZXN0aW5h
dGlvbl9kaXI6Ci0gICAgICAgICAgICBkaXJfc3VmZml4ID0gJ2xpYicgaWYgdHlwZSA9PSAnaW50
ZXJwcmV0ZXInIGVsc2UgdHlwZQotICAgICAgICAgICAgZGVzdGluYXRpb25fZGlyID0gb3MucGF0
aC5qb2luKHNlbGYuX3RtcGRpciwgZGlyX3N1ZmZpeCkKLSAgICAgICAgaWYgbm90IG9zLnBhdGgu
aXNkaXIoZGVzdGluYXRpb25fZGlyKToKLSAgICAgICAgICAgIG9zLm1ha2VkaXJzKGRlc3RpbmF0
aW9uX2RpcikKLQotICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2ZpbGUob3JpZ19maWxlKToKLSAg
ICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0NhbiBub3QgZmluZCBmaWxlICVzJyAlIG9yaWdf
ZmlsZSkKLQotICAgICAgICBfbG9nLmluZm8oJ0FkZCB0byBidW5kbGUgWyVzXTogJXMnICUgKHR5
cGUsIG9yaWdfZmlsZSkpCi0gICAgICAgIHNodXRpbC5jb3B5KG9yaWdfZmlsZSwgZGVzdGluYXRp
b25fZGlyKQotCi0gICAgICAgIGlmIHNodXRpbC53aGljaCgncGF0Y2hlbGYnKToKLSAgICAgICAg
ICAgIHBhdGNoX2VsZl9jb21tYW5kID0gWydwYXRjaGVsZicsICctLXJlbW92ZS1ycGF0aCcsIG9z
LnBhdGguam9pbihkZXN0aW5hdGlvbl9kaXIsIG9zLnBhdGguYmFzZW5hbWUob3JpZ19maWxlKSld
Ci0gICAgICAgICAgICBpZiBzdWJwcm9jZXNzLmNhbGwocGF0Y2hfZWxmX2NvbW1hbmQpICE9IDA6
Ci0gICAgICAgICAgICAgICAgX2xvZy53YXJuaW5nKCdUaGUgcGF0Y2hlbGYgY29tbWFuZCByZXR1
cm5lZCBub24temVybyBzdGF0dXMnKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIF9s
b2cud2FybmluZygncGF0Y2hlbGYgbm90IGZvdW5kLiBOb3QgbW9kaWZ5aW5nIHJwYXRoJykKLQot
ICAgICAgICBpZiBzZWxmLl9zaG91bGRfc3RyaXBfb2JqZWN0czoKLSAgICAgICAgICAgIGlmIHNo
dXRpbC53aGljaCgnc3RyaXAnKToKLSAgICAgICAgICAgICAgICBzdHJpcF9jb21tYW5kID0gWydz
dHJpcCcsICctLXN0cmlwLXVubmVlZGVkJywgb3MucGF0aC5qb2luKGRlc3RpbmF0aW9uX2Rpciwg
b3MucGF0aC5iYXNlbmFtZShvcmlnX2ZpbGUpKV0KLSAgICAgICAgICAgICAgICBpZiBzdWJwcm9j
ZXNzLmNhbGwoc3RyaXBfY29tbWFuZCkgIT0gMDoKLSAgICAgICAgICAgICAgICAgICAgX2xvZy53
YXJuaW5nKCdUaGUgc3RyaXAgY29tbWFuZCByZXR1cm5lZCBub24temVybyBzdGF0dXMnKQotICAg
ICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBfbG9nLndhcm5pbmcoJ3N0cmlwIG5vdCBm
b3VuZC4gTm90IHN0cmlwcGluZyBvYmplY3QnKQotCiAgICAgZGVmIF9yZW1vdmVfdGVtcGRpcihz
ZWxmKToKICAgICAgICAgaWYgbm90IHNlbGYuX3RtcGRpcjoKICAgICAgICAgICAgIHJldHVybgpA
QCAtMzQ5LDYgKzI0NCw3IEBAIGNsYXNzIEJ1bmRsZUNyZWF0b3Iob2JqZWN0KToKIAogICAgIGRl
ZiBjcmVhdGUoc2VsZik6CiAgICAgICAgIHNlbGYuX3RtcGRpciA9IHNlbGYuX2NyZWF0ZV90ZW1w
ZGlyKHNlbGYuX2J1aWxkcGF0aCkKKyAgICAgICAgc2VsZi5fYnVuZGxlciA9IEJpbmFyeUJ1bmRs
ZXIoc2VsZi5fdG1wZGlyLCBzZWxmLl9zaG91bGRfc3RyaXBfb2JqZWN0cykKIAogICAgICAgICBp
ZiBvcy5wYXRoLmlzZmlsZShzZWxmLl9idW5kbGVfZmlsZV9wYXRoKToKICAgICAgICAgICAgIF9s
b2cuaW5mbygnUmVtb3ZpbmcgcHJldmlvdXMgYnVuZGxlICVzJyAlIHNlbGYuX2J1bmRsZV9maWxl
X3BhdGgpCkBAIC00NTYsMTEgKzM1MiwxMSBAQCBjbGFzcyBCdW5kbGVDcmVhdG9yKG9iamVjdCk6
CiAgICAgZGVmIF9hZGRfb2JqZWN0X29yX2dldF9zeXNkZXAoc2VsZiwgb2JqZWN0LCBvYmplY3Rf
dHlwZSk6CiAgICAgICAgIHByb3ZpZGVkX2J5X3N5c3RlbV9wYWNrYWdlID0gTm9uZQogICAgICAg
ICBpZiBzZWxmLl9zeXNsaWJzID09ICdidW5kbGUtYWxsJzoKLSAgICAgICAgICAgIHNlbGYuX2Nv
cHlfYW5kX3JlbW92ZV9ycGF0aChvYmplY3QsIHR5cGU9b2JqZWN0X3R5cGUpCisgICAgICAgICAg
ICBzZWxmLl9idW5kbGVyLmNvcHlfYW5kX3JlbW92ZV9ycGF0aChvYmplY3QsIHR5cGU9b2JqZWN0
X3R5cGUpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBwcm92aWRlZF9ieV9zeXN0ZW1fcGFj
a2FnZSA9IHNlbGYuX2dldF9zeXN0ZW1fcGFja2FnZV9uYW1lKG9iamVjdCkKICAgICAgICAgICAg
IGlmIG5vdCBwcm92aWRlZF9ieV9zeXN0ZW1fcGFja2FnZToKLSAgICAgICAgICAgICAgICBzZWxm
Ll9jb3B5X2FuZF9yZW1vdmVfcnBhdGgob2JqZWN0LCB0eXBlPW9iamVjdF90eXBlKQorICAgICAg
ICAgICAgICAgIHNlbGYuX2J1bmRsZXIuY29weV9hbmRfcmVtb3ZlX3JwYXRoKG9iamVjdCwgdHlw
ZT1vYmplY3RfdHlwZSkKICAgICAgICAgcmV0dXJuIHByb3ZpZGVkX2J5X3N5c3RlbV9wYWNrYWdl
CiAKICAgICBkZWYgX2Vuc3VyZV93cGVfYmFja2VuZF9zeW1saW5rKHNlbGYpOgpAQCAtNTA2LDIw
ICs0MDIsMjAgQEAgY2xhc3MgQnVuZGxlQ3JlYXRvcihvYmplY3QpOgogICAgICAgICAgICAgICAg
IGlmIHN5c3RlbV9wYWNrYWdlOgogICAgICAgICAgICAgICAgICAgICBzeXN0ZW1fcGFja2FnZXNf
bmVlZGVkLmFkZChzeXN0ZW1fcGFja2FnZSkKICAgICAgICAgICAgIGVsaWYgb2JqZWN0LmVuZHN3
aXRoKCcuc28nKToKLSAgICAgICAgICAgICAgICBzZWxmLl9jb3B5X2FuZF9yZW1vdmVfcnBhdGgo
b2JqZWN0LCB0eXBlPSdsaWInKQorICAgICAgICAgICAgICAgIHNlbGYuX2J1bmRsZXIuY29weV9h
bmRfcmVtb3ZlX3JwYXRoKG9iamVjdCwgdHlwZT0nbGliJykKICAgICAgICAgICAgIGVsc2U6Ci0g
ICAgICAgICAgICAgICAgc2VsZi5fY29weV9hbmRfcmVtb3ZlX3JwYXRoKG9iamVjdCwgdHlwZT0n
YmluJykKKyAgICAgICAgICAgICAgICBzZWxmLl9idW5kbGVyLmNvcHlfYW5kX3JlbW92ZV9ycGF0
aChvYmplY3QsIHR5cGU9J2JpbicpCiAgICAgICAgICAgICAjIFRoZXJlIGlzIG5vIG5lZWQgdG8g
ZXhhbWluZSB0aGUgbGlicmFyaWVzIGxpbmtlZCB3aXRoIG9iamVjdHMgY29taW5nIGZyb20gYSBz
eXN0ZW0gcGFja2FnZSwKICAgICAgICAgICAgICMgYmVjYXVzZSBzeXN0ZW0gcGFja2FnZXMgYWxy
ZWFkeSBkZWNsYXJlIGRlcGVuZGVuY2llcyBiZXR3ZWVuIHRoZW0uCiAgICAgICAgICAgICAjIEhv
d2V2ZXIsIGlmIHdlIGFyZSBydW5uaW5nIHdpdGggc2VsZi5fc3lzbGlicyA9PSAnYnVuZGxlLWFs
bCcgdGhlbiBzeXN0ZW1fcGFja2FnZSB3aWxsIGJlIE5vbmUsCiAgICAgICAgICAgICAjIGFuZCBl
dmVyeXRoaW5nIHdpbGwgYmUgZXhhbWluZWQgYW5kIGJ1bmRsZWQgYXMgd2UgZG9uJ3QgYWNjb3Vu
dCBmb3Igc3lzdGVtIHBhY2thZ2VzIGluIHRoYXQgY2FzZS4KICAgICAgICAgICAgIGlmIG5vdCBz
eXN0ZW1fcGFja2FnZToKLSAgICAgICAgICAgICAgICBsaWJyYXJpZXMsIGludGVycHJldGVyID0g
c2VsZi5fbGRkX3JlY3Vyc2l2ZV9nZXRfbGlic19hbmRfaW50ZXJwcmV0ZXIob2JqZWN0KQorICAg
ICAgICAgICAgICAgIGxpYnJhcmllcywgaW50ZXJwcmV0ZXIgPSBzZWxmLl9zaGFyZWRfb2JqZWN0
X3Jlc29sdmVyLmdldF9saWJzX2FuZF9pbnRlcnByZXRlcihvYmplY3QpCiAgICAgICAgICAgICAg
ICAgaWYgaW50ZXJwcmV0ZXIgaXMgTm9uZToKICAgICAgICAgICAgICAgICAgICAgcmFpc2UgUnVu
dGltZUVycm9yKCJDb3VsZCBub3QgZGV0ZXJtaW5lIGludGVycHJldGVyIGZvciBiaW5hcnkgJXMi
ICUgb2JqZWN0KQogICAgICAgICAgICAgICAgIGlmIGNvcGllZF9pbnRlcnByZXRlciBpcyBOb25l
OgogICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLl9zeXNsaWJzID09ICdidW5kbGUtYWxsJzoK
LSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2NvcHlfYW5kX3JlbW92ZV9ycGF0aChpbnRl
cnByZXRlciwgdHlwZT0naW50ZXJwcmV0ZXInKQorICAgICAgICAgICAgICAgICAgICAgICAgc2Vs
Zi5fYnVuZGxlci5jb3B5X2FuZF9yZW1vdmVfcnBhdGgoaW50ZXJwcmV0ZXIsIHR5cGU9J2ludGVy
cHJldGVyJykKICAgICAgICAgICAgICAgICAgICAgY29waWVkX2ludGVycHJldGVyID0gaW50ZXJw
cmV0ZXIKICAgICAgICAgICAgICAgICBlbGlmIGNvcGllZF9pbnRlcnByZXRlciAhPSBpbnRlcnBy
ZXRlcjoKICAgICAgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdEZXRlY3RlZCBi
aW5hcmllcyB3aXRoIGRpZmZlcmVudCBpbnRlcnByZXRlcnM6ICVzICE9ICVzJyAlKGNvcGllZF9p
bnRlcnByZXRlciwgaW50ZXJwcmV0ZXIpKQpAQCAtNjU5LDcgKzU1NSw3IEBAIGRlZiBjb25maWd1
cmVfbG9nZ2luZyhzZWxlY3RlZF9sb2dfbGV2ZWw9J2luZm8nKToKICAgICAgICAgbG9nX2xldmVs
ID0gbG9nZ2luZy5nZXRMZXZlbE5hbWUoTE9HX01FU1NBR0UpCiAKICAgICBoYW5kbGVyID0gTG9n
SGFuZGxlcihzeXMuc3Rkb3V0KQotICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFt
ZV9fKQorICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCkKICAgICBsb2dnZXIuYWRkSGFu
ZGxlcihoYW5kbGVyKQogICAgIGxvZ2dlci5zZXRMZXZlbChsb2dfbGV2ZWwpCiAgICAgcmV0dXJu
IGhhbmRsZXIKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvcnVuLWpzYy1iZW5jaG1hcmtzIGIv
VG9vbHMvU2NyaXB0cy9ydW4tanNjLWJlbmNobWFya3MKaW5kZXggMDQwMDQzNDdhYmRmOGFiZjA0
ODMwODk0NmU0OTE5MGMwZTRhMmNkNC4uNWUwMTc4ZTBkOGQ2ZWFlNzhhNTM0MGU4OWMxMDViMmZj
OTVhN2FkYyAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy9ydW4tanNjLWJlbmNobWFya3MKKysr
IGIvVG9vbHMvU2NyaXB0cy9ydW4tanNjLWJlbmNobWFya3MKQEAgLTIzNyw2ICsyMzcsNyBAQCAk
aW5jbHVkZVNpeFNwZWVkID0gZmFsc2UKICRpbmNsdWRlVGFpbEJlbmNoID0gdHJ1ZQogJGluY2x1
ZGVCaWdJbnRCZW5jaCA9IGZhbHNlCiAkaW5jbHVkZVByaXZhdGVGaWVsZHNCZW5jaCA9IGZhbHNl
CiskbGRkPW5pbAogJG1lYXN1cmVHQz1mYWxzZQogJGJlbmNobWFya1BhdHRlcm49bmlsCiAkdmVy
Ym9zaXR5PTAKQEAgLTE0MTMsMTggKzE0MTQsMzggQEAgY2xhc3MgVk0KICAgICBAZXh0cmFFbnZb
a2V5XSA9IHZhbAogICAgIEBAZXh0cmFFbnZTZXRba2V5XSA9IHRydWUKICAgZW5kCi0gIAorCisg
IGRlZiBjb3B5SW50b0JlbmNoUGF0aEJ1bmRsZShiYXNlbmFtZSwgb3V0cHV0ZGlyKQorICAgIGJ1
bmRsZV9iaW5hcnkgPSAoU0NSSVBUX1BBVEguZGlybmFtZSArICdidW5kbGUtYmluYXJ5JykucmVh
bHBhdGgKKyAgICBjbWQgPSBTaGVsbHdvcmRzLmpvaW4oWworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJ1bmRsZV9iaW5hcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tZGVz
dC1kaXInLCBvdXRwdXRkaXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQHBhdGgKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgXSkKKyAgICAkc3RkZXJyLnB1dHMgIj4+ICN7Y21kfSIg
aWYgJHZlcmJvc2l0eT49MgorICAgIHJhaXNlIHVubGVzcyBzeXN0ZW0oY21kKQorICAgIEBwYXRo
ID0gIiN7YmFzZW5hbWV9L2pzYyIKKyAgZW5kCisKICAgZGVmIGNvcHlJbnRvQmVuY2hQYXRoCiAg
ICAgcmFpc2UgdW5sZXNzIGNhbkNvcHlJbnRvQmVuY2hQYXRoCiAgICAgYmFzZW5hbWUsIGZpbGVu
YW1lID0gQmVuY2hmaWxlLnVuaXF1ZUZpbGVuYW1lKCJ2bSIpCiAgICAgcmFpc2UgdW5sZXNzIERp
ci5ta2RpcihmaWxlbmFtZSkKKyAgICBpZiBub3QgJHJlbW90ZUhvc3RzLmVtcHR5PyBhbmQgYHVu
YW1lYCA9PSAnTGludXgnCisgICAgICBjb3B5SW50b0JlbmNoUGF0aEJ1bmRsZShiYXNlbmFtZSwg
U2hlbGx3b3Jkcy5zaGVsbGVzY2FwZShmaWxlbmFtZS50b19zKSkKKyAgICAgIHJldHVybgorICAg
IGVuZAorCiAgICAgQGxpYlBhdGguZWFjaCB7CiAgICAgICB8IGxpYlBhdGhQYXJ0IHwKICAgICAg
IGNtZCA9ICJjcCAtYSAje1NoZWxsd29yZHMuc2hlbGxlc2NhcGUobGliUGF0aFBhcnQpfS8qICN7
U2hlbGx3b3Jkcy5zaGVsbGVzY2FwZShmaWxlbmFtZS50b19zKX0iCiAgICAgICAkc3RkZXJyLnB1
dHMgIj4+ICN7Y21kfSIgaWYgJHZlcmJvc2l0eT49MgogICAgICAgcmFpc2UgdW5sZXNzIHN5c3Rl
bShjbWQpCiAgICAgfQotICAgIEBwYXRoID0gIiN7YmFzZW5hbWV9LyN7QHJlbGF0aXZlQmluUGF0
aH0iCisgICAgY21kID0gImNwIC1hICN7QHBhdGh9ICN7U2hlbGx3b3Jkcy5zaGVsbGVzY2FwZShm
aWxlbmFtZS50b19zKX0iCisgICAgJHN0ZGVyci5wdXRzICI+PiAje2NtZH0iIGlmICR2ZXJib3Np
dHk+PTIKKyAgICByYWlzZSB1bmxlc3Mgc3lzdGVtKGNtZCkKKyAgICBAcGF0aCA9ICIje2Jhc2Vu
YW1lfS9qc2MiCiAgICAgQGxpYlBhdGggPSBbYmFzZW5hbWVdCiAgIGVuZAogICAKQEAgLTIzODks
NyArMjQxMCwxNyBAQCBkZWYgd3JhcChzdHIsIGNvbHVtbnMpCiAgIH0KICAgcmVzdWx0ICsgY3Vy
TGluZSArICJcbiIKIGVuZAotICAKKworZGVmIGV4cG9ydEpTQ0Vudmlyb25tZW50VmFyaWFibGVz
CisgIGJ1ZiA9ICIiCisgIEVOVi5lYWNoIHsKKyAgICB8IG5hbWUsIHZhbHVlIHwKKyAgICBuZXh0
IHVubGVzcyBuYW1lLnN0YXJ0X3dpdGg/KCJKU0NfIikKKyAgICBidWYgPDwgImV4cG9ydCAje25h
bWV9PSN7U2hlbGx3b3Jkcy5zaGVsbGVzY2FwZSh2YWx1ZSl9XG4iCisgIH0KKyAgYnVmCitlbmQK
KwogZGVmIHJ1bkFuZEdldFJlc3VsdHMKICAgcmVzdWx0cyA9IG5pbAogICBEaXIuY2hkaXIoQkVO
Q0hfREFUQV9QQVRIKSB7CkBAIC0zMDU1LDYgKzMwODYsOCBAQCBiZWdpbgogICAgICAgJGRlcGVu
ZGVuY2llcy5wdXNoKFBhdGhuYW1lLm5ldyhhcmcpLnJlYWxwYXRoKQogICAgIHdoZW4gJy0tY29u
ZmlnJwogICAgICAgJGNvbmZpZ1BhdGggPSBQYXRobmFtZS5uZXcoYXJnKQorICAgIHdoZW4gJy0t
bGRkJworICAgICAgJGxkZCA9IGFyZwogICAgIHdoZW4gJy0taGVscCcKICAgICAgIHVzYWdlCiAg
ICAgZWxzZQpAQCAtMzYxMSw2ICszNjQ0LDcgQEAgYmVnaW4KICAgaWYgJHByZXBhcmUKICAgICBG
aWxlLm9wZW4oIiN7QkVOQ0hfREFUQV9QQVRIfS9ydW5zY3JpcHQiLCAidyIpIHsKICAgICAgIHwg
ZmlsZSB8CisgICAgICBmaWxlLnB1dHMgZXhwb3J0SlNDRW52aXJvbm1lbnRWYXJpYWJsZXMKICAg
ICAgIGZpbGUucHV0cyAiZWNobyAtZSBcIkhPU1ROQU1FOlxcY1wiIgogICAgICAgZmlsZS5wdXRz
ICJob3N0bmFtZSIKICAgICAgIGZpbGUucHV0cyAiZWNobyIKZGlmZiAtLWdpdCBhL1Rvb2xzL1Nj
cmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMgYi9Ub29scy9TY3JpcHRzL3J1bi1qc2Mtc3RyZXNz
LXRlc3RzCmluZGV4IGM5MmEzOTA5OTYwMGJjYTJjMzVkZWZjMmUzYThkMjNlMzEwZWZjZDMuLmNm
MDdkMjNlOGM2MjI3ZmM5NGU3MzQ5MjZkYmEwODRlNzY3N2VhNGMgMTAwNzU1Ci0tLSBhL1Rvb2xz
L1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMKKysrIGIvVG9vbHMvU2NyaXB0cy9ydW4tanNj
LXN0cmVzcy10ZXN0cwpAQCAtMTkxOSwzNyArMTkxOSwyMiBAQCBkZWYgcHJlcGFyZUJ1bmRsZQog
ICAgICAgICAgICAgZW5kCiAKICAgICAgICAgICAgIGlmICRyZW1vdGUgYW5kICRob3N0T1MgPT0g
ImxpbnV4IgotICAgICAgICAgICAgICAgIGdlbmVyYXRlX2J1bmRsZSA9IChQYXRobmFtZS5uZXco
VEhJU19TQ1JJUFRfUEFUSCkuZGlybmFtZSArICdnZW5lcmF0ZS1idW5kbGUnKS5yZWFscGF0aAor
ICAgICAgICAgICAgICAgIGJ1bmRsZV9iaW5hcnkgPSAoUGF0aG5hbWUubmV3KFRISVNfU0NSSVBU
X1BBVEgpLmRpcm5hbWUgKyAnYnVuZGxlLWJpbmFyeScpLnJlYWxwYXRoCiAgICAgICAgICAgICAg
ICAgRGlyLm1rdG1wZGlyIHsKICAgICAgICAgICAgICAgICAgICAgfCB0bXBkaXIgfAogICAgICAg
ICAgICAgICAgICAgICAjIEdlbmVyYXRlIGJ1bmRsZSBpbiBhIHRlbXBvcmFyeSBkaXJlY3Rvcnkg
c28gdGhhdAogICAgICAgICAgICAgICAgICAgICAjIHdlIGNhbiBzYWZlbHkgcGljayBpdCB1cCBy
ZWdhcmRsZXNzIG9mIGl0cyBuYW1lCiAgICAgICAgICAgICAgICAgICAgICMgKGl0J3MgdGhlIG9u
bHkgemlwIGZpbGUgdGhlcmUpLgogICAgICAgICAgICAgICAgICAgICBjbWRsaW5lID0gWwotICAg
ICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGVfYnVuZGxlLnRvX3MsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAiLS1wbGF0Zm9ybT1ndGsiLAotICAgICAgICAgICAgICAgICAgICAgICAgIi0t
YnVuZGxlPWpzYyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAiLS1zeXNsaWJzPWJ1bmRsZS1h
bGwiLAotICAgICAgICAgICAgICAgICAgICAgICAgIi0tbm8tc3RyaXAiLAotICAgICAgICAgICAg
ICAgICAgICAgICAgIi0tY29tcHJlc3Npb249dGFyLnh6IiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICgkYnVpbGRUeXBlID09ICJyZWxlYXNlIikgPyAiLS1yZWxlYXNlIiA6ICItLWRlYnVnIiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICItLWRlc3RpbmF0aW9uPSN7dG1wZGlyfSIKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGJ1bmRsZV9iaW5hcnkudG9fcywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICItLWRlc3QtZGlyPSN7JGpzY1BhdGguZGlybmFtZX0iLAorICAgICAgICAgICAgICAg
ICAgICAgICAgIi0tbG9nLWxldmVsPWRlYnVnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICRq
c2NQYXRoLnRvX3MKICAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgICAgICAgICBp
ZiBub3QgJGxkZC5uaWw/CiAgICAgICAgICAgICAgICAgICAgICAgICBjbWRsaW5lIDw8ICItLWxk
ZD0jeyRsZGR9IgogICAgICAgICAgICAgICAgICAgICBlbmQKICAgICAgICAgICAgICAgICAgICAg
bXlzeXMoY21kbGluZSkKLSAgICAgICAgICAgICAgICAgICAgYXJjaGl2ZXMgPSBEaXIuZ2xvYigi
I3t0bXBkaXJ9LyoudGFyLnh6IikKLSAgICAgICAgICAgICAgICAgICAgaWYgYXJjaGl2ZXMuc2l6
ZSAhPSAxCi0gICAgICAgICAgICAgICAgICAgICAgICByYWlzZSAiRXhwZWN0ZWQgZXhhY3RseSBv
bmUgZW50cnkgaW4gdG1wZGlyLCBub3QgI3thcmNoaXZlc30iCi0gICAgICAgICAgICAgICAgICAg
IGVuZAotICAgICAgICAgICAgICAgICAgICAjIE5vdGU6IHdlIG92ZXJ3cml0ZSAnanNjJy4gVGhp
cyBvYnZpb3VzbHkgY29uZmxpY3RzIHdpdGgKLSAgICAgICAgICAgICAgICAgICAgIyAhY29weVZN
IGJ1dCwgdGhlbiBnYWluLCBzbyBkb2VzICRyZW1vdGUuCi0gICAgICAgICAgICAgICAgICAgIG15
c3lzKFsidGFyIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICItQyIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAkanNjUGF0aC5kaXJuYW1lLnRvX3MsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAiLXhmIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyY2hpdmVzWzBd
XSkKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbmQKICAgICAgICAgfQpkaWZmIC0t
Z2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9iaW5hcnlfYnVuZGxpbmcvX19pbml0X18ucHkg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2JpbmFyeV9idW5kbGluZy9fX2luaXRfXy5weQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5iMzc2YmYyYmVhMmI2YWY1Y2U3OWQzZTNkMzNjNzNhZGVjNDM0ZjE4Ci0tLSAvZGV2
L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9iaW5hcnlfYnVuZGxpbmcvX19pbml0
X18ucHkKQEAgLTAsMCArMSwxMyBAQAorIyBSZXF1aXJlZCBmb3IgUHl0aG9uIHRvIHNlYXJjaCB0
aGlzIGRpcmVjdG9yeSBmb3IgbW9kdWxlIGZpbGVzCisKKyMgS2VlcCB0aGlzIGZpbGUgZnJlZSBv
ZiBhbnkgY29kZSBvciBpbXBvcnQgc3RhdGVtZW50cyB0aGF0IGNvdWxkCisjIGNhdXNlIGVpdGhl
ciBhbiBlcnJvciB0byBvY2N1ciBvciBhIGxvZyBtZXNzYWdlIHRvIGJlIGxvZ2dlZC4KKyMgVGhp
cyBlbnN1cmVzIHRoYXQgY2FsbGluZyBjb2RlIGNhbiBpbXBvcnQgaW5pdGlhbGl6YXRpb24gY29k
ZSBmcm9tCisjIHdlYmtpdHB5IGJlZm9yZSBhbnkgZXJyb3JzIG9yIGxvZyBtZXNzYWdlcyBkdWUg
dG8gY29kZSBpbiB0aGlzIGZpbGUuCisjIEluaXRpYWxpemF0aW9uIGNvZGUgY2FuIGluY2x1ZGUg
dGhpbmdzIGxpa2UgdmVyc2lvbi1jaGVja2luZyBjb2RlIGFuZAorIyBsb2dnaW5nIGNvbmZpZ3Vy
YXRpb24gY29kZS4KKyMKKyMgV2UgZG8gbm90IGV4ZWN1dGUgYW55IHZlcnNpb24tY2hlY2tpbmcg
Y29kZSBvciBsb2dnaW5nIGNvbmZpZ3VyYXRpb24KKyMgY29kZSBpbiB0aGlzIGZpbGUgc28gdGhh
dCBjYWxsZXJzIGNhbiBvcHQtaW4gYXMgdGhleSB3YW50LiAgVGhpcyBhbHNvCisjIGFsbG93cyBk
aWZmZXJlbnQgY2FsbGVycyB0byBjaG9vc2UgZGlmZmVyZW50IGluaXRpYWxpemF0aW9uIGNvZGUs
CisjIGFzIG5lY2Vzc2FyeS4KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvYmlu
YXJ5X2J1bmRsaW5nL2J1bmRsZS5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvYmluYXJ5X2J1
bmRsaW5nL2J1bmRsZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZjkzOTM5MWRkMWZiODkzYjcwMGU1YzQxZTJm
ZGMyNWVkOGVjNTNjCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9i
aW5hcnlfYnVuZGxpbmcvYnVuZGxlLnB5CkBAIC0wLDAgKzEsNzAgQEAKK2ltcG9ydCBsb2dnaW5n
CitpbXBvcnQgb3MKK2ltcG9ydCBzaHV0aWwKK2ltcG9ydCBzdWJwcm9jZXNzCisKK19sb2cgPSBs
b2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKKworCitjbGFzcyBCaW5hcnlCdW5kbGVyOgorICAg
IFZBUl9NWURJUiA9ICdNWURJUicKKyAgICBWQVJfSU5URVJQUkVURVIgPSAnSU5URVJQUkVURVIn
CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZGVzdGluYXRpb25fZGlyLCBzaG91bGRfc3RyaXBf
b2JqZWN0cyk6CisgICAgICAgIGlmIHNodXRpbC53aGljaCgncGF0Y2hlbGYnKSBpcyBOb25lOgor
ICAgICAgICAgICAgX2xvZy5lcnJvcigiQ291bGQgbm90IGZpbmQgYHBhdGNoZWxmYCBpbiAkUEFU
SCIpCisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIk1pc3NpbmcgcmVxdWlyZWQgYmluYXJ5
IGBwYXRjaGVsZmAiKQorICAgICAgICBzZWxmLl9kZXN0aW5hdGlvbl9kaXIgPSBkZXN0aW5hdGlv
bl9kaXIKKyAgICAgICAgc2VsZi5fc2hvdWxkX3N0cmlwX29iamVjdHMgPSBzaG91bGRfc3RyaXBf
b2JqZWN0cworCisgICAgZGVmIGRlc3RpbmF0aW9uX2RpcihzZWxmKToKKyAgICAgICAgcmV0dXJu
IHNlbGYuX2Rlc3RpbmF0aW9uX2RpcgorCisgICAgZGVmIGNvcHlfYW5kX3JlbW92ZV9ycGF0aChz
ZWxmLCBvcmlnX2ZpbGUsIHR5cGU9J2JpbicsIGRlc3RpbmF0aW9uX2Rpcj1Ob25lKToKKyAgICAg
ICAgZGlyX3N1ZmZpeCA9ICdsaWInIGlmIHR5cGUgPT0gJ2ludGVycHJldGVyJyBlbHNlIHR5cGUK
KyAgICAgICAgZGVzdGluYXRpb25fZGlyID0gb3MucGF0aC5qb2luKHNlbGYuX2Rlc3RpbmF0aW9u
X2RpciwgZGlyX3N1ZmZpeCkKKyAgICAgICAgaWYgbm90IG9zLnBhdGguaXNkaXIoZGVzdGluYXRp
b25fZGlyKToKKyAgICAgICAgICAgIG9zLm1ha2VkaXJzKGRlc3RpbmF0aW9uX2RpcikKKworICAg
ICAgICBpZiBub3Qgb3MucGF0aC5pc2ZpbGUob3JpZ19maWxlKToKKyAgICAgICAgICAgIHJhaXNl
IFZhbHVlRXJyb3IoJ0NhbiBub3QgZmluZCBmaWxlICVzJyAlIG9yaWdfZmlsZSkKKworICAgICAg
ICBfbG9nLmluZm8oJ0FkZCB0byBidW5kbGUgWyVzXTogJXMnICUgKHR5cGUsIG9yaWdfZmlsZSkp
CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNodXRpbC5jb3B5KG9yaWdfZmlsZSwgZGVzdGlu
YXRpb25fZGlyKQorICAgICAgICBleGNlcHQgc2h1dGlsLlNhbWVGaWxlRXJyb3I6CisgICAgICAg
ICAgICAjIE1heSByZWFzb25hYmx5IGhhcHBlbiBpZiB0aGUgY2FsbGVyIHRyaWVzIHRvIGJ1bmRs
ZSB0aGUgZmlsZXMgJ2luIHBsYWNlJy4KKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBwYXRj
aF9lbGZfY29tbWFuZCA9IFsncGF0Y2hlbGYnLCAnLS1yZW1vdmUtcnBhdGgnLCBvcy5wYXRoLmpv
aW4oZGVzdGluYXRpb25fZGlyLCBvcy5wYXRoLmJhc2VuYW1lKG9yaWdfZmlsZSkpXQorICAgICAg
ICBpZiBzdWJwcm9jZXNzLmNhbGwocGF0Y2hfZWxmX2NvbW1hbmQpICE9IDA6CisgICAgICAgICAg
ICBfbG9nLmVycm9yKCdUaGUgcGF0Y2hlbGYgY29tbWFuZCByZXR1cm5lZCBub24temVybyBzdGF0
dXMnKQorCisgICAgICAgIGlmIHNlbGYuX3Nob3VsZF9zdHJpcF9vYmplY3RzOgorICAgICAgICAg
ICAgaWYgc2h1dGlsLndoaWNoKCdzdHJpcCcpOgorICAgICAgICAgICAgICAgIHN0cmlwX2NvbW1h
bmQgPSBbJ3N0cmlwJywgJy0tc3RyaXAtdW5uZWVkZWQnLCBvcy5wYXRoLmpvaW4oZGVzdGluYXRp
b25fZGlyLCBvcy5wYXRoLmJhc2VuYW1lKG9yaWdfZmlsZSkpXQorICAgICAgICAgICAgICAgIGlm
IHN1YnByb2Nlc3MuY2FsbChzdHJpcF9jb21tYW5kKSAhPSAwOgorICAgICAgICAgICAgICAgICAg
ICBfbG9nLmVycm9yKCdUaGUgc3RyaXAgY29tbWFuZCByZXR1cm5lZCBub24temVybyBzdGF0dXMn
KQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBfbG9nLndhcm5pbmcoJ3N0cmlw
IG5vdCBmb3VuZC4gTm90IHN0cmlwcGluZyBvYmplY3QnKQorCisgICAgZGVmIGdlbmVyYXRlX3dy
YXBwZXJfc2NyaXB0KHNlbGYsIGludGVycHJldGVyLCBiaW5hcnlfdG9fd3JhcCwgZXh0cmFfZW52
aXJvbm1lbnRfdmFyaWFibGVzPXt9KToKKyAgICAgICAgaWYgbm90IG9zLnBhdGguaXNmaWxlKG9z
LnBhdGguam9pbihzZWxmLl9kZXN0aW5hdGlvbl9kaXIsICdiaW4nLCBiaW5hcnlfdG9fd3JhcCkp
OgorICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdDYW5ub3QgZmluZCBiaW5hcnkgdG8g
d3JhcCBmb3IgJXMnICUgYmluYXJ5X3RvX3dyYXApCisgICAgICAgIF9sb2cuaW5mbygnR2VuZXJh
dGUgd3JhcHBlciBzY3JpcHQgJXMnICUgYmluYXJ5X3RvX3dyYXApCisgICAgICAgIHNjcmlwdF9m
aWxlID0gb3MucGF0aC5qb2luKHNlbGYuX2Rlc3RpbmF0aW9uX2RpciwgYmluYXJ5X3RvX3dyYXAp
CisKKyAgICAgICAgd2l0aCBvcGVuKHNjcmlwdF9maWxlLCAndycpIGFzIHNjcmlwdF9oYW5kbGU6
CisgICAgICAgICAgICBzY3JpcHRfaGFuZGxlLndyaXRlKCcjIS9iaW4vc2hcbicpCisgICAgICAg
ICAgICBzY3JpcHRfaGFuZGxlLndyaXRlKCclcz0iJChkaXJuYW1lICQocmVhZGxpbmsgLWYgJDAp
KSJcbicgJSBzZWxmLlZBUl9NWURJUikKKyAgICAgICAgICAgIHNjcmlwdF9oYW5kbGUud3JpdGUo
J2V4cG9ydCBMRF9MSUJSQVJZX1BBVEg9IiR7JXN9L2xpYiJcbicgJSBzZWxmLlZBUl9NWURJUikK
KworICAgICAgICAgICAgZm9yIHZhciwgdmFsdWUgaW4gZXh0cmFfZW52aXJvbm1lbnRfdmFyaWFi
bGVzLml0ZW1zKCk6CisgICAgICAgICAgICAgICAgc2NyaXB0X2hhbmRsZS53cml0ZSgnZXhwb3J0
ICVzPVwiJXNcIlxuJyAlICh2YXIsIHZhbHVlKSkKKworICAgICAgICAgICAgaWYgaW50ZXJwcmV0
ZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgc2NyaXB0X2hhbmRsZS53cml0ZSgnSU5U
RVJQUkVURVI9IiR7JXN9L2xpYi8lcyJcbicgJSAoc2VsZi5WQVJfTVlESVIsIG9zLnBhdGguYmFz
ZW5hbWUoaW50ZXJwcmV0ZXIpKSkKKyAgICAgICAgICAgICAgICBzY3JpcHRfaGFuZGxlLndyaXRl
KCdleGVjICIke0lOVEVSUFJFVEVSfSIgIiR7JXN9L2Jpbi8lcyIgIiRAIlxuJyAlIChzZWxmLlZB
Ul9NWURJUiwgYmluYXJ5X3RvX3dyYXApKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAg
ICAgICBzY3JpcHRfaGFuZGxlLndyaXRlKCdleGVjICIkeyVzfS9iaW4vJXMiICIkQCJcbicgJSAo
c2VsZi5WQVJfTVlESVIsIGJpbmFyeV90b193cmFwKSkKKyAgICAgICAgb3MuY2htb2Qoc2NyaXB0
X2ZpbGUsIDBvNzU1KQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9iaW5hcnlf
YnVuZGxpbmcvbGRkLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9iaW5hcnlfYnVuZGxpbmcv
bGRkLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmI4Y2M5N2Y5ZGViNjY1NjFhZDc0MWQ5NGRiN2FmY2I2YjQyMWZl
ODQKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2JpbmFyeV9idW5k
bGluZy9sZGQucHkKQEAgLTAsMCArMSw4NiBAQAoraW1wb3J0IGxvZ2dpbmcKK2Zyb20gcGF0aGxp
YiBpbXBvcnQgUHVyZVBhdGgKK2ltcG9ydCBvcworaW1wb3J0IHN1YnByb2Nlc3MKKworX2xvZyA9
IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQorCisKK2NsYXNzIFNoYXJlZE9iamVjdFJlc29s
dmVyKCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxkZCk6CisgICAgICAgIHNlbGYuX2xkZCA9
IGxkZAorICAgICAgICBpZiBzaHV0aWwud2hpY2goJ3BhdGNoZWxmJykgaXMgTm9uZToKKyAgICAg
ICAgICAgIF9sb2cuZXJyb3IoIkNvdWxkIG5vdCBmaW5kIGBwYXRjaGVsZmAgaW4gJFBBVEgiKQor
ICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJNaXNzaW5nIHJlcXVpcmVkIGJpbmFyeSBgcGF0
Y2hlbGZgIikKKworICAgIGRlZiBfcnVuX2NtZF9hbmRfZ2V0X291dHB1dChzZWxmLCBjb21tYW5k
KToKKyAgICAgICAgX2xvZy5kZWJ1ZygiRVhFQyAlcyIgJSBjb21tYW5kKQorICAgICAgICBjb21t
YW5kX3Byb2Nlc3MgPSBzdWJwcm9jZXNzLlBvcGVuKGNvbW1hbmQsIHN0ZG91dD1zdWJwcm9jZXNz
LlBJUEUsIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCwgZW5jb2Rpbmc9J3V0Zi04JykKKyAgICAg
ICAgc3Rkb3V0LCBzdGRlcnIgPSBjb21tYW5kX3Byb2Nlc3MuY29tbXVuaWNhdGUoKQorICAgICAg
ICByZXR1cm4gY29tbWFuZF9wcm9jZXNzLnJldHVybmNvZGUsIHN0ZG91dCwgc3RkZXJyCisKKyAg
ICBkZWYgX2dldF9pbnRlcnByZXRlcl9vYmpuYW1lKHNlbGYsIG9iamVjdCk6CisgICAgICAgICMg
Tm90ZTogd2UgdXNlIHBhdGNoZWxmIHRvIGdldCB0aGUgb2JqZWN0IG5hbWUgKG5vdCB0aGUgcGF0
aCEpCisgICAgICAgICMgb2YgdGhlIGludGVycHJldGVyIGJlY2F1c2UgdGhpcyB3b3JrcyByZWdh
cmRsZXNzIG9mIHRoZQorICAgICAgICAjIGFyY2hpdGVjdHVyZSBvZiB0aGUgRUxGIGZpbGUuCisg
ICAgICAgIHJldGNvZGUsIHN0ZG91dCwgc3RkZXJyID0gc2VsZi5fcnVuX2NtZF9hbmRfZ2V0X291
dHB1dChbJ3BhdGNoZWxmJywgJy0tcHJpbnQtaW50ZXJwcmV0ZXInLCBvYmplY3RdKQorICAgICAg
ICBpZiByZXRjb2RlICE9IDA6CisgICAgICAgICAgICBfbG9nLmRlYnVnKCJwYXRjaGVsZiBzdGRv
dXQ6XG4lc1xuUGF0Y2hlbGYgc3RkZXJyOlxuJXMiICUgKHN0ZG91dCwgc3RkZXJyKSkKKyAgICAg
ICAgICAgIGlmICdjYW5ub3QgZmluZCBzZWN0aW9uJyBpbiBzdGRvdXQ6CisgICAgICAgICAgICAg
ICAgIyBUaGlzIGlzIGZpbmU7IHdlIG9ubHkgZXhwZWN0IGFuIGludGVycHJldGVyIGluIHRoZSBt
YWluIGJpbmFyeS4KKyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICAgICAgcmFp
c2UgUnVudGltZUVycm9yKCdUaGUgcGF0Y2hlbGYgY29tbWFuZCByZXR1cm5lZCBub24temVybyBz
dGF0dXMgZm9yIG9iamVjdCAlcycgJSBvYmplY3QpCisgICAgICAgIGludGVycHJldGVyX3BhdGgg
PSBQdXJlUGF0aChzdGRvdXQuc3RyaXAoKSkKKyAgICAgICAgcmV0dXJuIGludGVycHJldGVyX3Bh
dGgubmFtZQorCisgICAgZGVmIF9nZXRfbGlic19hbmRfaW50ZXJwcmV0ZXIoc2VsZiwgb2JqZWN0
KToKKyAgICAgICAgaW50ZXJwcmV0ZXIgPSBOb25lCisgICAgICAgIHJldGNvZGUsIHN0ZG91dCwg
c3RkZXJyID0gc2VsZi5fcnVuX2NtZF9hbmRfZ2V0X291dHB1dChbc2VsZi5fbGRkLCBvYmplY3Rd
KQorICAgICAgICBfbG9nLmRlYnVnKCJsZGQgc3Rkb3V0OlxuJXMiICUgc3Rkb3V0KQorICAgICAg
ICBpZiByZXRjb2RlICE9IDA6CisgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ1RoZSAl
cyBjb21tYW5kIHJldHVybmVkIG5vbi16ZXJvIHN0YXR1cyBmb3Igb2JqZWN0ICVzJyAlIChzZWxm
Ll9sZGQsIG9iamVjdCkpCisgICAgICAgIGxpYnMgPSBbXQorICAgICAgICBmb3IgbGluZSBpbiBz
dGRvdXQuc3BsaXRsaW5lcygpOgorICAgICAgICAgICAgbGluZSA9IGxpbmUuc3RyaXAoKQorICAg
ICAgICAgICAgaWYgJz0+JyBpbiBsaW5lOgorICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lLnNw
bGl0KCc9PicpWzFdLnN0cmlwKCkKKyAgICAgICAgICAgICAgICBpZiAnbm90IGZvdW5kJyBpbiBs
aW5lOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ2xkZCBjYW4gbm90
IHJlc29sdmUgYWxsIGRlcGVuZGVuY2llcyBmb3Igb2JqZWN0ICVzLicgJSBvYmplY3QpCisgICAg
ICAgICAgICAgICAgbGluZSA9IGxpbmUuc3BsaXQoJyAnKVswXS5zdHJpcCgpCisgICAgICAgICAg
ICAgICAgaWYgb3MucGF0aC5pc2ZpbGUobGluZSk6CisgICAgICAgICAgICAgICAgICAgIGxpYnMu
YXBwZW5kKGxpbmUpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGxpbmUgPSBs
aW5lLnNwbGl0KCcgJylbMF0uc3RyaXAoKQorICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNm
aWxlKGxpbmUpOgorICAgICAgICAgICAgICAgICAgICBpbnRlcnByZXRlciA9IGxpbmUKKyAgICAg
ICAgaWYgaW50ZXJwcmV0ZXIgaXMgTm9uZToKKyAgICAgICAgICAgICMgVGhpcyBpcyB0aGUgY2Fz
ZSBmb3Igbm9uLW5hdGl2ZSBiaW5hcmllcy4gRm9yIHRob3NlLCB3ZQorICAgICAgICAgICAgIyBj
YW4gdXNlIGEgY3Jvc3MtbGRkICh4bGRkKSwgYnV0IHRoZW4gdGhlIGludGVycHJldGVyCisgICAg
ICAgICAgICAjIGxvb2tzIGxpa2UgYW55IG90aGVyIHNoYXJlZCBvYmplY3QgaW4gdGhlIG91dHB1
dCBvZgorICAgICAgICAgICAgIyBsZGQuIFRyeSB0byBpZGVudGlmeSBpdCBieSBsb29raW5nIGF0
IHRoZSBvYmplY3QgbmFtZQorICAgICAgICAgICAgIyBmcm9tIHRoZSBpbnRlcnByZXRlciBzdHJp
bmcuCisgICAgICAgICAgICBpbnRlcnByZXRlcl9vYmpuYW1lID0gc2VsZi5fZ2V0X2ludGVycHJl
dGVyX29iam5hbWUob2JqZWN0KQorICAgICAgICAgICAgZm9yIGxpYiBpbiBsaWJzOgorICAgICAg
ICAgICAgICAgIGlmIFB1cmVQYXRoKGxpYikubmFtZSA9PSBpbnRlcnByZXRlcl9vYmpuYW1lOgor
ICAgICAgICAgICAgICAgICAgICBpbnRlcnByZXRlciA9IGxpYgorICAgICAgICAgICAgICAgICAg
ICBicmVhaworICAgICAgICAgICAgIyBJZiB3ZSBmb3VuZCBhbiBpbnRlcnByZXRlciwgcmVtb3Zl
IGl0IGZyb20gdGhlIGxpYnMuCisgICAgICAgICAgICBsaWJzID0gW2xpYiBmb3IgbGliIGluIGxp
YnMgaWYgbGliICE9IGludGVycHJldGVyXQorICAgICAgICByZXR1cm4gbGlicywgaW50ZXJwcmV0
ZXIKKworICAgIGRlZiBfbGRkX3JlY3Vyc2l2ZV9nZXRfbGlic19hbmRfaW50ZXJwcmV0ZXIoc2Vs
Ziwgb2JqZWN0LCBhbHJlYWR5X2NoZWNrZWRfbGlicz1bXSk6CisgICAgICAgIGxpYnMsIGludGVy
cHJldGVyID0gc2VsZi5fZ2V0X2xpYnNfYW5kX2ludGVycHJldGVyKG9iamVjdCkKKyAgICAgICAg
aWYgbGliczoKKyAgICAgICAgICAgIGZvciBsaWIgaW4gbGliczoKKyAgICAgICAgICAgICAgICBp
ZiBsaWIgaW4gYWxyZWFkeV9jaGVja2VkX2xpYnM6CisgICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlCisgICAgICAgICAgICAgICAgIyBhdm9pZCByZWN1cnNpb24gbG9vcHMgKGxpYmZyZWV0eXBl
LnNvLjYgPC0+IGxpYmhhcmZidXp6LnNvLjApCisgICAgICAgICAgICAgICAgYWxyZWFkeV9jaGVj
a2VkX2xpYnMuYXBwZW5kKGxpYikKKyAgICAgICAgICAgICAgICBzdWJfbGlicywgc3ViX2ludGVy
cHJldGVyID0gc2VsZi5fbGRkX3JlY3Vyc2l2ZV9nZXRfbGlic19hbmRfaW50ZXJwcmV0ZXIobGli
LCBhbHJlYWR5X2NoZWNrZWRfbGlicykKKyAgICAgICAgICAgICAgICBsaWJzLmV4dGVuZChzdWJf
bGlicykKKyAgICAgICAgICAgICAgICBpZiBzdWJfaW50ZXJwcmV0ZXIgYW5kIGludGVycHJldGVy
IGFuZCBzdWJfaW50ZXJwcmV0ZXIgIT0gaW50ZXJwcmV0ZXI6CisgICAgICAgICAgICAgICAgICAg
IHJhaXNlIFJ1bnRpbWVFcnJvcignbGlicmFyeSAlcyBoYXMgaW50ZXJwcmV0ZXIgJXMgYnV0IG9i
amVjdCAlcyBoYXMgaW50ZXJwcmV0ZXIgJXMnICUgKGxpYiwgc3ViX2ludGVycHJldGVyLCBvYmpl
Y3QsIGludGVycHJldGVyKSkKKyAgICAgICAgcmV0dXJuIGxpc3Qoc2V0KGxpYnMpKSwgaW50ZXJw
cmV0ZXIKKworICAgIGRlZiBnZXRfbGlic19hbmRfaW50ZXJwcmV0ZXIoc2VsZiwgb2JqZWN0LCBh
bHJlYWR5X2NoZWNrZWRfbGlicz1bXSk6CisgICAgICAgIHJldHVybiBzZWxmLl9sZGRfcmVjdXJz
aXZlX2dldF9saWJzX2FuZF9pbnRlcnByZXRlcihvYmplY3QsIGFscmVhZHlfY2hlY2tlZF9saWJz
KQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>432792</attachid>
            <date>2021-07-02 07:29:46 -0700</date>
            <delta_ts>2021-07-12 07:57:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227579-20210702142944.patch</filename>
            <type>text/plain</type>
            <size>32906</size>
            <attacher name="Angelos Oikonomopoulos">angelos</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5NDEyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZWVjMjgwYWRmZDU2MGQ5YWY4MmY5MDAxNjkxZWZiMTFk
MDAyNDMwMC4uNGRhOGM1MWQ5Mjk3ZWU3MThiNmY4MTUxNjIyNWYyZTc5YWMzNjFiZiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1
IEBACisyMDIxLTA3LTAyICBBbmdlbG9zIE9pa29ub21vcG91bG9zICA8YW5nZWxvc0BpZ2FsaWEu
Y29tPgorCisgICAgICAgIEJ1bmRsZSBsaWJyYXJpZXMgZm9yIHJlbW90ZSBleGVjdXRpb24gaW4g
cnVuLWpzYy1iZW5jaG1hcmtzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjc1NzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBTaW1pbGFybHkgdG8gcnVuLWpzYy1zdHJlc3MtdGVzdHMsIGludHJvZHVjZSBh
IGJ1bmRsaW5nIHN0ZXAgdGhhdAorICAgICAgICBzaGlwcyBhbGwgbGlicmFyeSBkZXBlbmRlbmNp
ZXMgdG8gdGhlIHJlbW90ZSBzeXN0ZW0gd2hlbiB1c2luZworICAgICAgICBydW4tanNjLWJlbmNo
bWFya3MgLS1yZW1vdGUuCisKKyAgICAgICAgVGhpcyBwYXRjaCBmYWN0b3JzIG91dCB0aGUgY29k
ZSB0bworICAgICAgICAtIGxvb2t1cCB0aGUgRUxGIGludGVycHJldGVyL2xpYnJhcmllcyBhbmQg
dG8KKyAgICAgICAgLSBzdHJpcCB0aGUgcnBhdGggYW5kIGNyZWF0ZSBhIHdyYXBwZXIgc2NyaXB0
CisgICAgICAgIGZyb20gZ2VuZXJhdGUtYnVuZGxlIGFuZCBwbGFjZXMgaXQgd2Via2l0cHkvYmlu
YXJ5X2J1bmRsaW5nLgorCisgICAgICAgIEl0IGFsc28gaW50cm9kdWNlcyBhIHNpbXBsZXIgc2Ny
aXB0IHRoYXQgb25seSBidW5kbGVzIGEgc2luZ2xlCisgICAgICAgIGJpbmFyeSAoYnVuZGxlLWJp
bmFyeSkgYW5kIHN3aXRjaGVzIHJ1bi1qc2MtYmVuY2htYXJrcyBhbmQKKyAgICAgICAgcnVuLWpz
Yy1zdHJlc3MtdGVzdHMgdG8gdXNlIGl0LgorCisgICAgICAgIEl0IGFsc28gdXBkYXRlcyBydW4t
anNjLWJlbmNobWFyayB0byBwcm9wYWdhdGUgYW55IGVudmlyb25tZW50CisgICAgICAgIHZhcmlh
YmxlcyBpbnRlbmRlZCBmb3IgY29uc3VtcHRpb24gYnkgdGhlIEpTQyBiaW5hcnkuCisKKyAgICAg
ICAgKiBTY3JpcHRzL2dlbmVyYXRlLWJ1bmRsZTogRmFjdG9yIG91dCByZXVzYWJsZSBidW5kbGlu
ZyBjb2RlLgorICAgICAgICAqIFNjcmlwdHMvcnVuLWpzYy1iZW5jaG1hcmtzOiBEbyBidW5kbGlu
ZyBhbmQgdmFyaWFibGUgcHJvcGFnYXRpb24uCisgICAgICAgICogU2NyaXB0cy9ydW4tanNjLXN0
cmVzcy10ZXN0czogU3dpdGNoIHRvIGJ1bmRsZS1iaW5hcnkuCisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9iaW5hcnlfYnVuZGxpbmcvX19pbml0X18ucHk6IEFkZGVkLgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvYmluYXJ5X2J1bmRsaW5nL2J1bmRsZS5weTogQWRkZWQuCisgICAgICAg
IChCaW5hcnlCdW5kbGVyKToKKyAgICAgICAgKEJpbmFyeUJ1bmRsZXIuX19pbml0X18pOgorICAg
ICAgICAoQmluYXJ5QnVuZGxlci5kZXN0aW5hdGlvbl9kaXIpOgorICAgICAgICAoQmluYXJ5QnVu
ZGxlci5jb3B5X2FuZF9yZW1vdmVfcnBhdGgpOgorICAgICAgICAoQmluYXJ5QnVuZGxlci5nZW5l
cmF0ZV93cmFwcGVyX3NjcmlwdCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9iaW5hcnlf
YnVuZGxpbmcvbGRkLnB5OiBBZGRlZC4KKyAgICAgICAgKFNoYXJlZE9iamVjdFJlc29sdmVyKToK
KyAgICAgICAgKFNoYXJlZE9iamVjdFJlc29sdmVyLl9faW5pdF9fKToKKyAgICAgICAgKFNoYXJl
ZE9iamVjdFJlc29sdmVyLl9ydW5fY21kX2FuZF9nZXRfb3V0cHV0KToKKyAgICAgICAgKFNoYXJl
ZE9iamVjdFJlc29sdmVyLl9nZXRfaW50ZXJwcmV0ZXJfb2JqbmFtZSk6CisgICAgICAgIChTaGFy
ZWRPYmplY3RSZXNvbHZlci5fZ2V0X2xpYnNfYW5kX2ludGVycHJldGVyKToKKyAgICAgICAgKFNo
YXJlZE9iamVjdFJlc29sdmVyLl9sZGRfcmVjdXJzaXZlX2dldF9saWJzX2FuZF9pbnRlcnByZXRl
cik6CisgICAgICAgIChTaGFyZWRPYmplY3RSZXNvbHZlci5nZXRfbGlic19hbmRfaW50ZXJwcmV0
ZXIpOgorCisgICAgICAgICogU2NyaXB0cy9idW5kbGUtYmluYXJ5OiBBZGRlZC4KKyAgICAgICAg
KiBTY3JpcHRzL2dlbmVyYXRlLWJ1bmRsZToKKyAgICAgICAgKiBTY3JpcHRzL3J1bi1qc2MtYmVu
Y2htYXJrczoKKyAgICAgICAgKiBTY3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzOgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvYmluYXJ5X2J1bmRsaW5nL19faW5pdF9fLnB5OiBBZGRlZC4K
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2JpbmFyeV9idW5kbGluZy9idW5kbGUucHk6IEFk
ZGVkLgorICAgICAgICAoQmluYXJ5QnVuZGxlcik6CisgICAgICAgIChCaW5hcnlCdW5kbGVyLl9f
aW5pdF9fKToKKyAgICAgICAgKEJpbmFyeUJ1bmRsZXIuZGVzdGluYXRpb25fZGlyKToKKyAgICAg
ICAgKEJpbmFyeUJ1bmRsZXIuY29weV9hbmRfcmVtb3ZlX3JwYXRoKToKKyAgICAgICAgKEJpbmFy
eUJ1bmRsZXIuZ2VuZXJhdGVfd3JhcHBlcl9zY3JpcHQpOgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvYmluYXJ5X2J1bmRsaW5nL2xkZC5weTogQWRkZWQuCisgICAgICAgIChTaGFyZWRPYmpl
Y3RSZXNvbHZlcik6CisgICAgICAgIChTaGFyZWRPYmplY3RSZXNvbHZlci5fX2luaXRfXyk6Cisg
ICAgICAgIChTaGFyZWRPYmplY3RSZXNvbHZlci5fcnVuX2NtZF9hbmRfZ2V0X291dHB1dCk6Cisg
ICAgICAgIChTaGFyZWRPYmplY3RSZXNvbHZlci5fZ2V0X2ludGVycHJldGVyX29iam5hbWUpOgor
ICAgICAgICAoU2hhcmVkT2JqZWN0UmVzb2x2ZXIuX2dldF9saWJzX2FuZF9pbnRlcnByZXRlcik6
CisgICAgICAgIChTaGFyZWRPYmplY3RSZXNvbHZlci5fbGRkX3JlY3Vyc2l2ZV9nZXRfbGlic19h
bmRfaW50ZXJwcmV0ZXIpOgorICAgICAgICAoU2hhcmVkT2JqZWN0UmVzb2x2ZXIuZ2V0X2xpYnNf
YW5kX2ludGVycHJldGVyKToKKwogMjAyMS0wNi0yOSAgWmhpZmVpIEZhbmcgIDx6aGlmZWlfZmFu
Z0BhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIG5ldyBhcmd1bWVudCBvZiBkZXZpY2Ugb3MgdmVy
c2lvbiBmb3IgcmVwb3J0aW5nIEphdmFTY3JpcHRDb3JlIHRlc3QgcmVzdWx0CmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL2J1bmRsZS1iaW5hcnkgYi9Ub29scy9TY3JpcHRzL2J1bmRsZS1iaW5h
cnkKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNzQ1Mzc5OTdjZTFlYzM5NTljZjZhM2JlZDBlNjlhMGVmNzEwZTZmYgot
LS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvYnVuZGxlLWJpbmFyeQpAQCAtMCwwICsx
LDM3IEBACisjIS91c3IvYmluL2VudiBweXRob24zCisKK2ltcG9ydCBhcmdwYXJzZQoraW1wb3J0
IGxvZ2dpbmcKK2ltcG9ydCBvcworaW1wb3J0IHN5cworCit0b3BfbGV2ZWxfZGlyZWN0b3J5ID0g
b3MucGF0aC5ub3JtcGF0aChvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwg
Jy4uJywgJy4uJykpCitzeXMucGF0aC5pbnNlcnQoMCwgb3MucGF0aC5qb2luKHRvcF9sZXZlbF9k
aXJlY3RvcnksICdUb29scycsICdTY3JpcHRzJywgJ3dlYmtpdHB5JykpCisKK2Zyb20gYmluYXJ5
X2J1bmRsaW5nLmxkZCBpbXBvcnQgU2hhcmVkT2JqZWN0UmVzb2x2ZXIKK2Zyb20gYmluYXJ5X2J1
bmRsaW5nLmJ1bmRsZSBpbXBvcnQgQmluYXJ5QnVuZGxlcgorCitkZWYgbWFpbigpOgorICAgIHBh
cnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKCd1c2FnZSAlcHJvZyBbb3B0aW9uc10nKQor
ICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tbGRkJywgZGVzdD0nbGRkJywgZGVmYXVsdD0nbGRk
JywgaGVscD0nVXNlIGFsdGVybmF0aXZlIGxkZCAodXNlZnVsIGZvciBub24tbmF0aXZlIGJpbmFy
aWVzJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWxvZy1sZXZlbCcsIGRlc3Q9J2xvZ19s
ZXZlbCcsIGNob2ljZXM9WydkZWJ1ZycsICdpbmZvJywgJ3dhcm5pbmcnLCAnZXJyb3InLCAnY3Jp
dGljYWwnXSwgZGVmYXVsdD0naW5mbycpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1kZXN0
LWRpcicsIGRlc3Q9J2Rlc3RfZGlyJywgcmVxdWlyZWQ9VHJ1ZSkKKyAgICBwYXJzZXIuYWRkX2Fy
Z3VtZW50KCdiaW5hcnknKQorICAgIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncygpCisKKyAgICBs
b2dnaW5nLmdldExvZ2dlcigpLnNldExldmVsKGFyZ3MubG9nX2xldmVsLnVwcGVyKCkpCisgICAg
bG9nZ2luZy5nZXRMb2dnZXIoKS5hZGRIYW5kbGVyKGxvZ2dpbmcuU3RyZWFtSGFuZGxlcigpKQor
ICAgIGxpYnJhcmllcywgaW50ZXJwcmV0ZXIgPSBTaGFyZWRPYmplY3RSZXNvbHZlcihhcmdzLmxk
ZCkuZ2V0X2xpYnNfYW5kX2ludGVycHJldGVyKGFyZ3MuYmluYXJ5KQorCisgICAgaWYgaW50ZXJw
cmV0ZXIgaXMgTm9uZToKKyAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJDb3VsZCBub3QgZGV0
ZXJtaW5lIGludGVycHJldGVyIGZvciBiaW5hcnkgJXMiICUgb2JqZWN0KQorICAgIGJ1bmRsZXIg
PSBCaW5hcnlCdW5kbGVyKGFyZ3MuZGVzdF9kaXIsIEZhbHNlKQorICAgIGJ1bmRsZXIuY29weV9h
bmRfcmVtb3ZlX3JwYXRoKGludGVycHJldGVyLCB0eXBlPSdpbnRlcnByZXRlcicpCisgICAgYnVu
ZGxlci5jb3B5X2FuZF9yZW1vdmVfcnBhdGgoYXJncy5iaW5hcnksIHR5cGU9J2JpbicpCisgICAg
Zm9yIGxpYiBpbiBsaWJyYXJpZXM6CisgICAgICAgIGJ1bmRsZXIuY29weV9hbmRfcmVtb3ZlX3Jw
YXRoKGxpYiwgdHlwZT0nbGliJykKKyAgICBidW5kbGVyLmdlbmVyYXRlX3dyYXBwZXJfc2NyaXB0
KGludGVycHJldGVyLCBvcy5wYXRoLmJhc2VuYW1lKGFyZ3MuYmluYXJ5KSkKKyAgICByZXR1cm4g
MAorCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHN5cy5leGl0KG1haW4oKSkKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtYnVuZGxlIGIvVG9vbHMvU2NyaXB0cy9n
ZW5lcmF0ZS1idW5kbGUKaW5kZXggNzgxYTcwYjljZTRlNzlkY2FmMTk4M2Y4Y2M2YzVhZWIyMzZi
ZGZlZi4uNWNmZDZhZjJhZDE0NDAzOTQ4MGY5NDdlZjUyNTE1ZWJjZmEyM2MzNCAxMDA3NTUKLS0t
IGEvVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1idW5kbGUKKysrIGIvVG9vbHMvU2NyaXB0cy9nZW5l
cmF0ZS1idW5kbGUKQEAgLTQwLDkgKzQwLDExIEBAIGltcG9ydCB6aXBmaWxlCiB0b3BfbGV2ZWxf
ZGlyZWN0b3J5ID0gb3MucGF0aC5ub3JtcGF0aChvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1l
KF9fZmlsZV9fKSwgJy4uJywgJy4uJykpCiBzeXMucGF0aC5pbnNlcnQoMCwgb3MucGF0aC5qb2lu
KHRvcF9sZXZlbF9kaXJlY3RvcnksICdUb29scycsICdmbGF0cGFrJykpCiBzeXMucGF0aC5pbnNl
cnQoMCwgb3MucGF0aC5qb2luKHRvcF9sZXZlbF9kaXJlY3RvcnksICdUb29scycsICdqaGJ1aWxk
JykpCitzeXMucGF0aC5pbnNlcnQoMCwgb3MucGF0aC5qb2luKHRvcF9sZXZlbF9kaXJlY3Rvcnks
ICdUb29scycsICdTY3JpcHRzJywgJ3dlYmtpdHB5JykpCiBpbXBvcnQgamhidWlsZHV0aWxzCiBp
bXBvcnQgZmxhdHBha3V0aWxzCi0KK2Zyb20gYmluYXJ5X2J1bmRsaW5nLmxkZCBpbXBvcnQgU2hh
cmVkT2JqZWN0UmVzb2x2ZXIKK2Zyb20gYmluYXJ5X2J1bmRsaW5nLmJ1bmRsZSBpbXBvcnQgQmlu
YXJ5QnVuZGxlcgogCiBJTlNUQUxMX0RFUFNfU0NSSVBUX1RFTVBMQVRFID0gIiIiXAogIyEvYmlu
L2Jhc2gKQEAgLTEyNyw3ICsxMjksNyBAQCBjbGFzcyBCdW5kbGVDcmVhdG9yKG9iamVjdCk6CiAg
ICAgICAgIHNlbGYuX2J1bmRsZV90eXBlID0gYnVuZGxlX3R5cGUKICAgICAgICAgc2VsZi5fYnVp
bGRlcm5hbWUgPSBidWlsZGVyX25hbWUKICAgICAgICAgc2VsZi5fc3lzbGlicyA9IHN5c2xpYnMK
LSAgICAgICAgc2VsZi5fbGRkID0gbGRkCisgICAgICAgIHNlbGYuX3NoYXJlZF9vYmplY3RfcmVz
b2x2ZXIgPSBTaGFyZWRPYmplY3RSZXNvbHZlcihsZGQpCiAgICAgICAgIHNlbGYuX3Nob3VsZF9z
dHJpcF9vYmplY3RzID0gc2hvdWxkX3N0cmlwX29iamVjdHMKICAgICAgICAgc2VsZi5fY29tcHJl
c3Npb25fdHlwZSA9IGNvbXByZXNzaW9uX3R5cGUKICAgICAgICAgc2VsZi5fdG1wZGlyID0gTm9u
ZQpAQCAtMTUxLDc2ICsxNTMsNiBAQCBjbGFzcyBCdW5kbGVDcmVhdG9yKG9iamVjdCk6CiAgICAg
ICAgICAgICByZXR1cm4gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9b3MucGF0aC5qb2luKG9zLnBh
dGguYWJzcGF0aChiYXNlZGlyKSwgJ3RtcCcpKQogICAgICAgICByZXR1cm4gdGVtcGZpbGUubWtk
dGVtcCgpCiAKLSAgICBkZWYgX3J1bl9jbWRfYW5kX2dldF9vdXRwdXQoc2VsZiwgY29tbWFuZCk6
Ci0gICAgICAgIGNvbW1hbmRfcHJvY2VzcyA9IHN1YnByb2Nlc3MuUG9wZW4oY29tbWFuZCwgc3Rk
b3V0PXN1YnByb2Nlc3MuUElQRSwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VULCBlbmNvZGluZz0n
dXRmLTgnKQotICAgICAgICBzdGRvdXQsIHN0ZGVyciA9IGNvbW1hbmRfcHJvY2Vzcy5jb21tdW5p
Y2F0ZSgpCi0gICAgICAgIHJldHVybiBjb21tYW5kX3Byb2Nlc3MucmV0dXJuY29kZSwgc3Rkb3V0
LCBzdGRlcnIKLQotCi0gICAgZGVmIF9nZXRfaW50ZXJwcmV0ZXJfb2JqbmFtZShzZWxmLCBvYmpl
Y3QpOgotICAgICAgICAjIE5vdGU6IHdlIHVzZSBwYXRjaGVsZiB0byBnZXQgdGhlIG9iamVjdCBu
YW1lIChub3QgdGhlIHBhdGghKQotICAgICAgICAjIG9mIHRoZSBpbnRlcnByZXRlciBiZWNhdXNl
IHRoaXMgd29ya3MgcmVnYXJkbGVzcyBvZiB0aGUKLSAgICAgICAgIyBhcmNoaXRlY3R1cmUgb2Yg
dGhlIEVMRiBmaWxlLgotICAgICAgICByZXRjb2RlLCBzdGRvdXQsIHN0ZGVyciA9IHNlbGYuX3J1
bl9jbWRfYW5kX2dldF9vdXRwdXQoWydwYXRjaGVsZicsICctLXByaW50LWludGVycHJldGVyJywg
b2JqZWN0XSkKLSAgICAgICAgaWYgcmV0Y29kZSAhPSAwOgotICAgICAgICAgICAgX2xvZy5kZWJ1
ZygicGF0Y2hlbGYgc3Rkb3V0OlxuJXNcblBhdGNoZWxmIHN0ZGVycjpcbiVzIiAlIChzdGRvdXQs
IHN0ZGVycikpCi0gICAgICAgICAgICBpZiAnY2Fubm90IGZpbmQgc2VjdGlvbicgaW4gc3Rkb3V0
OgotICAgICAgICAgICAgICAgICMgVGhpcyBpcyBmaW5lOyB3ZSBvbmx5IGV4cGVjdCBhbiBpbnRl
cnByZXRlciBpbiB0aGUgbWFpbiBiaW5hcnkuCi0gICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUK
LSAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignVGhlIHBhdGNoZWxmIGNvbW1hbmQgcmV0
dXJuZWQgbm9uLXplcm8gc3RhdHVzIGZvciBvYmplY3QgJXMnICUgb2JqZWN0KQotICAgICAgICBp
bnRlcnByZXRlcl9wYXRoID0gUHVyZVBhdGgoc3Rkb3V0LnN0cmlwKCkpCi0gICAgICAgIHJldHVy
biBpbnRlcnByZXRlcl9wYXRoLm5hbWUKLQotICAgIGRlZiBfZ2V0X2xpYnNfYW5kX2ludGVycHJl
dGVyKHNlbGYsIG9iamVjdCk6Ci0gICAgICAgIGludGVycHJldGVyID0gTm9uZQotICAgICAgICBy
ZXRjb2RlLCBzdGRvdXQsIHN0ZGVyciA9IHNlbGYuX3J1bl9jbWRfYW5kX2dldF9vdXRwdXQoW3Nl
bGYuX2xkZCwgb2JqZWN0XSkKLSAgICAgICAgX2xvZy5kZWJ1ZygibGRkIHN0ZG91dDpcbiVzIiAl
IHN0ZG91dCkKLSAgICAgICAgaWYgcmV0Y29kZSAhPSAwOgotICAgICAgICAgICAgcmFpc2UgUnVu
dGltZUVycm9yKCdUaGUgJXMgY29tbWFuZCByZXR1cm5lZCBub24temVybyBzdGF0dXMgZm9yIG9i
amVjdCAlcycgJSAoc2VsZi5fbGRkLCBvYmplY3QpKQotICAgICAgICBsaWJzID0gW10KLSAgICAg
ICAgZm9yIGxpbmUgaW4gc3Rkb3V0LnNwbGl0bGluZXMoKToKLSAgICAgICAgICAgIGxpbmUgPSBs
aW5lLnN0cmlwKCkKLSAgICAgICAgICAgIGlmICc9PicgaW4gbGluZToKLSAgICAgICAgICAgICAg
ICBsaW5lID0gbGluZS5zcGxpdCgnPT4nKVsxXS5zdHJpcCgpCi0gICAgICAgICAgICAgICAgaWYg
J25vdCBmb3VuZCcgaW4gbGluZToKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVy
cm9yKCdsZGQgY2FuIG5vdCByZXNvbHZlIGFsbCBkZXBlbmRlbmNpZXMgZm9yIG9iamVjdCAlcy4n
ICUgb2JqZWN0KQotICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lLnNwbGl0KCcgJylbMF0uc3Ry
aXAoKQotICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKGxpbmUpOgotICAgICAgICAg
ICAgICAgICAgICBsaWJzLmFwcGVuZChsaW5lKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAg
ICAgICAgICBsaW5lID0gbGluZS5zcGxpdCgnICcpWzBdLnN0cmlwKCkKLSAgICAgICAgICAgICAg
ICBpZiBvcy5wYXRoLmlzZmlsZShsaW5lKToKLSAgICAgICAgICAgICAgICAgICAgaW50ZXJwcmV0
ZXIgPSBsaW5lCi0gICAgICAgIGlmIGludGVycHJldGVyIGlzIE5vbmU6Ci0gICAgICAgICAgICAj
IFRoaXMgaXMgdGhlIGNhc2UgZm9yIG5vbi1uYXRpdmUgYmluYXJpZXMuIEZvciB0aG9zZSwgd2UK
LSAgICAgICAgICAgICMgY2FuIHVzZSBhIGNyb3NzLWxkZCAoeGxkZCksIGJ1dCB0aGVuIHRoZSBp
bnRlcnByZXRlcgotICAgICAgICAgICAgIyBsb29rcyBsaWtlIGFueSBvdGhlciBzaGFyZWQgb2Jq
ZWN0IGluIHRoZSBvdXRwdXQgb2YKLSAgICAgICAgICAgICMgbGRkLiBUcnkgdG8gaWRlbnRpZnkg
aXQgYnkgbG9va2luZyBhdCB0aGUgb2JqZWN0IG5hbWUKLSAgICAgICAgICAgICMgZnJvbSB0aGUg
aW50ZXJwcmV0ZXIgc3RyaW5nLgotICAgICAgICAgICAgaW50ZXJwcmV0ZXJfb2JqbmFtZSA9IHNl
bGYuX2dldF9pbnRlcnByZXRlcl9vYmpuYW1lKG9iamVjdCkKLSAgICAgICAgICAgIGZvciBsaWIg
aW4gbGliczoKLSAgICAgICAgICAgICAgICBpZiBQdXJlUGF0aChsaWIpLm5hbWUgPT0gaW50ZXJw
cmV0ZXJfb2JqbmFtZToKLSAgICAgICAgICAgICAgICAgICAgaW50ZXJwcmV0ZXIgPSBsaWIKLSAg
ICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICMgSWYgd2UgZm91bmQgYW4gaW50
ZXJwcmV0ZXIsIHJlbW92ZSBpdCBmcm9tIHRoZSBsaWJzLgotICAgICAgICAgICAgbGlicyA9IFts
aWIgZm9yIGxpYiBpbiBsaWJzIGlmIGxpYiAhPSBpbnRlcnByZXRlcl0KLSAgICAgICAgcmV0dXJu
IGxpYnMsIGludGVycHJldGVyCi0KLQotICAgIGRlZiBfbGRkX3JlY3Vyc2l2ZV9nZXRfbGlic19h
bmRfaW50ZXJwcmV0ZXIoc2VsZiwgb2JqZWN0LCBhbHJlYWR5X2NoZWNrZWRfbGlicyA9IFtdKToK
LSAgICAgICAgbGlicywgaW50ZXJwcmV0ZXIgPSBzZWxmLl9nZXRfbGlic19hbmRfaW50ZXJwcmV0
ZXIob2JqZWN0KQotICAgICAgICBpZiBsaWJzOgotICAgICAgICAgICAgZm9yIGxpYiBpbiBsaWJz
OgotICAgICAgICAgICAgICAgIGlmIGxpYiBpbiBhbHJlYWR5X2NoZWNrZWRfbGliczoKLSAgICAg
ICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICAjIGF2b2lkIHJlY3Vyc2lv
biBsb29wcyAobGliZnJlZXR5cGUuc28uNiA8LT4gbGliaGFyZmJ1enouc28uMCkKLSAgICAgICAg
ICAgICAgICBhbHJlYWR5X2NoZWNrZWRfbGlicy5hcHBlbmQobGliKQotICAgICAgICAgICAgICAg
IHN1Yl9saWJzLCBzdWJfaW50ZXJwcmV0ZXIgPSBzZWxmLl9sZGRfcmVjdXJzaXZlX2dldF9saWJz
X2FuZF9pbnRlcnByZXRlcihsaWIsIGFscmVhZHlfY2hlY2tlZF9saWJzKQotICAgICAgICAgICAg
ICAgIGxpYnMuZXh0ZW5kKHN1Yl9saWJzKQotICAgICAgICAgICAgICAgIGlmIHN1Yl9pbnRlcnBy
ZXRlciBhbmQgaW50ZXJwcmV0ZXIgYW5kIHN1Yl9pbnRlcnByZXRlciAhPSBpbnRlcnByZXRlcjoK
LSAgICAgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdsaWJyYXJ5ICVzIGhhcyBp
bnRlcnByZXRlciAlcyBidXQgb2JqZWN0ICVzIGhhcyBpbnRlcnByZXRlciAlcycgJSAobGliLCBz
dWJfaW50ZXJwcmV0ZXIsIG9iamVjdCwgaW50ZXJwcmV0ZXIpKQotICAgICAgICByZXR1cm4gbGlz
dChzZXQobGlicykpLCBpbnRlcnByZXRlcgotCiAKICAgICBkZWYgX2dldF9vc3ByZXR0eW5hbWUo
c2VsZik6CiAgICAgICAgIHdpdGggb3BlbignL2V0Yy9vcy1yZWxlYXNlJywgJ3InKSBhcyBvc3Jl
bGVhc2VfaGFuZGxlOgpAQCAtMjU4LDM3ICsxOTAsMjkgQEAgY2xhc3MgQnVuZGxlQ3JlYXRvcihv
YmplY3QpOgogCiAKICAgICBkZWYgX2dlbmVyYXRlX3dyYXBwZXJfc2NyaXB0KHNlbGYsIGludGVy
cHJldGVyLCBiaW5hcnlfdG9fd3JhcCk6Ci0gICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzZmlsZShv
cy5wYXRoLmpvaW4oc2VsZi5fdG1wZGlyLCAnYmluJywgYmluYXJ5X3RvX3dyYXApKToKLSAgICAg
ICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignQ2FuIG5vdCBmaW5kIGJpbmFyeSB0byB3cmFwIGZv
ciAlcycgJSBiaW5hcnlfdG9fd3JhcCkKLSAgICAgICAgc2VsZi5fd3JhcHBlcl9zY3JpcHRzLmFw
cGVuZChiaW5hcnlfdG9fd3JhcCkKLSAgICAgICAgX2xvZy5pbmZvKCdHZW5lcmF0ZSB3cmFwcGVy
IHNjcmlwdCAlcycgJSBiaW5hcnlfdG9fd3JhcCkKLSAgICAgICAgc2NyaXB0X2ZpbGUgPSBvcy5w
YXRoLmpvaW4oc2VsZi5fdG1wZGlyLCBiaW5hcnlfdG9fd3JhcCkKLQotICAgICAgICB3aXRoIG9w
ZW4oc2NyaXB0X2ZpbGUsICd3JykgYXMgc2NyaXB0X2hhbmRsZToKLSAgICAgICAgICAgIHNjcmlw
dF9oYW5kbGUud3JpdGUoJyMhL2Jpbi9zaFxuJykKLSAgICAgICAgICAgIHNjcmlwdF9oYW5kbGUu
d3JpdGUoJ01ZRElSPSIkKGRpcm5hbWUgJChyZWFkbGluayAtZiAkMCkpIlxuJykKLSAgICAgICAg
ICAgIHNjcmlwdF9oYW5kbGUud3JpdGUoJ2V4cG9ydCBMRF9MSUJSQVJZX1BBVEg9IiR7TVlESVJ9
L2xpYiJcbicpCi0gICAgICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKG9zLnBhdGguam9pbihzZWxm
Ll90bXBkaXIsICdnaW8nKSk6Ci0gICAgICAgICAgICAgICAgZ2lvX3ZhciA9ICdHSU9fTU9EVUxF
X0RJUicgaWYgc2VsZi5fc3lzbGlicyA9PSAnYnVuZGxlLWFsbCcgZWxzZSAnR0lPX0VYVFJBX01P
RFVMRVMnCi0gICAgICAgICAgICAgICAgc2NyaXB0X2hhbmRsZS53cml0ZSgnZXhwb3J0ICVzPSIk
e01ZRElSfS9naW8iXG4nICUgZ2lvX3ZhcikKLSAgICAgICAgICAgIGlmIG9zLnBhdGguaXNkaXIo
b3MucGF0aC5qb2luKHNlbGYuX3RtcGRpciwgJ2dzdCcpKToKLSAgICAgICAgICAgICAgICBnc3Rf
dmFyID0gJ0dTVF9QTFVHSU5fU1lTVEVNX1BBVEhfMV8wJyBpZiBzZWxmLl9zeXNsaWJzID09ICdi
dW5kbGUtYWxsJyBlbHNlICdHU1RfUExVR0lOX1BBVEhfMV8wJwotICAgICAgICAgICAgICAgIHNj
cmlwdF9oYW5kbGUud3JpdGUoJ2V4cG9ydCAlcz0iJHtNWURJUn0vZ3N0IlxuJyAlIGdzdF92YXIp
Ci0gICAgICAgICAgICAgICAgc2NyaXB0X2hhbmRsZS53cml0ZSgnZXhwb3J0IEdTVF9SRUdJU1RS
WV8xXzA9IiR7TVlESVJ9L2dzdC9nc3RyZWFtZXItMS4wLnJlZ2lzdHJ5IlxuJykKKyAgICAgICAg
dmFyaWFibGVzID0gZGljdCgpCisgICAgICAgIG15ZGlyID0gc2VsZi5fYnVuZGxlci5WQVJfTVlE
SVIKKyAgICAgICAgaWYgb3MucGF0aC5pc2Rpcihvcy5wYXRoLmpvaW4oc2VsZi5fYnVuZGxlci5k
ZXN0aW5hdGlvbl9kaXIoKSwgJ2dpbycpKToKKyAgICAgICAgICAgIGdpb192YXIgPSAnR0lPX01P
RFVMRV9ESVInIGlmIHNlbGYuX3N5c2xpYnMgPT0gJ2J1bmRsZS1hbGwnIGVsc2UgJ0dJT19FWFRS
QV9NT0RVTEVTJworICAgICAgICAgICAgdmFyaWFibGVzW2dpb192YXJdID0gIiR7JXN9L2dpbyIg
JSBteWRpcgorCisgICAgICAgIGlmIG9zLnBhdGguaXNkaXIob3MucGF0aC5qb2luKHNlbGYuX2J1
bmRsZXIuZGVzdGluYXRpb25fZGlyKCksICdnc3QnKSk6CisgICAgICAgICAgICBnc3RfdmFyID0g
J0dTVF9QTFVHSU5fU1lTVEVNX1BBVEhfMV8wJyBpZiBzZWxmLl9zeXNsaWJzID09ICdidW5kbGUt
YWxsJyBlbHNlICdHU1RfUExVR0lOX1BBVEhfMV8wJworICAgICAgICAgICAgdmFyaWFibGVzW2dz
dF92YXJdID0gIiR7JXN9L2dzdCIgJSBteWRpcgorICAgICAgICBpZiBiaW5hcnlfdG9fd3JhcCAh
PSAianNjIjoKKyAgICAgICAgICAgIHZhcmlhYmxlc1snV0VCS0lUX0VYRUNfUEFUSCddID0gIiR7
JXN9L2JpbiIgJSBteWRpcgorICAgICAgICAgICAgdmFyaWFibGVzWydXRUJLSVRfSU5KRUNURURf
QlVORExFX1BBVEgnXSA9ICIkeyVzfS9saWIiICUgbXlkaXIKKyAgICAgICAgaWYgc2VsZi5fc3lz
bGlicyA9PSAnYnVuZGxlLWFsbCc6CiAgICAgICAgICAgICBpZiBiaW5hcnlfdG9fd3JhcCAhPSAi
anNjIjoKLSAgICAgICAgICAgICAgICBzY3JpcHRfaGFuZGxlLndyaXRlKCdleHBvcnQgV0VCS0lU
X0VYRUNfUEFUSD0iJHtNWURJUn0vYmluIlxuJykKLSAgICAgICAgICAgICAgICBzY3JpcHRfaGFu
ZGxlLndyaXRlKCdleHBvcnQgV0VCS0lUX0lOSkVDVEVEX0JVTkRMRV9QQVRIPSIke01ZRElSfS9s
aWIiXG4nKQotICAgICAgICAgICAgaWYgc2VsZi5fc3lzbGlicyA9PSAnYnVuZGxlLWFsbCc6Ci0g
ICAgICAgICAgICAgICAgc2NyaXB0X2hhbmRsZS53cml0ZSgnSU5URVJQUkVURVI9IiR7TVlESVJ9
L2xpYi8lcyJcbicgJSBvcy5wYXRoLmJhc2VuYW1lKGludGVycHJldGVyKSkKLSAgICAgICAgICAg
ICAgICBpZiBiaW5hcnlfdG9fd3JhcCAhPSAianNjIjoKLSAgICAgICAgICAgICAgICAgICAgc2Ny
aXB0X2hhbmRsZS53cml0ZSgnZXhwb3J0IFdFQl9QUk9DRVNTX0NNRF9QUkVGSVg9IiR7SU5URVJQ
UkVURVJ9IlxuJykKLSAgICAgICAgICAgICAgICAgICAgc2NyaXB0X2hhbmRsZS53cml0ZSgnZXhw
b3J0IFBMVUdJTl9QUk9DRVNTX0NNRF9QUkVGSVg9IiR7SU5URVJQUkVURVJ9IlxuJykKLSAgICAg
ICAgICAgICAgICAgICAgc2NyaXB0X2hhbmRsZS53cml0ZSgnZXhwb3J0IE5FVFdPUktfUFJPQ0VT
U19DTURfUFJFRklYPSIke0lOVEVSUFJFVEVSfSJcbicpCi0gICAgICAgICAgICAgICAgICAgIHNj
cmlwdF9oYW5kbGUud3JpdGUoJ2V4cG9ydCBHUFVfUFJPQ0VTU19DTURfUFJFRklYPSIke0lOVEVS
UFJFVEVSfSJcbicpCi0gICAgICAgICAgICAgICAgc2NyaXB0X2hhbmRsZS53cml0ZSgnZXhlYyAi
JHtJTlRFUlBSRVRFUn0iICIke01ZRElSfS9iaW4vJXMiICIkQCJcbicgJSBiaW5hcnlfdG9fd3Jh
cCkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc2NyaXB0X2hhbmRsZS53cml0
ZSgnZXhlYyAiJHtNWURJUn0vYmluLyVzIiAiJEAiXG4nICUgYmluYXJ5X3RvX3dyYXApCi0gICAg
ICAgIG9zLmNobW9kKHNjcmlwdF9maWxlLCAwbzc1NSkKKyAgICAgICAgICAgICAgICBmb3IgdmFy
IGluIFsnV0VCX1BST0NFU1NfQ01EX1BSRUZJWCcsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ1BMVUdJTl9QUk9DRVNTX0NNRF9QUkVGSVgnLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICdORVRXT1JLX1BST0NFU1NfQ01EX1BSRUZJWCcsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ0dQVV9QUk9DRVNTX0NNRF9QUkVGSVgnXToKKyAgICAgICAgICAgICAgICAgICAgdmFy
aWFibGVzW3Zhcl0gPSAiJHslc30iICUgc2VsZi5fYnVuZGxlci5WQVJfSU5URVJQUkVURVIKKyAg
ICAgICAgZWxzZToKKyAgICAgICAgICAgIGludGVycHJldGVyID0gTm9uZQorICAgICAgICBzZWxm
Ll9idW5kbGVyLmdlbmVyYXRlX3dyYXBwZXJfc2NyaXB0KGludGVycHJldGVyLCBiaW5hcnlfdG9f
d3JhcCwgdmFyaWFibGVzKQorICAgICAgICBzZWxmLl93cmFwcGVyX3NjcmlwdHMuYXBwZW5kKGJp
bmFyeV90b193cmFwKQogCiAgICAgZGVmIF9nZW5lcmF0ZV9pbnN0YWxsX2RlcHNfc2NyaXB0KHNl
bGYsIHN5c3RlbV9wYWNrYWdlc19uZWVkZWQpOgogICAgICAgICBpZiBub3Qgc3lzdGVtX3BhY2th
Z2VzX25lZWRlZDoKQEAgLTMxMiwzNSArMjM2LDYgQEAgY2xhc3MgQnVuZGxlQ3JlYXRvcihvYmpl
Y3QpOgogICAgICAgICAgICAgaW5zdGFsbGRlcHNfaGFuZGxlLndyaXRlKElOU1RBTExfREVQU19T
Q1JJUFRfVEVNUExBVEUgJSB7J3BhY2thZ2VzX25lZWRlZCcgOiAnICcuam9pbihzeXN0ZW1fcGFj
a2FnZXNfbmVlZGVkKX0gKQogICAgICAgICBvcy5jaG1vZChpbnN0YWxsZGVwc19maWxlLCAwbzc1
NSkKIAotCi0gICAgZGVmIF9jb3B5X2FuZF9yZW1vdmVfcnBhdGgoc2VsZiwgb3JpZ19maWxlLCB0
eXBlPSdiaW4nLCBkZXN0aW5hdGlvbl9kaXI9Tm9uZSk6Ci0gICAgICAgIGlmIG5vdCBkZXN0aW5h
dGlvbl9kaXI6Ci0gICAgICAgICAgICBkaXJfc3VmZml4ID0gJ2xpYicgaWYgdHlwZSA9PSAnaW50
ZXJwcmV0ZXInIGVsc2UgdHlwZQotICAgICAgICAgICAgZGVzdGluYXRpb25fZGlyID0gb3MucGF0
aC5qb2luKHNlbGYuX3RtcGRpciwgZGlyX3N1ZmZpeCkKLSAgICAgICAgaWYgbm90IG9zLnBhdGgu
aXNkaXIoZGVzdGluYXRpb25fZGlyKToKLSAgICAgICAgICAgIG9zLm1ha2VkaXJzKGRlc3RpbmF0
aW9uX2RpcikKLQotICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2ZpbGUob3JpZ19maWxlKToKLSAg
ICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0NhbiBub3QgZmluZCBmaWxlICVzJyAlIG9yaWdf
ZmlsZSkKLQotICAgICAgICBfbG9nLmluZm8oJ0FkZCB0byBidW5kbGUgWyVzXTogJXMnICUgKHR5
cGUsIG9yaWdfZmlsZSkpCi0gICAgICAgIHNodXRpbC5jb3B5KG9yaWdfZmlsZSwgZGVzdGluYXRp
b25fZGlyKQotCi0gICAgICAgIGlmIHNodXRpbC53aGljaCgncGF0Y2hlbGYnKToKLSAgICAgICAg
ICAgIHBhdGNoX2VsZl9jb21tYW5kID0gWydwYXRjaGVsZicsICctLXJlbW92ZS1ycGF0aCcsIG9z
LnBhdGguam9pbihkZXN0aW5hdGlvbl9kaXIsIG9zLnBhdGguYmFzZW5hbWUob3JpZ19maWxlKSld
Ci0gICAgICAgICAgICBpZiBzdWJwcm9jZXNzLmNhbGwocGF0Y2hfZWxmX2NvbW1hbmQpICE9IDA6
Ci0gICAgICAgICAgICAgICAgX2xvZy53YXJuaW5nKCdUaGUgcGF0Y2hlbGYgY29tbWFuZCByZXR1
cm5lZCBub24temVybyBzdGF0dXMnKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIF9s
b2cud2FybmluZygncGF0Y2hlbGYgbm90IGZvdW5kLiBOb3QgbW9kaWZ5aW5nIHJwYXRoJykKLQot
ICAgICAgICBpZiBzZWxmLl9zaG91bGRfc3RyaXBfb2JqZWN0czoKLSAgICAgICAgICAgIGlmIHNo
dXRpbC53aGljaCgnc3RyaXAnKToKLSAgICAgICAgICAgICAgICBzdHJpcF9jb21tYW5kID0gWydz
dHJpcCcsICctLXN0cmlwLXVubmVlZGVkJywgb3MucGF0aC5qb2luKGRlc3RpbmF0aW9uX2Rpciwg
b3MucGF0aC5iYXNlbmFtZShvcmlnX2ZpbGUpKV0KLSAgICAgICAgICAgICAgICBpZiBzdWJwcm9j
ZXNzLmNhbGwoc3RyaXBfY29tbWFuZCkgIT0gMDoKLSAgICAgICAgICAgICAgICAgICAgX2xvZy53
YXJuaW5nKCdUaGUgc3RyaXAgY29tbWFuZCByZXR1cm5lZCBub24temVybyBzdGF0dXMnKQotICAg
ICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBfbG9nLndhcm5pbmcoJ3N0cmlwIG5vdCBm
b3VuZC4gTm90IHN0cmlwcGluZyBvYmplY3QnKQotCiAgICAgZGVmIF9yZW1vdmVfdGVtcGRpcihz
ZWxmKToKICAgICAgICAgaWYgbm90IHNlbGYuX3RtcGRpcjoKICAgICAgICAgICAgIHJldHVybgpA
QCAtMzQ5LDYgKzI0NCw3IEBAIGNsYXNzIEJ1bmRsZUNyZWF0b3Iob2JqZWN0KToKIAogICAgIGRl
ZiBjcmVhdGUoc2VsZik6CiAgICAgICAgIHNlbGYuX3RtcGRpciA9IHNlbGYuX2NyZWF0ZV90ZW1w
ZGlyKHNlbGYuX2J1aWxkcGF0aCkKKyAgICAgICAgc2VsZi5fYnVuZGxlciA9IEJpbmFyeUJ1bmRs
ZXIoc2VsZi5fdG1wZGlyLCBzZWxmLl9zaG91bGRfc3RyaXBfb2JqZWN0cykKIAogICAgICAgICBp
ZiBvcy5wYXRoLmlzZmlsZShzZWxmLl9idW5kbGVfZmlsZV9wYXRoKToKICAgICAgICAgICAgIF9s
b2cuaW5mbygnUmVtb3ZpbmcgcHJldmlvdXMgYnVuZGxlICVzJyAlIHNlbGYuX2J1bmRsZV9maWxl
X3BhdGgpCkBAIC00NTYsMTEgKzM1MiwxMSBAQCBjbGFzcyBCdW5kbGVDcmVhdG9yKG9iamVjdCk6
CiAgICAgZGVmIF9hZGRfb2JqZWN0X29yX2dldF9zeXNkZXAoc2VsZiwgb2JqZWN0LCBvYmplY3Rf
dHlwZSk6CiAgICAgICAgIHByb3ZpZGVkX2J5X3N5c3RlbV9wYWNrYWdlID0gTm9uZQogICAgICAg
ICBpZiBzZWxmLl9zeXNsaWJzID09ICdidW5kbGUtYWxsJzoKLSAgICAgICAgICAgIHNlbGYuX2Nv
cHlfYW5kX3JlbW92ZV9ycGF0aChvYmplY3QsIHR5cGU9b2JqZWN0X3R5cGUpCisgICAgICAgICAg
ICBzZWxmLl9idW5kbGVyLmNvcHlfYW5kX3JlbW92ZV9ycGF0aChvYmplY3QsIHR5cGU9b2JqZWN0
X3R5cGUpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBwcm92aWRlZF9ieV9zeXN0ZW1fcGFj
a2FnZSA9IHNlbGYuX2dldF9zeXN0ZW1fcGFja2FnZV9uYW1lKG9iamVjdCkKICAgICAgICAgICAg
IGlmIG5vdCBwcm92aWRlZF9ieV9zeXN0ZW1fcGFja2FnZToKLSAgICAgICAgICAgICAgICBzZWxm
Ll9jb3B5X2FuZF9yZW1vdmVfcnBhdGgob2JqZWN0LCB0eXBlPW9iamVjdF90eXBlKQorICAgICAg
ICAgICAgICAgIHNlbGYuX2J1bmRsZXIuY29weV9hbmRfcmVtb3ZlX3JwYXRoKG9iamVjdCwgdHlw
ZT1vYmplY3RfdHlwZSkKICAgICAgICAgcmV0dXJuIHByb3ZpZGVkX2J5X3N5c3RlbV9wYWNrYWdl
CiAKICAgICBkZWYgX2Vuc3VyZV93cGVfYmFja2VuZF9zeW1saW5rKHNlbGYpOgpAQCAtNTA2LDIw
ICs0MDIsMjAgQEAgY2xhc3MgQnVuZGxlQ3JlYXRvcihvYmplY3QpOgogICAgICAgICAgICAgICAg
IGlmIHN5c3RlbV9wYWNrYWdlOgogICAgICAgICAgICAgICAgICAgICBzeXN0ZW1fcGFja2FnZXNf
bmVlZGVkLmFkZChzeXN0ZW1fcGFja2FnZSkKICAgICAgICAgICAgIGVsaWYgb2JqZWN0LmVuZHN3
aXRoKCcuc28nKToKLSAgICAgICAgICAgICAgICBzZWxmLl9jb3B5X2FuZF9yZW1vdmVfcnBhdGgo
b2JqZWN0LCB0eXBlPSdsaWInKQorICAgICAgICAgICAgICAgIHNlbGYuX2J1bmRsZXIuY29weV9h
bmRfcmVtb3ZlX3JwYXRoKG9iamVjdCwgdHlwZT0nbGliJykKICAgICAgICAgICAgIGVsc2U6Ci0g
ICAgICAgICAgICAgICAgc2VsZi5fY29weV9hbmRfcmVtb3ZlX3JwYXRoKG9iamVjdCwgdHlwZT0n
YmluJykKKyAgICAgICAgICAgICAgICBzZWxmLl9idW5kbGVyLmNvcHlfYW5kX3JlbW92ZV9ycGF0
aChvYmplY3QsIHR5cGU9J2JpbicpCiAgICAgICAgICAgICAjIFRoZXJlIGlzIG5vIG5lZWQgdG8g
ZXhhbWluZSB0aGUgbGlicmFyaWVzIGxpbmtlZCB3aXRoIG9iamVjdHMgY29taW5nIGZyb20gYSBz
eXN0ZW0gcGFja2FnZSwKICAgICAgICAgICAgICMgYmVjYXVzZSBzeXN0ZW0gcGFja2FnZXMgYWxy
ZWFkeSBkZWNsYXJlIGRlcGVuZGVuY2llcyBiZXR3ZWVuIHRoZW0uCiAgICAgICAgICAgICAjIEhv
d2V2ZXIsIGlmIHdlIGFyZSBydW5uaW5nIHdpdGggc2VsZi5fc3lzbGlicyA9PSAnYnVuZGxlLWFs
bCcgdGhlbiBzeXN0ZW1fcGFja2FnZSB3aWxsIGJlIE5vbmUsCiAgICAgICAgICAgICAjIGFuZCBl
dmVyeXRoaW5nIHdpbGwgYmUgZXhhbWluZWQgYW5kIGJ1bmRsZWQgYXMgd2UgZG9uJ3QgYWNjb3Vu
dCBmb3Igc3lzdGVtIHBhY2thZ2VzIGluIHRoYXQgY2FzZS4KICAgICAgICAgICAgIGlmIG5vdCBz
eXN0ZW1fcGFja2FnZToKLSAgICAgICAgICAgICAgICBsaWJyYXJpZXMsIGludGVycHJldGVyID0g
c2VsZi5fbGRkX3JlY3Vyc2l2ZV9nZXRfbGlic19hbmRfaW50ZXJwcmV0ZXIob2JqZWN0KQorICAg
ICAgICAgICAgICAgIGxpYnJhcmllcywgaW50ZXJwcmV0ZXIgPSBzZWxmLl9zaGFyZWRfb2JqZWN0
X3Jlc29sdmVyLmdldF9saWJzX2FuZF9pbnRlcnByZXRlcihvYmplY3QpCiAgICAgICAgICAgICAg
ICAgaWYgaW50ZXJwcmV0ZXIgaXMgTm9uZToKICAgICAgICAgICAgICAgICAgICAgcmFpc2UgUnVu
dGltZUVycm9yKCJDb3VsZCBub3QgZGV0ZXJtaW5lIGludGVycHJldGVyIGZvciBiaW5hcnkgJXMi
ICUgb2JqZWN0KQogICAgICAgICAgICAgICAgIGlmIGNvcGllZF9pbnRlcnByZXRlciBpcyBOb25l
OgogICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLl9zeXNsaWJzID09ICdidW5kbGUtYWxsJzoK
LSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2NvcHlfYW5kX3JlbW92ZV9ycGF0aChpbnRl
cnByZXRlciwgdHlwZT0naW50ZXJwcmV0ZXInKQorICAgICAgICAgICAgICAgICAgICAgICAgc2Vs
Zi5fYnVuZGxlci5jb3B5X2FuZF9yZW1vdmVfcnBhdGgoaW50ZXJwcmV0ZXIsIHR5cGU9J2ludGVy
cHJldGVyJykKICAgICAgICAgICAgICAgICAgICAgY29waWVkX2ludGVycHJldGVyID0gaW50ZXJw
cmV0ZXIKICAgICAgICAgICAgICAgICBlbGlmIGNvcGllZF9pbnRlcnByZXRlciAhPSBpbnRlcnBy
ZXRlcjoKICAgICAgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdEZXRlY3RlZCBi
aW5hcmllcyB3aXRoIGRpZmZlcmVudCBpbnRlcnByZXRlcnM6ICVzICE9ICVzJyAlKGNvcGllZF9p
bnRlcnByZXRlciwgaW50ZXJwcmV0ZXIpKQpAQCAtNjU5LDcgKzU1NSw3IEBAIGRlZiBjb25maWd1
cmVfbG9nZ2luZyhzZWxlY3RlZF9sb2dfbGV2ZWw9J2luZm8nKToKICAgICAgICAgbG9nX2xldmVs
ID0gbG9nZ2luZy5nZXRMZXZlbE5hbWUoTE9HX01FU1NBR0UpCiAKICAgICBoYW5kbGVyID0gTG9n
SGFuZGxlcihzeXMuc3Rkb3V0KQotICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFt
ZV9fKQorICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCkKICAgICBsb2dnZXIuYWRkSGFu
ZGxlcihoYW5kbGVyKQogICAgIGxvZ2dlci5zZXRMZXZlbChsb2dfbGV2ZWwpCiAgICAgcmV0dXJu
IGhhbmRsZXIKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvcnVuLWpzYy1iZW5jaG1hcmtzIGIv
VG9vbHMvU2NyaXB0cy9ydW4tanNjLWJlbmNobWFya3MKaW5kZXggMDQwMDQzNDdhYmRmOGFiZjA0
ODMwODk0NmU0OTE5MGMwZTRhMmNkNC4uNWUwMTc4ZTBkOGQ2ZWFlNzhhNTM0MGU4OWMxMDViMmZj
OTVhN2FkYyAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy9ydW4tanNjLWJlbmNobWFya3MKKysr
IGIvVG9vbHMvU2NyaXB0cy9ydW4tanNjLWJlbmNobWFya3MKQEAgLTIzNyw2ICsyMzcsNyBAQCAk
aW5jbHVkZVNpeFNwZWVkID0gZmFsc2UKICRpbmNsdWRlVGFpbEJlbmNoID0gdHJ1ZQogJGluY2x1
ZGVCaWdJbnRCZW5jaCA9IGZhbHNlCiAkaW5jbHVkZVByaXZhdGVGaWVsZHNCZW5jaCA9IGZhbHNl
CiskbGRkPW5pbAogJG1lYXN1cmVHQz1mYWxzZQogJGJlbmNobWFya1BhdHRlcm49bmlsCiAkdmVy
Ym9zaXR5PTAKQEAgLTE0MTMsMTggKzE0MTQsMzggQEAgY2xhc3MgVk0KICAgICBAZXh0cmFFbnZb
a2V5XSA9IHZhbAogICAgIEBAZXh0cmFFbnZTZXRba2V5XSA9IHRydWUKICAgZW5kCi0gIAorCisg
IGRlZiBjb3B5SW50b0JlbmNoUGF0aEJ1bmRsZShiYXNlbmFtZSwgb3V0cHV0ZGlyKQorICAgIGJ1
bmRsZV9iaW5hcnkgPSAoU0NSSVBUX1BBVEguZGlybmFtZSArICdidW5kbGUtYmluYXJ5JykucmVh
bHBhdGgKKyAgICBjbWQgPSBTaGVsbHdvcmRzLmpvaW4oWworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJ1bmRsZV9iaW5hcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tZGVz
dC1kaXInLCBvdXRwdXRkaXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQHBhdGgKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgXSkKKyAgICAkc3RkZXJyLnB1dHMgIj4+ICN7Y21kfSIg
aWYgJHZlcmJvc2l0eT49MgorICAgIHJhaXNlIHVubGVzcyBzeXN0ZW0oY21kKQorICAgIEBwYXRo
ID0gIiN7YmFzZW5hbWV9L2pzYyIKKyAgZW5kCisKICAgZGVmIGNvcHlJbnRvQmVuY2hQYXRoCiAg
ICAgcmFpc2UgdW5sZXNzIGNhbkNvcHlJbnRvQmVuY2hQYXRoCiAgICAgYmFzZW5hbWUsIGZpbGVu
YW1lID0gQmVuY2hmaWxlLnVuaXF1ZUZpbGVuYW1lKCJ2bSIpCiAgICAgcmFpc2UgdW5sZXNzIERp
ci5ta2RpcihmaWxlbmFtZSkKKyAgICBpZiBub3QgJHJlbW90ZUhvc3RzLmVtcHR5PyBhbmQgYHVu
YW1lYCA9PSAnTGludXgnCisgICAgICBjb3B5SW50b0JlbmNoUGF0aEJ1bmRsZShiYXNlbmFtZSwg
U2hlbGx3b3Jkcy5zaGVsbGVzY2FwZShmaWxlbmFtZS50b19zKSkKKyAgICAgIHJldHVybgorICAg
IGVuZAorCiAgICAgQGxpYlBhdGguZWFjaCB7CiAgICAgICB8IGxpYlBhdGhQYXJ0IHwKICAgICAg
IGNtZCA9ICJjcCAtYSAje1NoZWxsd29yZHMuc2hlbGxlc2NhcGUobGliUGF0aFBhcnQpfS8qICN7
U2hlbGx3b3Jkcy5zaGVsbGVzY2FwZShmaWxlbmFtZS50b19zKX0iCiAgICAgICAkc3RkZXJyLnB1
dHMgIj4+ICN7Y21kfSIgaWYgJHZlcmJvc2l0eT49MgogICAgICAgcmFpc2UgdW5sZXNzIHN5c3Rl
bShjbWQpCiAgICAgfQotICAgIEBwYXRoID0gIiN7YmFzZW5hbWV9LyN7QHJlbGF0aXZlQmluUGF0
aH0iCisgICAgY21kID0gImNwIC1hICN7QHBhdGh9ICN7U2hlbGx3b3Jkcy5zaGVsbGVzY2FwZShm
aWxlbmFtZS50b19zKX0iCisgICAgJHN0ZGVyci5wdXRzICI+PiAje2NtZH0iIGlmICR2ZXJib3Np
dHk+PTIKKyAgICByYWlzZSB1bmxlc3Mgc3lzdGVtKGNtZCkKKyAgICBAcGF0aCA9ICIje2Jhc2Vu
YW1lfS9qc2MiCiAgICAgQGxpYlBhdGggPSBbYmFzZW5hbWVdCiAgIGVuZAogICAKQEAgLTIzODks
NyArMjQxMCwxNyBAQCBkZWYgd3JhcChzdHIsIGNvbHVtbnMpCiAgIH0KICAgcmVzdWx0ICsgY3Vy
TGluZSArICJcbiIKIGVuZAotICAKKworZGVmIGV4cG9ydEpTQ0Vudmlyb25tZW50VmFyaWFibGVz
CisgIGJ1ZiA9ICIiCisgIEVOVi5lYWNoIHsKKyAgICB8IG5hbWUsIHZhbHVlIHwKKyAgICBuZXh0
IHVubGVzcyBuYW1lLnN0YXJ0X3dpdGg/KCJKU0NfIikKKyAgICBidWYgPDwgImV4cG9ydCAje25h
bWV9PSN7U2hlbGx3b3Jkcy5zaGVsbGVzY2FwZSh2YWx1ZSl9XG4iCisgIH0KKyAgYnVmCitlbmQK
KwogZGVmIHJ1bkFuZEdldFJlc3VsdHMKICAgcmVzdWx0cyA9IG5pbAogICBEaXIuY2hkaXIoQkVO
Q0hfREFUQV9QQVRIKSB7CkBAIC0zMDU1LDYgKzMwODYsOCBAQCBiZWdpbgogICAgICAgJGRlcGVu
ZGVuY2llcy5wdXNoKFBhdGhuYW1lLm5ldyhhcmcpLnJlYWxwYXRoKQogICAgIHdoZW4gJy0tY29u
ZmlnJwogICAgICAgJGNvbmZpZ1BhdGggPSBQYXRobmFtZS5uZXcoYXJnKQorICAgIHdoZW4gJy0t
bGRkJworICAgICAgJGxkZCA9IGFyZwogICAgIHdoZW4gJy0taGVscCcKICAgICAgIHVzYWdlCiAg
ICAgZWxzZQpAQCAtMzYxMSw2ICszNjQ0LDcgQEAgYmVnaW4KICAgaWYgJHByZXBhcmUKICAgICBG
aWxlLm9wZW4oIiN7QkVOQ0hfREFUQV9QQVRIfS9ydW5zY3JpcHQiLCAidyIpIHsKICAgICAgIHwg
ZmlsZSB8CisgICAgICBmaWxlLnB1dHMgZXhwb3J0SlNDRW52aXJvbm1lbnRWYXJpYWJsZXMKICAg
ICAgIGZpbGUucHV0cyAiZWNobyAtZSBcIkhPU1ROQU1FOlxcY1wiIgogICAgICAgZmlsZS5wdXRz
ICJob3N0bmFtZSIKICAgICAgIGZpbGUucHV0cyAiZWNobyIKZGlmZiAtLWdpdCBhL1Rvb2xzL1Nj
cmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMgYi9Ub29scy9TY3JpcHRzL3J1bi1qc2Mtc3RyZXNz
LXRlc3RzCmluZGV4IGM5MmEzOTA5OTYwMGJjYTJjMzVkZWZjMmUzYThkMjNlMzEwZWZjZDMuLmNm
MDdkMjNlOGM2MjI3ZmM5NGU3MzQ5MjZkYmEwODRlNzY3N2VhNGMgMTAwNzU1Ci0tLSBhL1Rvb2xz
L1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMKKysrIGIvVG9vbHMvU2NyaXB0cy9ydW4tanNj
LXN0cmVzcy10ZXN0cwpAQCAtMTkxOSwzNyArMTkxOSwyMiBAQCBkZWYgcHJlcGFyZUJ1bmRsZQog
ICAgICAgICAgICAgZW5kCiAKICAgICAgICAgICAgIGlmICRyZW1vdGUgYW5kICRob3N0T1MgPT0g
ImxpbnV4IgotICAgICAgICAgICAgICAgIGdlbmVyYXRlX2J1bmRsZSA9IChQYXRobmFtZS5uZXco
VEhJU19TQ1JJUFRfUEFUSCkuZGlybmFtZSArICdnZW5lcmF0ZS1idW5kbGUnKS5yZWFscGF0aAor
ICAgICAgICAgICAgICAgIGJ1bmRsZV9iaW5hcnkgPSAoUGF0aG5hbWUubmV3KFRISVNfU0NSSVBU
X1BBVEgpLmRpcm5hbWUgKyAnYnVuZGxlLWJpbmFyeScpLnJlYWxwYXRoCiAgICAgICAgICAgICAg
ICAgRGlyLm1rdG1wZGlyIHsKICAgICAgICAgICAgICAgICAgICAgfCB0bXBkaXIgfAogICAgICAg
ICAgICAgICAgICAgICAjIEdlbmVyYXRlIGJ1bmRsZSBpbiBhIHRlbXBvcmFyeSBkaXJlY3Rvcnkg
c28gdGhhdAogICAgICAgICAgICAgICAgICAgICAjIHdlIGNhbiBzYWZlbHkgcGljayBpdCB1cCBy
ZWdhcmRsZXNzIG9mIGl0cyBuYW1lCiAgICAgICAgICAgICAgICAgICAgICMgKGl0J3MgdGhlIG9u
bHkgemlwIGZpbGUgdGhlcmUpLgogICAgICAgICAgICAgICAgICAgICBjbWRsaW5lID0gWwotICAg
ICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGVfYnVuZGxlLnRvX3MsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAiLS1wbGF0Zm9ybT1ndGsiLAotICAgICAgICAgICAgICAgICAgICAgICAgIi0t
YnVuZGxlPWpzYyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAiLS1zeXNsaWJzPWJ1bmRsZS1h
bGwiLAotICAgICAgICAgICAgICAgICAgICAgICAgIi0tbm8tc3RyaXAiLAotICAgICAgICAgICAg
ICAgICAgICAgICAgIi0tY29tcHJlc3Npb249dGFyLnh6IiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICgkYnVpbGRUeXBlID09ICJyZWxlYXNlIikgPyAiLS1yZWxlYXNlIiA6ICItLWRlYnVnIiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICItLWRlc3RpbmF0aW9uPSN7dG1wZGlyfSIKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGJ1bmRsZV9iaW5hcnkudG9fcywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICItLWRlc3QtZGlyPSN7JGpzY1BhdGguZGlybmFtZX0iLAorICAgICAgICAgICAgICAg
ICAgICAgICAgIi0tbG9nLWxldmVsPWRlYnVnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICRq
c2NQYXRoLnRvX3MKICAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgICAgICAgICBp
ZiBub3QgJGxkZC5uaWw/CiAgICAgICAgICAgICAgICAgICAgICAgICBjbWRsaW5lIDw8ICItLWxk
ZD0jeyRsZGR9IgogICAgICAgICAgICAgICAgICAgICBlbmQKICAgICAgICAgICAgICAgICAgICAg
bXlzeXMoY21kbGluZSkKLSAgICAgICAgICAgICAgICAgICAgYXJjaGl2ZXMgPSBEaXIuZ2xvYigi
I3t0bXBkaXJ9LyoudGFyLnh6IikKLSAgICAgICAgICAgICAgICAgICAgaWYgYXJjaGl2ZXMuc2l6
ZSAhPSAxCi0gICAgICAgICAgICAgICAgICAgICAgICByYWlzZSAiRXhwZWN0ZWQgZXhhY3RseSBv
bmUgZW50cnkgaW4gdG1wZGlyLCBub3QgI3thcmNoaXZlc30iCi0gICAgICAgICAgICAgICAgICAg
IGVuZAotICAgICAgICAgICAgICAgICAgICAjIE5vdGU6IHdlIG92ZXJ3cml0ZSAnanNjJy4gVGhp
cyBvYnZpb3VzbHkgY29uZmxpY3RzIHdpdGgKLSAgICAgICAgICAgICAgICAgICAgIyAhY29weVZN
IGJ1dCwgdGhlbiBnYWluLCBzbyBkb2VzICRyZW1vdGUuCi0gICAgICAgICAgICAgICAgICAgIG15
c3lzKFsidGFyIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICItQyIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAkanNjUGF0aC5kaXJuYW1lLnRvX3MsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAiLXhmIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyY2hpdmVzWzBd
XSkKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbmQKICAgICAgICAgfQpkaWZmIC0t
Z2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9iaW5hcnlfYnVuZGxpbmcvX19pbml0X18ucHkg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2JpbmFyeV9idW5kbGluZy9fX2luaXRfXy5weQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5iMzc2YmYyYmVhMmI2YWY1Y2U3OWQzZTNkMzNjNzNhZGVjNDM0ZjE4Ci0tLSAvZGV2
L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9iaW5hcnlfYnVuZGxpbmcvX19pbml0
X18ucHkKQEAgLTAsMCArMSwxMyBAQAorIyBSZXF1aXJlZCBmb3IgUHl0aG9uIHRvIHNlYXJjaCB0
aGlzIGRpcmVjdG9yeSBmb3IgbW9kdWxlIGZpbGVzCisKKyMgS2VlcCB0aGlzIGZpbGUgZnJlZSBv
ZiBhbnkgY29kZSBvciBpbXBvcnQgc3RhdGVtZW50cyB0aGF0IGNvdWxkCisjIGNhdXNlIGVpdGhl
ciBhbiBlcnJvciB0byBvY2N1ciBvciBhIGxvZyBtZXNzYWdlIHRvIGJlIGxvZ2dlZC4KKyMgVGhp
cyBlbnN1cmVzIHRoYXQgY2FsbGluZyBjb2RlIGNhbiBpbXBvcnQgaW5pdGlhbGl6YXRpb24gY29k
ZSBmcm9tCisjIHdlYmtpdHB5IGJlZm9yZSBhbnkgZXJyb3JzIG9yIGxvZyBtZXNzYWdlcyBkdWUg
dG8gY29kZSBpbiB0aGlzIGZpbGUuCisjIEluaXRpYWxpemF0aW9uIGNvZGUgY2FuIGluY2x1ZGUg
dGhpbmdzIGxpa2UgdmVyc2lvbi1jaGVja2luZyBjb2RlIGFuZAorIyBsb2dnaW5nIGNvbmZpZ3Vy
YXRpb24gY29kZS4KKyMKKyMgV2UgZG8gbm90IGV4ZWN1dGUgYW55IHZlcnNpb24tY2hlY2tpbmcg
Y29kZSBvciBsb2dnaW5nIGNvbmZpZ3VyYXRpb24KKyMgY29kZSBpbiB0aGlzIGZpbGUgc28gdGhh
dCBjYWxsZXJzIGNhbiBvcHQtaW4gYXMgdGhleSB3YW50LiAgVGhpcyBhbHNvCisjIGFsbG93cyBk
aWZmZXJlbnQgY2FsbGVycyB0byBjaG9vc2UgZGlmZmVyZW50IGluaXRpYWxpemF0aW9uIGNvZGUs
CisjIGFzIG5lY2Vzc2FyeS4KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvYmlu
YXJ5X2J1bmRsaW5nL2J1bmRsZS5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvYmluYXJ5X2J1
bmRsaW5nL2J1bmRsZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZjkzOTM5MWRkMWZiODkzYjcwMGU1YzQxZTJm
ZGMyNWVkOGVjNTNjCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9i
aW5hcnlfYnVuZGxpbmcvYnVuZGxlLnB5CkBAIC0wLDAgKzEsNzAgQEAKK2ltcG9ydCBsb2dnaW5n
CitpbXBvcnQgb3MKK2ltcG9ydCBzaHV0aWwKK2ltcG9ydCBzdWJwcm9jZXNzCisKK19sb2cgPSBs
b2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKKworCitjbGFzcyBCaW5hcnlCdW5kbGVyOgorICAg
IFZBUl9NWURJUiA9ICdNWURJUicKKyAgICBWQVJfSU5URVJQUkVURVIgPSAnSU5URVJQUkVURVIn
CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZGVzdGluYXRpb25fZGlyLCBzaG91bGRfc3RyaXBf
b2JqZWN0cyk6CisgICAgICAgIGlmIHNodXRpbC53aGljaCgncGF0Y2hlbGYnKSBpcyBOb25lOgor
ICAgICAgICAgICAgX2xvZy5lcnJvcigiQ291bGQgbm90IGZpbmQgYHBhdGNoZWxmYCBpbiAkUEFU
SCIpCisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIk1pc3NpbmcgcmVxdWlyZWQgYmluYXJ5
IGBwYXRjaGVsZmAiKQorICAgICAgICBzZWxmLl9kZXN0aW5hdGlvbl9kaXIgPSBkZXN0aW5hdGlv
bl9kaXIKKyAgICAgICAgc2VsZi5fc2hvdWxkX3N0cmlwX29iamVjdHMgPSBzaG91bGRfc3RyaXBf
b2JqZWN0cworCisgICAgZGVmIGRlc3RpbmF0aW9uX2RpcihzZWxmKToKKyAgICAgICAgcmV0dXJu
IHNlbGYuX2Rlc3RpbmF0aW9uX2RpcgorCisgICAgZGVmIGNvcHlfYW5kX3JlbW92ZV9ycGF0aChz
ZWxmLCBvcmlnX2ZpbGUsIHR5cGU9J2JpbicsIGRlc3RpbmF0aW9uX2Rpcj1Ob25lKToKKyAgICAg
ICAgZGlyX3N1ZmZpeCA9ICdsaWInIGlmIHR5cGUgPT0gJ2ludGVycHJldGVyJyBlbHNlIHR5cGUK
KyAgICAgICAgZGVzdGluYXRpb25fZGlyID0gb3MucGF0aC5qb2luKHNlbGYuX2Rlc3RpbmF0aW9u
X2RpciwgZGlyX3N1ZmZpeCkKKyAgICAgICAgaWYgbm90IG9zLnBhdGguaXNkaXIoZGVzdGluYXRp
b25fZGlyKToKKyAgICAgICAgICAgIG9zLm1ha2VkaXJzKGRlc3RpbmF0aW9uX2RpcikKKworICAg
ICAgICBpZiBub3Qgb3MucGF0aC5pc2ZpbGUob3JpZ19maWxlKToKKyAgICAgICAgICAgIHJhaXNl
IFZhbHVlRXJyb3IoJ0NhbiBub3QgZmluZCBmaWxlICVzJyAlIG9yaWdfZmlsZSkKKworICAgICAg
ICBfbG9nLmluZm8oJ0FkZCB0byBidW5kbGUgWyVzXTogJXMnICUgKHR5cGUsIG9yaWdfZmlsZSkp
CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNodXRpbC5jb3B5KG9yaWdfZmlsZSwgZGVzdGlu
YXRpb25fZGlyKQorICAgICAgICBleGNlcHQgc2h1dGlsLlNhbWVGaWxlRXJyb3I6CisgICAgICAg
ICAgICAjIE1heSByZWFzb25hYmx5IGhhcHBlbiBpZiB0aGUgY2FsbGVyIHRyaWVzIHRvIGJ1bmRs
ZSB0aGUgZmlsZXMgJ2luIHBsYWNlJy4KKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBwYXRj
aF9lbGZfY29tbWFuZCA9IFsncGF0Y2hlbGYnLCAnLS1yZW1vdmUtcnBhdGgnLCBvcy5wYXRoLmpv
aW4oZGVzdGluYXRpb25fZGlyLCBvcy5wYXRoLmJhc2VuYW1lKG9yaWdfZmlsZSkpXQorICAgICAg
ICBpZiBzdWJwcm9jZXNzLmNhbGwocGF0Y2hfZWxmX2NvbW1hbmQpICE9IDA6CisgICAgICAgICAg
ICBfbG9nLmVycm9yKCdUaGUgcGF0Y2hlbGYgY29tbWFuZCByZXR1cm5lZCBub24temVybyBzdGF0
dXMnKQorCisgICAgICAgIGlmIHNlbGYuX3Nob3VsZF9zdHJpcF9vYmplY3RzOgorICAgICAgICAg
ICAgaWYgc2h1dGlsLndoaWNoKCdzdHJpcCcpOgorICAgICAgICAgICAgICAgIHN0cmlwX2NvbW1h
bmQgPSBbJ3N0cmlwJywgJy0tc3RyaXAtdW5uZWVkZWQnLCBvcy5wYXRoLmpvaW4oZGVzdGluYXRp
b25fZGlyLCBvcy5wYXRoLmJhc2VuYW1lKG9yaWdfZmlsZSkpXQorICAgICAgICAgICAgICAgIGlm
IHN1YnByb2Nlc3MuY2FsbChzdHJpcF9jb21tYW5kKSAhPSAwOgorICAgICAgICAgICAgICAgICAg
ICBfbG9nLmVycm9yKCdUaGUgc3RyaXAgY29tbWFuZCByZXR1cm5lZCBub24temVybyBzdGF0dXMn
KQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBfbG9nLndhcm5pbmcoJ3N0cmlw
IG5vdCBmb3VuZC4gTm90IHN0cmlwcGluZyBvYmplY3QnKQorCisgICAgZGVmIGdlbmVyYXRlX3dy
YXBwZXJfc2NyaXB0KHNlbGYsIGludGVycHJldGVyLCBiaW5hcnlfdG9fd3JhcCwgZXh0cmFfZW52
aXJvbm1lbnRfdmFyaWFibGVzPXt9KToKKyAgICAgICAgaWYgbm90IG9zLnBhdGguaXNmaWxlKG9z
LnBhdGguam9pbihzZWxmLl9kZXN0aW5hdGlvbl9kaXIsICdiaW4nLCBiaW5hcnlfdG9fd3JhcCkp
OgorICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdDYW5ub3QgZmluZCBiaW5hcnkgdG8g
d3JhcCBmb3IgJXMnICUgYmluYXJ5X3RvX3dyYXApCisgICAgICAgIF9sb2cuaW5mbygnR2VuZXJh
dGUgd3JhcHBlciBzY3JpcHQgJXMnICUgYmluYXJ5X3RvX3dyYXApCisgICAgICAgIHNjcmlwdF9m
aWxlID0gb3MucGF0aC5qb2luKHNlbGYuX2Rlc3RpbmF0aW9uX2RpciwgYmluYXJ5X3RvX3dyYXAp
CisKKyAgICAgICAgd2l0aCBvcGVuKHNjcmlwdF9maWxlLCAndycpIGFzIHNjcmlwdF9oYW5kbGU6
CisgICAgICAgICAgICBzY3JpcHRfaGFuZGxlLndyaXRlKCcjIS9iaW4vc2hcbicpCisgICAgICAg
ICAgICBzY3JpcHRfaGFuZGxlLndyaXRlKCclcz0iJChkaXJuYW1lICQocmVhZGxpbmsgLWYgJDAp
KSJcbicgJSBzZWxmLlZBUl9NWURJUikKKyAgICAgICAgICAgIHNjcmlwdF9oYW5kbGUud3JpdGUo
J2V4cG9ydCBMRF9MSUJSQVJZX1BBVEg9IiR7JXN9L2xpYiJcbicgJSBzZWxmLlZBUl9NWURJUikK
KworICAgICAgICAgICAgZm9yIHZhciwgdmFsdWUgaW4gZXh0cmFfZW52aXJvbm1lbnRfdmFyaWFi
bGVzLml0ZW1zKCk6CisgICAgICAgICAgICAgICAgc2NyaXB0X2hhbmRsZS53cml0ZSgnZXhwb3J0
ICVzPVwiJXNcIlxuJyAlICh2YXIsIHZhbHVlKSkKKworICAgICAgICAgICAgaWYgaW50ZXJwcmV0
ZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgc2NyaXB0X2hhbmRsZS53cml0ZSgnSU5U
RVJQUkVURVI9IiR7JXN9L2xpYi8lcyJcbicgJSAoc2VsZi5WQVJfTVlESVIsIG9zLnBhdGguYmFz
ZW5hbWUoaW50ZXJwcmV0ZXIpKSkKKyAgICAgICAgICAgICAgICBzY3JpcHRfaGFuZGxlLndyaXRl
KCdleGVjICIke0lOVEVSUFJFVEVSfSIgIiR7JXN9L2Jpbi8lcyIgIiRAIlxuJyAlIChzZWxmLlZB
Ul9NWURJUiwgYmluYXJ5X3RvX3dyYXApKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAg
ICAgICBzY3JpcHRfaGFuZGxlLndyaXRlKCdleGVjICIkeyVzfS9iaW4vJXMiICIkQCJcbicgJSAo
c2VsZi5WQVJfTVlESVIsIGJpbmFyeV90b193cmFwKSkKKyAgICAgICAgb3MuY2htb2Qoc2NyaXB0
X2ZpbGUsIDBvNzU1KQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9iaW5hcnlf
YnVuZGxpbmcvbGRkLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9iaW5hcnlfYnVuZGxpbmcv
bGRkLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmRhOTlkNmUxZGI2ZDA5ODhhMzM3M2RlZTRjMjhhYThiMzU2MTY0
YTMKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2JpbmFyeV9idW5k
bGluZy9sZGQucHkKQEAgLTAsMCArMSw4NyBAQAoraW1wb3J0IGxvZ2dpbmcKK2Zyb20gcGF0aGxp
YiBpbXBvcnQgUHVyZVBhdGgKK2ltcG9ydCBvcworaW1wb3J0IHNodXRpbAoraW1wb3J0IHN1YnBy
b2Nlc3MKKworX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQorCisKK2NsYXNzIFNo
YXJlZE9iamVjdFJlc29sdmVyKCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxkZCk6CisgICAg
ICAgIHNlbGYuX2xkZCA9IGxkZAorICAgICAgICBpZiBzaHV0aWwud2hpY2goJ3BhdGNoZWxmJykg
aXMgTm9uZToKKyAgICAgICAgICAgIF9sb2cuZXJyb3IoIkNvdWxkIG5vdCBmaW5kIGBwYXRjaGVs
ZmAgaW4gJFBBVEgiKQorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJNaXNzaW5nIHJlcXVp
cmVkIGJpbmFyeSBgcGF0Y2hlbGZgIikKKworICAgIGRlZiBfcnVuX2NtZF9hbmRfZ2V0X291dHB1
dChzZWxmLCBjb21tYW5kKToKKyAgICAgICAgX2xvZy5kZWJ1ZygiRVhFQyAlcyIgJSBjb21tYW5k
KQorICAgICAgICBjb21tYW5kX3Byb2Nlc3MgPSBzdWJwcm9jZXNzLlBvcGVuKGNvbW1hbmQsIHN0
ZG91dD1zdWJwcm9jZXNzLlBJUEUsIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCwgZW5jb2Rpbmc9
J3V0Zi04JykKKyAgICAgICAgc3Rkb3V0LCBzdGRlcnIgPSBjb21tYW5kX3Byb2Nlc3MuY29tbXVu
aWNhdGUoKQorICAgICAgICByZXR1cm4gY29tbWFuZF9wcm9jZXNzLnJldHVybmNvZGUsIHN0ZG91
dCwgc3RkZXJyCisKKyAgICBkZWYgX2dldF9pbnRlcnByZXRlcl9vYmpuYW1lKHNlbGYsIG9iamVj
dCk6CisgICAgICAgICMgTm90ZTogd2UgdXNlIHBhdGNoZWxmIHRvIGdldCB0aGUgb2JqZWN0IG5h
bWUgKG5vdCB0aGUgcGF0aCEpCisgICAgICAgICMgb2YgdGhlIGludGVycHJldGVyIGJlY2F1c2Ug
dGhpcyB3b3JrcyByZWdhcmRsZXNzIG9mIHRoZQorICAgICAgICAjIGFyY2hpdGVjdHVyZSBvZiB0
aGUgRUxGIGZpbGUuCisgICAgICAgIHJldGNvZGUsIHN0ZG91dCwgc3RkZXJyID0gc2VsZi5fcnVu
X2NtZF9hbmRfZ2V0X291dHB1dChbJ3BhdGNoZWxmJywgJy0tcHJpbnQtaW50ZXJwcmV0ZXInLCBv
YmplY3RdKQorICAgICAgICBpZiByZXRjb2RlICE9IDA6CisgICAgICAgICAgICBfbG9nLmRlYnVn
KCJwYXRjaGVsZiBzdGRvdXQ6XG4lc1xuUGF0Y2hlbGYgc3RkZXJyOlxuJXMiICUgKHN0ZG91dCwg
c3RkZXJyKSkKKyAgICAgICAgICAgIGlmICdjYW5ub3QgZmluZCBzZWN0aW9uJyBpbiBzdGRvdXQ6
CisgICAgICAgICAgICAgICAgIyBUaGlzIGlzIGZpbmU7IHdlIG9ubHkgZXhwZWN0IGFuIGludGVy
cHJldGVyIGluIHRoZSBtYWluIGJpbmFyeS4KKyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQor
ICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdUaGUgcGF0Y2hlbGYgY29tbWFuZCByZXR1
cm5lZCBub24temVybyBzdGF0dXMgZm9yIG9iamVjdCAlcycgJSBvYmplY3QpCisgICAgICAgIGlu
dGVycHJldGVyX3BhdGggPSBQdXJlUGF0aChzdGRvdXQuc3RyaXAoKSkKKyAgICAgICAgcmV0dXJu
IGludGVycHJldGVyX3BhdGgubmFtZQorCisgICAgZGVmIF9nZXRfbGlic19hbmRfaW50ZXJwcmV0
ZXIoc2VsZiwgb2JqZWN0KToKKyAgICAgICAgaW50ZXJwcmV0ZXIgPSBOb25lCisgICAgICAgIHJl
dGNvZGUsIHN0ZG91dCwgc3RkZXJyID0gc2VsZi5fcnVuX2NtZF9hbmRfZ2V0X291dHB1dChbc2Vs
Zi5fbGRkLCBvYmplY3RdKQorICAgICAgICBfbG9nLmRlYnVnKCJsZGQgc3Rkb3V0OlxuJXMiICUg
c3Rkb3V0KQorICAgICAgICBpZiByZXRjb2RlICE9IDA6CisgICAgICAgICAgICByYWlzZSBSdW50
aW1lRXJyb3IoJ1RoZSAlcyBjb21tYW5kIHJldHVybmVkIG5vbi16ZXJvIHN0YXR1cyBmb3Igb2Jq
ZWN0ICVzJyAlIChzZWxmLl9sZGQsIG9iamVjdCkpCisgICAgICAgIGxpYnMgPSBbXQorICAgICAg
ICBmb3IgbGluZSBpbiBzdGRvdXQuc3BsaXRsaW5lcygpOgorICAgICAgICAgICAgbGluZSA9IGxp
bmUuc3RyaXAoKQorICAgICAgICAgICAgaWYgJz0+JyBpbiBsaW5lOgorICAgICAgICAgICAgICAg
IGxpbmUgPSBsaW5lLnNwbGl0KCc9PicpWzFdLnN0cmlwKCkKKyAgICAgICAgICAgICAgICBpZiAn
bm90IGZvdW5kJyBpbiBsaW5lOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJy
b3IoJ2xkZCBjYW4gbm90IHJlc29sdmUgYWxsIGRlcGVuZGVuY2llcyBmb3Igb2JqZWN0ICVzLicg
JSBvYmplY3QpCisgICAgICAgICAgICAgICAgbGluZSA9IGxpbmUuc3BsaXQoJyAnKVswXS5zdHJp
cCgpCisgICAgICAgICAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUobGluZSk6CisgICAgICAgICAg
ICAgICAgICAgIGxpYnMuYXBwZW5kKGxpbmUpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAg
ICAgICAgIGxpbmUgPSBsaW5lLnNwbGl0KCcgJylbMF0uc3RyaXAoKQorICAgICAgICAgICAgICAg
IGlmIG9zLnBhdGguaXNmaWxlKGxpbmUpOgorICAgICAgICAgICAgICAgICAgICBpbnRlcnByZXRl
ciA9IGxpbmUKKyAgICAgICAgaWYgaW50ZXJwcmV0ZXIgaXMgTm9uZToKKyAgICAgICAgICAgICMg
VGhpcyBpcyB0aGUgY2FzZSBmb3Igbm9uLW5hdGl2ZSBiaW5hcmllcy4gRm9yIHRob3NlLCB3ZQor
ICAgICAgICAgICAgIyBjYW4gdXNlIGEgY3Jvc3MtbGRkICh4bGRkKSwgYnV0IHRoZW4gdGhlIGlu
dGVycHJldGVyCisgICAgICAgICAgICAjIGxvb2tzIGxpa2UgYW55IG90aGVyIHNoYXJlZCBvYmpl
Y3QgaW4gdGhlIG91dHB1dCBvZgorICAgICAgICAgICAgIyBsZGQuIFRyeSB0byBpZGVudGlmeSBp
dCBieSBsb29raW5nIGF0IHRoZSBvYmplY3QgbmFtZQorICAgICAgICAgICAgIyBmcm9tIHRoZSBp
bnRlcnByZXRlciBzdHJpbmcuCisgICAgICAgICAgICBpbnRlcnByZXRlcl9vYmpuYW1lID0gc2Vs
Zi5fZ2V0X2ludGVycHJldGVyX29iam5hbWUob2JqZWN0KQorICAgICAgICAgICAgZm9yIGxpYiBp
biBsaWJzOgorICAgICAgICAgICAgICAgIGlmIFB1cmVQYXRoKGxpYikubmFtZSA9PSBpbnRlcnBy
ZXRlcl9vYmpuYW1lOgorICAgICAgICAgICAgICAgICAgICBpbnRlcnByZXRlciA9IGxpYgorICAg
ICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgIyBJZiB3ZSBmb3VuZCBhbiBpbnRl
cnByZXRlciwgcmVtb3ZlIGl0IGZyb20gdGhlIGxpYnMuCisgICAgICAgICAgICBsaWJzID0gW2xp
YiBmb3IgbGliIGluIGxpYnMgaWYgbGliICE9IGludGVycHJldGVyXQorICAgICAgICByZXR1cm4g
bGlicywgaW50ZXJwcmV0ZXIKKworICAgIGRlZiBfbGRkX3JlY3Vyc2l2ZV9nZXRfbGlic19hbmRf
aW50ZXJwcmV0ZXIoc2VsZiwgb2JqZWN0LCBhbHJlYWR5X2NoZWNrZWRfbGlicz1bXSk6CisgICAg
ICAgIGxpYnMsIGludGVycHJldGVyID0gc2VsZi5fZ2V0X2xpYnNfYW5kX2ludGVycHJldGVyKG9i
amVjdCkKKyAgICAgICAgaWYgbGliczoKKyAgICAgICAgICAgIGZvciBsaWIgaW4gbGliczoKKyAg
ICAgICAgICAgICAgICBpZiBsaWIgaW4gYWxyZWFkeV9jaGVja2VkX2xpYnM6CisgICAgICAgICAg
ICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgIyBhdm9pZCByZWN1cnNpb24gbG9v
cHMgKGxpYmZyZWV0eXBlLnNvLjYgPC0+IGxpYmhhcmZidXp6LnNvLjApCisgICAgICAgICAgICAg
ICAgYWxyZWFkeV9jaGVja2VkX2xpYnMuYXBwZW5kKGxpYikKKyAgICAgICAgICAgICAgICBzdWJf
bGlicywgc3ViX2ludGVycHJldGVyID0gc2VsZi5fbGRkX3JlY3Vyc2l2ZV9nZXRfbGlic19hbmRf
aW50ZXJwcmV0ZXIobGliLCBhbHJlYWR5X2NoZWNrZWRfbGlicykKKyAgICAgICAgICAgICAgICBs
aWJzLmV4dGVuZChzdWJfbGlicykKKyAgICAgICAgICAgICAgICBpZiBzdWJfaW50ZXJwcmV0ZXIg
YW5kIGludGVycHJldGVyIGFuZCBzdWJfaW50ZXJwcmV0ZXIgIT0gaW50ZXJwcmV0ZXI6CisgICAg
ICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignbGlicmFyeSAlcyBoYXMgaW50ZXJw
cmV0ZXIgJXMgYnV0IG9iamVjdCAlcyBoYXMgaW50ZXJwcmV0ZXIgJXMnICUgKGxpYiwgc3ViX2lu
dGVycHJldGVyLCBvYmplY3QsIGludGVycHJldGVyKSkKKyAgICAgICAgcmV0dXJuIGxpc3Qoc2V0
KGxpYnMpKSwgaW50ZXJwcmV0ZXIKKworICAgIGRlZiBnZXRfbGlic19hbmRfaW50ZXJwcmV0ZXIo
c2VsZiwgb2JqZWN0LCBhbHJlYWR5X2NoZWNrZWRfbGlicz1bXSk6CisgICAgICAgIHJldHVybiBz
ZWxmLl9sZGRfcmVjdXJzaXZlX2dldF9saWJzX2FuZF9pbnRlcnByZXRlcihvYmplY3QsIGFscmVh
ZHlfY2hlY2tlZF9saWJzKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433317</attachid>
            <date>2021-07-12 07:57:26 -0700</date>
            <delta_ts>2021-07-12 08:06:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227579-20210712145724.patch</filename>
            <type>text/plain</type>
            <size>33492</size>
            <attacher name="Angelos Oikonomopoulos">angelos</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5NDEyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZWVjMjgwYWRmZDU2MGQ5YWY4MmY5MDAxNjkxZWZiMTFk
MDAyNDMwMC4uNGRhOGM1MWQ5Mjk3ZWU3MThiNmY4MTUxNjIyNWYyZTc5YWMzNjFiZiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1
IEBACisyMDIxLTA3LTAyICBBbmdlbG9zIE9pa29ub21vcG91bG9zICA8YW5nZWxvc0BpZ2FsaWEu
Y29tPgorCisgICAgICAgIEJ1bmRsZSBsaWJyYXJpZXMgZm9yIHJlbW90ZSBleGVjdXRpb24gaW4g
cnVuLWpzYy1iZW5jaG1hcmtzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjc1NzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBTaW1pbGFybHkgdG8gcnVuLWpzYy1zdHJlc3MtdGVzdHMsIGludHJvZHVjZSBh
IGJ1bmRsaW5nIHN0ZXAgdGhhdAorICAgICAgICBzaGlwcyBhbGwgbGlicmFyeSBkZXBlbmRlbmNp
ZXMgdG8gdGhlIHJlbW90ZSBzeXN0ZW0gd2hlbiB1c2luZworICAgICAgICBydW4tanNjLWJlbmNo
bWFya3MgLS1yZW1vdGUuCisKKyAgICAgICAgVGhpcyBwYXRjaCBmYWN0b3JzIG91dCB0aGUgY29k
ZSB0bworICAgICAgICAtIGxvb2t1cCB0aGUgRUxGIGludGVycHJldGVyL2xpYnJhcmllcyBhbmQg
dG8KKyAgICAgICAgLSBzdHJpcCB0aGUgcnBhdGggYW5kIGNyZWF0ZSBhIHdyYXBwZXIgc2NyaXB0
CisgICAgICAgIGZyb20gZ2VuZXJhdGUtYnVuZGxlIGFuZCBwbGFjZXMgaXQgd2Via2l0cHkvYmlu
YXJ5X2J1bmRsaW5nLgorCisgICAgICAgIEl0IGFsc28gaW50cm9kdWNlcyBhIHNpbXBsZXIgc2Ny
aXB0IHRoYXQgb25seSBidW5kbGVzIGEgc2luZ2xlCisgICAgICAgIGJpbmFyeSAoYnVuZGxlLWJp
bmFyeSkgYW5kIHN3aXRjaGVzIHJ1bi1qc2MtYmVuY2htYXJrcyBhbmQKKyAgICAgICAgcnVuLWpz
Yy1zdHJlc3MtdGVzdHMgdG8gdXNlIGl0LgorCisgICAgICAgIEl0IGFsc28gdXBkYXRlcyBydW4t
anNjLWJlbmNobWFyayB0byBwcm9wYWdhdGUgYW55IGVudmlyb25tZW50CisgICAgICAgIHZhcmlh
YmxlcyBpbnRlbmRlZCBmb3IgY29uc3VtcHRpb24gYnkgdGhlIEpTQyBiaW5hcnkuCisKKyAgICAg
ICAgKiBTY3JpcHRzL2dlbmVyYXRlLWJ1bmRsZTogRmFjdG9yIG91dCByZXVzYWJsZSBidW5kbGlu
ZyBjb2RlLgorICAgICAgICAqIFNjcmlwdHMvcnVuLWpzYy1iZW5jaG1hcmtzOiBEbyBidW5kbGlu
ZyBhbmQgdmFyaWFibGUgcHJvcGFnYXRpb24uCisgICAgICAgICogU2NyaXB0cy9ydW4tanNjLXN0
cmVzcy10ZXN0czogU3dpdGNoIHRvIGJ1bmRsZS1iaW5hcnkuCisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9iaW5hcnlfYnVuZGxpbmcvX19pbml0X18ucHk6IEFkZGVkLgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvYmluYXJ5X2J1bmRsaW5nL2J1bmRsZS5weTogQWRkZWQuCisgICAgICAg
IChCaW5hcnlCdW5kbGVyKToKKyAgICAgICAgKEJpbmFyeUJ1bmRsZXIuX19pbml0X18pOgorICAg
ICAgICAoQmluYXJ5QnVuZGxlci5kZXN0aW5hdGlvbl9kaXIpOgorICAgICAgICAoQmluYXJ5QnVu
ZGxlci5jb3B5X2FuZF9yZW1vdmVfcnBhdGgpOgorICAgICAgICAoQmluYXJ5QnVuZGxlci5nZW5l
cmF0ZV93cmFwcGVyX3NjcmlwdCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9iaW5hcnlf
YnVuZGxpbmcvbGRkLnB5OiBBZGRlZC4KKyAgICAgICAgKFNoYXJlZE9iamVjdFJlc29sdmVyKToK
KyAgICAgICAgKFNoYXJlZE9iamVjdFJlc29sdmVyLl9faW5pdF9fKToKKyAgICAgICAgKFNoYXJl
ZE9iamVjdFJlc29sdmVyLl9ydW5fY21kX2FuZF9nZXRfb3V0cHV0KToKKyAgICAgICAgKFNoYXJl
ZE9iamVjdFJlc29sdmVyLl9nZXRfaW50ZXJwcmV0ZXJfb2JqbmFtZSk6CisgICAgICAgIChTaGFy
ZWRPYmplY3RSZXNvbHZlci5fZ2V0X2xpYnNfYW5kX2ludGVycHJldGVyKToKKyAgICAgICAgKFNo
YXJlZE9iamVjdFJlc29sdmVyLl9sZGRfcmVjdXJzaXZlX2dldF9saWJzX2FuZF9pbnRlcnByZXRl
cik6CisgICAgICAgIChTaGFyZWRPYmplY3RSZXNvbHZlci5nZXRfbGlic19hbmRfaW50ZXJwcmV0
ZXIpOgorCisgICAgICAgICogU2NyaXB0cy9idW5kbGUtYmluYXJ5OiBBZGRlZC4KKyAgICAgICAg
KiBTY3JpcHRzL2dlbmVyYXRlLWJ1bmRsZToKKyAgICAgICAgKiBTY3JpcHRzL3J1bi1qc2MtYmVu
Y2htYXJrczoKKyAgICAgICAgKiBTY3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzOgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvYmluYXJ5X2J1bmRsaW5nL19faW5pdF9fLnB5OiBBZGRlZC4K
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2JpbmFyeV9idW5kbGluZy9idW5kbGUucHk6IEFk
ZGVkLgorICAgICAgICAoQmluYXJ5QnVuZGxlcik6CisgICAgICAgIChCaW5hcnlCdW5kbGVyLl9f
aW5pdF9fKToKKyAgICAgICAgKEJpbmFyeUJ1bmRsZXIuZGVzdGluYXRpb25fZGlyKToKKyAgICAg
ICAgKEJpbmFyeUJ1bmRsZXIuY29weV9hbmRfcmVtb3ZlX3JwYXRoKToKKyAgICAgICAgKEJpbmFy
eUJ1bmRsZXIuZ2VuZXJhdGVfd3JhcHBlcl9zY3JpcHQpOgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvYmluYXJ5X2J1bmRsaW5nL2xkZC5weTogQWRkZWQuCisgICAgICAgIChTaGFyZWRPYmpl
Y3RSZXNvbHZlcik6CisgICAgICAgIChTaGFyZWRPYmplY3RSZXNvbHZlci5fX2luaXRfXyk6Cisg
ICAgICAgIChTaGFyZWRPYmplY3RSZXNvbHZlci5fcnVuX2NtZF9hbmRfZ2V0X291dHB1dCk6Cisg
ICAgICAgIChTaGFyZWRPYmplY3RSZXNvbHZlci5fZ2V0X2ludGVycHJldGVyX29iam5hbWUpOgor
ICAgICAgICAoU2hhcmVkT2JqZWN0UmVzb2x2ZXIuX2dldF9saWJzX2FuZF9pbnRlcnByZXRlcik6
CisgICAgICAgIChTaGFyZWRPYmplY3RSZXNvbHZlci5fbGRkX3JlY3Vyc2l2ZV9nZXRfbGlic19h
bmRfaW50ZXJwcmV0ZXIpOgorICAgICAgICAoU2hhcmVkT2JqZWN0UmVzb2x2ZXIuZ2V0X2xpYnNf
YW5kX2ludGVycHJldGVyKToKKwogMjAyMS0wNi0yOSAgWmhpZmVpIEZhbmcgIDx6aGlmZWlfZmFu
Z0BhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIG5ldyBhcmd1bWVudCBvZiBkZXZpY2Ugb3MgdmVy
c2lvbiBmb3IgcmVwb3J0aW5nIEphdmFTY3JpcHRDb3JlIHRlc3QgcmVzdWx0CmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL2J1bmRsZS1iaW5hcnkgYi9Ub29scy9TY3JpcHRzL2J1bmRsZS1iaW5h
cnkKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNzQ1Mzc5OTdjZTFlYzM5NTljZjZhM2JlZDBlNjlhMGVmNzEwZTZmYgot
LS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvYnVuZGxlLWJpbmFyeQpAQCAtMCwwICsx
LDM3IEBACisjIS91c3IvYmluL2VudiBweXRob24zCisKK2ltcG9ydCBhcmdwYXJzZQoraW1wb3J0
IGxvZ2dpbmcKK2ltcG9ydCBvcworaW1wb3J0IHN5cworCit0b3BfbGV2ZWxfZGlyZWN0b3J5ID0g
b3MucGF0aC5ub3JtcGF0aChvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwg
Jy4uJywgJy4uJykpCitzeXMucGF0aC5pbnNlcnQoMCwgb3MucGF0aC5qb2luKHRvcF9sZXZlbF9k
aXJlY3RvcnksICdUb29scycsICdTY3JpcHRzJywgJ3dlYmtpdHB5JykpCisKK2Zyb20gYmluYXJ5
X2J1bmRsaW5nLmxkZCBpbXBvcnQgU2hhcmVkT2JqZWN0UmVzb2x2ZXIKK2Zyb20gYmluYXJ5X2J1
bmRsaW5nLmJ1bmRsZSBpbXBvcnQgQmluYXJ5QnVuZGxlcgorCitkZWYgbWFpbigpOgorICAgIHBh
cnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKCd1c2FnZSAlcHJvZyBbb3B0aW9uc10nKQor
ICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tbGRkJywgZGVzdD0nbGRkJywgZGVmYXVsdD0nbGRk
JywgaGVscD0nVXNlIGFsdGVybmF0aXZlIGxkZCAodXNlZnVsIGZvciBub24tbmF0aXZlIGJpbmFy
aWVzJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWxvZy1sZXZlbCcsIGRlc3Q9J2xvZ19s
ZXZlbCcsIGNob2ljZXM9WydkZWJ1ZycsICdpbmZvJywgJ3dhcm5pbmcnLCAnZXJyb3InLCAnY3Jp
dGljYWwnXSwgZGVmYXVsdD0naW5mbycpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1kZXN0
LWRpcicsIGRlc3Q9J2Rlc3RfZGlyJywgcmVxdWlyZWQ9VHJ1ZSkKKyAgICBwYXJzZXIuYWRkX2Fy
Z3VtZW50KCdiaW5hcnknKQorICAgIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncygpCisKKyAgICBs
b2dnaW5nLmdldExvZ2dlcigpLnNldExldmVsKGFyZ3MubG9nX2xldmVsLnVwcGVyKCkpCisgICAg
bG9nZ2luZy5nZXRMb2dnZXIoKS5hZGRIYW5kbGVyKGxvZ2dpbmcuU3RyZWFtSGFuZGxlcigpKQor
ICAgIGxpYnJhcmllcywgaW50ZXJwcmV0ZXIgPSBTaGFyZWRPYmplY3RSZXNvbHZlcihhcmdzLmxk
ZCkuZ2V0X2xpYnNfYW5kX2ludGVycHJldGVyKGFyZ3MuYmluYXJ5KQorCisgICAgaWYgaW50ZXJw
cmV0ZXIgaXMgTm9uZToKKyAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJDb3VsZCBub3QgZGV0
ZXJtaW5lIGludGVycHJldGVyIGZvciBiaW5hcnkgJXMiICUgb2JqZWN0KQorICAgIGJ1bmRsZXIg
PSBCaW5hcnlCdW5kbGVyKGFyZ3MuZGVzdF9kaXIsIEZhbHNlKQorICAgIGJ1bmRsZXIuY29weV9h
bmRfcmVtb3ZlX3JwYXRoKGludGVycHJldGVyLCB0eXBlPSdpbnRlcnByZXRlcicpCisgICAgYnVu
ZGxlci5jb3B5X2FuZF9yZW1vdmVfcnBhdGgoYXJncy5iaW5hcnksIHR5cGU9J2JpbicpCisgICAg
Zm9yIGxpYiBpbiBsaWJyYXJpZXM6CisgICAgICAgIGJ1bmRsZXIuY29weV9hbmRfcmVtb3ZlX3Jw
YXRoKGxpYiwgdHlwZT0nbGliJykKKyAgICBidW5kbGVyLmdlbmVyYXRlX3dyYXBwZXJfc2NyaXB0
KGludGVycHJldGVyLCBvcy5wYXRoLmJhc2VuYW1lKGFyZ3MuYmluYXJ5KSkKKyAgICByZXR1cm4g
MAorCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHN5cy5leGl0KG1haW4oKSkKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtYnVuZGxlIGIvVG9vbHMvU2NyaXB0cy9n
ZW5lcmF0ZS1idW5kbGUKaW5kZXggNzgxYTcwYjljZTRlNzlkY2FmMTk4M2Y4Y2M2YzVhZWIyMzZi
ZGZlZi4uYjMyYjk5NmM4YjYyMzNhMDdkOTc0ZDNjZTU2MzNmZjlkZDI4NWJlOSAxMDA3NTUKLS0t
IGEvVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1idW5kbGUKKysrIGIvVG9vbHMvU2NyaXB0cy9nZW5l
cmF0ZS1idW5kbGUKQEAgLTQwLDkgKzQwLDExIEBAIGltcG9ydCB6aXBmaWxlCiB0b3BfbGV2ZWxf
ZGlyZWN0b3J5ID0gb3MucGF0aC5ub3JtcGF0aChvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1l
KF9fZmlsZV9fKSwgJy4uJywgJy4uJykpCiBzeXMucGF0aC5pbnNlcnQoMCwgb3MucGF0aC5qb2lu
KHRvcF9sZXZlbF9kaXJlY3RvcnksICdUb29scycsICdmbGF0cGFrJykpCiBzeXMucGF0aC5pbnNl
cnQoMCwgb3MucGF0aC5qb2luKHRvcF9sZXZlbF9kaXJlY3RvcnksICdUb29scycsICdqaGJ1aWxk
JykpCitzeXMucGF0aC5pbnNlcnQoMCwgb3MucGF0aC5qb2luKHRvcF9sZXZlbF9kaXJlY3Rvcnks
ICdUb29scycsICdTY3JpcHRzJywgJ3dlYmtpdHB5JykpCiBpbXBvcnQgamhidWlsZHV0aWxzCiBp
bXBvcnQgZmxhdHBha3V0aWxzCi0KK2Zyb20gYmluYXJ5X2J1bmRsaW5nLmxkZCBpbXBvcnQgU2hh
cmVkT2JqZWN0UmVzb2x2ZXIKK2Zyb20gYmluYXJ5X2J1bmRsaW5nLmJ1bmRsZSBpbXBvcnQgQmlu
YXJ5QnVuZGxlcgogCiBJTlNUQUxMX0RFUFNfU0NSSVBUX1RFTVBMQVRFID0gIiIiXAogIyEvYmlu
L2Jhc2gKQEAgLTEyNyw3ICsxMjksNyBAQCBjbGFzcyBCdW5kbGVDcmVhdG9yKG9iamVjdCk6CiAg
ICAgICAgIHNlbGYuX2J1bmRsZV90eXBlID0gYnVuZGxlX3R5cGUKICAgICAgICAgc2VsZi5fYnVp
bGRlcm5hbWUgPSBidWlsZGVyX25hbWUKICAgICAgICAgc2VsZi5fc3lzbGlicyA9IHN5c2xpYnMK
LSAgICAgICAgc2VsZi5fbGRkID0gbGRkCisgICAgICAgIHNlbGYuX3NoYXJlZF9vYmplY3RfcmVz
b2x2ZXIgPSBTaGFyZWRPYmplY3RSZXNvbHZlcihsZGQpCiAgICAgICAgIHNlbGYuX3Nob3VsZF9z
dHJpcF9vYmplY3RzID0gc2hvdWxkX3N0cmlwX29iamVjdHMKICAgICAgICAgc2VsZi5fY29tcHJl
c3Npb25fdHlwZSA9IGNvbXByZXNzaW9uX3R5cGUKICAgICAgICAgc2VsZi5fdG1wZGlyID0gTm9u
ZQpAQCAtMTUxLDc3ICsxNTMsMTYgQEAgY2xhc3MgQnVuZGxlQ3JlYXRvcihvYmplY3QpOgogICAg
ICAgICAgICAgcmV0dXJuIHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PW9zLnBhdGguam9pbihvcy5w
YXRoLmFic3BhdGgoYmFzZWRpciksICd0bXAnKSkKICAgICAgICAgcmV0dXJuIHRlbXBmaWxlLm1r
ZHRlbXAoKQogCisKICAgICBkZWYgX3J1bl9jbWRfYW5kX2dldF9vdXRwdXQoc2VsZiwgY29tbWFu
ZCk6Ci0gICAgICAgIGNvbW1hbmRfcHJvY2VzcyA9IHN1YnByb2Nlc3MuUG9wZW4oY29tbWFuZCwg
c3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VULCBlbmNvZGlu
Zz0ndXRmLTgnKQorICAgICAgICBfbG9nLmRlYnVnKCJFWEVDICVzIiAlIGNvbW1hbmQpCisgICAg
ICAgIGNvbW1hbmRfcHJvY2VzcyA9IHN1YnByb2Nlc3MuUG9wZW4oY29tbWFuZCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBF
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJw
cm9jZXNzLlNURE9VVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBlbmNvZGluZz0ndXRmLTgnKQogICAgICAgICBzdGRvdXQsIHN0ZGVyciA9IGNvbW1hbmRfcHJv
Y2Vzcy5jb21tdW5pY2F0ZSgpCiAgICAgICAgIHJldHVybiBjb21tYW5kX3Byb2Nlc3MucmV0dXJu
Y29kZSwgc3Rkb3V0LCBzdGRlcnIKIAotCi0gICAgZGVmIF9nZXRfaW50ZXJwcmV0ZXJfb2JqbmFt
ZShzZWxmLCBvYmplY3QpOgotICAgICAgICAjIE5vdGU6IHdlIHVzZSBwYXRjaGVsZiB0byBnZXQg
dGhlIG9iamVjdCBuYW1lIChub3QgdGhlIHBhdGghKQotICAgICAgICAjIG9mIHRoZSBpbnRlcnBy
ZXRlciBiZWNhdXNlIHRoaXMgd29ya3MgcmVnYXJkbGVzcyBvZiB0aGUKLSAgICAgICAgIyBhcmNo
aXRlY3R1cmUgb2YgdGhlIEVMRiBmaWxlLgotICAgICAgICByZXRjb2RlLCBzdGRvdXQsIHN0ZGVy
ciA9IHNlbGYuX3J1bl9jbWRfYW5kX2dldF9vdXRwdXQoWydwYXRjaGVsZicsICctLXByaW50LWlu
dGVycHJldGVyJywgb2JqZWN0XSkKLSAgICAgICAgaWYgcmV0Y29kZSAhPSAwOgotICAgICAgICAg
ICAgX2xvZy5kZWJ1ZygicGF0Y2hlbGYgc3Rkb3V0OlxuJXNcblBhdGNoZWxmIHN0ZGVycjpcbiVz
IiAlIChzdGRvdXQsIHN0ZGVycikpCi0gICAgICAgICAgICBpZiAnY2Fubm90IGZpbmQgc2VjdGlv
bicgaW4gc3Rkb3V0OgotICAgICAgICAgICAgICAgICMgVGhpcyBpcyBmaW5lOyB3ZSBvbmx5IGV4
cGVjdCBhbiBpbnRlcnByZXRlciBpbiB0aGUgbWFpbiBiaW5hcnkuCi0gICAgICAgICAgICAgICAg
cmV0dXJuIE5vbmUKLSAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignVGhlIHBhdGNoZWxm
IGNvbW1hbmQgcmV0dXJuZWQgbm9uLXplcm8gc3RhdHVzIGZvciBvYmplY3QgJXMnICUgb2JqZWN0
KQotICAgICAgICBpbnRlcnByZXRlcl9wYXRoID0gUHVyZVBhdGgoc3Rkb3V0LnN0cmlwKCkpCi0g
ICAgICAgIHJldHVybiBpbnRlcnByZXRlcl9wYXRoLm5hbWUKLQotICAgIGRlZiBfZ2V0X2xpYnNf
YW5kX2ludGVycHJldGVyKHNlbGYsIG9iamVjdCk6Ci0gICAgICAgIGludGVycHJldGVyID0gTm9u
ZQotICAgICAgICByZXRjb2RlLCBzdGRvdXQsIHN0ZGVyciA9IHNlbGYuX3J1bl9jbWRfYW5kX2dl
dF9vdXRwdXQoW3NlbGYuX2xkZCwgb2JqZWN0XSkKLSAgICAgICAgX2xvZy5kZWJ1ZygibGRkIHN0
ZG91dDpcbiVzIiAlIHN0ZG91dCkKLSAgICAgICAgaWYgcmV0Y29kZSAhPSAwOgotICAgICAgICAg
ICAgcmFpc2UgUnVudGltZUVycm9yKCdUaGUgJXMgY29tbWFuZCByZXR1cm5lZCBub24temVybyBz
dGF0dXMgZm9yIG9iamVjdCAlcycgJSAoc2VsZi5fbGRkLCBvYmplY3QpKQotICAgICAgICBsaWJz
ID0gW10KLSAgICAgICAgZm9yIGxpbmUgaW4gc3Rkb3V0LnNwbGl0bGluZXMoKToKLSAgICAgICAg
ICAgIGxpbmUgPSBsaW5lLnN0cmlwKCkKLSAgICAgICAgICAgIGlmICc9PicgaW4gbGluZToKLSAg
ICAgICAgICAgICAgICBsaW5lID0gbGluZS5zcGxpdCgnPT4nKVsxXS5zdHJpcCgpCi0gICAgICAg
ICAgICAgICAgaWYgJ25vdCBmb3VuZCcgaW4gbGluZToKLSAgICAgICAgICAgICAgICAgICAgcmFp
c2UgUnVudGltZUVycm9yKCdsZGQgY2FuIG5vdCByZXNvbHZlIGFsbCBkZXBlbmRlbmNpZXMgZm9y
IG9iamVjdCAlcy4nICUgb2JqZWN0KQotICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lLnNwbGl0
KCcgJylbMF0uc3RyaXAoKQotICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKGxpbmUp
OgotICAgICAgICAgICAgICAgICAgICBsaWJzLmFwcGVuZChsaW5lKQotICAgICAgICAgICAgZWxz
ZToKLSAgICAgICAgICAgICAgICBsaW5lID0gbGluZS5zcGxpdCgnICcpWzBdLnN0cmlwKCkKLSAg
ICAgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShsaW5lKToKLSAgICAgICAgICAgICAgICAg
ICAgaW50ZXJwcmV0ZXIgPSBsaW5lCi0gICAgICAgIGlmIGludGVycHJldGVyIGlzIE5vbmU6Ci0g
ICAgICAgICAgICAjIFRoaXMgaXMgdGhlIGNhc2UgZm9yIG5vbi1uYXRpdmUgYmluYXJpZXMuIEZv
ciB0aG9zZSwgd2UKLSAgICAgICAgICAgICMgY2FuIHVzZSBhIGNyb3NzLWxkZCAoeGxkZCksIGJ1
dCB0aGVuIHRoZSBpbnRlcnByZXRlcgotICAgICAgICAgICAgIyBsb29rcyBsaWtlIGFueSBvdGhl
ciBzaGFyZWQgb2JqZWN0IGluIHRoZSBvdXRwdXQgb2YKLSAgICAgICAgICAgICMgbGRkLiBUcnkg
dG8gaWRlbnRpZnkgaXQgYnkgbG9va2luZyBhdCB0aGUgb2JqZWN0IG5hbWUKLSAgICAgICAgICAg
ICMgZnJvbSB0aGUgaW50ZXJwcmV0ZXIgc3RyaW5nLgotICAgICAgICAgICAgaW50ZXJwcmV0ZXJf
b2JqbmFtZSA9IHNlbGYuX2dldF9pbnRlcnByZXRlcl9vYmpuYW1lKG9iamVjdCkKLSAgICAgICAg
ICAgIGZvciBsaWIgaW4gbGliczoKLSAgICAgICAgICAgICAgICBpZiBQdXJlUGF0aChsaWIpLm5h
bWUgPT0gaW50ZXJwcmV0ZXJfb2JqbmFtZToKLSAgICAgICAgICAgICAgICAgICAgaW50ZXJwcmV0
ZXIgPSBsaWIKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICMgSWYgd2Ug
Zm91bmQgYW4gaW50ZXJwcmV0ZXIsIHJlbW92ZSBpdCBmcm9tIHRoZSBsaWJzLgotICAgICAgICAg
ICAgbGlicyA9IFtsaWIgZm9yIGxpYiBpbiBsaWJzIGlmIGxpYiAhPSBpbnRlcnByZXRlcl0KLSAg
ICAgICAgcmV0dXJuIGxpYnMsIGludGVycHJldGVyCi0KLQotICAgIGRlZiBfbGRkX3JlY3Vyc2l2
ZV9nZXRfbGlic19hbmRfaW50ZXJwcmV0ZXIoc2VsZiwgb2JqZWN0LCBhbHJlYWR5X2NoZWNrZWRf
bGlicyA9IFtdKToKLSAgICAgICAgbGlicywgaW50ZXJwcmV0ZXIgPSBzZWxmLl9nZXRfbGlic19h
bmRfaW50ZXJwcmV0ZXIob2JqZWN0KQotICAgICAgICBpZiBsaWJzOgotICAgICAgICAgICAgZm9y
IGxpYiBpbiBsaWJzOgotICAgICAgICAgICAgICAgIGlmIGxpYiBpbiBhbHJlYWR5X2NoZWNrZWRf
bGliczoKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICAjIGF2
b2lkIHJlY3Vyc2lvbiBsb29wcyAobGliZnJlZXR5cGUuc28uNiA8LT4gbGliaGFyZmJ1enouc28u
MCkKLSAgICAgICAgICAgICAgICBhbHJlYWR5X2NoZWNrZWRfbGlicy5hcHBlbmQobGliKQotICAg
ICAgICAgICAgICAgIHN1Yl9saWJzLCBzdWJfaW50ZXJwcmV0ZXIgPSBzZWxmLl9sZGRfcmVjdXJz
aXZlX2dldF9saWJzX2FuZF9pbnRlcnByZXRlcihsaWIsIGFscmVhZHlfY2hlY2tlZF9saWJzKQot
ICAgICAgICAgICAgICAgIGxpYnMuZXh0ZW5kKHN1Yl9saWJzKQotICAgICAgICAgICAgICAgIGlm
IHN1Yl9pbnRlcnByZXRlciBhbmQgaW50ZXJwcmV0ZXIgYW5kIHN1Yl9pbnRlcnByZXRlciAhPSBp
bnRlcnByZXRlcjoKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdsaWJy
YXJ5ICVzIGhhcyBpbnRlcnByZXRlciAlcyBidXQgb2JqZWN0ICVzIGhhcyBpbnRlcnByZXRlciAl
cycgJSAobGliLCBzdWJfaW50ZXJwcmV0ZXIsIG9iamVjdCwgaW50ZXJwcmV0ZXIpKQotICAgICAg
ICByZXR1cm4gbGlzdChzZXQobGlicykpLCBpbnRlcnByZXRlcgotCi0KICAgICBkZWYgX2dldF9v
c3ByZXR0eW5hbWUoc2VsZik6CiAgICAgICAgIHdpdGggb3BlbignL2V0Yy9vcy1yZWxlYXNlJywg
J3InKSBhcyBvc3JlbGVhc2VfaGFuZGxlOgogICAgICAgICAgICAgZm9yIGxpbmUgaW4gb3NyZWxl
YXNlX2hhbmRsZS5yZWFkbGluZXMoKToKQEAgLTI1OCwzNyArMTk5LDMwIEBAIGNsYXNzIEJ1bmRs
ZUNyZWF0b3Iob2JqZWN0KToKIAogCiAgICAgZGVmIF9nZW5lcmF0ZV93cmFwcGVyX3NjcmlwdChz
ZWxmLCBpbnRlcnByZXRlciwgYmluYXJ5X3RvX3dyYXApOgotICAgICAgICBpZiBub3Qgb3MucGF0
aC5pc2ZpbGUob3MucGF0aC5qb2luKHNlbGYuX3RtcGRpciwgJ2JpbicsIGJpbmFyeV90b193cmFw
KSk6Ci0gICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ0NhbiBub3QgZmluZCBiaW5hcnkg
dG8gd3JhcCBmb3IgJXMnICUgYmluYXJ5X3RvX3dyYXApCi0gICAgICAgIHNlbGYuX3dyYXBwZXJf
c2NyaXB0cy5hcHBlbmQoYmluYXJ5X3RvX3dyYXApCi0gICAgICAgIF9sb2cuaW5mbygnR2VuZXJh
dGUgd3JhcHBlciBzY3JpcHQgJXMnICUgYmluYXJ5X3RvX3dyYXApCi0gICAgICAgIHNjcmlwdF9m
aWxlID0gb3MucGF0aC5qb2luKHNlbGYuX3RtcGRpciwgYmluYXJ5X3RvX3dyYXApCi0KLSAgICAg
ICAgd2l0aCBvcGVuKHNjcmlwdF9maWxlLCAndycpIGFzIHNjcmlwdF9oYW5kbGU6Ci0gICAgICAg
ICAgICBzY3JpcHRfaGFuZGxlLndyaXRlKCcjIS9iaW4vc2hcbicpCi0gICAgICAgICAgICBzY3Jp
cHRfaGFuZGxlLndyaXRlKCdNWURJUj0iJChkaXJuYW1lICQocmVhZGxpbmsgLWYgJDApKSJcbicp
Ci0gICAgICAgICAgICBzY3JpcHRfaGFuZGxlLndyaXRlKCdleHBvcnQgTERfTElCUkFSWV9QQVRI
PSIke01ZRElSfS9saWIiXG4nKQotICAgICAgICAgICAgaWYgb3MucGF0aC5pc2Rpcihvcy5wYXRo
LmpvaW4oc2VsZi5fdG1wZGlyLCAnZ2lvJykpOgotICAgICAgICAgICAgICAgIGdpb192YXIgPSAn
R0lPX01PRFVMRV9ESVInIGlmIHNlbGYuX3N5c2xpYnMgPT0gJ2J1bmRsZS1hbGwnIGVsc2UgJ0dJ
T19FWFRSQV9NT0RVTEVTJwotICAgICAgICAgICAgICAgIHNjcmlwdF9oYW5kbGUud3JpdGUoJ2V4
cG9ydCAlcz0iJHtNWURJUn0vZ2lvIlxuJyAlIGdpb192YXIpCi0gICAgICAgICAgICBpZiBvcy5w
YXRoLmlzZGlyKG9zLnBhdGguam9pbihzZWxmLl90bXBkaXIsICdnc3QnKSk6Ci0gICAgICAgICAg
ICAgICAgZ3N0X3ZhciA9ICdHU1RfUExVR0lOX1NZU1RFTV9QQVRIXzFfMCcgaWYgc2VsZi5fc3lz
bGlicyA9PSAnYnVuZGxlLWFsbCcgZWxzZSAnR1NUX1BMVUdJTl9QQVRIXzFfMCcKLSAgICAgICAg
ICAgICAgICBzY3JpcHRfaGFuZGxlLndyaXRlKCdleHBvcnQgJXM9IiR7TVlESVJ9L2dzdCJcbicg
JSBnc3RfdmFyKQotICAgICAgICAgICAgICAgIHNjcmlwdF9oYW5kbGUud3JpdGUoJ2V4cG9ydCBH
U1RfUkVHSVNUUllfMV8wPSIke01ZRElSfS9nc3QvZ3N0cmVhbWVyLTEuMC5yZWdpc3RyeSJcbicp
CisgICAgICAgIHZhcmlhYmxlcyA9IGRpY3QoKQorICAgICAgICBteWRpciA9IHNlbGYuX2J1bmRs
ZXIuVkFSX01ZRElSCisgICAgICAgIGlmIG9zLnBhdGguaXNkaXIob3MucGF0aC5qb2luKHNlbGYu
X2J1bmRsZXIuZGVzdGluYXRpb25fZGlyKCksICdnaW8nKSk6CisgICAgICAgICAgICBnaW9fdmFy
ID0gJ0dJT19NT0RVTEVfRElSJyBpZiBzZWxmLl9zeXNsaWJzID09ICdidW5kbGUtYWxsJyBlbHNl
ICdHSU9fRVhUUkFfTU9EVUxFUycKKyAgICAgICAgICAgIHZhcmlhYmxlc1tnaW9fdmFyXSA9ICIk
eyVzfS9naW8iICUgbXlkaXIKKworICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKG9zLnBhdGguam9p
bihzZWxmLl9idW5kbGVyLmRlc3RpbmF0aW9uX2RpcigpLCAnZ3N0JykpOgorICAgICAgICAgICAg
Z3N0X3ZhciA9ICdHU1RfUExVR0lOX1NZU1RFTV9QQVRIXzFfMCcgaWYgc2VsZi5fc3lzbGlicyA9
PSAnYnVuZGxlLWFsbCcgZWxzZSAnR1NUX1BMVUdJTl9QQVRIXzFfMCcKKyAgICAgICAgICAgIHZh
cmlhYmxlc1tnc3RfdmFyXSA9ICIkeyVzfS9nc3QiICUgbXlkaXIKKyAgICAgICAgICAgIHZhcmlh
Ymxlc1snR1NUX1JFR0lTVFJZXzFfMCddID0gIiR7JXN9L2dzdC9nc3RyZWFtZXItMS4wLnJlZ2lz
dHJ5IiAlIG15ZGlyCisgICAgICAgIGlmIGJpbmFyeV90b193cmFwICE9ICJqc2MiOgorICAgICAg
ICAgICAgdmFyaWFibGVzWydXRUJLSVRfRVhFQ19QQVRIJ10gPSAiJHslc30vYmluIiAlIG15ZGly
CisgICAgICAgICAgICB2YXJpYWJsZXNbJ1dFQktJVF9JTkpFQ1RFRF9CVU5ETEVfUEFUSCddID0g
IiR7JXN9L2xpYiIgJSBteWRpcgorICAgICAgICBpZiBzZWxmLl9zeXNsaWJzID09ICdidW5kbGUt
YWxsJzoKICAgICAgICAgICAgIGlmIGJpbmFyeV90b193cmFwICE9ICJqc2MiOgotICAgICAgICAg
ICAgICAgIHNjcmlwdF9oYW5kbGUud3JpdGUoJ2V4cG9ydCBXRUJLSVRfRVhFQ19QQVRIPSIke01Z
RElSfS9iaW4iXG4nKQotICAgICAgICAgICAgICAgIHNjcmlwdF9oYW5kbGUud3JpdGUoJ2V4cG9y
dCBXRUJLSVRfSU5KRUNURURfQlVORExFX1BBVEg9IiR7TVlESVJ9L2xpYiJcbicpCi0gICAgICAg
ICAgICBpZiBzZWxmLl9zeXNsaWJzID09ICdidW5kbGUtYWxsJzoKLSAgICAgICAgICAgICAgICBz
Y3JpcHRfaGFuZGxlLndyaXRlKCdJTlRFUlBSRVRFUj0iJHtNWURJUn0vbGliLyVzIlxuJyAlIG9z
LnBhdGguYmFzZW5hbWUoaW50ZXJwcmV0ZXIpKQotICAgICAgICAgICAgICAgIGlmIGJpbmFyeV90
b193cmFwICE9ICJqc2MiOgotICAgICAgICAgICAgICAgICAgICBzY3JpcHRfaGFuZGxlLndyaXRl
KCdleHBvcnQgV0VCX1BST0NFU1NfQ01EX1BSRUZJWD0iJHtJTlRFUlBSRVRFUn0iXG4nKQotICAg
ICAgICAgICAgICAgICAgICBzY3JpcHRfaGFuZGxlLndyaXRlKCdleHBvcnQgUExVR0lOX1BST0NF
U1NfQ01EX1BSRUZJWD0iJHtJTlRFUlBSRVRFUn0iXG4nKQotICAgICAgICAgICAgICAgICAgICBz
Y3JpcHRfaGFuZGxlLndyaXRlKCdleHBvcnQgTkVUV09SS19QUk9DRVNTX0NNRF9QUkVGSVg9IiR7
SU5URVJQUkVURVJ9IlxuJykKLSAgICAgICAgICAgICAgICAgICAgc2NyaXB0X2hhbmRsZS53cml0
ZSgnZXhwb3J0IEdQVV9QUk9DRVNTX0NNRF9QUkVGSVg9IiR7SU5URVJQUkVURVJ9IlxuJykKLSAg
ICAgICAgICAgICAgICBzY3JpcHRfaGFuZGxlLndyaXRlKCdleGVjICIke0lOVEVSUFJFVEVSfSIg
IiR7TVlESVJ9L2Jpbi8lcyIgIiRAIlxuJyAlIGJpbmFyeV90b193cmFwKQotICAgICAgICAgICAg
ZWxzZToKLSAgICAgICAgICAgICAgICBzY3JpcHRfaGFuZGxlLndyaXRlKCdleGVjICIke01ZRElS
fS9iaW4vJXMiICIkQCJcbicgJSBiaW5hcnlfdG9fd3JhcCkKLSAgICAgICAgb3MuY2htb2Qoc2Ny
aXB0X2ZpbGUsIDBvNzU1KQorICAgICAgICAgICAgICAgIGZvciB2YXIgaW4gWydXRUJfUFJPQ0VT
U19DTURfUFJFRklYJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUExVR0lOX1BST0NF
U1NfQ01EX1BSRUZJWCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ05FVFdPUktfUFJP
Q0VTU19DTURfUFJFRklYJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR1BVX1BST0NF
U1NfQ01EX1BSRUZJWCddOgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXNbdmFyXSA9ICIk
eyVzfSIgJSBzZWxmLl9idW5kbGVyLlZBUl9JTlRFUlBSRVRFUgorICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgaW50ZXJwcmV0ZXIgPSBOb25lCisgICAgICAgIHNlbGYuX2J1bmRsZXIuZ2VuZXJh
dGVfd3JhcHBlcl9zY3JpcHQoaW50ZXJwcmV0ZXIsIGJpbmFyeV90b193cmFwLCB2YXJpYWJsZXMp
CisgICAgICAgIHNlbGYuX3dyYXBwZXJfc2NyaXB0cy5hcHBlbmQoYmluYXJ5X3RvX3dyYXApCiAK
ICAgICBkZWYgX2dlbmVyYXRlX2luc3RhbGxfZGVwc19zY3JpcHQoc2VsZiwgc3lzdGVtX3BhY2th
Z2VzX25lZWRlZCk6CiAgICAgICAgIGlmIG5vdCBzeXN0ZW1fcGFja2FnZXNfbmVlZGVkOgpAQCAt
MzEyLDM1ICsyNDYsNiBAQCBjbGFzcyBCdW5kbGVDcmVhdG9yKG9iamVjdCk6CiAgICAgICAgICAg
ICBpbnN0YWxsZGVwc19oYW5kbGUud3JpdGUoSU5TVEFMTF9ERVBTX1NDUklQVF9URU1QTEFURSAl
IHsncGFja2FnZXNfbmVlZGVkJyA6ICcgJy5qb2luKHN5c3RlbV9wYWNrYWdlc19uZWVkZWQpfSAp
CiAgICAgICAgIG9zLmNobW9kKGluc3RhbGxkZXBzX2ZpbGUsIDBvNzU1KQogCi0KLSAgICBkZWYg
X2NvcHlfYW5kX3JlbW92ZV9ycGF0aChzZWxmLCBvcmlnX2ZpbGUsIHR5cGU9J2JpbicsIGRlc3Rp
bmF0aW9uX2Rpcj1Ob25lKToKLSAgICAgICAgaWYgbm90IGRlc3RpbmF0aW9uX2RpcjoKLSAgICAg
ICAgICAgIGRpcl9zdWZmaXggPSAnbGliJyBpZiB0eXBlID09ICdpbnRlcnByZXRlcicgZWxzZSB0
eXBlCi0gICAgICAgICAgICBkZXN0aW5hdGlvbl9kaXIgPSBvcy5wYXRoLmpvaW4oc2VsZi5fdG1w
ZGlyLCBkaXJfc3VmZml4KQotICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2RpcihkZXN0aW5hdGlv
bl9kaXIpOgotICAgICAgICAgICAgb3MubWFrZWRpcnMoZGVzdGluYXRpb25fZGlyKQotCi0gICAg
ICAgIGlmIG5vdCBvcy5wYXRoLmlzZmlsZShvcmlnX2ZpbGUpOgotICAgICAgICAgICAgcmFpc2Ug
VmFsdWVFcnJvcignQ2FuIG5vdCBmaW5kIGZpbGUgJXMnICUgb3JpZ19maWxlKQotCi0gICAgICAg
IF9sb2cuaW5mbygnQWRkIHRvIGJ1bmRsZSBbJXNdOiAlcycgJSAodHlwZSwgb3JpZ19maWxlKSkK
LSAgICAgICAgc2h1dGlsLmNvcHkob3JpZ19maWxlLCBkZXN0aW5hdGlvbl9kaXIpCi0KLSAgICAg
ICAgaWYgc2h1dGlsLndoaWNoKCdwYXRjaGVsZicpOgotICAgICAgICAgICAgcGF0Y2hfZWxmX2Nv
bW1hbmQgPSBbJ3BhdGNoZWxmJywgJy0tcmVtb3ZlLXJwYXRoJywgb3MucGF0aC5qb2luKGRlc3Rp
bmF0aW9uX2Rpciwgb3MucGF0aC5iYXNlbmFtZShvcmlnX2ZpbGUpKV0KLSAgICAgICAgICAgIGlm
IHN1YnByb2Nlc3MuY2FsbChwYXRjaF9lbGZfY29tbWFuZCkgIT0gMDoKLSAgICAgICAgICAgICAg
ICBfbG9nLndhcm5pbmcoJ1RoZSBwYXRjaGVsZiBjb21tYW5kIHJldHVybmVkIG5vbi16ZXJvIHN0
YXR1cycpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgX2xvZy53YXJuaW5nKCdwYXRj
aGVsZiBub3QgZm91bmQuIE5vdCBtb2RpZnlpbmcgcnBhdGgnKQotCi0gICAgICAgIGlmIHNlbGYu
X3Nob3VsZF9zdHJpcF9vYmplY3RzOgotICAgICAgICAgICAgaWYgc2h1dGlsLndoaWNoKCdzdHJp
cCcpOgotICAgICAgICAgICAgICAgIHN0cmlwX2NvbW1hbmQgPSBbJ3N0cmlwJywgJy0tc3RyaXAt
dW5uZWVkZWQnLCBvcy5wYXRoLmpvaW4oZGVzdGluYXRpb25fZGlyLCBvcy5wYXRoLmJhc2VuYW1l
KG9yaWdfZmlsZSkpXQotICAgICAgICAgICAgICAgIGlmIHN1YnByb2Nlc3MuY2FsbChzdHJpcF9j
b21tYW5kKSAhPSAwOgotICAgICAgICAgICAgICAgICAgICBfbG9nLndhcm5pbmcoJ1RoZSBzdHJp
cCBjb21tYW5kIHJldHVybmVkIG5vbi16ZXJvIHN0YXR1cycpCi0gICAgICAgICAgICBlbHNlOgot
ICAgICAgICAgICAgICAgIF9sb2cud2FybmluZygnc3RyaXAgbm90IGZvdW5kLiBOb3Qgc3RyaXBw
aW5nIG9iamVjdCcpCi0KICAgICBkZWYgX3JlbW92ZV90ZW1wZGlyKHNlbGYpOgogICAgICAgICBp
ZiBub3Qgc2VsZi5fdG1wZGlyOgogICAgICAgICAgICAgcmV0dXJuCkBAIC0zNDksNiArMjU0LDcg
QEAgY2xhc3MgQnVuZGxlQ3JlYXRvcihvYmplY3QpOgogCiAgICAgZGVmIGNyZWF0ZShzZWxmKToK
ICAgICAgICAgc2VsZi5fdG1wZGlyID0gc2VsZi5fY3JlYXRlX3RlbXBkaXIoc2VsZi5fYnVpbGRw
YXRoKQorICAgICAgICBzZWxmLl9idW5kbGVyID0gQmluYXJ5QnVuZGxlcihzZWxmLl90bXBkaXIs
IHNlbGYuX3Nob3VsZF9zdHJpcF9vYmplY3RzKQogCiAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxl
KHNlbGYuX2J1bmRsZV9maWxlX3BhdGgpOgogICAgICAgICAgICAgX2xvZy5pbmZvKCdSZW1vdmlu
ZyBwcmV2aW91cyBidW5kbGUgJXMnICUgc2VsZi5fYnVuZGxlX2ZpbGVfcGF0aCkKQEAgLTQ1Niwx
MSArMzYyLDExIEBAIGNsYXNzIEJ1bmRsZUNyZWF0b3Iob2JqZWN0KToKICAgICBkZWYgX2FkZF9v
YmplY3Rfb3JfZ2V0X3N5c2RlcChzZWxmLCBvYmplY3QsIG9iamVjdF90eXBlKToKICAgICAgICAg
cHJvdmlkZWRfYnlfc3lzdGVtX3BhY2thZ2UgPSBOb25lCiAgICAgICAgIGlmIHNlbGYuX3N5c2xp
YnMgPT0gJ2J1bmRsZS1hbGwnOgotICAgICAgICAgICAgc2VsZi5fY29weV9hbmRfcmVtb3ZlX3Jw
YXRoKG9iamVjdCwgdHlwZT1vYmplY3RfdHlwZSkKKyAgICAgICAgICAgIHNlbGYuX2J1bmRsZXIu
Y29weV9hbmRfcmVtb3ZlX3JwYXRoKG9iamVjdCwgdHlwZT1vYmplY3RfdHlwZSkKICAgICAgICAg
ZWxzZToKICAgICAgICAgICAgIHByb3ZpZGVkX2J5X3N5c3RlbV9wYWNrYWdlID0gc2VsZi5fZ2V0
X3N5c3RlbV9wYWNrYWdlX25hbWUob2JqZWN0KQogICAgICAgICAgICAgaWYgbm90IHByb3ZpZGVk
X2J5X3N5c3RlbV9wYWNrYWdlOgotICAgICAgICAgICAgICAgIHNlbGYuX2NvcHlfYW5kX3JlbW92
ZV9ycGF0aChvYmplY3QsIHR5cGU9b2JqZWN0X3R5cGUpCisgICAgICAgICAgICAgICAgc2VsZi5f
YnVuZGxlci5jb3B5X2FuZF9yZW1vdmVfcnBhdGgob2JqZWN0LCB0eXBlPW9iamVjdF90eXBlKQog
ICAgICAgICByZXR1cm4gcHJvdmlkZWRfYnlfc3lzdGVtX3BhY2thZ2UKIAogICAgIGRlZiBfZW5z
dXJlX3dwZV9iYWNrZW5kX3N5bWxpbmsoc2VsZik6CkBAIC01MDYsMjAgKzQxMiwyMCBAQCBjbGFz
cyBCdW5kbGVDcmVhdG9yKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgaWYgc3lzdGVtX3BhY2th
Z2U6CiAgICAgICAgICAgICAgICAgICAgIHN5c3RlbV9wYWNrYWdlc19uZWVkZWQuYWRkKHN5c3Rl
bV9wYWNrYWdlKQogICAgICAgICAgICAgZWxpZiBvYmplY3QuZW5kc3dpdGgoJy5zbycpOgotICAg
ICAgICAgICAgICAgIHNlbGYuX2NvcHlfYW5kX3JlbW92ZV9ycGF0aChvYmplY3QsIHR5cGU9J2xp
YicpCisgICAgICAgICAgICAgICAgc2VsZi5fYnVuZGxlci5jb3B5X2FuZF9yZW1vdmVfcnBhdGgo
b2JqZWN0LCB0eXBlPSdsaWInKQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBz
ZWxmLl9jb3B5X2FuZF9yZW1vdmVfcnBhdGgob2JqZWN0LCB0eXBlPSdiaW4nKQorICAgICAgICAg
ICAgICAgIHNlbGYuX2J1bmRsZXIuY29weV9hbmRfcmVtb3ZlX3JwYXRoKG9iamVjdCwgdHlwZT0n
YmluJykKICAgICAgICAgICAgICMgVGhlcmUgaXMgbm8gbmVlZCB0byBleGFtaW5lIHRoZSBsaWJy
YXJpZXMgbGlua2VkIHdpdGggb2JqZWN0cyBjb21pbmcgZnJvbSBhIHN5c3RlbSBwYWNrYWdlLAog
ICAgICAgICAgICAgIyBiZWNhdXNlIHN5c3RlbSBwYWNrYWdlcyBhbHJlYWR5IGRlY2xhcmUgZGVw
ZW5kZW5jaWVzIGJldHdlZW4gdGhlbS4KICAgICAgICAgICAgICMgSG93ZXZlciwgaWYgd2UgYXJl
IHJ1bm5pbmcgd2l0aCBzZWxmLl9zeXNsaWJzID09ICdidW5kbGUtYWxsJyB0aGVuIHN5c3RlbV9w
YWNrYWdlIHdpbGwgYmUgTm9uZSwKICAgICAgICAgICAgICMgYW5kIGV2ZXJ5dGhpbmcgd2lsbCBi
ZSBleGFtaW5lZCBhbmQgYnVuZGxlZCBhcyB3ZSBkb24ndCBhY2NvdW50IGZvciBzeXN0ZW0gcGFj
a2FnZXMgaW4gdGhhdCBjYXNlLgogICAgICAgICAgICAgaWYgbm90IHN5c3RlbV9wYWNrYWdlOgot
ICAgICAgICAgICAgICAgIGxpYnJhcmllcywgaW50ZXJwcmV0ZXIgPSBzZWxmLl9sZGRfcmVjdXJz
aXZlX2dldF9saWJzX2FuZF9pbnRlcnByZXRlcihvYmplY3QpCisgICAgICAgICAgICAgICAgbGli
cmFyaWVzLCBpbnRlcnByZXRlciA9IHNlbGYuX3NoYXJlZF9vYmplY3RfcmVzb2x2ZXIuZ2V0X2xp
YnNfYW5kX2ludGVycHJldGVyKG9iamVjdCkKICAgICAgICAgICAgICAgICBpZiBpbnRlcnByZXRl
ciBpcyBOb25lOgogICAgICAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIkNvdWxk
IG5vdCBkZXRlcm1pbmUgaW50ZXJwcmV0ZXIgZm9yIGJpbmFyeSAlcyIgJSBvYmplY3QpCiAgICAg
ICAgICAgICAgICAgaWYgY29waWVkX2ludGVycHJldGVyIGlzIE5vbmU6CiAgICAgICAgICAgICAg
ICAgICAgIGlmIHNlbGYuX3N5c2xpYnMgPT0gJ2J1bmRsZS1hbGwnOgotICAgICAgICAgICAgICAg
ICAgICAgICAgc2VsZi5fY29weV9hbmRfcmVtb3ZlX3JwYXRoKGludGVycHJldGVyLCB0eXBlPSdp
bnRlcnByZXRlcicpCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9idW5kbGVyLmNvcHlf
YW5kX3JlbW92ZV9ycGF0aChpbnRlcnByZXRlciwgdHlwZT0naW50ZXJwcmV0ZXInKQogICAgICAg
ICAgICAgICAgICAgICBjb3BpZWRfaW50ZXJwcmV0ZXIgPSBpbnRlcnByZXRlcgogICAgICAgICAg
ICAgICAgIGVsaWYgY29waWVkX2ludGVycHJldGVyICE9IGludGVycHJldGVyOgogICAgICAgICAg
ICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ0RldGVjdGVkIGJpbmFyaWVzIHdpdGggZGlm
ZmVyZW50IGludGVycHJldGVyczogJXMgIT0gJXMnICUoY29waWVkX2ludGVycHJldGVyLCBpbnRl
cnByZXRlcikpCkBAIC02NTksNyArNTY1LDcgQEAgZGVmIGNvbmZpZ3VyZV9sb2dnaW5nKHNlbGVj
dGVkX2xvZ19sZXZlbD0naW5mbycpOgogICAgICAgICBsb2dfbGV2ZWwgPSBsb2dnaW5nLmdldExl
dmVsTmFtZShMT0dfTUVTU0FHRSkKIAogICAgIGhhbmRsZXIgPSBMb2dIYW5kbGVyKHN5cy5zdGRv
dXQpCi0gICAgbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCisgICAgbG9nZ2Vy
ID0gbG9nZ2luZy5nZXRMb2dnZXIoKQogICAgIGxvZ2dlci5hZGRIYW5kbGVyKGhhbmRsZXIpCiAg
ICAgbG9nZ2VyLnNldExldmVsKGxvZ19sZXZlbCkKICAgICByZXR1cm4gaGFuZGxlcgpkaWZmIC0t
Z2l0IGEvVG9vbHMvU2NyaXB0cy9ydW4tanNjLWJlbmNobWFya3MgYi9Ub29scy9TY3JpcHRzL3J1
bi1qc2MtYmVuY2htYXJrcwppbmRleCAwNDAwNDM0N2FiZGY4YWJmMDQ4MzA4OTQ2ZTQ5MTkwYzBl
NGEyY2Q0Li41ZTAxNzhlMGQ4ZDZlYWU3OGE1MzQwZTg5YzEwNWIyZmM5NWE3YWRjIDEwMDc1NQot
LS0gYS9Ub29scy9TY3JpcHRzL3J1bi1qc2MtYmVuY2htYXJrcworKysgYi9Ub29scy9TY3JpcHRz
L3J1bi1qc2MtYmVuY2htYXJrcwpAQCAtMjM3LDYgKzIzNyw3IEBAICRpbmNsdWRlU2l4U3BlZWQg
PSBmYWxzZQogJGluY2x1ZGVUYWlsQmVuY2ggPSB0cnVlCiAkaW5jbHVkZUJpZ0ludEJlbmNoID0g
ZmFsc2UKICRpbmNsdWRlUHJpdmF0ZUZpZWxkc0JlbmNoID0gZmFsc2UKKyRsZGQ9bmlsCiAkbWVh
c3VyZUdDPWZhbHNlCiAkYmVuY2htYXJrUGF0dGVybj1uaWwKICR2ZXJib3NpdHk9MApAQCAtMTQx
MywxOCArMTQxNCwzOCBAQCBjbGFzcyBWTQogICAgIEBleHRyYUVudltrZXldID0gdmFsCiAgICAg
QEBleHRyYUVudlNldFtrZXldID0gdHJ1ZQogICBlbmQKLSAgCisKKyAgZGVmIGNvcHlJbnRvQmVu
Y2hQYXRoQnVuZGxlKGJhc2VuYW1lLCBvdXRwdXRkaXIpCisgICAgYnVuZGxlX2JpbmFyeSA9IChT
Q1JJUFRfUEFUSC5kaXJuYW1lICsgJ2J1bmRsZS1iaW5hcnknKS5yZWFscGF0aAorICAgIGNtZCA9
IFNoZWxsd29yZHMuam9pbihbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVuZGxlX2Jp
bmFyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1kZXN0LWRpcicsIG91dHB1dGRp
ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBAcGF0aAorICAgICAgICAgICAgICAgICAg
ICAgICAgICBdKQorICAgICRzdGRlcnIucHV0cyAiPj4gI3tjbWR9IiBpZiAkdmVyYm9zaXR5Pj0y
CisgICAgcmFpc2UgdW5sZXNzIHN5c3RlbShjbWQpCisgICAgQHBhdGggPSAiI3tiYXNlbmFtZX0v
anNjIgorICBlbmQKKwogICBkZWYgY29weUludG9CZW5jaFBhdGgKICAgICByYWlzZSB1bmxlc3Mg
Y2FuQ29weUludG9CZW5jaFBhdGgKICAgICBiYXNlbmFtZSwgZmlsZW5hbWUgPSBCZW5jaGZpbGUu
dW5pcXVlRmlsZW5hbWUoInZtIikKICAgICByYWlzZSB1bmxlc3MgRGlyLm1rZGlyKGZpbGVuYW1l
KQorICAgIGlmIG5vdCAkcmVtb3RlSG9zdHMuZW1wdHk/IGFuZCBgdW5hbWVgID09ICdMaW51eCcK
KyAgICAgIGNvcHlJbnRvQmVuY2hQYXRoQnVuZGxlKGJhc2VuYW1lLCBTaGVsbHdvcmRzLnNoZWxs
ZXNjYXBlKGZpbGVuYW1lLnRvX3MpKQorICAgICAgcmV0dXJuCisgICAgZW5kCisKICAgICBAbGli
UGF0aC5lYWNoIHsKICAgICAgIHwgbGliUGF0aFBhcnQgfAogICAgICAgY21kID0gImNwIC1hICN7
U2hlbGx3b3Jkcy5zaGVsbGVzY2FwZShsaWJQYXRoUGFydCl9LyogI3tTaGVsbHdvcmRzLnNoZWxs
ZXNjYXBlKGZpbGVuYW1lLnRvX3MpfSIKICAgICAgICRzdGRlcnIucHV0cyAiPj4gI3tjbWR9IiBp
ZiAkdmVyYm9zaXR5Pj0yCiAgICAgICByYWlzZSB1bmxlc3Mgc3lzdGVtKGNtZCkKICAgICB9Ci0g
ICAgQHBhdGggPSAiI3tiYXNlbmFtZX0vI3tAcmVsYXRpdmVCaW5QYXRofSIKKyAgICBjbWQgPSAi
Y3AgLWEgI3tAcGF0aH0gI3tTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKGZpbGVuYW1lLnRvX3MpfSIK
KyAgICAkc3RkZXJyLnB1dHMgIj4+ICN7Y21kfSIgaWYgJHZlcmJvc2l0eT49MgorICAgIHJhaXNl
IHVubGVzcyBzeXN0ZW0oY21kKQorICAgIEBwYXRoID0gIiN7YmFzZW5hbWV9L2pzYyIKICAgICBA
bGliUGF0aCA9IFtiYXNlbmFtZV0KICAgZW5kCiAgIApAQCAtMjM4OSw3ICsyNDEwLDE3IEBAIGRl
ZiB3cmFwKHN0ciwgY29sdW1ucykKICAgfQogICByZXN1bHQgKyBjdXJMaW5lICsgIlxuIgogZW5k
Ci0gIAorCitkZWYgZXhwb3J0SlNDRW52aXJvbm1lbnRWYXJpYWJsZXMKKyAgYnVmID0gIiIKKyAg
RU5WLmVhY2ggeworICAgIHwgbmFtZSwgdmFsdWUgfAorICAgIG5leHQgdW5sZXNzIG5hbWUuc3Rh
cnRfd2l0aD8oIkpTQ18iKQorICAgIGJ1ZiA8PCAiZXhwb3J0ICN7bmFtZX09I3tTaGVsbHdvcmRz
LnNoZWxsZXNjYXBlKHZhbHVlKX1cbiIKKyAgfQorICBidWYKK2VuZAorCiBkZWYgcnVuQW5kR2V0
UmVzdWx0cwogICByZXN1bHRzID0gbmlsCiAgIERpci5jaGRpcihCRU5DSF9EQVRBX1BBVEgpIHsK
QEAgLTMwNTUsNiArMzA4Niw4IEBAIGJlZ2luCiAgICAgICAkZGVwZW5kZW5jaWVzLnB1c2goUGF0
aG5hbWUubmV3KGFyZykucmVhbHBhdGgpCiAgICAgd2hlbiAnLS1jb25maWcnCiAgICAgICAkY29u
ZmlnUGF0aCA9IFBhdGhuYW1lLm5ldyhhcmcpCisgICAgd2hlbiAnLS1sZGQnCisgICAgICAkbGRk
ID0gYXJnCiAgICAgd2hlbiAnLS1oZWxwJwogICAgICAgdXNhZ2UKICAgICBlbHNlCkBAIC0zNjEx
LDYgKzM2NDQsNyBAQCBiZWdpbgogICBpZiAkcHJlcGFyZQogICAgIEZpbGUub3BlbigiI3tCRU5D
SF9EQVRBX1BBVEh9L3J1bnNjcmlwdCIsICJ3IikgewogICAgICAgfCBmaWxlIHwKKyAgICAgIGZp
bGUucHV0cyBleHBvcnRKU0NFbnZpcm9ubWVudFZhcmlhYmxlcwogICAgICAgZmlsZS5wdXRzICJl
Y2hvIC1lIFwiSE9TVE5BTUU6XFxjXCIiCiAgICAgICBmaWxlLnB1dHMgImhvc3RuYW1lIgogICAg
ICAgZmlsZS5wdXRzICJlY2hvIgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9ydW4tanNjLXN0
cmVzcy10ZXN0cyBiL1Rvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMKaW5kZXggYzky
YTM5MDk5NjAwYmNhMmMzNWRlZmMyZTNhOGQyM2UzMTBlZmNkMy4uY2YwN2QyM2U4YzYyMjdmYzk0
ZTczNDkyNmRiYTA4NGU3Njc3ZWE0YyAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy9ydW4tanNj
LXN0cmVzcy10ZXN0cworKysgYi9Ub29scy9TY3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzCkBA
IC0xOTE5LDM3ICsxOTE5LDIyIEBAIGRlZiBwcmVwYXJlQnVuZGxlCiAgICAgICAgICAgICBlbmQK
IAogICAgICAgICAgICAgaWYgJHJlbW90ZSBhbmQgJGhvc3RPUyA9PSAibGludXgiCi0gICAgICAg
ICAgICAgICAgZ2VuZXJhdGVfYnVuZGxlID0gKFBhdGhuYW1lLm5ldyhUSElTX1NDUklQVF9QQVRI
KS5kaXJuYW1lICsgJ2dlbmVyYXRlLWJ1bmRsZScpLnJlYWxwYXRoCisgICAgICAgICAgICAgICAg
YnVuZGxlX2JpbmFyeSA9IChQYXRobmFtZS5uZXcoVEhJU19TQ1JJUFRfUEFUSCkuZGlybmFtZSAr
ICdidW5kbGUtYmluYXJ5JykucmVhbHBhdGgKICAgICAgICAgICAgICAgICBEaXIubWt0bXBkaXIg
ewogICAgICAgICAgICAgICAgICAgICB8IHRtcGRpciB8CiAgICAgICAgICAgICAgICAgICAgICMg
R2VuZXJhdGUgYnVuZGxlIGluIGEgdGVtcG9yYXJ5IGRpcmVjdG9yeSBzbyB0aGF0CiAgICAgICAg
ICAgICAgICAgICAgICMgd2UgY2FuIHNhZmVseSBwaWNrIGl0IHVwIHJlZ2FyZGxlc3Mgb2YgaXRz
IG5hbWUKICAgICAgICAgICAgICAgICAgICAgIyAoaXQncyB0aGUgb25seSB6aXAgZmlsZSB0aGVy
ZSkuCiAgICAgICAgICAgICAgICAgICAgIGNtZGxpbmUgPSBbCi0gICAgICAgICAgICAgICAgICAg
ICAgICBnZW5lcmF0ZV9idW5kbGUudG9fcywKLSAgICAgICAgICAgICAgICAgICAgICAgICItLXBs
YXRmb3JtPWd0ayIsCi0gICAgICAgICAgICAgICAgICAgICAgICAiLS1idW5kbGU9anNjIiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICItLXN5c2xpYnM9YnVuZGxlLWFsbCIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAiLS1uby1zdHJpcCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAiLS1j
b21wcmVzc2lvbj10YXIueHoiLAotICAgICAgICAgICAgICAgICAgICAgICAgKCRidWlsZFR5cGUg
PT0gInJlbGVhc2UiKSA/ICItLXJlbGVhc2UiIDogIi0tZGVidWciLAotICAgICAgICAgICAgICAg
ICAgICAgICAgIi0tZGVzdGluYXRpb249I3t0bXBkaXJ9IgorICAgICAgICAgICAgICAgICAgICAg
ICAgYnVuZGxlX2JpbmFyeS50b19zLAorICAgICAgICAgICAgICAgICAgICAgICAgIi0tZGVzdC1k
aXI9I3skanNjUGF0aC5kaXJuYW1lfSIsCisgICAgICAgICAgICAgICAgICAgICAgICAiLS1sb2ct
bGV2ZWw9ZGVidWciLAorICAgICAgICAgICAgICAgICAgICAgICAgJGpzY1BhdGgudG9fcwogICAg
ICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCAkbGRkLm5pbD8K
ICAgICAgICAgICAgICAgICAgICAgICAgIGNtZGxpbmUgPDwgIi0tbGRkPSN7JGxkZH0iCiAgICAg
ICAgICAgICAgICAgICAgIGVuZAogICAgICAgICAgICAgICAgICAgICBteXN5cyhjbWRsaW5lKQot
ICAgICAgICAgICAgICAgICAgICBhcmNoaXZlcyA9IERpci5nbG9iKCIje3RtcGRpcn0vKi50YXIu
eHoiKQotICAgICAgICAgICAgICAgICAgICBpZiBhcmNoaXZlcy5zaXplICE9IDEKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHJhaXNlICJFeHBlY3RlZCBleGFjdGx5IG9uZSBlbnRyeSBpbiB0bXBk
aXIsIG5vdCAje2FyY2hpdmVzfSIKLSAgICAgICAgICAgICAgICAgICAgZW5kCi0gICAgICAgICAg
ICAgICAgICAgICMgTm90ZTogd2Ugb3ZlcndyaXRlICdqc2MnLiBUaGlzIG9idmlvdXNseSBjb25m
bGljdHMgd2l0aAotICAgICAgICAgICAgICAgICAgICAjICFjb3B5Vk0gYnV0LCB0aGVuIGdhaW4s
IHNvIGRvZXMgJHJlbW90ZS4KLSAgICAgICAgICAgICAgICAgICAgbXlzeXMoWyJ0YXIiLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIi1DIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICRqc2NQYXRoLmRpcm5hbWUudG9fcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICIteGYi
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJjaGl2ZXNbMF1dKQogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIGVuZAogICAgICAgICB9CmRpZmYgLS1naXQgYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2JpbmFyeV9idW5kbGluZy9fX2luaXRfXy5weSBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvYmluYXJ5X2J1bmRsaW5nL19faW5pdF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIzNzZiZjJi
ZWEyYjZhZjVjZTc5ZDNlM2QzM2M3M2FkZWM0MzRmMTgKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2JpbmFyeV9idW5kbGluZy9fX2luaXRfXy5weQpAQCAtMCwwICsx
LDEzIEBACisjIFJlcXVpcmVkIGZvciBQeXRob24gdG8gc2VhcmNoIHRoaXMgZGlyZWN0b3J5IGZv
ciBtb2R1bGUgZmlsZXMKKworIyBLZWVwIHRoaXMgZmlsZSBmcmVlIG9mIGFueSBjb2RlIG9yIGlt
cG9ydCBzdGF0ZW1lbnRzIHRoYXQgY291bGQKKyMgY2F1c2UgZWl0aGVyIGFuIGVycm9yIHRvIG9j
Y3VyIG9yIGEgbG9nIG1lc3NhZ2UgdG8gYmUgbG9nZ2VkLgorIyBUaGlzIGVuc3VyZXMgdGhhdCBj
YWxsaW5nIGNvZGUgY2FuIGltcG9ydCBpbml0aWFsaXphdGlvbiBjb2RlIGZyb20KKyMgd2Via2l0
cHkgYmVmb3JlIGFueSBlcnJvcnMgb3IgbG9nIG1lc3NhZ2VzIGR1ZSB0byBjb2RlIGluIHRoaXMg
ZmlsZS4KKyMgSW5pdGlhbGl6YXRpb24gY29kZSBjYW4gaW5jbHVkZSB0aGluZ3MgbGlrZSB2ZXJz
aW9uLWNoZWNraW5nIGNvZGUgYW5kCisjIGxvZ2dpbmcgY29uZmlndXJhdGlvbiBjb2RlLgorIwor
IyBXZSBkbyBub3QgZXhlY3V0ZSBhbnkgdmVyc2lvbi1jaGVja2luZyBjb2RlIG9yIGxvZ2dpbmcg
Y29uZmlndXJhdGlvbgorIyBjb2RlIGluIHRoaXMgZmlsZSBzbyB0aGF0IGNhbGxlcnMgY2FuIG9w
dC1pbiBhcyB0aGV5IHdhbnQuICBUaGlzIGFsc28KKyMgYWxsb3dzIGRpZmZlcmVudCBjYWxsZXJz
IHRvIGNob29zZSBkaWZmZXJlbnQgaW5pdGlhbGl6YXRpb24gY29kZSwKKyMgYXMgbmVjZXNzYXJ5
LgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9iaW5hcnlfYnVuZGxpbmcvYnVu
ZGxlLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9iaW5hcnlfYnVuZGxpbmcvYnVuZGxlLnB5
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjUwZTE2ZDIyZDNmYjk0YmVhYTg0MmUwMDU4NWVmZDUzOGJlZWZiZWMKLS0t
IC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2JpbmFyeV9idW5kbGluZy9i
dW5kbGUucHkKQEAgLTAsMCArMSw3NSBAQAoraW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCBvcworaW1w
b3J0IHNodXRpbAoraW1wb3J0IHN1YnByb2Nlc3MKKworX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2Vy
KF9fbmFtZV9fKQorCisKK2NsYXNzIEJpbmFyeUJ1bmRsZXI6CisgICAgVkFSX01ZRElSID0gJ01Z
RElSJworICAgIFZBUl9JTlRFUlBSRVRFUiA9ICdJTlRFUlBSRVRFUicKKworICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBkZXN0aW5hdGlvbl9kaXIsIHNob3VsZF9zdHJpcF9vYmplY3RzKToKKyAgICAg
ICAgaWYgc2h1dGlsLndoaWNoKCdwYXRjaGVsZicpIGlzIE5vbmU6CisgICAgICAgICAgICBfbG9n
LmVycm9yKCJDb3VsZCBub3QgZmluZCBgcGF0Y2hlbGZgIGluICRQQVRIIikKKyAgICAgICAgICAg
IHJhaXNlIEV4Y2VwdGlvbigiTWlzc2luZyByZXF1aXJlZCBiaW5hcnkgYHBhdGNoZWxmYCIpCisg
ICAgICAgIHNlbGYuX2Rlc3RpbmF0aW9uX2RpciA9IGRlc3RpbmF0aW9uX2RpcgorICAgICAgICBz
ZWxmLl9zaG91bGRfc3RyaXBfb2JqZWN0cyA9IHNob3VsZF9zdHJpcF9vYmplY3RzCisKKyAgICBk
ZWYgZGVzdGluYXRpb25fZGlyKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fZGVzdGluYXRp
b25fZGlyCisKKyAgICBkZWYgY29weV9hbmRfcmVtb3ZlX3JwYXRoKHNlbGYsIG9yaWdfZmlsZSwg
dHlwZT0nYmluJywgZGVzdGluYXRpb25fZGlyPU5vbmUpOgorICAgICAgICBkaXJfc3VmZml4ID0g
J2xpYicgaWYgdHlwZSA9PSAnaW50ZXJwcmV0ZXInIGVsc2UgdHlwZQorICAgICAgICBkZXN0aW5h
dGlvbl9kaXIgPSBvcy5wYXRoLmpvaW4oc2VsZi5fZGVzdGluYXRpb25fZGlyLCBkaXJfc3VmZml4
KQorICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2RpcihkZXN0aW5hdGlvbl9kaXIpOgorICAgICAg
ICAgICAgb3MubWFrZWRpcnMoZGVzdGluYXRpb25fZGlyKQorCisgICAgICAgIGlmIG5vdCBvcy5w
YXRoLmlzZmlsZShvcmlnX2ZpbGUpOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignQ2Fu
IG5vdCBmaW5kIGZpbGUgJXMnICUgb3JpZ19maWxlKQorCisgICAgICAgIF9sb2cuaW5mbygnQWRk
IHRvIGJ1bmRsZSBbJXNdOiAlcycgJSAodHlwZSwgb3JpZ19maWxlKSkKKyAgICAgICAgdHJ5Ogor
ICAgICAgICAgICAgc2h1dGlsLmNvcHkob3JpZ19maWxlLCBkZXN0aW5hdGlvbl9kaXIpCisgICAg
ICAgIGV4Y2VwdCBzaHV0aWwuU2FtZUZpbGVFcnJvcjoKKyAgICAgICAgICAgICMgTWF5IHJlYXNv
bmFibHkgaGFwcGVuIGlmIHRoZSBjYWxsZXIgdHJpZXMgdG8gYnVuZGxlIHRoZSBmaWxlcyAnaW4g
cGxhY2UnLgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIHBhdGNoX2VsZl9jb21tYW5kID0g
WydwYXRjaGVsZicsICctLXJlbW92ZS1ycGF0aCcsIG9zLnBhdGguam9pbihkZXN0aW5hdGlvbl9k
aXIsIG9zLnBhdGguYmFzZW5hbWUob3JpZ19maWxlKSldCisgICAgICAgIGlmIHN1YnByb2Nlc3Mu
Y2FsbChwYXRjaF9lbGZfY29tbWFuZCkgIT0gMDoKKyAgICAgICAgICAgIF9sb2cuZXJyb3IoJ1Ro
ZSBwYXRjaGVsZiBjb21tYW5kIHJldHVybmVkIG5vbi16ZXJvIHN0YXR1cycpCisKKyAgICAgICAg
aWYgc2VsZi5fc2hvdWxkX3N0cmlwX29iamVjdHM6CisgICAgICAgICAgICBpZiBzaHV0aWwud2hp
Y2goJ3N0cmlwJyk6CisgICAgICAgICAgICAgICAgc3RyaXBfY29tbWFuZCA9IFsnc3RyaXAnLCAn
LS1zdHJpcC11bm5lZWRlZCcsIG9zLnBhdGguam9pbihkZXN0aW5hdGlvbl9kaXIsIG9zLnBhdGgu
YmFzZW5hbWUob3JpZ19maWxlKSldCisgICAgICAgICAgICAgICAgaWYgc3VicHJvY2Vzcy5jYWxs
KHN0cmlwX2NvbW1hbmQpICE9IDA6CisgICAgICAgICAgICAgICAgICAgIF9sb2cuZXJyb3IoJ1Ro
ZSBzdHJpcCBjb21tYW5kIHJldHVybmVkIG5vbi16ZXJvIHN0YXR1cycpCisgICAgICAgICAgICBl
bHNlOgorICAgICAgICAgICAgICAgIF9sb2cud2FybmluZygnc3RyaXAgbm90IGZvdW5kLiBOb3Qg
c3RyaXBwaW5nIG9iamVjdCcpCisKKyAgICBkZWYgZ2VuZXJhdGVfd3JhcHBlcl9zY3JpcHQoc2Vs
ZiwgaW50ZXJwcmV0ZXIsIGJpbmFyeV90b193cmFwLCBleHRyYV9lbnZpcm9ubWVudF92YXJpYWJs
ZXM9e30pOgorICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKHNlbGYu
X2Rlc3RpbmF0aW9uX2RpciwgJ2JpbicsIGJpbmFyeV90b193cmFwKSk6CisgICAgICAgICAgICBy
YWlzZSBSdW50aW1lRXJyb3IoJ0Nhbm5vdCBmaW5kIGJpbmFyeSB0byB3cmFwIGZvciAlcycgJSBi
aW5hcnlfdG9fd3JhcCkKKyAgICAgICAgX2xvZy5pbmZvKCdHZW5lcmF0ZSB3cmFwcGVyIHNjcmlw
dCAlcycgJSBiaW5hcnlfdG9fd3JhcCkKKyAgICAgICAgc2NyaXB0X2ZpbGUgPSBvcy5wYXRoLmpv
aW4oc2VsZi5fZGVzdGluYXRpb25fZGlyLCBiaW5hcnlfdG9fd3JhcCkKKworICAgICAgICB3aXRo
IG9wZW4oc2NyaXB0X2ZpbGUsICd3JykgYXMgc2NyaXB0X2hhbmRsZToKKyAgICAgICAgICAgIHNj
cmlwdF9oYW5kbGUud3JpdGUoJyMhL2Jpbi9zaFxuJykKKyAgICAgICAgICAgIHNjcmlwdF9oYW5k
bGUud3JpdGUoJyVzPSIkKGRpcm5hbWUgJChyZWFkbGluayAtZiAkMCkpIlxuJyAlIHNlbGYuVkFS
X01ZRElSKQorICAgICAgICAgICAgc2NyaXB0X2hhbmRsZS53cml0ZSgnZXhwb3J0IExEX0xJQlJB
UllfUEFUSD0iJHslc30vbGliIlxuJyAlIHNlbGYuVkFSX01ZRElSKQorCisgICAgICAgICAgICBp
ZiBpbnRlcnByZXRlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBzY3JpcHRfaGFuZGxl
LndyaXRlKCdJTlRFUlBSRVRFUj0iJHslc30vbGliLyVzIlxuJyAlIChzZWxmLlZBUl9NWURJUiwg
b3MucGF0aC5iYXNlbmFtZShpbnRlcnByZXRlcikpKQorCisgICAgICAgICAgICAjIE1heSB1c2Ug
dGhlIHZhbHVlIG9mIElOVEVSUFJFVEVSLCBzbyBoYXMgdG8gY29tZSBhZnRlcgorICAgICAgICAg
ICAgIyB0aGUgZGVmaW5pdGlvbi4KKyAgICAgICAgICAgIGZvciB2YXIsIHZhbHVlIGluIGV4dHJh
X2Vudmlyb25tZW50X3ZhcmlhYmxlcy5pdGVtcygpOgorICAgICAgICAgICAgICAgIHNjcmlwdF9o
YW5kbGUud3JpdGUoJ2V4cG9ydCAlcz1cIiVzXCJcbicgJSAodmFyLCB2YWx1ZSkpCisKKyAgICAg
ICAgICAgIGlmIGludGVycHJldGVyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHNjcmlw
dF9oYW5kbGUud3JpdGUoJ2V4ZWMgIiR7SU5URVJQUkVURVJ9IiAiJHslc30vYmluLyVzIiAiJEAi
XG4nICUgKHNlbGYuVkFSX01ZRElSLCBiaW5hcnlfdG9fd3JhcCkpCisgICAgICAgICAgICBlbHNl
OgorICAgICAgICAgICAgICAgIHNjcmlwdF9oYW5kbGUud3JpdGUoJ2V4ZWMgIiR7JXN9L2Jpbi8l
cyIgIiRAIlxuJyAlIChzZWxmLlZBUl9NWURJUiwgYmluYXJ5X3RvX3dyYXApKQorCisgICAgICAg
IG9zLmNobW9kKHNjcmlwdF9maWxlLCAwbzc1NSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvYmluYXJ5X2J1bmRsaW5nL2xkZC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
YmluYXJ5X2J1bmRsaW5nL2xkZC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYTk5ZDZlMWRiNmQwOTg4YTMzNzNk
ZWU0YzI4YWE4YjM1NjE2NGEzCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9iaW5hcnlfYnVuZGxpbmcvbGRkLnB5CkBAIC0wLDAgKzEsODcgQEAKK2ltcG9ydCBsb2dn
aW5nCitmcm9tIHBhdGhsaWIgaW1wb3J0IFB1cmVQYXRoCitpbXBvcnQgb3MKK2ltcG9ydCBzaHV0
aWwKK2ltcG9ydCBzdWJwcm9jZXNzCisKK19sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVf
XykKKworCitjbGFzcyBTaGFyZWRPYmplY3RSZXNvbHZlcigpOgorICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCBsZGQpOgorICAgICAgICBzZWxmLl9sZGQgPSBsZGQKKyAgICAgICAgaWYgc2h1dGlsLndo
aWNoKCdwYXRjaGVsZicpIGlzIE5vbmU6CisgICAgICAgICAgICBfbG9nLmVycm9yKCJDb3VsZCBu
b3QgZmluZCBgcGF0Y2hlbGZgIGluICRQQVRIIikKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlv
bigiTWlzc2luZyByZXF1aXJlZCBiaW5hcnkgYHBhdGNoZWxmYCIpCisKKyAgICBkZWYgX3J1bl9j
bWRfYW5kX2dldF9vdXRwdXQoc2VsZiwgY29tbWFuZCk6CisgICAgICAgIF9sb2cuZGVidWcoIkVY
RUMgJXMiICUgY29tbWFuZCkKKyAgICAgICAgY29tbWFuZF9wcm9jZXNzID0gc3VicHJvY2Vzcy5Q
b3Blbihjb21tYW5kLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLCBzdGRlcnI9c3VicHJvY2Vzcy5T
VERPVVQsIGVuY29kaW5nPSd1dGYtOCcpCisgICAgICAgIHN0ZG91dCwgc3RkZXJyID0gY29tbWFu
ZF9wcm9jZXNzLmNvbW11bmljYXRlKCkKKyAgICAgICAgcmV0dXJuIGNvbW1hbmRfcHJvY2Vzcy5y
ZXR1cm5jb2RlLCBzdGRvdXQsIHN0ZGVycgorCisgICAgZGVmIF9nZXRfaW50ZXJwcmV0ZXJfb2Jq
bmFtZShzZWxmLCBvYmplY3QpOgorICAgICAgICAjIE5vdGU6IHdlIHVzZSBwYXRjaGVsZiB0byBn
ZXQgdGhlIG9iamVjdCBuYW1lIChub3QgdGhlIHBhdGghKQorICAgICAgICAjIG9mIHRoZSBpbnRl
cnByZXRlciBiZWNhdXNlIHRoaXMgd29ya3MgcmVnYXJkbGVzcyBvZiB0aGUKKyAgICAgICAgIyBh
cmNoaXRlY3R1cmUgb2YgdGhlIEVMRiBmaWxlLgorICAgICAgICByZXRjb2RlLCBzdGRvdXQsIHN0
ZGVyciA9IHNlbGYuX3J1bl9jbWRfYW5kX2dldF9vdXRwdXQoWydwYXRjaGVsZicsICctLXByaW50
LWludGVycHJldGVyJywgb2JqZWN0XSkKKyAgICAgICAgaWYgcmV0Y29kZSAhPSAwOgorICAgICAg
ICAgICAgX2xvZy5kZWJ1ZygicGF0Y2hlbGYgc3Rkb3V0OlxuJXNcblBhdGNoZWxmIHN0ZGVycjpc
biVzIiAlIChzdGRvdXQsIHN0ZGVycikpCisgICAgICAgICAgICBpZiAnY2Fubm90IGZpbmQgc2Vj
dGlvbicgaW4gc3Rkb3V0OgorICAgICAgICAgICAgICAgICMgVGhpcyBpcyBmaW5lOyB3ZSBvbmx5
IGV4cGVjdCBhbiBpbnRlcnByZXRlciBpbiB0aGUgbWFpbiBiaW5hcnkuCisgICAgICAgICAgICAg
ICAgcmV0dXJuIE5vbmUKKyAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignVGhlIHBhdGNo
ZWxmIGNvbW1hbmQgcmV0dXJuZWQgbm9uLXplcm8gc3RhdHVzIGZvciBvYmplY3QgJXMnICUgb2Jq
ZWN0KQorICAgICAgICBpbnRlcnByZXRlcl9wYXRoID0gUHVyZVBhdGgoc3Rkb3V0LnN0cmlwKCkp
CisgICAgICAgIHJldHVybiBpbnRlcnByZXRlcl9wYXRoLm5hbWUKKworICAgIGRlZiBfZ2V0X2xp
YnNfYW5kX2ludGVycHJldGVyKHNlbGYsIG9iamVjdCk6CisgICAgICAgIGludGVycHJldGVyID0g
Tm9uZQorICAgICAgICByZXRjb2RlLCBzdGRvdXQsIHN0ZGVyciA9IHNlbGYuX3J1bl9jbWRfYW5k
X2dldF9vdXRwdXQoW3NlbGYuX2xkZCwgb2JqZWN0XSkKKyAgICAgICAgX2xvZy5kZWJ1ZygibGRk
IHN0ZG91dDpcbiVzIiAlIHN0ZG91dCkKKyAgICAgICAgaWYgcmV0Y29kZSAhPSAwOgorICAgICAg
ICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdUaGUgJXMgY29tbWFuZCByZXR1cm5lZCBub24temVy
byBzdGF0dXMgZm9yIG9iamVjdCAlcycgJSAoc2VsZi5fbGRkLCBvYmplY3QpKQorICAgICAgICBs
aWJzID0gW10KKyAgICAgICAgZm9yIGxpbmUgaW4gc3Rkb3V0LnNwbGl0bGluZXMoKToKKyAgICAg
ICAgICAgIGxpbmUgPSBsaW5lLnN0cmlwKCkKKyAgICAgICAgICAgIGlmICc9PicgaW4gbGluZToK
KyAgICAgICAgICAgICAgICBsaW5lID0gbGluZS5zcGxpdCgnPT4nKVsxXS5zdHJpcCgpCisgICAg
ICAgICAgICAgICAgaWYgJ25vdCBmb3VuZCcgaW4gbGluZToKKyAgICAgICAgICAgICAgICAgICAg
cmFpc2UgUnVudGltZUVycm9yKCdsZGQgY2FuIG5vdCByZXNvbHZlIGFsbCBkZXBlbmRlbmNpZXMg
Zm9yIG9iamVjdCAlcy4nICUgb2JqZWN0KQorICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lLnNw
bGl0KCcgJylbMF0uc3RyaXAoKQorICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKGxp
bmUpOgorICAgICAgICAgICAgICAgICAgICBsaWJzLmFwcGVuZChsaW5lKQorICAgICAgICAgICAg
ZWxzZToKKyAgICAgICAgICAgICAgICBsaW5lID0gbGluZS5zcGxpdCgnICcpWzBdLnN0cmlwKCkK
KyAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShsaW5lKToKKyAgICAgICAgICAgICAg
ICAgICAgaW50ZXJwcmV0ZXIgPSBsaW5lCisgICAgICAgIGlmIGludGVycHJldGVyIGlzIE5vbmU6
CisgICAgICAgICAgICAjIFRoaXMgaXMgdGhlIGNhc2UgZm9yIG5vbi1uYXRpdmUgYmluYXJpZXMu
IEZvciB0aG9zZSwgd2UKKyAgICAgICAgICAgICMgY2FuIHVzZSBhIGNyb3NzLWxkZCAoeGxkZCks
IGJ1dCB0aGVuIHRoZSBpbnRlcnByZXRlcgorICAgICAgICAgICAgIyBsb29rcyBsaWtlIGFueSBv
dGhlciBzaGFyZWQgb2JqZWN0IGluIHRoZSBvdXRwdXQgb2YKKyAgICAgICAgICAgICMgbGRkLiBU
cnkgdG8gaWRlbnRpZnkgaXQgYnkgbG9va2luZyBhdCB0aGUgb2JqZWN0IG5hbWUKKyAgICAgICAg
ICAgICMgZnJvbSB0aGUgaW50ZXJwcmV0ZXIgc3RyaW5nLgorICAgICAgICAgICAgaW50ZXJwcmV0
ZXJfb2JqbmFtZSA9IHNlbGYuX2dldF9pbnRlcnByZXRlcl9vYmpuYW1lKG9iamVjdCkKKyAgICAg
ICAgICAgIGZvciBsaWIgaW4gbGliczoKKyAgICAgICAgICAgICAgICBpZiBQdXJlUGF0aChsaWIp
Lm5hbWUgPT0gaW50ZXJwcmV0ZXJfb2JqbmFtZToKKyAgICAgICAgICAgICAgICAgICAgaW50ZXJw
cmV0ZXIgPSBsaWIKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICMgSWYg
d2UgZm91bmQgYW4gaW50ZXJwcmV0ZXIsIHJlbW92ZSBpdCBmcm9tIHRoZSBsaWJzLgorICAgICAg
ICAgICAgbGlicyA9IFtsaWIgZm9yIGxpYiBpbiBsaWJzIGlmIGxpYiAhPSBpbnRlcnByZXRlcl0K
KyAgICAgICAgcmV0dXJuIGxpYnMsIGludGVycHJldGVyCisKKyAgICBkZWYgX2xkZF9yZWN1cnNp
dmVfZ2V0X2xpYnNfYW5kX2ludGVycHJldGVyKHNlbGYsIG9iamVjdCwgYWxyZWFkeV9jaGVja2Vk
X2xpYnM9W10pOgorICAgICAgICBsaWJzLCBpbnRlcnByZXRlciA9IHNlbGYuX2dldF9saWJzX2Fu
ZF9pbnRlcnByZXRlcihvYmplY3QpCisgICAgICAgIGlmIGxpYnM6CisgICAgICAgICAgICBmb3Ig
bGliIGluIGxpYnM6CisgICAgICAgICAgICAgICAgaWYgbGliIGluIGFscmVhZHlfY2hlY2tlZF9s
aWJzOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgICMgYXZv
aWQgcmVjdXJzaW9uIGxvb3BzIChsaWJmcmVldHlwZS5zby42IDwtPiBsaWJoYXJmYnV6ei5zby4w
KQorICAgICAgICAgICAgICAgIGFscmVhZHlfY2hlY2tlZF9saWJzLmFwcGVuZChsaWIpCisgICAg
ICAgICAgICAgICAgc3ViX2xpYnMsIHN1Yl9pbnRlcnByZXRlciA9IHNlbGYuX2xkZF9yZWN1cnNp
dmVfZ2V0X2xpYnNfYW5kX2ludGVycHJldGVyKGxpYiwgYWxyZWFkeV9jaGVja2VkX2xpYnMpCisg
ICAgICAgICAgICAgICAgbGlicy5leHRlbmQoc3ViX2xpYnMpCisgICAgICAgICAgICAgICAgaWYg
c3ViX2ludGVycHJldGVyIGFuZCBpbnRlcnByZXRlciBhbmQgc3ViX2ludGVycHJldGVyICE9IGlu
dGVycHJldGVyOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ2xpYnJh
cnkgJXMgaGFzIGludGVycHJldGVyICVzIGJ1dCBvYmplY3QgJXMgaGFzIGludGVycHJldGVyICVz
JyAlIChsaWIsIHN1Yl9pbnRlcnByZXRlciwgb2JqZWN0LCBpbnRlcnByZXRlcikpCisgICAgICAg
IHJldHVybiBsaXN0KHNldChsaWJzKSksIGludGVycHJldGVyCisKKyAgICBkZWYgZ2V0X2xpYnNf
YW5kX2ludGVycHJldGVyKHNlbGYsIG9iamVjdCwgYWxyZWFkeV9jaGVja2VkX2xpYnM9W10pOgor
ICAgICAgICByZXR1cm4gc2VsZi5fbGRkX3JlY3Vyc2l2ZV9nZXRfbGlic19hbmRfaW50ZXJwcmV0
ZXIob2JqZWN0LCBhbHJlYWR5X2NoZWNrZWRfbGlicykK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433319</attachid>
            <date>2021-07-12 08:06:59 -0700</date>
            <delta_ts>2021-07-16 07:25:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227579-20210712150657.patch</filename>
            <type>text/plain</type>
            <size>37528</size>
            <attacher name="Angelos Oikonomopoulos">angelos</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5NDEyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZWVjMjgwYWRmZDU2MGQ5YWY4MmY5MDAxNjkxZWZiMTFk
MDAyNDMwMC4uNGRhOGM1MWQ5Mjk3ZWU3MThiNmY4MTUxNjIyNWYyZTc5YWMzNjFiZiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1
IEBACisyMDIxLTA3LTAyICBBbmdlbG9zIE9pa29ub21vcG91bG9zICA8YW5nZWxvc0BpZ2FsaWEu
Y29tPgorCisgICAgICAgIEJ1bmRsZSBsaWJyYXJpZXMgZm9yIHJlbW90ZSBleGVjdXRpb24gaW4g
cnVuLWpzYy1iZW5jaG1hcmtzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjc1NzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBTaW1pbGFybHkgdG8gcnVuLWpzYy1zdHJlc3MtdGVzdHMsIGludHJvZHVjZSBh
IGJ1bmRsaW5nIHN0ZXAgdGhhdAorICAgICAgICBzaGlwcyBhbGwgbGlicmFyeSBkZXBlbmRlbmNp
ZXMgdG8gdGhlIHJlbW90ZSBzeXN0ZW0gd2hlbiB1c2luZworICAgICAgICBydW4tanNjLWJlbmNo
bWFya3MgLS1yZW1vdGUuCisKKyAgICAgICAgVGhpcyBwYXRjaCBmYWN0b3JzIG91dCB0aGUgY29k
ZSB0bworICAgICAgICAtIGxvb2t1cCB0aGUgRUxGIGludGVycHJldGVyL2xpYnJhcmllcyBhbmQg
dG8KKyAgICAgICAgLSBzdHJpcCB0aGUgcnBhdGggYW5kIGNyZWF0ZSBhIHdyYXBwZXIgc2NyaXB0
CisgICAgICAgIGZyb20gZ2VuZXJhdGUtYnVuZGxlIGFuZCBwbGFjZXMgaXQgd2Via2l0cHkvYmlu
YXJ5X2J1bmRsaW5nLgorCisgICAgICAgIEl0IGFsc28gaW50cm9kdWNlcyBhIHNpbXBsZXIgc2Ny
aXB0IHRoYXQgb25seSBidW5kbGVzIGEgc2luZ2xlCisgICAgICAgIGJpbmFyeSAoYnVuZGxlLWJp
bmFyeSkgYW5kIHN3aXRjaGVzIHJ1bi1qc2MtYmVuY2htYXJrcyBhbmQKKyAgICAgICAgcnVuLWpz
Yy1zdHJlc3MtdGVzdHMgdG8gdXNlIGl0LgorCisgICAgICAgIEl0IGFsc28gdXBkYXRlcyBydW4t
anNjLWJlbmNobWFyayB0byBwcm9wYWdhdGUgYW55IGVudmlyb25tZW50CisgICAgICAgIHZhcmlh
YmxlcyBpbnRlbmRlZCBmb3IgY29uc3VtcHRpb24gYnkgdGhlIEpTQyBiaW5hcnkuCisKKyAgICAg
ICAgKiBTY3JpcHRzL2dlbmVyYXRlLWJ1bmRsZTogRmFjdG9yIG91dCByZXVzYWJsZSBidW5kbGlu
ZyBjb2RlLgorICAgICAgICAqIFNjcmlwdHMvcnVuLWpzYy1iZW5jaG1hcmtzOiBEbyBidW5kbGlu
ZyBhbmQgdmFyaWFibGUgcHJvcGFnYXRpb24uCisgICAgICAgICogU2NyaXB0cy9ydW4tanNjLXN0
cmVzcy10ZXN0czogU3dpdGNoIHRvIGJ1bmRsZS1iaW5hcnkuCisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9iaW5hcnlfYnVuZGxpbmcvX19pbml0X18ucHk6IEFkZGVkLgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvYmluYXJ5X2J1bmRsaW5nL2J1bmRsZS5weTogQWRkZWQuCisgICAgICAg
IChCaW5hcnlCdW5kbGVyKToKKyAgICAgICAgKEJpbmFyeUJ1bmRsZXIuX19pbml0X18pOgorICAg
ICAgICAoQmluYXJ5QnVuZGxlci5kZXN0aW5hdGlvbl9kaXIpOgorICAgICAgICAoQmluYXJ5QnVu
ZGxlci5jb3B5X2FuZF9yZW1vdmVfcnBhdGgpOgorICAgICAgICAoQmluYXJ5QnVuZGxlci5nZW5l
cmF0ZV93cmFwcGVyX3NjcmlwdCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9iaW5hcnlf
YnVuZGxpbmcvbGRkLnB5OiBBZGRlZC4KKyAgICAgICAgKFNoYXJlZE9iamVjdFJlc29sdmVyKToK
KyAgICAgICAgKFNoYXJlZE9iamVjdFJlc29sdmVyLl9faW5pdF9fKToKKyAgICAgICAgKFNoYXJl
ZE9iamVjdFJlc29sdmVyLl9ydW5fY21kX2FuZF9nZXRfb3V0cHV0KToKKyAgICAgICAgKFNoYXJl
ZE9iamVjdFJlc29sdmVyLl9nZXRfaW50ZXJwcmV0ZXJfb2JqbmFtZSk6CisgICAgICAgIChTaGFy
ZWRPYmplY3RSZXNvbHZlci5fZ2V0X2xpYnNfYW5kX2ludGVycHJldGVyKToKKyAgICAgICAgKFNo
YXJlZE9iamVjdFJlc29sdmVyLl9sZGRfcmVjdXJzaXZlX2dldF9saWJzX2FuZF9pbnRlcnByZXRl
cik6CisgICAgICAgIChTaGFyZWRPYmplY3RSZXNvbHZlci5nZXRfbGlic19hbmRfaW50ZXJwcmV0
ZXIpOgorCisgICAgICAgICogU2NyaXB0cy9idW5kbGUtYmluYXJ5OiBBZGRlZC4KKyAgICAgICAg
KiBTY3JpcHRzL2dlbmVyYXRlLWJ1bmRsZToKKyAgICAgICAgKiBTY3JpcHRzL3J1bi1qc2MtYmVu
Y2htYXJrczoKKyAgICAgICAgKiBTY3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzOgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvYmluYXJ5X2J1bmRsaW5nL19faW5pdF9fLnB5OiBBZGRlZC4K
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2JpbmFyeV9idW5kbGluZy9idW5kbGUucHk6IEFk
ZGVkLgorICAgICAgICAoQmluYXJ5QnVuZGxlcik6CisgICAgICAgIChCaW5hcnlCdW5kbGVyLl9f
aW5pdF9fKToKKyAgICAgICAgKEJpbmFyeUJ1bmRsZXIuZGVzdGluYXRpb25fZGlyKToKKyAgICAg
ICAgKEJpbmFyeUJ1bmRsZXIuY29weV9hbmRfcmVtb3ZlX3JwYXRoKToKKyAgICAgICAgKEJpbmFy
eUJ1bmRsZXIuZ2VuZXJhdGVfd3JhcHBlcl9zY3JpcHQpOgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvYmluYXJ5X2J1bmRsaW5nL2xkZC5weTogQWRkZWQuCisgICAgICAgIChTaGFyZWRPYmpl
Y3RSZXNvbHZlcik6CisgICAgICAgIChTaGFyZWRPYmplY3RSZXNvbHZlci5fX2luaXRfXyk6Cisg
ICAgICAgIChTaGFyZWRPYmplY3RSZXNvbHZlci5fcnVuX2NtZF9hbmRfZ2V0X291dHB1dCk6Cisg
ICAgICAgIChTaGFyZWRPYmplY3RSZXNvbHZlci5fZ2V0X2ludGVycHJldGVyX29iam5hbWUpOgor
ICAgICAgICAoU2hhcmVkT2JqZWN0UmVzb2x2ZXIuX2dldF9saWJzX2FuZF9pbnRlcnByZXRlcik6
CisgICAgICAgIChTaGFyZWRPYmplY3RSZXNvbHZlci5fbGRkX3JlY3Vyc2l2ZV9nZXRfbGlic19h
bmRfaW50ZXJwcmV0ZXIpOgorICAgICAgICAoU2hhcmVkT2JqZWN0UmVzb2x2ZXIuZ2V0X2xpYnNf
YW5kX2ludGVycHJldGVyKToKKwogMjAyMS0wNi0yOSAgWmhpZmVpIEZhbmcgIDx6aGlmZWlfZmFu
Z0BhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIG5ldyBhcmd1bWVudCBvZiBkZXZpY2Ugb3MgdmVy
c2lvbiBmb3IgcmVwb3J0aW5nIEphdmFTY3JpcHRDb3JlIHRlc3QgcmVzdWx0CmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL2J1bmRsZS1iaW5hcnkgYi9Ub29scy9TY3JpcHRzL2J1bmRsZS1iaW5h
cnkKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZTc2ZjNmYTAxMjRkZmY1NDg2NTA5YmRmY2YxNjc3YjJiYTVlMzMzMQot
LS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvYnVuZGxlLWJpbmFyeQpAQCAtMCwwICsx
LDU4IEBACisjIS91c3IvYmluL2VudiBweXRob24zCisjIENvcHlyaWdodCAoQykgMjAyMSBJZ2Fs
aWEgUy5MLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisjCisjIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0IG5vdGljZSwgdGhpcworIyAgICBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLAorIyAgICB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0
aW9uCisjICAgIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMKKyMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworIyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQKKyMgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisK
K2ltcG9ydCBhcmdwYXJzZQoraW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCBvcworaW1wb3J0IHN5cwor
Cit0b3BfbGV2ZWxfZGlyZWN0b3J5ID0gb3MucGF0aC5ub3JtcGF0aChvcy5wYXRoLmpvaW4ob3Mu
cGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgJy4uJywgJy4uJykpCitzeXMucGF0aC5pbnNlcnQoMCwg
b3MucGF0aC5qb2luKHRvcF9sZXZlbF9kaXJlY3RvcnksICdUb29scycsICdTY3JpcHRzJywgJ3dl
YmtpdHB5JykpCisKK2Zyb20gYmluYXJ5X2J1bmRsaW5nLmxkZCBpbXBvcnQgU2hhcmVkT2JqZWN0
UmVzb2x2ZXIKK2Zyb20gYmluYXJ5X2J1bmRsaW5nLmJ1bmRsZSBpbXBvcnQgQmluYXJ5QnVuZGxl
cgorCitkZWYgbWFpbigpOgorICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKCd1
c2FnZSAlcHJvZyBbb3B0aW9uc10nKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tbGRkJywg
ZGVzdD0nbGRkJywgZGVmYXVsdD0nbGRkJywgaGVscD0nVXNlIGFsdGVybmF0aXZlIGxkZCAodXNl
ZnVsIGZvciBub24tbmF0aXZlIGJpbmFyaWVzJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCct
LWxvZy1sZXZlbCcsIGRlc3Q9J2xvZ19sZXZlbCcsIGNob2ljZXM9WydkZWJ1ZycsICdpbmZvJywg
J3dhcm5pbmcnLCAnZXJyb3InLCAnY3JpdGljYWwnXSwgZGVmYXVsdD0naW5mbycpCisgICAgcGFy
c2VyLmFkZF9hcmd1bWVudCgnLS1kZXN0LWRpcicsIGRlc3Q9J2Rlc3RfZGlyJywgcmVxdWlyZWQ9
VHJ1ZSkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCdiaW5hcnknKQorICAgIGFyZ3MgPSBwYXJz
ZXIucGFyc2VfYXJncygpCisKKyAgICBsb2dnaW5nLmdldExvZ2dlcigpLnNldExldmVsKGFyZ3Mu
bG9nX2xldmVsLnVwcGVyKCkpCisgICAgbG9nZ2luZy5nZXRMb2dnZXIoKS5hZGRIYW5kbGVyKGxv
Z2dpbmcuU3RyZWFtSGFuZGxlcigpKQorICAgIGxpYnJhcmllcywgaW50ZXJwcmV0ZXIgPSBTaGFy
ZWRPYmplY3RSZXNvbHZlcihhcmdzLmxkZCkuZ2V0X2xpYnNfYW5kX2ludGVycHJldGVyKGFyZ3Mu
YmluYXJ5KQorCisgICAgaWYgaW50ZXJwcmV0ZXIgaXMgTm9uZToKKyAgICAgICAgcmFpc2UgUnVu
dGltZUVycm9yKCJDb3VsZCBub3QgZGV0ZXJtaW5lIGludGVycHJldGVyIGZvciBiaW5hcnkgJXMi
ICUgb2JqZWN0KQorICAgIGJ1bmRsZXIgPSBCaW5hcnlCdW5kbGVyKGFyZ3MuZGVzdF9kaXIsIEZh
bHNlKQorICAgIGJ1bmRsZXIuY29weV9hbmRfcmVtb3ZlX3JwYXRoKGludGVycHJldGVyLCB0eXBl
PSdpbnRlcnByZXRlcicpCisgICAgYnVuZGxlci5jb3B5X2FuZF9yZW1vdmVfcnBhdGgoYXJncy5i
aW5hcnksIHR5cGU9J2JpbicpCisgICAgZm9yIGxpYiBpbiBsaWJyYXJpZXM6CisgICAgICAgIGJ1
bmRsZXIuY29weV9hbmRfcmVtb3ZlX3JwYXRoKGxpYiwgdHlwZT0nbGliJykKKyAgICBidW5kbGVy
LmdlbmVyYXRlX3dyYXBwZXJfc2NyaXB0KGludGVycHJldGVyLCBvcy5wYXRoLmJhc2VuYW1lKGFy
Z3MuYmluYXJ5KSkKKyAgICByZXR1cm4gMAorCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgor
ICAgIHN5cy5leGl0KG1haW4oKSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUt
YnVuZGxlIGIvVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1idW5kbGUKaW5kZXggNzgxYTcwYjljZTRl
NzlkY2FmMTk4M2Y4Y2M2YzVhZWIyMzZiZGZlZi4uYjMyYjk5NmM4YjYyMzNhMDdkOTc0ZDNjZTU2
MzNmZjlkZDI4NWJlOSAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1idW5kbGUK
KysrIGIvVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1idW5kbGUKQEAgLTQwLDkgKzQwLDExIEBAIGlt
cG9ydCB6aXBmaWxlCiB0b3BfbGV2ZWxfZGlyZWN0b3J5ID0gb3MucGF0aC5ub3JtcGF0aChvcy5w
YXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgJy4uJywgJy4uJykpCiBzeXMucGF0
aC5pbnNlcnQoMCwgb3MucGF0aC5qb2luKHRvcF9sZXZlbF9kaXJlY3RvcnksICdUb29scycsICdm
bGF0cGFrJykpCiBzeXMucGF0aC5pbnNlcnQoMCwgb3MucGF0aC5qb2luKHRvcF9sZXZlbF9kaXJl
Y3RvcnksICdUb29scycsICdqaGJ1aWxkJykpCitzeXMucGF0aC5pbnNlcnQoMCwgb3MucGF0aC5q
b2luKHRvcF9sZXZlbF9kaXJlY3RvcnksICdUb29scycsICdTY3JpcHRzJywgJ3dlYmtpdHB5Jykp
CiBpbXBvcnQgamhidWlsZHV0aWxzCiBpbXBvcnQgZmxhdHBha3V0aWxzCi0KK2Zyb20gYmluYXJ5
X2J1bmRsaW5nLmxkZCBpbXBvcnQgU2hhcmVkT2JqZWN0UmVzb2x2ZXIKK2Zyb20gYmluYXJ5X2J1
bmRsaW5nLmJ1bmRsZSBpbXBvcnQgQmluYXJ5QnVuZGxlcgogCiBJTlNUQUxMX0RFUFNfU0NSSVBU
X1RFTVBMQVRFID0gIiIiXAogIyEvYmluL2Jhc2gKQEAgLTEyNyw3ICsxMjksNyBAQCBjbGFzcyBC
dW5kbGVDcmVhdG9yKG9iamVjdCk6CiAgICAgICAgIHNlbGYuX2J1bmRsZV90eXBlID0gYnVuZGxl
X3R5cGUKICAgICAgICAgc2VsZi5fYnVpbGRlcm5hbWUgPSBidWlsZGVyX25hbWUKICAgICAgICAg
c2VsZi5fc3lzbGlicyA9IHN5c2xpYnMKLSAgICAgICAgc2VsZi5fbGRkID0gbGRkCisgICAgICAg
IHNlbGYuX3NoYXJlZF9vYmplY3RfcmVzb2x2ZXIgPSBTaGFyZWRPYmplY3RSZXNvbHZlcihsZGQp
CiAgICAgICAgIHNlbGYuX3Nob3VsZF9zdHJpcF9vYmplY3RzID0gc2hvdWxkX3N0cmlwX29iamVj
dHMKICAgICAgICAgc2VsZi5fY29tcHJlc3Npb25fdHlwZSA9IGNvbXByZXNzaW9uX3R5cGUKICAg
ICAgICAgc2VsZi5fdG1wZGlyID0gTm9uZQpAQCAtMTUxLDc3ICsxNTMsMTYgQEAgY2xhc3MgQnVu
ZGxlQ3JlYXRvcihvYmplY3QpOgogICAgICAgICAgICAgcmV0dXJuIHRlbXBmaWxlLm1rZHRlbXAo
cHJlZml4PW9zLnBhdGguam9pbihvcy5wYXRoLmFic3BhdGgoYmFzZWRpciksICd0bXAnKSkKICAg
ICAgICAgcmV0dXJuIHRlbXBmaWxlLm1rZHRlbXAoKQogCisKICAgICBkZWYgX3J1bl9jbWRfYW5k
X2dldF9vdXRwdXQoc2VsZiwgY29tbWFuZCk6Ci0gICAgICAgIGNvbW1hbmRfcHJvY2VzcyA9IHN1
YnByb2Nlc3MuUG9wZW4oY29tbWFuZCwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwgc3RkZXJyPXN1
YnByb2Nlc3MuU1RET1VULCBlbmNvZGluZz0ndXRmLTgnKQorICAgICAgICBfbG9nLmRlYnVnKCJF
WEVDICVzIiAlIGNvbW1hbmQpCisgICAgICAgIGNvbW1hbmRfcHJvY2VzcyA9IHN1YnByb2Nlc3Mu
UG9wZW4oY29tbWFuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZz0ndXRmLTgnKQogICAgICAgICBzdGRv
dXQsIHN0ZGVyciA9IGNvbW1hbmRfcHJvY2Vzcy5jb21tdW5pY2F0ZSgpCiAgICAgICAgIHJldHVy
biBjb21tYW5kX3Byb2Nlc3MucmV0dXJuY29kZSwgc3Rkb3V0LCBzdGRlcnIKIAotCi0gICAgZGVm
IF9nZXRfaW50ZXJwcmV0ZXJfb2JqbmFtZShzZWxmLCBvYmplY3QpOgotICAgICAgICAjIE5vdGU6
IHdlIHVzZSBwYXRjaGVsZiB0byBnZXQgdGhlIG9iamVjdCBuYW1lIChub3QgdGhlIHBhdGghKQot
ICAgICAgICAjIG9mIHRoZSBpbnRlcnByZXRlciBiZWNhdXNlIHRoaXMgd29ya3MgcmVnYXJkbGVz
cyBvZiB0aGUKLSAgICAgICAgIyBhcmNoaXRlY3R1cmUgb2YgdGhlIEVMRiBmaWxlLgotICAgICAg
ICByZXRjb2RlLCBzdGRvdXQsIHN0ZGVyciA9IHNlbGYuX3J1bl9jbWRfYW5kX2dldF9vdXRwdXQo
WydwYXRjaGVsZicsICctLXByaW50LWludGVycHJldGVyJywgb2JqZWN0XSkKLSAgICAgICAgaWYg
cmV0Y29kZSAhPSAwOgotICAgICAgICAgICAgX2xvZy5kZWJ1ZygicGF0Y2hlbGYgc3Rkb3V0Olxu
JXNcblBhdGNoZWxmIHN0ZGVycjpcbiVzIiAlIChzdGRvdXQsIHN0ZGVycikpCi0gICAgICAgICAg
ICBpZiAnY2Fubm90IGZpbmQgc2VjdGlvbicgaW4gc3Rkb3V0OgotICAgICAgICAgICAgICAgICMg
VGhpcyBpcyBmaW5lOyB3ZSBvbmx5IGV4cGVjdCBhbiBpbnRlcnByZXRlciBpbiB0aGUgbWFpbiBi
aW5hcnkuCi0gICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgICAgIHJhaXNlIFJ1
bnRpbWVFcnJvcignVGhlIHBhdGNoZWxmIGNvbW1hbmQgcmV0dXJuZWQgbm9uLXplcm8gc3RhdHVz
IGZvciBvYmplY3QgJXMnICUgb2JqZWN0KQotICAgICAgICBpbnRlcnByZXRlcl9wYXRoID0gUHVy
ZVBhdGgoc3Rkb3V0LnN0cmlwKCkpCi0gICAgICAgIHJldHVybiBpbnRlcnByZXRlcl9wYXRoLm5h
bWUKLQotICAgIGRlZiBfZ2V0X2xpYnNfYW5kX2ludGVycHJldGVyKHNlbGYsIG9iamVjdCk6Ci0g
ICAgICAgIGludGVycHJldGVyID0gTm9uZQotICAgICAgICByZXRjb2RlLCBzdGRvdXQsIHN0ZGVy
ciA9IHNlbGYuX3J1bl9jbWRfYW5kX2dldF9vdXRwdXQoW3NlbGYuX2xkZCwgb2JqZWN0XSkKLSAg
ICAgICAgX2xvZy5kZWJ1ZygibGRkIHN0ZG91dDpcbiVzIiAlIHN0ZG91dCkKLSAgICAgICAgaWYg
cmV0Y29kZSAhPSAwOgotICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdUaGUgJXMgY29t
bWFuZCByZXR1cm5lZCBub24temVybyBzdGF0dXMgZm9yIG9iamVjdCAlcycgJSAoc2VsZi5fbGRk
LCBvYmplY3QpKQotICAgICAgICBsaWJzID0gW10KLSAgICAgICAgZm9yIGxpbmUgaW4gc3Rkb3V0
LnNwbGl0bGluZXMoKToKLSAgICAgICAgICAgIGxpbmUgPSBsaW5lLnN0cmlwKCkKLSAgICAgICAg
ICAgIGlmICc9PicgaW4gbGluZToKLSAgICAgICAgICAgICAgICBsaW5lID0gbGluZS5zcGxpdCgn
PT4nKVsxXS5zdHJpcCgpCi0gICAgICAgICAgICAgICAgaWYgJ25vdCBmb3VuZCcgaW4gbGluZToK
LSAgICAgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdsZGQgY2FuIG5vdCByZXNv
bHZlIGFsbCBkZXBlbmRlbmNpZXMgZm9yIG9iamVjdCAlcy4nICUgb2JqZWN0KQotICAgICAgICAg
ICAgICAgIGxpbmUgPSBsaW5lLnNwbGl0KCcgJylbMF0uc3RyaXAoKQotICAgICAgICAgICAgICAg
IGlmIG9zLnBhdGguaXNmaWxlKGxpbmUpOgotICAgICAgICAgICAgICAgICAgICBsaWJzLmFwcGVu
ZChsaW5lKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBsaW5lID0gbGluZS5z
cGxpdCgnICcpWzBdLnN0cmlwKCkKLSAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShs
aW5lKToKLSAgICAgICAgICAgICAgICAgICAgaW50ZXJwcmV0ZXIgPSBsaW5lCi0gICAgICAgIGlm
IGludGVycHJldGVyIGlzIE5vbmU6Ci0gICAgICAgICAgICAjIFRoaXMgaXMgdGhlIGNhc2UgZm9y
IG5vbi1uYXRpdmUgYmluYXJpZXMuIEZvciB0aG9zZSwgd2UKLSAgICAgICAgICAgICMgY2FuIHVz
ZSBhIGNyb3NzLWxkZCAoeGxkZCksIGJ1dCB0aGVuIHRoZSBpbnRlcnByZXRlcgotICAgICAgICAg
ICAgIyBsb29rcyBsaWtlIGFueSBvdGhlciBzaGFyZWQgb2JqZWN0IGluIHRoZSBvdXRwdXQgb2YK
LSAgICAgICAgICAgICMgbGRkLiBUcnkgdG8gaWRlbnRpZnkgaXQgYnkgbG9va2luZyBhdCB0aGUg
b2JqZWN0IG5hbWUKLSAgICAgICAgICAgICMgZnJvbSB0aGUgaW50ZXJwcmV0ZXIgc3RyaW5nLgot
ICAgICAgICAgICAgaW50ZXJwcmV0ZXJfb2JqbmFtZSA9IHNlbGYuX2dldF9pbnRlcnByZXRlcl9v
YmpuYW1lKG9iamVjdCkKLSAgICAgICAgICAgIGZvciBsaWIgaW4gbGliczoKLSAgICAgICAgICAg
ICAgICBpZiBQdXJlUGF0aChsaWIpLm5hbWUgPT0gaW50ZXJwcmV0ZXJfb2JqbmFtZToKLSAgICAg
ICAgICAgICAgICAgICAgaW50ZXJwcmV0ZXIgPSBsaWIKLSAgICAgICAgICAgICAgICAgICAgYnJl
YWsKLSAgICAgICAgICAgICMgSWYgd2UgZm91bmQgYW4gaW50ZXJwcmV0ZXIsIHJlbW92ZSBpdCBm
cm9tIHRoZSBsaWJzLgotICAgICAgICAgICAgbGlicyA9IFtsaWIgZm9yIGxpYiBpbiBsaWJzIGlm
IGxpYiAhPSBpbnRlcnByZXRlcl0KLSAgICAgICAgcmV0dXJuIGxpYnMsIGludGVycHJldGVyCi0K
LQotICAgIGRlZiBfbGRkX3JlY3Vyc2l2ZV9nZXRfbGlic19hbmRfaW50ZXJwcmV0ZXIoc2VsZiwg
b2JqZWN0LCBhbHJlYWR5X2NoZWNrZWRfbGlicyA9IFtdKToKLSAgICAgICAgbGlicywgaW50ZXJw
cmV0ZXIgPSBzZWxmLl9nZXRfbGlic19hbmRfaW50ZXJwcmV0ZXIob2JqZWN0KQotICAgICAgICBp
ZiBsaWJzOgotICAgICAgICAgICAgZm9yIGxpYiBpbiBsaWJzOgotICAgICAgICAgICAgICAgIGlm
IGxpYiBpbiBhbHJlYWR5X2NoZWNrZWRfbGliczoKLSAgICAgICAgICAgICAgICAgICAgY29udGlu
dWUKLSAgICAgICAgICAgICAgICAjIGF2b2lkIHJlY3Vyc2lvbiBsb29wcyAobGliZnJlZXR5cGUu
c28uNiA8LT4gbGliaGFyZmJ1enouc28uMCkKLSAgICAgICAgICAgICAgICBhbHJlYWR5X2NoZWNr
ZWRfbGlicy5hcHBlbmQobGliKQotICAgICAgICAgICAgICAgIHN1Yl9saWJzLCBzdWJfaW50ZXJw
cmV0ZXIgPSBzZWxmLl9sZGRfcmVjdXJzaXZlX2dldF9saWJzX2FuZF9pbnRlcnByZXRlcihsaWIs
IGFscmVhZHlfY2hlY2tlZF9saWJzKQotICAgICAgICAgICAgICAgIGxpYnMuZXh0ZW5kKHN1Yl9s
aWJzKQotICAgICAgICAgICAgICAgIGlmIHN1Yl9pbnRlcnByZXRlciBhbmQgaW50ZXJwcmV0ZXIg
YW5kIHN1Yl9pbnRlcnByZXRlciAhPSBpbnRlcnByZXRlcjoKLSAgICAgICAgICAgICAgICAgICAg
cmFpc2UgUnVudGltZUVycm9yKCdsaWJyYXJ5ICVzIGhhcyBpbnRlcnByZXRlciAlcyBidXQgb2Jq
ZWN0ICVzIGhhcyBpbnRlcnByZXRlciAlcycgJSAobGliLCBzdWJfaW50ZXJwcmV0ZXIsIG9iamVj
dCwgaW50ZXJwcmV0ZXIpKQotICAgICAgICByZXR1cm4gbGlzdChzZXQobGlicykpLCBpbnRlcnBy
ZXRlcgotCi0KICAgICBkZWYgX2dldF9vc3ByZXR0eW5hbWUoc2VsZik6CiAgICAgICAgIHdpdGgg
b3BlbignL2V0Yy9vcy1yZWxlYXNlJywgJ3InKSBhcyBvc3JlbGVhc2VfaGFuZGxlOgogICAgICAg
ICAgICAgZm9yIGxpbmUgaW4gb3NyZWxlYXNlX2hhbmRsZS5yZWFkbGluZXMoKToKQEAgLTI1OCwz
NyArMTk5LDMwIEBAIGNsYXNzIEJ1bmRsZUNyZWF0b3Iob2JqZWN0KToKIAogCiAgICAgZGVmIF9n
ZW5lcmF0ZV93cmFwcGVyX3NjcmlwdChzZWxmLCBpbnRlcnByZXRlciwgYmluYXJ5X3RvX3dyYXAp
OgotICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKHNlbGYuX3RtcGRp
ciwgJ2JpbicsIGJpbmFyeV90b193cmFwKSk6Ci0gICAgICAgICAgICByYWlzZSBSdW50aW1lRXJy
b3IoJ0NhbiBub3QgZmluZCBiaW5hcnkgdG8gd3JhcCBmb3IgJXMnICUgYmluYXJ5X3RvX3dyYXAp
Ci0gICAgICAgIHNlbGYuX3dyYXBwZXJfc2NyaXB0cy5hcHBlbmQoYmluYXJ5X3RvX3dyYXApCi0g
ICAgICAgIF9sb2cuaW5mbygnR2VuZXJhdGUgd3JhcHBlciBzY3JpcHQgJXMnICUgYmluYXJ5X3Rv
X3dyYXApCi0gICAgICAgIHNjcmlwdF9maWxlID0gb3MucGF0aC5qb2luKHNlbGYuX3RtcGRpciwg
YmluYXJ5X3RvX3dyYXApCi0KLSAgICAgICAgd2l0aCBvcGVuKHNjcmlwdF9maWxlLCAndycpIGFz
IHNjcmlwdF9oYW5kbGU6Ci0gICAgICAgICAgICBzY3JpcHRfaGFuZGxlLndyaXRlKCcjIS9iaW4v
c2hcbicpCi0gICAgICAgICAgICBzY3JpcHRfaGFuZGxlLndyaXRlKCdNWURJUj0iJChkaXJuYW1l
ICQocmVhZGxpbmsgLWYgJDApKSJcbicpCi0gICAgICAgICAgICBzY3JpcHRfaGFuZGxlLndyaXRl
KCdleHBvcnQgTERfTElCUkFSWV9QQVRIPSIke01ZRElSfS9saWIiXG4nKQotICAgICAgICAgICAg
aWYgb3MucGF0aC5pc2Rpcihvcy5wYXRoLmpvaW4oc2VsZi5fdG1wZGlyLCAnZ2lvJykpOgotICAg
ICAgICAgICAgICAgIGdpb192YXIgPSAnR0lPX01PRFVMRV9ESVInIGlmIHNlbGYuX3N5c2xpYnMg
PT0gJ2J1bmRsZS1hbGwnIGVsc2UgJ0dJT19FWFRSQV9NT0RVTEVTJwotICAgICAgICAgICAgICAg
IHNjcmlwdF9oYW5kbGUud3JpdGUoJ2V4cG9ydCAlcz0iJHtNWURJUn0vZ2lvIlxuJyAlIGdpb192
YXIpCi0gICAgICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKG9zLnBhdGguam9pbihzZWxmLl90bXBk
aXIsICdnc3QnKSk6Ci0gICAgICAgICAgICAgICAgZ3N0X3ZhciA9ICdHU1RfUExVR0lOX1NZU1RF
TV9QQVRIXzFfMCcgaWYgc2VsZi5fc3lzbGlicyA9PSAnYnVuZGxlLWFsbCcgZWxzZSAnR1NUX1BM
VUdJTl9QQVRIXzFfMCcKLSAgICAgICAgICAgICAgICBzY3JpcHRfaGFuZGxlLndyaXRlKCdleHBv
cnQgJXM9IiR7TVlESVJ9L2dzdCJcbicgJSBnc3RfdmFyKQotICAgICAgICAgICAgICAgIHNjcmlw
dF9oYW5kbGUud3JpdGUoJ2V4cG9ydCBHU1RfUkVHSVNUUllfMV8wPSIke01ZRElSfS9nc3QvZ3N0
cmVhbWVyLTEuMC5yZWdpc3RyeSJcbicpCisgICAgICAgIHZhcmlhYmxlcyA9IGRpY3QoKQorICAg
ICAgICBteWRpciA9IHNlbGYuX2J1bmRsZXIuVkFSX01ZRElSCisgICAgICAgIGlmIG9zLnBhdGgu
aXNkaXIob3MucGF0aC5qb2luKHNlbGYuX2J1bmRsZXIuZGVzdGluYXRpb25fZGlyKCksICdnaW8n
KSk6CisgICAgICAgICAgICBnaW9fdmFyID0gJ0dJT19NT0RVTEVfRElSJyBpZiBzZWxmLl9zeXNs
aWJzID09ICdidW5kbGUtYWxsJyBlbHNlICdHSU9fRVhUUkFfTU9EVUxFUycKKyAgICAgICAgICAg
IHZhcmlhYmxlc1tnaW9fdmFyXSA9ICIkeyVzfS9naW8iICUgbXlkaXIKKworICAgICAgICBpZiBv
cy5wYXRoLmlzZGlyKG9zLnBhdGguam9pbihzZWxmLl9idW5kbGVyLmRlc3RpbmF0aW9uX2Rpcigp
LCAnZ3N0JykpOgorICAgICAgICAgICAgZ3N0X3ZhciA9ICdHU1RfUExVR0lOX1NZU1RFTV9QQVRI
XzFfMCcgaWYgc2VsZi5fc3lzbGlicyA9PSAnYnVuZGxlLWFsbCcgZWxzZSAnR1NUX1BMVUdJTl9Q
QVRIXzFfMCcKKyAgICAgICAgICAgIHZhcmlhYmxlc1tnc3RfdmFyXSA9ICIkeyVzfS9nc3QiICUg
bXlkaXIKKyAgICAgICAgICAgIHZhcmlhYmxlc1snR1NUX1JFR0lTVFJZXzFfMCddID0gIiR7JXN9
L2dzdC9nc3RyZWFtZXItMS4wLnJlZ2lzdHJ5IiAlIG15ZGlyCisgICAgICAgIGlmIGJpbmFyeV90
b193cmFwICE9ICJqc2MiOgorICAgICAgICAgICAgdmFyaWFibGVzWydXRUJLSVRfRVhFQ19QQVRI
J10gPSAiJHslc30vYmluIiAlIG15ZGlyCisgICAgICAgICAgICB2YXJpYWJsZXNbJ1dFQktJVF9J
TkpFQ1RFRF9CVU5ETEVfUEFUSCddID0gIiR7JXN9L2xpYiIgJSBteWRpcgorICAgICAgICBpZiBz
ZWxmLl9zeXNsaWJzID09ICdidW5kbGUtYWxsJzoKICAgICAgICAgICAgIGlmIGJpbmFyeV90b193
cmFwICE9ICJqc2MiOgotICAgICAgICAgICAgICAgIHNjcmlwdF9oYW5kbGUud3JpdGUoJ2V4cG9y
dCBXRUJLSVRfRVhFQ19QQVRIPSIke01ZRElSfS9iaW4iXG4nKQotICAgICAgICAgICAgICAgIHNj
cmlwdF9oYW5kbGUud3JpdGUoJ2V4cG9ydCBXRUJLSVRfSU5KRUNURURfQlVORExFX1BBVEg9IiR7
TVlESVJ9L2xpYiJcbicpCi0gICAgICAgICAgICBpZiBzZWxmLl9zeXNsaWJzID09ICdidW5kbGUt
YWxsJzoKLSAgICAgICAgICAgICAgICBzY3JpcHRfaGFuZGxlLndyaXRlKCdJTlRFUlBSRVRFUj0i
JHtNWURJUn0vbGliLyVzIlxuJyAlIG9zLnBhdGguYmFzZW5hbWUoaW50ZXJwcmV0ZXIpKQotICAg
ICAgICAgICAgICAgIGlmIGJpbmFyeV90b193cmFwICE9ICJqc2MiOgotICAgICAgICAgICAgICAg
ICAgICBzY3JpcHRfaGFuZGxlLndyaXRlKCdleHBvcnQgV0VCX1BST0NFU1NfQ01EX1BSRUZJWD0i
JHtJTlRFUlBSRVRFUn0iXG4nKQotICAgICAgICAgICAgICAgICAgICBzY3JpcHRfaGFuZGxlLndy
aXRlKCdleHBvcnQgUExVR0lOX1BST0NFU1NfQ01EX1BSRUZJWD0iJHtJTlRFUlBSRVRFUn0iXG4n
KQotICAgICAgICAgICAgICAgICAgICBzY3JpcHRfaGFuZGxlLndyaXRlKCdleHBvcnQgTkVUV09S
S19QUk9DRVNTX0NNRF9QUkVGSVg9IiR7SU5URVJQUkVURVJ9IlxuJykKLSAgICAgICAgICAgICAg
ICAgICAgc2NyaXB0X2hhbmRsZS53cml0ZSgnZXhwb3J0IEdQVV9QUk9DRVNTX0NNRF9QUkVGSVg9
IiR7SU5URVJQUkVURVJ9IlxuJykKLSAgICAgICAgICAgICAgICBzY3JpcHRfaGFuZGxlLndyaXRl
KCdleGVjICIke0lOVEVSUFJFVEVSfSIgIiR7TVlESVJ9L2Jpbi8lcyIgIiRAIlxuJyAlIGJpbmFy
eV90b193cmFwKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzY3JpcHRfaGFu
ZGxlLndyaXRlKCdleGVjICIke01ZRElSfS9iaW4vJXMiICIkQCJcbicgJSBiaW5hcnlfdG9fd3Jh
cCkKLSAgICAgICAgb3MuY2htb2Qoc2NyaXB0X2ZpbGUsIDBvNzU1KQorICAgICAgICAgICAgICAg
IGZvciB2YXIgaW4gWydXRUJfUFJPQ0VTU19DTURfUFJFRklYJywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnUExVR0lOX1BST0NFU1NfQ01EX1BSRUZJWCcsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ05FVFdPUktfUFJPQ0VTU19DTURfUFJFRklYJywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnR1BVX1BST0NFU1NfQ01EX1BSRUZJWCddOgorICAgICAgICAgICAgICAg
ICAgICB2YXJpYWJsZXNbdmFyXSA9ICIkeyVzfSIgJSBzZWxmLl9idW5kbGVyLlZBUl9JTlRFUlBS
RVRFUgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaW50ZXJwcmV0ZXIgPSBOb25lCisgICAg
ICAgIHNlbGYuX2J1bmRsZXIuZ2VuZXJhdGVfd3JhcHBlcl9zY3JpcHQoaW50ZXJwcmV0ZXIsIGJp
bmFyeV90b193cmFwLCB2YXJpYWJsZXMpCisgICAgICAgIHNlbGYuX3dyYXBwZXJfc2NyaXB0cy5h
cHBlbmQoYmluYXJ5X3RvX3dyYXApCiAKICAgICBkZWYgX2dlbmVyYXRlX2luc3RhbGxfZGVwc19z
Y3JpcHQoc2VsZiwgc3lzdGVtX3BhY2thZ2VzX25lZWRlZCk6CiAgICAgICAgIGlmIG5vdCBzeXN0
ZW1fcGFja2FnZXNfbmVlZGVkOgpAQCAtMzEyLDM1ICsyNDYsNiBAQCBjbGFzcyBCdW5kbGVDcmVh
dG9yKG9iamVjdCk6CiAgICAgICAgICAgICBpbnN0YWxsZGVwc19oYW5kbGUud3JpdGUoSU5TVEFM
TF9ERVBTX1NDUklQVF9URU1QTEFURSAlIHsncGFja2FnZXNfbmVlZGVkJyA6ICcgJy5qb2luKHN5
c3RlbV9wYWNrYWdlc19uZWVkZWQpfSApCiAgICAgICAgIG9zLmNobW9kKGluc3RhbGxkZXBzX2Zp
bGUsIDBvNzU1KQogCi0KLSAgICBkZWYgX2NvcHlfYW5kX3JlbW92ZV9ycGF0aChzZWxmLCBvcmln
X2ZpbGUsIHR5cGU9J2JpbicsIGRlc3RpbmF0aW9uX2Rpcj1Ob25lKToKLSAgICAgICAgaWYgbm90
IGRlc3RpbmF0aW9uX2RpcjoKLSAgICAgICAgICAgIGRpcl9zdWZmaXggPSAnbGliJyBpZiB0eXBl
ID09ICdpbnRlcnByZXRlcicgZWxzZSB0eXBlCi0gICAgICAgICAgICBkZXN0aW5hdGlvbl9kaXIg
PSBvcy5wYXRoLmpvaW4oc2VsZi5fdG1wZGlyLCBkaXJfc3VmZml4KQotICAgICAgICBpZiBub3Qg
b3MucGF0aC5pc2RpcihkZXN0aW5hdGlvbl9kaXIpOgotICAgICAgICAgICAgb3MubWFrZWRpcnMo
ZGVzdGluYXRpb25fZGlyKQotCi0gICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzZmlsZShvcmlnX2Zp
bGUpOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignQ2FuIG5vdCBmaW5kIGZpbGUgJXMn
ICUgb3JpZ19maWxlKQotCi0gICAgICAgIF9sb2cuaW5mbygnQWRkIHRvIGJ1bmRsZSBbJXNdOiAl
cycgJSAodHlwZSwgb3JpZ19maWxlKSkKLSAgICAgICAgc2h1dGlsLmNvcHkob3JpZ19maWxlLCBk
ZXN0aW5hdGlvbl9kaXIpCi0KLSAgICAgICAgaWYgc2h1dGlsLndoaWNoKCdwYXRjaGVsZicpOgot
ICAgICAgICAgICAgcGF0Y2hfZWxmX2NvbW1hbmQgPSBbJ3BhdGNoZWxmJywgJy0tcmVtb3ZlLXJw
YXRoJywgb3MucGF0aC5qb2luKGRlc3RpbmF0aW9uX2Rpciwgb3MucGF0aC5iYXNlbmFtZShvcmln
X2ZpbGUpKV0KLSAgICAgICAgICAgIGlmIHN1YnByb2Nlc3MuY2FsbChwYXRjaF9lbGZfY29tbWFu
ZCkgIT0gMDoKLSAgICAgICAgICAgICAgICBfbG9nLndhcm5pbmcoJ1RoZSBwYXRjaGVsZiBjb21t
YW5kIHJldHVybmVkIG5vbi16ZXJvIHN0YXR1cycpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAg
ICAgICAgX2xvZy53YXJuaW5nKCdwYXRjaGVsZiBub3QgZm91bmQuIE5vdCBtb2RpZnlpbmcgcnBh
dGgnKQotCi0gICAgICAgIGlmIHNlbGYuX3Nob3VsZF9zdHJpcF9vYmplY3RzOgotICAgICAgICAg
ICAgaWYgc2h1dGlsLndoaWNoKCdzdHJpcCcpOgotICAgICAgICAgICAgICAgIHN0cmlwX2NvbW1h
bmQgPSBbJ3N0cmlwJywgJy0tc3RyaXAtdW5uZWVkZWQnLCBvcy5wYXRoLmpvaW4oZGVzdGluYXRp
b25fZGlyLCBvcy5wYXRoLmJhc2VuYW1lKG9yaWdfZmlsZSkpXQotICAgICAgICAgICAgICAgIGlm
IHN1YnByb2Nlc3MuY2FsbChzdHJpcF9jb21tYW5kKSAhPSAwOgotICAgICAgICAgICAgICAgICAg
ICBfbG9nLndhcm5pbmcoJ1RoZSBzdHJpcCBjb21tYW5kIHJldHVybmVkIG5vbi16ZXJvIHN0YXR1
cycpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIF9sb2cud2FybmluZygnc3Ry
aXAgbm90IGZvdW5kLiBOb3Qgc3RyaXBwaW5nIG9iamVjdCcpCi0KICAgICBkZWYgX3JlbW92ZV90
ZW1wZGlyKHNlbGYpOgogICAgICAgICBpZiBub3Qgc2VsZi5fdG1wZGlyOgogICAgICAgICAgICAg
cmV0dXJuCkBAIC0zNDksNiArMjU0LDcgQEAgY2xhc3MgQnVuZGxlQ3JlYXRvcihvYmplY3QpOgog
CiAgICAgZGVmIGNyZWF0ZShzZWxmKToKICAgICAgICAgc2VsZi5fdG1wZGlyID0gc2VsZi5fY3Jl
YXRlX3RlbXBkaXIoc2VsZi5fYnVpbGRwYXRoKQorICAgICAgICBzZWxmLl9idW5kbGVyID0gQmlu
YXJ5QnVuZGxlcihzZWxmLl90bXBkaXIsIHNlbGYuX3Nob3VsZF9zdHJpcF9vYmplY3RzKQogCiAg
ICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKHNlbGYuX2J1bmRsZV9maWxlX3BhdGgpOgogICAgICAg
ICAgICAgX2xvZy5pbmZvKCdSZW1vdmluZyBwcmV2aW91cyBidW5kbGUgJXMnICUgc2VsZi5fYnVu
ZGxlX2ZpbGVfcGF0aCkKQEAgLTQ1NiwxMSArMzYyLDExIEBAIGNsYXNzIEJ1bmRsZUNyZWF0b3Io
b2JqZWN0KToKICAgICBkZWYgX2FkZF9vYmplY3Rfb3JfZ2V0X3N5c2RlcChzZWxmLCBvYmplY3Qs
IG9iamVjdF90eXBlKToKICAgICAgICAgcHJvdmlkZWRfYnlfc3lzdGVtX3BhY2thZ2UgPSBOb25l
CiAgICAgICAgIGlmIHNlbGYuX3N5c2xpYnMgPT0gJ2J1bmRsZS1hbGwnOgotICAgICAgICAgICAg
c2VsZi5fY29weV9hbmRfcmVtb3ZlX3JwYXRoKG9iamVjdCwgdHlwZT1vYmplY3RfdHlwZSkKKyAg
ICAgICAgICAgIHNlbGYuX2J1bmRsZXIuY29weV9hbmRfcmVtb3ZlX3JwYXRoKG9iamVjdCwgdHlw
ZT1vYmplY3RfdHlwZSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHByb3ZpZGVkX2J5X3N5
c3RlbV9wYWNrYWdlID0gc2VsZi5fZ2V0X3N5c3RlbV9wYWNrYWdlX25hbWUob2JqZWN0KQogICAg
ICAgICAgICAgaWYgbm90IHByb3ZpZGVkX2J5X3N5c3RlbV9wYWNrYWdlOgotICAgICAgICAgICAg
ICAgIHNlbGYuX2NvcHlfYW5kX3JlbW92ZV9ycGF0aChvYmplY3QsIHR5cGU9b2JqZWN0X3R5cGUp
CisgICAgICAgICAgICAgICAgc2VsZi5fYnVuZGxlci5jb3B5X2FuZF9yZW1vdmVfcnBhdGgob2Jq
ZWN0LCB0eXBlPW9iamVjdF90eXBlKQogICAgICAgICByZXR1cm4gcHJvdmlkZWRfYnlfc3lzdGVt
X3BhY2thZ2UKIAogICAgIGRlZiBfZW5zdXJlX3dwZV9iYWNrZW5kX3N5bWxpbmsoc2VsZik6CkBA
IC01MDYsMjAgKzQxMiwyMCBAQCBjbGFzcyBCdW5kbGVDcmVhdG9yKG9iamVjdCk6CiAgICAgICAg
ICAgICAgICAgaWYgc3lzdGVtX3BhY2thZ2U6CiAgICAgICAgICAgICAgICAgICAgIHN5c3RlbV9w
YWNrYWdlc19uZWVkZWQuYWRkKHN5c3RlbV9wYWNrYWdlKQogICAgICAgICAgICAgZWxpZiBvYmpl
Y3QuZW5kc3dpdGgoJy5zbycpOgotICAgICAgICAgICAgICAgIHNlbGYuX2NvcHlfYW5kX3JlbW92
ZV9ycGF0aChvYmplY3QsIHR5cGU9J2xpYicpCisgICAgICAgICAgICAgICAgc2VsZi5fYnVuZGxl
ci5jb3B5X2FuZF9yZW1vdmVfcnBhdGgob2JqZWN0LCB0eXBlPSdsaWInKQogICAgICAgICAgICAg
ZWxzZToKLSAgICAgICAgICAgICAgICBzZWxmLl9jb3B5X2FuZF9yZW1vdmVfcnBhdGgob2JqZWN0
LCB0eXBlPSdiaW4nKQorICAgICAgICAgICAgICAgIHNlbGYuX2J1bmRsZXIuY29weV9hbmRfcmVt
b3ZlX3JwYXRoKG9iamVjdCwgdHlwZT0nYmluJykKICAgICAgICAgICAgICMgVGhlcmUgaXMgbm8g
bmVlZCB0byBleGFtaW5lIHRoZSBsaWJyYXJpZXMgbGlua2VkIHdpdGggb2JqZWN0cyBjb21pbmcg
ZnJvbSBhIHN5c3RlbSBwYWNrYWdlLAogICAgICAgICAgICAgIyBiZWNhdXNlIHN5c3RlbSBwYWNr
YWdlcyBhbHJlYWR5IGRlY2xhcmUgZGVwZW5kZW5jaWVzIGJldHdlZW4gdGhlbS4KICAgICAgICAg
ICAgICMgSG93ZXZlciwgaWYgd2UgYXJlIHJ1bm5pbmcgd2l0aCBzZWxmLl9zeXNsaWJzID09ICdi
dW5kbGUtYWxsJyB0aGVuIHN5c3RlbV9wYWNrYWdlIHdpbGwgYmUgTm9uZSwKICAgICAgICAgICAg
ICMgYW5kIGV2ZXJ5dGhpbmcgd2lsbCBiZSBleGFtaW5lZCBhbmQgYnVuZGxlZCBhcyB3ZSBkb24n
dCBhY2NvdW50IGZvciBzeXN0ZW0gcGFja2FnZXMgaW4gdGhhdCBjYXNlLgogICAgICAgICAgICAg
aWYgbm90IHN5c3RlbV9wYWNrYWdlOgotICAgICAgICAgICAgICAgIGxpYnJhcmllcywgaW50ZXJw
cmV0ZXIgPSBzZWxmLl9sZGRfcmVjdXJzaXZlX2dldF9saWJzX2FuZF9pbnRlcnByZXRlcihvYmpl
Y3QpCisgICAgICAgICAgICAgICAgbGlicmFyaWVzLCBpbnRlcnByZXRlciA9IHNlbGYuX3NoYXJl
ZF9vYmplY3RfcmVzb2x2ZXIuZ2V0X2xpYnNfYW5kX2ludGVycHJldGVyKG9iamVjdCkKICAgICAg
ICAgICAgICAgICBpZiBpbnRlcnByZXRlciBpcyBOb25lOgogICAgICAgICAgICAgICAgICAgICBy
YWlzZSBSdW50aW1lRXJyb3IoIkNvdWxkIG5vdCBkZXRlcm1pbmUgaW50ZXJwcmV0ZXIgZm9yIGJp
bmFyeSAlcyIgJSBvYmplY3QpCiAgICAgICAgICAgICAgICAgaWYgY29waWVkX2ludGVycHJldGVy
IGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuX3N5c2xpYnMgPT0gJ2J1bmRs
ZS1hbGwnOgotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fY29weV9hbmRfcmVtb3ZlX3Jw
YXRoKGludGVycHJldGVyLCB0eXBlPSdpbnRlcnByZXRlcicpCisgICAgICAgICAgICAgICAgICAg
ICAgICBzZWxmLl9idW5kbGVyLmNvcHlfYW5kX3JlbW92ZV9ycGF0aChpbnRlcnByZXRlciwgdHlw
ZT0naW50ZXJwcmV0ZXInKQogICAgICAgICAgICAgICAgICAgICBjb3BpZWRfaW50ZXJwcmV0ZXIg
PSBpbnRlcnByZXRlcgogICAgICAgICAgICAgICAgIGVsaWYgY29waWVkX2ludGVycHJldGVyICE9
IGludGVycHJldGVyOgogICAgICAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ0Rl
dGVjdGVkIGJpbmFyaWVzIHdpdGggZGlmZmVyZW50IGludGVycHJldGVyczogJXMgIT0gJXMnICUo
Y29waWVkX2ludGVycHJldGVyLCBpbnRlcnByZXRlcikpCkBAIC02NTksNyArNTY1LDcgQEAgZGVm
IGNvbmZpZ3VyZV9sb2dnaW5nKHNlbGVjdGVkX2xvZ19sZXZlbD0naW5mbycpOgogICAgICAgICBs
b2dfbGV2ZWwgPSBsb2dnaW5nLmdldExldmVsTmFtZShMT0dfTUVTU0FHRSkKIAogICAgIGhhbmRs
ZXIgPSBMb2dIYW5kbGVyKHN5cy5zdGRvdXQpCi0gICAgbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dn
ZXIoX19uYW1lX18pCisgICAgbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoKQogICAgIGxvZ2dl
ci5hZGRIYW5kbGVyKGhhbmRsZXIpCiAgICAgbG9nZ2VyLnNldExldmVsKGxvZ19sZXZlbCkKICAg
ICByZXR1cm4gaGFuZGxlcgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9ydW4tanNjLWJlbmNo
bWFya3MgYi9Ub29scy9TY3JpcHRzL3J1bi1qc2MtYmVuY2htYXJrcwppbmRleCAwNDAwNDM0N2Fi
ZGY4YWJmMDQ4MzA4OTQ2ZTQ5MTkwYzBlNGEyY2Q0Li41ZTAxNzhlMGQ4ZDZlYWU3OGE1MzQwZTg5
YzEwNWIyZmM5NWE3YWRjIDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL3J1bi1qc2MtYmVuY2ht
YXJrcworKysgYi9Ub29scy9TY3JpcHRzL3J1bi1qc2MtYmVuY2htYXJrcwpAQCAtMjM3LDYgKzIz
Nyw3IEBAICRpbmNsdWRlU2l4U3BlZWQgPSBmYWxzZQogJGluY2x1ZGVUYWlsQmVuY2ggPSB0cnVl
CiAkaW5jbHVkZUJpZ0ludEJlbmNoID0gZmFsc2UKICRpbmNsdWRlUHJpdmF0ZUZpZWxkc0JlbmNo
ID0gZmFsc2UKKyRsZGQ9bmlsCiAkbWVhc3VyZUdDPWZhbHNlCiAkYmVuY2htYXJrUGF0dGVybj1u
aWwKICR2ZXJib3NpdHk9MApAQCAtMTQxMywxOCArMTQxNCwzOCBAQCBjbGFzcyBWTQogICAgIEBl
eHRyYUVudltrZXldID0gdmFsCiAgICAgQEBleHRyYUVudlNldFtrZXldID0gdHJ1ZQogICBlbmQK
LSAgCisKKyAgZGVmIGNvcHlJbnRvQmVuY2hQYXRoQnVuZGxlKGJhc2VuYW1lLCBvdXRwdXRkaXIp
CisgICAgYnVuZGxlX2JpbmFyeSA9IChTQ1JJUFRfUEFUSC5kaXJuYW1lICsgJ2J1bmRsZS1iaW5h
cnknKS5yZWFscGF0aAorICAgIGNtZCA9IFNoZWxsd29yZHMuam9pbihbCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYnVuZGxlX2JpbmFyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnLS1kZXN0LWRpcicsIG91dHB1dGRpciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBA
cGF0aAorICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorICAgICRzdGRlcnIucHV0cyAiPj4g
I3tjbWR9IiBpZiAkdmVyYm9zaXR5Pj0yCisgICAgcmFpc2UgdW5sZXNzIHN5c3RlbShjbWQpCisg
ICAgQHBhdGggPSAiI3tiYXNlbmFtZX0vanNjIgorICBlbmQKKwogICBkZWYgY29weUludG9CZW5j
aFBhdGgKICAgICByYWlzZSB1bmxlc3MgY2FuQ29weUludG9CZW5jaFBhdGgKICAgICBiYXNlbmFt
ZSwgZmlsZW5hbWUgPSBCZW5jaGZpbGUudW5pcXVlRmlsZW5hbWUoInZtIikKICAgICByYWlzZSB1
bmxlc3MgRGlyLm1rZGlyKGZpbGVuYW1lKQorICAgIGlmIG5vdCAkcmVtb3RlSG9zdHMuZW1wdHk/
IGFuZCBgdW5hbWVgID09ICdMaW51eCcKKyAgICAgIGNvcHlJbnRvQmVuY2hQYXRoQnVuZGxlKGJh
c2VuYW1lLCBTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKGZpbGVuYW1lLnRvX3MpKQorICAgICAgcmV0
dXJuCisgICAgZW5kCisKICAgICBAbGliUGF0aC5lYWNoIHsKICAgICAgIHwgbGliUGF0aFBhcnQg
fAogICAgICAgY21kID0gImNwIC1hICN7U2hlbGx3b3Jkcy5zaGVsbGVzY2FwZShsaWJQYXRoUGFy
dCl9LyogI3tTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKGZpbGVuYW1lLnRvX3MpfSIKICAgICAgICRz
dGRlcnIucHV0cyAiPj4gI3tjbWR9IiBpZiAkdmVyYm9zaXR5Pj0yCiAgICAgICByYWlzZSB1bmxl
c3Mgc3lzdGVtKGNtZCkKICAgICB9Ci0gICAgQHBhdGggPSAiI3tiYXNlbmFtZX0vI3tAcmVsYXRp
dmVCaW5QYXRofSIKKyAgICBjbWQgPSAiY3AgLWEgI3tAcGF0aH0gI3tTaGVsbHdvcmRzLnNoZWxs
ZXNjYXBlKGZpbGVuYW1lLnRvX3MpfSIKKyAgICAkc3RkZXJyLnB1dHMgIj4+ICN7Y21kfSIgaWYg
JHZlcmJvc2l0eT49MgorICAgIHJhaXNlIHVubGVzcyBzeXN0ZW0oY21kKQorICAgIEBwYXRoID0g
IiN7YmFzZW5hbWV9L2pzYyIKICAgICBAbGliUGF0aCA9IFtiYXNlbmFtZV0KICAgZW5kCiAgIApA
QCAtMjM4OSw3ICsyNDEwLDE3IEBAIGRlZiB3cmFwKHN0ciwgY29sdW1ucykKICAgfQogICByZXN1
bHQgKyBjdXJMaW5lICsgIlxuIgogZW5kCi0gIAorCitkZWYgZXhwb3J0SlNDRW52aXJvbm1lbnRW
YXJpYWJsZXMKKyAgYnVmID0gIiIKKyAgRU5WLmVhY2ggeworICAgIHwgbmFtZSwgdmFsdWUgfAor
ICAgIG5leHQgdW5sZXNzIG5hbWUuc3RhcnRfd2l0aD8oIkpTQ18iKQorICAgIGJ1ZiA8PCAiZXhw
b3J0ICN7bmFtZX09I3tTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKHZhbHVlKX1cbiIKKyAgfQorICBi
dWYKK2VuZAorCiBkZWYgcnVuQW5kR2V0UmVzdWx0cwogICByZXN1bHRzID0gbmlsCiAgIERpci5j
aGRpcihCRU5DSF9EQVRBX1BBVEgpIHsKQEAgLTMwNTUsNiArMzA4Niw4IEBAIGJlZ2luCiAgICAg
ICAkZGVwZW5kZW5jaWVzLnB1c2goUGF0aG5hbWUubmV3KGFyZykucmVhbHBhdGgpCiAgICAgd2hl
biAnLS1jb25maWcnCiAgICAgICAkY29uZmlnUGF0aCA9IFBhdGhuYW1lLm5ldyhhcmcpCisgICAg
d2hlbiAnLS1sZGQnCisgICAgICAkbGRkID0gYXJnCiAgICAgd2hlbiAnLS1oZWxwJwogICAgICAg
dXNhZ2UKICAgICBlbHNlCkBAIC0zNjExLDYgKzM2NDQsNyBAQCBiZWdpbgogICBpZiAkcHJlcGFy
ZQogICAgIEZpbGUub3BlbigiI3tCRU5DSF9EQVRBX1BBVEh9L3J1bnNjcmlwdCIsICJ3Iikgewog
ICAgICAgfCBmaWxlIHwKKyAgICAgIGZpbGUucHV0cyBleHBvcnRKU0NFbnZpcm9ubWVudFZhcmlh
YmxlcwogICAgICAgZmlsZS5wdXRzICJlY2hvIC1lIFwiSE9TVE5BTUU6XFxjXCIiCiAgICAgICBm
aWxlLnB1dHMgImhvc3RuYW1lIgogICAgICAgZmlsZS5wdXRzICJlY2hvIgpkaWZmIC0tZ2l0IGEv
VG9vbHMvU2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0cyBiL1Rvb2xzL1NjcmlwdHMvcnVuLWpz
Yy1zdHJlc3MtdGVzdHMKaW5kZXggYzkyYTM5MDk5NjAwYmNhMmMzNWRlZmMyZTNhOGQyM2UzMTBl
ZmNkMy4uY2YwN2QyM2U4YzYyMjdmYzk0ZTczNDkyNmRiYTA4NGU3Njc3ZWE0YyAxMDA3NTUKLS0t
IGEvVG9vbHMvU2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0cworKysgYi9Ub29scy9TY3JpcHRz
L3J1bi1qc2Mtc3RyZXNzLXRlc3RzCkBAIC0xOTE5LDM3ICsxOTE5LDIyIEBAIGRlZiBwcmVwYXJl
QnVuZGxlCiAgICAgICAgICAgICBlbmQKIAogICAgICAgICAgICAgaWYgJHJlbW90ZSBhbmQgJGhv
c3RPUyA9PSAibGludXgiCi0gICAgICAgICAgICAgICAgZ2VuZXJhdGVfYnVuZGxlID0gKFBhdGhu
YW1lLm5ldyhUSElTX1NDUklQVF9QQVRIKS5kaXJuYW1lICsgJ2dlbmVyYXRlLWJ1bmRsZScpLnJl
YWxwYXRoCisgICAgICAgICAgICAgICAgYnVuZGxlX2JpbmFyeSA9IChQYXRobmFtZS5uZXcoVEhJ
U19TQ1JJUFRfUEFUSCkuZGlybmFtZSArICdidW5kbGUtYmluYXJ5JykucmVhbHBhdGgKICAgICAg
ICAgICAgICAgICBEaXIubWt0bXBkaXIgewogICAgICAgICAgICAgICAgICAgICB8IHRtcGRpciB8
CiAgICAgICAgICAgICAgICAgICAgICMgR2VuZXJhdGUgYnVuZGxlIGluIGEgdGVtcG9yYXJ5IGRp
cmVjdG9yeSBzbyB0aGF0CiAgICAgICAgICAgICAgICAgICAgICMgd2UgY2FuIHNhZmVseSBwaWNr
IGl0IHVwIHJlZ2FyZGxlc3Mgb2YgaXRzIG5hbWUKICAgICAgICAgICAgICAgICAgICAgIyAoaXQn
cyB0aGUgb25seSB6aXAgZmlsZSB0aGVyZSkuCiAgICAgICAgICAgICAgICAgICAgIGNtZGxpbmUg
PSBbCi0gICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZV9idW5kbGUudG9fcywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICItLXBsYXRmb3JtPWd0ayIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAiLS1idW5kbGU9anNjIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICItLXN5c2xpYnM9
YnVuZGxlLWFsbCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAiLS1uby1zdHJpcCIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAiLS1jb21wcmVzc2lvbj10YXIueHoiLAotICAgICAgICAgICAg
ICAgICAgICAgICAgKCRidWlsZFR5cGUgPT0gInJlbGVhc2UiKSA/ICItLXJlbGVhc2UiIDogIi0t
ZGVidWciLAotICAgICAgICAgICAgICAgICAgICAgICAgIi0tZGVzdGluYXRpb249I3t0bXBkaXJ9
IgorICAgICAgICAgICAgICAgICAgICAgICAgYnVuZGxlX2JpbmFyeS50b19zLAorICAgICAgICAg
ICAgICAgICAgICAgICAgIi0tZGVzdC1kaXI9I3skanNjUGF0aC5kaXJuYW1lfSIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAiLS1sb2ctbGV2ZWw9ZGVidWciLAorICAgICAgICAgICAgICAgICAg
ICAgICAgJGpzY1BhdGgudG9fcwogICAgICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICAg
ICAgICAgIGlmIG5vdCAkbGRkLm5pbD8KICAgICAgICAgICAgICAgICAgICAgICAgIGNtZGxpbmUg
PDwgIi0tbGRkPSN7JGxkZH0iCiAgICAgICAgICAgICAgICAgICAgIGVuZAogICAgICAgICAgICAg
ICAgICAgICBteXN5cyhjbWRsaW5lKQotICAgICAgICAgICAgICAgICAgICBhcmNoaXZlcyA9IERp
ci5nbG9iKCIje3RtcGRpcn0vKi50YXIueHoiKQotICAgICAgICAgICAgICAgICAgICBpZiBhcmNo
aXZlcy5zaXplICE9IDEKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlICJFeHBlY3RlZCBl
eGFjdGx5IG9uZSBlbnRyeSBpbiB0bXBkaXIsIG5vdCAje2FyY2hpdmVzfSIKLSAgICAgICAgICAg
ICAgICAgICAgZW5kCi0gICAgICAgICAgICAgICAgICAgICMgTm90ZTogd2Ugb3ZlcndyaXRlICdq
c2MnLiBUaGlzIG9idmlvdXNseSBjb25mbGljdHMgd2l0aAotICAgICAgICAgICAgICAgICAgICAj
ICFjb3B5Vk0gYnV0LCB0aGVuIGdhaW4sIHNvIGRvZXMgJHJlbW90ZS4KLSAgICAgICAgICAgICAg
ICAgICAgbXlzeXMoWyJ0YXIiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1DIiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICRqc2NQYXRoLmRpcm5hbWUudG9fcywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICIteGYiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJj
aGl2ZXNbMF1dKQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVuZAogICAgICAgICB9
CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2JpbmFyeV9idW5kbGluZy9fX2lu
aXRfXy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvYmluYXJ5X2J1bmRsaW5nL19faW5pdF9f
LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmIzNzZiZjJiZWEyYjZhZjVjZTc5ZDNlM2QzM2M3M2FkZWM0MzRmMTgK
LS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2JpbmFyeV9idW5kbGlu
Zy9fX2luaXRfXy5weQpAQCAtMCwwICsxLDEzIEBACisjIFJlcXVpcmVkIGZvciBQeXRob24gdG8g
c2VhcmNoIHRoaXMgZGlyZWN0b3J5IGZvciBtb2R1bGUgZmlsZXMKKworIyBLZWVwIHRoaXMgZmls
ZSBmcmVlIG9mIGFueSBjb2RlIG9yIGltcG9ydCBzdGF0ZW1lbnRzIHRoYXQgY291bGQKKyMgY2F1
c2UgZWl0aGVyIGFuIGVycm9yIHRvIG9jY3VyIG9yIGEgbG9nIG1lc3NhZ2UgdG8gYmUgbG9nZ2Vk
LgorIyBUaGlzIGVuc3VyZXMgdGhhdCBjYWxsaW5nIGNvZGUgY2FuIGltcG9ydCBpbml0aWFsaXph
dGlvbiBjb2RlIGZyb20KKyMgd2Via2l0cHkgYmVmb3JlIGFueSBlcnJvcnMgb3IgbG9nIG1lc3Nh
Z2VzIGR1ZSB0byBjb2RlIGluIHRoaXMgZmlsZS4KKyMgSW5pdGlhbGl6YXRpb24gY29kZSBjYW4g
aW5jbHVkZSB0aGluZ3MgbGlrZSB2ZXJzaW9uLWNoZWNraW5nIGNvZGUgYW5kCisjIGxvZ2dpbmcg
Y29uZmlndXJhdGlvbiBjb2RlLgorIworIyBXZSBkbyBub3QgZXhlY3V0ZSBhbnkgdmVyc2lvbi1j
aGVja2luZyBjb2RlIG9yIGxvZ2dpbmcgY29uZmlndXJhdGlvbgorIyBjb2RlIGluIHRoaXMgZmls
ZSBzbyB0aGF0IGNhbGxlcnMgY2FuIG9wdC1pbiBhcyB0aGV5IHdhbnQuICBUaGlzIGFsc28KKyMg
YWxsb3dzIGRpZmZlcmVudCBjYWxsZXJzIHRvIGNob29zZSBkaWZmZXJlbnQgaW5pdGlhbGl6YXRp
b24gY29kZSwKKyMgYXMgbmVjZXNzYXJ5LgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9iaW5hcnlfYnVuZGxpbmcvYnVuZGxlLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9i
aW5hcnlfYnVuZGxpbmcvYnVuZGxlLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM2ZTU1Yjg4OTMxNTdkOGJkYWNh
NmZkMjY1NTA3Y2MwNDEzYWJlOGQKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2JpbmFyeV9idW5kbGluZy9idW5kbGUucHkKQEAgLTAsMCArMSw5OCBAQAorIyBDb3B5
cmlnaHQgKEMpIDIwMTgsIDIwMjAsIDIwMjEgSWdhbGlhIFMuTC4KKyMKKyMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisj
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUgbWV0OgorIworIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRoaXMKKyMgICAgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0IG5vdGljZSwKKyMgICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbgorIyAgICBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisjIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKKyMgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisjIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisj
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTCisjIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQg
b3MKK2ltcG9ydCBzaHV0aWwKK2ltcG9ydCBzdWJwcm9jZXNzCisKK19sb2cgPSBsb2dnaW5nLmdl
dExvZ2dlcihfX25hbWVfXykKKworCitjbGFzcyBCaW5hcnlCdW5kbGVyOgorICAgIFZBUl9NWURJ
UiA9ICdNWURJUicKKyAgICBWQVJfSU5URVJQUkVURVIgPSAnSU5URVJQUkVURVInCisKKyAgICBk
ZWYgX19pbml0X18oc2VsZiwgZGVzdGluYXRpb25fZGlyLCBzaG91bGRfc3RyaXBfb2JqZWN0cyk6
CisgICAgICAgIGlmIHNodXRpbC53aGljaCgncGF0Y2hlbGYnKSBpcyBOb25lOgorICAgICAgICAg
ICAgX2xvZy5lcnJvcigiQ291bGQgbm90IGZpbmQgYHBhdGNoZWxmYCBpbiAkUEFUSCIpCisgICAg
ICAgICAgICByYWlzZSBFeGNlcHRpb24oIk1pc3NpbmcgcmVxdWlyZWQgYmluYXJ5IGBwYXRjaGVs
ZmAiKQorICAgICAgICBzZWxmLl9kZXN0aW5hdGlvbl9kaXIgPSBkZXN0aW5hdGlvbl9kaXIKKyAg
ICAgICAgc2VsZi5fc2hvdWxkX3N0cmlwX29iamVjdHMgPSBzaG91bGRfc3RyaXBfb2JqZWN0cwor
CisgICAgZGVmIGRlc3RpbmF0aW9uX2RpcihzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2Rl
c3RpbmF0aW9uX2RpcgorCisgICAgZGVmIGNvcHlfYW5kX3JlbW92ZV9ycGF0aChzZWxmLCBvcmln
X2ZpbGUsIHR5cGU9J2JpbicsIGRlc3RpbmF0aW9uX2Rpcj1Ob25lKToKKyAgICAgICAgZGlyX3N1
ZmZpeCA9ICdsaWInIGlmIHR5cGUgPT0gJ2ludGVycHJldGVyJyBlbHNlIHR5cGUKKyAgICAgICAg
ZGVzdGluYXRpb25fZGlyID0gb3MucGF0aC5qb2luKHNlbGYuX2Rlc3RpbmF0aW9uX2RpciwgZGly
X3N1ZmZpeCkKKyAgICAgICAgaWYgbm90IG9zLnBhdGguaXNkaXIoZGVzdGluYXRpb25fZGlyKToK
KyAgICAgICAgICAgIG9zLm1ha2VkaXJzKGRlc3RpbmF0aW9uX2RpcikKKworICAgICAgICBpZiBu
b3Qgb3MucGF0aC5pc2ZpbGUob3JpZ19maWxlKToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJy
b3IoJ0NhbiBub3QgZmluZCBmaWxlICVzJyAlIG9yaWdfZmlsZSkKKworICAgICAgICBfbG9nLmlu
Zm8oJ0FkZCB0byBidW5kbGUgWyVzXTogJXMnICUgKHR5cGUsIG9yaWdfZmlsZSkpCisgICAgICAg
IHRyeToKKyAgICAgICAgICAgIHNodXRpbC5jb3B5KG9yaWdfZmlsZSwgZGVzdGluYXRpb25fZGly
KQorICAgICAgICBleGNlcHQgc2h1dGlsLlNhbWVGaWxlRXJyb3I6CisgICAgICAgICAgICAjIE1h
eSByZWFzb25hYmx5IGhhcHBlbiBpZiB0aGUgY2FsbGVyIHRyaWVzIHRvIGJ1bmRsZSB0aGUgZmls
ZXMgJ2luIHBsYWNlJy4KKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBwYXRjaF9lbGZfY29t
bWFuZCA9IFsncGF0Y2hlbGYnLCAnLS1yZW1vdmUtcnBhdGgnLCBvcy5wYXRoLmpvaW4oZGVzdGlu
YXRpb25fZGlyLCBvcy5wYXRoLmJhc2VuYW1lKG9yaWdfZmlsZSkpXQorICAgICAgICBpZiBzdWJw
cm9jZXNzLmNhbGwocGF0Y2hfZWxmX2NvbW1hbmQpICE9IDA6CisgICAgICAgICAgICBfbG9nLmVy
cm9yKCdUaGUgcGF0Y2hlbGYgY29tbWFuZCByZXR1cm5lZCBub24temVybyBzdGF0dXMnKQorCisg
ICAgICAgIGlmIHNlbGYuX3Nob3VsZF9zdHJpcF9vYmplY3RzOgorICAgICAgICAgICAgaWYgc2h1
dGlsLndoaWNoKCdzdHJpcCcpOgorICAgICAgICAgICAgICAgIHN0cmlwX2NvbW1hbmQgPSBbJ3N0
cmlwJywgJy0tc3RyaXAtdW5uZWVkZWQnLCBvcy5wYXRoLmpvaW4oZGVzdGluYXRpb25fZGlyLCBv
cy5wYXRoLmJhc2VuYW1lKG9yaWdfZmlsZSkpXQorICAgICAgICAgICAgICAgIGlmIHN1YnByb2Nl
c3MuY2FsbChzdHJpcF9jb21tYW5kKSAhPSAwOgorICAgICAgICAgICAgICAgICAgICBfbG9nLmVy
cm9yKCdUaGUgc3RyaXAgY29tbWFuZCByZXR1cm5lZCBub24temVybyBzdGF0dXMnKQorICAgICAg
ICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBfbG9nLndhcm5pbmcoJ3N0cmlwIG5vdCBmb3Vu
ZC4gTm90IHN0cmlwcGluZyBvYmplY3QnKQorCisgICAgZGVmIGdlbmVyYXRlX3dyYXBwZXJfc2Ny
aXB0KHNlbGYsIGludGVycHJldGVyLCBiaW5hcnlfdG9fd3JhcCwgZXh0cmFfZW52aXJvbm1lbnRf
dmFyaWFibGVzPXt9KToKKyAgICAgICAgaWYgbm90IG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9p
bihzZWxmLl9kZXN0aW5hdGlvbl9kaXIsICdiaW4nLCBiaW5hcnlfdG9fd3JhcCkpOgorICAgICAg
ICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdDYW5ub3QgZmluZCBiaW5hcnkgdG8gd3JhcCBmb3Ig
JXMnICUgYmluYXJ5X3RvX3dyYXApCisgICAgICAgIF9sb2cuaW5mbygnR2VuZXJhdGUgd3JhcHBl
ciBzY3JpcHQgJXMnICUgYmluYXJ5X3RvX3dyYXApCisgICAgICAgIHNjcmlwdF9maWxlID0gb3Mu
cGF0aC5qb2luKHNlbGYuX2Rlc3RpbmF0aW9uX2RpciwgYmluYXJ5X3RvX3dyYXApCisKKyAgICAg
ICAgd2l0aCBvcGVuKHNjcmlwdF9maWxlLCAndycpIGFzIHNjcmlwdF9oYW5kbGU6CisgICAgICAg
ICAgICBzY3JpcHRfaGFuZGxlLndyaXRlKCcjIS9iaW4vc2hcbicpCisgICAgICAgICAgICBzY3Jp
cHRfaGFuZGxlLndyaXRlKCclcz0iJChkaXJuYW1lICQocmVhZGxpbmsgLWYgJDApKSJcbicgJSBz
ZWxmLlZBUl9NWURJUikKKyAgICAgICAgICAgIHNjcmlwdF9oYW5kbGUud3JpdGUoJ2V4cG9ydCBM
RF9MSUJSQVJZX1BBVEg9IiR7JXN9L2xpYiJcbicgJSBzZWxmLlZBUl9NWURJUikKKworICAgICAg
ICAgICAgaWYgaW50ZXJwcmV0ZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgc2NyaXB0
X2hhbmRsZS53cml0ZSgnSU5URVJQUkVURVI9IiR7JXN9L2xpYi8lcyJcbicgJSAoc2VsZi5WQVJf
TVlESVIsIG9zLnBhdGguYmFzZW5hbWUoaW50ZXJwcmV0ZXIpKSkKKworICAgICAgICAgICAgIyBN
YXkgdXNlIHRoZSB2YWx1ZSBvZiBJTlRFUlBSRVRFUiwgc28gaGFzIHRvIGNvbWUgYWZ0ZXIKKyAg
ICAgICAgICAgICMgdGhlIGRlZmluaXRpb24uCisgICAgICAgICAgICBmb3IgdmFyLCB2YWx1ZSBp
biBleHRyYV9lbnZpcm9ubWVudF92YXJpYWJsZXMuaXRlbXMoKToKKyAgICAgICAgICAgICAgICBz
Y3JpcHRfaGFuZGxlLndyaXRlKCdleHBvcnQgJXM9XCIlc1wiXG4nICUgKHZhciwgdmFsdWUpKQor
CisgICAgICAgICAgICBpZiBpbnRlcnByZXRlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAg
ICBzY3JpcHRfaGFuZGxlLndyaXRlKCdleGVjICIke0lOVEVSUFJFVEVSfSIgIiR7JXN9L2Jpbi8l
cyIgIiRAIlxuJyAlIChzZWxmLlZBUl9NWURJUiwgYmluYXJ5X3RvX3dyYXApKQorICAgICAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgICAgICBzY3JpcHRfaGFuZGxlLndyaXRlKCdleGVjICIkeyVz
fS9iaW4vJXMiICIkQCJcbicgJSAoc2VsZi5WQVJfTVlESVIsIGJpbmFyeV90b193cmFwKSkKKwor
ICAgICAgICBvcy5jaG1vZChzY3JpcHRfZmlsZSwgMG83NTUpCmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2JpbmFyeV9idW5kbGluZy9sZGQucHkgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2JpbmFyeV9idW5kbGluZy9sZGQucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWNkYzc3ZjI1MjdjMTlh
ZDJjMzcyYjlhOGYyYTYxMDExYmNhY2Q0YwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvYmluYXJ5X2J1bmRsaW5nL2xkZC5weQpAQCAtMCwwICsxLDEwOSBAQAorIyBD
b3B5cmlnaHQgKEMpIDIwMTgsIDIwMjAsIDIwMjEgSWdhbGlhIFMuTC4KKyMKKyMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUgbWV0OgorIworIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRoaXMKKyMgICAg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0IG5vdGljZSwKKyMgICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbgorIyAgICBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisj
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisjIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyMgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisjIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisjIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgbG9nZ2luZworZnJvbSBw
YXRobGliIGltcG9ydCBQdXJlUGF0aAoraW1wb3J0IG9zCitpbXBvcnQgc2h1dGlsCitpbXBvcnQg
c3VicHJvY2VzcworCitfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCisKKworY2xh
c3MgU2hhcmVkT2JqZWN0UmVzb2x2ZXIoKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbGRkKToK
KyAgICAgICAgc2VsZi5fbGRkID0gbGRkCisgICAgICAgIGlmIHNodXRpbC53aGljaCgncGF0Y2hl
bGYnKSBpcyBOb25lOgorICAgICAgICAgICAgX2xvZy5lcnJvcigiQ291bGQgbm90IGZpbmQgYHBh
dGNoZWxmYCBpbiAkUEFUSCIpCisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIk1pc3Npbmcg
cmVxdWlyZWQgYmluYXJ5IGBwYXRjaGVsZmAiKQorCisgICAgZGVmIF9ydW5fY21kX2FuZF9nZXRf
b3V0cHV0KHNlbGYsIGNvbW1hbmQpOgorICAgICAgICBfbG9nLmRlYnVnKCJFWEVDICVzIiAlIGNv
bW1hbmQpCisgICAgICAgIGNvbW1hbmRfcHJvY2VzcyA9IHN1YnByb2Nlc3MuUG9wZW4oY29tbWFu
ZCwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VULCBlbmNv
ZGluZz0ndXRmLTgnKQorICAgICAgICBzdGRvdXQsIHN0ZGVyciA9IGNvbW1hbmRfcHJvY2Vzcy5j
b21tdW5pY2F0ZSgpCisgICAgICAgIHJldHVybiBjb21tYW5kX3Byb2Nlc3MucmV0dXJuY29kZSwg
c3Rkb3V0LCBzdGRlcnIKKworICAgIGRlZiBfZ2V0X2ludGVycHJldGVyX29iam5hbWUoc2VsZiwg
b2JqZWN0KToKKyAgICAgICAgIyBOb3RlOiB3ZSB1c2UgcGF0Y2hlbGYgdG8gZ2V0IHRoZSBvYmpl
Y3QgbmFtZSAobm90IHRoZSBwYXRoISkKKyAgICAgICAgIyBvZiB0aGUgaW50ZXJwcmV0ZXIgYmVj
YXVzZSB0aGlzIHdvcmtzIHJlZ2FyZGxlc3Mgb2YgdGhlCisgICAgICAgICMgYXJjaGl0ZWN0dXJl
IG9mIHRoZSBFTEYgZmlsZS4KKyAgICAgICAgcmV0Y29kZSwgc3Rkb3V0LCBzdGRlcnIgPSBzZWxm
Ll9ydW5fY21kX2FuZF9nZXRfb3V0cHV0KFsncGF0Y2hlbGYnLCAnLS1wcmludC1pbnRlcnByZXRl
cicsIG9iamVjdF0pCisgICAgICAgIGlmIHJldGNvZGUgIT0gMDoKKyAgICAgICAgICAgIF9sb2cu
ZGVidWcoInBhdGNoZWxmIHN0ZG91dDpcbiVzXG5QYXRjaGVsZiBzdGRlcnI6XG4lcyIgJSAoc3Rk
b3V0LCBzdGRlcnIpKQorICAgICAgICAgICAgaWYgJ2Nhbm5vdCBmaW5kIHNlY3Rpb24nIGluIHN0
ZG91dDoKKyAgICAgICAgICAgICAgICAjIFRoaXMgaXMgZmluZTsgd2Ugb25seSBleHBlY3QgYW4g
aW50ZXJwcmV0ZXIgaW4gdGhlIG1haW4gYmluYXJ5LgorICAgICAgICAgICAgICAgIHJldHVybiBO
b25lCisgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ1RoZSBwYXRjaGVsZiBjb21tYW5k
IHJldHVybmVkIG5vbi16ZXJvIHN0YXR1cyBmb3Igb2JqZWN0ICVzJyAlIG9iamVjdCkKKyAgICAg
ICAgaW50ZXJwcmV0ZXJfcGF0aCA9IFB1cmVQYXRoKHN0ZG91dC5zdHJpcCgpKQorICAgICAgICBy
ZXR1cm4gaW50ZXJwcmV0ZXJfcGF0aC5uYW1lCisKKyAgICBkZWYgX2dldF9saWJzX2FuZF9pbnRl
cnByZXRlcihzZWxmLCBvYmplY3QpOgorICAgICAgICBpbnRlcnByZXRlciA9IE5vbmUKKyAgICAg
ICAgcmV0Y29kZSwgc3Rkb3V0LCBzdGRlcnIgPSBzZWxmLl9ydW5fY21kX2FuZF9nZXRfb3V0cHV0
KFtzZWxmLl9sZGQsIG9iamVjdF0pCisgICAgICAgIF9sb2cuZGVidWcoImxkZCBzdGRvdXQ6XG4l
cyIgJSBzdGRvdXQpCisgICAgICAgIGlmIHJldGNvZGUgIT0gMDoKKyAgICAgICAgICAgIHJhaXNl
IFJ1bnRpbWVFcnJvcignVGhlICVzIGNvbW1hbmQgcmV0dXJuZWQgbm9uLXplcm8gc3RhdHVzIGZv
ciBvYmplY3QgJXMnICUgKHNlbGYuX2xkZCwgb2JqZWN0KSkKKyAgICAgICAgbGlicyA9IFtdCisg
ICAgICAgIGZvciBsaW5lIGluIHN0ZG91dC5zcGxpdGxpbmVzKCk6CisgICAgICAgICAgICBsaW5l
ID0gbGluZS5zdHJpcCgpCisgICAgICAgICAgICBpZiAnPT4nIGluIGxpbmU6CisgICAgICAgICAg
ICAgICAgbGluZSA9IGxpbmUuc3BsaXQoJz0+JylbMV0uc3RyaXAoKQorICAgICAgICAgICAgICAg
IGlmICdub3QgZm91bmQnIGluIGxpbmU6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRp
bWVFcnJvcignbGRkIGNhbiBub3QgcmVzb2x2ZSBhbGwgZGVwZW5kZW5jaWVzIGZvciBvYmplY3Qg
JXMuJyAlIG9iamVjdCkKKyAgICAgICAgICAgICAgICBsaW5lID0gbGluZS5zcGxpdCgnICcpWzBd
LnN0cmlwKCkKKyAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShsaW5lKToKKyAgICAg
ICAgICAgICAgICAgICAgbGlicy5hcHBlbmQobGluZSkKKyAgICAgICAgICAgIGVsc2U6CisgICAg
ICAgICAgICAgICAgbGluZSA9IGxpbmUuc3BsaXQoJyAnKVswXS5zdHJpcCgpCisgICAgICAgICAg
ICAgICAgaWYgb3MucGF0aC5pc2ZpbGUobGluZSk6CisgICAgICAgICAgICAgICAgICAgIGludGVy
cHJldGVyID0gbGluZQorICAgICAgICBpZiBpbnRlcnByZXRlciBpcyBOb25lOgorICAgICAgICAg
ICAgIyBUaGlzIGlzIHRoZSBjYXNlIGZvciBub24tbmF0aXZlIGJpbmFyaWVzLiBGb3IgdGhvc2Us
IHdlCisgICAgICAgICAgICAjIGNhbiB1c2UgYSBjcm9zcy1sZGQgKHhsZGQpLCBidXQgdGhlbiB0
aGUgaW50ZXJwcmV0ZXIKKyAgICAgICAgICAgICMgbG9va3MgbGlrZSBhbnkgb3RoZXIgc2hhcmVk
IG9iamVjdCBpbiB0aGUgb3V0cHV0IG9mCisgICAgICAgICAgICAjIGxkZC4gVHJ5IHRvIGlkZW50
aWZ5IGl0IGJ5IGxvb2tpbmcgYXQgdGhlIG9iamVjdCBuYW1lCisgICAgICAgICAgICAjIGZyb20g
dGhlIGludGVycHJldGVyIHN0cmluZy4KKyAgICAgICAgICAgIGludGVycHJldGVyX29iam5hbWUg
PSBzZWxmLl9nZXRfaW50ZXJwcmV0ZXJfb2JqbmFtZShvYmplY3QpCisgICAgICAgICAgICBmb3Ig
bGliIGluIGxpYnM6CisgICAgICAgICAgICAgICAgaWYgUHVyZVBhdGgobGliKS5uYW1lID09IGlu
dGVycHJldGVyX29iam5hbWU6CisgICAgICAgICAgICAgICAgICAgIGludGVycHJldGVyID0gbGli
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAjIElmIHdlIGZvdW5kIGFu
IGludGVycHJldGVyLCByZW1vdmUgaXQgZnJvbSB0aGUgbGlicy4KKyAgICAgICAgICAgIGxpYnMg
PSBbbGliIGZvciBsaWIgaW4gbGlicyBpZiBsaWIgIT0gaW50ZXJwcmV0ZXJdCisgICAgICAgIHJl
dHVybiBsaWJzLCBpbnRlcnByZXRlcgorCisgICAgZGVmIF9sZGRfcmVjdXJzaXZlX2dldF9saWJz
X2FuZF9pbnRlcnByZXRlcihzZWxmLCBvYmplY3QsIGFscmVhZHlfY2hlY2tlZF9saWJzPVtdKToK
KyAgICAgICAgbGlicywgaW50ZXJwcmV0ZXIgPSBzZWxmLl9nZXRfbGlic19hbmRfaW50ZXJwcmV0
ZXIob2JqZWN0KQorICAgICAgICBpZiBsaWJzOgorICAgICAgICAgICAgZm9yIGxpYiBpbiBsaWJz
OgorICAgICAgICAgICAgICAgIGlmIGxpYiBpbiBhbHJlYWR5X2NoZWNrZWRfbGliczoKKyAgICAg
ICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICAjIGF2b2lkIHJlY3Vyc2lv
biBsb29wcyAobGliZnJlZXR5cGUuc28uNiA8LT4gbGliaGFyZmJ1enouc28uMCkKKyAgICAgICAg
ICAgICAgICBhbHJlYWR5X2NoZWNrZWRfbGlicy5hcHBlbmQobGliKQorICAgICAgICAgICAgICAg
IHN1Yl9saWJzLCBzdWJfaW50ZXJwcmV0ZXIgPSBzZWxmLl9sZGRfcmVjdXJzaXZlX2dldF9saWJz
X2FuZF9pbnRlcnByZXRlcihsaWIsIGFscmVhZHlfY2hlY2tlZF9saWJzKQorICAgICAgICAgICAg
ICAgIGxpYnMuZXh0ZW5kKHN1Yl9saWJzKQorICAgICAgICAgICAgICAgIGlmIHN1Yl9pbnRlcnBy
ZXRlciBhbmQgaW50ZXJwcmV0ZXIgYW5kIHN1Yl9pbnRlcnByZXRlciAhPSBpbnRlcnByZXRlcjoK
KyAgICAgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdsaWJyYXJ5ICVzIGhhcyBp
bnRlcnByZXRlciAlcyBidXQgb2JqZWN0ICVzIGhhcyBpbnRlcnByZXRlciAlcycgJSAobGliLCBz
dWJfaW50ZXJwcmV0ZXIsIG9iamVjdCwgaW50ZXJwcmV0ZXIpKQorICAgICAgICByZXR1cm4gbGlz
dChzZXQobGlicykpLCBpbnRlcnByZXRlcgorCisgICAgZGVmIGdldF9saWJzX2FuZF9pbnRlcnBy
ZXRlcihzZWxmLCBvYmplY3QsIGFscmVhZHlfY2hlY2tlZF9saWJzPVtdKToKKyAgICAgICAgcmV0
dXJuIHNlbGYuX2xkZF9yZWN1cnNpdmVfZ2V0X2xpYnNfYW5kX2ludGVycHJldGVyKG9iamVjdCwg
YWxyZWFkeV9jaGVja2VkX2xpYnMpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>