<?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>203761</bug_id>
          
          <creation_ts>2019-11-01 14:38:25 -0700</creation_ts>
          <short_desc>Python 3: Add support in webkitpy.style.checkers</short_desc>
          <delta_ts>2020-06-03 14:57:01 -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=203762</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=204183</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>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jbedard</cc>
    
    <cc>slewis</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1586569</commentid>
    <comment_count>0</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2019-11-01 14:38:25 -0700</bug_when>
    <thetext>This is a critical prerequisite for running our style checker.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1586572</commentid>
    <comment_count>1</comment_count>
      <attachid>382632</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2019-11-01 14:41:09 -0700</bug_when>
    <thetext>Created attachment 382632
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1589693</commentid>
    <comment_count>2</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2019-11-12 16:40:31 -0800</bug_when>
    <thetext>We&apos;re going to need to defer some pylint things for https://bugs.webkit.org/show_bug.cgi?id=204133.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1589714</commentid>
    <comment_count>3</comment_count>
      <attachid>383410</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2019-11-12 17:15:47 -0800</bug_when>
    <thetext>Created attachment 383410
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1589721</commentid>
    <comment_count>4</comment_count>
      <attachid>383412</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2019-11-12 17:26:36 -0800</bug_when>
    <thetext>Created attachment 383412
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1590078</commentid>
    <comment_count>5</comment_count>
      <attachid>383412</attachid>
    <who name="Stephanie Lewis">slewis</who>
    <bug_when>2019-11-13 15:52:17 -0800</bug_when>
    <thetext>Comment on attachment 383412
Patch

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

&gt; Tools/Scripts/webkitpy/style/optparser_unittest.py:-101
&gt; -

not against this change but is it really necessary for python3?

&gt; Tools/Scripts/webkitpy/style/checkers/jsonchecker_unittest.py:85
&gt; +        self.assert_error(1 if sys.version_info &gt; (3, 0) else 0, &apos;json/syntax&apos;, &apos;&lt;&lt;&lt;&lt;&lt;&lt;&lt; HEAD\n{\n}\n&apos;)

Why is this different? Maybe add a comment</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1590096</commentid>
    <comment_count>6</comment_count>
      <attachid>383412</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2019-11-13 16:22:51 -0800</bug_when>
    <thetext>Comment on attachment 383412
Patch

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

&gt;&gt; Tools/Scripts/webkitpy/style/optparser_unittest.py:-101
&gt;&gt; -
&gt; 
&gt; not against this change but is it really necessary for python3?

I thought it was originally, but no, it&apos;s not. The bug I was chasing here actually had to do with trying to run Python 3&apos;s pylint in Python 2. Decided to keep it anyways because it seems better than the previous code.

&gt;&gt; Tools/Scripts/webkitpy/style/checkers/jsonchecker_unittest.py:85
&gt;&gt; +        self.assert_error(1 if sys.version_info &gt; (3, 0) else 0, &apos;json/syntax&apos;, &apos;&lt;&lt;&lt;&lt;&lt;&lt;&lt; HEAD\n{\n}\n&apos;)
&gt; 
&gt; Why is this different? Maybe add a comment

Python 2 and 3 have a slightly different json parser which reports line numbers differently (0 vs 1 indexed)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1590110</commentid>
    <comment_count>7</comment_count>
    <who name="Stephanie Lewis">slewis</who>
    <bug_when>2019-11-13 16:38:29 -0800</bug_when>
    <thetext>(In reply to Jonathan Bedard from comment #6)
&gt; Comment on attachment 383412 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=383412&amp;action=review
&gt; 
&gt; &gt;&gt; Tools/Scripts/webkitpy/style/optparser_unittest.py:-101
&gt; &gt;&gt; -
&gt; &gt; 
&gt; &gt; not against this change but is it really necessary for python3?
&gt; 
&gt; I thought it was originally, but no, it&apos;s not. The bug I was chasing here
&gt; actually had to do with trying to run Python 3&apos;s pylint in Python 2. Decided
&gt; to keep it anyways because it seems better than the previous code.

Since this is so much boilerplate I&apos;d move that part into a different patch. rs=me

&gt; 
&gt; &gt;&gt; Tools/Scripts/webkitpy/style/checkers/jsonchecker_unittest.py:85
&gt; &gt;&gt; +        self.assert_error(1 if sys.version_info &gt; (3, 0) else 0, &apos;json/syntax&apos;, &apos;&lt;&lt;&lt;&lt;&lt;&lt;&lt; HEAD\n{\n}\n&apos;)
&gt; &gt; 
&gt; &gt; Why is this different? Maybe add a comment
&gt; 
&gt; Python 2 and 3 have a slightly different json parser which reports line
&gt; numbers differently (0 vs 1 indexed)

yeah add a comment then</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1590120</commentid>
    <comment_count>8</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2019-11-13 17:04:44 -0800</bug_when>
    <thetext>Committed r252440: &lt;https://trac.webkit.org/changeset/252440&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1590121</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-11-13 17:05:18 -0800</bug_when>
    <thetext>&lt;rdar://problem/57174424&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382632</attachid>
            <date>2019-11-01 14:41:09 -0700</date>
            <delta_ts>2019-11-12 17:15:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203761-20191101144108.patch</filename>
            <type>text/plain</type>
            <size>27300</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI1MTk0MCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDYxIEBACisyMDE5LTExLTAxICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBQeXRob24gMzogQWRkIHN1cHBvcnQgaW4gd2Via2l0cHkuc3R5bGUuY2hl
Y2tlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
Mzc2MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdv
cmsgaW4gcHJvZ3Jlc3MuCisKKyAgICAgICAgKiBTY3JpcHRzL3Rlc3Qtd2Via2l0cHktcHl0aG9u
MzoKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvYnVpbGRlcnMucHk6CisgICAgICAg
IChhbGxfcG9ydF9uYW1lcyk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVj
a2Vycy9jaGFuZ2Vsb2cucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVj
a2Vycy9jaGFuZ2Vsb2dfdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9z
dHlsZS9jaGVja2Vycy9jbWFrZS5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxl
L2NoZWNrZXJzL2NtYWtlX3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
c3R5bGUvY2hlY2tlcnMvY29tbW9uX3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvc3R5bGUvY2hlY2tlcnMvY29udHJpYnV0b3JzLnB5OgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwLnB5OgorICAgICAgICAoUG9zaXRpb24uX19jbXBf
Xyk6CisgICAgICAgIChQb3NpdGlvbik6CisgICAgICAgIChQb3NpdGlvbi5fX2VxX18pOgorICAg
ICAgICAoUG9zaXRpb24uX19uZV9fKToKKyAgICAgICAgKFBvc2l0aW9uLl9fbHRfXyk6CisgICAg
ICAgIChQb3NpdGlvbi5fX2xlX18pOgorICAgICAgICAoUG9zaXRpb24uX19ndF9fKToKKyAgICAg
ICAgKFBvc2l0aW9uLl9fZ2VfXyk6CisgICAgICAgIChjaGVja19mb3JfY29weXJpZ2h0KToKKyAg
ICAgICAgKGRldGVjdF9mdW5jdGlvbnMpOgorICAgICAgICAoY2hlY2tfbGFuZ3VhZ2UpOgorICAg
ICAgICAoY2hlY2tfZm9yX2luY2x1ZGVfd2hhdF95b3VfdXNlKToKKyAgICAgICAgKF9wcm9jZXNz
X2xpbmVzKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NwcF91
bml0dGVzdC5weToKKyAgICAgICAgKENwcFN0eWxlVGVzdCk6CisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9zdHlsZS9jaGVja2Vycy9qcy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L3N0eWxlL2NoZWNrZXJzL2pzX3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvc3R5bGUvY2hlY2tlcnMvanNvbmNoZWNrZXIucHk6CisgICAgICAgIChKU09ORmVhdHVyZXND
aGVja2VyLmNoZWNrKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJz
L2pzb25jaGVja2VyX3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5
bGUvY2hlY2tlcnMvanN0ZXN0X3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvc3R5bGUvY2hlY2tlcnMvbWVzc2FnZXNpbi5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L3N0eWxlL2NoZWNrZXJzL21lc3NhZ2VzaW5fdW5pdHRlc3QucHk6CisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9wbmdfdW5pdHRlc3QucHk6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9weXRob24ucHk6CisgICAgICAgIChQeXRo
b25DaGVja2VyLl9jaGVja19weWxpbnQpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5
bGUvY2hlY2tlcnMvcHl0aG9uX3VuaXR0ZXN0LnB5OgorICAgICAgICAoUHl0aG9uQ2hlY2tlclRl
c3QudGVzdF9jaGVjayk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vy
cy9weXRob25fdW5pdHRlc3RfaW5wdXQucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9z
dHlsZS9jaGVja2Vycy90ZXN0X2V4cGVjdGF0aW9ucy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L3N0eWxlL2NoZWNrZXJzL3Rlc3RfZXhwZWN0YXRpb25zX3VuaXR0ZXN0LnB5OgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvdGV4dC5weToKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL3RleHRfdW5pdHRlc3QucHk6CisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy93YXRjaGxpc3RfdW5pdHRlc3Qu
cHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy94Y29kZXByb2pf
dW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy94
bWxfdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L19f
aW5pdF9fLnB5OgorICAgICAgICAoQXV0b2luc3RhbGxJbXBvcnRIb29rLl9pbnN0YWxsX3B5bGlu
dCk6CisKIDIwMTktMTEtMDEgIEFha2FzaCBKYWluICA8YWFrYXNoX2phaW5AYXBwbGUuY29tPgog
CiAgICAgICAgIFtld3NdIEltcHJvdmUgc3VtbWFyeSBzdHJpbmcgd2hlbiB0aGVyZSBhcmUgZmxh
a3kgZmFpbHVyZXMgaW4gQVBJIHRlc3RzCkluZGV4OiBUb29scy9TY3JpcHRzL3Rlc3Qtd2Via2l0
cHktcHl0aG9uMwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3Rlc3Qtd2Via2l0cHktcHl0
aG9uMwkocmV2aXNpb24gMjUxOTM4KQorKysgVG9vbHMvU2NyaXB0cy90ZXN0LXdlYmtpdHB5LXB5
dGhvbjMJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAgUFlUSE9OM19DT01QQVRJQkxF
X0RJUkVDVE9SSUVTID0gWwogICAnd2Via2l0cHkuY29tbW9uLndhdGNobGlzdCcsCiAgICd3ZWJr
aXRweS5wb3J0JywKICAgJ3dlYmtpdHB5LnJlc3VsdHMnLAorICAnd2Via2l0cHkuc3R5bGUuY2hl
Y2tlcnMnLAogICAnd2Via2l0cHkueGNvZGUnLAogXQogU0xPV19URVNUUyA9IFsKSW5kZXg6IFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9idWlsZGVycy5weQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvYnVpbGRlcnMucHkJKHJldmlzaW9uIDI1MTkzOCkKKysr
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9idWlsZGVycy5weQkod29ya2luZyBjb3B5KQpA
QCAtMTAyLDcgKzEwMiw3IEBAIGRlZiBhbGxfYnVpbGRlcl9uYW1lcygpOgogCiAKIGRlZiBhbGxf
cG9ydF9uYW1lcygpOgotICAgIHJldHVybiBzb3J0ZWQoc2V0KG1hcChsYW1iZGEgeDogeFsicG9y
dF9uYW1lIl0sIF9leGFjdF9tYXRjaGVzLnZhbHVlcygpKSArIF9wb3J0c193aXRob3V0X2J1aWxk
ZXJzKSkKKyAgICByZXR1cm4gc29ydGVkKHNldChsaXN0KG1hcChsYW1iZGEgeDogeFsicG9ydF9u
YW1lIl0sIF9leGFjdF9tYXRjaGVzLnZhbHVlcygpKSkgKyBfcG9ydHNfd2l0aG91dF9idWlsZGVy
cykpCiAKIAogZGVmIHJlYmFzZWxpbmVfb3ZlcnJpZGVfZGlyKGJ1aWxkZXJfbmFtZSk6CkluZGV4
OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NoYW5nZWxvZy5weQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NoYW5nZWxv
Zy5weQkocmV2aXNpb24gMjUxOTM4KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9j
aGVja2Vycy9jaGFuZ2Vsb2cucHkJKHdvcmtpbmcgY29weSkKQEAgLTIzLDkgKzIzLDkgQEAKIAog
IiIiQ2hlY2tzIFdlYktpdCBzdHlsZSBmb3IgQ2hhbmdlTG9nIGZpbGVzLiIiIgogCi1mcm9tIGNv
bW1vbiBpbXBvcnQgVGFiQ2hlY2tlciwgbWF0Y2gsIHNlYXJjaCwgc2VhcmNoSWdub3JlY2FzZQog
ZnJvbSBzeXMgaW1wb3J0IG1heHNpemUKIGZyb20gd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0LmNo
YW5nZWxvZyBpbXBvcnQgcGFyc2VfYnVnX2lkX2Zyb21fY2hhbmdlbG9nCitmcm9tIHdlYmtpdHB5
LnN0eWxlLmNoZWNrZXJzLmNvbW1vbiBpbXBvcnQgVGFiQ2hlY2tlciwgbWF0Y2gsIHNlYXJjaCwg
c2VhcmNoSWdub3JlY2FzZQogCiAKIGNsYXNzIENoYW5nZUxvZ0NoZWNrZXIob2JqZWN0KToKSW5k
ZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY2hhbmdlbG9nX3VuaXR0
ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tl
cnMvY2hhbmdlbG9nX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNTE5MzgpCisrKyBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NoYW5nZWxvZ191bml0dGVzdC5weQkod29ya2lu
ZyBjb3B5KQpAQCAtMjMsOSArMjMsMTAgQEAKIAogIiIiVW5pdCB0ZXN0IGZvciBjaGFuZ2Vsb2cu
cHkuIiIiCiAKLWltcG9ydCBjaGFuZ2Vsb2cKIGltcG9ydCB1bml0dGVzdAogCitmcm9tIHdlYmtp
dHB5LnN0eWxlLmNoZWNrZXJzIGltcG9ydCBjaGFuZ2Vsb2cKKwogCiBjbGFzcyBDaGFuZ2VMb2dD
aGVja2VyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgIiIiVGVzdHMgQ2hhbmdlTG9nQ2hl
Y2tlciBjbGFzcy4iIiIKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tl
cnMvY21ha2UucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9j
aGVja2Vycy9jbWFrZS5weQkocmV2aXNpb24gMjUxOTM4KQorKysgVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9zdHlsZS9jaGVja2Vycy9jbWFrZS5weQkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUs
NyBAQAogCiAiIiJTdXBwb3J0cyBjaGVja2luZyBXZWJLaXQgc3R5bGUgaW4gY21ha2UgZmlsZXMu
KC5jbWFrZSwgQ01ha2VMaXN0cy50eHQpIiIiCiAKLWZyb20gY29tbW9uIGltcG9ydCBUYWJDaGVj
a2VyLCBtYXRjaCwgc2VhcmNoLCBzZWFyY2hJZ25vcmVjYXNlCitmcm9tIHdlYmtpdHB5LnN0eWxl
LmNoZWNrZXJzLmNvbW1vbiBpbXBvcnQgVGFiQ2hlY2tlciwgbWF0Y2gsIHNlYXJjaCwgc2VhcmNo
SWdub3JlY2FzZQogCiAKIGNsYXNzIENNYWtlQ2hlY2tlcihvYmplY3QpOgpJbmRleDogVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jbWFrZV91bml0dGVzdC5weQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NtYWtlX3VuaXR0
ZXN0LnB5CShyZXZpc2lvbiAyNTE5MzgpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxl
L2NoZWNrZXJzL2NtYWtlX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3
IEBACiAKIGltcG9ydCB1bml0dGVzdAogCi1mcm9tIGNtYWtlIGltcG9ydCBDTWFrZUNoZWNrZXIK
K2Zyb20gd2Via2l0cHkuc3R5bGUuY2hlY2tlcnMuY21ha2UgaW1wb3J0IENNYWtlQ2hlY2tlcgog
CiAKIGNsYXNzIENNYWtlQ2hlY2tlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgpJbmRleDogVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jb21tb25fdW5pdHRlc3QucHkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jb21tb25f
dW5pdHRlc3QucHkJKHJldmlzaW9uIDI1MTkzOCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
c3R5bGUvY2hlY2tlcnMvY29tbW9uX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yNCw4
ICsyNCw4IEBACiAKIGltcG9ydCB1bml0dGVzdAogCi1mcm9tIGNvbW1vbiBpbXBvcnQgQ2Fycmlh
Z2VSZXR1cm5DaGVja2VyCi1mcm9tIGNvbW1vbiBpbXBvcnQgVGFiQ2hlY2tlcgorZnJvbSB3ZWJr
aXRweS5zdHlsZS5jaGVja2Vycy5jb21tb24gaW1wb3J0IENhcnJpYWdlUmV0dXJuQ2hlY2tlcgor
ZnJvbSB3ZWJraXRweS5zdHlsZS5jaGVja2Vycy5jb21tb24gaW1wb3J0IFRhYkNoZWNrZXIKIAog
CiAjIEZJWE1FOiBUaGUgdW5pdCB0ZXN0cyBmb3IgdGhlIGNwcCwgdGV4dCwgYW5kIGNvbW1vbiBj
aGVja2VycyBzaG91bGQKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tl
cnMvY29udHJpYnV0b3JzLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
c3R5bGUvY2hlY2tlcnMvY29udHJpYnV0b3JzLnB5CShyZXZpc2lvbiAyNTE5MzgpCisrKyBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NvbnRyaWJ1dG9ycy5weQkod29ya2lu
ZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQCBpbXBvcnQgZGlmZmxpYgogaW1wb3J0IGpzb24KIGlt
cG9ydCByZQogZnJvbSBzZXRzIGltcG9ydCBTZXQKLWZyb20ganNvbmNoZWNrZXIgaW1wb3J0IEpT
T05DaGVja2VyCitmcm9tIHdlYmtpdHB5LnN0eWxlLmNoZWNrZXJzLmpzb25jaGVja2VyIGltcG9y
dCBKU09OQ2hlY2tlcgogZnJvbSB3ZWJraXRweS5jb21tb24uY29uZmlnLmNvbW1pdHRlcnMgaW1w
b3J0IENvbW1pdHRlckxpc3QKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5maWxlc3lzdGVt
IGltcG9ydCBGaWxlU3lzdGVtCiAKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUv
Y2hlY2tlcnMvY3BwLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5
bGUvY2hlY2tlcnMvY3BwLnB5CShyZXZpc2lvbiAyNTE5MzgpCisrKyBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NwcC5weQkod29ya2luZyBjb3B5KQpAQCAtNDUsOCArNDUs
OSBAQCBpbXBvcnQgc3RyaW5nCiBpbXBvcnQgc3lzCiBpbXBvcnQgdW5pY29kZWRhdGEKIAotZnJv
bSBjb21tb24gaW1wb3J0IG1hdGNoLCBzZWFyY2gsIHN1Yiwgc3VibgorZnJvbSB3ZWJraXRweS5z
dHlsZS5jaGVja2Vycy5jb21tb24gaW1wb3J0IG1hdGNoLCBzZWFyY2gsIHN1Yiwgc3VibgogZnJv
bSB3ZWJraXRweS5jb21tb24ubWVtb2l6ZWQgaW1wb3J0IG1lbW9pemVkCitmcm9tIHdlYmtpdHB5
LmNvbW1vbi51bmljb2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0IHVuaWNvZGUKIAogIyBUaGUga2V5
IHRvIHVzZSB0byBwcm92aWRlIGEgY2xhc3MgdG8gZmFrZSBsb2FkaW5nIGEgaGVhZGVyIGZpbGUu
CiBJTkNMVURFX0lPX0lOSkVDVElPTl9LRVkgPSAnaW5jbHVkZV9oZWFkZXJfaW8nCkBAIC0zNjYs
NyArMzY3LDI1IEBAIGNsYXNzIFBvc2l0aW9uKG9iamVjdCk6CiAgICAgICAgIHJldHVybiAnKCVz
LCAlcyknICUgKHNlbGYucm93LCBzZWxmLmNvbHVtbikKIAogICAgIGRlZiBfX2NtcF9fKHNlbGYs
IG90aGVyKToKLSAgICAgICAgcmV0dXJuIHNlbGYucm93Ll9fY21wX18ob3RoZXIucm93KSBvciBz
ZWxmLmNvbHVtbi5fX2NtcF9fKG90aGVyLmNvbHVtbikKKyAgICAgICAgcmV0dXJuIChzZWxmLnJv
dyAtIG90aGVyLnJvdykgb3IgKHNlbGYuY29sdW1uIC0gb3RoZXIuY29sdW1uKQorCisgICAgZGVm
IF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIHJldHVybiBzZWxmLl9fY21wX18ob3RoZXIp
ID09IDAKKworICAgIGRlZiBfX25lX18oc2VsZiwgb3RoZXIpOgorICAgICAgICByZXR1cm4gc2Vs
Zi5fX2NtcF9fKG90aGVyKSAhPSAwCisKKyAgICBkZWYgX19sdF9fKHNlbGYsIG90aGVyKToKKyAg
ICAgICAgcmV0dXJuIHNlbGYuX19jbXBfXyhvdGhlcikgPCAwCisKKyAgICBkZWYgX19sZV9fKHNl
bGYsIG90aGVyKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX19jbXBfXyhvdGhlcikgPD0gMAorCisg
ICAgZGVmIF9fZ3RfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIHJldHVybiBzZWxmLl9fY21wX18o
b3RoZXIpID4gMAorCisgICAgZGVmIF9fZ2VfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIHJldHVy
biBzZWxmLl9fY21wX18ob3RoZXIpID49IDAKIAogCiBjbGFzcyBQYXJhbWV0ZXIob2JqZWN0KToK
QEAgLTg5Nyw3ICs5MTYsNyBAQCBkZWYgY2hlY2tfZm9yX2NvcHlyaWdodChsaW5lcywgZXJyb3Ip
OgogCiAgICAgIyBXZSdsbCBzYXkgaXQgc2hvdWxkIG9jY3VyIGJ5IGxpbmUgMTAuIERvbid0IGZv
cmdldCB0aGVyZSdzIGEKICAgICAjIGR1bW15IGxpbmUgYXQgdGhlIGZyb250LgotICAgIGZvciBs
aW5lIGluIHhyYW5nZSgxLCBtaW4obGVuKGxpbmVzKSwgMTEpKToKKyAgICBmb3IgbGluZSBpbiBy
YW5nZSgxLCBtaW4obGVuKGxpbmVzKSwgMTEpKToKICAgICAgICAgaWYgcmUuc2VhcmNoKHInQ29w
eXJpZ2h0JywgbGluZXNbbGluZV0sIHJlLkkpOgogICAgICAgICAgICAgYnJlYWsKICAgICBlbHNl
OiAgICAgICAgICAgICAgICAgICAgICAgIyBtZWFucyBubyBjb3B5cmlnaHQgbGluZSB3YXMgZm91
bmQKQEAgLTE1OTYsNyArMTYxNSw3IEBAIGRlZiBkZXRlY3RfZnVuY3Rpb25zKGNsZWFuX2xpbmVz
LCBsaW5lX24KICAgICAgICAgcmV0dXJuCiAKICAgICBqb2luZWRfbGluZSA9ICcnCi0gICAgZm9y
IHN0YXJ0X2xpbmVfbnVtYmVyIGluIHhyYW5nZShsaW5lX251bWJlciwgY2xlYW5fbGluZXMubnVt
X2xpbmVzKCkpOgorICAgIGZvciBzdGFydF9saW5lX251bWJlciBpbiByYW5nZShsaW5lX251bWJl
ciwgY2xlYW5fbGluZXMubnVtX2xpbmVzKCkpOgogICAgICAgICBzdGFydF9saW5lID0gY2xlYW5f
bGluZXMuZWxpZGVkW3N0YXJ0X2xpbmVfbnVtYmVyXQogICAgICAgICBqb2luZWRfbGluZSArPSAn
ICcgKyBzdGFydF9saW5lLmxzdHJpcCgpCiAgICAgICAgIGJvZHlfbWF0Y2ggPSBzZWFyY2gocid7
fDsnLCBzdGFydF9saW5lKQpAQCAtMzM2OCw3ICszMzg3LDcgQEAgZGVmIGNoZWNrX2xhbmd1YWdl
KGZpbGVuYW1lLCBjbGVhbl9saW5lcwogICAgICAgICBuZXN0ZWRfYW5nbGVfYnJhY2tldF9jb3Vu
dCA9IDEKICAgICAgICAgcHJldmlvdXNfY2xvc2luZ19hbmdsZV9icmFja2V0X2luZGV4ID0gLTEK
ICAgICAgICAgY2xvc2luZ19hbmdsZV9icmFja2V0X2luZGV4ID0gOSAjIFVzZWQgaWYgb25seSBv
bmUgcGFpciBvZiBhbmdsZSBicmFja2V0cy4KLSAgICAgICAgZm9yIGkgaW4geHJhbmdlKDEwLCBs
ZW4obWF0Y2hfbGluZSkgLSAxKToKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMTAsIGxlbihtYXRj
aF9saW5lKSAtIDEpOgogICAgICAgICAgICAgaWYgbWF0Y2hfbGluZVtpXSA9PSAnPCc6CiAgICAg
ICAgICAgICAgICAgbmVzdGVkX2FuZ2xlX2JyYWNrZXRfY291bnQgKz0gMQogICAgICAgICAgICAg
aWYgbWF0Y2hfbGluZVtpXSA9PSAnPic6CkBAIC0zMzgxLDcgKzM0MDAsNyBAQCBkZWYgY2hlY2tf
bGFuZ3VhZ2UoZmlsZW5hbWUsIGNsZWFuX2xpbmVzCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICdSZXRhaW5QdHI8PiBzaG91bGQgbmV2ZXIgY29udGFpbiBhIHR5cGUgd2l0aCBcJypcJy4gQ29y
cmVjdDogUmV0YWluUHRyPE5TU3RyaW5nPiwgUmV0YWluUHRyPENGU3RyaW5nUmVmPi4nKQogICAg
ICAgICAgICAgICAgIGJyZWFrCiAKLSAgICBtYXRjaGVkID0gcmUuY29tcGlsZSgnXlxzKlNPRlRf
TElOS18oUFJJVkFURV8pP0ZSQU1FV09SSy4qXCgoXFMrKVwpJykuc2VhcmNoKGxpbmUpCisgICAg
bWF0Y2hlZCA9IHJlLmNvbXBpbGUocideXHMqU09GVF9MSU5LXyhQUklWQVRFXyk/RlJBTUVXT1JL
LipcKChcUyspXCknKS5zZWFyY2gobGluZSkKICAgICBpZiBtYXRjaGVkOgogICAgICAgICBmcmFt
ZXdvcmtfbmFtZSA9IG1hdGNoZWQuZ3JvdXAoMikKICAgICAgICAgaWYgZmlsZV9leHRlbnNpb24g
PT0gJ2gnIGFuZCBub3Qgc2VhcmNoKHInXlxzKlNPRlRfTElOS18oUFJJVkFURV8pP0ZSQU1FV09S
S19GT1JfSEVBREVSLipcKCcsIGxpbmUpOgpAQCAtMzg4Miw3ICszOTAxLDcgQEAgZGVmIGNoZWNr
X2Zvcl9pbmNsdWRlX3doYXRfeW91X3VzZShmaWxlbgogICAgIHJlcXVpcmVkID0ge30gICMgQSBt
YXAgb2YgaGVhZGVyIG5hbWUgdG8gbGluZV9udW1iZXIgYW5kIHRoZSB0ZW1wbGF0ZSBlbnRpdHku
CiAgICAgICAgICMgRXhhbXBsZSBvZiByZXF1aXJlZDogeyAnPGZ1bmN0aW9uYWw+JzogKDEyMTks
ICdsZXNzPD4nKSB9CiAKLSAgICBmb3IgbGluZV9udW1iZXIgaW4geHJhbmdlKGNsZWFuX2xpbmVz
Lm51bV9saW5lcygpKToKKyAgICBmb3IgbGluZV9udW1iZXIgaW4gcmFuZ2UoY2xlYW5fbGluZXMu
bnVtX2xpbmVzKCkpOgogICAgICAgICBsaW5lID0gY2xlYW5fbGluZXMuZWxpZGVkW2xpbmVfbnVt
YmVyXQogICAgICAgICBpZiBub3QgbGluZSBvciBsaW5lWzBdID09ICcjJzoKICAgICAgICAgICAg
IGNvbnRpbnVlCkBAIC0zOTI1LDcgKzM5NDQsNyBAQCBkZWYgY2hlY2tfZm9yX2luY2x1ZGVfd2hh
dF95b3VfdXNlKGZpbGVuCiAKICAgICAjIGluY2x1ZGVfc3RhdGUgaXMgbW9kaWZpZWQgZHVyaW5n
IGl0ZXJhdGlvbiwgc28gd2UgaXRlcmF0ZSBvdmVyIGEgY29weSBvZgogICAgICMgdGhlIGtleXMu
Ci0gICAgZm9yIGhlYWRlciBpbiBpbmNsdWRlX3N0YXRlLmtleXMoKTogICMgTk9MSU5UCisgICAg
Zm9yIGhlYWRlciBpbiBsaXN0KGluY2x1ZGVfc3RhdGUua2V5cygpKTogICMgTk9MSU5UCiAgICAg
ICAgIChzYW1lX21vZHVsZSwgY29tbW9uX3BhdGgpID0gZmlsZXNfYmVsb25nX3RvX3NhbWVfbW9k
dWxlKGFic19maWxlbmFtZSwgaGVhZGVyKQogICAgICAgICBmdWxscGF0aCA9IGNvbW1vbl9wYXRo
ICsgaGVhZGVyCiAgICAgICAgIGlmIHNhbWVfbW9kdWxlIGFuZCB1cGRhdGVfaW5jbHVkZV9zdGF0
ZShmdWxscGF0aCwgaW5jbHVkZV9zdGF0ZSk6CkBAIC00MDUwLDcgKzQwNjksNyBAQCBkZWYgX3By
b2Nlc3NfbGluZXMoZmlsZW5hbWUsIGZpbGVfZXh0ZW5zCiAgICAgZmlsZV9zdGF0ZSA9IF9GaWxl
U3RhdGUoY2xlYW5fbGluZXMsIGZpbGVfZXh0ZW5zaW9uKQogICAgIGVudW1fc3RhdGUgPSBfRW51
bVN0YXRlKCkKICAgICBhc21fc3RhdGUgPSBfSW5saW5lQVNNU3RhdGUoKQotICAgIGZvciBsaW5l
IGluIHhyYW5nZShjbGVhbl9saW5lcy5udW1fbGluZXMoKSk6CisgICAgZm9yIGxpbmUgaW4gcmFu
Z2UoY2xlYW5fbGluZXMubnVtX2xpbmVzKCkpOgogICAgICAgICBwcm9jZXNzX2xpbmUoZmlsZW5h
bWUsIGZpbGVfZXh0ZW5zaW9uLCBjbGVhbl9saW5lcywgbGluZSwKICAgICAgICAgICAgICAgICAg
ICAgIGluY2x1ZGVfc3RhdGUsIGZ1bmN0aW9uX3N0YXRlLCBjbGFzc19zdGF0ZSwgZmlsZV9zdGF0
ZSwKICAgICAgICAgICAgICAgICAgICAgIGVudW1fc3RhdGUsIGFzbV9zdGF0ZSwgZXJyb3IpCklu
ZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NwcF91bml0dGVzdC5w
eQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2Nw
cF91bml0dGVzdC5weQkocmV2aXNpb24gMjUxOTM4KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9zdHlsZS9jaGVja2Vycy9jcHBfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTQwLDkg
KzQwLDEwIEBAIGltcG9ydCBvcwogaW1wb3J0IHJhbmRvbQogaW1wb3J0IHJlCiBpbXBvcnQgdW5p
dHRlc3QKLWltcG9ydCBjcHAgYXMgY3BwX3N0eWxlCi1mcm9tIGNwcCBpbXBvcnQgQ3BwQ2hlY2tl
cgotZnJvbSAuLmZpbHRlciBpbXBvcnQgRmlsdGVyQ29uZmlndXJhdGlvbgorZnJvbSB3ZWJraXRw
eS5jb21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCBkZWNvZGVfaWZfbmVjZXNzYXJ5
Citmcm9tIHdlYmtpdHB5LnN0eWxlLmNoZWNrZXJzIGltcG9ydCBjcHAgYXMgY3BwX3N0eWxlCitm
cm9tIHdlYmtpdHB5LnN0eWxlLmNoZWNrZXJzLmNwcCBpbXBvcnQgQ3BwQ2hlY2tlcgorZnJvbSB3
ZWJraXRweS5zdHlsZS5maWx0ZXIgaW1wb3J0IEZpbHRlckNvbmZpZ3VyYXRpb24KIAogCiAjIFRo
aXMgY2xhc3Mgd29ya3MgYXMgYW4gZXJyb3IgY29sbGVjdG9yIGFuZCByZXBsYWNlcyBjcHBfc3R5
bGUuRXJyb3IKQEAgLTI0NDcsNyArMjQ0OCw3IEBAIGNsYXNzIENwcFN0eWxlVGVzdChDcHBTdHls
ZVRlc3RCYXNlKToKICAgICAgICAgZGVmIGRvX3Rlc3Qoc2VsZiwgcmF3X2J5dGVzLCBoYXNfaW52
YWxpZF91dGY4KToKICAgICAgICAgICAgIGVycm9yX2NvbGxlY3RvciA9IEVycm9yQ29sbGVjdG9y
KHNlbGYuYXNzZXJ0VHJ1ZSkKICAgICAgICAgICAgIHNlbGYucHJvY2Vzc19maWxlX2RhdGEoJ2Zv
by5jcHAnLCAnY3BwJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pY29k
ZShyYXdfYnl0ZXMsICd1dGY4JywgJ3JlcGxhY2UnKS5zcGxpdCgnXG4nKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZGVjb2RlX2lmX25lY2Vzc2FyeShyYXdfYnl0ZXMsIGVu
Y29kaW5nPSd1dGY4JywgZXJyb3JzPSdyZXBsYWNlJykuc3BsaXQoJ1xuJyksCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX2NvbGxlY3RvcikKICAgICAgICAgICAgICMg
VGhlIHdhcm5pbmcgYXBwZWFycyBvbmx5IG9uY2UuCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKApAQCAtMjQ1NywxMiArMjQ1OCwxMiBAQCBjbGFzcyBDcHBTdHlsZVRlc3QoQ3BwU3R5bGVU
ZXN0QmFzZSk6CiAgICAgICAgICAgICAgICAgICAgICcgKG9yIFVuaWNvZGUgcmVwbGFjZW1lbnQg
Y2hhcmFjdGVyKS4nCiAgICAgICAgICAgICAgICAgICAgICcgIFtyZWFkYWJpbGl0eS91dGY4XSBb
NV0nKSkKIAotICAgICAgICBkb190ZXN0KHNlbGYsICdIZWxsbyB3b3JsZFxuJywgRmFsc2UpCi0g
ICAgICAgIGRvX3Rlc3Qoc2VsZiwgJ1x4ZTlceDhlXHhiZFxuJywgRmFsc2UpCi0gICAgICAgIGRv
X3Rlc3Qoc2VsZiwgJ1x4ZTl4XHg4ZVx4YmRcbicsIFRydWUpCisgICAgICAgIGRvX3Rlc3Qoc2Vs
ZiwgYidIZWxsbyB3b3JsZFxuJywgRmFsc2UpCisgICAgICAgIGRvX3Rlc3Qoc2VsZiwgYidceGU5
XHg4ZVx4YmRcbicsIEZhbHNlKQorICAgICAgICBkb190ZXN0KHNlbGYsIGInXHhlOXhceDhlXHhi
ZFxuJywgVHJ1ZSkKICAgICAgICAgIyBUaGlzIGlzIHRoZSBlbmNvZGluZyBvZiB0aGUgcmVwbGFj
ZW1lbnQgY2hhcmFjdGVyIGl0c2VsZiAod2hpY2gKICAgICAgICAgIyB5b3UgY2FuIHNlZSBieSBl
dmFsdWF0aW5nIGNvZGVjcy5nZXRlbmNvZGVyKCd1dGY4JykodSdcdWZmZmQnKSkuCi0gICAgICAg
IGRvX3Rlc3Qoc2VsZiwgJ1x4ZWZceGJmXHhiZFxuJywgVHJ1ZSkKKyAgICAgICAgZG9fdGVzdChz
ZWxmLCBiJ1x4ZWZceGJmXHhiZFxuJywgVHJ1ZSkKIAogICAgIGRlZiB0ZXN0X2lzX2JsYW5rX2xp
bmUoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjcHBfc3R5bGUuaXNfYmxhbmtfbGlu
ZSgnJykpCkBAIC0yNzg2LDcgKzI3ODcsNyBAQCBjbGFzcyBDcHBTdHlsZVRlc3QoQ3BwU3R5bGVU
ZXN0QmFzZSk6CiAgICAgICAgICAgICBvdGhlcl9kZWNsX3NwZWNzID0gW3JhbmRvbS5jaG9pY2Uo
cXVhbGlmaWVycyksIHJhbmRvbS5jaG9pY2Uoc2lnbnMpLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByYW5kb20uY2hvaWNlKHR5cGVzKV0KICAgICAgICAgICAgICMgcmVtb3ZlIE5v
bmUKLSAgICAgICAgICAgIG90aGVyX2RlY2xfc3BlY3MgPSBmaWx0ZXIobGFtYmRhIHg6IHggaXMg
bm90IE5vbmUsIG90aGVyX2RlY2xfc3BlY3MpCisgICAgICAgICAgICBvdGhlcl9kZWNsX3NwZWNz
ID0gbGlzdChmaWx0ZXIobGFtYmRhIHg6IHggaXMgbm90IE5vbmUsIG90aGVyX2RlY2xfc3BlY3Mp
KQogCiAgICAgICAgICAgICAjIHNodWZmbGUKICAgICAgICAgICAgIHJhbmRvbS5zaHVmZmxlKG90
aGVyX2RlY2xfc3BlY3MpCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNr
ZXJzL2pzLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hl
Y2tlcnMvanMucHkJKHJldmlzaW9uIDI1MTkzOCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
c3R5bGUvY2hlY2tlcnMvanMucHkJKHdvcmtpbmcgY29weSkKQEAgLTMwLDggKzMwLDggQEAgU3Vw
cG9ydHMgY2hlY2tpbmcgV2ViS2l0IHN0eWxlIGluIEphdmFTYwogVGhpcyBjaGVja2VyIGlzIG9u
bHkgdXNlZCB0byBjaGVjayBXZWJJbnNwZWN0b3IgSmF2YVNjcmlwdCBmaWxlcy4KICIiIgogCi1m
cm9tIGNvbW1vbiBpbXBvcnQgVGFiQ2hlY2tlcgogaW1wb3J0IHJlCitmcm9tIHdlYmtpdHB5LnN0
eWxlLmNoZWNrZXJzLmNvbW1vbiBpbXBvcnQgVGFiQ2hlY2tlcgogCiAKIGNsYXNzIEpTQ2hlY2tl
cihvYmplY3QpOgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9q
c191bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxl
L2NoZWNrZXJzL2pzX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNTE5MzgpCisrKyBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2pzX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkp
CkBAIC0zMSw3ICszMSw3IEBACiAKIGltcG9ydCB1bml0dGVzdAogCi1mcm9tIGpzIGltcG9ydCBK
U0NoZWNrZXIKK2Zyb20gd2Via2l0cHkuc3R5bGUuY2hlY2tlcnMuanMgaW1wb3J0IEpTQ2hlY2tl
cgogCiAKIGNsYXNzIEpTVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgpJbmRleDogVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9qc29uY2hlY2tlci5weQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2pzb25jaGVja2VyLnB5
CShyZXZpc2lvbiAyNTE5MzgpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNr
ZXJzL2pzb25jaGVja2VyLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw2IEBACiAKIGlt
cG9ydCBqc29uCiBpbXBvcnQgcmUKLWZyb20gc2V0cyBpbXBvcnQgU2V0CiAKIAogY2xhc3MgSlNP
TkNoZWNrZXIob2JqZWN0KToKQEAgLTcwLDcgKzY5LDcgQEAgY2xhc3MgSlNPTkZlYXR1cmVzQ2hl
Y2tlcihKU09OQ2hlY2tlcik6CiAgICAgICAgICAgICAgICAgc2VsZi5faGFuZGxlX3N0eWxlX2Vy
cm9yKDAsICdqc29uL3N5bnRheCcsIDUsICciZmVhdHVyZXMiIGtleSBub3QgZm91bmQsIHRoZSBr
ZXkgaXMgbWFuZGF0b3J5LicpCiAgICAgICAgICAgICAgICAgcmV0dXJuCiAKLSAgICAgICAgICAg
IHNwZWNpZmljYXRpb25fbmFtZV9zZXQgPSBTZXQoKQorICAgICAgICAgICAgc3BlY2lmaWNhdGlv
bl9uYW1lX3NldCA9IHNldCgpCiAgICAgICAgICAgICBpZiAnc3BlY2lmaWNhdGlvbicgaW4gZmVh
dHVyZXNfZGVmaW5pdGlvbjoKICAgICAgICAgICAgICAgICBwcmV2aW91c19zcGVjaWZpY2F0aW9u
X25hbWUgPSAnJwogICAgICAgICAgICAgICAgIGZvciBzcGVjaWZpY2F0aW9uX29iamVjdCBpbiBm
ZWF0dXJlc19kZWZpbml0aW9uWydzcGVjaWZpY2F0aW9uJ106CkluZGV4OiBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2pzb25jaGVja2VyX3VuaXR0ZXN0LnB5Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvanNvbmNoZWNrZXJf
dW5pdHRlc3QucHkJKHJldmlzaW9uIDI1MTkzOCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
c3R5bGUvY2hlY2tlcnMvanNvbmNoZWNrZXJfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAg
LTI0LDcgKzI0LDcgQEAKIAogaW1wb3J0IHVuaXR0ZXN0CiAKLWltcG9ydCBqc29uY2hlY2tlcgor
ZnJvbSB3ZWJraXRweS5zdHlsZS5jaGVja2VycyBpbXBvcnQganNvbmNoZWNrZXIKIAogCiBjbGFz
cyBNb2NrRXJyb3JIYW5kbGVyKG9iamVjdCk6CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3N0eWxlL2NoZWNrZXJzL2pzdGVzdF91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2pzdGVzdF91bml0dGVzdC5weQkocmV2aXNp
b24gMjUxOTM4KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9qc3Rl
c3RfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogaW1wb3J0
IHVuaXR0ZXN0CiAKLWZyb20ganN0ZXN0IGltcG9ydCBtYXBfZnVuY3Rpb25zX3RvX2RpY3QKK2Zy
b20gd2Via2l0cHkuc3R5bGUuY2hlY2tlcnMuanN0ZXN0IGltcG9ydCBtYXBfZnVuY3Rpb25zX3Rv
X2RpY3QKIAogCiBjbGFzcyBKU1Rlc3RDaGVja2VyVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2Up
OgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9tZXNzYWdlc2lu
LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMv
bWVzc2FnZXNpbi5weQkocmV2aXNpb24gMjUxOTM4KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9zdHlsZS9jaGVja2Vycy9tZXNzYWdlc2luLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsy
NSw3IEBACiAiIiJDaGVja3MgV2ViS2l0IHN0eWxlIGZvciAubWVzc2FnZXMuaW4gZmlsZXMuIiIi
CiAKIGltcG9ydCByZQotZnJvbSBjb21tb24gaW1wb3J0IFRhYkNoZWNrZXIKK2Zyb20gd2Via2l0
cHkuc3R5bGUuY2hlY2tlcnMuY29tbW9uIGltcG9ydCBUYWJDaGVja2VyCiAKIAogY2xhc3MgTWVz
c2FnZXNJbkNoZWNrZXIob2JqZWN0KToKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5
bGUvY2hlY2tlcnMvbWVzc2FnZXNpbl91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL21lc3NhZ2VzaW5fdW5pdHRlc3QucHkJKHJl
dmlzaW9uIDI1MTkzOCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMv
bWVzc2FnZXNpbl91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAog
CiBpbXBvcnQgdW5pdHRlc3QKIAotZnJvbSBtZXNzYWdlc2luIGltcG9ydCBNZXNzYWdlc0luQ2hl
Y2tlcgorZnJvbSB3ZWJraXRweS5zdHlsZS5jaGVja2Vycy5tZXNzYWdlc2luIGltcG9ydCBNZXNz
YWdlc0luQ2hlY2tlcgogCiAKIGNsYXNzIE1lc3NhZ2VzSW5DaGVja2VyU3R5bGVUZXN0Q2FzZSh1
bml0dGVzdC5UZXN0Q2FzZSk6CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2No
ZWNrZXJzL3BuZ191bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L3N0eWxlL2NoZWNrZXJzL3BuZ191bml0dGVzdC5weQkocmV2aXNpb24gMjUxOTM4KQorKysg
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9wbmdfdW5pdHRlc3QucHkJKHdv
cmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogaW1wb3J0IHVuaXR0ZXN0CiAKLWZyb20g
cG5nIGltcG9ydCBQTkdDaGVja2VyCitmcm9tIHdlYmtpdHB5LnN0eWxlLmNoZWNrZXJzLnBuZyBp
bXBvcnQgUE5HQ2hlY2tlcgogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmZpbGVzeXN0ZW1f
bW9jayBpbXBvcnQgTW9ja0ZpbGVTeXN0ZW0KIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5z
eXN0ZW1ob3N0X21vY2sgaW1wb3J0IE1vY2tTeXN0ZW1Ib3N0CiAKSW5kZXg6IFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvcHl0aG9uLnB5Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvcHl0aG9uLnB5CShyZXZpc2lvbiAyNTE5
MzgpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL3B5dGhvbi5weQko
d29ya2luZyBjb3B5KQpAQCAtMjQsOSArMjQsOSBAQAogIiIiU3VwcG9ydHMgY2hlY2tpbmcgV2Vi
S2l0IHN0eWxlIGluIFB5dGhvbiBmaWxlcy4iIiIKIAogaW1wb3J0IHJlCi1mcm9tIFN0cmluZ0lP
IGltcG9ydCBTdHJpbmdJTwogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZmlsZXN5c3Rl
bSBpbXBvcnQgRmlsZVN5c3RlbQorZnJvbSB3ZWJraXRweS5jb21tb24udW5pY29kZV9jb21wYXRp
YmlsaXR5IGltcG9ydCBTdHJpbmdJTwogZnJvbSB3ZWJraXRweS5jb21tb24ud2Via2l0X2ZpbmRl
ciBpbXBvcnQgV2ViS2l0RmluZGVyCiBmcm9tIHdlYmtpdHB5LnRoaXJkcGFydHkuYXV0b2luc3Rh
bGxlZCBpbXBvcnQgcGVwOAogZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5LmF1dG9pbnN0YWxsZWQu
cHlsaW50IGltcG9ydCBsaW50CkBAIC03MSwxMCArNzEsMTEgQEAgY2xhc3MgUHl0aG9uQ2hlY2tl
cihvYmplY3QpOgogICAgICAgICAjIGZpbHRlcmluZyB3YXJuaW5ncyB1c2luZyB0aGUgcnVsZXMg
aW4gc3R5bGUvY2hlY2tlci5weSBpbnN0ZWFkLgogICAgICAgICBvdXRwdXQgPSBweWxpbnRlci5y
dW4oWyctRScsIHNlbGYuX2ZpbGVfcGF0aF0pCiAKLSAgICAgICAgbGludF9yZWdleCA9IHJlLmNv
bXBpbGUoJyhbXjpdKyk6KFteOl0rKTogXFsoW15dXSspXF0gKC4qKScpCisgICAgICAgIGxpbnRf
cmVnZXggPSByZS5jb21waWxlKHInKFteOl0rKTooW146XSspOiBcWyhbXl1dKylcXSAoLiopJykK
ICAgICAgICAgZm9yIGVycm9yIGluIG91dHB1dC5nZXR2YWx1ZSgpLnNwbGl0bGluZXMoKToKICAg
ICAgICAgICAgIG1hdGNoX29iaiA9IGxpbnRfcmVnZXgubWF0Y2goZXJyb3IpCi0gICAgICAgICAg
ICBhc3NlcnQobWF0Y2hfb2JqKQorICAgICAgICAgICAgaWYgbm90IG1hdGNoX29iajoKKyAgICAg
ICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgbGluZV9udW1iZXIgPSBpbnQobWF0Y2hf
b2JqLmdyb3VwKDIpKQogICAgICAgICAgICAgY2F0ZWdvcnlfYW5kX21ldGhvZCA9IG1hdGNoX29i
ai5ncm91cCgzKS5zcGxpdCgnLCAnKQogICAgICAgICAgICAgY2F0ZWdvcnkgPSAncHlsaW50Lycg
KyAoY2F0ZWdvcnlfYW5kX21ldGhvZFswXSkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
c3R5bGUvY2hlY2tlcnMvcHl0aG9uX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvcHl0aG9uX3VuaXR0ZXN0LnB5CShyZXZpc2lv
biAyNTE5MzgpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL3B5dGhv
bl91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogaW1wb3J0IG9z
CiBpbXBvcnQgdW5pdHRlc3QKIAotZnJvbSBweXRob24gaW1wb3J0IFB5dGhvbkNoZWNrZXIKK2Zy
b20gd2Via2l0cHkuc3R5bGUuY2hlY2tlcnMucHl0aG9uIGltcG9ydCBQeXRob25DaGVja2VyCiAK
IAogY2xhc3MgUHl0aG9uQ2hlY2tlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtNTksNyAr
NTksNyBAQCBjbGFzcyBQeXRob25DaGVja2VyVGVzdCh1bml0dGVzdC5UZXN0Q2FzCiAKICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChlcnJvcnMsIFsKICAgICAgICAgICAgICg0LCAicGVwOC9XMjkx
IiwgNSwgInRyYWlsaW5nIHdoaXRlc3BhY2UiKSwKLSAgICAgICAgICAgICg0LCAicHlsaW50L0Uw
NjAyIiwgNSwgIlVuZGVmaW5lZCB2YXJpYWJsZSAnZXJyb3InIiksCisgICAgICAgICAgICAoNCwg
InB5bGludC9FMDYwMih1bmRlZmluZWQtdmFyaWFibGUpIiwgNSwgIltdIFVuZGVmaW5lZCB2YXJp
YWJsZSAnZXJyb3InIiksCiAgICAgICAgICAgICBdKQogCiAgICAgZGVmIHRlc3RfcHlsaW50X2Zh
bHNlX3Bvc2l0aXZlcyhzZWxmKToKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUv
Y2hlY2tlcnMvcHl0aG9uX3VuaXR0ZXN0X2lucHV0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvcHl0aG9uX3VuaXR0ZXN0X2lucHV0LnB5CShy
ZXZpc2lvbiAyNTE5MzgpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJz
L3B5dGhvbl91bml0dGVzdF9pbnB1dC5weQkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAK
ICMgVGhpcyBmaWxlIGlzIHNhbXBsZSBpbnB1dCBmb3IgcHl0aG9uX3VuaXR0ZXN0LnB5IGFuZCBp
bmNsdWRlcyB0d28KICMgcHJvYmxlbXMsIG9uZSB0aGF0IHdpbGwgZ2VuZXJhdGUgYSBQRVAtOCB3
YXJuaW5nIGZvciB0cmFpbGluZyB3aGl0ZXNwYWNlCiAjIGFuZCBvbmUgdGhhdCB3aWxsIGdlbmVy
YXRlIGEgcHlsaW50IGVycm9yIGZvciBhbiB1bmRlZmluZWQgdmFyaWFibGUuCi1wcmludCBlcnJv
cigpIAorcHJpbnQoZXJyb3IoKSkgCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxl
L2NoZWNrZXJzL3Rlc3RfZXhwZWN0YXRpb25zLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvdGVzdF9leHBlY3RhdGlvbnMucHkJKHJldmlzaW9u
IDI1MTkzOCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvdGVzdF9l
eHBlY3RhdGlvbnMucHkJKHdvcmtpbmcgY29weSkKQEAgLTM0LDkgKzM0LDkgQEAgaW1wb3J0IG9z
CiBpbXBvcnQgcmUKIGltcG9ydCBzeXMKIAotZnJvbSBjb21tb24gaW1wb3J0IFRhYkNoZWNrZXIK
IGZyb20gd2Via2l0cHkuY29tbW9uLmhvc3QgaW1wb3J0IEhvc3QKIGZyb20gd2Via2l0cHkubGF5
b3V0X3Rlc3RzLm1vZGVscyBpbXBvcnQgdGVzdF9leHBlY3RhdGlvbnMKK2Zyb20gd2Via2l0cHku
c3R5bGUuY2hlY2tlcnMuY29tbW9uIGltcG9ydCBUYWJDaGVja2VyCiBmcm9tIHdlYmtpdHB5LnN0
eWxlLmVycm9yX2hhbmRsZXJzIGltcG9ydCBEZWZhdWx0U3R5bGVFcnJvckhhbmRsZXIKIAogCklu
ZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL3Rlc3RfZXhwZWN0YXRp
b25zX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5
bGUvY2hlY2tlcnMvdGVzdF9leHBlY3RhdGlvbnNfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI1MTkz
OCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvdGVzdF9leHBlY3Rh
dGlvbnNfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTMwLDggKzMwLDggQEAgaW1wb3J0
IG9zCiBpbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKIAotZnJvbSB0ZXN0X2V4cGVjdGF0aW9u
cyBpbXBvcnQgVGVzdEV4cGVjdGF0aW9uc0NoZWNrZXIKIGZyb20gd2Via2l0cHkuY29tbW9uLmhv
c3RfbW9jayBpbXBvcnQgTW9ja0hvc3QKK2Zyb20gd2Via2l0cHkuc3R5bGUuY2hlY2tlcnMudGVz
dF9leHBlY3RhdGlvbnMgaW1wb3J0IFRlc3RFeHBlY3RhdGlvbnNDaGVja2VyCiAKIAogY2xhc3Mg
RXJyb3JDb2xsZWN0b3Iob2JqZWN0KToKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5
bGUvY2hlY2tlcnMvdGV4dC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3N0eWxlL2NoZWNrZXJzL3RleHQucHkJKHJldmlzaW9uIDI1MTkzOCkKKysrIFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvdGV4dC5weQkod29ya2luZyBjb3B5KQpAQCAtMjks
NyArMjksNyBAQAogCiAiIiJDaGVja3MgV2ViS2l0IHN0eWxlIGZvciB0ZXh0IGZpbGVzLiIiIgog
Ci1mcm9tIGNvbW1vbiBpbXBvcnQgVGFiQ2hlY2tlcgorZnJvbSB3ZWJraXRweS5zdHlsZS5jaGVj
a2Vycy5jb21tb24gaW1wb3J0IFRhYkNoZWNrZXIKIAogCiBjbGFzcyBUZXh0Q2hlY2tlcihvYmpl
Y3QpOgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy90ZXh0X3Vu
aXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hl
Y2tlcnMvdGV4dF91bml0dGVzdC5weQkocmV2aXNpb24gMjUxOTM4KQorKysgVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy90ZXh0X3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkp
CkBAIC0zMCw4ICszMCw4IEBACiAKIGltcG9ydCB1bml0dGVzdAogCi1pbXBvcnQgdGV4dCBhcyB0
ZXh0X3N0eWxlCi1mcm9tIHRleHQgaW1wb3J0IFRleHRDaGVja2VyCitmcm9tIHdlYmtpdHB5LnN0
eWxlLmNoZWNrZXJzIGltcG9ydCB0ZXh0IGFzIHRleHRfc3R5bGUKK2Zyb20gd2Via2l0cHkuc3R5
bGUuY2hlY2tlcnMudGV4dCBpbXBvcnQgVGV4dENoZWNrZXIKIAogCiBjbGFzcyBUZXh0U3R5bGVU
ZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3N0eWxlL2NoZWNrZXJzL3dhdGNobGlzdF91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL3dhdGNobGlzdF91bml0dGVzdC5weQko
cmV2aXNpb24gMjUxOTM4KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vy
cy93YXRjaGxpc3RfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTMzLDggKzMzLDcgQEAK
IAogaW1wb3J0IHVuaXR0ZXN0CiAKLQotaW1wb3J0IHdhdGNobGlzdAorZnJvbSB3ZWJraXRweS5z
dHlsZS5jaGVja2VycyBpbXBvcnQgd2F0Y2hsaXN0CiAKIAogY2xhc3MgTW9ja0Vycm9ySGFuZGxl
cihvYmplY3QpOgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy94
Y29kZXByb2pfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9zdHlsZS9jaGVja2Vycy94Y29kZXByb2pfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI1MTkzOCkK
KysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMveGNvZGVwcm9qX3VuaXR0
ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAiIiJVbml0IHRlc3QgZm9y
IHhjb2RlcHJvai5weS4iIiIKIAogaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgeGNvZGVwcm9qCitm
cm9tIHdlYmtpdHB5LnN0eWxlLmNoZWNrZXJzIGltcG9ydCB4Y29kZXByb2oKIAogCiBjbGFzcyBU
ZXN0RXJyb3JIYW5kbGVyKG9iamVjdCk6CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0
eWxlL2NoZWNrZXJzL3htbF91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL3htbF91bml0dGVzdC5weQkocmV2aXNpb24gMjUxOTM4
KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy94bWxfdW5pdHRlc3Qu
cHkJKHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDcgQEAKICIiIlVuaXQgdGVzdCBmb3IgeG1s
LnB5LiIiIgogCiBpbXBvcnQgdW5pdHRlc3QKLWltcG9ydCB4bWwKK2Zyb20gd2Via2l0cHkuc3R5
bGUuY2hlY2tlcnMgaW1wb3J0IHhtbAogCiAKIGNsYXNzIE1vY2tFcnJvckhhbmRsZXIob2JqZWN0
KToKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9fX2luaXRfXy5weQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvX19pbml0X18u
cHkJKHJldmlzaW9uIDI1MTkzOCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0
eS9fX2luaXRfXy5weQkod29ya2luZyBjb3B5KQpAQCAtMjM5LDcgKzIzOSwxNiBAQCBjbGFzcyBB
dXRvaW5zdGFsbEltcG9ydEhvb2sob2JqZWN0KToKICAgICAgICAgICAgICAgICBmaWxlc190b19y
ZW1vdmUgPSBbJ3Rlc3QvZGF0YS93cml0ZV9wcm90ZWN0ZWRfZmlsZS50eHQnXQogICAgICAgICAg
ICAgaW5zdGFsbGVyLmluc3RhbGwoImh0dHBzOi8vZmlsZXMucHl0aG9uaG9zdGVkLm9yZy9wYWNr
YWdlcy9zb3VyY2UvbC9sb2dpbGFiLWNvbW1vbi9sb2dpbGFiLWNvbW1vbi0wLjU4LjEudGFyLmd6
IiwgdXJsX3N1YnBhdGg9ImxvZ2lsYWItY29tbW9uLTAuNTguMSIsIHRhcmdldF9uYW1lPSJsb2dp
bGFiL2NvbW1vbiIsIGZpbGVzX3RvX3JlbW92ZT1maWxlc190b19yZW1vdmUpCiAgICAgICAgICAg
ICBpbnN0YWxsZXIuaW5zdGFsbCgiaHR0cHM6Ly9maWxlcy5weXRob25ob3N0ZWQub3JnL3BhY2th
Z2VzL3NvdXJjZS9sL2xvZ2lsYWItYXN0bmcvbG9naWxhYi1hc3RuZy0wLjI0LjEudGFyLmd6Iiwg
dXJsX3N1YnBhdGg9ImxvZ2lsYWItYXN0bmctMC4yNC4xIiwgdGFyZ2V0X25hbWU9ImxvZ2lsYWIv
YXN0bmciKQotICAgICAgICAgICAgaW5zdGFsbGVyLmluc3RhbGwoJ2h0dHBzOi8vZmlsZXMucHl0
aG9uaG9zdGVkLm9yZy9wYWNrYWdlcy9zb3VyY2UvcC9weWxpbnQvcHlsaW50LTAuMjUuMi50YXIu
Z3onLCB1cmxfc3VicGF0aD0icHlsaW50LTAuMjUuMiIsIHRhcmdldF9uYW1lPSJweWxpbnQiKQor
ICAgICAgICAgICAgaW5zdGFsbGVyLmluc3RhbGwoImh0dHBzOi8vZmlsZXMucHl0aG9uaG9zdGVk
Lm9yZy9wYWNrYWdlcy83NS9iZi9mMGFmNWZjYzZkZWI1M2IzYTQ4MGMzNDg3NjMyZWViNjMyNGEz
YWU1MWNkMjAxNjE4NjU4NTNmODdjMzEvYXN0cm9pZC0xLjYuNi50YXIuZ3oiLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdXJsX3N1YnBhdGg9ImFzdHJvaWQtMS42LjYvYXN0cm9pZCIp
CisgICAgICAgICAgICBpbnN0YWxsZXIuaW5zdGFsbCgiaHR0cHM6Ly9maWxlcy5weXRob25ob3N0
ZWQub3JnL3BhY2thZ2VzLzA3LzNmL2EzZDY4N2Y4M2M3ZDQ0OTcwZjcwZmYwNDAwNjc3NzQ2Yzg4
NjBiMTFmMGMwOGY2YjRlMDcyMDVmMGNkYy9sYXp5LW9iamVjdC1wcm94eS0xLjQuMy50YXIuZ3oi
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsX3N1YnBhdGg9Imxhenktb2JqZWN0
LXByb3h5LTEuNC4zL3NyYy9sYXp5X29iamVjdF9wcm94eSIpCisgICAgICAgICAgICBpbnN0YWxs
ZXIuaW5zdGFsbCgiaHR0cHM6Ly9maWxlcy5weXRob25ob3N0ZWQub3JnL3BhY2thZ2VzLzIzLzg0
LzMyM2MyNDE1MjgwYmM0ZmM4ODBhYzUwNTBkZGRmYjNjODA2MmMyNTUyYjM0YzJlNTEyZWI0YWE2
OGY3OS93cmFwdC0xLjExLjIudGFyLmd6IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVybF9zdWJwYXRoPSJ3cmFwdC0xLjExLjIvc3JjL3dyYXB0IikKKyAgICAgICAgICAgIGluc3Rh
bGxlci5pbnN0YWxsKCJodHRwczovL2ZpbGVzLnB5dGhvbmhvc3RlZC5vcmcvcGFja2FnZXMvNDMv
MDAvODcwNWU4ZDBjMDViYTIyZjA0MjYzNGY3OTFhNjFmNGM2NzhjMzIxNzU3NjNkY2YyY2EyYTEz
M2Y0NzM5L2lzb3J0LTQuMy4yMS50YXIuZ3oiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdXJsX3N1YnBhdGg9Imlzb3J0LTQuMy4yMS9pc29ydCIpCisgICAgICAgICAgICBpbnN0YWxs
ZXIuaW5zdGFsbCgiaHR0cHM6Ly9maWxlcy5weXRob25ob3N0ZWQub3JnL3BhY2thZ2VzLzNmLzBi
LzRlN2VlYWIxYWJmNTk0YjQ0NzM4NWEzNDA1OTNjMWE0MjQ0Y2RmOGU1NGE3OGVkY2FlMWUyNzU2
ZDZmYi9weWxpbnQtMS45LjUudGFyLmd6IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVybF9zdWJwYXRoPSJweWxpbnQtMS45LjUvcHlsaW50IikKIAogICAgICMgYXV0b2luc3RhbGxl
ZC5idWlsZGJvdCBpcyB1c2VkIGJ5IEJ1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmct
Y29uZmlnL21hc3RlcmNmZ191bml0dGVzdC5weQogICAgICMgYW5kIHNob3VsZCBpZGVhbGx5IG1h
dGNoIHRoZSB2ZXJzaW9uIG9mIEJ1aWxkQm90IHVzZWQgYXQgYnVpbGQud2Via2l0Lm9yZy4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383410</attachid>
            <date>2019-11-12 17:15:47 -0800</date>
            <delta_ts>2019-11-12 17:26:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203761-20191112171547.patch</filename>
            <type>text/plain</type>
            <size>38308</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI1MjM3OSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDYzIEBACisyMDE5LTExLTEyICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBQeXRob24gMzogQWRkIHN1cHBvcnQgaW4gd2Via2l0cHkuc3R5bGUuY2hl
Y2tlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
Mzc2MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
U2NyaXB0cy90ZXN0LXdlYmtpdHB5LXB5dGhvbjM6IEFkZCB3ZWJraXRweS5zdHlsZS5jaGVja2Vy
cy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvYnVpbGRlcnMucHk6CisgICAgICAg
IChhbGxfcG9ydF9uYW1lcyk6IENvbnZlcnQgbWFwIHRvIGEgbGlzdCBiZWZvcmUgY29uY2F0ZW5h
dGluZy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NoYW5nZWxv
Zy5weTogVXNlIGV4cGxpY2l0IGltcG9ydHMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9z
dHlsZS9jaGVja2Vycy9jaGFuZ2Vsb2dfdW5pdHRlc3QucHk6IERpdHRvLgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY21ha2UucHk6IERpdHRvLgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY21ha2VfdW5pdHRlc3QucHk6IERpdHRv
LgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY29tbW9uX3VuaXR0
ZXN0LnB5OiBEaXR0by4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJz
L2NvbnRyaWJ1dG9ycy5weTogRGl0dG8uCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHls
ZS9jaGVja2Vycy9jcHAucHk6CisgICAgICAgIChQb3NpdGlvbik6IEFkZCByaWNoIGNvbXBhcmlz
b24gZnVuY3Rpb25zLgorICAgICAgICAoY2hlY2tfZm9yX2NvcHlyaWdodCk6IFVzZSByYW5nZSBp
bnN0ZWFkIG9mIHhyYW5nZS4KKyAgICAgICAgKGRldGVjdF9mdW5jdGlvbnMpOiBEaXR0by4KKyAg
ICAgICAgKGNoZWNrX2xhbmd1YWdlKTogVXNlIHItc3RyaW5nLgorICAgICAgICAoY2hlY2tfZm9y
X2luY2x1ZGVfd2hhdF95b3VfdXNlKTogVXNlIHJhbmdlIGluc3RlYWQgb2YgeHJhbmdlLgorICAg
ICAgICAoX3Byb2Nlc3NfbGluZXMpOiBDb252ZXJ0IGl0ZXJhdG9yIHRvIGxpc3QsIHVzZSByYW5n
ZSBpbnN0ZWFkIG9mIHhyYW5nZS4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2No
ZWNrZXJzL2NwcF91bml0dGVzdC5weToKKyAgICAgICAgKENwcFN0eWxlVGVzdCk6IEJlIGV4cGxp
Y2l0IGFib3V0IGJ5dGVzIHZzIHN0cmluZ3MuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9z
dHlsZS9jaGVja2Vycy9qcy5weTogVXNlIGV4cGxpY2l0IGltcG9ydHMuCisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9qc191bml0dGVzdC5weTogRGl0dG8uCisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9qc29uY2hlY2tlci5weTogRGl0
dG8uCisgICAgICAgIChKU09ORmVhdHVyZXNDaGVja2VyLmNoZWNrKToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2pzb25jaGVja2VyX3VuaXR0ZXN0LnB5OiBEaXR0
by4KKyAgICAgICAgKEpTT05DaGVja2VyVGVzdC50ZXN0X2NvbmZsaWN0X21hcmtlcik6IERpZmZl
cmVudGlhdGUgYmV0d2VlbiBQeXRob24gMiBhbmQgMworICAgICAgICBqc29uIHBhcnNlcnMuCisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9qc3Rlc3RfdW5pdHRlc3Qu
cHk6IFVzZSBleHBsaWNpdCBpbXBvcnRzLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5
bGUvY2hlY2tlcnMvbWVzc2FnZXNpbi5weTogRGl0dG8uCisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS9zdHlsZS9jaGVja2Vycy9tZXNzYWdlc2luX3VuaXR0ZXN0LnB5OiBEaXR0by4KKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL3BuZ191bml0dGVzdC5weTogRGl0
dG8uCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9weXRob24ucHk6
CisgICAgICAgIChQeXRob25DaGVja2VyLmNoZWNrKTogT25seSBydW4gcHlsaW50IGluIFB5dGhv
biAyLgorICAgICAgICAoUHl0aG9uQ2hlY2tlci5fY2hlY2tfcHlsaW50KTogVXNlIHIgc3RyaW5n
LgorICAgICAgICAoUHlsaW50ZXIucnVuKTogU3VycHJlc3MgbG9nZ2luZyBmcm9tIFB5bGludC4K
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL3B5dGhvbl91bml0dGVz
dC5weTogVXNlIGV4cGxpY2l0IGltcG9ydHMuCisgICAgICAgIChQeXRob25DaGVja2VyVGVzdC50
ZXN0X2NoZWNrKTogQWRkIEZJWE1FIGZvciBydW5uaW5nIHB5bGludCBpbiBQeXRob24gMy4KKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL3B5dGhvbl91bml0dGVzdF9m
YWxzZXBvc2l0aXZlcy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNr
ZXJzL3B5dGhvbl91bml0dGVzdF9pbnB1dC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L3N0eWxlL2NoZWNrZXJzL3Rlc3RfZXhwZWN0YXRpb25zLnB5OiBVc2UgZXhwbGljaXQgaW1wb3J0
cy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL3Rlc3RfZXhwZWN0
YXRpb25zX3VuaXR0ZXN0LnB5OiBEaXR0by4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0
eWxlL2NoZWNrZXJzL3RleHQucHk6IERpdHRvLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
c3R5bGUvY2hlY2tlcnMvdGV4dF91bml0dGVzdC5weTogRGl0dG8uCisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy93YXRjaGxpc3RfdW5pdHRlc3QucHk6IERpdHRvLgor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMveGNvZGVwcm9qX3VuaXR0
ZXN0LnB5OiBEaXR0by4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJz
L3htbF91bml0dGVzdC5weTogRGl0dG8uCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHls
ZS9vcHRwYXJzZXJfdW5pdHRlc3QucHk6CisgICAgICAgIChBcmd1bWVudFBhcnNlclRlc3QudGVz
dF9wYXJzZV9kb2N1bWVudGF0aW9uKTogUmVtb3ZlIHBhcnNlIGxhbWJkYS4KKyAgICAgICAgKEFy
Z3VtZW50UGFyc2VyVGVzdC50ZXN0X3BhcnNlX2JhZF92YWx1ZXMpOiBEaXR0by4KKyAgICAgICAg
KEFyZ3VtZW50UGFyc2VyVGVzdC50ZXN0X3BhcnNlX2V4cGxpY2l0X2FyZ3VtZW50cyk6IERpdHRv
LgorICAgICAgICAoQXJndW1lbnRQYXJzZXJUZXN0LnRlc3RfcGFyc2VfZmlsZXMpOiBEaXR0by4K
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvX19pbml0X18ucHk6CisgICAg
ICAgIChBdXRvaW5zdGFsbEltcG9ydEhvb2suX2luc3RhbGxfcGVwOCk6IFVwZGF0ZSBwZXA4IHZl
cnNpb24uCisgICAgICAgIChBdXRvaW5zdGFsbEltcG9ydEhvb2suX2luc3RhbGxfcHlsaW50KTog
VXBkYXRlIHB5bGludCB2ZXJzaW9uLgorCiAyMDE5LTExLTEyICBXZW5zb24gSHNpZWggIDx3ZW5z
b25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIFdLV2ViVmlldyBkb2VzIG5vdCBy
ZXNwZWN0IHN5c3RlbSBzcGVsbGNoZWNraW5nIHByZWZlcmVuY2UKSW5kZXg6IFRvb2xzL1Njcmlw
dHMvdGVzdC13ZWJraXRweS1weXRob24zCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvdGVz
dC13ZWJraXRweS1weXRob24zCShyZXZpc2lvbiAyNTIzNjkpCisrKyBUb29scy9TY3JpcHRzL3Rl
c3Qtd2Via2l0cHktcHl0aG9uMwkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQCBQWVRI
T04zX0NPTVBBVElCTEVfRElSRUNUT1JJRVMgPSBbCiAgICd3ZWJraXRweS5sYXlvdXRfdGVzdHMu
bW9kZWxzJywKICAgJ3dlYmtpdHB5LnBvcnQnLAogICAnd2Via2l0cHkucmVzdWx0cycsCisgICd3
ZWJraXRweS5zdHlsZS5jaGVja2VycycsCiAgICd3ZWJraXRweS54Y29kZScsCiBdCiBTTE9XX1RF
U1RTID0gWwpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2J1aWxkZXJzLnB5Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9idWlsZGVycy5weQkocmV2
aXNpb24gMjUyMzY5KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2J1aWxkZXJzLnB5
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDIsNyArMTAyLDcgQEAgZGVmIGFsbF9idWlsZGVyX25hbWVz
KCk6CiAKIAogZGVmIGFsbF9wb3J0X25hbWVzKCk6Ci0gICAgcmV0dXJuIHNvcnRlZChzZXQobWFw
KGxhbWJkYSB4OiB4WyJwb3J0X25hbWUiXSwgX2V4YWN0X21hdGNoZXMudmFsdWVzKCkpICsgX3Bv
cnRzX3dpdGhvdXRfYnVpbGRlcnMpKQorICAgIHJldHVybiBzb3J0ZWQoc2V0KGxpc3QobWFwKGxh
bWJkYSB4OiB4WyJwb3J0X25hbWUiXSwgX2V4YWN0X21hdGNoZXMudmFsdWVzKCkpKSArIF9wb3J0
c193aXRob3V0X2J1aWxkZXJzKSkKIAogCiBkZWYgcmViYXNlbGluZV9vdmVycmlkZV9kaXIoYnVp
bGRlcl9uYW1lKToKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvb3B0cGFyc2Vy
LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvb3B0cGFyc2Vy
LnB5CShyZXZpc2lvbiAyNTIzNjkpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL29w
dHBhcnNlci5weQkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNyBAQCBmcm9tIG9wdHBhcnNl
IGltcG9ydCBPcHRpb25QYXJzZXIKIGltcG9ydCBvcy5wYXRoCiBpbXBvcnQgc3lzCiAKLWZyb20g
ZmlsdGVyIGltcG9ydCB2YWxpZGF0ZV9maWx0ZXJfcnVsZXMKK2Zyb20gd2Via2l0cHkuc3R5bGUu
ZmlsdGVyIGltcG9ydCB2YWxpZGF0ZV9maWx0ZXJfcnVsZXMKICMgVGhpcyBtb2R1bGUgc2hvdWxk
IG5vdCBpbXBvcnQgYW55dGhpbmcgZnJvbSBjaGVja2VyLnB5LgogCiBfbG9nID0gbG9nZ2luZy5n
ZXRMb2dnZXIoX19uYW1lX18pCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL29w
dHBhcnNlcl91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3N0eWxlL29wdHBhcnNlcl91bml0dGVzdC5weQkocmV2aXNpb24gMjUyMzY5KQorKysgVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9zdHlsZS9vcHRwYXJzZXJfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29w
eSkKQEAgLTk3LDUwICs5Nyw0NCBAQCBjbGFzcyBBcmd1bWVudFBhcnNlclRlc3QoTG9nZ2luZ1Rl
c3RDYXNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2FnZT0idGVzdCB1c2FnZSIp
CiAKICAgICBkZWYgdGVzdF9wYXJzZV9kb2N1bWVudGF0aW9uKHNlbGYpOgotICAgICAgICBwYXJz
ZSA9IHNlbGYuX3BhcnNlCi0KICAgICAgICAgIyBGSVhNRTogVGVzdCBib3RoIHRoZSBwcmludGlu
ZyBvZiB0aGUgdXNhZ2Ugc3RyaW5nIGFuZCB0aGUKICAgICAgICAgIyAgICAgICAgZmlsdGVyIGNh
dGVnb3JpZXMgaGVscC4KIAogICAgICAgICAjIFJlcXVlc3QgdGhlIHVzYWdlIHN0cmluZy4KLSAg
ICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3lzdGVtRXhpdCwgcGFyc2UsIFsnLS1oZWxwJ10pCisg
ICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5c3RlbUV4aXQsIHNlbGYuX3BhcnNlLCBbJy0taGVs
cCddKQogICAgICAgICAjIFJlcXVlc3QgZGVmYXVsdCBmaWx0ZXIgcnVsZXMgYW5kIGF2YWlsYWJs
ZSBzdHlsZSBjYXRlZ29yaWVzLgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeXN0ZW1FeGl0
LCBwYXJzZSwgWyctLWZpbHRlcj0nXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3lzdGVt
RXhpdCwgc2VsZi5fcGFyc2UsIFsnLS1maWx0ZXI9J10pCiAKICAgICBkZWYgdGVzdF9wYXJzZV9i
YWRfdmFsdWVzKHNlbGYpOgotICAgICAgICBwYXJzZSA9IHNlbGYuX3BhcnNlCi0KICAgICAgICAg
IyBQYXNzIGFuIHVuc3VwcG9ydGVkIGFyZ3VtZW50LgotICAgICAgICBzZWxmLmFzc2VydFJhaXNl
cyhTeXN0ZW1FeGl0LCBwYXJzZSwgWyctLWJhZCddKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNl
cyhTeXN0ZW1FeGl0LCBzZWxmLl9wYXJzZSwgWyctLWJhZCddKQogICAgICAgICBzZWxmLmFzc2Vy
dExvZyhbJ0VSUk9SOiBubyBzdWNoIG9wdGlvbjogLS1iYWRcbiddKQogCi0gICAgICAgIHNlbGYu
YXNzZXJ0UmFpc2VzKFN5c3RlbUV4aXQsIHBhcnNlLCBbJy0tbWluLWNvbmZpZGVuY2U9YmFkJ10p
CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5c3RlbUV4aXQsIHNlbGYuX3BhcnNlLCBbJy0t
bWluLWNvbmZpZGVuY2U9YmFkJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0TG9nKFsnRVJST1I6IG9w
dGlvbiAtLW1pbi1jb25maWRlbmNlOiAnCiAgICAgICAgICAgICAgICAgICAgICAgICAiaW52YWxp
ZCBpbnRlZ2VyIHZhbHVlOiAnYmFkJ1xuIl0pCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5
c3RlbUV4aXQsIHBhcnNlLCBbJy0tbWluLWNvbmZpZGVuY2U9MCddKQorICAgICAgICBzZWxmLmFz
c2VydFJhaXNlcyhTeXN0ZW1FeGl0LCBzZWxmLl9wYXJzZSwgWyctLW1pbi1jb25maWRlbmNlPTAn
XSkKICAgICAgICAgc2VsZi5hc3NlcnRMb2coWydFUlJPUjogb3B0aW9uIC0tbWluLWNvbmZpZGVu
Y2U6IGludmFsaWQgaW50ZWdlcjogMDogJwogICAgICAgICAgICAgICAgICAgICAgICAgJ3ZhbHVl
IG11c3QgYmUgYmV0d2VlbiAxIGFuZCA1XG4nXSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMo
U3lzdGVtRXhpdCwgcGFyc2UsIFsnLS1taW4tY29uZmlkZW5jZT02J10pCisgICAgICAgIHNlbGYu
YXNzZXJ0UmFpc2VzKFN5c3RlbUV4aXQsIHNlbGYuX3BhcnNlLCBbJy0tbWluLWNvbmZpZGVuY2U9
NiddKQogICAgICAgICBzZWxmLmFzc2VydExvZyhbJ0VSUk9SOiBvcHRpb24gLS1taW4tY29uZmlk
ZW5jZTogaW52YWxpZCBpbnRlZ2VyOiA2OiAnCiAgICAgICAgICAgICAgICAgICAgICAgICAndmFs
dWUgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDVcbiddKQotICAgICAgICBwYXJzZShbJy0tbWluLWNv
bmZpZGVuY2U9MSddKSAgIyB3b3JrcwotICAgICAgICBwYXJzZShbJy0tbWluLWNvbmZpZGVuY2U9
NSddKSAgIyB3b3JrcworICAgICAgICBzZWxmLl9wYXJzZShbJy0tbWluLWNvbmZpZGVuY2U9MSdd
KSAgIyB3b3JrcworICAgICAgICBzZWxmLl9wYXJzZShbJy0tbWluLWNvbmZpZGVuY2U9NSddKSAg
IyB3b3JrcwogCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5c3RlbUV4aXQsIHBhcnNlLCBb
Jy0tb3V0cHV0PWJhZCddKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeXN0ZW1FeGl0LCBz
ZWxmLl9wYXJzZSwgWyctLW91dHB1dD1iYWQnXSkKICAgICAgICAgc2VsZi5hc3NlcnRMb2coWydF
UlJPUjogb3B0aW9uIC0tb3V0cHV0LWZvcm1hdDogaW52YWxpZCBjaG9pY2U6ICcKICAgICAgICAg
ICAgICAgICAgICAgICAgICInYmFkJyAoY2hvb3NlIGZyb20gJ2VtYWNzJywgJ3ZzNycpXG4iXSkK
LSAgICAgICAgcGFyc2UoWyctLW91dHB1dD12czcnXSkgICMgd29ya3MKKyAgICAgICAgc2VsZi5f
cGFyc2UoWyctLW91dHB1dD12czcnXSkgICMgd29ya3MKIAogICAgICAgICAjIFBhc3MgYSBmaWx0
ZXIgcnVsZSBub3QgYmVnaW5uaW5nIHdpdGggKyBvciAtLgotICAgICAgICBzZWxmLmFzc2VydFJh
aXNlcyhTeXN0ZW1FeGl0LCBwYXJzZSwgWyctLWZpbHRlcj1idWlsZCddKQorICAgICAgICBzZWxm
LmFzc2VydFJhaXNlcyhTeXN0ZW1FeGl0LCBzZWxmLl9wYXJzZSwgWyctLWZpbHRlcj1idWlsZCdd
KQogICAgICAgICBzZWxmLmFzc2VydExvZyhbJ0VSUk9SOiBJbnZhbGlkIGZpbHRlciBydWxlICJi
dWlsZCI6ICcKICAgICAgICAgICAgICAgICAgICAgICAgICdldmVyeSBydWxlIG11c3Qgc3RhcnQg
d2l0aCArIG9yIC0uXG4nXSkKLSAgICAgICAgcGFyc2UoWyctLWZpbHRlcj0rYnVpbGQnXSkgICMg
d29ya3MKKyAgICAgICAgc2VsZi5fcGFyc2UoWyctLWZpbHRlcj0rYnVpbGQnXSkgICMgd29ya3MK
IAogICAgIGRlZiB0ZXN0X3BhcnNlX2RlZmF1bHRfYXJndW1lbnRzKHNlbGYpOgotICAgICAgICBw
YXJzZSA9IHNlbGYuX3BhcnNlCi0KLSAgICAgICAgKGZpbGVzLCBvcHRpb25zKSA9IHBhcnNlKFtd
KQorICAgICAgICAoZmlsZXMsIG9wdGlvbnMpID0gc2VsZi5fcGFyc2UoW10pCiAKICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChmaWxlcywgW10pCiAKQEAgLTE1Miw0MiArMTQ2LDM4IEBAIGNsYXNz
IEFyZ3VtZW50UGFyc2VyVGVzdChMb2dnaW5nVGVzdENhc2UKICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChvcHRpb25zLm91dHB1dF9mb3JtYXQsICd2czcnKQogCiAgICAgZGVmIHRlc3RfcGFyc2Vf
ZXhwbGljaXRfYXJndW1lbnRzKHNlbGYpOgotICAgICAgICBwYXJzZSA9IHNlbGYuX3BhcnNlCi0K
ICAgICAgICAgIyBQYXNzIG5vbi1kZWZhdWx0IGV4cGxpY2l0IHZhbHVlcy4KLSAgICAgICAgKGZp
bGVzLCBvcHRpb25zKSA9IHBhcnNlKFsnLS1taW4tY29uZmlkZW5jZT00J10pCisgICAgICAgIChm
aWxlcywgb3B0aW9ucykgPSBzZWxmLl9wYXJzZShbJy0tbWluLWNvbmZpZGVuY2U9NCddKQogICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKG9wdGlvbnMubWluX2NvbmZpZGVuY2UsIDQpCi0gICAgICAg
IChmaWxlcywgb3B0aW9ucykgPSBwYXJzZShbJy0tb3V0cHV0PWVtYWNzJ10pCisgICAgICAgIChm
aWxlcywgb3B0aW9ucykgPSBzZWxmLl9wYXJzZShbJy0tb3V0cHV0PWVtYWNzJ10pCiAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwob3B0aW9ucy5vdXRwdXRfZm9ybWF0LCAnZW1hY3MnKQotICAgICAg
ICAoZmlsZXMsIG9wdGlvbnMpID0gcGFyc2UoWyctZycsICdjb21taXQnXSkKKyAgICAgICAgKGZp
bGVzLCBvcHRpb25zKSA9IHNlbGYuX3BhcnNlKFsnLWcnLCAnY29tbWl0J10pCiAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwob3B0aW9ucy5naXRfY29tbWl0LCAnY29tbWl0JykKLSAgICAgICAgKGZp
bGVzLCBvcHRpb25zKSA9IHBhcnNlKFsnLS1naXQtY29tbWl0PWNvbW1pdCddKQorICAgICAgICAo
ZmlsZXMsIG9wdGlvbnMpID0gc2VsZi5fcGFyc2UoWyctLWdpdC1jb21taXQ9Y29tbWl0J10pCiAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3B0aW9ucy5naXRfY29tbWl0LCAnY29tbWl0JykKLSAg
ICAgICAgKGZpbGVzLCBvcHRpb25zKSA9IHBhcnNlKFsnLS1naXQtZGlmZj1jb21taXQnXSkKKyAg
ICAgICAgKGZpbGVzLCBvcHRpb25zKSA9IHNlbGYuX3BhcnNlKFsnLS1naXQtZGlmZj1jb21taXQn
XSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcHRpb25zLmdpdF9jb21taXQsICdjb21taXQn
KQotICAgICAgICAoZmlsZXMsIG9wdGlvbnMpID0gcGFyc2UoWyctLXZlcmJvc2UnXSkKKyAgICAg
ICAgKGZpbGVzLCBvcHRpb25zKSA9IHNlbGYuX3BhcnNlKFsnLS12ZXJib3NlJ10pCiAgICAgICAg
IHNlbGYuYXNzZXJ0VHJ1ZShvcHRpb25zLmlzX3ZlcmJvc2UpCi0gICAgICAgIChmaWxlcywgb3B0
aW9ucykgPSBwYXJzZShbJy0tZGlmZi1maWxlcycsICdmaWxlLnR4dCddKQorICAgICAgICAoZmls
ZXMsIG9wdGlvbnMpID0gc2VsZi5fcGFyc2UoWyctLWRpZmYtZmlsZXMnLCAnZmlsZS50eHQnXSkK
ICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9wdGlvbnMuZGlmZl9maWxlcykKIAogICAgICAgICAj
IFBhc3MgdXNlcl9ydWxlcy4KLSAgICAgICAgKGZpbGVzLCBvcHRpb25zKSA9IHBhcnNlKFsnLS1m
aWx0ZXI9K2J1aWxkLC13aGl0ZXNwYWNlJ10pCisgICAgICAgIChmaWxlcywgb3B0aW9ucykgPSBz
ZWxmLl9wYXJzZShbJy0tZmlsdGVyPStidWlsZCwtd2hpdGVzcGFjZSddKQogICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKG9wdGlvbnMuZmlsdGVyX3J1bGVzLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICBbIitidWlsZCIsICItd2hpdGVzcGFjZSJdKQogCiAgICAgICAgICMgUGFzcyBzcHVyaW91
cyB3aGl0ZSBzcGFjZSBpbiB1c2VyIHJ1bGVzLgotICAgICAgICAoZmlsZXMsIG9wdGlvbnMpID0g
cGFyc2UoWyctLWZpbHRlcj0rYnVpbGQsIC13aGl0ZXNwYWNlJ10pCisgICAgICAgIChmaWxlcywg
b3B0aW9ucykgPSBzZWxmLl9wYXJzZShbJy0tZmlsdGVyPStidWlsZCwgLXdoaXRlc3BhY2UnXSkK
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcHRpb25zLmZpbHRlcl9ydWxlcywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgWyIrYnVpbGQiLCAiLXdoaXRlc3BhY2UiXSkKIAogICAgIGRlZiB0
ZXN0X3BhcnNlX2ZpbGVzKHNlbGYpOgotICAgICAgICBwYXJzZSA9IHNlbGYuX3BhcnNlCi0KLSAg
ICAgICAgKGZpbGVzLCBvcHRpb25zKSA9IHBhcnNlKFsnZm9vLmNwcCddKQorICAgICAgICAoZmls
ZXMsIG9wdGlvbnMpID0gc2VsZi5fcGFyc2UoWydmb28uY3BwJ10pCiAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoZmlsZXMsIFsnZm9vLmNwcCddKQogCiAgICAgICAgICMgUGFzcyBtdWx0aXBsZSBm
aWxlcy4KLSAgICAgICAgKGZpbGVzLCBvcHRpb25zKSA9IHBhcnNlKFsnLS1vdXRwdXQ9ZW1hY3Mn
LCAnZm9vLmNwcCcsICdiYXIuY3BwJ10pCisgICAgICAgIChmaWxlcywgb3B0aW9ucykgPSBzZWxm
Ll9wYXJzZShbJy0tb3V0cHV0PWVtYWNzJywgJ2Zvby5jcHAnLCAnYmFyLmNwcCddKQogICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGZpbGVzLCBbJ2Zvby5jcHAnLCAnYmFyLmNwcCddKQogCiAKSW5k
ZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY2hhbmdlbG9nLnB5Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY2hhbmdl
bG9nLnB5CShyZXZpc2lvbiAyNTIzNjkpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxl
L2NoZWNrZXJzL2NoYW5nZWxvZy5weQkod29ya2luZyBjb3B5KQpAQCAtMjMsOSArMjMsOSBAQAog
CiAiIiJDaGVja3MgV2ViS2l0IHN0eWxlIGZvciBDaGFuZ2VMb2cgZmlsZXMuIiIiCiAKLWZyb20g
Y29tbW9uIGltcG9ydCBUYWJDaGVja2VyLCBtYXRjaCwgc2VhcmNoLCBzZWFyY2hJZ25vcmVjYXNl
CiBmcm9tIHN5cyBpbXBvcnQgbWF4c2l6ZQogZnJvbSB3ZWJraXRweS5jb21tb24uY2hlY2tvdXQu
Y2hhbmdlbG9nIGltcG9ydCBwYXJzZV9idWdfaWRfZnJvbV9jaGFuZ2Vsb2cKK2Zyb20gd2Via2l0
cHkuc3R5bGUuY2hlY2tlcnMuY29tbW9uIGltcG9ydCBUYWJDaGVja2VyLCBtYXRjaCwgc2VhcmNo
LCBzZWFyY2hJZ25vcmVjYXNlCiAKIAogY2xhc3MgQ2hhbmdlTG9nQ2hlY2tlcihvYmplY3QpOgpJ
bmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jaGFuZ2Vsb2dfdW5p
dHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVj
a2Vycy9jaGFuZ2Vsb2dfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI1MjM2OSkKKysrIFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY2hhbmdlbG9nX3VuaXR0ZXN0LnB5CSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMyw5ICsyMywxMCBAQAogCiAiIiJVbml0IHRlc3QgZm9yIGNoYW5nZWxv
Zy5weS4iIiIKIAotaW1wb3J0IGNoYW5nZWxvZwogaW1wb3J0IHVuaXR0ZXN0CiAKK2Zyb20gd2Vi
a2l0cHkuc3R5bGUuY2hlY2tlcnMgaW1wb3J0IGNoYW5nZWxvZworCiAKIGNsYXNzIENoYW5nZUxv
Z0NoZWNrZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAiIiJUZXN0cyBDaGFuZ2VMb2dD
aGVja2VyIGNsYXNzLiIiIgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVj
a2Vycy9jbWFrZS5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxl
L2NoZWNrZXJzL2NtYWtlLnB5CShyZXZpc2lvbiAyNTIzNjkpCisrKyBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NtYWtlLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsy
NSw3IEBACiAKICIiIlN1cHBvcnRzIGNoZWNraW5nIFdlYktpdCBzdHlsZSBpbiBjbWFrZSBmaWxl
cy4oLmNtYWtlLCBDTWFrZUxpc3RzLnR4dCkiIiIKIAotZnJvbSBjb21tb24gaW1wb3J0IFRhYkNo
ZWNrZXIsIG1hdGNoLCBzZWFyY2gsIHNlYXJjaElnbm9yZWNhc2UKK2Zyb20gd2Via2l0cHkuc3R5
bGUuY2hlY2tlcnMuY29tbW9uIGltcG9ydCBUYWJDaGVja2VyLCBtYXRjaCwgc2VhcmNoLCBzZWFy
Y2hJZ25vcmVjYXNlCiAKIAogY2xhc3MgQ01ha2VDaGVja2VyKG9iamVjdCk6CkluZGV4OiBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NtYWtlX3VuaXR0ZXN0LnB5Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY21ha2VfdW5p
dHRlc3QucHkJKHJldmlzaW9uIDI1MjM2OSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5
bGUvY2hlY2tlcnMvY21ha2VfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0
LDcgQEAKIAogaW1wb3J0IHVuaXR0ZXN0CiAKLWZyb20gY21ha2UgaW1wb3J0IENNYWtlQ2hlY2tl
cgorZnJvbSB3ZWJraXRweS5zdHlsZS5jaGVja2Vycy5jbWFrZSBpbXBvcnQgQ01ha2VDaGVja2Vy
CiAKIAogY2xhc3MgQ01ha2VDaGVja2VyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CkluZGV4OiBU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NvbW1vbl91bml0dGVzdC5weQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NvbW1v
bl91bml0dGVzdC5weQkocmV2aXNpb24gMjUyMzY5KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9zdHlsZS9jaGVja2Vycy9jb21tb25fdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTI0
LDggKzI0LDggQEAKIAogaW1wb3J0IHVuaXR0ZXN0CiAKLWZyb20gY29tbW9uIGltcG9ydCBDYXJy
aWFnZVJldHVybkNoZWNrZXIKLWZyb20gY29tbW9uIGltcG9ydCBUYWJDaGVja2VyCitmcm9tIHdl
YmtpdHB5LnN0eWxlLmNoZWNrZXJzLmNvbW1vbiBpbXBvcnQgQ2FycmlhZ2VSZXR1cm5DaGVja2Vy
Citmcm9tIHdlYmtpdHB5LnN0eWxlLmNoZWNrZXJzLmNvbW1vbiBpbXBvcnQgVGFiQ2hlY2tlcgog
CiAKICMgRklYTUU6IFRoZSB1bml0IHRlc3RzIGZvciB0aGUgY3BwLCB0ZXh0LCBhbmQgY29tbW9u
IGNoZWNrZXJzIHNob3VsZApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVj
a2Vycy9jb250cmlidXRvcnMucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9zdHlsZS9jaGVja2Vycy9jb250cmlidXRvcnMucHkJKHJldmlzaW9uIDI1MjM2OSkKKysrIFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY29udHJpYnV0b3JzLnB5CSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBAIGltcG9ydCBkaWZmbGliCiBpbXBvcnQganNvbgog
aW1wb3J0IHJlCiBmcm9tIHNldHMgaW1wb3J0IFNldAotZnJvbSBqc29uY2hlY2tlciBpbXBvcnQg
SlNPTkNoZWNrZXIKK2Zyb20gd2Via2l0cHkuc3R5bGUuY2hlY2tlcnMuanNvbmNoZWNrZXIgaW1w
b3J0IEpTT05DaGVja2VyCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5jb25maWcuY29tbWl0dGVycyBp
bXBvcnQgQ29tbWl0dGVyTGlzdAogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmZpbGVzeXN0
ZW0gaW1wb3J0IEZpbGVTeXN0ZW0KIApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHls
ZS9jaGVja2Vycy9jcHAucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9z
dHlsZS9jaGVja2Vycy9jcHAucHkJKHJldmlzaW9uIDI1MjM2OSkKKysrIFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwLnB5CSh3b3JraW5nIGNvcHkpCkBAIC00NSw4ICs0
NSw5IEBAIGltcG9ydCBzdHJpbmcKIGltcG9ydCBzeXMKIGltcG9ydCB1bmljb2RlZGF0YQogCi1m
cm9tIGNvbW1vbiBpbXBvcnQgbWF0Y2gsIHNlYXJjaCwgc3ViLCBzdWJuCitmcm9tIHdlYmtpdHB5
LnN0eWxlLmNoZWNrZXJzLmNvbW1vbiBpbXBvcnQgbWF0Y2gsIHNlYXJjaCwgc3ViLCBzdWJuCiBm
cm9tIHdlYmtpdHB5LmNvbW1vbi5tZW1vaXplZCBpbXBvcnQgbWVtb2l6ZWQKK2Zyb20gd2Via2l0
cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgdW5pY29kZQogCiAjIFRoZSBr
ZXkgdG8gdXNlIHRvIHByb3ZpZGUgYSBjbGFzcyB0byBmYWtlIGxvYWRpbmcgYSBoZWFkZXIgZmls
ZS4KIElOQ0xVREVfSU9fSU5KRUNUSU9OX0tFWSA9ICdpbmNsdWRlX2hlYWRlcl9pbycKQEAgLTM2
Niw3ICszNjcsMjUgQEAgY2xhc3MgUG9zaXRpb24ob2JqZWN0KToKICAgICAgICAgcmV0dXJuICco
JXMsICVzKScgJSAoc2VsZi5yb3csIHNlbGYuY29sdW1uKQogCiAgICAgZGVmIF9fY21wX18oc2Vs
Ziwgb3RoZXIpOgotICAgICAgICByZXR1cm4gc2VsZi5yb3cuX19jbXBfXyhvdGhlci5yb3cpIG9y
IHNlbGYuY29sdW1uLl9fY21wX18ob3RoZXIuY29sdW1uKQorICAgICAgICByZXR1cm4gKHNlbGYu
cm93IC0gb3RoZXIucm93KSBvciAoc2VsZi5jb2x1bW4gLSBvdGhlci5jb2x1bW4pCisKKyAgICBk
ZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX19jbXBfXyhvdGhl
cikgPT0gMAorCisgICAgZGVmIF9fbmVfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIHJldHVybiBz
ZWxmLl9fY21wX18ob3RoZXIpICE9IDAKKworICAgIGRlZiBfX2x0X18oc2VsZiwgb3RoZXIpOgor
ICAgICAgICByZXR1cm4gc2VsZi5fX2NtcF9fKG90aGVyKSA8IDAKKworICAgIGRlZiBfX2xlX18o
c2VsZiwgb3RoZXIpOgorICAgICAgICByZXR1cm4gc2VsZi5fX2NtcF9fKG90aGVyKSA8PSAwCisK
KyAgICBkZWYgX19ndF9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX19jbXBf
XyhvdGhlcikgPiAwCisKKyAgICBkZWYgX19nZV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgcmV0
dXJuIHNlbGYuX19jbXBfXyhvdGhlcikgPj0gMAogCiAKIGNsYXNzIFBhcmFtZXRlcihvYmplY3Qp
OgpAQCAtODk3LDcgKzkxNiw3IEBAIGRlZiBjaGVja19mb3JfY29weXJpZ2h0KGxpbmVzLCBlcnJv
cik6CiAKICAgICAjIFdlJ2xsIHNheSBpdCBzaG91bGQgb2NjdXIgYnkgbGluZSAxMC4gRG9uJ3Qg
Zm9yZ2V0IHRoZXJlJ3MgYQogICAgICMgZHVtbXkgbGluZSBhdCB0aGUgZnJvbnQuCi0gICAgZm9y
IGxpbmUgaW4geHJhbmdlKDEsIG1pbihsZW4obGluZXMpLCAxMSkpOgorICAgIGZvciBsaW5lIGlu
IHJhbmdlKDEsIG1pbihsZW4obGluZXMpLCAxMSkpOgogICAgICAgICBpZiByZS5zZWFyY2gocidD
b3B5cmlnaHQnLCBsaW5lc1tsaW5lXSwgcmUuSSk6CiAgICAgICAgICAgICBicmVhawogICAgIGVs
c2U6ICAgICAgICAgICAgICAgICAgICAgICAjIG1lYW5zIG5vIGNvcHlyaWdodCBsaW5lIHdhcyBm
b3VuZApAQCAtMTU5Niw3ICsxNjE1LDcgQEAgZGVmIGRldGVjdF9mdW5jdGlvbnMoY2xlYW5fbGlu
ZXMsIGxpbmVfbgogICAgICAgICByZXR1cm4KIAogICAgIGpvaW5lZF9saW5lID0gJycKLSAgICBm
b3Igc3RhcnRfbGluZV9udW1iZXIgaW4geHJhbmdlKGxpbmVfbnVtYmVyLCBjbGVhbl9saW5lcy5u
dW1fbGluZXMoKSk6CisgICAgZm9yIHN0YXJ0X2xpbmVfbnVtYmVyIGluIHJhbmdlKGxpbmVfbnVt
YmVyLCBjbGVhbl9saW5lcy5udW1fbGluZXMoKSk6CiAgICAgICAgIHN0YXJ0X2xpbmUgPSBjbGVh
bl9saW5lcy5lbGlkZWRbc3RhcnRfbGluZV9udW1iZXJdCiAgICAgICAgIGpvaW5lZF9saW5lICs9
ICcgJyArIHN0YXJ0X2xpbmUubHN0cmlwKCkKICAgICAgICAgYm9keV9tYXRjaCA9IHNlYXJjaChy
J3t8OycsIHN0YXJ0X2xpbmUpCkBAIC0zMzY4LDcgKzMzODcsNyBAQCBkZWYgY2hlY2tfbGFuZ3Vh
Z2UoZmlsZW5hbWUsIGNsZWFuX2xpbmVzCiAgICAgICAgIG5lc3RlZF9hbmdsZV9icmFja2V0X2Nv
dW50ID0gMQogICAgICAgICBwcmV2aW91c19jbG9zaW5nX2FuZ2xlX2JyYWNrZXRfaW5kZXggPSAt
MQogICAgICAgICBjbG9zaW5nX2FuZ2xlX2JyYWNrZXRfaW5kZXggPSA5ICMgVXNlZCBpZiBvbmx5
IG9uZSBwYWlyIG9mIGFuZ2xlIGJyYWNrZXRzLgotICAgICAgICBmb3IgaSBpbiB4cmFuZ2UoMTAs
IGxlbihtYXRjaF9saW5lKSAtIDEpOgorICAgICAgICBmb3IgaSBpbiByYW5nZSgxMCwgbGVuKG1h
dGNoX2xpbmUpIC0gMSk6CiAgICAgICAgICAgICBpZiBtYXRjaF9saW5lW2ldID09ICc8JzoKICAg
ICAgICAgICAgICAgICBuZXN0ZWRfYW5nbGVfYnJhY2tldF9jb3VudCArPSAxCiAgICAgICAgICAg
ICBpZiBtYXRjaF9saW5lW2ldID09ICc+JzoKQEAgLTMzODEsNyArMzQwMCw3IEBAIGRlZiBjaGVj
a19sYW5ndWFnZShmaWxlbmFtZSwgY2xlYW5fbGluZXMKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ1JldGFpblB0cjw+IHNob3VsZCBuZXZlciBjb250YWluIGEgdHlwZSB3aXRoIFwnKlwnLiBD
b3JyZWN0OiBSZXRhaW5QdHI8TlNTdHJpbmc+LCBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+LicpCiAg
ICAgICAgICAgICAgICAgYnJlYWsKIAotICAgIG1hdGNoZWQgPSByZS5jb21waWxlKCdeXHMqU09G
VF9MSU5LXyhQUklWQVRFXyk/RlJBTUVXT1JLLipcKChcUyspXCknKS5zZWFyY2gobGluZSkKKyAg
ICBtYXRjaGVkID0gcmUuY29tcGlsZShyJ15ccypTT0ZUX0xJTktfKFBSSVZBVEVfKT9GUkFNRVdP
UksuKlwoKFxTKylcKScpLnNlYXJjaChsaW5lKQogICAgIGlmIG1hdGNoZWQ6CiAgICAgICAgIGZy
YW1ld29ya19uYW1lID0gbWF0Y2hlZC5ncm91cCgyKQogICAgICAgICBpZiBmaWxlX2V4dGVuc2lv
biA9PSAnaCcgYW5kIG5vdCBzZWFyY2gocideXHMqU09GVF9MSU5LXyhQUklWQVRFXyk/RlJBTUVX
T1JLX0ZPUl9IRUFERVIuKlwoJywgbGluZSk6CkBAIC0zODgyLDcgKzM5MDEsNyBAQCBkZWYgY2hl
Y2tfZm9yX2luY2x1ZGVfd2hhdF95b3VfdXNlKGZpbGVuCiAgICAgcmVxdWlyZWQgPSB7fSAgIyBB
IG1hcCBvZiBoZWFkZXIgbmFtZSB0byBsaW5lX251bWJlciBhbmQgdGhlIHRlbXBsYXRlIGVudGl0
eS4KICAgICAgICAgIyBFeGFtcGxlIG9mIHJlcXVpcmVkOiB7ICc8ZnVuY3Rpb25hbD4nOiAoMTIx
OSwgJ2xlc3M8PicpIH0KIAotICAgIGZvciBsaW5lX251bWJlciBpbiB4cmFuZ2UoY2xlYW5fbGlu
ZXMubnVtX2xpbmVzKCkpOgorICAgIGZvciBsaW5lX251bWJlciBpbiByYW5nZShjbGVhbl9saW5l
cy5udW1fbGluZXMoKSk6CiAgICAgICAgIGxpbmUgPSBjbGVhbl9saW5lcy5lbGlkZWRbbGluZV9u
dW1iZXJdCiAgICAgICAgIGlmIG5vdCBsaW5lIG9yIGxpbmVbMF0gPT0gJyMnOgogICAgICAgICAg
ICAgY29udGludWUKQEAgLTM5MjUsNyArMzk0NCw3IEBAIGRlZiBjaGVja19mb3JfaW5jbHVkZV93
aGF0X3lvdV91c2UoZmlsZW4KIAogICAgICMgaW5jbHVkZV9zdGF0ZSBpcyBtb2RpZmllZCBkdXJp
bmcgaXRlcmF0aW9uLCBzbyB3ZSBpdGVyYXRlIG92ZXIgYSBjb3B5IG9mCiAgICAgIyB0aGUga2V5
cy4KLSAgICBmb3IgaGVhZGVyIGluIGluY2x1ZGVfc3RhdGUua2V5cygpOiAgIyBOT0xJTlQKKyAg
ICBmb3IgaGVhZGVyIGluIGxpc3QoaW5jbHVkZV9zdGF0ZS5rZXlzKCkpOiAgIyBOT0xJTlQKICAg
ICAgICAgKHNhbWVfbW9kdWxlLCBjb21tb25fcGF0aCkgPSBmaWxlc19iZWxvbmdfdG9fc2FtZV9t
b2R1bGUoYWJzX2ZpbGVuYW1lLCBoZWFkZXIpCiAgICAgICAgIGZ1bGxwYXRoID0gY29tbW9uX3Bh
dGggKyBoZWFkZXIKICAgICAgICAgaWYgc2FtZV9tb2R1bGUgYW5kIHVwZGF0ZV9pbmNsdWRlX3N0
YXRlKGZ1bGxwYXRoLCBpbmNsdWRlX3N0YXRlKToKQEAgLTQwNTAsNyArNDA2OSw3IEBAIGRlZiBf
cHJvY2Vzc19saW5lcyhmaWxlbmFtZSwgZmlsZV9leHRlbnMKICAgICBmaWxlX3N0YXRlID0gX0Zp
bGVTdGF0ZShjbGVhbl9saW5lcywgZmlsZV9leHRlbnNpb24pCiAgICAgZW51bV9zdGF0ZSA9IF9F
bnVtU3RhdGUoKQogICAgIGFzbV9zdGF0ZSA9IF9JbmxpbmVBU01TdGF0ZSgpCi0gICAgZm9yIGxp
bmUgaW4geHJhbmdlKGNsZWFuX2xpbmVzLm51bV9saW5lcygpKToKKyAgICBmb3IgbGluZSBpbiBy
YW5nZShjbGVhbl9saW5lcy5udW1fbGluZXMoKSk6CiAgICAgICAgIHByb2Nlc3NfbGluZShmaWxl
bmFtZSwgZmlsZV9leHRlbnNpb24sIGNsZWFuX2xpbmVzLCBsaW5lLAogICAgICAgICAgICAgICAg
ICAgICAgaW5jbHVkZV9zdGF0ZSwgZnVuY3Rpb25fc3RhdGUsIGNsYXNzX3N0YXRlLCBmaWxlX3N0
YXRlLAogICAgICAgICAgICAgICAgICAgICAgZW51bV9zdGF0ZSwgYXNtX3N0YXRlLCBlcnJvcikK
SW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwX3VuaXR0ZXN0
LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMv
Y3BwX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNTIzNjkpCisrKyBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L3N0eWxlL2NoZWNrZXJzL2NwcF91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtNDAs
OSArNDAsMTAgQEAgaW1wb3J0IG9zCiBpbXBvcnQgcmFuZG9tCiBpbXBvcnQgcmUKIGltcG9ydCB1
bml0dGVzdAotaW1wb3J0IGNwcCBhcyBjcHBfc3R5bGUKLWZyb20gY3BwIGltcG9ydCBDcHBDaGVj
a2VyCi1mcm9tIC4uZmlsdGVyIGltcG9ydCBGaWx0ZXJDb25maWd1cmF0aW9uCitmcm9tIHdlYmtp
dHB5LmNvbW1vbi51bmljb2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0IGRlY29kZV9pZl9uZWNlc3Nh
cnkKK2Zyb20gd2Via2l0cHkuc3R5bGUuY2hlY2tlcnMgaW1wb3J0IGNwcCBhcyBjcHBfc3R5bGUK
K2Zyb20gd2Via2l0cHkuc3R5bGUuY2hlY2tlcnMuY3BwIGltcG9ydCBDcHBDaGVja2VyCitmcm9t
IHdlYmtpdHB5LnN0eWxlLmZpbHRlciBpbXBvcnQgRmlsdGVyQ29uZmlndXJhdGlvbgogCiAKICMg
VGhpcyBjbGFzcyB3b3JrcyBhcyBhbiBlcnJvciBjb2xsZWN0b3IgYW5kIHJlcGxhY2VzIGNwcF9z
dHlsZS5FcnJvcgpAQCAtMjQ0Nyw3ICsyNDQ4LDcgQEAgY2xhc3MgQ3BwU3R5bGVUZXN0KENwcFN0
eWxlVGVzdEJhc2UpOgogICAgICAgICBkZWYgZG9fdGVzdChzZWxmLCByYXdfYnl0ZXMsIGhhc19p
bnZhbGlkX3V0ZjgpOgogICAgICAgICAgICAgZXJyb3JfY29sbGVjdG9yID0gRXJyb3JDb2xsZWN0
b3Ioc2VsZi5hc3NlcnRUcnVlKQogICAgICAgICAgICAgc2VsZi5wcm9jZXNzX2ZpbGVfZGF0YSgn
Zm9vLmNwcCcsICdjcHAnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlj
b2RlKHJhd19ieXRlcywgJ3V0ZjgnLCAncmVwbGFjZScpLnNwbGl0KCdcbicpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGVfaWZfbmVjZXNzYXJ5KHJhd19ieXRlcywg
ZW5jb2Rpbmc9J3V0ZjgnLCBlcnJvcnM9J3JlcGxhY2UnKS5zcGxpdCgnXG4nKSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfY29sbGVjdG9yKQogICAgICAgICAgICAg
IyBUaGUgd2FybmluZyBhcHBlYXJzIG9ubHkgb25jZS4KICAgICAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoCkBAIC0yNDU3LDEyICsyNDU4LDEyIEBAIGNsYXNzIENwcFN0eWxlVGVzdChDcHBTdHls
ZVRlc3RCYXNlKToKICAgICAgICAgICAgICAgICAgICAgJyAob3IgVW5pY29kZSByZXBsYWNlbWVu
dCBjaGFyYWN0ZXIpLicKICAgICAgICAgICAgICAgICAgICAgJyAgW3JlYWRhYmlsaXR5L3V0Zjhd
IFs1XScpKQogCi0gICAgICAgIGRvX3Rlc3Qoc2VsZiwgJ0hlbGxvIHdvcmxkXG4nLCBGYWxzZSkK
LSAgICAgICAgZG9fdGVzdChzZWxmLCAnXHhlOVx4OGVceGJkXG4nLCBGYWxzZSkKLSAgICAgICAg
ZG9fdGVzdChzZWxmLCAnXHhlOXhceDhlXHhiZFxuJywgVHJ1ZSkKKyAgICAgICAgZG9fdGVzdChz
ZWxmLCBiJ0hlbGxvIHdvcmxkXG4nLCBGYWxzZSkKKyAgICAgICAgZG9fdGVzdChzZWxmLCBiJ1x4
ZTlceDhlXHhiZFxuJywgRmFsc2UpCisgICAgICAgIGRvX3Rlc3Qoc2VsZiwgYidceGU5eFx4OGVc
eGJkXG4nLCBUcnVlKQogICAgICAgICAjIFRoaXMgaXMgdGhlIGVuY29kaW5nIG9mIHRoZSByZXBs
YWNlbWVudCBjaGFyYWN0ZXIgaXRzZWxmICh3aGljaAogICAgICAgICAjIHlvdSBjYW4gc2VlIGJ5
IGV2YWx1YXRpbmcgY29kZWNzLmdldGVuY29kZXIoJ3V0ZjgnKSh1J1x1ZmZmZCcpKS4KLSAgICAg
ICAgZG9fdGVzdChzZWxmLCAnXHhlZlx4YmZceGJkXG4nLCBUcnVlKQorICAgICAgICBkb190ZXN0
KHNlbGYsIGInXHhlZlx4YmZceGJkXG4nLCBUcnVlKQogCiAgICAgZGVmIHRlc3RfaXNfYmxhbmtf
bGluZShzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNwcF9zdHlsZS5pc19ibGFua19s
aW5lKCcnKSkKQEAgLTI3ODYsNyArMjc4Nyw3IEBAIGNsYXNzIENwcFN0eWxlVGVzdChDcHBTdHls
ZVRlc3RCYXNlKToKICAgICAgICAgICAgIG90aGVyX2RlY2xfc3BlY3MgPSBbcmFuZG9tLmNob2lj
ZShxdWFsaWZpZXJzKSwgcmFuZG9tLmNob2ljZShzaWducyksCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJhbmRvbS5jaG9pY2UodHlwZXMpXQogICAgICAgICAgICAgIyByZW1vdmUg
Tm9uZQotICAgICAgICAgICAgb3RoZXJfZGVjbF9zcGVjcyA9IGZpbHRlcihsYW1iZGEgeDogeCBp
cyBub3QgTm9uZSwgb3RoZXJfZGVjbF9zcGVjcykKKyAgICAgICAgICAgIG90aGVyX2RlY2xfc3Bl
Y3MgPSBsaXN0KGZpbHRlcihsYW1iZGEgeDogeCBpcyBub3QgTm9uZSwgb3RoZXJfZGVjbF9zcGVj
cykpCiAKICAgICAgICAgICAgICMgc2h1ZmZsZQogICAgICAgICAgICAgcmFuZG9tLnNodWZmbGUo
b3RoZXJfZGVjbF9zcGVjcykKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hl
Y2tlcnMvanMucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9j
aGVja2Vycy9qcy5weQkocmV2aXNpb24gMjUyMzY5KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9zdHlsZS9jaGVja2Vycy9qcy5weQkod29ya2luZyBjb3B5KQpAQCAtMzAsOCArMzAsOCBAQCBT
dXBwb3J0cyBjaGVja2luZyBXZWJLaXQgc3R5bGUgaW4gSmF2YVNjCiBUaGlzIGNoZWNrZXIgaXMg
b25seSB1c2VkIHRvIGNoZWNrIFdlYkluc3BlY3RvciBKYXZhU2NyaXB0IGZpbGVzLgogIiIiCiAK
LWZyb20gY29tbW9uIGltcG9ydCBUYWJDaGVja2VyCiBpbXBvcnQgcmUKK2Zyb20gd2Via2l0cHku
c3R5bGUuY2hlY2tlcnMuY29tbW9uIGltcG9ydCBUYWJDaGVja2VyCiAKIAogY2xhc3MgSlNDaGVj
a2VyKG9iamVjdCk6CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJz
L2pzX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5
bGUvY2hlY2tlcnMvanNfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI1MjM2OSkKKysrIFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvanNfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29w
eSkKQEAgLTMxLDcgKzMxLDcgQEAKIAogaW1wb3J0IHVuaXR0ZXN0CiAKLWZyb20ganMgaW1wb3J0
IEpTQ2hlY2tlcgorZnJvbSB3ZWJraXRweS5zdHlsZS5jaGVja2Vycy5qcyBpbXBvcnQgSlNDaGVj
a2VyCiAKIAogY2xhc3MgSlNUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CkluZGV4OiBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2pzb25jaGVja2VyLnB5Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvanNvbmNoZWNrZXIu
cHkJKHJldmlzaW9uIDI1MjM2OSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hl
Y2tlcnMvanNvbmNoZWNrZXIucHkJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDYgQEAKIAog
aW1wb3J0IGpzb24KIGltcG9ydCByZQotZnJvbSBzZXRzIGltcG9ydCBTZXQKIAogCiBjbGFzcyBK
U09OQ2hlY2tlcihvYmplY3QpOgpAQCAtNzAsNyArNjksNyBAQCBjbGFzcyBKU09ORmVhdHVyZXND
aGVja2VyKEpTT05DaGVja2VyKToKICAgICAgICAgICAgICAgICBzZWxmLl9oYW5kbGVfc3R5bGVf
ZXJyb3IoMCwgJ2pzb24vc3ludGF4JywgNSwgJyJmZWF0dXJlcyIga2V5IG5vdCBmb3VuZCwgdGhl
IGtleSBpcyBtYW5kYXRvcnkuJykKICAgICAgICAgICAgICAgICByZXR1cm4KIAotICAgICAgICAg
ICAgc3BlY2lmaWNhdGlvbl9uYW1lX3NldCA9IFNldCgpCisgICAgICAgICAgICBzcGVjaWZpY2F0
aW9uX25hbWVfc2V0ID0gc2V0KCkKICAgICAgICAgICAgIGlmICdzcGVjaWZpY2F0aW9uJyBpbiBm
ZWF0dXJlc19kZWZpbml0aW9uOgogICAgICAgICAgICAgICAgIHByZXZpb3VzX3NwZWNpZmljYXRp
b25fbmFtZSA9ICcnCiAgICAgICAgICAgICAgICAgZm9yIHNwZWNpZmljYXRpb25fb2JqZWN0IGlu
IGZlYXR1cmVzX2RlZmluaXRpb25bJ3NwZWNpZmljYXRpb24nXToKSW5kZXg6IFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvanNvbmNoZWNrZXJfdW5pdHRlc3QucHkKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9qc29uY2hlY2tl
cl91bml0dGVzdC5weQkocmV2aXNpb24gMjUyMzY5KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9zdHlsZS9jaGVja2Vycy9qc29uY2hlY2tlcl91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpA
QCAtMjIsOSArMjIsMTAgQEAKIAogIiIiVW5pdCB0ZXN0IGZvciBqc29uY2hlY2tlci5weS4iIiIK
IAoraW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiAKLWltcG9ydCBqc29uY2hlY2tlcgorZnJv
bSB3ZWJraXRweS5zdHlsZS5jaGVja2VycyBpbXBvcnQganNvbmNoZWNrZXIKIAogCiBjbGFzcyBN
b2NrRXJyb3JIYW5kbGVyKG9iamVjdCk6CkBAIC04MSw3ICs4Miw3IEBAIGNsYXNzIEpTT05DaGVj
a2VyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSkKICAgICAgICAgcGFzcwogCiAgICAgZGVmIHRlc3Rf
Y29uZmxpY3RfbWFya2VyKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydF9lcnJvcigwLCAnanNv
bi9zeW50YXgnLCAnPDw8PDw8PCBIRUFEXG57XG59XG4nKQorICAgICAgICBzZWxmLmFzc2VydF9l
cnJvcigxIGlmIHN5cy52ZXJzaW9uX2luZm8gPiAoMywgMCkgZWxzZSAwLCAnanNvbi9zeW50YXgn
LCAnPDw8PDw8PCBIRUFEXG57XG59XG4nKQogCiAgICAgZGVmIHRlc3Rfc2luZ2xlX3F1b3RlKHNl
bGYpOgogICAgICAgICBzZWxmLmFzc2VydF9lcnJvcigyLCAnanNvbi9zeW50YXgnLCAie1xuJ3Ns
YXZlcyc6IFtdXG59XG4iKQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVj
a2Vycy9qc3Rlc3RfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9zdHlsZS9jaGVja2Vycy9qc3Rlc3RfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI1MjM2OSkK
KysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvanN0ZXN0X3VuaXR0ZXN0
LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKIGltcG9ydCB1bml0dGVzdAog
Ci1mcm9tIGpzdGVzdCBpbXBvcnQgbWFwX2Z1bmN0aW9uc190b19kaWN0Citmcm9tIHdlYmtpdHB5
LnN0eWxlLmNoZWNrZXJzLmpzdGVzdCBpbXBvcnQgbWFwX2Z1bmN0aW9uc190b19kaWN0CiAKIAog
Y2xhc3MgSlNUZXN0Q2hlY2tlclRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKSW5kZXg6IFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvbWVzc2FnZXNpbi5weQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL21lc3NhZ2VzaW4u
cHkJKHJldmlzaW9uIDI1MjM2OSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hl
Y2tlcnMvbWVzc2FnZXNpbi5weQkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogIiIi
Q2hlY2tzIFdlYktpdCBzdHlsZSBmb3IgLm1lc3NhZ2VzLmluIGZpbGVzLiIiIgogCiBpbXBvcnQg
cmUKLWZyb20gY29tbW9uIGltcG9ydCBUYWJDaGVja2VyCitmcm9tIHdlYmtpdHB5LnN0eWxlLmNo
ZWNrZXJzLmNvbW1vbiBpbXBvcnQgVGFiQ2hlY2tlcgogCiAKIGNsYXNzIE1lc3NhZ2VzSW5DaGVj
a2VyKG9iamVjdCk6CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJz
L21lc3NhZ2VzaW5fdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9zdHlsZS9jaGVja2Vycy9tZXNzYWdlc2luX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNTIz
NjkpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL21lc3NhZ2VzaW5f
dW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKIAogaW1wb3J0IHVu
aXR0ZXN0CiAKLWZyb20gbWVzc2FnZXNpbiBpbXBvcnQgTWVzc2FnZXNJbkNoZWNrZXIKK2Zyb20g
d2Via2l0cHkuc3R5bGUuY2hlY2tlcnMubWVzc2FnZXNpbiBpbXBvcnQgTWVzc2FnZXNJbkNoZWNr
ZXIKIAogCiBjbGFzcyBNZXNzYWdlc0luQ2hlY2tlclN0eWxlVGVzdENhc2UodW5pdHRlc3QuVGVz
dENhc2UpOgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9wbmdf
dW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9j
aGVja2Vycy9wbmdfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI1MjM2OSkKKysrIFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvcG5nX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkp
CkBAIC0yNSw3ICsyNSw3IEBACiAKIGltcG9ydCB1bml0dGVzdAogCi1mcm9tIHBuZyBpbXBvcnQg
UE5HQ2hlY2tlcgorZnJvbSB3ZWJraXRweS5zdHlsZS5jaGVja2Vycy5wbmcgaW1wb3J0IFBOR0No
ZWNrZXIKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5maWxlc3lzdGVtX21vY2sgaW1wb3J0
IE1vY2tGaWxlU3lzdGVtCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uc3lzdGVtaG9zdF9t
b2NrIGltcG9ydCBNb2NrU3lzdGVtSG9zdAogCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3N0eWxlL2NoZWNrZXJzL3B5dGhvbi5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3N0eWxlL2NoZWNrZXJzL3B5dGhvbi5weQkocmV2aXNpb24gMjUyMzY5KQorKysgVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9weXRob24ucHkJKHdvcmtpbmcgY29w
eSkKQEAgLTI0LDkgKzI0LDExIEBACiAiIiJTdXBwb3J0cyBjaGVja2luZyBXZWJLaXQgc3R5bGUg
aW4gUHl0aG9uIGZpbGVzLiIiIgogCiBpbXBvcnQgcmUKLWZyb20gU3RyaW5nSU8gaW1wb3J0IFN0
cmluZ0lPCitpbXBvcnQgc3lzCiAKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5maWxlc3lz
dGVtIGltcG9ydCBGaWxlU3lzdGVtCitmcm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2RlX2NvbXBh
dGliaWxpdHkgaW1wb3J0IFN0cmluZ0lPCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ub3V0
cHV0Y2FwdHVyZSBpbXBvcnQgT3V0cHV0Q2FwdHVyZVNjb3BlCiBmcm9tIHdlYmtpdHB5LmNvbW1v
bi53ZWJraXRfZmluZGVyIGltcG9ydCBXZWJLaXRGaW5kZXIKIGZyb20gd2Via2l0cHkudGhpcmRw
YXJ0eS5hdXRvaW5zdGFsbGVkIGltcG9ydCBwZXA4CiBmcm9tIHdlYmtpdHB5LnRoaXJkcGFydHku
YXV0b2luc3RhbGxlZC5weWxpbnQgaW1wb3J0IGxpbnQKQEAgLTQxLDcgKzQzLDEwIEBAIGNsYXNz
IFB5dGhvbkNoZWNrZXIob2JqZWN0KToKIAogICAgIGRlZiBjaGVjayhzZWxmLCBsaW5lcyk6CiAg
ICAgICAgIHNlbGYuX2NoZWNrX3BlcDgobGluZXMpCi0gICAgICAgIHNlbGYuX2NoZWNrX3B5bGlu
dChsaW5lcykKKyAgICAgICAgIyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIwNDEzMworICAgICAgICAjIFB5bGludCBjYW4ndCBsaXZlIGhhcHBpbHkgaW4g
cHl0aG9uIDIgYW5kIDMgd29ybGQsIHdlIG5lZWQgdG8gcGljayBvbmUKKyAgICAgICAgaWYgc3lz
LnZlcnNpb25faW5mbyA8ICgzLCAwKToKKyAgICAgICAgICAgIHNlbGYuX2NoZWNrX3B5bGludChs
aW5lcykKIAogICAgIGRlZiBfY2hlY2tfcGVwOChzZWxmLCBsaW5lcyk6CiAgICAgICAgICMgSW5p
dGlhbGl6ZSBwZXA4Lm9wdGlvbnMsIHdoaWNoIGlzIG5lY2Vzc2FyeSBmb3IKQEAgLTcxLDEwICs3
NiwxMSBAQCBjbGFzcyBQeXRob25DaGVja2VyKG9iamVjdCk6CiAgICAgICAgICMgZmlsdGVyaW5n
IHdhcm5pbmdzIHVzaW5nIHRoZSBydWxlcyBpbiBzdHlsZS9jaGVja2VyLnB5IGluc3RlYWQuCiAg
ICAgICAgIG91dHB1dCA9IHB5bGludGVyLnJ1bihbJy1FJywgc2VsZi5fZmlsZV9wYXRoXSkKIAot
ICAgICAgICBsaW50X3JlZ2V4ID0gcmUuY29tcGlsZSgnKFteOl0rKTooW146XSspOiBcWyhbXl1d
KylcXSAoLiopJykKKyAgICAgICAgbGludF9yZWdleCA9IHJlLmNvbXBpbGUocicoW146XSspOihb
XjpdKyk6IFxbKFteXV0rKVxdICguKiknKQogICAgICAgICBmb3IgZXJyb3IgaW4gb3V0cHV0Lmdl
dHZhbHVlKCkuc3BsaXRsaW5lcygpOgogICAgICAgICAgICAgbWF0Y2hfb2JqID0gbGludF9yZWdl
eC5tYXRjaChlcnJvcikKLSAgICAgICAgICAgIGFzc2VydChtYXRjaF9vYmopCisgICAgICAgICAg
ICBpZiBub3QgbWF0Y2hfb2JqOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAg
ICBsaW5lX251bWJlciA9IGludChtYXRjaF9vYmouZ3JvdXAoMikpCiAgICAgICAgICAgICBjYXRl
Z29yeV9hbmRfbWV0aG9kID0gbWF0Y2hfb2JqLmdyb3VwKDMpLnNwbGl0KCcsICcpCiAgICAgICAg
ICAgICBjYXRlZ29yeSA9ICdweWxpbnQvJyArIChjYXRlZ29yeV9hbmRfbWV0aG9kWzBdKQpAQCAt
MTA0LDcgKzExMCw4IEBAIGNsYXNzIFB5bGludGVyKG9iamVjdCk6CiAKICAgICBkZWYgcnVuKHNl
bGYsIGFyZ3YpOgogICAgICAgICBvdXRwdXQgPSBfRmlsdGVyZWRTdHJpbmdJTyhzZWxmLkZBTFNF
X1BPU0lUSVZFUykKLSAgICAgICAgbGludC5SdW4oWyctLXJjZmlsZScsIHNlbGYuX3B5bGludHJj
XSArIGFyZ3YsIHJlcG9ydGVyPVBhcnNlYWJsZVRleHRSZXBvcnRlcihvdXRwdXQ9b3V0cHV0KSwg
ZXhpdD1GYWxzZSkKKyAgICAgICAgd2l0aCBPdXRwdXRDYXB0dXJlU2NvcGUoKToKKyAgICAgICAg
ICAgIGxpbnQuUnVuKFsnLS1yY2ZpbGUnLCBzZWxmLl9weWxpbnRyY10gKyBhcmd2LCByZXBvcnRl
cj1QYXJzZWFibGVUZXh0UmVwb3J0ZXIob3V0cHV0PW91dHB1dCksIGV4aXQ9RmFsc2UpCiAgICAg
ICAgIHJldHVybiBvdXRwdXQKIAogCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxl
L2NoZWNrZXJzL3B5dGhvbl91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL3B5dGhvbl91bml0dGVzdC5weQkocmV2aXNpb24gMjUy
MzY5KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9weXRob25fdW5p
dHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTIzLDkgKzIzLDEwIEBACiAiIiJVbml0IHRlc3Rz
IGZvciBweXRob24ucHkuIiIiCiAKIGltcG9ydCBvcworaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0
ZXN0CiAKLWZyb20gcHl0aG9uIGltcG9ydCBQeXRob25DaGVja2VyCitmcm9tIHdlYmtpdHB5LnN0
eWxlLmNoZWNrZXJzLnB5dGhvbiBpbXBvcnQgUHl0aG9uQ2hlY2tlcgogCiAKIGNsYXNzIFB5dGhv
bkNoZWNrZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTQ2LDggKzQ3LDcgQEAgY2xhc3Mg
UHl0aG9uQ2hlY2tlclRlc3QodW5pdHRlc3QuVGVzdENhcwogICAgICAgICAiIiJUZXN0IGNoZWNr
KCkgbWV0aG9kLiIiIgogICAgICAgICBlcnJvcnMgPSBbXQogCi0gICAgICAgIGRlZiBfbW9ja19o
YW5kbGVfc3R5bGVfZXJyb3IobGluZV9udW1iZXIsIGNhdGVnb3J5LCBjb25maWRlbmNlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UpOgorICAgICAgICBkZWYg
X21vY2tfaGFuZGxlX3N0eWxlX2Vycm9yKGxpbmVfbnVtYmVyLCBjYXRlZ29yeSwgY29uZmlkZW5j
ZSwgbWVzc2FnZSk6CiAgICAgICAgICAgICBlcnJvciA9IChsaW5lX251bWJlciwgY2F0ZWdvcnks
IGNvbmZpZGVuY2UsIG1lc3NhZ2UpCiAgICAgICAgICAgICBlcnJvcnMuYXBwZW5kKGVycm9yKQog
CkBAIC01NywxMCArNTcsMTIgQEAgY2xhc3MgUHl0aG9uQ2hlY2tlclRlc3QodW5pdHRlc3QuVGVz
dENhcwogICAgICAgICBjaGVja2VyID0gUHl0aG9uQ2hlY2tlcihmaWxlX3BhdGgsIF9tb2NrX2hh
bmRsZV9zdHlsZV9lcnJvcikKICAgICAgICAgY2hlY2tlci5jaGVjayhsaW5lcz1bXSkKIAotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGVycm9ycywgWwotICAgICAgICAgICAgKDQsICJwZXA4L1cy
OTEiLCA1LCAidHJhaWxpbmcgd2hpdGVzcGFjZSIpLAotICAgICAgICAgICAgKDQsICJweWxpbnQv
RTA2MDIiLCA1LCAiVW5kZWZpbmVkIHZhcmlhYmxlICdlcnJvciciKSwKLSAgICAgICAgICAgIF0p
CisgICAgICAgICMgRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDQxMzMKKyAgICAgICAgZXhwZWN0ZWRfZXJyb3JzID0gWyg0LCAicGVwOC9XMjkxIiwgNSwg
InRyYWlsaW5nIHdoaXRlc3BhY2UiKV0KKyAgICAgICAgaWYgc3lzLnZlcnNpb25faW5mbyA8ICgz
LCAwKToKKyAgICAgICAgICAgIGV4cGVjdGVkX2Vycm9ycy5hcHBlbmQoKDQsICJweWxpbnQvRTA2
MDIodW5kZWZpbmVkLXZhcmlhYmxlKSIsIDUsICJbXSBVbmRlZmluZWQgdmFyaWFibGUgJ2Vycm9y
JyIpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXJyb3JzLCBleHBlY3RlZF9lcnJvcnMp
CiAKICAgICBkZWYgdGVzdF9weWxpbnRfZmFsc2VfcG9zaXRpdmVzKHNlbGYpOgogICAgICAgICAi
IiJUZXN0IHRoYXQgcHlsaW50IGZhbHNlIHBvc2l0aXZlcyBhcmUgc3VwcHJlc3NlZC4iIiIKSW5k
ZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvcHl0aG9uX3VuaXR0ZXN0
X2ZhbHNlcG9zaXRpdmVzLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
c3R5bGUvY2hlY2tlcnMvcHl0aG9uX3VuaXR0ZXN0X2ZhbHNlcG9zaXRpdmVzLnB5CShyZXZpc2lv
biAyNTIzNjkpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL3B5dGhv
bl91bml0dGVzdF9mYWxzZXBvc2l0aXZlcy5weQkod29ya2luZyBjb3B5KQpAQCAtNSw4ICs1LDEx
IEBAIGltcG9ydCBzdWJwcm9jZXNzCiAKIAogZGVmIHRlc3RfcG9wZW4ocHJvYyk6Ci0gICAgcCA9
IHN1YnByb2Nlc3MuUG9wZW4ocHJvYywgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VUKQorICAgIHAgPSBz
dWJwcm9jZXNzLlBvcGVuKAorICAgICAgICBwcm9jLAorICAgICAgICBzdGRvdXQ9c3VicHJvY2Vz
cy5QSVBFLAorICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQsCisgICAgKQogICAgIHRt
cDEgPSBwLnBvbGwKICAgICB0bXAyID0gcC5yZXR1cm5jb2RlCiAgICAgdG1wMyA9IHAuc3RkaW4K
SW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvcHl0aG9uX3VuaXR0
ZXN0X2lucHV0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUv
Y2hlY2tlcnMvcHl0aG9uX3VuaXR0ZXN0X2lucHV0LnB5CShyZXZpc2lvbiAyNTIzNjkpCisrKyBU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL3B5dGhvbl91bml0dGVzdF9pbnB1
dC5weQkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKICMgVGhpcyBmaWxlIGlzIHNhbXBs
ZSBpbnB1dCBmb3IgcHl0aG9uX3VuaXR0ZXN0LnB5IGFuZCBpbmNsdWRlcyB0d28KICMgcHJvYmxl
bXMsIG9uZSB0aGF0IHdpbGwgZ2VuZXJhdGUgYSBQRVAtOCB3YXJuaW5nIGZvciB0cmFpbGluZyB3
aGl0ZXNwYWNlCiAjIGFuZCBvbmUgdGhhdCB3aWxsIGdlbmVyYXRlIGEgcHlsaW50IGVycm9yIGZv
ciBhbiB1bmRlZmluZWQgdmFyaWFibGUuCi1wcmludCBlcnJvcigpIAorcHJpbnQoZXJyb3IoKSkg
CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL3Rlc3RfZXhwZWN0
YXRpb25zLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hl
Y2tlcnMvdGVzdF9leHBlY3RhdGlvbnMucHkJKHJldmlzaW9uIDI1MjM2OSkKKysrIFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvdGVzdF9leHBlY3RhdGlvbnMucHkJKHdvcmtp
bmcgY29weSkKQEAgLTM0LDkgKzM0LDkgQEAgaW1wb3J0IG9zCiBpbXBvcnQgcmUKIGltcG9ydCBz
eXMKIAotZnJvbSBjb21tb24gaW1wb3J0IFRhYkNoZWNrZXIKIGZyb20gd2Via2l0cHkuY29tbW9u
Lmhvc3QgaW1wb3J0IEhvc3QKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscyBpbXBv
cnQgdGVzdF9leHBlY3RhdGlvbnMKK2Zyb20gd2Via2l0cHkuc3R5bGUuY2hlY2tlcnMuY29tbW9u
IGltcG9ydCBUYWJDaGVja2VyCiBmcm9tIHdlYmtpdHB5LnN0eWxlLmVycm9yX2hhbmRsZXJzIGlt
cG9ydCBEZWZhdWx0U3R5bGVFcnJvckhhbmRsZXIKIAogCkluZGV4OiBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3N0eWxlL2NoZWNrZXJzL3Rlc3RfZXhwZWN0YXRpb25zX3VuaXR0ZXN0LnB5Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvdGVzdF9leHBl
Y3RhdGlvbnNfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI1MjM2OSkKKysrIFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvdGVzdF9leHBlY3RhdGlvbnNfdW5pdHRlc3QucHkJKHdv
cmtpbmcgY29weSkKQEAgLTMwLDggKzMwLDggQEAgaW1wb3J0IG9zCiBpbXBvcnQgc3lzCiBpbXBv
cnQgdW5pdHRlc3QKIAotZnJvbSB0ZXN0X2V4cGVjdGF0aW9ucyBpbXBvcnQgVGVzdEV4cGVjdGF0
aW9uc0NoZWNrZXIKIGZyb20gd2Via2l0cHkuY29tbW9uLmhvc3RfbW9jayBpbXBvcnQgTW9ja0hv
c3QKK2Zyb20gd2Via2l0cHkuc3R5bGUuY2hlY2tlcnMudGVzdF9leHBlY3RhdGlvbnMgaW1wb3J0
IFRlc3RFeHBlY3RhdGlvbnNDaGVja2VyCiAKIAogY2xhc3MgRXJyb3JDb2xsZWN0b3Iob2JqZWN0
KToKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvdGV4dC5weQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL3RleHQu
cHkJKHJldmlzaW9uIDI1MjM2OSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hl
Y2tlcnMvdGV4dC5weQkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAogCiAiIiJDaGVj
a3MgV2ViS2l0IHN0eWxlIGZvciB0ZXh0IGZpbGVzLiIiIgogCi1mcm9tIGNvbW1vbiBpbXBvcnQg
VGFiQ2hlY2tlcgorZnJvbSB3ZWJraXRweS5zdHlsZS5jaGVja2Vycy5jb21tb24gaW1wb3J0IFRh
YkNoZWNrZXIKIAogCiBjbGFzcyBUZXh0Q2hlY2tlcihvYmplY3QpOgpJbmRleDogVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy90ZXh0X3VuaXR0ZXN0LnB5Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvdGV4dF91bml0dGVzdC5w
eQkocmV2aXNpb24gMjUyMzY5KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVj
a2Vycy90ZXh0X3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zMCw4ICszMCw4IEBACiAK
IGltcG9ydCB1bml0dGVzdAogCi1pbXBvcnQgdGV4dCBhcyB0ZXh0X3N0eWxlCi1mcm9tIHRleHQg
aW1wb3J0IFRleHRDaGVja2VyCitmcm9tIHdlYmtpdHB5LnN0eWxlLmNoZWNrZXJzIGltcG9ydCB0
ZXh0IGFzIHRleHRfc3R5bGUKK2Zyb20gd2Via2l0cHkuc3R5bGUuY2hlY2tlcnMudGV4dCBpbXBv
cnQgVGV4dENoZWNrZXIKIAogCiBjbGFzcyBUZXh0U3R5bGVUZXN0Q2FzZSh1bml0dGVzdC5UZXN0
Q2FzZSk6CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL3dhdGNo
bGlzdF91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0
eWxlL2NoZWNrZXJzL3dhdGNobGlzdF91bml0dGVzdC5weQkocmV2aXNpb24gMjUyMzY5KQorKysg
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy93YXRjaGxpc3RfdW5pdHRlc3Qu
cHkJKHdvcmtpbmcgY29weSkKQEAgLTMzLDggKzMzLDcgQEAKIAogaW1wb3J0IHVuaXR0ZXN0CiAK
LQotaW1wb3J0IHdhdGNobGlzdAorZnJvbSB3ZWJraXRweS5zdHlsZS5jaGVja2VycyBpbXBvcnQg
d2F0Y2hsaXN0CiAKIAogY2xhc3MgTW9ja0Vycm9ySGFuZGxlcihvYmplY3QpOgpJbmRleDogVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy94Y29kZXByb2pfdW5pdHRlc3QucHkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy94Y29k
ZXByb2pfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI1MjM2OSkKKysrIFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvc3R5bGUvY2hlY2tlcnMveGNvZGVwcm9qX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkp
CkBAIC0yNCw3ICsyNCw3IEBACiAiIiJVbml0IHRlc3QgZm9yIHhjb2RlcHJvai5weS4iIiIKIAog
aW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgeGNvZGVwcm9qCitmcm9tIHdlYmtpdHB5LnN0eWxlLmNo
ZWNrZXJzIGltcG9ydCB4Y29kZXByb2oKIAogCiBjbGFzcyBUZXN0RXJyb3JIYW5kbGVyKG9iamVj
dCk6CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL3htbF91bml0
dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNr
ZXJzL3htbF91bml0dGVzdC5weQkocmV2aXNpb24gMjUyMzY5KQorKysgVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9zdHlsZS9jaGVja2Vycy94bWxfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAg
LTIzLDcgKzIzLDcgQEAKICIiIlVuaXQgdGVzdCBmb3IgeG1sLnB5LiIiIgogCiBpbXBvcnQgdW5p
dHRlc3QKLWltcG9ydCB4bWwKK2Zyb20gd2Via2l0cHkuc3R5bGUuY2hlY2tlcnMgaW1wb3J0IHht
bAogCiAKIGNsYXNzIE1vY2tFcnJvckhhbmRsZXIob2JqZWN0KToKSW5kZXg6IFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9fX2luaXRfXy5weQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvX19pbml0X18ucHkJKHJldmlzaW9uIDI1MjM2OSkK
KysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9fX2luaXRfXy5weQkod29ya2lu
ZyBjb3B5KQpAQCAtMTUyLDggKzE1Miw4IEBAIGNsYXNzIEF1dG9pbnN0YWxsSW1wb3J0SG9vayhv
YmplY3QpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAia2V5cmluZy03LjMuMS9rZXly
aW5nIikKIAogICAgIGRlZiBfaW5zdGFsbF9wZXA4KHNlbGYpOgotICAgICAgICBzZWxmLl9pbnN0
YWxsKCJodHRwczovL2ZpbGVzLnB5dGhvbmhvc3RlZC5vcmcvcGFja2FnZXMvc291cmNlL3AvcGVw
OC9wZXA4LTAuNS4wLnRhci5neiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwZXA4
LTAuNS4wL3BlcDgucHkiKQorICAgICAgICBzZWxmLl9pbnN0YWxsKCJodHRwczovL2ZpbGVzLnB5
dGhvbmhvc3RlZC5vcmcvcGFja2FnZXMvMDEvYTAvNjRiYTE5NTE5ZGI0OWU0MDk0ZDgyNTk5NDEy
YTk2NjBkZWU4YzI2YTdhZGRiYmIxYmYxNzkyN2NlZWZlL3BlcDgtMS43LjEudGFyLmd6IiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgInBlcDgtMS43LjEvcGVwOC5weSIpCiAgICAgZGVm
IF9pbnN0YWxsX3B5Y29kZXN0eWxlKHNlbGYpOgogICAgICAgICBzZWxmLl9pbnN0YWxsKCJodHRw
czovL2ZpbGVzLnB5dGhvbmhvc3RlZC5vcmcvcGFja2FnZXMvc291cmNlL3AvcHljb2Rlc3R5bGUv
cHljb2Rlc3R5bGUtMi41LjAudGFyLmd6IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
InB5Y29kZXN0eWxlLTIuNS4wL3B5Y29kZXN0eWxlLnB5IikKQEAgLTI0MSw3ICsyNDEsMTYgQEAg
Y2xhc3MgQXV0b2luc3RhbGxJbXBvcnRIb29rKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgZmls
ZXNfdG9fcmVtb3ZlID0gWyd0ZXN0L2RhdGEvd3JpdGVfcHJvdGVjdGVkX2ZpbGUudHh0J10KICAg
ICAgICAgICAgIGluc3RhbGxlci5pbnN0YWxsKCJodHRwczovL2ZpbGVzLnB5dGhvbmhvc3RlZC5v
cmcvcGFja2FnZXMvc291cmNlL2wvbG9naWxhYi1jb21tb24vbG9naWxhYi1jb21tb24tMC41OC4x
LnRhci5neiIsIHVybF9zdWJwYXRoPSJsb2dpbGFiLWNvbW1vbi0wLjU4LjEiLCB0YXJnZXRfbmFt
ZT0ibG9naWxhYi9jb21tb24iLCBmaWxlc190b19yZW1vdmU9ZmlsZXNfdG9fcmVtb3ZlKQogICAg
ICAgICAgICAgaW5zdGFsbGVyLmluc3RhbGwoImh0dHBzOi8vZmlsZXMucHl0aG9uaG9zdGVkLm9y
Zy9wYWNrYWdlcy9zb3VyY2UvbC9sb2dpbGFiLWFzdG5nL2xvZ2lsYWItYXN0bmctMC4yNC4xLnRh
ci5neiIsIHVybF9zdWJwYXRoPSJsb2dpbGFiLWFzdG5nLTAuMjQuMSIsIHRhcmdldF9uYW1lPSJs
b2dpbGFiL2FzdG5nIikKLSAgICAgICAgICAgIGluc3RhbGxlci5pbnN0YWxsKCdodHRwczovL2Zp
bGVzLnB5dGhvbmhvc3RlZC5vcmcvcGFja2FnZXMvc291cmNlL3AvcHlsaW50L3B5bGludC0wLjI1
LjIudGFyLmd6JywgdXJsX3N1YnBhdGg9InB5bGludC0wLjI1LjIiLCB0YXJnZXRfbmFtZT0icHls
aW50IikKKyAgICAgICAgICAgIGluc3RhbGxlci5pbnN0YWxsKCJodHRwczovL2ZpbGVzLnB5dGhv
bmhvc3RlZC5vcmcvcGFja2FnZXMvNzUvYmYvZjBhZjVmY2M2ZGViNTNiM2E0ODBjMzQ4NzYzMmVl
YjYzMjRhM2FlNTFjZDIwMTYxODY1ODUzZjg3YzMxL2FzdHJvaWQtMS42LjYudGFyLmd6IiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybF9zdWJwYXRoPSJhc3Ryb2lkLTEuNi42L2Fz
dHJvaWQiKQorICAgICAgICAgICAgaW5zdGFsbGVyLmluc3RhbGwoImh0dHBzOi8vZmlsZXMucHl0
aG9uaG9zdGVkLm9yZy9wYWNrYWdlcy8wNy8zZi9hM2Q2ODdmODNjN2Q0NDk3MGY3MGZmMDQwMDY3
Nzc0NmM4ODYwYjExZjBjMDhmNmI0ZTA3MjA1ZjBjZGMvbGF6eS1vYmplY3QtcHJveHktMS40LjMu
dGFyLmd6IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybF9zdWJwYXRoPSJsYXp5
LW9iamVjdC1wcm94eS0xLjQuMy9zcmMvbGF6eV9vYmplY3RfcHJveHkiKQorICAgICAgICAgICAg
aW5zdGFsbGVyLmluc3RhbGwoImh0dHBzOi8vZmlsZXMucHl0aG9uaG9zdGVkLm9yZy9wYWNrYWdl
cy8yMy84NC8zMjNjMjQxNTI4MGJjNGZjODgwYWM1MDUwZGRkZmIzYzgwNjJjMjU1MmIzNGMyZTUx
MmViNGFhNjhmNzkvd3JhcHQtMS4xMS4yLnRhci5neiIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1cmxfc3VicGF0aD0id3JhcHQtMS4xMS4yL3NyYy93cmFwdCIpCisgICAgICAgICAg
ICBpbnN0YWxsZXIuaW5zdGFsbCgiaHR0cHM6Ly9maWxlcy5weXRob25ob3N0ZWQub3JnL3BhY2th
Z2VzLzQzLzAwLzg3MDVlOGQwYzA1YmEyMmYwNDI2MzRmNzkxYTYxZjRjNjc4YzMyMTc1NzYzZGNm
MmNhMmExMzNmNDczOS9pc29ydC00LjMuMjEudGFyLmd6IiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVybF9zdWJwYXRoPSJpc29ydC00LjMuMjEvaXNvcnQiKQorICAgICAgICAgICAg
aW5zdGFsbGVyLmluc3RhbGwoImh0dHBzOi8vZmlsZXMucHl0aG9uaG9zdGVkLm9yZy9wYWNrYWdl
cy8zZi8wYi80ZTdlZWFiMWFiZjU5NGI0NDczODVhMzQwNTkzYzFhNDI0NGNkZjhlNTRhNzhlZGNh
ZTFlMjc1NmQ2ZmIvcHlsaW50LTEuOS41LnRhci5neiIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1cmxfc3VicGF0aD0icHlsaW50LTEuOS41L3B5bGludCIpCiAKICAgICAjIGF1dG9p
bnN0YWxsZWQuYnVpbGRib3QgaXMgdXNlZCBieSBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJr
aXQub3JnLWNvbmZpZy9tYXN0ZXJjZmdfdW5pdHRlc3QucHkKICAgICAjIGFuZCBzaG91bGQgaWRl
YWxseSBtYXRjaCB0aGUgdmVyc2lvbiBvZiBCdWlsZEJvdCB1c2VkIGF0IGJ1aWxkLndlYmtpdC5v
cmcuCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383412</attachid>
            <date>2019-11-12 17:26:36 -0800</date>
            <delta_ts>2020-06-03 14:57:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203761-20191112172636.patch</filename>
            <type>text/plain</type>
            <size>36436</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI1MjM3OSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDYyIEBACisyMDE5LTExLTEyICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBQeXRob24gMzogQWRkIHN1cHBvcnQgaW4gd2Via2l0cHkuc3R5bGUuY2hl
Y2tlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
Mzc2MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
U2NyaXB0cy90ZXN0LXdlYmtpdHB5LXB5dGhvbjM6IEFkZCB3ZWJraXRweS5zdHlsZS5jaGVja2Vy
cy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvYnVpbGRlcnMucHk6CisgICAgICAg
IChhbGxfcG9ydF9uYW1lcyk6IENvbnZlcnQgbWFwIHRvIGEgbGlzdCBiZWZvcmUgY29uY2F0ZW5h
dGluZy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NoYW5nZWxv
Zy5weTogVXNlIGV4cGxpY2l0IGltcG9ydHMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9z
dHlsZS9jaGVja2Vycy9jaGFuZ2Vsb2dfdW5pdHRlc3QucHk6IERpdHRvLgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY21ha2UucHk6IERpdHRvLgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY21ha2VfdW5pdHRlc3QucHk6IERpdHRv
LgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY29tbW9uX3VuaXR0
ZXN0LnB5OiBEaXR0by4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJz
L2NvbnRyaWJ1dG9ycy5weTogRGl0dG8uCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHls
ZS9jaGVja2Vycy9jcHAucHk6CisgICAgICAgIChQb3NpdGlvbik6IEFkZCByaWNoIGNvbXBhcmlz
b24gZnVuY3Rpb25zLgorICAgICAgICAoY2hlY2tfZm9yX2NvcHlyaWdodCk6IFVzZSByYW5nZSBp
bnN0ZWFkIG9mIHhyYW5nZS4KKyAgICAgICAgKGRldGVjdF9mdW5jdGlvbnMpOiBEaXR0by4KKyAg
ICAgICAgKGNoZWNrX2xhbmd1YWdlKTogVXNlIHItc3RyaW5nLgorICAgICAgICAoY2hlY2tfZm9y
X2luY2x1ZGVfd2hhdF95b3VfdXNlKTogVXNlIHJhbmdlIGluc3RlYWQgb2YgeHJhbmdlLgorICAg
ICAgICAoX3Byb2Nlc3NfbGluZXMpOiBDb252ZXJ0IGl0ZXJhdG9yIHRvIGxpc3QsIHVzZSByYW5n
ZSBpbnN0ZWFkIG9mIHhyYW5nZS4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2No
ZWNrZXJzL2NwcF91bml0dGVzdC5weToKKyAgICAgICAgKENwcFN0eWxlVGVzdCk6IEJlIGV4cGxp
Y2l0IGFib3V0IGJ5dGVzIHZzIHN0cmluZ3MuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9z
dHlsZS9jaGVja2Vycy9qcy5weTogVXNlIGV4cGxpY2l0IGltcG9ydHMuCisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9qc191bml0dGVzdC5weTogRGl0dG8uCisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9qc29uY2hlY2tlci5weTogRGl0
dG8uCisgICAgICAgIChKU09ORmVhdHVyZXNDaGVja2VyLmNoZWNrKToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2pzb25jaGVja2VyX3VuaXR0ZXN0LnB5OiBEaXR0
by4KKyAgICAgICAgKEpTT05DaGVja2VyVGVzdC50ZXN0X2NvbmZsaWN0X21hcmtlcik6IERpZmZl
cmVudGlhdGUgYmV0d2VlbiBQeXRob24gMiBhbmQgMworICAgICAgICBqc29uIHBhcnNlcnMuCisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9qc3Rlc3RfdW5pdHRlc3Qu
cHk6IFVzZSBleHBsaWNpdCBpbXBvcnRzLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5
bGUvY2hlY2tlcnMvbWVzc2FnZXNpbi5weTogRGl0dG8uCisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS9zdHlsZS9jaGVja2Vycy9tZXNzYWdlc2luX3VuaXR0ZXN0LnB5OiBEaXR0by4KKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL3BuZ191bml0dGVzdC5weTogRGl0
dG8uCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9weXRob24ucHk6
CisgICAgICAgIChQeXRob25DaGVja2VyLmNoZWNrKTogT25seSBydW4gcHlsaW50IGluIFB5dGhv
biAyLgorICAgICAgICAoUHl0aG9uQ2hlY2tlci5fY2hlY2tfcHlsaW50KTogVXNlIHIgc3RyaW5n
LgorICAgICAgICAoUHlsaW50ZXIucnVuKTogU3VycHJlc3MgbG9nZ2luZyBmcm9tIFB5bGludC4K
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL3B5dGhvbl91bml0dGVz
dC5weTogVXNlIGV4cGxpY2l0IGltcG9ydHMuCisgICAgICAgIChQeXRob25DaGVja2VyVGVzdC50
ZXN0X2NoZWNrKTogQWRkIEZJWE1FIGZvciBydW5uaW5nIHB5bGludCBpbiBQeXRob24gMy4KKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL3B5dGhvbl91bml0dGVzdF9m
YWxzZXBvc2l0aXZlcy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNr
ZXJzL3B5dGhvbl91bml0dGVzdF9pbnB1dC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L3N0eWxlL2NoZWNrZXJzL3Rlc3RfZXhwZWN0YXRpb25zLnB5OiBVc2UgZXhwbGljaXQgaW1wb3J0
cy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL3Rlc3RfZXhwZWN0
YXRpb25zX3VuaXR0ZXN0LnB5OiBEaXR0by4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0
eWxlL2NoZWNrZXJzL3RleHQucHk6IERpdHRvLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
c3R5bGUvY2hlY2tlcnMvdGV4dF91bml0dGVzdC5weTogRGl0dG8uCisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy93YXRjaGxpc3RfdW5pdHRlc3QucHk6IERpdHRvLgor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMveGNvZGVwcm9qX3VuaXR0
ZXN0LnB5OiBEaXR0by4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJz
L3htbF91bml0dGVzdC5weTogRGl0dG8uCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHls
ZS9vcHRwYXJzZXJfdW5pdHRlc3QucHk6CisgICAgICAgIChBcmd1bWVudFBhcnNlclRlc3QudGVz
dF9wYXJzZV9kb2N1bWVudGF0aW9uKTogUmVtb3ZlIHBhcnNlIGxhbWJkYS4KKyAgICAgICAgKEFy
Z3VtZW50UGFyc2VyVGVzdC50ZXN0X3BhcnNlX2JhZF92YWx1ZXMpOiBEaXR0by4KKyAgICAgICAg
KEFyZ3VtZW50UGFyc2VyVGVzdC50ZXN0X3BhcnNlX2V4cGxpY2l0X2FyZ3VtZW50cyk6IERpdHRv
LgorICAgICAgICAoQXJndW1lbnRQYXJzZXJUZXN0LnRlc3RfcGFyc2VfZmlsZXMpOiBEaXR0by4K
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvX19pbml0X18ucHk6CisgICAg
ICAgIChBdXRvaW5zdGFsbEltcG9ydEhvb2suX2luc3RhbGxfcGVwOCk6IFVwZGF0ZSBwZXA4IHZl
cnNpb24uCisKIDIwMTktMTEtMTIgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5j
b20+CiAKICAgICAgICAgW2lPU10gV0tXZWJWaWV3IGRvZXMgbm90IHJlc3BlY3Qgc3lzdGVtIHNw
ZWxsY2hlY2tpbmcgcHJlZmVyZW5jZQpJbmRleDogVG9vbHMvU2NyaXB0cy90ZXN0LXdlYmtpdHB5
LXB5dGhvbjMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy90ZXN0LXdlYmtpdHB5LXB5dGhv
bjMJKHJldmlzaW9uIDI1MjM2OSkKKysrIFRvb2xzL1NjcmlwdHMvdGVzdC13ZWJraXRweS1weXRo
b24zCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3IEBAIFBZVEhPTjNfQ09NUEFUSUJMRV9E
SVJFQ1RPUklFUyA9IFsKICAgJ3dlYmtpdHB5LmxheW91dF90ZXN0cy5tb2RlbHMnLAogICAnd2Vi
a2l0cHkucG9ydCcsCiAgICd3ZWJraXRweS5yZXN1bHRzJywKKyAgJ3dlYmtpdHB5LnN0eWxlLmNo
ZWNrZXJzJywKICAgJ3dlYmtpdHB5Lnhjb2RlJywKIF0KIFNMT1dfVEVTVFMgPSBbCkluZGV4OiBU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvYnVpbGRlcnMucHkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2J1aWxkZXJzLnB5CShyZXZpc2lvbiAyNTIzNjkpCisr
KyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvYnVpbGRlcnMucHkJKHdvcmtpbmcgY29weSkK
QEAgLTEwMiw3ICsxMDIsNyBAQCBkZWYgYWxsX2J1aWxkZXJfbmFtZXMoKToKIAogCiBkZWYgYWxs
X3BvcnRfbmFtZXMoKToKLSAgICByZXR1cm4gc29ydGVkKHNldChtYXAobGFtYmRhIHg6IHhbInBv
cnRfbmFtZSJdLCBfZXhhY3RfbWF0Y2hlcy52YWx1ZXMoKSkgKyBfcG9ydHNfd2l0aG91dF9idWls
ZGVycykpCisgICAgcmV0dXJuIHNvcnRlZChzZXQobGlzdChtYXAobGFtYmRhIHg6IHhbInBvcnRf
bmFtZSJdLCBfZXhhY3RfbWF0Y2hlcy52YWx1ZXMoKSkpICsgX3BvcnRzX3dpdGhvdXRfYnVpbGRl
cnMpKQogCiAKIGRlZiByZWJhc2VsaW5lX292ZXJyaWRlX2RpcihidWlsZGVyX25hbWUpOgpJbmRl
eDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9vcHRwYXJzZXIucHkKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9vcHRwYXJzZXIucHkJKHJldmlzaW9uIDI1
MjM2OSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvb3B0cGFyc2VyLnB5CSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBAIGZyb20gb3B0cGFyc2UgaW1wb3J0IE9wdGlvblBh
cnNlcgogaW1wb3J0IG9zLnBhdGgKIGltcG9ydCBzeXMKIAotZnJvbSBmaWx0ZXIgaW1wb3J0IHZh
bGlkYXRlX2ZpbHRlcl9ydWxlcworZnJvbSB3ZWJraXRweS5zdHlsZS5maWx0ZXIgaW1wb3J0IHZh
bGlkYXRlX2ZpbHRlcl9ydWxlcwogIyBUaGlzIG1vZHVsZSBzaG91bGQgbm90IGltcG9ydCBhbnl0
aGluZyBmcm9tIGNoZWNrZXIucHkuCiAKIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVf
XykKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvb3B0cGFyc2VyX3VuaXR0ZXN0
LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvb3B0cGFyc2Vy
X3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNTIzNjkpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3N0eWxlL29wdHBhcnNlcl91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtOTcsNTAgKzk3
LDQ0IEBAIGNsYXNzIEFyZ3VtZW50UGFyc2VyVGVzdChMb2dnaW5nVGVzdENhc2UKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVzYWdlPSJ0ZXN0IHVzYWdlIikKIAogICAgIGRlZiB0ZXN0
X3BhcnNlX2RvY3VtZW50YXRpb24oc2VsZik6Ci0gICAgICAgIHBhcnNlID0gc2VsZi5fcGFyc2UK
LQogICAgICAgICAjIEZJWE1FOiBUZXN0IGJvdGggdGhlIHByaW50aW5nIG9mIHRoZSB1c2FnZSBz
dHJpbmcgYW5kIHRoZQogICAgICAgICAjICAgICAgICBmaWx0ZXIgY2F0ZWdvcmllcyBoZWxwLgog
CiAgICAgICAgICMgUmVxdWVzdCB0aGUgdXNhZ2Ugc3RyaW5nLgotICAgICAgICBzZWxmLmFzc2Vy
dFJhaXNlcyhTeXN0ZW1FeGl0LCBwYXJzZSwgWyctLWhlbHAnXSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRSYWlzZXMoU3lzdGVtRXhpdCwgc2VsZi5fcGFyc2UsIFsnLS1oZWxwJ10pCiAgICAgICAgICMg
UmVxdWVzdCBkZWZhdWx0IGZpbHRlciBydWxlcyBhbmQgYXZhaWxhYmxlIHN0eWxlIGNhdGVnb3Jp
ZXMuCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5c3RlbUV4aXQsIHBhcnNlLCBbJy0tZmls
dGVyPSddKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeXN0ZW1FeGl0LCBzZWxmLl9wYXJz
ZSwgWyctLWZpbHRlcj0nXSkKIAogICAgIGRlZiB0ZXN0X3BhcnNlX2JhZF92YWx1ZXMoc2VsZik6
Ci0gICAgICAgIHBhcnNlID0gc2VsZi5fcGFyc2UKLQogICAgICAgICAjIFBhc3MgYW4gdW5zdXBw
b3J0ZWQgYXJndW1lbnQuCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5c3RlbUV4aXQsIHBh
cnNlLCBbJy0tYmFkJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5c3RlbUV4aXQsIHNl
bGYuX3BhcnNlLCBbJy0tYmFkJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0TG9nKFsnRVJST1I6IG5v
IHN1Y2ggb3B0aW9uOiAtLWJhZFxuJ10pCiAKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3lz
dGVtRXhpdCwgcGFyc2UsIFsnLS1taW4tY29uZmlkZW5jZT1iYWQnXSkKKyAgICAgICAgc2VsZi5h
c3NlcnRSYWlzZXMoU3lzdGVtRXhpdCwgc2VsZi5fcGFyc2UsIFsnLS1taW4tY29uZmlkZW5jZT1i
YWQnXSkKICAgICAgICAgc2VsZi5hc3NlcnRMb2coWydFUlJPUjogb3B0aW9uIC0tbWluLWNvbmZp
ZGVuY2U6ICcKICAgICAgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIGludGVnZXIgdmFsdWU6
ICdiYWQnXG4iXSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3lzdGVtRXhpdCwgcGFyc2Us
IFsnLS1taW4tY29uZmlkZW5jZT0wJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5c3Rl
bUV4aXQsIHNlbGYuX3BhcnNlLCBbJy0tbWluLWNvbmZpZGVuY2U9MCddKQogICAgICAgICBzZWxm
LmFzc2VydExvZyhbJ0VSUk9SOiBvcHRpb24gLS1taW4tY29uZmlkZW5jZTogaW52YWxpZCBpbnRl
Z2VyOiAwOiAnCiAgICAgICAgICAgICAgICAgICAgICAgICAndmFsdWUgbXVzdCBiZSBiZXR3ZWVu
IDEgYW5kIDVcbiddKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeXN0ZW1FeGl0LCBwYXJz
ZSwgWyctLW1pbi1jb25maWRlbmNlPTYnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3lz
dGVtRXhpdCwgc2VsZi5fcGFyc2UsIFsnLS1taW4tY29uZmlkZW5jZT02J10pCiAgICAgICAgIHNl
bGYuYXNzZXJ0TG9nKFsnRVJST1I6IG9wdGlvbiAtLW1pbi1jb25maWRlbmNlOiBpbnZhbGlkIGlu
dGVnZXI6IDY6ICcKICAgICAgICAgICAgICAgICAgICAgICAgICd2YWx1ZSBtdXN0IGJlIGJldHdl
ZW4gMSBhbmQgNVxuJ10pCi0gICAgICAgIHBhcnNlKFsnLS1taW4tY29uZmlkZW5jZT0xJ10pICAj
IHdvcmtzCi0gICAgICAgIHBhcnNlKFsnLS1taW4tY29uZmlkZW5jZT01J10pICAjIHdvcmtzCisg
ICAgICAgIHNlbGYuX3BhcnNlKFsnLS1taW4tY29uZmlkZW5jZT0xJ10pICAjIHdvcmtzCisgICAg
ICAgIHNlbGYuX3BhcnNlKFsnLS1taW4tY29uZmlkZW5jZT01J10pICAjIHdvcmtzCiAKLSAgICAg
ICAgc2VsZi5hc3NlcnRSYWlzZXMoU3lzdGVtRXhpdCwgcGFyc2UsIFsnLS1vdXRwdXQ9YmFkJ10p
CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5c3RlbUV4aXQsIHNlbGYuX3BhcnNlLCBbJy0t
b3V0cHV0PWJhZCddKQogICAgICAgICBzZWxmLmFzc2VydExvZyhbJ0VSUk9SOiBvcHRpb24gLS1v
dXRwdXQtZm9ybWF0OiBpbnZhbGlkIGNob2ljZTogJwogICAgICAgICAgICAgICAgICAgICAgICAg
IidiYWQnIChjaG9vc2UgZnJvbSAnZW1hY3MnLCAndnM3JylcbiJdKQotICAgICAgICBwYXJzZShb
Jy0tb3V0cHV0PXZzNyddKSAgIyB3b3JrcworICAgICAgICBzZWxmLl9wYXJzZShbJy0tb3V0cHV0
PXZzNyddKSAgIyB3b3JrcwogCiAgICAgICAgICMgUGFzcyBhIGZpbHRlciBydWxlIG5vdCBiZWdp
bm5pbmcgd2l0aCArIG9yIC0uCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5c3RlbUV4aXQs
IHBhcnNlLCBbJy0tZmlsdGVyPWJ1aWxkJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5
c3RlbUV4aXQsIHNlbGYuX3BhcnNlLCBbJy0tZmlsdGVyPWJ1aWxkJ10pCiAgICAgICAgIHNlbGYu
YXNzZXJ0TG9nKFsnRVJST1I6IEludmFsaWQgZmlsdGVyIHJ1bGUgImJ1aWxkIjogJwogICAgICAg
ICAgICAgICAgICAgICAgICAgJ2V2ZXJ5IHJ1bGUgbXVzdCBzdGFydCB3aXRoICsgb3IgLS5cbidd
KQotICAgICAgICBwYXJzZShbJy0tZmlsdGVyPStidWlsZCddKSAgIyB3b3JrcworICAgICAgICBz
ZWxmLl9wYXJzZShbJy0tZmlsdGVyPStidWlsZCddKSAgIyB3b3JrcwogCiAgICAgZGVmIHRlc3Rf
cGFyc2VfZGVmYXVsdF9hcmd1bWVudHMoc2VsZik6Ci0gICAgICAgIHBhcnNlID0gc2VsZi5fcGFy
c2UKLQotICAgICAgICAoZmlsZXMsIG9wdGlvbnMpID0gcGFyc2UoW10pCisgICAgICAgIChmaWxl
cywgb3B0aW9ucykgPSBzZWxmLl9wYXJzZShbXSkKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGZpbGVzLCBbXSkKIApAQCAtMTUyLDQyICsxNDYsMzggQEAgY2xhc3MgQXJndW1lbnRQYXJzZXJU
ZXN0KExvZ2dpbmdUZXN0Q2FzZQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wdGlvbnMub3V0
cHV0X2Zvcm1hdCwgJ3ZzNycpCiAKICAgICBkZWYgdGVzdF9wYXJzZV9leHBsaWNpdF9hcmd1bWVu
dHMoc2VsZik6Ci0gICAgICAgIHBhcnNlID0gc2VsZi5fcGFyc2UKLQogICAgICAgICAjIFBhc3Mg
bm9uLWRlZmF1bHQgZXhwbGljaXQgdmFsdWVzLgotICAgICAgICAoZmlsZXMsIG9wdGlvbnMpID0g
cGFyc2UoWyctLW1pbi1jb25maWRlbmNlPTQnXSkKKyAgICAgICAgKGZpbGVzLCBvcHRpb25zKSA9
IHNlbGYuX3BhcnNlKFsnLS1taW4tY29uZmlkZW5jZT00J10pCiAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwob3B0aW9ucy5taW5fY29uZmlkZW5jZSwgNCkKLSAgICAgICAgKGZpbGVzLCBvcHRpb25z
KSA9IHBhcnNlKFsnLS1vdXRwdXQ9ZW1hY3MnXSkKKyAgICAgICAgKGZpbGVzLCBvcHRpb25zKSA9
IHNlbGYuX3BhcnNlKFsnLS1vdXRwdXQ9ZW1hY3MnXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChvcHRpb25zLm91dHB1dF9mb3JtYXQsICdlbWFjcycpCi0gICAgICAgIChmaWxlcywgb3B0aW9u
cykgPSBwYXJzZShbJy1nJywgJ2NvbW1pdCddKQorICAgICAgICAoZmlsZXMsIG9wdGlvbnMpID0g
c2VsZi5fcGFyc2UoWyctZycsICdjb21taXQnXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChv
cHRpb25zLmdpdF9jb21taXQsICdjb21taXQnKQotICAgICAgICAoZmlsZXMsIG9wdGlvbnMpID0g
cGFyc2UoWyctLWdpdC1jb21taXQ9Y29tbWl0J10pCisgICAgICAgIChmaWxlcywgb3B0aW9ucykg
PSBzZWxmLl9wYXJzZShbJy0tZ2l0LWNvbW1pdD1jb21taXQnXSkKICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChvcHRpb25zLmdpdF9jb21taXQsICdjb21taXQnKQotICAgICAgICAoZmlsZXMsIG9w
dGlvbnMpID0gcGFyc2UoWyctLWdpdC1kaWZmPWNvbW1pdCddKQorICAgICAgICAoZmlsZXMsIG9w
dGlvbnMpID0gc2VsZi5fcGFyc2UoWyctLWdpdC1kaWZmPWNvbW1pdCddKQogICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKG9wdGlvbnMuZ2l0X2NvbW1pdCwgJ2NvbW1pdCcpCi0gICAgICAgIChmaWxl
cywgb3B0aW9ucykgPSBwYXJzZShbJy0tdmVyYm9zZSddKQorICAgICAgICAoZmlsZXMsIG9wdGlv
bnMpID0gc2VsZi5fcGFyc2UoWyctLXZlcmJvc2UnXSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVl
KG9wdGlvbnMuaXNfdmVyYm9zZSkKLSAgICAgICAgKGZpbGVzLCBvcHRpb25zKSA9IHBhcnNlKFsn
LS1kaWZmLWZpbGVzJywgJ2ZpbGUudHh0J10pCisgICAgICAgIChmaWxlcywgb3B0aW9ucykgPSBz
ZWxmLl9wYXJzZShbJy0tZGlmZi1maWxlcycsICdmaWxlLnR4dCddKQogICAgICAgICBzZWxmLmFz
c2VydFRydWUob3B0aW9ucy5kaWZmX2ZpbGVzKQogCiAgICAgICAgICMgUGFzcyB1c2VyX3J1bGVz
LgotICAgICAgICAoZmlsZXMsIG9wdGlvbnMpID0gcGFyc2UoWyctLWZpbHRlcj0rYnVpbGQsLXdo
aXRlc3BhY2UnXSkKKyAgICAgICAgKGZpbGVzLCBvcHRpb25zKSA9IHNlbGYuX3BhcnNlKFsnLS1m
aWx0ZXI9K2J1aWxkLC13aGl0ZXNwYWNlJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3B0
aW9ucy5maWx0ZXJfcnVsZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiK2J1aWxkIiwg
Ii13aGl0ZXNwYWNlIl0pCiAKICAgICAgICAgIyBQYXNzIHNwdXJpb3VzIHdoaXRlIHNwYWNlIGlu
IHVzZXIgcnVsZXMuCi0gICAgICAgIChmaWxlcywgb3B0aW9ucykgPSBwYXJzZShbJy0tZmlsdGVy
PStidWlsZCwgLXdoaXRlc3BhY2UnXSkKKyAgICAgICAgKGZpbGVzLCBvcHRpb25zKSA9IHNlbGYu
X3BhcnNlKFsnLS1maWx0ZXI9K2J1aWxkLCAtd2hpdGVzcGFjZSddKQogICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKG9wdGlvbnMuZmlsdGVyX3J1bGVzLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICBbIitidWlsZCIsICItd2hpdGVzcGFjZSJdKQogCiAgICAgZGVmIHRlc3RfcGFyc2VfZmlsZXMo
c2VsZik6Ci0gICAgICAgIHBhcnNlID0gc2VsZi5fcGFyc2UKLQotICAgICAgICAoZmlsZXMsIG9w
dGlvbnMpID0gcGFyc2UoWydmb28uY3BwJ10pCisgICAgICAgIChmaWxlcywgb3B0aW9ucykgPSBz
ZWxmLl9wYXJzZShbJ2Zvby5jcHAnXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlcywg
Wydmb28uY3BwJ10pCiAKICAgICAgICAgIyBQYXNzIG11bHRpcGxlIGZpbGVzLgotICAgICAgICAo
ZmlsZXMsIG9wdGlvbnMpID0gcGFyc2UoWyctLW91dHB1dD1lbWFjcycsICdmb28uY3BwJywgJ2Jh
ci5jcHAnXSkKKyAgICAgICAgKGZpbGVzLCBvcHRpb25zKSA9IHNlbGYuX3BhcnNlKFsnLS1vdXRw
dXQ9ZW1hY3MnLCAnZm9vLmNwcCcsICdiYXIuY3BwJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoZmlsZXMsIFsnZm9vLmNwcCcsICdiYXIuY3BwJ10pCiAKIApJbmRleDogVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jaGFuZ2Vsb2cucHkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jaGFuZ2Vsb2cucHkJKHJldmlzaW9u
IDI1MjM2OSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY2hhbmdl
bG9nLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yMyw5ICsyMyw5IEBACiAKICIiIkNoZWNrcyBXZWJL
aXQgc3R5bGUgZm9yIENoYW5nZUxvZyBmaWxlcy4iIiIKIAotZnJvbSBjb21tb24gaW1wb3J0IFRh
YkNoZWNrZXIsIG1hdGNoLCBzZWFyY2gsIHNlYXJjaElnbm9yZWNhc2UKIGZyb20gc3lzIGltcG9y
dCBtYXhzaXplCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVja291dC5jaGFuZ2Vsb2cgaW1wb3J0
IHBhcnNlX2J1Z19pZF9mcm9tX2NoYW5nZWxvZworZnJvbSB3ZWJraXRweS5zdHlsZS5jaGVja2Vy
cy5jb21tb24gaW1wb3J0IFRhYkNoZWNrZXIsIG1hdGNoLCBzZWFyY2gsIHNlYXJjaElnbm9yZWNh
c2UKIAogCiBjbGFzcyBDaGFuZ2VMb2dDaGVja2VyKG9iamVjdCk6CkluZGV4OiBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NoYW5nZWxvZ191bml0dGVzdC5weQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NoYW5nZWxvZ191
bml0dGVzdC5weQkocmV2aXNpb24gMjUyMzY5KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9z
dHlsZS9jaGVja2Vycy9jaGFuZ2Vsb2dfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTIz
LDkgKzIzLDEwIEBACiAKICIiIlVuaXQgdGVzdCBmb3IgY2hhbmdlbG9nLnB5LiIiIgogCi1pbXBv
cnQgY2hhbmdlbG9nCiBpbXBvcnQgdW5pdHRlc3QKIAorZnJvbSB3ZWJraXRweS5zdHlsZS5jaGVj
a2VycyBpbXBvcnQgY2hhbmdlbG9nCisKIAogY2xhc3MgQ2hhbmdlTG9nQ2hlY2tlclRlc3QodW5p
dHRlc3QuVGVzdENhc2UpOgogICAgICIiIlRlc3RzIENoYW5nZUxvZ0NoZWNrZXIgY2xhc3MuIiIi
CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NtYWtlLnB5Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY21ha2Uu
cHkJKHJldmlzaW9uIDI1MjM2OSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hl
Y2tlcnMvY21ha2UucHkJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogIiIiU3Vw
cG9ydHMgY2hlY2tpbmcgV2ViS2l0IHN0eWxlIGluIGNtYWtlIGZpbGVzLiguY21ha2UsIENNYWtl
TGlzdHMudHh0KSIiIgogCi1mcm9tIGNvbW1vbiBpbXBvcnQgVGFiQ2hlY2tlciwgbWF0Y2gsIHNl
YXJjaCwgc2VhcmNoSWdub3JlY2FzZQorZnJvbSB3ZWJraXRweS5zdHlsZS5jaGVja2Vycy5jb21t
b24gaW1wb3J0IFRhYkNoZWNrZXIsIG1hdGNoLCBzZWFyY2gsIHNlYXJjaElnbm9yZWNhc2UKIAog
CiBjbGFzcyBDTWFrZUNoZWNrZXIob2JqZWN0KToKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvc3R5bGUvY2hlY2tlcnMvY21ha2VfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jbWFrZV91bml0dGVzdC5weQkocmV2aXNp
b24gMjUyMzY5KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jbWFr
ZV91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogCiBpbXBvcnQg
dW5pdHRlc3QKIAotZnJvbSBjbWFrZSBpbXBvcnQgQ01ha2VDaGVja2VyCitmcm9tIHdlYmtpdHB5
LnN0eWxlLmNoZWNrZXJzLmNtYWtlIGltcG9ydCBDTWFrZUNoZWNrZXIKIAogCiBjbGFzcyBDTWFr
ZUNoZWNrZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvc3R5bGUvY2hlY2tlcnMvY29tbW9uX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY29tbW9uX3VuaXR0ZXN0LnB5CShy
ZXZpc2lvbiAyNTIzNjkpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJz
L2NvbW1vbl91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMjQsOCArMjQsOCBAQAogCiBp
bXBvcnQgdW5pdHRlc3QKIAotZnJvbSBjb21tb24gaW1wb3J0IENhcnJpYWdlUmV0dXJuQ2hlY2tl
cgotZnJvbSBjb21tb24gaW1wb3J0IFRhYkNoZWNrZXIKK2Zyb20gd2Via2l0cHkuc3R5bGUuY2hl
Y2tlcnMuY29tbW9uIGltcG9ydCBDYXJyaWFnZVJldHVybkNoZWNrZXIKK2Zyb20gd2Via2l0cHku
c3R5bGUuY2hlY2tlcnMuY29tbW9uIGltcG9ydCBUYWJDaGVja2VyCiAKIAogIyBGSVhNRTogVGhl
IHVuaXQgdGVzdHMgZm9yIHRoZSBjcHAsIHRleHQsIGFuZCBjb21tb24gY2hlY2tlcnMgc2hvdWxk
CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NvbnRyaWJ1dG9y
cy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJz
L2NvbnRyaWJ1dG9ycy5weQkocmV2aXNpb24gMjUyMzY5KQorKysgVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9zdHlsZS9jaGVja2Vycy9jb250cmlidXRvcnMucHkJKHdvcmtpbmcgY29weSkKQEAgLTI2
LDcgKzI2LDcgQEAgaW1wb3J0IGRpZmZsaWIKIGltcG9ydCBqc29uCiBpbXBvcnQgcmUKIGZyb20g
c2V0cyBpbXBvcnQgU2V0Ci1mcm9tIGpzb25jaGVja2VyIGltcG9ydCBKU09OQ2hlY2tlcgorZnJv
bSB3ZWJraXRweS5zdHlsZS5jaGVja2Vycy5qc29uY2hlY2tlciBpbXBvcnQgSlNPTkNoZWNrZXIK
IGZyb20gd2Via2l0cHkuY29tbW9uLmNvbmZpZy5jb21taXR0ZXJzIGltcG9ydCBDb21taXR0ZXJM
aXN0CiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZmlsZXN5c3RlbSBpbXBvcnQgRmlsZVN5
c3RlbQogCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NwcC5w
eQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2Nw
cC5weQkocmV2aXNpb24gMjUyMzY5KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9j
aGVja2Vycy9jcHAucHkJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDggKzQ1LDkgQEAgaW1wb3J0IHN0
cmluZwogaW1wb3J0IHN5cwogaW1wb3J0IHVuaWNvZGVkYXRhCiAKLWZyb20gY29tbW9uIGltcG9y
dCBtYXRjaCwgc2VhcmNoLCBzdWIsIHN1Ym4KK2Zyb20gd2Via2l0cHkuc3R5bGUuY2hlY2tlcnMu
Y29tbW9uIGltcG9ydCBtYXRjaCwgc2VhcmNoLCBzdWIsIHN1Ym4KIGZyb20gd2Via2l0cHkuY29t
bW9uLm1lbW9pemVkIGltcG9ydCBtZW1vaXplZAorZnJvbSB3ZWJraXRweS5jb21tb24udW5pY29k
ZV9jb21wYXRpYmlsaXR5IGltcG9ydCB1bmljb2RlCiAKICMgVGhlIGtleSB0byB1c2UgdG8gcHJv
dmlkZSBhIGNsYXNzIHRvIGZha2UgbG9hZGluZyBhIGhlYWRlciBmaWxlLgogSU5DTFVERV9JT19J
TkpFQ1RJT05fS0VZID0gJ2luY2x1ZGVfaGVhZGVyX2lvJwpAQCAtMzY2LDcgKzM2NywyNSBAQCBj
bGFzcyBQb3NpdGlvbihvYmplY3QpOgogICAgICAgICByZXR1cm4gJyglcywgJXMpJyAlIChzZWxm
LnJvdywgc2VsZi5jb2x1bW4pCiAKICAgICBkZWYgX19jbXBfXyhzZWxmLCBvdGhlcik6Ci0gICAg
ICAgIHJldHVybiBzZWxmLnJvdy5fX2NtcF9fKG90aGVyLnJvdykgb3Igc2VsZi5jb2x1bW4uX19j
bXBfXyhvdGhlci5jb2x1bW4pCisgICAgICAgIHJldHVybiAoc2VsZi5yb3cgLSBvdGhlci5yb3cp
IG9yIChzZWxmLmNvbHVtbiAtIG90aGVyLmNvbHVtbikKKworICAgIGRlZiBfX2VxX18oc2VsZiwg
b3RoZXIpOgorICAgICAgICByZXR1cm4gc2VsZi5fX2NtcF9fKG90aGVyKSA9PSAwCisKKyAgICBk
ZWYgX19uZV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX19jbXBfXyhvdGhl
cikgIT0gMAorCisgICAgZGVmIF9fbHRfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIHJldHVybiBz
ZWxmLl9fY21wX18ob3RoZXIpIDwgMAorCisgICAgZGVmIF9fbGVfXyhzZWxmLCBvdGhlcik6Cisg
ICAgICAgIHJldHVybiBzZWxmLl9fY21wX18ob3RoZXIpIDw9IDAKKworICAgIGRlZiBfX2d0X18o
c2VsZiwgb3RoZXIpOgorICAgICAgICByZXR1cm4gc2VsZi5fX2NtcF9fKG90aGVyKSA+IDAKKwor
ICAgIGRlZiBfX2dlX18oc2VsZiwgb3RoZXIpOgorICAgICAgICByZXR1cm4gc2VsZi5fX2NtcF9f
KG90aGVyKSA+PSAwCiAKIAogY2xhc3MgUGFyYW1ldGVyKG9iamVjdCk6CkBAIC04OTcsNyArOTE2
LDcgQEAgZGVmIGNoZWNrX2Zvcl9jb3B5cmlnaHQobGluZXMsIGVycm9yKToKIAogICAgICMgV2Un
bGwgc2F5IGl0IHNob3VsZCBvY2N1ciBieSBsaW5lIDEwLiBEb24ndCBmb3JnZXQgdGhlcmUncyBh
CiAgICAgIyBkdW1teSBsaW5lIGF0IHRoZSBmcm9udC4KLSAgICBmb3IgbGluZSBpbiB4cmFuZ2Uo
MSwgbWluKGxlbihsaW5lcyksIDExKSk6CisgICAgZm9yIGxpbmUgaW4gcmFuZ2UoMSwgbWluKGxl
bihsaW5lcyksIDExKSk6CiAgICAgICAgIGlmIHJlLnNlYXJjaChyJ0NvcHlyaWdodCcsIGxpbmVz
W2xpbmVdLCByZS5JKToKICAgICAgICAgICAgIGJyZWFrCiAgICAgZWxzZTogICAgICAgICAgICAg
ICAgICAgICAgICMgbWVhbnMgbm8gY29weXJpZ2h0IGxpbmUgd2FzIGZvdW5kCkBAIC0xNTk2LDcg
KzE2MTUsNyBAQCBkZWYgZGV0ZWN0X2Z1bmN0aW9ucyhjbGVhbl9saW5lcywgbGluZV9uCiAgICAg
ICAgIHJldHVybgogCiAgICAgam9pbmVkX2xpbmUgPSAnJwotICAgIGZvciBzdGFydF9saW5lX251
bWJlciBpbiB4cmFuZ2UobGluZV9udW1iZXIsIGNsZWFuX2xpbmVzLm51bV9saW5lcygpKToKKyAg
ICBmb3Igc3RhcnRfbGluZV9udW1iZXIgaW4gcmFuZ2UobGluZV9udW1iZXIsIGNsZWFuX2xpbmVz
Lm51bV9saW5lcygpKToKICAgICAgICAgc3RhcnRfbGluZSA9IGNsZWFuX2xpbmVzLmVsaWRlZFtz
dGFydF9saW5lX251bWJlcl0KICAgICAgICAgam9pbmVkX2xpbmUgKz0gJyAnICsgc3RhcnRfbGlu
ZS5sc3RyaXAoKQogICAgICAgICBib2R5X21hdGNoID0gc2VhcmNoKHIne3w7Jywgc3RhcnRfbGlu
ZSkKQEAgLTMzNjgsNyArMzM4Nyw3IEBAIGRlZiBjaGVja19sYW5ndWFnZShmaWxlbmFtZSwgY2xl
YW5fbGluZXMKICAgICAgICAgbmVzdGVkX2FuZ2xlX2JyYWNrZXRfY291bnQgPSAxCiAgICAgICAg
IHByZXZpb3VzX2Nsb3NpbmdfYW5nbGVfYnJhY2tldF9pbmRleCA9IC0xCiAgICAgICAgIGNsb3Np
bmdfYW5nbGVfYnJhY2tldF9pbmRleCA9IDkgIyBVc2VkIGlmIG9ubHkgb25lIHBhaXIgb2YgYW5n
bGUgYnJhY2tldHMuCi0gICAgICAgIGZvciBpIGluIHhyYW5nZSgxMCwgbGVuKG1hdGNoX2xpbmUp
IC0gMSk6CisgICAgICAgIGZvciBpIGluIHJhbmdlKDEwLCBsZW4obWF0Y2hfbGluZSkgLSAxKToK
ICAgICAgICAgICAgIGlmIG1hdGNoX2xpbmVbaV0gPT0gJzwnOgogICAgICAgICAgICAgICAgIG5l
c3RlZF9hbmdsZV9icmFja2V0X2NvdW50ICs9IDEKICAgICAgICAgICAgIGlmIG1hdGNoX2xpbmVb
aV0gPT0gJz4nOgpAQCAtMzM4MSw3ICszNDAwLDcgQEAgZGVmIGNoZWNrX2xhbmd1YWdlKGZpbGVu
YW1lLCBjbGVhbl9saW5lcwogICAgICAgICAgICAgICAgICAgICAgICAgICAnUmV0YWluUHRyPD4g
c2hvdWxkIG5ldmVyIGNvbnRhaW4gYSB0eXBlIHdpdGggXCcqXCcuIENvcnJlY3Q6IFJldGFpblB0
cjxOU1N0cmluZz4sIFJldGFpblB0cjxDRlN0cmluZ1JlZj4uJykKICAgICAgICAgICAgICAgICBi
cmVhawogCi0gICAgbWF0Y2hlZCA9IHJlLmNvbXBpbGUoJ15ccypTT0ZUX0xJTktfKFBSSVZBVEVf
KT9GUkFNRVdPUksuKlwoKFxTKylcKScpLnNlYXJjaChsaW5lKQorICAgIG1hdGNoZWQgPSByZS5j
b21waWxlKHInXlxzKlNPRlRfTElOS18oUFJJVkFURV8pP0ZSQU1FV09SSy4qXCgoXFMrKVwpJyku
c2VhcmNoKGxpbmUpCiAgICAgaWYgbWF0Y2hlZDoKICAgICAgICAgZnJhbWV3b3JrX25hbWUgPSBt
YXRjaGVkLmdyb3VwKDIpCiAgICAgICAgIGlmIGZpbGVfZXh0ZW5zaW9uID09ICdoJyBhbmQgbm90
IHNlYXJjaChyJ15ccypTT0ZUX0xJTktfKFBSSVZBVEVfKT9GUkFNRVdPUktfRk9SX0hFQURFUi4q
XCgnLCBsaW5lKToKQEAgLTM4ODIsNyArMzkwMSw3IEBAIGRlZiBjaGVja19mb3JfaW5jbHVkZV93
aGF0X3lvdV91c2UoZmlsZW4KICAgICByZXF1aXJlZCA9IHt9ICAjIEEgbWFwIG9mIGhlYWRlciBu
YW1lIHRvIGxpbmVfbnVtYmVyIGFuZCB0aGUgdGVtcGxhdGUgZW50aXR5LgogICAgICAgICAjIEV4
YW1wbGUgb2YgcmVxdWlyZWQ6IHsgJzxmdW5jdGlvbmFsPic6ICgxMjE5LCAnbGVzczw+JykgfQog
Ci0gICAgZm9yIGxpbmVfbnVtYmVyIGluIHhyYW5nZShjbGVhbl9saW5lcy5udW1fbGluZXMoKSk6
CisgICAgZm9yIGxpbmVfbnVtYmVyIGluIHJhbmdlKGNsZWFuX2xpbmVzLm51bV9saW5lcygpKToK
ICAgICAgICAgbGluZSA9IGNsZWFuX2xpbmVzLmVsaWRlZFtsaW5lX251bWJlcl0KICAgICAgICAg
aWYgbm90IGxpbmUgb3IgbGluZVswXSA9PSAnIyc6CiAgICAgICAgICAgICBjb250aW51ZQpAQCAt
MzkyNSw3ICszOTQ0LDcgQEAgZGVmIGNoZWNrX2Zvcl9pbmNsdWRlX3doYXRfeW91X3VzZShmaWxl
bgogCiAgICAgIyBpbmNsdWRlX3N0YXRlIGlzIG1vZGlmaWVkIGR1cmluZyBpdGVyYXRpb24sIHNv
IHdlIGl0ZXJhdGUgb3ZlciBhIGNvcHkgb2YKICAgICAjIHRoZSBrZXlzLgotICAgIGZvciBoZWFk
ZXIgaW4gaW5jbHVkZV9zdGF0ZS5rZXlzKCk6ICAjIE5PTElOVAorICAgIGZvciBoZWFkZXIgaW4g
bGlzdChpbmNsdWRlX3N0YXRlLmtleXMoKSk6ICAjIE5PTElOVAogICAgICAgICAoc2FtZV9tb2R1
bGUsIGNvbW1vbl9wYXRoKSA9IGZpbGVzX2JlbG9uZ190b19zYW1lX21vZHVsZShhYnNfZmlsZW5h
bWUsIGhlYWRlcikKICAgICAgICAgZnVsbHBhdGggPSBjb21tb25fcGF0aCArIGhlYWRlcgogICAg
ICAgICBpZiBzYW1lX21vZHVsZSBhbmQgdXBkYXRlX2luY2x1ZGVfc3RhdGUoZnVsbHBhdGgsIGlu
Y2x1ZGVfc3RhdGUpOgpAQCAtNDA1MCw3ICs0MDY5LDcgQEAgZGVmIF9wcm9jZXNzX2xpbmVzKGZp
bGVuYW1lLCBmaWxlX2V4dGVucwogICAgIGZpbGVfc3RhdGUgPSBfRmlsZVN0YXRlKGNsZWFuX2xp
bmVzLCBmaWxlX2V4dGVuc2lvbikKICAgICBlbnVtX3N0YXRlID0gX0VudW1TdGF0ZSgpCiAgICAg
YXNtX3N0YXRlID0gX0lubGluZUFTTVN0YXRlKCkKLSAgICBmb3IgbGluZSBpbiB4cmFuZ2UoY2xl
YW5fbGluZXMubnVtX2xpbmVzKCkpOgorICAgIGZvciBsaW5lIGluIHJhbmdlKGNsZWFuX2xpbmVz
Lm51bV9saW5lcygpKToKICAgICAgICAgcHJvY2Vzc19saW5lKGZpbGVuYW1lLCBmaWxlX2V4dGVu
c2lvbiwgY2xlYW5fbGluZXMsIGxpbmUsCiAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlX3N0
YXRlLCBmdW5jdGlvbl9zdGF0ZSwgY2xhc3Nfc3RhdGUsIGZpbGVfc3RhdGUsCiAgICAgICAgICAg
ICAgICAgICAgICBlbnVtX3N0YXRlLCBhc21fc3RhdGUsIGVycm9yKQpJbmRleDogVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jcHBfdW5pdHRlc3QucHkKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jcHBfdW5pdHRlc3QucHkJ
KHJldmlzaW9uIDI1MjM2OSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tl
cnMvY3BwX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC00MCw5ICs0MCwxMCBAQCBpbXBv
cnQgb3MKIGltcG9ydCByYW5kb20KIGltcG9ydCByZQogaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQg
Y3BwIGFzIGNwcF9zdHlsZQotZnJvbSBjcHAgaW1wb3J0IENwcENoZWNrZXIKLWZyb20gLi5maWx0
ZXIgaW1wb3J0IEZpbHRlckNvbmZpZ3VyYXRpb24KK2Zyb20gd2Via2l0cHkuY29tbW9uLnVuaWNv
ZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgZGVjb2RlX2lmX25lY2Vzc2FyeQorZnJvbSB3ZWJraXRw
eS5zdHlsZS5jaGVja2VycyBpbXBvcnQgY3BwIGFzIGNwcF9zdHlsZQorZnJvbSB3ZWJraXRweS5z
dHlsZS5jaGVja2Vycy5jcHAgaW1wb3J0IENwcENoZWNrZXIKK2Zyb20gd2Via2l0cHkuc3R5bGUu
ZmlsdGVyIGltcG9ydCBGaWx0ZXJDb25maWd1cmF0aW9uCiAKIAogIyBUaGlzIGNsYXNzIHdvcmtz
IGFzIGFuIGVycm9yIGNvbGxlY3RvciBhbmQgcmVwbGFjZXMgY3BwX3N0eWxlLkVycm9yCkBAIC0y
NDQ3LDcgKzI0NDgsNyBAQCBjbGFzcyBDcHBTdHlsZVRlc3QoQ3BwU3R5bGVUZXN0QmFzZSk6CiAg
ICAgICAgIGRlZiBkb190ZXN0KHNlbGYsIHJhd19ieXRlcywgaGFzX2ludmFsaWRfdXRmOCk6CiAg
ICAgICAgICAgICBlcnJvcl9jb2xsZWN0b3IgPSBFcnJvckNvbGxlY3RvcihzZWxmLmFzc2VydFRy
dWUpCiAgICAgICAgICAgICBzZWxmLnByb2Nlc3NfZmlsZV9kYXRhKCdmb28uY3BwJywgJ2NwcCcs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaWNvZGUocmF3X2J5dGVzLCAn
dXRmOCcsICdyZXBsYWNlJykuc3BsaXQoJ1xuJyksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRlY29kZV9pZl9uZWNlc3NhcnkocmF3X2J5dGVzLCBlbmNvZGluZz0ndXRmOCcs
IGVycm9ycz0ncmVwbGFjZScpLnNwbGl0KCdcbicpLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBlcnJvcl9jb2xsZWN0b3IpCiAgICAgICAgICAgICAjIFRoZSB3YXJuaW5nIGFw
cGVhcnMgb25seSBvbmNlLgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKQEAgLTI0NTcs
MTIgKzI0NTgsMTIgQEAgY2xhc3MgQ3BwU3R5bGVUZXN0KENwcFN0eWxlVGVzdEJhc2UpOgogICAg
ICAgICAgICAgICAgICAgICAnIChvciBVbmljb2RlIHJlcGxhY2VtZW50IGNoYXJhY3RlcikuJwog
ICAgICAgICAgICAgICAgICAgICAnICBbcmVhZGFiaWxpdHkvdXRmOF0gWzVdJykpCiAKLSAgICAg
ICAgZG9fdGVzdChzZWxmLCAnSGVsbG8gd29ybGRcbicsIEZhbHNlKQotICAgICAgICBkb190ZXN0
KHNlbGYsICdceGU5XHg4ZVx4YmRcbicsIEZhbHNlKQotICAgICAgICBkb190ZXN0KHNlbGYsICdc
eGU5eFx4OGVceGJkXG4nLCBUcnVlKQorICAgICAgICBkb190ZXN0KHNlbGYsIGInSGVsbG8gd29y
bGRcbicsIEZhbHNlKQorICAgICAgICBkb190ZXN0KHNlbGYsIGInXHhlOVx4OGVceGJkXG4nLCBG
YWxzZSkKKyAgICAgICAgZG9fdGVzdChzZWxmLCBiJ1x4ZTl4XHg4ZVx4YmRcbicsIFRydWUpCiAg
ICAgICAgICMgVGhpcyBpcyB0aGUgZW5jb2Rpbmcgb2YgdGhlIHJlcGxhY2VtZW50IGNoYXJhY3Rl
ciBpdHNlbGYgKHdoaWNoCiAgICAgICAgICMgeW91IGNhbiBzZWUgYnkgZXZhbHVhdGluZyBjb2Rl
Y3MuZ2V0ZW5jb2RlcigndXRmOCcpKHUnXHVmZmZkJykpLgotICAgICAgICBkb190ZXN0KHNlbGYs
ICdceGVmXHhiZlx4YmRcbicsIFRydWUpCisgICAgICAgIGRvX3Rlc3Qoc2VsZiwgYidceGVmXHhi
Zlx4YmRcbicsIFRydWUpCiAKICAgICBkZWYgdGVzdF9pc19ibGFua19saW5lKHNlbGYpOgogICAg
ICAgICBzZWxmLmFzc2VydFRydWUoY3BwX3N0eWxlLmlzX2JsYW5rX2xpbmUoJycpKQpAQCAtMjc4
Niw3ICsyNzg3LDcgQEAgY2xhc3MgQ3BwU3R5bGVUZXN0KENwcFN0eWxlVGVzdEJhc2UpOgogICAg
ICAgICAgICAgb3RoZXJfZGVjbF9zcGVjcyA9IFtyYW5kb20uY2hvaWNlKHF1YWxpZmllcnMpLCBy
YW5kb20uY2hvaWNlKHNpZ25zKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFu
ZG9tLmNob2ljZSh0eXBlcyldCiAgICAgICAgICAgICAjIHJlbW92ZSBOb25lCi0gICAgICAgICAg
ICBvdGhlcl9kZWNsX3NwZWNzID0gZmlsdGVyKGxhbWJkYSB4OiB4IGlzIG5vdCBOb25lLCBvdGhl
cl9kZWNsX3NwZWNzKQorICAgICAgICAgICAgb3RoZXJfZGVjbF9zcGVjcyA9IGxpc3QoZmlsdGVy
KGxhbWJkYSB4OiB4IGlzIG5vdCBOb25lLCBvdGhlcl9kZWNsX3NwZWNzKSkKIAogICAgICAgICAg
ICAgIyBzaHVmZmxlCiAgICAgICAgICAgICByYW5kb20uc2h1ZmZsZShvdGhlcl9kZWNsX3NwZWNz
KQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9qcy5weQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2pzLnB5CShy
ZXZpc2lvbiAyNTIzNjkpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJz
L2pzLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zMCw4ICszMCw4IEBAIFN1cHBvcnRzIGNoZWNraW5n
IFdlYktpdCBzdHlsZSBpbiBKYXZhU2MKIFRoaXMgY2hlY2tlciBpcyBvbmx5IHVzZWQgdG8gY2hl
Y2sgV2ViSW5zcGVjdG9yIEphdmFTY3JpcHQgZmlsZXMuCiAiIiIKIAotZnJvbSBjb21tb24gaW1w
b3J0IFRhYkNoZWNrZXIKIGltcG9ydCByZQorZnJvbSB3ZWJraXRweS5zdHlsZS5jaGVja2Vycy5j
b21tb24gaW1wb3J0IFRhYkNoZWNrZXIKIAogCiBjbGFzcyBKU0NoZWNrZXIob2JqZWN0KToKSW5k
ZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvanNfdW5pdHRlc3QucHkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9qc191
bml0dGVzdC5weQkocmV2aXNpb24gMjUyMzY5KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9z
dHlsZS9jaGVja2Vycy9qc191bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEs
NyBAQAogCiBpbXBvcnQgdW5pdHRlc3QKIAotZnJvbSBqcyBpbXBvcnQgSlNDaGVja2VyCitmcm9t
IHdlYmtpdHB5LnN0eWxlLmNoZWNrZXJzLmpzIGltcG9ydCBKU0NoZWNrZXIKIAogCiBjbGFzcyBK
U1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvc3R5bGUvY2hlY2tlcnMvanNvbmNoZWNrZXIucHkKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9qc29uY2hlY2tlci5weQkocmV2aXNpb24gMjUy
MzY5KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9qc29uY2hlY2tl
ci5weQkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNiBAQAogCiBpbXBvcnQganNvbgogaW1w
b3J0IHJlCi1mcm9tIHNldHMgaW1wb3J0IFNldAogCiAKIGNsYXNzIEpTT05DaGVja2VyKG9iamVj
dCk6CkBAIC03MCw3ICs2OSw3IEBAIGNsYXNzIEpTT05GZWF0dXJlc0NoZWNrZXIoSlNPTkNoZWNr
ZXIpOgogICAgICAgICAgICAgICAgIHNlbGYuX2hhbmRsZV9zdHlsZV9lcnJvcigwLCAnanNvbi9z
eW50YXgnLCA1LCAnImZlYXR1cmVzIiBrZXkgbm90IGZvdW5kLCB0aGUga2V5IGlzIG1hbmRhdG9y
eS4nKQogICAgICAgICAgICAgICAgIHJldHVybgogCi0gICAgICAgICAgICBzcGVjaWZpY2F0aW9u
X25hbWVfc2V0ID0gU2V0KCkKKyAgICAgICAgICAgIHNwZWNpZmljYXRpb25fbmFtZV9zZXQgPSBz
ZXQoKQogICAgICAgICAgICAgaWYgJ3NwZWNpZmljYXRpb24nIGluIGZlYXR1cmVzX2RlZmluaXRp
b246CiAgICAgICAgICAgICAgICAgcHJldmlvdXNfc3BlY2lmaWNhdGlvbl9uYW1lID0gJycKICAg
ICAgICAgICAgICAgICBmb3Igc3BlY2lmaWNhdGlvbl9vYmplY3QgaW4gZmVhdHVyZXNfZGVmaW5p
dGlvblsnc3BlY2lmaWNhdGlvbiddOgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHls
ZS9jaGVja2Vycy9qc29uY2hlY2tlcl91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2pzb25jaGVja2VyX3VuaXR0ZXN0LnB5CShy
ZXZpc2lvbiAyNTIzNjkpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJz
L2pzb25jaGVja2VyX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yMiw5ICsyMiwxMCBA
QAogCiAiIiJVbml0IHRlc3QgZm9yIGpzb25jaGVja2VyLnB5LiIiIgogCitpbXBvcnQgc3lzCiBp
bXBvcnQgdW5pdHRlc3QKIAotaW1wb3J0IGpzb25jaGVja2VyCitmcm9tIHdlYmtpdHB5LnN0eWxl
LmNoZWNrZXJzIGltcG9ydCBqc29uY2hlY2tlcgogCiAKIGNsYXNzIE1vY2tFcnJvckhhbmRsZXIo
b2JqZWN0KToKQEAgLTgxLDcgKzgyLDcgQEAgY2xhc3MgSlNPTkNoZWNrZXJUZXN0KHVuaXR0ZXN0
LlRlc3RDYXNlKQogICAgICAgICBwYXNzCiAKICAgICBkZWYgdGVzdF9jb25mbGljdF9tYXJrZXIo
c2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0X2Vycm9yKDAsICdqc29uL3N5bnRheCcsICc8PDw8
PDw8IEhFQURcbntcbn1cbicpCisgICAgICAgIHNlbGYuYXNzZXJ0X2Vycm9yKDEgaWYgc3lzLnZl
cnNpb25faW5mbyA+ICgzLCAwKSBlbHNlIDAsICdqc29uL3N5bnRheCcsICc8PDw8PDw8IEhFQURc
bntcbn1cbicpCiAKICAgICBkZWYgdGVzdF9zaW5nbGVfcXVvdGUoc2VsZik6CiAgICAgICAgIHNl
bGYuYXNzZXJ0X2Vycm9yKDIsICdqc29uL3N5bnRheCcsICJ7XG4nc2xhdmVzJzogW11cbn1cbiIp
CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2pzdGVzdF91bml0
dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNr
ZXJzL2pzdGVzdF91bml0dGVzdC5weQkocmV2aXNpb24gMjUyMzY5KQorKysgVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9qc3Rlc3RfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29w
eSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogaW1wb3J0IHVuaXR0ZXN0CiAKLWZyb20ganN0ZXN0IGlt
cG9ydCBtYXBfZnVuY3Rpb25zX3RvX2RpY3QKK2Zyb20gd2Via2l0cHkuc3R5bGUuY2hlY2tlcnMu
anN0ZXN0IGltcG9ydCBtYXBfZnVuY3Rpb25zX3RvX2RpY3QKIAogCiBjbGFzcyBKU1Rlc3RDaGVj
a2VyVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9zdHlsZS9jaGVja2Vycy9tZXNzYWdlc2luLnB5Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvbWVzc2FnZXNpbi5weQkocmV2aXNpb24gMjUy
MzY5KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9tZXNzYWdlc2lu
LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAiIiJDaGVja3MgV2ViS2l0IHN0
eWxlIGZvciAubWVzc2FnZXMuaW4gZmlsZXMuIiIiCiAKIGltcG9ydCByZQotZnJvbSBjb21tb24g
aW1wb3J0IFRhYkNoZWNrZXIKK2Zyb20gd2Via2l0cHkuc3R5bGUuY2hlY2tlcnMuY29tbW9uIGlt
cG9ydCBUYWJDaGVja2VyCiAKIAogY2xhc3MgTWVzc2FnZXNJbkNoZWNrZXIob2JqZWN0KToKSW5k
ZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvbWVzc2FnZXNpbl91bml0
dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNr
ZXJzL21lc3NhZ2VzaW5fdW5pdHRlc3QucHkJKHJldmlzaW9uIDI1MjM2OSkKKysrIFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvbWVzc2FnZXNpbl91bml0dGVzdC5weQkod29y
a2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogCiBpbXBvcnQgdW5pdHRlc3QKIAotZnJvbSBt
ZXNzYWdlc2luIGltcG9ydCBNZXNzYWdlc0luQ2hlY2tlcgorZnJvbSB3ZWJraXRweS5zdHlsZS5j
aGVja2Vycy5tZXNzYWdlc2luIGltcG9ydCBNZXNzYWdlc0luQ2hlY2tlcgogCiAKIGNsYXNzIE1l
c3NhZ2VzSW5DaGVja2VyU3R5bGVUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CkluZGV4OiBU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL3BuZ191bml0dGVzdC5weQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL3BuZ191bml0
dGVzdC5weQkocmV2aXNpb24gMjUyMzY5KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHls
ZS9jaGVja2Vycy9wbmdfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcg
QEAKIAogaW1wb3J0IHVuaXR0ZXN0CiAKLWZyb20gcG5nIGltcG9ydCBQTkdDaGVja2VyCitmcm9t
IHdlYmtpdHB5LnN0eWxlLmNoZWNrZXJzLnBuZyBpbXBvcnQgUE5HQ2hlY2tlcgogZnJvbSB3ZWJr
aXRweS5jb21tb24uc3lzdGVtLmZpbGVzeXN0ZW1fbW9jayBpbXBvcnQgTW9ja0ZpbGVTeXN0ZW0K
IGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5zeXN0ZW1ob3N0X21vY2sgaW1wb3J0IE1vY2tT
eXN0ZW1Ib3N0CiAKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMv
cHl0aG9uLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hl
Y2tlcnMvcHl0aG9uLnB5CShyZXZpc2lvbiAyNTIzNjkpCisrKyBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L3N0eWxlL2NoZWNrZXJzL3B5dGhvbi5weQkod29ya2luZyBjb3B5KQpAQCAtMjQsMTMgKzI0
LDEzIEBACiAiIiJTdXBwb3J0cyBjaGVja2luZyBXZWJLaXQgc3R5bGUgaW4gUHl0aG9uIGZpbGVz
LiIiIgogCiBpbXBvcnQgcmUKLWZyb20gU3RyaW5nSU8gaW1wb3J0IFN0cmluZ0lPCitpbXBvcnQg
c3lzCiAKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5maWxlc3lzdGVtIGltcG9ydCBGaWxl
U3lzdGVtCitmcm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0
IFN0cmluZ0lPCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ub3V0cHV0Y2FwdHVyZSBpbXBv
cnQgT3V0cHV0Q2FwdHVyZVNjb3BlCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi53ZWJraXRfZmluZGVy
IGltcG9ydCBXZWJLaXRGaW5kZXIKIGZyb20gd2Via2l0cHkudGhpcmRwYXJ0eS5hdXRvaW5zdGFs
bGVkIGltcG9ydCBwZXA4Ci1mcm9tIHdlYmtpdHB5LnRoaXJkcGFydHkuYXV0b2luc3RhbGxlZC5w
eWxpbnQgaW1wb3J0IGxpbnQKLWZyb20gd2Via2l0cHkudGhpcmRwYXJ0eS5hdXRvaW5zdGFsbGVk
LnB5bGludC5yZXBvcnRlcnMudGV4dCBpbXBvcnQgUGFyc2VhYmxlVGV4dFJlcG9ydGVyCiAKIAog
Y2xhc3MgUHl0aG9uQ2hlY2tlcihvYmplY3QpOgpAQCAtNDEsNyArNDEsMTAgQEAgY2xhc3MgUHl0
aG9uQ2hlY2tlcihvYmplY3QpOgogCiAgICAgZGVmIGNoZWNrKHNlbGYsIGxpbmVzKToKICAgICAg
ICAgc2VsZi5fY2hlY2tfcGVwOChsaW5lcykKLSAgICAgICAgc2VsZi5fY2hlY2tfcHlsaW50KGxp
bmVzKQorICAgICAgICAjIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjA0MTMzCisgICAgICAgICMgUHlsaW50IGNhbid0IGxpdmUgaGFwcGlseSBpbiBweXRo
b24gMiBhbmQgMyB3b3JsZCwgd2UgbmVlZCB0byBwaWNrIG9uZQorICAgICAgICBpZiBzeXMudmVy
c2lvbl9pbmZvIDwgKDMsIDApOgorICAgICAgICAgICAgc2VsZi5fY2hlY2tfcHlsaW50KGxpbmVz
KQogCiAgICAgZGVmIF9jaGVja19wZXA4KHNlbGYsIGxpbmVzKToKICAgICAgICAgIyBJbml0aWFs
aXplIHBlcDgub3B0aW9ucywgd2hpY2ggaXMgbmVjZXNzYXJ5IGZvcgpAQCAtNzEsMTAgKzc0LDEx
IEBAIGNsYXNzIFB5dGhvbkNoZWNrZXIob2JqZWN0KToKICAgICAgICAgIyBmaWx0ZXJpbmcgd2Fy
bmluZ3MgdXNpbmcgdGhlIHJ1bGVzIGluIHN0eWxlL2NoZWNrZXIucHkgaW5zdGVhZC4KICAgICAg
ICAgb3V0cHV0ID0gcHlsaW50ZXIucnVuKFsnLUUnLCBzZWxmLl9maWxlX3BhdGhdKQogCi0gICAg
ICAgIGxpbnRfcmVnZXggPSByZS5jb21waWxlKCcoW146XSspOihbXjpdKyk6IFxbKFteXV0rKVxd
ICguKiknKQorICAgICAgICBsaW50X3JlZ2V4ID0gcmUuY29tcGlsZShyJyhbXjpdKyk6KFteOl0r
KTogXFsoW15dXSspXF0gKC4qKScpCiAgICAgICAgIGZvciBlcnJvciBpbiBvdXRwdXQuZ2V0dmFs
dWUoKS5zcGxpdGxpbmVzKCk6CiAgICAgICAgICAgICBtYXRjaF9vYmogPSBsaW50X3JlZ2V4Lm1h
dGNoKGVycm9yKQotICAgICAgICAgICAgYXNzZXJ0KG1hdGNoX29iaikKKyAgICAgICAgICAgIGlm
IG5vdCBtYXRjaF9vYmo6CisgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIGxp
bmVfbnVtYmVyID0gaW50KG1hdGNoX29iai5ncm91cCgyKSkKICAgICAgICAgICAgIGNhdGVnb3J5
X2FuZF9tZXRob2QgPSBtYXRjaF9vYmouZ3JvdXAoMykuc3BsaXQoJywgJykKICAgICAgICAgICAg
IGNhdGVnb3J5ID0gJ3B5bGludC8nICsgKGNhdGVnb3J5X2FuZF9tZXRob2RbMF0pCkBAIC0xMDQs
NyArMTA4LDEwIEBAIGNsYXNzIFB5bGludGVyKG9iamVjdCk6CiAKICAgICBkZWYgcnVuKHNlbGYs
IGFyZ3YpOgogICAgICAgICBvdXRwdXQgPSBfRmlsdGVyZWRTdHJpbmdJTyhzZWxmLkZBTFNFX1BP
U0lUSVZFUykKLSAgICAgICAgbGludC5SdW4oWyctLXJjZmlsZScsIHNlbGYuX3B5bGludHJjXSAr
IGFyZ3YsIHJlcG9ydGVyPVBhcnNlYWJsZVRleHRSZXBvcnRlcihvdXRwdXQ9b3V0cHV0KSwgZXhp
dD1GYWxzZSkKKyAgICAgICAgd2l0aCBPdXRwdXRDYXB0dXJlU2NvcGUoKToKKyAgICAgICAgICAg
IGZyb20gd2Via2l0cHkudGhpcmRwYXJ0eS5hdXRvaW5zdGFsbGVkLnB5bGludCBpbXBvcnQgbGlu
dAorICAgICAgICAgICAgZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5LmF1dG9pbnN0YWxsZWQucHls
aW50LnJlcG9ydGVycy50ZXh0IGltcG9ydCBQYXJzZWFibGVUZXh0UmVwb3J0ZXIKKyAgICAgICAg
ICAgIGxpbnQuUnVuKFsnLS1yY2ZpbGUnLCBzZWxmLl9weWxpbnRyY10gKyBhcmd2LCByZXBvcnRl
cj1QYXJzZWFibGVUZXh0UmVwb3J0ZXIob3V0cHV0PW91dHB1dCksIGV4aXQ9RmFsc2UpCiAgICAg
ICAgIHJldHVybiBvdXRwdXQKIAogCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxl
L2NoZWNrZXJzL3B5dGhvbl91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL3B5dGhvbl91bml0dGVzdC5weQkocmV2aXNpb24gMjUy
MzY5KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9weXRob25fdW5p
dHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTIzLDkgKzIzLDEwIEBACiAiIiJVbml0IHRlc3Rz
IGZvciBweXRob24ucHkuIiIiCiAKIGltcG9ydCBvcworaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0
ZXN0CiAKLWZyb20gcHl0aG9uIGltcG9ydCBQeXRob25DaGVja2VyCitmcm9tIHdlYmtpdHB5LnN0
eWxlLmNoZWNrZXJzLnB5dGhvbiBpbXBvcnQgUHl0aG9uQ2hlY2tlcgogCiAKIGNsYXNzIFB5dGhv
bkNoZWNrZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTQ2LDggKzQ3LDcgQEAgY2xhc3Mg
UHl0aG9uQ2hlY2tlclRlc3QodW5pdHRlc3QuVGVzdENhcwogICAgICAgICAiIiJUZXN0IGNoZWNr
KCkgbWV0aG9kLiIiIgogICAgICAgICBlcnJvcnMgPSBbXQogCi0gICAgICAgIGRlZiBfbW9ja19o
YW5kbGVfc3R5bGVfZXJyb3IobGluZV9udW1iZXIsIGNhdGVnb3J5LCBjb25maWRlbmNlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UpOgorICAgICAgICBkZWYg
X21vY2tfaGFuZGxlX3N0eWxlX2Vycm9yKGxpbmVfbnVtYmVyLCBjYXRlZ29yeSwgY29uZmlkZW5j
ZSwgbWVzc2FnZSk6CiAgICAgICAgICAgICBlcnJvciA9IChsaW5lX251bWJlciwgY2F0ZWdvcnks
IGNvbmZpZGVuY2UsIG1lc3NhZ2UpCiAgICAgICAgICAgICBlcnJvcnMuYXBwZW5kKGVycm9yKQog
CkBAIC01NywxMCArNTcsMTIgQEAgY2xhc3MgUHl0aG9uQ2hlY2tlclRlc3QodW5pdHRlc3QuVGVz
dENhcwogICAgICAgICBjaGVja2VyID0gUHl0aG9uQ2hlY2tlcihmaWxlX3BhdGgsIF9tb2NrX2hh
bmRsZV9zdHlsZV9lcnJvcikKICAgICAgICAgY2hlY2tlci5jaGVjayhsaW5lcz1bXSkKIAotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGVycm9ycywgWwotICAgICAgICAgICAgKDQsICJwZXA4L1cy
OTEiLCA1LCAidHJhaWxpbmcgd2hpdGVzcGFjZSIpLAotICAgICAgICAgICAgKDQsICJweWxpbnQv
RTA2MDIiLCA1LCAiVW5kZWZpbmVkIHZhcmlhYmxlICdlcnJvciciKSwKLSAgICAgICAgICAgIF0p
CisgICAgICAgICMgRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDQxMzMKKyAgICAgICAgZXhwZWN0ZWRfZXJyb3JzID0gWyg0LCAicGVwOC9XMjkxIiwgNSwg
InRyYWlsaW5nIHdoaXRlc3BhY2UiKV0KKyAgICAgICAgaWYgc3lzLnZlcnNpb25faW5mbyA8ICgz
LCAwKToKKyAgICAgICAgICAgIGV4cGVjdGVkX2Vycm9ycy5hcHBlbmQoKDQsICJweWxpbnQvRTA2
MDIiLCA1LCAiVW5kZWZpbmVkIHZhcmlhYmxlICdlcnJvciciKSkKKworICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGVycm9ycywgZXhwZWN0ZWRfZXJyb3JzKQogCiAgICAgZGVmIHRlc3RfcHlsaW50
X2ZhbHNlX3Bvc2l0aXZlcyhzZWxmKToKICAgICAgICAgIiIiVGVzdCB0aGF0IHB5bGludCBmYWxz
ZSBwb3NpdGl2ZXMgYXJlIHN1cHByZXNzZWQuIiIiCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L3N0eWxlL2NoZWNrZXJzL3B5dGhvbl91bml0dGVzdF9mYWxzZXBvc2l0aXZlcy5weQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL3B5dGhvbl91
bml0dGVzdF9mYWxzZXBvc2l0aXZlcy5weQkocmV2aXNpb24gMjUyMzY5KQorKysgVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9weXRob25fdW5pdHRlc3RfZmFsc2Vwb3NpdGl2
ZXMucHkJKHdvcmtpbmcgY29weSkKQEAgLTUsOCArNSwxMSBAQCBpbXBvcnQgc3VicHJvY2Vzcwog
CiAKIGRlZiB0ZXN0X3BvcGVuKHByb2MpOgotICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKHByb2Ms
IHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
ZGVycj1zdWJwcm9jZXNzLlNURE9VVCkKKyAgICBwID0gc3VicHJvY2Vzcy5Qb3BlbigKKyAgICAg
ICAgcHJvYywKKyAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKKyAgICAgICAgc3RkZXJy
PXN1YnByb2Nlc3MuU1RET1VULAorICAgICkKICAgICB0bXAxID0gcC5wb2xsCiAgICAgdG1wMiA9
IHAucmV0dXJuY29kZQogICAgIHRtcDMgPSBwLnN0ZGluCkluZGV4OiBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3N0eWxlL2NoZWNrZXJzL3B5dGhvbl91bml0dGVzdF9pbnB1dC5weQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL3B5dGhvbl91bml0dGVz
dF9pbnB1dC5weQkocmV2aXNpb24gMjUyMzY5KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9z
dHlsZS9jaGVja2Vycy9weXRob25fdW5pdHRlc3RfaW5wdXQucHkJKHdvcmtpbmcgY29weSkKQEAg
LTEsNCArMSw0IEBACiAjIFRoaXMgZmlsZSBpcyBzYW1wbGUgaW5wdXQgZm9yIHB5dGhvbl91bml0
dGVzdC5weSBhbmQgaW5jbHVkZXMgdHdvCiAjIHByb2JsZW1zLCBvbmUgdGhhdCB3aWxsIGdlbmVy
YXRlIGEgUEVQLTggd2FybmluZyBmb3IgdHJhaWxpbmcgd2hpdGVzcGFjZQogIyBhbmQgb25lIHRo
YXQgd2lsbCBnZW5lcmF0ZSBhIHB5bGludCBlcnJvciBmb3IgYW4gdW5kZWZpbmVkIHZhcmlhYmxl
LgotcHJpbnQgZXJyb3IoKSAKK3ByaW50KGVycm9yKCkpIApJbmRleDogVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9zdHlsZS9jaGVja2Vycy90ZXN0X2V4cGVjdGF0aW9ucy5weQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL3Rlc3RfZXhwZWN0YXRpb25z
LnB5CShyZXZpc2lvbiAyNTIzNjkpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2No
ZWNrZXJzL3Rlc3RfZXhwZWN0YXRpb25zLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zNCw5ICszNCw5
IEBAIGltcG9ydCBvcwogaW1wb3J0IHJlCiBpbXBvcnQgc3lzCiAKLWZyb20gY29tbW9uIGltcG9y
dCBUYWJDaGVja2VyCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5ob3N0IGltcG9ydCBIb3N0CiBmcm9t
IHdlYmtpdHB5LmxheW91dF90ZXN0cy5tb2RlbHMgaW1wb3J0IHRlc3RfZXhwZWN0YXRpb25zCitm
cm9tIHdlYmtpdHB5LnN0eWxlLmNoZWNrZXJzLmNvbW1vbiBpbXBvcnQgVGFiQ2hlY2tlcgogZnJv
bSB3ZWJraXRweS5zdHlsZS5lcnJvcl9oYW5kbGVycyBpbXBvcnQgRGVmYXVsdFN0eWxlRXJyb3JI
YW5kbGVyCiAKIApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy90
ZXN0X2V4cGVjdGF0aW9uc191bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL3Rlc3RfZXhwZWN0YXRpb25zX3VuaXR0ZXN0LnB5CShy
ZXZpc2lvbiAyNTIzNjkpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJz
L3Rlc3RfZXhwZWN0YXRpb25zX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zMCw4ICsz
MCw4IEBAIGltcG9ydCBvcwogaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiAKLWZyb20gdGVz
dF9leHBlY3RhdGlvbnMgaW1wb3J0IFRlc3RFeHBlY3RhdGlvbnNDaGVja2VyCiBmcm9tIHdlYmtp
dHB5LmNvbW1vbi5ob3N0X21vY2sgaW1wb3J0IE1vY2tIb3N0Citmcm9tIHdlYmtpdHB5LnN0eWxl
LmNoZWNrZXJzLnRlc3RfZXhwZWN0YXRpb25zIGltcG9ydCBUZXN0RXhwZWN0YXRpb25zQ2hlY2tl
cgogCiAKIGNsYXNzIEVycm9yQ29sbGVjdG9yKG9iamVjdCk6CkluZGV4OiBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL3RleHQucHkKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy90ZXh0LnB5CShyZXZpc2lvbiAyNTIzNjkpCisr
KyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL3RleHQucHkJKHdvcmtpbmcg
Y29weSkKQEAgLTI5LDcgKzI5LDcgQEAKIAogIiIiQ2hlY2tzIFdlYktpdCBzdHlsZSBmb3IgdGV4
dCBmaWxlcy4iIiIKIAotZnJvbSBjb21tb24gaW1wb3J0IFRhYkNoZWNrZXIKK2Zyb20gd2Via2l0
cHkuc3R5bGUuY2hlY2tlcnMuY29tbW9uIGltcG9ydCBUYWJDaGVja2VyCiAKIAogY2xhc3MgVGV4
dENoZWNrZXIob2JqZWN0KToKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hl
Y2tlcnMvdGV4dF91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L3N0eWxlL2NoZWNrZXJzL3RleHRfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI1MjM2OSkKKysr
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvdGV4dF91bml0dGVzdC5weQko
d29ya2luZyBjb3B5KQpAQCAtMzAsOCArMzAsOCBAQAogCiBpbXBvcnQgdW5pdHRlc3QKIAotaW1w
b3J0IHRleHQgYXMgdGV4dF9zdHlsZQotZnJvbSB0ZXh0IGltcG9ydCBUZXh0Q2hlY2tlcgorZnJv
bSB3ZWJraXRweS5zdHlsZS5jaGVja2VycyBpbXBvcnQgdGV4dCBhcyB0ZXh0X3N0eWxlCitmcm9t
IHdlYmtpdHB5LnN0eWxlLmNoZWNrZXJzLnRleHQgaW1wb3J0IFRleHRDaGVja2VyCiAKIAogY2xh
c3MgVGV4dFN0eWxlVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgpJbmRleDogVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy93YXRjaGxpc3RfdW5pdHRlc3QucHkKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy93YXRjaGxpc3Rf
dW5pdHRlc3QucHkJKHJldmlzaW9uIDI1MjM2OSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
c3R5bGUvY2hlY2tlcnMvd2F0Y2hsaXN0X3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0z
Myw4ICszMyw3IEBACiAKIGltcG9ydCB1bml0dGVzdAogCi0KLWltcG9ydCB3YXRjaGxpc3QKK2Zy
b20gd2Via2l0cHkuc3R5bGUuY2hlY2tlcnMgaW1wb3J0IHdhdGNobGlzdAogCiAKIGNsYXNzIE1v
Y2tFcnJvckhhbmRsZXIob2JqZWN0KToKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5
bGUvY2hlY2tlcnMveGNvZGVwcm9qX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMveGNvZGVwcm9qX3VuaXR0ZXN0LnB5CShyZXZp
c2lvbiAyNTIzNjkpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL3hj
b2RlcHJval91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogIiIi
VW5pdCB0ZXN0IGZvciB4Y29kZXByb2oucHkuIiIiCiAKIGltcG9ydCB1bml0dGVzdAotaW1wb3J0
IHhjb2RlcHJvagorZnJvbSB3ZWJraXRweS5zdHlsZS5jaGVja2VycyBpbXBvcnQgeGNvZGVwcm9q
CiAKIAogY2xhc3MgVGVzdEVycm9ySGFuZGxlcihvYmplY3QpOgpJbmRleDogVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy94bWxfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy94bWxfdW5pdHRlc3QucHkJKHJl
dmlzaW9uIDI1MjM2OSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMv
eG1sX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw3IEBACiAiIiJVbml0
IHRlc3QgZm9yIHhtbC5weS4iIiIKIAogaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgeG1sCitmcm9t
IHdlYmtpdHB5LnN0eWxlLmNoZWNrZXJzIGltcG9ydCB4bWwKIAogCiBjbGFzcyBNb2NrRXJyb3JI
YW5kbGVyKG9iamVjdCk6CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkv
X19pbml0X18ucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBh
cnR5L19faW5pdF9fLnB5CShyZXZpc2lvbiAyNTIzNjkpCisrKyBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L3RoaXJkcGFydHkvX19pbml0X18ucHkJKHdvcmtpbmcgY29weSkKQEAgLTE1Miw4ICsxNTIs
OCBAQCBjbGFzcyBBdXRvaW5zdGFsbEltcG9ydEhvb2sob2JqZWN0KToKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgImtleXJpbmctNy4zLjEva2V5cmluZyIpCiAKICAgICBkZWYgX2luc3Rh
bGxfcGVwOChzZWxmKToKLSAgICAgICAgc2VsZi5faW5zdGFsbCgiaHR0cHM6Ly9maWxlcy5weXRo
b25ob3N0ZWQub3JnL3BhY2thZ2VzL3NvdXJjZS9wL3BlcDgvcGVwOC0wLjUuMC50YXIuZ3oiLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGVwOC0wLjUuMC9wZXA4LnB5IikKKyAgICAg
ICAgc2VsZi5faW5zdGFsbCgiaHR0cHM6Ly9maWxlcy5weXRob25ob3N0ZWQub3JnL3BhY2thZ2Vz
LzAxL2EwLzY0YmExOTUxOWRiNDllNDA5NGQ4MjU5OTQxMmE5NjYwZGVlOGMyNmE3YWRkYmJiMWJm
MTc5MjdjZWVmZS9wZXA4LTEuNy4xLnRhci5neiIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJwZXA4LTEuNy4xL3BlcDgucHkiKQogICAgIGRlZiBfaW5zdGFsbF9weWNvZGVzdHlsZShz
ZWxmKToKICAgICAgICAgc2VsZi5faW5zdGFsbCgiaHR0cHM6Ly9maWxlcy5weXRob25ob3N0ZWQu
b3JnL3BhY2thZ2VzL3NvdXJjZS9wL3B5Y29kZXN0eWxlL3B5Y29kZXN0eWxlLTIuNS4wLnRhci5n
eiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJweWNvZGVzdHlsZS0yLjUuMC9weWNv
ZGVzdHlsZS5weSIpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>