<?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>228027</bug_id>
          
          <creation_ts>2021-07-16 10:19:42 -0700</creation_ts>
          <short_desc>[git-webkit] Add identifiers to &apos;log&apos; and &apos;blame&apos;</short_desc>
          <delta_ts>2021-07-30 14:59:11 -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=225616</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=228000</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=228606</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=228619</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=228662</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jonathan Bedard">jbedard</reporter>
          <assigned_to name="Jonathan Bedard">jbedard</assigned_to>
          <cc>aakash_jain</cc>
    
    <cc>dewei_zhu</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>slewis</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zhifei_fang</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1777528</commentid>
    <comment_count>0</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-07-16 10:19:42 -0700</bug_when>
    <thetext>We should have a `git-webkit log` and `git-webkit blame` command that use identifiers in those commands and their output.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777529</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-07-16 10:20:32 -0700</bug_when>
    <thetext>&lt;rdar://problem/80691164&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777587</commentid>
    <comment_count>2</comment_count>
      <attachid>433700</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-07-16 14:01:14 -0700</bug_when>
    <thetext>Created attachment 433700
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1779832</commentid>
    <comment_count>3</comment_count>
      <attachid>434313</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-07-27 14:18:42 -0700</bug_when>
    <thetext>Created attachment 434313
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780288</commentid>
    <comment_count>4</comment_count>
      <attachid>434313</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2021-07-28 18:07:31 -0700</bug_when>
    <thetext>Comment on attachment 434313
Patch

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

&gt; Tools/Scripts/libraries/webkitscmpy/webkitscmpy/program/log.py:70
&gt; +    def main(cls, args, repository, **kwargs):
&gt; +        if not repository.root_path:
&gt; +            sys.stderr.write(&quot;Cannot run &apos;log&apos; on remote repository\n&quot;)
&gt; +            return 1
&gt; +
&gt; +        # If we&apos;re a terminal, rely on &apos;more&apos; to display output
&gt; +        if sys.stdin.isatty() and not isinstance(args, list):
&gt; +            environ = os.environ
&gt; +            environ[&apos;PYTHONPATH&apos;] = &apos;:&apos;.join(sys.path)
&gt; +
&gt; +            child = subprocess.Popen(
&gt; +                [sys.executable, __file__, repository.root_path, args.representation] + args.args,
&gt; +                env=environ,
&gt; +                stdout=subprocess.PIPE,
&gt; +                stderr=subprocess.PIPE,
&gt; +            )
&gt; +            more = subprocess.Popen([which(&apos;more&apos;), &apos;-F&apos;], stdin=child.stdout)
&gt; +
&gt; +            try:
&gt; +                while more.poll() is None and not child.poll():
&gt; +                    time.sleep(0.25)
&gt; +            finally:
&gt; +                child.kill()
&gt; +                more.kill()
&gt; +                child_error = child.stderr.read()
&gt; +                if child_error:
&gt; +                    sys.stderr.buffer.write(b&apos;\n&apos; + child_error)
&gt; +
&gt; +            return child.returncode
&gt; +
&gt; +        return FilteredCommand.main(args, repository, command=&apos;log&apos;, **kwargs)

This is almost identical to Blame.
The only differences are line 42 and Line 70, which can be changed to
```
sys.stderr.write(&quot;Cannot run &apos;{}&apos; on remote repository\n&quot;.format(cls.name))

return FilteredCommand.main(args, repository, command=cls.name, **kwargs)
```</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780381</commentid>
    <comment_count>5</comment_count>
      <attachid>434522</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-07-29 08:38:31 -0700</bug_when>
    <thetext>Created attachment 434522
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780419</commentid>
    <comment_count>6</comment_count>
      <attachid>434522</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2021-07-29 10:14:57 -0700</bug_when>
    <thetext>Comment on attachment 434522
Patch

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

r=me

&gt; Tools/Scripts/libraries/webkitscmpy/webkitscmpy/program/blame.py:37
&gt; +        return Blame.pager(args, repository, file=__file__, **kwargs)

Is It intentional to use &apos;Blame.pager&apos; rather than &apos;cls.pager&apos; ?

&gt; Tools/Scripts/libraries/webkitscmpy/webkitscmpy/program/log.py:37
&gt; +        return Log.pager(args, repository, file=__file__, **kwargs)

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780445</commentid>
    <comment_count>7</comment_count>
      <attachid>434536</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-07-29 11:01:51 -0700</bug_when>
    <thetext>Created attachment 434536
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780470</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-07-29 11:32:31 -0700</bug_when>
    <thetext>Committed r280436 (240074@main): &lt;https://commits.webkit.org/240074@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 434536.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433700</attachid>
            <date>2021-07-16 14:01:14 -0700</date>
            <delta_ts>2021-07-27 14:18:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228027-20210716140113.patch</filename>
            <type>text/plain</type>
            <size>19909</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI3OTk5MikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDMwIEBACisyMDIxLTA3LTE2ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBbZ2l0LXdlYmtpdF0gQWRkIGlkZW50aWZpZXJzIHRvICdsb2cnIGFuZCAn
YmxhbWUnCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjgwMjcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgwNjkxMTY0PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdJUCAoTWlzc2luZyB0ZXN0cykKKwor
ICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3NldHVwLnB5OiBCdW1wIHZl
cnNpb24uCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2Nt
cHkvX19pbml0X18ucHk6IERpdHRvLgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtp
dHNjbXB5L3dlYmtpdHNjbXB5L2xvY2FsL3NjbS5weToKKyAgICAgICAgKFNjbS5mcm9tX3BhdGgp
OiBQYXNzIGFsbCBrd2FyZ3MgdG8gbG9jYWwgU0NNIG9iamVjdC4KKyAgICAgICAgKiBTY3JpcHRz
L2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9wcm9ncmFtL19faW5pdF9fLnB5Ogor
ICAgICAgICAobWFpbik6IEFkZCBCbGFtZSBhbmQgTG9nIGNvbW1hbmRzLgorICAgICAgICAqIFNj
cmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Byb2dyYW0vYmxhbWUucHk6
IEFkZGVkLgorICAgICAgICAoQmxhbWUpOiBGaWx0ZXIgb3V0cHV0IGZvciBgYmxhbWVgIGNvbW1h
bmQgYW5kIHNlbmQgaXQgdG8gYG1vcmVgLgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dl
YmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Byb2dyYW0vY29tbWFuZC5weToKKyAgICAgICAgKEZpbHRl
cmVkQ29tbWFuZCk6IFNoYXJlZCBjb21tYW5kIHRoYXQgaGFuZGxlcyByZXBsYWNlIGhhc2hlcy9y
ZXZpc2lvbnMgaW4KKyAgICAgICAgYW4gU0NNIGNvbW1hbmQgd2l0aCBpZGVudGlmaWVycy4KKyAg
ICAgICAgKEZpbHRlcmVkQ29tbWFuZC5wYXJzZXIpOiBBbGxvdyB1c2VyIHRvIGNoYW5nZSB0aGUg
cHJlZmVyZWQgY29tbWl0IHJlcHJlc2VudGF0aW9uLgorICAgICAgICAoRmlsdGVyZWRDb21tYW5k
Lm1haW4pOiBNb2RpZnkgb3V0cHV0IG9mIHByb3ZpZGVkIGNvbW1hbmQgdG8gcmVwbGFjZSBjb21t
aXQgcmVwcmVzZW50YXRpb24KKyAgICAgICAgd2l0aCB0aGUgcHJlZmZlcmVkIGNvbW1pdCByZXBy
ZXNlbnRhdGlvbi4KKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJr
aXRzY21weS9wcm9ncmFtL2xvZy5weTogQWRkZWQuCisgICAgICAgIChMb2cpOiBGaWx0ZXIgb3V0
cHV0IGZvciBgbG9nYCBjb21tYW5kIGFuZCBzZW5kIGl0IHRvIGBtb3JlYC4KKwogMjAyMS0wNy0x
NiAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5jb20+CiAKICAgICAgICAgW3dlYmtp
dHNjbXB5XSBQcm92aWRlIEFQSSB0byBhY2Nlc3MgU1ZOIGNhY2hlCkluZGV4OiBUb29scy9TY3Jp
cHRzL2xpYnJhcmllcy93ZWJraXRzY21weS9zZXR1cC5weQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9T
Y3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS9zZXR1cC5weQkocmV2aXNpb24gMjc5OTkyKQor
KysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvc2V0dXAucHkJKHdvcmtpbmcg
Y29weSkKQEAgLTI5LDcgKzI5LDcgQEAgZGVmIHJlYWRtZSgpOgogCiBzZXR1cCgKICAgICBuYW1l
PSd3ZWJraXRzY21weScsCi0gICAgdmVyc2lvbj0nMC4xNS4wJywKKyAgICB2ZXJzaW9uPScxLjAu
MCcsCiAgICAgZGVzY3JpcHRpb249J0xpYnJhcnkgZGVzaWduZWQgdG8gaW50ZXJhY3Qgd2l0aCBn
aXQgYW5kIHN2biByZXBvc2l0b3JpZXMuJywKICAgICBsb25nX2Rlc2NyaXB0aW9uPXJlYWRtZSgp
LAogICAgIGNsYXNzaWZpZXJzPVsKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtp
dHNjbXB5L3dlYmtpdHNjbXB5L19faW5pdF9fLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Njcmlw
dHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L19faW5pdF9fLnB5CShyZXZpc2lv
biAyNzk5OTIpCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRz
Y21weS9fX2luaXRfXy5weQkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQCBleGNlcHQg
SW1wb3J0RXJyb3I6CiAgICAgICAgICJQbGVhc2UgaW5zdGFsbCB3ZWJraXRjb3JlcHkgd2l0aCBg
cGlwIGluc3RhbGwgd2Via2l0Y29yZXB5IC0tZXh0cmEtaW5kZXgtdXJsIDxwYWNrYWdlIGluZGV4
IFVSTD5gIgogICAgICkKIAotdmVyc2lvbiA9IFZlcnNpb24oMCwgMTUsIDApCit2ZXJzaW9uID0g
VmVyc2lvbigxLCAwLCAwKQogCiBBdXRvSW5zdGFsbC5yZWdpc3RlcihQYWNrYWdlKCdmYXN0ZW5l
cnMnLCBWZXJzaW9uKDAsIDE1LCAwKSkpCiBBdXRvSW5zdGFsbC5yZWdpc3RlcihQYWNrYWdlKCdt
b25vdG9uaWMnLCBWZXJzaW9uKDEsIDUpKSkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVz
L3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L2xvY2FsL3NjbS5weQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9sb2NhbC9zY20ucHkJ
KHJldmlzaW9uIDI3OTk5MikKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5
L3dlYmtpdHNjbXB5L2xvY2FsL3NjbS5weQkod29ya2luZyBjb3B5KQpAQCAtNDUsMTMgKzQ1LDEz
IEBAIGNsYXNzIFNjbShTY21CYXNlKToKICAgICAgICAgcmV0dXJuIG9zLnBhdGgucmVhbHBhdGgo
cGF0aCkKIAogICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBmcm9tX3BhdGgoY2xzLCBwYXRoLCBj
b250cmlidXRvcnM9Tm9uZSk6CisgICAgZGVmIGZyb21fcGF0aChjbHMsIHBhdGgsIGNvbnRyaWJ1
dG9ycz1Ob25lLCAqKmt3YXJncyk6CiAgICAgICAgIGZyb20gd2Via2l0c2NtcHkgaW1wb3J0IGxv
Y2FsCiAKICAgICAgICAgaWYgbG9jYWwuR2l0LmlzX2NoZWNrb3V0KHBhdGgpOgotICAgICAgICAg
ICAgcmV0dXJuIGxvY2FsLkdpdChwYXRoLCBjb250cmlidXRvcnM9Y29udHJpYnV0b3JzKQorICAg
ICAgICAgICAgcmV0dXJuIGxvY2FsLkdpdChwYXRoLCBjb250cmlidXRvcnM9Y29udHJpYnV0b3Jz
LCAqKmt3YXJncykKICAgICAgICAgaWYgbG9jYWwuU3ZuLmlzX2NoZWNrb3V0KHBhdGgpOgotICAg
ICAgICAgICAgcmV0dXJuIGxvY2FsLlN2bihwYXRoLCBjb250cmlidXRvcnM9Y29udHJpYnV0b3Jz
KQorICAgICAgICAgICAgcmV0dXJuIGxvY2FsLlN2bihwYXRoLCBjb250cmlidXRvcnM9Y29udHJp
YnV0b3JzLCAqKmt3YXJncykKICAgICAgICAgcmFpc2UgT1NFcnJvcigiJ3t9JyBpcyBub3QgYSBr
bm93biBTQ00gdHlwZSIuZm9ybWF0KHBhdGgpKQogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBh
dGgsIGRldl9icmFuY2hlcz1Ob25lLCBwcm9kX2JyYW5jaGVzPU5vbmUsIGNvbnRyaWJ1dG9ycz1O
b25lLCBpZD1Ob25lKToKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5
L3dlYmtpdHNjbXB5L3Byb2dyYW0vX19pbml0X18ucHkKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2Ny
aXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvcHJvZ3JhbS9fX2luaXRfXy5w
eQkocmV2aXNpb24gMjc5OTkyKQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2Nt
cHkvd2Via2l0c2NtcHkvcHJvZ3JhbS9fX2luaXRfXy5weQkod29ya2luZyBjb3B5KQpAQCAtMjQs
MTcgKzI0LDE5IEBAIGltcG9ydCBhcmdwYXJzZQogaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBvcwog
Ci1mcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgYXJndW1lbnRzLCBsb2cgYXMgd2Via2l0Y29yZXB5
X2xvZwotZnJvbSB3ZWJraXRzY21weSBpbXBvcnQgbG9jYWwsIGxvZywgcmVtb3RlCi0KK2Zyb20g
LmJsYW1lIGltcG9ydCBCbGFtZQogZnJvbSAuY2Fub25pY2FsaXplIGltcG9ydCBDYW5vbmljYWxp
emUKIGZyb20gLmNsZWFuIGltcG9ydCBDbGVhbgogZnJvbSAuY29tbWFuZCBpbXBvcnQgQ29tbWFu
ZAogZnJvbSAuY2hlY2tvdXQgaW1wb3J0IENoZWNrb3V0CiBmcm9tIC5maW5kIGltcG9ydCBGaW5k
LCBJbmZvCitmcm9tIC5sb2cgaW1wb3J0IExvZwogZnJvbSAucHVsbCBpbXBvcnQgUHVsbAogZnJv
bSAuc2V0dXBfZ2l0X3N2biBpbXBvcnQgU2V0dXBHaXRTdm4KIAorZnJvbSB3ZWJraXRjb3JlcHkg
aW1wb3J0IGFyZ3VtZW50cywgbG9nIGFzIHdlYmtpdGNvcmVweV9sb2cKK2Zyb20gd2Via2l0c2Nt
cHkgaW1wb3J0IGxvY2FsLCBsb2csIHJlbW90ZQorCiAKIGRlZiBtYWluKGFyZ3M9Tm9uZSwgcGF0
aD1Ob25lLCBsb2dnZXJzPU5vbmUsIGNvbnRyaWJ1dG9ycz1Ob25lLCBpZGVudGlmaWVyX3RlbXBs
YXRlPU5vbmUsIHN1YnZlcnNpb249Tm9uZSk6CiAgICAgbG9nZ2luZy5iYXNpY0NvbmZpZyhsZXZl
bD1sb2dnaW5nLldBUk5JTkcpCkBAIC02MSw3ICs2Myw3IEBAIGRlZiBtYWluKGFyZ3M9Tm9uZSwg
cGF0aD1Ob25lLCBsb2dnZXJzPU4KIAogICAgIHN1YnBhcnNlcnMgPSBwYXJzZXIuYWRkX3N1YnBh
cnNlcnMoaGVscD0nc3ViLWNvbW1hbmQgaGVscCcpCiAKLSAgICBwcm9ncmFtcyA9IFtGaW5kLCBJ
bmZvLCBDaGVja291dCwgQ2Fub25pY2FsaXplLCBQdWxsLCBDbGVhbl0KKyAgICBwcm9ncmFtcyA9
IFtGaW5kLCBJbmZvLCBDaGVja291dCwgQ2Fub25pY2FsaXplLCBQdWxsLCBDbGVhbiwgTG9nLCBC
bGFtZV0KICAgICBpZiBzdWJ2ZXJzaW9uOgogICAgICAgICBwcm9ncmFtcy5hcHBlbmQoU2V0dXBH
aXRTdm4pCiAKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtp
dHNjbXB5L3Byb2dyYW0vYmxhbWUucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJy
YXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvcHJvZ3JhbS9ibGFtZS5weQkobm9uZXhpc3Rl
bnQpCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9w
cm9ncmFtL2JsYW1lLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzggQEAKKyMhL3Vzci9i
aW4vZW52IHB5dGhvbjMKKworIyBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6Cisj
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorIyBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwor
aW1wb3J0IG9zCitpbXBvcnQgc3VicHJvY2VzcworaW1wb3J0IHN5cworaW1wb3J0IHRpbWUKKwor
ZnJvbSB3ZWJraXRzY21weSBpbXBvcnQgbG9jYWwKK2Zyb20gd2Via2l0c2NtcHkucHJvZ3JhbS5j
b21tYW5kIGltcG9ydCBGaWx0ZXJlZENvbW1hbmQKK2Zyb20gd2hpY2hjcmFmdCBpbXBvcnQgd2hp
Y2gKKworCitjbGFzcyBCbGFtZShGaWx0ZXJlZENvbW1hbmQpOgorICAgIG5hbWUgPSAnYmxhbWUn
CisgICAgaGVscCA9ICJGaWx0ZXIgcmF3IG91dHB1dCBvZiAnZ2l0IGJsYW1lJyBvciAnc3ZuIGJs
YW1lJyB0byByZXBsYWNlIG5hdGl2ZSBjb21taXQgcmVwcmVzZW50YXRpb24gd2l0aCBpZGVudGlm
aWVycyIKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBtYWluKGNscywgYXJncywgcmVwb3Np
dG9yeSwgKiprd2FyZ3MpOgorICAgICAgICBpZiBub3QgcmVwb3NpdG9yeS5yb290X3BhdGg6Cisg
ICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCJDYW5ub3QgcnVuICdibGFtZScgb24gcmVtb3Rl
IHJlcG9zaXRvcnlcbiIpCisgICAgICAgICAgICByZXR1cm4gMQorCisgICAgICAgICMgSWYgd2Un
cmUgYSB0ZXJtaW5hbCwgcmVseSBvbiAnbW9yZScgdG8gZGlzcGxheSBvdXRwdXQKKyAgICAgICAg
aWYgc3lzLnN0ZGluLmlzYXR0eSgpIGFuZCBub3QgaXNpbnN0YW5jZShhcmdzLCBsaXN0KToKKyAg
ICAgICAgICAgIGVudmlyb24gPSBvcy5lbnZpcm9uCisgICAgICAgICAgICBlbnZpcm9uWydQWVRI
T05QQVRIJ10gPSAnOicuam9pbihzeXMucGF0aCkKKworICAgICAgICAgICAgY2hpbGQgPSBzdWJw
cm9jZXNzLlBvcGVuKAorICAgICAgICAgICAgICAgIFtzeXMuZXhlY3V0YWJsZSwgX19maWxlX18s
IHJlcG9zaXRvcnkucm9vdF9wYXRoLCBhcmdzLnJlcHJlc2VudGF0aW9uXSArIGFyZ3MuYXJncywK
KyAgICAgICAgICAgICAgICBlbnY9ZW52aXJvbiwKKyAgICAgICAgICAgICAgICBzdGRvdXQ9c3Vi
cHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUsCisg
ICAgICAgICAgICApCisgICAgICAgICAgICBtb3JlID0gc3VicHJvY2Vzcy5Qb3Blbihbd2hpY2go
J21vcmUnKSwgJy1GJ10sIHN0ZGluPWNoaWxkLnN0ZG91dCkKKworICAgICAgICAgICAgdHJ5Ogor
ICAgICAgICAgICAgICAgIHdoaWxlIG1vcmUucG9sbCgpIGlzIE5vbmUgYW5kIG5vdCBjaGlsZC5w
b2xsKCk6CisgICAgICAgICAgICAgICAgICAgIHRpbWUuc2xlZXAoMC4yNSkKKyAgICAgICAgICAg
IGZpbmFsbHk6CisgICAgICAgICAgICAgICAgY2hpbGQua2lsbCgpCisgICAgICAgICAgICAgICAg
bW9yZS5raWxsKCkKKyAgICAgICAgICAgICAgICBjaGlsZF9lcnJvciA9IGNoaWxkLnN0ZGVyci5y
ZWFkKCkKKyAgICAgICAgICAgICAgICBpZiBjaGlsZF9lcnJvcjoKKyAgICAgICAgICAgICAgICAg
ICAgc3lzLnN0ZGVyci5idWZmZXIud3JpdGUoYidcbicgKyBjaGlsZF9lcnJvcikKKworICAgICAg
ICAgICAgcmV0dXJuIGNoaWxkLnJldHVybmNvZGUKKworICAgICAgICByZXR1cm4gRmlsdGVyZWRD
b21tYW5kLm1haW4oYXJncywgcmVwb3NpdG9yeSwgY29tbWFuZD0nYmxhbWUnLCAqKmt3YXJncykK
KworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHN5cy5leGl0KEJsYW1lLm1haW4o
CisgICAgICAgIHN5cy5hcmd2WzM6XSwKKyAgICAgICAgbG9jYWwuU2NtLmZyb21fcGF0aChwYXRo
PXN5cy5hcmd2WzFdLCBjYWNoZWQ9VHJ1ZSksCisgICAgICAgIHJlcHJlc2VudGF0aW9uPXN5cy5h
cmd2WzJdLAorICAgICkpCkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21w
eS93ZWJraXRzY21weS9wcm9ncmFtL2NvbW1hbmQucHkKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2Ny
aXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvcHJvZ3JhbS9jb21tYW5kLnB5
CShyZXZpc2lvbiAyNzk5OTIpCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21w
eS93ZWJraXRzY21weS9wcm9ncmFtL2NvbW1hbmQucHkJKHdvcmtpbmcgY29weSkKQEAgLTIwLDgg
KzIwLDEyIEBACiAjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKK2ltcG9y
dCByZQoraW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCBzeXMKIAorZnJvbSB3ZWJraXRzY21weS5j
b21taXQgaW1wb3J0IENvbW1pdAorCiAKIGNsYXNzIENvbW1hbmQob2JqZWN0KToKICAgICBuYW1l
ID0gTm9uZQpAQCAtMzgsMyArNDIsMTY1IEBAIGNsYXNzIENvbW1hbmQob2JqZWN0KToKICAgICBk
ZWYgbWFpbihjbHMsIGFyZ3MsIHJlcG9zaXRvcnksICoqa3dhcmdzKToKICAgICAgICAgc3lzLnN0
ZGVyci53cml0ZSgnTm8gY29tbWFuZCBzcGVjaWZpZWRcbicpCiAgICAgICAgIHJldHVybiAtMQor
CisKK2NsYXNzIEZpbHRlcmVkQ29tbWFuZChvYmplY3QpOgorICAgIElERU5USUZJRVIgPSAnaWRl
bnRpZmllcicKKyAgICBIQVNIID0gJ2hhc2gnCisgICAgUkVWSVNJT04gPSAncmV2aXNpb24nCisK
KyAgICBHSVRfSEVBREVSX1JFID0gcmUuY29tcGlsZShyJ15jb21taXQgKD9QPGhhc2g+W2EtZjAt
OUEtRl0rKScpCisgICAgU1ZOX0hFQURFUl9SRSA9IHJlLmNvbXBpbGUocideKD9QPHJldmlzaW9u
PnIvZCspIHwgJykKKworICAgIFJFVklTSU9OX1JFUyA9IChyZS5jb21waWxlKHInXig/UDxyZXZp
c2lvbj5cZCspXHMnKSwgcmUuY29tcGlsZShyJyg/UDxyZXZpc2lvbj5bclJdXGQrKScpKQorICAg
IEhBU0hfUkVTID0gKHJlLmNvbXBpbGUocideKD9QPGhhc2g+W2EtZjAtOUEtRl17OH1bYS1mMC05
QS1GXSspXHMnKSwgcmUuY29tcGlsZShyJyg/UDxoYXNoPlthLWYwLTlBLUZdezh9W2EtZjAtOUEt
Rl0rKScpKQorICAgIElERU5USUZJRVJfUkVTID0gKHJlLmNvbXBpbGUocideKD9QPGlkZW50aWZp
ZXI+KFxkK1wuKT9cZCtAXFMqKScpLCByZS5jb21waWxlKHInKD9QPGlkZW50aWZpZXI+KFxkK1wu
KT9cZCtAXFMqKScpKQorICAgIE5PX0ZJTFRFUl9SRVMgPSBbcmUuY29tcGlsZShyJyAgICBDYW5v
bmljYWwgbGluazonKSwgcmUuY29tcGlsZShyJyAgICBnaXQtc3ZuLWlkOicpXQorCisgICAgUkVQ
TEFDRV9NT0RFID0gMAorICAgIEFQUEVORF9NT0RFID0gMQorICAgIEhFQURFUl9NT0RFID0gMgor
CisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHBhcnNlcihjbHMsIHBhcnNlciwgbG9nZ2Vycz1O
b25lKToKKyAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgICAgICdhcmdzJywg
bmFyZ3M9JyonLAorICAgICAgICAgICAgdHlwZT1zdHIsIGRlZmF1bHQ9Tm9uZSwKKyAgICAgICAg
ICAgIGhlbHA9J0FyZ3VtZW50cyB0byBiZSBwYXNzZWQgdG8gdGJlIG5hdGl2ZSBzb3VyY2UtY29k
ZSBtYW5hZ2VtZW50IHRvb2wnLAorICAgICAgICApCisgICAgICAgIHBhcnNlci5hZGRfYXJndW1l
bnQoCisgICAgICAgICAgICAnLS1pZGVudGlmaWVyJywgJy1pJywKKyAgICAgICAgICAgIGhlbHA9
J1JlcHJlc2VudCBjb21taXRzIGFzIGlkZW50aWZpZXJzJywKKyAgICAgICAgICAgIGRlc3Q9J3Jl
cHJlc2VudGF0aW9uJywKKyAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVfY29uc3QnLCBjb25zdD1j
bHMuSURFTlRJRklFUiwKKyAgICAgICAgICAgIGRlZmF1bHQ9Y2xzLklERU5USUZJRVIsCisgICAg
ICAgICkKKyAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgICAgICctLWhhc2gn
LAorICAgICAgICAgICAgaGVscD0nUmVwcmVzZW50IGNvbW1pdHMgYXMgaGFzaGVzJywKKyAgICAg
ICAgICAgIGRlc3Q9J3JlcHJlc2VudGF0aW9uJywKKyAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVf
Y29uc3QnLCBjb25zdD1jbHMuSEFTSCwKKyAgICAgICAgICAgIGRlZmF1bHQ9Y2xzLklERU5USUZJ
RVIsCisgICAgICAgICkKKyAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgICAg
ICctLXJldmlzaW9uJywgJy1yJywKKyAgICAgICAgICAgIGhlbHA9J1JlcHJlc2VudCBjb21taXRz
IGFzIHJldmlzaW9ucycsCisgICAgICAgICAgICBkZXN0PSdyZXByZXNlbnRhdGlvbicsCisgICAg
ICAgICAgICBhY3Rpb249J3N0b3JlX2NvbnN0JywgY29uc3Q9Y2xzLlJFVklTSU9OLAorICAgICAg
ICAgICAgZGVmYXVsdD1jbHMuSURFTlRJRklFUiwKKyAgICAgICAgKQorICAgICAgICBwYXJzZXIu
YWRkX2FyZ3VtZW50KAorICAgICAgICAgICAgJy0tcmVwcmVzZW50YXRpb24nLCB0eXBlPXN0ciwK
KyAgICAgICAgICAgIGhlbHA9J0NoYW5nZSBtZXRob2QgdXNlZCB0byByZXByZXNlbnQgYSBjb21t
aXQgKGlkZW50aWZpZXIvaGFzaC9yZXZpc2lvbiknLAorICAgICAgICAgICAgZGVzdD0ncmVwcmVz
ZW50YXRpb24nLAorICAgICAgICAgICAgZGVmYXVsdD1jbHMuSURFTlRJRklFUiwKKyAgICAgICAg
KQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIG1haW4oY2xzLCBhcmdzLCByZXBvc2l0b3J5
LCBjb21tYW5kPU5vbmUsIHJlcHJlc2VudGF0aW9uPU5vbmUsICoqa3dhcmdzKToKKyAgICAgICAg
aWYgbm90IHJlcG9zaXRvcnkucGF0aDoKKyAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoIkNh
bm5vdCBydW4gJ3t9JyBvbiByZW1vdGUgcmVwb3NpdG9yeVxuIi5mb3JtYXQoY2xzLm5hbWUpKQor
ICAgICAgICAgICAgcmV0dXJuIDEKKworICAgICAgICBjYWNoZSA9IGdldGF0dHIocmVwb3NpdG9y
eSwgJ2NhY2hlJywgTm9uZSkKKyAgICAgICAgaWYgbm90IGNhY2hlOgorICAgICAgICAgICAgc3lz
LnN0ZGVyci53cml0ZSgnTm8gY2FjaGUgYXZhaWxhYmxlLCBjYW5ub3QgcGVyZm9ybWFudGx5IG1h
cCBjb21taXQgcmVmZXJlbmNlc1xuJykKKyAgICAgICAgICAgIHJldHVybiAxCisKKyAgICAgICAg
aWYgbm90IGlzaW5zdGFuY2UoYXJncywgbGlzdCk6CisgICAgICAgICAgICByZXByZXNlbnRhdGlv
biA9IHJlcHJlc2VudGF0aW9uIG9yIGFyZ3MucmVwcmVzZW50YXRpb24KKyAgICAgICAgICAgIGFy
Z3MgPSBhcmdzLmFyZ3MKKworICAgICAgICBpZiByZXByZXNlbnRhdGlvbiBub3QgaW4gKGNscy5J
REVOVElGSUVSLCBjbHMuSEFTSCwgY2xzLlJFVklTSU9OKToKKyAgICAgICAgICAgIHN5cy5zdGRl
cnIud3JpdGUoIid7fScgaXMgbm90IGEgdmFsaWQgY29tbWl0IHJlcHJlc2VudGF0aW9uXG4iLmZv
cm1hdChyZXByZXNlbnRhdGlvbikpCisgICAgICAgICAgICByZXR1cm4gMQorCisgICAgICAgIGZv
ciBpbmRleCBpbiByYW5nZShsZW4oYXJncykpOgorICAgICAgICAgICAgcGFyc2VkID0gQ29tbWl0
LnBhcnNlKGFyZ3NbaW5kZXhdLCBkb19hc3NlcnQ9RmFsc2UpCisgICAgICAgICAgICBpZiBub3Qg
cGFyc2VkOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICByZXBsYWNlbWVu
dCA9IE5vbmUKKyAgICAgICAgICAgIGlmIHJlcG9zaXRvcnkuaXNfc3ZuOgorICAgICAgICAgICAg
ICAgIHJlcGxhY2VtZW50ID0gcmVwb3NpdG9yeS5jYWNoZS50b19yZXZpc2lvbihoYXNoPXBhcnNl
ZC5oYXNoLCBpZGVudGlmaWVyPXN0cihwYXJzZWQpIGlmIHBhcnNlZC5pZGVudGlmaWVyIGVsc2Ug
Tm9uZSkKKyAgICAgICAgICAgIGlmIHJlcG9zaXRvcnkuaXNfZ2l0OgorICAgICAgICAgICAgICAg
IHJlcGxhY2VtZW50ID0gcmVwb3NpdG9yeS5jYWNoZS50b19oYXNoKHJldmlzaW9uPXBhcnNlZC5y
ZXZpc2lvbiwgaWRlbnRpZmllcj1zdHIocGFyc2VkKSBpZiBwYXJzZWQuaWRlbnRpZmllciBlbHNl
IE5vbmUpCisgICAgICAgICAgICBpZiByZXBsYWNlbWVudDoKKyAgICAgICAgICAgICAgICBhcmdz
W2luZGV4XSA9IHJlcGxhY2VtZW50CisKKyAgICAgICAgbG9nX291dHB1dCA9IHN1YnByb2Nlc3Mu
UG9wZW4oCisgICAgICAgICAgICBbcmVwb3NpdG9yeS5leGVjdXRhYmxlKCksIGNvbW1hbmRdICsg
YXJncywKKyAgICAgICAgICAgIGN3ZD1yZXBvc2l0b3J5LnJvb3RfcGF0aCwKKyAgICAgICAgICAg
IHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5Q
SVBFLAorICAgICAgICAgICAgKiooZGljdChlbmNvZGluZz0ndXRmLTgnKSBpZiBzeXMudmVyc2lv
bl9pbmZvID4gKDMsIDApIGVsc2UgZGljdCgpKQorICAgICAgICApCisKKyAgICAgICAgZGVmIHJl
cGxhY2VfbGluZShtYXRjaCwgbW9kZT1jbHMuQVBQRU5EX01PREUsICoqa3dhcmdzKToKKyAgICAg
ICAgICAgIHJlZmVyZW5jZSA9IGt3YXJncy5nZXQocmVwcmVzZW50YXRpb24pCisgICAgICAgICAg
ICBpZiBub3QgcmVmZXJlbmNlOgorICAgICAgICAgICAgICAgIHJlZmVyZW5jZSA9IGdldGF0dHIo
Y2FjaGUsICd0b197fScuZm9ybWF0KHJlcHJlc2VudGF0aW9uKSwgbGFtYmRhICoqa3dhcmdzOiBO
b25lKSgqKmt3YXJncykKKworICAgICAgICAgICAgaWYgcmVmZXJlbmNlOgorICAgICAgICAgICAg
ICAgIGlmIGlzaW5zdGFuY2UocmVmZXJlbmNlLCBpbnQpOgorICAgICAgICAgICAgICAgICAgICBy
ZWZlcmVuY2UgPSAncnt9Jy5mb3JtYXQocmVmZXJlbmNlKQorICAgICAgICAgICAgICAgIGlmIHJl
cHJlc2VudGF0aW9uID09ICdoYXNoJzoKKyAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlID0g
cmVmZXJlbmNlWzpDb21taXQuSEFTSF9MQUJFTF9TSVpFXQorICAgICAgICAgICAgICAgIGlmIG1v
ZGUgPT0gY2xzLkFQUEVORF9NT0RFOgorICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2UgPSAn
e30gKHt9KScuZm9ybWF0KG1hdGNoLmdyb3VwKDEpLCByZWZlcmVuY2UpCisgICAgICAgICAgICAg
ICAgaWYgbW9kZSA9PSBjbHMuSEVBREVSX01PREU6CisgICAgICAgICAgICAgICAgICAgIGFsdGVy
bmF0ZXMgPSBbXSBpZiBtYXRjaC5ncm91cCgxKS5zdGFydHN3aXRoKHJlZmVyZW5jZSkgZWxzZSBb
bWF0Y2guZ3JvdXAoMSldCisgICAgICAgICAgICAgICAgICAgIGZvciByZXByIGluIHsncmV2aXNp
b24nLCAnaGFzaCcsICdpZGVudGlmaWVyJ30gLSB7J2hhc2gnIGlmIHJlcG9zaXRvcnkuaXNfZ2l0
IGVsc2UgJ3JldmlzaW9uJywgcmVwcmVzZW50YXRpb259OgorICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgcmVwciBpbiBrd2FyZ3M6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGlu
dWUKKyAgICAgICAgICAgICAgICAgICAgICAgIG90aGVyID0gZ2V0YXR0cihjYWNoZSwgJ3RvX3t9
Jy5mb3JtYXQocmVwciksIGxhbWJkYSAqKmt3YXJnczogTm9uZSkoKiprd2FyZ3MpCisgICAgICAg
ICAgICAgICAgICAgICAgICBpZiBub3Qgb3RoZXI6CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29udGludWUKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIG90aGVyID09ICdoYXNoJzoK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdGhlciA9IG90aGVyWzpDb21taXQuSEFTSF9M
QUJFTF9TSVpFXQorICAgICAgICAgICAgICAgICAgICAgICAgYWx0ZXJuYXRlcy5hcHBlbmQoJ3J7
fScuZm9ybWF0KG90aGVyKSBpZiBpc2luc3RhbmNlKG90aGVyLCBpbnQpIGVsc2Ugb3RoZXIpCisg
ICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZSA9ICd7fSAoe30pJy5mb3JtYXQocmVmZXJlbmNl
LCAnLCAnLmpvaW4oYWx0ZXJuYXRlcykpCisgICAgICAgICAgICAgICAgcmV0dXJuIG1hdGNoLmdy
b3VwKDApLnJlcGxhY2UobWF0Y2guZ3JvdXAoMSksIHJlZmVyZW5jZSkKKyAgICAgICAgICAgIHJl
dHVybiBtYXRjaC5ncm91cCgwKQorCisgICAgICAgIHJlcyA9IHt9CisgICAgICAgIGlmIHJlcHJl
c2VudGF0aW9uICE9IGNscy5IQVNIOgorICAgICAgICAgICAgcmVzW2Nscy5IQVNIXSA9IGNscy5I
QVNIX1JFUworICAgICAgICBpZiByZXByZXNlbnRhdGlvbiAhPSBjbHMuUkVWSVNJT046CisgICAg
ICAgICAgICByZXNbY2xzLlJFVklTSU9OXSA9IGNscy5SRVZJU0lPTl9SRVMKKyAgICAgICAgaWYg
cmVwcmVzZW50YXRpb24gIT0gY2xzLklERU5USUZJRVI6CisgICAgICAgICAgICByZXNbY2xzLklE
RU5USUZJRVJdID0gY2xzLklERU5USUZJRVJfUkVTCisKKyAgICAgICAgaGVhZGVyX3JlID0gY2xz
LkdJVF9IRUFERVJfUkUgaWYgcmVwb3NpdG9yeS5pc19naXQgZWxzZSBjbHMuU1ZOX0hFQURFUl9S
RQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGxpbmUgPSBsb2dfb3V0cHV0LnN0ZG91dC5y
ZWFkbGluZSgpCisgICAgICAgICAgICB3aGlsZSBsaW5lOgorICAgICAgICAgICAgICAgIGhlYWRl
ciA9IGhlYWRlcl9yZS5zdWIoCisgICAgICAgICAgICAgICAgICAgIGxhbWJkYSBtYXRjaDogcmVw
bGFjZV9saW5lKG1hdGNoLCBtb2RlPWNscy5IRUFERVJfTU9ERSwgKip7J2hhc2gnIGlmIHJlcG9z
aXRvcnkuaXNfZ2l0IGVsc2UgJ3JldmlzaW9uJzogbWF0Y2guZ3JvdXAoMSl9KSwKKyAgICAgICAg
ICAgICAgICAgICAgbGluZSwKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgaWYg
aGVhZGVyICE9IGxpbmU6CisgICAgICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoaGVh
ZGVyKQorICAgICAgICAgICAgICAgICAgICBsaW5lID0gbG9nX291dHB1dC5zdGRvdXQucmVhZGxp
bmUoKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAgICAgZm9y
IHJlcHIsIHJlZ2V4cyBpbiByZXMuaXRlbXMoKToKKyAgICAgICAgICAgICAgICAgICAgbGluZSA9
IHJlZ2V4c1swXS5zdWIoCisgICAgICAgICAgICAgICAgICAgICAgICBsYW1iZGEgbWF0Y2g6IHJl
cGxhY2VfbGluZShtYXRjaCwgbW9kZT1jbHMuUkVQTEFDRV9NT0RFLCAqKntyZXByOiBtYXRjaC5n
cm91cCgxKX0pLAorICAgICAgICAgICAgICAgICAgICAgICAgbGluZSwKKyAgICAgICAgICAgICAg
ICAgICAgKQorCisgICAgICAgICAgICAgICAgaWYgbm90IGFueShyLm1hdGNoKGxpbmUpIGZvciBy
IGluIGNscy5OT19GSUxURVJfUkVTKToKKyAgICAgICAgICAgICAgICAgICAgZm9yIHJlcHIsIHJl
Z2V4cyBpbiByZXMuaXRlbXMoKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUgPSByZWdl
eHNbMV0uc3ViKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbWJkYSBtYXRjaDogcmVw
bGFjZV9saW5lKG1hdGNoLCBtb2RlPWNscy5BUFBFTkRfTU9ERSwgKip7cmVwcjogbWF0Y2guZ3Jv
dXAoMSl9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lLAorICAgICAgICAgICAg
ICAgICAgICAgICAgKQorCisgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZShsaW5lKQor
CisgICAgICAgICAgICAgICAgbGluZSA9IGxvZ19vdXRwdXQuc3Rkb3V0LnJlYWRsaW5lKCkKKwor
ICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgbG9nX291dHB1dC5raWxsKCkKKyAgICAgICAg
cmV0dXJuIGxvZ19vdXRwdXQucmV0dXJuY29kZQpJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJp
ZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvcHJvZ3JhbS9sb2cucHkKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvcHJvZ3JhbS9s
b2cucHkJKG5vbmV4aXN0ZW50KQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2Nt
cHkvd2Via2l0c2NtcHkvcHJvZ3JhbS9sb2cucHkJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3
OCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworCisjIENvcHlyaWdodCAoQykgMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisj
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorCitpbXBvcnQgb3MKK2ltcG9ydCBzdWJwcm9jZXNzCitpbXBvcnQgc3lzCitp
bXBvcnQgdGltZQorCitmcm9tIHdlYmtpdHNjbXB5IGltcG9ydCBsb2NhbAorZnJvbSB3ZWJraXRz
Y21weS5wcm9ncmFtLmNvbW1hbmQgaW1wb3J0IEZpbHRlcmVkQ29tbWFuZAorZnJvbSB3aGljaGNy
YWZ0IGltcG9ydCB3aGljaAorCisKK2NsYXNzIExvZyhGaWx0ZXJlZENvbW1hbmQpOgorICAgIG5h
bWUgPSAnbG9nJworICAgIGhlbHAgPSAiRmlsdGVyIHJhdyBvdXRwdXQgb2YgJ2dpdCBsb2cnIG9y
ICdzdm4gbG9nJyB0byByZXBsYWNlIG5hdGl2ZSBjb21taXQgcmVwcmVzZW50YXRpb24gd2l0aCBp
ZGVudGlmaWVycyIKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBtYWluKGNscywgYXJncywg
cmVwb3NpdG9yeSwgKiprd2FyZ3MpOgorICAgICAgICBpZiBub3QgcmVwb3NpdG9yeS5yb290X3Bh
dGg6CisgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCJDYW5ub3QgcnVuICdsb2cnIG9uIHJl
bW90ZSByZXBvc2l0b3J5XG4iKQorICAgICAgICAgICAgcmV0dXJuIDEKKworICAgICAgICAjIElm
IHdlJ3JlIGEgdGVybWluYWwsIHJlbHkgb24gJ21vcmUnIHRvIGRpc3BsYXkgb3V0cHV0CisgICAg
ICAgIGlmIHN5cy5zdGRpbi5pc2F0dHkoKSBhbmQgbm90IGlzaW5zdGFuY2UoYXJncywgbGlzdCk6
CisgICAgICAgICAgICBlbnZpcm9uID0gb3MuZW52aXJvbgorICAgICAgICAgICAgZW52aXJvblsn
UFlUSE9OUEFUSCddID0gJzonLmpvaW4oc3lzLnBhdGgpCisKKyAgICAgICAgICAgIGNoaWxkID0g
c3VicHJvY2Vzcy5Qb3BlbigKKyAgICAgICAgICAgICAgICBbc3lzLmV4ZWN1dGFibGUsIF9fZmls
ZV9fLCByZXBvc2l0b3J5LnJvb3RfcGF0aCwgYXJncy5yZXByZXNlbnRhdGlvbl0gKyBhcmdzLmFy
Z3MsCisgICAgICAgICAgICAgICAgZW52PWVudmlyb24sCisgICAgICAgICAgICAgICAgc3Rkb3V0
PXN1YnByb2Nlc3MuUElQRSwKKyAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5QSVBF
LAorICAgICAgICAgICAgKQorICAgICAgICAgICAgbW9yZSA9IHN1YnByb2Nlc3MuUG9wZW4oW3do
aWNoKCdtb3JlJyksICctRiddLCBzdGRpbj1jaGlsZC5zdGRvdXQpCisKKyAgICAgICAgICAgIHRy
eToKKyAgICAgICAgICAgICAgICB3aGlsZSBtb3JlLnBvbGwoKSBpcyBOb25lIGFuZCBub3QgY2hp
bGQucG9sbCgpOgorICAgICAgICAgICAgICAgICAgICB0aW1lLnNsZWVwKDAuMjUpCisgICAgICAg
ICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGNoaWxkLmtpbGwoKQorICAgICAgICAgICAg
ICAgIG1vcmUua2lsbCgpCisgICAgICAgICAgICAgICAgY2hpbGRfZXJyb3IgPSBjaGlsZC5zdGRl
cnIucmVhZCgpCisgICAgICAgICAgICAgICAgaWYgY2hpbGRfZXJyb3I6CisgICAgICAgICAgICAg
ICAgICAgIHN5cy5zdGRlcnIuYnVmZmVyLndyaXRlKGInXG4nICsgY2hpbGRfZXJyb3IpCisKKyAg
ICAgICAgICAgIHJldHVybiBjaGlsZC5yZXR1cm5jb2RlCisKKyAgICAgICAgcmV0dXJuIEZpbHRl
cmVkQ29tbWFuZC5tYWluKGFyZ3MsIHJlcG9zaXRvcnksIGNvbW1hbmQ9J2xvZycsICoqa3dhcmdz
KQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgc3lzLmV4aXQoTG9nLm1haW4o
CisgICAgICAgIHN5cy5hcmd2WzM6XSwKKyAgICAgICAgbG9jYWwuU2NtLmZyb21fcGF0aChwYXRo
PXN5cy5hcmd2WzFdLCBjYWNoZWQ9VHJ1ZSksCisgICAgICAgIHJlcHJlc2VudGF0aW9uPXN5cy5h
cmd2WzJdLAorICAgICkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434313</attachid>
            <date>2021-07-27 14:18:42 -0700</date>
            <delta_ts>2021-07-29 08:38:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228027-20210727141841.patch</filename>
            <type>text/plain</type>
            <size>29414</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI4MDM0OCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDM0IEBACisyMDIxLTA3LTI3ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBbZ2l0LXdlYmtpdF0gQWRkIGlkZW50aWZpZXJzIHRvICdsb2cnIGFuZCAn
YmxhbWUnCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjgwMjcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgwNjkxMTY0PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Vi
a2l0c2NtcHkvc2V0dXAucHk6IEJ1bXAgdmVyc2lvbi4KKyAgICAgICAgKiBTY3JpcHRzL2xpYnJh
cmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9fX2luaXRfXy5weTogRGl0dG8uCisgICAgICAg
ICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbG9jYWwvc2NtLnB5
OgorICAgICAgICAoU2NtLmZyb21fcGF0aCk6IFBhc3MgYWxsIGt3YXJncyB0byBsb2NhbCBTQ00g
b2JqZWN0LgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNj
bXB5L3Byb2dyYW0vX19pbml0X18ucHk6CisgICAgICAgIChtYWluKTogQWRkIEJsYW1lIGFuZCBM
b2cgY29tbWFuZHMuCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Vi
a2l0c2NtcHkvcHJvZ3JhbS9ibGFtZS5weTogQWRkZWQuCisgICAgICAgIChCbGFtZSk6IEZpbHRl
ciBvdXRwdXQgZm9yIGBibGFtZWAgY29tbWFuZCBhbmQgc2VuZCBpdCB0byBgbW9yZWAuCisgICAg
ICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvcHJvZ3JhbS9j
b21tYW5kLnB5OgorICAgICAgICAoRmlsdGVyZWRDb21tYW5kKTogU2hhcmVkIGNvbW1hbmQgdGhh
dCBoYW5kbGVzIHJlcGxhY2UgaGFzaGVzL3JldmlzaW9ucyBpbgorICAgICAgICBhbiBTQ00gY29t
bWFuZCB3aXRoIGlkZW50aWZpZXJzLgorICAgICAgICAoRmlsdGVyZWRDb21tYW5kLnBhcnNlcik6
IEFsbG93IHVzZXIgdG8gY2hhbmdlIHRoZSBwcmVmZXJlZCBjb21taXQgcmVwcmVzZW50YXRpb24u
CisgICAgICAgIChGaWx0ZXJlZENvbW1hbmQubWFpbik6IE1vZGlmeSBvdXRwdXQgb2YgcHJvdmlk
ZWQgY29tbWFuZCB0byByZXBsYWNlIGNvbW1pdCByZXByZXNlbnRhdGlvbgorICAgICAgICB3aXRo
IHRoZSBwcmVmZmVyZWQgY29tbWl0IHJlcHJlc2VudGF0aW9uLgorICAgICAgICAqIFNjcmlwdHMv
bGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Byb2dyYW0vbG9nLnB5OiBBZGRlZC4K
KyAgICAgICAgKExvZyk6IEZpbHRlciBvdXRwdXQgZm9yIGBsb2dgIGNvbW1hbmQgYW5kIHNlbmQg
aXQgdG8gYG1vcmVgLgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dl
YmtpdHNjbXB5L3Rlc3QvbG9nX3VuaXR0ZXN0LnB5OiBBZGRlZC4KKyAgICAgICAgKFRlc3RMb2cp
OgorICAgICAgICAoVGVzdExvZy5zZXRVcCk6CisgICAgICAgIChUZXN0TG9nLnRlc3RfZ2l0KToK
KyAgICAgICAgKFRlc3RMb2cudGVzdF9naXRfc3ZuKToKKyAgICAgICAgKFRlc3RMb2cudGVzdF9n
aXQpOgorCiAyMDIxLTA3LTI3ICBLZXZpbiBOZWFsICA8a2V2aW5fbmVhbEBhcHBsZS5jb20+CiAK
ICAgICAgICAgW3Jlc3VsdHMud2Via2l0Lm9yZ10gVG9vbHRpcHMgc2hvdWxkIHJlbWFpbiB2aXNp
YmxlIHdoZW4gaG92ZXJpbmcgb3ZlciBjb21taXQgcmVwcmVzZW50YXRpb25zCkluZGV4OiBUb29s
cy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS9zZXR1cC5weQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS9zZXR1cC5weQkocmV2aXNpb24gMjgw
MzM5KQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvc2V0dXAucHkJKHdv
cmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAgZGVmIHJlYWRtZSgpOgogCiBzZXR1cCgKICAg
ICBuYW1lPSd3ZWJraXRzY21weScsCi0gICAgdmVyc2lvbj0nMC4xNS4wJywKKyAgICB2ZXJzaW9u
PScxLjAuMCcsCiAgICAgZGVzY3JpcHRpb249J0xpYnJhcnkgZGVzaWduZWQgdG8gaW50ZXJhY3Qg
d2l0aCBnaXQgYW5kIHN2biByZXBvc2l0b3JpZXMuJywKICAgICBsb25nX2Rlc2NyaXB0aW9uPXJl
YWRtZSgpLAogICAgIGNsYXNzaWZpZXJzPVsKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVz
L3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L19faW5pdF9fLnB5Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L19faW5pdF9fLnB5CShy
ZXZpc2lvbiAyODAzMzkpCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93
ZWJraXRzY21weS9fX2luaXRfXy5weQkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQCBl
eGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgICAgICJQbGVhc2UgaW5zdGFsbCB3ZWJraXRjb3JlcHkg
d2l0aCBgcGlwIGluc3RhbGwgd2Via2l0Y29yZXB5IC0tZXh0cmEtaW5kZXgtdXJsIDxwYWNrYWdl
IGluZGV4IFVSTD5gIgogICAgICkKIAotdmVyc2lvbiA9IFZlcnNpb24oMCwgMTUsIDApCit2ZXJz
aW9uID0gVmVyc2lvbigxLCAwLCAwKQogCiBBdXRvSW5zdGFsbC5yZWdpc3RlcihQYWNrYWdlKCdm
YXN0ZW5lcnMnLCBWZXJzaW9uKDAsIDE1LCAwKSkpCiBBdXRvSW5zdGFsbC5yZWdpc3RlcihQYWNr
YWdlKCdtb25vdG9uaWMnLCBWZXJzaW9uKDEsIDUpKSkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGli
cmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L2xvY2FsL3NjbS5weQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9sb2NhbC9z
Y20ucHkJKHJldmlzaW9uIDI4MDMzOSkKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtp
dHNjbXB5L3dlYmtpdHNjbXB5L2xvY2FsL3NjbS5weQkod29ya2luZyBjb3B5KQpAQCAtNDUsMTMg
KzQ1LDEzIEBAIGNsYXNzIFNjbShTY21CYXNlKToKICAgICAgICAgcmV0dXJuIG9zLnBhdGgucmVh
bHBhdGgocGF0aCkKIAogICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBmcm9tX3BhdGgoY2xzLCBw
YXRoLCBjb250cmlidXRvcnM9Tm9uZSk6CisgICAgZGVmIGZyb21fcGF0aChjbHMsIHBhdGgsIGNv
bnRyaWJ1dG9ycz1Ob25lLCAqKmt3YXJncyk6CiAgICAgICAgIGZyb20gd2Via2l0c2NtcHkgaW1w
b3J0IGxvY2FsCiAKICAgICAgICAgaWYgbG9jYWwuR2l0LmlzX2NoZWNrb3V0KHBhdGgpOgotICAg
ICAgICAgICAgcmV0dXJuIGxvY2FsLkdpdChwYXRoLCBjb250cmlidXRvcnM9Y29udHJpYnV0b3Jz
KQorICAgICAgICAgICAgcmV0dXJuIGxvY2FsLkdpdChwYXRoLCBjb250cmlidXRvcnM9Y29udHJp
YnV0b3JzLCAqKmt3YXJncykKICAgICAgICAgaWYgbG9jYWwuU3ZuLmlzX2NoZWNrb3V0KHBhdGgp
OgotICAgICAgICAgICAgcmV0dXJuIGxvY2FsLlN2bihwYXRoLCBjb250cmlidXRvcnM9Y29udHJp
YnV0b3JzKQorICAgICAgICAgICAgcmV0dXJuIGxvY2FsLlN2bihwYXRoLCBjb250cmlidXRvcnM9
Y29udHJpYnV0b3JzLCAqKmt3YXJncykKICAgICAgICAgcmFpc2UgT1NFcnJvcigiJ3t9JyBpcyBu
b3QgYSBrbm93biBTQ00gdHlwZSIuZm9ybWF0KHBhdGgpKQogCiAgICAgZGVmIF9faW5pdF9fKHNl
bGYsIHBhdGgsIGRldl9icmFuY2hlcz1Ob25lLCBwcm9kX2JyYW5jaGVzPU5vbmUsIGNvbnRyaWJ1
dG9ycz1Ob25lLCBpZD1Ob25lKToKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtp
dHNjbXB5L3dlYmtpdHNjbXB5L21vY2tzL2xvY2FsL3N2bi5weQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9tb2Nrcy9sb2NhbC9z
dm4ucHkJKHJldmlzaW9uIDI4MDMzOSkKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtp
dHNjbXB5L3dlYmtpdHNjbXB5L21vY2tzL2xvY2FsL3N2bi5weQkod29ya2luZyBjb3B5KQpAQCAt
MTMyLDYgKzEzMiwxNSBAQCBjbGFzcyBTdm4obW9ja3MuU3VicHJvY2Vzcyk6CiAgICAgICAgICAg
ICAgICAgICAgIGJlZ2luPWludChhcmdzWzNdLnNwbGl0KCc6JylbLTFdKSwKICAgICAgICAgICAg
ICAgICApIGlmIHNlbGYuY29ubmVjdGVkIGVsc2UgbW9ja3MuUHJvY2Vzc0NvbXBsZXRpb24ocmV0
dXJuY29kZT0xKQogICAgICAgICAgICAgKSwgbW9ja3MuU3VicHJvY2Vzcy5Sb3V0ZSgKKyAgICAg
ICAgICAgICAgICBzZWxmLmV4ZWN1dGFibGUsICdsb2cnLAorICAgICAgICAgICAgICAgIGN3ZD1z
ZWxmLnBhdGgsCisgICAgICAgICAgICAgICAgZ2VuZXJhdG9yPWxhbWJkYSAqYXJncywgKiprd2Fy
Z3M6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2xvZ19yYW5nZSgKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGJyYW5jaD0ndHJ1bmsnLAorICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW49
c2VsZi5jb21taXRzWyd0cnVuayddWzBdLnJldmlzaW9uLAorICAgICAgICAgICAgICAgICAgICAg
ICAgZW5kPXNlbGYuY29tbWl0c1sndHJ1bmsnXVstMV0ucmV2aXNpb24sCisgICAgICAgICAgICAg
ICAgICAgICkgaWYgc2VsZi5jb25uZWN0ZWQgZWxzZSBtb2Nrcy5Qcm9jZXNzQ29tcGxldGlvbihy
ZXR1cm5jb2RlPTEpCisgICAgICAgICAgICApLCBtb2Nrcy5TdWJwcm9jZXNzLlJvdXRlKAogICAg
ICAgICAgICAgICAgIHNlbGYuZXhlY3V0YWJsZSwgJ3VwJywgJy1yJywgcmUuY29tcGlsZShyJ1xk
KycpLAogICAgICAgICAgICAgICAgIGN3ZD1zZWxmLnBhdGgsCiAgICAgICAgICAgICAgICAgZ2Vu
ZXJhdG9yPWxhbWJkYSAqYXJncywgKiprd2FyZ3M6CkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJh
cmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9wcm9ncmFtL19faW5pdF9fLnB5Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3By
b2dyYW0vX19pbml0X18ucHkJKHJldmlzaW9uIDI4MDMzOSkKKysrIFRvb2xzL1NjcmlwdHMvbGli
cmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Byb2dyYW0vX19pbml0X18ucHkJKHdvcmtp
bmcgY29weSkKQEAgLTI0LDE3ICsyNCwxOSBAQCBpbXBvcnQgYXJncGFyc2UKIGltcG9ydCBsb2dn
aW5nCiBpbXBvcnQgb3MKIAotZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IGFyZ3VtZW50cywgbG9n
IGFzIHdlYmtpdGNvcmVweV9sb2cKLWZyb20gd2Via2l0c2NtcHkgaW1wb3J0IGxvY2FsLCBsb2cs
IHJlbW90ZQotCitmcm9tIC5ibGFtZSBpbXBvcnQgQmxhbWUKIGZyb20gLmNhbm9uaWNhbGl6ZSBp
bXBvcnQgQ2Fub25pY2FsaXplCiBmcm9tIC5jbGVhbiBpbXBvcnQgQ2xlYW4KIGZyb20gLmNvbW1h
bmQgaW1wb3J0IENvbW1hbmQKIGZyb20gLmNoZWNrb3V0IGltcG9ydCBDaGVja291dAogZnJvbSAu
ZmluZCBpbXBvcnQgRmluZCwgSW5mbworZnJvbSAubG9nIGltcG9ydCBMb2cKIGZyb20gLnB1bGwg
aW1wb3J0IFB1bGwKIGZyb20gLnNldHVwX2dpdF9zdm4gaW1wb3J0IFNldHVwR2l0U3ZuCiAKK2Zy
b20gd2Via2l0Y29yZXB5IGltcG9ydCBhcmd1bWVudHMsIGxvZyBhcyB3ZWJraXRjb3JlcHlfbG9n
Citmcm9tIHdlYmtpdHNjbXB5IGltcG9ydCBsb2NhbCwgbG9nLCByZW1vdGUKKwogCiBkZWYgbWFp
bihhcmdzPU5vbmUsIHBhdGg9Tm9uZSwgbG9nZ2Vycz1Ob25lLCBjb250cmlidXRvcnM9Tm9uZSwg
aWRlbnRpZmllcl90ZW1wbGF0ZT1Ob25lLCBzdWJ2ZXJzaW9uPU5vbmUpOgogICAgIGxvZ2dpbmcu
YmFzaWNDb25maWcobGV2ZWw9bG9nZ2luZy5XQVJOSU5HKQpAQCAtNjEsNyArNjMsNyBAQCBkZWYg
bWFpbihhcmdzPU5vbmUsIHBhdGg9Tm9uZSwgbG9nZ2Vycz1OCiAKICAgICBzdWJwYXJzZXJzID0g
cGFyc2VyLmFkZF9zdWJwYXJzZXJzKGhlbHA9J3N1Yi1jb21tYW5kIGhlbHAnKQogCi0gICAgcHJv
Z3JhbXMgPSBbRmluZCwgSW5mbywgQ2hlY2tvdXQsIENhbm9uaWNhbGl6ZSwgUHVsbCwgQ2xlYW5d
CisgICAgcHJvZ3JhbXMgPSBbRmluZCwgSW5mbywgQ2hlY2tvdXQsIENhbm9uaWNhbGl6ZSwgUHVs
bCwgQ2xlYW4sIExvZywgQmxhbWVdCiAgICAgaWYgc3VidmVyc2lvbjoKICAgICAgICAgcHJvZ3Jh
bXMuYXBwZW5kKFNldHVwR2l0U3ZuKQogCkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93
ZWJraXRzY21weS93ZWJraXRzY21weS9wcm9ncmFtL2JsYW1lLnB5Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Byb2dyYW0vYmxh
bWUucHkJKG5vbmV4aXN0ZW50KQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2Nt
cHkvd2Via2l0c2NtcHkvcHJvZ3JhbS9ibGFtZS5weQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDc4IEBACisjIS91c3IvYmluL2VudiBweXRob24zCisKKyMgQ29weXJpZ2h0IChDKSAyMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQK
KyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisj
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisKK2ltcG9ydCBvcworaW1wb3J0IHN1YnByb2Nlc3MKK2ltcG9ydCBzeXMK
K2ltcG9ydCB0aW1lCisKK2Zyb20gd2Via2l0c2NtcHkgaW1wb3J0IGxvY2FsCitmcm9tIHdlYmtp
dHNjbXB5LnByb2dyYW0uY29tbWFuZCBpbXBvcnQgRmlsdGVyZWRDb21tYW5kCitmcm9tIHdoaWNo
Y3JhZnQgaW1wb3J0IHdoaWNoCisKKworY2xhc3MgQmxhbWUoRmlsdGVyZWRDb21tYW5kKToKKyAg
ICBuYW1lID0gJ2JsYW1lJworICAgIGhlbHAgPSAiRmlsdGVyIHJhdyBvdXRwdXQgb2YgJ2dpdCBi
bGFtZScgb3IgJ3N2biBibGFtZScgdG8gcmVwbGFjZSBuYXRpdmUgY29tbWl0IHJlcHJlc2VudGF0
aW9uIHdpdGggaWRlbnRpZmllcnMiCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgbWFpbihj
bHMsIGFyZ3MsIHJlcG9zaXRvcnksICoqa3dhcmdzKToKKyAgICAgICAgaWYgbm90IHJlcG9zaXRv
cnkucm9vdF9wYXRoOgorICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgiQ2Fubm90IHJ1biAn
YmxhbWUnIG9uIHJlbW90ZSByZXBvc2l0b3J5XG4iKQorICAgICAgICAgICAgcmV0dXJuIDEKKwor
ICAgICAgICAjIElmIHdlJ3JlIGEgdGVybWluYWwsIHJlbHkgb24gJ21vcmUnIHRvIGRpc3BsYXkg
b3V0cHV0CisgICAgICAgIGlmIHN5cy5zdGRpbi5pc2F0dHkoKSBhbmQgbm90IGlzaW5zdGFuY2Uo
YXJncywgbGlzdCk6CisgICAgICAgICAgICBlbnZpcm9uID0gb3MuZW52aXJvbgorICAgICAgICAg
ICAgZW52aXJvblsnUFlUSE9OUEFUSCddID0gJzonLmpvaW4oc3lzLnBhdGgpCisKKyAgICAgICAg
ICAgIGNoaWxkID0gc3VicHJvY2Vzcy5Qb3BlbigKKyAgICAgICAgICAgICAgICBbc3lzLmV4ZWN1
dGFibGUsIF9fZmlsZV9fLCByZXBvc2l0b3J5LnJvb3RfcGF0aCwgYXJncy5yZXByZXNlbnRhdGlv
bl0gKyBhcmdzLmFyZ3MsCisgICAgICAgICAgICAgICAgZW52PWVudmlyb24sCisgICAgICAgICAg
ICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKKyAgICAgICAgICAgICAgICBzdGRlcnI9c3Vi
cHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgKQorICAgICAgICAgICAgbW9yZSA9IHN1YnByb2Nl
c3MuUG9wZW4oW3doaWNoKCdtb3JlJyksICctRiddLCBzdGRpbj1jaGlsZC5zdGRvdXQpCisKKyAg
ICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB3aGlsZSBtb3JlLnBvbGwoKSBpcyBOb25l
IGFuZCBub3QgY2hpbGQucG9sbCgpOgorICAgICAgICAgICAgICAgICAgICB0aW1lLnNsZWVwKDAu
MjUpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGNoaWxkLmtpbGwoKQor
ICAgICAgICAgICAgICAgIG1vcmUua2lsbCgpCisgICAgICAgICAgICAgICAgY2hpbGRfZXJyb3Ig
PSBjaGlsZC5zdGRlcnIucmVhZCgpCisgICAgICAgICAgICAgICAgaWYgY2hpbGRfZXJyb3I6Cisg
ICAgICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIuYnVmZmVyLndyaXRlKGInXG4nICsgY2hpbGRf
ZXJyb3IpCisKKyAgICAgICAgICAgIHJldHVybiBjaGlsZC5yZXR1cm5jb2RlCisKKyAgICAgICAg
cmV0dXJuIEZpbHRlcmVkQ29tbWFuZC5tYWluKGFyZ3MsIHJlcG9zaXRvcnksIGNvbW1hbmQ9J2Js
YW1lJywgKiprd2FyZ3MpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICBzeXMu
ZXhpdChCbGFtZS5tYWluKAorICAgICAgICBzeXMuYXJndlszOl0sCisgICAgICAgIGxvY2FsLlNj
bS5mcm9tX3BhdGgocGF0aD1zeXMuYXJndlsxXSwgY2FjaGVkPVRydWUpLAorICAgICAgICByZXBy
ZXNlbnRhdGlvbj1zeXMuYXJndlsyXSwKKyAgICApKQpJbmRleDogVG9vbHMvU2NyaXB0cy9saWJy
YXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvcHJvZ3JhbS9jb21tYW5kLnB5Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3By
b2dyYW0vY29tbWFuZC5weQkocmV2aXNpb24gMjgwMzM5KQorKysgVG9vbHMvU2NyaXB0cy9saWJy
YXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvcHJvZ3JhbS9jb21tYW5kLnB5CSh3b3JraW5n
IGNvcHkpCkBAIC0yMCw4ICsyMCwxMiBAQAogIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogIyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogCitpbXBvcnQgcmUKK2ltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgc3lzCiAKK2Zy
b20gd2Via2l0c2NtcHkuY29tbWl0IGltcG9ydCBDb21taXQKKwogCiBjbGFzcyBDb21tYW5kKG9i
amVjdCk6CiAgICAgbmFtZSA9IE5vbmUKQEAgLTM4LDMgKzQyLDE2OCBAQCBjbGFzcyBDb21tYW5k
KG9iamVjdCk6CiAgICAgZGVmIG1haW4oY2xzLCBhcmdzLCByZXBvc2l0b3J5LCAqKmt3YXJncyk6
CiAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoJ05vIGNvbW1hbmQgc3BlY2lmaWVkXG4nKQogICAg
ICAgICByZXR1cm4gLTEKKworCitjbGFzcyBGaWx0ZXJlZENvbW1hbmQob2JqZWN0KToKKyAgICBJ
REVOVElGSUVSID0gJ2lkZW50aWZpZXInCisgICAgSEFTSCA9ICdoYXNoJworICAgIFJFVklTSU9O
ID0gJ3JldmlzaW9uJworCisgICAgR0lUX0hFQURFUl9SRSA9IHJlLmNvbXBpbGUocideY29tbWl0
ICg/UDxoYXNoPlthLWYwLTlBLUZdKyknKQorICAgIFNWTl9IRUFERVJfUkUgPSByZS5jb21waWxl
KHInXig/UDxyZXZpc2lvbj5yL2QrKSB8ICcpCisKKyAgICBSRVZJU0lPTl9SRVMgPSAocmUuY29t
cGlsZShyJ14oP1A8cmV2aXNpb24+XGQrKVxzJyksIHJlLmNvbXBpbGUocicoP1A8cmV2aXNpb24+
W3JSXVxkKyknKSkKKyAgICBIQVNIX1JFUyA9IChyZS5jb21waWxlKHInXig/UDxoYXNoPlthLWYw
LTlBLUZdezh9W2EtZjAtOUEtRl0rKVxzJyksIHJlLmNvbXBpbGUocicoP1A8aGFzaD5bYS1mMC05
QS1GXXs4fVthLWYwLTlBLUZdKyknKSkKKyAgICBJREVOVElGSUVSX1JFUyA9IChyZS5jb21waWxl
KHInXig/UDxpZGVudGlmaWVyPihcZCtcLik/XGQrQFxTKiknKSwgcmUuY29tcGlsZShyJyg/UDxp
ZGVudGlmaWVyPihcZCtcLik/XGQrQFxTKiknKSkKKyAgICBOT19GSUxURVJfUkVTID0gW3JlLmNv
bXBpbGUocicgICAgQ2Fub25pY2FsIGxpbms6JyksIHJlLmNvbXBpbGUocicgICAgZ2l0LXN2bi1p
ZDonKV0KKworICAgIFJFUExBQ0VfTU9ERSA9IDAKKyAgICBBUFBFTkRfTU9ERSA9IDEKKyAgICBI
RUFERVJfTU9ERSA9IDIKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBwYXJzZXIoY2xzLCBw
YXJzZXIsIGxvZ2dlcnM9Tm9uZSk6CisgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCisgICAg
ICAgICAgICAnYXJncycsIG5hcmdzPScqJywKKyAgICAgICAgICAgIHR5cGU9c3RyLCBkZWZhdWx0
PU5vbmUsCisgICAgICAgICAgICBoZWxwPSdBcmd1bWVudHMgdG8gYmUgcGFzc2VkIHRvIHRiZSBu
YXRpdmUgc291cmNlLWNvZGUgbWFuYWdlbWVudCB0b29sJywKKyAgICAgICAgKQorICAgICAgICBw
YXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAgICAgJy0taWRlbnRpZmllcicsICctaScsCisg
ICAgICAgICAgICBoZWxwPSdSZXByZXNlbnQgY29tbWl0cyBhcyBpZGVudGlmaWVycycsCisgICAg
ICAgICAgICBkZXN0PSdyZXByZXNlbnRhdGlvbicsCisgICAgICAgICAgICBhY3Rpb249J3N0b3Jl
X2NvbnN0JywgY29uc3Q9Y2xzLklERU5USUZJRVIsCisgICAgICAgICAgICBkZWZhdWx0PWNscy5J
REVOVElGSUVSLAorICAgICAgICApCisgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCisgICAg
ICAgICAgICAnLS1oYXNoJywKKyAgICAgICAgICAgIGhlbHA9J1JlcHJlc2VudCBjb21taXRzIGFz
IGhhc2hlcycsCisgICAgICAgICAgICBkZXN0PSdyZXByZXNlbnRhdGlvbicsCisgICAgICAgICAg
ICBhY3Rpb249J3N0b3JlX2NvbnN0JywgY29uc3Q9Y2xzLkhBU0gsCisgICAgICAgICAgICBkZWZh
dWx0PWNscy5JREVOVElGSUVSLAorICAgICAgICApCisgICAgICAgIHBhcnNlci5hZGRfYXJndW1l
bnQoCisgICAgICAgICAgICAnLS1yZXZpc2lvbicsICctcicsCisgICAgICAgICAgICBoZWxwPSdS
ZXByZXNlbnQgY29tbWl0cyBhcyByZXZpc2lvbnMnLAorICAgICAgICAgICAgZGVzdD0ncmVwcmVz
ZW50YXRpb24nLAorICAgICAgICAgICAgYWN0aW9uPSdzdG9yZV9jb25zdCcsIGNvbnN0PWNscy5S
RVZJU0lPTiwKKyAgICAgICAgICAgIGRlZmF1bHQ9Y2xzLklERU5USUZJRVIsCisgICAgICAgICkK
KyAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgICAgICctLXJlcHJlc2VudGF0
aW9uJywgdHlwZT1zdHIsCisgICAgICAgICAgICBoZWxwPSdDaGFuZ2UgbWV0aG9kIHVzZWQgdG8g
cmVwcmVzZW50IGEgY29tbWl0IChpZGVudGlmaWVyL2hhc2gvcmV2aXNpb24pJywKKyAgICAgICAg
ICAgIGRlc3Q9J3JlcHJlc2VudGF0aW9uJywKKyAgICAgICAgICAgIGRlZmF1bHQ9Y2xzLklERU5U
SUZJRVIsCisgICAgICAgICkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBtYWluKGNscywg
YXJncywgcmVwb3NpdG9yeSwgY29tbWFuZD1Ob25lLCByZXByZXNlbnRhdGlvbj1Ob25lLCAqKmt3
YXJncyk6CisgICAgICAgIGlmIG5vdCByZXBvc2l0b3J5LnBhdGg6CisgICAgICAgICAgICBzeXMu
c3RkZXJyLndyaXRlKCJDYW5ub3QgcnVuICd7fScgb24gcmVtb3RlIHJlcG9zaXRvcnlcbiIuZm9y
bWF0KGNscy5uYW1lKSkKKyAgICAgICAgICAgIHJldHVybiAxCisKKyAgICAgICAgY2FjaGUgPSBn
ZXRhdHRyKHJlcG9zaXRvcnksICdjYWNoZScsIE5vbmUpCisgICAgICAgIGlmIG5vdCBjYWNoZToK
KyAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoJ05vIGNhY2hlIGF2YWlsYWJsZSwgY2Fubm90
IHBlcmZvcm1hbnRseSBtYXAgY29tbWl0IHJlZmVyZW5jZXNcbicpCisgICAgICAgICAgICByZXR1
cm4gMQorCisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGFyZ3MsIGxpc3QpOgorICAgICAgICAg
ICAgcmVwcmVzZW50YXRpb24gPSByZXByZXNlbnRhdGlvbiBvciBhcmdzLnJlcHJlc2VudGF0aW9u
CisgICAgICAgICAgICBhcmdzID0gYXJncy5hcmdzCisgICAgICAgIGVsc2U6CisgICAgICAgICAg
ICByZXByZXNlbnRhdGlvbiA9IHJlcHJlc2VudGF0aW9uIG9yIGNscy5JREVOVElGSUVSCisKKyAg
ICAgICAgaWYgcmVwcmVzZW50YXRpb24gbm90IGluIChjbHMuSURFTlRJRklFUiwgY2xzLkhBU0gs
IGNscy5SRVZJU0lPTik6CisgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCIne30nIGlzIG5v
dCBhIHZhbGlkIGNvbW1pdCByZXByZXNlbnRhdGlvblxuIi5mb3JtYXQocmVwcmVzZW50YXRpb24p
KQorICAgICAgICAgICAgcmV0dXJuIDEKKworICAgICAgICBmb3IgaW5kZXggaW4gcmFuZ2UobGVu
KGFyZ3MpKToKKyAgICAgICAgICAgIHBhcnNlZCA9IENvbW1pdC5wYXJzZShhcmdzW2luZGV4XSwg
ZG9fYXNzZXJ0PUZhbHNlKQorICAgICAgICAgICAgaWYgbm90IHBhcnNlZDoKKyAgICAgICAgICAg
ICAgICBjb250aW51ZQorICAgICAgICAgICAgcmVwbGFjZW1lbnQgPSBOb25lCisgICAgICAgICAg
ICBpZiByZXBvc2l0b3J5LmlzX3N2bjoKKyAgICAgICAgICAgICAgICByZXBsYWNlbWVudCA9IHJl
cG9zaXRvcnkuY2FjaGUudG9fcmV2aXNpb24oaGFzaD1wYXJzZWQuaGFzaCwgaWRlbnRpZmllcj1z
dHIocGFyc2VkKSBpZiBwYXJzZWQuaWRlbnRpZmllciBlbHNlIE5vbmUpCisgICAgICAgICAgICBp
ZiByZXBvc2l0b3J5LmlzX2dpdDoKKyAgICAgICAgICAgICAgICByZXBsYWNlbWVudCA9IHJlcG9z
aXRvcnkuY2FjaGUudG9faGFzaChyZXZpc2lvbj1wYXJzZWQucmV2aXNpb24sIGlkZW50aWZpZXI9
c3RyKHBhcnNlZCkgaWYgcGFyc2VkLmlkZW50aWZpZXIgZWxzZSBOb25lKQorICAgICAgICAgICAg
aWYgcmVwbGFjZW1lbnQ6CisgICAgICAgICAgICAgICAgYXJnc1tpbmRleF0gPSByZXBsYWNlbWVu
dAorCisgICAgICAgIGxvZ19vdXRwdXQgPSBzdWJwcm9jZXNzLlBvcGVuKAorICAgICAgICAgICAg
W3JlcG9zaXRvcnkuZXhlY3V0YWJsZSgpLCBjb21tYW5kXSArIGFyZ3MsCisgICAgICAgICAgICBj
d2Q9cmVwb3NpdG9yeS5yb290X3BhdGgsCisgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5Q
SVBFLAorICAgICAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSwKKyAgICAgICAgICAgICoq
KGRpY3QoZW5jb2Rpbmc9J3V0Zi04JykgaWYgc3lzLnZlcnNpb25faW5mbyA+ICgzLCAwKSBlbHNl
IGRpY3QoKSkKKyAgICAgICAgKQorICAgICAgICBsb2dfb3V0cHV0LnBvbGwoKQorCisgICAgICAg
IGRlZiByZXBsYWNlX2xpbmUobWF0Y2gsIG1vZGU9Y2xzLkFQUEVORF9NT0RFLCAqKmt3YXJncyk6
CisgICAgICAgICAgICByZWZlcmVuY2UgPSBrd2FyZ3MuZ2V0KHJlcHJlc2VudGF0aW9uKQorICAg
ICAgICAgICAgaWYgbm90IHJlZmVyZW5jZToKKyAgICAgICAgICAgICAgICByZWZlcmVuY2UgPSBn
ZXRhdHRyKGNhY2hlLCAndG9fe30nLmZvcm1hdChyZXByZXNlbnRhdGlvbiksIGxhbWJkYSAqKmt3
YXJnczogTm9uZSkoKiprd2FyZ3MpCisKKyAgICAgICAgICAgIGlmIHJlZmVyZW5jZToKKyAgICAg
ICAgICAgICAgICBpZiBpc2luc3RhbmNlKHJlZmVyZW5jZSwgaW50KToKKyAgICAgICAgICAgICAg
ICAgICAgcmVmZXJlbmNlID0gJ3J7fScuZm9ybWF0KHJlZmVyZW5jZSkKKyAgICAgICAgICAgICAg
ICBpZiByZXByZXNlbnRhdGlvbiA9PSAnaGFzaCc6CisgICAgICAgICAgICAgICAgICAgIHJlZmVy
ZW5jZSA9IHJlZmVyZW5jZVs6Q29tbWl0LkhBU0hfTEFCRUxfU0laRV0KKyAgICAgICAgICAgICAg
ICBpZiBtb2RlID09IGNscy5BUFBFTkRfTU9ERToKKyAgICAgICAgICAgICAgICAgICAgcmVmZXJl
bmNlID0gJ3t9ICh7fSknLmZvcm1hdChtYXRjaC5ncm91cCgxKSwgcmVmZXJlbmNlKQorICAgICAg
ICAgICAgICAgIGlmIG1vZGUgPT0gY2xzLkhFQURFUl9NT0RFOgorICAgICAgICAgICAgICAgICAg
ICBhbHRlcm5hdGVzID0gW10gaWYgbWF0Y2guZ3JvdXAoMSkuc3RhcnRzd2l0aChyZWZlcmVuY2Up
IGVsc2UgW21hdGNoLmdyb3VwKDEpXQorICAgICAgICAgICAgICAgICAgICBmb3IgcmVwciBpbiB7
J3JldmlzaW9uJywgJ2hhc2gnLCAnaWRlbnRpZmllcid9IC0geydoYXNoJyBpZiByZXBvc2l0b3J5
LmlzX2dpdCBlbHNlICdyZXZpc2lvbicsIHJlcHJlc2VudGF0aW9ufToKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIHJlcHIgaW4ga3dhcmdzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlCisgICAgICAgICAgICAgICAgICAgICAgICBvdGhlciA9IGdldGF0dHIoY2FjaGUs
ICd0b197fScuZm9ybWF0KHJlcHIpLCBsYW1iZGEgKiprd2FyZ3M6IE5vbmUpKCoqa3dhcmdzKQor
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IG90aGVyOgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBvdGhlciA9PSAn
aGFzaCc6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXIgPSBvdGhlcls6Q29tbWl0
LkhBU0hfTEFCRUxfU0laRV0KKyAgICAgICAgICAgICAgICAgICAgICAgIGFsdGVybmF0ZXMuYXBw
ZW5kKCdye30nLmZvcm1hdChvdGhlcikgaWYgaXNpbnN0YW5jZShvdGhlciwgaW50KSBlbHNlIG90
aGVyKQorICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2UgPSAne30gKHt9KScuZm9ybWF0KHJl
ZmVyZW5jZSwgJywgJy5qb2luKGFsdGVybmF0ZXMpKQorICAgICAgICAgICAgICAgIHJldHVybiBt
YXRjaC5ncm91cCgwKS5yZXBsYWNlKG1hdGNoLmdyb3VwKDEpLCByZWZlcmVuY2UpCisgICAgICAg
ICAgICByZXR1cm4gbWF0Y2guZ3JvdXAoMCkKKworICAgICAgICByZXMgPSB7fQorICAgICAgICBp
ZiByZXByZXNlbnRhdGlvbiAhPSBjbHMuSEFTSDoKKyAgICAgICAgICAgIHJlc1tjbHMuSEFTSF0g
PSBjbHMuSEFTSF9SRVMKKyAgICAgICAgaWYgcmVwcmVzZW50YXRpb24gIT0gY2xzLlJFVklTSU9O
OgorICAgICAgICAgICAgcmVzW2Nscy5SRVZJU0lPTl0gPSBjbHMuUkVWSVNJT05fUkVTCisgICAg
ICAgIGlmIHJlcHJlc2VudGF0aW9uICE9IGNscy5JREVOVElGSUVSOgorICAgICAgICAgICAgcmVz
W2Nscy5JREVOVElGSUVSXSA9IGNscy5JREVOVElGSUVSX1JFUworCisgICAgICAgIGhlYWRlcl9y
ZSA9IGNscy5HSVRfSEVBREVSX1JFIGlmIHJlcG9zaXRvcnkuaXNfZ2l0IGVsc2UgY2xzLlNWTl9I
RUFERVJfUkUKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBsaW5lID0gbG9nX291dHB1dC5z
dGRvdXQucmVhZGxpbmUoKQorICAgICAgICAgICAgd2hpbGUgbGluZToKKyAgICAgICAgICAgICAg
ICBoZWFkZXIgPSBoZWFkZXJfcmUuc3ViKAorICAgICAgICAgICAgICAgICAgICBsYW1iZGEgbWF0
Y2g6IHJlcGxhY2VfbGluZShtYXRjaCwgbW9kZT1jbHMuSEVBREVSX01PREUsICoqeydoYXNoJyBp
ZiByZXBvc2l0b3J5LmlzX2dpdCBlbHNlICdyZXZpc2lvbic6IG1hdGNoLmdyb3VwKDEpfSksCisg
ICAgICAgICAgICAgICAgICAgIGxpbmUsCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAg
ICAgIGlmIGhlYWRlciAhPSBsaW5lOgorICAgICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0Lndy
aXRlKGhlYWRlcikKKyAgICAgICAgICAgICAgICAgICAgbGluZSA9IGxvZ19vdXRwdXQuc3Rkb3V0
LnJlYWRsaW5lKCkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAg
ICAgIGZvciByZXByLCByZWdleHMgaW4gcmVzLml0ZW1zKCk6CisgICAgICAgICAgICAgICAgICAg
IGxpbmUgPSByZWdleHNbMF0uc3ViKAorICAgICAgICAgICAgICAgICAgICAgICAgbGFtYmRhIG1h
dGNoOiByZXBsYWNlX2xpbmUobWF0Y2gsIG1vZGU9Y2xzLlJFUExBQ0VfTU9ERSwgKip7cmVwcjog
bWF0Y2guZ3JvdXAoMSl9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUsCisgICAgICAg
ICAgICAgICAgICAgICkKKworICAgICAgICAgICAgICAgIGlmIG5vdCBhbnkoci5tYXRjaChsaW5l
KSBmb3IgciBpbiBjbHMuTk9fRklMVEVSX1JFUyk6CisgICAgICAgICAgICAgICAgICAgIGZvciBy
ZXByLCByZWdleHMgaW4gcmVzLml0ZW1zKCk6CisgICAgICAgICAgICAgICAgICAgICAgICBsaW5l
ID0gcmVnZXhzWzFdLnN1YigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW1iZGEgbWF0
Y2g6IHJlcGxhY2VfbGluZShtYXRjaCwgbW9kZT1jbHMuQVBQRU5EX01PREUsICoqe3JlcHI6IG1h
dGNoLmdyb3VwKDEpfSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICkKKworICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUo
bGluZSkKKworICAgICAgICAgICAgICAgIGxpbmUgPSBsb2dfb3V0cHV0LnN0ZG91dC5yZWFkbGlu
ZSgpCisKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGxvZ19vdXRwdXQua2lsbCgpCisg
ICAgICAgIHJldHVybiBsb2dfb3V0cHV0LnJldHVybmNvZGUKSW5kZXg6IFRvb2xzL1NjcmlwdHMv
bGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Byb2dyYW0vbG9nLnB5Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3By
b2dyYW0vbG9nLnB5CShub25leGlzdGVudCkKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dl
YmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Byb2dyYW0vbG9nLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNzggQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKworIyBDb3B5cmlnaHQgKEMpIDIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMi
IEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IG9zCitpbXBvcnQgc3VicHJvY2VzcworaW1wb3J0
IHN5cworaW1wb3J0IHRpbWUKKworZnJvbSB3ZWJraXRzY21weSBpbXBvcnQgbG9jYWwKK2Zyb20g
d2Via2l0c2NtcHkucHJvZ3JhbS5jb21tYW5kIGltcG9ydCBGaWx0ZXJlZENvbW1hbmQKK2Zyb20g
d2hpY2hjcmFmdCBpbXBvcnQgd2hpY2gKKworCitjbGFzcyBMb2coRmlsdGVyZWRDb21tYW5kKToK
KyAgICBuYW1lID0gJ2xvZycKKyAgICBoZWxwID0gIkZpbHRlciByYXcgb3V0cHV0IG9mICdnaXQg
bG9nJyBvciAnc3ZuIGxvZycgdG8gcmVwbGFjZSBuYXRpdmUgY29tbWl0IHJlcHJlc2VudGF0aW9u
IHdpdGggaWRlbnRpZmllcnMiCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgbWFpbihjbHMs
IGFyZ3MsIHJlcG9zaXRvcnksICoqa3dhcmdzKToKKyAgICAgICAgaWYgbm90IHJlcG9zaXRvcnku
cm9vdF9wYXRoOgorICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgiQ2Fubm90IHJ1biAnbG9n
JyBvbiByZW1vdGUgcmVwb3NpdG9yeVxuIikKKyAgICAgICAgICAgIHJldHVybiAxCisKKyAgICAg
ICAgIyBJZiB3ZSdyZSBhIHRlcm1pbmFsLCByZWx5IG9uICdtb3JlJyB0byBkaXNwbGF5IG91dHB1
dAorICAgICAgICBpZiBzeXMuc3RkaW4uaXNhdHR5KCkgYW5kIG5vdCBpc2luc3RhbmNlKGFyZ3Ms
IGxpc3QpOgorICAgICAgICAgICAgZW52aXJvbiA9IG9zLmVudmlyb24KKyAgICAgICAgICAgIGVu
dmlyb25bJ1BZVEhPTlBBVEgnXSA9ICc6Jy5qb2luKHN5cy5wYXRoKQorCisgICAgICAgICAgICBj
aGlsZCA9IHN1YnByb2Nlc3MuUG9wZW4oCisgICAgICAgICAgICAgICAgW3N5cy5leGVjdXRhYmxl
LCBfX2ZpbGVfXywgcmVwb3NpdG9yeS5yb290X3BhdGgsIGFyZ3MucmVwcmVzZW50YXRpb25dICsg
YXJncy5hcmdzLAorICAgICAgICAgICAgICAgIGVudj1lbnZpcm9uLAorICAgICAgICAgICAgICAg
IHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICAgICAgc3RkZXJyPXN1YnByb2Nl
c3MuUElQRSwKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIG1vcmUgPSBzdWJwcm9jZXNzLlBv
cGVuKFt3aGljaCgnbW9yZScpLCAnLUYnXSwgc3RkaW49Y2hpbGQuc3Rkb3V0KQorCisgICAgICAg
ICAgICB0cnk6CisgICAgICAgICAgICAgICAgd2hpbGUgbW9yZS5wb2xsKCkgaXMgTm9uZSBhbmQg
bm90IGNoaWxkLnBvbGwoKToKKyAgICAgICAgICAgICAgICAgICAgdGltZS5zbGVlcCgwLjI1KQor
ICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBjaGlsZC5raWxsKCkKKyAgICAg
ICAgICAgICAgICBtb3JlLmtpbGwoKQorICAgICAgICAgICAgICAgIGNoaWxkX2Vycm9yID0gY2hp
bGQuc3RkZXJyLnJlYWQoKQorICAgICAgICAgICAgICAgIGlmIGNoaWxkX2Vycm9yOgorICAgICAg
ICAgICAgICAgICAgICBzeXMuc3RkZXJyLmJ1ZmZlci53cml0ZShiJ1xuJyArIGNoaWxkX2Vycm9y
KQorCisgICAgICAgICAgICByZXR1cm4gY2hpbGQucmV0dXJuY29kZQorCisgICAgICAgIHJldHVy
biBGaWx0ZXJlZENvbW1hbmQubWFpbihhcmdzLCByZXBvc2l0b3J5LCBjb21tYW5kPSdsb2cnLCAq
Kmt3YXJncykKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHN5cy5leGl0KExv
Zy5tYWluKAorICAgICAgICBzeXMuYXJndlszOl0sCisgICAgICAgIGxvY2FsLlNjbS5mcm9tX3Bh
dGgocGF0aD1zeXMuYXJndlsxXSwgY2FjaGVkPVRydWUpLAorICAgICAgICByZXByZXNlbnRhdGlv
bj1zeXMuYXJndlsyXSwKKyAgICApKQpJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Vi
a2l0c2NtcHkvd2Via2l0c2NtcHkvdGVzdC9sb2dfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvdGVzdC9sb2df
dW5pdHRlc3QucHkJKG5vbmV4aXN0ZW50KQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Vi
a2l0c2NtcHkvd2Via2l0c2NtcHkvdGVzdC9sb2dfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwyMDYgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0Ogor
IyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyMgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisK
K2ltcG9ydCBqc29uCitpbXBvcnQgb3MKK2ltcG9ydCBzaHV0aWwKK2ltcG9ydCB0ZW1wZmlsZQor
Citmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRldGltZQorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0
IE91dHB1dENhcHR1cmUsIHRlc3RpbmcKK2Zyb20gd2Via2l0Y29yZXB5Lm1vY2tzIGltcG9ydCBU
aW1lIGFzIE1vY2tUaW1lCitmcm9tIHdlYmtpdHNjbXB5IGltcG9ydCBwcm9ncmFtLCBtb2Nrcwor
CisKK2NsYXNzIFRlc3RMb2codGVzdGluZy5QYXRoVGVzdENhc2UpOgorICAgIGJhc2VwYXRoID0g
J21vY2svcmVwb3NpdG9yeScKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc3VwZXIo
VGVzdExvZywgc2VsZikuc2V0VXAoKQorICAgICAgICBvcy5ta2Rpcihvcy5wYXRoLmpvaW4oc2Vs
Zi5wYXRoLCAnLmdpdCcpKQorICAgICAgICBvcy5ta2Rpcihvcy5wYXRoLmpvaW4oc2VsZi5wYXRo
LCAnLnN2bicpKQorCisgICAgZGVmIHRlc3RfZ2l0KHNlbGYpOgorICAgICAgICB3aXRoIE91dHB1
dENhcHR1cmUoKSBhcyBjYXB0dXJlZCwgbW9ja3MubG9jYWwuR2l0KHNlbGYucGF0aCksIG1vY2tz
LmxvY2FsLlN2bigpLCBNb2NrVGltZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoLTEs
IHByb2dyYW0ubWFpbigKKyAgICAgICAgICAgICAgICBhcmdzPSgnbG9nJywgJ21haW4nKSwKKyAg
ICAgICAgICAgICAgICBwYXRoPXNlbGYucGF0aCwKKyAgICAgICAgICAgICkpCisKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGNhcHR1cmVkLnN0ZG91dC5nZXR2YWx1ZSgp
LAorICAgICAgICAgICAgJycnY29tbWl0IDVAbWFpbiAoZDhiY2UyNmZhNjVjNmZjOGYzOWMxNzky
N2FiYjc3ZjY5ZmFiODJmYykKK0F1dGhvcjogSm9uYXRoYW4gQmVkYXJkIDxqYmVkYXJkQGFwcGxl
LmNvbT4KK0RhdGU6ICAgU2F0IE9jdCAwMyAwMzo0Njo0MCAyMDIwICswMDAwCisKKyAgICBQYXRj
aCBTZXJpZXMKKworY29tbWl0IDRAbWFpbiAoYmFlNWQxZTkwOTk5ZDRmOTE2YThhMTU4MTBjY2Zh
NDNmMzdhMmZkNikKK0F1dGhvcjogSm9uYXRoYW4gQmVkYXJkIDxqYmVkYXJkQGFwcGxlLmNvbT4K
K0RhdGU6ICAgU2F0IE9jdCAwMyAwMzo0Njo0MCAyMDIwICswMDAwCisKKyAgICA4dGggY29tbWl0
CisKK2NvbW1pdCAzQG1haW4gKDFhYmUyNWI0NDNlOTg1ZjkzYjkwZDgzMGU0YTdlMzczMTMzNmFm
NGQpCitBdXRob3I6IEpvbmF0aGFuIEJlZGFyZCA8amJlZGFyZEBhcHBsZS5jb20+CitEYXRlOiAg
IFNhdCBPY3QgMDMgMDI6MjM6MjAgMjAyMCArMDAwMAorCisgICAgNHRoIGNvbW1pdAorCitjb21t
aXQgMkBtYWluIChmZmY4M2JiMmQ5MTcxYjRkOTE5NmU5NzdlYjA1MDhmZDU3ZTdhMDhkKQorQXV0
aG9yOiBKb25hdGhhbiBCZWRhcmQgPGpiZWRhcmRAYXBwbGUuY29tPgorRGF0ZTogICBTYXQgT2N0
IDAzIDAxOjUwOjAwIDIwMjAgKzAwMDAKKworICAgIDJuZCBjb21taXQKKworY29tbWl0IDFAbWFp
biAoOWI4MzExZjI1YTc3YmExNDkyM2Q5ZDVhNjUzMjEwM2Y1NGFiZWZjYikKK0F1dGhvcjogSm9u
YXRoYW4gQmVkYXJkIDxqYmVkYXJkQGFwcGxlLmNvbT4KK0RhdGU6ICAgU2F0IE9jdCAwMyAwMToz
MzoyMCAyMDIwICswMDAwCisKKyAgICAxc3QgY29tbWl0CisnJycsCisgICAgICAgICkKKworICAg
IGRlZiB0ZXN0X2dpdF9zdm4oc2VsZik6CisgICAgICAgIHdpdGggT3V0cHV0Q2FwdHVyZSgpIGFz
IGNhcHR1cmVkLCBtb2Nrcy5sb2NhbC5HaXQoc2VsZi5wYXRoLCBnaXRfc3ZuPVRydWUpLCBtb2Nr
cy5sb2NhbC5Tdm4oKSwgTW9ja1RpbWU6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKC0x
LCBwcm9ncmFtLm1haW4oCisgICAgICAgICAgICAgICAgYXJncz0oJ2xvZycsICdtYWluJyksCisg
ICAgICAgICAgICAgICAgcGF0aD1zZWxmLnBhdGgsCisgICAgICAgICAgICApKQorCisgICAgICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIGNhcHR1cmVkLnN0ZG91dC5n
ZXR2YWx1ZSgpLAorICAgICAgICAgICAgICAgICcnJ2NvbW1pdCA1QG1haW4gKGQ4YmNlMjZmYTY1
YzZmYzhmMzljMTc5MjdhYmI3N2Y2OWZhYjgyZmMsIHI5KQorQXV0aG9yOiBKb25hdGhhbiBCZWRh
cmQgPGpiZWRhcmRAYXBwbGUuY29tPgorRGF0ZTogICBTYXQgT2N0IDAzIDAzOjQ2OjQwIDIwMjAg
KzAwMDAKKworICAgIFBhdGNoIFNlcmllcworICAgIGdpdC1zdm4taWQ6IGh0dHBzOi8vc3ZuLmV4
YW1wbGUub3JnL3JlcG9zaXRvcnkvcmVwb3NpdG9yeS90cnVua0A5IDI2OGY0NWNjLWNkMDktMDQx
MC1hYjNjLWQ1MjY5MWI0ZGJmYworCitjb21taXQgNEBtYWluIChiYWU1ZDFlOTA5OTlkNGY5MTZh
OGExNTgxMGNjZmE0M2YzN2EyZmQ2LCByOCkKK0F1dGhvcjogSm9uYXRoYW4gQmVkYXJkIDxqYmVk
YXJkQGFwcGxlLmNvbT4KK0RhdGU6ICAgU2F0IE9jdCAwMyAwMzo0Njo0MCAyMDIwICswMDAwCisK
KyAgICA4dGggY29tbWl0CisgICAgZ2l0LXN2bi1pZDogaHR0cHM6Ly9zdm4uZXhhbXBsZS5vcmcv
cmVwb3NpdG9yeS9yZXBvc2l0b3J5L3RydW5rQDggMjY4ZjQ1Y2MtY2QwOS0wNDEwLWFiM2MtZDUy
NjkxYjRkYmZjCisKK2NvbW1pdCAzQG1haW4gKDFhYmUyNWI0NDNlOTg1ZjkzYjkwZDgzMGU0YTdl
MzczMTMzNmFmNGQsIHI0KQorQXV0aG9yOiBKb25hdGhhbiBCZWRhcmQgPGpiZWRhcmRAYXBwbGUu
Y29tPgorRGF0ZTogICBTYXQgT2N0IDAzIDAyOjIzOjIwIDIwMjAgKzAwMDAKKworICAgIDR0aCBj
b21taXQKKyAgICBnaXQtc3ZuLWlkOiBodHRwczovL3N2bi5leGFtcGxlLm9yZy9yZXBvc2l0b3J5
L3JlcG9zaXRvcnkvdHJ1bmtANCAyNjhmNDVjYy1jZDA5LTA0MTAtYWIzYy1kNTI2OTFiNGRiZmMK
KworY29tbWl0IDJAbWFpbiAoZmZmODNiYjJkOTE3MWI0ZDkxOTZlOTc3ZWIwNTA4ZmQ1N2U3YTA4
ZCwgcjIpCitBdXRob3I6IEpvbmF0aGFuIEJlZGFyZCA8amJlZGFyZEBhcHBsZS5jb20+CitEYXRl
OiAgIFNhdCBPY3QgMDMgMDE6NTA6MDAgMjAyMCArMDAwMAorCisgICAgMm5kIGNvbW1pdAorICAg
IGdpdC1zdm4taWQ6IGh0dHBzOi8vc3ZuLmV4YW1wbGUub3JnL3JlcG9zaXRvcnkvcmVwb3NpdG9y
eS90cnVua0AyIDI2OGY0NWNjLWNkMDktMDQxMC1hYjNjLWQ1MjY5MWI0ZGJmYworCitjb21taXQg
MUBtYWluICg5YjgzMTFmMjVhNzdiYTE0OTIzZDlkNWE2NTMyMTAzZjU0YWJlZmNiLCByMSkKK0F1
dGhvcjogSm9uYXRoYW4gQmVkYXJkIDxqYmVkYXJkQGFwcGxlLmNvbT4KK0RhdGU6ICAgU2F0IE9j
dCAwMyAwMTozMzoyMCAyMDIwICswMDAwCisKKyAgICAxc3QgY29tbWl0CisgICAgZ2l0LXN2bi1p
ZDogaHR0cHM6Ly9zdm4uZXhhbXBsZS5vcmcvcmVwb3NpdG9yeS9yZXBvc2l0b3J5L3RydW5rQDEg
MjY4ZjQ1Y2MtY2QwOS0wNDEwLWFiM2MtZDUyNjkxYjRkYmZjCisnJycsCisgICAgICAgICAgICAp
CisKKyAgICBkZWYgdGVzdF9naXRfc3ZuX3JldmlzaW9uKHNlbGYpOgorICAgICAgICB3aXRoIE91
dHB1dENhcHR1cmUoKSBhcyBjYXB0dXJlZCwgbW9ja3MubG9jYWwuR2l0KHNlbGYucGF0aCwgZ2l0
X3N2bj1UcnVlKSwgbW9ja3MubG9jYWwuU3ZuKCksIE1vY2tUaW1lOgorICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgtMSwgcHJvZ3JhbS5tYWluKAorICAgICAgICAgICAgICAgIGFyZ3M9KCds
b2cnLCAnbWFpbicsICctLXJldmlzaW9uJyksCisgICAgICAgICAgICAgICAgcGF0aD1zZWxmLnBh
dGgsCisgICAgICAgICAgICApKQorCisgICAgICAgICAgICBzZWxmLm1heERpZmYgPSBOb25lCisg
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIGNhcHR1cmVkLnN0
ZG91dC5nZXR2YWx1ZSgpLAorICAgICAgICAgICAgICAgICcnJ2NvbW1pdCByOSAoZDhiY2UyNmZh
NjVjNmZjOGYzOWMxNzkyN2FiYjc3ZjY5ZmFiODJmYywgNUBtYWluKQorQXV0aG9yOiBKb25hdGhh
biBCZWRhcmQgPGpiZWRhcmRAYXBwbGUuY29tPgorRGF0ZTogICBTYXQgT2N0IDAzIDAzOjQ2OjQw
IDIwMjAgKzAwMDAKKworICAgIFBhdGNoIFNlcmllcworICAgIGdpdC1zdm4taWQ6IGh0dHBzOi8v
c3ZuLmV4YW1wbGUub3JnL3JlcG9zaXRvcnkvcmVwb3NpdG9yeS90cnVua0A5IDI2OGY0NWNjLWNk
MDktMDQxMC1hYjNjLWQ1MjY5MWI0ZGJmYworCitjb21taXQgcjggKGJhZTVkMWU5MDk5OWQ0Zjkx
NmE4YTE1ODEwY2NmYTQzZjM3YTJmZDYsIDRAbWFpbikKK0F1dGhvcjogSm9uYXRoYW4gQmVkYXJk
IDxqYmVkYXJkQGFwcGxlLmNvbT4KK0RhdGU6ICAgU2F0IE9jdCAwMyAwMzo0Njo0MCAyMDIwICsw
MDAwCisKKyAgICA4dGggY29tbWl0CisgICAgZ2l0LXN2bi1pZDogaHR0cHM6Ly9zdm4uZXhhbXBs
ZS5vcmcvcmVwb3NpdG9yeS9yZXBvc2l0b3J5L3RydW5rQDggMjY4ZjQ1Y2MtY2QwOS0wNDEwLWFi
M2MtZDUyNjkxYjRkYmZjCisKK2NvbW1pdCByNCAoMWFiZTI1YjQ0M2U5ODVmOTNiOTBkODMwZTRh
N2UzNzMxMzM2YWY0ZCwgM0BtYWluKQorQXV0aG9yOiBKb25hdGhhbiBCZWRhcmQgPGpiZWRhcmRA
YXBwbGUuY29tPgorRGF0ZTogICBTYXQgT2N0IDAzIDAyOjIzOjIwIDIwMjAgKzAwMDAKKworICAg
IDR0aCBjb21taXQKKyAgICBnaXQtc3ZuLWlkOiBodHRwczovL3N2bi5leGFtcGxlLm9yZy9yZXBv
c2l0b3J5L3JlcG9zaXRvcnkvdHJ1bmtANCAyNjhmNDVjYy1jZDA5LTA0MTAtYWIzYy1kNTI2OTFi
NGRiZmMKKworY29tbWl0IHIyIChmZmY4M2JiMmQ5MTcxYjRkOTE5NmU5NzdlYjA1MDhmZDU3ZTdh
MDhkLCAyQG1haW4pCitBdXRob3I6IEpvbmF0aGFuIEJlZGFyZCA8amJlZGFyZEBhcHBsZS5jb20+
CitEYXRlOiAgIFNhdCBPY3QgMDMgMDE6NTA6MDAgMjAyMCArMDAwMAorCisgICAgMm5kIGNvbW1p
dAorICAgIGdpdC1zdm4taWQ6IGh0dHBzOi8vc3ZuLmV4YW1wbGUub3JnL3JlcG9zaXRvcnkvcmVw
b3NpdG9yeS90cnVua0AyIDI2OGY0NWNjLWNkMDktMDQxMC1hYjNjLWQ1MjY5MWI0ZGJmYworCitj
b21taXQgcjEgKDliODMxMWYyNWE3N2JhMTQ5MjNkOWQ1YTY1MzIxMDNmNTRhYmVmY2IsIDFAbWFp
bikKK0F1dGhvcjogSm9uYXRoYW4gQmVkYXJkIDxqYmVkYXJkQGFwcGxlLmNvbT4KK0RhdGU6ICAg
U2F0IE9jdCAwMyAwMTozMzoyMCAyMDIwICswMDAwCisKKyAgICAxc3QgY29tbWl0CisgICAgZ2l0
LXN2bi1pZDogaHR0cHM6Ly9zdm4uZXhhbXBsZS5vcmcvcmVwb3NpdG9yeS9yZXBvc2l0b3J5L3Ry
dW5rQDEgMjY4ZjQ1Y2MtY2QwOS0wNDEwLWFiM2MtZDUyNjkxYjRkYmZjCisnJycsCisgICAgICAg
ICAgICApCisKKyAgICBkZWYgdGVzdF9zdm4oc2VsZik6CisgICAgICAgIHdpdGggT3V0cHV0Q2Fw
dHVyZSgpIGFzIGNhcHR1cmVkLCBtb2Nrcy5sb2NhbC5HaXQoKSwgbW9ja3MubG9jYWwuU3ZuKHNl
bGYucGF0aCksIE1vY2tUaW1lOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgtMSwgcHJv
Z3JhbS5tYWluKAorICAgICAgICAgICAgICAgIGFyZ3M9KCdsb2cnLCksCisgICAgICAgICAgICAg
ICAgcGF0aD1zZWxmLnBhdGgsCisgICAgICAgICAgICApKQorCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoCisgICAgICAgICAgICBjYXB0dXJlZC5zdGRvdXQuZ2V0dmFsdWUoKSwKKyAgICAgICAg
ICAgICcnJy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorcjYgKDRAdHJ1bmspIHwgamJlZGFyZEBhcHBsZS5jb20g
fCAyMDIwLTEwLTAyIDE4OjU4OjIwIDAwMDAgKEZyaSwgMDIgT2N0IDIwMjApIHwgMSBsaW5lcwor
Cis2dGggY29tbWl0CisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorcjQgKDNAdHJ1bmspIHwgamJlZGFyZEBh
cHBsZS5jb20gfCAyMDIwLTEwLTAyIDE4OjI1OjAwIDAwMDAgKEZyaSwgMDIgT2N0IDIwMjApIHwg
MSBsaW5lcworCis0dGggY29tbWl0CisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorcjIgKDJAdHJ1bmspIHwg
amJlZGFyZEBhcHBsZS5jb20gfCAyMDIwLTEwLTAyIDE3OjUxOjQwIDAwMDAgKEZyaSwgMDIgT2N0
IDIwMjApIHwgMSBsaW5lcworCisybmQgY29tbWl0CisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorcjEgKDFA
dHJ1bmspIHwgamJlZGFyZEBhcHBsZS5jb20gfCAyMDIwLTEwLTAyIDE3OjM1OjAwIDAwMDAgKEZy
aSwgMDIgT2N0IDIwMjApIHwgMSBsaW5lcworCisxc3QgY29tbWl0CisKKycnJywKKyAgICAgICAg
KQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434522</attachid>
            <date>2021-07-29 08:38:31 -0700</date>
            <delta_ts>2021-07-29 11:01:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228027-20210729083830.patch</filename>
            <type>text/plain</type>
            <size>28357</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI4MDQyMikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDM1IEBACisyMDIxLTA3LTI4ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBbZ2l0LXdlYmtpdF0gQWRkIGlkZW50aWZpZXJzIHRvICdsb2cnIGFuZCAn
YmxhbWUnCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjgwMjcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgwNjkxMTY0PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Vi
a2l0c2NtcHkvc2V0dXAucHk6IEJ1bXAgdmVyc2lvbi4KKyAgICAgICAgKiBTY3JpcHRzL2xpYnJh
cmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9fX2luaXRfXy5weTogRGl0dG8uCisgICAgICAg
ICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbG9jYWwvc2NtLnB5
OgorICAgICAgICAoU2NtLmZyb21fcGF0aCk6IFBhc3MgYWxsIGt3YXJncyB0byBsb2NhbCBTQ00g
b2JqZWN0LgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNj
bXB5L3Byb2dyYW0vX19pbml0X18ucHk6CisgICAgICAgIChtYWluKTogQWRkIEJsYW1lIGFuZCBM
b2cgY29tbWFuZHMuCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Vi
a2l0c2NtcHkvcHJvZ3JhbS9ibGFtZS5weTogQWRkZWQuCisgICAgICAgIChCbGFtZSk6IEludm9r
ZSBwYWdlci4KKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRz
Y21weS9wcm9ncmFtL2NvbW1hbmQucHk6CisgICAgICAgIChGaWx0ZXJlZENvbW1hbmQpOiBTaGFy
ZWQgY29tbWFuZCB0aGF0IGhhbmRsZXMgcmVwbGFjZSBoYXNoZXMvcmV2aXNpb25zIGluCisgICAg
ICAgIGFuIFNDTSBjb21tYW5kIHdpdGggaWRlbnRpZmllcnMuCisgICAgICAgIChGaWx0ZXJlZENv
bW1hbmQucGFyc2VyKTogQWxsb3cgdXNlciB0byBjaGFuZ2UgdGhlIHByZWZlcmVkIGNvbW1pdCBy
ZXByZXNlbnRhdGlvbi4KKyAgICAgICAgKEZpbHRlcmVkQ29tbWFuZC5wYWdlcik6IFBhc3Mgb3V0
cHV0IHRocm91Z2ggbW9yZSBpZiBjYWxsZWQgZnJvbSBhIHRlcm1pbmFsLgorICAgICAgICAoRmls
dGVyZWRDb21tYW5kLm1haW4pOiBNb2RpZnkgb3V0cHV0IG9mIHByb3ZpZGVkIGNvbW1hbmQgdG8g
cmVwbGFjZSBjb21taXQgcmVwcmVzZW50YXRpb24KKyAgICAgICAgd2l0aCB0aGUgcHJlZmZlcmVk
IGNvbW1pdCByZXByZXNlbnRhdGlvbi4KKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy93ZWJr
aXRzY21weS93ZWJraXRzY21weS9wcm9ncmFtL2xvZy5weTogQWRkZWQuCisgICAgICAgIChMb2cp
OiBJbnZva2UgcGFnZXIuCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkv
d2Via2l0c2NtcHkvdGVzdC9sb2dfdW5pdHRlc3QucHk6IEFkZGVkLgorICAgICAgICAoVGVzdExv
Zyk6CisgICAgICAgIChUZXN0TG9nLnNldFVwKToKKyAgICAgICAgKFRlc3RMb2cudGVzdF9naXQp
OgorICAgICAgICAoVGVzdExvZy50ZXN0X2dpdF9zdm4pOgorICAgICAgICAoVGVzdExvZy50ZXN0
X2dpdCk6CisKIDIwMjEtMDctMjkgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0Bnbm9t
ZS5vcmc+CiAKICAgICAgICAgW1dQRV1bR1RLXSAuYXNjIGZpbGUgZXh0ZW5zaW9uIGlzIGFwcGVu
ZGVkIHRvIGZpbGVuYW1lIG9mIHRleHQvcGxhaW4gZG93bmxvYWRzCkluZGV4OiBUb29scy9TY3Jp
cHRzL2xpYnJhcmllcy93ZWJraXRzY21weS9zZXR1cC5weQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9T
Y3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS9zZXR1cC5weQkocmV2aXNpb24gMjgwNDIyKQor
KysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvc2V0dXAucHkJKHdvcmtpbmcg
Y29weSkKQEAgLTI5LDcgKzI5LDcgQEAgZGVmIHJlYWRtZSgpOgogCiBzZXR1cCgKICAgICBuYW1l
PSd3ZWJraXRzY21weScsCi0gICAgdmVyc2lvbj0nMC4xNS4wJywKKyAgICB2ZXJzaW9uPScxLjAu
MCcsCiAgICAgZGVzY3JpcHRpb249J0xpYnJhcnkgZGVzaWduZWQgdG8gaW50ZXJhY3Qgd2l0aCBn
aXQgYW5kIHN2biByZXBvc2l0b3JpZXMuJywKICAgICBsb25nX2Rlc2NyaXB0aW9uPXJlYWRtZSgp
LAogICAgIGNsYXNzaWZpZXJzPVsKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtp
dHNjbXB5L3dlYmtpdHNjbXB5L19faW5pdF9fLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Njcmlw
dHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L19faW5pdF9fLnB5CShyZXZpc2lv
biAyODA0MjIpCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRz
Y21weS9fX2luaXRfXy5weQkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQCBleGNlcHQg
SW1wb3J0RXJyb3I6CiAgICAgICAgICJQbGVhc2UgaW5zdGFsbCB3ZWJraXRjb3JlcHkgd2l0aCBg
cGlwIGluc3RhbGwgd2Via2l0Y29yZXB5IC0tZXh0cmEtaW5kZXgtdXJsIDxwYWNrYWdlIGluZGV4
IFVSTD5gIgogICAgICkKIAotdmVyc2lvbiA9IFZlcnNpb24oMCwgMTUsIDApCit2ZXJzaW9uID0g
VmVyc2lvbigxLCAwLCAwKQogCiBBdXRvSW5zdGFsbC5yZWdpc3RlcihQYWNrYWdlKCdmYXN0ZW5l
cnMnLCBWZXJzaW9uKDAsIDE1LCAwKSkpCiBBdXRvSW5zdGFsbC5yZWdpc3RlcihQYWNrYWdlKCdt
b25vdG9uaWMnLCBWZXJzaW9uKDEsIDUpKSkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVz
L3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L2xvY2FsL3NjbS5weQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9sb2NhbC9zY20ucHkJ
KHJldmlzaW9uIDI4MDQyMikKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5
L3dlYmtpdHNjbXB5L2xvY2FsL3NjbS5weQkod29ya2luZyBjb3B5KQpAQCAtNDUsMTMgKzQ1LDEz
IEBAIGNsYXNzIFNjbShTY21CYXNlKToKICAgICAgICAgcmV0dXJuIG9zLnBhdGgucmVhbHBhdGgo
cGF0aCkKIAogICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBmcm9tX3BhdGgoY2xzLCBwYXRoLCBj
b250cmlidXRvcnM9Tm9uZSk6CisgICAgZGVmIGZyb21fcGF0aChjbHMsIHBhdGgsIGNvbnRyaWJ1
dG9ycz1Ob25lLCAqKmt3YXJncyk6CiAgICAgICAgIGZyb20gd2Via2l0c2NtcHkgaW1wb3J0IGxv
Y2FsCiAKICAgICAgICAgaWYgbG9jYWwuR2l0LmlzX2NoZWNrb3V0KHBhdGgpOgotICAgICAgICAg
ICAgcmV0dXJuIGxvY2FsLkdpdChwYXRoLCBjb250cmlidXRvcnM9Y29udHJpYnV0b3JzKQorICAg
ICAgICAgICAgcmV0dXJuIGxvY2FsLkdpdChwYXRoLCBjb250cmlidXRvcnM9Y29udHJpYnV0b3Jz
LCAqKmt3YXJncykKICAgICAgICAgaWYgbG9jYWwuU3ZuLmlzX2NoZWNrb3V0KHBhdGgpOgotICAg
ICAgICAgICAgcmV0dXJuIGxvY2FsLlN2bihwYXRoLCBjb250cmlidXRvcnM9Y29udHJpYnV0b3Jz
KQorICAgICAgICAgICAgcmV0dXJuIGxvY2FsLlN2bihwYXRoLCBjb250cmlidXRvcnM9Y29udHJp
YnV0b3JzLCAqKmt3YXJncykKICAgICAgICAgcmFpc2UgT1NFcnJvcigiJ3t9JyBpcyBub3QgYSBr
bm93biBTQ00gdHlwZSIuZm9ybWF0KHBhdGgpKQogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBh
dGgsIGRldl9icmFuY2hlcz1Ob25lLCBwcm9kX2JyYW5jaGVzPU5vbmUsIGNvbnRyaWJ1dG9ycz1O
b25lLCBpZD1Ob25lKToKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5
L3dlYmtpdHNjbXB5L21vY2tzL2xvY2FsL3N2bi5weQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3Jp
cHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9tb2Nrcy9sb2NhbC9zdm4ucHkJ
KHJldmlzaW9uIDI4MDQyMikKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5
L3dlYmtpdHNjbXB5L21vY2tzL2xvY2FsL3N2bi5weQkod29ya2luZyBjb3B5KQpAQCAtMTMyLDYg
KzEzMiwxNSBAQCBjbGFzcyBTdm4obW9ja3MuU3VicHJvY2Vzcyk6CiAgICAgICAgICAgICAgICAg
ICAgIGJlZ2luPWludChhcmdzWzNdLnNwbGl0KCc6JylbLTFdKSwKICAgICAgICAgICAgICAgICAp
IGlmIHNlbGYuY29ubmVjdGVkIGVsc2UgbW9ja3MuUHJvY2Vzc0NvbXBsZXRpb24ocmV0dXJuY29k
ZT0xKQogICAgICAgICAgICAgKSwgbW9ja3MuU3VicHJvY2Vzcy5Sb3V0ZSgKKyAgICAgICAgICAg
ICAgICBzZWxmLmV4ZWN1dGFibGUsICdsb2cnLAorICAgICAgICAgICAgICAgIGN3ZD1zZWxmLnBh
dGgsCisgICAgICAgICAgICAgICAgZ2VuZXJhdG9yPWxhbWJkYSAqYXJncywgKiprd2FyZ3M6Cisg
ICAgICAgICAgICAgICAgICAgIHNlbGYuX2xvZ19yYW5nZSgKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGJyYW5jaD0ndHJ1bmsnLAorICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW49c2VsZi5j
b21taXRzWyd0cnVuayddWzBdLnJldmlzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgZW5k
PXNlbGYuY29tbWl0c1sndHJ1bmsnXVstMV0ucmV2aXNpb24sCisgICAgICAgICAgICAgICAgICAg
ICkgaWYgc2VsZi5jb25uZWN0ZWQgZWxzZSBtb2Nrcy5Qcm9jZXNzQ29tcGxldGlvbihyZXR1cm5j
b2RlPTEpCisgICAgICAgICAgICApLCBtb2Nrcy5TdWJwcm9jZXNzLlJvdXRlKAogICAgICAgICAg
ICAgICAgIHNlbGYuZXhlY3V0YWJsZSwgJ3VwJywgJy1yJywgcmUuY29tcGlsZShyJ1xkKycpLAog
ICAgICAgICAgICAgICAgIGN3ZD1zZWxmLnBhdGgsCiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9y
PWxhbWJkYSAqYXJncywgKiprd2FyZ3M6CkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93
ZWJraXRzY21weS93ZWJraXRzY21weS9wcm9ncmFtL19faW5pdF9fLnB5Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Byb2dyYW0v
X19pbml0X18ucHkJKHJldmlzaW9uIDI4MDQyMikKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVz
L3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Byb2dyYW0vX19pbml0X18ucHkJKHdvcmtpbmcgY29w
eSkKQEAgLTI0LDE3ICsyNCwxOSBAQCBpbXBvcnQgYXJncGFyc2UKIGltcG9ydCBsb2dnaW5nCiBp
bXBvcnQgb3MKIAotZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IGFyZ3VtZW50cywgbG9nIGFzIHdl
YmtpdGNvcmVweV9sb2cKLWZyb20gd2Via2l0c2NtcHkgaW1wb3J0IGxvY2FsLCBsb2csIHJlbW90
ZQotCitmcm9tIC5ibGFtZSBpbXBvcnQgQmxhbWUKIGZyb20gLmNhbm9uaWNhbGl6ZSBpbXBvcnQg
Q2Fub25pY2FsaXplCiBmcm9tIC5jbGVhbiBpbXBvcnQgQ2xlYW4KIGZyb20gLmNvbW1hbmQgaW1w
b3J0IENvbW1hbmQKIGZyb20gLmNoZWNrb3V0IGltcG9ydCBDaGVja291dAogZnJvbSAuZmluZCBp
bXBvcnQgRmluZCwgSW5mbworZnJvbSAubG9nIGltcG9ydCBMb2cKIGZyb20gLnB1bGwgaW1wb3J0
IFB1bGwKIGZyb20gLnNldHVwX2dpdF9zdm4gaW1wb3J0IFNldHVwR2l0U3ZuCiAKK2Zyb20gd2Vi
a2l0Y29yZXB5IGltcG9ydCBhcmd1bWVudHMsIGxvZyBhcyB3ZWJraXRjb3JlcHlfbG9nCitmcm9t
IHdlYmtpdHNjbXB5IGltcG9ydCBsb2NhbCwgbG9nLCByZW1vdGUKKwogCiBkZWYgbWFpbihhcmdz
PU5vbmUsIHBhdGg9Tm9uZSwgbG9nZ2Vycz1Ob25lLCBjb250cmlidXRvcnM9Tm9uZSwgaWRlbnRp
Zmllcl90ZW1wbGF0ZT1Ob25lLCBzdWJ2ZXJzaW9uPU5vbmUpOgogICAgIGxvZ2dpbmcuYmFzaWND
b25maWcobGV2ZWw9bG9nZ2luZy5XQVJOSU5HKQpAQCAtNjEsNyArNjMsNyBAQCBkZWYgbWFpbihh
cmdzPU5vbmUsIHBhdGg9Tm9uZSwgbG9nZ2Vycz1OCiAKICAgICBzdWJwYXJzZXJzID0gcGFyc2Vy
LmFkZF9zdWJwYXJzZXJzKGhlbHA9J3N1Yi1jb21tYW5kIGhlbHAnKQogCi0gICAgcHJvZ3JhbXMg
PSBbRmluZCwgSW5mbywgQ2hlY2tvdXQsIENhbm9uaWNhbGl6ZSwgUHVsbCwgQ2xlYW5dCisgICAg
cHJvZ3JhbXMgPSBbRmluZCwgSW5mbywgQ2hlY2tvdXQsIENhbm9uaWNhbGl6ZSwgUHVsbCwgQ2xl
YW4sIExvZywgQmxhbWVdCiAgICAgaWYgc3VidmVyc2lvbjoKICAgICAgICAgcHJvZ3JhbXMuYXBw
ZW5kKFNldHVwR2l0U3ZuKQogCkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRz
Y21weS93ZWJraXRzY21weS9wcm9ncmFtL2JsYW1lLnB5Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Nj
cmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Byb2dyYW0vYmxhbWUucHkJ
KG5vbmV4aXN0ZW50KQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Vi
a2l0c2NtcHkvcHJvZ3JhbS9ibGFtZS5weQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ1IEBA
CisjIS91c3IvYmluL2VudiBweXRob24zCisKKyMgQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBh
cmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyMgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgor
IyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
CisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisKK2ltcG9ydCBzeXMKKworZnJvbSB3ZWJraXRzY21weSBpbXBvcnQgbG9jYWwKK2Zy
b20gd2Via2l0c2NtcHkucHJvZ3JhbS5jb21tYW5kIGltcG9ydCBGaWx0ZXJlZENvbW1hbmQKKwor
CitjbGFzcyBCbGFtZShGaWx0ZXJlZENvbW1hbmQpOgorICAgIG5hbWUgPSAnYmxhbWUnCisgICAg
aGVscCA9ICJGaWx0ZXIgcmF3IG91dHB1dCBvZiAnZ2l0IGJsYW1lJyBvciAnc3ZuIGJsYW1lJyB0
byByZXBsYWNlIG5hdGl2ZSBjb21taXQgcmVwcmVzZW50YXRpb24gd2l0aCBpZGVudGlmaWVycyIK
KworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBtYWluKGNscywgYXJncywgcmVwb3NpdG9yeSwg
Kiprd2FyZ3MpOgorICAgICAgICByZXR1cm4gQmxhbWUucGFnZXIoYXJncywgcmVwb3NpdG9yeSwg
ZmlsZT1fX2ZpbGVfXywgKiprd2FyZ3MpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoK
KyAgICBzeXMuZXhpdChCbGFtZS5tYWluKAorICAgICAgICBzeXMuYXJndlszOl0sCisgICAgICAg
IGxvY2FsLlNjbS5mcm9tX3BhdGgocGF0aD1zeXMuYXJndlsxXSwgY2FjaGVkPVRydWUpLAorICAg
ICAgICByZXByZXNlbnRhdGlvbj1zeXMuYXJndlsyXSwKKyAgICApKQpJbmRleDogVG9vbHMvU2Ny
aXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvcHJvZ3JhbS9jb21tYW5kLnB5
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtp
dHNjbXB5L3Byb2dyYW0vY29tbWFuZC5weQkocmV2aXNpb24gMjgwNDIyKQorKysgVG9vbHMvU2Ny
aXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvcHJvZ3JhbS9jb21tYW5kLnB5
CSh3b3JraW5nIGNvcHkpCkBAIC0yMCw3ICsyMCwxNCBAQAogIyBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogCitpbXBvcnQgb3MKK2ltcG9ydCByZQoraW1wb3J0IHN1YnByb2Nl
c3MKIGltcG9ydCBzeXMKK2ltcG9ydCB0aW1lCisKK2Zyb20gd2Via2l0c2NtcHkuY29tbWl0IGlt
cG9ydCBDb21taXQKK2Zyb20gd2hpY2hjcmFmdCBpbXBvcnQgd2hpY2gKIAogCiBjbGFzcyBDb21t
YW5kKG9iamVjdCk6CkBAIC0zOCwzICs0NSwyMDEgQEAgY2xhc3MgQ29tbWFuZChvYmplY3QpOgog
ICAgIGRlZiBtYWluKGNscywgYXJncywgcmVwb3NpdG9yeSwgKiprd2FyZ3MpOgogICAgICAgICBz
eXMuc3RkZXJyLndyaXRlKCdObyBjb21tYW5kIHNwZWNpZmllZFxuJykKICAgICAgICAgcmV0dXJu
IC0xCisKKworY2xhc3MgRmlsdGVyZWRDb21tYW5kKG9iamVjdCk6CisgICAgSURFTlRJRklFUiA9
ICdpZGVudGlmaWVyJworICAgIEhBU0ggPSAnaGFzaCcKKyAgICBSRVZJU0lPTiA9ICdyZXZpc2lv
bicKKworICAgIEdJVF9IRUFERVJfUkUgPSByZS5jb21waWxlKHInXmNvbW1pdCAoP1A8aGFzaD5b
YS1mMC05QS1GXSspJykKKyAgICBTVk5fSEVBREVSX1JFID0gcmUuY29tcGlsZShyJ14oP1A8cmV2
aXNpb24+ci9kKykgfCAnKQorCisgICAgUkVWSVNJT05fUkVTID0gKHJlLmNvbXBpbGUocideKD9Q
PHJldmlzaW9uPlxkKylccycpLCByZS5jb21waWxlKHInKD9QPHJldmlzaW9uPltyUl1cZCspJykp
CisgICAgSEFTSF9SRVMgPSAocmUuY29tcGlsZShyJ14oP1A8aGFzaD5bYS1mMC05QS1GXXs4fVth
LWYwLTlBLUZdKylccycpLCByZS5jb21waWxlKHInKD9QPGhhc2g+W2EtZjAtOUEtRl17OH1bYS1m
MC05QS1GXSspJykpCisgICAgSURFTlRJRklFUl9SRVMgPSAocmUuY29tcGlsZShyJ14oP1A8aWRl
bnRpZmllcj4oXGQrXC4pP1xkK0BcUyopJyksIHJlLmNvbXBpbGUocicoP1A8aWRlbnRpZmllcj4o
XGQrXC4pP1xkK0BcUyopJykpCisgICAgTk9fRklMVEVSX1JFUyA9IFtyZS5jb21waWxlKHInICAg
IENhbm9uaWNhbCBsaW5rOicpLCByZS5jb21waWxlKHInICAgIGdpdC1zdm4taWQ6JyldCisKKyAg
ICBSRVBMQUNFX01PREUgPSAwCisgICAgQVBQRU5EX01PREUgPSAxCisgICAgSEVBREVSX01PREUg
PSAyCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgcGFyc2VyKGNscywgcGFyc2VyLCBsb2dn
ZXJzPU5vbmUpOgorICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAgICAgJ2Fy
Z3MnLCBuYXJncz0nKicsCisgICAgICAgICAgICB0eXBlPXN0ciwgZGVmYXVsdD1Ob25lLAorICAg
ICAgICAgICAgaGVscD0nQXJndW1lbnRzIHRvIGJlIHBhc3NlZCB0byB0YmUgbmF0aXZlIHNvdXJj
ZS1jb2RlIG1hbmFnZW1lbnQgdG9vbCcsCisgICAgICAgICkKKyAgICAgICAgcGFyc2VyLmFkZF9h
cmd1bWVudCgKKyAgICAgICAgICAgICctLWlkZW50aWZpZXInLCAnLWknLAorICAgICAgICAgICAg
aGVscD0nUmVwcmVzZW50IGNvbW1pdHMgYXMgaWRlbnRpZmllcnMnLAorICAgICAgICAgICAgZGVz
dD0ncmVwcmVzZW50YXRpb24nLAorICAgICAgICAgICAgYWN0aW9uPSdzdG9yZV9jb25zdCcsIGNv
bnN0PWNscy5JREVOVElGSUVSLAorICAgICAgICAgICAgZGVmYXVsdD1jbHMuSURFTlRJRklFUiwK
KyAgICAgICAgKQorICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAgICAgJy0t
aGFzaCcsCisgICAgICAgICAgICBoZWxwPSdSZXByZXNlbnQgY29tbWl0cyBhcyBoYXNoZXMnLAor
ICAgICAgICAgICAgZGVzdD0ncmVwcmVzZW50YXRpb24nLAorICAgICAgICAgICAgYWN0aW9uPSdz
dG9yZV9jb25zdCcsIGNvbnN0PWNscy5IQVNILAorICAgICAgICAgICAgZGVmYXVsdD1jbHMuSURF
TlRJRklFUiwKKyAgICAgICAgKQorICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAg
ICAgICAgJy0tcmV2aXNpb24nLCAnLXInLAorICAgICAgICAgICAgaGVscD0nUmVwcmVzZW50IGNv
bW1pdHMgYXMgcmV2aXNpb25zJywKKyAgICAgICAgICAgIGRlc3Q9J3JlcHJlc2VudGF0aW9uJywK
KyAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVfY29uc3QnLCBjb25zdD1jbHMuUkVWSVNJT04sCisg
ICAgICAgICAgICBkZWZhdWx0PWNscy5JREVOVElGSUVSLAorICAgICAgICApCisgICAgICAgIHBh
cnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICAgICAnLS1yZXByZXNlbnRhdGlvbicsIHR5cGU9
c3RyLAorICAgICAgICAgICAgaGVscD0nQ2hhbmdlIG1ldGhvZCB1c2VkIHRvIHJlcHJlc2VudCBh
IGNvbW1pdCAoaWRlbnRpZmllci9oYXNoL3JldmlzaW9uKScsCisgICAgICAgICAgICBkZXN0PSdy
ZXByZXNlbnRhdGlvbicsCisgICAgICAgICAgICBkZWZhdWx0PWNscy5JREVOVElGSUVSLAorICAg
ICAgICApCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgcGFnZXIoY2xzLCBhcmdzLCByZXBv
c2l0b3J5LCBmaWxlPU5vbmUsICoqa3dhcmdzKToKKyAgICAgICAgaWYgbm90IHJlcG9zaXRvcnku
cGF0aDoKKyAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoIkNhbm5vdCBydW4gJ3t9JyBvbiBy
ZW1vdGUgcmVwb3NpdG9yeVxuIi5mb3JtYXQoY2xzLm5hbWUpKQorICAgICAgICAgICAgcmV0dXJu
IDEKKworICAgICAgICAjIElmIHdlJ3JlIGEgdGVybWluYWwsIHJlbHkgb24gJ21vcmUnIHRvIGRp
c3BsYXkgb3V0cHV0CisgICAgICAgIGlmIHN5cy5zdGRpbi5pc2F0dHkoKSBhbmQgbm90IGlzaW5z
dGFuY2UoYXJncywgbGlzdCkgYW5kIGZpbGU6CisgICAgICAgICAgICBlbnZpcm9uID0gb3MuZW52
aXJvbgorICAgICAgICAgICAgZW52aXJvblsnUFlUSE9OUEFUSCddID0gJzonLmpvaW4oc3lzLnBh
dGgpCisKKyAgICAgICAgICAgIGNoaWxkID0gc3VicHJvY2Vzcy5Qb3BlbigKKyAgICAgICAgICAg
ICAgICBbc3lzLmV4ZWN1dGFibGUsIGZpbGUsIHJlcG9zaXRvcnkucm9vdF9wYXRoLCBhcmdzLnJl
cHJlc2VudGF0aW9uXSArIGFyZ3MuYXJncywKKyAgICAgICAgICAgICAgICBlbnY9ZW52aXJvbiwK
KyAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAg
IHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICApCisgICAgICAgICAgICBtb3Jl
ID0gc3VicHJvY2Vzcy5Qb3Blbihbd2hpY2goJ21vcmUnKSwgJy1GJ10sIHN0ZGluPWNoaWxkLnN0
ZG91dCkKKworICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHdoaWxlIG1vcmUucG9s
bCgpIGlzIE5vbmUgYW5kIG5vdCBjaGlsZC5wb2xsKCk6CisgICAgICAgICAgICAgICAgICAgIHRp
bWUuc2xlZXAoMC4yNSkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgY2hp
bGQua2lsbCgpCisgICAgICAgICAgICAgICAgbW9yZS5raWxsKCkKKyAgICAgICAgICAgICAgICBj
aGlsZF9lcnJvciA9IGNoaWxkLnN0ZGVyci5yZWFkKCkKKyAgICAgICAgICAgICAgICBpZiBjaGls
ZF9lcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZGVyci5idWZmZXIud3JpdGUoYidc
bicgKyBjaGlsZF9lcnJvcikKKworICAgICAgICAgICAgcmV0dXJuIGNoaWxkLnJldHVybmNvZGUK
KworICAgICAgICByZXR1cm4gRmlsdGVyZWRDb21tYW5kLm1haW4oYXJncywgcmVwb3NpdG9yeSwg
Y29tbWFuZD1jbHMubmFtZSwgKiprd2FyZ3MpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYg
bWFpbihjbHMsIGFyZ3MsIHJlcG9zaXRvcnksIGNvbW1hbmQ9Tm9uZSwgcmVwcmVzZW50YXRpb249
Tm9uZSwgKiprd2FyZ3MpOgorICAgICAgICBpZiBub3QgcmVwb3NpdG9yeS5wYXRoOgorICAgICAg
ICAgICAgc3lzLnN0ZGVyci53cml0ZSgiQ2Fubm90IHJ1biAne30nIG9uIHJlbW90ZSByZXBvc2l0
b3J5XG4iLmZvcm1hdChjb21tYW5kKSkKKyAgICAgICAgICAgIHJldHVybiAxCisKKyAgICAgICAg
Y2FjaGUgPSBnZXRhdHRyKHJlcG9zaXRvcnksICdjYWNoZScsIE5vbmUpCisgICAgICAgIGlmIG5v
dCBjYWNoZToKKyAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoJ05vIGNhY2hlIGF2YWlsYWJs
ZSwgY2Fubm90IHBlcmZvcm1hbnRseSBtYXAgY29tbWl0IHJlZmVyZW5jZXNcbicpCisgICAgICAg
ICAgICByZXR1cm4gMQorCisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGFyZ3MsIGxpc3QpOgor
ICAgICAgICAgICAgcmVwcmVzZW50YXRpb24gPSByZXByZXNlbnRhdGlvbiBvciBhcmdzLnJlcHJl
c2VudGF0aW9uCisgICAgICAgICAgICBhcmdzID0gYXJncy5hcmdzCisgICAgICAgIGVsc2U6Cisg
ICAgICAgICAgICByZXByZXNlbnRhdGlvbiA9IHJlcHJlc2VudGF0aW9uIG9yIGNscy5JREVOVElG
SUVSCisKKyAgICAgICAgaWYgcmVwcmVzZW50YXRpb24gbm90IGluIChjbHMuSURFTlRJRklFUiwg
Y2xzLkhBU0gsIGNscy5SRVZJU0lPTik6CisgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCIn
e30nIGlzIG5vdCBhIHZhbGlkIGNvbW1pdCByZXByZXNlbnRhdGlvblxuIi5mb3JtYXQocmVwcmVz
ZW50YXRpb24pKQorICAgICAgICAgICAgcmV0dXJuIDEKKworICAgICAgICBmb3IgaW5kZXggaW4g
cmFuZ2UobGVuKGFyZ3MpKToKKyAgICAgICAgICAgIHBhcnNlZCA9IENvbW1pdC5wYXJzZShhcmdz
W2luZGV4XSwgZG9fYXNzZXJ0PUZhbHNlKQorICAgICAgICAgICAgaWYgbm90IHBhcnNlZDoKKyAg
ICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgcmVwbGFjZW1lbnQgPSBOb25lCisg
ICAgICAgICAgICBpZiByZXBvc2l0b3J5LmlzX3N2bjoKKyAgICAgICAgICAgICAgICByZXBsYWNl
bWVudCA9IHJlcG9zaXRvcnkuY2FjaGUudG9fcmV2aXNpb24oaGFzaD1wYXJzZWQuaGFzaCwgaWRl
bnRpZmllcj1zdHIocGFyc2VkKSBpZiBwYXJzZWQuaWRlbnRpZmllciBlbHNlIE5vbmUpCisgICAg
ICAgICAgICBpZiByZXBvc2l0b3J5LmlzX2dpdDoKKyAgICAgICAgICAgICAgICByZXBsYWNlbWVu
dCA9IHJlcG9zaXRvcnkuY2FjaGUudG9faGFzaChyZXZpc2lvbj1wYXJzZWQucmV2aXNpb24sIGlk
ZW50aWZpZXI9c3RyKHBhcnNlZCkgaWYgcGFyc2VkLmlkZW50aWZpZXIgZWxzZSBOb25lKQorICAg
ICAgICAgICAgaWYgcmVwbGFjZW1lbnQ6CisgICAgICAgICAgICAgICAgYXJnc1tpbmRleF0gPSBy
ZXBsYWNlbWVudAorCisgICAgICAgIGxvZ19vdXRwdXQgPSBzdWJwcm9jZXNzLlBvcGVuKAorICAg
ICAgICAgICAgW3JlcG9zaXRvcnkuZXhlY3V0YWJsZSgpLCBjb21tYW5kXSArIGFyZ3MsCisgICAg
ICAgICAgICBjd2Q9cmVwb3NpdG9yeS5yb290X3BhdGgsCisgICAgICAgICAgICBzdGRvdXQ9c3Vi
cHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSwKKyAgICAg
ICAgICAgICoqKGRpY3QoZW5jb2Rpbmc9J3V0Zi04JykgaWYgc3lzLnZlcnNpb25faW5mbyA+ICgz
LCAwKSBlbHNlIGRpY3QoKSkKKyAgICAgICAgKQorICAgICAgICBsb2dfb3V0cHV0LnBvbGwoKQor
CisgICAgICAgIGRlZiByZXBsYWNlX2xpbmUobWF0Y2gsIG1vZGU9Y2xzLkFQUEVORF9NT0RFLCAq
Kmt3YXJncyk6CisgICAgICAgICAgICByZWZlcmVuY2UgPSBrd2FyZ3MuZ2V0KHJlcHJlc2VudGF0
aW9uKQorICAgICAgICAgICAgaWYgbm90IHJlZmVyZW5jZToKKyAgICAgICAgICAgICAgICByZWZl
cmVuY2UgPSBnZXRhdHRyKGNhY2hlLCAndG9fe30nLmZvcm1hdChyZXByZXNlbnRhdGlvbiksIGxh
bWJkYSAqKmt3YXJnczogTm9uZSkoKiprd2FyZ3MpCisKKyAgICAgICAgICAgIGlmIHJlZmVyZW5j
ZToKKyAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHJlZmVyZW5jZSwgaW50KToKKyAgICAg
ICAgICAgICAgICAgICAgcmVmZXJlbmNlID0gJ3J7fScuZm9ybWF0KHJlZmVyZW5jZSkKKyAgICAg
ICAgICAgICAgICBpZiByZXByZXNlbnRhdGlvbiA9PSAnaGFzaCc6CisgICAgICAgICAgICAgICAg
ICAgIHJlZmVyZW5jZSA9IHJlZmVyZW5jZVs6Q29tbWl0LkhBU0hfTEFCRUxfU0laRV0KKyAgICAg
ICAgICAgICAgICBpZiBtb2RlID09IGNscy5BUFBFTkRfTU9ERToKKyAgICAgICAgICAgICAgICAg
ICAgcmVmZXJlbmNlID0gJ3t9ICh7fSknLmZvcm1hdChtYXRjaC5ncm91cCgxKSwgcmVmZXJlbmNl
KQorICAgICAgICAgICAgICAgIGlmIG1vZGUgPT0gY2xzLkhFQURFUl9NT0RFOgorICAgICAgICAg
ICAgICAgICAgICBhbHRlcm5hdGVzID0gW10gaWYgbWF0Y2guZ3JvdXAoMSkuc3RhcnRzd2l0aChy
ZWZlcmVuY2UpIGVsc2UgW21hdGNoLmdyb3VwKDEpXQorICAgICAgICAgICAgICAgICAgICBmb3Ig
cmVwciBpbiB7J3JldmlzaW9uJywgJ2hhc2gnLCAnaWRlbnRpZmllcid9IC0geydoYXNoJyBpZiBy
ZXBvc2l0b3J5LmlzX2dpdCBlbHNlICdyZXZpc2lvbicsIHJlcHJlc2VudGF0aW9ufToKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIHJlcHIgaW4ga3dhcmdzOgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgICAgICAgICBvdGhlciA9IGdldGF0
dHIoY2FjaGUsICd0b197fScuZm9ybWF0KHJlcHIpLCBsYW1iZGEgKiprd2FyZ3M6IE5vbmUpKCoq
a3dhcmdzKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IG90aGVyOgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBv
dGhlciA9PSAnaGFzaCc6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXIgPSBvdGhl
cls6Q29tbWl0LkhBU0hfTEFCRUxfU0laRV0KKyAgICAgICAgICAgICAgICAgICAgICAgIGFsdGVy
bmF0ZXMuYXBwZW5kKCdye30nLmZvcm1hdChvdGhlcikgaWYgaXNpbnN0YW5jZShvdGhlciwgaW50
KSBlbHNlIG90aGVyKQorICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2UgPSAne30gKHt9KScu
Zm9ybWF0KHJlZmVyZW5jZSwgJywgJy5qb2luKGFsdGVybmF0ZXMpKQorICAgICAgICAgICAgICAg
IHJldHVybiBtYXRjaC5ncm91cCgwKS5yZXBsYWNlKG1hdGNoLmdyb3VwKDEpLCByZWZlcmVuY2Up
CisgICAgICAgICAgICByZXR1cm4gbWF0Y2guZ3JvdXAoMCkKKworICAgICAgICByZXMgPSB7fQor
ICAgICAgICBpZiByZXByZXNlbnRhdGlvbiAhPSBjbHMuSEFTSDoKKyAgICAgICAgICAgIHJlc1tj
bHMuSEFTSF0gPSBjbHMuSEFTSF9SRVMKKyAgICAgICAgaWYgcmVwcmVzZW50YXRpb24gIT0gY2xz
LlJFVklTSU9OOgorICAgICAgICAgICAgcmVzW2Nscy5SRVZJU0lPTl0gPSBjbHMuUkVWSVNJT05f
UkVTCisgICAgICAgIGlmIHJlcHJlc2VudGF0aW9uICE9IGNscy5JREVOVElGSUVSOgorICAgICAg
ICAgICAgcmVzW2Nscy5JREVOVElGSUVSXSA9IGNscy5JREVOVElGSUVSX1JFUworCisgICAgICAg
IGhlYWRlcl9yZSA9IGNscy5HSVRfSEVBREVSX1JFIGlmIHJlcG9zaXRvcnkuaXNfZ2l0IGVsc2Ug
Y2xzLlNWTl9IRUFERVJfUkUKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBsaW5lID0gbG9n
X291dHB1dC5zdGRvdXQucmVhZGxpbmUoKQorICAgICAgICAgICAgd2hpbGUgbGluZToKKyAgICAg
ICAgICAgICAgICBoZWFkZXIgPSBoZWFkZXJfcmUuc3ViKAorICAgICAgICAgICAgICAgICAgICBs
YW1iZGEgbWF0Y2g6IHJlcGxhY2VfbGluZShtYXRjaCwgbW9kZT1jbHMuSEVBREVSX01PREUsICoq
eydoYXNoJyBpZiByZXBvc2l0b3J5LmlzX2dpdCBlbHNlICdyZXZpc2lvbic6IG1hdGNoLmdyb3Vw
KDEpfSksCisgICAgICAgICAgICAgICAgICAgIGxpbmUsCisgICAgICAgICAgICAgICAgKQorICAg
ICAgICAgICAgICAgIGlmIGhlYWRlciAhPSBsaW5lOgorICAgICAgICAgICAgICAgICAgICBzeXMu
c3Rkb3V0LndyaXRlKGhlYWRlcikKKyAgICAgICAgICAgICAgICAgICAgbGluZSA9IGxvZ19vdXRw
dXQuc3Rkb3V0LnJlYWRsaW5lKCkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAg
ICAgICAgICAgICAgIGZvciByZXByLCByZWdleHMgaW4gcmVzLml0ZW1zKCk6CisgICAgICAgICAg
ICAgICAgICAgIGxpbmUgPSByZWdleHNbMF0uc3ViKAorICAgICAgICAgICAgICAgICAgICAgICAg
bGFtYmRhIG1hdGNoOiByZXBsYWNlX2xpbmUobWF0Y2gsIG1vZGU9Y2xzLlJFUExBQ0VfTU9ERSwg
Kip7cmVwcjogbWF0Y2guZ3JvdXAoMSl9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUs
CisgICAgICAgICAgICAgICAgICAgICkKKworICAgICAgICAgICAgICAgIGlmIG5vdCBhbnkoci5t
YXRjaChsaW5lKSBmb3IgciBpbiBjbHMuTk9fRklMVEVSX1JFUyk6CisgICAgICAgICAgICAgICAg
ICAgIGZvciByZXByLCByZWdleHMgaW4gcmVzLml0ZW1zKCk6CisgICAgICAgICAgICAgICAgICAg
ICAgICBsaW5lID0gcmVnZXhzWzFdLnN1YigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBs
YW1iZGEgbWF0Y2g6IHJlcGxhY2VfbGluZShtYXRjaCwgbW9kZT1jbHMuQVBQRU5EX01PREUsICoq
e3JlcHI6IG1hdGNoLmdyb3VwKDEpfSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlu
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICkKKworICAgICAgICAgICAgICAgIHN5cy5zdGRv
dXQud3JpdGUobGluZSkKKworICAgICAgICAgICAgICAgIGxpbmUgPSBsb2dfb3V0cHV0LnN0ZG91
dC5yZWFkbGluZSgpCisKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGxvZ19vdXRwdXQu
a2lsbCgpCisgICAgICAgIHJldHVybiBsb2dfb3V0cHV0LnJldHVybmNvZGUKSW5kZXg6IFRvb2xz
L1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Byb2dyYW0vbG9nLnB5
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtp
dHNjbXB5L3Byb2dyYW0vbG9nLnB5CShub25leGlzdGVudCkKKysrIFRvb2xzL1NjcmlwdHMvbGli
cmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Byb2dyYW0vbG9nLnB5CSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsNDUgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKworIyBDb3B5cmln
aHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisj
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IK
KyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IHN5cworCitmcm9tIHdlYmtpdHNj
bXB5IGltcG9ydCBsb2NhbAorZnJvbSB3ZWJraXRzY21weS5wcm9ncmFtLmNvbW1hbmQgaW1wb3J0
IEZpbHRlcmVkQ29tbWFuZAorCisKK2NsYXNzIExvZyhGaWx0ZXJlZENvbW1hbmQpOgorICAgIG5h
bWUgPSAnbG9nJworICAgIGhlbHAgPSAiRmlsdGVyIHJhdyBvdXRwdXQgb2YgJ2dpdCBsb2cnIG9y
ICdzdm4gbG9nJyB0byByZXBsYWNlIG5hdGl2ZSBjb21taXQgcmVwcmVzZW50YXRpb24gd2l0aCBp
ZGVudGlmaWVycyIKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBtYWluKGNscywgYXJncywg
cmVwb3NpdG9yeSwgKiprd2FyZ3MpOgorICAgICAgICByZXR1cm4gTG9nLnBhZ2VyKGFyZ3MsIHJl
cG9zaXRvcnksIGZpbGU9X19maWxlX18sICoqa3dhcmdzKQorCisKK2lmIF9fbmFtZV9fID09ICdf
X21haW5fXyc6CisgICAgc3lzLmV4aXQoTG9nLm1haW4oCisgICAgICAgIHN5cy5hcmd2WzM6XSwK
KyAgICAgICAgbG9jYWwuU2NtLmZyb21fcGF0aChwYXRoPXN5cy5hcmd2WzFdLCBjYWNoZWQ9VHJ1
ZSksCisgICAgICAgIHJlcHJlc2VudGF0aW9uPXN5cy5hcmd2WzJdLAorICAgICkpCkluZGV4OiBU
b29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS90ZXN0L2xvZ191
bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRz
Y21weS93ZWJraXRzY21weS90ZXN0L2xvZ191bml0dGVzdC5weQkobm9uZXhpc3RlbnQpCisrKyBU
b29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS90ZXN0L2xvZ191
bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIwNiBAQAorIyBDb3B5cmlnaHQg
KEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMg
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IGpzb24KK2ltcG9ydCBvcworaW1wb3J0
IHNodXRpbAoraW1wb3J0IHRlbXBmaWxlCisKK2Zyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1l
Citmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgT3V0cHV0Q2FwdHVyZSwgdGVzdGluZworZnJvbSB3
ZWJraXRjb3JlcHkubW9ja3MgaW1wb3J0IFRpbWUgYXMgTW9ja1RpbWUKK2Zyb20gd2Via2l0c2Nt
cHkgaW1wb3J0IHByb2dyYW0sIG1vY2tzCisKKworY2xhc3MgVGVzdExvZyh0ZXN0aW5nLlBhdGhU
ZXN0Q2FzZSk6CisgICAgYmFzZXBhdGggPSAnbW9jay9yZXBvc2l0b3J5JworCisgICAgZGVmIHNl
dFVwKHNlbGYpOgorICAgICAgICBzdXBlcihUZXN0TG9nLCBzZWxmKS5zZXRVcCgpCisgICAgICAg
IG9zLm1rZGlyKG9zLnBhdGguam9pbihzZWxmLnBhdGgsICcuZ2l0JykpCisgICAgICAgIG9zLm1r
ZGlyKG9zLnBhdGguam9pbihzZWxmLnBhdGgsICcuc3ZuJykpCisKKyAgICBkZWYgdGVzdF9naXQo
c2VsZik6CisgICAgICAgIHdpdGggT3V0cHV0Q2FwdHVyZSgpIGFzIGNhcHR1cmVkLCBtb2Nrcy5s
b2NhbC5HaXQoc2VsZi5wYXRoKSwgbW9ja3MubG9jYWwuU3ZuKCksIE1vY2tUaW1lOgorICAgICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgtMSwgcHJvZ3JhbS5tYWluKAorICAgICAgICAgICAgICAg
IGFyZ3M9KCdsb2cnLCAnbWFpbicpLAorICAgICAgICAgICAgICAgIHBhdGg9c2VsZi5wYXRoLAor
ICAgICAgICAgICAgKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAg
Y2FwdHVyZWQuc3Rkb3V0LmdldHZhbHVlKCksCisgICAgICAgICAgICAnJydjb21taXQgNUBtYWlu
IChkOGJjZTI2ZmE2NWM2ZmM4ZjM5YzE3OTI3YWJiNzdmNjlmYWI4MmZjKQorQXV0aG9yOiBKb25h
dGhhbiBCZWRhcmQgPGpiZWRhcmRAYXBwbGUuY29tPgorRGF0ZTogICBTYXQgT2N0IDAzIDAzOjQ2
OjQwIDIwMjAgKzAwMDAKKworICAgIFBhdGNoIFNlcmllcworCitjb21taXQgNEBtYWluIChiYWU1
ZDFlOTA5OTlkNGY5MTZhOGExNTgxMGNjZmE0M2YzN2EyZmQ2KQorQXV0aG9yOiBKb25hdGhhbiBC
ZWRhcmQgPGpiZWRhcmRAYXBwbGUuY29tPgorRGF0ZTogICBTYXQgT2N0IDAzIDAzOjQ2OjQwIDIw
MjAgKzAwMDAKKworICAgIDh0aCBjb21taXQKKworY29tbWl0IDNAbWFpbiAoMWFiZTI1YjQ0M2U5
ODVmOTNiOTBkODMwZTRhN2UzNzMxMzM2YWY0ZCkKK0F1dGhvcjogSm9uYXRoYW4gQmVkYXJkIDxq
YmVkYXJkQGFwcGxlLmNvbT4KK0RhdGU6ICAgU2F0IE9jdCAwMyAwMjoyMzoyMCAyMDIwICswMDAw
CisKKyAgICA0dGggY29tbWl0CisKK2NvbW1pdCAyQG1haW4gKGZmZjgzYmIyZDkxNzFiNGQ5MTk2
ZTk3N2ViMDUwOGZkNTdlN2EwOGQpCitBdXRob3I6IEpvbmF0aGFuIEJlZGFyZCA8amJlZGFyZEBh
cHBsZS5jb20+CitEYXRlOiAgIFNhdCBPY3QgMDMgMDE6NTA6MDAgMjAyMCArMDAwMAorCisgICAg
Mm5kIGNvbW1pdAorCitjb21taXQgMUBtYWluICg5YjgzMTFmMjVhNzdiYTE0OTIzZDlkNWE2NTMy
MTAzZjU0YWJlZmNiKQorQXV0aG9yOiBKb25hdGhhbiBCZWRhcmQgPGpiZWRhcmRAYXBwbGUuY29t
PgorRGF0ZTogICBTYXQgT2N0IDAzIDAxOjMzOjIwIDIwMjAgKzAwMDAKKworICAgIDFzdCBjb21t
aXQKKycnJywKKyAgICAgICAgKQorCisgICAgZGVmIHRlc3RfZ2l0X3N2bihzZWxmKToKKyAgICAg
ICAgd2l0aCBPdXRwdXRDYXB0dXJlKCkgYXMgY2FwdHVyZWQsIG1vY2tzLmxvY2FsLkdpdChzZWxm
LnBhdGgsIGdpdF9zdm49VHJ1ZSksIG1vY2tzLmxvY2FsLlN2bigpLCBNb2NrVGltZToKKyAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoLTEsIHByb2dyYW0ubWFpbigKKyAgICAgICAgICAgICAg
ICBhcmdzPSgnbG9nJywgJ21haW4nKSwKKyAgICAgICAgICAgICAgICBwYXRoPXNlbGYucGF0aCwK
KyAgICAgICAgICAgICkpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAg
ICAgICAgICAgY2FwdHVyZWQuc3Rkb3V0LmdldHZhbHVlKCksCisgICAgICAgICAgICAgICAgJycn
Y29tbWl0IDVAbWFpbiAoZDhiY2UyNmZhNjVjNmZjOGYzOWMxNzkyN2FiYjc3ZjY5ZmFiODJmYywg
cjkpCitBdXRob3I6IEpvbmF0aGFuIEJlZGFyZCA8amJlZGFyZEBhcHBsZS5jb20+CitEYXRlOiAg
IFNhdCBPY3QgMDMgMDM6NDY6NDAgMjAyMCArMDAwMAorCisgICAgUGF0Y2ggU2VyaWVzCisgICAg
Z2l0LXN2bi1pZDogaHR0cHM6Ly9zdm4uZXhhbXBsZS5vcmcvcmVwb3NpdG9yeS9yZXBvc2l0b3J5
L3RydW5rQDkgMjY4ZjQ1Y2MtY2QwOS0wNDEwLWFiM2MtZDUyNjkxYjRkYmZjCisKK2NvbW1pdCA0
QG1haW4gKGJhZTVkMWU5MDk5OWQ0ZjkxNmE4YTE1ODEwY2NmYTQzZjM3YTJmZDYsIHI4KQorQXV0
aG9yOiBKb25hdGhhbiBCZWRhcmQgPGpiZWRhcmRAYXBwbGUuY29tPgorRGF0ZTogICBTYXQgT2N0
IDAzIDAzOjQ2OjQwIDIwMjAgKzAwMDAKKworICAgIDh0aCBjb21taXQKKyAgICBnaXQtc3ZuLWlk
OiBodHRwczovL3N2bi5leGFtcGxlLm9yZy9yZXBvc2l0b3J5L3JlcG9zaXRvcnkvdHJ1bmtAOCAy
NjhmNDVjYy1jZDA5LTA0MTAtYWIzYy1kNTI2OTFiNGRiZmMKKworY29tbWl0IDNAbWFpbiAoMWFi
ZTI1YjQ0M2U5ODVmOTNiOTBkODMwZTRhN2UzNzMxMzM2YWY0ZCwgcjQpCitBdXRob3I6IEpvbmF0
aGFuIEJlZGFyZCA8amJlZGFyZEBhcHBsZS5jb20+CitEYXRlOiAgIFNhdCBPY3QgMDMgMDI6MjM6
MjAgMjAyMCArMDAwMAorCisgICAgNHRoIGNvbW1pdAorICAgIGdpdC1zdm4taWQ6IGh0dHBzOi8v
c3ZuLmV4YW1wbGUub3JnL3JlcG9zaXRvcnkvcmVwb3NpdG9yeS90cnVua0A0IDI2OGY0NWNjLWNk
MDktMDQxMC1hYjNjLWQ1MjY5MWI0ZGJmYworCitjb21taXQgMkBtYWluIChmZmY4M2JiMmQ5MTcx
YjRkOTE5NmU5NzdlYjA1MDhmZDU3ZTdhMDhkLCByMikKK0F1dGhvcjogSm9uYXRoYW4gQmVkYXJk
IDxqYmVkYXJkQGFwcGxlLmNvbT4KK0RhdGU6ICAgU2F0IE9jdCAwMyAwMTo1MDowMCAyMDIwICsw
MDAwCisKKyAgICAybmQgY29tbWl0CisgICAgZ2l0LXN2bi1pZDogaHR0cHM6Ly9zdm4uZXhhbXBs
ZS5vcmcvcmVwb3NpdG9yeS9yZXBvc2l0b3J5L3RydW5rQDIgMjY4ZjQ1Y2MtY2QwOS0wNDEwLWFi
M2MtZDUyNjkxYjRkYmZjCisKK2NvbW1pdCAxQG1haW4gKDliODMxMWYyNWE3N2JhMTQ5MjNkOWQ1
YTY1MzIxMDNmNTRhYmVmY2IsIHIxKQorQXV0aG9yOiBKb25hdGhhbiBCZWRhcmQgPGpiZWRhcmRA
YXBwbGUuY29tPgorRGF0ZTogICBTYXQgT2N0IDAzIDAxOjMzOjIwIDIwMjAgKzAwMDAKKworICAg
IDFzdCBjb21taXQKKyAgICBnaXQtc3ZuLWlkOiBodHRwczovL3N2bi5leGFtcGxlLm9yZy9yZXBv
c2l0b3J5L3JlcG9zaXRvcnkvdHJ1bmtAMSAyNjhmNDVjYy1jZDA5LTA0MTAtYWIzYy1kNTI2OTFi
NGRiZmMKKycnJywKKyAgICAgICAgICAgICkKKworICAgIGRlZiB0ZXN0X2dpdF9zdm5fcmV2aXNp
b24oc2VsZik6CisgICAgICAgIHdpdGggT3V0cHV0Q2FwdHVyZSgpIGFzIGNhcHR1cmVkLCBtb2Nr
cy5sb2NhbC5HaXQoc2VsZi5wYXRoLCBnaXRfc3ZuPVRydWUpLCBtb2Nrcy5sb2NhbC5Tdm4oKSwg
TW9ja1RpbWU6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKC0xLCBwcm9ncmFtLm1haW4o
CisgICAgICAgICAgICAgICAgYXJncz0oJ2xvZycsICdtYWluJywgJy0tcmV2aXNpb24nKSwKKyAg
ICAgICAgICAgICAgICBwYXRoPXNlbGYucGF0aCwKKyAgICAgICAgICAgICkpCisKKyAgICAgICAg
ICAgIHNlbGYubWF4RGlmZiA9IE5vbmUKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisg
ICAgICAgICAgICAgICAgY2FwdHVyZWQuc3Rkb3V0LmdldHZhbHVlKCksCisgICAgICAgICAgICAg
ICAgJycnY29tbWl0IHI5IChkOGJjZTI2ZmE2NWM2ZmM4ZjM5YzE3OTI3YWJiNzdmNjlmYWI4MmZj
LCA1QG1haW4pCitBdXRob3I6IEpvbmF0aGFuIEJlZGFyZCA8amJlZGFyZEBhcHBsZS5jb20+CitE
YXRlOiAgIFNhdCBPY3QgMDMgMDM6NDY6NDAgMjAyMCArMDAwMAorCisgICAgUGF0Y2ggU2VyaWVz
CisgICAgZ2l0LXN2bi1pZDogaHR0cHM6Ly9zdm4uZXhhbXBsZS5vcmcvcmVwb3NpdG9yeS9yZXBv
c2l0b3J5L3RydW5rQDkgMjY4ZjQ1Y2MtY2QwOS0wNDEwLWFiM2MtZDUyNjkxYjRkYmZjCisKK2Nv
bW1pdCByOCAoYmFlNWQxZTkwOTk5ZDRmOTE2YThhMTU4MTBjY2ZhNDNmMzdhMmZkNiwgNEBtYWlu
KQorQXV0aG9yOiBKb25hdGhhbiBCZWRhcmQgPGpiZWRhcmRAYXBwbGUuY29tPgorRGF0ZTogICBT
YXQgT2N0IDAzIDAzOjQ2OjQwIDIwMjAgKzAwMDAKKworICAgIDh0aCBjb21taXQKKyAgICBnaXQt
c3ZuLWlkOiBodHRwczovL3N2bi5leGFtcGxlLm9yZy9yZXBvc2l0b3J5L3JlcG9zaXRvcnkvdHJ1
bmtAOCAyNjhmNDVjYy1jZDA5LTA0MTAtYWIzYy1kNTI2OTFiNGRiZmMKKworY29tbWl0IHI0ICgx
YWJlMjViNDQzZTk4NWY5M2I5MGQ4MzBlNGE3ZTM3MzEzMzZhZjRkLCAzQG1haW4pCitBdXRob3I6
IEpvbmF0aGFuIEJlZGFyZCA8amJlZGFyZEBhcHBsZS5jb20+CitEYXRlOiAgIFNhdCBPY3QgMDMg
MDI6MjM6MjAgMjAyMCArMDAwMAorCisgICAgNHRoIGNvbW1pdAorICAgIGdpdC1zdm4taWQ6IGh0
dHBzOi8vc3ZuLmV4YW1wbGUub3JnL3JlcG9zaXRvcnkvcmVwb3NpdG9yeS90cnVua0A0IDI2OGY0
NWNjLWNkMDktMDQxMC1hYjNjLWQ1MjY5MWI0ZGJmYworCitjb21taXQgcjIgKGZmZjgzYmIyZDkx
NzFiNGQ5MTk2ZTk3N2ViMDUwOGZkNTdlN2EwOGQsIDJAbWFpbikKK0F1dGhvcjogSm9uYXRoYW4g
QmVkYXJkIDxqYmVkYXJkQGFwcGxlLmNvbT4KK0RhdGU6ICAgU2F0IE9jdCAwMyAwMTo1MDowMCAy
MDIwICswMDAwCisKKyAgICAybmQgY29tbWl0CisgICAgZ2l0LXN2bi1pZDogaHR0cHM6Ly9zdm4u
ZXhhbXBsZS5vcmcvcmVwb3NpdG9yeS9yZXBvc2l0b3J5L3RydW5rQDIgMjY4ZjQ1Y2MtY2QwOS0w
NDEwLWFiM2MtZDUyNjkxYjRkYmZjCisKK2NvbW1pdCByMSAoOWI4MzExZjI1YTc3YmExNDkyM2Q5
ZDVhNjUzMjEwM2Y1NGFiZWZjYiwgMUBtYWluKQorQXV0aG9yOiBKb25hdGhhbiBCZWRhcmQgPGpi
ZWRhcmRAYXBwbGUuY29tPgorRGF0ZTogICBTYXQgT2N0IDAzIDAxOjMzOjIwIDIwMjAgKzAwMDAK
KworICAgIDFzdCBjb21taXQKKyAgICBnaXQtc3ZuLWlkOiBodHRwczovL3N2bi5leGFtcGxlLm9y
Zy9yZXBvc2l0b3J5L3JlcG9zaXRvcnkvdHJ1bmtAMSAyNjhmNDVjYy1jZDA5LTA0MTAtYWIzYy1k
NTI2OTFiNGRiZmMKKycnJywKKyAgICAgICAgICAgICkKKworICAgIGRlZiB0ZXN0X3N2bihzZWxm
KToKKyAgICAgICAgd2l0aCBPdXRwdXRDYXB0dXJlKCkgYXMgY2FwdHVyZWQsIG1vY2tzLmxvY2Fs
LkdpdCgpLCBtb2Nrcy5sb2NhbC5Tdm4oc2VsZi5wYXRoKSwgTW9ja1RpbWU6CisgICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKC0xLCBwcm9ncmFtLm1haW4oCisgICAgICAgICAgICAgICAgYXJn
cz0oJ2xvZycsKSwKKyAgICAgICAgICAgICAgICBwYXRoPXNlbGYucGF0aCwKKyAgICAgICAgICAg
ICkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGNhcHR1cmVkLnN0
ZG91dC5nZXR2YWx1ZSgpLAorICAgICAgICAgICAgJycnLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCityNiAoNEB0
cnVuaykgfCBqYmVkYXJkQGFwcGxlLmNvbSB8IDIwMjAtMTAtMDIgMTg6NTg6MjAgMDAwMCAoRnJp
LCAwMiBPY3QgMjAyMCkgfCAxIGxpbmVzCisKKzZ0aCBjb21taXQKKworLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CityNCAoM0B0cnVuaykgfCBqYmVkYXJkQGFwcGxlLmNvbSB8IDIwMjAtMTAtMDIgMTg6MjU6MDAg
MDAwMCAoRnJpLCAwMiBPY3QgMjAyMCkgfCAxIGxpbmVzCisKKzR0aCBjb21taXQKKworLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCityMiAoMkB0cnVuaykgfCBqYmVkYXJkQGFwcGxlLmNvbSB8IDIwMjAtMTAtMDIg
MTc6NTE6NDAgMDAwMCAoRnJpLCAwMiBPY3QgMjAyMCkgfCAxIGxpbmVzCisKKzJuZCBjb21taXQK
KworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCityMSAoMUB0cnVuaykgfCBqYmVkYXJkQGFwcGxlLmNvbSB8IDIw
MjAtMTAtMDIgMTc6MzU6MDAgMDAwMCAoRnJpLCAwMiBPY3QgMjAyMCkgfCAxIGxpbmVzCisKKzFz
dCBjb21taXQKKworJycnLAorICAgICAgICApCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434536</attachid>
            <date>2021-07-29 11:01:51 -0700</date>
            <delta_ts>2021-07-29 11:32:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228027-20210729110151.patch</filename>
            <type>text/plain</type>
            <size>28477</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI4MDQzMSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDM1IEBACisyMDIxLTA3LTI5ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBbZ2l0LXdlYmtpdF0gQWRkIGlkZW50aWZpZXJzIHRvICdsb2cnIGFuZCAn
YmxhbWUnCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjgwMjcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgwNjkxMTY0PgorCisgICAgICAgIFJldmll
d2VkIGJ5IERld2VpIFpodS4KKworICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNj
bXB5L3NldHVwLnB5OiBCdW1wIHZlcnNpb24uCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMv
d2Via2l0c2NtcHkvd2Via2l0c2NtcHkvX19pbml0X18ucHk6IERpdHRvLgorICAgICAgICAqIFNj
cmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L2xvY2FsL3NjbS5weToKKyAg
ICAgICAgKFNjbS5mcm9tX3BhdGgpOiBQYXNzIGFsbCBrd2FyZ3MgdG8gbG9jYWwgU0NNIG9iamVj
dC4KKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9w
cm9ncmFtL19faW5pdF9fLnB5OgorICAgICAgICAobWFpbik6IEFkZCBCbGFtZSBhbmQgTG9nIGNv
bW1hbmRzLgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNj
bXB5L3Byb2dyYW0vYmxhbWUucHk6IEFkZGVkLgorICAgICAgICAoQmxhbWUpOiBJbnZva2UgcGFn
ZXIuCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkv
cHJvZ3JhbS9jb21tYW5kLnB5OgorICAgICAgICAoRmlsdGVyZWRDb21tYW5kKTogU2hhcmVkIGNv
bW1hbmQgdGhhdCBoYW5kbGVzIHJlcGxhY2UgaGFzaGVzL3JldmlzaW9ucyBpbgorICAgICAgICBh
biBTQ00gY29tbWFuZCB3aXRoIGlkZW50aWZpZXJzLgorICAgICAgICAoRmlsdGVyZWRDb21tYW5k
LnBhcnNlcik6IEFsbG93IHVzZXIgdG8gY2hhbmdlIHRoZSBwcmVmZXJlZCBjb21taXQgcmVwcmVz
ZW50YXRpb24uCisgICAgICAgIChGaWx0ZXJlZENvbW1hbmQucGFnZXIpOiBQYXNzIG91dHB1dCB0
aHJvdWdoIG1vcmUgaWYgY2FsbGVkIGZyb20gYSB0ZXJtaW5hbC4KKyAgICAgICAgKEZpbHRlcmVk
Q29tbWFuZC5tYWluKTogTW9kaWZ5IG91dHB1dCBvZiBwcm92aWRlZCBjb21tYW5kIHRvIHJlcGxh
Y2UgY29tbWl0IHJlcHJlc2VudGF0aW9uCisgICAgICAgIHdpdGggdGhlIHByZWZmZXJlZCBjb21t
aXQgcmVwcmVzZW50YXRpb24uCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2Nt
cHkvd2Via2l0c2NtcHkvcHJvZ3JhbS9sb2cucHk6IEFkZGVkLgorICAgICAgICAoTG9nKTogSW52
b2tlIHBhZ2VyLgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtp
dHNjbXB5L3Rlc3QvbG9nX3VuaXR0ZXN0LnB5OiBBZGRlZC4KKyAgICAgICAgKFRlc3RMb2cpOgor
ICAgICAgICAoVGVzdExvZy5zZXRVcCk6CisgICAgICAgIChUZXN0TG9nLnRlc3RfZ2l0KToKKyAg
ICAgICAgKFRlc3RMb2cudGVzdF9naXRfc3ZuKToKKyAgICAgICAgKFRlc3RMb2cudGVzdF9naXQp
OgorCiAyMDIxLTA3LTI5ICBBYWthc2ggSmFpbiAgPGFha2FzaF9qYWluQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbZXdzXSBWZXJpZnlHaXRIdWJJbnRlZ3JpdHkgc3RlcCBmYWlscyB3aXRoIGFuIGV4
Y2VwdGlvbgpJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvc2V0dXAu
cHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvc2V0
dXAucHkJKHJldmlzaW9uIDI4MDQzMSkKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtp
dHNjbXB5L3NldHVwLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBAIGRlZiByZWFk
bWUoKToKIAogc2V0dXAoCiAgICAgbmFtZT0nd2Via2l0c2NtcHknLAotICAgIHZlcnNpb249JzAu
MTUuMCcsCisgICAgdmVyc2lvbj0nMS4wLjAnLAogICAgIGRlc2NyaXB0aW9uPSdMaWJyYXJ5IGRl
c2lnbmVkIHRvIGludGVyYWN0IHdpdGggZ2l0IGFuZCBzdm4gcmVwb3NpdG9yaWVzLicsCiAgICAg
bG9uZ19kZXNjcmlwdGlvbj1yZWFkbWUoKSwKICAgICBjbGFzc2lmaWVycz1bCkluZGV4OiBUb29s
cy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9fX2luaXRfXy5weQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRz
Y21weS9fX2luaXRfXy5weQkocmV2aXNpb24gMjgwNDMxKQorKysgVG9vbHMvU2NyaXB0cy9saWJy
YXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvX19pbml0X18ucHkJKHdvcmtpbmcgY29weSkK
QEAgLTQ2LDcgKzQ2LDcgQEAgZXhjZXB0IEltcG9ydEVycm9yOgogICAgICAgICAiUGxlYXNlIGlu
c3RhbGwgd2Via2l0Y29yZXB5IHdpdGggYHBpcCBpbnN0YWxsIHdlYmtpdGNvcmVweSAtLWV4dHJh
LWluZGV4LXVybCA8cGFja2FnZSBpbmRleCBVUkw+YCIKICAgICApCiAKLXZlcnNpb24gPSBWZXJz
aW9uKDAsIDE1LCAwKQordmVyc2lvbiA9IFZlcnNpb24oMSwgMCwgMCkKIAogQXV0b0luc3RhbGwu
cmVnaXN0ZXIoUGFja2FnZSgnZmFzdGVuZXJzJywgVmVyc2lvbigwLCAxNSwgMCkpKQogQXV0b0lu
c3RhbGwucmVnaXN0ZXIoUGFja2FnZSgnbW9ub3RvbmljJywgVmVyc2lvbigxLCA1KSkpCkluZGV4
OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9sb2NhbC9z
Y20ucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkv
d2Via2l0c2NtcHkvbG9jYWwvc2NtLnB5CShyZXZpc2lvbiAyODA0MzEpCisrKyBUb29scy9TY3Jp
cHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9sb2NhbC9zY20ucHkJKHdvcmtp
bmcgY29weSkKQEAgLTQ1LDEzICs0NSwxMyBAQCBjbGFzcyBTY20oU2NtQmFzZSk6CiAgICAgICAg
IHJldHVybiBvcy5wYXRoLnJlYWxwYXRoKHBhdGgpCiAKICAgICBAY2xhc3NtZXRob2QKLSAgICBk
ZWYgZnJvbV9wYXRoKGNscywgcGF0aCwgY29udHJpYnV0b3JzPU5vbmUpOgorICAgIGRlZiBmcm9t
X3BhdGgoY2xzLCBwYXRoLCBjb250cmlidXRvcnM9Tm9uZSwgKiprd2FyZ3MpOgogICAgICAgICBm
cm9tIHdlYmtpdHNjbXB5IGltcG9ydCBsb2NhbAogCiAgICAgICAgIGlmIGxvY2FsLkdpdC5pc19j
aGVja291dChwYXRoKToKLSAgICAgICAgICAgIHJldHVybiBsb2NhbC5HaXQocGF0aCwgY29udHJp
YnV0b3JzPWNvbnRyaWJ1dG9ycykKKyAgICAgICAgICAgIHJldHVybiBsb2NhbC5HaXQocGF0aCwg
Y29udHJpYnV0b3JzPWNvbnRyaWJ1dG9ycywgKiprd2FyZ3MpCiAgICAgICAgIGlmIGxvY2FsLlN2
bi5pc19jaGVja291dChwYXRoKToKLSAgICAgICAgICAgIHJldHVybiBsb2NhbC5Tdm4ocGF0aCwg
Y29udHJpYnV0b3JzPWNvbnRyaWJ1dG9ycykKKyAgICAgICAgICAgIHJldHVybiBsb2NhbC5Tdm4o
cGF0aCwgY29udHJpYnV0b3JzPWNvbnRyaWJ1dG9ycywgKiprd2FyZ3MpCiAgICAgICAgIHJhaXNl
IE9TRXJyb3IoIid7fScgaXMgbm90IGEga25vd24gU0NNIHR5cGUiLmZvcm1hdChwYXRoKSkKIAog
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXRoLCBkZXZfYnJhbmNoZXM9Tm9uZSwgcHJvZF9icmFu
Y2hlcz1Ob25lLCBjb250cmlidXRvcnM9Tm9uZSwgaWQ9Tm9uZSk6CkluZGV4OiBUb29scy9TY3Jp
cHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9tb2Nrcy9sb2NhbC9zdm4ucHkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0
c2NtcHkvbW9ja3MvbG9jYWwvc3ZuLnB5CShyZXZpc2lvbiAyODA0MzEpCisrKyBUb29scy9TY3Jp
cHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9tb2Nrcy9sb2NhbC9zdm4ucHkJ
KHdvcmtpbmcgY29weSkKQEAgLTEzMiw2ICsxMzIsMTUgQEAgY2xhc3MgU3ZuKG1vY2tzLlN1YnBy
b2Nlc3MpOgogICAgICAgICAgICAgICAgICAgICBiZWdpbj1pbnQoYXJnc1szXS5zcGxpdCgnOicp
Wy0xXSksCiAgICAgICAgICAgICAgICAgKSBpZiBzZWxmLmNvbm5lY3RlZCBlbHNlIG1vY2tzLlBy
b2Nlc3NDb21wbGV0aW9uKHJldHVybmNvZGU9MSkKICAgICAgICAgICAgICksIG1vY2tzLlN1YnBy
b2Nlc3MuUm91dGUoCisgICAgICAgICAgICAgICAgc2VsZi5leGVjdXRhYmxlLCAnbG9nJywKKyAg
ICAgICAgICAgICAgICBjd2Q9c2VsZi5wYXRoLAorICAgICAgICAgICAgICAgIGdlbmVyYXRvcj1s
YW1iZGEgKmFyZ3MsICoqa3dhcmdzOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9sb2dfcmFu
Z2UoCisgICAgICAgICAgICAgICAgICAgICAgICBicmFuY2g9J3RydW5rJywKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGJlZ2luPXNlbGYuY29tbWl0c1sndHJ1bmsnXVswXS5yZXZpc2lvbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGVuZD1zZWxmLmNvbW1pdHNbJ3RydW5rJ11bLTFdLnJldmlz
aW9uLAorICAgICAgICAgICAgICAgICAgICApIGlmIHNlbGYuY29ubmVjdGVkIGVsc2UgbW9ja3Mu
UHJvY2Vzc0NvbXBsZXRpb24ocmV0dXJuY29kZT0xKQorICAgICAgICAgICAgKSwgbW9ja3MuU3Vi
cHJvY2Vzcy5Sb3V0ZSgKICAgICAgICAgICAgICAgICBzZWxmLmV4ZWN1dGFibGUsICd1cCcsICct
cicsIHJlLmNvbXBpbGUocidcZCsnKSwKICAgICAgICAgICAgICAgICBjd2Q9c2VsZi5wYXRoLAog
ICAgICAgICAgICAgICAgIGdlbmVyYXRvcj1sYW1iZGEgKmFyZ3MsICoqa3dhcmdzOgpJbmRleDog
VG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvcHJvZ3JhbS9f
X2luaXRfXy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRz
Y21weS93ZWJraXRzY21weS9wcm9ncmFtL19faW5pdF9fLnB5CShyZXZpc2lvbiAyODA0MzEpCisr
KyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9wcm9ncmFt
L19faW5pdF9fLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yNCwxNyArMjQsMTkgQEAgaW1wb3J0IGFy
Z3BhcnNlCiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IG9zCiAKLWZyb20gd2Via2l0Y29yZXB5IGlt
cG9ydCBhcmd1bWVudHMsIGxvZyBhcyB3ZWJraXRjb3JlcHlfbG9nCi1mcm9tIHdlYmtpdHNjbXB5
IGltcG9ydCBsb2NhbCwgbG9nLCByZW1vdGUKLQorZnJvbSAuYmxhbWUgaW1wb3J0IEJsYW1lCiBm
cm9tIC5jYW5vbmljYWxpemUgaW1wb3J0IENhbm9uaWNhbGl6ZQogZnJvbSAuY2xlYW4gaW1wb3J0
IENsZWFuCiBmcm9tIC5jb21tYW5kIGltcG9ydCBDb21tYW5kCiBmcm9tIC5jaGVja291dCBpbXBv
cnQgQ2hlY2tvdXQKIGZyb20gLmZpbmQgaW1wb3J0IEZpbmQsIEluZm8KK2Zyb20gLmxvZyBpbXBv
cnQgTG9nCiBmcm9tIC5wdWxsIGltcG9ydCBQdWxsCiBmcm9tIC5zZXR1cF9naXRfc3ZuIGltcG9y
dCBTZXR1cEdpdFN2bgogCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgYXJndW1lbnRzLCBsb2cg
YXMgd2Via2l0Y29yZXB5X2xvZworZnJvbSB3ZWJraXRzY21weSBpbXBvcnQgbG9jYWwsIGxvZywg
cmVtb3RlCisKIAogZGVmIG1haW4oYXJncz1Ob25lLCBwYXRoPU5vbmUsIGxvZ2dlcnM9Tm9uZSwg
Y29udHJpYnV0b3JzPU5vbmUsIGlkZW50aWZpZXJfdGVtcGxhdGU9Tm9uZSwgc3VidmVyc2lvbj1O
b25lKToKICAgICBsb2dnaW5nLmJhc2ljQ29uZmlnKGxldmVsPWxvZ2dpbmcuV0FSTklORykKQEAg
LTYxLDcgKzYzLDcgQEAgZGVmIG1haW4oYXJncz1Ob25lLCBwYXRoPU5vbmUsIGxvZ2dlcnM9Tgog
CiAgICAgc3VicGFyc2VycyA9IHBhcnNlci5hZGRfc3VicGFyc2VycyhoZWxwPSdzdWItY29tbWFu
ZCBoZWxwJykKIAotICAgIHByb2dyYW1zID0gW0ZpbmQsIEluZm8sIENoZWNrb3V0LCBDYW5vbmlj
YWxpemUsIFB1bGwsIENsZWFuXQorICAgIHByb2dyYW1zID0gW0ZpbmQsIEluZm8sIENoZWNrb3V0
LCBDYW5vbmljYWxpemUsIFB1bGwsIENsZWFuLCBMb2csIEJsYW1lXQogICAgIGlmIHN1YnZlcnNp
b246CiAgICAgICAgIHByb2dyYW1zLmFwcGVuZChTZXR1cEdpdFN2bikKIApJbmRleDogVG9vbHMv
U2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvcHJvZ3JhbS9ibGFtZS5w
eQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJr
aXRzY21weS9wcm9ncmFtL2JsYW1lLnB5CShub25leGlzdGVudCkKKysrIFRvb2xzL1NjcmlwdHMv
bGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Byb2dyYW0vYmxhbWUucHkJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw0NSBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworCisjIENv
cHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMK
KyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgc3lzCisKK2Zyb20gd2Vi
a2l0c2NtcHkgaW1wb3J0IGxvY2FsCitmcm9tIHdlYmtpdHNjbXB5LnByb2dyYW0uY29tbWFuZCBp
bXBvcnQgRmlsdGVyZWRDb21tYW5kCisKKworY2xhc3MgQmxhbWUoRmlsdGVyZWRDb21tYW5kKToK
KyAgICBuYW1lID0gJ2JsYW1lJworICAgIGhlbHAgPSAiRmlsdGVyIHJhdyBvdXRwdXQgb2YgJ2dp
dCBibGFtZScgb3IgJ3N2biBibGFtZScgdG8gcmVwbGFjZSBuYXRpdmUgY29tbWl0IHJlcHJlc2Vu
dGF0aW9uIHdpdGggaWRlbnRpZmllcnMiCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgbWFp
bihjbHMsIGFyZ3MsIHJlcG9zaXRvcnksICoqa3dhcmdzKToKKyAgICAgICAgcmV0dXJuIGNscy5w
YWdlcihhcmdzLCByZXBvc2l0b3J5LCBmaWxlPV9fZmlsZV9fLCAqKmt3YXJncykKKworCitpZiBf
X25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHN5cy5leGl0KEJsYW1lLm1haW4oCisgICAgICAg
IHN5cy5hcmd2WzM6XSwKKyAgICAgICAgbG9jYWwuU2NtLmZyb21fcGF0aChwYXRoPXN5cy5hcmd2
WzFdLCBjYWNoZWQ9VHJ1ZSksCisgICAgICAgIHJlcHJlc2VudGF0aW9uPXN5cy5hcmd2WzJdLAor
ICAgICkpCkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRz
Y21weS9wcm9ncmFtL2NvbW1hbmQucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJy
YXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvcHJvZ3JhbS9jb21tYW5kLnB5CShyZXZpc2lv
biAyODA0MzEpCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRz
Y21weS9wcm9ncmFtL2NvbW1hbmQucHkJKHdvcmtpbmcgY29weSkKQEAgLTIwLDcgKzIwLDE0IEBA
CiAjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKK2ltcG9ydCBvcworaW1w
b3J0IHJlCitpbXBvcnQgc3VicHJvY2VzcwogaW1wb3J0IHN5cworaW1wb3J0IHRpbWUKKworZnJv
bSB3ZWJraXRzY21weS5jb21taXQgaW1wb3J0IENvbW1pdAorZnJvbSB3aGljaGNyYWZ0IGltcG9y
dCB3aGljaAogCiAKIGNsYXNzIENvbW1hbmQob2JqZWN0KToKQEAgLTM4LDMgKzQ1LDIwNCBAQCBj
bGFzcyBDb21tYW5kKG9iamVjdCk6CiAgICAgZGVmIG1haW4oY2xzLCBhcmdzLCByZXBvc2l0b3J5
LCAqKmt3YXJncyk6CiAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoJ05vIGNvbW1hbmQgc3BlY2lm
aWVkXG4nKQogICAgICAgICByZXR1cm4gLTEKKworCitjbGFzcyBGaWx0ZXJlZENvbW1hbmQob2Jq
ZWN0KToKKyAgICBJREVOVElGSUVSID0gJ2lkZW50aWZpZXInCisgICAgSEFTSCA9ICdoYXNoJwor
ICAgIFJFVklTSU9OID0gJ3JldmlzaW9uJworCisgICAgR0lUX0hFQURFUl9SRSA9IHJlLmNvbXBp
bGUocideY29tbWl0ICg/UDxoYXNoPlthLWYwLTlBLUZdKyknKQorICAgIFNWTl9IRUFERVJfUkUg
PSByZS5jb21waWxlKHInXig/UDxyZXZpc2lvbj5yL2QrKSB8ICcpCisKKyAgICBSRVZJU0lPTl9S
RVMgPSAocmUuY29tcGlsZShyJ14oP1A8cmV2aXNpb24+XGQrKVxzJyksIHJlLmNvbXBpbGUocico
P1A8cmV2aXNpb24+W3JSXVxkKyknKSkKKyAgICBIQVNIX1JFUyA9IChyZS5jb21waWxlKHInXig/
UDxoYXNoPlthLWYwLTlBLUZdezh9W2EtZjAtOUEtRl0rKVxzJyksIHJlLmNvbXBpbGUocicoP1A8
aGFzaD5bYS1mMC05QS1GXXs4fVthLWYwLTlBLUZdKyknKSkKKyAgICBJREVOVElGSUVSX1JFUyA9
IChyZS5jb21waWxlKHInXig/UDxpZGVudGlmaWVyPihcZCtcLik/XGQrQFxTKiknKSwgcmUuY29t
cGlsZShyJyg/UDxpZGVudGlmaWVyPihcZCtcLik/XGQrQFxTKiknKSkKKyAgICBOT19GSUxURVJf
UkVTID0gW3JlLmNvbXBpbGUocicgICAgQ2Fub25pY2FsIGxpbms6JyksIHJlLmNvbXBpbGUocicg
ICAgZ2l0LXN2bi1pZDonKV0KKworICAgIFJFUExBQ0VfTU9ERSA9IDAKKyAgICBBUFBFTkRfTU9E
RSA9IDEKKyAgICBIRUFERVJfTU9ERSA9IDIKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBw
YXJzZXIoY2xzLCBwYXJzZXIsIGxvZ2dlcnM9Tm9uZSk6CisgICAgICAgIHBhcnNlci5hZGRfYXJn
dW1lbnQoCisgICAgICAgICAgICAnYXJncycsIG5hcmdzPScqJywKKyAgICAgICAgICAgIHR5cGU9
c3RyLCBkZWZhdWx0PU5vbmUsCisgICAgICAgICAgICBoZWxwPSdBcmd1bWVudHMgdG8gYmUgcGFz
c2VkIHRvIHRiZSBuYXRpdmUgc291cmNlLWNvZGUgbWFuYWdlbWVudCB0b29sJywKKyAgICAgICAg
KQorICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAgICAgJy0taWRlbnRpZmll
cicsICctaScsCisgICAgICAgICAgICBoZWxwPSdSZXByZXNlbnQgY29tbWl0cyBhcyBpZGVudGlm
aWVycycsCisgICAgICAgICAgICBkZXN0PSdyZXByZXNlbnRhdGlvbicsCisgICAgICAgICAgICBh
Y3Rpb249J3N0b3JlX2NvbnN0JywgY29uc3Q9Y2xzLklERU5USUZJRVIsCisgICAgICAgICAgICBk
ZWZhdWx0PWNscy5JREVOVElGSUVSLAorICAgICAgICApCisgICAgICAgIHBhcnNlci5hZGRfYXJn
dW1lbnQoCisgICAgICAgICAgICAnLS1oYXNoJywKKyAgICAgICAgICAgIGhlbHA9J1JlcHJlc2Vu
dCBjb21taXRzIGFzIGhhc2hlcycsCisgICAgICAgICAgICBkZXN0PSdyZXByZXNlbnRhdGlvbics
CisgICAgICAgICAgICBhY3Rpb249J3N0b3JlX2NvbnN0JywgY29uc3Q9Y2xzLkhBU0gsCisgICAg
ICAgICAgICBkZWZhdWx0PWNscy5JREVOVElGSUVSLAorICAgICAgICApCisgICAgICAgIHBhcnNl
ci5hZGRfYXJndW1lbnQoCisgICAgICAgICAgICAnLS1yZXZpc2lvbicsICctcicsCisgICAgICAg
ICAgICBoZWxwPSdSZXByZXNlbnQgY29tbWl0cyBhcyByZXZpc2lvbnMnLAorICAgICAgICAgICAg
ZGVzdD0ncmVwcmVzZW50YXRpb24nLAorICAgICAgICAgICAgYWN0aW9uPSdzdG9yZV9jb25zdCcs
IGNvbnN0PWNscy5SRVZJU0lPTiwKKyAgICAgICAgICAgIGRlZmF1bHQ9Y2xzLklERU5USUZJRVIs
CisgICAgICAgICkKKyAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgICAgICct
LXJlcHJlc2VudGF0aW9uJywgdHlwZT1zdHIsCisgICAgICAgICAgICBoZWxwPSdDaGFuZ2UgbWV0
aG9kIHVzZWQgdG8gcmVwcmVzZW50IGEgY29tbWl0IChpZGVudGlmaWVyL2hhc2gvcmV2aXNpb24p
JywKKyAgICAgICAgICAgIGRlc3Q9J3JlcHJlc2VudGF0aW9uJywKKyAgICAgICAgICAgIGRlZmF1
bHQ9Y2xzLklERU5USUZJRVIsCisgICAgICAgICkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRl
ZiBwYWdlcihjbHMsIGFyZ3MsIHJlcG9zaXRvcnksIGZpbGU9Tm9uZSwgKiprd2FyZ3MpOgorICAg
ICAgICBpZiBub3QgcmVwb3NpdG9yeS5wYXRoOgorICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0
ZSgiQ2Fubm90IHJ1biAne30nIG9uIHJlbW90ZSByZXBvc2l0b3J5XG4iLmZvcm1hdChjbHMubmFt
ZSkpCisgICAgICAgICAgICByZXR1cm4gMQorCisgICAgICAgIGlmIG5vdCBnZXRhdHRyKHJlcG9z
aXRvcnksICdjYWNoZScsIE5vbmUpIGFuZCBnZXRhdHRyKHJlcG9zaXRvcnksICdDYWNoZScsIE5v
bmUpOgorICAgICAgICAgICAgcmVwb3NpdG9yeS5jYWNoZSA9IHJlcG9zaXRvcnkuQ2FjaGUocmVw
b3NpdG9yeSkKKworICAgICAgICAjIElmIHdlJ3JlIGEgdGVybWluYWwsIHJlbHkgb24gJ21vcmUn
IHRvIGRpc3BsYXkgb3V0cHV0CisgICAgICAgIGlmIHN5cy5zdGRpbi5pc2F0dHkoKSBhbmQgbm90
IGlzaW5zdGFuY2UoYXJncywgbGlzdCkgYW5kIGZpbGU6CisgICAgICAgICAgICBlbnZpcm9uID0g
b3MuZW52aXJvbgorICAgICAgICAgICAgZW52aXJvblsnUFlUSE9OUEFUSCddID0gJzonLmpvaW4o
c3lzLnBhdGgpCisKKyAgICAgICAgICAgIGNoaWxkID0gc3VicHJvY2Vzcy5Qb3BlbigKKyAgICAg
ICAgICAgICAgICBbc3lzLmV4ZWN1dGFibGUsIGZpbGUsIHJlcG9zaXRvcnkucm9vdF9wYXRoLCBh
cmdzLnJlcHJlc2VudGF0aW9uXSArIGFyZ3MuYXJncywKKyAgICAgICAgICAgICAgICBlbnY9ZW52
aXJvbiwKKyAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAg
ICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICApCisgICAgICAgICAg
ICBtb3JlID0gc3VicHJvY2Vzcy5Qb3Blbihbd2hpY2goJ21vcmUnKSwgJy1GJ10sIHN0ZGluPWNo
aWxkLnN0ZG91dCkKKworICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHdoaWxlIG1v
cmUucG9sbCgpIGlzIE5vbmUgYW5kIG5vdCBjaGlsZC5wb2xsKCk6CisgICAgICAgICAgICAgICAg
ICAgIHRpbWUuc2xlZXAoMC4yNSkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAg
ICAgY2hpbGQua2lsbCgpCisgICAgICAgICAgICAgICAgbW9yZS5raWxsKCkKKyAgICAgICAgICAg
ICAgICBjaGlsZF9lcnJvciA9IGNoaWxkLnN0ZGVyci5yZWFkKCkKKyAgICAgICAgICAgICAgICBp
ZiBjaGlsZF9lcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZGVyci5idWZmZXIud3Jp
dGUoYidcbicgKyBjaGlsZF9lcnJvcikKKworICAgICAgICAgICAgcmV0dXJuIGNoaWxkLnJldHVy
bmNvZGUKKworICAgICAgICByZXR1cm4gRmlsdGVyZWRDb21tYW5kLm1haW4oYXJncywgcmVwb3Np
dG9yeSwgY29tbWFuZD1jbHMubmFtZSwgKiprd2FyZ3MpCisKKyAgICBAY2xhc3NtZXRob2QKKyAg
ICBkZWYgbWFpbihjbHMsIGFyZ3MsIHJlcG9zaXRvcnksIGNvbW1hbmQ9Tm9uZSwgcmVwcmVzZW50
YXRpb249Tm9uZSwgKiprd2FyZ3MpOgorICAgICAgICBpZiBub3QgcmVwb3NpdG9yeS5wYXRoOgor
ICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgiQ2Fubm90IHJ1biAne30nIG9uIHJlbW90ZSBy
ZXBvc2l0b3J5XG4iLmZvcm1hdChjb21tYW5kKSkKKyAgICAgICAgICAgIHJldHVybiAxCisKKyAg
ICAgICAgY2FjaGUgPSBnZXRhdHRyKHJlcG9zaXRvcnksICdjYWNoZScsIE5vbmUpCisgICAgICAg
IGlmIG5vdCBjYWNoZToKKyAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoJ05vIGNhY2hlIGF2
YWlsYWJsZSwgY2Fubm90IHBlcmZvcm1hbnRseSBtYXAgY29tbWl0IHJlZmVyZW5jZXNcbicpCisg
ICAgICAgICAgICByZXR1cm4gMQorCisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGFyZ3MsIGxp
c3QpOgorICAgICAgICAgICAgcmVwcmVzZW50YXRpb24gPSByZXByZXNlbnRhdGlvbiBvciBhcmdz
LnJlcHJlc2VudGF0aW9uCisgICAgICAgICAgICBhcmdzID0gYXJncy5hcmdzCisgICAgICAgIGVs
c2U6CisgICAgICAgICAgICByZXByZXNlbnRhdGlvbiA9IHJlcHJlc2VudGF0aW9uIG9yIGNscy5J
REVOVElGSUVSCisKKyAgICAgICAgaWYgcmVwcmVzZW50YXRpb24gbm90IGluIChjbHMuSURFTlRJ
RklFUiwgY2xzLkhBU0gsIGNscy5SRVZJU0lPTik6CisgICAgICAgICAgICBzeXMuc3RkZXJyLndy
aXRlKCIne30nIGlzIG5vdCBhIHZhbGlkIGNvbW1pdCByZXByZXNlbnRhdGlvblxuIi5mb3JtYXQo
cmVwcmVzZW50YXRpb24pKQorICAgICAgICAgICAgcmV0dXJuIDEKKworICAgICAgICBmb3IgaW5k
ZXggaW4gcmFuZ2UobGVuKGFyZ3MpKToKKyAgICAgICAgICAgIHBhcnNlZCA9IENvbW1pdC5wYXJz
ZShhcmdzW2luZGV4XSwgZG9fYXNzZXJ0PUZhbHNlKQorICAgICAgICAgICAgaWYgbm90IHBhcnNl
ZDoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgcmVwbGFjZW1lbnQgPSBO
b25lCisgICAgICAgICAgICBpZiByZXBvc2l0b3J5LmlzX3N2bjoKKyAgICAgICAgICAgICAgICBy
ZXBsYWNlbWVudCA9IHJlcG9zaXRvcnkuY2FjaGUudG9fcmV2aXNpb24oaGFzaD1wYXJzZWQuaGFz
aCwgaWRlbnRpZmllcj1zdHIocGFyc2VkKSBpZiBwYXJzZWQuaWRlbnRpZmllciBlbHNlIE5vbmUp
CisgICAgICAgICAgICBpZiByZXBvc2l0b3J5LmlzX2dpdDoKKyAgICAgICAgICAgICAgICByZXBs
YWNlbWVudCA9IHJlcG9zaXRvcnkuY2FjaGUudG9faGFzaChyZXZpc2lvbj1wYXJzZWQucmV2aXNp
b24sIGlkZW50aWZpZXI9c3RyKHBhcnNlZCkgaWYgcGFyc2VkLmlkZW50aWZpZXIgZWxzZSBOb25l
KQorICAgICAgICAgICAgaWYgcmVwbGFjZW1lbnQ6CisgICAgICAgICAgICAgICAgYXJnc1tpbmRl
eF0gPSByZXBsYWNlbWVudAorCisgICAgICAgIGxvZ19vdXRwdXQgPSBzdWJwcm9jZXNzLlBvcGVu
KAorICAgICAgICAgICAgW3JlcG9zaXRvcnkuZXhlY3V0YWJsZSgpLCBjb21tYW5kXSArIGFyZ3Ms
CisgICAgICAgICAgICBjd2Q9cmVwb3NpdG9yeS5yb290X3BhdGgsCisgICAgICAgICAgICBzdGRv
dXQ9c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSwK
KyAgICAgICAgICAgICoqKGRpY3QoZW5jb2Rpbmc9J3V0Zi04JykgaWYgc3lzLnZlcnNpb25faW5m
byA+ICgzLCAwKSBlbHNlIGRpY3QoKSkKKyAgICAgICAgKQorICAgICAgICBsb2dfb3V0cHV0LnBv
bGwoKQorCisgICAgICAgIGRlZiByZXBsYWNlX2xpbmUobWF0Y2gsIG1vZGU9Y2xzLkFQUEVORF9N
T0RFLCAqKmt3YXJncyk6CisgICAgICAgICAgICByZWZlcmVuY2UgPSBrd2FyZ3MuZ2V0KHJlcHJl
c2VudGF0aW9uKQorICAgICAgICAgICAgaWYgbm90IHJlZmVyZW5jZToKKyAgICAgICAgICAgICAg
ICByZWZlcmVuY2UgPSBnZXRhdHRyKGNhY2hlLCAndG9fe30nLmZvcm1hdChyZXByZXNlbnRhdGlv
biksIGxhbWJkYSAqKmt3YXJnczogTm9uZSkoKiprd2FyZ3MpCisKKyAgICAgICAgICAgIGlmIHJl
ZmVyZW5jZToKKyAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHJlZmVyZW5jZSwgaW50KToK
KyAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlID0gJ3J7fScuZm9ybWF0KHJlZmVyZW5jZSkK
KyAgICAgICAgICAgICAgICBpZiByZXByZXNlbnRhdGlvbiA9PSAnaGFzaCc6CisgICAgICAgICAg
ICAgICAgICAgIHJlZmVyZW5jZSA9IHJlZmVyZW5jZVs6Q29tbWl0LkhBU0hfTEFCRUxfU0laRV0K
KyAgICAgICAgICAgICAgICBpZiBtb2RlID09IGNscy5BUFBFTkRfTU9ERToKKyAgICAgICAgICAg
ICAgICAgICAgcmVmZXJlbmNlID0gJ3t9ICh7fSknLmZvcm1hdChtYXRjaC5ncm91cCgxKSwgcmVm
ZXJlbmNlKQorICAgICAgICAgICAgICAgIGlmIG1vZGUgPT0gY2xzLkhFQURFUl9NT0RFOgorICAg
ICAgICAgICAgICAgICAgICBhbHRlcm5hdGVzID0gW10gaWYgbWF0Y2guZ3JvdXAoMSkuc3RhcnRz
d2l0aChyZWZlcmVuY2UpIGVsc2UgW21hdGNoLmdyb3VwKDEpXQorICAgICAgICAgICAgICAgICAg
ICBmb3IgcmVwciBpbiB7J3JldmlzaW9uJywgJ2hhc2gnLCAnaWRlbnRpZmllcid9IC0geydoYXNo
JyBpZiByZXBvc2l0b3J5LmlzX2dpdCBlbHNlICdyZXZpc2lvbicsIHJlcHJlc2VudGF0aW9ufToK
KyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHJlcHIgaW4ga3dhcmdzOgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgICAgICAgICBvdGhlciA9
IGdldGF0dHIoY2FjaGUsICd0b197fScuZm9ybWF0KHJlcHIpLCBsYW1iZGEgKiprd2FyZ3M6IE5v
bmUpKCoqa3dhcmdzKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IG90aGVyOgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgICAgICAg
ICBpZiBvdGhlciA9PSAnaGFzaCc6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXIg
PSBvdGhlcls6Q29tbWl0LkhBU0hfTEFCRUxfU0laRV0KKyAgICAgICAgICAgICAgICAgICAgICAg
IGFsdGVybmF0ZXMuYXBwZW5kKCdye30nLmZvcm1hdChvdGhlcikgaWYgaXNpbnN0YW5jZShvdGhl
ciwgaW50KSBlbHNlIG90aGVyKQorICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2UgPSAne30g
KHt9KScuZm9ybWF0KHJlZmVyZW5jZSwgJywgJy5qb2luKGFsdGVybmF0ZXMpKQorICAgICAgICAg
ICAgICAgIHJldHVybiBtYXRjaC5ncm91cCgwKS5yZXBsYWNlKG1hdGNoLmdyb3VwKDEpLCByZWZl
cmVuY2UpCisgICAgICAgICAgICByZXR1cm4gbWF0Y2guZ3JvdXAoMCkKKworICAgICAgICByZXMg
PSB7fQorICAgICAgICBpZiByZXByZXNlbnRhdGlvbiAhPSBjbHMuSEFTSDoKKyAgICAgICAgICAg
IHJlc1tjbHMuSEFTSF0gPSBjbHMuSEFTSF9SRVMKKyAgICAgICAgaWYgcmVwcmVzZW50YXRpb24g
IT0gY2xzLlJFVklTSU9OOgorICAgICAgICAgICAgcmVzW2Nscy5SRVZJU0lPTl0gPSBjbHMuUkVW
SVNJT05fUkVTCisgICAgICAgIGlmIHJlcHJlc2VudGF0aW9uICE9IGNscy5JREVOVElGSUVSOgor
ICAgICAgICAgICAgcmVzW2Nscy5JREVOVElGSUVSXSA9IGNscy5JREVOVElGSUVSX1JFUworCisg
ICAgICAgIGhlYWRlcl9yZSA9IGNscy5HSVRfSEVBREVSX1JFIGlmIHJlcG9zaXRvcnkuaXNfZ2l0
IGVsc2UgY2xzLlNWTl9IRUFERVJfUkUKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBsaW5l
ID0gbG9nX291dHB1dC5zdGRvdXQucmVhZGxpbmUoKQorICAgICAgICAgICAgd2hpbGUgbGluZToK
KyAgICAgICAgICAgICAgICBoZWFkZXIgPSBoZWFkZXJfcmUuc3ViKAorICAgICAgICAgICAgICAg
ICAgICBsYW1iZGEgbWF0Y2g6IHJlcGxhY2VfbGluZShtYXRjaCwgbW9kZT1jbHMuSEVBREVSX01P
REUsICoqeydoYXNoJyBpZiByZXBvc2l0b3J5LmlzX2dpdCBlbHNlICdyZXZpc2lvbic6IG1hdGNo
Lmdyb3VwKDEpfSksCisgICAgICAgICAgICAgICAgICAgIGxpbmUsCisgICAgICAgICAgICAgICAg
KQorICAgICAgICAgICAgICAgIGlmIGhlYWRlciAhPSBsaW5lOgorICAgICAgICAgICAgICAgICAg
ICBzeXMuc3Rkb3V0LndyaXRlKGhlYWRlcikKKyAgICAgICAgICAgICAgICAgICAgbGluZSA9IGxv
Z19vdXRwdXQuc3Rkb3V0LnJlYWRsaW5lKCkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUK
KworICAgICAgICAgICAgICAgIGZvciByZXByLCByZWdleHMgaW4gcmVzLml0ZW1zKCk6CisgICAg
ICAgICAgICAgICAgICAgIGxpbmUgPSByZWdleHNbMF0uc3ViKAorICAgICAgICAgICAgICAgICAg
ICAgICAgbGFtYmRhIG1hdGNoOiByZXBsYWNlX2xpbmUobWF0Y2gsIG1vZGU9Y2xzLlJFUExBQ0Vf
TU9ERSwgKip7cmVwcjogbWF0Y2guZ3JvdXAoMSl9KSwKKyAgICAgICAgICAgICAgICAgICAgICAg
IGxpbmUsCisgICAgICAgICAgICAgICAgICAgICkKKworICAgICAgICAgICAgICAgIGlmIG5vdCBh
bnkoci5tYXRjaChsaW5lKSBmb3IgciBpbiBjbHMuTk9fRklMVEVSX1JFUyk6CisgICAgICAgICAg
ICAgICAgICAgIGZvciByZXByLCByZWdleHMgaW4gcmVzLml0ZW1zKCk6CisgICAgICAgICAgICAg
ICAgICAgICAgICBsaW5lID0gcmVnZXhzWzFdLnN1YigKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBsYW1iZGEgbWF0Y2g6IHJlcGxhY2VfbGluZShtYXRjaCwgbW9kZT1jbHMuQVBQRU5EX01P
REUsICoqe3JlcHI6IG1hdGNoLmdyb3VwKDEpfSksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbGluZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICkKKworICAgICAgICAgICAgICAgIHN5
cy5zdGRvdXQud3JpdGUobGluZSkKKworICAgICAgICAgICAgICAgIGxpbmUgPSBsb2dfb3V0cHV0
LnN0ZG91dC5yZWFkbGluZSgpCisKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGxvZ19v
dXRwdXQua2lsbCgpCisgICAgICAgIHJldHVybiBsb2dfb3V0cHV0LnJldHVybmNvZGUKSW5kZXg6
IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Byb2dyYW0v
bG9nLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5
L3dlYmtpdHNjbXB5L3Byb2dyYW0vbG9nLnB5CShub25leGlzdGVudCkKKysrIFRvb2xzL1Njcmlw
dHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Byb2dyYW0vbG9nLnB5CSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsNDUgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKworIyBD
b3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisj
CisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyAiQVMgSVMiIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IHN5cworCitmcm9tIHdl
YmtpdHNjbXB5IGltcG9ydCBsb2NhbAorZnJvbSB3ZWJraXRzY21weS5wcm9ncmFtLmNvbW1hbmQg
aW1wb3J0IEZpbHRlcmVkQ29tbWFuZAorCisKK2NsYXNzIExvZyhGaWx0ZXJlZENvbW1hbmQpOgor
ICAgIG5hbWUgPSAnbG9nJworICAgIGhlbHAgPSAiRmlsdGVyIHJhdyBvdXRwdXQgb2YgJ2dpdCBs
b2cnIG9yICdzdm4gbG9nJyB0byByZXBsYWNlIG5hdGl2ZSBjb21taXQgcmVwcmVzZW50YXRpb24g
d2l0aCBpZGVudGlmaWVycyIKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBtYWluKGNscywg
YXJncywgcmVwb3NpdG9yeSwgKiprd2FyZ3MpOgorICAgICAgICByZXR1cm4gY2xzLnBhZ2VyKGFy
Z3MsIHJlcG9zaXRvcnksIGZpbGU9X19maWxlX18sICoqa3dhcmdzKQorCisKK2lmIF9fbmFtZV9f
ID09ICdfX21haW5fXyc6CisgICAgc3lzLmV4aXQoTG9nLm1haW4oCisgICAgICAgIHN5cy5hcmd2
WzM6XSwKKyAgICAgICAgbG9jYWwuU2NtLmZyb21fcGF0aChwYXRoPXN5cy5hcmd2WzFdLCBjYWNo
ZWQ9VHJ1ZSksCisgICAgICAgIHJlcHJlc2VudGF0aW9uPXN5cy5hcmd2WzJdLAorICAgICkpCklu
ZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS90ZXN0
L2xvZ191bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93
ZWJraXRzY21weS93ZWJraXRzY21weS90ZXN0L2xvZ191bml0dGVzdC5weQkobm9uZXhpc3RlbnQp
CisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS90ZXN0
L2xvZ191bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIwNiBAQAorIyBDb3B5
cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
IyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisj
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IGpzb24KK2ltcG9ydCBvcwor
aW1wb3J0IHNodXRpbAoraW1wb3J0IHRlbXBmaWxlCisKK2Zyb20gZGF0ZXRpbWUgaW1wb3J0IGRh
dGV0aW1lCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgT3V0cHV0Q2FwdHVyZSwgdGVzdGluZwor
ZnJvbSB3ZWJraXRjb3JlcHkubW9ja3MgaW1wb3J0IFRpbWUgYXMgTW9ja1RpbWUKK2Zyb20gd2Vi
a2l0c2NtcHkgaW1wb3J0IHByb2dyYW0sIG1vY2tzCisKKworY2xhc3MgVGVzdExvZyh0ZXN0aW5n
LlBhdGhUZXN0Q2FzZSk6CisgICAgYmFzZXBhdGggPSAnbW9jay9yZXBvc2l0b3J5JworCisgICAg
ZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzdXBlcihUZXN0TG9nLCBzZWxmKS5zZXRVcCgpCisg
ICAgICAgIG9zLm1rZGlyKG9zLnBhdGguam9pbihzZWxmLnBhdGgsICcuZ2l0JykpCisgICAgICAg
IG9zLm1rZGlyKG9zLnBhdGguam9pbihzZWxmLnBhdGgsICcuc3ZuJykpCisKKyAgICBkZWYgdGVz
dF9naXQoc2VsZik6CisgICAgICAgIHdpdGggT3V0cHV0Q2FwdHVyZSgpIGFzIGNhcHR1cmVkLCBt
b2Nrcy5sb2NhbC5HaXQoc2VsZi5wYXRoKSwgbW9ja3MubG9jYWwuU3ZuKCksIE1vY2tUaW1lOgor
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgtMSwgcHJvZ3JhbS5tYWluKAorICAgICAgICAg
ICAgICAgIGFyZ3M9KCdsb2cnLCAnbWFpbicpLAorICAgICAgICAgICAgICAgIHBhdGg9c2VsZi5w
YXRoLAorICAgICAgICAgICAgKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAg
ICAgICAgY2FwdHVyZWQuc3Rkb3V0LmdldHZhbHVlKCksCisgICAgICAgICAgICAnJydjb21taXQg
NUBtYWluIChkOGJjZTI2ZmE2NWM2ZmM4ZjM5YzE3OTI3YWJiNzdmNjlmYWI4MmZjKQorQXV0aG9y
OiBKb25hdGhhbiBCZWRhcmQgPGpiZWRhcmRAYXBwbGUuY29tPgorRGF0ZTogICBTYXQgT2N0IDAz
IDAzOjQ2OjQwIDIwMjAgKzAwMDAKKworICAgIFBhdGNoIFNlcmllcworCitjb21taXQgNEBtYWlu
IChiYWU1ZDFlOTA5OTlkNGY5MTZhOGExNTgxMGNjZmE0M2YzN2EyZmQ2KQorQXV0aG9yOiBKb25h
dGhhbiBCZWRhcmQgPGpiZWRhcmRAYXBwbGUuY29tPgorRGF0ZTogICBTYXQgT2N0IDAzIDAzOjQ2
OjQwIDIwMjAgKzAwMDAKKworICAgIDh0aCBjb21taXQKKworY29tbWl0IDNAbWFpbiAoMWFiZTI1
YjQ0M2U5ODVmOTNiOTBkODMwZTRhN2UzNzMxMzM2YWY0ZCkKK0F1dGhvcjogSm9uYXRoYW4gQmVk
YXJkIDxqYmVkYXJkQGFwcGxlLmNvbT4KK0RhdGU6ICAgU2F0IE9jdCAwMyAwMjoyMzoyMCAyMDIw
ICswMDAwCisKKyAgICA0dGggY29tbWl0CisKK2NvbW1pdCAyQG1haW4gKGZmZjgzYmIyZDkxNzFi
NGQ5MTk2ZTk3N2ViMDUwOGZkNTdlN2EwOGQpCitBdXRob3I6IEpvbmF0aGFuIEJlZGFyZCA8amJl
ZGFyZEBhcHBsZS5jb20+CitEYXRlOiAgIFNhdCBPY3QgMDMgMDE6NTA6MDAgMjAyMCArMDAwMAor
CisgICAgMm5kIGNvbW1pdAorCitjb21taXQgMUBtYWluICg5YjgzMTFmMjVhNzdiYTE0OTIzZDlk
NWE2NTMyMTAzZjU0YWJlZmNiKQorQXV0aG9yOiBKb25hdGhhbiBCZWRhcmQgPGpiZWRhcmRAYXBw
bGUuY29tPgorRGF0ZTogICBTYXQgT2N0IDAzIDAxOjMzOjIwIDIwMjAgKzAwMDAKKworICAgIDFz
dCBjb21taXQKKycnJywKKyAgICAgICAgKQorCisgICAgZGVmIHRlc3RfZ2l0X3N2bihzZWxmKToK
KyAgICAgICAgd2l0aCBPdXRwdXRDYXB0dXJlKCkgYXMgY2FwdHVyZWQsIG1vY2tzLmxvY2FsLkdp
dChzZWxmLnBhdGgsIGdpdF9zdm49VHJ1ZSksIG1vY2tzLmxvY2FsLlN2bigpLCBNb2NrVGltZToK
KyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoLTEsIHByb2dyYW0ubWFpbigKKyAgICAgICAg
ICAgICAgICBhcmdzPSgnbG9nJywgJ21haW4nKSwKKyAgICAgICAgICAgICAgICBwYXRoPXNlbGYu
cGF0aCwKKyAgICAgICAgICAgICkpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisg
ICAgICAgICAgICAgICAgY2FwdHVyZWQuc3Rkb3V0LmdldHZhbHVlKCksCisgICAgICAgICAgICAg
ICAgJycnY29tbWl0IDVAbWFpbiAoZDhiY2UyNmZhNjVjNmZjOGYzOWMxNzkyN2FiYjc3ZjY5ZmFi
ODJmYywgcjkpCitBdXRob3I6IEpvbmF0aGFuIEJlZGFyZCA8amJlZGFyZEBhcHBsZS5jb20+CitE
YXRlOiAgIFNhdCBPY3QgMDMgMDM6NDY6NDAgMjAyMCArMDAwMAorCisgICAgUGF0Y2ggU2VyaWVz
CisgICAgZ2l0LXN2bi1pZDogaHR0cHM6Ly9zdm4uZXhhbXBsZS5vcmcvcmVwb3NpdG9yeS9yZXBv
c2l0b3J5L3RydW5rQDkgMjY4ZjQ1Y2MtY2QwOS0wNDEwLWFiM2MtZDUyNjkxYjRkYmZjCisKK2Nv
bW1pdCA0QG1haW4gKGJhZTVkMWU5MDk5OWQ0ZjkxNmE4YTE1ODEwY2NmYTQzZjM3YTJmZDYsIHI4
KQorQXV0aG9yOiBKb25hdGhhbiBCZWRhcmQgPGpiZWRhcmRAYXBwbGUuY29tPgorRGF0ZTogICBT
YXQgT2N0IDAzIDAzOjQ2OjQwIDIwMjAgKzAwMDAKKworICAgIDh0aCBjb21taXQKKyAgICBnaXQt
c3ZuLWlkOiBodHRwczovL3N2bi5leGFtcGxlLm9yZy9yZXBvc2l0b3J5L3JlcG9zaXRvcnkvdHJ1
bmtAOCAyNjhmNDVjYy1jZDA5LTA0MTAtYWIzYy1kNTI2OTFiNGRiZmMKKworY29tbWl0IDNAbWFp
biAoMWFiZTI1YjQ0M2U5ODVmOTNiOTBkODMwZTRhN2UzNzMxMzM2YWY0ZCwgcjQpCitBdXRob3I6
IEpvbmF0aGFuIEJlZGFyZCA8amJlZGFyZEBhcHBsZS5jb20+CitEYXRlOiAgIFNhdCBPY3QgMDMg
MDI6MjM6MjAgMjAyMCArMDAwMAorCisgICAgNHRoIGNvbW1pdAorICAgIGdpdC1zdm4taWQ6IGh0
dHBzOi8vc3ZuLmV4YW1wbGUub3JnL3JlcG9zaXRvcnkvcmVwb3NpdG9yeS90cnVua0A0IDI2OGY0
NWNjLWNkMDktMDQxMC1hYjNjLWQ1MjY5MWI0ZGJmYworCitjb21taXQgMkBtYWluIChmZmY4M2Ji
MmQ5MTcxYjRkOTE5NmU5NzdlYjA1MDhmZDU3ZTdhMDhkLCByMikKK0F1dGhvcjogSm9uYXRoYW4g
QmVkYXJkIDxqYmVkYXJkQGFwcGxlLmNvbT4KK0RhdGU6ICAgU2F0IE9jdCAwMyAwMTo1MDowMCAy
MDIwICswMDAwCisKKyAgICAybmQgY29tbWl0CisgICAgZ2l0LXN2bi1pZDogaHR0cHM6Ly9zdm4u
ZXhhbXBsZS5vcmcvcmVwb3NpdG9yeS9yZXBvc2l0b3J5L3RydW5rQDIgMjY4ZjQ1Y2MtY2QwOS0w
NDEwLWFiM2MtZDUyNjkxYjRkYmZjCisKK2NvbW1pdCAxQG1haW4gKDliODMxMWYyNWE3N2JhMTQ5
MjNkOWQ1YTY1MzIxMDNmNTRhYmVmY2IsIHIxKQorQXV0aG9yOiBKb25hdGhhbiBCZWRhcmQgPGpi
ZWRhcmRAYXBwbGUuY29tPgorRGF0ZTogICBTYXQgT2N0IDAzIDAxOjMzOjIwIDIwMjAgKzAwMDAK
KworICAgIDFzdCBjb21taXQKKyAgICBnaXQtc3ZuLWlkOiBodHRwczovL3N2bi5leGFtcGxlLm9y
Zy9yZXBvc2l0b3J5L3JlcG9zaXRvcnkvdHJ1bmtAMSAyNjhmNDVjYy1jZDA5LTA0MTAtYWIzYy1k
NTI2OTFiNGRiZmMKKycnJywKKyAgICAgICAgICAgICkKKworICAgIGRlZiB0ZXN0X2dpdF9zdm5f
cmV2aXNpb24oc2VsZik6CisgICAgICAgIHdpdGggT3V0cHV0Q2FwdHVyZSgpIGFzIGNhcHR1cmVk
LCBtb2Nrcy5sb2NhbC5HaXQoc2VsZi5wYXRoLCBnaXRfc3ZuPVRydWUpLCBtb2Nrcy5sb2NhbC5T
dm4oKSwgTW9ja1RpbWU6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKC0xLCBwcm9ncmFt
Lm1haW4oCisgICAgICAgICAgICAgICAgYXJncz0oJ2xvZycsICdtYWluJywgJy0tcmV2aXNpb24n
KSwKKyAgICAgICAgICAgICAgICBwYXRoPXNlbGYucGF0aCwKKyAgICAgICAgICAgICkpCisKKyAg
ICAgICAgICAgIHNlbGYubWF4RGlmZiA9IE5vbmUKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoCisgICAgICAgICAgICAgICAgY2FwdHVyZWQuc3Rkb3V0LmdldHZhbHVlKCksCisgICAgICAg
ICAgICAgICAgJycnY29tbWl0IHI5IChkOGJjZTI2ZmE2NWM2ZmM4ZjM5YzE3OTI3YWJiNzdmNjlm
YWI4MmZjLCA1QG1haW4pCitBdXRob3I6IEpvbmF0aGFuIEJlZGFyZCA8amJlZGFyZEBhcHBsZS5j
b20+CitEYXRlOiAgIFNhdCBPY3QgMDMgMDM6NDY6NDAgMjAyMCArMDAwMAorCisgICAgUGF0Y2gg
U2VyaWVzCisgICAgZ2l0LXN2bi1pZDogaHR0cHM6Ly9zdm4uZXhhbXBsZS5vcmcvcmVwb3NpdG9y
eS9yZXBvc2l0b3J5L3RydW5rQDkgMjY4ZjQ1Y2MtY2QwOS0wNDEwLWFiM2MtZDUyNjkxYjRkYmZj
CisKK2NvbW1pdCByOCAoYmFlNWQxZTkwOTk5ZDRmOTE2YThhMTU4MTBjY2ZhNDNmMzdhMmZkNiwg
NEBtYWluKQorQXV0aG9yOiBKb25hdGhhbiBCZWRhcmQgPGpiZWRhcmRAYXBwbGUuY29tPgorRGF0
ZTogICBTYXQgT2N0IDAzIDAzOjQ2OjQwIDIwMjAgKzAwMDAKKworICAgIDh0aCBjb21taXQKKyAg
ICBnaXQtc3ZuLWlkOiBodHRwczovL3N2bi5leGFtcGxlLm9yZy9yZXBvc2l0b3J5L3JlcG9zaXRv
cnkvdHJ1bmtAOCAyNjhmNDVjYy1jZDA5LTA0MTAtYWIzYy1kNTI2OTFiNGRiZmMKKworY29tbWl0
IHI0ICgxYWJlMjViNDQzZTk4NWY5M2I5MGQ4MzBlNGE3ZTM3MzEzMzZhZjRkLCAzQG1haW4pCitB
dXRob3I6IEpvbmF0aGFuIEJlZGFyZCA8amJlZGFyZEBhcHBsZS5jb20+CitEYXRlOiAgIFNhdCBP
Y3QgMDMgMDI6MjM6MjAgMjAyMCArMDAwMAorCisgICAgNHRoIGNvbW1pdAorICAgIGdpdC1zdm4t
aWQ6IGh0dHBzOi8vc3ZuLmV4YW1wbGUub3JnL3JlcG9zaXRvcnkvcmVwb3NpdG9yeS90cnVua0A0
IDI2OGY0NWNjLWNkMDktMDQxMC1hYjNjLWQ1MjY5MWI0ZGJmYworCitjb21taXQgcjIgKGZmZjgz
YmIyZDkxNzFiNGQ5MTk2ZTk3N2ViMDUwOGZkNTdlN2EwOGQsIDJAbWFpbikKK0F1dGhvcjogSm9u
YXRoYW4gQmVkYXJkIDxqYmVkYXJkQGFwcGxlLmNvbT4KK0RhdGU6ICAgU2F0IE9jdCAwMyAwMTo1
MDowMCAyMDIwICswMDAwCisKKyAgICAybmQgY29tbWl0CisgICAgZ2l0LXN2bi1pZDogaHR0cHM6
Ly9zdm4uZXhhbXBsZS5vcmcvcmVwb3NpdG9yeS9yZXBvc2l0b3J5L3RydW5rQDIgMjY4ZjQ1Y2Mt
Y2QwOS0wNDEwLWFiM2MtZDUyNjkxYjRkYmZjCisKK2NvbW1pdCByMSAoOWI4MzExZjI1YTc3YmEx
NDkyM2Q5ZDVhNjUzMjEwM2Y1NGFiZWZjYiwgMUBtYWluKQorQXV0aG9yOiBKb25hdGhhbiBCZWRh
cmQgPGpiZWRhcmRAYXBwbGUuY29tPgorRGF0ZTogICBTYXQgT2N0IDAzIDAxOjMzOjIwIDIwMjAg
KzAwMDAKKworICAgIDFzdCBjb21taXQKKyAgICBnaXQtc3ZuLWlkOiBodHRwczovL3N2bi5leGFt
cGxlLm9yZy9yZXBvc2l0b3J5L3JlcG9zaXRvcnkvdHJ1bmtAMSAyNjhmNDVjYy1jZDA5LTA0MTAt
YWIzYy1kNTI2OTFiNGRiZmMKKycnJywKKyAgICAgICAgICAgICkKKworICAgIGRlZiB0ZXN0X3N2
bihzZWxmKToKKyAgICAgICAgd2l0aCBPdXRwdXRDYXB0dXJlKCkgYXMgY2FwdHVyZWQsIG1vY2tz
LmxvY2FsLkdpdCgpLCBtb2Nrcy5sb2NhbC5Tdm4oc2VsZi5wYXRoKSwgTW9ja1RpbWU6CisgICAg
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKC0xLCBwcm9ncmFtLm1haW4oCisgICAgICAgICAgICAg
ICAgYXJncz0oJ2xvZycsKSwKKyAgICAgICAgICAgICAgICBwYXRoPXNlbGYucGF0aCwKKyAgICAg
ICAgICAgICkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGNhcHR1
cmVkLnN0ZG91dC5nZXR2YWx1ZSgpLAorICAgICAgICAgICAgJycnLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCity
NiAoNEB0cnVuaykgfCBqYmVkYXJkQGFwcGxlLmNvbSB8IDIwMjAtMTAtMDIgMTg6NTg6MjAgMDAw
MCAoRnJpLCAwMiBPY3QgMjAyMCkgfCAxIGxpbmVzCisKKzZ0aCBjb21taXQKKworLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCityNCAoM0B0cnVuaykgfCBqYmVkYXJkQGFwcGxlLmNvbSB8IDIwMjAtMTAtMDIgMTg6
MjU6MDAgMDAwMCAoRnJpLCAwMiBPY3QgMjAyMCkgfCAxIGxpbmVzCisKKzR0aCBjb21taXQKKwor
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCityMiAoMkB0cnVuaykgfCBqYmVkYXJkQGFwcGxlLmNvbSB8IDIwMjAt
MTAtMDIgMTc6NTE6NDAgMDAwMCAoRnJpLCAwMiBPY3QgMjAyMCkgfCAxIGxpbmVzCisKKzJuZCBj
b21taXQKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCityMSAoMUB0cnVuaykgfCBqYmVkYXJkQGFwcGxlLmNv
bSB8IDIwMjAtMTAtMDIgMTc6MzU6MDAgMDAwMCAoRnJpLCAwMiBPY3QgMjAyMCkgfCAxIGxpbmVz
CisKKzFzdCBjb21taXQKKworJycnLAorICAgICAgICApCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>