<?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>225985</bug_id>
          
          <creation_ts>2021-05-19 15:07:18 -0700</creation_ts>
          <short_desc>[git-webkit] Add setup function</short_desc>
          <delta_ts>2021-08-06 15:16:42 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=225991</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=226024</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=226980</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=228597</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=228867</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>228867</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jonathan Bedard">jbedard</reporter>
          <assigned_to name="Jonathan Bedard">jbedard</assigned_to>
          <cc>aakash_jain</cc>
    
    <cc>dean_johnson</cc>
    
    <cc>dewei_zhu</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1761721</commentid>
    <comment_count>0</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-05-19 15:07:18 -0700</bug_when>
    <thetext>The idea behind a &apos;setup&apos; function is to provide a central location for us to configure git settings for a specific repository. Right now, the most important part of this function is setting the merge strategy, although more will be added in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761722</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-05-19 15:08:02 -0700</bug_when>
    <thetext>&lt;rdar://problem/78226729&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761748</commentid>
    <comment_count>2</comment_count>
      <attachid>429107</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-05-19 15:59:40 -0700</bug_when>
    <thetext>Created attachment 429107
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762579</commentid>
    <comment_count>3</comment_count>
      <attachid>429107</attachid>
    <who name="Dean Johnson">dean_johnson</who>
    <bug_when>2021-05-21 14:11:50 -0700</bug_when>
    <thetext>Comment on attachment 429107
Patch

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

&gt; Tools/Scripts/libraries/webkitcorepy/webkitcorepy/decorators.py:68
&gt; +class hybridmethod(object):

Let&apos;s chat about this one on Monday.

&gt; Tools/Scripts/libraries/webkitcorepy/webkitcorepy/terminal.py:44
&gt; +        return default or options[0]

I don&apos;t think we should automatically choose any value other than the default, otherwise someone who provides an invalid answer to &apos;Yes&apos; / &apos;No&apos; would always get yes, even if they were required to enter something.

We also may want to consider a &apos;required&apos; option where this can loop if we fail to parse the input from the user.

&gt; Tools/Scripts/libraries/webkitscmpy/webkitscmpy/local/git.py:56
&gt; +        if isinstance(context, type):

Is this trying to figure out if there is an instance of the class, or the object, because of @decorators.hybridmethod? This seems excessively complex -- can we implement this function with less abstractions?

&gt; Tools/Scripts/libraries/webkitscmpy/webkitscmpy/program/setup.py:42
&gt; +    def git(cls, args, repository, **kwargs):

I wonder if this code should instead be on the repository object, so SVN / Git / SCM-X could implement their own setup functions?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762596</commentid>
    <comment_count>4</comment_count>
      <attachid>429107</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-05-21 14:33:12 -0700</bug_when>
    <thetext>Comment on attachment 429107
Patch

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

&gt;&gt; Tools/Scripts/libraries/webkitcorepy/webkitcorepy/terminal.py:44
&gt;&gt; +        return default or options[0]
&gt; 
&gt; I don&apos;t think we should automatically choose any value other than the default, otherwise someone who provides an invalid answer to &apos;Yes&apos; / &apos;No&apos; would always get yes, even if they were required to enter something.
&gt; 
&gt; We also may want to consider a &apos;required&apos; option where this can loop if we fail to parse the input from the user.

Perhaps if no default is specified, then we loop until a matching answer is found?

&gt;&gt; Tools/Scripts/libraries/webkitscmpy/webkitscmpy/local/git.py:56
&gt;&gt; +        if isinstance(context, type):
&gt; 
&gt; Is this trying to figure out if there is an instance of the class, or the object, because of @decorators.hybridmethod? This seems excessively complex -- can we implement this function with less abstractions?

The essential problem here is that there exists both a global git config and a local git config, and we need access to both. The current implementation (using the hybrid method), makes this distinction by treating Git.config() and Git().config() differently, because that is the essence of what `git config -l` does, behave differently when in the global context vs the local context.

&gt;&gt; Tools/Scripts/libraries/webkitscmpy/webkitscmpy/program/setup.py:42
&gt;&gt; +    def git(cls, args, repository, **kwargs):
&gt; 
&gt; I wonder if this code should instead be on the repository object, so SVN / Git / SCM-X could implement their own setup functions?

I did think about this, but there really isn&apos;t a case for running the setup except through the command-line script. I didn&apos;t want to muddy the waters for other potentials clients of webkitscmpy, setup is a function that should only be preformed by a script explicitly called by the user.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781795</commentid>
    <comment_count>5</comment_count>
      <attachid>434874</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-08-03 17:34:13 -0700</bug_when>
    <thetext>Created attachment 434874
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781796</commentid>
    <comment_count>6</comment_count>
      <attachid>434874</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-08-03 17:35:52 -0700</bug_when>
    <thetext>Comment on attachment 434874
Patch

An initial crack at a setup function which configures your WebKit checkout for interacting with GitHub</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781986</commentid>
    <comment_count>7</comment_count>
      <attachid>434922</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-08-04 12:10:12 -0700</bug_when>
    <thetext>Created attachment 434922
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782271</commentid>
    <comment_count>8</comment_count>
      <attachid>435003</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-08-05 10:33:19 -0700</bug_when>
    <thetext>Created attachment 435003
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782335</commentid>
    <comment_count>9</comment_count>
      <attachid>435024</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-08-05 14:12:38 -0700</bug_when>
    <thetext>Created attachment 435024
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782383</commentid>
    <comment_count>10</comment_count>
      <attachid>435035</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-08-05 16:04:36 -0700</bug_when>
    <thetext>Created attachment 435035
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782407</commentid>
    <comment_count>11</comment_count>
      <attachid>435043</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-08-05 17:24:14 -0700</bug_when>
    <thetext>Created attachment 435043
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782585</commentid>
    <comment_count>12</comment_count>
      <attachid>435043</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2021-08-06 15:08:33 -0700</bug_when>
    <thetext>Comment on attachment 435043
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782590</commentid>
    <comment_count>13</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-08-06 15:16:41 -0700</bug_when>
    <thetext>Committed r280739 (240325@main): &lt;https://commits.webkit.org/240325@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 435043.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429107</attachid>
            <date>2021-05-19 15:59:40 -0700</date>
            <delta_ts>2021-08-03 17:34:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225985-20210519155939.patch</filename>
            <type>text/plain</type>
            <size>14965</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3NzQ3CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMWE4ZDhmYjlkOTNhM2JkZjNjYWE2NjY2N2QwZTdjMWRi
NjdjNDQyZi4uMzI1MTlmMTA2YmY2ODFkYmVmYzM1ZjRjNGQ5YzU0NGVlMDczMDg4MCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMx
IEBACisyMDIxLTA1LTE5ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbZ2l0LXdlYmtpdF0gQWRkIHNldHVwIGZ1bmN0aW9uCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU5ODUKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzc4MjI2NzI5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9f
X2luaXRfXy5weTogQWRkIFRlcm1pbmFsIGltcG9ydC4KKyAgICAgICAgKiBTY3JpcHRzL2xpYnJh
cmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L2NyZWRlbnRpYWxzLnB5OgorICAgICAgICAo
Y3JlZGVudGlhbHMpOiBVc2UgVGVybWluYWwuaW5wdXQuCisgICAgICAgICogU2NyaXB0cy9saWJy
YXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9kZWNvcmF0b3JzLnB5OgorICAgICAgICAo
aHlicmlkbWV0aG9kKTogU2ltaWxhciB0byB0aGUgImNsYXNzbWV0aG9kIiBkZWNvcmF0b3IsIGV4
Y2VwdCB0aGlzIGRlY29yYXRvciBhbGxvd3MgdGhlCisgICAgICAgIGRlY29yYXRlZCBmdW5jdGlv
bnMgdG8gZGlmZmVyZW50aWF0ZSBiZXR3ZWVuIGJlaW5nIGNhbGxlZCBieSB0aGUgY2xhc3MgYW5k
IGFuIGluc3RhbmNlCisgICAgICAgIG9mIHRoZSBjbGFzcy4KKyAgICAgICAgKiBTY3JpcHRzL2xp
YnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L3Rlcm1pbmFsLnB5OiBBZGRlZC4KKyAg
ICAgICAgKFRlcm1pbmFsLmlucHV0KTogUHl0aG9uIDIvMyBjb21wYXRpYmxlIGlucHV0IGZ1bmN0
aW9uLgorICAgICAgICAoVGVybWluYWwuY2hvb3NlKTogU2hhcmVkIGNvZGUgaW1wbGVtZW50aW5n
IGEgeWVzL25vIHByb21wdC4KKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21w
eS93ZWJraXRzY21weS9sb2NhbC9naXQucHk6CisgICAgICAgIChHaXQuY29uZmlnKTogUmV0dXJu
IHRoZSBnbG9iYWwgb3IgbG9jYWwgZ2l0IGNvbmZpZ3VyYXRpb24KKyAgICAgICAgKiBTY3JpcHRz
L2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9wcm9ncmFtL19faW5pdF9fLnB5Ogor
ICAgICAgICAobWFpbik6IEFkZCBTZXR1cCBzdWItY29tbWFuZC4KKyAgICAgICAgKiBTY3JpcHRz
L2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9wcm9ncmFtL3NldHVwLnB5OiBBZGRl
ZC4KKyAgICAgICAgKFNldHVwLmdpdGh1Yik6IEVuc3VyZSB0aGF0IEdpdEh1YiBjcmVkZW50aWFs
cyBhcmUgaW4gdGhlIGtleWNoYWluLgorICAgICAgICAoU2V0dXAuZ2l0KTogU2V0IHRoZSB1c2Vy
IGZvciB0aGUgcmVwb3NpdG9yeSwgYWxvbmcgd2l0aCBtZXJnZSBzdHJhdGVneS4KKyAgICAgICAg
KFNldHVwLnBhcnNlcik6CisgICAgICAgIChTZXR1cC5tYWluKToKKwogMjAyMS0wNS0xOCAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgTW92ZSBDRlN0cmluZ1JlZiBh
bmQgTlNTdHJpbmcgc3VwcG9ydCBmcm9tIFN0cmluZ0J1aWxkZXIgaW50byBTdHJpbmdDb25jYXRl
bmF0ZUNGCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkv
d2Via2l0Y29yZXB5L19faW5pdF9fLnB5IGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0
Y29yZXB5L3dlYmtpdGNvcmVweS9fX2luaXRfXy5weQppbmRleCBlOTc4NTA2YmYxNWNkMGQ1NGQ1
NWE3NzMyMWMwNjNiYjM0NWY4MTZjLi40ODllMGIwNzk3MjdjOWM4YzM2OTFjY2Y1ZGEzZGU0ODEx
M2EzYTg0IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkv
d2Via2l0Y29yZXB5L19faW5pdF9fLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dl
YmtpdGNvcmVweS93ZWJraXRjb3JlcHkvX19pbml0X18ucHkKQEAgLTM1LDYgKzM1LDcgQEAgZnJv
bSB3ZWJraXRjb3JlcHkudGltZW91dCBpbXBvcnQgVGltZW91dAogZnJvbSB3ZWJraXRjb3JlcHku
c3VicHJvY2Vzc191dGlscyBpbXBvcnQgVGltZW91dEV4cGlyZWQsIENvbXBsZXRlZFByb2Nlc3Ms
IHJ1bgogZnJvbSB3ZWJraXRjb3JlcHkub3V0cHV0X2NhcHR1cmUgaW1wb3J0IExvZ2dlckNhcHR1
cmUsIE91dHB1dENhcHR1cmUsIE91dHB1dER1cGxpY2F0ZQogZnJvbSB3ZWJraXRjb3JlcHkudGFz
a19wb29sIGltcG9ydCBUYXNrUG9vbAorZnJvbSB3ZWJraXRjb3JlcHkudGVybWluYWwgaW1wb3J0
IFRlcm1pbmFsCiBmcm9tIHdlYmtpdGNvcmVweS5jcmVkZW50aWFscyBpbXBvcnQgY3JlZGVudGlh
bHMKIAogdmVyc2lvbiA9IFZlcnNpb24oMCwgNSwgMTQpCmRpZmYgLS1naXQgYS9Ub29scy9TY3Jp
cHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L2NyZWRlbnRpYWxzLnB5IGIv
VG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9jcmVkZW50
aWFscy5weQppbmRleCBhMTQzOTNiNzk2NjRjMDZkOGRlYWRlNGY0NTRkNWM5MzliNWNmZjAzLi5m
YzQ4MjhkMGY3NGQxM2RiMmE5NTI1YzBiYTAyYjcyMGQ3YmMwOTQzIDEwMDY0NAotLS0gYS9Ub29s
cy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L2NyZWRlbnRpYWxz
LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3Jl
cHkvY3JlZGVudGlhbHMucHkKQEAgLTI1LDcgKzI1LDcgQEAgaW1wb3J0IGdldHBhc3MKIGltcG9y
dCBzeXMKIAogZnJvbSBzdWJwcm9jZXNzIGltcG9ydCBDYWxsZWRQcm9jZXNzRXJyb3IKLWZyb20g
d2Via2l0Y29yZXB5IGltcG9ydCBPdXRwdXRDYXB0dXJlCitmcm9tIHdlYmtpdGNvcmVweSBpbXBv
cnQgT3V0cHV0Q2FwdHVyZSwgVGVybWluYWwKIAogX2NhY2hlID0gZGljdCgpCiAKQEAgLTY0LDcg
KzY0LDcgQEAgZGVmIGNyZWRlbnRpYWxzKHVybCwgcmVxdWlyZWQ9VHJ1ZSwgbmFtZT1Ob25lLCBw
cm9tcHQ9Tm9uZSwga2V5X25hbWU9J3Bhc3N3b3JkJykKICAgICAgICAgICAgICAgICByYWlzZSBP
U0Vycm9yKCdObyB0dHkgdG8gcHJvbXB0IHVzZXIgZm9yIHVzZXJuYW1lJykKICAgICAgICAgICAg
IHN5cy5zdGRlcnIud3JpdGUoIkF1dGhlbnRpY2F0aW9uIHJlcXVpcmVkIHRvIHVzZSB7fVxuIi5m
b3JtYXQocHJvbXB0IG9yIG5hbWUpKQogICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgnVXNl
cm5hbWU6ICcpCi0gICAgICAgICAgICB1c2VybmFtZSA9IChpbnB1dCBpZiBzeXMudmVyc2lvbl9p
bmZvID4gKDMsIDApIGVsc2UgcmF3X2lucHV0KSgpCisgICAgICAgICAgICB1c2VybmFtZSA9IFRl
cm1pbmFsLmlucHV0KCkKICAgICAgICAgICAgIHVzZXJuYW1lX3Byb21wdGVkID0gVHJ1ZQogCiAg
ICAgaWYgbm90IGtleSBhbmQgcmVxdWlyZWQ6CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL2xp
YnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L2RlY29yYXRvcnMucHkgYi9Ub29scy9T
Y3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L2RlY29yYXRvcnMucHkK
aW5kZXggZjk4OGU0YTUzOTBmYWRhYTNiNDY3YTM2OGNmNDBmMjUwM2RlODZlMS4uMTQ1N2UyM2Iy
MjQxZTBmODlmMzAxMjhjMTgxOWJiNjQxMzBkYmQ2YiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0
cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9kZWNvcmF0b3JzLnB5CisrKyBi
L1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvZGVjb3Jh
dG9ycy5weQpAQCAtNjMsMyArNjMsMjEgQEAgY2xhc3MgTWVtb2l6ZShvYmplY3QpOgogICAgIGRl
ZiBjbGVhcihzZWxmKToKICAgICAgICAgc2VsZi5fY2FjaGUgPSBkZWZhdWx0ZGljdChkaWN0KQog
ICAgICAgICBzZWxmLl9sYXN0X2NhbGxlZCA9IGRlZmF1bHRkaWN0KGRpY3QpCisKKworY2xhc3Mg
aHlicmlkbWV0aG9kKG9iamVjdCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZ1bmN0aW9uKToK
KyAgICAgICAgc2VsZi5mdW5jdGlvbiA9IGZ1bmN0aW9uCisKKyAgICBkZWYgX19nZXRfXyhzZWxm
LCBvYmosIGNscyk6CisgICAgICAgIGNvbnRleHQgPSBvYmogaWYgb2JqIGlzIG5vdCBOb25lIGVs
c2UgY2xzCisKKyAgICAgICAgZGVmIHdyYXBwZXIoKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAg
ICAgIHJldHVybiBzZWxmLmZ1bmN0aW9uKGNvbnRleHQsICphcmdzLCAqKmt3YXJncykKKworICAg
ICAgICB3cmFwcGVyLl9fbmFtZV9fID0gc2VsZi5mdW5jdGlvbi5fX25hbWVfXworICAgICAgICB3
cmFwcGVyLl9fZG9jX18gPSBzZWxmLmZ1bmN0aW9uLl9fZG9jX18KKyAgICAgICAgd3JhcHBlci5f
X2Z1bmNfXyA9IHdyYXBwZXIuaW1fZnVuYyA9IHNlbGYuZnVuY3Rpb24KKyAgICAgICAgd3JhcHBl
ci5fX3NlbGZfXyA9IHdyYXBwZXIuaW1fc2VsZiA9IGNvbnRleHQKKworICAgICAgICByZXR1cm4g
d3JhcHBlcgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5
L3dlYmtpdGNvcmVweS90ZXJtaW5hbC5weSBiL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtp
dGNvcmVweS93ZWJraXRjb3JlcHkvdGVybWluYWwucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmY5MGIwY2YwNjg3
M2VkMGVlMTUxNTMwYjhjMDEwMWJmZDQ1N2QyZQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Nj
cmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvdGVybWluYWwucHkKQEAg
LTAsMCArMSw0NCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorIyBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisjIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCisjIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyMgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
CisjIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisjIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBv
cnQgc3lzCisKKworY2xhc3MgVGVybWluYWwob2JqZWN0KToKKyAgICBAY2xhc3NtZXRob2QKKyAg
ICBkZWYgaW5wdXQoY2xzLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICByZXR1cm4gKGlucHV0
IGlmIHN5cy52ZXJzaW9uX2luZm8gPiAoMywgMCkgZWxzZSByYXdfaW5wdXQpKCphcmdzLCAqKmt3
YXJncykKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBjaG9vc2UoY2xzLCBwcm9tcHQsIG9w
dGlvbnM9Tm9uZSwgZGVmYXVsdD1Ob25lLCBzdHJpY3Q9RmFsc2UpOgorICAgICAgICBvcHRpb25z
ID0gb3B0aW9ucyBvciAoJ1llcycsICdObycpCisKKyAgICAgICAgcmVzcG9uc2UgPSBjbHMuaW5w
dXQoJ3t9ICh7fSk6ICcuZm9ybWF0KHByb21wdCwgJy8nLmpvaW4ob3B0aW9ucykpKQorICAgICAg
ICBpZiBub3Qgc3RyaWN0OgorICAgICAgICAgICAgZm9yIG9wdGlvbiBpbiBvcHRpb25zOgorICAg
ICAgICAgICAgICAgIGlmIG9wdGlvbi5sb3dlcigpLnN0YXJ0c3dpdGgocmVzcG9uc2UubG93ZXIo
KSk6CisgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gb3B0aW9uCisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrCisKKyAgICAgICAgaWYgcmVzcG9uc2UgaW4gb3B0aW9uczoKKyAgICAgICAg
ICAgIHJldHVybiByZXNwb25zZQorICAgICAgICByZXR1cm4gZGVmYXVsdCBvciBvcHRpb25zWzBd
CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRz
Y21weS9sb2NhbC9naXQucHkgYi9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93
ZWJraXRzY21weS9sb2NhbC9naXQucHkKaW5kZXggOWU2Y2E3ZmIwYzc0OTc2NzQ3NjIxNzY4NzBk
ZGMzMWEzMDFjMmM0OC4uMWE4Y2QxMzkwY2FjMzQyMmM0MTM3ZjUzYjExZTUyNzlkY2Y1MzUwNyAx
MDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2Nt
cHkvbG9jYWwvZ2l0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5
L3dlYmtpdHNjbXB5L2xvY2FsL2dpdC5weQpAQCAtNDgsNiArNDgsMjYgQEAgY2xhc3MgR2l0KFNj
bSk6CiAgICAgZGVmIGlzX2NoZWNrb3V0KGNscywgcGF0aCk6CiAgICAgICAgIHJldHVybiBydW4o
W2Nscy5leGVjdXRhYmxlKCksICdyZXYtcGFyc2UnLCAnLS1zaG93LXRvcGxldmVsJ10sIGN3ZD1w
YXRoLCBjYXB0dXJlX291dHB1dD1UcnVlKS5yZXR1cm5jb2RlID09IDAKIAorICAgIEBkZWNvcmF0
b3JzLmh5YnJpZG1ldGhvZAorICAgIGRlZiBjb25maWcoY29udGV4dCk6CisgICAgICAgIGFyZ3Mg
PSBbY29udGV4dC5leGVjdXRhYmxlKCksICdjb25maWcnLCAnLWwnXQorICAgICAgICBrd2FyZ3Mg
PSBkaWN0KGNhcHR1cmVfb3V0cHV0PVRydWUsIGVuY29kaW5nPSd1dGYtOCcpCisKKyAgICAgICAg
aWYgaXNpbnN0YW5jZShjb250ZXh0LCB0eXBlKToKKyAgICAgICAgICAgIGFyZ3MgKz0gWyctLWds
b2JhbCddCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBrd2FyZ3NbJ2N3ZCddID0gY29udGV4
dC5yb290X3BhdGgKKworICAgICAgICBjb21tYW5kID0gcnVuKGFyZ3MsICoqa3dhcmdzKQorICAg
ICAgICBpZiBjb21tYW5kLnJldHVybmNvZGU6CisgICAgICAgICAgICByZXR1cm4ge30KKworICAg
ICAgICByZXN1bHQgPSB7fQorICAgICAgICBmb3IgbGluZSBpbiBjb21tYW5kLnN0ZG91dC5zcGxp
dGxpbmVzKCk6CisgICAgICAgICAgICBwYXJ0cyA9IGxpbmUuc3BsaXQoJz0nKQorICAgICAgICAg
ICAgcmVzdWx0W3BhcnRzWzBdXSA9ICc9Jy5qb2luKHBhcnRzWzE6XSkKKyAgICAgICAgcmV0dXJu
IHJlc3VsdAorCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGgsIGRldl9icmFuY2hlcz1Ob25l
LCBwcm9kX2JyYW5jaGVzPU5vbmUsIGNvbnRyaWJ1dG9ycz1Ob25lLCBpZD1Ob25lKToKICAgICAg
ICAgc3VwZXIoR2l0LCBzZWxmKS5fX2luaXRfXyhwYXRoLCBkZXZfYnJhbmNoZXM9ZGV2X2JyYW5j
aGVzLCBwcm9kX2JyYW5jaGVzPXByb2RfYnJhbmNoZXMsIGNvbnRyaWJ1dG9ycz1jb250cmlidXRv
cnMsIGlkPWlkKQogICAgICAgICBpZiBub3Qgc2VsZi5yb290X3BhdGg6CmRpZmYgLS1naXQgYS9U
b29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9wcm9ncmFtL19f
aW5pdF9fLnB5IGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2Nt
cHkvcHJvZ3JhbS9fX2luaXRfXy5weQppbmRleCA1YjUzYzlmODE4MDliMjNhOWU0NjFkMmMzNWUx
MDYzNzQ0ZmFlOTFkLi5iM2Y4OTZkN2UxNDMyMjQyN2IyNmY0ZDcyMWVmMDFiYzFjNDk1MThiIDEw
MDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21w
eS9wcm9ncmFtL19faW5pdF9fLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtp
dHNjbXB5L3dlYmtpdHNjbXB5L3Byb2dyYW0vX19pbml0X18ucHkKQEAgLTM0LDYgKzM0LDcgQEAg
ZnJvbSAuY2hlY2tvdXQgaW1wb3J0IENoZWNrb3V0CiBmcm9tIC5maW5kIGltcG9ydCBGaW5kLCBJ
bmZvCiBmcm9tIC5wdWxsIGltcG9ydCBQdWxsCiBmcm9tIC5zZXR1cF9naXRfc3ZuIGltcG9ydCBT
ZXR1cEdpdFN2bgorZnJvbSAuc2V0dXAgaW1wb3J0IFNldHVwCiAKIAogZGVmIG1haW4oYXJncz1O
b25lLCBwYXRoPU5vbmUsIGxvZ2dlcnM9Tm9uZSwgY29udHJpYnV0b3JzPU5vbmUsIGlkZW50aWZp
ZXJfdGVtcGxhdGU9Tm9uZSwgc3VidmVyc2lvbj1Ob25lKToKQEAgLTYxLDcgKzYyLDcgQEAgZGVm
IG1haW4oYXJncz1Ob25lLCBwYXRoPU5vbmUsIGxvZ2dlcnM9Tm9uZSwgY29udHJpYnV0b3JzPU5v
bmUsIGlkZW50aWZpZXJfdGVtcGwKIAogICAgIHN1YnBhcnNlcnMgPSBwYXJzZXIuYWRkX3N1YnBh
cnNlcnMoaGVscD0nc3ViLWNvbW1hbmQgaGVscCcpCiAKLSAgICBwcm9ncmFtcyA9IFtGaW5kLCBJ
bmZvLCBDaGVja291dCwgQ2Fub25pY2FsaXplLCBQdWxsLCBDbGVhbl0KKyAgICBwcm9ncmFtcyA9
IFtGaW5kLCBJbmZvLCBDaGVja291dCwgQ2Fub25pY2FsaXplLCBQdWxsLCBDbGVhbiwgU2V0dXBd
CiAgICAgaWYgc3VidmVyc2lvbjoKICAgICAgICAgcHJvZ3JhbXMuYXBwZW5kKFNldHVwR2l0U3Zu
KQogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJr
aXRzY21weS9wcm9ncmFtL3NldHVwLnB5IGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0
c2NtcHkvd2Via2l0c2NtcHkvcHJvZ3JhbS9zZXR1cC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xOWFkNjg0NzFm
Y2JkZDYzM2FmMmQzZmQ3NWE1MzY4ZjNlMTI0OWU4Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMv
U2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvcHJvZ3JhbS9zZXR1cC5w
eQpAQCAtMCwwICsxLDExMSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6
CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorIyBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KworaW1wb3J0IHN5cworCitmcm9tIC5jb21tYW5kIGltcG9ydCBDb21tYW5kCitmcm9tIHdlYmtp
dGNvcmVweSBpbXBvcnQgYXJndW1lbnRzLCBydW4sIE91dHB1dENhcHR1cmUsIFRlcm1pbmFsCitm
cm9tIHdlYmtpdHNjbXB5IGltcG9ydCBsb2csIGxvY2FsLCByZW1vdGUKKworCitjbGFzcyBTZXR1
cChDb21tYW5kKToKKyAgICBuYW1lID0gJ3NldHVwJworICAgIGhlbHAgPSAnQ29uZmlndXJlIGxv
Y2FsIHNldHRpbmdzIGZvciB0aGUgY3VycmVudCByZXBvc2l0b3J5JworCisgICAgQGNsYXNzbWV0
aG9kCisgICAgZGVmIGdpdGh1YihjbHMsIGFyZ3MsIHJlcG9zaXRvcnksICoqa3dhcmdzKToKKyAg
ICAgICAgbG9nLndhcm5pbmcoJ1NhdmluZyBHaXRIdWIgY3JlZGVudGlhbHMgaW4gc3lzdGVtIGNy
ZWRlbnRpYWwgc3RvcmUuLi4nKQorICAgICAgICByZXBvc2l0b3J5LmNyZWRlbnRpYWxzKHJlcXVp
cmVkPVRydWUpCisgICAgICAgIGxvZy53YXJuaW5nKCdHaXRIdWIgY3JlZGVudGlhbHMgc2F2ZWQg
dmlhIEtleXJpbmchJykKKyAgICAgICAgcmV0dXJuIDAKKworICAgIEBjbGFzc21ldGhvZAorICAg
IGRlZiBnaXQoY2xzLCBhcmdzLCByZXBvc2l0b3J5LCAqKmt3YXJncyk6CisgICAgICAgIGdsb2Jh
bF9jb25maWcgPSBsb2NhbC5HaXQuY29uZmlnKCkKKyAgICAgICAgcmVzdWx0ID0gMAorCisgICAg
ICAgIGVtYWlsID0gZ2xvYmFsX2NvbmZpZy5nZXQoJ3VzZXIuZW1haWwnKQorICAgICAgICBsb2cu
d2FybmluZygnU2V0dGluZyBnaXQgdXNlciBlbWFpbCBmb3Ige30uLi4nLmZvcm1hdChyZXBvc2l0
b3J5LnJvb3RfcGF0aCkpCisgICAgICAgIGlmIG5vdCBlbWFpbCBvciBhcmdzLmRlZmF1bHRzIGlz
IEZhbHNlIG9yIChub3QgYXJncy5kZWZhdWx0cyBhbmQgVGVybWluYWwuY2hvb3NlKAorICAgICAg
ICAgICAgIlNldCAne30nIGFzIHRoZSBnaXQgdXNlciBlbWFpbCIuZm9ybWF0KGVtYWlsKSwKKyAg
ICAgICAgICAgIGRlZmF1bHQ9J1llcycsCisgICAgICAgICkgPT0gJ05vJyk6CisgICAgICAgICAg
ICBlbWFpbCA9IFRlcm1pbmFsLmlucHV0KCdHaXQgdXNlciBlbWFpbDogJykKKworICAgICAgICBp
ZiBydW4oCisgICAgICAgICAgICBbbG9jYWwuR2l0LmV4ZWN1dGFibGUoKSwgJ2NvbmZpZycsICd1
c2VyLmVtYWlsJywgZW1haWxdLCBjYXB0dXJlX291dHB1dD1UcnVlLCBjd2Q9cmVwb3NpdG9yeS5y
b290X3BhdGgsCisgICAgICAgICkucmV0dXJuY29kZToKKyAgICAgICAgICAgIHN5cy5zdGRlcnIu
d3JpdGUoJ0ZhaWxlZCB0byBzZXQgdGhlIGdpdCB1c2VyIGVtYWlsIHRvIHt9Jy5mb3JtYXQoZW1h
aWwpKQorICAgICAgICAgICAgcmVzdWx0ICs9IDEKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAg
IGxvZy53YXJuaW5nKCJTZXQgZ2l0IHVzZXIgZW1haWwgdG8gJ3t9JyIuZm9ybWF0KGVtYWlsKSkK
KworICAgICAgICBuYW1lID0gcmVwb3NpdG9yeS5jb250cmlidXRvcnMuZ2V0KGVtYWlsKQorICAg
ICAgICBpZiBuYW1lOgorICAgICAgICAgICAgbmFtZSA9IG5hbWUubmFtZQorICAgICAgICBlbHNl
OgorICAgICAgICAgICAgbmFtZSA9IGdsb2JhbF9jb25maWcuZ2V0KCd1c2VyLm5hbWUnKQorICAg
ICAgICBsb2cud2FybmluZygnU2V0dGluZyBnaXQgdXNlciBuYW1lIGZvciB7fS4uLicuZm9ybWF0
KHJlcG9zaXRvcnkucm9vdF9wYXRoKSkKKyAgICAgICAgaWYgbm90IG5hbWUgb3IgYXJncy5kZWZh
dWx0cyBpcyBGYWxzZSBvciAobm90IGFyZ3MuZGVmYXVsdHMgYW5kIFRlcm1pbmFsLmNob29zZSgK
KyAgICAgICAgICAgICJTZXQgJ3t9JyBhcyB0aGUgZ2l0IHVzZXIgbmFtZSIuZm9ybWF0KG5hbWUp
LAorICAgICAgICAgICAgZGVmYXVsdD0nWWVzJywKKyAgICAgICAgKSA9PSAnTm8nKToKKyAgICAg
ICAgICAgIG5hbWUgPSBUZXJtaW5hbC5pbnB1dCgnR2l0IHVzZXIgbmFtZTogJykKKyAgICAgICAg
aWYgcnVuKAorICAgICAgICAgICAgW2xvY2FsLkdpdC5leGVjdXRhYmxlKCksICdjb25maWcnLCAn
dXNlci5uYW1lJywgbmFtZV0sIGNhcHR1cmVfb3V0cHV0PVRydWUsIGN3ZD1yZXBvc2l0b3J5LnJv
b3RfcGF0aCwKKyAgICAgICAgKS5yZXR1cm5jb2RlOgorICAgICAgICAgICAgc3lzLnN0ZGVyci53
cml0ZSgnRmFpbGVkIHRvIHNldCB0aGUgZ2l0IHVzZXIgbmFtZSB0byB7fScuZm9ybWF0KG5hbWUp
KQorICAgICAgICAgICAgcmVzdWx0ICs9IDEKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGxv
Zy53YXJuaW5nKCJTZXQgZ2l0IHVzZXIgbmFtZSB0byAne30nIi5mb3JtYXQobmFtZSkpCisKKyAg
ICAgICAgbG9nLndhcm5pbmcoJ1VzaW5nIHt9IG1lcmdlIHN0cmF0ZWd5Jy5mb3JtYXQoJ21lcmdl
IGNvbW1pdHMgYXMgYScgaWYgYXJncy5tZXJnZSBlbHNlICdhIHJlYmFzZScpKQorICAgICAgICBp
ZiBydW4oCisgICAgICAgICAgICBbbG9jYWwuR2l0LmV4ZWN1dGFibGUoKSwgJ2NvbmZpZycsICdw
dWxsLnJlYmFzZScsICdmYWxzZScgaWYgYXJncy5tZXJnZSBlbHNlICd0cnVlJ10sIGNhcHR1cmVf
b3V0cHV0PVRydWUsIGN3ZD1yZXBvc2l0b3J5LnJvb3RfcGF0aCwKKyAgICAgICAgKS5yZXR1cm5j
b2RlOgorICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgnRmFpbGVkIHRvIHVzZSB7fSBhcyB0
aGUgbWVyZ2Ugc3RyYXRlZ3knLmZvcm1hdCgnbWVyZ2UgY29tbWl0cycgaWYgYXJncy5tZXJnZSBl
bHNlICdyZWJhc2UnKSkKKyAgICAgICAgICAgIHJlc3VsdCArPSAxCisgICAgICAgIHJldHVybiBy
ZXN1bHQKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBwYXJzZXIoY2xzLCBwYXJzZXIsIGxv
Z2dlcnM9Tm9uZSk6CisgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICAgICAn
LS1kZWZhdWx0cycsICctLW5vLWRlZmF1bHRzJywgYWN0aW9uPWFyZ3VtZW50cy5Ob0FjdGlvbiwg
ZGVmYXVsdD1Ob25lLAorICAgICAgICAgICAgaGVscD0nRG8gbm90IHByb21wdCB0aGUgdXNlciBm
b3IgZGVmYXVsdHMsIGFsd2F5cyB1c2UgKG9yIGRvIG5vdCB1c2UpIHRoZW0nLAorICAgICAgICAp
CisgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICAgICAnLS1tZXJnZScsICct
LW5vLW1lcmdlJywgYWN0aW9uPWFyZ3VtZW50cy5Ob0FjdGlvbiwgZGVmYXVsdD1GYWxzZSwKKyAg
ICAgICAgICAgIGhlbHA9J1VzZSBhIG1lcmdlLWNvbW1pdCB3b3JrZmxvdyBpbnN0ZWFkIG9mIGEg
cmViYXNlIHdvcmtmbG93JywKKyAgICAgICAgKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVm
IG1haW4oY2xzLCBhcmdzLCByZXBvc2l0b3J5LCAqKmt3YXJncyk6CisgICAgICAgIGlmIGlzaW5z
dGFuY2UocmVwb3NpdG9yeSwgbG9jYWwuR2l0KToKKyAgICAgICAgICAgIHJldHVybiBjbHMuZ2l0
KGFyZ3MsIHJlcG9zaXRvcnksICoqa3dhcmdzKQorCisgICAgICAgIGlmIGlzaW5zdGFuY2UocmVw
b3NpdG9yeSwgcmVtb3RlLkdpdEh1Yik6CisgICAgICAgICAgICByZXR1cm4gY2xzLmdpdGh1Yihh
cmdzLCByZXBvc2l0b3J5LCAqKmt3YXJncykKKworICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCdO
byBzZXR1cCByZXF1aXJlZCBmb3Ige31cbicuZm9ybWF0KAorICAgICAgICAgICAgZ2V0YXR0cihy
ZXBvc2l0b3J5LCAncm9vdF9wYXRoJywgZ2V0YXR0cihyZXBvc2l0b3J5LCAndXJsJywgJz8nKSks
CisgICAgICAgICkpCisgICAgICAgIHJldHVybiAxCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434874</attachid>
            <date>2021-08-03 17:34:13 -0700</date>
            <delta_ts>2021-08-04 12:10:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225985-20210803173412.patch</filename>
            <type>text/plain</type>
            <size>29105</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNjIyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMjgyNDY2OTFkNWUyNTYwYjY5NzgzYWU2NmZjZjRhNDI5
ZWZiZmRlZS4uMjRiOGQxNDFjOWJmZTI0ODE2Y2JkMTNlNzIwMDUzNmUwNjU2YjdmYyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEz
IEBACisyMDIxLTA4LTAzICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbd2Via2l0Y29yZXB5XSBBZGQgc2hhcmVkIHRlcm1pbmFsIGlucHV0IGNvZGUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTk4NQorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vNzgyMjY3Mjk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgV0lQCisKIDIwMjEtMDgtMDMgIEpvbmF0aGFuIEJlZGFy
ZCAgPGpiZWRhcmRAYXBwbGUuY29tPgogCiAgICAgICAgIFt3ZWJraXRweV0gSGFuZGxlIGNhc2Ug
d2hlcmUgbm8gZXhpc3Rpbmcgc2ltdWxhdG9ycyBhcmUgZGVmaW5lZApkaWZmIC0tZ2l0IGEvVG9v
bHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9fX2luaXRfXy5w
eSBiL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvX19p
bml0X18ucHkKaW5kZXggYjMxMDgyNTRkMzA1MmQ1ODY3NDJmZDk0NWNlYjkzN2I3MmQ1ZWQ1NS4u
NTVmMzA1NzIwNDc3OGVhMmM2MWU0NmE4OWQ3OGJhYmYxOWVmYmY3ZSAxMDA2NDQKLS0tIGEvVG9v
bHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9fX2luaXRfXy5w
eQorKysgYi9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5
L19faW5pdF9fLnB5CkBAIC0zNSw2ICszNSw3IEBAIGZyb20gd2Via2l0Y29yZXB5LnRpbWVvdXQg
aW1wb3J0IFRpbWVvdXQKIGZyb20gd2Via2l0Y29yZXB5LnN1YnByb2Nlc3NfdXRpbHMgaW1wb3J0
IFRpbWVvdXRFeHBpcmVkLCBDb21wbGV0ZWRQcm9jZXNzLCBydW4KIGZyb20gd2Via2l0Y29yZXB5
Lm91dHB1dF9jYXB0dXJlIGltcG9ydCBMb2dnZXJDYXB0dXJlLCBPdXRwdXRDYXB0dXJlLCBPdXRw
dXREdXBsaWNhdGUKIGZyb20gd2Via2l0Y29yZXB5LnRhc2tfcG9vbCBpbXBvcnQgVGFza1Bvb2wK
K2Zyb20gd2Via2l0Y29yZXB5LnRlcm1pbmFsIGltcG9ydCBUZXJtaW5hbAogZnJvbSB3ZWJraXRj
b3JlcHkuY3JlZGVudGlhbHMgaW1wb3J0IGNyZWRlbnRpYWxzCiBmcm9tIHdlYmtpdGNvcmVweS5t
ZWFzdXJlX3RpbWUgaW1wb3J0IE1lYXN1cmVUaW1lCiBmcm9tIHdlYmtpdGNvcmVweS5uZXN0ZWRf
ZnV6enlfZGljdCBpbXBvcnQgTmVzdGVkRnV6enlEaWN0CmRpZmYgLS1naXQgYS9Ub29scy9TY3Jp
cHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L2NyZWRlbnRpYWxzLnB5IGIv
VG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9jcmVkZW50
aWFscy5weQppbmRleCAxM2FhNDYxOGJjNzdjOGEyZjFmM2JkZWQ5NjRmN2ZhNjA5OTQwYjVlLi5l
Y2IzOWRlYmY2OGM5NWU3M2U5YzhmOGJlZDA1YmE4N2Y5MjNlOGVkIDEwMDY0NAotLS0gYS9Ub29s
cy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L2NyZWRlbnRpYWxz
LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3Jl
cHkvY3JlZGVudGlhbHMucHkKQEAgLTI1LDcgKzI1LDcgQEAgaW1wb3J0IGdldHBhc3MKIGltcG9y
dCBzeXMKIAogZnJvbSBzdWJwcm9jZXNzIGltcG9ydCBDYWxsZWRQcm9jZXNzRXJyb3IKLWZyb20g
d2Via2l0Y29yZXB5IGltcG9ydCBPdXRwdXRDYXB0dXJlCitmcm9tIHdlYmtpdGNvcmVweSBpbXBv
cnQgT3V0cHV0Q2FwdHVyZSwgVGVybWluYWwKIAogX2NhY2hlID0gZGljdCgpCiAKQEAgLTY0LDcg
KzY0LDcgQEAgZGVmIGNyZWRlbnRpYWxzKHVybCwgcmVxdWlyZWQ9VHJ1ZSwgbmFtZT1Ob25lLCBw
cm9tcHQ9Tm9uZSwga2V5X25hbWU9J3Bhc3N3b3JkJykKICAgICAgICAgICAgICAgICByYWlzZSBP
U0Vycm9yKCdObyB0dHkgdG8gcHJvbXB0IHVzZXIgZm9yIHVzZXJuYW1lJykKICAgICAgICAgICAg
IHN5cy5zdGRlcnIud3JpdGUoIkF1dGhlbnRpY2F0aW9uIHJlcXVpcmVkIHRvIHVzZSB7fVxuIi5m
b3JtYXQocHJvbXB0IG9yIG5hbWUpKQogICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgnVXNl
cm5hbWU6ICcpCi0gICAgICAgICAgICB1c2VybmFtZSA9IChpbnB1dCBpZiBzeXMudmVyc2lvbl9p
bmZvID4gKDMsIDApIGVsc2UgcmF3X2lucHV0KSgpCisgICAgICAgICAgICB1c2VybmFtZSA9IFRl
cm1pbmFsLmlucHV0KCkKICAgICAgICAgICAgIHVzZXJuYW1lX3Byb21wdGVkID0gVHJ1ZQogCiAg
ICAgaWYgbm90IGtleToKQEAgLTg1LDcgKzg1LDcgQEAgZGVmIGNyZWRlbnRpYWxzKHVybCwgcmVx
dWlyZWQ9VHJ1ZSwgbmFtZT1Ob25lLCBwcm9tcHQ9Tm9uZSwga2V5X25hbWU9J3Bhc3N3b3JkJykK
IAogICAgIGlmIGtleXJpbmcgYW5kICh1c2VybmFtZV9wcm9tcHRlZCBvciBrZXlfcHJvbXB0ZWQp
OgogICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCdTdG9yZSB1c2VybmFtZSBhbmQge30gaW4gc3lz
dGVtIGtleXJpbmcgZm9yIHt9PyAoWS9OKTogJy5mb3JtYXQoa2V5X25hbWUsIHVybCkpCi0gICAg
ICAgIHJlc3BvbnNlID0gKGlucHV0IGlmIHN5cy52ZXJzaW9uX2luZm8gPiAoMywgMCkgZWxzZSBy
YXdfaW5wdXQpKCkKKyAgICAgICAgcmVzcG9uc2UgPSBUZXJtaW5hbC5pbnB1dCgpCiAgICAgICAg
IGlmIHJlc3BvbnNlLmxvd2VyKCkgaW4gWyd5JywgJ3llcycsICdvayddOgogICAgICAgICAgICAg
c3lzLnN0ZGVyci53cml0ZSgnU3RvcmluZyBjcmVkZW50aWFscy4uLlxuJykKICAgICAgICAgICAg
IGtleXJpbmcuc2V0X3Bhc3N3b3JkKHVybCwgJ3VzZXJuYW1lJywgdXNlcm5hbWUpCmRpZmYgLS1n
aXQgYS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L21v
Y2tzL19faW5pdF9fLnB5IGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dl
YmtpdGNvcmVweS9tb2Nrcy9fX2luaXRfXy5weQppbmRleCBhMDRhMjYwYTM5ZTBlMDU5MTlmNzUz
MzExNGY4NmM0MTNiNjRiYzJmLi4wZmQwZGZhZWI4N2I2ODgxMjFhNzZjZjVmZDJhODA1MDBkYjFh
ODkwIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Vi
a2l0Y29yZXB5L21vY2tzL19faW5pdF9fLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVz
L3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvbW9ja3MvX19pbml0X18ucHkKQEAgLTI1LDMgKzI1
LDQgQEAgZnJvbSB3ZWJraXRjb3JlcHkubW9ja3MudGltZV8gaW1wb3J0IFRpbWUKIGZyb20gd2Vi
a2l0Y29yZXB5Lm1vY2tzLnN1YnByb2Nlc3MgaW1wb3J0IFByb2Nlc3NDb21wbGV0aW9uLCBTdWJw
cm9jZXNzCiAKIGZyb20gd2Via2l0Y29yZXB5Lm1vY2tzLnJlcXVlc3RzXyBpbXBvcnQgUmVzcG9u
c2UsIFJlcXVlc3RzCitmcm9tIHdlYmtpdGNvcmVweS5tb2Nrcy50ZXJtaW5hbCBpbXBvcnQgVGVy
bWluYWwKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93
ZWJraXRjb3JlcHkvbW9ja3MvdGVybWluYWwucHkgYi9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93
ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L21vY2tzL3Rlcm1pbmFsLnB5Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcx
YjMwOTcxZGFkYWRkMmQzNTQxMjFlZmQxZmRkZTk3MmY4MjIyM2EKLS0tIC9kZXYvbnVsbAorKysg
Yi9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L21vY2tz
L3Rlcm1pbmFsLnB5CkBAIC0wLDAgKzEsNDQgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
IyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkK
KyMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQorIyBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworIyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisjIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTgorIyBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UworIyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKworaW1wb3J0IHN5cworCisKK2NsYXNzIFRlcm1pbmFsKG9iamVjdCk6CisgICAg
aW5kZXggPSAwCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgaW5wdXQoY2xzLCAqYXJncyk6
CisgICAgICAgIGZyb20gbW9jayBpbXBvcnQgcGF0Y2gKKworICAgICAgICBjbHMuaW5kZXggPSAw
CisKKyAgICAgICAgZGVmIGZ1bmN0aW9uKG91dHB1dCk6CisgICAgICAgICAgICBwcmludChvdXRw
dXQpCisgICAgICAgICAgICBjbHMuaW5kZXggKz0gMQorICAgICAgICAgICAgcmV0dXJuIGFyZ3Nb
Y2xzLmluZGV4IC0gMV0KKworICAgICAgICBpZiBzeXMudmVyc2lvbl9pbmZvID4gKDMsIDApOgor
ICAgICAgICAgICAgcmV0dXJuIHBhdGNoKCdidWlsdGlucy5pbnB1dCcsIG5ldz1mdW5jdGlvbikK
KworICAgICAgICBpbXBvcnQgX19idWlsdGluX18KKyAgICAgICAgcmV0dXJuIHBhdGNoLm9iamVj
dChfX2J1aWx0aW5fXywgJ3Jhd19pbnB1dCcsIG5ldz1mdW5jdGlvbikKZGlmZiAtLWdpdCBhL1Rv
b2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvdGVybWluYWwu
cHkgYi9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L3Rl
cm1pbmFsLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgwY2Y0ZGRjMDA0YzE1OTlmNzY3MDk3ZTY1ZDNkZGQ2MzNk
MjlmYTEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRj
b3JlcHkvd2Via2l0Y29yZXB5L3Rlcm1pbmFsLnB5CkBAIC0wLDAgKzEsNTkgQEAKKyMgQ29weXJp
Z2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnIEFORCBBTlkKKyMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisj
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorIyBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworIyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7CisjIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorIyBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUworIyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IHN5cworCisKK2NsYXNzIFRlcm1p
bmFsKG9iamVjdCk6CisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGlucHV0KGNscywgKmFyZ3Ms
ICoqa3dhcmdzKToKKyAgICAgICAgcmV0dXJuIChpbnB1dCBpZiBzeXMudmVyc2lvbl9pbmZvID4g
KDMsIDApIGVsc2UgcmF3X2lucHV0KSgqYXJncywgKiprd2FyZ3MpCisKKyAgICBAY2xhc3NtZXRo
b2QKKyAgICBkZWYgY2hvb3NlKGNscywgcHJvbXB0LCBvcHRpb25zPU5vbmUsIGRlZmF1bHQ9Tm9u
ZSwgc3RyaWN0PUZhbHNlLCBudW1iZXJlZD1GYWxzZSk6CisgICAgICAgIG9wdGlvbnMgPSBvcHRp
b25zIG9yICgnWWVzJywgJ05vJykKKworICAgICAgICByZXNwb25zZSA9IE5vbmUKKyAgICAgICAg
d2hpbGUgcmVzcG9uc2UgaXMgTm9uZToKKyAgICAgICAgICAgIGlmIG51bWJlcmVkOgorICAgICAg
ICAgICAgICAgIG51bWJlcmVkX29wdGlvbnMgPSBbJ3t9KSB7fScuZm9ybWF0KGkgKyAxLCBvcHRp
b25zW2ldKSBmb3IgaSBpbiByYW5nZShsZW4ob3B0aW9ucykpXQorICAgICAgICAgICAgICAgIHJl
c3BvbnNlID0gY2xzLmlucHV0KCd7fTpcbiAgICB7fVxuOiAnLmZvcm1hdChwcm9tcHQsICdcbiAg
ICAnLmpvaW4obnVtYmVyZWRfb3B0aW9ucykpKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgICAgICByZXNwb25zZSA9IGNscy5pbnB1dCgne30gKHt9KTogJy5mb3JtYXQocHJvbXB0LCAn
Lycuam9pbihvcHRpb25zKSkpCisKKyAgICAgICAgICAgIGlmIG51bWJlcmVkIGFuZCByZXNwb25z
ZS5pc2RpZ2l0KCk6CisgICAgICAgICAgICAgICAgaW5kZXggPSBpbnQocmVzcG9uc2UpIC0gMQor
ICAgICAgICAgICAgICAgIGlmIGluZGV4ID49IDAgYW5kIGluZGV4IDwgbGVuKG9wdGlvbnMpOgor
ICAgICAgICAgICAgICAgICAgICByZXNwb25zZSA9IG9wdGlvbnNbaW5kZXhdCisKKyAgICAgICAg
ICAgIGlmIG5vdCBzdHJpY3Q6CisgICAgICAgICAgICAgICAgZm9yIG9wdGlvbiBpbiBvcHRpb25z
OgorICAgICAgICAgICAgICAgICAgICBpZiBvcHRpb24ubG93ZXIoKS5zdGFydHN3aXRoKHJlc3Bv
bnNlLmxvd2VyKCkpOgorICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UgPSBvcHRpb24K
KyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisKKyAgICAgICAgICAgIGlmIHJlc3BvbnNl
IG5vdCBpbiBvcHRpb25zOgorICAgICAgICAgICAgICAgIGlmIG5vdCBkZWZhdWx0OgorICAgICAg
ICAgICAgICAgICAgICBwcmludCgiJ3t9JyBpcyBub3QgYW4gb3B0aW9uIi5mb3JtYXQocmVzcG9u
c2UpKQorICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gZGVmYXVsdAorCisgICAgICAgIHJldHVy
biByZXNwb25zZQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29y
ZXB5L3dlYmtpdGNvcmVweS90ZXN0cy90ZXJtaW5hbF91bml0dGVzdC5weSBiL1Rvb2xzL1Njcmlw
dHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvdGVzdHMvdGVybWluYWxfdW5p
dHRlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMTBiYzg2NmYxOTRhNzRkN2JjOTdjNTJmZTc1OGQ2ODNiOWFm
NDJmZQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNv
cmVweS93ZWJraXRjb3JlcHkvdGVzdHMvdGVybWluYWxfdW5pdHRlc3QucHkKQEAgLTAsMCArMSw5
MyBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
IyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorIyBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisjIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
CisjIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyMgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisjIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisjIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgdW5pdHRl
c3QKKworZnJvbSBtb2NrIGltcG9ydCBwYXRjaAorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IG1v
Y2tzLCBPdXRwdXRDYXB0dXJlLCBUZXJtaW5hbAorCisKK2NsYXNzIFRlcm1pbmFsVGVzdHModW5p
dHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X2Nob29zZV9iYXNpYyhzZWxmKToKKyAgICAg
ICAgd2l0aCBtb2Nrcy5UZXJtaW5hbC5pbnB1dCgneScpLCBPdXRwdXRDYXB0dXJlKCkgYXMgY2Fw
dHVyZWQ6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdZZXMnLCBUZXJtaW5hbC5jaG9v
c2UoJ0NvbnRpbnVlJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FwdHVyZWQuc3Rkb3V0
LmdldHZhbHVlKCksICdDb250aW51ZSAoWWVzL05vKTogXG4nKQorCisgICAgICAgIHdpdGggbW9j
a3MuVGVybWluYWwuaW5wdXQoJ24nKSwgT3V0cHV0Q2FwdHVyZSgpIGFzIGNhcHR1cmVkOgorICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnTm8nLCBUZXJtaW5hbC5jaG9vc2UoJ0NvbnRpbnVl
JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FwdHVyZWQuc3Rkb3V0LmdldHZhbHVlKCks
ICdDb250aW51ZSAoWWVzL05vKTogXG4nKQorCisgICAgICAgIHdpdGggbW9ja3MuVGVybWluYWwu
aW5wdXQoJ2h1aCcsICd5JyksIE91dHB1dENhcHR1cmUoKSBhcyBjYXB0dXJlZDoKKyAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1llcycsIFRlcm1pbmFsLmNob29zZSgnQ29udGludWUnKSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjYXB0dXJlZC5zdGRvdXQuZ2V0dmFsdWUoKSwgIkNv
bnRpbnVlIChZZXMvTm8pOiBcbidodWgnIGlzIG5vdCBhbiBvcHRpb25cbkNvbnRpbnVlIChZZXMv
Tm8pOiBcbiIpCisKKyAgICBkZWYgdGVzdF9jaG9vc2Vfc3RyaWN0KHNlbGYpOgorICAgICAgICB3
aXRoIG1vY2tzLlRlcm1pbmFsLmlucHV0KCdZZXMnKSwgT3V0cHV0Q2FwdHVyZSgpIGFzIGNhcHR1
cmVkOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnWWVzJywgVGVybWluYWwuY2hvb3Nl
KCdDb250aW51ZScsIHN0cmljdD1UcnVlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjYXB0
dXJlZC5zdGRvdXQuZ2V0dmFsdWUoKSwgJ0NvbnRpbnVlIChZZXMvTm8pOiBcbicpCisKKyAgICAg
ICAgd2l0aCBtb2Nrcy5UZXJtaW5hbC5pbnB1dCgnTm8nKSwgT3V0cHV0Q2FwdHVyZSgpIGFzIGNh
cHR1cmVkOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnTm8nLCBUZXJtaW5hbC5jaG9v
c2UoJ0NvbnRpbnVlJywgc3RyaWN0PVRydWUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNh
cHR1cmVkLnN0ZG91dC5nZXR2YWx1ZSgpLCAnQ29udGludWUgKFllcy9Obyk6IFxuJykKKworICAg
ICAgICB3aXRoIG1vY2tzLlRlcm1pbmFsLmlucHV0KCduJywgJ1llcycpLCBPdXRwdXRDYXB0dXJl
KCkgYXMgY2FwdHVyZWQ6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdZZXMnLCBUZXJt
aW5hbC5jaG9vc2UoJ0NvbnRpbnVlJywgc3RyaWN0PVRydWUpKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGNhcHR1cmVkLnN0ZG91dC5nZXR2YWx1ZSgpLCAiQ29udGludWUgKFllcy9Obyk6IFxu
J24nIGlzIG5vdCBhbiBvcHRpb25cbkNvbnRpbnVlIChZZXMvTm8pOiBcbiIpCisKKyAgICAgICAg
d2l0aCBtb2Nrcy5UZXJtaW5hbC5pbnB1dCgneScsICdObycpLCBPdXRwdXRDYXB0dXJlKCkgYXMg
Y2FwdHVyZWQ6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdObycsIFRlcm1pbmFsLmNo
b29zZSgnQ29udGludWUnLCBzdHJpY3Q9VHJ1ZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
Y2FwdHVyZWQuc3Rkb3V0LmdldHZhbHVlKCksICJDb250aW51ZSAoWWVzL05vKTogXG4neScgaXMg
bm90IGFuIG9wdGlvblxuQ29udGludWUgKFllcy9Obyk6IFxuIikKKworICAgIGRlZiB0ZXN0X2No
b29zZV9kZWZhdWx0KHNlbGYpOgorICAgICAgICB3aXRoIG1vY2tzLlRlcm1pbmFsLmlucHV0KCd5
JyksIE91dHB1dENhcHR1cmUoKSBhcyBjYXB0dXJlZDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoJ1llcycsIFRlcm1pbmFsLmNob29zZSgnQ29udGludWUnLCBkZWZhdWx0PSdPdGhlcicp
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhcHR1cmVkLnN0ZG91dC5nZXR2YWx1ZSgpLCAn
Q29udGludWUgKFllcy9Obyk6IFxuJykKKworICAgICAgICB3aXRoIG1vY2tzLlRlcm1pbmFsLmlu
cHV0KCduJyksIE91dHB1dENhcHR1cmUoKSBhcyBjYXB0dXJlZDoKKyAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoJ05vJywgVGVybWluYWwuY2hvb3NlKCdDb250aW51ZScsIGRlZmF1bHQ9J090
aGVyJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FwdHVyZWQuc3Rkb3V0LmdldHZhbHVl
KCksICdDb250aW51ZSAoWWVzL05vKTogXG4nKQorCisgICAgICAgIHdpdGggbW9ja3MuVGVybWlu
YWwuaW5wdXQoJ2h1aCcpLCBPdXRwdXRDYXB0dXJlKCkgYXMgY2FwdHVyZWQ6CisgICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKCdPdGhlcicsIFRlcm1pbmFsLmNob29zZSgnQ29udGludWUnLCBk
ZWZhdWx0PSdPdGhlcicpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhcHR1cmVkLnN0ZG91
dC5nZXR2YWx1ZSgpLCAnQ29udGludWUgKFllcy9Obyk6IFxuJykKKworICAgIGRlZiB0ZXN0X2No
b29zZV90cmlwbGUoc2VsZik6CisgICAgICAgIHdpdGggbW9ja3MuVGVybWluYWwuaW5wdXQoJ3kn
KSwgT3V0cHV0Q2FwdHVyZSgpIGFzIGNhcHR1cmVkOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgnWWVzJywgVGVybWluYWwuY2hvb3NlKCdDb250aW51ZScsIG9wdGlvbnM9KCdZZXMnLCAn
Tm8nLCAnTWF5YmUnKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FwdHVyZWQuc3Rkb3V0
LmdldHZhbHVlKCksICdDb250aW51ZSAoWWVzL05vL01heWJlKTogXG4nKQorCisgICAgICAgIHdp
dGggbW9ja3MuVGVybWluYWwuaW5wdXQoJ24nKSwgT3V0cHV0Q2FwdHVyZSgpIGFzIGNhcHR1cmVk
OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnTm8nLCBUZXJtaW5hbC5jaG9vc2UoJ0Nv
bnRpbnVlJywgb3B0aW9ucz0oJ1llcycsICdObycsICdNYXliZScpKSkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChjYXB0dXJlZC5zdGRvdXQuZ2V0dmFsdWUoKSwgJ0NvbnRpbnVlIChZZXMvTm8v
TWF5YmUpOiBcbicpCisKKyAgICAgICAgd2l0aCBtb2Nrcy5UZXJtaW5hbC5pbnB1dCgnbWF5Jyks
IE91dHB1dENhcHR1cmUoKSBhcyBjYXB0dXJlZDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoJ01heWJlJywgVGVybWluYWwuY2hvb3NlKCdDb250aW51ZScsIG9wdGlvbnM9KCdZZXMnLCAn
Tm8nLCAnTWF5YmUnKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FwdHVyZWQuc3Rkb3V0
LmdldHZhbHVlKCksICdDb250aW51ZSAoWWVzL05vL01heWJlKTogXG4nKQorCisgICAgICAgIHdp
dGggbW9ja3MuVGVybWluYWwuaW5wdXQoJ2h1aCcpLCBPdXRwdXRDYXB0dXJlKCkgYXMgY2FwdHVy
ZWQ6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdObycsIFRlcm1pbmFsLmNob29zZSgn
Q29udGludWUnLCBvcHRpb25zPSgnWWVzJywgJ05vJywgJ01heWJlJyksIGRlZmF1bHQ9J05vJykp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FwdHVyZWQuc3Rkb3V0LmdldHZhbHVlKCksICdD
b250aW51ZSAoWWVzL05vL01heWJlKTogXG4nKQorCisgICAgZGVmIHRlc3RfY2hvb3NlX251bWJl
cihzZWxmKToKKyAgICAgICAgd2l0aCBtb2Nrcy5UZXJtaW5hbC5pbnB1dCgnMicpLCBPdXRwdXRD
YXB0dXJlKCkgYXMgY2FwdHVyZWQ6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdCZXRh
JywgVGVybWluYWwuY2hvb3NlKCdQaWNrJywgb3B0aW9ucz0oJ0FscGhhJywgJ0JldGEnLCAnQ2hh
cmxpZScsICdEZWx0YScpLCBudW1iZXJlZD1UcnVlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChjYXB0dXJlZC5zdGRvdXQuZ2V0dmFsdWUoKSwgJ1BpY2s6XG4gICAgMSkgQWxwaGFcbiAgICAy
KSBCZXRhXG4gICAgMykgQ2hhcmxpZVxuICAgIDQpIERlbHRhXG46IFxuJykKZGlmZiAtLWdpdCBh
L1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Byb2dyYW0v
X19pbml0X18ucHkgYi9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRz
Y21weS9wcm9ncmFtL19faW5pdF9fLnB5CmluZGV4IDJmOWUwNDc3OTk2NGEwYjIzMzM4MmQwYzY2
NTU3OWY1NWIwY2ZjOTcuLjE1NzhkZDk2ZTgxNWI2NjMzNTEyYzJhYjYwOWE3MzViNGNhZjhlMGUg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNj
bXB5L3Byb2dyYW0vX19pbml0X18ucHkKKysrIGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Vi
a2l0c2NtcHkvd2Via2l0c2NtcHkvcHJvZ3JhbS9fX2luaXRfXy5weQpAQCAtMzMsNiArMzMsNyBA
QCBmcm9tIC5maW5kIGltcG9ydCBGaW5kLCBJbmZvCiBmcm9tIC5sb2cgaW1wb3J0IExvZwogZnJv
bSAucHVsbCBpbXBvcnQgUHVsbAogZnJvbSAuc2V0dXBfZ2l0X3N2biBpbXBvcnQgU2V0dXBHaXRT
dm4KK2Zyb20gLnNldHVwIGltcG9ydCBTZXR1cAogCiBmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQg
YXJndW1lbnRzLCBsb2cgYXMgd2Via2l0Y29yZXB5X2xvZwogZnJvbSB3ZWJraXRzY21weSBpbXBv
cnQgbG9jYWwsIGxvZywgcmVtb3RlCkBAIC02Myw3ICs2NCw3IEBAIGRlZiBtYWluKGFyZ3M9Tm9u
ZSwgcGF0aD1Ob25lLCBsb2dnZXJzPU5vbmUsIGNvbnRyaWJ1dG9ycz1Ob25lLCBpZGVudGlmaWVy
X3RlbXBsCiAKICAgICBzdWJwYXJzZXJzID0gcGFyc2VyLmFkZF9zdWJwYXJzZXJzKGhlbHA9J3N1
Yi1jb21tYW5kIGhlbHAnKQogCi0gICAgcHJvZ3JhbXMgPSBbRmluZCwgSW5mbywgQ2hlY2tvdXQs
IENhbm9uaWNhbGl6ZSwgUHVsbCwgQ2xlYW4sIExvZywgQmxhbWVdCisgICAgcHJvZ3JhbXMgPSBb
RmluZCwgSW5mbywgQ2hlY2tvdXQsIENhbm9uaWNhbGl6ZSwgUHVsbCwgQ2xlYW4sIExvZywgQmxh
bWUsIFNldHVwXQogICAgIGlmIHN1YnZlcnNpb246CiAgICAgICAgIHByb2dyYW1zLmFwcGVuZChT
ZXR1cEdpdFN2bikKIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0
c2NtcHkvd2Via2l0c2NtcHkvcHJvZ3JhbS9zZXR1cC5weSBiL1Rvb2xzL1NjcmlwdHMvbGlicmFy
aWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Byb2dyYW0vc2V0dXAucHkKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
Nzk1Y2IyZDJlZDkzNDBhYTEyMDcxYTA4OGEyYzFiNTMzNmZkYWFhOAotLS0gL2Rldi9udWxsCisr
KyBiL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Byb2dy
YW0vc2V0dXAucHkKQEAgLTAsMCArMSwyMTIgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
IyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyMg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisKK2ltcG9ydCByZXF1ZXN0cworaW1wb3J0IHN5cworCitmcm9tIC5jb21tYW5k
IGltcG9ydCBDb21tYW5kCitmcm9tIHJlcXVlc3RzLmF1dGggaW1wb3J0IEhUVFBCYXNpY0F1dGgK
K2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBhcmd1bWVudHMsIHJ1biwgVGVybWluYWwKK2Zyb20g
d2Via2l0c2NtcHkgaW1wb3J0IGxvZywgbG9jYWwsIHJlbW90ZQorCisKK2NsYXNzIFNldHVwKENv
bW1hbmQpOgorICAgIG5hbWUgPSAnc2V0dXAnCisgICAgaGVscCA9ICdDb25maWd1cmUgbG9jYWwg
c2V0dGluZ3MgZm9yIHRoZSBjdXJyZW50IHJlcG9zaXRvcnknCisKKyAgICBAY2xhc3NtZXRob2QK
KyAgICBkZWYgZ2l0aHViKGNscywgYXJncywgcmVwb3NpdG9yeSwgKiprd2FyZ3MpOgorICAgICAg
ICBsb2cud2FybmluZygnU2F2aW5nIEdpdEh1YiBjcmVkZW50aWFscyBpbiBzeXN0ZW0gY3JlZGVu
dGlhbCBzdG9yZS4uLicpCisgICAgICAgIHVzZXJuYW1lLCBhY2Nlc3NfdG9rZW4gPSByZXBvc2l0
b3J5LmNyZWRlbnRpYWxzKHJlcXVpcmVkPVRydWUpCisgICAgICAgIGxvZy53YXJuaW5nKCdHaXRI
dWIgY3JlZGVudGlhbHMgc2F2ZWQgdmlhIEtleXJpbmchJykKKworICAgICAgICBsb2cud2Fybmlu
ZygnVmVyaWZ5aW5nIHVzZXIgb3duZWQgZm9yay4uLicpCisgICAgICAgIGF1dGggPSBIVFRQQmFz
aWNBdXRoKHVzZXJuYW1lLCBhY2Nlc3NfdG9rZW4pCisgICAgICAgIHJlc3BvbnNlID0gcmVxdWVz
dHMuZ2V0KCd7fS9yZXBvcy97fS97fScuZm9ybWF0KAorICAgICAgICAgICAgcmVwb3NpdG9yeS5h
cGlfdXJsLAorICAgICAgICAgICAgdXNlcm5hbWUsCisgICAgICAgICAgICByZXBvc2l0b3J5Lm5h
bWUsCisgICAgICAgICksIGF1dGg9YXV0aCwgaGVhZGVycz1kaWN0KEFjY2VwdD0nYXBwbGljYXRp
b24vdm5kLmdpdGh1Yi52Mytqc29uJykpCisgICAgICAgIGlmIHJlc3BvbnNlLnN0YXR1c19jb2Rl
ID09IDIwMDoKKyAgICAgICAgICAgIGxvZy53YXJuaW5nKCJVc2VyIGFscmVhZHkgb3ducyBhIGZv
cmsgb2YgJ3t9JyEiLmZvcm1hdChyZXBvc2l0b3J5Lm5hbWUpKQorICAgICAgICAgICAgcmV0dXJu
IDAKKworICAgICAgICBpZiByZXBvc2l0b3J5Lm93bmVyID09IHVzZXJuYW1lIG9yIGFyZ3MuZGVm
YXVsdHMgb3IgVGVybWluYWwuY2hvb3NlKAorICAgICAgICAgICAgICAgICJDcmVhdGUgYSBwcml2
YXRlIGZvcmsgb2YgJ3t9JyBiZWxvbmdpbmcgdG8gJ3t9JyIuZm9ybWF0KHJlcG9zaXRvcnkubmFt
ZSwgdXNlcm5hbWUpLAorICAgICAgICAgICAgICAgIGRlZmF1bHQ9J05vJywKKyAgICAgICAgKSA9
PSAnTm8nOgorICAgICAgICAgICAgbG9nLndhcm5pbmcoIkNvbnRpbnVpbmcgd2l0aG91dCBmb3Jr
aW5nICd7fSciLmZvcm1hdChyZXBvc2l0b3J5Lm5hbWUpKQorICAgICAgICAgICAgcmV0dXJuIDEK
KworICAgICAgICByZXNwb25zZSA9IHJlcXVlc3RzLnBvc3QoJ3t9L3JlcG9zL3t9L3t9L2Zvcmtz
Jy5mb3JtYXQoCisgICAgICAgICAgICByZXBvc2l0b3J5LmFwaV91cmwsCisgICAgICAgICAgICBy
ZXBvc2l0b3J5Lm93bmVyLAorICAgICAgICAgICAgcmVwb3NpdG9yeS5uYW1lLAorICAgICAgICAp
LCBqc29uPWRpY3QoCisgICAgICAgICAgICBvd25lcj11c2VybmFtZSwKKyAgICAgICAgICAgIGRl
c2NyaXB0aW9uPSJ7fSdzIGZvcmsgb2Yge30iLmZvcm1hdCh1c2VybmFtZSwgcmVwb3NpdG9yeS5u
YW1lKSwKKyAgICAgICAgICAgIHByaXZhdGU9VHJ1ZSwKKyAgICAgICAgKSwgYXV0aD1hdXRoLCBo
ZWFkZXJzPWRpY3QoQWNjZXB0PSdhcHBsaWNhdGlvbi92bmQuZ2l0aHViLnYzK2pzb24nKSkKKyAg
ICAgICAgaWYgcmVzcG9uc2Uuc3RhdHVzX2NvZGUgbm90IGluICgyMDAsIDIwMik6CisgICAgICAg
ICAgICBzeXMuc3RkZXJyLndyaXRlKCJGYWlsZWQgdG8gY3JlYXRlIGEgZm9yayBvZiAne30nIGJl
bG9uZ2luZyB0byAne30nXG4iLmZvcm1hdChyZXBvc2l0b3J5Lm5hbWUsIHVzZXJuYW1lKSkKKyAg
ICAgICAgICAgIHJldHVybiAxCisgICAgICAgIGxvZy53YXJuaW5nKCJDcmVhdGVkIGEgcHJpdmF0
ZSBmb3JrIG9mICd7fScgYmVsb25naW5nIHRvICd7fSchIi5mb3JtYXQocmVwb3NpdG9yeS5uYW1l
LCB1c2VybmFtZSkpCisgICAgICAgIHJldHVybiAwCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBk
ZWYgZ2l0KGNscywgYXJncywgcmVwb3NpdG9yeSwgKiprd2FyZ3MpOgorICAgICAgICBnbG9iYWxf
Y29uZmlnID0gbG9jYWwuR2l0LmNvbmZpZygpCisgICAgICAgIHJlc3VsdCA9IDAKKworICAgICAg
ICBlbWFpbCA9IGdsb2JhbF9jb25maWcuZ2V0KCd1c2VyLmVtYWlsJykKKyAgICAgICAgbG9nLndh
cm5pbmcoJ1NldHRpbmcgZ2l0IHVzZXIgZW1haWwgZm9yIHt9Li4uJy5mb3JtYXQocmVwb3NpdG9y
eS5yb290X3BhdGgpKQorICAgICAgICBpZiBub3QgZW1haWwgb3IgYXJncy5kZWZhdWx0cyBpcyBG
YWxzZSBvciAobm90IGFyZ3MuZGVmYXVsdHMgYW5kIFRlcm1pbmFsLmNob29zZSgKKyAgICAgICAg
ICAgICJTZXQgJ3t9JyBhcyB0aGUgZ2l0IHVzZXIgZW1haWwiLmZvcm1hdChlbWFpbCksCisgICAg
ICAgICAgICBkZWZhdWx0PSdZZXMnLAorICAgICAgICApID09ICdObycpOgorICAgICAgICAgICAg
ZW1haWwgPSBUZXJtaW5hbC5pbnB1dCgnR2l0IHVzZXIgZW1haWw6ICcpCisKKyAgICAgICAgaWYg
cnVuKAorICAgICAgICAgICAgW2xvY2FsLkdpdC5leGVjdXRhYmxlKCksICdjb25maWcnLCAndXNl
ci5lbWFpbCcsIGVtYWlsXSwgY2FwdHVyZV9vdXRwdXQ9VHJ1ZSwgY3dkPXJlcG9zaXRvcnkucm9v
dF9wYXRoLAorICAgICAgICApLnJldHVybmNvZGU6CisgICAgICAgICAgICBzeXMuc3RkZXJyLndy
aXRlKCdGYWlsZWQgdG8gc2V0IHRoZSBnaXQgdXNlciBlbWFpbCB0byB7fScuZm9ybWF0KGVtYWls
KSkKKyAgICAgICAgICAgIHJlc3VsdCArPSAxCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBs
b2cud2FybmluZygiU2V0IGdpdCB1c2VyIGVtYWlsIHRvICd7fSciLmZvcm1hdChlbWFpbCkpCisK
KyAgICAgICAgbmFtZSA9IHJlcG9zaXRvcnkuY29udHJpYnV0b3JzLmdldChlbWFpbCkKKyAgICAg
ICAgaWYgbmFtZToKKyAgICAgICAgICAgIG5hbWUgPSBuYW1lLm5hbWUKKyAgICAgICAgZWxzZToK
KyAgICAgICAgICAgIG5hbWUgPSBnbG9iYWxfY29uZmlnLmdldCgndXNlci5uYW1lJykKKyAgICAg
ICAgbG9nLndhcm5pbmcoJ1NldHRpbmcgZ2l0IHVzZXIgbmFtZSBmb3Ige30uLi4nLmZvcm1hdChy
ZXBvc2l0b3J5LnJvb3RfcGF0aCkpCisgICAgICAgIGlmIG5vdCBuYW1lIG9yIGFyZ3MuZGVmYXVs
dHMgaXMgRmFsc2Ugb3IgKG5vdCBhcmdzLmRlZmF1bHRzIGFuZCBUZXJtaW5hbC5jaG9vc2UoCisg
ICAgICAgICAgICAiU2V0ICd7fScgYXMgdGhlIGdpdCB1c2VyIG5hbWUiLmZvcm1hdChuYW1lKSwK
KyAgICAgICAgICAgIGRlZmF1bHQ9J1llcycsCisgICAgICAgICkgPT0gJ05vJyk6CisgICAgICAg
ICAgICBuYW1lID0gVGVybWluYWwuaW5wdXQoJ0dpdCB1c2VyIG5hbWU6ICcpCisgICAgICAgIGlm
IHJ1bigKKyAgICAgICAgICAgIFtsb2NhbC5HaXQuZXhlY3V0YWJsZSgpLCAnY29uZmlnJywgJ3Vz
ZXIubmFtZScsIG5hbWVdLCBjYXB0dXJlX291dHB1dD1UcnVlLCBjd2Q9cmVwb3NpdG9yeS5yb290
X3BhdGgsCisgICAgICAgICkucmV0dXJuY29kZToKKyAgICAgICAgICAgIHN5cy5zdGRlcnIud3Jp
dGUoJ0ZhaWxlZCB0byBzZXQgdGhlIGdpdCB1c2VyIG5hbWUgdG8ge30nLmZvcm1hdChuYW1lKSkK
KyAgICAgICAgICAgIHJlc3VsdCArPSAxCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBsb2cu
d2FybmluZygiU2V0IGdpdCB1c2VyIG5hbWUgdG8gJ3t9JyIuZm9ybWF0KG5hbWUpKQorCisgICAg
ICAgIGxvZy53YXJuaW5nKCdTZXR0aW5nIGJldHRlciBPYmplY3RpdmUtQyBkaWZmaW5nIGJlaGF2
aW9yLi4uJykKKyAgICAgICAgcmVzdWx0ICs9IHJ1bigKKyAgICAgICAgICAgIFtsb2NhbC5HaXQu
ZXhlY3V0YWJsZSgpLCAnY29uZmlnJywgJ2RpZmYub2JqY3BwLnhmdW5jbmFtZScsICdeWy0rQGEt
ekEtWl9dLiokJ10sCisgICAgICAgICAgICBjYXB0dXJlX291dHB1dD1UcnVlLCBjd2Q9cmVwb3Np
dG9yeS5yb290X3BhdGgsCisgICAgICAgICkucmV0dXJuY29kZQorICAgICAgICByZXN1bHQgKz0g
cnVuKAorICAgICAgICAgICAgW2xvY2FsLkdpdC5leGVjdXRhYmxlKCksICdjb25maWcnLCAnZGlm
Zi5vYmpjcHBoZWFkZXIueGZ1bmNuYW1lJywgJ15bQGEtekEtWl9dLiokJ10sCisgICAgICAgICAg
ICBjYXB0dXJlX291dHB1dD1UcnVlLCBjd2Q9cmVwb3NpdG9yeS5yb290X3BhdGgsCisgICAgICAg
ICkucmV0dXJuY29kZQorICAgICAgICBsb2cud2FybmluZygnU2V0IGJldHRlciBPYmplY3RpdmUt
QyBkaWZmaW5nIGJlaGF2aW9yIScpCisKKyAgICAgICAgaWYgYXJncy5kZWZhdWx0cyBvciBUZXJt
aW5hbC5jaG9vc2UoCisgICAgICAgICAgICAnQXV0by1jb2xvciBzdGF0dXMsIGRpZmYsIGFuZCBi
cmFuY2g/Jy5mb3JtYXQoZW1haWwpLAorICAgICAgICAgICAgZGVmYXVsdD0nWWVzJywKKyAgICAg
ICAgKSA9PSAnWWVzJzoKKyAgICAgICAgICAgIGZvciBjb21tYW5kIGluICgnc3RhdHVzJywgJ2Rp
ZmYnLCAnYnJhbmNoJyk6CisgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHJ1bigKKyAgICAgICAg
ICAgICAgICAgICAgW2xvY2FsLkdpdC5leGVjdXRhYmxlKCksICdjb25maWcnLCAnY29sb3Iue30n
LmZvcm1hdChjb21tYW5kKSwgJ2F1dG8nXSwKKyAgICAgICAgICAgICAgICAgICAgY2FwdHVyZV9v
dXRwdXQ9VHJ1ZSwgY3dkPXJlcG9zaXRvcnkucm9vdF9wYXRoLAorICAgICAgICAgICAgICAgICku
cmV0dXJuY29kZQorCisgICAgICAgIGxvZy53YXJuaW5nKCdVc2luZyB7fSBtZXJnZSBzdHJhdGVn
eScuZm9ybWF0KCdtZXJnZSBjb21taXRzIGFzIGEnIGlmIGFyZ3MubWVyZ2UgZWxzZSAnYSByZWJh
c2UnKSkKKyAgICAgICAgaWYgcnVuKAorICAgICAgICAgICAgW2xvY2FsLkdpdC5leGVjdXRhYmxl
KCksICdjb25maWcnLCAncHVsbC5yZWJhc2UnLCAnZmFsc2UnIGlmIGFyZ3MubWVyZ2UgZWxzZSAn
dHJ1ZSddLAorICAgICAgICAgICAgY2FwdHVyZV9vdXRwdXQ9VHJ1ZSwgY3dkPXJlcG9zaXRvcnku
cm9vdF9wYXRoLAorICAgICAgICApLnJldHVybmNvZGU6CisgICAgICAgICAgICBzeXMuc3RkZXJy
LndyaXRlKCdGYWlsZWQgdG8gdXNlIHt9IGFzIHRoZSBtZXJnZSBzdHJhdGVneScuZm9ybWF0KCdt
ZXJnZSBjb21taXRzJyBpZiBhcmdzLm1lcmdlIGVsc2UgJ3JlYmFzZScpKQorICAgICAgICAgICAg
cmVzdWx0ICs9IDEKKworICAgICAgICAjIE9ubHkgY29uZmlndXJlIEdpdEh1YiBpZiB0aGUgVVJM
IGlzIGEgR2l0SHViIFVSTAorICAgICAgICBybXQgPSByZXBvc2l0b3J5LnJlbW90ZSgpCisgICAg
ICAgIGlmIG5vdCBpc2luc3RhbmNlKHJtdCwgcmVtb3RlLkdpdEh1Yik6CisgICAgICAgICAgICBy
ZXR1cm4gcmVzdWx0CisKKyAgICAgICAgY29kZSA9IGNscy5naXRodWIoYXJncywgcm10LCAqKmt3
YXJncykKKyAgICAgICAgcmVzdWx0ICs9IGNvZGUKKyAgICAgICAgaWYgY29kZToKKyAgICAgICAg
ICAgIHJldHVybiByZXN1bHQKKworICAgICAgICB1c2VybmFtZSwgXyA9IHJtdC5jcmVkZW50aWFs
cyhyZXF1aXJlZD1UcnVlKQorICAgICAgICBsb2cud2FybmluZygiQWRkaW5nIGZvcmtlZCByZW1v
dGUgYXMgJ3t9JyBhbmQgJ2ZvcmsnLi4uIi5mb3JtYXQodXNlcm5hbWUpKQorICAgICAgICB1cmwg
PSByZXBvc2l0b3J5LnVybCgpCisgICAgICAgIGlmICc6JyBpbiB1cmw6CisgICAgICAgICAgICBm
b3JrX3JlbW90ZSA9ICd7fTp7fS97fS5naXQnLmZvcm1hdCh1cmwuc3BsaXQoJzonKVswXSwgdXNl
cm5hbWUsIHJtdC5uYW1lKQorICAgICAgICBlbGlmICc6Ly8nIGluIHVybDoKKyAgICAgICAgICAg
IGZvcmtfcmVtb3RlID0gJ3t9L3t9L3t9LmdpdCcuZm9ybWF0KCcvJy5qb2luKHVybC5zcGxpdCgn
LycpWzozXSksIHVzZXJuYW1lLCBybXQubmFtZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAg
IHJldHVybiByZXN1bHQgKyAxCisKKyAgICAgICAgYXZhaWxhYmxlX3JlbW90ZXMgPSBbXQorICAg
ICAgICBmb3IgbmFtZSBpbiBbdXNlcm5hbWUsICdmb3JrJ106CisgICAgICAgICAgICByZXR1cm5j
b2RlID0gcnVuKAorICAgICAgICAgICAgICAgIFtyZXBvc2l0b3J5LmV4ZWN1dGFibGUoKSwgJ3Jl
bW90ZScsICdhZGQnLCBuYW1lLCBmb3JrX3JlbW90ZV0sCisgICAgICAgICAgICAgICAgY2FwdHVy
ZV9vdXRwdXQ9VHJ1ZSwgY3dkPXJlcG9zaXRvcnkucm9vdF9wYXRoLAorICAgICAgICAgICAgKS5y
ZXR1cm5jb2RlCisgICAgICAgICAgICBpZiByZXR1cm5jb2RlID09IDM6CisgICAgICAgICAgICAg
ICAgcmV0dXJuY29kZSA9IHJ1bigKKyAgICAgICAgICAgICAgICAgICAgW3JlcG9zaXRvcnkuZXhl
Y3V0YWJsZSgpLCAncmVtb3RlJywgJ3NldC11cmwnLCBuYW1lLCBmb3JrX3JlbW90ZV0sCisgICAg
ICAgICAgICAgICAgICAgIGNhcHR1cmVfb3V0cHV0PVRydWUsIGN3ZD1yZXBvc2l0b3J5LnJvb3Rf
cGF0aCwKKyAgICAgICAgICAgICAgICApLnJldHVybmNvZGUKKyAgICAgICAgICAgIGlmIHJldHVy
bmNvZGU6CisgICAgICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgiRmFpbGVkIHRvIGFkZCBy
ZW1vdGUgJ3t9J1xuIi5mb3JtYXQobmFtZSkpCisgICAgICAgICAgICAgICAgcmVzdWx0ICs9IDEK
KyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgYXZhaWxhYmxlX3JlbW90ZXMuYXBw
ZW5kKG5hbWUpCisgICAgICAgICAgICAgICAgbG9nLndhcm5pbmcoIkFkZGVkIHJlbW90ZSAne30n
Ii5mb3JtYXQobmFtZSkpCisKKyAgICAgICAgaWYgJ2ZvcmsnIG5vdCBpbiBhdmFpbGFibGVfcmVt
b3RlczoKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQKKyAgICAgICAgc3lzLnN0ZGVyci53cml0
ZSgiRmV0Y2hpbmcgJ3t9J1xuIi5mb3JtYXQoZm9ya19yZW1vdGUpKQorICAgICAgICByZXR1cm4g
cnVuKAorICAgICAgICAgICAgW3JlcG9zaXRvcnkuZXhlY3V0YWJsZSgpLCAnZmV0Y2gnLCAnZm9y
ayddLAorICAgICAgICAgICAgY2FwdHVyZV9vdXRwdXQ9VHJ1ZSwgY3dkPXJlcG9zaXRvcnkucm9v
dF9wYXRoLAorICAgICAgICApLnJldHVybmNvZGUKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRl
ZiBwYXJzZXIoY2xzLCBwYXJzZXIsIGxvZ2dlcnM9Tm9uZSk6CisgICAgICAgIHBhcnNlci5hZGRf
YXJndW1lbnQoCisgICAgICAgICAgICAnLS1kZWZhdWx0cycsICctLW5vLWRlZmF1bHRzJywgYWN0
aW9uPWFyZ3VtZW50cy5Ob0FjdGlvbiwgZGVmYXVsdD1Ob25lLAorICAgICAgICAgICAgaGVscD0n
RG8gbm90IHByb21wdCB0aGUgdXNlciBmb3IgZGVmYXVsdHMsIGFsd2F5cyB1c2UgKG9yIGRvIG5v
dCB1c2UpIHRoZW0nLAorICAgICAgICApCisgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCisg
ICAgICAgICAgICAnLS1tZXJnZScsICctLW5vLW1lcmdlJywgYWN0aW9uPWFyZ3VtZW50cy5Ob0Fj
dGlvbiwgZGVmYXVsdD1GYWxzZSwKKyAgICAgICAgICAgIGhlbHA9J1VzZSBhIG1lcmdlLWNvbW1p
dCB3b3JrZmxvdyBpbnN0ZWFkIG9mIGEgcmViYXNlIHdvcmtmbG93JywKKyAgICAgICAgKQorCisg
ICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIG1haW4oY2xzLCBhcmdzLCByZXBvc2l0b3J5LCAqKmt3
YXJncyk6CisgICAgICAgIGlmIGlzaW5zdGFuY2UocmVwb3NpdG9yeSwgbG9jYWwuR2l0KToKKyAg
ICAgICAgICAgIHJldHVybiBjbHMuZ2l0KGFyZ3MsIHJlcG9zaXRvcnksICoqa3dhcmdzKQorCisg
ICAgICAgIGlmIGlzaW5zdGFuY2UocmVwb3NpdG9yeSwgcmVtb3RlLkdpdEh1Yik6CisgICAgICAg
ICAgICByZXR1cm4gY2xzLmdpdGh1YihhcmdzLCByZXBvc2l0b3J5LCAqKmt3YXJncykKKworICAg
ICAgICBzeXMuc3RkZXJyLndyaXRlKCdObyBzZXR1cCByZXF1aXJlZCBmb3Ige31cbicuZm9ybWF0
KAorICAgICAgICAgICAgZ2V0YXR0cihyZXBvc2l0b3J5LCAncm9vdF9wYXRoJywgZ2V0YXR0cihy
ZXBvc2l0b3J5LCAndXJsJywgJz8nKSksCisgICAgICAgICkpCisgICAgICAgIHJldHVybiAxCmRp
ZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vdXNlci5weSBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS91c2VyLnB5CmluZGV4IDY1NDA4
NzI5MmY0NDFjYmE4MTQxMmVkYjI5MjY3YWQyMTY5YTIzNmQuLjA4NzZiOWE3Zjk4OGNiMTBhMTQx
YjEzODFiZjg5OWUyNzRhZTQzMjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL3N5c3RlbS91c2VyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9u
L3N5c3RlbS91c2VyLnB5CkBAIC0zNiw2ICszNiw4IEBAIGltcG9ydCBzeXMKIGltcG9ydCBzdWJw
cm9jZXNzCiBpbXBvcnQgd2ViYnJvd3NlcgogCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgVGVy
bWluYWwKKwogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgRXhl
Y3V0aXZlCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ucGxhdGZvcm1pbmZvIGltcG9ydCBQ
bGF0Zm9ybUluZm8KIApAQCAtNTAsMTEgKzUyLDYgQEAgZXhjZXB0IEltcG9ydEVycm9yOgogICAg
ICAgICAjIFRoZXJlIGlzIG5vIHJlYWRsaW5lIG1vZHVsZSBmb3Igd2luMzIsIG5vdCBtdWNoIHRv
IGRvIGV4Y2VwdCBjcnkuCiAgICAgICAgIF9sb2cud2FybigiVW5hYmxlIHRvIGltcG9ydCByZWFk
bGluZS4iKQogCi1pZiBzeXMudmVyc2lvbl9pbmZvID4gKDMsIDApOgotICAgIGlucHV0X2Z1bmMg
PSBpbnB1dAotZWxzZToKLSAgICBpbnB1dF9mdW5jID0gcmF3X2lucHV0Ci0KIAogY2xhc3MgVXNl
cihvYmplY3QpOgogICAgIERFRkFVTFRfTk8gPSAnbicKQEAgLTY3LDcgKzY0LDcgQEAgY2xhc3Mg
VXNlcihvYmplY3QpOgogCiAgICAgIyBGSVhNRTogVGhlc2UgYXJlIEBjbGFzc21ldGhvZHMgYmVj
YXVzZSBidWd6aWxsYS5weSBkb2Vzbid0IGhhdmUgYSBUb29sIG9iamVjdCAodGh1cyBubyBVc2Vy
IGluc3RhbmNlKS4KICAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgcHJvbXB0KGNscywgbWVzc2Fn
ZSwgcmVwZWF0PTEsIHJhd19pbnB1dD1pbnB1dF9mdW5jKToKKyAgICBkZWYgcHJvbXB0KGNscywg
bWVzc2FnZSwgcmVwZWF0PTEsIHJhd19pbnB1dD1UZXJtaW5hbC5pbnB1dCk6CiAgICAgICAgIHJl
c3BvbnNlID0gTm9uZQogICAgICAgICB3aGlsZSAocmVwZWF0IGFuZCBub3QgcmVzcG9uc2UpOgog
ICAgICAgICAgICAgcmVwZWF0IC09IDEKQEAgLTc5LDcgKzc2LDcgQEAgY2xhc3MgVXNlcihvYmpl
Y3QpOgogICAgICAgICByZXR1cm4gY2xzLnByb21wdChtZXNzYWdlLCByZXBlYXQ9cmVwZWF0LCBy
YXdfaW5wdXQ9Z2V0cGFzcy5nZXRwYXNzKQogCiAgICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHBy
b21wdF93aXRoX211bHRpcGxlX2xpc3RzKGNscywgbGlzdF90aXRsZSwgc3VidGl0bGVzLCBsaXN0
cywgY2FuX2Nob29zZV9tdWx0aXBsZT1GYWxzZSwgcmF3X2lucHV0PWlucHV0X2Z1bmMpOgorICAg
IGRlZiBwcm9tcHRfd2l0aF9tdWx0aXBsZV9saXN0cyhjbHMsIGxpc3RfdGl0bGUsIHN1YnRpdGxl
cywgbGlzdHMsIGNhbl9jaG9vc2VfbXVsdGlwbGU9RmFsc2UsIHJhd19pbnB1dD1UZXJtaW5hbC5p
bnB1dCk6CiAgICAgICAgIGl0ZW1faW5kZXggPSAwCiAgICAgICAgIGN1bXVsYXRlZF9saXN0ID0g
W10KICAgICAgICAgcHJpbnQobGlzdF90aXRsZSkKQEAgLTExOSw3ICsxMTYsNyBAQCBjbGFzcyBV
c2VyKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGxpc3RfaXRlbXNbcmVzdWx0XQog
CiAgICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHByb21wdF93aXRoX2xpc3QoY2xzLCBsaXN0X3Rp
dGxlLCBsaXN0X2l0ZW1zLCBjYW5fY2hvb3NlX211bHRpcGxlPUZhbHNlLCByYXdfaW5wdXQ9aW5w
dXRfZnVuYyk6CisgICAgZGVmIHByb21wdF93aXRoX2xpc3QoY2xzLCBsaXN0X3RpdGxlLCBsaXN0
X2l0ZW1zLCBjYW5fY2hvb3NlX211bHRpcGxlPUZhbHNlLCByYXdfaW5wdXQ9VGVybWluYWwuaW5w
dXQpOgogICAgICAgICBwcmludChsaXN0X3RpdGxlKQogICAgICAgICBpID0gMAogICAgICAgICBm
b3IgaXRlbSBpbiBsaXN0X2l0ZW1zOgpAQCAtMTYxLDcgKzE1OCw3IEBAIGNsYXNzIFVzZXIob2Jq
ZWN0KToKICAgICAgICAgZXhjZXB0IElPRXJyb3I6CiAgICAgICAgICAgICBwYXNzCiAKLSAgICBk
ZWYgY29uZmlybShzZWxmLCBtZXNzYWdlPU5vbmUsIGRlZmF1bHQ9REVGQVVMVF9ZRVMsIHJhd19p
bnB1dD1pbnB1dF9mdW5jKToKKyAgICBkZWYgY29uZmlybShzZWxmLCBtZXNzYWdlPU5vbmUsIGRl
ZmF1bHQ9REVGQVVMVF9ZRVMsIHJhd19pbnB1dD1UZXJtaW5hbC5pbnB1dCk6CiAgICAgICAgIGlm
IG5vdCBtZXNzYWdlOgogICAgICAgICAgICAgbWVzc2FnZSA9ICJDb250aW51ZT8iCiAgICAgICAg
IGNob2ljZSA9IHsneSc6ICdZL24nLCAnbic6ICd5L04nfVtkZWZhdWx0XQpkaWZmIC0tZ2l0IGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3VzZXJfbW9jay5weSBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS91c2VyX21vY2sucHkKaW5kZXggMzUzYzA5
YWVlZWUyMmE2N2YxZTM3ZjFiOGYwNTRkZTJiZDkzMDYwOC4uOTYyY2Y4NjJhZjY2NmE3OWNkNjMx
M2MxMTBlNzg3OTRkMDk3MmRjZiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9j
b21tb24vc3lzdGVtL3VzZXJfbW9jay5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2Nv
bW1vbi9zeXN0ZW0vdXNlcl9tb2NrLnB5CkBAIC0yOSwyMCArMjksMTkgQEAKIGltcG9ydCBsb2dn
aW5nCiBpbXBvcnQgc3lzCiAKLV9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKK2Zy
b20gd2Via2l0Y29yZXB5IGltcG9ydCBUZXJtaW5hbAogCi1pZiBzeXMudmVyc2lvbl9pbmZvIDwg
KDMsIDApOgotICAgIGlucHV0ID0gcmF3X2lucHV0CitfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIo
X19uYW1lX18pCiAKIAogY2xhc3MgTW9ja1VzZXIob2JqZWN0KToKIAogICAgIEBjbGFzc21ldGhv
ZAotICAgIGRlZiBwcm9tcHQoY2xzLCBtZXNzYWdlLCByZXBlYXQ9MSwgcmF3X2lucHV0PWlucHV0
KToKKyAgICBkZWYgcHJvbXB0KGNscywgbWVzc2FnZSwgcmVwZWF0PTEsIHJhd19pbnB1dD1UZXJt
aW5hbC5pbnB1dCk6CiAgICAgICAgIHJldHVybiAiTW9jayB1c2VyIHJlc3BvbnNlIgogCiAgICAg
QGNsYXNzbWV0aG9kCi0gICAgZGVmIHByb21wdF93aXRoX2xpc3QoY2xzLCBsaXN0X3RpdGxlLCBs
aXN0X2l0ZW1zLCBjYW5fY2hvb3NlX211bHRpcGxlPUZhbHNlLCByYXdfaW5wdXQ9aW5wdXQpOgor
ICAgIGRlZiBwcm9tcHRfd2l0aF9saXN0KGNscywgbGlzdF90aXRsZSwgbGlzdF9pdGVtcywgY2Fu
X2Nob29zZV9tdWx0aXBsZT1GYWxzZSwgcmF3X2lucHV0PVRlcm1pbmFsLmlucHV0KToKICAgICAg
ICAgcGFzcwogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434922</attachid>
            <date>2021-08-04 12:10:12 -0700</date>
            <delta_ts>2021-08-05 10:33:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225985-20210804121010.patch</filename>
            <type>text/plain</type>
            <size>11866</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNjQ4CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMGJlYzM0ODIxNTNjNzk3Y2UzMTViNjgzZGQ4M2E2ZjRm
MTFiODE0OC4uN2EzN2ZmZTIzMTg4ZDZmMWFmYTNjNmVlNTQxNjY1NjAyOWQ3ZTgyYiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIw
IEBACisyMDIxLTA4LTA0ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbZ2l0LXdlYmtpdF0gQWRkIHNldHVwIGZ1bmN0aW9uCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU5ODUKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzc4MjI2NzI5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvcHJv
Z3JhbS9fX2luaXRfXy5weToKKyAgICAgICAgKG1haW4pOiBBZGQgc2V0dXAgZnVuY3Rpb24uCisg
ICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvcHJvZ3Jh
bS9zZXR1cC5weTogQWRkZWQuCisgICAgICAgIChTZXR1cCk6CisgICAgICAgIChTZXR1cC5naXRo
dWIpOiBDcmVhdGUgYSBHaXRIdWIgbWlycm9yIG9mIHRoZSBwcm92aWRlZCBwcm9qZWN0LgorICAg
ICAgICAoU2V0dXAuZ2l0KTogQ29uZmlndXJlIGdpdCBzZXR0aW5ncywgYW5kLCBpZiBHaXRIdWIs
IHRoZSB1c2VyJ3MgbWlycm9yIGFzIHdlbGwuCisgICAgICAgIChTZXR1cC5wYXJzZXIpOgorICAg
ICAgICAoU2V0dXAubWFpbik6IEVudHJ5IHBvaW50IGZvciBib3RoIEdpdCBhbmQgR2l0SHViIHNl
dHVwLgorCiAyMDIxLTA4LTA0ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4K
IAogICAgICAgICBbd2Via2l0Y29yZXB5XSBBZGQgc2hhcmVkIHRlcm1pbmFsIGlucHV0IGNvZGUK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNj
bXB5L3Byb2dyYW0vX19pbml0X18ucHkgYi9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRz
Y21weS93ZWJraXRzY21weS9wcm9ncmFtL19faW5pdF9fLnB5CmluZGV4IDJmOWUwNDc3OTk2NGEw
YjIzMzM4MmQwYzY2NTU3OWY1NWIwY2ZjOTcuLjE1NzhkZDk2ZTgxNWI2NjMzNTEyYzJhYjYwOWE3
MzViNGNhZjhlMGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNj
bXB5L3dlYmtpdHNjbXB5L3Byb2dyYW0vX19pbml0X18ucHkKKysrIGIvVG9vbHMvU2NyaXB0cy9s
aWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvcHJvZ3JhbS9fX2luaXRfXy5weQpAQCAt
MzMsNiArMzMsNyBAQCBmcm9tIC5maW5kIGltcG9ydCBGaW5kLCBJbmZvCiBmcm9tIC5sb2cgaW1w
b3J0IExvZwogZnJvbSAucHVsbCBpbXBvcnQgUHVsbAogZnJvbSAuc2V0dXBfZ2l0X3N2biBpbXBv
cnQgU2V0dXBHaXRTdm4KK2Zyb20gLnNldHVwIGltcG9ydCBTZXR1cAogCiBmcm9tIHdlYmtpdGNv
cmVweSBpbXBvcnQgYXJndW1lbnRzLCBsb2cgYXMgd2Via2l0Y29yZXB5X2xvZwogZnJvbSB3ZWJr
aXRzY21weSBpbXBvcnQgbG9jYWwsIGxvZywgcmVtb3RlCkBAIC02Myw3ICs2NCw3IEBAIGRlZiBt
YWluKGFyZ3M9Tm9uZSwgcGF0aD1Ob25lLCBsb2dnZXJzPU5vbmUsIGNvbnRyaWJ1dG9ycz1Ob25l
LCBpZGVudGlmaWVyX3RlbXBsCiAKICAgICBzdWJwYXJzZXJzID0gcGFyc2VyLmFkZF9zdWJwYXJz
ZXJzKGhlbHA9J3N1Yi1jb21tYW5kIGhlbHAnKQogCi0gICAgcHJvZ3JhbXMgPSBbRmluZCwgSW5m
bywgQ2hlY2tvdXQsIENhbm9uaWNhbGl6ZSwgUHVsbCwgQ2xlYW4sIExvZywgQmxhbWVdCisgICAg
cHJvZ3JhbXMgPSBbRmluZCwgSW5mbywgQ2hlY2tvdXQsIENhbm9uaWNhbGl6ZSwgUHVsbCwgQ2xl
YW4sIExvZywgQmxhbWUsIFNldHVwXQogICAgIGlmIHN1YnZlcnNpb246CiAgICAgICAgIHByb2dy
YW1zLmFwcGVuZChTZXR1cEdpdFN2bikKIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9saWJy
YXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvcHJvZ3JhbS9zZXR1cC5weSBiL1Rvb2xzL1Nj
cmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Byb2dyYW0vc2V0dXAucHkK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNzk1Y2IyZDJlZDkzNDBhYTEyMDcxYTA4OGEyYzFiNTMzNmZkYWFhOAotLS0g
L2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtp
dHNjbXB5L3Byb2dyYW0vc2V0dXAucHkKQEAgLTAsMCArMSwyMTIgQEAKKyMgQ29weXJpZ2h0IChD
KSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisj
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCByZXF1ZXN0cworaW1wb3J0IHN5cworCitm
cm9tIC5jb21tYW5kIGltcG9ydCBDb21tYW5kCitmcm9tIHJlcXVlc3RzLmF1dGggaW1wb3J0IEhU
VFBCYXNpY0F1dGgKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBhcmd1bWVudHMsIHJ1biwgVGVy
bWluYWwKK2Zyb20gd2Via2l0c2NtcHkgaW1wb3J0IGxvZywgbG9jYWwsIHJlbW90ZQorCisKK2Ns
YXNzIFNldHVwKENvbW1hbmQpOgorICAgIG5hbWUgPSAnc2V0dXAnCisgICAgaGVscCA9ICdDb25m
aWd1cmUgbG9jYWwgc2V0dGluZ3MgZm9yIHRoZSBjdXJyZW50IHJlcG9zaXRvcnknCisKKyAgICBA
Y2xhc3NtZXRob2QKKyAgICBkZWYgZ2l0aHViKGNscywgYXJncywgcmVwb3NpdG9yeSwgKiprd2Fy
Z3MpOgorICAgICAgICBsb2cud2FybmluZygnU2F2aW5nIEdpdEh1YiBjcmVkZW50aWFscyBpbiBz
eXN0ZW0gY3JlZGVudGlhbCBzdG9yZS4uLicpCisgICAgICAgIHVzZXJuYW1lLCBhY2Nlc3NfdG9r
ZW4gPSByZXBvc2l0b3J5LmNyZWRlbnRpYWxzKHJlcXVpcmVkPVRydWUpCisgICAgICAgIGxvZy53
YXJuaW5nKCdHaXRIdWIgY3JlZGVudGlhbHMgc2F2ZWQgdmlhIEtleXJpbmchJykKKworICAgICAg
ICBsb2cud2FybmluZygnVmVyaWZ5aW5nIHVzZXIgb3duZWQgZm9yay4uLicpCisgICAgICAgIGF1
dGggPSBIVFRQQmFzaWNBdXRoKHVzZXJuYW1lLCBhY2Nlc3NfdG9rZW4pCisgICAgICAgIHJlc3Bv
bnNlID0gcmVxdWVzdHMuZ2V0KCd7fS9yZXBvcy97fS97fScuZm9ybWF0KAorICAgICAgICAgICAg
cmVwb3NpdG9yeS5hcGlfdXJsLAorICAgICAgICAgICAgdXNlcm5hbWUsCisgICAgICAgICAgICBy
ZXBvc2l0b3J5Lm5hbWUsCisgICAgICAgICksIGF1dGg9YXV0aCwgaGVhZGVycz1kaWN0KEFjY2Vw
dD0nYXBwbGljYXRpb24vdm5kLmdpdGh1Yi52Mytqc29uJykpCisgICAgICAgIGlmIHJlc3BvbnNl
LnN0YXR1c19jb2RlID09IDIwMDoKKyAgICAgICAgICAgIGxvZy53YXJuaW5nKCJVc2VyIGFscmVh
ZHkgb3ducyBhIGZvcmsgb2YgJ3t9JyEiLmZvcm1hdChyZXBvc2l0b3J5Lm5hbWUpKQorICAgICAg
ICAgICAgcmV0dXJuIDAKKworICAgICAgICBpZiByZXBvc2l0b3J5Lm93bmVyID09IHVzZXJuYW1l
IG9yIGFyZ3MuZGVmYXVsdHMgb3IgVGVybWluYWwuY2hvb3NlKAorICAgICAgICAgICAgICAgICJD
cmVhdGUgYSBwcml2YXRlIGZvcmsgb2YgJ3t9JyBiZWxvbmdpbmcgdG8gJ3t9JyIuZm9ybWF0KHJl
cG9zaXRvcnkubmFtZSwgdXNlcm5hbWUpLAorICAgICAgICAgICAgICAgIGRlZmF1bHQ9J05vJywK
KyAgICAgICAgKSA9PSAnTm8nOgorICAgICAgICAgICAgbG9nLndhcm5pbmcoIkNvbnRpbnVpbmcg
d2l0aG91dCBmb3JraW5nICd7fSciLmZvcm1hdChyZXBvc2l0b3J5Lm5hbWUpKQorICAgICAgICAg
ICAgcmV0dXJuIDEKKworICAgICAgICByZXNwb25zZSA9IHJlcXVlc3RzLnBvc3QoJ3t9L3JlcG9z
L3t9L3t9L2ZvcmtzJy5mb3JtYXQoCisgICAgICAgICAgICByZXBvc2l0b3J5LmFwaV91cmwsCisg
ICAgICAgICAgICByZXBvc2l0b3J5Lm93bmVyLAorICAgICAgICAgICAgcmVwb3NpdG9yeS5uYW1l
LAorICAgICAgICApLCBqc29uPWRpY3QoCisgICAgICAgICAgICBvd25lcj11c2VybmFtZSwKKyAg
ICAgICAgICAgIGRlc2NyaXB0aW9uPSJ7fSdzIGZvcmsgb2Yge30iLmZvcm1hdCh1c2VybmFtZSwg
cmVwb3NpdG9yeS5uYW1lKSwKKyAgICAgICAgICAgIHByaXZhdGU9VHJ1ZSwKKyAgICAgICAgKSwg
YXV0aD1hdXRoLCBoZWFkZXJzPWRpY3QoQWNjZXB0PSdhcHBsaWNhdGlvbi92bmQuZ2l0aHViLnYz
K2pzb24nKSkKKyAgICAgICAgaWYgcmVzcG9uc2Uuc3RhdHVzX2NvZGUgbm90IGluICgyMDAsIDIw
Mik6CisgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCJGYWlsZWQgdG8gY3JlYXRlIGEgZm9y
ayBvZiAne30nIGJlbG9uZ2luZyB0byAne30nXG4iLmZvcm1hdChyZXBvc2l0b3J5Lm5hbWUsIHVz
ZXJuYW1lKSkKKyAgICAgICAgICAgIHJldHVybiAxCisgICAgICAgIGxvZy53YXJuaW5nKCJDcmVh
dGVkIGEgcHJpdmF0ZSBmb3JrIG9mICd7fScgYmVsb25naW5nIHRvICd7fSchIi5mb3JtYXQocmVw
b3NpdG9yeS5uYW1lLCB1c2VybmFtZSkpCisgICAgICAgIHJldHVybiAwCisKKyAgICBAY2xhc3Nt
ZXRob2QKKyAgICBkZWYgZ2l0KGNscywgYXJncywgcmVwb3NpdG9yeSwgKiprd2FyZ3MpOgorICAg
ICAgICBnbG9iYWxfY29uZmlnID0gbG9jYWwuR2l0LmNvbmZpZygpCisgICAgICAgIHJlc3VsdCA9
IDAKKworICAgICAgICBlbWFpbCA9IGdsb2JhbF9jb25maWcuZ2V0KCd1c2VyLmVtYWlsJykKKyAg
ICAgICAgbG9nLndhcm5pbmcoJ1NldHRpbmcgZ2l0IHVzZXIgZW1haWwgZm9yIHt9Li4uJy5mb3Jt
YXQocmVwb3NpdG9yeS5yb290X3BhdGgpKQorICAgICAgICBpZiBub3QgZW1haWwgb3IgYXJncy5k
ZWZhdWx0cyBpcyBGYWxzZSBvciAobm90IGFyZ3MuZGVmYXVsdHMgYW5kIFRlcm1pbmFsLmNob29z
ZSgKKyAgICAgICAgICAgICJTZXQgJ3t9JyBhcyB0aGUgZ2l0IHVzZXIgZW1haWwiLmZvcm1hdChl
bWFpbCksCisgICAgICAgICAgICBkZWZhdWx0PSdZZXMnLAorICAgICAgICApID09ICdObycpOgor
ICAgICAgICAgICAgZW1haWwgPSBUZXJtaW5hbC5pbnB1dCgnR2l0IHVzZXIgZW1haWw6ICcpCisK
KyAgICAgICAgaWYgcnVuKAorICAgICAgICAgICAgW2xvY2FsLkdpdC5leGVjdXRhYmxlKCksICdj
b25maWcnLCAndXNlci5lbWFpbCcsIGVtYWlsXSwgY2FwdHVyZV9vdXRwdXQ9VHJ1ZSwgY3dkPXJl
cG9zaXRvcnkucm9vdF9wYXRoLAorICAgICAgICApLnJldHVybmNvZGU6CisgICAgICAgICAgICBz
eXMuc3RkZXJyLndyaXRlKCdGYWlsZWQgdG8gc2V0IHRoZSBnaXQgdXNlciBlbWFpbCB0byB7fScu
Zm9ybWF0KGVtYWlsKSkKKyAgICAgICAgICAgIHJlc3VsdCArPSAxCisgICAgICAgIGVsc2U6Cisg
ICAgICAgICAgICBsb2cud2FybmluZygiU2V0IGdpdCB1c2VyIGVtYWlsIHRvICd7fSciLmZvcm1h
dChlbWFpbCkpCisKKyAgICAgICAgbmFtZSA9IHJlcG9zaXRvcnkuY29udHJpYnV0b3JzLmdldChl
bWFpbCkKKyAgICAgICAgaWYgbmFtZToKKyAgICAgICAgICAgIG5hbWUgPSBuYW1lLm5hbWUKKyAg
ICAgICAgZWxzZToKKyAgICAgICAgICAgIG5hbWUgPSBnbG9iYWxfY29uZmlnLmdldCgndXNlci5u
YW1lJykKKyAgICAgICAgbG9nLndhcm5pbmcoJ1NldHRpbmcgZ2l0IHVzZXIgbmFtZSBmb3Ige30u
Li4nLmZvcm1hdChyZXBvc2l0b3J5LnJvb3RfcGF0aCkpCisgICAgICAgIGlmIG5vdCBuYW1lIG9y
IGFyZ3MuZGVmYXVsdHMgaXMgRmFsc2Ugb3IgKG5vdCBhcmdzLmRlZmF1bHRzIGFuZCBUZXJtaW5h
bC5jaG9vc2UoCisgICAgICAgICAgICAiU2V0ICd7fScgYXMgdGhlIGdpdCB1c2VyIG5hbWUiLmZv
cm1hdChuYW1lKSwKKyAgICAgICAgICAgIGRlZmF1bHQ9J1llcycsCisgICAgICAgICkgPT0gJ05v
Jyk6CisgICAgICAgICAgICBuYW1lID0gVGVybWluYWwuaW5wdXQoJ0dpdCB1c2VyIG5hbWU6ICcp
CisgICAgICAgIGlmIHJ1bigKKyAgICAgICAgICAgIFtsb2NhbC5HaXQuZXhlY3V0YWJsZSgpLCAn
Y29uZmlnJywgJ3VzZXIubmFtZScsIG5hbWVdLCBjYXB0dXJlX291dHB1dD1UcnVlLCBjd2Q9cmVw
b3NpdG9yeS5yb290X3BhdGgsCisgICAgICAgICkucmV0dXJuY29kZToKKyAgICAgICAgICAgIHN5
cy5zdGRlcnIud3JpdGUoJ0ZhaWxlZCB0byBzZXQgdGhlIGdpdCB1c2VyIG5hbWUgdG8ge30nLmZv
cm1hdChuYW1lKSkKKyAgICAgICAgICAgIHJlc3VsdCArPSAxCisgICAgICAgIGVsc2U6CisgICAg
ICAgICAgICBsb2cud2FybmluZygiU2V0IGdpdCB1c2VyIG5hbWUgdG8gJ3t9JyIuZm9ybWF0KG5h
bWUpKQorCisgICAgICAgIGxvZy53YXJuaW5nKCdTZXR0aW5nIGJldHRlciBPYmplY3RpdmUtQyBk
aWZmaW5nIGJlaGF2aW9yLi4uJykKKyAgICAgICAgcmVzdWx0ICs9IHJ1bigKKyAgICAgICAgICAg
IFtsb2NhbC5HaXQuZXhlY3V0YWJsZSgpLCAnY29uZmlnJywgJ2RpZmYub2JqY3BwLnhmdW5jbmFt
ZScsICdeWy0rQGEtekEtWl9dLiokJ10sCisgICAgICAgICAgICBjYXB0dXJlX291dHB1dD1UcnVl
LCBjd2Q9cmVwb3NpdG9yeS5yb290X3BhdGgsCisgICAgICAgICkucmV0dXJuY29kZQorICAgICAg
ICByZXN1bHQgKz0gcnVuKAorICAgICAgICAgICAgW2xvY2FsLkdpdC5leGVjdXRhYmxlKCksICdj
b25maWcnLCAnZGlmZi5vYmpjcHBoZWFkZXIueGZ1bmNuYW1lJywgJ15bQGEtekEtWl9dLiokJ10s
CisgICAgICAgICAgICBjYXB0dXJlX291dHB1dD1UcnVlLCBjd2Q9cmVwb3NpdG9yeS5yb290X3Bh
dGgsCisgICAgICAgICkucmV0dXJuY29kZQorICAgICAgICBsb2cud2FybmluZygnU2V0IGJldHRl
ciBPYmplY3RpdmUtQyBkaWZmaW5nIGJlaGF2aW9yIScpCisKKyAgICAgICAgaWYgYXJncy5kZWZh
dWx0cyBvciBUZXJtaW5hbC5jaG9vc2UoCisgICAgICAgICAgICAnQXV0by1jb2xvciBzdGF0dXMs
IGRpZmYsIGFuZCBicmFuY2g/Jy5mb3JtYXQoZW1haWwpLAorICAgICAgICAgICAgZGVmYXVsdD0n
WWVzJywKKyAgICAgICAgKSA9PSAnWWVzJzoKKyAgICAgICAgICAgIGZvciBjb21tYW5kIGluICgn
c3RhdHVzJywgJ2RpZmYnLCAnYnJhbmNoJyk6CisgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHJ1
bigKKyAgICAgICAgICAgICAgICAgICAgW2xvY2FsLkdpdC5leGVjdXRhYmxlKCksICdjb25maWcn
LCAnY29sb3Iue30nLmZvcm1hdChjb21tYW5kKSwgJ2F1dG8nXSwKKyAgICAgICAgICAgICAgICAg
ICAgY2FwdHVyZV9vdXRwdXQ9VHJ1ZSwgY3dkPXJlcG9zaXRvcnkucm9vdF9wYXRoLAorICAgICAg
ICAgICAgICAgICkucmV0dXJuY29kZQorCisgICAgICAgIGxvZy53YXJuaW5nKCdVc2luZyB7fSBt
ZXJnZSBzdHJhdGVneScuZm9ybWF0KCdtZXJnZSBjb21taXRzIGFzIGEnIGlmIGFyZ3MubWVyZ2Ug
ZWxzZSAnYSByZWJhc2UnKSkKKyAgICAgICAgaWYgcnVuKAorICAgICAgICAgICAgW2xvY2FsLkdp
dC5leGVjdXRhYmxlKCksICdjb25maWcnLCAncHVsbC5yZWJhc2UnLCAnZmFsc2UnIGlmIGFyZ3Mu
bWVyZ2UgZWxzZSAndHJ1ZSddLAorICAgICAgICAgICAgY2FwdHVyZV9vdXRwdXQ9VHJ1ZSwgY3dk
PXJlcG9zaXRvcnkucm9vdF9wYXRoLAorICAgICAgICApLnJldHVybmNvZGU6CisgICAgICAgICAg
ICBzeXMuc3RkZXJyLndyaXRlKCdGYWlsZWQgdG8gdXNlIHt9IGFzIHRoZSBtZXJnZSBzdHJhdGVn
eScuZm9ybWF0KCdtZXJnZSBjb21taXRzJyBpZiBhcmdzLm1lcmdlIGVsc2UgJ3JlYmFzZScpKQor
ICAgICAgICAgICAgcmVzdWx0ICs9IDEKKworICAgICAgICAjIE9ubHkgY29uZmlndXJlIEdpdEh1
YiBpZiB0aGUgVVJMIGlzIGEgR2l0SHViIFVSTAorICAgICAgICBybXQgPSByZXBvc2l0b3J5LnJl
bW90ZSgpCisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHJtdCwgcmVtb3RlLkdpdEh1Yik6Cisg
ICAgICAgICAgICByZXR1cm4gcmVzdWx0CisKKyAgICAgICAgY29kZSA9IGNscy5naXRodWIoYXJn
cywgcm10LCAqKmt3YXJncykKKyAgICAgICAgcmVzdWx0ICs9IGNvZGUKKyAgICAgICAgaWYgY29k
ZToKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQKKworICAgICAgICB1c2VybmFtZSwgXyA9IHJt
dC5jcmVkZW50aWFscyhyZXF1aXJlZD1UcnVlKQorICAgICAgICBsb2cud2FybmluZygiQWRkaW5n
IGZvcmtlZCByZW1vdGUgYXMgJ3t9JyBhbmQgJ2ZvcmsnLi4uIi5mb3JtYXQodXNlcm5hbWUpKQor
ICAgICAgICB1cmwgPSByZXBvc2l0b3J5LnVybCgpCisgICAgICAgIGlmICc6JyBpbiB1cmw6Cisg
ICAgICAgICAgICBmb3JrX3JlbW90ZSA9ICd7fTp7fS97fS5naXQnLmZvcm1hdCh1cmwuc3BsaXQo
JzonKVswXSwgdXNlcm5hbWUsIHJtdC5uYW1lKQorICAgICAgICBlbGlmICc6Ly8nIGluIHVybDoK
KyAgICAgICAgICAgIGZvcmtfcmVtb3RlID0gJ3t9L3t9L3t9LmdpdCcuZm9ybWF0KCcvJy5qb2lu
KHVybC5zcGxpdCgnLycpWzozXSksIHVzZXJuYW1lLCBybXQubmFtZSkKKyAgICAgICAgZWxzZToK
KyAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAxCisKKyAgICAgICAgYXZhaWxhYmxlX3JlbW90
ZXMgPSBbXQorICAgICAgICBmb3IgbmFtZSBpbiBbdXNlcm5hbWUsICdmb3JrJ106CisgICAgICAg
ICAgICByZXR1cm5jb2RlID0gcnVuKAorICAgICAgICAgICAgICAgIFtyZXBvc2l0b3J5LmV4ZWN1
dGFibGUoKSwgJ3JlbW90ZScsICdhZGQnLCBuYW1lLCBmb3JrX3JlbW90ZV0sCisgICAgICAgICAg
ICAgICAgY2FwdHVyZV9vdXRwdXQ9VHJ1ZSwgY3dkPXJlcG9zaXRvcnkucm9vdF9wYXRoLAorICAg
ICAgICAgICAgKS5yZXR1cm5jb2RlCisgICAgICAgICAgICBpZiByZXR1cm5jb2RlID09IDM6Cisg
ICAgICAgICAgICAgICAgcmV0dXJuY29kZSA9IHJ1bigKKyAgICAgICAgICAgICAgICAgICAgW3Jl
cG9zaXRvcnkuZXhlY3V0YWJsZSgpLCAncmVtb3RlJywgJ3NldC11cmwnLCBuYW1lLCBmb3JrX3Jl
bW90ZV0sCisgICAgICAgICAgICAgICAgICAgIGNhcHR1cmVfb3V0cHV0PVRydWUsIGN3ZD1yZXBv
c2l0b3J5LnJvb3RfcGF0aCwKKyAgICAgICAgICAgICAgICApLnJldHVybmNvZGUKKyAgICAgICAg
ICAgIGlmIHJldHVybmNvZGU6CisgICAgICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgiRmFp
bGVkIHRvIGFkZCByZW1vdGUgJ3t9J1xuIi5mb3JtYXQobmFtZSkpCisgICAgICAgICAgICAgICAg
cmVzdWx0ICs9IDEKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgYXZhaWxhYmxl
X3JlbW90ZXMuYXBwZW5kKG5hbWUpCisgICAgICAgICAgICAgICAgbG9nLndhcm5pbmcoIkFkZGVk
IHJlbW90ZSAne30nIi5mb3JtYXQobmFtZSkpCisKKyAgICAgICAgaWYgJ2ZvcmsnIG5vdCBpbiBh
dmFpbGFibGVfcmVtb3RlczoKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQKKyAgICAgICAgc3lz
LnN0ZGVyci53cml0ZSgiRmV0Y2hpbmcgJ3t9J1xuIi5mb3JtYXQoZm9ya19yZW1vdGUpKQorICAg
ICAgICByZXR1cm4gcnVuKAorICAgICAgICAgICAgW3JlcG9zaXRvcnkuZXhlY3V0YWJsZSgpLCAn
ZmV0Y2gnLCAnZm9yayddLAorICAgICAgICAgICAgY2FwdHVyZV9vdXRwdXQ9VHJ1ZSwgY3dkPXJl
cG9zaXRvcnkucm9vdF9wYXRoLAorICAgICAgICApLnJldHVybmNvZGUKKworICAgIEBjbGFzc21l
dGhvZAorICAgIGRlZiBwYXJzZXIoY2xzLCBwYXJzZXIsIGxvZ2dlcnM9Tm9uZSk6CisgICAgICAg
IHBhcnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICAgICAnLS1kZWZhdWx0cycsICctLW5vLWRl
ZmF1bHRzJywgYWN0aW9uPWFyZ3VtZW50cy5Ob0FjdGlvbiwgZGVmYXVsdD1Ob25lLAorICAgICAg
ICAgICAgaGVscD0nRG8gbm90IHByb21wdCB0aGUgdXNlciBmb3IgZGVmYXVsdHMsIGFsd2F5cyB1
c2UgKG9yIGRvIG5vdCB1c2UpIHRoZW0nLAorICAgICAgICApCisgICAgICAgIHBhcnNlci5hZGRf
YXJndW1lbnQoCisgICAgICAgICAgICAnLS1tZXJnZScsICctLW5vLW1lcmdlJywgYWN0aW9uPWFy
Z3VtZW50cy5Ob0FjdGlvbiwgZGVmYXVsdD1GYWxzZSwKKyAgICAgICAgICAgIGhlbHA9J1VzZSBh
IG1lcmdlLWNvbW1pdCB3b3JrZmxvdyBpbnN0ZWFkIG9mIGEgcmViYXNlIHdvcmtmbG93JywKKyAg
ICAgICAgKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIG1haW4oY2xzLCBhcmdzLCByZXBv
c2l0b3J5LCAqKmt3YXJncyk6CisgICAgICAgIGlmIGlzaW5zdGFuY2UocmVwb3NpdG9yeSwgbG9j
YWwuR2l0KToKKyAgICAgICAgICAgIHJldHVybiBjbHMuZ2l0KGFyZ3MsIHJlcG9zaXRvcnksICoq
a3dhcmdzKQorCisgICAgICAgIGlmIGlzaW5zdGFuY2UocmVwb3NpdG9yeSwgcmVtb3RlLkdpdEh1
Yik6CisgICAgICAgICAgICByZXR1cm4gY2xzLmdpdGh1YihhcmdzLCByZXBvc2l0b3J5LCAqKmt3
YXJncykKKworICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCdObyBzZXR1cCByZXF1aXJlZCBmb3Ig
e31cbicuZm9ybWF0KAorICAgICAgICAgICAgZ2V0YXR0cihyZXBvc2l0b3J5LCAncm9vdF9wYXRo
JywgZ2V0YXR0cihyZXBvc2l0b3J5LCAndXJsJywgJz8nKSksCisgICAgICAgICkpCisgICAgICAg
IHJldHVybiAxCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435003</attachid>
            <date>2021-08-05 10:33:19 -0700</date>
            <delta_ts>2021-08-05 14:12:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225985-20210805103317.patch</filename>
            <type>text/plain</type>
            <size>31984</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNjk5CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYjEzYmI1NWEwZjRjMTQyZWQ4NmQxODNmZDViNjI5ODc1
ZTVkZDc5My4uYWRmMGU5OTI4NDBiZGZjNGI2YmRmMDNhYmFlNDFiNWFjYjI4NDkxYiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0
IEBACisyMDIxLTA4LTA1ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbZ2l0LXdlYmtpdF0gQWRkIHNldHVwIGZ1bmN0aW9uCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU5ODUKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzc4MjI2NzI5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3NldHVwLnB5OiBCdW1w
IHZlcnNpb24uCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtp
dGNvcmVweS9fX2luaXRfXy5weTogRGl0dG8uCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMv
d2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9jcmVkZW50aWFscy5weToKKyAgICAgICAgKGNyZWRl
bnRpYWxzKTogS2V5IHNob3VsZCBiZSBwdWxsZWQgZnJvbSBlbnZpcm9ubWVudCB2YXJpYWJsZSB3
aXRoIGtleV9uYW1lIGluIGl0LgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNj
bXB5L3NldHVwLnB5OiBCdW1wIHZlcnNpb24uCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMv
d2Via2l0c2NtcHkvd2Via2l0c2NtcHkvX19pbml0X18ucHk6IERpdHRvLgorICAgICAgICAqIFNj
cmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L21vY2tzL2xvY2FsL2dpdC5w
eToKKyAgICAgICAgKEdpdCk6IE1vdmUgY29uZmlnIHJlZ2V4ZXMuCisgICAgICAgIChHaXQuX19p
bml0X18pOiBBZGQgYGdpdCByZW1vdGUgYWRkYCwgYGdpdCBjb25maWdgIGFuZCBgZ2l0IGZldGNo
IGZvcmtgLgorICAgICAgICAoR2l0LmNvbmZpZyk6IEFkZCB1c2VyLmVtYWlsIHRvIGRlZmF1bHQg
Y29uZmlndXJhdGlvbi4KKyAgICAgICAgKEdpdC5lZGl0X2NvbmZpZyk6IE1vZGlmeSBjb25maWd1
cmF0aW9uIGZpbGUuCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Vi
a2l0c2NtcHkvbW9ja3MvcmVtb3RlL2dpdF9odWIucHk6CisgICAgICAgIChHaXRIdWIpOiBBZGQg
bGlzdCBvZiBmb3Jrcy4KKyAgICAgICAgKEdpdEh1Yi5fX2VudGVyX18pOiBDb3JyZWN0bHkgbW9j
ayB0b2tlbi4KKyAgICAgICAgKEdpdEh1Yi5yZXF1ZXN0KTogQWRkIGZvcmsgY2hlY2sgYW5kIGZv
cmsgYWRkaXRpb24uCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Vi
a2l0c2NtcHkvcHJvZ3JhbS9fX2luaXRfXy5weToKKyAgICAgICAgKG1haW4pOiBBZGQgc2V0dXAg
ZnVuY3Rpb24uCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0
c2NtcHkvcHJvZ3JhbS9zZXR1cC5weTogQWRkZWQuCisgICAgICAgIChTZXR1cC5naXRodWIpOiBF
bnN1cmUgdGhhdCBHaXRIdWIgY3JlZGVudGlhbHMgYXJlIGluIHRoZSBrZXljaGFpbi4KKyAgICAg
ICAgKFNldHVwLmdpdCk6IFNldCB0aGUgdXNlciBmb3IgdGhlIHJlcG9zaXRvcnksIGFsb25nIHdp
dGggbWVyZ2Ugc3RyYXRlZ3kuCisgICAgICAgIChTZXR1cC5wYXJzZXIpOgorICAgICAgICAoU2V0
dXAubWFpbik6CisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0
c2NtcHkvdGVzdC9naXRfdW5pdHRlc3QucHk6CisgICAgICAgICh0ZXN0X2NvbmZpZyk6IENoYW5n
ZSB1c2VyIG5hbWUuCisgICAgICAgICh0ZXN0X2dsb2JhbF9jb25maWcpOiBEaXR0by4KKyAgICAg
ICAgKiBTY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS90ZXN0L3NldHVw
X3VuaXR0ZXN0LnB5OiBBZGRlZC4KKyAgICAgICAgKFRlc3RTZXR1cCk6CisgICAgICAgIChUZXN0
U2V0dXAuc2V0VXApOgorICAgICAgICAoVGVzdFNldHVwLnRlc3Rfc3ZuKToKKyAgICAgICAgKFRl
c3RTZXR1cC50ZXN0X2dpdGh1Yik6CisgICAgICAgIChUZXN0U2V0dXAudGVzdF9naXQpOgorICAg
ICAgICAoVGVzdFNldHVwLnRlc3RfZ2l0aHViX2NoZWNrb3V0KToKKwogMjAyMS0wOC0wNSAgWmFu
IERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAgcnVuLWpzYy1zdHJl
c3MtdGVzdHM6IGRldGVjdCB0aGUgcmlzY3Y2NCBhcmNoaXRlY3R1cmUKZGlmZiAtLWdpdCBhL1Rv
b2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS9zZXR1cC5weSBiL1Rvb2xzL1Njcmlw
dHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS9zZXR1cC5weQppbmRleCAxZTg2ZWYxMzIyY2I4OWQ0
ZGNkZjRlZTU5M2E2MzUzZmNlNWM4ZDFlLi45ZTU4ZmRhMjdlNDE5YzcwNWVkZTQ4ZGVhYjAyZmE2
Njc5YTQxNWYwIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3Jl
cHkvc2V0dXAucHkKKysrIGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3Nl
dHVwLnB5CkBAIC0zMCw3ICszMCw3IEBAIGRlZiByZWFkbWUoKToKIAogc2V0dXAoCiAgICAgbmFt
ZT0nd2Via2l0Y29yZXB5JywKLSAgICB2ZXJzaW9uPScwLjguMCcsCisgICAgdmVyc2lvbj0nMC44
LjEnLAogICAgIGRlc2NyaXB0aW9uPSdMaWJyYXJ5IGNvbnRhaW5pbmcgdmFyaW91cyBQeXRob24g
c3VwcG9ydCBjbGFzc2VzIGFuZCBmdW5jdGlvbnMuJywKICAgICBsb25nX2Rlc2NyaXB0aW9uPXJl
YWRtZSgpLAogICAgIGNsYXNzaWZpZXJzPVsKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvbGli
cmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvX19pbml0X18ucHkgYi9Ub29scy9TY3Jp
cHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L19faW5pdF9fLnB5CmluZGV4
IDEyYmQ5NmNhOGZmNGE4YjE0NzdkZTljZjNjMzk5M2U0ZTAyNjc1ZDUuLmY2NWQxZDE0ZGI1MTE0
NGI1MzM4MGEzY2ZlYmQyMjMxMjI1MDcwMmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvbGli
cmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvX19pbml0X18ucHkKKysrIGIvVG9vbHMv
U2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9fX2luaXRfXy5weQpA
QCAtNDAsNyArNDAsNyBAQCBmcm9tIHdlYmtpdGNvcmVweS5jcmVkZW50aWFscyBpbXBvcnQgY3Jl
ZGVudGlhbHMKIGZyb20gd2Via2l0Y29yZXB5Lm1lYXN1cmVfdGltZSBpbXBvcnQgTWVhc3VyZVRp
bWUKIGZyb20gd2Via2l0Y29yZXB5Lm5lc3RlZF9mdXp6eV9kaWN0IGltcG9ydCBOZXN0ZWRGdXp6
eURpY3QKIAotdmVyc2lvbiA9IFZlcnNpb24oMCwgOCwgMCkKK3ZlcnNpb24gPSBWZXJzaW9uKDAs
IDgsIDEpCiAKIGZyb20gd2Via2l0Y29yZXB5LmF1dG9pbnN0YWxsIGltcG9ydCBQYWNrYWdlLCBB
dXRvSW5zdGFsbAogaWYgc3lzLnZlcnNpb25faW5mbyA+ICgzLCAwKToKZGlmZiAtLWdpdCBhL1Rv
b2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvY3JlZGVudGlh
bHMucHkgYi9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5
L2NyZWRlbnRpYWxzLnB5CmluZGV4IGVjYjM5ZGViZjY4Yzk1ZTczZTljOGY4YmVkMDViYTg3Zjky
M2U4ZWQuLjBiYWQ2N2YyOWU2OGQzNGQ0M2NiODVkYTVlYmQ2M2ZmODczYTQxOTQgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvY3Jl
ZGVudGlhbHMucHkKKysrIGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dl
YmtpdGNvcmVweS9jcmVkZW50aWFscy5weQpAQCAtMzgsNyArMzgsNyBAQCBkZWYgY3JlZGVudGlh
bHModXJsLCByZXF1aXJlZD1UcnVlLCBuYW1lPU5vbmUsIHByb21wdD1Ob25lLCBrZXlfbmFtZT0n
cGFzc3dvcmQnKQogICAgICAgICByZXR1cm4gX2NhY2hlLmdldChuYW1lKQogCiAgICAgdXNlcm5h
bWUgPSBvcy5lbnZpcm9uLmdldCgne31fVVNFUk5BTUUnLmZvcm1hdChuYW1lLnVwcGVyKCkpKQot
ICAgIGtleSA9IG9zLmVudmlyb24uZ2V0KCd7fV97fScuZm9ybWF0KG5hbWUudXBwZXIoKSwgbmFt
ZS51cHBlcigpKSkKKyAgICBrZXkgPSBvcy5lbnZpcm9uLmdldCgne31fe30nLmZvcm1hdChuYW1l
LnVwcGVyKCksIGtleV9uYW1lLnVwcGVyKCkpKQogCiAgICAgaWYgdXNlcm5hbWUgYW5kIGtleToK
ICAgICAgICAgX2NhY2hlW25hbWVdID0gKHVzZXJuYW1lLCBrZXkpCmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS9zZXR1cC5weSBiL1Rvb2xzL1NjcmlwdHMv
bGlicmFyaWVzL3dlYmtpdHNjbXB5L3NldHVwLnB5CmluZGV4IGNmNTI5ODYyNDc4MzdiMjQxZTZk
ODg1YTFmZDVjOTU3NjhmZGI2YzQuLjRjZWU1ZWNlNjhkNGU2ZGYxMTkwNjUyYjQ4ZGY1ZmQzZWVi
NzQxNWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3Nl
dHVwLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3NldHVwLnB5
CkBAIC0yOSw3ICsyOSw3IEBAIGRlZiByZWFkbWUoKToKIAogc2V0dXAoCiAgICAgbmFtZT0nd2Vi
a2l0c2NtcHknLAotICAgIHZlcnNpb249JzEuMC42JywKKyAgICB2ZXJzaW9uPScxLjEuMCcsCiAg
ICAgZGVzY3JpcHRpb249J0xpYnJhcnkgZGVzaWduZWQgdG8gaW50ZXJhY3Qgd2l0aCBnaXQgYW5k
IHN2biByZXBvc2l0b3JpZXMuJywKICAgICBsb25nX2Rlc2NyaXB0aW9uPXJlYWRtZSgpLAogICAg
IGNsYXNzaWZpZXJzPVsKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtp
dHNjbXB5L3dlYmtpdHNjbXB5L19faW5pdF9fLnB5IGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMv
d2Via2l0c2NtcHkvd2Via2l0c2NtcHkvX19pbml0X18ucHkKaW5kZXggNWZkNzYwM2YxNjBhODQz
Y2VjYzRiMTM2NGMwZWNlZGViOGEyYjMwNy4uMzAxNjA0ZGU4Njk5NDNlZDJkMDNiNWY5ZWEyYmUx
ZDgwMTZiOTFhZiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2Nt
cHkvd2Via2l0c2NtcHkvX19pbml0X18ucHkKKysrIGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMv
d2Via2l0c2NtcHkvd2Via2l0c2NtcHkvX19pbml0X18ucHkKQEAgLTQ2LDcgKzQ2LDcgQEAgZXhj
ZXB0IEltcG9ydEVycm9yOgogICAgICAgICAiUGxlYXNlIGluc3RhbGwgd2Via2l0Y29yZXB5IHdp
dGggYHBpcCBpbnN0YWxsIHdlYmtpdGNvcmVweSAtLWV4dHJhLWluZGV4LXVybCA8cGFja2FnZSBp
bmRleCBVUkw+YCIKICAgICApCiAKLXZlcnNpb24gPSBWZXJzaW9uKDEsIDAsIDYpCit2ZXJzaW9u
ID0gVmVyc2lvbigxLCAxLCAwKQogCiBBdXRvSW5zdGFsbC5yZWdpc3RlcihQYWNrYWdlKCdmYXN0
ZW5lcnMnLCBWZXJzaW9uKDAsIDE1LCAwKSkpCiBBdXRvSW5zdGFsbC5yZWdpc3RlcihQYWNrYWdl
KCdtb25vdG9uaWMnLCBWZXJzaW9uKDEsIDUpKSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
bGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L21vY2tzL2xvY2FsL2dpdC5weSBiL1Rv
b2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L21vY2tzL2xvY2Fs
L2dpdC5weQppbmRleCAwMzZhOTg1NDQyOGZhZWNmYTQ4MTk3ZGIzNzc5YTg0NWUyZmE0MzNiLi44
NThjNmI2ZDYwMzE0ODZmMmUyOGI2ZmMyNTJkZWI4ZjQ3ZWJiMjNjIDEwMDY0NAotLS0gYS9Ub29s
cy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9tb2Nrcy9sb2NhbC9n
aXQucHkKKysrIGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2Nt
cHkvbW9ja3MvbG9jYWwvZ2l0LnB5CkBAIC0zNSw2ICszNSwxNSBAQCBmcm9tIHdlYmtpdHNjbXB5
LnByb2dyYW0uY2Fub25pY2FsaXplLm1lc3NhZ2UgaW1wb3J0IG1haW4gYXMgbWVzc2FnZV9tYWlu
CiAKIAogY2xhc3MgR2l0KG1vY2tzLlN1YnByb2Nlc3MpOgorICAgICMgUGFyc2UgYSAuZ2l0L2Nv
bmZpZyB0aGF0IGxvb2tzIGxpa2UgdGhpcworICAgICMgW2NvcmVdCisgICAgIyAgICAgcmVwb3Np
dG9yeWZvcm1hdHZlcnNpb24gPSAwCisgICAgIyBbYnJhbmNoICJtYWluIl0KKyAgICAjICAgICBy
ZW1vdGUgPSBvcmlnaW4KKyAgICAjIAkgIG1lcmdlID0gcmVmcy9oZWFkcy9tYWluCisgICAgUkVf
U0lOR0xFX1RPUCA9IHJlLmNvbXBpbGUocideXFtccyooP1A8a2V5PlxTKylccypcXScpCisgICAg
UkVfTVVMVElfVE9QID0gcmUuY29tcGlsZShyJ15cW1xzKig/UDxrZXlhPlxTKykgIig/UDxrZXli
PlxTKykiXHMqXF0nKQorICAgIFJFX0VMRU1FTlQgPSByZS5jb21waWxlKHInXlxzKyg/UDxrZXk+
XFMrKVxzKj1ccyooP1A8dmFsdWU+XFMrKScpCiAKICAgICBkZWYgX19pbml0X18oCiAgICAgICAg
IHNlbGYsIHBhdGg9Jy8uaW52YWxpZC1naXQnLCBkYXRhZmlsZT1Ob25lLApAQCAtMTg4LDYgKzE5
NywxMiBAQCBub3RoaW5nIHRvIGNvbW1pdCwgd29ya2luZyB0cmVlIGNsZWFuCiAgICAgICAgICAg
ICAgICAgICAgIHJldHVybmNvZGU9MTI4LAogICAgICAgICAgICAgICAgICAgICBzdGRlcnI9ImZh
dGFsOiBObyBzdWNoIHJlbW90ZSAne30nXG4iLmZvcm1hdChhcmdzWzNdKSwKICAgICAgICAgICAg
ICAgICApLAorICAgICAgICAgICAgKSwgbW9ja3MuU3VicHJvY2Vzcy5Sb3V0ZSgKKyAgICAgICAg
ICAgICAgICBzZWxmLmV4ZWN1dGFibGUsICdyZW1vdGUnLCAnYWRkJywgcmUuY29tcGlsZShyJy4r
JyksCisgICAgICAgICAgICAgICAgY3dkPXNlbGYucGF0aCwKKyAgICAgICAgICAgICAgICBjb21w
bGV0aW9uPW1vY2tzLlByb2Nlc3NDb21wbGV0aW9uKAorICAgICAgICAgICAgICAgICAgICByZXR1
cm5jb2RlPTAsCisgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICksIG1vY2tzLlN1YnBy
b2Nlc3MuUm91dGUoCiAgICAgICAgICAgICAgICAgc2VsZi5leGVjdXRhYmxlLCAnYnJhbmNoJywg
Jy1hJywKICAgICAgICAgICAgICAgICBjd2Q9c2VsZi5wYXRoLApAQCAtMzU0LDYgKzM2OSwxNyBA
QCBub3RoaW5nIHRvIGNvbW1pdCwgd29ya2luZyB0cmVlIGNsZWFuCiAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm5jb2RlPTAsCiAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9J1xu
Jy5qb2luKFsne309e30nLmZvcm1hdChrZXksIHZhbHVlKSBmb3Iga2V5LCB2YWx1ZSBpbiBHaXQu
Y29uZmlnKCkuaXRlbXMoKV0pCiAgICAgICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAp
LCBtb2Nrcy5TdWJwcm9jZXNzLlJvdXRlKAorICAgICAgICAgICAgICAgIHNlbGYuZXhlY3V0YWJs
ZSwgJ2NvbmZpZycsIHJlLmNvbXBpbGUocicuKycpLCByZS5jb21waWxlKHInLisnKSwKKyAgICAg
ICAgICAgICAgICBjd2Q9c2VsZi5wYXRoLAorICAgICAgICAgICAgICAgIGdlbmVyYXRvcj1sYW1i
ZGEgKmFyZ3MsICoqa3dhcmdzOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmVkaXRfY29uZmln
KGFyZ3NbMl0sIGFyZ3NbM10pLAorICAgICAgICAgICAgKSwgbW9ja3MuU3VicHJvY2Vzcy5Sb3V0
ZSgKKyAgICAgICAgICAgICAgICBzZWxmLmV4ZWN1dGFibGUsICdmZXRjaCcsICdmb3JrJywKKyAg
ICAgICAgICAgICAgICBjd2Q9c2VsZi5wYXRoLAorICAgICAgICAgICAgICAgIGNvbXBsZXRpb249
bW9ja3MuUHJvY2Vzc0NvbXBsZXRpb24oCisgICAgICAgICAgICAgICAgICAgIHJldHVybmNvZGU9
MCwKKyAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgKSwgbW9ja3MuU3VicHJvY2Vzcy5S
b3V0ZSgKICAgICAgICAgICAgICAgICBzZWxmLmV4ZWN1dGFibGUsCiAgICAgICAgICAgICAgICAg
Y3dkPXNlbGYucGF0aCwKQEAgLTU5MCwzNCArNjE2LDUwIEBAIG5vdGhpbmcgdG8gY29tbWl0LCB3
b3JraW5nIHRyZWUgY2xlYW4KICAgICBkZWYgY29uZmlnKGNvbnRleHQpOgogICAgICAgICBpZiBp
c2luc3RhbmNlKGNvbnRleHQsIHR5cGUpOgogICAgICAgICAgICAgcmV0dXJuIHsKLSAgICAgICAg
ICAgICAgICAndXNlci5uYW1lJzogJ3RhcHBsZUB3ZWJraXQub3JnJywKKyAgICAgICAgICAgICAg
ICAndXNlci5uYW1lJzogJ1RpbSBBcHBsZScsCisgICAgICAgICAgICAgICAgJ3VzZXIuZW1haWwn
OiAndGFwcGxlQHdlYmtpdC5vcmcnLAogICAgICAgICAgICAgICAgICdzZW5kZW1haWwudHJhbnNm
ZXJlbmNvZGluZyc6ICdiYXNlNjQnLAogICAgICAgICAgICAgfQogCi0gICAgICAgICMgUGFyc2Ug
YSAuZ2l0L2NvbmZpZyB0aGF0IGxvb2tzIGxpa2UgdGhpcwotICAgICAgICAjIFtjb3JlXQotICAg
ICAgICAjICAgICByZXBvc2l0b3J5Zm9ybWF0dmVyc2lvbiA9IDAKLSAgICAgICAgIyBbYnJhbmNo
ICJtYWluIl0KLSAgICAgICAgIyAgICAgcmVtb3RlID0gb3JpZ2luCi0gICAgICAgICMgCSAgbWVy
Z2UgPSByZWZzL2hlYWRzL21haW4KLSAgICAgICAgUkVfU0lOR0xFX1RPUCA9IHJlLmNvbXBpbGUo
cideXFtccyooP1A8a2V5PlxTKylccypcXScpCi0gICAgICAgIFJFX01VTFRJX1RPUCA9IHJlLmNv
bXBpbGUocideXFtccyooP1A8a2V5YT5cUyspICIoP1A8a2V5Yj5cUyspIlxzKlxdJykKLSAgICAg
ICAgUkVfRUxFTUVOVCA9IHJlLmNvbXBpbGUocideXHMrKD9QPGtleT5cUyspXHMqPVxzKig/UDx2
YWx1ZT5cUyspJykKLQogICAgICAgICB0b3AgPSBOb25lCiAgICAgICAgIHJlc3VsdCA9IEdpdC5j
b25maWcoKQogICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKGNvbnRleHQucGF0aCwgJy5n
aXQnLCAnY29uZmlnJyksICdyJykgYXMgY29uZmlnZmlsZToKICAgICAgICAgICAgIGZvciBsaW5l
IGluIGNvbmZpZ2ZpbGUucmVhZGxpbmVzKCk6Ci0gICAgICAgICAgICAgICAgbWF0Y2ggPSBSRV9N
VUxUSV9UT1AubWF0Y2gobGluZSkKKyAgICAgICAgICAgICAgICBtYXRjaCA9IGNvbnRleHQuUkVf
TVVMVElfVE9QLm1hdGNoKGxpbmUpCiAgICAgICAgICAgICAgICAgaWYgbWF0Y2g6CiAgICAgICAg
ICAgICAgICAgICAgIHRvcCA9ICd7fS57fScuZm9ybWF0KG1hdGNoLmdyb3VwKCdrZXlhJyksIG1h
dGNoLmdyb3VwKCdrZXliJykpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAg
ICAgICAgICAgbWF0Y2ggPSBSRV9TSU5HTEVfVE9QLm1hdGNoKGxpbmUpCisgICAgICAgICAgICAg
ICAgbWF0Y2ggPSBjb250ZXh0LlJFX1NJTkdMRV9UT1AubWF0Y2gobGluZSkKICAgICAgICAgICAg
ICAgICBpZiBtYXRjaDoKICAgICAgICAgICAgICAgICAgICAgdG9wID0gbWF0Y2guZ3JvdXAoJ2tl
eScpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAKLSAgICAgICAgICAgICAgICBtYXRj
aCA9IFJFX0VMRU1FTlQubWF0Y2gobGluZSkKKyAgICAgICAgICAgICAgICBtYXRjaCA9IGNvbnRl
eHQuUkVfRUxFTUVOVC5tYXRjaChsaW5lKQogICAgICAgICAgICAgICAgIGlmIHRvcCBhbmQgbWF0
Y2g6CiAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFsne30ue30nLmZvcm1hdCh0b3AsIG1hdGNo
Lmdyb3VwKCdrZXknKSldID0gbWF0Y2guZ3JvdXAoJ3ZhbHVlJykKICAgICAgICAgcmV0dXJuIHJl
c3VsdAorCisgICAgZGVmIGVkaXRfY29uZmlnKHNlbGYsIGtleSwgdmFsdWUpOgorICAgICAgICB3
aXRoIG9wZW4ob3MucGF0aC5qb2luKHNlbGYucGF0aCwgJy5naXQnLCAnY29uZmlnJyksICdyJykg
YXMgY29uZmlnZmlsZToKKyAgICAgICAgICAgIGxpbmVzID0gW2xpbmUgZm9yIGxpbmUgaW4gY29u
ZmlnZmlsZS5yZWFkbGluZXMoKV0KKworICAgICAgICBrZXlfYSA9IGtleS5zcGxpdCgnLicpWzBd
CisgICAgICAgIGtleV9iID0gJy4nLmpvaW4oa2V5LnNwbGl0KCcuJylbMTpdKQorCisgICAgICAg
IGRpZF9wcmludCA9IEZhbHNlCisgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oc2VsZi5w
YXRoLCAnLmdpdCcsICdjb25maWcnKSwgJ3cnKSBhcyBjb25maWdmaWxlOgorICAgICAgICAgICAg
Zm9yIGxpbmUgaW4gbGluZXM6CisgICAgICAgICAgICAgICAgbWF0Y2ggPSBzZWxmLlJFX0VMRU1F
TlQubWF0Y2gobGluZSkKKyAgICAgICAgICAgICAgICBpZiBub3QgbWF0Y2ggb3IgbWF0Y2guZ3Jv
dXAoJ2tleScpICE9IGtleV9iOgorICAgICAgICAgICAgICAgICAgICBjb25maWdmaWxlLndyaXRl
KGxpbmUpCisgICAgICAgICAgICAgICAgbWF0Y2ggPSBzZWxmLlJFX01VTFRJX1RPUC5tYXRjaChs
aW5lKQorICAgICAgICAgICAgICAgIGlmIG5vdCBtYXRjaCBvciAne30ue30nLmZvcm1hdChtYXRj
aC5ncm91cCgna2V5YScpLCBtYXRjaC5ncm91cCgna2V5YicpKSAhPSBrZXlfYToKKyAgICAgICAg
ICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBjb25maWdmaWxlLndyaXRlKCdc
dHt9PXt9XG4nLmZvcm1hdChrZXlfYiwgdmFsdWUpKQorICAgICAgICAgICAgICAgIGRpZF9wcmlu
dCA9IFRydWUKKworICAgICAgICAgICAgaWYgbm90IGRpZF9wcmludDoKKyAgICAgICAgICAgICAg
ICBjb25maWdmaWxlLndyaXRlKCdbe31dXG4nLmZvcm1hdChrZXlfYSkpCisgICAgICAgICAgICAg
ICAgY29uZmlnZmlsZS53cml0ZSgnXHR7fT17fVxuJy5mb3JtYXQoa2V5X2IsIHZhbHVlKSkKKwor
ICAgICAgICByZXR1cm4gbW9ja3MuUHJvY2Vzc0NvbXBsZXRpb24ocmV0dXJuY29kZT0wKQpkaWZm
IC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkv
bW9ja3MvcmVtb3RlL2dpdF9odWIucHkgYi9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRz
Y21weS93ZWJraXRzY21weS9tb2Nrcy9yZW1vdGUvZ2l0X2h1Yi5weQppbmRleCBiN2E3MDFiZjhj
ZjU1NWUzMGE2MWRhNmFjMGFhNjQyN2U4OGY5M2I2Li42YzY4MDRkOTA0MDI0MWRhM2U2YTFkZWY4
Mzg5ZjZlZDdlMzJlNDI1IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJr
aXRzY21weS93ZWJraXRzY21weS9tb2Nrcy9yZW1vdGUvZ2l0X2h1Yi5weQorKysgYi9Ub29scy9T
Y3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9tb2Nrcy9yZW1vdGUvZ2l0
X2h1Yi5weQpAQCAtMzksNiArMzksNyBAQCBjbGFzcyBHaXRIdWIobW9ja3MuUmVxdWVzdHMpOgog
CiAgICAgICAgIHNlbGYuZGVmYXVsdF9icmFuY2ggPSBkZWZhdWx0X2JyYW5jaAogICAgICAgICBz
ZWxmLnJlbW90ZSA9IHJlbW90ZQorICAgICAgICBzZWxmLmZvcmtzID0gW10KICAgICAgICAgaG9z
dG5hbWUgPSBzZWxmLnJlbW90ZS5zcGxpdCgnLycpWzBdCiAgICAgICAgIHNlbGYuYXBpX3JlbW90
ZSA9ICdhcGkue2hvc3RuYW1lfS9yZXBvcy97cmVwb30nLmZvcm1hdCgKICAgICAgICAgICAgIGhv
c3RuYW1lPWhvc3RuYW1lLApAQCAtNjIsNyArNjMsNyBAQCBjbGFzcyBHaXRIdWIobW9ja3MuUmVx
dWVzdHMpOgogICAgIGRlZiBfX2VudGVyX18oc2VsZik6CiAgICAgICAgIHByZWZpeCA9IHNlbGYu
cmVtb3RlLnNwbGl0KCcvJylbMF0ucmVwbGFjZSgnLicsICdfJykudXBwZXIoKQogICAgICAgICB1
c2VybmFtZV9rZXkgPSAne31fVVNFUk5BTUUnLmZvcm1hdChwcmVmaXgpCi0gICAgICAgIHRva2Vu
X2tleSA9ICd7fV9BQ0NFU1NfVE9LRU4nLmZvcm1hdChwcmVmaXgpCisgICAgICAgIHRva2VuX2tl
eSA9ICd7fV9UT0tFTicuZm9ybWF0KHByZWZpeCkKICAgICAgICAgc2VsZi5fZW52aXJvbm1lbnQg
PSB7CiAgICAgICAgICAgICB1c2VybmFtZV9rZXk6IG9zLmVudmlyb24uZ2V0KHVzZXJuYW1lX2tl
eSksCiAgICAgICAgICAgICB0b2tlbl9rZXk6IG9zLmVudmlyb24uZ2V0KHRva2VuX2tleSksCkBA
IC0zMTUsNCArMzE2LDI0IEBAIGNsYXNzIEdpdEh1Yihtb2Nrcy5SZXF1ZXN0cyk6CiAgICAgICAg
IGlmIHN0cmlwcGVkX3VybC5zdGFydHN3aXRoKCd7fS90cmVlLycuZm9ybWF0KHNlbGYucmVtb3Rl
KSk6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5fcGFyZW50c19vZl9yZXF1ZXN0KHVybD11cmws
IHJlZj1zdHJpcHBlZF91cmwuc3BsaXQoJy8nKVstMV0pCiAKKyAgICAgICAgIyBDaGVjayBmb3Ig
ZXhpc3RhbmNlIG9mIGZvcmtlZCByZXBvCisgICAgICAgIGlmIHN0cmlwcGVkX3VybC5zdGFydHN3
aXRoKCd7fS9yZXBvcycuZm9ybWF0KHNlbGYuYXBpX3JlbW90ZS5zcGxpdCgnLycpWzBdKSkgYW5k
IHN0cmlwcGVkX3VybC5zcGxpdCgnLycpWy0xXSA9PSBzZWxmLnJlbW90ZS5zcGxpdCgnLycpWy0x
XToKKyAgICAgICAgICAgIHVzZXJuYW1lID0gc3RyaXBwZWRfdXJsLnNwbGl0KCcvJylbLTJdCisg
ICAgICAgICAgICBpZiB1c2VybmFtZSBpbiBzZWxmLmZvcmtzIG9yIHVzZXJuYW1lID09IHNlbGYu
cmVtb3RlLnNwbGl0KCcvJylbLTJdOgorICAgICAgICAgICAgICAgIHJldHVybiBtb2Nrcy5SZXNw
b25zZS5mcm9tSnNvbihkaWN0KAorICAgICAgICAgICAgICAgICAgICBvd21lcj1kaWN0KAorICAg
ICAgICAgICAgICAgICAgICAgICAgbG9naW49dXNlcm5hbWUsCisgICAgICAgICAgICAgICAgICAg
ICksIGZvcms9dXNlcm5hbWUgaW4gc2VsZi5mb3JrcywKKyAgICAgICAgICAgICAgICAgICAgbmFt
ZT1zdHJpcHBlZF91cmwuc3BsaXQoJy8nKVstMV0sCisgICAgICAgICAgICAgICAgICAgIGZ1bGxf
bmFtZT0nLycuam9pbihzdHJpcHBlZF91cmwuc3BsaXQoJy8nKVstMjpdKSwKKyAgICAgICAgICAg
ICAgICApLCB1cmw9dXJsKQorICAgICAgICAgICAgcmV0dXJuIG1vY2tzLlJlc3BvbnNlLmNyZWF0
ZTQwNCh1cmwpCisKKyAgICAgICAgIyBBZGQgZm9yaworICAgICAgICBpZiBzdHJpcHBlZF91cmwu
c3RhcnRzd2l0aCgne30vZm9ya3MnLmZvcm1hdChzZWxmLmFwaV9yZW1vdGUpKSBhbmQgbWV0aG9k
ID09ICdQT1NUJzoKKyAgICAgICAgICAgIHVzZXJuYW1lID0ga3dhcmdzLmdldCgnanNvbicsIHt9
KS5nZXQoJ293bmVyJywgTm9uZSkKKyAgICAgICAgICAgIGlmIHVzZXJuYW1lOgorICAgICAgICAg
ICAgICAgIHNlbGYuZm9ya3MuYXBwZW5kKHVzZXJuYW1lKQorICAgICAgICAgICAgcmV0dXJuIG1v
Y2tzLlJlc3BvbnNlLmZyb21Kc29uKHt9KSBpZiB1c2VybmFtZSBlbHNlIG1vY2tzLlJlc3BvbnNl
LmNyZWF0ZTQwNCh1cmwpCisKICAgICAgICAgcmV0dXJuIG1vY2tzLlJlc3BvbnNlLmNyZWF0ZTQw
NCh1cmwpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93
ZWJraXRzY21weS9wcm9ncmFtL19faW5pdF9fLnB5IGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMv
d2Via2l0c2NtcHkvd2Via2l0c2NtcHkvcHJvZ3JhbS9fX2luaXRfXy5weQppbmRleCAyZjllMDQ3
Nzk5NjRhMGIyMzMzODJkMGM2NjU1NzlmNTViMGNmYzk3Li4xNTc4ZGQ5NmU4MTViNjYzMzUxMmMy
YWI2MDlhNzM1YjRjYWY4ZTBlIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93
ZWJraXRzY21weS93ZWJraXRzY21weS9wcm9ncmFtL19faW5pdF9fLnB5CisrKyBiL1Rvb2xzL1Nj
cmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Byb2dyYW0vX19pbml0X18u
cHkKQEAgLTMzLDYgKzMzLDcgQEAgZnJvbSAuZmluZCBpbXBvcnQgRmluZCwgSW5mbwogZnJvbSAu
bG9nIGltcG9ydCBMb2cKIGZyb20gLnB1bGwgaW1wb3J0IFB1bGwKIGZyb20gLnNldHVwX2dpdF9z
dm4gaW1wb3J0IFNldHVwR2l0U3ZuCitmcm9tIC5zZXR1cCBpbXBvcnQgU2V0dXAKIAogZnJvbSB3
ZWJraXRjb3JlcHkgaW1wb3J0IGFyZ3VtZW50cywgbG9nIGFzIHdlYmtpdGNvcmVweV9sb2cKIGZy
b20gd2Via2l0c2NtcHkgaW1wb3J0IGxvY2FsLCBsb2csIHJlbW90ZQpAQCAtNjMsNyArNjQsNyBA
QCBkZWYgbWFpbihhcmdzPU5vbmUsIHBhdGg9Tm9uZSwgbG9nZ2Vycz1Ob25lLCBjb250cmlidXRv
cnM9Tm9uZSwgaWRlbnRpZmllcl90ZW1wbAogCiAgICAgc3VicGFyc2VycyA9IHBhcnNlci5hZGRf
c3VicGFyc2VycyhoZWxwPSdzdWItY29tbWFuZCBoZWxwJykKIAotICAgIHByb2dyYW1zID0gW0Zp
bmQsIEluZm8sIENoZWNrb3V0LCBDYW5vbmljYWxpemUsIFB1bGwsIENsZWFuLCBMb2csIEJsYW1l
XQorICAgIHByb2dyYW1zID0gW0ZpbmQsIEluZm8sIENoZWNrb3V0LCBDYW5vbmljYWxpemUsIFB1
bGwsIENsZWFuLCBMb2csIEJsYW1lLCBTZXR1cF0KICAgICBpZiBzdWJ2ZXJzaW9uOgogICAgICAg
ICBwcm9ncmFtcy5hcHBlbmQoU2V0dXBHaXRTdm4pCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Njcmlw
dHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Byb2dyYW0vc2V0dXAucHkgYi9U
b29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9wcm9ncmFtL3Nl
dHVwLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmIwYjQ5NWFlZTVmMTcwN2ZlYTcwY2JiYjRkMjczMmZhNjQwMGM1
NjUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21w
eS93ZWJraXRzY21weS9wcm9ncmFtL3NldHVwLnB5CkBAIC0wLDAgKzEsMjEyIEBACisjIENvcHly
aWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisj
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMg
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgcmVxdWVzdHMKK2ltcG9ydCBz
eXMKKworZnJvbSAuY29tbWFuZCBpbXBvcnQgQ29tbWFuZAorZnJvbSByZXF1ZXN0cy5hdXRoIGlt
cG9ydCBIVFRQQmFzaWNBdXRoCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgYXJndW1lbnRzLCBy
dW4sIFRlcm1pbmFsCitmcm9tIHdlYmtpdHNjbXB5IGltcG9ydCBsb2csIGxvY2FsLCByZW1vdGUK
KworCitjbGFzcyBTZXR1cChDb21tYW5kKToKKyAgICBuYW1lID0gJ3NldHVwJworICAgIGhlbHAg
PSAnQ29uZmlndXJlIGxvY2FsIHNldHRpbmdzIGZvciB0aGUgY3VycmVudCByZXBvc2l0b3J5Jwor
CisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGdpdGh1YihjbHMsIGFyZ3MsIHJlcG9zaXRvcnks
ICoqa3dhcmdzKToKKyAgICAgICAgbG9nLndhcm5pbmcoJ1NhdmluZyBHaXRIdWIgY3JlZGVudGlh
bHMgaW4gc3lzdGVtIGNyZWRlbnRpYWwgc3RvcmUuLi4nKQorICAgICAgICB1c2VybmFtZSwgYWNj
ZXNzX3Rva2VuID0gcmVwb3NpdG9yeS5jcmVkZW50aWFscyhyZXF1aXJlZD1UcnVlKQorICAgICAg
ICBsb2cud2FybmluZygnR2l0SHViIGNyZWRlbnRpYWxzIHNhdmVkIHZpYSBLZXlyaW5nIScpCisK
KyAgICAgICAgbG9nLndhcm5pbmcoJ1ZlcmlmeWluZyB1c2VyIG93bmVkIGZvcmsuLi4nKQorICAg
ICAgICBhdXRoID0gSFRUUEJhc2ljQXV0aCh1c2VybmFtZSwgYWNjZXNzX3Rva2VuKQorICAgICAg
ICByZXNwb25zZSA9IHJlcXVlc3RzLmdldCgne30vcmVwb3Mve30ve30nLmZvcm1hdCgKKyAgICAg
ICAgICAgIHJlcG9zaXRvcnkuYXBpX3VybCwKKyAgICAgICAgICAgIHVzZXJuYW1lLAorICAgICAg
ICAgICAgcmVwb3NpdG9yeS5uYW1lLAorICAgICAgICApLCBhdXRoPWF1dGgsIGhlYWRlcnM9ZGlj
dChBY2NlcHQ9J2FwcGxpY2F0aW9uL3ZuZC5naXRodWIudjMranNvbicpKQorICAgICAgICBpZiBy
ZXNwb25zZS5zdGF0dXNfY29kZSA9PSAyMDA6CisgICAgICAgICAgICBsb2cud2FybmluZygiVXNl
ciBhbHJlYWR5IG93bnMgYSBmb3JrIG9mICd7fSchIi5mb3JtYXQocmVwb3NpdG9yeS5uYW1lKSkK
KyAgICAgICAgICAgIHJldHVybiAwCisKKyAgICAgICAgaWYgcmVwb3NpdG9yeS5vd25lciA9PSB1
c2VybmFtZSBvciBhcmdzLmRlZmF1bHRzIG9yIFRlcm1pbmFsLmNob29zZSgKKyAgICAgICAgICAg
ICJDcmVhdGUgYSBwcml2YXRlIGZvcmsgb2YgJ3t9JyBiZWxvbmdpbmcgdG8gJ3t9JyIuZm9ybWF0
KHJlcG9zaXRvcnkubmFtZSwgdXNlcm5hbWUpLAorICAgICAgICAgICAgZGVmYXVsdD0nTm8nLAor
ICAgICAgICApID09ICdObyc6CisgICAgICAgICAgICBsb2cud2FybmluZygiQ29udGludWluZyB3
aXRob3V0IGZvcmtpbmcgJ3t9JyIuZm9ybWF0KHJlcG9zaXRvcnkubmFtZSkpCisgICAgICAgICAg
ICByZXR1cm4gMQorCisgICAgICAgIHJlc3BvbnNlID0gcmVxdWVzdHMucG9zdCgne30vcmVwb3Mv
e30ve30vZm9ya3MnLmZvcm1hdCgKKyAgICAgICAgICAgIHJlcG9zaXRvcnkuYXBpX3VybCwKKyAg
ICAgICAgICAgIHJlcG9zaXRvcnkub3duZXIsCisgICAgICAgICAgICByZXBvc2l0b3J5Lm5hbWUs
CisgICAgICAgICksIGpzb249ZGljdCgKKyAgICAgICAgICAgIG93bmVyPXVzZXJuYW1lLAorICAg
ICAgICAgICAgZGVzY3JpcHRpb249Int9J3MgZm9yayBvZiB7fSIuZm9ybWF0KHVzZXJuYW1lLCBy
ZXBvc2l0b3J5Lm5hbWUpLAorICAgICAgICAgICAgcHJpdmF0ZT1UcnVlLAorICAgICAgICApLCBh
dXRoPWF1dGgsIGhlYWRlcnM9ZGljdChBY2NlcHQ9J2FwcGxpY2F0aW9uL3ZuZC5naXRodWIudjMr
anNvbicpKQorICAgICAgICBpZiByZXNwb25zZS5zdGF0dXNfY29kZSBub3QgaW4gKDIwMCwgMjAy
KToKKyAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoIkZhaWxlZCB0byBjcmVhdGUgYSBmb3Jr
IG9mICd7fScgYmVsb25naW5nIHRvICd7fSdcbiIuZm9ybWF0KHJlcG9zaXRvcnkubmFtZSwgdXNl
cm5hbWUpKQorICAgICAgICAgICAgcmV0dXJuIDEKKyAgICAgICAgbG9nLndhcm5pbmcoIkNyZWF0
ZWQgYSBwcml2YXRlIGZvcmsgb2YgJ3t9JyBiZWxvbmdpbmcgdG8gJ3t9JyEiLmZvcm1hdChyZXBv
c2l0b3J5Lm5hbWUsIHVzZXJuYW1lKSkKKyAgICAgICAgcmV0dXJuIDAKKworICAgIEBjbGFzc21l
dGhvZAorICAgIGRlZiBnaXQoY2xzLCBhcmdzLCByZXBvc2l0b3J5LCAqKmt3YXJncyk6CisgICAg
ICAgIGdsb2JhbF9jb25maWcgPSBsb2NhbC5HaXQuY29uZmlnKCkKKyAgICAgICAgcmVzdWx0ID0g
MAorCisgICAgICAgIGVtYWlsID0gZ2xvYmFsX2NvbmZpZy5nZXQoJ3VzZXIuZW1haWwnKQorICAg
ICAgICBsb2cud2FybmluZygnU2V0dGluZyBnaXQgdXNlciBlbWFpbCBmb3Ige30uLi4nLmZvcm1h
dChyZXBvc2l0b3J5LnJvb3RfcGF0aCkpCisgICAgICAgIGlmIG5vdCBlbWFpbCBvciBhcmdzLmRl
ZmF1bHRzIGlzIEZhbHNlIG9yIChub3QgYXJncy5kZWZhdWx0cyBhbmQgVGVybWluYWwuY2hvb3Nl
KAorICAgICAgICAgICAgIlNldCAne30nIGFzIHRoZSBnaXQgdXNlciBlbWFpbCIuZm9ybWF0KGVt
YWlsKSwKKyAgICAgICAgICAgIGRlZmF1bHQ9J1llcycsCisgICAgICAgICkgPT0gJ05vJyk6Cisg
ICAgICAgICAgICBlbWFpbCA9IFRlcm1pbmFsLmlucHV0KCdHaXQgdXNlciBlbWFpbDogJykKKwor
ICAgICAgICBpZiBydW4oCisgICAgICAgICAgICBbbG9jYWwuR2l0LmV4ZWN1dGFibGUoKSwgJ2Nv
bmZpZycsICd1c2VyLmVtYWlsJywgZW1haWxdLCBjYXB0dXJlX291dHB1dD1UcnVlLCBjd2Q9cmVw
b3NpdG9yeS5yb290X3BhdGgsCisgICAgICAgICkucmV0dXJuY29kZToKKyAgICAgICAgICAgIHN5
cy5zdGRlcnIud3JpdGUoJ0ZhaWxlZCB0byBzZXQgdGhlIGdpdCB1c2VyIGVtYWlsIHRvIHt9XG4n
LmZvcm1hdChlbWFpbCkpCisgICAgICAgICAgICByZXN1bHQgKz0gMQorICAgICAgICBlbHNlOgor
ICAgICAgICAgICAgbG9nLndhcm5pbmcoIlNldCBnaXQgdXNlciBlbWFpbCB0byAne30nIi5mb3Jt
YXQoZW1haWwpKQorCisgICAgICAgIG5hbWUgPSByZXBvc2l0b3J5LmNvbnRyaWJ1dG9ycy5nZXQo
ZW1haWwpCisgICAgICAgIGlmIG5hbWU6CisgICAgICAgICAgICBuYW1lID0gbmFtZS5uYW1lCisg
ICAgICAgIGVsc2U6CisgICAgICAgICAgICBuYW1lID0gZ2xvYmFsX2NvbmZpZy5nZXQoJ3VzZXIu
bmFtZScpCisgICAgICAgIGxvZy53YXJuaW5nKCdTZXR0aW5nIGdpdCB1c2VyIG5hbWUgZm9yIHt9
Li4uJy5mb3JtYXQocmVwb3NpdG9yeS5yb290X3BhdGgpKQorICAgICAgICBpZiBub3QgbmFtZSBv
ciBhcmdzLmRlZmF1bHRzIGlzIEZhbHNlIG9yIChub3QgYXJncy5kZWZhdWx0cyBhbmQgVGVybWlu
YWwuY2hvb3NlKAorICAgICAgICAgICAgIlNldCAne30nIGFzIHRoZSBnaXQgdXNlciBuYW1lIi5m
b3JtYXQobmFtZSksCisgICAgICAgICAgICBkZWZhdWx0PSdZZXMnLAorICAgICAgICApID09ICdO
bycpOgorICAgICAgICAgICAgbmFtZSA9IFRlcm1pbmFsLmlucHV0KCdHaXQgdXNlciBuYW1lOiAn
KQorICAgICAgICBpZiBydW4oCisgICAgICAgICAgICBbbG9jYWwuR2l0LmV4ZWN1dGFibGUoKSwg
J2NvbmZpZycsICd1c2VyLm5hbWUnLCBuYW1lXSwgY2FwdHVyZV9vdXRwdXQ9VHJ1ZSwgY3dkPXJl
cG9zaXRvcnkucm9vdF9wYXRoLAorICAgICAgICApLnJldHVybmNvZGU6CisgICAgICAgICAgICBz
eXMuc3RkZXJyLndyaXRlKCdGYWlsZWQgdG8gc2V0IHRoZSBnaXQgdXNlciBuYW1lIHRvIHt9XG4n
LmZvcm1hdChuYW1lKSkKKyAgICAgICAgICAgIHJlc3VsdCArPSAxCisgICAgICAgIGVsc2U6Cisg
ICAgICAgICAgICBsb2cud2FybmluZygiU2V0IGdpdCB1c2VyIG5hbWUgdG8gJ3t9JyIuZm9ybWF0
KG5hbWUpKQorCisgICAgICAgIGxvZy53YXJuaW5nKCdTZXR0aW5nIGJldHRlciBPYmplY3RpdmUt
QyBkaWZmaW5nIGJlaGF2aW9yLi4uJykKKyAgICAgICAgcmVzdWx0ICs9IHJ1bigKKyAgICAgICAg
ICAgIFtsb2NhbC5HaXQuZXhlY3V0YWJsZSgpLCAnY29uZmlnJywgJ2RpZmYub2JqY3BwLnhmdW5j
bmFtZScsICdeWy0rQGEtekEtWl9dLiokJ10sCisgICAgICAgICAgICBjYXB0dXJlX291dHB1dD1U
cnVlLCBjd2Q9cmVwb3NpdG9yeS5yb290X3BhdGgsCisgICAgICAgICkucmV0dXJuY29kZQorICAg
ICAgICByZXN1bHQgKz0gcnVuKAorICAgICAgICAgICAgW2xvY2FsLkdpdC5leGVjdXRhYmxlKCks
ICdjb25maWcnLCAnZGlmZi5vYmpjcHBoZWFkZXIueGZ1bmNuYW1lJywgJ15bQGEtekEtWl9dLiok
J10sCisgICAgICAgICAgICBjYXB0dXJlX291dHB1dD1UcnVlLCBjd2Q9cmVwb3NpdG9yeS5yb290
X3BhdGgsCisgICAgICAgICkucmV0dXJuY29kZQorICAgICAgICBsb2cud2FybmluZygnU2V0IGJl
dHRlciBPYmplY3RpdmUtQyBkaWZmaW5nIGJlaGF2aW9yIScpCisKKyAgICAgICAgaWYgYXJncy5k
ZWZhdWx0cyBvciBUZXJtaW5hbC5jaG9vc2UoCisgICAgICAgICAgICAnQXV0by1jb2xvciBzdGF0
dXMsIGRpZmYsIGFuZCBicmFuY2g/Jy5mb3JtYXQoZW1haWwpLAorICAgICAgICAgICAgZGVmYXVs
dD0nWWVzJywKKyAgICAgICAgKSA9PSAnWWVzJzoKKyAgICAgICAgICAgIGZvciBjb21tYW5kIGlu
ICgnc3RhdHVzJywgJ2RpZmYnLCAnYnJhbmNoJyk6CisgICAgICAgICAgICAgICAgcmVzdWx0ICs9
IHJ1bigKKyAgICAgICAgICAgICAgICAgICAgW2xvY2FsLkdpdC5leGVjdXRhYmxlKCksICdjb25m
aWcnLCAnY29sb3Iue30nLmZvcm1hdChjb21tYW5kKSwgJ2F1dG8nXSwKKyAgICAgICAgICAgICAg
ICAgICAgY2FwdHVyZV9vdXRwdXQ9VHJ1ZSwgY3dkPXJlcG9zaXRvcnkucm9vdF9wYXRoLAorICAg
ICAgICAgICAgICAgICkucmV0dXJuY29kZQorCisgICAgICAgIGxvZy53YXJuaW5nKCdVc2luZyB7
fSBtZXJnZSBzdHJhdGVneScuZm9ybWF0KCdtZXJnZSBjb21taXRzIGFzIGEnIGlmIGFyZ3MubWVy
Z2UgZWxzZSAnYSByZWJhc2UnKSkKKyAgICAgICAgaWYgcnVuKAorICAgICAgICAgICAgW2xvY2Fs
LkdpdC5leGVjdXRhYmxlKCksICdjb25maWcnLCAncHVsbC5yZWJhc2UnLCAnZmFsc2UnIGlmIGFy
Z3MubWVyZ2UgZWxzZSAndHJ1ZSddLAorICAgICAgICAgICAgY2FwdHVyZV9vdXRwdXQ9VHJ1ZSwg
Y3dkPXJlcG9zaXRvcnkucm9vdF9wYXRoLAorICAgICAgICApLnJldHVybmNvZGU6CisgICAgICAg
ICAgICBzeXMuc3RkZXJyLndyaXRlKCdGYWlsZWQgdG8gdXNlIHt9IGFzIHRoZSBtZXJnZSBzdHJh
dGVneVxuJy5mb3JtYXQoJ21lcmdlIGNvbW1pdHMnIGlmIGFyZ3MubWVyZ2UgZWxzZSAncmViYXNl
JykpCisgICAgICAgICAgICByZXN1bHQgKz0gMQorCisgICAgICAgICMgT25seSBjb25maWd1cmUg
R2l0SHViIGlmIHRoZSBVUkwgaXMgYSBHaXRIdWIgVVJMCisgICAgICAgIHJtdCA9IHJlcG9zaXRv
cnkucmVtb3RlKCkKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uocm10LCByZW1vdGUuR2l0SHVi
KToKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQKKworICAgICAgICBjb2RlID0gY2xzLmdpdGh1
YihhcmdzLCBybXQsICoqa3dhcmdzKQorICAgICAgICByZXN1bHQgKz0gY29kZQorICAgICAgICBp
ZiBjb2RlOgorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAorCisgICAgICAgIHVzZXJuYW1lLCBf
ID0gcm10LmNyZWRlbnRpYWxzKHJlcXVpcmVkPVRydWUpCisgICAgICAgIGxvZy53YXJuaW5nKCJB
ZGRpbmcgZm9ya2VkIHJlbW90ZSBhcyAne30nIGFuZCAnZm9yaycuLi4iLmZvcm1hdCh1c2VybmFt
ZSkpCisgICAgICAgIHVybCA9IHJlcG9zaXRvcnkudXJsKCkKKyAgICAgICAgaWYgJzonIGluIHVy
bDoKKyAgICAgICAgICAgIGZvcmtfcmVtb3RlID0gJ3t9Ont9L3t9LmdpdCcuZm9ybWF0KHVybC5z
cGxpdCgnOicpWzBdLCB1c2VybmFtZSwgcm10Lm5hbWUpCisgICAgICAgIGVsaWYgJzovLycgaW4g
dXJsOgorICAgICAgICAgICAgZm9ya19yZW1vdGUgPSAne30ve30ve30uZ2l0Jy5mb3JtYXQoJy8n
LmpvaW4odXJsLnNwbGl0KCcvJylbOjNdKSwgdXNlcm5hbWUsIHJtdC5uYW1lKQorICAgICAgICBl
bHNlOgorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArIDEKKworICAgICAgICBhdmFpbGFibGVf
cmVtb3RlcyA9IFtdCisgICAgICAgIGZvciBuYW1lIGluIFt1c2VybmFtZSwgJ2ZvcmsnXToKKyAg
ICAgICAgICAgIHJldHVybmNvZGUgPSBydW4oCisgICAgICAgICAgICAgICAgW3JlcG9zaXRvcnku
ZXhlY3V0YWJsZSgpLCAncmVtb3RlJywgJ2FkZCcsIG5hbWUsIGZvcmtfcmVtb3RlXSwKKyAgICAg
ICAgICAgICAgICBjYXB0dXJlX291dHB1dD1UcnVlLCBjd2Q9cmVwb3NpdG9yeS5yb290X3BhdGgs
CisgICAgICAgICAgICApLnJldHVybmNvZGUKKyAgICAgICAgICAgIGlmIHJldHVybmNvZGUgPT0g
MzoKKyAgICAgICAgICAgICAgICByZXR1cm5jb2RlID0gcnVuKAorICAgICAgICAgICAgICAgICAg
ICBbcmVwb3NpdG9yeS5leGVjdXRhYmxlKCksICdyZW1vdGUnLCAnc2V0LXVybCcsIG5hbWUsIGZv
cmtfcmVtb3RlXSwKKyAgICAgICAgICAgICAgICAgICAgY2FwdHVyZV9vdXRwdXQ9VHJ1ZSwgY3dk
PXJlcG9zaXRvcnkucm9vdF9wYXRoLAorICAgICAgICAgICAgICAgICkucmV0dXJuY29kZQorICAg
ICAgICAgICAgaWYgcmV0dXJuY29kZToKKyAgICAgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRl
KCJGYWlsZWQgdG8gYWRkIHJlbW90ZSAne30nXG4iLmZvcm1hdChuYW1lKSkKKyAgICAgICAgICAg
ICAgICByZXN1bHQgKz0gMQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBhdmFp
bGFibGVfcmVtb3Rlcy5hcHBlbmQobmFtZSkKKyAgICAgICAgICAgICAgICBsb2cud2FybmluZygi
QWRkZWQgcmVtb3RlICd7fSciLmZvcm1hdChuYW1lKSkKKworICAgICAgICBpZiAnZm9yaycgbm90
IGluIGF2YWlsYWJsZV9yZW1vdGVzOgorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAorICAgICAg
ICBsb2cud2FybmluZygiRmV0Y2hpbmcgJ3t9JyIuZm9ybWF0KGZvcmtfcmVtb3RlKSkKKyAgICAg
ICAgcmV0dXJuIHJ1bigKKyAgICAgICAgICAgIFtyZXBvc2l0b3J5LmV4ZWN1dGFibGUoKSwgJ2Zl
dGNoJywgJ2ZvcmsnXSwKKyAgICAgICAgICAgIGNhcHR1cmVfb3V0cHV0PVRydWUsIGN3ZD1yZXBv
c2l0b3J5LnJvb3RfcGF0aCwKKyAgICAgICAgKS5yZXR1cm5jb2RlCisKKyAgICBAY2xhc3NtZXRo
b2QKKyAgICBkZWYgcGFyc2VyKGNscywgcGFyc2VyLCBsb2dnZXJzPU5vbmUpOgorICAgICAgICBw
YXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAgICAgJy0tZGVmYXVsdHMnLCAnLS1uby1kZWZh
dWx0cycsIGFjdGlvbj1hcmd1bWVudHMuTm9BY3Rpb24sIGRlZmF1bHQ9Tm9uZSwKKyAgICAgICAg
ICAgIGhlbHA9J0RvIG5vdCBwcm9tcHQgdGhlIHVzZXIgZm9yIGRlZmF1bHRzLCBhbHdheXMgdXNl
IChvciBkbyBub3QgdXNlKSB0aGVtJywKKyAgICAgICAgKQorICAgICAgICBwYXJzZXIuYWRkX2Fy
Z3VtZW50KAorICAgICAgICAgICAgJy0tbWVyZ2UnLCAnLS1uby1tZXJnZScsIGFjdGlvbj1hcmd1
bWVudHMuTm9BY3Rpb24sIGRlZmF1bHQ9RmFsc2UsCisgICAgICAgICAgICBoZWxwPSdVc2UgYSBt
ZXJnZS1jb21taXQgd29ya2Zsb3cgaW5zdGVhZCBvZiBhIHJlYmFzZSB3b3JrZmxvdycsCisgICAg
ICAgICkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBtYWluKGNscywgYXJncywgcmVwb3Np
dG9yeSwgKiprd2FyZ3MpOgorICAgICAgICBpZiBpc2luc3RhbmNlKHJlcG9zaXRvcnksIGxvY2Fs
LkdpdCk6CisgICAgICAgICAgICByZXR1cm4gY2xzLmdpdChhcmdzLCByZXBvc2l0b3J5LCAqKmt3
YXJncykKKworICAgICAgICBpZiBpc2luc3RhbmNlKHJlcG9zaXRvcnksIHJlbW90ZS5HaXRIdWIp
OgorICAgICAgICAgICAgcmV0dXJuIGNscy5naXRodWIoYXJncywgcmVwb3NpdG9yeSwgKiprd2Fy
Z3MpCisKKyAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgnTm8gc2V0dXAgcmVxdWlyZWQgZm9yIHt9
XG4nLmZvcm1hdCgKKyAgICAgICAgICAgIGdldGF0dHIocmVwb3NpdG9yeSwgJ3Jvb3RfcGF0aCcs
IGdldGF0dHIocmVwb3NpdG9yeSwgJ3VybCcsICc/JykpLAorICAgICAgICApKQorICAgICAgICBy
ZXR1cm4gMQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkv
d2Via2l0c2NtcHkvdGVzdC9naXRfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL2xpYnJhcmll
cy93ZWJraXRzY21weS93ZWJraXRzY21weS90ZXN0L2dpdF91bml0dGVzdC5weQppbmRleCA2YmUz
MjNhY2RiMWEzZDM2NDNlZWY2YjcyNTUzZTU0YmJhNzc3NTg4Li42MjE3N2I0MGNiOGRjNmRlOGQx
NWMyM2QyNzNjMDU3ZDliZmRkZDYyIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL2xpYnJhcmll
cy93ZWJraXRzY21weS93ZWJraXRzY21weS90ZXN0L2dpdF91bml0dGVzdC5weQorKysgYi9Ub29s
cy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS90ZXN0L2dpdF91bml0
dGVzdC5weQpAQCAtNDExLDcgKzQxMSw3IEBAIENvbW1pdERhdGU6IFNhdCBPY3QgMDMgMDI6MDY6
NDAgMjAyMCArMDAwMAogICAgICAgICB3aXRoIG1vY2tzLmxvY2FsLkdpdChzZWxmLnBhdGgsIGdp
dF9zdm49VHJ1ZSkgYXMgbToKICAgICAgICAgICAgIHJlcG8gPSBsb2NhbC5HaXQoc2VsZi5wYXRo
KQogCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcG8uY29uZmlnKClbJ3VzZXIubmFt
ZSddLCAndGFwcGxlQHdlYmtpdC5vcmcnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChy
ZXBvLmNvbmZpZygpWyd1c2VyLm5hbWUnXSwgJ1RpbSBBcHBsZScpCiAgICAgICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHJlcG8uY29uZmlnKClbJ2NvcmUuZmlsZW1vZGUnXSwgJ3RydWUnKQogICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXBvLmNvbmZpZygpWydyZW1vdGUub3JpZ2luLnVy
bCddLCAnZ2l0QGV4YW1wbGUub3JnOi9tb2NrL3JlcG9zaXRvcnknKQogICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChyZXBvLmNvbmZpZygpWydzdm4tcmVtb3RlLnN2bi51cmwnXSwgJ2h0dHBz
Oi8vc3ZuLmV4YW1wbGUub3JnL3JlcG9zaXRvcnkvd2Via2l0JykKQEAgLTQxOSw3ICs0MTksNyBA
QCBDb21taXREYXRlOiBTYXQgT2N0IDAzIDAyOjA2OjQwIDIwMjAgKzAwMDAKIAogICAgIGRlZiB0
ZXN0X2dsb2JhbF9jb25maWcoc2VsZik6CiAgICAgICAgIHdpdGggbW9ja3MubG9jYWwuR2l0KHNl
bGYucGF0aCwgZ2l0X3N2bj1UcnVlKSwgT3V0cHV0Q2FwdHVyZSgpOgotICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChsb2NhbC5HaXQuY29uZmlnKClbJ3VzZXIubmFtZSddLCAndGFwcGxlQHdl
YmtpdC5vcmcnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2NhbC5HaXQuY29uZmln
KClbJ3VzZXIubmFtZSddLCAnVGltIEFwcGxlJykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwobG9jYWwuR2l0LmNvbmZpZygpWydzZW5kZW1haWwudHJhbnNmZXJlbmNvZGluZyddLCAnYmFz
ZTY0JykKIAogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21w
eS93ZWJraXRzY21weS90ZXN0L3NldHVwX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy9saWJy
YXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvdGVzdC9zZXR1cF91bml0dGVzdC5weQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5hMjE0NDFiNWFkMjY5MTllZjhlMGJiZDJlYTFlMzAyMWJiNzM3YmVlCi0tLSAvZGV2
L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2Nt
cHkvdGVzdC9zZXR1cF91bml0dGVzdC5weQpAQCAtMCwwICsxLDEzNyBAQAorIyBDb3B5cmlnaHQg
KEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMg
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IG9zCisKK2Zyb20gd2Via2l0Y29yZXB5
IGltcG9ydCBPdXRwdXRDYXB0dXJlLCB0ZXN0aW5nCitmcm9tIHdlYmtpdGNvcmVweS5tb2NrcyBp
bXBvcnQgVGltZSBhcyBNb2NrVGltZSwgVGVybWluYWwgYXMgTW9ja1Rlcm1pbmFsCitmcm9tIHdl
YmtpdHNjbXB5IGltcG9ydCBwcm9ncmFtLCBtb2NrcworCisKK2NsYXNzIFRlc3RTZXR1cCh0ZXN0
aW5nLlBhdGhUZXN0Q2FzZSk6CisgICAgYmFzZXBhdGggPSAnbW9jay9yZXBvc2l0b3J5JworCisg
ICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzdXBlcihUZXN0U2V0dXAsIHNlbGYpLnNldFVw
KCkKKyAgICAgICAgb3MubWtkaXIob3MucGF0aC5qb2luKHNlbGYucGF0aCwgJy5naXQnKSkKKyAg
ICAgICAgb3MubWtkaXIob3MucGF0aC5qb2luKHNlbGYucGF0aCwgJy5zdm4nKSkKKworICAgIGRl
ZiB0ZXN0X3N2bihzZWxmKToKKyAgICAgICAgd2l0aCBPdXRwdXRDYXB0dXJlKCkgYXMgY2FwdHVy
ZWQsIG1vY2tzLmxvY2FsLkdpdCgpLCBtb2Nrcy5sb2NhbC5Tdm4oc2VsZi5wYXRoKToKKyAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgcHJvZ3JhbS5tYWluKAorICAgICAgICAgICAgICAg
IGFyZ3M9KCdzZXR1cCcsKSwKKyAgICAgICAgICAgICAgICBwYXRoPXNlbGYucGF0aCwKKyAgICAg
ICAgICAgICkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FwdHVyZWQuc3RkZXJyLmdldHZh
bHVlKCksICdObyBzZXR1cCByZXF1aXJlZCBmb3Ige31cbicuZm9ybWF0KHNlbGYucGF0aCkpCisK
KyAgICBkZWYgdGVzdF9naXRodWIoc2VsZik6CisgICAgICAgIHdpdGggT3V0cHV0Q2FwdHVyZSgp
IGFzIGNhcHR1cmVkLCBNb2NrVGVybWluYWwuaW5wdXQoJ3knKSwgbW9ja3MucmVtb3RlLkdpdEh1
YigpIGFzIHJlbW90ZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcHJvZ3JhbS5t
YWluKAorICAgICAgICAgICAgICAgIGFyZ3M9KCctQycsICdodHRwczovL3t9Jy5mb3JtYXQocmVt
b3RlLnJlbW90ZSksICdzZXR1cCcpLAorICAgICAgICAgICAgICAgIHBhdGg9c2VsZi5wYXRoLAor
ICAgICAgICAgICAgKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhcHR1cmVkLnN0ZG91
dC5nZXR2YWx1ZSgpLCAiQ3JlYXRlIGEgcHJpdmF0ZSBmb3JrIG9mICdXZWJLaXQnIGJlbG9uZ2lu
ZyB0byAndXNlcm5hbWUnIChZZXMvTm8pOiBcbiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
Y2FwdHVyZWQuc3RkZXJyLmdldHZhbHVlKCksICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KAorICAgICAgICAgICAgY2FwdHVyZWQucm9vdC5sb2cuZ2V0dmFsdWUoKSwKKyAgICAgICAgICAg
ICcnJ1NhdmluZyBHaXRIdWIgY3JlZGVudGlhbHMgaW4gc3lzdGVtIGNyZWRlbnRpYWwgc3RvcmUu
Li4KK0dpdEh1YiBjcmVkZW50aWFscyBzYXZlZCB2aWEgS2V5cmluZyEKK1ZlcmlmeWluZyB1c2Vy
IG93bmVkIGZvcmsuLi4KK0NyZWF0ZWQgYSBwcml2YXRlIGZvcmsgb2YgJ1dlYktpdCcgYmVsb25n
aW5nIHRvICd1c2VybmFtZSchCisnJycsCisgICAgICAgICkKKworICAgIGRlZiB0ZXN0X2dpdChz
ZWxmKToKKyAgICAgICAgd2l0aCBPdXRwdXRDYXB0dXJlKCkgYXMgY2FwdHVyZWQsIG1vY2tzLmxv
Y2FsLkdpdChzZWxmLnBhdGgpIGFzIHJlcG8sIG1vY2tzLmxvY2FsLlN2bigpOgorICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBwcm9ncmFtLm1haW4oCisgICAgICAgICAgICAgICAgYXJn
cz0oJ3NldHVwJywgJy0tZGVmYXVsdHMnKSwKKyAgICAgICAgICAgICAgICBwYXRoPXNlbGYucGF0
aCwKKyAgICAgICAgICAgICkpCisKKyAgICAgICAgICAgIGNvbmZpZyA9IHJlcG8uY29uZmlnKCkK
KyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ15bLStAYS16QS1aX10uKiQnLCBjb25maWcu
Z2V0KCdkaWZmLm9iamNwcC54ZnVuY25hbWUnLCAnJykpCisgICAgICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKCdeW0BhLXpBLVpfXS4qJCcsIGNvbmZpZy5nZXQoJ2RpZmYub2JqY3BwaGVhZGVyLnhm
dW5jbmFtZScsICcnKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2F1dG8nLCBjb25m
aWcuZ2V0KCdjb2xvci5zdGF0dXMnLCAnJykpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KCdhdXRvJywgY29uZmlnLmdldCgnY29sb3IuZGlmZicsICcnKSkKKyAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoJ2F1dG8nLCBjb25maWcuZ2V0KCdjb2xvci5icmFuY2gnLCAnJykpCisgICAg
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCd0cnVlJywgY29uZmlnLmdldCgncHVsbC5yZWJhc2Un
LCAnJykpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjYXB0dXJlZC5zdGRvdXQuZ2V0dmFs
dWUoKSwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FwdHVyZWQuc3RkZXJyLmdldHZh
bHVlKCksICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgY2FwdHVy
ZWQucm9vdC5sb2cuZ2V0dmFsdWUoKSwKKyAgICAgICAgICAgICcnJ1NldHRpbmcgZ2l0IHVzZXIg
ZW1haWwgZm9yIHtyZXBvc2l0b3J5fS4uLgorU2V0IGdpdCB1c2VyIGVtYWlsIHRvICd0YXBwbGVA
d2Via2l0Lm9yZycKK1NldHRpbmcgZ2l0IHVzZXIgbmFtZSBmb3Ige3JlcG9zaXRvcnl9Li4uCitT
ZXQgZ2l0IHVzZXIgbmFtZSB0byAnVGltIEFwcGxlJworU2V0dGluZyBiZXR0ZXIgT2JqZWN0aXZl
LUMgZGlmZmluZyBiZWhhdmlvci4uLgorU2V0IGJldHRlciBPYmplY3RpdmUtQyBkaWZmaW5nIGJl
aGF2aW9yIQorVXNpbmcgYSByZWJhc2UgbWVyZ2Ugc3RyYXRlZ3kKKycnJy5mb3JtYXQocmVwb3Np
dG9yeT1zZWxmLnBhdGgpLAorICAgICAgICApCisKKyAgICBkZWYgdGVzdF9naXRodWJfY2hlY2tv
dXQoc2VsZik6CisgICAgICAgIHdpdGggT3V0cHV0Q2FwdHVyZSgpIGFzIGNhcHR1cmVkLCBtb2Nr
cy5yZW1vdGUuR2l0SHViKCkgYXMgcmVtb3RlLCBcCisgICAgICAgICAgICBNb2NrVGVybWluYWwu
aW5wdXQoJ24nLCAnY29tbWl0dGVyQHdlYmtpdC5vcmcnLCAnbicsICdDb21taXR0ZXInLCAnbics
ICd5JyksIFwKKyAgICAgICAgICAgIG1vY2tzLmxvY2FsLkdpdChzZWxmLnBhdGgsIHJlbW90ZT0n
aHR0cHM6Ly97fScuZm9ybWF0KHJlbW90ZS5yZW1vdGUpKSBhcyByZXBvOgorCisgICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKDAsIHByb2dyYW0ubWFpbigKKyAgICAgICAgICAgICAgICBhcmdz
PSgnc2V0dXAnLCksCisgICAgICAgICAgICAgICAgcGF0aD1zZWxmLnBhdGgsCisgICAgICAgICAg
ICApKQorCisgICAgICAgICAgICBjb25maWcgPSByZXBvLmNvbmZpZygpCisgICAgICAgICAgICBz
ZWxmLmFzc2VydE5vdEluKCdjb2xvci5zdGF0dXMnLCBjb25maWcpCisgICAgICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKCdDb21taXR0ZXInLCBjb25maWcuZ2V0KCd1c2VyLm5hbWUnLCAnJykpCisg
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdjb21taXR0ZXJAd2Via2l0Lm9yZycsIGNvbmZp
Zy5nZXQoJ3VzZXIuZW1haWwnLCAnJykpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAg
ICAgICAgICAgIGNhcHR1cmVkLnN0ZG91dC5nZXR2YWx1ZSgpLAorICAgICAgICAgICAgJycnU2V0
ICd0YXBwbGVAd2Via2l0Lm9yZycgYXMgdGhlIGdpdCB1c2VyIGVtYWlsIChZZXMvTm8pOiAKK0dp
dCB1c2VyIGVtYWlsOiAKK1NldCAnVGltIEFwcGxlJyBhcyB0aGUgZ2l0IHVzZXIgbmFtZSAoWWVz
L05vKTogCitHaXQgdXNlciBuYW1lOiAKK0F1dG8tY29sb3Igc3RhdHVzLCBkaWZmLCBhbmQgYnJh
bmNoPyAoWWVzL05vKTogCitDcmVhdGUgYSBwcml2YXRlIGZvcmsgb2YgJ1dlYktpdCcgYmVsb25n
aW5nIHRvICd1c2VybmFtZScgKFllcy9Obyk6IAorJycnKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGNhcHR1cmVkLnN0ZGVyci5nZXR2YWx1ZSgpLCAnJykKKyAgICAgICAgc2VsZi5tYXhEaWZm
ID0gTm9uZQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgY2FwdHVyZWQu
cm9vdC5sb2cuZ2V0dmFsdWUoKSwKKyAgICAgICAgICAgICcnJ1NldHRpbmcgZ2l0IHVzZXIgZW1h
aWwgZm9yIHtyZXBvc2l0b3J5fS4uLgorU2V0IGdpdCB1c2VyIGVtYWlsIHRvICdjb21taXR0ZXJA
d2Via2l0Lm9yZycKK1NldHRpbmcgZ2l0IHVzZXIgbmFtZSBmb3Ige3JlcG9zaXRvcnl9Li4uCitT
ZXQgZ2l0IHVzZXIgbmFtZSB0byAnQ29tbWl0dGVyJworU2V0dGluZyBiZXR0ZXIgT2JqZWN0aXZl
LUMgZGlmZmluZyBiZWhhdmlvci4uLgorU2V0IGJldHRlciBPYmplY3RpdmUtQyBkaWZmaW5nIGJl
aGF2aW9yIQorVXNpbmcgYSByZWJhc2UgbWVyZ2Ugc3RyYXRlZ3kKK1NhdmluZyBHaXRIdWIgY3Jl
ZGVudGlhbHMgaW4gc3lzdGVtIGNyZWRlbnRpYWwgc3RvcmUuLi4KK0dpdEh1YiBjcmVkZW50aWFs
cyBzYXZlZCB2aWEgS2V5cmluZyEKK1ZlcmlmeWluZyB1c2VyIG93bmVkIGZvcmsuLi4KK0NyZWF0
ZWQgYSBwcml2YXRlIGZvcmsgb2YgJ1dlYktpdCcgYmVsb25naW5nIHRvICd1c2VybmFtZSchCitB
ZGRpbmcgZm9ya2VkIHJlbW90ZSBhcyAndXNlcm5hbWUnIGFuZCAnZm9yaycuLi4KK0FkZGVkIHJl
bW90ZSAndXNlcm5hbWUnCitBZGRlZCByZW1vdGUgJ2ZvcmsnCitGZXRjaGluZyAnaHR0cHM6dXNl
cm5hbWUvV2ViS2l0LmdpdCcKKycnJy5mb3JtYXQocmVwb3NpdG9yeT1zZWxmLnBhdGgpLAorICAg
ICAgICApCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435024</attachid>
            <date>2021-08-05 14:12:38 -0700</date>
            <delta_ts>2021-08-05 16:04:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225985-20210805141237.patch</filename>
            <type>text/plain</type>
            <size>33276</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNzAzCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYjEzYmI1NWEwZjRjMTQyZWQ4NmQxODNmZDViNjI5ODc1
ZTVkZDc5My4uYWRmMGU5OTI4NDBiZGZjNGI2YmRmMDNhYmFlNDFiNWFjYjI4NDkxYiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0
IEBACisyMDIxLTA4LTA1ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbZ2l0LXdlYmtpdF0gQWRkIHNldHVwIGZ1bmN0aW9uCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU5ODUKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzc4MjI2NzI5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3NldHVwLnB5OiBCdW1w
IHZlcnNpb24uCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtp
dGNvcmVweS9fX2luaXRfXy5weTogRGl0dG8uCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMv
d2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9jcmVkZW50aWFscy5weToKKyAgICAgICAgKGNyZWRl
bnRpYWxzKTogS2V5IHNob3VsZCBiZSBwdWxsZWQgZnJvbSBlbnZpcm9ubWVudCB2YXJpYWJsZSB3
aXRoIGtleV9uYW1lIGluIGl0LgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNj
bXB5L3NldHVwLnB5OiBCdW1wIHZlcnNpb24uCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMv
d2Via2l0c2NtcHkvd2Via2l0c2NtcHkvX19pbml0X18ucHk6IERpdHRvLgorICAgICAgICAqIFNj
cmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L21vY2tzL2xvY2FsL2dpdC5w
eToKKyAgICAgICAgKEdpdCk6IE1vdmUgY29uZmlnIHJlZ2V4ZXMuCisgICAgICAgIChHaXQuX19p
bml0X18pOiBBZGQgYGdpdCByZW1vdGUgYWRkYCwgYGdpdCBjb25maWdgIGFuZCBgZ2l0IGZldGNo
IGZvcmtgLgorICAgICAgICAoR2l0LmNvbmZpZyk6IEFkZCB1c2VyLmVtYWlsIHRvIGRlZmF1bHQg
Y29uZmlndXJhdGlvbi4KKyAgICAgICAgKEdpdC5lZGl0X2NvbmZpZyk6IE1vZGlmeSBjb25maWd1
cmF0aW9uIGZpbGUuCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Vi
a2l0c2NtcHkvbW9ja3MvcmVtb3RlL2dpdF9odWIucHk6CisgICAgICAgIChHaXRIdWIpOiBBZGQg
bGlzdCBvZiBmb3Jrcy4KKyAgICAgICAgKEdpdEh1Yi5fX2VudGVyX18pOiBDb3JyZWN0bHkgbW9j
ayB0b2tlbi4KKyAgICAgICAgKEdpdEh1Yi5yZXF1ZXN0KTogQWRkIGZvcmsgY2hlY2sgYW5kIGZv
cmsgYWRkaXRpb24uCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Vi
a2l0c2NtcHkvcHJvZ3JhbS9fX2luaXRfXy5weToKKyAgICAgICAgKG1haW4pOiBBZGQgc2V0dXAg
ZnVuY3Rpb24uCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0
c2NtcHkvcHJvZ3JhbS9zZXR1cC5weTogQWRkZWQuCisgICAgICAgIChTZXR1cC5naXRodWIpOiBF
bnN1cmUgdGhhdCBHaXRIdWIgY3JlZGVudGlhbHMgYXJlIGluIHRoZSBrZXljaGFpbi4KKyAgICAg
ICAgKFNldHVwLmdpdCk6IFNldCB0aGUgdXNlciBmb3IgdGhlIHJlcG9zaXRvcnksIGFsb25nIHdp
dGggbWVyZ2Ugc3RyYXRlZ3kuCisgICAgICAgIChTZXR1cC5wYXJzZXIpOgorICAgICAgICAoU2V0
dXAubWFpbik6CisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0
c2NtcHkvdGVzdC9naXRfdW5pdHRlc3QucHk6CisgICAgICAgICh0ZXN0X2NvbmZpZyk6IENoYW5n
ZSB1c2VyIG5hbWUuCisgICAgICAgICh0ZXN0X2dsb2JhbF9jb25maWcpOiBEaXR0by4KKyAgICAg
ICAgKiBTY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS90ZXN0L3NldHVw
X3VuaXR0ZXN0LnB5OiBBZGRlZC4KKyAgICAgICAgKFRlc3RTZXR1cCk6CisgICAgICAgIChUZXN0
U2V0dXAuc2V0VXApOgorICAgICAgICAoVGVzdFNldHVwLnRlc3Rfc3ZuKToKKyAgICAgICAgKFRl
c3RTZXR1cC50ZXN0X2dpdGh1Yik6CisgICAgICAgIChUZXN0U2V0dXAudGVzdF9naXQpOgorICAg
ICAgICAoVGVzdFNldHVwLnRlc3RfZ2l0aHViX2NoZWNrb3V0KToKKwogMjAyMS0wOC0wNSAgWmFu
IERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAgcnVuLWpzYy1zdHJl
c3MtdGVzdHM6IGRldGVjdCB0aGUgcmlzY3Y2NCBhcmNoaXRlY3R1cmUKZGlmZiAtLWdpdCBhL1Rv
b2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS9zZXR1cC5weSBiL1Rvb2xzL1Njcmlw
dHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS9zZXR1cC5weQppbmRleCAxZTg2ZWYxMzIyY2I4OWQ0
ZGNkZjRlZTU5M2E2MzUzZmNlNWM4ZDFlLi45ZTU4ZmRhMjdlNDE5YzcwNWVkZTQ4ZGVhYjAyZmE2
Njc5YTQxNWYwIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3Jl
cHkvc2V0dXAucHkKKysrIGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3Nl
dHVwLnB5CkBAIC0zMCw3ICszMCw3IEBAIGRlZiByZWFkbWUoKToKIAogc2V0dXAoCiAgICAgbmFt
ZT0nd2Via2l0Y29yZXB5JywKLSAgICB2ZXJzaW9uPScwLjguMCcsCisgICAgdmVyc2lvbj0nMC44
LjEnLAogICAgIGRlc2NyaXB0aW9uPSdMaWJyYXJ5IGNvbnRhaW5pbmcgdmFyaW91cyBQeXRob24g
c3VwcG9ydCBjbGFzc2VzIGFuZCBmdW5jdGlvbnMuJywKICAgICBsb25nX2Rlc2NyaXB0aW9uPXJl
YWRtZSgpLAogICAgIGNsYXNzaWZpZXJzPVsKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvbGli
cmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvX19pbml0X18ucHkgYi9Ub29scy9TY3Jp
cHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L19faW5pdF9fLnB5CmluZGV4
IDEyYmQ5NmNhOGZmNGE4YjE0NzdkZTljZjNjMzk5M2U0ZTAyNjc1ZDUuLmY2NWQxZDE0ZGI1MTE0
NGI1MzM4MGEzY2ZlYmQyMjMxMjI1MDcwMmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvbGli
cmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvX19pbml0X18ucHkKKysrIGIvVG9vbHMv
U2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9fX2luaXRfXy5weQpA
QCAtNDAsNyArNDAsNyBAQCBmcm9tIHdlYmtpdGNvcmVweS5jcmVkZW50aWFscyBpbXBvcnQgY3Jl
ZGVudGlhbHMKIGZyb20gd2Via2l0Y29yZXB5Lm1lYXN1cmVfdGltZSBpbXBvcnQgTWVhc3VyZVRp
bWUKIGZyb20gd2Via2l0Y29yZXB5Lm5lc3RlZF9mdXp6eV9kaWN0IGltcG9ydCBOZXN0ZWRGdXp6
eURpY3QKIAotdmVyc2lvbiA9IFZlcnNpb24oMCwgOCwgMCkKK3ZlcnNpb24gPSBWZXJzaW9uKDAs
IDgsIDEpCiAKIGZyb20gd2Via2l0Y29yZXB5LmF1dG9pbnN0YWxsIGltcG9ydCBQYWNrYWdlLCBB
dXRvSW5zdGFsbAogaWYgc3lzLnZlcnNpb25faW5mbyA+ICgzLCAwKToKZGlmZiAtLWdpdCBhL1Rv
b2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvY3JlZGVudGlh
bHMucHkgYi9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5
L2NyZWRlbnRpYWxzLnB5CmluZGV4IGVjYjM5ZGViZjY4Yzk1ZTczZTljOGY4YmVkMDViYTg3Zjky
M2U4ZWQuLjBiYWQ2N2YyOWU2OGQzNGQ0M2NiODVkYTVlYmQ2M2ZmODczYTQxOTQgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvY3Jl
ZGVudGlhbHMucHkKKysrIGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dl
YmtpdGNvcmVweS9jcmVkZW50aWFscy5weQpAQCAtMzgsNyArMzgsNyBAQCBkZWYgY3JlZGVudGlh
bHModXJsLCByZXF1aXJlZD1UcnVlLCBuYW1lPU5vbmUsIHByb21wdD1Ob25lLCBrZXlfbmFtZT0n
cGFzc3dvcmQnKQogICAgICAgICByZXR1cm4gX2NhY2hlLmdldChuYW1lKQogCiAgICAgdXNlcm5h
bWUgPSBvcy5lbnZpcm9uLmdldCgne31fVVNFUk5BTUUnLmZvcm1hdChuYW1lLnVwcGVyKCkpKQot
ICAgIGtleSA9IG9zLmVudmlyb24uZ2V0KCd7fV97fScuZm9ybWF0KG5hbWUudXBwZXIoKSwgbmFt
ZS51cHBlcigpKSkKKyAgICBrZXkgPSBvcy5lbnZpcm9uLmdldCgne31fe30nLmZvcm1hdChuYW1l
LnVwcGVyKCksIGtleV9uYW1lLnVwcGVyKCkpKQogCiAgICAgaWYgdXNlcm5hbWUgYW5kIGtleToK
ICAgICAgICAgX2NhY2hlW25hbWVdID0gKHVzZXJuYW1lLCBrZXkpCmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS9zZXR1cC5weSBiL1Rvb2xzL1NjcmlwdHMv
bGlicmFyaWVzL3dlYmtpdHNjbXB5L3NldHVwLnB5CmluZGV4IGNmNTI5ODYyNDc4MzdiMjQxZTZk
ODg1YTFmZDVjOTU3NjhmZGI2YzQuLjRjZWU1ZWNlNjhkNGU2ZGYxMTkwNjUyYjQ4ZGY1ZmQzZWVi
NzQxNWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3Nl
dHVwLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3NldHVwLnB5
CkBAIC0yOSw3ICsyOSw3IEBAIGRlZiByZWFkbWUoKToKIAogc2V0dXAoCiAgICAgbmFtZT0nd2Vi
a2l0c2NtcHknLAotICAgIHZlcnNpb249JzEuMC42JywKKyAgICB2ZXJzaW9uPScxLjEuMCcsCiAg
ICAgZGVzY3JpcHRpb249J0xpYnJhcnkgZGVzaWduZWQgdG8gaW50ZXJhY3Qgd2l0aCBnaXQgYW5k
IHN2biByZXBvc2l0b3JpZXMuJywKICAgICBsb25nX2Rlc2NyaXB0aW9uPXJlYWRtZSgpLAogICAg
IGNsYXNzaWZpZXJzPVsKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtp
dHNjbXB5L3dlYmtpdHNjbXB5L19faW5pdF9fLnB5IGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMv
d2Via2l0c2NtcHkvd2Via2l0c2NtcHkvX19pbml0X18ucHkKaW5kZXggNWZkNzYwM2YxNjBhODQz
Y2VjYzRiMTM2NGMwZWNlZGViOGEyYjMwNy4uMzAxNjA0ZGU4Njk5NDNlZDJkMDNiNWY5ZWEyYmUx
ZDgwMTZiOTFhZiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2Nt
cHkvd2Via2l0c2NtcHkvX19pbml0X18ucHkKKysrIGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMv
d2Via2l0c2NtcHkvd2Via2l0c2NtcHkvX19pbml0X18ucHkKQEAgLTQ2LDcgKzQ2LDcgQEAgZXhj
ZXB0IEltcG9ydEVycm9yOgogICAgICAgICAiUGxlYXNlIGluc3RhbGwgd2Via2l0Y29yZXB5IHdp
dGggYHBpcCBpbnN0YWxsIHdlYmtpdGNvcmVweSAtLWV4dHJhLWluZGV4LXVybCA8cGFja2FnZSBp
bmRleCBVUkw+YCIKICAgICApCiAKLXZlcnNpb24gPSBWZXJzaW9uKDEsIDAsIDYpCit2ZXJzaW9u
ID0gVmVyc2lvbigxLCAxLCAwKQogCiBBdXRvSW5zdGFsbC5yZWdpc3RlcihQYWNrYWdlKCdmYXN0
ZW5lcnMnLCBWZXJzaW9uKDAsIDE1LCAwKSkpCiBBdXRvSW5zdGFsbC5yZWdpc3RlcihQYWNrYWdl
KCdtb25vdG9uaWMnLCBWZXJzaW9uKDEsIDUpKSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
bGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L21vY2tzL2xvY2FsL2dpdC5weSBiL1Rv
b2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L21vY2tzL2xvY2Fs
L2dpdC5weQppbmRleCAwMzZhOTg1NDQyOGZhZWNmYTQ4MTk3ZGIzNzc5YTg0NWUyZmE0MzNiLi44
NThjNmI2ZDYwMzE0ODZmMmUyOGI2ZmMyNTJkZWI4ZjQ3ZWJiMjNjIDEwMDY0NAotLS0gYS9Ub29s
cy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9tb2Nrcy9sb2NhbC9n
aXQucHkKKysrIGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2Nt
cHkvbW9ja3MvbG9jYWwvZ2l0LnB5CkBAIC0zNSw2ICszNSwxNSBAQCBmcm9tIHdlYmtpdHNjbXB5
LnByb2dyYW0uY2Fub25pY2FsaXplLm1lc3NhZ2UgaW1wb3J0IG1haW4gYXMgbWVzc2FnZV9tYWlu
CiAKIAogY2xhc3MgR2l0KG1vY2tzLlN1YnByb2Nlc3MpOgorICAgICMgUGFyc2UgYSAuZ2l0L2Nv
bmZpZyB0aGF0IGxvb2tzIGxpa2UgdGhpcworICAgICMgW2NvcmVdCisgICAgIyAgICAgcmVwb3Np
dG9yeWZvcm1hdHZlcnNpb24gPSAwCisgICAgIyBbYnJhbmNoICJtYWluIl0KKyAgICAjICAgICBy
ZW1vdGUgPSBvcmlnaW4KKyAgICAjIAkgIG1lcmdlID0gcmVmcy9oZWFkcy9tYWluCisgICAgUkVf
U0lOR0xFX1RPUCA9IHJlLmNvbXBpbGUocideXFtccyooP1A8a2V5PlxTKylccypcXScpCisgICAg
UkVfTVVMVElfVE9QID0gcmUuY29tcGlsZShyJ15cW1xzKig/UDxrZXlhPlxTKykgIig/UDxrZXli
PlxTKykiXHMqXF0nKQorICAgIFJFX0VMRU1FTlQgPSByZS5jb21waWxlKHInXlxzKyg/UDxrZXk+
XFMrKVxzKj1ccyooP1A8dmFsdWU+XFMrKScpCiAKICAgICBkZWYgX19pbml0X18oCiAgICAgICAg
IHNlbGYsIHBhdGg9Jy8uaW52YWxpZC1naXQnLCBkYXRhZmlsZT1Ob25lLApAQCAtMTg4LDYgKzE5
NywxMiBAQCBub3RoaW5nIHRvIGNvbW1pdCwgd29ya2luZyB0cmVlIGNsZWFuCiAgICAgICAgICAg
ICAgICAgICAgIHJldHVybmNvZGU9MTI4LAogICAgICAgICAgICAgICAgICAgICBzdGRlcnI9ImZh
dGFsOiBObyBzdWNoIHJlbW90ZSAne30nXG4iLmZvcm1hdChhcmdzWzNdKSwKICAgICAgICAgICAg
ICAgICApLAorICAgICAgICAgICAgKSwgbW9ja3MuU3VicHJvY2Vzcy5Sb3V0ZSgKKyAgICAgICAg
ICAgICAgICBzZWxmLmV4ZWN1dGFibGUsICdyZW1vdGUnLCAnYWRkJywgcmUuY29tcGlsZShyJy4r
JyksCisgICAgICAgICAgICAgICAgY3dkPXNlbGYucGF0aCwKKyAgICAgICAgICAgICAgICBjb21w
bGV0aW9uPW1vY2tzLlByb2Nlc3NDb21wbGV0aW9uKAorICAgICAgICAgICAgICAgICAgICByZXR1
cm5jb2RlPTAsCisgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICksIG1vY2tzLlN1YnBy
b2Nlc3MuUm91dGUoCiAgICAgICAgICAgICAgICAgc2VsZi5leGVjdXRhYmxlLCAnYnJhbmNoJywg
Jy1hJywKICAgICAgICAgICAgICAgICBjd2Q9c2VsZi5wYXRoLApAQCAtMzU0LDYgKzM2OSwxNyBA
QCBub3RoaW5nIHRvIGNvbW1pdCwgd29ya2luZyB0cmVlIGNsZWFuCiAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm5jb2RlPTAsCiAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9J1xu
Jy5qb2luKFsne309e30nLmZvcm1hdChrZXksIHZhbHVlKSBmb3Iga2V5LCB2YWx1ZSBpbiBHaXQu
Y29uZmlnKCkuaXRlbXMoKV0pCiAgICAgICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAp
LCBtb2Nrcy5TdWJwcm9jZXNzLlJvdXRlKAorICAgICAgICAgICAgICAgIHNlbGYuZXhlY3V0YWJs
ZSwgJ2NvbmZpZycsIHJlLmNvbXBpbGUocicuKycpLCByZS5jb21waWxlKHInLisnKSwKKyAgICAg
ICAgICAgICAgICBjd2Q9c2VsZi5wYXRoLAorICAgICAgICAgICAgICAgIGdlbmVyYXRvcj1sYW1i
ZGEgKmFyZ3MsICoqa3dhcmdzOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmVkaXRfY29uZmln
KGFyZ3NbMl0sIGFyZ3NbM10pLAorICAgICAgICAgICAgKSwgbW9ja3MuU3VicHJvY2Vzcy5Sb3V0
ZSgKKyAgICAgICAgICAgICAgICBzZWxmLmV4ZWN1dGFibGUsICdmZXRjaCcsICdmb3JrJywKKyAg
ICAgICAgICAgICAgICBjd2Q9c2VsZi5wYXRoLAorICAgICAgICAgICAgICAgIGNvbXBsZXRpb249
bW9ja3MuUHJvY2Vzc0NvbXBsZXRpb24oCisgICAgICAgICAgICAgICAgICAgIHJldHVybmNvZGU9
MCwKKyAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgKSwgbW9ja3MuU3VicHJvY2Vzcy5S
b3V0ZSgKICAgICAgICAgICAgICAgICBzZWxmLmV4ZWN1dGFibGUsCiAgICAgICAgICAgICAgICAg
Y3dkPXNlbGYucGF0aCwKQEAgLTU5MCwzNCArNjE2LDUwIEBAIG5vdGhpbmcgdG8gY29tbWl0LCB3
b3JraW5nIHRyZWUgY2xlYW4KICAgICBkZWYgY29uZmlnKGNvbnRleHQpOgogICAgICAgICBpZiBp
c2luc3RhbmNlKGNvbnRleHQsIHR5cGUpOgogICAgICAgICAgICAgcmV0dXJuIHsKLSAgICAgICAg
ICAgICAgICAndXNlci5uYW1lJzogJ3RhcHBsZUB3ZWJraXQub3JnJywKKyAgICAgICAgICAgICAg
ICAndXNlci5uYW1lJzogJ1RpbSBBcHBsZScsCisgICAgICAgICAgICAgICAgJ3VzZXIuZW1haWwn
OiAndGFwcGxlQHdlYmtpdC5vcmcnLAogICAgICAgICAgICAgICAgICdzZW5kZW1haWwudHJhbnNm
ZXJlbmNvZGluZyc6ICdiYXNlNjQnLAogICAgICAgICAgICAgfQogCi0gICAgICAgICMgUGFyc2Ug
YSAuZ2l0L2NvbmZpZyB0aGF0IGxvb2tzIGxpa2UgdGhpcwotICAgICAgICAjIFtjb3JlXQotICAg
ICAgICAjICAgICByZXBvc2l0b3J5Zm9ybWF0dmVyc2lvbiA9IDAKLSAgICAgICAgIyBbYnJhbmNo
ICJtYWluIl0KLSAgICAgICAgIyAgICAgcmVtb3RlID0gb3JpZ2luCi0gICAgICAgICMgCSAgbWVy
Z2UgPSByZWZzL2hlYWRzL21haW4KLSAgICAgICAgUkVfU0lOR0xFX1RPUCA9IHJlLmNvbXBpbGUo
cideXFtccyooP1A8a2V5PlxTKylccypcXScpCi0gICAgICAgIFJFX01VTFRJX1RPUCA9IHJlLmNv
bXBpbGUocideXFtccyooP1A8a2V5YT5cUyspICIoP1A8a2V5Yj5cUyspIlxzKlxdJykKLSAgICAg
ICAgUkVfRUxFTUVOVCA9IHJlLmNvbXBpbGUocideXHMrKD9QPGtleT5cUyspXHMqPVxzKig/UDx2
YWx1ZT5cUyspJykKLQogICAgICAgICB0b3AgPSBOb25lCiAgICAgICAgIHJlc3VsdCA9IEdpdC5j
b25maWcoKQogICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKGNvbnRleHQucGF0aCwgJy5n
aXQnLCAnY29uZmlnJyksICdyJykgYXMgY29uZmlnZmlsZToKICAgICAgICAgICAgIGZvciBsaW5l
IGluIGNvbmZpZ2ZpbGUucmVhZGxpbmVzKCk6Ci0gICAgICAgICAgICAgICAgbWF0Y2ggPSBSRV9N
VUxUSV9UT1AubWF0Y2gobGluZSkKKyAgICAgICAgICAgICAgICBtYXRjaCA9IGNvbnRleHQuUkVf
TVVMVElfVE9QLm1hdGNoKGxpbmUpCiAgICAgICAgICAgICAgICAgaWYgbWF0Y2g6CiAgICAgICAg
ICAgICAgICAgICAgIHRvcCA9ICd7fS57fScuZm9ybWF0KG1hdGNoLmdyb3VwKCdrZXlhJyksIG1h
dGNoLmdyb3VwKCdrZXliJykpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAg
ICAgICAgICAgbWF0Y2ggPSBSRV9TSU5HTEVfVE9QLm1hdGNoKGxpbmUpCisgICAgICAgICAgICAg
ICAgbWF0Y2ggPSBjb250ZXh0LlJFX1NJTkdMRV9UT1AubWF0Y2gobGluZSkKICAgICAgICAgICAg
ICAgICBpZiBtYXRjaDoKICAgICAgICAgICAgICAgICAgICAgdG9wID0gbWF0Y2guZ3JvdXAoJ2tl
eScpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAKLSAgICAgICAgICAgICAgICBtYXRj
aCA9IFJFX0VMRU1FTlQubWF0Y2gobGluZSkKKyAgICAgICAgICAgICAgICBtYXRjaCA9IGNvbnRl
eHQuUkVfRUxFTUVOVC5tYXRjaChsaW5lKQogICAgICAgICAgICAgICAgIGlmIHRvcCBhbmQgbWF0
Y2g6CiAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFsne30ue30nLmZvcm1hdCh0b3AsIG1hdGNo
Lmdyb3VwKCdrZXknKSldID0gbWF0Y2guZ3JvdXAoJ3ZhbHVlJykKICAgICAgICAgcmV0dXJuIHJl
c3VsdAorCisgICAgZGVmIGVkaXRfY29uZmlnKHNlbGYsIGtleSwgdmFsdWUpOgorICAgICAgICB3
aXRoIG9wZW4ob3MucGF0aC5qb2luKHNlbGYucGF0aCwgJy5naXQnLCAnY29uZmlnJyksICdyJykg
YXMgY29uZmlnZmlsZToKKyAgICAgICAgICAgIGxpbmVzID0gW2xpbmUgZm9yIGxpbmUgaW4gY29u
ZmlnZmlsZS5yZWFkbGluZXMoKV0KKworICAgICAgICBrZXlfYSA9IGtleS5zcGxpdCgnLicpWzBd
CisgICAgICAgIGtleV9iID0gJy4nLmpvaW4oa2V5LnNwbGl0KCcuJylbMTpdKQorCisgICAgICAg
IGRpZF9wcmludCA9IEZhbHNlCisgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oc2VsZi5w
YXRoLCAnLmdpdCcsICdjb25maWcnKSwgJ3cnKSBhcyBjb25maWdmaWxlOgorICAgICAgICAgICAg
Zm9yIGxpbmUgaW4gbGluZXM6CisgICAgICAgICAgICAgICAgbWF0Y2ggPSBzZWxmLlJFX0VMRU1F
TlQubWF0Y2gobGluZSkKKyAgICAgICAgICAgICAgICBpZiBub3QgbWF0Y2ggb3IgbWF0Y2guZ3Jv
dXAoJ2tleScpICE9IGtleV9iOgorICAgICAgICAgICAgICAgICAgICBjb25maWdmaWxlLndyaXRl
KGxpbmUpCisgICAgICAgICAgICAgICAgbWF0Y2ggPSBzZWxmLlJFX01VTFRJX1RPUC5tYXRjaChs
aW5lKQorICAgICAgICAgICAgICAgIGlmIG5vdCBtYXRjaCBvciAne30ue30nLmZvcm1hdChtYXRj
aC5ncm91cCgna2V5YScpLCBtYXRjaC5ncm91cCgna2V5YicpKSAhPSBrZXlfYToKKyAgICAgICAg
ICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBjb25maWdmaWxlLndyaXRlKCdc
dHt9PXt9XG4nLmZvcm1hdChrZXlfYiwgdmFsdWUpKQorICAgICAgICAgICAgICAgIGRpZF9wcmlu
dCA9IFRydWUKKworICAgICAgICAgICAgaWYgbm90IGRpZF9wcmludDoKKyAgICAgICAgICAgICAg
ICBjb25maWdmaWxlLndyaXRlKCdbe31dXG4nLmZvcm1hdChrZXlfYSkpCisgICAgICAgICAgICAg
ICAgY29uZmlnZmlsZS53cml0ZSgnXHR7fT17fVxuJy5mb3JtYXQoa2V5X2IsIHZhbHVlKSkKKwor
ICAgICAgICByZXR1cm4gbW9ja3MuUHJvY2Vzc0NvbXBsZXRpb24ocmV0dXJuY29kZT0wKQpkaWZm
IC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkv
bW9ja3MvcmVtb3RlL2dpdF9odWIucHkgYi9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRz
Y21weS93ZWJraXRzY21weS9tb2Nrcy9yZW1vdGUvZ2l0X2h1Yi5weQppbmRleCBiN2E3MDFiZjhj
ZjU1NWUzMGE2MWRhNmFjMGFhNjQyN2U4OGY5M2I2Li42YzY4MDRkOTA0MDI0MWRhM2U2YTFkZWY4
Mzg5ZjZlZDdlMzJlNDI1IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJr
aXRzY21weS93ZWJraXRzY21weS9tb2Nrcy9yZW1vdGUvZ2l0X2h1Yi5weQorKysgYi9Ub29scy9T
Y3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9tb2Nrcy9yZW1vdGUvZ2l0
X2h1Yi5weQpAQCAtMzksNiArMzksNyBAQCBjbGFzcyBHaXRIdWIobW9ja3MuUmVxdWVzdHMpOgog
CiAgICAgICAgIHNlbGYuZGVmYXVsdF9icmFuY2ggPSBkZWZhdWx0X2JyYW5jaAogICAgICAgICBz
ZWxmLnJlbW90ZSA9IHJlbW90ZQorICAgICAgICBzZWxmLmZvcmtzID0gW10KICAgICAgICAgaG9z
dG5hbWUgPSBzZWxmLnJlbW90ZS5zcGxpdCgnLycpWzBdCiAgICAgICAgIHNlbGYuYXBpX3JlbW90
ZSA9ICdhcGkue2hvc3RuYW1lfS9yZXBvcy97cmVwb30nLmZvcm1hdCgKICAgICAgICAgICAgIGhv
c3RuYW1lPWhvc3RuYW1lLApAQCAtNjIsNyArNjMsNyBAQCBjbGFzcyBHaXRIdWIobW9ja3MuUmVx
dWVzdHMpOgogICAgIGRlZiBfX2VudGVyX18oc2VsZik6CiAgICAgICAgIHByZWZpeCA9IHNlbGYu
cmVtb3RlLnNwbGl0KCcvJylbMF0ucmVwbGFjZSgnLicsICdfJykudXBwZXIoKQogICAgICAgICB1
c2VybmFtZV9rZXkgPSAne31fVVNFUk5BTUUnLmZvcm1hdChwcmVmaXgpCi0gICAgICAgIHRva2Vu
X2tleSA9ICd7fV9BQ0NFU1NfVE9LRU4nLmZvcm1hdChwcmVmaXgpCisgICAgICAgIHRva2VuX2tl
eSA9ICd7fV9UT0tFTicuZm9ybWF0KHByZWZpeCkKICAgICAgICAgc2VsZi5fZW52aXJvbm1lbnQg
PSB7CiAgICAgICAgICAgICB1c2VybmFtZV9rZXk6IG9zLmVudmlyb24uZ2V0KHVzZXJuYW1lX2tl
eSksCiAgICAgICAgICAgICB0b2tlbl9rZXk6IG9zLmVudmlyb24uZ2V0KHRva2VuX2tleSksCkBA
IC0zMTUsNCArMzE2LDI0IEBAIGNsYXNzIEdpdEh1Yihtb2Nrcy5SZXF1ZXN0cyk6CiAgICAgICAg
IGlmIHN0cmlwcGVkX3VybC5zdGFydHN3aXRoKCd7fS90cmVlLycuZm9ybWF0KHNlbGYucmVtb3Rl
KSk6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5fcGFyZW50c19vZl9yZXF1ZXN0KHVybD11cmws
IHJlZj1zdHJpcHBlZF91cmwuc3BsaXQoJy8nKVstMV0pCiAKKyAgICAgICAgIyBDaGVjayBmb3Ig
ZXhpc3RhbmNlIG9mIGZvcmtlZCByZXBvCisgICAgICAgIGlmIHN0cmlwcGVkX3VybC5zdGFydHN3
aXRoKCd7fS9yZXBvcycuZm9ybWF0KHNlbGYuYXBpX3JlbW90ZS5zcGxpdCgnLycpWzBdKSkgYW5k
IHN0cmlwcGVkX3VybC5zcGxpdCgnLycpWy0xXSA9PSBzZWxmLnJlbW90ZS5zcGxpdCgnLycpWy0x
XToKKyAgICAgICAgICAgIHVzZXJuYW1lID0gc3RyaXBwZWRfdXJsLnNwbGl0KCcvJylbLTJdCisg
ICAgICAgICAgICBpZiB1c2VybmFtZSBpbiBzZWxmLmZvcmtzIG9yIHVzZXJuYW1lID09IHNlbGYu
cmVtb3RlLnNwbGl0KCcvJylbLTJdOgorICAgICAgICAgICAgICAgIHJldHVybiBtb2Nrcy5SZXNw
b25zZS5mcm9tSnNvbihkaWN0KAorICAgICAgICAgICAgICAgICAgICBvd21lcj1kaWN0KAorICAg
ICAgICAgICAgICAgICAgICAgICAgbG9naW49dXNlcm5hbWUsCisgICAgICAgICAgICAgICAgICAg
ICksIGZvcms9dXNlcm5hbWUgaW4gc2VsZi5mb3JrcywKKyAgICAgICAgICAgICAgICAgICAgbmFt
ZT1zdHJpcHBlZF91cmwuc3BsaXQoJy8nKVstMV0sCisgICAgICAgICAgICAgICAgICAgIGZ1bGxf
bmFtZT0nLycuam9pbihzdHJpcHBlZF91cmwuc3BsaXQoJy8nKVstMjpdKSwKKyAgICAgICAgICAg
ICAgICApLCB1cmw9dXJsKQorICAgICAgICAgICAgcmV0dXJuIG1vY2tzLlJlc3BvbnNlLmNyZWF0
ZTQwNCh1cmwpCisKKyAgICAgICAgIyBBZGQgZm9yaworICAgICAgICBpZiBzdHJpcHBlZF91cmwu
c3RhcnRzd2l0aCgne30vZm9ya3MnLmZvcm1hdChzZWxmLmFwaV9yZW1vdGUpKSBhbmQgbWV0aG9k
ID09ICdQT1NUJzoKKyAgICAgICAgICAgIHVzZXJuYW1lID0ga3dhcmdzLmdldCgnanNvbicsIHt9
KS5nZXQoJ293bmVyJywgTm9uZSkKKyAgICAgICAgICAgIGlmIHVzZXJuYW1lOgorICAgICAgICAg
ICAgICAgIHNlbGYuZm9ya3MuYXBwZW5kKHVzZXJuYW1lKQorICAgICAgICAgICAgcmV0dXJuIG1v
Y2tzLlJlc3BvbnNlLmZyb21Kc29uKHt9KSBpZiB1c2VybmFtZSBlbHNlIG1vY2tzLlJlc3BvbnNl
LmNyZWF0ZTQwNCh1cmwpCisKICAgICAgICAgcmV0dXJuIG1vY2tzLlJlc3BvbnNlLmNyZWF0ZTQw
NCh1cmwpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93
ZWJraXRzY21weS9wcm9ncmFtL19faW5pdF9fLnB5IGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMv
d2Via2l0c2NtcHkvd2Via2l0c2NtcHkvcHJvZ3JhbS9fX2luaXRfXy5weQppbmRleCAyZjllMDQ3
Nzk5NjRhMGIyMzMzODJkMGM2NjU1NzlmNTViMGNmYzk3Li4xNTc4ZGQ5NmU4MTViNjYzMzUxMmMy
YWI2MDlhNzM1YjRjYWY4ZTBlIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93
ZWJraXRzY21weS93ZWJraXRzY21weS9wcm9ncmFtL19faW5pdF9fLnB5CisrKyBiL1Rvb2xzL1Nj
cmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Byb2dyYW0vX19pbml0X18u
cHkKQEAgLTMzLDYgKzMzLDcgQEAgZnJvbSAuZmluZCBpbXBvcnQgRmluZCwgSW5mbwogZnJvbSAu
bG9nIGltcG9ydCBMb2cKIGZyb20gLnB1bGwgaW1wb3J0IFB1bGwKIGZyb20gLnNldHVwX2dpdF9z
dm4gaW1wb3J0IFNldHVwR2l0U3ZuCitmcm9tIC5zZXR1cCBpbXBvcnQgU2V0dXAKIAogZnJvbSB3
ZWJraXRjb3JlcHkgaW1wb3J0IGFyZ3VtZW50cywgbG9nIGFzIHdlYmtpdGNvcmVweV9sb2cKIGZy
b20gd2Via2l0c2NtcHkgaW1wb3J0IGxvY2FsLCBsb2csIHJlbW90ZQpAQCAtNjMsNyArNjQsNyBA
QCBkZWYgbWFpbihhcmdzPU5vbmUsIHBhdGg9Tm9uZSwgbG9nZ2Vycz1Ob25lLCBjb250cmlidXRv
cnM9Tm9uZSwgaWRlbnRpZmllcl90ZW1wbAogCiAgICAgc3VicGFyc2VycyA9IHBhcnNlci5hZGRf
c3VicGFyc2VycyhoZWxwPSdzdWItY29tbWFuZCBoZWxwJykKIAotICAgIHByb2dyYW1zID0gW0Zp
bmQsIEluZm8sIENoZWNrb3V0LCBDYW5vbmljYWxpemUsIFB1bGwsIENsZWFuLCBMb2csIEJsYW1l
XQorICAgIHByb2dyYW1zID0gW0ZpbmQsIEluZm8sIENoZWNrb3V0LCBDYW5vbmljYWxpemUsIFB1
bGwsIENsZWFuLCBMb2csIEJsYW1lLCBTZXR1cF0KICAgICBpZiBzdWJ2ZXJzaW9uOgogICAgICAg
ICBwcm9ncmFtcy5hcHBlbmQoU2V0dXBHaXRTdm4pCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Njcmlw
dHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Byb2dyYW0vc2V0dXAucHkgYi9U
b29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9wcm9ncmFtL3Nl
dHVwLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmNlOTNmYzg0MzQ1YjYyYzEwNGI5YTAwZDEzODdhMzhlZjhjNjg5
ZGUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21w
eS93ZWJraXRzY21weS9wcm9ncmFtL3NldHVwLnB5CkBAIC0wLDAgKzEsMjEzIEBACisjIENvcHly
aWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisj
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMg
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgcmVxdWVzdHMKK2ltcG9ydCBz
eXMKKworZnJvbSAuY29tbWFuZCBpbXBvcnQgQ29tbWFuZAorZnJvbSByZXF1ZXN0cy5hdXRoIGlt
cG9ydCBIVFRQQmFzaWNBdXRoCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgYXJndW1lbnRzLCBy
dW4sIFRlcm1pbmFsCitmcm9tIHdlYmtpdHNjbXB5IGltcG9ydCBsb2csIGxvY2FsLCByZW1vdGUK
KworCitjbGFzcyBTZXR1cChDb21tYW5kKToKKyAgICBuYW1lID0gJ3NldHVwJworICAgIGhlbHAg
PSAnQ29uZmlndXJlIGxvY2FsIHNldHRpbmdzIGZvciB0aGUgY3VycmVudCByZXBvc2l0b3J5Jwor
CisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGdpdGh1YihjbHMsIGFyZ3MsIHJlcG9zaXRvcnks
ICoqa3dhcmdzKToKKyAgICAgICAgbG9nLndhcm5pbmcoJ1NhdmluZyBHaXRIdWIgY3JlZGVudGlh
bHMgaW4gc3lzdGVtIGNyZWRlbnRpYWwgc3RvcmUuLi4nKQorICAgICAgICB1c2VybmFtZSwgYWNj
ZXNzX3Rva2VuID0gcmVwb3NpdG9yeS5jcmVkZW50aWFscyhyZXF1aXJlZD1UcnVlKQorICAgICAg
ICBsb2cud2FybmluZygnR2l0SHViIGNyZWRlbnRpYWxzIHNhdmVkIHZpYSBLZXlyaW5nIScpCisK
KyAgICAgICAgbG9nLndhcm5pbmcoJ1ZlcmlmeWluZyB1c2VyIG93bmVkIGZvcmsuLi4nKQorICAg
ICAgICBhdXRoID0gSFRUUEJhc2ljQXV0aCh1c2VybmFtZSwgYWNjZXNzX3Rva2VuKQorICAgICAg
ICByZXNwb25zZSA9IHJlcXVlc3RzLmdldCgne30vcmVwb3Mve30ve30nLmZvcm1hdCgKKyAgICAg
ICAgICAgIHJlcG9zaXRvcnkuYXBpX3VybCwKKyAgICAgICAgICAgIHVzZXJuYW1lLAorICAgICAg
ICAgICAgcmVwb3NpdG9yeS5uYW1lLAorICAgICAgICApLCBhdXRoPWF1dGgsIGhlYWRlcnM9ZGlj
dChBY2NlcHQ9J2FwcGxpY2F0aW9uL3ZuZC5naXRodWIudjMranNvbicpKQorICAgICAgICBpZiBy
ZXNwb25zZS5zdGF0dXNfY29kZSA9PSAyMDA6CisgICAgICAgICAgICBsb2cud2FybmluZygiVXNl
ciBhbHJlYWR5IG93bnMgYSBmb3JrIG9mICd7fSchIi5mb3JtYXQocmVwb3NpdG9yeS5uYW1lKSkK
KyAgICAgICAgICAgIHJldHVybiAwCisKKyAgICAgICAgaWYgcmVwb3NpdG9yeS5vd25lciA9PSB1
c2VybmFtZSBvciBhcmdzLmRlZmF1bHRzIG9yIFRlcm1pbmFsLmNob29zZSgKKyAgICAgICAgICAg
ICJDcmVhdGUgYSBwcml2YXRlIGZvcmsgb2YgJ3t9JyBiZWxvbmdpbmcgdG8gJ3t9JyIuZm9ybWF0
KHJlcG9zaXRvcnkubmFtZSwgdXNlcm5hbWUpLAorICAgICAgICAgICAgZGVmYXVsdD0nTm8nLAor
ICAgICAgICApID09ICdObyc6CisgICAgICAgICAgICBsb2cud2FybmluZygiQ29udGludWluZyB3
aXRob3V0IGZvcmtpbmcgJ3t9JyIuZm9ybWF0KHJlcG9zaXRvcnkubmFtZSkpCisgICAgICAgICAg
ICByZXR1cm4gMQorCisgICAgICAgIHJlc3BvbnNlID0gcmVxdWVzdHMucG9zdCgne30vcmVwb3Mv
e30ve30vZm9ya3MnLmZvcm1hdCgKKyAgICAgICAgICAgIHJlcG9zaXRvcnkuYXBpX3VybCwKKyAg
ICAgICAgICAgIHJlcG9zaXRvcnkub3duZXIsCisgICAgICAgICAgICByZXBvc2l0b3J5Lm5hbWUs
CisgICAgICAgICksIGpzb249ZGljdCgKKyAgICAgICAgICAgIG93bmVyPXVzZXJuYW1lLAorICAg
ICAgICAgICAgZGVzY3JpcHRpb249Int9J3MgZm9yayBvZiB7fSIuZm9ybWF0KHVzZXJuYW1lLCBy
ZXBvc2l0b3J5Lm5hbWUpLAorICAgICAgICAgICAgcHJpdmF0ZT1UcnVlLAorICAgICAgICApLCBh
dXRoPWF1dGgsIGhlYWRlcnM9ZGljdChBY2NlcHQ9J2FwcGxpY2F0aW9uL3ZuZC5naXRodWIudjMr
anNvbicpKQorICAgICAgICBpZiByZXNwb25zZS5zdGF0dXNfY29kZSBub3QgaW4gKDIwMCwgMjAy
KToKKyAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoIkZhaWxlZCB0byBjcmVhdGUgYSBmb3Jr
IG9mICd7fScgYmVsb25naW5nIHRvICd7fSdcbiIuZm9ybWF0KHJlcG9zaXRvcnkubmFtZSwgdXNl
cm5hbWUpKQorICAgICAgICAgICAgcmV0dXJuIDEKKyAgICAgICAgbG9nLndhcm5pbmcoIkNyZWF0
ZWQgYSBwcml2YXRlIGZvcmsgb2YgJ3t9JyBiZWxvbmdpbmcgdG8gJ3t9JyEiLmZvcm1hdChyZXBv
c2l0b3J5Lm5hbWUsIHVzZXJuYW1lKSkKKyAgICAgICAgcmV0dXJuIDAKKworICAgIEBjbGFzc21l
dGhvZAorICAgIGRlZiBnaXQoY2xzLCBhcmdzLCByZXBvc2l0b3J5LCAqKmt3YXJncyk6CisgICAg
ICAgIGdsb2JhbF9jb25maWcgPSBsb2NhbC5HaXQuY29uZmlnKCkKKyAgICAgICAgcmVzdWx0ID0g
MAorCisgICAgICAgIGVtYWlsID0gZ2xvYmFsX2NvbmZpZy5nZXQoJ3VzZXIuZW1haWwnKQorICAg
ICAgICBsb2cud2FybmluZygnU2V0dGluZyBnaXQgdXNlciBlbWFpbCBmb3Ige30uLi4nLmZvcm1h
dChyZXBvc2l0b3J5LnJvb3RfcGF0aCkpCisgICAgICAgIGlmIG5vdCBlbWFpbCBvciBhcmdzLmRl
ZmF1bHRzIGlzIEZhbHNlIG9yIChub3QgYXJncy5kZWZhdWx0cyBhbmQgVGVybWluYWwuY2hvb3Nl
KAorICAgICAgICAgICAgIlNldCAne30nIGFzIHRoZSBnaXQgdXNlciBlbWFpbCIuZm9ybWF0KGVt
YWlsKSwKKyAgICAgICAgICAgIGRlZmF1bHQ9J1llcycsCisgICAgICAgICkgPT0gJ05vJyk6Cisg
ICAgICAgICAgICBlbWFpbCA9IFRlcm1pbmFsLmlucHV0KCdHaXQgdXNlciBlbWFpbDogJykKKwor
ICAgICAgICBpZiBydW4oCisgICAgICAgICAgICBbbG9jYWwuR2l0LmV4ZWN1dGFibGUoKSwgJ2Nv
bmZpZycsICd1c2VyLmVtYWlsJywgZW1haWxdLCBjYXB0dXJlX291dHB1dD1UcnVlLCBjd2Q9cmVw
b3NpdG9yeS5yb290X3BhdGgsCisgICAgICAgICkucmV0dXJuY29kZToKKyAgICAgICAgICAgIHN5
cy5zdGRlcnIud3JpdGUoJ0ZhaWxlZCB0byBzZXQgdGhlIGdpdCB1c2VyIGVtYWlsIHRvIHt9XG4n
LmZvcm1hdChlbWFpbCkpCisgICAgICAgICAgICByZXN1bHQgKz0gMQorICAgICAgICBlbHNlOgor
ICAgICAgICAgICAgbG9nLndhcm5pbmcoIlNldCBnaXQgdXNlciBlbWFpbCB0byAne30nIi5mb3Jt
YXQoZW1haWwpKQorCisgICAgICAgIG5hbWUgPSByZXBvc2l0b3J5LmNvbnRyaWJ1dG9ycy5nZXQo
ZW1haWwpCisgICAgICAgIGlmIG5hbWU6CisgICAgICAgICAgICBuYW1lID0gbmFtZS5uYW1lCisg
ICAgICAgIGVsc2U6CisgICAgICAgICAgICBuYW1lID0gZ2xvYmFsX2NvbmZpZy5nZXQoJ3VzZXIu
bmFtZScpCisgICAgICAgIGxvZy53YXJuaW5nKCdTZXR0aW5nIGdpdCB1c2VyIG5hbWUgZm9yIHt9
Li4uJy5mb3JtYXQocmVwb3NpdG9yeS5yb290X3BhdGgpKQorICAgICAgICBpZiBub3QgbmFtZSBv
ciBhcmdzLmRlZmF1bHRzIGlzIEZhbHNlIG9yIChub3QgYXJncy5kZWZhdWx0cyBhbmQgVGVybWlu
YWwuY2hvb3NlKAorICAgICAgICAgICAgIlNldCAne30nIGFzIHRoZSBnaXQgdXNlciBuYW1lIi5m
b3JtYXQobmFtZSksCisgICAgICAgICAgICBkZWZhdWx0PSdZZXMnLAorICAgICAgICApID09ICdO
bycpOgorICAgICAgICAgICAgbmFtZSA9IFRlcm1pbmFsLmlucHV0KCdHaXQgdXNlciBuYW1lOiAn
KQorICAgICAgICBpZiBydW4oCisgICAgICAgICAgICBbbG9jYWwuR2l0LmV4ZWN1dGFibGUoKSwg
J2NvbmZpZycsICd1c2VyLm5hbWUnLCBuYW1lXSwgY2FwdHVyZV9vdXRwdXQ9VHJ1ZSwgY3dkPXJl
cG9zaXRvcnkucm9vdF9wYXRoLAorICAgICAgICApLnJldHVybmNvZGU6CisgICAgICAgICAgICBz
eXMuc3RkZXJyLndyaXRlKCdGYWlsZWQgdG8gc2V0IHRoZSBnaXQgdXNlciBuYW1lIHRvIHt9XG4n
LmZvcm1hdChuYW1lKSkKKyAgICAgICAgICAgIHJlc3VsdCArPSAxCisgICAgICAgIGVsc2U6Cisg
ICAgICAgICAgICBsb2cud2FybmluZygiU2V0IGdpdCB1c2VyIG5hbWUgdG8gJ3t9JyIuZm9ybWF0
KG5hbWUpKQorCisgICAgICAgIGxvZy53YXJuaW5nKCdTZXR0aW5nIGJldHRlciBPYmplY3RpdmUt
QyBkaWZmaW5nIGJlaGF2aW9yLi4uJykKKyAgICAgICAgcmVzdWx0ICs9IHJ1bigKKyAgICAgICAg
ICAgIFtsb2NhbC5HaXQuZXhlY3V0YWJsZSgpLCAnY29uZmlnJywgJ2RpZmYub2JqY3BwLnhmdW5j
bmFtZScsICdeWy0rQGEtekEtWl9dLiokJ10sCisgICAgICAgICAgICBjYXB0dXJlX291dHB1dD1U
cnVlLCBjd2Q9cmVwb3NpdG9yeS5yb290X3BhdGgsCisgICAgICAgICkucmV0dXJuY29kZQorICAg
ICAgICByZXN1bHQgKz0gcnVuKAorICAgICAgICAgICAgW2xvY2FsLkdpdC5leGVjdXRhYmxlKCks
ICdjb25maWcnLCAnZGlmZi5vYmpjcHBoZWFkZXIueGZ1bmNuYW1lJywgJ15bQGEtekEtWl9dLiok
J10sCisgICAgICAgICAgICBjYXB0dXJlX291dHB1dD1UcnVlLCBjd2Q9cmVwb3NpdG9yeS5yb290
X3BhdGgsCisgICAgICAgICkucmV0dXJuY29kZQorICAgICAgICBsb2cud2FybmluZygnU2V0IGJl
dHRlciBPYmplY3RpdmUtQyBkaWZmaW5nIGJlaGF2aW9yIScpCisKKyAgICAgICAgaWYgYXJncy5k
ZWZhdWx0cyBvciBUZXJtaW5hbC5jaG9vc2UoCisgICAgICAgICAgICAnQXV0by1jb2xvciBzdGF0
dXMsIGRpZmYsIGFuZCBicmFuY2g/Jy5mb3JtYXQoZW1haWwpLAorICAgICAgICAgICAgZGVmYXVs
dD0nWWVzJywKKyAgICAgICAgKSA9PSAnWWVzJzoKKyAgICAgICAgICAgIGZvciBjb21tYW5kIGlu
ICgnc3RhdHVzJywgJ2RpZmYnLCAnYnJhbmNoJyk6CisgICAgICAgICAgICAgICAgcmVzdWx0ICs9
IHJ1bigKKyAgICAgICAgICAgICAgICAgICAgW2xvY2FsLkdpdC5leGVjdXRhYmxlKCksICdjb25m
aWcnLCAnY29sb3Iue30nLmZvcm1hdChjb21tYW5kKSwgJ2F1dG8nXSwKKyAgICAgICAgICAgICAg
ICAgICAgY2FwdHVyZV9vdXRwdXQ9VHJ1ZSwgY3dkPXJlcG9zaXRvcnkucm9vdF9wYXRoLAorICAg
ICAgICAgICAgICAgICkucmV0dXJuY29kZQorCisgICAgICAgIGxvZy53YXJuaW5nKCdVc2luZyB7
fSBtZXJnZSBzdHJhdGVneScuZm9ybWF0KCdtZXJnZSBjb21taXRzIGFzIGEnIGlmIGFyZ3MubWVy
Z2UgZWxzZSAnYSByZWJhc2UnKSkKKyAgICAgICAgaWYgcnVuKAorICAgICAgICAgICAgW2xvY2Fs
LkdpdC5leGVjdXRhYmxlKCksICdjb25maWcnLCAncHVsbC5yZWJhc2UnLCAnZmFsc2UnIGlmIGFy
Z3MubWVyZ2UgZWxzZSAndHJ1ZSddLAorICAgICAgICAgICAgY2FwdHVyZV9vdXRwdXQ9VHJ1ZSwg
Y3dkPXJlcG9zaXRvcnkucm9vdF9wYXRoLAorICAgICAgICApLnJldHVybmNvZGU6CisgICAgICAg
ICAgICBzeXMuc3RkZXJyLndyaXRlKCdGYWlsZWQgdG8gdXNlIHt9IGFzIHRoZSBtZXJnZSBzdHJh
dGVneVxuJy5mb3JtYXQoJ21lcmdlIGNvbW1pdHMnIGlmIGFyZ3MubWVyZ2UgZWxzZSAncmViYXNl
JykpCisgICAgICAgICAgICByZXN1bHQgKz0gMQorCisgICAgICAgICMgT25seSBjb25maWd1cmUg
R2l0SHViIGlmIHRoZSBVUkwgaXMgYSBHaXRIdWIgVVJMCisgICAgICAgIHJtdCA9IHJlcG9zaXRv
cnkucmVtb3RlKCkKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uocm10LCByZW1vdGUuR2l0SHVi
KToKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQKKworICAgICAgICBjb2RlID0gY2xzLmdpdGh1
YihhcmdzLCBybXQsICoqa3dhcmdzKQorICAgICAgICByZXN1bHQgKz0gY29kZQorICAgICAgICBp
ZiBjb2RlOgorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAorCisgICAgICAgIHVzZXJuYW1lLCBf
ID0gcm10LmNyZWRlbnRpYWxzKHJlcXVpcmVkPVRydWUpCisgICAgICAgIGxvZy53YXJuaW5nKCJB
ZGRpbmcgZm9ya2VkIHJlbW90ZSBhcyAne30nIGFuZCAnZm9yaycuLi4iLmZvcm1hdCh1c2VybmFt
ZSkpCisgICAgICAgIHVybCA9IHJlcG9zaXRvcnkudXJsKCkKKworICAgICAgICBpZiAnOi8vJyBp
biB1cmw6CisgICAgICAgICAgICBmb3JrX3JlbW90ZSA9ICd7fTovL3t9L3t9L3t9LmdpdCcuZm9y
bWF0KHVybC5zcGxpdCgnOicpWzBdLCB1cmwuc3BsaXQoJy8nKVsyXSwgdXNlcm5hbWUsIHJtdC5u
YW1lKQorICAgICAgICBlbGlmICc6JyBpbiB1cmw6CisgICAgICAgICAgICBmb3JrX3JlbW90ZSA9
ICd7fTp7fS97fS5naXQnLmZvcm1hdCh1cmwuc3BsaXQoJzonKVswXSwgdXNlcm5hbWUsIHJtdC5u
YW1lKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArIDEKKworICAg
ICAgICBhdmFpbGFibGVfcmVtb3RlcyA9IFtdCisgICAgICAgIGZvciBuYW1lIGluIFt1c2VybmFt
ZSwgJ2ZvcmsnXToKKyAgICAgICAgICAgIHJldHVybmNvZGUgPSBydW4oCisgICAgICAgICAgICAg
ICAgW3JlcG9zaXRvcnkuZXhlY3V0YWJsZSgpLCAncmVtb3RlJywgJ2FkZCcsIG5hbWUsIGZvcmtf
cmVtb3RlXSwKKyAgICAgICAgICAgICAgICBjYXB0dXJlX291dHB1dD1UcnVlLCBjd2Q9cmVwb3Np
dG9yeS5yb290X3BhdGgsCisgICAgICAgICAgICApLnJldHVybmNvZGUKKyAgICAgICAgICAgIGlm
IHJldHVybmNvZGUgPT0gMzoKKyAgICAgICAgICAgICAgICByZXR1cm5jb2RlID0gcnVuKAorICAg
ICAgICAgICAgICAgICAgICBbcmVwb3NpdG9yeS5leGVjdXRhYmxlKCksICdyZW1vdGUnLCAnc2V0
LXVybCcsIG5hbWUsIGZvcmtfcmVtb3RlXSwKKyAgICAgICAgICAgICAgICAgICAgY2FwdHVyZV9v
dXRwdXQ9VHJ1ZSwgY3dkPXJlcG9zaXRvcnkucm9vdF9wYXRoLAorICAgICAgICAgICAgICAgICku
cmV0dXJuY29kZQorICAgICAgICAgICAgaWYgcmV0dXJuY29kZToKKyAgICAgICAgICAgICAgICBz
eXMuc3RkZXJyLndyaXRlKCJGYWlsZWQgdG8gYWRkIHJlbW90ZSAne30nXG4iLmZvcm1hdChuYW1l
KSkKKyAgICAgICAgICAgICAgICByZXN1bHQgKz0gMQorICAgICAgICAgICAgZWxzZToKKyAgICAg
ICAgICAgICAgICBhdmFpbGFibGVfcmVtb3Rlcy5hcHBlbmQobmFtZSkKKyAgICAgICAgICAgICAg
ICBsb2cud2FybmluZygiQWRkZWQgcmVtb3RlICd7fSciLmZvcm1hdChuYW1lKSkKKworICAgICAg
ICBpZiAnZm9yaycgbm90IGluIGF2YWlsYWJsZV9yZW1vdGVzOgorICAgICAgICAgICAgcmV0dXJu
IHJlc3VsdAorICAgICAgICBsb2cud2FybmluZygiRmV0Y2hpbmcgJ3t9JyIuZm9ybWF0KGZvcmtf
cmVtb3RlKSkKKyAgICAgICAgcmV0dXJuIHJ1bigKKyAgICAgICAgICAgIFtyZXBvc2l0b3J5LmV4
ZWN1dGFibGUoKSwgJ2ZldGNoJywgJ2ZvcmsnXSwKKyAgICAgICAgICAgIGNhcHR1cmVfb3V0cHV0
PVRydWUsIGN3ZD1yZXBvc2l0b3J5LnJvb3RfcGF0aCwKKyAgICAgICAgKS5yZXR1cm5jb2RlCisK
KyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgcGFyc2VyKGNscywgcGFyc2VyLCBsb2dnZXJzPU5v
bmUpOgorICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAgICAgJy0tZGVmYXVs
dHMnLCAnLS1uby1kZWZhdWx0cycsIGFjdGlvbj1hcmd1bWVudHMuTm9BY3Rpb24sIGRlZmF1bHQ9
Tm9uZSwKKyAgICAgICAgICAgIGhlbHA9J0RvIG5vdCBwcm9tcHQgdGhlIHVzZXIgZm9yIGRlZmF1
bHRzLCBhbHdheXMgdXNlIChvciBkbyBub3QgdXNlKSB0aGVtJywKKyAgICAgICAgKQorICAgICAg
ICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAgICAgJy0tbWVyZ2UnLCAnLS1uby1tZXJn
ZScsIGFjdGlvbj1hcmd1bWVudHMuTm9BY3Rpb24sIGRlZmF1bHQ9RmFsc2UsCisgICAgICAgICAg
ICBoZWxwPSdVc2UgYSBtZXJnZS1jb21taXQgd29ya2Zsb3cgaW5zdGVhZCBvZiBhIHJlYmFzZSB3
b3JrZmxvdycsCisgICAgICAgICkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBtYWluKGNs
cywgYXJncywgcmVwb3NpdG9yeSwgKiprd2FyZ3MpOgorICAgICAgICBpZiBpc2luc3RhbmNlKHJl
cG9zaXRvcnksIGxvY2FsLkdpdCk6CisgICAgICAgICAgICByZXR1cm4gY2xzLmdpdChhcmdzLCBy
ZXBvc2l0b3J5LCAqKmt3YXJncykKKworICAgICAgICBpZiBpc2luc3RhbmNlKHJlcG9zaXRvcnks
IHJlbW90ZS5HaXRIdWIpOgorICAgICAgICAgICAgcmV0dXJuIGNscy5naXRodWIoYXJncywgcmVw
b3NpdG9yeSwgKiprd2FyZ3MpCisKKyAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgnTm8gc2V0dXAg
cmVxdWlyZWQgZm9yIHt9XG4nLmZvcm1hdCgKKyAgICAgICAgICAgIGdldGF0dHIocmVwb3NpdG9y
eSwgJ3Jvb3RfcGF0aCcsIGdldGF0dHIocmVwb3NpdG9yeSwgJ3VybCcsICc/JykpLAorICAgICAg
ICApKQorICAgICAgICByZXR1cm4gMQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9saWJyYXJp
ZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvcmVtb3RlL2dpdF9odWIucHkgYi9Ub29scy9TY3Jp
cHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9yZW1vdGUvZ2l0X2h1Yi5weQpp
bmRleCBlNGZlNTMzNmE0MjlhNjdmNzRmMDE5OWU4ZDYyZjhmY2JkZWQ2MzUyLi4wNjllOTFiMTIz
MWFlYzY1ZWU3MzA0ZTk0ODA0ZTlmZGY3MDI2YjdmIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRz
L2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9yZW1vdGUvZ2l0X2h1Yi5weQorKysg
Yi9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9yZW1vdGUv
Z2l0X2h1Yi5weQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDIwLCAyMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtNjMsMTMgKzYzLDE2IEBAIGNsYXNzIEdpdEh1YihTY20pOgogICAgICAgICApCiAKICAgICBk
ZWYgY3JlZGVudGlhbHMoc2VsZiwgcmVxdWlyZWQ9VHJ1ZSk6Ci0gICAgICAgIHJldHVybiBjcmVk
ZW50aWFscygKKyAgICAgICAgdXNlcm5hbWUsIHRva2VuID0gY3JlZGVudGlhbHMoCiAgICAgICAg
ICAgICB1cmw9c2VsZi5hcGlfdXJsLAogICAgICAgICAgICAgcmVxdWlyZWQ9cmVxdWlyZWQsCiAg
ICAgICAgICAgICBuYW1lPXNlbGYudXJsLnNwbGl0KCcvJylbMl0ucmVwbGFjZSgnLicsICdfJyku
dXBwZXIoKSwKICAgICAgICAgICAgIHByb21wdD0iR2l0SHViJ3MgQVBJXG5QbGVhc2UgZ2VuZXJh
dGUgYSAnUGVyc29uYWwgYWNjZXNzIHRva2VuJyB2aWEgJ0RldmVsb3BlciBzZXR0aW5ncycgZm9y
IHlvdXIgdXNlciIsCiAgICAgICAgICAgICBrZXlfbmFtZT0ndG9rZW4nLAogICAgICAgICApCisg
ICAgICAgIGlmIHVzZXJuYW1lOgorICAgICAgICAgICAgdXNlcm5hbWUgPSB1c2VybmFtZS5zcGxp
dCgnQCcpWzBdCisgICAgICAgIHJldHVybiB1c2VybmFtZSwgdG9rZW4KIAogICAgIEBwcm9wZXJ0
eQogICAgIGRlZiBpc19naXQoc2VsZik6CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL2xpYnJh
cmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS90ZXN0L2dpdF91bml0dGVzdC5weSBiL1Rvb2xz
L1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Rlc3QvZ2l0X3VuaXR0
ZXN0LnB5CmluZGV4IDZiZTMyM2FjZGIxYTNkMzY0M2VlZjZiNzI1NTNlNTRiYmE3Nzc1ODguLjYy
MTc3YjQwY2I4ZGM2ZGU4ZDE1YzIzZDI3M2MwNTdkOWJmZGRkNjIgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Rlc3QvZ2l0X3VuaXR0
ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNj
bXB5L3Rlc3QvZ2l0X3VuaXR0ZXN0LnB5CkBAIC00MTEsNyArNDExLDcgQEAgQ29tbWl0RGF0ZTog
U2F0IE9jdCAwMyAwMjowNjo0MCAyMDIwICswMDAwCiAgICAgICAgIHdpdGggbW9ja3MubG9jYWwu
R2l0KHNlbGYucGF0aCwgZ2l0X3N2bj1UcnVlKSBhcyBtOgogICAgICAgICAgICAgcmVwbyA9IGxv
Y2FsLkdpdChzZWxmLnBhdGgpCiAKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwby5j
b25maWcoKVsndXNlci5uYW1lJ10sICd0YXBwbGVAd2Via2l0Lm9yZycpCisgICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHJlcG8uY29uZmlnKClbJ3VzZXIubmFtZSddLCAnVGltIEFwcGxlJykK
ICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwby5jb25maWcoKVsnY29yZS5maWxlbW9k
ZSddLCAndHJ1ZScpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcG8uY29uZmlnKClb
J3JlbW90ZS5vcmlnaW4udXJsJ10sICdnaXRAZXhhbXBsZS5vcmc6L21vY2svcmVwb3NpdG9yeScp
CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcG8uY29uZmlnKClbJ3N2bi1yZW1vdGUu
c3ZuLnVybCddLCAnaHR0cHM6Ly9zdm4uZXhhbXBsZS5vcmcvcmVwb3NpdG9yeS93ZWJraXQnKQpA
QCAtNDE5LDcgKzQxOSw3IEBAIENvbW1pdERhdGU6IFNhdCBPY3QgMDMgMDI6MDY6NDAgMjAyMCAr
MDAwMAogCiAgICAgZGVmIHRlc3RfZ2xvYmFsX2NvbmZpZyhzZWxmKToKICAgICAgICAgd2l0aCBt
b2Nrcy5sb2NhbC5HaXQoc2VsZi5wYXRoLCBnaXRfc3ZuPVRydWUpLCBPdXRwdXRDYXB0dXJlKCk6
Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvY2FsLkdpdC5jb25maWcoKVsndXNlci5u
YW1lJ10sICd0YXBwbGVAd2Via2l0Lm9yZycpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGxvY2FsLkdpdC5jb25maWcoKVsndXNlci5uYW1lJ10sICdUaW0gQXBwbGUnKQogICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChsb2NhbC5HaXQuY29uZmlnKClbJ3NlbmRlbWFpbC50cmFuc2Zl
cmVuY29kaW5nJ10sICdiYXNlNjQnKQogCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvbGli
cmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Rlc3Qvc2V0dXBfdW5pdHRlc3QucHkgYi9U
b29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS90ZXN0L3NldHVw
X3VuaXR0ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVjYWNmYWRkOTU5MTEwMWE4YWRjZWRlZTY0NzUwNTk1
MDY3NjRiZWEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJr
aXRzY21weS93ZWJraXRzY21weS90ZXN0L3NldHVwX3VuaXR0ZXN0LnB5CkBAIC0wLDAgKzEsMTM3
IEBACisjIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgb3MKKwor
ZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IE91dHB1dENhcHR1cmUsIHRlc3RpbmcKK2Zyb20gd2Vi
a2l0Y29yZXB5Lm1vY2tzIGltcG9ydCBUaW1lIGFzIE1vY2tUaW1lLCBUZXJtaW5hbCBhcyBNb2Nr
VGVybWluYWwKK2Zyb20gd2Via2l0c2NtcHkgaW1wb3J0IHByb2dyYW0sIG1vY2tzCisKKworY2xh
c3MgVGVzdFNldHVwKHRlc3RpbmcuUGF0aFRlc3RDYXNlKToKKyAgICBiYXNlcGF0aCA9ICdtb2Nr
L3JlcG9zaXRvcnknCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHN1cGVyKFRlc3RT
ZXR1cCwgc2VsZikuc2V0VXAoKQorICAgICAgICBvcy5ta2Rpcihvcy5wYXRoLmpvaW4oc2VsZi5w
YXRoLCAnLmdpdCcpKQorICAgICAgICBvcy5ta2Rpcihvcy5wYXRoLmpvaW4oc2VsZi5wYXRoLCAn
LnN2bicpKQorCisgICAgZGVmIHRlc3Rfc3ZuKHNlbGYpOgorICAgICAgICB3aXRoIE91dHB1dENh
cHR1cmUoKSBhcyBjYXB0dXJlZCwgbW9ja3MubG9jYWwuR2l0KCksIG1vY2tzLmxvY2FsLlN2bihz
ZWxmLnBhdGgpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBwcm9ncmFtLm1haW4o
CisgICAgICAgICAgICAgICAgYXJncz0oJ3NldHVwJywpLAorICAgICAgICAgICAgICAgIHBhdGg9
c2VsZi5wYXRoLAorICAgICAgICAgICAgKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjYXB0
dXJlZC5zdGRlcnIuZ2V0dmFsdWUoKSwgJ05vIHNldHVwIHJlcXVpcmVkIGZvciB7fVxuJy5mb3Jt
YXQoc2VsZi5wYXRoKSkKKworICAgIGRlZiB0ZXN0X2dpdGh1YihzZWxmKToKKyAgICAgICAgd2l0
aCBPdXRwdXRDYXB0dXJlKCkgYXMgY2FwdHVyZWQsIE1vY2tUZXJtaW5hbC5pbnB1dCgneScpLCBt
b2Nrcy5yZW1vdGUuR2l0SHViKCkgYXMgcmVtb3RlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgwLCBwcm9ncmFtLm1haW4oCisgICAgICAgICAgICAgICAgYXJncz0oJy1DJywgJ2h0dHBz
Oi8ve30nLmZvcm1hdChyZW1vdGUucmVtb3RlKSwgJ3NldHVwJyksCisgICAgICAgICAgICAgICAg
cGF0aD1zZWxmLnBhdGgsCisgICAgICAgICAgICApKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoY2FwdHVyZWQuc3Rkb3V0LmdldHZhbHVlKCksICJDcmVhdGUgYSBwcml2YXRlIGZvcmsgb2Yg
J1dlYktpdCcgYmVsb25naW5nIHRvICd1c2VybmFtZScgKFllcy9Obyk6IFxuIikKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChjYXB0dXJlZC5zdGRlcnIuZ2V0dmFsdWUoKSwgJycpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBjYXB0dXJlZC5yb290LmxvZy5nZXR2YWx1
ZSgpLAorICAgICAgICAgICAgJycnU2F2aW5nIEdpdEh1YiBjcmVkZW50aWFscyBpbiBzeXN0ZW0g
Y3JlZGVudGlhbCBzdG9yZS4uLgorR2l0SHViIGNyZWRlbnRpYWxzIHNhdmVkIHZpYSBLZXlyaW5n
IQorVmVyaWZ5aW5nIHVzZXIgb3duZWQgZm9yay4uLgorQ3JlYXRlZCBhIHByaXZhdGUgZm9yayBv
ZiAnV2ViS2l0JyBiZWxvbmdpbmcgdG8gJ3VzZXJuYW1lJyEKKycnJywKKyAgICAgICAgKQorCisg
ICAgZGVmIHRlc3RfZ2l0KHNlbGYpOgorICAgICAgICB3aXRoIE91dHB1dENhcHR1cmUoKSBhcyBj
YXB0dXJlZCwgbW9ja3MubG9jYWwuR2l0KHNlbGYucGF0aCkgYXMgcmVwbywgbW9ja3MubG9jYWwu
U3ZuKCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHByb2dyYW0ubWFpbigKKyAg
ICAgICAgICAgICAgICBhcmdzPSgnc2V0dXAnLCAnLS1kZWZhdWx0cycpLAorICAgICAgICAgICAg
ICAgIHBhdGg9c2VsZi5wYXRoLAorICAgICAgICAgICAgKSkKKworICAgICAgICAgICAgY29uZmln
ID0gcmVwby5jb25maWcoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXlstK0BhLXpB
LVpfXS4qJCcsIGNvbmZpZy5nZXQoJ2RpZmYub2JqY3BwLnhmdW5jbmFtZScsICcnKSkKKyAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ15bQGEtekEtWl9dLiokJywgY29uZmlnLmdldCgnZGlm
Zi5vYmpjcHBoZWFkZXIueGZ1bmNuYW1lJywgJycpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgnYXV0bycsIGNvbmZpZy5nZXQoJ2NvbG9yLnN0YXR1cycsICcnKSkKKyAgICAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoJ2F1dG8nLCBjb25maWcuZ2V0KCdjb2xvci5kaWZmJywgJycpKQor
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnYXV0bycsIGNvbmZpZy5nZXQoJ2NvbG9yLmJy
YW5jaCcsICcnKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3RydWUnLCBjb25maWcu
Z2V0KCdwdWxsLnJlYmFzZScsICcnKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhcHR1
cmVkLnN0ZG91dC5nZXR2YWx1ZSgpLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjYXB0
dXJlZC5zdGRlcnIuZ2V0dmFsdWUoKSwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisg
ICAgICAgICAgICBjYXB0dXJlZC5yb290LmxvZy5nZXR2YWx1ZSgpLAorICAgICAgICAgICAgJycn
U2V0dGluZyBnaXQgdXNlciBlbWFpbCBmb3Ige3JlcG9zaXRvcnl9Li4uCitTZXQgZ2l0IHVzZXIg
ZW1haWwgdG8gJ3RhcHBsZUB3ZWJraXQub3JnJworU2V0dGluZyBnaXQgdXNlciBuYW1lIGZvciB7
cmVwb3NpdG9yeX0uLi4KK1NldCBnaXQgdXNlciBuYW1lIHRvICdUaW0gQXBwbGUnCitTZXR0aW5n
IGJldHRlciBPYmplY3RpdmUtQyBkaWZmaW5nIGJlaGF2aW9yLi4uCitTZXQgYmV0dGVyIE9iamVj
dGl2ZS1DIGRpZmZpbmcgYmVoYXZpb3IhCitVc2luZyBhIHJlYmFzZSBtZXJnZSBzdHJhdGVneQor
JycnLmZvcm1hdChyZXBvc2l0b3J5PXNlbGYucGF0aCksCisgICAgICAgICkKKworICAgIGRlZiB0
ZXN0X2dpdGh1Yl9jaGVja291dChzZWxmKToKKyAgICAgICAgd2l0aCBPdXRwdXRDYXB0dXJlKCkg
YXMgY2FwdHVyZWQsIG1vY2tzLnJlbW90ZS5HaXRIdWIoKSBhcyByZW1vdGUsIFwKKyAgICAgICAg
ICAgIE1vY2tUZXJtaW5hbC5pbnB1dCgnbicsICdjb21taXR0ZXJAd2Via2l0Lm9yZycsICduJywg
J0NvbW1pdHRlcicsICduJywgJ3knKSwgXAorICAgICAgICAgICAgbW9ja3MubG9jYWwuR2l0KHNl
bGYucGF0aCwgcmVtb3RlPSdodHRwczovL3t9Jy5mb3JtYXQocmVtb3RlLnJlbW90ZSkpIGFzIHJl
cG86CisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcHJvZ3JhbS5tYWluKAorICAg
ICAgICAgICAgICAgIGFyZ3M9KCdzZXR1cCcsKSwKKyAgICAgICAgICAgICAgICBwYXRoPXNlbGYu
cGF0aCwKKyAgICAgICAgICAgICkpCisKKyAgICAgICAgICAgIGNvbmZpZyA9IHJlcG8uY29uZmln
KCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ2NvbG9yLnN0YXR1cycsIGNvbmZpZykK
KyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0NvbW1pdHRlcicsIGNvbmZpZy5nZXQoJ3Vz
ZXIubmFtZScsICcnKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2NvbW1pdHRlckB3
ZWJraXQub3JnJywgY29uZmlnLmdldCgndXNlci5lbWFpbCcsICcnKSkKKworICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKAorICAgICAgICAgICAgY2FwdHVyZWQuc3Rkb3V0LmdldHZhbHVlKCksCisg
ICAgICAgICAgICAnJydTZXQgJ3RhcHBsZUB3ZWJraXQub3JnJyBhcyB0aGUgZ2l0IHVzZXIgZW1h
aWwgKFllcy9Obyk6IAorR2l0IHVzZXIgZW1haWw6IAorU2V0ICdUaW0gQXBwbGUnIGFzIHRoZSBn
aXQgdXNlciBuYW1lIChZZXMvTm8pOiAKK0dpdCB1c2VyIG5hbWU6IAorQXV0by1jb2xvciBzdGF0
dXMsIGRpZmYsIGFuZCBicmFuY2g/IChZZXMvTm8pOiAKK0NyZWF0ZSBhIHByaXZhdGUgZm9yayBv
ZiAnV2ViS2l0JyBiZWxvbmdpbmcgdG8gJ3VzZXJuYW1lJyAoWWVzL05vKTogCisnJycpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FwdHVyZWQuc3RkZXJyLmdldHZhbHVlKCksICcnKQorICAg
ICAgICBzZWxmLm1heERpZmYgPSBOb25lCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAg
ICAgICAgICBjYXB0dXJlZC5yb290LmxvZy5nZXR2YWx1ZSgpLAorICAgICAgICAgICAgJycnU2V0
dGluZyBnaXQgdXNlciBlbWFpbCBmb3Ige3JlcG9zaXRvcnl9Li4uCitTZXQgZ2l0IHVzZXIgZW1h
aWwgdG8gJ2NvbW1pdHRlckB3ZWJraXQub3JnJworU2V0dGluZyBnaXQgdXNlciBuYW1lIGZvciB7
cmVwb3NpdG9yeX0uLi4KK1NldCBnaXQgdXNlciBuYW1lIHRvICdDb21taXR0ZXInCitTZXR0aW5n
IGJldHRlciBPYmplY3RpdmUtQyBkaWZmaW5nIGJlaGF2aW9yLi4uCitTZXQgYmV0dGVyIE9iamVj
dGl2ZS1DIGRpZmZpbmcgYmVoYXZpb3IhCitVc2luZyBhIHJlYmFzZSBtZXJnZSBzdHJhdGVneQor
U2F2aW5nIEdpdEh1YiBjcmVkZW50aWFscyBpbiBzeXN0ZW0gY3JlZGVudGlhbCBzdG9yZS4uLgor
R2l0SHViIGNyZWRlbnRpYWxzIHNhdmVkIHZpYSBLZXlyaW5nIQorVmVyaWZ5aW5nIHVzZXIgb3du
ZWQgZm9yay4uLgorQ3JlYXRlZCBhIHByaXZhdGUgZm9yayBvZiAnV2ViS2l0JyBiZWxvbmdpbmcg
dG8gJ3VzZXJuYW1lJyEKK0FkZGluZyBmb3JrZWQgcmVtb3RlIGFzICd1c2VybmFtZScgYW5kICdm
b3JrJy4uLgorQWRkZWQgcmVtb3RlICd1c2VybmFtZScKK0FkZGVkIHJlbW90ZSAnZm9yaycKK0Zl
dGNoaW5nICdodHRwczovL2dpdGh1Yi5leGFtcGxlLmNvbS91c2VybmFtZS9XZWJLaXQuZ2l0Jwor
JycnLmZvcm1hdChyZXBvc2l0b3J5PXNlbGYucGF0aCksCisgICAgICAgICkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435035</attachid>
            <date>2021-08-05 16:04:36 -0700</date>
            <delta_ts>2021-08-05 17:24:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225985-20210805160435.patch</filename>
            <type>text/plain</type>
            <size>33584</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNzA1CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYjEzYmI1NWEwZjRjMTQyZWQ4NmQxODNmZDViNjI5ODc1
ZTVkZDc5My4uOTc1ZTFjZGU3NDFjZTE4MTc0ZmM2OWUyY2Y1ZWNhMGM1ZGNkNTMwNSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2
IEBACisyMDIxLTA4LTA1ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbZ2l0LXdlYmtpdF0gQWRkIHNldHVwIGZ1bmN0aW9uCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU5ODUKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzc4MjI2NzI5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3NldHVwLnB5OiBCdW1w
IHZlcnNpb24uCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtp
dGNvcmVweS9fX2luaXRfXy5weTogRGl0dG8uCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMv
d2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9jcmVkZW50aWFscy5weToKKyAgICAgICAgKGNyZWRl
bnRpYWxzKTogS2V5IHNob3VsZCBiZSBwdWxsZWQgZnJvbSBlbnZpcm9ubWVudCB2YXJpYWJsZSB3
aXRoIGtleV9uYW1lIGluIGl0LgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNj
bXB5L3NldHVwLnB5OiBCdW1wIHZlcnNpb24uCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMv
d2Via2l0c2NtcHkvd2Via2l0c2NtcHkvX19pbml0X18ucHk6IERpdHRvLgorICAgICAgICAqIFNj
cmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L21vY2tzL2xvY2FsL2dpdC5w
eToKKyAgICAgICAgKEdpdCk6IE1vdmUgY29uZmlnIHJlZ2V4ZXMuCisgICAgICAgIChHaXQuX19p
bml0X18pOiBBZGQgYGdpdCByZW1vdGUgYWRkYCwgYGdpdCBjb25maWdgIGFuZCBgZ2l0IGZldGNo
IGZvcmtgLgorICAgICAgICAoR2l0LmNvbmZpZyk6IEFkZCB1c2VyLmVtYWlsIHRvIGRlZmF1bHQg
Y29uZmlndXJhdGlvbi4KKyAgICAgICAgKEdpdC5lZGl0X2NvbmZpZyk6IE1vZGlmeSBjb25maWd1
cmF0aW9uIGZpbGUuCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Vi
a2l0c2NtcHkvbW9ja3MvcmVtb3RlL2dpdF9odWIucHk6CisgICAgICAgIChHaXRIdWIpOiBBZGQg
bGlzdCBvZiBmb3Jrcy4KKyAgICAgICAgKEdpdEh1Yi5fX2VudGVyX18pOiBDb3JyZWN0bHkgbW9j
ayB0b2tlbi4KKyAgICAgICAgKEdpdEh1Yi5yZXF1ZXN0KTogQWRkIGZvcmsgY2hlY2sgYW5kIGZv
cmsgYWRkaXRpb24uCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Vi
a2l0c2NtcHkvcHJvZ3JhbS9fX2luaXRfXy5weToKKyAgICAgICAgKG1haW4pOiBBZGQgc2V0dXAg
ZnVuY3Rpb24uCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0
c2NtcHkvcmVtb3RlL2dpdF9odWIucHk6CisgICAgICAgIChHaXRIdWIuY3JlZGVudGlhbHMpOiBT
dHJpcCBlbWFpbCBkb21haW4sIGd1aWRlIHVzZXIgb24gdG9rZW4gcGVybWlzc2lvbnMuCisgICAg
ICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvcHJvZ3JhbS9z
ZXR1cC5weTogQWRkZWQuCisgICAgICAgIChTZXR1cC5naXRodWIpOiBFbnN1cmUgdGhhdCBHaXRI
dWIgY3JlZGVudGlhbHMgYXJlIGluIHRoZSBrZXljaGFpbi4KKyAgICAgICAgKFNldHVwLmdpdCk6
IFNldCB0aGUgdXNlciBmb3IgdGhlIHJlcG9zaXRvcnksIGFsb25nIHdpdGggbWVyZ2Ugc3RyYXRl
Z3kuCisgICAgICAgIChTZXR1cC5wYXJzZXIpOgorICAgICAgICAoU2V0dXAubWFpbik6CisgICAg
ICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvdGVzdC9naXRf
dW5pdHRlc3QucHk6CisgICAgICAgICh0ZXN0X2NvbmZpZyk6IENoYW5nZSB1c2VyIG5hbWUuCisg
ICAgICAgICh0ZXN0X2dsb2JhbF9jb25maWcpOiBEaXR0by4KKyAgICAgICAgKiBTY3JpcHRzL2xp
YnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS90ZXN0L3NldHVwX3VuaXR0ZXN0LnB5OiBB
ZGRlZC4KKyAgICAgICAgKFRlc3RTZXR1cCk6CisgICAgICAgIChUZXN0U2V0dXAuc2V0VXApOgor
ICAgICAgICAoVGVzdFNldHVwLnRlc3Rfc3ZuKToKKyAgICAgICAgKFRlc3RTZXR1cC50ZXN0X2dp
dGh1Yik6CisgICAgICAgIChUZXN0U2V0dXAudGVzdF9naXQpOgorICAgICAgICAoVGVzdFNldHVw
LnRlc3RfZ2l0aHViX2NoZWNrb3V0KToKKwogMjAyMS0wOC0wNSAgWmFuIERvYmVyc2VrICA8emRv
YmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAgcnVuLWpzYy1zdHJlc3MtdGVzdHM6IGRldGVj
dCB0aGUgcmlzY3Y2NCBhcmNoaXRlY3R1cmUKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvbGli
cmFyaWVzL3dlYmtpdGNvcmVweS9zZXR1cC5weSBiL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dl
YmtpdGNvcmVweS9zZXR1cC5weQppbmRleCAxZTg2ZWYxMzIyY2I4OWQ0ZGNkZjRlZTU5M2E2MzUz
ZmNlNWM4ZDFlLi45ZTU4ZmRhMjdlNDE5YzcwNWVkZTQ4ZGVhYjAyZmE2Njc5YTQxNWYwIDEwMDY0
NAotLS0gYS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvc2V0dXAucHkKKysr
IGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3NldHVwLnB5CkBAIC0zMCw3
ICszMCw3IEBAIGRlZiByZWFkbWUoKToKIAogc2V0dXAoCiAgICAgbmFtZT0nd2Via2l0Y29yZXB5
JywKLSAgICB2ZXJzaW9uPScwLjguMCcsCisgICAgdmVyc2lvbj0nMC44LjEnLAogICAgIGRlc2Ny
aXB0aW9uPSdMaWJyYXJ5IGNvbnRhaW5pbmcgdmFyaW91cyBQeXRob24gc3VwcG9ydCBjbGFzc2Vz
IGFuZCBmdW5jdGlvbnMuJywKICAgICBsb25nX2Rlc2NyaXB0aW9uPXJlYWRtZSgpLAogICAgIGNs
YXNzaWZpZXJzPVsKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNv
cmVweS93ZWJraXRjb3JlcHkvX19pbml0X18ucHkgYi9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93
ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L19faW5pdF9fLnB5CmluZGV4IDEyYmQ5NmNhOGZmNGE4
YjE0NzdkZTljZjNjMzk5M2U0ZTAyNjc1ZDUuLmY2NWQxZDE0ZGI1MTE0NGI1MzM4MGEzY2ZlYmQy
MjMxMjI1MDcwMmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNv
cmVweS93ZWJraXRjb3JlcHkvX19pbml0X18ucHkKKysrIGIvVG9vbHMvU2NyaXB0cy9saWJyYXJp
ZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9fX2luaXRfXy5weQpAQCAtNDAsNyArNDAsNyBA
QCBmcm9tIHdlYmtpdGNvcmVweS5jcmVkZW50aWFscyBpbXBvcnQgY3JlZGVudGlhbHMKIGZyb20g
d2Via2l0Y29yZXB5Lm1lYXN1cmVfdGltZSBpbXBvcnQgTWVhc3VyZVRpbWUKIGZyb20gd2Via2l0
Y29yZXB5Lm5lc3RlZF9mdXp6eV9kaWN0IGltcG9ydCBOZXN0ZWRGdXp6eURpY3QKIAotdmVyc2lv
biA9IFZlcnNpb24oMCwgOCwgMCkKK3ZlcnNpb24gPSBWZXJzaW9uKDAsIDgsIDEpCiAKIGZyb20g
d2Via2l0Y29yZXB5LmF1dG9pbnN0YWxsIGltcG9ydCBQYWNrYWdlLCBBdXRvSW5zdGFsbAogaWYg
c3lzLnZlcnNpb25faW5mbyA+ICgzLCAwKToKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvbGli
cmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvY3JlZGVudGlhbHMucHkgYi9Ub29scy9T
Y3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L2NyZWRlbnRpYWxzLnB5
CmluZGV4IGVjYjM5ZGViZjY4Yzk1ZTczZTljOGY4YmVkMDViYTg3ZjkyM2U4ZWQuLjBiYWQ2N2Yy
OWU2OGQzNGQ0M2NiODVkYTVlYmQ2M2ZmODczYTQxOTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Njcmlw
dHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvY3JlZGVudGlhbHMucHkKKysr
IGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9jcmVk
ZW50aWFscy5weQpAQCAtMzgsNyArMzgsNyBAQCBkZWYgY3JlZGVudGlhbHModXJsLCByZXF1aXJl
ZD1UcnVlLCBuYW1lPU5vbmUsIHByb21wdD1Ob25lLCBrZXlfbmFtZT0ncGFzc3dvcmQnKQogICAg
ICAgICByZXR1cm4gX2NhY2hlLmdldChuYW1lKQogCiAgICAgdXNlcm5hbWUgPSBvcy5lbnZpcm9u
LmdldCgne31fVVNFUk5BTUUnLmZvcm1hdChuYW1lLnVwcGVyKCkpKQotICAgIGtleSA9IG9zLmVu
dmlyb24uZ2V0KCd7fV97fScuZm9ybWF0KG5hbWUudXBwZXIoKSwgbmFtZS51cHBlcigpKSkKKyAg
ICBrZXkgPSBvcy5lbnZpcm9uLmdldCgne31fe30nLmZvcm1hdChuYW1lLnVwcGVyKCksIGtleV9u
YW1lLnVwcGVyKCkpKQogCiAgICAgaWYgdXNlcm5hbWUgYW5kIGtleToKICAgICAgICAgX2NhY2hl
W25hbWVdID0gKHVzZXJuYW1lLCBrZXkpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL2xpYnJh
cmllcy93ZWJraXRzY21weS9zZXR1cC5weSBiL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtp
dHNjbXB5L3NldHVwLnB5CmluZGV4IGNmNTI5ODYyNDc4MzdiMjQxZTZkODg1YTFmZDVjOTU3Njhm
ZGI2YzQuLjRjZWU1ZWNlNjhkNGU2ZGYxMTkwNjUyYjQ4ZGY1ZmQzZWViNzQxNWEgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3NldHVwLnB5CisrKyBiL1Rv
b2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3NldHVwLnB5CkBAIC0yOSw3ICsyOSw3
IEBAIGRlZiByZWFkbWUoKToKIAogc2V0dXAoCiAgICAgbmFtZT0nd2Via2l0c2NtcHknLAotICAg
IHZlcnNpb249JzEuMC42JywKKyAgICB2ZXJzaW9uPScxLjEuMCcsCiAgICAgZGVzY3JpcHRpb249
J0xpYnJhcnkgZGVzaWduZWQgdG8gaW50ZXJhY3Qgd2l0aCBnaXQgYW5kIHN2biByZXBvc2l0b3Jp
ZXMuJywKICAgICBsb25nX2Rlc2NyaXB0aW9uPXJlYWRtZSgpLAogICAgIGNsYXNzaWZpZXJzPVsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNj
bXB5L19faW5pdF9fLnB5IGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Vi
a2l0c2NtcHkvX19pbml0X18ucHkKaW5kZXggNWZkNzYwM2YxNjBhODQzY2VjYzRiMTM2NGMwZWNl
ZGViOGEyYjMwNy4uMzAxNjA0ZGU4Njk5NDNlZDJkMDNiNWY5ZWEyYmUxZDgwMTZiOTFhZiAxMDA2
NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkv
X19pbml0X18ucHkKKysrIGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Vi
a2l0c2NtcHkvX19pbml0X18ucHkKQEAgLTQ2LDcgKzQ2LDcgQEAgZXhjZXB0IEltcG9ydEVycm9y
OgogICAgICAgICAiUGxlYXNlIGluc3RhbGwgd2Via2l0Y29yZXB5IHdpdGggYHBpcCBpbnN0YWxs
IHdlYmtpdGNvcmVweSAtLWV4dHJhLWluZGV4LXVybCA8cGFja2FnZSBpbmRleCBVUkw+YCIKICAg
ICApCiAKLXZlcnNpb24gPSBWZXJzaW9uKDEsIDAsIDYpCit2ZXJzaW9uID0gVmVyc2lvbigxLCAx
LCAwKQogCiBBdXRvSW5zdGFsbC5yZWdpc3RlcihQYWNrYWdlKCdmYXN0ZW5lcnMnLCBWZXJzaW9u
KDAsIDE1LCAwKSkpCiBBdXRvSW5zdGFsbC5yZWdpc3RlcihQYWNrYWdlKCdtb25vdG9uaWMnLCBW
ZXJzaW9uKDEsIDUpKSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtp
dHNjbXB5L3dlYmtpdHNjbXB5L21vY2tzL2xvY2FsL2dpdC5weSBiL1Rvb2xzL1NjcmlwdHMvbGli
cmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L21vY2tzL2xvY2FsL2dpdC5weQppbmRleCAw
MzZhOTg1NDQyOGZhZWNmYTQ4MTk3ZGIzNzc5YTg0NWUyZmE0MzNiLi44NThjNmI2ZDYwMzE0ODZm
MmUyOGI2ZmMyNTJkZWI4ZjQ3ZWJiMjNjIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL2xpYnJh
cmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9tb2Nrcy9sb2NhbC9naXQucHkKKysrIGIvVG9v
bHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbW9ja3MvbG9jYWwv
Z2l0LnB5CkBAIC0zNSw2ICszNSwxNSBAQCBmcm9tIHdlYmtpdHNjbXB5LnByb2dyYW0uY2Fub25p
Y2FsaXplLm1lc3NhZ2UgaW1wb3J0IG1haW4gYXMgbWVzc2FnZV9tYWluCiAKIAogY2xhc3MgR2l0
KG1vY2tzLlN1YnByb2Nlc3MpOgorICAgICMgUGFyc2UgYSAuZ2l0L2NvbmZpZyB0aGF0IGxvb2tz
IGxpa2UgdGhpcworICAgICMgW2NvcmVdCisgICAgIyAgICAgcmVwb3NpdG9yeWZvcm1hdHZlcnNp
b24gPSAwCisgICAgIyBbYnJhbmNoICJtYWluIl0KKyAgICAjICAgICByZW1vdGUgPSBvcmlnaW4K
KyAgICAjIAkgIG1lcmdlID0gcmVmcy9oZWFkcy9tYWluCisgICAgUkVfU0lOR0xFX1RPUCA9IHJl
LmNvbXBpbGUocideXFtccyooP1A8a2V5PlxTKylccypcXScpCisgICAgUkVfTVVMVElfVE9QID0g
cmUuY29tcGlsZShyJ15cW1xzKig/UDxrZXlhPlxTKykgIig/UDxrZXliPlxTKykiXHMqXF0nKQor
ICAgIFJFX0VMRU1FTlQgPSByZS5jb21waWxlKHInXlxzKyg/UDxrZXk+XFMrKVxzKj1ccyooP1A8
dmFsdWU+XFMrKScpCiAKICAgICBkZWYgX19pbml0X18oCiAgICAgICAgIHNlbGYsIHBhdGg9Jy8u
aW52YWxpZC1naXQnLCBkYXRhZmlsZT1Ob25lLApAQCAtMTg4LDYgKzE5NywxMiBAQCBub3RoaW5n
IHRvIGNvbW1pdCwgd29ya2luZyB0cmVlIGNsZWFuCiAgICAgICAgICAgICAgICAgICAgIHJldHVy
bmNvZGU9MTI4LAogICAgICAgICAgICAgICAgICAgICBzdGRlcnI9ImZhdGFsOiBObyBzdWNoIHJl
bW90ZSAne30nXG4iLmZvcm1hdChhcmdzWzNdKSwKICAgICAgICAgICAgICAgICApLAorICAgICAg
ICAgICAgKSwgbW9ja3MuU3VicHJvY2Vzcy5Sb3V0ZSgKKyAgICAgICAgICAgICAgICBzZWxmLmV4
ZWN1dGFibGUsICdyZW1vdGUnLCAnYWRkJywgcmUuY29tcGlsZShyJy4rJyksCisgICAgICAgICAg
ICAgICAgY3dkPXNlbGYucGF0aCwKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9uPW1vY2tzLlBy
b2Nlc3NDb21wbGV0aW9uKAorICAgICAgICAgICAgICAgICAgICByZXR1cm5jb2RlPTAsCisgICAg
ICAgICAgICAgICAgKSwKICAgICAgICAgICAgICksIG1vY2tzLlN1YnByb2Nlc3MuUm91dGUoCiAg
ICAgICAgICAgICAgICAgc2VsZi5leGVjdXRhYmxlLCAnYnJhbmNoJywgJy1hJywKICAgICAgICAg
ICAgICAgICBjd2Q9c2VsZi5wYXRoLApAQCAtMzU0LDYgKzM2OSwxNyBAQCBub3RoaW5nIHRvIGNv
bW1pdCwgd29ya2luZyB0cmVlIGNsZWFuCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5j
b2RlPTAsCiAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9J1xuJy5qb2luKFsne309e30n
LmZvcm1hdChrZXksIHZhbHVlKSBmb3Iga2V5LCB2YWx1ZSBpbiBHaXQuY29uZmlnKCkuaXRlbXMo
KV0pCiAgICAgICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICApLCBtb2Nrcy5TdWJwcm9j
ZXNzLlJvdXRlKAorICAgICAgICAgICAgICAgIHNlbGYuZXhlY3V0YWJsZSwgJ2NvbmZpZycsIHJl
LmNvbXBpbGUocicuKycpLCByZS5jb21waWxlKHInLisnKSwKKyAgICAgICAgICAgICAgICBjd2Q9
c2VsZi5wYXRoLAorICAgICAgICAgICAgICAgIGdlbmVyYXRvcj1sYW1iZGEgKmFyZ3MsICoqa3dh
cmdzOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmVkaXRfY29uZmlnKGFyZ3NbMl0sIGFyZ3Nb
M10pLAorICAgICAgICAgICAgKSwgbW9ja3MuU3VicHJvY2Vzcy5Sb3V0ZSgKKyAgICAgICAgICAg
ICAgICBzZWxmLmV4ZWN1dGFibGUsICdmZXRjaCcsICdmb3JrJywKKyAgICAgICAgICAgICAgICBj
d2Q9c2VsZi5wYXRoLAorICAgICAgICAgICAgICAgIGNvbXBsZXRpb249bW9ja3MuUHJvY2Vzc0Nv
bXBsZXRpb24oCisgICAgICAgICAgICAgICAgICAgIHJldHVybmNvZGU9MCwKKyAgICAgICAgICAg
ICAgICApLAogICAgICAgICAgICAgKSwgbW9ja3MuU3VicHJvY2Vzcy5Sb3V0ZSgKICAgICAgICAg
ICAgICAgICBzZWxmLmV4ZWN1dGFibGUsCiAgICAgICAgICAgICAgICAgY3dkPXNlbGYucGF0aCwK
QEAgLTU5MCwzNCArNjE2LDUwIEBAIG5vdGhpbmcgdG8gY29tbWl0LCB3b3JraW5nIHRyZWUgY2xl
YW4KICAgICBkZWYgY29uZmlnKGNvbnRleHQpOgogICAgICAgICBpZiBpc2luc3RhbmNlKGNvbnRl
eHQsIHR5cGUpOgogICAgICAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgICAgICAndXNlci5u
YW1lJzogJ3RhcHBsZUB3ZWJraXQub3JnJywKKyAgICAgICAgICAgICAgICAndXNlci5uYW1lJzog
J1RpbSBBcHBsZScsCisgICAgICAgICAgICAgICAgJ3VzZXIuZW1haWwnOiAndGFwcGxlQHdlYmtp
dC5vcmcnLAogICAgICAgICAgICAgICAgICdzZW5kZW1haWwudHJhbnNmZXJlbmNvZGluZyc6ICdi
YXNlNjQnLAogICAgICAgICAgICAgfQogCi0gICAgICAgICMgUGFyc2UgYSAuZ2l0L2NvbmZpZyB0
aGF0IGxvb2tzIGxpa2UgdGhpcwotICAgICAgICAjIFtjb3JlXQotICAgICAgICAjICAgICByZXBv
c2l0b3J5Zm9ybWF0dmVyc2lvbiA9IDAKLSAgICAgICAgIyBbYnJhbmNoICJtYWluIl0KLSAgICAg
ICAgIyAgICAgcmVtb3RlID0gb3JpZ2luCi0gICAgICAgICMgCSAgbWVyZ2UgPSByZWZzL2hlYWRz
L21haW4KLSAgICAgICAgUkVfU0lOR0xFX1RPUCA9IHJlLmNvbXBpbGUocideXFtccyooP1A8a2V5
PlxTKylccypcXScpCi0gICAgICAgIFJFX01VTFRJX1RPUCA9IHJlLmNvbXBpbGUocideXFtccyoo
P1A8a2V5YT5cUyspICIoP1A8a2V5Yj5cUyspIlxzKlxdJykKLSAgICAgICAgUkVfRUxFTUVOVCA9
IHJlLmNvbXBpbGUocideXHMrKD9QPGtleT5cUyspXHMqPVxzKig/UDx2YWx1ZT5cUyspJykKLQog
ICAgICAgICB0b3AgPSBOb25lCiAgICAgICAgIHJlc3VsdCA9IEdpdC5jb25maWcoKQogICAgICAg
ICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKGNvbnRleHQucGF0aCwgJy5naXQnLCAnY29uZmlnJyks
ICdyJykgYXMgY29uZmlnZmlsZToKICAgICAgICAgICAgIGZvciBsaW5lIGluIGNvbmZpZ2ZpbGUu
cmVhZGxpbmVzKCk6Ci0gICAgICAgICAgICAgICAgbWF0Y2ggPSBSRV9NVUxUSV9UT1AubWF0Y2go
bGluZSkKKyAgICAgICAgICAgICAgICBtYXRjaCA9IGNvbnRleHQuUkVfTVVMVElfVE9QLm1hdGNo
KGxpbmUpCiAgICAgICAgICAgICAgICAgaWYgbWF0Y2g6CiAgICAgICAgICAgICAgICAgICAgIHRv
cCA9ICd7fS57fScuZm9ybWF0KG1hdGNoLmdyb3VwKCdrZXlhJyksIG1hdGNoLmdyb3VwKCdrZXli
JykpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgbWF0Y2gg
PSBSRV9TSU5HTEVfVE9QLm1hdGNoKGxpbmUpCisgICAgICAgICAgICAgICAgbWF0Y2ggPSBjb250
ZXh0LlJFX1NJTkdMRV9UT1AubWF0Y2gobGluZSkKICAgICAgICAgICAgICAgICBpZiBtYXRjaDoK
ICAgICAgICAgICAgICAgICAgICAgdG9wID0gbWF0Y2guZ3JvdXAoJ2tleScpCiAgICAgICAgICAg
ICAgICAgICAgIGNvbnRpbnVlCiAKLSAgICAgICAgICAgICAgICBtYXRjaCA9IFJFX0VMRU1FTlQu
bWF0Y2gobGluZSkKKyAgICAgICAgICAgICAgICBtYXRjaCA9IGNvbnRleHQuUkVfRUxFTUVOVC5t
YXRjaChsaW5lKQogICAgICAgICAgICAgICAgIGlmIHRvcCBhbmQgbWF0Y2g6CiAgICAgICAgICAg
ICAgICAgICAgIHJlc3VsdFsne30ue30nLmZvcm1hdCh0b3AsIG1hdGNoLmdyb3VwKCdrZXknKSld
ID0gbWF0Y2guZ3JvdXAoJ3ZhbHVlJykKICAgICAgICAgcmV0dXJuIHJlc3VsdAorCisgICAgZGVm
IGVkaXRfY29uZmlnKHNlbGYsIGtleSwgdmFsdWUpOgorICAgICAgICB3aXRoIG9wZW4ob3MucGF0
aC5qb2luKHNlbGYucGF0aCwgJy5naXQnLCAnY29uZmlnJyksICdyJykgYXMgY29uZmlnZmlsZToK
KyAgICAgICAgICAgIGxpbmVzID0gW2xpbmUgZm9yIGxpbmUgaW4gY29uZmlnZmlsZS5yZWFkbGlu
ZXMoKV0KKworICAgICAgICBrZXlfYSA9IGtleS5zcGxpdCgnLicpWzBdCisgICAgICAgIGtleV9i
ID0gJy4nLmpvaW4oa2V5LnNwbGl0KCcuJylbMTpdKQorCisgICAgICAgIGRpZF9wcmludCA9IEZh
bHNlCisgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oc2VsZi5wYXRoLCAnLmdpdCcsICdj
b25maWcnKSwgJ3cnKSBhcyBjb25maWdmaWxlOgorICAgICAgICAgICAgZm9yIGxpbmUgaW4gbGlu
ZXM6CisgICAgICAgICAgICAgICAgbWF0Y2ggPSBzZWxmLlJFX0VMRU1FTlQubWF0Y2gobGluZSkK
KyAgICAgICAgICAgICAgICBpZiBub3QgbWF0Y2ggb3IgbWF0Y2guZ3JvdXAoJ2tleScpICE9IGtl
eV9iOgorICAgICAgICAgICAgICAgICAgICBjb25maWdmaWxlLndyaXRlKGxpbmUpCisgICAgICAg
ICAgICAgICAgbWF0Y2ggPSBzZWxmLlJFX01VTFRJX1RPUC5tYXRjaChsaW5lKQorICAgICAgICAg
ICAgICAgIGlmIG5vdCBtYXRjaCBvciAne30ue30nLmZvcm1hdChtYXRjaC5ncm91cCgna2V5YScp
LCBtYXRjaC5ncm91cCgna2V5YicpKSAhPSBrZXlfYToKKyAgICAgICAgICAgICAgICAgICAgY29u
dGludWUKKyAgICAgICAgICAgICAgICBjb25maWdmaWxlLndyaXRlKCdcdHt9PXt9XG4nLmZvcm1h
dChrZXlfYiwgdmFsdWUpKQorICAgICAgICAgICAgICAgIGRpZF9wcmludCA9IFRydWUKKworICAg
ICAgICAgICAgaWYgbm90IGRpZF9wcmludDoKKyAgICAgICAgICAgICAgICBjb25maWdmaWxlLndy
aXRlKCdbe31dXG4nLmZvcm1hdChrZXlfYSkpCisgICAgICAgICAgICAgICAgY29uZmlnZmlsZS53
cml0ZSgnXHR7fT17fVxuJy5mb3JtYXQoa2V5X2IsIHZhbHVlKSkKKworICAgICAgICByZXR1cm4g
bW9ja3MuUHJvY2Vzc0NvbXBsZXRpb24ocmV0dXJuY29kZT0wKQpkaWZmIC0tZ2l0IGEvVG9vbHMv
U2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbW9ja3MvcmVtb3RlL2dp
dF9odWIucHkgYi9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21w
eS9tb2Nrcy9yZW1vdGUvZ2l0X2h1Yi5weQppbmRleCBiN2E3MDFiZjhjZjU1NWUzMGE2MWRhNmFj
MGFhNjQyN2U4OGY5M2I2Li42YzY4MDRkOTA0MDI0MWRhM2U2YTFkZWY4Mzg5ZjZlZDdlMzJlNDI1
IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRz
Y21weS9tb2Nrcy9yZW1vdGUvZ2l0X2h1Yi5weQorKysgYi9Ub29scy9TY3JpcHRzL2xpYnJhcmll
cy93ZWJraXRzY21weS93ZWJraXRzY21weS9tb2Nrcy9yZW1vdGUvZ2l0X2h1Yi5weQpAQCAtMzks
NiArMzksNyBAQCBjbGFzcyBHaXRIdWIobW9ja3MuUmVxdWVzdHMpOgogCiAgICAgICAgIHNlbGYu
ZGVmYXVsdF9icmFuY2ggPSBkZWZhdWx0X2JyYW5jaAogICAgICAgICBzZWxmLnJlbW90ZSA9IHJl
bW90ZQorICAgICAgICBzZWxmLmZvcmtzID0gW10KICAgICAgICAgaG9zdG5hbWUgPSBzZWxmLnJl
bW90ZS5zcGxpdCgnLycpWzBdCiAgICAgICAgIHNlbGYuYXBpX3JlbW90ZSA9ICdhcGkue2hvc3Ru
YW1lfS9yZXBvcy97cmVwb30nLmZvcm1hdCgKICAgICAgICAgICAgIGhvc3RuYW1lPWhvc3RuYW1l
LApAQCAtNjIsNyArNjMsNyBAQCBjbGFzcyBHaXRIdWIobW9ja3MuUmVxdWVzdHMpOgogICAgIGRl
ZiBfX2VudGVyX18oc2VsZik6CiAgICAgICAgIHByZWZpeCA9IHNlbGYucmVtb3RlLnNwbGl0KCcv
JylbMF0ucmVwbGFjZSgnLicsICdfJykudXBwZXIoKQogICAgICAgICB1c2VybmFtZV9rZXkgPSAn
e31fVVNFUk5BTUUnLmZvcm1hdChwcmVmaXgpCi0gICAgICAgIHRva2VuX2tleSA9ICd7fV9BQ0NF
U1NfVE9LRU4nLmZvcm1hdChwcmVmaXgpCisgICAgICAgIHRva2VuX2tleSA9ICd7fV9UT0tFTicu
Zm9ybWF0KHByZWZpeCkKICAgICAgICAgc2VsZi5fZW52aXJvbm1lbnQgPSB7CiAgICAgICAgICAg
ICB1c2VybmFtZV9rZXk6IG9zLmVudmlyb24uZ2V0KHVzZXJuYW1lX2tleSksCiAgICAgICAgICAg
ICB0b2tlbl9rZXk6IG9zLmVudmlyb24uZ2V0KHRva2VuX2tleSksCkBAIC0zMTUsNCArMzE2LDI0
IEBAIGNsYXNzIEdpdEh1Yihtb2Nrcy5SZXF1ZXN0cyk6CiAgICAgICAgIGlmIHN0cmlwcGVkX3Vy
bC5zdGFydHN3aXRoKCd7fS90cmVlLycuZm9ybWF0KHNlbGYucmVtb3RlKSk6CiAgICAgICAgICAg
ICByZXR1cm4gc2VsZi5fcGFyZW50c19vZl9yZXF1ZXN0KHVybD11cmwsIHJlZj1zdHJpcHBlZF91
cmwuc3BsaXQoJy8nKVstMV0pCiAKKyAgICAgICAgIyBDaGVjayBmb3IgZXhpc3RhbmNlIG9mIGZv
cmtlZCByZXBvCisgICAgICAgIGlmIHN0cmlwcGVkX3VybC5zdGFydHN3aXRoKCd7fS9yZXBvcycu
Zm9ybWF0KHNlbGYuYXBpX3JlbW90ZS5zcGxpdCgnLycpWzBdKSkgYW5kIHN0cmlwcGVkX3VybC5z
cGxpdCgnLycpWy0xXSA9PSBzZWxmLnJlbW90ZS5zcGxpdCgnLycpWy0xXToKKyAgICAgICAgICAg
IHVzZXJuYW1lID0gc3RyaXBwZWRfdXJsLnNwbGl0KCcvJylbLTJdCisgICAgICAgICAgICBpZiB1
c2VybmFtZSBpbiBzZWxmLmZvcmtzIG9yIHVzZXJuYW1lID09IHNlbGYucmVtb3RlLnNwbGl0KCcv
JylbLTJdOgorICAgICAgICAgICAgICAgIHJldHVybiBtb2Nrcy5SZXNwb25zZS5mcm9tSnNvbihk
aWN0KAorICAgICAgICAgICAgICAgICAgICBvd21lcj1kaWN0KAorICAgICAgICAgICAgICAgICAg
ICAgICAgbG9naW49dXNlcm5hbWUsCisgICAgICAgICAgICAgICAgICAgICksIGZvcms9dXNlcm5h
bWUgaW4gc2VsZi5mb3JrcywKKyAgICAgICAgICAgICAgICAgICAgbmFtZT1zdHJpcHBlZF91cmwu
c3BsaXQoJy8nKVstMV0sCisgICAgICAgICAgICAgICAgICAgIGZ1bGxfbmFtZT0nLycuam9pbihz
dHJpcHBlZF91cmwuc3BsaXQoJy8nKVstMjpdKSwKKyAgICAgICAgICAgICAgICApLCB1cmw9dXJs
KQorICAgICAgICAgICAgcmV0dXJuIG1vY2tzLlJlc3BvbnNlLmNyZWF0ZTQwNCh1cmwpCisKKyAg
ICAgICAgIyBBZGQgZm9yaworICAgICAgICBpZiBzdHJpcHBlZF91cmwuc3RhcnRzd2l0aCgne30v
Zm9ya3MnLmZvcm1hdChzZWxmLmFwaV9yZW1vdGUpKSBhbmQgbWV0aG9kID09ICdQT1NUJzoKKyAg
ICAgICAgICAgIHVzZXJuYW1lID0ga3dhcmdzLmdldCgnanNvbicsIHt9KS5nZXQoJ293bmVyJywg
Tm9uZSkKKyAgICAgICAgICAgIGlmIHVzZXJuYW1lOgorICAgICAgICAgICAgICAgIHNlbGYuZm9y
a3MuYXBwZW5kKHVzZXJuYW1lKQorICAgICAgICAgICAgcmV0dXJuIG1vY2tzLlJlc3BvbnNlLmZy
b21Kc29uKHt9KSBpZiB1c2VybmFtZSBlbHNlIG1vY2tzLlJlc3BvbnNlLmNyZWF0ZTQwNCh1cmwp
CisKICAgICAgICAgcmV0dXJuIG1vY2tzLlJlc3BvbnNlLmNyZWF0ZTQwNCh1cmwpCmRpZmYgLS1n
aXQgYS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9wcm9n
cmFtL19faW5pdF9fLnB5IGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Vi
a2l0c2NtcHkvcHJvZ3JhbS9fX2luaXRfXy5weQppbmRleCAyZjllMDQ3Nzk5NjRhMGIyMzMzODJk
MGM2NjU1NzlmNTViMGNmYzk3Li4xNTc4ZGQ5NmU4MTViNjYzMzUxMmMyYWI2MDlhNzM1YjRjYWY4
ZTBlIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJr
aXRzY21weS9wcm9ncmFtL19faW5pdF9fLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVz
L3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Byb2dyYW0vX19pbml0X18ucHkKQEAgLTMzLDYgKzMz
LDcgQEAgZnJvbSAuZmluZCBpbXBvcnQgRmluZCwgSW5mbwogZnJvbSAubG9nIGltcG9ydCBMb2cK
IGZyb20gLnB1bGwgaW1wb3J0IFB1bGwKIGZyb20gLnNldHVwX2dpdF9zdm4gaW1wb3J0IFNldHVw
R2l0U3ZuCitmcm9tIC5zZXR1cCBpbXBvcnQgU2V0dXAKIAogZnJvbSB3ZWJraXRjb3JlcHkgaW1w
b3J0IGFyZ3VtZW50cywgbG9nIGFzIHdlYmtpdGNvcmVweV9sb2cKIGZyb20gd2Via2l0c2NtcHkg
aW1wb3J0IGxvY2FsLCBsb2csIHJlbW90ZQpAQCAtNjMsNyArNjQsNyBAQCBkZWYgbWFpbihhcmdz
PU5vbmUsIHBhdGg9Tm9uZSwgbG9nZ2Vycz1Ob25lLCBjb250cmlidXRvcnM9Tm9uZSwgaWRlbnRp
Zmllcl90ZW1wbAogCiAgICAgc3VicGFyc2VycyA9IHBhcnNlci5hZGRfc3VicGFyc2VycyhoZWxw
PSdzdWItY29tbWFuZCBoZWxwJykKIAotICAgIHByb2dyYW1zID0gW0ZpbmQsIEluZm8sIENoZWNr
b3V0LCBDYW5vbmljYWxpemUsIFB1bGwsIENsZWFuLCBMb2csIEJsYW1lXQorICAgIHByb2dyYW1z
ID0gW0ZpbmQsIEluZm8sIENoZWNrb3V0LCBDYW5vbmljYWxpemUsIFB1bGwsIENsZWFuLCBMb2cs
IEJsYW1lLCBTZXR1cF0KICAgICBpZiBzdWJ2ZXJzaW9uOgogICAgICAgICBwcm9ncmFtcy5hcHBl
bmQoU2V0dXBHaXRTdm4pCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dl
YmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Byb2dyYW0vc2V0dXAucHkgYi9Ub29scy9TY3JpcHRzL2xp
YnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9wcm9ncmFtL3NldHVwLnB5Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmNlOTNmYzg0MzQ1YjYyYzEwNGI5YTAwZDEzODdhMzhlZjhjNjg5ZGUKLS0tIC9kZXYvbnVs
bAorKysgYi9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9w
cm9ncmFtL3NldHVwLnB5CkBAIC0wLDAgKzEsMjEzIEBACisjIENvcHlyaWdodCAoQykgMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
IyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5E
CisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
IyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorCitpbXBvcnQgcmVxdWVzdHMKK2ltcG9ydCBzeXMKKworZnJvbSAuY29t
bWFuZCBpbXBvcnQgQ29tbWFuZAorZnJvbSByZXF1ZXN0cy5hdXRoIGltcG9ydCBIVFRQQmFzaWNB
dXRoCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgYXJndW1lbnRzLCBydW4sIFRlcm1pbmFsCitm
cm9tIHdlYmtpdHNjbXB5IGltcG9ydCBsb2csIGxvY2FsLCByZW1vdGUKKworCitjbGFzcyBTZXR1
cChDb21tYW5kKToKKyAgICBuYW1lID0gJ3NldHVwJworICAgIGhlbHAgPSAnQ29uZmlndXJlIGxv
Y2FsIHNldHRpbmdzIGZvciB0aGUgY3VycmVudCByZXBvc2l0b3J5JworCisgICAgQGNsYXNzbWV0
aG9kCisgICAgZGVmIGdpdGh1YihjbHMsIGFyZ3MsIHJlcG9zaXRvcnksICoqa3dhcmdzKToKKyAg
ICAgICAgbG9nLndhcm5pbmcoJ1NhdmluZyBHaXRIdWIgY3JlZGVudGlhbHMgaW4gc3lzdGVtIGNy
ZWRlbnRpYWwgc3RvcmUuLi4nKQorICAgICAgICB1c2VybmFtZSwgYWNjZXNzX3Rva2VuID0gcmVw
b3NpdG9yeS5jcmVkZW50aWFscyhyZXF1aXJlZD1UcnVlKQorICAgICAgICBsb2cud2FybmluZygn
R2l0SHViIGNyZWRlbnRpYWxzIHNhdmVkIHZpYSBLZXlyaW5nIScpCisKKyAgICAgICAgbG9nLndh
cm5pbmcoJ1ZlcmlmeWluZyB1c2VyIG93bmVkIGZvcmsuLi4nKQorICAgICAgICBhdXRoID0gSFRU
UEJhc2ljQXV0aCh1c2VybmFtZSwgYWNjZXNzX3Rva2VuKQorICAgICAgICByZXNwb25zZSA9IHJl
cXVlc3RzLmdldCgne30vcmVwb3Mve30ve30nLmZvcm1hdCgKKyAgICAgICAgICAgIHJlcG9zaXRv
cnkuYXBpX3VybCwKKyAgICAgICAgICAgIHVzZXJuYW1lLAorICAgICAgICAgICAgcmVwb3NpdG9y
eS5uYW1lLAorICAgICAgICApLCBhdXRoPWF1dGgsIGhlYWRlcnM9ZGljdChBY2NlcHQ9J2FwcGxp
Y2F0aW9uL3ZuZC5naXRodWIudjMranNvbicpKQorICAgICAgICBpZiByZXNwb25zZS5zdGF0dXNf
Y29kZSA9PSAyMDA6CisgICAgICAgICAgICBsb2cud2FybmluZygiVXNlciBhbHJlYWR5IG93bnMg
YSBmb3JrIG9mICd7fSchIi5mb3JtYXQocmVwb3NpdG9yeS5uYW1lKSkKKyAgICAgICAgICAgIHJl
dHVybiAwCisKKyAgICAgICAgaWYgcmVwb3NpdG9yeS5vd25lciA9PSB1c2VybmFtZSBvciBhcmdz
LmRlZmF1bHRzIG9yIFRlcm1pbmFsLmNob29zZSgKKyAgICAgICAgICAgICJDcmVhdGUgYSBwcml2
YXRlIGZvcmsgb2YgJ3t9JyBiZWxvbmdpbmcgdG8gJ3t9JyIuZm9ybWF0KHJlcG9zaXRvcnkubmFt
ZSwgdXNlcm5hbWUpLAorICAgICAgICAgICAgZGVmYXVsdD0nTm8nLAorICAgICAgICApID09ICdO
byc6CisgICAgICAgICAgICBsb2cud2FybmluZygiQ29udGludWluZyB3aXRob3V0IGZvcmtpbmcg
J3t9JyIuZm9ybWF0KHJlcG9zaXRvcnkubmFtZSkpCisgICAgICAgICAgICByZXR1cm4gMQorCisg
ICAgICAgIHJlc3BvbnNlID0gcmVxdWVzdHMucG9zdCgne30vcmVwb3Mve30ve30vZm9ya3MnLmZv
cm1hdCgKKyAgICAgICAgICAgIHJlcG9zaXRvcnkuYXBpX3VybCwKKyAgICAgICAgICAgIHJlcG9z
aXRvcnkub3duZXIsCisgICAgICAgICAgICByZXBvc2l0b3J5Lm5hbWUsCisgICAgICAgICksIGpz
b249ZGljdCgKKyAgICAgICAgICAgIG93bmVyPXVzZXJuYW1lLAorICAgICAgICAgICAgZGVzY3Jp
cHRpb249Int9J3MgZm9yayBvZiB7fSIuZm9ybWF0KHVzZXJuYW1lLCByZXBvc2l0b3J5Lm5hbWUp
LAorICAgICAgICAgICAgcHJpdmF0ZT1UcnVlLAorICAgICAgICApLCBhdXRoPWF1dGgsIGhlYWRl
cnM9ZGljdChBY2NlcHQ9J2FwcGxpY2F0aW9uL3ZuZC5naXRodWIudjMranNvbicpKQorICAgICAg
ICBpZiByZXNwb25zZS5zdGF0dXNfY29kZSBub3QgaW4gKDIwMCwgMjAyKToKKyAgICAgICAgICAg
IHN5cy5zdGRlcnIud3JpdGUoIkZhaWxlZCB0byBjcmVhdGUgYSBmb3JrIG9mICd7fScgYmVsb25n
aW5nIHRvICd7fSdcbiIuZm9ybWF0KHJlcG9zaXRvcnkubmFtZSwgdXNlcm5hbWUpKQorICAgICAg
ICAgICAgcmV0dXJuIDEKKyAgICAgICAgbG9nLndhcm5pbmcoIkNyZWF0ZWQgYSBwcml2YXRlIGZv
cmsgb2YgJ3t9JyBiZWxvbmdpbmcgdG8gJ3t9JyEiLmZvcm1hdChyZXBvc2l0b3J5Lm5hbWUsIHVz
ZXJuYW1lKSkKKyAgICAgICAgcmV0dXJuIDAKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBn
aXQoY2xzLCBhcmdzLCByZXBvc2l0b3J5LCAqKmt3YXJncyk6CisgICAgICAgIGdsb2JhbF9jb25m
aWcgPSBsb2NhbC5HaXQuY29uZmlnKCkKKyAgICAgICAgcmVzdWx0ID0gMAorCisgICAgICAgIGVt
YWlsID0gZ2xvYmFsX2NvbmZpZy5nZXQoJ3VzZXIuZW1haWwnKQorICAgICAgICBsb2cud2Fybmlu
ZygnU2V0dGluZyBnaXQgdXNlciBlbWFpbCBmb3Ige30uLi4nLmZvcm1hdChyZXBvc2l0b3J5LnJv
b3RfcGF0aCkpCisgICAgICAgIGlmIG5vdCBlbWFpbCBvciBhcmdzLmRlZmF1bHRzIGlzIEZhbHNl
IG9yIChub3QgYXJncy5kZWZhdWx0cyBhbmQgVGVybWluYWwuY2hvb3NlKAorICAgICAgICAgICAg
IlNldCAne30nIGFzIHRoZSBnaXQgdXNlciBlbWFpbCIuZm9ybWF0KGVtYWlsKSwKKyAgICAgICAg
ICAgIGRlZmF1bHQ9J1llcycsCisgICAgICAgICkgPT0gJ05vJyk6CisgICAgICAgICAgICBlbWFp
bCA9IFRlcm1pbmFsLmlucHV0KCdHaXQgdXNlciBlbWFpbDogJykKKworICAgICAgICBpZiBydW4o
CisgICAgICAgICAgICBbbG9jYWwuR2l0LmV4ZWN1dGFibGUoKSwgJ2NvbmZpZycsICd1c2VyLmVt
YWlsJywgZW1haWxdLCBjYXB0dXJlX291dHB1dD1UcnVlLCBjd2Q9cmVwb3NpdG9yeS5yb290X3Bh
dGgsCisgICAgICAgICkucmV0dXJuY29kZToKKyAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUo
J0ZhaWxlZCB0byBzZXQgdGhlIGdpdCB1c2VyIGVtYWlsIHRvIHt9XG4nLmZvcm1hdChlbWFpbCkp
CisgICAgICAgICAgICByZXN1bHQgKz0gMQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbG9n
Lndhcm5pbmcoIlNldCBnaXQgdXNlciBlbWFpbCB0byAne30nIi5mb3JtYXQoZW1haWwpKQorCisg
ICAgICAgIG5hbWUgPSByZXBvc2l0b3J5LmNvbnRyaWJ1dG9ycy5nZXQoZW1haWwpCisgICAgICAg
IGlmIG5hbWU6CisgICAgICAgICAgICBuYW1lID0gbmFtZS5uYW1lCisgICAgICAgIGVsc2U6Cisg
ICAgICAgICAgICBuYW1lID0gZ2xvYmFsX2NvbmZpZy5nZXQoJ3VzZXIubmFtZScpCisgICAgICAg
IGxvZy53YXJuaW5nKCdTZXR0aW5nIGdpdCB1c2VyIG5hbWUgZm9yIHt9Li4uJy5mb3JtYXQocmVw
b3NpdG9yeS5yb290X3BhdGgpKQorICAgICAgICBpZiBub3QgbmFtZSBvciBhcmdzLmRlZmF1bHRz
IGlzIEZhbHNlIG9yIChub3QgYXJncy5kZWZhdWx0cyBhbmQgVGVybWluYWwuY2hvb3NlKAorICAg
ICAgICAgICAgIlNldCAne30nIGFzIHRoZSBnaXQgdXNlciBuYW1lIi5mb3JtYXQobmFtZSksCisg
ICAgICAgICAgICBkZWZhdWx0PSdZZXMnLAorICAgICAgICApID09ICdObycpOgorICAgICAgICAg
ICAgbmFtZSA9IFRlcm1pbmFsLmlucHV0KCdHaXQgdXNlciBuYW1lOiAnKQorICAgICAgICBpZiBy
dW4oCisgICAgICAgICAgICBbbG9jYWwuR2l0LmV4ZWN1dGFibGUoKSwgJ2NvbmZpZycsICd1c2Vy
Lm5hbWUnLCBuYW1lXSwgY2FwdHVyZV9vdXRwdXQ9VHJ1ZSwgY3dkPXJlcG9zaXRvcnkucm9vdF9w
YXRoLAorICAgICAgICApLnJldHVybmNvZGU6CisgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRl
KCdGYWlsZWQgdG8gc2V0IHRoZSBnaXQgdXNlciBuYW1lIHRvIHt9XG4nLmZvcm1hdChuYW1lKSkK
KyAgICAgICAgICAgIHJlc3VsdCArPSAxCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBsb2cu
d2FybmluZygiU2V0IGdpdCB1c2VyIG5hbWUgdG8gJ3t9JyIuZm9ybWF0KG5hbWUpKQorCisgICAg
ICAgIGxvZy53YXJuaW5nKCdTZXR0aW5nIGJldHRlciBPYmplY3RpdmUtQyBkaWZmaW5nIGJlaGF2
aW9yLi4uJykKKyAgICAgICAgcmVzdWx0ICs9IHJ1bigKKyAgICAgICAgICAgIFtsb2NhbC5HaXQu
ZXhlY3V0YWJsZSgpLCAnY29uZmlnJywgJ2RpZmYub2JqY3BwLnhmdW5jbmFtZScsICdeWy0rQGEt
ekEtWl9dLiokJ10sCisgICAgICAgICAgICBjYXB0dXJlX291dHB1dD1UcnVlLCBjd2Q9cmVwb3Np
dG9yeS5yb290X3BhdGgsCisgICAgICAgICkucmV0dXJuY29kZQorICAgICAgICByZXN1bHQgKz0g
cnVuKAorICAgICAgICAgICAgW2xvY2FsLkdpdC5leGVjdXRhYmxlKCksICdjb25maWcnLCAnZGlm
Zi5vYmpjcHBoZWFkZXIueGZ1bmNuYW1lJywgJ15bQGEtekEtWl9dLiokJ10sCisgICAgICAgICAg
ICBjYXB0dXJlX291dHB1dD1UcnVlLCBjd2Q9cmVwb3NpdG9yeS5yb290X3BhdGgsCisgICAgICAg
ICkucmV0dXJuY29kZQorICAgICAgICBsb2cud2FybmluZygnU2V0IGJldHRlciBPYmplY3RpdmUt
QyBkaWZmaW5nIGJlaGF2aW9yIScpCisKKyAgICAgICAgaWYgYXJncy5kZWZhdWx0cyBvciBUZXJt
aW5hbC5jaG9vc2UoCisgICAgICAgICAgICAnQXV0by1jb2xvciBzdGF0dXMsIGRpZmYsIGFuZCBi
cmFuY2g/Jy5mb3JtYXQoZW1haWwpLAorICAgICAgICAgICAgZGVmYXVsdD0nWWVzJywKKyAgICAg
ICAgKSA9PSAnWWVzJzoKKyAgICAgICAgICAgIGZvciBjb21tYW5kIGluICgnc3RhdHVzJywgJ2Rp
ZmYnLCAnYnJhbmNoJyk6CisgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHJ1bigKKyAgICAgICAg
ICAgICAgICAgICAgW2xvY2FsLkdpdC5leGVjdXRhYmxlKCksICdjb25maWcnLCAnY29sb3Iue30n
LmZvcm1hdChjb21tYW5kKSwgJ2F1dG8nXSwKKyAgICAgICAgICAgICAgICAgICAgY2FwdHVyZV9v
dXRwdXQ9VHJ1ZSwgY3dkPXJlcG9zaXRvcnkucm9vdF9wYXRoLAorICAgICAgICAgICAgICAgICku
cmV0dXJuY29kZQorCisgICAgICAgIGxvZy53YXJuaW5nKCdVc2luZyB7fSBtZXJnZSBzdHJhdGVn
eScuZm9ybWF0KCdtZXJnZSBjb21taXRzIGFzIGEnIGlmIGFyZ3MubWVyZ2UgZWxzZSAnYSByZWJh
c2UnKSkKKyAgICAgICAgaWYgcnVuKAorICAgICAgICAgICAgW2xvY2FsLkdpdC5leGVjdXRhYmxl
KCksICdjb25maWcnLCAncHVsbC5yZWJhc2UnLCAnZmFsc2UnIGlmIGFyZ3MubWVyZ2UgZWxzZSAn
dHJ1ZSddLAorICAgICAgICAgICAgY2FwdHVyZV9vdXRwdXQ9VHJ1ZSwgY3dkPXJlcG9zaXRvcnku
cm9vdF9wYXRoLAorICAgICAgICApLnJldHVybmNvZGU6CisgICAgICAgICAgICBzeXMuc3RkZXJy
LndyaXRlKCdGYWlsZWQgdG8gdXNlIHt9IGFzIHRoZSBtZXJnZSBzdHJhdGVneVxuJy5mb3JtYXQo
J21lcmdlIGNvbW1pdHMnIGlmIGFyZ3MubWVyZ2UgZWxzZSAncmViYXNlJykpCisgICAgICAgICAg
ICByZXN1bHQgKz0gMQorCisgICAgICAgICMgT25seSBjb25maWd1cmUgR2l0SHViIGlmIHRoZSBV
UkwgaXMgYSBHaXRIdWIgVVJMCisgICAgICAgIHJtdCA9IHJlcG9zaXRvcnkucmVtb3RlKCkKKyAg
ICAgICAgaWYgbm90IGlzaW5zdGFuY2Uocm10LCByZW1vdGUuR2l0SHViKToKKyAgICAgICAgICAg
IHJldHVybiByZXN1bHQKKworICAgICAgICBjb2RlID0gY2xzLmdpdGh1YihhcmdzLCBybXQsICoq
a3dhcmdzKQorICAgICAgICByZXN1bHQgKz0gY29kZQorICAgICAgICBpZiBjb2RlOgorICAgICAg
ICAgICAgcmV0dXJuIHJlc3VsdAorCisgICAgICAgIHVzZXJuYW1lLCBfID0gcm10LmNyZWRlbnRp
YWxzKHJlcXVpcmVkPVRydWUpCisgICAgICAgIGxvZy53YXJuaW5nKCJBZGRpbmcgZm9ya2VkIHJl
bW90ZSBhcyAne30nIGFuZCAnZm9yaycuLi4iLmZvcm1hdCh1c2VybmFtZSkpCisgICAgICAgIHVy
bCA9IHJlcG9zaXRvcnkudXJsKCkKKworICAgICAgICBpZiAnOi8vJyBpbiB1cmw6CisgICAgICAg
ICAgICBmb3JrX3JlbW90ZSA9ICd7fTovL3t9L3t9L3t9LmdpdCcuZm9ybWF0KHVybC5zcGxpdCgn
OicpWzBdLCB1cmwuc3BsaXQoJy8nKVsyXSwgdXNlcm5hbWUsIHJtdC5uYW1lKQorICAgICAgICBl
bGlmICc6JyBpbiB1cmw6CisgICAgICAgICAgICBmb3JrX3JlbW90ZSA9ICd7fTp7fS97fS5naXQn
LmZvcm1hdCh1cmwuc3BsaXQoJzonKVswXSwgdXNlcm5hbWUsIHJtdC5uYW1lKQorICAgICAgICBl
bHNlOgorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArIDEKKworICAgICAgICBhdmFpbGFibGVf
cmVtb3RlcyA9IFtdCisgICAgICAgIGZvciBuYW1lIGluIFt1c2VybmFtZSwgJ2ZvcmsnXToKKyAg
ICAgICAgICAgIHJldHVybmNvZGUgPSBydW4oCisgICAgICAgICAgICAgICAgW3JlcG9zaXRvcnku
ZXhlY3V0YWJsZSgpLCAncmVtb3RlJywgJ2FkZCcsIG5hbWUsIGZvcmtfcmVtb3RlXSwKKyAgICAg
ICAgICAgICAgICBjYXB0dXJlX291dHB1dD1UcnVlLCBjd2Q9cmVwb3NpdG9yeS5yb290X3BhdGgs
CisgICAgICAgICAgICApLnJldHVybmNvZGUKKyAgICAgICAgICAgIGlmIHJldHVybmNvZGUgPT0g
MzoKKyAgICAgICAgICAgICAgICByZXR1cm5jb2RlID0gcnVuKAorICAgICAgICAgICAgICAgICAg
ICBbcmVwb3NpdG9yeS5leGVjdXRhYmxlKCksICdyZW1vdGUnLCAnc2V0LXVybCcsIG5hbWUsIGZv
cmtfcmVtb3RlXSwKKyAgICAgICAgICAgICAgICAgICAgY2FwdHVyZV9vdXRwdXQ9VHJ1ZSwgY3dk
PXJlcG9zaXRvcnkucm9vdF9wYXRoLAorICAgICAgICAgICAgICAgICkucmV0dXJuY29kZQorICAg
ICAgICAgICAgaWYgcmV0dXJuY29kZToKKyAgICAgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRl
KCJGYWlsZWQgdG8gYWRkIHJlbW90ZSAne30nXG4iLmZvcm1hdChuYW1lKSkKKyAgICAgICAgICAg
ICAgICByZXN1bHQgKz0gMQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBhdmFp
bGFibGVfcmVtb3Rlcy5hcHBlbmQobmFtZSkKKyAgICAgICAgICAgICAgICBsb2cud2FybmluZygi
QWRkZWQgcmVtb3RlICd7fSciLmZvcm1hdChuYW1lKSkKKworICAgICAgICBpZiAnZm9yaycgbm90
IGluIGF2YWlsYWJsZV9yZW1vdGVzOgorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAorICAgICAg
ICBsb2cud2FybmluZygiRmV0Y2hpbmcgJ3t9JyIuZm9ybWF0KGZvcmtfcmVtb3RlKSkKKyAgICAg
ICAgcmV0dXJuIHJ1bigKKyAgICAgICAgICAgIFtyZXBvc2l0b3J5LmV4ZWN1dGFibGUoKSwgJ2Zl
dGNoJywgJ2ZvcmsnXSwKKyAgICAgICAgICAgIGNhcHR1cmVfb3V0cHV0PVRydWUsIGN3ZD1yZXBv
c2l0b3J5LnJvb3RfcGF0aCwKKyAgICAgICAgKS5yZXR1cm5jb2RlCisKKyAgICBAY2xhc3NtZXRo
b2QKKyAgICBkZWYgcGFyc2VyKGNscywgcGFyc2VyLCBsb2dnZXJzPU5vbmUpOgorICAgICAgICBw
YXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAgICAgJy0tZGVmYXVsdHMnLCAnLS1uby1kZWZh
dWx0cycsIGFjdGlvbj1hcmd1bWVudHMuTm9BY3Rpb24sIGRlZmF1bHQ9Tm9uZSwKKyAgICAgICAg
ICAgIGhlbHA9J0RvIG5vdCBwcm9tcHQgdGhlIHVzZXIgZm9yIGRlZmF1bHRzLCBhbHdheXMgdXNl
IChvciBkbyBub3QgdXNlKSB0aGVtJywKKyAgICAgICAgKQorICAgICAgICBwYXJzZXIuYWRkX2Fy
Z3VtZW50KAorICAgICAgICAgICAgJy0tbWVyZ2UnLCAnLS1uby1tZXJnZScsIGFjdGlvbj1hcmd1
bWVudHMuTm9BY3Rpb24sIGRlZmF1bHQ9RmFsc2UsCisgICAgICAgICAgICBoZWxwPSdVc2UgYSBt
ZXJnZS1jb21taXQgd29ya2Zsb3cgaW5zdGVhZCBvZiBhIHJlYmFzZSB3b3JrZmxvdycsCisgICAg
ICAgICkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBtYWluKGNscywgYXJncywgcmVwb3Np
dG9yeSwgKiprd2FyZ3MpOgorICAgICAgICBpZiBpc2luc3RhbmNlKHJlcG9zaXRvcnksIGxvY2Fs
LkdpdCk6CisgICAgICAgICAgICByZXR1cm4gY2xzLmdpdChhcmdzLCByZXBvc2l0b3J5LCAqKmt3
YXJncykKKworICAgICAgICBpZiBpc2luc3RhbmNlKHJlcG9zaXRvcnksIHJlbW90ZS5HaXRIdWIp
OgorICAgICAgICAgICAgcmV0dXJuIGNscy5naXRodWIoYXJncywgcmVwb3NpdG9yeSwgKiprd2Fy
Z3MpCisKKyAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgnTm8gc2V0dXAgcmVxdWlyZWQgZm9yIHt9
XG4nLmZvcm1hdCgKKyAgICAgICAgICAgIGdldGF0dHIocmVwb3NpdG9yeSwgJ3Jvb3RfcGF0aCcs
IGdldGF0dHIocmVwb3NpdG9yeSwgJ3VybCcsICc/JykpLAorICAgICAgICApKQorICAgICAgICBy
ZXR1cm4gMQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkv
d2Via2l0c2NtcHkvcmVtb3RlL2dpdF9odWIucHkgYi9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93
ZWJraXRzY21weS93ZWJraXRzY21weS9yZW1vdGUvZ2l0X2h1Yi5weQppbmRleCBlNGZlNTMzNmE0
MjlhNjdmNzRmMDE5OWU4ZDYyZjhmY2JkZWQ2MzUyLi41M2QzN2UzYjE1YjVmODE3MmVhYzBkNmQ3
OTJkZTg5ZWEyYWYwZDZkIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJr
aXRzY21weS93ZWJraXRzY21weS9yZW1vdGUvZ2l0X2h1Yi5weQorKysgYi9Ub29scy9TY3JpcHRz
L2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9yZW1vdGUvZ2l0X2h1Yi5weQpAQCAt
MSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDIwLCAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjMsMTMgKzYzLDE2
IEBAIGNsYXNzIEdpdEh1YihTY20pOgogICAgICAgICApCiAKICAgICBkZWYgY3JlZGVudGlhbHMo
c2VsZiwgcmVxdWlyZWQ9VHJ1ZSk6Ci0gICAgICAgIHJldHVybiBjcmVkZW50aWFscygKKyAgICAg
ICAgdXNlcm5hbWUsIHRva2VuID0gY3JlZGVudGlhbHMoCiAgICAgICAgICAgICB1cmw9c2VsZi5h
cGlfdXJsLAogICAgICAgICAgICAgcmVxdWlyZWQ9cmVxdWlyZWQsCiAgICAgICAgICAgICBuYW1l
PXNlbGYudXJsLnNwbGl0KCcvJylbMl0ucmVwbGFjZSgnLicsICdfJykudXBwZXIoKSwKLSAgICAg
ICAgICAgIHByb21wdD0iR2l0SHViJ3MgQVBJXG5QbGVhc2UgZ2VuZXJhdGUgYSAnUGVyc29uYWwg
YWNjZXNzIHRva2VuJyB2aWEgJ0RldmVsb3BlciBzZXR0aW5ncycgZm9yIHlvdXIgdXNlciIsCisg
ICAgICAgICAgICBwcm9tcHQ9IkdpdEh1YidzIEFQSVxuUGxlYXNlIGdlbmVyYXRlIGEgJ1BlcnNv
bmFsIGFjY2VzcyB0b2tlbicgdmlhICdEZXZlbG9wZXIgc2V0dGluZ3MnIGZvciB5b3VyIHVzZXIg
d2l0aCAncmVwbycgYW5kICd3b3JrZmxvdycgYWNjZXNzIiwKICAgICAgICAgICAgIGtleV9uYW1l
PSd0b2tlbicsCiAgICAgICAgICkKKyAgICAgICAgaWYgdXNlcm5hbWU6CisgICAgICAgICAgICB1
c2VybmFtZSA9IHVzZXJuYW1lLnNwbGl0KCdAJylbMF0KKyAgICAgICAgcmV0dXJuIHVzZXJuYW1l
LCB0b2tlbgogCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIGlzX2dpdChzZWxmKToKZGlmZiAtLWdp
dCBhL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Rlc3Qv
Z2l0X3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Vi
a2l0c2NtcHkvdGVzdC9naXRfdW5pdHRlc3QucHkKaW5kZXggNmJlMzIzYWNkYjFhM2QzNjQzZWVm
NmI3MjU1M2U1NGJiYTc3NzU4OC4uNjIxNzdiNDBjYjhkYzZkZThkMTVjMjNkMjczYzA1N2Q5YmZk
ZGQ2MiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Vi
a2l0c2NtcHkvdGVzdC9naXRfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy9saWJyYXJp
ZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvdGVzdC9naXRfdW5pdHRlc3QucHkKQEAgLTQxMSw3
ICs0MTEsNyBAQCBDb21taXREYXRlOiBTYXQgT2N0IDAzIDAyOjA2OjQwIDIwMjAgKzAwMDAKICAg
ICAgICAgd2l0aCBtb2Nrcy5sb2NhbC5HaXQoc2VsZi5wYXRoLCBnaXRfc3ZuPVRydWUpIGFzIG06
CiAgICAgICAgICAgICByZXBvID0gbG9jYWwuR2l0KHNlbGYucGF0aCkKIAotICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChyZXBvLmNvbmZpZygpWyd1c2VyLm5hbWUnXSwgJ3RhcHBsZUB3ZWJr
aXQub3JnJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwby5jb25maWcoKVsndXNl
ci5uYW1lJ10sICdUaW0gQXBwbGUnKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXBv
LmNvbmZpZygpWydjb3JlLmZpbGVtb2RlJ10sICd0cnVlJykKICAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwocmVwby5jb25maWcoKVsncmVtb3RlLm9yaWdpbi51cmwnXSwgJ2dpdEBleGFtcGxl
Lm9yZzovbW9jay9yZXBvc2l0b3J5JykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVw
by5jb25maWcoKVsnc3ZuLXJlbW90ZS5zdm4udXJsJ10sICdodHRwczovL3N2bi5leGFtcGxlLm9y
Zy9yZXBvc2l0b3J5L3dlYmtpdCcpCkBAIC00MTksNyArNDE5LDcgQEAgQ29tbWl0RGF0ZTogU2F0
IE9jdCAwMyAwMjowNjo0MCAyMDIwICswMDAwCiAKICAgICBkZWYgdGVzdF9nbG9iYWxfY29uZmln
KHNlbGYpOgogICAgICAgICB3aXRoIG1vY2tzLmxvY2FsLkdpdChzZWxmLnBhdGgsIGdpdF9zdm49
VHJ1ZSksIE91dHB1dENhcHR1cmUoKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9j
YWwuR2l0LmNvbmZpZygpWyd1c2VyLm5hbWUnXSwgJ3RhcHBsZUB3ZWJraXQub3JnJykKKyAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9jYWwuR2l0LmNvbmZpZygpWyd1c2VyLm5hbWUnXSwg
J1RpbSBBcHBsZScpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvY2FsLkdpdC5jb25m
aWcoKVsnc2VuZGVtYWlsLnRyYW5zZmVyZW5jb2RpbmcnXSwgJ2Jhc2U2NCcpCiAKIApkaWZmIC0t
Z2l0IGEvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvdGVz
dC9zZXR1cF91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5
L3dlYmtpdHNjbXB5L3Rlc3Qvc2V0dXBfdW5pdHRlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWNhY2ZhZGQ5
NTkxMTAxYThhZGNlZGVlNjQ3NTA1OTUwNjc2NGJlYQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xz
L1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Rlc3Qvc2V0dXBfdW5p
dHRlc3QucHkKQEAgLTAsMCArMSwxMzcgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBh
cmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyMgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgor
IyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
CisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisKK2ltcG9ydCBvcworCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgT3V0cHV0Q2Fw
dHVyZSwgdGVzdGluZworZnJvbSB3ZWJraXRjb3JlcHkubW9ja3MgaW1wb3J0IFRpbWUgYXMgTW9j
a1RpbWUsIFRlcm1pbmFsIGFzIE1vY2tUZXJtaW5hbAorZnJvbSB3ZWJraXRzY21weSBpbXBvcnQg
cHJvZ3JhbSwgbW9ja3MKKworCitjbGFzcyBUZXN0U2V0dXAodGVzdGluZy5QYXRoVGVzdENhc2Up
OgorICAgIGJhc2VwYXRoID0gJ21vY2svcmVwb3NpdG9yeScKKworICAgIGRlZiBzZXRVcChzZWxm
KToKKyAgICAgICAgc3VwZXIoVGVzdFNldHVwLCBzZWxmKS5zZXRVcCgpCisgICAgICAgIG9zLm1r
ZGlyKG9zLnBhdGguam9pbihzZWxmLnBhdGgsICcuZ2l0JykpCisgICAgICAgIG9zLm1rZGlyKG9z
LnBhdGguam9pbihzZWxmLnBhdGgsICcuc3ZuJykpCisKKyAgICBkZWYgdGVzdF9zdm4oc2VsZik6
CisgICAgICAgIHdpdGggT3V0cHV0Q2FwdHVyZSgpIGFzIGNhcHR1cmVkLCBtb2Nrcy5sb2NhbC5H
aXQoKSwgbW9ja3MubG9jYWwuU3ZuKHNlbGYucGF0aCk6CisgICAgICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKDEsIHByb2dyYW0ubWFpbigKKyAgICAgICAgICAgICAgICBhcmdzPSgnc2V0dXAnLCks
CisgICAgICAgICAgICAgICAgcGF0aD1zZWxmLnBhdGgsCisgICAgICAgICAgICApKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGNhcHR1cmVkLnN0ZGVyci5nZXR2YWx1ZSgpLCAnTm8gc2V0dXAg
cmVxdWlyZWQgZm9yIHt9XG4nLmZvcm1hdChzZWxmLnBhdGgpKQorCisgICAgZGVmIHRlc3RfZ2l0
aHViKHNlbGYpOgorICAgICAgICB3aXRoIE91dHB1dENhcHR1cmUoKSBhcyBjYXB0dXJlZCwgTW9j
a1Rlcm1pbmFsLmlucHV0KCd5JyksIG1vY2tzLnJlbW90ZS5HaXRIdWIoKSBhcyByZW1vdGU6Cisg
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHByb2dyYW0ubWFpbigKKyAgICAgICAgICAg
ICAgICBhcmdzPSgnLUMnLCAnaHR0cHM6Ly97fScuZm9ybWF0KHJlbW90ZS5yZW1vdGUpLCAnc2V0
dXAnKSwKKyAgICAgICAgICAgICAgICBwYXRoPXNlbGYucGF0aCwKKyAgICAgICAgICAgICkpCisK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjYXB0dXJlZC5zdGRvdXQuZ2V0dmFsdWUoKSwgIkNy
ZWF0ZSBhIHByaXZhdGUgZm9yayBvZiAnV2ViS2l0JyBiZWxvbmdpbmcgdG8gJ3VzZXJuYW1lJyAo
WWVzL05vKTogXG4iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhcHR1cmVkLnN0ZGVyci5n
ZXR2YWx1ZSgpLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGNh
cHR1cmVkLnJvb3QubG9nLmdldHZhbHVlKCksCisgICAgICAgICAgICAnJydTYXZpbmcgR2l0SHVi
IGNyZWRlbnRpYWxzIGluIHN5c3RlbSBjcmVkZW50aWFsIHN0b3JlLi4uCitHaXRIdWIgY3JlZGVu
dGlhbHMgc2F2ZWQgdmlhIEtleXJpbmchCitWZXJpZnlpbmcgdXNlciBvd25lZCBmb3JrLi4uCitD
cmVhdGVkIGEgcHJpdmF0ZSBmb3JrIG9mICdXZWJLaXQnIGJlbG9uZ2luZyB0byAndXNlcm5hbWUn
IQorJycnLAorICAgICAgICApCisKKyAgICBkZWYgdGVzdF9naXQoc2VsZik6CisgICAgICAgIHdp
dGggT3V0cHV0Q2FwdHVyZSgpIGFzIGNhcHR1cmVkLCBtb2Nrcy5sb2NhbC5HaXQoc2VsZi5wYXRo
KSBhcyByZXBvLCBtb2Nrcy5sb2NhbC5Tdm4oKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoMCwgcHJvZ3JhbS5tYWluKAorICAgICAgICAgICAgICAgIGFyZ3M9KCdzZXR1cCcsICctLWRl
ZmF1bHRzJyksCisgICAgICAgICAgICAgICAgcGF0aD1zZWxmLnBhdGgsCisgICAgICAgICAgICAp
KQorCisgICAgICAgICAgICBjb25maWcgPSByZXBvLmNvbmZpZygpCisgICAgICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKCdeWy0rQGEtekEtWl9dLiokJywgY29uZmlnLmdldCgnZGlmZi5vYmpjcHAu
eGZ1bmNuYW1lJywgJycpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXltAYS16QS1a
X10uKiQnLCBjb25maWcuZ2V0KCdkaWZmLm9iamNwcGhlYWRlci54ZnVuY25hbWUnLCAnJykpCisg
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdhdXRvJywgY29uZmlnLmdldCgnY29sb3Iuc3Rh
dHVzJywgJycpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnYXV0bycsIGNvbmZpZy5n
ZXQoJ2NvbG9yLmRpZmYnLCAnJykpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdhdXRv
JywgY29uZmlnLmdldCgnY29sb3IuYnJhbmNoJywgJycpKQorICAgICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgndHJ1ZScsIGNvbmZpZy5nZXQoJ3B1bGwucmViYXNlJywgJycpKQorCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoY2FwdHVyZWQuc3Rkb3V0LmdldHZhbHVlKCksICcnKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGNhcHR1cmVkLnN0ZGVyci5nZXR2YWx1ZSgpLCAnJykKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGNhcHR1cmVkLnJvb3QubG9nLmdldHZh
bHVlKCksCisgICAgICAgICAgICAnJydTZXR0aW5nIGdpdCB1c2VyIGVtYWlsIGZvciB7cmVwb3Np
dG9yeX0uLi4KK1NldCBnaXQgdXNlciBlbWFpbCB0byAndGFwcGxlQHdlYmtpdC5vcmcnCitTZXR0
aW5nIGdpdCB1c2VyIG5hbWUgZm9yIHtyZXBvc2l0b3J5fS4uLgorU2V0IGdpdCB1c2VyIG5hbWUg
dG8gJ1RpbSBBcHBsZScKK1NldHRpbmcgYmV0dGVyIE9iamVjdGl2ZS1DIGRpZmZpbmcgYmVoYXZp
b3IuLi4KK1NldCBiZXR0ZXIgT2JqZWN0aXZlLUMgZGlmZmluZyBiZWhhdmlvciEKK1VzaW5nIGEg
cmViYXNlIG1lcmdlIHN0cmF0ZWd5CisnJycuZm9ybWF0KHJlcG9zaXRvcnk9c2VsZi5wYXRoKSwK
KyAgICAgICAgKQorCisgICAgZGVmIHRlc3RfZ2l0aHViX2NoZWNrb3V0KHNlbGYpOgorICAgICAg
ICB3aXRoIE91dHB1dENhcHR1cmUoKSBhcyBjYXB0dXJlZCwgbW9ja3MucmVtb3RlLkdpdEh1Yigp
IGFzIHJlbW90ZSwgXAorICAgICAgICAgICAgTW9ja1Rlcm1pbmFsLmlucHV0KCduJywgJ2NvbW1p
dHRlckB3ZWJraXQub3JnJywgJ24nLCAnQ29tbWl0dGVyJywgJ24nLCAneScpLCBcCisgICAgICAg
ICAgICBtb2Nrcy5sb2NhbC5HaXQoc2VsZi5wYXRoLCByZW1vdGU9J2h0dHBzOi8ve30nLmZvcm1h
dChyZW1vdGUucmVtb3RlKSkgYXMgcmVwbzoKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgwLCBwcm9ncmFtLm1haW4oCisgICAgICAgICAgICAgICAgYXJncz0oJ3NldHVwJywpLAorICAg
ICAgICAgICAgICAgIHBhdGg9c2VsZi5wYXRoLAorICAgICAgICAgICAgKSkKKworICAgICAgICAg
ICAgY29uZmlnID0gcmVwby5jb25maWcoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbign
Y29sb3Iuc3RhdHVzJywgY29uZmlnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnQ29t
bWl0dGVyJywgY29uZmlnLmdldCgndXNlci5uYW1lJywgJycpKQorICAgICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgnY29tbWl0dGVyQHdlYmtpdC5vcmcnLCBjb25maWcuZ2V0KCd1c2VyLmVtYWls
JywgJycpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBjYXB0dXJl
ZC5zdGRvdXQuZ2V0dmFsdWUoKSwKKyAgICAgICAgICAgICcnJ1NldCAndGFwcGxlQHdlYmtpdC5v
cmcnIGFzIHRoZSBnaXQgdXNlciBlbWFpbCAoWWVzL05vKTogCitHaXQgdXNlciBlbWFpbDogCitT
ZXQgJ1RpbSBBcHBsZScgYXMgdGhlIGdpdCB1c2VyIG5hbWUgKFllcy9Obyk6IAorR2l0IHVzZXIg
bmFtZTogCitBdXRvLWNvbG9yIHN0YXR1cywgZGlmZiwgYW5kIGJyYW5jaD8gKFllcy9Obyk6IAor
Q3JlYXRlIGEgcHJpdmF0ZSBmb3JrIG9mICdXZWJLaXQnIGJlbG9uZ2luZyB0byAndXNlcm5hbWUn
IChZZXMvTm8pOiAKKycnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjYXB0dXJlZC5zdGRl
cnIuZ2V0dmFsdWUoKSwgJycpCisgICAgICAgIHNlbGYubWF4RGlmZiA9IE5vbmUKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGNhcHR1cmVkLnJvb3QubG9nLmdldHZhbHVl
KCksCisgICAgICAgICAgICAnJydTZXR0aW5nIGdpdCB1c2VyIGVtYWlsIGZvciB7cmVwb3NpdG9y
eX0uLi4KK1NldCBnaXQgdXNlciBlbWFpbCB0byAnY29tbWl0dGVyQHdlYmtpdC5vcmcnCitTZXR0
aW5nIGdpdCB1c2VyIG5hbWUgZm9yIHtyZXBvc2l0b3J5fS4uLgorU2V0IGdpdCB1c2VyIG5hbWUg
dG8gJ0NvbW1pdHRlcicKK1NldHRpbmcgYmV0dGVyIE9iamVjdGl2ZS1DIGRpZmZpbmcgYmVoYXZp
b3IuLi4KK1NldCBiZXR0ZXIgT2JqZWN0aXZlLUMgZGlmZmluZyBiZWhhdmlvciEKK1VzaW5nIGEg
cmViYXNlIG1lcmdlIHN0cmF0ZWd5CitTYXZpbmcgR2l0SHViIGNyZWRlbnRpYWxzIGluIHN5c3Rl
bSBjcmVkZW50aWFsIHN0b3JlLi4uCitHaXRIdWIgY3JlZGVudGlhbHMgc2F2ZWQgdmlhIEtleXJp
bmchCitWZXJpZnlpbmcgdXNlciBvd25lZCBmb3JrLi4uCitDcmVhdGVkIGEgcHJpdmF0ZSBmb3Jr
IG9mICdXZWJLaXQnIGJlbG9uZ2luZyB0byAndXNlcm5hbWUnIQorQWRkaW5nIGZvcmtlZCByZW1v
dGUgYXMgJ3VzZXJuYW1lJyBhbmQgJ2ZvcmsnLi4uCitBZGRlZCByZW1vdGUgJ3VzZXJuYW1lJwor
QWRkZWQgcmVtb3RlICdmb3JrJworRmV0Y2hpbmcgJ2h0dHBzOi8vZ2l0aHViLmV4YW1wbGUuY29t
L3VzZXJuYW1lL1dlYktpdC5naXQnCisnJycuZm9ybWF0KHJlcG9zaXRvcnk9c2VsZi5wYXRoKSwK
KyAgICAgICAgKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435043</attachid>
            <date>2021-08-05 17:24:14 -0700</date>
            <delta_ts>2021-08-06 15:16:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225985-20210805172413.patch</filename>
            <type>text/plain</type>
            <size>33630</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNzA2CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOWRlZjJlZmIwNDVkN2FmMmI0ZWM2ZGYyNmJmNWQxOGUz
NGNkM2Y3Yy4uMmVlOWIyMDY0YjA1YWFiZDExMGRmYmY3MjJjNTRmZDNlYzU1Njc1MCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2
IEBACisyMDIxLTA4LTA1ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbZ2l0LXdlYmtpdF0gQWRkIHNldHVwIGZ1bmN0aW9uCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU5ODUKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzc4MjI2NzI5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3NldHVwLnB5OiBCdW1w
IHZlcnNpb24uCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtp
dGNvcmVweS9fX2luaXRfXy5weTogRGl0dG8uCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMv
d2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9jcmVkZW50aWFscy5weToKKyAgICAgICAgKGNyZWRl
bnRpYWxzKTogS2V5IHNob3VsZCBiZSBwdWxsZWQgZnJvbSBlbnZpcm9ubWVudCB2YXJpYWJsZSB3
aXRoIGtleV9uYW1lIGluIGl0LgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNj
bXB5L3NldHVwLnB5OiBCdW1wIHZlcnNpb24uCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMv
d2Via2l0c2NtcHkvd2Via2l0c2NtcHkvX19pbml0X18ucHk6IERpdHRvLgorICAgICAgICAqIFNj
cmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L21vY2tzL2xvY2FsL2dpdC5w
eToKKyAgICAgICAgKEdpdCk6IE1vdmUgY29uZmlnIHJlZ2V4ZXMuCisgICAgICAgIChHaXQuX19p
bml0X18pOiBBZGQgYGdpdCByZW1vdGUgYWRkYCwgYGdpdCBjb25maWdgIGFuZCBgZ2l0IGZldGNo
IGZvcmtgLgorICAgICAgICAoR2l0LmNvbmZpZyk6IEFkZCB1c2VyLmVtYWlsIHRvIGRlZmF1bHQg
Y29uZmlndXJhdGlvbi4KKyAgICAgICAgKEdpdC5lZGl0X2NvbmZpZyk6IE1vZGlmeSBjb25maWd1
cmF0aW9uIGZpbGUuCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Vi
a2l0c2NtcHkvbW9ja3MvcmVtb3RlL2dpdF9odWIucHk6CisgICAgICAgIChHaXRIdWIpOiBBZGQg
bGlzdCBvZiBmb3Jrcy4KKyAgICAgICAgKEdpdEh1Yi5fX2VudGVyX18pOiBDb3JyZWN0bHkgbW9j
ayB0b2tlbi4KKyAgICAgICAgKEdpdEh1Yi5yZXF1ZXN0KTogQWRkIGZvcmsgY2hlY2sgYW5kIGZv
cmsgYWRkaXRpb24uCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Vi
a2l0c2NtcHkvcHJvZ3JhbS9fX2luaXRfXy5weToKKyAgICAgICAgKG1haW4pOiBBZGQgc2V0dXAg
ZnVuY3Rpb24uCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0
c2NtcHkvcmVtb3RlL2dpdF9odWIucHk6CisgICAgICAgIChHaXRIdWIuY3JlZGVudGlhbHMpOiBT
dHJpcCBlbWFpbCBkb21haW4sIGd1aWRlIHVzZXIgb24gdG9rZW4gcGVybWlzc2lvbnMuCisgICAg
ICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvcHJvZ3JhbS9z
ZXR1cC5weTogQWRkZWQuCisgICAgICAgIChTZXR1cC5naXRodWIpOiBFbnN1cmUgdGhhdCBHaXRI
dWIgY3JlZGVudGlhbHMgYXJlIGluIHRoZSBrZXljaGFpbi4KKyAgICAgICAgKFNldHVwLmdpdCk6
IFNldCB0aGUgdXNlciBmb3IgdGhlIHJlcG9zaXRvcnksIGFsb25nIHdpdGggbWVyZ2Ugc3RyYXRl
Z3kuCisgICAgICAgIChTZXR1cC5wYXJzZXIpOgorICAgICAgICAoU2V0dXAubWFpbik6CisgICAg
ICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvdGVzdC9naXRf
dW5pdHRlc3QucHk6CisgICAgICAgICh0ZXN0X2NvbmZpZyk6IENoYW5nZSB1c2VyIG5hbWUuCisg
ICAgICAgICh0ZXN0X2dsb2JhbF9jb25maWcpOiBEaXR0by4KKyAgICAgICAgKiBTY3JpcHRzL2xp
YnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS90ZXN0L3NldHVwX3VuaXR0ZXN0LnB5OiBB
ZGRlZC4KKyAgICAgICAgKFRlc3RTZXR1cCk6CisgICAgICAgIChUZXN0U2V0dXAuc2V0VXApOgor
ICAgICAgICAoVGVzdFNldHVwLnRlc3Rfc3ZuKToKKyAgICAgICAgKFRlc3RTZXR1cC50ZXN0X2dp
dGh1Yik6CisgICAgICAgIChUZXN0U2V0dXAudGVzdF9naXQpOgorICAgICAgICAoVGVzdFNldHVw
LnRlc3RfZ2l0aHViX2NoZWNrb3V0KToKKwogMjAyMS0wOC0wNSAgS2F0ZSBDaGVuZXkgIDxrYXRo
ZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KIAogICAgICAgICBMb2FkV2ViQXJjaGl2ZS5GYWlsTmF2
aWdhdGlvbjEgdGVzdCBpcyBhIGZhbHNlIHBvc2l0aXZlCmRpZmYgLS1naXQgYS9Ub29scy9TY3Jp
cHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvc2V0dXAucHkgYi9Ub29scy9TY3JpcHRzL2xpYnJh
cmllcy93ZWJraXRjb3JlcHkvc2V0dXAucHkKaW5kZXggMWU4NmVmMTMyMmNiODlkNGRjZGY0ZWU1
OTNhNjM1M2ZjZTVjOGQxZS4uOWU1OGZkYTI3ZTQxOWM3MDVlZGU0OGRlYWIwMmZhNjY3OWE0MTVm
MCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3NldHVw
LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS9zZXR1cC5weQpA
QCAtMzAsNyArMzAsNyBAQCBkZWYgcmVhZG1lKCk6CiAKIHNldHVwKAogICAgIG5hbWU9J3dlYmtp
dGNvcmVweScsCi0gICAgdmVyc2lvbj0nMC44LjAnLAorICAgIHZlcnNpb249JzAuOC4xJywKICAg
ICBkZXNjcmlwdGlvbj0nTGlicmFyeSBjb250YWluaW5nIHZhcmlvdXMgUHl0aG9uIHN1cHBvcnQg
Y2xhc3NlcyBhbmQgZnVuY3Rpb25zLicsCiAgICAgbG9uZ19kZXNjcmlwdGlvbj1yZWFkbWUoKSwK
ICAgICBjbGFzc2lmaWVycz1bCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93
ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L19faW5pdF9fLnB5IGIvVG9vbHMvU2NyaXB0cy9saWJy
YXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9fX2luaXRfXy5weQppbmRleCAxMmJkOTZj
YThmZjRhOGIxNDc3ZGU5Y2YzYzM5OTNlNGUwMjY3NWQ1Li5mNjVkMWQxNGRiNTExNDRiNTMzODBh
M2NmZWJkMjIzMTIyNTA3MDJkIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93
ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L19faW5pdF9fLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMv
bGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvX19pbml0X18ucHkKQEAgLTQwLDcg
KzQwLDcgQEAgZnJvbSB3ZWJraXRjb3JlcHkuY3JlZGVudGlhbHMgaW1wb3J0IGNyZWRlbnRpYWxz
CiBmcm9tIHdlYmtpdGNvcmVweS5tZWFzdXJlX3RpbWUgaW1wb3J0IE1lYXN1cmVUaW1lCiBmcm9t
IHdlYmtpdGNvcmVweS5uZXN0ZWRfZnV6enlfZGljdCBpbXBvcnQgTmVzdGVkRnV6enlEaWN0CiAK
LXZlcnNpb24gPSBWZXJzaW9uKDAsIDgsIDApCit2ZXJzaW9uID0gVmVyc2lvbigwLCA4LCAxKQog
CiBmcm9tIHdlYmtpdGNvcmVweS5hdXRvaW5zdGFsbCBpbXBvcnQgUGFja2FnZSwgQXV0b0luc3Rh
bGwKIGlmIHN5cy52ZXJzaW9uX2luZm8gPiAoMywgMCk6CmRpZmYgLS1naXQgYS9Ub29scy9TY3Jp
cHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L2NyZWRlbnRpYWxzLnB5IGIv
VG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9jcmVkZW50
aWFscy5weQppbmRleCBlY2IzOWRlYmY2OGM5NWU3M2U5YzhmOGJlZDA1YmE4N2Y5MjNlOGVkLi4w
YmFkNjdmMjllNjhkMzRkNDNjYjg1ZGE1ZWJkNjNmZjg3M2E0MTk0IDEwMDY0NAotLS0gYS9Ub29s
cy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L2NyZWRlbnRpYWxz
LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3Jl
cHkvY3JlZGVudGlhbHMucHkKQEAgLTM4LDcgKzM4LDcgQEAgZGVmIGNyZWRlbnRpYWxzKHVybCwg
cmVxdWlyZWQ9VHJ1ZSwgbmFtZT1Ob25lLCBwcm9tcHQ9Tm9uZSwga2V5X25hbWU9J3Bhc3N3b3Jk
JykKICAgICAgICAgcmV0dXJuIF9jYWNoZS5nZXQobmFtZSkKIAogICAgIHVzZXJuYW1lID0gb3Mu
ZW52aXJvbi5nZXQoJ3t9X1VTRVJOQU1FJy5mb3JtYXQobmFtZS51cHBlcigpKSkKLSAgICBrZXkg
PSBvcy5lbnZpcm9uLmdldCgne31fe30nLmZvcm1hdChuYW1lLnVwcGVyKCksIG5hbWUudXBwZXIo
KSkpCisgICAga2V5ID0gb3MuZW52aXJvbi5nZXQoJ3t9X3t9Jy5mb3JtYXQobmFtZS51cHBlcigp
LCBrZXlfbmFtZS51cHBlcigpKSkKIAogICAgIGlmIHVzZXJuYW1lIGFuZCBrZXk6CiAgICAgICAg
IF9jYWNoZVtuYW1lXSA9ICh1c2VybmFtZSwga2V5KQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0
cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvc2V0dXAucHkgYi9Ub29scy9TY3JpcHRzL2xpYnJhcmll
cy93ZWJraXRzY21weS9zZXR1cC5weQppbmRleCBjZjUyOTg2MjQ3ODM3YjI0MWU2ZDg4NWExZmQ1
Yzk1NzY4ZmRiNmM0Li40Y2VlNWVjZTY4ZDRlNmRmMTE5MDY1MmI0OGRmNWZkM2VlYjc0MTVhIDEw
MDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS9zZXR1cC5weQor
KysgYi9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS9zZXR1cC5weQpAQCAtMjks
NyArMjksNyBAQCBkZWYgcmVhZG1lKCk6CiAKIHNldHVwKAogICAgIG5hbWU9J3dlYmtpdHNjbXB5
JywKLSAgICB2ZXJzaW9uPScxLjAuNicsCisgICAgdmVyc2lvbj0nMS4xLjAnLAogICAgIGRlc2Ny
aXB0aW9uPSdMaWJyYXJ5IGRlc2lnbmVkIHRvIGludGVyYWN0IHdpdGggZ2l0IGFuZCBzdm4gcmVw
b3NpdG9yaWVzLicsCiAgICAgbG9uZ19kZXNjcmlwdGlvbj1yZWFkbWUoKSwKICAgICBjbGFzc2lm
aWVycz1bCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93
ZWJraXRzY21weS9fX2luaXRfXy5weSBiL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNj
bXB5L3dlYmtpdHNjbXB5L19faW5pdF9fLnB5CmluZGV4IDVmZDc2MDNmMTYwYTg0M2NlY2M0YjEz
NjRjMGVjZWRlYjhhMmIzMDcuLjMwMTYwNGRlODY5OTQzZWQyZDAzYjVmOWVhMmJlMWQ4MDE2Yjkx
YWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtp
dHNjbXB5L19faW5pdF9fLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNj
bXB5L3dlYmtpdHNjbXB5L19faW5pdF9fLnB5CkBAIC00Niw3ICs0Niw3IEBAIGV4Y2VwdCBJbXBv
cnRFcnJvcjoKICAgICAgICAgIlBsZWFzZSBpbnN0YWxsIHdlYmtpdGNvcmVweSB3aXRoIGBwaXAg
aW5zdGFsbCB3ZWJraXRjb3JlcHkgLS1leHRyYS1pbmRleC11cmwgPHBhY2thZ2UgaW5kZXggVVJM
PmAiCiAgICAgKQogCi12ZXJzaW9uID0gVmVyc2lvbigxLCAwLCA2KQordmVyc2lvbiA9IFZlcnNp
b24oMSwgMSwgMCkKIAogQXV0b0luc3RhbGwucmVnaXN0ZXIoUGFja2FnZSgnZmFzdGVuZXJzJywg
VmVyc2lvbigwLCAxNSwgMCkpKQogQXV0b0luc3RhbGwucmVnaXN0ZXIoUGFja2FnZSgnbW9ub3Rv
bmljJywgVmVyc2lvbigxLCA1KSkpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL2xpYnJhcmll
cy93ZWJraXRzY21weS93ZWJraXRzY21weS9tb2Nrcy9sb2NhbC9naXQucHkgYi9Ub29scy9TY3Jp
cHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9tb2Nrcy9sb2NhbC9naXQucHkK
aW5kZXggMDM2YTk4NTQ0MjhmYWVjZmE0ODE5N2RiMzc3OWE4NDVlMmZhNDMzYi4uODU4YzZiNmQ2
MDMxNDg2ZjJlMjhiNmZjMjUyZGViOGY0N2ViYjIzYyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0
cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbW9ja3MvbG9jYWwvZ2l0LnB5Cisr
KyBiL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L21vY2tz
L2xvY2FsL2dpdC5weQpAQCAtMzUsNiArMzUsMTUgQEAgZnJvbSB3ZWJraXRzY21weS5wcm9ncmFt
LmNhbm9uaWNhbGl6ZS5tZXNzYWdlIGltcG9ydCBtYWluIGFzIG1lc3NhZ2VfbWFpbgogCiAKIGNs
YXNzIEdpdChtb2Nrcy5TdWJwcm9jZXNzKToKKyAgICAjIFBhcnNlIGEgLmdpdC9jb25maWcgdGhh
dCBsb29rcyBsaWtlIHRoaXMKKyAgICAjIFtjb3JlXQorICAgICMgICAgIHJlcG9zaXRvcnlmb3Jt
YXR2ZXJzaW9uID0gMAorICAgICMgW2JyYW5jaCAibWFpbiJdCisgICAgIyAgICAgcmVtb3RlID0g
b3JpZ2luCisgICAgIyAJICBtZXJnZSA9IHJlZnMvaGVhZHMvbWFpbgorICAgIFJFX1NJTkdMRV9U
T1AgPSByZS5jb21waWxlKHInXlxbXHMqKD9QPGtleT5cUyspXHMqXF0nKQorICAgIFJFX01VTFRJ
X1RPUCA9IHJlLmNvbXBpbGUocideXFtccyooP1A8a2V5YT5cUyspICIoP1A8a2V5Yj5cUyspIlxz
KlxdJykKKyAgICBSRV9FTEVNRU5UID0gcmUuY29tcGlsZShyJ15ccysoP1A8a2V5PlxTKylccyo9
XHMqKD9QPHZhbHVlPlxTKyknKQogCiAgICAgZGVmIF9faW5pdF9fKAogICAgICAgICBzZWxmLCBw
YXRoPScvLmludmFsaWQtZ2l0JywgZGF0YWZpbGU9Tm9uZSwKQEAgLTE4OCw2ICsxOTcsMTIgQEAg
bm90aGluZyB0byBjb21taXQsIHdvcmtpbmcgdHJlZSBjbGVhbgogICAgICAgICAgICAgICAgICAg
ICByZXR1cm5jb2RlPTEyOCwKICAgICAgICAgICAgICAgICAgICAgc3RkZXJyPSJmYXRhbDogTm8g
c3VjaCByZW1vdGUgJ3t9J1xuIi5mb3JtYXQoYXJnc1szXSksCiAgICAgICAgICAgICAgICAgKSwK
KyAgICAgICAgICAgICksIG1vY2tzLlN1YnByb2Nlc3MuUm91dGUoCisgICAgICAgICAgICAgICAg
c2VsZi5leGVjdXRhYmxlLCAncmVtb3RlJywgJ2FkZCcsIHJlLmNvbXBpbGUocicuKycpLAorICAg
ICAgICAgICAgICAgIGN3ZD1zZWxmLnBhdGgsCisgICAgICAgICAgICAgICAgY29tcGxldGlvbj1t
b2Nrcy5Qcm9jZXNzQ29tcGxldGlvbigKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuY29kZT0w
LAorICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICApLCBtb2Nrcy5TdWJwcm9jZXNzLlJv
dXRlKAogICAgICAgICAgICAgICAgIHNlbGYuZXhlY3V0YWJsZSwgJ2JyYW5jaCcsICctYScsCiAg
ICAgICAgICAgICAgICAgY3dkPXNlbGYucGF0aCwKQEAgLTM1NCw2ICszNjksMTcgQEAgbm90aGlu
ZyB0byBjb21taXQsIHdvcmtpbmcgdHJlZSBjbGVhbgogICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuY29kZT0wLAogICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PSdcbicuam9pbihb
J3t9PXt9Jy5mb3JtYXQoa2V5LCB2YWx1ZSkgZm9yIGtleSwgdmFsdWUgaW4gR2l0LmNvbmZpZygp
Lml0ZW1zKCldKQogICAgICAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgKSwgbW9ja3Mu
U3VicHJvY2Vzcy5Sb3V0ZSgKKyAgICAgICAgICAgICAgICBzZWxmLmV4ZWN1dGFibGUsICdjb25m
aWcnLCByZS5jb21waWxlKHInLisnKSwgcmUuY29tcGlsZShyJy4rJyksCisgICAgICAgICAgICAg
ICAgY3dkPXNlbGYucGF0aCwKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3I9bGFtYmRhICphcmdz
LCAqKmt3YXJnczoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5lZGl0X2NvbmZpZyhhcmdzWzJd
LCBhcmdzWzNdKSwKKyAgICAgICAgICAgICksIG1vY2tzLlN1YnByb2Nlc3MuUm91dGUoCisgICAg
ICAgICAgICAgICAgc2VsZi5leGVjdXRhYmxlLCAnZmV0Y2gnLCAnZm9yaycsCisgICAgICAgICAg
ICAgICAgY3dkPXNlbGYucGF0aCwKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9uPW1vY2tzLlBy
b2Nlc3NDb21wbGV0aW9uKAorICAgICAgICAgICAgICAgICAgICByZXR1cm5jb2RlPTAsCisgICAg
ICAgICAgICAgICAgKSwKICAgICAgICAgICAgICksIG1vY2tzLlN1YnByb2Nlc3MuUm91dGUoCiAg
ICAgICAgICAgICAgICAgc2VsZi5leGVjdXRhYmxlLAogICAgICAgICAgICAgICAgIGN3ZD1zZWxm
LnBhdGgsCkBAIC01OTAsMzQgKzYxNiw1MCBAQCBub3RoaW5nIHRvIGNvbW1pdCwgd29ya2luZyB0
cmVlIGNsZWFuCiAgICAgZGVmIGNvbmZpZyhjb250ZXh0KToKICAgICAgICAgaWYgaXNpbnN0YW5j
ZShjb250ZXh0LCB0eXBlKToKICAgICAgICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICAgICAg
J3VzZXIubmFtZSc6ICd0YXBwbGVAd2Via2l0Lm9yZycsCisgICAgICAgICAgICAgICAgJ3VzZXIu
bmFtZSc6ICdUaW0gQXBwbGUnLAorICAgICAgICAgICAgICAgICd1c2VyLmVtYWlsJzogJ3RhcHBs
ZUB3ZWJraXQub3JnJywKICAgICAgICAgICAgICAgICAnc2VuZGVtYWlsLnRyYW5zZmVyZW5jb2Rp
bmcnOiAnYmFzZTY0JywKICAgICAgICAgICAgIH0KIAotICAgICAgICAjIFBhcnNlIGEgLmdpdC9j
b25maWcgdGhhdCBsb29rcyBsaWtlIHRoaXMKLSAgICAgICAgIyBbY29yZV0KLSAgICAgICAgIyAg
ICAgcmVwb3NpdG9yeWZvcm1hdHZlcnNpb24gPSAwCi0gICAgICAgICMgW2JyYW5jaCAibWFpbiJd
Ci0gICAgICAgICMgICAgIHJlbW90ZSA9IG9yaWdpbgotICAgICAgICAjIAkgIG1lcmdlID0gcmVm
cy9oZWFkcy9tYWluCi0gICAgICAgIFJFX1NJTkdMRV9UT1AgPSByZS5jb21waWxlKHInXlxbXHMq
KD9QPGtleT5cUyspXHMqXF0nKQotICAgICAgICBSRV9NVUxUSV9UT1AgPSByZS5jb21waWxlKHIn
XlxbXHMqKD9QPGtleWE+XFMrKSAiKD9QPGtleWI+XFMrKSJccypcXScpCi0gICAgICAgIFJFX0VM
RU1FTlQgPSByZS5jb21waWxlKHInXlxzKyg/UDxrZXk+XFMrKVxzKj1ccyooP1A8dmFsdWU+XFMr
KScpCi0KICAgICAgICAgdG9wID0gTm9uZQogICAgICAgICByZXN1bHQgPSBHaXQuY29uZmlnKCkK
ICAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihjb250ZXh0LnBhdGgsICcuZ2l0JywgJ2Nv
bmZpZycpLCAncicpIGFzIGNvbmZpZ2ZpbGU6CiAgICAgICAgICAgICBmb3IgbGluZSBpbiBjb25m
aWdmaWxlLnJlYWRsaW5lcygpOgotICAgICAgICAgICAgICAgIG1hdGNoID0gUkVfTVVMVElfVE9Q
Lm1hdGNoKGxpbmUpCisgICAgICAgICAgICAgICAgbWF0Y2ggPSBjb250ZXh0LlJFX01VTFRJX1RP
UC5tYXRjaChsaW5lKQogICAgICAgICAgICAgICAgIGlmIG1hdGNoOgogICAgICAgICAgICAgICAg
ICAgICB0b3AgPSAne30ue30nLmZvcm1hdChtYXRjaC5ncm91cCgna2V5YScpLCBtYXRjaC5ncm91
cCgna2V5YicpKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAg
IG1hdGNoID0gUkVfU0lOR0xFX1RPUC5tYXRjaChsaW5lKQorICAgICAgICAgICAgICAgIG1hdGNo
ID0gY29udGV4dC5SRV9TSU5HTEVfVE9QLm1hdGNoKGxpbmUpCiAgICAgICAgICAgICAgICAgaWYg
bWF0Y2g6CiAgICAgICAgICAgICAgICAgICAgIHRvcCA9IG1hdGNoLmdyb3VwKCdrZXknKQogICAg
ICAgICAgICAgICAgICAgICBjb250aW51ZQogCi0gICAgICAgICAgICAgICAgbWF0Y2ggPSBSRV9F
TEVNRU5ULm1hdGNoKGxpbmUpCisgICAgICAgICAgICAgICAgbWF0Y2ggPSBjb250ZXh0LlJFX0VM
RU1FTlQubWF0Y2gobGluZSkKICAgICAgICAgICAgICAgICBpZiB0b3AgYW5kIG1hdGNoOgogICAg
ICAgICAgICAgICAgICAgICByZXN1bHRbJ3t9Lnt9Jy5mb3JtYXQodG9wLCBtYXRjaC5ncm91cCgn
a2V5JykpXSA9IG1hdGNoLmdyb3VwKCd2YWx1ZScpCiAgICAgICAgIHJldHVybiByZXN1bHQKKwor
ICAgIGRlZiBlZGl0X2NvbmZpZyhzZWxmLCBrZXksIHZhbHVlKToKKyAgICAgICAgd2l0aCBvcGVu
KG9zLnBhdGguam9pbihzZWxmLnBhdGgsICcuZ2l0JywgJ2NvbmZpZycpLCAncicpIGFzIGNvbmZp
Z2ZpbGU6CisgICAgICAgICAgICBsaW5lcyA9IFtsaW5lIGZvciBsaW5lIGluIGNvbmZpZ2ZpbGUu
cmVhZGxpbmVzKCldCisKKyAgICAgICAga2V5X2EgPSBrZXkuc3BsaXQoJy4nKVswXQorICAgICAg
ICBrZXlfYiA9ICcuJy5qb2luKGtleS5zcGxpdCgnLicpWzE6XSkKKworICAgICAgICBkaWRfcHJp
bnQgPSBGYWxzZQorICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKHNlbGYucGF0aCwgJy5n
aXQnLCAnY29uZmlnJyksICd3JykgYXMgY29uZmlnZmlsZToKKyAgICAgICAgICAgIGZvciBsaW5l
IGluIGxpbmVzOgorICAgICAgICAgICAgICAgIG1hdGNoID0gc2VsZi5SRV9FTEVNRU5ULm1hdGNo
KGxpbmUpCisgICAgICAgICAgICAgICAgaWYgbm90IG1hdGNoIG9yIG1hdGNoLmdyb3VwKCdrZXkn
KSAhPSBrZXlfYjoKKyAgICAgICAgICAgICAgICAgICAgY29uZmlnZmlsZS53cml0ZShsaW5lKQor
ICAgICAgICAgICAgICAgIG1hdGNoID0gc2VsZi5SRV9NVUxUSV9UT1AubWF0Y2gobGluZSkKKyAg
ICAgICAgICAgICAgICBpZiBub3QgbWF0Y2ggb3IgJ3t9Lnt9Jy5mb3JtYXQobWF0Y2guZ3JvdXAo
J2tleWEnKSwgbWF0Y2guZ3JvdXAoJ2tleWInKSkgIT0ga2V5X2E6CisgICAgICAgICAgICAgICAg
ICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgY29uZmlnZmlsZS53cml0ZSgnXHR7fT17fVxu
Jy5mb3JtYXQoa2V5X2IsIHZhbHVlKSkKKyAgICAgICAgICAgICAgICBkaWRfcHJpbnQgPSBUcnVl
CisKKyAgICAgICAgICAgIGlmIG5vdCBkaWRfcHJpbnQ6CisgICAgICAgICAgICAgICAgY29uZmln
ZmlsZS53cml0ZSgnW3t9XVxuJy5mb3JtYXQoa2V5X2EpKQorICAgICAgICAgICAgICAgIGNvbmZp
Z2ZpbGUud3JpdGUoJ1x0e309e31cbicuZm9ybWF0KGtleV9iLCB2YWx1ZSkpCisKKyAgICAgICAg
cmV0dXJuIG1vY2tzLlByb2Nlc3NDb21wbGV0aW9uKHJldHVybmNvZGU9MCkKZGlmZiAtLWdpdCBh
L1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L21vY2tzL3Jl
bW90ZS9naXRfaHViLnB5IGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Vi
a2l0c2NtcHkvbW9ja3MvcmVtb3RlL2dpdF9odWIucHkKaW5kZXggYjdhNzAxYmY4Y2Y1NTVlMzBh
NjFkYTZhYzBhYTY0MjdlODhmOTNiNi4uNmM2ODA0ZDkwNDAyNDFkYTNlNmExZGVmODM4OWY2ZWQ3
ZTMyZTQyNSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkv
d2Via2l0c2NtcHkvbW9ja3MvcmVtb3RlL2dpdF9odWIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy9s
aWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbW9ja3MvcmVtb3RlL2dpdF9odWIucHkK
QEAgLTM5LDYgKzM5LDcgQEAgY2xhc3MgR2l0SHViKG1vY2tzLlJlcXVlc3RzKToKIAogICAgICAg
ICBzZWxmLmRlZmF1bHRfYnJhbmNoID0gZGVmYXVsdF9icmFuY2gKICAgICAgICAgc2VsZi5yZW1v
dGUgPSByZW1vdGUKKyAgICAgICAgc2VsZi5mb3JrcyA9IFtdCiAgICAgICAgIGhvc3RuYW1lID0g
c2VsZi5yZW1vdGUuc3BsaXQoJy8nKVswXQogICAgICAgICBzZWxmLmFwaV9yZW1vdGUgPSAnYXBp
Lntob3N0bmFtZX0vcmVwb3Mve3JlcG99Jy5mb3JtYXQoCiAgICAgICAgICAgICBob3N0bmFtZT1o
b3N0bmFtZSwKQEAgLTYyLDcgKzYzLDcgQEAgY2xhc3MgR2l0SHViKG1vY2tzLlJlcXVlc3RzKToK
ICAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgogICAgICAgICBwcmVmaXggPSBzZWxmLnJlbW90ZS5z
cGxpdCgnLycpWzBdLnJlcGxhY2UoJy4nLCAnXycpLnVwcGVyKCkKICAgICAgICAgdXNlcm5hbWVf
a2V5ID0gJ3t9X1VTRVJOQU1FJy5mb3JtYXQocHJlZml4KQotICAgICAgICB0b2tlbl9rZXkgPSAn
e31fQUNDRVNTX1RPS0VOJy5mb3JtYXQocHJlZml4KQorICAgICAgICB0b2tlbl9rZXkgPSAne31f
VE9LRU4nLmZvcm1hdChwcmVmaXgpCiAgICAgICAgIHNlbGYuX2Vudmlyb25tZW50ID0gewogICAg
ICAgICAgICAgdXNlcm5hbWVfa2V5OiBvcy5lbnZpcm9uLmdldCh1c2VybmFtZV9rZXkpLAogICAg
ICAgICAgICAgdG9rZW5fa2V5OiBvcy5lbnZpcm9uLmdldCh0b2tlbl9rZXkpLApAQCAtMzE1LDQg
KzMxNiwyNCBAQCBjbGFzcyBHaXRIdWIobW9ja3MuUmVxdWVzdHMpOgogICAgICAgICBpZiBzdHJp
cHBlZF91cmwuc3RhcnRzd2l0aCgne30vdHJlZS8nLmZvcm1hdChzZWxmLnJlbW90ZSkpOgogICAg
ICAgICAgICAgcmV0dXJuIHNlbGYuX3BhcmVudHNfb2ZfcmVxdWVzdCh1cmw9dXJsLCByZWY9c3Ry
aXBwZWRfdXJsLnNwbGl0KCcvJylbLTFdKQogCisgICAgICAgICMgQ2hlY2sgZm9yIGV4aXN0YW5j
ZSBvZiBmb3JrZWQgcmVwbworICAgICAgICBpZiBzdHJpcHBlZF91cmwuc3RhcnRzd2l0aCgne30v
cmVwb3MnLmZvcm1hdChzZWxmLmFwaV9yZW1vdGUuc3BsaXQoJy8nKVswXSkpIGFuZCBzdHJpcHBl
ZF91cmwuc3BsaXQoJy8nKVstMV0gPT0gc2VsZi5yZW1vdGUuc3BsaXQoJy8nKVstMV06CisgICAg
ICAgICAgICB1c2VybmFtZSA9IHN0cmlwcGVkX3VybC5zcGxpdCgnLycpWy0yXQorICAgICAgICAg
ICAgaWYgdXNlcm5hbWUgaW4gc2VsZi5mb3JrcyBvciB1c2VybmFtZSA9PSBzZWxmLnJlbW90ZS5z
cGxpdCgnLycpWy0yXToKKyAgICAgICAgICAgICAgICByZXR1cm4gbW9ja3MuUmVzcG9uc2UuZnJv
bUpzb24oZGljdCgKKyAgICAgICAgICAgICAgICAgICAgb3dtZXI9ZGljdCgKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGxvZ2luPXVzZXJuYW1lLAorICAgICAgICAgICAgICAgICAgICApLCBmb3Jr
PXVzZXJuYW1lIGluIHNlbGYuZm9ya3MsCisgICAgICAgICAgICAgICAgICAgIG5hbWU9c3RyaXBw
ZWRfdXJsLnNwbGl0KCcvJylbLTFdLAorICAgICAgICAgICAgICAgICAgICBmdWxsX25hbWU9Jy8n
LmpvaW4oc3RyaXBwZWRfdXJsLnNwbGl0KCcvJylbLTI6XSksCisgICAgICAgICAgICAgICAgKSwg
dXJsPXVybCkKKyAgICAgICAgICAgIHJldHVybiBtb2Nrcy5SZXNwb25zZS5jcmVhdGU0MDQodXJs
KQorCisgICAgICAgICMgQWRkIGZvcmsKKyAgICAgICAgaWYgc3RyaXBwZWRfdXJsLnN0YXJ0c3dp
dGgoJ3t9L2ZvcmtzJy5mb3JtYXQoc2VsZi5hcGlfcmVtb3RlKSkgYW5kIG1ldGhvZCA9PSAnUE9T
VCc6CisgICAgICAgICAgICB1c2VybmFtZSA9IGt3YXJncy5nZXQoJ2pzb24nLCB7fSkuZ2V0KCdv
d25lcicsIE5vbmUpCisgICAgICAgICAgICBpZiB1c2VybmFtZToKKyAgICAgICAgICAgICAgICBz
ZWxmLmZvcmtzLmFwcGVuZCh1c2VybmFtZSkKKyAgICAgICAgICAgIHJldHVybiBtb2Nrcy5SZXNw
b25zZS5mcm9tSnNvbih7fSkgaWYgdXNlcm5hbWUgZWxzZSBtb2Nrcy5SZXNwb25zZS5jcmVhdGU0
MDQodXJsKQorCiAgICAgICAgIHJldHVybiBtb2Nrcy5SZXNwb25zZS5jcmVhdGU0MDQodXJsKQpk
aWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2Nt
cHkvcHJvZ3JhbS9fX2luaXRfXy5weSBiL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNj
bXB5L3dlYmtpdHNjbXB5L3Byb2dyYW0vX19pbml0X18ucHkKaW5kZXggMmY5ZTA0Nzc5OTY0YTBi
MjMzMzgyZDBjNjY1NTc5ZjU1YjBjZmM5Ny4uMTU3OGRkOTZlODE1YjY2MzM1MTJjMmFiNjA5YTcz
NWI0Y2FmOGUwZSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2Nt
cHkvd2Via2l0c2NtcHkvcHJvZ3JhbS9fX2luaXRfXy5weQorKysgYi9Ub29scy9TY3JpcHRzL2xp
YnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9wcm9ncmFtL19faW5pdF9fLnB5CkBAIC0z
Myw2ICszMyw3IEBAIGZyb20gLmZpbmQgaW1wb3J0IEZpbmQsIEluZm8KIGZyb20gLmxvZyBpbXBv
cnQgTG9nCiBmcm9tIC5wdWxsIGltcG9ydCBQdWxsCiBmcm9tIC5zZXR1cF9naXRfc3ZuIGltcG9y
dCBTZXR1cEdpdFN2bgorZnJvbSAuc2V0dXAgaW1wb3J0IFNldHVwCiAKIGZyb20gd2Via2l0Y29y
ZXB5IGltcG9ydCBhcmd1bWVudHMsIGxvZyBhcyB3ZWJraXRjb3JlcHlfbG9nCiBmcm9tIHdlYmtp
dHNjbXB5IGltcG9ydCBsb2NhbCwgbG9nLCByZW1vdGUKQEAgLTYzLDcgKzY0LDcgQEAgZGVmIG1h
aW4oYXJncz1Ob25lLCBwYXRoPU5vbmUsIGxvZ2dlcnM9Tm9uZSwgY29udHJpYnV0b3JzPU5vbmUs
IGlkZW50aWZpZXJfdGVtcGwKIAogICAgIHN1YnBhcnNlcnMgPSBwYXJzZXIuYWRkX3N1YnBhcnNl
cnMoaGVscD0nc3ViLWNvbW1hbmQgaGVscCcpCiAKLSAgICBwcm9ncmFtcyA9IFtGaW5kLCBJbmZv
LCBDaGVja291dCwgQ2Fub25pY2FsaXplLCBQdWxsLCBDbGVhbiwgTG9nLCBCbGFtZV0KKyAgICBw
cm9ncmFtcyA9IFtGaW5kLCBJbmZvLCBDaGVja291dCwgQ2Fub25pY2FsaXplLCBQdWxsLCBDbGVh
biwgTG9nLCBCbGFtZSwgU2V0dXBdCiAgICAgaWYgc3VidmVyc2lvbjoKICAgICAgICAgcHJvZ3Jh
bXMuYXBwZW5kKFNldHVwR2l0U3ZuKQogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL2xpYnJh
cmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9wcm9ncmFtL3NldHVwLnB5IGIvVG9vbHMvU2Ny
aXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvcHJvZ3JhbS9zZXR1cC5weQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5jZTkzZmM4NDM0NWI2MmMxMDRiOWEwMGQxMzg3YTM4ZWY4YzY4OWRlCi0tLSAv
ZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0
c2NtcHkvcHJvZ3JhbS9zZXR1cC5weQpAQCAtMCwwICsxLDIxMyBAQAorIyBDb3B5cmlnaHQgKEMp
IDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IHJlcXVlc3RzCitpbXBvcnQgc3lzCisKK2Zy
b20gLmNvbW1hbmQgaW1wb3J0IENvbW1hbmQKK2Zyb20gcmVxdWVzdHMuYXV0aCBpbXBvcnQgSFRU
UEJhc2ljQXV0aAorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IGFyZ3VtZW50cywgcnVuLCBUZXJt
aW5hbAorZnJvbSB3ZWJraXRzY21weSBpbXBvcnQgbG9nLCBsb2NhbCwgcmVtb3RlCisKKworY2xh
c3MgU2V0dXAoQ29tbWFuZCk6CisgICAgbmFtZSA9ICdzZXR1cCcKKyAgICBoZWxwID0gJ0NvbmZp
Z3VyZSBsb2NhbCBzZXR0aW5ncyBmb3IgdGhlIGN1cnJlbnQgcmVwb3NpdG9yeScKKworICAgIEBj
bGFzc21ldGhvZAorICAgIGRlZiBnaXRodWIoY2xzLCBhcmdzLCByZXBvc2l0b3J5LCAqKmt3YXJn
cyk6CisgICAgICAgIGxvZy53YXJuaW5nKCdTYXZpbmcgR2l0SHViIGNyZWRlbnRpYWxzIGluIHN5
c3RlbSBjcmVkZW50aWFsIHN0b3JlLi4uJykKKyAgICAgICAgdXNlcm5hbWUsIGFjY2Vzc190b2tl
biA9IHJlcG9zaXRvcnkuY3JlZGVudGlhbHMocmVxdWlyZWQ9VHJ1ZSkKKyAgICAgICAgbG9nLndh
cm5pbmcoJ0dpdEh1YiBjcmVkZW50aWFscyBzYXZlZCB2aWEgS2V5cmluZyEnKQorCisgICAgICAg
IGxvZy53YXJuaW5nKCdWZXJpZnlpbmcgdXNlciBvd25lZCBmb3JrLi4uJykKKyAgICAgICAgYXV0
aCA9IEhUVFBCYXNpY0F1dGgodXNlcm5hbWUsIGFjY2Vzc190b2tlbikKKyAgICAgICAgcmVzcG9u
c2UgPSByZXF1ZXN0cy5nZXQoJ3t9L3JlcG9zL3t9L3t9Jy5mb3JtYXQoCisgICAgICAgICAgICBy
ZXBvc2l0b3J5LmFwaV91cmwsCisgICAgICAgICAgICB1c2VybmFtZSwKKyAgICAgICAgICAgIHJl
cG9zaXRvcnkubmFtZSwKKyAgICAgICAgKSwgYXV0aD1hdXRoLCBoZWFkZXJzPWRpY3QoQWNjZXB0
PSdhcHBsaWNhdGlvbi92bmQuZ2l0aHViLnYzK2pzb24nKSkKKyAgICAgICAgaWYgcmVzcG9uc2Uu
c3RhdHVzX2NvZGUgPT0gMjAwOgorICAgICAgICAgICAgbG9nLndhcm5pbmcoIlVzZXIgYWxyZWFk
eSBvd25zIGEgZm9yayBvZiAne30nISIuZm9ybWF0KHJlcG9zaXRvcnkubmFtZSkpCisgICAgICAg
ICAgICByZXR1cm4gMAorCisgICAgICAgIGlmIHJlcG9zaXRvcnkub3duZXIgPT0gdXNlcm5hbWUg
b3IgYXJncy5kZWZhdWx0cyBvciBUZXJtaW5hbC5jaG9vc2UoCisgICAgICAgICAgICAiQ3JlYXRl
IGEgcHJpdmF0ZSBmb3JrIG9mICd7fScgYmVsb25naW5nIHRvICd7fSciLmZvcm1hdChyZXBvc2l0
b3J5Lm5hbWUsIHVzZXJuYW1lKSwKKyAgICAgICAgICAgIGRlZmF1bHQ9J05vJywKKyAgICAgICAg
KSA9PSAnTm8nOgorICAgICAgICAgICAgbG9nLndhcm5pbmcoIkNvbnRpbnVpbmcgd2l0aG91dCBm
b3JraW5nICd7fSciLmZvcm1hdChyZXBvc2l0b3J5Lm5hbWUpKQorICAgICAgICAgICAgcmV0dXJu
IDEKKworICAgICAgICByZXNwb25zZSA9IHJlcXVlc3RzLnBvc3QoJ3t9L3JlcG9zL3t9L3t9L2Zv
cmtzJy5mb3JtYXQoCisgICAgICAgICAgICByZXBvc2l0b3J5LmFwaV91cmwsCisgICAgICAgICAg
ICByZXBvc2l0b3J5Lm93bmVyLAorICAgICAgICAgICAgcmVwb3NpdG9yeS5uYW1lLAorICAgICAg
ICApLCBqc29uPWRpY3QoCisgICAgICAgICAgICBvd25lcj11c2VybmFtZSwKKyAgICAgICAgICAg
IGRlc2NyaXB0aW9uPSJ7fSdzIGZvcmsgb2Yge30iLmZvcm1hdCh1c2VybmFtZSwgcmVwb3NpdG9y
eS5uYW1lKSwKKyAgICAgICAgICAgIHByaXZhdGU9VHJ1ZSwKKyAgICAgICAgKSwgYXV0aD1hdXRo
LCBoZWFkZXJzPWRpY3QoQWNjZXB0PSdhcHBsaWNhdGlvbi92bmQuZ2l0aHViLnYzK2pzb24nKSkK
KyAgICAgICAgaWYgcmVzcG9uc2Uuc3RhdHVzX2NvZGUgbm90IGluICgyMDAsIDIwMik6CisgICAg
ICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCJGYWlsZWQgdG8gY3JlYXRlIGEgZm9yayBvZiAne30n
IGJlbG9uZ2luZyB0byAne30nXG4iLmZvcm1hdChyZXBvc2l0b3J5Lm5hbWUsIHVzZXJuYW1lKSkK
KyAgICAgICAgICAgIHJldHVybiAxCisgICAgICAgIGxvZy53YXJuaW5nKCJDcmVhdGVkIGEgcHJp
dmF0ZSBmb3JrIG9mICd7fScgYmVsb25naW5nIHRvICd7fSchIi5mb3JtYXQocmVwb3NpdG9yeS5u
YW1lLCB1c2VybmFtZSkpCisgICAgICAgIHJldHVybiAwCisKKyAgICBAY2xhc3NtZXRob2QKKyAg
ICBkZWYgZ2l0KGNscywgYXJncywgcmVwb3NpdG9yeSwgKiprd2FyZ3MpOgorICAgICAgICBnbG9i
YWxfY29uZmlnID0gbG9jYWwuR2l0LmNvbmZpZygpCisgICAgICAgIHJlc3VsdCA9IDAKKworICAg
ICAgICBlbWFpbCA9IGdsb2JhbF9jb25maWcuZ2V0KCd1c2VyLmVtYWlsJykKKyAgICAgICAgbG9n
Lndhcm5pbmcoJ1NldHRpbmcgZ2l0IHVzZXIgZW1haWwgZm9yIHt9Li4uJy5mb3JtYXQocmVwb3Np
dG9yeS5yb290X3BhdGgpKQorICAgICAgICBpZiBub3QgZW1haWwgb3IgYXJncy5kZWZhdWx0cyBp
cyBGYWxzZSBvciAobm90IGFyZ3MuZGVmYXVsdHMgYW5kIFRlcm1pbmFsLmNob29zZSgKKyAgICAg
ICAgICAgICJTZXQgJ3t9JyBhcyB0aGUgZ2l0IHVzZXIgZW1haWwiLmZvcm1hdChlbWFpbCksCisg
ICAgICAgICAgICBkZWZhdWx0PSdZZXMnLAorICAgICAgICApID09ICdObycpOgorICAgICAgICAg
ICAgZW1haWwgPSBUZXJtaW5hbC5pbnB1dCgnR2l0IHVzZXIgZW1haWw6ICcpCisKKyAgICAgICAg
aWYgcnVuKAorICAgICAgICAgICAgW2xvY2FsLkdpdC5leGVjdXRhYmxlKCksICdjb25maWcnLCAn
dXNlci5lbWFpbCcsIGVtYWlsXSwgY2FwdHVyZV9vdXRwdXQ9VHJ1ZSwgY3dkPXJlcG9zaXRvcnku
cm9vdF9wYXRoLAorICAgICAgICApLnJldHVybmNvZGU6CisgICAgICAgICAgICBzeXMuc3RkZXJy
LndyaXRlKCdGYWlsZWQgdG8gc2V0IHRoZSBnaXQgdXNlciBlbWFpbCB0byB7fVxuJy5mb3JtYXQo
ZW1haWwpKQorICAgICAgICAgICAgcmVzdWx0ICs9IDEKKyAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgIGxvZy53YXJuaW5nKCJTZXQgZ2l0IHVzZXIgZW1haWwgdG8gJ3t9JyIuZm9ybWF0KGVtYWls
KSkKKworICAgICAgICBuYW1lID0gcmVwb3NpdG9yeS5jb250cmlidXRvcnMuZ2V0KGVtYWlsKQor
ICAgICAgICBpZiBuYW1lOgorICAgICAgICAgICAgbmFtZSA9IG5hbWUubmFtZQorICAgICAgICBl
bHNlOgorICAgICAgICAgICAgbmFtZSA9IGdsb2JhbF9jb25maWcuZ2V0KCd1c2VyLm5hbWUnKQor
ICAgICAgICBsb2cud2FybmluZygnU2V0dGluZyBnaXQgdXNlciBuYW1lIGZvciB7fS4uLicuZm9y
bWF0KHJlcG9zaXRvcnkucm9vdF9wYXRoKSkKKyAgICAgICAgaWYgbm90IG5hbWUgb3IgYXJncy5k
ZWZhdWx0cyBpcyBGYWxzZSBvciAobm90IGFyZ3MuZGVmYXVsdHMgYW5kIFRlcm1pbmFsLmNob29z
ZSgKKyAgICAgICAgICAgICJTZXQgJ3t9JyBhcyB0aGUgZ2l0IHVzZXIgbmFtZSIuZm9ybWF0KG5h
bWUpLAorICAgICAgICAgICAgZGVmYXVsdD0nWWVzJywKKyAgICAgICAgKSA9PSAnTm8nKToKKyAg
ICAgICAgICAgIG5hbWUgPSBUZXJtaW5hbC5pbnB1dCgnR2l0IHVzZXIgbmFtZTogJykKKyAgICAg
ICAgaWYgcnVuKAorICAgICAgICAgICAgW2xvY2FsLkdpdC5leGVjdXRhYmxlKCksICdjb25maWcn
LCAndXNlci5uYW1lJywgbmFtZV0sIGNhcHR1cmVfb3V0cHV0PVRydWUsIGN3ZD1yZXBvc2l0b3J5
LnJvb3RfcGF0aCwKKyAgICAgICAgKS5yZXR1cm5jb2RlOgorICAgICAgICAgICAgc3lzLnN0ZGVy
ci53cml0ZSgnRmFpbGVkIHRvIHNldCB0aGUgZ2l0IHVzZXIgbmFtZSB0byB7fVxuJy5mb3JtYXQo
bmFtZSkpCisgICAgICAgICAgICByZXN1bHQgKz0gMQorICAgICAgICBlbHNlOgorICAgICAgICAg
ICAgbG9nLndhcm5pbmcoIlNldCBnaXQgdXNlciBuYW1lIHRvICd7fSciLmZvcm1hdChuYW1lKSkK
KworICAgICAgICBsb2cud2FybmluZygnU2V0dGluZyBiZXR0ZXIgT2JqZWN0aXZlLUMgZGlmZmlu
ZyBiZWhhdmlvci4uLicpCisgICAgICAgIHJlc3VsdCArPSBydW4oCisgICAgICAgICAgICBbbG9j
YWwuR2l0LmV4ZWN1dGFibGUoKSwgJ2NvbmZpZycsICdkaWZmLm9iamNwcC54ZnVuY25hbWUnLCAn
XlstK0BhLXpBLVpfXS4qJCddLAorICAgICAgICAgICAgY2FwdHVyZV9vdXRwdXQ9VHJ1ZSwgY3dk
PXJlcG9zaXRvcnkucm9vdF9wYXRoLAorICAgICAgICApLnJldHVybmNvZGUKKyAgICAgICAgcmVz
dWx0ICs9IHJ1bigKKyAgICAgICAgICAgIFtsb2NhbC5HaXQuZXhlY3V0YWJsZSgpLCAnY29uZmln
JywgJ2RpZmYub2JqY3BwaGVhZGVyLnhmdW5jbmFtZScsICdeW0BhLXpBLVpfXS4qJCddLAorICAg
ICAgICAgICAgY2FwdHVyZV9vdXRwdXQ9VHJ1ZSwgY3dkPXJlcG9zaXRvcnkucm9vdF9wYXRoLAor
ICAgICAgICApLnJldHVybmNvZGUKKyAgICAgICAgbG9nLndhcm5pbmcoJ1NldCBiZXR0ZXIgT2Jq
ZWN0aXZlLUMgZGlmZmluZyBiZWhhdmlvciEnKQorCisgICAgICAgIGlmIGFyZ3MuZGVmYXVsdHMg
b3IgVGVybWluYWwuY2hvb3NlKAorICAgICAgICAgICAgJ0F1dG8tY29sb3Igc3RhdHVzLCBkaWZm
LCBhbmQgYnJhbmNoPycuZm9ybWF0KGVtYWlsKSwKKyAgICAgICAgICAgIGRlZmF1bHQ9J1llcycs
CisgICAgICAgICkgPT0gJ1llcyc6CisgICAgICAgICAgICBmb3IgY29tbWFuZCBpbiAoJ3N0YXR1
cycsICdkaWZmJywgJ2JyYW5jaCcpOgorICAgICAgICAgICAgICAgIHJlc3VsdCArPSBydW4oCisg
ICAgICAgICAgICAgICAgICAgIFtsb2NhbC5HaXQuZXhlY3V0YWJsZSgpLCAnY29uZmlnJywgJ2Nv
bG9yLnt9Jy5mb3JtYXQoY29tbWFuZCksICdhdXRvJ10sCisgICAgICAgICAgICAgICAgICAgIGNh
cHR1cmVfb3V0cHV0PVRydWUsIGN3ZD1yZXBvc2l0b3J5LnJvb3RfcGF0aCwKKyAgICAgICAgICAg
ICAgICApLnJldHVybmNvZGUKKworICAgICAgICBsb2cud2FybmluZygnVXNpbmcge30gbWVyZ2Ug
c3RyYXRlZ3knLmZvcm1hdCgnbWVyZ2UgY29tbWl0cyBhcyBhJyBpZiBhcmdzLm1lcmdlIGVsc2Ug
J2EgcmViYXNlJykpCisgICAgICAgIGlmIHJ1bigKKyAgICAgICAgICAgIFtsb2NhbC5HaXQuZXhl
Y3V0YWJsZSgpLCAnY29uZmlnJywgJ3B1bGwucmViYXNlJywgJ2ZhbHNlJyBpZiBhcmdzLm1lcmdl
IGVsc2UgJ3RydWUnXSwKKyAgICAgICAgICAgIGNhcHR1cmVfb3V0cHV0PVRydWUsIGN3ZD1yZXBv
c2l0b3J5LnJvb3RfcGF0aCwKKyAgICAgICAgKS5yZXR1cm5jb2RlOgorICAgICAgICAgICAgc3lz
LnN0ZGVyci53cml0ZSgnRmFpbGVkIHRvIHVzZSB7fSBhcyB0aGUgbWVyZ2Ugc3RyYXRlZ3lcbicu
Zm9ybWF0KCdtZXJnZSBjb21taXRzJyBpZiBhcmdzLm1lcmdlIGVsc2UgJ3JlYmFzZScpKQorICAg
ICAgICAgICAgcmVzdWx0ICs9IDEKKworICAgICAgICAjIE9ubHkgY29uZmlndXJlIEdpdEh1YiBp
ZiB0aGUgVVJMIGlzIGEgR2l0SHViIFVSTAorICAgICAgICBybXQgPSByZXBvc2l0b3J5LnJlbW90
ZSgpCisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHJtdCwgcmVtb3RlLkdpdEh1Yik6CisgICAg
ICAgICAgICByZXR1cm4gcmVzdWx0CisKKyAgICAgICAgY29kZSA9IGNscy5naXRodWIoYXJncywg
cm10LCAqKmt3YXJncykKKyAgICAgICAgcmVzdWx0ICs9IGNvZGUKKyAgICAgICAgaWYgY29kZToK
KyAgICAgICAgICAgIHJldHVybiByZXN1bHQKKworICAgICAgICB1c2VybmFtZSwgXyA9IHJtdC5j
cmVkZW50aWFscyhyZXF1aXJlZD1UcnVlKQorICAgICAgICBsb2cud2FybmluZygiQWRkaW5nIGZv
cmtlZCByZW1vdGUgYXMgJ3t9JyBhbmQgJ2ZvcmsnLi4uIi5mb3JtYXQodXNlcm5hbWUpKQorICAg
ICAgICB1cmwgPSByZXBvc2l0b3J5LnVybCgpCisKKyAgICAgICAgaWYgJzovLycgaW4gdXJsOgor
ICAgICAgICAgICAgZm9ya19yZW1vdGUgPSAne306Ly97fS97fS97fS5naXQnLmZvcm1hdCh1cmwu
c3BsaXQoJzonKVswXSwgdXJsLnNwbGl0KCcvJylbMl0sIHVzZXJuYW1lLCBybXQubmFtZSkKKyAg
ICAgICAgZWxpZiAnOicgaW4gdXJsOgorICAgICAgICAgICAgZm9ya19yZW1vdGUgPSAne306e30v
e30uZ2l0Jy5mb3JtYXQodXJsLnNwbGl0KCc6JylbMF0sIHVzZXJuYW1lLCBybXQubmFtZSkKKyAg
ICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAxCisKKyAgICAgICAgYXZh
aWxhYmxlX3JlbW90ZXMgPSBbXQorICAgICAgICBmb3IgbmFtZSBpbiBbdXNlcm5hbWUsICdmb3Jr
J106CisgICAgICAgICAgICByZXR1cm5jb2RlID0gcnVuKAorICAgICAgICAgICAgICAgIFtyZXBv
c2l0b3J5LmV4ZWN1dGFibGUoKSwgJ3JlbW90ZScsICdhZGQnLCBuYW1lLCBmb3JrX3JlbW90ZV0s
CisgICAgICAgICAgICAgICAgY2FwdHVyZV9vdXRwdXQ9VHJ1ZSwgY3dkPXJlcG9zaXRvcnkucm9v
dF9wYXRoLAorICAgICAgICAgICAgKS5yZXR1cm5jb2RlCisgICAgICAgICAgICBpZiByZXR1cm5j
b2RlID09IDM6CisgICAgICAgICAgICAgICAgcmV0dXJuY29kZSA9IHJ1bigKKyAgICAgICAgICAg
ICAgICAgICAgW3JlcG9zaXRvcnkuZXhlY3V0YWJsZSgpLCAncmVtb3RlJywgJ3NldC11cmwnLCBu
YW1lLCBmb3JrX3JlbW90ZV0sCisgICAgICAgICAgICAgICAgICAgIGNhcHR1cmVfb3V0cHV0PVRy
dWUsIGN3ZD1yZXBvc2l0b3J5LnJvb3RfcGF0aCwKKyAgICAgICAgICAgICAgICApLnJldHVybmNv
ZGUKKyAgICAgICAgICAgIGlmIHJldHVybmNvZGU6CisgICAgICAgICAgICAgICAgc3lzLnN0ZGVy
ci53cml0ZSgiRmFpbGVkIHRvIGFkZCByZW1vdGUgJ3t9J1xuIi5mb3JtYXQobmFtZSkpCisgICAg
ICAgICAgICAgICAgcmVzdWx0ICs9IDEKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAg
ICAgYXZhaWxhYmxlX3JlbW90ZXMuYXBwZW5kKG5hbWUpCisgICAgICAgICAgICAgICAgbG9nLndh
cm5pbmcoIkFkZGVkIHJlbW90ZSAne30nIi5mb3JtYXQobmFtZSkpCisKKyAgICAgICAgaWYgJ2Zv
cmsnIG5vdCBpbiBhdmFpbGFibGVfcmVtb3RlczoKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQK
KyAgICAgICAgbG9nLndhcm5pbmcoIkZldGNoaW5nICd7fSciLmZvcm1hdChmb3JrX3JlbW90ZSkp
CisgICAgICAgIHJldHVybiBydW4oCisgICAgICAgICAgICBbcmVwb3NpdG9yeS5leGVjdXRhYmxl
KCksICdmZXRjaCcsICdmb3JrJ10sCisgICAgICAgICAgICBjYXB0dXJlX291dHB1dD1UcnVlLCBj
d2Q9cmVwb3NpdG9yeS5yb290X3BhdGgsCisgICAgICAgICkucmV0dXJuY29kZQorCisgICAgQGNs
YXNzbWV0aG9kCisgICAgZGVmIHBhcnNlcihjbHMsIHBhcnNlciwgbG9nZ2Vycz1Ob25lKToKKyAg
ICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgICAgICctLWRlZmF1bHRzJywgJy0t
bm8tZGVmYXVsdHMnLCBhY3Rpb249YXJndW1lbnRzLk5vQWN0aW9uLCBkZWZhdWx0PU5vbmUsCisg
ICAgICAgICAgICBoZWxwPSdEbyBub3QgcHJvbXB0IHRoZSB1c2VyIGZvciBkZWZhdWx0cywgYWx3
YXlzIHVzZSAob3IgZG8gbm90IHVzZSkgdGhlbScsCisgICAgICAgICkKKyAgICAgICAgcGFyc2Vy
LmFkZF9hcmd1bWVudCgKKyAgICAgICAgICAgICctLW1lcmdlJywgJy0tbm8tbWVyZ2UnLCBhY3Rp
b249YXJndW1lbnRzLk5vQWN0aW9uLCBkZWZhdWx0PUZhbHNlLAorICAgICAgICAgICAgaGVscD0n
VXNlIGEgbWVyZ2UtY29tbWl0IHdvcmtmbG93IGluc3RlYWQgb2YgYSByZWJhc2Ugd29ya2Zsb3cn
LAorICAgICAgICApCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgbWFpbihjbHMsIGFyZ3Ms
IHJlcG9zaXRvcnksICoqa3dhcmdzKToKKyAgICAgICAgaWYgaXNpbnN0YW5jZShyZXBvc2l0b3J5
LCBsb2NhbC5HaXQpOgorICAgICAgICAgICAgcmV0dXJuIGNscy5naXQoYXJncywgcmVwb3NpdG9y
eSwgKiprd2FyZ3MpCisKKyAgICAgICAgaWYgaXNpbnN0YW5jZShyZXBvc2l0b3J5LCByZW1vdGUu
R2l0SHViKToKKyAgICAgICAgICAgIHJldHVybiBjbHMuZ2l0aHViKGFyZ3MsIHJlcG9zaXRvcnks
ICoqa3dhcmdzKQorCisgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoJ05vIHNldHVwIHJlcXVpcmVk
IGZvciB7fVxuJy5mb3JtYXQoCisgICAgICAgICAgICBnZXRhdHRyKHJlcG9zaXRvcnksICdyb290
X3BhdGgnLCBnZXRhdHRyKHJlcG9zaXRvcnksICd1cmwnLCAnPycpKSwKKyAgICAgICAgKSkKKyAg
ICAgICAgcmV0dXJuIDEKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtp
dHNjbXB5L3dlYmtpdHNjbXB5L3JlbW90ZS9naXRfaHViLnB5IGIvVG9vbHMvU2NyaXB0cy9saWJy
YXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvcmVtb3RlL2dpdF9odWIucHkKaW5kZXggZTRm
ZTUzMzZhNDI5YTY3Zjc0ZjAxOTllOGQ2MmY4ZmNiZGVkNjM1Mi4uYjA1MjlmMmNiMTU4MGFiOWE1
NWJiZTBhYTBmYzgwMWU2YmJmMTU3OCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy9saWJyYXJp
ZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvcmVtb3RlL2dpdF9odWIucHkKKysrIGIvVG9vbHMv
U2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvcmVtb3RlL2dpdF9odWIu
cHkKQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAyMCwgMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTYzLDEz
ICs2MywxOCBAQCBjbGFzcyBHaXRIdWIoU2NtKToKICAgICAgICAgKQogCiAgICAgZGVmIGNyZWRl
bnRpYWxzKHNlbGYsIHJlcXVpcmVkPVRydWUpOgotICAgICAgICByZXR1cm4gY3JlZGVudGlhbHMo
CisgICAgICAgIHVzZXJuYW1lLCB0b2tlbiA9IGNyZWRlbnRpYWxzKAogICAgICAgICAgICAgdXJs
PXNlbGYuYXBpX3VybCwKICAgICAgICAgICAgIHJlcXVpcmVkPXJlcXVpcmVkLAogICAgICAgICAg
ICAgbmFtZT1zZWxmLnVybC5zcGxpdCgnLycpWzJdLnJlcGxhY2UoJy4nLCAnXycpLnVwcGVyKCks
Ci0gICAgICAgICAgICBwcm9tcHQ9IkdpdEh1YidzIEFQSVxuUGxlYXNlIGdlbmVyYXRlIGEgJ1Bl
cnNvbmFsIGFjY2VzcyB0b2tlbicgdmlhICdEZXZlbG9wZXIgc2V0dGluZ3MnIGZvciB5b3VyIHVz
ZXIiLAorICAgICAgICAgICAgcHJvbXB0PScnJ0dpdEh1YidzIEFQSQorUGxlYXNlIGdlbmVyYXRl
IGEgJ1BlcnNvbmFsIGFjY2VzcyB0b2tlbicgdmlhICdEZXZlbG9wZXIgc2V0dGluZ3MnIHdpdGgg
J3JlcG8nIGFuZCAnd29ya2Zsb3cnIGFjY2VzcworZm9yIHlvdXIge30gdXNlcicnJy5mb3JtYXQo
c2VsZi51cmwuc3BsaXQoJy8nKVsyXSksCiAgICAgICAgICAgICBrZXlfbmFtZT0ndG9rZW4nLAog
ICAgICAgICApCisgICAgICAgIGlmIHVzZXJuYW1lOgorICAgICAgICAgICAgdXNlcm5hbWUgPSB1
c2VybmFtZS5zcGxpdCgnQCcpWzBdCisgICAgICAgIHJldHVybiB1c2VybmFtZSwgdG9rZW4KIAog
ICAgIEBwcm9wZXJ0eQogICAgIGRlZiBpc19naXQoc2VsZik6CmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS90ZXN0L2dpdF91bml0dGVz
dC5weSBiL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Rl
c3QvZ2l0X3VuaXR0ZXN0LnB5CmluZGV4IDZiZTMyM2FjZGIxYTNkMzY0M2VlZjZiNzI1NTNlNTRi
YmE3Nzc1ODguLjYyMTc3YjQwY2I4ZGM2ZGU4ZDE1YzIzZDI3M2MwNTdkOWJmZGRkNjIgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Rl
c3QvZ2l0X3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNj
bXB5L3dlYmtpdHNjbXB5L3Rlc3QvZ2l0X3VuaXR0ZXN0LnB5CkBAIC00MTEsNyArNDExLDcgQEAg
Q29tbWl0RGF0ZTogU2F0IE9jdCAwMyAwMjowNjo0MCAyMDIwICswMDAwCiAgICAgICAgIHdpdGgg
bW9ja3MubG9jYWwuR2l0KHNlbGYucGF0aCwgZ2l0X3N2bj1UcnVlKSBhcyBtOgogICAgICAgICAg
ICAgcmVwbyA9IGxvY2FsLkdpdChzZWxmLnBhdGgpCiAKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwocmVwby5jb25maWcoKVsndXNlci5uYW1lJ10sICd0YXBwbGVAd2Via2l0Lm9yZycpCisg
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcG8uY29uZmlnKClbJ3VzZXIubmFtZSddLCAn
VGltIEFwcGxlJykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwby5jb25maWcoKVsn
Y29yZS5maWxlbW9kZSddLCAndHJ1ZScpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJl
cG8uY29uZmlnKClbJ3JlbW90ZS5vcmlnaW4udXJsJ10sICdnaXRAZXhhbXBsZS5vcmc6L21vY2sv
cmVwb3NpdG9yeScpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcG8uY29uZmlnKClb
J3N2bi1yZW1vdGUuc3ZuLnVybCddLCAnaHR0cHM6Ly9zdm4uZXhhbXBsZS5vcmcvcmVwb3NpdG9y
eS93ZWJraXQnKQpAQCAtNDE5LDcgKzQxOSw3IEBAIENvbW1pdERhdGU6IFNhdCBPY3QgMDMgMDI6
MDY6NDAgMjAyMCArMDAwMAogCiAgICAgZGVmIHRlc3RfZ2xvYmFsX2NvbmZpZyhzZWxmKToKICAg
ICAgICAgd2l0aCBtb2Nrcy5sb2NhbC5HaXQoc2VsZi5wYXRoLCBnaXRfc3ZuPVRydWUpLCBPdXRw
dXRDYXB0dXJlKCk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvY2FsLkdpdC5jb25m
aWcoKVsndXNlci5uYW1lJ10sICd0YXBwbGVAd2Via2l0Lm9yZycpCisgICAgICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGxvY2FsLkdpdC5jb25maWcoKVsndXNlci5uYW1lJ10sICdUaW0gQXBwbGUn
KQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2NhbC5HaXQuY29uZmlnKClbJ3NlbmRl
bWFpbC50cmFuc2ZlcmVuY29kaW5nJ10sICdiYXNlNjQnKQogCiAKZGlmZiAtLWdpdCBhL1Rvb2xz
L1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Rlc3Qvc2V0dXBfdW5p
dHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21w
eS90ZXN0L3NldHVwX3VuaXR0ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVjYWNmYWRkOTU5MTEwMWE4YWRj
ZWRlZTY0NzUwNTk1MDY3NjRiZWEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL2xp
YnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS90ZXN0L3NldHVwX3VuaXR0ZXN0LnB5CkBA
IC0wLDAgKzEsMTM3IEBACisjIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMg
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
IyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisjIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitp
bXBvcnQgb3MKKworZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IE91dHB1dENhcHR1cmUsIHRlc3Rp
bmcKK2Zyb20gd2Via2l0Y29yZXB5Lm1vY2tzIGltcG9ydCBUaW1lIGFzIE1vY2tUaW1lLCBUZXJt
aW5hbCBhcyBNb2NrVGVybWluYWwKK2Zyb20gd2Via2l0c2NtcHkgaW1wb3J0IHByb2dyYW0sIG1v
Y2tzCisKKworY2xhc3MgVGVzdFNldHVwKHRlc3RpbmcuUGF0aFRlc3RDYXNlKToKKyAgICBiYXNl
cGF0aCA9ICdtb2NrL3JlcG9zaXRvcnknCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAg
IHN1cGVyKFRlc3RTZXR1cCwgc2VsZikuc2V0VXAoKQorICAgICAgICBvcy5ta2Rpcihvcy5wYXRo
LmpvaW4oc2VsZi5wYXRoLCAnLmdpdCcpKQorICAgICAgICBvcy5ta2Rpcihvcy5wYXRoLmpvaW4o
c2VsZi5wYXRoLCAnLnN2bicpKQorCisgICAgZGVmIHRlc3Rfc3ZuKHNlbGYpOgorICAgICAgICB3
aXRoIE91dHB1dENhcHR1cmUoKSBhcyBjYXB0dXJlZCwgbW9ja3MubG9jYWwuR2l0KCksIG1vY2tz
LmxvY2FsLlN2bihzZWxmLnBhdGgpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBw
cm9ncmFtLm1haW4oCisgICAgICAgICAgICAgICAgYXJncz0oJ3NldHVwJywpLAorICAgICAgICAg
ICAgICAgIHBhdGg9c2VsZi5wYXRoLAorICAgICAgICAgICAgKSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChjYXB0dXJlZC5zdGRlcnIuZ2V0dmFsdWUoKSwgJ05vIHNldHVwIHJlcXVpcmVkIGZv
ciB7fVxuJy5mb3JtYXQoc2VsZi5wYXRoKSkKKworICAgIGRlZiB0ZXN0X2dpdGh1YihzZWxmKToK
KyAgICAgICAgd2l0aCBPdXRwdXRDYXB0dXJlKCkgYXMgY2FwdHVyZWQsIE1vY2tUZXJtaW5hbC5p
bnB1dCgneScpLCBtb2Nrcy5yZW1vdGUuR2l0SHViKCkgYXMgcmVtb3RlOgorICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgwLCBwcm9ncmFtLm1haW4oCisgICAgICAgICAgICAgICAgYXJncz0o
Jy1DJywgJ2h0dHBzOi8ve30nLmZvcm1hdChyZW1vdGUucmVtb3RlKSwgJ3NldHVwJyksCisgICAg
ICAgICAgICAgICAgcGF0aD1zZWxmLnBhdGgsCisgICAgICAgICAgICApKQorCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoY2FwdHVyZWQuc3Rkb3V0LmdldHZhbHVlKCksICJDcmVhdGUgYSBwcml2
YXRlIGZvcmsgb2YgJ1dlYktpdCcgYmVsb25naW5nIHRvICd1c2VybmFtZScgKFllcy9Obyk6IFxu
IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjYXB0dXJlZC5zdGRlcnIuZ2V0dmFsdWUoKSwg
JycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBjYXB0dXJlZC5yb290
LmxvZy5nZXR2YWx1ZSgpLAorICAgICAgICAgICAgJycnU2F2aW5nIEdpdEh1YiBjcmVkZW50aWFs
cyBpbiBzeXN0ZW0gY3JlZGVudGlhbCBzdG9yZS4uLgorR2l0SHViIGNyZWRlbnRpYWxzIHNhdmVk
IHZpYSBLZXlyaW5nIQorVmVyaWZ5aW5nIHVzZXIgb3duZWQgZm9yay4uLgorQ3JlYXRlZCBhIHBy
aXZhdGUgZm9yayBvZiAnV2ViS2l0JyBiZWxvbmdpbmcgdG8gJ3VzZXJuYW1lJyEKKycnJywKKyAg
ICAgICAgKQorCisgICAgZGVmIHRlc3RfZ2l0KHNlbGYpOgorICAgICAgICB3aXRoIE91dHB1dENh
cHR1cmUoKSBhcyBjYXB0dXJlZCwgbW9ja3MubG9jYWwuR2l0KHNlbGYucGF0aCkgYXMgcmVwbywg
bW9ja3MubG9jYWwuU3ZuKCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHByb2dy
YW0ubWFpbigKKyAgICAgICAgICAgICAgICBhcmdzPSgnc2V0dXAnLCAnLS1kZWZhdWx0cycpLAor
ICAgICAgICAgICAgICAgIHBhdGg9c2VsZi5wYXRoLAorICAgICAgICAgICAgKSkKKworICAgICAg
ICAgICAgY29uZmlnID0gcmVwby5jb25maWcoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgnXlstK0BhLXpBLVpfXS4qJCcsIGNvbmZpZy5nZXQoJ2RpZmYub2JqY3BwLnhmdW5jbmFtZScs
ICcnKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ15bQGEtekEtWl9dLiokJywgY29u
ZmlnLmdldCgnZGlmZi5vYmpjcHBoZWFkZXIueGZ1bmNuYW1lJywgJycpKQorICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgnYXV0bycsIGNvbmZpZy5nZXQoJ2NvbG9yLnN0YXR1cycsICcnKSkK
KyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2F1dG8nLCBjb25maWcuZ2V0KCdjb2xvci5k
aWZmJywgJycpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnYXV0bycsIGNvbmZpZy5n
ZXQoJ2NvbG9yLmJyYW5jaCcsICcnKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3Ry
dWUnLCBjb25maWcuZ2V0KCdwdWxsLnJlYmFzZScsICcnKSkKKworICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGNhcHR1cmVkLnN0ZG91dC5nZXR2YWx1ZSgpLCAnJykKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChjYXB0dXJlZC5zdGRlcnIuZ2V0dmFsdWUoKSwgJycpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoCisgICAgICAgICAgICBjYXB0dXJlZC5yb290LmxvZy5nZXR2YWx1ZSgpLAorICAg
ICAgICAgICAgJycnU2V0dGluZyBnaXQgdXNlciBlbWFpbCBmb3Ige3JlcG9zaXRvcnl9Li4uCitT
ZXQgZ2l0IHVzZXIgZW1haWwgdG8gJ3RhcHBsZUB3ZWJraXQub3JnJworU2V0dGluZyBnaXQgdXNl
ciBuYW1lIGZvciB7cmVwb3NpdG9yeX0uLi4KK1NldCBnaXQgdXNlciBuYW1lIHRvICdUaW0gQXBw
bGUnCitTZXR0aW5nIGJldHRlciBPYmplY3RpdmUtQyBkaWZmaW5nIGJlaGF2aW9yLi4uCitTZXQg
YmV0dGVyIE9iamVjdGl2ZS1DIGRpZmZpbmcgYmVoYXZpb3IhCitVc2luZyBhIHJlYmFzZSBtZXJn
ZSBzdHJhdGVneQorJycnLmZvcm1hdChyZXBvc2l0b3J5PXNlbGYucGF0aCksCisgICAgICAgICkK
KworICAgIGRlZiB0ZXN0X2dpdGh1Yl9jaGVja291dChzZWxmKToKKyAgICAgICAgd2l0aCBPdXRw
dXRDYXB0dXJlKCkgYXMgY2FwdHVyZWQsIG1vY2tzLnJlbW90ZS5HaXRIdWIoKSBhcyByZW1vdGUs
IFwKKyAgICAgICAgICAgIE1vY2tUZXJtaW5hbC5pbnB1dCgnbicsICdjb21taXR0ZXJAd2Via2l0
Lm9yZycsICduJywgJ0NvbW1pdHRlcicsICduJywgJ3knKSwgXAorICAgICAgICAgICAgbW9ja3Mu
bG9jYWwuR2l0KHNlbGYucGF0aCwgcmVtb3RlPSdodHRwczovL3t9Jy5mb3JtYXQocmVtb3RlLnJl
bW90ZSkpIGFzIHJlcG86CisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcHJvZ3Jh
bS5tYWluKAorICAgICAgICAgICAgICAgIGFyZ3M9KCdzZXR1cCcsKSwKKyAgICAgICAgICAgICAg
ICBwYXRoPXNlbGYucGF0aCwKKyAgICAgICAgICAgICkpCisKKyAgICAgICAgICAgIGNvbmZpZyA9
IHJlcG8uY29uZmlnKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ2NvbG9yLnN0YXR1
cycsIGNvbmZpZykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0NvbW1pdHRlcicsIGNv
bmZpZy5nZXQoJ3VzZXIubmFtZScsICcnKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
J2NvbW1pdHRlckB3ZWJraXQub3JnJywgY29uZmlnLmdldCgndXNlci5lbWFpbCcsICcnKSkKKwor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgY2FwdHVyZWQuc3Rkb3V0Lmdl
dHZhbHVlKCksCisgICAgICAgICAgICAnJydTZXQgJ3RhcHBsZUB3ZWJraXQub3JnJyBhcyB0aGUg
Z2l0IHVzZXIgZW1haWwgKFllcy9Obyk6IAorR2l0IHVzZXIgZW1haWw6IAorU2V0ICdUaW0gQXBw
bGUnIGFzIHRoZSBnaXQgdXNlciBuYW1lIChZZXMvTm8pOiAKK0dpdCB1c2VyIG5hbWU6IAorQXV0
by1jb2xvciBzdGF0dXMsIGRpZmYsIGFuZCBicmFuY2g/IChZZXMvTm8pOiAKK0NyZWF0ZSBhIHBy
aXZhdGUgZm9yayBvZiAnV2ViS2l0JyBiZWxvbmdpbmcgdG8gJ3VzZXJuYW1lJyAoWWVzL05vKTog
CisnJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FwdHVyZWQuc3RkZXJyLmdldHZhbHVl
KCksICcnKQorICAgICAgICBzZWxmLm1heERpZmYgPSBOb25lCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoCisgICAgICAgICAgICBjYXB0dXJlZC5yb290LmxvZy5nZXR2YWx1ZSgpLAorICAgICAg
ICAgICAgJycnU2V0dGluZyBnaXQgdXNlciBlbWFpbCBmb3Ige3JlcG9zaXRvcnl9Li4uCitTZXQg
Z2l0IHVzZXIgZW1haWwgdG8gJ2NvbW1pdHRlckB3ZWJraXQub3JnJworU2V0dGluZyBnaXQgdXNl
ciBuYW1lIGZvciB7cmVwb3NpdG9yeX0uLi4KK1NldCBnaXQgdXNlciBuYW1lIHRvICdDb21taXR0
ZXInCitTZXR0aW5nIGJldHRlciBPYmplY3RpdmUtQyBkaWZmaW5nIGJlaGF2aW9yLi4uCitTZXQg
YmV0dGVyIE9iamVjdGl2ZS1DIGRpZmZpbmcgYmVoYXZpb3IhCitVc2luZyBhIHJlYmFzZSBtZXJn
ZSBzdHJhdGVneQorU2F2aW5nIEdpdEh1YiBjcmVkZW50aWFscyBpbiBzeXN0ZW0gY3JlZGVudGlh
bCBzdG9yZS4uLgorR2l0SHViIGNyZWRlbnRpYWxzIHNhdmVkIHZpYSBLZXlyaW5nIQorVmVyaWZ5
aW5nIHVzZXIgb3duZWQgZm9yay4uLgorQ3JlYXRlZCBhIHByaXZhdGUgZm9yayBvZiAnV2ViS2l0
JyBiZWxvbmdpbmcgdG8gJ3VzZXJuYW1lJyEKK0FkZGluZyBmb3JrZWQgcmVtb3RlIGFzICd1c2Vy
bmFtZScgYW5kICdmb3JrJy4uLgorQWRkZWQgcmVtb3RlICd1c2VybmFtZScKK0FkZGVkIHJlbW90
ZSAnZm9yaycKK0ZldGNoaW5nICdodHRwczovL2dpdGh1Yi5leGFtcGxlLmNvbS91c2VybmFtZS9X
ZWJLaXQuZ2l0JworJycnLmZvcm1hdChyZXBvc2l0b3J5PXNlbGYucGF0aCksCisgICAgICAgICkK
</data>

          </attachment>
      

    </bug>

</bugzilla>