<?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>92450</bug_id>
          
          <creation_ts>2012-07-26 19:35:50 -0700</creation_ts>
          <short_desc>nrwt: remove &apos;webkit.py&apos; and the &apos;WebKitPort&apos;</short_desc>
          <delta_ts>2012-07-27 14:04:27 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>NRWT</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>92447</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Pranke">dpranke</reporter>
          <assigned_to name="Dirk Pranke">dpranke</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric</cc>
    
    <cc>ojan</cc>
    
    <cc>rniwa</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>680027</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-07-26 19:35:50 -0700</bug_when>
    <thetext>nrwt: remove &apos;webkit.py&apos; and the &apos;WebKitPort&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>680028</commentid>
    <comment_count>1</comment_count>
      <attachid>154814</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-07-26 19:36:29 -0700</bug_when>
    <thetext>Created attachment 154814
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>680032</commentid>
    <comment_count>2</comment_count>
      <attachid>154817</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-07-26 19:39:01 -0700</bug_when>
    <thetext>Created attachment 154817
clarify that this is just cut&amp;paste</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>680033</commentid>
    <comment_count>3</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-07-26 19:39:30 -0700</bug_when>
    <thetext>adam, eric, ryoksuke - this should make you guys happy :).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>680046</commentid>
    <comment_count>4</comment_count>
      <attachid>154817</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-07-26 20:06:34 -0700</bug_when>
    <thetext>Comment on attachment 154817
clarify that this is just cut&amp;paste

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

It seems like you&apos;ve merged your patch for the bug 92447 here.

&gt; Tools/ChangeLog:86
&gt; +2012-07-26  Dirk Pranke  &lt;dpranke@chromium.org&gt;
&gt; +
&gt; +        nrwt: move image diffing code to a separate module
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=92447

Double entry.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>680099</commentid>
    <comment_count>5</comment_count>
      <attachid>154835</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-07-26 21:50:39 -0700</bug_when>
    <thetext>Created attachment 154835
fix base for diff</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>680101</commentid>
    <comment_count>6</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-07-26 21:51:46 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 154817 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=154817&amp;action=review
&gt; 
&gt; It seems like you&apos;ve merged your patch for the bug 92447 here.
&gt; 

whoops. I had it right in the first patch but forgot to specify the base for the diff in the second :(. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>680865</commentid>
    <comment_count>7</comment_count>
      <attachid>154835</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-07-27 11:31:10 -0700</bug_when>
    <thetext>Comment on attachment 154835
fix base for diff

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

This looks right. Please make sure that test-webkitpy &amp; run-webkit-tests run without errors before you land.

&gt; Tools/Scripts/webkitpy/layout_tests/port/base.py:1430
&gt; +    def _skipped_tests_for_unsupported_features(self, test_list):

On my.... This function has waaay too much comment that I can&apos;t make sense of the code.
Could you insert some blank lines so that comments and code aren&apos;t mangled together?
It&apos;s impossible to read as is.

&gt; Tools/Scripts/webkitpy/layout_tests/port/base.py:1459
&gt; +    def _skipped_file_search_paths(self):

Ditto about code &amp; comments completely mangled together.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>680866</commentid>
    <comment_count>8</comment_count>
      <attachid>154835</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-07-27 11:33:31 -0700</bug_when>
    <thetext>Comment on attachment 154835
fix base for diff

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

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/port/base.py:1430
&gt;&gt; +    def _skipped_tests_for_unsupported_features(self, test_list):
&gt; 
&gt; On my.... This function has waaay too much comment that I can&apos;t make sense of the code.
&gt; Could you insert some blank lines so that comments and code aren&apos;t mangled together?
&gt; It&apos;s impossible to read as is.

sure, will do.

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/port/base.py:1459
&gt;&gt; +    def _skipped_file_search_paths(self):
&gt; 
&gt; Ditto about code &amp; comments completely mangled together.

ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>681067</commentid>
    <comment_count>9</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-07-27 14:04:27 -0700</bug_when>
    <thetext>Committed r123916: &lt;http://trac.webkit.org/changeset/123916&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154814</attachid>
            <date>2012-07-26 19:36:29 -0700</date>
            <delta_ts>2012-07-26 19:38:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92450-20120726193618.patch</filename>
            <type>text/plain</type>
            <size>67836</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzODE0CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNDg3NzMwMWQ4NDUwNjhjZmRjMGQ2ZTFmYzAyZjlkZWNk
ODQ1MDg4Yi4uZTI4MWY3NmZhODY4Mjg5NGY5YTYxMjI2ZWU2ZTllNDA1NjcwMDY3NyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDg0
IEBACiAyMDEyLTA3LTI2ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgogCisg
ICAgICAgIG5yd3Q6IHJlbW92ZSAnd2Via2l0LnB5JyBhbmQgdGhlICdXZWJLaXRQb3J0JworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTI0NTAKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGZp
bmlzaGVzIHRoZSB3b3JrIG9mIG1lcmdpbmcgV2ViS2l0UG9ydCBpbnRvIFBvcnQuCisgICAgICAg
IE5vdyBQb3J0IGlzIHdheSB0b28gYmlnIDopLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9hcHBsZS5weToKKyAgICAgICAgKEFwcGxlUG9ydCk6CisgICAg
ICAgIChBcHBsZVBvcnQuX19pbml0X18pOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvYmFzZS5weToKKyAgICAgICAgKFBvcnQuc2tpcHBlZF9sYXlvdXRfdGVz
dHMpOgorICAgICAgICAoUG9ydCk6CisgICAgICAgIChQb3J0Ll9wb3J0X2ZsYWdfZm9yX3Njcmlw
dHMpOgorICAgICAgICAoUG9ydC5fYXJndW1lbnRzX2Zvcl9jb25maWd1cmF0aW9uKToKKyAgICAg
ICAgKFBvcnQuX3J1bl9zY3JpcHQpOgorICAgICAgICAoUG9ydC5fYnVpbGRfZHJpdmVyKToKKyAg
ICAgICAgKFBvcnQuX2J1aWxkX2RyaXZlcl9mbGFncyk6CisgICAgICAgIChQb3J0Ll90ZXN0c19m
b3Jfb3RoZXJfcGxhdGZvcm1zKToKKyAgICAgICAgKFBvcnQuX3J1bnRpbWVfZmVhdHVyZV9saXN0
KToKKyAgICAgICAgKFBvcnQubm1fY29tbWFuZCk6CisgICAgICAgIChQb3J0Ll9tb2R1bGVzX3Rv
X3NlYXJjaF9mb3Jfc3ltYm9scyk6CisgICAgICAgIChQb3J0Ll9zeW1ib2xzX3N0cmluZyk6Cisg
ICAgICAgIChQb3J0Ll9taXNzaW5nX2ZlYXR1cmVfdG9fc2tpcHBlZF90ZXN0cyk6CisgICAgICAg
IChQb3J0Ll9taXNzaW5nX3N5bWJvbF90b19za2lwcGVkX3Rlc3RzKToKKyAgICAgICAgKFBvcnQu
X2hhc190ZXN0X2luX2RpcmVjdG9yaWVzKToKKyAgICAgICAgKFBvcnQuX3NraXBwZWRfdGVzdHNf
Zm9yX3Vuc3VwcG9ydGVkX2ZlYXR1cmVzKToKKyAgICAgICAgKFBvcnQuX3drMl9wb3J0X25hbWUp
OgorICAgICAgICAoUG9ydC5fc2tpcHBlZF9maWxlX3NlYXJjaF9wYXRocyk6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weToKKyAgICAgICAg
KENocm9taXVtUG9ydCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9jaHJvbWl1bV9hbmRyb2lkLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fcG9ydF90ZXN0Y2FzZS5weToKKyAgICAgICAgKENocm9t
aXVtUG9ydFRlc3RDYXNlLnRlc3RfY2hlY2tfYnVpbGQpOgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZHJpdmVyX3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZWZsLnB5OgorICAgICAgICAoRWZsUG9y
dCk6CisgICAgICAgIChFZmxQb3J0Ll9faW5pdF9fKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L2d0ay5weToKKyAgICAgICAgKEd0a1BvcnQpOgorICAgICAg
ICAoR3RrUG9ydC5zZXR1cF9lbnZpcm9uX2Zvcl9zZXJ2ZXIpOgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvcG9ydF90ZXN0Y2FzZS5weToKKyAgICAgICAgKFRl
c3RXZWJLaXRQb3J0KToKKyAgICAgICAgKFRlc3RXZWJLaXRQb3J0Ll9faW5pdF9fKToKKyAgICAg
ICAgKFRlc3RXZWJLaXRQb3J0LmFsbF90ZXN0X2NvbmZpZ3VyYXRpb25zKToKKyAgICAgICAgKFRl
c3RXZWJLaXRQb3J0Ll9zeW1ib2xzX3N0cmluZyk6CisgICAgICAgIChUZXN0V2ViS2l0UG9ydC5f
dGVzdHNfZm9yX290aGVyX3BsYXRmb3Jtcyk6CisgICAgICAgIChUZXN0V2ViS2l0UG9ydC5fdGVz
dHNfZm9yX2Rpc2FibGVkX2ZlYXR1cmVzKToKKyAgICAgICAgKFBvcnRUZXN0Q2FzZSk6CisgICAg
ICAgIChQb3J0VGVzdENhc2UudGVzdF9kaWZmX2ltYWdlKToKKyAgICAgICAgKFBvcnRUZXN0Q2Fz
ZS50ZXN0X3BhdGhfdG9fdGVzdF9leHBlY3RhdGlvbnNfZmlsZSk6CisgICAgICAgIChQb3J0VGVz
dENhc2UudGVzdF9za2lwcGVkX2RpcmVjdG9yaWVzX2Zvcl9zeW1ib2xzKToKKyAgICAgICAgKHRl
c3Rfc2tpcHBlZF9kaXJlY3Rvcmllc19mb3JfZmVhdHVyZXMpOgorICAgICAgICAodGVzdF9za2lw
cGVkX2RpcmVjdG9yaWVzX2Zvcl9mZWF0dXJlc19ub19tYXRjaGluZ190ZXN0c19pbl90ZXN0X2xp
c3QpOgorICAgICAgICAodGVzdF9za2lwcGVkX3Rlc3RzX2Zvcl91bnN1cHBvcnRlZF9mZWF0dXJl
c19lbXB0eV90ZXN0X2xpc3QpOgorICAgICAgICAodGVzdF9za2lwcGVkX2xheW91dF90ZXN0cyk6
CisgICAgICAgICh0ZXN0X3NraXBwZWRfZmlsZV9zZWFyY2hfcGF0aHMpOgorICAgICAgICAodGVz
dF9yb290X29wdGlvbik6CisgICAgICAgICh0ZXN0X3Rlc3RfZXhwZWN0YXRpb25zKToKKyAgICAg
ICAgKHRlc3RfYnVpbGRfZHJpdmVyKToKKyAgICAgICAgKF9hc3NlcnRfY29uZmlnX2ZpbGVfZm9y
X3BsYXRmb3JtKToKKyAgICAgICAgKHRlc3RfbGludXhfZGlzdHJvX2RldGVjdGlvbik6CisgICAg
ICAgICh0ZXN0X2FwYWNoZV9jb25maWdfZmlsZV9uYW1lX2Zvcl9wbGF0Zm9ybSk6CisgICAgICAg
ICh0ZXN0X3BhdGhfdG9fYXBhY2hlX2NvbmZpZ19maWxlKToKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3F0LnB5OgorICAgICAgICAoUXRQb3J0KToKKyAgICAg
ICAgKFF0UG9ydC5fX2luaXRfXyk6CisgICAgICAgIChRdFBvcnQuc2V0dXBfZW52aXJvbl9mb3Jf
c2VydmVyKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dl
YmtpdC5weTogUmVtb3ZlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L3dlYmtpdF91bml0dGVzdC5weTogUmVtb3ZlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L3Rvb2wvc2VydmVycy9yZWJhc2VsaW5lc2VydmVyLnB5OgorICAgICAgICAoZ2V0X3Rl
c3RfYmFzZWxpbmVzLkFsbFBsYXRmb3Jtc1BvcnQpOgorICAgICAgICAoZ2V0X3Rlc3RfYmFzZWxp
bmVzLkFsbFBsYXRmb3Jtc1BvcnQuX19pbml0X18pOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvdG9vbC9zZXJ2ZXJzL3JlYmFzZWxpbmVzZXJ2ZXJfdW5pdHRlc3QucHk6CisgICAgICAgIChn
ZXRfdGVzdF9jb25maWcuVGVzdE1hY1BvcnQpOgorCisyMDEyLTA3LTI2ICBEaXJrIFByYW5rZSAg
PGRwcmFua2VAY2hyb21pdW0ub3JnPgorCiAgICAgICAgIG5yd3Q6IG1vdmUgaW1hZ2UgZGlmZmlu
ZyBjb2RlIHRvIGEgc2VwYXJhdGUgbW9kdWxlCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05MjQ0NwogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2FwcGxlLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9hcHBsZS5weQppbmRleCA1ZThiOGI4Mjk4NDE1ZDY4ZDFhOGIz
OWRkNzZkMGNmNmJhM2JjZmM2Li4yOGVjYzYzODA4NWU3Y2Q2ZjA4YzE1OTU4NTg3NTVkMmU1OTcz
NWE5IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L2FwcGxlLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
YXBwbGUucHkKQEAgLTI4LDE0ICsyOCwxNCBAQAogCiBpbXBvcnQgbG9nZ2luZwogCi1mcm9tIHdl
YmtpdHB5LmxheW91dF90ZXN0cy5wb3J0LndlYmtpdCBpbXBvcnQgV2ViS2l0UG9ydAorZnJvbSB3
ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC5iYXNlIGltcG9ydCBQb3J0CiBmcm9tIHdlYmtpdHB5
LmxheW91dF90ZXN0cy5tb2RlbHMudGVzdF9jb25maWd1cmF0aW9uIGltcG9ydCBUZXN0Q29uZmln
dXJhdGlvbgogCiAKIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKIAogCi1jbGFz
cyBBcHBsZVBvcnQoV2ViS2l0UG9ydCk6CitjbGFzcyBBcHBsZVBvcnQoUG9ydCk6CiAgICAgIiIi
U2hhcmVkIGxvZ2ljIGJldHdlZW4gYWxsIG9mIEFwcGxlJ3MgcG9ydHMuIiIiCiAKICAgICAjIFRo
aXMgaXMgdXNlZCB0byByZXByZXNlbnQgdGhlIHZlcnNpb24gb2YgYW4gb3BlcmF0aW5nIHN5c3Rl
bQpAQCAtNzIsNyArNzIsNyBAQCBjbGFzcyBBcHBsZVBvcnQoV2ViS2l0UG9ydCk6CiAgICAgICAg
IHJldHVybiBwb3J0X25hbWVbbGVuKHNlbGYucG9ydF9uYW1lICsgJy0nKTpdCiAKICAgICBkZWYg
X19pbml0X18oc2VsZiwgaG9zdCwgcG9ydF9uYW1lLCAqKmt3YXJncyk6Ci0gICAgICAgIFdlYktp
dFBvcnQuX19pbml0X18oc2VsZiwgaG9zdCwgcG9ydF9uYW1lLCAqKmt3YXJncykKKyAgICAgICAg
c3VwZXIoQXBwbGVQb3J0LCBzZWxmKS5fX2luaXRfXyhob3N0LCBwb3J0X25hbWUsICoqa3dhcmdz
KQogCiAgICAgICAgIGFsbG93ZWRfcG9ydF9uYW1lcyA9IHNlbGYuVkVSU0lPTl9GQUxMQkFDS19P
UkRFUiArIFtzZWxmLm9wZXJhdGluZ19zeXN0ZW0oKSArICItZnV0dXJlIl0KICAgICAgICAgcG9y
dF9uYW1lID0gcG9ydF9uYW1lLnJlcGxhY2UoJy13azInLCAnJykKZGlmZiAtLWdpdCBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weSBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weQppbmRleCA2NTZhZmZlMjI0OTkx
OWE5ZDUxNGNkN2ZkMzYwN2FhOWM1NjI3YmRjLi5hZDlmNTE0MmY4ZWY0NjkxMWM1ODY2MzRjMDU3
NzJmYzE3Y2FiZGZkIDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L2Jhc2UucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9iYXNlLnB5CkBAIC0zMyw3ICszMywxMCBAQCB0ZXN0IGluZnJhc3RydWN0dXJlICh0
aGUgUG9ydCBhbmQgRHJpdmVyIGNsYXNzZXMpLiIiIgogaW1wb3J0IGNnaQogaW1wb3J0IGRpZmZs
aWIKIGltcG9ydCBlcnJubworaW1wb3J0IGl0ZXJ0b29scworaW1wb3J0IGxvZ2dpbmcKIGltcG9y
dCBvcworaW1wb3J0IG9wZXJhdG9yCiBpbXBvcnQgb3B0cGFyc2UKIGltcG9ydCByZQogaW1wb3J0
IHN5cwpAQCAtNDksNyArNTIsNiBAQCBmcm9tIHdlYmtpdHB5LmNvbW1vbiBpbXBvcnQgZmluZF9m
aWxlcwogZnJvbSB3ZWJraXRweS5jb21tb24gaW1wb3J0IHJlYWRfY2hlY2tzdW1fZnJvbV9wbmcK
IGZyb20gd2Via2l0cHkuY29tbW9uLm1lbW9pemVkIGltcG9ydCBtZW1vaXplZAogZnJvbSB3ZWJr
aXRweS5jb21tb24uc3lzdGVtIGltcG9ydCBwYXRoCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0
ZW0gaW1wb3J0IGxvZ3V0aWxzCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZl
IGltcG9ydCBTY3JpcHRFcnJvcgogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLnN5c3RlbWhv
c3QgaW1wb3J0IFN5c3RlbUhvc3QKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscy50
ZXN0X2NvbmZpZ3VyYXRpb24gaW1wb3J0IFRlc3RDb25maWd1cmF0aW9uCkBAIC02Miw3ICs2NCw3
IEBAIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnNlcnZlcnMgaW1wb3J0IGFwYWNoZV9odHRw
X3NlcnZlcgogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMuc2VydmVycyBpbXBvcnQgaHR0cF9z
ZXJ2ZXIKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnNlcnZlcnMgaW1wb3J0IHdlYnNvY2tl
dF9zZXJ2ZXIKIAotX2xvZyA9IGxvZ3V0aWxzLmdldF9sb2dnZXIoX19maWxlX18pCitfbG9nID0g
bG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCiAKIAogIyBGSVhNRTogVGhpcyBjbGFzcyBzaG91
bGQgbWVyZ2Ugd2l0aCBXZWJLaXRQb3J0IG5vdyB0aGF0IENocm9taXVtIGJlaGF2ZXMgbW9zdGx5
IGxpa2Ugb3RoZXIgd2Via2l0IHBvcnRzLgpAQCAtNjY4LDcgKzY3MCwxMCBAQCBjbGFzcyBQb3J0
KG9iamVjdCk6CiAKICAgICBkZWYgc2tpcHBlZF9sYXlvdXRfdGVzdHMoc2VsZiwgdGVzdF9saXN0
KToKICAgICAgICAgIiIiUmV0dXJucyB0aGUgc2V0IG9mIHRlc3RzIGZvdW5kIGluIFNraXBwZWQg
ZmlsZXMuIERvZXMgKm5vdCogaW5jbHVkZSB0ZXN0cyBtYXJrZWQgYXMgU0tJUCBpbiBleHBlY3Rh
dGlvbnMgZmlsZXMuIiIiCi0gICAgICAgIHJldHVybiBzZXQoW10pCisgICAgICAgIHRlc3RzX3Rv
X3NraXAgPSBzZXQoc2VsZi5fZXhwZWN0YXRpb25zX2Zyb21fc2tpcHBlZF9maWxlcyhzZWxmLl9z
a2lwcGVkX2ZpbGVfc2VhcmNoX3BhdGhzKCkpKQorICAgICAgICB0ZXN0c190b19za2lwLnVwZGF0
ZShzZWxmLl90ZXN0c19mb3Jfb3RoZXJfcGxhdGZvcm1zKCkpCisgICAgICAgIHRlc3RzX3RvX3Nr
aXAudXBkYXRlKHNlbGYuX3NraXBwZWRfdGVzdHNfZm9yX3Vuc3VwcG9ydGVkX2ZlYXR1cmVzKHRl
c3RfbGlzdCkpCisgICAgICAgIHJldHVybiB0ZXN0c190b19za2lwCiAKICAgICBkZWYgX3Rlc3Rz
X2Zyb21fc2tpcHBlZF9maWxlX2NvbnRlbnRzKHNlbGYsIHNraXBwZWRfZmlsZV9jb250ZW50cyk6
CiAgICAgICAgIHRlc3RzX3RvX3NraXAgPSBbXQpAQCAtMTI5Niw2ICsxMzAxLDE3NiBAQCBjbGFz
cyBQb3J0KG9iamVjdCk6CiAgICAgICAgICMgLS1waXhlbC10ZXN0LWRpcmVjdG9yeSBpcyBub3Qg
c3BlY2lmaWVkLgogICAgICAgICByZXR1cm4gVHJ1ZQogCisgICAgIyBGSVhNRTogRXZlbnR1YWxs
eSB3ZSBzaG91bGQgc3RhbmRhcml6ZSBwb3J0IG5hbWluZywgYW5kIG1ha2UgdGhpcyBtZXRob2Qg
c21hcnQgZW5vdWdoCisgICAgIyB0byB1c2UgZm9yIGFsbCBwb3J0IGNvbmZpZ3VyYXRpb25zIChp
bmNsdWRpbmcgYXJjaGl0ZWN0dXJlcywgZ3JhcGhpY3MgdHlwZXMsIGV0YykuCisgICAgZGVmIF9w
b3J0X2ZsYWdfZm9yX3NjcmlwdHMoc2VsZik6CisgICAgICAgICMgVGhpcyBpcyBvdmVycnJpZGVu
IGJ5IHBvcnRzIHdoaWNoIG5lZWQgYSBmbGFnIHBhc3NlZCB0byBzY3JpcHRzIHRvIGRpc3Rpbmd1
aXNoIHRoZSB1c2Ugb2YgdGhhdCBwb3J0LgorICAgICAgICAjIEZvciBleGFtcGxlIC0tcXQgb24g
bGludXgsIHNpbmNlIGEgdXNlciBtaWdodCBoYXZlIGJvdGggR3RrIGFuZCBRdCBsaWJyYXJpZXMg
aW5zdGFsbGVkLgorICAgICAgICAjIEZJWE1FOiBDaHJvbWl1bSBzaG91bGQgb3ZlcnJpZGUgdGhp
cyBvbmNlIENocm9taXVtUG9ydCBpcyBhIFdlYktpdFBvcnQuCisgICAgICAgIHJldHVybiBOb25l
CisKKyAgICAjIFRoaXMgaXMgbW9kZWxlZCBhZnRlciB3ZWJraXRkaXJzLnBtIGFyZ3VtZW50c0Zv
ckNvbmZpZ3VyYXRpb24oKSBmcm9tIG9sZC1ydW4td2Via2l0LXRlc3RzCisgICAgZGVmIF9hcmd1
bWVudHNfZm9yX2NvbmZpZ3VyYXRpb24oc2VsZik6CisgICAgICAgIGNvbmZpZ19hcmdzID0gW10K
KyAgICAgICAgY29uZmlnX2FyZ3MuYXBwZW5kKHNlbGYuX2NvbmZpZy5mbGFnX2Zvcl9jb25maWd1
cmF0aW9uKHNlbGYuZ2V0X29wdGlvbignY29uZmlndXJhdGlvbicpKSkKKyAgICAgICAgIyBGSVhN
RTogV2UgbWF5IG5lZWQgdG8gYWRkIHN1cHBvcnQgZm9yIHBhc3NpbmcgLS0zMi1iaXQgbGlrZSBv
bGQtcnVuLXdlYmtpdC10ZXN0cyBoYWQuCisgICAgICAgIHBvcnRfZmxhZyA9IHNlbGYuX3BvcnRf
ZmxhZ19mb3Jfc2NyaXB0cygpCisgICAgICAgIGlmIHBvcnRfZmxhZzoKKyAgICAgICAgICAgIGNv
bmZpZ19hcmdzLmFwcGVuZChwb3J0X2ZsYWcpCisgICAgICAgIHJldHVybiBjb25maWdfYXJncwor
CisgICAgZGVmIF9ydW5fc2NyaXB0KHNlbGYsIHNjcmlwdF9uYW1lLCBhcmdzPU5vbmUsIGluY2x1
ZGVfY29uZmlndXJhdGlvbl9hcmd1bWVudHM9VHJ1ZSwgZGVjb2RlX291dHB1dD1UcnVlLCBlbnY9
Tm9uZSk6CisgICAgICAgIHJ1bl9zY3JpcHRfY29tbWFuZCA9IFtzZWxmLl9jb25maWcuc2NyaXB0
X3BhdGgoc2NyaXB0X25hbWUpXQorICAgICAgICBpZiBpbmNsdWRlX2NvbmZpZ3VyYXRpb25fYXJn
dW1lbnRzOgorICAgICAgICAgICAgcnVuX3NjcmlwdF9jb21tYW5kLmV4dGVuZChzZWxmLl9hcmd1
bWVudHNfZm9yX2NvbmZpZ3VyYXRpb24oKSkKKyAgICAgICAgaWYgYXJnczoKKyAgICAgICAgICAg
IHJ1bl9zY3JpcHRfY29tbWFuZC5leHRlbmQoYXJncykKKyAgICAgICAgb3V0cHV0ID0gc2VsZi5f
ZXhlY3V0aXZlLnJ1bl9jb21tYW5kKHJ1bl9zY3JpcHRfY29tbWFuZCwgY3dkPXNlbGYuX2NvbmZp
Zy53ZWJraXRfYmFzZV9kaXIoKSwgZGVjb2RlX291dHB1dD1kZWNvZGVfb3V0cHV0LCBlbnY9ZW52
KQorICAgICAgICBfbG9nLmRlYnVnKCdPdXRwdXQgb2YgJXM6XG4lcycgJSAocnVuX3NjcmlwdF9j
b21tYW5kLCBvdXRwdXQpKQorICAgICAgICByZXR1cm4gb3V0cHV0CisKKyAgICBkZWYgX2J1aWxk
X2RyaXZlcihzZWxmKToKKyAgICAgICAgZW52aXJvbm1lbnQgPSBzZWxmLmhvc3QuY29weV9jdXJy
ZW50X2Vudmlyb25tZW50KCkKKyAgICAgICAgZW52aXJvbm1lbnQuZGlzYWJsZV9nY2Nfc21hcnRx
dW90ZXMoKQorICAgICAgICBlbnYgPSBlbnZpcm9ubWVudC50b19kaWN0aW9uYXJ5KCkKKworICAg
ICAgICAjIEZJWE1FOiBXZSBidWlsZCBib3RoIER1bXBSZW5kZXJUcmVlIGFuZCBXZWJLaXRUZXN0
UnVubmVyIGZvcgorICAgICAgICAjIFdlYktpdFRlc3RSdW5uZXIgcnVucyBiZWNhdXNlIER1bXBS
ZW5kZXJUcmVlIHN0aWxsIGluY2x1ZGVzCisgICAgICAgICMgdGhlIER1bXBSZW5kZXJUcmVlU3Vw
cG9ydCBtb2R1bGUgYW5kIHRoZSBUZXN0TmV0c2NhcGVQbHVnaW4uCisgICAgICAgICMgVGhlc2Ug
dHdvIHByb2plY3RzIHNob3VsZCBiZSBmYWN0b3JlZCBvdXQgaW50byB0aGVpciBvd24KKyAgICAg
ICAgIyBwcm9qZWN0cy4KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5fcnVuX3Njcmlw
dCgiYnVpbGQtZHVtcHJlbmRlcnRyZWUiLCBhcmdzPXNlbGYuX2J1aWxkX2RyaXZlcl9mbGFncygp
LCBlbnY9ZW52KQorICAgICAgICAgICAgaWYgc2VsZi5nZXRfb3B0aW9uKCd3ZWJraXRfdGVzdF9y
dW5uZXInKToKKyAgICAgICAgICAgICAgICBzZWxmLl9ydW5fc2NyaXB0KCJidWlsZC13ZWJraXR0
ZXN0cnVubmVyIiwgYXJncz1zZWxmLl9idWlsZF9kcml2ZXJfZmxhZ3MoKSwgZW52PWVudikKKyAg
ICAgICAgZXhjZXB0IFNjcmlwdEVycm9yLCBlOgorICAgICAgICAgICAgX2xvZy5lcnJvcihlLm1l
c3NhZ2Vfd2l0aF9vdXRwdXQob3V0cHV0X2xpbWl0PU5vbmUpKQorICAgICAgICAgICAgcmV0dXJu
IEZhbHNlCisgICAgICAgIHJldHVybiBUcnVlCisKKyAgICBkZWYgX2J1aWxkX2RyaXZlcl9mbGFn
cyhzZWxmKToKKyAgICAgICAgcmV0dXJuIFtdCisKKyAgICBkZWYgX3Rlc3RzX2Zvcl9vdGhlcl9w
bGF0Zm9ybXMoc2VsZik6CisgICAgICAgICMgQnkgZGVmYXVsdCB3ZSB3aWxsIHNraXAgYW55IGRp
cmVjdG9yeSB1bmRlciBMYXlvdXRUZXN0cy9wbGF0Zm9ybQorICAgICAgICAjIHRoYXQgaXNuJ3Qg
aW4gb3VyIGJhc2VsaW5lIHNlYXJjaCBwYXRoICh0aGlzIG1pcnJvcnMgd2hhdAorICAgICAgICAj
IG9sZC1ydW4td2Via2l0LXRlc3RzIGRvZXMgaW4gZmluZFRlc3RzVG9SdW4oKSkuCisgICAgICAg
ICMgTm90ZSB0aGlzIHJldHVybnMgTGF5b3V0VGVzdHMvcGxhdGZvcm0vKiwgbm90IHBsYXRmb3Jt
LyovKi4KKyAgICAgICAgZW50cmllcyA9IHNlbGYuX2ZpbGVzeXN0ZW0uZ2xvYihzZWxmLl93ZWJr
aXRfYmFzZWxpbmVfcGF0aCgnKicpKQorICAgICAgICBkaXJzX3RvX3NraXAgPSBbXQorICAgICAg
ICBmb3IgZW50cnkgaW4gZW50cmllczoKKyAgICAgICAgICAgIGlmIHNlbGYuX2ZpbGVzeXN0ZW0u
aXNkaXIoZW50cnkpIGFuZCBlbnRyeSBub3QgaW4gc2VsZi5iYXNlbGluZV9zZWFyY2hfcGF0aCgp
OgorICAgICAgICAgICAgICAgIGJhc2VuYW1lID0gc2VsZi5fZmlsZXN5c3RlbS5iYXNlbmFtZShl
bnRyeSkKKyAgICAgICAgICAgICAgICBkaXJzX3RvX3NraXAuYXBwZW5kKCdwbGF0Zm9ybS8lcycg
JSBiYXNlbmFtZSkKKyAgICAgICAgcmV0dXJuIGRpcnNfdG9fc2tpcAorCisgICAgZGVmIF9ydW50
aW1lX2ZlYXR1cmVfbGlzdChzZWxmKToKKyAgICAgICAgIiIiSWYgYSBwb3J0IG1ha2VzIGNlcnRh
aW4gZmVhdHVyZXMgYXZhaWxhYmxlIG9ubHkgdGhyb3VnaCBydW50aW1lIGZsYWdzLCBpdCBjYW4g
b3ZlcnJpZGUgdGhpcyByb3V0aW5lIHRvIGluZGljYXRlIHdoaWNoIG9uZXMgYXJlIGF2YWlsYWJs
ZS4iIiIKKyAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIGRlZiBubV9jb21tYW5kKHNlbGYpOgor
ICAgICAgICByZXR1cm4gJ25tJworCisgICAgZGVmIF9tb2R1bGVzX3RvX3NlYXJjaF9mb3Jfc3lt
Ym9scyhzZWxmKToKKyAgICAgICAgcGF0aCA9IHNlbGYuX3BhdGhfdG9fd2ViY29yZV9saWJyYXJ5
KCkKKyAgICAgICAgaWYgcGF0aDoKKyAgICAgICAgICAgIHJldHVybiBbcGF0aF0KKyAgICAgICAg
cmV0dXJuIFtdCisKKyAgICBkZWYgX3N5bWJvbHNfc3RyaW5nKHNlbGYpOgorICAgICAgICBzeW1i
b2xzID0gJycKKyAgICAgICAgZm9yIHBhdGhfdG9fbW9kdWxlIGluIHNlbGYuX21vZHVsZXNfdG9f
c2VhcmNoX2Zvcl9zeW1ib2xzKCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAg
c3ltYm9scyArPSBzZWxmLl9leGVjdXRpdmUucnVuX2NvbW1hbmQoW3NlbGYubm1fY29tbWFuZCgp
LCBwYXRoX3RvX21vZHVsZV0sIGVycm9yX2hhbmRsZXI9c2VsZi5fZXhlY3V0aXZlLmlnbm9yZV9l
cnJvcikKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yLCBlOgorICAgICAgICAgICAgICAgIF9s
b2cud2FybigiRmFpbGVkIHRvIHJ1biBubTogJXMuICBDYW4ndCBkZXRlcm1pbmUgc3VwcG9ydGVk
IGZlYXR1cmVzIGNvcnJlY3RseS4iICUgZSkKKyAgICAgICAgcmV0dXJuIHN5bWJvbHMKKworICAg
ICMgUG9ydHMgd2hpY2ggdXNlIHJ1bi10aW1lIGZlYXR1cmUgZGV0ZWN0aW9uIHNob3VsZCBkZWZp
bmUgdGhpcyBtZXRob2QgYW5kIHJldHVybgorICAgICMgYSBkaWN0aW9uYXJ5IG1hcHBpbmcgZnJv
bSBGZWF0dXJlIE5hbWVzIHRvIHNraXBwZWQgZGlyZWN0b2lyZXMuICBOUldUIHdpbGwKKyAgICAj
IHJ1biBEdW1wUmVuZGVyVHJlZSAtLXByaW50LXN1cHBvcnRlZC1mZWF0dXJlcyBhbmQgcGFyc2Ug
dGhlIG91dHB1dC4KKyAgICAjIElmIHRoZSBGZWF0dXJlIE5hbWVzIGFyZSBub3QgZm91bmQgaW4g
dGhlIG91dHB1dCwgdGhlIGNvcnJlc3BvbmRpbmcgZGlyZWN0b3JpZXMKKyAgICAjIHdpbGwgYmUg
c2tpcHBlZC4KKyAgICBkZWYgX21pc3NpbmdfZmVhdHVyZV90b19za2lwcGVkX3Rlc3RzKHNlbGYp
OgorICAgICAgICAiIiJSZXR1cm4gdGhlIHN1cHBvcnRlZCBmZWF0dXJlIGRpY3Rpb25hcnkuIEtl
eXMgYXJlIGZlYXR1cmUgbmFtZXMgYW5kIHZhbHVlcworICAgICAgICBhcmUgdGhlIGxpc3RzIG9m
IGRpcmVjdG9yaWVzIHRvIHNraXAgaWYgdGhlIGZlYXR1cmUgbmFtZSBpcyBub3QgbWF0Y2hlZC4i
IiIKKyAgICAgICAgIyBGSVhNRTogVGhpcyBsaXN0IG1hdGNoZXMgV2ViS2l0V2luIGFuZCBzaG91
bGQgYmUgbW92ZWQgb250byB0aGUgV2luIHBvcnQuCisgICAgICAgIHJldHVybiB7CisgICAgICAg
ICAgICAiQWNjZWxlcmF0ZWQgQ29tcG9zaXRpbmciOiBbImNvbXBvc2l0aW5nIl0sCisgICAgICAg
ICAgICAiM0QgUmVuZGVyaW5nIjogWyJhbmltYXRpb25zLzNkIiwgInRyYW5zZm9ybXMvM2QiXSwK
KyAgICAgICAgfQorCisgICAgIyBQb3J0cyB3aGljaCB1c2UgY29tcGlsZS10aW1lIGZlYXR1cmUg
ZGV0ZWN0aW9uIHNob3VsZCBkZWZpbmUgdGhpcyBtZXRob2QgYW5kIHJldHVybgorICAgICMgYSBk
aWN0aW9uYXJ5IG1hcHBpbmcgZnJvbSBzeW1ib2wgc3Vic3RyaW5ncyB0byBwb3NzaWJseSBkaXNh
YmxlZCB0ZXN0IGRpcmVjdG9yaWVzLgorICAgICMgV2hlbiB0aGUgc3ltYm9sIHN1YnN0cmluZ3Mg
YXJlIG5vdCBtYXRjaGVkLCB0aGUgZGlyZWN0b3JpZXMgd2lsbCBiZSBza2lwcGVkLgorICAgICMg
SWYgcG9ydHMgZG9uJ3QgZXZlciBlbmFibGUgY2VydGFpbiBmZWF0dXJlcywgdGhlbiB0aG9zZSBk
aXJlY3RvcmllcyBjYW4ganVzdCBiZQorICAgICMgaW4gdGhlIFNraXBwZWQgbGlzdCBpbnN0ZWFk
IG9mIGNvbXBpbGUtdGltZS1jaGVja2VkIGhlcmUuCisgICAgZGVmIF9taXNzaW5nX3N5bWJvbF90
b19za2lwcGVkX3Rlc3RzKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gdGhlIHN1cHBvcnRlZCBm
ZWF0dXJlIGRpY3Rpb25hcnkuIFRoZSBrZXlzIGFyZSBzeW1ib2wtc3Vic3RyaW5ncworICAgICAg
ICBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIGxpc3RzIG9mIGRpcmVjdG9yaWVzIHRvIHNraXAgaWYg
dGhhdCBzeW1ib2wgaXMgbWlzc2luZy4iIiIKKyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAg
ICJNYXRoTUxFbGVtZW50IjogWyJtYXRobWwiXSwKKyAgICAgICAgICAgICJHcmFwaGljc0xheWVy
IjogWyJjb21wb3NpdGluZyJdLAorICAgICAgICAgICAgIldlYkNvcmVIYXMzRFJlbmRlcmluZyI6
IFsiYW5pbWF0aW9ucy8zZCIsICJ0cmFuc2Zvcm1zLzNkIl0sCisgICAgICAgICAgICAiV2ViR0xT
aGFkZXIiOiBbImZhc3QvY2FudmFzL3dlYmdsIiwgImNvbXBvc2l0aW5nL3dlYmdsIiwgImh0dHAv
dGVzdHMvY2FudmFzL3dlYmdsIl0sCisgICAgICAgICAgICAiTUhUTUxBcmNoaXZlIjogWyJtaHRt
bCJdLAorICAgICAgICAgICAgIkNTU1ZhcmlhYmxlVmFsdWUiOiBbImZhc3QvY3NzL3ZhcmlhYmxl
cyIsICJpbnNwZWN0b3Ivc3R5bGVzL3ZhcmlhYmxlcyJdLAorICAgICAgICB9CisKKyAgICBkZWYg
X2hhc190ZXN0X2luX2RpcmVjdG9yaWVzKHNlbGYsIGRpcmVjdG9yeV9saXN0cywgdGVzdF9saXN0
KToKKyAgICAgICAgaWYgbm90IHRlc3RfbGlzdDoKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQor
CisgICAgICAgIGRpcmVjdG9yaWVzID0gaXRlcnRvb2xzLmNoYWluLmZyb21faXRlcmFibGUoZGly
ZWN0b3J5X2xpc3RzKQorICAgICAgICBmb3IgZGlyZWN0b3J5LCB0ZXN0IGluIGl0ZXJ0b29scy5w
cm9kdWN0KGRpcmVjdG9yaWVzLCB0ZXN0X2xpc3QpOgorICAgICAgICAgICAgaWYgdGVzdC5zdGFy
dHN3aXRoKGRpcmVjdG9yeSk6CisgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAg
cmV0dXJuIEZhbHNlCisKKyAgICBkZWYgX3NraXBwZWRfdGVzdHNfZm9yX3Vuc3VwcG9ydGVkX2Zl
YXR1cmVzKHNlbGYsIHRlc3RfbGlzdCk6CisgICAgICAgICMgT25seSBjaGVjayB0aGUgcnVudGlt
ZSBmZWF0dXJlIGxpc3Qgb2YgdGhlcmUgYXJlIHRlc3RzIGluIHRoZSB0ZXN0X2xpc3QgdGhhdCBt
aWdodCBnZXQgc2tpcHBlZC4KKyAgICAgICAgIyBUaGlzIGlzIGEgcGVyZm9ybWFuY2Ugb3B0aW1p
emF0aW9uIHRvIGF2b2lkIHRoZSBzdWJwcm9jZXNzIGNhbGwgdG8gRFJULgorICAgICAgICBpZiBz
ZWxmLl9oYXNfdGVzdF9pbl9kaXJlY3RvcmllcyhzZWxmLl9taXNzaW5nX2ZlYXR1cmVfdG9fc2tp
cHBlZF90ZXN0cygpLnZhbHVlcygpLCB0ZXN0X2xpc3QpOgorICAgICAgICAgICAgIyBJZiB0aGUg
cG9ydCBzdXBwb3J0cyBydW50aW1lIGZlYXR1cmUgZGV0ZWN0aW9uLCBkaXNhYmxlIGFueSB0ZXN0
cworICAgICAgICAgICAgIyBmb3IgZmVhdHVyZXMgbWlzc2luZyBmcm9tIHRoZSBydW50aW1lIGZl
YXR1cmUgbGlzdC4KKyAgICAgICAgICAgIHN1cHBvcnRlZF9mZWF0dXJlX2xpc3QgPSBzZWxmLl9y
dW50aW1lX2ZlYXR1cmVfbGlzdCgpCisgICAgICAgICAgICAjIElmIF9ydW50aW1lX2ZlYXR1cmVf
bGlzdCByZXR1cm5zIGEgbm9uLU5vbmUgdmFsdWUsIHRoZW4gcHJlZmVyCisgICAgICAgICAgICAj
IHJ1bnRpbWUgZmVhdHVyZSBkZXRlY3Rpb24gb3ZlciBzdGF0aWMgZmVhdHVyZSBkZXRlY3Rpb24u
CisgICAgICAgICAgICBpZiBzdXBwb3J0ZWRfZmVhdHVyZV9saXN0IGlzIG5vdCBOb25lOgorICAg
ICAgICAgICAgICAgIHJldHVybiByZWR1Y2Uob3BlcmF0b3IuYWRkLCBbZGlyZWN0b3JpZXMgZm9y
IGZlYXR1cmUsIGRpcmVjdG9yaWVzIGluIHNlbGYuX21pc3NpbmdfZmVhdHVyZV90b19za2lwcGVk
X3Rlc3RzKCkuaXRlbXMoKSBpZiBmZWF0dXJlIG5vdCBpbiBzdXBwb3J0ZWRfZmVhdHVyZV9saXN0
XSkKKworICAgICAgICAjIE9ubHkgY2hlY2sgdGhlIHN5bWJvbHMgb2YgdGhlcmUgYXJlIHRlc3Rz
IGluIHRoZSB0ZXN0X2xpc3QgdGhhdCBtaWdodCBnZXQgc2tpcHBlZC4KKyAgICAgICAgIyBUaGlz
IGlzIGEgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uIHRvIGF2b2lkIHRoZSBjYWxsaW5nIG5tLgor
ICAgICAgICBpZiBzZWxmLl9oYXNfdGVzdF9pbl9kaXJlY3RvcmllcyhzZWxmLl9taXNzaW5nX3N5
bWJvbF90b19za2lwcGVkX3Rlc3RzKCkudmFsdWVzKCksIHRlc3RfbGlzdCk6CisgICAgICAgICAg
ICAjIFJ1bnRpbWUgZmVhdHVyZSBkZXRlY3Rpb24gbm90IHN1cHBvcnRlZCwgZmFsbGJhY2sgdG8g
c3RhdGljIGRlY3RlY3Rpb246CisgICAgICAgICAgICAjIERpc2FibGUgYW55IHRlc3RzIGZvciBz
eW1ib2xzIG1pc3NpbmcgZnJvbSB0aGUgZXhlY3V0YWJsZSBvciBsaWJyYXJpZXMuCisgICAgICAg
ICAgICBzeW1ib2xzX3N0cmluZyA9IHNlbGYuX3N5bWJvbHNfc3RyaW5nKCkKKyAgICAgICAgICAg
IGlmIHN5bWJvbHNfc3RyaW5nIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHJldHVybiBy
ZWR1Y2Uob3BlcmF0b3IuYWRkLCBbZGlyZWN0b3JpZXMgZm9yIHN5bWJvbF9zdWJzdHJpbmcsIGRp
cmVjdG9yaWVzIGluIHNlbGYuX21pc3Npbmdfc3ltYm9sX3RvX3NraXBwZWRfdGVzdHMoKS5pdGVt
cygpIGlmIHN5bWJvbF9zdWJzdHJpbmcgbm90IGluIHN5bWJvbHNfc3RyaW5nXSwgW10pCisKKyAg
ICAgICAgIyBGYWlsZWQgdG8gZ2V0IGFueSBydW50aW1lIG9yIHN5bWJvbCBpbmZvcm1hdGlvbiwg
ZG9uJ3Qgc2tpcCBhbnkgdGVzdHMuCisgICAgICAgIHJldHVybiBbXQorCisgICAgZGVmIF93azJf
cG9ydF9uYW1lKHNlbGYpOgorICAgICAgICAjIEJ5IGN1cnJlbnQgY29udmVudGlvbiwgdGhlIFdl
YktpdDIgbmFtZSBpcyBhbHdheXMgbWFjLXdrMiwgd2luLXdrMiwgbm90IG1hYy1sZW9wYXJkLXdr
MiwgZXRjLAorICAgICAgICAjIGV4Y2VwdCBmb3IgUXQgYmVjYXVzZSBXZWJLaXQyIGlzIG9ubHkg
c3VwcG9ydGVkIGJ5IFF0IDUuMCAodGhlcmVmb3JlOiBxdC01LjAtd2syKS4KKyAgICAgICAgcmV0
dXJuICIlcy13azIiICUgc2VsZi5wb3J0X25hbWUKKworICAgIGRlZiBfc2tpcHBlZF9maWxlX3Nl
YXJjaF9wYXRocyhzZWxmKToKKyAgICAgICAgIyBVbmxpa2UgYmFzZWxpbmVfc2VhcmNoX3BhdGgs
IHdlIG9ubHkgd2FudCB0byBzZWFyY2ggW1dLMi1QT1JULCBQT1JULVZFUlNJT04sIFBPUlRdIGFu
ZCBhbnkgZGlyZWN0b3JpZXMKKyAgICAgICAgIyBpbmNsdWRlZCB2aWEgLS1hZGRpdGlvbmFsLXBs
YXRmb3JtLWRpcmVjdG9yeSwgbm90IHRoZSBmdWxsIGNhc2FkZS4KKyAgICAgICAgIyBOb3RlIG9y
ZGVyIGRvZXNuJ3QgbWF0dGVyIHNpbmNlIHRoZSBTa2lwcGVkIGZpbGUgY29udGVudHMgYXJlIGFs
bCBjb21iaW5lZC4KKyAgICAgICAgc2VhcmNoX3BhdGhzID0gc2V0KFtzZWxmLnBvcnRfbmFtZV0p
CisgICAgICAgIGlmICdmdXR1cmUnIG5vdCBpbiBzZWxmLm5hbWUoKToKKyAgICAgICAgICAgIHNl
YXJjaF9wYXRocy5hZGQoc2VsZi5uYW1lKCkpCisgICAgICAgIGlmIHNlbGYuZ2V0X29wdGlvbign
d2Via2l0X3Rlc3RfcnVubmVyJyk6CisgICAgICAgICAgICAjIEJlY2F1c2UgbmVhcmx5IGFsbCBv
ZiB0aGUgc2tpcHBlZCB0ZXN0cyBmb3IgV2ViS2l0IDIgYXJlIGR1ZSB0byBjcm9zcy1wbGF0Zm9y
bQorICAgICAgICAgICAgIyBpc3N1ZXMsIGFsbCB3azIgcG9ydHMgc2hhcmUgYSBza2lwcGVkIGxp
c3QgdW5kZXIgcGxhdGZvcm0vd2syLgorICAgICAgICAgICAgc2VhcmNoX3BhdGhzLnVwZGF0ZShb
c2VsZi5fd2syX3BvcnRfbmFtZSgpLCAid2syIl0pCisgICAgICAgIHNlYXJjaF9wYXRocy51cGRh
dGUoc2VsZi5nZXRfb3B0aW9uKCJhZGRpdGlvbmFsX3BsYXRmb3JtX2RpcmVjdG9yeSIsIFtdKSkK
KworICAgICAgICByZXR1cm4gc2VhcmNoX3BhdGhzCisKIAogY2xhc3MgVmlydHVhbFRlc3RTdWl0
ZShvYmplY3QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBiYXNlLCBhcmdzLCB0ZXN0
cz1Ob25lKToKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvY2hyb21pdW0ucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L2Nocm9taXVtLnB5CmluZGV4IGJmNTQxMmRiMjg4YmZlNGQ1MDY4ZTY4Y2JmMzg1ZWE4Nzhi
OGMxYjguLjI0Y2RlYjNmNzhhNDBkNThhMTZlYTEyNTI5OThjMGIwNzQ4MzE5NTIgMTAwNzU1Ci0t
LSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkK
KysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5w
eQpAQCAtNDIsMTMgKzQyLDEyIEBAIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQg
ZXhlY3V0aXZlCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ucGF0aCBpbXBvcnQgY3lncGF0
aAogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzLnRlc3RfY29uZmlndXJhdGlvbiBp
bXBvcnQgVGVzdENvbmZpZ3VyYXRpb24KIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQu
YmFzZSBpbXBvcnQgUG9ydCwgVmlydHVhbFRlc3RTdWl0ZQotZnJvbSB3ZWJraXRweS5sYXlvdXRf
dGVzdHMucG9ydC53ZWJraXQgaW1wb3J0IFdlYktpdFBvcnQKIAogCiBfbG9nID0gbG9nZ2luZy5n
ZXRMb2dnZXIoX19uYW1lX18pCiAKIAotY2xhc3MgQ2hyb21pdW1Qb3J0KFdlYktpdFBvcnQpOgor
Y2xhc3MgQ2hyb21pdW1Qb3J0KFBvcnQpOgogICAgICIiIkFic3RyYWN0IGJhc2UgY2xhc3MgZm9y
IENocm9taXVtIGltcGxlbWVudGF0aW9ucyBvZiB0aGUgUG9ydCBjbGFzcy4iIiIKIAogICAgIEFM
TF9TWVNURU1TID0gKApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9jaHJvbWl1bV9hbmRyb2lkLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9hbmRyb2lkLnB5CmluZGV4IDBmYmNkNjZhYmNkZGE1
Nzc4YjJjNzM5NzI1MjM2YTUwZDM2NjQwNjMuLjcxZjdjNzNlZDcxMzc0MjI3YmNhNTg4NWQ2Njg4
ZDk0MzIyNjE2M2YgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvY2hyb21pdW1fYW5kcm9pZC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2FuZHJvaWQucHkKQEAgLTM3LDcgKzM3LDYgQEAg
ZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydCBpbXBvcnQgY2hyb21pdW0KIGZyb20gd2Vi
a2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQgaW1wb3J0IGRyaXZlcgogZnJvbSB3ZWJraXRweS5sYXlv
dXRfdGVzdHMucG9ydCBpbXBvcnQgZmFjdG9yeQogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMu
cG9ydCBpbXBvcnQgc2VydmVyX3Byb2Nlc3MKLWZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBv
cnQgaW1wb3J0IHdlYmtpdAogCiAKIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hy
b21pdW1fcG9ydF90ZXN0Y2FzZS5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvY2hyb21pdW1fcG9ydF90ZXN0Y2FzZS5weQppbmRleCA2OTdjMjcyNDJiN2Q3Zjk0
NWExMjRjOWM0MTUzYzg2NzFiNTg0MTk0Li43ZDRjMjM1ZjMwOTY4MWYzZGY0ZGExY2VkMGIxNGNi
MGIyNWQzYmJlIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L2Nocm9taXVtX3BvcnRfdGVzdGNhc2UucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9wb3J0X3Rlc3RjYXNlLnB5CkBAIC00NCw2
ICs0NCwxMCBAQCBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0IGltcG9ydCBwb3J0X3Rl
c3RjYXNlCiAKIGNsYXNzIENocm9taXVtUG9ydFRlc3RDYXNlKHBvcnRfdGVzdGNhc2UuUG9ydFRl
c3RDYXNlKToKIAorICAgIGRlZiB0ZXN0X2NoZWNrX2J1aWxkKHNlbGYpOgorICAgICAgICBwb3J0
ID0gc2VsZi5tYWtlX3BvcnQoKQorICAgICAgICBwb3J0LmNoZWNrX2J1aWxkKG5lZWRzX2h0dHA9
VHJ1ZSkKKwogICAgIGRlZiB0ZXN0X2RlZmF1bHRfdGltZW91dF9tcyhzZWxmKToKICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbHMoc2VsZi5tYWtlX3BvcnQob3B0aW9ucz1Nb2NrT3B0aW9ucyhjb25m
aWd1cmF0aW9uPSdSZWxlYXNlJykpLmRlZmF1bHRfdGltZW91dF9tcygpLCA2MDAwKQogICAgICAg
ICBzZWxmLmFzc2VydEVxdWFscyhzZWxmLm1ha2VfcG9ydChvcHRpb25zPU1vY2tPcHRpb25zKGNv
bmZpZ3VyYXRpb249J0RlYnVnJykpLmRlZmF1bHRfdGltZW91dF9tcygpLCAxMjAwMCkKZGlmZiAt
LWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZHJpdmVyX3Vu
aXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9kcml2
ZXJfdW5pdHRlc3QucHkKaW5kZXggNjJmNjk5NTJiZTZhMDFiMTk4ZjgxZjQ4YjQ2ODkzN2E3NzYy
MTQ5ZS4uNzA1YzFiYjdiNzg4ZDRhMmVkNGM5MGE3NTdkODYxNGU2OGVhYjkyZiAxMDA2NDQKLS0t
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9kcml2ZXJfdW5pdHRl
c3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9kcml2
ZXJfdW5pdHRlc3QucHkKQEAgLTM0LDcgKzM0LDcgQEAgZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVz
dHMucG9ydCBpbXBvcnQgUG9ydCwgRHJpdmVyLCBEcml2ZXJPdXRwdXQKIGZyb20gd2Via2l0cHku
bGF5b3V0X3Rlc3RzLnBvcnQuc2VydmVyX3Byb2Nlc3NfbW9jayBpbXBvcnQgTW9ja1NlcnZlclBy
b2Nlc3MKIAogIyBGSVhNRTogcmVtb3ZlIHRoZSBkZXBlbmRlbmN5IG9uIFRlc3RXZWJLaXRQb3J0
Ci1mcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0LndlYmtpdF91bml0dGVzdCBpbXBvcnQg
VGVzdFdlYktpdFBvcnQKK2Zyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQucG9ydF90ZXN0
Y2FzZSBpbXBvcnQgVGVzdFdlYktpdFBvcnQKIAogCiBjbGFzcyBEcml2ZXJPdXRwdXRUZXN0KHVu
aXR0ZXN0LlRlc3RDYXNlKToKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvZWZsLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9lZmwucHkKaW5kZXggMDZkY2QxODdhNWIzMmEyMjE3Yjk0MzlkN2JmNDQ3YWRmYjBk
OWVlYi4uMjVhODFkMmRhZDFiOTcwNDU5NDBhZTllMjEwMjRjNGUxZTlhMWJjMiAxMDA2NDQKLS0t
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9lZmwucHkKKysrIGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9lZmwucHkKQEAgLTI3LDIw
ICsyNywxNiBAQAogCiAiIiJXZWJLaXQgRWZsIGltcGxlbWVudGF0aW9uIG9mIHRoZSBQb3J0IGlu
dGVyZmFjZS4iIiIKIAotaW1wb3J0IGxvZ2dpbmcKLWltcG9ydCBzaWduYWwKLWltcG9ydCBzdWJw
cm9jZXNzCi0KIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscy50ZXN0X2NvbmZpZ3Vy
YXRpb24gaW1wb3J0IFRlc3RDb25maWd1cmF0aW9uCi1mcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0
cy5wb3J0LndlYmtpdCBpbXBvcnQgV2ViS2l0UG9ydAorZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVz
dHMucG9ydC5iYXNlIGltcG9ydCBQb3J0CiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0
LnB1bHNlYXVkaW9fc2FuaXRpemVyIGltcG9ydCBQdWxzZUF1ZGlvU2FuaXRpemVyCiAKIAotY2xh
c3MgRWZsUG9ydChXZWJLaXRQb3J0LCBQdWxzZUF1ZGlvU2FuaXRpemVyKToKK2NsYXNzIEVmbFBv
cnQoUG9ydCwgUHVsc2VBdWRpb1Nhbml0aXplcik6CiAgICAgcG9ydF9uYW1lID0gJ2VmbCcKIAog
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgotICAgICAgICBXZWJLaXRQ
b3J0Ll9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncykKKyAgICAgICAgc3VwZXIoRWZsUG9y
dCwgc2VsZikuX19pbml0X18oKmFyZ3MsICoqa3dhcmdzKQogCiAgICAgICAgIHNlbGYuX2poYnVp
bGRfd3JhcHBlcl9wYXRoID0gc2VsZi5wYXRoX2Zyb21fd2Via2l0X2Jhc2UoJ1Rvb2xzJywgJ2Vm
bCcsICdydW4td2l0aC1qaGJ1aWxkJykKIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcG9ydC9ndGsucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L2d0ay5weQppbmRleCBmMmEyNDdjODMyNjM0NTlkMDJiZGFiODBjNmI3
YzI1OTY3YTk2YmM5Li5mZWQwYjdhNDQwZWUwOGNjMzFiZGFhMWI1ZDg0ZTlhNWNjMjc1ZjA5IDEw
MDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2d0ay5w
eQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2d0ay5weQpA
QCAtMjYsMTkgKzI2LDE2IEBACiAjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCi1pbXBv
cnQgbG9nZ2luZwogaW1wb3J0IG9zCi1pbXBvcnQgc2lnbmFsCiBpbXBvcnQgc3VicHJvY2Vzcwog
CiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5tb2RlbHMudGVzdF9jb25maWd1cmF0aW9uIGlt
cG9ydCBUZXN0Q29uZmlndXJhdGlvbgotZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC5z
ZXJ2ZXJfcHJvY2VzcyBpbXBvcnQgU2VydmVyUHJvY2VzcwotZnJvbSB3ZWJraXRweS5sYXlvdXRf
dGVzdHMucG9ydC53ZWJraXQgaW1wb3J0IFdlYktpdFBvcnQKK2Zyb20gd2Via2l0cHkubGF5b3V0
X3Rlc3RzLnBvcnQuYmFzZSBpbXBvcnQgUG9ydAogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMu
cG9ydC5wdWxzZWF1ZGlvX3Nhbml0aXplciBpbXBvcnQgUHVsc2VBdWRpb1Nhbml0aXplcgogZnJv
bSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC54dmZiZHJpdmVyIGltcG9ydCBYdmZiRHJpdmVy
Ci1mcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBFeGVjdXRpdmUK
IAotY2xhc3MgR3RrUG9ydChXZWJLaXRQb3J0LCBQdWxzZUF1ZGlvU2FuaXRpemVyKToKKworY2xh
c3MgR3RrUG9ydChQb3J0LCBQdWxzZUF1ZGlvU2FuaXRpemVyKToKICAgICBwb3J0X25hbWUgPSAi
Z3RrIgogCiAgICAgZGVmIF9wb3J0X2ZsYWdfZm9yX3NjcmlwdHMoc2VsZik6CkBAIC01NSw3ICs1
Miw3IEBAIGNsYXNzIEd0a1BvcnQoV2ViS2l0UG9ydCwgUHVsc2VBdWRpb1Nhbml0aXplcik6CiAg
ICAgICAgIHNlbGYuX3Jlc3RvcmVfcHVsc2VhdWRpb19tb2R1bGUoKQogCiAgICAgZGVmIHNldHVw
X2Vudmlyb25fZm9yX3NlcnZlcihzZWxmLCBzZXJ2ZXJfbmFtZT1Ob25lKToKLSAgICAgICAgZW52
aXJvbm1lbnQgPSBXZWJLaXRQb3J0LnNldHVwX2Vudmlyb25fZm9yX3NlcnZlcihzZWxmLCBzZXJ2
ZXJfbmFtZSkKKyAgICAgICAgZW52aXJvbm1lbnQgPSBzdXBlcihHdGtQb3J0LCBzZWxmKS5zZXR1
cF9lbnZpcm9uX2Zvcl9zZXJ2ZXIoc2VydmVyX25hbWUpCiAgICAgICAgIGVudmlyb25tZW50WydH
VEtfTU9EVUxFUyddID0gJ2dhaWwnCiAgICAgICAgIGVudmlyb25tZW50WydHU0VUVElOR1NfQkFD
S0VORCddID0gJ21lbW9yeScKICAgICAgICAgZW52aXJvbm1lbnRbJ0xJQk9WRVJMQVlfU0NST0xM
QkFSJ10gPSAnMCcKQEAgLTExNCw3ICsxMTEsNyBAQCBjbGFzcyBHdGtQb3J0KFdlYktpdFBvcnQs
IFB1bHNlQXVkaW9TYW5pdGl6ZXIpOgogICAgICAgICByZXR1cm4gTm9uZQogCiAgICAgIyBGSVhN
RTogV2Ugc2hvdWxkIGZpbmQgYSB3YXkgdG8gc2hhcmUgdGhpcyBpbXBsbWVudGF0aW9uIHdpdGgg
R3RrLAotICAgICMgb3IgdGVhY2ggcnVuLWxhdW5jaGVyIGhvdyB0byBjYWxsIHJ1bi1zYWZhcmkg
YW5kIG1vdmUgdGhpcyBkb3duIHRvIFdlYktpdFBvcnQuCisgICAgIyBvciB0ZWFjaCBydW4tbGF1
bmNoZXIgaG93IHRvIGNhbGwgcnVuLXNhZmFyaSBhbmQgbW92ZSB0aGlzIGRvd24gdG8gUG9ydC4K
ICAgICBkZWYgc2hvd19yZXN1bHRzX2h0bWxfZmlsZShzZWxmLCByZXN1bHRzX2ZpbGVuYW1lKToK
ICAgICAgICAgcnVuX2xhdW5jaGVyX2FyZ3MgPSBbImZpbGU6Ly8lcyIgJSByZXN1bHRzX2ZpbGVu
YW1lXQogICAgICAgICBpZiBzZWxmLmdldF9vcHRpb24oJ3dlYmtpdF90ZXN0X3J1bm5lcicpOgpk
aWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9wb3J0
X3Rlc3RjYXNlLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9w
b3J0X3Rlc3RjYXNlLnB5CmluZGV4IDdkZTI1NDAyZDA5MDcxYzk0YWJlMTVlMDUzMjkyZjY5ZDZj
NjMxY2QuLjQ0YTdmYjYzNDVhNTA4NjAzZTJmZjYyMWUwY2ZhNjRmODk1NTQzNzQgMTAwNzU1Ci0t
LSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvcG9ydF90ZXN0Y2Fz
ZS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3BvcnRf
dGVzdGNhc2UucHkKQEAgLTI5LDIyICsyOSw0OCBAQAogIiIiVW5pdCB0ZXN0aW5nIGJhc2UgY2xh
c3MgZm9yIFBvcnQgaW1wbGVtZW50YXRpb25zLiIiIgogCiBpbXBvcnQgZXJybm8KK2ltcG9ydCBs
b2dnaW5nCiBpbXBvcnQgc29ja2V0CiBpbXBvcnQgc3lzCiBpbXBvcnQgdGltZQogaW1wb3J0IHVu
aXR0ZXN0CiAKLWZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5maWxlc3lzdGVtX21vY2sgaW1w
b3J0IE1vY2tGaWxlU3lzdGVtCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZl
X21vY2sgaW1wb3J0IE1vY2tFeGVjdXRpdmUKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5m
aWxlc3lzdGVtX21vY2sgaW1wb3J0IE1vY2tGaWxlU3lzdGVtCitmcm9tIHdlYmtpdHB5LmNvbW1v
bi5zeXN0ZW0ub3V0cHV0Y2FwdHVyZSBpbXBvcnQgT3V0cHV0Q2FwdHVyZQogZnJvbSB3ZWJraXRw
eS5jb21tb24uc3lzdGVtLnN5c3RlbWhvc3RfbW9jayBpbXBvcnQgTW9ja1N5c3RlbUhvc3QKLWZy
b20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnNlcnZlcnMgaW1wb3J0IGh0dHBfc2VydmVyX2Jhc2UK
LWZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnNlcnZlcnMgaW1wb3J0IGh0dHBfc2VydmVyX2Jh
c2UKLWZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQgaW1wb3J0IGZhY3RvcnkKK2Zyb20g
d2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQuYmFzZSBpbXBvcnQgUG9ydAogZnJvbSB3ZWJraXRw
eS5sYXlvdXRfdGVzdHMucG9ydC5jb25maWdfbW9jayBpbXBvcnQgTW9ja0NvbmZpZwogZnJvbSB3
ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC5zZXJ2ZXJfcHJvY2Vzc19tb2NrIGltcG9ydCBNb2Nr
U2VydmVyUHJvY2VzcworZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMuc2VydmVycyBpbXBvcnQg
aHR0cF9zZXJ2ZXJfYmFzZQogZnJvbSB3ZWJraXRweS50b29sLm1vY2t0b29sIGltcG9ydCBNb2Nr
T3B0aW9ucwogCiAKKyMgRklYTUU6IGdldCByaWQgb2YgdGhpcyBmaXh0dXJlCitjbGFzcyBUZXN0
V2ViS2l0UG9ydChQb3J0KToKKyAgICBwb3J0X25hbWUgPSAidGVzdHdlYmtpdHBvcnQiCisKKyAg
ICBkZWYgX19pbml0X18oc2VsZiwgc3ltYm9sc19zdHJpbmc9Tm9uZSwKKyAgICAgICAgICAgICAg
ICAgZXhwZWN0YXRpb25zX2ZpbGU9Tm9uZSwgc2tpcHNfZmlsZT1Ob25lLCBob3N0PU5vbmUsIGNv
bmZpZz1Ob25lLAorICAgICAgICAgICAgICAgICAqKmt3YXJncyk6CisgICAgICAgIHNlbGYuc3lt
Ym9sc19zdHJpbmcgPSBzeW1ib2xzX3N0cmluZyAgIyBQYXNzaW5nICIiIGRpc2FibGVzIGFsbCBz
dGF0aWNseS1kZXRlY3RhYmxlIGZlYXR1cmVzLgorICAgICAgICBob3N0ID0gaG9zdCBvciBNb2Nr
U3lzdGVtSG9zdCgpCisgICAgICAgIGNvbmZpZyA9IGNvbmZpZyBvciBNb2NrQ29uZmlnKCkKKyAg
ICAgICAgc3VwZXIoVGVzdFdlYktpdFBvcnQsIHNlbGYpLl9faW5pdF9fKGhvc3Q9aG9zdCwgY29u
ZmlnPWNvbmZpZywgKiprd2FyZ3MpCisKKyAgICBkZWYgYWxsX3Rlc3RfY29uZmlndXJhdGlvbnMo
c2VsZik6CisgICAgICAgIHJldHVybiBbc2VsZi50ZXN0X2NvbmZpZ3VyYXRpb24oKV0KKworICAg
IGRlZiBfc3ltYm9sc19zdHJpbmcoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLnN5bWJvbHNf
c3RyaW5nCisKKyAgICBkZWYgX3Rlc3RzX2Zvcl9vdGhlcl9wbGF0Zm9ybXMoc2VsZik6CisgICAg
ICAgIHJldHVybiBbIm1lZGlhIiwgXQorCisgICAgZGVmIF90ZXN0c19mb3JfZGlzYWJsZWRfZmVh
dHVyZXMoc2VsZik6CisgICAgICAgIHJldHVybiBbImFjY2Vzc2liaWxpdHkiLCBdCisKKwogY2xh
c3MgUG9ydFRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAiIiJUZXN0cyB0aGF0IGFs
bCBQb3J0IGltcGxlbWVudGF0aW9ucyBtdXN0IHBhc3MuIiIiCiAgICAgSFRUUF9QT1JUUyA9ICg4
MDAwLCA4MDgwLCA4NDQzKQpAQCAtNTMsNyArNzksNyBAQCBjbGFzcyBQb3J0VGVzdENhc2UodW5p
dHRlc3QuVGVzdENhc2UpOgogICAgICMgU3ViY2xhc3NlcyBvdmVycmlkZSB0aGlzIHRvIHBvaW50
IHRvIHRoZWlyIFBvcnQgc3ViY2xhc3MuCiAgICAgb3NfbmFtZSA9IE5vbmUKICAgICBvc192ZXJz
aW9uID0gTm9uZQotICAgIHBvcnRfbWFrZXIgPSBOb25lCisgICAgcG9ydF9tYWtlciA9IFRlc3RX
ZWJLaXRQb3J0CiAKICAgICBkZWYgbWFrZV9wb3J0KHNlbGYsIGhvc3Q9Tm9uZSwgcG9ydF9uYW1l
PU5vbmUsIG9wdGlvbnM9Tm9uZSwgb3NfbmFtZT1Ob25lLCBvc192ZXJzaW9uPU5vbmUsIGNvbmZp
Zz1Ob25lLCAqKmt3YXJncyk6CiAgICAgICAgIGhvc3QgPSBob3N0IG9yIE1vY2tTeXN0ZW1Ib3N0
KG9zX25hbWU9KG9zX25hbWUgb3Igc2VsZi5vc19uYW1lKSwgb3NfdmVyc2lvbj0ob3NfdmVyc2lv
biBvciBzZWxmLm9zX3ZlcnNpb24pKQpAQCAtMjM5LDEwICsyNjUsNiBAQCBjbGFzcyBQb3J0VGVz
dENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5w
cm9jLnN0b3BwZWQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHBvcnQuX2ltYWdlX2RpZmZl
ciwgTm9uZSkKIAotICAgIGRlZiB0ZXN0X2NoZWNrX2J1aWxkKHNlbGYpOgotICAgICAgICBwb3J0
ID0gc2VsZi5tYWtlX3BvcnQoKQotICAgICAgICBwb3J0LmNoZWNrX2J1aWxkKG5lZWRzX2h0dHA9
VHJ1ZSkKLQogICAgIGRlZiB0ZXN0X2NoZWNrX3dkaWZmKHNlbGYpOgogICAgICAgICBwb3J0ID0g
c2VsZi5tYWtlX3BvcnQoKQogICAgICAgICBwb3J0LmNoZWNrX3dkaWZmKCkKQEAgLTM4MSw2ICs0
MDMsMTYyIEBAIGNsYXNzIFBvcnRUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWxzKG9yZGVyZWRfZGljdC5rZXlzKClbLTI6XSwgb3B0aW9ucy5hZGRp
dGlvbmFsX2V4cGVjdGF0aW9ucykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMob3JkZXJlZF9k
aWN0LnZhbHVlcygpWy0yOl0sIFsnZm9vJywgJ2JhciddKQogCisgICAgZGVmIHRlc3RfcGF0aF90
b190ZXN0X2V4cGVjdGF0aW9uc19maWxlKHNlbGYpOgorICAgICAgICBwb3J0ID0gVGVzdFdlYktp
dFBvcnQoKQorICAgICAgICBwb3J0Ll9vcHRpb25zID0gTW9ja09wdGlvbnMod2Via2l0X3Rlc3Rf
cnVubmVyPUZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQucGF0aF90b190ZXN0
X2V4cGVjdGF0aW9uc19maWxlKCksICcvbW9jay1jaGVja291dC9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS90ZXN0d2Via2l0cG9ydC9UZXN0RXhwZWN0YXRpb25zJykKKworICAgICAgICBwb3J0ID0gVGVz
dFdlYktpdFBvcnQoKQorICAgICAgICBwb3J0Ll9vcHRpb25zID0gTW9ja09wdGlvbnMod2Via2l0
X3Rlc3RfcnVubmVyPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5wYXRoX3Rv
X3Rlc3RfZXhwZWN0YXRpb25zX2ZpbGUoKSwgJy9tb2NrLWNoZWNrb3V0L0xheW91dFRlc3RzL3Bs
YXRmb3JtL3Rlc3R3ZWJraXRwb3J0L1Rlc3RFeHBlY3RhdGlvbnMnKQorCisgICAgICAgIHBvcnQg
PSBUZXN0V2ViS2l0UG9ydCgpCisgICAgICAgIHBvcnQuaG9zdC5maWxlc3lzdGVtLmZpbGVzWycv
bW9jay1jaGVja291dC9MYXlvdXRUZXN0cy9wbGF0Zm9ybS90ZXN0d2Via2l0cG9ydC9UZXN0RXhw
ZWN0YXRpb25zJ10gPSAnc29tZSBjb250ZW50JworICAgICAgICBwb3J0Ll9vcHRpb25zID0gTW9j
a09wdGlvbnMod2Via2l0X3Rlc3RfcnVubmVyPUZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHBvcnQucGF0aF90b190ZXN0X2V4cGVjdGF0aW9uc19maWxlKCksICcvbW9jay1jaGVja291
dC9MYXlvdXRUZXN0cy9wbGF0Zm9ybS90ZXN0d2Via2l0cG9ydC9UZXN0RXhwZWN0YXRpb25zJykK
KworICAgIGRlZiB0ZXN0X3NraXBwZWRfZGlyZWN0b3JpZXNfZm9yX3N5bWJvbHMoc2VsZik6Cisg
ICAgICAgICMgVGhpcyBmaXJzdCB0ZXN0IGNvbmZpcm1zIHRoYXQgdGhlIGNvbW1vbmx5IGZvdW5k
IHN5bWJvbHMgcmVzdWx0IGluIHRoZSBleHBlY3RlZCBza2lwcGVkIGRpcmVjdG9yaWVzLgorICAg
ICAgICBzeW1ib2xzX3N0cmluZyA9ICIgIi5qb2luKFsiR3JhcGhpY3NMYXllciIsICJXZWJDb3Jl
SGFzM0RSZW5kZXJpbmciLCAiaXNYSFRNTE1QRG9jdW1lbnQiLCAiZm9vU3ltYm9sIl0pCisgICAg
ICAgIGV4cGVjdGVkX2RpcmVjdG9yaWVzID0gc2V0KFsKKyAgICAgICAgICAgICJtYXRobWwiLCAg
IyBSZXF1aXJlcyBNYXRoTUxFbGVtZW50CisgICAgICAgICAgICAiZmFzdC9jYW52YXMvd2ViZ2wi
LCAgIyBSZXF1aXJlcyBXZWJHTFNoYWRlcgorICAgICAgICAgICAgImNvbXBvc2l0aW5nL3dlYmds
IiwgICMgUmVxdWlyZXMgV2ViR0xTaGFkZXIKKyAgICAgICAgICAgICJodHRwL3Rlc3RzL2NhbnZh
cy93ZWJnbCIsICAjIFJlcXVpcmVzIFdlYkdMU2hhZGVyCisgICAgICAgICAgICAibWh0bWwiLCAg
IyBSZXF1aXJlcyBNSFRNTEFyY2hpdmUKKyAgICAgICAgICAgICJmYXN0L2Nzcy92YXJpYWJsZXMi
LCAgIyBSZXF1aXJlcyBDU1MgVmFyaWFibGVzCisgICAgICAgICAgICAiaW5zcGVjdG9yL3N0eWxl
cy92YXJpYWJsZXMiLCAgIyBSZXF1aXJlcyBDU1MgVmFyaWFibGVzCisgICAgICAgIF0pCisKKyAg
ICAgICAgcmVzdWx0X2RpcmVjdG9yaWVzID0gc2V0KFRlc3RXZWJLaXRQb3J0KHN5bWJvbHNfc3Ry
aW5nLCBOb25lKS5fc2tpcHBlZF90ZXN0c19mb3JfdW5zdXBwb3J0ZWRfZmVhdHVyZXModGVzdF9s
aXN0PVsnbWF0aG1sL2Zvby5odG1sJ10pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3Vs
dF9kaXJlY3RvcmllcywgZXhwZWN0ZWRfZGlyZWN0b3JpZXMpCisKKyAgICAgICAgIyBUZXN0IHRo
YXQgdGhlIG5tIHN0cmluZyBwYXJzaW5nIGFjdHVhbGx5IHdvcmtzOgorICAgICAgICBzeW1ib2xz
X3N0cmluZyA9ICIiIgorMDAwMDAwMDAwMTI0ZjQ5OCBzIF9fWlpON1dlYkNvcmUxM0dyYXBoaWNz
TGF5ZXIxMnJlcGxhY2VDaGlsZEVQUzBfUzFfRTE5X19QUkVUVFlfRlVOQ1RJT05fXworMDAwMDAw
MDAwMTI0ZjUwMCBzIF9fWlpON1dlYkNvcmUxM0dyYXBoaWNzTGF5ZXIxM2FkZENoaWxkQWJvdmVF
UFMwX1MxX0UxOV9fUFJFVFRZX0ZVTkNUSU9OX18KKzAwMDAwMDAwMDEyNGY2NzAgcyBfX1paTjdX
ZWJDb3JlMTNHcmFwaGljc0xheWVyMTNhZGRDaGlsZEJlbG93RVBTMF9TMV9FMTlfX1BSRVRUWV9G
VU5DVElPTl9fCisiIiIKKyAgICAgICAgIyBOb3RlICdjb21wb3NpdGluZycgaXMgbm90IGluIHRo
ZSBsaXN0IG9mIHNraXBwZWQgZGlyZWN0b3JpZXMgKGhlbmNlIHRoZSBwYXJzaW5nIG9mIEdyYXBo
aWNzTGF5ZXIgd29ya2VkKToKKyAgICAgICAgZXhwZWN0ZWRfZGlyZWN0b3JpZXMgPSBzZXQoWydt
YXRobWwnLCAndHJhbnNmb3Jtcy8zZCcsICdjb21wb3NpdGluZy93ZWJnbCcsICdmYXN0L2NhbnZh
cy93ZWJnbCcsICdhbmltYXRpb25zLzNkJywgJ21odG1sJywgJ2h0dHAvdGVzdHMvY2FudmFzL3dl
YmdsJywgJ2Zhc3QvY3NzL3ZhcmlhYmxlcycsICdpbnNwZWN0b3Ivc3R5bGVzL3ZhcmlhYmxlcydd
KQorICAgICAgICByZXN1bHRfZGlyZWN0b3JpZXMgPSBzZXQoVGVzdFdlYktpdFBvcnQoc3ltYm9s
c19zdHJpbmcsIE5vbmUpLl9za2lwcGVkX3Rlc3RzX2Zvcl91bnN1cHBvcnRlZF9mZWF0dXJlcyh0
ZXN0X2xpc3Q9WydtYXRobWwvZm9vLmh0bWwnXSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
cmVzdWx0X2RpcmVjdG9yaWVzLCBleHBlY3RlZF9kaXJlY3RvcmllcykKKworICAgIGRlZiB0ZXN0
X3NraXBwZWRfZGlyZWN0b3JpZXNfZm9yX2ZlYXR1cmVzKHNlbGYpOgorICAgICAgICBzdXBwb3J0
ZWRfZmVhdHVyZXMgPSBbIkFjY2VsZXJhdGVkIENvbXBvc2l0aW5nIiwgIkZvbyBGZWF0dXJlIl0K
KyAgICAgICAgZXhwZWN0ZWRfZGlyZWN0b3JpZXMgPSBzZXQoWyJhbmltYXRpb25zLzNkIiwgInRy
YW5zZm9ybXMvM2QiXSkKKyAgICAgICAgcG9ydCA9IFRlc3RXZWJLaXRQb3J0KE5vbmUsIHN1cHBv
cnRlZF9mZWF0dXJlcykKKyAgICAgICAgcG9ydC5fcnVudGltZV9mZWF0dXJlX2xpc3QgPSBsYW1i
ZGE6IHN1cHBvcnRlZF9mZWF0dXJlcworICAgICAgICByZXN1bHRfZGlyZWN0b3JpZXMgPSBzZXQo
cG9ydC5fc2tpcHBlZF90ZXN0c19mb3JfdW5zdXBwb3J0ZWRfZmVhdHVyZXModGVzdF9saXN0PVsi
YW5pbWF0aW9ucy8zZC9mb28uaHRtbCJdKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1
bHRfZGlyZWN0b3JpZXMsIGV4cGVjdGVkX2RpcmVjdG9yaWVzKQorCisgICAgZGVmIHRlc3Rfc2tp
cHBlZF9kaXJlY3Rvcmllc19mb3JfZmVhdHVyZXNfbm9fbWF0Y2hpbmdfdGVzdHNfaW5fdGVzdF9s
aXN0KHNlbGYpOgorICAgICAgICBzdXBwb3J0ZWRfZmVhdHVyZXMgPSBbIkFjY2VsZXJhdGVkIENv
bXBvc2l0aW5nIiwgIkZvbyBGZWF0dXJlIl0KKyAgICAgICAgZXhwZWN0ZWRfZGlyZWN0b3JpZXMg
PSBzZXQoW10pCisgICAgICAgIHJlc3VsdF9kaXJlY3RvcmllcyA9IHNldChUZXN0V2ViS2l0UG9y
dChOb25lLCBzdXBwb3J0ZWRfZmVhdHVyZXMpLl9za2lwcGVkX3Rlc3RzX2Zvcl91bnN1cHBvcnRl
ZF9mZWF0dXJlcyh0ZXN0X2xpc3Q9Wydmb28uaHRtbCddKSkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChyZXN1bHRfZGlyZWN0b3JpZXMsIGV4cGVjdGVkX2RpcmVjdG9yaWVzKQorCisgICAgZGVm
IHRlc3Rfc2tpcHBlZF90ZXN0c19mb3JfdW5zdXBwb3J0ZWRfZmVhdHVyZXNfZW1wdHlfdGVzdF9s
aXN0KHNlbGYpOgorICAgICAgICBzdXBwb3J0ZWRfZmVhdHVyZXMgPSBbIkFjY2VsZXJhdGVkIENv
bXBvc2l0aW5nIiwgIkZvbyBGZWF0dXJlIl0KKyAgICAgICAgZXhwZWN0ZWRfZGlyZWN0b3JpZXMg
PSBzZXQoW10pCisgICAgICAgIHJlc3VsdF9kaXJlY3RvcmllcyA9IHNldChUZXN0V2ViS2l0UG9y
dChOb25lLCBzdXBwb3J0ZWRfZmVhdHVyZXMpLl9za2lwcGVkX3Rlc3RzX2Zvcl91bnN1cHBvcnRl
ZF9mZWF0dXJlcyh0ZXN0X2xpc3Q9Tm9uZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVz
dWx0X2RpcmVjdG9yaWVzLCBleHBlY3RlZF9kaXJlY3RvcmllcykKKworICAgIGRlZiB0ZXN0X3Nr
aXBwZWRfbGF5b3V0X3Rlc3RzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRlc3RX
ZWJLaXRQb3J0KE5vbmUsIE5vbmUpLnNraXBwZWRfbGF5b3V0X3Rlc3RzKHRlc3RfbGlzdD1bXSks
IHNldChbJ21lZGlhJ10pKQorCisgICAgZGVmIHRlc3Rfc2tpcHBlZF9maWxlX3NlYXJjaF9wYXRo
cyhzZWxmKToKKyAgICAgICAgcG9ydCA9IFRlc3RXZWJLaXRQb3J0KCkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChwb3J0Ll9za2lwcGVkX2ZpbGVfc2VhcmNoX3BhdGhzKCksIHNldChbJ3Rlc3R3
ZWJraXRwb3J0J10pKQorICAgICAgICBwb3J0Ll9uYW1lID0gInRlc3R3ZWJraXRwb3J0LXZlcnNp
b24iCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5fc2tpcHBlZF9maWxlX3NlYXJjaF9w
YXRocygpLCBzZXQoWyd0ZXN0d2Via2l0cG9ydCcsICd0ZXN0d2Via2l0cG9ydC12ZXJzaW9uJ10p
KQorICAgICAgICBwb3J0Ll9vcHRpb25zID0gTW9ja09wdGlvbnMod2Via2l0X3Rlc3RfcnVubmVy
PVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5fc2tpcHBlZF9maWxlX3NlYXJj
aF9wYXRocygpLCBzZXQoWyd0ZXN0d2Via2l0cG9ydCcsICd0ZXN0d2Via2l0cG9ydC12ZXJzaW9u
JywgJ3Rlc3R3ZWJraXRwb3J0LXdrMicsICd3azInXSkpCisgICAgICAgIHBvcnQuX29wdGlvbnMg
PSBNb2NrT3B0aW9ucyhhZGRpdGlvbmFsX3BsYXRmb3JtX2RpcmVjdG9yeT1bImludGVybmFsLXRl
c3R3ZWJraXRwb3J0Il0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5fc2tpcHBlZF9m
aWxlX3NlYXJjaF9wYXRocygpLCBzZXQoWyd0ZXN0d2Via2l0cG9ydCcsICd0ZXN0d2Via2l0cG9y
dC12ZXJzaW9uJywgJ2ludGVybmFsLXRlc3R3ZWJraXRwb3J0J10pKQorCisgICAgZGVmIHRlc3Rf
cm9vdF9vcHRpb24oc2VsZik6CisgICAgICAgIHBvcnQgPSBUZXN0V2ViS2l0UG9ydCgpCisgICAg
ICAgIHBvcnQuX29wdGlvbnMgPSBNb2NrT3B0aW9ucyhyb290PScvZm9vJykKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChwb3J0Ll9wYXRoX3RvX2RyaXZlcigpLCAiL2Zvby9EdW1wUmVuZGVyVHJl
ZSIpCisKKyAgICBkZWYgdGVzdF90ZXN0X2V4cGVjdGF0aW9ucyhzZWxmKToKKyAgICAgICAgIyBD
aGVjayB0aGF0IHdlIHJlYWQgdGhlIGV4cGVjdGF0aW9ucyBmaWxlCisgICAgICAgIGhvc3QgPSBN
b2NrU3lzdGVtSG9zdCgpCisgICAgICAgIGhvc3QuZmlsZXN5c3RlbS53cml0ZV90ZXh0X2ZpbGUo
Jy9tb2NrLWNoZWNrb3V0L0xheW91dFRlc3RzL3BsYXRmb3JtL3Rlc3R3ZWJraXRwb3J0L1Rlc3RF
eHBlY3RhdGlvbnMnLAorICAgICAgICAgICAgJ0JVR19URVNURVhQRUNUQVRJT05TIFNLSVAgOiBm
YXN0L2h0bWwvYXJ0aWNsZS1lbGVtZW50Lmh0bWwgPSBURVhUXG4nKQorICAgICAgICBwb3J0ID0g
VGVzdFdlYktpdFBvcnQoaG9zdD1ob3N0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcnLmpv
aW4ocG9ydC5leHBlY3RhdGlvbnNfZGljdCgpLnZhbHVlcygpKSwgJ0JVR19URVNURVhQRUNUQVRJ
T05TIFNLSVAgOiBmYXN0L2h0bWwvYXJ0aWNsZS1lbGVtZW50Lmh0bWwgPSBURVhUXG4nKQorCisg
ICAgZGVmIHRlc3RfYnVpbGRfZHJpdmVyKHNlbGYpOgorICAgICAgICBvdXRwdXQgPSBPdXRwdXRD
YXB0dXJlKCkKKyAgICAgICAgcG9ydCA9IFRlc3RXZWJLaXRQb3J0KCkKKyAgICAgICAgIyBEZWxh
eSBzZXR0aW5nIF9leGVjdXRpdmUgdG8gYXZvaWQgbG9nZ2luZyBkdXJpbmcgY29uc3RydWN0aW9u
CisgICAgICAgIHBvcnQuX2V4ZWN1dGl2ZSA9IE1vY2tFeGVjdXRpdmUoc2hvdWxkX2xvZz1UcnVl
KQorICAgICAgICBwb3J0Ll9vcHRpb25zID0gTW9ja09wdGlvbnMoY29uZmlndXJhdGlvbj0iUmVs
ZWFzZSIpICAjIFRoaXMgc2hvdWxkIG5vdCBiZSBuZWNlc3NhcnksIGJ1dCBJIHRoaW5rIFRlc3RX
ZWJLaXRQb3J0IGlzIGFjdHVhbGx5IHJlYWRpbmcgZnJvbSBkaXNrIChhbmQgdGh1cyBkZXRlY3Rz
IHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24pLgorICAgICAgICBleHBlY3RlZF9zdGRlcnIgPSAi
TU9DSyBydW5fY29tbWFuZDogWydUb29scy9TY3JpcHRzL2J1aWxkLWR1bXByZW5kZXJ0cmVlJywg
Jy0tcmVsZWFzZSddLCBjd2Q9L21vY2stY2hlY2tvdXQsIGVudj17J0xDX0FMTCc6ICdDJywgJ01P
Q0tfRU5WSVJPTl9DT1BZJzogJzEnfVxuIgorICAgICAgICBzZWxmLmFzc2VydFRydWUob3V0cHV0
LmFzc2VydF9vdXRwdXRzKHNlbGYsIHBvcnQuX2J1aWxkX2RyaXZlciwgZXhwZWN0ZWRfc3RkZXJy
PWV4cGVjdGVkX3N0ZGVyciwgZXhwZWN0ZWRfbG9ncz0nJykpCisKKyAgICAgICAgIyBNYWtlIHN1
cmUgd2hlbiBwYXNzZWQgLS13ZWJraXQtdGVzdC1ydW5uZXIgd2UgYnVpbGQgdGhlIHJpZ2h0IHRv
b2wuCisgICAgICAgIHBvcnQuX29wdGlvbnMgPSBNb2NrT3B0aW9ucyh3ZWJraXRfdGVzdF9ydW5u
ZXI9VHJ1ZSwgY29uZmlndXJhdGlvbj0iUmVsZWFzZSIpCisgICAgICAgIGV4cGVjdGVkX3N0ZGVy
ciA9ICJNT0NLIHJ1bl9jb21tYW5kOiBbJ1Rvb2xzL1NjcmlwdHMvYnVpbGQtZHVtcHJlbmRlcnRy
ZWUnLCAnLS1yZWxlYXNlJ10sIGN3ZD0vbW9jay1jaGVja291dCwgZW52PXsnTENfQUxMJzogJ0Mn
LCAnTU9DS19FTlZJUk9OX0NPUFknOiAnMSd9XG5NT0NLIHJ1bl9jb21tYW5kOiBbJ1Rvb2xzL1Nj
cmlwdHMvYnVpbGQtd2Via2l0dGVzdHJ1bm5lcicsICctLXJlbGVhc2UnXSwgY3dkPS9tb2NrLWNo
ZWNrb3V0LCBlbnY9eydMQ19BTEwnOiAnQycsICdNT0NLX0VOVklST05fQ09QWSc6ICcxJ31cbiIK
KyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG91dHB1dC5hc3NlcnRfb3V0cHV0cyhzZWxmLCBwb3J0
Ll9idWlsZF9kcml2ZXIsIGV4cGVjdGVkX3N0ZGVycj1leHBlY3RlZF9zdGRlcnIsIGV4cGVjdGVk
X2xvZ3M9JycpKQorCisgICAgICAgICMgTWFrZSBzdXJlIHdlIHNob3cgdGhlIGJ1aWxkIGxvZyB3
aGVuIC0tdmVyYm9zZSBpcyBwYXNzZWQsIHdoaWNoIHdlIHNpbXVsYXRlIGJ5IHNldHRpbmcgdGhl
IGxvZ2dpbmcgbGV2ZWwgdG8gREVCVUcuCisgICAgICAgIG91dHB1dC5zZXRfbG9nX2xldmVsKGxv
Z2dpbmcuREVCVUcpCisgICAgICAgIHBvcnQuX29wdGlvbnMgPSBNb2NrT3B0aW9ucyhjb25maWd1
cmF0aW9uPSJSZWxlYXNlIikKKyAgICAgICAgZXhwZWN0ZWRfc3RkZXJyID0gIk1PQ0sgcnVuX2Nv
bW1hbmQ6IFsnVG9vbHMvU2NyaXB0cy9idWlsZC1kdW1wcmVuZGVydHJlZScsICctLXJlbGVhc2Un
XSwgY3dkPS9tb2NrLWNoZWNrb3V0LCBlbnY9eydMQ19BTEwnOiAnQycsICdNT0NLX0VOVklST05f
Q09QWSc6ICcxJ31cbiIKKyAgICAgICAgZXhwZWN0ZWRfbG9ncyA9ICJPdXRwdXQgb2YgWydUb29s
cy9TY3JpcHRzL2J1aWxkLWR1bXByZW5kZXJ0cmVlJywgJy0tcmVsZWFzZSddOlxuTU9DSyBvdXRw
dXQgb2YgY2hpbGQgcHJvY2Vzc1xuIgorICAgICAgICBzZWxmLmFzc2VydFRydWUob3V0cHV0LmFz
c2VydF9vdXRwdXRzKHNlbGYsIHBvcnQuX2J1aWxkX2RyaXZlciwgZXhwZWN0ZWRfc3RkZXJyPWV4
cGVjdGVkX3N0ZGVyciwgZXhwZWN0ZWRfbG9ncz1leHBlY3RlZF9sb2dzKSkKKyAgICAgICAgb3V0
cHV0LnNldF9sb2dfbGV2ZWwobG9nZ2luZy5JTkZPKQorCisgICAgICAgICMgTWFrZSBzdXJlIHRo
YXQgZmFpbHVyZSB0byBidWlsZCByZXR1cm5zIEZhbHNlLgorICAgICAgICBwb3J0Ll9leGVjdXRp
dmUgPSBNb2NrRXhlY3V0aXZlKHNob3VsZF9sb2c9VHJ1ZSwgc2hvdWxkX3Rocm93PVRydWUpCisg
ICAgICAgICMgQmVjYXVzZSBXSzIgY3VycmVudGx5IGhhcyB0byBidWlsZCBib3RoIHdlYmtpdHRl
c3RydW5uZXIgYW5kIERSVCwgaWYgRFJUIGZhaWxzLCB0aGF0J3MgdGhlIG9ubHkgb25lIGl0IHRy
aWVzLgorICAgICAgICBleHBlY3RlZF9zdGRlcnIgPSAiTU9DSyBydW5fY29tbWFuZDogWydUb29s
cy9TY3JpcHRzL2J1aWxkLWR1bXByZW5kZXJ0cmVlJywgJy0tcmVsZWFzZSddLCBjd2Q9L21vY2st
Y2hlY2tvdXQsIGVudj17J0xDX0FMTCc6ICdDJywgJ01PQ0tfRU5WSVJPTl9DT1BZJzogJzEnfVxu
IgorICAgICAgICBleHBlY3RlZF9sb2dzID0gIk1PQ0sgU2NyaXB0RXJyb3JcblxuTU9DSyBvdXRw
dXQgb2YgY2hpbGQgcHJvY2Vzc1xuIgorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG91dHB1dC5h
c3NlcnRfb3V0cHV0cyhzZWxmLCBwb3J0Ll9idWlsZF9kcml2ZXIsIGV4cGVjdGVkX3N0ZGVycj1l
eHBlY3RlZF9zdGRlcnIsIGV4cGVjdGVkX2xvZ3M9ZXhwZWN0ZWRfbG9ncykpCisKKyAgICBkZWYg
X2Fzc2VydF9jb25maWdfZmlsZV9mb3JfcGxhdGZvcm0oc2VsZiwgcG9ydCwgcGxhdGZvcm0sIGNv
bmZpZ19maWxlKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocG9ydC5fYXBhY2hlX2NvbmZp
Z19maWxlX25hbWVfZm9yX3BsYXRmb3JtKHBsYXRmb3JtKSwgY29uZmlnX2ZpbGUpCisKKyAgICBk
ZWYgdGVzdF9saW51eF9kaXN0cm9fZGV0ZWN0aW9uKHNlbGYpOgorICAgICAgICBwb3J0ID0gVGVz
dFdlYktpdFBvcnQoKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHBvcnQuX2lzX3JlZGhhdF9i
YXNlZCgpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHBvcnQuX2lzX2RlYmlhbl9iYXNlZCgp
KQorCisgICAgICAgIHBvcnQuX2ZpbGVzeXN0ZW0gPSBNb2NrRmlsZVN5c3RlbSh7Jy9ldGMvcmVk
aGF0LXJlbGVhc2UnOiAnJ30pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwb3J0Ll9pc19yZWRo
YXRfYmFzZWQoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShwb3J0Ll9pc19kZWJpYW5fYmFz
ZWQoKSkKKworICAgICAgICBwb3J0Ll9maWxlc3lzdGVtID0gTW9ja0ZpbGVTeXN0ZW0oeycvZXRj
L2RlYmlhbl92ZXJzaW9uJzogJyd9KQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHBvcnQuX2lz
X3JlZGhhdF9iYXNlZCgpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocG9ydC5faXNfZGViaWFu
X2Jhc2VkKCkpCisKKyAgICBkZWYgdGVzdF9hcGFjaGVfY29uZmlnX2ZpbGVfbmFtZV9mb3JfcGxh
dGZvcm0oc2VsZik6CisgICAgICAgIHBvcnQgPSBUZXN0V2ViS2l0UG9ydCgpCisgICAgICAgIHNl
bGYuX2Fzc2VydF9jb25maWdfZmlsZV9mb3JfcGxhdGZvcm0ocG9ydCwgJ2N5Z3dpbicsICdjeWd3
aW4taHR0cGQuY29uZicpCisKKyAgICAgICAgc2VsZi5fYXNzZXJ0X2NvbmZpZ19maWxlX2Zvcl9w
bGF0Zm9ybShwb3J0LCAnbGludXgyJywgJ2FwYWNoZTItaHR0cGQuY29uZicpCisgICAgICAgIHNl
bGYuX2Fzc2VydF9jb25maWdfZmlsZV9mb3JfcGxhdGZvcm0ocG9ydCwgJ2xpbnV4MycsICdhcGFj
aGUyLWh0dHBkLmNvbmYnKQorCisgICAgICAgIHBvcnQuX2lzX3JlZGhhdF9iYXNlZCA9IGxhbWJk
YTogVHJ1ZQorICAgICAgICBzZWxmLl9hc3NlcnRfY29uZmlnX2ZpbGVfZm9yX3BsYXRmb3JtKHBv
cnQsICdsaW51eDInLCAnZmVkb3JhLWh0dHBkLmNvbmYnKQorCisgICAgICAgIHBvcnQgPSBUZXN0
V2ViS2l0UG9ydCgpCisgICAgICAgIHBvcnQuX2lzX2RlYmlhbl9iYXNlZCA9IGxhbWJkYTogVHJ1
ZQorICAgICAgICBzZWxmLl9hc3NlcnRfY29uZmlnX2ZpbGVfZm9yX3BsYXRmb3JtKHBvcnQsICds
aW51eDInLCAnYXBhY2hlMi1kZWJpYW4taHR0cGQuY29uZicpCisKKyAgICAgICAgc2VsZi5fYXNz
ZXJ0X2NvbmZpZ19maWxlX2Zvcl9wbGF0Zm9ybShwb3J0LCAnbWFjJywgJ2FwYWNoZTItaHR0cGQu
Y29uZicpCisgICAgICAgIHNlbGYuX2Fzc2VydF9jb25maWdfZmlsZV9mb3JfcGxhdGZvcm0ocG9y
dCwgJ3dpbjMyJywgJ2FwYWNoZTItaHR0cGQuY29uZicpICAjIHdpbjMyIGlzbid0IGEgc3VwcG9y
dGVkIHN5cy5wbGF0Zm9ybS4gIEFwcGxlV2luL1dpbkNhaXJvL1dpbkNFIHBvcnRzIGFsbCB1c2Ug
Y3lnd2luLgorICAgICAgICBzZWxmLl9hc3NlcnRfY29uZmlnX2ZpbGVfZm9yX3BsYXRmb3JtKHBv
cnQsICdiYXJmJywgJ2FwYWNoZTItaHR0cGQuY29uZicpCisKKyAgICBkZWYgdGVzdF9wYXRoX3Rv
X2FwYWNoZV9jb25maWdfZmlsZShzZWxmKToKKyAgICAgICAgcG9ydCA9IFRlc3RXZWJLaXRQb3J0
KCkKKyAgICAgICAgIyBNb2NrIG91dCBfYXBhY2hlX2NvbmZpZ19maWxlX25hbWVfZm9yX3BsYXRm
b3JtIHRvIGlnbm9yZSB0aGUgcGFzc2VkIHN5cy5wbGF0Zm9ybSB2YWx1ZS4KKyAgICAgICAgcG9y
dC5fYXBhY2hlX2NvbmZpZ19maWxlX25hbWVfZm9yX3BsYXRmb3JtID0gbGFtYmRhIHBsYXRmb3Jt
OiAnaHR0cGQuY29uZicKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocG9ydC5fcGF0aF90b19h
cGFjaGVfY29uZmlnX2ZpbGUoKSwgJy9tb2NrLWNoZWNrb3V0L0xheW91dFRlc3RzL2h0dHAvY29u
Zi9odHRwZC5jb25mJykKKwogCiAjIEZJWE1FOiBUaGlzIGNsYXNzIGFuZCBtYWluKCkgc2hvdWxk
IGJlIG1lcmdlZCBpbnRvIHRlc3Qtd2Via2l0cHkuCiBjbGFzcyBFbmhhbmNlZFRlc3RMb2FkZXIo
dW5pdHRlc3QuVGVzdExvYWRlcik6CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L3F0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9xdC5weQppbmRleCBiMGQ2NDg1M2M2NTdiMTliZWJkZjljNWFjZGNhNmVlNjc5
NjcyMzViLi4zOTJhYjAyOGZlYTQwN2E0MzY1NTZlZjI5MWY5MTc5MTNiNjY3ODgxIDEwMDY0NAot
LS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3F0LnB5CisrKyBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvcXQucHkKQEAgLTM0LDE3
ICszNCwxNSBAQCBpbXBvcnQgcmUKIGltcG9ydCBzeXMKIGltcG9ydCBvcwogCi1pbXBvcnQgd2Vi
a2l0Ci0KIGZyb20gd2Via2l0cHkuY29tbW9uLm1lbW9pemVkIGltcG9ydCBtZW1vaXplZAogZnJv
bSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzLnRlc3RfY29uZmlndXJhdGlvbiBpbXBvcnQg
VGVzdENvbmZpZ3VyYXRpb24KLWZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQud2Via2l0
IGltcG9ydCBXZWJLaXRQb3J0Citmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0LmJhc2Ug
aW1wb3J0IFBvcnQKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQueHZmYmRyaXZlciBp
bXBvcnQgWHZmYkRyaXZlcgogCiBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCiAK
IAotY2xhc3MgUXRQb3J0KFdlYktpdFBvcnQpOgorY2xhc3MgUXRQb3J0KFBvcnQpOgogICAgIEFM
TF9WRVJTSU9OUyA9IFsnbGludXgnLCAnd2luJywgJ21hYyddCiAgICAgcG9ydF9uYW1lID0gInF0
IgogCkBAIC02Miw5ICs2MCw5IEBAIGNsYXNzIFF0UG9ydChXZWJLaXRQb3J0KToKIAogICAgICMg
c3lzX3BsYXRmb3JtIGV4aXN0cyBvbmx5IGZvciB1bml0IHRlc3RpbmcuCiAgICAgZGVmIF9faW5p
dF9fKHNlbGYsIGhvc3QsIHBvcnRfbmFtZSwgKiprd2FyZ3MpOgotICAgICAgICBXZWJLaXRQb3J0
Ll9faW5pdF9fKHNlbGYsIGhvc3QsIHBvcnRfbmFtZSwgKiprd2FyZ3MpCisgICAgICAgIHN1cGVy
KFF0UG9ydCwgc2VsZikuX19pbml0X18oaG9zdCwgcG9ydF9uYW1lLCAqKmt3YXJncykKIAotICAg
ICAgICAjIEZJWE1FOiBUaGlzIHdpbGwgYWxsb3cgV2ViS2l0UG9ydC5iYXNlbGluZV9zZWFyY2hf
cGF0aCBhbmQgV2ViS2l0UG9ydC5fc2tpcHBlZF9maWxlX3NlYXJjaF9wYXRocworICAgICAgICAj
IEZJWE1FOiBUaGlzIHdpbGwgYWxsb3cgUG9ydC5iYXNlbGluZV9zZWFyY2hfcGF0aCBhbmQgUG9y
dC5fc2tpcHBlZF9maWxlX3NlYXJjaF9wYXRocwogICAgICAgICAjIHRvIGRvIHRoZSByaWdodCB0
aGluZywgYnV0IGRvZXNuJ3QgaW5jbHVkZSBzdXBwb3J0IGZvciBxdC00Ljggb3IgcXQtYXJtIChz
ZWVuIGluIExheW91dFRlc3RzL3BsYXRmb3JtKSB5ZXQuCiAgICAgICAgIHNlbGYuX29wZXJhdGlu
Z19zeXN0ZW0gPSBwb3J0X25hbWUucmVwbGFjZSgncXQtJywgJycpCiAKQEAgLTE1Niw3ICsxNTQs
NyBAQCBjbGFzcyBRdFBvcnQoV2ViS2l0UG9ydCk6CiAgICAgICAgIHJldHVybiBsaXN0KHJldmVy
c2VkKFtzZWxmLl9maWxlc3lzdGVtLmpvaW4oc2VsZi5fd2Via2l0X2Jhc2VsaW5lX3BhdGgocCks
ICdUZXN0RXhwZWN0YXRpb25zJykgZm9yIHAgaW4gc2VsZi5fc2VhcmNoX3BhdGhzKCldKSkKIAog
ICAgIGRlZiBzZXR1cF9lbnZpcm9uX2Zvcl9zZXJ2ZXIoc2VsZiwgc2VydmVyX25hbWU9Tm9uZSk6
Ci0gICAgICAgIGNsZWFuX2VudiA9IFdlYktpdFBvcnQuc2V0dXBfZW52aXJvbl9mb3Jfc2VydmVy
KHNlbGYsIHNlcnZlcl9uYW1lKQorICAgICAgICBjbGVhbl9lbnYgPSBzdXBlcihRdFBvcnQsIHNl
bGYpLnNldHVwX2Vudmlyb25fZm9yX3NlcnZlcihzZXJ2ZXJfbmFtZSkKICAgICAgICAgY2xlYW5f
ZW52WydRVFdFQktJVF9QTFVHSU5fUEFUSCddID0gc2VsZi5fYnVpbGRfcGF0aCgnbGliL3BsdWdp
bnMnKQogICAgICAgICBzZWxmLl9jb3B5X3ZhbHVlX2Zyb21fZW52aXJvbl9pZl9zZXQoY2xlYW5f
ZW52LCAnUVRfRFJUX1dFQlZJRVdfTU9ERScpCiAgICAgICAgIHNlbGYuX2NvcHlfdmFsdWVfZnJv
bV9lbnZpcm9uX2lmX3NldChjbGVhbl9lbnYsICdEWUxEX0lNQUdFX1NVRkZJWCcpCkBAIC0xNjYs
NyArMTY0LDcgQEAgY2xhc3MgUXRQb3J0KFdlYktpdFBvcnQpOgogICAgICAgICByZXR1cm4gY2xl
YW5fZW52CiAKICAgICAjIEZJWE1FOiBXZSBzaG91bGQgZmluZCBhIHdheSB0byBzaGFyZSB0aGlz
IGltcGxtZW50YXRpb24gd2l0aCBHdGssCi0gICAgIyBvciB0ZWFjaCBydW4tbGF1bmNoZXIgaG93
IHRvIGNhbGwgcnVuLXNhZmFyaSBhbmQgbW92ZSB0aGlzIGRvd24gdG8gV2ViS2l0UG9ydC4KKyAg
ICAjIG9yIHRlYWNoIHJ1bi1sYXVuY2hlciBob3cgdG8gY2FsbCBydW4tc2FmYXJpIGFuZCBtb3Zl
IHRoaXMgZG93biB0byBQb3J0LgogICAgIGRlZiBzaG93X3Jlc3VsdHNfaHRtbF9maWxlKHNlbGYs
IHJlc3VsdHNfZmlsZW5hbWUpOgogICAgICAgICBydW5fbGF1bmNoZXJfYXJncyA9IFtdCiAgICAg
ICAgIGlmIHNlbGYuZ2V0X29wdGlvbignd2Via2l0X3Rlc3RfcnVubmVyJyk6CmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weSBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5CmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDc1NQppbmRleCAyNmVhMDUzZDZkNjMwODAwMTMzOTNiZmNlMDc4MzI2YjAx
MTk3YmIwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5CisrKyAvZGV2
L251bGwKQEAgLTEsMjIxICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIyBDb3B5cmln
aHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMgQ29weXJpZ2h0
IChDKSAyMDEwIEdhYm9yIFJhcGNzYW55aSA8cmdhYm9yQGluZi51LXN6ZWdlZC5odT4sIFVuaXZl
cnNpdHkgb2YgU3plZ2VkCi0jIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1l
dDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMg
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIEdvb2dsZSBuYW1lIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMg
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAot
IyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
IyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotIiIiV2ViS2l0IGltcGxlbWVudGF0aW9u
cyBvZiB0aGUgUG9ydCBpbnRlcmZhY2UuIiIiCi0KLWltcG9ydCBpdGVydG9vbHMKLWltcG9ydCBs
b2dnaW5nCi1pbXBvcnQgb3BlcmF0b3IKLQotZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4
ZWN1dGl2ZSBpbXBvcnQgU2NyaXB0RXJyb3IKLWZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBv
cnQgaW1wb3J0IFBvcnQKLQotCi1fbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCi0K
LQotY2xhc3MgV2ViS2l0UG9ydChQb3J0KToKLQotICAgICMgRklYTUU6IEV2ZW50dWFsbHkgd2Ug
c2hvdWxkIHN0YW5kYXJpemUgcG9ydCBuYW1pbmcsIGFuZCBtYWtlIHRoaXMgbWV0aG9kIHNtYXJ0
IGVub3VnaAotICAgICMgdG8gdXNlIGZvciBhbGwgcG9ydCBjb25maWd1cmF0aW9ucyAoaW5jbHVk
aW5nIGFyY2hpdGVjdHVyZXMsIGdyYXBoaWNzIHR5cGVzLCBldGMpLgotICAgIGRlZiBfcG9ydF9m
bGFnX2Zvcl9zY3JpcHRzKHNlbGYpOgotICAgICAgICAjIFRoaXMgaXMgb3ZlcnJyaWRlbiBieSBw
b3J0cyB3aGljaCBuZWVkIGEgZmxhZyBwYXNzZWQgdG8gc2NyaXB0cyB0byBkaXN0aW5ndWlzaCB0
aGUgdXNlIG9mIHRoYXQgcG9ydC4KLSAgICAgICAgIyBGb3IgZXhhbXBsZSAtLXF0IG9uIGxpbnV4
LCBzaW5jZSBhIHVzZXIgbWlnaHQgaGF2ZSBib3RoIEd0ayBhbmQgUXQgbGlicmFyaWVzIGluc3Rh
bGxlZC4KLSAgICAgICAgIyBGSVhNRTogQ2hyb21pdW0gc2hvdWxkIG92ZXJyaWRlIHRoaXMgb25j
ZSBDaHJvbWl1bVBvcnQgaXMgYSBXZWJLaXRQb3J0LgotICAgICAgICByZXR1cm4gTm9uZQotCi0g
ICAgIyBUaGlzIGlzIG1vZGVsZWQgYWZ0ZXIgd2Via2l0ZGlycy5wbSBhcmd1bWVudHNGb3JDb25m
aWd1cmF0aW9uKCkgZnJvbSBvbGQtcnVuLXdlYmtpdC10ZXN0cwotICAgIGRlZiBfYXJndW1lbnRz
X2Zvcl9jb25maWd1cmF0aW9uKHNlbGYpOgotICAgICAgICBjb25maWdfYXJncyA9IFtdCi0gICAg
ICAgIGNvbmZpZ19hcmdzLmFwcGVuZChzZWxmLl9jb25maWcuZmxhZ19mb3JfY29uZmlndXJhdGlv
bihzZWxmLmdldF9vcHRpb24oJ2NvbmZpZ3VyYXRpb24nKSkpCi0gICAgICAgICMgRklYTUU6IFdl
IG1heSBuZWVkIHRvIGFkZCBzdXBwb3J0IGZvciBwYXNzaW5nIC0tMzItYml0IGxpa2Ugb2xkLXJ1
bi13ZWJraXQtdGVzdHMgaGFkLgotICAgICAgICBwb3J0X2ZsYWcgPSBzZWxmLl9wb3J0X2ZsYWdf
Zm9yX3NjcmlwdHMoKQotICAgICAgICBpZiBwb3J0X2ZsYWc6Ci0gICAgICAgICAgICBjb25maWdf
YXJncy5hcHBlbmQocG9ydF9mbGFnKQotICAgICAgICByZXR1cm4gY29uZmlnX2FyZ3MKLQotICAg
IGRlZiBfcnVuX3NjcmlwdChzZWxmLCBzY3JpcHRfbmFtZSwgYXJncz1Ob25lLCBpbmNsdWRlX2Nv
bmZpZ3VyYXRpb25fYXJndW1lbnRzPVRydWUsIGRlY29kZV9vdXRwdXQ9VHJ1ZSwgZW52PU5vbmUp
OgotICAgICAgICBydW5fc2NyaXB0X2NvbW1hbmQgPSBbc2VsZi5fY29uZmlnLnNjcmlwdF9wYXRo
KHNjcmlwdF9uYW1lKV0KLSAgICAgICAgaWYgaW5jbHVkZV9jb25maWd1cmF0aW9uX2FyZ3VtZW50
czoKLSAgICAgICAgICAgIHJ1bl9zY3JpcHRfY29tbWFuZC5leHRlbmQoc2VsZi5fYXJndW1lbnRz
X2Zvcl9jb25maWd1cmF0aW9uKCkpCi0gICAgICAgIGlmIGFyZ3M6Ci0gICAgICAgICAgICBydW5f
c2NyaXB0X2NvbW1hbmQuZXh0ZW5kKGFyZ3MpCi0gICAgICAgIG91dHB1dCA9IHNlbGYuX2V4ZWN1
dGl2ZS5ydW5fY29tbWFuZChydW5fc2NyaXB0X2NvbW1hbmQsIGN3ZD1zZWxmLl9jb25maWcud2Vi
a2l0X2Jhc2VfZGlyKCksIGRlY29kZV9vdXRwdXQ9ZGVjb2RlX291dHB1dCwgZW52PWVudikKLSAg
ICAgICAgX2xvZy5kZWJ1ZygnT3V0cHV0IG9mICVzOlxuJXMnICUgKHJ1bl9zY3JpcHRfY29tbWFu
ZCwgb3V0cHV0KSkKLSAgICAgICAgcmV0dXJuIG91dHB1dAotCi0gICAgZGVmIF9idWlsZF9kcml2
ZXIoc2VsZik6Ci0gICAgICAgIGVudmlyb25tZW50ID0gc2VsZi5ob3N0LmNvcHlfY3VycmVudF9l
bnZpcm9ubWVudCgpCi0gICAgICAgIGVudmlyb25tZW50LmRpc2FibGVfZ2NjX3NtYXJ0cXVvdGVz
KCkKLSAgICAgICAgZW52ID0gZW52aXJvbm1lbnQudG9fZGljdGlvbmFyeSgpCi0KLSAgICAgICAg
IyBGSVhNRTogV2UgYnVpbGQgYm90aCBEdW1wUmVuZGVyVHJlZSBhbmQgV2ViS2l0VGVzdFJ1bm5l
ciBmb3IKLSAgICAgICAgIyBXZWJLaXRUZXN0UnVubmVyIHJ1bnMgYmVjYXVzZSBEdW1wUmVuZGVy
VHJlZSBzdGlsbCBpbmNsdWRlcwotICAgICAgICAjIHRoZSBEdW1wUmVuZGVyVHJlZVN1cHBvcnQg
bW9kdWxlIGFuZCB0aGUgVGVzdE5ldHNjYXBlUGx1Z2luLgotICAgICAgICAjIFRoZXNlIHR3byBw
cm9qZWN0cyBzaG91bGQgYmUgZmFjdG9yZWQgb3V0IGludG8gdGhlaXIgb3duCi0gICAgICAgICMg
cHJvamVjdHMuCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuX3J1bl9zY3JpcHQoImJ1
aWxkLWR1bXByZW5kZXJ0cmVlIiwgYXJncz1zZWxmLl9idWlsZF9kcml2ZXJfZmxhZ3MoKSwgZW52
PWVudikKLSAgICAgICAgICAgIGlmIHNlbGYuZ2V0X29wdGlvbignd2Via2l0X3Rlc3RfcnVubmVy
Jyk6Ci0gICAgICAgICAgICAgICAgc2VsZi5fcnVuX3NjcmlwdCgiYnVpbGQtd2Via2l0dGVzdHJ1
bm5lciIsIGFyZ3M9c2VsZi5fYnVpbGRfZHJpdmVyX2ZsYWdzKCksIGVudj1lbnYpCi0gICAgICAg
IGV4Y2VwdCBTY3JpcHRFcnJvciwgZToKLSAgICAgICAgICAgIF9sb2cuZXJyb3IoZS5tZXNzYWdl
X3dpdGhfb3V0cHV0KG91dHB1dF9saW1pdD1Ob25lKSkKLSAgICAgICAgICAgIHJldHVybiBGYWxz
ZQotICAgICAgICByZXR1cm4gVHJ1ZQotCi0gICAgZGVmIF9idWlsZF9kcml2ZXJfZmxhZ3Moc2Vs
Zik6Ci0gICAgICAgIHJldHVybiBbXQotCi0gICAgZGVmIF90ZXN0c19mb3Jfb3RoZXJfcGxhdGZv
cm1zKHNlbGYpOgotICAgICAgICAjIEJ5IGRlZmF1bHQgd2Ugd2lsbCBza2lwIGFueSBkaXJlY3Rv
cnkgdW5kZXIgTGF5b3V0VGVzdHMvcGxhdGZvcm0KLSAgICAgICAgIyB0aGF0IGlzbid0IGluIG91
ciBiYXNlbGluZSBzZWFyY2ggcGF0aCAodGhpcyBtaXJyb3JzIHdoYXQKLSAgICAgICAgIyBvbGQt
cnVuLXdlYmtpdC10ZXN0cyBkb2VzIGluIGZpbmRUZXN0c1RvUnVuKCkpLgotICAgICAgICAjIE5v
dGUgdGhpcyByZXR1cm5zIExheW91dFRlc3RzL3BsYXRmb3JtLyosIG5vdCBwbGF0Zm9ybS8qLyou
Ci0gICAgICAgIGVudHJpZXMgPSBzZWxmLl9maWxlc3lzdGVtLmdsb2Ioc2VsZi5fd2Via2l0X2Jh
c2VsaW5lX3BhdGgoJyonKSkKLSAgICAgICAgZGlyc190b19za2lwID0gW10KLSAgICAgICAgZm9y
IGVudHJ5IGluIGVudHJpZXM6Ci0gICAgICAgICAgICBpZiBzZWxmLl9maWxlc3lzdGVtLmlzZGly
KGVudHJ5KSBhbmQgZW50cnkgbm90IGluIHNlbGYuYmFzZWxpbmVfc2VhcmNoX3BhdGgoKToKLSAg
ICAgICAgICAgICAgICBiYXNlbmFtZSA9IHNlbGYuX2ZpbGVzeXN0ZW0uYmFzZW5hbWUoZW50cnkp
Ci0gICAgICAgICAgICAgICAgZGlyc190b19za2lwLmFwcGVuZCgncGxhdGZvcm0vJXMnICUgYmFz
ZW5hbWUpCi0gICAgICAgIHJldHVybiBkaXJzX3RvX3NraXAKLQotICAgIGRlZiBfcnVudGltZV9m
ZWF0dXJlX2xpc3Qoc2VsZik6Ci0gICAgICAgICIiIklmIGEgcG9ydCBtYWtlcyBjZXJ0YWluIGZl
YXR1cmVzIGF2YWlsYWJsZSBvbmx5IHRocm91Z2ggcnVudGltZSBmbGFncywgaXQgY2FuIG92ZXJy
aWRlIHRoaXMgcm91dGluZSB0byBpbmRpY2F0ZSB3aGljaCBvbmVzIGFyZSBhdmFpbGFibGUuIiIi
Ci0gICAgICAgIHJldHVybiBOb25lCi0KLSAgICBkZWYgbm1fY29tbWFuZChzZWxmKToKLSAgICAg
ICAgcmV0dXJuICdubScKLQotICAgIGRlZiBfbW9kdWxlc190b19zZWFyY2hfZm9yX3N5bWJvbHMo
c2VsZik6Ci0gICAgICAgIHBhdGggPSBzZWxmLl9wYXRoX3RvX3dlYmNvcmVfbGlicmFyeSgpCi0g
ICAgICAgIGlmIHBhdGg6Ci0gICAgICAgICAgICByZXR1cm4gW3BhdGhdCi0gICAgICAgIHJldHVy
biBbXQotCi0gICAgZGVmIF9zeW1ib2xzX3N0cmluZyhzZWxmKToKLSAgICAgICAgc3ltYm9scyA9
ICcnCi0gICAgICAgIGZvciBwYXRoX3RvX21vZHVsZSBpbiBzZWxmLl9tb2R1bGVzX3RvX3NlYXJj
aF9mb3Jfc3ltYm9scygpOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHN5bWJv
bHMgKz0gc2VsZi5fZXhlY3V0aXZlLnJ1bl9jb21tYW5kKFtzZWxmLm5tX2NvbW1hbmQoKSwgcGF0
aF90b19tb2R1bGVdLCBlcnJvcl9oYW5kbGVyPXNlbGYuX2V4ZWN1dGl2ZS5pZ25vcmVfZXJyb3Ip
Ci0gICAgICAgICAgICBleGNlcHQgT1NFcnJvciwgZToKLSAgICAgICAgICAgICAgICBfbG9nLndh
cm4oIkZhaWxlZCB0byBydW4gbm06ICVzLiAgQ2FuJ3QgZGV0ZXJtaW5lIHN1cHBvcnRlZCBmZWF0
dXJlcyBjb3JyZWN0bHkuIiAlIGUpCi0gICAgICAgIHJldHVybiBzeW1ib2xzCi0KLSAgICAjIFBv
cnRzIHdoaWNoIHVzZSBydW4tdGltZSBmZWF0dXJlIGRldGVjdGlvbiBzaG91bGQgZGVmaW5lIHRo
aXMgbWV0aG9kIGFuZCByZXR1cm4KLSAgICAjIGEgZGljdGlvbmFyeSBtYXBwaW5nIGZyb20gRmVh
dHVyZSBOYW1lcyB0byBza2lwcGVkIGRpcmVjdG9pcmVzLiAgTlJXVCB3aWxsCi0gICAgIyBydW4g
RHVtcFJlbmRlclRyZWUgLS1wcmludC1zdXBwb3J0ZWQtZmVhdHVyZXMgYW5kIHBhcnNlIHRoZSBv
dXRwdXQuCi0gICAgIyBJZiB0aGUgRmVhdHVyZSBOYW1lcyBhcmUgbm90IGZvdW5kIGluIHRoZSBv
dXRwdXQsIHRoZSBjb3JyZXNwb25kaW5nIGRpcmVjdG9yaWVzCi0gICAgIyB3aWxsIGJlIHNraXBw
ZWQuCi0gICAgZGVmIF9taXNzaW5nX2ZlYXR1cmVfdG9fc2tpcHBlZF90ZXN0cyhzZWxmKToKLSAg
ICAgICAgIiIiUmV0dXJuIHRoZSBzdXBwb3J0ZWQgZmVhdHVyZSBkaWN0aW9uYXJ5LiBLZXlzIGFy
ZSBmZWF0dXJlIG5hbWVzIGFuZCB2YWx1ZXMKLSAgICAgICAgYXJlIHRoZSBsaXN0cyBvZiBkaXJl
Y3RvcmllcyB0byBza2lwIGlmIHRoZSBmZWF0dXJlIG5hbWUgaXMgbm90IG1hdGNoZWQuIiIiCi0g
ICAgICAgICMgRklYTUU6IFRoaXMgbGlzdCBtYXRjaGVzIFdlYktpdFdpbiBhbmQgc2hvdWxkIGJl
IG1vdmVkIG9udG8gdGhlIFdpbiBwb3J0LgotICAgICAgICByZXR1cm4gewotICAgICAgICAgICAg
IkFjY2VsZXJhdGVkIENvbXBvc2l0aW5nIjogWyJjb21wb3NpdGluZyJdLAotICAgICAgICAgICAg
IjNEIFJlbmRlcmluZyI6IFsiYW5pbWF0aW9ucy8zZCIsICJ0cmFuc2Zvcm1zLzNkIl0sCi0gICAg
ICAgIH0KLQotICAgICMgUG9ydHMgd2hpY2ggdXNlIGNvbXBpbGUtdGltZSBmZWF0dXJlIGRldGVj
dGlvbiBzaG91bGQgZGVmaW5lIHRoaXMgbWV0aG9kIGFuZCByZXR1cm4KLSAgICAjIGEgZGljdGlv
bmFyeSBtYXBwaW5nIGZyb20gc3ltYm9sIHN1YnN0cmluZ3MgdG8gcG9zc2libHkgZGlzYWJsZWQg
dGVzdCBkaXJlY3Rvcmllcy4KLSAgICAjIFdoZW4gdGhlIHN5bWJvbCBzdWJzdHJpbmdzIGFyZSBu
b3QgbWF0Y2hlZCwgdGhlIGRpcmVjdG9yaWVzIHdpbGwgYmUgc2tpcHBlZC4KLSAgICAjIElmIHBv
cnRzIGRvbid0IGV2ZXIgZW5hYmxlIGNlcnRhaW4gZmVhdHVyZXMsIHRoZW4gdGhvc2UgZGlyZWN0
b3JpZXMgY2FuIGp1c3QgYmUKLSAgICAjIGluIHRoZSBTa2lwcGVkIGxpc3QgaW5zdGVhZCBvZiBj
b21waWxlLXRpbWUtY2hlY2tlZCBoZXJlLgotICAgIGRlZiBfbWlzc2luZ19zeW1ib2xfdG9fc2tp
cHBlZF90ZXN0cyhzZWxmKToKLSAgICAgICAgIiIiUmV0dXJuIHRoZSBzdXBwb3J0ZWQgZmVhdHVy
ZSBkaWN0aW9uYXJ5LiBUaGUga2V5cyBhcmUgc3ltYm9sLXN1YnN0cmluZ3MKLSAgICAgICAgYW5k
IHRoZSB2YWx1ZXMgYXJlIHRoZSBsaXN0cyBvZiBkaXJlY3RvcmllcyB0byBza2lwIGlmIHRoYXQg
c3ltYm9sIGlzIG1pc3NpbmcuIiIiCi0gICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICAiTWF0
aE1MRWxlbWVudCI6IFsibWF0aG1sIl0sCi0gICAgICAgICAgICAiR3JhcGhpY3NMYXllciI6IFsi
Y29tcG9zaXRpbmciXSwKLSAgICAgICAgICAgICJXZWJDb3JlSGFzM0RSZW5kZXJpbmciOiBbImFu
aW1hdGlvbnMvM2QiLCAidHJhbnNmb3Jtcy8zZCJdLAotICAgICAgICAgICAgIldlYkdMU2hhZGVy
IjogWyJmYXN0L2NhbnZhcy93ZWJnbCIsICJjb21wb3NpdGluZy93ZWJnbCIsICJodHRwL3Rlc3Rz
L2NhbnZhcy93ZWJnbCJdLAotICAgICAgICAgICAgIk1IVE1MQXJjaGl2ZSI6IFsibWh0bWwiXSwK
LSAgICAgICAgICAgICJDU1NWYXJpYWJsZVZhbHVlIjogWyJmYXN0L2Nzcy92YXJpYWJsZXMiLCAi
aW5zcGVjdG9yL3N0eWxlcy92YXJpYWJsZXMiXSwKLSAgICAgICAgfQotCi0gICAgZGVmIF9oYXNf
dGVzdF9pbl9kaXJlY3RvcmllcyhzZWxmLCBkaXJlY3RvcnlfbGlzdHMsIHRlc3RfbGlzdCk6Ci0g
ICAgICAgIGlmIG5vdCB0ZXN0X2xpc3Q6Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLQotICAg
ICAgICBkaXJlY3RvcmllcyA9IGl0ZXJ0b29scy5jaGFpbi5mcm9tX2l0ZXJhYmxlKGRpcmVjdG9y
eV9saXN0cykKLSAgICAgICAgZm9yIGRpcmVjdG9yeSwgdGVzdCBpbiBpdGVydG9vbHMucHJvZHVj
dChkaXJlY3RvcmllcywgdGVzdF9saXN0KToKLSAgICAgICAgICAgIGlmIHRlc3Quc3RhcnRzd2l0
aChkaXJlY3RvcnkpOgotICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgIHJldHVy
biBGYWxzZQotCi0gICAgZGVmIF9za2lwcGVkX3Rlc3RzX2Zvcl91bnN1cHBvcnRlZF9mZWF0dXJl
cyhzZWxmLCB0ZXN0X2xpc3QpOgotICAgICAgICAjIE9ubHkgY2hlY2sgdGhlIHJ1bnRpbWUgZmVh
dHVyZSBsaXN0IG9mIHRoZXJlIGFyZSB0ZXN0cyBpbiB0aGUgdGVzdF9saXN0IHRoYXQgbWlnaHQg
Z2V0IHNraXBwZWQuCi0gICAgICAgICMgVGhpcyBpcyBhIHBlcmZvcm1hbmNlIG9wdGltaXphdGlv
biB0byBhdm9pZCB0aGUgc3VicHJvY2VzcyBjYWxsIHRvIERSVC4KLSAgICAgICAgaWYgc2VsZi5f
aGFzX3Rlc3RfaW5fZGlyZWN0b3JpZXMoc2VsZi5fbWlzc2luZ19mZWF0dXJlX3RvX3NraXBwZWRf
dGVzdHMoKS52YWx1ZXMoKSwgdGVzdF9saXN0KToKLSAgICAgICAgICAgICMgSWYgdGhlIHBvcnQg
c3VwcG9ydHMgcnVudGltZSBmZWF0dXJlIGRldGVjdGlvbiwgZGlzYWJsZSBhbnkgdGVzdHMKLSAg
ICAgICAgICAgICMgZm9yIGZlYXR1cmVzIG1pc3NpbmcgZnJvbSB0aGUgcnVudGltZSBmZWF0dXJl
IGxpc3QuCi0gICAgICAgICAgICBzdXBwb3J0ZWRfZmVhdHVyZV9saXN0ID0gc2VsZi5fcnVudGlt
ZV9mZWF0dXJlX2xpc3QoKQotICAgICAgICAgICAgIyBJZiBfcnVudGltZV9mZWF0dXJlX2xpc3Qg
cmV0dXJucyBhIG5vbi1Ob25lIHZhbHVlLCB0aGVuIHByZWZlcgotICAgICAgICAgICAgIyBydW50
aW1lIGZlYXR1cmUgZGV0ZWN0aW9uIG92ZXIgc3RhdGljIGZlYXR1cmUgZGV0ZWN0aW9uLgotICAg
ICAgICAgICAgaWYgc3VwcG9ydGVkX2ZlYXR1cmVfbGlzdCBpcyBub3QgTm9uZToKLSAgICAgICAg
ICAgICAgICByZXR1cm4gcmVkdWNlKG9wZXJhdG9yLmFkZCwgW2RpcmVjdG9yaWVzIGZvciBmZWF0
dXJlLCBkaXJlY3RvcmllcyBpbiBzZWxmLl9taXNzaW5nX2ZlYXR1cmVfdG9fc2tpcHBlZF90ZXN0
cygpLml0ZW1zKCkgaWYgZmVhdHVyZSBub3QgaW4gc3VwcG9ydGVkX2ZlYXR1cmVfbGlzdF0pCi0K
LSAgICAgICAgIyBPbmx5IGNoZWNrIHRoZSBzeW1ib2xzIG9mIHRoZXJlIGFyZSB0ZXN0cyBpbiB0
aGUgdGVzdF9saXN0IHRoYXQgbWlnaHQgZ2V0IHNraXBwZWQuCi0gICAgICAgICMgVGhpcyBpcyBh
IHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbiB0byBhdm9pZCB0aGUgY2FsbGluZyBubS4KLSAgICAg
ICAgaWYgc2VsZi5faGFzX3Rlc3RfaW5fZGlyZWN0b3JpZXMoc2VsZi5fbWlzc2luZ19zeW1ib2xf
dG9fc2tpcHBlZF90ZXN0cygpLnZhbHVlcygpLCB0ZXN0X2xpc3QpOgotICAgICAgICAgICAgIyBS
dW50aW1lIGZlYXR1cmUgZGV0ZWN0aW9uIG5vdCBzdXBwb3J0ZWQsIGZhbGxiYWNrIHRvIHN0YXRp
YyBkZWN0ZWN0aW9uOgotICAgICAgICAgICAgIyBEaXNhYmxlIGFueSB0ZXN0cyBmb3Igc3ltYm9s
cyBtaXNzaW5nIGZyb20gdGhlIGV4ZWN1dGFibGUgb3IgbGlicmFyaWVzLgotICAgICAgICAgICAg
c3ltYm9sc19zdHJpbmcgPSBzZWxmLl9zeW1ib2xzX3N0cmluZygpCi0gICAgICAgICAgICBpZiBz
eW1ib2xzX3N0cmluZyBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVkdWNl
KG9wZXJhdG9yLmFkZCwgW2RpcmVjdG9yaWVzIGZvciBzeW1ib2xfc3Vic3RyaW5nLCBkaXJlY3Rv
cmllcyBpbiBzZWxmLl9taXNzaW5nX3N5bWJvbF90b19za2lwcGVkX3Rlc3RzKCkuaXRlbXMoKSBp
ZiBzeW1ib2xfc3Vic3RyaW5nIG5vdCBpbiBzeW1ib2xzX3N0cmluZ10sIFtdKQotCi0gICAgICAg
ICMgRmFpbGVkIHRvIGdldCBhbnkgcnVudGltZSBvciBzeW1ib2wgaW5mb3JtYXRpb24sIGRvbid0
IHNraXAgYW55IHRlc3RzLgotICAgICAgICByZXR1cm4gW10KLQotICAgIGRlZiBfd2syX3BvcnRf
bmFtZShzZWxmKToKLSAgICAgICAgIyBCeSBjdXJyZW50IGNvbnZlbnRpb24sIHRoZSBXZWJLaXQy
IG5hbWUgaXMgYWx3YXlzIG1hYy13azIsIHdpbi13azIsIG5vdCBtYWMtbGVvcGFyZC13azIsIGV0
YywKLSAgICAgICAgIyBleGNlcHQgZm9yIFF0IGJlY2F1c2UgV2ViS2l0MiBpcyBvbmx5IHN1cHBv
cnRlZCBieSBRdCA1LjAgKHRoZXJlZm9yZTogcXQtNS4wLXdrMikuCi0gICAgICAgIHJldHVybiAi
JXMtd2syIiAlIHNlbGYucG9ydF9uYW1lCi0KLSAgICBkZWYgX3NraXBwZWRfZmlsZV9zZWFyY2hf
cGF0aHMoc2VsZik6Ci0gICAgICAgICMgVW5saWtlIGJhc2VsaW5lX3NlYXJjaF9wYXRoLCB3ZSBv
bmx5IHdhbnQgdG8gc2VhcmNoIFtXSzItUE9SVCwgUE9SVC1WRVJTSU9OLCBQT1JUXSBhbmQgYW55
IGRpcmVjdG9yaWVzCi0gICAgICAgICMgaW5jbHVkZWQgdmlhIC0tYWRkaXRpb25hbC1wbGF0Zm9y
bS1kaXJlY3RvcnksIG5vdCB0aGUgZnVsbCBjYXNhZGUuCi0gICAgICAgICMgTm90ZSBvcmRlciBk
b2Vzbid0IG1hdHRlciBzaW5jZSB0aGUgU2tpcHBlZCBmaWxlIGNvbnRlbnRzIGFyZSBhbGwgY29t
YmluZWQuCi0gICAgICAgIHNlYXJjaF9wYXRocyA9IHNldChbc2VsZi5wb3J0X25hbWVdKQotICAg
ICAgICBpZiAnZnV0dXJlJyBub3QgaW4gc2VsZi5uYW1lKCk6Ci0gICAgICAgICAgICBzZWFyY2hf
cGF0aHMuYWRkKHNlbGYubmFtZSgpKQotICAgICAgICBpZiBzZWxmLmdldF9vcHRpb24oJ3dlYmtp
dF90ZXN0X3J1bm5lcicpOgotICAgICAgICAgICAgIyBCZWNhdXNlIG5lYXJseSBhbGwgb2YgdGhl
IHNraXBwZWQgdGVzdHMgZm9yIFdlYktpdCAyIGFyZSBkdWUgdG8gY3Jvc3MtcGxhdGZvcm0KLSAg
ICAgICAgICAgICMgaXNzdWVzLCBhbGwgd2syIHBvcnRzIHNoYXJlIGEgc2tpcHBlZCBsaXN0IHVu
ZGVyIHBsYXRmb3JtL3drMi4KLSAgICAgICAgICAgIHNlYXJjaF9wYXRocy51cGRhdGUoW3NlbGYu
X3drMl9wb3J0X25hbWUoKSwgIndrMiJdKQotICAgICAgICBzZWFyY2hfcGF0aHMudXBkYXRlKHNl
bGYuZ2V0X29wdGlvbigiYWRkaXRpb25hbF9wbGF0Zm9ybV9kaXJlY3RvcnkiLCBbXSkpCi0KLSAg
ICAgICAgcmV0dXJuIHNlYXJjaF9wYXRocwotCi0gICAgZGVmIHNraXBwZWRfbGF5b3V0X3Rlc3Rz
KHNlbGYsIHRlc3RfbGlzdCk6Ci0gICAgICAgIHRlc3RzX3RvX3NraXAgPSBzZXQoc2VsZi5fZXhw
ZWN0YXRpb25zX2Zyb21fc2tpcHBlZF9maWxlcyhzZWxmLl9za2lwcGVkX2ZpbGVfc2VhcmNoX3Bh
dGhzKCkpKQotICAgICAgICB0ZXN0c190b19za2lwLnVwZGF0ZShzZWxmLl90ZXN0c19mb3Jfb3Ro
ZXJfcGxhdGZvcm1zKCkpCi0gICAgICAgIHRlc3RzX3RvX3NraXAudXBkYXRlKHNlbGYuX3NraXBw
ZWRfdGVzdHNfZm9yX3Vuc3VwcG9ydGVkX2ZlYXR1cmVzKHRlc3RfbGlzdCkpCi0gICAgICAgIHJl
dHVybiB0ZXN0c190b19za2lwCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L3dlYmtpdF91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0X3VuaXR0ZXN0LnB5CmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDc1NQppbmRleCAwNzgxODI1NDE1YThjZDQ3N2JlMmNkYzE0NjhkOWU0ZDg0YTQ0NDExLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0X3VuaXR0ZXN0LnB5CisrKyAvZGV2
L251bGwKQEAgLTEsMjMzICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIyBDb3B5cmln
aHQgKEMpIDIwMTAgR2Fib3IgUmFwY3NhbnlpIDxyZ2Fib3JAaW5mLnUtc3plZ2VkLmh1PiwgVW5p
dmVyc2l0eSBvZiBTemVnZWQKLSMgQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0jCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jCi0jIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVU5JVkVSU0lUWSBPRiBTWkVHRUQgYGBBUyBJUycnIEFORCBB
TlkKLSMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSMgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0jIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBVTklWRVJTSVRZIE9GIFNaRUdFRCBPUgotIyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
LSMgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotIyBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSMgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotIyBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLWltcG9ydCBsb2dnaW5nCi1pbXBvcnQgdW5pdHRlc3QK
LQotZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZV9tb2NrIGltcG9ydCBNb2Nr
RXhlY3V0aXZlCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZmlsZXN5c3RlbV9tb2NrIGlt
cG9ydCBNb2NrRmlsZVN5c3RlbQotZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLm91dHB1dGNh
cHR1cmUgaW1wb3J0IE91dHB1dENhcHR1cmUKLWZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5z
eXN0ZW1ob3N0X21vY2sgaW1wb3J0IE1vY2tTeXN0ZW1Ib3N0Ci1mcm9tIHdlYmtpdHB5LmxheW91
dF90ZXN0cy5tb2RlbHMudGVzdF9jb25maWd1cmF0aW9uIGltcG9ydCBUZXN0Q29uZmlndXJhdGlv
bgotZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydCBpbXBvcnQgcG9ydF90ZXN0Y2FzZQot
ZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC53ZWJraXQgaW1wb3J0IFdlYktpdFBvcnQK
LWZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQuY29uZmlnX21vY2sgaW1wb3J0IE1vY2tD
b25maWcKLWZyb20gd2Via2l0cHkudG9vbC5tb2NrdG9vbCBpbXBvcnQgTW9ja09wdGlvbnMKLQot
Ci1jbGFzcyBUZXN0V2ViS2l0UG9ydChXZWJLaXRQb3J0KToKLSAgICBwb3J0X25hbWUgPSAidGVz
dHdlYmtpdHBvcnQiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgc3ltYm9sc19zdHJpbmc9Tm9u
ZSwKLSAgICAgICAgICAgICAgICAgZXhwZWN0YXRpb25zX2ZpbGU9Tm9uZSwgc2tpcHNfZmlsZT1O
b25lLCBob3N0PU5vbmUsIGNvbmZpZz1Ob25lLAotICAgICAgICAgICAgICAgICAqKmt3YXJncyk6
Ci0gICAgICAgIHNlbGYuc3ltYm9sc19zdHJpbmcgPSBzeW1ib2xzX3N0cmluZyAgIyBQYXNzaW5n
ICIiIGRpc2FibGVzIGFsbCBzdGF0aWNseS1kZXRlY3RhYmxlIGZlYXR1cmVzLgotICAgICAgICBo
b3N0ID0gaG9zdCBvciBNb2NrU3lzdGVtSG9zdCgpCi0gICAgICAgIGNvbmZpZyA9IGNvbmZpZyBv
ciBNb2NrQ29uZmlnKCkKLSAgICAgICAgV2ViS2l0UG9ydC5fX2luaXRfXyhzZWxmLCBob3N0PWhv
c3QsIGNvbmZpZz1jb25maWcsICoqa3dhcmdzKQotCi0gICAgZGVmIGFsbF90ZXN0X2NvbmZpZ3Vy
YXRpb25zKHNlbGYpOgotICAgICAgICByZXR1cm4gW3NlbGYudGVzdF9jb25maWd1cmF0aW9uKCld
Ci0KLSAgICBkZWYgX3N5bWJvbHNfc3RyaW5nKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5z
eW1ib2xzX3N0cmluZwotCi0gICAgZGVmIF90ZXN0c19mb3Jfb3RoZXJfcGxhdGZvcm1zKHNlbGYp
OgotICAgICAgICByZXR1cm4gWyJtZWRpYSIsIF0KLQotICAgIGRlZiBfdGVzdHNfZm9yX2Rpc2Fi
bGVkX2ZlYXR1cmVzKHNlbGYpOgotICAgICAgICByZXR1cm4gWyJhY2Nlc3NpYmlsaXR5IiwgXQot
Ci0KLWNsYXNzIFdlYktpdFBvcnRUZXN0KHBvcnRfdGVzdGNhc2UuUG9ydFRlc3RDYXNlKToKLSAg
ICBwb3J0X25hbWUgPSAnd2Via2l0JwotICAgIHBvcnRfbWFrZXIgPSBUZXN0V2ViS2l0UG9ydAot
Ci0gICAgZGVmIHRlc3RfY2hlY2tfYnVpbGQoc2VsZik6Ci0gICAgICAgIHBhc3MKLQotICAgIGRl
ZiB0ZXN0X2RyaXZlcl9jbWRfbGluZShzZWxmKToKLSAgICAgICAgcGFzcwotCi0gICAgZGVmIHRl
c3RfYmFzZWxpbmVfc2VhcmNoX3BhdGgoc2VsZik6Ci0gICAgICAgIHBhc3MKLQotICAgIGRlZiB0
ZXN0X3BhdGhfdG9fdGVzdF9leHBlY3RhdGlvbnNfZmlsZShzZWxmKToKLSAgICAgICAgcG9ydCA9
IFRlc3RXZWJLaXRQb3J0KCkKLSAgICAgICAgcG9ydC5fb3B0aW9ucyA9IE1vY2tPcHRpb25zKHdl
YmtpdF90ZXN0X3J1bm5lcj1GYWxzZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0LnBh
dGhfdG9fdGVzdF9leHBlY3RhdGlvbnNfZmlsZSgpLCAnL21vY2stY2hlY2tvdXQvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vdGVzdHdlYmtpdHBvcnQvVGVzdEV4cGVjdGF0aW9ucycpCi0KLSAgICAgICAg
cG9ydCA9IFRlc3RXZWJLaXRQb3J0KCkKLSAgICAgICAgcG9ydC5fb3B0aW9ucyA9IE1vY2tPcHRp
b25zKHdlYmtpdF90ZXN0X3J1bm5lcj1UcnVlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBv
cnQucGF0aF90b190ZXN0X2V4cGVjdGF0aW9uc19maWxlKCksICcvbW9jay1jaGVja291dC9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS90ZXN0d2Via2l0cG9ydC9UZXN0RXhwZWN0YXRpb25zJykKLQotICAg
ICAgICBwb3J0ID0gVGVzdFdlYktpdFBvcnQoKQotICAgICAgICBwb3J0Lmhvc3QuZmlsZXN5c3Rl
bS5maWxlc1snL21vY2stY2hlY2tvdXQvTGF5b3V0VGVzdHMvcGxhdGZvcm0vdGVzdHdlYmtpdHBv
cnQvVGVzdEV4cGVjdGF0aW9ucyddID0gJ3NvbWUgY29udGVudCcKLSAgICAgICAgcG9ydC5fb3B0
aW9ucyA9IE1vY2tPcHRpb25zKHdlYmtpdF90ZXN0X3J1bm5lcj1GYWxzZSkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChwb3J0LnBhdGhfdG9fdGVzdF9leHBlY3RhdGlvbnNfZmlsZSgpLCAnL21v
Y2stY2hlY2tvdXQvTGF5b3V0VGVzdHMvcGxhdGZvcm0vdGVzdHdlYmtpdHBvcnQvVGVzdEV4cGVj
dGF0aW9ucycpCi0KLSAgICBkZWYgdGVzdF9za2lwcGVkX2RpcmVjdG9yaWVzX2Zvcl9zeW1ib2xz
KHNlbGYpOgotICAgICAgICAjIFRoaXMgZmlyc3QgdGVzdCBjb25maXJtcyB0aGF0IHRoZSBjb21t
b25seSBmb3VuZCBzeW1ib2xzIHJlc3VsdCBpbiB0aGUgZXhwZWN0ZWQgc2tpcHBlZCBkaXJlY3Rv
cmllcy4KLSAgICAgICAgc3ltYm9sc19zdHJpbmcgPSAiICIuam9pbihbIkdyYXBoaWNzTGF5ZXIi
LCAiV2ViQ29yZUhhczNEUmVuZGVyaW5nIiwgImlzWEhUTUxNUERvY3VtZW50IiwgImZvb1N5bWJv
bCJdKQotICAgICAgICBleHBlY3RlZF9kaXJlY3RvcmllcyA9IHNldChbCi0gICAgICAgICAgICAi
bWF0aG1sIiwgICMgUmVxdWlyZXMgTWF0aE1MRWxlbWVudAotICAgICAgICAgICAgImZhc3QvY2Fu
dmFzL3dlYmdsIiwgICMgUmVxdWlyZXMgV2ViR0xTaGFkZXIKLSAgICAgICAgICAgICJjb21wb3Np
dGluZy93ZWJnbCIsICAjIFJlcXVpcmVzIFdlYkdMU2hhZGVyCi0gICAgICAgICAgICAiaHR0cC90
ZXN0cy9jYW52YXMvd2ViZ2wiLCAgIyBSZXF1aXJlcyBXZWJHTFNoYWRlcgotICAgICAgICAgICAg
Im1odG1sIiwgICMgUmVxdWlyZXMgTUhUTUxBcmNoaXZlCi0gICAgICAgICAgICAiZmFzdC9jc3Mv
dmFyaWFibGVzIiwgICMgUmVxdWlyZXMgQ1NTIFZhcmlhYmxlcwotICAgICAgICAgICAgImluc3Bl
Y3Rvci9zdHlsZXMvdmFyaWFibGVzIiwgICMgUmVxdWlyZXMgQ1NTIFZhcmlhYmxlcwotICAgICAg
ICBdKQotCi0gICAgICAgIHJlc3VsdF9kaXJlY3RvcmllcyA9IHNldChUZXN0V2ViS2l0UG9ydChz
eW1ib2xzX3N0cmluZywgTm9uZSkuX3NraXBwZWRfdGVzdHNfZm9yX3Vuc3VwcG9ydGVkX2ZlYXR1
cmVzKHRlc3RfbGlzdD1bJ21hdGhtbC9mb28uaHRtbCddKSkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChyZXN1bHRfZGlyZWN0b3JpZXMsIGV4cGVjdGVkX2RpcmVjdG9yaWVzKQotCi0gICAgICAg
ICMgVGVzdCB0aGF0IHRoZSBubSBzdHJpbmcgcGFyc2luZyBhY3R1YWxseSB3b3JrczoKLSAgICAg
ICAgc3ltYm9sc19zdHJpbmcgPSAiIiIKLTAwMDAwMDAwMDEyNGY0OTggcyBfX1paTjdXZWJDb3Jl
MTNHcmFwaGljc0xheWVyMTJyZXBsYWNlQ2hpbGRFUFMwX1MxX0UxOV9fUFJFVFRZX0ZVTkNUSU9O
X18KLTAwMDAwMDAwMDEyNGY1MDAgcyBfX1paTjdXZWJDb3JlMTNHcmFwaGljc0xheWVyMTNhZGRD
aGlsZEFib3ZlRVBTMF9TMV9FMTlfX1BSRVRUWV9GVU5DVElPTl9fCi0wMDAwMDAwMDAxMjRmNjcw
IHMgX19aWk43V2ViQ29yZTEzR3JhcGhpY3NMYXllcjEzYWRkQ2hpbGRCZWxvd0VQUzBfUzFfRTE5
X19QUkVUVFlfRlVOQ1RJT05fXwotIiIiCi0gICAgICAgICMgTm90ZSAnY29tcG9zaXRpbmcnIGlz
IG5vdCBpbiB0aGUgbGlzdCBvZiBza2lwcGVkIGRpcmVjdG9yaWVzIChoZW5jZSB0aGUgcGFyc2lu
ZyBvZiBHcmFwaGljc0xheWVyIHdvcmtlZCk6Ci0gICAgICAgIGV4cGVjdGVkX2RpcmVjdG9yaWVz
ID0gc2V0KFsnbWF0aG1sJywgJ3RyYW5zZm9ybXMvM2QnLCAnY29tcG9zaXRpbmcvd2ViZ2wnLCAn
ZmFzdC9jYW52YXMvd2ViZ2wnLCAnYW5pbWF0aW9ucy8zZCcsICdtaHRtbCcsICdodHRwL3Rlc3Rz
L2NhbnZhcy93ZWJnbCcsICdmYXN0L2Nzcy92YXJpYWJsZXMnLCAnaW5zcGVjdG9yL3N0eWxlcy92
YXJpYWJsZXMnXSkKLSAgICAgICAgcmVzdWx0X2RpcmVjdG9yaWVzID0gc2V0KFRlc3RXZWJLaXRQ
b3J0KHN5bWJvbHNfc3RyaW5nLCBOb25lKS5fc2tpcHBlZF90ZXN0c19mb3JfdW5zdXBwb3J0ZWRf
ZmVhdHVyZXModGVzdF9saXN0PVsnbWF0aG1sL2Zvby5odG1sJ10pKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHJlc3VsdF9kaXJlY3RvcmllcywgZXhwZWN0ZWRfZGlyZWN0b3JpZXMpCi0KLSAg
ICBkZWYgdGVzdF9za2lwcGVkX2RpcmVjdG9yaWVzX2Zvcl9mZWF0dXJlcyhzZWxmKToKLSAgICAg
ICAgc3VwcG9ydGVkX2ZlYXR1cmVzID0gWyJBY2NlbGVyYXRlZCBDb21wb3NpdGluZyIsICJGb28g
RmVhdHVyZSJdCi0gICAgICAgIGV4cGVjdGVkX2RpcmVjdG9yaWVzID0gc2V0KFsiYW5pbWF0aW9u
cy8zZCIsICJ0cmFuc2Zvcm1zLzNkIl0pCi0gICAgICAgIHBvcnQgPSBUZXN0V2ViS2l0UG9ydChO
b25lLCBzdXBwb3J0ZWRfZmVhdHVyZXMpCi0gICAgICAgIHBvcnQuX3J1bnRpbWVfZmVhdHVyZV9s
aXN0ID0gbGFtYmRhOiBzdXBwb3J0ZWRfZmVhdHVyZXMKLSAgICAgICAgcmVzdWx0X2RpcmVjdG9y
aWVzID0gc2V0KHBvcnQuX3NraXBwZWRfdGVzdHNfZm9yX3Vuc3VwcG9ydGVkX2ZlYXR1cmVzKHRl
c3RfbGlzdD1bImFuaW1hdGlvbnMvM2QvZm9vLmh0bWwiXSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwocmVzdWx0X2RpcmVjdG9yaWVzLCBleHBlY3RlZF9kaXJlY3RvcmllcykKLQotICAgIGRl
ZiB0ZXN0X3NraXBwZWRfZGlyZWN0b3JpZXNfZm9yX2ZlYXR1cmVzX25vX21hdGNoaW5nX3Rlc3Rz
X2luX3Rlc3RfbGlzdChzZWxmKToKLSAgICAgICAgc3VwcG9ydGVkX2ZlYXR1cmVzID0gWyJBY2Nl
bGVyYXRlZCBDb21wb3NpdGluZyIsICJGb28gRmVhdHVyZSJdCi0gICAgICAgIGV4cGVjdGVkX2Rp
cmVjdG9yaWVzID0gc2V0KFtdKQotICAgICAgICByZXN1bHRfZGlyZWN0b3JpZXMgPSBzZXQoVGVz
dFdlYktpdFBvcnQoTm9uZSwgc3VwcG9ydGVkX2ZlYXR1cmVzKS5fc2tpcHBlZF90ZXN0c19mb3Jf
dW5zdXBwb3J0ZWRfZmVhdHVyZXModGVzdF9saXN0PVsnZm9vLmh0bWwnXSkpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwocmVzdWx0X2RpcmVjdG9yaWVzLCBleHBlY3RlZF9kaXJlY3RvcmllcykK
LQotICAgIGRlZiB0ZXN0X3NraXBwZWRfdGVzdHNfZm9yX3Vuc3VwcG9ydGVkX2ZlYXR1cmVzX2Vt
cHR5X3Rlc3RfbGlzdChzZWxmKToKLSAgICAgICAgc3VwcG9ydGVkX2ZlYXR1cmVzID0gWyJBY2Nl
bGVyYXRlZCBDb21wb3NpdGluZyIsICJGb28gRmVhdHVyZSJdCi0gICAgICAgIGV4cGVjdGVkX2Rp
cmVjdG9yaWVzID0gc2V0KFtdKQotICAgICAgICByZXN1bHRfZGlyZWN0b3JpZXMgPSBzZXQoVGVz
dFdlYktpdFBvcnQoTm9uZSwgc3VwcG9ydGVkX2ZlYXR1cmVzKS5fc2tpcHBlZF90ZXN0c19mb3Jf
dW5zdXBwb3J0ZWRfZmVhdHVyZXModGVzdF9saXN0PU5vbmUpKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHJlc3VsdF9kaXJlY3RvcmllcywgZXhwZWN0ZWRfZGlyZWN0b3JpZXMpCi0KLSAgICBk
ZWYgdGVzdF9za2lwcGVkX2xheW91dF90ZXN0cyhzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChUZXN0V2ViS2l0UG9ydChOb25lLCBOb25lKS5za2lwcGVkX2xheW91dF90ZXN0cyh0ZXN0
X2xpc3Q9W10pLCBzZXQoWydtZWRpYSddKSkKLQotICAgIGRlZiB0ZXN0X3NraXBwZWRfZmlsZV9z
ZWFyY2hfcGF0aHMoc2VsZik6Ci0gICAgICAgIHBvcnQgPSBUZXN0V2ViS2l0UG9ydCgpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5fc2tpcHBlZF9maWxlX3NlYXJjaF9wYXRocygpLCBz
ZXQoWyd0ZXN0d2Via2l0cG9ydCddKSkKLSAgICAgICAgcG9ydC5fbmFtZSA9ICJ0ZXN0d2Via2l0
cG9ydC12ZXJzaW9uIgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQuX3NraXBwZWRfZmls
ZV9zZWFyY2hfcGF0aHMoKSwgc2V0KFsndGVzdHdlYmtpdHBvcnQnLCAndGVzdHdlYmtpdHBvcnQt
dmVyc2lvbiddKSkKLSAgICAgICAgcG9ydC5fb3B0aW9ucyA9IE1vY2tPcHRpb25zKHdlYmtpdF90
ZXN0X3J1bm5lcj1UcnVlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQuX3NraXBwZWRf
ZmlsZV9zZWFyY2hfcGF0aHMoKSwgc2V0KFsndGVzdHdlYmtpdHBvcnQnLCAndGVzdHdlYmtpdHBv
cnQtdmVyc2lvbicsICd0ZXN0d2Via2l0cG9ydC13azInLCAnd2syJ10pKQotICAgICAgICBwb3J0
Ll9vcHRpb25zID0gTW9ja09wdGlvbnMoYWRkaXRpb25hbF9wbGF0Zm9ybV9kaXJlY3Rvcnk9WyJp
bnRlcm5hbC10ZXN0d2Via2l0cG9ydCJdKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQu
X3NraXBwZWRfZmlsZV9zZWFyY2hfcGF0aHMoKSwgc2V0KFsndGVzdHdlYmtpdHBvcnQnLCAndGVz
dHdlYmtpdHBvcnQtdmVyc2lvbicsICdpbnRlcm5hbC10ZXN0d2Via2l0cG9ydCddKSkKLQotICAg
IGRlZiB0ZXN0X3Jvb3Rfb3B0aW9uKHNlbGYpOgotICAgICAgICBwb3J0ID0gVGVzdFdlYktpdFBv
cnQoKQotICAgICAgICBwb3J0Ll9vcHRpb25zID0gTW9ja09wdGlvbnMocm9vdD0nL2ZvbycpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5fcGF0aF90b19kcml2ZXIoKSwgIi9mb28vRHVt
cFJlbmRlclRyZWUiKQotCi0gICAgZGVmIHRlc3RfdGVzdF9leHBlY3RhdGlvbnMoc2VsZik6Ci0g
ICAgICAgICMgQ2hlY2sgdGhhdCB3ZSByZWFkIHRoZSBleHBlY3RhdGlvbnMgZmlsZQotICAgICAg
ICBob3N0ID0gTW9ja1N5c3RlbUhvc3QoKQotICAgICAgICBob3N0LmZpbGVzeXN0ZW0ud3JpdGVf
dGV4dF9maWxlKCcvbW9jay1jaGVja291dC9MYXlvdXRUZXN0cy9wbGF0Zm9ybS90ZXN0d2Via2l0
cG9ydC9UZXN0RXhwZWN0YXRpb25zJywKLSAgICAgICAgICAgICdCVUdfVEVTVEVYUEVDVEFUSU9O
UyBTS0lQIDogZmFzdC9odG1sL2FydGljbGUtZWxlbWVudC5odG1sID0gVEVYVFxuJykKLSAgICAg
ICAgcG9ydCA9IFRlc3RXZWJLaXRQb3J0KGhvc3Q9aG9zdCkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgnJy5qb2luKHBvcnQuZXhwZWN0YXRpb25zX2RpY3QoKS52YWx1ZXMoKSksICdCVUdfVEVT
VEVYUEVDVEFUSU9OUyBTS0lQIDogZmFzdC9odG1sL2FydGljbGUtZWxlbWVudC5odG1sID0gVEVY
VFxuJykKLQotICAgIGRlZiB0ZXN0X2J1aWxkX2RyaXZlcihzZWxmKToKLSAgICAgICAgb3V0cHV0
ID0gT3V0cHV0Q2FwdHVyZSgpCi0gICAgICAgIHBvcnQgPSBUZXN0V2ViS2l0UG9ydCgpCi0gICAg
ICAgICMgRGVsYXkgc2V0dGluZyBfZXhlY3V0aXZlIHRvIGF2b2lkIGxvZ2dpbmcgZHVyaW5nIGNv
bnN0cnVjdGlvbgotICAgICAgICBwb3J0Ll9leGVjdXRpdmUgPSBNb2NrRXhlY3V0aXZlKHNob3Vs
ZF9sb2c9VHJ1ZSkKLSAgICAgICAgcG9ydC5fb3B0aW9ucyA9IE1vY2tPcHRpb25zKGNvbmZpZ3Vy
YXRpb249IlJlbGVhc2UiKSAgIyBUaGlzIHNob3VsZCBub3QgYmUgbmVjZXNzYXJ5LCBidXQgSSB0
aGluayBUZXN0V2ViS2l0UG9ydCBpcyBhY3R1YWxseSByZWFkaW5nIGZyb20gZGlzayAoYW5kIHRo
dXMgZGV0ZWN0cyB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uKS4KLSAgICAgICAgZXhwZWN0ZWRf
c3RkZXJyID0gIk1PQ0sgcnVuX2NvbW1hbmQ6IFsnVG9vbHMvU2NyaXB0cy9idWlsZC1kdW1wcmVu
ZGVydHJlZScsICctLXJlbGVhc2UnXSwgY3dkPS9tb2NrLWNoZWNrb3V0LCBlbnY9eydMQ19BTEwn
OiAnQycsICdNT0NLX0VOVklST05fQ09QWSc6ICcxJ31cbiIKLSAgICAgICAgc2VsZi5hc3NlcnRU
cnVlKG91dHB1dC5hc3NlcnRfb3V0cHV0cyhzZWxmLCBwb3J0Ll9idWlsZF9kcml2ZXIsIGV4cGVj
dGVkX3N0ZGVycj1leHBlY3RlZF9zdGRlcnIsIGV4cGVjdGVkX2xvZ3M9JycpKQotCi0gICAgICAg
ICMgTWFrZSBzdXJlIHdoZW4gcGFzc2VkIC0td2Via2l0LXRlc3QtcnVubmVyIHdlIGJ1aWxkIHRo
ZSByaWdodCB0b29sLgotICAgICAgICBwb3J0Ll9vcHRpb25zID0gTW9ja09wdGlvbnMod2Via2l0
X3Rlc3RfcnVubmVyPVRydWUsIGNvbmZpZ3VyYXRpb249IlJlbGVhc2UiKQotICAgICAgICBleHBl
Y3RlZF9zdGRlcnIgPSAiTU9DSyBydW5fY29tbWFuZDogWydUb29scy9TY3JpcHRzL2J1aWxkLWR1
bXByZW5kZXJ0cmVlJywgJy0tcmVsZWFzZSddLCBjd2Q9L21vY2stY2hlY2tvdXQsIGVudj17J0xD
X0FMTCc6ICdDJywgJ01PQ0tfRU5WSVJPTl9DT1BZJzogJzEnfVxuTU9DSyBydW5fY29tbWFuZDog
WydUb29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdHRlc3RydW5uZXInLCAnLS1yZWxlYXNlJ10sIGN3
ZD0vbW9jay1jaGVja291dCwgZW52PXsnTENfQUxMJzogJ0MnLCAnTU9DS19FTlZJUk9OX0NPUFkn
OiAnMSd9XG4iCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvdXRwdXQuYXNzZXJ0X291dHB1dHMo
c2VsZiwgcG9ydC5fYnVpbGRfZHJpdmVyLCBleHBlY3RlZF9zdGRlcnI9ZXhwZWN0ZWRfc3RkZXJy
LCBleHBlY3RlZF9sb2dzPScnKSkKLQotICAgICAgICAjIE1ha2Ugc3VyZSB3ZSBzaG93IHRoZSBi
dWlsZCBsb2cgd2hlbiAtLXZlcmJvc2UgaXMgcGFzc2VkLCB3aGljaCB3ZSBzaW11bGF0ZSBieSBz
ZXR0aW5nIHRoZSBsb2dnaW5nIGxldmVsIHRvIERFQlVHLgotICAgICAgICBvdXRwdXQuc2V0X2xv
Z19sZXZlbChsb2dnaW5nLkRFQlVHKQotICAgICAgICBwb3J0Ll9vcHRpb25zID0gTW9ja09wdGlv
bnMoY29uZmlndXJhdGlvbj0iUmVsZWFzZSIpCi0gICAgICAgIGV4cGVjdGVkX3N0ZGVyciA9ICJN
T0NLIHJ1bl9jb21tYW5kOiBbJ1Rvb2xzL1NjcmlwdHMvYnVpbGQtZHVtcHJlbmRlcnRyZWUnLCAn
LS1yZWxlYXNlJ10sIGN3ZD0vbW9jay1jaGVja291dCwgZW52PXsnTENfQUxMJzogJ0MnLCAnTU9D
S19FTlZJUk9OX0NPUFknOiAnMSd9XG4iCi0gICAgICAgIGV4cGVjdGVkX2xvZ3MgPSAiT3V0cHV0
IG9mIFsnVG9vbHMvU2NyaXB0cy9idWlsZC1kdW1wcmVuZGVydHJlZScsICctLXJlbGVhc2UnXTpc
bk1PQ0sgb3V0cHV0IG9mIGNoaWxkIHByb2Nlc3NcbiIKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVl
KG91dHB1dC5hc3NlcnRfb3V0cHV0cyhzZWxmLCBwb3J0Ll9idWlsZF9kcml2ZXIsIGV4cGVjdGVk
X3N0ZGVycj1leHBlY3RlZF9zdGRlcnIsIGV4cGVjdGVkX2xvZ3M9ZXhwZWN0ZWRfbG9ncykpCi0g
ICAgICAgIG91dHB1dC5zZXRfbG9nX2xldmVsKGxvZ2dpbmcuSU5GTykKLQotICAgICAgICAjIE1h
a2Ugc3VyZSB0aGF0IGZhaWx1cmUgdG8gYnVpbGQgcmV0dXJucyBGYWxzZS4KLSAgICAgICAgcG9y
dC5fZXhlY3V0aXZlID0gTW9ja0V4ZWN1dGl2ZShzaG91bGRfbG9nPVRydWUsIHNob3VsZF90aHJv
dz1UcnVlKQotICAgICAgICAjIEJlY2F1c2UgV0syIGN1cnJlbnRseSBoYXMgdG8gYnVpbGQgYm90
aCB3ZWJraXR0ZXN0cnVubmVyIGFuZCBEUlQsIGlmIERSVCBmYWlscywgdGhhdCdzIHRoZSBvbmx5
IG9uZSBpdCB0cmllcy4KLSAgICAgICAgZXhwZWN0ZWRfc3RkZXJyID0gIk1PQ0sgcnVuX2NvbW1h
bmQ6IFsnVG9vbHMvU2NyaXB0cy9idWlsZC1kdW1wcmVuZGVydHJlZScsICctLXJlbGVhc2UnXSwg
Y3dkPS9tb2NrLWNoZWNrb3V0LCBlbnY9eydMQ19BTEwnOiAnQycsICdNT0NLX0VOVklST05fQ09Q
WSc6ICcxJ31cbiIKLSAgICAgICAgZXhwZWN0ZWRfbG9ncyA9ICJNT0NLIFNjcmlwdEVycm9yXG5c
bk1PQ0sgb3V0cHV0IG9mIGNoaWxkIHByb2Nlc3NcbiIKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxz
ZShvdXRwdXQuYXNzZXJ0X291dHB1dHMoc2VsZiwgcG9ydC5fYnVpbGRfZHJpdmVyLCBleHBlY3Rl
ZF9zdGRlcnI9ZXhwZWN0ZWRfc3RkZXJyLCBleHBlY3RlZF9sb2dzPWV4cGVjdGVkX2xvZ3MpKQot
Ci0gICAgZGVmIF9hc3NlcnRfY29uZmlnX2ZpbGVfZm9yX3BsYXRmb3JtKHNlbGYsIHBvcnQsIHBs
YXRmb3JtLCBjb25maWdfZmlsZSk6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHBvcnQuX2Fw
YWNoZV9jb25maWdfZmlsZV9uYW1lX2Zvcl9wbGF0Zm9ybShwbGF0Zm9ybSksIGNvbmZpZ19maWxl
KQotCi0gICAgZGVmIHRlc3RfbGludXhfZGlzdHJvX2RldGVjdGlvbihzZWxmKToKLSAgICAgICAg
cG9ydCA9IFRlc3RXZWJLaXRQb3J0KCkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShwb3J0Ll9p
c19yZWRoYXRfYmFzZWQoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShwb3J0Ll9pc19kZWJp
YW5fYmFzZWQoKSkKLQotICAgICAgICBwb3J0Ll9maWxlc3lzdGVtID0gTW9ja0ZpbGVTeXN0ZW0o
eycvZXRjL3JlZGhhdC1yZWxlYXNlJzogJyd9KQotICAgICAgICBzZWxmLmFzc2VydFRydWUocG9y
dC5faXNfcmVkaGF0X2Jhc2VkKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocG9ydC5faXNf
ZGViaWFuX2Jhc2VkKCkpCi0KLSAgICAgICAgcG9ydC5fZmlsZXN5c3RlbSA9IE1vY2tGaWxlU3lz
dGVtKHsnL2V0Yy9kZWJpYW5fdmVyc2lvbic6ICcnfSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxz
ZShwb3J0Ll9pc19yZWRoYXRfYmFzZWQoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBvcnQu
X2lzX2RlYmlhbl9iYXNlZCgpKQotCi0gICAgZGVmIHRlc3RfYXBhY2hlX2NvbmZpZ19maWxlX25h
bWVfZm9yX3BsYXRmb3JtKHNlbGYpOgotICAgICAgICBwb3J0ID0gVGVzdFdlYktpdFBvcnQoKQot
ICAgICAgICBzZWxmLl9hc3NlcnRfY29uZmlnX2ZpbGVfZm9yX3BsYXRmb3JtKHBvcnQsICdjeWd3
aW4nLCAnY3lnd2luLWh0dHBkLmNvbmYnKQotCi0gICAgICAgIHNlbGYuX2Fzc2VydF9jb25maWdf
ZmlsZV9mb3JfcGxhdGZvcm0ocG9ydCwgJ2xpbnV4MicsICdhcGFjaGUyLWh0dHBkLmNvbmYnKQot
ICAgICAgICBzZWxmLl9hc3NlcnRfY29uZmlnX2ZpbGVfZm9yX3BsYXRmb3JtKHBvcnQsICdsaW51
eDMnLCAnYXBhY2hlMi1odHRwZC5jb25mJykKLQotICAgICAgICBwb3J0Ll9pc19yZWRoYXRfYmFz
ZWQgPSBsYW1iZGE6IFRydWUKLSAgICAgICAgc2VsZi5fYXNzZXJ0X2NvbmZpZ19maWxlX2Zvcl9w
bGF0Zm9ybShwb3J0LCAnbGludXgyJywgJ2ZlZG9yYS1odHRwZC5jb25mJykKLQotICAgICAgICBw
b3J0ID0gVGVzdFdlYktpdFBvcnQoKQotICAgICAgICBwb3J0Ll9pc19kZWJpYW5fYmFzZWQgPSBs
YW1iZGE6IFRydWUKLSAgICAgICAgc2VsZi5fYXNzZXJ0X2NvbmZpZ19maWxlX2Zvcl9wbGF0Zm9y
bShwb3J0LCAnbGludXgyJywgJ2FwYWNoZTItZGViaWFuLWh0dHBkLmNvbmYnKQotCi0gICAgICAg
IHNlbGYuX2Fzc2VydF9jb25maWdfZmlsZV9mb3JfcGxhdGZvcm0ocG9ydCwgJ21hYycsICdhcGFj
aGUyLWh0dHBkLmNvbmYnKQotICAgICAgICBzZWxmLl9hc3NlcnRfY29uZmlnX2ZpbGVfZm9yX3Bs
YXRmb3JtKHBvcnQsICd3aW4zMicsICdhcGFjaGUyLWh0dHBkLmNvbmYnKSAgIyB3aW4zMiBpc24n
dCBhIHN1cHBvcnRlZCBzeXMucGxhdGZvcm0uICBBcHBsZVdpbi9XaW5DYWlyby9XaW5DRSBwb3J0
cyBhbGwgdXNlIGN5Z3dpbi4KLSAgICAgICAgc2VsZi5fYXNzZXJ0X2NvbmZpZ19maWxlX2Zvcl9w
bGF0Zm9ybShwb3J0LCAnYmFyZicsICdhcGFjaGUyLWh0dHBkLmNvbmYnKQotCi0gICAgZGVmIHRl
c3RfcGF0aF90b19hcGFjaGVfY29uZmlnX2ZpbGUoc2VsZik6Ci0gICAgICAgIHBvcnQgPSBUZXN0
V2ViS2l0UG9ydCgpCi0gICAgICAgICMgTW9jayBvdXQgX2FwYWNoZV9jb25maWdfZmlsZV9uYW1l
X2Zvcl9wbGF0Zm9ybSB0byBpZ25vcmUgdGhlIHBhc3NlZCBzeXMucGxhdGZvcm0gdmFsdWUuCi0g
ICAgICAgIHBvcnQuX2FwYWNoZV9jb25maWdfZmlsZV9uYW1lX2Zvcl9wbGF0Zm9ybSA9IGxhbWJk
YSBwbGF0Zm9ybTogJ2h0dHBkLmNvbmYnCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHBvcnQu
X3BhdGhfdG9fYXBhY2hlX2NvbmZpZ19maWxlKCksICcvbW9jay1jaGVja291dC9MYXlvdXRUZXN0
cy9odHRwL2NvbmYvaHR0cGQuY29uZicpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L3Rvb2wvc2VydmVycy9yZWJhc2VsaW5lc2VydmVyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS90b29sL3NlcnZlcnMvcmViYXNlbGluZXNlcnZlci5weQppbmRleCAxNWJjZDZmNTU5NDMx
YjVlNjE2ZWQ3NDY1MDQyOGY5ZTY0ZWIxMTZhLi4wZTc0NTg3MjdhZGY1OTZmYjMwMmZhZGViMDM2
OWMzNjFlNDhjNmRlIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc2Vy
dmVycy9yZWJhc2VsaW5lc2VydmVyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9v
bC9zZXJ2ZXJzL3JlYmFzZWxpbmVzZXJ2ZXIucHkKQEAgLTMyLDcgKzMyLDcgQEAgaW1wb3J0IG9z
LnBhdGgKIGltcG9ydCBCYXNlSFRUUFNlcnZlcgogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5ob3N0
IGltcG9ydCBIb3N0ICAjIEZJWE1FOiBUaGlzIHNob3VsZCBub3QgYmUgbmVlZGVkIQotZnJvbSB3
ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC53ZWJraXQgaW1wb3J0IFdlYktpdFBvcnQKK2Zyb20g
d2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQuYmFzZSBpbXBvcnQgUG9ydAogZnJvbSB3ZWJraXRw
eS50b29sLnNlcnZlcnMucmVmbGVjdGlvbmhhbmRsZXIgaW1wb3J0IFJlZmxlY3Rpb25IYW5kbGVy
CiAKIApAQCAtMTYzLDkgKzE2Myw5IEBAIGRlZiBfbW92ZV90ZXN0X2Jhc2VsaW5lcyh0ZXN0X2Zp
bGUsIGV4dGVuc2lvbnNfdG9fbW92ZSwgc291cmNlX3BsYXRmb3JtLCBkZXN0aW5hCiAKIGRlZiBn
ZXRfdGVzdF9iYXNlbGluZXModGVzdF9maWxlLCB0ZXN0X2NvbmZpZyk6CiAgICAgIyBGSVhNRTog
VGhpcyBzZWVtcyBsaWtlIGEgaGFjay4gVGhpcyBvbmx5IHNlZW1zIHVzZWQgdG8gYWNjZXNzIHRo
ZSBQb3J0LmV4cGVjdGVkX2Jhc2VsaW5lcyBsb2dpYy4KLSAgICBjbGFzcyBBbGxQbGF0Zm9ybXNQ
b3J0KFdlYktpdFBvcnQpOgorICAgIGNsYXNzIEFsbFBsYXRmb3Jtc1BvcnQoUG9ydCk6CiAgICAg
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0KToKLSAgICAgICAgICAgIFdlYktpdFBvcnQuX19p
bml0X18oc2VsZiwgaG9zdCwgJ21hYycpCisgICAgICAgICAgICBzdXBlcihBbGxQbGF0Zm9ybXNQ
b3J0LCBzZWxmKS5fX2luaXRfXyhob3N0LCAnbWFjJykKICAgICAgICAgICAgIHNlbGYuX3BsYXRm
b3Jtc19ieV9kaXJlY3RvcnkgPSBkaWN0KFsoc2VsZi5fd2Via2l0X2Jhc2VsaW5lX3BhdGgocCks
IHApIGZvciBwIGluIHRlc3RfY29uZmlnLnBsYXRmb3Jtc10pCiAKICAgICAgICAgZGVmIGJhc2Vs
aW5lX3NlYXJjaF9wYXRoKHNlbGYpOgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS90b29sL3NlcnZlcnMvcmViYXNlbGluZXNlcnZlcl91bml0dGVzdC5weSBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdG9vbC9zZXJ2ZXJzL3JlYmFzZWxpbmVzZXJ2ZXJfdW5pdHRlc3QucHkKaW5k
ZXggYzhlYTZjMDJjM2VhMjRhNGZiNmIyNDZlYTJkMWJlOTczZjczZDU0Yi4uZjVjMWNiZjVlMTM1
YWUxYzliYTBhZTlhM2VhYzA5MGI4ZTBkYjliYSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS90b29sL3NlcnZlcnMvcmViYXNlbGluZXNlcnZlcl91bml0dGVzdC5weQorKysgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc2VydmVycy9yZWJhc2VsaW5lc2VydmVyX3VuaXR0
ZXN0LnB5CkBAIC0zMiw3ICszMiw3IEBAIGltcG9ydCB1bml0dGVzdAogZnJvbSB3ZWJraXRweS5j
b21tb24ubmV0IGltcG9ydCByZXN1bHRzanNvbnBhcnNlcl91bml0dGVzdAogZnJvbSB3ZWJraXRw
eS5jb21tb24uaG9zdF9tb2NrIGltcG9ydCBNb2NrSG9zdAogZnJvbSB3ZWJraXRweS5sYXlvdXRf
dGVzdHMubGF5b3V0X3BhY2thZ2UuanNvbl9yZXN1bHRzX2dlbmVyYXRvciBpbXBvcnQgc3RyaXBf
anNvbl93cmFwcGVyCi1mcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0LndlYmtpdCBpbXBv
cnQgV2ViS2l0UG9ydAorZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC5iYXNlIGltcG9y
dCBQb3J0CiBmcm9tIHdlYmtpdHB5LnRvb2wuY29tbWFuZHMucmViYXNlbGluZXNlcnZlciBpbXBv
cnQgVGVzdENvbmZpZywgUmViYXNlbGluZVNlcnZlcgogZnJvbSB3ZWJraXRweS50b29sLnNlcnZl
cnMgaW1wb3J0IHJlYmFzZWxpbmVzZXJ2ZXIKIApAQCAtMjk5LDcgKzI5OSw3IEBAIGRlZiBnZXRf
dGVzdF9jb25maWcodGVzdF9maWxlcz1bXSwgcmVzdWx0X2ZpbGVzPVtdKToKICAgICBmb3IgZmls
ZSBpbiByZXN1bHRfZmlsZXM6CiAgICAgICAgIGhvc3QuZmlsZXN5c3RlbS53cml0ZV9iaW5hcnlf
ZmlsZShob3N0LmZpbGVzeXN0ZW0uam9pbihyZXN1bHRzX2RpcmVjdG9yeSwgZmlsZSksICcnKQog
Ci0gICAgY2xhc3MgVGVzdE1hY1BvcnQoV2ViS2l0UG9ydCk6CisgICAgY2xhc3MgVGVzdE1hY1Bv
cnQoUG9ydCk6CiAgICAgICAgIHBvcnRfbmFtZSA9ICJtYWMiCiAKICAgICByZXR1cm4gVGVzdENv
bmZpZygK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154817</attachid>
            <date>2012-07-26 19:39:01 -0700</date>
            <delta_ts>2012-07-26 21:50:36 -0700</delta_ts>
            <desc>clarify that this is just cut&amp;paste</desc>
            <filename>bug-92450-20120726193849.patch</filename>
            <type>text/plain</type>
            <size>95464</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzODE0CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNmY4ZGRjNDQ4MGU5MmJmYWFjMGRjMDYzMGRmMjI2MDk0
Y2M2ZTdhNi4uZGViZmExZGY2YmIxMjZlMzE0NzM4OWQwYzZiOGIwODBjZWUxZDhhMyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2
MSBAQAorMjAxMi0wNy0yNiAgRGlyayBQcmFua2UgIDxkcHJhbmtlQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBucnd0OiByZW1vdmUgJ3dlYmtpdC5weScgYW5kIHRoZSAnV2ViS2l0UG9ydCcKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkyNDUwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBm
aW5pc2hlcyB0aGUgd29yayBvZiBtZXJnaW5nIFdlYktpdFBvcnQgaW50byBQb3J0LgorICAgICAg
ICBOb3cgUG9ydCBpcyB3YXkgdG9vIGJpZyA6KS4KKworICAgICAgICBUaGlzIGlzIGFsbCBjdXR0
aW5nIGFuZCBwYXN0aW5nOyBubyBuZXcgZnVuY3Rpb25hbGl0eSBhbmQKKyAgICAgICAgbm8gY2hh
bmdlcyBpbiB0aGUgdGVzdHMuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L2FwcGxlLnB5OgorICAgICAgICAoQXBwbGVQb3J0KToKKyAgICAgICAgKEFwcGxl
UG9ydC5fX2luaXRfXyk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9iYXNlLnB5OgorICAgICAgICAoUG9ydC5za2lwcGVkX2xheW91dF90ZXN0cyk6CisgICAg
ICAgIChQb3J0KToKKyAgICAgICAgKFBvcnQuX3BvcnRfZmxhZ19mb3Jfc2NyaXB0cyk6CisgICAg
ICAgIChQb3J0Ll9hcmd1bWVudHNfZm9yX2NvbmZpZ3VyYXRpb24pOgorICAgICAgICAoUG9ydC5f
cnVuX3NjcmlwdCk6CisgICAgICAgIChQb3J0Ll9idWlsZF9kcml2ZXIpOgorICAgICAgICAoUG9y
dC5fYnVpbGRfZHJpdmVyX2ZsYWdzKToKKyAgICAgICAgKFBvcnQuX3Rlc3RzX2Zvcl9vdGhlcl9w
bGF0Zm9ybXMpOgorICAgICAgICAoUG9ydC5fcnVudGltZV9mZWF0dXJlX2xpc3QpOgorICAgICAg
ICAoUG9ydC5ubV9jb21tYW5kKToKKyAgICAgICAgKFBvcnQuX21vZHVsZXNfdG9fc2VhcmNoX2Zv
cl9zeW1ib2xzKToKKyAgICAgICAgKFBvcnQuX3N5bWJvbHNfc3RyaW5nKToKKyAgICAgICAgKFBv
cnQuX21pc3NpbmdfZmVhdHVyZV90b19za2lwcGVkX3Rlc3RzKToKKyAgICAgICAgKFBvcnQuX21p
c3Npbmdfc3ltYm9sX3RvX3NraXBwZWRfdGVzdHMpOgorICAgICAgICAoUG9ydC5faGFzX3Rlc3Rf
aW5fZGlyZWN0b3JpZXMpOgorICAgICAgICAoUG9ydC5fc2tpcHBlZF90ZXN0c19mb3JfdW5zdXBw
b3J0ZWRfZmVhdHVyZXMpOgorICAgICAgICAoUG9ydC5fd2syX3BvcnRfbmFtZSk6CisgICAgICAg
IChQb3J0Ll9za2lwcGVkX2ZpbGVfc2VhcmNoX3BhdGhzKToKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5OgorICAgICAgICAoQ2hyb21pdW1Q
b3J0KToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9t
aXVtX2FuZHJvaWQucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9jaHJvbWl1bV9wb3J0X3Rlc3RjYXNlLnB5OgorICAgICAgICAoQ2hyb21pdW1Qb3J0VGVz
dENhc2UudGVzdF9jaGVja19idWlsZCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9kcml2ZXJfdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcG9ydC9lZmwucHk6CisgICAgICAgIChFZmxQb3J0KToKKyAgICAg
ICAgKEVmbFBvcnQuX19pbml0X18pOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvZ3RrLnB5OgorICAgICAgICAoR3RrUG9ydCk6CisgICAgICAgIChHdGtQb3J0
LnNldHVwX2Vudmlyb25fZm9yX3NlcnZlcik6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC9wb3J0X3Rlc3RjYXNlLnB5OgorICAgICAgICAoVGVzdFdlYktpdFBv
cnQpOgorICAgICAgICAoVGVzdFdlYktpdFBvcnQuX19pbml0X18pOgorICAgICAgICAoVGVzdFdl
YktpdFBvcnQuYWxsX3Rlc3RfY29uZmlndXJhdGlvbnMpOgorICAgICAgICAoVGVzdFdlYktpdFBv
cnQuX3N5bWJvbHNfc3RyaW5nKToKKyAgICAgICAgKFRlc3RXZWJLaXRQb3J0Ll90ZXN0c19mb3Jf
b3RoZXJfcGxhdGZvcm1zKToKKyAgICAgICAgKFRlc3RXZWJLaXRQb3J0Ll90ZXN0c19mb3JfZGlz
YWJsZWRfZmVhdHVyZXMpOgorICAgICAgICAoUG9ydFRlc3RDYXNlKToKKyAgICAgICAgKFBvcnRU
ZXN0Q2FzZS50ZXN0X2RpZmZfaW1hZ2UpOgorICAgICAgICAoUG9ydFRlc3RDYXNlLnRlc3RfcGF0
aF90b190ZXN0X2V4cGVjdGF0aW9uc19maWxlKToKKyAgICAgICAgKFBvcnRUZXN0Q2FzZS50ZXN0
X3NraXBwZWRfZGlyZWN0b3JpZXNfZm9yX3N5bWJvbHMpOgorICAgICAgICAodGVzdF9za2lwcGVk
X2RpcmVjdG9yaWVzX2Zvcl9mZWF0dXJlcyk6CisgICAgICAgICh0ZXN0X3NraXBwZWRfZGlyZWN0
b3JpZXNfZm9yX2ZlYXR1cmVzX25vX21hdGNoaW5nX3Rlc3RzX2luX3Rlc3RfbGlzdCk6CisgICAg
ICAgICh0ZXN0X3NraXBwZWRfdGVzdHNfZm9yX3Vuc3VwcG9ydGVkX2ZlYXR1cmVzX2VtcHR5X3Rl
c3RfbGlzdCk6CisgICAgICAgICh0ZXN0X3NraXBwZWRfbGF5b3V0X3Rlc3RzKToKKyAgICAgICAg
KHRlc3Rfc2tpcHBlZF9maWxlX3NlYXJjaF9wYXRocyk6CisgICAgICAgICh0ZXN0X3Jvb3Rfb3B0
aW9uKToKKyAgICAgICAgKHRlc3RfdGVzdF9leHBlY3RhdGlvbnMpOgorICAgICAgICAodGVzdF9i
dWlsZF9kcml2ZXIpOgorICAgICAgICAoX2Fzc2VydF9jb25maWdfZmlsZV9mb3JfcGxhdGZvcm0p
OgorICAgICAgICAodGVzdF9saW51eF9kaXN0cm9fZGV0ZWN0aW9uKToKKyAgICAgICAgKHRlc3Rf
YXBhY2hlX2NvbmZpZ19maWxlX25hbWVfZm9yX3BsYXRmb3JtKToKKyAgICAgICAgKHRlc3RfcGF0
aF90b19hcGFjaGVfY29uZmlnX2ZpbGUpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvcXQucHk6CisgICAgICAgIChRdFBvcnQpOgorICAgICAgICAoUXRQb3J0
Ll9faW5pdF9fKToKKyAgICAgICAgKFF0UG9ydC5zZXR1cF9lbnZpcm9uX2Zvcl9zZXJ2ZXIpOgor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5OiBS
ZW1vdmVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Vi
a2l0X3VuaXR0ZXN0LnB5OiBSZW1vdmVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9v
bC9zZXJ2ZXJzL3JlYmFzZWxpbmVzZXJ2ZXIucHk6CisgICAgICAgIChnZXRfdGVzdF9iYXNlbGlu
ZXMuQWxsUGxhdGZvcm1zUG9ydCk6CisgICAgICAgIChnZXRfdGVzdF9iYXNlbGluZXMuQWxsUGxh
dGZvcm1zUG9ydC5fX2luaXRfXyk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL3Nl
cnZlcnMvcmViYXNlbGluZXNlcnZlcl91bml0dGVzdC5weToKKyAgICAgICAgKGdldF90ZXN0X2Nv
bmZpZy5UZXN0TWFjUG9ydCk6CisKKzIwMTItMDctMjYgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgbnJ3dDogbW92ZSBpbWFnZSBkaWZmaW5nIGNvZGUgdG8g
YSBzZXBhcmF0ZSBtb2R1bGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTkyNDQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGhpcyBwYXRjaCBtb3ZlcyB0aGUgY29kZSB0byB0YWxrIHRvIEltYWdlRGlmZiBp
bnRvIGl0cyBvd24KKyAgICAgICAgbW9kdWxlLCBhbmQgYWRkcyBtb3JlIHRlc3RzIGZvciBpdC4g
SW4gYWRkaXRpb24sIHRoZSBwYXRjaAorICAgICAgICBtb2RpZmllcyBkaWZmX2ltYWdlKCkgc28g
dGhhdCB3ZSBkb24ndCBhdXRvbWF0aWNhbGx5IHN0b3AKKyAgICAgICAgSW1hZ2VEaWZmIGFmdGVy
IGEgc2luZ2xlIGludm9jYXRpb24sIGFuZCB0aHVzIHdlIHN1YnNlcXVlbnQKKyAgICAgICAgZGlm
ZnMgbWF5IGJlIHNsaWdodGx5IGZhc3Rlci4gKE5vdGUgdGhhdCB0aGUgY2hyb21pdW0gcG9ydHMK
KyAgICAgICAgZG9uJ3QgdXNlIGFueSBvZiB0aGlzIGNvZGU7IHRoYXQgaXMgbm90IGNoYW5nZWQg
YnkgdGhpcyBwYXRjaCkuCisKKyAgICAgICAgVGhlIG1haW4gbW90aXZhdGlvbiBmb3IgdGhpcyBj
aGFuZ2UgaXMgdG8gbW92ZSBtb3JlICJnZW5lcmljIgorICAgICAgICBjb2RlIG91dCBvZiB0aGUg
cG9ydC8qIGNsYXNzZXMsIGFuZCBpbiBwYXJ0aWN1bGFyIHRvIG1vdmUgbW9yZQorICAgICAgICBj
b2RlIG91dCBvZiB3ZWJraXQucHkgc28gdGhhdCB3ZSBjYW4gZXZlbnR1YWxseSBlbGltaW5hdGUg
aXQgYnkKKyAgICAgICAgbWVyZ2luZyBpdCBpbnRvIGJhc2UucHkuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBhbHNvIHNwbGl0cyBNb2NrU2VydmVyUHJvY2VzcyBvdXQgZnJvbSBkcml2ZXJfdW5pdHRl
c3QucHkKKyAgICAgICAgc28gdGhhdCBpdCBjYW4gYmUgcmUtdXNlZC4KKworICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weToKKyAgICAgICAgKFBvcnQu
X19pbml0X18pOgorICAgICAgICAoUG9ydC5kaWZmX2ltYWdlKToKKyAgICAgICAgKFBvcnQuY2xl
YW5fdXBfdGVzdF9ydW4pOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvZHJpdmVyLnB5OgorICAgICAgICAoRHJpdmVyLl9faW5pdF9fKToKKyAgICAgICAgKERy
aXZlci5fc3RhcnQpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvZHJpdmVyX3VuaXR0ZXN0LnB5OgorICAgICAgICAoRHJpdmVyVGVzdC50ZXN0X3N0b3BfY2xl
YW5zX3VwX3Byb3Blcmx5KToKKyAgICAgICAgKERyaXZlclRlc3QudGVzdF90d29fc3RhcnRzX2Ns
ZWFuc191cF9wcm9wZXJseSk6CisgICAgICAgIChEcml2ZXJUZXN0LnRlc3Rfc3RhcnRfYWN0dWFs
bHlfc3RhcnRzKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L2VmbC5weToKKyAgICAgICAgKEVmbFBvcnQuY2xlYW5fdXBfdGVzdF9ydW4pOgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZ3RrLnB5OgorICAgICAgICAoR3Rr
UG9ydC5jbGVhbl91cF90ZXN0X3J1bik6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9pbWFnZV9kaWZmLnB5OiBBZGRlZC4KKyAgICAgICAgKEltYWdlRGlmZmVy
KToKKyAgICAgICAgKEltYWdlRGlmZmVyLl9faW5pdF9fKToKKyAgICAgICAgKEltYWdlRGlmZmVy
LmRpZmZfaW1hZ2UpOgorICAgICAgICAoSW1hZ2VEaWZmZXIuX3N0YXJ0KToKKyAgICAgICAgKElt
YWdlRGlmZmVyLl9yZWFkKToKKyAgICAgICAgKEltYWdlRGlmZmVyLnN0b3ApOgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvaW1hZ2VfZGlmZl91bml0dGVzdC5w
eTogQWRkZWQuCisgICAgICAgIChmb3IpOgorICAgICAgICAoRmFrZVBvcnQpOgorICAgICAgICAo
RmFrZVBvcnQuX19pbml0X18pOgorICAgICAgICAoRmFrZVBvcnQuX3BhdGhfdG9faW1hZ2VfZGlm
Zik6CisgICAgICAgIChGYWtlUG9ydC5zZXR1cF9lbnZpcm9uX2Zvcl9zZXJ2ZXIpOgorICAgICAg
ICAoVGVzdEltYWdlRGlmZmVyKToKKyAgICAgICAgKFRlc3RJbWFnZURpZmZlci50ZXN0X2RpZmZf
aW1hZ2UpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbW9j
a19kcnRfdW5pdHRlc3QucHk6CisgICAgICAgIChNb2NrRFJUUG9ydFRlc3QudGVzdF9kaWZmX2lt
YWdlKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3BvcnRf
dGVzdGNhc2UucHk6CisgICAgICAgIChQb3J0VGVzdENhc2UudGVzdF9kaWZmX2ltYWdlX19taXNz
aW5nX2JvdGgpOgorICAgICAgICAoUG9ydFRlc3RDYXNlLnRlc3RfZGlmZl9pbWFnZSk6CisgICAg
ICAgIChQb3J0VGVzdENhc2UudGVzdF9kaWZmX2ltYWdlLm1ha2VfcHJvYyk6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9zZXJ2ZXJfcHJvY2Vzcy5weToKKyAg
ICAgICAgKFNlcnZlclByb2Nlc3MuX3N0YXJ0KToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L3NlcnZlcl9wcm9jZXNzX21vY2sucHk6IEFkZGVkLgorICAgICAg
ICAoTW9ja1NlcnZlclByb2Nlc3MpOgorICAgICAgICAoTW9ja1NlcnZlclByb2Nlc3MuX19pbml0
X18pOgorICAgICAgICAoTW9ja1NlcnZlclByb2Nlc3Mud3JpdGUpOgorICAgICAgICAoTW9ja1Nl
cnZlclByb2Nlc3MuaGFzX2NyYXNoZWQpOgorICAgICAgICAoTW9ja1NlcnZlclByb2Nlc3MucmVh
ZF9zdGRvdXRfbGluZSk6CisgICAgICAgIChNb2NrU2VydmVyUHJvY2Vzcy5yZWFkX3N0ZG91dCk6
CisgICAgICAgIChNb2NrU2VydmVyUHJvY2Vzcy5wb3BfYWxsX2J1ZmZlcmVkX3N0ZGVycik6Cisg
ICAgICAgIChNb2NrU2VydmVyUHJvY2Vzcy5yZWFkX2VpdGhlcl9zdGRvdXRfb3Jfc3RkZXJyX2xp
bmUpOgorICAgICAgICAoTW9ja1NlcnZlclByb2Nlc3Muc3RhcnQpOgorICAgICAgICAoTW9ja1Nl
cnZlclByb2Nlc3Muc3RvcCk6CisgICAgICAgIChNb2NrU2VydmVyUHJvY2Vzcy5raWxsKToKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weToKKyAg
ICAgICAgKFdlYktpdFBvcnQuX2J1aWxkX2RyaXZlcl9mbGFncyk6CisgICAgICAgIChXZWJLaXRQ
b3J0Ll9zeW1ib2xzX3N0cmluZyk6CisKIDIwMTItMDctMjYgIFNoZXJpZmYgQm90ICA8d2Via2l0
LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0
IHIxMjM3OTkuCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L2FwcGxlLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9hcHBsZS5weQppbmRleCA1ZThiOGI4Mjk4NDE1ZDY4ZDFhOGIzOWRkNzZkMGNmNmJhM2JjZmM2
Li4yOGVjYzYzODA4NWU3Y2Q2ZjA4YzE1OTU4NTg3NTVkMmU1OTczNWE5IDEwMDY0NAotLS0gYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2FwcGxlLnB5CisrKyBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYXBwbGUucHkKQEAgLTI4LDE0
ICsyOCwxNCBAQAogCiBpbXBvcnQgbG9nZ2luZwogCi1mcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0
cy5wb3J0LndlYmtpdCBpbXBvcnQgV2ViS2l0UG9ydAorZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVz
dHMucG9ydC5iYXNlIGltcG9ydCBQb3J0CiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5tb2Rl
bHMudGVzdF9jb25maWd1cmF0aW9uIGltcG9ydCBUZXN0Q29uZmlndXJhdGlvbgogCiAKIF9sb2cg
PSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKIAogCi1jbGFzcyBBcHBsZVBvcnQoV2ViS2l0
UG9ydCk6CitjbGFzcyBBcHBsZVBvcnQoUG9ydCk6CiAgICAgIiIiU2hhcmVkIGxvZ2ljIGJldHdl
ZW4gYWxsIG9mIEFwcGxlJ3MgcG9ydHMuIiIiCiAKICAgICAjIFRoaXMgaXMgdXNlZCB0byByZXBy
ZXNlbnQgdGhlIHZlcnNpb24gb2YgYW4gb3BlcmF0aW5nIHN5c3RlbQpAQCAtNzIsNyArNzIsNyBA
QCBjbGFzcyBBcHBsZVBvcnQoV2ViS2l0UG9ydCk6CiAgICAgICAgIHJldHVybiBwb3J0X25hbWVb
bGVuKHNlbGYucG9ydF9uYW1lICsgJy0nKTpdCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgaG9z
dCwgcG9ydF9uYW1lLCAqKmt3YXJncyk6Ci0gICAgICAgIFdlYktpdFBvcnQuX19pbml0X18oc2Vs
ZiwgaG9zdCwgcG9ydF9uYW1lLCAqKmt3YXJncykKKyAgICAgICAgc3VwZXIoQXBwbGVQb3J0LCBz
ZWxmKS5fX2luaXRfXyhob3N0LCBwb3J0X25hbWUsICoqa3dhcmdzKQogCiAgICAgICAgIGFsbG93
ZWRfcG9ydF9uYW1lcyA9IHNlbGYuVkVSU0lPTl9GQUxMQkFDS19PUkRFUiArIFtzZWxmLm9wZXJh
dGluZ19zeXN0ZW0oKSArICItZnV0dXJlIl0KICAgICAgICAgcG9ydF9uYW1lID0gcG9ydF9uYW1l
LnJlcGxhY2UoJy13azInLCAnJykKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvYmFzZS5weQppbmRleCBlZWRkMTlkYWQxODRmMzI4Zjg5ZjJlNTQ0ZTcwM2Nh
NDk5OGQzODBmLi5hZDlmNTE0MmY4ZWY0NjkxMWM1ODY2MzRjMDU3NzJmYzE3Y2FiZGZkIDEwMDc1
NQotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkK
KysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5CkBA
IC0zMyw3ICszMywxMCBAQCB0ZXN0IGluZnJhc3RydWN0dXJlICh0aGUgUG9ydCBhbmQgRHJpdmVy
IGNsYXNzZXMpLiIiIgogaW1wb3J0IGNnaQogaW1wb3J0IGRpZmZsaWIKIGltcG9ydCBlcnJubwor
aW1wb3J0IGl0ZXJ0b29scworaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBvcworaW1wb3J0IG9wZXJh
dG9yCiBpbXBvcnQgb3B0cGFyc2UKIGltcG9ydCByZQogaW1wb3J0IHN5cwpAQCAtNDksMTggKzUy
LDE5IEBAIGZyb20gd2Via2l0cHkuY29tbW9uIGltcG9ydCBmaW5kX2ZpbGVzCiBmcm9tIHdlYmtp
dHB5LmNvbW1vbiBpbXBvcnQgcmVhZF9jaGVja3N1bV9mcm9tX3BuZwogZnJvbSB3ZWJraXRweS5j
b21tb24ubWVtb2l6ZWQgaW1wb3J0IG1lbW9pemVkCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0
ZW0gaW1wb3J0IHBhdGgKLWZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQgbG9ndXRp
bHMKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IFNjcmlwdEVy
cm9yCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uc3lzdGVtaG9zdCBpbXBvcnQgU3lzdGVt
SG9zdAogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzLnRlc3RfY29uZmlndXJhdGlv
biBpbXBvcnQgVGVzdENvbmZpZ3VyYXRpb24KIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBv
cnQgaW1wb3J0IGNvbmZpZyBhcyBwb3J0X2NvbmZpZwogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVz
dHMucG9ydCBpbXBvcnQgZHJpdmVyCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0IGlt
cG9ydCBodHRwX2xvY2sKK2Zyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQgaW1wb3J0IGlt
YWdlX2RpZmYKK2Zyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQgaW1wb3J0IHNlcnZlcl9w
cm9jZXNzCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5zZXJ2ZXJzIGltcG9ydCBhcGFjaGVf
aHR0cF9zZXJ2ZXIKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnNlcnZlcnMgaW1wb3J0IGh0
dHBfc2VydmVyCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5zZXJ2ZXJzIGltcG9ydCB3ZWJz
b2NrZXRfc2VydmVyCiAKLV9sb2cgPSBsb2d1dGlscy5nZXRfbG9nZ2VyKF9fZmlsZV9fKQorX2xv
ZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQogCiAKICMgRklYTUU6IFRoaXMgY2xhc3Mg
c2hvdWxkIG1lcmdlIHdpdGggV2ViS2l0UG9ydCBub3cgdGhhdCBDaHJvbWl1bSBiZWhhdmVzIG1v
c3RseSBsaWtlIG90aGVyIHdlYmtpdCBwb3J0cy4KQEAgLTExMCw2ICsxMTQsOCBAQCBjbGFzcyBQ
b3J0KG9iamVjdCk6CiAgICAgICAgIHNlbGYuX2hlbHBlciA9IE5vbmUKICAgICAgICAgc2VsZi5f
aHR0cF9zZXJ2ZXIgPSBOb25lCiAgICAgICAgIHNlbGYuX3dlYnNvY2tldF9zZXJ2ZXIgPSBOb25l
CisgICAgICAgIHNlbGYuX2ltYWdlX2RpZmZlciA9IE5vbmUKKyAgICAgICAgc2VsZi5fc2VydmVy
X3Byb2Nlc3NfY29uc3RydWN0b3IgPSBzZXJ2ZXJfcHJvY2Vzcy5TZXJ2ZXJQcm9jZXNzICAjIG92
ZXJyaWRhYmxlIGZvciB0ZXN0aW5nCiAgICAgICAgIHNlbGYuX2h0dHBfbG9jayA9IE5vbmUgICMg
RklYTUU6IFdoeSBkb2VzIHRoaXMgbGl2ZSBvbiB0aGUgcG9ydCBvYmplY3Q/CiAKICAgICAgICAg
IyBQeXRob24ncyBQb3BlbiBoYXMgYSBidWcgdGhhdCBjYXVzZXMgYW55IHBpcGVzIG9wZW5lZCB0
byBhCkBAIC0zMDksOCArMzE1LDE4IEBAIGNsYXNzIFBvcnQob2JqZWN0KToKIAogICAgICAgICB8
dG9sZXJhbmNlfCBzaG91bGQgYmUgYSBwZXJjZW50YWdlIHZhbHVlICgwLjAgLSAxMDAuMCkuCiAg
ICAgICAgIElmIGl0IGlzIG9taXR0ZWQsIHRoZSBwb3J0IGRlZmF1bHQgdG9sZXJhbmNlIHZhbHVl
IGlzIHVzZWQuCisKKyAgICAgICAgSWYgYW4gZXJyb3Igb2NjdXJzIChsaWtlIEltYWdlRGlmZiBp
c24ndCBmb3VuZCwgb3IgY3Jhc2hlcywgd2UgbG9nIGFuIGVycm9yIGFuZCByZXR1cm4gVHJ1ZSAo
Zm9yIGEgZGlmZikuCiAgICAgICAgICIiIgotICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVy
cm9yKCdQb3J0LmRpZmZfaW1hZ2UnKQorICAgICAgICBpZiBub3QgYWN0dWFsX2NvbnRlbnRzIGFu
ZCBub3QgZXhwZWN0ZWRfY29udGVudHM6CisgICAgICAgICAgICByZXR1cm4gKE5vbmUsIDApCisg
ICAgICAgIGlmIG5vdCBhY3R1YWxfY29udGVudHMgb3Igbm90IGV4cGVjdGVkX2NvbnRlbnRzOgor
ICAgICAgICAgICAgcmV0dXJuIChUcnVlLCAwKQorICAgICAgICBpZiBub3Qgc2VsZi5faW1hZ2Vf
ZGlmZmVyOgorICAgICAgICAgICAgc2VsZi5faW1hZ2VfZGlmZmVyID0gaW1hZ2VfZGlmZi5JbWFn
ZURpZmZlcihzZWxmKQorICAgICAgICBzZWxmLnNldF9vcHRpb25fZGVmYXVsdCgndG9sZXJhbmNl
JywgMC4xKQorICAgICAgICB0b2xlcmFuY2UgPSB0b2xlcmFuY2Ugb3Igc2VsZi5nZXRfb3B0aW9u
KCd0b2xlcmFuY2UnKQorICAgICAgICByZXR1cm4gc2VsZi5faW1hZ2VfZGlmZmVyLmRpZmZfaW1h
Z2UoZXhwZWN0ZWRfY29udGVudHMsIGFjdHVhbF9jb250ZW50cywgdG9sZXJhbmNlKQogCiAgICAg
ZGVmIGRpZmZfdGV4dChzZWxmLCBleHBlY3RlZF90ZXh0LCBhY3R1YWxfdGV4dCwgZXhwZWN0ZWRf
ZmlsZW5hbWUsIGFjdHVhbF9maWxlbmFtZSk6CiAgICAgICAgICIiIlJldHVybnMgYSBzdHJpbmcg
Y29udGFpbmluZyB0aGUgZGlmZiBvZiB0aGUgdHdvIHRleHQgc3RyaW5ncwpAQCAtNjU0LDcgKzY3
MCwxMCBAQCBjbGFzcyBQb3J0KG9iamVjdCk6CiAKICAgICBkZWYgc2tpcHBlZF9sYXlvdXRfdGVz
dHMoc2VsZiwgdGVzdF9saXN0KToKICAgICAgICAgIiIiUmV0dXJucyB0aGUgc2V0IG9mIHRlc3Rz
IGZvdW5kIGluIFNraXBwZWQgZmlsZXMuIERvZXMgKm5vdCogaW5jbHVkZSB0ZXN0cyBtYXJrZWQg
YXMgU0tJUCBpbiBleHBlY3RhdGlvbnMgZmlsZXMuIiIiCi0gICAgICAgIHJldHVybiBzZXQoW10p
CisgICAgICAgIHRlc3RzX3RvX3NraXAgPSBzZXQoc2VsZi5fZXhwZWN0YXRpb25zX2Zyb21fc2tp
cHBlZF9maWxlcyhzZWxmLl9za2lwcGVkX2ZpbGVfc2VhcmNoX3BhdGhzKCkpKQorICAgICAgICB0
ZXN0c190b19za2lwLnVwZGF0ZShzZWxmLl90ZXN0c19mb3Jfb3RoZXJfcGxhdGZvcm1zKCkpCisg
ICAgICAgIHRlc3RzX3RvX3NraXAudXBkYXRlKHNlbGYuX3NraXBwZWRfdGVzdHNfZm9yX3Vuc3Vw
cG9ydGVkX2ZlYXR1cmVzKHRlc3RfbGlzdCkpCisgICAgICAgIHJldHVybiB0ZXN0c190b19za2lw
CiAKICAgICBkZWYgX3Rlc3RzX2Zyb21fc2tpcHBlZF9maWxlX2NvbnRlbnRzKHNlbGYsIHNraXBw
ZWRfZmlsZV9jb250ZW50cyk6CiAgICAgICAgIHRlc3RzX3RvX3NraXAgPSBbXQpAQCAtNzgwLDcg
Kzc5OSw5IEBAIGNsYXNzIFBvcnQob2JqZWN0KToKIAogICAgIGRlZiBjbGVhbl91cF90ZXN0X3J1
bihzZWxmKToKICAgICAgICAgIiIiUGVyZm9ybSBwb3J0LXNwZWNpZmljIHdvcmsgYXQgdGhlIGVu
ZCBvZiBhIHRlc3QgcnVuLiIiIgotICAgICAgICBwYXNzCisgICAgICAgIGlmIHNlbGYuX2ltYWdl
X2RpZmZlcjoKKyAgICAgICAgICAgIHNlbGYuX2ltYWdlX2RpZmZlci5zdG9wKCkKKyAgICAgICAg
ICAgIHNlbGYuX2ltYWdlX2RpZmZlciA9IE5vbmUKIAogICAgICMgRklYTUU6IG9zLmVudmlyb24g
YWNjZXNzIHNob3VsZCBiZSBtb3ZlZCB0byBvbnRvIGEgY29tbW9uL3N5c3RlbSBjbGFzcyB0byBi
ZSBtb3JlIGVhc2lseSBtb2NrYWJsZS4KICAgICBkZWYgX3ZhbHVlX29yX2RlZmF1bHRfZnJvbV9l
bnZpcm9uKHNlbGYsIG5hbWUsIGRlZmF1bHQ9Tm9uZSk6CkBAIC0xMjgwLDYgKzEzMDEsMTc2IEBA
IGNsYXNzIFBvcnQob2JqZWN0KToKICAgICAgICAgIyAtLXBpeGVsLXRlc3QtZGlyZWN0b3J5IGlz
IG5vdCBzcGVjaWZpZWQuCiAgICAgICAgIHJldHVybiBUcnVlCiAKKyAgICAjIEZJWE1FOiBFdmVu
dHVhbGx5IHdlIHNob3VsZCBzdGFuZGFyaXplIHBvcnQgbmFtaW5nLCBhbmQgbWFrZSB0aGlzIG1l
dGhvZCBzbWFydCBlbm91Z2gKKyAgICAjIHRvIHVzZSBmb3IgYWxsIHBvcnQgY29uZmlndXJhdGlv
bnMgKGluY2x1ZGluZyBhcmNoaXRlY3R1cmVzLCBncmFwaGljcyB0eXBlcywgZXRjKS4KKyAgICBk
ZWYgX3BvcnRfZmxhZ19mb3Jfc2NyaXB0cyhzZWxmKToKKyAgICAgICAgIyBUaGlzIGlzIG92ZXJy
cmlkZW4gYnkgcG9ydHMgd2hpY2ggbmVlZCBhIGZsYWcgcGFzc2VkIHRvIHNjcmlwdHMgdG8gZGlz
dGluZ3Vpc2ggdGhlIHVzZSBvZiB0aGF0IHBvcnQuCisgICAgICAgICMgRm9yIGV4YW1wbGUgLS1x
dCBvbiBsaW51eCwgc2luY2UgYSB1c2VyIG1pZ2h0IGhhdmUgYm90aCBHdGsgYW5kIFF0IGxpYnJh
cmllcyBpbnN0YWxsZWQuCisgICAgICAgICMgRklYTUU6IENocm9taXVtIHNob3VsZCBvdmVycmlk
ZSB0aGlzIG9uY2UgQ2hyb21pdW1Qb3J0IGlzIGEgV2ViS2l0UG9ydC4KKyAgICAgICAgcmV0dXJu
IE5vbmUKKworICAgICMgVGhpcyBpcyBtb2RlbGVkIGFmdGVyIHdlYmtpdGRpcnMucG0gYXJndW1l
bnRzRm9yQ29uZmlndXJhdGlvbigpIGZyb20gb2xkLXJ1bi13ZWJraXQtdGVzdHMKKyAgICBkZWYg
X2FyZ3VtZW50c19mb3JfY29uZmlndXJhdGlvbihzZWxmKToKKyAgICAgICAgY29uZmlnX2FyZ3Mg
PSBbXQorICAgICAgICBjb25maWdfYXJncy5hcHBlbmQoc2VsZi5fY29uZmlnLmZsYWdfZm9yX2Nv
bmZpZ3VyYXRpb24oc2VsZi5nZXRfb3B0aW9uKCdjb25maWd1cmF0aW9uJykpKQorICAgICAgICAj
IEZJWE1FOiBXZSBtYXkgbmVlZCB0byBhZGQgc3VwcG9ydCBmb3IgcGFzc2luZyAtLTMyLWJpdCBs
aWtlIG9sZC1ydW4td2Via2l0LXRlc3RzIGhhZC4KKyAgICAgICAgcG9ydF9mbGFnID0gc2VsZi5f
cG9ydF9mbGFnX2Zvcl9zY3JpcHRzKCkKKyAgICAgICAgaWYgcG9ydF9mbGFnOgorICAgICAgICAg
ICAgY29uZmlnX2FyZ3MuYXBwZW5kKHBvcnRfZmxhZykKKyAgICAgICAgcmV0dXJuIGNvbmZpZ19h
cmdzCisKKyAgICBkZWYgX3J1bl9zY3JpcHQoc2VsZiwgc2NyaXB0X25hbWUsIGFyZ3M9Tm9uZSwg
aW5jbHVkZV9jb25maWd1cmF0aW9uX2FyZ3VtZW50cz1UcnVlLCBkZWNvZGVfb3V0cHV0PVRydWUs
IGVudj1Ob25lKToKKyAgICAgICAgcnVuX3NjcmlwdF9jb21tYW5kID0gW3NlbGYuX2NvbmZpZy5z
Y3JpcHRfcGF0aChzY3JpcHRfbmFtZSldCisgICAgICAgIGlmIGluY2x1ZGVfY29uZmlndXJhdGlv
bl9hcmd1bWVudHM6CisgICAgICAgICAgICBydW5fc2NyaXB0X2NvbW1hbmQuZXh0ZW5kKHNlbGYu
X2FyZ3VtZW50c19mb3JfY29uZmlndXJhdGlvbigpKQorICAgICAgICBpZiBhcmdzOgorICAgICAg
ICAgICAgcnVuX3NjcmlwdF9jb21tYW5kLmV4dGVuZChhcmdzKQorICAgICAgICBvdXRwdXQgPSBz
ZWxmLl9leGVjdXRpdmUucnVuX2NvbW1hbmQocnVuX3NjcmlwdF9jb21tYW5kLCBjd2Q9c2VsZi5f
Y29uZmlnLndlYmtpdF9iYXNlX2RpcigpLCBkZWNvZGVfb3V0cHV0PWRlY29kZV9vdXRwdXQsIGVu
dj1lbnYpCisgICAgICAgIF9sb2cuZGVidWcoJ091dHB1dCBvZiAlczpcbiVzJyAlIChydW5fc2Ny
aXB0X2NvbW1hbmQsIG91dHB1dCkpCisgICAgICAgIHJldHVybiBvdXRwdXQKKworICAgIGRlZiBf
YnVpbGRfZHJpdmVyKHNlbGYpOgorICAgICAgICBlbnZpcm9ubWVudCA9IHNlbGYuaG9zdC5jb3B5
X2N1cnJlbnRfZW52aXJvbm1lbnQoKQorICAgICAgICBlbnZpcm9ubWVudC5kaXNhYmxlX2djY19z
bWFydHF1b3RlcygpCisgICAgICAgIGVudiA9IGVudmlyb25tZW50LnRvX2RpY3Rpb25hcnkoKQor
CisgICAgICAgICMgRklYTUU6IFdlIGJ1aWxkIGJvdGggRHVtcFJlbmRlclRyZWUgYW5kIFdlYktp
dFRlc3RSdW5uZXIgZm9yCisgICAgICAgICMgV2ViS2l0VGVzdFJ1bm5lciBydW5zIGJlY2F1c2Ug
RHVtcFJlbmRlclRyZWUgc3RpbGwgaW5jbHVkZXMKKyAgICAgICAgIyB0aGUgRHVtcFJlbmRlclRy
ZWVTdXBwb3J0IG1vZHVsZSBhbmQgdGhlIFRlc3ROZXRzY2FwZVBsdWdpbi4KKyAgICAgICAgIyBU
aGVzZSB0d28gcHJvamVjdHMgc2hvdWxkIGJlIGZhY3RvcmVkIG91dCBpbnRvIHRoZWlyIG93bgor
ICAgICAgICAjIHByb2plY3RzLgorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLl9ydW5f
c2NyaXB0KCJidWlsZC1kdW1wcmVuZGVydHJlZSIsIGFyZ3M9c2VsZi5fYnVpbGRfZHJpdmVyX2Zs
YWdzKCksIGVudj1lbnYpCisgICAgICAgICAgICBpZiBzZWxmLmdldF9vcHRpb24oJ3dlYmtpdF90
ZXN0X3J1bm5lcicpOgorICAgICAgICAgICAgICAgIHNlbGYuX3J1bl9zY3JpcHQoImJ1aWxkLXdl
YmtpdHRlc3RydW5uZXIiLCBhcmdzPXNlbGYuX2J1aWxkX2RyaXZlcl9mbGFncygpLCBlbnY9ZW52
KQorICAgICAgICBleGNlcHQgU2NyaXB0RXJyb3IsIGU6CisgICAgICAgICAgICBfbG9nLmVycm9y
KGUubWVzc2FnZV93aXRoX291dHB1dChvdXRwdXRfbGltaXQ9Tm9uZSkpCisgICAgICAgICAgICBy
ZXR1cm4gRmFsc2UKKyAgICAgICAgcmV0dXJuIFRydWUKKworICAgIGRlZiBfYnVpbGRfZHJpdmVy
X2ZsYWdzKHNlbGYpOgorICAgICAgICByZXR1cm4gW10KKworICAgIGRlZiBfdGVzdHNfZm9yX290
aGVyX3BsYXRmb3JtcyhzZWxmKToKKyAgICAgICAgIyBCeSBkZWZhdWx0IHdlIHdpbGwgc2tpcCBh
bnkgZGlyZWN0b3J5IHVuZGVyIExheW91dFRlc3RzL3BsYXRmb3JtCisgICAgICAgICMgdGhhdCBp
c24ndCBpbiBvdXIgYmFzZWxpbmUgc2VhcmNoIHBhdGggKHRoaXMgbWlycm9ycyB3aGF0CisgICAg
ICAgICMgb2xkLXJ1bi13ZWJraXQtdGVzdHMgZG9lcyBpbiBmaW5kVGVzdHNUb1J1bigpKS4KKyAg
ICAgICAgIyBOb3RlIHRoaXMgcmV0dXJucyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS8qLCBub3QgcGxh
dGZvcm0vKi8qLgorICAgICAgICBlbnRyaWVzID0gc2VsZi5fZmlsZXN5c3RlbS5nbG9iKHNlbGYu
X3dlYmtpdF9iYXNlbGluZV9wYXRoKCcqJykpCisgICAgICAgIGRpcnNfdG9fc2tpcCA9IFtdCisg
ICAgICAgIGZvciBlbnRyeSBpbiBlbnRyaWVzOgorICAgICAgICAgICAgaWYgc2VsZi5fZmlsZXN5
c3RlbS5pc2RpcihlbnRyeSkgYW5kIGVudHJ5IG5vdCBpbiBzZWxmLmJhc2VsaW5lX3NlYXJjaF9w
YXRoKCk6CisgICAgICAgICAgICAgICAgYmFzZW5hbWUgPSBzZWxmLl9maWxlc3lzdGVtLmJhc2Vu
YW1lKGVudHJ5KQorICAgICAgICAgICAgICAgIGRpcnNfdG9fc2tpcC5hcHBlbmQoJ3BsYXRmb3Jt
LyVzJyAlIGJhc2VuYW1lKQorICAgICAgICByZXR1cm4gZGlyc190b19za2lwCisKKyAgICBkZWYg
X3J1bnRpbWVfZmVhdHVyZV9saXN0KHNlbGYpOgorICAgICAgICAiIiJJZiBhIHBvcnQgbWFrZXMg
Y2VydGFpbiBmZWF0dXJlcyBhdmFpbGFibGUgb25seSB0aHJvdWdoIHJ1bnRpbWUgZmxhZ3MsIGl0
IGNhbiBvdmVycmlkZSB0aGlzIHJvdXRpbmUgdG8gaW5kaWNhdGUgd2hpY2ggb25lcyBhcmUgYXZh
aWxhYmxlLiIiIgorICAgICAgICByZXR1cm4gTm9uZQorCisgICAgZGVmIG5tX2NvbW1hbmQoc2Vs
Zik6CisgICAgICAgIHJldHVybiAnbm0nCisKKyAgICBkZWYgX21vZHVsZXNfdG9fc2VhcmNoX2Zv
cl9zeW1ib2xzKHNlbGYpOgorICAgICAgICBwYXRoID0gc2VsZi5fcGF0aF90b193ZWJjb3JlX2xp
YnJhcnkoKQorICAgICAgICBpZiBwYXRoOgorICAgICAgICAgICAgcmV0dXJuIFtwYXRoXQorICAg
ICAgICByZXR1cm4gW10KKworICAgIGRlZiBfc3ltYm9sc19zdHJpbmcoc2VsZik6CisgICAgICAg
IHN5bWJvbHMgPSAnJworICAgICAgICBmb3IgcGF0aF90b19tb2R1bGUgaW4gc2VsZi5fbW9kdWxl
c190b19zZWFyY2hfZm9yX3N5bWJvbHMoKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAg
ICAgICBzeW1ib2xzICs9IHNlbGYuX2V4ZWN1dGl2ZS5ydW5fY29tbWFuZChbc2VsZi5ubV9jb21t
YW5kKCksIHBhdGhfdG9fbW9kdWxlXSwgZXJyb3JfaGFuZGxlcj1zZWxmLl9leGVjdXRpdmUuaWdu
b3JlX2Vycm9yKQorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IsIGU6CisgICAgICAgICAgICAg
ICAgX2xvZy53YXJuKCJGYWlsZWQgdG8gcnVuIG5tOiAlcy4gIENhbid0IGRldGVybWluZSBzdXBw
b3J0ZWQgZmVhdHVyZXMgY29ycmVjdGx5LiIgJSBlKQorICAgICAgICByZXR1cm4gc3ltYm9scwor
CisgICAgIyBQb3J0cyB3aGljaCB1c2UgcnVuLXRpbWUgZmVhdHVyZSBkZXRlY3Rpb24gc2hvdWxk
IGRlZmluZSB0aGlzIG1ldGhvZCBhbmQgcmV0dXJuCisgICAgIyBhIGRpY3Rpb25hcnkgbWFwcGlu
ZyBmcm9tIEZlYXR1cmUgTmFtZXMgdG8gc2tpcHBlZCBkaXJlY3RvaXJlcy4gIE5SV1Qgd2lsbAor
ICAgICMgcnVuIER1bXBSZW5kZXJUcmVlIC0tcHJpbnQtc3VwcG9ydGVkLWZlYXR1cmVzIGFuZCBw
YXJzZSB0aGUgb3V0cHV0LgorICAgICMgSWYgdGhlIEZlYXR1cmUgTmFtZXMgYXJlIG5vdCBmb3Vu
ZCBpbiB0aGUgb3V0cHV0LCB0aGUgY29ycmVzcG9uZGluZyBkaXJlY3RvcmllcworICAgICMgd2ls
bCBiZSBza2lwcGVkLgorICAgIGRlZiBfbWlzc2luZ19mZWF0dXJlX3RvX3NraXBwZWRfdGVzdHMo
c2VsZik6CisgICAgICAgICIiIlJldHVybiB0aGUgc3VwcG9ydGVkIGZlYXR1cmUgZGljdGlvbmFy
eS4gS2V5cyBhcmUgZmVhdHVyZSBuYW1lcyBhbmQgdmFsdWVzCisgICAgICAgIGFyZSB0aGUgbGlz
dHMgb2YgZGlyZWN0b3JpZXMgdG8gc2tpcCBpZiB0aGUgZmVhdHVyZSBuYW1lIGlzIG5vdCBtYXRj
aGVkLiIiIgorICAgICAgICAjIEZJWE1FOiBUaGlzIGxpc3QgbWF0Y2hlcyBXZWJLaXRXaW4gYW5k
IHNob3VsZCBiZSBtb3ZlZCBvbnRvIHRoZSBXaW4gcG9ydC4KKyAgICAgICAgcmV0dXJuIHsKKyAg
ICAgICAgICAgICJBY2NlbGVyYXRlZCBDb21wb3NpdGluZyI6IFsiY29tcG9zaXRpbmciXSwKKyAg
ICAgICAgICAgICIzRCBSZW5kZXJpbmciOiBbImFuaW1hdGlvbnMvM2QiLCAidHJhbnNmb3Jtcy8z
ZCJdLAorICAgICAgICB9CisKKyAgICAjIFBvcnRzIHdoaWNoIHVzZSBjb21waWxlLXRpbWUgZmVh
dHVyZSBkZXRlY3Rpb24gc2hvdWxkIGRlZmluZSB0aGlzIG1ldGhvZCBhbmQgcmV0dXJuCisgICAg
IyBhIGRpY3Rpb25hcnkgbWFwcGluZyBmcm9tIHN5bWJvbCBzdWJzdHJpbmdzIHRvIHBvc3NpYmx5
IGRpc2FibGVkIHRlc3QgZGlyZWN0b3JpZXMuCisgICAgIyBXaGVuIHRoZSBzeW1ib2wgc3Vic3Ry
aW5ncyBhcmUgbm90IG1hdGNoZWQsIHRoZSBkaXJlY3RvcmllcyB3aWxsIGJlIHNraXBwZWQuCisg
ICAgIyBJZiBwb3J0cyBkb24ndCBldmVyIGVuYWJsZSBjZXJ0YWluIGZlYXR1cmVzLCB0aGVuIHRo
b3NlIGRpcmVjdG9yaWVzIGNhbiBqdXN0IGJlCisgICAgIyBpbiB0aGUgU2tpcHBlZCBsaXN0IGlu
c3RlYWQgb2YgY29tcGlsZS10aW1lLWNoZWNrZWQgaGVyZS4KKyAgICBkZWYgX21pc3Npbmdfc3lt
Ym9sX3RvX3NraXBwZWRfdGVzdHMoc2VsZik6CisgICAgICAgICIiIlJldHVybiB0aGUgc3VwcG9y
dGVkIGZlYXR1cmUgZGljdGlvbmFyeS4gVGhlIGtleXMgYXJlIHN5bWJvbC1zdWJzdHJpbmdzCisg
ICAgICAgIGFuZCB0aGUgdmFsdWVzIGFyZSB0aGUgbGlzdHMgb2YgZGlyZWN0b3JpZXMgdG8gc2tp
cCBpZiB0aGF0IHN5bWJvbCBpcyBtaXNzaW5nLiIiIgorICAgICAgICByZXR1cm4geworICAgICAg
ICAgICAgIk1hdGhNTEVsZW1lbnQiOiBbIm1hdGhtbCJdLAorICAgICAgICAgICAgIkdyYXBoaWNz
TGF5ZXIiOiBbImNvbXBvc2l0aW5nIl0sCisgICAgICAgICAgICAiV2ViQ29yZUhhczNEUmVuZGVy
aW5nIjogWyJhbmltYXRpb25zLzNkIiwgInRyYW5zZm9ybXMvM2QiXSwKKyAgICAgICAgICAgICJX
ZWJHTFNoYWRlciI6IFsiZmFzdC9jYW52YXMvd2ViZ2wiLCAiY29tcG9zaXRpbmcvd2ViZ2wiLCAi
aHR0cC90ZXN0cy9jYW52YXMvd2ViZ2wiXSwKKyAgICAgICAgICAgICJNSFRNTEFyY2hpdmUiOiBb
Im1odG1sIl0sCisgICAgICAgICAgICAiQ1NTVmFyaWFibGVWYWx1ZSI6IFsiZmFzdC9jc3MvdmFy
aWFibGVzIiwgImluc3BlY3Rvci9zdHlsZXMvdmFyaWFibGVzIl0sCisgICAgICAgIH0KKworICAg
IGRlZiBfaGFzX3Rlc3RfaW5fZGlyZWN0b3JpZXMoc2VsZiwgZGlyZWN0b3J5X2xpc3RzLCB0ZXN0
X2xpc3QpOgorICAgICAgICBpZiBub3QgdGVzdF9saXN0OgorICAgICAgICAgICAgcmV0dXJuIEZh
bHNlCisKKyAgICAgICAgZGlyZWN0b3JpZXMgPSBpdGVydG9vbHMuY2hhaW4uZnJvbV9pdGVyYWJs
ZShkaXJlY3RvcnlfbGlzdHMpCisgICAgICAgIGZvciBkaXJlY3RvcnksIHRlc3QgaW4gaXRlcnRv
b2xzLnByb2R1Y3QoZGlyZWN0b3JpZXMsIHRlc3RfbGlzdCk6CisgICAgICAgICAgICBpZiB0ZXN0
LnN0YXJ0c3dpdGgoZGlyZWN0b3J5KToKKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAg
ICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBfc2tpcHBlZF90ZXN0c19mb3JfdW5zdXBwb3J0
ZWRfZmVhdHVyZXMoc2VsZiwgdGVzdF9saXN0KToKKyAgICAgICAgIyBPbmx5IGNoZWNrIHRoZSBy
dW50aW1lIGZlYXR1cmUgbGlzdCBvZiB0aGVyZSBhcmUgdGVzdHMgaW4gdGhlIHRlc3RfbGlzdCB0
aGF0IG1pZ2h0IGdldCBza2lwcGVkLgorICAgICAgICAjIFRoaXMgaXMgYSBwZXJmb3JtYW5jZSBv
cHRpbWl6YXRpb24gdG8gYXZvaWQgdGhlIHN1YnByb2Nlc3MgY2FsbCB0byBEUlQuCisgICAgICAg
IGlmIHNlbGYuX2hhc190ZXN0X2luX2RpcmVjdG9yaWVzKHNlbGYuX21pc3NpbmdfZmVhdHVyZV90
b19za2lwcGVkX3Rlc3RzKCkudmFsdWVzKCksIHRlc3RfbGlzdCk6CisgICAgICAgICAgICAjIElm
IHRoZSBwb3J0IHN1cHBvcnRzIHJ1bnRpbWUgZmVhdHVyZSBkZXRlY3Rpb24sIGRpc2FibGUgYW55
IHRlc3RzCisgICAgICAgICAgICAjIGZvciBmZWF0dXJlcyBtaXNzaW5nIGZyb20gdGhlIHJ1bnRp
bWUgZmVhdHVyZSBsaXN0LgorICAgICAgICAgICAgc3VwcG9ydGVkX2ZlYXR1cmVfbGlzdCA9IHNl
bGYuX3J1bnRpbWVfZmVhdHVyZV9saXN0KCkKKyAgICAgICAgICAgICMgSWYgX3J1bnRpbWVfZmVh
dHVyZV9saXN0IHJldHVybnMgYSBub24tTm9uZSB2YWx1ZSwgdGhlbiBwcmVmZXIKKyAgICAgICAg
ICAgICMgcnVudGltZSBmZWF0dXJlIGRldGVjdGlvbiBvdmVyIHN0YXRpYyBmZWF0dXJlIGRldGVj
dGlvbi4KKyAgICAgICAgICAgIGlmIHN1cHBvcnRlZF9mZWF0dXJlX2xpc3QgaXMgbm90IE5vbmU6
CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlZHVjZShvcGVyYXRvci5hZGQsIFtkaXJlY3Rvcmll
cyBmb3IgZmVhdHVyZSwgZGlyZWN0b3JpZXMgaW4gc2VsZi5fbWlzc2luZ19mZWF0dXJlX3RvX3Nr
aXBwZWRfdGVzdHMoKS5pdGVtcygpIGlmIGZlYXR1cmUgbm90IGluIHN1cHBvcnRlZF9mZWF0dXJl
X2xpc3RdKQorCisgICAgICAgICMgT25seSBjaGVjayB0aGUgc3ltYm9scyBvZiB0aGVyZSBhcmUg
dGVzdHMgaW4gdGhlIHRlc3RfbGlzdCB0aGF0IG1pZ2h0IGdldCBza2lwcGVkLgorICAgICAgICAj
IFRoaXMgaXMgYSBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24gdG8gYXZvaWQgdGhlIGNhbGxpbmcg
bm0uCisgICAgICAgIGlmIHNlbGYuX2hhc190ZXN0X2luX2RpcmVjdG9yaWVzKHNlbGYuX21pc3Np
bmdfc3ltYm9sX3RvX3NraXBwZWRfdGVzdHMoKS52YWx1ZXMoKSwgdGVzdF9saXN0KToKKyAgICAg
ICAgICAgICMgUnVudGltZSBmZWF0dXJlIGRldGVjdGlvbiBub3Qgc3VwcG9ydGVkLCBmYWxsYmFj
ayB0byBzdGF0aWMgZGVjdGVjdGlvbjoKKyAgICAgICAgICAgICMgRGlzYWJsZSBhbnkgdGVzdHMg
Zm9yIHN5bWJvbHMgbWlzc2luZyBmcm9tIHRoZSBleGVjdXRhYmxlIG9yIGxpYnJhcmllcy4KKyAg
ICAgICAgICAgIHN5bWJvbHNfc3RyaW5nID0gc2VsZi5fc3ltYm9sc19zdHJpbmcoKQorICAgICAg
ICAgICAgaWYgc3ltYm9sc19zdHJpbmcgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgcmV0
dXJuIHJlZHVjZShvcGVyYXRvci5hZGQsIFtkaXJlY3RvcmllcyBmb3Igc3ltYm9sX3N1YnN0cmlu
ZywgZGlyZWN0b3JpZXMgaW4gc2VsZi5fbWlzc2luZ19zeW1ib2xfdG9fc2tpcHBlZF90ZXN0cygp
Lml0ZW1zKCkgaWYgc3ltYm9sX3N1YnN0cmluZyBub3QgaW4gc3ltYm9sc19zdHJpbmddLCBbXSkK
KworICAgICAgICAjIEZhaWxlZCB0byBnZXQgYW55IHJ1bnRpbWUgb3Igc3ltYm9sIGluZm9ybWF0
aW9uLCBkb24ndCBza2lwIGFueSB0ZXN0cy4KKyAgICAgICAgcmV0dXJuIFtdCisKKyAgICBkZWYg
X3drMl9wb3J0X25hbWUoc2VsZik6CisgICAgICAgICMgQnkgY3VycmVudCBjb252ZW50aW9uLCB0
aGUgV2ViS2l0MiBuYW1lIGlzIGFsd2F5cyBtYWMtd2syLCB3aW4td2syLCBub3QgbWFjLWxlb3Bh
cmQtd2syLCBldGMsCisgICAgICAgICMgZXhjZXB0IGZvciBRdCBiZWNhdXNlIFdlYktpdDIgaXMg
b25seSBzdXBwb3J0ZWQgYnkgUXQgNS4wICh0aGVyZWZvcmU6IHF0LTUuMC13azIpLgorICAgICAg
ICByZXR1cm4gIiVzLXdrMiIgJSBzZWxmLnBvcnRfbmFtZQorCisgICAgZGVmIF9za2lwcGVkX2Zp
bGVfc2VhcmNoX3BhdGhzKHNlbGYpOgorICAgICAgICAjIFVubGlrZSBiYXNlbGluZV9zZWFyY2hf
cGF0aCwgd2Ugb25seSB3YW50IHRvIHNlYXJjaCBbV0syLVBPUlQsIFBPUlQtVkVSU0lPTiwgUE9S
VF0gYW5kIGFueSBkaXJlY3RvcmllcworICAgICAgICAjIGluY2x1ZGVkIHZpYSAtLWFkZGl0aW9u
YWwtcGxhdGZvcm0tZGlyZWN0b3J5LCBub3QgdGhlIGZ1bGwgY2FzYWRlLgorICAgICAgICAjIE5v
dGUgb3JkZXIgZG9lc24ndCBtYXR0ZXIgc2luY2UgdGhlIFNraXBwZWQgZmlsZSBjb250ZW50cyBh
cmUgYWxsIGNvbWJpbmVkLgorICAgICAgICBzZWFyY2hfcGF0aHMgPSBzZXQoW3NlbGYucG9ydF9u
YW1lXSkKKyAgICAgICAgaWYgJ2Z1dHVyZScgbm90IGluIHNlbGYubmFtZSgpOgorICAgICAgICAg
ICAgc2VhcmNoX3BhdGhzLmFkZChzZWxmLm5hbWUoKSkKKyAgICAgICAgaWYgc2VsZi5nZXRfb3B0
aW9uKCd3ZWJraXRfdGVzdF9ydW5uZXInKToKKyAgICAgICAgICAgICMgQmVjYXVzZSBuZWFybHkg
YWxsIG9mIHRoZSBza2lwcGVkIHRlc3RzIGZvciBXZWJLaXQgMiBhcmUgZHVlIHRvIGNyb3NzLXBs
YXRmb3JtCisgICAgICAgICAgICAjIGlzc3VlcywgYWxsIHdrMiBwb3J0cyBzaGFyZSBhIHNraXBw
ZWQgbGlzdCB1bmRlciBwbGF0Zm9ybS93azIuCisgICAgICAgICAgICBzZWFyY2hfcGF0aHMudXBk
YXRlKFtzZWxmLl93azJfcG9ydF9uYW1lKCksICJ3azIiXSkKKyAgICAgICAgc2VhcmNoX3BhdGhz
LnVwZGF0ZShzZWxmLmdldF9vcHRpb24oImFkZGl0aW9uYWxfcGxhdGZvcm1fZGlyZWN0b3J5Iiwg
W10pKQorCisgICAgICAgIHJldHVybiBzZWFyY2hfcGF0aHMKKwogCiBjbGFzcyBWaXJ0dWFsVGVz
dFN1aXRlKG9iamVjdCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIGJhc2UsIGFyZ3Ms
IHRlc3RzPU5vbmUpOgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9jaHJvbWl1bS5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvY2hyb21pdW0ucHkKaW5kZXggYmY1NDEyZGIyODhiZmU0ZDUwNjhlNjhjYmYzODVl
YTg3OGI4YzFiOC4uMjRjZGViM2Y3OGE0MGQ1OGExNmVhMTI1Mjk5OGMwYjA3NDgzMTk1MiAxMDA3
NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1
bS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9t
aXVtLnB5CkBAIC00MiwxMyArNDIsMTIgQEAgZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtIGlt
cG9ydCBleGVjdXRpdmUKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5wYXRoIGltcG9ydCBj
eWdwYXRoCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5tb2RlbHMudGVzdF9jb25maWd1cmF0
aW9uIGltcG9ydCBUZXN0Q29uZmlndXJhdGlvbgogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMu
cG9ydC5iYXNlIGltcG9ydCBQb3J0LCBWaXJ0dWFsVGVzdFN1aXRlCi1mcm9tIHdlYmtpdHB5Lmxh
eW91dF90ZXN0cy5wb3J0LndlYmtpdCBpbXBvcnQgV2ViS2l0UG9ydAogCiAKIF9sb2cgPSBsb2dn
aW5nLmdldExvZ2dlcihfX25hbWVfXykKIAogCi1jbGFzcyBDaHJvbWl1bVBvcnQoV2ViS2l0UG9y
dCk6CitjbGFzcyBDaHJvbWl1bVBvcnQoUG9ydCk6CiAgICAgIiIiQWJzdHJhY3QgYmFzZSBjbGFz
cyBmb3IgQ2hyb21pdW0gaW1wbGVtZW50YXRpb25zIG9mIHRoZSBQb3J0IGNsYXNzLiIiIgogCiAg
ICAgQUxMX1NZU1RFTVMgPSAoCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2FuZHJvaWQucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2FuZHJvaWQucHkKaW5kZXggMGZiY2Q2NmFi
Y2RkYTU3NzhiMmM3Mzk3MjUyMzZhNTBkMzY2NDA2My4uNzFmN2M3M2VkNzEzNzQyMjdiY2E1ODg1
ZDY2ODhkOTQzMjI2MTYzZiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9hbmRyb2lkLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fYW5kcm9pZC5weQpAQCAtMzcsNyArMzcs
NiBAQCBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0IGltcG9ydCBjaHJvbWl1bQogZnJv
bSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydCBpbXBvcnQgZHJpdmVyCiBmcm9tIHdlYmtpdHB5
LmxheW91dF90ZXN0cy5wb3J0IGltcG9ydCBmYWN0b3J5CiBmcm9tIHdlYmtpdHB5LmxheW91dF90
ZXN0cy5wb3J0IGltcG9ydCBzZXJ2ZXJfcHJvY2VzcwotZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVz
dHMucG9ydCBpbXBvcnQgd2Via2l0CiAKIAogX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFt
ZV9fKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9jaHJvbWl1bV9wb3J0X3Rlc3RjYXNlLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9wb3J0X3Rlc3RjYXNlLnB5CmluZGV4IDY5N2MyNzI0MmI3
ZDdmOTQ1YTEyNGM5YzQxNTNjODY3MWI1ODQxOTQuLjdkNGMyMzVmMzA5NjgxZjNkZjRkYTFjZWQw
YjE0Y2IwYjI1ZDNiYmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvY2hyb21pdW1fcG9ydF90ZXN0Y2FzZS5weQorKysgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3BvcnRfdGVzdGNhc2UucHkKQEAg
LTQ0LDYgKzQ0LDEwIEBAIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQgaW1wb3J0IHBv
cnRfdGVzdGNhc2UKIAogY2xhc3MgQ2hyb21pdW1Qb3J0VGVzdENhc2UocG9ydF90ZXN0Y2FzZS5Q
b3J0VGVzdENhc2UpOgogCisgICAgZGVmIHRlc3RfY2hlY2tfYnVpbGQoc2VsZik6CisgICAgICAg
IHBvcnQgPSBzZWxmLm1ha2VfcG9ydCgpCisgICAgICAgIHBvcnQuY2hlY2tfYnVpbGQobmVlZHNf
aHR0cD1UcnVlKQorCiAgICAgZGVmIHRlc3RfZGVmYXVsdF90aW1lb3V0X21zKHNlbGYpOgogICAg
ICAgICBzZWxmLmFzc2VydEVxdWFscyhzZWxmLm1ha2VfcG9ydChvcHRpb25zPU1vY2tPcHRpb25z
KGNvbmZpZ3VyYXRpb249J1JlbGVhc2UnKSkuZGVmYXVsdF90aW1lb3V0X21zKCksIDYwMDApCiAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNlbGYubWFrZV9wb3J0KG9wdGlvbnM9TW9ja09wdGlv
bnMoY29uZmlndXJhdGlvbj0nRGVidWcnKSkuZGVmYXVsdF90aW1lb3V0X21zKCksIDEyMDAwKQpk
aWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9kcml2
ZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2RyaXZlci5w
eQppbmRleCBmZmMxYzE5NDVkNjg5Y2NkYjIwYjQ5ZWZlNzhjMDFjMDkxMjBkMzM4Li5hZjU3NzQw
ZWQ5MjMyYTY0MTExNWQ5M2E3MDI3Mjc2NmQxOWFjODAwIDEwMDY0NAotLS0gYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2RyaXZlci5weQorKysgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2RyaXZlci5weQpAQCAtMzYsOCArMzYsNiBA
QCBpbXBvcnQgdGltZQogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0gaW1wb3J0IHBhdGgK
IAotZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydCBpbXBvcnQgc2VydmVyX3Byb2Nlc3MK
LQogCiBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCiAKQEAgLTExNSw5ICsxMTMs
NiBAQCBjbGFzcyBEcml2ZXIob2JqZWN0KToKICAgICAgICAgc2VsZi5fd29ya2VyX251bWJlciA9
IHdvcmtlcl9udW1iZXIKICAgICAgICAgc2VsZi5fbm9fdGltZW91dCA9IG5vX3RpbWVvdXQKIAot
ICAgICAgICAjIG92ZXJyaWRhYmxlIGZvciB0ZXN0aW5nLgotICAgICAgICBzZWxmLl9zZXJ2ZXJf
cHJvY2Vzc19jb25zdHJ1Y3RvciA9IHNlcnZlcl9wcm9jZXNzLlNlcnZlclByb2Nlc3MKLQogICAg
ICAgICBzZWxmLl9kcml2ZXJfdGVtcGRpciA9IE5vbmUKICAgICAgICAgIyBXZWJLaXRUZXN0UnVu
bmVyIGNhbiByZXBvcnQgYmFjayBzdWJwcm9jZXNzIGNyYXNoZXMgYnkgcHJpbnRpbmcKICAgICAg
ICAgIyAiI0NSQVNIRUQgLSBQUk9DRVNTTkFNRSIuICBTaW5jZSB0aG9zZSBjYW4gaGFwcGVuIGF0
IGFueSB0aW1lCkBAIC0yNzEsNyArMjY2LDcgQEAgY2xhc3MgRHJpdmVyKG9iamVjdCk6CiAgICAg
ICAgIGVudmlyb25tZW50WydMT0NBTF9SRVNPVVJDRV9ST09UJ10gPSBzZWxmLl9wb3J0LmxheW91
dF90ZXN0c19kaXIoKQogICAgICAgICBzZWxmLl9jcmFzaGVkX3Byb2Nlc3NfbmFtZSA9IE5vbmUK
ICAgICAgICAgc2VsZi5fY3Jhc2hlZF9waWQgPSBOb25lCi0gICAgICAgIHNlbGYuX3NlcnZlcl9w
cm9jZXNzID0gc2VsZi5fc2VydmVyX3Byb2Nlc3NfY29uc3RydWN0b3Ioc2VsZi5fcG9ydCwgc2Vy
dmVyX25hbWUsIHNlbGYuY21kX2xpbmUocGl4ZWxfdGVzdHMsIHBlcl90ZXN0X2FyZ3MpLCBlbnZp
cm9ubWVudCkKKyAgICAgICAgc2VsZi5fc2VydmVyX3Byb2Nlc3MgPSBzZWxmLl9wb3J0Ll9zZXJ2
ZXJfcHJvY2Vzc19jb25zdHJ1Y3RvcihzZWxmLl9wb3J0LCBzZXJ2ZXJfbmFtZSwgc2VsZi5jbWRf
bGluZShwaXhlbF90ZXN0cywgcGVyX3Rlc3RfYXJncyksIGVudmlyb25tZW50KQogICAgICAgICBz
ZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5zdGFydCgpCiAKICAgICBkZWYgc3RvcChzZWxmKToKZGlmZiAt
LWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZHJpdmVyX3Vu
aXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9kcml2
ZXJfdW5pdHRlc3QucHkKaW5kZXggZDcxMjAyM2UzYWNmMGI2NTdjMzAxNTAyYzM2Njg4MjAzNGEz
YjA2Yi4uNzA1YzFiYjdiNzg4ZDRhMmVkNGM5MGE3NTdkODYxNGU2OGVhYjkyZiAxMDA2NDQKLS0t
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9kcml2ZXJfdW5pdHRl
c3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9kcml2
ZXJfdW5pdHRlc3QucHkKQEAgLTMxLDkgKzMxLDEwIEBAIGltcG9ydCB1bml0dGVzdAogZnJvbSB3
ZWJraXRweS5jb21tb24uc3lzdGVtLnN5c3RlbWhvc3RfbW9jayBpbXBvcnQgTW9ja1N5c3RlbUhv
c3QKIAogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydCBpbXBvcnQgUG9ydCwgRHJpdmVy
LCBEcml2ZXJPdXRwdXQKK2Zyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQuc2VydmVyX3By
b2Nlc3NfbW9jayBpbXBvcnQgTW9ja1NlcnZlclByb2Nlc3MKIAogIyBGSVhNRTogcmVtb3ZlIHRo
ZSBkZXBlbmRlbmN5IG9uIFRlc3RXZWJLaXRQb3J0Ci1mcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0
cy5wb3J0LndlYmtpdF91bml0dGVzdCBpbXBvcnQgVGVzdFdlYktpdFBvcnQKK2Zyb20gd2Via2l0
cHkubGF5b3V0X3Rlc3RzLnBvcnQucG9ydF90ZXN0Y2FzZSBpbXBvcnQgVGVzdFdlYktpdFBvcnQK
IAogCiBjbGFzcyBEcml2ZXJPdXRwdXRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTIzMiw4
ICsyMzMsOCBAQCBjbGFzcyBEcml2ZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRl
ZiB0ZXN0X3N0b3BfY2xlYW5zX3VwX3Byb3Blcmx5KHNlbGYpOgogICAgICAgICBwb3J0ID0gVGVz
dFdlYktpdFBvcnQoKQorICAgICAgICBwb3J0Ll9zZXJ2ZXJfcHJvY2Vzc19jb25zdHJ1Y3RvciA9
IE1vY2tTZXJ2ZXJQcm9jZXNzCiAgICAgICAgIGRyaXZlciA9IERyaXZlcihwb3J0LCAwLCBwaXhl
bF90ZXN0cz1UcnVlKQotICAgICAgICBkcml2ZXIuX3NlcnZlcl9wcm9jZXNzX2NvbnN0cnVjdG9y
ID0gTW9ja1NlcnZlclByb2Nlc3MKICAgICAgICAgZHJpdmVyLnN0YXJ0KFRydWUsIFtdKQogICAg
ICAgICBsYXN0X3RtcGRpciA9IHBvcnQuX2ZpbGVzeXN0ZW0ubGFzdF90bXBkaXIKICAgICAgICAg
c2VsZi5hc3NlcnROb3RFcXVhbHMobGFzdF90bXBkaXIsIE5vbmUpCkBAIC0yNDIsOCArMjQzLDgg
QEAgY2xhc3MgRHJpdmVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF90
d29fc3RhcnRzX2NsZWFuc191cF9wcm9wZXJseShzZWxmKToKICAgICAgICAgcG9ydCA9IFRlc3RX
ZWJLaXRQb3J0KCkKKyAgICAgICAgcG9ydC5fc2VydmVyX3Byb2Nlc3NfY29uc3RydWN0b3IgPSBN
b2NrU2VydmVyUHJvY2VzcwogICAgICAgICBkcml2ZXIgPSBEcml2ZXIocG9ydCwgMCwgcGl4ZWxf
dGVzdHM9VHJ1ZSkKLSAgICAgICAgZHJpdmVyLl9zZXJ2ZXJfcHJvY2Vzc19jb25zdHJ1Y3RvciA9
IE1vY2tTZXJ2ZXJQcm9jZXNzCiAgICAgICAgIGRyaXZlci5zdGFydChUcnVlLCBbXSkKICAgICAg
ICAgbGFzdF90bXBkaXIgPSBwb3J0Ll9maWxlc3lzdGVtLmxhc3RfdG1wZGlyCiAgICAgICAgIGRy
aXZlci5fc3RhcnQoVHJ1ZSwgW10pCkBAIC0yNTEsNTAgKzI1MiwxMSBAQCBjbGFzcyBEcml2ZXJU
ZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X3N0YXJ0X2FjdHVhbGx5X3N0
YXJ0cyhzZWxmKToKICAgICAgICAgcG9ydCA9IFRlc3RXZWJLaXRQb3J0KCkKKyAgICAgICAgcG9y
dC5fc2VydmVyX3Byb2Nlc3NfY29uc3RydWN0b3IgPSBNb2NrU2VydmVyUHJvY2VzcwogICAgICAg
ICBkcml2ZXIgPSBEcml2ZXIocG9ydCwgMCwgcGl4ZWxfdGVzdHM9VHJ1ZSkKLSAgICAgICAgZHJp
dmVyLl9zZXJ2ZXJfcHJvY2Vzc19jb25zdHJ1Y3RvciA9IE1vY2tTZXJ2ZXJQcm9jZXNzCiAgICAg
ICAgIGRyaXZlci5zdGFydChUcnVlLCBbXSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGRyaXZl
ci5fc2VydmVyX3Byb2Nlc3Muc3RhcnRlZCkKIAogCi1jbGFzcyBNb2NrU2VydmVyUHJvY2Vzcyhv
YmplY3QpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwb3J0X29iaj1Ob25lLCBuYW1lPU5vbmUs
IGNtZD1Ob25lLCBlbnY9Tm9uZSwgdW5pdmVyc2FsX25ld2xpbmVzPUZhbHNlLCBsaW5lcz1Ob25l
KToKLSAgICAgICAgc2VsZi50aW1lZF9vdXQgPSBGYWxzZQotICAgICAgICBzZWxmLmxpbmVzID0g
bGluZXMgb3IgW10KLSAgICAgICAgc2VsZi5jcmFzaGVkID0gRmFsc2UKLSAgICAgICAgc2VsZi5z
dGFydGVkID0gRmFsc2UKLQotICAgIGRlZiBoYXNfY3Jhc2hlZChzZWxmKToKLSAgICAgICAgcmV0
dXJuIHNlbGYuY3Jhc2hlZAotCi0gICAgZGVmIHJlYWRfc3Rkb3V0X2xpbmUoc2VsZiwgZGVhZGxp
bmUpOgotICAgICAgICByZXR1cm4gc2VsZi5saW5lcy5wb3AoMCkgKyAiXG4iCi0KLSAgICBkZWYg
cmVhZF9zdGRvdXQoc2VsZiwgZGVhZGxpbmUsIHNpemUpOgotICAgICAgICBmaXJzdF9saW5lID0g
c2VsZi5saW5lc1swXQotICAgICAgICBpZiBzaXplID4gbGVuKGZpcnN0X2xpbmUpOgotICAgICAg
ICAgICAgc2VsZi5saW5lcy5wb3AoMCkKLSAgICAgICAgICAgIHJlbWFpbmluZ19zaXplID0gc2l6
ZSAtIGxlbihmaXJzdF9saW5lKSAtIDEKLSAgICAgICAgICAgIGlmIG5vdCByZW1haW5pbmdfc2l6
ZToKLSAgICAgICAgICAgICAgICByZXR1cm4gZmlyc3RfbGluZSArICJcbiIKLSAgICAgICAgICAg
IHJldHVybiBmaXJzdF9saW5lICsgIlxuIiArIHNlbGYucmVhZF9zdGRvdXQoZGVhZGxpbmUsIHJl
bWFpbmluZ19zaXplKQotICAgICAgICByZXN1bHQgPSBzZWxmLmxpbmVzWzBdWzpzaXplXQotICAg
ICAgICBzZWxmLmxpbmVzWzBdID0gc2VsZi5saW5lc1swXVtzaXplOl0KLSAgICAgICAgcmV0dXJu
IHJlc3VsdAotCi0gICAgZGVmIHJlYWRfZWl0aGVyX3N0ZG91dF9vcl9zdGRlcnJfbGluZShzZWxm
LCBkZWFkbGluZSk6Ci0gICAgICAgICMgRklYTUU6IFdlIHNob3VsZCBoYXZlIHRlc3RzIHdoaWNo
IGludGVybWl4IHN0ZGVyciBhbmQgc3Rkb3V0IGxpbmVzLgotICAgICAgICByZXR1cm4gc2VsZi5y
ZWFkX3N0ZG91dF9saW5lKGRlYWRsaW5lKSwgTm9uZQotCi0gICAgZGVmIHN0YXJ0KHNlbGYpOgot
ICAgICAgICBzZWxmLnN0YXJ0ZWQgPSBUcnVlCi0KLSAgICBkZWYgc3RvcChzZWxmLCBraWxsX2Rp
cmVjdGx5PUZhbHNlKToKLSAgICAgICAgcmV0dXJuCi0KLSAgICBkZWYga2lsbChzZWxmKToKLSAg
ICAgICAgcmV0dXJuCi0KLQogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB1bml0dGVz
dC5tYWluKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvZWZsLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9l
ZmwucHkKaW5kZXggNDc1OGY3YTY5MzNjNjc5NmY5NDMxNGZkZmZjOGFjOGY4NWFkZmM5Yy4uMjVh
ODFkMmRhZDFiOTcwNDU5NDBhZTllMjEwMjRjNGUxZTlhMWJjMiAxMDA2NDQKLS0tIGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9lZmwucHkKKysrIGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9lZmwucHkKQEAgLTI3LDIwICsyNywxNiBA
QAogCiAiIiJXZWJLaXQgRWZsIGltcGxlbWVudGF0aW9uIG9mIHRoZSBQb3J0IGludGVyZmFjZS4i
IiIKIAotaW1wb3J0IGxvZ2dpbmcKLWltcG9ydCBzaWduYWwKLWltcG9ydCBzdWJwcm9jZXNzCi0K
IGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscy50ZXN0X2NvbmZpZ3VyYXRpb24gaW1w
b3J0IFRlc3RDb25maWd1cmF0aW9uCi1mcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0Lndl
YmtpdCBpbXBvcnQgV2ViS2l0UG9ydAorZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC5i
YXNlIGltcG9ydCBQb3J0CiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0LnB1bHNlYXVk
aW9fc2FuaXRpemVyIGltcG9ydCBQdWxzZUF1ZGlvU2FuaXRpemVyCiAKIAotY2xhc3MgRWZsUG9y
dChXZWJLaXRQb3J0LCBQdWxzZUF1ZGlvU2FuaXRpemVyKToKK2NsYXNzIEVmbFBvcnQoUG9ydCwg
UHVsc2VBdWRpb1Nhbml0aXplcik6CiAgICAgcG9ydF9uYW1lID0gJ2VmbCcKIAogICAgIGRlZiBf
X2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgotICAgICAgICBXZWJLaXRQb3J0Ll9faW5p
dF9fKHNlbGYsICphcmdzLCAqKmt3YXJncykKKyAgICAgICAgc3VwZXIoRWZsUG9ydCwgc2VsZiku
X19pbml0X18oKmFyZ3MsICoqa3dhcmdzKQogCiAgICAgICAgIHNlbGYuX2poYnVpbGRfd3JhcHBl
cl9wYXRoID0gc2VsZi5wYXRoX2Zyb21fd2Via2l0X2Jhc2UoJ1Rvb2xzJywgJ2VmbCcsICdydW4t
d2l0aC1qaGJ1aWxkJykKIApAQCAtNzIsNiArNjgsNyBAQCBjbGFzcyBFZmxQb3J0KFdlYktpdFBv
cnQsIFB1bHNlQXVkaW9TYW5pdGl6ZXIpOgogICAgICAgICByZXR1cm4gc3VwZXIoRWZsUG9ydCwg
c2VsZikuZGVmYXVsdF90aW1lb3V0X21zKCkKIAogICAgIGRlZiBjbGVhbl91cF90ZXN0X3J1bihz
ZWxmKToKKyAgICAgICAgc3VwZXIoRWZsUG9ydCwgc2VsZikuY2xlYW5fdXBfdGVzdF9ydW4oKQog
ICAgICAgICBzZWxmLl9yZXN0b3JlX3B1bHNlYXVkaW9fbW9kdWxlKCkKIAogICAgIGRlZiBfZ2Vu
ZXJhdGVfYWxsX3Rlc3RfY29uZmlndXJhdGlvbnMoc2VsZik6CmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2d0ay5weSBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZ3RrLnB5CmluZGV4IGViYjc2MWJiZDI1MjgxYjdl
ZmU3ZDU0ZGJmNTNhYjk0NDczMTNmZDUuLmZlZDBiN2E0NDBlZTA4Y2MzMWJkYWExYjVkODRlOWE1
Y2MyNzVmMDkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvZ3RrLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvZ3RrLnB5CkBAIC0yNiwxOSArMjYsMTYgQEAKICMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAKLWltcG9ydCBsb2dnaW5nCiBpbXBvcnQgb3MKLWltcG9ydCBzaWduYWwKIGltcG9ydCBz
dWJwcm9jZXNzCiAKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscy50ZXN0X2NvbmZp
Z3VyYXRpb24gaW1wb3J0IFRlc3RDb25maWd1cmF0aW9uCi1mcm9tIHdlYmtpdHB5LmxheW91dF90
ZXN0cy5wb3J0LnNlcnZlcl9wcm9jZXNzIGltcG9ydCBTZXJ2ZXJQcm9jZXNzCi1mcm9tIHdlYmtp
dHB5LmxheW91dF90ZXN0cy5wb3J0LndlYmtpdCBpbXBvcnQgV2ViS2l0UG9ydAorZnJvbSB3ZWJr
aXRweS5sYXlvdXRfdGVzdHMucG9ydC5iYXNlIGltcG9ydCBQb3J0CiBmcm9tIHdlYmtpdHB5Lmxh
eW91dF90ZXN0cy5wb3J0LnB1bHNlYXVkaW9fc2FuaXRpemVyIGltcG9ydCBQdWxzZUF1ZGlvU2Fu
aXRpemVyCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0Lnh2ZmJkcml2ZXIgaW1wb3J0
IFh2ZmJEcml2ZXIKLWZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0
IEV4ZWN1dGl2ZQogCi1jbGFzcyBHdGtQb3J0KFdlYktpdFBvcnQsIFB1bHNlQXVkaW9TYW5pdGl6
ZXIpOgorCitjbGFzcyBHdGtQb3J0KFBvcnQsIFB1bHNlQXVkaW9TYW5pdGl6ZXIpOgogICAgIHBv
cnRfbmFtZSA9ICJndGsiCiAKICAgICBkZWYgX3BvcnRfZmxhZ19mb3Jfc2NyaXB0cyhzZWxmKToK
QEAgLTUxLDEwICs0OCwxMSBAQCBjbGFzcyBHdGtQb3J0KFdlYktpdFBvcnQsIFB1bHNlQXVkaW9T
YW5pdGl6ZXIpOgogICAgICAgICBzZWxmLl91bmxvYWRfcHVsc2VhdWRpb19tb2R1bGUoKQogCiAg
ICAgZGVmIGNsZWFuX3VwX3Rlc3RfcnVuKHNlbGYpOgorICAgICAgICBzdXBlcihHdGtQb3J0LCBz
ZWxmKS5jbGVhbl91cF90ZXN0X3J1bigpCiAgICAgICAgIHNlbGYuX3Jlc3RvcmVfcHVsc2VhdWRp
b19tb2R1bGUoKQogCiAgICAgZGVmIHNldHVwX2Vudmlyb25fZm9yX3NlcnZlcihzZWxmLCBzZXJ2
ZXJfbmFtZT1Ob25lKToKLSAgICAgICAgZW52aXJvbm1lbnQgPSBXZWJLaXRQb3J0LnNldHVwX2Vu
dmlyb25fZm9yX3NlcnZlcihzZWxmLCBzZXJ2ZXJfbmFtZSkKKyAgICAgICAgZW52aXJvbm1lbnQg
PSBzdXBlcihHdGtQb3J0LCBzZWxmKS5zZXR1cF9lbnZpcm9uX2Zvcl9zZXJ2ZXIoc2VydmVyX25h
bWUpCiAgICAgICAgIGVudmlyb25tZW50WydHVEtfTU9EVUxFUyddID0gJ2dhaWwnCiAgICAgICAg
IGVudmlyb25tZW50WydHU0VUVElOR1NfQkFDS0VORCddID0gJ21lbW9yeScKICAgICAgICAgZW52
aXJvbm1lbnRbJ0xJQk9WRVJMQVlfU0NST0xMQkFSJ10gPSAnMCcKQEAgLTExMyw3ICsxMTEsNyBA
QCBjbGFzcyBHdGtQb3J0KFdlYktpdFBvcnQsIFB1bHNlQXVkaW9TYW5pdGl6ZXIpOgogICAgICAg
ICByZXR1cm4gTm9uZQogCiAgICAgIyBGSVhNRTogV2Ugc2hvdWxkIGZpbmQgYSB3YXkgdG8gc2hh
cmUgdGhpcyBpbXBsbWVudGF0aW9uIHdpdGggR3RrLAotICAgICMgb3IgdGVhY2ggcnVuLWxhdW5j
aGVyIGhvdyB0byBjYWxsIHJ1bi1zYWZhcmkgYW5kIG1vdmUgdGhpcyBkb3duIHRvIFdlYktpdFBv
cnQuCisgICAgIyBvciB0ZWFjaCBydW4tbGF1bmNoZXIgaG93IHRvIGNhbGwgcnVuLXNhZmFyaSBh
bmQgbW92ZSB0aGlzIGRvd24gdG8gUG9ydC4KICAgICBkZWYgc2hvd19yZXN1bHRzX2h0bWxfZmls
ZShzZWxmLCByZXN1bHRzX2ZpbGVuYW1lKToKICAgICAgICAgcnVuX2xhdW5jaGVyX2FyZ3MgPSBb
ImZpbGU6Ly8lcyIgJSByZXN1bHRzX2ZpbGVuYW1lXQogICAgICAgICBpZiBzZWxmLmdldF9vcHRp
b24oJ3dlYmtpdF90ZXN0X3J1bm5lcicpOgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcG9ydC9pbWFnZV9kaWZmLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcG9ydC9pbWFnZV9kaWZmLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZmMDU5YmQw
YjNiZTk5MjY4NDZkMjNhYTIyMTNlMzJkZWZjNzlmODIKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2ltYWdlX2RpZmYucHkKQEAgLTAs
MCArMSwxMTcgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIyBDb3B5cmlnaHQgKEMpIDIwMTAg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDEwIEdh
Ym9yIFJhcGNzYW55aSA8cmdhYm9yQGluZi51LXN6ZWdlZC5odT4sIFVuaXZlcnNpdHkgb2YgU3pl
Z2VkCisjIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0
cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIEdvb2dsZSBuYW1lIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMg
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisj
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKworIiIiV2ViS2l0IGltcGxlbWVudGF0aW9ucyBvZiB0aGUgUG9y
dCBpbnRlcmZhY2UuIiIiCisKK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQgcmUKK2ltcG9ydCB0aW1l
CisKK2Zyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQgaW1wb3J0IHNlcnZlcl9wcm9jZXNz
CisKKworX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQorCisKK2NsYXNzIEltYWdl
RGlmZmVyKG9iamVjdCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBvcnQpOgorICAgICAgICBz
ZWxmLl9wb3J0ID0gcG9ydAorICAgICAgICBzZWxmLl90b2xlcmFuY2UgPSBOb25lCisgICAgICAg
IHNlbGYuX3Byb2MgPSBOb25lCisKKyAgICBkZWYgZGlmZl9pbWFnZShzZWxmLCBleHBlY3RlZF9j
b250ZW50cywgYWN0dWFsX2NvbnRlbnRzLCB0b2xlcmFuY2UpOgorICAgICAgICBpZiB0b2xlcmFu
Y2UgIT0gc2VsZi5fdG9sZXJhbmNlOgorICAgICAgICAgICAgc2VsZi5zdG9wKCkKKyAgICAgICAg
dHJ5OgorICAgICAgICAgICAgYXNzZXJ0KGV4cGVjdGVkX2NvbnRlbnRzKQorICAgICAgICAgICAg
YXNzZXJ0KGFjdHVhbF9jb250ZW50cykKKyAgICAgICAgICAgIGFzc2VydCh0b2xlcmFuY2UgaXMg
bm90IE5vbmUpCisKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9wcm9jOgorICAgICAgICAgICAg
ICAgIHNlbGYuX3N0YXJ0KHRvbGVyYW5jZSkKKyAgICAgICAgICAgIHNlbGYuX3Byb2Mud3JpdGUo
J0NvbnRlbnQtTGVuZ3RoOiAlZFxuJXNDb250ZW50LUxlbmd0aDogJWRcbiVzJyAlICgKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBsZW4oYWN0dWFsX2NvbnRlbnRzKSwgYWN0dWFsX2NvbnRl
bnRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihleHBlY3RlZF9jb250ZW50cyks
IGV4cGVjdGVkX2NvbnRlbnRzKSkKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9yZWFkKCkKKyAg
ICAgICAgZXhjZXB0IElPRXJyb3IgYXMgZToKKyAgICAgICAgICAgIF9sb2cuZXJyb3IoIkZhaWxl
ZCB0byBjb21wdXRlIGFuIGltYWdlIGRpZmY6ICVzIiAlIHN0cihlKSkKKyAgICAgICAgICAgIHJl
dHVybiAoVHJ1ZSwgMCkKKworICAgIGRlZiBfc3RhcnQoc2VsZiwgdG9sZXJhbmNlKToKKyAgICAg
ICAgY29tbWFuZCA9IFtzZWxmLl9wb3J0Ll9wYXRoX3RvX2ltYWdlX2RpZmYoKSwgJy0tdG9sZXJh
bmNlJywgc3RyKHRvbGVyYW5jZSldCisgICAgICAgIGVudmlyb25tZW50ID0gc2VsZi5fcG9ydC5z
ZXR1cF9lbnZpcm9uX2Zvcl9zZXJ2ZXIoJ0ltYWdlRGlmZicpCisgICAgICAgIHNlbGYuX3Byb2Mg
PSBzZWxmLl9wb3J0Ll9zZXJ2ZXJfcHJvY2Vzc19jb25zdHJ1Y3RvcihzZWxmLl9wb3J0LCAnSW1h
Z2VEaWZmJywgY29tbWFuZCwgZW52aXJvbm1lbnQpCisgICAgICAgIHNlbGYuX3Byb2Muc3RhcnQo
KQorICAgICAgICBzZWxmLl90b2xlcmFuY2UgPSB0b2xlcmFuY2UKKworICAgIGRlZiBfcmVhZChz
ZWxmKToKKyAgICAgICAgZGVhZGxpbmUgPSB0aW1lLnRpbWUoKSArIDIuMAorICAgICAgICBvdXRw
dXQgPSBOb25lCisgICAgICAgIG91dHB1dF9pbWFnZSA9ICIiCisKKyAgICAgICAgd2hpbGUgVHJ1
ZToKKyAgICAgICAgICAgIG91dHB1dCA9IHNlbGYuX3Byb2MucmVhZF9zdGRvdXRfbGluZShkZWFk
bGluZSkKKyAgICAgICAgICAgIGlmIHNlbGYuX3Byb2MudGltZWRfb3V0IG9yIHNlbGYuX3Byb2Mu
aGFzX2NyYXNoZWQoKSBvciBub3Qgb3V0cHV0OgorICAgICAgICAgICAgICAgIGJyZWFrCisKKyAg
ICAgICAgICAgIGlmIG91dHB1dC5zdGFydHN3aXRoKCdkaWZmJyk6ICAjIFRoaXMgaXMgdGhlIGxh
c3QgbGluZSBJbWFnZURpZmYgcHJpbnRzLgorICAgICAgICAgICAgICAgIGJyZWFrCisKKyAgICAg
ICAgICAgIGlmIG91dHB1dC5zdGFydHN3aXRoKCdDb250ZW50LUxlbmd0aCcpOgorICAgICAgICAg
ICAgICAgIG0gPSByZS5tYXRjaCgnQ29udGVudC1MZW5ndGg6IChcZCspJywgb3V0cHV0KQorICAg
ICAgICAgICAgICAgIGNvbnRlbnRfbGVuZ3RoID0gaW50KG0uZ3JvdXAoMSkpCisgICAgICAgICAg
ICAgICAgb3V0cHV0X2ltYWdlID0gc2VsZi5fcHJvYy5yZWFkX3N0ZG91dChkZWFkbGluZSwgY29u
dGVudF9sZW5ndGgpCisgICAgICAgICAgICAgICAgb3V0cHV0ID0gc2VsZi5fcHJvYy5yZWFkX3N0
ZG91dF9saW5lKGRlYWRsaW5lKQorICAgICAgICAgICAgICAgIGJyZWFrCisKKyAgICAgICAgc3Rk
ZXJyID0gc2VsZi5fcHJvYy5wb3BfYWxsX2J1ZmZlcmVkX3N0ZGVycigpCisgICAgICAgIGlmIHN0
ZGVycjoKKyAgICAgICAgICAgIF9sb2cud2FybigiSW1hZ2VEaWZmIHByb2R1Y2VkIHN0ZGVyciBv
dXRwdXQ6XG4iICsgc3RkZXJyKQorICAgICAgICBpZiBzZWxmLl9wcm9jLnRpbWVkX291dDoKKyAg
ICAgICAgICAgIF9sb2cuZXJyb3IoIkltYWdlRGlmZiB0aW1lZCBvdXQiKQorICAgICAgICBpZiBz
ZWxmLl9wcm9jLmhhc19jcmFzaGVkKCk6CisgICAgICAgICAgICBfbG9nLmVycm9yKCJJbWFnZURp
ZmYgY3Jhc2hlZCIpCisgICAgICAgICMgRklYTUU6IFRoZXJlIGlzIG5vIG5lZWQgdG8gc2h1dCBk
b3duIHRoZSBJbWFnZURpZmYgc2VydmVyIGFmdGVyIGV2ZXJ5IGRpZmYuCisgICAgICAgIHNlbGYu
X3Byb2Muc3RvcCgpCisKKyAgICAgICAgZGlmZl9wZXJjZW50ID0gMAorICAgICAgICBpZiBvdXRw
dXQgYW5kIG91dHB1dC5zdGFydHN3aXRoKCdkaWZmJyk6CisgICAgICAgICAgICBtID0gcmUubWF0
Y2goJ2RpZmY6ICguKyklIChwYXNzZWR8ZmFpbGVkKScsIG91dHB1dCkKKyAgICAgICAgICAgIGlm
IG0uZ3JvdXAoMikgPT0gJ3Bhc3NlZCc6CisgICAgICAgICAgICAgICAgcmV0dXJuIFtOb25lLCAw
XQorICAgICAgICAgICAgZGlmZl9wZXJjZW50ID0gZmxvYXQobS5ncm91cCgxKSkKKworICAgICAg
ICByZXR1cm4gKG91dHB1dF9pbWFnZSwgZGlmZl9wZXJjZW50KQorCisgICAgZGVmIHN0b3Aoc2Vs
Zik6CisgICAgICAgIGlmIHNlbGYuX3Byb2M6CisgICAgICAgICAgICBzZWxmLl9wcm9jLnN0b3Ao
KQorICAgICAgICAgICAgc2VsZi5fcHJvYyA9IE5vbmUKZGlmZiAtLWdpdCBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvaW1hZ2VfZGlmZl91bml0dGVzdC5weSBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvaW1hZ2VfZGlmZl91bml0dGVz
dC5weQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5iMDY3NTZjMzU1NWY0MGRmZTQ2NDQ2NTAzMzhjNDAwOTExOGI5MzQ0
Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9pbWFnZV9kaWZmX3VuaXR0ZXN0LnB5CkBAIC0wLDAgKzEsNTIgQEAKKyMgQ29weXJpZ2h0
IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMg
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisj
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorCisiIiJVbml0IHRlc3RpbmcgYmFzZSBjbGFzcyBmb3IgUG9ydCBpbXBsZW1lbnRhdGlvbnMu
IiIiCisKK2ltcG9ydCB1bml0dGVzdAorCitmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0
LnNlcnZlcl9wcm9jZXNzX21vY2sgaW1wb3J0IE1vY2tTZXJ2ZXJQcm9jZXNzCitmcm9tIHdlYmtp
dHB5LmxheW91dF90ZXN0cy5wb3J0LmltYWdlX2RpZmYgaW1wb3J0IEltYWdlRGlmZmVyCisKKwor
Y2xhc3MgRmFrZVBvcnQob2JqZWN0KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgc2VydmVyX3By
b2Nlc3Nfb3V0cHV0KToKKyAgICAgICAgc2VsZi5fc2VydmVyX3Byb2Nlc3NfY29uc3RydWN0b3Ig
PSBsYW1iZGEgcG9ydCwgbm0sIGNtZCwgZW52OiBNb2NrU2VydmVyUHJvY2VzcyhsaW5lcz1zZXJ2
ZXJfcHJvY2Vzc19vdXRwdXQpCisKKyAgICBkZWYgX3BhdGhfdG9faW1hZ2VfZGlmZihzZWxmKToK
KyAgICAgICAgcmV0dXJuICcnCisKKyAgICBkZWYgc2V0dXBfZW52aXJvbl9mb3Jfc2VydmVyKHNl
bGYsIG5tKToKKyAgICAgICAgcmV0dXJuIE5vbmUKKworCitjbGFzcyBUZXN0SW1hZ2VEaWZmZXIo
dW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X2RpZmZfaW1hZ2Uoc2VsZik6CisgICAg
ICAgIHBvcnQgPSBGYWtlUG9ydChbJ2RpZmY6IDEwMCUgZmFpbGVkXG4nXSkKKyAgICAgICAgaW1h
Z2VfZGlmZmVyID0gSW1hZ2VEaWZmZXIocG9ydCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMo
aW1hZ2VfZGlmZmVyLmRpZmZfaW1hZ2UoJ2ZvbycsICdiYXInLCAwLjEpLCAoJycsIDEwMC4wKSkK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbW9j
a19kcnRfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L21vY2tfZHJ0X3VuaXR0ZXN0LnB5CmluZGV4IDE2NTRlMWM0ODE3MDBhNDA4ZGNlYjc1NGMy
OTY4MDJhNDZlZWNhZTEuLjk2NGVmMDdlZjEyZDFmYjc5MzY0NTA4ZjIyMTg0OGU4NWQzYTQ4OTEg
MTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbW9j
a19kcnRfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9tb2NrX2RydF91bml0dGVzdC5weQpAQCAtNTcsNiArNTcsOSBAQCBjbGFzcyBNb2Nr
RFJUUG9ydFRlc3QocG9ydF90ZXN0Y2FzZS5Qb3J0VGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X2No
ZWNrX3N5c19kZXBzKHNlbGYpOgogICAgICAgICBwYXNzCiAKKyAgICBkZWYgdGVzdF9kaWZmX2lt
YWdlKHNlbGYpOgorICAgICAgICBwYXNzCisKICAgICBkZWYgdGVzdF91c2VzX2FwYWNoZShzZWxm
KToKICAgICAgICAgcGFzcwogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L3BvcnRfdGVzdGNhc2UucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L3BvcnRfdGVzdGNhc2UucHkKaW5kZXggOWY3NzgzMmFhNDI5ZThj
MGNmYTU3M2M2MDI4YjQ3YzM5YWQwY2RiMS4uNDRhN2ZiNjM0NWE1MDg2MDNlMmZmNjIxZTBjZmE2
NGY4OTU1NDM3NCAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9wb3J0X3Rlc3RjYXNlLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvcG9ydF90ZXN0Y2FzZS5weQpAQCAtMjksMjEgKzI5LDQ4IEBACiAiIiJV
bml0IHRlc3RpbmcgYmFzZSBjbGFzcyBmb3IgUG9ydCBpbXBsZW1lbnRhdGlvbnMuIiIiCiAKIGlt
cG9ydCBlcnJubworaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBzb2NrZXQKIGltcG9ydCBzeXMKIGlt
cG9ydCB0aW1lCiBpbXBvcnQgdW5pdHRlc3QKIAotZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVt
LmZpbGVzeXN0ZW1fbW9jayBpbXBvcnQgTW9ja0ZpbGVTeXN0ZW0KIGZyb20gd2Via2l0cHkuY29t
bW9uLnN5c3RlbS5leGVjdXRpdmVfbW9jayBpbXBvcnQgTW9ja0V4ZWN1dGl2ZQorZnJvbSB3ZWJr
aXRweS5jb21tb24uc3lzdGVtLmZpbGVzeXN0ZW1fbW9jayBpbXBvcnQgTW9ja0ZpbGVTeXN0ZW0K
K2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5vdXRwdXRjYXB0dXJlIGltcG9ydCBPdXRwdXRD
YXB0dXJlCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uc3lzdGVtaG9zdF9tb2NrIGltcG9y
dCBNb2NrU3lzdGVtSG9zdAotZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMuc2VydmVycyBpbXBv
cnQgaHR0cF9zZXJ2ZXJfYmFzZQotZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMuc2VydmVycyBp
bXBvcnQgaHR0cF9zZXJ2ZXJfYmFzZQotZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydCBp
bXBvcnQgZmFjdG9yeQorZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC5iYXNlIGltcG9y
dCBQb3J0CiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0LmNvbmZpZ19tb2NrIGltcG9y
dCBNb2NrQ29uZmlnCitmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0LnNlcnZlcl9wcm9j
ZXNzX21vY2sgaW1wb3J0IE1vY2tTZXJ2ZXJQcm9jZXNzCitmcm9tIHdlYmtpdHB5LmxheW91dF90
ZXN0cy5zZXJ2ZXJzIGltcG9ydCBodHRwX3NlcnZlcl9iYXNlCiBmcm9tIHdlYmtpdHB5LnRvb2wu
bW9ja3Rvb2wgaW1wb3J0IE1vY2tPcHRpb25zCiAKIAorIyBGSVhNRTogZ2V0IHJpZCBvZiB0aGlz
IGZpeHR1cmUKK2NsYXNzIFRlc3RXZWJLaXRQb3J0KFBvcnQpOgorICAgIHBvcnRfbmFtZSA9ICJ0
ZXN0d2Via2l0cG9ydCIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzeW1ib2xzX3N0cmluZz1O
b25lLAorICAgICAgICAgICAgICAgICBleHBlY3RhdGlvbnNfZmlsZT1Ob25lLCBza2lwc19maWxl
PU5vbmUsIGhvc3Q9Tm9uZSwgY29uZmlnPU5vbmUsCisgICAgICAgICAgICAgICAgICoqa3dhcmdz
KToKKyAgICAgICAgc2VsZi5zeW1ib2xzX3N0cmluZyA9IHN5bWJvbHNfc3RyaW5nICAjIFBhc3Np
bmcgIiIgZGlzYWJsZXMgYWxsIHN0YXRpY2x5LWRldGVjdGFibGUgZmVhdHVyZXMuCisgICAgICAg
IGhvc3QgPSBob3N0IG9yIE1vY2tTeXN0ZW1Ib3N0KCkKKyAgICAgICAgY29uZmlnID0gY29uZmln
IG9yIE1vY2tDb25maWcoKQorICAgICAgICBzdXBlcihUZXN0V2ViS2l0UG9ydCwgc2VsZikuX19p
bml0X18oaG9zdD1ob3N0LCBjb25maWc9Y29uZmlnLCAqKmt3YXJncykKKworICAgIGRlZiBhbGxf
dGVzdF9jb25maWd1cmF0aW9ucyhzZWxmKToKKyAgICAgICAgcmV0dXJuIFtzZWxmLnRlc3RfY29u
ZmlndXJhdGlvbigpXQorCisgICAgZGVmIF9zeW1ib2xzX3N0cmluZyhzZWxmKToKKyAgICAgICAg
cmV0dXJuIHNlbGYuc3ltYm9sc19zdHJpbmcKKworICAgIGRlZiBfdGVzdHNfZm9yX290aGVyX3Bs
YXRmb3JtcyhzZWxmKToKKyAgICAgICAgcmV0dXJuIFsibWVkaWEiLCBdCisKKyAgICBkZWYgX3Rl
c3RzX2Zvcl9kaXNhYmxlZF9mZWF0dXJlcyhzZWxmKToKKyAgICAgICAgcmV0dXJuIFsiYWNjZXNz
aWJpbGl0eSIsIF0KKworCiBjbGFzcyBQb3J0VGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgog
ICAgICIiIlRlc3RzIHRoYXQgYWxsIFBvcnQgaW1wbGVtZW50YXRpb25zIG11c3QgcGFzcy4iIiIK
ICAgICBIVFRQX1BPUlRTID0gKDgwMDAsIDgwODAsIDg0NDMpCkBAIC01Miw3ICs3OSw3IEBAIGNs
YXNzIFBvcnRUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgIyBTdWJjbGFzc2VzIG92
ZXJyaWRlIHRoaXMgdG8gcG9pbnQgdG8gdGhlaXIgUG9ydCBzdWJjbGFzcy4KICAgICBvc19uYW1l
ID0gTm9uZQogICAgIG9zX3ZlcnNpb24gPSBOb25lCi0gICAgcG9ydF9tYWtlciA9IE5vbmUKKyAg
ICBwb3J0X21ha2VyID0gVGVzdFdlYktpdFBvcnQKIAogICAgIGRlZiBtYWtlX3BvcnQoc2VsZiwg
aG9zdD1Ob25lLCBwb3J0X25hbWU9Tm9uZSwgb3B0aW9ucz1Ob25lLCBvc19uYW1lPU5vbmUsIG9z
X3ZlcnNpb249Tm9uZSwgY29uZmlnPU5vbmUsICoqa3dhcmdzKToKICAgICAgICAgaG9zdCA9IGhv
c3Qgb3IgTW9ja1N5c3RlbUhvc3Qob3NfbmFtZT0ob3NfbmFtZSBvciBzZWxmLm9zX25hbWUpLCBv
c192ZXJzaW9uPShvc192ZXJzaW9uIG9yIHNlbGYub3NfdmVyc2lvbikpCkBAIC0yMDksNiArMjM2
LDcgQEAgY2xhc3MgUG9ydFRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgc2Vs
Zi5hc3NlcnRGYWxzZShwb3J0LmRpZmZfaW1hZ2UoTm9uZSwgTm9uZSlbMF0pCiAgICAgICAgIHNl
bGYuYXNzZXJ0RmFsc2UocG9ydC5kaWZmX2ltYWdlKE5vbmUsICcnKVswXSkKICAgICAgICAgc2Vs
Zi5hc3NlcnRGYWxzZShwb3J0LmRpZmZfaW1hZ2UoJycsIE5vbmUpWzBdKQorCiAgICAgICAgIHNl
bGYuYXNzZXJ0RmFsc2UocG9ydC5kaWZmX2ltYWdlKCcnLCAnJylbMF0pCiAKICAgICBkZWYgdGVz
dF9kaWZmX2ltYWdlX19taXNzaW5nX2FjdHVhbChzZWxmKToKQEAgLTIyMSw5ICsyNDksMjEgQEAg
Y2xhc3MgUG9ydFRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgc2VsZi5hc3Nl
cnRUcnVlKHBvcnQuZGlmZl9pbWFnZSgnZm9vJywgTm9uZSlbMF0pCiAgICAgICAgIHNlbGYuYXNz
ZXJ0VHJ1ZShwb3J0LmRpZmZfaW1hZ2UoJ2ZvbycsICcnKVswXSkKIAotICAgIGRlZiB0ZXN0X2No
ZWNrX2J1aWxkKHNlbGYpOgorICAgIGRlZiB0ZXN0X2RpZmZfaW1hZ2Uoc2VsZik6CiAgICAgICAg
IHBvcnQgPSBzZWxmLm1ha2VfcG9ydCgpCi0gICAgICAgIHBvcnQuY2hlY2tfYnVpbGQobmVlZHNf
aHR0cD1UcnVlKQorICAgICAgICBzZWxmLnByb2MgPSBOb25lCisKKyAgICAgICAgZGVmIG1ha2Vf
cHJvYyhwb3J0LCBubSwgY21kLCBlbnYpOgorICAgICAgICAgICAgc2VsZi5wcm9jID0gTW9ja1Nl
cnZlclByb2Nlc3MocG9ydCwgbm0sIGNtZCwgZW52LCBsaW5lcz1bJ2RpZmY6IDEwMCUgZmFpbGVk
XG4nXSkKKyAgICAgICAgICAgIHJldHVybiBzZWxmLnByb2MKKworICAgICAgICBwb3J0Ll9zZXJ2
ZXJfcHJvY2Vzc19jb25zdHJ1Y3RvciA9IG1ha2VfcHJvYworICAgICAgICBwb3J0LnNldHVwX3Rl
c3RfcnVuKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocG9ydC5kaWZmX2ltYWdlKCdmb28n
LCAnYmFyJyksICgnJywgMTAwLjApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhzZWxmLnBy
b2MuY21kWzE6M10sIFsiLS10b2xlcmFuY2UiLCAiMC4xIl0pCisgICAgICAgIHBvcnQuY2xlYW5f
dXBfdGVzdF9ydW4oKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5wcm9jLnN0b3BwZWQp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHBvcnQuX2ltYWdlX2RpZmZlciwgTm9uZSkKIAog
ICAgIGRlZiB0ZXN0X2NoZWNrX3dkaWZmKHNlbGYpOgogICAgICAgICBwb3J0ID0gc2VsZi5tYWtl
X3BvcnQoKQpAQCAtMzYzLDYgKzQwMywxNjIgQEAgY2xhc3MgUG9ydFRlc3RDYXNlKHVuaXR0ZXN0
LlRlc3RDYXNlKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMob3JkZXJlZF9kaWN0LmtleXMo
KVstMjpdLCBvcHRpb25zLmFkZGl0aW9uYWxfZXhwZWN0YXRpb25zKQogICAgICAgICBzZWxmLmFz
c2VydEVxdWFscyhvcmRlcmVkX2RpY3QudmFsdWVzKClbLTI6XSwgWydmb28nLCAnYmFyJ10pCiAK
KyAgICBkZWYgdGVzdF9wYXRoX3RvX3Rlc3RfZXhwZWN0YXRpb25zX2ZpbGUoc2VsZik6CisgICAg
ICAgIHBvcnQgPSBUZXN0V2ViS2l0UG9ydCgpCisgICAgICAgIHBvcnQuX29wdGlvbnMgPSBNb2Nr
T3B0aW9ucyh3ZWJraXRfdGVzdF9ydW5uZXI9RmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwocG9ydC5wYXRoX3RvX3Rlc3RfZXhwZWN0YXRpb25zX2ZpbGUoKSwgJy9tb2NrLWNoZWNrb3V0
L0xheW91dFRlc3RzL3BsYXRmb3JtL3Rlc3R3ZWJraXRwb3J0L1Rlc3RFeHBlY3RhdGlvbnMnKQor
CisgICAgICAgIHBvcnQgPSBUZXN0V2ViS2l0UG9ydCgpCisgICAgICAgIHBvcnQuX29wdGlvbnMg
PSBNb2NrT3B0aW9ucyh3ZWJraXRfdGVzdF9ydW5uZXI9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChwb3J0LnBhdGhfdG9fdGVzdF9leHBlY3RhdGlvbnNfZmlsZSgpLCAnL21vY2stY2hl
Y2tvdXQvTGF5b3V0VGVzdHMvcGxhdGZvcm0vdGVzdHdlYmtpdHBvcnQvVGVzdEV4cGVjdGF0aW9u
cycpCisKKyAgICAgICAgcG9ydCA9IFRlc3RXZWJLaXRQb3J0KCkKKyAgICAgICAgcG9ydC5ob3N0
LmZpbGVzeXN0ZW0uZmlsZXNbJy9tb2NrLWNoZWNrb3V0L0xheW91dFRlc3RzL3BsYXRmb3JtL3Rl
c3R3ZWJraXRwb3J0L1Rlc3RFeHBlY3RhdGlvbnMnXSA9ICdzb21lIGNvbnRlbnQnCisgICAgICAg
IHBvcnQuX29wdGlvbnMgPSBNb2NrT3B0aW9ucyh3ZWJraXRfdGVzdF9ydW5uZXI9RmFsc2UpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5wYXRoX3RvX3Rlc3RfZXhwZWN0YXRpb25zX2Zp
bGUoKSwgJy9tb2NrLWNoZWNrb3V0L0xheW91dFRlc3RzL3BsYXRmb3JtL3Rlc3R3ZWJraXRwb3J0
L1Rlc3RFeHBlY3RhdGlvbnMnKQorCisgICAgZGVmIHRlc3Rfc2tpcHBlZF9kaXJlY3Rvcmllc19m
b3Jfc3ltYm9scyhzZWxmKToKKyAgICAgICAgIyBUaGlzIGZpcnN0IHRlc3QgY29uZmlybXMgdGhh
dCB0aGUgY29tbW9ubHkgZm91bmQgc3ltYm9scyByZXN1bHQgaW4gdGhlIGV4cGVjdGVkIHNraXBw
ZWQgZGlyZWN0b3JpZXMuCisgICAgICAgIHN5bWJvbHNfc3RyaW5nID0gIiAiLmpvaW4oWyJHcmFw
aGljc0xheWVyIiwgIldlYkNvcmVIYXMzRFJlbmRlcmluZyIsICJpc1hIVE1MTVBEb2N1bWVudCIs
ICJmb29TeW1ib2wiXSkKKyAgICAgICAgZXhwZWN0ZWRfZGlyZWN0b3JpZXMgPSBzZXQoWworICAg
ICAgICAgICAgIm1hdGhtbCIsICAjIFJlcXVpcmVzIE1hdGhNTEVsZW1lbnQKKyAgICAgICAgICAg
ICJmYXN0L2NhbnZhcy93ZWJnbCIsICAjIFJlcXVpcmVzIFdlYkdMU2hhZGVyCisgICAgICAgICAg
ICAiY29tcG9zaXRpbmcvd2ViZ2wiLCAgIyBSZXF1aXJlcyBXZWJHTFNoYWRlcgorICAgICAgICAg
ICAgImh0dHAvdGVzdHMvY2FudmFzL3dlYmdsIiwgICMgUmVxdWlyZXMgV2ViR0xTaGFkZXIKKyAg
ICAgICAgICAgICJtaHRtbCIsICAjIFJlcXVpcmVzIE1IVE1MQXJjaGl2ZQorICAgICAgICAgICAg
ImZhc3QvY3NzL3ZhcmlhYmxlcyIsICAjIFJlcXVpcmVzIENTUyBWYXJpYWJsZXMKKyAgICAgICAg
ICAgICJpbnNwZWN0b3Ivc3R5bGVzL3ZhcmlhYmxlcyIsICAjIFJlcXVpcmVzIENTUyBWYXJpYWJs
ZXMKKyAgICAgICAgXSkKKworICAgICAgICByZXN1bHRfZGlyZWN0b3JpZXMgPSBzZXQoVGVzdFdl
YktpdFBvcnQoc3ltYm9sc19zdHJpbmcsIE5vbmUpLl9za2lwcGVkX3Rlc3RzX2Zvcl91bnN1cHBv
cnRlZF9mZWF0dXJlcyh0ZXN0X2xpc3Q9WydtYXRobWwvZm9vLmh0bWwnXSkpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwocmVzdWx0X2RpcmVjdG9yaWVzLCBleHBlY3RlZF9kaXJlY3RvcmllcykK
KworICAgICAgICAjIFRlc3QgdGhhdCB0aGUgbm0gc3RyaW5nIHBhcnNpbmcgYWN0dWFsbHkgd29y
a3M6CisgICAgICAgIHN5bWJvbHNfc3RyaW5nID0gIiIiCiswMDAwMDAwMDAxMjRmNDk4IHMgX19a
Wk43V2ViQ29yZTEzR3JhcGhpY3NMYXllcjEycmVwbGFjZUNoaWxkRVBTMF9TMV9FMTlfX1BSRVRU
WV9GVU5DVElPTl9fCiswMDAwMDAwMDAxMjRmNTAwIHMgX19aWk43V2ViQ29yZTEzR3JhcGhpY3NM
YXllcjEzYWRkQ2hpbGRBYm92ZUVQUzBfUzFfRTE5X19QUkVUVFlfRlVOQ1RJT05fXworMDAwMDAw
MDAwMTI0ZjY3MCBzIF9fWlpON1dlYkNvcmUxM0dyYXBoaWNzTGF5ZXIxM2FkZENoaWxkQmVsb3dF
UFMwX1MxX0UxOV9fUFJFVFRZX0ZVTkNUSU9OX18KKyIiIgorICAgICAgICAjIE5vdGUgJ2NvbXBv
c2l0aW5nJyBpcyBub3QgaW4gdGhlIGxpc3Qgb2Ygc2tpcHBlZCBkaXJlY3RvcmllcyAoaGVuY2Ug
dGhlIHBhcnNpbmcgb2YgR3JhcGhpY3NMYXllciB3b3JrZWQpOgorICAgICAgICBleHBlY3RlZF9k
aXJlY3RvcmllcyA9IHNldChbJ21hdGhtbCcsICd0cmFuc2Zvcm1zLzNkJywgJ2NvbXBvc2l0aW5n
L3dlYmdsJywgJ2Zhc3QvY2FudmFzL3dlYmdsJywgJ2FuaW1hdGlvbnMvM2QnLCAnbWh0bWwnLCAn
aHR0cC90ZXN0cy9jYW52YXMvd2ViZ2wnLCAnZmFzdC9jc3MvdmFyaWFibGVzJywgJ2luc3BlY3Rv
ci9zdHlsZXMvdmFyaWFibGVzJ10pCisgICAgICAgIHJlc3VsdF9kaXJlY3RvcmllcyA9IHNldChU
ZXN0V2ViS2l0UG9ydChzeW1ib2xzX3N0cmluZywgTm9uZSkuX3NraXBwZWRfdGVzdHNfZm9yX3Vu
c3VwcG9ydGVkX2ZlYXR1cmVzKHRlc3RfbGlzdD1bJ21hdGhtbC9mb28uaHRtbCddKSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHRfZGlyZWN0b3JpZXMsIGV4cGVjdGVkX2RpcmVjdG9y
aWVzKQorCisgICAgZGVmIHRlc3Rfc2tpcHBlZF9kaXJlY3Rvcmllc19mb3JfZmVhdHVyZXMoc2Vs
Zik6CisgICAgICAgIHN1cHBvcnRlZF9mZWF0dXJlcyA9IFsiQWNjZWxlcmF0ZWQgQ29tcG9zaXRp
bmciLCAiRm9vIEZlYXR1cmUiXQorICAgICAgICBleHBlY3RlZF9kaXJlY3RvcmllcyA9IHNldChb
ImFuaW1hdGlvbnMvM2QiLCAidHJhbnNmb3Jtcy8zZCJdKQorICAgICAgICBwb3J0ID0gVGVzdFdl
YktpdFBvcnQoTm9uZSwgc3VwcG9ydGVkX2ZlYXR1cmVzKQorICAgICAgICBwb3J0Ll9ydW50aW1l
X2ZlYXR1cmVfbGlzdCA9IGxhbWJkYTogc3VwcG9ydGVkX2ZlYXR1cmVzCisgICAgICAgIHJlc3Vs
dF9kaXJlY3RvcmllcyA9IHNldChwb3J0Ll9za2lwcGVkX3Rlc3RzX2Zvcl91bnN1cHBvcnRlZF9m
ZWF0dXJlcyh0ZXN0X2xpc3Q9WyJhbmltYXRpb25zLzNkL2Zvby5odG1sIl0pKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHJlc3VsdF9kaXJlY3RvcmllcywgZXhwZWN0ZWRfZGlyZWN0b3JpZXMp
CisKKyAgICBkZWYgdGVzdF9za2lwcGVkX2RpcmVjdG9yaWVzX2Zvcl9mZWF0dXJlc19ub19tYXRj
aGluZ190ZXN0c19pbl90ZXN0X2xpc3Qoc2VsZik6CisgICAgICAgIHN1cHBvcnRlZF9mZWF0dXJl
cyA9IFsiQWNjZWxlcmF0ZWQgQ29tcG9zaXRpbmciLCAiRm9vIEZlYXR1cmUiXQorICAgICAgICBl
eHBlY3RlZF9kaXJlY3RvcmllcyA9IHNldChbXSkKKyAgICAgICAgcmVzdWx0X2RpcmVjdG9yaWVz
ID0gc2V0KFRlc3RXZWJLaXRQb3J0KE5vbmUsIHN1cHBvcnRlZF9mZWF0dXJlcykuX3NraXBwZWRf
dGVzdHNfZm9yX3Vuc3VwcG9ydGVkX2ZlYXR1cmVzKHRlc3RfbGlzdD1bJ2Zvby5odG1sJ10pKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdF9kaXJlY3RvcmllcywgZXhwZWN0ZWRfZGly
ZWN0b3JpZXMpCisKKyAgICBkZWYgdGVzdF9za2lwcGVkX3Rlc3RzX2Zvcl91bnN1cHBvcnRlZF9m
ZWF0dXJlc19lbXB0eV90ZXN0X2xpc3Qoc2VsZik6CisgICAgICAgIHN1cHBvcnRlZF9mZWF0dXJl
cyA9IFsiQWNjZWxlcmF0ZWQgQ29tcG9zaXRpbmciLCAiRm9vIEZlYXR1cmUiXQorICAgICAgICBl
eHBlY3RlZF9kaXJlY3RvcmllcyA9IHNldChbXSkKKyAgICAgICAgcmVzdWx0X2RpcmVjdG9yaWVz
ID0gc2V0KFRlc3RXZWJLaXRQb3J0KE5vbmUsIHN1cHBvcnRlZF9mZWF0dXJlcykuX3NraXBwZWRf
dGVzdHNfZm9yX3Vuc3VwcG9ydGVkX2ZlYXR1cmVzKHRlc3RfbGlzdD1Ob25lKSkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChyZXN1bHRfZGlyZWN0b3JpZXMsIGV4cGVjdGVkX2RpcmVjdG9yaWVz
KQorCisgICAgZGVmIHRlc3Rfc2tpcHBlZF9sYXlvdXRfdGVzdHMoc2VsZik6CisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoVGVzdFdlYktpdFBvcnQoTm9uZSwgTm9uZSkuc2tpcHBlZF9sYXlvdXRf
dGVzdHModGVzdF9saXN0PVtdKSwgc2V0KFsnbWVkaWEnXSkpCisKKyAgICBkZWYgdGVzdF9za2lw
cGVkX2ZpbGVfc2VhcmNoX3BhdGhzKHNlbGYpOgorICAgICAgICBwb3J0ID0gVGVzdFdlYktpdFBv
cnQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQuX3NraXBwZWRfZmlsZV9zZWFyY2hf
cGF0aHMoKSwgc2V0KFsndGVzdHdlYmtpdHBvcnQnXSkpCisgICAgICAgIHBvcnQuX25hbWUgPSAi
dGVzdHdlYmtpdHBvcnQtdmVyc2lvbiIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0Ll9z
a2lwcGVkX2ZpbGVfc2VhcmNoX3BhdGhzKCksIHNldChbJ3Rlc3R3ZWJraXRwb3J0JywgJ3Rlc3R3
ZWJraXRwb3J0LXZlcnNpb24nXSkpCisgICAgICAgIHBvcnQuX29wdGlvbnMgPSBNb2NrT3B0aW9u
cyh3ZWJraXRfdGVzdF9ydW5uZXI9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0
Ll9za2lwcGVkX2ZpbGVfc2VhcmNoX3BhdGhzKCksIHNldChbJ3Rlc3R3ZWJraXRwb3J0JywgJ3Rl
c3R3ZWJraXRwb3J0LXZlcnNpb24nLCAndGVzdHdlYmtpdHBvcnQtd2syJywgJ3drMiddKSkKKyAg
ICAgICAgcG9ydC5fb3B0aW9ucyA9IE1vY2tPcHRpb25zKGFkZGl0aW9uYWxfcGxhdGZvcm1fZGly
ZWN0b3J5PVsiaW50ZXJuYWwtdGVzdHdlYmtpdHBvcnQiXSkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChwb3J0Ll9za2lwcGVkX2ZpbGVfc2VhcmNoX3BhdGhzKCksIHNldChbJ3Rlc3R3ZWJraXRw
b3J0JywgJ3Rlc3R3ZWJraXRwb3J0LXZlcnNpb24nLCAnaW50ZXJuYWwtdGVzdHdlYmtpdHBvcnQn
XSkpCisKKyAgICBkZWYgdGVzdF9yb290X29wdGlvbihzZWxmKToKKyAgICAgICAgcG9ydCA9IFRl
c3RXZWJLaXRQb3J0KCkKKyAgICAgICAgcG9ydC5fb3B0aW9ucyA9IE1vY2tPcHRpb25zKHJvb3Q9
Jy9mb28nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQuX3BhdGhfdG9fZHJpdmVyKCks
ICIvZm9vL0R1bXBSZW5kZXJUcmVlIikKKworICAgIGRlZiB0ZXN0X3Rlc3RfZXhwZWN0YXRpb25z
KHNlbGYpOgorICAgICAgICAjIENoZWNrIHRoYXQgd2UgcmVhZCB0aGUgZXhwZWN0YXRpb25zIGZp
bGUKKyAgICAgICAgaG9zdCA9IE1vY2tTeXN0ZW1Ib3N0KCkKKyAgICAgICAgaG9zdC5maWxlc3lz
dGVtLndyaXRlX3RleHRfZmlsZSgnL21vY2stY2hlY2tvdXQvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
dGVzdHdlYmtpdHBvcnQvVGVzdEV4cGVjdGF0aW9ucycsCisgICAgICAgICAgICAnQlVHX1RFU1RF
WFBFQ1RBVElPTlMgU0tJUCA6IGZhc3QvaHRtbC9hcnRpY2xlLWVsZW1lbnQuaHRtbCA9IFRFWFRc
bicpCisgICAgICAgIHBvcnQgPSBUZXN0V2ViS2l0UG9ydChob3N0PWhvc3QpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoJycuam9pbihwb3J0LmV4cGVjdGF0aW9uc19kaWN0KCkudmFsdWVzKCkp
LCAnQlVHX1RFU1RFWFBFQ1RBVElPTlMgU0tJUCA6IGZhc3QvaHRtbC9hcnRpY2xlLWVsZW1lbnQu
aHRtbCA9IFRFWFRcbicpCisKKyAgICBkZWYgdGVzdF9idWlsZF9kcml2ZXIoc2VsZik6CisgICAg
ICAgIG91dHB1dCA9IE91dHB1dENhcHR1cmUoKQorICAgICAgICBwb3J0ID0gVGVzdFdlYktpdFBv
cnQoKQorICAgICAgICAjIERlbGF5IHNldHRpbmcgX2V4ZWN1dGl2ZSB0byBhdm9pZCBsb2dnaW5n
IGR1cmluZyBjb25zdHJ1Y3Rpb24KKyAgICAgICAgcG9ydC5fZXhlY3V0aXZlID0gTW9ja0V4ZWN1
dGl2ZShzaG91bGRfbG9nPVRydWUpCisgICAgICAgIHBvcnQuX29wdGlvbnMgPSBNb2NrT3B0aW9u
cyhjb25maWd1cmF0aW9uPSJSZWxlYXNlIikgICMgVGhpcyBzaG91bGQgbm90IGJlIG5lY2Vzc2Fy
eSwgYnV0IEkgdGhpbmsgVGVzdFdlYktpdFBvcnQgaXMgYWN0dWFsbHkgcmVhZGluZyBmcm9tIGRp
c2sgKGFuZCB0aHVzIGRldGVjdHMgdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbikuCisgICAgICAg
IGV4cGVjdGVkX3N0ZGVyciA9ICJNT0NLIHJ1bl9jb21tYW5kOiBbJ1Rvb2xzL1NjcmlwdHMvYnVp
bGQtZHVtcHJlbmRlcnRyZWUnLCAnLS1yZWxlYXNlJ10sIGN3ZD0vbW9jay1jaGVja291dCwgZW52
PXsnTENfQUxMJzogJ0MnLCAnTU9DS19FTlZJUk9OX0NPUFknOiAnMSd9XG4iCisgICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZShvdXRwdXQuYXNzZXJ0X291dHB1dHMoc2VsZiwgcG9ydC5fYnVpbGRfZHJp
dmVyLCBleHBlY3RlZF9zdGRlcnI9ZXhwZWN0ZWRfc3RkZXJyLCBleHBlY3RlZF9sb2dzPScnKSkK
KworICAgICAgICAjIE1ha2Ugc3VyZSB3aGVuIHBhc3NlZCAtLXdlYmtpdC10ZXN0LXJ1bm5lciB3
ZSBidWlsZCB0aGUgcmlnaHQgdG9vbC4KKyAgICAgICAgcG9ydC5fb3B0aW9ucyA9IE1vY2tPcHRp
b25zKHdlYmtpdF90ZXN0X3J1bm5lcj1UcnVlLCBjb25maWd1cmF0aW9uPSJSZWxlYXNlIikKKyAg
ICAgICAgZXhwZWN0ZWRfc3RkZXJyID0gIk1PQ0sgcnVuX2NvbW1hbmQ6IFsnVG9vbHMvU2NyaXB0
cy9idWlsZC1kdW1wcmVuZGVydHJlZScsICctLXJlbGVhc2UnXSwgY3dkPS9tb2NrLWNoZWNrb3V0
LCBlbnY9eydMQ19BTEwnOiAnQycsICdNT0NLX0VOVklST05fQ09QWSc6ICcxJ31cbk1PQ0sgcnVu
X2NvbW1hbmQ6IFsnVG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXR0ZXN0cnVubmVyJywgJy0tcmVs
ZWFzZSddLCBjd2Q9L21vY2stY2hlY2tvdXQsIGVudj17J0xDX0FMTCc6ICdDJywgJ01PQ0tfRU5W
SVJPTl9DT1BZJzogJzEnfVxuIgorICAgICAgICBzZWxmLmFzc2VydFRydWUob3V0cHV0LmFzc2Vy
dF9vdXRwdXRzKHNlbGYsIHBvcnQuX2J1aWxkX2RyaXZlciwgZXhwZWN0ZWRfc3RkZXJyPWV4cGVj
dGVkX3N0ZGVyciwgZXhwZWN0ZWRfbG9ncz0nJykpCisKKyAgICAgICAgIyBNYWtlIHN1cmUgd2Ug
c2hvdyB0aGUgYnVpbGQgbG9nIHdoZW4gLS12ZXJib3NlIGlzIHBhc3NlZCwgd2hpY2ggd2Ugc2lt
dWxhdGUgYnkgc2V0dGluZyB0aGUgbG9nZ2luZyBsZXZlbCB0byBERUJVRy4KKyAgICAgICAgb3V0
cHV0LnNldF9sb2dfbGV2ZWwobG9nZ2luZy5ERUJVRykKKyAgICAgICAgcG9ydC5fb3B0aW9ucyA9
IE1vY2tPcHRpb25zKGNvbmZpZ3VyYXRpb249IlJlbGVhc2UiKQorICAgICAgICBleHBlY3RlZF9z
dGRlcnIgPSAiTU9DSyBydW5fY29tbWFuZDogWydUb29scy9TY3JpcHRzL2J1aWxkLWR1bXByZW5k
ZXJ0cmVlJywgJy0tcmVsZWFzZSddLCBjd2Q9L21vY2stY2hlY2tvdXQsIGVudj17J0xDX0FMTCc6
ICdDJywgJ01PQ0tfRU5WSVJPTl9DT1BZJzogJzEnfVxuIgorICAgICAgICBleHBlY3RlZF9sb2dz
ID0gIk91dHB1dCBvZiBbJ1Rvb2xzL1NjcmlwdHMvYnVpbGQtZHVtcHJlbmRlcnRyZWUnLCAnLS1y
ZWxlYXNlJ106XG5NT0NLIG91dHB1dCBvZiBjaGlsZCBwcm9jZXNzXG4iCisgICAgICAgIHNlbGYu
YXNzZXJ0VHJ1ZShvdXRwdXQuYXNzZXJ0X291dHB1dHMoc2VsZiwgcG9ydC5fYnVpbGRfZHJpdmVy
LCBleHBlY3RlZF9zdGRlcnI9ZXhwZWN0ZWRfc3RkZXJyLCBleHBlY3RlZF9sb2dzPWV4cGVjdGVk
X2xvZ3MpKQorICAgICAgICBvdXRwdXQuc2V0X2xvZ19sZXZlbChsb2dnaW5nLklORk8pCisKKyAg
ICAgICAgIyBNYWtlIHN1cmUgdGhhdCBmYWlsdXJlIHRvIGJ1aWxkIHJldHVybnMgRmFsc2UuCisg
ICAgICAgIHBvcnQuX2V4ZWN1dGl2ZSA9IE1vY2tFeGVjdXRpdmUoc2hvdWxkX2xvZz1UcnVlLCBz
aG91bGRfdGhyb3c9VHJ1ZSkKKyAgICAgICAgIyBCZWNhdXNlIFdLMiBjdXJyZW50bHkgaGFzIHRv
IGJ1aWxkIGJvdGggd2Via2l0dGVzdHJ1bm5lciBhbmQgRFJULCBpZiBEUlQgZmFpbHMsIHRoYXQn
cyB0aGUgb25seSBvbmUgaXQgdHJpZXMuCisgICAgICAgIGV4cGVjdGVkX3N0ZGVyciA9ICJNT0NL
IHJ1bl9jb21tYW5kOiBbJ1Rvb2xzL1NjcmlwdHMvYnVpbGQtZHVtcHJlbmRlcnRyZWUnLCAnLS1y
ZWxlYXNlJ10sIGN3ZD0vbW9jay1jaGVja291dCwgZW52PXsnTENfQUxMJzogJ0MnLCAnTU9DS19F
TlZJUk9OX0NPUFknOiAnMSd9XG4iCisgICAgICAgIGV4cGVjdGVkX2xvZ3MgPSAiTU9DSyBTY3Jp
cHRFcnJvclxuXG5NT0NLIG91dHB1dCBvZiBjaGlsZCBwcm9jZXNzXG4iCisgICAgICAgIHNlbGYu
YXNzZXJ0RmFsc2Uob3V0cHV0LmFzc2VydF9vdXRwdXRzKHNlbGYsIHBvcnQuX2J1aWxkX2RyaXZl
ciwgZXhwZWN0ZWRfc3RkZXJyPWV4cGVjdGVkX3N0ZGVyciwgZXhwZWN0ZWRfbG9ncz1leHBlY3Rl
ZF9sb2dzKSkKKworICAgIGRlZiBfYXNzZXJ0X2NvbmZpZ19maWxlX2Zvcl9wbGF0Zm9ybShzZWxm
LCBwb3J0LCBwbGF0Zm9ybSwgY29uZmlnX2ZpbGUpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
cyhwb3J0Ll9hcGFjaGVfY29uZmlnX2ZpbGVfbmFtZV9mb3JfcGxhdGZvcm0ocGxhdGZvcm0pLCBj
b25maWdfZmlsZSkKKworICAgIGRlZiB0ZXN0X2xpbnV4X2Rpc3Ryb19kZXRlY3Rpb24oc2VsZik6
CisgICAgICAgIHBvcnQgPSBUZXN0V2ViS2l0UG9ydCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFs
c2UocG9ydC5faXNfcmVkaGF0X2Jhc2VkKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocG9y
dC5faXNfZGViaWFuX2Jhc2VkKCkpCisKKyAgICAgICAgcG9ydC5fZmlsZXN5c3RlbSA9IE1vY2tG
aWxlU3lzdGVtKHsnL2V0Yy9yZWRoYXQtcmVsZWFzZSc6ICcnfSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRUcnVlKHBvcnQuX2lzX3JlZGhhdF9iYXNlZCgpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNl
KHBvcnQuX2lzX2RlYmlhbl9iYXNlZCgpKQorCisgICAgICAgIHBvcnQuX2ZpbGVzeXN0ZW0gPSBN
b2NrRmlsZVN5c3RlbSh7Jy9ldGMvZGViaWFuX3ZlcnNpb24nOiAnJ30pCisgICAgICAgIHNlbGYu
YXNzZXJ0RmFsc2UocG9ydC5faXNfcmVkaGF0X2Jhc2VkKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0
VHJ1ZShwb3J0Ll9pc19kZWJpYW5fYmFzZWQoKSkKKworICAgIGRlZiB0ZXN0X2FwYWNoZV9jb25m
aWdfZmlsZV9uYW1lX2Zvcl9wbGF0Zm9ybShzZWxmKToKKyAgICAgICAgcG9ydCA9IFRlc3RXZWJL
aXRQb3J0KCkKKyAgICAgICAgc2VsZi5fYXNzZXJ0X2NvbmZpZ19maWxlX2Zvcl9wbGF0Zm9ybShw
b3J0LCAnY3lnd2luJywgJ2N5Z3dpbi1odHRwZC5jb25mJykKKworICAgICAgICBzZWxmLl9hc3Nl
cnRfY29uZmlnX2ZpbGVfZm9yX3BsYXRmb3JtKHBvcnQsICdsaW51eDInLCAnYXBhY2hlMi1odHRw
ZC5jb25mJykKKyAgICAgICAgc2VsZi5fYXNzZXJ0X2NvbmZpZ19maWxlX2Zvcl9wbGF0Zm9ybShw
b3J0LCAnbGludXgzJywgJ2FwYWNoZTItaHR0cGQuY29uZicpCisKKyAgICAgICAgcG9ydC5faXNf
cmVkaGF0X2Jhc2VkID0gbGFtYmRhOiBUcnVlCisgICAgICAgIHNlbGYuX2Fzc2VydF9jb25maWdf
ZmlsZV9mb3JfcGxhdGZvcm0ocG9ydCwgJ2xpbnV4MicsICdmZWRvcmEtaHR0cGQuY29uZicpCisK
KyAgICAgICAgcG9ydCA9IFRlc3RXZWJLaXRQb3J0KCkKKyAgICAgICAgcG9ydC5faXNfZGViaWFu
X2Jhc2VkID0gbGFtYmRhOiBUcnVlCisgICAgICAgIHNlbGYuX2Fzc2VydF9jb25maWdfZmlsZV9m
b3JfcGxhdGZvcm0ocG9ydCwgJ2xpbnV4MicsICdhcGFjaGUyLWRlYmlhbi1odHRwZC5jb25mJykK
KworICAgICAgICBzZWxmLl9hc3NlcnRfY29uZmlnX2ZpbGVfZm9yX3BsYXRmb3JtKHBvcnQsICdt
YWMnLCAnYXBhY2hlMi1odHRwZC5jb25mJykKKyAgICAgICAgc2VsZi5fYXNzZXJ0X2NvbmZpZ19m
aWxlX2Zvcl9wbGF0Zm9ybShwb3J0LCAnd2luMzInLCAnYXBhY2hlMi1odHRwZC5jb25mJykgICMg
d2luMzIgaXNuJ3QgYSBzdXBwb3J0ZWQgc3lzLnBsYXRmb3JtLiAgQXBwbGVXaW4vV2luQ2Fpcm8v
V2luQ0UgcG9ydHMgYWxsIHVzZSBjeWd3aW4uCisgICAgICAgIHNlbGYuX2Fzc2VydF9jb25maWdf
ZmlsZV9mb3JfcGxhdGZvcm0ocG9ydCwgJ2JhcmYnLCAnYXBhY2hlMi1odHRwZC5jb25mJykKKwor
ICAgIGRlZiB0ZXN0X3BhdGhfdG9fYXBhY2hlX2NvbmZpZ19maWxlKHNlbGYpOgorICAgICAgICBw
b3J0ID0gVGVzdFdlYktpdFBvcnQoKQorICAgICAgICAjIE1vY2sgb3V0IF9hcGFjaGVfY29uZmln
X2ZpbGVfbmFtZV9mb3JfcGxhdGZvcm0gdG8gaWdub3JlIHRoZSBwYXNzZWQgc3lzLnBsYXRmb3Jt
IHZhbHVlLgorICAgICAgICBwb3J0Ll9hcGFjaGVfY29uZmlnX2ZpbGVfbmFtZV9mb3JfcGxhdGZv
cm0gPSBsYW1iZGEgcGxhdGZvcm06ICdodHRwZC5jb25mJworICAgICAgICBzZWxmLmFzc2VydEVx
dWFscyhwb3J0Ll9wYXRoX3RvX2FwYWNoZV9jb25maWdfZmlsZSgpLCAnL21vY2stY2hlY2tvdXQv
TGF5b3V0VGVzdHMvaHR0cC9jb25mL2h0dHBkLmNvbmYnKQorCiAKICMgRklYTUU6IFRoaXMgY2xh
c3MgYW5kIG1haW4oKSBzaG91bGQgYmUgbWVyZ2VkIGludG8gdGVzdC13ZWJraXRweS4KIGNsYXNz
IEVuaGFuY2VkVGVzdExvYWRlcih1bml0dGVzdC5UZXN0TG9hZGVyKToKZGlmZiAtLWdpdCBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvcXQucHkgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3F0LnB5CmluZGV4IGIwZDY0ODUzYzY1N2Ix
OWJlYmRmOWM1YWNkY2E2ZWU2Nzk2NzIzNWIuLjM5MmFiMDI4ZmVhNDA3YTQzNjU1NmVmMjkxZjkx
NzkxM2I2Njc4ODEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvcXQucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9xdC5weQpAQCAtMzQsMTcgKzM0LDE1IEBAIGltcG9ydCByZQogaW1wb3J0IHN5cwogaW1w
b3J0IG9zCiAKLWltcG9ydCB3ZWJraXQKLQogZnJvbSB3ZWJraXRweS5jb21tb24ubWVtb2l6ZWQg
aW1wb3J0IG1lbW9pemVkCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5tb2RlbHMudGVzdF9j
b25maWd1cmF0aW9uIGltcG9ydCBUZXN0Q29uZmlndXJhdGlvbgotZnJvbSB3ZWJraXRweS5sYXlv
dXRfdGVzdHMucG9ydC53ZWJraXQgaW1wb3J0IFdlYktpdFBvcnQKK2Zyb20gd2Via2l0cHkubGF5
b3V0X3Rlc3RzLnBvcnQuYmFzZSBpbXBvcnQgUG9ydAogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVz
dHMucG9ydC54dmZiZHJpdmVyIGltcG9ydCBYdmZiRHJpdmVyCiAKIF9sb2cgPSBsb2dnaW5nLmdl
dExvZ2dlcihfX25hbWVfXykKIAogCi1jbGFzcyBRdFBvcnQoV2ViS2l0UG9ydCk6CitjbGFzcyBR
dFBvcnQoUG9ydCk6CiAgICAgQUxMX1ZFUlNJT05TID0gWydsaW51eCcsICd3aW4nLCAnbWFjJ10K
ICAgICBwb3J0X25hbWUgPSAicXQiCiAKQEAgLTYyLDkgKzYwLDkgQEAgY2xhc3MgUXRQb3J0KFdl
YktpdFBvcnQpOgogCiAgICAgIyBzeXNfcGxhdGZvcm0gZXhpc3RzIG9ubHkgZm9yIHVuaXQgdGVz
dGluZy4KICAgICBkZWYgX19pbml0X18oc2VsZiwgaG9zdCwgcG9ydF9uYW1lLCAqKmt3YXJncyk6
Ci0gICAgICAgIFdlYktpdFBvcnQuX19pbml0X18oc2VsZiwgaG9zdCwgcG9ydF9uYW1lLCAqKmt3
YXJncykKKyAgICAgICAgc3VwZXIoUXRQb3J0LCBzZWxmKS5fX2luaXRfXyhob3N0LCBwb3J0X25h
bWUsICoqa3dhcmdzKQogCi0gICAgICAgICMgRklYTUU6IFRoaXMgd2lsbCBhbGxvdyBXZWJLaXRQ
b3J0LmJhc2VsaW5lX3NlYXJjaF9wYXRoIGFuZCBXZWJLaXRQb3J0Ll9za2lwcGVkX2ZpbGVfc2Vh
cmNoX3BhdGhzCisgICAgICAgICMgRklYTUU6IFRoaXMgd2lsbCBhbGxvdyBQb3J0LmJhc2VsaW5l
X3NlYXJjaF9wYXRoIGFuZCBQb3J0Ll9za2lwcGVkX2ZpbGVfc2VhcmNoX3BhdGhzCiAgICAgICAg
ICMgdG8gZG8gdGhlIHJpZ2h0IHRoaW5nLCBidXQgZG9lc24ndCBpbmNsdWRlIHN1cHBvcnQgZm9y
IHF0LTQuOCBvciBxdC1hcm0gKHNlZW4gaW4gTGF5b3V0VGVzdHMvcGxhdGZvcm0pIHlldC4KICAg
ICAgICAgc2VsZi5fb3BlcmF0aW5nX3N5c3RlbSA9IHBvcnRfbmFtZS5yZXBsYWNlKCdxdC0nLCAn
JykKIApAQCAtMTU2LDcgKzE1NCw3IEBAIGNsYXNzIFF0UG9ydChXZWJLaXRQb3J0KToKICAgICAg
ICAgcmV0dXJuIGxpc3QocmV2ZXJzZWQoW3NlbGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxmLl93ZWJr
aXRfYmFzZWxpbmVfcGF0aChwKSwgJ1Rlc3RFeHBlY3RhdGlvbnMnKSBmb3IgcCBpbiBzZWxmLl9z
ZWFyY2hfcGF0aHMoKV0pKQogCiAgICAgZGVmIHNldHVwX2Vudmlyb25fZm9yX3NlcnZlcihzZWxm
LCBzZXJ2ZXJfbmFtZT1Ob25lKToKLSAgICAgICAgY2xlYW5fZW52ID0gV2ViS2l0UG9ydC5zZXR1
cF9lbnZpcm9uX2Zvcl9zZXJ2ZXIoc2VsZiwgc2VydmVyX25hbWUpCisgICAgICAgIGNsZWFuX2Vu
diA9IHN1cGVyKFF0UG9ydCwgc2VsZikuc2V0dXBfZW52aXJvbl9mb3Jfc2VydmVyKHNlcnZlcl9u
YW1lKQogICAgICAgICBjbGVhbl9lbnZbJ1FUV0VCS0lUX1BMVUdJTl9QQVRIJ10gPSBzZWxmLl9i
dWlsZF9wYXRoKCdsaWIvcGx1Z2lucycpCiAgICAgICAgIHNlbGYuX2NvcHlfdmFsdWVfZnJvbV9l
bnZpcm9uX2lmX3NldChjbGVhbl9lbnYsICdRVF9EUlRfV0VCVklFV19NT0RFJykKICAgICAgICAg
c2VsZi5fY29weV92YWx1ZV9mcm9tX2Vudmlyb25faWZfc2V0KGNsZWFuX2VudiwgJ0RZTERfSU1B
R0VfU1VGRklYJykKQEAgLTE2Niw3ICsxNjQsNyBAQCBjbGFzcyBRdFBvcnQoV2ViS2l0UG9ydCk6
CiAgICAgICAgIHJldHVybiBjbGVhbl9lbnYKIAogICAgICMgRklYTUU6IFdlIHNob3VsZCBmaW5k
IGEgd2F5IHRvIHNoYXJlIHRoaXMgaW1wbG1lbnRhdGlvbiB3aXRoIEd0aywKLSAgICAjIG9yIHRl
YWNoIHJ1bi1sYXVuY2hlciBob3cgdG8gY2FsbCBydW4tc2FmYXJpIGFuZCBtb3ZlIHRoaXMgZG93
biB0byBXZWJLaXRQb3J0LgorICAgICMgb3IgdGVhY2ggcnVuLWxhdW5jaGVyIGhvdyB0byBjYWxs
IHJ1bi1zYWZhcmkgYW5kIG1vdmUgdGhpcyBkb3duIHRvIFBvcnQuCiAgICAgZGVmIHNob3dfcmVz
dWx0c19odG1sX2ZpbGUoc2VsZiwgcmVzdWx0c19maWxlbmFtZSk6CiAgICAgICAgIHJ1bl9sYXVu
Y2hlcl9hcmdzID0gW10KICAgICAgICAgaWYgc2VsZi5nZXRfb3B0aW9uKCd3ZWJraXRfdGVzdF9y
dW5uZXInKToKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvc2VydmVyX3Byb2Nlc3MucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L3NlcnZlcl9wcm9jZXNzLnB5CmluZGV4IGUwN2E4MDRiMGIyMWJjYTBmM2I5ODEy
MzFlNTZhNjFjNTVmNjMxOWEuLjk1ZTExOTY3NjE0OWFjYmFmYzAzYmYxZTgxNWQwMDNlNzE3ODUy
NWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
c2VydmVyX3Byb2Nlc3MucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9zZXJ2ZXJfcHJvY2Vzcy5weQpAQCAtMzIsNyArMzIsNiBAQAogaW1wb3J0IGVycm5v
CiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IHNpZ25hbAotaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9y
dCBzeXMKIGltcG9ydCB0aW1lCiAKQEAgLTk5LDEyICs5OCwxMiBAQCBjbGFzcyBTZXJ2ZXJQcm9j
ZXNzKG9iamVjdCk6CiAgICAgICAgIHNlbGYuX3Jlc2V0KCkKICAgICAgICAgIyBjbG9zZV9mZHMg
aXMgYSB3b3JrYXJvdW5kIGZvciBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMjMyMAogICAg
ICAgICBjbG9zZV9mZHMgPSBub3Qgc2VsZi5faG9zdC5wbGF0Zm9ybS5pc193aW4oKQotICAgICAg
ICBzZWxmLl9wcm9jID0gc3VicHJvY2Vzcy5Qb3BlbihzZWxmLl9jbWQsIHN0ZGluPXN1YnByb2Nl
c3MuUElQRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1
YnByb2Nlc3MuUElQRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rk
ZXJyPXN1YnByb2Nlc3MuUElQRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY2xvc2VfZmRzPWNsb3NlX2ZkcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZW52PXNlbGYuX2VudiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdW5pdmVyc2FsX25ld2xpbmVzPXNlbGYuX3VuaXZlcnNhbF9uZXdsaW5lcykKKyAgICAgICAg
c2VsZi5fcHJvYyA9IHNlbGYuX2hvc3QuZXhlY3V0aXZlLnBvcGVuKHNlbGYuX2NtZCwgc3RkaW49
c2VsZi5faG9zdC5leGVjdXRpdmUuUElQRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zZWxmLl9ob3N0LmV4ZWN1dGl2ZS5QSVBFLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyPXNlbGYu
X2hvc3QuZXhlY3V0aXZlLlBJUEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjbG9zZV9mZHM9Y2xvc2VfZmRzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52PXNlbGYuX2VudiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXZlcnNhbF9uZXdsaW5lcz1zZWxm
Ll91bml2ZXJzYWxfbmV3bGluZXMpCiAgICAgICAgIHNlbGYuX3BpZCA9IHNlbGYuX3Byb2MucGlk
CiAgICAgICAgIGZkID0gc2VsZi5fcHJvYy5zdGRvdXQuZmlsZW5vKCkKICAgICAgICAgaWYgbm90
IHNlbGYuX3VzZV93aW4zMl9hcGlzOgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9zZXJ2ZXJfcHJvY2Vzc19tb2NrLnB5IGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9zZXJ2ZXJfcHJvY2Vzc19tb2NrLnB5Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmFlNDg1MjNlYjMyOGVjZmU2NDdiYzlkNGQ3NzcwZjI3M2JjZjBiYmMKLS0tIC9kZXYv
bnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3NlcnZl
cl9wcm9jZXNzX21vY2sucHkKQEAgLTAsMCArMSw3NyBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTIg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
IworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKworY2xh
c3MgTW9ja1NlcnZlclByb2Nlc3Mob2JqZWN0KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcG9y
dF9vYmo9Tm9uZSwgbmFtZT1Ob25lLCBjbWQ9Tm9uZSwgZW52PU5vbmUsIHVuaXZlcnNhbF9uZXds
aW5lcz1GYWxzZSwgbGluZXM9Tm9uZSk6CisgICAgICAgIHNlbGYudGltZWRfb3V0ID0gRmFsc2UK
KyAgICAgICAgc2VsZi5saW5lcyA9IGxpbmVzIG9yIFtdCisgICAgICAgIHNlbGYuY3Jhc2hlZCA9
IEZhbHNlCisgICAgICAgIHNlbGYud3JpdGVzID0gW10KKyAgICAgICAgc2VsZi5jbWQgPSBjbWQK
KyAgICAgICAgc2VsZi5lbnYgPSBlbnYKKyAgICAgICAgc2VsZi5zdGFydGVkID0gRmFsc2UKKyAg
ICAgICAgc2VsZi5zdG9wcGVkID0gRmFsc2UKKworICAgIGRlZiB3cml0ZShzZWxmLCBieXRlcyk6
CisgICAgICAgIHNlbGYud3JpdGVzLmFwcGVuZChieXRlcykKKworICAgIGRlZiBoYXNfY3Jhc2hl
ZChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuY3Jhc2hlZAorCisgICAgZGVmIHJlYWRfc3Rk
b3V0X2xpbmUoc2VsZiwgZGVhZGxpbmUpOgorICAgICAgICByZXR1cm4gc2VsZi5saW5lcy5wb3Ao
MCkgKyAiXG4iCisKKyAgICBkZWYgcmVhZF9zdGRvdXQoc2VsZiwgZGVhZGxpbmUsIHNpemUpOgor
ICAgICAgICBmaXJzdF9saW5lID0gc2VsZi5saW5lc1swXQorICAgICAgICBpZiBzaXplID4gbGVu
KGZpcnN0X2xpbmUpOgorICAgICAgICAgICAgc2VsZi5saW5lcy5wb3AoMCkKKyAgICAgICAgICAg
IHJlbWFpbmluZ19zaXplID0gc2l6ZSAtIGxlbihmaXJzdF9saW5lKSAtIDEKKyAgICAgICAgICAg
IGlmIG5vdCByZW1haW5pbmdfc2l6ZToKKyAgICAgICAgICAgICAgICByZXR1cm4gZmlyc3RfbGlu
ZSArICJcbiIKKyAgICAgICAgICAgIHJldHVybiBmaXJzdF9saW5lICsgIlxuIiArIHNlbGYucmVh
ZF9zdGRvdXQoZGVhZGxpbmUsIHJlbWFpbmluZ19zaXplKQorICAgICAgICByZXN1bHQgPSBzZWxm
LmxpbmVzWzBdWzpzaXplXQorICAgICAgICBzZWxmLmxpbmVzWzBdID0gc2VsZi5saW5lc1swXVtz
aXplOl0KKyAgICAgICAgcmV0dXJuIHJlc3VsdAorCisgICAgZGVmIHBvcF9hbGxfYnVmZmVyZWRf
c3RkZXJyKHNlbGYpOgorICAgICAgICByZXR1cm4gJycKKworICAgIGRlZiByZWFkX2VpdGhlcl9z
dGRvdXRfb3Jfc3RkZXJyX2xpbmUoc2VsZiwgZGVhZGxpbmUpOgorICAgICAgICAjIEZJWE1FOiBX
ZSBzaG91bGQgaGF2ZSB0ZXN0cyB3aGljaCBpbnRlcm1peCBzdGRlcnIgYW5kIHN0ZG91dCBsaW5l
cy4KKyAgICAgICAgcmV0dXJuIHNlbGYucmVhZF9zdGRvdXRfbGluZShkZWFkbGluZSksIE5vbmUK
KworICAgIGRlZiBzdGFydChzZWxmKToKKyAgICAgICAgc2VsZi5zdGFydGVkID0gVHJ1ZQorCisg
ICAgZGVmIHN0b3Aoc2VsZiwga2lsbF9kaXJlY3RseT1GYWxzZSk6CisgICAgICAgIHNlbGYuc3Rv
cHBlZCA9IFRydWUKKyAgICAgICAgcmV0dXJuCisKKyAgICBkZWYga2lsbChzZWxmKToKKyAgICAg
ICAgcmV0dXJuCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L3dlYmtpdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvd2Via2l0LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBkNWI3YzBkN2Y3YWEz
MjI3YjZkNmQxN2ZkNjJjNGRkNDFmYmRjYTI4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvd2Via2l0LnB5CisrKyAvZGV2L251bGwKQEAgLTEsMjk4ICswLDAgQEAKLSMhL3Vzci9iaW4v
ZW52IHB5dGhvbgotIyBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSMgQ29weXJpZ2h0IChDKSAyMDEwIEdhYm9yIFJhcGNzYW55aSA8cmdhYm9yQGlu
Zi51LXN6ZWdlZC5odT4sIFVuaXZlcnNpdHkgb2YgU3plZ2VkCi0jIENvcHlyaWdodCAoQykgMjAx
MSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
Ci0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRo
ZXIgdGhlIEdvb2dsZSBuYW1lIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0j
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
Ci0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotIiIi
V2ViS2l0IGltcGxlbWVudGF0aW9ucyBvZiB0aGUgUG9ydCBpbnRlcmZhY2UuIiIiCi0KLWltcG9y
dCBpdGVydG9vbHMKLWltcG9ydCBsb2dnaW5nCi1pbXBvcnQgb3BlcmF0b3IKLWltcG9ydCByZQot
aW1wb3J0IHRpbWUKLQotZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBv
cnQgRXhlY3V0aXZlLCBTY3JpcHRFcnJvcgotZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9y
dCBpbXBvcnQgc2VydmVyX3Byb2Nlc3MsIFBvcnQKLQotCi1fbG9nID0gbG9nZ2luZy5nZXRMb2dn
ZXIoX19uYW1lX18pCi0KLQotY2xhc3MgV2ViS2l0UG9ydChQb3J0KToKLQotICAgICMgRklYTUU6
IEV2ZW50dWFsbHkgd2Ugc2hvdWxkIHN0YW5kYXJpemUgcG9ydCBuYW1pbmcsIGFuZCBtYWtlIHRo
aXMgbWV0aG9kIHNtYXJ0IGVub3VnaAotICAgICMgdG8gdXNlIGZvciBhbGwgcG9ydCBjb25maWd1
cmF0aW9ucyAoaW5jbHVkaW5nIGFyY2hpdGVjdHVyZXMsIGdyYXBoaWNzIHR5cGVzLCBldGMpLgot
ICAgIGRlZiBfcG9ydF9mbGFnX2Zvcl9zY3JpcHRzKHNlbGYpOgotICAgICAgICAjIFRoaXMgaXMg
b3ZlcnJyaWRlbiBieSBwb3J0cyB3aGljaCBuZWVkIGEgZmxhZyBwYXNzZWQgdG8gc2NyaXB0cyB0
byBkaXN0aW5ndWlzaCB0aGUgdXNlIG9mIHRoYXQgcG9ydC4KLSAgICAgICAgIyBGb3IgZXhhbXBs
ZSAtLXF0IG9uIGxpbnV4LCBzaW5jZSBhIHVzZXIgbWlnaHQgaGF2ZSBib3RoIEd0ayBhbmQgUXQg
bGlicmFyaWVzIGluc3RhbGxlZC4KLSAgICAgICAgIyBGSVhNRTogQ2hyb21pdW0gc2hvdWxkIG92
ZXJyaWRlIHRoaXMgb25jZSBDaHJvbWl1bVBvcnQgaXMgYSBXZWJLaXRQb3J0LgotICAgICAgICBy
ZXR1cm4gTm9uZQotCi0gICAgIyBUaGlzIGlzIG1vZGVsZWQgYWZ0ZXIgd2Via2l0ZGlycy5wbSBh
cmd1bWVudHNGb3JDb25maWd1cmF0aW9uKCkgZnJvbSBvbGQtcnVuLXdlYmtpdC10ZXN0cwotICAg
IGRlZiBfYXJndW1lbnRzX2Zvcl9jb25maWd1cmF0aW9uKHNlbGYpOgotICAgICAgICBjb25maWdf
YXJncyA9IFtdCi0gICAgICAgIGNvbmZpZ19hcmdzLmFwcGVuZChzZWxmLl9jb25maWcuZmxhZ19m
b3JfY29uZmlndXJhdGlvbihzZWxmLmdldF9vcHRpb24oJ2NvbmZpZ3VyYXRpb24nKSkpCi0gICAg
ICAgICMgRklYTUU6IFdlIG1heSBuZWVkIHRvIGFkZCBzdXBwb3J0IGZvciBwYXNzaW5nIC0tMzIt
Yml0IGxpa2Ugb2xkLXJ1bi13ZWJraXQtdGVzdHMgaGFkLgotICAgICAgICBwb3J0X2ZsYWcgPSBz
ZWxmLl9wb3J0X2ZsYWdfZm9yX3NjcmlwdHMoKQotICAgICAgICBpZiBwb3J0X2ZsYWc6Ci0gICAg
ICAgICAgICBjb25maWdfYXJncy5hcHBlbmQocG9ydF9mbGFnKQotICAgICAgICByZXR1cm4gY29u
ZmlnX2FyZ3MKLQotICAgIGRlZiBfcnVuX3NjcmlwdChzZWxmLCBzY3JpcHRfbmFtZSwgYXJncz1O
b25lLCBpbmNsdWRlX2NvbmZpZ3VyYXRpb25fYXJndW1lbnRzPVRydWUsIGRlY29kZV9vdXRwdXQ9
VHJ1ZSwgZW52PU5vbmUpOgotICAgICAgICBydW5fc2NyaXB0X2NvbW1hbmQgPSBbc2VsZi5fY29u
ZmlnLnNjcmlwdF9wYXRoKHNjcmlwdF9uYW1lKV0KLSAgICAgICAgaWYgaW5jbHVkZV9jb25maWd1
cmF0aW9uX2FyZ3VtZW50czoKLSAgICAgICAgICAgIHJ1bl9zY3JpcHRfY29tbWFuZC5leHRlbmQo
c2VsZi5fYXJndW1lbnRzX2Zvcl9jb25maWd1cmF0aW9uKCkpCi0gICAgICAgIGlmIGFyZ3M6Ci0g
ICAgICAgICAgICBydW5fc2NyaXB0X2NvbW1hbmQuZXh0ZW5kKGFyZ3MpCi0gICAgICAgIG91dHB1
dCA9IHNlbGYuX2V4ZWN1dGl2ZS5ydW5fY29tbWFuZChydW5fc2NyaXB0X2NvbW1hbmQsIGN3ZD1z
ZWxmLl9jb25maWcud2Via2l0X2Jhc2VfZGlyKCksIGRlY29kZV9vdXRwdXQ9ZGVjb2RlX291dHB1
dCwgZW52PWVudikKLSAgICAgICAgX2xvZy5kZWJ1ZygnT3V0cHV0IG9mICVzOlxuJXMnICUgKHJ1
bl9zY3JpcHRfY29tbWFuZCwgb3V0cHV0KSkKLSAgICAgICAgcmV0dXJuIG91dHB1dAotCi0gICAg
ZGVmIF9idWlsZF9kcml2ZXIoc2VsZik6Ci0gICAgICAgIGVudmlyb25tZW50ID0gc2VsZi5ob3N0
LmNvcHlfY3VycmVudF9lbnZpcm9ubWVudCgpCi0gICAgICAgIGVudmlyb25tZW50LmRpc2FibGVf
Z2NjX3NtYXJ0cXVvdGVzKCkKLSAgICAgICAgZW52ID0gZW52aXJvbm1lbnQudG9fZGljdGlvbmFy
eSgpCi0KLSAgICAgICAgIyBGSVhNRTogV2UgYnVpbGQgYm90aCBEdW1wUmVuZGVyVHJlZSBhbmQg
V2ViS2l0VGVzdFJ1bm5lciBmb3IKLSAgICAgICAgIyBXZWJLaXRUZXN0UnVubmVyIHJ1bnMgYmVj
YXVzZSBEdW1wUmVuZGVyVHJlZSBzdGlsbCBpbmNsdWRlcwotICAgICAgICAjIHRoZSBEdW1wUmVu
ZGVyVHJlZVN1cHBvcnQgbW9kdWxlIGFuZCB0aGUgVGVzdE5ldHNjYXBlUGx1Z2luLgotICAgICAg
ICAjIFRoZXNlIHR3byBwcm9qZWN0cyBzaG91bGQgYmUgZmFjdG9yZWQgb3V0IGludG8gdGhlaXIg
b3duCi0gICAgICAgICMgcHJvamVjdHMuCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYu
X3J1bl9zY3JpcHQoImJ1aWxkLWR1bXByZW5kZXJ0cmVlIiwgYXJncz1zZWxmLl9idWlsZF9kcml2
ZXJfZmxhZ3MoKSwgZW52PWVudikKLSAgICAgICAgICAgIGlmIHNlbGYuZ2V0X29wdGlvbignd2Vi
a2l0X3Rlc3RfcnVubmVyJyk6Ci0gICAgICAgICAgICAgICAgc2VsZi5fcnVuX3NjcmlwdCgiYnVp
bGQtd2Via2l0dGVzdHJ1bm5lciIsIGFyZ3M9c2VsZi5fYnVpbGRfZHJpdmVyX2ZsYWdzKCksIGVu
dj1lbnYpCi0gICAgICAgIGV4Y2VwdCBTY3JpcHRFcnJvciwgZToKLSAgICAgICAgICAgIF9sb2cu
ZXJyb3IoZS5tZXNzYWdlX3dpdGhfb3V0cHV0KG91dHB1dF9saW1pdD1Ob25lKSkKLSAgICAgICAg
ICAgIHJldHVybiBGYWxzZQotICAgICAgICByZXR1cm4gVHJ1ZQotCi0gICAgZGVmIF9idWlsZF9k
cml2ZXJfZmxhZ3Moc2VsZik6Ci0gICAgICAgIHJldHVybiBbXQotCi0gICAgZGVmIGRpZmZfaW1h
Z2Uoc2VsZiwgZXhwZWN0ZWRfY29udGVudHMsIGFjdHVhbF9jb250ZW50cywgdG9sZXJhbmNlPU5v
bmUpOgotICAgICAgICAjIEhhbmRsZSB0aGUgY2FzZSB3aGVyZSB0aGUgdGVzdCBkaWRuJ3QgYWN0
dWFsbHkgZ2VuZXJhdGUgYW4gaW1hZ2UuCi0gICAgICAgICMgRklYTUU6IG5lZWQgdW5pdCB0ZXN0
cyBmb3IgdGhpcy4KLSAgICAgICAgaWYgbm90IGFjdHVhbF9jb250ZW50cyBhbmQgbm90IGV4cGVj
dGVkX2NvbnRlbnRzOgotICAgICAgICAgICAgcmV0dXJuIChOb25lLCAwKQotICAgICAgICBpZiBu
b3QgYWN0dWFsX2NvbnRlbnRzIG9yIG5vdCBleHBlY3RlZF9jb250ZW50czoKLSAgICAgICAgICAg
ICMgRklYTUU6IEl0J3Mgbm90IGNsZWFyIHdoYXQgd2Ugc2hvdWxkIHJldHVybiBpbiB0aGlzIGNh
c2UuCi0gICAgICAgICAgICAjIE1heWJlIHdlIHNob3VsZCB0aHJvdyBhbiBleGNlcHRpb24/Ci0g
ICAgICAgICAgICByZXR1cm4gKFRydWUsIDApCi0KLSAgICAgICAgcHJvY2VzcyA9IHNlbGYuX3N0
YXJ0X2ltYWdlX2RpZmZfcHJvY2VzcyhleHBlY3RlZF9jb250ZW50cywgYWN0dWFsX2NvbnRlbnRz
LCB0b2xlcmFuY2U9dG9sZXJhbmNlKQotICAgICAgICByZXR1cm4gc2VsZi5fcmVhZF9pbWFnZV9k
aWZmKHByb2Nlc3MpCi0KLSAgICBkZWYgX2ltYWdlX2RpZmZfY29tbWFuZChzZWxmLCB0b2xlcmFu
Y2U9Tm9uZSk6Ci0gICAgICAgICMgRklYTUU6IFRoZXJlIG5lZWRzIHRvIGJlIGEgbW9yZSBzYW5l
IHdheSBvZiBoYW5kbGluZyBkZWZhdWx0Ci0gICAgICAgICMgdmFsdWVzIGZvciBvcHRpb25zIHNv
IHRoYXQgeW91IGNhbiBkaXN0aW5ndWlzaCBiZXR3ZWVuIGEgZGVmYXVsdAotICAgICAgICAjIHZh
bHVlIG9mIE5vbmUgYW5kIGEgZGVmYXVsdCB2YWx1ZSB0aGF0IHdhc24ndCBzZXQuCi0gICAgICAg
IGlmIHRvbGVyYW5jZSBpcyBOb25lOgotICAgICAgICAgICAgaWYgc2VsZi5nZXRfb3B0aW9uKCd0
b2xlcmFuY2UnKSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICB0b2xlcmFuY2UgPSBzZWxm
LmdldF9vcHRpb24oJ3RvbGVyYW5jZScpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAg
ICAgIHRvbGVyYW5jZSA9IDAuMQotCi0gICAgICAgIGNvbW1hbmQgPSBbc2VsZi5fcGF0aF90b19p
bWFnZV9kaWZmKCksICctLXRvbGVyYW5jZScsIHN0cih0b2xlcmFuY2UpXQotICAgICAgICByZXR1
cm4gY29tbWFuZAotCi0gICAgZGVmIF9zdGFydF9pbWFnZV9kaWZmX3Byb2Nlc3Moc2VsZiwgZXhw
ZWN0ZWRfY29udGVudHMsIGFjdHVhbF9jb250ZW50cywgdG9sZXJhbmNlPU5vbmUpOgotICAgICAg
ICBjb21tYW5kID0gc2VsZi5faW1hZ2VfZGlmZl9jb21tYW5kKHRvbGVyYW5jZSkKLSAgICAgICAg
ZW52aXJvbm1lbnQgPSBzZWxmLnNldHVwX2Vudmlyb25fZm9yX3NlcnZlcignSW1hZ2VEaWZmJykK
LSAgICAgICAgcHJvY2VzcyA9IHNlcnZlcl9wcm9jZXNzLlNlcnZlclByb2Nlc3Moc2VsZiwgJ0lt
YWdlRGlmZicsIGNvbW1hbmQsIGVudmlyb25tZW50KQotCi0gICAgICAgIHByb2Nlc3Mud3JpdGUo
J0NvbnRlbnQtTGVuZ3RoOiAlZFxuJXNDb250ZW50LUxlbmd0aDogJWRcbiVzJyAlICgKLSAgICAg
ICAgICAgIGxlbihhY3R1YWxfY29udGVudHMpLCBhY3R1YWxfY29udGVudHMsCi0gICAgICAgICAg
ICBsZW4oZXhwZWN0ZWRfY29udGVudHMpLCBleHBlY3RlZF9jb250ZW50cykpCi0gICAgICAgIHJl
dHVybiBwcm9jZXNzCi0KLSAgICBkZWYgX3JlYWRfaW1hZ2VfZGlmZihzZWxmLCBzcCk6Ci0gICAg
ICAgIGRlYWRsaW5lID0gdGltZS50aW1lKCkgKyAyLjAKLSAgICAgICAgb3V0cHV0ID0gTm9uZQot
ICAgICAgICBvdXRwdXRfaW1hZ2UgPSAiIgotCi0gICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAg
ICAgICBvdXRwdXQgPSBzcC5yZWFkX3N0ZG91dF9saW5lKGRlYWRsaW5lKQotICAgICAgICAgICAg
aWYgc3AudGltZWRfb3V0IG9yIHNwLmhhc19jcmFzaGVkKCkgb3Igbm90IG91dHB1dDoKLSAgICAg
ICAgICAgICAgICBicmVhawotCi0gICAgICAgICAgICBpZiBvdXRwdXQuc3RhcnRzd2l0aCgnZGlm
ZicpOiAgIyBUaGlzIGlzIHRoZSBsYXN0IGxpbmUgSW1hZ2VEaWZmIHByaW50cy4KLSAgICAgICAg
ICAgICAgICBicmVhawotCi0gICAgICAgICAgICBpZiBvdXRwdXQuc3RhcnRzd2l0aCgnQ29udGVu
dC1MZW5ndGgnKToKLSAgICAgICAgICAgICAgICBtID0gcmUubWF0Y2goJ0NvbnRlbnQtTGVuZ3Ro
OiAoXGQrKScsIG91dHB1dCkKLSAgICAgICAgICAgICAgICBjb250ZW50X2xlbmd0aCA9IGludCht
Lmdyb3VwKDEpKQotICAgICAgICAgICAgICAgIG91dHB1dF9pbWFnZSA9IHNwLnJlYWRfc3Rkb3V0
KGRlYWRsaW5lLCBjb250ZW50X2xlbmd0aCkKLSAgICAgICAgICAgICAgICBvdXRwdXQgPSBzcC5y
ZWFkX3N0ZG91dF9saW5lKGRlYWRsaW5lKQotICAgICAgICAgICAgICAgIGJyZWFrCi0KLSAgICAg
ICAgc3RkZXJyID0gc3AucG9wX2FsbF9idWZmZXJlZF9zdGRlcnIoKQotICAgICAgICBpZiBzdGRl
cnI6Ci0gICAgICAgICAgICBfbG9nLndhcm4oIkltYWdlRGlmZiBwcm9kdWNlZCBzdGRlcnIgb3V0
cHV0OlxuIiArIHN0ZGVycikKLSAgICAgICAgaWYgc3AudGltZWRfb3V0OgotICAgICAgICAgICAg
X2xvZy5lcnJvcigiSW1hZ2VEaWZmIHRpbWVkIG91dCIpCi0gICAgICAgIGlmIHNwLmhhc19jcmFz
aGVkKCk6Ci0gICAgICAgICAgICBfbG9nLmVycm9yKCJJbWFnZURpZmYgY3Jhc2hlZCIpCi0gICAg
ICAgICMgRklYTUU6IFRoZXJlIGlzIG5vIG5lZWQgdG8gc2h1dCBkb3duIHRoZSBJbWFnZURpZmYg
c2VydmVyIGFmdGVyIGV2ZXJ5IGRpZmYuCi0gICAgICAgIHNwLnN0b3AoKQotCi0gICAgICAgIGRp
ZmZfcGVyY2VudCA9IDAKLSAgICAgICAgaWYgb3V0cHV0IGFuZCBvdXRwdXQuc3RhcnRzd2l0aCgn
ZGlmZicpOgotICAgICAgICAgICAgbSA9IHJlLm1hdGNoKCdkaWZmOiAoLispJSAocGFzc2VkfGZh
aWxlZCknLCBvdXRwdXQpCi0gICAgICAgICAgICBpZiBtLmdyb3VwKDIpID09ICdwYXNzZWQnOgot
ICAgICAgICAgICAgICAgIHJldHVybiBbTm9uZSwgMF0KLSAgICAgICAgICAgIGRpZmZfcGVyY2Vu
dCA9IGZsb2F0KG0uZ3JvdXAoMSkpCi0KLSAgICAgICAgcmV0dXJuIChvdXRwdXRfaW1hZ2UsIGRp
ZmZfcGVyY2VudCkKLQotICAgIGRlZiBfdGVzdHNfZm9yX290aGVyX3BsYXRmb3JtcyhzZWxmKToK
LSAgICAgICAgIyBCeSBkZWZhdWx0IHdlIHdpbGwgc2tpcCBhbnkgZGlyZWN0b3J5IHVuZGVyIExh
eW91dFRlc3RzL3BsYXRmb3JtCi0gICAgICAgICMgdGhhdCBpc24ndCBpbiBvdXIgYmFzZWxpbmUg
c2VhcmNoIHBhdGggKHRoaXMgbWlycm9ycyB3aGF0Ci0gICAgICAgICMgb2xkLXJ1bi13ZWJraXQt
dGVzdHMgZG9lcyBpbiBmaW5kVGVzdHNUb1J1bigpKS4KLSAgICAgICAgIyBOb3RlIHRoaXMgcmV0
dXJucyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS8qLCBub3QgcGxhdGZvcm0vKi8qLgotICAgICAgICBl
bnRyaWVzID0gc2VsZi5fZmlsZXN5c3RlbS5nbG9iKHNlbGYuX3dlYmtpdF9iYXNlbGluZV9wYXRo
KCcqJykpCi0gICAgICAgIGRpcnNfdG9fc2tpcCA9IFtdCi0gICAgICAgIGZvciBlbnRyeSBpbiBl
bnRyaWVzOgotICAgICAgICAgICAgaWYgc2VsZi5fZmlsZXN5c3RlbS5pc2RpcihlbnRyeSkgYW5k
IGVudHJ5IG5vdCBpbiBzZWxmLmJhc2VsaW5lX3NlYXJjaF9wYXRoKCk6Ci0gICAgICAgICAgICAg
ICAgYmFzZW5hbWUgPSBzZWxmLl9maWxlc3lzdGVtLmJhc2VuYW1lKGVudHJ5KQotICAgICAgICAg
ICAgICAgIGRpcnNfdG9fc2tpcC5hcHBlbmQoJ3BsYXRmb3JtLyVzJyAlIGJhc2VuYW1lKQotICAg
ICAgICByZXR1cm4gZGlyc190b19za2lwCi0KLSAgICBkZWYgX3J1bnRpbWVfZmVhdHVyZV9saXN0
KHNlbGYpOgotICAgICAgICAiIiJJZiBhIHBvcnQgbWFrZXMgY2VydGFpbiBmZWF0dXJlcyBhdmFp
bGFibGUgb25seSB0aHJvdWdoIHJ1bnRpbWUgZmxhZ3MsIGl0IGNhbiBvdmVycmlkZSB0aGlzIHJv
dXRpbmUgdG8gaW5kaWNhdGUgd2hpY2ggb25lcyBhcmUgYXZhaWxhYmxlLiIiIgotICAgICAgICBy
ZXR1cm4gTm9uZQotCi0gICAgZGVmIG5tX2NvbW1hbmQoc2VsZik6Ci0gICAgICAgIHJldHVybiAn
bm0nCi0KLSAgICBkZWYgX21vZHVsZXNfdG9fc2VhcmNoX2Zvcl9zeW1ib2xzKHNlbGYpOgotICAg
ICAgICBwYXRoID0gc2VsZi5fcGF0aF90b193ZWJjb3JlX2xpYnJhcnkoKQotICAgICAgICBpZiBw
YXRoOgotICAgICAgICAgICAgcmV0dXJuIFtwYXRoXQotICAgICAgICByZXR1cm4gW10KLQotICAg
IGRlZiBfc3ltYm9sc19zdHJpbmcoc2VsZik6Ci0gICAgICAgIHN5bWJvbHMgPSAnJwotICAgICAg
ICBmb3IgcGF0aF90b19tb2R1bGUgaW4gc2VsZi5fbW9kdWxlc190b19zZWFyY2hfZm9yX3N5bWJv
bHMoKToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzeW1ib2xzICs9IHNlbGYu
X2V4ZWN1dGl2ZS5ydW5fY29tbWFuZChbc2VsZi5ubV9jb21tYW5kKCksIHBhdGhfdG9fbW9kdWxl
XSwgZXJyb3JfaGFuZGxlcj1FeGVjdXRpdmUuaWdub3JlX2Vycm9yKQotICAgICAgICAgICAgZXhj
ZXB0IE9TRXJyb3IsIGU6Ci0gICAgICAgICAgICAgICAgX2xvZy53YXJuKCJGYWlsZWQgdG8gcnVu
IG5tOiAlcy4gIENhbid0IGRldGVybWluZSBzdXBwb3J0ZWQgZmVhdHVyZXMgY29ycmVjdGx5LiIg
JSBlKQotICAgICAgICByZXR1cm4gc3ltYm9scwotCi0gICAgIyBQb3J0cyB3aGljaCB1c2UgcnVu
LXRpbWUgZmVhdHVyZSBkZXRlY3Rpb24gc2hvdWxkIGRlZmluZSB0aGlzIG1ldGhvZCBhbmQgcmV0
dXJuCi0gICAgIyBhIGRpY3Rpb25hcnkgbWFwcGluZyBmcm9tIEZlYXR1cmUgTmFtZXMgdG8gc2tp
cHBlZCBkaXJlY3RvaXJlcy4gIE5SV1Qgd2lsbAotICAgICMgcnVuIER1bXBSZW5kZXJUcmVlIC0t
cHJpbnQtc3VwcG9ydGVkLWZlYXR1cmVzIGFuZCBwYXJzZSB0aGUgb3V0cHV0LgotICAgICMgSWYg
dGhlIEZlYXR1cmUgTmFtZXMgYXJlIG5vdCBmb3VuZCBpbiB0aGUgb3V0cHV0LCB0aGUgY29ycmVz
cG9uZGluZyBkaXJlY3RvcmllcwotICAgICMgd2lsbCBiZSBza2lwcGVkLgotICAgIGRlZiBfbWlz
c2luZ19mZWF0dXJlX3RvX3NraXBwZWRfdGVzdHMoc2VsZik6Ci0gICAgICAgICIiIlJldHVybiB0
aGUgc3VwcG9ydGVkIGZlYXR1cmUgZGljdGlvbmFyeS4gS2V5cyBhcmUgZmVhdHVyZSBuYW1lcyBh
bmQgdmFsdWVzCi0gICAgICAgIGFyZSB0aGUgbGlzdHMgb2YgZGlyZWN0b3JpZXMgdG8gc2tpcCBp
ZiB0aGUgZmVhdHVyZSBuYW1lIGlzIG5vdCBtYXRjaGVkLiIiIgotICAgICAgICAjIEZJWE1FOiBU
aGlzIGxpc3QgbWF0Y2hlcyBXZWJLaXRXaW4gYW5kIHNob3VsZCBiZSBtb3ZlZCBvbnRvIHRoZSBX
aW4gcG9ydC4KLSAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgICJBY2NlbGVyYXRlZCBDb21w
b3NpdGluZyI6IFsiY29tcG9zaXRpbmciXSwKLSAgICAgICAgICAgICIzRCBSZW5kZXJpbmciOiBb
ImFuaW1hdGlvbnMvM2QiLCAidHJhbnNmb3Jtcy8zZCJdLAotICAgICAgICB9Ci0KLSAgICAjIFBv
cnRzIHdoaWNoIHVzZSBjb21waWxlLXRpbWUgZmVhdHVyZSBkZXRlY3Rpb24gc2hvdWxkIGRlZmlu
ZSB0aGlzIG1ldGhvZCBhbmQgcmV0dXJuCi0gICAgIyBhIGRpY3Rpb25hcnkgbWFwcGluZyBmcm9t
IHN5bWJvbCBzdWJzdHJpbmdzIHRvIHBvc3NpYmx5IGRpc2FibGVkIHRlc3QgZGlyZWN0b3JpZXMu
Ci0gICAgIyBXaGVuIHRoZSBzeW1ib2wgc3Vic3RyaW5ncyBhcmUgbm90IG1hdGNoZWQsIHRoZSBk
aXJlY3RvcmllcyB3aWxsIGJlIHNraXBwZWQuCi0gICAgIyBJZiBwb3J0cyBkb24ndCBldmVyIGVu
YWJsZSBjZXJ0YWluIGZlYXR1cmVzLCB0aGVuIHRob3NlIGRpcmVjdG9yaWVzIGNhbiBqdXN0IGJl
Ci0gICAgIyBpbiB0aGUgU2tpcHBlZCBsaXN0IGluc3RlYWQgb2YgY29tcGlsZS10aW1lLWNoZWNr
ZWQgaGVyZS4KLSAgICBkZWYgX21pc3Npbmdfc3ltYm9sX3RvX3NraXBwZWRfdGVzdHMoc2VsZik6
Ci0gICAgICAgICIiIlJldHVybiB0aGUgc3VwcG9ydGVkIGZlYXR1cmUgZGljdGlvbmFyeS4gVGhl
IGtleXMgYXJlIHN5bWJvbC1zdWJzdHJpbmdzCi0gICAgICAgIGFuZCB0aGUgdmFsdWVzIGFyZSB0
aGUgbGlzdHMgb2YgZGlyZWN0b3JpZXMgdG8gc2tpcCBpZiB0aGF0IHN5bWJvbCBpcyBtaXNzaW5n
LiIiIgotICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgIk1hdGhNTEVsZW1lbnQiOiBbIm1h
dGhtbCJdLAotICAgICAgICAgICAgIkdyYXBoaWNzTGF5ZXIiOiBbImNvbXBvc2l0aW5nIl0sCi0g
ICAgICAgICAgICAiV2ViQ29yZUhhczNEUmVuZGVyaW5nIjogWyJhbmltYXRpb25zLzNkIiwgInRy
YW5zZm9ybXMvM2QiXSwKLSAgICAgICAgICAgICJXZWJHTFNoYWRlciI6IFsiZmFzdC9jYW52YXMv
d2ViZ2wiLCAiY29tcG9zaXRpbmcvd2ViZ2wiLCAiaHR0cC90ZXN0cy9jYW52YXMvd2ViZ2wiXSwK
LSAgICAgICAgICAgICJNSFRNTEFyY2hpdmUiOiBbIm1odG1sIl0sCi0gICAgICAgICAgICAiQ1NT
VmFyaWFibGVWYWx1ZSI6IFsiZmFzdC9jc3MvdmFyaWFibGVzIiwgImluc3BlY3Rvci9zdHlsZXMv
dmFyaWFibGVzIl0sCi0gICAgICAgIH0KLQotICAgIGRlZiBfaGFzX3Rlc3RfaW5fZGlyZWN0b3Jp
ZXMoc2VsZiwgZGlyZWN0b3J5X2xpc3RzLCB0ZXN0X2xpc3QpOgotICAgICAgICBpZiBub3QgdGVz
dF9saXN0OgotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICAgICAgZGlyZWN0b3JpZXMg
PSBpdGVydG9vbHMuY2hhaW4uZnJvbV9pdGVyYWJsZShkaXJlY3RvcnlfbGlzdHMpCi0gICAgICAg
IGZvciBkaXJlY3RvcnksIHRlc3QgaW4gaXRlcnRvb2xzLnByb2R1Y3QoZGlyZWN0b3JpZXMsIHRl
c3RfbGlzdCk6Ci0gICAgICAgICAgICBpZiB0ZXN0LnN0YXJ0c3dpdGgoZGlyZWN0b3J5KToKLSAg
ICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgIGRl
ZiBfc2tpcHBlZF90ZXN0c19mb3JfdW5zdXBwb3J0ZWRfZmVhdHVyZXMoc2VsZiwgdGVzdF9saXN0
KToKLSAgICAgICAgIyBPbmx5IGNoZWNrIHRoZSBydW50aW1lIGZlYXR1cmUgbGlzdCBvZiB0aGVy
ZSBhcmUgdGVzdHMgaW4gdGhlIHRlc3RfbGlzdCB0aGF0IG1pZ2h0IGdldCBza2lwcGVkLgotICAg
ICAgICAjIFRoaXMgaXMgYSBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24gdG8gYXZvaWQgdGhlIHN1
YnByb2Nlc3MgY2FsbCB0byBEUlQuCi0gICAgICAgIGlmIHNlbGYuX2hhc190ZXN0X2luX2RpcmVj
dG9yaWVzKHNlbGYuX21pc3NpbmdfZmVhdHVyZV90b19za2lwcGVkX3Rlc3RzKCkudmFsdWVzKCks
IHRlc3RfbGlzdCk6Ci0gICAgICAgICAgICAjIElmIHRoZSBwb3J0IHN1cHBvcnRzIHJ1bnRpbWUg
ZmVhdHVyZSBkZXRlY3Rpb24sIGRpc2FibGUgYW55IHRlc3RzCi0gICAgICAgICAgICAjIGZvciBm
ZWF0dXJlcyBtaXNzaW5nIGZyb20gdGhlIHJ1bnRpbWUgZmVhdHVyZSBsaXN0LgotICAgICAgICAg
ICAgc3VwcG9ydGVkX2ZlYXR1cmVfbGlzdCA9IHNlbGYuX3J1bnRpbWVfZmVhdHVyZV9saXN0KCkK
LSAgICAgICAgICAgICMgSWYgX3J1bnRpbWVfZmVhdHVyZV9saXN0IHJldHVybnMgYSBub24tTm9u
ZSB2YWx1ZSwgdGhlbiBwcmVmZXIKLSAgICAgICAgICAgICMgcnVudGltZSBmZWF0dXJlIGRldGVj
dGlvbiBvdmVyIHN0YXRpYyBmZWF0dXJlIGRldGVjdGlvbi4KLSAgICAgICAgICAgIGlmIHN1cHBv
cnRlZF9mZWF0dXJlX2xpc3QgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHJl
ZHVjZShvcGVyYXRvci5hZGQsIFtkaXJlY3RvcmllcyBmb3IgZmVhdHVyZSwgZGlyZWN0b3JpZXMg
aW4gc2VsZi5fbWlzc2luZ19mZWF0dXJlX3RvX3NraXBwZWRfdGVzdHMoKS5pdGVtcygpIGlmIGZl
YXR1cmUgbm90IGluIHN1cHBvcnRlZF9mZWF0dXJlX2xpc3RdKQotCi0gICAgICAgICMgT25seSBj
aGVjayB0aGUgc3ltYm9scyBvZiB0aGVyZSBhcmUgdGVzdHMgaW4gdGhlIHRlc3RfbGlzdCB0aGF0
IG1pZ2h0IGdldCBza2lwcGVkLgotICAgICAgICAjIFRoaXMgaXMgYSBwZXJmb3JtYW5jZSBvcHRp
bWl6YXRpb24gdG8gYXZvaWQgdGhlIGNhbGxpbmcgbm0uCi0gICAgICAgIGlmIHNlbGYuX2hhc190
ZXN0X2luX2RpcmVjdG9yaWVzKHNlbGYuX21pc3Npbmdfc3ltYm9sX3RvX3NraXBwZWRfdGVzdHMo
KS52YWx1ZXMoKSwgdGVzdF9saXN0KToKLSAgICAgICAgICAgICMgUnVudGltZSBmZWF0dXJlIGRl
dGVjdGlvbiBub3Qgc3VwcG9ydGVkLCBmYWxsYmFjayB0byBzdGF0aWMgZGVjdGVjdGlvbjoKLSAg
ICAgICAgICAgICMgRGlzYWJsZSBhbnkgdGVzdHMgZm9yIHN5bWJvbHMgbWlzc2luZyBmcm9tIHRo
ZSBleGVjdXRhYmxlIG9yIGxpYnJhcmllcy4KLSAgICAgICAgICAgIHN5bWJvbHNfc3RyaW5nID0g
c2VsZi5fc3ltYm9sc19zdHJpbmcoKQotICAgICAgICAgICAgaWYgc3ltYm9sc19zdHJpbmcgaXMg
bm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHJlZHVjZShvcGVyYXRvci5hZGQsIFtk
aXJlY3RvcmllcyBmb3Igc3ltYm9sX3N1YnN0cmluZywgZGlyZWN0b3JpZXMgaW4gc2VsZi5fbWlz
c2luZ19zeW1ib2xfdG9fc2tpcHBlZF90ZXN0cygpLml0ZW1zKCkgaWYgc3ltYm9sX3N1YnN0cmlu
ZyBub3QgaW4gc3ltYm9sc19zdHJpbmddLCBbXSkKLQotICAgICAgICAjIEZhaWxlZCB0byBnZXQg
YW55IHJ1bnRpbWUgb3Igc3ltYm9sIGluZm9ybWF0aW9uLCBkb24ndCBza2lwIGFueSB0ZXN0cy4K
LSAgICAgICAgcmV0dXJuIFtdCi0KLSAgICBkZWYgX3drMl9wb3J0X25hbWUoc2VsZik6Ci0gICAg
ICAgICMgQnkgY3VycmVudCBjb252ZW50aW9uLCB0aGUgV2ViS2l0MiBuYW1lIGlzIGFsd2F5cyBt
YWMtd2syLCB3aW4td2syLCBub3QgbWFjLWxlb3BhcmQtd2syLCBldGMsCi0gICAgICAgICMgZXhj
ZXB0IGZvciBRdCBiZWNhdXNlIFdlYktpdDIgaXMgb25seSBzdXBwb3J0ZWQgYnkgUXQgNS4wICh0
aGVyZWZvcmU6IHF0LTUuMC13azIpLgotICAgICAgICByZXR1cm4gIiVzLXdrMiIgJSBzZWxmLnBv
cnRfbmFtZQotCi0gICAgZGVmIF9za2lwcGVkX2ZpbGVfc2VhcmNoX3BhdGhzKHNlbGYpOgotICAg
ICAgICAjIFVubGlrZSBiYXNlbGluZV9zZWFyY2hfcGF0aCwgd2Ugb25seSB3YW50IHRvIHNlYXJj
aCBbV0syLVBPUlQsIFBPUlQtVkVSU0lPTiwgUE9SVF0gYW5kIGFueSBkaXJlY3RvcmllcwotICAg
ICAgICAjIGluY2x1ZGVkIHZpYSAtLWFkZGl0aW9uYWwtcGxhdGZvcm0tZGlyZWN0b3J5LCBub3Qg
dGhlIGZ1bGwgY2FzYWRlLgotICAgICAgICAjIE5vdGUgb3JkZXIgZG9lc24ndCBtYXR0ZXIgc2lu
Y2UgdGhlIFNraXBwZWQgZmlsZSBjb250ZW50cyBhcmUgYWxsIGNvbWJpbmVkLgotICAgICAgICBz
ZWFyY2hfcGF0aHMgPSBzZXQoW3NlbGYucG9ydF9uYW1lXSkKLSAgICAgICAgaWYgJ2Z1dHVyZScg
bm90IGluIHNlbGYubmFtZSgpOgotICAgICAgICAgICAgc2VhcmNoX3BhdGhzLmFkZChzZWxmLm5h
bWUoKSkKLSAgICAgICAgaWYgc2VsZi5nZXRfb3B0aW9uKCd3ZWJraXRfdGVzdF9ydW5uZXInKToK
LSAgICAgICAgICAgICMgQmVjYXVzZSBuZWFybHkgYWxsIG9mIHRoZSBza2lwcGVkIHRlc3RzIGZv
ciBXZWJLaXQgMiBhcmUgZHVlIHRvIGNyb3NzLXBsYXRmb3JtCi0gICAgICAgICAgICAjIGlzc3Vl
cywgYWxsIHdrMiBwb3J0cyBzaGFyZSBhIHNraXBwZWQgbGlzdCB1bmRlciBwbGF0Zm9ybS93azIu
Ci0gICAgICAgICAgICBzZWFyY2hfcGF0aHMudXBkYXRlKFtzZWxmLl93azJfcG9ydF9uYW1lKCks
ICJ3azIiXSkKLSAgICAgICAgc2VhcmNoX3BhdGhzLnVwZGF0ZShzZWxmLmdldF9vcHRpb24oImFk
ZGl0aW9uYWxfcGxhdGZvcm1fZGlyZWN0b3J5IiwgW10pKQotCi0gICAgICAgIHJldHVybiBzZWFy
Y2hfcGF0aHMKLQotICAgIGRlZiBza2lwcGVkX2xheW91dF90ZXN0cyhzZWxmLCB0ZXN0X2xpc3Qp
OgotICAgICAgICB0ZXN0c190b19za2lwID0gc2V0KHNlbGYuX2V4cGVjdGF0aW9uc19mcm9tX3Nr
aXBwZWRfZmlsZXMoc2VsZi5fc2tpcHBlZF9maWxlX3NlYXJjaF9wYXRocygpKSkKLSAgICAgICAg
dGVzdHNfdG9fc2tpcC51cGRhdGUoc2VsZi5fdGVzdHNfZm9yX290aGVyX3BsYXRmb3JtcygpKQot
ICAgICAgICB0ZXN0c190b19za2lwLnVwZGF0ZShzZWxmLl9za2lwcGVkX3Rlc3RzX2Zvcl91bnN1
cHBvcnRlZF9mZWF0dXJlcyh0ZXN0X2xpc3QpKQotICAgICAgICByZXR1cm4gdGVzdHNfdG9fc2tp
cApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93
ZWJraXRfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L3dlYmtpdF91bml0dGVzdC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDc4
MTgyNTQxNWE4Y2Q0NzdiZTJjZGMxNDY4ZDllNGQ4NGE0NDQxMS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L3dlYmtpdF91bml0dGVzdC5weQorKysgL2Rldi9udWxsCkBAIC0xLDIzMyAr
MCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMgQ29weXJpZ2h0IChDKSAyMDEwIEdhYm9y
IFJhcGNzYW55aSA8cmdhYm9yQGluZi51LXN6ZWdlZC5odT4sIFVuaXZlcnNpdHkgb2YgU3plZ2Vk
Ci0jIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
IwotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0j
IGFyZSBtZXQ6Ci0jIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFVOSVZFUlNJVFkgT0YgU1pFR0VEIGBgQVMgSVMnJyBBTkQgQU5ZCi0jIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0j
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
VU5JVkVSU0lUWSBPRiBTWkVHRUQgT1IKLSMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0jIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSMg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCi0jIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSMgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotCi1pbXBvcnQgbG9nZ2luZwotaW1wb3J0IHVuaXR0ZXN0Ci0KLWZyb20gd2Via2l0cHku
Y29tbW9uLnN5c3RlbS5leGVjdXRpdmVfbW9jayBpbXBvcnQgTW9ja0V4ZWN1dGl2ZQotZnJvbSB3
ZWJraXRweS5jb21tb24uc3lzdGVtLmZpbGVzeXN0ZW1fbW9jayBpbXBvcnQgTW9ja0ZpbGVTeXN0
ZW0KLWZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5vdXRwdXRjYXB0dXJlIGltcG9ydCBPdXRw
dXRDYXB0dXJlCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uc3lzdGVtaG9zdF9tb2NrIGlt
cG9ydCBNb2NrU3lzdGVtSG9zdAotZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzLnRl
c3RfY29uZmlndXJhdGlvbiBpbXBvcnQgVGVzdENvbmZpZ3VyYXRpb24KLWZyb20gd2Via2l0cHku
bGF5b3V0X3Rlc3RzLnBvcnQgaW1wb3J0IHBvcnRfdGVzdGNhc2UKLWZyb20gd2Via2l0cHkubGF5
b3V0X3Rlc3RzLnBvcnQud2Via2l0IGltcG9ydCBXZWJLaXRQb3J0Ci1mcm9tIHdlYmtpdHB5Lmxh
eW91dF90ZXN0cy5wb3J0LmNvbmZpZ19tb2NrIGltcG9ydCBNb2NrQ29uZmlnCi1mcm9tIHdlYmtp
dHB5LnRvb2wubW9ja3Rvb2wgaW1wb3J0IE1vY2tPcHRpb25zCi0KLQotY2xhc3MgVGVzdFdlYktp
dFBvcnQoV2ViS2l0UG9ydCk6Ci0gICAgcG9ydF9uYW1lID0gInRlc3R3ZWJraXRwb3J0IgotCi0g
ICAgZGVmIF9faW5pdF9fKHNlbGYsIHN5bWJvbHNfc3RyaW5nPU5vbmUsCi0gICAgICAgICAgICAg
ICAgIGV4cGVjdGF0aW9uc19maWxlPU5vbmUsIHNraXBzX2ZpbGU9Tm9uZSwgaG9zdD1Ob25lLCBj
b25maWc9Tm9uZSwKLSAgICAgICAgICAgICAgICAgKiprd2FyZ3MpOgotICAgICAgICBzZWxmLnN5
bWJvbHNfc3RyaW5nID0gc3ltYm9sc19zdHJpbmcgICMgUGFzc2luZyAiIiBkaXNhYmxlcyBhbGwg
c3RhdGljbHktZGV0ZWN0YWJsZSBmZWF0dXJlcy4KLSAgICAgICAgaG9zdCA9IGhvc3Qgb3IgTW9j
a1N5c3RlbUhvc3QoKQotICAgICAgICBjb25maWcgPSBjb25maWcgb3IgTW9ja0NvbmZpZygpCi0g
ICAgICAgIFdlYktpdFBvcnQuX19pbml0X18oc2VsZiwgaG9zdD1ob3N0LCBjb25maWc9Y29uZmln
LCAqKmt3YXJncykKLQotICAgIGRlZiBhbGxfdGVzdF9jb25maWd1cmF0aW9ucyhzZWxmKToKLSAg
ICAgICAgcmV0dXJuIFtzZWxmLnRlc3RfY29uZmlndXJhdGlvbigpXQotCi0gICAgZGVmIF9zeW1i
b2xzX3N0cmluZyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuc3ltYm9sc19zdHJpbmcKLQot
ICAgIGRlZiBfdGVzdHNfZm9yX290aGVyX3BsYXRmb3JtcyhzZWxmKToKLSAgICAgICAgcmV0dXJu
IFsibWVkaWEiLCBdCi0KLSAgICBkZWYgX3Rlc3RzX2Zvcl9kaXNhYmxlZF9mZWF0dXJlcyhzZWxm
KToKLSAgICAgICAgcmV0dXJuIFsiYWNjZXNzaWJpbGl0eSIsIF0KLQotCi1jbGFzcyBXZWJLaXRQ
b3J0VGVzdChwb3J0X3Rlc3RjYXNlLlBvcnRUZXN0Q2FzZSk6Ci0gICAgcG9ydF9uYW1lID0gJ3dl
YmtpdCcKLSAgICBwb3J0X21ha2VyID0gVGVzdFdlYktpdFBvcnQKLQotICAgIGRlZiB0ZXN0X2No
ZWNrX2J1aWxkKHNlbGYpOgotICAgICAgICBwYXNzCi0KLSAgICBkZWYgdGVzdF9kcml2ZXJfY21k
X2xpbmUoc2VsZik6Ci0gICAgICAgIHBhc3MKLQotICAgIGRlZiB0ZXN0X2Jhc2VsaW5lX3NlYXJj
aF9wYXRoKHNlbGYpOgotICAgICAgICBwYXNzCi0KLSAgICBkZWYgdGVzdF9wYXRoX3RvX3Rlc3Rf
ZXhwZWN0YXRpb25zX2ZpbGUoc2VsZik6Ci0gICAgICAgIHBvcnQgPSBUZXN0V2ViS2l0UG9ydCgp
Ci0gICAgICAgIHBvcnQuX29wdGlvbnMgPSBNb2NrT3B0aW9ucyh3ZWJraXRfdGVzdF9ydW5uZXI9
RmFsc2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5wYXRoX3RvX3Rlc3RfZXhwZWN0
YXRpb25zX2ZpbGUoKSwgJy9tb2NrLWNoZWNrb3V0L0xheW91dFRlc3RzL3BsYXRmb3JtL3Rlc3R3
ZWJraXRwb3J0L1Rlc3RFeHBlY3RhdGlvbnMnKQotCi0gICAgICAgIHBvcnQgPSBUZXN0V2ViS2l0
UG9ydCgpCi0gICAgICAgIHBvcnQuX29wdGlvbnMgPSBNb2NrT3B0aW9ucyh3ZWJraXRfdGVzdF9y
dW5uZXI9VHJ1ZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0LnBhdGhfdG9fdGVzdF9l
eHBlY3RhdGlvbnNfZmlsZSgpLCAnL21vY2stY2hlY2tvdXQvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
dGVzdHdlYmtpdHBvcnQvVGVzdEV4cGVjdGF0aW9ucycpCi0KLSAgICAgICAgcG9ydCA9IFRlc3RX
ZWJLaXRQb3J0KCkKLSAgICAgICAgcG9ydC5ob3N0LmZpbGVzeXN0ZW0uZmlsZXNbJy9tb2NrLWNo
ZWNrb3V0L0xheW91dFRlc3RzL3BsYXRmb3JtL3Rlc3R3ZWJraXRwb3J0L1Rlc3RFeHBlY3RhdGlv
bnMnXSA9ICdzb21lIGNvbnRlbnQnCi0gICAgICAgIHBvcnQuX29wdGlvbnMgPSBNb2NrT3B0aW9u
cyh3ZWJraXRfdGVzdF9ydW5uZXI9RmFsc2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9y
dC5wYXRoX3RvX3Rlc3RfZXhwZWN0YXRpb25zX2ZpbGUoKSwgJy9tb2NrLWNoZWNrb3V0L0xheW91
dFRlc3RzL3BsYXRmb3JtL3Rlc3R3ZWJraXRwb3J0L1Rlc3RFeHBlY3RhdGlvbnMnKQotCi0gICAg
ZGVmIHRlc3Rfc2tpcHBlZF9kaXJlY3Rvcmllc19mb3Jfc3ltYm9scyhzZWxmKToKLSAgICAgICAg
IyBUaGlzIGZpcnN0IHRlc3QgY29uZmlybXMgdGhhdCB0aGUgY29tbW9ubHkgZm91bmQgc3ltYm9s
cyByZXN1bHQgaW4gdGhlIGV4cGVjdGVkIHNraXBwZWQgZGlyZWN0b3JpZXMuCi0gICAgICAgIHN5
bWJvbHNfc3RyaW5nID0gIiAiLmpvaW4oWyJHcmFwaGljc0xheWVyIiwgIldlYkNvcmVIYXMzRFJl
bmRlcmluZyIsICJpc1hIVE1MTVBEb2N1bWVudCIsICJmb29TeW1ib2wiXSkKLSAgICAgICAgZXhw
ZWN0ZWRfZGlyZWN0b3JpZXMgPSBzZXQoWwotICAgICAgICAgICAgIm1hdGhtbCIsICAjIFJlcXVp
cmVzIE1hdGhNTEVsZW1lbnQKLSAgICAgICAgICAgICJmYXN0L2NhbnZhcy93ZWJnbCIsICAjIFJl
cXVpcmVzIFdlYkdMU2hhZGVyCi0gICAgICAgICAgICAiY29tcG9zaXRpbmcvd2ViZ2wiLCAgIyBS
ZXF1aXJlcyBXZWJHTFNoYWRlcgotICAgICAgICAgICAgImh0dHAvdGVzdHMvY2FudmFzL3dlYmds
IiwgICMgUmVxdWlyZXMgV2ViR0xTaGFkZXIKLSAgICAgICAgICAgICJtaHRtbCIsICAjIFJlcXVp
cmVzIE1IVE1MQXJjaGl2ZQotICAgICAgICAgICAgImZhc3QvY3NzL3ZhcmlhYmxlcyIsICAjIFJl
cXVpcmVzIENTUyBWYXJpYWJsZXMKLSAgICAgICAgICAgICJpbnNwZWN0b3Ivc3R5bGVzL3Zhcmlh
YmxlcyIsICAjIFJlcXVpcmVzIENTUyBWYXJpYWJsZXMKLSAgICAgICAgXSkKLQotICAgICAgICBy
ZXN1bHRfZGlyZWN0b3JpZXMgPSBzZXQoVGVzdFdlYktpdFBvcnQoc3ltYm9sc19zdHJpbmcsIE5v
bmUpLl9za2lwcGVkX3Rlc3RzX2Zvcl91bnN1cHBvcnRlZF9mZWF0dXJlcyh0ZXN0X2xpc3Q9Wydt
YXRobWwvZm9vLmh0bWwnXSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0X2RpcmVj
dG9yaWVzLCBleHBlY3RlZF9kaXJlY3RvcmllcykKLQotICAgICAgICAjIFRlc3QgdGhhdCB0aGUg
bm0gc3RyaW5nIHBhcnNpbmcgYWN0dWFsbHkgd29ya3M6Ci0gICAgICAgIHN5bWJvbHNfc3RyaW5n
ID0gIiIiCi0wMDAwMDAwMDAxMjRmNDk4IHMgX19aWk43V2ViQ29yZTEzR3JhcGhpY3NMYXllcjEy
cmVwbGFjZUNoaWxkRVBTMF9TMV9FMTlfX1BSRVRUWV9GVU5DVElPTl9fCi0wMDAwMDAwMDAxMjRm
NTAwIHMgX19aWk43V2ViQ29yZTEzR3JhcGhpY3NMYXllcjEzYWRkQ2hpbGRBYm92ZUVQUzBfUzFf
RTE5X19QUkVUVFlfRlVOQ1RJT05fXwotMDAwMDAwMDAwMTI0ZjY3MCBzIF9fWlpON1dlYkNvcmUx
M0dyYXBoaWNzTGF5ZXIxM2FkZENoaWxkQmVsb3dFUFMwX1MxX0UxOV9fUFJFVFRZX0ZVTkNUSU9O
X18KLSIiIgotICAgICAgICAjIE5vdGUgJ2NvbXBvc2l0aW5nJyBpcyBub3QgaW4gdGhlIGxpc3Qg
b2Ygc2tpcHBlZCBkaXJlY3RvcmllcyAoaGVuY2UgdGhlIHBhcnNpbmcgb2YgR3JhcGhpY3NMYXll
ciB3b3JrZWQpOgotICAgICAgICBleHBlY3RlZF9kaXJlY3RvcmllcyA9IHNldChbJ21hdGhtbCcs
ICd0cmFuc2Zvcm1zLzNkJywgJ2NvbXBvc2l0aW5nL3dlYmdsJywgJ2Zhc3QvY2FudmFzL3dlYmds
JywgJ2FuaW1hdGlvbnMvM2QnLCAnbWh0bWwnLCAnaHR0cC90ZXN0cy9jYW52YXMvd2ViZ2wnLCAn
ZmFzdC9jc3MvdmFyaWFibGVzJywgJ2luc3BlY3Rvci9zdHlsZXMvdmFyaWFibGVzJ10pCi0gICAg
ICAgIHJlc3VsdF9kaXJlY3RvcmllcyA9IHNldChUZXN0V2ViS2l0UG9ydChzeW1ib2xzX3N0cmlu
ZywgTm9uZSkuX3NraXBwZWRfdGVzdHNfZm9yX3Vuc3VwcG9ydGVkX2ZlYXR1cmVzKHRlc3RfbGlz
dD1bJ21hdGhtbC9mb28uaHRtbCddKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHRf
ZGlyZWN0b3JpZXMsIGV4cGVjdGVkX2RpcmVjdG9yaWVzKQotCi0gICAgZGVmIHRlc3Rfc2tpcHBl
ZF9kaXJlY3Rvcmllc19mb3JfZmVhdHVyZXMoc2VsZik6Ci0gICAgICAgIHN1cHBvcnRlZF9mZWF0
dXJlcyA9IFsiQWNjZWxlcmF0ZWQgQ29tcG9zaXRpbmciLCAiRm9vIEZlYXR1cmUiXQotICAgICAg
ICBleHBlY3RlZF9kaXJlY3RvcmllcyA9IHNldChbImFuaW1hdGlvbnMvM2QiLCAidHJhbnNmb3Jt
cy8zZCJdKQotICAgICAgICBwb3J0ID0gVGVzdFdlYktpdFBvcnQoTm9uZSwgc3VwcG9ydGVkX2Zl
YXR1cmVzKQotICAgICAgICBwb3J0Ll9ydW50aW1lX2ZlYXR1cmVfbGlzdCA9IGxhbWJkYTogc3Vw
cG9ydGVkX2ZlYXR1cmVzCi0gICAgICAgIHJlc3VsdF9kaXJlY3RvcmllcyA9IHNldChwb3J0Ll9z
a2lwcGVkX3Rlc3RzX2Zvcl91bnN1cHBvcnRlZF9mZWF0dXJlcyh0ZXN0X2xpc3Q9WyJhbmltYXRp
b25zLzNkL2Zvby5odG1sIl0pKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdF9kaXJl
Y3RvcmllcywgZXhwZWN0ZWRfZGlyZWN0b3JpZXMpCi0KLSAgICBkZWYgdGVzdF9za2lwcGVkX2Rp
cmVjdG9yaWVzX2Zvcl9mZWF0dXJlc19ub19tYXRjaGluZ190ZXN0c19pbl90ZXN0X2xpc3Qoc2Vs
Zik6Ci0gICAgICAgIHN1cHBvcnRlZF9mZWF0dXJlcyA9IFsiQWNjZWxlcmF0ZWQgQ29tcG9zaXRp
bmciLCAiRm9vIEZlYXR1cmUiXQotICAgICAgICBleHBlY3RlZF9kaXJlY3RvcmllcyA9IHNldChb
XSkKLSAgICAgICAgcmVzdWx0X2RpcmVjdG9yaWVzID0gc2V0KFRlc3RXZWJLaXRQb3J0KE5vbmUs
IHN1cHBvcnRlZF9mZWF0dXJlcykuX3NraXBwZWRfdGVzdHNfZm9yX3Vuc3VwcG9ydGVkX2ZlYXR1
cmVzKHRlc3RfbGlzdD1bJ2Zvby5odG1sJ10pKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJl
c3VsdF9kaXJlY3RvcmllcywgZXhwZWN0ZWRfZGlyZWN0b3JpZXMpCi0KLSAgICBkZWYgdGVzdF9z
a2lwcGVkX3Rlc3RzX2Zvcl91bnN1cHBvcnRlZF9mZWF0dXJlc19lbXB0eV90ZXN0X2xpc3Qoc2Vs
Zik6Ci0gICAgICAgIHN1cHBvcnRlZF9mZWF0dXJlcyA9IFsiQWNjZWxlcmF0ZWQgQ29tcG9zaXRp
bmciLCAiRm9vIEZlYXR1cmUiXQotICAgICAgICBleHBlY3RlZF9kaXJlY3RvcmllcyA9IHNldChb
XSkKLSAgICAgICAgcmVzdWx0X2RpcmVjdG9yaWVzID0gc2V0KFRlc3RXZWJLaXRQb3J0KE5vbmUs
IHN1cHBvcnRlZF9mZWF0dXJlcykuX3NraXBwZWRfdGVzdHNfZm9yX3Vuc3VwcG9ydGVkX2ZlYXR1
cmVzKHRlc3RfbGlzdD1Ob25lKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHRfZGly
ZWN0b3JpZXMsIGV4cGVjdGVkX2RpcmVjdG9yaWVzKQotCi0gICAgZGVmIHRlc3Rfc2tpcHBlZF9s
YXlvdXRfdGVzdHMoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVGVzdFdlYktpdFBv
cnQoTm9uZSwgTm9uZSkuc2tpcHBlZF9sYXlvdXRfdGVzdHModGVzdF9saXN0PVtdKSwgc2V0KFsn
bWVkaWEnXSkpCi0KLSAgICBkZWYgdGVzdF9za2lwcGVkX2ZpbGVfc2VhcmNoX3BhdGhzKHNlbGYp
OgotICAgICAgICBwb3J0ID0gVGVzdFdlYktpdFBvcnQoKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHBvcnQuX3NraXBwZWRfZmlsZV9zZWFyY2hfcGF0aHMoKSwgc2V0KFsndGVzdHdlYmtpdHBv
cnQnXSkpCi0gICAgICAgIHBvcnQuX25hbWUgPSAidGVzdHdlYmtpdHBvcnQtdmVyc2lvbiIKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0Ll9za2lwcGVkX2ZpbGVfc2VhcmNoX3BhdGhzKCks
IHNldChbJ3Rlc3R3ZWJraXRwb3J0JywgJ3Rlc3R3ZWJraXRwb3J0LXZlcnNpb24nXSkpCi0gICAg
ICAgIHBvcnQuX29wdGlvbnMgPSBNb2NrT3B0aW9ucyh3ZWJraXRfdGVzdF9ydW5uZXI9VHJ1ZSkK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0Ll9za2lwcGVkX2ZpbGVfc2VhcmNoX3BhdGhz
KCksIHNldChbJ3Rlc3R3ZWJraXRwb3J0JywgJ3Rlc3R3ZWJraXRwb3J0LXZlcnNpb24nLCAndGVz
dHdlYmtpdHBvcnQtd2syJywgJ3drMiddKSkKLSAgICAgICAgcG9ydC5fb3B0aW9ucyA9IE1vY2tP
cHRpb25zKGFkZGl0aW9uYWxfcGxhdGZvcm1fZGlyZWN0b3J5PVsiaW50ZXJuYWwtdGVzdHdlYmtp
dHBvcnQiXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0Ll9za2lwcGVkX2ZpbGVfc2Vh
cmNoX3BhdGhzKCksIHNldChbJ3Rlc3R3ZWJraXRwb3J0JywgJ3Rlc3R3ZWJraXRwb3J0LXZlcnNp
b24nLCAnaW50ZXJuYWwtdGVzdHdlYmtpdHBvcnQnXSkpCi0KLSAgICBkZWYgdGVzdF9yb290X29w
dGlvbihzZWxmKToKLSAgICAgICAgcG9ydCA9IFRlc3RXZWJLaXRQb3J0KCkKLSAgICAgICAgcG9y
dC5fb3B0aW9ucyA9IE1vY2tPcHRpb25zKHJvb3Q9Jy9mb28nKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHBvcnQuX3BhdGhfdG9fZHJpdmVyKCksICIvZm9vL0R1bXBSZW5kZXJUcmVlIikKLQot
ICAgIGRlZiB0ZXN0X3Rlc3RfZXhwZWN0YXRpb25zKHNlbGYpOgotICAgICAgICAjIENoZWNrIHRo
YXQgd2UgcmVhZCB0aGUgZXhwZWN0YXRpb25zIGZpbGUKLSAgICAgICAgaG9zdCA9IE1vY2tTeXN0
ZW1Ib3N0KCkKLSAgICAgICAgaG9zdC5maWxlc3lzdGVtLndyaXRlX3RleHRfZmlsZSgnL21vY2st
Y2hlY2tvdXQvTGF5b3V0VGVzdHMvcGxhdGZvcm0vdGVzdHdlYmtpdHBvcnQvVGVzdEV4cGVjdGF0
aW9ucycsCi0gICAgICAgICAgICAnQlVHX1RFU1RFWFBFQ1RBVElPTlMgU0tJUCA6IGZhc3QvaHRt
bC9hcnRpY2xlLWVsZW1lbnQuaHRtbCA9IFRFWFRcbicpCi0gICAgICAgIHBvcnQgPSBUZXN0V2Vi
S2l0UG9ydChob3N0PWhvc3QpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycuam9pbihwb3J0
LmV4cGVjdGF0aW9uc19kaWN0KCkudmFsdWVzKCkpLCAnQlVHX1RFU1RFWFBFQ1RBVElPTlMgU0tJ
UCA6IGZhc3QvaHRtbC9hcnRpY2xlLWVsZW1lbnQuaHRtbCA9IFRFWFRcbicpCi0KLSAgICBkZWYg
dGVzdF9idWlsZF9kcml2ZXIoc2VsZik6Ci0gICAgICAgIG91dHB1dCA9IE91dHB1dENhcHR1cmUo
KQotICAgICAgICBwb3J0ID0gVGVzdFdlYktpdFBvcnQoKQotICAgICAgICAjIERlbGF5IHNldHRp
bmcgX2V4ZWN1dGl2ZSB0byBhdm9pZCBsb2dnaW5nIGR1cmluZyBjb25zdHJ1Y3Rpb24KLSAgICAg
ICAgcG9ydC5fZXhlY3V0aXZlID0gTW9ja0V4ZWN1dGl2ZShzaG91bGRfbG9nPVRydWUpCi0gICAg
ICAgIHBvcnQuX29wdGlvbnMgPSBNb2NrT3B0aW9ucyhjb25maWd1cmF0aW9uPSJSZWxlYXNlIikg
ICMgVGhpcyBzaG91bGQgbm90IGJlIG5lY2Vzc2FyeSwgYnV0IEkgdGhpbmsgVGVzdFdlYktpdFBv
cnQgaXMgYWN0dWFsbHkgcmVhZGluZyBmcm9tIGRpc2sgKGFuZCB0aHVzIGRldGVjdHMgdGhlIGN1
cnJlbnQgY29uZmlndXJhdGlvbikuCi0gICAgICAgIGV4cGVjdGVkX3N0ZGVyciA9ICJNT0NLIHJ1
bl9jb21tYW5kOiBbJ1Rvb2xzL1NjcmlwdHMvYnVpbGQtZHVtcHJlbmRlcnRyZWUnLCAnLS1yZWxl
YXNlJ10sIGN3ZD0vbW9jay1jaGVja291dCwgZW52PXsnTENfQUxMJzogJ0MnLCAnTU9DS19FTlZJ
Uk9OX0NPUFknOiAnMSd9XG4iCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvdXRwdXQuYXNzZXJ0
X291dHB1dHMoc2VsZiwgcG9ydC5fYnVpbGRfZHJpdmVyLCBleHBlY3RlZF9zdGRlcnI9ZXhwZWN0
ZWRfc3RkZXJyLCBleHBlY3RlZF9sb2dzPScnKSkKLQotICAgICAgICAjIE1ha2Ugc3VyZSB3aGVu
IHBhc3NlZCAtLXdlYmtpdC10ZXN0LXJ1bm5lciB3ZSBidWlsZCB0aGUgcmlnaHQgdG9vbC4KLSAg
ICAgICAgcG9ydC5fb3B0aW9ucyA9IE1vY2tPcHRpb25zKHdlYmtpdF90ZXN0X3J1bm5lcj1UcnVl
LCBjb25maWd1cmF0aW9uPSJSZWxlYXNlIikKLSAgICAgICAgZXhwZWN0ZWRfc3RkZXJyID0gIk1P
Q0sgcnVuX2NvbW1hbmQ6IFsnVG9vbHMvU2NyaXB0cy9idWlsZC1kdW1wcmVuZGVydHJlZScsICct
LXJlbGVhc2UnXSwgY3dkPS9tb2NrLWNoZWNrb3V0LCBlbnY9eydMQ19BTEwnOiAnQycsICdNT0NL
X0VOVklST05fQ09QWSc6ICcxJ31cbk1PQ0sgcnVuX2NvbW1hbmQ6IFsnVG9vbHMvU2NyaXB0cy9i
dWlsZC13ZWJraXR0ZXN0cnVubmVyJywgJy0tcmVsZWFzZSddLCBjd2Q9L21vY2stY2hlY2tvdXQs
IGVudj17J0xDX0FMTCc6ICdDJywgJ01PQ0tfRU5WSVJPTl9DT1BZJzogJzEnfVxuIgotICAgICAg
ICBzZWxmLmFzc2VydFRydWUob3V0cHV0LmFzc2VydF9vdXRwdXRzKHNlbGYsIHBvcnQuX2J1aWxk
X2RyaXZlciwgZXhwZWN0ZWRfc3RkZXJyPWV4cGVjdGVkX3N0ZGVyciwgZXhwZWN0ZWRfbG9ncz0n
JykpCi0KLSAgICAgICAgIyBNYWtlIHN1cmUgd2Ugc2hvdyB0aGUgYnVpbGQgbG9nIHdoZW4gLS12
ZXJib3NlIGlzIHBhc3NlZCwgd2hpY2ggd2Ugc2ltdWxhdGUgYnkgc2V0dGluZyB0aGUgbG9nZ2lu
ZyBsZXZlbCB0byBERUJVRy4KLSAgICAgICAgb3V0cHV0LnNldF9sb2dfbGV2ZWwobG9nZ2luZy5E
RUJVRykKLSAgICAgICAgcG9ydC5fb3B0aW9ucyA9IE1vY2tPcHRpb25zKGNvbmZpZ3VyYXRpb249
IlJlbGVhc2UiKQotICAgICAgICBleHBlY3RlZF9zdGRlcnIgPSAiTU9DSyBydW5fY29tbWFuZDog
WydUb29scy9TY3JpcHRzL2J1aWxkLWR1bXByZW5kZXJ0cmVlJywgJy0tcmVsZWFzZSddLCBjd2Q9
L21vY2stY2hlY2tvdXQsIGVudj17J0xDX0FMTCc6ICdDJywgJ01PQ0tfRU5WSVJPTl9DT1BZJzog
JzEnfVxuIgotICAgICAgICBleHBlY3RlZF9sb2dzID0gIk91dHB1dCBvZiBbJ1Rvb2xzL1Njcmlw
dHMvYnVpbGQtZHVtcHJlbmRlcnRyZWUnLCAnLS1yZWxlYXNlJ106XG5NT0NLIG91dHB1dCBvZiBj
aGlsZCBwcm9jZXNzXG4iCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvdXRwdXQuYXNzZXJ0X291
dHB1dHMoc2VsZiwgcG9ydC5fYnVpbGRfZHJpdmVyLCBleHBlY3RlZF9zdGRlcnI9ZXhwZWN0ZWRf
c3RkZXJyLCBleHBlY3RlZF9sb2dzPWV4cGVjdGVkX2xvZ3MpKQotICAgICAgICBvdXRwdXQuc2V0
X2xvZ19sZXZlbChsb2dnaW5nLklORk8pCi0KLSAgICAgICAgIyBNYWtlIHN1cmUgdGhhdCBmYWls
dXJlIHRvIGJ1aWxkIHJldHVybnMgRmFsc2UuCi0gICAgICAgIHBvcnQuX2V4ZWN1dGl2ZSA9IE1v
Y2tFeGVjdXRpdmUoc2hvdWxkX2xvZz1UcnVlLCBzaG91bGRfdGhyb3c9VHJ1ZSkKLSAgICAgICAg
IyBCZWNhdXNlIFdLMiBjdXJyZW50bHkgaGFzIHRvIGJ1aWxkIGJvdGggd2Via2l0dGVzdHJ1bm5l
ciBhbmQgRFJULCBpZiBEUlQgZmFpbHMsIHRoYXQncyB0aGUgb25seSBvbmUgaXQgdHJpZXMuCi0g
ICAgICAgIGV4cGVjdGVkX3N0ZGVyciA9ICJNT0NLIHJ1bl9jb21tYW5kOiBbJ1Rvb2xzL1Njcmlw
dHMvYnVpbGQtZHVtcHJlbmRlcnRyZWUnLCAnLS1yZWxlYXNlJ10sIGN3ZD0vbW9jay1jaGVja291
dCwgZW52PXsnTENfQUxMJzogJ0MnLCAnTU9DS19FTlZJUk9OX0NPUFknOiAnMSd9XG4iCi0gICAg
ICAgIGV4cGVjdGVkX2xvZ3MgPSAiTU9DSyBTY3JpcHRFcnJvclxuXG5NT0NLIG91dHB1dCBvZiBj
aGlsZCBwcm9jZXNzXG4iCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3V0cHV0LmFzc2VydF9v
dXRwdXRzKHNlbGYsIHBvcnQuX2J1aWxkX2RyaXZlciwgZXhwZWN0ZWRfc3RkZXJyPWV4cGVjdGVk
X3N0ZGVyciwgZXhwZWN0ZWRfbG9ncz1leHBlY3RlZF9sb2dzKSkKLQotICAgIGRlZiBfYXNzZXJ0
X2NvbmZpZ19maWxlX2Zvcl9wbGF0Zm9ybShzZWxmLCBwb3J0LCBwbGF0Zm9ybSwgY29uZmlnX2Zp
bGUpOgotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhwb3J0Ll9hcGFjaGVfY29uZmlnX2ZpbGVf
bmFtZV9mb3JfcGxhdGZvcm0ocGxhdGZvcm0pLCBjb25maWdfZmlsZSkKLQotICAgIGRlZiB0ZXN0
X2xpbnV4X2Rpc3Ryb19kZXRlY3Rpb24oc2VsZik6Ci0gICAgICAgIHBvcnQgPSBUZXN0V2ViS2l0
UG9ydCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocG9ydC5faXNfcmVkaGF0X2Jhc2VkKCkp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocG9ydC5faXNfZGViaWFuX2Jhc2VkKCkpCi0KLSAg
ICAgICAgcG9ydC5fZmlsZXN5c3RlbSA9IE1vY2tGaWxlU3lzdGVtKHsnL2V0Yy9yZWRoYXQtcmVs
ZWFzZSc6ICcnfSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBvcnQuX2lzX3JlZGhhdF9iYXNl
ZCgpKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHBvcnQuX2lzX2RlYmlhbl9iYXNlZCgpKQot
Ci0gICAgICAgIHBvcnQuX2ZpbGVzeXN0ZW0gPSBNb2NrRmlsZVN5c3RlbSh7Jy9ldGMvZGViaWFu
X3ZlcnNpb24nOiAnJ30pCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocG9ydC5faXNfcmVkaGF0
X2Jhc2VkKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwb3J0Ll9pc19kZWJpYW5fYmFzZWQo
KSkKLQotICAgIGRlZiB0ZXN0X2FwYWNoZV9jb25maWdfZmlsZV9uYW1lX2Zvcl9wbGF0Zm9ybShz
ZWxmKToKLSAgICAgICAgcG9ydCA9IFRlc3RXZWJLaXRQb3J0KCkKLSAgICAgICAgc2VsZi5fYXNz
ZXJ0X2NvbmZpZ19maWxlX2Zvcl9wbGF0Zm9ybShwb3J0LCAnY3lnd2luJywgJ2N5Z3dpbi1odHRw
ZC5jb25mJykKLQotICAgICAgICBzZWxmLl9hc3NlcnRfY29uZmlnX2ZpbGVfZm9yX3BsYXRmb3Jt
KHBvcnQsICdsaW51eDInLCAnYXBhY2hlMi1odHRwZC5jb25mJykKLSAgICAgICAgc2VsZi5fYXNz
ZXJ0X2NvbmZpZ19maWxlX2Zvcl9wbGF0Zm9ybShwb3J0LCAnbGludXgzJywgJ2FwYWNoZTItaHR0
cGQuY29uZicpCi0KLSAgICAgICAgcG9ydC5faXNfcmVkaGF0X2Jhc2VkID0gbGFtYmRhOiBUcnVl
Ci0gICAgICAgIHNlbGYuX2Fzc2VydF9jb25maWdfZmlsZV9mb3JfcGxhdGZvcm0ocG9ydCwgJ2xp
bnV4MicsICdmZWRvcmEtaHR0cGQuY29uZicpCi0KLSAgICAgICAgcG9ydCA9IFRlc3RXZWJLaXRQ
b3J0KCkKLSAgICAgICAgcG9ydC5faXNfZGViaWFuX2Jhc2VkID0gbGFtYmRhOiBUcnVlCi0gICAg
ICAgIHNlbGYuX2Fzc2VydF9jb25maWdfZmlsZV9mb3JfcGxhdGZvcm0ocG9ydCwgJ2xpbnV4Mics
ICdhcGFjaGUyLWRlYmlhbi1odHRwZC5jb25mJykKLQotICAgICAgICBzZWxmLl9hc3NlcnRfY29u
ZmlnX2ZpbGVfZm9yX3BsYXRmb3JtKHBvcnQsICdtYWMnLCAnYXBhY2hlMi1odHRwZC5jb25mJykK
LSAgICAgICAgc2VsZi5fYXNzZXJ0X2NvbmZpZ19maWxlX2Zvcl9wbGF0Zm9ybShwb3J0LCAnd2lu
MzInLCAnYXBhY2hlMi1odHRwZC5jb25mJykgICMgd2luMzIgaXNuJ3QgYSBzdXBwb3J0ZWQgc3lz
LnBsYXRmb3JtLiAgQXBwbGVXaW4vV2luQ2Fpcm8vV2luQ0UgcG9ydHMgYWxsIHVzZSBjeWd3aW4u
Ci0gICAgICAgIHNlbGYuX2Fzc2VydF9jb25maWdfZmlsZV9mb3JfcGxhdGZvcm0ocG9ydCwgJ2Jh
cmYnLCAnYXBhY2hlMi1odHRwZC5jb25mJykKLQotICAgIGRlZiB0ZXN0X3BhdGhfdG9fYXBhY2hl
X2NvbmZpZ19maWxlKHNlbGYpOgotICAgICAgICBwb3J0ID0gVGVzdFdlYktpdFBvcnQoKQotICAg
ICAgICAjIE1vY2sgb3V0IF9hcGFjaGVfY29uZmlnX2ZpbGVfbmFtZV9mb3JfcGxhdGZvcm0gdG8g
aWdub3JlIHRoZSBwYXNzZWQgc3lzLnBsYXRmb3JtIHZhbHVlLgotICAgICAgICBwb3J0Ll9hcGFj
aGVfY29uZmlnX2ZpbGVfbmFtZV9mb3JfcGxhdGZvcm0gPSBsYW1iZGEgcGxhdGZvcm06ICdodHRw
ZC5jb25mJwotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhwb3J0Ll9wYXRoX3RvX2FwYWNoZV9j
b25maWdfZmlsZSgpLCAnL21vY2stY2hlY2tvdXQvTGF5b3V0VGVzdHMvaHR0cC9jb25mL2h0dHBk
LmNvbmYnKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3NlcnZlcnMv
cmViYXNlbGluZXNlcnZlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zZXJ2ZXJz
L3JlYmFzZWxpbmVzZXJ2ZXIucHkKaW5kZXggMTViY2Q2ZjU1OTQzMWI1ZTYxNmVkNzQ2NTA0Mjhm
OWU2NGViMTE2YS4uMGU3NDU4NzI3YWRmNTk2ZmIzMDJmYWRlYjAzNjljMzYxZTQ4YzZkZSAxMDA2
NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3NlcnZlcnMvcmViYXNlbGluZXNl
cnZlci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc2VydmVycy9yZWJhc2Vs
aW5lc2VydmVyLnB5CkBAIC0zMiw3ICszMiw3IEBAIGltcG9ydCBvcy5wYXRoCiBpbXBvcnQgQmFz
ZUhUVFBTZXJ2ZXIKIAogZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdCBpbXBvcnQgSG9zdCAgIyBG
SVhNRTogVGhpcyBzaG91bGQgbm90IGJlIG5lZWRlZCEKLWZyb20gd2Via2l0cHkubGF5b3V0X3Rl
c3RzLnBvcnQud2Via2l0IGltcG9ydCBXZWJLaXRQb3J0Citmcm9tIHdlYmtpdHB5LmxheW91dF90
ZXN0cy5wb3J0LmJhc2UgaW1wb3J0IFBvcnQKIGZyb20gd2Via2l0cHkudG9vbC5zZXJ2ZXJzLnJl
ZmxlY3Rpb25oYW5kbGVyIGltcG9ydCBSZWZsZWN0aW9uSGFuZGxlcgogCiAKQEAgLTE2Myw5ICsx
NjMsOSBAQCBkZWYgX21vdmVfdGVzdF9iYXNlbGluZXModGVzdF9maWxlLCBleHRlbnNpb25zX3Rv
X21vdmUsIHNvdXJjZV9wbGF0Zm9ybSwgZGVzdGluYQogCiBkZWYgZ2V0X3Rlc3RfYmFzZWxpbmVz
KHRlc3RfZmlsZSwgdGVzdF9jb25maWcpOgogICAgICMgRklYTUU6IFRoaXMgc2VlbXMgbGlrZSBh
IGhhY2suIFRoaXMgb25seSBzZWVtcyB1c2VkIHRvIGFjY2VzcyB0aGUgUG9ydC5leHBlY3RlZF9i
YXNlbGluZXMgbG9naWMuCi0gICAgY2xhc3MgQWxsUGxhdGZvcm1zUG9ydChXZWJLaXRQb3J0KToK
KyAgICBjbGFzcyBBbGxQbGF0Zm9ybXNQb3J0KFBvcnQpOgogICAgICAgICBkZWYgX19pbml0X18o
c2VsZiwgaG9zdCk6Ci0gICAgICAgICAgICBXZWJLaXRQb3J0Ll9faW5pdF9fKHNlbGYsIGhvc3Qs
ICdtYWMnKQorICAgICAgICAgICAgc3VwZXIoQWxsUGxhdGZvcm1zUG9ydCwgc2VsZikuX19pbml0
X18oaG9zdCwgJ21hYycpCiAgICAgICAgICAgICBzZWxmLl9wbGF0Zm9ybXNfYnlfZGlyZWN0b3J5
ID0gZGljdChbKHNlbGYuX3dlYmtpdF9iYXNlbGluZV9wYXRoKHApLCBwKSBmb3IgcCBpbiB0ZXN0
X2NvbmZpZy5wbGF0Zm9ybXNdKQogCiAgICAgICAgIGRlZiBiYXNlbGluZV9zZWFyY2hfcGF0aChz
ZWxmKToKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zZXJ2ZXJzL3Jl
YmFzZWxpbmVzZXJ2ZXJfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wv
c2VydmVycy9yZWJhc2VsaW5lc2VydmVyX3VuaXR0ZXN0LnB5CmluZGV4IGM4ZWE2YzAyYzNlYTI0
YTRmYjZiMjQ2ZWEyZDFiZTk3M2Y3M2Q1NGIuLmY1YzFjYmY1ZTEzNWFlMWM5YmEwYWU5YTNlYWMw
OTBiOGUwZGI5YmEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zZXJ2
ZXJzL3JlYmFzZWxpbmVzZXJ2ZXJfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS90b29sL3NlcnZlcnMvcmViYXNlbGluZXNlcnZlcl91bml0dGVzdC5weQpAQCAtMzIsNyAr
MzIsNyBAQCBpbXBvcnQgdW5pdHRlc3QKIGZyb20gd2Via2l0cHkuY29tbW9uLm5ldCBpbXBvcnQg
cmVzdWx0c2pzb25wYXJzZXJfdW5pdHRlc3QKIGZyb20gd2Via2l0cHkuY29tbW9uLmhvc3RfbW9j
ayBpbXBvcnQgTW9ja0hvc3QKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmxheW91dF9wYWNr
YWdlLmpzb25fcmVzdWx0c19nZW5lcmF0b3IgaW1wb3J0IHN0cmlwX2pzb25fd3JhcHBlcgotZnJv
bSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC53ZWJraXQgaW1wb3J0IFdlYktpdFBvcnQKK2Zy
b20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQuYmFzZSBpbXBvcnQgUG9ydAogZnJvbSB3ZWJr
aXRweS50b29sLmNvbW1hbmRzLnJlYmFzZWxpbmVzZXJ2ZXIgaW1wb3J0IFRlc3RDb25maWcsIFJl
YmFzZWxpbmVTZXJ2ZXIKIGZyb20gd2Via2l0cHkudG9vbC5zZXJ2ZXJzIGltcG9ydCByZWJhc2Vs
aW5lc2VydmVyCiAKQEAgLTI5OSw3ICsyOTksNyBAQCBkZWYgZ2V0X3Rlc3RfY29uZmlnKHRlc3Rf
ZmlsZXM9W10sIHJlc3VsdF9maWxlcz1bXSk6CiAgICAgZm9yIGZpbGUgaW4gcmVzdWx0X2ZpbGVz
OgogICAgICAgICBob3N0LmZpbGVzeXN0ZW0ud3JpdGVfYmluYXJ5X2ZpbGUoaG9zdC5maWxlc3lz
dGVtLmpvaW4ocmVzdWx0c19kaXJlY3RvcnksIGZpbGUpLCAnJykKIAotICAgIGNsYXNzIFRlc3RN
YWNQb3J0KFdlYktpdFBvcnQpOgorICAgIGNsYXNzIFRlc3RNYWNQb3J0KFBvcnQpOgogICAgICAg
ICBwb3J0X25hbWUgPSAibWFjIgogCiAgICAgcmV0dXJuIFRlc3RDb25maWcoCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154835</attachid>
            <date>2012-07-26 21:50:39 -0700</date>
            <delta_ts>2012-07-27 11:33:31 -0700</delta_ts>
            <desc>fix base for diff</desc>
            <filename>bug-92450-20120726215027.patch</filename>
            <type>text/plain</type>
            <size>67939</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzODE0CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNDg3NzMwMWQ4NDUwNjhjZmRjMGQ2ZTFmYzAyZjlkZWNk
ODQ1MDg4Yi4uZGViZmExZGY2YmIxMjZlMzE0NzM4OWQwYzZiOGIwODBjZWUxZDhhMyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDg3
IEBACiAyMDEyLTA3LTI2ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgogCisg
ICAgICAgIG5yd3Q6IHJlbW92ZSAnd2Via2l0LnB5JyBhbmQgdGhlICdXZWJLaXRQb3J0JworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTI0NTAKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGZp
bmlzaGVzIHRoZSB3b3JrIG9mIG1lcmdpbmcgV2ViS2l0UG9ydCBpbnRvIFBvcnQuCisgICAgICAg
IE5vdyBQb3J0IGlzIHdheSB0b28gYmlnIDopLgorCisgICAgICAgIFRoaXMgaXMgYWxsIGN1dHRp
bmcgYW5kIHBhc3Rpbmc7IG5vIG5ldyBmdW5jdGlvbmFsaXR5IGFuZAorICAgICAgICBubyBjaGFu
Z2VzIGluIHRoZSB0ZXN0cy4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvYXBwbGUucHk6CisgICAgICAgIChBcHBsZVBvcnQpOgorICAgICAgICAoQXBwbGVQ
b3J0Ll9faW5pdF9fKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L2Jhc2UucHk6CisgICAgICAgIChQb3J0LnNraXBwZWRfbGF5b3V0X3Rlc3RzKToKKyAgICAg
ICAgKFBvcnQpOgorICAgICAgICAoUG9ydC5fcG9ydF9mbGFnX2Zvcl9zY3JpcHRzKToKKyAgICAg
ICAgKFBvcnQuX2FyZ3VtZW50c19mb3JfY29uZmlndXJhdGlvbik6CisgICAgICAgIChQb3J0Ll9y
dW5fc2NyaXB0KToKKyAgICAgICAgKFBvcnQuX2J1aWxkX2RyaXZlcik6CisgICAgICAgIChQb3J0
Ll9idWlsZF9kcml2ZXJfZmxhZ3MpOgorICAgICAgICAoUG9ydC5fdGVzdHNfZm9yX290aGVyX3Bs
YXRmb3Jtcyk6CisgICAgICAgIChQb3J0Ll9ydW50aW1lX2ZlYXR1cmVfbGlzdCk6CisgICAgICAg
IChQb3J0Lm5tX2NvbW1hbmQpOgorICAgICAgICAoUG9ydC5fbW9kdWxlc190b19zZWFyY2hfZm9y
X3N5bWJvbHMpOgorICAgICAgICAoUG9ydC5fc3ltYm9sc19zdHJpbmcpOgorICAgICAgICAoUG9y
dC5fbWlzc2luZ19mZWF0dXJlX3RvX3NraXBwZWRfdGVzdHMpOgorICAgICAgICAoUG9ydC5fbWlz
c2luZ19zeW1ib2xfdG9fc2tpcHBlZF90ZXN0cyk6CisgICAgICAgIChQb3J0Ll9oYXNfdGVzdF9p
bl9kaXJlY3Rvcmllcyk6CisgICAgICAgIChQb3J0Ll9za2lwcGVkX3Rlc3RzX2Zvcl91bnN1cHBv
cnRlZF9mZWF0dXJlcyk6CisgICAgICAgIChQb3J0Ll93azJfcG9ydF9uYW1lKToKKyAgICAgICAg
KFBvcnQuX3NraXBwZWRfZmlsZV9zZWFyY2hfcGF0aHMpOgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHk6CisgICAgICAgIChDaHJvbWl1bVBv
cnQpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21p
dW1fYW5kcm9pZC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L2Nocm9taXVtX3BvcnRfdGVzdGNhc2UucHk6CisgICAgICAgIChDaHJvbWl1bVBvcnRUZXN0
Q2FzZS50ZXN0X2NoZWNrX2J1aWxkKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L2RyaXZlcl91bml0dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L2VmbC5weToKKyAgICAgICAgKEVmbFBvcnQpOgorICAgICAg
ICAoRWZsUG9ydC5fX2luaXRfXyk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9ndGsucHk6CisgICAgICAgIChHdGtQb3J0KToKKyAgICAgICAgKEd0a1BvcnQu
c2V0dXBfZW52aXJvbl9mb3Jfc2VydmVyKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L3BvcnRfdGVzdGNhc2UucHk6CisgICAgICAgIChUZXN0V2ViS2l0UG9y
dCk6CisgICAgICAgIChUZXN0V2ViS2l0UG9ydC5fX2luaXRfXyk6CisgICAgICAgIChUZXN0V2Vi
S2l0UG9ydC5hbGxfdGVzdF9jb25maWd1cmF0aW9ucyk6CisgICAgICAgIChUZXN0V2ViS2l0UG9y
dC5fc3ltYm9sc19zdHJpbmcpOgorICAgICAgICAoVGVzdFdlYktpdFBvcnQuX3Rlc3RzX2Zvcl9v
dGhlcl9wbGF0Zm9ybXMpOgorICAgICAgICAoVGVzdFdlYktpdFBvcnQuX3Rlc3RzX2Zvcl9kaXNh
YmxlZF9mZWF0dXJlcyk6CisgICAgICAgIChQb3J0VGVzdENhc2UpOgorICAgICAgICAoUG9ydFRl
c3RDYXNlLnRlc3RfZGlmZl9pbWFnZSk6CisgICAgICAgIChQb3J0VGVzdENhc2UudGVzdF9wYXRo
X3RvX3Rlc3RfZXhwZWN0YXRpb25zX2ZpbGUpOgorICAgICAgICAoUG9ydFRlc3RDYXNlLnRlc3Rf
c2tpcHBlZF9kaXJlY3Rvcmllc19mb3Jfc3ltYm9scyk6CisgICAgICAgICh0ZXN0X3NraXBwZWRf
ZGlyZWN0b3JpZXNfZm9yX2ZlYXR1cmVzKToKKyAgICAgICAgKHRlc3Rfc2tpcHBlZF9kaXJlY3Rv
cmllc19mb3JfZmVhdHVyZXNfbm9fbWF0Y2hpbmdfdGVzdHNfaW5fdGVzdF9saXN0KToKKyAgICAg
ICAgKHRlc3Rfc2tpcHBlZF90ZXN0c19mb3JfdW5zdXBwb3J0ZWRfZmVhdHVyZXNfZW1wdHlfdGVz
dF9saXN0KToKKyAgICAgICAgKHRlc3Rfc2tpcHBlZF9sYXlvdXRfdGVzdHMpOgorICAgICAgICAo
dGVzdF9za2lwcGVkX2ZpbGVfc2VhcmNoX3BhdGhzKToKKyAgICAgICAgKHRlc3Rfcm9vdF9vcHRp
b24pOgorICAgICAgICAodGVzdF90ZXN0X2V4cGVjdGF0aW9ucyk6CisgICAgICAgICh0ZXN0X2J1
aWxkX2RyaXZlcik6CisgICAgICAgIChfYXNzZXJ0X2NvbmZpZ19maWxlX2Zvcl9wbGF0Zm9ybSk6
CisgICAgICAgICh0ZXN0X2xpbnV4X2Rpc3Ryb19kZXRlY3Rpb24pOgorICAgICAgICAodGVzdF9h
cGFjaGVfY29uZmlnX2ZpbGVfbmFtZV9mb3JfcGxhdGZvcm0pOgorICAgICAgICAodGVzdF9wYXRo
X3RvX2FwYWNoZV9jb25maWdfZmlsZSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9xdC5weToKKyAgICAgICAgKFF0UG9ydCk6CisgICAgICAgIChRdFBvcnQu
X19pbml0X18pOgorICAgICAgICAoUXRQb3J0LnNldHVwX2Vudmlyb25fZm9yX3NlcnZlcik6Cisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXQucHk6IFJl
bW92ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJr
aXRfdW5pdHRlc3QucHk6IFJlbW92ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29s
L3NlcnZlcnMvcmViYXNlbGluZXNlcnZlci5weToKKyAgICAgICAgKGdldF90ZXN0X2Jhc2VsaW5l
cy5BbGxQbGF0Zm9ybXNQb3J0KToKKyAgICAgICAgKGdldF90ZXN0X2Jhc2VsaW5lcy5BbGxQbGF0
Zm9ybXNQb3J0Ll9faW5pdF9fKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc2Vy
dmVycy9yZWJhc2VsaW5lc2VydmVyX3VuaXR0ZXN0LnB5OgorICAgICAgICAoZ2V0X3Rlc3RfY29u
ZmlnLlRlc3RNYWNQb3J0KToKKworMjAxMi0wNy0yNiAgRGlyayBQcmFua2UgIDxkcHJhbmtlQGNo
cm9taXVtLm9yZz4KKwogICAgICAgICBucnd0OiBtb3ZlIGltYWdlIGRpZmZpbmcgY29kZSB0byBh
IHNlcGFyYXRlIG1vZHVsZQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTI0NDcKIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9hcHBsZS5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvYXBwbGUucHkKaW5kZXggNWU4YjhiODI5ODQxNWQ2OGQxYThiMzlkZDc2ZDBjZjZi
YTNiY2ZjNi4uMjhlY2M2MzgwODVlN2NkNmYwOGMxNTk1ODU4NzU1ZDJlNTk3MzVhOSAxMDA2NDQK
LS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9hcHBsZS5weQor
KysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2FwcGxlLnB5CkBA
IC0yOCwxNCArMjgsMTQgQEAKIAogaW1wb3J0IGxvZ2dpbmcKIAotZnJvbSB3ZWJraXRweS5sYXlv
dXRfdGVzdHMucG9ydC53ZWJraXQgaW1wb3J0IFdlYktpdFBvcnQKK2Zyb20gd2Via2l0cHkubGF5
b3V0X3Rlc3RzLnBvcnQuYmFzZSBpbXBvcnQgUG9ydAogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVz
dHMubW9kZWxzLnRlc3RfY29uZmlndXJhdGlvbiBpbXBvcnQgVGVzdENvbmZpZ3VyYXRpb24KIAog
CiBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCiAKIAotY2xhc3MgQXBwbGVQb3J0
KFdlYktpdFBvcnQpOgorY2xhc3MgQXBwbGVQb3J0KFBvcnQpOgogICAgICIiIlNoYXJlZCBsb2dp
YyBiZXR3ZWVuIGFsbCBvZiBBcHBsZSdzIHBvcnRzLiIiIgogCiAgICAgIyBUaGlzIGlzIHVzZWQg
dG8gcmVwcmVzZW50IHRoZSB2ZXJzaW9uIG9mIGFuIG9wZXJhdGluZyBzeXN0ZW0KQEAgLTcyLDcg
KzcyLDcgQEAgY2xhc3MgQXBwbGVQb3J0KFdlYktpdFBvcnQpOgogICAgICAgICByZXR1cm4gcG9y
dF9uYW1lW2xlbihzZWxmLnBvcnRfbmFtZSArICctJyk6XQogCiAgICAgZGVmIF9faW5pdF9fKHNl
bGYsIGhvc3QsIHBvcnRfbmFtZSwgKiprd2FyZ3MpOgotICAgICAgICBXZWJLaXRQb3J0Ll9faW5p
dF9fKHNlbGYsIGhvc3QsIHBvcnRfbmFtZSwgKiprd2FyZ3MpCisgICAgICAgIHN1cGVyKEFwcGxl
UG9ydCwgc2VsZikuX19pbml0X18oaG9zdCwgcG9ydF9uYW1lLCAqKmt3YXJncykKIAogICAgICAg
ICBhbGxvd2VkX3BvcnRfbmFtZXMgPSBzZWxmLlZFUlNJT05fRkFMTEJBQ0tfT1JERVIgKyBbc2Vs
Zi5vcGVyYXRpbmdfc3lzdGVtKCkgKyAiLWZ1dHVyZSJdCiAgICAgICAgIHBvcnRfbmFtZSA9IHBv
cnRfbmFtZS5yZXBsYWNlKCctd2syJywgJycpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkKaW5kZXggNjU2YWZmZTIyNDk5MTlhOWQ1MTRjZDdm
ZDM2MDdhYTljNTYyN2JkYy4uYWQ5ZjUxNDJmOGVmNDY5MTFjNTg2NjM0YzA1NzcyZmMxN2NhYmRm
ZCAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9i
YXNlLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFz
ZS5weQpAQCAtMzMsNyArMzMsMTAgQEAgdGVzdCBpbmZyYXN0cnVjdHVyZSAodGhlIFBvcnQgYW5k
IERyaXZlciBjbGFzc2VzKS4iIiIKIGltcG9ydCBjZ2kKIGltcG9ydCBkaWZmbGliCiBpbXBvcnQg
ZXJybm8KK2ltcG9ydCBpdGVydG9vbHMKK2ltcG9ydCBsb2dnaW5nCiBpbXBvcnQgb3MKK2ltcG9y
dCBvcGVyYXRvcgogaW1wb3J0IG9wdHBhcnNlCiBpbXBvcnQgcmUKIGltcG9ydCBzeXMKQEAgLTQ5
LDcgKzUyLDYgQEAgZnJvbSB3ZWJraXRweS5jb21tb24gaW1wb3J0IGZpbmRfZmlsZXMKIGZyb20g
d2Via2l0cHkuY29tbW9uIGltcG9ydCByZWFkX2NoZWNrc3VtX2Zyb21fcG5nCiBmcm9tIHdlYmtp
dHB5LmNvbW1vbi5tZW1vaXplZCBpbXBvcnQgbWVtb2l6ZWQKIGZyb20gd2Via2l0cHkuY29tbW9u
LnN5c3RlbSBpbXBvcnQgcGF0aAotZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtIGltcG9ydCBs
b2d1dGlscwogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgU2Ny
aXB0RXJyb3IKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5zeXN0ZW1ob3N0IGltcG9ydCBT
eXN0ZW1Ib3N0CiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5tb2RlbHMudGVzdF9jb25maWd1
cmF0aW9uIGltcG9ydCBUZXN0Q29uZmlndXJhdGlvbgpAQCAtNjIsNyArNjQsNyBAQCBmcm9tIHdl
YmtpdHB5LmxheW91dF90ZXN0cy5zZXJ2ZXJzIGltcG9ydCBhcGFjaGVfaHR0cF9zZXJ2ZXIKIGZy
b20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnNlcnZlcnMgaW1wb3J0IGh0dHBfc2VydmVyCiBmcm9t
IHdlYmtpdHB5LmxheW91dF90ZXN0cy5zZXJ2ZXJzIGltcG9ydCB3ZWJzb2NrZXRfc2VydmVyCiAK
LV9sb2cgPSBsb2d1dGlscy5nZXRfbG9nZ2VyKF9fZmlsZV9fKQorX2xvZyA9IGxvZ2dpbmcuZ2V0
TG9nZ2VyKF9fbmFtZV9fKQogCiAKICMgRklYTUU6IFRoaXMgY2xhc3Mgc2hvdWxkIG1lcmdlIHdp
dGggV2ViS2l0UG9ydCBub3cgdGhhdCBDaHJvbWl1bSBiZWhhdmVzIG1vc3RseSBsaWtlIG90aGVy
IHdlYmtpdCBwb3J0cy4KQEAgLTY2OCw3ICs2NzAsMTAgQEAgY2xhc3MgUG9ydChvYmplY3QpOgog
CiAgICAgZGVmIHNraXBwZWRfbGF5b3V0X3Rlc3RzKHNlbGYsIHRlc3RfbGlzdCk6CiAgICAgICAg
ICIiIlJldHVybnMgdGhlIHNldCBvZiB0ZXN0cyBmb3VuZCBpbiBTa2lwcGVkIGZpbGVzLiBEb2Vz
ICpub3QqIGluY2x1ZGUgdGVzdHMgbWFya2VkIGFzIFNLSVAgaW4gZXhwZWN0YXRpb25zIGZpbGVz
LiIiIgotICAgICAgICByZXR1cm4gc2V0KFtdKQorICAgICAgICB0ZXN0c190b19za2lwID0gc2V0
KHNlbGYuX2V4cGVjdGF0aW9uc19mcm9tX3NraXBwZWRfZmlsZXMoc2VsZi5fc2tpcHBlZF9maWxl
X3NlYXJjaF9wYXRocygpKSkKKyAgICAgICAgdGVzdHNfdG9fc2tpcC51cGRhdGUoc2VsZi5fdGVz
dHNfZm9yX290aGVyX3BsYXRmb3JtcygpKQorICAgICAgICB0ZXN0c190b19za2lwLnVwZGF0ZShz
ZWxmLl9za2lwcGVkX3Rlc3RzX2Zvcl91bnN1cHBvcnRlZF9mZWF0dXJlcyh0ZXN0X2xpc3QpKQor
ICAgICAgICByZXR1cm4gdGVzdHNfdG9fc2tpcAogCiAgICAgZGVmIF90ZXN0c19mcm9tX3NraXBw
ZWRfZmlsZV9jb250ZW50cyhzZWxmLCBza2lwcGVkX2ZpbGVfY29udGVudHMpOgogICAgICAgICB0
ZXN0c190b19za2lwID0gW10KQEAgLTEyOTYsNiArMTMwMSwxNzYgQEAgY2xhc3MgUG9ydChvYmpl
Y3QpOgogICAgICAgICAjIC0tcGl4ZWwtdGVzdC1kaXJlY3RvcnkgaXMgbm90IHNwZWNpZmllZC4K
ICAgICAgICAgcmV0dXJuIFRydWUKIAorICAgICMgRklYTUU6IEV2ZW50dWFsbHkgd2Ugc2hvdWxk
IHN0YW5kYXJpemUgcG9ydCBuYW1pbmcsIGFuZCBtYWtlIHRoaXMgbWV0aG9kIHNtYXJ0IGVub3Vn
aAorICAgICMgdG8gdXNlIGZvciBhbGwgcG9ydCBjb25maWd1cmF0aW9ucyAoaW5jbHVkaW5nIGFy
Y2hpdGVjdHVyZXMsIGdyYXBoaWNzIHR5cGVzLCBldGMpLgorICAgIGRlZiBfcG9ydF9mbGFnX2Zv
cl9zY3JpcHRzKHNlbGYpOgorICAgICAgICAjIFRoaXMgaXMgb3ZlcnJyaWRlbiBieSBwb3J0cyB3
aGljaCBuZWVkIGEgZmxhZyBwYXNzZWQgdG8gc2NyaXB0cyB0byBkaXN0aW5ndWlzaCB0aGUgdXNl
IG9mIHRoYXQgcG9ydC4KKyAgICAgICAgIyBGb3IgZXhhbXBsZSAtLXF0IG9uIGxpbnV4LCBzaW5j
ZSBhIHVzZXIgbWlnaHQgaGF2ZSBib3RoIEd0ayBhbmQgUXQgbGlicmFyaWVzIGluc3RhbGxlZC4K
KyAgICAgICAgIyBGSVhNRTogQ2hyb21pdW0gc2hvdWxkIG92ZXJyaWRlIHRoaXMgb25jZSBDaHJv
bWl1bVBvcnQgaXMgYSBXZWJLaXRQb3J0LgorICAgICAgICByZXR1cm4gTm9uZQorCisgICAgIyBU
aGlzIGlzIG1vZGVsZWQgYWZ0ZXIgd2Via2l0ZGlycy5wbSBhcmd1bWVudHNGb3JDb25maWd1cmF0
aW9uKCkgZnJvbSBvbGQtcnVuLXdlYmtpdC10ZXN0cworICAgIGRlZiBfYXJndW1lbnRzX2Zvcl9j
b25maWd1cmF0aW9uKHNlbGYpOgorICAgICAgICBjb25maWdfYXJncyA9IFtdCisgICAgICAgIGNv
bmZpZ19hcmdzLmFwcGVuZChzZWxmLl9jb25maWcuZmxhZ19mb3JfY29uZmlndXJhdGlvbihzZWxm
LmdldF9vcHRpb24oJ2NvbmZpZ3VyYXRpb24nKSkpCisgICAgICAgICMgRklYTUU6IFdlIG1heSBu
ZWVkIHRvIGFkZCBzdXBwb3J0IGZvciBwYXNzaW5nIC0tMzItYml0IGxpa2Ugb2xkLXJ1bi13ZWJr
aXQtdGVzdHMgaGFkLgorICAgICAgICBwb3J0X2ZsYWcgPSBzZWxmLl9wb3J0X2ZsYWdfZm9yX3Nj
cmlwdHMoKQorICAgICAgICBpZiBwb3J0X2ZsYWc6CisgICAgICAgICAgICBjb25maWdfYXJncy5h
cHBlbmQocG9ydF9mbGFnKQorICAgICAgICByZXR1cm4gY29uZmlnX2FyZ3MKKworICAgIGRlZiBf
cnVuX3NjcmlwdChzZWxmLCBzY3JpcHRfbmFtZSwgYXJncz1Ob25lLCBpbmNsdWRlX2NvbmZpZ3Vy
YXRpb25fYXJndW1lbnRzPVRydWUsIGRlY29kZV9vdXRwdXQ9VHJ1ZSwgZW52PU5vbmUpOgorICAg
ICAgICBydW5fc2NyaXB0X2NvbW1hbmQgPSBbc2VsZi5fY29uZmlnLnNjcmlwdF9wYXRoKHNjcmlw
dF9uYW1lKV0KKyAgICAgICAgaWYgaW5jbHVkZV9jb25maWd1cmF0aW9uX2FyZ3VtZW50czoKKyAg
ICAgICAgICAgIHJ1bl9zY3JpcHRfY29tbWFuZC5leHRlbmQoc2VsZi5fYXJndW1lbnRzX2Zvcl9j
b25maWd1cmF0aW9uKCkpCisgICAgICAgIGlmIGFyZ3M6CisgICAgICAgICAgICBydW5fc2NyaXB0
X2NvbW1hbmQuZXh0ZW5kKGFyZ3MpCisgICAgICAgIG91dHB1dCA9IHNlbGYuX2V4ZWN1dGl2ZS5y
dW5fY29tbWFuZChydW5fc2NyaXB0X2NvbW1hbmQsIGN3ZD1zZWxmLl9jb25maWcud2Via2l0X2Jh
c2VfZGlyKCksIGRlY29kZV9vdXRwdXQ9ZGVjb2RlX291dHB1dCwgZW52PWVudikKKyAgICAgICAg
X2xvZy5kZWJ1ZygnT3V0cHV0IG9mICVzOlxuJXMnICUgKHJ1bl9zY3JpcHRfY29tbWFuZCwgb3V0
cHV0KSkKKyAgICAgICAgcmV0dXJuIG91dHB1dAorCisgICAgZGVmIF9idWlsZF9kcml2ZXIoc2Vs
Zik6CisgICAgICAgIGVudmlyb25tZW50ID0gc2VsZi5ob3N0LmNvcHlfY3VycmVudF9lbnZpcm9u
bWVudCgpCisgICAgICAgIGVudmlyb25tZW50LmRpc2FibGVfZ2NjX3NtYXJ0cXVvdGVzKCkKKyAg
ICAgICAgZW52ID0gZW52aXJvbm1lbnQudG9fZGljdGlvbmFyeSgpCisKKyAgICAgICAgIyBGSVhN
RTogV2UgYnVpbGQgYm90aCBEdW1wUmVuZGVyVHJlZSBhbmQgV2ViS2l0VGVzdFJ1bm5lciBmb3IK
KyAgICAgICAgIyBXZWJLaXRUZXN0UnVubmVyIHJ1bnMgYmVjYXVzZSBEdW1wUmVuZGVyVHJlZSBz
dGlsbCBpbmNsdWRlcworICAgICAgICAjIHRoZSBEdW1wUmVuZGVyVHJlZVN1cHBvcnQgbW9kdWxl
IGFuZCB0aGUgVGVzdE5ldHNjYXBlUGx1Z2luLgorICAgICAgICAjIFRoZXNlIHR3byBwcm9qZWN0
cyBzaG91bGQgYmUgZmFjdG9yZWQgb3V0IGludG8gdGhlaXIgb3duCisgICAgICAgICMgcHJvamVj
dHMuCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuX3J1bl9zY3JpcHQoImJ1aWxkLWR1
bXByZW5kZXJ0cmVlIiwgYXJncz1zZWxmLl9idWlsZF9kcml2ZXJfZmxhZ3MoKSwgZW52PWVudikK
KyAgICAgICAgICAgIGlmIHNlbGYuZ2V0X29wdGlvbignd2Via2l0X3Rlc3RfcnVubmVyJyk6Cisg
ICAgICAgICAgICAgICAgc2VsZi5fcnVuX3NjcmlwdCgiYnVpbGQtd2Via2l0dGVzdHJ1bm5lciIs
IGFyZ3M9c2VsZi5fYnVpbGRfZHJpdmVyX2ZsYWdzKCksIGVudj1lbnYpCisgICAgICAgIGV4Y2Vw
dCBTY3JpcHRFcnJvciwgZToKKyAgICAgICAgICAgIF9sb2cuZXJyb3IoZS5tZXNzYWdlX3dpdGhf
b3V0cHV0KG91dHB1dF9saW1pdD1Ob25lKSkKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAg
ICAgICByZXR1cm4gVHJ1ZQorCisgICAgZGVmIF9idWlsZF9kcml2ZXJfZmxhZ3Moc2VsZik6Cisg
ICAgICAgIHJldHVybiBbXQorCisgICAgZGVmIF90ZXN0c19mb3Jfb3RoZXJfcGxhdGZvcm1zKHNl
bGYpOgorICAgICAgICAjIEJ5IGRlZmF1bHQgd2Ugd2lsbCBza2lwIGFueSBkaXJlY3RvcnkgdW5k
ZXIgTGF5b3V0VGVzdHMvcGxhdGZvcm0KKyAgICAgICAgIyB0aGF0IGlzbid0IGluIG91ciBiYXNl
bGluZSBzZWFyY2ggcGF0aCAodGhpcyBtaXJyb3JzIHdoYXQKKyAgICAgICAgIyBvbGQtcnVuLXdl
YmtpdC10ZXN0cyBkb2VzIGluIGZpbmRUZXN0c1RvUnVuKCkpLgorICAgICAgICAjIE5vdGUgdGhp
cyByZXR1cm5zIExheW91dFRlc3RzL3BsYXRmb3JtLyosIG5vdCBwbGF0Zm9ybS8qLyouCisgICAg
ICAgIGVudHJpZXMgPSBzZWxmLl9maWxlc3lzdGVtLmdsb2Ioc2VsZi5fd2Via2l0X2Jhc2VsaW5l
X3BhdGgoJyonKSkKKyAgICAgICAgZGlyc190b19za2lwID0gW10KKyAgICAgICAgZm9yIGVudHJ5
IGluIGVudHJpZXM6CisgICAgICAgICAgICBpZiBzZWxmLl9maWxlc3lzdGVtLmlzZGlyKGVudHJ5
KSBhbmQgZW50cnkgbm90IGluIHNlbGYuYmFzZWxpbmVfc2VhcmNoX3BhdGgoKToKKyAgICAgICAg
ICAgICAgICBiYXNlbmFtZSA9IHNlbGYuX2ZpbGVzeXN0ZW0uYmFzZW5hbWUoZW50cnkpCisgICAg
ICAgICAgICAgICAgZGlyc190b19za2lwLmFwcGVuZCgncGxhdGZvcm0vJXMnICUgYmFzZW5hbWUp
CisgICAgICAgIHJldHVybiBkaXJzX3RvX3NraXAKKworICAgIGRlZiBfcnVudGltZV9mZWF0dXJl
X2xpc3Qoc2VsZik6CisgICAgICAgICIiIklmIGEgcG9ydCBtYWtlcyBjZXJ0YWluIGZlYXR1cmVz
IGF2YWlsYWJsZSBvbmx5IHRocm91Z2ggcnVudGltZSBmbGFncywgaXQgY2FuIG92ZXJyaWRlIHRo
aXMgcm91dGluZSB0byBpbmRpY2F0ZSB3aGljaCBvbmVzIGFyZSBhdmFpbGFibGUuIiIiCisgICAg
ICAgIHJldHVybiBOb25lCisKKyAgICBkZWYgbm1fY29tbWFuZChzZWxmKToKKyAgICAgICAgcmV0
dXJuICdubScKKworICAgIGRlZiBfbW9kdWxlc190b19zZWFyY2hfZm9yX3N5bWJvbHMoc2VsZik6
CisgICAgICAgIHBhdGggPSBzZWxmLl9wYXRoX3RvX3dlYmNvcmVfbGlicmFyeSgpCisgICAgICAg
IGlmIHBhdGg6CisgICAgICAgICAgICByZXR1cm4gW3BhdGhdCisgICAgICAgIHJldHVybiBbXQor
CisgICAgZGVmIF9zeW1ib2xzX3N0cmluZyhzZWxmKToKKyAgICAgICAgc3ltYm9scyA9ICcnCisg
ICAgICAgIGZvciBwYXRoX3RvX21vZHVsZSBpbiBzZWxmLl9tb2R1bGVzX3RvX3NlYXJjaF9mb3Jf
c3ltYm9scygpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHN5bWJvbHMgKz0g
c2VsZi5fZXhlY3V0aXZlLnJ1bl9jb21tYW5kKFtzZWxmLm5tX2NvbW1hbmQoKSwgcGF0aF90b19t
b2R1bGVdLCBlcnJvcl9oYW5kbGVyPXNlbGYuX2V4ZWN1dGl2ZS5pZ25vcmVfZXJyb3IpCisgICAg
ICAgICAgICBleGNlcHQgT1NFcnJvciwgZToKKyAgICAgICAgICAgICAgICBfbG9nLndhcm4oIkZh
aWxlZCB0byBydW4gbm06ICVzLiAgQ2FuJ3QgZGV0ZXJtaW5lIHN1cHBvcnRlZCBmZWF0dXJlcyBj
b3JyZWN0bHkuIiAlIGUpCisgICAgICAgIHJldHVybiBzeW1ib2xzCisKKyAgICAjIFBvcnRzIHdo
aWNoIHVzZSBydW4tdGltZSBmZWF0dXJlIGRldGVjdGlvbiBzaG91bGQgZGVmaW5lIHRoaXMgbWV0
aG9kIGFuZCByZXR1cm4KKyAgICAjIGEgZGljdGlvbmFyeSBtYXBwaW5nIGZyb20gRmVhdHVyZSBO
YW1lcyB0byBza2lwcGVkIGRpcmVjdG9pcmVzLiAgTlJXVCB3aWxsCisgICAgIyBydW4gRHVtcFJl
bmRlclRyZWUgLS1wcmludC1zdXBwb3J0ZWQtZmVhdHVyZXMgYW5kIHBhcnNlIHRoZSBvdXRwdXQu
CisgICAgIyBJZiB0aGUgRmVhdHVyZSBOYW1lcyBhcmUgbm90IGZvdW5kIGluIHRoZSBvdXRwdXQs
IHRoZSBjb3JyZXNwb25kaW5nIGRpcmVjdG9yaWVzCisgICAgIyB3aWxsIGJlIHNraXBwZWQuCisg
ICAgZGVmIF9taXNzaW5nX2ZlYXR1cmVfdG9fc2tpcHBlZF90ZXN0cyhzZWxmKToKKyAgICAgICAg
IiIiUmV0dXJuIHRoZSBzdXBwb3J0ZWQgZmVhdHVyZSBkaWN0aW9uYXJ5LiBLZXlzIGFyZSBmZWF0
dXJlIG5hbWVzIGFuZCB2YWx1ZXMKKyAgICAgICAgYXJlIHRoZSBsaXN0cyBvZiBkaXJlY3Rvcmll
cyB0byBza2lwIGlmIHRoZSBmZWF0dXJlIG5hbWUgaXMgbm90IG1hdGNoZWQuIiIiCisgICAgICAg
ICMgRklYTUU6IFRoaXMgbGlzdCBtYXRjaGVzIFdlYktpdFdpbiBhbmQgc2hvdWxkIGJlIG1vdmVk
IG9udG8gdGhlIFdpbiBwb3J0LgorICAgICAgICByZXR1cm4geworICAgICAgICAgICAgIkFjY2Vs
ZXJhdGVkIENvbXBvc2l0aW5nIjogWyJjb21wb3NpdGluZyJdLAorICAgICAgICAgICAgIjNEIFJl
bmRlcmluZyI6IFsiYW5pbWF0aW9ucy8zZCIsICJ0cmFuc2Zvcm1zLzNkIl0sCisgICAgICAgIH0K
KworICAgICMgUG9ydHMgd2hpY2ggdXNlIGNvbXBpbGUtdGltZSBmZWF0dXJlIGRldGVjdGlvbiBz
aG91bGQgZGVmaW5lIHRoaXMgbWV0aG9kIGFuZCByZXR1cm4KKyAgICAjIGEgZGljdGlvbmFyeSBt
YXBwaW5nIGZyb20gc3ltYm9sIHN1YnN0cmluZ3MgdG8gcG9zc2libHkgZGlzYWJsZWQgdGVzdCBk
aXJlY3Rvcmllcy4KKyAgICAjIFdoZW4gdGhlIHN5bWJvbCBzdWJzdHJpbmdzIGFyZSBub3QgbWF0
Y2hlZCwgdGhlIGRpcmVjdG9yaWVzIHdpbGwgYmUgc2tpcHBlZC4KKyAgICAjIElmIHBvcnRzIGRv
bid0IGV2ZXIgZW5hYmxlIGNlcnRhaW4gZmVhdHVyZXMsIHRoZW4gdGhvc2UgZGlyZWN0b3JpZXMg
Y2FuIGp1c3QgYmUKKyAgICAjIGluIHRoZSBTa2lwcGVkIGxpc3QgaW5zdGVhZCBvZiBjb21waWxl
LXRpbWUtY2hlY2tlZCBoZXJlLgorICAgIGRlZiBfbWlzc2luZ19zeW1ib2xfdG9fc2tpcHBlZF90
ZXN0cyhzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSBzdXBwb3J0ZWQgZmVhdHVyZSBkaWN0
aW9uYXJ5LiBUaGUga2V5cyBhcmUgc3ltYm9sLXN1YnN0cmluZ3MKKyAgICAgICAgYW5kIHRoZSB2
YWx1ZXMgYXJlIHRoZSBsaXN0cyBvZiBkaXJlY3RvcmllcyB0byBza2lwIGlmIHRoYXQgc3ltYm9s
IGlzIG1pc3NpbmcuIiIiCisgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICAiTWF0aE1MRWxl
bWVudCI6IFsibWF0aG1sIl0sCisgICAgICAgICAgICAiR3JhcGhpY3NMYXllciI6IFsiY29tcG9z
aXRpbmciXSwKKyAgICAgICAgICAgICJXZWJDb3JlSGFzM0RSZW5kZXJpbmciOiBbImFuaW1hdGlv
bnMvM2QiLCAidHJhbnNmb3Jtcy8zZCJdLAorICAgICAgICAgICAgIldlYkdMU2hhZGVyIjogWyJm
YXN0L2NhbnZhcy93ZWJnbCIsICJjb21wb3NpdGluZy93ZWJnbCIsICJodHRwL3Rlc3RzL2NhbnZh
cy93ZWJnbCJdLAorICAgICAgICAgICAgIk1IVE1MQXJjaGl2ZSI6IFsibWh0bWwiXSwKKyAgICAg
ICAgICAgICJDU1NWYXJpYWJsZVZhbHVlIjogWyJmYXN0L2Nzcy92YXJpYWJsZXMiLCAiaW5zcGVj
dG9yL3N0eWxlcy92YXJpYWJsZXMiXSwKKyAgICAgICAgfQorCisgICAgZGVmIF9oYXNfdGVzdF9p
bl9kaXJlY3RvcmllcyhzZWxmLCBkaXJlY3RvcnlfbGlzdHMsIHRlc3RfbGlzdCk6CisgICAgICAg
IGlmIG5vdCB0ZXN0X2xpc3Q6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgICAgICBk
aXJlY3RvcmllcyA9IGl0ZXJ0b29scy5jaGFpbi5mcm9tX2l0ZXJhYmxlKGRpcmVjdG9yeV9saXN0
cykKKyAgICAgICAgZm9yIGRpcmVjdG9yeSwgdGVzdCBpbiBpdGVydG9vbHMucHJvZHVjdChkaXJl
Y3RvcmllcywgdGVzdF9saXN0KToKKyAgICAgICAgICAgIGlmIHRlc3Quc3RhcnRzd2l0aChkaXJl
Y3RvcnkpOgorICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIHJldHVybiBGYWxz
ZQorCisgICAgZGVmIF9za2lwcGVkX3Rlc3RzX2Zvcl91bnN1cHBvcnRlZF9mZWF0dXJlcyhzZWxm
LCB0ZXN0X2xpc3QpOgorICAgICAgICAjIE9ubHkgY2hlY2sgdGhlIHJ1bnRpbWUgZmVhdHVyZSBs
aXN0IG9mIHRoZXJlIGFyZSB0ZXN0cyBpbiB0aGUgdGVzdF9saXN0IHRoYXQgbWlnaHQgZ2V0IHNr
aXBwZWQuCisgICAgICAgICMgVGhpcyBpcyBhIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbiB0byBh
dm9pZCB0aGUgc3VicHJvY2VzcyBjYWxsIHRvIERSVC4KKyAgICAgICAgaWYgc2VsZi5faGFzX3Rl
c3RfaW5fZGlyZWN0b3JpZXMoc2VsZi5fbWlzc2luZ19mZWF0dXJlX3RvX3NraXBwZWRfdGVzdHMo
KS52YWx1ZXMoKSwgdGVzdF9saXN0KToKKyAgICAgICAgICAgICMgSWYgdGhlIHBvcnQgc3VwcG9y
dHMgcnVudGltZSBmZWF0dXJlIGRldGVjdGlvbiwgZGlzYWJsZSBhbnkgdGVzdHMKKyAgICAgICAg
ICAgICMgZm9yIGZlYXR1cmVzIG1pc3NpbmcgZnJvbSB0aGUgcnVudGltZSBmZWF0dXJlIGxpc3Qu
CisgICAgICAgICAgICBzdXBwb3J0ZWRfZmVhdHVyZV9saXN0ID0gc2VsZi5fcnVudGltZV9mZWF0
dXJlX2xpc3QoKQorICAgICAgICAgICAgIyBJZiBfcnVudGltZV9mZWF0dXJlX2xpc3QgcmV0dXJu
cyBhIG5vbi1Ob25lIHZhbHVlLCB0aGVuIHByZWZlcgorICAgICAgICAgICAgIyBydW50aW1lIGZl
YXR1cmUgZGV0ZWN0aW9uIG92ZXIgc3RhdGljIGZlYXR1cmUgZGV0ZWN0aW9uLgorICAgICAgICAg
ICAgaWYgc3VwcG9ydGVkX2ZlYXR1cmVfbGlzdCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAg
ICByZXR1cm4gcmVkdWNlKG9wZXJhdG9yLmFkZCwgW2RpcmVjdG9yaWVzIGZvciBmZWF0dXJlLCBk
aXJlY3RvcmllcyBpbiBzZWxmLl9taXNzaW5nX2ZlYXR1cmVfdG9fc2tpcHBlZF90ZXN0cygpLml0
ZW1zKCkgaWYgZmVhdHVyZSBub3QgaW4gc3VwcG9ydGVkX2ZlYXR1cmVfbGlzdF0pCisKKyAgICAg
ICAgIyBPbmx5IGNoZWNrIHRoZSBzeW1ib2xzIG9mIHRoZXJlIGFyZSB0ZXN0cyBpbiB0aGUgdGVz
dF9saXN0IHRoYXQgbWlnaHQgZ2V0IHNraXBwZWQuCisgICAgICAgICMgVGhpcyBpcyBhIHBlcmZv
cm1hbmNlIG9wdGltaXphdGlvbiB0byBhdm9pZCB0aGUgY2FsbGluZyBubS4KKyAgICAgICAgaWYg
c2VsZi5faGFzX3Rlc3RfaW5fZGlyZWN0b3JpZXMoc2VsZi5fbWlzc2luZ19zeW1ib2xfdG9fc2tp
cHBlZF90ZXN0cygpLnZhbHVlcygpLCB0ZXN0X2xpc3QpOgorICAgICAgICAgICAgIyBSdW50aW1l
IGZlYXR1cmUgZGV0ZWN0aW9uIG5vdCBzdXBwb3J0ZWQsIGZhbGxiYWNrIHRvIHN0YXRpYyBkZWN0
ZWN0aW9uOgorICAgICAgICAgICAgIyBEaXNhYmxlIGFueSB0ZXN0cyBmb3Igc3ltYm9scyBtaXNz
aW5nIGZyb20gdGhlIGV4ZWN1dGFibGUgb3IgbGlicmFyaWVzLgorICAgICAgICAgICAgc3ltYm9s
c19zdHJpbmcgPSBzZWxmLl9zeW1ib2xzX3N0cmluZygpCisgICAgICAgICAgICBpZiBzeW1ib2xz
X3N0cmluZyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVkdWNlKG9wZXJh
dG9yLmFkZCwgW2RpcmVjdG9yaWVzIGZvciBzeW1ib2xfc3Vic3RyaW5nLCBkaXJlY3RvcmllcyBp
biBzZWxmLl9taXNzaW5nX3N5bWJvbF90b19za2lwcGVkX3Rlc3RzKCkuaXRlbXMoKSBpZiBzeW1i
b2xfc3Vic3RyaW5nIG5vdCBpbiBzeW1ib2xzX3N0cmluZ10sIFtdKQorCisgICAgICAgICMgRmFp
bGVkIHRvIGdldCBhbnkgcnVudGltZSBvciBzeW1ib2wgaW5mb3JtYXRpb24sIGRvbid0IHNraXAg
YW55IHRlc3RzLgorICAgICAgICByZXR1cm4gW10KKworICAgIGRlZiBfd2syX3BvcnRfbmFtZShz
ZWxmKToKKyAgICAgICAgIyBCeSBjdXJyZW50IGNvbnZlbnRpb24sIHRoZSBXZWJLaXQyIG5hbWUg
aXMgYWx3YXlzIG1hYy13azIsIHdpbi13azIsIG5vdCBtYWMtbGVvcGFyZC13azIsIGV0YywKKyAg
ICAgICAgIyBleGNlcHQgZm9yIFF0IGJlY2F1c2UgV2ViS2l0MiBpcyBvbmx5IHN1cHBvcnRlZCBi
eSBRdCA1LjAgKHRoZXJlZm9yZTogcXQtNS4wLXdrMikuCisgICAgICAgIHJldHVybiAiJXMtd2sy
IiAlIHNlbGYucG9ydF9uYW1lCisKKyAgICBkZWYgX3NraXBwZWRfZmlsZV9zZWFyY2hfcGF0aHMo
c2VsZik6CisgICAgICAgICMgVW5saWtlIGJhc2VsaW5lX3NlYXJjaF9wYXRoLCB3ZSBvbmx5IHdh
bnQgdG8gc2VhcmNoIFtXSzItUE9SVCwgUE9SVC1WRVJTSU9OLCBQT1JUXSBhbmQgYW55IGRpcmVj
dG9yaWVzCisgICAgICAgICMgaW5jbHVkZWQgdmlhIC0tYWRkaXRpb25hbC1wbGF0Zm9ybS1kaXJl
Y3RvcnksIG5vdCB0aGUgZnVsbCBjYXNhZGUuCisgICAgICAgICMgTm90ZSBvcmRlciBkb2Vzbid0
IG1hdHRlciBzaW5jZSB0aGUgU2tpcHBlZCBmaWxlIGNvbnRlbnRzIGFyZSBhbGwgY29tYmluZWQu
CisgICAgICAgIHNlYXJjaF9wYXRocyA9IHNldChbc2VsZi5wb3J0X25hbWVdKQorICAgICAgICBp
ZiAnZnV0dXJlJyBub3QgaW4gc2VsZi5uYW1lKCk6CisgICAgICAgICAgICBzZWFyY2hfcGF0aHMu
YWRkKHNlbGYubmFtZSgpKQorICAgICAgICBpZiBzZWxmLmdldF9vcHRpb24oJ3dlYmtpdF90ZXN0
X3J1bm5lcicpOgorICAgICAgICAgICAgIyBCZWNhdXNlIG5lYXJseSBhbGwgb2YgdGhlIHNraXBw
ZWQgdGVzdHMgZm9yIFdlYktpdCAyIGFyZSBkdWUgdG8gY3Jvc3MtcGxhdGZvcm0KKyAgICAgICAg
ICAgICMgaXNzdWVzLCBhbGwgd2syIHBvcnRzIHNoYXJlIGEgc2tpcHBlZCBsaXN0IHVuZGVyIHBs
YXRmb3JtL3drMi4KKyAgICAgICAgICAgIHNlYXJjaF9wYXRocy51cGRhdGUoW3NlbGYuX3drMl9w
b3J0X25hbWUoKSwgIndrMiJdKQorICAgICAgICBzZWFyY2hfcGF0aHMudXBkYXRlKHNlbGYuZ2V0
X29wdGlvbigiYWRkaXRpb25hbF9wbGF0Zm9ybV9kaXJlY3RvcnkiLCBbXSkpCisKKyAgICAgICAg
cmV0dXJuIHNlYXJjaF9wYXRocworCiAKIGNsYXNzIFZpcnR1YWxUZXN0U3VpdGUob2JqZWN0KToK
ICAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSwgYmFzZSwgYXJncywgdGVzdHM9Tm9uZSk6CmRp
ZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9t
aXVtLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1
bS5weQppbmRleCBiZjU0MTJkYjI4OGJmZTRkNTA2OGU2OGNiZjM4NWVhODc4YjhjMWI4Li4yNGNk
ZWIzZjc4YTQwZDU4YTE2ZWExMjUyOTk4YzBiMDc0ODMxOTUyIDEwMDc1NQotLS0gYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5CisrKyBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkKQEAgLTQyLDEz
ICs0MiwxMiBAQCBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0gaW1wb3J0IGV4ZWN1dGl2ZQog
ZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLnBhdGggaW1wb3J0IGN5Z3BhdGgKIGZyb20gd2Vi
a2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscy50ZXN0X2NvbmZpZ3VyYXRpb24gaW1wb3J0IFRlc3RD
b25maWd1cmF0aW9uCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0LmJhc2UgaW1wb3J0
IFBvcnQsIFZpcnR1YWxUZXN0U3VpdGUKLWZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQu
d2Via2l0IGltcG9ydCBXZWJLaXRQb3J0CiAKIAogX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9f
bmFtZV9fKQogCiAKLWNsYXNzIENocm9taXVtUG9ydChXZWJLaXRQb3J0KToKK2NsYXNzIENocm9t
aXVtUG9ydChQb3J0KToKICAgICAiIiJBYnN0cmFjdCBiYXNlIGNsYXNzIGZvciBDaHJvbWl1bSBp
bXBsZW1lbnRhdGlvbnMgb2YgdGhlIFBvcnQgY2xhc3MuIiIiCiAKICAgICBBTExfU1lTVEVNUyA9
ICgKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
Y2hyb21pdW1fYW5kcm9pZC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvY2hyb21pdW1fYW5kcm9pZC5weQppbmRleCAwZmJjZDY2YWJjZGRhNTc3OGIyYzczOTcy
NTIzNmE1MGQzNjY0MDYzLi43MWY3YzczZWQ3MTM3NDIyN2JjYTU4ODVkNjY4OGQ5NDMyMjYxNjNm
IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2No
cm9taXVtX2FuZHJvaWQucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9jaHJvbWl1bV9hbmRyb2lkLnB5CkBAIC0zNyw3ICszNyw2IEBAIGZyb20gd2Via2l0
cHkubGF5b3V0X3Rlc3RzLnBvcnQgaW1wb3J0IGNocm9taXVtCiBmcm9tIHdlYmtpdHB5LmxheW91
dF90ZXN0cy5wb3J0IGltcG9ydCBkcml2ZXIKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBv
cnQgaW1wb3J0IGZhY3RvcnkKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQgaW1wb3J0
IHNlcnZlcl9wcm9jZXNzCi1mcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0IGltcG9ydCB3
ZWJraXQKIAogCiBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3BvcnRf
dGVzdGNhc2UucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2No
cm9taXVtX3BvcnRfdGVzdGNhc2UucHkKaW5kZXggNjk3YzI3MjQyYjdkN2Y5NDVhMTI0YzljNDE1
M2M4NjcxYjU4NDE5NC4uN2Q0YzIzNWYzMDk2ODFmM2RmNGRhMWNlZDBiMTRjYjBiMjVkM2JiZSAx
MDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJv
bWl1bV9wb3J0X3Rlc3RjYXNlLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvY2hyb21pdW1fcG9ydF90ZXN0Y2FzZS5weQpAQCAtNDQsNiArNDQsMTAgQEAg
ZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydCBpbXBvcnQgcG9ydF90ZXN0Y2FzZQogCiBj
bGFzcyBDaHJvbWl1bVBvcnRUZXN0Q2FzZShwb3J0X3Rlc3RjYXNlLlBvcnRUZXN0Q2FzZSk6CiAK
KyAgICBkZWYgdGVzdF9jaGVja19idWlsZChzZWxmKToKKyAgICAgICAgcG9ydCA9IHNlbGYubWFr
ZV9wb3J0KCkKKyAgICAgICAgcG9ydC5jaGVja19idWlsZChuZWVkc19odHRwPVRydWUpCisKICAg
ICBkZWYgdGVzdF9kZWZhdWx0X3RpbWVvdXRfbXMoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWxzKHNlbGYubWFrZV9wb3J0KG9wdGlvbnM9TW9ja09wdGlvbnMoY29uZmlndXJhdGlvbj0n
UmVsZWFzZScpKS5kZWZhdWx0X3RpbWVvdXRfbXMoKSwgNjAwMCkKICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbHMoc2VsZi5tYWtlX3BvcnQob3B0aW9ucz1Nb2NrT3B0aW9ucyhjb25maWd1cmF0aW9u
PSdEZWJ1ZycpKS5kZWZhdWx0X3RpbWVvdXRfbXMoKSwgMTIwMDApCmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2RyaXZlcl91bml0dGVzdC5weSBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZHJpdmVyX3VuaXR0ZXN0
LnB5CmluZGV4IDYyZjY5OTUyYmU2YTAxYjE5OGY4MWY0OGI0Njg5MzdhNzc2MjE0OWUuLjcwNWMx
YmI3Yjc4OGQ0YTJlZDRjOTBhNzU3ZDg2MTRlNjhlYWI5MmYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZHJpdmVyX3VuaXR0ZXN0LnB5CisrKyBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZHJpdmVyX3VuaXR0ZXN0
LnB5CkBAIC0zNCw3ICszNCw3IEBAIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQgaW1w
b3J0IFBvcnQsIERyaXZlciwgRHJpdmVyT3V0cHV0CiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0
cy5wb3J0LnNlcnZlcl9wcm9jZXNzX21vY2sgaW1wb3J0IE1vY2tTZXJ2ZXJQcm9jZXNzCiAKICMg
RklYTUU6IHJlbW92ZSB0aGUgZGVwZW5kZW5jeSBvbiBUZXN0V2ViS2l0UG9ydAotZnJvbSB3ZWJr
aXRweS5sYXlvdXRfdGVzdHMucG9ydC53ZWJraXRfdW5pdHRlc3QgaW1wb3J0IFRlc3RXZWJLaXRQ
b3J0Citmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0LnBvcnRfdGVzdGNhc2UgaW1wb3J0
IFRlc3RXZWJLaXRQb3J0CiAKIAogY2xhc3MgRHJpdmVyT3V0cHV0VGVzdCh1bml0dGVzdC5UZXN0
Q2FzZSk6CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L2VmbC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZWZs
LnB5CmluZGV4IDA2ZGNkMTg3YTViMzJhMjIxN2I5NDM5ZDdiZjQ0N2FkZmIwZDllZWIuLjI1YTgx
ZDJkYWQxYjk3MDQ1OTQwYWU5ZTIxMDI0YzRlMWU5YTFiYzIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZWZsLnB5CisrKyBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZWZsLnB5CkBAIC0yNywyMCArMjcsMTYgQEAK
IAogIiIiV2ViS2l0IEVmbCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgUG9ydCBpbnRlcmZhY2UuIiIi
CiAKLWltcG9ydCBsb2dnaW5nCi1pbXBvcnQgc2lnbmFsCi1pbXBvcnQgc3VicHJvY2VzcwotCiBm
cm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5tb2RlbHMudGVzdF9jb25maWd1cmF0aW9uIGltcG9y
dCBUZXN0Q29uZmlndXJhdGlvbgotZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC53ZWJr
aXQgaW1wb3J0IFdlYktpdFBvcnQKK2Zyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQuYmFz
ZSBpbXBvcnQgUG9ydAogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC5wdWxzZWF1ZGlv
X3Nhbml0aXplciBpbXBvcnQgUHVsc2VBdWRpb1Nhbml0aXplcgogCiAKLWNsYXNzIEVmbFBvcnQo
V2ViS2l0UG9ydCwgUHVsc2VBdWRpb1Nhbml0aXplcik6CitjbGFzcyBFZmxQb3J0KFBvcnQsIFB1
bHNlQXVkaW9TYW5pdGl6ZXIpOgogICAgIHBvcnRfbmFtZSA9ICdlZmwnCiAKICAgICBkZWYgX19p
bml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKLSAgICAgICAgV2ViS2l0UG9ydC5fX2luaXRf
XyhzZWxmLCAqYXJncywgKiprd2FyZ3MpCisgICAgICAgIHN1cGVyKEVmbFBvcnQsIHNlbGYpLl9f
aW5pdF9fKCphcmdzLCAqKmt3YXJncykKIAogICAgICAgICBzZWxmLl9qaGJ1aWxkX3dyYXBwZXJf
cGF0aCA9IHNlbGYucGF0aF9mcm9tX3dlYmtpdF9iYXNlKCdUb29scycsICdlZmwnLCAncnVuLXdp
dGgtamhidWlsZCcpCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvZ3RrLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9ndGsucHkKaW5kZXggZjJhMjQ3YzgzMjYzNDU5ZDAyYmRhYjgwYzZiN2MyNTk2N2E5NmJj
OS4uZmVkMGI3YTQ0MGVlMDhjYzMxYmRhYTFiNWQ4NGU5YTVjYzI3NWYwOSAxMDA2NDQKLS0tIGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9ndGsucHkKKysrIGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9ndGsucHkKQEAgLTI2LDE5ICsy
NiwxNiBAQAogIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAotaW1wb3J0IGxvZ2dpbmcK
IGltcG9ydCBvcwotaW1wb3J0IHNpZ25hbAogaW1wb3J0IHN1YnByb2Nlc3MKIAogZnJvbSB3ZWJr
aXRweS5sYXlvdXRfdGVzdHMubW9kZWxzLnRlc3RfY29uZmlndXJhdGlvbiBpbXBvcnQgVGVzdENv
bmZpZ3VyYXRpb24KLWZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQuc2VydmVyX3Byb2Nl
c3MgaW1wb3J0IFNlcnZlclByb2Nlc3MKLWZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQu
d2Via2l0IGltcG9ydCBXZWJLaXRQb3J0Citmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0
LmJhc2UgaW1wb3J0IFBvcnQKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQucHVsc2Vh
dWRpb19zYW5pdGl6ZXIgaW1wb3J0IFB1bHNlQXVkaW9TYW5pdGl6ZXIKIGZyb20gd2Via2l0cHku
bGF5b3V0X3Rlc3RzLnBvcnQueHZmYmRyaXZlciBpbXBvcnQgWHZmYkRyaXZlcgotZnJvbSB3ZWJr
aXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgRXhlY3V0aXZlCiAKLWNsYXNzIEd0
a1BvcnQoV2ViS2l0UG9ydCwgUHVsc2VBdWRpb1Nhbml0aXplcik6CisKK2NsYXNzIEd0a1BvcnQo
UG9ydCwgUHVsc2VBdWRpb1Nhbml0aXplcik6CiAgICAgcG9ydF9uYW1lID0gImd0ayIKIAogICAg
IGRlZiBfcG9ydF9mbGFnX2Zvcl9zY3JpcHRzKHNlbGYpOgpAQCAtNTUsNyArNTIsNyBAQCBjbGFz
cyBHdGtQb3J0KFdlYktpdFBvcnQsIFB1bHNlQXVkaW9TYW5pdGl6ZXIpOgogICAgICAgICBzZWxm
Ll9yZXN0b3JlX3B1bHNlYXVkaW9fbW9kdWxlKCkKIAogICAgIGRlZiBzZXR1cF9lbnZpcm9uX2Zv
cl9zZXJ2ZXIoc2VsZiwgc2VydmVyX25hbWU9Tm9uZSk6Ci0gICAgICAgIGVudmlyb25tZW50ID0g
V2ViS2l0UG9ydC5zZXR1cF9lbnZpcm9uX2Zvcl9zZXJ2ZXIoc2VsZiwgc2VydmVyX25hbWUpCisg
ICAgICAgIGVudmlyb25tZW50ID0gc3VwZXIoR3RrUG9ydCwgc2VsZikuc2V0dXBfZW52aXJvbl9m
b3Jfc2VydmVyKHNlcnZlcl9uYW1lKQogICAgICAgICBlbnZpcm9ubWVudFsnR1RLX01PRFVMRVMn
XSA9ICdnYWlsJwogICAgICAgICBlbnZpcm9ubWVudFsnR1NFVFRJTkdTX0JBQ0tFTkQnXSA9ICdt
ZW1vcnknCiAgICAgICAgIGVudmlyb25tZW50WydMSUJPVkVSTEFZX1NDUk9MTEJBUiddID0gJzAn
CkBAIC0xMTQsNyArMTExLDcgQEAgY2xhc3MgR3RrUG9ydChXZWJLaXRQb3J0LCBQdWxzZUF1ZGlv
U2FuaXRpemVyKToKICAgICAgICAgcmV0dXJuIE5vbmUKIAogICAgICMgRklYTUU6IFdlIHNob3Vs
ZCBmaW5kIGEgd2F5IHRvIHNoYXJlIHRoaXMgaW1wbG1lbnRhdGlvbiB3aXRoIEd0aywKLSAgICAj
IG9yIHRlYWNoIHJ1bi1sYXVuY2hlciBob3cgdG8gY2FsbCBydW4tc2FmYXJpIGFuZCBtb3ZlIHRo
aXMgZG93biB0byBXZWJLaXRQb3J0LgorICAgICMgb3IgdGVhY2ggcnVuLWxhdW5jaGVyIGhvdyB0
byBjYWxsIHJ1bi1zYWZhcmkgYW5kIG1vdmUgdGhpcyBkb3duIHRvIFBvcnQuCiAgICAgZGVmIHNo
b3dfcmVzdWx0c19odG1sX2ZpbGUoc2VsZiwgcmVzdWx0c19maWxlbmFtZSk6CiAgICAgICAgIHJ1
bl9sYXVuY2hlcl9hcmdzID0gWyJmaWxlOi8vJXMiICUgcmVzdWx0c19maWxlbmFtZV0KICAgICAg
ICAgaWYgc2VsZi5nZXRfb3B0aW9uKCd3ZWJraXRfdGVzdF9ydW5uZXInKToKZGlmZiAtLWdpdCBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvcG9ydF90ZXN0Y2FzZS5w
eSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvcG9ydF90ZXN0Y2Fz
ZS5weQppbmRleCA3ZGUyNTQwMmQwOTA3MWM5NGFiZTE1ZTA1MzI5MmY2OWQ2YzYzMWNkLi40NGE3
ZmI2MzQ1YTUwODYwM2UyZmY2MjFlMGNmYTY0Zjg5NTU0Mzc0IDEwMDc1NQotLS0gYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3BvcnRfdGVzdGNhc2UucHkKKysrIGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9wb3J0X3Rlc3RjYXNlLnB5
CkBAIC0yOSwyMiArMjksNDggQEAKICIiIlVuaXQgdGVzdGluZyBiYXNlIGNsYXNzIGZvciBQb3J0
IGltcGxlbWVudGF0aW9ucy4iIiIKIAogaW1wb3J0IGVycm5vCitpbXBvcnQgbG9nZ2luZwogaW1w
b3J0IHNvY2tldAogaW1wb3J0IHN5cwogaW1wb3J0IHRpbWUKIGltcG9ydCB1bml0dGVzdAogCi1m
cm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZmlsZXN5c3RlbV9tb2NrIGltcG9ydCBNb2NrRmls
ZVN5c3RlbQogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZV9tb2NrIGltcG9y
dCBNb2NrRXhlY3V0aXZlCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZmlsZXN5c3RlbV9t
b2NrIGltcG9ydCBNb2NrRmlsZVN5c3RlbQorZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLm91
dHB1dGNhcHR1cmUgaW1wb3J0IE91dHB1dENhcHR1cmUKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5
c3RlbS5zeXN0ZW1ob3N0X21vY2sgaW1wb3J0IE1vY2tTeXN0ZW1Ib3N0Ci1mcm9tIHdlYmtpdHB5
LmxheW91dF90ZXN0cy5zZXJ2ZXJzIGltcG9ydCBodHRwX3NlcnZlcl9iYXNlCi1mcm9tIHdlYmtp
dHB5LmxheW91dF90ZXN0cy5zZXJ2ZXJzIGltcG9ydCBodHRwX3NlcnZlcl9iYXNlCi1mcm9tIHdl
YmtpdHB5LmxheW91dF90ZXN0cy5wb3J0IGltcG9ydCBmYWN0b3J5Citmcm9tIHdlYmtpdHB5Lmxh
eW91dF90ZXN0cy5wb3J0LmJhc2UgaW1wb3J0IFBvcnQKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rl
c3RzLnBvcnQuY29uZmlnX21vY2sgaW1wb3J0IE1vY2tDb25maWcKIGZyb20gd2Via2l0cHkubGF5
b3V0X3Rlc3RzLnBvcnQuc2VydmVyX3Byb2Nlc3NfbW9jayBpbXBvcnQgTW9ja1NlcnZlclByb2Nl
c3MKK2Zyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnNlcnZlcnMgaW1wb3J0IGh0dHBfc2VydmVy
X2Jhc2UKIGZyb20gd2Via2l0cHkudG9vbC5tb2NrdG9vbCBpbXBvcnQgTW9ja09wdGlvbnMKIAog
CisjIEZJWE1FOiBnZXQgcmlkIG9mIHRoaXMgZml4dHVyZQorY2xhc3MgVGVzdFdlYktpdFBvcnQo
UG9ydCk6CisgICAgcG9ydF9uYW1lID0gInRlc3R3ZWJraXRwb3J0IgorCisgICAgZGVmIF9faW5p
dF9fKHNlbGYsIHN5bWJvbHNfc3RyaW5nPU5vbmUsCisgICAgICAgICAgICAgICAgIGV4cGVjdGF0
aW9uc19maWxlPU5vbmUsIHNraXBzX2ZpbGU9Tm9uZSwgaG9zdD1Ob25lLCBjb25maWc9Tm9uZSwK
KyAgICAgICAgICAgICAgICAgKiprd2FyZ3MpOgorICAgICAgICBzZWxmLnN5bWJvbHNfc3RyaW5n
ID0gc3ltYm9sc19zdHJpbmcgICMgUGFzc2luZyAiIiBkaXNhYmxlcyBhbGwgc3RhdGljbHktZGV0
ZWN0YWJsZSBmZWF0dXJlcy4KKyAgICAgICAgaG9zdCA9IGhvc3Qgb3IgTW9ja1N5c3RlbUhvc3Qo
KQorICAgICAgICBjb25maWcgPSBjb25maWcgb3IgTW9ja0NvbmZpZygpCisgICAgICAgIHN1cGVy
KFRlc3RXZWJLaXRQb3J0LCBzZWxmKS5fX2luaXRfXyhob3N0PWhvc3QsIGNvbmZpZz1jb25maWcs
ICoqa3dhcmdzKQorCisgICAgZGVmIGFsbF90ZXN0X2NvbmZpZ3VyYXRpb25zKHNlbGYpOgorICAg
ICAgICByZXR1cm4gW3NlbGYudGVzdF9jb25maWd1cmF0aW9uKCldCisKKyAgICBkZWYgX3N5bWJv
bHNfc3RyaW5nKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5zeW1ib2xzX3N0cmluZworCisg
ICAgZGVmIF90ZXN0c19mb3Jfb3RoZXJfcGxhdGZvcm1zKHNlbGYpOgorICAgICAgICByZXR1cm4g
WyJtZWRpYSIsIF0KKworICAgIGRlZiBfdGVzdHNfZm9yX2Rpc2FibGVkX2ZlYXR1cmVzKHNlbGYp
OgorICAgICAgICByZXR1cm4gWyJhY2Nlc3NpYmlsaXR5IiwgXQorCisKIGNsYXNzIFBvcnRUZXN0
Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgIiIiVGVzdHMgdGhhdCBhbGwgUG9ydCBpbXBs
ZW1lbnRhdGlvbnMgbXVzdCBwYXNzLiIiIgogICAgIEhUVFBfUE9SVFMgPSAoODAwMCwgODA4MCwg
ODQ0MykKQEAgLTUzLDcgKzc5LDcgQEAgY2xhc3MgUG9ydFRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RD
YXNlKToKICAgICAjIFN1YmNsYXNzZXMgb3ZlcnJpZGUgdGhpcyB0byBwb2ludCB0byB0aGVpciBQ
b3J0IHN1YmNsYXNzLgogICAgIG9zX25hbWUgPSBOb25lCiAgICAgb3NfdmVyc2lvbiA9IE5vbmUK
LSAgICBwb3J0X21ha2VyID0gTm9uZQorICAgIHBvcnRfbWFrZXIgPSBUZXN0V2ViS2l0UG9ydAog
CiAgICAgZGVmIG1ha2VfcG9ydChzZWxmLCBob3N0PU5vbmUsIHBvcnRfbmFtZT1Ob25lLCBvcHRp
b25zPU5vbmUsIG9zX25hbWU9Tm9uZSwgb3NfdmVyc2lvbj1Ob25lLCBjb25maWc9Tm9uZSwgKipr
d2FyZ3MpOgogICAgICAgICBob3N0ID0gaG9zdCBvciBNb2NrU3lzdGVtSG9zdChvc19uYW1lPShv
c19uYW1lIG9yIHNlbGYub3NfbmFtZSksIG9zX3ZlcnNpb249KG9zX3ZlcnNpb24gb3Igc2VsZi5v
c192ZXJzaW9uKSkKQEAgLTIzOSwxMCArMjY1LDYgQEAgY2xhc3MgUG9ydFRlc3RDYXNlKHVuaXR0
ZXN0LlRlc3RDYXNlKToKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYucHJvYy5zdG9wcGVk
KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhwb3J0Ll9pbWFnZV9kaWZmZXIsIE5vbmUpCiAK
LSAgICBkZWYgdGVzdF9jaGVja19idWlsZChzZWxmKToKLSAgICAgICAgcG9ydCA9IHNlbGYubWFr
ZV9wb3J0KCkKLSAgICAgICAgcG9ydC5jaGVja19idWlsZChuZWVkc19odHRwPVRydWUpCi0KICAg
ICBkZWYgdGVzdF9jaGVja193ZGlmZihzZWxmKToKICAgICAgICAgcG9ydCA9IHNlbGYubWFrZV9w
b3J0KCkKICAgICAgICAgcG9ydC5jaGVja193ZGlmZigpCkBAIC0zODEsNiArNDAzLDE2MiBAQCBj
bGFzcyBQb3J0VGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFscyhvcmRlcmVkX2RpY3Qua2V5cygpWy0yOl0sIG9wdGlvbnMuYWRkaXRpb25hbF9leHBl
Y3RhdGlvbnMpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG9yZGVyZWRfZGljdC52YWx1ZXMo
KVstMjpdLCBbJ2ZvbycsICdiYXInXSkKIAorICAgIGRlZiB0ZXN0X3BhdGhfdG9fdGVzdF9leHBl
Y3RhdGlvbnNfZmlsZShzZWxmKToKKyAgICAgICAgcG9ydCA9IFRlc3RXZWJLaXRQb3J0KCkKKyAg
ICAgICAgcG9ydC5fb3B0aW9ucyA9IE1vY2tPcHRpb25zKHdlYmtpdF90ZXN0X3J1bm5lcj1GYWxz
ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0LnBhdGhfdG9fdGVzdF9leHBlY3RhdGlv
bnNfZmlsZSgpLCAnL21vY2stY2hlY2tvdXQvTGF5b3V0VGVzdHMvcGxhdGZvcm0vdGVzdHdlYmtp
dHBvcnQvVGVzdEV4cGVjdGF0aW9ucycpCisKKyAgICAgICAgcG9ydCA9IFRlc3RXZWJLaXRQb3J0
KCkKKyAgICAgICAgcG9ydC5fb3B0aW9ucyA9IE1vY2tPcHRpb25zKHdlYmtpdF90ZXN0X3J1bm5l
cj1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQucGF0aF90b190ZXN0X2V4cGVj
dGF0aW9uc19maWxlKCksICcvbW9jay1jaGVja291dC9MYXlvdXRUZXN0cy9wbGF0Zm9ybS90ZXN0
d2Via2l0cG9ydC9UZXN0RXhwZWN0YXRpb25zJykKKworICAgICAgICBwb3J0ID0gVGVzdFdlYktp
dFBvcnQoKQorICAgICAgICBwb3J0Lmhvc3QuZmlsZXN5c3RlbS5maWxlc1snL21vY2stY2hlY2tv
dXQvTGF5b3V0VGVzdHMvcGxhdGZvcm0vdGVzdHdlYmtpdHBvcnQvVGVzdEV4cGVjdGF0aW9ucydd
ID0gJ3NvbWUgY29udGVudCcKKyAgICAgICAgcG9ydC5fb3B0aW9ucyA9IE1vY2tPcHRpb25zKHdl
YmtpdF90ZXN0X3J1bm5lcj1GYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0LnBh
dGhfdG9fdGVzdF9leHBlY3RhdGlvbnNfZmlsZSgpLCAnL21vY2stY2hlY2tvdXQvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vdGVzdHdlYmtpdHBvcnQvVGVzdEV4cGVjdGF0aW9ucycpCisKKyAgICBkZWYg
dGVzdF9za2lwcGVkX2RpcmVjdG9yaWVzX2Zvcl9zeW1ib2xzKHNlbGYpOgorICAgICAgICAjIFRo
aXMgZmlyc3QgdGVzdCBjb25maXJtcyB0aGF0IHRoZSBjb21tb25seSBmb3VuZCBzeW1ib2xzIHJl
c3VsdCBpbiB0aGUgZXhwZWN0ZWQgc2tpcHBlZCBkaXJlY3Rvcmllcy4KKyAgICAgICAgc3ltYm9s
c19zdHJpbmcgPSAiICIuam9pbihbIkdyYXBoaWNzTGF5ZXIiLCAiV2ViQ29yZUhhczNEUmVuZGVy
aW5nIiwgImlzWEhUTUxNUERvY3VtZW50IiwgImZvb1N5bWJvbCJdKQorICAgICAgICBleHBlY3Rl
ZF9kaXJlY3RvcmllcyA9IHNldChbCisgICAgICAgICAgICAibWF0aG1sIiwgICMgUmVxdWlyZXMg
TWF0aE1MRWxlbWVudAorICAgICAgICAgICAgImZhc3QvY2FudmFzL3dlYmdsIiwgICMgUmVxdWly
ZXMgV2ViR0xTaGFkZXIKKyAgICAgICAgICAgICJjb21wb3NpdGluZy93ZWJnbCIsICAjIFJlcXVp
cmVzIFdlYkdMU2hhZGVyCisgICAgICAgICAgICAiaHR0cC90ZXN0cy9jYW52YXMvd2ViZ2wiLCAg
IyBSZXF1aXJlcyBXZWJHTFNoYWRlcgorICAgICAgICAgICAgIm1odG1sIiwgICMgUmVxdWlyZXMg
TUhUTUxBcmNoaXZlCisgICAgICAgICAgICAiZmFzdC9jc3MvdmFyaWFibGVzIiwgICMgUmVxdWly
ZXMgQ1NTIFZhcmlhYmxlcworICAgICAgICAgICAgImluc3BlY3Rvci9zdHlsZXMvdmFyaWFibGVz
IiwgICMgUmVxdWlyZXMgQ1NTIFZhcmlhYmxlcworICAgICAgICBdKQorCisgICAgICAgIHJlc3Vs
dF9kaXJlY3RvcmllcyA9IHNldChUZXN0V2ViS2l0UG9ydChzeW1ib2xzX3N0cmluZywgTm9uZSku
X3NraXBwZWRfdGVzdHNfZm9yX3Vuc3VwcG9ydGVkX2ZlYXR1cmVzKHRlc3RfbGlzdD1bJ21hdGht
bC9mb28uaHRtbCddKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHRfZGlyZWN0b3Jp
ZXMsIGV4cGVjdGVkX2RpcmVjdG9yaWVzKQorCisgICAgICAgICMgVGVzdCB0aGF0IHRoZSBubSBz
dHJpbmcgcGFyc2luZyBhY3R1YWxseSB3b3JrczoKKyAgICAgICAgc3ltYm9sc19zdHJpbmcgPSAi
IiIKKzAwMDAwMDAwMDEyNGY0OTggcyBfX1paTjdXZWJDb3JlMTNHcmFwaGljc0xheWVyMTJyZXBs
YWNlQ2hpbGRFUFMwX1MxX0UxOV9fUFJFVFRZX0ZVTkNUSU9OX18KKzAwMDAwMDAwMDEyNGY1MDAg
cyBfX1paTjdXZWJDb3JlMTNHcmFwaGljc0xheWVyMTNhZGRDaGlsZEFib3ZlRVBTMF9TMV9FMTlf
X1BSRVRUWV9GVU5DVElPTl9fCiswMDAwMDAwMDAxMjRmNjcwIHMgX19aWk43V2ViQ29yZTEzR3Jh
cGhpY3NMYXllcjEzYWRkQ2hpbGRCZWxvd0VQUzBfUzFfRTE5X19QUkVUVFlfRlVOQ1RJT05fXwor
IiIiCisgICAgICAgICMgTm90ZSAnY29tcG9zaXRpbmcnIGlzIG5vdCBpbiB0aGUgbGlzdCBvZiBz
a2lwcGVkIGRpcmVjdG9yaWVzIChoZW5jZSB0aGUgcGFyc2luZyBvZiBHcmFwaGljc0xheWVyIHdv
cmtlZCk6CisgICAgICAgIGV4cGVjdGVkX2RpcmVjdG9yaWVzID0gc2V0KFsnbWF0aG1sJywgJ3Ry
YW5zZm9ybXMvM2QnLCAnY29tcG9zaXRpbmcvd2ViZ2wnLCAnZmFzdC9jYW52YXMvd2ViZ2wnLCAn
YW5pbWF0aW9ucy8zZCcsICdtaHRtbCcsICdodHRwL3Rlc3RzL2NhbnZhcy93ZWJnbCcsICdmYXN0
L2Nzcy92YXJpYWJsZXMnLCAnaW5zcGVjdG9yL3N0eWxlcy92YXJpYWJsZXMnXSkKKyAgICAgICAg
cmVzdWx0X2RpcmVjdG9yaWVzID0gc2V0KFRlc3RXZWJLaXRQb3J0KHN5bWJvbHNfc3RyaW5nLCBO
b25lKS5fc2tpcHBlZF90ZXN0c19mb3JfdW5zdXBwb3J0ZWRfZmVhdHVyZXModGVzdF9saXN0PVsn
bWF0aG1sL2Zvby5odG1sJ10pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdF9kaXJl
Y3RvcmllcywgZXhwZWN0ZWRfZGlyZWN0b3JpZXMpCisKKyAgICBkZWYgdGVzdF9za2lwcGVkX2Rp
cmVjdG9yaWVzX2Zvcl9mZWF0dXJlcyhzZWxmKToKKyAgICAgICAgc3VwcG9ydGVkX2ZlYXR1cmVz
ID0gWyJBY2NlbGVyYXRlZCBDb21wb3NpdGluZyIsICJGb28gRmVhdHVyZSJdCisgICAgICAgIGV4
cGVjdGVkX2RpcmVjdG9yaWVzID0gc2V0KFsiYW5pbWF0aW9ucy8zZCIsICJ0cmFuc2Zvcm1zLzNk
Il0pCisgICAgICAgIHBvcnQgPSBUZXN0V2ViS2l0UG9ydChOb25lLCBzdXBwb3J0ZWRfZmVhdHVy
ZXMpCisgICAgICAgIHBvcnQuX3J1bnRpbWVfZmVhdHVyZV9saXN0ID0gbGFtYmRhOiBzdXBwb3J0
ZWRfZmVhdHVyZXMKKyAgICAgICAgcmVzdWx0X2RpcmVjdG9yaWVzID0gc2V0KHBvcnQuX3NraXBw
ZWRfdGVzdHNfZm9yX3Vuc3VwcG9ydGVkX2ZlYXR1cmVzKHRlc3RfbGlzdD1bImFuaW1hdGlvbnMv
M2QvZm9vLmh0bWwiXSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0X2RpcmVjdG9y
aWVzLCBleHBlY3RlZF9kaXJlY3RvcmllcykKKworICAgIGRlZiB0ZXN0X3NraXBwZWRfZGlyZWN0
b3JpZXNfZm9yX2ZlYXR1cmVzX25vX21hdGNoaW5nX3Rlc3RzX2luX3Rlc3RfbGlzdChzZWxmKToK
KyAgICAgICAgc3VwcG9ydGVkX2ZlYXR1cmVzID0gWyJBY2NlbGVyYXRlZCBDb21wb3NpdGluZyIs
ICJGb28gRmVhdHVyZSJdCisgICAgICAgIGV4cGVjdGVkX2RpcmVjdG9yaWVzID0gc2V0KFtdKQor
ICAgICAgICByZXN1bHRfZGlyZWN0b3JpZXMgPSBzZXQoVGVzdFdlYktpdFBvcnQoTm9uZSwgc3Vw
cG9ydGVkX2ZlYXR1cmVzKS5fc2tpcHBlZF90ZXN0c19mb3JfdW5zdXBwb3J0ZWRfZmVhdHVyZXMo
dGVzdF9saXN0PVsnZm9vLmh0bWwnXSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0
X2RpcmVjdG9yaWVzLCBleHBlY3RlZF9kaXJlY3RvcmllcykKKworICAgIGRlZiB0ZXN0X3NraXBw
ZWRfdGVzdHNfZm9yX3Vuc3VwcG9ydGVkX2ZlYXR1cmVzX2VtcHR5X3Rlc3RfbGlzdChzZWxmKToK
KyAgICAgICAgc3VwcG9ydGVkX2ZlYXR1cmVzID0gWyJBY2NlbGVyYXRlZCBDb21wb3NpdGluZyIs
ICJGb28gRmVhdHVyZSJdCisgICAgICAgIGV4cGVjdGVkX2RpcmVjdG9yaWVzID0gc2V0KFtdKQor
ICAgICAgICByZXN1bHRfZGlyZWN0b3JpZXMgPSBzZXQoVGVzdFdlYktpdFBvcnQoTm9uZSwgc3Vw
cG9ydGVkX2ZlYXR1cmVzKS5fc2tpcHBlZF90ZXN0c19mb3JfdW5zdXBwb3J0ZWRfZmVhdHVyZXMo
dGVzdF9saXN0PU5vbmUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdF9kaXJlY3Rv
cmllcywgZXhwZWN0ZWRfZGlyZWN0b3JpZXMpCisKKyAgICBkZWYgdGVzdF9za2lwcGVkX2xheW91
dF90ZXN0cyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUZXN0V2ViS2l0UG9ydChO
b25lLCBOb25lKS5za2lwcGVkX2xheW91dF90ZXN0cyh0ZXN0X2xpc3Q9W10pLCBzZXQoWydtZWRp
YSddKSkKKworICAgIGRlZiB0ZXN0X3NraXBwZWRfZmlsZV9zZWFyY2hfcGF0aHMoc2VsZik6Cisg
ICAgICAgIHBvcnQgPSBUZXN0V2ViS2l0UG9ydCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
cG9ydC5fc2tpcHBlZF9maWxlX3NlYXJjaF9wYXRocygpLCBzZXQoWyd0ZXN0d2Via2l0cG9ydCdd
KSkKKyAgICAgICAgcG9ydC5fbmFtZSA9ICJ0ZXN0d2Via2l0cG9ydC12ZXJzaW9uIgorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHBvcnQuX3NraXBwZWRfZmlsZV9zZWFyY2hfcGF0aHMoKSwgc2V0
KFsndGVzdHdlYmtpdHBvcnQnLCAndGVzdHdlYmtpdHBvcnQtdmVyc2lvbiddKSkKKyAgICAgICAg
cG9ydC5fb3B0aW9ucyA9IE1vY2tPcHRpb25zKHdlYmtpdF90ZXN0X3J1bm5lcj1UcnVlKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQuX3NraXBwZWRfZmlsZV9zZWFyY2hfcGF0aHMoKSwg
c2V0KFsndGVzdHdlYmtpdHBvcnQnLCAndGVzdHdlYmtpdHBvcnQtdmVyc2lvbicsICd0ZXN0d2Vi
a2l0cG9ydC13azInLCAnd2syJ10pKQorICAgICAgICBwb3J0Ll9vcHRpb25zID0gTW9ja09wdGlv
bnMoYWRkaXRpb25hbF9wbGF0Zm9ybV9kaXJlY3Rvcnk9WyJpbnRlcm5hbC10ZXN0d2Via2l0cG9y
dCJdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQuX3NraXBwZWRfZmlsZV9zZWFyY2hf
cGF0aHMoKSwgc2V0KFsndGVzdHdlYmtpdHBvcnQnLCAndGVzdHdlYmtpdHBvcnQtdmVyc2lvbics
ICdpbnRlcm5hbC10ZXN0d2Via2l0cG9ydCddKSkKKworICAgIGRlZiB0ZXN0X3Jvb3Rfb3B0aW9u
KHNlbGYpOgorICAgICAgICBwb3J0ID0gVGVzdFdlYktpdFBvcnQoKQorICAgICAgICBwb3J0Ll9v
cHRpb25zID0gTW9ja09wdGlvbnMocm9vdD0nL2ZvbycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwocG9ydC5fcGF0aF90b19kcml2ZXIoKSwgIi9mb28vRHVtcFJlbmRlclRyZWUiKQorCisgICAg
ZGVmIHRlc3RfdGVzdF9leHBlY3RhdGlvbnMoc2VsZik6CisgICAgICAgICMgQ2hlY2sgdGhhdCB3
ZSByZWFkIHRoZSBleHBlY3RhdGlvbnMgZmlsZQorICAgICAgICBob3N0ID0gTW9ja1N5c3RlbUhv
c3QoKQorICAgICAgICBob3N0LmZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9maWxlKCcvbW9jay1jaGVj
a291dC9MYXlvdXRUZXN0cy9wbGF0Zm9ybS90ZXN0d2Via2l0cG9ydC9UZXN0RXhwZWN0YXRpb25z
JywKKyAgICAgICAgICAgICdCVUdfVEVTVEVYUEVDVEFUSU9OUyBTS0lQIDogZmFzdC9odG1sL2Fy
dGljbGUtZWxlbWVudC5odG1sID0gVEVYVFxuJykKKyAgICAgICAgcG9ydCA9IFRlc3RXZWJLaXRQ
b3J0KGhvc3Q9aG9zdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJy5qb2luKHBvcnQuZXhw
ZWN0YXRpb25zX2RpY3QoKS52YWx1ZXMoKSksICdCVUdfVEVTVEVYUEVDVEFUSU9OUyBTS0lQIDog
ZmFzdC9odG1sL2FydGljbGUtZWxlbWVudC5odG1sID0gVEVYVFxuJykKKworICAgIGRlZiB0ZXN0
X2J1aWxkX2RyaXZlcihzZWxmKToKKyAgICAgICAgb3V0cHV0ID0gT3V0cHV0Q2FwdHVyZSgpCisg
ICAgICAgIHBvcnQgPSBUZXN0V2ViS2l0UG9ydCgpCisgICAgICAgICMgRGVsYXkgc2V0dGluZyBf
ZXhlY3V0aXZlIHRvIGF2b2lkIGxvZ2dpbmcgZHVyaW5nIGNvbnN0cnVjdGlvbgorICAgICAgICBw
b3J0Ll9leGVjdXRpdmUgPSBNb2NrRXhlY3V0aXZlKHNob3VsZF9sb2c9VHJ1ZSkKKyAgICAgICAg
cG9ydC5fb3B0aW9ucyA9IE1vY2tPcHRpb25zKGNvbmZpZ3VyYXRpb249IlJlbGVhc2UiKSAgIyBU
aGlzIHNob3VsZCBub3QgYmUgbmVjZXNzYXJ5LCBidXQgSSB0aGluayBUZXN0V2ViS2l0UG9ydCBp
cyBhY3R1YWxseSByZWFkaW5nIGZyb20gZGlzayAoYW5kIHRodXMgZGV0ZWN0cyB0aGUgY3VycmVu
dCBjb25maWd1cmF0aW9uKS4KKyAgICAgICAgZXhwZWN0ZWRfc3RkZXJyID0gIk1PQ0sgcnVuX2Nv
bW1hbmQ6IFsnVG9vbHMvU2NyaXB0cy9idWlsZC1kdW1wcmVuZGVydHJlZScsICctLXJlbGVhc2Un
XSwgY3dkPS9tb2NrLWNoZWNrb3V0LCBlbnY9eydMQ19BTEwnOiAnQycsICdNT0NLX0VOVklST05f
Q09QWSc6ICcxJ31cbiIKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG91dHB1dC5hc3NlcnRfb3V0
cHV0cyhzZWxmLCBwb3J0Ll9idWlsZF9kcml2ZXIsIGV4cGVjdGVkX3N0ZGVycj1leHBlY3RlZF9z
dGRlcnIsIGV4cGVjdGVkX2xvZ3M9JycpKQorCisgICAgICAgICMgTWFrZSBzdXJlIHdoZW4gcGFz
c2VkIC0td2Via2l0LXRlc3QtcnVubmVyIHdlIGJ1aWxkIHRoZSByaWdodCB0b29sLgorICAgICAg
ICBwb3J0Ll9vcHRpb25zID0gTW9ja09wdGlvbnMod2Via2l0X3Rlc3RfcnVubmVyPVRydWUsIGNv
bmZpZ3VyYXRpb249IlJlbGVhc2UiKQorICAgICAgICBleHBlY3RlZF9zdGRlcnIgPSAiTU9DSyBy
dW5fY29tbWFuZDogWydUb29scy9TY3JpcHRzL2J1aWxkLWR1bXByZW5kZXJ0cmVlJywgJy0tcmVs
ZWFzZSddLCBjd2Q9L21vY2stY2hlY2tvdXQsIGVudj17J0xDX0FMTCc6ICdDJywgJ01PQ0tfRU5W
SVJPTl9DT1BZJzogJzEnfVxuTU9DSyBydW5fY29tbWFuZDogWydUb29scy9TY3JpcHRzL2J1aWxk
LXdlYmtpdHRlc3RydW5uZXInLCAnLS1yZWxlYXNlJ10sIGN3ZD0vbW9jay1jaGVja291dCwgZW52
PXsnTENfQUxMJzogJ0MnLCAnTU9DS19FTlZJUk9OX0NPUFknOiAnMSd9XG4iCisgICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZShvdXRwdXQuYXNzZXJ0X291dHB1dHMoc2VsZiwgcG9ydC5fYnVpbGRfZHJp
dmVyLCBleHBlY3RlZF9zdGRlcnI9ZXhwZWN0ZWRfc3RkZXJyLCBleHBlY3RlZF9sb2dzPScnKSkK
KworICAgICAgICAjIE1ha2Ugc3VyZSB3ZSBzaG93IHRoZSBidWlsZCBsb2cgd2hlbiAtLXZlcmJv
c2UgaXMgcGFzc2VkLCB3aGljaCB3ZSBzaW11bGF0ZSBieSBzZXR0aW5nIHRoZSBsb2dnaW5nIGxl
dmVsIHRvIERFQlVHLgorICAgICAgICBvdXRwdXQuc2V0X2xvZ19sZXZlbChsb2dnaW5nLkRFQlVH
KQorICAgICAgICBwb3J0Ll9vcHRpb25zID0gTW9ja09wdGlvbnMoY29uZmlndXJhdGlvbj0iUmVs
ZWFzZSIpCisgICAgICAgIGV4cGVjdGVkX3N0ZGVyciA9ICJNT0NLIHJ1bl9jb21tYW5kOiBbJ1Rv
b2xzL1NjcmlwdHMvYnVpbGQtZHVtcHJlbmRlcnRyZWUnLCAnLS1yZWxlYXNlJ10sIGN3ZD0vbW9j
ay1jaGVja291dCwgZW52PXsnTENfQUxMJzogJ0MnLCAnTU9DS19FTlZJUk9OX0NPUFknOiAnMSd9
XG4iCisgICAgICAgIGV4cGVjdGVkX2xvZ3MgPSAiT3V0cHV0IG9mIFsnVG9vbHMvU2NyaXB0cy9i
dWlsZC1kdW1wcmVuZGVydHJlZScsICctLXJlbGVhc2UnXTpcbk1PQ0sgb3V0cHV0IG9mIGNoaWxk
IHByb2Nlc3NcbiIKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG91dHB1dC5hc3NlcnRfb3V0cHV0
cyhzZWxmLCBwb3J0Ll9idWlsZF9kcml2ZXIsIGV4cGVjdGVkX3N0ZGVycj1leHBlY3RlZF9zdGRl
cnIsIGV4cGVjdGVkX2xvZ3M9ZXhwZWN0ZWRfbG9ncykpCisgICAgICAgIG91dHB1dC5zZXRfbG9n
X2xldmVsKGxvZ2dpbmcuSU5GTykKKworICAgICAgICAjIE1ha2Ugc3VyZSB0aGF0IGZhaWx1cmUg
dG8gYnVpbGQgcmV0dXJucyBGYWxzZS4KKyAgICAgICAgcG9ydC5fZXhlY3V0aXZlID0gTW9ja0V4
ZWN1dGl2ZShzaG91bGRfbG9nPVRydWUsIHNob3VsZF90aHJvdz1UcnVlKQorICAgICAgICAjIEJl
Y2F1c2UgV0syIGN1cnJlbnRseSBoYXMgdG8gYnVpbGQgYm90aCB3ZWJraXR0ZXN0cnVubmVyIGFu
ZCBEUlQsIGlmIERSVCBmYWlscywgdGhhdCdzIHRoZSBvbmx5IG9uZSBpdCB0cmllcy4KKyAgICAg
ICAgZXhwZWN0ZWRfc3RkZXJyID0gIk1PQ0sgcnVuX2NvbW1hbmQ6IFsnVG9vbHMvU2NyaXB0cy9i
dWlsZC1kdW1wcmVuZGVydHJlZScsICctLXJlbGVhc2UnXSwgY3dkPS9tb2NrLWNoZWNrb3V0LCBl
bnY9eydMQ19BTEwnOiAnQycsICdNT0NLX0VOVklST05fQ09QWSc6ICcxJ31cbiIKKyAgICAgICAg
ZXhwZWN0ZWRfbG9ncyA9ICJNT0NLIFNjcmlwdEVycm9yXG5cbk1PQ0sgb3V0cHV0IG9mIGNoaWxk
IHByb2Nlc3NcbiIKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvdXRwdXQuYXNzZXJ0X291dHB1
dHMoc2VsZiwgcG9ydC5fYnVpbGRfZHJpdmVyLCBleHBlY3RlZF9zdGRlcnI9ZXhwZWN0ZWRfc3Rk
ZXJyLCBleHBlY3RlZF9sb2dzPWV4cGVjdGVkX2xvZ3MpKQorCisgICAgZGVmIF9hc3NlcnRfY29u
ZmlnX2ZpbGVfZm9yX3BsYXRmb3JtKHNlbGYsIHBvcnQsIHBsYXRmb3JtLCBjb25maWdfZmlsZSk6
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHBvcnQuX2FwYWNoZV9jb25maWdfZmlsZV9uYW1l
X2Zvcl9wbGF0Zm9ybShwbGF0Zm9ybSksIGNvbmZpZ19maWxlKQorCisgICAgZGVmIHRlc3RfbGlu
dXhfZGlzdHJvX2RldGVjdGlvbihzZWxmKToKKyAgICAgICAgcG9ydCA9IFRlc3RXZWJLaXRQb3J0
KCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShwb3J0Ll9pc19yZWRoYXRfYmFzZWQoKSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRGYWxzZShwb3J0Ll9pc19kZWJpYW5fYmFzZWQoKSkKKworICAgICAg
ICBwb3J0Ll9maWxlc3lzdGVtID0gTW9ja0ZpbGVTeXN0ZW0oeycvZXRjL3JlZGhhdC1yZWxlYXNl
JzogJyd9KQorICAgICAgICBzZWxmLmFzc2VydFRydWUocG9ydC5faXNfcmVkaGF0X2Jhc2VkKCkp
CisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocG9ydC5faXNfZGViaWFuX2Jhc2VkKCkpCisKKyAg
ICAgICAgcG9ydC5fZmlsZXN5c3RlbSA9IE1vY2tGaWxlU3lzdGVtKHsnL2V0Yy9kZWJpYW5fdmVy
c2lvbic6ICcnfSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShwb3J0Ll9pc19yZWRoYXRfYmFz
ZWQoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBvcnQuX2lzX2RlYmlhbl9iYXNlZCgpKQor
CisgICAgZGVmIHRlc3RfYXBhY2hlX2NvbmZpZ19maWxlX25hbWVfZm9yX3BsYXRmb3JtKHNlbGYp
OgorICAgICAgICBwb3J0ID0gVGVzdFdlYktpdFBvcnQoKQorICAgICAgICBzZWxmLl9hc3NlcnRf
Y29uZmlnX2ZpbGVfZm9yX3BsYXRmb3JtKHBvcnQsICdjeWd3aW4nLCAnY3lnd2luLWh0dHBkLmNv
bmYnKQorCisgICAgICAgIHNlbGYuX2Fzc2VydF9jb25maWdfZmlsZV9mb3JfcGxhdGZvcm0ocG9y
dCwgJ2xpbnV4MicsICdhcGFjaGUyLWh0dHBkLmNvbmYnKQorICAgICAgICBzZWxmLl9hc3NlcnRf
Y29uZmlnX2ZpbGVfZm9yX3BsYXRmb3JtKHBvcnQsICdsaW51eDMnLCAnYXBhY2hlMi1odHRwZC5j
b25mJykKKworICAgICAgICBwb3J0Ll9pc19yZWRoYXRfYmFzZWQgPSBsYW1iZGE6IFRydWUKKyAg
ICAgICAgc2VsZi5fYXNzZXJ0X2NvbmZpZ19maWxlX2Zvcl9wbGF0Zm9ybShwb3J0LCAnbGludXgy
JywgJ2ZlZG9yYS1odHRwZC5jb25mJykKKworICAgICAgICBwb3J0ID0gVGVzdFdlYktpdFBvcnQo
KQorICAgICAgICBwb3J0Ll9pc19kZWJpYW5fYmFzZWQgPSBsYW1iZGE6IFRydWUKKyAgICAgICAg
c2VsZi5fYXNzZXJ0X2NvbmZpZ19maWxlX2Zvcl9wbGF0Zm9ybShwb3J0LCAnbGludXgyJywgJ2Fw
YWNoZTItZGViaWFuLWh0dHBkLmNvbmYnKQorCisgICAgICAgIHNlbGYuX2Fzc2VydF9jb25maWdf
ZmlsZV9mb3JfcGxhdGZvcm0ocG9ydCwgJ21hYycsICdhcGFjaGUyLWh0dHBkLmNvbmYnKQorICAg
ICAgICBzZWxmLl9hc3NlcnRfY29uZmlnX2ZpbGVfZm9yX3BsYXRmb3JtKHBvcnQsICd3aW4zMics
ICdhcGFjaGUyLWh0dHBkLmNvbmYnKSAgIyB3aW4zMiBpc24ndCBhIHN1cHBvcnRlZCBzeXMucGxh
dGZvcm0uICBBcHBsZVdpbi9XaW5DYWlyby9XaW5DRSBwb3J0cyBhbGwgdXNlIGN5Z3dpbi4KKyAg
ICAgICAgc2VsZi5fYXNzZXJ0X2NvbmZpZ19maWxlX2Zvcl9wbGF0Zm9ybShwb3J0LCAnYmFyZics
ICdhcGFjaGUyLWh0dHBkLmNvbmYnKQorCisgICAgZGVmIHRlc3RfcGF0aF90b19hcGFjaGVfY29u
ZmlnX2ZpbGUoc2VsZik6CisgICAgICAgIHBvcnQgPSBUZXN0V2ViS2l0UG9ydCgpCisgICAgICAg
ICMgTW9jayBvdXQgX2FwYWNoZV9jb25maWdfZmlsZV9uYW1lX2Zvcl9wbGF0Zm9ybSB0byBpZ25v
cmUgdGhlIHBhc3NlZCBzeXMucGxhdGZvcm0gdmFsdWUuCisgICAgICAgIHBvcnQuX2FwYWNoZV9j
b25maWdfZmlsZV9uYW1lX2Zvcl9wbGF0Zm9ybSA9IGxhbWJkYSBwbGF0Zm9ybTogJ2h0dHBkLmNv
bmYnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHBvcnQuX3BhdGhfdG9fYXBhY2hlX2NvbmZp
Z19maWxlKCksICcvbW9jay1jaGVja291dC9MYXlvdXRUZXN0cy9odHRwL2NvbmYvaHR0cGQuY29u
ZicpCisKIAogIyBGSVhNRTogVGhpcyBjbGFzcyBhbmQgbWFpbigpIHNob3VsZCBiZSBtZXJnZWQg
aW50byB0ZXN0LXdlYmtpdHB5LgogY2xhc3MgRW5oYW5jZWRUZXN0TG9hZGVyKHVuaXR0ZXN0LlRl
c3RMb2FkZXIpOgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9xdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
cXQucHkKaW5kZXggYjBkNjQ4NTNjNjU3YjE5YmViZGY5YzVhY2RjYTZlZTY3OTY3MjM1Yi4uMzky
YWIwMjhmZWE0MDdhNDM2NTU2ZWYyOTFmOTE3OTEzYjY2Nzg4MSAxMDA2NDQKLS0tIGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9xdC5weQorKysgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3F0LnB5CkBAIC0zNCwxNyArMzQsMTUgQEAg
aW1wb3J0IHJlCiBpbXBvcnQgc3lzCiBpbXBvcnQgb3MKIAotaW1wb3J0IHdlYmtpdAotCiBmcm9t
IHdlYmtpdHB5LmNvbW1vbi5tZW1vaXplZCBpbXBvcnQgbWVtb2l6ZWQKIGZyb20gd2Via2l0cHku
bGF5b3V0X3Rlc3RzLm1vZGVscy50ZXN0X2NvbmZpZ3VyYXRpb24gaW1wb3J0IFRlc3RDb25maWd1
cmF0aW9uCi1mcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0LndlYmtpdCBpbXBvcnQgV2Vi
S2l0UG9ydAorZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC5iYXNlIGltcG9ydCBQb3J0
CiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0Lnh2ZmJkcml2ZXIgaW1wb3J0IFh2ZmJE
cml2ZXIKIAogX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQogCiAKLWNsYXNzIFF0
UG9ydChXZWJLaXRQb3J0KToKK2NsYXNzIFF0UG9ydChQb3J0KToKICAgICBBTExfVkVSU0lPTlMg
PSBbJ2xpbnV4JywgJ3dpbicsICdtYWMnXQogICAgIHBvcnRfbmFtZSA9ICJxdCIKIApAQCAtNjIs
OSArNjAsOSBAQCBjbGFzcyBRdFBvcnQoV2ViS2l0UG9ydCk6CiAKICAgICAjIHN5c19wbGF0Zm9y
bSBleGlzdHMgb25seSBmb3IgdW5pdCB0ZXN0aW5nLgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBo
b3N0LCBwb3J0X25hbWUsICoqa3dhcmdzKToKLSAgICAgICAgV2ViS2l0UG9ydC5fX2luaXRfXyhz
ZWxmLCBob3N0LCBwb3J0X25hbWUsICoqa3dhcmdzKQorICAgICAgICBzdXBlcihRdFBvcnQsIHNl
bGYpLl9faW5pdF9fKGhvc3QsIHBvcnRfbmFtZSwgKiprd2FyZ3MpCiAKLSAgICAgICAgIyBGSVhN
RTogVGhpcyB3aWxsIGFsbG93IFdlYktpdFBvcnQuYmFzZWxpbmVfc2VhcmNoX3BhdGggYW5kIFdl
YktpdFBvcnQuX3NraXBwZWRfZmlsZV9zZWFyY2hfcGF0aHMKKyAgICAgICAgIyBGSVhNRTogVGhp
cyB3aWxsIGFsbG93IFBvcnQuYmFzZWxpbmVfc2VhcmNoX3BhdGggYW5kIFBvcnQuX3NraXBwZWRf
ZmlsZV9zZWFyY2hfcGF0aHMKICAgICAgICAgIyB0byBkbyB0aGUgcmlnaHQgdGhpbmcsIGJ1dCBk
b2Vzbid0IGluY2x1ZGUgc3VwcG9ydCBmb3IgcXQtNC44IG9yIHF0LWFybSAoc2VlbiBpbiBMYXlv
dXRUZXN0cy9wbGF0Zm9ybSkgeWV0LgogICAgICAgICBzZWxmLl9vcGVyYXRpbmdfc3lzdGVtID0g
cG9ydF9uYW1lLnJlcGxhY2UoJ3F0LScsICcnKQogCkBAIC0xNTYsNyArMTU0LDcgQEAgY2xhc3Mg
UXRQb3J0KFdlYktpdFBvcnQpOgogICAgICAgICByZXR1cm4gbGlzdChyZXZlcnNlZChbc2VsZi5f
ZmlsZXN5c3RlbS5qb2luKHNlbGYuX3dlYmtpdF9iYXNlbGluZV9wYXRoKHApLCAnVGVzdEV4cGVj
dGF0aW9ucycpIGZvciBwIGluIHNlbGYuX3NlYXJjaF9wYXRocygpXSkpCiAKICAgICBkZWYgc2V0
dXBfZW52aXJvbl9mb3Jfc2VydmVyKHNlbGYsIHNlcnZlcl9uYW1lPU5vbmUpOgotICAgICAgICBj
bGVhbl9lbnYgPSBXZWJLaXRQb3J0LnNldHVwX2Vudmlyb25fZm9yX3NlcnZlcihzZWxmLCBzZXJ2
ZXJfbmFtZSkKKyAgICAgICAgY2xlYW5fZW52ID0gc3VwZXIoUXRQb3J0LCBzZWxmKS5zZXR1cF9l
bnZpcm9uX2Zvcl9zZXJ2ZXIoc2VydmVyX25hbWUpCiAgICAgICAgIGNsZWFuX2VudlsnUVRXRUJL
SVRfUExVR0lOX1BBVEgnXSA9IHNlbGYuX2J1aWxkX3BhdGgoJ2xpYi9wbHVnaW5zJykKICAgICAg
ICAgc2VsZi5fY29weV92YWx1ZV9mcm9tX2Vudmlyb25faWZfc2V0KGNsZWFuX2VudiwgJ1FUX0RS
VF9XRUJWSUVXX01PREUnKQogICAgICAgICBzZWxmLl9jb3B5X3ZhbHVlX2Zyb21fZW52aXJvbl9p
Zl9zZXQoY2xlYW5fZW52LCAnRFlMRF9JTUFHRV9TVUZGSVgnKQpAQCAtMTY2LDcgKzE2NCw3IEBA
IGNsYXNzIFF0UG9ydChXZWJLaXRQb3J0KToKICAgICAgICAgcmV0dXJuIGNsZWFuX2VudgogCiAg
ICAgIyBGSVhNRTogV2Ugc2hvdWxkIGZpbmQgYSB3YXkgdG8gc2hhcmUgdGhpcyBpbXBsbWVudGF0
aW9uIHdpdGggR3RrLAotICAgICMgb3IgdGVhY2ggcnVuLWxhdW5jaGVyIGhvdyB0byBjYWxsIHJ1
bi1zYWZhcmkgYW5kIG1vdmUgdGhpcyBkb3duIHRvIFdlYktpdFBvcnQuCisgICAgIyBvciB0ZWFj
aCBydW4tbGF1bmNoZXIgaG93IHRvIGNhbGwgcnVuLXNhZmFyaSBhbmQgbW92ZSB0aGlzIGRvd24g
dG8gUG9ydC4KICAgICBkZWYgc2hvd19yZXN1bHRzX2h0bWxfZmlsZShzZWxmLCByZXN1bHRzX2Zp
bGVuYW1lKToKICAgICAgICAgcnVuX2xhdW5jaGVyX2FyZ3MgPSBbXQogICAgICAgICBpZiBzZWxm
LmdldF9vcHRpb24oJ3dlYmtpdF90ZXN0X3J1bm5lcicpOgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXQucHkgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weQpkZWxldGVkIGZpbGUgbW9kZSAx
MDA3NTUKaW5kZXggMjZlYTA1M2Q2ZDYzMDgwMDEzMzkzYmZjZTA3ODMyNmIwMTE5N2JiMC4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weQorKysgL2Rldi9udWxsCkBAIC0x
LDIyMSArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMgQ29weXJpZ2h0IChDKSAyMDEw
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jIENvcHlyaWdodCAoQykgMjAxMCBH
YWJvciBSYXBjc2FueWkgPHJnYWJvckBpbmYudS1zemVnZWQuaHU+LCBVbml2ZXJzaXR5IG9mIFN6
ZWdlZAotIyBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlz
dHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBHb29nbGUgbmFtZSBub3IgdGhlIG5hbWVz
IG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0j
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAot
IyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0KLSIiIldlYktpdCBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIFBv
cnQgaW50ZXJmYWNlLiIiIgotCi1pbXBvcnQgaXRlcnRvb2xzCi1pbXBvcnQgbG9nZ2luZwotaW1w
b3J0IG9wZXJhdG9yCi0KLWZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1w
b3J0IFNjcmlwdEVycm9yCi1mcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0IGltcG9ydCBQ
b3J0Ci0KLQotX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQotCi0KLWNsYXNzIFdl
YktpdFBvcnQoUG9ydCk6Ci0KLSAgICAjIEZJWE1FOiBFdmVudHVhbGx5IHdlIHNob3VsZCBzdGFu
ZGFyaXplIHBvcnQgbmFtaW5nLCBhbmQgbWFrZSB0aGlzIG1ldGhvZCBzbWFydCBlbm91Z2gKLSAg
ICAjIHRvIHVzZSBmb3IgYWxsIHBvcnQgY29uZmlndXJhdGlvbnMgKGluY2x1ZGluZyBhcmNoaXRl
Y3R1cmVzLCBncmFwaGljcyB0eXBlcywgZXRjKS4KLSAgICBkZWYgX3BvcnRfZmxhZ19mb3Jfc2Ny
aXB0cyhzZWxmKToKLSAgICAgICAgIyBUaGlzIGlzIG92ZXJycmlkZW4gYnkgcG9ydHMgd2hpY2gg
bmVlZCBhIGZsYWcgcGFzc2VkIHRvIHNjcmlwdHMgdG8gZGlzdGluZ3Vpc2ggdGhlIHVzZSBvZiB0
aGF0IHBvcnQuCi0gICAgICAgICMgRm9yIGV4YW1wbGUgLS1xdCBvbiBsaW51eCwgc2luY2UgYSB1
c2VyIG1pZ2h0IGhhdmUgYm90aCBHdGsgYW5kIFF0IGxpYnJhcmllcyBpbnN0YWxsZWQuCi0gICAg
ICAgICMgRklYTUU6IENocm9taXVtIHNob3VsZCBvdmVycmlkZSB0aGlzIG9uY2UgQ2hyb21pdW1Q
b3J0IGlzIGEgV2ViS2l0UG9ydC4KLSAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgICMgVGhpcyBp
cyBtb2RlbGVkIGFmdGVyIHdlYmtpdGRpcnMucG0gYXJndW1lbnRzRm9yQ29uZmlndXJhdGlvbigp
IGZyb20gb2xkLXJ1bi13ZWJraXQtdGVzdHMKLSAgICBkZWYgX2FyZ3VtZW50c19mb3JfY29uZmln
dXJhdGlvbihzZWxmKToKLSAgICAgICAgY29uZmlnX2FyZ3MgPSBbXQotICAgICAgICBjb25maWdf
YXJncy5hcHBlbmQoc2VsZi5fY29uZmlnLmZsYWdfZm9yX2NvbmZpZ3VyYXRpb24oc2VsZi5nZXRf
b3B0aW9uKCdjb25maWd1cmF0aW9uJykpKQotICAgICAgICAjIEZJWE1FOiBXZSBtYXkgbmVlZCB0
byBhZGQgc3VwcG9ydCBmb3IgcGFzc2luZyAtLTMyLWJpdCBsaWtlIG9sZC1ydW4td2Via2l0LXRl
c3RzIGhhZC4KLSAgICAgICAgcG9ydF9mbGFnID0gc2VsZi5fcG9ydF9mbGFnX2Zvcl9zY3JpcHRz
KCkKLSAgICAgICAgaWYgcG9ydF9mbGFnOgotICAgICAgICAgICAgY29uZmlnX2FyZ3MuYXBwZW5k
KHBvcnRfZmxhZykKLSAgICAgICAgcmV0dXJuIGNvbmZpZ19hcmdzCi0KLSAgICBkZWYgX3J1bl9z
Y3JpcHQoc2VsZiwgc2NyaXB0X25hbWUsIGFyZ3M9Tm9uZSwgaW5jbHVkZV9jb25maWd1cmF0aW9u
X2FyZ3VtZW50cz1UcnVlLCBkZWNvZGVfb3V0cHV0PVRydWUsIGVudj1Ob25lKToKLSAgICAgICAg
cnVuX3NjcmlwdF9jb21tYW5kID0gW3NlbGYuX2NvbmZpZy5zY3JpcHRfcGF0aChzY3JpcHRfbmFt
ZSldCi0gICAgICAgIGlmIGluY2x1ZGVfY29uZmlndXJhdGlvbl9hcmd1bWVudHM6Ci0gICAgICAg
ICAgICBydW5fc2NyaXB0X2NvbW1hbmQuZXh0ZW5kKHNlbGYuX2FyZ3VtZW50c19mb3JfY29uZmln
dXJhdGlvbigpKQotICAgICAgICBpZiBhcmdzOgotICAgICAgICAgICAgcnVuX3NjcmlwdF9jb21t
YW5kLmV4dGVuZChhcmdzKQotICAgICAgICBvdXRwdXQgPSBzZWxmLl9leGVjdXRpdmUucnVuX2Nv
bW1hbmQocnVuX3NjcmlwdF9jb21tYW5kLCBjd2Q9c2VsZi5fY29uZmlnLndlYmtpdF9iYXNlX2Rp
cigpLCBkZWNvZGVfb3V0cHV0PWRlY29kZV9vdXRwdXQsIGVudj1lbnYpCi0gICAgICAgIF9sb2cu
ZGVidWcoJ091dHB1dCBvZiAlczpcbiVzJyAlIChydW5fc2NyaXB0X2NvbW1hbmQsIG91dHB1dCkp
Ci0gICAgICAgIHJldHVybiBvdXRwdXQKLQotICAgIGRlZiBfYnVpbGRfZHJpdmVyKHNlbGYpOgot
ICAgICAgICBlbnZpcm9ubWVudCA9IHNlbGYuaG9zdC5jb3B5X2N1cnJlbnRfZW52aXJvbm1lbnQo
KQotICAgICAgICBlbnZpcm9ubWVudC5kaXNhYmxlX2djY19zbWFydHF1b3RlcygpCi0gICAgICAg
IGVudiA9IGVudmlyb25tZW50LnRvX2RpY3Rpb25hcnkoKQotCi0gICAgICAgICMgRklYTUU6IFdl
IGJ1aWxkIGJvdGggRHVtcFJlbmRlclRyZWUgYW5kIFdlYktpdFRlc3RSdW5uZXIgZm9yCi0gICAg
ICAgICMgV2ViS2l0VGVzdFJ1bm5lciBydW5zIGJlY2F1c2UgRHVtcFJlbmRlclRyZWUgc3RpbGwg
aW5jbHVkZXMKLSAgICAgICAgIyB0aGUgRHVtcFJlbmRlclRyZWVTdXBwb3J0IG1vZHVsZSBhbmQg
dGhlIFRlc3ROZXRzY2FwZVBsdWdpbi4KLSAgICAgICAgIyBUaGVzZSB0d28gcHJvamVjdHMgc2hv
dWxkIGJlIGZhY3RvcmVkIG91dCBpbnRvIHRoZWlyIG93bgotICAgICAgICAjIHByb2plY3RzLgot
ICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLl9ydW5fc2NyaXB0KCJidWlsZC1kdW1wcmVu
ZGVydHJlZSIsIGFyZ3M9c2VsZi5fYnVpbGRfZHJpdmVyX2ZsYWdzKCksIGVudj1lbnYpCi0gICAg
ICAgICAgICBpZiBzZWxmLmdldF9vcHRpb24oJ3dlYmtpdF90ZXN0X3J1bm5lcicpOgotICAgICAg
ICAgICAgICAgIHNlbGYuX3J1bl9zY3JpcHQoImJ1aWxkLXdlYmtpdHRlc3RydW5uZXIiLCBhcmdz
PXNlbGYuX2J1aWxkX2RyaXZlcl9mbGFncygpLCBlbnY9ZW52KQotICAgICAgICBleGNlcHQgU2Ny
aXB0RXJyb3IsIGU6Ci0gICAgICAgICAgICBfbG9nLmVycm9yKGUubWVzc2FnZV93aXRoX291dHB1
dChvdXRwdXRfbGltaXQ9Tm9uZSkpCi0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAg
cmV0dXJuIFRydWUKLQotICAgIGRlZiBfYnVpbGRfZHJpdmVyX2ZsYWdzKHNlbGYpOgotICAgICAg
ICByZXR1cm4gW10KLQotICAgIGRlZiBfdGVzdHNfZm9yX290aGVyX3BsYXRmb3JtcyhzZWxmKToK
LSAgICAgICAgIyBCeSBkZWZhdWx0IHdlIHdpbGwgc2tpcCBhbnkgZGlyZWN0b3J5IHVuZGVyIExh
eW91dFRlc3RzL3BsYXRmb3JtCi0gICAgICAgICMgdGhhdCBpc24ndCBpbiBvdXIgYmFzZWxpbmUg
c2VhcmNoIHBhdGggKHRoaXMgbWlycm9ycyB3aGF0Ci0gICAgICAgICMgb2xkLXJ1bi13ZWJraXQt
dGVzdHMgZG9lcyBpbiBmaW5kVGVzdHNUb1J1bigpKS4KLSAgICAgICAgIyBOb3RlIHRoaXMgcmV0
dXJucyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS8qLCBub3QgcGxhdGZvcm0vKi8qLgotICAgICAgICBl
bnRyaWVzID0gc2VsZi5fZmlsZXN5c3RlbS5nbG9iKHNlbGYuX3dlYmtpdF9iYXNlbGluZV9wYXRo
KCcqJykpCi0gICAgICAgIGRpcnNfdG9fc2tpcCA9IFtdCi0gICAgICAgIGZvciBlbnRyeSBpbiBl
bnRyaWVzOgotICAgICAgICAgICAgaWYgc2VsZi5fZmlsZXN5c3RlbS5pc2RpcihlbnRyeSkgYW5k
IGVudHJ5IG5vdCBpbiBzZWxmLmJhc2VsaW5lX3NlYXJjaF9wYXRoKCk6Ci0gICAgICAgICAgICAg
ICAgYmFzZW5hbWUgPSBzZWxmLl9maWxlc3lzdGVtLmJhc2VuYW1lKGVudHJ5KQotICAgICAgICAg
ICAgICAgIGRpcnNfdG9fc2tpcC5hcHBlbmQoJ3BsYXRmb3JtLyVzJyAlIGJhc2VuYW1lKQotICAg
ICAgICByZXR1cm4gZGlyc190b19za2lwCi0KLSAgICBkZWYgX3J1bnRpbWVfZmVhdHVyZV9saXN0
KHNlbGYpOgotICAgICAgICAiIiJJZiBhIHBvcnQgbWFrZXMgY2VydGFpbiBmZWF0dXJlcyBhdmFp
bGFibGUgb25seSB0aHJvdWdoIHJ1bnRpbWUgZmxhZ3MsIGl0IGNhbiBvdmVycmlkZSB0aGlzIHJv
dXRpbmUgdG8gaW5kaWNhdGUgd2hpY2ggb25lcyBhcmUgYXZhaWxhYmxlLiIiIgotICAgICAgICBy
ZXR1cm4gTm9uZQotCi0gICAgZGVmIG5tX2NvbW1hbmQoc2VsZik6Ci0gICAgICAgIHJldHVybiAn
bm0nCi0KLSAgICBkZWYgX21vZHVsZXNfdG9fc2VhcmNoX2Zvcl9zeW1ib2xzKHNlbGYpOgotICAg
ICAgICBwYXRoID0gc2VsZi5fcGF0aF90b193ZWJjb3JlX2xpYnJhcnkoKQotICAgICAgICBpZiBw
YXRoOgotICAgICAgICAgICAgcmV0dXJuIFtwYXRoXQotICAgICAgICByZXR1cm4gW10KLQotICAg
IGRlZiBfc3ltYm9sc19zdHJpbmcoc2VsZik6Ci0gICAgICAgIHN5bWJvbHMgPSAnJwotICAgICAg
ICBmb3IgcGF0aF90b19tb2R1bGUgaW4gc2VsZi5fbW9kdWxlc190b19zZWFyY2hfZm9yX3N5bWJv
bHMoKToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzeW1ib2xzICs9IHNlbGYu
X2V4ZWN1dGl2ZS5ydW5fY29tbWFuZChbc2VsZi5ubV9jb21tYW5kKCksIHBhdGhfdG9fbW9kdWxl
XSwgZXJyb3JfaGFuZGxlcj1zZWxmLl9leGVjdXRpdmUuaWdub3JlX2Vycm9yKQotICAgICAgICAg
ICAgZXhjZXB0IE9TRXJyb3IsIGU6Ci0gICAgICAgICAgICAgICAgX2xvZy53YXJuKCJGYWlsZWQg
dG8gcnVuIG5tOiAlcy4gIENhbid0IGRldGVybWluZSBzdXBwb3J0ZWQgZmVhdHVyZXMgY29ycmVj
dGx5LiIgJSBlKQotICAgICAgICByZXR1cm4gc3ltYm9scwotCi0gICAgIyBQb3J0cyB3aGljaCB1
c2UgcnVuLXRpbWUgZmVhdHVyZSBkZXRlY3Rpb24gc2hvdWxkIGRlZmluZSB0aGlzIG1ldGhvZCBh
bmQgcmV0dXJuCi0gICAgIyBhIGRpY3Rpb25hcnkgbWFwcGluZyBmcm9tIEZlYXR1cmUgTmFtZXMg
dG8gc2tpcHBlZCBkaXJlY3RvaXJlcy4gIE5SV1Qgd2lsbAotICAgICMgcnVuIER1bXBSZW5kZXJU
cmVlIC0tcHJpbnQtc3VwcG9ydGVkLWZlYXR1cmVzIGFuZCBwYXJzZSB0aGUgb3V0cHV0LgotICAg
ICMgSWYgdGhlIEZlYXR1cmUgTmFtZXMgYXJlIG5vdCBmb3VuZCBpbiB0aGUgb3V0cHV0LCB0aGUg
Y29ycmVzcG9uZGluZyBkaXJlY3RvcmllcwotICAgICMgd2lsbCBiZSBza2lwcGVkLgotICAgIGRl
ZiBfbWlzc2luZ19mZWF0dXJlX3RvX3NraXBwZWRfdGVzdHMoc2VsZik6Ci0gICAgICAgICIiIlJl
dHVybiB0aGUgc3VwcG9ydGVkIGZlYXR1cmUgZGljdGlvbmFyeS4gS2V5cyBhcmUgZmVhdHVyZSBu
YW1lcyBhbmQgdmFsdWVzCi0gICAgICAgIGFyZSB0aGUgbGlzdHMgb2YgZGlyZWN0b3JpZXMgdG8g
c2tpcCBpZiB0aGUgZmVhdHVyZSBuYW1lIGlzIG5vdCBtYXRjaGVkLiIiIgotICAgICAgICAjIEZJ
WE1FOiBUaGlzIGxpc3QgbWF0Y2hlcyBXZWJLaXRXaW4gYW5kIHNob3VsZCBiZSBtb3ZlZCBvbnRv
IHRoZSBXaW4gcG9ydC4KLSAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgICJBY2NlbGVyYXRl
ZCBDb21wb3NpdGluZyI6IFsiY29tcG9zaXRpbmciXSwKLSAgICAgICAgICAgICIzRCBSZW5kZXJp
bmciOiBbImFuaW1hdGlvbnMvM2QiLCAidHJhbnNmb3Jtcy8zZCJdLAotICAgICAgICB9Ci0KLSAg
ICAjIFBvcnRzIHdoaWNoIHVzZSBjb21waWxlLXRpbWUgZmVhdHVyZSBkZXRlY3Rpb24gc2hvdWxk
IGRlZmluZSB0aGlzIG1ldGhvZCBhbmQgcmV0dXJuCi0gICAgIyBhIGRpY3Rpb25hcnkgbWFwcGlu
ZyBmcm9tIHN5bWJvbCBzdWJzdHJpbmdzIHRvIHBvc3NpYmx5IGRpc2FibGVkIHRlc3QgZGlyZWN0
b3JpZXMuCi0gICAgIyBXaGVuIHRoZSBzeW1ib2wgc3Vic3RyaW5ncyBhcmUgbm90IG1hdGNoZWQs
IHRoZSBkaXJlY3RvcmllcyB3aWxsIGJlIHNraXBwZWQuCi0gICAgIyBJZiBwb3J0cyBkb24ndCBl
dmVyIGVuYWJsZSBjZXJ0YWluIGZlYXR1cmVzLCB0aGVuIHRob3NlIGRpcmVjdG9yaWVzIGNhbiBq
dXN0IGJlCi0gICAgIyBpbiB0aGUgU2tpcHBlZCBsaXN0IGluc3RlYWQgb2YgY29tcGlsZS10aW1l
LWNoZWNrZWQgaGVyZS4KLSAgICBkZWYgX21pc3Npbmdfc3ltYm9sX3RvX3NraXBwZWRfdGVzdHMo
c2VsZik6Ci0gICAgICAgICIiIlJldHVybiB0aGUgc3VwcG9ydGVkIGZlYXR1cmUgZGljdGlvbmFy
eS4gVGhlIGtleXMgYXJlIHN5bWJvbC1zdWJzdHJpbmdzCi0gICAgICAgIGFuZCB0aGUgdmFsdWVz
IGFyZSB0aGUgbGlzdHMgb2YgZGlyZWN0b3JpZXMgdG8gc2tpcCBpZiB0aGF0IHN5bWJvbCBpcyBt
aXNzaW5nLiIiIgotICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgIk1hdGhNTEVsZW1lbnQi
OiBbIm1hdGhtbCJdLAotICAgICAgICAgICAgIkdyYXBoaWNzTGF5ZXIiOiBbImNvbXBvc2l0aW5n
Il0sCi0gICAgICAgICAgICAiV2ViQ29yZUhhczNEUmVuZGVyaW5nIjogWyJhbmltYXRpb25zLzNk
IiwgInRyYW5zZm9ybXMvM2QiXSwKLSAgICAgICAgICAgICJXZWJHTFNoYWRlciI6IFsiZmFzdC9j
YW52YXMvd2ViZ2wiLCAiY29tcG9zaXRpbmcvd2ViZ2wiLCAiaHR0cC90ZXN0cy9jYW52YXMvd2Vi
Z2wiXSwKLSAgICAgICAgICAgICJNSFRNTEFyY2hpdmUiOiBbIm1odG1sIl0sCi0gICAgICAgICAg
ICAiQ1NTVmFyaWFibGVWYWx1ZSI6IFsiZmFzdC9jc3MvdmFyaWFibGVzIiwgImluc3BlY3Rvci9z
dHlsZXMvdmFyaWFibGVzIl0sCi0gICAgICAgIH0KLQotICAgIGRlZiBfaGFzX3Rlc3RfaW5fZGly
ZWN0b3JpZXMoc2VsZiwgZGlyZWN0b3J5X2xpc3RzLCB0ZXN0X2xpc3QpOgotICAgICAgICBpZiBu
b3QgdGVzdF9saXN0OgotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICAgICAgZGlyZWN0
b3JpZXMgPSBpdGVydG9vbHMuY2hhaW4uZnJvbV9pdGVyYWJsZShkaXJlY3RvcnlfbGlzdHMpCi0g
ICAgICAgIGZvciBkaXJlY3RvcnksIHRlc3QgaW4gaXRlcnRvb2xzLnByb2R1Y3QoZGlyZWN0b3Jp
ZXMsIHRlc3RfbGlzdCk6Ci0gICAgICAgICAgICBpZiB0ZXN0LnN0YXJ0c3dpdGgoZGlyZWN0b3J5
KToKLSAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAgICByZXR1cm4gRmFsc2UKLQot
ICAgIGRlZiBfc2tpcHBlZF90ZXN0c19mb3JfdW5zdXBwb3J0ZWRfZmVhdHVyZXMoc2VsZiwgdGVz
dF9saXN0KToKLSAgICAgICAgIyBPbmx5IGNoZWNrIHRoZSBydW50aW1lIGZlYXR1cmUgbGlzdCBv
ZiB0aGVyZSBhcmUgdGVzdHMgaW4gdGhlIHRlc3RfbGlzdCB0aGF0IG1pZ2h0IGdldCBza2lwcGVk
LgotICAgICAgICAjIFRoaXMgaXMgYSBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24gdG8gYXZvaWQg
dGhlIHN1YnByb2Nlc3MgY2FsbCB0byBEUlQuCi0gICAgICAgIGlmIHNlbGYuX2hhc190ZXN0X2lu
X2RpcmVjdG9yaWVzKHNlbGYuX21pc3NpbmdfZmVhdHVyZV90b19za2lwcGVkX3Rlc3RzKCkudmFs
dWVzKCksIHRlc3RfbGlzdCk6Ci0gICAgICAgICAgICAjIElmIHRoZSBwb3J0IHN1cHBvcnRzIHJ1
bnRpbWUgZmVhdHVyZSBkZXRlY3Rpb24sIGRpc2FibGUgYW55IHRlc3RzCi0gICAgICAgICAgICAj
IGZvciBmZWF0dXJlcyBtaXNzaW5nIGZyb20gdGhlIHJ1bnRpbWUgZmVhdHVyZSBsaXN0LgotICAg
ICAgICAgICAgc3VwcG9ydGVkX2ZlYXR1cmVfbGlzdCA9IHNlbGYuX3J1bnRpbWVfZmVhdHVyZV9s
aXN0KCkKLSAgICAgICAgICAgICMgSWYgX3J1bnRpbWVfZmVhdHVyZV9saXN0IHJldHVybnMgYSBu
b24tTm9uZSB2YWx1ZSwgdGhlbiBwcmVmZXIKLSAgICAgICAgICAgICMgcnVudGltZSBmZWF0dXJl
IGRldGVjdGlvbiBvdmVyIHN0YXRpYyBmZWF0dXJlIGRldGVjdGlvbi4KLSAgICAgICAgICAgIGlm
IHN1cHBvcnRlZF9mZWF0dXJlX2xpc3QgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIHJlZHVjZShvcGVyYXRvci5hZGQsIFtkaXJlY3RvcmllcyBmb3IgZmVhdHVyZSwgZGlyZWN0
b3JpZXMgaW4gc2VsZi5fbWlzc2luZ19mZWF0dXJlX3RvX3NraXBwZWRfdGVzdHMoKS5pdGVtcygp
IGlmIGZlYXR1cmUgbm90IGluIHN1cHBvcnRlZF9mZWF0dXJlX2xpc3RdKQotCi0gICAgICAgICMg
T25seSBjaGVjayB0aGUgc3ltYm9scyBvZiB0aGVyZSBhcmUgdGVzdHMgaW4gdGhlIHRlc3RfbGlz
dCB0aGF0IG1pZ2h0IGdldCBza2lwcGVkLgotICAgICAgICAjIFRoaXMgaXMgYSBwZXJmb3JtYW5j
ZSBvcHRpbWl6YXRpb24gdG8gYXZvaWQgdGhlIGNhbGxpbmcgbm0uCi0gICAgICAgIGlmIHNlbGYu
X2hhc190ZXN0X2luX2RpcmVjdG9yaWVzKHNlbGYuX21pc3Npbmdfc3ltYm9sX3RvX3NraXBwZWRf
dGVzdHMoKS52YWx1ZXMoKSwgdGVzdF9saXN0KToKLSAgICAgICAgICAgICMgUnVudGltZSBmZWF0
dXJlIGRldGVjdGlvbiBub3Qgc3VwcG9ydGVkLCBmYWxsYmFjayB0byBzdGF0aWMgZGVjdGVjdGlv
bjoKLSAgICAgICAgICAgICMgRGlzYWJsZSBhbnkgdGVzdHMgZm9yIHN5bWJvbHMgbWlzc2luZyBm
cm9tIHRoZSBleGVjdXRhYmxlIG9yIGxpYnJhcmllcy4KLSAgICAgICAgICAgIHN5bWJvbHNfc3Ry
aW5nID0gc2VsZi5fc3ltYm9sc19zdHJpbmcoKQotICAgICAgICAgICAgaWYgc3ltYm9sc19zdHJp
bmcgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHJlZHVjZShvcGVyYXRvci5h
ZGQsIFtkaXJlY3RvcmllcyBmb3Igc3ltYm9sX3N1YnN0cmluZywgZGlyZWN0b3JpZXMgaW4gc2Vs
Zi5fbWlzc2luZ19zeW1ib2xfdG9fc2tpcHBlZF90ZXN0cygpLml0ZW1zKCkgaWYgc3ltYm9sX3N1
YnN0cmluZyBub3QgaW4gc3ltYm9sc19zdHJpbmddLCBbXSkKLQotICAgICAgICAjIEZhaWxlZCB0
byBnZXQgYW55IHJ1bnRpbWUgb3Igc3ltYm9sIGluZm9ybWF0aW9uLCBkb24ndCBza2lwIGFueSB0
ZXN0cy4KLSAgICAgICAgcmV0dXJuIFtdCi0KLSAgICBkZWYgX3drMl9wb3J0X25hbWUoc2VsZik6
Ci0gICAgICAgICMgQnkgY3VycmVudCBjb252ZW50aW9uLCB0aGUgV2ViS2l0MiBuYW1lIGlzIGFs
d2F5cyBtYWMtd2syLCB3aW4td2syLCBub3QgbWFjLWxlb3BhcmQtd2syLCBldGMsCi0gICAgICAg
ICMgZXhjZXB0IGZvciBRdCBiZWNhdXNlIFdlYktpdDIgaXMgb25seSBzdXBwb3J0ZWQgYnkgUXQg
NS4wICh0aGVyZWZvcmU6IHF0LTUuMC13azIpLgotICAgICAgICByZXR1cm4gIiVzLXdrMiIgJSBz
ZWxmLnBvcnRfbmFtZQotCi0gICAgZGVmIF9za2lwcGVkX2ZpbGVfc2VhcmNoX3BhdGhzKHNlbGYp
OgotICAgICAgICAjIFVubGlrZSBiYXNlbGluZV9zZWFyY2hfcGF0aCwgd2Ugb25seSB3YW50IHRv
IHNlYXJjaCBbV0syLVBPUlQsIFBPUlQtVkVSU0lPTiwgUE9SVF0gYW5kIGFueSBkaXJlY3Rvcmll
cwotICAgICAgICAjIGluY2x1ZGVkIHZpYSAtLWFkZGl0aW9uYWwtcGxhdGZvcm0tZGlyZWN0b3J5
LCBub3QgdGhlIGZ1bGwgY2FzYWRlLgotICAgICAgICAjIE5vdGUgb3JkZXIgZG9lc24ndCBtYXR0
ZXIgc2luY2UgdGhlIFNraXBwZWQgZmlsZSBjb250ZW50cyBhcmUgYWxsIGNvbWJpbmVkLgotICAg
ICAgICBzZWFyY2hfcGF0aHMgPSBzZXQoW3NlbGYucG9ydF9uYW1lXSkKLSAgICAgICAgaWYgJ2Z1
dHVyZScgbm90IGluIHNlbGYubmFtZSgpOgotICAgICAgICAgICAgc2VhcmNoX3BhdGhzLmFkZChz
ZWxmLm5hbWUoKSkKLSAgICAgICAgaWYgc2VsZi5nZXRfb3B0aW9uKCd3ZWJraXRfdGVzdF9ydW5u
ZXInKToKLSAgICAgICAgICAgICMgQmVjYXVzZSBuZWFybHkgYWxsIG9mIHRoZSBza2lwcGVkIHRl
c3RzIGZvciBXZWJLaXQgMiBhcmUgZHVlIHRvIGNyb3NzLXBsYXRmb3JtCi0gICAgICAgICAgICAj
IGlzc3VlcywgYWxsIHdrMiBwb3J0cyBzaGFyZSBhIHNraXBwZWQgbGlzdCB1bmRlciBwbGF0Zm9y
bS93azIuCi0gICAgICAgICAgICBzZWFyY2hfcGF0aHMudXBkYXRlKFtzZWxmLl93azJfcG9ydF9u
YW1lKCksICJ3azIiXSkKLSAgICAgICAgc2VhcmNoX3BhdGhzLnVwZGF0ZShzZWxmLmdldF9vcHRp
b24oImFkZGl0aW9uYWxfcGxhdGZvcm1fZGlyZWN0b3J5IiwgW10pKQotCi0gICAgICAgIHJldHVy
biBzZWFyY2hfcGF0aHMKLQotICAgIGRlZiBza2lwcGVkX2xheW91dF90ZXN0cyhzZWxmLCB0ZXN0
X2xpc3QpOgotICAgICAgICB0ZXN0c190b19za2lwID0gc2V0KHNlbGYuX2V4cGVjdGF0aW9uc19m
cm9tX3NraXBwZWRfZmlsZXMoc2VsZi5fc2tpcHBlZF9maWxlX3NlYXJjaF9wYXRocygpKSkKLSAg
ICAgICAgdGVzdHNfdG9fc2tpcC51cGRhdGUoc2VsZi5fdGVzdHNfZm9yX290aGVyX3BsYXRmb3Jt
cygpKQotICAgICAgICB0ZXN0c190b19za2lwLnVwZGF0ZShzZWxmLl9za2lwcGVkX3Rlc3RzX2Zv
cl91bnN1cHBvcnRlZF9mZWF0dXJlcyh0ZXN0X2xpc3QpKQotICAgICAgICByZXR1cm4gdGVzdHNf
dG9fc2tpcApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC93ZWJraXRfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L3dlYmtpdF91bml0dGVzdC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5k
ZXggMDc4MTgyNTQxNWE4Y2Q0NzdiZTJjZGMxNDY4ZDllNGQ4NGE0NDQxMS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdF91bml0dGVzdC5weQorKysgL2Rldi9udWxsCkBAIC0x
LDIzMyArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMgQ29weXJpZ2h0IChDKSAyMDEw
IEdhYm9yIFJhcGNzYW55aSA8cmdhYm9yQGluZi51LXN6ZWdlZC5odT4sIFVuaXZlcnNpdHkgb2Yg
U3plZ2VkCi0jIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotIwotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0jIGFyZSBtZXQ6Ci0jIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFVOSVZFUlNJVFkgT0YgU1pFR0VEIGBgQVMgSVMnJyBBTkQgQU5ZCi0jIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCi0jIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgVU5JVkVSU0lUWSBPRiBTWkVHRUQgT1IKLSMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0jIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSMgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCi0jIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSMgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotCi1pbXBvcnQgbG9nZ2luZwotaW1wb3J0IHVuaXR0ZXN0Ci0KLWZyb20gd2Vi
a2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmVfbW9jayBpbXBvcnQgTW9ja0V4ZWN1dGl2ZQot
ZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmZpbGVzeXN0ZW1fbW9jayBpbXBvcnQgTW9ja0Zp
bGVTeXN0ZW0KLWZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5vdXRwdXRjYXB0dXJlIGltcG9y
dCBPdXRwdXRDYXB0dXJlCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uc3lzdGVtaG9zdF9t
b2NrIGltcG9ydCBNb2NrU3lzdGVtSG9zdAotZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9k
ZWxzLnRlc3RfY29uZmlndXJhdGlvbiBpbXBvcnQgVGVzdENvbmZpZ3VyYXRpb24KLWZyb20gd2Vi
a2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQgaW1wb3J0IHBvcnRfdGVzdGNhc2UKLWZyb20gd2Via2l0
cHkubGF5b3V0X3Rlc3RzLnBvcnQud2Via2l0IGltcG9ydCBXZWJLaXRQb3J0Ci1mcm9tIHdlYmtp
dHB5LmxheW91dF90ZXN0cy5wb3J0LmNvbmZpZ19tb2NrIGltcG9ydCBNb2NrQ29uZmlnCi1mcm9t
IHdlYmtpdHB5LnRvb2wubW9ja3Rvb2wgaW1wb3J0IE1vY2tPcHRpb25zCi0KLQotY2xhc3MgVGVz
dFdlYktpdFBvcnQoV2ViS2l0UG9ydCk6Ci0gICAgcG9ydF9uYW1lID0gInRlc3R3ZWJraXRwb3J0
IgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHN5bWJvbHNfc3RyaW5nPU5vbmUsCi0gICAgICAg
ICAgICAgICAgIGV4cGVjdGF0aW9uc19maWxlPU5vbmUsIHNraXBzX2ZpbGU9Tm9uZSwgaG9zdD1O
b25lLCBjb25maWc9Tm9uZSwKLSAgICAgICAgICAgICAgICAgKiprd2FyZ3MpOgotICAgICAgICBz
ZWxmLnN5bWJvbHNfc3RyaW5nID0gc3ltYm9sc19zdHJpbmcgICMgUGFzc2luZyAiIiBkaXNhYmxl
cyBhbGwgc3RhdGljbHktZGV0ZWN0YWJsZSBmZWF0dXJlcy4KLSAgICAgICAgaG9zdCA9IGhvc3Qg
b3IgTW9ja1N5c3RlbUhvc3QoKQotICAgICAgICBjb25maWcgPSBjb25maWcgb3IgTW9ja0NvbmZp
ZygpCi0gICAgICAgIFdlYktpdFBvcnQuX19pbml0X18oc2VsZiwgaG9zdD1ob3N0LCBjb25maWc9
Y29uZmlnLCAqKmt3YXJncykKLQotICAgIGRlZiBhbGxfdGVzdF9jb25maWd1cmF0aW9ucyhzZWxm
KToKLSAgICAgICAgcmV0dXJuIFtzZWxmLnRlc3RfY29uZmlndXJhdGlvbigpXQotCi0gICAgZGVm
IF9zeW1ib2xzX3N0cmluZyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuc3ltYm9sc19zdHJp
bmcKLQotICAgIGRlZiBfdGVzdHNfZm9yX290aGVyX3BsYXRmb3JtcyhzZWxmKToKLSAgICAgICAg
cmV0dXJuIFsibWVkaWEiLCBdCi0KLSAgICBkZWYgX3Rlc3RzX2Zvcl9kaXNhYmxlZF9mZWF0dXJl
cyhzZWxmKToKLSAgICAgICAgcmV0dXJuIFsiYWNjZXNzaWJpbGl0eSIsIF0KLQotCi1jbGFzcyBX
ZWJLaXRQb3J0VGVzdChwb3J0X3Rlc3RjYXNlLlBvcnRUZXN0Q2FzZSk6Ci0gICAgcG9ydF9uYW1l
ID0gJ3dlYmtpdCcKLSAgICBwb3J0X21ha2VyID0gVGVzdFdlYktpdFBvcnQKLQotICAgIGRlZiB0
ZXN0X2NoZWNrX2J1aWxkKHNlbGYpOgotICAgICAgICBwYXNzCi0KLSAgICBkZWYgdGVzdF9kcml2
ZXJfY21kX2xpbmUoc2VsZik6Ci0gICAgICAgIHBhc3MKLQotICAgIGRlZiB0ZXN0X2Jhc2VsaW5l
X3NlYXJjaF9wYXRoKHNlbGYpOgotICAgICAgICBwYXNzCi0KLSAgICBkZWYgdGVzdF9wYXRoX3Rv
X3Rlc3RfZXhwZWN0YXRpb25zX2ZpbGUoc2VsZik6Ci0gICAgICAgIHBvcnQgPSBUZXN0V2ViS2l0
UG9ydCgpCi0gICAgICAgIHBvcnQuX29wdGlvbnMgPSBNb2NrT3B0aW9ucyh3ZWJraXRfdGVzdF9y
dW5uZXI9RmFsc2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5wYXRoX3RvX3Rlc3Rf
ZXhwZWN0YXRpb25zX2ZpbGUoKSwgJy9tb2NrLWNoZWNrb3V0L0xheW91dFRlc3RzL3BsYXRmb3Jt
L3Rlc3R3ZWJraXRwb3J0L1Rlc3RFeHBlY3RhdGlvbnMnKQotCi0gICAgICAgIHBvcnQgPSBUZXN0
V2ViS2l0UG9ydCgpCi0gICAgICAgIHBvcnQuX29wdGlvbnMgPSBNb2NrT3B0aW9ucyh3ZWJraXRf
dGVzdF9ydW5uZXI9VHJ1ZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0LnBhdGhfdG9f
dGVzdF9leHBlY3RhdGlvbnNfZmlsZSgpLCAnL21vY2stY2hlY2tvdXQvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vdGVzdHdlYmtpdHBvcnQvVGVzdEV4cGVjdGF0aW9ucycpCi0KLSAgICAgICAgcG9ydCA9
IFRlc3RXZWJLaXRQb3J0KCkKLSAgICAgICAgcG9ydC5ob3N0LmZpbGVzeXN0ZW0uZmlsZXNbJy9t
b2NrLWNoZWNrb3V0L0xheW91dFRlc3RzL3BsYXRmb3JtL3Rlc3R3ZWJraXRwb3J0L1Rlc3RFeHBl
Y3RhdGlvbnMnXSA9ICdzb21lIGNvbnRlbnQnCi0gICAgICAgIHBvcnQuX29wdGlvbnMgPSBNb2Nr
T3B0aW9ucyh3ZWJraXRfdGVzdF9ydW5uZXI9RmFsc2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwocG9ydC5wYXRoX3RvX3Rlc3RfZXhwZWN0YXRpb25zX2ZpbGUoKSwgJy9tb2NrLWNoZWNrb3V0
L0xheW91dFRlc3RzL3BsYXRmb3JtL3Rlc3R3ZWJraXRwb3J0L1Rlc3RFeHBlY3RhdGlvbnMnKQot
Ci0gICAgZGVmIHRlc3Rfc2tpcHBlZF9kaXJlY3Rvcmllc19mb3Jfc3ltYm9scyhzZWxmKToKLSAg
ICAgICAgIyBUaGlzIGZpcnN0IHRlc3QgY29uZmlybXMgdGhhdCB0aGUgY29tbW9ubHkgZm91bmQg
c3ltYm9scyByZXN1bHQgaW4gdGhlIGV4cGVjdGVkIHNraXBwZWQgZGlyZWN0b3JpZXMuCi0gICAg
ICAgIHN5bWJvbHNfc3RyaW5nID0gIiAiLmpvaW4oWyJHcmFwaGljc0xheWVyIiwgIldlYkNvcmVI
YXMzRFJlbmRlcmluZyIsICJpc1hIVE1MTVBEb2N1bWVudCIsICJmb29TeW1ib2wiXSkKLSAgICAg
ICAgZXhwZWN0ZWRfZGlyZWN0b3JpZXMgPSBzZXQoWwotICAgICAgICAgICAgIm1hdGhtbCIsICAj
IFJlcXVpcmVzIE1hdGhNTEVsZW1lbnQKLSAgICAgICAgICAgICJmYXN0L2NhbnZhcy93ZWJnbCIs
ICAjIFJlcXVpcmVzIFdlYkdMU2hhZGVyCi0gICAgICAgICAgICAiY29tcG9zaXRpbmcvd2ViZ2wi
LCAgIyBSZXF1aXJlcyBXZWJHTFNoYWRlcgotICAgICAgICAgICAgImh0dHAvdGVzdHMvY2FudmFz
L3dlYmdsIiwgICMgUmVxdWlyZXMgV2ViR0xTaGFkZXIKLSAgICAgICAgICAgICJtaHRtbCIsICAj
IFJlcXVpcmVzIE1IVE1MQXJjaGl2ZQotICAgICAgICAgICAgImZhc3QvY3NzL3ZhcmlhYmxlcyIs
ICAjIFJlcXVpcmVzIENTUyBWYXJpYWJsZXMKLSAgICAgICAgICAgICJpbnNwZWN0b3Ivc3R5bGVz
L3ZhcmlhYmxlcyIsICAjIFJlcXVpcmVzIENTUyBWYXJpYWJsZXMKLSAgICAgICAgXSkKLQotICAg
ICAgICByZXN1bHRfZGlyZWN0b3JpZXMgPSBzZXQoVGVzdFdlYktpdFBvcnQoc3ltYm9sc19zdHJp
bmcsIE5vbmUpLl9za2lwcGVkX3Rlc3RzX2Zvcl91bnN1cHBvcnRlZF9mZWF0dXJlcyh0ZXN0X2xp
c3Q9WydtYXRobWwvZm9vLmh0bWwnXSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0
X2RpcmVjdG9yaWVzLCBleHBlY3RlZF9kaXJlY3RvcmllcykKLQotICAgICAgICAjIFRlc3QgdGhh
dCB0aGUgbm0gc3RyaW5nIHBhcnNpbmcgYWN0dWFsbHkgd29ya3M6Ci0gICAgICAgIHN5bWJvbHNf
c3RyaW5nID0gIiIiCi0wMDAwMDAwMDAxMjRmNDk4IHMgX19aWk43V2ViQ29yZTEzR3JhcGhpY3NM
YXllcjEycmVwbGFjZUNoaWxkRVBTMF9TMV9FMTlfX1BSRVRUWV9GVU5DVElPTl9fCi0wMDAwMDAw
MDAxMjRmNTAwIHMgX19aWk43V2ViQ29yZTEzR3JhcGhpY3NMYXllcjEzYWRkQ2hpbGRBYm92ZUVQ
UzBfUzFfRTE5X19QUkVUVFlfRlVOQ1RJT05fXwotMDAwMDAwMDAwMTI0ZjY3MCBzIF9fWlpON1dl
YkNvcmUxM0dyYXBoaWNzTGF5ZXIxM2FkZENoaWxkQmVsb3dFUFMwX1MxX0UxOV9fUFJFVFRZX0ZV
TkNUSU9OX18KLSIiIgotICAgICAgICAjIE5vdGUgJ2NvbXBvc2l0aW5nJyBpcyBub3QgaW4gdGhl
IGxpc3Qgb2Ygc2tpcHBlZCBkaXJlY3RvcmllcyAoaGVuY2UgdGhlIHBhcnNpbmcgb2YgR3JhcGhp
Y3NMYXllciB3b3JrZWQpOgotICAgICAgICBleHBlY3RlZF9kaXJlY3RvcmllcyA9IHNldChbJ21h
dGhtbCcsICd0cmFuc2Zvcm1zLzNkJywgJ2NvbXBvc2l0aW5nL3dlYmdsJywgJ2Zhc3QvY2FudmFz
L3dlYmdsJywgJ2FuaW1hdGlvbnMvM2QnLCAnbWh0bWwnLCAnaHR0cC90ZXN0cy9jYW52YXMvd2Vi
Z2wnLCAnZmFzdC9jc3MvdmFyaWFibGVzJywgJ2luc3BlY3Rvci9zdHlsZXMvdmFyaWFibGVzJ10p
Ci0gICAgICAgIHJlc3VsdF9kaXJlY3RvcmllcyA9IHNldChUZXN0V2ViS2l0UG9ydChzeW1ib2xz
X3N0cmluZywgTm9uZSkuX3NraXBwZWRfdGVzdHNfZm9yX3Vuc3VwcG9ydGVkX2ZlYXR1cmVzKHRl
c3RfbGlzdD1bJ21hdGhtbC9mb28uaHRtbCddKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChy
ZXN1bHRfZGlyZWN0b3JpZXMsIGV4cGVjdGVkX2RpcmVjdG9yaWVzKQotCi0gICAgZGVmIHRlc3Rf
c2tpcHBlZF9kaXJlY3Rvcmllc19mb3JfZmVhdHVyZXMoc2VsZik6Ci0gICAgICAgIHN1cHBvcnRl
ZF9mZWF0dXJlcyA9IFsiQWNjZWxlcmF0ZWQgQ29tcG9zaXRpbmciLCAiRm9vIEZlYXR1cmUiXQot
ICAgICAgICBleHBlY3RlZF9kaXJlY3RvcmllcyA9IHNldChbImFuaW1hdGlvbnMvM2QiLCAidHJh
bnNmb3Jtcy8zZCJdKQotICAgICAgICBwb3J0ID0gVGVzdFdlYktpdFBvcnQoTm9uZSwgc3VwcG9y
dGVkX2ZlYXR1cmVzKQotICAgICAgICBwb3J0Ll9ydW50aW1lX2ZlYXR1cmVfbGlzdCA9IGxhbWJk
YTogc3VwcG9ydGVkX2ZlYXR1cmVzCi0gICAgICAgIHJlc3VsdF9kaXJlY3RvcmllcyA9IHNldChw
b3J0Ll9za2lwcGVkX3Rlc3RzX2Zvcl91bnN1cHBvcnRlZF9mZWF0dXJlcyh0ZXN0X2xpc3Q9WyJh
bmltYXRpb25zLzNkL2Zvby5odG1sIl0pKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3Vs
dF9kaXJlY3RvcmllcywgZXhwZWN0ZWRfZGlyZWN0b3JpZXMpCi0KLSAgICBkZWYgdGVzdF9za2lw
cGVkX2RpcmVjdG9yaWVzX2Zvcl9mZWF0dXJlc19ub19tYXRjaGluZ190ZXN0c19pbl90ZXN0X2xp
c3Qoc2VsZik6Ci0gICAgICAgIHN1cHBvcnRlZF9mZWF0dXJlcyA9IFsiQWNjZWxlcmF0ZWQgQ29t
cG9zaXRpbmciLCAiRm9vIEZlYXR1cmUiXQotICAgICAgICBleHBlY3RlZF9kaXJlY3RvcmllcyA9
IHNldChbXSkKLSAgICAgICAgcmVzdWx0X2RpcmVjdG9yaWVzID0gc2V0KFRlc3RXZWJLaXRQb3J0
KE5vbmUsIHN1cHBvcnRlZF9mZWF0dXJlcykuX3NraXBwZWRfdGVzdHNfZm9yX3Vuc3VwcG9ydGVk
X2ZlYXR1cmVzKHRlc3RfbGlzdD1bJ2Zvby5odG1sJ10pKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHJlc3VsdF9kaXJlY3RvcmllcywgZXhwZWN0ZWRfZGlyZWN0b3JpZXMpCi0KLSAgICBkZWYg
dGVzdF9za2lwcGVkX3Rlc3RzX2Zvcl91bnN1cHBvcnRlZF9mZWF0dXJlc19lbXB0eV90ZXN0X2xp
c3Qoc2VsZik6Ci0gICAgICAgIHN1cHBvcnRlZF9mZWF0dXJlcyA9IFsiQWNjZWxlcmF0ZWQgQ29t
cG9zaXRpbmciLCAiRm9vIEZlYXR1cmUiXQotICAgICAgICBleHBlY3RlZF9kaXJlY3RvcmllcyA9
IHNldChbXSkKLSAgICAgICAgcmVzdWx0X2RpcmVjdG9yaWVzID0gc2V0KFRlc3RXZWJLaXRQb3J0
KE5vbmUsIHN1cHBvcnRlZF9mZWF0dXJlcykuX3NraXBwZWRfdGVzdHNfZm9yX3Vuc3VwcG9ydGVk
X2ZlYXR1cmVzKHRlc3RfbGlzdD1Ob25lKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1
bHRfZGlyZWN0b3JpZXMsIGV4cGVjdGVkX2RpcmVjdG9yaWVzKQotCi0gICAgZGVmIHRlc3Rfc2tp
cHBlZF9sYXlvdXRfdGVzdHMoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVGVzdFdl
YktpdFBvcnQoTm9uZSwgTm9uZSkuc2tpcHBlZF9sYXlvdXRfdGVzdHModGVzdF9saXN0PVtdKSwg
c2V0KFsnbWVkaWEnXSkpCi0KLSAgICBkZWYgdGVzdF9za2lwcGVkX2ZpbGVfc2VhcmNoX3BhdGhz
KHNlbGYpOgotICAgICAgICBwb3J0ID0gVGVzdFdlYktpdFBvcnQoKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHBvcnQuX3NraXBwZWRfZmlsZV9zZWFyY2hfcGF0aHMoKSwgc2V0KFsndGVzdHdl
YmtpdHBvcnQnXSkpCi0gICAgICAgIHBvcnQuX25hbWUgPSAidGVzdHdlYmtpdHBvcnQtdmVyc2lv
biIKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0Ll9za2lwcGVkX2ZpbGVfc2VhcmNoX3Bh
dGhzKCksIHNldChbJ3Rlc3R3ZWJraXRwb3J0JywgJ3Rlc3R3ZWJraXRwb3J0LXZlcnNpb24nXSkp
Ci0gICAgICAgIHBvcnQuX29wdGlvbnMgPSBNb2NrT3B0aW9ucyh3ZWJraXRfdGVzdF9ydW5uZXI9
VHJ1ZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0Ll9za2lwcGVkX2ZpbGVfc2VhcmNo
X3BhdGhzKCksIHNldChbJ3Rlc3R3ZWJraXRwb3J0JywgJ3Rlc3R3ZWJraXRwb3J0LXZlcnNpb24n
LCAndGVzdHdlYmtpdHBvcnQtd2syJywgJ3drMiddKSkKLSAgICAgICAgcG9ydC5fb3B0aW9ucyA9
IE1vY2tPcHRpb25zKGFkZGl0aW9uYWxfcGxhdGZvcm1fZGlyZWN0b3J5PVsiaW50ZXJuYWwtdGVz
dHdlYmtpdHBvcnQiXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0Ll9za2lwcGVkX2Zp
bGVfc2VhcmNoX3BhdGhzKCksIHNldChbJ3Rlc3R3ZWJraXRwb3J0JywgJ3Rlc3R3ZWJraXRwb3J0
LXZlcnNpb24nLCAnaW50ZXJuYWwtdGVzdHdlYmtpdHBvcnQnXSkpCi0KLSAgICBkZWYgdGVzdF9y
b290X29wdGlvbihzZWxmKToKLSAgICAgICAgcG9ydCA9IFRlc3RXZWJLaXRQb3J0KCkKLSAgICAg
ICAgcG9ydC5fb3B0aW9ucyA9IE1vY2tPcHRpb25zKHJvb3Q9Jy9mb28nKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHBvcnQuX3BhdGhfdG9fZHJpdmVyKCksICIvZm9vL0R1bXBSZW5kZXJUcmVl
IikKLQotICAgIGRlZiB0ZXN0X3Rlc3RfZXhwZWN0YXRpb25zKHNlbGYpOgotICAgICAgICAjIENo
ZWNrIHRoYXQgd2UgcmVhZCB0aGUgZXhwZWN0YXRpb25zIGZpbGUKLSAgICAgICAgaG9zdCA9IE1v
Y2tTeXN0ZW1Ib3N0KCkKLSAgICAgICAgaG9zdC5maWxlc3lzdGVtLndyaXRlX3RleHRfZmlsZSgn
L21vY2stY2hlY2tvdXQvTGF5b3V0VGVzdHMvcGxhdGZvcm0vdGVzdHdlYmtpdHBvcnQvVGVzdEV4
cGVjdGF0aW9ucycsCi0gICAgICAgICAgICAnQlVHX1RFU1RFWFBFQ1RBVElPTlMgU0tJUCA6IGZh
c3QvaHRtbC9hcnRpY2xlLWVsZW1lbnQuaHRtbCA9IFRFWFRcbicpCi0gICAgICAgIHBvcnQgPSBU
ZXN0V2ViS2l0UG9ydChob3N0PWhvc3QpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycuam9p
bihwb3J0LmV4cGVjdGF0aW9uc19kaWN0KCkudmFsdWVzKCkpLCAnQlVHX1RFU1RFWFBFQ1RBVElP
TlMgU0tJUCA6IGZhc3QvaHRtbC9hcnRpY2xlLWVsZW1lbnQuaHRtbCA9IFRFWFRcbicpCi0KLSAg
ICBkZWYgdGVzdF9idWlsZF9kcml2ZXIoc2VsZik6Ci0gICAgICAgIG91dHB1dCA9IE91dHB1dENh
cHR1cmUoKQotICAgICAgICBwb3J0ID0gVGVzdFdlYktpdFBvcnQoKQotICAgICAgICAjIERlbGF5
IHNldHRpbmcgX2V4ZWN1dGl2ZSB0byBhdm9pZCBsb2dnaW5nIGR1cmluZyBjb25zdHJ1Y3Rpb24K
LSAgICAgICAgcG9ydC5fZXhlY3V0aXZlID0gTW9ja0V4ZWN1dGl2ZShzaG91bGRfbG9nPVRydWUp
Ci0gICAgICAgIHBvcnQuX29wdGlvbnMgPSBNb2NrT3B0aW9ucyhjb25maWd1cmF0aW9uPSJSZWxl
YXNlIikgICMgVGhpcyBzaG91bGQgbm90IGJlIG5lY2Vzc2FyeSwgYnV0IEkgdGhpbmsgVGVzdFdl
YktpdFBvcnQgaXMgYWN0dWFsbHkgcmVhZGluZyBmcm9tIGRpc2sgKGFuZCB0aHVzIGRldGVjdHMg
dGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbikuCi0gICAgICAgIGV4cGVjdGVkX3N0ZGVyciA9ICJN
T0NLIHJ1bl9jb21tYW5kOiBbJ1Rvb2xzL1NjcmlwdHMvYnVpbGQtZHVtcHJlbmRlcnRyZWUnLCAn
LS1yZWxlYXNlJ10sIGN3ZD0vbW9jay1jaGVja291dCwgZW52PXsnTENfQUxMJzogJ0MnLCAnTU9D
S19FTlZJUk9OX0NPUFknOiAnMSd9XG4iCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvdXRwdXQu
YXNzZXJ0X291dHB1dHMoc2VsZiwgcG9ydC5fYnVpbGRfZHJpdmVyLCBleHBlY3RlZF9zdGRlcnI9
ZXhwZWN0ZWRfc3RkZXJyLCBleHBlY3RlZF9sb2dzPScnKSkKLQotICAgICAgICAjIE1ha2Ugc3Vy
ZSB3aGVuIHBhc3NlZCAtLXdlYmtpdC10ZXN0LXJ1bm5lciB3ZSBidWlsZCB0aGUgcmlnaHQgdG9v
bC4KLSAgICAgICAgcG9ydC5fb3B0aW9ucyA9IE1vY2tPcHRpb25zKHdlYmtpdF90ZXN0X3J1bm5l
cj1UcnVlLCBjb25maWd1cmF0aW9uPSJSZWxlYXNlIikKLSAgICAgICAgZXhwZWN0ZWRfc3RkZXJy
ID0gIk1PQ0sgcnVuX2NvbW1hbmQ6IFsnVG9vbHMvU2NyaXB0cy9idWlsZC1kdW1wcmVuZGVydHJl
ZScsICctLXJlbGVhc2UnXSwgY3dkPS9tb2NrLWNoZWNrb3V0LCBlbnY9eydMQ19BTEwnOiAnQycs
ICdNT0NLX0VOVklST05fQ09QWSc6ICcxJ31cbk1PQ0sgcnVuX2NvbW1hbmQ6IFsnVG9vbHMvU2Ny
aXB0cy9idWlsZC13ZWJraXR0ZXN0cnVubmVyJywgJy0tcmVsZWFzZSddLCBjd2Q9L21vY2stY2hl
Y2tvdXQsIGVudj17J0xDX0FMTCc6ICdDJywgJ01PQ0tfRU5WSVJPTl9DT1BZJzogJzEnfVxuIgot
ICAgICAgICBzZWxmLmFzc2VydFRydWUob3V0cHV0LmFzc2VydF9vdXRwdXRzKHNlbGYsIHBvcnQu
X2J1aWxkX2RyaXZlciwgZXhwZWN0ZWRfc3RkZXJyPWV4cGVjdGVkX3N0ZGVyciwgZXhwZWN0ZWRf
bG9ncz0nJykpCi0KLSAgICAgICAgIyBNYWtlIHN1cmUgd2Ugc2hvdyB0aGUgYnVpbGQgbG9nIHdo
ZW4gLS12ZXJib3NlIGlzIHBhc3NlZCwgd2hpY2ggd2Ugc2ltdWxhdGUgYnkgc2V0dGluZyB0aGUg
bG9nZ2luZyBsZXZlbCB0byBERUJVRy4KLSAgICAgICAgb3V0cHV0LnNldF9sb2dfbGV2ZWwobG9n
Z2luZy5ERUJVRykKLSAgICAgICAgcG9ydC5fb3B0aW9ucyA9IE1vY2tPcHRpb25zKGNvbmZpZ3Vy
YXRpb249IlJlbGVhc2UiKQotICAgICAgICBleHBlY3RlZF9zdGRlcnIgPSAiTU9DSyBydW5fY29t
bWFuZDogWydUb29scy9TY3JpcHRzL2J1aWxkLWR1bXByZW5kZXJ0cmVlJywgJy0tcmVsZWFzZSdd
LCBjd2Q9L21vY2stY2hlY2tvdXQsIGVudj17J0xDX0FMTCc6ICdDJywgJ01PQ0tfRU5WSVJPTl9D
T1BZJzogJzEnfVxuIgotICAgICAgICBleHBlY3RlZF9sb2dzID0gIk91dHB1dCBvZiBbJ1Rvb2xz
L1NjcmlwdHMvYnVpbGQtZHVtcHJlbmRlcnRyZWUnLCAnLS1yZWxlYXNlJ106XG5NT0NLIG91dHB1
dCBvZiBjaGlsZCBwcm9jZXNzXG4iCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvdXRwdXQuYXNz
ZXJ0X291dHB1dHMoc2VsZiwgcG9ydC5fYnVpbGRfZHJpdmVyLCBleHBlY3RlZF9zdGRlcnI9ZXhw
ZWN0ZWRfc3RkZXJyLCBleHBlY3RlZF9sb2dzPWV4cGVjdGVkX2xvZ3MpKQotICAgICAgICBvdXRw
dXQuc2V0X2xvZ19sZXZlbChsb2dnaW5nLklORk8pCi0KLSAgICAgICAgIyBNYWtlIHN1cmUgdGhh
dCBmYWlsdXJlIHRvIGJ1aWxkIHJldHVybnMgRmFsc2UuCi0gICAgICAgIHBvcnQuX2V4ZWN1dGl2
ZSA9IE1vY2tFeGVjdXRpdmUoc2hvdWxkX2xvZz1UcnVlLCBzaG91bGRfdGhyb3c9VHJ1ZSkKLSAg
ICAgICAgIyBCZWNhdXNlIFdLMiBjdXJyZW50bHkgaGFzIHRvIGJ1aWxkIGJvdGggd2Via2l0dGVz
dHJ1bm5lciBhbmQgRFJULCBpZiBEUlQgZmFpbHMsIHRoYXQncyB0aGUgb25seSBvbmUgaXQgdHJp
ZXMuCi0gICAgICAgIGV4cGVjdGVkX3N0ZGVyciA9ICJNT0NLIHJ1bl9jb21tYW5kOiBbJ1Rvb2xz
L1NjcmlwdHMvYnVpbGQtZHVtcHJlbmRlcnRyZWUnLCAnLS1yZWxlYXNlJ10sIGN3ZD0vbW9jay1j
aGVja291dCwgZW52PXsnTENfQUxMJzogJ0MnLCAnTU9DS19FTlZJUk9OX0NPUFknOiAnMSd9XG4i
Ci0gICAgICAgIGV4cGVjdGVkX2xvZ3MgPSAiTU9DSyBTY3JpcHRFcnJvclxuXG5NT0NLIG91dHB1
dCBvZiBjaGlsZCBwcm9jZXNzXG4iCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3V0cHV0LmFz
c2VydF9vdXRwdXRzKHNlbGYsIHBvcnQuX2J1aWxkX2RyaXZlciwgZXhwZWN0ZWRfc3RkZXJyPWV4
cGVjdGVkX3N0ZGVyciwgZXhwZWN0ZWRfbG9ncz1leHBlY3RlZF9sb2dzKSkKLQotICAgIGRlZiBf
YXNzZXJ0X2NvbmZpZ19maWxlX2Zvcl9wbGF0Zm9ybShzZWxmLCBwb3J0LCBwbGF0Zm9ybSwgY29u
ZmlnX2ZpbGUpOgotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhwb3J0Ll9hcGFjaGVfY29uZmln
X2ZpbGVfbmFtZV9mb3JfcGxhdGZvcm0ocGxhdGZvcm0pLCBjb25maWdfZmlsZSkKLQotICAgIGRl
ZiB0ZXN0X2xpbnV4X2Rpc3Ryb19kZXRlY3Rpb24oc2VsZik6Ci0gICAgICAgIHBvcnQgPSBUZXN0
V2ViS2l0UG9ydCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocG9ydC5faXNfcmVkaGF0X2Jh
c2VkKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocG9ydC5faXNfZGViaWFuX2Jhc2VkKCkp
Ci0KLSAgICAgICAgcG9ydC5fZmlsZXN5c3RlbSA9IE1vY2tGaWxlU3lzdGVtKHsnL2V0Yy9yZWRo
YXQtcmVsZWFzZSc6ICcnfSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBvcnQuX2lzX3JlZGhh
dF9iYXNlZCgpKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHBvcnQuX2lzX2RlYmlhbl9iYXNl
ZCgpKQotCi0gICAgICAgIHBvcnQuX2ZpbGVzeXN0ZW0gPSBNb2NrRmlsZVN5c3RlbSh7Jy9ldGMv
ZGViaWFuX3ZlcnNpb24nOiAnJ30pCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocG9ydC5faXNf
cmVkaGF0X2Jhc2VkKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwb3J0Ll9pc19kZWJpYW5f
YmFzZWQoKSkKLQotICAgIGRlZiB0ZXN0X2FwYWNoZV9jb25maWdfZmlsZV9uYW1lX2Zvcl9wbGF0
Zm9ybShzZWxmKToKLSAgICAgICAgcG9ydCA9IFRlc3RXZWJLaXRQb3J0KCkKLSAgICAgICAgc2Vs
Zi5fYXNzZXJ0X2NvbmZpZ19maWxlX2Zvcl9wbGF0Zm9ybShwb3J0LCAnY3lnd2luJywgJ2N5Z3dp
bi1odHRwZC5jb25mJykKLQotICAgICAgICBzZWxmLl9hc3NlcnRfY29uZmlnX2ZpbGVfZm9yX3Bs
YXRmb3JtKHBvcnQsICdsaW51eDInLCAnYXBhY2hlMi1odHRwZC5jb25mJykKLSAgICAgICAgc2Vs
Zi5fYXNzZXJ0X2NvbmZpZ19maWxlX2Zvcl9wbGF0Zm9ybShwb3J0LCAnbGludXgzJywgJ2FwYWNo
ZTItaHR0cGQuY29uZicpCi0KLSAgICAgICAgcG9ydC5faXNfcmVkaGF0X2Jhc2VkID0gbGFtYmRh
OiBUcnVlCi0gICAgICAgIHNlbGYuX2Fzc2VydF9jb25maWdfZmlsZV9mb3JfcGxhdGZvcm0ocG9y
dCwgJ2xpbnV4MicsICdmZWRvcmEtaHR0cGQuY29uZicpCi0KLSAgICAgICAgcG9ydCA9IFRlc3RX
ZWJLaXRQb3J0KCkKLSAgICAgICAgcG9ydC5faXNfZGViaWFuX2Jhc2VkID0gbGFtYmRhOiBUcnVl
Ci0gICAgICAgIHNlbGYuX2Fzc2VydF9jb25maWdfZmlsZV9mb3JfcGxhdGZvcm0ocG9ydCwgJ2xp
bnV4MicsICdhcGFjaGUyLWRlYmlhbi1odHRwZC5jb25mJykKLQotICAgICAgICBzZWxmLl9hc3Nl
cnRfY29uZmlnX2ZpbGVfZm9yX3BsYXRmb3JtKHBvcnQsICdtYWMnLCAnYXBhY2hlMi1odHRwZC5j
b25mJykKLSAgICAgICAgc2VsZi5fYXNzZXJ0X2NvbmZpZ19maWxlX2Zvcl9wbGF0Zm9ybShwb3J0
LCAnd2luMzInLCAnYXBhY2hlMi1odHRwZC5jb25mJykgICMgd2luMzIgaXNuJ3QgYSBzdXBwb3J0
ZWQgc3lzLnBsYXRmb3JtLiAgQXBwbGVXaW4vV2luQ2Fpcm8vV2luQ0UgcG9ydHMgYWxsIHVzZSBj
eWd3aW4uCi0gICAgICAgIHNlbGYuX2Fzc2VydF9jb25maWdfZmlsZV9mb3JfcGxhdGZvcm0ocG9y
dCwgJ2JhcmYnLCAnYXBhY2hlMi1odHRwZC5jb25mJykKLQotICAgIGRlZiB0ZXN0X3BhdGhfdG9f
YXBhY2hlX2NvbmZpZ19maWxlKHNlbGYpOgotICAgICAgICBwb3J0ID0gVGVzdFdlYktpdFBvcnQo
KQotICAgICAgICAjIE1vY2sgb3V0IF9hcGFjaGVfY29uZmlnX2ZpbGVfbmFtZV9mb3JfcGxhdGZv
cm0gdG8gaWdub3JlIHRoZSBwYXNzZWQgc3lzLnBsYXRmb3JtIHZhbHVlLgotICAgICAgICBwb3J0
Ll9hcGFjaGVfY29uZmlnX2ZpbGVfbmFtZV9mb3JfcGxhdGZvcm0gPSBsYW1iZGEgcGxhdGZvcm06
ICdodHRwZC5jb25mJwotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhwb3J0Ll9wYXRoX3RvX2Fw
YWNoZV9jb25maWdfZmlsZSgpLCAnL21vY2stY2hlY2tvdXQvTGF5b3V0VGVzdHMvaHR0cC9jb25m
L2h0dHBkLmNvbmYnKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3Nl
cnZlcnMvcmViYXNlbGluZXNlcnZlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9z
ZXJ2ZXJzL3JlYmFzZWxpbmVzZXJ2ZXIucHkKaW5kZXggMTViY2Q2ZjU1OTQzMWI1ZTYxNmVkNzQ2
NTA0MjhmOWU2NGViMTE2YS4uMGU3NDU4NzI3YWRmNTk2ZmIzMDJmYWRlYjAzNjljMzYxZTQ4YzZk
ZSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3NlcnZlcnMvcmViYXNl
bGluZXNlcnZlci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc2VydmVycy9y
ZWJhc2VsaW5lc2VydmVyLnB5CkBAIC0zMiw3ICszMiw3IEBAIGltcG9ydCBvcy5wYXRoCiBpbXBv
cnQgQmFzZUhUVFBTZXJ2ZXIKIAogZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdCBpbXBvcnQgSG9z
dCAgIyBGSVhNRTogVGhpcyBzaG91bGQgbm90IGJlIG5lZWRlZCEKLWZyb20gd2Via2l0cHkubGF5
b3V0X3Rlc3RzLnBvcnQud2Via2l0IGltcG9ydCBXZWJLaXRQb3J0Citmcm9tIHdlYmtpdHB5Lmxh
eW91dF90ZXN0cy5wb3J0LmJhc2UgaW1wb3J0IFBvcnQKIGZyb20gd2Via2l0cHkudG9vbC5zZXJ2
ZXJzLnJlZmxlY3Rpb25oYW5kbGVyIGltcG9ydCBSZWZsZWN0aW9uSGFuZGxlcgogCiAKQEAgLTE2
Myw5ICsxNjMsOSBAQCBkZWYgX21vdmVfdGVzdF9iYXNlbGluZXModGVzdF9maWxlLCBleHRlbnNp
b25zX3RvX21vdmUsIHNvdXJjZV9wbGF0Zm9ybSwgZGVzdGluYQogCiBkZWYgZ2V0X3Rlc3RfYmFz
ZWxpbmVzKHRlc3RfZmlsZSwgdGVzdF9jb25maWcpOgogICAgICMgRklYTUU6IFRoaXMgc2VlbXMg
bGlrZSBhIGhhY2suIFRoaXMgb25seSBzZWVtcyB1c2VkIHRvIGFjY2VzcyB0aGUgUG9ydC5leHBl
Y3RlZF9iYXNlbGluZXMgbG9naWMuCi0gICAgY2xhc3MgQWxsUGxhdGZvcm1zUG9ydChXZWJLaXRQ
b3J0KToKKyAgICBjbGFzcyBBbGxQbGF0Zm9ybXNQb3J0KFBvcnQpOgogICAgICAgICBkZWYgX19p
bml0X18oc2VsZiwgaG9zdCk6Ci0gICAgICAgICAgICBXZWJLaXRQb3J0Ll9faW5pdF9fKHNlbGYs
IGhvc3QsICdtYWMnKQorICAgICAgICAgICAgc3VwZXIoQWxsUGxhdGZvcm1zUG9ydCwgc2VsZiku
X19pbml0X18oaG9zdCwgJ21hYycpCiAgICAgICAgICAgICBzZWxmLl9wbGF0Zm9ybXNfYnlfZGly
ZWN0b3J5ID0gZGljdChbKHNlbGYuX3dlYmtpdF9iYXNlbGluZV9wYXRoKHApLCBwKSBmb3IgcCBp
biB0ZXN0X2NvbmZpZy5wbGF0Zm9ybXNdKQogCiAgICAgICAgIGRlZiBiYXNlbGluZV9zZWFyY2hf
cGF0aChzZWxmKToKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zZXJ2
ZXJzL3JlYmFzZWxpbmVzZXJ2ZXJfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L3Rvb2wvc2VydmVycy9yZWJhc2VsaW5lc2VydmVyX3VuaXR0ZXN0LnB5CmluZGV4IGM4ZWE2YzAy
YzNlYTI0YTRmYjZiMjQ2ZWEyZDFiZTk3M2Y3M2Q1NGIuLmY1YzFjYmY1ZTEzNWFlMWM5YmEwYWU5
YTNlYWMwOTBiOGUwZGI5YmEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9v
bC9zZXJ2ZXJzL3JlYmFzZWxpbmVzZXJ2ZXJfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS90b29sL3NlcnZlcnMvcmViYXNlbGluZXNlcnZlcl91bml0dGVzdC5weQpAQCAt
MzIsNyArMzIsNyBAQCBpbXBvcnQgdW5pdHRlc3QKIGZyb20gd2Via2l0cHkuY29tbW9uLm5ldCBp
bXBvcnQgcmVzdWx0c2pzb25wYXJzZXJfdW5pdHRlc3QKIGZyb20gd2Via2l0cHkuY29tbW9uLmhv
c3RfbW9jayBpbXBvcnQgTW9ja0hvc3QKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmxheW91
dF9wYWNrYWdlLmpzb25fcmVzdWx0c19nZW5lcmF0b3IgaW1wb3J0IHN0cmlwX2pzb25fd3JhcHBl
cgotZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC53ZWJraXQgaW1wb3J0IFdlYktpdFBv
cnQKK2Zyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQuYmFzZSBpbXBvcnQgUG9ydAogZnJv
bSB3ZWJraXRweS50b29sLmNvbW1hbmRzLnJlYmFzZWxpbmVzZXJ2ZXIgaW1wb3J0IFRlc3RDb25m
aWcsIFJlYmFzZWxpbmVTZXJ2ZXIKIGZyb20gd2Via2l0cHkudG9vbC5zZXJ2ZXJzIGltcG9ydCBy
ZWJhc2VsaW5lc2VydmVyCiAKQEAgLTI5OSw3ICsyOTksNyBAQCBkZWYgZ2V0X3Rlc3RfY29uZmln
KHRlc3RfZmlsZXM9W10sIHJlc3VsdF9maWxlcz1bXSk6CiAgICAgZm9yIGZpbGUgaW4gcmVzdWx0
X2ZpbGVzOgogICAgICAgICBob3N0LmZpbGVzeXN0ZW0ud3JpdGVfYmluYXJ5X2ZpbGUoaG9zdC5m
aWxlc3lzdGVtLmpvaW4ocmVzdWx0c19kaXJlY3RvcnksIGZpbGUpLCAnJykKIAotICAgIGNsYXNz
IFRlc3RNYWNQb3J0KFdlYktpdFBvcnQpOgorICAgIGNsYXNzIFRlc3RNYWNQb3J0KFBvcnQpOgog
ICAgICAgICBwb3J0X25hbWUgPSAibWFjIgogCiAgICAgcmV0dXJuIFRlc3RDb25maWcoCg==
</data>
<flag name="review"
          id="164167"
          type_id="1"
          status="+"
          setter="rniwa"
    />
          </attachment>
      

    </bug>

</bugzilla>